cdk-import 0.2.160 → 0.2.163

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # cdk-import
2
2
 
3
- > Generates CDK L1 constructs for public CloudFormation Registry types and
4
- > modules.
3
+ > Generates CDK constructs from sources such as public CloudFormation Registry types and
4
+ > modules (L1s) as well as AWS Service Catalog product versions.
5
5
 
6
6
  ## Installation
7
7
 
@@ -11,15 +11,38 @@ npm install -g cdk-import
11
11
 
12
12
  ## Usage
13
13
 
14
+ There are currently two sources that resources can be generated from. The subcommand
15
+ `cfn` is used to import from CloudFormation Registry,
16
+ `sc` is used to import AWS Service Catalog products.
17
+ There are shared general options for output directories and target language.
18
+
19
+ ```shell
20
+ Usage:
21
+ cdk-import SUBCOMMAND (cfn or sc) [parameters]
22
+
23
+ General Options:
24
+ -l, --language Output programming language [string]
25
+ -o, --outdir Output directory [string]
26
+ --go-module Go module name (required if language is "golang") [string]
27
+ --java-package Java package name (required if language is "java") [string]
28
+ --csharp-namespace C# namespace (optional if language is "csharp", [string]
29
+ defaults to resource name.)
30
+ -h, --help Show usage info (include subcommand to see specific help) [boolean]
31
+ ```
32
+
33
+ ## CloudFormation Registry Usage
34
+
14
35
  ```shell
15
36
  Usage:
16
- cdk-import -l LANGUAGE RESOURCE-NAME[@VERSION]
37
+ cdk-import cfn -l LANGUAGE RESOURCE-NAME[@VERSION]
17
38
 
18
39
  Options:
19
40
  -l, --language Output programming language [string]
20
41
  -o, --outdir Output directory [string] [default: "."]
21
42
  --go-module Module name (required if language is "golang") [string]
22
43
  --java-package Java package name (required if language is "java") [string]
44
+ --csharp-namespace C# namespace (optional if language is "csharp", [string]
45
+ defaults to resource name.)
23
46
  -h, --help Show this usage info [boolean]
24
47
  ```
25
48
 
@@ -112,34 +135,70 @@ Will generate a Go module under: `awsqs-eks-cluster`.
112
135
  Generates constructs for the latest version AWSQS::EKS::Cluster in TypeScript:
113
136
 
114
137
  ```shell
115
- cdk-import -l typescript AWSQS::EKS::Cluster
138
+ cdk-import cfn -l typescript AWSQS::EKS::Cluster
116
139
  ```
117
140
 
118
141
  Generates construct in Go for a specific resource version:
119
142
 
120
143
  ```shell
121
- cdk-import -l golang --go-module "github.com/account/repo" AWSQS::EKS::Cluster@1.2.0
144
+ cdk-import cfn -l golang --go-module "github.com/account/repo" AWSQS::EKS::Cluster@1.2.0
122
145
  ```
123
146
 
124
147
  Generates construct in Python under the "src" subfolder instead of working
125
148
  directory:
126
149
 
127
150
  ```shell
128
- cdk-import -l python -o src AWSQS::EKS::Cluster
151
+ cdk-import cfn -l python -o src AWSQS::EKS::Cluster
129
152
  ```
130
153
 
131
154
  Generates construct in Java and identifies the resource type by its ARN:
132
155
 
133
156
  ```shell
134
- cdk-import -l java --java-package "com.acme.myproject" arn:aws:cloudformation:...
157
+ cdk-import cfn -l java --java-package "com.acme.myproject" arn:aws:cloudformation:...
135
158
  ```
136
159
 
137
160
  Modules are also supported:
138
161
 
139
162
  ```shell
140
- cdk-import AWSQS::CheckPoint::CloudGuardQS::MODULE
163
+ cdk-import cfn AWSQS::CheckPoint::CloudGuardQS::MODULE
141
164
  ```
142
165
 
166
+ ## AWS Service Catalog Usage
167
+
168
+ The cdk-import tool generates a user friendly version of a provisioned product
169
+ that can be used like a normal cdk construct within a cdk app.
170
+ You can currently either specify a specific product version or generate all available products
171
+ The tool will call APIs and attempt to resolve default artifact and launch path for a product,
172
+ if a singular product version or launch path cannot be resolved, it will throw an error.
173
+ You will need Service Catalog end-user read permissions to call these APIs.
174
+
175
+ ```shell
176
+ Usage:
177
+ cdk-import sc -l LANGUAGE
178
+ cdk-import sc -l LANGUAGE --product-id PRODUCT-ID --provisioning-artifact-id PROVISIONING-ARTIFACT-ID --path-id LAUNCH-PATH-ID
179
+
180
+ Options:
181
+ -l, --language Output programming language [string]
182
+ -o, --outdir Output directory (default "./sc-products") [string]
183
+ --product-id Product Id [string]
184
+ --provisioning-artifact-id Provisioning artifact Id [string]
185
+ --path-id Launch path Id [string]
186
+ --go-module Module name (required if language is "golang") [string]
187
+ --java-package Java package name (required if language is "java") [string]
188
+ --csharp-namespace C# namespace (optional if language is "csharp", [string]
189
+ defaults to resource name.)
190
+ -h, --help Show this usage info [boolean]
191
+ ```
192
+
193
+ The `--language` option specifies the output programming language. Supported
194
+ languages: `typescript`, `java`, `python`, `csharp` and `golang`.
195
+
196
+ If you are using `csharp`, you must specify a `--csharp-namespace` within your project.
197
+
198
+ Output will be generated relative to `--outdir` which defaults to the current
199
+ working directory under `./sc-products`.
200
+
201
+
143
202
  ## Contributing
144
203
 
145
204
  See [CONTRIBUTING](CONTRIBUTING.md)
@@ -151,4 +210,4 @@ information.
151
210
 
152
211
  ## License
153
212
 
154
- This project is licensed under the Apache-2.0 License.
213
+ This project is licensed under the Apache-2.0 License.
package/lib/cli.js CHANGED
@@ -30,14 +30,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
30
30
  const fs = __importStar(require("fs/promises"));
31
31
  const os = __importStar(require("os"));
32
32
  const path = __importStar(require("path"));
33
+ const caseutil = __importStar(require("case"));
33
34
  const minimist_1 = __importDefault(require("minimist"));
35
+ const minimist_subcommand_1 = require("minimist-subcommand");
34
36
  const _1 = require(".");
35
37
  const languages_1 = require("./languages");
36
- const args = (0, minimist_1.default)(process.argv.slice(2), {
38
+ const commandDefintion = {
39
+ commands: {
40
+ sc: null,
41
+ cfn: null,
42
+ },
43
+ };
44
+ const parsedCommandsAndArgv = (0, minimist_subcommand_1.parseCommands)(commandDefintion, process.argv.slice(2));
45
+ const subCommand = parsedCommandsAndArgv.commands[0];
46
+ const args = (0, minimist_1.default)(parsedCommandsAndArgv.argv, {
37
47
  string: [
38
48
  'outdir',
39
49
  'language',
40
50
  'go-module-name',
51
+ 'product-id',
52
+ 'provisioning-artifact-id',
53
+ 'path-id',
41
54
  ],
42
55
  boolean: [
43
56
  'help',
@@ -52,65 +65,163 @@ const args = (0, minimist_1.default)(process.argv.slice(2), {
52
65
  function showHelp() {
53
66
  console.log('');
54
67
  console.log('Usage:');
55
- console.log(' cdk-import -l LANGUAGE RESOURCE-NAME[@VERSION]');
68
+ console.log(' cdk-import SUBCOMMAND (cfn or sc) [parameters]');
69
+ console.log();
70
+ console.log('General options:');
71
+ console.log(' -l, --language Output programming language [string]');
72
+ console.log(' -o, --outdir Output directory [string]');
73
+ console.log(' --go-module Go module name (required if language is "golang") [string]');
74
+ console.log(' --java-package Java package name (required if language is "java") [string]');
75
+ console.log(' --csharp-namespace C# namespace (optional if language is "csharp", [string]');
76
+ console.log(' defaults to resource name.');
77
+ console.log(' -h, --help Show usage info (include subcommand to see specific help) [boolean]');
78
+ console.log('');
79
+ console.log();
80
+ }
81
+ function showCfnHelp() {
82
+ console.log('');
83
+ console.log('Usage:');
84
+ console.log(' cdk-import cfn -l LANGUAGE RESOURCE-NAME[@VERSION]');
56
85
  console.log();
57
86
  console.log('Options:');
58
87
  console.log(' -l, --language Output programming language [string]');
59
88
  console.log(' -o, --outdir Output directory [string] [default: "."]');
60
89
  console.log(' --go-module Go module name (required if language is "golang") [string]');
61
90
  console.log(' --java-package Java package name (required if language is "java") [string]');
91
+ console.log(' --csharp-namespace C# namespace (optional if language is "csharp", [string]');
92
+ console.log(' defaults to resource name.');
62
93
  console.log(' --private Import types registered in your AWS account and region [boolean]');
63
94
  console.log(' -h, --help Show this usage info [boolean]');
64
95
  console.log('');
65
96
  console.log('Examples:');
66
97
  console.log();
67
98
  console.log(' Generates constructs for the latest version AWSQS::EKS::Cluster in TypeScript:');
68
- console.log(' cdk-import -l typescript AWSQS::EKS::Cluster');
99
+ console.log(' cdk-import cfn -l typescript AWSQS::EKS::Cluster');
69
100
  console.log();
70
101
  console.log(' Generates construct in Go for a specific resource version:');
71
- console.log(' cdk-import -l golang --go-module "github.com/account/repo" AWSQS::EKS::Cluster@1.2.0');
102
+ console.log(' cdk-import cfn -l golang --go-module "github.com/account/repo" AWSQS::EKS::Cluster@1.2.0');
72
103
  console.log();
73
104
  console.log(' Generates construct in Python under the "src" subfolder instead of working directory:');
74
- console.log(' cdk-import -l python -o src AWSQS::EKS::Cluster');
105
+ console.log(' cdk-import cfn -l python -o src AWSQS::EKS::Cluster');
75
106
  console.log();
76
107
  console.log(' Generates construct in Java and identifies the resource type by its ARN:');
77
- console.log(' cdk-import -l java --java-package "com.acme.myproject" arn:aws:cloudformation:...');
108
+ console.log(' cdk-import cfn -l java --java-package "com.acme.myproject" arn:aws:cloudformation:...');
78
109
  console.log();
79
110
  console.log(' Generates construct for a private type:');
80
- console.log(' cdk-import -l typescript --private Acme::SuperService::Friend::MODULE');
111
+ console.log(' cdk-import cfn -l typescript --private Acme::SuperService::Friend::MODULE');
112
+ console.log();
113
+ }
114
+ function showSCHelp() {
115
+ console.log('');
116
+ console.log('Usage:');
117
+ console.log(' cdk-import sc -l LANGUAGE');
118
+ console.log(' cdk-import sc -l LANGUAGE -pr PRODUCT-ID -pa PROVISIONING-ARTIFACT-ID -lp LAUNCH-PATH-ID');
119
+ console.log();
120
+ console.log('Options:');
121
+ console.log(' -l, --language Output programming language [string]');
122
+ console.log(' -o, --outdir Output directory [string]');
123
+ console.log(' --product-id Product Id [string]');
124
+ console.log(' --provisioning-artifact-id Provisioning artifact Id [string]');
125
+ console.log(' --path-id Launch path Id [string]');
126
+ console.log(' --go-module Go module name (required if language is "golang") [string]');
127
+ console.log(' --java-package Java package name (required if language is "java") [string]');
128
+ console.log(' --csharp-namespace C# namespace (optional if language is "csharp", [string]');
129
+ console.log(' defaults to resource name.');
130
+ console.log(' -h, --help Show this usage info [boolean]');
131
+ console.log('');
132
+ console.log('Examples:');
133
+ console.log();
134
+ console.log(' Generates constructs for the latest version of products in TypeScript:');
135
+ console.log(' cdk-import sc -l typescript');
136
+ console.log();
137
+ console.log(' Generates construct in Go for a specific product version:');
138
+ console.log(' cdk-import sc -l golang --go-module "github.com/account/repo" -pr prod-abc123 -pa pa-abc123 -lp lp-abc123');
139
+ console.log();
140
+ console.log(' Generates constructs in Python under the "src" subfolder instead of working directory:');
141
+ console.log(' cdk-import sc -l python -o ./src');
142
+ console.log();
81
143
  console.log();
82
144
  }
83
145
  void (async () => {
84
- var _a;
85
- if (args.help || args._.length !== 1) {
146
+ var _a, _b;
147
+ if (args.help || !subCommand) {
86
148
  showHelp();
87
149
  process.exit(1);
88
150
  }
89
151
  if (!args.language) {
90
- throw new Error(`Missing required option: --language. Supported languages: ${languages_1.SUPPORTED_LANGUAGES.join(',')}`);
152
+ throw new Error(`Missing required option: --language. Supported languages: ${languages_1.SUPPORTED_LANGUAGES.join(', ')}`);
91
153
  }
92
154
  if (languages_1.SUPPORTED_LANGUAGES.indexOf(args.language) === -1) {
93
- throw new Error(`Unsupported language ${args.language}. Supported: ${languages_1.SUPPORTED_LANGUAGES.join(',')}`);
155
+ throw new Error(`Unsupported language ${args.language}. Supported: ${languages_1.SUPPORTED_LANGUAGES.join(', ')}`);
94
156
  }
95
- try {
96
- const [resourceName, resourceVersion] = args._[0].split('@');
97
- const workdir = await fs.mkdtemp(path.join(os.tmpdir(), 'cdk-import'));
98
- const typeName = await (0, _1.importResourceType)(resourceName, resourceVersion, {
99
- outdir: workdir,
100
- private: args.private,
101
- });
102
- await (0, languages_1.renderCode)({
103
- srcdir: workdir,
104
- language: args.language,
105
- outdir: (_a = args.outdir) !== null && _a !== void 0 ? _a : '.',
106
- typeName: typeName,
107
- goModule: args['go-module'],
108
- javaPackage: args['java-package'],
109
- });
157
+ if (subCommand == 'cfn') {
158
+ if (args._.length !== 1) {
159
+ showCfnHelp();
160
+ process.exit(1);
161
+ }
162
+ try {
163
+ const [resourceName, resourceVersion] = args._[0].split('@');
164
+ const workdir = await fs.mkdtemp(path.join(os.tmpdir(), 'cdk-import'));
165
+ const typeName = await (0, _1.importResourceType)(resourceName, resourceVersion, {
166
+ outdir: workdir,
167
+ private: args.private,
168
+ });
169
+ await (0, languages_1.renderCode)({
170
+ srcdir: workdir,
171
+ language: args.language,
172
+ outdir: (_a = args.outdir) !== null && _a !== void 0 ? _a : '.',
173
+ typeName: typeName,
174
+ goModule: args['go-module'],
175
+ javaPackage: args['java-package'],
176
+ csharpNamespace: (_b = args['csharp-namespace']) !== null && _b !== void 0 ? _b : typeName, // already AWS::Foo::Bar
177
+ });
178
+ }
179
+ catch (e) {
180
+ console.log(e);
181
+ process.exit(1);
182
+ }
110
183
  }
111
- catch (e) {
112
- console.log(e);
113
- process.exit(1);
184
+ if (subCommand == 'sc') {
185
+ try {
186
+ const workdir = await fs.mkdtemp(path.join(os.tmpdir(), 'cdk-import'));
187
+ const ppArgs = [args['product-id'], args['provisioning-artifact-id'], args['path-id']].filter(param => param != undefined);
188
+ if (args.help || (ppArgs.length > 0 && ppArgs.length != 3)) {
189
+ showSCHelp();
190
+ process.exit(1);
191
+ }
192
+ let products = [];
193
+ if (ppArgs.length == 3) {
194
+ products.push(await (0, _1.importProduct)({
195
+ outdir: workdir,
196
+ productId: args['product-id'],
197
+ launchPathId: args['path-id'],
198
+ provisioningArtifactId: args['provisioning-artifact-id'],
199
+ }));
200
+ }
201
+ else {
202
+ products.push(...await (0, _1.importProducts)({
203
+ outdir: workdir,
204
+ }));
205
+ }
206
+ await Promise.all(products.map(async (product) => {
207
+ var _a, _b, _c;
208
+ const productDir = path.join(workdir, caseutil.header(product).toLowerCase());
209
+ await (0, languages_1.renderCode)({
210
+ srcdir: productDir,
211
+ language: (_a = args.language) !== null && _a !== void 0 ? _a : 'typescript',
212
+ outdir: (_b = args.outdir) !== null && _b !== void 0 ? _b : './sc-products',
213
+ typeName: product,
214
+ goModule: args['go-module'],
215
+ javaPackage: args['java-package'],
216
+ csharpNamespace: (_c = args['csharp-namespace']) !== null && _c !== void 0 ? _c : product,
217
+ });
218
+ }));
219
+ process.exit(0);
220
+ }
221
+ catch (e) {
222
+ console.log(e);
223
+ process.exit(1);
224
+ }
114
225
  }
115
226
  })();
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLGdEQUFrQztBQUNsQyx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLHdEQUFnQztBQUNoQyx3QkFBdUM7QUFDdkMsMkNBQThEO0FBRTlELE1BQU0sSUFBSSxHQUFHLElBQUEsa0JBQVEsRUFBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUMzQyxNQUFNLEVBQUU7UUFDTixRQUFRO1FBQ1IsVUFBVTtRQUNWLGdCQUFnQjtLQUNqQjtJQUNELE9BQU8sRUFBRTtRQUNQLE1BQU07UUFDTixTQUFTO0tBQ1Y7SUFDRCxLQUFLLEVBQUU7UUFDTCxNQUFNLEVBQUUsR0FBRztRQUNYLElBQUksRUFBRSxHQUFHO1FBQ1QsUUFBUSxFQUFFLEdBQUc7S0FDZDtDQUNGLENBQUMsQ0FBQztBQUVILFNBQVMsUUFBUTtJQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7SUFDaEUsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLHNGQUFzRixDQUFDLENBQUM7SUFDcEcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzR0FBc0csQ0FBQyxDQUFDO0lBQ3BILE9BQU8sQ0FBQyxHQUFHLENBQUMsc0ZBQXNGLENBQUMsQ0FBQztJQUNwRyxPQUFPLENBQUMsR0FBRyxDQUFDLHNGQUFzRixDQUFDLENBQUM7SUFDcEcsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1RkFBdUYsQ0FBQyxDQUFDO0lB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SjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDakI7QUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMvcHJvbWlzZXMnO1xuaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBtaW5pbWlzdCBmcm9tICdtaW5pbWlzdCc7XG5pbXBvcnQgeyBpbXBvcnRSZXNvdXJjZVR5cGUgfSBmcm9tICcuJztcbmltcG9ydCB7IHJlbmRlckNvZGUsIFNVUFBPUlRFRF9MQU5HVUFHRVMgfSBmcm9tICcuL2xhbmd1YWdlcyc7XG5cbmNvbnN0IGFyZ3MgPSBtaW5pbWlzdChwcm9jZXNzLmFyZ3Yuc2xpY2UoMiksIHtcbiAgc3RyaW5nOiBbXG4gICAgJ291dGRpcicsXG4gICAgJ2xhbmd1YWdlJyxcbiAgICAnZ28tbW9kdWxlLW5hbWUnLFxuICBdLFxuICBib29sZWFuOiBbXG4gICAgJ2hlbHAnLFxuICAgICdwcml2YXRlJyxcbiAgXSxcbiAgYWxpYXM6IHtcbiAgICBvdXRkaXI6ICdvJyxcbiAgICBoZWxwOiAnaCcsXG4gICAgbGFuZ3VhZ2U6ICdsJyxcbiAgfSxcbn0pO1xuXG5mdW5jdGlvbiBzaG93SGVscCgpIHtcbiAgY29uc29sZS5sb2coJycpO1xuICBjb25zb2xlLmxvZygnVXNhZ2U6Jyk7XG4gIGNvbnNvbGUubG9nKCcgIGNkay1pbXBvcnQgLWwgTEFOR1VBR0UgUkVTT1VSQ0UtTkFNRVtAVkVSU0lPTl0nKTtcbiAgY29uc29sZS5sb2coKTtcbiAgY29uc29sZS5sb2coJ09wdGlvbnM6Jyk7XG4gIGNvbnNvbGUubG9nKCcgIC1sLCAtLWxhbmd1YWdlICAgICBPdXRwdXQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cmluZ10nKTtcbiAgY29uc29sZS5sb2coJyAgLW8sIC0tb3V0ZGlyICAgICAgIE91dHB1dCBkaXJlY3RvcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXSAgW2RlZmF1bHQ6IFwiLlwiXScpO1xuICBjb25zb2xlLmxvZygnICAtLWdvLW1vZHVsZSAgICAgICAgR28gbW9kdWxlIG5hbWUgKHJlcXVpcmVkIGlmIGxhbmd1YWdlIGlzIFwiZ29sYW5nXCIpICAgICAgW3N0cmluZ10nKTtcbiAgY29uc29sZS5sb2coJyAgLS1qYXZhLXBhY2thZ2UgICAgIEphdmEgcGFja2FnZSBuYW1lIChyZXF1aXJlZCBpZiBsYW5ndWFnZSBpcyBcImphdmFcIikgICAgIFtzdHJpbmddJyk7XG4gIGNvbnNvbGUubG9nKCcgIC0tcHJpdmF0ZSAgICAgICAgICBJbXBvcnQgdHlwZXMgcmVnaXN0ZXJlZCBpbiB5b3VyIEFXUyBhY2NvdW50IGFuZCByZWdpb24gW2Jvb2xlYW5dJyk7XG4gIGNvbnNvbGUubG9nKCcgIC1oLCAtLWhlbHAgICAgICAgICBTaG93IHRoaXMgdXNhZ2UgaW5mbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Jvb2xlYW5dJyk7XG4gIGNvbnNvbGUubG9nKCcnKTtcbiAgY29uc29sZS5sb2coJ0V4YW1wbGVzOicpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygnICBHZW5lcmF0ZXMgY29uc3RydWN0cyBmb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIEFXU1FTOjpFS1M6OkNsdXN0ZXIgaW4gVHlwZVNjcmlwdDonKTtcbiAgY29uc29sZS5sb2coJyAgICBjZGstaW1wb3J0IC1sIHR5cGVzY3JpcHQgQVdTUVM6OkVLUzo6Q2x1c3RlcicpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygnICBHZW5lcmF0ZXMgY29uc3RydWN0IGluIEdvIGZvciBhIHNwZWNpZmljIHJlc291cmNlIHZlcnNpb246Jyk7XG4gIGNvbnNvbGUubG9nKCcgICAgY2RrLWltcG9ydCAtbCBnb2xhbmcgLS1nby1tb2R1bGUgXCJnaXRodWIuY29tL2FjY291bnQvcmVwb1wiIEFXU1FTOjpFS1M6OkNsdXN0ZXJAMS4yLjAnKTtcbiAgY29uc29sZS5sb2coKTtcbiAgY29uc29sZS5sb2coJyAgR2VuZXJhdGVzIGNvbnN0cnVjdCBpbiBQeXRob24gdW5kZXIgdGhlIFwic3JjXCIgc3ViZm9sZGVyIGluc3RlYWQgb2Ygd29ya2luZyBkaXJlY3Rvcnk6Jyk7XG4gIGNvbnNvbGUubG9nKCcgICAgY2RrLWltcG9ydCAtbCBweXRob24gLW8gc3JjIEFXU1FTOjpFS1M6OkNsdXN0ZXInKTtcbiAgY29uc29sZS5sb2coKTtcbiAgY29uc29sZS5sb2coJyAgR2VuZXJhdGVzIGNvbnN0cnVjdCBpbiBKYXZhIGFuZCBpZGVudGlmaWVzIHRoZSByZXNvdXJjZSB0eXBlIGJ5IGl0cyBBUk46Jyk7XG4gIGNvbnNvbGUubG9nKCcgICAgY2RrLWltcG9ydCAtbCBqYXZhIC0tamF2YS1wYWNrYWdlIFwiY29tLmFjbWUubXlwcm9qZWN0XCIgYXJuOmF3czpjbG91ZGZvcm1hdGlvbjouLi4nKTtcbiAgY29uc29sZS5sb2coKTtcbiAgY29uc29sZS5sb2coJyAgR2VuZXJhdGVzIGNvbnN0cnVjdCBmb3IgYSBwcml2YXRlIHR5cGU6Jyk7XG4gIGNvbnNvbGUubG9nKCcgICAgY2RrLWltcG9ydCAtbCB0eXBlc2NyaXB0IC0tcHJpdmF0ZSBBY21lOjpTdXBlclNlcnZpY2U6OkZyaWVuZDo6TU9EVUxFJyk7XG4gIGNvbnNvbGUubG9nKCk7XG59XG5cbnZvaWQgKGFzeW5jICgpID0+IHtcbiAgaWYgKGFyZ3MuaGVscCB8fCBhcmdzLl8ubGVuZ3RoICE9PSAxKSB7XG4gICAgc2hvd0hlbHAoKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cblxuICBpZiAoIWFyZ3MubGFuZ3VhZ2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgcmVxdWlyZWQgb3B0aW9uOiAtLWxhbmd1YWdlLiBTdXBwb3J0ZWQgbGFuZ3VhZ2VzOiAke1NVUFBPUlRFRF9MQU5HVUFHRVMuam9pbignLCcpfWApO1xuICB9XG5cbiAgaWYgKFNVUFBPUlRFRF9MQU5HVUFHRVMuaW5kZXhPZihhcmdzLmxhbmd1YWdlKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGxhbmd1YWdlICR7YXJncy5sYW5ndWFnZX0uIFN1cHBvcnRlZDogJHtTVVBQT1JURURfTEFOR1VBR0VTLmpvaW4oJywnKX1gKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgW3Jlc291cmNlTmFtZSwgcmVzb3VyY2VWZXJzaW9uXSA9IGFyZ3MuX1swXS5zcGxpdCgnQCcpO1xuICAgIGNvbnN0IHdvcmtkaXIgPSBhd2FpdCBmcy5ta2R0ZW1wKHBhdGguam9pbihvcy50bXBkaXIoKSwgJ2Nkay1pbXBvcnQnKSk7XG4gICAgY29uc3QgdHlwZU5hbWUgPSBhd2FpdCBpbXBvcnRSZXNvdXJjZVR5cGUocmVzb3VyY2VOYW1lLCByZXNvdXJjZVZlcnNpb24sIHtcbiAgICAgIG91dGRpcjogd29ya2RpcixcbiAgICAgIHByaXZhdGU6IGFyZ3MucHJpdmF0ZSxcbiAgICB9KTtcblxuICAgIGF3YWl0IHJlbmRlckNvZGUoe1xuICAgICAgc3JjZGlyOiB3b3JrZGlyLFxuICAgICAgbGFuZ3VhZ2U6IGFyZ3MubGFuZ3VhZ2UsXG4gICAgICBvdXRkaXI6IGFyZ3Mub3V0ZGlyID8/ICcuJyxcbiAgICAgIHR5cGVOYW1lOiB0eXBlTmFtZSxcbiAgICAgIGdvTW9kdWxlOiBhcmdzWydnby1tb2R1bGUnXSxcbiAgICAgIGphdmFQYWNrYWdlOiBhcmdzWydqYXZhLXBhY2thZ2UnXSxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKGUpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxufSkoKTtcbiJdfQ==
227
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLGdEQUFrQztBQUNsQyx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLCtDQUFpQztBQUNqQyx3REFBZ0M7QUFDaEMsNkRBQW9EO0FBQ3BELHdCQUFzRTtBQUN0RSwyQ0FBOEQ7QUFFOUQsTUFBTSxnQkFBZ0IsR0FBRztJQUN2QixRQUFRLEVBQUU7UUFDUixFQUFFLEVBQUUsSUFBSTtRQUNSLEdBQUcsRUFBRSxJQUFJO0tBQ1Y7Q0FDRixDQUFDO0FBRUYsTUFBTSxxQkFBcUIsR0FBRyxJQUFBLG1DQUFhLEVBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRixNQUFNLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFckQsTUFBTSxJQUFJLEdBQUcsSUFBQSxrQkFBUSxFQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRTtJQUNoRCxNQUFNLEVBQUU7UUFDTixRQUFRO1FBQ1IsVUFBVTtRQUNWLGdCQUFnQjtRQUNoQixZQUFZO1FBQ1osMEJBQTBCO1FBQzFCLFNBQVM7S0FDVjtJQUNELE9BQU8sRUFBRTtRQUNQLE1BQU07UUFDTixTQUFTO0tBQ1Y7SUFDRCxLQUFLLEVBQUU7UUFDTCxNQUFNLEVBQUUsR0FBRztRQUNYLElBQUksRUFBRSxHQUFHO1FBQ1QsUUFBUSxFQUFFLEdBQUc7S0FDZDtDQUNGLENBQUMsQ0FBQztBQUVILFNBQVMsUUFBUTtJQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7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Q0FBQyxRQUFRLG1DQUFJLFlBQVk7b0JBQ3ZDLE1BQU0sRUFBRSxNQUFBLElBQUksQ0FBQyxNQUFNLG1DQUFJLGVBQWU7b0JBQ3RDLFFBQVEsRUFBRSxPQUFPO29CQUNqQixRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQztvQkFDM0IsV0FBVyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSxNQUFBLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxtQ0FBSSxPQUFPO2lCQUNyRCxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ0osT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNqQjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDakI7S0FDRjtBQUNILENBQUMsQ0FBQyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy9wcm9taXNlcyc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY2FzZXV0aWwgZnJvbSAnY2FzZSc7XG5pbXBvcnQgbWluaW1pc3QgZnJvbSAnbWluaW1pc3QnO1xuaW1wb3J0IHsgcGFyc2VDb21tYW5kcyB9IGZyb20gJ21pbmltaXN0LXN1YmNvbW1hbmQnO1xuaW1wb3J0IHsgaW1wb3J0UmVzb3VyY2VUeXBlLCBpbXBvcnRQcm9kdWN0cywgaW1wb3J0UHJvZHVjdCB9IGZyb20gJy4nO1xuaW1wb3J0IHsgcmVuZGVyQ29kZSwgU1VQUE9SVEVEX0xBTkdVQUdFUyB9IGZyb20gJy4vbGFuZ3VhZ2VzJztcblxuY29uc3QgY29tbWFuZERlZmludGlvbiA9IHtcbiAgY29tbWFuZHM6IHtcbiAgICBzYzogbnVsbCxcbiAgICBjZm46IG51bGwsXG4gIH0sXG59O1xuXG5jb25zdCBwYXJzZWRDb21tYW5kc0FuZEFyZ3YgPSBwYXJzZUNvbW1hbmRzKGNvbW1hbmREZWZpbnRpb24sIHByb2Nlc3MuYXJndi5zbGljZSgyKSk7XG5jb25zdCBzdWJDb21tYW5kID0gcGFyc2VkQ29tbWFuZHNBbmRBcmd2LmNvbW1hbmRzWzBdO1xuXG5jb25zdCBhcmdzID0gbWluaW1pc3QocGFyc2VkQ29tbWFuZHNBbmRBcmd2LmFyZ3YsIHtcbiAgc3RyaW5nOiBbXG4gICAgJ291dGRpcicsXG4gICAgJ2xhbmd1YWdlJyxcbiAgICAnZ28tbW9kdWxlLW5hbWUnLFxuICAgICdwcm9kdWN0LWlkJyxcbiAgICAncHJvdmlzaW9uaW5nLWFydGlmYWN0LWlkJyxcbiAgICAncGF0aC1pZCcsXG4gIF0sXG4gIGJvb2xlYW46IFtcbiAgICAnaGVscCcsXG4gICAgJ3ByaXZhdGUnLFxuICBdLFxuICBhbGlhczoge1xuICAgIG91dGRpcjogJ28nLFxuICAgIGhlbHA6ICdoJyxcbiAgICBsYW5ndWFnZTogJ2wnLFxuICB9LFxufSk7XG5cbmZ1bmN0aW9uIHNob3dIZWxwKCkge1xuICBjb25zb2xlLmxvZygnJyk7XG4gIGNvbnNvbGUubG9nKCdVc2FnZTonKTtcbiAgY29uc29sZS5sb2coJyAgY2RrLWltcG9ydCBTVUJDT01NQU5EIChjZm4gb3Igc2MpIFtwYXJhbWV0ZXJzXScpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygnR2VuZXJhbCBvcHRpb25zOicpO1xuICBjb25zb2xlLmxvZygnICAtbCwgLS1sYW5ndWFnZSAgICAgT3V0cHV0IHByb2dyYW1taW5nIGxhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddJyk7XG4gIGNvbnNvbGUubG9nKCcgIC1vLCAtLW91dGRpciAgICAgICBPdXRwdXQgZGlyZWN0b3J5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cmluZ10nKTtcbiAgY29uc29sZS5sb2coJyAgLS1nby1tb2R1bGUgICAgICAgIEdvIG1vZHVsZSBuYW1lIChyZXF1aXJlZCBpZiBsYW5ndWFnZSBpcyBcImdvbGFuZ1wiKSAgICAgICAgIFtzdHJpbmddJyk7XG4gIGNvbnNvbGUubG9nKCcgIC0tamF2YS1wYWNrYWdlICAgICBKYXZhIHBhY2thZ2UgbmFtZSAocmVxdWlyZWQgaWYgbGFuZ3VhZ2UgaXMgXCJqYXZhXCIpICAgICAgICBbc3RyaW5nXScpO1xuICBjb25zb2xlLmxvZygnICAtLWNzaGFycC1uYW1lc3BhY2UgQyMgbmFtZXNwYWNlIChvcHRpb25hbCBpZiBsYW5ndWFnZSBpcyBcImNzaGFycFwiLCAgICAgICAgICAgW3N0cmluZ10nKTtcbiAgY29uc29sZS5sb2coJyAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRzIHRvIHJlc291cmNlIG5hbWUuJyk7XG4gIGNvbnNvbGUubG9nKCcgIC1oLCAtLWhlbHAgICAgICAgICBTaG93IHVzYWdlIGluZm8gKGluY2x1ZGUgc3ViY29tbWFuZCB0byBzZWUgc3BlY2lmaWMgaGVscCkgW2Jvb2xlYW5dJyk7XG4gIGNvbnNvbGUubG9nKCcnKTtcbiAgY29uc29sZS5sb2coKTtcbn1cblxuZnVuY3Rpb24gc2hvd0NmbkhlbHAoKSB7XG4gIGNvbnNvbGUubG9nKCcnKTtcbiAgY29uc29sZS5sb2coJ1VzYWdlOicpO1xuICBjb25zb2xlLmxvZygnICBjZGstaW1wb3J0IGNmbiAtbCBMQU5HVUFHRSBSRVNPVVJDRS1OQU1FW0BWRVJTSU9OXScpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygnT3B0aW9uczonKTtcbiAgY29uc29sZS5sb2coJyAgLWwsIC0tbGFuZ3VhZ2UgICAgIE91dHB1dCBwcm9ncmFtbWluZyBsYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXScpO1xuICBjb25zb2xlLmxvZygnICAtbywgLS1vdXRkaXIgICAgICAgT3V0cHV0IGRpcmVjdG9yeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddICBbZGVmYXVsdDogXCIuXCJdJyk7XG4gIGNvbnNvbGUubG9nKCcgIC0tZ28tbW9kdWxlICAgICAgICBHbyBtb2R1bGUgbmFtZSAocmVxdWlyZWQgaWYgbGFuZ3VhZ2UgaXMgXCJnb2xhbmdcIikgICAgICBbc3RyaW5nXScpO1xuICBjb25zb2xlLmxvZygnICAtLWphdmEtcGFja2FnZSAgICAgSmF2YSBwYWNrYWdlIG5hbWUgKHJlcXVpcmVkIGlmIGxhbmd1YWdlIGlzIFwiamF2YVwiKSAgICAgW3N0cmluZ10nKTtcbiAgY29uc29sZS5sb2coJyAgLS1jc2hhcnAtbmFtZXNwYWNlIEMjIG5hbWVzcGFjZSAob3B0aW9uYWwgaWYgbGFuZ3VhZ2UgaXMgXCJjc2hhcnBcIiwgICAgICAgIFtzdHJpbmddJyk7XG4gIGNvbnNvbGUubG9nKCcgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0cyB0byByZXNvdXJjZSBuYW1lLicpO1xuICBjb25zb2xlLmxvZygnICAtLXByaXZhdGUgICAgICAgICAgSW1wb3J0IHR5cGVzIHJlZ2lzdGVyZWQgaW4geW91ciBBV1MgYWNjb3VudCBhbmQgcmVnaW9uIFtib29sZWFuXScpO1xuICBjb25zb2xlLmxvZygnICAtaCwgLS1oZWxwICAgICAgICAgU2hvdyB0aGlzIHVzYWdlIGluZm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtib29sZWFuXScpO1xuICBjb25zb2xlLmxvZygnJyk7XG4gIGNvbnNvbGUubG9nKCdFeGFtcGxlczonKTtcbiAgY29uc29sZS5sb2coKTtcbiAgY29uc29sZS5sb2coJyAgR2VuZXJhdGVzIGNvbnN0cnVjdHMgZm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBBV1NRUzo6RUtTOjpDbHVzdGVyIGluIFR5cGVTY3JpcHQ6Jyk7XG4gIGNvbnNvbGUubG9nKCcgICAgY2RrLWltcG9ydCBjZm4gLWwgdHlwZXNjcmlwdCBBV1NRUzo6RUtTOjpDbHVzdGVyJyk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKCcgIEdlbmVyYXRlcyBjb25zdHJ1Y3QgaW4gR28gZm9yIGEgc3BlY2lmaWMgcmVzb3VyY2UgdmVyc2lvbjonKTtcbiAgY29uc29sZS5sb2coJyAgICBjZGstaW1wb3J0IGNmbiAtbCBnb2xhbmcgLS1nby1tb2R1bGUgXCJnaXRodWIuY29tL2FjY291bnQvcmVwb1wiIEFXU1FTOjpFS1M6OkNsdXN0ZXJAMS4yLjAnKTtcbiAgY29uc29sZS5sb2coKTtcbiAgY29uc29sZS5sb2coJyAgR2VuZXJhdGVzIGNvbnN0cnVjdCBpbiBQeXRob24gdW5kZXIgdGhlIFwic3JjXCIgc3ViZm9sZGVyIGluc3RlYWQgb2Ygd29ya2luZyBkaXJlY3Rvcnk6Jyk7XG4gIGNvbnNvbGUubG9nKCcgICAgY2RrLWltcG9ydCBjZm4gLWwgcHl0aG9uIC1vIHNyYyBBV1NRUzo6RUtTOjpDbHVzdGVyJyk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKCcgIEdlbmVyYXRlcyBjb25zdHJ1Y3QgaW4gSmF2YSBhbmQgaWRlbnRpZmllcyB0aGUgcmVzb3VyY2UgdHlwZSBieSBpdHMgQVJOOicpO1xuICBjb25zb2xlLmxvZygnICAgIGNkay1pbXBvcnQgY2ZuIC1sIGphdmEgLS1qYXZhLXBhY2thZ2UgXCJjb20uYWNtZS5teXByb2plY3RcIiBhcm46YXdzOmNsb3VkZm9ybWF0aW9uOi4uLicpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygnICBHZW5lcmF0ZXMgY29uc3RydWN0IGZvciBhIHByaXZhdGUgdHlwZTonKTtcbiAgY29uc29sZS5sb2coJyAgICBjZGstaW1wb3J0IGNmbiAtbCB0eXBlc2NyaXB0IC0tcHJpdmF0ZSBBY21lOjpTdXBlclNlcnZpY2U6OkZyaWVuZDo6TU9EVUxFJyk7XG4gIGNvbnNvbGUubG9nKCk7XG59XG5cbmZ1bmN0aW9uIHNob3dTQ0hlbHAoKSB7XG4gIGNvbnNvbGUubG9nKCcnKTtcbiAgY29uc29sZS5sb2coJ1VzYWdlOicpO1xuICBjb25zb2xlLmxvZygnICBjZGstaW1wb3J0IHNjIC1sIExBTkdVQUdFJyk7XG4gIGNvbnNvbGUubG9nKCcgIGNkay1pbXBvcnQgc2MgLWwgTEFOR1VBR0UgLXByIFBST0RVQ1QtSUQgLXBhIFBST1ZJU0lPTklORy1BUlRJRkFDVC1JRCAtbHAgTEFVTkNILVBBVEgtSUQnKTtcbiAgY29uc29sZS5sb2coKTtcbiAgY29uc29sZS5sb2coJ09wdGlvbnM6Jyk7XG4gIGNvbnNvbGUubG9nKCcgIC1sLCAtLWxhbmd1YWdlICAgICAgICAgICAgICAgICAgT3V0cHV0IHByb2dyYW1taW5nIGxhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddJyk7XG4gIGNvbnNvbGUubG9nKCcgIC1vLCAtLW91dGRpciAgICAgICAgICAgICAgICAgICAgT3V0cHV0IGRpcmVjdG9yeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddJyk7XG4gIGNvbnNvbGUubG9nKCcgIC0tcHJvZHVjdC1pZCAgICAgICAgICAgICAgICAgICAgUHJvZHVjdCBJZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddJyk7XG4gIGNvbnNvbGUubG9nKCcgIC0tcHJvdmlzaW9uaW5nLWFydGlmYWN0LWlkICAgICAgUHJvdmlzaW9uaW5nIGFydGlmYWN0IElkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddJyk7XG4gIGNvbnNvbGUubG9nKCcgIC0tcGF0aC1pZCAgICAgICAgICAgICAgICAgICAgICAgTGF1bmNoIHBhdGggSWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddJyk7XG4gIGNvbnNvbGUubG9nKCcgIC0tZ28tbW9kdWxlICAgICAgICAgICAgICAgICAgICAgR28gbW9kdWxlIG5hbWUgKHJlcXVpcmVkIGlmIGxhbmd1YWdlIGlzIFwiZ29sYW5nXCIpICAgICAgW3N0cmluZ10nKTtcbiAgY29uc29sZS5sb2coJyAgLS1qYXZhLXBhY2thZ2UgICAgICAgICAgICAgICAgICBKYXZhIHBhY2thZ2UgbmFtZSAocmVxdWlyZWQgaWYgbGFuZ3VhZ2UgaXMgXCJqYXZhXCIpICAgICBbc3RyaW5nXScpO1xuICBjb25zb2xlLmxvZygnICAtLWNzaGFycC1uYW1lc3BhY2UgICAgICAgICAgICAgIEMjIG5hbWVzcGFjZSAob3B0aW9uYWwgaWYgbGFuZ3VhZ2UgaXMgXCJjc2hhcnBcIiwgICAgICAgIFtzdHJpbmddJyk7XG4gIGNvbnNvbGUubG9nKCcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdHMgdG8gcmVzb3VyY2UgbmFtZS4nKTtcbiAgY29uc29sZS5sb2coJyAgLWgsIC0taGVscCAgICAgICAgICAgICAgICAgICAgICBTaG93IHRoaXMgdXNhZ2UgaW5mbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Jvb2xlYW5dJyk7XG4gIGNvbnNvbGUubG9nKCcnKTtcbiAgY29uc29sZS5sb2coJ0V4YW1wbGVzOicpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygnICBHZW5lcmF0ZXMgY29uc3RydWN0cyBmb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHByb2R1Y3RzIGluIFR5cGVTY3JpcHQ6Jyk7XG4gIGNvbnNvbGUubG9nKCcgICAgY2RrLWltcG9ydCBzYyAtbCB0eXBlc2NyaXB0Jyk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKCcgIEdlbmVyYXRlcyBjb25zdHJ1Y3QgaW4gR28gZm9yIGEgc3BlY2lmaWMgcHJvZHVjdCB2ZXJzaW9uOicpO1xuICBjb25zb2xlLmxvZygnICAgIGNkay1pbXBvcnQgc2MgLWwgZ29sYW5nIC0tZ28tbW9kdWxlIFwiZ2l0aHViLmNvbS9hY2NvdW50L3JlcG9cIiAtcHIgcHJvZC1hYmMxMjMgLXBhIHBhLWFiYzEyMyAtbHAgbHAtYWJjMTIzJyk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKCcgIEdlbmVyYXRlcyBjb25zdHJ1Y3RzIGluIFB5dGhvbiB1bmRlciB0aGUgXCJzcmNcIiBzdWJmb2xkZXIgaW5zdGVhZCBvZiB3b3JraW5nIGRpcmVjdG9yeTonKTtcbiAgY29uc29sZS5sb2coJyAgICBjZGstaW1wb3J0IHNjIC1sIHB5dGhvbiAtbyAuL3NyYycpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygpO1xufVxuXG52b2lkIChhc3luYyAoKSA9PiB7XG4gIGlmIChhcmdzLmhlbHAgfHwgIXN1YkNvbW1hbmQpIHtcbiAgICBzaG93SGVscCgpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuXG4gIGlmICghYXJncy5sYW5ndWFnZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyByZXF1aXJlZCBvcHRpb246IC0tbGFuZ3VhZ2UuIFN1cHBvcnRlZCBsYW5ndWFnZXM6ICR7U1VQUE9SVEVEX0xBTkdVQUdFUy5qb2luKCcsICcpfWApO1xuICB9XG5cbiAgaWYgKFNVUFBPUlRFRF9MQU5HVUFHRVMuaW5kZXhPZihhcmdzLmxhbmd1YWdlKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGxhbmd1YWdlICR7YXJncy5sYW5ndWFnZX0uIFN1cHBvcnRlZDogJHtTVVBQT1JURURfTEFOR1VBR0VTLmpvaW4oJywgJyl9YCk7XG4gIH1cblxuICBpZiAoc3ViQ29tbWFuZCA9PSAnY2ZuJykge1xuICAgIGlmIChhcmdzLl8ubGVuZ3RoICE9PSAxKSB7XG4gICAgICBzaG93Q2ZuSGVscCgpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBbcmVzb3VyY2VOYW1lLCByZXNvdXJjZVZlcnNpb25dID0gYXJncy5fWzBdLnNwbGl0KCdAJyk7XG4gICAgICBjb25zdCB3b3JrZGlyID0gYXdhaXQgZnMubWtkdGVtcChwYXRoLmpvaW4ob3MudG1wZGlyKCksICdjZGstaW1wb3J0JykpO1xuICAgICAgY29uc3QgdHlwZU5hbWUgPSBhd2FpdCBpbXBvcnRSZXNvdXJjZVR5cGUocmVzb3VyY2VOYW1lLCByZXNvdXJjZVZlcnNpb24sIHtcbiAgICAgICAgb3V0ZGlyOiB3b3JrZGlyLFxuICAgICAgICBwcml2YXRlOiBhcmdzLnByaXZhdGUsXG4gICAgICB9KTtcblxuICAgICAgYXdhaXQgcmVuZGVyQ29kZSh7XG4gICAgICAgIHNyY2Rpcjogd29ya2RpcixcbiAgICAgICAgbGFuZ3VhZ2U6IGFyZ3MubGFuZ3VhZ2UsXG4gICAgICAgIG91dGRpcjogYXJncy5vdXRkaXIgPz8gJy4nLFxuICAgICAgICB0eXBlTmFtZTogdHlwZU5hbWUsXG4gICAgICAgIGdvTW9kdWxlOiBhcmdzWydnby1tb2R1bGUnXSxcbiAgICAgICAgamF2YVBhY2thZ2U6IGFyZ3NbJ2phdmEtcGFja2FnZSddLFxuICAgICAgICBjc2hhcnBOYW1lc3BhY2U6IGFyZ3NbJ2NzaGFycC1uYW1lc3BhY2UnXSA/PyB0eXBlTmFtZSwgLy8gYWxyZWFkeSBBV1M6OkZvbzo6QmFyXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gIH1cblxuICBpZiAoc3ViQ29tbWFuZCA9PSAnc2MnKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHdvcmtkaXIgPSBhd2FpdCBmcy5ta2R0ZW1wKHBhdGguam9pbihvcy50bXBkaXIoKSwgJ2Nkay1pbXBvcnQnKSk7XG4gICAgICBjb25zdCBwcEFyZ3MgPSBbYXJnc1sncHJvZHVjdC1pZCddLCBhcmdzWydwcm92aXNpb25pbmctYXJ0aWZhY3QtaWQnXSwgYXJnc1sncGF0aC1pZCddXS5maWx0ZXIocGFyYW0gPT4gcGFyYW0gIT0gdW5kZWZpbmVkKTtcblxuICAgICAgaWYgKGFyZ3MuaGVscCB8fCAocHBBcmdzLmxlbmd0aCA+IDAgJiYgcHBBcmdzLmxlbmd0aCAhPSAzKSkge1xuICAgICAgICBzaG93U0NIZWxwKCk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHByb2R1Y3RzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgaWYgKHBwQXJncy5sZW5ndGggPT0gMykge1xuICAgICAgICBwcm9kdWN0cy5wdXNoKFxuICAgICAgICAgIGF3YWl0IGltcG9ydFByb2R1Y3Qoe1xuICAgICAgICAgICAgb3V0ZGlyOiB3b3JrZGlyLFxuICAgICAgICAgICAgcHJvZHVjdElkOiBhcmdzWydwcm9kdWN0LWlkJ10sXG4gICAgICAgICAgICBsYXVuY2hQYXRoSWQ6IGFyZ3NbJ3BhdGgtaWQnXSxcbiAgICAgICAgICAgIHByb3Zpc2lvbmluZ0FydGlmYWN0SWQ6IGFyZ3NbJ3Byb3Zpc2lvbmluZy1hcnRpZmFjdC1pZCddLFxuICAgICAgICAgIH0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb2R1Y3RzLnB1c2goXG4gICAgICAgICAgLi4uYXdhaXQgaW1wb3J0UHJvZHVjdHMoe1xuICAgICAgICAgICAgb3V0ZGlyOiB3b3JrZGlyLFxuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9kdWN0cy5tYXAoYXN5bmMgKHByb2R1Y3QpID0+IHtcbiAgICAgICAgY29uc3QgcHJvZHVjdERpciA9IHBhdGguam9pbih3b3JrZGlyLCBjYXNldXRpbC5oZWFkZXIocHJvZHVjdCkudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIGF3YWl0IHJlbmRlckNvZGUoe1xuICAgICAgICAgIHNyY2RpcjogcHJvZHVjdERpcixcbiAgICAgICAgICBsYW5ndWFnZTogYXJncy5sYW5ndWFnZSA/PyAndHlwZXNjcmlwdCcsXG4gICAgICAgICAgb3V0ZGlyOiBhcmdzLm91dGRpciA/PyAnLi9zYy1wcm9kdWN0cycsXG4gICAgICAgICAgdHlwZU5hbWU6IHByb2R1Y3QsXG4gICAgICAgICAgZ29Nb2R1bGU6IGFyZ3NbJ2dvLW1vZHVsZSddLFxuICAgICAgICAgIGphdmFQYWNrYWdlOiBhcmdzWydqYXZhLXBhY2thZ2UnXSxcbiAgICAgICAgICBjc2hhcnBOYW1lc3BhY2U6IGFyZ3NbJ2NzaGFycC1uYW1lc3BhY2UnXSA/PyBwcm9kdWN0LFxuICAgICAgICB9KTtcbiAgICAgIH0pKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gIH1cbn0pKCk7XG4iXX0=
package/lib/index.js CHANGED
@@ -62,7 +62,8 @@ async function importProduct(options) {
62
62
  const product = await (0, service_catalog_1.describeProductAggregate)(options);
63
63
  const gen = new sc_construct_generator_1.ServiceCatalogProvisioningConstructGenerator(product);
64
64
  fs.mkdirSync(outdir, { recursive: true });
65
- fs.writeFileSync(path.join(outdir, `${caseutil.header(gen.name).toLowerCase()}.ts`), gen.render());
65
+ const prodDir = fs.mkdirSync(path.join(outdir, caseutil.header(gen.name).toLowerCase()), { recursive: true });
66
+ fs.writeFileSync(path.join(prodDir, 'index.ts'), gen.render());
66
67
  return gen.name;
67
68
  }
68
69
  exports.importProduct = importProduct;
@@ -78,14 +79,20 @@ async function importProducts(options) {
78
79
  let productVersions = [];
79
80
  const availableProducts = await (0, service_catalog_1.fetchAvailableProducts)();
80
81
  await Promise.all(availableProducts.map(async (product) => {
81
- const productVersion = await importProduct({
82
- outdir: outdir,
83
- productId: product.ProductId,
84
- });
85
- productVersions.push(productVersion);
82
+ try {
83
+ const productVersion = await importProduct({
84
+ outdir: outdir,
85
+ productId: product.ProductId,
86
+ });
87
+ productVersions.push(productVersion);
88
+ }
89
+ catch (e) {
90
+ console.log(`${e.message} Skipping import for ${product.ProductId}...`);
91
+ console.log('try importing directly via --product-id, --provisioning-artifact-id, --path-id');
92
+ }
86
93
  }));
87
94
  return productVersions;
88
95
  }
89
96
  exports.importProducts = importProducts;
90
97
  ;
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLCtDQUFpQztBQUNqQyxpREFBbUY7QUFDbkYscUVBQWdFO0FBQ2hFLHFFQUF3RjtBQUN4Rix1REFBc0g7QUFTdEg7Ozs7Ozs7R0FPRztBQUNJLEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxZQUFvQixFQUFFLGdCQUF3QixFQUFFLE9BQWtDOztJQUN6SCxNQUFNLE1BQU0sR0FBRyxNQUFBLE9BQU8sQ0FBQyxNQUFNLG1DQUFJLEdBQUcsQ0FBQztJQUNyQyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUEsbUNBQW9CLEVBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRS9ELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU8sQ0FBQyxDQUFDO0lBRTVDLE1BQU0sR0FBRyxHQUFHLElBQUksNkNBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFdEUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUUxQyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBRTlELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUN2QixDQUFDO0FBYkQsZ0RBYUM7QUFBQSxDQUFDO0FBYUY7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxhQUFhLENBQUMsT0FBNkI7O0lBQy9ELE1BQU0sTUFBTSxHQUFHLE1BQUEsT0FBTyxDQUFDLE1BQU0sbUNBQUksR0FBRyxDQUFDO0lBRXJDLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSwwQ0FBd0IsRUFBQyxPQUFPLENBQUMsQ0FBQztJQUV4RCxNQUFNLEdBQUcsR0FBRyxJQUFJLHFFQUE0QyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RFLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDMUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUVuRyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDbEIsQ0FBQztBQVZELHNDQVVDO0FBQUEsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsY0FBYyxDQUFDLE9BQTZCOztJQUNoRSxNQUFNLE1BQU0sR0FBRyxNQUFBLE9BQU8sQ0FBQyxNQUFNLG1DQUFJLEdBQUcsQ0FBQztJQUNyQyxJQUFJLGVBQWUsR0FBYSxFQUFFLENBQUM7SUFFbkMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUEsd0NBQXNCLEdBQUUsQ0FBQztJQUV6RCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN4RCxNQUFNLGNBQWMsR0FBRyxNQUFNLGFBQWEsQ0FBRTtZQUMxQyxNQUFNLEVBQUUsTUFBTTtZQUNkLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBVTtTQUM5QixDQUFDLENBQUM7UUFDSCxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFSixPQUFPLGVBQWUsQ0FBQztBQUN6QixDQUFDO0FBZkQsd0NBZUM7QUFBQSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGNhc2V1dGlsIGZyb20gJ2Nhc2UnO1xuaW1wb3J0IHsgZGVzY3JpYmVSZXNvdXJjZVR5cGUsIERlc2NyaWJlUmVzb3VyY2VUeXBlT3B0aW9ucyB9IGZyb20gJy4vY2ZuLXJlZ2lzdHJ5JztcbmltcG9ydCB7IENmblJlc291cmNlR2VuZXJhdG9yIH0gZnJvbSAnLi9jZm4tcmVzb3VyY2UtZ2VuZXJhdG9yJztcbmltcG9ydCB7IFNlcnZpY2VDYXRhbG9nUHJvdmlzaW9uaW5nQ29uc3RydWN0R2VuZXJhdG9yIH0gZnJvbSAnLi9zYy1jb25zdHJ1Y3QtZ2VuZXJhdG9yJztcbmltcG9ydCB7IGRlc2NyaWJlUHJvZHVjdEFnZ3JlZ2F0ZSwgRGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlT3B0aW9ucywgZmV0Y2hBdmFpbGFibGVQcm9kdWN0cyB9IGZyb20gJy4vc2VydmljZS1jYXRhbG9nJztcblxuZXhwb3J0IGludGVyZmFjZSBJbXBvcnRSZXNvdXJjZVR5cGVPcHRpb25zIGV4dGVuZHMgRGVzY3JpYmVSZXNvdXJjZVR5cGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IFwiLlwiXG4gICAqL1xuICByZWFkb25seSBvdXRkaXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW50cnkgcG9pbnQgdG8gaW1wb3J0IENGTiByZXNvdXJjZSB0eXBlc1xuICpcbiAqIEBwYXJhbSByZXNvdXJjZU5hbWUgdGhlIG5hbWUgb3IgQVJOIG9mIHRoZSByZXNvdXJjZSB0eXBlXG4gKiBAcGFyYW0gX3Jlc291cmNlVmVyc2lvbiB0aGUgdmVyc2lvbiBvZiB0aGUgcmVzb3VyY2UgdHlwZSAoaWdub3JlZCBmb3Igbm93KVxuICogQHBhcmFtIG91dGRpciB0aGUgb3V0IGZvbGRlciB0byB1c2UgKGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeSlcbiAqIEByZXR1cm5zIG5hbWUgb2YgdGhlIHJlc291cmNlIHR5cGVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGltcG9ydFJlc291cmNlVHlwZShyZXNvdXJjZU5hbWU6IHN0cmluZywgX3Jlc291cmNlVmVyc2lvbjogc3RyaW5nLCBvcHRpb25zOiBJbXBvcnRSZXNvdXJjZVR5cGVPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qgb3V0ZGlyID0gb3B0aW9ucy5vdXRkaXIgPz8gJy4nO1xuICBjb25zdCB0eXBlID0gYXdhaXQgZGVzY3JpYmVSZXNvdXJjZVR5cGUocmVzb3VyY2VOYW1lLCBvcHRpb25zKTtcblxuICBjb25zdCB0eXBlU2NoZW1hID0gSlNPTi5wYXJzZSh0eXBlLlNjaGVtYSEpO1xuXG4gIGNvbnN0IGdlbiA9IG5ldyBDZm5SZXNvdXJjZUdlbmVyYXRvcih0eXBlLlR5cGVOYW1lLCB0eXBlLCB0eXBlU2NoZW1hKTtcblxuICBmcy5ta2RpclN5bmMob3V0ZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihvdXRkaXIsICdpbmRleC50cycpLCBnZW4ucmVuZGVyKCkpO1xuXG4gIHJldHVybiB0eXBlLlR5cGVOYW1lO1xufTtcblxuLyoqXG4gKiBDb25maWd1cmUgb3B0aW9ucyBmb3IgaW1wb3J0aW5nIHByb2R1Y3RzIGludG8geW91ciBsb2NhbCB3b3Jrc3BhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbXBvcnRQcm9kdWN0T3B0aW9ucyBleHRlbmRzIERlc2NyaWJlUHJvZHVjdEFnZ3JlZ2F0ZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGZvbGRlciBpbiB3aGljaCBwcm9kdWN0IGNvbnN0cnVjdHMgKGFzIHNlcGFyYXRlIGNsYXNzIGZpbGVzKSB3aWxsIGJlIG91dHB1dCB0by5cbiAgICogQGRlZmF1bHQgXCIuL3NjLXByb2R1Y3RzXCJcbiAgICovXG4gIHJlYWRvbmx5IG91dGRpcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBFbnRyeSBwb2ludCB0byBpbXBvcnQgU2VydmljZSBDYXRhbG9nIHByb2R1Y3QgcmVzb3VyY2UuXG4gKlxuICogQHJldHVybnMgbmFtZSBvZiB0aGUgcHJvZHVjdCB2ZXJzaW9uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbXBvcnRQcm9kdWN0KG9wdGlvbnM6IEltcG9ydFByb2R1Y3RPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qgb3V0ZGlyID0gb3B0aW9ucy5vdXRkaXIgPz8gJy4nO1xuXG4gIGNvbnN0IHByb2R1Y3QgPSBhd2FpdCBkZXNjcmliZVByb2R1Y3RBZ2dyZWdhdGUob3B0aW9ucyk7XG5cbiAgY29uc3QgZ2VuID0gbmV3IFNlcnZpY2VDYXRhbG9nUHJvdmlzaW9uaW5nQ29uc3RydWN0R2VuZXJhdG9yKHByb2R1Y3QpO1xuICBmcy5ta2RpclN5bmMob3V0ZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4ob3V0ZGlyLCBgJHtjYXNldXRpbC5oZWFkZXIoZ2VuLm5hbWUpLnRvTG93ZXJDYXNlKCl9LnRzYCksIGdlbi5yZW5kZXIoKSk7XG5cbiAgcmV0dXJuIGdlbi5uYW1lO1xufTtcblxuLyoqXG4gKiBFbnRyeSBwb2ludCB0byBpbXBvcnQgYWxsIGF2YWlsYWJsZSBTZXJ2aWNlIENhdGFsb2cgcHJvZHVjdCByZXNvdXJjZXMgd2l0aCBgREVGQVVMVGAgcGFyYW1ldGVycy5cbiAqXG4gKiBAcmV0dXJucyBuYW1lcyBvZiB0aGUgcHJvZHVjdCB2ZXJzaW9uc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW1wb3J0UHJvZHVjdHMob3B0aW9uczogSW1wb3J0UHJvZHVjdE9wdGlvbnMpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gIGNvbnN0IG91dGRpciA9IG9wdGlvbnMub3V0ZGlyID8/ICcuJztcbiAgbGV0IHByb2R1Y3RWZXJzaW9uczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdCBhdmFpbGFibGVQcm9kdWN0cyA9IGF3YWl0IGZldGNoQXZhaWxhYmxlUHJvZHVjdHMoKTtcblxuICBhd2FpdCBQcm9taXNlLmFsbChhdmFpbGFibGVQcm9kdWN0cy5tYXAoYXN5bmMgKHByb2R1Y3QpID0+IHtcbiAgICBjb25zdCBwcm9kdWN0VmVyc2lvbiA9IGF3YWl0IGltcG9ydFByb2R1Y3QoIHtcbiAgICAgIG91dGRpcjogb3V0ZGlyLFxuICAgICAgcHJvZHVjdElkOiBwcm9kdWN0LlByb2R1Y3RJZCEsXG4gICAgfSk7XG4gICAgcHJvZHVjdFZlcnNpb25zLnB1c2gocHJvZHVjdFZlcnNpb24pO1xuICB9KSk7XG5cbiAgcmV0dXJuIHByb2R1Y3RWZXJzaW9ucztcbn07XG4iXX0=
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLCtDQUFpQztBQUNqQyxpREFBbUY7QUFDbkYscUVBQWdFO0FBQ2hFLHFFQUF3RjtBQUN4Rix1REFBc0g7QUFTdEg7Ozs7Ozs7R0FPRztBQUNJLEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxZQUFvQixFQUFFLGdCQUF3QixFQUFFLE9BQWtDOztJQUN6SCxNQUFNLE1BQU0sR0FBRyxNQUFBLE9BQU8sQ0FBQyxNQUFNLG1DQUFJLEdBQUcsQ0FBQztJQUNyQyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUEsbUNBQW9CLEVBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRS9ELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU8sQ0FBQyxDQUFDO0lBRTVDLE1BQU0sR0FBRyxHQUFHLElBQUksNkNBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFdEUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUUxQyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBRTlELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUN2QixDQUFDO0FBYkQsZ0RBYUM7QUFBQSxDQUFDO0FBYUY7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxhQUFhLENBQUMsT0FBNkI7O0lBQy9ELE1BQU0sTUFBTSxHQUFHLE1BQUEsT0FBTyxDQUFDLE1BQU0sbUNBQUksR0FBRyxDQUFDO0lBRXJDLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSwwQ0FBd0IsRUFBQyxPQUFPLENBQUMsQ0FBQztJQUV4RCxNQUFNLEdBQUcsR0FBRyxJQUFJLHFFQUE0QyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RFLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDMUMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQVEsRUFBRSxVQUFVLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUVoRSxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDbEIsQ0FBQztBQVhELHNDQVdDO0FBQUEsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsY0FBYyxDQUFDLE9BQTZCOztJQUNoRSxNQUFNLE1BQU0sR0FBRyxNQUFBLE9BQU8sQ0FBQyxNQUFNLG1DQUFJLEdBQUcsQ0FBQztJQUNyQyxJQUFJLGVBQWUsR0FBYSxFQUFFLENBQUM7SUFFbkMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUEsd0NBQXNCLEdBQUUsQ0FBQztJQUV6RCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN4RCxJQUFJO1lBQ0YsTUFBTSxjQUFjLEdBQUcsTUFBTSxhQUFhLENBQUM7Z0JBQ3pDLE1BQU0sRUFBRSxNQUFNO2dCQUNkLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBVTthQUM5QixDQUFDLENBQUM7WUFDSCxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3RDO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUksQ0FBVyxDQUFDLE9BQU8sd0JBQXdCLE9BQU8sQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDO1lBQ25GLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0ZBQWdGLENBQUMsQ0FBQztTQUMvRjtJQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFSixPQUFPLGVBQWUsQ0FBQztBQUN6QixDQUFDO0FBcEJELHdDQW9CQztBQUFBLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY2FzZXV0aWwgZnJvbSAnY2FzZSc7XG5pbXBvcnQgeyBkZXNjcmliZVJlc291cmNlVHlwZSwgRGVzY3JpYmVSZXNvdXJjZVR5cGVPcHRpb25zIH0gZnJvbSAnLi9jZm4tcmVnaXN0cnknO1xuaW1wb3J0IHsgQ2ZuUmVzb3VyY2VHZW5lcmF0b3IgfSBmcm9tICcuL2Nmbi1yZXNvdXJjZS1nZW5lcmF0b3InO1xuaW1wb3J0IHsgU2VydmljZUNhdGFsb2dQcm92aXNpb25pbmdDb25zdHJ1Y3RHZW5lcmF0b3IgfSBmcm9tICcuL3NjLWNvbnN0cnVjdC1nZW5lcmF0b3InO1xuaW1wb3J0IHsgZGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlLCBEZXNjcmliZVByb2R1Y3RBZ2dyZWdhdGVPcHRpb25zLCBmZXRjaEF2YWlsYWJsZVByb2R1Y3RzIH0gZnJvbSAnLi9zZXJ2aWNlLWNhdGFsb2cnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEltcG9ydFJlc291cmNlVHlwZU9wdGlvbnMgZXh0ZW5kcyBEZXNjcmliZVJlc291cmNlVHlwZU9wdGlvbnMge1xuICAvKipcbiAgICogQGRlZmF1bHQgXCIuXCJcbiAgICovXG4gIHJlYWRvbmx5IG91dGRpcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBFbnRyeSBwb2ludCB0byBpbXBvcnQgQ0ZOIHJlc291cmNlIHR5cGVzXG4gKlxuICogQHBhcmFtIHJlc291cmNlTmFtZSB0aGUgbmFtZSBvciBBUk4gb2YgdGhlIHJlc291cmNlIHR5cGVcbiAqIEBwYXJhbSBfcmVzb3VyY2VWZXJzaW9uIHRoZSB2ZXJzaW9uIG9mIHRoZSByZXNvdXJjZSB0eXBlIChpZ25vcmVkIGZvciBub3cpXG4gKiBAcGFyYW0gb3V0ZGlyIHRoZSBvdXQgZm9sZGVyIHRvIHVzZSAoZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5KVxuICogQHJldHVybnMgbmFtZSBvZiB0aGUgcmVzb3VyY2UgdHlwZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW1wb3J0UmVzb3VyY2VUeXBlKHJlc291cmNlTmFtZTogc3RyaW5nLCBfcmVzb3VyY2VWZXJzaW9uOiBzdHJpbmcsIG9wdGlvbnM6IEltcG9ydFJlc291cmNlVHlwZU9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBvdXRkaXIgPSBvcHRpb25zLm91dGRpciA/PyAnLic7XG4gIGNvbnN0IHR5cGUgPSBhd2FpdCBkZXNjcmliZVJlc291cmNlVHlwZShyZXNvdXJjZU5hbWUsIG9wdGlvbnMpO1xuXG4gIGNvbnN0IHR5cGVTY2hlbWEgPSBKU09OLnBhcnNlKHR5cGUuU2NoZW1hISk7XG5cbiAgY29uc3QgZ2VuID0gbmV3IENmblJlc291cmNlR2VuZXJhdG9yKHR5cGUuVHlwZU5hbWUsIHR5cGUsIHR5cGVTY2hlbWEpO1xuXG4gIGZzLm1rZGlyU3luYyhvdXRkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKG91dGRpciwgJ2luZGV4LnRzJyksIGdlbi5yZW5kZXIoKSk7XG5cbiAgcmV0dXJuIHR5cGUuVHlwZU5hbWU7XG59O1xuXG4vKipcbiAqIENvbmZpZ3VyZSBvcHRpb25zIGZvciBpbXBvcnRpbmcgcHJvZHVjdHMgaW50byB5b3VyIGxvY2FsIHdvcmtzcGFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEltcG9ydFByb2R1Y3RPcHRpb25zIGV4dGVuZHMgRGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgZm9sZGVyIGluIHdoaWNoIHByb2R1Y3QgY29uc3RydWN0cyAoYXMgc2VwYXJhdGUgY2xhc3MgZmlsZXMpIHdpbGwgYmUgb3V0cHV0IHRvLlxuICAgKiBAZGVmYXVsdCBcIi4vc2MtcHJvZHVjdHNcIlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0ZGlyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEVudHJ5IHBvaW50IHRvIGltcG9ydCBTZXJ2aWNlIENhdGFsb2cgcHJvZHVjdCByZXNvdXJjZS5cbiAqXG4gKiBAcmV0dXJucyBuYW1lIG9mIHRoZSBwcm9kdWN0IHZlcnNpb25cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGltcG9ydFByb2R1Y3Qob3B0aW9uczogSW1wb3J0UHJvZHVjdE9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBvdXRkaXIgPSBvcHRpb25zLm91dGRpciA/PyAnLic7XG5cbiAgY29uc3QgcHJvZHVjdCA9IGF3YWl0IGRlc2NyaWJlUHJvZHVjdEFnZ3JlZ2F0ZShvcHRpb25zKTtcblxuICBjb25zdCBnZW4gPSBuZXcgU2VydmljZUNhdGFsb2dQcm92aXNpb25pbmdDb25zdHJ1Y3RHZW5lcmF0b3IocHJvZHVjdCk7XG4gIGZzLm1rZGlyU3luYyhvdXRkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICBjb25zdCBwcm9kRGlyID0gZnMubWtkaXJTeW5jKHBhdGguam9pbihvdXRkaXIsIGNhc2V1dGlsLmhlYWRlcihnZW4ubmFtZSkudG9Mb3dlckNhc2UoKSksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihwcm9kRGlyISwgJ2luZGV4LnRzJyksIGdlbi5yZW5kZXIoKSk7XG5cbiAgcmV0dXJuIGdlbi5uYW1lO1xufTtcblxuLyoqXG4gKiBFbnRyeSBwb2ludCB0byBpbXBvcnQgYWxsIGF2YWlsYWJsZSBTZXJ2aWNlIENhdGFsb2cgcHJvZHVjdCByZXNvdXJjZXMgd2l0aCBgREVGQVVMVGAgcGFyYW1ldGVycy5cbiAqXG4gKiBAcmV0dXJucyBuYW1lcyBvZiB0aGUgcHJvZHVjdCB2ZXJzaW9uc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW1wb3J0UHJvZHVjdHMob3B0aW9uczogSW1wb3J0UHJvZHVjdE9wdGlvbnMpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gIGNvbnN0IG91dGRpciA9IG9wdGlvbnMub3V0ZGlyID8/ICcuJztcbiAgbGV0IHByb2R1Y3RWZXJzaW9uczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdCBhdmFpbGFibGVQcm9kdWN0cyA9IGF3YWl0IGZldGNoQXZhaWxhYmxlUHJvZHVjdHMoKTtcblxuICBhd2FpdCBQcm9taXNlLmFsbChhdmFpbGFibGVQcm9kdWN0cy5tYXAoYXN5bmMgKHByb2R1Y3QpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcHJvZHVjdFZlcnNpb24gPSBhd2FpdCBpbXBvcnRQcm9kdWN0KHtcbiAgICAgICAgb3V0ZGlyOiBvdXRkaXIsXG4gICAgICAgIHByb2R1Y3RJZDogcHJvZHVjdC5Qcm9kdWN0SWQhLFxuICAgICAgfSk7XG4gICAgICBwcm9kdWN0VmVyc2lvbnMucHVzaChwcm9kdWN0VmVyc2lvbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coYCR7KGUgYXMgRXJyb3IpLm1lc3NhZ2V9IFNraXBwaW5nIGltcG9ydCBmb3IgJHtwcm9kdWN0LlByb2R1Y3RJZH0uLi5gKTtcbiAgICAgIGNvbnNvbGUubG9nKCd0cnkgaW1wb3J0aW5nIGRpcmVjdGx5IHZpYSAtLXByb2R1Y3QtaWQsIC0tcHJvdmlzaW9uaW5nLWFydGlmYWN0LWlkLCAtLXBhdGgtaWQnKTtcbiAgICB9XG4gIH0pKTtcblxuICByZXR1cm4gcHJvZHVjdFZlcnNpb25zO1xufTtcbiJdfQ==
@@ -12,5 +12,9 @@ export interface RenderCodeOptions {
12
12
  * The name of the Java package to use for the generated code. Required if `language` is `java`.
13
13
  */
14
14
  readonly javaPackage?: string;
15
+ /**
16
+ * The name of the C# namespace to use for the generated code. Required if `language` is `csharp`.
17
+ */
18
+ readonly csharpNamespace?: string;
15
19
  }
16
20
  export declare function renderCode(options: RenderCodeOptions): Promise<void>;
package/lib/languages.js CHANGED
@@ -56,7 +56,7 @@ async function renderCode(options) {
56
56
  case 'csharp':
57
57
  srcmakopts.csharp = {
58
58
  outdir: options.outdir,
59
- namespace: options.typeName, // already AWS::Foo::Bar
59
+ namespace: options.csharpNamespace,
60
60
  };
61
61
  break;
62
62
  case 'java':
@@ -84,4 +84,4 @@ async function renderCode(options) {
84
84
  await (0, jsii_srcmak_1.srcmak)(options.srcdir, srcmakopts);
85
85
  }
86
86
  exports.renderCode = renderCode;
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xhbmd1YWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdEQUFrQztBQUNsQywyQ0FBNkI7QUFDN0IsK0NBQWlDO0FBQ2pDLDZDQUE4QztBQUU5QyxNQUFNLE9BQU8sR0FBRztJQUNkLGFBQWE7SUFDYixZQUFZO0NBQ2IsQ0FBQztBQUVXLFFBQUEsbUJBQW1CLEdBQUc7SUFDakMsWUFBWTtJQUNaLFFBQVE7SUFDUixNQUFNO0lBQ04sUUFBUTtJQUNSLFFBQVE7Q0FDVCxDQUFDO0FBbUJLLEtBQUssVUFBVSxVQUFVLENBQUMsT0FBMEI7SUFDekQsTUFBTSxVQUFVLEdBQVk7UUFDMUIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7S0FDM0UsQ0FBQztJQUVGLFFBQVEsT0FBTyxDQUFDLFFBQVEsRUFBRTtRQUN4QixLQUFLLFlBQVk7WUFDZixNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3BELE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFaEosS0FBSyxRQUFRO1lBQ1gsVUFBVSxDQUFDLE1BQU0sR0FBRztnQkFDbEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2dCQUN0QixVQUFVLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO2FBQzdDLENBQUM7WUFDRixNQUFNO1FBRVIsS0FBSyxRQUFRO1lBQ1gsVUFBVSxDQUFDLE1BQU0sR0FBRztnQkFDbEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2dCQUN0QixTQUFTLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSx3QkFBd0I7YUFDdEQsQ0FBQztZQUNGLE1BQU07UUFFUixLQUFLLE1BQU07WUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRTtnQkFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5RkFBeUYsQ0FBQyxDQUFDO2FBQzVHO1lBRUQsVUFBVSxDQUFDLElBQUksR0FBRztnQkFDaEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2dCQUN0QixPQUFPLEVBQUUsT0FBTyxDQUFDLFdBQVc7YUFDN0IsQ0FBQztZQUNGLE1BQU07UUFFUixLQUFLLFFBQVE7WUFDWCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtnQkFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzRUFBc0UsQ0FBQyxDQUFDO2FBQ3pGO1lBRUQsVUFBVSxDQUFDLE1BQU0sR0FBRztnQkFDbEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2dCQUN0QixXQUFXLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQztnQkFDbEQsVUFBVSxFQUFFLE9BQU8sQ0FBQyxRQUFRO2FBQzdCLENBQUM7WUFDRixNQUFNO1FBRVI7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztLQUNoRTtJQUVELE1BQU0sSUFBQSxvQkFBTSxFQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQXBERCxnQ0FvREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcy9wcm9taXNlcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY2FzZXV0aWwgZnJvbSAnY2FzZSc7XG5pbXBvcnQgeyBzcmNtYWssIE9wdGlvbnMgfSBmcm9tICdqc2lpLXNyY21hayc7XG5cbmNvbnN0IGNka0RlcHMgPSBbXG4gICdhd3MtY2RrLWxpYicsXG4gICdjb25zdHJ1Y3RzJyxcbl07XG5cbmV4cG9ydCBjb25zdCBTVVBQT1JURURfTEFOR1VBR0VTID0gW1xuICAndHlwZXNjcmlwdCcsXG4gICdweXRob24nLFxuICAnamF2YScsXG4gICdjc2hhcnAnLFxuICAnZ29sYW5nJyxcbl07XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyQ29kZU9wdGlvbnMge1xuICByZWFkb25seSBzcmNkaXI6IHN0cmluZztcbiAgcmVhZG9ubHkgb3V0ZGlyOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxhbmd1YWdlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHR5cGVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBHbyBtb2R1bGUgdG8gdXNlIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGUuIFJlcXVpcmVkIGlmIGBsYW5ndWFnZWAgaXMgYGdvbGFuZ2AuXG4gICAqL1xuICByZWFkb25seSBnb01vZHVsZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIEphdmEgcGFja2FnZSB0byB1c2UgZm9yIHRoZSBnZW5lcmF0ZWQgY29kZS4gUmVxdWlyZWQgaWYgYGxhbmd1YWdlYCBpcyBgamF2YWAuXG4gICAqL1xuICByZWFkb25seSBqYXZhUGFja2FnZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlckNvZGUob3B0aW9uczogUmVuZGVyQ29kZU9wdGlvbnMpIHtcbiAgY29uc3Qgc3JjbWFrb3B0czogT3B0aW9ucyA9IHtcbiAgICBkZXBzOiBjZGtEZXBzLm1hcCh4ID0+IHBhdGguZGlybmFtZShyZXF1aXJlLnJlc29sdmUoYCR7eH0vcGFja2FnZS5qc29uYCkpKSxcbiAgfTtcblxuICBzd2l0Y2ggKG9wdGlvbnMubGFuZ3VhZ2UpIHtcbiAgICBjYXNlICd0eXBlc2NyaXB0JzpcbiAgICAgIGF3YWl0IGZzLm1rZGlyKG9wdGlvbnMub3V0ZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIHJldHVybiBmcy5jb3B5RmlsZShwYXRoLmpvaW4ob3B0aW9ucy5zcmNkaXIsICdpbmRleC50cycpLCBwYXRoLmpvaW4ob3B0aW9ucy5vdXRkaXIsIGAke2Nhc2V1dGlsLmhlYWRlcihvcHRpb25zLnR5cGVOYW1lKS50b0xvd2VyQ2FzZSgpfS50c2ApKTtcblxuICAgIGNhc2UgJ3B5dGhvbic6XG4gICAgICBzcmNtYWtvcHRzLnB5dGhvbiA9IHtcbiAgICAgICAgb3V0ZGlyOiBvcHRpb25zLm91dGRpcixcbiAgICAgICAgbW9kdWxlTmFtZTogY2FzZXV0aWwuc25ha2Uob3B0aW9ucy50eXBlTmFtZSksXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdjc2hhcnAnOlxuICAgICAgc3JjbWFrb3B0cy5jc2hhcnAgPSB7XG4gICAgICAgIG91dGRpcjogb3B0aW9ucy5vdXRkaXIsXG4gICAgICAgIG5hbWVzcGFjZTogb3B0aW9ucy50eXBlTmFtZSwgLy8gYWxyZWFkeSBBV1M6OkZvbzo6QmFyXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdqYXZhJzpcbiAgICAgIGlmICghb3B0aW9ucy5qYXZhUGFja2FnZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0phdmEgcGFja2FnZSBuYW1lIChgLS1qYXZhLXBhY2thZ2VgKSBtdXN0IGJlIHNwZWNpZmllZCAoZS5nLiBcImNvbS5mb28uYmFyLm15LnJlc291cmNlXCIpJyk7XG4gICAgICB9XG5cbiAgICAgIHNyY21ha29wdHMuamF2YSA9IHtcbiAgICAgICAgb3V0ZGlyOiBvcHRpb25zLm91dGRpcixcbiAgICAgICAgcGFja2FnZTogb3B0aW9ucy5qYXZhUGFja2FnZSxcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2dvbGFuZyc6XG4gICAgICBpZiAoIW9wdGlvbnMuZ29Nb2R1bGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdHbyBtb2R1bGUgbmFtZSAoLS1nby1tb2R1bGUpIGlzIHJlcXVpcmVkIChlLmcuIFwiZ2l0aHViLmNvbS9mb28vYmFyXCIpJyk7XG4gICAgICB9XG5cbiAgICAgIHNyY21ha29wdHMuZ29sYW5nID0ge1xuICAgICAgICBvdXRkaXI6IG9wdGlvbnMub3V0ZGlyLFxuICAgICAgICBwYWNrYWdlTmFtZTogY2FzZXV0aWwubG93ZXIob3B0aW9ucy50eXBlTmFtZSwgJy0nKSxcbiAgICAgICAgbW9kdWxlTmFtZTogb3B0aW9ucy5nb01vZHVsZSxcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGxhbmd1YWdlOiAke29wdGlvbnMubGFuZ3VhZ2V9YCk7XG4gIH1cblxuICBhd2FpdCBzcmNtYWsob3B0aW9ucy5zcmNkaXIsIHNyY21ha29wdHMpO1xufVxuIl19
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xhbmd1YWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdEQUFrQztBQUNsQywyQ0FBNkI7QUFDN0IsK0NBQWlDO0FBQ2pDLDZDQUE4QztBQUU5QyxNQUFNLE9BQU8sR0FBRztJQUNkLGFBQWE7SUFDYixZQUFZO0NBQ2IsQ0FBQztBQUVXLFFBQUEsbUJBQW1CLEdBQUc7SUFDakMsWUFBWTtJQUNaLFFBQVE7SUFDUixNQUFNO0lBQ04sUUFBUTtJQUNSLFFBQVE7Q0FDVCxDQUFDO0FBd0JLLEtBQUssVUFBVSxVQUFVLENBQUMsT0FBMEI7SUFDekQsTUFBTSxVQUFVLEdBQVk7UUFDMUIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7S0FDM0UsQ0FBQztJQUVGLFFBQVEsT0FBTyxDQUFDLFFBQVEsRUFBRTtRQUN4QixLQUFLLFlBQVk7WUFDZixNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3BELE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFaEosS0FBSyxRQUFRO1lBQ1gsVUFBVSxDQUFDLE1BQU0sR0FBRztnQkFDbEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2dCQUN0QixVQUFVLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO2FBQzdDLENBQUM7WUFDRixNQUFNO1FBRVIsS0FBSyxRQUFRO1lBQ1gsVUFBVSxDQUFDLE1BQU0sR0FBRztnQkFDbEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2dCQUN0QixTQUFTLEVBQUUsT0FBTyxDQUFDLGVBQWdCO2FBQ3BDLENBQUM7WUFDRixNQUFNO1FBRVIsS0FBSyxNQUFNO1lBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUU7Z0JBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMseUZBQXlGLENBQUMsQ0FBQzthQUM1RztZQUVELFVBQVUsQ0FBQyxJQUFJLEdBQUc7Z0JBQ2hCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtnQkFDdEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2FBQzdCLENBQUM7WUFDRixNQUFNO1FBRVIsS0FBSyxRQUFRO1lBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7Z0JBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0VBQXNFLENBQUMsQ0FBQzthQUN6RjtZQUVELFVBQVUsQ0FBQyxNQUFNLEdBQUc7Z0JBQ2xCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtnQkFDdEIsV0FBVyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUM7Z0JBQ2xELFVBQVUsRUFBRSxPQUFPLENBQUMsUUFBUTthQUM3QixDQUFDO1lBQ0YsTUFBTTtRQUVSO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7S0FDaEU7SUFFRCxNQUFNLElBQUEsb0JBQU0sRUFBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFwREQsZ0NBb0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMvcHJvbWlzZXMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGNhc2V1dGlsIGZyb20gJ2Nhc2UnO1xuaW1wb3J0IHsgc3JjbWFrLCBPcHRpb25zIH0gZnJvbSAnanNpaS1zcmNtYWsnO1xuXG5jb25zdCBjZGtEZXBzID0gW1xuICAnYXdzLWNkay1saWInLFxuICAnY29uc3RydWN0cycsXG5dO1xuXG5leHBvcnQgY29uc3QgU1VQUE9SVEVEX0xBTkdVQUdFUyA9IFtcbiAgJ3R5cGVzY3JpcHQnLFxuICAncHl0aG9uJyxcbiAgJ2phdmEnLFxuICAnY3NoYXJwJyxcbiAgJ2dvbGFuZycsXG5dO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlckNvZGVPcHRpb25zIHtcbiAgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dGRpcjogc3RyaW5nO1xuICByZWFkb25seSBsYW5ndWFnZTogc3RyaW5nO1xuICByZWFkb25seSB0eXBlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgR28gbW9kdWxlIHRvIHVzZSBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlLiBSZXF1aXJlZCBpZiBgbGFuZ3VhZ2VgIGlzIGBnb2xhbmdgLlxuICAgKi9cbiAgcmVhZG9ubHkgZ29Nb2R1bGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBKYXZhIHBhY2thZ2UgdG8gdXNlIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGUuIFJlcXVpcmVkIGlmIGBsYW5ndWFnZWAgaXMgYGphdmFgLlxuICAgKi9cbiAgcmVhZG9ubHkgamF2YVBhY2thZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBDIyBuYW1lc3BhY2UgdG8gdXNlIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGUuIFJlcXVpcmVkIGlmIGBsYW5ndWFnZWAgaXMgYGNzaGFycGAuXG4gICAqL1xuICByZWFkb25seSBjc2hhcnBOYW1lc3BhY2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJDb2RlKG9wdGlvbnM6IFJlbmRlckNvZGVPcHRpb25zKSB7XG4gIGNvbnN0IHNyY21ha29wdHM6IE9wdGlvbnMgPSB7XG4gICAgZGVwczogY2RrRGVwcy5tYXAoeCA9PiBwYXRoLmRpcm5hbWUocmVxdWlyZS5yZXNvbHZlKGAke3h9L3BhY2thZ2UuanNvbmApKSksXG4gIH07XG5cbiAgc3dpdGNoIChvcHRpb25zLmxhbmd1YWdlKSB7XG4gICAgY2FzZSAndHlwZXNjcmlwdCc6XG4gICAgICBhd2FpdCBmcy5ta2RpcihvcHRpb25zLm91dGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICByZXR1cm4gZnMuY29weUZpbGUocGF0aC5qb2luKG9wdGlvbnMuc3JjZGlyLCAnaW5kZXgudHMnKSwgcGF0aC5qb2luKG9wdGlvbnMub3V0ZGlyLCBgJHtjYXNldXRpbC5oZWFkZXIob3B0aW9ucy50eXBlTmFtZSkudG9Mb3dlckNhc2UoKX0udHNgKSk7XG5cbiAgICBjYXNlICdweXRob24nOlxuICAgICAgc3JjbWFrb3B0cy5weXRob24gPSB7XG4gICAgICAgIG91dGRpcjogb3B0aW9ucy5vdXRkaXIsXG4gICAgICAgIG1vZHVsZU5hbWU6IGNhc2V1dGlsLnNuYWtlKG9wdGlvbnMudHlwZU5hbWUpLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnY3NoYXJwJzpcbiAgICAgIHNyY21ha29wdHMuY3NoYXJwID0ge1xuICAgICAgICBvdXRkaXI6IG9wdGlvbnMub3V0ZGlyLFxuICAgICAgICBuYW1lc3BhY2U6IG9wdGlvbnMuY3NoYXJwTmFtZXNwYWNlISxcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2phdmEnOlxuICAgICAgaWYgKCFvcHRpb25zLmphdmFQYWNrYWdlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSmF2YSBwYWNrYWdlIG5hbWUgKGAtLWphdmEtcGFja2FnZWApIG11c3QgYmUgc3BlY2lmaWVkIChlLmcuIFwiY29tLmZvby5iYXIubXkucmVzb3VyY2VcIiknKTtcbiAgICAgIH1cblxuICAgICAgc3JjbWFrb3B0cy5qYXZhID0ge1xuICAgICAgICBvdXRkaXI6IG9wdGlvbnMub3V0ZGlyLFxuICAgICAgICBwYWNrYWdlOiBvcHRpb25zLmphdmFQYWNrYWdlLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnZ29sYW5nJzpcbiAgICAgIGlmICghb3B0aW9ucy5nb01vZHVsZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dvIG1vZHVsZSBuYW1lICgtLWdvLW1vZHVsZSkgaXMgcmVxdWlyZWQgKGUuZy4gXCJnaXRodWIuY29tL2Zvby9iYXJcIiknKTtcbiAgICAgIH1cblxuICAgICAgc3JjbWFrb3B0cy5nb2xhbmcgPSB7XG4gICAgICAgIG91dGRpcjogb3B0aW9ucy5vdXRkaXIsXG4gICAgICAgIHBhY2thZ2VOYW1lOiBjYXNldXRpbC5sb3dlcihvcHRpb25zLnR5cGVOYW1lLCAnLScpLFxuICAgICAgICBtb2R1bGVOYW1lOiBvcHRpb25zLmdvTW9kdWxlLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgbGFuZ3VhZ2U6ICR7b3B0aW9ucy5sYW5ndWFnZX1gKTtcbiAgfVxuXG4gIGF3YWl0IHNyY21hayhvcHRpb25zLnNyY2Rpciwgc3JjbWFrb3B0cyk7XG59XG4iXX0=
@@ -34,5 +34,6 @@ export declare class ServiceCatalogProvisioningConstructGenerator {
34
34
  private resolveEnumValue;
35
35
  private emitEnums;
36
36
  private emitProductDescription;
37
+ private emitSynthesizerValidation;
37
38
  private emitConstructClass;
38
39
  }
@@ -199,6 +199,14 @@ class ServiceCatalogProvisioningConstructGenerator {
199
199
  product.Owner && code.line(` * Owner: ${product.Owner}`);
200
200
  code.line(' */');
201
201
  }
202
+ emitSynthesizerValidation(code) {
203
+ code.line('const synthesizer: cdk.IStackSynthesizer = cdk.Stack.of(this).synthesizer;');
204
+ code.line('const supportedSynthesizers = [cdk.CliCredentialsStackSynthesizer, cdk.LegacyStackSynthesizer, cdk.BootstraplessSynthesizer];');
205
+ code.line();
206
+ code.line('if (!supportedSynthesizers.some(supportedSynthesizer => synthesizer instanceof supportedSynthesizer)) {');
207
+ code.line(' throw Error(`${synthesizer.constructor.name} not supported. Please use one of the supported synthesizers: ${supportedSynthesizers.map(synth => synth.name)}`);');
208
+ code.line('}');
209
+ }
202
210
  emitConstructClass(code) {
203
211
  var _a;
204
212
  this.emitProductDescription(code);
@@ -224,7 +232,9 @@ class ServiceCatalogProvisioningConstructGenerator {
224
232
  code.line(' */');
225
233
  code.openBlock(`constructor(scope: constructs.Construct, id: string${this.hasParameters ? ', props: ' + this.propsStructName : ''})`);
226
234
  code.line('super(scope, id);');
227
- code.line('');
235
+ code.line();
236
+ this.emitSynthesizerValidation(code);
237
+ code.line();
228
238
  code.line("this.provisionedProduct = new sc.CfnCloudFormationProvisionedProduct(this, 'Resource', {");
229
239
  code.line(' provisionedProductName: this.node.id,');
230
240
  if (this.productDataAggregate.provisioningArtifact.Name) {
@@ -263,4 +273,4 @@ class ServiceCatalogProvisioningConstructGenerator {
263
273
  }
264
274
  }
265
275
  exports.ServiceCatalogProvisioningConstructGenerator = ServiceCatalogProvisioningConstructGenerator;
266
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY29uc3RydWN0LWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zYy1jb25zdHJ1Y3QtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsK0JBQStDO0FBQy9DLCtDQUFpQztBQVdqQzs7R0FFRztBQUNILE1BQWEsNENBQTRDO0lBY3ZEOztPQUVHO0lBQ0gsWUFBWSxXQUFpQztRQUMzQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsV0FBVyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFBLGFBQU0sRUFBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLElBQUssQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsT0FBTyxDQUFDLENBQUM7UUFDOUYsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDbkMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBa0IsQ0FBQztRQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsOEJBQStCLENBQUM7UUFDbkYsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLDhCQUErQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDakcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENB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Q0FBQyxDQUFDO1NBQzNCO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLDBEQUEwRCxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLElBQUksQ0FBQywrSEFBK0gsQ0FBQyxDQUFDO1FBQzNJLElBQUksQ0FBQyxJQUFJLENBQUMsbUdBQW1HLENBQUMsQ0FBQztRQUMvRyxNQUFBLElBQUksQ0FBQyxVQUFVLDBDQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBQSxZQUFLLEVBQUMsTUFBTSxDQUFDLEdBQUksQ0FBQyxtRkFBbUYsTUFBTSxDQUFDLEdBQUksTUFBTSxDQUFDLENBQUM7UUFDNUksQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEIsd0JBQXdCO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0NBQ0Y7QUFwUUQsb0dBb1FDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvdmlzaW9uaW5nQXJ0aWZhY3RPdXRwdXRzLCBQcm92aXNpb25pbmdBcnRpZmFjdFBhcmFtZXRlcnMgfSBmcm9tICdhd3Mtc2RrL2NsaWVudHMvc2VydmljZWNhdGFsb2cnO1xuaW1wb3J0IHsgcGFzY2FsLCBjYW1lbCwgY29uc3RhbnQgfSBmcm9tICdjYXNlJztcbmltcG9ydCAqIGFzIGoyaiBmcm9tICdqc29uMmpzaWknO1xuaW1wb3J0IHsgUHJvZHVjdERhdGFBZ2dyZWdhdGUgfSBmcm9tICcuL3NlcnZpY2UtY2F0YWxvZyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBlbnVtIGZvciBDbG91ZEZvcm1hdGlvbiBwYXJhbWV0ZXIgaW5wdXRzIHRoYXQgaGF2ZSBwcmVkZWZpbmVkIGFsbG93ZWQgdmFsdWVzLlxuICovXG50eXBlIEVudW1EZWZpbml0aW9uID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGFsbG93ZWRWYWx1ZXM6IHN0cmluZ1tdO1xufTtcblxuLyoqXG4gKiBHZW5lcmF0b3IgdG8gZW1pdCBjbGFzc2VzIGFuZCBpbmZvcm1hdGlvbiBvbiBwcm92aXNpb25pbmcgZGV0YWlscyBmb3IgYSBwcm9kdWN0LlxuICovXG5leHBvcnQgY2xhc3MgU2VydmljZUNhdGFsb2dQcm92aXNpb25pbmdDb25zdHJ1Y3RHZW5lcmF0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3REYXRhQWdncmVnYXRlOiBQcm9kdWN0RGF0YUFnZ3JlZ2F0ZTtcbiAgcHJpdmF0ZSByZWFkb25seSBoYXNQYXJhbWV0ZXJzOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IHNhbml0aXplZFR5cGVOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2VBdHRyaWJ1dGVzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25zdHJ1Y3RDbGFzc05hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBwcm9wc1N0cnVjdE5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBlbnVtczogRW51bURlZmluaXRpb25bXTtcbiAgcHJpdmF0ZSByZWFkb25seSBwYXJhbWV0ZXJzOiBQcm92aXNpb25pbmdBcnRpZmFjdFBhcmFtZXRlcnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEF0dHJpYnV0ZXM6IFNldDxzdHJpbmc+O1xuICBwcml2YXRlIHJlYWRvbmx5IG91dHB1dEtleXM6IFByb3Zpc2lvbmluZ0FydGlmYWN0T3V0cHV0cztcbiAgcHJpdmF0ZSByZWFkb25seSBvdXRwdXREZXNjcmlwdGlvbnM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWR9O1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gcHJvZHVjdERhdGEgdGhlIGFnZ3JlZ2F0ZSBkZXRhaWxzIG9uIGEgcHJvZHVjdCB3aXRoIGluZm9ybWF0aW9uIG9uIGlucHV0cyBhbmQgb3V0cHV0cyBvZiB0aGUgdGVtcGxhdGUuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9kdWN0RGF0YTogUHJvZHVjdERhdGFBZ2dyZWdhdGUpIHtcbiAgICB0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlID0gcHJvZHVjdERhdGE7XG4gICAgdGhpcy5zYW5pdGl6ZWRUeXBlTmFtZSA9IHBhc2NhbCh0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlLnByb2R1Y3QuTmFtZSEpO1xuICAgIHRoaXMuY29uc3RydWN0Q2xhc3NOYW1lID0gajJqLlR5cGVHZW5lcmF0b3Iubm9ybWFsaXplVHlwZU5hbWUodGhpcy5zYW5pdGl6ZWRUeXBlTmFtZSk7XG4gICAgdGhpcy5wcm9wc1N0cnVjdE5hbWUgPSBqMmouVHlwZUdlbmVyYXRvci5ub3JtYWxpemVUeXBlTmFtZShgJHt0aGlzLmNvbnN0cnVjdENsYXNzTmFtZX1Qcm9wc2ApO1xuICAgIHRoaXMubmFtZSA9IHRoaXMuc2FuaXRpemVkVHlwZU5hbWU7XG4gICAgdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIHRoaXMuZW51bXMgPSBuZXcgQXJyYXk8RW51bURlZmluaXRpb24+KCk7XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gdGhpcy5wcm9kdWN0RGF0YUFnZ3JlZ2F0ZS5wYXJhbXMuUHJvdmlzaW9uaW5nQXJ0aWZhY3RQYXJhbWV0ZXJzITtcbiAgICB0aGlzLmhhc1BhcmFtZXRlcnMgPSB0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlLnBhcmFtcy5Qcm92aXNpb25pbmdBcnRpZmFjdFBhcmFtZXRlcnMhLmxlbmd0aCA+IDA7XG4gICAgdGhpcy5vdXRwdXRLZXlzID0gdGhpcy5wcm9kdWN0RGF0YUFnZ3JlZ2F0ZS5wYXJhbXMuUHJvdmlzaW9uaW5nQXJ0aWZhY3RPdXRwdXRLZXlzITtcbiAgICB0aGlzLm91dHB1dERlc2NyaXB0aW9ucyA9IHRoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucGFyYW1zLlByb3Zpc2lvbmluZ0FydGlmYWN0T3V0cHV0S2V5cyEucmVkdWNlKChvYmosIGtleSkgPT4ge1xuICAgICAgb2JqW2NhbWVsKGtleS5LZXkhKV0gPSBrZXkuRGVzY3JpcHRpb247XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sIHt9IGFzIHtba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWR9KTtcblxuICAgIHRoaXMuZGVmYXVsdEF0dHJpYnV0ZXMgPSBuZXcgU2V0PHN0cmluZz4oWydwcm92aXNpb25lZFByb2R1Y3RJZCcsICdjbG91ZEZvcm1hdGlvblN0YWNrQXJuJywgJ3JlY29yZElkJ10pO1xuXG4gICAgdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMucHVzaChcbiAgICAgIC4uLnRoaXMuZGVmYXVsdEF0dHJpYnV0ZXMsXG4gICAgICAuLi50aGlzLm91dHB1dEtleXMubWFwKGtleSA9PiBjYW1lbChrZXkuS2V5ISkpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIHRoZSB0eXBlIGludG8gYSBUeXBlU2NyaXB0IGNsYXNzIGZpbGUgZGVmaW5pbmcgdGhlIHByb3BzIGFuZCB0aGUgd3JhcHBlZCBMMSBjb25zdHJ1Y3QgQVdTOjpTZXJ2aWNlQ2F0YWxvZzo6Q2xvdWRGb3JtYXRpb25Qcm92aXNpb25lZFByb2R1Y3QuXG4gICAqXG4gICAqIEByZXR1cm5zIHRoZSByZW5kZXJlZCBjbGFzcyBmaWxlIGNvbnRlbnRcbiAgICovXG4gIHB1YmxpYyByZW5kZXIoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb2RlID0gbmV3IGoyai5Db2RlKCk7XG4gICAgdGhpcy5lbWl0SW1wb3J0cyhjb2RlKTtcbiAgICB0aGlzLmVtaXRJbnRlcmZhY2UoY29kZSk7XG4gICAgdGhpcy5lbWl0QmFzZShjb2RlKTtcbiAgICBpZiAodGhpcy5oYXNQYXJhbWV0ZXJzKSB7XG4gICAgICB0aGlzLmVtaXRQYXJhbWV0ZXJNYXAoY29kZSk7XG4gICAgICB0aGlzLmVtaXREZWZpbml0aW9uVHlwZXMoY29kZSk7XG4gICAgfVxuICAgIHRoaXMuZW1pdENvbnN0cnVjdENsYXNzKGNvZGUpO1xuICAgIHRoaXMuZW51bXMubGVuZ3RoICYmIHRoaXMuZW1pdEVudW1zKGNvZGUpO1xuICAgIHJldHVybiBjb2RlLnJlbmRlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0SW1wb3J0cyhjb2RlOiBqMmouQ29kZSkge1xuICAgIGNvZGUubGluZSgnLy8gR2VuZXJhdGVkIGJ5IGNkay1pbXBvcnQnKTtcbiAgICBjb2RlLmxpbmUoXCJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1wiKTtcbiAgICBjb2RlLmxpbmUoXCJpbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1wiKTtcbiAgICBjb2RlLmxpbmUoXCJpbXBvcnQgKiBhcyBzYyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2VydmljZWNhdGFsb2cnO1wiKTtcbiAgICBjb2RlLmxpbmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEludGVyZmFjZShjb2RlOiBqMmouQ29kZSkge1xuICAgIGNvZGUub3BlbkJsb2NrKGBleHBvcnQgaW50ZXJmYWNlIEkke3RoaXMuY29uc3RydWN0Q2xhc3NOYW1lfSBleHRlbmRzIGNkay5JUmVzb3VyY2VgKTtcbiAgICB0aGlzLnJlc291cmNlQXR0cmlidXRlcy5mb3JFYWNoKGF0dHIgPT4ge1xuICAgICAgY29kZS5saW5lKGByZWFkb25seSAke2F0dHJ9OiBzdHJpbmc7YCk7XG4gICAgfSk7XG4gICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgY29kZS5saW5lKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRCYXNlKGNvZGU6IGoyai5Db2RlKSB7XG4gICAgY29kZS5vcGVuQmxvY2soYGFic3RyYWN0IGNsYXNzICR7dGhpcy5jb25zdHJ1Y3RDbGFzc05hbWV9QmFzZSBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIEkke3RoaXMuY29uc3RydWN0Q2xhc3NOYW1lfWApO1xuICAgIHRoaXMucmVzb3VyY2VBdHRyaWJ1dGVzLmZvckVhY2goYXR0ciA9PiB7XG4gICAgICBjb2RlLmxpbmUoYHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSAke2F0dHJ9OiBzdHJpbmc7YCk7XG4gICAgfSk7XG4gICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgY29kZS5saW5lKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRQYXJhbWV0ZXJzKGNvZGU6IGoyai5Db2RlKSB7XG4gICAgY29kZS5saW5lKCcgIHByb3Zpc2lvbmluZ1BhcmFtZXRlcnM6Jyk7XG4gICAgY29kZS5saW5lKCcgICAgT2JqZWN0LmVudHJpZXMocHJvcHMpLm1hcCgoW2ssIHZdKSA9PiB7Jyk7XG4gICAgY29kZS5saW5lKCcgICAgICByZXR1cm4geycpO1xuICAgIGNvZGUubGluZSgnICAgICAgICBrZXk6IFBhcmFtZXRlcktleXMudmFsdWVPZihrKSBhcyBzdHJpbmcsJyk7XG4gICAgY29kZS5saW5lKCcgICAgICAgIHZhbHVlOiB2IGFzIHN0cmluZywnKTtcbiAgICBjb2RlLmxpbmUoJyAgICAgIH0nKTtcbiAgICBjb2RlLmxpbmUoJyAgICB9KSwnKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFBhcmFtZXRlck1hcChjb2RlOiBqMmouQ29kZSkge1xuICAgIGNvZGUub3BlbkJsb2NrKCdlbnVtIFBhcmFtZXRlcktleXMnKTtcbiAgICB0aGlzLnBhcmFtZXRlcnM/LmZvckVhY2gocCA9PiB7XG4gICAgICBjb2RlLmxpbmUoYCR7Y2FtZWwocC5QYXJhbWV0ZXJLZXkhKX0gPSAnJHtwLlBhcmFtZXRlcktleX0nLGApO1xuICAgIH0pO1xuICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICAgIGNvZGUubGluZSgpO1xuICAgIGNvZGUub3BlbkJsb2NrKCduYW1lc3BhY2UgUGFyYW1ldGVyS2V5cycpO1xuICAgIGNvZGUubGluZSgnY29uc3QgcmV2ZXJzZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBQYXJhbWV0ZXJLZXlzPigpOycpO1xuICAgIGNvZGUubGluZSgnT2JqZWN0LmtleXMoUGFyYW1ldGVyS2V5cykuZm9yRWFjaCgoczogc3RyaW5nKSA9PiB7Jyk7XG4gICAgY29kZS5saW5lKCcgIGNvbnN0IGUgPSAoPGFueT5QYXJhbWV0ZXJLZXlzKVtzXTsnKTtcbiAgICBjb2RlLmxpbmUoJyAgcmV2ZXJzZU1hcC5zZXQocywgZSk7Jyk7XG4gICAgY29kZS5saW5lKCd9KTsnKTtcbiAgICBjb2RlLmxpbmUoJ2V4cG9ydCBmdW5jdGlvbiB2YWx1ZU9mKHN0cjogc3RyaW5nKSB7Jyk7XG4gICAgY29kZS5saW5lKCcgIHJldHVybiByZXZlcnNlTWFwLmdldChzdHIpOycpO1xuICAgIGNvZGUubGluZSgnfScpO1xuICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0RGVmaW5pdGlvblR5cGVzKGNvZGU6IGoyai5Db2RlKSB7XG4gICAgY29kZS5vcGVuQmxvY2soYGV4cG9ydCBpbnRlcmZhY2UgJHt0aGlzLmNvbnN0cnVjdENsYXNzTmFtZX1Qcm9wc2ApO1xuICAgIHRoaXMucGFyYW1ldGVycyEuZm9yRWFjaChwYSA9PiB7XG4gICAgICBsZXQgb3B0aW9uYWwgPSAnJztcbiAgICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgICBjb2RlLmxpbmUoYCAqICR7cGFzY2FsKHBhLlBhcmFtZXRlcktleSEpfWApO1xuICAgICAgaWYgKHBhLkRlc2NyaXB0aW9uKSB7XG4gICAgICAgIGNvZGUubGluZSgnIConKTtcbiAgICAgICAgY29kZS5saW5lKGAgKiAke3BhLkRlc2NyaXB0aW9ufWApO1xuICAgICAgfVxuICAgICAgaWYgKHBhLlBhcmFtZXRlckNvbnN0cmFpbnRzPy5Db25zdHJhaW50RGVzY3JpcHRpb24pIHtcbiAgICAgICAgY29kZS5saW5lKCcgKicpO1xuICAgICAgICBjb2RlLmxpbmUoYCAqICR7cGEuUGFyYW1ldGVyQ29uc3RyYWludHM/LkNvbnN0cmFpbnREZXNjcmlwdGlvbn1gKTtcbiAgICAgIH1cbiAgICAgIGlmIChwYS5EZWZhdWx0VmFsdWUpIHtcbiAgICAgICAgb3B0aW9uYWwgKz0gJz8nO1xuICAgICAgICBjb2RlLmxpbmUoJyAqJyk7XG4gICAgICAgIGNvZGUubGluZShgICogQGRlZmF1bHQgJHtwYS5EZWZhdWx0VmFsdWV9YCk7XG4gICAgICB9XG4gICAgICBpZiAocGEuUGFyYW1ldGVyQ29uc3RyYWludHM/LkFsbG93ZWRWYWx1ZXM/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLmVudW1zLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHBhLlBhcmFtZXRlcktleSEsXG4gICAgICAgICAgYWxsb3dlZFZhbHVlczogcGEuUGFyYW1ldGVyQ29uc3RyYWludHMuQWxsb3dlZFZhbHVlcyxcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBjb2RlLmxpbmUoJyAqLycpO1xuICAgICAgY29kZS5saW5lKGByZWFkb25seSAke2NhbWVsKHBhLlBhcmFtZXRlcktleSEpfSR7b3B0aW9uYWx9OiAke3BhLlBhcmFtZXRlckNvbnN0cmFpbnRzPy5BbGxvd2VkVmFsdWVzPy5sZW5ndGggPyB0aGlzLmNvbnN0cnVjdENsYXNzTmFtZSArICcuJyArIHBhLlBhcmFtZXRlcktleSA6ICdzdHJpbmcnfTtgKTtcbiAgICAgIGNvZGUubGluZSgpO1xuICAgIH0pO1xuICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlRW51bVZhbHVlKHZhbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoTnVtYmVyKHZhbCkpIHtcbiAgICAgIHJldHVybiBjb25zdGFudChgVkFMVUVfJHt2YWx9YCk7XG4gICAgfSBlbHNlIGlmIChOdW1iZXIodmFsLmNoYXJBdCgwKSkpIHtcbiAgICAgIHJldHVybiBgJyR7Y29uc3RhbnQodmFsKX0nYDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnN0YW50KHZhbCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbWl0RW51bXMoY29kZTogajJqLkNvZGUpIHtcbiAgICBjb2RlLmxpbmUoKTtcbiAgICBjb2RlLm9wZW5CbG9jayhgZXhwb3J0IG5hbWVzcGFjZSAke3RoaXMuY29uc3RydWN0Q2xhc3NOYW1lfWApO1xuICAgIHRoaXMuZW51bXMuZm9yRWFjaCggZSA9PiB7XG4gICAgICBjb2RlLmxpbmUoKTtcbiAgICAgIGNvZGUub3BlbkJsb2NrKGBleHBvcnQgZW51bSAke2UubmFtZX1gKTtcbiAgICAgIGUuYWxsb3dlZFZhbHVlcy5mb3JFYWNoKHZhbCA9PiB7XG4gICAgICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgICAgIGNvZGUubGluZShgICogJHt2YWx9YCk7XG4gICAgICAgIGNvZGUubGluZSgnICovJyk7XG4gICAgICAgIGNvZGUubGluZShgJHt0aGlzLnJlc29sdmVFbnVtVmFsdWUodmFsKX0gPSAnJHt2YWx9JyxgKTtcbiAgICAgICAgY29kZS5saW5lKCk7XG4gICAgICB9KTtcbiAgICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICAgICAgY29kZS5saW5lKCk7XG4gICAgfSk7XG4gICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgY29kZS5saW5lKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRQcm9kdWN0RGVzY3JpcHRpb24oY29kZTogajJqLkNvZGUpIHtcbiAgICBjb25zdCBwcm9kdWN0ID0gdGhpcy5wcm9kdWN0RGF0YUFnZ3JlZ2F0ZS5wcm9kdWN0O1xuICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgY29kZS5saW5lKGAgKiAke3RoaXMuc2FuaXRpemVkVHlwZU5hbWV9YCk7XG4gICAgY29kZS5saW5lKCcgKicpO1xuICAgIGlmIChwcm9kdWN0LlNob3J0RGVzY3JpcHRpb24pIHtcbiAgICAgIGNvZGUubGluZShgICogJHtwcm9kdWN0LlNob3J0RGVzY3JpcHRpb259YCk7XG4gICAgICBjb2RlLmxpbmUoJyAqJyk7XG4gICAgfVxuICAgIHByb2R1Y3QuU3VwcG9ydERlc2NyaXB0aW9uICYmIGNvZGUubGluZShgICogJHtwcm9kdWN0LlN1cHBvcnREZXNjcmlwdGlvbn1gKTtcbiAgICBwcm9kdWN0LlN1cHBvcnRFbWFpbCAmJiBjb2RlLmxpbmUoYCAqIFN1cHBvcnQgRW1haWw6ICR7cHJvZHVjdC5TdXBwb3J0RW1haWx9YCk7XG4gICAgcHJvZHVjdC5TdXBwb3J0VXJsICYmIGNvZGUubGluZShgICogU3VwcG9ydCBVcmw6ICR7cHJvZHVjdC5TdXBwb3J0VXJsfWApO1xuICAgIHByb2R1Y3QuRGlzdHJpYnV0b3IgJiYgY29kZS5saW5lKGAgKiBEaXN0cmlidXRvcjogJHtwcm9kdWN0LkRpc3RyaWJ1dG9yfWApO1xuICAgIHByb2R1Y3QuT3duZXIgJiYgY29kZS5saW5lKGAgKiBPd25lcjogJHtwcm9kdWN0Lk93bmVyfWApO1xuICAgIGNvZGUubGluZSgnICovJyk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRDb25zdHJ1Y3RDbGFzcyhjb2RlOiBqMmouQ29kZSkge1xuICAgIHRoaXMuZW1pdFByb2R1Y3REZXNjcmlwdGlvbihjb2RlKTtcbiAgICBjb2RlLm9wZW5CbG9jayhgZXhwb3J0IGNsYXNzICR7dGhpcy5jb25zdHJ1Y3RDbGFzc05hbWV9IGV4dGVuZHMgJHt0aGlzLmNvbnN0cnVjdENsYXNzTmFtZX1CYXNlYCk7XG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHRoaXMucmVzb3VyY2VBdHRyaWJ1dGVzKSB7XG4gICAgICBpZiAodGhpcy5vdXRwdXREZXNjcmlwdGlvbnNbcHJvcF0pIHtcbiAgICAgICAgY29kZS5saW5lKCcvKionKTtcbiAgICAgICAgY29kZS5saW5lKGAgKiAke3RoaXMub3V0cHV0RGVzY3JpcHRpb25zW3Byb3BdfWApO1xuICAgICAgICBjb2RlLmxpbmUoJyAqLycpO1xuICAgICAgfVxuICAgICAgY29kZS5saW5lKGBwdWJsaWMgcmVhZG9ubHkgJHtwcm9wfTogc3RyaW5nO2ApO1xuICAgIH1cbiAgICBjb2RlLmxpbmUoJ3ByaXZhdGUgcmVhZG9ubHkgcHJvdmlzaW9uZWRQcm9kdWN0OiBzYy5DZm5DbG91ZEZvcm1hdGlvblByb3Zpc2lvbmVkUHJvZHVjdDsnKTtcbiAgICBjb2RlLmxpbmUoKTtcblxuICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgY29kZS5saW5lKGAgKiBDcmVhdGUgYSBuZXcgU2VydmljZSBDYXRhbG9nIFxcYCR7dGhpcy5zYW5pdGl6ZWRUeXBlTmFtZX1cXGAgcHJvZHVjdC5gKTtcbiAgICBjb2RlLmxpbmUoJyAqJyk7XG4gICAgY29kZS5saW5lKCcgKiBAcGFyYW0gc2NvcGUgLSBzY29wZSBpbiB3aGljaCB0aGlzIHJlc291cmNlIGlzIGRlZmluZWQnKTtcbiAgICBjb2RlLmxpbmUoJyAqIEBwYXJhbSBpZCAgICAtIHNjb3BlZCBpZCBvZiB0aGUgcmVzb3VyY2UnKTtcbiAgICBpZiAodGhpcy5oYXNQYXJhbWV0ZXJzKSB7XG4gICAgICBjb2RlLmxpbmUoJyAqIEBwYXJhbSBwcm9wcyAtIHJlc291cmNlIHByb3BlcnRpZXMnKTtcbiAgICB9XG4gICAgY29kZS5saW5lKCcgKi8nKTtcbiAgICBjb2RlLm9wZW5CbG9jayhgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nJHt0aGlzLmhhc1BhcmFtZXRlcnMgPyAnLCBwcm9wczogJyArIHRoaXMucHJvcHNTdHJ1Y3ROYW1lIDogJyd9KWApO1xuICAgIGNvZGUubGluZSgnc3VwZXIoc2NvcGUsIGlkKTsnKTtcbiAgICBjb2RlLmxpbmUoJycpO1xuICAgIGNvZGUubGluZShcInRoaXMucHJvdmlzaW9uZWRQcm9kdWN0ID0gbmV3IHNjLkNmbkNsb3VkRm9ybWF0aW9uUHJvdmlzaW9uZWRQcm9kdWN0KHRoaXMsICdSZXNvdXJjZScsIHtcIik7XG4gICAgY29kZS5saW5lKCcgIHByb3Zpc2lvbmVkUHJvZHVjdE5hbWU6IHRoaXMubm9kZS5pZCwnKTtcblxuICAgIGlmICh0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlLnByb3Zpc2lvbmluZ0FydGlmYWN0Lk5hbWUpIHtcbiAgICAgIGNvZGUubGluZShgICBwcm92aXNpb25pbmdBcnRpZmFjdE5hbWU6ICcke3RoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucHJvdmlzaW9uaW5nQXJ0aWZhY3QuTmFtZSF9JyxgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29kZS5saW5lKGAgIHByb3Zpc2lvbmluZ0FydGlmYWN0SWQ6ICcke3RoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucHJvdmlzaW9uaW5nQXJ0aWZhY3QuSWQhfScsYCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucHJvZHVjdC5OYW1lKSB7XG4gICAgICBjb2RlLmxpbmUoYCAgcHJvZHVjdE5hbWU6ICcke3RoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucHJvZHVjdC5OYW1lIX0nLGApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb2RlLmxpbmUoYCAgcHJvZHVjdElkOiAnJHt0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlLnByb2R1Y3QuUHJvZHVjdElkIX0nLGApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlLmxhdW5jaFBhdGguTmFtZSkge1xuICAgICAgY29kZS5saW5lKGAgIHBhdGhOYW1lOiAnJHt0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlLmxhdW5jaFBhdGguTmFtZSF9JyxgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29kZS5saW5lKGAgIHBhdGhJZDogJyR7dGhpcy5wcm9kdWN0RGF0YUFnZ3JlZ2F0ZS5sYXVuY2hQYXRoLklkIX0nLGApO1xuICAgIH1cblxuICAgIC8vIGdlbmVyYXRlIHByb3Zpc2lvbmluZyBwYXJhbWV0ZXJzIGZyb20gcHJvcHMgdG8gYXZvaWQgcmVkdW5kYW50IGRlZmF1bHRzXG4gICAgaWYgKHRoaXMuaGFzUGFyYW1ldGVycykge1xuICAgICAgdGhpcy5lbWl0UGFyYW1ldGVycyhjb2RlKTtcbiAgICB9XG5cbiAgICBjb2RlLmxpbmUoJ30pOycpO1xuICAgIGNvZGUubGluZSgpO1xuICAgIGNvZGUubGluZSgndGhpcy5wcm92aXNpb25lZFByb2R1Y3RJZCA9IHRoaXMucHJvdmlzaW9uZWRQcm9kdWN0LnJlZjsnKTtcbiAgICBjb2RlLmxpbmUoXCJ0aGlzLmNsb3VkRm9ybWF0aW9uU3RhY2tBcm4gPSBjZGsuVG9rZW4uYXNTdHJpbmcoY2RrLkZuLmdldEF0dCh0aGlzLnByb3Zpc2lvbmVkUHJvZHVjdC5sb2dpY2FsSWQsICdDbG91ZGZvcm1hdGlvblN0YWNrQXJuJykpO1wiKTtcbiAgICBjb2RlLmxpbmUoXCJ0aGlzLnJlY29yZElkID0gY2RrLlRva2VuLmFzU3RyaW5nKGNkay5Gbi5nZXRBdHQodGhpcy5wcm92aXNpb25lZFByb2R1Y3QubG9naWNhbElkLCAnUmVjb3JkSWQnKSk7XCIpO1xuICAgIHRoaXMub3V0cHV0S2V5cz8uZm9yRWFjaChvdXRwdXQgPT4ge1xuICAgICAgY29kZS5saW5lKGB0aGlzLiR7Y2FtZWwob3V0cHV0LktleSEpfSA9IGNkay5Ub2tlbi5hc1N0cmluZyhjZGsuRm4uZ2V0QXR0KHRoaXMucHJvdmlzaW9uZWRQcm9kdWN0LmxvZ2ljYWxJZCwgJ091dHB1dHMuJHtvdXRwdXQuS2V5IX0nKSk7YCk7XG4gICAgfSk7XG4gICAgY29kZS5jbG9zZUJsb2NrKCk7XG5cbiAgICAvLyBDbG9zZSBjb25zdHJ1Y3QgY2xhc3NcbiAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgfVxufVxuIl19
276
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY29uc3RydWN0LWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zYy1jb25zdHJ1Y3QtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsK0JBQStDO0FBQy9DLCtDQUFpQztBQVdqQzs7R0FFRztBQUNILE1BQWEsNENBQTRDO0lBY3ZEOztPQUVHO0lBQ0gsWUFBWSxXQUFpQztRQUMzQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsV0FBVyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFBLGFBQU0sRUFBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLElBQUssQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsT0FBTyxDQUFDLENBQUM7UUFDOUYsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDbkMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBa0IsQ0FBQztRQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsOEJBQStCLENBQUM7UUFDbkYsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLDhCQUErQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDakcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENB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aXNpb25pbmdBcnRpZmFjdFBhcmFtZXRlcnMgfSBmcm9tICdhd3Mtc2RrL2NsaWVudHMvc2VydmljZWNhdGFsb2cnO1xuaW1wb3J0IHsgcGFzY2FsLCBjYW1lbCwgY29uc3RhbnQgfSBmcm9tICdjYXNlJztcbmltcG9ydCAqIGFzIGoyaiBmcm9tICdqc29uMmpzaWknO1xuaW1wb3J0IHsgUHJvZHVjdERhdGFBZ2dyZWdhdGUgfSBmcm9tICcuL3NlcnZpY2UtY2F0YWxvZyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBlbnVtIGZvciBDbG91ZEZvcm1hdGlvbiBwYXJhbWV0ZXIgaW5wdXRzIHRoYXQgaGF2ZSBwcmVkZWZpbmVkIGFsbG93ZWQgdmFsdWVzLlxuICovXG50eXBlIEVudW1EZWZpbml0aW9uID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGFsbG93ZWRWYWx1ZXM6IHN0cmluZ1tdO1xufTtcblxuLyoqXG4gKiBHZW5lcmF0b3IgdG8gZW1pdCBjbGFzc2VzIGFuZCBpbmZvcm1hdGlvbiBvbiBwcm92aXNpb25pbmcgZGV0YWlscyBmb3IgYSBwcm9kdWN0LlxuICovXG5leHBvcnQgY2xhc3MgU2VydmljZUNhdGFsb2dQcm92aXNpb25pbmdDb25zdHJ1Y3RHZW5lcmF0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3REYXRhQWdncmVnYXRlOiBQcm9kdWN0RGF0YUFnZ3JlZ2F0ZTtcbiAgcHJpdmF0ZSByZWFkb25seSBoYXNQYXJhbWV0ZXJzOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IHNhbml0aXplZFR5cGVOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2VBdHRyaWJ1dGVzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25zdHJ1Y3RDbGFzc05hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBwcm9wc1N0cnVjdE5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBlbnVtczogRW51bURlZmluaXRpb25bXTtcbiAgcHJpdmF0ZSByZWFkb25seSBwYXJhbWV0ZXJzOiBQcm92aXNpb25pbmdBcnRpZmFjdFBhcmFtZXRlcnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEF0dHJpYnV0ZXM6IFNldDxzdHJpbmc+O1xuICBwcml2YXRlIHJlYWRvbmx5IG91dHB1dEtleXM6IFByb3Zpc2lvbmluZ0FydGlmYWN0T3V0cHV0cztcbiAgcHJpdmF0ZSByZWFkb25seSBvdXRwdXREZXNjcmlwdGlvbnM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWR9O1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gcHJvZHVjdERhdGEgdGhlIGFnZ3JlZ2F0ZSBkZXRhaWxzIG9uIGEgcHJvZHVjdCB3aXRoIGluZm9ybWF0aW9uIG9uIGlucHV0cyBhbmQgb3V0cHV0cyBvZiB0aGUgdGVtcGxhdGUuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9kdWN0RGF0YTogUHJvZHVjdERhdGFBZ2dyZWdhdGUpIHtcbiAgICB0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlID0gcHJvZHVjdERhdGE7XG4gICAgdGhpcy5zYW5pdGl6ZWRUeXBlTmFtZSA9IHBhc2NhbCh0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlLnByb2R1Y3QuTmFtZSEpO1xuICAgIHRoaXMuY29uc3RydWN0Q2xhc3NOYW1lID0gajJqLlR5cGVHZW5lcmF0b3Iubm9ybWFsaXplVHlwZU5hbWUodGhpcy5zYW5pdGl6ZWRUeXBlTmFtZSk7XG4gICAgdGhpcy5wcm9wc1N0cnVjdE5hbWUgPSBqMmouVHlwZUdlbmVyYXRvci5ub3JtYWxpemVUeXBlTmFtZShgJHt0aGlzLmNvbnN0cnVjdENsYXNzTmFtZX1Qcm9wc2ApO1xuICAgIHRoaXMubmFtZSA9IHRoaXMuc2FuaXRpemVkVHlwZU5hbWU7XG4gICAgdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIHRoaXMuZW51bXMgPSBuZXcgQXJyYXk8RW51bURlZmluaXRpb24+KCk7XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gdGhpcy5wcm9kdWN0RGF0YUFnZ3JlZ2F0ZS5wYXJhbXMuUHJvdmlzaW9uaW5nQXJ0aWZhY3RQYXJhbWV0ZXJzITtcbiAgICB0aGlzLmhhc1BhcmFtZXRlcnMgPSB0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlLnBhcmFtcy5Qcm92aXNpb25pbmdBcnRpZmFjdFBhcmFtZXRlcnMhLmxlbmd0aCA+IDA7XG4gICAgdGhpcy5vdXRwdXRLZXlzID0gdGhpcy5wcm9kdWN0RGF0YUFnZ3JlZ2F0ZS5wYXJhbXMuUHJvdmlzaW9uaW5nQXJ0aWZhY3RPdXRwdXRLZXlzITtcbiAgICB0aGlzLm91dHB1dERlc2NyaXB0aW9ucyA9IHRoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucGFyYW1zLlByb3Zpc2lvbmluZ0FydGlmYWN0T3V0cHV0S2V5cyEucmVkdWNlKChvYmosIGtleSkgPT4ge1xuICAgICAgb2JqW2NhbWVsKGtleS5LZXkhKV0gPSBrZXkuRGVzY3JpcHRpb247XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sIHt9IGFzIHtba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWR9KTtcblxuICAgIHRoaXMuZGVmYXVsdEF0dHJpYnV0ZXMgPSBuZXcgU2V0PHN0cmluZz4oWydwcm92aXNpb25lZFByb2R1Y3RJZCcsICdjbG91ZEZvcm1hdGlvblN0YWNrQXJuJywgJ3JlY29yZElkJ10pO1xuXG4gICAgdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMucHVzaChcbiAgICAgIC4uLnRoaXMuZGVmYXVsdEF0dHJpYnV0ZXMsXG4gICAgICAuLi50aGlzLm91dHB1dEtleXMubWFwKGtleSA9PiBjYW1lbChrZXkuS2V5ISkpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIHRoZSB0eXBlIGludG8gYSBUeXBlU2NyaXB0IGNsYXNzIGZpbGUgZGVmaW5pbmcgdGhlIHByb3BzIGFuZCB0aGUgd3JhcHBlZCBMMSBjb25zdHJ1Y3QgQVdTOjpTZXJ2aWNlQ2F0YWxvZzo6Q2xvdWRGb3JtYXRpb25Qcm92aXNpb25lZFByb2R1Y3QuXG4gICAqXG4gICAqIEByZXR1cm5zIHRoZSByZW5kZXJlZCBjbGFzcyBmaWxlIGNvbnRlbnRcbiAgICovXG4gIHB1YmxpYyByZW5kZXIoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb2RlID0gbmV3IGoyai5Db2RlKCk7XG4gICAgdGhpcy5lbWl0SW1wb3J0cyhjb2RlKTtcbiAgICB0aGlzLmVtaXRJbnRlcmZhY2UoY29kZSk7XG4gICAgdGhpcy5lbWl0QmFzZShjb2RlKTtcbiAgICBpZiAodGhpcy5oYXNQYXJhbWV0ZXJzKSB7XG4gICAgICB0aGlzLmVtaXRQYXJhbWV0ZXJNYXAoY29kZSk7XG4gICAgICB0aGlzLmVtaXREZWZpbml0aW9uVHlwZXMoY29kZSk7XG4gICAgfVxuICAgIHRoaXMuZW1pdENvbnN0cnVjdENsYXNzKGNvZGUpO1xuICAgIHRoaXMuZW51bXMubGVuZ3RoICYmIHRoaXMuZW1pdEVudW1zKGNvZGUpO1xuICAgIHJldHVybiBjb2RlLnJlbmRlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0SW1wb3J0cyhjb2RlOiBqMmouQ29kZSkge1xuICAgIGNvZGUubGluZSgnLy8gR2VuZXJhdGVkIGJ5IGNkay1pbXBvcnQnKTtcbiAgICBjb2RlLmxpbmUoXCJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1wiKTtcbiAgICBjb2RlLmxpbmUoXCJpbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1wiKTtcbiAgICBjb2RlLmxpbmUoXCJpbXBvcnQgKiBhcyBzYyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2VydmljZWNhdGFsb2cnO1wiKTtcbiAgICBjb2RlLmxpbmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEludGVyZmFjZShjb2RlOiBqMmouQ29kZSkge1xuICAgIGNvZGUub3BlbkJsb2NrKGBleHBvcnQgaW50ZXJmYWNlIEkke3RoaXMuY29uc3RydWN0Q2xhc3NOYW1lfSBleHRlbmRzIGNkay5JUmVzb3VyY2VgKTtcbiAgICB0aGlzLnJlc291cmNlQXR0cmlidXRlcy5mb3JFYWNoKGF0dHIgPT4ge1xuICAgICAgY29kZS5saW5lKGByZWFkb25seSAke2F0dHJ9OiBzdHJpbmc7YCk7XG4gICAgfSk7XG4gICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgY29kZS5saW5lKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRCYXNlKGNvZGU6IGoyai5Db2RlKSB7XG4gICAgY29kZS5vcGVuQmxvY2soYGFic3RyYWN0IGNsYXNzICR7dGhpcy5jb25zdHJ1Y3RDbGFzc05hbWV9QmFzZSBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIEkke3RoaXMuY29uc3RydWN0Q2xhc3NOYW1lfWApO1xuICAgIHRoaXMucmVzb3VyY2VBdHRyaWJ1dGVzLmZvckVhY2goYXR0ciA9PiB7XG4gICAgICBjb2RlLmxpbmUoYHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSAke2F0dHJ9OiBzdHJpbmc7YCk7XG4gICAgfSk7XG4gICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgY29kZS5saW5lKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRQYXJhbWV0ZXJzKGNvZGU6IGoyai5Db2RlKSB7XG4gICAgY29kZS5saW5lKCcgIHByb3Zpc2lvbmluZ1BhcmFtZXRlcnM6Jyk7XG4gICAgY29kZS5saW5lKCcgICAgT2JqZWN0LmVudHJpZXMocHJvcHMpLm1hcCgoW2ssIHZdKSA9PiB7Jyk7XG4gICAgY29kZS5saW5lKCcgICAgICByZXR1cm4geycpO1xuICAgIGNvZGUubGluZSgnICAgICAgICBrZXk6IFBhcmFtZXRlcktleXMudmFsdWVPZihrKSBhcyBzdHJpbmcsJyk7XG4gICAgY29kZS5saW5lKCcgICAgICAgIHZhbHVlOiB2IGFzIHN0cmluZywnKTtcbiAgICBjb2RlLmxpbmUoJyAgICAgIH0nKTtcbiAgICBjb2RlLmxpbmUoJyAgICB9KSwnKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFBhcmFtZXRlck1hcChjb2RlOiBqMmouQ29kZSkge1xuICAgIGNvZGUub3BlbkJsb2NrKCdlbnVtIFBhcmFtZXRlcktleXMnKTtcbiAgICB0aGlzLnBhcmFtZXRlcnM/LmZvckVhY2gocCA9PiB7XG4gICAgICBjb2RlLmxpbmUoYCR7Y2FtZWwocC5QYXJhbWV0ZXJLZXkhKX0gPSAnJHtwLlBhcmFtZXRlcktleX0nLGApO1xuICAgIH0pO1xuICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICAgIGNvZGUubGluZSgpO1xuICAgIGNvZGUub3BlbkJsb2NrKCduYW1lc3BhY2UgUGFyYW1ldGVyS2V5cycpO1xuICAgIGNvZGUubGluZSgnY29uc3QgcmV2ZXJzZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBQYXJhbWV0ZXJLZXlzPigpOycpO1xuICAgIGNvZGUubGluZSgnT2JqZWN0LmtleXMoUGFyYW1ldGVyS2V5cykuZm9yRWFjaCgoczogc3RyaW5nKSA9PiB7Jyk7XG4gICAgY29kZS5saW5lKCcgIGNvbnN0IGUgPSAoPGFueT5QYXJhbWV0ZXJLZXlzKVtzXTsnKTtcbiAgICBjb2RlLmxpbmUoJyAgcmV2ZXJzZU1hcC5zZXQocywgZSk7Jyk7XG4gICAgY29kZS5saW5lKCd9KTsnKTtcbiAgICBjb2RlLmxpbmUoJ2V4cG9ydCBmdW5jdGlvbiB2YWx1ZU9mKHN0cjogc3RyaW5nKSB7Jyk7XG4gICAgY29kZS5saW5lKCcgIHJldHVybiByZXZlcnNlTWFwLmdldChzdHIpOycpO1xuICAgIGNvZGUubGluZSgnfScpO1xuICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0RGVmaW5pdGlvblR5cGVzKGNvZGU6IGoyai5Db2RlKSB7XG4gICAgY29kZS5vcGVuQmxvY2soYGV4cG9ydCBpbnRlcmZhY2UgJHt0aGlzLmNvbnN0cnVjdENsYXNzTmFtZX1Qcm9wc2ApO1xuICAgIHRoaXMucGFyYW1ldGVycyEuZm9yRWFjaChwYSA9PiB7XG4gICAgICBsZXQgb3B0aW9uYWwgPSAnJztcbiAgICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgICBjb2RlLmxpbmUoYCAqICR7cGFzY2FsKHBhLlBhcmFtZXRlcktleSEpfWApO1xuICAgICAgaWYgKHBhLkRlc2NyaXB0aW9uKSB7XG4gICAgICAgIGNvZGUubGluZSgnIConKTtcbiAgICAgICAgY29kZS5saW5lKGAgKiAke3BhLkRlc2NyaXB0aW9ufWApO1xuICAgICAgfVxuICAgICAgaWYgKHBhLlBhcmFtZXRlckNvbnN0cmFpbnRzPy5Db25zdHJhaW50RGVzY3JpcHRpb24pIHtcbiAgICAgICAgY29kZS5saW5lKCcgKicpO1xuICAgICAgICBjb2RlLmxpbmUoYCAqICR7cGEuUGFyYW1ldGVyQ29uc3RyYWludHM/LkNvbnN0cmFpbnREZXNjcmlwdGlvbn1gKTtcbiAgICAgIH1cbiAgICAgIGlmIChwYS5EZWZhdWx0VmFsdWUpIHtcbiAgICAgICAgb3B0aW9uYWwgKz0gJz8nO1xuICAgICAgICBjb2RlLmxpbmUoJyAqJyk7XG4gICAgICAgIGNvZGUubGluZShgICogQGRlZmF1bHQgJHtwYS5EZWZhdWx0VmFsdWV9YCk7XG4gICAgICB9XG4gICAgICBpZiAocGEuUGFyYW1ldGVyQ29uc3RyYWludHM/LkFsbG93ZWRWYWx1ZXM/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLmVudW1zLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHBhLlBhcmFtZXRlcktleSEsXG4gICAgICAgICAgYWxsb3dlZFZhbHVlczogcGEuUGFyYW1ldGVyQ29uc3RyYWludHMuQWxsb3dlZFZhbHVlcyxcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBjb2RlLmxpbmUoJyAqLycpO1xuICAgICAgY29kZS5saW5lKGByZWFkb25seSAke2NhbWVsKHBhLlBhcmFtZXRlcktleSEpfSR7b3B0aW9uYWx9OiAke3BhLlBhcmFtZXRlckNvbnN0cmFpbnRzPy5BbGxvd2VkVmFsdWVzPy5sZW5ndGggPyB0aGlzLmNvbnN0cnVjdENsYXNzTmFtZSArICcuJyArIHBhLlBhcmFtZXRlcktleSA6ICdzdHJpbmcnfTtgKTtcbiAgICAgIGNvZGUubGluZSgpO1xuICAgIH0pO1xuICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlRW51bVZhbHVlKHZhbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoTnVtYmVyKHZhbCkpIHtcbiAgICAgIHJldHVybiBjb25zdGFudChgVkFMVUVfJHt2YWx9YCk7XG4gICAgfSBlbHNlIGlmIChOdW1iZXIodmFsLmNoYXJBdCgwKSkpIHtcbiAgICAgIHJldHVybiBgJyR7Y29uc3RhbnQodmFsKX0nYDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnN0YW50KHZhbCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbWl0RW51bXMoY29kZTogajJqLkNvZGUpIHtcbiAgICBjb2RlLmxpbmUoKTtcbiAgICBjb2RlLm9wZW5CbG9jayhgZXhwb3J0IG5hbWVzcGFjZSAke3RoaXMuY29uc3RydWN0Q2xhc3NOYW1lfWApO1xuICAgIHRoaXMuZW51bXMuZm9yRWFjaCggZSA9PiB7XG4gICAgICBjb2RlLmxpbmUoKTtcbiAgICAgIGNvZGUub3BlbkJsb2NrKGBleHBvcnQgZW51bSAke2UubmFtZX1gKTtcbiAgICAgIGUuYWxsb3dlZFZhbHVlcy5mb3JFYWNoKHZhbCA9PiB7XG4gICAgICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgICAgIGNvZGUubGluZShgICogJHt2YWx9YCk7XG4gICAgICAgIGNvZGUubGluZSgnICovJyk7XG4gICAgICAgIGNvZGUubGluZShgJHt0aGlzLnJlc29sdmVFbnVtVmFsdWUodmFsKX0gPSAnJHt2YWx9JyxgKTtcbiAgICAgICAgY29kZS5saW5lKCk7XG4gICAgICB9KTtcbiAgICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICAgICAgY29kZS5saW5lKCk7XG4gICAgfSk7XG4gICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgY29kZS5saW5lKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRQcm9kdWN0RGVzY3JpcHRpb24oY29kZTogajJqLkNvZGUpIHtcbiAgICBjb25zdCBwcm9kdWN0ID0gdGhpcy5wcm9kdWN0RGF0YUFnZ3JlZ2F0ZS5wcm9kdWN0O1xuICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgY29kZS5saW5lKGAgKiAke3RoaXMuc2FuaXRpemVkVHlwZU5hbWV9YCk7XG4gICAgY29kZS5saW5lKCcgKicpO1xuICAgIGlmIChwcm9kdWN0LlNob3J0RGVzY3JpcHRpb24pIHtcbiAgICAgIGNvZGUubGluZShgICogJHtwcm9kdWN0LlNob3J0RGVzY3JpcHRpb259YCk7XG4gICAgICBjb2RlLmxpbmUoJyAqJyk7XG4gICAgfVxuICAgIHByb2R1Y3QuU3VwcG9ydERlc2NyaXB0aW9uICYmIGNvZGUubGluZShgICogJHtwcm9kdWN0LlN1cHBvcnREZXNjcmlwdGlvbn1gKTtcbiAgICBwcm9kdWN0LlN1cHBvcnRFbWFpbCAmJiBjb2RlLmxpbmUoYCAqIFN1cHBvcnQgRW1haWw6ICR7cHJvZHVjdC5TdXBwb3J0RW1haWx9YCk7XG4gICAgcHJvZHVjdC5TdXBwb3J0VXJsICYmIGNvZGUubGluZShgICogU3VwcG9ydCBVcmw6ICR7cHJvZHVjdC5TdXBwb3J0VXJsfWApO1xuICAgIHByb2R1Y3QuRGlzdHJpYnV0b3IgJiYgY29kZS5saW5lKGAgKiBEaXN0cmlidXRvcjogJHtwcm9kdWN0LkRpc3RyaWJ1dG9yfWApO1xuICAgIHByb2R1Y3QuT3duZXIgJiYgY29kZS5saW5lKGAgKiBPd25lcjogJHtwcm9kdWN0Lk93bmVyfWApO1xuICAgIGNvZGUubGluZSgnICovJyk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRTeW50aGVzaXplclZhbGlkYXRpb24oY29kZTogajJqLkNvZGUpIHtcbiAgICBjb2RlLmxpbmUoJ2NvbnN0IHN5bnRoZXNpemVyOiBjZGsuSVN0YWNrU3ludGhlc2l6ZXIgPSBjZGsuU3RhY2sub2YodGhpcykuc3ludGhlc2l6ZXI7Jyk7XG4gICAgY29kZS5saW5lKCdjb25zdCBzdXBwb3J0ZWRTeW50aGVzaXplcnMgPSBbY2RrLkNsaUNyZWRlbnRpYWxzU3RhY2tTeW50aGVzaXplciwgY2RrLkxlZ2FjeVN0YWNrU3ludGhlc2l6ZXIsIGNkay5Cb290c3RyYXBsZXNzU3ludGhlc2l6ZXJdOycpO1xuICAgIGNvZGUubGluZSgpO1xuICAgIGNvZGUubGluZSgnaWYgKCFzdXBwb3J0ZWRTeW50aGVzaXplcnMuc29tZShzdXBwb3J0ZWRTeW50aGVzaXplciA9PiBzeW50aGVzaXplciBpbnN0YW5jZW9mIHN1cHBvcnRlZFN5bnRoZXNpemVyKSkgeycpO1xuICAgIGNvZGUubGluZSgnICB0aHJvdyBFcnJvcihgJHtzeW50aGVzaXplci5jb25zdHJ1Y3Rvci5uYW1lfSBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgdXNlIG9uZSBvZiB0aGUgc3VwcG9ydGVkIHN5bnRoZXNpemVyczogJHtzdXBwb3J0ZWRTeW50aGVzaXplcnMubWFwKHN5bnRoID0+IHN5bnRoLm5hbWUpfWApOycpO1xuICAgIGNvZGUubGluZSgnfScpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0Q29uc3RydWN0Q2xhc3MoY29kZTogajJqLkNvZGUpIHtcbiAgICB0aGlzLmVtaXRQcm9kdWN0RGVzY3JpcHRpb24oY29kZSk7XG4gICAgY29kZS5vcGVuQmxvY2soYGV4cG9ydCBjbGFzcyAke3RoaXMuY29uc3RydWN0Q2xhc3NOYW1lfSBleHRlbmRzICR7dGhpcy5jb25zdHJ1Y3RDbGFzc05hbWV9QmFzZWApO1xuICAgIGZvciAoY29uc3QgcHJvcCBvZiB0aGlzLnJlc291cmNlQXR0cmlidXRlcykge1xuICAgICAgaWYgKHRoaXMub3V0cHV0RGVzY3JpcHRpb25zW3Byb3BdKSB7XG4gICAgICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgICAgIGNvZGUubGluZShgICogJHt0aGlzLm91dHB1dERlc2NyaXB0aW9uc1twcm9wXX1gKTtcbiAgICAgICAgY29kZS5saW5lKCcgKi8nKTtcbiAgICAgIH1cbiAgICAgIGNvZGUubGluZShgcHVibGljIHJlYWRvbmx5ICR7cHJvcH06IHN0cmluZztgKTtcbiAgICB9XG4gICAgY29kZS5saW5lKCdwcml2YXRlIHJlYWRvbmx5IHByb3Zpc2lvbmVkUHJvZHVjdDogc2MuQ2ZuQ2xvdWRGb3JtYXRpb25Qcm92aXNpb25lZFByb2R1Y3Q7Jyk7XG4gICAgY29kZS5saW5lKCk7XG5cbiAgICBjb2RlLmxpbmUoJy8qKicpO1xuICAgIGNvZGUubGluZShgICogQ3JlYXRlIGEgbmV3IFNlcnZpY2UgQ2F0YWxvZyBcXGAke3RoaXMuc2FuaXRpemVkVHlwZU5hbWV9XFxgIHByb2R1Y3QuYCk7XG4gICAgY29kZS5saW5lKCcgKicpO1xuICAgIGNvZGUubGluZSgnICogQHBhcmFtIHNjb3BlIC0gc2NvcGUgaW4gd2hpY2ggdGhpcyByZXNvdXJjZSBpcyBkZWZpbmVkJyk7XG4gICAgY29kZS5saW5lKCcgKiBAcGFyYW0gaWQgICAgLSBzY29wZWQgaWQgb2YgdGhlIHJlc291cmNlJyk7XG4gICAgaWYgKHRoaXMuaGFzUGFyYW1ldGVycykge1xuICAgICAgY29kZS5saW5lKCcgKiBAcGFyYW0gcHJvcHMgLSByZXNvdXJjZSBwcm9wZXJ0aWVzJyk7XG4gICAgfVxuICAgIGNvZGUubGluZSgnICovJyk7XG4gICAgY29kZS5vcGVuQmxvY2soYGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZyR7dGhpcy5oYXNQYXJhbWV0ZXJzID8gJywgcHJvcHM6ICcgKyB0aGlzLnByb3BzU3RydWN0TmFtZSA6ICcnfSlgKTtcbiAgICBjb2RlLmxpbmUoJ3N1cGVyKHNjb3BlLCBpZCk7Jyk7XG4gICAgY29kZS5saW5lKCk7XG4gICAgdGhpcy5lbWl0U3ludGhlc2l6ZXJWYWxpZGF0aW9uKGNvZGUpO1xuICAgIGNvZGUubGluZSgpO1xuICAgIGNvZGUubGluZShcInRoaXMucHJvdmlzaW9uZWRQcm9kdWN0ID0gbmV3IHNjLkNmbkNsb3VkRm9ybWF0aW9uUHJvdmlzaW9uZWRQcm9kdWN0KHRoaXMsICdSZXNvdXJjZScsIHtcIik7XG4gICAgY29kZS5saW5lKCcgIHByb3Zpc2lvbmVkUHJvZHVjdE5hbWU6IHRoaXMubm9kZS5pZCwnKTtcblxuICAgIGlmICh0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlLnByb3Zpc2lvbmluZ0FydGlmYWN0Lk5hbWUpIHtcbiAgICAgIGNvZGUubGluZShgICBwcm92aXNpb25pbmdBcnRpZmFjdE5hbWU6ICcke3RoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucHJvdmlzaW9uaW5nQXJ0aWZhY3QuTmFtZSF9JyxgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29kZS5saW5lKGAgIHByb3Zpc2lvbmluZ0FydGlmYWN0SWQ6ICcke3RoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucHJvdmlzaW9uaW5nQXJ0aWZhY3QuSWQhfScsYCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucHJvZHVjdC5OYW1lKSB7XG4gICAgICBjb2RlLmxpbmUoYCAgcHJvZHVjdE5hbWU6ICcke3RoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucHJvZHVjdC5OYW1lIX0nLGApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb2RlLmxpbmUoYCAgcHJvZHVjdElkOiAnJHt0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlLnByb2R1Y3QuUHJvZHVjdElkIX0nLGApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlLmxhdW5jaFBhdGguTmFtZSkge1xuICAgICAgY29kZS5saW5lKGAgIHBhdGhOYW1lOiAnJHt0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlLmxhdW5jaFBhdGguTmFtZSF9JyxgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29kZS5saW5lKGAgIHBhdGhJZDogJyR7dGhpcy5wcm9kdWN0RGF0YUFnZ3JlZ2F0ZS5sYXVuY2hQYXRoLklkIX0nLGApO1xuICAgIH1cblxuICAgIC8vIGdlbmVyYXRlIHByb3Zpc2lvbmluZyBwYXJhbWV0ZXJzIGZyb20gcHJvcHMgdG8gYXZvaWQgcmVkdW5kYW50IGRlZmF1bHRzXG4gICAgaWYgKHRoaXMuaGFzUGFyYW1ldGVycykge1xuICAgICAgdGhpcy5lbWl0UGFyYW1ldGVycyhjb2RlKTtcbiAgICB9XG5cbiAgICBjb2RlLmxpbmUoJ30pOycpO1xuICAgIGNvZGUubGluZSgpO1xuICAgIGNvZGUubGluZSgndGhpcy5wcm92aXNpb25lZFByb2R1Y3RJZCA9IHRoaXMucHJvdmlzaW9uZWRQcm9kdWN0LnJlZjsnKTtcbiAgICBjb2RlLmxpbmUoXCJ0aGlzLmNsb3VkRm9ybWF0aW9uU3RhY2tBcm4gPSBjZGsuVG9rZW4uYXNTdHJpbmcoY2RrLkZuLmdldEF0dCh0aGlzLnByb3Zpc2lvbmVkUHJvZHVjdC5sb2dpY2FsSWQsICdDbG91ZGZvcm1hdGlvblN0YWNrQXJuJykpO1wiKTtcbiAgICBjb2RlLmxpbmUoXCJ0aGlzLnJlY29yZElkID0gY2RrLlRva2VuLmFzU3RyaW5nKGNkay5Gbi5nZXRBdHQodGhpcy5wcm92aXNpb25lZFByb2R1Y3QubG9naWNhbElkLCAnUmVjb3JkSWQnKSk7XCIpO1xuICAgIHRoaXMub3V0cHV0S2V5cz8uZm9yRWFjaChvdXRwdXQgPT4ge1xuICAgICAgY29kZS5saW5lKGB0aGlzLiR7Y2FtZWwob3V0cHV0LktleSEpfSA9IGNkay5Ub2tlbi5hc1N0cmluZyhjZGsuRm4uZ2V0QXR0KHRoaXMucHJvdmlzaW9uZWRQcm9kdWN0LmxvZ2ljYWxJZCwgJ091dHB1dHMuJHtvdXRwdXQuS2V5IX0nKSk7YCk7XG4gICAgfSk7XG4gICAgY29kZS5jbG9zZUJsb2NrKCk7XG5cbiAgICAvLyBDbG9zZSBjb25zdHJ1Y3QgY2xhc3NcbiAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -40,18 +40,19 @@
40
40
  "jest-junit": "^13",
41
41
  "json-schema": "^0.4.0",
42
42
  "npm-check-updates": "^12",
43
- "projen": "^0.55.1",
43
+ "projen": "^0.55.3",
44
44
  "standard-version": "^9",
45
45
  "ts-jest": "^27",
46
46
  "ts-node": "^10.7.0",
47
47
  "typescript": "^4.6.4"
48
48
  },
49
49
  "dependencies": {
50
- "aws-sdk": "^2.1126.0",
50
+ "aws-sdk": "^2.1127.0",
51
51
  "case": "^1.6.3",
52
52
  "jsii-srcmak": "^0.1.548",
53
- "json2jsii": "^0.3.0",
53
+ "json2jsii": "^0.3.1",
54
54
  "minimist": "^1.2.6",
55
+ "minimist-subcommand": "^3.0.2",
55
56
  "proxy-agent": "^5.0.0"
56
57
  },
57
58
  "engines": {
@@ -59,7 +60,7 @@
59
60
  },
60
61
  "main": "lib/index.js",
61
62
  "license": "Apache-2.0",
62
- "version": "0.2.160",
63
+ "version": "0.2.163",
63
64
  "jest": {
64
65
  "testMatch": [
65
66
  "<rootDir>/src/**/__tests__/**/*.ts?(x)",