@orcabus/platform-cdk-constructs 0.0.17 → 0.0.19
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 +3 -3
- package/api-gateway/api-gateway.js +1 -1
- package/deployment-stack-pipeline/artifact-bucket.js +1 -1
- package/deployment-stack-pipeline/pipeline.js +1 -1
- package/dynamodb/index.js +2 -2
- package/ecs/index.js +1 -1
- package/lambda/index.d.ts +1 -1
- package/lambda/index.js +10 -10
- package/lambda/layers/orcabus_api_tools/src/orcabus_api_tools/workflow/__init__.py +4 -2
- package/lambda/layers/orcabus_api_tools/src/orcabus_api_tools/workflow/payload_helpers.py +12 -6
- package/lambda/layers/orcabus_api_tools/src/orcabus_api_tools/workflow/workflow_run_helpers.py +23 -4
- package/named-lambda-role/index.js +1 -1
- package/package.json +1 -1
- package/provider-function/index.js +1 -1
- package/shared-config/accounts.d.ts +5 -1
- package/shared-config/accounts.js +11 -3
- package/shared-config/file-manager.d.ts +7 -7
- package/shared-config/file-manager.js +18 -17
- package/shared-config/icav2.d.ts +21 -0
- package/shared-config/icav2.js +31 -2
- package/shared-config/networking.js +2 -2
- package/shared-config/s3.d.ts +14 -0
- package/shared-config/s3.js +24 -2
- package/shared-config/secrets.d.ts +5 -0
- package/shared-config/secrets.js +17 -0
- package/utils/index.d.ts +0 -4
- package/utils/index.js +3 -15
package/.jsii
CHANGED
|
@@ -5652,7 +5652,7 @@
|
|
|
5652
5652
|
"abstract": true,
|
|
5653
5653
|
"docs": {
|
|
5654
5654
|
"custom": {
|
|
5655
|
-
"
|
|
5655
|
+
"ICAV2_ACCESS_TOKEN_SECRET_ID": "true"
|
|
5656
5656
|
},
|
|
5657
5657
|
"stability": "experimental",
|
|
5658
5658
|
"summary": "The id of the secret that contains the icav2 access token otherwise it will default to."
|
|
@@ -6394,6 +6394,6 @@
|
|
|
6394
6394
|
"symbolId": "shared-config/networking:OrcaBusVpc"
|
|
6395
6395
|
}
|
|
6396
6396
|
},
|
|
6397
|
-
"version": "0.0.
|
|
6398
|
-
"fingerprint": "
|
|
6397
|
+
"version": "0.0.19",
|
|
6398
|
+
"fingerprint": "wSb5vhy6MLa4Mbsn3O30771EwitRsfjl634dNH0yEys="
|
|
6399
6399
|
}
|
|
@@ -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: "0.0.
|
|
18
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.apigateway.OrcaBusApiGateway", version: "0.0.19" };
|
|
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: "0.0.
|
|
16
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.CrossDeploymentArtifactBucket", version: "0.0.19" };
|
|
17
17
|
/**
|
|
18
18
|
* The S3 bucket used to store artifacts for cross-deployment pipelines.
|
|
19
19
|
*/
|
|
@@ -31,7 +31,7 @@ exports.DEFAULT_SYNTH_STEP_PARTIAL_BUILD_SPEC = {
|
|
|
31
31
|
* before using this construct.
|
|
32
32
|
*/
|
|
33
33
|
class DeploymentStackPipeline extends constructs_1.Construct {
|
|
34
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.DeploymentStackPipeline", version: "0.0.
|
|
34
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.DeploymentStackPipeline", version: "0.0.19" };
|
|
35
35
|
/**
|
|
36
36
|
* The code pipeline construct that is created.
|
|
37
37
|
*/
|
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: "0.0.
|
|
43
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbPartitionedConstruct", version: "0.0.19" };
|
|
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: "0.0.
|
|
78
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbNonPartitionedConstruct", version: "0.0.19" };
|
|
79
79
|
table;
|
|
80
80
|
constructor(scope, id, props) {
|
|
81
81
|
super(scope, id);
|
package/ecs/index.js
CHANGED
|
@@ -52,7 +52,7 @@ exports.LAMBDA_ARCHITECTURE_MAP = {
|
|
|
52
52
|
['ARM64']: lambda.Architecture.ARM_64
|
|
53
53
|
};
|
|
54
54
|
class EcsFargateTaskConstruct extends constructs_1.Construct {
|
|
55
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.ecs.EcsFargateTaskConstruct", version: "0.0.
|
|
55
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.ecs.EcsFargateTaskConstruct", version: "0.0.19" };
|
|
56
56
|
cluster;
|
|
57
57
|
taskDefinition;
|
|
58
58
|
securityGroup;
|
package/lambda/index.d.ts
CHANGED
|
@@ -29,7 +29,7 @@ export interface MartEnvironmentVariables {
|
|
|
29
29
|
export interface Icav2ResourcesProps {
|
|
30
30
|
/**
|
|
31
31
|
* The id of the secret that contains the icav2 access token
|
|
32
|
-
* otherwise it will default to @
|
|
32
|
+
* otherwise it will default to @ICAV2_ACCESS_TOKEN_SECRET_ID
|
|
33
33
|
*/
|
|
34
34
|
readonly icav2AccessTokenSecretId?: string;
|
|
35
35
|
}
|
package/lambda/index.js
CHANGED
|
@@ -56,7 +56,7 @@ function getPythonUvDockerImage() {
|
|
|
56
56
|
return aws_cdk_lib_1.DockerImage.fromBuild(path_1.default.join(__dirname, 'build_python'));
|
|
57
57
|
}
|
|
58
58
|
class PythonUvFunction extends aws_lambda_python_alpha_1.PythonFunction {
|
|
59
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.lambda.PythonUvFunction", version: "0.0.
|
|
59
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.lambda.PythonUvFunction", version: "0.0.19" };
|
|
60
60
|
// Class constructs, to be used for caching the layers
|
|
61
61
|
// This means that if there are multiple lambdas throughout the stack
|
|
62
62
|
// They will all use the same layer
|
|
@@ -246,7 +246,7 @@ class PythonUvFunction extends aws_lambda_python_alpha_1.PythonFunction {
|
|
|
246
246
|
this.addEnvironment('HOSTNAME_SSM_PARAMETER_NAME', hostnameSsmParameterName.parameterName);
|
|
247
247
|
}
|
|
248
248
|
setAthenaResources(props) {
|
|
249
|
-
// Resolve the stage name by performing a reverse lookup using cdk.Aws.ACCOUNT_ID on
|
|
249
|
+
// Resolve the stage name by performing a reverse lookup using cdk.Aws.ACCOUNT_ID on ACCOUNT_ID_ALIAS
|
|
250
250
|
const stageName = (0, utils_1.resolveStageName)(this);
|
|
251
251
|
const athenaS3Bucket = s3.Bucket.fromBucketName(this, 'athenaS3Bucket', config_1.MART_S3_BUCKET[stageName]);
|
|
252
252
|
const athenaFunctionName = lambda.Function.fromFunctionName(this, 'lambdaFunctionName', config_1.MART_LAMBDA_FUNCTION_NAME);
|
|
@@ -276,7 +276,7 @@ class PythonUvFunction extends aws_lambda_python_alpha_1.PythonFunction {
|
|
|
276
276
|
'athena:GetTableMetadata',
|
|
277
277
|
'athena:GetDataCatalog',
|
|
278
278
|
],
|
|
279
|
-
resources: [`arn:aws:athena:${accounts_1.REGION}:${accounts_1.
|
|
279
|
+
resources: [`arn:aws:athena:${accounts_1.REGION}:${accounts_1.ACCOUNT_ID_ALIAS[stageName]}:*`],
|
|
280
280
|
}));
|
|
281
281
|
this.currentVersion.addToRolePolicy(
|
|
282
282
|
// From https://docs.aws.amazon.com/athena/latest/ug/example-policies-workgroup.html
|
|
@@ -302,7 +302,7 @@ class PythonUvFunction extends aws_lambda_python_alpha_1.PythonFunction {
|
|
|
302
302
|
'athena:DeletePreparedStatement',
|
|
303
303
|
],
|
|
304
304
|
resources: [
|
|
305
|
-
`arn:aws:athena:${accounts_1.REGION}:${accounts_1.
|
|
305
|
+
`arn:aws:athena:${accounts_1.REGION}:${accounts_1.ACCOUNT_ID_ALIAS[stageName]}:workgroup/${config_1.MART_ENV_VARS.athenaWorkgroupName}`,
|
|
306
306
|
],
|
|
307
307
|
}));
|
|
308
308
|
// Add read access to the S3 bucket
|
|
@@ -311,17 +311,17 @@ class PythonUvFunction extends aws_lambda_python_alpha_1.PythonFunction {
|
|
|
311
311
|
athenaFunctionName.grantInvoke(this.currentVersion);
|
|
312
312
|
}
|
|
313
313
|
setIcav2Resources(props) {
|
|
314
|
-
// Resolve the stage name by performing a reverse lookup using cdk.Aws.ACCOUNT_ID on
|
|
314
|
+
// Resolve the stage name by performing a reverse lookup using cdk.Aws.ACCOUNT_ID on ACCOUNT_ID_ALIAS
|
|
315
315
|
const stageName = (0, utils_1.resolveStageName)(this);
|
|
316
316
|
// Set secret object
|
|
317
|
-
const
|
|
317
|
+
const icav2AccessTokenSecretIdObject = secretsManager.Secret.fromSecretNameV2(this, 'ICAV2_ACCESS_TOKEN_SECRET_ID', props.icav2AccessTokenSecretId ?? icav2_1.ICAV2_ACCESS_TOKEN_SECRET_ID[stageName]);
|
|
318
318
|
// Add permissions for the secret and SSM parameter
|
|
319
319
|
// To the current version
|
|
320
|
-
|
|
320
|
+
icav2AccessTokenSecretIdObject.grantRead(this.currentVersion);
|
|
321
321
|
// Add environment variables
|
|
322
|
-
this.addEnvironment('ICAV2_ACCESS_TOKEN_SECRET_ID',
|
|
323
|
-
this.addEnvironment('ICAV2_BASE_URL', icav2_1.
|
|
322
|
+
this.addEnvironment('ICAV2_ACCESS_TOKEN_SECRET_ID', icav2AccessTokenSecretIdObject.secretName);
|
|
323
|
+
this.addEnvironment('ICAV2_BASE_URL', icav2_1.ICAV2_BASE_URL);
|
|
324
324
|
}
|
|
325
325
|
}
|
|
326
326
|
exports.PythonUvFunction = PythonUvFunction;
|
|
327
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE2QkEsd0RBRUM7O0FBL0JELDhFQUF5RztBQUV6RywrREFBaUQ7QUFDakQsK0VBQWlFO0FBQ2pFLHlEQUEyQztBQUMzQyx5REFBMkM7QUFDM0MsdURBQXlDO0FBQ3pDLDZDQUF3QztBQUV4QyxnREFBd0I7QUFFeEIsdURBSWdDO0FBQ2hDLHFDQU9rQjtBQUNsQixvQ0FBMEM7QUFDMUMsd0RBQWlFO0FBQ2pFLGtEQUE4RTtBQUc5RSxTQUFnQixzQkFBc0I7SUFDbEMsT0FBTyx5QkFBVyxDQUFDLFNBQVMsQ0FBQyxjQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLENBQUM7QUFxRkQsTUFBYSxnQkFBaUIsU0FBUSx3Q0FBYzs7SUFDaEQsc0RBQXNEO0lBQ3RELHFFQUFxRTtJQUNyRSxtQ0FBbUM7SUFDM0IsTUFBTSxDQUFDLG9CQUFvQixHQUF5QyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzlFLE1BQU0sQ0FBQyxTQUFTLEdBQXlDLElBQUksR0FBRyxFQUFFLENBQUM7SUFDbkUsTUFBTSxDQUFDLFVBQVUsR0FBeUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNwRSxNQUFNLENBQUMsWUFBWSxHQUF5QyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRTlFLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNEI7UUFDbEUsTUFBTSxPQUFPLEdBQUc7WUFDWixHQUFHLEtBQUs7WUFDUixRQUFRLEVBQUU7Z0JBQ04sR0FBRyxLQUFLLENBQUMsUUFBUTtnQkFDakIsU0FBUyxFQUFFO29CQUNQLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxTQUFTO29CQUM1QiwyREFBMkQ7b0JBQzNELGNBQWMsRUFDVixLQUFLLENBQUMsUUFBUSxF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QUFBO0lBQ0wsQ0FBQzs7QUExVUwsNENBNFVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQeXRob25GdW5jdGlvbiwgUHl0aG9uRnVuY3Rpb25Qcm9wcywgUHl0aG9uTGF5ZXJWZXJzaW9ufSBmcm9tIFwiQGF3cy1jZGsvYXdzLWxhbWJkYS1weXRob24tYWxwaGFcIjtcbmltcG9ydCB7Q29uc3RydWN0fSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgKiBhcyBzZWNyZXRzTWFuYWdlciBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5pbXBvcnQgKiBhcyBzc20gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zc21cIjtcbmltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0ICogYXMgczMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuaW1wb3J0IHtEb2NrZXJJbWFnZX0gZnJvbSAnYXdzLWNkay1saWInO1xuXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQge1xuICAgIFBhcmFtc0FuZFNlY3JldHNMYXllclZlcnNpb24sXG4gICAgUGFyYW1zQW5kU2VjcmV0c0xvZ0xldmVsLFxuICAgIFBhcmFtc0FuZFNlY3JldHNWZXJzaW9ucyxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQge1xuICAgIC8vIE9yY2FidXMgZGVmYXVsdHNcbiAgICBERUZBVUxUX0hPU1ROQU1FX1NTTV9QQVJBTUVURVIsIERFRkFVTFRfT1JDQUJVU19UT0tFTl9TRUNSRVRfSUQsXG4gICAgLy8gTWFydCBkZWZhdWx0c1xuICAgIE1BUlRfRU5WX1ZBUlMsIE1BUlRfTEFNQkRBX0ZVTkNUSU9OX05BTUUsXG4gICAgTUFSVF9TM19CVUNLRVQsXG4gICAgTUFSVF9TM19QUkVGSVgsXG59IGZyb20gXCIuL2NvbmZpZ1wiO1xuaW1wb3J0IHtyZXNvbHZlU3RhZ2VOYW1lfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7YWNjb3VudElkQWxpYXMsIFJFR0lPTn0gZnJvbSBcIi4uL3NoYXJlZC1jb25maWcvYWNjb3VudHNcIjtcbmltcG9ydCB7aWNhdjJBY2Nlc3NUb2tlblNlY3JldElkLCBpY2F2MkJhc2VVcmx9IGZyb20gXCIuLi9zaGFyZWQtY29uZmlnL2ljYXYyXCI7XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFB5dGhvblV2RG9ja2VySW1hZ2UoKTogRG9ja2VySW1hZ2Uge1xuICAgIHJldHVybiBEb2NrZXJJbWFnZS5mcm9tQnVpbGQocGF0aC5qb2luKF9fZGlybmFtZSwgJ2J1aWxkX3B5dGhvbicpKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmNhYnVzUmVzb3VyY2VzUHJvcHMge1xuICAgIC8qKlxuICAgICAqIFByb3ZpZGUgdGhlIG9yY2FidXNUb2tlblNlY3JldElkLCBvdGhlcndpc2UgaXQgd2lsbCBkZWZhdWx0IHRvIEBERUZBVUxUX09SQ0FCVVNfVE9LRU5fU0VDUkVUX0lEXG4gICAgICovXG4gICAgcmVhZG9ubHkgb3JjYWJ1c1Rva2VuU2VjcmV0SWQ/OiBzdHJpbmdcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGUgdGhlIGhvc3RuYW1lU3NtUGFyYW1ldGVyTmFtZSwgb3RoZXJ3aXNlIGl0IHdpbGwgZGVmYXVsdCB0byBAREVGQVVMVF9IT1NUTkFNRV9TU01fUEFSQU1FVEVSXG4gICAgICovXG4gICAgcmVhZG9ubHkgaG9zdG5hbWVTc21QYXJhbWV0ZXJOYW1lPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFydEVudmlyb25tZW50VmFyaWFibGVzIHtcbiAgICAvKipcbiAgICAgKiBQcm92aWRlIHRoZSBhdGhlbmFXb3JrZ3JvdXBOYW1lLCBvdGhlcndpc2UgaXQgd2lsbCBkZWZhdWx0IHRvIEBNQVJUX0VOVl9WQVJTLkFUSEVOQV9XT1JLR1JPVVBfTkFNRVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGF0aGVuYVdvcmtncm91cE5hbWU/OiBzdHJpbmdcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGUgdGhlIGF0aGVuYURhdGFzb3VyY2VOYW1lLCBvdGhlcndpc2UgaXQgd2lsbCBkZWZhdWx0IHRvIEBNQVJUX0VOVl9WQVJTLmF0aGVuYURhdGFzb3VyY2VOYW1lXG4gICAgICovXG4gICAgcmVhZG9ubHkgYXRoZW5hRGF0YXNvdXJjZU5hbWU/OiBzdHJpbmdcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGUgdGhlIGF0aGVuYURhdGFiYXNlTmFtZSwgb3RoZXJ3aXNlIGl0IHdpbGwgZGVmYXVsdCB0byBATUFSVF9FTlZfVkFSUy5BVEhFTkFfREFUQUJBU0VfTkFNRVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGF0aGVuYURhdGFiYXNlTmFtZT86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEljYXYyUmVzb3VyY2VzUHJvcHMge1xuICAgIC8qKlxuICAgICAqIFRoZSBpZCBvZiB0aGUgc2VjcmV0IHRoYXQgY29udGFpbnMgdGhlIGljYXYyIGFjY2VzcyB0b2tlblxuICAgICAqIG90aGVyd2lzZSBpdCB3aWxsIGRlZmF1bHQgdG8gQERFRkFVTFRfSUNBVjJfQUNDRVNTX1RPS0VOX1NFQ1JFVF9JRFxuICAgICAqL1xuICAgIHJlYWRvbmx5IGljYXYyQWNjZXNzVG9rZW5TZWNyZXRJZD86IHN0cmluZ1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgUHl0aG9uVXZGdW5jdGlvblByb3BzIGV4dGVuZHMgUHl0aG9uRnVuY3Rpb25Qcm9wcyB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdG8gaW5jbHVkZSB0aGUgb3JjYWJ1cyBhcGkgdG9vbHMgbGF5ZXIgaW4gdGhlIGxhbWJkYSBmdW5jdGlvbiBidWlsZFxuICAgICAqL1xuICAgIHJlYWRvbmx5IGluY2x1ZGVPcmNhYnVzQXBpVG9vbHNMYXllcj86IGJvb2xlYW5cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIGluY2x1ZGUgdGhlIG1hcnQgbGF5ZXIgaW4gdGhlIGxhbWJkYSBmdW5jdGlvbiBidWlsZFxuICAgICAqIE5vdGUgdGhhdCB0aGUgbWFydCBsYXllciBpcyBhIGxpdHRsZSBoZWF2aWVyIHRoYW4gdGhlIG9yY2FidXMgYXBpIHRvb2xzIGxheWVyXG4gICAgICogU2luY2Ugd2UgcmVxdWlyZSBwYW5kYXMgdG8gYmUgaW5zdGFsbGVkXG4gICAgICovXG4gICAgcmVhZG9ubHkgaW5jbHVkZU1hcnRMYXllcj86IGJvb2xlYW5cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIGluY2x1ZGUgdGhlIGljYXYyIGxheWVyIGluIHRoZSBsYW1iZGEgZnVuY3Rpb24gYnVpbGRcbiAgICAgKi9cbiAgICByZWFkb25seSBpbmNsdWRlSWNhdjJMYXllcj86IGJvb2xlYW5cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIGluY2x1ZGUgdGhlIGZhc3RhcGkgbGF5ZXIgaW4gdGhlIGxhbWJkYSBmdW5jdGlvbiBidWlsZFxuICAgICAqL1xuICAgIHJlYWRvbmx5IGluY2x1ZGVGYXN0QXBpTGF5ZXI/OiBib29sZWFuXG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlIHRoZSBvcmNhYnVzVG9rZW5SZXNvdXJjZXMsIG9wdGlvbmFsLCBvdGhlcndpc2UgaXQgd2lsbCBkZWZhdWx0IHRvXG4gICAgICogQERFRkFVTFRfT1JDQUJVU19UT0tFTl9TRUNSRVRfSUQgYW5kIEBERUZBVUxUX0hPU1ROQU1FX1NTTV9QQVJBTUVURVJcbiAgICAgKiBmb3IgdGhlIHNlY3JldCBhbmQgU1NNIHBhcmFtZXRlciByZXNwZWN0aXZlbHlcbiAgICAgKi9cbiAgICByZWFkb25seSBvcmNhYnVzVG9rZW5SZXNvdXJjZXM/OiBPcmNhYnVzUmVzb3VyY2VzUHJvcHNcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGUgdGhlIG1hcnRFbnZpcm9ubWVudFZhcmlhYmxlcywgb3B0aW9uYWwsIG90aGVyd2lzZSBpdCB3aWxsIGRlZmF1bHQgdG9cbiAgICAgKiBATUFSVF9FTlZfVkFSUy5BVEhFTkFfV09SS0dST1VQX05BTUUsIEBNQVJUX0VOVl9WQVJTLkFUSEVOQV9EQVRBU09VUkNFX05BTUVcbiAgICAgKiBhbmQgQE1BUlRfRU5WX1ZBUlMuQVRIRU5BX0RBVEFCQVNFX05BTUUgZm9yIHRoZSBhdGhlbmEgd29ya2dyb3VwLCBkYXRhc291cmNlIGFuZCBkYXRhYmFzZSByZXNwZWN0aXZlbHlcbiAgICAgKi9cbiAgICByZWFkb25seSBtYXJ0RW52aXJvbm1lbnRWYXJpYWJsZXM/OiBNYXJ0RW52aXJvbm1lbnRWYXJpYWJsZXNcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGUgdGhlIGljYXYyUmVzb3VyY2VzLCBvcHRpb25hbCwgb3RoZXJ3aXNlIGl0IHdpbGwgZGVmYXVsdCB0b1xuICAgICAqIEBERUZBVUxUX0lDQVYyX0FDQ0VTU19UT0tFTl9TRUNSRVRfSUQgZm9yIHRoZSBzZWNyZXRcbiAgICAgKi9cbiAgICByZWFkb25seSBpY2F2MlJlc291cmNlcz86IEljYXYyUmVzb3VyY2VzUHJvcHNcbn1cblxuXG5leHBvcnQgY2xhc3MgUHl0aG9uVXZGdW5jdGlvbiBleHRlbmRzIFB5dGhvbkZ1bmN0aW9uIHtcbiAgICAvLyBDbGFzcyBjb25zdHJ1Y3RzLCB0byBiZSB1c2VkIGZvciBjYWNoaW5nIHRoZSBsYXllcnNcbiAgICAvLyBUaGlzIG1lYW5zIHRoYXQgaWYgdGhlcmUgYXJlIG11bHRpcGxlIGxhbWJkYXMgdGhyb3VnaG91dCB0aGUgc3RhY2tcbiAgICAvLyBUaGV5IHdpbGwgYWxsIHVzZSB0aGUgc2FtZSBsYXllclxuICAgIHByaXZhdGUgc3RhdGljIG9yY2FidXNBcGlUb29sc0xheWVyOiBNYXA8Q29uc3RydWN0LCBsYW1iZGEuSUxheWVyVmVyc2lvbj4gPSBuZXcgTWFwKCk7XG4gICAgcHJpdmF0ZSBzdGF0aWMgbWFydExheWVyOiBNYXA8Q29uc3RydWN0LCBsYW1iZGEuSUxheWVyVmVyc2lvbj4gPSBuZXcgTWFwKCk7XG4gICAgcHJpdmF0ZSBzdGF0aWMgaWNhdjJMYXllcjogTWFwPENvbnN0cnVjdCwgbGFtYmRhLklMYXllclZlcnNpb24+ID0gbmV3IE1hcCgpO1xuICAgIHByaXZhdGUgc3RhdGljIGZhc3RBcGlMYXllcjogTWFwPENvbnN0cnVjdCwgbGFtYmRhLklMYXllclZlcnNpb24+ID0gbmV3IE1hcCgpO1xuXG4gICAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB5dGhvblV2RnVuY3Rpb25Qcm9wcykge1xuICAgICAgICBjb25zdCB1dlByb3BzID0ge1xuICAgICAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgICAgICBidW5kbGluZzoge1xuICAgICAgICAgICAgICAgIC4uLnByb3BzLmJ1bmRsaW5nLFxuICAgICAgICAgICAgICAgIGJ1aWxkQXJnczoge1xuICAgICAgICAgICAgICAgICAgICAuLi5wcm9wcy5idW5kbGluZz8uYnVpbGRBcmdzLFxuICAgICAgICAgICAgICAgICAgICAvLyBBZGQgVEFSR0VUUExBVEZPUk0gdG8gYnVpbGQgYXJncyBpZiBpdCdzIG5vdCBhbHJlYWR5IHNldFxuICAgICAgICAgICAgICAgICAgICBUQVJHRVRQTEFURk9STTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmJ1bmRsaW5nPy5idWlsZEFyZ3M/LlRBUkdFVFBMQVRGT1JNID8/IGxhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0LmRvY2tlclBsYXRmb3JtLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaW1hZ2U6IGdldFB5dGhvblV2RG9ja2VySW1hZ2UoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kSG9va3M6IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICBiZWZvcmVCdW5kbGluZyhpbnB1dERpcjogc3RyaW5nLCBvdXRwdXREaXI6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5idW5kbGluZz8uY29tbWFuZEhvb2tzPy5iZWZvcmVCdW5kbGluZyBhcyB1bmtub3duIGFzIHN0cmluZ1tdID8/IFtdO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgIGFmdGVyQnVuZGxpbmcoaW5wdXREaXI6IHN0cmluZywgb3V0cHV0RGlyOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHByb3BzLmJ1bmRsaW5nPy5jb21tYW5kSG9va3M/LmFmdGVyQnVuZGxpbmcgYXMgdW5rbm93biBhcyBzdHJpbmdbXSA/PyBbXSkuY29uY2F0KFtgcm0gLXJmICR7b3V0cHV0RGlyfS9wYW5kYXMvdGVzdHNgXSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXJhbXNBbmRTZWNyZXRzOlxuICAgICAgICAgICAgICAgIHByb3BzLnBhcmFtc0FuZFNlY3JldHMgPz9cbiAgICAgICAgICAgICAgICBQYXJhbXNBbmRTZWNyZXRzTGF5ZXJWZXJzaW9uLmZyb21WZXJzaW9uKFBhcmFtc0FuZFNlY3JldHNWZXJzaW9ucy5WMV8wXzEwMywge1xuICAgICAgICAgICAgICAgICAgICBjYWNoZUVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNhY2hlU2l6ZTogMzAwLFxuICAgICAgICAgICAgICAgICAgICBsb2dMZXZlbDogUGFyYW1zQW5kU2VjcmV0c0xvZ0xldmVsLkRFQlVHLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICB9O1xuICAgICAgICBzdXBlcihzY29wZSwgaWQsIHV2UHJvcHMpO1xuXG4gICAgICAgIGlmIChwcm9wcy5pbmNsdWRlT3JjYWJ1c0FwaVRvb2xzTGF5ZXIpIHtcbiAgICAgICAgICAgIC8qIFNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGUgT3JjYWJ1cyByZXNvdXJjZXMgKi9cbiAgICAgICAgICAgIHRoaXMuc2V0T3JjYWJ1c1Jlc291cmNlcyhwcm9wcy5vcmNhYnVzVG9rZW5SZXNvdXJjZXMgPz8ge30pXG5cbiAgICAgICAgICAgIC8qIEJ1aWxkIHRoZSBvcmNhYnVzIEFwaSB0b29scyBsYXllciAqL1xuICAgICAgICAgICAgdGhpcy5idWlsZE9yY2FidXNBcGlUb29sc0xheWVyKHNjb3BlKVxuICAgICAgICAgICAgdGhpcy5hZGRMYXllcnMoPFB5dGhvbkxheWVyVmVyc2lvbj5QeXRob25VdkZ1bmN0aW9uLm9yY2FidXNBcGlUb29sc0xheWVyLmdldChzY29wZSkpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvcHMuaW5jbHVkZU1hcnRMYXllcikge1xuICAgICAgICAgICAgLyogU2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRoZSBtYXJ0IHJlc291cmNlcyAqL1xuICAgICAgICAgICAgdGhpcy5zZXRBdGhlbmFSZXNvdXJjZXMocHJvcHMubWFydEVudmlyb25tZW50VmFyaWFibGVzID8/IHt9KVxuXG4gICAgICAgICAgICAvKiBCdWlsZCB0aGUgbWFydCBsYXllciAqL1xuICAgICAgICAgICAgdGhpcy5idWlsZE1hcnRUb29sc0xheWVyKHNjb3BlKVxuICAgICAgICAgICAgdGhpcy5hZGRMYXllcnMoPFB5dGhvbkxheWVyVmVyc2lvbj5QeXRob25VdkZ1bmN0aW9uLm1hcnRMYXllci5nZXQoc2NvcGUpKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb3BzLmluY2x1ZGVJY2F2MkxheWVyKSB7XG4gICAgICAgICAgICAvKiBTZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhlIGljYXYyIHJlc291cmNlcyAqL1xuICAgICAgICAgICAgdGhpcy5zZXRJY2F2MlJlc291cmNlcyhwcm9wcy5pY2F2MlJlc291cmNlcyA/PyB7fSlcblxuICAgICAgICAgICAgLyogQnVpbGQgdGhlIGljYXYyIGxheWVyICovXG4gICAgICAgICAgICB0aGlzLmJ1aWxkSWNhdjJMYXllcihzY29wZSlcbiAgICAgICAgICAgIHRoaXMuYWRkTGF5ZXJzKDxQeXRob25MYXllclZlcnNpb24+UHl0aG9uVXZGdW5jdGlvbi5pY2F2MkxheWVyLmdldChzY29wZSkpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvcHMuaW5jbHVkZUZhc3RBcGlMYXllcikge1xuICAgICAgICAgICAgLyogQnVpbGQgdGhlIGZhc3RhcGkgbGF5ZXIgKi9cbiAgICAgICAgICAgIHRoaXMuYnVpbGRGYXN0QXBpTGF5ZXIoc2NvcGUpXG4gICAgICAgICAgICB0aGlzLmFkZExheWVycyg8UHl0aG9uTGF5ZXJWZXJzaW9uPlB5dGhvblV2RnVuY3Rpb24uZmFzdEFwaUxheWVyLmdldChzY29wZSkpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkT3JjYWJ1c0FwaVRvb2xzTGF5ZXIoc2NvcGU6IENvbnN0cnVjdCkge1xuICAgICAgICAvLyBPbmx5IGJ1aWxkIG9yY2FidXMgYXBpIGxheWVyIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICAgICAgaWYgKCFQeXRob25VdkZ1bmN0aW9uLm9yY2FidXNBcGlUb29sc0xheWVyLmhhcyhzY29wZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGxheWVyID0gbmV3IFB5dGhvbkxheWVyVmVyc2lvbih0aGlzLCAnb3JjYWJ1c0FwaVRvb2xzTGF5ZXInLCB7XG4gICAgICAgICAgICAgICAgZW50cnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICdsYXllcnMvb3JjYWJ1c19hcGlfdG9vbHMnKSxcbiAgICAgICAgICAgICAgICBjb21wYXRpYmxlUnVudGltZXM6IFtsYW1iZGEuUnVudGltZS5QWVRIT05fM18xMl0sXG4gICAgICAgICAgICAgICAgY29tcGF0aWJsZUFyY2hpdGVjdHVyZXM6IFtsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NF0sXG4gICAgICAgICAgICAgICAgbGljZW5zZTogJ0dQTDMnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnb3JjYWJ1c0FwaVRvb2xzTGF5ZXInLFxuICAgICAgICAgICAgICAgIGJ1bmRsaW5nOiB7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlOiBnZXRQeXRob25VdkRvY2tlckltYWdlKCksXG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmRIb29rczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlQnVuZGxpbmcoaW5wdXREaXI6IHN0cmluZywgb3V0cHV0RGlyOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyQnVuZGxpbmcoaW5wdXREaXI6IHN0cmluZywgb3V0cHV0RGlyOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHBpcCBpbnN0YWxsICR7aW5wdXREaXJ9IC0tdGFyZ2V0ICR7b3V0cHV0RGlyfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBmaW5kICR7b3V0cHV0RGlyfSAtbmFtZSAncGFuZGFzJyAtZXhlYyBybSAtcmYge30vdGVzdHMvIFxcXFw7YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIFB5dGhvblV2RnVuY3Rpb24ub3JjYWJ1c0FwaVRvb2xzTGF5ZXIuc2V0KHNjb3BlLCBsYXllcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkTWFydFRvb2xzTGF5ZXIoc2NvcGU6IENvbnN0cnVjdCkge1xuICAgICAgICAvLyBPbmx5IGJ1aWxkIHRoZSBsYXllciBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAgICAgIGlmICghUHl0aG9uVXZGdW5jdGlvbi5tYXJ0TGF5ZXIuaGFzKHNjb3BlKSkge1xuICAgICAgICAgICAgY29uc3QgbGF5ZXIgPSBuZXcgUHl0aG9uTGF5ZXJWZXJzaW9uKHRoaXMsICdtYXJ0VG9vbHNMYXllcicsIHtcbiAgICAgICAgICAgICAgICBlbnRyeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ2xheWVycy9tYXJ0X3Rvb2xzJyksXG4gICAgICAgICAgICAgICAgY29tcGF0aWJsZVJ1bnRpbWVzOiBbbGFtYmRhLlJ1bnRpbWUuUFlUSE9OXzNfMTJdLFxuICAgICAgICAgICAgICAgIGNvbXBhdGlibGVBcmNoaXRlY3R1cmVzOiBbbGFtYmRhLkFyY2hpdGVjdHVyZS5BUk1fNjRdLFxuICAgICAgICAgICAgICAgIGxpY2Vuc2U6ICdHUEwzJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ21hcnRUb29sc0xheWVyJyxcbiAgICAgICAgICAgICAgICBidW5kbGluZzoge1xuICAgICAgICAgICAgICAgICAgICBpbWFnZTogZ2V0UHl0aG9uVXZEb2NrZXJJbWFnZSgpLFxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kSG9va3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZUJ1bmRsaW5nKGlucHV0RGlyOiBzdHJpbmcsIG91dHB1dERpcjogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhZnRlckJ1bmRsaW5nKGlucHV0RGlyOiBzdHJpbmcsIG91dHB1dERpcjogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBwaXAgaW5zdGFsbCAke2lucHV0RGlyfSAtLXRhcmdldCAke291dHB1dERpcn1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZmluZCAke291dHB1dERpcn0gLW5hbWUgJ3BhbmRhcycgLWV4ZWMgcm0gLXJmIHt9L3Rlc3RzLyBcXFxcO2AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgUHl0aG9uVXZGdW5jdGlvbi5tYXJ0TGF5ZXIuc2V0KHNjb3BlLCBsYXllcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkSWNhdjJMYXllcihzY29wZTogQ29uc3RydWN0KSB7XG4gICAgICAgIC8vIE9ubHkgYnVpbGQgdGhlIGxheWVyIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICAgICAgaWYgKCFQeXRob25VdkZ1bmN0aW9uLmljYXYyTGF5ZXIuaGFzKHNjb3BlKSkge1xuICAgICAgICAgICAgY29uc3QgbGF5ZXIgPSBuZXcgUHl0aG9uTGF5ZXJWZXJzaW9uKHRoaXMsICdpY2F2MlRvb2xzTGF5ZXInLCB7XG4gICAgICAgICAgICAgICAgZW50cnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICdsYXllcnMvaWNhdjJfdG9vbHMnKSxcbiAgICAgICAgICAgICAgICBjb21wYXRpYmxlUnVudGltZXM6IFtsYW1iZGEuUnVudGltZS5QWVRIT05fM18xMl0sXG4gICAgICAgICAgICAgICAgY29tcGF0aWJsZUFyY2hpdGVjdHVyZXM6IFtsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NF0sXG4gICAgICAgICAgICAgICAgbGljZW5zZTogJ0dQTDMnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnaWNhdjJUb29sc0xheWVyJyxcbiAgICAgICAgICAgICAgICBidW5kbGluZzoge1xuICAgICAgICAgICAgICAgICAgICBpbWFnZTogZ2V0UHl0aG9uVXZEb2NrZXJJbWFnZSgpLFxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kSG9va3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZUJ1bmRsaW5nKGlucHV0RGlyOiBzdHJpbmcsIG91dHB1dERpcjogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhZnRlckJ1bmRsaW5nKGlucHV0RGlyOiBzdHJpbmcsIG91dHB1dERpcjogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBwaXAgaW5zdGFsbCAke2lucHV0RGlyfSAtLXRhcmdldCAke291dHB1dERpcn1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZmluZCAke291dHB1dERpcn0gLW5hbWUgJ3BhbmRhcycgLWV4ZWMgcm0gLXJmIHt9L3Rlc3RzLyBcXFxcO2AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgUHl0aG9uVXZGdW5jdGlvbi5pY2F2MkxheWVyLnNldChzY29wZSwgbGF5ZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZEZhc3RBcGlMYXllcihzY29wZTogQ29uc3RydWN0KSB7XG4gICAgICAgIC8vIE9ubHkgYnVpbGQgdGhlIGxheWVyIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICAgICAgaWYgKCFQeXRob25VdkZ1bmN0aW9uLmZhc3RBcGlMYXllci5oYXMoc2NvcGUpKSB7XG4gICAgICAgICAgICBjb25zdCBsYXllciA9IG5ldyBQeXRob25MYXllclZlcnNpb24odGhpcywgJ2Zhc3RBcGlMYXllcicsIHtcbiAgICAgICAgICAgICAgICBlbnRyeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ2xheWVycy9mYXN0YXBpX3Rvb2xzJyksXG4gICAgICAgICAgICAgICAgY29tcGF0aWJsZVJ1bnRpbWVzOiBbbGFtYmRhLlJ1bnRpbWUuUFlUSE9OXzNfMTJdLFxuICAgICAgICAgICAgICAgIGNvbXBhdGlibGVBcmNoaXRlY3R1cmVzOiBbbGFtYmRhLkFyY2hpdGVjdHVyZS5BUk1fNjRdLFxuICAgICAgICAgICAgICAgIGxpY2Vuc2U6ICdHUEwzJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ2Zhc3RBcGlMYXllcicsXG4gICAgICAgICAgICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IGdldFB5dGhvblV2RG9ja2VySW1hZ2UoKSxcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZEhvb2tzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmVCdW5kbGluZyhpbnB1dERpcjogc3RyaW5nLCBvdXRwdXREaXI6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJCdW5kbGluZyhpbnB1dERpcjogc3RyaW5nLCBvdXRwdXREaXI6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgcGlwIGluc3RhbGwgJHtpbnB1dERpcn0gLS10YXJnZXQgJHtvdXRwdXREaXJ9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGZpbmQgJHtvdXRwdXREaXJ9IC1uYW1lICdwYW5kYXMnIC1leGVjIHJtIC1yZiB7fS90ZXN0cy8gXFxcXDtgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIFB5dGhvblV2RnVuY3Rpb24uZmFzdEFwaUxheWVyLnNldChzY29wZSwgbGF5ZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRPcmNhYnVzUmVzb3VyY2VzKFxuICAgICAgICBwcm9wczogT3JjYWJ1c1Jlc291cmNlc1Byb3BzXG4gICAgKSB7XG4gICAgICAgIC8vIFNldCBzZWNyZXQgb2JqZWN0XG4gICAgICAgIGNvbnN0IG9yY2FidXNUb2tlblNlY3JldElkID0gc2VjcmV0c01hbmFnZXIuU2VjcmV0LmZyb21TZWNyZXROYW1lVjIoXG4gICAgICAgICAgICB0aGlzLCAnb3JjYWJ1c1Rva2VuU2VjcmV0SWQnLFxuICAgICAgICAgICAgcHJvcHMub3JjYWJ1c1Rva2VuU2VjcmV0SWQgPz8gREVGQVVMVF9PUkNBQlVTX1RPS0VOX1NFQ1JFVF9JRFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBob3N0bmFtZVNzbVBhcmFtZXRlck5hbWUgPSBzc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKFxuICAgICAgICAgICAgdGhpcywgJ2hvc3RuYW1lU3NtUGFyYW1ldGVyTmFtZScsXG4gICAgICAgICAgICBwcm9wcy5ob3N0bmFtZVNzbVBhcmFtZXRlck5hbWUgPz8gREVGQVVMVF9IT1NUTkFNRV9TU01fUEFSQU1FVEVSLFxuICAgICAgICApXG5cbiAgICAgICAgLy8gQWRkIHBlcm1pc3Npb25zIGZvciB0aGUgc2VjcmV0IGFuZCBTU00gcGFyYW1ldGVyXG4gICAgICAgIC8vIFRvIHRoZSBjdXJyZW50IHZlcnNpb25cbiAgICAgICAgb3JjYWJ1c1Rva2VuU2VjcmV0SWQuZ3JhbnRSZWFkKHRoaXMuY3VycmVudFZlcnNpb24pO1xuICAgICAgICBob3N0bmFtZVNzbVBhcmFtZXRlck5hbWUuZ3JhbnRSZWFkKHRoaXMuY3VycmVudFZlcnNpb24pXG5cbiAgICAgICAgLy8gQWRkIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgICAgICB0aGlzLmFkZEVudmlyb25tZW50KFxuICAgICAgICAgICAgJ09SQ0FCVVNfVE9LRU5fU0VDUkVUX0lEJywgb3JjYWJ1c1Rva2VuU2VjcmV0SWQuc2VjcmV0TmFtZSxcbiAgICAgICAgKVxuICAgICAgICB0aGlzLmFkZEVudmlyb25tZW50KFxuICAgICAgICAgICAgJ0hPU1ROQU1FX1NTTV9QQVJBTUVURVJfTkFNRScsIGhvc3RuYW1lU3NtUGFyYW1ldGVyTmFtZS5wYXJhbWV0ZXJOYW1lLFxuICAgICAgICApXG4gICAgfVxuXG5cbiAgICBwcml2YXRlIHNldEF0aGVuYVJlc291cmNlcyhcbiAgICAgICAgcHJvcHM6IE1hcnRFbnZpcm9ubWVudFZhcmlhYmxlc1xuICAgICkge1xuICAgICAgICAvLyBSZXNvbHZlIHRoZSBzdGFnZSBuYW1lIGJ5IHBlcmZvcm1pbmcgYSByZXZlcnNlIGxvb2t1cCB1c2luZyBjZGsuQXdzLkFDQ09VTlRfSUQgb24gYWNjb3VudElkQWxpYXNcbiAgICAgICAgY29uc3Qgc3RhZ2VOYW1lID0gcmVzb2x2ZVN0YWdlTmFtZSh0aGlzKVxuXG4gICAgICAgIGNvbnN0IGF0aGVuYVMzQnVja2V0ID0gczMuQnVja2V0LmZyb21CdWNrZXROYW1lKFxuICAgICAgICAgICAgdGhpcywgJ2F0aGVuYVMzQnVja2V0JyxcbiAgICAgICAgICAgIE1BUlRfUzNfQlVDS0VUW3N0YWdlTmFtZV1cbiAgICAgICAgKVxuXG4gICAgICAgIGNvbnN0IGF0aGVuYUZ1bmN0aW9uTmFtZSA9IGxhbWJkYS5GdW5jdGlvbi5mcm9tRnVuY3Rpb25OYW1lKFxuICAgICAgICAgICAgdGhpcywgJ2xhbWJkYUZ1bmN0aW9uTmFtZScsIE1BUlRfTEFNQkRBX0ZVTkNUSU9OX05BTUVcbiAgICAgICAgKVxuXG4gICAgICAgIC8vIEFkZCBlbnYgdmFyc1xuICAgICAgICAvLyBJdGVyYXRlIG92ZXIga3YgcGFpcnMgb2YgTUFSVF9FTlZfVkFSU1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhNQVJUX0VOVl9WQVJTKSkge1xuICAgICAgICAgICAgLy8gQWZ0ZXJcbiAgICAgICAgICAgIGlmIChwcm9wc1trZXkgYXMga2V5b2YgTWFydEVudmlyb25tZW50VmFyaWFibGVzXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRFbnZpcm9ubWVudChrZXksIHByb3BzW2tleSBhcyBrZXlvZiBNYXJ0RW52aXJvbm1lbnRWYXJpYWJsZXNdISk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkRW52aXJvbm1lbnQoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQZXJtaXNzaW9uc1xuICAgICAgICB0aGlzLmN1cnJlbnRWZXJzaW9uLmFkZFRvUm9sZVBvbGljeShcbiAgICAgICAgICAgIC8vIEZyb20gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F0aGVuYS9sYXRlc3QvdWcvZXhhbXBsZS1wb2xpY2llcy13b3JrZ3JvdXAuaHRtbFxuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgLy8gV29ya2dyb3VwIGxpc3RzXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6TGlzdEVuZ2luZVZlcnNpb25zJyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpMaXN0V29ya0dyb3VwcycsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6TGlzdERhdGFDYXRhbG9ncycsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6TGlzdERhdGFiYXNlcycsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6R2V0RGF0YWJhc2UnLFxuICAgICAgICAgICAgICAgICAgICAnYXRoZW5hOkxpc3RUYWJsZU1ldGFkYXRhJyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpHZXRUYWJsZU1ldGFkYXRhJyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpHZXREYXRhQ2F0YWxvZycsXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXM6IFtgYXJuOmF3czphdGhlbmE6JHtSRUdJT059OiR7YWNjb3VudElkQWxpYXNbc3RhZ2VOYW1lXX06KmBdLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmN1cnJlbnRWZXJzaW9uLmFkZFRvUm9sZVBvbGljeShcbiAgICAgICAgICAgIC8vIEZyb20gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F0aGVuYS9sYXRlc3QvdWcvZXhhbXBsZS1wb2xpY2llcy13b3JrZ3JvdXAuaHRtbFxuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgLy8gV29ya2dyb3VwIGV4ZWN1dGlvbnNcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpCYXRjaEdldFF1ZXJ5RXhlY3V0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpHZXRRdWVyeUV4ZWN1dGlvbicsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6TGlzdFF1ZXJ5RXhlY3V0aW9ucycsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6U3RhcnRRdWVyeUV4ZWN1dGlvbicsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6U3RvcFF1ZXJ5RXhlY3V0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpHZXRRdWVyeVJlc3VsdHMnLFxuICAgICAgICAgICAgICAgICAgICAnYXRoZW5hOkdldFF1ZXJ5UmVzdWx0c1N0cmVhbScsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6Q3JlYXRlTmFtZWRRdWVyeScsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6R2V0TmFtZWRRdWVyeScsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6QmF0Y2hHZXROYW1lZFF1ZXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpMaXN0TmFtZWRRdWVyaWVzJyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpEZWxldGVOYW1lZFF1ZXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpDcmVhdGVQcmVwYXJlZFN0YXRlbWVudCcsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6R2V0UHJlcGFyZWRTdGF0ZW1lbnQnLFxuICAgICAgICAgICAgICAgICAgICAnYXRoZW5hOkxpc3RQcmVwYXJlZFN0YXRlbWVudHMnLFxuICAgICAgICAgICAgICAgICAgICAnYXRoZW5hOlVwZGF0ZVByZXBhcmVkU3RhdGVtZW50JyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpEZWxldGVQcmVwYXJlZFN0YXRlbWVudCcsXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgYGFybjphd3M6YXRoZW5hOiR7UkVHSU9OfToke2FjY291bnRJZEFsaWFzW3N0YWdlTmFtZV19Ondvcmtncm91cC8ke01BUlRfRU5WX1ZBUlMuYXRoZW5hV29ya2dyb3VwTmFtZX1gLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIEFkZCByZWFkIGFjY2VzcyB0byB0aGUgUzMgYnVja2V0XG4gICAgICAgIGF0aGVuYVMzQnVja2V0LmdyYW50UmVhZFdyaXRlKFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50VmVyc2lvbixcbiAgICAgICAgICAgIGAke01BUlRfUzNfUFJFRklYfSpgXG4gICAgICAgIClcblxuICAgICAgICAvLyBBZGQgaW52b2tlIGFjY2VzcyB0byB0aGUgbGFtYmRhIGZ1bmN0aW9uXG4gICAgICAgIGF0aGVuYUZ1bmN0aW9uTmFtZS5ncmFudEludm9rZShcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFZlcnNpb25cbiAgICAgICAgKVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0SWNhdjJSZXNvdXJjZXMoXG4gICAgICAgIHByb3BzOiBJY2F2MlJlc291cmNlc1Byb3BzXG4gICAgKSB7XG4gICAgICAgIC8vIFJlc29sdmUgdGhlIHN0YWdlIG5hbWUgYnkgcGVyZm9ybWluZyBhIHJldmVyc2UgbG9va3VwIHVzaW5nIGNkay5Bd3MuQUNDT1VOVF9JRCBvbiBhY2NvdW50SWRBbGlhc1xuICAgICAgICBjb25zdCBzdGFnZU5hbWUgPSByZXNvbHZlU3RhZ2VOYW1lKHRoaXMpXG5cbiAgICAgICAgLy8gU2V0IHNlY3JldCBvYmplY3RcbiAgICAgICAgY29uc3QgaWNhdjJBY2Nlc3NUb2tlblNlY3JldElkT2JqID0gc2VjcmV0c01hbmFnZXIuU2VjcmV0LmZyb21TZWNyZXROYW1lVjIoXG4gICAgICAgICAgICB0aGlzLCAnaWNhdjJBY2Nlc3NUb2tlblNlY3JldElkJyxcbiAgICAgICAgICAgIHByb3BzLmljYXYyQWNjZXNzVG9rZW5TZWNyZXRJZCA/PyBpY2F2MkFjY2Vzc1Rva2VuU2VjcmV0SWRbc3RhZ2VOYW1lXVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIEFkZCBwZXJtaXNzaW9ucyBmb3IgdGhlIHNlY3JldCBhbmQgU1NNIHBhcmFtZXRlclxuICAgICAgICAvLyBUbyB0aGUgY3VycmVudCB2ZXJzaW9uXG4gICAgICAgIGljYXYyQWNjZXNzVG9rZW5TZWNyZXRJZE9iai5ncmFudFJlYWQodGhpcy5jdXJyZW50VmVyc2lvbik7XG5cbiAgICAgICAgLy8gQWRkIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgICAgICB0aGlzLmFkZEVudmlyb25tZW50KFxuICAgICAgICAgICAgJ0lDQVYyX0FDQ0VTU19UT0tFTl9TRUNSRVRfSUQnLCBpY2F2MkFjY2Vzc1Rva2VuU2VjcmV0SWRPYmouc2VjcmV0TmFtZSxcbiAgICAgICAgKVxuICAgICAgICB0aGlzLmFkZEVudmlyb25tZW50KFxuICAgICAgICAgICAgJ0lDQVYyX0JBU0VfVVJMJywgaWNhdjJCYXNlVXJsLFxuICAgICAgICApXG4gICAgfVxuXG59XG5cblxuXG5cbiJdfQ==
|
|
327
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE2QkEsd0RBRUM7O0FBL0JELDhFQUF5RztBQUV6RywrREFBaUQ7QUFDakQsK0VBQWlFO0FBQ2pFLHlEQUEyQztBQUMzQyx5REFBMkM7QUFDM0MsdURBQXlDO0FBQ3pDLDZDQUF3QztBQUV4QyxnREFBd0I7QUFFeEIsdURBSWdDO0FBQ2hDLHFDQU9rQjtBQUNsQixvQ0FBMEM7QUFDMUMsd0RBQW1FO0FBQ25FLGtEQUFvRjtBQUdwRixTQUFnQixzQkFBc0I7SUFDbEMsT0FBTyx5QkFBVyxDQUFDLFNBQVMsQ0FBQyxjQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLENBQUM7QUFxRkQsTUFBYSxnQkFBaUIsU0FBUSx3Q0FBYzs7SUFDaEQsc0RBQXNEO0lBQ3RELHFFQUFxRTtJQUNyRSxtQ0FBbUM7SUFDM0IsTUFBTSxDQUFDLG9CQUFvQixHQUF5QyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzlFLE1BQU0sQ0FBQyxTQUFTLEdBQXlDLElBQUksR0FBRyxFQUFFLENBQUM7SUFDbkUsTUFBTSxDQUFDLFVBQVUsR0FBeUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNwRSxNQUFNLENBQUMsWUFBWSxHQUF5QyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRTlFLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNEI7UUFDbEUsTUFBTSxPQUFPLEdBQUc7WUFDWixHQUFHLEtBQUs7WUFDUixRQUFRLEVBQUU7Z0JBQ04sR0FBRyxLQUFLLENBQUMsUUFBUTtnQkFDakIsU0FBUyxFQUFFO29CQUNQLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxTQUFTO29CQUM1QiwyREFBMkQ7b0JBQzNELGNBQWMsRUFDVixLQUFLLENBQUMsUUFBUSxF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LENBQUE7SUFDTCxDQUFDOztBQTFVTCw0Q0E0VUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1B5dGhvbkZ1bmN0aW9uLCBQeXRob25GdW5jdGlvblByb3BzLCBQeXRob25MYXllclZlcnNpb259IGZyb20gXCJAYXdzLWNkay9hd3MtbGFtYmRhLXB5dGhvbi1hbHBoYVwiO1xuaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCAqIGFzIHNlY3JldHNNYW5hZ2VyIGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXJcIjtcbmltcG9ydCAqIGFzIHNzbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNzbVwiO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgKiBhcyBzMyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQge0RvY2tlckltYWdlfSBmcm9tICdhd3MtY2RrLWxpYic7XG5cbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7XG4gICAgUGFyYW1zQW5kU2VjcmV0c0xheWVyVmVyc2lvbixcbiAgICBQYXJhbXNBbmRTZWNyZXRzTG9nTGV2ZWwsXG4gICAgUGFyYW1zQW5kU2VjcmV0c1ZlcnNpb25zLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7XG4gICAgLy8gT3JjYWJ1cyBkZWZhdWx0c1xuICAgIERFRkFVTFRfSE9TVE5BTUVfU1NNX1BBUkFNRVRFUiwgREVGQVVMVF9PUkNBQlVTX1RPS0VOX1NFQ1JFVF9JRCxcbiAgICAvLyBNYXJ0IGRlZmF1bHRzXG4gICAgTUFSVF9FTlZfVkFSUywgTUFSVF9MQU1CREFfRlVOQ1RJT05fTkFNRSxcbiAgICBNQVJUX1MzX0JVQ0tFVCxcbiAgICBNQVJUX1MzX1BSRUZJWCxcbn0gZnJvbSBcIi4vY29uZmlnXCI7XG5pbXBvcnQge3Jlc29sdmVTdGFnZU5hbWV9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHtBQ0NPVU5UX0lEX0FMSUFTLCBSRUdJT059IGZyb20gXCIuLi9zaGFyZWQtY29uZmlnL2FjY291bnRzXCI7XG5pbXBvcnQge0lDQVYyX0FDQ0VTU19UT0tFTl9TRUNSRVRfSUQsIElDQVYyX0JBU0VfVVJMfSBmcm9tIFwiLi4vc2hhcmVkLWNvbmZpZy9pY2F2MlwiO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQeXRob25VdkRvY2tlckltYWdlKCk6IERvY2tlckltYWdlIHtcbiAgICByZXR1cm4gRG9ja2VySW1hZ2UuZnJvbUJ1aWxkKHBhdGguam9pbihfX2Rpcm5hbWUsICdidWlsZF9weXRob24nKSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JjYWJ1c1Jlc291cmNlc1Byb3BzIHtcbiAgICAvKipcbiAgICAgKiBQcm92aWRlIHRoZSBvcmNhYnVzVG9rZW5TZWNyZXRJZCwgb3RoZXJ3aXNlIGl0IHdpbGwgZGVmYXVsdCB0byBAREVGQVVMVF9PUkNBQlVTX1RPS0VOX1NFQ1JFVF9JRFxuICAgICAqL1xuICAgIHJlYWRvbmx5IG9yY2FidXNUb2tlblNlY3JldElkPzogc3RyaW5nXG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlIHRoZSBob3N0bmFtZVNzbVBhcmFtZXRlck5hbWUsIG90aGVyd2lzZSBpdCB3aWxsIGRlZmF1bHQgdG8gQERFRkFVTFRfSE9TVE5BTUVfU1NNX1BBUkFNRVRFUlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGhvc3RuYW1lU3NtUGFyYW1ldGVyTmFtZT86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcnRFbnZpcm9ubWVudFZhcmlhYmxlcyB7XG4gICAgLyoqXG4gICAgICogUHJvdmlkZSB0aGUgYXRoZW5hV29ya2dyb3VwTmFtZSwgb3RoZXJ3aXNlIGl0IHdpbGwgZGVmYXVsdCB0byBATUFSVF9FTlZfVkFSUy5BVEhFTkFfV09SS0dST1VQX05BTUVcbiAgICAgKi9cbiAgICByZWFkb25seSBhdGhlbmFXb3JrZ3JvdXBOYW1lPzogc3RyaW5nXG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlIHRoZSBhdGhlbmFEYXRhc291cmNlTmFtZSwgb3RoZXJ3aXNlIGl0IHdpbGwgZGVmYXVsdCB0byBATUFSVF9FTlZfVkFSUy5hdGhlbmFEYXRhc291cmNlTmFtZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGF0aGVuYURhdGFzb3VyY2VOYW1lPzogc3RyaW5nXG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlIHRoZSBhdGhlbmFEYXRhYmFzZU5hbWUsIG90aGVyd2lzZSBpdCB3aWxsIGRlZmF1bHQgdG8gQE1BUlRfRU5WX1ZBUlMuQVRIRU5BX0RBVEFCQVNFX05BTUVcbiAgICAgKi9cbiAgICByZWFkb25seSBhdGhlbmFEYXRhYmFzZU5hbWU/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJY2F2MlJlc291cmNlc1Byb3BzIHtcbiAgICAvKipcbiAgICAgKiBUaGUgaWQgb2YgdGhlIHNlY3JldCB0aGF0IGNvbnRhaW5zIHRoZSBpY2F2MiBhY2Nlc3MgdG9rZW5cbiAgICAgKiBvdGhlcndpc2UgaXQgd2lsbCBkZWZhdWx0IHRvIEBJQ0FWMl9BQ0NFU1NfVE9LRU5fU0VDUkVUX0lEXG4gICAgICovXG4gICAgcmVhZG9ubHkgaWNhdjJBY2Nlc3NUb2tlblNlY3JldElkPzogc3RyaW5nXG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBQeXRob25VdkZ1bmN0aW9uUHJvcHMgZXh0ZW5kcyBQeXRob25GdW5jdGlvblByb3BzIHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0byBpbmNsdWRlIHRoZSBvcmNhYnVzIGFwaSB0b29scyBsYXllciBpbiB0aGUgbGFtYmRhIGZ1bmN0aW9uIGJ1aWxkXG4gICAgICovXG4gICAgcmVhZG9ubHkgaW5jbHVkZU9yY2FidXNBcGlUb29sc0xheWVyPzogYm9vbGVhblxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdG8gaW5jbHVkZSB0aGUgbWFydCBsYXllciBpbiB0aGUgbGFtYmRhIGZ1bmN0aW9uIGJ1aWxkXG4gICAgICogTm90ZSB0aGF0IHRoZSBtYXJ0IGxheWVyIGlzIGEgbGl0dGxlIGhlYXZpZXIgdGhhbiB0aGUgb3JjYWJ1cyBhcGkgdG9vbHMgbGF5ZXJcbiAgICAgKiBTaW5jZSB3ZSByZXF1aXJlIHBhbmRhcyB0byBiZSBpbnN0YWxsZWRcbiAgICAgKi9cbiAgICByZWFkb25seSBpbmNsdWRlTWFydExheWVyPzogYm9vbGVhblxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdG8gaW5jbHVkZSB0aGUgaWNhdjIgbGF5ZXIgaW4gdGhlIGxhbWJkYSBmdW5jdGlvbiBidWlsZFxuICAgICAqL1xuICAgIHJlYWRvbmx5IGluY2x1ZGVJY2F2MkxheWVyPzogYm9vbGVhblxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdG8gaW5jbHVkZSB0aGUgZmFzdGFwaSBsYXllciBpbiB0aGUgbGFtYmRhIGZ1bmN0aW9uIGJ1aWxkXG4gICAgICovXG4gICAgcmVhZG9ubHkgaW5jbHVkZUZhc3RBcGlMYXllcj86IGJvb2xlYW5cblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGUgdGhlIG9yY2FidXNUb2tlblJlc291cmNlcywgb3B0aW9uYWwsIG90aGVyd2lzZSBpdCB3aWxsIGRlZmF1bHQgdG9cbiAgICAgKiBAREVGQVVMVF9PUkNBQlVTX1RPS0VOX1NFQ1JFVF9JRCBhbmQgQERFRkFVTFRfSE9TVE5BTUVfU1NNX1BBUkFNRVRFUlxuICAgICAqIGZvciB0aGUgc2VjcmV0IGFuZCBTU00gcGFyYW1ldGVyIHJlc3BlY3RpdmVseVxuICAgICAqL1xuICAgIHJlYWRvbmx5IG9yY2FidXNUb2tlblJlc291cmNlcz86IE9yY2FidXNSZXNvdXJjZXNQcm9wc1xuXG4gICAgLyoqXG4gICAgICogUHJvdmlkZSB0aGUgbWFydEVudmlyb25tZW50VmFyaWFibGVzLCBvcHRpb25hbCwgb3RoZXJ3aXNlIGl0IHdpbGwgZGVmYXVsdCB0b1xuICAgICAqIEBNQVJUX0VOVl9WQVJTLkFUSEVOQV9XT1JLR1JPVVBfTkFNRSwgQE1BUlRfRU5WX1ZBUlMuQVRIRU5BX0RBVEFTT1VSQ0VfTkFNRVxuICAgICAqIGFuZCBATUFSVF9FTlZfVkFSUy5BVEhFTkFfREFUQUJBU0VfTkFNRSBmb3IgdGhlIGF0aGVuYSB3b3JrZ3JvdXAsIGRhdGFzb3VyY2UgYW5kIGRhdGFiYXNlIHJlc3BlY3RpdmVseVxuICAgICAqL1xuICAgIHJlYWRvbmx5IG1hcnRFbnZpcm9ubWVudFZhcmlhYmxlcz86IE1hcnRFbnZpcm9ubWVudFZhcmlhYmxlc1xuXG4gICAgLyoqXG4gICAgICogUHJvdmlkZSB0aGUgaWNhdjJSZXNvdXJjZXMsIG9wdGlvbmFsLCBvdGhlcndpc2UgaXQgd2lsbCBkZWZhdWx0IHRvXG4gICAgICogQERFRkFVTFRfSUNBVjJfQUNDRVNTX1RPS0VOX1NFQ1JFVF9JRCBmb3IgdGhlIHNlY3JldFxuICAgICAqL1xuICAgIHJlYWRvbmx5IGljYXYyUmVzb3VyY2VzPzogSWNhdjJSZXNvdXJjZXNQcm9wc1xufVxuXG5cbmV4cG9ydCBjbGFzcyBQeXRob25VdkZ1bmN0aW9uIGV4dGVuZHMgUHl0aG9uRnVuY3Rpb24ge1xuICAgIC8vIENsYXNzIGNvbnN0cnVjdHMsIHRvIGJlIHVzZWQgZm9yIGNhY2hpbmcgdGhlIGxheWVyc1xuICAgIC8vIFRoaXMgbWVhbnMgdGhhdCBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgbGFtYmRhcyB0aHJvdWdob3V0IHRoZSBzdGFja1xuICAgIC8vIFRoZXkgd2lsbCBhbGwgdXNlIHRoZSBzYW1lIGxheWVyXG4gICAgcHJpdmF0ZSBzdGF0aWMgb3JjYWJ1c0FwaVRvb2xzTGF5ZXI6IE1hcDxDb25zdHJ1Y3QsIGxhbWJkYS5JTGF5ZXJWZXJzaW9uPiA9IG5ldyBNYXAoKTtcbiAgICBwcml2YXRlIHN0YXRpYyBtYXJ0TGF5ZXI6IE1hcDxDb25zdHJ1Y3QsIGxhbWJkYS5JTGF5ZXJWZXJzaW9uPiA9IG5ldyBNYXAoKTtcbiAgICBwcml2YXRlIHN0YXRpYyBpY2F2MkxheWVyOiBNYXA8Q29uc3RydWN0LCBsYW1iZGEuSUxheWVyVmVyc2lvbj4gPSBuZXcgTWFwKCk7XG4gICAgcHJpdmF0ZSBzdGF0aWMgZmFzdEFwaUxheWVyOiBNYXA8Q29uc3RydWN0LCBsYW1iZGEuSUxheWVyVmVyc2lvbj4gPSBuZXcgTWFwKCk7XG5cbiAgICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHl0aG9uVXZGdW5jdGlvblByb3BzKSB7XG4gICAgICAgIGNvbnN0IHV2UHJvcHMgPSB7XG4gICAgICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgICAgIGJ1bmRsaW5nOiB7XG4gICAgICAgICAgICAgICAgLi4ucHJvcHMuYnVuZGxpbmcsXG4gICAgICAgICAgICAgICAgYnVpbGRBcmdzOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnByb3BzLmJ1bmRsaW5nPy5idWlsZEFyZ3MsXG4gICAgICAgICAgICAgICAgICAgIC8vIEFkZCBUQVJHRVRQTEFURk9STSB0byBidWlsZCBhcmdzIGlmIGl0J3Mgbm90IGFscmVhZHkgc2V0XG4gICAgICAgICAgICAgICAgICAgIFRBUkdFVFBMQVRGT1JNOlxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuYnVuZGxpbmc/LmJ1aWxkQXJncz8uVEFSR0VUUExBVEZPUk0gPz8gbGFtYmRhLkFyY2hpdGVjdHVyZS5BUk1fNjQuZG9ja2VyUGxhdGZvcm0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBpbWFnZTogZ2V0UHl0aG9uVXZEb2NrZXJJbWFnZSgpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmRIb29rczoge1xuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgIGJlZm9yZUJ1bmRsaW5nKGlucHV0RGlyOiBzdHJpbmcsIG91dHB1dERpcjogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLmJ1bmRsaW5nPy5jb21tYW5kSG9va3M/LmJlZm9yZUJ1bmRsaW5nIGFzIHVua25vd24gYXMgc3RyaW5nW10gPz8gW107XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgYWZ0ZXJCdW5kbGluZyhpbnB1dERpcjogc3RyaW5nLCBvdXRwdXREaXI6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAocHJvcHMuYnVuZGxpbmc/LmNvbW1hbmRIb29rcz8uYWZ0ZXJCdW5kbGluZyBhcyB1bmtub3duIGFzIHN0cmluZ1tdID8/IFtdKS5jb25jYXQoW2BybSAtcmYgJHtvdXRwdXREaXJ9L3BhbmRhcy90ZXN0c2BdKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhcmFtc0FuZFNlY3JldHM6XG4gICAgICAgICAgICAgICAgcHJvcHMucGFyYW1zQW5kU2VjcmV0cyA/P1xuICAgICAgICAgICAgICAgIFBhcmFtc0FuZFNlY3JldHNMYXllclZlcnNpb24uZnJvbVZlcnNpb24oUGFyYW1zQW5kU2VjcmV0c1ZlcnNpb25zLlYxXzBfMTAzLCB7XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY2FjaGVTaXplOiAzMDAsXG4gICAgICAgICAgICAgICAgICAgIGxvZ0xldmVsOiBQYXJhbXNBbmRTZWNyZXRzTG9nTGV2ZWwuREVCVUcsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgIH07XG4gICAgICAgIHN1cGVyKHNjb3BlLCBpZCwgdXZQcm9wcyk7XG5cbiAgICAgICAgaWYgKHByb3BzLmluY2x1ZGVPcmNhYnVzQXBpVG9vbHNMYXllcikge1xuICAgICAgICAgICAgLyogU2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRoZSBPcmNhYnVzIHJlc291cmNlcyAqL1xuICAgICAgICAgICAgdGhpcy5zZXRPcmNhYnVzUmVzb3VyY2VzKHByb3BzLm9yY2FidXNUb2tlblJlc291cmNlcyA/PyB7fSlcblxuICAgICAgICAgICAgLyogQnVpbGQgdGhlIG9yY2FidXMgQXBpIHRvb2xzIGxheWVyICovXG4gICAgICAgICAgICB0aGlzLmJ1aWxkT3JjYWJ1c0FwaVRvb2xzTGF5ZXIoc2NvcGUpXG4gICAgICAgICAgICB0aGlzLmFkZExheWVycyg8UHl0aG9uTGF5ZXJWZXJzaW9uPlB5dGhvblV2RnVuY3Rpb24ub3JjYWJ1c0FwaVRvb2xzTGF5ZXIuZ2V0KHNjb3BlKSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcm9wcy5pbmNsdWRlTWFydExheWVyKSB7XG4gICAgICAgICAgICAvKiBTZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhlIG1hcnQgcmVzb3VyY2VzICovXG4gICAgICAgICAgICB0aGlzLnNldEF0aGVuYVJlc291cmNlcyhwcm9wcy5tYXJ0RW52aXJvbm1lbnRWYXJpYWJsZXMgPz8ge30pXG5cbiAgICAgICAgICAgIC8qIEJ1aWxkIHRoZSBtYXJ0IGxheWVyICovXG4gICAgICAgICAgICB0aGlzLmJ1aWxkTWFydFRvb2xzTGF5ZXIoc2NvcGUpXG4gICAgICAgICAgICB0aGlzLmFkZExheWVycyg8UHl0aG9uTGF5ZXJWZXJzaW9uPlB5dGhvblV2RnVuY3Rpb24ubWFydExheWVyLmdldChzY29wZSkpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvcHMuaW5jbHVkZUljYXYyTGF5ZXIpIHtcbiAgICAgICAgICAgIC8qIFNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGUgaWNhdjIgcmVzb3VyY2VzICovXG4gICAgICAgICAgICB0aGlzLnNldEljYXYyUmVzb3VyY2VzKHByb3BzLmljYXYyUmVzb3VyY2VzID8/IHt9KVxuXG4gICAgICAgICAgICAvKiBCdWlsZCB0aGUgaWNhdjIgbGF5ZXIgKi9cbiAgICAgICAgICAgIHRoaXMuYnVpbGRJY2F2MkxheWVyKHNjb3BlKVxuICAgICAgICAgICAgdGhpcy5hZGRMYXllcnMoPFB5dGhvbkxheWVyVmVyc2lvbj5QeXRob25VdkZ1bmN0aW9uLmljYXYyTGF5ZXIuZ2V0KHNjb3BlKSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcm9wcy5pbmNsdWRlRmFzdEFwaUxheWVyKSB7XG4gICAgICAgICAgICAvKiBCdWlsZCB0aGUgZmFzdGFwaSBsYXllciAqL1xuICAgICAgICAgICAgdGhpcy5idWlsZEZhc3RBcGlMYXllcihzY29wZSlcbiAgICAgICAgICAgIHRoaXMuYWRkTGF5ZXJzKDxQeXRob25MYXllclZlcnNpb24+UHl0aG9uVXZGdW5jdGlvbi5mYXN0QXBpTGF5ZXIuZ2V0KHNjb3BlKSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRPcmNhYnVzQXBpVG9vbHNMYXllcihzY29wZTogQ29uc3RydWN0KSB7XG4gICAgICAgIC8vIE9ubHkgYnVpbGQgb3JjYWJ1cyBhcGkgbGF5ZXIgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgICAgICBpZiAoIVB5dGhvblV2RnVuY3Rpb24ub3JjYWJ1c0FwaVRvb2xzTGF5ZXIuaGFzKHNjb3BlKSkge1xuICAgICAgICAgICAgY29uc3QgbGF5ZXIgPSBuZXcgUHl0aG9uTGF5ZXJWZXJzaW9uKHRoaXMsICdvcmNhYnVzQXBpVG9vbHNMYXllcicsIHtcbiAgICAgICAgICAgICAgICBlbnRyeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ2xheWVycy9vcmNhYnVzX2FwaV90b29scycpLFxuICAgICAgICAgICAgICAgIGNvbXBhdGlibGVSdW50aW1lczogW2xhbWJkYS5SdW50aW1lLlBZVEhPTl8zXzEyXSxcbiAgICAgICAgICAgICAgICBjb21wYXRpYmxlQXJjaGl0ZWN0dXJlczogW2xhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0XSxcbiAgICAgICAgICAgICAgICBsaWNlbnNlOiAnR1BMMycsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdvcmNhYnVzQXBpVG9vbHNMYXllcicsXG4gICAgICAgICAgICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IGdldFB5dGhvblV2RG9ja2VySW1hZ2UoKSxcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZEhvb2tzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmVCdW5kbGluZyhpbnB1dERpcjogc3RyaW5nLCBvdXRwdXREaXI6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJCdW5kbGluZyhpbnB1dERpcjogc3RyaW5nLCBvdXRwdXREaXI6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgcGlwIGluc3RhbGwgJHtpbnB1dERpcn0gLS10YXJnZXQgJHtvdXRwdXREaXJ9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGZpbmQgJHtvdXRwdXREaXJ9IC1uYW1lICdwYW5kYXMnIC1leGVjIHJtIC1yZiB7fS90ZXN0cy8gXFxcXDtgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgUHl0aG9uVXZGdW5jdGlvbi5vcmNhYnVzQXBpVG9vbHNMYXllci5zZXQoc2NvcGUsIGxheWVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRNYXJ0VG9vbHNMYXllcihzY29wZTogQ29uc3RydWN0KSB7XG4gICAgICAgIC8vIE9ubHkgYnVpbGQgdGhlIGxheWVyIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICAgICAgaWYgKCFQeXRob25VdkZ1bmN0aW9uLm1hcnRMYXllci5oYXMoc2NvcGUpKSB7XG4gICAgICAgICAgICBjb25zdCBsYXllciA9IG5ldyBQeXRob25MYXllclZlcnNpb24odGhpcywgJ21hcnRUb29sc0xheWVyJywge1xuICAgICAgICAgICAgICAgIGVudHJ5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnbGF5ZXJzL21hcnRfdG9vbHMnKSxcbiAgICAgICAgICAgICAgICBjb21wYXRpYmxlUnVudGltZXM6IFtsYW1iZGEuUnVudGltZS5QWVRIT05fM18xMl0sXG4gICAgICAgICAgICAgICAgY29tcGF0aWJsZUFyY2hpdGVjdHVyZXM6IFtsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NF0sXG4gICAgICAgICAgICAgICAgbGljZW5zZTogJ0dQTDMnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnbWFydFRvb2xzTGF5ZXInLFxuICAgICAgICAgICAgICAgIGJ1bmRsaW5nOiB7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlOiBnZXRQeXRob25VdkRvY2tlckltYWdlKCksXG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmRIb29rczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlQnVuZGxpbmcoaW5wdXREaXI6IHN0cmluZywgb3V0cHV0RGlyOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyQnVuZGxpbmcoaW5wdXREaXI6IHN0cmluZywgb3V0cHV0RGlyOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHBpcCBpbnN0YWxsICR7aW5wdXREaXJ9IC0tdGFyZ2V0ICR7b3V0cHV0RGlyfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBmaW5kICR7b3V0cHV0RGlyfSAtbmFtZSAncGFuZGFzJyAtZXhlYyBybSAtcmYge30vdGVzdHMvIFxcXFw7YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBQeXRob25VdkZ1bmN0aW9uLm1hcnRMYXllci5zZXQoc2NvcGUsIGxheWVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRJY2F2MkxheWVyKHNjb3BlOiBDb25zdHJ1Y3QpIHtcbiAgICAgICAgLy8gT25seSBidWlsZCB0aGUgbGF5ZXIgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgICAgICBpZiAoIVB5dGhvblV2RnVuY3Rpb24uaWNhdjJMYXllci5oYXMoc2NvcGUpKSB7XG4gICAgICAgICAgICBjb25zdCBsYXllciA9IG5ldyBQeXRob25MYXllclZlcnNpb24odGhpcywgJ2ljYXYyVG9vbHNMYXllcicsIHtcbiAgICAgICAgICAgICAgICBlbnRyeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ2xheWVycy9pY2F2Ml90b29scycpLFxuICAgICAgICAgICAgICAgIGNvbXBhdGlibGVSdW50aW1lczogW2xhbWJkYS5SdW50aW1lLlBZVEhPTl8zXzEyXSxcbiAgICAgICAgICAgICAgICBjb21wYXRpYmxlQXJjaGl0ZWN0dXJlczogW2xhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0XSxcbiAgICAgICAgICAgICAgICBsaWNlbnNlOiAnR1BMMycsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdpY2F2MlRvb2xzTGF5ZXInLFxuICAgICAgICAgICAgICAgIGJ1bmRsaW5nOiB7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlOiBnZXRQeXRob25VdkRvY2tlckltYWdlKCksXG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmRIb29rczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlQnVuZGxpbmcoaW5wdXREaXI6IHN0cmluZywgb3V0cHV0RGlyOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyQnVuZGxpbmcoaW5wdXREaXI6IHN0cmluZywgb3V0cHV0RGlyOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHBpcCBpbnN0YWxsICR7aW5wdXREaXJ9IC0tdGFyZ2V0ICR7b3V0cHV0RGlyfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBmaW5kICR7b3V0cHV0RGlyfSAtbmFtZSAncGFuZGFzJyAtZXhlYyBybSAtcmYge30vdGVzdHMvIFxcXFw7YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBQeXRob25VdkZ1bmN0aW9uLmljYXYyTGF5ZXIuc2V0KHNjb3BlLCBsYXllcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkRmFzdEFwaUxheWVyKHNjb3BlOiBDb25zdHJ1Y3QpIHtcbiAgICAgICAgLy8gT25seSBidWlsZCB0aGUgbGF5ZXIgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgICAgICBpZiAoIVB5dGhvblV2RnVuY3Rpb24uZmFzdEFwaUxheWVyLmhhcyhzY29wZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGxheWVyID0gbmV3IFB5dGhvbkxheWVyVmVyc2lvbih0aGlzLCAnZmFzdEFwaUxheWVyJywge1xuICAgICAgICAgICAgICAgIGVudHJ5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnbGF5ZXJzL2Zhc3RhcGlfdG9vbHMnKSxcbiAgICAgICAgICAgICAgICBjb21wYXRpYmxlUnVudGltZXM6IFtsYW1iZGEuUnVudGltZS5QWVRIT05fM18xMl0sXG4gICAgICAgICAgICAgICAgY29tcGF0aWJsZUFyY2hpdGVjdHVyZXM6IFtsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NF0sXG4gICAgICAgICAgICAgICAgbGljZW5zZTogJ0dQTDMnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnZmFzdEFwaUxheWVyJyxcbiAgICAgICAgICAgICAgICBidW5kbGluZzoge1xuICAgICAgICAgICAgICAgICAgICBpbWFnZTogZ2V0UHl0aG9uVXZEb2NrZXJJbWFnZSgpLFxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kSG9va3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZUJ1bmRsaW5nKGlucHV0RGlyOiBzdHJpbmcsIG91dHB1dERpcjogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhZnRlckJ1bmRsaW5nKGlucHV0RGlyOiBzdHJpbmcsIG91dHB1dERpcjogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBwaXAgaW5zdGFsbCAke2lucHV0RGlyfSAtLXRhcmdldCAke291dHB1dERpcn1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZmluZCAke291dHB1dERpcn0gLW5hbWUgJ3BhbmRhcycgLWV4ZWMgcm0gLXJmIHt9L3Rlc3RzLyBcXFxcO2AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgUHl0aG9uVXZGdW5jdGlvbi5mYXN0QXBpTGF5ZXIuc2V0KHNjb3BlLCBsYXllcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldE9yY2FidXNSZXNvdXJjZXMoXG4gICAgICAgIHByb3BzOiBPcmNhYnVzUmVzb3VyY2VzUHJvcHNcbiAgICApIHtcbiAgICAgICAgLy8gU2V0IHNlY3JldCBvYmplY3RcbiAgICAgICAgY29uc3Qgb3JjYWJ1c1Rva2VuU2VjcmV0SWQgPSBzZWNyZXRzTWFuYWdlci5TZWNyZXQuZnJvbVNlY3JldE5hbWVWMihcbiAgICAgICAgICAgIHRoaXMsICdvcmNhYnVzVG9rZW5TZWNyZXRJZCcsXG4gICAgICAgICAgICBwcm9wcy5vcmNhYnVzVG9rZW5TZWNyZXRJZCA/PyBERUZBVUxUX09SQ0FCVVNfVE9LRU5fU0VDUkVUX0lEXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGhvc3RuYW1lU3NtUGFyYW1ldGVyTmFtZSA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUoXG4gICAgICAgICAgICB0aGlzLCAnaG9zdG5hbWVTc21QYXJhbWV0ZXJOYW1lJyxcbiAgICAgICAgICAgIHByb3BzLmhvc3RuYW1lU3NtUGFyYW1ldGVyTmFtZSA/PyBERUZBVUxUX0hPU1ROQU1FX1NTTV9QQVJBTUVURVIsXG4gICAgICAgIClcblxuICAgICAgICAvLyBBZGQgcGVybWlzc2lvbnMgZm9yIHRoZSBzZWNyZXQgYW5kIFNTTSBwYXJhbWV0ZXJcbiAgICAgICAgLy8gVG8gdGhlIGN1cnJlbnQgdmVyc2lvblxuICAgICAgICBvcmNhYnVzVG9rZW5TZWNyZXRJZC5ncmFudFJlYWQodGhpcy5jdXJyZW50VmVyc2lvbik7XG4gICAgICAgIGhvc3RuYW1lU3NtUGFyYW1ldGVyTmFtZS5ncmFudFJlYWQodGhpcy5jdXJyZW50VmVyc2lvbilcblxuICAgICAgICAvLyBBZGQgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAgICAgIHRoaXMuYWRkRW52aXJvbm1lbnQoXG4gICAgICAgICAgICAnT1JDQUJVU19UT0tFTl9TRUNSRVRfSUQnLCBvcmNhYnVzVG9rZW5TZWNyZXRJZC5zZWNyZXROYW1lLFxuICAgICAgICApXG4gICAgICAgIHRoaXMuYWRkRW52aXJvbm1lbnQoXG4gICAgICAgICAgICAnSE9TVE5BTUVfU1NNX1BBUkFNRVRFUl9OQU1FJywgaG9zdG5hbWVTc21QYXJhbWV0ZXJOYW1lLnBhcmFtZXRlck5hbWUsXG4gICAgICAgIClcbiAgICB9XG5cblxuICAgIHByaXZhdGUgc2V0QXRoZW5hUmVzb3VyY2VzKFxuICAgICAgICBwcm9wczogTWFydEVudmlyb25tZW50VmFyaWFibGVzXG4gICAgKSB7XG4gICAgICAgIC8vIFJlc29sdmUgdGhlIHN0YWdlIG5hbWUgYnkgcGVyZm9ybWluZyBhIHJldmVyc2UgbG9va3VwIHVzaW5nIGNkay5Bd3MuQUNDT1VOVF9JRCBvbiBBQ0NPVU5UX0lEX0FMSUFTXG4gICAgICAgIGNvbnN0IHN0YWdlTmFtZSA9IHJlc29sdmVTdGFnZU5hbWUodGhpcylcblxuICAgICAgICBjb25zdCBhdGhlbmFTM0J1Y2tldCA9IHMzLkJ1Y2tldC5mcm9tQnVja2V0TmFtZShcbiAgICAgICAgICAgIHRoaXMsICdhdGhlbmFTM0J1Y2tldCcsXG4gICAgICAgICAgICBNQVJUX1MzX0JVQ0tFVFtzdGFnZU5hbWVdXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBhdGhlbmFGdW5jdGlvbk5hbWUgPSBsYW1iZGEuRnVuY3Rpb24uZnJvbUZ1bmN0aW9uTmFtZShcbiAgICAgICAgICAgIHRoaXMsICdsYW1iZGFGdW5jdGlvbk5hbWUnLCBNQVJUX0xBTUJEQV9GVU5DVElPTl9OQU1FXG4gICAgICAgIClcblxuICAgICAgICAvLyBBZGQgZW52IHZhcnNcbiAgICAgICAgLy8gSXRlcmF0ZSBvdmVyIGt2IHBhaXJzIG9mIE1BUlRfRU5WX1ZBUlNcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoTUFSVF9FTlZfVkFSUykpIHtcbiAgICAgICAgICAgIC8vIEFmdGVyXG4gICAgICAgICAgICBpZiAocHJvcHNba2V5IGFzIGtleW9mIE1hcnRFbnZpcm9ubWVudFZhcmlhYmxlc10gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkRW52aXJvbm1lbnQoa2V5LCBwcm9wc1trZXkgYXMga2V5b2YgTWFydEVudmlyb25tZW50VmFyaWFibGVzXSEpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEVudmlyb25tZW50KGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gUGVybWlzc2lvbnNcbiAgICAgICAgdGhpcy5jdXJyZW50VmVyc2lvbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICAgICAgICAvLyBGcm9tIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdGhlbmEvbGF0ZXN0L3VnL2V4YW1wbGUtcG9saWNpZXMtd29ya2dyb3VwLmh0bWxcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgIC8vIFdvcmtncm91cCBsaXN0c1xuICAgICAgICAgICAgICAgICAgICAnYXRoZW5hOkxpc3RFbmdpbmVWZXJzaW9ucycsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6TGlzdFdvcmtHcm91cHMnLFxuICAgICAgICAgICAgICAgICAgICAnYXRoZW5hOkxpc3REYXRhQ2F0YWxvZ3MnLFxuICAgICAgICAgICAgICAgICAgICAnYXRoZW5hOkxpc3REYXRhYmFzZXMnLFxuICAgICAgICAgICAgICAgICAgICAnYXRoZW5hOkdldERhdGFiYXNlJyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpMaXN0VGFibGVNZXRhZGF0YScsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6R2V0VGFibGVNZXRhZGF0YScsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6R2V0RGF0YUNhdGFsb2cnLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbYGFybjphd3M6YXRoZW5hOiR7UkVHSU9OfToke0FDQ09VTlRfSURfQUxJQVNbc3RhZ2VOYW1lXX06KmBdLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmN1cnJlbnRWZXJzaW9uLmFkZFRvUm9sZVBvbGljeShcbiAgICAgICAgICAgIC8vIEZyb20gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F0aGVuYS9sYXRlc3QvdWcvZXhhbXBsZS1wb2xpY2llcy13b3JrZ3JvdXAuaHRtbFxuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgLy8gV29ya2dyb3VwIGV4ZWN1dGlvbnNcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpCYXRjaEdldFF1ZXJ5RXhlY3V0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpHZXRRdWVyeUV4ZWN1dGlvbicsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6TGlzdFF1ZXJ5RXhlY3V0aW9ucycsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6U3RhcnRRdWVyeUV4ZWN1dGlvbicsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6U3RvcFF1ZXJ5RXhlY3V0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpHZXRRdWVyeVJlc3VsdHMnLFxuICAgICAgICAgICAgICAgICAgICAnYXRoZW5hOkdldFF1ZXJ5UmVzdWx0c1N0cmVhbScsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6Q3JlYXRlTmFtZWRRdWVyeScsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6R2V0TmFtZWRRdWVyeScsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6QmF0Y2hHZXROYW1lZFF1ZXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpMaXN0TmFtZWRRdWVyaWVzJyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpEZWxldGVOYW1lZFF1ZXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpDcmVhdGVQcmVwYXJlZFN0YXRlbWVudCcsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6R2V0UHJlcGFyZWRTdGF0ZW1lbnQnLFxuICAgICAgICAgICAgICAgICAgICAnYXRoZW5hOkxpc3RQcmVwYXJlZFN0YXRlbWVudHMnLFxuICAgICAgICAgICAgICAgICAgICAnYXRoZW5hOlVwZGF0ZVByZXBhcmVkU3RhdGVtZW50JyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpEZWxldGVQcmVwYXJlZFN0YXRlbWVudCcsXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgYGFybjphd3M6YXRoZW5hOiR7UkVHSU9OfToke0FDQ09VTlRfSURfQUxJQVNbc3RhZ2VOYW1lXX06d29ya2dyb3VwLyR7TUFSVF9FTlZfVkFSUy5hdGhlbmFXb3JrZ3JvdXBOYW1lfWAsXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gQWRkIHJlYWQgYWNjZXNzIHRvIHRoZSBTMyBidWNrZXRcbiAgICAgICAgYXRoZW5hUzNCdWNrZXQuZ3JhbnRSZWFkV3JpdGUoXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRWZXJzaW9uLFxuICAgICAgICAgICAgYCR7TUFSVF9TM19QUkVGSVh9KmBcbiAgICAgICAgKVxuXG4gICAgICAgIC8vIEFkZCBpbnZva2UgYWNjZXNzIHRvIHRoZSBsYW1iZGEgZnVuY3Rpb25cbiAgICAgICAgYXRoZW5hRnVuY3Rpb25OYW1lLmdyYW50SW52b2tlKFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50VmVyc2lvblxuICAgICAgICApXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJY2F2MlJlc291cmNlcyhcbiAgICAgICAgcHJvcHM6IEljYXYyUmVzb3VyY2VzUHJvcHNcbiAgICApIHtcbiAgICAgICAgLy8gUmVzb2x2ZSB0aGUgc3RhZ2UgbmFtZSBieSBwZXJmb3JtaW5nIGEgcmV2ZXJzZSBsb29rdXAgdXNpbmcgY2RrLkF3cy5BQ0NPVU5UX0lEIG9uIEFDQ09VTlRfSURfQUxJQVNcbiAgICAgICAgY29uc3Qgc3RhZ2VOYW1lID0gcmVzb2x2ZVN0YWdlTmFtZSh0aGlzKVxuXG4gICAgICAgIC8vIFNldCBzZWNyZXQgb2JqZWN0XG4gICAgICAgIGNvbnN0IGljYXYyQWNjZXNzVG9rZW5TZWNyZXRJZE9iamVjdCA9IHNlY3JldHNNYW5hZ2VyLlNlY3JldC5mcm9tU2VjcmV0TmFtZVYyKFxuICAgICAgICAgICAgdGhpcywgJ0lDQVYyX0FDQ0VTU19UT0tFTl9TRUNSRVRfSUQnLFxuICAgICAgICAgICAgcHJvcHMuaWNhdjJBY2Nlc3NUb2tlblNlY3JldElkID8/IElDQVYyX0FDQ0VTU19UT0tFTl9TRUNSRVRfSURbc3RhZ2VOYW1lXVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIEFkZCBwZXJtaXNzaW9ucyBmb3IgdGhlIHNlY3JldCBhbmQgU1NNIHBhcmFtZXRlclxuICAgICAgICAvLyBUbyB0aGUgY3VycmVudCB2ZXJzaW9uXG4gICAgICAgIGljYXYyQWNjZXNzVG9rZW5TZWNyZXRJZE9iamVjdC5ncmFudFJlYWQodGhpcy5jdXJyZW50VmVyc2lvbik7XG5cbiAgICAgICAgLy8gQWRkIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgICAgICB0aGlzLmFkZEVudmlyb25tZW50KFxuICAgICAgICAgICAgJ0lDQVYyX0FDQ0VTU19UT0tFTl9TRUNSRVRfSUQnLCBpY2F2MkFjY2Vzc1Rva2VuU2VjcmV0SWRPYmplY3Quc2VjcmV0TmFtZSxcbiAgICAgICAgKVxuICAgICAgICB0aGlzLmFkZEVudmlyb25tZW50KFxuICAgICAgICAgICAgJ0lDQVYyX0JBU0VfVVJMJywgSUNBVjJfQkFTRV9VUkwsXG4gICAgICAgIClcbiAgICB9XG5cbn1cblxuXG5cblxuIl19
|
|
@@ -43,7 +43,7 @@ from .metadata_helpers import (
|
|
|
43
43
|
|
|
44
44
|
from .payload_helpers import (
|
|
45
45
|
get_payload,
|
|
46
|
-
|
|
46
|
+
get_payload_from_state_orcabus_id,
|
|
47
47
|
get_latest_payload_from_workflow_run,
|
|
48
48
|
get_latest_payload_from_portal_run_id,
|
|
49
49
|
)
|
|
@@ -52,6 +52,7 @@ from .workflow_run_helpers import (
|
|
|
52
52
|
get_workflow_run,
|
|
53
53
|
get_workflow_run_from_portal_run_id,
|
|
54
54
|
get_workflow_run_state,
|
|
55
|
+
get_workflow_run_state_from_state_orcabus_id,
|
|
55
56
|
)
|
|
56
57
|
|
|
57
58
|
|
|
@@ -63,11 +64,12 @@ __all__ = [
|
|
|
63
64
|
"get_workflows_from_library_id",
|
|
64
65
|
# Payload
|
|
65
66
|
"get_payload",
|
|
66
|
-
"
|
|
67
|
+
"get_payload_from_state_orcabus_id",
|
|
67
68
|
"get_latest_payload_from_workflow_run",
|
|
68
69
|
"get_latest_payload_from_portal_run_id",
|
|
69
70
|
# Workflow Run
|
|
70
71
|
"get_workflow_run",
|
|
71
72
|
"get_workflow_run_from_portal_run_id",
|
|
72
73
|
"get_workflow_run_state",
|
|
74
|
+
"get_workflow_run_state_from_state_orcabus_id"
|
|
73
75
|
]
|
|
@@ -23,17 +23,17 @@ def get_payload(payload_id: str) -> Dict:
|
|
|
23
23
|
return get_workflow_request(f"{PAYLOAD_ENDPOINT}/{payload_id}")
|
|
24
24
|
|
|
25
25
|
|
|
26
|
-
def
|
|
26
|
+
def get_payload_from_state_orcabus_id(workflow_run_orcabus_id: str, state_orcabus_id: str):
|
|
27
27
|
"""
|
|
28
28
|
Given the workflow_run_orcabus_id and status, get the payload for that status
|
|
29
29
|
:param workflow_run_orcabus_id:
|
|
30
|
-
:param
|
|
30
|
+
:param state_orcabus_id:
|
|
31
31
|
:return:
|
|
32
32
|
"""
|
|
33
|
-
from .workflow_run_helpers import
|
|
33
|
+
from .workflow_run_helpers import get_workflow_run_state_from_state_orcabus_id
|
|
34
34
|
|
|
35
35
|
# Get the workflow run state
|
|
36
|
-
workflow_run_state_payload_id =
|
|
36
|
+
workflow_run_state_payload_id = get_workflow_run_state_from_state_orcabus_id(workflow_run_orcabus_id, state_orcabus_id)['payload']
|
|
37
37
|
|
|
38
38
|
# Get the payload
|
|
39
39
|
return get_payload(workflow_run_state_payload_id)
|
|
@@ -51,7 +51,10 @@ def get_latest_payload_from_workflow_run(workflow_run_orcabus_id: str) -> Payloa
|
|
|
51
51
|
workflow_run = get_workflow_run(workflow_run_orcabus_id)
|
|
52
52
|
|
|
53
53
|
# Get the payload
|
|
54
|
-
return Payload(**
|
|
54
|
+
return Payload(**get_payload_from_state_orcabus_id(
|
|
55
|
+
workflow_run_orcabus_id=workflow_run_orcabus_id,
|
|
56
|
+
state_orcabus_id=workflow_run['currentState']['orcabusId']
|
|
57
|
+
))
|
|
55
58
|
|
|
56
59
|
|
|
57
60
|
def get_latest_payload_from_portal_run_id(portal_run_id: str) -> Payload:
|
|
@@ -61,4 +64,7 @@ def get_latest_payload_from_portal_run_id(portal_run_id: str) -> Payload:
|
|
|
61
64
|
workflow_run = get_workflow_run_from_portal_run_id(portal_run_id)
|
|
62
65
|
|
|
63
66
|
# Get the payload
|
|
64
|
-
return Payload(**
|
|
67
|
+
return Payload(**get_payload_from_state_orcabus_id(
|
|
68
|
+
workflow_run_orcabus_id=workflow_run['orcabusId'],
|
|
69
|
+
state_orcabus_id=workflow_run['currentState']['orcabusId']
|
|
70
|
+
))
|
package/lambda/layers/orcabus_api_tools/src/orcabus_api_tools/workflow/workflow_run_helpers.py
CHANGED
|
@@ -46,14 +46,33 @@ def get_workflow_run_from_portal_run_id(portal_run_id: str) -> WorkflowRun:
|
|
|
46
46
|
raise WorkflowRunNotFoundError(portal_run_id=portal_run_id)
|
|
47
47
|
|
|
48
48
|
try:
|
|
49
|
-
return
|
|
50
|
-
WORKFLOW_RUN_ENDPOINT,
|
|
51
|
-
workflow_runs_list[0]["orcabusId"],
|
|
49
|
+
return get_workflow_request(
|
|
50
|
+
f"{WORKFLOW_RUN_ENDPOINT}/{workflow_runs_list[0]['orcabusId']}",
|
|
52
51
|
)
|
|
53
52
|
except HTTPError as e:
|
|
54
53
|
raise WorkflowRunNotFoundError(portal_run_id=portal_run_id) from e
|
|
55
54
|
|
|
56
55
|
|
|
56
|
+
def get_workflow_run_state_from_state_orcabus_id(
|
|
57
|
+
workflow_run_orcabus_id: str, state_orcabus_id: str
|
|
58
|
+
) -> State:
|
|
59
|
+
|
|
60
|
+
# Get workflow run state
|
|
61
|
+
try:
|
|
62
|
+
return next(
|
|
63
|
+
filter(
|
|
64
|
+
lambda workflow_state_iter_: workflow_state_iter_["orcabusId"] == state_orcabus_id,
|
|
65
|
+
get_workflow_request(f"{WORKFLOW_RUN_ENDPOINT}/{workflow_run_orcabus_id}/state")
|
|
66
|
+
)
|
|
67
|
+
)
|
|
68
|
+
except HTTPError as e:
|
|
69
|
+
from .errors import WorkflowRunStateNotFoundError
|
|
70
|
+
raise WorkflowRunStateNotFoundError(
|
|
71
|
+
workflow_run_id=workflow_run_orcabus_id,
|
|
72
|
+
status=state_orcabus_id
|
|
73
|
+
) from e
|
|
74
|
+
|
|
75
|
+
|
|
57
76
|
def get_workflow_run_state(workflow_run_orcabus_id: str, status: str) -> State:
|
|
58
77
|
"""
|
|
59
78
|
Get workflow run state from the workflow run orcabus id
|
|
@@ -66,7 +85,7 @@ def get_workflow_run_state(workflow_run_orcabus_id: str, status: str) -> State:
|
|
|
66
85
|
return next(
|
|
67
86
|
filter(
|
|
68
87
|
lambda workflow_state_iter_: workflow_state_iter_["status"] == status,
|
|
69
|
-
|
|
88
|
+
get_workflow_request(f"{WORKFLOW_RUN_ENDPOINT}/{workflow_run_orcabus_id}/state")
|
|
70
89
|
)
|
|
71
90
|
)
|
|
72
91
|
except HTTPError as e:
|
|
@@ -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: "0.0.
|
|
10
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.namedLambdaRole.NamedLambdaRole", version: "0.0.19" };
|
|
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
|
@@ -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: "0.0.
|
|
18
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.provider.ProviderFunction", version: "0.0.19" };
|
|
19
19
|
_function;
|
|
20
20
|
_response;
|
|
21
21
|
constructor(scope, id, props) {
|
|
@@ -19,6 +19,10 @@ export declare const GAMMA_ACCOUNT_ID = "455634345446";
|
|
|
19
19
|
*/
|
|
20
20
|
export declare const PROD_ACCOUNT_ID = "472057503814";
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
22
|
+
* @deprecated use ACCOUNT_ID_ALIAS instead
|
|
23
23
|
*/
|
|
24
24
|
export declare const accountIdAlias: Record<StageName, string>;
|
|
25
|
+
/**
|
|
26
|
+
* Mapping from stage name to AWS Account ID.
|
|
27
|
+
*/
|
|
28
|
+
export declare const ACCOUNT_ID_ALIAS: Record<StageName, string>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.accountIdAlias = exports.PROD_ACCOUNT_ID = exports.GAMMA_ACCOUNT_ID = exports.BETA_ACCOUNT_ID = exports.REGION = void 0;
|
|
3
|
+
exports.ACCOUNT_ID_ALIAS = exports.accountIdAlias = exports.PROD_ACCOUNT_ID = exports.GAMMA_ACCOUNT_ID = exports.BETA_ACCOUNT_ID = exports.REGION = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Default AWS region for all environments.
|
|
6
6
|
*/
|
|
@@ -18,11 +18,19 @@ exports.GAMMA_ACCOUNT_ID = "455634345446";
|
|
|
18
18
|
*/
|
|
19
19
|
exports.PROD_ACCOUNT_ID = "472057503814";
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
21
|
+
* @deprecated use ACCOUNT_ID_ALIAS instead
|
|
22
22
|
*/
|
|
23
23
|
exports.accountIdAlias = {
|
|
24
24
|
BETA: exports.BETA_ACCOUNT_ID,
|
|
25
25
|
GAMMA: exports.GAMMA_ACCOUNT_ID,
|
|
26
26
|
PROD: exports.PROD_ACCOUNT_ID,
|
|
27
27
|
};
|
|
28
|
-
|
|
28
|
+
/**
|
|
29
|
+
* Mapping from stage name to AWS Account ID.
|
|
30
|
+
*/
|
|
31
|
+
exports.ACCOUNT_ID_ALIAS = {
|
|
32
|
+
BETA: exports.BETA_ACCOUNT_ID,
|
|
33
|
+
GAMMA: exports.GAMMA_ACCOUNT_ID,
|
|
34
|
+
PROD: exports.PROD_ACCOUNT_ID,
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhY2NvdW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLQTs7R0FFRztBQUNVLFFBQUEsTUFBTSxHQUFHLGdCQUFnQixDQUFDO0FBRXZDOztHQUVHO0FBQ1UsUUFBQSxlQUFlLEdBQUcsY0FBYyxDQUFDO0FBQzlDOztHQUVHO0FBQ1UsUUFBQSxnQkFBZ0IsR0FBRyxjQUFjLENBQUM7QUFDL0M7O0dBRUc7QUFDVSxRQUFBLGVBQWUsR0FBRyxjQUFjLENBQUM7QUFFOUM7O0dBRUc7QUFDVSxRQUFBLGNBQWMsR0FBOEI7SUFDdkQsSUFBSSxFQUFFLHVCQUFlO0lBQ3JCLEtBQUssRUFBRSx3QkFBZ0I7SUFDdkIsSUFBSSxFQUFFLHVCQUFlO0NBQ3RCLENBQUM7QUFFRjs7R0FFRztBQUNVLFFBQUEsZ0JBQWdCLEdBQThCO0lBQ3pELElBQUksRUFBRSx1QkFBZTtJQUNyQixLQUFLLEVBQUUsd0JBQWdCO0lBQ3ZCLElBQUksRUFBRSx1QkFBZTtDQUN0QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdXBwb3J0ZWQgZGVwbG95bWVudCBzdGFnZSBuYW1lcy5cbiAqL1xuZXhwb3J0IHR5cGUgU3RhZ2VOYW1lID0gXCJCRVRBXCIgfCBcIkdBTU1BXCIgfCBcIlBST0RcIjtcblxuLyoqXG4gKiBEZWZhdWx0IEFXUyByZWdpb24gZm9yIGFsbCBlbnZpcm9ubWVudHMuXG4gKi9cbmV4cG9ydCBjb25zdCBSRUdJT04gPSBcImFwLXNvdXRoZWFzdC0yXCI7XG5cbi8qKlxuICogQmV0YSBBY2NvdW50IElELlxuICovXG5leHBvcnQgY29uc3QgQkVUQV9BQ0NPVU5UX0lEID0gXCI4NDM0MDc5MTY1NzBcIjtcbi8qKlxuICogR2FtbWEgQWNjb3VudCBJRC5cbiAqL1xuZXhwb3J0IGNvbnN0IEdBTU1BX0FDQ09VTlRfSUQgPSBcIjQ1NTYzNDM0NTQ0NlwiO1xuLyoqXG4gKiBQcm9kdWN0aW9uIEFjY291bnQgSUQuXG4gKi9cbmV4cG9ydCBjb25zdCBQUk9EX0FDQ09VTlRfSUQgPSBcIjQ3MjA1NzUwMzgxNFwiO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIHVzZSBBQ0NPVU5UX0lEX0FMSUFTIGluc3RlYWRcbiAqL1xuZXhwb3J0IGNvbnN0IGFjY291bnRJZEFsaWFzOiBSZWNvcmQ8U3RhZ2VOYW1lLCBzdHJpbmc+ID0ge1xuICBCRVRBOiBCRVRBX0FDQ09VTlRfSUQsXG4gIEdBTU1BOiBHQU1NQV9BQ0NPVU5UX0lELFxuICBQUk9EOiBQUk9EX0FDQ09VTlRfSUQsXG59O1xuXG4vKipcbiAqIE1hcHBpbmcgZnJvbSBzdGFnZSBuYW1lIHRvIEFXUyBBY2NvdW50IElELlxuICovXG5leHBvcnQgY29uc3QgQUNDT1VOVF9JRF9BTElBUzogUmVjb3JkPFN0YWdlTmFtZSwgc3RyaW5nPiA9IHtcbiAgQkVUQTogQkVUQV9BQ0NPVU5UX0lELFxuICBHQU1NQTogR0FNTUFfQUNDT1VOVF9JRCxcbiAgUFJPRDogUFJPRF9BQ0NPVU5UX0lELFxufSJdfQ==
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
* Shared config for the FileManager.
|
|
3
3
|
*/
|
|
4
4
|
import { StageName } from "./accounts";
|
|
5
|
-
export declare const
|
|
6
|
-
export declare const
|
|
7
|
-
export declare const
|
|
8
|
-
export declare const
|
|
9
|
-
export declare const
|
|
10
|
-
export declare const
|
|
11
|
-
export declare const
|
|
5
|
+
export declare const FILE_MANAGER_BUCKETS: Record<StageName, string[]>;
|
|
6
|
+
export declare const FILE_MANAGER_CACHE_BUCKETS: Record<StageName, string[]>;
|
|
7
|
+
export declare const FILE_MANAGER_PRESIGN_USER_SECRET = "orcabus/file-manager-presign-user";
|
|
8
|
+
export declare const FILE_MANAGER_ACCESS_KEY_ARNS: Record<StageName, string>;
|
|
9
|
+
export declare const FILE_MANAGER_INGEST_ROLE = "orcabus-file-manager-ingest-role";
|
|
10
|
+
export declare const FILE_MANAGER_PRESIGN_USER = "orcabus-file-manager-presign-user";
|
|
11
|
+
export declare const FILE_MANAGER_DOMAIN_PREFIX = "file";
|
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
* Shared config for the FileManager.
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
7
|
-
const utils_1 = require("../utils");
|
|
6
|
+
exports.FILE_MANAGER_DOMAIN_PREFIX = exports.FILE_MANAGER_PRESIGN_USER = exports.FILE_MANAGER_INGEST_ROLE = exports.FILE_MANAGER_ACCESS_KEY_ARNS = exports.FILE_MANAGER_PRESIGN_USER_SECRET = exports.FILE_MANAGER_CACHE_BUCKETS = exports.FILE_MANAGER_BUCKETS = void 0;
|
|
8
7
|
const deployment_stack_pipeline_1 = require("../deployment-stack-pipeline");
|
|
9
|
-
|
|
8
|
+
const s3_1 = require("./s3");
|
|
9
|
+
const secrets_1 = require("./secrets");
|
|
10
|
+
exports.FILE_MANAGER_BUCKETS = {
|
|
10
11
|
BETA: [
|
|
11
12
|
"umccr-temp-dev",
|
|
12
13
|
`ntsm-fingerprints-${deployment_stack_pipeline_1.BETA_ENVIRONMENT.account}-ap-southeast-2`,
|
|
@@ -27,19 +28,19 @@ exports.fileManagerBuckets = {
|
|
|
27
28
|
"pipeline-montauk-977251586657-ap-southeast-2",
|
|
28
29
|
],
|
|
29
30
|
};
|
|
30
|
-
exports.
|
|
31
|
-
BETA: [
|
|
32
|
-
GAMMA: [
|
|
33
|
-
PROD: [
|
|
31
|
+
exports.FILE_MANAGER_CACHE_BUCKETS = {
|
|
32
|
+
BETA: [s3_1.pipelineCacheBucket.BETA],
|
|
33
|
+
GAMMA: [s3_1.pipelineCacheBucket.GAMMA],
|
|
34
|
+
PROD: [s3_1.pipelineCacheBucket.PROD],
|
|
34
35
|
};
|
|
35
|
-
exports.
|
|
36
|
-
exports.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
exports.FILE_MANAGER_PRESIGN_USER_SECRET = "orcabus/file-manager-presign-user"; // pragma: allowlist secret
|
|
37
|
+
(0, secrets_1.validateSecretName)(exports.FILE_MANAGER_PRESIGN_USER_SECRET);
|
|
38
|
+
exports.FILE_MANAGER_ACCESS_KEY_ARNS = {
|
|
39
|
+
BETA: `arn:aws:secretsmanager:${deployment_stack_pipeline_1.BETA_ENVIRONMENT.region}:${deployment_stack_pipeline_1.BETA_ENVIRONMENT.account}:secret:${exports.FILE_MANAGER_PRESIGN_USER_SECRET}`,
|
|
40
|
+
GAMMA: `arn:aws:secretsmanager:${deployment_stack_pipeline_1.GAMMA_ENVIRONMENT.region}:${deployment_stack_pipeline_1.GAMMA_ENVIRONMENT.account}:secret:${exports.FILE_MANAGER_PRESIGN_USER_SECRET}`,
|
|
41
|
+
PROD: `arn:aws:secretsmanager:${deployment_stack_pipeline_1.PROD_ENVIRONMENT.region}:${deployment_stack_pipeline_1.PROD_ENVIRONMENT.account}:secret:${exports.FILE_MANAGER_PRESIGN_USER_SECRET}`,
|
|
40
42
|
};
|
|
41
|
-
exports.
|
|
42
|
-
|
|
43
|
-
exports.
|
|
44
|
-
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZmlsZS1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBRUgsb0NBQThDO0FBQzlDLDRFQUlzQztBQUd6QixRQUFBLGtCQUFrQixHQUFnQztJQUM3RCxJQUFJLEVBQUU7UUFDSixnQkFBZ0I7UUFDaEIscUJBQXFCLDRDQUFnQixDQUFDLE9BQU8saUJBQWlCO1FBQzlELDBCQUEwQiw0Q0FBZ0IsQ0FBQyxPQUFPLGlCQUFpQjtRQUNuRSw0QkFBNEI7S0FDN0I7SUFDRCxLQUFLLEVBQUU7UUFDTCxnQkFBZ0I7UUFDaEIscUJBQXFCLDZDQUFpQixDQUFDLE9BQU8saUJBQWlCO1FBQy9ELDBCQUEwQiw2Q0FBaUIsQ0FBQyxPQUFPLGlCQUFpQjtLQUNyRTtJQUNELElBQUksRUFBRTtRQUNKLDZCQUE2QjtRQUM3QixtREFBbUQ7UUFDbkQsZ0RBQWdEO1FBQ2hELHFCQUFxQiw0Q0FBZ0IsQ0FBQyxPQUFPLGlCQUFpQjtRQUM5RCwwQkFBMEIsNENBQWdCLENBQUMsT0FBTyxpQkFBaUI7UUFDbkUsOENBQThDO0tBQy9DO0NBQ0YsQ0FBQztBQUVXLFFBQUEsdUJBQXVCLEdBQWdDO0lBQ2xFLElBQUksRUFBRSxDQUFDLGdEQUFnRCxDQUFDO0lBQ3hELEtBQUssRUFBRSxDQUFDLGdEQUFnRCxDQUFDO0lBQ3pELElBQUksRUFBRSxDQUFDLGlEQUFpRCxDQUFDO0NBQzFELENBQUM7QUFFVyxRQUFBLDRCQUE0QixHQUFHLG1DQUFtQyxDQUFDLENBQUMsMkJBQTJCO0FBQy9GLFFBQUEsa0JBQWtCLEdBQThCO0lBQzNELElBQUksRUFBRSwwQkFBMEIsNENBQWdCLENBQUMsTUFBTSxJQUFJLDRDQUFnQixDQUFDLE9BQU8sV0FBVyxvQ0FBNEIsRUFBRTtJQUM1SCxLQUFLLEVBQUUsMEJBQTBCLDZDQUFpQixDQUFDLE1BQU0sSUFBSSw2Q0FBaUIsQ0FBQyxPQUFPLFdBQVcsb0NBQTRCLEVBQUU7SUFDL0gsSUFBSSxFQUFFLDBCQUEwQiw0Q0FBZ0IsQ0FBQyxNQUFNLElBQUksNENBQWdCLENBQUMsT0FBTyxXQUFXLG9DQUE0QixFQUFFO0NBQzdILENBQUM7QUFFVyxRQUFBLHlCQUF5QixHQUFHLGtDQUFrQyxDQUFDO0FBQzVFLElBQUEsMEJBQWtCLEVBQUMsb0NBQTRCLENBQUMsQ0FBQztBQUVwQyxRQUFBLHNCQUFzQixHQUFHLG1DQUFtQyxDQUFDLENBQUMsMkJBQTJCO0FBQ3pGLFFBQUEsdUJBQXVCLEdBQUcsTUFBTSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTaGFyZWQgY29uZmlnIGZvciB0aGUgRmlsZU1hbmFnZXIuXG4gKi9cblxuaW1wb3J0IHsgdmFsaWRhdGVTZWNyZXROYW1lIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQge1xuICBCRVRBX0VOVklST05NRU5ULFxuICBHQU1NQV9FTlZJUk9OTUVOVCxcbiAgUFJPRF9FTlZJUk9OTUVOVCxcbn0gZnJvbSBcIi4uL2RlcGxveW1lbnQtc3RhY2stcGlwZWxpbmVcIjtcbmltcG9ydCB7U3RhZ2VOYW1lfSBmcm9tIFwiLi9hY2NvdW50c1wiO1xuXG5leHBvcnQgY29uc3QgZmlsZU1hbmFnZXJCdWNrZXRzOiBSZWNvcmQ8U3RhZ2VOYW1lLCBzdHJpbmdbXT4gPSB7XG4gIEJFVEE6IFtcbiAgICBcInVtY2NyLXRlbXAtZGV2XCIsXG4gICAgYG50c20tZmluZ2VycHJpbnRzLSR7QkVUQV9FTlZJUk9OTUVOVC5hY2NvdW50fS1hcC1zb3V0aGVhc3QtMmAsXG4gICAgYGRhdGEtc2hhcmluZy1hcnRpZmFjdHMtJHtCRVRBX0VOVklST05NRU5ULmFjY291bnR9LWFwLXNvdXRoZWFzdC0yYCxcbiAgICBcImZpbGVtYW5hZ2VyLWludmVudG9yeS10ZXN0XCIsXG4gIF0sXG4gIEdBTU1BOiBbXG4gICAgXCJ1bWNjci10ZW1wLXN0Z1wiLFxuICAgIGBudHNtLWZpbmdlcnByaW50cy0ke0dBTU1BX0VOVklST05NRU5ULmFjY291bnR9LWFwLXNvdXRoZWFzdC0yYCxcbiAgICBgZGF0YS1zaGFyaW5nLWFydGlmYWN0cy0ke0dBTU1BX0VOVklST05NRU5ULmFjY291bnR9LWFwLXNvdXRoZWFzdC0yYCxcbiAgXSxcbiAgUFJPRDogW1xuICAgIFwib3JnLnVtY2NyLmRhdGEub25jb2FuYWx5c2VyXCIsXG4gICAgXCJhcmNoaXZlLXByb2QtYW5hbHlzaXMtNTAzOTc3Mjc1NjE2LWFwLXNvdXRoZWFzdC0yXCIsXG4gICAgXCJhcmNoaXZlLXByb2QtZmFzdHEtNTAzOTc3Mjc1NjE2LWFwLXNvdXRoZWFzdC0yXCIsXG4gICAgYG50c20tZmluZ2VycHJpbnRzLSR7UFJPRF9FTlZJUk9OTUVOVC5hY2NvdW50fS1hcC1zb3V0aGVhc3QtMmAsXG4gICAgYGRhdGEtc2hhcmluZy1hcnRpZmFjdHMtJHtQUk9EX0VOVklST05NRU5ULmFjY291bnR9LWFwLXNvdXRoZWFzdC0yYCxcbiAgICBcInBpcGVsaW5lLW1vbnRhdWstOTc3MjUxNTg2NjU3LWFwLXNvdXRoZWFzdC0yXCIsXG4gIF0sXG59O1xuXG5leHBvcnQgY29uc3QgZmlsZU1hbmFnZXJDYWNoZUJ1Y2tldHM6IFJlY29yZDxTdGFnZU5hbWUsIHN0cmluZ1tdPiA9IHtcbiAgQkVUQTogW1wicGlwZWxpbmUtZGV2LWNhY2hlLTUwMzk3NzI3NTYxNi1hcC1zb3V0aGVhc3QtMlwiXSxcbiAgR0FNTUE6IFtcInBpcGVsaW5lLXN0Zy1jYWNoZS01MDM5NzcyNzU2MTYtYXAtc291dGhlYXN0LTJcIl0sXG4gIFBST0Q6IFtcInBpcGVsaW5lLXByb2QtY2FjaGUtNTAzOTc3Mjc1NjE2LWFwLXNvdXRoZWFzdC0yXCJdLFxufTtcblxuZXhwb3J0IGNvbnN0IGZpbGVNYW5hZ2VyUHJlc2lnblVzZXJTZWNyZXQgPSBcIm9yY2FidXMvZmlsZS1tYW5hZ2VyLXByZXNpZ24tdXNlclwiOyAvLyBwcmFnbWE6IGFsbG93bGlzdCBzZWNyZXRcbmV4cG9ydCBjb25zdCBhY2Nlc3NLZXlTZWNyZXRBcm46IFJlY29yZDxTdGFnZU5hbWUsIHN0cmluZz4gPSB7XG4gIEJFVEE6IGBhcm46YXdzOnNlY3JldHNtYW5hZ2VyOiR7QkVUQV9FTlZJUk9OTUVOVC5yZWdpb259OiR7QkVUQV9FTlZJUk9OTUVOVC5hY2NvdW50fTpzZWNyZXQ6JHtmaWxlTWFuYWdlclByZXNpZ25Vc2VyU2VjcmV0fWAsXG4gIEdBTU1BOiBgYXJuOmF3czpzZWNyZXRzbWFuYWdlcjoke0dBTU1BX0VOVklST05NRU5ULnJlZ2lvbn06JHtHQU1NQV9FTlZJUk9OTUVOVC5hY2NvdW50fTpzZWNyZXQ6JHtmaWxlTWFuYWdlclByZXNpZ25Vc2VyU2VjcmV0fWAsXG4gIFBST0Q6IGBhcm46YXdzOnNlY3JldHNtYW5hZ2VyOiR7UFJPRF9FTlZJUk9OTUVOVC5yZWdpb259OiR7UFJPRF9FTlZJUk9OTUVOVC5hY2NvdW50fTpzZWNyZXQ6JHtmaWxlTWFuYWdlclByZXNpZ25Vc2VyU2VjcmV0fWAsXG59O1xuXG5leHBvcnQgY29uc3QgZmlsZU1hbmFnZXJJbmdlc3RSb2xlTmFtZSA9IFwib3JjYWJ1cy1maWxlLW1hbmFnZXItaW5nZXN0LXJvbGVcIjtcbnZhbGlkYXRlU2VjcmV0TmFtZShmaWxlTWFuYWdlclByZXNpZ25Vc2VyU2VjcmV0KTtcblxuZXhwb3J0IGNvbnN0IGZpbGVNYW5hZ2VyUHJlc2lnblVzZXIgPSBcIm9yY2FidXMtZmlsZS1tYW5hZ2VyLXByZXNpZ24tdXNlclwiOyAvLyBwcmFnbWE6IGFsbG93bGlzdCBzZWNyZXRcbmV4cG9ydCBjb25zdCBmaWxlTWFuYWdlckRvbWFpblByZWZpeCA9IFwiZmlsZVwiO1xuIl19
|
|
43
|
+
exports.FILE_MANAGER_INGEST_ROLE = "orcabus-file-manager-ingest-role";
|
|
44
|
+
exports.FILE_MANAGER_PRESIGN_USER = "orcabus-file-manager-presign-user"; // pragma: allowlist secret
|
|
45
|
+
exports.FILE_MANAGER_DOMAIN_PREFIX = "file";
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZmlsZS1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBRUgsNEVBSXNDO0FBRXRDLDZCQUEyQztBQUMzQyx1Q0FBK0M7QUFFbEMsUUFBQSxvQkFBb0IsR0FBZ0M7SUFDL0QsSUFBSSxFQUFFO1FBQ0osZ0JBQWdCO1FBQ2hCLHFCQUFxQiw0Q0FBZ0IsQ0FBQyxPQUFPLGlCQUFpQjtRQUM5RCwwQkFBMEIsNENBQWdCLENBQUMsT0FBTyxpQkFBaUI7UUFDbkUsNEJBQTRCO0tBQzdCO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsZ0JBQWdCO1FBQ2hCLHFCQUFxQiw2Q0FBaUIsQ0FBQyxPQUFPLGlCQUFpQjtRQUMvRCwwQkFBMEIsNkNBQWlCLENBQUMsT0FBTyxpQkFBaUI7S0FDckU7SUFDRCxJQUFJLEVBQUU7UUFDSiw2QkFBNkI7UUFDN0IsbURBQW1EO1FBQ25ELGdEQUFnRDtRQUNoRCxxQkFBcUIsNENBQWdCLENBQUMsT0FBTyxpQkFBaUI7UUFDOUQsMEJBQTBCLDRDQUFnQixDQUFDLE9BQU8saUJBQWlCO1FBQ25FLDhDQUE4QztLQUMvQztDQUNGLENBQUM7QUFFVyxRQUFBLDBCQUEwQixHQUFnQztJQUNyRSxJQUFJLEVBQUUsQ0FBQyx3QkFBbUIsQ0FBQyxJQUFJLENBQUM7SUFDaEMsS0FBSyxFQUFFLENBQUMsd0JBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ2xDLElBQUksRUFBRSxDQUFDLHdCQUFtQixDQUFDLElBQUksQ0FBQztDQUNqQyxDQUFDO0FBRVcsUUFBQSxnQ0FBZ0MsR0FDM0MsbUNBQW1DLENBQUMsQ0FBQywyQkFBMkI7QUFDbEUsSUFBQSw0QkFBa0IsRUFBQyx3Q0FBZ0MsQ0FBQyxDQUFDO0FBRXhDLFFBQUEsNEJBQTRCLEdBQThCO0lBQ3JFLElBQUksRUFBRSwwQkFBMEIsNENBQWdCLENBQUMsTUFBTSxJQUFJLDRDQUFnQixDQUFDLE9BQU8sV0FBVyx3Q0FBZ0MsRUFBRTtJQUNoSSxLQUFLLEVBQUUsMEJBQTBCLDZDQUFpQixDQUFDLE1BQU0sSUFBSSw2Q0FBaUIsQ0FBQyxPQUFPLFdBQVcsd0NBQWdDLEVBQUU7SUFDbkksSUFBSSxFQUFFLDBCQUEwQiw0Q0FBZ0IsQ0FBQyxNQUFNLElBQUksNENBQWdCLENBQUMsT0FBTyxXQUFXLHdDQUFnQyxFQUFFO0NBQ2pJLENBQUM7QUFFVyxRQUFBLHdCQUF3QixHQUFHLGtDQUFrQyxDQUFDO0FBQzlELFFBQUEseUJBQXlCLEdBQUcsbUNBQW1DLENBQUMsQ0FBQywyQkFBMkI7QUFDNUYsUUFBQSwwQkFBMEIsR0FBRyxNQUFNLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNoYXJlZCBjb25maWcgZm9yIHRoZSBGaWxlTWFuYWdlci5cbiAqL1xuXG5pbXBvcnQge1xuICBCRVRBX0VOVklST05NRU5ULFxuICBHQU1NQV9FTlZJUk9OTUVOVCxcbiAgUFJPRF9FTlZJUk9OTUVOVCxcbn0gZnJvbSBcIi4uL2RlcGxveW1lbnQtc3RhY2stcGlwZWxpbmVcIjtcbmltcG9ydCB7IFN0YWdlTmFtZSB9IGZyb20gXCIuL2FjY291bnRzXCI7XG5pbXBvcnQgeyBwaXBlbGluZUNhY2hlQnVja2V0IH0gZnJvbSBcIi4vczNcIjtcbmltcG9ydCB7IHZhbGlkYXRlU2VjcmV0TmFtZSB9IGZyb20gXCIuL3NlY3JldHNcIjtcblxuZXhwb3J0IGNvbnN0IEZJTEVfTUFOQUdFUl9CVUNLRVRTOiBSZWNvcmQ8U3RhZ2VOYW1lLCBzdHJpbmdbXT4gPSB7XG4gIEJFVEE6IFtcbiAgICBcInVtY2NyLXRlbXAtZGV2XCIsXG4gICAgYG50c20tZmluZ2VycHJpbnRzLSR7QkVUQV9FTlZJUk9OTUVOVC5hY2NvdW50fS1hcC1zb3V0aGVhc3QtMmAsXG4gICAgYGRhdGEtc2hhcmluZy1hcnRpZmFjdHMtJHtCRVRBX0VOVklST05NRU5ULmFjY291bnR9LWFwLXNvdXRoZWFzdC0yYCxcbiAgICBcImZpbGVtYW5hZ2VyLWludmVudG9yeS10ZXN0XCIsXG4gIF0sXG4gIEdBTU1BOiBbXG4gICAgXCJ1bWNjci10ZW1wLXN0Z1wiLFxuICAgIGBudHNtLWZpbmdlcnByaW50cy0ke0dBTU1BX0VOVklST05NRU5ULmFjY291bnR9LWFwLXNvdXRoZWFzdC0yYCxcbiAgICBgZGF0YS1zaGFyaW5nLWFydGlmYWN0cy0ke0dBTU1BX0VOVklST05NRU5ULmFjY291bnR9LWFwLXNvdXRoZWFzdC0yYCxcbiAgXSxcbiAgUFJPRDogW1xuICAgIFwib3JnLnVtY2NyLmRhdGEub25jb2FuYWx5c2VyXCIsXG4gICAgXCJhcmNoaXZlLXByb2QtYW5hbHlzaXMtNTAzOTc3Mjc1NjE2LWFwLXNvdXRoZWFzdC0yXCIsXG4gICAgXCJhcmNoaXZlLXByb2QtZmFzdHEtNTAzOTc3Mjc1NjE2LWFwLXNvdXRoZWFzdC0yXCIsXG4gICAgYG50c20tZmluZ2VycHJpbnRzLSR7UFJPRF9FTlZJUk9OTUVOVC5hY2NvdW50fS1hcC1zb3V0aGVhc3QtMmAsXG4gICAgYGRhdGEtc2hhcmluZy1hcnRpZmFjdHMtJHtQUk9EX0VOVklST05NRU5ULmFjY291bnR9LWFwLXNvdXRoZWFzdC0yYCxcbiAgICBcInBpcGVsaW5lLW1vbnRhdWstOTc3MjUxNTg2NjU3LWFwLXNvdXRoZWFzdC0yXCIsXG4gIF0sXG59O1xuXG5leHBvcnQgY29uc3QgRklMRV9NQU5BR0VSX0NBQ0hFX0JVQ0tFVFM6IFJlY29yZDxTdGFnZU5hbWUsIHN0cmluZ1tdPiA9IHtcbiAgQkVUQTogW3BpcGVsaW5lQ2FjaGVCdWNrZXQuQkVUQV0sXG4gIEdBTU1BOiBbcGlwZWxpbmVDYWNoZUJ1Y2tldC5HQU1NQV0sXG4gIFBST0Q6IFtwaXBlbGluZUNhY2hlQnVja2V0LlBST0RdLFxufTtcblxuZXhwb3J0IGNvbnN0IEZJTEVfTUFOQUdFUl9QUkVTSUdOX1VTRVJfU0VDUkVUID1cbiAgXCJvcmNhYnVzL2ZpbGUtbWFuYWdlci1wcmVzaWduLXVzZXJcIjsgLy8gcHJhZ21hOiBhbGxvd2xpc3Qgc2VjcmV0XG52YWxpZGF0ZVNlY3JldE5hbWUoRklMRV9NQU5BR0VSX1BSRVNJR05fVVNFUl9TRUNSRVQpO1xuXG5leHBvcnQgY29uc3QgRklMRV9NQU5BR0VSX0FDQ0VTU19LRVlfQVJOUzogUmVjb3JkPFN0YWdlTmFtZSwgc3RyaW5nPiA9IHtcbiAgQkVUQTogYGFybjphd3M6c2VjcmV0c21hbmFnZXI6JHtCRVRBX0VOVklST05NRU5ULnJlZ2lvbn06JHtCRVRBX0VOVklST05NRU5ULmFjY291bnR9OnNlY3JldDoke0ZJTEVfTUFOQUdFUl9QUkVTSUdOX1VTRVJfU0VDUkVUfWAsXG4gIEdBTU1BOiBgYXJuOmF3czpzZWNyZXRzbWFuYWdlcjoke0dBTU1BX0VOVklST05NRU5ULnJlZ2lvbn06JHtHQU1NQV9FTlZJUk9OTUVOVC5hY2NvdW50fTpzZWNyZXQ6JHtGSUxFX01BTkFHRVJfUFJFU0lHTl9VU0VSX1NFQ1JFVH1gLFxuICBQUk9EOiBgYXJuOmF3czpzZWNyZXRzbWFuYWdlcjoke1BST0RfRU5WSVJPTk1FTlQucmVnaW9ufToke1BST0RfRU5WSVJPTk1FTlQuYWNjb3VudH06c2VjcmV0OiR7RklMRV9NQU5BR0VSX1BSRVNJR05fVVNFUl9TRUNSRVR9YCxcbn07XG5cbmV4cG9ydCBjb25zdCBGSUxFX01BTkFHRVJfSU5HRVNUX1JPTEUgPSBcIm9yY2FidXMtZmlsZS1tYW5hZ2VyLWluZ2VzdC1yb2xlXCI7XG5leHBvcnQgY29uc3QgRklMRV9NQU5BR0VSX1BSRVNJR05fVVNFUiA9IFwib3JjYWJ1cy1maWxlLW1hbmFnZXItcHJlc2lnbi11c2VyXCI7IC8vIHByYWdtYTogYWxsb3dsaXN0IHNlY3JldFxuZXhwb3J0IGNvbnN0IEZJTEVfTUFOQUdFUl9ET01BSU5fUFJFRklYID0gXCJmaWxlXCI7XG4iXX0=
|
package/shared-config/icav2.d.ts
CHANGED
|
@@ -1,4 +1,25 @@
|
|
|
1
1
|
import { StageName } from "./accounts";
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated Use ICAV2_PROJECT_ID instead.
|
|
4
|
+
*/
|
|
2
5
|
export declare const icav2ProjectId: Record<StageName, string>;
|
|
6
|
+
/**
|
|
7
|
+
* The default project ID for our ICA tenant
|
|
8
|
+
*/
|
|
9
|
+
export declare const ICAV2_PROJECT_ID: Record<StageName, string>;
|
|
10
|
+
/**
|
|
11
|
+
* @deprecated Use ICAV2_ACCESS_TOKEN_SECRET_ID instead.
|
|
12
|
+
*/
|
|
3
13
|
export declare const icav2AccessTokenSecretId: Record<StageName, string>;
|
|
14
|
+
/**
|
|
15
|
+
* The secret ID for the access token used to authenticate with the ICA API.
|
|
16
|
+
*/
|
|
17
|
+
export declare const ICAV2_ACCESS_TOKEN_SECRET_ID: Record<StageName, string>;
|
|
18
|
+
/**
|
|
19
|
+
* @deprecated Use ICAV2_BASE_URL instead.
|
|
20
|
+
*/
|
|
4
21
|
export declare const icav2BaseUrl: string;
|
|
22
|
+
/**
|
|
23
|
+
* The base URL for the ICA API v2.
|
|
24
|
+
*/
|
|
25
|
+
export declare const ICAV2_BASE_URL: string;
|
package/shared-config/icav2.js
CHANGED
|
@@ -1,15 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.icav2BaseUrl = exports.icav2AccessTokenSecretId = exports.icav2ProjectId = void 0;
|
|
3
|
+
exports.ICAV2_BASE_URL = exports.icav2BaseUrl = exports.ICAV2_ACCESS_TOKEN_SECRET_ID = exports.icav2AccessTokenSecretId = exports.ICAV2_PROJECT_ID = exports.icav2ProjectId = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @deprecated Use ICAV2_PROJECT_ID instead.
|
|
6
|
+
*/
|
|
4
7
|
exports.icav2ProjectId = {
|
|
5
8
|
BETA: "ea19a3f5-ec7c-4940-a474-c31cd91dbad4", // development
|
|
6
9
|
GAMMA: "157b9e78-b2e1-45a7-bfcd-691159995f7c", // staging
|
|
7
10
|
PROD: "eba5c946-1677-441d-bbce-6a11baadecbb", // production
|
|
8
11
|
};
|
|
12
|
+
/**
|
|
13
|
+
* The default project ID for our ICA tenant
|
|
14
|
+
*/
|
|
15
|
+
exports.ICAV2_PROJECT_ID = {
|
|
16
|
+
BETA: "ea19a3f5-ec7c-4940-a474-c31cd91dbad4", // development
|
|
17
|
+
GAMMA: "157b9e78-b2e1-45a7-bfcd-691159995f7c", // staging
|
|
18
|
+
PROD: "eba5c946-1677-441d-bbce-6a11baadecbb", // production
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* @deprecated Use ICAV2_ACCESS_TOKEN_SECRET_ID instead.
|
|
22
|
+
*/
|
|
9
23
|
exports.icav2AccessTokenSecretId = {
|
|
10
24
|
BETA: 'ICAv2JWTKey-umccr-prod-service-dev', // pragma: allowlist secret
|
|
11
25
|
GAMMA: 'ICAv2JWTKey-umccr-prod-service-staging', // pragma: allowlist secret
|
|
12
26
|
PROD: 'ICAv2JWTKey-umccr-prod-service-production', // pragma: allowlist secret
|
|
13
27
|
};
|
|
28
|
+
/**
|
|
29
|
+
* The secret ID for the access token used to authenticate with the ICA API.
|
|
30
|
+
*/
|
|
31
|
+
exports.ICAV2_ACCESS_TOKEN_SECRET_ID = {
|
|
32
|
+
BETA: 'ICAv2JWTKey-umccr-prod-service-dev', // pragma: allowlist secret
|
|
33
|
+
GAMMA: 'ICAv2JWTKey-umccr-prod-service-staging', // pragma: allowlist secret
|
|
34
|
+
PROD: 'ICAv2JWTKey-umccr-prod-service-production', // pragma: allowlist secret
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* @deprecated Use ICAV2_BASE_URL instead.
|
|
38
|
+
*/
|
|
14
39
|
exports.icav2BaseUrl = "https://ica.illumina.com/ica/rest";
|
|
15
|
-
|
|
40
|
+
/**
|
|
41
|
+
* The base URL for the ICA API v2.
|
|
42
|
+
*/
|
|
43
|
+
exports.ICAV2_BASE_URL = "https://ica.illumina.com/ica/rest";
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNhdjIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpY2F2Mi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQTs7R0FFRztBQUNVLFFBQUEsY0FBYyxHQUE4QjtJQUN2RCxJQUFJLEVBQUUsc0NBQXNDLEVBQUUsY0FBYztJQUM1RCxLQUFLLEVBQUUsc0NBQXNDLEVBQUUsVUFBVTtJQUN6RCxJQUFJLEVBQUUsc0NBQXNDLEVBQUUsYUFBYTtDQUM1RCxDQUFDO0FBRUY7O0dBRUc7QUFDVSxRQUFBLGdCQUFnQixHQUE4QjtJQUN6RCxJQUFJLEVBQUUsc0NBQXNDLEVBQUUsY0FBYztJQUM1RCxLQUFLLEVBQUUsc0NBQXNDLEVBQUUsVUFBVTtJQUN6RCxJQUFJLEVBQUUsc0NBQXNDLEVBQUUsYUFBYTtDQUM1RCxDQUFBO0FBRUQ7O0dBRUc7QUFDVSxRQUFBLHdCQUF3QixHQUE4QjtJQUNqRSxJQUFJLEVBQUUsb0NBQW9DLEVBQUUsMkJBQTJCO0lBQ3ZFLEtBQUssRUFBRSx3Q0FBd0MsRUFBRSwyQkFBMkI7SUFDNUUsSUFBSSxFQUFFLDJDQUEyQyxFQUFFLDJCQUEyQjtDQUMvRSxDQUFDO0FBRUY7O0dBRUc7QUFDVSxRQUFBLDRCQUE0QixHQUE4QjtJQUNyRSxJQUFJLEVBQUUsb0NBQW9DLEVBQUcsMkJBQTJCO0lBQ3hFLEtBQUssRUFBRSx3Q0FBd0MsRUFBRywyQkFBMkI7SUFDN0UsSUFBSSxFQUFFLDJDQUEyQyxFQUFHLDJCQUEyQjtDQUNoRixDQUFBO0FBRUQ7O0dBRUc7QUFDVSxRQUFBLFlBQVksR0FBVyxtQ0FBbUMsQ0FBQTtBQUV2RTs7R0FFRztBQUNVLFFBQUEsY0FBYyxHQUFXLG1DQUFtQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTdGFnZU5hbWV9IGZyb20gXCIuL2FjY291bnRzXCI7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIElDQVYyX1BST0pFQ1RfSUQgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGNvbnN0IGljYXYyUHJvamVjdElkOiBSZWNvcmQ8U3RhZ2VOYW1lLCBzdHJpbmc+ID0ge1xuICBCRVRBOiBcImVhMTlhM2Y1LWVjN2MtNDk0MC1hNDc0LWMzMWNkOTFkYmFkNFwiLCAvLyBkZXZlbG9wbWVudFxuICBHQU1NQTogXCIxNTdiOWU3OC1iMmUxLTQ1YTctYmZjZC02OTExNTk5OTVmN2NcIiwgLy8gc3RhZ2luZ1xuICBQUk9EOiBcImViYTVjOTQ2LTE2NzctNDQxZC1iYmNlLTZhMTFiYWFkZWNiYlwiLCAvLyBwcm9kdWN0aW9uXG59O1xuXG4vKipcbiAqIFRoZSBkZWZhdWx0IHByb2plY3QgSUQgZm9yIG91ciBJQ0EgdGVuYW50XG4gKi9cbmV4cG9ydCBjb25zdCBJQ0FWMl9QUk9KRUNUX0lEOiBSZWNvcmQ8U3RhZ2VOYW1lLCBzdHJpbmc+ID0ge1xuICBCRVRBOiBcImVhMTlhM2Y1LWVjN2MtNDk0MC1hNDc0LWMzMWNkOTFkYmFkNFwiLCAvLyBkZXZlbG9wbWVudFxuICBHQU1NQTogXCIxNTdiOWU3OC1iMmUxLTQ1YTctYmZjZC02OTExNTk5OTVmN2NcIiwgLy8gc3RhZ2luZ1xuICBQUk9EOiBcImViYTVjOTQ2LTE2NzctNDQxZC1iYmNlLTZhMTFiYWFkZWNiYlwiLCAvLyBwcm9kdWN0aW9uXG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIElDQVYyX0FDQ0VTU19UT0tFTl9TRUNSRVRfSUQgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGNvbnN0IGljYXYyQWNjZXNzVG9rZW5TZWNyZXRJZDogUmVjb3JkPFN0YWdlTmFtZSwgc3RyaW5nPiA9IHtcbiAgQkVUQTogJ0lDQXYySldUS2V5LXVtY2NyLXByb2Qtc2VydmljZS1kZXYnLCAvLyBwcmFnbWE6IGFsbG93bGlzdCBzZWNyZXRcbiAgR0FNTUE6ICdJQ0F2MkpXVEtleS11bWNjci1wcm9kLXNlcnZpY2Utc3RhZ2luZycsIC8vIHByYWdtYTogYWxsb3dsaXN0IHNlY3JldFxuICBQUk9EOiAnSUNBdjJKV1RLZXktdW1jY3ItcHJvZC1zZXJ2aWNlLXByb2R1Y3Rpb24nLCAvLyBwcmFnbWE6IGFsbG93bGlzdCBzZWNyZXRcbn07XG5cbi8qKlxuICogVGhlIHNlY3JldCBJRCBmb3IgdGhlIGFjY2VzcyB0b2tlbiB1c2VkIHRvIGF1dGhlbnRpY2F0ZSB3aXRoIHRoZSBJQ0EgQVBJLlxuICovXG5leHBvcnQgY29uc3QgSUNBVjJfQUNDRVNTX1RPS0VOX1NFQ1JFVF9JRDogUmVjb3JkPFN0YWdlTmFtZSwgc3RyaW5nPiA9IHtcbiAgQkVUQTogJ0lDQXYySldUS2V5LXVtY2NyLXByb2Qtc2VydmljZS1kZXYnLCAgLy8gcHJhZ21hOiBhbGxvd2xpc3Qgc2VjcmV0XG4gIEdBTU1BOiAnSUNBdjJKV1RLZXktdW1jY3ItcHJvZC1zZXJ2aWNlLXN0YWdpbmcnLCAgLy8gcHJhZ21hOiBhbGxvd2xpc3Qgc2VjcmV0XG4gIFBST0Q6ICdJQ0F2MkpXVEtleS11bWNjci1wcm9kLXNlcnZpY2UtcHJvZHVjdGlvbicsICAvLyBwcmFnbWE6IGFsbG93bGlzdCBzZWNyZXRcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgSUNBVjJfQkFTRV9VUkwgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGNvbnN0IGljYXYyQmFzZVVybDogc3RyaW5nID0gXCJodHRwczovL2ljYS5pbGx1bWluYS5jb20vaWNhL3Jlc3RcIlxuXG4vKipcbiAqIFRoZSBiYXNlIFVSTCBmb3IgdGhlIElDQSBBUEkgdjIuXG4gKi9cbmV4cG9ydCBjb25zdCBJQ0FWMl9CQVNFX1VSTDogc3RyaW5nID0gXCJodHRwczovL2ljYS5pbGx1bWluYS5jb20vaWNhL3Jlc3RcIjsiXX0=
|
|
@@ -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: "0.0.
|
|
26
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusVpc", version: "0.0.19" };
|
|
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: "0.0.
|
|
45
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusSharedComputeSecurityGroup", version: "0.0.19" };
|
|
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/s3.d.ts
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
1
|
import { StageName } from "./accounts";
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated Use PIPELINE_CACHE_BUCKET instead
|
|
4
|
+
*/
|
|
2
5
|
export declare const pipelineCacheBucket: Record<StageName, string>;
|
|
6
|
+
/**
|
|
7
|
+
* The default S3 bucket names used for pipeline data.
|
|
8
|
+
*/
|
|
9
|
+
export declare const PIPELINE_CACHE_BUCKET: Record<StageName, string>;
|
|
10
|
+
/**
|
|
11
|
+
* @deprecated Use PIPELINE_CACHE_PREFIX instead
|
|
12
|
+
*/
|
|
3
13
|
export declare const pipelineCachePrefix: Record<StageName, string>;
|
|
14
|
+
/**
|
|
15
|
+
* The default S3 prefixes used for pipeline data.
|
|
16
|
+
*/
|
|
17
|
+
export declare const PIPELINE_CACHE_PREFIX: Record<StageName, string>;
|
package/shared-config/s3.js
CHANGED
|
@@ -1,14 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.pipelineCachePrefix = exports.pipelineCacheBucket = void 0;
|
|
3
|
+
exports.PIPELINE_CACHE_PREFIX = exports.pipelineCachePrefix = exports.PIPELINE_CACHE_BUCKET = exports.pipelineCacheBucket = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @deprecated Use PIPELINE_CACHE_BUCKET instead
|
|
6
|
+
*/
|
|
4
7
|
exports.pipelineCacheBucket = {
|
|
5
8
|
BETA: "pipeline-dev-cache-503977275616-ap-southeast-2",
|
|
6
9
|
GAMMA: "pipeline-stg-cache-503977275616-ap-southeast-2",
|
|
7
10
|
PROD: "pipeline-prod-cache-503977275616-ap-southeast-2",
|
|
8
11
|
};
|
|
12
|
+
/**
|
|
13
|
+
* The default S3 bucket names used for pipeline data.
|
|
14
|
+
*/
|
|
15
|
+
exports.PIPELINE_CACHE_BUCKET = {
|
|
16
|
+
BETA: "pipeline-dev-cache-503977275616-ap-southeast-2",
|
|
17
|
+
GAMMA: "pipeline-stg-cache-503977275616-ap-southeast-2",
|
|
18
|
+
PROD: "pipeline-prod-cache-503977275616-ap-southeast-2",
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* @deprecated Use PIPELINE_CACHE_PREFIX instead
|
|
22
|
+
*/
|
|
9
23
|
exports.pipelineCachePrefix = {
|
|
10
24
|
BETA: "byob-icav2/development/",
|
|
11
25
|
GAMMA: "byob-icav2/staging/",
|
|
12
26
|
PROD: "byob-icav2/production/",
|
|
13
27
|
};
|
|
14
|
-
|
|
28
|
+
/**
|
|
29
|
+
* The default S3 prefixes used for pipeline data.
|
|
30
|
+
*/
|
|
31
|
+
exports.PIPELINE_CACHE_PREFIX = {
|
|
32
|
+
BETA: "byob-icav2/development/",
|
|
33
|
+
GAMMA: "byob-icav2/staging/",
|
|
34
|
+
PROD: "byob-icav2/production/",
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzMy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQTs7R0FFRztBQUNVLFFBQUEsbUJBQW1CLEdBQThCO0lBQzVELElBQUksRUFBRSxnREFBZ0Q7SUFDdEQsS0FBSyxFQUFFLGdEQUFnRDtJQUN2RCxJQUFJLEVBQUUsaURBQWlEO0NBQ3hELENBQUM7QUFFRjs7R0FFRztBQUNVLFFBQUEscUJBQXFCLEdBQThCO0lBQzlELElBQUksRUFBRSxnREFBZ0Q7SUFDdEQsS0FBSyxFQUFFLGdEQUFnRDtJQUN2RCxJQUFJLEVBQUUsaURBQWlEO0NBQ3hELENBQUE7QUFFRDs7R0FFRztBQUNVLFFBQUEsbUJBQW1CLEdBQThCO0lBQzVELElBQUksRUFBRSx5QkFBeUI7SUFDL0IsS0FBSyxFQUFFLHFCQUFxQjtJQUM1QixJQUFJLEVBQUUsd0JBQXdCO0NBQy9CLENBQUM7QUFFRjs7R0FFRztBQUNVLFFBQUEscUJBQXFCLEdBQThCO0lBQzlELElBQUksRUFBRSx5QkFBeUI7SUFDL0IsS0FBSyxFQUFFLHFCQUFxQjtJQUM1QixJQUFJLEVBQUUsd0JBQXdCO0NBQy9CLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1N0YWdlTmFtZX0gZnJvbSBcIi4vYWNjb3VudHNcIjtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgUElQRUxJTkVfQ0FDSEVfQlVDS0VUIGluc3RlYWRcbiAqL1xuZXhwb3J0IGNvbnN0IHBpcGVsaW5lQ2FjaGVCdWNrZXQ6IFJlY29yZDxTdGFnZU5hbWUsIHN0cmluZz4gPSB7XG4gIEJFVEE6IFwicGlwZWxpbmUtZGV2LWNhY2hlLTUwMzk3NzI3NTYxNi1hcC1zb3V0aGVhc3QtMlwiLFxuICBHQU1NQTogXCJwaXBlbGluZS1zdGctY2FjaGUtNTAzOTc3Mjc1NjE2LWFwLXNvdXRoZWFzdC0yXCIsXG4gIFBST0Q6IFwicGlwZWxpbmUtcHJvZC1jYWNoZS01MDM5NzcyNzU2MTYtYXAtc291dGhlYXN0LTJcIixcbn07XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgUzMgYnVja2V0IG5hbWVzIHVzZWQgZm9yIHBpcGVsaW5lIGRhdGEuXG4gKi9cbmV4cG9ydCBjb25zdCBQSVBFTElORV9DQUNIRV9CVUNLRVQ6IFJlY29yZDxTdGFnZU5hbWUsIHN0cmluZz4gPSB7XG4gIEJFVEE6IFwicGlwZWxpbmUtZGV2LWNhY2hlLTUwMzk3NzI3NTYxNi1hcC1zb3V0aGVhc3QtMlwiLFxuICBHQU1NQTogXCJwaXBlbGluZS1zdGctY2FjaGUtNTAzOTc3Mjc1NjE2LWFwLXNvdXRoZWFzdC0yXCIsXG4gIFBST0Q6IFwicGlwZWxpbmUtcHJvZC1jYWNoZS01MDM5NzcyNzU2MTYtYXAtc291dGhlYXN0LTJcIixcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgUElQRUxJTkVfQ0FDSEVfUFJFRklYIGluc3RlYWRcbiAqL1xuZXhwb3J0IGNvbnN0IHBpcGVsaW5lQ2FjaGVQcmVmaXg6IFJlY29yZDxTdGFnZU5hbWUsIHN0cmluZz4gPSB7XG4gIEJFVEE6IFwiYnlvYi1pY2F2Mi9kZXZlbG9wbWVudC9cIixcbiAgR0FNTUE6IFwiYnlvYi1pY2F2Mi9zdGFnaW5nL1wiLFxuICBQUk9EOiBcImJ5b2ItaWNhdjIvcHJvZHVjdGlvbi9cIixcbn07XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgUzMgcHJlZml4ZXMgdXNlZCBmb3IgcGlwZWxpbmUgZGF0YS5cbiAqL1xuZXhwb3J0IGNvbnN0IFBJUEVMSU5FX0NBQ0hFX1BSRUZJWDogUmVjb3JkPFN0YWdlTmFtZSwgc3RyaW5nPiA9IHtcbiAgQkVUQTogXCJieW9iLWljYXYyL2RldmVsb3BtZW50L1wiLFxuICBHQU1NQTogXCJieW9iLWljYXYyL3N0YWdpbmcvXCIsXG4gIFBST0Q6IFwiYnlvYi1pY2F2Mi9wcm9kdWN0aW9uL1wiLFxufVxuXG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JWT_SECRET_NAME = exports.validateSecretName = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Validate the secret name so that it doesn't end with 6 characters and a hyphen.
|
|
6
|
+
*/
|
|
7
|
+
const validateSecretName = (secretName) => {
|
|
8
|
+
// Note, this should not end with a hyphen and 6 characters, otherwise secrets manager won't be
|
|
9
|
+
// able to find the secret using a partial ARN.
|
|
10
|
+
if (/-(.){6}$/.test(secretName)) {
|
|
11
|
+
throw new Error("the secret name should not end with a hyphen and 6 characters");
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
exports.validateSecretName = validateSecretName;
|
|
15
|
+
exports.JWT_SECRET_NAME = "orcabus/token-service-jwt"; // pragma: allowlist secret
|
|
16
|
+
(0, exports.validateSecretName)(exports.JWT_SECRET_NAME);
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlY3JldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSSxNQUFNLGtCQUFrQixHQUFHLENBQUMsVUFBa0IsRUFBRSxFQUFFO0lBQ3ZELCtGQUErRjtJQUMvRiwrQ0FBK0M7SUFDL0MsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FDYiwrREFBK0QsQ0FDaEUsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDLENBQUM7QUFSVyxRQUFBLGtCQUFrQixzQkFRN0I7QUFFVyxRQUFBLGVBQWUsR0FBRywyQkFBMkIsQ0FBQyxDQUFDLDJCQUEyQjtBQUN2RixJQUFBLDBCQUFrQixFQUFDLHVCQUFlLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVmFsaWRhdGUgdGhlIHNlY3JldCBuYW1lIHNvIHRoYXQgaXQgZG9lc24ndCBlbmQgd2l0aCA2IGNoYXJhY3RlcnMgYW5kIGEgaHlwaGVuLlxuICovXG5leHBvcnQgY29uc3QgdmFsaWRhdGVTZWNyZXROYW1lID0gKHNlY3JldE5hbWU6IHN0cmluZykgPT4ge1xuICAvLyBOb3RlLCB0aGlzIHNob3VsZCBub3QgZW5kIHdpdGggYSBoeXBoZW4gYW5kIDYgY2hhcmFjdGVycywgb3RoZXJ3aXNlIHNlY3JldHMgbWFuYWdlciB3b24ndCBiZVxuICAvLyBhYmxlIHRvIGZpbmQgdGhlIHNlY3JldCB1c2luZyBhIHBhcnRpYWwgQVJOLlxuICBpZiAoLy0oLil7Nn0kLy50ZXN0KHNlY3JldE5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJ0aGUgc2VjcmV0IG5hbWUgc2hvdWxkIG5vdCBlbmQgd2l0aCBhIGh5cGhlbiBhbmQgNiBjaGFyYWN0ZXJzXCIsXG4gICAgKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IEpXVF9TRUNSRVRfTkFNRSA9IFwib3JjYWJ1cy90b2tlbi1zZXJ2aWNlLWp3dFwiOyAvLyBwcmFnbWE6IGFsbG93bGlzdCBzZWNyZXRcbnZhbGlkYXRlU2VjcmV0TmFtZShKV1RfU0VDUkVUX05BTUUpO1xuIl19
|
package/utils/index.d.ts
CHANGED
|
@@ -11,7 +11,3 @@ export declare function resolveStageName(scope: Construct): StageName;
|
|
|
11
11
|
* Stringify the message data.
|
|
12
12
|
*/
|
|
13
13
|
export declare function synthesisMessageToString(sm: SynthesisMessage): string;
|
|
14
|
-
/**
|
|
15
|
-
* Validate the secret name so that it doesn't end with 6 characters and a hyphen.
|
|
16
|
-
*/
|
|
17
|
-
export declare const validateSecretName: (secretName: string) => void;
|
package/utils/index.js
CHANGED
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
*
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.validateSecretName = void 0;
|
|
9
8
|
exports.resolveStageName = resolveStageName;
|
|
10
9
|
exports.synthesisMessageToString = synthesisMessageToString;
|
|
11
10
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
@@ -21,12 +20,12 @@ function resolveStageName(scope) {
|
|
|
21
20
|
// but the stage name is provided as a construct attribute.
|
|
22
21
|
const stackObj = scope.node.scope;
|
|
23
22
|
const propertyNames = Object.getOwnPropertyNames(stackObj);
|
|
24
|
-
if (!propertyNames.includes(
|
|
23
|
+
if (!propertyNames.includes("stageName")) {
|
|
25
24
|
throw new Error(`Account ID ${aws_cdk_lib_1.Stack.of(scope).account} not found in accountIdAlias.
|
|
26
25
|
Please set 'stageName' as a construct attribute in your stack as a fallback`);
|
|
27
26
|
}
|
|
28
27
|
// If 'stageName' is present, return it as a StageName
|
|
29
|
-
return Object(stackObj)[
|
|
28
|
+
return Object(stackObj)["stageName"];
|
|
30
29
|
}
|
|
31
30
|
return match[0];
|
|
32
31
|
}
|
|
@@ -36,15 +35,4 @@ function resolveStageName(scope) {
|
|
|
36
35
|
function synthesisMessageToString(sm) {
|
|
37
36
|
return `${JSON.stringify(sm.entry.data)} [${sm.id}]`;
|
|
38
37
|
}
|
|
39
|
-
|
|
40
|
-
* Validate the secret name so that it doesn't end with 6 characters and a hyphen.
|
|
41
|
-
*/
|
|
42
|
-
const validateSecretName = (secretName) => {
|
|
43
|
-
// Note, this should not end with a hyphen and 6 characters, otherwise secrets manager won't be
|
|
44
|
-
// able to find the secret using a partial ARN.
|
|
45
|
-
if (/-(.){6}$/.test(secretName)) {
|
|
46
|
-
throw new Error("the secret name should not end with a hyphen and 6 characters");
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
exports.validateSecretName = validateSecretName;
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7O0FBUUgsNENBeUJDO0FBS0QsNERBRUM7QUFyQ0QsNkNBQW9DO0FBRXBDLHdEQUFtRTtBQUduRSxTQUFnQixnQkFBZ0IsQ0FBQyxLQUFnQjtJQUMvQywrREFBK0Q7SUFDL0QsK0RBQStEO0lBQy9ELHFGQUFxRjtJQUNyRixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLHlCQUFjLENBQUMsQ0FBQyxJQUFJLENBQy9DLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQ2xELENBQUM7SUFFRixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCw2REFBNkQ7UUFDN0QsK0VBQStFO1FBQy9FLDJEQUEyRDtRQUMzRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNsQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUN6QyxNQUFNLElBQUksS0FBSyxDQUNiLGNBQWMsbUJBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTztvRkFDdUMsQ0FDN0UsQ0FBQztRQUNKLENBQUM7UUFDRCxzREFBc0Q7UUFDdEQsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFjLENBQUM7SUFDcEQsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBYyxDQUFDO0FBQy9CLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLHdCQUF3QixDQUFDLEVBQW9CO0lBQzNELE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0FBQ3ZELENBQUM7QUFFRDs7R0FFRztBQUNJLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxVQUFrQixFQUFFLEVBQUU7SUFDdkQsK0ZBQStGO0lBQy9GLCtDQUErQztJQUMvQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUNoQyxNQUFNLElBQUksS0FBSyxDQUNiLCtEQUErRCxDQUNoRSxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMsQ0FBQztBQVJXLFFBQUEsa0JBQWtCLHNCQVE3QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICpcbiAqIFNoYXJlZCBjb25maWd1cmF0aW9uIHNob3VsZCBub3cgYmUgcGxhY2VkIGluIHRoZSBzaGFyZWQtY29uZmlnIHBhY2thZ2UuXG4gKlxuICovXG5cbmltcG9ydCB7Q29uc3RydWN0fSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IFN5bnRoZXNpc01lc3NhZ2UgfSBmcm9tIFwiYXdzLWNkay1saWIvY3gtYXBpXCI7XG5pbXBvcnQge2FjY291bnRJZEFsaWFzLCBTdGFnZU5hbWV9IGZyb20gXCIuLi9zaGFyZWQtY29uZmlnL2FjY291bnRzXCJcblxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVN0YWdlTmFtZShzY29wZTogQ29uc3RydWN0KTogU3RhZ2VOYW1lIHtcbiAgLy8gU2VlIGRpc2N1c3Npb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2lzc3Vlcy8xNzU0XG4gIC8vIFVzZSBTdGFjay5vZihzY29wZSkuYWNjb3VudCB0byBnZXQgdGhlIGFjY291bnQgSUQgaW5zdGVhZCBvZlxuICAvLyBjZGsuQXdzLkFDQ09VTlRfSUQsIHdoaWNoIG1heSBub3QgYmUgYXZhaWxhYmxlIGF0IHRoaXMgcG9pbnQgaW4gdGhlIENESyBsaWZlY3ljbGUuXG4gIGNvbnN0IG1hdGNoID0gT2JqZWN0LmVudHJpZXMoYWNjb3VudElkQWxpYXMpLmZpbmQoXG4gICAgKFtfLCB2YWx1ZV0pID0+IHZhbHVlID09PSBTdGFjay5vZihzY29wZSkuYWNjb3VudCxcbiAgKTtcblxuICBpZiAoIW1hdGNoKSB7XG4gICAgLy8gQ2hlY2sgaWYgJ3N0YWdlTmFtZScgaXMgYSBwcm9wZXJ0eSBpbiB0aGUgdmFyaWFibGUgJ3Njb3BlJ1xuICAgIC8vIFRoaXMgaXMgdXNlZnVsIGZvciBjYXNlcyB3aGVyZSB0aGUgYWNjb3VudCBJRCBpcyBub3QgZm91bmQgaW4gYWNjb3VudElkQWxpYXNcbiAgICAvLyBidXQgdGhlIHN0YWdlIG5hbWUgaXMgcHJvdmlkZWQgYXMgYSBjb25zdHJ1Y3QgYXR0cmlidXRlLlxuICAgIGNvbnN0IHN0YWNrT2JqID0gc2NvcGUubm9kZS5zY29wZTtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoc3RhY2tPYmopO1xuICAgIGlmICghcHJvcGVydHlOYW1lcy5pbmNsdWRlcygnc3RhZ2VOYW1lJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEFjY291bnQgSUQgJHtTdGFjay5vZihzY29wZSkuYWNjb3VudH0gbm90IGZvdW5kIGluIGFjY291bnRJZEFsaWFzLlxuICAgICAgICBQbGVhc2Ugc2V0ICdzdGFnZU5hbWUnIGFzIGEgY29uc3RydWN0IGF0dHJpYnV0ZSBpbiB5b3VyIHN0YWNrIGFzIGEgZmFsbGJhY2tgLFxuICAgICAgKTtcbiAgICB9XG4gICAgLy8gSWYgJ3N0YWdlTmFtZScgaXMgcHJlc2VudCwgcmV0dXJuIGl0IGFzIGEgU3RhZ2VOYW1lXG4gICAgcmV0dXJuIE9iamVjdChzdGFja09iailbJ3N0YWdlTmFtZSddIGFzIFN0YWdlTmFtZTtcbiAgfVxuXG4gIHJldHVybiBtYXRjaFswXSBhcyBTdGFnZU5hbWU7XG59XG5cbi8qKlxuICogU3RyaW5naWZ5IHRoZSBtZXNzYWdlIGRhdGEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzeW50aGVzaXNNZXNzYWdlVG9TdHJpbmcoc206IFN5bnRoZXNpc01lc3NhZ2UpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7SlNPTi5zdHJpbmdpZnkoc20uZW50cnkuZGF0YSl9IFske3NtLmlkfV1gO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHRoZSBzZWNyZXQgbmFtZSBzbyB0aGF0IGl0IGRvZXNuJ3QgZW5kIHdpdGggNiBjaGFyYWN0ZXJzIGFuZCBhIGh5cGhlbi5cbiAqL1xuZXhwb3J0IGNvbnN0IHZhbGlkYXRlU2VjcmV0TmFtZSA9IChzZWNyZXROYW1lOiBzdHJpbmcpID0+IHtcbiAgLy8gTm90ZSwgdGhpcyBzaG91bGQgbm90IGVuZCB3aXRoIGEgaHlwaGVuIGFuZCA2IGNoYXJhY3RlcnMsIG90aGVyd2lzZSBzZWNyZXRzIG1hbmFnZXIgd29uJ3QgYmVcbiAgLy8gYWJsZSB0byBmaW5kIHRoZSBzZWNyZXQgdXNpbmcgYSBwYXJ0aWFsIEFSTi5cbiAgaWYgKC8tKC4pezZ9JC8udGVzdChzZWNyZXROYW1lKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwidGhlIHNlY3JldCBuYW1lIHNob3VsZCBub3QgZW5kIHdpdGggYSBoeXBoZW4gYW5kIDYgY2hhcmFjdGVyc1wiLFxuICAgICk7XG4gIH1cbn07XG4iXX0=
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7QUFPSCw0Q0F5QkM7QUFLRCw0REFFQztBQXBDRCw2Q0FBb0M7QUFFcEMsd0RBQXNFO0FBRXRFLFNBQWdCLGdCQUFnQixDQUFDLEtBQWdCO0lBQy9DLCtEQUErRDtJQUMvRCwrREFBK0Q7SUFDL0QscUZBQXFGO0lBQ3JGLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMseUJBQWMsQ0FBQyxDQUFDLElBQUksQ0FDL0MsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLG1CQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FDbEQsQ0FBQztJQUVGLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLDZEQUE2RDtRQUM3RCwrRUFBK0U7UUFDL0UsMkRBQTJEO1FBQzNELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2xDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQ2IsY0FBYyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPO29GQUN1QyxDQUM3RSxDQUFDO1FBQ0osQ0FBQztRQUNELHNEQUFzRDtRQUN0RCxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQWMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFjLENBQUM7QUFDL0IsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0Isd0JBQXdCLENBQUMsRUFBb0I7SUFDM0QsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7QUFDdkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICpcbiAqIFNoYXJlZCBjb25maWd1cmF0aW9uIHNob3VsZCBub3cgYmUgcGxhY2VkIGluIHRoZSBzaGFyZWQtY29uZmlnIHBhY2thZ2UuXG4gKlxuICovXG5cbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgU3ludGhlc2lzTWVzc2FnZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9jeC1hcGlcIjtcbmltcG9ydCB7IGFjY291bnRJZEFsaWFzLCBTdGFnZU5hbWUgfSBmcm9tIFwiLi4vc2hhcmVkLWNvbmZpZy9hY2NvdW50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVN0YWdlTmFtZShzY29wZTogQ29uc3RydWN0KTogU3RhZ2VOYW1lIHtcbiAgLy8gU2VlIGRpc2N1c3Npb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2lzc3Vlcy8xNzU0XG4gIC8vIFVzZSBTdGFjay5vZihzY29wZSkuYWNjb3VudCB0byBnZXQgdGhlIGFjY291bnQgSUQgaW5zdGVhZCBvZlxuICAvLyBjZGsuQXdzLkFDQ09VTlRfSUQsIHdoaWNoIG1heSBub3QgYmUgYXZhaWxhYmxlIGF0IHRoaXMgcG9pbnQgaW4gdGhlIENESyBsaWZlY3ljbGUuXG4gIGNvbnN0IG1hdGNoID0gT2JqZWN0LmVudHJpZXMoYWNjb3VudElkQWxpYXMpLmZpbmQoXG4gICAgKFtfLCB2YWx1ZV0pID0+IHZhbHVlID09PSBTdGFjay5vZihzY29wZSkuYWNjb3VudCxcbiAgKTtcblxuICBpZiAoIW1hdGNoKSB7XG4gICAgLy8gQ2hlY2sgaWYgJ3N0YWdlTmFtZScgaXMgYSBwcm9wZXJ0eSBpbiB0aGUgdmFyaWFibGUgJ3Njb3BlJ1xuICAgIC8vIFRoaXMgaXMgdXNlZnVsIGZvciBjYXNlcyB3aGVyZSB0aGUgYWNjb3VudCBJRCBpcyBub3QgZm91bmQgaW4gYWNjb3VudElkQWxpYXNcbiAgICAvLyBidXQgdGhlIHN0YWdlIG5hbWUgaXMgcHJvdmlkZWQgYXMgYSBjb25zdHJ1Y3QgYXR0cmlidXRlLlxuICAgIGNvbnN0IHN0YWNrT2JqID0gc2NvcGUubm9kZS5zY29wZTtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoc3RhY2tPYmopO1xuICAgIGlmICghcHJvcGVydHlOYW1lcy5pbmNsdWRlcyhcInN0YWdlTmFtZVwiKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQWNjb3VudCBJRCAke1N0YWNrLm9mKHNjb3BlKS5hY2NvdW50fSBub3QgZm91bmQgaW4gYWNjb3VudElkQWxpYXMuXG4gICAgICAgIFBsZWFzZSBzZXQgJ3N0YWdlTmFtZScgYXMgYSBjb25zdHJ1Y3QgYXR0cmlidXRlIGluIHlvdXIgc3RhY2sgYXMgYSBmYWxsYmFja2AsXG4gICAgICApO1xuICAgIH1cbiAgICAvLyBJZiAnc3RhZ2VOYW1lJyBpcyBwcmVzZW50LCByZXR1cm4gaXQgYXMgYSBTdGFnZU5hbWVcbiAgICByZXR1cm4gT2JqZWN0KHN0YWNrT2JqKVtcInN0YWdlTmFtZVwiXSBhcyBTdGFnZU5hbWU7XG4gIH1cblxuICByZXR1cm4gbWF0Y2hbMF0gYXMgU3RhZ2VOYW1lO1xufVxuXG4vKipcbiAqIFN0cmluZ2lmeSB0aGUgbWVzc2FnZSBkYXRhLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3ludGhlc2lzTWVzc2FnZVRvU3RyaW5nKHNtOiBTeW50aGVzaXNNZXNzYWdlKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke0pTT04uc3RyaW5naWZ5KHNtLmVudHJ5LmRhdGEpfSBbJHtzbS5pZH1dYDtcbn1cbiJdfQ==
|