@rio-cloud/cdk-v2-constructs 6.16.10 → 6.16.11-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/docs/API.md CHANGED
@@ -257,14 +257,14 @@ Additional options for the watch see {@link WatchDocDbClusterOptions}.
257
257
  ##### `watchDynamoDbTable` <a name="watchDynamoDbTable" id="@rio-cloud/cdk-v2-constructs.AbstractWatchful.watchDynamoDbTable"></a>
258
258
 
259
259
  ```typescript
260
- public watchDynamoDbTable(dynamoDbTable: Table, options?: WatchDynamoDbTableOptions): void
260
+ public watchDynamoDbTable(dynamoDbTable: Table | TableV2, options?: WatchDynamoDbTableOptions): void
261
261
  ```
262
262
 
263
263
  Adds alarms for the given DynamoDb table.
264
264
 
265
265
  ###### `dynamoDbTable`<sup>Required</sup> <a name="dynamoDbTable" id="@rio-cloud/cdk-v2-constructs.AbstractWatchful.watchDynamoDbTable.parameter.dynamoDbTable"></a>
266
266
 
267
- - *Type:* aws-cdk-lib.aws_dynamodb.Table
267
+ - *Type:* aws-cdk-lib.aws_dynamodb.Table | aws-cdk-lib.aws_dynamodb.TableV2
268
268
 
269
269
  An database cluster that should be watched [disable-awslint:ref-via-interface].
270
270
 
@@ -7944,14 +7944,14 @@ Additional options for the watch see {@link WatchDocDbClusterOptions}.
7944
7944
  ##### ~~`watchDynamoDbTable`~~ <a name="watchDynamoDbTable" id="@rio-cloud/cdk-v2-constructs.Watchful.watchDynamoDbTable"></a>
7945
7945
 
7946
7946
  ```typescript
7947
- public watchDynamoDbTable(dynamoDbTable: Table, options?: WatchDynamoDbTableOptions): void
7947
+ public watchDynamoDbTable(dynamoDbTable: Table | TableV2, options?: WatchDynamoDbTableOptions): void
7948
7948
  ```
7949
7949
 
7950
7950
  Adds alarms for the given DynamoDb table.
7951
7951
 
7952
7952
  ###### `dynamoDbTable`<sup>Required</sup> <a name="dynamoDbTable" id="@rio-cloud/cdk-v2-constructs.Watchful.watchDynamoDbTable.parameter.dynamoDbTable"></a>
7953
7953
 
7954
- - *Type:* aws-cdk-lib.aws_dynamodb.Table
7954
+ - *Type:* aws-cdk-lib.aws_dynamodb.Table | aws-cdk-lib.aws_dynamodb.TableV2
7955
7955
 
7956
7956
  An database cluster that should be watched [disable-awslint:ref-via-interface].
7957
7957
 
@@ -8366,14 +8366,14 @@ Additional options for the watch see {@link WatchDocDbClusterOptions}.
8366
8366
  ##### `watchDynamoDbTable` <a name="watchDynamoDbTable" id="@rio-cloud/cdk-v2-constructs.watchfulv2.Watchful.watchDynamoDbTable"></a>
8367
8367
 
8368
8368
  ```typescript
8369
- public watchDynamoDbTable(dynamoDbTable: Table, options?: WatchDynamoDbTableOptions): void
8369
+ public watchDynamoDbTable(dynamoDbTable: Table | TableV2, options?: WatchDynamoDbTableOptions): void
8370
8370
  ```
8371
8371
 
8372
8372
  Adds alarms for the given DynamoDb table.
8373
8373
 
8374
8374
  ###### `dynamoDbTable`<sup>Required</sup> <a name="dynamoDbTable" id="@rio-cloud/cdk-v2-constructs.watchfulv2.Watchful.watchDynamoDbTable.parameter.dynamoDbTable"></a>
8375
8375
 
8376
- - *Type:* aws-cdk-lib.aws_dynamodb.Table
8376
+ - *Type:* aws-cdk-lib.aws_dynamodb.Table | aws-cdk-lib.aws_dynamodb.TableV2
8377
8377
 
8378
8378
  An database cluster that should be watched [disable-awslint:ref-via-interface].
8379
8379
 
@@ -17641,7 +17641,7 @@ const watchDynamoDbTableProps: WatchDynamoDbTableProps = { ... }
17641
17641
  | <code><a href="#@rio-cloud/cdk-v2-constructs.WatchDynamoDbTableProps.property.throttledRequestsEventsThreshold">throttledRequestsEventsThreshold</a></code> | <code>number</code> | Threshold of throttled requests events. |
17642
17642
  | <code><a href="#@rio-cloud/cdk-v2-constructs.WatchDynamoDbTableProps.property.userErrorsThreshold">userErrorsThreshold</a></code> | <code>number</code> | Threshold of user errors. |
17643
17643
  | <code><a href="#@rio-cloud/cdk-v2-constructs.WatchDynamoDbTableProps.property.writeThrottleEventsThreshold">writeThrottleEventsThreshold</a></code> | <code>number</code> | Threshold of write throttle events. |
17644
- | <code><a href="#@rio-cloud/cdk-v2-constructs.WatchDynamoDbTableProps.property.dynamoDbTable">dynamoDbTable</a></code> | <code>aws-cdk-lib.aws_dynamodb.Table</code> | The DynamoDb table that should be watched. |
17644
+ | <code><a href="#@rio-cloud/cdk-v2-constructs.WatchDynamoDbTableProps.property.dynamoDbTable">dynamoDbTable</a></code> | <code>aws-cdk-lib.aws_dynamodb.Table \| aws-cdk-lib.aws_dynamodb.TableV2</code> | The DynamoDb table that should be watched. |
17645
17645
  | <code><a href="#@rio-cloud/cdk-v2-constructs.WatchDynamoDbTableProps.property.watchful">watchful</a></code> | <code><a href="#@rio-cloud/cdk-v2-constructs.IWatchful">IWatchful</a></code> | The reference to IWatchful class. |
17646
17646
 
17647
17647
  ---
@@ -17714,10 +17714,10 @@ Threshold of write throttle events.
17714
17714
  ##### `dynamoDbTable`<sup>Required</sup> <a name="dynamoDbTable" id="@rio-cloud/cdk-v2-constructs.WatchDynamoDbTableProps.property.dynamoDbTable"></a>
17715
17715
 
17716
17716
  ```typescript
17717
- public readonly dynamoDbTable: Table;
17717
+ public readonly dynamoDbTable: Table | TableV2;
17718
17718
  ```
17719
17719
 
17720
- - *Type:* aws-cdk-lib.aws_dynamodb.Table
17720
+ - *Type:* aws-cdk-lib.aws_dynamodb.Table | aws-cdk-lib.aws_dynamodb.TableV2
17721
17721
 
17722
17722
  The DynamoDb table that should be watched.
17723
17723
 
package/docs/changelog.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [6.16.11-alpha.0](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv6.16.10&sourceBranch=refs%2Ftags%2Fv6.16.11-alpha.0) (2025-02-07)
6
+
5
7
  ## [6.16.10](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv6.16.9&sourceBranch=refs%2Ftags%2Fv6.16.10) (2025-02-03)
6
8
 
7
9
  ## [6.16.9](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv6.16.8&sourceBranch=refs%2Ftags%2Fv6.16.9) (2025-01-30)
@@ -0,0 +1,2 @@
1
+ import * as lambda from 'aws-cdk-lib/aws-lambda';
2
+ export declare const DEFAULT_NODE_RUNTIME: lambda.Runtime;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_NODE_RUNTIME = void 0;
4
+ const lambda = require("aws-cdk-lib/aws-lambda");
5
+ exports.DEFAULT_NODE_RUNTIME = lambda.Runtime.NODEJS_20_X;
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFBaUQ7QUFFcEMsUUFBQSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTk9ERV9SVU5USU1FID0gbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzIwX1g7XG5cbiJdfQ==
@@ -10,6 +10,7 @@ const logs = require("aws-cdk-lib/aws-logs");
10
10
  const cr = require("aws-cdk-lib/custom-resources");
11
11
  const constructs = require("constructs");
12
12
  const datadog_shared_secrets_1 = require("./datadog-shared-secrets");
13
+ const constants_1 = require("../constants");
13
14
  const rio_landing_zone_1 = require("../rio-landing-zone");
14
15
  const FUNCTION_ID = 'DatadogServiceCatalogEntryResourceHandler';
15
16
  /**
@@ -51,7 +52,7 @@ class DatadogServiceCatalogEntry extends constructs.Construct {
51
52
  exclude: ['*.js', '*.d.ts'],
52
53
  }),
53
54
  handler: 'on-create.handler',
54
- runtime: lambda.Runtime.NODEJS_20_X,
55
+ runtime: constants_1.DEFAULT_NODE_RUNTIME,
55
56
  architecture: lambda.Architecture.ARM_64,
56
57
  logGroup: new logs.LogGroup(this, 'DatadogServiceCatalogEntryResourceHandlerLogGroup', {
57
58
  retention: logs.RetentionDays.ONE_WEEK,
@@ -70,4 +71,4 @@ class DatadogServiceCatalogEntry extends constructs.Construct {
70
71
  exports.DatadogServiceCatalogEntry = DatadogServiceCatalogEntry;
71
72
  _a = JSII_RTTI_SYMBOL_1;
72
73
  DatadogServiceCatalogEntry[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.datadogv2.DatadogServiceCatalogEntry", version: "0.0.0" };
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy1zZXJ2aWNlLWNhdGFsb2ctZW50cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YWRvZ3YyL2RhdGFkb2ctc2VydmljZS1jYXRhbG9nLWVudHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLG1DQUFtQztBQUVuQyxpREFBaUQ7QUFDakQsNkNBQTZDO0FBQzdDLG1EQUFtRDtBQUNuRCx5Q0FBeUM7QUFDekMscUVBQStEO0FBQy9ELDBEQUFxRDtBQWlDckQsTUFBTSxXQUFXLEdBQUcsMkNBQTJDLENBQUM7QUFFaEU7O0dBRUc7QUFDSCxNQUFhLDBCQUEyQixTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBRWxFLFlBQVksS0FBNEIsRUFBRSxFQUFVLEVBQUUsS0FBMkM7UUFDL0YsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUVyRCxNQUFNLFFBQVEsR0FBRyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFO1lBQ3pELGNBQWMsRUFBRSxxQkFBcUI7U0FDdEMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBYSxDQUFDLENBQUM7UUFFeEcsTUFBTSxjQUFjLEdBQUcsaUNBQWMsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV2RSxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUN2QyxZQUFZLEVBQUUsUUFBUSxDQUFDLFlBQVk7WUFDbkMsb0JBQW9CLEVBQUUsSUFBSTtZQUMxQixVQUFVLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFLGNBQWMsQ0FBQyxXQUFXO2dCQUNoQyxPQUFPLEVBQUUsS0FBSyxDQUFDLFdBQVc7Z0JBQzFCLElBQUksRUFBRTtvQkFDSixHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7b0JBQzFCLFdBQVcsS0FBSyxDQUFDLFdBQVcsRUFBRTtpQkFDL0I7Z0JBQ0QsSUFBSSxFQUFFLEtBQUssQ0FBQyxXQUFXO2dCQUN2QixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7YUFDM0I7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUN6QyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBb0IsQ0FBQztRQUM5RCxDQUFDO2FBQU0sQ0FBQztZQUVOLE1BQU0sYUFBYSxHQUFHLDRDQUFtQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBRWxFLE1BQU0sT0FBTyxHQUFHLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUNyRCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsaUNBQWlDLENBQUMsRUFBRTtvQkFDbkYsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQztpQkFDNUIsQ0FBQztnQkFDRixPQUFPLEVBQUUsbUJBQW1CO2dCQUM1QixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXO2dCQUNuQyxZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNO2dCQUN4QyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxtREFBbUQsRUFBRTtvQkFDckYsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUTtpQkFDdkMsQ0FBQztnQkFDRixPQUFPLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNoQyxXQUFXLEVBQUU7b0JBQ1gsa0JBQWtCLEVBQUUsYUFBYSxDQUFDLFNBQVM7aUJBQzVDO2FBQ0YsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFhLENBQUMsQ0FBQztZQUVuRSxhQUFhLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2pDLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7SUFFSCxDQUFDOztBQTNESCxnRUE0REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcblxuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgKiBhcyBjciBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzJztcbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBEYXRhZG9nU2hhcmVkU2VjcmV0IH0gZnJvbSAnLi9kYXRhZG9nLXNoYXJlZC1zZWNyZXRzJztcbmltcG9ydCB7IFJpb0xhbmRpbmdab25lIH0gZnJvbSAnLi4vcmlvLWxhbmRpbmctem9uZSc7XG5cbnR5cGUgU2VydmljZUxhbmd1YWdlID0gJ2RvdG5ldCcgfCAnZ28nIHwgJ2phdmEnIHwgJ2pzJyB8ICdwaHAnIHwgJ3B5dGhvbicgfCAncnVieScgfCAnYysrJztcbnR5cGUgU2VydmljZVR5cGUgPSAnd2ViJyB8ICdkYicgfCAnY2FjaGUnIHwgJ2Z1bmN0aW9uJyB8ICdicm93c2VyJyB8ICdtb2JpbGUnIHwgJ2N1c3RvbSc7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIERhdGFkb2dTZXJ2aWNlQ2F0YWxvZ0VudHJ5IGNvbnN0cnVjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhZG9nU2VydmljZUNhdGFsb2dFbnRyeVByb3BlcnRpZXMge1xuICAvKipcbiAgICogVGhlIGFjdHVhbCBuYW1lIG9mIHRoZSBzZXJ2aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIEV4dHJhIHRhZ3MgdGhhdCBhcmUgdXNlZCB0byBpZGVudGlmeSBsb2dzLCBtZXRyaWNzIGFuZCBvdGhlciByZXNvdXJjZXMgb2YgdGhlIHNlcnZpY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgJ3NlcnZpY2U6JHNlcnZpY2VOYW1lJ1xuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmFUYWdzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgc2VydmljZS5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VUeXBlPzogU2VydmljZVR5cGU7XG4gIC8qKlxuICAgKiBUaGUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIHVzZWQgaW4gdGhlIHNlcnZpY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBsYW5ndWFnZXM/OiBTZXJ2aWNlTGFuZ3VhZ2VbXTtcbn1cblxuY29uc3QgRlVOQ1RJT05fSUQgPSAnRGF0YWRvZ1NlcnZpY2VDYXRhbG9nRW50cnlSZXNvdXJjZUhhbmRsZXInO1xuXG4vKipcbiAqIEN1c3RvbSBSZXNvdXJjZSB0byBzZXR1cCBzZXJ2aWNlIGluIERhdGFkb2cncyBTZXJ2aWNlQ2F0YWxvZy5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFkb2dTZXJ2aWNlQ2F0YWxvZ0VudHJ5IGV4dGVuZHMgY29uc3RydWN0cy5Db25zdHJ1Y3Qge1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLklDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhZG9nU2VydmljZUNhdGFsb2dFbnRyeVByb3BlcnRpZXMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgcmVzb3VyY2VIYW5kbGVyTGFtYmRhID0gdGhpcy5yZXNvdXJjZUhhbmRsZXIoKTtcblxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IGNyLlByb3ZpZGVyKHRoaXMsICdSZXNvdXJjZVByb3ZpZGVyJywge1xuICAgICAgb25FdmVudEhhbmRsZXI6IHJlc291cmNlSGFuZGxlckxhbWJkYSxcbiAgICB9KTtcbiAgICBuZXcgY2RrLlRhZygnV2F0Y2hmdWwnLCAnZmFsc2UnKS52aXNpdChwcm92aWRlci5ub2RlLmZpbmRDaGlsZCgnZnJhbWV3b3JrLW9uRXZlbnQnKS5ub2RlLmRlZmF1bHRDaGlsZCEpO1xuXG4gICAgY29uc3QgdGVhbUlkZW50aWZpZXIgPSBSaW9MYW5kaW5nWm9uZS5nZXRUZWFtSWRlbnRpZmllclBhcmFtZXRlcih0aGlzKTtcblxuICAgIG5ldyBjZGsuQ3VzdG9tUmVzb3VyY2UodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgc2VydmljZVRva2VuOiBwcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICBwYXNjYWxDYXNlUHJvcGVydGllczogdHJ1ZSxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgdGVhbTogdGVhbUlkZW50aWZpZXIuc3RyaW5nVmFsdWUsXG4gICAgICAgIHNlcnZpY2U6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgICB0YWdzOiBbXG4gICAgICAgICAgLi4uKHByb3BzLmV4dHJhVGFncyA/PyBbXSksXG4gICAgICAgICAgYHNlcnZpY2U6JHtwcm9wcy5zZXJ2aWNlTmFtZX1gLFxuICAgICAgICBdLFxuICAgICAgICB0eXBlOiBwcm9wcy5zZXJ2aWNlVHlwZSxcbiAgICAgICAgbGFuZ3VhZ2VzOiBwcm9wcy5sYW5ndWFnZXMsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmVzb3VyY2VIYW5kbGVyKCkge1xuICAgIGNvbnN0IHN0YWNrID0gY2RrLlN0YWNrLm9mKHRoaXMpO1xuICAgIGlmIChzdGFjay5ub2RlLnRyeUZpbmRDaGlsZChGVU5DVElPTl9JRCkpIHtcbiAgICAgIHJldHVybiBzdGFjay5ub2RlLmZpbmRDaGlsZChGVU5DVElPTl9JRCkgYXMgbGFtYmRhLkZ1bmN0aW9uO1xuICAgIH0gZWxzZSB7XG5cbiAgICAgIGNvbnN0IGRhdGFkb2dTZWNyZXQgPSBEYXRhZG9nU2hhcmVkU2VjcmV0LmNyZWRlbnRpYWxzU2VjcmV0KHRoaXMpO1xuXG4gICAgICBjb25zdCBoYW5kbGVyID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCBGVU5DVElPTl9JRCwge1xuICAgICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJ3NlcnZpY2UtY2F0YWxvZy1jdXN0b20tcmVzb3VyY2UnKSwge1xuICAgICAgICAgIGV4Y2x1ZGU6IFsnKi5qcycsICcqLmQudHMnXSxcbiAgICAgICAgfSksXG4gICAgICAgIGhhbmRsZXI6ICdvbi1jcmVhdGUuaGFuZGxlcicsXG4gICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18yMF9YLFxuICAgICAgICBhcmNoaXRlY3R1cmU6IGxhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgICBsb2dHcm91cDogbmV3IGxvZ3MuTG9nR3JvdXAodGhpcywgJ0RhdGFkb2dTZXJ2aWNlQ2F0YWxvZ0VudHJ5UmVzb3VyY2VIYW5kbGVyTG9nR3JvdXAnLCB7XG4gICAgICAgICAgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgICAgIH0pLFxuICAgICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcyg2KSxcbiAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICBEQVRBRE9HX1NFQ1JFVF9BUk46IGRhdGFkb2dTZWNyZXQuc2VjcmV0QXJuLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBuZXcgY2RrLlRhZygnV2F0Y2hmdWwnLCAnZmFsc2UnKS52aXNpdChoYW5kbGVyLm5vZGUuZGVmYXVsdENoaWxkISk7XG5cbiAgICAgIGRhdGFkb2dTZWNyZXQuZ3JhbnRSZWFkKGhhbmRsZXIpO1xuICAgICAgcmV0dXJuIGhhbmRsZXI7XG4gICAgfVxuXG4gIH1cbn1cbiJdfQ==
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy1zZXJ2aWNlLWNhdGFsb2ctZW50cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YWRvZ3YyL2RhdGFkb2ctc2VydmljZS1jYXRhbG9nLWVudHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLG1DQUFtQztBQUVuQyxpREFBaUQ7QUFDakQsNkNBQTZDO0FBQzdDLG1EQUFtRDtBQUNuRCx5Q0FBeUM7QUFDekMscUVBQStEO0FBQy9ELDRDQUFvRDtBQUNwRCwwREFBcUQ7QUFpQ3JELE1BQU0sV0FBVyxHQUFHLDJDQUEyQyxDQUFDO0FBRWhFOztHQUVHO0FBQ0gsTUFBYSwwQkFBMkIsU0FBUSxVQUFVLENBQUMsU0FBUztJQUVsRSxZQUFZLEtBQTRCLEVBQUUsRUFBVSxFQUFFLEtBQTJDO1FBQy9GLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFckQsTUFBTSxRQUFRLEdBQUcsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtZQUN6RCxjQUFjLEVBQUUscUJBQXFCO1NBQ3RDLENBQUMsQ0FBQztRQUNILElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQWEsQ0FBQyxDQUFDO1FBRXhHLE1BQU0sY0FBYyxHQUFHLGlDQUFjLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkUsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDdkMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxZQUFZO1lBQ25DLG9CQUFvQixFQUFFLElBQUk7WUFDMUIsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxjQUFjLENBQUMsV0FBVztnQkFDaEMsT0FBTyxFQUFFLEtBQUssQ0FBQyxXQUFXO2dCQUMxQixJQUFJLEVBQUU7b0JBQ0osR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO29CQUMxQixXQUFXLEtBQUssQ0FBQyxXQUFXLEVBQUU7aUJBQy9CO2dCQUNELElBQUksRUFBRSxLQUFLLENBQUMsV0FBVztnQkFDdkIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO2FBQzNCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDYixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDekMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQW9CLENBQUM7UUFDOUQsQ0FBQzthQUFNLENBQUM7WUFFTixNQUFNLGFBQWEsR0FBRyw0Q0FBbUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVsRSxNQUFNLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDckQsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGlDQUFpQyxDQUFDLEVBQUU7b0JBQ25GLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUM7aUJBQzVCLENBQUM7Z0JBQ0YsT0FBTyxFQUFFLG1CQUFtQjtnQkFDNUIsT0FBTyxFQUFFLGdDQUFvQjtnQkFDN0IsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTTtnQkFDeEMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsbURBQW1ELEVBQUU7b0JBQ3JGLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVE7aUJBQ3ZDLENBQUM7Z0JBQ0YsT0FBTyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDaEMsV0FBVyxFQUFFO29CQUNYLGtCQUFrQixFQUFFLGFBQWEsQ0FBQyxTQUFTO2lCQUM1QzthQUNGLENBQUMsQ0FBQztZQUNILElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBYSxDQUFDLENBQUM7WUFFbkUsYUFBYSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqQyxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO0lBRUgsQ0FBQzs7QUEzREgsZ0VBNERDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5cbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgY3IgZnJvbSAnYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlcyc7XG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgRGF0YWRvZ1NoYXJlZFNlY3JldCB9IGZyb20gJy4vZGF0YWRvZy1zaGFyZWQtc2VjcmV0cyc7XG5pbXBvcnQgeyBERUZBVUxUX05PREVfUlVOVElNRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBSaW9MYW5kaW5nWm9uZSB9IGZyb20gJy4uL3Jpby1sYW5kaW5nLXpvbmUnO1xuXG50eXBlIFNlcnZpY2VMYW5ndWFnZSA9ICdkb3RuZXQnIHwgJ2dvJyB8ICdqYXZhJyB8ICdqcycgfCAncGhwJyB8ICdweXRob24nIHwgJ3J1YnknIHwgJ2MrKyc7XG50eXBlIFNlcnZpY2VUeXBlID0gJ3dlYicgfCAnZGInIHwgJ2NhY2hlJyB8ICdmdW5jdGlvbicgfCAnYnJvd3NlcicgfCAnbW9iaWxlJyB8ICdjdXN0b20nO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHRoZSBEYXRhZG9nU2VydmljZUNhdGFsb2dFbnRyeSBjb25zdHJ1Y3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWRvZ1NlcnZpY2VDYXRhbG9nRW50cnlQcm9wZXJ0aWVzIHtcbiAgLyoqXG4gICAqIFRoZSBhY3R1YWwgbmFtZSBvZiB0aGUgc2VydmljZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBFeHRyYSB0YWdzIHRoYXQgYXJlIHVzZWQgdG8gaWRlbnRpZnkgbG9ncywgbWV0cmljcyBhbmQgb3RoZXIgcmVzb3VyY2VzIG9mIHRoZSBzZXJ2aWNlLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlICdzZXJ2aWNlOiRzZXJ2aWNlTmFtZSdcbiAgICovXG4gIHJlYWRvbmx5IGV4dHJhVGFncz86IHN0cmluZ1tdO1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIHNlcnZpY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBzZXJ2aWNlVHlwZT86IFNlcnZpY2VUeXBlO1xuICAvKipcbiAgICogVGhlIHByb2dyYW1taW5nIGxhbmd1YWdlcyB1c2VkIGluIHRoZSBzZXJ2aWNlLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgbGFuZ3VhZ2VzPzogU2VydmljZUxhbmd1YWdlW107XG59XG5cbmNvbnN0IEZVTkNUSU9OX0lEID0gJ0RhdGFkb2dTZXJ2aWNlQ2F0YWxvZ0VudHJ5UmVzb3VyY2VIYW5kbGVyJztcblxuLyoqXG4gKiBDdXN0b20gUmVzb3VyY2UgdG8gc2V0dXAgc2VydmljZSBpbiBEYXRhZG9nJ3MgU2VydmljZUNhdGFsb2cuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhZG9nU2VydmljZUNhdGFsb2dFbnRyeSBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IHtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5JQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRGF0YWRvZ1NlcnZpY2VDYXRhbG9nRW50cnlQcm9wZXJ0aWVzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHJlc291cmNlSGFuZGxlckxhbWJkYSA9IHRoaXMucmVzb3VyY2VIYW5kbGVyKCk7XG5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBjci5Qcm92aWRlcih0aGlzLCAnUmVzb3VyY2VQcm92aWRlcicsIHtcbiAgICAgIG9uRXZlbnRIYW5kbGVyOiByZXNvdXJjZUhhbmRsZXJMYW1iZGEsXG4gICAgfSk7XG4gICAgbmV3IGNkay5UYWcoJ1dhdGNoZnVsJywgJ2ZhbHNlJykudmlzaXQocHJvdmlkZXIubm9kZS5maW5kQ2hpbGQoJ2ZyYW1ld29yay1vbkV2ZW50Jykubm9kZS5kZWZhdWx0Q2hpbGQhKTtcblxuICAgIGNvbnN0IHRlYW1JZGVudGlmaWVyID0gUmlvTGFuZGluZ1pvbmUuZ2V0VGVhbUlkZW50aWZpZXJQYXJhbWV0ZXIodGhpcyk7XG5cbiAgICBuZXcgY2RrLkN1c3RvbVJlc291cmNlKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogcHJvdmlkZXIuc2VydmljZVRva2VuLFxuICAgICAgcGFzY2FsQ2FzZVByb3BlcnRpZXM6IHRydWUsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHRlYW06IHRlYW1JZGVudGlmaWVyLnN0cmluZ1ZhbHVlLFxuICAgICAgICBzZXJ2aWNlOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICAgICAgdGFnczogW1xuICAgICAgICAgIC4uLihwcm9wcy5leHRyYVRhZ3MgPz8gW10pLFxuICAgICAgICAgIGBzZXJ2aWNlOiR7cHJvcHMuc2VydmljZU5hbWV9YCxcbiAgICAgICAgXSxcbiAgICAgICAgdHlwZTogcHJvcHMuc2VydmljZVR5cGUsXG4gICAgICAgIGxhbmd1YWdlczogcHJvcHMubGFuZ3VhZ2VzLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHJlc291cmNlSGFuZGxlcigpIHtcbiAgICBjb25zdCBzdGFjayA9IGNkay5TdGFjay5vZih0aGlzKTtcbiAgICBpZiAoc3RhY2subm9kZS50cnlGaW5kQ2hpbGQoRlVOQ1RJT05fSUQpKSB7XG4gICAgICByZXR1cm4gc3RhY2subm9kZS5maW5kQ2hpbGQoRlVOQ1RJT05fSUQpIGFzIGxhbWJkYS5GdW5jdGlvbjtcbiAgICB9IGVsc2Uge1xuXG4gICAgICBjb25zdCBkYXRhZG9nU2VjcmV0ID0gRGF0YWRvZ1NoYXJlZFNlY3JldC5jcmVkZW50aWFsc1NlY3JldCh0aGlzKTtcblxuICAgICAgY29uc3QgaGFuZGxlciA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgRlVOQ1RJT05fSUQsIHtcbiAgICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICdzZXJ2aWNlLWNhdGFsb2ctY3VzdG9tLXJlc291cmNlJyksIHtcbiAgICAgICAgICBleGNsdWRlOiBbJyouanMnLCAnKi5kLnRzJ10sXG4gICAgICAgIH0pLFxuICAgICAgICBoYW5kbGVyOiAnb24tY3JlYXRlLmhhbmRsZXInLFxuICAgICAgICBydW50aW1lOiBERUZBVUxUX05PREVfUlVOVElNRSxcbiAgICAgICAgYXJjaGl0ZWN0dXJlOiBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgICAgbG9nR3JvdXA6IG5ldyBsb2dzLkxvZ0dyb3VwKHRoaXMsICdEYXRhZG9nU2VydmljZUNhdGFsb2dFbnRyeVJlc291cmNlSGFuZGxlckxvZ0dyb3VwJywge1xuICAgICAgICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9XRUVLLFxuICAgICAgICB9KSxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNiksXG4gICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgREFUQURPR19TRUNSRVRfQVJOOiBkYXRhZG9nU2VjcmV0LnNlY3JldEFybixcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgbmV3IGNkay5UYWcoJ1dhdGNoZnVsJywgJ2ZhbHNlJykudmlzaXQoaGFuZGxlci5ub2RlLmRlZmF1bHRDaGlsZCEpO1xuXG4gICAgICBkYXRhZG9nU2VjcmV0LmdyYW50UmVhZChoYW5kbGVyKTtcbiAgICAgIHJldHVybiBoYW5kbGVyO1xuICAgIH1cblxuICB9XG59XG4iXX0=
@@ -11,6 +11,7 @@ const logs = require("aws-cdk-lib/aws-logs");
11
11
  const sec = require("aws-cdk-lib/aws-secretsmanager");
12
12
  const cr = require("aws-cdk-lib/custom-resources");
13
13
  const constructs = require("constructs");
14
+ const constants_1 = require("../constants");
14
15
  const EU_LANDING_ZONE_ORG_ID = 'o-r5jfl7mbr9';
15
16
  const LATAM_LANDING_ZONE_ORG_ID = 'o-5j12ut524w';
16
17
  const DEVELOPER_TOOLS_ACCOUNT_ID = '577146897785';
@@ -51,7 +52,7 @@ class DatadogSharedSecret extends constructs.Construct {
51
52
  exclude: ['*.js', '*.d.ts'],
52
53
  }),
53
54
  handler: 'on-create.handler',
54
- runtime: lambda.Runtime.NODEJS_20_X,
55
+ runtime: constants_1.DEFAULT_NODE_RUNTIME,
55
56
  architecture: lambda.Architecture.ARM_64,
56
57
  logGroup: new logs.LogGroup(stack, 'DatadogSharedSecretHandlerLogGroup', {
57
58
  retention: logs.RetentionDays.ONE_WEEK,
@@ -158,4 +159,4 @@ class DatadogSharedSecret extends constructs.Construct {
158
159
  exports.DatadogSharedSecret = DatadogSharedSecret;
159
160
  _a = JSII_RTTI_SYMBOL_1;
160
161
  DatadogSharedSecret[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedSecret", version: "0.0.0" };
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy1zaGFyZWQtc2VjcmV0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhZG9ndjIvZGF0YWRvZy1zaGFyZWQtc2VjcmV0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUE2QjtBQUM3QixtQ0FBbUM7QUFFbkMsMkNBQTJDO0FBQzNDLGlEQUFpRDtBQUNqRCw2Q0FBNkM7QUFDN0Msc0RBQXNEO0FBQ3RELG1EQUFtRDtBQUNuRCx5Q0FBeUM7QUFHekMsTUFBTSxzQkFBc0IsR0FBVyxjQUFjLENBQUM7QUFDdEQsTUFBTSx5QkFBeUIsR0FBVyxjQUFjLENBQUM7QUFFekQsTUFBTSwwQkFBMEIsR0FBVyxjQUFjLENBQUM7QUFFMUQsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsMEJBQTBCLE1BQU0sSUFBSSwwQkFBMEIsb0NBQW9DLENBQUM7QUFDMUosTUFBTSx1QkFBdUIsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsMEJBQTBCLE1BQU0sSUFBSSwwQkFBMEIsaUNBQWlDLENBQUM7QUFFcEosTUFBTSxXQUFXLEdBQUcsMEJBQTBCLENBQUM7QUFDL0MsTUFBTSxtQkFBbUIsR0FBRywrQkFBK0IsQ0FBQztBQUM1RCxNQUFNLHVCQUF1QixHQUFHLG9DQUFvQyxDQUFDO0FBRXJFOztHQUVHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSxVQUFVLENBQUMsU0FBUztJQUUzRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBMkI7UUFDN0MsTUFBTSxFQUFFLEdBQUcsbUJBQW1CLENBQUM7UUFDL0IsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sS0FBSyxDQUFDLElB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O1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELFVBQVUsQ0FBQyxRQUF3QjtRQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELG1CQUFtQixDQUFDLEdBQVcsRUFBRSxRQUFxQztRQUNwRSxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELG1CQUFtQixDQUFDLFVBQStCO1FBQ2pELE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQW9DO1FBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsT0FBMEI7UUFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7O0FBOUpILGtEQWdLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuXG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCAqIGFzIHNlYyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXInO1xuaW1wb3J0ICogYXMgY3IgZnJvbSAnYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlcyc7XG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5cbmNvbnN0IEVVX0xBTkRJTkdfWk9ORV9PUkdfSUQ6IHN0cmluZyA9ICdvLXI1amZsN21icjknO1xuY29uc3QgTEFUQU1fTEFORElOR19aT05FX09SR19JRDogc3RyaW5nID0gJ28tNWoxMnV0NTI0dyc7XG5cbmNvbnN0IERFVkVMT1BFUl9UT09MU19BQ0NPVU5UX0lEOiBzdHJpbmcgPSAnNTc3MTQ2ODk3Nzg1JztcblxuY29uc3Qgc2hhcmVkTGF0YW1TZWNyZXRBcm5QcmVmaXggPSAocmVnaW9uOiBzdHJpbmcpID0+IGBhcm46YXdzOnNlY3JldHNtYW5hZ2VyOiR7cmVnaW9ufToke0RFVkVMT1BFUl9UT09MU19BQ0NPVU5UX0lEfTpzZWNyZXQ6L2RhdGFkb2ctaW50ZWdyYXRpb24vbGF0YW1gO1xuY29uc3Qgc2hhcmVkRXVTZWNyZXRBcm5QcmVmaXggPSAocmVnaW9uOiBzdHJpbmcpID0+IGBhcm46YXdzOnNlY3JldHNtYW5hZ2VyOiR7cmVnaW9ufToke0RFVkVMT1BFUl9UT09MU19BQ0NPVU5UX0lEfTpzZWNyZXQ6L2RhdGFkb2ctaW50ZWdyYXRpb24vZXVgO1xuXG5jb25zdCBSRVNPVVJDRV9JRCA9ICdfX09yZ0NyZWRlbnRpYWxzU2VjcmV0X18nO1xuY29uc3QgQVBJX0tFWV9SRVNPVVJDRV9JRCA9ICdfX0RhdGFkb2dBcGlLZXlTaGFyZWRTZWNyZXRfXyc7XG5jb25zdCBDUkVERU5USUFMU19SRVNPVVJDRV9JRCA9ICdfX0RhdGFkb2dDcmVkZW50aWFsc1NoYXJlZFNlY3JldF9fJztcblxuLyoqXG4gKiBBIGN1c3RvbSByZXNvdXJjZSB0aGF0IHJlc29sdmVzIHRoZSBzZWNyZXQgQVJOIGJhc2VkIG9uIHRoZSBvcmdhbml6YXRpb24gSUQuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhZG9nU2hhcmVkU2VjcmV0IGV4dGVuZHMgY29uc3RydWN0cy5Db25zdHJ1Y3QgaW1wbGVtZW50cyBzZWMuSVNlY3JldCB7XG5cbiAgLyoqXG4gICAqIFRoaXMgc3RhdGljIGZ1bmN0aW9uIHJlc29sdmVzIHRvIHRoZSBwbGFpbiBhcGkta2V5IHNlY3JldCwgdGhhdCBjYW4gYmUgdXNlZCBmb3IgdGhlIGxvZyBmb3J3YXJkZXIgb3IgdGhlIExhbWJkYSBpbnN0cnVtZW50YXRpb24uXG4gICAqL1xuICBzdGF0aWMgYXBpS2V5U2VjcmV0KHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCkge1xuICAgIGNvbnN0IGlkID0gQVBJX0tFWV9SRVNPVVJDRV9JRDtcbiAgICBjb25zdCBzdGFjayA9IGNkay5TdGFjay5vZihzY29wZSk7XG4gICAgaWYgKHN0YWNrLm5vZGUudHJ5RmluZENoaWxkKGlkKSkge1xuICAgICAgcmV0dXJuIHN0YWNrLm5vZGUuZmluZENoaWxkKGlkKSBhcyBEYXRhZG9nU2hhcmVkU2VjcmV0O1xuICAgIH1cbiAgICByZXR1cm4gbmV3IERhdGFkb2dTaGFyZWRTZWNyZXQoc3RhY2ssIGlkLCB7IHNlY3JldE5hbWU6ICdzaGFyZWQtYXBpLWtleScgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBzdGF0aWMgZnVuY3Rpb24gcmVzb2x2ZXMgdG8gdGhlIGpzb24gY3JlZGVudGlhbHMgc2VjcmV0IHRoYXQgY29udGFpbnMgWydBcGlLZXknLCAnQXBwbGljYXRpb25LZXknLCAnU2l0ZSddLlxuICAgKi9cbiAgc3RhdGljIGNyZWRlbnRpYWxzU2VjcmV0KHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCkge1xuICAgIGNvbnN0IGlkID0gQ1JFREVOVElBTFNfUkVTT1VSQ0VfSUQ7XG4gICAgY29uc3Qgc3RhY2sgPSBjZGsuU3RhY2sub2Yoc2NvcGUpO1xuICAgIGlmIChzdGFjay5ub2RlLnRyeUZpbmRDaGlsZChpZCkpIHtcbiAgICAgIHJldHVybiBzdGFjay5ub2RlLmZpbmRDaGlsZChpZCkgYXMgRGF0YWRvZ1NoYXJlZFNlY3JldDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBEYXRhZG9nU2hhcmVkU2VjcmV0KHNjb3BlLCBpZCwgeyBzZWNyZXROYW1lOiAnc2hhcmVkLWNyZWRlbnRpYWxzJyB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHNldHVwQ3VzdG9tUmVzb3VyY2Uoc3RhY2s6IGNkay5TdGFjayk6IGNyLlByb3ZpZGVyIHtcbiAgICBjb25zdCBzZWNyZXRMb2NhdG9yTGFtYmRhID0gbmV3IGxhbWJkYS5GdW5jdGlvbihzdGFjaywgJ1Jlc29sdmVTZWNyZXRBcm5IYW5kbGVyJywge1xuICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICdzZWNyZXQtbG9jYXRvci1jdXN0b20tcmVzb3VyY2UnKSwge1xuICAgICAgICBleGNsdWRlOiBbJyouanMnLCAnKi5kLnRzJ10sXG4gICAgICB9KSxcbiAgICAgIGhhbmRsZXI6ICdvbi1jcmVhdGUuaGFuZGxlcicsXG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMjBfWCxcbiAgICAgIGFyY2hpdGVjdHVyZTogbGFtYmRhLkFyY2hpdGVjdHVyZS5BUk1fNjQsXG4gICAgICBsb2dHcm91cDogbmV3IGxvZ3MuTG9nR3JvdXAoc3RhY2ssICdEYXRhZG9nU2hhcmVkU2VjcmV0SGFuZGxlckxvZ0dyb3VwJywge1xuICAgICAgICByZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfV0VFSyxcbiAgICAgIH0pLFxuICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNiksXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBTSEFSRURfTEFUQU1fU0VDUkVUX0FSTl9QUkVGSVg6IHNoYXJlZExhdGFtU2VjcmV0QXJuUHJlZml4KHN0YWNrLnJlZ2lvbiksXG4gICAgICAgIFNIQVJFRF9FVV9TRUNSRVRfQVJOX1BSRUZJWDogc2hhcmVkRXVTZWNyZXRBcm5QcmVmaXgoc3RhY2sucmVnaW9uKSxcbiAgICAgICAgTEFUQU1fTEFORElOR19aT05FX09SR19JRDogTEFUQU1fTEFORElOR19aT05FX09SR19JRCxcbiAgICAgICAgRVVfTEFORElOR19aT05FX09SR19JRDogRVVfTEFORElOR19aT05FX09SR19JRCxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgLy8gdG8gcHJldmVudCBpc3N1ZXMgd2l0aCBvcmRlciBvZiBhc3BlY3RzIGluIENESywgd2UgbmVlZCB0byBhZGQgdGhlIHRhZyBkaXJlY3RseS5cbiAgICBuZXcgY2RrLlRhZygnV2F0Y2hmdWwnLCAnZmFsc2UnKS52aXNpdChzZWNyZXRMb2NhdG9yTGFtYmRhLm5vZGUuZGVmYXVsdENoaWxkISk7XG5cbiAgICBzZWNyZXRMb2NhdG9yTGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7IGFjdGlvbnM6IFsnb3JnYW5pemF0aW9uczpEZXNjcmliZU9yZ2FuaXphdGlvbiddLCByZXNvdXJjZXM6IFsnKiddIH0pKTtcbiAgICBzZWNyZXRMb2NhdG9yTGFtYmRhLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogWydzZWNyZXRzbWFuYWdlcjpEZXNjcmliZVNlY3JldCddLFxuICAgICAgICByZXNvdXJjZXM6IFtgYXJuOmF3czpzZWNyZXRzbWFuYWdlcjoke3N0YWNrLnJlZ2lvbn06JHtERVZFTE9QRVJfVE9PTFNfQUNDT1VOVF9JRH06c2VjcmV0OipgXSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBjci5Qcm92aWRlcihzdGFjaywgUkVTT1VSQ0VfSUQsIHtcbiAgICAgIG9uRXZlbnRIYW5kbGVyOiBzZWNyZXRMb2NhdG9yTGFtYmRhLFxuICAgIH0pO1xuICAgIC8vIHRvIHByZXZlbnQgaXNzdWVzIHdpdGggb3JkZXIgb2YgYXNwZWN0cyBpbiBDREssIHdlIG5lZWQgdG8gYWRkIHRoZSB0YWcgZGlyZWN0bHkuXG4gICAgbmV3IGNkay5UYWcoJ1dhdGNoZnVsJywgJ2ZhbHNlJykudmlzaXQocHJvdmlkZXIubm9kZS5maW5kQ2hpbGQoJ2ZyYW1ld29yay1vbkV2ZW50Jykubm9kZS5kZWZhdWx0Q2hpbGQhKTtcbiAgICByZXR1cm4gcHJvdmlkZXI7XG4gIH1cblxuICBwcml2YXRlIHNlY3JldDogc2VjLklTZWNyZXQ7XG4gIHByaXZhdGUgY3VzdG9tUmVzb3VyY2U6IGNyLlByb3ZpZGVyO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuSUNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IHtzZWNyZXROYW1lOiBzdHJpbmd9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHN0YWNrID0gY2RrLlN0YWNrLm9mKHRoaXMpO1xuICAgIGlmICghc3RhY2subm9kZS50cnlGaW5kQ2hpbGQoUkVTT1VSQ0VfSUQpKSB7XG4gICAgICB0aGlzLmN1c3RvbVJlc291cmNlID0gRGF0YWRvZ1NoYXJlZFNlY3JldC5zZXR1cEN1c3RvbVJlc291cmNlKHN0YWNrKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXN0b21SZXNvdXJjZSA9IHN0YWNrLm5vZGUuZmluZENoaWxkKFJFU09VUkNFX0lEKSBhcyBjci5Qcm92aWRlcjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWNyZXRMb2NhdG9yID0gbmV3IGNkay5DdXN0b21SZXNvdXJjZSh0aGlzLCAnRGF0YWRvZ1NoYXJlZFNlY3JldCcsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogdGhpcy5jdXN0b21SZXNvdXJjZS5zZXJ2aWNlVG9rZW4sXG4gICAgICBwYXNjYWxDYXNlUHJvcGVydGllczogdHJ1ZSxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgc2VjcmV0TmFtZTogcHJvcHMuc2VjcmV0TmFtZSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnNlY3JldCA9IHNlYy5TZWNyZXQuZnJvbVNlY3JldENvbXBsZXRlQXJuKHRoaXMsICdSZXNvdXJjZScsIHNlY3JldExvY2F0b3IuZ2V0QXR0KCdTZWNyZXRBcm4nKS50b1N0cmluZygpKTtcbiAgfVxuXG4gIGdldCBzdGFjaygpOiBjZGsuU3RhY2sge1xuICAgIHJldHVybiB0aGlzLnNlY3JldC5zdGFjaztcbiAgfVxuXG4gIGdldCBlbnYoKTogY2RrLlJlc291cmNlRW52aXJvbm1lbnQge1xuICAgIHJldHVybiB0aGlzLnNlY3JldC5lbnY7XG4gIH1cblxuICBnZXQgZW5jcnlwdGlvbktleSgpIDogY2RrLmF3c19rbXMuSUtleSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBzZWNyZXRBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zZWNyZXQuc2VjcmV0QXJuO1xuICB9O1xuXG4gIGdldCBzZWNyZXRGdWxsQXJuKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc2VjcmV0LnNlY3JldEZ1bGxBcm47XG4gIH1cblxuICBnZXQgc2VjcmV0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNlY3JldC5zZWNyZXROYW1lO1xuICB9XG5cbiAgZ2V0IHNlY3JldFZhbHVlKCk6IGNkay5TZWNyZXRWYWx1ZSB7XG4gICAgcmV0dXJuIHRoaXMuc2VjcmV0LnNlY3JldFZhbHVlO1xuICB9XG5cbiAgc2VjcmV0VmFsdWVGcm9tSnNvbihrZXk6IHN0cmluZyk6IGNkay5TZWNyZXRWYWx1ZSB7XG4gICAgcmV0dXJuIHRoaXMuc2VjcmV0LnNlY3JldFZhbHVlRnJvbUpzb24oa2V5KTtcbiAgfVxuXG4gIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgdmVyc2lvblN0YWdlcz86IHN0cmluZ1tdKTogaWFtLkdyYW50IHtcbiAgICBjb25zdCByZXN1bHQgPSBncmFudGVlLmdyYW50UHJpbmNpcGFsLmFkZFRvUHJpbmNpcGFsUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGFjdGlvbnM6IFsna21zOkRlY3J5cHQnXSxcbiAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOmttczoqOiR7REVWRUxPUEVSX1RPT0xTX0FDQ09VTlRfSUR9OmtleS8qYF0sXG4gICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgICdGb3JBbnlWYWx1ZTpTdHJpbmdMaWtlJzoge1xuICAgICAgICAgICdrbXM6UmVzb3VyY2VBbGlhc2VzJzogJ2FsaWFzL2RhdGFkb2ctaW50ZWdyYXRpb24tc2hhcmVkLWNyZWRlbnRpYWxzLWtleScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pKTtcbiAgICBpZiAoIXJlc3VsdC5zdGF0ZW1lbnRBZGRlZCkge1xuICAgICAgY2RrLkFubm90YXRpb25zLm9mKHRoaXMpLmFkZFdhcm5pbmcoJ0NvdWxkIG5vdCBhZGQgc3RhdGVtZW50IHRvIHRoZSBwcmluY2lwYWwgcG9saWN5LicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zZWNyZXQuZ3JhbnRSZWFkKGdyYW50ZWUsIHZlcnNpb25TdGFnZXMpO1xuICB9XG5cbiAgZ3JhbnRXcml0ZShfZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBhbGxvd2VkLicpO1xuICB9XG5cbiAgYWRkUm90YXRpb25TY2hlZHVsZShfaWQ6IHN0cmluZywgX29wdGlvbnM6IHNlYy5Sb3RhdGlvblNjaGVkdWxlT3B0aW9ucyk6IHNlYy5Sb3RhdGlvblNjaGVkdWxlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgYWxsb3dlZC4nKTtcbiAgfVxuXG4gIGFkZFRvUmVzb3VyY2VQb2xpY3koX3N0YXRlbWVudDogaWFtLlBvbGljeVN0YXRlbWVudCk6IGlhbS5BZGRUb1Jlc291cmNlUG9saWN5UmVzdWx0IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgYWxsb3dlZC4nKTtcbiAgfVxuXG4gIGRlbnlBY2NvdW50Um9vdERlbGV0ZSgpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgYWxsb3dlZC4nKTtcbiAgfVxuXG4gIGF0dGFjaChfdGFyZ2V0OiBzZWMuSVNlY3JldEF0dGFjaG1lbnRUYXJnZXQpOiBzZWMuSVNlY3JldCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGFsbG93ZWQuJyk7XG4gIH1cblxuICBhcHBseVJlbW92YWxQb2xpY3koX3BvbGljeTogY2RrLlJlbW92YWxQb2xpY3kpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgYWxsb3dlZC4nKTtcbiAgfVxuXG59XG4iXX0=
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy1zaGFyZWQtc2VjcmV0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhZG9ndjIvZGF0YWRvZy1zaGFyZWQtc2VjcmV0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUE2QjtBQUM3QixtQ0FBbUM7QUFFbkMsMkNBQTJDO0FBQzNDLGlEQUFpRDtBQUNqRCw2Q0FBNkM7QUFDN0Msc0RBQXNEO0FBQ3RELG1EQUFtRDtBQUNuRCx5Q0FBeUM7QUFDekMsNENBQW9EO0FBR3BELE1BQU0sc0JBQXNCLEdBQVcsY0FBYyxDQUFDO0FBQ3RELE1BQU0seUJBQXlCLEdBQVcsY0FBYyxDQUFDO0FBRXpELE1BQU0sMEJBQTBCLEdBQVcsY0FBYyxDQUFDO0FBRTFELE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUFDLDBCQUEwQixNQUFNLElBQUksMEJBQTBCLG9DQUFvQyxDQUFDO0FBQzFKLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUFDLDBCQUEwQixNQUFNLElBQUksMEJBQTBCLGlDQUFpQyxDQUFDO0FBRXBKLE1BQU0sV0FBVyxHQUFHLDBCQUEwQixDQUFDO0FBQy9DLE1BQU0sbUJBQW1CLEdBQUcsK0JBQStCLENBQUM7QUFDNUQsTUFBTSx1QkFBdUIsR0FBRyxvQ0FBb0MsQ0FBQztBQUVyRTs7R0FFRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsVUFBVSxDQUFDLFNBQVM7SUFFM0Q7O09BRUc7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQTJCO1FBQzdDLE1BQU0sRUFBRSxHQUFHLG1CQUFtQixDQUFDO1FBQy9CLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNoQyxPQUFP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LE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxVQUFVLENBQUMsUUFBd0I7UUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxHQUFXLEVBQUUsUUFBcUM7UUFDcEUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxVQUErQjtRQUNqRCxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFvQztRQUN6QyxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELGtCQUFrQixDQUFDLE9BQTBCO1FBQzNDLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN6QyxDQUFDOztBQTlKSCxrREFnS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcblxuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgKiBhcyBzZWMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyJztcbmltcG9ydCAqIGFzIGNyIGZyb20gJ2F3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXMnO1xuaW1wb3J0ICogYXMgY29uc3RydWN0cyBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IERFRkFVTFRfTk9ERV9SVU5USU1FIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuXG5jb25zdCBFVV9MQU5ESU5HX1pPTkVfT1JHX0lEOiBzdHJpbmcgPSAnby1yNWpmbDdtYnI5JztcbmNvbnN0IExBVEFNX0xBTkRJTkdfWk9ORV9PUkdfSUQ6IHN0cmluZyA9ICdvLTVqMTJ1dDUyNHcnO1xuXG5jb25zdCBERVZFTE9QRVJfVE9PTFNfQUNDT1VOVF9JRDogc3RyaW5nID0gJzU3NzE0Njg5Nzc4NSc7XG5cbmNvbnN0IHNoYXJlZExhdGFtU2VjcmV0QXJuUHJlZml4ID0gKHJlZ2lvbjogc3RyaW5nKSA9PiBgYXJuOmF3czpzZWNyZXRzbWFuYWdlcjoke3JlZ2lvbn06JHtERVZFTE9QRVJfVE9PTFNfQUNDT1VOVF9JRH06c2VjcmV0Oi9kYXRhZG9nLWludGVncmF0aW9uL2xhdGFtYDtcbmNvbnN0IHNoYXJlZEV1U2VjcmV0QXJuUHJlZml4ID0gKHJlZ2lvbjogc3RyaW5nKSA9PiBgYXJuOmF3czpzZWNyZXRzbWFuYWdlcjoke3JlZ2lvbn06JHtERVZFTE9QRVJfVE9PTFNfQUNDT1VOVF9JRH06c2VjcmV0Oi9kYXRhZG9nLWludGVncmF0aW9uL2V1YDtcblxuY29uc3QgUkVTT1VSQ0VfSUQgPSAnX19PcmdDcmVkZW50aWFsc1NlY3JldF9fJztcbmNvbnN0IEFQSV9LRVlfUkVTT1VSQ0VfSUQgPSAnX19EYXRhZG9nQXBpS2V5U2hhcmVkU2VjcmV0X18nO1xuY29uc3QgQ1JFREVOVElBTFNfUkVTT1VSQ0VfSUQgPSAnX19EYXRhZG9nQ3JlZGVudGlhbHNTaGFyZWRTZWNyZXRfXyc7XG5cbi8qKlxuICogQSBjdXN0b20gcmVzb3VyY2UgdGhhdCByZXNvbHZlcyB0aGUgc2VjcmV0IEFSTiBiYXNlZCBvbiB0aGUgb3JnYW5pemF0aW9uIElELlxuICovXG5leHBvcnQgY2xhc3MgRGF0YWRvZ1NoYXJlZFNlY3JldCBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IGltcGxlbWVudHMgc2VjLklTZWNyZXQge1xuXG4gIC8qKlxuICAgKiBUaGlzIHN0YXRpYyBmdW5jdGlvbiByZXNvbHZlcyB0byB0aGUgcGxhaW4gYXBpLWtleSBzZWNyZXQsIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHRoZSBsb2cgZm9yd2FyZGVyIG9yIHRoZSBMYW1iZGEgaW5zdHJ1bWVudGF0aW9uLlxuICAgKi9cbiAgc3RhdGljIGFwaUtleVNlY3JldChzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QpIHtcbiAgICBjb25zdCBpZCA9IEFQSV9LRVlfUkVTT1VSQ0VfSUQ7XG4gICAgY29uc3Qgc3RhY2sgPSBjZGsuU3RhY2sub2Yoc2NvcGUpO1xuICAgIGlmIChzdGFjay5ub2RlLnRyeUZpbmRDaGlsZChpZCkpIHtcbiAgICAgIHJldHVybiBzdGFjay5ub2RlLmZpbmRDaGlsZChpZCkgYXMgRGF0YWRvZ1NoYXJlZFNlY3JldDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBEYXRhZG9nU2hhcmVkU2VjcmV0KHN0YWNrLCBpZCwgeyBzZWNyZXROYW1lOiAnc2hhcmVkLWFwaS1rZXknIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgc3RhdGljIGZ1bmN0aW9uIHJlc29sdmVzIHRvIHRoZSBqc29uIGNyZWRlbnRpYWxzIHNlY3JldCB0aGF0IGNvbnRhaW5zIFsnQXBpS2V5JywgJ0FwcGxpY2F0aW9uS2V5JywgJ1NpdGUnXS5cbiAgICovXG4gIHN0YXRpYyBjcmVkZW50aWFsc1NlY3JldChzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QpIHtcbiAgICBjb25zdCBpZCA9IENSRURFTlRJQUxTX1JFU09VUkNFX0lEO1xuICAgIGNvbnN0IHN0YWNrID0gY2RrLlN0YWNrLm9mKHNjb3BlKTtcbiAgICBpZiAoc3RhY2subm9kZS50cnlGaW5kQ2hpbGQoaWQpKSB7XG4gICAgICByZXR1cm4gc3RhY2subm9kZS5maW5kQ2hpbGQoaWQpIGFzIERhdGFkb2dTaGFyZWRTZWNyZXQ7XG4gICAgfVxuICAgIHJldHVybiBuZXcgRGF0YWRvZ1NoYXJlZFNlY3JldChzY29wZSwgaWQsIHsgc2VjcmV0TmFtZTogJ3NoYXJlZC1jcmVkZW50aWFscycgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBzZXR1cEN1c3RvbVJlc291cmNlKHN0YWNrOiBjZGsuU3RhY2spOiBjci5Qcm92aWRlciB7XG4gICAgY29uc3Qgc2VjcmV0TG9jYXRvckxhbWJkYSA9IG5ldyBsYW1iZGEuRnVuY3Rpb24oc3RhY2ssICdSZXNvbHZlU2VjcmV0QXJuSGFuZGxlcicsIHtcbiAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnc2VjcmV0LWxvY2F0b3ItY3VzdG9tLXJlc291cmNlJyksIHtcbiAgICAgICAgZXhjbHVkZTogWycqLmpzJywgJyouZC50cyddLFxuICAgICAgfSksXG4gICAgICBoYW5kbGVyOiAnb24tY3JlYXRlLmhhbmRsZXInLFxuICAgICAgcnVudGltZTogREVGQVVMVF9OT0RFX1JVTlRJTUUsXG4gICAgICBhcmNoaXRlY3R1cmU6IGxhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgbG9nR3JvdXA6IG5ldyBsb2dzLkxvZ0dyb3VwKHN0YWNrLCAnRGF0YWRvZ1NoYXJlZFNlY3JldEhhbmRsZXJMb2dHcm91cCcsIHtcbiAgICAgICAgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgICB9KSxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDYpLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgU0hBUkVEX0xBVEFNX1NFQ1JFVF9BUk5fUFJFRklYOiBzaGFyZWRMYXRhbVNlY3JldEFyblByZWZpeChzdGFjay5yZWdpb24pLFxuICAgICAgICBTSEFSRURfRVVfU0VDUkVUX0FSTl9QUkVGSVg6IHNoYXJlZEV1U2VjcmV0QXJuUHJlZml4KHN0YWNrLnJlZ2lvbiksXG4gICAgICAgIExBVEFNX0xBTkRJTkdfWk9ORV9PUkdfSUQ6IExBVEFNX0xBTkRJTkdfWk9ORV9PUkdfSUQsXG4gICAgICAgIEVVX0xBTkRJTkdfWk9ORV9PUkdfSUQ6IEVVX0xBTkRJTkdfWk9ORV9PUkdfSUQsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIC8vIHRvIHByZXZlbnQgaXNzdWVzIHdpdGggb3JkZXIgb2YgYXNwZWN0cyBpbiBDREssIHdlIG5lZWQgdG8gYWRkIHRoZSB0YWcgZGlyZWN0bHkuXG4gICAgbmV3IGNkay5UYWcoJ1dhdGNoZnVsJywgJ2ZhbHNlJykudmlzaXQoc2VjcmV0TG9jYXRvckxhbWJkYS5ub2RlLmRlZmF1bHRDaGlsZCEpO1xuXG4gICAgc2VjcmV0TG9jYXRvckxhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoeyBhY3Rpb25zOiBbJ29yZ2FuaXphdGlvbnM6RGVzY3JpYmVPcmdhbml6YXRpb24nXSwgcmVzb3VyY2VzOiBbJyonXSB9KSk7XG4gICAgc2VjcmV0TG9jYXRvckxhbWJkYS5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFsnc2VjcmV0c21hbmFnZXI6RGVzY3JpYmVTZWNyZXQnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbYGFybjphd3M6c2VjcmV0c21hbmFnZXI6JHtzdGFjay5yZWdpb259OiR7REVWRUxPUEVSX1RPT0xTX0FDQ09VTlRfSUR9OnNlY3JldDoqYF0sXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgY3IuUHJvdmlkZXIoc3RhY2ssIFJFU09VUkNFX0lELCB7XG4gICAgICBvbkV2ZW50SGFuZGxlcjogc2VjcmV0TG9jYXRvckxhbWJkYSxcbiAgICB9KTtcbiAgICAvLyB0byBwcmV2ZW50IGlzc3VlcyB3aXRoIG9yZGVyIG9mIGFzcGVjdHMgaW4gQ0RLLCB3ZSBuZWVkIHRvIGFkZCB0aGUgdGFnIGRpcmVjdGx5LlxuICAgIG5ldyBjZGsuVGFnKCdXYXRjaGZ1bCcsICdmYWxzZScpLnZpc2l0KHByb3ZpZGVyLm5vZGUuZmluZENoaWxkKCdmcmFtZXdvcmstb25FdmVudCcpLm5vZGUuZGVmYXVsdENoaWxkISk7XG4gICAgcmV0dXJuIHByb3ZpZGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWNyZXQ6IHNlYy5JU2VjcmV0O1xuICBwcml2YXRlIGN1c3RvbVJlc291cmNlOiBjci5Qcm92aWRlcjtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLklDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiB7c2VjcmV0TmFtZTogc3RyaW5nfSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBzdGFjayA9IGNkay5TdGFjay5vZih0aGlzKTtcbiAgICBpZiAoIXN0YWNrLm5vZGUudHJ5RmluZENoaWxkKFJFU09VUkNFX0lEKSkge1xuICAgICAgdGhpcy5jdXN0b21SZXNvdXJjZSA9IERhdGFkb2dTaGFyZWRTZWNyZXQuc2V0dXBDdXN0b21SZXNvdXJjZShzdGFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VzdG9tUmVzb3VyY2UgPSBzdGFjay5ub2RlLmZpbmRDaGlsZChSRVNPVVJDRV9JRCkgYXMgY3IuUHJvdmlkZXI7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VjcmV0TG9jYXRvciA9IG5ldyBjZGsuQ3VzdG9tUmVzb3VyY2UodGhpcywgJ0RhdGFkb2dTaGFyZWRTZWNyZXQnLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IHRoaXMuY3VzdG9tUmVzb3VyY2Uuc2VydmljZVRva2VuLFxuICAgICAgcGFzY2FsQ2FzZVByb3BlcnRpZXM6IHRydWUsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHNlY3JldE5hbWU6IHByb3BzLnNlY3JldE5hbWUsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5zZWNyZXQgPSBzZWMuU2VjcmV0LmZyb21TZWNyZXRDb21wbGV0ZUFybih0aGlzLCAnUmVzb3VyY2UnLCBzZWNyZXRMb2NhdG9yLmdldEF0dCgnU2VjcmV0QXJuJykudG9TdHJpbmcoKSk7XG4gIH1cblxuICBnZXQgc3RhY2soKTogY2RrLlN0YWNrIHtcbiAgICByZXR1cm4gdGhpcy5zZWNyZXQuc3RhY2s7XG4gIH1cblxuICBnZXQgZW52KCk6IGNkay5SZXNvdXJjZUVudmlyb25tZW50IHtcbiAgICByZXR1cm4gdGhpcy5zZWNyZXQuZW52O1xuICB9XG5cbiAgZ2V0IGVuY3J5cHRpb25LZXkoKSA6IGNkay5hd3Nfa21zLklLZXkgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgc2VjcmV0QXJuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2VjcmV0LnNlY3JldEFybjtcbiAgfTtcblxuICBnZXQgc2VjcmV0RnVsbEFybigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnNlY3JldC5zZWNyZXRGdWxsQXJuO1xuICB9XG5cbiAgZ2V0IHNlY3JldE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zZWNyZXQuc2VjcmV0TmFtZTtcbiAgfVxuXG4gIGdldCBzZWNyZXRWYWx1ZSgpOiBjZGsuU2VjcmV0VmFsdWUge1xuICAgIHJldHVybiB0aGlzLnNlY3JldC5zZWNyZXRWYWx1ZTtcbiAgfVxuXG4gIHNlY3JldFZhbHVlRnJvbUpzb24oa2V5OiBzdHJpbmcpOiBjZGsuU2VjcmV0VmFsdWUge1xuICAgIHJldHVybiB0aGlzLnNlY3JldC5zZWNyZXRWYWx1ZUZyb21Kc29uKGtleSk7XG4gIH1cblxuICBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIHZlcnNpb25TdGFnZXM/OiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgY29uc3QgcmVzdWx0ID0gZ3JhbnRlZS5ncmFudFByaW5jaXBhbC5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBhY3Rpb25zOiBbJ2ttczpEZWNyeXB0J10sXG4gICAgICByZXNvdXJjZXM6IFtgYXJuOmF3czprbXM6Kjoke0RFVkVMT1BFUl9UT09MU19BQ0NPVU5UX0lEfTprZXkvKmBdLFxuICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICAnRm9yQW55VmFsdWU6U3RyaW5nTGlrZSc6IHtcbiAgICAgICAgICAna21zOlJlc291cmNlQWxpYXNlcyc6ICdhbGlhcy9kYXRhZG9nLWludGVncmF0aW9uLXNoYXJlZC1jcmVkZW50aWFscy1rZXknLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KSk7XG4gICAgaWYgKCFyZXN1bHQuc3RhdGVtZW50QWRkZWQpIHtcbiAgICAgIGNkay5Bbm5vdGF0aW9ucy5vZih0aGlzKS5hZGRXYXJuaW5nKCdDb3VsZCBub3QgYWRkIHN0YXRlbWVudCB0byB0aGUgcHJpbmNpcGFsIHBvbGljeS4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2VjcmV0LmdyYW50UmVhZChncmFudGVlLCB2ZXJzaW9uU3RhZ2VzKTtcbiAgfVxuXG4gIGdyYW50V3JpdGUoX2dyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgYWxsb3dlZC4nKTtcbiAgfVxuXG4gIGFkZFJvdGF0aW9uU2NoZWR1bGUoX2lkOiBzdHJpbmcsIF9vcHRpb25zOiBzZWMuUm90YXRpb25TY2hlZHVsZU9wdGlvbnMpOiBzZWMuUm90YXRpb25TY2hlZHVsZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGFsbG93ZWQuJyk7XG4gIH1cblxuICBhZGRUb1Jlc291cmNlUG9saWN5KF9zdGF0ZW1lbnQ6IGlhbS5Qb2xpY3lTdGF0ZW1lbnQpOiBpYW0uQWRkVG9SZXNvdXJjZVBvbGljeVJlc3VsdCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGFsbG93ZWQuJyk7XG4gIH1cblxuICBkZW55QWNjb3VudFJvb3REZWxldGUoKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGFsbG93ZWQuJyk7XG4gIH1cblxuICBhdHRhY2goX3RhcmdldDogc2VjLklTZWNyZXRBdHRhY2htZW50VGFyZ2V0KTogc2VjLklTZWNyZXQge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBhbGxvd2VkLicpO1xuICB9XG5cbiAgYXBwbHlSZW1vdmFsUG9saWN5KF9wb2xpY3k6IGNkay5SZW1vdmFsUG9saWN5KTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGFsbG93ZWQuJyk7XG4gIH1cblxufVxuIl19
@@ -18,6 +18,7 @@ const constructs = require("constructs");
18
18
  const datadog = require("./datadog");
19
19
  const rio_fargate_service_1 = require("./rio-fargate-service");
20
20
  const spring_1 = require("./spring");
21
+ const constants_1 = require("../constants");
21
22
  class RioFargateServiceBlueGreenAlpha extends constructs.Construct {
22
23
  constructor(scope, id, props) {
23
24
  super(scope, id);
@@ -235,7 +236,7 @@ class RioFargateServiceBlueGreenAlpha extends constructs.Construct {
235
236
  exclude: ['*.js', '*.d.ts'],
236
237
  }),
237
238
  handler: 'create-deployment-on-create.handler',
238
- runtime: lambda.Runtime.NODEJS_20_X,
239
+ runtime: constants_1.DEFAULT_NODE_RUNTIME,
239
240
  architecture: lambda.Architecture.ARM_64,
240
241
  timeout: cdk.Duration.minutes(5),
241
242
  logGroup: new logs.LogGroup(this, 'CreateDeploymentLambdaLogGroup', {
@@ -274,7 +275,7 @@ class RioFargateServiceBlueGreenAlpha extends constructs.Construct {
274
275
  exclude: ['*.js', '*.d.ts'],
275
276
  }),
276
277
  handler: 'create-deployment-is-complete.handler',
277
- runtime: lambda.Runtime.NODEJS_20_X,
278
+ runtime: constants_1.DEFAULT_NODE_RUNTIME,
278
279
  architecture: lambda.Architecture.ARM_64,
279
280
  timeout: cdk.Duration.minutes(5),
280
281
  logGroup: new logs.LogGroup(this, 'IsCompleteDeploymentLambdaLogGroup', {
@@ -300,7 +301,7 @@ class RioFargateServiceBlueGreenAlpha extends constructs.Construct {
300
301
  // entry: './src/fargate/codedeploy-custom-resources/run-monitoring-test-suite-runner.ts',
301
302
  // handler: 'handler',
302
303
  // timeout: cdk.Duration.minutes(5),
303
- // runtime: lambda.Runtime.NODEJS_20_X,
304
+ // runtime: DEFAULT_NODE_RUNTIME,
304
305
  // environment: {
305
306
  // CAPABILITIES_NAME: blueGreenDeploymentConfig.capabilityNames.join(','),
306
307
  // SUBNETS: vpc.selectSubnets({ subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS }).subnetIds.join(','),
@@ -311,7 +312,7 @@ class RioFargateServiceBlueGreenAlpha extends constructs.Construct {
311
312
  exclude: ['*.js', '*.d.ts'],
312
313
  }),
313
314
  handler: 'run-monitoring-test-suite-runner.handler',
314
- runtime: lambda.Runtime.NODEJS_20_X,
315
+ runtime: constants_1.DEFAULT_NODE_RUNTIME,
315
316
  architecture: lambda.Architecture.ARM_64,
316
317
  timeout: cdk.Duration.minutes(5),
317
318
  logGroup: new logs.LogGroup(this, 'RunMonitoringTestSuiteRunnerLambdarLogGroup', {
@@ -412,4 +413,4 @@ class ClusterVpcValidator {
412
413
  return result;
413
414
  }
414
415
  }
415
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlvLWZhcmdhdGUtc2VydmljZS1ibHVlLWdyZWVuLWFscGhhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZhcmdhdGUvcmlvLWZhcmdhdGUtc2VydmljZS1ibHVlLWdyZWVuLWFscGhhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQTRCO0FBQzVCLG1DQUFtQztBQUNuQyx5REFBeUQ7QUFDekQsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQyxnRUFBZ0U7QUFDaEUsMkNBQTJDO0FBQzNDLGlEQUFpRDtBQUVqRCw2Q0FBNkM7QUFDN0MsMkNBQTJDO0FBQzNDLG1EQUFtRDtBQUNuRCx5Q0FBeUM7QUFDekMscUNBQXFDO0FBQ3JDLCtEQUE0SztBQUM1SyxxQ0FBa0M7QUFnRmxDLE1BQWEsK0JBQ1gsU0FBUSxVQUFVLENBQUMsU0FBUztJQWtENUIsWUFDRSxLQUEyQixFQUMzQixFQUFVLEVBQ1YsS0FBMkM7UUFFM0MsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQWxDRix3Q0FBbUMsR0FBYSxFQUFFLENBQUM7UUFDbkQsZ0NBQTJCLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLDZDQUF3QyxHQUFHLEdBQUcsQ0FBQztRQUMvQyxzQ0FBaUMsR0FBRyxJQUFJLENBQUM7UUFDekMscUNBQWdDLEdBQy9DLHdDQUFrQixDQUFDLGdCQUFnQixDQUFDO1FBQ3JCLDZDQUF3QyxHQUN2RCx3Q0FBa0IsQ0FBQyxJQUFJLENBQUM7UUFDVCxpQ0FBNEIsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RCx1QkFBa0IsR0FBRyxTQUFTLENBQUM7UUFDL0IsZ0NBQTJCLEdBQUcsUUFBUSxDQUFDO1FBRXZDLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLGdDQUEyQixHQUFHLEVBQUUsQ0FBQztRQUVqQywrQkFBMEIsR0FDekMsbUVBQW1FLENBQUM7UUFDckQsOEJB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QUksQ0FBQyxFQUFFLElBQUksQ0FDL0gsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgY29kZWRlcGxveSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWRlcGxveSc7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgKiBhcyBlY3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcyc7XG5pbXBvcnQgKiBhcyBlbGJ2MiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBub2RlanNsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanMnO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgKiBhcyBzc20gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNzbSc7XG5pbXBvcnQgKiBhcyBjciBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzJztcbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBkYXRhZG9nIGZyb20gJy4vZGF0YWRvZyc7XG5pbXBvcnQgeyBGcmFtZXdvcmssIENvbnRhaW5lckRlZmluaXRpb25PcHRpb25zLCBGYXJnYXRlVGFza0RlZmluaXRpb25Qcm9wcywgTG9hZEJhbGFuY2VyT3B0aW9ucywgRGF0YWRvZ0ludGVncmF0aW9uUHJvcHMsIERhdGFEb2dMb2dnaW5nTW9kZSB9IGZyb20gJy4vcmlvLWZhcmdhdGUtc2VydmljZSc7XG5pbXBvcnQgeyBTcHJpbmcgfSBmcm9tICcuL3NwcmluZyc7XG5cbi8qKlxuICogRmFyZ2F0ZSBUYXNrIERlZmluaXRpb24gUHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSaW9GYXJnYXRlU2VydmljZUJsdWVHcmVlbkFscGhhUHJvcHMge1xuICAvKipcbiAgICogVGhlIHN0YWdlIG9mIHRoZSBzZXJ2aWNlLCBlLmcuICdwcm9kJy5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBOYW1lIG9mIHRoZSBzZXJ2aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIHNlcnZpY2UsIGUuZy4gdGhlIGdpdCBoYXNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIGNvbW1pdC5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGZyYW1ld29ya3MgaW4gdXNlcy5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSAtIE5vIGZyYW1ld29ya3MuXG4gICAqL1xuICByZWFkb25seSBmcmFtZXdvcmtzPzogRnJhbWV3b3JrW107XG5cbiAgLyoqXG4gICAqIFRoZSBWUEMgb2YgdGhlIHNlcnZpY2UncyBlY3MuQ2x1c3RlciBpZiBubyBjbHVzdGVyIGlzIGV4cGxpY2l0bHkgcGFzc2VkIGFzIHByb3AuXG4gICAqL1xuICByZWFkb25seSB2cGM6IGVjMi5JVnBjO1xuXG4gIC8qKlxuICAgKiBUaGUgRmFyZ2F0ZSBjbHVzdGVyIHRvIHJ1biB0aGUgc2VydmljZSBpbi5cbiAgICogSWYgbm90IG51bGwsIHRoZSBjbHVzdGVyLnZwYyBNVVNUIG1hdGNoIHRoZSB2cGMgcHJvdmlkZWQgYXMgZGlyZWN0IGFyZ3VtZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIC0gQ3JlYXRlIGEgbmV3IEZhcmdhdGUgY2x1c3RlciB3aXRoIGRlZmF1bHQgcHJvcGVydGllc1xuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3Rlcj86IGVjcy5JQ2x1c3RlcjtcblxuICAvKipcbiAgICogQ29udGFpbmVyIGRlZmluaXRpb24gb3B0aW9ucyBsaWtlIGltYWdlLCBjcHUsIG1lbW9yeS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhaW5lckRlZmluaXRpb25PcHRpb246IENvbnRhaW5lckRlZmluaXRpb25PcHRpb25zO1xuXG4gIC8qKlxuICAgKiBGYXJnYXRlIFRhc2sgRGVmaW5pdGlvbiBQcm9wZXJ0aWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgZmFyZ2F0ZU9wdGlvbnM6IEZhcmdhdGVUYXNrRGVmaW5pdGlvblByb3BzO1xuXG4gIC8qKlxuICAgKiBMb2FkYmFsYW5jZXIgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGxvYWRCYWxhbmNlck9wdGlvbnM/OiBMb2FkQmFsYW5jZXJPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBEYXRhZG9nIGludGVncmF0aW9uIHByb3BlcnRpZXNcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFkb2dPcHRpb25zPzogRGF0YWRvZ0ludGVncmF0aW9uUHJvcHM7XG5cbiAgLyoqXG4gICAqIEJsdWUgZ3JlZW4gZGVwbG95bWVudCBjb25maWd1cmF0aW9uXG4gICAqL1xuICByZWFkb25seSBibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnPzogQmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCbHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnIHtcbiAgLyoqXG4gICAgICogVGhlIHRhcmdldCBncm91cCB0byBhc3NvY2lhdGUgd2l0aCB0aGUgcmVwbGFjZW1lbnQgdGFzayBzZXQgZm9yIHRlc3RpbmcgYmVmb3JlIHByb21vdGluZyB0cmFmZmljIHRvIHByb2R1Y3Rpb24uXG4gICAgICogQGRlZmF1bHQgLSBObyB0YXJnZXQgZ3JvdXAuXG4gICAgICovXG4gIHJlYWRvbmx5IHRlc3RMaXN0ZW5lcj86IGVsYnYyLklBcHBsaWNhdGlvbkxpc3RlbmVyO1xuXG4gIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIGNhcGFiaWxpdGllcyB0byBydW4gd2l0aCB0aGUgbW9uaXRvcmluZyB0ZXN0IHN1aXRlIHJ1bm5lciB0ZXN0aW5nXG4gICAgICovXG4gIHJlYWRvbmx5IGNhcGFiaWxpdHlOYW1lcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgUmlvRmFyZ2F0ZVNlcnZpY2VCbHVlR3JlZW5BbHBoYVxuICBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0XG4gIGltcGxlbWVudHMgZWMyLklDb25uZWN0YWJsZSB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEREX0VOVl9ERU5ZX0xJU1QgPSBbXG4gICAgJ0REX0VOVicsXG4gICAgJ0REX1RBR1MnLFxuICAgICdERF9TRVJWSUNFJyxcbiAgICAnRERfVkVSU0lPTicsXG4gICAgJ0REX0xPR1NfSU5KRUNUSU9OJyxcbiAgXTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERF9UQUdfREVOWV9MSVNUID0gW1xuICAgICdlbnYnLFxuICAgICdzZXJ2aWNlJyxcbiAgICAndmVyc2lvbicsXG4gICAgJ2FjY291bnRfaWQnLFxuICAgICdhY2NvdW50X25hbWUnLFxuICAgICdyZWdpb24nLFxuICAgICd0ZWFtJyxcbiAgICAndGVhbV9pZGVudGlmaWVyJyxcbiAgXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfQVBNX0dFVF9FTkRQT0lOVFNfVE9fSUdOT1JFOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQURPR19TSURFQ0FSX0NQVSA9IDY0O1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQURPR19TSURFQ0FSX01FTU9SWV9MSU1JVF9NSUIgPSAxMjg7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfRVNTRU5USUFMID0gdHJ1ZTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0xPR0dJTkdfTU9ERV9GT1JfU0VSVklDRSA9XG4gICAgRGF0YURvZ0xvZ2dpbmdNb2RlLkZPUldBUkRFUl9MQU1CREE7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9MT0dHSU5HX01PREVfRk9SX0RBVEFET0dfU0lERUNBUiA9XG4gICAgRGF0YURvZ0xvZ2dpbmdNb2RlLk5PTkU7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9ERVJFR0lTVFJBVElPTl9ERUxBWSA9IGNkay5EdXJhdGlvbi5zZWNvbmRzKDUpO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfU0xPV19TVEFSVCA9IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RBVEFET0dfU0lERUNBUl9UQUcgPSAnbGF0ZXN0JztcblxuICBwcml2YXRlIHJlYWRvbmx5IExPR19ST1VURVJfQ1BVID0gNjQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgTE9HX1JPVVRFUl9NRU1PUllfTElNSVRfTUlCID0gNjQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBGSVJFTEVOU19DT05GSUdfQlVDS0VUX0FSTiA9XG4gICAgJ2Fybjphd3M6czM6Ojo1NzcxNDY4OTc3ODUtZXUtd2VzdC0xLWZpcmVsZW5zLWNvbmZpZ3VyYXRpb24tYnVja2V0JztcbiAgcHJpdmF0ZSByZWFkb25seSBGSVJFTEVOU19DT05GSUdfRklMRV9QQVRIID0gJy9wYXJzZS1qc29uLmNvbmYnO1xuXG4gIHJlYWRvbmx5IHNlcnZpY2VDb250YWluZXJEZWZpbml0aW9uOiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbjtcbiAgcmVhZG9ubHkgZGF0YWRvZ1NpZGVDYXJDb250YWluZXJEZWZpbml0aW9uOiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbjtcbiAgcmVhZG9ubHkgbG9nUm91dGVyQ29udGFpbmVyRGVmaW5pdGlvbj86IGVjcy5Db250YWluZXJEZWZpbml0aW9uO1xuICByZWFkb25seSB0YXNrRGVmaW5pdGlvbjogZWNzLkZhcmdhdGVUYXNrRGVmaW5pdGlvbjtcblxuICByZWFkb25seSBjb25uZWN0aW9uczogZWMyLkNvbm5lY3Rpb25zO1xuICByZWFkb25seSBzZXJ2aWNlOiBlY3MuRmFyZ2F0ZVNlcnZpY2U7XG4gIHJlYWRvbmx5IGJsdWVUYXJnZXRHcm91cDogZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cCB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgZ3JlZW5UYXJnZXRHcm91cDogZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cCB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogUmlvRmFyZ2F0ZVNlcnZpY2VCbHVlR3JlZW5BbHBoYVByb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3Qge1xuICAgICAgbG9hZEJhbGFuY2VyT3B0aW9ucyxcbiAgICAgIHZwYyxcbiAgICAgIGNsdXN0ZXIsXG4gICAgICBmYXJnYXRlT3B0aW9ucyxcbiAgICAgIGRhdGFkb2dPcHRpb25zLFxuICAgICAgc2VydmljZU5hbWUsXG4gICAgICBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uLFxuICAgICAgc3RhZ2UsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgZnJhbWV3b3JrcyxcbiAgICAgIGJsdWVHcmVlbkRlcGxveW1lbnRDb25maWcsXG4gICAgfSA9IHByb3BzO1xuXG4gICAgdGhpcy5ub2RlLmFkZFZhbGlkYXRpb24oXG4gICAgICBuZXcgRGVueUxpc3RlZEtleVZhbGlkYXRvcihcbiAgICAgICAgUmlvRmFyZ2F0ZVNlcnZpY2VCbHVlR3JlZW5BbHBoYS5ERF9FTlZfREVOWV9MSVNULFxuICAgICAgICBwcm9wcy5jb250YWluZXJEZWZpbml0aW9uT3B0aW9uLmVudmlyb25tZW50LFxuICAgICAgICAoaXQpID0+XG4gICAgICAgICAgYEVudmlyb25tZW50ICR7aXR9IGlzIG5vdCBhbGxvd2VkIHRvIGJlIHNldC4gVGhpcyB2YWx1ZSB3aWxsIGJlIGluZmVycmVkIGZyb20gdGhlIGFjY291bnQgb3Igb3RoZXIgcHJvcGVydGllcy5gLFxuICAgICAgKSxcbiAgICApO1xuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKFxuICAgICAgbmV3IERlbnlMaXN0ZWRLZXlWYWxpZGF0b3IoXG4gICAgICAgIFJpb0ZhcmdhdGVTZXJ2aWNlQmx1ZUdyZWVuQWxwaGEuRERfVEFHX0RFTllfTElTVCxcbiAgICAgICAgcHJvcHMuZGF0YWRvZ09wdGlvbnM/LmFkZGl0aW9uYWxUYWdzLFxuICAgICAgICAoaXQpID0+XG4gICAgICAgICAgYFRhZyAke2l0fSBpcyBub3QgYWxsb3dlZCB0byBiZSBzZXQuIFRoaXMgdmFsdWUgd2lsbCBiZSBpbmZlcnJlZCBmcm9tIHRoZSBhY2NvdW50IG9yIG90aGVyIHByb3BlcnRpZXMuYCxcbiAgICAgICksXG4gICAgKTtcblxuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKG5ldyBDbHVzdGVyVnBjVmFsaWRhdG9yKHByb3BzLnZwYywgcHJvcHMuY2x1c3RlcikpO1xuXG4gICAgY29uc3QgZmFyZ2F0ZUNsdXN0ZXIgPVxuICAgICAgY2x1c3RlciA/P1xuICAgICAgbmV3IGVjcy5DbHVzdGVyKHRoaXMsICdDbHVzdGVyJywge1xuICAgICAgICB2cGM6IHZwYyxcbiAgICAgIH0pO1xuICAgIHRoaXMudGFza0RlZmluaXRpb24gPSBuZXcgZWNzLkZhcmdhdGVUYXNrRGVmaW5pdGlvbihcbiAgICAgIHRoaXMsXG4gICAgICAnVGFza0RlZmluaXRpb24nLFxuICAgICAge1xuICAgICAgICBjcHU6IGZhcmdhdGVPcHRpb25zLmNwdSxcbiAgICAgICAgbWVtb3J5TGltaXRNaUI6IGZhcmdhdGVPcHRpb25zLm1lbW9yeUxpbWl0TWlCLFxuICAgICAgICBydW50aW1lUGxhdGZvcm06IHtcbiAgICAgICAgICBjcHVBcmNoaXRlY3R1cmU6XG4gICAgICAgICAgICBmYXJnYXRlT3B0aW9ucy5ydW50aW1lUGxhdGZvcm0/LmNwdUFyY2hpdGVjdHVyZSA/P1xuICAgICAgICAgICAgZWNzLkNwdUFyY2hpdGVjdHVyZS5YODZfNjQsXG4gICAgICAgICAgb3BlcmF0aW5nU3lzdGVtRmFtaWx5OlxuICAgICAgICAgICAgZmFyZ2F0ZU9wdGlvbnMucnVudGltZVBsYXRmb3JtPy5vcGVyYXRpbmdTeXN0ZW1GYW1pbHkgPz9cbiAgICAgICAgICAgIGVjcy5PcGVyYXRpbmdTeXN0ZW1GYW1pbHkuTElOVVgsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICk7XG4gICAgY29uc3QgYWNjb3VudE5hbWUgPSBzc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKFxuICAgICAgdGhpcyxcbiAgICAgICdBY2NvdW50TmFtZScsXG4gICAgICAnL2NvbmZpZy9hY2NvdW50L25hbWUnLFxuICAgICkuc3RyaW5nVmFsdWU7XG4gICAgY29uc3QgdGVhbU5hbWUgPSBzc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKFxuICAgICAgdGhpcyxcbiAgICAgICdUZWFtTmFtZScsXG4gICAgICAnL2NvbmZpZy90ZWFtL25hbWUnLFxuICAgICkuc3RyaW5nVmFsdWU7XG4gICAgY29uc3QgdGVhbUlkZW50aWZpZXIgPSBzc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKFxuICAgICAgdGhpcyxcbiAgICAgICdUZWFtSWRlbnRpZmllcicsXG4gICAgICAnL2NvbmZpZy90ZWFtL2lkZW50aWZpZXInLFxuICAgICkuc3RyaW5nVmFsdWU7XG5cbiAgICBjb25zdCBkYXRhZG9nU2l0ZSA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUoXG4gICAgICB0aGlzLFxuICAgICAgJ0RhdGFkb2dTaXRlJyxcbiAgICAgICcvcmlvL2NvbmZpZy9kYXRhZG9nLWludGVncmF0aW9uL3NpdGUnLFxuICAgICkuc3RyaW5nVmFsdWU7XG4gICAgY29uc3QgZGF0YWRvZ0FwaUtleVBhcmFtZXRlciA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUoXG4gICAgICB0aGlzLFxuICAgICAgJ0RhdGFkb2dBcGlLZXknLFxuICAgICAgJy9yaW8vY29uZmlnL2RhdGFkb2ctaW50ZWdyYXRpb24vYXBpLWtleScsXG4gICAgKTtcblxuICAgIGNvbnN0IGRhdGFkb2dTaWRlY2FyQ3B1ID1cbiAgICAgIGRhdGFkb2dPcHRpb25zPy5jcHUgPz8gdGhpcy5ERUZBVUxUX0RBVEFET0dfU0lERUNBUl9DUFU7XG4gICAgY29uc3QgZGF0YWRvZ1NpZGVjYXJNZW1vcnlNaUIgPVxuICAgICAgZGF0YWRvZ09wdGlvbnM/Lm1lbW9yeUxpbWl0TWlCID8/XG4gICAgICB0aGlzLkRFRkFVTFRfREFUQURPR19TSURFQ0FSX01FTU9SWV9MSU1JVF9NSUI7XG4gICAgY29uc3QgZGF0YWRvZ1NpZGVjYXJFc3NlbnRpYWwgPVxuICAgICAgZGF0YWRvZ09wdGlvbnM/LmRhdGFkb2dTaWRlY2FyRXNzZW50aWFsID8/XG4gICAgICB0aGlzLkRFRkFVTFRfREFUQURPR19TSURFQ0FSX0VTU0VOVElBTDtcblxuICAgIGNvbnN0IGxvZ2dpbmdNb2RlRm9yU2VydmljZSA9XG4gICAgICBkYXRhZG9nT3B0aW9ucz8ubG9nZ2luZ01vZGVGb3JTZXJ2aWNlID8/XG4gICAgICB0aGlzLkRFRkFVTFRfTE9HR0lOR19NT0RFX0ZPUl9TRVJWSUNFO1xuICAgIGNvbnN0IGxvZ2dpbmdNb2RlRm9yRGF0YWRvZ0FnZW50ID1cbiAgICAgIGRhdGFkb2dPcHRpb25zPy5sb2dnaW5nTW9kZUZvckRhdGFkb2dBZ2VudCA/P1xuICAgICAgdGhpcy5ERUZBVUxUX0xPR0dJTkdfTU9ERV9GT1JfREFUQURPR19TSURFQ0FSO1xuICAgIGNvbnN0IGZpcmVMZW5zTG9nUm91dGVyUmVxdWlyZWQgPVxuICAgICAgbG9nZ2luZ01vZGVGb3JTZXJ2aWNlID09PSBEYXRhRG9nTG9nZ2luZ01vZGUuQVdTX0ZJUkVfTEVOUyB8fFxuICAgICAgbG9nZ2luZ01vZGVGb3JEYXRhZG9nQWdlbnQgPT09IERhdGFEb2dMb2dnaW5nTW9kZS5BV1NfRklSRV9MRU5TO1xuXG4gICAgbGV0IHNlcnZpY2VDb250YWluZXJDcHVVbml0cztcbiAgICBsZXQgc2VydmljZUNvbnRhaW5lck1lbW9yeUxpbWl0TWlCO1xuXG4gICAgaWYgKGZpcmVMZW5zTG9nUm91dGVyUmVxdWlyZWQpIHtcbiAgICAgIHNlcnZpY2VDb250YWluZXJDcHVVbml0cyA9XG4gICAgICAgIGZhcmdhdGVPcHRpb25zLmNwdSAtIGRhdGFkb2dTaWRlY2FyQ3B1IC0gdGhpcy5MT0dfUk9VVEVSX0NQVTtcbiAgICAgIHNlcnZpY2VDb250YWluZXJNZW1vcnlMaW1pdE1pQiA9XG4gICAgICAgIGZhcmdhdGVPcHRpb25zLm1lbW9yeUxpbWl0TWlCIC1cbiAgICAgICAgZGF0YWRvZ1NpZGVjYXJNZW1vcnlNaUIgLVxuICAgICAgICB0aGlzLkxPR19ST1VURVJfTUVNT1JZX0xJTUlUX01JQjtcbiAgICAgIGRhdGFkb2cuYWRkRmlyZWxlbnNDb25maWdVcGxvYWRGcm9tUzNQZXJtaXNzaW9ucyh7XG4gICAgICAgIHRhc2tEZWZpbml0aW9uOiB0aGlzLnRhc2tEZWZpbml0aW9uLFxuICAgICAgICBmaXJlbGVuc0NvbmZpZ0J1Y2tldEFybjogdGhpcy5GSVJFTEVOU19DT05GSUdfQlVDS0VUX0FSTixcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXJ2aWNlQ29udGFpbmVyQ3B1VW5pdHMgPSBmYXJnYXRlT3B0aW9ucy5jcHUgLSBkYXRhZG9nU2lkZWNhckNwdTtcbiAgICAgIHNlcnZpY2VDb250YWluZXJNZW1vcnlMaW1pdE1pQiA9XG4gICAgICAgIGZhcmdhdGVPcHRpb25zLm1lbW9yeUxpbWl0TWlCIC0gZGF0YWRvZ1NpZGVjYXJNZW1vcnlNaUI7XG4gICAgfVxuICAgIHRoaXMuc2VydmljZUNvbnRhaW5lckRlZmluaXRpb24gPSB0aGlzLnRhc2tEZWZpbml0aW9uLmFkZENvbnRhaW5lcihcbiAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAge1xuICAgICAgICBpbWFnZTogY29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbi5pbWFnZSxcbiAgICAgICAgY3B1OiBzZXJ2aWNlQ29udGFpbmVyQ3B1VW5pdHMsXG4gICAgICAgIG1lbW9yeUxpbWl0TWlCOiBzZXJ2aWNlQ29udGFpbmVyTWVtb3J5TGltaXRNaUIsXG4gICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgLi4uZGF0YWRvZy5nZXRGYXJnYXRlQ29udGFpbmVyRW52aXJvbm1lbnRWYXJpYWJsZXMoe1xuICAgICAgICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICAgICAgICBzdGFnZSxcbiAgICAgICAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgICAgICAgdmVyc2lvbixcbiAgICAgICAgICAgIGFjY291bnROYW1lLFxuICAgICAgICAgICAgdGVhbU5hbWUsXG4gICAgICAgICAgICB0ZWFtSWRlbnRpZmllcixcbiAgICAgICAgICAgIGFkZGl0aW9uYWxUYWdzOiBkYXRhZG9nT3B0aW9ucz8uYWRkaXRpb25hbFRhZ3MsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgLi4uY29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbi5lbnZpcm9ubWVudCxcbiAgICAgICAgfSxcbiAgICAgICAgZG9ja2VyTGFiZWxzOiB7XG4gICAgICAgICAgLi4uZGF0YWRvZy5nZXRGYXJnYXRlRG9ja2VyTGFiZWxzKHsgc3RhZ2UsIHNlcnZpY2VOYW1lLCB2ZXJzaW9uIH0pLFxuICAgICAgICB9LFxuICAgICAgICBoZWFsdGhDaGVjazogY29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbi5oZWFsdGhDaGVjayxcbiAgICAgICAgbG9nZ2luZzogZGF0YWRvZy5zZXR1cExvZ2dpbmcoe1xuICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgIGFjY291bnROYW1lLFxuICAgICAgICAgIHRlYW1OYW1lLFxuICAgICAgICAgIHRlYW1JZGVudGlmaWVyLFxuICAgICAgICAgIHN0YWdlLFxuICAgICAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgICAgIHZlcnNpb24sXG4gICAgICAgICAgZGF0YWRvZ0FwaUtleVBhcmFtZXRlcixcbiAgICAgICAgICBkYXRhZG9nTG9nZ2luZ01vZGU6IGxvZ2dpbmdNb2RlRm9yU2VydmljZSxcbiAgICAgICAgICBkYXRhZG9nU2l0ZSxcbiAgICAgICAgICBjb250YWluZXJUeXBlOiAnc2VydmljZScsXG4gICAgICAgICAgYWRkaXRpb25hbFRhZ3M6IGRhdGFkb2dPcHRpb25zPy5hZGRpdGlvbmFsVGFncyxcbiAgICAgICAgfSksXG4gICAgICAgIHNlY3JldHM6IGNvbnRhaW5lckRlZmluaXRpb25PcHRpb24uc2VjcmV0cyxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGlmIChmcmFtZXdvcmtzPy5pbmNsdWRlcyhGcmFtZXdvcmsuU1BSSU5HKSkge1xuICAgICAgU3ByaW5nLmFsbG93UGFyYW1ldGVyU3RvcmVBY2Nlc3NGb3JTcHJpbmdDbG91ZEF3cyhcbiAgICAgICAgdGhpcyxcbiAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgIHRoaXMudGFza0RlZmluaXRpb24udGFza1JvbGUsXG4gICAgICApO1xuICAgICAgU3ByaW5nLmFsbG93U2VjcmV0c01hbmFnZXJBY2Nlc3NGb3JTcHJpbmdDbG91ZEF3cyhcbiAgICAgICAgdGhpcyxcbiAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgIHRoaXMudGFza0RlZmluaXRpb24udGFza1JvbGUsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChmaXJlTGVuc0xvZ1JvdXRlclJlcXVpcmVkKSB7XG4gICAgICB0aGlzLmxvZ1JvdXRlckNvbnRhaW5lckRlZmluaXRpb24gPSBkYXRhZG9nLmFkZEZpcmVMZW5zTG9nUm91dGVyKHtcbiAgICAgICAgdGFza0RlZmluaXRpb246IHRoaXMudGFza0RlZmluaXRpb24sXG4gICAgICAgIGNwdTogdGhpcy5MT0dfUk9VVEVSX0NQVSxcbiAgICAgICAgbWVtb3J5TGltaXRNaUI6IHRoaXMuTE9HX1JPVVRFUl9NRU1PUllfTElNSVRfTUlCLFxuICAgICAgICBmaXJlbGVuc0NvbmZpZ0J1Y2tldEFybjogdGhpcy5GSVJFTEVOU19DT05GSUdfQlVDS0VUX0FSTixcbiAgICAgICAgZmlyZWxlbnNDb25maWdGaWxlUGF0aDogdGhpcy5GSVJFTEVOU19DT05GSUdfRklMRV9QQVRILFxuICAgICAgICBzZXJ2aWNlTmFtZTogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5kYXRhZG9nU2lkZUNhckNvbnRhaW5lckRlZmluaXRpb24gPSBkYXRhZG9nLmFkZERhdGFkb2dTaWRlY2FyKHtcbiAgICAgIHNjb3BlLFxuICAgICAgdGFza0RlZmluaXRpb246IHRoaXMudGFza0RlZmluaXRpb24sXG4gICAgICBhY2NvdW50TmFtZSxcbiAgICAgIHRlYW1OYW1lLFxuICAgICAgdGVhbUlkZW50aWZpZXIsXG4gICAgICBzdGFnZSxcbiAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgdmVyc2lvbixcbiAgICAgIGRhdGFkb2dBcGlLZXlQYXJhbWV0ZXIsXG4gICAgICBkYXRhZG9nU2l0ZSxcbiAgICAgIGRhdGFkb2dMb2dnaW5nTW9kZTogbG9nZ2luZ01vZGVGb3JEYXRhZG9nQWdlbnQsXG4gICAgICBhcG1HZXRSZXNvdXJjZXNUb0lnbm9yZTpcbiAgICAgICAgZGF0YWRvZ09wdGlvbnM/LmFwbUdldEVuZHBvaW50c1RvSWdub3JlID8/XG4gICAgICAgIHRoaXMuREVGQVVMVF9BUE1fR0VUX0VORFBPSU5UU19UT19JR05PUkUsXG4gICAgICBjcHU6IGRhdGFkb2dTaWRlY2FyQ3B1LFxuICAgICAgbWVtb3J5TGltaXRNaUI6IGRhdGFkb2dTaWRlY2FyTWVtb3J5TWlCLFxuICAgICAgZXNzZW50aWFsOiBkYXRhZG9nU2lkZWNhckVzc2VudGlhbCxcbiAgICAgIGVuYWJsZVJlc3RhcnRQb2xpY3k6IHRydWUsXG4gICAgICByZXN0YXJ0SWdub3JlZEV4aXRDb2RlczogWzBdLFxuICAgICAgY29udGFpbmVyVGFnOlxuICAgICAgICBwcm9wcy5kYXRhZG9nT3B0aW9ucz8uZGF0YWRvZ1NpZGVjYXJUYWcgPz9cbiAgICAgICAgdGhpcy5ERUZBVUxUX0RBVEFET0dfU0lERUNBUl9UQUcsIC8vIFRoZXNlIGFyZSBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsXG4gICAgICBhZGRpdGlvbmFsVGFnczogZGF0YWRvZ09wdGlvbnM/LmFkZGl0aW9uYWxUYWdzLFxuICAgIH0pO1xuXG4gICAgZGF0YWRvZy5lbnN1cmVMb2dnaW5nQW5kTW9uaXRvcmluZ0FyZVJlYWR5QmVmb3JlU2VydmljZVN0YXJ0cyh0aGlzKTtcblxuICAgIGNvbnN0IGxvYWRCYWxhbmNlck9wdGlvbnNGb3JGYXJnYXRlU2VydmljZSA9IGxvYWRCYWxhbmNlck9wdGlvbnNcbiAgICAgID8geyBoZWFsdGhDaGVja0dyYWNlUGVyaW9kOiBsb2FkQmFsYW5jZXJPcHRpb25zLmhlYWx0aENoZWNrR3JhY2VQZXJpb2QgfVxuICAgICAgOiB7fTtcblxuICAgIHRoaXMuc2VydmljZSA9IG5ldyBlY3MuRmFyZ2F0ZVNlcnZpY2UodGhpcywgJ1NlcnZpY2UnLCB7XG4gICAgICBjbHVzdGVyOiBmYXJnYXRlQ2x1c3RlcixcbiAgICAgIHRhc2tEZWZpbml0aW9uOiB0aGlzLnRhc2tEZWZpbml0aW9uLFxuICAgICAgbWF4SGVhbHRoeVBlcmNlbnQ6IDIwMCxcbiAgICAgIG1pbkhlYWx0aHlQZXJjZW50OiAxMDAsXG4gICAgICBkZXNpcmVkQ291bnQ6IGZhcmdhdGVPcHRpb25zPy5kZXNpcmVkQ291bnQsXG4gICAgICBkZXBsb3ltZW50Q29udHJvbGxlcjogeyB0eXBlOiBlY3MuRGVwbG95bWVudENvbnRyb2xsZXJUeXBlLkNPREVfREVQTE9ZIH0sXG4gICAgICAuLi5sb2FkQmFsYW5jZXJPcHRpb25zRm9yRmFyZ2F0ZVNlcnZpY2UsXG4gICAgICBwcm9wYWdhdGVUYWdzOiBlY3MuUHJvcGFnYXRlZFRhZ1NvdXJjZS5TRVJWSUNFLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuc2VydmljZS5jb25uZWN0aW9ucztcblxuICAgIGlmIChsb2FkQmFsYW5jZXJPcHRpb25zICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lclBvcnQgPSA0NDM7XG4gICAgICB0aGlzLnNlcnZpY2VDb250YWluZXJEZWZpbml0aW9uLmFkZFBvcnRNYXBwaW5ncyh7XG4gICAgICAgIGNvbnRhaW5lclBvcnQ6IGNvbnRhaW5lclBvcnQsXG4gICAgICAgIHByb3RvY29sOiBlY3MuUHJvdG9jb2wuVENQLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmJsdWVUYXJnZXRHcm91cCA9IG5ldyBlbGJ2Mi5BcHBsaWNhdGlvblRhcmdldEdyb3VwKFxuICAgICAgICB0aGlzLFxuICAgICAgICAnQmx1ZVRhcmdldEdyb3VwJyxcbiAgICAgICAge1xuICAgICAgICAgIHZwYzogdnBjLFxuICAgICAgICAgIHBvcnQ6IGNvbnRhaW5lclBvcnQsXG4gICAgICAgICAgcHJvdG9jb2w6IGVsYnYyLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUFMsXG4gICAgICAgICAgdGFyZ2V0VHlwZTogZWxidjIuVGFyZ2V0VHlwZS5JUCxcbiAgICAgICAgICB0YXJnZXRzOiBbdGhpcy5zZXJ2aWNlXSxcbiAgICAgICAgICBoZWFsdGhDaGVjazogbG9hZEJhbGFuY2VyT3B0aW9ucy5oZWFsdGhDaGVjayxcbiAgICAgICAgICBzbG93U3RhcnQ6XG4gICAgICAgICAgICBwcm9wcy5sb2FkQmFsYW5jZXJPcHRpb25zPy5zbG93U3RhcnQgPz8gdGhpcy5ERUZBVUxUX1NMT1dfU1RBUlQsXG4gICAgICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTpcbiAgICAgICAgICAgIHByb3BzLmxvYWRCYWxhbmNlck9wdGlvbnM/LmRlcmVnaXN0cmF0aW9uRGVsYXkgPz9cbiAgICAgICAgICAgIHRoaXMuREVGQVVMVF9ERVJFR0lTVFJBVElPTl9ERUxBWSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgICB0aGlzLmdyZWVuVGFyZ2V0R3JvdXAgPSBuZXcgZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgJ0dyZWVuVGFyZ2V0R3JvdXAnLFxuICAgICAgICB7XG4gICAgICAgICAgdnBjOiB2cGMsXG4gICAgICAgICAgcG9ydDogY29udGFpbmVyUG9ydCxcbiAgICAgICAgICBwcm90b2NvbDogZWxidjIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQUyxcbiAgICAgICAgICB0YXJnZXRUeXBlOiBlbGJ2Mi5UYXJnZXRUeXBlLklQLFxuICAgICAgICAgIHRhcmdldHM6IFt0aGlzLnNlcnZpY2VdLFxuICAgICAgICAgIGhlYWx0aENoZWNrOiBsb2FkQmFsYW5jZXJPcHRpb25zLmhlYWx0aENoZWNrLFxuICAgICAgICAgIHNsb3dTdGFydDpcbiAgICAgICAgICAgIHByb3BzLmxvYWRCYWxhbmNlck9wdGlvbnM/LnNsb3dTdGFydCA/PyB0aGlzLkRFRkFVTFRfU0xPV19TVEFSVCxcbiAgICAgICAgICBkZXJlZ2lzdHJhdGlvbkRlbGF5OlxuICAgICAgICAgICAgcHJvcHMubG9hZEJhbGFuY2VyT3B0aW9ucz8uZGVyZWdpc3RyYXRpb25EZWxheSA/P1xuICAgICAgICAgICAgdGhpcy5ERUZBVUxUX0RFUkVHSVNUUkFUSU9OX0RFTEFZLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgbG9hZEJhbGFuY2VyT3B0aW9ucy5saXN0ZW5lclJ1bGVzLmZvckVhY2goKHsgcHJpb3JpdHksIGNvbmRpdGlvbnMgfSkgPT4ge1xuICAgICAgICBsb2FkQmFsYW5jZXJPcHRpb25zLmxpc3RlbmVyLmFkZFRhcmdldEdyb3VwcyhgUHJpb3JpdHkke3ByaW9yaXR5fUxpc3RlbmVyUnVsZWAsIHtcbiAgICAgICAgICB0YXJnZXRHcm91cHM6IFt0aGlzLmJsdWVUYXJnZXRHcm91cCBhcyBlbGJ2Mi5BcHBsaWNhdGlvblRhcmdldEdyb3VwXSxcbiAgICAgICAgICBwcmlvcml0eTogcHJpb3JpdHksXG4gICAgICAgICAgY29uZGl0aW9uczogY29uZGl0aW9ucyxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGlmIChibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnPy50ZXN0TGlzdGVuZXIpIHtcbiAgICAgICAgbG9hZEJhbGFuY2VyT3B0aW9ucy5saXN0ZW5lclJ1bGVzLmZvckVhY2goKHsgcHJpb3JpdHksIGNvbmRpdGlvbnMgfSkgPT4ge1xuICAgICAgICAgIGJsdWVHcmVlbkRlcGxveW1lbnRDb25maWcudGVzdExpc3RlbmVyPy5hZGRUYXJnZXRHcm91cHMoYFByaW9yaXR5JHtwcmlvcml0eX1MaXN0ZW5lclJ1bGVgLCB7XG4gICAgICAgICAgICB0YXJnZXRHcm91cHM6IFt0aGlzLmdyZWVuVGFyZ2V0R3JvdXAgYXMgZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cF0sXG4gICAgICAgICAgICBwcmlvcml0eTogcHJpb3JpdHksXG4gICAgICAgICAgICBjb25kaXRpb25zOiBjb25kaXRpb25zLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZWNzRGVwbG95bWVudEdyb3VwID0gbmV3IGNvZGVkZXBsb3kuRWNzRGVwbG95bWVudEdyb3VwKHRoaXMsICdEZXBsb3ltZW50R3JvdXAnLCB7XG4gICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljZSxcbiAgICAgICAgYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZzoge1xuICAgICAgICAgIGJsdWVUYXJnZXRHcm91cDogdGhpcy5ibHVlVGFyZ2V0R3JvdXAsXG4gICAgICAgICAgZ3JlZW5UYXJnZXRHcm91cDogdGhpcy5ncmVlblRhcmdldEdyb3VwLFxuICAgICAgICAgIGxpc3RlbmVyOiBsb2FkQmFsYW5jZXJPcHRpb25zLmxpc3RlbmVyLFxuICAgICAgICAgIHRlc3RMaXN0ZW5lcjogYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZz8udGVzdExpc3RlbmVyLFxuICAgICAgICB9LFxuICAgICAgICBkZXBsb3ltZW50Q29uZmlnOlxuICAgICAgICAgIGNvZGVkZXBsb3kuRWNzRGVwbG95bWVudENvbmZpZy5DQU5BUllfMTBQRVJDRU5UXzVNSU5VVEVTLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGNyZWF0ZURlcGxveW1lbnRMYW1iZGEgPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsICdDcmVhdGVEZXBsb3ltZW50TGFtYmRhJywge1xuICAgICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQoam9pbihfX2Rpcm5hbWUsICdjb2RlZGVwbG95LWN1c3RvbS1yZXNvdXJjZXMnKSwge1xuICAgICAgICAgIGV4Y2x1ZGU6IFsnKi5qcycsICcqLmQudHMnXSxcbiAgICAgICAgfSksXG4gICAgICAgIGhhbmRsZXI6ICdjcmVhdGUtZGVwbG95bWVudC1vbi1jcmVhdGUuaGFuZGxlcicsXG4gICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18yMF9YLFxuICAgICAgICBhcmNoaXRlY3R1cmU6IGxhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgbG9nR3JvdXA6IG5ldyBsb2dzLkxvZ0dyb3VwKHRoaXMsICdDcmVhdGVEZXBsb3ltZW50TGFtYmRhTG9nR3JvdXAnLCB7XG4gICAgICAgICAgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgICAgIH0pLFxuICAgICAgfSk7XG4gICAgICBjcmVhdGVEZXBsb3ltZW50TGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnY29kZWRlcGxveTpHZXRBcHBsaWNhdGlvblJldmlzaW9uJyxcbiAgICAgICAgICAnY29kZWRlcGxveTpSZWdpc3RlckFwcGxpY2F0aW9uUmV2aXNpb24nLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICBlY3NEZXBsb3ltZW50R3JvdXAuYXBwbGljYXRpb24uYXBwbGljYXRpb25Bcm4sXG4gICAgICAgIF0sXG4gICAgICB9KSk7XG4gICAgICBjcmVhdGVEZXBsb3ltZW50TGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnY29kZWRlcGxveTpDcmVhdGVEZXBsb3ltZW50JyxcbiAgICAgICAgICAnY29kZWRlcGxveTpTdG9wRGVwbG95bWVudCcsXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6R2V0RGVwbG95bWVudCcsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGVjc0RlcGxveW1lbnRHcm91cC5kZXBsb3ltZW50R3JvdXBBcm4sXG4gICAgICAgIF0sXG4gICAgICB9KSk7XG4gICAgICBjcmVhdGVEZXBsb3ltZW50TGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnY29kZWRlcGxveTpHZXREZXBsb3ltZW50Q29uZmlnJyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgZWNzRGVwbG95bWVudEdyb3VwLmRlcGxveW1lbnRDb25maWcuZGVwbG95bWVudENvbmZpZ0FybixcbiAgICAgICAgXSxcbiAgICAgIH0pKTtcblxuICAgICAgY29uc3QgaXNDb21wbGV0ZURlcGxveW1lbnRMYW1iZGEgPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsICdJc0NvbXBsZXRlRGVwbG95bWVudExhbWJkYScsIHtcbiAgICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KGpvaW4oX19kaXJuYW1lLCAnY29kZWRlcGxveS1jdXN0b20tcmVzb3VyY2VzJyksIHtcbiAgICAgICAgICBleGNsdWRlOiBbJyouanMnLCAnKi5kLnRzJ10sXG4gICAgICAgIH0pLFxuICAgICAgICBoYW5kbGVyOiAnY3JlYXRlLWRlcGxveW1lbnQtaXMtY29tcGxldGUuaGFuZGxlcicsXG4gICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18yMF9YLFxuICAgICAgICBhcmNoaXRlY3R1cmU6IGxhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgbG9nR3JvdXA6IG5ldyBsb2dzLkxvZ0dyb3VwKHRoaXMsICdJc0NvbXBsZXRlRGVwbG95bWVudExhbWJkYUxvZ0dyb3VwJywge1xuICAgICAgICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9XRUVLLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgICAgaXNDb21wbGV0ZURlcGxveW1lbnRMYW1iZGEuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICdjb2RlZGVwbG95OkdldERlcGxveW1lbnQnLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICBlY3NEZXBsb3ltZW50R3JvdXAuZGVwbG95bWVudEdyb3VwQXJuLFxuICAgICAgICBdLFxuICAgICAgfSkpO1xuICAgICAgY29uc3QgY3JlYXRlRGVwbG95bWVudExhbWJkYVByb3ZpZGVyID0gbmV3IGNyLlByb3ZpZGVyKHRoaXMsICdDcmVhdGVEZXBsb3ltZW50UHJvdmlkZXInLCB7XG4gICAgICAgIG9uRXZlbnRIYW5kbGVyOiBjcmVhdGVEZXBsb3ltZW50TGFtYmRhLFxuICAgICAgICBpc0NvbXBsZXRlSGFuZGxlcjogaXNDb21wbGV0ZURlcGxveW1lbnRMYW1iZGEsXG4gICAgICAgIHRvdGFsVGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNjApLFxuICAgICAgfSk7XG4gICAgICBsZXQgcnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYTogbm9kZWpzbGFtYmRhLk5vZGVqc0Z1bmN0aW9uIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgaWYgKGJsdWVHcmVlbkRlcGxveW1lbnRDb25maWc/LmNhcGFiaWxpdHlOYW1lcykge1xuICAgICAgICAvLyBydW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhID0gbmV3IG5vZGVqc2xhbWJkYS5Ob2RlanNGdW5jdGlvbih0aGlzLCAnUnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYScsIHtcbiAgICAgICAgLy8gICBlbnRyeTogJy4vc3JjL2ZhcmdhdGUvY29kZWRlcGxveS1jdXN0b20tcmVzb3VyY2VzL3J1bi1tb25pdG9yaW5nLXRlc3Qtc3VpdGUtcnVubmVyLnRzJyxcbiAgICAgICAgLy8gICBoYW5kbGVyOiAnaGFuZGxlcicsXG4gICAgICAgIC8vICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgIC8vICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzIwX1gsXG4gICAgICAgIC8vICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgLy8gICAgIENBUEFCSUxJVElFU19OQU1FOiBibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnLmNhcGFiaWxpdHlOYW1lcy5qb2luKCcsJyksXG4gICAgICAgIC8vICAgICBTVUJORVRTOiB2cGMuc2VsZWN0U3VibmV0cyh7IHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MgfSkuc3VibmV0SWRzLmpvaW4oJywnKSxcbiAgICAgICAgLy8gICB9LFxuICAgICAgICAvLyB9KTtcbiAgICAgICAgcnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYSA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgJ1J1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGEnLCB7XG4gICAgICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KGpvaW4oX19kaXJuYW1lLCAnY29kZWRlcGxveS1jdXN0b20tcmVzb3VyY2VzJyksIHtcbiAgICAgICAgICAgIGV4Y2x1ZGU6IFsnKi5qcycsICcqLmQudHMnXSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBoYW5kbGVyOiAncnVuLW1vbml0b3JpbmctdGVzdC1zdWl0ZS1ydW5uZXIuaGFuZGxlcicsXG4gICAgICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzIwX1gsXG4gICAgICAgICAgYXJjaGl0ZWN0dXJlOiBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICBsb2dHcm91cDogbmV3IGxvZ3MuTG9nR3JvdXAodGhpcywgJ1J1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGFyTG9nR3JvdXAnLCB7XG4gICAgICAgICAgICByZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfV0VFSyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgICAgQ0FQQUJJTElUSUVTX05BTUU6IGJsdWVHcmVlbkRlcGxveW1lbnRDb25maWcuY2FwYWJpbGl0eU5hbWVzLmpvaW4oJywnKSxcbiAgICAgICAgICAgIFNVQk5FVFM6IHZwYy5zZWxlY3RTdWJuZXRzKHsgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyB9KS5zdWJuZXRJZHMuam9pbignLCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByZWdpb24gPSBjZGsuU3RhY2sub2Yoc2NvcGUpLnJlZ2lvbjtcbiAgICAgICAgY29uc3QgYWNjb3VudCA9IGNkay5TdGFjay5vZihzY29wZSkuYWNjb3VudDtcbiAgICAgICAgcnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICdlY3M6UnVuVGFzaycsXG4gICAgICAgICAgXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgIGBhcm46YXdzOmVjczoke3JlZ2lvbn06JHthY2NvdW50fTp0YXNrLWRlZmluaXRpb24vbW9uaXRvcmluZy10ZXN0c3VpdGUtcnVubmVyKmAsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSkpO1xuICAgICAgICBydW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgJ2VjczpMaXN0Q0x1c3RlcnMnLFxuICAgICAgICAgICAgJ2VjczpMaXN0VGFza0RlZmluaXRpb25zJyxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgJyonLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pKTtcbiAgICAgICAgcnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFsnaWFtOlBhc3NSb2xlJ10sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbYGFybjphd3M6aWFtOjoke2FjY291bnR9OnJvbGUvbW9uaXRvcmluZy10ZXN0c3VpdGUqYF0sXG4gICAgICAgIH0pKTtcbiAgICAgIH1cblxuICAgICAgbmV3IGNkay5DdXN0b21SZXNvdXJjZSh0aGlzLCAnQ3JlYXRlRGVwbG95bWVudCcsIHtcbiAgICAgICAgc2VydmljZVRva2VuOiBjcmVhdGVEZXBsb3ltZW50TGFtYmRhUHJvdmlkZXIuc2VydmljZVRva2VuLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgQXBwbGljYXRpb25OYW1lOiBlY3NEZXBsb3ltZW50R3JvdXAuYXBwbGljYXRpb24uYXBwbGljYXRpb25OYW1lLFxuICAgICAgICAgIERlcGxveW1lbnRHcm91cE5hbWU6IGVjc0RlcGxveW1lbnRHcm91cC5kZXBsb3ltZW50R3JvdXBOYW1lLFxuICAgICAgICAgIFRhc2tEZWZpbml0aW9uQXJuOiB0aGlzLnRhc2tEZWZpbml0aW9uLnRhc2tEZWZpbml0aW9uQXJuLFxuICAgICAgICAgIENvbnRhaW5lck5hbWU6IHNlcnZpY2VOYW1lLFxuICAgICAgICAgIENvbnRhaW5lclBvcnQ6IGNvbnRhaW5lclBvcnQsXG4gICAgICAgICAgQWZ0ZXJBbGxvd1Rlc3RUcmFmZmljSG9vazogcnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYT8uZnVuY3Rpb25Bcm4sXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBEZW55TGlzdGVkS2V5VmFsaWRhdG9yIGltcGxlbWVudHMgY29uc3RydWN0cy5JVmFsaWRhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVueUxpc3Q6IHN0cmluZ1tdLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGljdDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IHVuZGVmaW5lZCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VHZW5lcmF0b3I6IChrZXlOYW1lOiBzdHJpbmcpID0+IHN0cmluZyxcbiAgKSB7fVxuXG4gIHZhbGlkYXRlKCk6IHN0cmluZ1tdIHtcbiAgICBpZiAoIXRoaXMuZGljdCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgICB0aGlzLmRlbnlMaXN0LmZvckVhY2goKGtleU5hbWUpID0+IHtcbiAgICAgIGlmICh0aGlzLmRpY3QgJiYga2V5TmFtZSBpbiB0aGlzLmRpY3QpIHtcbiAgICAgICAgcmVzdWx0LnB1c2godGhpcy5tZXNzYWdlR2VuZXJhdG9yKGtleU5hbWUpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuY2xhc3MgQ2x1c3RlclZwY1ZhbGlkYXRvciBpbXBsZW1lbnRzIGNvbnN0cnVjdHMuSVZhbGlkYXRpb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZwYzogZWMyLklWcGMsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjbHVzdGVyPzogZWNzLklDbHVzdGVyLFxuICApIHt9XG5cbiAgdmFsaWRhdGUoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGlmICh0aGlzLmNsdXN0ZXIgJiYgdGhpcy5jbHVzdGVyLnZwYy52cGNJZCAhPT0gdGhpcy52cGMudnBjSWQpIHtcbiAgICAgIHJlc3VsdC5wdXNoKFxuICAgICAgICBgVGhlIFZQQyBwcm92aWRlZCBpbiB0aGUgY2x1c3RlciAoJHt0aGlzLmNsdXN0ZXIudnBjLm5vZGUuaWR9KSBNVVNUIG1hdGNoIHRoZSBWUEMgcHJvdmlkZWQgYXMgYXJndW1lbnQgKCR7dGhpcy52cGMubm9kZS5pZH0pLmAsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=
416
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlvLWZhcmdhdGUtc2VydmljZS1ibHVlLWdyZWVuLWFscGhhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZhcmdhdGUvcmlvLWZhcmdhdGUtc2VydmljZS1ibHVlLWdyZWVuLWFscGhhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQTRCO0FBQzVCLG1DQUFtQztBQUNuQyx5REFBeUQ7QUFDekQsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQyxnRUFBZ0U7QUFDaEUsMkNBQTJDO0FBQzNDLGlEQUFpRDtBQUVqRCw2Q0FBNkM7QUFDN0MsMkNBQTJDO0FBQzNDLG1EQUFtRDtBQUNuRCx5Q0FBeUM7QUFDekMscUNBQXFDO0FBQ3JDLCtEQUE0SztBQUM1SyxxQ0FBa0M7QUFDbEMsNENBQW9EO0FBZ0ZwRCxNQUFhLCtCQUNYLFNBQVEsVUFBVSxDQUFDLFNBQVM7SUFrRDVCLFlBQ0UsS0FBMkIsRUFDM0IsRUFBVSxFQUNWLEtBQTJDO1FBRTNDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFsQ0Ysd0NBQW1DLEdBQWEsRUFBRSxDQUFDO1FBQ25ELGdDQUEyQixHQUFHLEVBQUUsQ0FBQztRQUNqQyw2Q0FBd0MsR0FBRyxHQUFHLENBQUM7UUFDL0Msc0NBQWlDLEdBQUcsSUFBSSxDQUFDO1FBQ3pDLHFDQUFnQyxHQUMvQyx3Q0FBa0IsQ0FBQyxnQkFBZ0IsQ0FBQztRQUNyQiw2Q0FBd0MsR0FDdkQsd0NBQWtCLENBQUMsSUFBSSxDQUFDO1FBQ1QsaUNBQTRCLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsdUJBQWtCLEdBQUcsU0FBUyxDQUFDO1FBQy9CLGdDQUEyQixHQUFHLFFBQVEsQ0FBQztRQUV2QyxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixnQ0FBMkIsR0FBRyxFQUFFLENBQUM7UUFFakMsK0JBQTBCLEdBQ3pDLG1FQUFtRSxD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Q0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGNvZGVkZXBsb3kgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZGVkZXBsb3knO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0ICogYXMgZWNzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3MnO1xuaW1wb3J0ICogYXMgZWxidjIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0ICogYXMgbm9kZWpzbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzJztcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgc3NtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zc20nO1xuaW1wb3J0ICogYXMgY3IgZnJvbSAnYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlcyc7XG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgZGF0YWRvZyBmcm9tICcuL2RhdGFkb2cnO1xuaW1wb3J0IHsgRnJhbWV3b3JrLCBDb250YWluZXJEZWZpbml0aW9uT3B0aW9ucywgRmFyZ2F0ZVRhc2tEZWZpbml0aW9uUHJvcHMsIExvYWRCYWxhbmNlck9wdGlvbnMsIERhdGFkb2dJbnRlZ3JhdGlvblByb3BzLCBEYXRhRG9nTG9nZ2luZ01vZGUgfSBmcm9tICcuL3Jpby1mYXJnYXRlLXNlcnZpY2UnO1xuaW1wb3J0IHsgU3ByaW5nIH0gZnJvbSAnLi9zcHJpbmcnO1xuaW1wb3J0IHsgREVGQVVMVF9OT0RFX1JVTlRJTUUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG4vKipcbiAqIEZhcmdhdGUgVGFzayBEZWZpbml0aW9uIFByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmlvRmFyZ2F0ZVNlcnZpY2VCbHVlR3JlZW5BbHBoYVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBzdGFnZSBvZiB0aGUgc2VydmljZSwgZS5nLiAncHJvZCcuXG4gICAqL1xuICByZWFkb25seSBzdGFnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgTmFtZSBvZiB0aGUgc2VydmljZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzZXJ2aWNlLCBlLmcuIHRoZSBnaXQgaGFzaCBvZiB0aGUgY29ycmVzcG9uZGluZyBjb21taXQuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmcmFtZXdvcmtzIGluIHVzZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgLSBObyBmcmFtZXdvcmtzLlxuICAgKi9cbiAgcmVhZG9ubHkgZnJhbWV3b3Jrcz86IEZyYW1ld29ya1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIG9mIHRoZSBzZXJ2aWNlJ3MgZWNzLkNsdXN0ZXIgaWYgbm8gY2x1c3RlciBpcyBleHBsaWNpdGx5IHBhc3NlZCBhcyBwcm9wLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBlYzIuSVZwYztcblxuICAvKipcbiAgICogVGhlIEZhcmdhdGUgY2x1c3RlciB0byBydW4gdGhlIHNlcnZpY2UgaW4uXG4gICAqIElmIG5vdCBudWxsLCB0aGUgY2x1c3Rlci52cGMgTVVTVCBtYXRjaCB0aGUgdnBjIHByb3ZpZGVkIGFzIGRpcmVjdCBhcmd1bWVudC5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSAtIENyZWF0ZSBhIG5ldyBGYXJnYXRlIGNsdXN0ZXIgd2l0aCBkZWZhdWx0IHByb3BlcnRpZXNcbiAgICovXG4gIHJlYWRvbmx5IGNsdXN0ZXI/OiBlY3MuSUNsdXN0ZXI7XG5cbiAgLyoqXG4gICAqIENvbnRhaW5lciBkZWZpbml0aW9uIG9wdGlvbnMgbGlrZSBpbWFnZSwgY3B1LCBtZW1vcnkuXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uOiBDb250YWluZXJEZWZpbml0aW9uT3B0aW9ucztcblxuICAvKipcbiAgICogRmFyZ2F0ZSBUYXNrIERlZmluaXRpb24gUHJvcGVydGllcy5cbiAgICovXG4gIHJlYWRvbmx5IGZhcmdhdGVPcHRpb25zOiBGYXJnYXRlVGFza0RlZmluaXRpb25Qcm9wcztcblxuICAvKipcbiAgICogTG9hZGJhbGFuY2VyIG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXJPcHRpb25zPzogTG9hZEJhbGFuY2VyT3B0aW9ucztcblxuICAvKipcbiAgICogRGF0YWRvZyBpbnRlZ3JhdGlvbiBwcm9wZXJ0aWVzXG4gICAqL1xuICByZWFkb25seSBkYXRhZG9nT3B0aW9ucz86IERhdGFkb2dJbnRlZ3JhdGlvblByb3BzO1xuXG4gIC8qKlxuICAgKiBCbHVlIGdyZWVuIGRlcGxveW1lbnQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZz86IEJsdWVHcmVlbkRlcGxveW1lbnRDb25maWc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZyB7XG4gIC8qKlxuICAgICAqIFRoZSB0YXJnZXQgZ3JvdXAgdG8gYXNzb2NpYXRlIHdpdGggdGhlIHJlcGxhY2VtZW50IHRhc2sgc2V0IGZvciB0ZXN0aW5nIGJlZm9yZSBwcm9tb3RpbmcgdHJhZmZpYyB0byBwcm9kdWN0aW9uLlxuICAgICAqIEBkZWZhdWx0IC0gTm8gdGFyZ2V0IGdyb3VwLlxuICAgICAqL1xuICByZWFkb25seSB0ZXN0TGlzdGVuZXI/OiBlbGJ2Mi5JQXBwbGljYXRpb25MaXN0ZW5lcjtcblxuICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBjYXBhYmlsaXRpZXMgdG8gcnVuIHdpdGggdGhlIG1vbml0b3JpbmcgdGVzdCBzdWl0ZSBydW5uZXIgdGVzdGluZ1xuICAgICAqL1xuICByZWFkb25seSBjYXBhYmlsaXR5TmFtZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFJpb0ZhcmdhdGVTZXJ2aWNlQmx1ZUdyZWVuQWxwaGFcbiAgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdFxuICBpbXBsZW1lbnRzIGVjMi5JQ29ubmVjdGFibGUge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERF9FTlZfREVOWV9MSVNUID0gW1xuICAgICdERF9FTlYnLFxuICAgICdERF9UQUdTJyxcbiAgICAnRERfU0VSVklDRScsXG4gICAgJ0REX1ZFUlNJT04nLFxuICAgICdERF9MT0dTX0lOSkVDVElPTicsXG4gIF07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRERfVEFHX0RFTllfTElTVCA9IFtcbiAgICAnZW52JyxcbiAgICAnc2VydmljZScsXG4gICAgJ3ZlcnNpb24nLFxuICAgICdhY2NvdW50X2lkJyxcbiAgICAnYWNjb3VudF9uYW1lJyxcbiAgICAncmVnaW9uJyxcbiAgICAndGVhbScsXG4gICAgJ3RlYW1faWRlbnRpZmllcicsXG4gIF07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0FQTV9HRVRfRU5EUE9JTlRTX1RPX0lHTk9SRTogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RBVEFET0dfU0lERUNBUl9DUFUgPSA2NDtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RBVEFET0dfU0lERUNBUl9NRU1PUllfTElNSVRfTUlCID0gMTI4O1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQURPR19TSURFQ0FSX0VTU0VOVElBTCA9IHRydWU7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9MT0dHSU5HX01PREVfRk9SX1NFUlZJQ0UgPVxuICAgIERhdGFEb2dMb2dnaW5nTW9kZS5GT1JXQVJERVJfTEFNQkRBO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfTE9HR0lOR19NT0RFX0ZPUl9EQVRBRE9HX1NJREVDQVIgPVxuICAgIERhdGFEb2dMb2dnaW5nTW9kZS5OT05FO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREVSRUdJU1RSQVRJT05fREVMQVkgPSBjZGsuRHVyYXRpb24uc2Vjb25kcyg1KTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX1NMT1dfU1RBUlQgPSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfVEFHID0gJ2xhdGVzdCc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBMT0dfUk9VVEVSX0NQVSA9IDY0O1xuICBwcml2YXRlIHJlYWRvbmx5IExPR19ST1VURVJfTUVNT1JZX0xJTUlUX01JQiA9IDY0O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgRklSRUxFTlNfQ09ORklHX0JVQ0tFVF9BUk4gPVxuICAgICdhcm46YXdzOnMzOjo6NTc3MTQ2ODk3Nzg1LWV1LXdlc3QtMS1maXJlbGVucy1jb25maWd1cmF0aW9uLWJ1Y2tldCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgRklSRUxFTlNfQ09ORklHX0ZJTEVfUEFUSCA9ICcvcGFyc2UtanNvbi5jb25mJztcblxuICByZWFkb25seSBzZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbjogZWNzLkNvbnRhaW5lckRlZmluaXRpb247XG4gIHJlYWRvbmx5IGRhdGFkb2dTaWRlQ2FyQ29udGFpbmVyRGVmaW5pdGlvbjogZWNzLkNvbnRhaW5lckRlZmluaXRpb247XG4gIHJlYWRvbmx5IGxvZ1JvdXRlckNvbnRhaW5lckRlZmluaXRpb24/OiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbjtcbiAgcmVhZG9ubHkgdGFza0RlZmluaXRpb246IGVjcy5GYXJnYXRlVGFza0RlZmluaXRpb247XG5cbiAgcmVhZG9ubHkgY29ubmVjdGlvbnM6IGVjMi5Db25uZWN0aW9ucztcbiAgcmVhZG9ubHkgc2VydmljZTogZWNzLkZhcmdhdGVTZXJ2aWNlO1xuICByZWFkb25seSBibHVlVGFyZ2V0R3JvdXA6IGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGdyZWVuVGFyZ2V0R3JvdXA6IGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IFJpb0ZhcmdhdGVTZXJ2aWNlQmx1ZUdyZWVuQWxwaGFQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHtcbiAgICAgIGxvYWRCYWxhbmNlck9wdGlvbnMsXG4gICAgICB2cGMsXG4gICAgICBjbHVzdGVyLFxuICAgICAgZmFyZ2F0ZU9wdGlvbnMsXG4gICAgICBkYXRhZG9nT3B0aW9ucyxcbiAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgY29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbixcbiAgICAgIHN0YWdlLFxuICAgICAgdmVyc2lvbixcbiAgICAgIGZyYW1ld29ya3MsXG4gICAgICBibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnLFxuICAgIH0gPSBwcm9wcztcblxuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKFxuICAgICAgbmV3IERlbnlMaXN0ZWRLZXlWYWxpZGF0b3IoXG4gICAgICAgIFJpb0ZhcmdhdGVTZXJ2aWNlQmx1ZUdyZWVuQWxwaGEuRERfRU5WX0RFTllfTElTVCxcbiAgICAgICAgcHJvcHMuY29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbi5lbnZpcm9ubWVudCxcbiAgICAgICAgKGl0KSA9PlxuICAgICAgICAgIGBFbnZpcm9ubWVudCAke2l0fSBpcyBub3QgYWxsb3dlZCB0byBiZSBzZXQuIFRoaXMgdmFsdWUgd2lsbCBiZSBpbmZlcnJlZCBmcm9tIHRoZSBhY2NvdW50IG9yIG90aGVyIHByb3BlcnRpZXMuYCxcbiAgICAgICksXG4gICAgKTtcbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbihcbiAgICAgIG5ldyBEZW55TGlzdGVkS2V5VmFsaWRhdG9yKFxuICAgICAgICBSaW9GYXJnYXRlU2VydmljZUJsdWVHcmVlbkFscGhhLkREX1RBR19ERU5ZX0xJU1QsXG4gICAgICAgIHByb3BzLmRhdGFkb2dPcHRpb25zPy5hZGRpdGlvbmFsVGFncyxcbiAgICAgICAgKGl0KSA9PlxuICAgICAgICAgIGBUYWcgJHtpdH0gaXMgbm90IGFsbG93ZWQgdG8gYmUgc2V0LiBUaGlzIHZhbHVlIHdpbGwgYmUgaW5mZXJyZWQgZnJvbSB0aGUgYWNjb3VudCBvciBvdGhlciBwcm9wZXJ0aWVzLmAsXG4gICAgICApLFxuICAgICk7XG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbihuZXcgQ2x1c3RlclZwY1ZhbGlkYXRvcihwcm9wcy52cGMsIHByb3BzLmNsdXN0ZXIpKTtcblxuICAgIGNvbnN0IGZhcmdhdGVDbHVzdGVyID1cbiAgICAgIGNsdXN0ZXIgPz9cbiAgICAgIG5ldyBlY3MuQ2x1c3Rlcih0aGlzLCAnQ2x1c3RlcicsIHtcbiAgICAgICAgdnBjOiB2cGMsXG4gICAgICB9KTtcbiAgICB0aGlzLnRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5GYXJnYXRlVGFza0RlZmluaXRpb24oXG4gICAgICB0aGlzLFxuICAgICAgJ1Rhc2tEZWZpbml0aW9uJyxcbiAgICAgIHtcbiAgICAgICAgY3B1OiBmYXJnYXRlT3B0aW9ucy5jcHUsXG4gICAgICAgIG1lbW9yeUxpbWl0TWlCOiBmYXJnYXRlT3B0aW9ucy5tZW1vcnlMaW1pdE1pQixcbiAgICAgICAgcnVudGltZVBsYXRmb3JtOiB7XG4gICAgICAgICAgY3B1QXJjaGl0ZWN0dXJlOlxuICAgICAgICAgICAgZmFyZ2F0ZU9wdGlvbnMucnVudGltZVBsYXRmb3JtPy5jcHVBcmNoaXRlY3R1cmUgPz9cbiAgICAgICAgICAgIGVjcy5DcHVBcmNoaXRlY3R1cmUuWDg2XzY0LFxuICAgICAgICAgIG9wZXJhdGluZ1N5c3RlbUZhbWlseTpcbiAgICAgICAgICAgIGZhcmdhdGVPcHRpb25zLnJ1bnRpbWVQbGF0Zm9ybT8ub3BlcmF0aW5nU3lzdGVtRmFtaWx5ID8/XG4gICAgICAgICAgICBlY3MuT3BlcmF0aW5nU3lzdGVtRmFtaWx5LkxJTlVYLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICApO1xuICAgIGNvbnN0IGFjY291bnROYW1lID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZShcbiAgICAgIHRoaXMsXG4gICAgICAnQWNjb3VudE5hbWUnLFxuICAgICAgJy9jb25maWcvYWNjb3VudC9uYW1lJyxcbiAgICApLnN0cmluZ1ZhbHVlO1xuICAgIGNvbnN0IHRlYW1OYW1lID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZShcbiAgICAgIHRoaXMsXG4gICAgICAnVGVhbU5hbWUnLFxuICAgICAgJy9jb25maWcvdGVhbS9uYW1lJyxcbiAgICApLnN0cmluZ1ZhbHVlO1xuICAgIGNvbnN0IHRlYW1JZGVudGlmaWVyID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZShcbiAgICAgIHRoaXMsXG4gICAgICAnVGVhbUlkZW50aWZpZXInLFxuICAgICAgJy9jb25maWcvdGVhbS9pZGVudGlmaWVyJyxcbiAgICApLnN0cmluZ1ZhbHVlO1xuXG4gICAgY29uc3QgZGF0YWRvZ1NpdGUgPSBzc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKFxuICAgICAgdGhpcyxcbiAgICAgICdEYXRhZG9nU2l0ZScsXG4gICAgICAnL3Jpby9jb25maWcvZGF0YWRvZy1pbnRlZ3JhdGlvbi9zaXRlJyxcbiAgICApLnN0cmluZ1ZhbHVlO1xuICAgIGNvbnN0IGRhdGFkb2dBcGlLZXlQYXJhbWV0ZXIgPSBzc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKFxuICAgICAgdGhpcyxcbiAgICAgICdEYXRhZG9nQXBpS2V5JyxcbiAgICAgICcvcmlvL2NvbmZpZy9kYXRhZG9nLWludGVncmF0aW9uL2FwaS1rZXknLFxuICAgICk7XG5cbiAgICBjb25zdCBkYXRhZG9nU2lkZWNhckNwdSA9XG4gICAgICBkYXRhZG9nT3B0aW9ucz8uY3B1ID8/IHRoaXMuREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfQ1BVO1xuICAgIGNvbnN0IGRhdGFkb2dTaWRlY2FyTWVtb3J5TWlCID1cbiAgICAgIGRhdGFkb2dPcHRpb25zPy5tZW1vcnlMaW1pdE1pQiA/P1xuICAgICAgdGhpcy5ERUZBVUxUX0RBVEFET0dfU0lERUNBUl9NRU1PUllfTElNSVRfTUlCO1xuICAgIGNvbnN0IGRhdGFkb2dTaWRlY2FyRXNzZW50aWFsID1cbiAgICAgIGRhdGFkb2dPcHRpb25zPy5kYXRhZG9nU2lkZWNhckVzc2VudGlhbCA/P1xuICAgICAgdGhpcy5ERUZBVUxUX0RBVEFET0dfU0lERUNBUl9FU1NFTlRJQUw7XG5cbiAgICBjb25zdCBsb2dnaW5nTW9kZUZvclNlcnZpY2UgPVxuICAgICAgZGF0YWRvZ09wdGlvbnM/LmxvZ2dpbmdNb2RlRm9yU2VydmljZSA/P1xuICAgICAgdGhpcy5ERUZBVUxUX0xPR0dJTkdfTU9ERV9GT1JfU0VSVklDRTtcbiAgICBjb25zdCBsb2dnaW5nTW9kZUZvckRhdGFkb2dBZ2VudCA9XG4gICAgICBkYXRhZG9nT3B0aW9ucz8ubG9nZ2luZ01vZGVGb3JEYXRhZG9nQWdlbnQgPz9cbiAgICAgIHRoaXMuREVGQVVMVF9MT0dHSU5HX01PREVfRk9SX0RBVEFET0dfU0lERUNBUjtcbiAgICBjb25zdCBmaXJlTGVuc0xvZ1JvdXRlclJlcXVpcmVkID1cbiAgICAgIGxvZ2dpbmdNb2RlRm9yU2VydmljZSA9PT0gRGF0YURvZ0xvZ2dpbmdNb2RlLkFXU19GSVJFX0xFTlMgfHxcbiAgICAgIGxvZ2dpbmdNb2RlRm9yRGF0YWRvZ0FnZW50ID09PSBEYXRhRG9nTG9nZ2luZ01vZGUuQVdTX0ZJUkVfTEVOUztcblxuICAgIGxldCBzZXJ2aWNlQ29udGFpbmVyQ3B1VW5pdHM7XG4gICAgbGV0IHNlcnZpY2VDb250YWluZXJNZW1vcnlMaW1pdE1pQjtcblxuICAgIGlmIChmaXJlTGVuc0xvZ1JvdXRlclJlcXVpcmVkKSB7XG4gICAgICBzZXJ2aWNlQ29udGFpbmVyQ3B1VW5pdHMgPVxuICAgICAgICBmYXJnYXRlT3B0aW9ucy5jcHUgLSBkYXRhZG9nU2lkZWNhckNwdSAtIHRoaXMuTE9HX1JPVVRFUl9DUFU7XG4gICAgICBzZXJ2aWNlQ29udGFpbmVyTWVtb3J5TGltaXRNaUIgPVxuICAgICAgICBmYXJnYXRlT3B0aW9ucy5tZW1vcnlMaW1pdE1pQiAtXG4gICAgICAgIGRhdGFkb2dTaWRlY2FyTWVtb3J5TWlCIC1cbiAgICAgICAgdGhpcy5MT0dfUk9VVEVSX01FTU9SWV9MSU1JVF9NSUI7XG4gICAgICBkYXRhZG9nLmFkZEZpcmVsZW5zQ29uZmlnVXBsb2FkRnJvbVMzUGVybWlzc2lvbnMoe1xuICAgICAgICB0YXNrRGVmaW5pdGlvbjogdGhpcy50YXNrRGVmaW5pdGlvbixcbiAgICAgICAgZmlyZWxlbnNDb25maWdCdWNrZXRBcm46IHRoaXMuRklSRUxFTlNfQ09ORklHX0JVQ0tFVF9BUk4sXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VydmljZUNvbnRhaW5lckNwdVVuaXRzID0gZmFyZ2F0ZU9wdGlvbnMuY3B1IC0gZGF0YWRvZ1NpZGVjYXJDcHU7XG4gICAgICBzZXJ2aWNlQ29udGFpbmVyTWVtb3J5TGltaXRNaUIgPVxuICAgICAgICBmYXJnYXRlT3B0aW9ucy5tZW1vcnlMaW1pdE1pQiAtIGRhdGFkb2dTaWRlY2FyTWVtb3J5TWlCO1xuICAgIH1cbiAgICB0aGlzLnNlcnZpY2VDb250YWluZXJEZWZpbml0aW9uID0gdGhpcy50YXNrRGVmaW5pdGlvbi5hZGRDb250YWluZXIoXG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2U6IGNvbnRhaW5lckRlZmluaXRpb25PcHRpb24uaW1hZ2UsXG4gICAgICAgIGNwdTogc2VydmljZUNvbnRhaW5lckNwdVVuaXRzLFxuICAgICAgICBtZW1vcnlMaW1pdE1pQjogc2VydmljZUNvbnRhaW5lck1lbW9yeUxpbWl0TWlCLFxuICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgIC4uLmRhdGFkb2cuZ2V0RmFyZ2F0ZUNvbnRhaW5lckVudmlyb25tZW50VmFyaWFibGVzKHtcbiAgICAgICAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgICAgICAgc3RhZ2UsXG4gICAgICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgICAgIHZlcnNpb24sXG4gICAgICAgICAgICBhY2NvdW50TmFtZSxcbiAgICAgICAgICAgIHRlYW1OYW1lLFxuICAgICAgICAgICAgdGVhbUlkZW50aWZpZXIsXG4gICAgICAgICAgICBhZGRpdGlvbmFsVGFnczogZGF0YWRvZ09wdGlvbnM/LmFkZGl0aW9uYWxUYWdzLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLmNvbnRhaW5lckRlZmluaXRpb25PcHRpb24uZW52aXJvbm1lbnQsXG4gICAgICAgIH0sXG4gICAgICAgIGRvY2tlckxhYmVsczoge1xuICAgICAgICAgIC4uLmRhdGFkb2cuZ2V0RmFyZ2F0ZURvY2tlckxhYmVscyh7IHN0YWdlLCBzZXJ2aWNlTmFtZSwgdmVyc2lvbiB9KSxcbiAgICAgICAgfSxcbiAgICAgICAgaGVhbHRoQ2hlY2s6IGNvbnRhaW5lckRlZmluaXRpb25PcHRpb24uaGVhbHRoQ2hlY2ssXG4gICAgICAgIGxvZ2dpbmc6IGRhdGFkb2cuc2V0dXBMb2dnaW5nKHtcbiAgICAgICAgICBzY29wZSxcbiAgICAgICAgICBhY2NvdW50TmFtZSxcbiAgICAgICAgICB0ZWFtTmFtZSxcbiAgICAgICAgICB0ZWFtSWRlbnRpZmllcixcbiAgICAgICAgICBzdGFnZSxcbiAgICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgICB2ZXJzaW9uLFxuICAgICAgICAgIGRhdGFkb2dBcGlLZXlQYXJhbWV0ZXIsXG4gICAgICAgICAgZGF0YWRvZ0xvZ2dpbmdNb2RlOiBsb2dnaW5nTW9kZUZvclNlcnZpY2UsXG4gICAgICAgICAgZGF0YWRvZ1NpdGUsXG4gICAgICAgICAgY29udGFpbmVyVHlwZTogJ3NlcnZpY2UnLFxuICAgICAgICAgIGFkZGl0aW9uYWxUYWdzOiBkYXRhZG9nT3B0aW9ucz8uYWRkaXRpb25hbFRhZ3MsXG4gICAgICAgIH0pLFxuICAgICAgICBzZWNyZXRzOiBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uLnNlY3JldHMsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBpZiAoZnJhbWV3b3Jrcz8uaW5jbHVkZXMoRnJhbWV3b3JrLlNQUklORykpIHtcbiAgICAgIFNwcmluZy5hbGxvd1BhcmFtZXRlclN0b3JlQWNjZXNzRm9yU3ByaW5nQ2xvdWRBd3MoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgICB0aGlzLnRhc2tEZWZpbml0aW9uLnRhc2tSb2xlLFxuICAgICAgKTtcbiAgICAgIFNwcmluZy5hbGxvd1NlY3JldHNNYW5hZ2VyQWNjZXNzRm9yU3ByaW5nQ2xvdWRBd3MoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgICB0aGlzLnRhc2tEZWZpbml0aW9uLnRhc2tSb2xlLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoZmlyZUxlbnNMb2dSb3V0ZXJSZXF1aXJlZCkge1xuICAgICAgdGhpcy5sb2dSb3V0ZXJDb250YWluZXJEZWZpbml0aW9uID0gZGF0YWRvZy5hZGRGaXJlTGVuc0xvZ1JvdXRlcih7XG4gICAgICAgIHRhc2tEZWZpbml0aW9uOiB0aGlzLnRhc2tEZWZpbml0aW9uLFxuICAgICAgICBjcHU6IHRoaXMuTE9HX1JPVVRFUl9DUFUsXG4gICAgICAgIG1lbW9yeUxpbWl0TWlCOiB0aGlzLkxPR19ST1VURVJfTUVNT1JZX0xJTUlUX01JQixcbiAgICAgICAgZmlyZWxlbnNDb25maWdCdWNrZXRBcm46IHRoaXMuRklSRUxFTlNfQ09ORklHX0JVQ0tFVF9BUk4sXG4gICAgICAgIGZpcmVsZW5zQ29uZmlnRmlsZVBhdGg6IHRoaXMuRklSRUxFTlNfQ09ORklHX0ZJTEVfUEFUSCxcbiAgICAgICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuZGF0YWRvZ1NpZGVDYXJDb250YWluZXJEZWZpbml0aW9uID0gZGF0YWRvZy5hZGREYXRhZG9nU2lkZWNhcih7XG4gICAgICBzY29wZSxcbiAgICAgIHRhc2tEZWZpbml0aW9uOiB0aGlzLnRhc2tEZWZpbml0aW9uLFxuICAgICAgYWNjb3VudE5hbWUsXG4gICAgICB0ZWFtTmFtZSxcbiAgICAgIHRlYW1JZGVudGlmaWVyLFxuICAgICAgc3RhZ2UsXG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICBkYXRhZG9nQXBpS2V5UGFyYW1ldGVyLFxuICAgICAgZGF0YWRvZ1NpdGUsXG4gICAgICBkYXRhZG9nTG9nZ2luZ01vZGU6IGxvZ2dpbmdNb2RlRm9yRGF0YWRvZ0FnZW50LFxuICAgICAgYXBtR2V0UmVzb3VyY2VzVG9JZ25vcmU6XG4gICAgICAgIGRhdGFkb2dPcHRpb25zPy5hcG1HZXRFbmRwb2ludHNUb0lnbm9yZSA/P1xuICAgICAgICB0aGlzLkRFRkFVTFRfQVBNX0dFVF9FTkRQT0lOVFNfVE9fSUdOT1JFLFxuICAgICAgY3B1OiBkYXRhZG9nU2lkZWNhckNwdSxcbiAgICAgIG1lbW9yeUxpbWl0TWlCOiBkYXRhZG9nU2lkZWNhck1lbW9yeU1pQixcbiAgICAgIGVzc2VudGlhbDogZGF0YWRvZ1NpZGVjYXJFc3NlbnRpYWwsXG4gICAgICBlbmFibGVSZXN0YXJ0UG9saWN5OiB0cnVlLFxuICAgICAgcmVzdGFydElnbm9yZWRFeGl0Q29kZXM6IFswXSxcbiAgICAgIGNvbnRhaW5lclRhZzpcbiAgICAgICAgcHJvcHMuZGF0YWRvZ09wdGlvbnM/LmRhdGFkb2dTaWRlY2FyVGFnID8/XG4gICAgICAgIHRoaXMuREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfVEFHLCAvLyBUaGVzZSBhcmUgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLFxuICAgICAgYWRkaXRpb25hbFRhZ3M6IGRhdGFkb2dPcHRpb25zPy5hZGRpdGlvbmFsVGFncyxcbiAgICB9KTtcblxuICAgIGRhdGFkb2cuZW5zdXJlTG9nZ2luZ0FuZE1vbml0b3JpbmdBcmVSZWFkeUJlZm9yZVNlcnZpY2VTdGFydHModGhpcyk7XG5cbiAgICBjb25zdCBsb2FkQmFsYW5jZXJPcHRpb25zRm9yRmFyZ2F0ZVNlcnZpY2UgPSBsb2FkQmFsYW5jZXJPcHRpb25zXG4gICAgICA/IHsgaGVhbHRoQ2hlY2tHcmFjZVBlcmlvZDogbG9hZEJhbGFuY2VyT3B0aW9ucy5oZWFsdGhDaGVja0dyYWNlUGVyaW9kIH1cbiAgICAgIDoge307XG5cbiAgICB0aGlzLnNlcnZpY2UgPSBuZXcgZWNzLkZhcmdhdGVTZXJ2aWNlKHRoaXMsICdTZXJ2aWNlJywge1xuICAgICAgY2x1c3RlcjogZmFyZ2F0ZUNsdXN0ZXIsXG4gICAgICB0YXNrRGVmaW5pdGlvbjogdGhpcy50YXNrRGVmaW5pdGlvbixcbiAgICAgIG1heEhlYWx0aHlQZXJjZW50OiAyMDAsXG4gICAgICBtaW5IZWFsdGh5UGVyY2VudDogMTAwLFxuICAgICAgZGVzaXJlZENvdW50OiBmYXJnYXRlT3B0aW9ucz8uZGVzaXJlZENvdW50LFxuICAgICAgZGVwbG95bWVudENvbnRyb2xsZXI6IHsgdHlwZTogZWNzLkRlcGxveW1lbnRDb250cm9sbGVyVHlwZS5DT0RFX0RFUExPWSB9LFxuICAgICAgLi4ubG9hZEJhbGFuY2VyT3B0aW9uc0ZvckZhcmdhdGVTZXJ2aWNlLFxuICAgICAgcHJvcGFnYXRlVGFnczogZWNzLlByb3BhZ2F0ZWRUYWdTb3VyY2UuU0VSVklDRSxcbiAgICB9KTtcblxuICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLnNlcnZpY2UuY29ubmVjdGlvbnM7XG5cbiAgICBpZiAobG9hZEJhbGFuY2VyT3B0aW9ucyAhPSBudWxsKSB7XG4gICAgICBjb25zdCBjb250YWluZXJQb3J0ID0gNDQzO1xuICAgICAgdGhpcy5zZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbi5hZGRQb3J0TWFwcGluZ3Moe1xuICAgICAgICBjb250YWluZXJQb3J0OiBjb250YWluZXJQb3J0LFxuICAgICAgICBwcm90b2NvbDogZWNzLlByb3RvY29sLlRDUCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5ibHVlVGFyZ2V0R3JvdXAgPSBuZXcgZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgJ0JsdWVUYXJnZXRHcm91cCcsXG4gICAgICAgIHtcbiAgICAgICAgICB2cGM6IHZwYyxcbiAgICAgICAgICBwb3J0OiBjb250YWluZXJQb3J0LFxuICAgICAgICAgIHByb3RvY29sOiBlbGJ2Mi5BcHBsaWNhdGlvblByb3RvY29sLkhUVFBTLFxuICAgICAgICAgIHRhcmdldFR5cGU6IGVsYnYyLlRhcmdldFR5cGUuSVAsXG4gICAgICAgICAgdGFyZ2V0czogW3RoaXMuc2VydmljZV0sXG4gICAgICAgICAgaGVhbHRoQ2hlY2s6IGxvYWRCYWxhbmNlck9wdGlvbnMuaGVhbHRoQ2hlY2ssXG4gICAgICAgICAgc2xvd1N0YXJ0OlxuICAgICAgICAgICAgcHJvcHMubG9hZEJhbGFuY2VyT3B0aW9ucz8uc2xvd1N0YXJ0ID8/IHRoaXMuREVGQVVMVF9TTE9XX1NUQVJULFxuICAgICAgICAgIGRlcmVnaXN0cmF0aW9uRGVsYXk6XG4gICAgICAgICAgICBwcm9wcy5sb2FkQmFsYW5jZXJPcHRpb25zPy5kZXJlZ2lzdHJhdGlvbkRlbGF5ID8/XG4gICAgICAgICAgICB0aGlzLkRFRkFVTFRfREVSRUdJU1RSQVRJT05fREVMQVksXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgdGhpcy5ncmVlblRhcmdldEdyb3VwID0gbmV3IGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAoXG4gICAgICAgIHRoaXMsXG4gICAgICAgICdHcmVlblRhcmdldEdyb3VwJyxcbiAgICAgICAge1xuICAgICAgICAgIHZwYzogdnBjLFxuICAgICAgICAgIHBvcnQ6IGNvbnRhaW5lclBvcnQsXG4gICAgICAgICAgcHJvdG9jb2w6IGVsYnYyLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUFMsXG4gICAgICAgICAgdGFyZ2V0VHlwZTogZWxidjIuVGFyZ2V0VHlwZS5JUCxcbiAgICAgICAgICB0YXJnZXRzOiBbdGhpcy5zZXJ2aWNlXSxcbiAgICAgICAgICBoZWFsdGhDaGVjazogbG9hZEJhbGFuY2VyT3B0aW9ucy5oZWFsdGhDaGVjayxcbiAgICAgICAgICBzbG93U3RhcnQ6XG4gICAgICAgICAgICBwcm9wcy5sb2FkQmFsYW5jZXJPcHRpb25zPy5zbG93U3RhcnQgPz8gdGhpcy5ERUZBVUxUX1NMT1dfU1RBUlQsXG4gICAgICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTpcbiAgICAgICAgICAgIHByb3BzLmxvYWRCYWxhbmNlck9wdGlvbnM/LmRlcmVnaXN0cmF0aW9uRGVsYXkgPz9cbiAgICAgICAgICAgIHRoaXMuREVGQVVMVF9ERVJFR0lTVFJBVElPTl9ERUxBWSxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIGxvYWRCYWxhbmNlck9wdGlvbnMubGlzdGVuZXJSdWxlcy5mb3JFYWNoKCh7IHByaW9yaXR5LCBjb25kaXRpb25zIH0pID0+IHtcbiAgICAgICAgbG9hZEJhbGFuY2VyT3B0aW9ucy5saXN0ZW5lci5hZGRUYXJnZXRHcm91cHMoYFByaW9yaXR5JHtwcmlvcml0eX1MaXN0ZW5lclJ1bGVgLCB7XG4gICAgICAgICAgdGFyZ2V0R3JvdXBzOiBbdGhpcy5ibHVlVGFyZ2V0R3JvdXAgYXMgZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cF0sXG4gICAgICAgICAgcHJpb3JpdHk6IHByaW9yaXR5LFxuICAgICAgICAgIGNvbmRpdGlvbnM6IGNvbmRpdGlvbnMsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBpZiAoYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZz8udGVzdExpc3RlbmVyKSB7XG4gICAgICAgIGxvYWRCYWxhbmNlck9wdGlvbnMubGlzdGVuZXJSdWxlcy5mb3JFYWNoKCh7IHByaW9yaXR5LCBjb25kaXRpb25zIH0pID0+IHtcbiAgICAgICAgICBibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnLnRlc3RMaXN0ZW5lcj8uYWRkVGFyZ2V0R3JvdXBzKGBQcmlvcml0eSR7cHJpb3JpdHl9TGlzdGVuZXJSdWxlYCwge1xuICAgICAgICAgICAgdGFyZ2V0R3JvdXBzOiBbdGhpcy5ncmVlblRhcmdldEdyb3VwIGFzIGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXBdLFxuICAgICAgICAgICAgcHJpb3JpdHk6IHByaW9yaXR5LFxuICAgICAgICAgICAgY29uZGl0aW9uczogY29uZGl0aW9ucyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVjc0RlcGxveW1lbnRHcm91cCA9IG5ldyBjb2RlZGVwbG95LkVjc0RlcGxveW1lbnRHcm91cCh0aGlzLCAnRGVwbG95bWVudEdyb3VwJywge1xuICAgICAgICBzZXJ2aWNlOiB0aGlzLnNlcnZpY2UsXG4gICAgICAgIGJsdWVHcmVlbkRlcGxveW1lbnRDb25maWc6IHtcbiAgICAgICAgICBibHVlVGFyZ2V0R3JvdXA6IHRoaXMuYmx1ZVRhcmdldEdyb3VwLFxuICAgICAgICAgIGdyZWVuVGFyZ2V0R3JvdXA6IHRoaXMuZ3JlZW5UYXJnZXRHcm91cCxcbiAgICAgICAgICBsaXN0ZW5lcjogbG9hZEJhbGFuY2VyT3B0aW9ucy5saXN0ZW5lcixcbiAgICAgICAgICB0ZXN0TGlzdGVuZXI6IGJsdWVHcmVlbkRlcGxveW1lbnRDb25maWc/LnRlc3RMaXN0ZW5lcixcbiAgICAgICAgfSxcbiAgICAgICAgZGVwbG95bWVudENvbmZpZzpcbiAgICAgICAgICBjb2RlZGVwbG95LkVjc0RlcGxveW1lbnRDb25maWcuQ0FOQVJZXzEwUEVSQ0VOVF81TUlOVVRFUyxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjcmVhdGVEZXBsb3ltZW50TGFtYmRhID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCAnQ3JlYXRlRGVwbG95bWVudExhbWJkYScsIHtcbiAgICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KGpvaW4oX19kaXJuYW1lLCAnY29kZWRlcGxveS1jdXN0b20tcmVzb3VyY2VzJyksIHtcbiAgICAgICAgICBleGNsdWRlOiBbJyouanMnLCAnKi5kLnRzJ10sXG4gICAgICAgIH0pLFxuICAgICAgICBoYW5kbGVyOiAnY3JlYXRlLWRlcGxveW1lbnQtb24tY3JlYXRlLmhhbmRsZXInLFxuICAgICAgICBydW50aW1lOiBERUZBVUxUX05PREVfUlVOVElNRSxcbiAgICAgICAgYXJjaGl0ZWN0dXJlOiBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgIGxvZ0dyb3VwOiBuZXcgbG9ncy5Mb2dHcm91cCh0aGlzLCAnQ3JlYXRlRGVwbG95bWVudExhbWJkYUxvZ0dyb3VwJywge1xuICAgICAgICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9XRUVLLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgICAgY3JlYXRlRGVwbG95bWVudExhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6R2V0QXBwbGljYXRpb25SZXZpc2lvbicsXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6UmVnaXN0ZXJBcHBsaWNhdGlvblJldmlzaW9uJyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgZWNzRGVwbG95bWVudEdyb3VwLmFwcGxpY2F0aW9uLmFwcGxpY2F0aW9uQXJuLFxuICAgICAgICBdLFxuICAgICAgfSkpO1xuICAgICAgY3JlYXRlRGVwbG95bWVudExhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6Q3JlYXRlRGVwbG95bWVudCcsXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6U3RvcERlcGxveW1lbnQnLFxuICAgICAgICAgICdjb2RlZGVwbG95OkdldERlcGxveW1lbnQnLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICBlY3NEZXBsb3ltZW50R3JvdXAuZGVwbG95bWVudEdyb3VwQXJuLFxuICAgICAgICBdLFxuICAgICAgfSkpO1xuICAgICAgY3JlYXRlRGVwbG95bWVudExhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6R2V0RGVwbG95bWVudENvbmZpZycsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGVjc0RlcGxveW1lbnRHcm91cC5kZXBsb3ltZW50Q29uZmlnLmRlcGxveW1lbnRDb25maWdBcm4sXG4gICAgICAgIF0sXG4gICAgICB9KSk7XG5cbiAgICAgIGNvbnN0IGlzQ29tcGxldGVEZXBsb3ltZW50TGFtYmRhID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCAnSXNDb21wbGV0ZURlcGxveW1lbnRMYW1iZGEnLCB7XG4gICAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChqb2luKF9fZGlybmFtZSwgJ2NvZGVkZXBsb3ktY3VzdG9tLXJlc291cmNlcycpLCB7XG4gICAgICAgICAgZXhjbHVkZTogWycqLmpzJywgJyouZC50cyddLFxuICAgICAgICB9KSxcbiAgICAgICAgaGFuZGxlcjogJ2NyZWF0ZS1kZXBsb3ltZW50LWlzLWNvbXBsZXRlLmhhbmRsZXInLFxuICAgICAgICBydW50aW1lOiBERUZBVUxUX05PREVfUlVOVElNRSxcbiAgICAgICAgYXJjaGl0ZWN0dXJlOiBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgIGxvZ0dyb3VwOiBuZXcgbG9ncy5Mb2dHcm91cCh0aGlzLCAnSXNDb21wbGV0ZURlcGxveW1lbnRMYW1iZGFMb2dHcm91cCcsIHtcbiAgICAgICAgICByZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfV0VFSyxcbiAgICAgICAgfSksXG4gICAgICB9KTtcbiAgICAgIGlzQ29tcGxldGVEZXBsb3ltZW50TGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnY29kZWRlcGxveTpHZXREZXBsb3ltZW50JyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgZWNzRGVwbG95bWVudEdyb3VwLmRlcGxveW1lbnRHcm91cEFybixcbiAgICAgICAgXSxcbiAgICAgIH0pKTtcbiAgICAgIGNvbnN0IGNyZWF0ZURlcGxveW1lbnRMYW1iZGFQcm92aWRlciA9IG5ldyBjci5Qcm92aWRlcih0aGlzLCAnQ3JlYXRlRGVwbG95bWVudFByb3ZpZGVyJywge1xuICAgICAgICBvbkV2ZW50SGFuZGxlcjogY3JlYXRlRGVwbG95bWVudExhbWJkYSxcbiAgICAgICAgaXNDb21wbGV0ZUhhbmRsZXI6IGlzQ29tcGxldGVEZXBsb3ltZW50TGFtYmRhLFxuICAgICAgICB0b3RhbFRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDYwKSxcbiAgICAgIH0pO1xuICAgICAgbGV0IHJ1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGE6IG5vZGVqc2xhbWJkYS5Ob2RlanNGdW5jdGlvbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgIGlmIChibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnPy5jYXBhYmlsaXR5TmFtZXMpIHtcbiAgICAgICAgLy8gcnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYSA9IG5ldyBub2RlanNsYW1iZGEuTm9kZWpzRnVuY3Rpb24odGhpcywgJ1J1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGEnLCB7XG4gICAgICAgIC8vICAgZW50cnk6ICcuL3NyYy9mYXJnYXRlL2NvZGVkZXBsb3ktY3VzdG9tLXJlc291cmNlcy9ydW4tbW9uaXRvcmluZy10ZXN0LXN1aXRlLXJ1bm5lci50cycsXG4gICAgICAgIC8vICAgaGFuZGxlcjogJ2hhbmRsZXInLFxuICAgICAgICAvLyAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICAvLyAgIHJ1bnRpbWU6IERFRkFVTFRfTk9ERV9SVU5USU1FLFxuICAgICAgICAvLyAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIC8vICAgICBDQVBBQklMSVRJRVNfTkFNRTogYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZy5jYXBhYmlsaXR5TmFtZXMuam9pbignLCcpLFxuICAgICAgICAvLyAgICAgU1VCTkVUUzogdnBjLnNlbGVjdFN1Ym5ldHMoeyBzdWJuZXRUeXBlOiBlYzIuU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTIH0pLnN1Ym5ldElkcy5qb2luKCcsJyksXG4gICAgICAgIC8vICAgfSxcbiAgICAgICAgLy8gfSk7XG4gICAgICAgIHJ1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGEgPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsICdSdW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhJywge1xuICAgICAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChqb2luKF9fZGlybmFtZSwgJ2NvZGVkZXBsb3ktY3VzdG9tLXJlc291cmNlcycpLCB7XG4gICAgICAgICAgICBleGNsdWRlOiBbJyouanMnLCAnKi5kLnRzJ10sXG4gICAgICAgICAgfSksXG4gICAgICAgICAgaGFuZGxlcjogJ3J1bi1tb25pdG9yaW5nLXRlc3Qtc3VpdGUtcnVubmVyLmhhbmRsZXInLFxuICAgICAgICAgIHJ1bnRpbWU6IERFRkFVTFRfTk9ERV9SVU5USU1FLFxuICAgICAgICAgIGFyY2hpdGVjdHVyZTogbGFtYmRhLkFyY2hpdGVjdHVyZS5BUk1fNjQsXG4gICAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgICAgbG9nR3JvdXA6IG5ldyBsb2dzLkxvZ0dyb3VwKHRoaXMsICdSdW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhckxvZ0dyb3VwJywge1xuICAgICAgICAgICAgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgICAgICAgfSksXG4gICAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICAgIENBUEFCSUxJVElFU19OQU1FOiBibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnLmNhcGFiaWxpdHlOYW1lcy5qb2luKCcsJyksXG4gICAgICAgICAgICBTVUJORVRTOiB2cGMuc2VsZWN0U3VibmV0cyh7IHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MgfSkuc3VibmV0SWRzLmpvaW4oJywnKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVnaW9uID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5yZWdpb247XG4gICAgICAgIGNvbnN0IGFjY291bnQgPSBjZGsuU3RhY2sub2Yoc2NvcGUpLmFjY291bnQ7XG4gICAgICAgIHJ1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGEuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAnZWNzOlJ1blRhc2snLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICBgYXJuOmF3czplY3M6JHtyZWdpb259OiR7YWNjb3VudH06dGFzay1kZWZpbml0aW9uL21vbml0b3JpbmctdGVzdHN1aXRlLXJ1bm5lcipgLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pKTtcbiAgICAgICAgcnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICdlY3M6TGlzdENMdXN0ZXJzJyxcbiAgICAgICAgICAgICdlY3M6TGlzdFRhc2tEZWZpbml0aW9ucycsXG4gICAgICAgICAgXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICcqJyxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSk7XG4gICAgICAgIHJ1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGEuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbJ2lhbTpQYXNzUm9sZSddLFxuICAgICAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOmlhbTo6JHthY2NvdW50fTpyb2xlL21vbml0b3JpbmctdGVzdHN1aXRlKmBdLFxuICAgICAgICB9KSk7XG4gICAgICB9XG5cbiAgICAgIG5ldyBjZGsuQ3VzdG9tUmVzb3VyY2UodGhpcywgJ0NyZWF0ZURlcGxveW1lbnQnLCB7XG4gICAgICAgIHNlcnZpY2VUb2tlbjogY3JlYXRlRGVwbG95bWVudExhbWJkYVByb3ZpZGVyLnNlcnZpY2VUb2tlbixcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIEFwcGxpY2F0aW9uTmFtZTogZWNzRGVwbG95bWVudEdyb3VwLmFwcGxpY2F0aW9uLmFwcGxpY2F0aW9uTmFtZSxcbiAgICAgICAgICBEZXBsb3ltZW50R3JvdXBOYW1lOiBlY3NEZXBsb3ltZW50R3JvdXAuZGVwbG95bWVudEdyb3VwTmFtZSxcbiAgICAgICAgICBUYXNrRGVmaW5pdGlvbkFybjogdGhpcy50YXNrRGVmaW5pdGlvbi50YXNrRGVmaW5pdGlvbkFybixcbiAgICAgICAgICBDb250YWluZXJOYW1lOiBzZXJ2aWNlTmFtZSxcbiAgICAgICAgICBDb250YWluZXJQb3J0OiBjb250YWluZXJQb3J0LFxuICAgICAgICAgIEFmdGVyQWxsb3dUZXN0VHJhZmZpY0hvb2s6IHJ1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGE/LmZ1bmN0aW9uQXJuLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgRGVueUxpc3RlZEtleVZhbGlkYXRvciBpbXBsZW1lbnRzIGNvbnN0cnVjdHMuSVZhbGlkYXRpb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlbnlMaXN0OiBzdHJpbmdbXSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpY3Q6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCB1bmRlZmluZWQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlR2VuZXJhdG9yOiAoa2V5TmFtZTogc3RyaW5nKSA9PiBzdHJpbmcsXG4gICkge31cblxuICB2YWxpZGF0ZSgpOiBzdHJpbmdbXSB7XG4gICAgaWYgKCF0aGlzLmRpY3QpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG4gICAgdGhpcy5kZW55TGlzdC5mb3JFYWNoKChrZXlOYW1lKSA9PiB7XG4gICAgICBpZiAodGhpcy5kaWN0ICYmIGtleU5hbWUgaW4gdGhpcy5kaWN0KSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHRoaXMubWVzc2FnZUdlbmVyYXRvcihrZXlOYW1lKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbmNsYXNzIENsdXN0ZXJWcGNWYWxpZGF0b3IgaW1wbGVtZW50cyBjb25zdHJ1Y3RzLklWYWxpZGF0aW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB2cGM6IGVjMi5JVnBjLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2x1c3Rlcj86IGVjcy5JQ2x1c3RlcixcbiAgKSB7fVxuXG4gIHZhbGlkYXRlKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBpZiAodGhpcy5jbHVzdGVyICYmIHRoaXMuY2x1c3Rlci52cGMudnBjSWQgIT09IHRoaXMudnBjLnZwY0lkKSB7XG4gICAgICByZXN1bHQucHVzaChcbiAgICAgICAgYFRoZSBWUEMgcHJvdmlkZWQgaW4gdGhlIGNsdXN0ZXIgKCR7dGhpcy5jbHVzdGVyLnZwYy5ub2RlLmlkfSkgTVVTVCBtYXRjaCB0aGUgVlBDIHByb3ZpZGVkIGFzIGFyZ3VtZW50ICgke3RoaXMudnBjLm5vZGUuaWR9KS5gLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19