@aws-cdk/toolkit-lib 0.1.1 → 0.1.3

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 (35) hide show
  1. package/CODE_REGISTRY.md +35 -0
  2. package/README.md +18 -18
  3. package/build-info.json +2 -2
  4. package/lib/actions/deploy/index.d.ts +4 -4
  5. package/lib/actions/deploy/index.js +1 -1
  6. package/lib/actions/diff/private/helpers.js +3 -3
  7. package/lib/api/aws-cdk.d.ts +0 -1
  8. package/lib/api/aws-cdk.js +1676 -1318
  9. package/lib/api/aws-cdk.js.map +4 -4
  10. package/lib/api/cloud-assembly/private/context-aware-source.js +5 -5
  11. package/lib/api/cloud-assembly/private/exec.js +3 -3
  12. package/lib/api/cloud-assembly/private/prepare-source.js +4 -4
  13. package/lib/api/cloud-assembly/private/source-builder.d.ts +2 -2
  14. package/lib/api/cloud-assembly/private/source-builder.js +5 -5
  15. package/lib/api/cloud-assembly/private/stack-assembly.js +7 -7
  16. package/lib/api/io/io-message.d.ts +1 -1
  17. package/lib/api/io/io-message.js +1 -1
  18. package/lib/api/io/private/codes.d.ts +59 -29
  19. package/lib/api/io/private/codes.js +167 -28
  20. package/lib/api/io/private/messages.d.ts +14 -20
  21. package/lib/api/io/private/messages.js +19 -15
  22. package/lib/api/io/private/timer.js +6 -5
  23. package/lib/api/shared-public.d.ts +1 -0
  24. package/lib/api/shared-public.js +100 -0
  25. package/lib/api/shared-public.js.map +7 -0
  26. package/lib/index.d.ts +1 -1
  27. package/lib/index.js +2 -2
  28. package/lib/toolkit/index.d.ts +1 -0
  29. package/lib/toolkit/index.js +2 -1
  30. package/lib/toolkit/toolkit.js +29 -35
  31. package/lib/toolkit/types.d.ts +76 -0
  32. package/lib/toolkit/types.js +3 -0
  33. package/package.json +26 -24
  34. package/lib/api/errors.d.ts +0 -44
  35. package/lib/api/errors.js +0 -82
@@ -0,0 +1,76 @@
1
+ import { SuccessfulDeployStackResult as _SuccessfulDeployStackResult } from '../api/aws-cdk';
2
+ /**
3
+ * Assembly data returned in the payload of an IO Message.
4
+ */
5
+ export interface AssemblyData {
6
+ /**
7
+ * The path to the assembly directory
8
+ */
9
+ readonly assemblyDirectory: string;
10
+ /**
11
+ * The number of stacks actioned on
12
+ */
13
+ readonly stacksCount: number;
14
+ /**
15
+ * The stack IDs
16
+ */
17
+ readonly stackIds: string[];
18
+ }
19
+ /**
20
+ * A successful deploy stack result. Intentionally exposed in toolkit-lib so documentation
21
+ * can be generated from this interface.
22
+ */
23
+ export interface SuccessfulDeployStackResult extends _SuccessfulDeployStackResult {
24
+ }
25
+ /**
26
+ * Stack data returned in the payload of an IO Message.
27
+ */
28
+ export interface StackData {
29
+ /**
30
+ * The stack name
31
+ */
32
+ readonly stackName: string;
33
+ /**
34
+ * The stack ID
35
+ */
36
+ readonly hierarchicalId: string;
37
+ /**
38
+ * The stack template
39
+ */
40
+ readonly template: any;
41
+ /**
42
+ * The stack template converted to JSON format
43
+ */
44
+ readonly stringifiedJson: string;
45
+ /**
46
+ * The stack template converted to YAML format
47
+ */
48
+ readonly stringifiedYaml: string;
49
+ }
50
+ /**
51
+ * Stack data returned in the payload of an IO Message.
52
+ */
53
+ export interface StackAndAssemblyData extends AssemblyData {
54
+ /**
55
+ * Stack Data
56
+ */
57
+ readonly stack: StackData;
58
+ }
59
+ /**
60
+ * Duration information returned in the payload of an IO Message.
61
+ */
62
+ export interface Duration {
63
+ /**
64
+ * The duration of the action.
65
+ */
66
+ readonly duration: number;
67
+ }
68
+ /**
69
+ * Generic payload of error IoMessages that pass on an instance of `Error`
70
+ */
71
+ export interface ErrorPayload {
72
+ /**
73
+ * The error that occurred
74
+ */
75
+ readonly error: Error;
76
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3VjY2Vzc2Z1bERlcGxveVN0YWNrUmVzdWx0IGFzIF9TdWNjZXNzZnVsRGVwbG95U3RhY2tSZXN1bHQgfSBmcm9tICcuLi9hcGkvYXdzLWNkayc7XG5cbi8qKlxuICogQXNzZW1ibHkgZGF0YSByZXR1cm5lZCBpbiB0aGUgcGF5bG9hZCBvZiBhbiBJTyBNZXNzYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFzc2VtYmx5RGF0YSB7XG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB0aGUgYXNzZW1ibHkgZGlyZWN0b3J5XG4gICAqL1xuICByZWFkb25seSBhc3NlbWJseURpcmVjdG9yeTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHN0YWNrcyBhY3Rpb25lZCBvblxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tzQ291bnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHN0YWNrIElEc1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tJZHM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEEgc3VjY2Vzc2Z1bCBkZXBsb3kgc3RhY2sgcmVzdWx0LiBJbnRlbnRpb25hbGx5IGV4cG9zZWQgaW4gdG9vbGtpdC1saWIgc28gZG9jdW1lbnRhdGlvblxuICogY2FuIGJlIGdlbmVyYXRlZCBmcm9tIHRoaXMgaW50ZXJmYWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN1Y2Nlc3NmdWxEZXBsb3lTdGFja1Jlc3VsdCBleHRlbmRzIF9TdWNjZXNzZnVsRGVwbG95U3RhY2tSZXN1bHQge1xufVxuXG4vKipcbiAqIFN0YWNrIGRhdGEgcmV0dXJuZWQgaW4gdGhlIHBheWxvYWQgb2YgYW4gSU8gTWVzc2FnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFja0RhdGEge1xuICAvKipcbiAgICogVGhlIHN0YWNrIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgSURcbiAgICovXG4gIHJlYWRvbmx5IGhpZXJhcmNoaWNhbElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFjayB0ZW1wbGF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdGVtcGxhdGU6IGFueTtcblxuICAvKipcbiAgICogVGhlIHN0YWNrIHRlbXBsYXRlIGNvbnZlcnRlZCB0byBKU09OIGZvcm1hdFxuICAgKi9cbiAgcmVhZG9ubHkgc3RyaW5naWZpZWRKc29uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFjayB0ZW1wbGF0ZSBjb252ZXJ0ZWQgdG8gWUFNTCBmb3JtYXRcbiAgICovXG4gIHJlYWRvbmx5IHN0cmluZ2lmaWVkWWFtbDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFN0YWNrIGRhdGEgcmV0dXJuZWQgaW4gdGhlIHBheWxvYWQgb2YgYW4gSU8gTWVzc2FnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFja0FuZEFzc2VtYmx5RGF0YSBleHRlbmRzIEFzc2VtYmx5RGF0YSB7XG4gIC8qKlxuICAgKiBTdGFjayBEYXRhXG4gICAqL1xuICByZWFkb25seSBzdGFjazogU3RhY2tEYXRhO1xufVxuXG4vKipcbiAqIER1cmF0aW9uIGluZm9ybWF0aW9uIHJldHVybmVkIGluIHRoZSBwYXlsb2FkIG9mIGFuIElPIE1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRHVyYXRpb24ge1xuICAvKipcbiAgICogVGhlIGR1cmF0aW9uIG9mIHRoZSBhY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBkdXJhdGlvbjogbnVtYmVyO1xufVxuXG4vKipcbiAqIEdlbmVyaWMgcGF5bG9hZCBvZiBlcnJvciBJb01lc3NhZ2VzIHRoYXQgcGFzcyBvbiBhbiBpbnN0YW5jZSBvZiBgRXJyb3JgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JQYXlsb2FkIHtcbiAgLyoqXG4gICAqIFRoZSBlcnJvciB0aGF0IG9jY3VycmVkXG4gICAqL1xuICByZWFkb25seSBlcnJvcjogRXJyb3I7XG59XG4iXX0=
package/package.json CHANGED
@@ -34,6 +34,7 @@
34
34
  },
35
35
  "devDependencies": {
36
36
  "@aws-cdk/cdk-build-tools": "^0.0.0",
37
+ "@aws-cdk/tmp-toolkit-helpers": "^0.0.0",
37
38
  "@cdklabs/eslint-plugin": "^1.3.2",
38
39
  "@smithy/types": "^4.1.0",
39
40
  "@stylistic/eslint-plugin": "^3.1.0",
@@ -43,7 +44,7 @@
43
44
  "@types/split2": "^4.2.3",
44
45
  "@typescript-eslint/eslint-plugin": "^8",
45
46
  "@typescript-eslint/parser": "^8",
46
- "aws-cdk": "^2.1000.3",
47
+ "aws-cdk": "^2.1002.0",
47
48
  "aws-cdk-lib": "^2.180.0",
48
49
  "aws-sdk-client-mock": "^4.1.0",
49
50
  "commit-and-tag-version": "^12",
@@ -66,30 +67,31 @@
66
67
  "typescript": "5.6"
67
68
  },
68
69
  "dependencies": {
69
- "@aws-cdk/cloud-assembly-schema": "^40.4.0",
70
+ "@aws-cdk/cloud-assembly-schema": "^40.7.0",
70
71
  "@aws-cdk/cloudformation-diff": "^2.179.0",
71
72
  "@aws-cdk/cx-api": "^2.180.0",
72
73
  "@aws-cdk/region-info": "^2.180.0",
73
- "@aws-sdk/client-appsync": "3.741",
74
- "@aws-sdk/client-cloudformation": "3.741",
75
- "@aws-sdk/client-cloudwatch-logs": "3.741",
76
- "@aws-sdk/client-codebuild": "3.741",
77
- "@aws-sdk/client-ec2": "3.741",
78
- "@aws-sdk/client-ecr": "3.741",
79
- "@aws-sdk/client-ecs": "3.741",
80
- "@aws-sdk/client-elastic-load-balancing-v2": "3.741",
81
- "@aws-sdk/client-iam": "3.741",
82
- "@aws-sdk/client-kms": "3.741",
83
- "@aws-sdk/client-lambda": "3.741",
84
- "@aws-sdk/client-route-53": "3.741",
85
- "@aws-sdk/client-s3": "3.741",
86
- "@aws-sdk/client-secrets-manager": "3.741",
87
- "@aws-sdk/client-sfn": "3.741",
88
- "@aws-sdk/client-ssm": "3.741",
89
- "@aws-sdk/client-sts": "3.741",
90
- "@aws-sdk/credential-providers": "3.741",
91
- "@aws-sdk/ec2-metadata-service": "3.741",
92
- "@aws-sdk/lib-storage": "3.741",
74
+ "@aws-sdk/client-appsync": "^3",
75
+ "@aws-sdk/client-cloudcontrol": "^3",
76
+ "@aws-sdk/client-cloudformation": "^3",
77
+ "@aws-sdk/client-cloudwatch-logs": "^3",
78
+ "@aws-sdk/client-codebuild": "^3",
79
+ "@aws-sdk/client-ec2": "^3",
80
+ "@aws-sdk/client-ecr": "^3",
81
+ "@aws-sdk/client-ecs": "^3",
82
+ "@aws-sdk/client-elastic-load-balancing-v2": "^3",
83
+ "@aws-sdk/client-iam": "^3",
84
+ "@aws-sdk/client-kms": "^3",
85
+ "@aws-sdk/client-lambda": "^3",
86
+ "@aws-sdk/client-route-53": "^3",
87
+ "@aws-sdk/client-s3": "^3",
88
+ "@aws-sdk/client-secrets-manager": "^3",
89
+ "@aws-sdk/client-sfn": "^3",
90
+ "@aws-sdk/client-ssm": "^3",
91
+ "@aws-sdk/client-sts": "^3",
92
+ "@aws-sdk/credential-providers": "^3",
93
+ "@aws-sdk/ec2-metadata-service": "^3",
94
+ "@aws-sdk/lib-storage": "^3",
93
95
  "@jsii/check-node": "^1.108.0",
94
96
  "@smithy/middleware-endpoint": "^4.0.6",
95
97
  "@smithy/node-http-handler": "^4.0.3",
@@ -100,7 +102,7 @@
100
102
  "@smithy/util-waiter": "^4.0.2",
101
103
  "archiver": "^7.0.1",
102
104
  "camelcase": "^6",
103
- "cdk-assets": "^3.0.0-rc.145",
105
+ "cdk-assets": "^3.0.0",
104
106
  "cdk-from-cfn": "^0.191.0",
105
107
  "chalk": "^4",
106
108
  "chokidar": "^3",
@@ -134,7 +136,7 @@
134
136
  "publishConfig": {
135
137
  "access": "public"
136
138
  },
137
- "version": "0.1.1",
139
+ "version": "0.1.3",
138
140
  "types": "lib/index.d.ts",
139
141
  "exports": {
140
142
  ".": {
@@ -1,44 +0,0 @@
1
- /**
2
- * Represents a general toolkit error in the AWS CDK Toolkit.
3
- */
4
- export declare class ToolkitError extends Error {
5
- /**
6
- * Determines if a given error is an instance of ToolkitError.
7
- */
8
- static isToolkitError(x: any): x is ToolkitError;
9
- /**
10
- * Determines if a given error is an instance of AuthenticationError.
11
- */
12
- static isAuthenticationError(x: any): x is AuthenticationError;
13
- /**
14
- * Determines if a given error is an instance of AssemblyError.
15
- */
16
- static isAssemblyError(x: any): x is AssemblyError;
17
- /**
18
- * Determines if a given error is an instance of AssemblyError.
19
- */
20
- static isContextProviderError(x: any): x is ContextProviderError;
21
- /**
22
- * The type of the error, defaults to "toolkit".
23
- */
24
- readonly type: string;
25
- constructor(message: string, type?: string);
26
- }
27
- /**
28
- * Represents an authentication-specific error in the AWS CDK Toolkit.
29
- */
30
- export declare class AuthenticationError extends ToolkitError {
31
- constructor(message: string);
32
- }
33
- /**
34
- * Represents an authentication-specific error in the AWS CDK Toolkit.
35
- */
36
- export declare class AssemblyError extends ToolkitError {
37
- constructor(message: string);
38
- }
39
- /**
40
- * Represents an error originating from a Context Provider
41
- */
42
- export declare class ContextProviderError extends ToolkitError {
43
- constructor(message: string);
44
- }
package/lib/api/errors.js DELETED
@@ -1,82 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ContextProviderError = exports.AssemblyError = exports.AuthenticationError = exports.ToolkitError = void 0;
4
- const TOOLKIT_ERROR_SYMBOL = Symbol.for('@aws-cdk/toolkit.ToolkitError');
5
- const AUTHENTICATION_ERROR_SYMBOL = Symbol.for('@aws-cdk/toolkit.AuthenticationError');
6
- const ASSEMBLY_ERROR_SYMBOL = Symbol.for('@aws-cdk/toolkit.AssemblyError');
7
- const CONTEXT_PROVIDER_ERROR_SYMBOL = Symbol.for('@aws-cdk/toolkit.ContextProviderError');
8
- /**
9
- * Represents a general toolkit error in the AWS CDK Toolkit.
10
- */
11
- class ToolkitError extends Error {
12
- /**
13
- * Determines if a given error is an instance of ToolkitError.
14
- */
15
- static isToolkitError(x) {
16
- return x !== null && typeof (x) === 'object' && TOOLKIT_ERROR_SYMBOL in x;
17
- }
18
- /**
19
- * Determines if a given error is an instance of AuthenticationError.
20
- */
21
- static isAuthenticationError(x) {
22
- return this.isToolkitError(x) && AUTHENTICATION_ERROR_SYMBOL in x;
23
- }
24
- /**
25
- * Determines if a given error is an instance of AssemblyError.
26
- */
27
- static isAssemblyError(x) {
28
- return this.isToolkitError(x) && ASSEMBLY_ERROR_SYMBOL in x;
29
- }
30
- /**
31
- * Determines if a given error is an instance of AssemblyError.
32
- */
33
- static isContextProviderError(x) {
34
- return this.isToolkitError(x) && CONTEXT_PROVIDER_ERROR_SYMBOL in x;
35
- }
36
- /**
37
- * The type of the error, defaults to "toolkit".
38
- */
39
- type;
40
- constructor(message, type = 'toolkit') {
41
- super(message);
42
- Object.setPrototypeOf(this, ToolkitError.prototype);
43
- Object.defineProperty(this, TOOLKIT_ERROR_SYMBOL, { value: true });
44
- this.name = new.target.name;
45
- this.type = type;
46
- }
47
- }
48
- exports.ToolkitError = ToolkitError;
49
- /**
50
- * Represents an authentication-specific error in the AWS CDK Toolkit.
51
- */
52
- class AuthenticationError extends ToolkitError {
53
- constructor(message) {
54
- super(message, 'authentication');
55
- Object.setPrototypeOf(this, AuthenticationError.prototype);
56
- Object.defineProperty(this, AUTHENTICATION_ERROR_SYMBOL, { value: true });
57
- }
58
- }
59
- exports.AuthenticationError = AuthenticationError;
60
- /**
61
- * Represents an authentication-specific error in the AWS CDK Toolkit.
62
- */
63
- class AssemblyError extends ToolkitError {
64
- constructor(message) {
65
- super(message, 'assembly');
66
- Object.setPrototypeOf(this, AssemblyError.prototype);
67
- Object.defineProperty(this, ASSEMBLY_ERROR_SYMBOL, { value: true });
68
- }
69
- }
70
- exports.AssemblyError = AssemblyError;
71
- /**
72
- * Represents an error originating from a Context Provider
73
- */
74
- class ContextProviderError extends ToolkitError {
75
- constructor(message) {
76
- super(message, 'context-provider');
77
- Object.setPrototypeOf(this, ContextProviderError.prototype);
78
- Object.defineProperty(this, CONTEXT_PROVIDER_ERROR_SYMBOL, { value: true });
79
- }
80
- }
81
- exports.ContextProviderError = ContextProviderError;
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0FBQ3pFLE1BQU0sMkJBQTJCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0FBQ3ZGLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0FBQzNFLE1BQU0sNkJBQTZCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0FBRTFGOztHQUVHO0FBQ0gsTUFBYSxZQUFhLFNBQVEsS0FBSztJQUNyQzs7T0FFRztJQUNJLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBTTtRQUNqQyxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksT0FBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsSUFBSSxvQkFBb0IsSUFBSSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQU07UUFDeEMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLDJCQUEyQixJQUFJLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQU07UUFDbEMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLHFCQUFxQixJQUFJLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBTTtRQUN6QyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksNkJBQTZCLElBQUksQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRDs7T0FFRztJQUNhLElBQUksQ0FBUztJQUU3QixZQUFZLE9BQWUsRUFBRSxPQUFlLFNBQVM7UUFDbkQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLG9CQUFvQixFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0NBQ0Y7QUF6Q0Qsb0NBeUNDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLG1CQUFvQixTQUFRLFlBQVk7SUFDbkQsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUNqQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzRCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSwyQkFBMkIsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLENBQUM7Q0FDRjtBQU5ELGtEQU1DO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGFBQWMsU0FBUSxZQUFZO0lBQzdDLFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyRCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7Q0FDRjtBQU5ELHNDQU1DO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLG9CQUFxQixTQUFRLFlBQVk7SUFDcEQsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUNuQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1RCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSw2QkFBNkIsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLENBQUM7Q0FDRjtBQU5ELG9EQU1DIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgVE9PTEtJVF9FUlJPUl9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay90b29sa2l0LlRvb2xraXRFcnJvcicpO1xuY29uc3QgQVVUSEVOVElDQVRJT05fRVJST1JfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvdG9vbGtpdC5BdXRoZW50aWNhdGlvbkVycm9yJyk7XG5jb25zdCBBU1NFTUJMWV9FUlJPUl9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay90b29sa2l0LkFzc2VtYmx5RXJyb3InKTtcbmNvbnN0IENPTlRFWFRfUFJPVklERVJfRVJST1JfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvdG9vbGtpdC5Db250ZXh0UHJvdmlkZXJFcnJvcicpO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBnZW5lcmFsIHRvb2xraXQgZXJyb3IgaW4gdGhlIEFXUyBDREsgVG9vbGtpdC5cbiAqL1xuZXhwb3J0IGNsYXNzIFRvb2xraXRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgYSBnaXZlbiBlcnJvciBpcyBhbiBpbnN0YW5jZSBvZiBUb29sa2l0RXJyb3IuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzVG9vbGtpdEVycm9yKHg6IGFueSk6IHggaXMgVG9vbGtpdEVycm9yIHtcbiAgICByZXR1cm4geCAhPT0gbnVsbCAmJiB0eXBlb2YoeCkgPT09ICdvYmplY3QnICYmIFRPT0xLSVRfRVJST1JfU1lNQk9MIGluIHg7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhIGdpdmVuIGVycm9yIGlzIGFuIGluc3RhbmNlIG9mIEF1dGhlbnRpY2F0aW9uRXJyb3IuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzQXV0aGVudGljYXRpb25FcnJvcih4OiBhbnkpOiB4IGlzIEF1dGhlbnRpY2F0aW9uRXJyb3Ige1xuICAgIHJldHVybiB0aGlzLmlzVG9vbGtpdEVycm9yKHgpICYmIEFVVEhFTlRJQ0FUSU9OX0VSUk9SX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgYSBnaXZlbiBlcnJvciBpcyBhbiBpbnN0YW5jZSBvZiBBc3NlbWJseUVycm9yLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc0Fzc2VtYmx5RXJyb3IoeDogYW55KTogeCBpcyBBc3NlbWJseUVycm9yIHtcbiAgICByZXR1cm4gdGhpcy5pc1Rvb2xraXRFcnJvcih4KSAmJiBBU1NFTUJMWV9FUlJPUl9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGEgZ2l2ZW4gZXJyb3IgaXMgYW4gaW5zdGFuY2Ugb2YgQXNzZW1ibHlFcnJvci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNDb250ZXh0UHJvdmlkZXJFcnJvcih4OiBhbnkpOiB4IGlzIENvbnRleHRQcm92aWRlckVycm9yIHtcbiAgICByZXR1cm4gdGhpcy5pc1Rvb2xraXRFcnJvcih4KSAmJiBDT05URVhUX1BST1ZJREVSX0VSUk9SX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSBlcnJvciwgZGVmYXVsdHMgdG8gXCJ0b29sa2l0XCIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgdHlwZTogc3RyaW5nID0gJ3Rvb2xraXQnKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIFRvb2xraXRFcnJvci5wcm90b3R5cGUpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBUT09MS0lUX0VSUk9SX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgICB0aGlzLm5hbWUgPSBuZXcudGFyZ2V0Lm5hbWU7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gYXV0aGVudGljYXRpb24tc3BlY2lmaWMgZXJyb3IgaW4gdGhlIEFXUyBDREsgVG9vbGtpdC5cbiAqL1xuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uRXJyb3IgZXh0ZW5kcyBUb29sa2l0RXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlLCAnYXV0aGVudGljYXRpb24nKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgQXV0aGVudGljYXRpb25FcnJvci5wcm90b3R5cGUpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBBVVRIRU5USUNBVElPTl9FUlJPUl9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIGF1dGhlbnRpY2F0aW9uLXNwZWNpZmljIGVycm9yIGluIHRoZSBBV1MgQ0RLIFRvb2xraXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBBc3NlbWJseUVycm9yIGV4dGVuZHMgVG9vbGtpdEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSwgJ2Fzc2VtYmx5Jyk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEFzc2VtYmx5RXJyb3IucHJvdG90eXBlKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgQVNTRU1CTFlfRVJST1JfU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBlcnJvciBvcmlnaW5hdGluZyBmcm9tIGEgQ29udGV4dCBQcm92aWRlclxuICovXG5leHBvcnQgY2xhc3MgQ29udGV4dFByb3ZpZGVyRXJyb3IgZXh0ZW5kcyBUb29sa2l0RXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlLCAnY29udGV4dC1wcm92aWRlcicpO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBDb250ZXh0UHJvdmlkZXJFcnJvci5wcm90b3R5cGUpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBDT05URVhUX1BST1ZJREVSX0VSUk9SX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgfVxufVxuIl19