aws-cdk 2.1020.2 → 2.1022.0
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 +100 -55
- package/THIRD_PARTY_LICENSES +65 -65
- package/build-info.json +2 -2
- package/db.json.gz +0 -0
- package/lib/api/refactor.d.ts +1 -0
- package/lib/api/refactor.js +8 -0
- package/lib/cli/cdk-toolkit.d.ts +19 -21
- package/lib/cli/cdk-toolkit.js +145 -141
- package/lib/cli/cli-config.js +19 -13
- package/lib/cli/cli-type-registry.json +29 -12
- package/lib/cli/cli.js +76 -22
- package/lib/cli/convert-to-user-input.js +16 -6
- package/lib/cli/display-version.d.ts +11 -0
- package/lib/cli/display-version.js +101 -0
- package/lib/cli/io-host/cli-io-host.d.ts +11 -11
- package/lib/cli/io-host/cli-io-host.js +68 -24
- package/lib/cli/parse-command-line-arguments.js +29 -11
- package/lib/cli/platform-warnings.d.ts +2 -1
- package/lib/cli/platform-warnings.js +3 -4
- package/lib/cli/telemetry/collect-telemetry.d.ts +5 -0
- package/lib/cli/telemetry/collect-telemetry.js +15 -0
- package/lib/cli/telemetry/endpoint-sink.d.ts +1 -2
- package/lib/cli/telemetry/endpoint-sink.js +4 -3
- package/lib/cli/telemetry/error.d.ts +2 -0
- package/lib/cli/telemetry/error.js +16 -0
- package/lib/cli/telemetry/feature-flags.d.ts +96 -0
- package/lib/cli/telemetry/feature-flags.js +103 -0
- package/lib/cli/telemetry/file-sink.js +8 -12
- package/lib/cli/telemetry/installation-id.d.ts +5 -0
- package/lib/cli/telemetry/installation-id.js +47 -0
- package/lib/cli/telemetry/library-version.d.ts +2 -0
- package/lib/cli/telemetry/library-version.js +30 -0
- package/lib/cli/telemetry/messages.d.ts +40 -0
- package/lib/cli/telemetry/messages.js +65 -0
- package/lib/cli/telemetry/sanitation.d.ts +100 -0
- package/lib/cli/telemetry/sanitation.js +79 -0
- package/lib/cli/telemetry/schema.d.ts +47 -19
- package/lib/cli/telemetry/schema.js +10 -1
- package/lib/cli/telemetry/session.d.ts +33 -0
- package/lib/cli/telemetry/session.js +130 -0
- package/lib/cli/user-configuration.d.ts +14 -4
- package/lib/cli/user-configuration.js +42 -30
- package/lib/cli/user-input.d.ts +31 -13
- package/lib/cli/user-input.js +1 -1
- package/lib/cli/util/ci.d.ts +5 -0
- package/lib/cli/util/ci.js +11 -0
- package/lib/cli/util/yargs-helpers.d.ts +1 -1
- package/lib/cli/util/yargs-helpers.js +7 -7
- package/lib/cli/version.d.ts +2 -12
- package/lib/cli/version.js +5 -103
- package/lib/commands/context.d.ts +10 -5
- package/lib/commands/context.js +35 -35
- package/lib/commands/docs.d.ts +6 -1
- package/lib/commands/docs.js +20 -19
- package/lib/commands/doctor.d.ts +4 -1
- package/lib/commands/doctor.js +17 -17
- package/lib/commands/flags.d.ts +3 -0
- package/lib/commands/flags.js +43 -0
- package/lib/commands/init/init-hooks.d.ts +2 -1
- package/lib/commands/init/init-hooks.js +6 -6
- package/lib/commands/init/init.d.ts +4 -2
- package/lib/commands/init/init.js +56 -54
- package/lib/commands/init/os.d.ts +2 -1
- package/lib/commands/init/os.js +3 -4
- package/lib/commands/list-stacks.js +8 -2
- package/lib/commands/migrate.d.ts +6 -17
- package/lib/commands/migrate.js +28 -29
- package/lib/cxapp/cloud-assembly.js +1 -1
- package/lib/cxapp/cloud-executable.js +41 -26
- package/lib/index.d.ts +1 -1
- package/lib/index.js +46764 -31086
- package/lib/index_bg.wasm +0 -0
- package/lib/init-templates/.init-version.json +1 -1
- package/lib/init-templates/.recommended-feature-flags.json +1 -0
- package/lib/{legacy-aws-auth.d.ts → legacy/aws-auth.d.ts} +1 -1
- package/lib/legacy/aws-auth.js +47 -0
- package/lib/legacy/configuration.d.ts +82 -0
- package/lib/legacy/configuration.js +321 -0
- package/lib/legacy/index.d.ts +19 -0
- package/lib/{legacy-exports-source.js → legacy/index.js} +23 -23
- package/lib/{legacy-logging-source.d.ts → legacy/logging.d.ts} +50 -0
- package/lib/legacy/logging.js +154 -0
- package/lib/legacy/types.js +3 -0
- package/lib/legacy-exports.d.ts +4 -3
- package/lib/legacy-exports.js +4 -1
- package/package.json +15 -15
- package/lib/legacy-aws-auth.js +0 -47
- package/lib/legacy-exports-source.d.ts +0 -18
- package/lib/legacy-logging-source.js +0 -107
- package/lib/legacy-types.js +0 -3
- package/lib/logging.d.ts +0 -99
- package/lib/logging.js +0 -146
- /package/lib/{legacy-types.d.ts → legacy/types.d.ts} +0 -0
|
@@ -30,6 +30,7 @@ function convertYargsToUserInput(args) {
|
|
|
30
30
|
noColor: args.noColor,
|
|
31
31
|
ci: args.ci,
|
|
32
32
|
unstable: args.unstable,
|
|
33
|
+
telemetryFile: args.telemetryFile,
|
|
33
34
|
};
|
|
34
35
|
let commandOptions;
|
|
35
36
|
switch (args._[0]) {
|
|
@@ -85,6 +86,9 @@ function convertYargsToUserInput(args) {
|
|
|
85
86
|
ENVIRONMENTS: args.ENVIRONMENTS,
|
|
86
87
|
};
|
|
87
88
|
break;
|
|
89
|
+
case 'flags':
|
|
90
|
+
commandOptions = {};
|
|
91
|
+
break;
|
|
88
92
|
case 'deploy':
|
|
89
93
|
commandOptions = {
|
|
90
94
|
all: args.all,
|
|
@@ -179,6 +183,7 @@ function convertYargsToUserInput(args) {
|
|
|
179
183
|
quiet: args.quiet,
|
|
180
184
|
changeSet: args.changeSet,
|
|
181
185
|
importExistingResources: args.importExistingResources,
|
|
186
|
+
includeMoves: args.includeMoves,
|
|
182
187
|
STACKS: args.STACKS,
|
|
183
188
|
};
|
|
184
189
|
break;
|
|
@@ -245,17 +250,17 @@ function convertYargsToUserInput(args) {
|
|
|
245
250
|
break;
|
|
246
251
|
case 'refactor':
|
|
247
252
|
commandOptions = {
|
|
253
|
+
additionalStackName: args.additionalStackName,
|
|
248
254
|
dryRun: args.dryRun,
|
|
249
|
-
|
|
250
|
-
mappingFile: args.mappingFile,
|
|
255
|
+
overrideFile: args.overrideFile,
|
|
251
256
|
revert: args.revert,
|
|
252
|
-
STACKS: args.STACKS,
|
|
253
257
|
};
|
|
254
258
|
break;
|
|
255
259
|
case 'cli-telemetry':
|
|
256
260
|
commandOptions = {
|
|
257
261
|
enable: args.enable,
|
|
258
262
|
disable: args.disable,
|
|
263
|
+
status: args.status,
|
|
259
264
|
};
|
|
260
265
|
break;
|
|
261
266
|
}
|
|
@@ -294,6 +299,7 @@ function convertConfigToUserInput(config) {
|
|
|
294
299
|
noColor: config.noColor,
|
|
295
300
|
ci: config.ci,
|
|
296
301
|
unstable: config.unstable,
|
|
302
|
+
telemetryFile: config.telemetryFile,
|
|
297
303
|
};
|
|
298
304
|
const listOptions = {
|
|
299
305
|
long: config.list?.long,
|
|
@@ -333,6 +339,7 @@ function convertConfigToUserInput(config) {
|
|
|
333
339
|
confirm: config.gc?.confirm,
|
|
334
340
|
bootstrapStackName: config.gc?.bootstrapStackName,
|
|
335
341
|
};
|
|
342
|
+
const flagsOptions = {};
|
|
336
343
|
const deployOptions = {
|
|
337
344
|
all: config.deploy?.all,
|
|
338
345
|
buildExclude: config.deploy?.buildExclude,
|
|
@@ -411,6 +418,7 @@ function convertConfigToUserInput(config) {
|
|
|
411
418
|
quiet: config.diff?.quiet,
|
|
412
419
|
changeSet: config.diff?.changeSet,
|
|
413
420
|
importExistingResources: config.diff?.importExistingResources,
|
|
421
|
+
includeMoves: config.diff?.includeMoves,
|
|
414
422
|
};
|
|
415
423
|
const driftOptions = {
|
|
416
424
|
fail: config.drift?.fail,
|
|
@@ -448,14 +456,15 @@ function convertConfigToUserInput(config) {
|
|
|
448
456
|
};
|
|
449
457
|
const doctorOptions = {};
|
|
450
458
|
const refactorOptions = {
|
|
459
|
+
additionalStackName: config.refactor?.additionalStackName,
|
|
451
460
|
dryRun: config.refactor?.dryRun,
|
|
452
|
-
|
|
453
|
-
mappingFile: config.refactor?.mappingFile,
|
|
461
|
+
overrideFile: config.refactor?.overrideFile,
|
|
454
462
|
revert: config.refactor?.revert,
|
|
455
463
|
};
|
|
456
464
|
const cliTelemetryOptions = {
|
|
457
465
|
enable: config.cliTelemetry?.enable,
|
|
458
466
|
disable: config.cliTelemetry?.disable,
|
|
467
|
+
status: config.cliTelemetry?.status,
|
|
459
468
|
};
|
|
460
469
|
const userInput = {
|
|
461
470
|
globalOptions,
|
|
@@ -463,6 +472,7 @@ function convertConfigToUserInput(config) {
|
|
|
463
472
|
synth: synthOptions,
|
|
464
473
|
bootstrap: bootstrapOptions,
|
|
465
474
|
gc: gcOptions,
|
|
475
|
+
flags: flagsOptions,
|
|
466
476
|
deploy: deployOptions,
|
|
467
477
|
rollback: rollbackOptions,
|
|
468
478
|
import: importOptions,
|
|
@@ -483,4 +493,4 @@ function convertConfigToUserInput(config) {
|
|
|
483
493
|
};
|
|
484
494
|
return userInput;
|
|
485
495
|
}
|
|
486
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydC10by11c2VyLWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29udmVydC10by11c2VyLWlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBU0EsMERBMlJDO0FBR0QsNERBd05DO0FBdmZELG9CQUFvQjtBQUNwQixTQUFnQix1QkFBdUIsQ0FBQyxJQUFTO0lBQy9DLE1BQU0sYUFBYSxHQUFrQjtRQUNuQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7UUFDYixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7UUFDakIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1FBQ3JCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtRQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7UUFDakIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1FBQ25CLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztRQUNyQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7UUFDL0IsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1FBQ2YsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1FBQ3JCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztRQUNqQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87UUFDckIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1FBQ2pCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtRQUMvQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7UUFDdkIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtRQUN2QyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7UUFDL0IsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1FBQ2pDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztRQUNyQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87UUFDckIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1FBQ25CLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztR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UUFDMUIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxZQUFZLEVBQUUsTUFBTTtRQUNuQyxPQUFPLEVBQUUsTUFBTSxDQUFDLFlBQVksRUFBRSxPQUFPO0tBQ3RDLENBQUM7SUFDRixNQUFNLFNBQVMsR0FBYztRQUMzQixhQUFhO1FBQ2IsSUFBSSxFQUFFLFdBQVc7UUFDakIsS0FBSyxFQUFFLFlBQVk7UUFDbkIsU0FBUyxFQUFFLGdCQUFnQjtRQUMzQixFQUFFLEVBQUUsU0FBUztRQUNiLE1BQU0sRUFBRSxhQUFhO1FBQ3JCLFFBQVEsRUFBRSxlQUFlO1FBQ3pCLE1BQU0sRUFBRSxhQUFhO1FBQ3JCLEtBQUssRUFBRSxZQUFZO1FBQ25CLE9BQU8sRUFBRSxjQUFjO1FBQ3ZCLElBQUksRUFBRSxXQUFXO1FBQ2pCLEtBQUssRUFBRSxZQUFZO1FBQ25CLFFBQVEsRUFBRSxlQUFlO1FBQ3pCLFdBQVcsRUFBRSxrQkFBa0I7UUFDL0IsT0FBTyxFQUFFLGNBQWM7UUFDdkIsSUFBSSxFQUFFLFdBQVc7UUFDakIsT0FBTyxFQUFFLGNBQWM7UUFDdkIsT0FBTyxFQUFFLGNBQWM7UUFDdkIsSUFBSSxFQUFFLFdBQVc7UUFDakIsTUFBTSxFQUFFLGFBQWE7UUFDckIsUUFBUSxFQUFFLGVBQWU7UUFDekIsWUFBWSxFQUFFLG1CQUFtQjtLQUNsQyxDQUFDO0lBRUYsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEdFTkVSQVRFRCBGUk9NIHBhY2thZ2VzL2F3cy1jZGsvbGliL2NsaS9jbGktY29uZmlnLnRzLlxuLy8gRG8gbm90IGVkaXQgYnkgaGFuZDsgYWxsIGNoYW5nZXMgd2lsbCBiZSBvdmVyd3JpdHRlbiBhdCBidWlsZCB0aW1lIGZyb20gdGhlIGNvbmZpZyBmaWxlLlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLyogZXNsaW50LWRpc2FibGUgQHN0eWxpc3RpYy9tYXgtbGVuLCBAdHlwZXNjcmlwdC1lc2xpbnQvY29uc2lzdGVudC10eXBlLWltcG9ydHMgKi9cbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICcuL3VzZXItY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBVc2VySW5wdXQsIEdsb2JhbE9wdGlvbnMgfSBmcm9tICcuL3VzZXItaW5wdXQnO1xuXG4vLyBAdHMtaWdub3JlIFRTNjEzM1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRZYXJnc1RvVXNlcklucHV0KGFyZ3M6IGFueSk6IFVzZXJJbnB1dCB7XG4gIGNvbnN0IGdsb2JhbE9wdGlvbnM6IEdsb2JhbE9wdGlvbnMgPSB7XG4gICAgYXBwOiBhcmdzLmFwcCxcbiAgICBidWlsZDogYXJncy5idWlsZCxcbiAgICBjb250ZXh0OiBhcmdzLmNvbnRleHQsXG4gICAgcGx1Z2luOiBhcmdzLnBsdWdpbixcbiAgICB0cmFjZTogYXJncy50cmFjZSxcbiAgICBzdHJpY3Q6IGFyZ3Muc3RyaWN0LFxuICAgIGxvb2t1cHM6IGFyZ3MubG9va3VwcyxcbiAgICBpZ25vcmVFcnJvcnM6IGFyZ3MuaWdub3JlRXJyb3JzLFxuICAgIGpzb246IGFyZ3MuanNvbixcbiAgICB2ZXJib3NlOiBhcmdzLnZlcmJvc2UsXG4gICAgZGVidWc6IGFyZ3MuZGVidWcsXG4gICAgcHJvZmlsZTogYXJncy5wcm9maWxlLFxuICAgIHByb3h5OiBhcmdzLnByb3h5LFxuICAgIGNhQnVuZGxlUGF0aDogYXJncy5jYUJ1bmRsZVBhdGgsXG4gICAgZWMyY3JlZHM6IGFyZ3MuZWMyY3JlZHMsXG4gICAgdmVyc2lvblJlcG9ydGluZzogYXJncy52ZXJzaW9uUmVwb3J0aW5nLFxuICAgIHBhdGhNZXRhZGF0YTogYXJncy5wYXRoTWV0YWRhdGEsXG4gICAgYXNzZXRNZXRhZGF0YTogYXJncy5hc3NldE1ldGFkYXRhLFxuICAgIHJvbGVBcm46IGFyZ3Mucm9sZUFybixcbiAgICBzdGFnaW5nOiBhcmdzLnN0YWdpbmcsXG4gICAgb3V0cHV0OiBhcmdzLm91dHB1dCxcbiAgICBub3RpY2VzOiBhcmdzLm5vdGljZXMsXG4gICAgbm9Db2xvcjogYXJncy5ub0NvbG9yLFxuICAgIGNpOiBhcmdzLmNpLFxuICAgIHVuc3RhYmxlOiBhcmdzLnVuc3RhYmxlLFxuICB9O1xuICBsZXQgY29tbWFuZE9wdGlvbnM7XG4gIHN3aXRjaCAoYXJncy5fWzBdIGFzIENvbW1hbmQpIHtcbiAgICBjYXNlICdsaXN0JzpcbiAgICBjYXNlICdscyc6XG4gICAgICBjb21tYW5kT3B0aW9ucyA9IHtcbiAgICAgICAgbG9uZzogYXJncy5sb25nLFxuICAgICAgICBzaG93RGVwZW5kZW5jaWVzOiBhcmdzLnNob3dEZXBlbmRlbmNpZXMsXG4gICAgICAgIFNUQUNLUzogYXJncy5TVEFDS1MsXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdzeW50aCc6XG4gICAgY2FzZSAnc3ludGhlc2l6ZSc6XG4gICAgICBjb21tYW5kT3B0aW9ucyA9IHtcbiAgICAgICAgZXhjbHVzaXZlbHk6IGFyZ3MuZXhjbHVzaXZlbHksXG4gICAgICAgIHZhbGlkYXRpb246IGFyZ3MudmFsaWRhdGlvbixcbiAgICAgICAgcXVpZXQ6IGFyZ3MucXVpZXQsXG4gICAgICAgIFNUQUNLUzogYXJncy5TVEFDS1MsXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdib290c3RyYXAnOlxuICAgICAgY29tbWFuZE9wdGlvbnMgPSB7XG4gICAgICAgIGJvb3RzdHJhcEJ1Y2tldE5hbWU6IGFyZ3MuYm9vdHN0cmFwQnVja2V0TmFtZSxcbiAgICAgICAgYm9vdHN0cmFwS21zS2V5SWQ6IGFyZ3MuYm9vdHN0cmFwS21zS2V5SWQsXG4gICAgICAgIGV4YW1wbGVQZXJtaXNzaW9uc0JvdW5kYXJ5OiBhcmdzLmV4YW1wbGVQZXJtaXNzaW9uc0JvdW5kYXJ5LFxuICAgICAgICBjdXN0b21QZXJtaXNzaW9uc0JvdW5kYXJ5OiBhcmdzLmN1c3RvbVBlcm1pc3Npb25zQm91bmRhcnksXG4gICAgICAgIGJvb3RzdHJhcEN1c3RvbWVyS2V5OiBhcmdzLmJvb3RzdHJhcEN1c3RvbWVyS2V5LFxuICAgICAgICBxdWFsaWZpZXI6IGFyZ3MucXVhbGlmaWVyLFxuICAgICAgICBwdWJsaWNBY2Nlc3NCbG9ja0NvbmZpZ3VyYXRpb246IGFyZ3MucHVibGljQWNjZXNzQmxvY2tDb25maWd1cmF0aW9uLFxuICAgICAgICB0YWdzOiBhcmdzLnRhZ3MsXG4gICAgICAgIGV4ZWN1dGU6IGFyZ3MuZXhlY3V0ZSxcbiAgICAgICAgdHJ1c3Q6IGFyZ3MudHJ1c3QsXG4gICAgICAgIHRydXN0Rm9yTG9va3VwOiBhcmdzLnRydXN0Rm9yTG9va3VwLFxuICAgICAgICB1bnRydXN0OiBhcmdzLnVudHJ1c3QsXG4gICAgICAgIGNsb3VkZm9ybWF0aW9uRXhlY3V0aW9uUG9saWNpZXM6IGFyZ3MuY2xvdWRmb3JtYXRpb25FeGVjdXRpb25Qb2xpY2llcyxcbiAgICAgICAgZm9yY2U6IGFyZ3MuZm9yY2UsXG4gICAgICAgIHRlcm1pbmF0aW9uUHJvdGVjdGlvbjogYXJncy50ZXJtaW5hdGlvblByb3RlY3Rpb24sXG4gICAgICAgIHNob3dUZW1wbGF0ZTogYXJncy5zaG93VGVtcGxhdGUsXG4gICAgICAgIHRvb2xraXRTdGFja05hbWU6IGFyZ3MudG9vbGtpdFN0YWNrTmFtZSxcbiAgICAgICAgdGVtcGxhdGU6IGFyZ3MudGVtcGxhdGUsXG4gICAgICAgIHByZXZpb3VzUGFyYW1ldGVyczogYXJncy5wcmV2aW91c1BhcmFtZXRlcnMsXG4gICAgICAgIEVOVklST05NRU5UUzogYXJncy5FTlZJUk9OTUVOVFMsXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdnYyc6XG4gICAgICBjb21tYW5kT3B0aW9ucyA9IHtcbiAgICAgICAgYWN0aW9uOiBhcmdzLmFjdGlvbixcbiAgICAgICAgdHlwZTogYXJncy50eXBlLFxuICAgICAgICByb2xsYmFja0J1ZmZlckRheXM6IGFyZ3Mucm9sbGJhY2tCdWZmZXJEYXlzLFxuICAgICAgICBjcmVhdGVkQnVmZmVyRGF5czogYXJncy5jcmVhdGVkQnVmZmVyRGF5cyxcbiAgICAgICAgY29uZmlybTogYXJncy5jb25maXJtLFxuICAgICAgICBib290c3RyYXBTdGFja05hbWU6IGFyZ3MuYm9vdHN0cmFwU3RhY2tOYW1lLFxuICAgICAgICBFTlZJUk9OTUVOVFM6IGFyZ3MuRU5WSVJPTk1FTlRTLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnZGVwbG95JzpcbiAgICAgIGNvbW1hbmRPcHRpb25zID0ge1xuICAgICAgICBhbGw6IGFyZ3MuYWxsLFxuICAgICAgICBidWlsZEV4Y2x1ZGU6IGFyZ3MuYnVpbGRFeGNsdWRlLFxuICAgICAgICBleGNsdXNpdmVseTogYXJncy5leGNsdXNpdmVseSxcbiAgICAgICAgcmVxdWlyZUFwcHJvdmFsOiBhcmdzLnJlcXVpcmVBcHByb3ZhbCxcbiAgICAgICAgbm90aWZpY2F0aW9uQXJuczogYXJncy5ub3RpZmljYXRpb25Bcm5zLFxuICAgICAgICB0YWdzOiBhcmdzLnRhZ3MsXG4gICAgICAgIGV4ZWN1dGU6IGFyZ3MuZXhlY3V0ZSxcbiAgICAgICAgY2hhbmdlU2V0TmFtZTogYXJncy5jaGFuZ2VTZXROYW1lLFxuICAgICAgICBtZXRob2Q6IGFyZ3MubWV0aG9kLFxuICAgICAgICBpbXBvcnRFeGlzdGluZ1Jlc291cmNlczogYXJncy5pbXBvcnRFeGlzdGluZ1Jlc291cmNlcyxcbiAgICAgICAgZm9yY2U6IGFyZ3MuZm9yY2UsXG4gICAgICAgIHBhcmFtZXRlcnM6IGFyZ3MucGFyYW1ldGVycyxcbiAgICAgICAgb3V0cHV0c0ZpbGU6IGFyZ3Mub3V0cHV0c0ZpbGUsXG4gICAgICAgIHByZXZpb3VzUGFyYW1ldGVyczogYXJncy5wcmV2aW91c1BhcmFtZXRlcnMsXG4gICAgICAgIHRvb2xraXRTdGFja05hbWU6IGFyZ3MudG9vbGtpdFN0YWNrTmFtZSxcbiAgICAgICAgcHJvZ3Jlc3M6IGFyZ3MucHJvZ3Jlc3MsXG4gICAgICAgIHJvbGxiYWNrOiBhcmdzLnJvbGxiYWNrLFxuICAgICAgICBob3Rzd2FwOiBhcmdzLmhvdHN3YXAsXG4gICAgICAgIGhvdHN3YXBGYWxsYmFjazogYXJncy5ob3Rzd2FwRmFsbGJhY2ssXG4gICAgICAgIGhvdHN3YXBFY3NNaW5pbXVtSGVhbHRoeVBlcmNlbnQ6IGFyZ3MuaG90c3dhcEVjc01pbmltdW1IZWFsdGh5UGVyY2VudCxcbiAgICAgICAgaG90c3dhcEVjc01heGltdW1IZWFsdGh5UGVyY2VudDogYXJncy5ob3Rzd2FwRWNzTWF4aW11bUhlYWx0aHlQZXJjZW50LFxuICAgICAgICBob3Rzd2FwRWNzU3RhYmlsaXphdGlvblRpbWVvdXRTZWNvbmRzOiBhcmdzLmhvdHN3YXBFY3NTdGFiaWxpemF0aW9uVGltZW91dFNlY29uZHMsXG4gICAgICAgIHdhdGNoOiBhcmdzLndhdGNoLFxuICAgICAgICBsb2dzOiBhcmdzLmxvZ3MsXG4gICAgICAgIGNvbmN1cnJlbmN5OiBhcmdzLmNvbmN1cnJlbmN5LFxuICAgICAgICBhc3NldFBhcmFsbGVsaXNtOiBhcmdzLmFzc2V0UGFyYWxsZWxpc20sXG4gICAgICAgIGFzc2V0UHJlYnVpbGQ6IGFyZ3MuYXNzZXRQcmVidWlsZCxcbiAgICAgICAgaWdub3JlTm9TdGFja3M6IGFyZ3MuaWdub3JlTm9TdGFja3MsXG4gICAgICAgIFNUQUNLUzogYXJncy5TVEFDS1MsXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdyb2xsYmFjayc6XG4gICAgICBjb21tYW5kT3B0aW9ucyA9IHtcbiAgICAgICAgYWxsOiBhcmdzLmFsbCxcbiAgICAgICAgdG9vbGtpdFN0YWNrTmFtZTogYXJncy50b29sa2l0U3RhY2tOYW1lLFxuICAgICAgICBmb3JjZTogYXJncy5mb3JjZSxcbiAgICAgICAgdmFsaWRhdGVCb290c3RyYXBWZXJzaW9uOiBhcmdzLnZhbGlkYXRlQm9vdHN0cmFwVmVyc2lvbixcbiAgICAgICAgb3JwaGFuOiBhcmdzLm9ycGhhbixcbiAgICAgICAgU1RBQ0tTOiBhcmdzLlNUQUNLUyxcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2ltcG9ydCc6XG4gICAgICBjb21tYW5kT3B0aW9ucyA9IHtcbiAgICAgICAgZXhlY3V0ZTogYXJncy5leGVjdXRlLFxuICAgICAgICBjaGFuZ2VTZXROYW1lOiBhcmdzLmNoYW5nZVNldE5hbWUsXG4gICAgICAgIHRvb2xraXRTdGFja05hbWU6IGFyZ3MudG9vbGtpdFN0YWNrTmFtZSxcbiAgICAgICAgcm9sbGJhY2s6IGFyZ3Mucm9sbGJhY2ssXG4gICAgICAgIGZvcmNlOiBhcmdzLmZvcmNlLFxuICAgICAgICByZWNvcmRSZXNvdXJjZU1hcHBpbmc6IGFyZ3MucmVjb3JkUmVzb3VyY2VNYXBwaW5nLFxuICAgICAgICByZXNvdXJjZU1hcHBpbmc6IGFyZ3MucmVzb3VyY2VNYXBwaW5nLFxuICAgICAgICBTVEFDSzogYXJncy5TVEFDSyxcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ3dhdGNoJzpcbiAgICAgIGNvbW1hbmRPcHRpb25zID0ge1xuICAgICAgICBidWlsZEV4Y2x1ZGU6IGFyZ3MuYnVpbGRFeGNsdWRlLFxuICAgICAgICBleGNsdXNpdmVseTogYXJncy5leGNsdXNpdmVseSxcbiAgICAgICAgY2hhbmdlU2V0TmFtZTogYXJncy5jaGFuZ2VTZXROYW1lLFxuICAgICAgICBmb3JjZTogYXJncy5mb3JjZSxcbiAgICAgICAgdG9vbGtpdFN0YWNrTmFtZTogYXJncy50b29sa2l0U3RhY2tOYW1lLFxuICAgICAgICBwcm9ncmVzczogYXJncy5wcm9ncmVzcyxcbiAgICAgICAgcm9sbGJhY2s6IGFyZ3Mucm9sbGJhY2ssXG4gICAgICAgIGhvdHN3YXA6IGFyZ3MuaG90c3dhcCxcbiAgICAgICAgaG90c3dhcEZhbGxiYWNrOiBhcmdzLmhvdHN3YXBGYWxsYmFjayxcbiAgICAgICAgaG90c3dhcEVjc01pbmltdW1IZWFsdGh5UGVyY2VudDogYXJncy5ob3Rzd2FwRWNzTWluaW11bUhlYWx0aHlQZXJjZW50LFxuICAgICAgICBob3Rzd2FwRWNzTWF4aW11bUhlYWx0aHlQZXJjZW50OiBhcmdzLmhvdHN3YXBFY3NNYXhpbXVtSGVhbHRoeVBlcmNlbnQsXG4gICAgICAgIGhvdHN3YXBFY3NTdGFiaWxpemF0aW9uVGltZW91dFNlY29uZHM6IGFyZ3MuaG90c3dhcEVjc1N0YWJpbGl6YXRpb25UaW1lb3V0U2Vjb25kcyxcbiAgICAgICAgbG9nczogYXJncy5sb2dzLFxuICAgICAgICBjb25jdXJyZW5jeTogYXJncy5jb25jdXJyZW5jeSxcbiAgICAgICAgU1RBQ0tTOiBhcmdzLlNUQUNLUyxcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2Rlc3Ryb3knOlxuICAgICAgY29tbWFuZE9wdGlvbnMgPSB7XG4gICAgICAgIGFsbDogYXJncy5hbGwsXG4gICAgICAgIGV4Y2x1c2l2ZWx5OiBhcmdzLmV4Y2x1c2l2ZWx5LFxuICAgICAgICBmb3JjZTogYXJncy5mb3JjZSxcbiAgICAgICAgU1RBQ0tTOiBhcmdzLlNUQUNLUyxcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2RpZmYnOlxuICAgICAgY29tbWFuZE9wdGlvbnMgPSB7XG4gICAgICAgIGV4Y2x1c2l2ZWx5OiBhcmdzLmV4Y2x1c2l2ZWx5LFxuICAgICAgICBjb250ZXh0TGluZXM6IGFyZ3MuY29udGV4dExpbmVzLFxuICAgICAgICB0ZW1wbGF0ZTogYXJncy50ZW1wbGF0ZSxcbiAgICAgICAgc3RyaWN0OiBhcmdzLnN0cmljdCxcbiAgICAgICAgc2VjdXJpdHlPbmx5OiBhcmdzLnNlY3VyaXR5T25seSxcbiAgICAgICAgZmFpbDogYXJncy5mYWlsLFxuICAgICAgICBwcm9jZXNzZWQ6IGFyZ3MucHJvY2Vzc2VkLFxuICAgICAgICBxdWlldDogYXJncy5xdWlldCxcbiAgICAgICAgY2hhbmdlU2V0OiBhcmdzLmNoYW5nZVNldCxcbiAgICAgICAgaW1wb3J0RXhpc3RpbmdSZXNvdXJjZXM6IGFyZ3MuaW1wb3J0RXhpc3RpbmdSZXNvdXJjZXMsXG4gICAgICAgIFNUQUNLUzogYXJncy5TVEFDS1MsXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdkcmlmdCc6XG4gICAgICBjb21tYW5kT3B0aW9ucyA9IHtcbiAgICAgICAgZmFpbDogYXJncy5mYWlsLFxuICAgICAgICBTVEFDS1M6IGFyZ3MuU1RBQ0tTLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnbWV0YWRhdGEnOlxuICAgICAgY29tbWFuZE9wdGlvbnMgPSB7XG4gICAgICAgIFNUQUNLOiBhcmdzLlNUQUNLLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnYWNrbm93bGVkZ2UnOlxuICAgIGNhc2UgJ2Fjayc6XG4gICAgICBjb21tYW5kT3B0aW9ucyA9IHtcbiAgICAgICAgSUQ6IGFyZ3MuSUQsXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdub3RpY2VzJzpcbiAgICAgIGNvbW1hbmRPcHRpb25zID0ge1xuICAgICAgICB1bmFja25vd2xlZGdlZDogYXJncy51bmFja25vd2xlZGdlZCxcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2luaXQnOlxuICAgICAgY29tbWFuZE9wdGlvbnMgPSB7XG4gICAgICAgIGxhbmd1YWdlOiBhcmdzLmxhbmd1YWdlLFxuICAgICAgICBsaXN0OiBhcmdzLmxpc3QsXG4gICAgICAgIGdlbmVyYXRlT25seTogYXJncy5nZW5lcmF0ZU9ubHksXG4gICAgICAgIGxpYlZlcnNpb246IGFyZ3MubGliVmVyc2lvbixcbiAgICAgICAgVEVNUExBVEU6IGFyZ3MuVEVNUExBVEUsXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdtaWdyYXRlJzpcbiAgICAgIGNvbW1hbmRPcHRpb25zID0ge1xuICAgICAgICBzdGFja05hbWU6IGFyZ3Muc3RhY2tOYW1lLFxuICAgICAgICBsYW5ndWFnZTogYXJncy5sYW5ndWFnZSxcbiAgICAgICAgYWNjb3VudDogYXJncy5hY2NvdW50LFxuICAgICAgICByZWdpb246IGFyZ3MucmVnaW9uLFxuICAgICAgICBmcm9tUGF0aDogYXJncy5mcm9tUGF0aCxcbiAgICAgICAgZnJvbVN0YWNrOiBhcmdzLmZyb21TdGFjayxcbiAgICAgICAgb3V0cHV0UGF0aDogYXJncy5vdXRwdXRQYXRoLFxuICAgICAgICBmcm9tU2NhbjogYXJncy5mcm9tU2NhbixcbiAgICAgICAgZmlsdGVyOiBhcmdzLmZpbHRlcixcbiAgICAgICAgY29tcHJlc3M6IGFyZ3MuY29tcHJlc3MsXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdjb250ZXh0JzpcbiAgICAgIGNvbW1hbmRPcHRpb25zID0ge1xuICAgICAgICByZXNldDogYXJncy5yZXNldCxcbiAgICAgICAgZm9yY2U6IGFyZ3MuZm9yY2UsXG4gICAgICAgIGNsZWFyOiBhcmdzLmNsZWFyLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnZG9jcyc6XG4gICAgY2FzZSAnZG9jJzpcbiAgICAgIGNvbW1hbmRPcHRpb25zID0ge1xuICAgICAgICBicm93c2VyOiBhcmdzLmJyb3dzZXIsXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdkb2N0b3InOlxuICAgICAgY29tbWFuZE9wdGlvbnMgPSB7fTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAncmVmYWN0b3InOlxuICAgICAgY29tbWFuZE9wdGlvbnMgPSB7XG4gICAgICAgIGRyeVJ1bjogYXJncy5kcnlSdW4sXG4gICAgICAgIGV4Y2x1ZGVGaWxlOiBhcmdzLmV4Y2x1ZGVGaWxlLFxuICAgICAgICBtYXBwaW5nRmlsZTogYXJncy5tYXBwaW5nRmlsZSxcbiAgICAgICAgcmV2ZXJ0OiBhcmdzLnJldmVydCxcbiAgICAgICAgU1RBQ0tTOiBhcmdzLlNUQUNLUyxcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2NsaS10ZWxlbWV0cnknOlxuICAgICAgY29tbWFuZE9wdGlvbnMgPSB7XG4gICAgICAgIGVuYWJsZTogYXJncy5lbmFibGUsXG4gICAgICAgIGRpc2FibGU6IGFyZ3MuZGlzYWJsZSxcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgfVxuICBjb25zdCB1c2VySW5wdXQ6IFVzZXJJbnB1dCA9IHtcbiAgICBjb21tYW5kOiBhcmdzLl9bMF0sXG4gICAgZ2xvYmFsT3B0aW9ucyxcbiAgICBbYXJncy5fWzBdXTogY29tbWFuZE9wdGlvbnMsXG4gIH07XG5cbiAgcmV0dXJuIHVzZXJJbnB1dDtcbn1cblxuLy8gQHRzLWlnbm9yZSBUUzYxMzNcbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0Q29uZmlnVG9Vc2VySW5wdXQoY29uZmlnOiBhbnkpOiBVc2VySW5wdXQge1xuICBjb25zdCBnbG9iYWxPcHRpb25zOiBHbG9iYWxPcHRpb25zID0ge1xuICAgIGFwcDogY29uZmlnLmFwcCxcbiAgICBidWlsZDogY29uZmlnLmJ1aWxkLFxuICAgIGNvbnRleHQ6IGNvbmZpZy5jb250ZXh0LFxuICAgIHBsdWdpbjogY29uZmlnLnBsdWdpbixcbiAgICB0cmFjZTogY29uZmlnLnRyYWNlLFxuICAgIHN0cmljdDogY29uZmlnLnN0cmljdCxcbiAgICBsb29rdXBzOiBjb25maWcubG9va3VwcyxcbiAgICBpZ25vcmVFcnJvcnM6IGNvbmZpZy5pZ25vcmVFcnJvcnMsXG4gICAganNvbjogY29uZmlnLmpzb24sXG4gICAgdmVyYm9zZTogY29uZmlnLnZlcmJvc2UsXG4gICAgZGVidWc6IGNvbmZpZy5kZWJ1ZyxcbiAgICBwcm9maWxlOiBjb25maWcucHJvZmlsZSxcbiAgICBwcm94eTogY29uZmlnLnByb3h5LFxuICAgIGNhQnVuZGxlUGF0aDogY29uZmlnLmNhQnVuZGxlUGF0aCxcbiAgICBlYzJjcmVkczogY29uZmlnLmVjMmNyZWRzLFxuICAgIHZlcnNpb25SZXBvcnRpbmc6IGNvbmZpZy52ZXJzaW9uUmVwb3J0aW5nLFxuICAgIHBhdGhNZXRhZGF0YTogY29uZmlnLnBhdGhNZXRhZGF0YSxcbiAgICBhc3NldE1ldGFkYXRhOiBjb25maWcuYXNzZXRNZXRhZGF0YSxcbiAgICByb2xlQXJuOiBjb25maWcucm9sZUFybixcbiAgICBzdGFnaW5nOiBjb25maWcuc3RhZ2luZyxcbiAgICBvdXRwdXQ6IGNvbmZpZy5vdXRwdXQsXG4gICAgbm90aWNlczogY29uZmlnLm5vdGljZXMsXG4gICAgbm9Db2xvcjogY29uZmlnLm5vQ29sb3IsXG4gICAgY2k6IGNvbmZpZy5jaSxcbiAgICB1bnN0YWJsZTogY29uZmlnLnVuc3RhYmxlLFxuICB9O1xuICBjb25zdCBsaXN0T3B0aW9ucyA9IHtcbiAgICBsb25nOiBjb25maWcubGlzdD8ubG9uZyxcbiAgICBzaG93RGVwZW5kZW5jaWVzOiBjb25maWcubGlzdD8uc2hvd0RlcGVuZGVuY2llcyxcbiAgfTtcbiAgY29uc3Qgc3ludGhPcHRpb25zID0ge1xuICAgIGV4Y2x1c2l2ZWx5OiBjb25maWcuc3ludGg/LmV4Y2x1c2l2ZWx5LFxuICAgIHZhbGlkYXRpb246IGNvbmZpZy5zeW50aD8udmFsaWRhdGlvbixcbiAgICBxdWlldDogY29uZmlnLnN5bnRoPy5xdWlldCxcbiAgfTtcbiAgY29uc3QgYm9vdHN0cmFwT3B0aW9ucyA9IHtcbiAgICBib290c3RyYXBCdWNrZXROYW1lOiBjb25maWcuYm9vdHN0cmFwPy5ib290c3RyYXBCdWNrZXROYW1lLFxuICAgIGJvb3RzdHJhcEttc0tleUlkOiBjb25maWcuYm9vdHN0cmFwPy5ib290c3RyYXBLbXNLZXlJZCxcbiAgICBleGFtcGxlUGVybWlzc2lvbnNCb3VuZGFyeTogY29uZmlnLmJvb3RzdHJhcD8uZXhhbXBsZVBlcm1pc3Npb25zQm91bmRhcnksXG4gICAgY3VzdG9tUGVybWlzc2lvbnNCb3VuZGFyeTogY29uZmlnLmJvb3RzdHJhcD8uY3VzdG9tUGVybWlzc2lvbnNCb3VuZGFyeSxcbiAgICBib290c3RyYXBDdXN0b21lcktleTogY29uZmlnLmJvb3RzdHJhcD8uYm9vdHN0cmFwQ3VzdG9tZXJLZXksXG4gICAgcXVhbGlmaWVyOiBjb25maWcuYm9vdHN0cmFwPy5xdWFsaWZpZXIsXG4gICAgcHVibGljQWNjZXNzQmxvY2tDb25maWd1cmF0aW9uOiBjb25maWcuYm9vdHN0cmFwPy5wdWJsaWNBY2Nlc3NCbG9ja0NvbmZpZ3VyYXRpb24sXG4gICAgdGFnczogY29uZmlnLmJvb3RzdHJhcD8udGFncyxcbiAgICBleGVjdXRlOiBjb25maWcuYm9vdHN0cmFwPy5leGVjdXRlLFxuICAgIHRydXN0OiBjb25maWcuYm9vdHN0cmFwPy50cnVzdCxcbiAgICB0cnVzdEZvckxvb2t1cDogY29uZmlnLmJvb3RzdHJhcD8udHJ1c3RGb3JMb29rdXAsXG4gICAgdW50cnVzdDogY29uZmlnLmJvb3RzdHJhcD8udW50cnVzdCxcbiAgICBjbG91ZGZvcm1hdGlvbkV4ZWN1dGlvblBvbGljaWVzOiBjb25maWcuYm9vdHN0cmFwPy5jbG91ZGZvcm1hdGlvbkV4ZWN1dGlvblBvbGljaWVzLFxuICAgIGZvcmNlOiBjb25maWcuYm9vdHN0cmFwPy5mb3JjZSxcbiAgICB0ZXJtaW5hdGlvblByb3RlY3Rpb246IGNvbmZpZy5ib290c3RyYXA/LnRlcm1pbmF0aW9uUHJvdGVjdGlvbixcbiAgICBzaG93VGVtcGxhdGU6IGNvbmZpZy5ib290c3RyYXA/LnNob3dUZW1wbGF0ZSxcbiAgICB0b29sa2l0U3RhY2tOYW1lOiBjb25maWcuYm9vdHN0cmFwPy50b29sa2l0U3RhY2tOYW1lLFxuICAgIHRlbXBsYXRlOiBjb25maWcuYm9vdHN0cmFwPy50ZW1wbGF0ZSxcbiAgICBwcmV2aW91c1BhcmFtZXRlcnM6IGNvbmZpZy5ib290c3RyYXA/LnByZXZpb3VzUGFyYW1ldGVycyxcbiAgfTtcbiAgY29uc3QgZ2NPcHRpb25zID0ge1xuICAgIGFjdGlvbjogY29uZmlnLmdjPy5hY3Rpb24sXG4gICAgdHlwZTogY29uZmlnLmdjPy50eXBlLFxuICAgIHJvbGxiYWNrQnVmZmVyRGF5czogY29uZmlnLmdjPy5yb2xsYmFja0J1ZmZlckRheXMsXG4gICAgY3JlYXRlZEJ1ZmZlckRheXM6IGNvbmZpZy5nYz8uY3JlYXRlZEJ1ZmZlckRheXMsXG4gICAgY29uZmlybTogY29uZmlnLmdjPy5jb25maXJtLFxuICAgIGJvb3RzdHJhcFN0YWNrTmFtZTogY29uZmlnLmdjPy5ib290c3RyYXBTdGFja05hbWUsXG4gIH07XG4gIGNvbnN0IGRlcGxveU9wdGlvbnMgPSB7XG4gICAgYWxsOiBjb25maWcuZGVwbG95Py5hbGwsXG4gICAgYnVpbGRFeGNsdWRlOiBjb25maWcuZGVwbG95Py5idWlsZEV4Y2x1ZGUsXG4gICAgZXhjbHVzaXZlbHk6IGNvbmZpZy5kZXBsb3k/LmV4Y2x1c2l2ZWx5LFxuICAgIHJlcXVpcmVBcHByb3ZhbDogY29uZmlnLmRlcGxveT8ucmVxdWlyZUFwcHJvdmFsLFxuICAgIG5vdGlmaWNhdGlvbkFybnM6IGNvbmZpZy5kZXBsb3k/Lm5vdGlmaWNhdGlvbkFybnMsXG4gICAgdGFnczogY29uZmlnLmRlcGxveT8udGFncyxcbiAgICBleGVjdXRlOiBjb25maWcuZGVwbG95Py5leGVjdXRlLFxuICAgIGNoYW5nZVNldE5hbWU6IGNvbmZpZy5kZXBsb3k/LmNoYW5nZVNldE5hbWUsXG4gICAgbWV0aG9kOiBjb25maWcuZGVwbG95Py5tZXRob2QsXG4gICAgaW1wb3J0RXhpc3RpbmdSZXNvdXJjZXM6IGNvbmZpZy5kZXBsb3k/LmltcG9ydEV4aXN0aW5nUmVzb3VyY2VzLFxuICAgIGZvcmNlOiBjb25maWcuZGVwbG95Py5mb3JjZSxcbiAgICBwYXJhbWV0ZXJzOiBjb25maWcuZGVwbG95Py5wYXJhbWV0ZXJzLFxuICAgIG91dHB1dHNGaWxlOiBjb25maWcuZGVwbG95Py5vdXRwdXRzRmlsZSxcbiAgICBwcmV2aW91c1BhcmFtZXRlcnM6IGNvbmZpZy5kZXBsb3k/LnByZXZpb3VzUGFyYW1ldGVycyxcbiAgICB0b29sa2l0U3RhY2tOYW1lOiBjb25maWcuZGVwbG95Py50b29sa2l0U3RhY2tOYW1lLFxuICAgIHByb2dyZXNzOiBjb25maWcuZGVwbG95Py5wcm9ncmVzcyxcbiAgICByb2xsYmFjazogY29uZmlnLmRlcGxveT8ucm9sbGJhY2ssXG4gICAgaG90c3dhcDogY29uZmlnLmRlcGxveT8uaG90c3dhcCxcbiAgICBob3Rzd2FwRmFsbGJhY2s6IGNvbmZpZy5kZXBsb3k/LmhvdHN3YXBGYWxsYmFjayxcbiAgICBob3Rzd2FwRWNzTWluaW11bUhlYWx0aHlQZXJjZW50OiBjb25maWcuZGVwbG95Py5ob3Rzd2FwRWNzTWluaW11bUhlYWx0aHlQZXJjZW50LFxuICAgIGhvdHN3YXBFY3NNYXhpbXVtSGVhbHRoeVBlcmNlbnQ6IGNvbmZpZy5kZXBsb3k/LmhvdHN3YXBFY3NNYXhpbXVtSGVhbHRoeVBlcmNlbnQsXG4gICAgaG90c3dhcEVjc1N0YWJpbGl6YXRpb25UaW1lb3V0U2Vjb25kczogY29uZmlnLmRlcGxveT8uaG90c3dhcEVjc1N0YWJpbGl6YXRpb25UaW1lb3V0U2Vjb25kcyxcbiAgICB3YXRjaDogY29uZmlnLmRlcGxveT8ud2F0Y2gsXG4gICAgbG9nczogY29uZmlnLmRlcGxveT8ubG9ncyxcbiAgICBjb25jdXJyZW5jeTogY29uZmlnLmRlcGxveT8uY29uY3VycmVuY3ksXG4gICAgYXNzZXRQYXJhbGxlbGlzbTogY29uZmlnLmRlcGxveT8uYXNzZXRQYXJhbGxlbGlzbSxcbiAgICBhc3NldFByZWJ1aWxkOiBjb25maWcuZGVwbG95Py5hc3NldFByZWJ1aWxkLFxuICAgIGlnbm9yZU5vU3RhY2tzOiBjb25maWcuZGVwbG95Py5pZ25vcmVOb1N0YWNrcyxcbiAgfTtcbiAgY29uc3Qgcm9sbGJhY2tPcHRpb25zID0ge1xuICAgIGFsbDogY29uZmlnLnJvbGxiYWNrPy5hbGwsXG4gICAgdG9vbGtpdFN0YWNrTmFtZTogY29uZmlnLnJvbGxiYWNrPy50b29sa2l0U3RhY2tOYW1lLFxuICAgIGZvcmNlOiBjb25maWcucm9sbGJhY2s/LmZvcmNlLFxuICAgIHZhbGlkYXRlQm9vdHN0cmFwVmVyc2lvbjogY29uZmlnLnJvbGxiYWNrPy52YWxpZGF0ZUJvb3RzdHJhcFZlcnNpb24sXG4gICAgb3JwaGFuOiBjb25maWcucm9sbGJhY2s/Lm9ycGhhbixcbiAgfTtcbiAgY29uc3QgaW1wb3J0T3B0aW9ucyA9IHtcbiAgICBleGVjdXRlOiBjb25maWcuaW1wb3J0Py5leGVjdXRlLFxuICAgIGNoYW5nZVNldE5hbWU6IGNvbmZpZy5pbXBvcnQ/LmNoYW5nZVNldE5hbWUsXG4gICAgdG9vbGtpdFN0YWNrTmFtZTogY29uZmlnLmltcG9ydD8udG9vbGtpdFN0YWNrTmFtZSxcbiAgICByb2xsYmFjazogY29uZmlnLmltcG9ydD8ucm9sbGJhY2ssXG4gICAgZm9yY2U6IGNvbmZpZy5pbXBvcnQ/LmZvcmNlLFxuICAgIHJlY29yZFJlc291cmNlTWFwcGluZzogY29uZmlnLmltcG9ydD8ucmVjb3JkUmVzb3VyY2VNYXBwaW5nLFxuICAgIHJlc291cmNlTWFwcGluZzogY29uZmlnLmltcG9ydD8ucmVzb3VyY2VNYXBwaW5nLFxuICB9O1xuICBjb25zdCB3YXRjaE9wdGlvbnMgPSB7XG4gICAgYnVpbGRFeGNsdWRlOiBjb25maWcud2F0Y2g/LmJ1aWxkRXhjbHVkZSxcbiAgICBleGNsdXNpdmVseTogY29uZmlnLndhdGNoPy5leGNsdXNpdmVseSxcbiAgICBjaGFuZ2VTZXROYW1lOiBjb25maWcud2F0Y2g/LmNoYW5nZVNldE5hbWUsXG4gICAgZm9yY2U6IGNvbmZpZy53YXRjaD8uZm9yY2UsXG4gICAgdG9vbGtpdFN0YWNrTmFtZTogY29uZmlnLndhdGNoPy50b29sa2l0U3RhY2tOYW1lLFxuICAgIHByb2dyZXNzOiBjb25maWcud2F0Y2g/LnByb2dyZXNzLFxuICAgIHJvbGxiYWNrOiBjb25maWcud2F0Y2g/LnJvbGxiYWNrLFxuICAgIGhvdHN3YXA6IGNvbmZpZy53YXRjaD8uaG90c3dhcCxcbiAgICBob3Rzd2FwRmFsbGJhY2s6IGNvbmZpZy53YXRjaD8uaG90c3dhcEZhbGxiYWNrLFxuICAgIGhvdHN3YXBFY3NNaW5pbXVtSGVhbHRoeVBlcmNlbnQ6IGNvbmZpZy53YXRjaD8uaG90c3dhcEVjc01pbmltdW1IZWFsdGh5UGVyY2VudCxcbiAgICBob3Rzd2FwRWNzTWF4aW11bUhlYWx0aHlQZXJjZW50OiBjb25maWcud2F0Y2g/LmhvdHN3YXBFY3NNYXhpbXVtSGVhbHRoeVBlcmNlbnQsXG4gICAgaG90c3dhcEVjc1N0YWJpbGl6YXRpb25UaW1lb3V0U2Vjb25kczogY29uZmlnLndhdGNoPy5ob3Rzd2FwRWNzU3RhYmlsaXphdGlvblRpbWVvdXRTZWNvbmRzLFxuICAgIGxvZ3M6IGNvbmZpZy53YXRjaD8ubG9ncyxcbiAgICBjb25jdXJyZW5jeTogY29uZmlnLndhdGNoPy5jb25jdXJyZW5jeSxcbiAgfTtcbiAgY29uc3QgZGVzdHJveU9wdGlvbnMgPSB7XG4gICAgYWxsOiBjb25maWcuZGVzdHJveT8uYWxsLFxuICAgIGV4Y2x1c2l2ZWx5OiBjb25maWcuZGVzdHJveT8uZXhjbHVzaXZlbHksXG4gICAgZm9yY2U6IGNvbmZpZy5kZXN0cm95Py5mb3JjZSxcbiAgfTtcbiAgY29uc3QgZGlmZk9wdGlvbnMgPSB7XG4gICAgZXhjbHVzaXZlbHk6IGNvbmZpZy5kaWZmPy5leGNsdXNpdmVseSxcbiAgICBjb250ZXh0TGluZXM6IGNvbmZpZy5kaWZmPy5jb250ZXh0TGluZXMsXG4gICAgdGVtcGxhdGU6IGNvbmZpZy5kaWZmPy50ZW1wbGF0ZSxcbiAgICBzdHJpY3Q6IGNvbmZpZy5kaWZmPy5zdHJpY3QsXG4gICAgc2VjdXJpdHlPbmx5OiBjb25maWcuZGlmZj8uc2VjdXJpdHlPbmx5LFxuICAgIGZhaWw6IGNvbmZpZy5kaWZmPy5mYWlsLFxuICAgIHByb2Nlc3NlZDogY29uZmlnLmRpZmY/LnByb2Nlc3NlZCxcbiAgICBxdWlldDogY29uZmlnLmRpZmY/LnF1aWV0LFxuICAgIGNoYW5nZVNldDogY29uZmlnLmRpZmY/LmNoYW5nZVNldCxcbiAgICBpbXBvcnRFeGlzdGluZ1Jlc291cmNlczogY29uZmlnLmRpZmY/LmltcG9ydEV4aXN0aW5nUmVzb3VyY2VzLFxuICB9O1xuICBjb25zdCBkcmlmdE9wdGlvbnMgPSB7XG4gICAgZmFpbDogY29uZmlnLmRyaWZ0Py5mYWlsLFxuICB9O1xuICBjb25zdCBtZXRhZGF0YU9wdGlvbnMgPSB7fTtcbiAgY29uc3QgYWNrbm93bGVkZ2VPcHRpb25zID0ge307XG4gIGNvbnN0IG5vdGljZXNPcHRpb25zID0ge1xuICAgIHVuYWNrbm93bGVkZ2VkOiBjb25maWcubm90aWNlcz8udW5hY2tub3dsZWRnZWQsXG4gIH07XG4gIGNvbnN0IGluaXRPcHRpb25zID0ge1xuICAgIGxhbmd1YWdlOiBjb25maWcuaW5pdD8ubGFuZ3VhZ2UsXG4gICAgbGlzdDogY29uZmlnLmluaXQ/Lmxpc3QsXG4gICAgZ2VuZXJhdGVPbmx5OiBjb25maWcuaW5pdD8uZ2VuZXJhdGVPbmx5LFxuICAgIGxpYlZlcnNpb246IGNvbmZpZy5pbml0Py5saWJWZXJzaW9uLFxuICB9O1xuICBjb25zdCBtaWdyYXRlT3B0aW9ucyA9IHtcbiAgICBzdGFja05hbWU6IGNvbmZpZy5taWdyYXRlPy5zdGFja05hbWUsXG4gICAgbGFuZ3VhZ2U6IGNvbmZpZy5taWdyYXRlPy5sYW5ndWFnZSxcbiAgICBhY2NvdW50OiBjb25maWcubWlncmF0ZT8uYWNjb3VudCxcbiAgICByZWdpb246IGNvbmZpZy5taWdyYXRlPy5yZWdpb24sXG4gICAgZnJvbVBhdGg6IGNvbmZpZy5taWdyYXRlPy5mcm9tUGF0aCxcbiAgICBmcm9tU3RhY2s6IGNvbmZpZy5taWdyYXRlPy5mcm9tU3RhY2ssXG4gICAgb3V0cHV0UGF0aDogY29uZmlnLm1pZ3JhdGU/Lm91dHB1dFBhdGgsXG4gICAgZnJvbVNjYW46IGNvbmZpZy5taWdyYXRlPy5mcm9tU2NhbixcbiAgICBmaWx0ZXI6IGNvbmZpZy5taWdyYXRlPy5maWx0ZXIsXG4gICAgY29tcHJlc3M6IGNvbmZpZy5taWdyYXRlPy5jb21wcmVzcyxcbiAgfTtcbiAgY29uc3QgY29udGV4dE9wdGlvbnMgPSB7XG4gICAgcmVzZXQ6IGNvbmZpZy5jb250ZXh0Py5yZXNldCxcbiAgICBmb3JjZTogY29uZmlnLmNvbnRleHQ/LmZvcmNlLFxuICAgIGNsZWFyOiBjb25maWcuY29udGV4dD8uY2xlYXIsXG4gIH07XG4gIGNvbnN0IGRvY3NPcHRpb25zID0ge1xuICAgIGJyb3dzZXI6IGNvbmZpZy5kb2NzPy5icm93c2VyLFxuICB9O1xuICBjb25zdCBkb2N0b3JPcHRpb25zID0ge307XG4gIGNvbnN0IHJlZmFjdG9yT3B0aW9ucyA9IHtcbiAgICBkcnlSdW46IGNvbmZpZy5yZWZhY3Rvcj8uZHJ5UnVuLFxuICAgIGV4Y2x1ZGVGaWxlOiBjb25maWcucmVmYWN0b3I/LmV4Y2x1ZGVGaWxlLFxuICAgIG1hcHBpbmdGaWxlOiBjb25maWcucmVmYWN0b3I/Lm1hcHBpbmdGaWxlLFxuICAgIHJldmVydDogY29uZmlnLnJlZmFjdG9yPy5yZXZlcnQsXG4gIH07XG4gIGNvbnN0IGNsaVRlbGVtZXRyeU9wdGlvbnMgPSB7XG4gICAgZW5hYmxlOiBjb25maWcuY2xpVGVsZW1ldHJ5Py5lbmFibGUsXG4gICAgZGlzYWJsZTogY29uZmlnLmNsaVRlbGVtZXRyeT8uZGlzYWJsZSxcbiAgfTtcbiAgY29uc3QgdXNlcklucHV0OiBVc2VySW5wdXQgPSB7XG4gICAgZ2xvYmFsT3B0aW9ucyxcbiAgICBsaXN0OiBsaXN0T3B0aW9ucyxcbiAgICBzeW50aDogc3ludGhPcHRpb25zLFxuICAgIGJvb3RzdHJhcDogYm9vdHN0cmFwT3B0aW9ucyxcbiAgICBnYzogZ2NPcHRpb25zLFxuICAgIGRlcGxveTogZGVwbG95T3B0aW9ucyxcbiAgICByb2xsYmFjazogcm9sbGJhY2tPcHRpb25zLFxuICAgIGltcG9ydDogaW1wb3J0T3B0aW9ucyxcbiAgICB3YXRjaDogd2F0Y2hPcHRpb25zLFxuICAgIGRlc3Ryb3k6IGRlc3Ryb3lPcHRpb25zLFxuICAgIGRpZmY6IGRpZmZPcHRpb25zLFxuICAgIGRyaWZ0OiBkcmlmdE9wdGlvbnMsXG4gICAgbWV0YWRhdGE6IG1ldGFkYXRhT3B0aW9ucyxcbiAgICBhY2tub3dsZWRnZTogYWNrbm93bGVkZ2VPcHRpb25zLFxuICAgIG5vdGljZXM6IG5vdGljZXNPcHRpb25zLFxuICAgIGluaXQ6IGluaXRPcHRpb25zLFxuICAgIG1pZ3JhdGU6IG1pZ3JhdGVPcHRpb25zLFxuICAgIGNvbnRleHQ6IGNvbnRleHRPcHRpb25zLFxuICAgIGRvY3M6IGRvY3NPcHRpb25zLFxuICAgIGRvY3RvcjogZG9jdG9yT3B0aW9ucyxcbiAgICByZWZhY3RvcjogcmVmYWN0b3JPcHRpb25zLFxuICAgIGNsaVRlbGVtZXRyeTogY2xpVGVsZW1ldHJ5T3B0aW9ucyxcbiAgfTtcblxuICByZXR1cm4gdXNlcklucHV0O1xufVxuIl19
|
|
496
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydC10by11c2VyLWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29udmVydC10by11c2VyLWlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBU0EsMERBaVNDO0FBR0QsNERBNk5DO0FBbGdCRCxvQkFBb0I7QUFDcEIsU0FBZ0IsdUJBQXVCLENBQUMsSUFBUztJQUMvQyxNQUFNLGFBQWEsR0FBa0I7UUFDbkMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1FBQ2IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1FBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztRQUNyQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07UUFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1FBQ2pCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtRQUNuQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87UUFDckIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1FBQy9CLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtRQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztRQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7UUFDakIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1FBQ3JCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztRQUNqQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7UUFDL0IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1FBQ3ZCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7UUFDdkMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1FBQy9CLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtRQUNqQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87UUFDckIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1FBQ3JCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtRQUNuQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87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InNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEdFTkVSQVRFRCBGUk9NIHBhY2thZ2VzL2F3cy1jZGsvbGliL2NsaS9jbGktY29uZmlnLnRzLlxuLy8gRG8gbm90IGVkaXQgYnkgaGFuZDsgYWxsIGNoYW5nZXMgd2lsbCBiZSBvdmVyd3JpdHRlbiBhdCBidWlsZCB0aW1lIGZyb20gdGhlIGNvbmZpZyBmaWxlLlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLyogZXNsaW50LWRpc2FibGUgQHN0eWxpc3RpYy9tYXgtbGVuLCBAdHlwZXNjcmlwdC1lc2xpbnQvY29uc2lzdGVudC10eXBlLWltcG9ydHMgKi9cbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICcuL3VzZXItY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBVc2VySW5wdXQsIEdsb2JhbE9wdGlvbnMgfSBmcm9tICcuL3VzZXItaW5wdXQnO1xuXG4vLyBAdHMtaWdub3JlIFRTNjEzM1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRZYXJnc1RvVXNlcklucHV0KGFyZ3M6IGFueSk6IFVzZXJJbnB1dCB7XG4gIGNvbnN0IGdsb2JhbE9wdGlvbnM6IEdsb2JhbE9wdGlvbnMgPSB7XG4gICAgYXBwOiBhcmdzLmFwcCxcbiAgICBidWlsZDogYXJncy5idWlsZCxcbiAgICBjb250ZXh0OiBhcmdzLmNvbnRleHQsXG4gICAgcGx1Z2luOiBhcmdzLnBsdWdpbixcbiAgICB0cmFjZTogYXJncy50cmFjZSxcbiAgICBzdHJpY3Q6IGFyZ3Muc3RyaWN0LFxuICAgIGxvb2t1cHM6IGFyZ3MubG9va3VwcyxcbiAgICBpZ25vcmVFcnJvcnM6IGFyZ3MuaWdub3JlRXJyb3JzLFxuICAgIGpzb246IGFyZ3MuanNvbixcbiAgICB2ZXJib3NlOiBhcmdzLnZlcmJvc2UsXG4gICAgZGVidWc6IGFyZ3MuZGVidWcsXG4gICAgcHJvZmlsZTogYXJncy5wcm9maWxlLFxuICAgIHByb3h5OiBhcmdzLnByb3h5LFxuICAgIGNhQnVuZGxlUGF0aDogYXJncy5jYUJ1bmRsZVBhdGgsXG4gICAgZWMyY3JlZHM6IGFyZ3MuZWMyY3JlZHMsXG4gICAgdmVyc2lvblJlcG9ydGluZzogYXJncy52ZXJzaW9uUmVwb3J0aW5nLFxuICAgIHBhdGhNZXRhZGF0YTogYXJncy5wYXRoTWV0YWRhdGEsXG4gICAgYXNzZXRNZXRhZGF0YTogYXJncy5hc3NldE1ldGFkYXRhLFxuICAgIHJvbGVBcm46IGFyZ3Mucm9sZUFybixcbiAgICBzdGFnaW5nOiBhcmdzLnN0YWdpbmcsXG4gICAgb3V0cHV0OiBhcmdzLm91dHB1dCxcbiAgICBub3RpY2VzOiBhcmdzLm5vdGljZXMsXG4gICAgbm9Db2xvcjogYXJncy5ub0NvbG9yLFxuICAgIGNpOiBhcmdzLmNpLFxuICAgIHVuc3RhYmxlOiBhcmdzLnVuc3RhYmxlLFxuICAgIHRlbGVtZXRyeUZpbGU6IGFyZ3MudGVsZW1ldHJ5RmlsZSxcbiAgfTtcbiAgbGV0IGNvbW1hbmRPcHRpb25zO1xuICBzd2l0Y2ggKGFyZ3MuX1swXSBhcyBDb21tYW5kKSB7XG4gICAgY2FzZSAnbGlzdCc6XG4gICAgY2FzZSAnbHMnOlxuICAgICAgY29tbWFuZE9wdGlvbnMgPSB7XG4gICAgICAgIGxvbmc6IGFyZ3MubG9uZyxcbiAgICAgICAgc2hvd0RlcGVuZGVuY2llczogYXJncy5zaG93RGVwZW5kZW5jaWVzLFxuICAgICAgICBTVEFDS1M6IGFyZ3MuU1RBQ0tTLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnc3ludGgnOlxuICAgIGNhc2UgJ3N5bnRoZXNpemUnOlxuICAgICAgY29tbWFuZE9wdGlvbnMgPSB7XG4gICAgICAgIGV4Y2x1c2l2ZWx5OiBhcmdzLmV4Y2x1c2l2ZWx5LFxuICAgICAgICB2YWxpZGF0aW9uOiBhcmdzLnZhbGlkYXRpb24sXG4gICAgICAgIHF1aWV0OiBhcmdzLnF1aWV0LFxuICAgICAgICBTVEFDS1M6IGFyZ3MuU1RBQ0tTLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnYm9vdHN0cmFwJzpcbiAgICAgIGNvbW1hbmRPcHRpb25zID0ge1xuICAgICAgICBib290c3RyYXBCdWNrZXROYW1lOiBhcmdzLmJvb3RzdHJhcEJ1Y2tldE5hbWUsXG4gICAgICAgIGJvb3RzdHJhcEttc0tleUlkOiBhcmdzLmJvb3RzdHJhcEttc0tleUlkLFxuICAgICAgICBleGFtcGxlUGVybWlzc2lvbnNCb3VuZGFyeTogYXJncy5leGFtcGxlUGVybWlzc2lvbnNCb3VuZGFyeSxcbiAgICAgICAgY3VzdG9tUGVybWlzc2lvbnNCb3VuZGFyeTogYXJncy5jdXN0b21QZXJtaXNzaW9uc0JvdW5kYXJ5LFxuICAgICAgICBib290c3RyYXBDdXN0b21lcktleTogYXJncy5ib290c3RyYXBDdXN0b21lcktleSxcbiAgICAgICAgcXVhbGlmaWVyOiBhcmdzLnF1YWxpZmllcixcbiAgICAgICAgcHVibGljQWNjZXNzQmxvY2tDb25maWd1cmF0aW9uOiBhcmdzLnB1YmxpY0FjY2Vzc0Jsb2NrQ29uZmlndXJhdGlvbixcbiAgICAgICAgdGFnczogYXJncy50YWdzLFxuICAgICAgICBleGVjdXRlOiBhcmdzLmV4ZWN1dGUsXG4gICAgICAgIHRydXN0OiBhcmdzLnRydXN0LFxuICAgICAgICB0cnVzdEZvckxvb2t1cDogYXJncy50cnVzdEZvckxvb2t1cCxcbiAgICAgICAgdW50cnVzdDogYXJncy51bnRydXN0LFxuICAgICAgICBjbG91ZGZvcm1hdGlvbkV4ZWN1dGlvblBvbGljaWVzOiBhcmdzLmNsb3VkZm9ybWF0aW9uRXhlY3V0aW9uUG9saWNpZXMsXG4gICAgICAgIGZvcmNlOiBhcmdzLmZvcmNlLFxuICAgICAgICB0ZXJtaW5hdGlvblByb3RlY3Rpb246IGFyZ3MudGVybWluYXRpb25Qcm90ZWN0aW9uLFxuICAgICAgICBzaG93VGVtcGxhdGU6IGFyZ3Muc2hvd1RlbXBsYXRlLFxuICAgICAgICB0b29sa2l0U3RhY2tOYW1lOiBhcmdzLnRvb2xraXRTdGFja05hbWUsXG4gICAgICAgIHRlbXBsYXRlOiBhcmdzLnRlbXBsYXRlLFxuICAgICAgICBwcmV2aW91c1BhcmFtZXRlcnM6IGFyZ3MucHJldmlvdXNQYXJhbWV0ZXJzLFxuICAgICAgICBFTlZJUk9OTUVOVFM6IGFyZ3MuRU5WSVJPTk1FTlRTLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnZ2MnOlxuICAgICAgY29tbWFuZE9wdGlvbnMgPSB7XG4gICAgICAgIGFjdGlvbjogYXJncy5hY3Rpb24sXG4gICAgICAgIHR5cGU6IGFyZ3MudHlwZSxcbiAgICAgICAgcm9sbGJhY2tCdWZmZXJEYXlzOiBhcmdzLnJvbGxiYWNrQnVmZmVyRGF5cyxcbiAgICAgICAgY3JlYXRlZEJ1ZmZlckRheXM6IGFyZ3MuY3JlYXRlZEJ1ZmZlckRheXMsXG4gICAgICAgIGNvbmZpcm06IGFyZ3MuY29uZmlybSxcbiAgICAgICAgYm9vdHN0cmFwU3RhY2tOYW1lOiBhcmdzLmJvb3RzdHJhcFN0YWNrTmFtZSxcbiAgICAgICAgRU5WSVJPTk1FTlRTOiBhcmdzLkVOVklST05NRU5UUyxcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2ZsYWdzJzpcbiAgICAgIGNvbW1hbmRPcHRpb25zID0ge307XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2RlcGxveSc6XG4gICAgICBjb21tYW5kT3B0aW9ucyA9IHtcbiAgICAgICAgYWxsOiBhcmdzLmFsbCxcbiAgICAgICAgYnVpbGRFeGNsdWRlOiBhcmdzLmJ1aWxkRXhjbHVkZSxcbiAgICAgICAgZXhjbHVzaXZlbHk6IGFyZ3MuZXhjbHVzaXZlbHksXG4gICAgICAgIHJlcXVpcmVBcHByb3ZhbDogYXJncy5yZXF1aXJlQXBwcm92YWwsXG4gICAgICAgIG5vdGlmaWNhdGlvbkFybnM6IGFyZ3Mubm90aWZpY2F0aW9uQXJucyxcbiAgICAgICAgdGFnczogYXJncy50YWdzLFxuICAgICAgICBleGVjdXRlOiBhcmdzLmV4ZWN1dGUsXG4gICAgICAgIGNoYW5nZVNldE5hbWU6IGFyZ3MuY2hhbmdlU2V0TmFtZSxcbiAgICAgICAgbWV0aG9kOiBhcmdzLm1ldGhvZCxcbiAgICAgICAgaW1wb3J0RXhpc3RpbmdSZXNvdXJjZXM6IGFyZ3MuaW1wb3J0RXhpc3RpbmdSZXNvdXJjZXMsXG4gICAgICAgIGZvcmNlOiBhcmdzLmZvcmNlLFxuICAgICAgICBwYXJhbWV0ZXJzOiBhcmdzLnBhcmFtZXRlcnMsXG4gICAgICAgIG91dHB1dHNGaWxlOiBhcmdzLm91dHB1dHNGaWxlLFxuICAgICAgICBwcmV2aW91c1BhcmFtZXRlcnM6IGFyZ3MucHJldmlvdXNQYXJhbWV0ZXJzLFxuICAgICAgICB0b29sa2l0U3RhY2tOYW1lOiBhcmdzLnRvb2xraXRTdGFja05hbWUsXG4gICAgICAgIHByb2dyZXNzOiBhcmdzLnByb2dyZXNzLFxuICAgICAgICByb2xsYmFjazogYXJncy5yb2xsYmFjayxcbiAgICAgICAgaG90c3dhcDogYXJncy5ob3Rzd2FwLFxuICAgICAgICBob3Rzd2FwRmFsbGJhY2s6IGFyZ3MuaG90c3dhcEZhbGxiYWNrLFxuICAgICAgICBob3Rzd2FwRWNzTWluaW11bUhlYWx0aHlQZXJjZW50OiBhcmdzLmhvdHN3YXBFY3NNaW5pbXVtSGVhbHRoeVBlcmNlbnQsXG4gICAgICAgIGhvdHN3YXBFY3NNYXhpbXVtSGVhbHRoeVBlcmNlbnQ6IGFyZ3MuaG90c3dhcEVjc01heGltdW1IZWFsdGh5UGVyY2VudCxcbiAgICAgICAgaG90c3dhcEVjc1N0YWJpbGl6YXRpb25UaW1lb3V0U2Vjb25kczogYXJncy5ob3Rzd2FwRWNzU3RhYmlsaXphdGlvblRpbWVvdXRTZWNvbmRzLFxuICAgICAgICB3YXRjaDogYXJncy53YXRjaCxcbiAgICAgICAgbG9nczogYXJncy5sb2dzLFxuICAgICAgICBjb25jdXJyZW5jeTogYXJncy5jb25jdXJyZW5jeSxcbiAgICAgICAgYXNzZXRQYXJhbGxlbGlzbTogYXJncy5hc3NldFBhcmFsbGVsaXNtLFxuICAgICAgICBhc3NldFByZWJ1aWxkOiBhcmdzLmFzc2V0UHJlYnVpbGQsXG4gICAgICAgIGlnbm9yZU5vU3RhY2tzOiBhcmdzLmlnbm9yZU5vU3RhY2tzLFxuICAgICAgICBTVEFDS1M6IGFyZ3MuU1RBQ0tTLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAncm9sbGJhY2snOlxuICAgICAgY29tbWFuZE9wdGlvbnMgPSB7XG4gICAgICAgIGFsbDogYXJncy5hbGwsXG4gICAgICAgIHRvb2xraXRTdGFja05hbWU6IGFyZ3MudG9vbGtpdFN0YWNrTmFtZSxcbiAgICAgICAgZm9yY2U6IGFyZ3MuZm9yY2UsXG4gICAgICAgIHZhbGlkYXRlQm9vdHN0cmFwVmVyc2lvbjogYXJncy52YWxpZGF0ZUJvb3RzdHJhcFZlcnNpb24sXG4gICAgICAgIG9ycGhhbjogYXJncy5vcnBoYW4sXG4gICAgICAgIFNUQUNLUzogYXJncy5TVEFDS1MsXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdpbXBvcnQnOlxuICAgICAgY29tbWFuZE9wdGlvbnMgPSB7XG4gICAgICAgIGV4ZWN1dGU6IGFyZ3MuZXhlY3V0ZSxcbiAgICAgICAgY2hhbmdlU2V0TmFtZTogYXJncy5jaGFuZ2VTZXROYW1lLFxuICAgICAgICB0b29sa2l0U3RhY2tOYW1lOiBhcmdzLnRvb2xraXRTdGFja05hbWUsXG4gICAgICAgIHJvbGxiYWNrOiBhcmdzLnJvbGxiYWNrLFxuICAgICAgICBmb3JjZTogYXJncy5mb3JjZSxcbiAgICAgICAgcmVjb3JkUmVzb3VyY2VNYXBwaW5nOiBhcmdzLnJlY29yZFJlc291cmNlTWFwcGluZyxcbiAgICAgICAgcmVzb3VyY2VNYXBwaW5nOiBhcmdzLnJlc291cmNlTWFwcGluZyxcbiAgICAgICAgU1RBQ0s6IGFyZ3MuU1RBQ0ssXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICd3YXRjaCc6XG4gICAgICBjb21tYW5kT3B0aW9ucyA9IHtcbiAgICAgICAgYnVpbGRFeGNsdWRlOiBhcmdzLmJ1aWxkRXhjbHVkZSxcbiAgICAgICAgZXhjbHVzaXZlbHk6IGFyZ3MuZXhjbHVzaXZlbHksXG4gICAgICAgIGNoYW5nZVNldE5hbWU6IGFyZ3MuY2hhbmdlU2V0TmFtZSxcbiAgICAgICAgZm9yY2U6IGFyZ3MuZm9yY2UsXG4gICAgICAgIHRvb2xraXRTdGFja05hbWU6IGFyZ3MudG9vbGtpdFN0YWNrTmFtZSxcbiAgICAgICAgcHJvZ3Jlc3M6IGFyZ3MucHJvZ3Jlc3MsXG4gICAgICAgIHJvbGxiYWNrOiBhcmdzLnJvbGxiYWNrLFxuICAgICAgICBob3Rzd2FwOiBhcmdzLmhvdHN3YXAsXG4gICAgICAgIGhvdHN3YXBGYWxsYmFjazogYXJncy5ob3Rzd2FwRmFsbGJhY2ssXG4gICAgICAgIGhvdHN3YXBFY3NNaW5pbXVtSGVhbHRoeVBlcmNlbnQ6IGFyZ3MuaG90c3dhcEVjc01pbmltdW1IZWFsdGh5UGVyY2VudCxcbiAgICAgICAgaG90c3dhcEVjc01heGltdW1IZWFsdGh5UGVyY2VudDogYXJncy5ob3Rzd2FwRWNzTWF4aW11bUhlYWx0aHlQZXJjZW50LFxuICAgICAgICBob3Rzd2FwRWNzU3RhYmlsaXphdGlvblRpbWVvdXRTZWNvbmRzOiBhcmdzLmhvdHN3YXBFY3NTdGFiaWxpemF0aW9uVGltZW91dFNlY29uZHMsXG4gICAgICAgIGxvZ3M6IGFyZ3MubG9ncyxcbiAgICAgICAgY29uY3VycmVuY3k6IGFyZ3MuY29uY3VycmVuY3ksXG4gICAgICAgIFNUQUNLUzogYXJncy5TVEFDS1MsXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdkZXN0cm95JzpcbiAgICAgIGNvbW1hbmRPcHRpb25zID0ge1xuICAgICAgICBhbGw6IGFyZ3MuYWxsLFxuICAgICAgICBleGNsdXNpdmVseTogYXJncy5leGNsdXNpdmVseSxcbiAgICAgICAgZm9yY2U6IGFyZ3MuZm9yY2UsXG4gICAgICAgIFNUQUNLUzogYXJncy5TVEFDS1MsXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdkaWZmJzpcbiAgICAgIGNvbW1hbmRPcHRpb25zID0ge1xuICAgICAgICBleGNsdXNpdmVseTogYXJncy5leGNsdXNpdmVseSxcbiAgICAgICAgY29udGV4dExpbmVzOiBhcmdzLmNvbnRleHRMaW5lcyxcbiAgICAgICAgdGVtcGxhdGU6IGFyZ3MudGVtcGxhdGUsXG4gICAgICAgIHN0cmljdDogYXJncy5zdHJpY3QsXG4gICAgICAgIHNlY3VyaXR5T25seTogYXJncy5zZWN1cml0eU9ubHksXG4gICAgICAgIGZhaWw6IGFyZ3MuZmFpbCxcbiAgICAgICAgcHJvY2Vzc2VkOiBhcmdzLnByb2Nlc3NlZCxcbiAgICAgICAgcXVpZXQ6IGFyZ3MucXVpZXQsXG4gICAgICAgIGNoYW5nZVNldDogYXJncy5jaGFuZ2VTZXQsXG4gICAgICAgIGltcG9ydEV4aXN0aW5nUmVzb3VyY2VzOiBhcmdzLmltcG9ydEV4aXN0aW5nUmVzb3VyY2VzLFxuICAgICAgICBpbmNsdWRlTW92ZXM6IGFyZ3MuaW5jbHVkZU1vdmVzLFxuICAgICAgICBTVEFDS1M6IGFyZ3MuU1RBQ0tTLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnZHJpZnQnOlxuICAgICAgY29tbWFuZE9wdGlvbnMgPSB7XG4gICAgICAgIGZhaWw6IGFyZ3MuZmFpbCxcbiAgICAgICAgU1RBQ0tTOiBhcmdzLlNUQUNLUyxcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ21ldGFkYXRhJzpcbiAgICAgIGNvbW1hbmRPcHRpb25zID0ge1xuICAgICAgICBTVEFDSzogYXJncy5TVEFDSyxcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2Fja25vd2xlZGdlJzpcbiAgICBjYXNlICdhY2snOlxuICAgICAgY29tbWFuZE9wdGlvbnMgPSB7XG4gICAgICAgIElEOiBhcmdzLklELFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnbm90aWNlcyc6XG4gICAgICBjb21tYW5kT3B0aW9ucyA9IHtcbiAgICAgICAgdW5hY2tub3dsZWRnZWQ6IGFyZ3MudW5hY2tub3dsZWRnZWQsXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdpbml0JzpcbiAgICAgIGNvbW1hbmRPcHRpb25zID0ge1xuICAgICAgICBsYW5ndWFnZTogYXJncy5sYW5ndWFnZSxcbiAgICAgICAgbGlzdDogYXJncy5saXN0LFxuICAgICAgICBnZW5lcmF0ZU9ubHk6IGFyZ3MuZ2VuZXJhdGVPbmx5LFxuICAgICAgICBsaWJWZXJzaW9uOiBhcmdzLmxpYlZlcnNpb24sXG4gICAgICAgIFRFTVBMQVRFOiBhcmdzLlRFTVBMQVRFLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnbWlncmF0ZSc6XG4gICAgICBjb21tYW5kT3B0aW9ucyA9IHtcbiAgICAgICAgc3RhY2tOYW1lOiBhcmdzLnN0YWNrTmFtZSxcbiAgICAgICAgbGFuZ3VhZ2U6IGFyZ3MubGFuZ3VhZ2UsXG4gICAgICAgIGFjY291bnQ6IGFyZ3MuYWNjb3VudCxcbiAgICAgICAgcmVnaW9uOiBhcmdzLnJlZ2lvbixcbiAgICAgICAgZnJvbVBhdGg6IGFyZ3MuZnJvbVBhdGgsXG4gICAgICAgIGZyb21TdGFjazogYXJncy5mcm9tU3RhY2ssXG4gICAgICAgIG91dHB1dFBhdGg6IGFyZ3Mub3V0cHV0UGF0aCxcbiAgICAgICAgZnJvbVNjYW46IGFyZ3MuZnJvbVNjYW4sXG4gICAgICAgIGZpbHRlcjogYXJncy5maWx0ZXIsXG4gICAgICAgIGNvbXByZXNzOiBhcmdzLmNvbXByZXNzLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnY29udGV4dCc6XG4gICAgICBjb21tYW5kT3B0aW9ucyA9IHtcbiAgICAgICAgcmVzZXQ6IGFyZ3MucmVzZXQsXG4gICAgICAgIGZvcmNlOiBhcmdzLmZvcmNlLFxuICAgICAgICBjbGVhcjogYXJncy5jbGVhcixcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2RvY3MnOlxuICAgIGNhc2UgJ2RvYyc6XG4gICAgICBjb21tYW5kT3B0aW9ucyA9IHtcbiAgICAgICAgYnJvd3NlcjogYXJncy5icm93c2VyLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnZG9jdG9yJzpcbiAgICAgIGNvbW1hbmRPcHRpb25zID0ge307XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ3JlZmFjdG9yJzpcbiAgICAgIGNvbW1hbmRPcHRpb25zID0ge1xuICAgICAgICBhZGRpdGlvbmFsU3RhY2tOYW1lOiBhcmdzLmFkZGl0aW9uYWxTdGFja05hbWUsXG4gICAgICAgIGRyeVJ1bjogYXJncy5kcnlSdW4sXG4gICAgICAgIG92ZXJyaWRlRmlsZTogYXJncy5vdmVycmlkZUZpbGUsXG4gICAgICAgIHJldmVydDogYXJncy5yZXZlcnQsXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdjbGktdGVsZW1ldHJ5JzpcbiAgICAgIGNvbW1hbmRPcHRpb25zID0ge1xuICAgICAgICBlbmFibGU6IGFyZ3MuZW5hYmxlLFxuICAgICAgICBkaXNhYmxlOiBhcmdzLmRpc2FibGUsXG4gICAgICAgIHN0YXR1czogYXJncy5zdGF0dXMsXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gIH1cbiAgY29uc3QgdXNlcklucHV0OiBVc2VySW5wdXQgPSB7XG4gICAgY29tbWFuZDogYXJncy5fWzBdLFxuICAgIGdsb2JhbE9wdGlvbnMsXG4gICAgW2FyZ3MuX1swXV06IGNvbW1hbmRPcHRpb25zLFxuICB9O1xuXG4gIHJldHVybiB1c2VySW5wdXQ7XG59XG5cbi8vIEB0cy1pZ25vcmUgVFM2MTMzXG5leHBvcnQgZnVuY3Rpb24gY29udmVydENvbmZpZ1RvVXNlcklucHV0KGNvbmZpZzogYW55KTogVXNlcklucHV0IHtcbiAgY29uc3QgZ2xvYmFsT3B0aW9uczogR2xvYmFsT3B0aW9ucyA9IHtcbiAgICBhcHA6IGNvbmZpZy5hcHAsXG4gICAgYnVpbGQ6IGNvbmZpZy5idWlsZCxcbiAgICBjb250ZXh0OiBjb25maWcuY29udGV4dCxcbiAgICBwbHVnaW46IGNvbmZpZy5wbHVnaW4sXG4gICAgdHJhY2U6IGNvbmZpZy50cmFjZSxcbiAgICBzdHJpY3Q6IGNvbmZpZy5zdHJpY3QsXG4gICAgbG9va3VwczogY29uZmlnLmxvb2t1cHMsXG4gICAgaWdub3JlRXJyb3JzOiBjb25maWcuaWdub3JlRXJyb3JzLFxuICAgIGpzb246IGNvbmZpZy5qc29uLFxuICAgIHZlcmJvc2U6IGNvbmZpZy52ZXJib3NlLFxuICAgIGRlYnVnOiBjb25maWcuZGVidWcsXG4gICAgcHJvZmlsZTogY29uZmlnLnByb2ZpbGUsXG4gICAgcHJveHk6IGNvbmZpZy5wcm94eSxcbiAgICBjYUJ1bmRsZVBhdGg6IGNvbmZpZy5jYUJ1bmRsZVBhdGgsXG4gICAgZWMyY3JlZHM6IGNvbmZpZy5lYzJjcmVkcyxcbiAgICB2ZXJzaW9uUmVwb3J0aW5nOiBjb25maWcudmVyc2lvblJlcG9ydGluZyxcbiAgICBwYXRoTWV0YWRhdGE6IGNvbmZpZy5wYXRoTWV0YWRhdGEsXG4gICAgYXNzZXRNZXRhZGF0YTogY29uZmlnLmFzc2V0TWV0YWRhdGEsXG4gICAgcm9sZUFybjogY29uZmlnLnJvbGVBcm4sXG4gICAgc3RhZ2luZzogY29uZmlnLnN0YWdpbmcsXG4gICAgb3V0cHV0OiBjb25maWcub3V0cHV0LFxuICAgIG5vdGljZXM6IGNvbmZpZy5ub3RpY2VzLFxuICAgIG5vQ29sb3I6IGNvbmZpZy5ub0NvbG9yLFxuICAgIGNpOiBjb25maWcuY2ksXG4gICAgdW5zdGFibGU6IGNvbmZpZy51bnN0YWJsZSxcbiAgICB0ZWxlbWV0cnlGaWxlOiBjb25maWcudGVsZW1ldHJ5RmlsZSxcbiAgfTtcbiAgY29uc3QgbGlzdE9wdGlvbnMgPSB7XG4gICAgbG9uZzogY29uZmlnLmxpc3Q/LmxvbmcsXG4gICAgc2hvd0RlcGVuZGVuY2llczogY29uZmlnLmxpc3Q/LnNob3dEZXBlbmRlbmNpZXMsXG4gIH07XG4gIGNvbnN0IHN5bnRoT3B0aW9ucyA9IHtcbiAgICBleGNsdXNpdmVseTogY29uZmlnLnN5bnRoPy5leGNsdXNpdmVseSxcbiAgICB2YWxpZGF0aW9uOiBjb25maWcuc3ludGg/LnZhbGlkYXRpb24sXG4gICAgcXVpZXQ6IGNvbmZpZy5zeW50aD8ucXVpZXQsXG4gIH07XG4gIGNvbnN0IGJvb3RzdHJhcE9wdGlvbnMgPSB7XG4gICAgYm9vdHN0cmFwQnVja2V0TmFtZTogY29uZmlnLmJvb3RzdHJhcD8uYm9vdHN0cmFwQnVja2V0TmFtZSxcbiAgICBib290c3RyYXBLbXNLZXlJZDogY29uZmlnLmJvb3RzdHJhcD8uYm9vdHN0cmFwS21zS2V5SWQsXG4gICAgZXhhbXBsZVBlcm1pc3Npb25zQm91bmRhcnk6IGNvbmZpZy5ib290c3RyYXA/LmV4YW1wbGVQZXJtaXNzaW9uc0JvdW5kYXJ5LFxuICAgIGN1c3RvbVBlcm1pc3Npb25zQm91bmRhcnk6IGNvbmZpZy5ib290c3RyYXA/LmN1c3RvbVBlcm1pc3Npb25zQm91bmRhcnksXG4gICAgYm9vdHN0cmFwQ3VzdG9tZXJLZXk6IGNvbmZpZy5ib290c3RyYXA/LmJvb3RzdHJhcEN1c3RvbWVyS2V5LFxuICAgIHF1YWxpZmllcjogY29uZmlnLmJvb3RzdHJhcD8ucXVhbGlmaWVyLFxuICAgIHB1YmxpY0FjY2Vzc0Jsb2NrQ29uZmlndXJhdGlvbjogY29uZmlnLmJvb3RzdHJhcD8ucHVibGljQWNjZXNzQmxvY2tDb25maWd1cmF0aW9uLFxuICAgIHRhZ3M6IGNvbmZpZy5ib290c3RyYXA/LnRhZ3MsXG4gICAgZXhlY3V0ZTogY29uZmlnLmJvb3RzdHJhcD8uZXhlY3V0ZSxcbiAgICB0cnVzdDogY29uZmlnLmJvb3RzdHJhcD8udHJ1c3QsXG4gICAgdHJ1c3RGb3JMb29rdXA6IGNvbmZpZy5ib290c3RyYXA/LnRydXN0Rm9yTG9va3VwLFxuICAgIHVudHJ1c3Q6IGNvbmZpZy5ib290c3RyYXA/LnVudHJ1c3QsXG4gICAgY2xvdWRmb3JtYXRpb25FeGVjdXRpb25Qb2xpY2llczogY29uZmlnLmJvb3RzdHJhcD8uY2xvdWRmb3JtYXRpb25FeGVjdXRpb25Qb2xpY2llcyxcbiAgICBmb3JjZTogY29uZmlnLmJvb3RzdHJhcD8uZm9yY2UsXG4gICAgdGVybWluYXRpb25Qcm90ZWN0aW9uOiBjb25maWcuYm9vdHN0cmFwPy50ZXJtaW5hdGlvblByb3RlY3Rpb24sXG4gICAgc2hvd1RlbXBsYXRlOiBjb25maWcuYm9vdHN0cmFwPy5zaG93VGVtcGxhdGUsXG4gICAgdG9vbGtpdFN0YWNrTmFtZTogY29uZmlnLmJvb3RzdHJhcD8udG9vbGtpdFN0YWNrTmFtZSxcbiAgICB0ZW1wbGF0ZTogY29uZmlnLmJvb3RzdHJhcD8udGVtcGxhdGUsXG4gICAgcHJldmlvdXNQYXJhbWV0ZXJzOiBjb25maWcuYm9vdHN0cmFwPy5wcmV2aW91c1BhcmFtZXRlcnMsXG4gIH07XG4gIGNvbnN0IGdjT3B0aW9ucyA9IHtcbiAgICBhY3Rpb246IGNvbmZpZy5nYz8uYWN0aW9uLFxuICAgIHR5cGU6IGNvbmZpZy5nYz8udHlwZSxcbiAgICByb2xsYmFja0J1ZmZlckRheXM6IGNvbmZpZy5nYz8ucm9sbGJhY2tCdWZmZXJEYXlzLFxuICAgIGNyZWF0ZWRCdWZmZXJEYXlzOiBjb25maWcuZ2M/LmNyZWF0ZWRCdWZmZXJEYXlzLFxuICAgIGNvbmZpcm06IGNvbmZpZy5nYz8uY29uZmlybSxcbiAgICBib290c3RyYXBTdGFja05hbWU6IGNvbmZpZy5nYz8uYm9vdHN0cmFwU3RhY2tOYW1lLFxuICB9O1xuICBjb25zdCBmbGFnc09wdGlvbnMgPSB7fTtcbiAgY29uc3QgZGVwbG95T3B0aW9ucyA9IHtcbiAgICBhbGw6IGNvbmZpZy5kZXBsb3k/LmFsbCxcbiAgICBidWlsZEV4Y2x1ZGU6IGNvbmZpZy5kZXBsb3k/LmJ1aWxkRXhjbHVkZSxcbiAgICBleGNsdXNpdmVseTogY29uZmlnLmRlcGxveT8uZXhjbHVzaXZlbHksXG4gICAgcmVxdWlyZUFwcHJvdmFsOiBjb25maWcuZGVwbG95Py5yZXF1aXJlQXBwcm92YWwsXG4gICAgbm90aWZpY2F0aW9uQXJuczogY29uZmlnLmRlcGxveT8ubm90aWZpY2F0aW9uQXJucyxcbiAgICB0YWdzOiBjb25maWcuZGVwbG95Py50YWdzLFxuICAgIGV4ZWN1dGU6IGNvbmZpZy5kZXBsb3k/LmV4ZWN1dGUsXG4gICAgY2hhbmdlU2V0TmFtZTogY29uZmlnLmRlcGxveT8uY2hhbmdlU2V0TmFtZSxcbiAgICBtZXRob2Q6IGNvbmZpZy5kZXBsb3k/Lm1ldGhvZCxcbiAgICBpbXBvcnRFeGlzdGluZ1Jlc291cmNlczogY29uZmlnLmRlcGxveT8uaW1wb3J0RXhpc3RpbmdSZXNvdXJjZXMsXG4gICAgZm9yY2U6IGNvbmZpZy5kZXBsb3k/LmZvcmNlLFxuICAgIHBhcmFtZXRlcnM6IGNvbmZpZy5kZXBsb3k/LnBhcmFtZXRlcnMsXG4gICAgb3V0cHV0c0ZpbGU6IGNvbmZpZy5kZXBsb3k/Lm91dHB1dHNGaWxlLFxuICAgIHByZXZpb3VzUGFyYW1ldGVyczogY29uZmlnLmRlcGxveT8ucHJldmlvdXNQYXJhbWV0ZXJzLFxuICAgIHRvb2xraXRTdGFja05hbWU6IGNvbmZpZy5kZXBsb3k/LnRvb2xraXRTdGFja05hbWUsXG4gICAgcHJvZ3Jlc3M6IGNvbmZpZy5kZXBsb3k/LnByb2dyZXNzLFxuICAgIHJvbGxiYWNrOiBjb25maWcuZGVwbG95Py5yb2xsYmFjayxcbiAgICBob3Rzd2FwOiBjb25maWcuZGVwbG95Py5ob3Rzd2FwLFxuICAgIGhvdHN3YXBGYWxsYmFjazogY29uZmlnLmRlcGxveT8uaG90c3dhcEZhbGxiYWNrLFxuICAgIGhvdHN3YXBFY3NNaW5pbXVtSGVhbHRoeVBlcmNlbnQ6IGNvbmZpZy5kZXBsb3k/LmhvdHN3YXBFY3NNaW5pbXVtSGVhbHRoeVBlcmNlbnQsXG4gICAgaG90c3dhcEVjc01heGltdW1IZWFsdGh5UGVyY2VudDogY29uZmlnLmRlcGxveT8uaG90c3dhcEVjc01heGltdW1IZWFsdGh5UGVyY2VudCxcbiAgICBob3Rzd2FwRWNzU3RhYmlsaXphdGlvblRpbWVvdXRTZWNvbmRzOiBjb25maWcuZGVwbG95Py5ob3Rzd2FwRWNzU3RhYmlsaXphdGlvblRpbWVvdXRTZWNvbmRzLFxuICAgIHdhdGNoOiBjb25maWcuZGVwbG95Py53YXRjaCxcbiAgICBsb2dzOiBjb25maWcuZGVwbG95Py5sb2dzLFxuICAgIGNvbmN1cnJlbmN5OiBjb25maWcuZGVwbG95Py5jb25jdXJyZW5jeSxcbiAgICBhc3NldFBhcmFsbGVsaXNtOiBjb25maWcuZGVwbG95Py5hc3NldFBhcmFsbGVsaXNtLFxuICAgIGFzc2V0UHJlYnVpbGQ6IGNvbmZpZy5kZXBsb3k/LmFzc2V0UHJlYnVpbGQsXG4gICAgaWdub3JlTm9TdGFja3M6IGNvbmZpZy5kZXBsb3k/Lmlnbm9yZU5vU3RhY2tzLFxuICB9O1xuICBjb25zdCByb2xsYmFja09wdGlvbnMgPSB7XG4gICAgYWxsOiBjb25maWcucm9sbGJhY2s/LmFsbCxcbiAgICB0b29sa2l0U3RhY2tOYW1lOiBjb25maWcucm9sbGJhY2s/LnRvb2xraXRTdGFja05hbWUsXG4gICAgZm9yY2U6IGNvbmZpZy5yb2xsYmFjaz8uZm9yY2UsXG4gICAgdmFsaWRhdGVCb290c3RyYXBWZXJzaW9uOiBjb25maWcucm9sbGJhY2s/LnZhbGlkYXRlQm9vdHN0cmFwVmVyc2lvbixcbiAgICBvcnBoYW46IGNvbmZpZy5yb2xsYmFjaz8ub3JwaGFuLFxuICB9O1xuICBjb25zdCBpbXBvcnRPcHRpb25zID0ge1xuICAgIGV4ZWN1dGU6IGNvbmZpZy5pbXBvcnQ/LmV4ZWN1dGUsXG4gICAgY2hhbmdlU2V0TmFtZTogY29uZmlnLmltcG9ydD8uY2hhbmdlU2V0TmFtZSxcbiAgICB0b29sa2l0U3RhY2tOYW1lOiBjb25maWcuaW1wb3J0Py50b29sa2l0U3RhY2tOYW1lLFxuICAgIHJvbGxiYWNrOiBjb25maWcuaW1wb3J0Py5yb2xsYmFjayxcbiAgICBmb3JjZTogY29uZmlnLmltcG9ydD8uZm9yY2UsXG4gICAgcmVjb3JkUmVzb3VyY2VNYXBwaW5nOiBjb25maWcuaW1wb3J0Py5yZWNvcmRSZXNvdXJjZU1hcHBpbmcsXG4gICAgcmVzb3VyY2VNYXBwaW5nOiBjb25maWcuaW1wb3J0Py5yZXNvdXJjZU1hcHBpbmcsXG4gIH07XG4gIGNvbnN0IHdhdGNoT3B0aW9ucyA9IHtcbiAgICBidWlsZEV4Y2x1ZGU6IGNvbmZpZy53YXRjaD8uYnVpbGRFeGNsdWRlLFxuICAgIGV4Y2x1c2l2ZWx5OiBjb25maWcud2F0Y2g/LmV4Y2x1c2l2ZWx5LFxuICAgIGNoYW5nZVNldE5hbWU6IGNvbmZpZy53YXRjaD8uY2hhbmdlU2V0TmFtZSxcbiAgICBmb3JjZTogY29uZmlnLndhdGNoPy5mb3JjZSxcbiAgICB0b29sa2l0U3RhY2tOYW1lOiBjb25maWcud2F0Y2g/LnRvb2xraXRTdGFja05hbWUsXG4gICAgcHJvZ3Jlc3M6IGNvbmZpZy53YXRjaD8ucHJvZ3Jlc3MsXG4gICAgcm9sbGJhY2s6IGNvbmZpZy53YXRjaD8ucm9sbGJhY2ssXG4gICAgaG90c3dhcDogY29uZmlnLndhdGNoPy5ob3Rzd2FwLFxuICAgIGhvdHN3YXBGYWxsYmFjazogY29uZmlnLndhdGNoPy5ob3Rzd2FwRmFsbGJhY2ssXG4gICAgaG90c3dhcEVjc01pbmltdW1IZWFsdGh5UGVyY2VudDogY29uZmlnLndhdGNoPy5ob3Rzd2FwRWNzTWluaW11bUhlYWx0aHlQZXJjZW50LFxuICAgIGhvdHN3YXBFY3NNYXhpbXVtSGVhbHRoeVBlcmNlbnQ6IGNvbmZpZy53YXRjaD8uaG90c3dhcEVjc01heGltdW1IZWFsdGh5UGVyY2VudCxcbiAgICBob3Rzd2FwRWNzU3RhYmlsaXphdGlvblRpbWVvdXRTZWNvbmRzOiBjb25maWcud2F0Y2g/LmhvdHN3YXBFY3NTdGFiaWxpemF0aW9uVGltZW91dFNlY29uZHMsXG4gICAgbG9nczogY29uZmlnLndhdGNoPy5sb2dzLFxuICAgIGNvbmN1cnJlbmN5OiBjb25maWcud2F0Y2g/LmNvbmN1cnJlbmN5LFxuICB9O1xuICBjb25zdCBkZXN0cm95T3B0aW9ucyA9IHtcbiAgICBhbGw6IGNvbmZpZy5kZXN0cm95Py5hbGwsXG4gICAgZXhjbHVzaXZlbHk6IGNvbmZpZy5kZXN0cm95Py5leGNsdXNpdmVseSxcbiAgICBmb3JjZTogY29uZmlnLmRlc3Ryb3k/LmZvcmNlLFxuICB9O1xuICBjb25zdCBkaWZmT3B0aW9ucyA9IHtcbiAgICBleGNsdXNpdmVseTogY29uZmlnLmRpZmY/LmV4Y2x1c2l2ZWx5LFxuICAgIGNvbnRleHRMaW5lczogY29uZmlnLmRpZmY/LmNvbnRleHRMaW5lcyxcbiAgICB0ZW1wbGF0ZTogY29uZmlnLmRpZmY/LnRlbXBsYXRlLFxuICAgIHN0cmljdDogY29uZmlnLmRpZmY/LnN0cmljdCxcbiAgICBzZWN1cml0eU9ubHk6IGNvbmZpZy5kaWZmPy5zZWN1cml0eU9ubHksXG4gICAgZmFpbDogY29uZmlnLmRpZmY/LmZhaWwsXG4gICAgcHJvY2Vzc2VkOiBjb25maWcuZGlmZj8ucHJvY2Vzc2VkLFxuICAgIHF1aWV0OiBjb25maWcuZGlmZj8ucXVpZXQsXG4gICAgY2hhbmdlU2V0OiBjb25maWcuZGlmZj8uY2hhbmdlU2V0LFxuICAgIGltcG9ydEV4aXN0aW5nUmVzb3VyY2VzOiBjb25maWcuZGlmZj8uaW1wb3J0RXhpc3RpbmdSZXNvdXJjZXMsXG4gICAgaW5jbHVkZU1vdmVzOiBjb25maWcuZGlmZj8uaW5jbHVkZU1vdmVzLFxuICB9O1xuICBjb25zdCBkcmlmdE9wdGlvbnMgPSB7XG4gICAgZmFpbDogY29uZmlnLmRyaWZ0Py5mYWlsLFxuICB9O1xuICBjb25zdCBtZXRhZGF0YU9wdGlvbnMgPSB7fTtcbiAgY29uc3QgYWNrbm93bGVkZ2VPcHRpb25zID0ge307XG4gIGNvbnN0IG5vdGljZXNPcHRpb25zID0ge1xuICAgIHVuYWNrbm93bGVkZ2VkOiBjb25maWcubm90aWNlcz8udW5hY2tub3dsZWRnZWQsXG4gIH07XG4gIGNvbnN0IGluaXRPcHRpb25zID0ge1xuICAgIGxhbmd1YWdlOiBjb25maWcuaW5pdD8ubGFuZ3VhZ2UsXG4gICAgbGlzdDogY29uZmlnLmluaXQ/Lmxpc3QsXG4gICAgZ2VuZXJhdGVPbmx5OiBjb25maWcuaW5pdD8uZ2VuZXJhdGVPbmx5LFxuICAgIGxpYlZlcnNpb246IGNvbmZpZy5pbml0Py5saWJWZXJzaW9uLFxuICB9O1xuICBjb25zdCBtaWdyYXRlT3B0aW9ucyA9IHtcbiAgICBzdGFja05hbWU6IGNvbmZpZy5taWdyYXRlPy5zdGFja05hbWUsXG4gICAgbGFuZ3VhZ2U6IGNvbmZpZy5taWdyYXRlPy5sYW5ndWFnZSxcbiAgICBhY2NvdW50OiBjb25maWcubWlncmF0ZT8uYWNjb3VudCxcbiAgICByZWdpb246IGNvbmZpZy5taWdyYXRlPy5yZWdpb24sXG4gICAgZnJvbVBhdGg6IGNvbmZpZy5taWdyYXRlPy5mcm9tUGF0aCxcbiAgICBmcm9tU3RhY2s6IGNvbmZpZy5taWdyYXRlPy5mcm9tU3RhY2ssXG4gICAgb3V0cHV0UGF0aDogY29uZmlnLm1pZ3JhdGU/Lm91dHB1dFBhdGgsXG4gICAgZnJvbVNjYW46IGNvbmZpZy5taWdyYXRlPy5mcm9tU2NhbixcbiAgICBmaWx0ZXI6IGNvbmZpZy5taWdyYXRlPy5maWx0ZXIsXG4gICAgY29tcHJlc3M6IGNvbmZpZy5taWdyYXRlPy5jb21wcmVzcyxcbiAgfTtcbiAgY29uc3QgY29udGV4dE9wdGlvbnMgPSB7XG4gICAgcmVzZXQ6IGNvbmZpZy5jb250ZXh0Py5yZXNldCxcbiAgICBmb3JjZTogY29uZmlnLmNvbnRleHQ/LmZvcmNlLFxuICAgIGNsZWFyOiBjb25maWcuY29udGV4dD8uY2xlYXIsXG4gIH07XG4gIGNvbnN0IGRvY3NPcHRpb25zID0ge1xuICAgIGJyb3dzZXI6IGNvbmZpZy5kb2NzPy5icm93c2VyLFxuICB9O1xuICBjb25zdCBkb2N0b3JPcHRpb25zID0ge307XG4gIGNvbnN0IHJlZmFjdG9yT3B0aW9ucyA9IHtcbiAgICBhZGRpdGlvbmFsU3RhY2tOYW1lOiBjb25maWcucmVmYWN0b3I/LmFkZGl0aW9uYWxTdGFja05hbWUsXG4gICAgZHJ5UnVuOiBjb25maWcucmVmYWN0b3I/LmRyeVJ1bixcbiAgICBvdmVycmlkZUZpbGU6IGNvbmZpZy5yZWZhY3Rvcj8ub3ZlcnJpZGVGaWxlLFxuICAgIHJldmVydDogY29uZmlnLnJlZmFjdG9yPy5yZXZlcnQsXG4gIH07XG4gIGNvbnN0IGNsaVRlbGVtZXRyeU9wdGlvbnMgPSB7XG4gICAgZW5hYmxlOiBjb25maWcuY2xpVGVsZW1ldHJ5Py5lbmFibGUsXG4gICAgZGlzYWJsZTogY29uZmlnLmNsaVRlbGVtZXRyeT8uZGlzYWJsZSxcbiAgICBzdGF0dXM6IGNvbmZpZy5jbGlUZWxlbWV0cnk/LnN0YXR1cyxcbiAgfTtcbiAgY29uc3QgdXNlcklucHV0OiBVc2VySW5wdXQgPSB7XG4gICAgZ2xvYmFsT3B0aW9ucyxcbiAgICBsaXN0OiBsaXN0T3B0aW9ucyxcbiAgICBzeW50aDogc3ludGhPcHRpb25zLFxuICAgIGJvb3RzdHJhcDogYm9vdHN0cmFwT3B0aW9ucyxcbiAgICBnYzogZ2NPcHRpb25zLFxuICAgIGZsYWdzOiBmbGFnc09wdGlvbnMsXG4gICAgZGVwbG95OiBkZXBsb3lPcHRpb25zLFxuICAgIHJvbGxiYWNrOiByb2xsYmFja09wdGlvbnMsXG4gICAgaW1wb3J0OiBpbXBvcnRPcHRpb25zLFxuICAgIHdhdGNoOiB3YXRjaE9wdGlvbnMsXG4gICAgZGVzdHJveTogZGVzdHJveU9wdGlvbnMsXG4gICAgZGlmZjogZGlmZk9wdGlvbnMsXG4gICAgZHJpZnQ6IGRyaWZ0T3B0aW9ucyxcbiAgICBtZXRhZGF0YTogbWV0YWRhdGFPcHRpb25zLFxuICAgIGFja25vd2xlZGdlOiBhY2tub3dsZWRnZU9wdGlvbnMsXG4gICAgbm90aWNlczogbm90aWNlc09wdGlvbnMsXG4gICAgaW5pdDogaW5pdE9wdGlvbnMsXG4gICAgbWlncmF0ZTogbWlncmF0ZU9wdGlvbnMsXG4gICAgY29udGV4dDogY29udGV4dE9wdGlvbnMsXG4gICAgZG9jczogZG9jc09wdGlvbnMsXG4gICAgZG9jdG9yOiBkb2N0b3JPcHRpb25zLFxuICAgIHJlZmFjdG9yOiByZWZhY3Rvck9wdGlvbnMsXG4gICAgY2xpVGVsZW1ldHJ5OiBjbGlUZWxlbWV0cnlPcHRpb25zLFxuICB9O1xuXG4gIHJldHVybiB1c2VySW5wdXQ7XG59XG4iXX0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { IoHelper } from '../api-private';
|
|
2
|
+
export declare class VersionCheckTTL {
|
|
3
|
+
static timestampFilePath(): string;
|
|
4
|
+
private readonly file;
|
|
5
|
+
private readonly ttlSecs;
|
|
6
|
+
constructor(file?: string, ttlSecs?: number);
|
|
7
|
+
hasExpired(): Promise<boolean>;
|
|
8
|
+
update(latestVersion?: string): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare function getVersionMessages(currentVersion: string, cacheFile: VersionCheckTTL): Promise<string[]>;
|
|
11
|
+
export declare function displayVersionMessage(ioHelper: IoHelper, currentVersion?: string, versionCheckCache?: VersionCheckTTL): Promise<void>;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VersionCheckTTL = void 0;
|
|
4
|
+
exports.getVersionMessages = getVersionMessages;
|
|
5
|
+
exports.displayVersionMessage = displayVersionMessage;
|
|
6
|
+
const path = require("path");
|
|
7
|
+
const toolkit_lib_1 = require("@aws-cdk/toolkit-lib");
|
|
8
|
+
const chalk = require("chalk");
|
|
9
|
+
const fs = require("fs-extra");
|
|
10
|
+
const semver = require("semver");
|
|
11
|
+
const util_1 = require("../util");
|
|
12
|
+
const console_formatters_1 = require("./util/console-formatters");
|
|
13
|
+
const npm_1 = require("./util/npm");
|
|
14
|
+
const ONE_DAY_IN_SECONDS = 1 * 24 * 60 * 60;
|
|
15
|
+
const UPGRADE_DOCUMENTATION_LINKS = {
|
|
16
|
+
1: 'https://docs.aws.amazon.com/cdk/v2/guide/migrating-v2.html',
|
|
17
|
+
};
|
|
18
|
+
class VersionCheckTTL {
|
|
19
|
+
static timestampFilePath() {
|
|
20
|
+
// Using the same path from account-cache.ts
|
|
21
|
+
return path.join((0, util_1.cdkCacheDir)(), 'repo-version-ttl');
|
|
22
|
+
}
|
|
23
|
+
constructor(file, ttlSecs) {
|
|
24
|
+
this.file = file || VersionCheckTTL.timestampFilePath();
|
|
25
|
+
try {
|
|
26
|
+
fs.mkdirsSync(path.dirname(this.file));
|
|
27
|
+
fs.accessSync(path.dirname(this.file), fs.constants.W_OK);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
throw new toolkit_lib_1.ToolkitError(`Directory (${path.dirname(this.file)}) is not writable.`);
|
|
31
|
+
}
|
|
32
|
+
this.ttlSecs = ttlSecs || ONE_DAY_IN_SECONDS;
|
|
33
|
+
}
|
|
34
|
+
async hasExpired() {
|
|
35
|
+
try {
|
|
36
|
+
const lastCheckTime = (await fs.stat(this.file)).mtimeMs;
|
|
37
|
+
const today = new Date().getTime();
|
|
38
|
+
if ((today - lastCheckTime) / 1000 > this.ttlSecs) { // convert ms to sec
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
if (err.code === 'ENOENT') {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
throw err;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
async update(latestVersion) {
|
|
53
|
+
if (!latestVersion) {
|
|
54
|
+
latestVersion = '';
|
|
55
|
+
}
|
|
56
|
+
await fs.writeFile(this.file, latestVersion);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.VersionCheckTTL = VersionCheckTTL;
|
|
60
|
+
// Export for unit testing only.
|
|
61
|
+
// Don't use directly, use displayVersionMessage() instead.
|
|
62
|
+
async function getVersionMessages(currentVersion, cacheFile) {
|
|
63
|
+
if (!(await cacheFile.hasExpired())) {
|
|
64
|
+
return [];
|
|
65
|
+
}
|
|
66
|
+
const packageInfo = await (0, npm_1.execNpmView)(currentVersion);
|
|
67
|
+
const latestVersion = packageInfo.latestVersion;
|
|
68
|
+
await cacheFile.update(JSON.stringify(packageInfo));
|
|
69
|
+
// If the latest version is the same as the current version, there is no need to display a message
|
|
70
|
+
if (semver.eq(latestVersion, currentVersion)) {
|
|
71
|
+
return [];
|
|
72
|
+
}
|
|
73
|
+
const versionMessage = [
|
|
74
|
+
packageInfo.deprecated ? `${chalk.red(packageInfo.deprecated)}` : undefined,
|
|
75
|
+
`Newer version of CDK is available [${chalk.green(latestVersion)}]`,
|
|
76
|
+
getMajorVersionUpgradeMessage(currentVersion),
|
|
77
|
+
'Upgrade recommended (npm install -g aws-cdk)',
|
|
78
|
+
].filter(Boolean);
|
|
79
|
+
return versionMessage;
|
|
80
|
+
}
|
|
81
|
+
function getMajorVersionUpgradeMessage(currentVersion) {
|
|
82
|
+
const currentMajorVersion = semver.major(currentVersion);
|
|
83
|
+
if (UPGRADE_DOCUMENTATION_LINKS[currentMajorVersion]) {
|
|
84
|
+
return `Information about upgrading from version ${currentMajorVersion}.x to version ${currentMajorVersion + 1}.x is available here: ${UPGRADE_DOCUMENTATION_LINKS[currentMajorVersion]}`;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
async function displayVersionMessage(ioHelper, currentVersion = (0, util_1.versionNumber)(), versionCheckCache) {
|
|
88
|
+
if (!process.stdout.isTTY || process.env.CDK_DISABLE_VERSION_CHECK) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
try {
|
|
92
|
+
const versionMessages = await getVersionMessages(currentVersion, versionCheckCache ?? new VersionCheckTTL());
|
|
93
|
+
for (const e of (0, console_formatters_1.formatAsBanner)(versionMessages)) {
|
|
94
|
+
await ioHelper.defaults.info(e);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
await ioHelper.defaults.debug(`Could not run version check - ${err.message}`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGxheS12ZXJzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlzcGxheS12ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWtFQSxnREFzQkM7QUFTRCxzREFpQkM7QUFsSEQsNkJBQTZCO0FBQzdCLHNEQUFvRDtBQUNwRCwrQkFBK0I7QUFDL0IsK0JBQStCO0FBQy9CLGlDQUFpQztBQUVqQyxrQ0FBcUQ7QUFDckQsa0VBQTJEO0FBQzNELG9DQUF5QztBQUV6QyxNQUFNLGtCQUFrQixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUU1QyxNQUFNLDJCQUEyQixHQUEyQjtJQUMxRCxDQUFDLEVBQUUsNERBQTREO0NBQ2hFLENBQUM7QUFFRixNQUFhLGVBQWU7SUFDbkIsTUFBTSxDQUFDLGlCQUFpQjtRQUM3Qiw0Q0FBNEM7UUFDNUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUEsa0JBQVcsR0FBRSxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDdEQsQ0FBQztJQU9ELFlBQVksSUFBYSxFQUFFLE9BQWdCO1FBQ3pDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLGVBQWUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3hELElBQUksQ0FBQztZQUNILEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN2QyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUQsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE1BQU0sSUFBSSwwQkFBWSxDQUFDLGNBQWMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFD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bkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUNuRSxPQUFPO0lBQ1QsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE1BQU0sZUFBZSxHQUFHLE1BQU0sa0JBQWtCLENBQUMsY0FBYyxFQUFFLGlCQUFpQixJQUFJLElBQUksZUFBZSxFQUFFLENBQUMsQ0FBQztRQUM3RyxLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUEsbUNBQWMsRUFBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQ2hELE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ2xCLE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsaUNBQWlDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJ0Bhd3MtY2RrL3Rvb2xraXQtbGliJztcbmltcG9ydCAqIGFzIGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCAqIGFzIHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHR5cGUgeyBJb0hlbHBlciB9IGZyb20gJy4uL2FwaS1wcml2YXRlJztcbmltcG9ydCB7IGNka0NhY2hlRGlyLCB2ZXJzaW9uTnVtYmVyIH0gZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQgeyBmb3JtYXRBc0Jhbm5lciB9IGZyb20gJy4vdXRpbC9jb25zb2xlLWZvcm1hdHRlcnMnO1xuaW1wb3J0IHsgZXhlY05wbVZpZXcgfSBmcm9tICcuL3V0aWwvbnBtJztcblxuY29uc3QgT05FX0RBWV9JTl9TRUNPTkRTID0gMSAqIDI0ICogNjAgKiA2MDtcblxuY29uc3QgVVBHUkFERV9ET0NVTUVOVEFUSU9OX0xJTktTOiBSZWNvcmQ8bnVtYmVyLCBzdHJpbmc+ID0ge1xuICAxOiAnaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Nkay92Mi9ndWlkZS9taWdyYXRpbmctdjIuaHRtbCcsXG59O1xuXG5leHBvcnQgY2xhc3MgVmVyc2lvbkNoZWNrVFRMIHtcbiAgcHVibGljIHN0YXRpYyB0aW1lc3RhbXBGaWxlUGF0aCgpOiBzdHJpbmcge1xuICAgIC8vIFVzaW5nIHRoZSBzYW1lIHBhdGggZnJvbSBhY2NvdW50LWNhY2hlLnRzXG4gICAgcmV0dXJuIHBhdGguam9pbihjZGtDYWNoZURpcigpLCAncmVwby12ZXJzaW9uLXR0bCcpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBmaWxlOiBzdHJpbmc7XG5cbiAgLy8gRmlsZSBtb2RpZnkgdGltZXMgYXJlIGFjY3VyYXRlIG9ubHkgdG8gdGhlIHNlY29uZFxuICBwcml2YXRlIHJlYWRvbmx5IHR0bFNlY3M6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihmaWxlPzogc3RyaW5nLCB0dGxTZWNzPzogbnVtYmVyKSB7XG4gICAgdGhpcy5maWxlID0gZmlsZSB8fCBWZXJzaW9uQ2hlY2tUVEwudGltZXN0YW1wRmlsZVBhdGgoKTtcbiAgICB0cnkge1xuICAgICAgZnMubWtkaXJzU3luYyhwYXRoLmRpcm5hbWUodGhpcy5maWxlKSk7XG4gICAgICBmcy5hY2Nlc3NTeW5jKHBhdGguZGlybmFtZSh0aGlzLmZpbGUpLCBmcy5jb25zdGFudHMuV19PSyk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGBEaXJlY3RvcnkgKCR7cGF0aC5kaXJuYW1lKHRoaXMuZmlsZSl9KSBpcyBub3Qgd3JpdGFibGUuYCk7XG4gICAgfVxuICAgIHRoaXMudHRsU2VjcyA9IHR0bFNlY3MgfHwgT05FX0RBWV9JTl9TRUNPTkRTO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGhhc0V4cGlyZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGxhc3RDaGVja1RpbWUgPSAoYXdhaXQgZnMuc3RhdCh0aGlzLmZpbGUpKS5tdGltZU1zO1xuICAgICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcblxuICAgICAgaWYgKCh0b2RheSAtIGxhc3RDaGVja1RpbWUpIC8gMTAwMCA+IHRoaXMudHRsU2VjcykgeyAvLyBjb252ZXJ0IG1zIHRvIHNlY1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgaWYgKGVyci5jb2RlID09PSAnRU5PRU5UJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlKGxhdGVzdFZlcnNpb24/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIWxhdGVzdFZlcnNpb24pIHtcbiAgICAgIGxhdGVzdFZlcnNpb24gPSAnJztcbiAgICB9XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKHRoaXMuZmlsZSwgbGF0ZXN0VmVyc2lvbik7XG4gIH1cbn1cblxuLy8gRXhwb3J0IGZvciB1bml0IHRlc3Rpbmcgb25seS5cbi8vIERvbid0IHVzZSBkaXJlY3RseSwgdXNlIGRpc3BsYXlWZXJzaW9uTWVzc2FnZSgpIGluc3RlYWQuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0VmVyc2lvbk1lc3NhZ2VzKGN1cnJlbnRWZXJzaW9uOiBzdHJpbmcsIGNhY2hlRmlsZTogVmVyc2lvbkNoZWNrVFRMKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICBpZiAoIShhd2FpdCBjYWNoZUZpbGUuaGFzRXhwaXJlZCgpKSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHBhY2thZ2VJbmZvID0gYXdhaXQgZXhlY05wbVZpZXcoY3VycmVudFZlcnNpb24pO1xuICBjb25zdCBsYXRlc3RWZXJzaW9uID0gcGFja2FnZUluZm8ubGF0ZXN0VmVyc2lvbjtcbiAgYXdhaXQgY2FjaGVGaWxlLnVwZGF0ZShKU09OLnN0cmluZ2lmeShwYWNrYWdlSW5mbykpO1xuXG4gIC8vIElmIHRoZSBsYXRlc3QgdmVyc2lvbiBpcyB0aGUgc2FtZSBhcyB0aGUgY3VycmVudCB2ZXJzaW9uLCB0aGVyZSBpcyBubyBuZWVkIHRvIGRpc3BsYXkgYSBtZXNzYWdlXG4gIGlmIChzZW12ZXIuZXEobGF0ZXN0VmVyc2lvbiwgY3VycmVudFZlcnNpb24pKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3QgdmVyc2lvbk1lc3NhZ2UgPSBbXG4gICAgcGFja2FnZUluZm8uZGVwcmVjYXRlZCA/IGAke2NoYWxrLnJlZChwYWNrYWdlSW5mby5kZXByZWNhdGVkIGFzIHN0cmluZyl9YCA6IHVuZGVmaW5lZCxcbiAgICBgTmV3ZXIgdmVyc2lvbiBvZiBDREsgaXMgYXZhaWxhYmxlIFske2NoYWxrLmdyZWVuKGxhdGVzdFZlcnNpb24gYXMgc3RyaW5nKX1dYCxcbiAgICBnZXRNYWpvclZlcnNpb25VcGdyYWRlTWVzc2FnZShjdXJyZW50VmVyc2lvbiksXG4gICAgJ1VwZ3JhZGUgcmVjb21tZW5kZWQgKG5wbSBpbnN0YWxsIC1nIGF3cy1jZGspJyxcbiAgXS5maWx0ZXIoQm9vbGVhbikgYXMgc3RyaW5nW107XG5cbiAgcmV0dXJuIHZlcnNpb25NZXNzYWdlO1xufVxuXG5mdW5jdGlvbiBnZXRNYWpvclZlcnNpb25VcGdyYWRlTWVzc2FnZShjdXJyZW50VmVyc2lvbjogc3RyaW5nKTogc3RyaW5nIHwgdm9pZCB7XG4gIGNvbnN0IGN1cnJlbnRNYWpvclZlcnNpb24gPSBzZW12ZXIubWFqb3IoY3VycmVudFZlcnNpb24pO1xuICBpZiAoVVBHUkFERV9ET0NVTUVOVEFUSU9OX0xJTktTW2N1cnJlbnRNYWpvclZlcnNpb25dKSB7XG4gICAgcmV0dXJuIGBJbmZvcm1hdGlvbiBhYm91dCB1cGdyYWRpbmcgZnJvbSB2ZXJzaW9uICR7Y3VycmVudE1ham9yVmVyc2lvbn0ueCB0byB2ZXJzaW9uICR7Y3VycmVudE1ham9yVmVyc2lvbiArIDF9LnggaXMgYXZhaWxhYmxlIGhlcmU6ICR7VVBHUkFERV9ET0NVTUVOVEFUSU9OX0xJTktTW2N1cnJlbnRNYWpvclZlcnNpb25dfWA7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRpc3BsYXlWZXJzaW9uTWVzc2FnZShcbiAgaW9IZWxwZXI6IElvSGVscGVyLFxuICBjdXJyZW50VmVyc2lvbiA9IHZlcnNpb25OdW1iZXIoKSxcbiAgdmVyc2lvbkNoZWNrQ2FjaGU/OiBWZXJzaW9uQ2hlY2tUVEwsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFwcm9jZXNzLnN0ZG91dC5pc1RUWSB8fCBwcm9jZXNzLmVudi5DREtfRElTQUJMRV9WRVJTSU9OX0NIRUNLKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCB2ZXJzaW9uTWVzc2FnZXMgPSBhd2FpdCBnZXRWZXJzaW9uTWVzc2FnZXMoY3VycmVudFZlcnNpb24sIHZlcnNpb25DaGVja0NhY2hlID8/IG5ldyBWZXJzaW9uQ2hlY2tUVEwoKSk7XG4gICAgZm9yIChjb25zdCBlIG9mIGZvcm1hdEFzQmFubmVyKHZlcnNpb25NZXNzYWdlcykpIHtcbiAgICAgIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLmluZm8oZSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLmRlYnVnKGBDb3VsZCBub3QgcnVuIHZlcnNpb24gY2hlY2sgLSAke2Vyci5tZXNzYWdlfWApO1xuICB9XG59XG4iXX0=
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
+
import type { Agent } from 'node:https';
|
|
1
2
|
import { RequireApproval } from '@aws-cdk/cloud-assembly-schema';
|
|
2
3
|
import type { IIoHost, IoMessage, IoMessageCode, IoMessageLevel, IoRequest, ToolkitAction } from '@aws-cdk/toolkit-lib';
|
|
4
|
+
import type { Context } from '@aws-cdk/toolkit-lib/lib/api';
|
|
3
5
|
import type { IoHelper } from '../../../lib/api-private';
|
|
4
6
|
import { StackActivityProgress } from '../../commands/deploy';
|
|
7
|
+
import { TelemetrySession } from '../telemetry/session';
|
|
5
8
|
export type { IIoHost, IoMessage, IoMessageCode, IoMessageLevel, IoRequest };
|
|
6
9
|
/**
|
|
7
10
|
* The current action being performed by the CLI. 'none' represents the absence of an action.
|
|
8
11
|
*/
|
|
9
|
-
type CliAction = ToolkitAction | 'context' | 'docs' | 'notices' | 'version' | 'cli-telemetry' | 'none';
|
|
12
|
+
type CliAction = ToolkitAction | 'context' | 'docs' | 'flags' | 'notices' | 'version' | 'cli-telemetry' | 'none';
|
|
10
13
|
export interface CliIoHostProps {
|
|
11
14
|
/**
|
|
12
15
|
* The initial Toolkit action the hosts starts with.
|
|
@@ -65,6 +68,10 @@ export declare class CliIoHost implements IIoHost {
|
|
|
65
68
|
* Returns the singleton instance
|
|
66
69
|
*/
|
|
67
70
|
static instance(props?: CliIoHostProps, forceNew?: boolean): CliIoHost;
|
|
71
|
+
/**
|
|
72
|
+
* Returns the singleton instance if it exists
|
|
73
|
+
*/
|
|
74
|
+
static get(): CliIoHost | undefined;
|
|
68
75
|
/**
|
|
69
76
|
* Singleton instance of the CliIoHost
|
|
70
77
|
*/
|
|
@@ -100,16 +107,13 @@ export declare class CliIoHost implements IIoHost {
|
|
|
100
107
|
* is changed yet)
|
|
101
108
|
*/
|
|
102
109
|
noticesDestination: TargetStream;
|
|
103
|
-
private _internalIoHost?;
|
|
104
110
|
private _progress;
|
|
105
111
|
private activityPrinter?;
|
|
106
112
|
private corkedCounter;
|
|
107
113
|
private readonly corkedLoggingBuffer;
|
|
114
|
+
telemetry?: TelemetrySession;
|
|
108
115
|
private constructor();
|
|
109
|
-
|
|
110
|
-
* Returns the singleton instance
|
|
111
|
-
*/
|
|
112
|
-
registerIoHost(ioHost: IIoHost): void;
|
|
116
|
+
startTelemetry(args: any, context: Context, _proxyAgent?: Agent): Promise<void>;
|
|
113
117
|
/**
|
|
114
118
|
* Update the stackProgress preference.
|
|
115
119
|
*/
|
|
@@ -137,6 +141,7 @@ export declare class CliIoHost implements IIoHost {
|
|
|
137
141
|
* The caller waits until the notification completes.
|
|
138
142
|
*/
|
|
139
143
|
notify(msg: IoMessage<unknown>): Promise<void>;
|
|
144
|
+
private maybeEmitTelemetry;
|
|
140
145
|
/**
|
|
141
146
|
* Detect stack activity messages so they can be send to the printer.
|
|
142
147
|
*/
|
|
@@ -174,8 +179,3 @@ export declare class CliIoHost implements IIoHost {
|
|
|
174
179
|
*/
|
|
175
180
|
private makeActivityPrinter;
|
|
176
181
|
}
|
|
177
|
-
/**
|
|
178
|
-
* Returns true if the current process is running in a CI environment
|
|
179
|
-
* @returns true if the current process is running in a CI environment
|
|
180
|
-
*/
|
|
181
|
-
export declare function isCI(): boolean;
|