@orcabus/platform-cdk-constructs 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +4472 -58
- package/api-gateway/api-gateway.js +1 -1
- package/deployment-stack-pipeline/artifact-bucket.js +1 -1
- package/deployment-stack-pipeline/pipeline.js +14 -5
- package/dynamodb/index.js +2 -2
- package/ecs/index.js +1 -1
- package/eventbridge-rules/sfn-slack-notification.js +1 -1
- package/lambda/index.js +1 -1
- package/monitored-queue/index.js +1 -1
- package/named-lambda-role/index.js +1 -1
- package/package.json +14 -14
- package/provider-function/index.js +1 -1
- package/shared-config/accounts.d.ts +4 -0
- package/shared-config/accounts.js +6 -2
- package/shared-config/networking.js +2 -2
- package/shared-config/slack.js +1 -1
|
@@ -15,7 +15,7 @@ const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
|
|
|
15
15
|
const aws_route53_targets_1 = require("aws-cdk-lib/aws-route53-targets");
|
|
16
16
|
const config_1 = require("./config");
|
|
17
17
|
class OrcaBusApiGateway extends constructs_1.Construct {
|
|
18
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.apigateway.OrcaBusApiGateway", version: "1.0.
|
|
18
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.apigateway.OrcaBusApiGateway", version: "1.0.3" };
|
|
19
19
|
/**
|
|
20
20
|
* The AWS region where the API Gateway is deployed.
|
|
21
21
|
*/
|
|
@@ -13,7 +13,7 @@ exports.CROSS_DEPLOYMENT_ARTIFACT_BUCKET_NAME = "orcabus-cross-deployment-codepi
|
|
|
13
13
|
exports.CROSS_DEPLOYMENT_ARTIFACT_KMS_ALIAS = "orcabus-cross-deployment-codepipeline-artifact";
|
|
14
14
|
exports.CROSS_DEPLOYMENT_ARTIFACT_KMS_ARN_SSM_PARAMETER_NAME = "/orcabus/deployment-stack-pipeline/artifact-bucket/kms-key-arn";
|
|
15
15
|
class CrossDeploymentArtifactBucket extends constructs_1.Construct {
|
|
16
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.CrossDeploymentArtifactBucket", version: "1.0.
|
|
16
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.CrossDeploymentArtifactBucket", version: "1.0.3" };
|
|
17
17
|
/**
|
|
18
18
|
* The S3 bucket used to store artifacts for cross-deployment pipelines.
|
|
19
19
|
*/
|
|
@@ -33,7 +33,7 @@ exports.DEFAULT_SYNTH_STEP_PARTIAL_BUILD_SPEC = {
|
|
|
33
33
|
* before using this construct.
|
|
34
34
|
*/
|
|
35
35
|
class DeploymentStackPipeline extends constructs_1.Construct {
|
|
36
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.DeploymentStackPipeline", version: "1.0.
|
|
36
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.DeploymentStackPipeline", version: "1.0.3" };
|
|
37
37
|
/**
|
|
38
38
|
* The code pipeline construct that is created.
|
|
39
39
|
*/
|
|
@@ -91,9 +91,18 @@ class DeploymentStackPipeline extends constructs_1.Construct {
|
|
|
91
91
|
const { command: unitIacTestCommand = [
|
|
92
92
|
"npm install --global corepack@latest",
|
|
93
93
|
"corepack enable",
|
|
94
|
-
"
|
|
95
|
-
"
|
|
96
|
-
], partialBuildSpec: unitIacPartialBuildSpec =
|
|
94
|
+
"pnpm install --frozen-lockfile --ignore-scripts",
|
|
95
|
+
"pnpm test",
|
|
96
|
+
], partialBuildSpec: unitIacPartialBuildSpec = {
|
|
97
|
+
phases: {
|
|
98
|
+
install: {
|
|
99
|
+
"runtime-versions": {
|
|
100
|
+
nodejs: "22",
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
version: "0.2",
|
|
105
|
+
}, } = props.unitIacTestConfig || {};
|
|
97
106
|
const unitIacTest = new pipelines_1.CodeBuildStep("UnitIacTest", {
|
|
98
107
|
commands: unitIacTestCommand,
|
|
99
108
|
input: sourceFile,
|
|
@@ -343,4 +352,4 @@ class FailOnDriftBuildStep extends pipelines_1.CodeBuildStep {
|
|
|
343
352
|
});
|
|
344
353
|
}
|
|
345
354
|
}
|
|
346
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwaXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMkNBQXVDO0FBQ3ZDLDZDQUFrRTtBQUNsRSw2REFNbUM7QUFDbkMsaURBQXNEO0FBQ3RELHFEQVErQjtBQUMvQixtRUFPc0M7QUFDdEMscUNBSWtCO0FBQ2xCLHlEQUFvRTtBQUNwRSxxRkFBbUU7QUFDbkUsdURBQWtFO0FBQ2xFLG1GQUk4QztBQUM5QyxpREFBc0Q7QUFFdEQ7O0dBRUc7QUFDVSxRQUFBLHFDQUFxQyxHQUFHO0lBQ25ELE1BQU0sRUFBRTtRQUNOLE9BQU8sRUFBRTtZQUNQLGtCQUFrQixFQUFFO2dCQUNsQixNQUFNLEVBQUUsTUFBTTthQUNmO1NBQ0Y7S0FDRjtDQUNGLENBQUM7QUFrTEY7Ozs7O0dBS0c7QUFDSCxNQUFhLHVCQUF3QixTQUFRLHNCQUFTOztJQUNwRDs7T0FFRztJQUNNLFFBQVEsQ0FBVztJQUU1QixZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFtQztRQUVuQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sV0FBVyxHQUFHLHlCQUFlLENBQUMsdUJBQXVCLENBQ3pELElBQUksRUFDSixxQkFBcUIsQ0FDdEIsQ0FBQztRQUNGLE1BQU0sd0JBQXdCLEdBQUcsY0FBYyxDQUFDO1FBQ2hELE1BQU0sVUFBVSxHQUFHLDhCQUFrQixDQUFDLFVBQVUsQ0FDOUMsV0FBVyxLQUFLLENBQUMsVUFBVSxFQUFFLEVBQzdCLEtBQUssQ0FBQyxZQUFZLEVBQ2xCO1lBQ0UsYUFBYSxFQUFFLFdBQVc7WUFDMUIsVUFBVSxFQUFFLHdCQUF3QjtZQUNwQyxhQUFhLEVBQUUsSUFBSTtTQUNwQixDQUNGLENBQUM7UUFFRixNQUFNLCtCQUErQixHQUNuQyxLQUFLLENBQUMsMkJBQTJCLElBQUksSUFBSSxDQUFDO1FBQzVDLE1BQU0sY0FBYyxHQUFHLCtCQUEr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QUFzQztnQkFDdEMsb0JBQW9CO2dCQUNwQixpQkFBaUI7Z0JBQ2pCLFVBQVU7Z0JBRVYsaUNBQWlDLFVBQVUsQ0FBQyxPQUFPLG1DQUFtQyxVQUFVLENBQUMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUc7Z0JBQ2hJLDRCQUE0QjtnQkFDNUIsbVFBQW1RO2dCQUNuUSxrRUFBa0U7Z0JBQ2xFLDhCQUE4QixVQUFVLENBQUMsTUFBTSxHQUFHO2dCQUNsRCw2QkFBNkI7Z0JBRTdCLE1BQU0sVUFBVSxtQkFBbUIsT0FBTyx1QkFBdUIsT0FBTyxtQ0FBbUMsVUFBVSxXQUFXLE9BQU8sK0VBQStFO2FBQ3ZOO1lBQ0Qsb0JBQW9CLEVBQUU7Z0JBQ3BCLElBQUkseUJBQWUsQ0FBQztvQkFDbEIsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNCLFNBQVMsRUFBRTt3QkFDVCxnQkFBZ0IsVUFBVSxDQUFDLE9BQU8sbUNBQW1DLFVBQVUsQ0FBQyxPQUFPLElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRTtxQkFDL0c7aUJBQ0YsQ0FBQzthQUNIO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IER1cmF0aW9uLCBFbnZpcm9ubWVudCwgU3RhY2ssIFN0YWdlIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge1xuICBCdWlsZFNwZWMsXG4gIENvbXB1dGVUeXBlLFxuICBJUHJvamVjdCxcbiAgTGludXhBcm1CdWlsZEltYWdlLFxuICBQaXBlbGluZVByb2plY3QsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkXCI7XG5pbXBvcnQgeyBTdHJpbmdQYXJhbWV0ZXIgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNzbVwiO1xuaW1wb3J0IHtcbiAgQ29kZUJ1aWxkU3RlcCxcbiAgQ29kZVBpcGVsaW5lLFxuICBDb2RlUGlwZWxpbmVBY3Rpb25GYWN0b3J5UmVzdWx0LFxuICBDb2RlUGlwZWxpbmVTb3VyY2UsXG4gIElDb2RlUGlwZWxpbmVBY3Rpb25GYWN0b3J5LFxuICBQcm9kdWNlQWN0aW9uT3B0aW9ucyxcbiAgU3RlcCxcbn0gZnJvbSBcImF3cy1jZGstbGliL3BpcGVsaW5lc1wiO1xuaW1wb3J0IHtcbiAgUGlwZWxpbmUsXG4gIENmblBpcGVsaW5lLFxuICBQaXBlbGluZVR5cGUsXG4gIFBpcGVsaW5lTm90aWZpY2F0aW9uRXZlbnRzLFxuICBJU3RhZ2UsXG4gIEFydGlmYWN0LFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZGVwaXBlbGluZVwiO1xuaW1wb3J0IHtcbiAgQkVUQV9FTlZJUk9OTUVOVCxcbiAgR0FNTUFfRU5WSVJPTk1FTlQsXG4gIFBST0RfRU5WSVJPTk1FTlQsXG59IGZyb20gXCIuL2NvbmZpZ1wiO1xuaW1wb3J0IHsgU2xhY2tDaGFubmVsQ29uZmlndXJhdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2hhdGJvdFwiO1xuaW1wb3J0IHsgRGV0YWlsVHlwZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29kZXN0YXJub3RpZmljYXRpb25zXCI7XG5pbXBvcnQgeyBDcm9zc0RlcGxveW1lbnRBcnRpZmFjdEJ1Y2tldCB9IGZyb20gXCIuL2FydGlmYWN0LWJ1Y2tldFwiO1xuaW1wb3J0IHtcbiAgQ29kZUJ1aWxkQWN0aW9uLFxuICBNYW51YWxBcHByb3ZhbEFjdGlvbixcbiAgTWFudWFsQXBwcm92YWxBY3Rpb25Qcm9wcyxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jb2RlcGlwZWxpbmUtYWN0aW9uc1wiO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBwYXJ0aWFsIGJ1aWxkIHNwZWMgZm9yIHRoZSBzeW50aCBzdGVwIGluIHRoZSBwaXBlbGluZS5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfU1lOVEhfU1RFUF9QQVJUSUFMX0JVSUxEX1NQRUMgPSB7XG4gIHBoYXNlczoge1xuICAgIGluc3RhbGw6IHtcbiAgICAgIFwicnVudGltZS12ZXJzaW9uc1wiOiB7XG4gICAgICAgIG5vZGVqczogXCIyMi54XCIsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWdlRW52UHJvcHMge1xuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IGZvciB0aGUgYmV0YSBzdGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgYmV0YTogRW52aXJvbm1lbnQ7XG4gIC8qKlxuICAgKiBUaGUgZW52aXJvbm1lbnQgZm9yIHRoZSBnYW1tYSBzdGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2FtbWE6IEVudmlyb25tZW50O1xuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IGZvciB0aGUgcHJvZCBzdGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZDogRW52aXJvbm1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tDb25maWdQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGJldGEgKGRldikgc3RhZ2VcbiAgICovXG4gIHJlYWRvbmx5IGJldGE6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGdhbW1hIChzdGcpIHN0YWdlXG4gICAqL1xuICByZWFkb25seSBnYW1tYTogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgcHJvZCBzdGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZDogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBwcmUtZGVwbG95bWVudCBkcmlmdCBkZXRlY3Rpb24gY2hlY2tzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERyaWZ0Q2hlY2tDb25maWcge1xuICAvKipcbiAgICogQ0RLIENMSSBlbnRyeXBvaW50IHVzZWQgdG8gcnVuIHRoZSBkcmlmdCBjb21tYW5kLlxuICAgKiBFeGFtcGxlczogXCJwbnBtIGNka1wiLCBcInBucG0gY2RrLXN0YXRlZnVsXCIsIFwicG5wbSBjZGstc3RhdGVsZXNzXCIuXG4gICAqIE11c3Qgc3VwcG9ydDogXCJkcmlmdCA8c3RhY2tJZD5cIi5cbiAgICovXG4gIHJlYWRvbmx5IGNka0NvbW1hbmQ6IHN0cmluZztcbiAgLyoqXG4gICAqIENvbW1hbmQgdG8gaW5zdGFsbCBkZXBlbmRlbmNpZXMgYmVmb3JlIHJ1bm5pbmcgQ0RLLlxuICAgKiBJZiB5b3VyIGFwcCBpcyBpbiBhIHN1YmRpcmVjdG9yeSwgcHJlZml4IHdpdGggXCJjZCA8ZGlyPiAmJlwiLlxuICAgKiBFeGFtcGxlOiBcImNkIGRldiAmJiBwbnBtIGluc3RhbGwgLS1mcm96ZW4tbG9ja2ZpbGUgLS1pZ25vcmUtc2NyaXB0c1wiXG4gICAqXG4gICAqIERlZmF1bHQ6IFwicG5wbSBpbnN0YWxsIC0tZnJvemVuLWxvY2tmaWxlIC0taWdub3JlLXNjcmlwdHNcIlxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFsbENvbW1hbmQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZUJ1aWxkU3RlcFByb3BzIHtcbiAgLyoqXG4gICAqIHRoZSBtYWluIGNvbW1hbmQgZm9yIHRoZSBidWlsZCBzdGVwIHRvIHJ1blxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZDogc3RyaW5nW107XG4gIC8qKlxuICAgKiBQYXJ0aWFsIGJ1aWxkc3BlYyBmb3IgdGhpcyBDb2RlQnVpbGRTdGVwXG4gICAqL1xuICByZWFkb25seSBwYXJ0aWFsQnVpbGRTcGVjPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXBsb3ltZW50U3RhY2tQaXBlbGluZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBHaXRIdWIgYnJhbmNoIG5hbWUgdGhlIHBpcGVsaW5lIHdpbGwgbGlzdGVuIHRvLlxuICAgKiBBdm9pZCB1c2luZyBicmFuY2ggbmFtZXMgdGhhdCBjb250YWluIHNwZWNpYWwgY2hhcmFjdGVycyBzdWNoIGFzIHBhcmVudGhlc2VzLlxuICAgKiBBbGxvd2VkIHNwZWNpYWwgY2hhcmFjdGVycyBhcmU6IFwiKyAtID0gLiBfIDogLyBAXCIuXG4gICAqIFRoaXMgcmVzdHJpY3Rpb24gaXMgZHVlIHRvIEFXUyByZXNvdXJjZSB0YWdnaW5nIHJlcXVpcmVtZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IGdpdGh1YkJyYW5jaDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnkgbmFtZSB0aGF0IGV4aXN0IGluIHRoZSAnT3JjYUJ1cycgZ2l0aHViIG9yZ2FuaXNhdGlvbi4gZS5nLiBgYS1taWNyby1zZXJ2aWNlLXJlcG9gXG4gICAqL1xuICByZWFkb25seSBnaXRodWJSZXBvOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgdG8gd2hpY2ggdGhlIHBpcGVsaW5lIHdpbGwgYmUgZGVwbG95aW5nIHRvIGl0cyByZXNwZWN0aXZlIGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrOiBhbnk7XG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgbmFtZSAoaW4gY2xvdWRmb3JtYXRpb24pIGZvciB0aGUgc3RhY2sgZGVmaW5lZCBpbiBgc3RhY2tgLiBUaGUgc3RhY2sgbmFtZSB3aWxsIHByZXBlbmQgd2l0aCB0aGUgc3RhZ2VcbiAgICogbmFtZSBlLmcuIGBPcmNhQnVzQmV0YS08c3RhY2tOYW1lPmAsIGBPcmNhQnVzR2FtbWEtPHN0YWNrTmFtZT5gLCBgT3JjYUJ1c1Byb2QtPHN0YWNrTmFtZT5gXG4gICAqL1xuICByZWFkb25seSBzdGFja05hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzdGFjayBjb25maWd1cmF0aW9uL2NvbnN0YW50cyB0aGF0IHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBzdGFjayBwcm9wcy5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrQ29uZmlnOiBTdGFja0NvbmZpZ1Byb3BzO1xuICAvKipcbiAgICogVGhlIHBpcGVsaW5lIG5hbWUgaW4gdGhlIGJhc3Rpb24gYWNjb3VudC5cbiAgICovXG4gIHJlYWRvbmx5IHBpcGVsaW5lTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgcGF0dGVybnMgb2YgR2l0IHJlcG9zaXRvcnkgZmlsZSBwYXRocyB0aGF0LCB3aGVuIGEgY29tbWl0IGlzIHB1c2hlZCwgYXJlIHRvIGJlIElOQ0xVREVEIGFzIGNyaXRlcmlhIHRoYXQgc3RhcnRzIHRoZSBwaXBlbGluZS5cbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtY29kZXBpcGVsaW5lLXBpcGVsaW5lLWdpdGZpbGVwYXRoZmlsdGVyY3JpdGVyaWEuaHRtbFxuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgaW5jbHVkZWRGaWxlUGF0aHM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHBhdHRlcm5zIG9mIEdpdCByZXBvc2l0b3J5IGZpbGUgcGF0aHMgdGhhdCwgd2hlbiBhIGNvbW1pdCBpcyBwdXNoZWQsIGFyZSB0byBiZSBFWENMVURFRCBmcm9tIHN0YXJ0aW5nIHRoZSBwaXBlbGluZS5cbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtY29kZXBpcGVsaW5lLXBpcGVsaW5lLWdpdGZpbGVwYXRoZmlsdGVyY3JpdGVyaWEuaHRtbFxuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgZXhjbHVkZWRGaWxlUGF0aHM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSBjb21tYW5kIHRvIHJ1biB0byBzeW50aCB0aGUgY2RrIHN0YWNrIHdoaWNoIGFsc28gaW5zdGFsbGluZyB0aGUgY2RrIGRlcGVuZGVuY2llcy4gZS5nLiBbXCJwbnBtIGluc3RhbGwgLS1mcm96ZW4tbG9ja2ZpbGVcIiwgXCJwbnBtIGNkayBzeW50aFwiXVxuICAgKi9cbiAgcmVhZG9ubHkgY2RrU3ludGhDbWQ6IHN0cmluZ1tdO1xuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIHdoZXJlIHRoZSBjZGsgb3V0cHV0IHdpbGwgYmUgc3RvcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBjZGsub3V0XG4gICAqL1xuICByZWFkb25seSBjZGtPdXQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBDb2RlQnVpbGQgc3RlcCBkdXJpbmcgdGhlIENESyBzeW50aCBwaGFzZS4gSXQgd2lsbCBwYXNzZWQgYXMgdGhlIGBwYXJ0aWFsQnVpbGRTcGVjYCB0byB0aGUgYENvZGVCdWlsZFN0ZXBgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBERUZBVUxUX1NZTlRIX1NURVBfUEFSVElBTF9CVUlMRF9TUEVDXG4gICAqL1xuICByZWFkb25seSBzeW50aEJ1aWxkU3BlYz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciB0aGUgQ29kZUJ1aWxkIHN0ZXAgdGhhdCBydW5zIHVuaXQgdGVzdHMgZm9yIHRoZSBtYWluIGFwcGxpY2F0aW9uIGNvZGUuXG4gICAqIFRoaXMgc3RlcCB3aWxsIGV4ZWN1dGUgaW4gcGFyYWxsZWwgd2l0aCB7QGxpbmsgdW5pdElhY1Rlc3RDb25maWd9IGFzIHBhcnQgb2YgdGhlIHN5bnRoIHN0YWdlIGRlcGVuZGVuY2llcy5cbiAgICogQm90aCBtdXN0IHN1Y2NlZWQgYmVmb3JlIHRoZSBzeW50aCBzdGVwIHJ1bnMuXG4gICAqXG4gICAqIGVuc3VyZSB5b3VyIGNvbW1hbmQgaW5jbHVkZXMgJ2NkJyB0byB0aGUgbWFpbiBhcHAgZGlyZWN0b3J5LCBhcyB0aGUgYnVpbGQgY29udGV4dCBzdGFydHMgZnJvbSB0aGUgcm9vdC5cbiAgICovXG4gIHJlYWRvbmx5IHVuaXRBcHBUZXN0Q29uZmlnOiBDb2RlQnVpbGRTdGVwUHJvcHM7XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciB0aGUgQ29kZUJ1aWxkIHN0ZXAgdGhhdCBydW5zIHVuaXQgdGVzdHMgZm9yIEluZnJhc3RydWN0dXJlLWFzLUNvZGUgKElhQykgYXQgdGhlIHJlcG9zaXRvcnkgcm9vdC5cbiAgICogVGhpcyBzdGVwIHdpbGwgZXhlY3V0ZSBpbiBwYXJhbGxlbCB3aXRoIHtAbGluayB1bml0QXBwVGVzdENvbmZpZ30gYXMgcGFydCBvZiB0aGUgc3ludGggc3RhZ2UgZGVwZW5kZW5jaWVzLlxuICAgKiBCb3RoIG11c3Qgc3VjY2VlZCBiZWZvcmUgdGhlIHN5bnRoIHN0ZXAgcnVucy5cbiAgICpcbiAgICogVGhlIGRlZmF1bHQgY29tbWFuZCB3aWxsIGJlIGZyb20gdGhlIHJvb3Qgb2YgdGhlIHJlcG86IFtcIm5wbSBpbnN0YWxsIC0tZ2xvYmFsIGNvcmVwYWNrQGxhdGVzdFwiLCBcImNvcmVwYWNrIGVuYWJsZVwiLCBcIm1ha2UgaW5zdGFsbFwiLCBcIm1ha2UgdGVzdFwiXVxuICAgKi9cbiAgcmVhZG9ubHkgdW5pdElhY1Rlc3RDb25maWc/OiBDb2RlQnVpbGRTdGVwUHJvcHM7XG4gIC8qKlxuICAgKiBUaGUgc3RhZ2UgZW52aXJvbm1lbnQgZm9yIHRoZSBkZXBsb3ltZW50IHN0YWNrXG4gICAqL1xuICByZWFkb25seSBzdGFnZUVudj86IFN0YWdlRW52UHJvcHM7XG4gIC8qKlxuICAgKiBFbmFibGUgbm90aWZpY2F0aW9uIHRvIHRoZSAnYWxlcnRzLWJ1aWxkJyBzbGFjayBjaGFubmVsLlxuICAgKiBAZGVmYXVsdCBUcnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVTbGFja05vdGlmaWNhdGlvbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgcGlwZWxpbmUgbm90aWZpY2F0aW9uIGV2ZW50cyB0aGF0IHdpbGwgdHJpZ2dlciBhIFNsYWNrIGNoYW5uZWwgbm90aWZpY2F0aW9uLlxuICAgKiBPbmx5IGFwcGxpZXMgaWYgYGVuYWJsZVNsYWNrTm90aWZpY2F0aW9uYCBpcyBzZXQgdG8gdHJ1ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgW1BpcGVsaW5lTm90aWZpY2F0aW9uRXZlbnRzLlBJUEVMSU5FX0VYRUNVVElPTl9GQUlMRURdIOKAk1xuICAgKiAgIE9ubHkgZmFpbGVkIHBpcGVsaW5lIGV4ZWN1dGlvbnMgd2lsbCB0cmlnZ2VyIGEgbm90aWZpY2F0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uRXZlbnRzPzogUGlwZWxpbmVOb3RpZmljYXRpb25FdmVudHNbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZXVzZSB0aGUgZXhpc3RpbmcgYXJ0aWZhY3QgYnVja2V0IGZvciBjcm9zcy1kZXBsb3ltZW50IHBpcGVsaW5lcy5cbiAgICogSWYgc2V0IHRvIHRydWUsIGl0IHdpbGwgbG9vayB1cCB0aGUgZXhpc3RpbmcgYXJ0aWZhY3QgYnVja2V0IGluIHRoZSBUT09MQ0hBSU4gYWNjb3VudC5cbiAgICpcbiAgICogQGRlZmF1bHQgVHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmV1c2VFeGlzdGluZ0FydGlmYWN0QnVja2V0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUmVtb3ZlIGFzc2V0cyBmcm9tIHRoZSBDREsgYXNzZW1ibHkgcHJlLWRlcGxveW1lbnQgdG8gcHJldmVudCBoaXR0aW5nIENvZGVQaXBlbGluZSdzIDI1NiBNQiBhcnRpZmFjdCBzaXplIGxpbWl0LlxuICAgKiBVc2VmdWwgd2hlbiBDREsgYXNzZXRzIChMYW1iZGEgY29kZSwgRG9ja2VyIGltYWdlcywgZXRjLikgYXJlIGxhcmdlLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9pc3N1ZXMvOTkxN1xuICAgKi9cbiAgcmVhZG9ubHkgc3RyaXBBc3NlbWJseUFzc2V0cz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBkcmlmdCBkZXRlY3Rpb24gY2hlY2tzIGJlZm9yZSBkZXBsb3ltZW50LlxuICAgKiBJZiBzcGVjaWZpZWQsIHRoZSBwaXBlbGluZSB3aWxsIGNoZWNrIGZvciBDbG91ZEZvcm1hdGlvbiBkcmlmdCBhbmQgZmFpbCBpZiBkZXRlY3RlZC5cbiAgICovXG4gIHJlYWRvbmx5IGRyaWZ0Q2hlY2tDb25maWc/OiBEcmlmdENoZWNrQ29uZmlnO1xufVxuXG4vKipcbiAqIEEgQ0RLIGNvbnN0cnVjdCB0aGF0IGNyZWF0ZXMgYSBkZXBsb3ltZW50IHBpcGVsaW5lIGFjcm9zcyBlbnZpcm9ubWVudHMgZm9yIHRoZSBPcmNhQnVzIHByb2plY3QuXG4gKlxuICogUHJlcmVxdWlzaXRlOiBFbnN1cmUgdGhhdCB0aGUgXCJDcm9zc0RlcGxveW1lbnRBcnRpZmFjdEJ1Y2tldFwiIHN0YWNrIGlzIGRlcGxveWVkIGluIHRoZSBUT09MQ0hBSU4gYWNjb3VudFxuICogYmVmb3JlIHVzaW5nIHRoaXMgY29uc3RydWN0LlxuICovXG5leHBvcnQgY2xhc3MgRGVwbG95bWVudFN0YWNrUGlwZWxpbmUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIGNvZGUgcGlwZWxpbmUgY29uc3RydWN0IHRoYXQgaXMgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHBpcGVsaW5lOiBQaXBlbGluZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IERlcGxveW1lbnRTdGFja1BpcGVsaW5lUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBjb2RlU3RhckFybiA9IFN0cmluZ1BhcmFtZXRlci52YWx1ZUZvclN0cmluZ1BhcmFtZXRlcihcbiAgICAgIHRoaXMsXG4gICAgICBcImNvZGVzdGFyX2dpdGh1Yl9hcm5cIixcbiAgICApO1xuICAgIGNvbnN0IGNvZGVTdGFyU291cmNlQWN0aW9uTmFtZSA9IFwicGlwZWxpbmUtc3JjXCI7XG4gICAgY29uc3Qgc291cmNlRmlsZSA9IENvZGVQaXBlbGluZVNvdXJjZS5jb25uZWN0aW9uKFxuICAgICAgYE9yY2FCdXMvJHtwcm9wcy5naXRodWJSZXBvfWAsXG4gICAgICBwcm9wcy5naXRodWJCcmFuY2gsXG4gICAgICB7XG4gICAgICAgIGNvbm5lY3Rpb25Bcm46IGNvZGVTdGFyQXJuLFxuICAgICAgICBhY3Rpb25OYW1lOiBjb2RlU3RhclNvdXJjZUFjdGlvbk5hbWUsXG4gICAgICAgIHRyaWdnZXJPblB1c2g6IHRydWUsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBjb25zdCBpc1JldXNpbmdFeGlzdGluZ0FydGlmYWN0QnVja2V0ID1cbiAgICAgIHByb3BzLnJldXNlRXhpc3RpbmdBcnRpZmFjdEJ1Y2tldCA/PyB0cnVlO1xuICAgIGNvbnN0IGFydGlmYWN0QnVja2V0ID0gaXNSZXVzaW5nRXhpc3RpbmdBcnRpZmFjdEJ1Y2tldFxuICAgICAgPyBDcm9zc0RlcGxveW1lbnRBcnRpZmFjdEJ1Y2tldC5mcm9tTG9va3VwKHRoaXMpLmFydGlmYWN0QnVja2V0XG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIHRoaXMucGlwZWxpbmUgPSBuZXcgUGlwZWxpbmUodGhpcywgXCJEZXBsb3ltZW50Q29kZVBpcGVsaW5lXCIsIHtcbiAgICAgIGFydGlmYWN0QnVja2V0OiBhcnRpZmFjdEJ1Y2tldCxcbiAgICAgIHBpcGVsaW5lVHlwZTogUGlwZWxpbmVUeXBlLlYyLFxuICAgICAgcGlwZWxpbmVOYW1lOiBwcm9wcy5waXBlbGluZU5hbWUsXG4gICAgICBjcm9zc0FjY291bnRLZXlzOiB0cnVlLFxuICAgICAgLy8gZW5hYmxlIHJlc3RhcnRFeGVjdXRpb25PblVwZGF0ZVxuICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNzU3MDE3NzYvdXBkYXRlcGlwZWxpbmUtc3RhZ2UtaW4tY2RrLXBpcGVsaW5lLWlzLWNhbmNlbGxlZFxuICAgICAgcmVzdGFydEV4ZWN1dGlvbk9uVXBkYXRlOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLmluY2x1ZGVkRmlsZVBhdGhzIHx8IHByb3BzLmV4Y2x1ZGVkRmlsZVBhdGhzKSB7XG4gICAgICBjb25zdCBmaWxlUGF0aHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9O1xuXG4gICAgICBpZiAocHJvcHMuaW5jbHVkZWRGaWxlUGF0aHMpIHtcbiAgICAgICAgZmlsZVBhdGhzW1wiSW5jbHVkZXNcIl0gPSBwcm9wcy5pbmNsdWRlZEZpbGVQYXRocztcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy5leGNsdWRlZEZpbGVQYXRocykge1xuICAgICAgICBmaWxlUGF0aHNbXCJFeGNsdWRlc1wiXSA9IHByb3BzLmV4Y2x1ZGVkRmlsZVBhdGhzO1xuICAgICAgfVxuXG4gICAgICAvLyBBZGQgZXZlbnQgZmlsdGVyIHRvIG9ubHkgdHJpZ2dlciBpZiB0aGUgcHVzaCBldmVudCBpcyBmcm9tIGBkZXBsb3lgIGRpcmVjdG9yeVxuICAgICAgY29uc3QgY2ZuUGlwZWxpbmUgPSB0aGlzLnBpcGVsaW5lLm5vZGUuZGVmYXVsdENoaWxkIGFzIENmblBpcGVsaW5lO1xuICAgICAgY2ZuUGlwZWxpbmUuYWRkUHJvcGVydHlPdmVycmlkZShcIlRyaWdnZXJzXCIsIFtcbiAgICAgICAge1xuICAgICAgICAgIEdpdENvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgIFB1c2g6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIEJyYW5jaGVzOiB7XG4gICAgICAgICAgICAgICAgICBJbmNsdWRlczogW3Byb3BzLmdpdGh1YkJyYW5jaF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBGaWxlUGF0aHM6IGZpbGVQYXRocyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBTb3VyY2VBY3Rpb25OYW1lOiBjb2RlU3RhclNvdXJjZUFjdGlvbk5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBQcm92aWRlclR5cGU6IFwiQ29kZVN0YXJTb3VyY2VDb25uZWN0aW9uXCIsXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgdW5pdCB0ZXN0IGZvciBJYUMgYXQgdGhlIHJvb3Qgb2YgdGhlXG4gICAgY29uc3Qge1xuICAgICAgY29tbWFuZDogdW5pdElhY1Rlc3RDb21tYW5kID0gW1xuICAgICAgICBcIm5wbSBpbnN0YWxsIC0tZ2xvYmFsIGNvcmVwYWNrQGxhdGVzdFwiLFxuICAgICAgICBcImNvcmVwYWNrIGVuYWJsZVwiLFxuICAgICAgICBcIm1ha2UgaW5zdGFsbFwiLFxuICAgICAgICBcIm1ha2UgdGVzdFwiLFxuICAgICAgXSxcbiAgICAgIHBhcnRpYWxCdWlsZFNwZWM6IHVuaXRJYWNQYXJ0aWFsQnVpbGRTcGVjID0gdW5kZWZpbmVkLFxuICAgIH0gPSBwcm9wcy51bml0SWFjVGVzdENvbmZpZyB8fCB7fTtcbiAgICBjb25zdCB1bml0SWFjVGVzdCA9IG5ldyBDb2RlQnVpbGRTdGVwKFwiVW5pdElhY1Rlc3RcIiwge1xuICAgICAgY29tbWFuZHM6IHVuaXRJYWNUZXN0Q29tbWFuZCxcbiAgICAgIGlucHV0OiBzb3VyY2VGaWxlLFxuICAgICAgYnVpbGRFbnZpcm9ubWVudDoge1xuICAgICAgICBwcml2aWxlZ2VkOiB0cnVlLFxuICAgICAgICBjb21wdXRlVHlwZTogQ29tcHV0ZVR5cGUuTEFSR0UsXG4gICAgICAgIGJ1aWxkSW1hZ2U6IExpbnV4QXJtQnVpbGRJbWFnZS5BTUFaT05fTElOVVhfMl9TVEFOREFSRF8zXzAsXG4gICAgICAgIGVudmlyb25tZW50VmFyaWFibGVzOiB7XG4gICAgICAgICAgTk9ERV9PUFRJT05TOiB7XG4gICAgICAgICAgICB2YWx1ZTogXCItLW1heC1vbGQtc3BhY2Utc2l6ZT04MTkyXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBwYXJ0aWFsQnVpbGRTcGVjOiB1bml0SWFjUGFydGlhbEJ1aWxkU3BlY1xuICAgICAgICA/IEJ1aWxkU3BlYy5mcm9tT2JqZWN0KHVuaXRJYWNQYXJ0aWFsQnVpbGRTcGVjKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIC8vIEFkZGluZyB1bml0IHRlc3QgZm9yIHRoZSBtYWluIGFwcFxuICAgIGNvbnN0IHtcbiAgICAgIGNvbW1hbmQ6IHVuaXRBcHBUZXN0Q29tbWFuZCxcbiAgICAgIHBhcnRpYWxCdWlsZFNwZWM6IHVuaXRBcHBQYXJ0aWFsQnVpbGRTcGVjID0gdW5kZWZpbmVkLFxuICAgIH0gPSBwcm9wcy51bml0QXBwVGVzdENvbmZpZztcbiAgICBjb25zdCB1bml0QXBwVGVzdCA9IG5ldyBDb2RlQnVpbGRTdGVwKFwiVW5pdEFwcFRlc3RcIiwge1xuICAgICAgY29tbWFuZHM6IHVuaXRBcHBUZXN0Q29tbWFuZCxcbiAgICAgIGlucHV0OiBzb3VyY2VGaWxlLFxuICAgICAgYnVpbGRFbnZpcm9ubWVudDoge1xuICAgICAgICBwcml2aWxlZ2VkOiB0cnVlLFxuICAgICAgICBjb21wdXRlVHlwZTogQ29tcHV0ZVR5cGUuTEFSR0UsXG4gICAgICAgIGJ1aWxkSW1hZ2U6IExpbnV4QXJtQnVpbGRJbWFnZS5BTUFaT05fTElOVVhfMl9TVEFOREFSRF8zXzAsXG4gICAgICAgIGVudmlyb25tZW50VmFyaWFibGVzOiB7XG4gICAgICAgICAgTk9ERV9PUFRJT05TOiB7XG4gICAgICAgICAgICB2YWx1ZTogXCItLW1heC1vbGQtc3BhY2Utc2l6ZT04MTkyXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBwYXJ0aWFsQnVpbGRTcGVjOiB1bml0QXBwUGFydGlhbEJ1aWxkU3BlY1xuICAgICAgICA/IEJ1aWxkU3BlYy5mcm9tT2JqZWN0KHVuaXRBcHBQYXJ0aWFsQnVpbGRTcGVjKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIGNvbnN0IHsgc3ludGhCdWlsZFNwZWMgPSBERUZBVUxUX1NZTlRIX1NURVBfUEFSVElBTF9CVUlMRF9TUEVDIH0gPSBwcm9wcztcbiAgICBjb25zdCBzeW50aFN0ZXAgPSBuZXcgQ29kZUJ1aWxkU3RlcChcIkNka1N5bnRoXCIsIHtcbiAgICAgIGluc3RhbGxDb21tYW5kczogW1xuICAgICAgICBcIm5vZGUgLXZcIixcbiAgICAgICAgXCJucG0gaW5zdGFsbCAtLWdsb2JhbCBjb3JlcGFja0BsYXRlc3RcIixcbiAgICAgICAgXCJjb3JlcGFjayAtLXZlcnNpb25cIixcbiAgICAgICAgXCJjb3JlcGFjayBlbmFibGVcIixcbiAgICAgIF0sXG4gICAgICBjb21tYW5kczogcHJvcHMuY2RrU3ludGhDbWQsXG4gICAgICBpbnB1dDogc291cmNlRmlsZSxcbiAgICAgIHByaW1hcnlPdXRwdXREaXJlY3Rvcnk6IHByb3BzLmNka091dCB8fCBcImNkay5vdXRcIixcbiAgICAgIHBhcnRpYWxCdWlsZFNwZWM6IEJ1aWxkU3BlYy5mcm9tT2JqZWN0KHN5bnRoQnVpbGRTcGVjKSxcbiAgICB9KTtcbiAgICBzeW50aFN0ZXAuYWRkU3RlcERlcGVuZGVuY3kodW5pdElhY1Rlc3QpO1xuICAgIHN5bnRoU3RlcC5hZGRTdGVwRGVwZW5kZW5jeSh1bml0QXBwVGVzdCk7XG5cbiAgICBjb25zdCBjZGtQaXBlbGluZSA9IG5ldyBDb2RlUGlwZWxpbmUodGhpcywgXCJDREtDb2RlUGlwZWxpbmVcIiwge1xuICAgICAgY29kZVBpcGVsaW5lOiB0aGlzLnBpcGVsaW5lLFxuICAgICAgc3ludGg6IHN5bnRoU3RlcCxcbiAgICAgIHNlbGZNdXRhdGlvbjogdHJ1ZSxcbiAgICAgIGNvZGVCdWlsZERlZmF1bHRzOiB7XG4gICAgICAgIGJ1aWxkRW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICBjb21wdXRlVHlwZTogQ29tcHV0ZVR5cGUuTEFSR0UsXG4gICAgICAgICAgYnVpbGRJbWFnZTogTGludXhBcm1CdWlsZEltYWdlLkFNQVpPTl9MSU5VWF8yX1NUQU5EQVJEXzNfMCxcbiAgICAgICAgICBlbnZpcm9ubWVudFZhcmlhYmxlczoge1xuICAgICAgICAgICAgTk9ERV9PUFRJT05TOiB7XG4gICAgICAgICAgICAgIHZhbHVlOiBcIi0tbWF4LW9sZC1zcGFjZS1zaXplPTgxOTJcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBkZWZhdWx0U3RhZ2VFbnY6IFN0YWdlRW52UHJvcHMgPSB7XG4gICAgICBiZXRhOiBCRVRBX0VOVklST05NRU5ULFxuICAgICAgZ2FtbWE6IEdBTU1BX0VOVklST05NRU5ULFxuICAgICAgcHJvZDogUFJPRF9FTlZJUk9OTUVOVCxcbiAgICB9O1xuICAgIGNvbnN0IHN0YWdlRW52ID0gcHJvcHMuc3RhZ2VFbnYgfHwgZGVmYXVsdFN0YWdlRW52O1xuXG4gICAgLy8gQWZ0ZXIgYXNzZXRzIGFyZSBwdWJsaXNoZWQsIHRoZXkgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgYXNzZW1ibHkgZGlyZWN0b3J5XG4gICAgLy8gdG8gaGVscCBwcmV2ZW50IGhpdHRpbmcgdGhlIENvZGVQaXBlbGluZSBhcnRpZmFjdCBsaW1pdC5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzk5MTdcbiAgICBsZXQgc3RyaXBBc3NldHNGcm9tQXNzZW1ibHk6IENvZGVCdWlsZFN0ZXAgfCB1bmRlZmluZWQ7XG4gICAgaWYgKHByb3BzLnN0cmlwQXNzZW1ibHlBc3NldHMpIHtcbiAgICAgIHN0cmlwQXNzZXRzRnJvbUFzc2VtYmx5ID0gbmV3IENvZGVCdWlsZFN0ZXAoXCJTdHJpcEFzc2V0c0Zyb21Bc3NlbWJseVwiLCB7XG4gICAgICAgIGlucHV0OiBjZGtQaXBlbGluZS5jbG91ZEFzc2VtYmx5RmlsZVNldCxcbiAgICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgICAnUzNfUEFUSD0ke0NPREVCVUlMRF9TT1VSQ0VfVkVSU0lPTiNcImFybjphd3M6czM6OjpcIn0nLFxuICAgICAgICAgIFwiWklQX0FSQ0hJVkU9JChiYXNlbmFtZSAkUzNfUEFUSClcIixcbiAgICAgICAgICBcImVjaG8gJFMzX1BBVEhcIixcbiAgICAgICAgICBcImVjaG8gJFpJUF9BUkNISVZFXCIsXG4gICAgICAgICAgXCJsc1wiLFxuICAgICAgICAgIFwicm0gLXJmdiBhc3NldC4qXCIsXG4gICAgICAgICAgXCJ6aXAgLXIgLXEgLUEgJFpJUF9BUkNISVZFICpcIixcbiAgICAgICAgICBcImxzXCIsXG4gICAgICAgICAgXCJhd3MgczMgY3AgJFpJUF9BUkNISVZFIHMzOi8vJFMzX1BBVEhcIixcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBjZGtQaXBlbGluZS5hZGRXYXZlKFwiQmVmb3JlU3RhZ2VEZXBsb3ltZW50XCIsIHtcbiAgICAgICAgcHJlOiBbc3RyaXBBc3NldHNGcm9tQXNzZW1ibHldLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQ29uc3RydWN0IGZ1bmN0aW9uIHRvIGdldCBTdGFja0lkIGZvciBkcmlmdCBjaGVja1xuICAgIGNvbnN0IHJvb3RTdGFja05hbWUgPSBTdGFjay5vZih0aGlzKS5zdGFja05hbWU7XG4gICAgY29uc3QgY29uc3RydWN0SWQgPSB0aGlzLm5vZGUuaWQ7XG4gICAgY29uc3QgZ2V0U3RhY2tJZCA9IChlbnZOYW1lOiBzdHJpbmcpID0+XG4gICAgICBgJHtyb290U3RhY2tOYW1lfS8ke2NvbnN0cnVjdElkfS8ke2Vudk5hbWV9LyR7cHJvcHMuc3RhY2tOYW1lfWA7XG5cbiAgICAvLyBEcmlmdCBjaGVjayBjb25maWdcbiAgICBjb25zdCBpc0RyaWZ0Q2hlY2tTdGVwID0gISFwcm9wcy5kcmlmdENoZWNrQ29uZmlnO1xuICAgIGNvbnN0IGNka0luc3RhbGxDbWQgPVxuICAgICAgcHJvcHMuZHJpZnRDaGVja0NvbmZpZz8uaW5zdGFsbENvbW1hbmQgPz9cbiAgICAgIFwicG5wbSBpbnN0YWxsIC0tZnJvemVuLWxvY2tmaWxlIC0taWdub3JlLXNjcmlwdHNcIjtcbiAgICBjb25zdCBjZGtSdW5DbWQgPSBwcm9wcy5kcmlmdENoZWNrQ29uZmlnPy5jZGtDb21tYW5kID8/IGBgO1xuXG4gICAgY29uc3QgYmV0YUVudk5hbWUgPSBcIk9yY2FCdXNCZXRhXCI7XG4gICAgY2RrUGlwZWxpbmUuYWRkU3RhZ2UoXG4gICAgICBuZXcgRGVwbG95bWVudFN0YWdlKFxuICAgICAgICB0aGlzLFxuICAgICAgICBiZXRhRW52TmFtZSxcbiAgICAgICAgc3RhZ2VFbnYuYmV0YSxcbiAgICAgICAgcHJvcHMuc3RhY2tOYW1lLFxuICAgICAgICBwcm9wcy5zdGFjayxcbiAgICAgICAgcHJvcHMuc3RhY2tDb25maWcuYmV0YSxcbiAgICAgICAgcHJvcHMuZ2l0aHViUmVwbyxcbiAgICAgICAgcHJvcHMuZ2l0aHViQnJhbmNoLFxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgcHJlOiBpc0RyaWZ0Q2hlY2tTdGVwXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIG5ldyBGYWlsT25EcmlmdEJ1aWxkU3RlcChcIkRyaWZ0T25GYWlsQmV0YUNoZWNrXCIsIHtcbiAgICAgICAgICAgICAgICBhY2NvdW50RW52OiBzdGFnZUVudi5iZXRhLFxuICAgICAgICAgICAgICAgIHN0YWNrSWQ6IGdldFN0YWNrSWQoYmV0YUVudk5hbWUpLFxuICAgICAgICAgICAgICAgIGNka0NvbW1hbmQ6IGNka1J1bkNtZCxcbiAgICAgICAgICAgICAgICBpbnN0YWxsQ29tbWFuZDogY2RrSW5zdGFsbENtZCxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBHQU1NQVxuICAgICAqL1xuICAgIGNvbnN0IGdhbW1hRW52TmFtZSA9IFwiT3JjYUJ1c0dhbW1hXCI7XG5cbiAgICBjZGtQaXBlbGluZS5hZGRTdGFnZShcbiAgICAgIG5ldyBEZXBsb3ltZW50U3RhZ2UoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGdhbW1hRW52TmFtZSxcbiAgICAgICAgc3RhZ2VFbnYuZ2FtbWEsXG4gICAgICAgIHByb3BzLnN0YWNrTmFtZSxcbiAgICAgICAgcHJvcHMuc3RhY2ssXG4gICAgICAgIHByb3BzLnN0YWNrQ29uZmlnLmdhbW1hLFxuICAgICAgICBwcm9wcy5naXRodWJSZXBvLFxuICAgICAgICBwcm9wcy5naXRodWJCcmFuY2gsXG4gICAgICApLFxuICAgICAge1xuICAgICAgICBwcmU6IGlzRHJpZnRDaGVja1N0ZXBcbiAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgbmV3IEZhaWxPbkRyaWZ0QnVpbGRTdGVwKFwiRHJpZnRPbkZhaWxHYW1tYUNoZWNrXCIsIHtcbiAgICAgICAgICAgICAgICBhY2NvdW50RW52OiBzdGFnZUVudi5nYW1tYSxcbiAgICAgICAgICAgICAgICBzdGFja0lkOiBnZXRTdGFja0lkKGdhbW1hRW52TmFtZSksXG4gICAgICAgICAgICAgICAgY2RrQ29tbWFuZDogY2RrUnVuQ21kLFxuICAgICAgICAgICAgICAgIGluc3RhbGxDb21tYW5kOiBjZGtJbnN0YWxsQ21kLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgcG9zdDogW1xuICAgICAgICAgIG5ldyBNYW51YWxBcHByb3ZhbEFjdGlvblN0ZXAoXCJQcm9tb3RlVG9Qcm9kXCIsIHtcbiAgICAgICAgICAgIGFjdGlvbk5hbWU6IFwiUHJvbW90ZVRvUHJvZFwiLFxuICAgICAgICAgICAgLy8gQ3VzdG9tIHN0ZXBzIGJ5cGFzcyBzdGFnZSBwcmUvcG9zdCBvcmRlcmluZywgc28gcnVuT3JkZXIgbXVzdCBiZSBleHBsaWNpdGx5IHNldC5cbiAgICAgICAgICAgIC8vIFNldCB0byA1IHRvIGVuc3VyZSB0aGlzIHJ1bnMgYWZ0ZXIgYWxsIE9yY2FCdXNHYW1tYSBzdGFnZSBzdGVwcyBjb21wbGV0ZS5cbiAgICAgICAgICAgIC8vIChHYW1tYSBkZXBsb3ltZW50IHR5cGljYWxseSB1c2VzIDIgc3RlcHMsIHNvIDUgcHJvdmlkZXMgYWRlcXVhdGUgYnVmZmVyKVxuICAgICAgICAgICAgcnVuT3JkZXI6IDUsXG4gICAgICAgICAgICAvLyA2MC1taW51dGUgdGltZW91dCBhbGxvd3MgcXVldWVkIHBpcGVsaW5lIGV4ZWN1dGlvbnMgdG8gcHJvY2VlZCBpZiBhcHByb3ZhbCBleHBpcmVzXG4gICAgICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDYwKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIFBST0RcbiAgICAgKi9cbiAgICBjb25zdCBwcm9kRW52TmFtZSA9IFwiT3JjYUJ1c1Byb2RcIjtcblxuICAgIGNka1BpcGVsaW5lLmFkZFN0YWdlKFxuICAgICAgbmV3IERlcGxveW1lbnRTdGFnZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgcHJvZEVudk5hbWUsXG4gICAgICAgIHN0YWdlRW52LnByb2QsXG4gICAgICAgIHByb3BzLnN0YWNrTmFtZSxcbiAgICAgICAgcHJvcHMuc3RhY2ssXG4gICAgICAgIHByb3BzLnN0YWNrQ29uZmlnLnByb2QsXG4gICAgICAgIHByb3BzLmdpdGh1YlJlcG8sXG4gICAgICAgIHByb3BzLmdpdGh1YkJyYW5jaCxcbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIHByZTogaXNEcmlmdENoZWNrU3RlcFxuICAgICAgICAgID8gW1xuICAgICAgICAgICAgICBuZXcgRmFpbE9uRHJpZnRCdWlsZFN0ZXAoXCJEcmlmdE9uRmFpbFByb2RDaGVja1wiLCB7XG4gICAgICAgICAgICAgICAgYWNjb3VudEVudjogc3RhZ2VFbnYucHJvZCxcbiAgICAgICAgICAgICAgICBzdGFja0lkOiBnZXRTdGFja0lkKHByb2RFbnZOYW1lKSxcbiAgICAgICAgICAgICAgICBjZGtDb21tYW5kOiBjZGtSdW5DbWQsXG4gICAgICAgICAgICAgICAgaW5zdGFsbENvbW1hbmQ6IGNka0luc3RhbGxDbWQsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXVxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgY2RrUGlwZWxpbmUuYnVpbGRQaXBlbGluZSgpO1xuXG4gICAgaWYgKHN0cmlwQXNzZXRzRnJvbUFzc2VtYmx5KSB7XG4gICAgICBjZGtQaXBlbGluZS5waXBlbGluZS5hcnRpZmFjdEJ1Y2tldC5ncmFudFJlYWRXcml0ZShcbiAgICAgICAgc3RyaXBBc3NldHNGcm9tQXNzZW1ibHkucHJvamVjdCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmVuYWJsZVNsYWNrTm90aWZpY2F0aW9uID8/IHRydWUpIHtcbiAgICAgIGNvbnN0IGFsZXJ0c0J1aWxkU2xhY2tDb25maWdBcm4gPSBTdHJpbmdQYXJhbWV0ZXIudmFsdWVGb3JTdHJpbmdQYXJhbWV0ZXIoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiL2NoYXRib3RfYXJuL3NsYWNrL2FsZXJ0cy1idWlsZFwiLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHRhcmdldCA9IFNsYWNrQ2hhbm5lbENvbmZpZ3VyYXRpb24uZnJvbVNsYWNrQ2hhbm5lbENvbmZpZ3VyYXRpb25Bcm4oXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiU2xhY2tDaGFubmVsQ29uZmlndXJhdGlvblwiLFxuICAgICAgICBhbGVydHNCdWlsZFNsYWNrQ29uZmlnQXJuLFxuICAgICAgKTtcblxuICAgICAgdGhpcy5waXBlbGluZS5ub3RpZnlPbihcIlBpcGVsaW5lU2xhY2tOb3RpZmljYXRpb25cIiwgdGFyZ2V0LCB7XG4gICAgICAgIGV2ZW50czogcHJvcHMubm90aWZpY2F0aW9uRXZlbnRzIHx8IFtcbiAgICAgICAgICBQaXBlbGluZU5vdGlmaWNhdGlvbkV2ZW50cy5QSVBFTElORV9FWEVDVVRJT05fRkFJTEVELFxuICAgICAgICBdLFxuICAgICAgICBkZXRhaWxUeXBlOiBEZXRhaWxUeXBlLkZVTEwsXG4gICAgICAgIG5vdGlmaWNhdGlvblJ1bGVOYW1lOiBgT3JjYUJ1cy0ke3Byb3BzLnBpcGVsaW5lTmFtZX1gLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgTWFudWFsQXBwcm92YWxBY3Rpb25TdGVwIHdpdGggcmVxdWlyZWQgcnVuT3JkZXIuXG4gKi9cbmludGVyZmFjZSBNYW51YWxBcHByb3ZhbEFjdGlvblN0ZXBQcm9wcyBleHRlbmRzIE1hbnVhbEFwcHJvdmFsQWN0aW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIHJ1biBvcmRlciBmb3IgdGhpcyBhY3Rpb24gaW4gdGhlIHBpcGVsaW5lIHN0YWdlLiBUaGUgc3RhZ2UgUHJlL1Bvc3Qgb3JkZXIgZG9lcyBub3QgYXBwbHkgdG8gdGhpcyBjdXN0b21cbiAgICogc3RlcC9hY3Rpb24sIHlvdSBuZWVkIHRvIGV4cGxpY2l0bHkgc2V0IHRoZSBydW5PcmRlci5cbiAgICovXG4gIHJ1bk9yZGVyOiBudW1iZXI7XG59XG4vKipcbiAqIEN1c3RvbSBtYW51YWwgYXBwcm92YWwgc3RlcCBmb3IgQ0RLIENvZGVQaXBlbGluZS5cbiAqXG4gKiBUaGlzIGNsYXNzIGJyaWRnZXMgdGhlIGdhcCB0byBlbmFibGUgdXNpbmcgTWFudWFsQXBwcm92YWxBY3Rpb24gd2l0aGluIGEgU3RlcCBjbGFzcyxcbiAqIG1ha2luZyBpdCBjb21wYXRpYmxlIHdpdGggY2RrLnBpcGVsaW5lcyBjb25zdHJ1Y3RzLlxuICpcbiAqIEBwYXJhbSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHN0ZXAuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwcm9wZXJ0aWVzIGZvciB0aGUgbWFudWFsIGFwcHJvdmFsIGFjdGlvbiwgaW5jbHVkaW5nXG4gKi9cbmNsYXNzIE1hbnVhbEFwcHJvdmFsQWN0aW9uU3RlcFxuICBleHRlbmRzIFN0ZXBcbiAgaW1wbGVtZW50cyBJQ29kZVBpcGVsaW5lQWN0aW9uRmFjdG9yeVxue1xuICBwcml2YXRlIHJlYWRvbmx5IG1hbnVhbEFwcHJvdmFsQWN0aW9uUHJvcHM6IE1hbnVhbEFwcHJvdmFsQWN0aW9uU3RlcFByb3BzO1xuICBjb25zdHJ1Y3RvcihpZDogc3RyaW5nLCBvcHRpb25zOiBNYW51YWxBcHByb3ZhbEFjdGlvblN0ZXBQcm9wcykge1xuICAgIHN1cGVyKGlkKTtcbiAgICB0aGlzLm1hbnVhbEFwcHJvdmFsQWN0aW9uUHJvcHMgPSBvcHRpb25zO1xuICB9XG5cbiAgcHVibGljIHByb2R1Y2VBY3Rpb24oXG4gICAgc3RhZ2U6IElTdGFnZSxcbiAgICBvcHRpb25zOiBQcm9kdWNlQWN0aW9uT3B0aW9ucyxcbiAgKTogQ29kZVBpcGVsaW5lQWN0aW9uRmFjdG9yeVJlc3VsdCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBNYW51YWxBcHByb3ZhbEFjdGlvbih0aGlzLm1hbnVhbEFwcHJvdmFsQWN0aW9uUHJvcHMpKTtcblxuICAgIHJldHVybiB7IHJ1bk9yZGVyc0NvbnN1bWVkOiAxIH07XG4gIH1cbn1cblxuY2xhc3MgRGVwbG95bWVudFN0YWdlIGV4dGVuZHMgU3RhZ2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGVudmlyb25tZW50TmFtZTogc3RyaW5nLFxuICAgIGVudjogRW52aXJvbm1lbnQsXG4gICAgc3RhY2tOYW1lOiBzdHJpbmcsXG4gICAgc3RhY2tDbGFzczogbmV3IChzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogYW55KSA9PiBTdGFjayxcbiAgICBhcHBTdGFja1Byb3BzOiBhbnksXG4gICAgZ2l0aHViUmVwbzogc3RyaW5nLFxuICAgIGdpdGh1YkJyYW5jaD86IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGVudmlyb25tZW50TmFtZSwgeyBlbnY6IGVudiB9KTtcblxuICAgIGxldCBzb3VyY2UgPSBgaHR0cHM6Ly9naXRodWIuY29tL09yY2FCdXMvJHtnaXRodWJSZXBvfWA7XG4gICAgaWYgKGdpdGh1YkJyYW5jaCAhPT0gdW5kZWZpbmVkICYmIGdpdGh1YkJyYW5jaCAhPT0gXCJtYWluXCIpIHtcbiAgICAgIHNvdXJjZSA9IGAke3NvdXJjZX0vdHJlZS8ke2dpdGh1YkJyYW5jaH1gO1xuICAgIH1cblxuICAgIG5ldyBzdGFja0NsYXNzKHRoaXMsIHN0YWNrTmFtZSwge1xuICAgICAgZW52OiBlbnYsXG4gICAgICB0YWdzOiB7XG4gICAgICAgIFwidW1jY3Itb3JnOlByb2R1Y3RcIjogXCJPcmNhQnVzXCIsXG4gICAgICAgIFwidW1jY3Itb3JnOkNyZWF0b3JcIjogXCJDREtcIixcbiAgICAgICAgXCJ1bWNjci1vcmc6U2VydmljZVwiOiBzdGFja05hbWUsXG4gICAgICAgIFwidW1jY3Itb3JnOlNvdXJjZVwiOiBzb3VyY2UsXG4gICAgICB9LFxuICAgICAgLi4uYXBwU3RhY2tQcm9wcyxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZhaWxPbkRyaWZ0QnVpbGRTdGVwUHJvcHMge1xuICAvKipcbiAgICogQVdTIGFjY291bnQgYW5kIHJlZ2lvbiB3aGVyZSB0aGUgZHJpZnQgY2hlY2sgcnVucy5cbiAgICogVXNlZCB0byBhc3N1bWUgdGhlIENESyBsb29rdXAgcm9sZSBhbmQgc2V0IEFXU19ERUZBVUxUX1JFR0lPTi5cbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnRFbnY6IEVudmlyb25tZW50O1xuICAvKipcbiAgICogRnVsbHkgcXVhbGlmaWVkIENESyBzdGFjayBJRCB0byBjaGVjayBmb3IgZHJpZnQuXG4gICAqXG4gICAqIEZvcm1hdDogYDxyb290U3RhY2s+Lzxjb25zdHJ1Y3RJZD4vPGVudk5hbWU+LzxzdGFja05hbWU+YFxuICAgKlxuICAgKiBFeGFtcGxlOiBgRGV2U3RhY2svRGVwbG95bWVudFBpcGVsaW5lL09yY2FCdXNCZXRhL1Rlc3RTdGFja2BcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrSWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIENESyBDTEkgZW50cnlwb2ludCB1c2VkIHRvIHJ1biB0aGUgZHJpZnQgY29tbWFuZC5cbiAgICogRXhhbXBsZXM6IFwicG5wbSBjZGtcIiwgXCJwbnBtIGNkay1zdGF0ZWZ1bFwiLCBcInBucG0gY2RrLXN0YXRlbGVzc1wiLlxuICAgKiBNdXN0IHN1cHBvcnQ6IFwiZHJpZnQgPHN0YWNrSWQ+XCIuXG4gICAqL1xuICByZWFkb25seSBjZGtDb21tYW5kOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDb21tYW5kIHRvIGluc3RhbGwgZGVwZW5kZW5jaWVzIGJlZm9yZSBydW5uaW5nIENESy5cbiAgICogSWYgeW91ciBhcHAgaXMgaW4gYSBzdWJkaXJlY3RvcnksIHByZWZpeCB3aXRoIFwiY2QgPGRpcj4gJiZcIi5cbiAgICogRXhhbXBsZTogXCJjZCBkZXYgJiYgcG5wbSBpbnN0YWxsIC0tZnJvemVuLWxvY2tmaWxlIC0taWdub3JlLXNjcmlwdHNcIlxuICAgKlxuICAgKiBEZWZhdWx0OiBcInBucG0gaW5zdGFsbCAtLWZyb3plbi1sb2NrZmlsZSAtLWlnbm9yZS1zY3JpcHRzXCJcbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbGxDb21tYW5kPzogc3RyaW5nO1xufVxuXG5jbGFzcyBGYWlsT25EcmlmdEJ1aWxkU3RlcCBleHRlbmRzIENvZGVCdWlsZFN0ZXAge1xuICBjb25zdHJ1Y3RvcihcbiAgICBpZDogc3RyaW5nLFxuICAgIHtcbiAgICAgIGFjY291bnRFbnYsXG4gICAgICBzdGFja0lkLFxuICAgICAgY2RrQ29tbWFuZCxcbiAgICAgIGluc3RhbGxDb21tYW5kLFxuICAgIH06IEZhaWxPbkRyaWZ0QnVpbGRTdGVwUHJvcHMsXG4gICkge1xuICAgIGNvbnN0IGNka0luc3RhbGwgPSBpbnN0YWxsQ29tbWFuZFxuICAgICAgPyBpbnN0YWxsQ29tbWFuZFxuICAgICAgOiBcInBucG0gaW5zdGFsbCAtLWZyb3plbi1sb2NrZmlsZSAtLWlnbm9yZS1zY3JpcHRzXCI7XG5cbiAgICBzdXBlcihpZCwge1xuICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgXCJub2RlIC12XCIsXG4gICAgICAgIFwibnBtIGluc3RhbGwgLS1nbG9iYWwgY29yZXBhY2tAbGF0ZXN0XCIsXG4gICAgICAgIFwiY29yZXBhY2sgLS12ZXJzaW9uXCIsXG4gICAgICAgIFwiY29yZXBhY2sgZW5hYmxlXCIsXG4gICAgICAgIGNka0luc3RhbGwsXG5cbiAgICAgICAgYExPT0tVUF9ST0xFX0FSTj1cImFybjphd3M6aWFtOjoke2FjY291bnRFbnYuYWNjb3VudH06cm9sZS9jZGstaG5iNjU5ZmRzLWxvb2t1cC1yb2xlLSR7YWNjb3VudEVudi5hY2NvdW50fS0ke2FjY291bnRFbnYucmVnaW9ufVwiYCxcbiAgICAgICAgJ1NFU1NJT05fTkFNRT1cImRyaWZ0LWNoZWNrXCInLFxuICAgICAgICAncmVhZCBBV1NfQUNDRVNTX0tFWV9JRCBBV1NfU0VDUkVUX0FDQ0VTU19LRVkgQVdTX1NFU1NJT05fVE9LRU4gPCA8KGF3cyBzdHMgYXNzdW1lLXJvbGUgLS1yb2xlLWFybiBcIiRMT09LVVBfUk9MRV9BUk5cIiAtLXJvbGUtc2Vzc2lvbi1uYW1lIFwiJFNFU1NJT05fTkFNRVwiIC0tZHVyYXRpb24tc2Vjb25kcyA5MDAgLS1xdWVyeSBcXCdDcmVkZW50aWFscy5bQWNjZXNzS2V5SWQsU2VjcmV0QWNjZXNzS2V5LFNlc3Npb25Ub2tlbl1cXCcgLS1vdXRwdXQgdGV4dCknLFxuICAgICAgICBcImV4cG9ydCBBV1NfQUNDRVNTX0tFWV9JRCBBV1NfU0VDUkVUX0FDQ0VTU19LRVkgQVdTX1NFU1NJT05fVE9LRU5cIixcbiAgICAgICAgYGV4cG9ydCBBV1NfREVGQVVMVF9SRUdJT049XCIke2FjY291bnRFbnYucmVnaW9ufVwiYCxcbiAgICAgICAgXCJhd3Mgc3RzIGdldC1jYWxsZXItaWRlbnRpdHlcIixcblxuICAgICAgICBgaWYgJHtjZGtDb21tYW5kfSBscyB8IGdyZXAgLUZxIFwiJHtzdGFja0lkfVwiOyB0aGVuIGVjaG8gXCJTdGFjayAke3N0YWNrSWR9IGZvdW5kOyBjaGVja2luZyBmb3IgZHJpZnQuLi5cIjsgJHtjZGtDb21tYW5kfSBkcmlmdCBcIiR7c3RhY2tJZH1cIiAtZSAtLWZhaWw7IGVsc2UgZWNobyBcIlN0YWNrIG5vdCBmb3VuZCBpbiBjZGsgbHM7IHNraXBwaW5nIGRyaWZ0IGNoZWNrLlwiOyBmaWAsXG4gICAgICBdLFxuICAgICAgcm9sZVBvbGljeVN0YXRlbWVudHM6IFtcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1wic3RzOkFzc3VtZVJvbGVcIl0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICBgYXJuOmF3czppYW06OiR7YWNjb3VudEVudi5hY2NvdW50fTpyb2xlL2Nkay1obmI2NTlmZHMtbG9va3VwLXJvbGUtJHthY2NvdW50RW52LmFjY291bnR9LSR7YWNjb3VudEVudi5yZWdpb259YCxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
355
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwaXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMkNBQXVDO0FBQ3ZDLDZDQUFrRTtBQUNsRSw2REFNbUM7QUFDbkMsaURBQXNEO0FBQ3RELHFEQVErQjtBQUMvQixtRUFPc0M7QUFDdEMscUNBSWtCO0FBQ2xCLHlEQUFvRTtBQUNwRSxxRkFBbUU7QUFDbkUsdURBQWtFO0FBQ2xFLG1GQUk4QztBQUM5QyxpREFBc0Q7QUFFdEQ7O0dBRUc7QUFDVSxRQUFBLHFDQUFxQyxHQUFHO0lBQ25ELE1BQU0sRUFBRTtRQUNOLE9BQU8sRUFBRTtZQUNQLGtCQUFrQixFQUFFO2dCQUNsQixNQUFNLEVBQUUsTUFBTTthQUNmO1NBQ0Y7S0FDRjtDQUNGLENBQUM7QUFrTEY7Ozs7O0dBS0c7QUFDSCxNQUFhLHVCQUF3QixTQUFRLHNCQUFTOztJQUNwRDs7T0FFRztJQUNNLFFBQVEsQ0FBVztJQUU1QixZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFtQztRQUVuQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sV0FBVyxHQUFHLHlCQUFlLENBQUMsdUJBQXVCLENBQ3pELElBQUksRUFDSixxQkFBcUIsQ0FDdEIsQ0FBQztRQUNGLE1BQU0sd0JBQXdCLEdBQUcsY0FBYyxDQUFDO1FBQ2hELE1BQU0sVUFBVSxHQUFHLDhCQUFrQixDQUFDLFVBQVUsQ0FDOUMsV0FBVyxLQUFLLENBQUMsVUFBVSxFQUFFLEVBQzdCLEtBQUssQ0FBQyxZQUFZLEVBQ2xCO1lBQ0UsYUFBYSxFQUFFLFdBQVc7WUFDMUIsVUFBVSxFQUFFLHdCQUF3QjtZQUNwQyxhQUFhLEVBQUUsSUFBSTtTQUNwQixDQUNGLENBQUM7UUFFRixNQUFNLCtCQUErQixHQUNuQyxLQUFLLENBQUMsMkJBQTJCLElBQUksSUFBSSxDQUFDO1FBQzVDLE1BQU0sY0FBYyxHQUFHLCtCQUErQjtZQUNwRCxDQUFDLENBQUMsK0NBQTZCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWM7WUFDL0QsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUVkLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSwyQkFBUSxDQUFDLElBQUksRUFBRSx3QkFBd0IsRUFBRTtZQUMzRCxjQUFjLEVBQUUsY0FBYztZQUM5QixZQUFZLEVBQUUsK0JBQVksQ0FBQyxFQUFFO1lBQzdCLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLGtDQUFrQztZQUNsQyxpR0FBaUc7WUFDakcsd0JBQXdCLEVBQUUsSUFBSTtTQUMvQixDQUFDLENBQUM7UUFFSCxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN2RCxNQUFNLFNBQVMsR0FBNkIsRUFBRSxDQUFDO1lBRS9DLElBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzVCLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUM7WUFDbEQsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzVCLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUM7WUFDbEQsQ0FBQztZQUVELGdGQUFnRjtZQUNoRixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUEyQixDQUFDO1lBQ25FLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUU7Z0JBQzFDO29CQUNFLGdCQUFnQixFQUFFO3dCQUNoQixJQUFJLEVBQUU7NEJBQ0o7Z0NBQ0UsUUFBUSxFQUFFO29DQUNSLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7aUNBQy9CO2dDQUNELFNBQVMsRUFBRSxTQUFTOzZCQUNyQjt5QkFDRjt3QkFDRCxnQkFBZ0IsRUFBRSx3QkFBd0I7cUJBQzNDO29CQUNELFlBQVksRUFBRSwwQkFBMEI7aUJBQ3pDO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELDJDQUEyQztRQUMzQyxNQUFNLEVBQ0osT0FBTyxFQUFFLGtCQUFrQixHQUFHO1lBQzVCLHNDQUFzQztZQUN0QyxpQkFBaUI7WUFDakIsaURBQWlEO1lBQ2pELFdBQVc7U0FDWixFQUNELGdCQUFnQixFQUFFLHVCQUF1QixHQUFHO1lBQzFDLE1BQU0sRUFBRTtnQkFDTixPQUFPLEVBQUU7b0JBQ1Asa0JBQWtCLEVBQUU7d0JBQ2xCLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2lCQUNGO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsS0FBSztTQUNmLEdBQ0YsR0FBRyxLQUFLLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDO1FBQ2xDLE1BQU0sV0FBVyxHQUFHLElBQUkseUJBQWEsQ0FBQyxhQUFhLEVBQUU7WUFDbkQsUUFBUSxFQUFFLGtCQUFrQjtZQUM1QixLQUFLLEVBQUUsVUFBVTtZQUNqQixnQkFBZ0IsRUFBRTtnQkFDaEIsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLFdBQVcsRUFBRSwyQkFBVyxDQUFDLEtBQUs7Z0JBQzlCLFVBQVUsRUFBRSxrQ0FBa0IsQ0FBQywyQkFBMkI7Z0JBQzFELG9CQUFvQixFQUFFO29CQUNwQixZQUFZLEVBQUU7d0JBQ1osS0FBSyxFQUFFLDJCQUEyQjtxQkFDbkM7aUJBQ0Y7YUFDRjtZQUNELGdCQUFnQixFQUFFLHVCQUF1QjtnQkFDdkMsQ0FBQyxDQUFDLHlCQUFTLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDO2dCQUMvQyxDQUFDLENBQUMsU0FBUztTQUNkLENBQUMsQ0FBQztRQUVILG9DQUFvQztRQUNwQyxNQUFNLEVBQ0osT0FBTyxFQUFFLGtCQUFrQixFQUMzQixnQkFBZ0IsRUFBRSx1QkFBdUIsR0FBRyxTQUFTLEdBQ3RELEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDO1FBQzVCLE1BQU0sV0FBVyxHQUFHLElBQUkseUJBQWEsQ0FBQyxhQUFhLEVBQUU7WUFDbkQsUUFBUSxFQUFFLGtCQUFrQjtZQUM1QixLQUFLLEVBQUUsVUFBVTtZQUNqQixnQkFBZ0IsRUFBRTtnQkFDaEIsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLFdBQVcsRUFBRSwyQkFBVyxDQUFDLEtBQUs7Z0JBQzlCLFVBQVUsRUFBRSxrQ0FBa0IsQ0FBQywyQkFBMkI7Z0JBQzFELG9CQUFvQixFQUFFO29CQUNwQixZQUFZLEVBQUU7d0JBQ1osS0FBSyxFQUFFLDJCQUEyQjtxQkFDbkM7aUJBQ0Y7YUFDRjtZQUNELGdCQUFnQixFQUFFLHVCQUF1QjtnQkFDdkMsQ0FBQyxDQUFDLHlCQUFTLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDO2dCQUMvQyxDQUFDLENBQUMsU0FBUztTQUNkLENBQUMsQ0FBQztRQUVILE1BQU0sRUFBRSxjQUFjLEdBQUcsNkNBQXFDLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDekUsTUFBTSxTQUFTLEdBQUcsSUFBSSx5QkFBYSxDQUFDLFVBQVUsRUFBRTtZQUM5QyxlQUFlLEVBQUU7Z0JBQ2YsU0FBUztnQkFDVCxzQ0FBc0M7Z0JBQ3RDLG9CQUFvQjtnQkFDcEIsaUJBQWlCO2FBQ2xCO1lBQ0QsUUFBUSxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzNCLEtBQUssRUFBRSxVQUFVO1lBQ2pCLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxNQUFNLElBQUksU0FBUztZQUNqRCxnQkFBZ0IsRUFBRSx5QkFBUyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUM7U0FDdkQsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV6QyxNQUFNLFdBQVcsR0FBRyxJQUFJLHdCQUFZLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQzVELFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUTtZQUMzQixLQUFLLEVBQUUsU0FBUztZQUNoQixZQUFZLEVBQUUsSUFBSTtZQUNsQixpQkFBaUIsRUFBRTtnQkFDakIsZ0JBQWdCLEVBQUU7b0JBQ2hCLFdBQVcsRUFBRSwyQkFBVyxDQUFDLEtBQUs7b0JBQzlCLFVBQVUsRUFBRSxrQ0FBa0IsQ0FBQywyQkFBMkI7b0JBQzFELG9CQUFvQixFQUFFO3dCQUNwQixZQUFZLEVBQUU7NEJBQ1osS0FBSyxFQUFFLDJCQUEyQjt5QkFDbkM7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sZUFBZSxHQUFrQjtZQUNyQyxJQUFJLEVBQUUseUJBQWdCO1lBQ3RCLEtBQUssRUFBRSwwQkFBaUI7WUFDeEIsSUFBSSxFQUFFLHlCQUFnQjtTQUN2QixDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxlQUFlLENBQUM7UUFFbkQsOEVBQThFO1FBQzlFLDJEQUEyRDtRQUMzRCw2Q0FBNkM7UUFDN0MsSUFBSSx1QkFBa0QsQ0FBQztRQUN2RCxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzlCLHVCQUF1QixHQUFHLElBQUkseUJBQWEsQ0FBQyx5QkFBeUIsRUFBRTtnQkFDckUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxvQkFBb0I7Z0JBQ3ZDLFFBQVEsRUFBRTtvQkFDUixxREFBcUQ7b0JBQ3JELGtDQUFrQztvQkFDbEMsZUFBZTtvQkFDZixtQkFBbUI7b0JBQ25CLElBQUk7b0JBQ0osaUJBQWlCO29CQUNqQiw2QkFBNkI7b0JBQzdCLElBQUk7b0JBQ0osc0NBQXNDO2lCQUN2QzthQUNGLENBQUMsQ0FBQztZQUVILFdBQVcsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUU7Z0JBQzNDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDO2FBQy9CLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxvREFBb0Q7UUFDcEQsTUFBTSxhQUFhLEdBQUcsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQy9DLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sVUFBVSxHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUUsQ0FDckMsR0FBRyxhQUFhLElBQUksV0FBVyxJQUFJLE9BQU8sSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFbEUscUJBQXFCO1FBQ3JCLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztRQUNsRCxNQUFNLGFBQWEsR0FDakIsS0FBSyxDQUFDLGdCQUFnQixFQUFFLGNBQWM7WUFDdEMsaURBQWlELENBQUM7UUFDcEQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFFM0QsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDO1FBQ2xDLFdBQVcsQ0FBQyxRQUFRLENBQ2xCLElBQUksZUFBZSxDQUNqQixJQUFJLEVBQ0osV0FBVyxFQUNYLFFBQVEsQ0FBQyxJQUFJLEVBQ2IsS0FBSyxDQUFDLFNBQVMsRUFDZixLQUFLLENBQUMsS0FBSyxFQUNYLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUN0QixLQUFLLENBQUMsVUFBVSxFQUNoQixLQUFLLENBQUMsWUFBWSxDQUNuQixFQUNEO1lBQ0UsR0FBRyxFQUFFLGdCQUFnQjtnQkFDbkIsQ0FBQyxDQUFDO29CQUNFLElBQUksb0JBQW9CLENBQUMsc0JBQXNCLEVBQUU7d0JBQy9DLFVBQVUsRUFBRSxRQUFRLENBQUMsSUFBSTt3QkFDekIsT0FBTyxFQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUM7d0JBQ2hDLFVBQVUsRUFBRSxTQUFTO3dCQUNyQixjQUFjLEVBQUUsYUFBYTtxQkFDOUIsQ0FBQztpQkFDSDtnQkFDSCxDQUFDLENBQUMsU0FBUztTQUNkLENBQ0YsQ0FBQztRQUVGOztXQUVHO1FBQ0gsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDO1FBRXBDLFdBQVcsQ0FBQyxRQUFRLENBQ2xCLElBQUksZUFBZSxDQUNqQixJQUFJLEVBQ0osWUFBWSxFQUNaLFFBQVEsQ0FBQyxLQUFLLEVBQ2QsS0FBSyxDQUFDLFNBQVMsRUFDZixLQUFLLENBQUMsS0FBSyxFQUNYLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUN2QixLQUFLLENBQUMsVUFBVSxFQUNoQixLQUFLLENBQUMsWUFBWSxDQUNuQixFQUNEO1lBQ0UsR0FBRyxFQUFFLGdCQUFnQjtnQkFDbkIsQ0FBQyxDQUFDO29CQUNFLElBQUksb0JBQW9CLENBQUMsdUJBQXVCLEVBQUU7d0JBQ2hELFVBQVUsRUFBRSxRQUFRLENBQUMsS0FBSzt3QkFDMUIsT0FBTyxFQUFFLFVBQVUsQ0FBQyxZQUFZLENBQUM7d0JBQ2pDLFVBQVUsRUFBRSxTQUFTO3dCQUNyQixjQUFjLEVBQUUsYUFBYTtxQkFDOUIsQ0FBQztpQkFDSDtnQkFDSCxDQUFDLENBQUMsU0FBUztZQUNiLElBQUksRUFBRTtnQkFDSixJQUFJLHdCQUF3QixDQUFDLGVBQWUsRUFBRTtvQkFDNUMsVUFBVSxFQUFFLGVBQWU7b0JBQzNCLG1GQUFtRjtvQkFDbkYsNEVBQTRFO29CQUM1RSwyRUFBMkU7b0JBQzNFLFFBQVEsRUFBRSxDQUFDO29CQUNYLHFGQUFxRjtvQkFDckYsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztpQkFDOUIsQ0FBQzthQUNIO1NBQ0YsQ0FDRixDQUFDO1FBRUY7O1dBRUc7UUFDSCxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUM7UUFFbEMsV0FBVyxDQUFDLFFBQVEsQ0FDbEIsSUFBSSxlQUFlLENBQ2pCLElBQUksRUFDSixXQUFXLEVBQ1gsUUFBUSxDQUFDLElBQUksRUFDYixLQUFLLENBQUMsU0FBUyxFQUNmLEtBQUssQ0FBQyxLQUFLLEVBQ1gsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQ3RCLEtBQUssQ0FBQyxVQUFVLEVBQ2hCLEtBQUssQ0FBQyxZQUFZLENBQ25CLEVBQ0Q7WUFDRSxHQUFHLEVBQUUsZ0JBQWdCO2dCQUNuQixDQUFDLENBQUM7b0JBQ0UsSUFBSSxvQkFBb0IsQ0FBQyxzQkFBc0IsRUFBRTt3QkFDL0MsVUFBVSxFQUFFLFFBQVEsQ0FBQyxJQUFJO3dCQUN6QixPQUFPLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQzt3QkFDaEMsVUFBVSxFQUFFLFNBQVM7d0JBQ3JCLGNBQWMsRUFBRSxhQUFhO3FCQUM5QixDQUFDO2lCQUNIO2dCQUNILENBQUMsQ0FBQyxTQUFTO1NBQ2QsQ0FDRixDQUFDO1FBRUYsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRTVCLElBQUksdUJBQXVCLEVBQUUsQ0FBQztZQUM1QixXQUFXLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQ2hELHVCQUF1QixDQUFDLE9BQU8sQ0FDaEMsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMxQyxNQUFNLHlCQUF5QixHQUFHLHlCQUFlLENBQUMsdUJBQXVCLENBQ3ZFLElBQUksRUFDSixpQ0FBaUMsQ0FDbEMsQ0FBQztZQUNGLE1BQU0sTUFBTSxHQUFHLHVDQUF5QixDQUFDLGdDQUFnQyxDQUN2RSxJQUFJLEVBQ0osMkJBQTJCLEVBQzNCLHlCQUF5QixDQUMxQixDQUFDO1lBRUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsMkJBQTJCLEVBQUUsTUFBTSxFQUFFO2dCQUMxRCxNQUFNLEVBQUUsS0FBSyxDQUFDLGtCQUFrQixJQUFJO29CQUNsQyw2Q0FBMEIsQ0FBQyx5QkFBeUI7aUJBQ3JEO2dCQUNELFVBQVUsRUFBRSxzQ0FBVSxDQUFDLElBQUk7Z0JBQzNCLG9CQUFvQixFQUFFLFdBQVcsS0FBSyxDQUFDLFlBQVksRUFBRTthQUN0RCxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzs7QUFoVkgsMERBaVZDO0FBWUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLHdCQUNKLFNBQVEsZ0JBQUk7SUFHSyx5QkFBeUIsQ0FBZ0M7SUFDMUUsWUFBWSxFQUFVLEVBQUUsT0FBc0M7UUFDNUQsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ1YsSUFBSSxDQUFDLHlCQUF5QixHQUFHLE9BQU8sQ0FBQztJQUMzQyxDQUFDO0lBRU0sYUFBYSxDQUNsQixLQUFhLEVBQ2IsT0FBNkI7UUFFN0IsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLCtDQUFvQixDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUM7UUFFMUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2xDLENBQUM7Q0FDRjtBQUVELE1BQU0sZUFBZ0IsU0FBUSxtQkFBSztJQUNqQyxZQUNFLEtBQWdCLEVBQ2hCLGVBQXVCLEVBQ3ZCLEdBQWdCLEVBQ2hCLFNBQWlCLEVBQ2pCLFVBQW1FLEVBQ25FLGFBQWtCLEVBQ2xCLFVBQWtCLEVBQ2xCLFlBQXFCO1FBRXJCLEtBQUssQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFNUMsSUFBSSxNQUFNLEdBQUcsOEJBQThCLFVBQVUsRUFBRSxDQUFDO1FBQ3hELElBQUksWUFBWSxLQUFLLFNBQVMsSUFBSSxZQUFZLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDMUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxTQUFTLFlBQVksRUFBRSxDQUFDO1FBQzVDLENBQUM7UUFFRCxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQzlCLEdBQUcsRUFBRSxHQUFHO1lBQ1IsSUFBSSxFQUFFO2dCQUNKLG1CQUFtQixFQUFFLFNBQVM7Z0JBQzlCLG1CQUFtQixFQUFFLEtBQUs7Z0JBQzFCLG1CQUFtQixFQUFFLFNBQVM7Z0JBQzlCLGtCQUFrQixFQUFFLE1BQU07YUFDM0I7WUFDRCxHQUFHLGFBQWE7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBZ0NELE1BQU0sb0JBQXFCLFNBQVEseUJBQWE7SUFDOUMsWUFDRSxFQUFVLEVBQ1YsRUFDRSxVQUFVLEVBQ1YsT0FBTyxFQUNQLFVBQVUsRUFDVixjQUFjLEdBQ1k7UUFFNUIsTUFBTSxVQUFVLEdBQUcsY0FBYztZQUMvQixDQUFDLENBQUMsY0FBYztZQUNoQixDQUFDLENBQUMsaURBQWlELENBQUM7UUFFdEQsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUNSLFFBQVEsRUFBRTtnQkFDUixTQUFTO2dCQUNULHNDQUFzQztnQkFDdEMsb0JBQW9CO2dCQUNwQixpQkFBaUI7Z0JBQ2pCLFVBQVU7Z0JBRVYsaUNBQWlDLFVBQVUsQ0FBQyxPQUFPLG1DQUFtQyxVQUFVLENBQUMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUc7Z0JBQ2hJLDRCQUE0QjtnQkFDNUIsbVFBQW1RO2dCQUNuUSxrRUFBa0U7Z0JBQ2xFLDhCQUE4QixVQUFVLENBQUMsTUFBTSxHQUFHO2dCQUNsRCw2QkFBNkI7Z0JBRTdCLE1BQU0sVUFBVSxtQkFBbUIsT0FBTyx1QkFBdUIsT0FBTyxtQ0FBbUMsVUFBVSxXQUFXLE9BQU8sK0VBQStFO2FBQ3ZOO1lBQ0Qsb0JBQW9CLEVBQUU7Z0JBQ3BCLElBQUkseUJBQWUsQ0FBQztvQkFDbEIsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNCLFNBQVMsRUFBRTt3QkFDVCxnQkFBZ0IsVUFBVSxDQUFDLE9BQU8sbUNBQW1DLFVBQVUsQ0FBQyxPQUFPLElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRTtxQkFDL0c7aUJBQ0YsQ0FBQzthQUNIO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IER1cmF0aW9uLCBFbnZpcm9ubWVudCwgU3RhY2ssIFN0YWdlIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge1xuICBCdWlsZFNwZWMsXG4gIENvbXB1dGVUeXBlLFxuICBJUHJvamVjdCxcbiAgTGludXhBcm1CdWlsZEltYWdlLFxuICBQaXBlbGluZVByb2plY3QsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkXCI7XG5pbXBvcnQgeyBTdHJpbmdQYXJhbWV0ZXIgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNzbVwiO1xuaW1wb3J0IHtcbiAgQ29kZUJ1aWxkU3RlcCxcbiAgQ29kZVBpcGVsaW5lLFxuICBDb2RlUGlwZWxpbmVBY3Rpb25GYWN0b3J5UmVzdWx0LFxuICBDb2RlUGlwZWxpbmVTb3VyY2UsXG4gIElDb2RlUGlwZWxpbmVBY3Rpb25GYWN0b3J5LFxuICBQcm9kdWNlQWN0aW9uT3B0aW9ucyxcbiAgU3RlcCxcbn0gZnJvbSBcImF3cy1jZGstbGliL3BpcGVsaW5lc1wiO1xuaW1wb3J0IHtcbiAgUGlwZWxpbmUsXG4gIENmblBpcGVsaW5lLFxuICBQaXBlbGluZVR5cGUsXG4gIFBpcGVsaW5lTm90aWZpY2F0aW9uRXZlbnRzLFxuICBJU3RhZ2UsXG4gIEFydGlmYWN0LFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZGVwaXBlbGluZVwiO1xuaW1wb3J0IHtcbiAgQkVUQV9FTlZJUk9OTUVOVCxcbiAgR0FNTUFfRU5WSVJPTk1FTlQsXG4gIFBST0RfRU5WSVJPTk1FTlQsXG59IGZyb20gXCIuL2NvbmZpZ1wiO1xuaW1wb3J0IHsgU2xhY2tDaGFubmVsQ29uZmlndXJhdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2hhdGJvdFwiO1xuaW1wb3J0IHsgRGV0YWlsVHlwZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29kZXN0YXJub3RpZmljYXRpb25zXCI7XG5pbXBvcnQgeyBDcm9zc0RlcGxveW1lbnRBcnRpZmFjdEJ1Y2tldCB9IGZyb20gXCIuL2FydGlmYWN0LWJ1Y2tldFwiO1xuaW1wb3J0IHtcbiAgQ29kZUJ1aWxkQWN0aW9uLFxuICBNYW51YWxBcHByb3ZhbEFjdGlvbixcbiAgTWFudWFsQXBwcm92YWxBY3Rpb25Qcm9wcyxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jb2RlcGlwZWxpbmUtYWN0aW9uc1wiO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBwYXJ0aWFsIGJ1aWxkIHNwZWMgZm9yIHRoZSBzeW50aCBzdGVwIGluIHRoZSBwaXBlbGluZS5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfU1lOVEhfU1RFUF9QQVJUSUFMX0JVSUxEX1NQRUMgPSB7XG4gIHBoYXNlczoge1xuICAgIGluc3RhbGw6IHtcbiAgICAgIFwicnVudGltZS12ZXJzaW9uc1wiOiB7XG4gICAgICAgIG5vZGVqczogXCIyMi54XCIsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWdlRW52UHJvcHMge1xuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IGZvciB0aGUgYmV0YSBzdGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgYmV0YTogRW52aXJvbm1lbnQ7XG4gIC8qKlxuICAgKiBUaGUgZW52aXJvbm1lbnQgZm9yIHRoZSBnYW1tYSBzdGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2FtbWE6IEVudmlyb25tZW50O1xuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IGZvciB0aGUgcHJvZCBzdGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZDogRW52aXJvbm1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tDb25maWdQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGJldGEgKGRldikgc3RhZ2VcbiAgICovXG4gIHJlYWRvbmx5IGJldGE6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGdhbW1hIChzdGcpIHN0YWdlXG4gICAqL1xuICByZWFkb25seSBnYW1tYTogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgcHJvZCBzdGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZDogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBwcmUtZGVwbG95bWVudCBkcmlmdCBkZXRlY3Rpb24gY2hlY2tzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERyaWZ0Q2hlY2tDb25maWcge1xuICAvKipcbiAgICogQ0RLIENMSSBlbnRyeXBvaW50IHVzZWQgdG8gcnVuIHRoZSBkcmlmdCBjb21tYW5kLlxuICAgKiBFeGFtcGxlczogXCJwbnBtIGNka1wiLCBcInBucG0gY2RrLXN0YXRlZnVsXCIsIFwicG5wbSBjZGstc3RhdGVsZXNzXCIuXG4gICAqIE11c3Qgc3VwcG9ydDogXCJkcmlmdCA8c3RhY2tJZD5cIi5cbiAgICovXG4gIHJlYWRvbmx5IGNka0NvbW1hbmQ6IHN0cmluZztcbiAgLyoqXG4gICAqIENvbW1hbmQgdG8gaW5zdGFsbCBkZXBlbmRlbmNpZXMgYmVmb3JlIHJ1bm5pbmcgQ0RLLlxuICAgKiBJZiB5b3VyIGFwcCBpcyBpbiBhIHN1YmRpcmVjdG9yeSwgcHJlZml4IHdpdGggXCJjZCA8ZGlyPiAmJlwiLlxuICAgKiBFeGFtcGxlOiBcImNkIGRldiAmJiBwbnBtIGluc3RhbGwgLS1mcm96ZW4tbG9ja2ZpbGUgLS1pZ25vcmUtc2NyaXB0c1wiXG4gICAqXG4gICAqIERlZmF1bHQ6IFwicG5wbSBpbnN0YWxsIC0tZnJvemVuLWxvY2tmaWxlIC0taWdub3JlLXNjcmlwdHNcIlxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFsbENvbW1hbmQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZUJ1aWxkU3RlcFByb3BzIHtcbiAgLyoqXG4gICAqIHRoZSBtYWluIGNvbW1hbmQgZm9yIHRoZSBidWlsZCBzdGVwIHRvIHJ1blxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZDogc3RyaW5nW107XG4gIC8qKlxuICAgKiBQYXJ0aWFsIGJ1aWxkc3BlYyBmb3IgdGhpcyBDb2RlQnVpbGRTdGVwXG4gICAqL1xuICByZWFkb25seSBwYXJ0aWFsQnVpbGRTcGVjPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXBsb3ltZW50U3RhY2tQaXBlbGluZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBHaXRIdWIgYnJhbmNoIG5hbWUgdGhlIHBpcGVsaW5lIHdpbGwgbGlzdGVuIHRvLlxuICAgKiBBdm9pZCB1c2luZyBicmFuY2ggbmFtZXMgdGhhdCBjb250YWluIHNwZWNpYWwgY2hhcmFjdGVycyBzdWNoIGFzIHBhcmVudGhlc2VzLlxuICAgKiBBbGxvd2VkIHNwZWNpYWwgY2hhcmFjdGVycyBhcmU6IFwiKyAtID0gLiBfIDogLyBAXCIuXG4gICAqIFRoaXMgcmVzdHJpY3Rpb24gaXMgZHVlIHRvIEFXUyByZXNvdXJjZSB0YWdnaW5nIHJlcXVpcmVtZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IGdpdGh1YkJyYW5jaDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnkgbmFtZSB0aGF0IGV4aXN0IGluIHRoZSAnT3JjYUJ1cycgZ2l0aHViIG9yZ2FuaXNhdGlvbi4gZS5nLiBgYS1taWNyby1zZXJ2aWNlLXJlcG9gXG4gICAqL1xuICByZWFkb25seSBnaXRodWJSZXBvOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgdG8gd2hpY2ggdGhlIHBpcGVsaW5lIHdpbGwgYmUgZGVwbG95aW5nIHRvIGl0cyByZXNwZWN0aXZlIGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrOiBhbnk7XG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgbmFtZSAoaW4gY2xvdWRmb3JtYXRpb24pIGZvciB0aGUgc3RhY2sgZGVmaW5lZCBpbiBgc3RhY2tgLiBUaGUgc3RhY2sgbmFtZSB3aWxsIHByZXBlbmQgd2l0aCB0aGUgc3RhZ2VcbiAgICogbmFtZSBlLmcuIGBPcmNhQnVzQmV0YS08c3RhY2tOYW1lPmAsIGBPcmNhQnVzR2FtbWEtPHN0YWNrTmFtZT5gLCBgT3JjYUJ1c1Byb2QtPHN0YWNrTmFtZT5gXG4gICAqL1xuICByZWFkb25seSBzdGFja05hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzdGFjayBjb25maWd1cmF0aW9uL2NvbnN0YW50cyB0aGF0IHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBzdGFjayBwcm9wcy5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrQ29uZmlnOiBTdGFja0NvbmZpZ1Byb3BzO1xuICAvKipcbiAgICogVGhlIHBpcGVsaW5lIG5hbWUgaW4gdGhlIGJhc3Rpb24gYWNjb3VudC5cbiAgICovXG4gIHJlYWRvbmx5IHBpcGVsaW5lTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgcGF0dGVybnMgb2YgR2l0IHJlcG9zaXRvcnkgZmlsZSBwYXRocyB0aGF0LCB3aGVuIGEgY29tbWl0IGlzIHB1c2hlZCwgYXJlIHRvIGJlIElOQ0xVREVEIGFzIGNyaXRlcmlhIHRoYXQgc3RhcnRzIHRoZSBwaXBlbGluZS5cbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtY29kZXBpcGVsaW5lLXBpcGVsaW5lLWdpdGZpbGVwYXRoZmlsdGVyY3JpdGVyaWEuaHRtbFxuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgaW5jbHVkZWRGaWxlUGF0aHM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHBhdHRlcm5zIG9mIEdpdCByZXBvc2l0b3J5IGZpbGUgcGF0aHMgdGhhdCwgd2hlbiBhIGNvbW1pdCBpcyBwdXNoZWQsIGFyZSB0byBiZSBFWENMVURFRCBmcm9tIHN0YXJ0aW5nIHRoZSBwaXBlbGluZS5cbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtY29kZXBpcGVsaW5lLXBpcGVsaW5lLWdpdGZpbGVwYXRoZmlsdGVyY3JpdGVyaWEuaHRtbFxuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgZXhjbHVkZWRGaWxlUGF0aHM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSBjb21tYW5kIHRvIHJ1biB0byBzeW50aCB0aGUgY2RrIHN0YWNrIHdoaWNoIGFsc28gaW5zdGFsbGluZyB0aGUgY2RrIGRlcGVuZGVuY2llcy4gZS5nLiBbXCJwbnBtIGluc3RhbGwgLS1mcm96ZW4tbG9ja2ZpbGVcIiwgXCJwbnBtIGNkayBzeW50aFwiXVxuICAgKi9cbiAgcmVhZG9ubHkgY2RrU3ludGhDbWQ6IHN0cmluZ1tdO1xuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIHdoZXJlIHRoZSBjZGsgb3V0cHV0IHdpbGwgYmUgc3RvcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBjZGsub3V0XG4gICAqL1xuICByZWFkb25seSBjZGtPdXQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBDb2RlQnVpbGQgc3RlcCBkdXJpbmcgdGhlIENESyBzeW50aCBwaGFzZS4gSXQgd2lsbCBwYXNzZWQgYXMgdGhlIGBwYXJ0aWFsQnVpbGRTcGVjYCB0byB0aGUgYENvZGVCdWlsZFN0ZXBgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBERUZBVUxUX1NZTlRIX1NURVBfUEFSVElBTF9CVUlMRF9TUEVDXG4gICAqL1xuICByZWFkb25seSBzeW50aEJ1aWxkU3BlYz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciB0aGUgQ29kZUJ1aWxkIHN0ZXAgdGhhdCBydW5zIHVuaXQgdGVzdHMgZm9yIHRoZSBtYWluIGFwcGxpY2F0aW9uIGNvZGUuXG4gICAqIFRoaXMgc3RlcCB3aWxsIGV4ZWN1dGUgaW4gcGFyYWxsZWwgd2l0aCB7QGxpbmsgdW5pdElhY1Rlc3RDb25maWd9IGFzIHBhcnQgb2YgdGhlIHN5bnRoIHN0YWdlIGRlcGVuZGVuY2llcy5cbiAgICogQm90aCBtdXN0IHN1Y2NlZWQgYmVmb3JlIHRoZSBzeW50aCBzdGVwIHJ1bnMuXG4gICAqXG4gICAqIGVuc3VyZSB5b3VyIGNvbW1hbmQgaW5jbHVkZXMgJ2NkJyB0byB0aGUgbWFpbiBhcHAgZGlyZWN0b3J5LCBhcyB0aGUgYnVpbGQgY29udGV4dCBzdGFydHMgZnJvbSB0aGUgcm9vdC5cbiAgICovXG4gIHJlYWRvbmx5IHVuaXRBcHBUZXN0Q29uZmlnOiBDb2RlQnVpbGRTdGVwUHJvcHM7XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciB0aGUgQ29kZUJ1aWxkIHN0ZXAgdGhhdCBydW5zIHVuaXQgdGVzdHMgZm9yIEluZnJhc3RydWN0dXJlLWFzLUNvZGUgKElhQykgYXQgdGhlIHJlcG9zaXRvcnkgcm9vdC5cbiAgICogVGhpcyBzdGVwIHdpbGwgZXhlY3V0ZSBpbiBwYXJhbGxlbCB3aXRoIHtAbGluayB1bml0QXBwVGVzdENvbmZpZ30gYXMgcGFydCBvZiB0aGUgc3ludGggc3RhZ2UgZGVwZW5kZW5jaWVzLlxuICAgKiBCb3RoIG11c3Qgc3VjY2VlZCBiZWZvcmUgdGhlIHN5bnRoIHN0ZXAgcnVucy5cbiAgICpcbiAgICogVGhlIGRlZmF1bHQgY29tbWFuZCB3aWxsIGJlIGZyb20gdGhlIHJvb3Qgb2YgdGhlIHJlcG86IFtcIm5wbSBpbnN0YWxsIC0tZ2xvYmFsIGNvcmVwYWNrQGxhdGVzdFwiLCBcImNvcmVwYWNrIGVuYWJsZVwiLCBcIm1ha2UgaW5zdGFsbFwiLCBcIm1ha2UgdGVzdFwiXVxuICAgKi9cbiAgcmVhZG9ubHkgdW5pdElhY1Rlc3RDb25maWc/OiBDb2RlQnVpbGRTdGVwUHJvcHM7XG4gIC8qKlxuICAgKiBUaGUgc3RhZ2UgZW52aXJvbm1lbnQgZm9yIHRoZSBkZXBsb3ltZW50IHN0YWNrXG4gICAqL1xuICByZWFkb25seSBzdGFnZUVudj86IFN0YWdlRW52UHJvcHM7XG4gIC8qKlxuICAgKiBFbmFibGUgbm90aWZpY2F0aW9uIHRvIHRoZSAnYWxlcnRzLWJ1aWxkJyBzbGFjayBjaGFubmVsLlxuICAgKiBAZGVmYXVsdCBUcnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVTbGFja05vdGlmaWNhdGlvbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgcGlwZWxpbmUgbm90aWZpY2F0aW9uIGV2ZW50cyB0aGF0IHdpbGwgdHJpZ2dlciBhIFNsYWNrIGNoYW5uZWwgbm90aWZpY2F0aW9uLlxuICAgKiBPbmx5IGFwcGxpZXMgaWYgYGVuYWJsZVNsYWNrTm90aWZpY2F0aW9uYCBpcyBzZXQgdG8gdHJ1ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgW1BpcGVsaW5lTm90aWZpY2F0aW9uRXZlbnRzLlBJUEVMSU5FX0VYRUNVVElPTl9GQUlMRURdIOKAk1xuICAgKiAgIE9ubHkgZmFpbGVkIHBpcGVsaW5lIGV4ZWN1dGlvbnMgd2lsbCB0cmlnZ2VyIGEgbm90aWZpY2F0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uRXZlbnRzPzogUGlwZWxpbmVOb3RpZmljYXRpb25FdmVudHNbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZXVzZSB0aGUgZXhpc3RpbmcgYXJ0aWZhY3QgYnVja2V0IGZvciBjcm9zcy1kZXBsb3ltZW50IHBpcGVsaW5lcy5cbiAgICogSWYgc2V0IHRvIHRydWUsIGl0IHdpbGwgbG9vayB1cCB0aGUgZXhpc3RpbmcgYXJ0aWZhY3QgYnVja2V0IGluIHRoZSBUT09MQ0hBSU4gYWNjb3VudC5cbiAgICpcbiAgICogQGRlZmF1bHQgVHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmV1c2VFeGlzdGluZ0FydGlmYWN0QnVja2V0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUmVtb3ZlIGFzc2V0cyBmcm9tIHRoZSBDREsgYXNzZW1ibHkgcHJlLWRlcGxveW1lbnQgdG8gcHJldmVudCBoaXR0aW5nIENvZGVQaXBlbGluZSdzIDI1NiBNQiBhcnRpZmFjdCBzaXplIGxpbWl0LlxuICAgKiBVc2VmdWwgd2hlbiBDREsgYXNzZXRzIChMYW1iZGEgY29kZSwgRG9ja2VyIGltYWdlcywgZXRjLikgYXJlIGxhcmdlLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9pc3N1ZXMvOTkxN1xuICAgKi9cbiAgcmVhZG9ubHkgc3RyaXBBc3NlbWJseUFzc2V0cz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBkcmlmdCBkZXRlY3Rpb24gY2hlY2tzIGJlZm9yZSBkZXBsb3ltZW50LlxuICAgKiBJZiBzcGVjaWZpZWQsIHRoZSBwaXBlbGluZSB3aWxsIGNoZWNrIGZvciBDbG91ZEZvcm1hdGlvbiBkcmlmdCBhbmQgZmFpbCBpZiBkZXRlY3RlZC5cbiAgICovXG4gIHJlYWRvbmx5IGRyaWZ0Q2hlY2tDb25maWc/OiBEcmlmdENoZWNrQ29uZmlnO1xufVxuXG4vKipcbiAqIEEgQ0RLIGNvbnN0cnVjdCB0aGF0IGNyZWF0ZXMgYSBkZXBsb3ltZW50IHBpcGVsaW5lIGFjcm9zcyBlbnZpcm9ubWVudHMgZm9yIHRoZSBPcmNhQnVzIHByb2plY3QuXG4gKlxuICogUHJlcmVxdWlzaXRlOiBFbnN1cmUgdGhhdCB0aGUgXCJDcm9zc0RlcGxveW1lbnRBcnRpZmFjdEJ1Y2tldFwiIHN0YWNrIGlzIGRlcGxveWVkIGluIHRoZSBUT09MQ0hBSU4gYWNjb3VudFxuICogYmVmb3JlIHVzaW5nIHRoaXMgY29uc3RydWN0LlxuICovXG5leHBvcnQgY2xhc3MgRGVwbG95bWVudFN0YWNrUGlwZWxpbmUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIGNvZGUgcGlwZWxpbmUgY29uc3RydWN0IHRoYXQgaXMgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHBpcGVsaW5lOiBQaXBlbGluZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IERlcGxveW1lbnRTdGFja1BpcGVsaW5lUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBjb2RlU3RhckFybiA9IFN0cmluZ1BhcmFtZXRlci52YWx1ZUZvclN0cmluZ1BhcmFtZXRlcihcbiAgICAgIHRoaXMsXG4gICAgICBcImNvZGVzdGFyX2dpdGh1Yl9hcm5cIixcbiAgICApO1xuICAgIGNvbnN0IGNvZGVTdGFyU291cmNlQWN0aW9uTmFtZSA9IFwicGlwZWxpbmUtc3JjXCI7XG4gICAgY29uc3Qgc291cmNlRmlsZSA9IENvZGVQaXBlbGluZVNvdXJjZS5jb25uZWN0aW9uKFxuICAgICAgYE9yY2FCdXMvJHtwcm9wcy5naXRodWJSZXBvfWAsXG4gICAgICBwcm9wcy5naXRodWJCcmFuY2gsXG4gICAgICB7XG4gICAgICAgIGNvbm5lY3Rpb25Bcm46IGNvZGVTdGFyQXJuLFxuICAgICAgICBhY3Rpb25OYW1lOiBjb2RlU3RhclNvdXJjZUFjdGlvbk5hbWUsXG4gICAgICAgIHRyaWdnZXJPblB1c2g6IHRydWUsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBjb25zdCBpc1JldXNpbmdFeGlzdGluZ0FydGlmYWN0QnVja2V0ID1cbiAgICAgIHByb3BzLnJldXNlRXhpc3RpbmdBcnRpZmFjdEJ1Y2tldCA/PyB0cnVlO1xuICAgIGNvbnN0IGFydGlmYWN0QnVja2V0ID0gaXNSZXVzaW5nRXhpc3RpbmdBcnRpZmFjdEJ1Y2tldFxuICAgICAgPyBDcm9zc0RlcGxveW1lbnRBcnRpZmFjdEJ1Y2tldC5mcm9tTG9va3VwKHRoaXMpLmFydGlmYWN0QnVja2V0XG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIHRoaXMucGlwZWxpbmUgPSBuZXcgUGlwZWxpbmUodGhpcywgXCJEZXBsb3ltZW50Q29kZVBpcGVsaW5lXCIsIHtcbiAgICAgIGFydGlmYWN0QnVja2V0OiBhcnRpZmFjdEJ1Y2tldCxcbiAgICAgIHBpcGVsaW5lVHlwZTogUGlwZWxpbmVUeXBlLlYyLFxuICAgICAgcGlwZWxpbmVOYW1lOiBwcm9wcy5waXBlbGluZU5hbWUsXG4gICAgICBjcm9zc0FjY291bnRLZXlzOiB0cnVlLFxuICAgICAgLy8gZW5hYmxlIHJlc3RhcnRFeGVjdXRpb25PblVwZGF0ZVxuICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNzU3MDE3NzYvdXBkYXRlcGlwZWxpbmUtc3RhZ2UtaW4tY2RrLXBpcGVsaW5lLWlzLWNhbmNlbGxlZFxuICAgICAgcmVzdGFydEV4ZWN1dGlvbk9uVXBkYXRlOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLmluY2x1ZGVkRmlsZVBhdGhzIHx8IHByb3BzLmV4Y2x1ZGVkRmlsZVBhdGhzKSB7XG4gICAgICBjb25zdCBmaWxlUGF0aHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9O1xuXG4gICAgICBpZiAocHJvcHMuaW5jbHVkZWRGaWxlUGF0aHMpIHtcbiAgICAgICAgZmlsZVBhdGhzW1wiSW5jbHVkZXNcIl0gPSBwcm9wcy5pbmNsdWRlZEZpbGVQYXRocztcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy5leGNsdWRlZEZpbGVQYXRocykge1xuICAgICAgICBmaWxlUGF0aHNbXCJFeGNsdWRlc1wiXSA9IHByb3BzLmV4Y2x1ZGVkRmlsZVBhdGhzO1xuICAgICAgfVxuXG4gICAgICAvLyBBZGQgZXZlbnQgZmlsdGVyIHRvIG9ubHkgdHJpZ2dlciBpZiB0aGUgcHVzaCBldmVudCBpcyBmcm9tIGBkZXBsb3lgIGRpcmVjdG9yeVxuICAgICAgY29uc3QgY2ZuUGlwZWxpbmUgPSB0aGlzLnBpcGVsaW5lLm5vZGUuZGVmYXVsdENoaWxkIGFzIENmblBpcGVsaW5lO1xuICAgICAgY2ZuUGlwZWxpbmUuYWRkUHJvcGVydHlPdmVycmlkZShcIlRyaWdnZXJzXCIsIFtcbiAgICAgICAge1xuICAgICAgICAgIEdpdENvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgIFB1c2g6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIEJyYW5jaGVzOiB7XG4gICAgICAgICAgICAgICAgICBJbmNsdWRlczogW3Byb3BzLmdpdGh1YkJyYW5jaF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBGaWxlUGF0aHM6IGZpbGVQYXRocyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBTb3VyY2VBY3Rpb25OYW1lOiBjb2RlU3RhclNvdXJjZUFjdGlvbk5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBQcm92aWRlclR5cGU6IFwiQ29kZVN0YXJTb3VyY2VDb25uZWN0aW9uXCIsXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgdW5pdCB0ZXN0IGZvciBJYUMgYXQgdGhlIHJvb3Qgb2YgdGhlXG4gICAgY29uc3Qge1xuICAgICAgY29tbWFuZDogdW5pdElhY1Rlc3RDb21tYW5kID0gW1xuICAgICAgICBcIm5wbSBpbnN0YWxsIC0tZ2xvYmFsIGNvcmVwYWNrQGxhdGVzdFwiLFxuICAgICAgICBcImNvcmVwYWNrIGVuYWJsZVwiLFxuICAgICAgICBcInBucG0gaW5zdGFsbCAtLWZyb3plbi1sb2NrZmlsZSAtLWlnbm9yZS1zY3JpcHRzXCIsXG4gICAgICAgIFwicG5wbSB0ZXN0XCIsXG4gICAgICBdLFxuICAgICAgcGFydGlhbEJ1aWxkU3BlYzogdW5pdElhY1BhcnRpYWxCdWlsZFNwZWMgPSB7XG4gICAgICAgIHBoYXNlczoge1xuICAgICAgICAgIGluc3RhbGw6IHtcbiAgICAgICAgICAgIFwicnVudGltZS12ZXJzaW9uc1wiOiB7XG4gICAgICAgICAgICAgIG5vZGVqczogXCIyMlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB2ZXJzaW9uOiBcIjAuMlwiLFxuICAgICAgfSxcbiAgICB9ID0gcHJvcHMudW5pdElhY1Rlc3RDb25maWcgfHwge307XG4gICAgY29uc3QgdW5pdElhY1Rlc3QgPSBuZXcgQ29kZUJ1aWxkU3RlcChcIlVuaXRJYWNUZXN0XCIsIHtcbiAgICAgIGNvbW1hbmRzOiB1bml0SWFjVGVzdENvbW1hbmQsXG4gICAgICBpbnB1dDogc291cmNlRmlsZSxcbiAgICAgIGJ1aWxkRW52aXJvbm1lbnQ6IHtcbiAgICAgICAgcHJpdmlsZWdlZDogdHJ1ZSxcbiAgICAgICAgY29tcHV0ZVR5cGU6IENvbXB1dGVUeXBlLkxBUkdFLFxuICAgICAgICBidWlsZEltYWdlOiBMaW51eEFybUJ1aWxkSW1hZ2UuQU1BWk9OX0xJTlVYXzJfU1RBTkRBUkRfM18wLFxuICAgICAgICBlbnZpcm9ubWVudFZhcmlhYmxlczoge1xuICAgICAgICAgIE5PREVfT1BUSU9OUzoge1xuICAgICAgICAgICAgdmFsdWU6IFwiLS1tYXgtb2xkLXNwYWNlLXNpemU9ODE5MlwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgcGFydGlhbEJ1aWxkU3BlYzogdW5pdElhY1BhcnRpYWxCdWlsZFNwZWNcbiAgICAgICAgPyBCdWlsZFNwZWMuZnJvbU9iamVjdCh1bml0SWFjUGFydGlhbEJ1aWxkU3BlYylcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfSk7XG5cbiAgICAvLyBBZGRpbmcgdW5pdCB0ZXN0IGZvciB0aGUgbWFpbiBhcHBcbiAgICBjb25zdCB7XG4gICAgICBjb21tYW5kOiB1bml0QXBwVGVzdENvbW1hbmQsXG4gICAgICBwYXJ0aWFsQnVpbGRTcGVjOiB1bml0QXBwUGFydGlhbEJ1aWxkU3BlYyA9IHVuZGVmaW5lZCxcbiAgICB9ID0gcHJvcHMudW5pdEFwcFRlc3RDb25maWc7XG4gICAgY29uc3QgdW5pdEFwcFRlc3QgPSBuZXcgQ29kZUJ1aWxkU3RlcChcIlVuaXRBcHBUZXN0XCIsIHtcbiAgICAgIGNvbW1hbmRzOiB1bml0QXBwVGVzdENvbW1hbmQsXG4gICAgICBpbnB1dDogc291cmNlRmlsZSxcbiAgICAgIGJ1aWxkRW52aXJvbm1lbnQ6IHtcbiAgICAgICAgcHJpdmlsZWdlZDogdHJ1ZSxcbiAgICAgICAgY29tcHV0ZVR5cGU6IENvbXB1dGVUeXBlLkxBUkdFLFxuICAgICAgICBidWlsZEltYWdlOiBMaW51eEFybUJ1aWxkSW1hZ2UuQU1BWk9OX0xJTlVYXzJfU1RBTkRBUkRfM18wLFxuICAgICAgICBlbnZpcm9ubWVudFZhcmlhYmxlczoge1xuICAgICAgICAgIE5PREVfT1BUSU9OUzoge1xuICAgICAgICAgICAgdmFsdWU6IFwiLS1tYXgtb2xkLXNwYWNlLXNpemU9ODE5MlwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgcGFydGlhbEJ1aWxkU3BlYzogdW5pdEFwcFBhcnRpYWxCdWlsZFNwZWNcbiAgICAgICAgPyBCdWlsZFNwZWMuZnJvbU9iamVjdCh1bml0QXBwUGFydGlhbEJ1aWxkU3BlYylcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfSk7XG5cbiAgICBjb25zdCB7IHN5bnRoQnVpbGRTcGVjID0gREVGQVVMVF9TWU5USF9TVEVQX1BBUlRJQUxfQlVJTERfU1BFQyB9ID0gcHJvcHM7XG4gICAgY29uc3Qgc3ludGhTdGVwID0gbmV3IENvZGVCdWlsZFN0ZXAoXCJDZGtTeW50aFwiLCB7XG4gICAgICBpbnN0YWxsQ29tbWFuZHM6IFtcbiAgICAgICAgXCJub2RlIC12XCIsXG4gICAgICAgIFwibnBtIGluc3RhbGwgLS1nbG9iYWwgY29yZXBhY2tAbGF0ZXN0XCIsXG4gICAgICAgIFwiY29yZXBhY2sgLS12ZXJzaW9uXCIsXG4gICAgICAgIFwiY29yZXBhY2sgZW5hYmxlXCIsXG4gICAgICBdLFxuICAgICAgY29tbWFuZHM6IHByb3BzLmNka1N5bnRoQ21kLFxuICAgICAgaW5wdXQ6IHNvdXJjZUZpbGUsXG4gICAgICBwcmltYXJ5T3V0cHV0RGlyZWN0b3J5OiBwcm9wcy5jZGtPdXQgfHwgXCJjZGsub3V0XCIsXG4gICAgICBwYXJ0aWFsQnVpbGRTcGVjOiBCdWlsZFNwZWMuZnJvbU9iamVjdChzeW50aEJ1aWxkU3BlYyksXG4gICAgfSk7XG4gICAgc3ludGhTdGVwLmFkZFN0ZXBEZXBlbmRlbmN5KHVuaXRJYWNUZXN0KTtcbiAgICBzeW50aFN0ZXAuYWRkU3RlcERlcGVuZGVuY3kodW5pdEFwcFRlc3QpO1xuXG4gICAgY29uc3QgY2RrUGlwZWxpbmUgPSBuZXcgQ29kZVBpcGVsaW5lKHRoaXMsIFwiQ0RLQ29kZVBpcGVsaW5lXCIsIHtcbiAgICAgIGNvZGVQaXBlbGluZTogdGhpcy5waXBlbGluZSxcbiAgICAgIHN5bnRoOiBzeW50aFN0ZXAsXG4gICAgICBzZWxmTXV0YXRpb246IHRydWUsXG4gICAgICBjb2RlQnVpbGREZWZhdWx0czoge1xuICAgICAgICBidWlsZEVudmlyb25tZW50OiB7XG4gICAgICAgICAgY29tcHV0ZVR5cGU6IENvbXB1dGVUeXBlLkxBUkdFLFxuICAgICAgICAgIGJ1aWxkSW1hZ2U6IExpbnV4QXJtQnVpbGRJbWFnZS5BTUFaT05fTElOVVhfMl9TVEFOREFSRF8zXzAsXG4gICAgICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXM6IHtcbiAgICAgICAgICAgIE5PREVfT1BUSU9OUzoge1xuICAgICAgICAgICAgICB2YWx1ZTogXCItLW1heC1vbGQtc3BhY2Utc2l6ZT04MTkyXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGVmYXVsdFN0YWdlRW52OiBTdGFnZUVudlByb3BzID0ge1xuICAgICAgYmV0YTogQkVUQV9FTlZJUk9OTUVOVCxcbiAgICAgIGdhbW1hOiBHQU1NQV9FTlZJUk9OTUVOVCxcbiAgICAgIHByb2Q6IFBST0RfRU5WSVJPTk1FTlQsXG4gICAgfTtcbiAgICBjb25zdCBzdGFnZUVudiA9IHByb3BzLnN0YWdlRW52IHx8IGRlZmF1bHRTdGFnZUVudjtcblxuICAgIC8vIEFmdGVyIGFzc2V0cyBhcmUgcHVibGlzaGVkLCB0aGV5IGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIGFzc2VtYmx5IGRpcmVjdG9yeVxuICAgIC8vIHRvIGhlbHAgcHJldmVudCBoaXR0aW5nIHRoZSBDb2RlUGlwZWxpbmUgYXJ0aWZhY3QgbGltaXQuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2lzc3Vlcy85OTE3XG4gICAgbGV0IHN0cmlwQXNzZXRzRnJvbUFzc2VtYmx5OiBDb2RlQnVpbGRTdGVwIHwgdW5kZWZpbmVkO1xuICAgIGlmIChwcm9wcy5zdHJpcEFzc2VtYmx5QXNzZXRzKSB7XG4gICAgICBzdHJpcEFzc2V0c0Zyb21Bc3NlbWJseSA9IG5ldyBDb2RlQnVpbGRTdGVwKFwiU3RyaXBBc3NldHNGcm9tQXNzZW1ibHlcIiwge1xuICAgICAgICBpbnB1dDogY2RrUGlwZWxpbmUuY2xvdWRBc3NlbWJseUZpbGVTZXQsXG4gICAgICAgIGNvbW1hbmRzOiBbXG4gICAgICAgICAgJ1MzX1BBVEg9JHtDT0RFQlVJTERfU09VUkNFX1ZFUlNJT04jXCJhcm46YXdzOnMzOjo6XCJ9JyxcbiAgICAgICAgICBcIlpJUF9BUkNISVZFPSQoYmFzZW5hbWUgJFMzX1BBVEgpXCIsXG4gICAgICAgICAgXCJlY2hvICRTM19QQVRIXCIsXG4gICAgICAgICAgXCJlY2hvICRaSVBfQVJDSElWRVwiLFxuICAgICAgICAgIFwibHNcIixcbiAgICAgICAgICBcInJtIC1yZnYgYXNzZXQuKlwiLFxuICAgICAgICAgIFwiemlwIC1yIC1xIC1BICRaSVBfQVJDSElWRSAqXCIsXG4gICAgICAgICAgXCJsc1wiLFxuICAgICAgICAgIFwiYXdzIHMzIGNwICRaSVBfQVJDSElWRSBzMzovLyRTM19QQVRIXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgY2RrUGlwZWxpbmUuYWRkV2F2ZShcIkJlZm9yZVN0YWdlRGVwbG95bWVudFwiLCB7XG4gICAgICAgIHByZTogW3N0cmlwQXNzZXRzRnJvbUFzc2VtYmx5XSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIENvbnN0cnVjdCBmdW5jdGlvbiB0byBnZXQgU3RhY2tJZCBmb3IgZHJpZnQgY2hlY2tcbiAgICBjb25zdCByb290U3RhY2tOYW1lID0gU3RhY2sub2YodGhpcykuc3RhY2tOYW1lO1xuICAgIGNvbnN0IGNvbnN0cnVjdElkID0gdGhpcy5ub2RlLmlkO1xuICAgIGNvbnN0IGdldFN0YWNrSWQgPSAoZW52TmFtZTogc3RyaW5nKSA9PlxuICAgICAgYCR7cm9vdFN0YWNrTmFtZX0vJHtjb25zdHJ1Y3RJZH0vJHtlbnZOYW1lfS8ke3Byb3BzLnN0YWNrTmFtZX1gO1xuXG4gICAgLy8gRHJpZnQgY2hlY2sgY29uZmlnXG4gICAgY29uc3QgaXNEcmlmdENoZWNrU3RlcCA9ICEhcHJvcHMuZHJpZnRDaGVja0NvbmZpZztcbiAgICBjb25zdCBjZGtJbnN0YWxsQ21kID1cbiAgICAgIHByb3BzLmRyaWZ0Q2hlY2tDb25maWc/Lmluc3RhbGxDb21tYW5kID8/XG4gICAgICBcInBucG0gaW5zdGFsbCAtLWZyb3plbi1sb2NrZmlsZSAtLWlnbm9yZS1zY3JpcHRzXCI7XG4gICAgY29uc3QgY2RrUnVuQ21kID0gcHJvcHMuZHJpZnRDaGVja0NvbmZpZz8uY2RrQ29tbWFuZCA/PyBgYDtcblxuICAgIGNvbnN0IGJldGFFbnZOYW1lID0gXCJPcmNhQnVzQmV0YVwiO1xuICAgIGNka1BpcGVsaW5lLmFkZFN0YWdlKFxuICAgICAgbmV3IERlcGxveW1lbnRTdGFnZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYmV0YUVudk5hbWUsXG4gICAgICAgIHN0YWdlRW52LmJldGEsXG4gICAgICAgIHByb3BzLnN0YWNrTmFtZSxcbiAgICAgICAgcHJvcHMuc3RhY2ssXG4gICAgICAgIHByb3BzLnN0YWNrQ29uZmlnLmJldGEsXG4gICAgICAgIHByb3BzLmdpdGh1YlJlcG8sXG4gICAgICAgIHByb3BzLmdpdGh1YkJyYW5jaCxcbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIHByZTogaXNEcmlmdENoZWNrU3RlcFxuICAgICAgICAgID8gW1xuICAgICAgICAgICAgICBuZXcgRmFpbE9uRHJpZnRCdWlsZFN0ZXAoXCJEcmlmdE9uRmFpbEJldGFDaGVja1wiLCB7XG4gICAgICAgICAgICAgICAgYWNjb3VudEVudjogc3RhZ2VFbnYuYmV0YSxcbiAgICAgICAgICAgICAgICBzdGFja0lkOiBnZXRTdGFja0lkKGJldGFFbnZOYW1lKSxcbiAgICAgICAgICAgICAgICBjZGtDb21tYW5kOiBjZGtSdW5DbWQsXG4gICAgICAgICAgICAgICAgaW5zdGFsbENvbW1hbmQ6IGNka0luc3RhbGxDbWQsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXVxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICogR0FNTUFcbiAgICAgKi9cbiAgICBjb25zdCBnYW1tYUVudk5hbWUgPSBcIk9yY2FCdXNHYW1tYVwiO1xuXG4gICAgY2RrUGlwZWxpbmUuYWRkU3RhZ2UoXG4gICAgICBuZXcgRGVwbG95bWVudFN0YWdlKFxuICAgICAgICB0aGlzLFxuICAgICAgICBnYW1tYUVudk5hbWUsXG4gICAgICAgIHN0YWdlRW52LmdhbW1hLFxuICAgICAgICBwcm9wcy5zdGFja05hbWUsXG4gICAgICAgIHByb3BzLnN0YWNrLFxuICAgICAgICBwcm9wcy5zdGFja0NvbmZpZy5nYW1tYSxcbiAgICAgICAgcHJvcHMuZ2l0aHViUmVwbyxcbiAgICAgICAgcHJvcHMuZ2l0aHViQnJhbmNoLFxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgcHJlOiBpc0RyaWZ0Q2hlY2tTdGVwXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIG5ldyBGYWlsT25EcmlmdEJ1aWxkU3RlcChcIkRyaWZ0T25GYWlsR2FtbWFDaGVja1wiLCB7XG4gICAgICAgICAgICAgICAgYWNjb3VudEVudjogc3RhZ2VFbnYuZ2FtbWEsXG4gICAgICAgICAgICAgICAgc3RhY2tJZDogZ2V0U3RhY2tJZChnYW1tYUVudk5hbWUpLFxuICAgICAgICAgICAgICAgIGNka0NvbW1hbmQ6IGNka1J1bkNtZCxcbiAgICAgICAgICAgICAgICBpbnN0YWxsQ29tbWFuZDogY2RrSW5zdGFsbENtZCxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIHBvc3Q6IFtcbiAgICAgICAgICBuZXcgTWFudWFsQXBwcm92YWxBY3Rpb25TdGVwKFwiUHJvbW90ZVRvUHJvZFwiLCB7XG4gICAgICAgICAgICBhY3Rpb25OYW1lOiBcIlByb21vdGVUb1Byb2RcIixcbiAgICAgICAgICAgIC8vIEN1c3RvbSBzdGVwcyBieXBhc3Mgc3RhZ2UgcHJlL3Bvc3Qgb3JkZXJpbmcsIHNvIHJ1bk9yZGVyIG11c3QgYmUgZXhwbGljaXRseSBzZXQuXG4gICAgICAgICAgICAvLyBTZXQgdG8gNSB0byBlbnN1cmUgdGhpcyBydW5zIGFmdGVyIGFsbCBPcmNhQnVzR2FtbWEgc3RhZ2Ugc3RlcHMgY29tcGxldGUuXG4gICAgICAgICAgICAvLyAoR2FtbWEgZGVwbG95bWVudCB0eXBpY2FsbHkgdXNlcyAyIHN0ZXBzLCBzbyA1IHByb3ZpZGVzIGFkZXF1YXRlIGJ1ZmZlcilcbiAgICAgICAgICAgIHJ1bk9yZGVyOiA1LFxuICAgICAgICAgICAgLy8gNjAtbWludXRlIHRpbWVvdXQgYWxsb3dzIHF1ZXVlZCBwaXBlbGluZSBleGVjdXRpb25zIHRvIHByb2NlZWQgaWYgYXBwcm92YWwgZXhwaXJlc1xuICAgICAgICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcyg2MCksXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBQUk9EXG4gICAgICovXG4gICAgY29uc3QgcHJvZEVudk5hbWUgPSBcIk9yY2FCdXNQcm9kXCI7XG5cbiAgICBjZGtQaXBlbGluZS5hZGRTdGFnZShcbiAgICAgIG5ldyBEZXBsb3ltZW50U3RhZ2UoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHByb2RFbnZOYW1lLFxuICAgICAgICBzdGFnZUVudi5wcm9kLFxuICAgICAgICBwcm9wcy5zdGFja05hbWUsXG4gICAgICAgIHByb3BzLnN0YWNrLFxuICAgICAgICBwcm9wcy5zdGFja0NvbmZpZy5wcm9kLFxuICAgICAgICBwcm9wcy5naXRodWJSZXBvLFxuICAgICAgICBwcm9wcy5naXRodWJCcmFuY2gsXG4gICAgICApLFxuICAgICAge1xuICAgICAgICBwcmU6IGlzRHJpZnRDaGVja1N0ZXBcbiAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgbmV3IEZhaWxPbkRyaWZ0QnVpbGRTdGVwKFwiRHJpZnRPbkZhaWxQcm9kQ2hlY2tcIiwge1xuICAgICAgICAgICAgICAgIGFjY291bnRFbnY6IHN0YWdlRW52LnByb2QsXG4gICAgICAgICAgICAgICAgc3RhY2tJZDogZ2V0U3RhY2tJZChwcm9kRW52TmFtZSksXG4gICAgICAgICAgICAgICAgY2RrQ29tbWFuZDogY2RrUnVuQ21kLFxuICAgICAgICAgICAgICAgIGluc3RhbGxDb21tYW5kOiBjZGtJbnN0YWxsQ21kLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGNka1BpcGVsaW5lLmJ1aWxkUGlwZWxpbmUoKTtcblxuICAgIGlmIChzdHJpcEFzc2V0c0Zyb21Bc3NlbWJseSkge1xuICAgICAgY2RrUGlwZWxpbmUucGlwZWxpbmUuYXJ0aWZhY3RCdWNrZXQuZ3JhbnRSZWFkV3JpdGUoXG4gICAgICAgIHN0cmlwQXNzZXRzRnJvbUFzc2VtYmx5LnByb2plY3QsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5lbmFibGVTbGFja05vdGlmaWNhdGlvbiA/PyB0cnVlKSB7XG4gICAgICBjb25zdCBhbGVydHNCdWlsZFNsYWNrQ29uZmlnQXJuID0gU3RyaW5nUGFyYW1ldGVyLnZhbHVlRm9yU3RyaW5nUGFyYW1ldGVyKFxuICAgICAgICB0aGlzLFxuICAgICAgICBcIi9jaGF0Ym90X2Fybi9zbGFjay9hbGVydHMtYnVpbGRcIixcbiAgICAgICk7XG4gICAgICBjb25zdCB0YXJnZXQgPSBTbGFja0NoYW5uZWxDb25maWd1cmF0aW9uLmZyb21TbGFja0NoYW5uZWxDb25maWd1cmF0aW9uQXJuKFxuICAgICAgICB0aGlzLFxuICAgICAgICBcIlNsYWNrQ2hhbm5lbENvbmZpZ3VyYXRpb25cIixcbiAgICAgICAgYWxlcnRzQnVpbGRTbGFja0NvbmZpZ0FybixcbiAgICAgICk7XG5cbiAgICAgIHRoaXMucGlwZWxpbmUubm90aWZ5T24oXCJQaXBlbGluZVNsYWNrTm90aWZpY2F0aW9uXCIsIHRhcmdldCwge1xuICAgICAgICBldmVudHM6IHByb3BzLm5vdGlmaWNhdGlvbkV2ZW50cyB8fCBbXG4gICAgICAgICAgUGlwZWxpbmVOb3RpZmljYXRpb25FdmVudHMuUElQRUxJTkVfRVhFQ1VUSU9OX0ZBSUxFRCxcbiAgICAgICAgXSxcbiAgICAgICAgZGV0YWlsVHlwZTogRGV0YWlsVHlwZS5GVUxMLFxuICAgICAgICBub3RpZmljYXRpb25SdWxlTmFtZTogYE9yY2FCdXMtJHtwcm9wcy5waXBlbGluZU5hbWV9YCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIE1hbnVhbEFwcHJvdmFsQWN0aW9uU3RlcCB3aXRoIHJlcXVpcmVkIHJ1bk9yZGVyLlxuICovXG5pbnRlcmZhY2UgTWFudWFsQXBwcm92YWxBY3Rpb25TdGVwUHJvcHMgZXh0ZW5kcyBNYW51YWxBcHByb3ZhbEFjdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBydW4gb3JkZXIgZm9yIHRoaXMgYWN0aW9uIGluIHRoZSBwaXBlbGluZSBzdGFnZS4gVGhlIHN0YWdlIFByZS9Qb3N0IG9yZGVyIGRvZXMgbm90IGFwcGx5IHRvIHRoaXMgY3VzdG9tXG4gICAqIHN0ZXAvYWN0aW9uLCB5b3UgbmVlZCB0byBleHBsaWNpdGx5IHNldCB0aGUgcnVuT3JkZXIuXG4gICAqL1xuICBydW5PcmRlcjogbnVtYmVyO1xufVxuLyoqXG4gKiBDdXN0b20gbWFudWFsIGFwcHJvdmFsIHN0ZXAgZm9yIENESyBDb2RlUGlwZWxpbmUuXG4gKlxuICogVGhpcyBjbGFzcyBicmlkZ2VzIHRoZSBnYXAgdG8gZW5hYmxlIHVzaW5nIE1hbnVhbEFwcHJvdmFsQWN0aW9uIHdpdGhpbiBhIFN0ZXAgY2xhc3MsXG4gKiBtYWtpbmcgaXQgY29tcGF0aWJsZSB3aXRoIGNkay5waXBlbGluZXMgY29uc3RydWN0cy5cbiAqXG4gKiBAcGFyYW0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBzdGVwLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcHJvcGVydGllcyBmb3IgdGhlIG1hbnVhbCBhcHByb3ZhbCBhY3Rpb24sIGluY2x1ZGluZ1xuICovXG5jbGFzcyBNYW51YWxBcHByb3ZhbEFjdGlvblN0ZXBcbiAgZXh0ZW5kcyBTdGVwXG4gIGltcGxlbWVudHMgSUNvZGVQaXBlbGluZUFjdGlvbkZhY3RvcnlcbntcbiAgcHJpdmF0ZSByZWFkb25seSBtYW51YWxBcHByb3ZhbEFjdGlvblByb3BzOiBNYW51YWxBcHByb3ZhbEFjdGlvblN0ZXBQcm9wcztcbiAgY29uc3RydWN0b3IoaWQ6IHN0cmluZywgb3B0aW9uczogTWFudWFsQXBwcm92YWxBY3Rpb25TdGVwUHJvcHMpIHtcbiAgICBzdXBlcihpZCk7XG4gICAgdGhpcy5tYW51YWxBcHByb3ZhbEFjdGlvblByb3BzID0gb3B0aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBwcm9kdWNlQWN0aW9uKFxuICAgIHN0YWdlOiBJU3RhZ2UsXG4gICAgb3B0aW9uczogUHJvZHVjZUFjdGlvbk9wdGlvbnMsXG4gICk6IENvZGVQaXBlbGluZUFjdGlvbkZhY3RvcnlSZXN1bHQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgTWFudWFsQXBwcm92YWxBY3Rpb24odGhpcy5tYW51YWxBcHByb3ZhbEFjdGlvblByb3BzKSk7XG5cbiAgICByZXR1cm4geyBydW5PcmRlcnNDb25zdW1lZDogMSB9O1xuICB9XG59XG5cbmNsYXNzIERlcGxveW1lbnRTdGFnZSBleHRlbmRzIFN0YWdlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBlbnZpcm9ubWVudE5hbWU6IHN0cmluZyxcbiAgICBlbnY6IEVudmlyb25tZW50LFxuICAgIHN0YWNrTmFtZTogc3RyaW5nLFxuICAgIHN0YWNrQ2xhc3M6IG5ldyAoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IGFueSkgPT4gU3RhY2ssXG4gICAgYXBwU3RhY2tQcm9wczogYW55LFxuICAgIGdpdGh1YlJlcG86IHN0cmluZyxcbiAgICBnaXRodWJCcmFuY2g/OiBzdHJpbmcsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBlbnZpcm9ubWVudE5hbWUsIHsgZW52OiBlbnYgfSk7XG5cbiAgICBsZXQgc291cmNlID0gYGh0dHBzOi8vZ2l0aHViLmNvbS9PcmNhQnVzLyR7Z2l0aHViUmVwb31gO1xuICAgIGlmIChnaXRodWJCcmFuY2ggIT09IHVuZGVmaW5lZCAmJiBnaXRodWJCcmFuY2ggIT09IFwibWFpblwiKSB7XG4gICAgICBzb3VyY2UgPSBgJHtzb3VyY2V9L3RyZWUvJHtnaXRodWJCcmFuY2h9YDtcbiAgICB9XG5cbiAgICBuZXcgc3RhY2tDbGFzcyh0aGlzLCBzdGFja05hbWUsIHtcbiAgICAgIGVudjogZW52LFxuICAgICAgdGFnczoge1xuICAgICAgICBcInVtY2NyLW9yZzpQcm9kdWN0XCI6IFwiT3JjYUJ1c1wiLFxuICAgICAgICBcInVtY2NyLW9yZzpDcmVhdG9yXCI6IFwiQ0RLXCIsXG4gICAgICAgIFwidW1jY3Itb3JnOlNlcnZpY2VcIjogc3RhY2tOYW1lLFxuICAgICAgICBcInVtY2NyLW9yZzpTb3VyY2VcIjogc291cmNlLFxuICAgICAgfSxcbiAgICAgIC4uLmFwcFN0YWNrUHJvcHMsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBGYWlsT25EcmlmdEJ1aWxkU3RlcFByb3BzIHtcbiAgLyoqXG4gICAqIEFXUyBhY2NvdW50IGFuZCByZWdpb24gd2hlcmUgdGhlIGRyaWZ0IGNoZWNrIHJ1bnMuXG4gICAqIFVzZWQgdG8gYXNzdW1lIHRoZSBDREsgbG9va3VwIHJvbGUgYW5kIHNldCBBV1NfREVGQVVMVF9SRUdJT04uXG4gICAqL1xuICByZWFkb25seSBhY2NvdW50RW52OiBFbnZpcm9ubWVudDtcbiAgLyoqXG4gICAqIEZ1bGx5IHF1YWxpZmllZCBDREsgc3RhY2sgSUQgdG8gY2hlY2sgZm9yIGRyaWZ0LlxuICAgKlxuICAgKiBGb3JtYXQ6IGA8cm9vdFN0YWNrPi88Y29uc3RydWN0SWQ+LzxlbnZOYW1lPi88c3RhY2tOYW1lPmBcbiAgICpcbiAgICogRXhhbXBsZTogYERldlN0YWNrL0RlcGxveW1lbnRQaXBlbGluZS9PcmNhQnVzQmV0YS9UZXN0U3RhY2tgXG4gICAqL1xuICByZWFkb25seSBzdGFja0lkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDREsgQ0xJIGVudHJ5cG9pbnQgdXNlZCB0byBydW4gdGhlIGRyaWZ0IGNvbW1hbmQuXG4gICAqIEV4YW1wbGVzOiBcInBucG0gY2RrXCIsIFwicG5wbSBjZGstc3RhdGVmdWxcIiwgXCJwbnBtIGNkay1zdGF0ZWxlc3NcIi5cbiAgICogTXVzdCBzdXBwb3J0OiBcImRyaWZ0IDxzdGFja0lkPlwiLlxuICAgKi9cbiAgcmVhZG9ubHkgY2RrQ29tbWFuZDogc3RyaW5nO1xuICAvKipcbiAgICogQ29tbWFuZCB0byBpbnN0YWxsIGRlcGVuZGVuY2llcyBiZWZvcmUgcnVubmluZyBDREsuXG4gICAqIElmIHlvdXIgYXBwIGlzIGluIGEgc3ViZGlyZWN0b3J5LCBwcmVmaXggd2l0aCBcImNkIDxkaXI+ICYmXCIuXG4gICAqIEV4YW1wbGU6IFwiY2QgZGV2ICYmIHBucG0gaW5zdGFsbCAtLWZyb3plbi1sb2NrZmlsZSAtLWlnbm9yZS1zY3JpcHRzXCJcbiAgICpcbiAgICogRGVmYXVsdDogXCJwbnBtIGluc3RhbGwgLS1mcm96ZW4tbG9ja2ZpbGUgLS1pZ25vcmUtc2NyaXB0c1wiXG4gICAqL1xuICByZWFkb25seSBpbnN0YWxsQ29tbWFuZD86IHN0cmluZztcbn1cblxuY2xhc3MgRmFpbE9uRHJpZnRCdWlsZFN0ZXAgZXh0ZW5kcyBDb2RlQnVpbGRTdGVwIHtcbiAgY29uc3RydWN0b3IoXG4gICAgaWQ6IHN0cmluZyxcbiAgICB7XG4gICAgICBhY2NvdW50RW52LFxuICAgICAgc3RhY2tJZCxcbiAgICAgIGNka0NvbW1hbmQsXG4gICAgICBpbnN0YWxsQ29tbWFuZCxcbiAgICB9OiBGYWlsT25EcmlmdEJ1aWxkU3RlcFByb3BzLFxuICApIHtcbiAgICBjb25zdCBjZGtJbnN0YWxsID0gaW5zdGFsbENvbW1hbmRcbiAgICAgID8gaW5zdGFsbENvbW1hbmRcbiAgICAgIDogXCJwbnBtIGluc3RhbGwgLS1mcm96ZW4tbG9ja2ZpbGUgLS1pZ25vcmUtc2NyaXB0c1wiO1xuXG4gICAgc3VwZXIoaWQsIHtcbiAgICAgIGNvbW1hbmRzOiBbXG4gICAgICAgIFwibm9kZSAtdlwiLFxuICAgICAgICBcIm5wbSBpbnN0YWxsIC0tZ2xvYmFsIGNvcmVwYWNrQGxhdGVzdFwiLFxuICAgICAgICBcImNvcmVwYWNrIC0tdmVyc2lvblwiLFxuICAgICAgICBcImNvcmVwYWNrIGVuYWJsZVwiLFxuICAgICAgICBjZGtJbnN0YWxsLFxuXG4gICAgICAgIGBMT09LVVBfUk9MRV9BUk49XCJhcm46YXdzOmlhbTo6JHthY2NvdW50RW52LmFjY291bnR9OnJvbGUvY2RrLWhuYjY1OWZkcy1sb29rdXAtcm9sZS0ke2FjY291bnRFbnYuYWNjb3VudH0tJHthY2NvdW50RW52LnJlZ2lvbn1cImAsXG4gICAgICAgICdTRVNTSU9OX05BTUU9XCJkcmlmdC1jaGVja1wiJyxcbiAgICAgICAgJ3JlYWQgQVdTX0FDQ0VTU19LRVlfSUQgQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZIEFXU19TRVNTSU9OX1RPS0VOIDwgPChhd3Mgc3RzIGFzc3VtZS1yb2xlIC0tcm9sZS1hcm4gXCIkTE9PS1VQX1JPTEVfQVJOXCIgLS1yb2xlLXNlc3Npb24tbmFtZSBcIiRTRVNTSU9OX05BTUVcIiAtLWR1cmF0aW9uLXNlY29uZHMgOTAwIC0tcXVlcnkgXFwnQ3JlZGVudGlhbHMuW0FjY2Vzc0tleUlkLFNlY3JldEFjY2Vzc0tleSxTZXNzaW9uVG9rZW5dXFwnIC0tb3V0cHV0IHRleHQpJyxcbiAgICAgICAgXCJleHBvcnQgQVdTX0FDQ0VTU19LRVlfSUQgQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZIEFXU19TRVNTSU9OX1RPS0VOXCIsXG4gICAgICAgIGBleHBvcnQgQVdTX0RFRkFVTFRfUkVHSU9OPVwiJHthY2NvdW50RW52LnJlZ2lvbn1cImAsXG4gICAgICAgIFwiYXdzIHN0cyBnZXQtY2FsbGVyLWlkZW50aXR5XCIsXG5cbiAgICAgICAgYGlmICR7Y2RrQ29tbWFuZH0gbHMgfCBncmVwIC1GcSBcIiR7c3RhY2tJZH1cIjsgdGhlbiBlY2hvIFwiU3RhY2sgJHtzdGFja0lkfSBmb3VuZDsgY2hlY2tpbmcgZm9yIGRyaWZ0Li4uXCI7ICR7Y2RrQ29tbWFuZH0gZHJpZnQgXCIke3N0YWNrSWR9XCIgLWUgLS1mYWlsOyBlbHNlIGVjaG8gXCJTdGFjayBub3QgZm91bmQgaW4gY2RrIGxzOyBza2lwcGluZyBkcmlmdCBjaGVjay5cIjsgZmlgLFxuICAgICAgXSxcbiAgICAgIHJvbGVQb2xpY3lTdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcInN0czpBc3N1bWVSb2xlXCJdLFxuICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgYGFybjphd3M6aWFtOjoke2FjY291bnRFbnYuYWNjb3VudH06cm9sZS9jZGstaG5iNjU5ZmRzLWxvb2t1cC1yb2xlLSR7YWNjb3VudEVudi5hY2NvdW50fS0ke2FjY291bnRFbnYucmVnaW9ufWAsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
package/dynamodb/index.js
CHANGED
|
@@ -40,7 +40,7 @@ const dynamodb = __importStar(require("aws-cdk-lib/aws-dynamodb"));
|
|
|
40
40
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
41
41
|
const config_1 = require("./config");
|
|
42
42
|
class DynamoDbPartitionedConstruct extends constructs_1.Construct {
|
|
43
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbPartitionedConstruct", version: "1.0.
|
|
43
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbPartitionedConstruct", version: "1.0.3" };
|
|
44
44
|
table;
|
|
45
45
|
constructor(scope, id, props) {
|
|
46
46
|
super(scope, id);
|
|
@@ -75,7 +75,7 @@ class DynamoDbPartitionedConstruct extends constructs_1.Construct {
|
|
|
75
75
|
}
|
|
76
76
|
exports.DynamoDbPartitionedConstruct = DynamoDbPartitionedConstruct;
|
|
77
77
|
class DynamoDbNonPartitionedConstruct extends constructs_1.Construct {
|
|
78
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbNonPartitionedConstruct", version: "1.0.
|
|
78
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbNonPartitionedConstruct", version: "1.0.3" };
|
|
79
79
|
table;
|
|
80
80
|
constructor(scope, id, props) {
|
|
81
81
|
super(scope, id);
|
package/ecs/index.js
CHANGED
|
@@ -55,7 +55,7 @@ exports.LAMBDA_ARCHITECTURE_MAP = {
|
|
|
55
55
|
['ARM64']: lambda.Architecture.ARM_64
|
|
56
56
|
};
|
|
57
57
|
class EcsFargateTaskConstruct extends constructs_1.Construct {
|
|
58
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.ecs.EcsFargateTaskConstruct", version: "1.0.
|
|
58
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.ecs.EcsFargateTaskConstruct", version: "1.0.3" };
|
|
59
59
|
cluster;
|
|
60
60
|
taskDefinition;
|
|
61
61
|
taskExecutionRole;
|
|
@@ -17,7 +17,7 @@ var SfnEventStatus;
|
|
|
17
17
|
SfnEventStatus["ABORTED"] = "ABORTED";
|
|
18
18
|
})(SfnEventStatus || (exports.SfnEventStatus = SfnEventStatus = {}));
|
|
19
19
|
class SfnSlackNotification extends constructs_1.Construct {
|
|
20
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.eventbridgeRule.SfnSlackNotification", version: "1.0.
|
|
20
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.eventbridgeRule.SfnSlackNotification", version: "1.0.3" };
|
|
21
21
|
rule;
|
|
22
22
|
constructor(scope, id, props) {
|
|
23
23
|
super(scope, id);
|
package/lambda/index.js
CHANGED
|
@@ -57,7 +57,7 @@ function getPythonUvDockerImage() {
|
|
|
57
57
|
return aws_cdk_lib_1.DockerImage.fromBuild(path_1.default.join(__dirname, 'build_python'));
|
|
58
58
|
}
|
|
59
59
|
class PythonUvFunction extends aws_lambda_python_alpha_1.PythonFunction {
|
|
60
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.lambda.PythonUvFunction", version: "1.0.
|
|
60
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.lambda.PythonUvFunction", version: "1.0.3" };
|
|
61
61
|
// Class constructs, to be used for caching the layers
|
|
62
62
|
// This means that if there are multiple lambdas throughout the stack
|
|
63
63
|
// They will all use the same layer
|
package/monitored-queue/index.js
CHANGED
|
@@ -13,7 +13,7 @@ const aws_cloudwatch_actions_1 = require("aws-cdk-lib/aws-cloudwatch-actions");
|
|
|
13
13
|
* SNS topic.
|
|
14
14
|
*/
|
|
15
15
|
class MonitoredQueue extends constructs_1.Construct {
|
|
16
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.monitoredQueue.MonitoredQueue", version: "1.0.
|
|
16
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.monitoredQueue.MonitoredQueue", version: "1.0.3" };
|
|
17
17
|
queue;
|
|
18
18
|
deadLetterQueue;
|
|
19
19
|
alarm;
|
|
@@ -7,7 +7,7 @@ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
|
7
7
|
* A construct which represents a named role that a Lambda function can assume.
|
|
8
8
|
*/
|
|
9
9
|
class NamedLambdaRole extends aws_iam_1.Role {
|
|
10
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.namedLambdaRole.NamedLambdaRole", version: "1.0.
|
|
10
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.namedLambdaRole.NamedLambdaRole", version: "1.0.3" };
|
|
11
11
|
constructor(scope, id, props) {
|
|
12
12
|
super(scope, id, {
|
|
13
13
|
assumedBy: new aws_iam_1.ServicePrincipal("lambda.amazonaws.com"),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orcabus/platform-cdk-constructs",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "CDK Package for OrcaBus infrastructure.",
|
|
5
5
|
"main": "index.ts",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -23,24 +23,24 @@
|
|
|
23
23
|
"organization": true
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@aws-cdk/aws-lambda-python-alpha": "2.
|
|
26
|
+
"@aws-cdk/aws-lambda-python-alpha": "2.233.0-alpha.0",
|
|
27
27
|
"@types/jest": "^29.5.14",
|
|
28
|
-
"@types/node": "^22.
|
|
29
|
-
"aws-cdk": "^2.
|
|
30
|
-
"aws-cdk-lib": "2.
|
|
31
|
-
"cdk-nag": "^2.37.
|
|
28
|
+
"@types/node": "^22.19.7",
|
|
29
|
+
"aws-cdk": "^2.1101.0",
|
|
30
|
+
"aws-cdk-lib": "^2.235.0",
|
|
31
|
+
"cdk-nag": "^2.37.55",
|
|
32
32
|
"constructs": "10.4.2",
|
|
33
33
|
"jest": "^29.7.0",
|
|
34
|
-
"jsii": "^5.9.
|
|
35
|
-
"jsii-pacmak": "^1.
|
|
36
|
-
"publib": "^0.2.
|
|
37
|
-
"ts-jest": "^29.4.
|
|
38
|
-
"typedoc": "^0.28.
|
|
39
|
-
"typedoc-plugin-markdown": "^4.
|
|
34
|
+
"jsii": "^5.9.22",
|
|
35
|
+
"jsii-pacmak": "^1.125.0",
|
|
36
|
+
"publib": "^0.2.1028",
|
|
37
|
+
"ts-jest": "^29.4.6",
|
|
38
|
+
"typedoc": "^0.28.16",
|
|
39
|
+
"typedoc-plugin-markdown": "^4.9.0"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
42
|
-
"@aws-cdk/aws-lambda-python-alpha": "^2.
|
|
43
|
-
"aws-cdk-lib": "^2.
|
|
42
|
+
"@aws-cdk/aws-lambda-python-alpha": "^2.233.0-alpha.0",
|
|
43
|
+
"aws-cdk-lib": "^2.233.0",
|
|
44
44
|
"constructs": "^10.4.2"
|
|
45
45
|
},
|
|
46
46
|
"stability": "experimental",
|
|
@@ -15,7 +15,7 @@ const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
|
15
15
|
* to the provider framework.
|
|
16
16
|
*/
|
|
17
17
|
class ProviderFunction extends constructs_1.Construct {
|
|
18
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.provider.ProviderFunction", version: "1.0.
|
|
18
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.provider.ProviderFunction", version: "1.0.3" };
|
|
19
19
|
_function;
|
|
20
20
|
_response;
|
|
21
21
|
constructor(scope, id, props) {
|
|
@@ -6,6 +6,10 @@ export type StageName = "BETA" | "GAMMA" | "PROD";
|
|
|
6
6
|
* Default AWS region for all environments.
|
|
7
7
|
*/
|
|
8
8
|
export declare const REGION = "ap-southeast-2";
|
|
9
|
+
/**
|
|
10
|
+
* ICA Account ID.
|
|
11
|
+
*/
|
|
12
|
+
export declare const ICA_ACCOUNT_ID = "079623148045";
|
|
9
13
|
/**
|
|
10
14
|
* Beta Account ID.
|
|
11
15
|
*/
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ACCOUNT_ID_ALIAS = exports.PROD_ACCOUNT_ID = exports.GAMMA_ACCOUNT_ID = exports.BETA_ACCOUNT_ID = exports.REGION = void 0;
|
|
3
|
+
exports.ACCOUNT_ID_ALIAS = exports.PROD_ACCOUNT_ID = exports.GAMMA_ACCOUNT_ID = exports.BETA_ACCOUNT_ID = exports.ICA_ACCOUNT_ID = exports.REGION = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Default AWS region for all environments.
|
|
6
6
|
*/
|
|
7
7
|
exports.REGION = "ap-southeast-2";
|
|
8
|
+
/**
|
|
9
|
+
* ICA Account ID.
|
|
10
|
+
*/
|
|
11
|
+
exports.ICA_ACCOUNT_ID = "079623148045";
|
|
8
12
|
/**
|
|
9
13
|
* Beta Account ID.
|
|
10
14
|
*/
|
|
@@ -25,4 +29,4 @@ exports.ACCOUNT_ID_ALIAS = {
|
|
|
25
29
|
GAMMA: exports.GAMMA_ACCOUNT_ID,
|
|
26
30
|
PROD: exports.PROD_ACCOUNT_ID,
|
|
27
31
|
};
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhY2NvdW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLQTs7R0FFRztBQUNVLFFBQUEsTUFBTSxHQUFHLGdCQUFnQixDQUFDO0FBRXZDOztHQUVHO0FBQ1UsUUFBQSxjQUFjLEdBQUcsY0FBYyxDQUFDO0FBRTdDOztHQUVHO0FBQ1UsUUFBQSxlQUFlLEdBQUcsY0FBYyxDQUFDO0FBQzlDOztHQUVHO0FBQ1UsUUFBQSxnQkFBZ0IsR0FBRyxjQUFjLENBQUM7QUFDL0M7O0dBRUc7QUFDVSxRQUFBLGVBQWUsR0FBRyxjQUFjLENBQUM7QUFFOUM7O0dBRUc7QUFDVSxRQUFBLGdCQUFnQixHQUE4QjtJQUN6RCxJQUFJLEVBQUUsdUJBQWU7SUFDckIsS0FBSyxFQUFFLHdCQUFnQjtJQUN2QixJQUFJLEVBQUUsdUJBQWU7Q0FDdEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3VwcG9ydGVkIGRlcGxveW1lbnQgc3RhZ2UgbmFtZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFN0YWdlTmFtZSA9IFwiQkVUQVwiIHwgXCJHQU1NQVwiIHwgXCJQUk9EXCI7XG5cbi8qKlxuICogRGVmYXVsdCBBV1MgcmVnaW9uIGZvciBhbGwgZW52aXJvbm1lbnRzLlxuICovXG5leHBvcnQgY29uc3QgUkVHSU9OID0gXCJhcC1zb3V0aGVhc3QtMlwiO1xuXG4vKipcbiAqIElDQSBBY2NvdW50IElELlxuICovXG5leHBvcnQgY29uc3QgSUNBX0FDQ09VTlRfSUQgPSBcIjA3OTYyMzE0ODA0NVwiO1xuXG4vKipcbiAqIEJldGEgQWNjb3VudCBJRC5cbiAqL1xuZXhwb3J0IGNvbnN0IEJFVEFfQUNDT1VOVF9JRCA9IFwiODQzNDA3OTE2NTcwXCI7XG4vKipcbiAqIEdhbW1hIEFjY291bnQgSUQuXG4gKi9cbmV4cG9ydCBjb25zdCBHQU1NQV9BQ0NPVU5UX0lEID0gXCI0NTU2MzQzNDU0NDZcIjtcbi8qKlxuICogUHJvZHVjdGlvbiBBY2NvdW50IElELlxuICovXG5leHBvcnQgY29uc3QgUFJPRF9BQ0NPVU5UX0lEID0gXCI0NzIwNTc1MDM4MTRcIjtcblxuLyoqXG4gKiBNYXBwaW5nIGZyb20gc3RhZ2UgbmFtZSB0byBBV1MgQWNjb3VudCBJRC5cbiAqL1xuZXhwb3J0IGNvbnN0IEFDQ09VTlRfSURfQUxJQVM6IFJlY29yZDxTdGFnZU5hbWUsIHN0cmluZz4gPSB7XG4gIEJFVEE6IEJFVEFfQUNDT1VOVF9JRCxcbiAgR0FNTUE6IEdBTU1BX0FDQ09VTlRfSUQsXG4gIFBST0Q6IFBST0RfQUNDT1VOVF9JRCxcbn0iXX0=
|
|
@@ -23,7 +23,7 @@ exports.VPC_LOOKUP_PROPS = {
|
|
|
23
23
|
* Helper for looking up the shared OrcaBus VPC.
|
|
24
24
|
*/
|
|
25
25
|
class OrcaBusVpc {
|
|
26
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusVpc", version: "1.0.
|
|
26
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusVpc", version: "1.0.3" };
|
|
27
27
|
/**
|
|
28
28
|
* The shared VPC that is used by OrcaBus.
|
|
29
29
|
* @param scope
|
|
@@ -42,7 +42,7 @@ exports.SHARED_SECURITY_GROUP_NAME = "OrcaBusSharedComputeSecurityGroup";
|
|
|
42
42
|
* Helper for looking up the shared compute security group by name.
|
|
43
43
|
*/
|
|
44
44
|
class OrcaBusSharedComputeSecurityGroup {
|
|
45
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusSharedComputeSecurityGroup", version: "1.0.
|
|
45
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusSharedComputeSecurityGroup", version: "1.0.3" };
|
|
46
46
|
/**
|
|
47
47
|
* The shared security group that is used by compute resources to access the database.
|
|
48
48
|
* @param scope
|
package/shared-config/slack.js
CHANGED
|
@@ -11,7 +11,7 @@ exports.SLACK_ALERTS_SNS_TOPIC = "AwsChatBotTopic-alerts";
|
|
|
11
11
|
* A helper class to construct the arn for the slack SNS topic.
|
|
12
12
|
*/
|
|
13
13
|
class SlackAlerts {
|
|
14
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.slack.SlackAlerts", version: "1.0.
|
|
14
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.slack.SlackAlerts", version: "1.0.3" };
|
|
15
15
|
/**
|
|
16
16
|
* Format the ARN for the slack alerts SNS topic for the current stack.
|
|
17
17
|
* @param stack
|