aws-cdk 2.175.0 → 2.176.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.
Files changed (91) hide show
  1. package/CONTRIBUTING.md +4 -4
  2. package/build-info.json +2 -2
  3. package/db.json.gz +0 -0
  4. package/lib/api/aws-auth/credential-plugins.js +5 -5
  5. package/lib/api/aws-auth/sdk-provider.js +3 -2
  6. package/lib/api/aws-auth/sdk.js +3 -2
  7. package/lib/api/cxapp/cloud-assembly.js +4 -4
  8. package/lib/api/deploy-stack.js +11 -10
  9. package/lib/api/deployments.js +4 -4
  10. package/lib/api/environment-access.js +3 -2
  11. package/lib/api/environment-resources.js +3 -2
  12. package/lib/api/garbage-collection/garbage-collector.js +9 -9
  13. package/lib/api/garbage-collection/progress-printer.js +3 -3
  14. package/lib/api/hotswap-deployments.js +11 -10
  15. package/lib/api/logs/find-cloudwatch-logs.js +3 -2
  16. package/lib/api/logs/logs-monitor.js +3 -3
  17. package/lib/api/nested-stack-helpers.js +3 -2
  18. package/lib/api/plugin/plugin.js +1 -1
  19. package/lib/api/util/cloudformation/stack-activity-monitor.d.ts +4 -4
  20. package/lib/api/util/cloudformation/stack-activity-monitor.js +9 -9
  21. package/lib/api/util/cloudformation/stack-event-poller.js +3 -2
  22. package/lib/api/util/cloudformation.js +3 -3
  23. package/lib/cdk-toolkit.d.ts +0 -1
  24. package/lib/cdk-toolkit.js +32 -76
  25. package/lib/cli.js +12 -7
  26. package/lib/commands/context.js +20 -20
  27. package/lib/commands/docs.js +2 -2
  28. package/lib/commands/doctor.js +9 -9
  29. package/lib/commands/migrate.js +16 -16
  30. package/lib/config.d.ts +6 -3
  31. package/lib/config.js +10 -7
  32. package/lib/context-providers/ami.js +2 -2
  33. package/lib/context-providers/index.js +3 -2
  34. package/lib/convert-to-user-input.d.ts +3 -0
  35. package/lib/convert-to-user-input.js +431 -0
  36. package/lib/diff.js +3 -3
  37. package/lib/import.js +6 -6
  38. package/lib/index.js +50 -35
  39. package/lib/init-hooks.js +3 -2
  40. package/lib/init-templates/.init-version.json +1 -1
  41. package/lib/init-templates/.recommended-feature-flags.json +2 -1
  42. package/lib/init-templates/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj +1 -1
  43. package/lib/init-templates/app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj +1 -1
  44. package/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj +1 -1
  45. package/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj +1 -1
  46. package/lib/init.d.ts +1 -1
  47. package/lib/init.js +20 -19
  48. package/lib/logging.d.ts +112 -48
  49. package/lib/logging.js +176 -133
  50. package/lib/notices.js +13 -12
  51. package/lib/parse-command-line-arguments.js +2 -2
  52. package/lib/settings.d.ts +2 -0
  53. package/lib/settings.js +3 -1
  54. package/lib/toolkit/cli-io-host.d.ts +56 -25
  55. package/lib/toolkit/cli-io-host.js +49 -22
  56. package/lib/toolkit/error.js +2 -2
  57. package/lib/{cli-arguments.d.ts → user-input.d.ts} +8 -8
  58. package/lib/user-input.js +3 -0
  59. package/lib/util/archive.js +3 -2
  60. package/lib/util/asset-publishing.js +3 -3
  61. package/lib/util/error.d.ts +9 -0
  62. package/lib/util/error.js +22 -0
  63. package/lib/version.js +2 -2
  64. package/package.json +12 -11
  65. package/scripts/user-input-gen +2 -0
  66. package/scripts/user-input-gen.js +17 -0
  67. package/test/api/exec.test.js +3 -3
  68. package/test/api/fake-sts.js +3 -2
  69. package/test/api/logs/logging.test.js +269 -0
  70. package/test/api/sdk-provider.test.js +3 -3
  71. package/test/api/stack-activity-monitor.test.js +16 -16
  72. package/test/api/util/error.test.d.ts +1 -0
  73. package/test/api/util/error.test.js +26 -0
  74. package/test/cdk-toolkit.test.js +1 -46
  75. package/test/cli-arguments.test.js +126 -81
  76. package/test/cli.test.js +8 -8
  77. package/test/init.test.js +5 -5
  78. package/test/jest-bufferedconsole.d.ts +14 -0
  79. package/test/jest-bufferedconsole.js +72 -0
  80. package/test/notices.test.js +14 -14
  81. package/test/toolkit/cli-io-host.test.js +93 -188
  82. package/test/util/silent.js +2 -2
  83. package/test/version.test.js +5 -5
  84. package/lib/cli-arguments.js +0 -3
  85. package/lib/convert-to-cli-args.d.ts +0 -2
  86. package/lib/convert-to-cli-args.js +0 -234
  87. package/scripts/cli-args-gen +0 -2
  88. package/scripts/cli-args-gen.js +0 -16
  89. package/test/api/logs/cli-logging.test.js +0 -135
  90. /package/scripts/{cli-args-gen.d.ts → user-input-gen.d.ts} +0 -0
  91. /package/test/api/logs/{cli-logging.test.d.ts → logging.test.d.ts} +0 -0
@@ -1,89 +1,134 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const convert_to_cli_args_1 = require("../lib/convert-to-cli-args");
3
+ const convert_to_user_input_1 = require("../lib/convert-to-user-input");
4
4
  const parse_command_line_arguments_1 = require("../lib/parse-command-line-arguments");
5
- test('yargs object can be converted to cli arguments', async () => {
6
- const input = await (0, parse_command_line_arguments_1.parseCommandLineArguments)(['deploy', '-R', '-v', '--ci']);
7
- const result = (0, convert_to_cli_args_1.convertToCliArgs)(input);
8
- expect(result).toEqual({
9
- _: 'deploy',
10
- globalOptions: {
11
- app: undefined,
12
- assetMetadata: undefined,
13
- build: undefined,
14
- caBundlePath: undefined,
15
- context: [],
16
- ignoreErrors: false,
17
- noColor: false,
18
- pathMetadata: undefined,
19
- plugin: [],
20
- profile: undefined,
21
- proxy: undefined,
22
- roleArn: undefined,
23
- staging: true,
24
- strict: undefined,
25
- verbose: 1,
26
- versionReporting: undefined,
27
- ci: true,
28
- debug: false,
29
- ec2creds: undefined,
30
- json: false,
31
- lookups: true,
32
- trace: undefined,
33
- unstable: [],
34
- notices: undefined,
35
- output: undefined,
36
- },
37
- deploy: {
38
- STACKS: undefined,
39
- all: false,
40
- assetParallelism: undefined,
41
- assetPrebuild: true,
42
- buildExclude: [],
43
- changeSetName: undefined,
44
- concurrency: 1,
45
- execute: undefined,
46
- exclusively: undefined,
47
- force: false,
48
- hotswap: undefined,
49
- hotswapFallback: undefined,
50
- ignoreNoStacks: false,
51
- importExistingResources: false,
52
- logs: true,
53
- method: undefined,
54
- notificationArns: undefined,
55
- outputsFile: undefined,
56
- parameters: [{}],
57
- previousParameters: true,
58
- progress: undefined,
59
- requireApproval: undefined,
60
- rollback: false,
61
- tags: [],
62
- toolkitStackName: undefined,
63
- watch: undefined,
64
- },
5
+ describe('yargs', () => {
6
+ test('yargs object can be converted to cli arguments', async () => {
7
+ const input = await (0, parse_command_line_arguments_1.parseCommandLineArguments)(['deploy', '-R', '-v', '--ci']);
8
+ const result = (0, convert_to_user_input_1.convertYargsToUserInput)(input);
9
+ expect(result).toEqual({
10
+ command: 'deploy',
11
+ globalOptions: {
12
+ app: undefined,
13
+ assetMetadata: undefined,
14
+ build: undefined,
15
+ caBundlePath: undefined,
16
+ context: [],
17
+ ignoreErrors: false,
18
+ noColor: false,
19
+ pathMetadata: undefined,
20
+ plugin: [],
21
+ profile: undefined,
22
+ proxy: undefined,
23
+ roleArn: undefined,
24
+ staging: true,
25
+ strict: undefined,
26
+ verbose: 1,
27
+ versionReporting: undefined,
28
+ ci: true,
29
+ debug: false,
30
+ ec2creds: undefined,
31
+ json: false,
32
+ lookups: true,
33
+ trace: undefined,
34
+ unstable: [],
35
+ notices: undefined,
36
+ output: undefined,
37
+ },
38
+ deploy: {
39
+ STACKS: undefined,
40
+ all: false,
41
+ assetParallelism: undefined,
42
+ assetPrebuild: true,
43
+ buildExclude: [],
44
+ changeSetName: undefined,
45
+ concurrency: 1,
46
+ execute: undefined,
47
+ exclusively: undefined,
48
+ force: false,
49
+ hotswap: undefined,
50
+ hotswapFallback: undefined,
51
+ ignoreNoStacks: false,
52
+ importExistingResources: false,
53
+ logs: true,
54
+ method: undefined,
55
+ notificationArns: undefined,
56
+ outputsFile: undefined,
57
+ parameters: [{}],
58
+ previousParameters: true,
59
+ progress: undefined,
60
+ requireApproval: undefined,
61
+ rollback: false,
62
+ tags: [],
63
+ toolkitStackName: undefined,
64
+ watch: undefined,
65
+ },
66
+ });
65
67
  });
66
- });
67
- test('positional argument is correctly passed through -- variadic', async () => {
68
- const input = await (0, parse_command_line_arguments_1.parseCommandLineArguments)(['deploy', 'stack1', 'stack2', '-R', '-v', '--ci']);
69
- const result = (0, convert_to_cli_args_1.convertToCliArgs)(input);
70
- expect(result).toEqual({
71
- _: 'deploy',
72
- deploy: expect.objectContaining({
73
- STACKS: ['stack1', 'stack2'],
74
- }),
75
- globalOptions: expect.anything(),
68
+ test('positional argument is correctly passed through -- variadic', async () => {
69
+ const input = await (0, parse_command_line_arguments_1.parseCommandLineArguments)(['deploy', 'stack1', 'stack2', '-R', '-v', '--ci']);
70
+ const result = (0, convert_to_user_input_1.convertYargsToUserInput)(input);
71
+ expect(result).toEqual({
72
+ command: 'deploy',
73
+ deploy: expect.objectContaining({
74
+ STACKS: ['stack1', 'stack2'],
75
+ }),
76
+ globalOptions: expect.anything(),
77
+ });
78
+ });
79
+ test('positional argument is correctly passed through -- single', async () => {
80
+ const input = await (0, parse_command_line_arguments_1.parseCommandLineArguments)(['acknowledge', 'id1', '-v', '--ci']);
81
+ const result = (0, convert_to_user_input_1.convertYargsToUserInput)(input);
82
+ expect(result).toEqual({
83
+ command: 'acknowledge',
84
+ acknowledge: expect.objectContaining({
85
+ ID: 'id1',
86
+ }),
87
+ globalOptions: expect.anything(),
88
+ });
76
89
  });
77
90
  });
78
- test('positional argument is correctly passed through -- single', async () => {
79
- const input = await (0, parse_command_line_arguments_1.parseCommandLineArguments)(['acknowledge', 'id1', '-v', '--ci']);
80
- const result = (0, convert_to_cli_args_1.convertToCliArgs)(input);
81
- expect(result).toEqual({
82
- _: 'acknowledge',
83
- acknowledge: expect.objectContaining({
84
- ID: 'id1',
85
- }),
86
- globalOptions: expect.anything(),
91
+ describe('config', () => {
92
+ test('cdk.json arguments can be converted to cli argumets', async () => {
93
+ const input = {
94
+ output: 'blah.out',
95
+ build: 'yarn build',
96
+ list: {
97
+ long: true,
98
+ },
99
+ bootstrap: {
100
+ bootstrapBucketName: 'bucketName',
101
+ },
102
+ };
103
+ const result = (0, convert_to_user_input_1.convertConfigToUserInput)(input);
104
+ expect(result).toEqual({
105
+ globalOptions: expect.objectContaining({
106
+ output: 'blah.out',
107
+ build: 'yarn build',
108
+ }),
109
+ list: expect.objectContaining({
110
+ long: true,
111
+ }),
112
+ bootstrap: expect.objectContaining({
113
+ bootstrapBucketName: 'bucketName',
114
+ }),
115
+ context: expect.anything(),
116
+ acknowledge: expect.anything(),
117
+ deploy: expect.anything(),
118
+ destroy: expect.anything(),
119
+ diff: expect.anything(),
120
+ init: expect.anything(),
121
+ metadata: expect.anything(),
122
+ migrate: expect.anything(),
123
+ rollback: expect.anything(),
124
+ synth: expect.anything(),
125
+ watch: expect.anything(),
126
+ notices: expect.anything(),
127
+ import: expect.anything(),
128
+ gc: expect.anything(),
129
+ doctor: expect.anything(),
130
+ docs: expect.anything(),
131
+ });
87
132
  });
88
133
  });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWFyZ3VtZW50cy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2xpLWFyZ3VtZW50cy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsb0VBQThEO0FBQzlELHNGQUFnRjtBQUVoRixJQUFJLENBQUMsZ0RBQWdELEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDaEUsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFBLHdEQUF5QixFQUFDLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUU5RSxNQUFNLE1BQU0sR0FBRyxJQUFBLHNDQUFnQixFQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXZDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDckIsQ0FBQyxFQUFFLFFBQVE7UUFDWCxhQUFhLEVBQUU7WUFDYixHQUFHLEVBQUUsU0FBUztZQUNkLGFBQWEsRUFBRSxTQUFTO1lBQ3hCLEtBQUssRUFBRSxTQUFTO1lBQ2hCLFlBQVksRUFBRSxTQUFTO1lBQ3ZCLE9BQU8sRUFBRSxFQUFFO1lBQ1gsWUFBWSxFQUFFLEtBQUs7WUFDbkIsT0FBTyxFQUFFLEtBQUs7WUFDZCxZQUFZLEVBQUUsU0FBUztZQUN2QixNQUFNLEVBQUUsRUFBRTtZQUNWLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLEtBQUssRUFBRSxTQUFTO1lBQ2hCLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLE9BQU8sRUFBRSxJQUFJO1lBQ2IsTUFBTSxFQUFFLFNBQVM7WUFDakIsT0FBTyxFQUFFLENBQUM7WUFDVixnQkFBZ0IsRUFBRSxTQUFTO1lBQzNCLEVBQUUsRUFBRSxJQUFJO1lBQ1IsS0FBSyxFQUFFLEtBQUs7WUFDWixRQUFRLEVBQUUsU0FBUztZQUNuQixJQUFJLEVBQUUsS0FBSztZQUNYLE9BQU8sRUFBRSxJQUFJO1lBQ2IsS0FBSyxFQUFFLFNBQVM7WUFDaEIsUUFBUSxFQUFFLEVBQUU7WUFDWixPQUFPLEVBQUUsU0FBUztZQUNsQixNQUFNLEVBQUUsU0FBUztTQUNsQjtRQUNELE1BQU0sRUFBRTtZQUNOLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLEdBQUcsRUFBRSxLQUFLO1lBQ1YsZ0JBQWdCLEVBQUUsU0FBUztZQUMzQixhQUFhLEVBQUUsSUFBSTtZQUNuQixZQUFZLEVBQUUsRUFBRTtZQUNoQixhQUFhLEVBQUUsU0FBUztZQUN4QixXQUFXLEVBQUUsQ0FBQztZQUNkLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLFdBQVcsRUFBRSxTQUFTO1lBQ3RCLEtBQUssRUFBRSxLQUFLO1lBQ1osT0FBTyxFQUFFLFNBQVM7WUFDbEIsZUFBZSxFQUFFLFNBQVM7WUFDMUIsY0FBYyxFQUFFLEtBQUs7WUFDckIsdUJBQXVCLEVBQUUsS0FBSztZQUM5QixJQUFJLEVBQUUsSUFBSTtZQUNWLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLGdCQUFnQixFQUFFLFNBQVM7WUFDM0IsV0FBVyxFQUFFLFNBQVM7WUFDdEIsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2hCLGtCQUFrQixFQUFFLElBQUk7WUFDeEIsUUFBUSxFQUFFLFNBQVM7WUFDbkIsZUFBZSxFQUFFLFNBQVM7WUFDMUIsUUFBUSxFQUFFLEtBQUs7WUFDZixJQUFJLEVBQUUsRUFBRTtZQUNSLGdCQUFnQixFQUFFLFNBQVM7WUFDM0IsS0FBSyxFQUFFLFNBQVM7U0FDakI7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyw2REFBNkQsRUFBRSxLQUFLLElBQUksRUFBRTtJQUM3RSxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUEsd0RBQXlCLEVBQUMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFFbEcsTUFBTSxNQUFNLEdBQUcsSUFBQSxzQ0FBZ0IsRUFBQyxLQUFLLENBQUMsQ0FBQztJQUV2QyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ3JCLENBQUMsRUFBRSxRQUFRO1FBQ1gsTUFBTSxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztZQUM5QixNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO1NBQzdCLENBQUM7UUFDRixhQUFhLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRTtLQUNqQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQywyREFBMkQsRUFBRSxLQUFLLElBQUksRUFBRTtJQUMzRSxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUEsd0RBQXlCLEVBQUMsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBRXBGLE1BQU0sTUFBTSxHQUFHLElBQUEsc0NBQWdCLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFFdkMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUNyQixDQUFDLEVBQUUsYUFBYTtRQUNoQixXQUFXLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1lBQ25DLEVBQUUsRUFBRSxLQUFLO1NBQ1YsQ0FBQztRQUNGLGFBQWEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFO0tBQ2pDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29udmVydFRvQ2xpQXJncyB9IGZyb20gJy4uL2xpYi9jb252ZXJ0LXRvLWNsaS1hcmdzJztcbmltcG9ydCB7IHBhcnNlQ29tbWFuZExpbmVBcmd1bWVudHMgfSBmcm9tICcuLi9saWIvcGFyc2UtY29tbWFuZC1saW5lLWFyZ3VtZW50cyc7XG5cbnRlc3QoJ3lhcmdzIG9iamVjdCBjYW4gYmUgY29udmVydGVkIHRvIGNsaSBhcmd1bWVudHMnLCBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IGlucHV0ID0gYXdhaXQgcGFyc2VDb21tYW5kTGluZUFyZ3VtZW50cyhbJ2RlcGxveScsICctUicsICctdicsICctLWNpJ10pO1xuXG4gIGNvbnN0IHJlc3VsdCA9IGNvbnZlcnRUb0NsaUFyZ3MoaW5wdXQpO1xuXG4gIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe1xuICAgIF86ICdkZXBsb3knLFxuICAgIGdsb2JhbE9wdGlvbnM6IHtcbiAgICAgIGFwcDogdW5kZWZpbmVkLFxuICAgICAgYXNzZXRNZXRhZGF0YTogdW5kZWZpbmVkLFxuICAgICAgYnVpbGQ6IHVuZGVmaW5lZCxcbiAgICAgIGNhQnVuZGxlUGF0aDogdW5kZWZpbmVkLFxuICAgICAgY29udGV4dDogW10sXG4gICAgICBpZ25vcmVFcnJvcnM6IGZhbHNlLFxuICAgICAgbm9Db2xvcjogZmFsc2UsXG4gICAgICBwYXRoTWV0YWRhdGE6IHVuZGVmaW5lZCxcbiAgICAgIHBsdWdpbjogW10sXG4gICAgICBwcm9maWxlOiB1bmRlZmluZWQsXG4gICAgICBwcm94eTogdW5kZWZpbmVkLFxuICAgICAgcm9sZUFybjogdW5kZWZpbmVkLFxuICAgICAgc3RhZ2luZzogdHJ1ZSxcbiAgICAgIHN0cmljdDogdW5kZWZpbmVkLFxuICAgICAgdmVyYm9zZTogMSxcbiAgICAgIHZlcnNpb25SZXBvcnRpbmc6IHVuZGVmaW5lZCxcbiAgICAgIGNpOiB0cnVlLFxuICAgICAgZGVidWc6IGZhbHNlLFxuICAgICAgZWMyY3JlZHM6IHVuZGVmaW5lZCxcbiAgICAgIGpzb246IGZhbHNlLFxuICAgICAgbG9va3VwczogdHJ1ZSxcbiAgICAgIHRyYWNlOiB1bmRlZmluZWQsXG4gICAgICB1bnN0YWJsZTogW10sXG4gICAgICBub3RpY2VzOiB1bmRlZmluZWQsXG4gICAgICBvdXRwdXQ6IHVuZGVmaW5lZCxcbiAgICB9LFxuICAgIGRlcGxveToge1xuICAgICAgU1RBQ0tTOiB1bmRlZmluZWQsXG4gICAgICBhbGw6IGZhbHNlLFxuICAgICAgYXNzZXRQYXJhbGxlbGlzbTogdW5kZWZpbmVkLFxuICAgICAgYXNzZXRQcmVidWlsZDogdHJ1ZSxcbiAgICAgIGJ1aWxkRXhjbHVkZTogW10sXG4gICAgICBjaGFuZ2VTZXROYW1lOiB1bmRlZmluZWQsXG4gICAgICBjb25jdXJyZW5jeTogMSxcbiAgICAgIGV4ZWN1dGU6IHVuZGVmaW5lZCxcbiAgICAgIGV4Y2x1c2l2ZWx5OiB1bmRlZmluZWQsXG4gICAgICBmb3JjZTogZmFsc2UsXG4gICAgICBob3Rzd2FwOiB1bmRlZmluZWQsXG4gICAgICBob3Rzd2FwRmFsbGJhY2s6IHVuZGVmaW5lZCxcbiAgICAgIGlnbm9yZU5vU3RhY2tzOiBmYWxzZSxcbiAgICAgIGltcG9ydEV4aXN0aW5nUmVzb3VyY2VzOiBmYWxzZSxcbiAgICAgIGxvZ3M6IHRydWUsXG4gICAgICBtZXRob2Q6IHVuZGVmaW5lZCxcbiAgICAgIG5vdGlmaWNhdGlvbkFybnM6IHVuZGVmaW5lZCxcbiAgICAgIG91dHB1dHNGaWxlOiB1bmRlZmluZWQsXG4gICAgICBwYXJhbWV0ZXJzOiBbe31dLFxuICAgICAgcHJldmlvdXNQYXJhbWV0ZXJzOiB0cnVlLFxuICAgICAgcHJvZ3Jlc3M6IHVuZGVmaW5lZCxcbiAgICAgIHJlcXVpcmVBcHByb3ZhbDogdW5kZWZpbmVkLFxuICAgICAgcm9sbGJhY2s6IGZhbHNlLFxuICAgICAgdGFnczogW10sXG4gICAgICB0b29sa2l0U3RhY2tOYW1lOiB1bmRlZmluZWQsXG4gICAgICB3YXRjaDogdW5kZWZpbmVkLFxuICAgIH0sXG4gIH0pO1xufSk7XG5cbnRlc3QoJ3Bvc2l0aW9uYWwgYXJndW1lbnQgaXMgY29ycmVjdGx5IHBhc3NlZCB0aHJvdWdoIC0tIHZhcmlhZGljJywgYXN5bmMgKCkgPT4ge1xuICBjb25zdCBpbnB1dCA9IGF3YWl0IHBhcnNlQ29tbWFuZExpbmVBcmd1bWVudHMoWydkZXBsb3knLCAnc3RhY2sxJywgJ3N0YWNrMicsICctUicsICctdicsICctLWNpJ10pO1xuXG4gIGNvbnN0IHJlc3VsdCA9IGNvbnZlcnRUb0NsaUFyZ3MoaW5wdXQpO1xuXG4gIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe1xuICAgIF86ICdkZXBsb3knLFxuICAgIGRlcGxveTogZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgU1RBQ0tTOiBbJ3N0YWNrMScsICdzdGFjazInXSxcbiAgICB9KSxcbiAgICBnbG9iYWxPcHRpb25zOiBleHBlY3QuYW55dGhpbmcoKSxcbiAgfSk7XG59KTtcblxudGVzdCgncG9zaXRpb25hbCBhcmd1bWVudCBpcyBjb3JyZWN0bHkgcGFzc2VkIHRocm91Z2ggLS0gc2luZ2xlJywgYXN5bmMgKCkgPT4ge1xuICBjb25zdCBpbnB1dCA9IGF3YWl0IHBhcnNlQ29tbWFuZExpbmVBcmd1bWVudHMoWydhY2tub3dsZWRnZScsICdpZDEnLCAnLXYnLCAnLS1jaSddKTtcblxuICBjb25zdCByZXN1bHQgPSBjb252ZXJ0VG9DbGlBcmdzKGlucHV0KTtcblxuICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHtcbiAgICBfOiAnYWNrbm93bGVkZ2UnLFxuICAgIGFja25vd2xlZGdlOiBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICBJRDogJ2lkMScsXG4gICAgfSksXG4gICAgZ2xvYmFsT3B0aW9uczogZXhwZWN0LmFueXRoaW5nKCksXG4gIH0pO1xufSk7XG4iXX0=
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWFyZ3VtZW50cy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2xpLWFyZ3VtZW50cy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0VBQWlHO0FBQ2pHLHNGQUFnRjtBQUVoRixRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtJQUNyQixJQUFJLENBQUMsZ0RBQWdELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDaEUsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFBLHdEQUF5QixFQUFDLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUU5RSxNQUFNLE1BQU0sR0FBRyxJQUFBLCtDQUF1QixFQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTlDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDckIsT0FBTyxFQUFFLFFBQVE7WUFDakIsYUFBYSxFQUFFO2dCQUNiLEdBQUcsRUFBRSxTQUFTO2dCQUNkLGFBQWEsRUFBRSxTQUFTO2dCQUN4QixLQUFLLEVBQUUsU0FBUztnQkFDaEIsWUFBWSxFQUFFLFNBQVM7Z0JBQ3ZCLE9BQU8sRUFBRSxFQUFFO2dCQUNYLFlBQVksRUFBRSxLQUFLO2dCQUNuQixPQUFPLEVBQUUsS0FBSztnQkFDZCxZQUFZLEVBQUUsU0FBUztnQkFDdkIsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsT0FBTyxFQUFFLFNBQVM7Z0JBQ2xCLEtBQUssRUFBRSxTQUFTO2dCQUNoQixPQUFPLEVBQUUsU0FBUztnQkFDbEIsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsTUFBTSxFQUFFLFNBQVM7Z0JBQ2pCLE9BQU8sRUFBRSxDQUFDO2dCQUNWLGdCQUFnQixFQUFFLFNBQVM7Z0JBQzNCLEVBQUUsRUFBRSxJQUFJO2dCQUNSLEtBQUssRUFBRSxLQUFLO2dCQUNaLFFBQVEsRUFBRSxTQUFTO2dCQUNuQixJQUFJLEVBQUUsS0FBSztnQkFDWCxPQUFPLEVB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QixJQUFJLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRTtTQUN4QixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29udmVydENvbmZpZ1RvVXNlcklucHV0LCBjb252ZXJ0WWFyZ3NUb1VzZXJJbnB1dCB9IGZyb20gJy4uL2xpYi9jb252ZXJ0LXRvLXVzZXItaW5wdXQnO1xuaW1wb3J0IHsgcGFyc2VDb21tYW5kTGluZUFyZ3VtZW50cyB9IGZyb20gJy4uL2xpYi9wYXJzZS1jb21tYW5kLWxpbmUtYXJndW1lbnRzJztcblxuZGVzY3JpYmUoJ3lhcmdzJywgKCkgPT4ge1xuICB0ZXN0KCd5YXJncyBvYmplY3QgY2FuIGJlIGNvbnZlcnRlZCB0byBjbGkgYXJndW1lbnRzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgcGFyc2VDb21tYW5kTGluZUFyZ3VtZW50cyhbJ2RlcGxveScsICctUicsICctdicsICctLWNpJ10pO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gY29udmVydFlhcmdzVG9Vc2VySW5wdXQoaW5wdXQpO1xuXG4gICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7XG4gICAgICBjb21tYW5kOiAnZGVwbG95JyxcbiAgICAgIGdsb2JhbE9wdGlvbnM6IHtcbiAgICAgICAgYXBwOiB1bmRlZmluZWQsXG4gICAgICAgIGFzc2V0TWV0YWRhdGE6IHVuZGVmaW5lZCxcbiAgICAgICAgYnVpbGQ6IHVuZGVmaW5lZCxcbiAgICAgICAgY2FCdW5kbGVQYXRoOiB1bmRlZmluZWQsXG4gICAgICAgIGNvbnRleHQ6IFtdLFxuICAgICAgICBpZ25vcmVFcnJvcnM6IGZhbHNlLFxuICAgICAgICBub0NvbG9yOiBmYWxzZSxcbiAgICAgICAgcGF0aE1ldGFkYXRhOiB1bmRlZmluZWQsXG4gICAgICAgIHBsdWdpbjogW10sXG4gICAgICAgIHByb2ZpbGU6IHVuZGVmaW5lZCxcbiAgICAgICAgcHJveHk6IHVuZGVmaW5lZCxcbiAgICAgICAgcm9sZUFybjogdW5kZWZpbmVkLFxuICAgICAgICBzdGFnaW5nOiB0cnVlLFxuICAgICAgICBzdHJpY3Q6IHVuZGVmaW5lZCxcbiAgICAgICAgdmVyYm9zZTogMSxcbiAgICAgICAgdmVyc2lvblJlcG9ydGluZzogdW5kZWZpbmVkLFxuICAgICAgICBjaTogdHJ1ZSxcbiAgICAgICAgZGVidWc6IGZhbHNlLFxuICAgICAgICBlYzJjcmVkczogdW5kZWZpbmVkLFxuICAgICAgICBqc29uOiBmYWxzZSxcbiAgICAgICAgbG9va3VwczogdHJ1ZSxcbiAgICAgICAgdHJhY2U6IHVuZGVmaW5lZCxcbiAgICAgICAgdW5zdGFibGU6IFtdLFxuICAgICAgICBub3RpY2VzOiB1bmRlZmluZWQsXG4gICAgICAgIG91dHB1dDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIGRlcGxveToge1xuICAgICAgICBTVEFDS1M6IHVuZGVmaW5lZCxcbiAgICAgICAgYWxsOiBmYWxzZSxcbiAgICAgICAgYXNzZXRQYXJhbGxlbGlzbTogdW5kZWZpbmVkLFxuICAgICAgICBhc3NldFByZWJ1aWxkOiB0cnVlLFxuICAgICAgICBidWlsZEV4Y2x1ZGU6IFtdLFxuICAgICAgICBjaGFuZ2VTZXROYW1lOiB1bmRlZmluZWQsXG4gICAgICAgIGNvbmN1cnJlbmN5OiAxLFxuICAgICAgICBleGVjdXRlOiB1bmRlZmluZWQsXG4gICAgICAgIGV4Y2x1c2l2ZWx5OiB1bmRlZmluZWQsXG4gICAgICAgIGZvcmNlOiBmYWxzZSxcbiAgICAgICAgaG90c3dhcDogdW5kZWZpbmVkLFxuICAgICAgICBob3Rzd2FwRmFsbGJhY2s6IHVuZGVmaW5lZCxcbiAgICAgICAgaWdub3JlTm9TdGFja3M6IGZhbHNlLFxuICAgICAgICBpbXBvcnRFeGlzdGluZ1Jlc291cmNlczogZmFsc2UsXG4gICAgICAgIGxvZ3M6IHRydWUsXG4gICAgICAgIG1ldGhvZDogdW5kZWZpbmVkLFxuICAgICAgICBub3RpZmljYXRpb25Bcm5zOiB1bmRlZmluZWQsXG4gICAgICAgIG91dHB1dHNGaWxlOiB1bmRlZmluZWQsXG4gICAgICAgIHBhcmFtZXRlcnM6IFt7fV0sXG4gICAgICAgIHByZXZpb3VzUGFyYW1ldGVyczogdHJ1ZSxcbiAgICAgICAgcHJvZ3Jlc3M6IHVuZGVmaW5lZCxcbiAgICAgICAgcmVxdWlyZUFwcHJvdmFsOiB1bmRlZmluZWQsXG4gICAgICAgIHJvbGxiYWNrOiBmYWxzZSxcbiAgICAgICAgdGFnczogW10sXG4gICAgICAgIHRvb2xraXRTdGFja05hbWU6IHVuZGVmaW5lZCxcbiAgICAgICAgd2F0Y2g6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIHRlc3QoJ3Bvc2l0aW9uYWwgYXJndW1lbnQgaXMgY29ycmVjdGx5IHBhc3NlZCB0aHJvdWdoIC0tIHZhcmlhZGljJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgcGFyc2VDb21tYW5kTGluZUFyZ3VtZW50cyhbJ2RlcGxveScsICdzdGFjazEnLCAnc3RhY2syJywgJy1SJywgJy12JywgJy0tY2knXSk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBjb252ZXJ0WWFyZ3NUb1VzZXJJbnB1dChpbnB1dCk7XG5cbiAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHtcbiAgICAgIGNvbW1hbmQ6ICdkZXBsb3knLFxuICAgICAgZGVwbG95OiBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICAgIFNUQUNLUzogWydzdGFjazEnLCAnc3RhY2syJ10sXG4gICAgICB9KSxcbiAgICAgIGdsb2JhbE9wdGlvbnM6IGV4cGVjdC5hbnl0aGluZygpLFxuICAgIH0pO1xuICB9KTtcblxuICB0ZXN0KCdwb3NpdGlvbmFsIGFyZ3VtZW50IGlzIGNvcnJlY3RseSBwYXNzZWQgdGhyb3VnaCAtLSBzaW5nbGUnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgaW5wdXQgPSBhd2FpdCBwYXJzZUNvbW1hbmRMaW5lQXJndW1lbnRzKFsnYWNrbm93bGVkZ2UnLCAnaWQxJywgJy12JywgJy0tY2knXSk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBjb252ZXJ0WWFyZ3NUb1VzZXJJbnB1dChpbnB1dCk7XG5cbiAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHtcbiAgICAgIGNvbW1hbmQ6ICdhY2tub3dsZWRnZScsXG4gICAgICBhY2tub3dsZWRnZTogZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgICBJRDogJ2lkMScsXG4gICAgICB9KSxcbiAgICAgIGdsb2JhbE9wdGlvbnM6IGV4cGVjdC5hbnl0aGluZygpLFxuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnY29uZmlnJywgKCkgPT4ge1xuICB0ZXN0KCdjZGsuanNvbiBhcmd1bWVudHMgY2FuIGJlIGNvbnZlcnRlZCB0byBjbGkgYXJndW1ldHMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgaW5wdXQgPSB7XG4gICAgICBvdXRwdXQ6ICdibGFoLm91dCcsXG4gICAgICBidWlsZDogJ3lhcm4gYnVpbGQnLFxuICAgICAgbGlzdDoge1xuICAgICAgICBsb25nOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGJvb3RzdHJhcDoge1xuICAgICAgICBib290c3RyYXBCdWNrZXROYW1lOiAnYnVja2V0TmFtZScsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCByZXN1bHQgPSBjb252ZXJ0Q29uZmlnVG9Vc2VySW5wdXQoaW5wdXQpO1xuXG4gICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7XG4gICAgICBnbG9iYWxPcHRpb25zOiBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICAgIG91dHB1dDogJ2JsYWgub3V0JyxcbiAgICAgICAgYnVpbGQ6ICd5YXJuIGJ1aWxkJyxcbiAgICAgIH0pLFxuICAgICAgbGlzdDogZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgICBsb25nOiB0cnVlLFxuICAgICAgfSksXG4gICAgICBib290c3RyYXA6IGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgICAgYm9vdHN0cmFwQnVja2V0TmFtZTogJ2J1Y2tldE5hbWUnLFxuICAgICAgfSksXG4gICAgICBjb250ZXh0OiBleHBlY3QuYW55dGhpbmcoKSxcbiAgICAgIGFja25vd2xlZGdlOiBleHBlY3QuYW55dGhpbmcoKSxcbiAgICAgIGRlcGxveTogZXhwZWN0LmFueXRoaW5nKCksXG4gICAgICBkZXN0cm95OiBleHBlY3QuYW55dGhpbmcoKSxcbiAgICAgIGRpZmY6IGV4cGVjdC5hbnl0aGluZygpLFxuICAgICAgaW5pdDogZXhwZWN0LmFueXRoaW5nKCksXG4gICAgICBtZXRhZGF0YTogZXhwZWN0LmFueXRoaW5nKCksXG4gICAgICBtaWdyYXRlOiBleHBlY3QuYW55dGhpbmcoKSxcbiAgICAgIHJvbGxiYWNrOiBleHBlY3QuYW55dGhpbmcoKSxcbiAgICAgIHN5bnRoOiBleHBlY3QuYW55dGhpbmcoKSxcbiAgICAgIHdhdGNoOiBleHBlY3QuYW55dGhpbmcoKSxcbiAgICAgIG5vdGljZXM6IGV4cGVjdC5hbnl0aGluZygpLFxuICAgICAgaW1wb3J0OiBleHBlY3QuYW55dGhpbmcoKSxcbiAgICAgIGdjOiBleHBlY3QuYW55dGhpbmcoKSxcbiAgICAgIGRvY3RvcjogZXhwZWN0LmFueXRoaW5nKCksXG4gICAgICBkb2NzOiBleHBlY3QuYW55dGhpbmcoKSxcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
package/test/cli.test.js CHANGED
@@ -10,7 +10,7 @@ jest.mock('../lib/logging', () => ({
10
10
  DEBUG: 'DEBUG',
11
11
  TRACE: 'TRACE',
12
12
  },
13
- setLogLevel: jest.fn(),
13
+ setIoMessageThreshold: jest.fn(),
14
14
  debug: jest.fn(),
15
15
  error: jest.fn(),
16
16
  print: jest.fn(),
@@ -63,27 +63,27 @@ describe('exec verbose flag tests', () => {
63
63
  });
64
64
  test('should not set log level when no verbose flag is present', async () => {
65
65
  await (0, cli_1.exec)(['version']);
66
- expect(logging_1.setLogLevel).not.toHaveBeenCalled();
66
+ expect(logging_1.setIoMessageThreshold).not.toHaveBeenCalled();
67
67
  });
68
68
  test('should set DEBUG level with single -v flag', async () => {
69
69
  await (0, cli_1.exec)(['-v', 'version']);
70
- expect(logging_1.setLogLevel).toHaveBeenCalledWith(logging_1.LogLevel.DEBUG);
70
+ expect(logging_1.setIoMessageThreshold).toHaveBeenCalledWith('debug');
71
71
  });
72
72
  test('should set TRACE level with double -v flag', async () => {
73
73
  await (0, cli_1.exec)(['-v', '-v', 'version']);
74
- expect(logging_1.setLogLevel).toHaveBeenCalledWith(logging_1.LogLevel.TRACE);
74
+ expect(logging_1.setIoMessageThreshold).toHaveBeenCalledWith('trace');
75
75
  });
76
76
  test('should set DEBUG level with --verbose=1', async () => {
77
77
  await (0, cli_1.exec)(['--verbose', '1', 'version']);
78
- expect(logging_1.setLogLevel).toHaveBeenCalledWith(logging_1.LogLevel.DEBUG);
78
+ expect(logging_1.setIoMessageThreshold).toHaveBeenCalledWith('debug');
79
79
  });
80
80
  test('should set TRACE level with --verbose=2', async () => {
81
81
  await (0, cli_1.exec)(['--verbose', '2', 'version']);
82
- expect(logging_1.setLogLevel).toHaveBeenCalledWith(logging_1.LogLevel.TRACE);
82
+ expect(logging_1.setIoMessageThreshold).toHaveBeenCalledWith('trace');
83
83
  });
84
84
  test('should set TRACE level with verbose level > 2', async () => {
85
85
  await (0, cli_1.exec)(['--verbose', '3', 'version']);
86
- expect(logging_1.setLogLevel).toHaveBeenCalledWith(logging_1.LogLevel.TRACE);
86
+ expect(logging_1.setIoMessageThreshold).toHaveBeenCalledWith('trace');
87
87
  });
88
88
  });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjbGkudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG9DQUFrQztBQUNsQyw0Q0FBdUQ7QUFFdkQsOEVBQThFO0FBQzlFLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUU3RCx3QkFBd0I7QUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsRUFBRTtRQUNSLEtBQUssRUFBRSxPQUFPO1FBQ2QsS0FBSyxFQUFFLE9BQU87S0FDZjtJQUNELFdBQVcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO0lBQ3RCLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO0lBQ2hCLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO0lBQ2hCLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO0lBQ2hCLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO0NBQ2hCLENBQUMsQ0FBQyxDQUFDO0FBRUosSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDM0Msd0JBQXdCLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQztDQUNqRSxDQUFDLENBQUMsQ0FBQztBQUVKLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNsQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDakQsSUFBSSxF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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlYyB9IGZyb20gJy4uL2xpYi9jbGknO1xuaW1wb3J0IHsgTG9nTGV2ZWwsIHNldExvZ0xldmVsIH0gZnJvbSAnLi4vbGliL2xvZ2dpbmcnO1xuXG4vLyBTdG9yZSBvcmlnaW5hbCB2ZXJzaW9uIG1vZHVsZSBleHBvcnRzIHNvIHdlIGRvbid0IGNvbmZsaWN0IHdpdGggb3RoZXIgdGVzdHNcbmNvbnN0IG9yaWdpbmFsVmVyc2lvbiA9IGplc3QucmVxdWlyZUFjdHVhbCgnLi4vbGliL3ZlcnNpb24nKTtcblxuLy8gTW9jayB0aGUgZGVwZW5kZW5jaWVzXG5qZXN0Lm1vY2soJy4uL2xpYi9sb2dnaW5nJywgKCkgPT4gKHtcbiAgTG9nTGV2ZWw6IHtcbiAgICBERUJVRzogJ0RFQlVHJyxcbiAgICBUUkFDRTogJ1RSQUNFJyxcbiAgfSxcbiAgc2V0TG9nTGV2ZWw6IGplc3QuZm4oKSxcbiAgZGVidWc6IGplc3QuZm4oKSxcbiAgZXJyb3I6IGplc3QuZm4oKSxcbiAgcHJpbnQ6IGplc3QuZm4oKSxcbiAgZGF0YTogamVzdC5mbigpLFxufSkpO1xuXG5qZXN0Lm1vY2soJ0Bhd3MtY2RrL2N4LWFwaScpO1xuamVzdC5tb2NrKCdAanNpaS9jaGVjay1ub2RlL3J1bicpO1xuamVzdC5tb2NrKCcuLi9saWIvcGxhdGZvcm0td2FybmluZ3MnLCAoKSA9PiAoe1xuICBjaGVja0ZvclBsYXRmb3JtV2FybmluZ3M6IGplc3QuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZSh1bmRlZmluZWQpLFxufSkpO1xuXG5qZXN0Lm1vY2soJy4uL2xpYi9zZXR0aW5ncycsICgpID0+ICh7XG4gIENvbmZpZ3VyYXRpb246IGplc3QuZm4oKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gKHtcbiAgICBsb2FkOiBqZXN0LmZuKCkubW9ja1Jlc29sdmVkVmFsdWUodW5kZWZpbmVkKSxcbiAgICBzZXR0aW5nczoge1xuICAgICAgZ2V0OiBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHVuZGVmaW5lZCksXG4gICAgfSxcbiAgICBjb250ZXh0OiB7XG4gICAgICBnZXQ6IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUoW10pLFxuICAgIH0sXG4gIH0pKSxcbn0pKTtcblxuamVzdC5tb2NrKCcuLi9saWIvbm90aWNlcycsICgpID0+ICh7XG4gIE5vdGljZXM6IHtcbiAgICBjcmVhdGU6IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUoe1xuICAgICAgcmVmcmVzaDogamVzdC5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHVuZGVmaW5lZCksXG4gICAgICBkaXNwbGF5OiBqZXN0LmZuKCksXG4gICAgfSksXG4gIH0sXG59KSk7XG5cbmplc3QubW9jaygnLi4vbGliL3BhcnNlLWNvbW1hbmQtbGluZS1hcmd1bWVudHMnLCAoKSA9PiAoe1xuICBwYXJzZUNvbW1hbmRMaW5lQXJndW1lbnRzOiBqZXN0LmZuKCkubW9ja0ltcGxlbWVudGF0aW9uKChhcmdzKSA9PiBQcm9taXNlLnJlc29sdmUoe1xuICAgIF86IFsndmVyc2lvbiddLFxuICAgIHZlcmJvc2U6IGFyZ3MuaW5jbHVkZXMoJy12JykgPyAoXG4gICAgICBhcmdzLmZpbHRlcigoYXJnOiBzdHJpbmcpID0+IGFyZyA9PT0gJy12JykubGVuZ3RoXG4gICAgKSA6IGFyZ3MuaW5jbHVkZXMoJy0tdmVyYm9zZScpID8gKFxuICAgICAgcGFyc2VJbnQoYXJnc1thcmdzLmluZGV4T2YoJy0tdmVyYm9zZScpICsgMV0pIHx8IHRydWVcbiAgICApIDogdW5kZWZpbmVkLFxuICB9KSksXG59KSk7XG5cbmRlc2NyaWJlKCdleGVjIHZlcmJvc2UgZmxhZyB0ZXN0cycsICgpID0+IHtcbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgamVzdC5jbGVhckFsbE1vY2tzKCk7XG4gICAgLy8gU2V0IHVwIHZlcnNpb24gbW9kdWxlIGZvciBvdXIgdGVzdHNcbiAgICBqZXN0Lm1vY2soJy4uL2xpYi92ZXJzaW9uJywgKCkgPT4gKHtcbiAgICAgIC4uLm9yaWdpbmFsVmVyc2lvbixcbiAgICAgIERJU1BMQVlfVkVSU0lPTjogJ3Rlc3QtdmVyc2lvbicsXG4gICAgICBkaXNwbGF5VmVyc2lvbk1lc3NhZ2U6IGplc3QuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZSh1bmRlZmluZWQpLFxuICAgIH0pKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAvLyBSZXN0b3JlIHRoZSB2ZXJzaW9uIG1vZHVsZSB0byBpdHMgb3JpZ2luYWwgc3RhdGVcbiAgICBqZXN0LnJlc2V0TW9kdWxlcygpO1xuICAgIGplc3Quc2V0TW9jaygnLi4vbGliL3ZlcnNpb24nLCBvcmlnaW5hbFZlcnNpb24pO1xuICB9KTtcblxuICB0ZXN0KCdzaG91bGQgbm90IHNldCBsb2cgbGV2ZWwgd2hlbiBubyB2ZXJib3NlIGZsYWcgaXMgcHJlc2VudCcsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBleGVjKFsndmVyc2lvbiddKTtcbiAgICBleHBlY3Qoc2V0TG9nTGV2ZWwpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gIH0pO1xuXG4gIHRlc3QoJ3Nob3VsZCBzZXQgREVCVUcgbGV2ZWwgd2l0aCBzaW5nbGUgLXYgZmxhZycsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBleGVjKFsnLXYnLCAndmVyc2lvbiddKTtcbiAgICBleHBlY3Qoc2V0TG9nTGV2ZWwpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKExvZ0xldmVsLkRFQlVHKTtcbiAgfSk7XG5cbiAgdGVzdCgnc2hvdWxkIHNldCBUUkFDRSBsZXZlbCB3aXRoIGRvdWJsZSAtdiBmbGFnJywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGV4ZWMoWyctdicsICctdicsICd2ZXJzaW9uJ10pO1xuICAgIGV4cGVjdChzZXRMb2dMZXZlbCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoTG9nTGV2ZWwuVFJBQ0UpO1xuICB9KTtcblxuICB0ZXN0KCdzaG91bGQgc2V0IERFQlVHIGxldmVsIHdpdGggLS12ZXJib3NlPTEnLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgZXhlYyhbJy0tdmVyYm9zZScsICcxJywgJ3ZlcnNpb24nXSk7XG4gICAgZXhwZWN0KHNldExvZ0xldmVsKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChMb2dMZXZlbC5ERUJVRyk7XG4gIH0pO1xuXG4gIHRlc3QoJ3Nob3VsZCBzZXQgVFJBQ0UgbGV2ZWwgd2l0aCAtLXZlcmJvc2U9MicsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBleGVjKFsnLS12ZXJib3NlJywgJzInLCAndmVyc2lvbiddKTtcbiAgICBleHBlY3Qoc2V0TG9nTGV2ZWwpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKExvZ0xldmVsLlRSQUNFKTtcbiAgfSk7XG5cbiAgdGVzdCgnc2hvdWxkIHNldCBUUkFDRSBsZXZlbCB3aXRoIHZlcmJvc2UgbGV2ZWwgPiAyJywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGV4ZWMoWyctLXZlcmJvc2UnLCAnMycsICd2ZXJzaW9uJ10pO1xuICAgIGV4cGVjdChzZXRMb2dMZXZlbCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoTG9nTGV2ZWwuVFJBQ0UpO1xuICB9KTtcbn0pO1xuIl19
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjbGkudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG9DQUFrQztBQUNsQyw0Q0FBdUQ7QUFFdkQsOEVBQThFO0FBQzlFLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUU3RCx3QkFBd0I7QUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsRUFBRTtRQUNSLEtBQUssRUFBRSxPQUFPO1FBQ2QsS0FBSyxFQUFFLE9BQU87S0FDZjtJQUNELHFCQUFxQixFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7SUFDaEMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7SUFDaEIsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7SUFDaEIsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7SUFDaEIsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7Q0FDaEIsQ0FBQyxDQUFDLENBQUM7QUFFSixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUMzQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDO0NBQ2pFLENBQUMsQ0FBQyxDQUFDO0FBRUosSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLGFBQWEsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNqRCxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQztRQUM1QyxRQUFRLEVBQUU7WUFDUixHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7U0FDMUM7UUFDRCxPQUFPLEVBQUU7WUFDUCxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7U0FDbkM7S0FDRixDQUFDLENBQUM7Q0FDSixDQUFDLENBQUMsQ0FBQztBQUVKLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqQyxPQUFPLEVBQUU7UUFDUCxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQztZQUNoQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQztZQUMvQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtTQUNuQixDQUFDO0tBQ0g7Q0FDRixDQUFDLENBQUMsQ0FBQztBQUVKLElBQUksQ0FBQyxJQUFJLENBQUMscUNBQXFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN0RCx5QkFBeUIsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDaEYsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO1FBQ2QsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQ2xELENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQy9CLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FDdEQsQ0FBQyxDQUFDLENBQUMsU0FBUztLQUNkLENBQUMsQ0FBQztDQUNKLENBQUMsQ0FBQyxDQUFDO0FBRUosUUFBUSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRTtJQUN2QyxVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLHNDQUFzQztRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDakMsR0FBRyxlQUFlO1lBQ2xCLGVBQWUsRUFBRSxjQUFjO1lBQy9CLHFCQUFxQixFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUM7U0FDOUQsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDLENBQUMsQ0FBQztJQUVILFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYixtREFBbUQ7UUFDbkQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsMERBQTBELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDMUUsTUFBTSxJQUFBLFVBQUksRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDeEIsTUFBTSxDQUFDLCtCQUFxQixDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDdkQsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsNENBQTRDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDNUQsTUFBTSxJQUFBLFVBQUksRUFBQyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzlCLE1BQU0sQ0FBQywrQkFBcUIsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlELENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLDRDQUE0QyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzVELE1BQU0sSUFBQSxVQUFJLEVBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDcEMsTUFBTSxDQUFDLCtCQUFxQixDQUFDLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUQsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMseUNBQXlDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDekQsTUFBTSxJQUFBLFVBQUksRUFBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUMxQyxNQUFNLENBQUMsK0JBQXFCLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5RCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyx5Q0FBeUMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUN6RCxNQUFNLElBQUEsVUFBSSxFQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sQ0FBQywrQkFBcUIsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlELENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLCtDQUErQyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQy9ELE1BQU0sSUFBQSxVQUFJLEVBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsTUFBTSxDQUFDLCtCQUFxQixDQUFDLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWMgfSBmcm9tICcuLi9saWIvY2xpJztcbmltcG9ydCB7IHNldElvTWVzc2FnZVRocmVzaG9sZCB9IGZyb20gJy4uL2xpYi9sb2dnaW5nJztcblxuLy8gU3RvcmUgb3JpZ2luYWwgdmVyc2lvbiBtb2R1bGUgZXhwb3J0cyBzbyB3ZSBkb24ndCBjb25mbGljdCB3aXRoIG90aGVyIHRlc3RzXG5jb25zdCBvcmlnaW5hbFZlcnNpb24gPSBqZXN0LnJlcXVpcmVBY3R1YWwoJy4uL2xpYi92ZXJzaW9uJyk7XG5cbi8vIE1vY2sgdGhlIGRlcGVuZGVuY2llc1xuamVzdC5tb2NrKCcuLi9saWIvbG9nZ2luZycsICgpID0+ICh7XG4gIExvZ0xldmVsOiB7XG4gICAgREVCVUc6ICdERUJVRycsXG4gICAgVFJBQ0U6ICdUUkFDRScsXG4gIH0sXG4gIHNldElvTWVzc2FnZVRocmVzaG9sZDogamVzdC5mbigpLFxuICBkZWJ1ZzogamVzdC5mbigpLFxuICBlcnJvcjogamVzdC5mbigpLFxuICBwcmludDogamVzdC5mbigpLFxuICBkYXRhOiBqZXN0LmZuKCksXG59KSk7XG5cbmplc3QubW9jaygnQGF3cy1jZGsvY3gtYXBpJyk7XG5qZXN0Lm1vY2soJ0Bqc2lpL2NoZWNrLW5vZGUvcnVuJyk7XG5qZXN0Lm1vY2soJy4uL2xpYi9wbGF0Zm9ybS13YXJuaW5ncycsICgpID0+ICh7XG4gIGNoZWNrRm9yUGxhdGZvcm1XYXJuaW5nczogamVzdC5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHVuZGVmaW5lZCksXG59KSk7XG5cbmplc3QubW9jaygnLi4vbGliL3NldHRpbmdzJywgKCkgPT4gKHtcbiAgQ29uZmlndXJhdGlvbjogamVzdC5mbigpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiAoe1xuICAgIGxvYWQ6IGplc3QuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZSh1bmRlZmluZWQpLFxuICAgIHNldHRpbmdzOiB7XG4gICAgICBnZXQ6IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUodW5kZWZpbmVkKSxcbiAgICB9LFxuICAgIGNvbnRleHQ6IHtcbiAgICAgIGdldDogamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZShbXSksXG4gICAgfSxcbiAgfSkpLFxufSkpO1xuXG5qZXN0Lm1vY2soJy4uL2xpYi9ub3RpY2VzJywgKCkgPT4gKHtcbiAgTm90aWNlczoge1xuICAgIGNyZWF0ZTogamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7XG4gICAgICByZWZyZXNoOiBqZXN0LmZuKCkubW9ja1Jlc29sdmVkVmFsdWUodW5kZWZpbmVkKSxcbiAgICAgIGRpc3BsYXk6IGplc3QuZm4oKSxcbiAgICB9KSxcbiAgfSxcbn0pKTtcblxuamVzdC5tb2NrKCcuLi9saWIvcGFyc2UtY29tbWFuZC1saW5lLWFyZ3VtZW50cycsICgpID0+ICh7XG4gIHBhcnNlQ29tbWFuZExpbmVBcmd1bWVudHM6IGplc3QuZm4oKS5tb2NrSW1wbGVtZW50YXRpb24oKGFyZ3MpID0+IFByb21pc2UucmVzb2x2ZSh7XG4gICAgXzogWyd2ZXJzaW9uJ10sXG4gICAgdmVyYm9zZTogYXJncy5pbmNsdWRlcygnLXYnKSA/IChcbiAgICAgIGFyZ3MuZmlsdGVyKChhcmc6IHN0cmluZykgPT4gYXJnID09PSAnLXYnKS5sZW5ndGhcbiAgICApIDogYXJncy5pbmNsdWRlcygnLS12ZXJib3NlJykgPyAoXG4gICAgICBwYXJzZUludChhcmdzW2FyZ3MuaW5kZXhPZignLS12ZXJib3NlJykgKyAxXSkgfHwgdHJ1ZVxuICAgICkgOiB1bmRlZmluZWQsXG4gIH0pKSxcbn0pKTtcblxuZGVzY3JpYmUoJ2V4ZWMgdmVyYm9zZSBmbGFnIHRlc3RzJywgKCkgPT4ge1xuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBqZXN0LmNsZWFyQWxsTW9ja3MoKTtcbiAgICAvLyBTZXQgdXAgdmVyc2lvbiBtb2R1bGUgZm9yIG91ciB0ZXN0c1xuICAgIGplc3QubW9jaygnLi4vbGliL3ZlcnNpb24nLCAoKSA9PiAoe1xuICAgICAgLi4ub3JpZ2luYWxWZXJzaW9uLFxuICAgICAgRElTUExBWV9WRVJTSU9OOiAndGVzdC12ZXJzaW9uJyxcbiAgICAgIGRpc3BsYXlWZXJzaW9uTWVzc2FnZTogamVzdC5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHVuZGVmaW5lZCksXG4gICAgfSkpO1xuICB9KTtcblxuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIC8vIFJlc3RvcmUgdGhlIHZlcnNpb24gbW9kdWxlIHRvIGl0cyBvcmlnaW5hbCBzdGF0ZVxuICAgIGplc3QucmVzZXRNb2R1bGVzKCk7XG4gICAgamVzdC5zZXRNb2NrKCcuLi9saWIvdmVyc2lvbicsIG9yaWdpbmFsVmVyc2lvbik7XG4gIH0pO1xuXG4gIHRlc3QoJ3Nob3VsZCBub3Qgc2V0IGxvZyBsZXZlbCB3aGVuIG5vIHZlcmJvc2UgZmxhZyBpcyBwcmVzZW50JywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGV4ZWMoWyd2ZXJzaW9uJ10pO1xuICAgIGV4cGVjdChzZXRJb01lc3NhZ2VUaHJlc2hvbGQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gIH0pO1xuXG4gIHRlc3QoJ3Nob3VsZCBzZXQgREVCVUcgbGV2ZWwgd2l0aCBzaW5nbGUgLXYgZmxhZycsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBleGVjKFsnLXYnLCAndmVyc2lvbiddKTtcbiAgICBleHBlY3Qoc2V0SW9NZXNzYWdlVGhyZXNob2xkKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnZGVidWcnKTtcbiAgfSk7XG5cbiAgdGVzdCgnc2hvdWxkIHNldCBUUkFDRSBsZXZlbCB3aXRoIGRvdWJsZSAtdiBmbGFnJywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGV4ZWMoWyctdicsICctdicsICd2ZXJzaW9uJ10pO1xuICAgIGV4cGVjdChzZXRJb01lc3NhZ2VUaHJlc2hvbGQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCd0cmFjZScpO1xuICB9KTtcblxuICB0ZXN0KCdzaG91bGQgc2V0IERFQlVHIGxldmVsIHdpdGggLS12ZXJib3NlPTEnLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgZXhlYyhbJy0tdmVyYm9zZScsICcxJywgJ3ZlcnNpb24nXSk7XG4gICAgZXhwZWN0KHNldElvTWVzc2FnZVRocmVzaG9sZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ2RlYnVnJyk7XG4gIH0pO1xuXG4gIHRlc3QoJ3Nob3VsZCBzZXQgVFJBQ0UgbGV2ZWwgd2l0aCAtLXZlcmJvc2U9MicsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBleGVjKFsnLS12ZXJib3NlJywgJzInLCAndmVyc2lvbiddKTtcbiAgICBleHBlY3Qoc2V0SW9NZXNzYWdlVGhyZXNob2xkKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgndHJhY2UnKTtcbiAgfSk7XG5cbiAgdGVzdCgnc2hvdWxkIHNldCBUUkFDRSBsZXZlbCB3aXRoIHZlcmJvc2UgbGV2ZWwgPiAyJywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGV4ZWMoWyctLXZlcmJvc2UnLCAnMycsICd2ZXJzaW9uJ10pO1xuICAgIGV4cGVjdChzZXRJb01lc3NhZ2VUaHJlc2hvbGQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCd0cmFjZScpO1xuICB9KTtcbn0pO1xuIl19
package/test/init.test.js CHANGED
@@ -83,7 +83,7 @@ describe('constructs version', () => {
83
83
  const csproj = (await fs.readFile(csprojFile, 'utf8')).split(/\r?\n/);
84
84
  const sln = (await fs.readFile(slnFile, 'utf8')).split(/\r?\n/);
85
85
  expect(csproj).toContainEqual(expect.stringMatching(/\<PackageReference Include="Constructs" Version="\[10\..*,11\..*\)"/));
86
- expect(csproj).toContainEqual(expect.stringMatching(/\<TargetFramework>net6.0<\/TargetFramework>/));
86
+ expect(csproj).toContainEqual(expect.stringMatching(/\<TargetFramework>net8.0<\/TargetFramework>/));
87
87
  expect(sln).toContainEqual(expect.stringMatching(/\"AwsCdkTest[a-zA-Z0-9]{6}\\AwsCdkTest[a-zA-Z0-9]{6}.csproj\"/));
88
88
  });
89
89
  cliTest('create a .NET app project in fsharp', async (workDir) => {
@@ -101,7 +101,7 @@ describe('constructs version', () => {
101
101
  const fsproj = (await fs.readFile(fsprojFile, 'utf8')).split(/\r?\n/);
102
102
  const sln = (await fs.readFile(slnFile, 'utf8')).split(/\r?\n/);
103
103
  expect(fsproj).toContainEqual(expect.stringMatching(/\<PackageReference Include="Constructs" Version="\[10\..*,11\..*\)"/));
104
- expect(fsproj).toContainEqual(expect.stringMatching(/\<TargetFramework>net6.0<\/TargetFramework>/));
104
+ expect(fsproj).toContainEqual(expect.stringMatching(/\<TargetFramework>net8.0<\/TargetFramework>/));
105
105
  expect(sln).toContainEqual(expect.stringMatching(/\"AwsCdkTest[a-zA-Z0-9]{6}\\AwsCdkTest[a-zA-Z0-9]{6}.fsproj\"/));
106
106
  });
107
107
  cliTestWithDirSpaces('csharp app with spaces', async (workDir) => {
@@ -116,7 +116,7 @@ describe('constructs version', () => {
116
116
  expect(csprojFile).toBeDefined();
117
117
  const csproj = (await fs.readFile(csprojFile, 'utf8')).split(/\r?\n/);
118
118
  expect(csproj).toContainEqual(expect.stringMatching(/\<PackageReference Include="Constructs" Version="\[10\..*,11\..*\)"/));
119
- expect(csproj).toContainEqual(expect.stringMatching(/\<TargetFramework>net6.0<\/TargetFramework>/));
119
+ expect(csproj).toContainEqual(expect.stringMatching(/\<TargetFramework>net8.0<\/TargetFramework>/));
120
120
  });
121
121
  cliTestWithDirSpaces('fsharp app with spaces', async (workDir) => {
122
122
  await (0, init_1.cliInit)({
@@ -130,7 +130,7 @@ describe('constructs version', () => {
130
130
  expect(fsprojFile).toBeDefined();
131
131
  const fsproj = (await fs.readFile(fsprojFile, 'utf8')).split(/\r?\n/);
132
132
  expect(fsproj).toContainEqual(expect.stringMatching(/\<PackageReference Include="Constructs" Version="\[10\..*,11\..*\)"/));
133
- expect(fsproj).toContainEqual(expect.stringMatching(/\<TargetFramework>net6.0<\/TargetFramework>/));
133
+ expect(fsproj).toContainEqual(expect.stringMatching(/\<TargetFramework>net8.0<\/TargetFramework>/));
134
134
  });
135
135
  cliTest('create a Python app project', async (workDir) => {
136
136
  await (0, init_1.cliInit)({
@@ -298,4 +298,4 @@ async function withReplacedFile(fileName, contents, cb) {
298
298
  await fs.writeFile(fileName, oldContents);
299
299
  }
300
300
  }
301
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaW5pdC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3Qix5Q0FBeUM7QUFDekMsK0JBQStCO0FBQy9CLHNDQUFtSjtBQUVuSixRQUFRLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFO0lBQ2xDLE9BQU8sQ0FBQyxxQ0FBcUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDL0QsTUFBTSxJQUFBLGNBQU8sRUFBQztZQUNaLElBQUksRUFBRSxLQUFLO1lBQ1gsUUFBUSxFQUFFLFlBQVk7WUFDdEIsT0FBTztTQUNSLENBQUMsQ0FBQztRQUVILHdFQUF3RTtRQUN4RSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM3RSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0RSxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sQ0FBQyx5Q0FBeUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDbkUsTUFBTSxNQUFNLENBQUMsSUFBQSxjQUFPLEVBQUM7WUFDbkIsSUFBSSxFQUFFLFFBQVE7WUFDZCxRQUFRLEVBQUUsWUFBWTtZQUN0QixPQUFPO1NBQ1IsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQy9DLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxDQUFDLHlEQUF5RCxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUNuRixNQUFNLE1BQU0sQ0FBQyxJQUFB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LENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN2QyxJQUFJLENBQUM7UUFDSCxNQUFNLEVBQUUsRUFBRSxDQUFDO0lBQ2IsQ0FBQztZQUFTLENBQUM7UUFDVCxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGN4YXBpIGZyb20gJ0Bhd3MtY2RrL2N4LWFwaSc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgeyBhdmFpbGFibGVJbml0TGFuZ3VhZ2VzLCBhdmFpbGFibGVJbml0VGVtcGxhdGVzLCBjbGlJbml0LCBjdXJyZW50bHlSZWNvbW1lbmRlZEF3c0Nka0xpYkZsYWdzLCBwcmludEF2YWlsYWJsZVRlbXBsYXRlcyB9IGZyb20gJy4uL2xpYi9pbml0JztcblxuZGVzY3JpYmUoJ2NvbnN0cnVjdHMgdmVyc2lvbicsICgpID0+IHtcbiAgY2xpVGVzdCgnY3JlYXRlIGEgVHlwZVNjcmlwdCBsaWJyYXJ5IHByb2plY3QnLCBhc3luYyAod29ya0RpcikgPT4ge1xuICAgIGF3YWl0IGNsaUluaXQoe1xuICAgICAgdHlwZTogJ2xpYicsXG4gICAgICBsYW5ndWFnZTogJ3R5cGVzY3JpcHQnLFxuICAgICAgd29ya0RpcixcbiAgICB9KTtcblxuICAgIC8vIENoZWNrIHRoYXQgcGFja2FnZS5qc29uIGFuZCBsaWIvIGdvdCBjcmVhdGVkIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeVxuICAgIGV4cGVjdChhd2FpdCBmcy5wYXRoRXhpc3RzKHBhdGguam9pbih3b3JrRGlyLCAncGFja2FnZS5qc29uJykpKS50b0JlVHJ1dGh5KCk7XG4gICAgZXhwZWN0KGF3YWl0IGZzLnBhdGhFeGlzdHMocGF0aC5qb2luKHdvcmtEaXIsICdsaWInKSkpLnRvQmVUcnV0aHkoKTtcbiAgfSk7XG5cbiAgY2xpVGVzdCgnYXNraW5nIGZvciBhIG5vbmV4aXN0ZW50IHRlbXBsYXRlIGZhaWxzJywgYXN5bmMgKHdvcmtEaXIpID0+IHtcbiAgICBhd2FpdCBleHBlY3QoY2xpSW5pdCh7XG4gICAgICB0eXBlOiAnYmFuYW5hJyxcbiAgICAgIGxhbmd1YWdlOiAndHlwZXNjcmlwdCcsXG4gICAgICB3b3JrRGlyLFxuICAgIH0pKS5yZWplY3RzLnRvVGhyb3coL1Vua25vd24gaW5pdCB0ZW1wbGF0ZS8pO1xuICB9KTtcblxuICBjbGlUZXN0KCdhc2tpbmcgZm9yIGEgdGVtcGxhdGUgYnV0IG5vIGxhbmd1YWdlIHByaW50cyBhbmQgdGhyb3dzJywgYXN5bmMgKHdvcmtEaXIpID0+IHtcbiAgICBhd2FpdCBleHBlY3QoY2xpSW5pdCh7XG4gICAgICB0eXBlOiAnYXBwJyxcbiAgICAgIHdvcmtEaXIsXG4gICAgfSkpLnJlamVjdHMudG9UaHJvdygvTm8gbGFuZ3VhZ2UvKTtcbiAgfSk7XG5cbiAgY2xpVGVzdCgnY3JlYXRlIGEgVHlwZVNjcmlwdCBhcHAgcHJvamVjdCcsIGFzeW5jICh3b3JrRGlyKSA9PiB7XG4gICAgYXdhaXQgY2xpSW5pdCh7XG4gICAgICB0eXBlOiAnYXBwJyxcbiAgICAgIGxhbmd1YWdlOiAndHlwZXNjcmlwdCcsXG4gICAgICB3b3JrRGlyLFxuICAgIH0pO1xuXG4gICAgLy8gQ2hlY2sgdGhhdCBwYWNrYWdlLmpzb24gYW5kIGJpbi8gZ290IGNyZWF0ZWQgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5XG4gICAgZXhwZWN0KGF3YWl0IGZzLnBhdGhFeGlzdHMocGF0aC5qb2luKHdvcmtEaXIsICdwYWNrYWdlLmpzb24nKSkpLnRvQmVUcnV0aHkoKTtcbiAgICBleHBlY3QoYXdhaXQgZnMucGF0aEV4aXN0cyhwYXRoLmpvaW4od29ya0RpciwgJ2JpbicpKSkudG9CZVRydXRoeSgpO1xuICB9KTtcblxuICBjbGlUZXN0KCdjcmVhdGUgYSBKYXZhU2NyaXB0IGFwcCBwcm9qZWN0JywgYXN5bmMgKHdvcmtEaXIpID0+IHtcbiAgICBhd2FpdCBjbGlJbml0KHtcbiAgICAgIHR5cGU6ICdhcHAnLFxuICAgICAgbGFuZ3VhZ2U6ICdqYXZhc2NyaXB0JyxcbiAgICAgIHdvcmtEaXIsXG4gICAgfSk7XG5cbiAgICAvLyBDaGVjayB0aGF0IHBhY2thZ2UuanNvbiBhbmQgYmluLyBnb3QgY3JlYXRlZCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnlcbiAgICBleHBlY3QoYXdhaXQgZnMucGF0aEV4aXN0cyhwYXRoLmpvaW4od29ya0RpciwgJ3BhY2thZ2UuanNvbicpKSkudG9CZVRydXRoeSgpO1xuICAgIGV4cGVjdChhd2FpdCBmcy5wYXRoRXhpc3RzKHBhdGguam9pbih3b3JrRGlyLCAnYmluJykpKS50b0JlVHJ1dGh5KCk7XG4gICAgZXhwZWN0KGF3YWl0IGZzLnBhdGhFeGlzdHMocGF0aC5qb2luKHdvcmtEaXIsICcuZ2l0JykpKS50b0JlVHJ1dGh5KCk7XG4gIH0pO1xuXG4gIGNsaVRlc3QoJ2NyZWF0ZSBhIEphdmEgYXBwIHByb2plY3QnLCBhc3luYyAod29ya0RpcikgPT4ge1xuICAgIGF3YWl0IGNsaUluaXQoe1xuICAgICAgdHlwZTogJ2FwcCcsXG4gICAgICBsYW5ndWFnZTogJ2phdmEnLFxuICAgICAgY2FuVXNlTmV0d29yazogZmFsc2UsXG4gICAgICBnZW5lcmF0ZU9ubHk6IHRydWUsXG4gICAgICB3b3JrRGlyLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KGF3YWl0IGZzLnBhdGhFeGlzdHMocGF0aC5qb2luKHdvcmtEaXIsICdwb20ueG1sJykpKS50b0JlVHJ1dGh5KCk7XG5cbiAgICBjb25zdCBwb20gPSAoYXdhaXQgZnMucmVhZEZpbGUocGF0aC5qb2luKHdvcmtEaXIsICdwb20ueG1sJyksICd1dGY4JykpLnNwbGl0KC9cXHI/XFxuLyk7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHBvbS5tYXAobGluZSA9PiBsaW5lLm1hdGNoKC9cXDxjb25zdHJ1Y3RzXFwudmVyc2lvblxcPiguKilcXDxcXC9jb25zdHJ1Y3RzXFwudmVyc2lvblxcPi8pKVxuICAgICAgLmZpbHRlcihsID0+IGwpO1xuXG4gICAgZXhwZWN0KG1hdGNoZXMubGVuZ3RoKS50b0VxdWFsKDEpO1xuICAgIG1hdGNoZXMuZm9yRWFjaChtID0+IHtcbiAgICAgIGNvbnN0IHZlcnNpb24gPSBtICYmIG1bMV07XG4gICAgICBleHBlY3QodmVyc2lvbikudG9NYXRjaCgvXFxbMTBcXC5bXFxkXStcXC5bXFxkXSssMTFcXC4wXFwuMFxcKS8pO1xuICAgIH0pO1xuICB9KTtcblxuICBjbGlUZXN0KCdjcmVhdGUgYSAuTkVUIGFwcCBwcm9qZWN0IGluIGNzaGFycCcsIGFzeW5jICh3b3JrRGlyKSA9PiB7XG4gICAgYXdhaXQgY2xpSW5pdCh7XG4gICAgICB0eXBlOiAnYXBwJyxcbiAgICAgIGxhbmd1YWdlOiAnY3NoYXJwJyxcbiAgICAgIGNhblVzZU5ldHdvcms6IGZhbHNlLFxuICAgICAgZ2VuZXJhdGVPbmx5OiB0cnVlLFxuICAgICAgd29ya0RpcixcbiAgICB9KTtcblxuICAgIGNvbnN0IGNzcHJvakZpbGUgPSAoYXdhaXQgcmVjdXJzaXZlTGlzdEZpbGVzKHdvcmtEaXIpKS5maWx0ZXIoZiA9PiBmLmVuZHNXaXRoKCcuY3Nwcm9qJykpWzBdO1xuICAgIGNvbnN0IHNsbkZpbGUgPSAoYXdhaXQgcmVjdXJzaXZlTGlzdEZpbGVzKHdvcmtEaXIpKS5maWx0ZXIoZiA9PiBmLmVuZHNXaXRoKCcuc2xuJykpWzBdO1xuICAgIGV4cGVjdChjc3Byb2pGaWxlKS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChzbG5GaWxlKS50b0JlRGVmaW5lZCgpO1xuXG4gICAgY29uc3QgY3Nwcm9qID0gKGF3YWl0IGZzLnJlYWRGaWxlKGNzcHJvakZpbGUsICd1dGY4JykpLnNwbGl0KC9cXHI/XFxuLyk7XG4gICAgY29uc3Qgc2xuID0gKGF3YWl0IGZzLnJlYWRGaWxlKHNsbkZpbGUsICd1dGY4JykpLnNwbGl0KC9cXHI/XFxuLyk7XG5cbiAgICBleHBlY3QoY3Nwcm9qKS50b0NvbnRhaW5FcXVhbChleHBlY3Quc3RyaW5nTWF0Y2hpbmcoL1xcPFBhY2thZ2VSZWZlcmVuY2UgSW5jbHVkZT1cIkNvbnN0cnVjdHNcIiBWZXJzaW9uPVwiXFxbMTBcXC4uKiwxMVxcLi4qXFwpXCIvKSk7XG4gICAgZXhwZWN0KGNzcHJvaikudG9Db250YWluRXF1YWwoZXhwZWN0LnN0cmluZ01hdGNoaW5nKC9cXDxUYXJnZXRGcmFtZXdvcms+bmV0Ni4wPFxcL1RhcmdldEZyYW1ld29yaz4vKSk7XG4gICAgZXhwZWN0KHNsbikudG9Db250YWluRXF1YWwoZXhwZWN0LnN0cmluZ01hdGNoaW5nKC9cXFwiQXdzQ2RrVGVzdFthLXpBLVowLTldezZ9XFxcXEF3c0Nka1Rlc3RbYS16QS1aMC05XXs2fS5jc3Byb2pcXFwiLykpO1xuICB9KTtcblxuICBjbGlUZXN0KCdjcmVhdGUgYSAuTkVUIGFwcCBwcm9qZWN0IGluIGZzaGFycCcsIGFzeW5jICh3b3JrRGlyKSA9PiB7XG4gICAgYXdhaXQgY2xpSW5pdCh7XG4gICAgICB0eXBlOiAnYXBwJyxcbiAgICAgIGxhbmd1YWdlOiAnZnNoYXJwJyxcbiAgICAgIGNhblVzZU5ldHdvcms6IGZhbHNlLFxuICAgICAgZ2VuZXJhdGVPbmx5OiB0cnVlLFxuICAgICAgd29ya0RpcixcbiAgICB9KTtcblxuICAgIGNvbnN0IGZzcHJvakZpbGUgPSAoYXdhaXQgcmVjdXJzaXZlTGlzdEZpbGVzKHdvcmtEaXIpKS5maWx0ZXIoZiA9PiBmLmVuZHNXaXRoKCcuZnNwcm9qJykpWzBdO1xuICAgIGNvbnN0IHNsbkZpbGUgPSAoYXdhaXQgcmVjdXJzaXZlTGlzdEZpbGVzKHdvcmtEaXIpKS5maWx0ZXIoZiA9PiBmLmVuZHNXaXRoKCcuc2xuJykpWzBdO1xuICAgIGV4cGVjdChmc3Byb2pGaWxlKS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChzbG5GaWxlKS50b0JlRGVmaW5lZCgpO1xuXG4gICAgY29uc3QgZnNwcm9qID0gKGF3YWl0IGZzLnJlYWRGaWxlKGZzcHJvakZpbGUsICd1dGY4JykpLnNwbGl0KC9cXHI/XFxuLyk7XG4gICAgY29uc3Qgc2xuID0gKGF3YWl0IGZzLnJlYWRGaWxlKHNsbkZpbGUsICd1dGY4JykpLnNwbGl0KC9cXHI/XFxuLyk7XG5cbiAgICBleHBlY3QoZnNwcm9qKS50b0NvbnRhaW5FcXVhbChleHBlY3Quc3RyaW5nTWF0Y2hpbmcoL1xcPFBhY2thZ2VSZWZlcmVuY2UgSW5jbHVkZT1cIkNvbnN0cnVjdHNcIiBWZXJzaW9uPVwiXFxbMTBcXC4uKiwxMVxcLi4qXFwpXCIvKSk7XG4gICAgZXhwZWN0KGZzcHJvaikudG9Db250YWluRXF1YWwoZXhwZWN0LnN0cmluZ01hdGNoaW5nKC9cXDxUYXJnZXRGcmFtZXdvcms+bmV0Ni4wPFxcL1RhcmdldEZyYW1ld29yaz4vKSk7XG4gICAgZXhwZWN0KHNsbikudG9Db250YWluRXF1YWwoZXhwZWN0LnN0cmluZ01hdGNoaW5nKC9cXFwiQXdzQ2RrVGVzdFthLXpBLVowLTldezZ9XFxcXEF3c0Nka1Rlc3RbYS16QS1aMC05XXs2fS5mc3Byb2pcXFwiLykpO1xuICB9KTtcblxuICBjbGlUZXN0V2l0aERpclNwYWNlcygnY3NoYXJwIGFwcCB3aXRoIHNwYWNlcycsIGFzeW5jICh3b3JrRGlyKSA9PiB7XG4gICAgYXdhaXQgY2xpSW5pdCh7XG4gICAgICB0eXBlOiAnYXBwJyxcbiAgICAgIGxhbmd1YWdlOiAnY3NoYXJwJyxcbiAgICAgIGNhblVzZU5ldHdvcms6IGZhbHNlLFxuICAgICAgZ2VuZXJhdGVPbmx5OiB0cnVlLFxuICAgICAgd29ya0RpcixcbiAgICB9KTtcblxuICAgIGNvbnN0IGNzcHJvakZpbGUgPSAoYXdhaXQgcmVjdXJzaXZlTGlzdEZpbGVzKHdvcmtEaXIpKS5maWx0ZXIoZiA9PiBmLmVuZHNXaXRoKCcuY3Nwcm9qJykpWzBdO1xuICAgIGV4cGVjdChjc3Byb2pGaWxlKS50b0JlRGVmaW5lZCgpO1xuXG4gICAgY29uc3QgY3Nwcm9qID0gKGF3YWl0IGZzLnJlYWRGaWxlKGNzcHJvakZpbGUsICd1dGY4JykpLnNwbGl0KC9cXHI/XFxuLyk7XG5cbiAgICBleHBlY3QoY3Nwcm9qKS50b0NvbnRhaW5FcXVhbChleHBlY3Quc3RyaW5nTWF0Y2hpbmcoL1xcPFBhY2thZ2VSZWZlcmVuY2UgSW5jbHVkZT1cIkNvbnN0cnVjdHNcIiBWZXJzaW9uPVwiXFxbMTBcXC4uKiwxMVxcLi4qXFwpXCIvKSk7XG4gICAgZXhwZWN0KGNzcHJvaikudG9Db250YWluRXF1YWwoZXhwZWN0LnN0cmluZ01hdGNoaW5nKC9cXDxUYXJnZXRGcmFtZXdvcms+bmV0Ni4wPFxcL1RhcmdldEZyYW1ld29yaz4vKSk7XG4gIH0pO1xuXG4gIGNsaVRlc3RXaXRoRGlyU3BhY2VzKCdmc2hhcnAgYXBwIHdpdGggc3BhY2VzJywgYXN5bmMgKHdvcmtEaXIpID0+IHtcbiAgICBhd2FpdCBjbGlJbml0KHtcbiAgICAgIHR5cGU6ICdhcHAnLFxuICAgICAgbGFuZ3VhZ2U6ICdmc2hhcnAnLFxuICAgICAgY2FuVXNlTmV0d29yazogZmFsc2UsXG4gICAgICBnZW5lcmF0ZU9ubHk6IHRydWUsXG4gICAgICB3b3JrRGlyLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZnNwcm9qRmlsZSA9IChhd2FpdCByZWN1cnNpdmVMaXN0RmlsZXMod29ya0RpcikpLmZpbHRlcihmID0+IGYuZW5kc1dpdGgoJy5mc3Byb2onKSlbMF07XG4gICAgZXhwZWN0KGZzcHJvakZpbGUpLnRvQmVEZWZpbmVkKCk7XG5cbiAgICBjb25zdCBmc3Byb2ogPSAoYXdhaXQgZnMucmVhZEZpbGUoZnNwcm9qRmlsZSwgJ3V0ZjgnKSkuc3BsaXQoL1xccj9cXG4vKTtcblxuICAgIGV4cGVjdChmc3Byb2opLnRvQ29udGFpbkVxdWFsKGV4cGVjdC5zdHJpbmdNYXRjaGluZygvXFw8UGFja2FnZVJlZmVyZW5jZSBJbmNsdWRlPVwiQ29uc3RydWN0c1wiIFZlcnNpb249XCJcXFsxMFxcLi4qLDExXFwuLipcXClcIi8pKTtcbiAgICBleHBlY3QoZnNwcm9qKS50b0NvbnRhaW5FcXVhbChleHBlY3Quc3RyaW5nTWF0Y2hpbmcoL1xcPFRhcmdldEZyYW1ld29yaz5uZXQ2LjA8XFwvVGFyZ2V0RnJhbWV3b3JrPi8pKTtcbiAgfSk7XG5cbiAgY2xpVGVzdCgnY3JlYXRlIGEgUHl0aG9uIGFwcCBwcm9qZWN0JywgYXN5bmMgKHdvcmtEaXIpID0+IHtcbiAgICBhd2FpdCBjbGlJbml0KHtcbiAgICAgIHR5cGU6ICdhcHAnLFxuICAgICAgbGFuZ3VhZ2U6ICdweXRob24nLFxuICAgICAgY2FuVXNlTmV0d29yazogZmFsc2UsXG4gICAgICBnZW5lcmF0ZU9ubHk6IHRydWUsXG4gICAgICB3b3JrRGlyLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KGF3YWl0IGZzLnBhdGhFeGlzdHMocGF0aC5qb2luKHdvcmtEaXIsICdyZXF1aXJlbWVudHMudHh0JykpKS50b0JlVHJ1dGh5KCk7XG4gICAgY29uc3Qgc2V0dXBQeSA9IChhd2FpdCBmcy5yZWFkRmlsZShwYXRoLmpvaW4od29ya0RpciwgJ3JlcXVpcmVtZW50cy50eHQnKSwgJ3V0ZjgnKSkuc3BsaXQoL1xccj9cXG4vKTtcbiAgICAvLyByZXR1cm4gUmVnRXhwTWF0Y2hBcnJheSAocmVzdWx0IG9mIGxpbmUubWF0Y2goKSkgZm9yIGV2ZXJ5IGxpbmVzIHRoYXQgbWF0Y2ggcmUuXG4gICAgY29uc3QgbWF0Y2hlcyA9IHNldHVwUHkubWFwKGxpbmUgPT4gbGluZS5tYXRjaCgvXmNvbnN0cnVjdHMoLiopLykpXG4gICAgICAuZmlsdGVyKGwgPT4gbCk7XG5cbiAgICBleHBlY3QobWF0Y2hlcy5sZW5ndGgpLnRvRXF1YWwoMSk7XG4gICAgbWF0Y2hlcy5mb3JFYWNoKG0gPT4ge1xuICAgICAgY29uc3QgdmVyc2lvbiA9IG0gJiYgbVsxXTtcbiAgICAgIGV4cGVjdCh2ZXJzaW9uKS50b01hdGNoKC8+PTEwXFwuXFxkK1xcLlxcZCw8MTFcXC4wXFwuMC8pO1xuICAgIH0pO1xuICB9KTtcblxuICBjbGlUZXN0KCctLWdlbmVyYXRlLW9ubHkgc2hvdWxkIHNraXAgZ2l0IGluaXQnLCBhc3luYyAod29ya0RpcikgPT4ge1xuICAgIGF3YWl0IGNsaUluaXQoe1xuICAgICAgdHlwZTogJ2FwcCcsXG4gICAgICBsYW5ndWFnZTogJ2phdmFzY3JpcHQnLFxuICAgICAgY2FuVXNlTmV0d29yazogZmFsc2UsXG4gICAgICBnZW5lcmF0ZU9ubHk6IHRydWUsXG4gICAgICB3b3JrRGlyLFxuICAgIH0pO1xuXG4gICAgLy8gQ2hlY2sgdGhhdCBwYWNrYWdlLmpzb24gYW5kIGJpbi8gZ290IGNyZWF0ZWQgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5XG4gICAgZXhwZWN0KGF3YWl0IGZzLnBhdGhFeGlzdHMocGF0aC5qb2luKHdvcmtEaXIsICdwYWNrYWdlLmpzb24nKSkpLnRvQmVUcnV0aHkoKTtcbiAgICBleHBlY3QoYXdhaXQgZnMucGF0aEV4aXN0cyhwYXRoLmpvaW4od29ya0RpciwgJ2JpbicpKSkudG9CZVRydXRoeSgpO1xuICAgIGV4cGVjdChhd2FpdCBmcy5wYXRoRXhpc3RzKHBhdGguam9pbih3b3JrRGlyLCAnLmdpdCcpKSkudG9CZUZhbHN5KCk7XG4gIH0pO1xuXG4gIGNsaVRlc3QoJ2dpdCBkaXJlY3RvcnkgZG9lcyBub3QgdGhyb3cgb2ZmIHRoZSBpbml0ZXIhJywgYXN5bmMgKHdvcmtEaXIpID0+IHtcbiAgICBmcy5ta2RpclN5bmMocGF0aC5qb2luKHdvcmtEaXIsICcuZ2l0JykpO1xuXG4gICAgYXdhaXQgY2xpSW5pdCh7XG4gICAgICB0eXBlOiAnYXBwJyxcbiAgICAgIGxhbmd1YWdlOiAndHlwZXNjcmlwdCcsXG4gICAgICBjYW5Vc2VOZXR3b3JrOiBmYWxzZSxcbiAgICAgIHdvcmtEaXIsXG4gICAgfSk7XG5cbiAgICAvLyBDaGVjayB0aGF0IHBhY2thZ2UuanNvbiBhbmQgYmluLyBnb3QgY3JlYXRlZCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnlcbiAgICBleHBlY3QoYXdhaXQgZnMucGF0aEV4aXN0cyhwYXRoLmpvaW4od29ya0RpciwgJ3BhY2thZ2UuanNvbicpKSkudG9CZVRydXRoeSgpO1xuICAgIGV4cGVjdChhd2FpdCBmcy5wYXRoRXhpc3RzKHBhdGguam9pbih3b3JrRGlyLCAnYmluJykpKS50b0JlVHJ1dGh5KCk7XG4gIH0pO1xuXG4gIGNsaVRlc3QoJ0NMSSB1c2VzIHJlY29tbWVuZGVkIGZlYXR1cmUgZmxhZ3MgZnJvbSBkYXRhIGZpbGUgdG8gaW5pdGlhbGl6ZSBjb250ZXh0JywgYXN5bmMgKHdvcmtEaXIpID0+IHtcbiAgICBjb25zdCByZWNvbW1lbmRlZEZsYWdzRmlsZSA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICdsaWInLCAnaW5pdC10ZW1wbGF0ZXMnLCAnLnJlY29tbWVuZGVkLWZlYXR1cmUtZmxhZ3MuanNvbicpO1xuICAgIGF3YWl0IHdpdGhSZXBsYWNlZEZpbGUocmVjb21tZW5kZWRGbGFnc0ZpbGUsIEpTT04uc3RyaW5naWZ5KHsgYmFuYW5hOiAneWVsbG93JyB9KSwgKCkgPT4gY2xpSW5pdCh7XG4gICAgICB0eXBlOiAnYXBwJyxcbiAgICAgIGxhbmd1YWdlOiAndHlwZXNjcmlwdCcsXG4gICAgICBjYW5Vc2VOZXR3b3JrOiBmYWxzZSxcbiAgICAgIGdlbmVyYXRlT25seTogdHJ1ZSxcbiAgICAgIHdvcmtEaXIsXG4gICAgfSkpO1xuXG4gICAgY29uc3QgY2RrRmlsZSA9IGF3YWl0IGZzLnJlYWRKc29uKHBhdGguam9pbih3b3JrRGlyLCAnY2RrLmpzb24nKSk7XG4gICAgZXhwZWN0KGNka0ZpbGUuY29udGV4dCkudG9FcXVhbCh7IGJhbmFuYTogJ3llbGxvdycgfSk7XG4gIH0pO1xuXG4gIGNsaVRlc3QoJ0NMSSB1c2VzIGluaXQgdmVyc2lvbnMgZmlsZSB0byBpbml0aWFsaXplIHRlbXBsYXRlJywgYXN5bmMgKHdvcmtEaXIpID0+IHtcbiAgICBjb25zdCByZWNvbW1lbmRlZEZsYWdzRmlsZSA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICdsaWInLCAnaW5pdC10ZW1wbGF0ZXMnLCAnLmluaXQtdmVyc2lvbi5qc29uJyk7XG4gICAgYXdhaXQgd2l0aFJlcGxhY2VkRmlsZShyZWNvbW1lbmRlZEZsYWdzRmlsZSwgSlNPTi5zdHJpbmdpZnkoeyAnYXdzLWNkay1saWInOiAnMTAwLjEuMScsICdjb25zdHJ1Y3RzJzogJ14yMDAuMi4yJyB9KSwgKCkgPT4gY2xpSW5pdCh7XG4gICAgICB0eXBlOiAnYXBwJyxcbiAgICAgIGxhbmd1YWdlOiAndHlwZXNjcmlwdCcsXG4gICAgICBjYW5Vc2VOZXR3b3JrOiBmYWxzZSxcbiAgICAgIGdlbmVyYXRlT25seTogdHJ1ZSxcbiAgICAgIHdvcmtEaXIsXG4gICAgfSkpO1xuXG4gICAgY29uc3QgcGFja2FnZUpzb24gPSBhd2FpdCBmcy5yZWFkSnNvbihwYXRoLmpvaW4od29ya0RpciwgJ3BhY2thZ2UuanNvbicpKTtcbiAgICBleHBlY3QocGFja2FnZUpzb24uZGVwZW5kZW5jaWVzWydhd3MtY2RrLWxpYiddKS50b0VxdWFsKCcxMDAuMS4xJyk7XG4gICAgZXhwZWN0KHBhY2thZ2VKc29uLmRlcGVuZGVuY2llcy5jb25zdHJ1Y3RzKS50b0VxdWFsKCdeMjAwLjIuMicpO1xuICB9KTtcblxuICB0ZXN0KCd2ZXJpZnkgXCJmdXR1cmUgZmxhZ3NcIiBhcmUgYWRkZWQgdG8gY2RrLmpzb24nLCBhc3luYyAoKSA9PiB7XG4gICAgZm9yIChjb25zdCB0ZW1wbCBvZiBhd2FpdCBhdmFpbGFibGVJbml0VGVtcGxhdGVzKCkpIHtcbiAgICAgIGZvciAoY29uc3QgbGFuZyBvZiB0ZW1wbC5sYW5ndWFnZXMpIHtcbiAgICAgICAgYXdhaXQgd2l0aFRlbXBEaXIoYXN5bmMgdG1wRGlyID0+IHtcbiAgICAgICAgICBhd2FpdCBjbGlJbml0KHtcbiAgICAgICAgICAgIHR5cGU6IHRlbXBsLm5hbWUsXG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZyxcbiAgICAgICAgICAgIGNhblVzZU5ldHdvcms6IGZhbHNlLFxuICAgICAgICAgICAgZ2VuZXJhdGVPbmx5OiB0cnVlLFxuICAgICAgICAgICAgd29ya0RpcjogdG1wRGlyLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgLy8gb2sgaWYgdGVtcGxhdGUgZG9lc24ndCBoYXZlIGEgY2RrLmpzb24gZmlsZSAoZS5nLiB0aGUgXCJsaWJcIiB0ZW1wbGF0ZSlcbiAgICAgICAgICBpZiAoIWF3YWl0IGZzLnBhdGhFeGlzdHMocGF0aC5qb2luKHRtcERpciwgJ2Nkay5qc29uJykpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgY29uZmlnID0gYXdhaXQgZnMucmVhZEpzb24ocGF0aC5qb2luKHRtcERpciwgJ2Nkay5qc29uJykpO1xuICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBjb25maWcuY29udGV4dCB8fCB7fTtcbiAgICAgICAgICBjb25zdCByZWNvbW1lbmRlZEZsYWdzID0gYXdhaXQgY3VycmVudGx5UmVjb21tZW5kZWRBd3NDZGtMaWJGbGFncygpO1xuICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgYWN0dWFsXSBvZiBPYmplY3QuZW50cmllcyhjb250ZXh0KSkge1xuICAgICAgICAgICAgZXhwZWN0KGtleSBpbiByZWNvbW1lbmRlZEZsYWdzKS50b0JlVHJ1dGh5KCk7XG4gICAgICAgICAgICBleHBlY3QocmVjb21tZW5kZWRGbGFnc1trZXldKS50b0VxdWFsKGFjdHVhbCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gYXNzZXJ0IHRoYXQgZXhwaXJlZCBmdXR1cmUgZmxhZ3MgYXJlIG5vdCBwYXJ0IG9mIHRoZSBjZGsuanNvblxuICAgICAgICAgIE9iamVjdC5rZXlzKGNvbnRleHQpLmZvckVhY2goayA9PiB7XG4gICAgICAgICAgICBleHBlY3QoY3hhcGkuQ1VSUkVOVF9WRVJTSU9OX0VYUElSRURfRkxBR1MuaW5jbHVkZXMoaykpLnRvRXF1YWwoZmFsc2UpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIC8vIFRoaXMgaXMgYSBsb3QgdG8gdGVzdCwgYW5kIGl0IGNhbiBiZSBzbG93LWlzaCwgZXNwZWNpYWxseSB3aGVuIHJhbiB3aXRoIG90aGVyIHRlc3RzLlxuICAzMF8wMDApO1xufSk7XG5cbnRlc3QoJ3doZW4gbm8gdmVyc2lvbiBudW1iZXIgaXMgcHJlc2VudCAoZS5nLiwgbG9jYWwgZGV2ZWxvcG1lbnQpLCB0aGUgdjIgdGVtcGxhdGVzIGFyZSBjaG9zZW4gYnkgZGVmYXVsdCcsIGFzeW5jICgpID0+IHtcbiAgZXhwZWN0KChhd2FpdCBhdmFpbGFibGVJbml0VGVtcGxhdGVzKCkpLmxlbmd0aCkudG9CZUdyZWF0ZXJUaGFuKDApO1xufSk7XG5cbnRlc3QoJ2NoZWNrIGF2YWlsYWJsZSBpbml0IGxhbmd1YWdlcycsIGFzeW5jICgpID0+IHtcbiAgY29uc3QgbGFuZ3MgPSBhd2FpdCBhdmFpbGFibGVJbml0TGFuZ3VhZ2VzKCk7XG4gIGV4cGVjdChsYW5ncy5sZW5ndGgpLnRvQmVHcmVhdGVyVGhhbigwKTtcbiAgZXhwZWN0KGxhbmdzKS50b0NvbnRhaW4oJ3R5cGVzY3JpcHQnKTtcbn0pO1xuXG50ZXN0KCdleGVyY2lzZSBwcmludGluZyBhdmFpbGFibGUgdGVtcGxhdGVzJywgYXN5bmMgKCkgPT4ge1xuICBhd2FpdCBwcmludEF2YWlsYWJsZVRlbXBsYXRlcygpO1xufSk7XG5cbmZ1bmN0aW9uIGNsaVRlc3QobmFtZTogc3RyaW5nLCBoYW5kbGVyOiAoZGlyOiBzdHJpbmcpID0+IHZvaWQgfCBQcm9taXNlPGFueT4pOiB2b2lkIHtcbiAgdGVzdChuYW1lLCAoKSA9PiB3aXRoVGVtcERpcihoYW5kbGVyKSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdpdGhUZW1wRGlyKGNiOiAoZGlyOiBzdHJpbmcpID0+IHZvaWQgfCBQcm9taXNlPGFueT4pIHtcbiAgY29uc3QgdG1wRGlyID0gYXdhaXQgZnMubWtkdGVtcChwYXRoLmpvaW4ob3MudG1wZGlyKCksICdhd3MtY2RrLXRlc3QnKSk7XG4gIHRyeSB7XG4gICAgYXdhaXQgY2IodG1wRGlyKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBmcy5yZW1vdmUodG1wRGlyKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjbGlUZXN0V2l0aERpclNwYWNlcyhuYW1lOiBzdHJpbmcsIGhhbmRsZXI6IChkaXI6IHN0cmluZykgPT4gdm9pZCB8IFByb21pc2U8YW55Pik6IHZvaWQge1xuICB0ZXN0KG5hbWUsICgpID0+IHdpdGhUZW1wRGlyV2l0aFNwYWNlcyhoYW5kbGVyKSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdpdGhUZW1wRGlyV2l0aFNwYWNlcyhjYjogKGRpcjogc3RyaW5nKSA9PiB2b2lkIHwgUHJvbWlzZTxhbnk+KSB7XG4gIGNvbnN0IHRtcERpciA9IGF3YWl0IGZzLm1rZHRlbXAocGF0aC5qb2luKG9zLnRtcGRpcigpLCAnYXdzLWNkay10ZXN0IHdpdGgtc3BhY2UnKSk7XG4gIHRyeSB7XG4gICAgYXdhaXQgY2IodG1wRGlyKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBmcy5yZW1vdmUodG1wRGlyKTtcbiAgfVxufVxuXG4vKipcbiAqIExpc3QgYWxsIGZpbGVzIHVuZGVybmVhdGggZGlyXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlY3Vyc2l2ZUxpc3RGaWxlcyhyZGlyOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gIGNvbnN0IHJldCA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gIGF3YWl0IHJlY3Vyc2UocmRpcik7XG4gIHJldHVybiByZXQ7XG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVjdXJzZShkaXI6IHN0cmluZykge1xuICAgIGZvciAoY29uc3QgbmFtZSBvZiBhd2FpdCBmcy5yZWFkZGlyKGRpcikpIHtcbiAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5qb2luKGRpciwgbmFtZSk7XG4gICAgICBpZiAoKGF3YWl0IGZzLnN0YXQoZnVsbFBhdGgpKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgIGF3YWl0IHJlY3Vyc2UoZnVsbFBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0LnB1c2goZnVsbFBhdGgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiB3aXRoUmVwbGFjZWRGaWxlKGZpbGVOYW1lOiBzdHJpbmcsIGNvbnRlbnRzOiBhbnksIGNiOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IG9sZENvbnRlbnRzID0gYXdhaXQgZnMucmVhZEZpbGUoZmlsZU5hbWUsICd1dGY4Jyk7XG4gIGF3YWl0IGZzLndyaXRlRmlsZShmaWxlTmFtZSwgY29udGVudHMpO1xuICB0cnkge1xuICAgIGF3YWl0IGNiKCk7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKGZpbGVOYW1lLCBvbGRDb250ZW50cyk7XG4gIH1cbn1cbiJdfQ==
301
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaW5pdC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3Qix5Q0FBeUM7QUFDekMsK0JBQStCO0FBQy9CLHNDQUFtSjtBQUVuSixRQUFRLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFO0lBQ2xDLE9BQU8sQ0FBQyxxQ0FBcUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDL0QsTUFBTSxJQUFBLGNBQU8sRUFBQztZQUNaLElBQUksRUFBRSxLQUFLO1lBQ1gsUUFBUSxFQUFFLFlBQVk7WUFDdEIsT0FBTztTQUNSLENBQUMsQ0FBQztRQUVILHdFQUF3RTtRQUN4RSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM3RSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0RSxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sQ0FBQyx5Q0FBeUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDbkUsTUFBTSxNQUFNLENBQUMsSUFBQSxjQUFPLEVBQUM7WUFDbkIsSUFBSSxFQUFFLFFBQVE7WUFDZCxRQUFRLEVBQUUsWUFBWTtZQUN0QixPQUFPO1NBQ1IsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQy9DLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxDQUFDLHlEQUF5RCxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUNuRixNQUFNLE1BQU0sQ0FBQyxJQUFB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LENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN2QyxJQUFJLENBQUM7UUFDSCxNQUFNLEVBQUUsRUFBRSxDQUFDO0lBQ2IsQ0FBQztZQUFTLENBQUM7UUFDVCxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGN4YXBpIGZyb20gJ0Bhd3MtY2RrL2N4LWFwaSc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgeyBhdmFpbGFibGVJbml0TGFuZ3VhZ2VzLCBhdmFpbGFibGVJbml0VGVtcGxhdGVzLCBjbGlJbml0LCBjdXJyZW50bHlSZWNvbW1lbmRlZEF3c0Nka0xpYkZsYWdzLCBwcmludEF2YWlsYWJsZVRlbXBsYXRlcyB9IGZyb20gJy4uL2xpYi9pbml0JztcblxuZGVzY3JpYmUoJ2NvbnN0cnVjdHMgdmVyc2lvbicsICgpID0+IHtcbiAgY2xpVGVzdCgnY3JlYXRlIGEgVHlwZVNjcmlwdCBsaWJyYXJ5IHByb2plY3QnLCBhc3luYyAod29ya0RpcikgPT4ge1xuICAgIGF3YWl0IGNsaUluaXQoe1xuICAgICAgdHlwZTogJ2xpYicsXG4gICAgICBsYW5ndWFnZTogJ3R5cGVzY3JpcHQnLFxuICAgICAgd29ya0RpcixcbiAgICB9KTtcblxuICAgIC8vIENoZWNrIHRoYXQgcGFja2FnZS5qc29uIGFuZCBsaWIvIGdvdCBjcmVhdGVkIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeVxuICAgIGV4cGVjdChhd2FpdCBmcy5wYXRoRXhpc3RzKHBhdGguam9pbih3b3JrRGlyLCAncGFja2FnZS5qc29uJykpKS50b0JlVHJ1dGh5KCk7XG4gICAgZXhwZWN0KGF3YWl0IGZzLnBhdGhFeGlzdHMocGF0aC5qb2luKHdvcmtEaXIsICdsaWInKSkpLnRvQmVUcnV0aHkoKTtcbiAgfSk7XG5cbiAgY2xpVGVzdCgnYXNraW5nIGZvciBhIG5vbmV4aXN0ZW50IHRlbXBsYXRlIGZhaWxzJywgYXN5bmMgKHdvcmtEaXIpID0+IHtcbiAgICBhd2FpdCBleHBlY3QoY2xpSW5pdCh7XG4gICAgICB0eXBlOiAnYmFuYW5hJyxcbiAgICAgIGxhbmd1YWdlOiAndHlwZXNjcmlwdCcsXG4gICAgICB3b3JrRGlyLFxuICAgIH0pKS5yZWplY3RzLnRvVGhyb3coL1Vua25vd24gaW5pdCB0ZW1wbGF0ZS8pO1xuICB9KTtcblxuICBjbGlUZXN0KCdhc2tpbmcgZm9yIGEgdGVtcGxhdGUgYnV0IG5vIGxhbmd1YWdlIHByaW50cyBhbmQgdGhyb3dzJywgYXN5bmMgKHdvcmtEaXIpID0+IHtcbiAgICBhd2FpdCBleHBlY3QoY2xpSW5pdCh7XG4gICAgICB0eXBlOiAnYXBwJyxcbiAgICAgIHdvcmtEaXIsXG4gICAgfSkpLnJlamVjdHMudG9UaHJvdygvTm8gbGFuZ3VhZ2UvKTtcbiAgfSk7XG5cbiAgY2xpVGVzdCgnY3JlYXRlIGEgVHlwZVNjcmlwdCBhcHAgcHJvamVjdCcsIGFzeW5jICh3b3JrRGlyKSA9PiB7XG4gICAgYXdhaXQgY2xpSW5pdCh7XG4gICAgICB0eXBlOiAnYXBwJyxcbiAgICAgIGxhbmd1YWdlOiAndHlwZXNjcmlwdCcsXG4gICAgICB3b3JrRGlyLFxuICAgIH0pO1xuXG4gICAgLy8gQ2hlY2sgdGhhdCBwYWNrYWdlLmpzb24gYW5kIGJpbi8gZ290IGNyZWF0ZWQgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5XG4gICAgZXhwZWN0KGF3YWl0IGZzLnBhdGhFeGlzdHMocGF0aC5qb2luKHdvcmtEaXIsICdwYWNrYWdlLmpzb24nKSkpLnRvQmVUcnV0aHkoKTtcbiAgICBleHBlY3QoYXdhaXQgZnMucGF0aEV4aXN0cyhwYXRoLmpvaW4od29ya0RpciwgJ2JpbicpKSkudG9CZVRydXRoeSgpO1xuICB9KTtcblxuICBjbGlUZXN0KCdjcmVhdGUgYSBKYXZhU2NyaXB0IGFwcCBwcm9qZWN0JywgYXN5bmMgKHdvcmtEaXIpID0+IHtcbiAgICBhd2FpdCBjbGlJbml0KHtcbiAgICAgIHR5cGU6ICdhcHAnLFxuICAgICAgbGFuZ3VhZ2U6ICdqYXZhc2NyaXB0JyxcbiAgICAgIHdvcmtEaXIsXG4gICAgfSk7XG5cbiAgICAvLyBDaGVjayB0aGF0IHBhY2thZ2UuanNvbiBhbmQgYmluLyBnb3QgY3JlYXRlZCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnlcbiAgICBleHBlY3QoYXdhaXQgZnMucGF0aEV4aXN0cyhwYXRoLmpvaW4od29ya0RpciwgJ3BhY2thZ2UuanNvbicpKSkudG9CZVRydXRoeSgpO1xuICAgIGV4cGVjdChhd2FpdCBmcy5wYXRoRXhpc3RzKHBhdGguam9pbih3b3JrRGlyLCAnYmluJykpKS50b0JlVHJ1dGh5KCk7XG4gICAgZXhwZWN0KGF3YWl0IGZzLnBhdGhFeGlzdHMocGF0aC5qb2luKHdvcmtEaXIsICcuZ2l0JykpKS50b0JlVHJ1dGh5KCk7XG4gIH0pO1xuXG4gIGNsaVRlc3QoJ2NyZWF0ZSBhIEphdmEgYXBwIHByb2plY3QnLCBhc3luYyAod29ya0RpcikgPT4ge1xuICAgIGF3YWl0IGNsaUluaXQoe1xuICAgICAgdHlwZTogJ2FwcCcsXG4gICAgICBsYW5ndWFnZTogJ2phdmEnLFxuICAgICAgY2FuVXNlTmV0d29yazogZmFsc2UsXG4gICAgICBnZW5lcmF0ZU9ubHk6IHRydWUsXG4gICAgICB3b3JrRGlyLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KGF3YWl0IGZzLnBhdGhFeGlzdHMocGF0aC5qb2luKHdvcmtEaXIsICdwb20ueG1sJykpKS50b0JlVHJ1dGh5KCk7XG5cbiAgICBjb25zdCBwb20gPSAoYXdhaXQgZnMucmVhZEZpbGUocGF0aC5qb2luKHdvcmtEaXIsICdwb20ueG1sJyksICd1dGY4JykpLnNwbGl0KC9cXHI/XFxuLyk7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHBvbS5tYXAobGluZSA9PiBsaW5lLm1hdGNoKC9cXDxjb25zdHJ1Y3RzXFwudmVyc2lvblxcPiguKilcXDxcXC9jb25zdHJ1Y3RzXFwudmVyc2lvblxcPi8pKVxuICAgICAgLmZpbHRlcihsID0+IGwpO1xuXG4gICAgZXhwZWN0KG1hdGNoZXMubGVuZ3RoKS50b0VxdWFsKDEpO1xuICAgIG1hdGNoZXMuZm9yRWFjaChtID0+IHtcbiAgICAgIGNvbnN0IHZlcnNpb24gPSBtICYmIG1bMV07XG4gICAgICBleHBlY3QodmVyc2lvbikudG9NYXRjaCgvXFxbMTBcXC5bXFxkXStcXC5bXFxkXSssMTFcXC4wXFwuMFxcKS8pO1xuICAgIH0pO1xuICB9KTtcblxuICBjbGlUZXN0KCdjcmVhdGUgYSAuTkVUIGFwcCBwcm9qZWN0IGluIGNzaGFycCcsIGFzeW5jICh3b3JrRGlyKSA9PiB7XG4gICAgYXdhaXQgY2xpSW5pdCh7XG4gICAgICB0eXBlOiAnYXBwJyxcbiAgICAgIGxhbmd1YWdlOiAnY3NoYXJwJyxcbiAgICAgIGNhblVzZU5ldHdvcms6IGZhbHNlLFxuICAgICAgZ2VuZXJhdGVPbmx5OiB0cnVlLFxuICAgICAgd29ya0RpcixcbiAgICB9KTtcblxuICAgIGNvbnN0IGNzcHJvakZpbGUgPSAoYXdhaXQgcmVjdXJzaXZlTGlzdEZpbGVzKHdvcmtEaXIpKS5maWx0ZXIoZiA9PiBmLmVuZHNXaXRoKCcuY3Nwcm9qJykpWzBdO1xuICAgIGNvbnN0IHNsbkZpbGUgPSAoYXdhaXQgcmVjdXJzaXZlTGlzdEZpbGVzKHdvcmtEaXIpKS5maWx0ZXIoZiA9PiBmLmVuZHNXaXRoKCcuc2xuJykpWzBdO1xuICAgIGV4cGVjdChjc3Byb2pGaWxlKS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChzbG5GaWxlKS50b0JlRGVmaW5lZCgpO1xuXG4gICAgY29uc3QgY3Nwcm9qID0gKGF3YWl0IGZzLnJlYWRGaWxlKGNzcHJvakZpbGUsICd1dGY4JykpLnNwbGl0KC9cXHI/XFxuLyk7XG4gICAgY29uc3Qgc2xuID0gKGF3YWl0IGZzLnJlYWRGaWxlKHNsbkZpbGUsICd1dGY4JykpLnNwbGl0KC9cXHI/XFxuLyk7XG5cbiAgICBleHBlY3QoY3Nwcm9qKS50b0NvbnRhaW5FcXVhbChleHBlY3Quc3RyaW5nTWF0Y2hpbmcoL1xcPFBhY2thZ2VSZWZlcmVuY2UgSW5jbHVkZT1cIkNvbnN0cnVjdHNcIiBWZXJzaW9uPVwiXFxbMTBcXC4uKiwxMVxcLi4qXFwpXCIvKSk7XG4gICAgZXhwZWN0KGNzcHJvaikudG9Db250YWluRXF1YWwoZXhwZWN0LnN0cmluZ01hdGNoaW5nKC9cXDxUYXJnZXRGcmFtZXdvcms+bmV0OC4wPFxcL1RhcmdldEZyYW1ld29yaz4vKSk7XG4gICAgZXhwZWN0KHNsbikudG9Db250YWluRXF1YWwoZXhwZWN0LnN0cmluZ01hdGNoaW5nKC9cXFwiQXdzQ2RrVGVzdFthLXpBLVowLTldezZ9XFxcXEF3c0Nka1Rlc3RbYS16QS1aMC05XXs2fS5jc3Byb2pcXFwiLykpO1xuICB9KTtcblxuICBjbGlUZXN0KCdjcmVhdGUgYSAuTkVUIGFwcCBwcm9qZWN0IGluIGZzaGFycCcsIGFzeW5jICh3b3JrRGlyKSA9PiB7XG4gICAgYXdhaXQgY2xpSW5pdCh7XG4gICAgICB0eXBlOiAnYXBwJyxcbiAgICAgIGxhbmd1YWdlOiAnZnNoYXJwJyxcbiAgICAgIGNhblVzZU5ldHdvcms6IGZhbHNlLFxuICAgICAgZ2VuZXJhdGVPbmx5OiB0cnVlLFxuICAgICAgd29ya0RpcixcbiAgICB9KTtcblxuICAgIGNvbnN0IGZzcHJvakZpbGUgPSAoYXdhaXQgcmVjdXJzaXZlTGlzdEZpbGVzKHdvcmtEaXIpKS5maWx0ZXIoZiA9PiBmLmVuZHNXaXRoKCcuZnNwcm9qJykpWzBdO1xuICAgIGNvbnN0IHNsbkZpbGUgPSAoYXdhaXQgcmVjdXJzaXZlTGlzdEZpbGVzKHdvcmtEaXIpKS5maWx0ZXIoZiA9PiBmLmVuZHNXaXRoKCcuc2xuJykpWzBdO1xuICAgIGV4cGVjdChmc3Byb2pGaWxlKS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChzbG5GaWxlKS50b0JlRGVmaW5lZCgpO1xuXG4gICAgY29uc3QgZnNwcm9qID0gKGF3YWl0IGZzLnJlYWRGaWxlKGZzcHJvakZpbGUsICd1dGY4JykpLnNwbGl0KC9cXHI/XFxuLyk7XG4gICAgY29uc3Qgc2xuID0gKGF3YWl0IGZzLnJlYWRGaWxlKHNsbkZpbGUsICd1dGY4JykpLnNwbGl0KC9cXHI/XFxuLyk7XG5cbiAgICBleHBlY3QoZnNwcm9qKS50b0NvbnRhaW5FcXVhbChleHBlY3Quc3RyaW5nTWF0Y2hpbmcoL1xcPFBhY2thZ2VSZWZlcmVuY2UgSW5jbHVkZT1cIkNvbnN0cnVjdHNcIiBWZXJzaW9uPVwiXFxbMTBcXC4uKiwxMVxcLi4qXFwpXCIvKSk7XG4gICAgZXhwZWN0KGZzcHJvaikudG9Db250YWluRXF1YWwoZXhwZWN0LnN0cmluZ01hdGNoaW5nKC9cXDxUYXJnZXRGcmFtZXdvcms+bmV0OC4wPFxcL1RhcmdldEZyYW1ld29yaz4vKSk7XG4gICAgZXhwZWN0KHNsbikudG9Db250YWluRXF1YWwoZXhwZWN0LnN0cmluZ01hdGNoaW5nKC9cXFwiQXdzQ2RrVGVzdFthLXpBLVowLTldezZ9XFxcXEF3c0Nka1Rlc3RbYS16QS1aMC05XXs2fS5mc3Byb2pcXFwiLykpO1xuICB9KTtcblxuICBjbGlUZXN0V2l0aERpclNwYWNlcygnY3NoYXJwIGFwcCB3aXRoIHNwYWNlcycsIGFzeW5jICh3b3JrRGlyKSA9PiB7XG4gICAgYXdhaXQgY2xpSW5pdCh7XG4gICAgICB0eXBlOiAnYXBwJyxcbiAgICAgIGxhbmd1YWdlOiAnY3NoYXJwJyxcbiAgICAgIGNhblVzZU5ldHdvcms6IGZhbHNlLFxuICAgICAgZ2VuZXJhdGVPbmx5OiB0cnVlLFxuICAgICAgd29ya0RpcixcbiAgICB9KTtcblxuICAgIGNvbnN0IGNzcHJvakZpbGUgPSAoYXdhaXQgcmVjdXJzaXZlTGlzdEZpbGVzKHdvcmtEaXIpKS5maWx0ZXIoZiA9PiBmLmVuZHNXaXRoKCcuY3Nwcm9qJykpWzBdO1xuICAgIGV4cGVjdChjc3Byb2pGaWxlKS50b0JlRGVmaW5lZCgpO1xuXG4gICAgY29uc3QgY3Nwcm9qID0gKGF3YWl0IGZzLnJlYWRGaWxlKGNzcHJvakZpbGUsICd1dGY4JykpLnNwbGl0KC9cXHI/XFxuLyk7XG5cbiAgICBleHBlY3QoY3Nwcm9qKS50b0NvbnRhaW5FcXVhbChleHBlY3Quc3RyaW5nTWF0Y2hpbmcoL1xcPFBhY2thZ2VSZWZlcmVuY2UgSW5jbHVkZT1cIkNvbnN0cnVjdHNcIiBWZXJzaW9uPVwiXFxbMTBcXC4uKiwxMVxcLi4qXFwpXCIvKSk7XG4gICAgZXhwZWN0KGNzcHJvaikudG9Db250YWluRXF1YWwoZXhwZWN0LnN0cmluZ01hdGNoaW5nKC9cXDxUYXJnZXRGcmFtZXdvcms+bmV0OC4wPFxcL1RhcmdldEZyYW1ld29yaz4vKSk7XG4gIH0pO1xuXG4gIGNsaVRlc3RXaXRoRGlyU3BhY2VzKCdmc2hhcnAgYXBwIHdpdGggc3BhY2VzJywgYXN5bmMgKHdvcmtEaXIpID0+IHtcbiAgICBhd2FpdCBjbGlJbml0KHtcbiAgICAgIHR5cGU6ICdhcHAnLFxuICAgICAgbGFuZ3VhZ2U6ICdmc2hhcnAnLFxuICAgICAgY2FuVXNlTmV0d29yazogZmFsc2UsXG4gICAgICBnZW5lcmF0ZU9ubHk6IHRydWUsXG4gICAgICB3b3JrRGlyLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZnNwcm9qRmlsZSA9IChhd2FpdCByZWN1cnNpdmVMaXN0RmlsZXMod29ya0RpcikpLmZpbHRlcihmID0+IGYuZW5kc1dpdGgoJy5mc3Byb2onKSlbMF07XG4gICAgZXhwZWN0KGZzcHJvakZpbGUpLnRvQmVEZWZpbmVkKCk7XG5cbiAgICBjb25zdCBmc3Byb2ogPSAoYXdhaXQgZnMucmVhZEZpbGUoZnNwcm9qRmlsZSwgJ3V0ZjgnKSkuc3BsaXQoL1xccj9cXG4vKTtcblxuICAgIGV4cGVjdChmc3Byb2opLnRvQ29udGFpbkVxdWFsKGV4cGVjdC5zdHJpbmdNYXRjaGluZygvXFw8UGFja2FnZVJlZmVyZW5jZSBJbmNsdWRlPVwiQ29uc3RydWN0c1wiIFZlcnNpb249XCJcXFsxMFxcLi4qLDExXFwuLipcXClcIi8pKTtcbiAgICBleHBlY3QoZnNwcm9qKS50b0NvbnRhaW5FcXVhbChleHBlY3Quc3RyaW5nTWF0Y2hpbmcoL1xcPFRhcmdldEZyYW1ld29yaz5uZXQ4LjA8XFwvVGFyZ2V0RnJhbWV3b3JrPi8pKTtcbiAgfSk7XG5cbiAgY2xpVGVzdCgnY3JlYXRlIGEgUHl0aG9uIGFwcCBwcm9qZWN0JywgYXN5bmMgKHdvcmtEaXIpID0+IHtcbiAgICBhd2FpdCBjbGlJbml0KHtcbiAgICAgIHR5cGU6ICdhcHAnLFxuICAgICAgbGFuZ3VhZ2U6ICdweXRob24nLFxuICAgICAgY2FuVXNlTmV0d29yazogZmFsc2UsXG4gICAgICBnZW5lcmF0ZU9ubHk6IHRydWUsXG4gICAgICB3b3JrRGlyLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KGF3YWl0IGZzLnBhdGhFeGlzdHMocGF0aC5qb2luKHdvcmtEaXIsICdyZXF1aXJlbWVudHMudHh0JykpKS50b0JlVHJ1dGh5KCk7XG4gICAgY29uc3Qgc2V0dXBQeSA9IChhd2FpdCBmcy5yZWFkRmlsZShwYXRoLmpvaW4od29ya0RpciwgJ3JlcXVpcmVtZW50cy50eHQnKSwgJ3V0ZjgnKSkuc3BsaXQoL1xccj9cXG4vKTtcbiAgICAvLyByZXR1cm4gUmVnRXhwTWF0Y2hBcnJheSAocmVzdWx0IG9mIGxpbmUubWF0Y2goKSkgZm9yIGV2ZXJ5IGxpbmVzIHRoYXQgbWF0Y2ggcmUuXG4gICAgY29uc3QgbWF0Y2hlcyA9IHNldHVwUHkubWFwKGxpbmUgPT4gbGluZS5tYXRjaCgvXmNvbnN0cnVjdHMoLiopLykpXG4gICAgICAuZmlsdGVyKGwgPT4gbCk7XG5cbiAgICBleHBlY3QobWF0Y2hlcy5sZW5ndGgpLnRvRXF1YWwoMSk7XG4gICAgbWF0Y2hlcy5mb3JFYWNoKG0gPT4ge1xuICAgICAgY29uc3QgdmVyc2lvbiA9IG0gJiYgbVsxXTtcbiAgICAgIGV4cGVjdCh2ZXJzaW9uKS50b01hdGNoKC8+PTEwXFwuXFxkK1xcLlxcZCw8MTFcXC4wXFwuMC8pO1xuICAgIH0pO1xuICB9KTtcblxuICBjbGlUZXN0KCctLWdlbmVyYXRlLW9ubHkgc2hvdWxkIHNraXAgZ2l0IGluaXQnLCBhc3luYyAod29ya0RpcikgPT4ge1xuICAgIGF3YWl0IGNsaUluaXQoe1xuICAgICAgdHlwZTogJ2FwcCcsXG4gICAgICBsYW5ndWFnZTogJ2phdmFzY3JpcHQnLFxuICAgICAgY2FuVXNlTmV0d29yazogZmFsc2UsXG4gICAgICBnZW5lcmF0ZU9ubHk6IHRydWUsXG4gICAgICB3b3JrRGlyLFxuICAgIH0pO1xuXG4gICAgLy8gQ2hlY2sgdGhhdCBwYWNrYWdlLmpzb24gYW5kIGJpbi8gZ290IGNyZWF0ZWQgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5XG4gICAgZXhwZWN0KGF3YWl0IGZzLnBhdGhFeGlzdHMocGF0aC5qb2luKHdvcmtEaXIsICdwYWNrYWdlLmpzb24nKSkpLnRvQmVUcnV0aHkoKTtcbiAgICBleHBlY3QoYXdhaXQgZnMucGF0aEV4aXN0cyhwYXRoLmpvaW4od29ya0RpciwgJ2JpbicpKSkudG9CZVRydXRoeSgpO1xuICAgIGV4cGVjdChhd2FpdCBmcy5wYXRoRXhpc3RzKHBhdGguam9pbih3b3JrRGlyLCAnLmdpdCcpKSkudG9CZUZhbHN5KCk7XG4gIH0pO1xuXG4gIGNsaVRlc3QoJ2dpdCBkaXJlY3RvcnkgZG9lcyBub3QgdGhyb3cgb2ZmIHRoZSBpbml0ZXIhJywgYXN5bmMgKHdvcmtEaXIpID0+IHtcbiAgICBmcy5ta2RpclN5bmMocGF0aC5qb2luKHdvcmtEaXIsICcuZ2l0JykpO1xuXG4gICAgYXdhaXQgY2xpSW5pdCh7XG4gICAgICB0eXBlOiAnYXBwJyxcbiAgICAgIGxhbmd1YWdlOiAndHlwZXNjcmlwdCcsXG4gICAgICBjYW5Vc2VOZXR3b3JrOiBmYWxzZSxcbiAgICAgIHdvcmtEaXIsXG4gICAgfSk7XG5cbiAgICAvLyBDaGVjayB0aGF0IHBhY2thZ2UuanNvbiBhbmQgYmluLyBnb3QgY3JlYXRlZCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnlcbiAgICBleHBlY3QoYXdhaXQgZnMucGF0aEV4aXN0cyhwYXRoLmpvaW4od29ya0RpciwgJ3BhY2thZ2UuanNvbicpKSkudG9CZVRydXRoeSgpO1xuICAgIGV4cGVjdChhd2FpdCBmcy5wYXRoRXhpc3RzKHBhdGguam9pbih3b3JrRGlyLCAnYmluJykpKS50b0JlVHJ1dGh5KCk7XG4gIH0pO1xuXG4gIGNsaVRlc3QoJ0NMSSB1c2VzIHJlY29tbWVuZGVkIGZlYXR1cmUgZmxhZ3MgZnJvbSBkYXRhIGZpbGUgdG8gaW5pdGlhbGl6ZSBjb250ZXh0JywgYXN5bmMgKHdvcmtEaXIpID0+IHtcbiAgICBjb25zdCByZWNvbW1lbmRlZEZsYWdzRmlsZSA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICdsaWInLCAnaW5pdC10ZW1wbGF0ZXMnLCAnLnJlY29tbWVuZGVkLWZlYXR1cmUtZmxhZ3MuanNvbicpO1xuICAgIGF3YWl0IHdpdGhSZXBsYWNlZEZpbGUocmVjb21tZW5kZWRGbGFnc0ZpbGUsIEpTT04uc3RyaW5naWZ5KHsgYmFuYW5hOiAneWVsbG93JyB9KSwgKCkgPT4gY2xpSW5pdCh7XG4gICAgICB0eXBlOiAnYXBwJyxcbiAgICAgIGxhbmd1YWdlOiAndHlwZXNjcmlwdCcsXG4gICAgICBjYW5Vc2VOZXR3b3JrOiBmYWxzZSxcbiAgICAgIGdlbmVyYXRlT25seTogdHJ1ZSxcbiAgICAgIHdvcmtEaXIsXG4gICAgfSkpO1xuXG4gICAgY29uc3QgY2RrRmlsZSA9IGF3YWl0IGZzLnJlYWRKc29uKHBhdGguam9pbih3b3JrRGlyLCAnY2RrLmpzb24nKSk7XG4gICAgZXhwZWN0KGNka0ZpbGUuY29udGV4dCkudG9FcXVhbCh7IGJhbmFuYTogJ3llbGxvdycgfSk7XG4gIH0pO1xuXG4gIGNsaVRlc3QoJ0NMSSB1c2VzIGluaXQgdmVyc2lvbnMgZmlsZSB0byBpbml0aWFsaXplIHRlbXBsYXRlJywgYXN5bmMgKHdvcmtEaXIpID0+IHtcbiAgICBjb25zdCByZWNvbW1lbmRlZEZsYWdzRmlsZSA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICdsaWInLCAnaW5pdC10ZW1wbGF0ZXMnLCAnLmluaXQtdmVyc2lvbi5qc29uJyk7XG4gICAgYXdhaXQgd2l0aFJlcGxhY2VkRmlsZShyZWNvbW1lbmRlZEZsYWdzRmlsZSwgSlNPTi5zdHJpbmdpZnkoeyAnYXdzLWNkay1saWInOiAnMTAwLjEuMScsICdjb25zdHJ1Y3RzJzogJ14yMDAuMi4yJyB9KSwgKCkgPT4gY2xpSW5pdCh7XG4gICAgICB0eXBlOiAnYXBwJyxcbiAgICAgIGxhbmd1YWdlOiAndHlwZXNjcmlwdCcsXG4gICAgICBjYW5Vc2VOZXR3b3JrOiBmYWxzZSxcbiAgICAgIGdlbmVyYXRlT25seTogdHJ1ZSxcbiAgICAgIHdvcmtEaXIsXG4gICAgfSkpO1xuXG4gICAgY29uc3QgcGFja2FnZUpzb24gPSBhd2FpdCBmcy5yZWFkSnNvbihwYXRoLmpvaW4od29ya0RpciwgJ3BhY2thZ2UuanNvbicpKTtcbiAgICBleHBlY3QocGFja2FnZUpzb24uZGVwZW5kZW5jaWVzWydhd3MtY2RrLWxpYiddKS50b0VxdWFsKCcxMDAuMS4xJyk7XG4gICAgZXhwZWN0KHBhY2thZ2VKc29uLmRlcGVuZGVuY2llcy5jb25zdHJ1Y3RzKS50b0VxdWFsKCdeMjAwLjIuMicpO1xuICB9KTtcblxuICB0ZXN0KCd2ZXJpZnkgXCJmdXR1cmUgZmxhZ3NcIiBhcmUgYWRkZWQgdG8gY2RrLmpzb24nLCBhc3luYyAoKSA9PiB7XG4gICAgZm9yIChjb25zdCB0ZW1wbCBvZiBhd2FpdCBhdmFpbGFibGVJbml0VGVtcGxhdGVzKCkpIHtcbiAgICAgIGZvciAoY29uc3QgbGFuZyBvZiB0ZW1wbC5sYW5ndWFnZXMpIHtcbiAgICAgICAgYXdhaXQgd2l0aFRlbXBEaXIoYXN5bmMgdG1wRGlyID0+IHtcbiAgICAgICAgICBhd2FpdCBjbGlJbml0KHtcbiAgICAgICAgICAgIHR5cGU6IHRlbXBsLm5hbWUsXG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZyxcbiAgICAgICAgICAgIGNhblVzZU5ldHdvcms6IGZhbHNlLFxuICAgICAgICAgICAgZ2VuZXJhdGVPbmx5OiB0cnVlLFxuICAgICAgICAgICAgd29ya0RpcjogdG1wRGlyLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgLy8gb2sgaWYgdGVtcGxhdGUgZG9lc24ndCBoYXZlIGEgY2RrLmpzb24gZmlsZSAoZS5nLiB0aGUgXCJsaWJcIiB0ZW1wbGF0ZSlcbiAgICAgICAgICBpZiAoIWF3YWl0IGZzLnBhdGhFeGlzdHMocGF0aC5qb2luKHRtcERpciwgJ2Nkay5qc29uJykpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgY29uZmlnID0gYXdhaXQgZnMucmVhZEpzb24ocGF0aC5qb2luKHRtcERpciwgJ2Nkay5qc29uJykpO1xuICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBjb25maWcuY29udGV4dCB8fCB7fTtcbiAgICAgICAgICBjb25zdCByZWNvbW1lbmRlZEZsYWdzID0gYXdhaXQgY3VycmVudGx5UmVjb21tZW5kZWRBd3NDZGtMaWJGbGFncygpO1xuICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgYWN0dWFsXSBvZiBPYmplY3QuZW50cmllcyhjb250ZXh0KSkge1xuICAgICAgICAgICAgZXhwZWN0KGtleSBpbiByZWNvbW1lbmRlZEZsYWdzKS50b0JlVHJ1dGh5KCk7XG4gICAgICAgICAgICBleHBlY3QocmVjb21tZW5kZWRGbGFnc1trZXldKS50b0VxdWFsKGFjdHVhbCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gYXNzZXJ0IHRoYXQgZXhwaXJlZCBmdXR1cmUgZmxhZ3MgYXJlIG5vdCBwYXJ0IG9mIHRoZSBjZGsuanNvblxuICAgICAgICAgIE9iamVjdC5rZXlzKGNvbnRleHQpLmZvckVhY2goayA9PiB7XG4gICAgICAgICAgICBleHBlY3QoY3hhcGkuQ1VSUkVOVF9WRVJTSU9OX0VYUElSRURfRkxBR1MuaW5jbHVkZXMoaykpLnRvRXF1YWwoZmFsc2UpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIC8vIFRoaXMgaXMgYSBsb3QgdG8gdGVzdCwgYW5kIGl0IGNhbiBiZSBzbG93LWlzaCwgZXNwZWNpYWxseSB3aGVuIHJhbiB3aXRoIG90aGVyIHRlc3RzLlxuICAzMF8wMDApO1xufSk7XG5cbnRlc3QoJ3doZW4gbm8gdmVyc2lvbiBudW1iZXIgaXMgcHJlc2VudCAoZS5nLiwgbG9jYWwgZGV2ZWxvcG1lbnQpLCB0aGUgdjIgdGVtcGxhdGVzIGFyZSBjaG9zZW4gYnkgZGVmYXVsdCcsIGFzeW5jICgpID0+IHtcbiAgZXhwZWN0KChhd2FpdCBhdmFpbGFibGVJbml0VGVtcGxhdGVzKCkpLmxlbmd0aCkudG9CZUdyZWF0ZXJUaGFuKDApO1xufSk7XG5cbnRlc3QoJ2NoZWNrIGF2YWlsYWJsZSBpbml0IGxhbmd1YWdlcycsIGFzeW5jICgpID0+IHtcbiAgY29uc3QgbGFuZ3MgPSBhd2FpdCBhdmFpbGFibGVJbml0TGFuZ3VhZ2VzKCk7XG4gIGV4cGVjdChsYW5ncy5sZW5ndGgpLnRvQmVHcmVhdGVyVGhhbigwKTtcbiAgZXhwZWN0KGxhbmdzKS50b0NvbnRhaW4oJ3R5cGVzY3JpcHQnKTtcbn0pO1xuXG50ZXN0KCdleGVyY2lzZSBwcmludGluZyBhdmFpbGFibGUgdGVtcGxhdGVzJywgYXN5bmMgKCkgPT4ge1xuICBhd2FpdCBwcmludEF2YWlsYWJsZVRlbXBsYXRlcygpO1xufSk7XG5cbmZ1bmN0aW9uIGNsaVRlc3QobmFtZTogc3RyaW5nLCBoYW5kbGVyOiAoZGlyOiBzdHJpbmcpID0+IHZvaWQgfCBQcm9taXNlPGFueT4pOiB2b2lkIHtcbiAgdGVzdChuYW1lLCAoKSA9PiB3aXRoVGVtcERpcihoYW5kbGVyKSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdpdGhUZW1wRGlyKGNiOiAoZGlyOiBzdHJpbmcpID0+IHZvaWQgfCBQcm9taXNlPGFueT4pIHtcbiAgY29uc3QgdG1wRGlyID0gYXdhaXQgZnMubWtkdGVtcChwYXRoLmpvaW4ob3MudG1wZGlyKCksICdhd3MtY2RrLXRlc3QnKSk7XG4gIHRyeSB7XG4gICAgYXdhaXQgY2IodG1wRGlyKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBmcy5yZW1vdmUodG1wRGlyKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjbGlUZXN0V2l0aERpclNwYWNlcyhuYW1lOiBzdHJpbmcsIGhhbmRsZXI6IChkaXI6IHN0cmluZykgPT4gdm9pZCB8IFByb21pc2U8YW55Pik6IHZvaWQge1xuICB0ZXN0KG5hbWUsICgpID0+IHdpdGhUZW1wRGlyV2l0aFNwYWNlcyhoYW5kbGVyKSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdpdGhUZW1wRGlyV2l0aFNwYWNlcyhjYjogKGRpcjogc3RyaW5nKSA9PiB2b2lkIHwgUHJvbWlzZTxhbnk+KSB7XG4gIGNvbnN0IHRtcERpciA9IGF3YWl0IGZzLm1rZHRlbXAocGF0aC5qb2luKG9zLnRtcGRpcigpLCAnYXdzLWNkay10ZXN0IHdpdGgtc3BhY2UnKSk7XG4gIHRyeSB7XG4gICAgYXdhaXQgY2IodG1wRGlyKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBmcy5yZW1vdmUodG1wRGlyKTtcbiAgfVxufVxuXG4vKipcbiAqIExpc3QgYWxsIGZpbGVzIHVuZGVybmVhdGggZGlyXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlY3Vyc2l2ZUxpc3RGaWxlcyhyZGlyOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gIGNvbnN0IHJldCA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gIGF3YWl0IHJlY3Vyc2UocmRpcik7XG4gIHJldHVybiByZXQ7XG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVjdXJzZShkaXI6IHN0cmluZykge1xuICAgIGZvciAoY29uc3QgbmFtZSBvZiBhd2FpdCBmcy5yZWFkZGlyKGRpcikpIHtcbiAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5qb2luKGRpciwgbmFtZSk7XG4gICAgICBpZiAoKGF3YWl0IGZzLnN0YXQoZnVsbFBhdGgpKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgIGF3YWl0IHJlY3Vyc2UoZnVsbFBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0LnB1c2goZnVsbFBhdGgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiB3aXRoUmVwbGFjZWRGaWxlKGZpbGVOYW1lOiBzdHJpbmcsIGNvbnRlbnRzOiBhbnksIGNiOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IG9sZENvbnRlbnRzID0gYXdhaXQgZnMucmVhZEZpbGUoZmlsZU5hbWUsICd1dGY4Jyk7XG4gIGF3YWl0IGZzLndyaXRlRmlsZShmaWxlTmFtZSwgY29udGVudHMpO1xuICB0cnkge1xuICAgIGF3YWl0IGNiKCk7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKGZpbGVOYW1lLCBvbGRDb250ZW50cyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,14 @@
1
+ /**
2
+ * A Jest environment that buffers outputs to `console.log()` and only shows it for failing tests.
3
+ */
4
+ import type { EnvironmentContext, JestEnvironment, JestEnvironmentConfig } from '@jest/environment';
5
+ import { TestEnvironment as NodeEnvironment } from 'jest-environment-node';
6
+ export default class TestEnvironment extends NodeEnvironment implements JestEnvironment<unknown> {
7
+ private log;
8
+ private originalConsole;
9
+ private originalStdoutWrite;
10
+ private originalStderrWrite;
11
+ constructor(config: JestEnvironmentConfig, context: EnvironmentContext);
12
+ setup(): Promise<void>;
13
+ teardown(): Promise<void>;
14
+ }