@rio-cloud/cdk-v2-constructs 6.16.10 → 6.17.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +143 -107
- package/docs/API.md +24 -9
- package/docs/changelog.md +9 -0
- package/lib/constants.d.ts +2 -0
- package/lib/constants.js +6 -0
- package/lib/contributions/team-transport-two/pipeline/pipeline-stack.d.ts +4 -0
- package/lib/contributions/team-transport-two/pipeline/pipeline-stack.js +20 -12
- package/lib/datadogv2/datadog-service-catalog-entry.js +3 -2
- package/lib/datadogv2/datadog-shared-secrets.js +3 -2
- package/lib/fargate/rio-fargate-service-blue-green-alpha.js +6 -5
- package/lib/ses/ses-observability.js +3 -2
- package/lib/watchful/aspect.js +4 -1
- package/lib/watchful/dynamodb.d.ts +1 -1
- package/lib/watchful/dynamodb.js +1 -1
- package/lib/watchful/upperToLower.js +3 -2
- package/lib/watchful/watchful.d.ts +1 -1
- package/lib/watchful/watchful.js +1 -1
- package/package.json +1 -1
- package/version.json +1 -1
|
@@ -11,6 +11,7 @@ const logs = require("aws-cdk-lib/aws-logs");
|
|
|
11
11
|
const sec = require("aws-cdk-lib/aws-secretsmanager");
|
|
12
12
|
const cr = require("aws-cdk-lib/custom-resources");
|
|
13
13
|
const constructs = require("constructs");
|
|
14
|
+
const constants_1 = require("../constants");
|
|
14
15
|
const EU_LANDING_ZONE_ORG_ID = 'o-r5jfl7mbr9';
|
|
15
16
|
const LATAM_LANDING_ZONE_ORG_ID = 'o-5j12ut524w';
|
|
16
17
|
const DEVELOPER_TOOLS_ACCOUNT_ID = '577146897785';
|
|
@@ -51,7 +52,7 @@ class DatadogSharedSecret extends constructs.Construct {
|
|
|
51
52
|
exclude: ['*.js', '*.d.ts'],
|
|
52
53
|
}),
|
|
53
54
|
handler: 'on-create.handler',
|
|
54
|
-
runtime:
|
|
55
|
+
runtime: constants_1.DEFAULT_NODE_RUNTIME,
|
|
55
56
|
architecture: lambda.Architecture.ARM_64,
|
|
56
57
|
logGroup: new logs.LogGroup(stack, 'DatadogSharedSecretHandlerLogGroup', {
|
|
57
58
|
retention: logs.RetentionDays.ONE_WEEK,
|
|
@@ -158,4 +159,4 @@ class DatadogSharedSecret extends constructs.Construct {
|
|
|
158
159
|
exports.DatadogSharedSecret = DatadogSharedSecret;
|
|
159
160
|
_a = JSII_RTTI_SYMBOL_1;
|
|
160
161
|
DatadogSharedSecret[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedSecret", version: "0.0.0" };
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy1zaGFyZWQtc2VjcmV0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhZG9ndjIvZGF0YWRvZy1zaGFyZWQtc2VjcmV0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUE2QjtBQUM3QixtQ0FBbUM7QUFFbkMsMkNBQTJDO0FBQzNDLGlEQUFpRDtBQUNqRCw2Q0FBNkM7QUFDN0Msc0RBQXNEO0FBQ3RELG1EQUFtRDtBQUNuRCx5Q0FBeUM7QUFHekMsTUFBTSxzQkFBc0IsR0FBVyxjQUFjLENBQUM7QUFDdEQsTUFBTSx5QkFBeUIsR0FBVyxjQUFjLENBQUM7QUFFekQsTUFBTSwwQkFBMEIsR0FBVyxjQUFjLENBQUM7QUFFMUQsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsMEJBQTBCLE1BQU0sSUFBSSwwQkFBMEIsb0NBQW9DLENBQUM7QUFDMUosTUFBTSx1QkFBdUIsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsMEJBQTBCLE1BQU0sSUFBSSwwQkFBMEIsaUNBQWlDLENBQUM7QUFFcEosTUFBTSxXQUFXLEdBQUcsMEJBQTBCLENBQUM7QUFDL0MsTUFBTSxtQkFBbUIsR0FBRywrQkFBK0IsQ0FBQztBQUM1RCxNQUFNLHVCQUF1QixHQUFHLG9DQUFvQyxDQUFDO0FBRXJFOztHQUVHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSxVQUFVLENBQUMsU0FBUztJQUUzRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBMkI7UUFDN0MsTUFBTSxFQUFFLEdBQUcsbUJBQW1CLENBQUM7UUFDL0IsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sS0FBSyxDQUFDLElB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O1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELFVBQVUsQ0FBQyxRQUF3QjtRQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELG1CQUFtQixDQUFDLEdBQVcsRUFBRSxRQUFxQztRQUNwRSxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELG1CQUFtQixDQUFDLFVBQStCO1FBQ2pELE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQW9DO1FBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsT0FBMEI7UUFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7O0FBOUpILGtEQWdLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuXG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCAqIGFzIHNlYyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXInO1xuaW1wb3J0ICogYXMgY3IgZnJvbSAnYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlcyc7XG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5cbmNvbnN0IEVVX0xBTkRJTkdfWk9ORV9PUkdfSUQ6IHN0cmluZyA9ICdvLXI1amZsN21icjknO1xuY29uc3QgTEFUQU1fTEFORElOR19aT05FX09SR19JRDogc3RyaW5nID0gJ28tNWoxMnV0NTI0dyc7XG5cbmNvbnN0IERFVkVMT1BFUl9UT09MU19BQ0NPVU5UX0lEOiBzdHJpbmcgPSAnNTc3MTQ2ODk3Nzg1JztcblxuY29uc3Qgc2hhcmVkTGF0YW1TZWNyZXRBcm5QcmVmaXggPSAocmVnaW9uOiBzdHJpbmcpID0+IGBhcm46YXdzOnNlY3JldHNtYW5hZ2VyOiR7cmVnaW9ufToke0RFVkVMT1BFUl9UT09MU19BQ0NPVU5UX0lEfTpzZWNyZXQ6L2RhdGFkb2ctaW50ZWdyYXRpb24vbGF0YW1gO1xuY29uc3Qgc2hhcmVkRXVTZWNyZXRBcm5QcmVmaXggPSAocmVnaW9uOiBzdHJpbmcpID0+IGBhcm46YXdzOnNlY3JldHNtYW5hZ2VyOiR7cmVnaW9ufToke0RFVkVMT1BFUl9UT09MU19BQ0NPVU5UX0lEfTpzZWNyZXQ6L2RhdGFkb2ctaW50ZWdyYXRpb24vZXVgO1xuXG5jb25zdCBSRVNPVVJDRV9JRCA9ICdfX09yZ0NyZWRlbnRpYWxzU2VjcmV0X18nO1xuY29uc3QgQVBJX0tFWV9SRVNPVVJDRV9JRCA9ICdfX0RhdGFkb2dBcGlLZXlTaGFyZWRTZWNyZXRfXyc7XG5jb25zdCBDUkVERU5USUFMU19SRVNPVVJDRV9JRCA9ICdfX0RhdGFkb2dDcmVkZW50aWFsc1NoYXJlZFNlY3JldF9fJztcblxuLyoqXG4gKiBBIGN1c3RvbSByZXNvdXJjZSB0aGF0IHJlc29sdmVzIHRoZSBzZWNyZXQgQVJOIGJhc2VkIG9uIHRoZSBvcmdhbml6YXRpb24gSUQuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhZG9nU2hhcmVkU2VjcmV0IGV4dGVuZHMgY29uc3RydWN0cy5Db25zdHJ1Y3QgaW1wbGVtZW50cyBzZWMuSVNlY3JldCB7XG5cbiAgLyoqXG4gICAqIFRoaXMgc3RhdGljIGZ1bmN0aW9uIHJlc29sdmVzIHRvIHRoZSBwbGFpbiBhcGkta2V5IHNlY3JldCwgdGhhdCBjYW4gYmUgdXNlZCBmb3IgdGhlIGxvZyBmb3J3YXJkZXIgb3IgdGhlIExhbWJkYSBpbnN0cnVtZW50YXRpb24uXG4gICAqL1xuICBzdGF0aWMgYXBpS2V5U2VjcmV0KHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCkge1xuICAgIGNvbnN0IGlkID0gQVBJX0tFWV9SRVNPVVJDRV9JRDtcbiAgICBjb25zdCBzdGFjayA9IGNkay5TdGFjay5vZihzY29wZSk7XG4gICAgaWYgKHN0YWNrLm5vZGUudHJ5RmluZENoaWxkKGlkKSkge1xuICAgICAgcmV0dXJuIHN0YWNrLm5vZGUuZmluZENoaWxkKGlkKSBhcyBEYXRhZG9nU2hhcmVkU2VjcmV0O1xuICAgIH1cbiAgICByZXR1cm4gbmV3IERhdGFkb2dTaGFyZWRTZWNyZXQoc3RhY2ssIGlkLCB7IHNlY3JldE5hbWU6ICdzaGFyZWQtYXBpLWtleScgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBzdGF0aWMgZnVuY3Rpb24gcmVzb2x2ZXMgdG8gdGhlIGpzb24gY3JlZGVudGlhbHMgc2VjcmV0IHRoYXQgY29udGFpbnMgWydBcGlLZXknLCAnQXBwbGljYXRpb25LZXknLCAnU2l0ZSddLlxuICAgKi9cbiAgc3RhdGljIGNyZWRlbnRpYWxzU2VjcmV0KHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCkge1xuICAgIGNvbnN0IGlkID0gQ1JFREVOVElBTFNfUkVTT1VSQ0VfSUQ7XG4gICAgY29uc3Qgc3RhY2sgPSBjZGsuU3RhY2sub2Yoc2NvcGUpO1xuICAgIGlmIChzdGFjay5ub2RlLnRyeUZpbmRDaGlsZChpZCkpIHtcbiAgICAgIHJldHVybiBzdGFjay5ub2RlLmZpbmRDaGlsZChpZCkgYXMgRGF0YWRvZ1NoYXJlZFNlY3JldDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBEYXRhZG9nU2hhcmVkU2VjcmV0KHNjb3BlLCBpZCwgeyBzZWNyZXROYW1lOiAnc2hhcmVkLWNyZWRlbnRpYWxzJyB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHNldHVwQ3VzdG9tUmVzb3VyY2Uoc3RhY2s6IGNkay5TdGFjayk6IGNyLlByb3ZpZGVyIHtcbiAgICBjb25zdCBzZWNyZXRMb2NhdG9yTGFtYmRhID0gbmV3IGxhbWJkYS5GdW5jdGlvbihzdGFjaywgJ1Jlc29sdmVTZWNyZXRBcm5IYW5kbGVyJywge1xuICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICdzZWNyZXQtbG9jYXRvci1jdXN0b20tcmVzb3VyY2UnKSwge1xuICAgICAgICBleGNsdWRlOiBbJyouanMnLCAnKi5kLnRzJ10sXG4gICAgICB9KSxcbiAgICAgIGhhbmRsZXI6ICdvbi1jcmVhdGUuaGFuZGxlcicsXG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMjBfWCxcbiAgICAgIGFyY2hpdGVjdHVyZTogbGFtYmRhLkFyY2hpdGVjdHVyZS5BUk1fNjQsXG4gICAgICBsb2dHcm91cDogbmV3IGxvZ3MuTG9nR3JvdXAoc3RhY2ssICdEYXRhZG9nU2hhcmVkU2VjcmV0SGFuZGxlckxvZ0dyb3VwJywge1xuICAgICAgICByZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfV0VFSyxcbiAgICAgIH0pLFxuICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNiksXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBTSEFSRURfTEFUQU1fU0VDUkVUX0FSTl9QUkVGSVg6IHNoYXJlZExhdGFtU2VjcmV0QXJuUHJlZml4KHN0YWNrLnJlZ2lvbiksXG4gICAgICAgIFNIQVJFRF9FVV9TRUNSRVRfQVJOX1BSRUZJWDogc2hhcmVkRXVTZWNyZXRBcm5QcmVmaXgoc3RhY2sucmVnaW9uKSxcbiAgICAgICAgTEFUQU1fTEFORElOR19aT05FX09SR19JRDogTEFUQU1fTEFORElOR19aT05FX09SR19JRCxcbiAgICAgICAgRVVfTEFORElOR19aT05FX09SR19JRDogRVVfTEFORElOR19aT05FX09SR19JRCxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgLy8gdG8gcHJldmVudCBpc3N1ZXMgd2l0aCBvcmRlciBvZiBhc3BlY3RzIGluIENESywgd2UgbmVlZCB0byBhZGQgdGhlIHRhZyBkaXJlY3RseS5cbiAgICBuZXcgY2RrLlRhZygnV2F0Y2hmdWwnLCAnZmFsc2UnKS52aXNpdChzZWNyZXRMb2NhdG9yTGFtYmRhLm5vZGUuZGVmYXVsdENoaWxkISk7XG5cbiAgICBzZWNyZXRMb2NhdG9yTGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7IGFjdGlvbnM6IFsnb3JnYW5pemF0aW9uczpEZXNjcmliZU9yZ2FuaXphdGlvbiddLCByZXNvdXJjZXM6IFsnKiddIH0pKTtcbiAgICBzZWNyZXRMb2NhdG9yTGFtYmRhLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogWydzZWNyZXRzbWFuYWdlcjpEZXNjcmliZVNlY3JldCddLFxuICAgICAgICByZXNvdXJjZXM6IFtgYXJuOmF3czpzZWNyZXRzbWFuYWdlcjoke3N0YWNrLnJlZ2lvbn06JHtERVZFTE9QRVJfVE9PTFNfQUNDT1VOVF9JRH06c2VjcmV0OipgXSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBjci5Qcm92aWRlcihzdGFjaywgUkVTT1VSQ0VfSUQsIHtcbiAgICAgIG9uRXZlbnRIYW5kbGVyOiBzZWNyZXRMb2NhdG9yTGFtYmRhLFxuICAgIH0pO1xuICAgIC8vIHRvIHByZXZlbnQgaXNzdWVzIHdpdGggb3JkZXIgb2YgYXNwZWN0cyBpbiBDREssIHdlIG5lZWQgdG8gYWRkIHRoZSB0YWcgZGlyZWN0bHkuXG4gICAgbmV3IGNkay5UYWcoJ1dhdGNoZnVsJywgJ2ZhbHNlJykudmlzaXQocHJvdmlkZXIubm9kZS5maW5kQ2hpbGQoJ2ZyYW1ld29yay1vbkV2ZW50Jykubm9kZS5kZWZhdWx0Q2hpbGQhKTtcbiAgICByZXR1cm4gcHJvdmlkZXI7XG4gIH1cblxuICBwcml2YXRlIHNlY3JldDogc2VjLklTZWNyZXQ7XG4gIHByaXZhdGUgY3VzdG9tUmVzb3VyY2U6IGNyLlByb3ZpZGVyO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuSUNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IHtzZWNyZXROYW1lOiBzdHJpbmd9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHN0YWNrID0gY2RrLlN0YWNrLm9mKHRoaXMpO1xuICAgIGlmICghc3RhY2subm9kZS50cnlGaW5kQ2hpbGQoUkVTT1VSQ0VfSUQpKSB7XG4gICAgICB0aGlzLmN1c3RvbVJlc291cmNlID0gRGF0YWRvZ1NoYXJlZFNlY3JldC5zZXR1cEN1c3RvbVJlc291cmNlKHN0YWNrKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXN0b21SZXNvdXJjZSA9IHN0YWNrLm5vZGUuZmluZENoaWxkKFJFU09VUkNFX0lEKSBhcyBjci5Qcm92aWRlcjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWNyZXRMb2NhdG9yID0gbmV3IGNkay5DdXN0b21SZXNvdXJjZSh0aGlzLCAnRGF0YWRvZ1NoYXJlZFNlY3JldCcsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogdGhpcy5jdXN0b21SZXNvdXJjZS5zZXJ2aWNlVG9rZW4sXG4gICAgICBwYXNjYWxDYXNlUHJvcGVydGllczogdHJ1ZSxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgc2VjcmV0TmFtZTogcHJvcHMuc2VjcmV0TmFtZSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnNlY3JldCA9IHNlYy5TZWNyZXQuZnJvbVNlY3JldENvbXBsZXRlQXJuKHRoaXMsICdSZXNvdXJjZScsIHNlY3JldExvY2F0b3IuZ2V0QXR0KCdTZWNyZXRBcm4nKS50b1N0cmluZygpKTtcbiAgfVxuXG4gIGdldCBzdGFjaygpOiBjZGsuU3RhY2sge1xuICAgIHJldHVybiB0aGlzLnNlY3JldC5zdGFjaztcbiAgfVxuXG4gIGdldCBlbnYoKTogY2RrLlJlc291cmNlRW52aXJvbm1lbnQge1xuICAgIHJldHVybiB0aGlzLnNlY3JldC5lbnY7XG4gIH1cblxuICBnZXQgZW5jcnlwdGlvbktleSgpIDogY2RrLmF3c19rbXMuSUtleSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBzZWNyZXRBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zZWNyZXQuc2VjcmV0QXJuO1xuICB9O1xuXG4gIGdldCBzZWNyZXRGdWxsQXJuKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc2VjcmV0LnNlY3JldEZ1bGxBcm47XG4gIH1cblxuICBnZXQgc2VjcmV0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNlY3JldC5zZWNyZXROYW1lO1xuICB9XG5cbiAgZ2V0IHNlY3JldFZhbHVlKCk6IGNkay5TZWNyZXRWYWx1ZSB7XG4gICAgcmV0dXJuIHRoaXMuc2VjcmV0LnNlY3JldFZhbHVlO1xuICB9XG5cbiAgc2VjcmV0VmFsdWVGcm9tSnNvbihrZXk6IHN0cmluZyk6IGNkay5TZWNyZXRWYWx1ZSB7XG4gICAgcmV0dXJuIHRoaXMuc2VjcmV0LnNlY3JldFZhbHVlRnJvbUpzb24oa2V5KTtcbiAgfVxuXG4gIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgdmVyc2lvblN0YWdlcz86IHN0cmluZ1tdKTogaWFtLkdyYW50IHtcbiAgICBjb25zdCByZXN1bHQgPSBncmFudGVlLmdyYW50UHJpbmNpcGFsLmFkZFRvUHJpbmNpcGFsUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGFjdGlvbnM6IFsna21zOkRlY3J5cHQnXSxcbiAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOmttczoqOiR7REVWRUxPUEVSX1RPT0xTX0FDQ09VTlRfSUR9OmtleS8qYF0sXG4gICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgICdGb3JBbnlWYWx1ZTpTdHJpbmdMaWtlJzoge1xuICAgICAgICAgICdrbXM6UmVzb3VyY2VBbGlhc2VzJzogJ2FsaWFzL2RhdGFkb2ctaW50ZWdyYXRpb24tc2hhcmVkLWNyZWRlbnRpYWxzLWtleScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pKTtcbiAgICBpZiAoIXJlc3VsdC5zdGF0ZW1lbnRBZGRlZCkge1xuICAgICAgY2RrLkFubm90YXRpb25zLm9mKHRoaXMpLmFkZFdhcm5pbmcoJ0NvdWxkIG5vdCBhZGQgc3RhdGVtZW50IHRvIHRoZSBwcmluY2lwYWwgcG9saWN5LicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zZWNyZXQuZ3JhbnRSZWFkKGdyYW50ZWUsIHZlcnNpb25TdGFnZXMpO1xuICB9XG5cbiAgZ3JhbnRXcml0ZShfZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBhbGxvd2VkLicpO1xuICB9XG5cbiAgYWRkUm90YXRpb25TY2hlZHVsZShfaWQ6IHN0cmluZywgX29wdGlvbnM6IHNlYy5Sb3RhdGlvblNjaGVkdWxlT3B0aW9ucyk6IHNlYy5Sb3RhdGlvblNjaGVkdWxlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgYWxsb3dlZC4nKTtcbiAgfVxuXG4gIGFkZFRvUmVzb3VyY2VQb2xpY3koX3N0YXRlbWVudDogaWFtLlBvbGljeVN0YXRlbWVudCk6IGlhbS5BZGRUb1Jlc291cmNlUG9saWN5UmVzdWx0IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgYWxsb3dlZC4nKTtcbiAgfVxuXG4gIGRlbnlBY2NvdW50Um9vdERlbGV0ZSgpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgYWxsb3dlZC4nKTtcbiAgfVxuXG4gIGF0dGFjaChfdGFyZ2V0OiBzZWMuSVNlY3JldEF0dGFjaG1lbnRUYXJnZXQpOiBzZWMuSVNlY3JldCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGFsbG93ZWQuJyk7XG4gIH1cblxuICBhcHBseVJlbW92YWxQb2xpY3koX3BvbGljeTogY2RrLlJlbW92YWxQb2xpY3kpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgYWxsb3dlZC4nKTtcbiAgfVxuXG59XG4iXX0=
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy1zaGFyZWQtc2VjcmV0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhZG9ndjIvZGF0YWRvZy1zaGFyZWQtc2VjcmV0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUE2QjtBQUM3QixtQ0FBbUM7QUFFbkMsMkNBQTJDO0FBQzNDLGlEQUFpRDtBQUNqRCw2Q0FBNkM7QUFDN0Msc0RBQXNEO0FBQ3RELG1EQUFtRDtBQUNuRCx5Q0FBeUM7QUFDekMsNENBQW9EO0FBR3BELE1BQU0sc0JBQXNCLEdBQVcsY0FBYyxDQUFDO0FBQ3RELE1BQU0seUJBQXlCLEdBQVcsY0FBYyxDQUFDO0FBRXpELE1BQU0sMEJBQTBCLEdBQVcsY0FBYyxDQUFDO0FBRTFELE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUFDLDBCQUEwQixNQUFNLElBQUksMEJBQTBCLG9DQUFvQyxDQUFDO0FBQzFKLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUFDLDBCQUEwQixNQUFNLElBQUksMEJBQTBCLGlDQUFpQyxDQUFDO0FBRXBKLE1BQU0sV0FBVyxHQUFHLDBCQUEwQixDQUFDO0FBQy9DLE1BQU0sbUJBQW1CLEdBQUcsK0JBQStCLENBQUM7QUFDNUQsTUFBTSx1QkFBdUIsR0FBRyxvQ0FBb0MsQ0FBQztBQUVyRTs7R0FFRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsVUFBVSxDQUFDLFNBQVM7SUFFM0Q7O09BRUc7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQTJCO1FBQzdDLE1BQU0sRUFBRSxHQUFHLG1CQUFtQixDQUFDO1FBQy9CLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNoQyxPQUFP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LE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxVQUFVLENBQUMsUUFBd0I7UUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxHQUFXLEVBQUUsUUFBcUM7UUFDcEUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxVQUErQjtRQUNqRCxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFvQztRQUN6QyxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELGtCQUFrQixDQUFDLE9BQTBCO1FBQzNDLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN6QyxDQUFDOztBQTlKSCxrREFnS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcblxuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgKiBhcyBzZWMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyJztcbmltcG9ydCAqIGFzIGNyIGZyb20gJ2F3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXMnO1xuaW1wb3J0ICogYXMgY29uc3RydWN0cyBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IERFRkFVTFRfTk9ERV9SVU5USU1FIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuXG5jb25zdCBFVV9MQU5ESU5HX1pPTkVfT1JHX0lEOiBzdHJpbmcgPSAnby1yNWpmbDdtYnI5JztcbmNvbnN0IExBVEFNX0xBTkRJTkdfWk9ORV9PUkdfSUQ6IHN0cmluZyA9ICdvLTVqMTJ1dDUyNHcnO1xuXG5jb25zdCBERVZFTE9QRVJfVE9PTFNfQUNDT1VOVF9JRDogc3RyaW5nID0gJzU3NzE0Njg5Nzc4NSc7XG5cbmNvbnN0IHNoYXJlZExhdGFtU2VjcmV0QXJuUHJlZml4ID0gKHJlZ2lvbjogc3RyaW5nKSA9PiBgYXJuOmF3czpzZWNyZXRzbWFuYWdlcjoke3JlZ2lvbn06JHtERVZFTE9QRVJfVE9PTFNfQUNDT1VOVF9JRH06c2VjcmV0Oi9kYXRhZG9nLWludGVncmF0aW9uL2xhdGFtYDtcbmNvbnN0IHNoYXJlZEV1U2VjcmV0QXJuUHJlZml4ID0gKHJlZ2lvbjogc3RyaW5nKSA9PiBgYXJuOmF3czpzZWNyZXRzbWFuYWdlcjoke3JlZ2lvbn06JHtERVZFTE9QRVJfVE9PTFNfQUNDT1VOVF9JRH06c2VjcmV0Oi9kYXRhZG9nLWludGVncmF0aW9uL2V1YDtcblxuY29uc3QgUkVTT1VSQ0VfSUQgPSAnX19PcmdDcmVkZW50aWFsc1NlY3JldF9fJztcbmNvbnN0IEFQSV9LRVlfUkVTT1VSQ0VfSUQgPSAnX19EYXRhZG9nQXBpS2V5U2hhcmVkU2VjcmV0X18nO1xuY29uc3QgQ1JFREVOVElBTFNfUkVTT1VSQ0VfSUQgPSAnX19EYXRhZG9nQ3JlZGVudGlhbHNTaGFyZWRTZWNyZXRfXyc7XG5cbi8qKlxuICogQSBjdXN0b20gcmVzb3VyY2UgdGhhdCByZXNvbHZlcyB0aGUgc2VjcmV0IEFSTiBiYXNlZCBvbiB0aGUgb3JnYW5pemF0aW9uIElELlxuICovXG5leHBvcnQgY2xhc3MgRGF0YWRvZ1NoYXJlZFNlY3JldCBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IGltcGxlbWVudHMgc2VjLklTZWNyZXQge1xuXG4gIC8qKlxuICAgKiBUaGlzIHN0YXRpYyBmdW5jdGlvbiByZXNvbHZlcyB0byB0aGUgcGxhaW4gYXBpLWtleSBzZWNyZXQsIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHRoZSBsb2cgZm9yd2FyZGVyIG9yIHRoZSBMYW1iZGEgaW5zdHJ1bWVudGF0aW9uLlxuICAgKi9cbiAgc3RhdGljIGFwaUtleVNlY3JldChzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QpIHtcbiAgICBjb25zdCBpZCA9IEFQSV9LRVlfUkVTT1VSQ0VfSUQ7XG4gICAgY29uc3Qgc3RhY2sgPSBjZGsuU3RhY2sub2Yoc2NvcGUpO1xuICAgIGlmIChzdGFjay5ub2RlLnRyeUZpbmRDaGlsZChpZCkpIHtcbiAgICAgIHJldHVybiBzdGFjay5ub2RlLmZpbmRDaGlsZChpZCkgYXMgRGF0YWRvZ1NoYXJlZFNlY3JldDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBEYXRhZG9nU2hhcmVkU2VjcmV0KHN0YWNrLCBpZCwgeyBzZWNyZXROYW1lOiAnc2hhcmVkLWFwaS1rZXknIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgc3RhdGljIGZ1bmN0aW9uIHJlc29sdmVzIHRvIHRoZSBqc29uIGNyZWRlbnRpYWxzIHNlY3JldCB0aGF0IGNvbnRhaW5zIFsnQXBpS2V5JywgJ0FwcGxpY2F0aW9uS2V5JywgJ1NpdGUnXS5cbiAgICovXG4gIHN0YXRpYyBjcmVkZW50aWFsc1NlY3JldChzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QpIHtcbiAgICBjb25zdCBpZCA9IENSRURFTlRJQUxTX1JFU09VUkNFX0lEO1xuICAgIGNvbnN0IHN0YWNrID0gY2RrLlN0YWNrLm9mKHNjb3BlKTtcbiAgICBpZiAoc3RhY2subm9kZS50cnlGaW5kQ2hpbGQoaWQpKSB7XG4gICAgICByZXR1cm4gc3RhY2subm9kZS5maW5kQ2hpbGQoaWQpIGFzIERhdGFkb2dTaGFyZWRTZWNyZXQ7XG4gICAgfVxuICAgIHJldHVybiBuZXcgRGF0YWRvZ1NoYXJlZFNlY3JldChzY29wZSwgaWQsIHsgc2VjcmV0TmFtZTogJ3NoYXJlZC1jcmVkZW50aWFscycgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBzZXR1cEN1c3RvbVJlc291cmNlKHN0YWNrOiBjZGsuU3RhY2spOiBjci5Qcm92aWRlciB7XG4gICAgY29uc3Qgc2VjcmV0TG9jYXRvckxhbWJkYSA9IG5ldyBsYW1iZGEuRnVuY3Rpb24oc3RhY2ssICdSZXNvbHZlU2VjcmV0QXJuSGFuZGxlcicsIHtcbiAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnc2VjcmV0LWxvY2F0b3ItY3VzdG9tLXJlc291cmNlJyksIHtcbiAgICAgICAgZXhjbHVkZTogWycqLmpzJywgJyouZC50cyddLFxuICAgICAgfSksXG4gICAgICBoYW5kbGVyOiAnb24tY3JlYXRlLmhhbmRsZXInLFxuICAgICAgcnVudGltZTogREVGQVVMVF9OT0RFX1JVTlRJTUUsXG4gICAgICBhcmNoaXRlY3R1cmU6IGxhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgbG9nR3JvdXA6IG5ldyBsb2dzLkxvZ0dyb3VwKHN0YWNrLCAnRGF0YWRvZ1NoYXJlZFNlY3JldEhhbmRsZXJMb2dHcm91cCcsIHtcbiAgICAgICAgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgICB9KSxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDYpLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgU0hBUkVEX0xBVEFNX1NFQ1JFVF9BUk5fUFJFRklYOiBzaGFyZWRMYXRhbVNlY3JldEFyblByZWZpeChzdGFjay5yZWdpb24pLFxuICAgICAgICBTSEFSRURfRVVfU0VDUkVUX0FSTl9QUkVGSVg6IHNoYXJlZEV1U2VjcmV0QXJuUHJlZml4KHN0YWNrLnJlZ2lvbiksXG4gICAgICAgIExBVEFNX0xBTkRJTkdfWk9ORV9PUkdfSUQ6IExBVEFNX0xBTkRJTkdfWk9ORV9PUkdfSUQsXG4gICAgICAgIEVVX0xBTkRJTkdfWk9ORV9PUkdfSUQ6IEVVX0xBTkRJTkdfWk9ORV9PUkdfSUQsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIC8vIHRvIHByZXZlbnQgaXNzdWVzIHdpdGggb3JkZXIgb2YgYXNwZWN0cyBpbiBDREssIHdlIG5lZWQgdG8gYWRkIHRoZSB0YWcgZGlyZWN0bHkuXG4gICAgbmV3IGNkay5UYWcoJ1dhdGNoZnVsJywgJ2ZhbHNlJykudmlzaXQoc2VjcmV0TG9jYXRvckxhbWJkYS5ub2RlLmRlZmF1bHRDaGlsZCEpO1xuXG4gICAgc2VjcmV0TG9jYXRvckxhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoeyBhY3Rpb25zOiBbJ29yZ2FuaXphdGlvbnM6RGVzY3JpYmVPcmdhbml6YXRpb24nXSwgcmVzb3VyY2VzOiBbJyonXSB9KSk7XG4gICAgc2VjcmV0TG9jYXRvckxhbWJkYS5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFsnc2VjcmV0c21hbmFnZXI6RGVzY3JpYmVTZWNyZXQnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbYGFybjphd3M6c2VjcmV0c21hbmFnZXI6JHtzdGFjay5yZWdpb259OiR7REVWRUxPUEVSX1RPT0xTX0FDQ09VTlRfSUR9OnNlY3JldDoqYF0sXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgY3IuUHJvdmlkZXIoc3RhY2ssIFJFU09VUkNFX0lELCB7XG4gICAgICBvbkV2ZW50SGFuZGxlcjogc2VjcmV0TG9jYXRvckxhbWJkYSxcbiAgICB9KTtcbiAgICAvLyB0byBwcmV2ZW50IGlzc3VlcyB3aXRoIG9yZGVyIG9mIGFzcGVjdHMgaW4gQ0RLLCB3ZSBuZWVkIHRvIGFkZCB0aGUgdGFnIGRpcmVjdGx5LlxuICAgIG5ldyBjZGsuVGFnKCdXYXRjaGZ1bCcsICdmYWxzZScpLnZpc2l0KHByb3ZpZGVyLm5vZGUuZmluZENoaWxkKCdmcmFtZXdvcmstb25FdmVudCcpLm5vZGUuZGVmYXVsdENoaWxkISk7XG4gICAgcmV0dXJuIHByb3ZpZGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWNyZXQ6IHNlYy5JU2VjcmV0O1xuICBwcml2YXRlIGN1c3RvbVJlc291cmNlOiBjci5Qcm92aWRlcjtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLklDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiB7c2VjcmV0TmFtZTogc3RyaW5nfSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBzdGFjayA9IGNkay5TdGFjay5vZih0aGlzKTtcbiAgICBpZiAoIXN0YWNrLm5vZGUudHJ5RmluZENoaWxkKFJFU09VUkNFX0lEKSkge1xuICAgICAgdGhpcy5jdXN0b21SZXNvdXJjZSA9IERhdGFkb2dTaGFyZWRTZWNyZXQuc2V0dXBDdXN0b21SZXNvdXJjZShzdGFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VzdG9tUmVzb3VyY2UgPSBzdGFjay5ub2RlLmZpbmRDaGlsZChSRVNPVVJDRV9JRCkgYXMgY3IuUHJvdmlkZXI7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VjcmV0TG9jYXRvciA9IG5ldyBjZGsuQ3VzdG9tUmVzb3VyY2UodGhpcywgJ0RhdGFkb2dTaGFyZWRTZWNyZXQnLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IHRoaXMuY3VzdG9tUmVzb3VyY2Uuc2VydmljZVRva2VuLFxuICAgICAgcGFzY2FsQ2FzZVByb3BlcnRpZXM6IHRydWUsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHNlY3JldE5hbWU6IHByb3BzLnNlY3JldE5hbWUsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5zZWNyZXQgPSBzZWMuU2VjcmV0LmZyb21TZWNyZXRDb21wbGV0ZUFybih0aGlzLCAnUmVzb3VyY2UnLCBzZWNyZXRMb2NhdG9yLmdldEF0dCgnU2VjcmV0QXJuJykudG9TdHJpbmcoKSk7XG4gIH1cblxuICBnZXQgc3RhY2soKTogY2RrLlN0YWNrIHtcbiAgICByZXR1cm4gdGhpcy5zZWNyZXQuc3RhY2s7XG4gIH1cblxuICBnZXQgZW52KCk6IGNkay5SZXNvdXJjZUVudmlyb25tZW50IHtcbiAgICByZXR1cm4gdGhpcy5zZWNyZXQuZW52O1xuICB9XG5cbiAgZ2V0IGVuY3J5cHRpb25LZXkoKSA6IGNkay5hd3Nfa21zLklLZXkgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgc2VjcmV0QXJuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2VjcmV0LnNlY3JldEFybjtcbiAgfTtcblxuICBnZXQgc2VjcmV0RnVsbEFybigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnNlY3JldC5zZWNyZXRGdWxsQXJuO1xuICB9XG5cbiAgZ2V0IHNlY3JldE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zZWNyZXQuc2VjcmV0TmFtZTtcbiAgfVxuXG4gIGdldCBzZWNyZXRWYWx1ZSgpOiBjZGsuU2VjcmV0VmFsdWUge1xuICAgIHJldHVybiB0aGlzLnNlY3JldC5zZWNyZXRWYWx1ZTtcbiAgfVxuXG4gIHNlY3JldFZhbHVlRnJvbUpzb24oa2V5OiBzdHJpbmcpOiBjZGsuU2VjcmV0VmFsdWUge1xuICAgIHJldHVybiB0aGlzLnNlY3JldC5zZWNyZXRWYWx1ZUZyb21Kc29uKGtleSk7XG4gIH1cblxuICBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIHZlcnNpb25TdGFnZXM/OiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgY29uc3QgcmVzdWx0ID0gZ3JhbnRlZS5ncmFudFByaW5jaXBhbC5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBhY3Rpb25zOiBbJ2ttczpEZWNyeXB0J10sXG4gICAgICByZXNvdXJjZXM6IFtgYXJuOmF3czprbXM6Kjoke0RFVkVMT1BFUl9UT09MU19BQ0NPVU5UX0lEfTprZXkvKmBdLFxuICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICAnRm9yQW55VmFsdWU6U3RyaW5nTGlrZSc6IHtcbiAgICAgICAgICAna21zOlJlc291cmNlQWxpYXNlcyc6ICdhbGlhcy9kYXRhZG9nLWludGVncmF0aW9uLXNoYXJlZC1jcmVkZW50aWFscy1rZXknLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KSk7XG4gICAgaWYgKCFyZXN1bHQuc3RhdGVtZW50QWRkZWQpIHtcbiAgICAgIGNkay5Bbm5vdGF0aW9ucy5vZih0aGlzKS5hZGRXYXJuaW5nKCdDb3VsZCBub3QgYWRkIHN0YXRlbWVudCB0byB0aGUgcHJpbmNpcGFsIHBvbGljeS4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2VjcmV0LmdyYW50UmVhZChncmFudGVlLCB2ZXJzaW9uU3RhZ2VzKTtcbiAgfVxuXG4gIGdyYW50V3JpdGUoX2dyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgYWxsb3dlZC4nKTtcbiAgfVxuXG4gIGFkZFJvdGF0aW9uU2NoZWR1bGUoX2lkOiBzdHJpbmcsIF9vcHRpb25zOiBzZWMuUm90YXRpb25TY2hlZHVsZU9wdGlvbnMpOiBzZWMuUm90YXRpb25TY2hlZHVsZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGFsbG93ZWQuJyk7XG4gIH1cblxuICBhZGRUb1Jlc291cmNlUG9saWN5KF9zdGF0ZW1lbnQ6IGlhbS5Qb2xpY3lTdGF0ZW1lbnQpOiBpYW0uQWRkVG9SZXNvdXJjZVBvbGljeVJlc3VsdCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGFsbG93ZWQuJyk7XG4gIH1cblxuICBkZW55QWNjb3VudFJvb3REZWxldGUoKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGFsbG93ZWQuJyk7XG4gIH1cblxuICBhdHRhY2goX3RhcmdldDogc2VjLklTZWNyZXRBdHRhY2htZW50VGFyZ2V0KTogc2VjLklTZWNyZXQge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBhbGxvd2VkLicpO1xuICB9XG5cbiAgYXBwbHlSZW1vdmFsUG9saWN5KF9wb2xpY3k6IGNkay5SZW1vdmFsUG9saWN5KTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGFsbG93ZWQuJyk7XG4gIH1cblxufVxuIl19
|
|
@@ -18,6 +18,7 @@ const constructs = require("constructs");
|
|
|
18
18
|
const datadog = require("./datadog");
|
|
19
19
|
const rio_fargate_service_1 = require("./rio-fargate-service");
|
|
20
20
|
const spring_1 = require("./spring");
|
|
21
|
+
const constants_1 = require("../constants");
|
|
21
22
|
class RioFargateServiceBlueGreenAlpha extends constructs.Construct {
|
|
22
23
|
constructor(scope, id, props) {
|
|
23
24
|
super(scope, id);
|
|
@@ -235,7 +236,7 @@ class RioFargateServiceBlueGreenAlpha extends constructs.Construct {
|
|
|
235
236
|
exclude: ['*.js', '*.d.ts'],
|
|
236
237
|
}),
|
|
237
238
|
handler: 'create-deployment-on-create.handler',
|
|
238
|
-
runtime:
|
|
239
|
+
runtime: constants_1.DEFAULT_NODE_RUNTIME,
|
|
239
240
|
architecture: lambda.Architecture.ARM_64,
|
|
240
241
|
timeout: cdk.Duration.minutes(5),
|
|
241
242
|
logGroup: new logs.LogGroup(this, 'CreateDeploymentLambdaLogGroup', {
|
|
@@ -274,7 +275,7 @@ class RioFargateServiceBlueGreenAlpha extends constructs.Construct {
|
|
|
274
275
|
exclude: ['*.js', '*.d.ts'],
|
|
275
276
|
}),
|
|
276
277
|
handler: 'create-deployment-is-complete.handler',
|
|
277
|
-
runtime:
|
|
278
|
+
runtime: constants_1.DEFAULT_NODE_RUNTIME,
|
|
278
279
|
architecture: lambda.Architecture.ARM_64,
|
|
279
280
|
timeout: cdk.Duration.minutes(5),
|
|
280
281
|
logGroup: new logs.LogGroup(this, 'IsCompleteDeploymentLambdaLogGroup', {
|
|
@@ -300,7 +301,7 @@ class RioFargateServiceBlueGreenAlpha extends constructs.Construct {
|
|
|
300
301
|
// entry: './src/fargate/codedeploy-custom-resources/run-monitoring-test-suite-runner.ts',
|
|
301
302
|
// handler: 'handler',
|
|
302
303
|
// timeout: cdk.Duration.minutes(5),
|
|
303
|
-
// runtime:
|
|
304
|
+
// runtime: DEFAULT_NODE_RUNTIME,
|
|
304
305
|
// environment: {
|
|
305
306
|
// CAPABILITIES_NAME: blueGreenDeploymentConfig.capabilityNames.join(','),
|
|
306
307
|
// SUBNETS: vpc.selectSubnets({ subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS }).subnetIds.join(','),
|
|
@@ -311,7 +312,7 @@ class RioFargateServiceBlueGreenAlpha extends constructs.Construct {
|
|
|
311
312
|
exclude: ['*.js', '*.d.ts'],
|
|
312
313
|
}),
|
|
313
314
|
handler: 'run-monitoring-test-suite-runner.handler',
|
|
314
|
-
runtime:
|
|
315
|
+
runtime: constants_1.DEFAULT_NODE_RUNTIME,
|
|
315
316
|
architecture: lambda.Architecture.ARM_64,
|
|
316
317
|
timeout: cdk.Duration.minutes(5),
|
|
317
318
|
logGroup: new logs.LogGroup(this, 'RunMonitoringTestSuiteRunnerLambdarLogGroup', {
|
|
@@ -412,4 +413,4 @@ class ClusterVpcValidator {
|
|
|
412
413
|
return result;
|
|
413
414
|
}
|
|
414
415
|
}
|
|
415
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlvLWZhcmdhdGUtc2VydmljZS1ibHVlLWdyZWVuLWFscGhhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZhcmdhdGUvcmlvLWZhcmdhdGUtc2VydmljZS1ibHVlLWdyZWVuLWFscGhhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQTRCO0FBQzVCLG1DQUFtQztBQUNuQyx5REFBeUQ7QUFDekQsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQyxnRUFBZ0U7QUFDaEUsMkNBQTJDO0FBQzNDLGlEQUFpRDtBQUVqRCw2Q0FBNkM7QUFDN0MsMkNBQTJDO0FBQzNDLG1EQUFtRDtBQUNuRCx5Q0FBeUM7QUFDekMscUNBQXFDO0FBQ3JDLCtEQUE0SztBQUM1SyxxQ0FBa0M7QUFnRmxDLE1BQWEsK0JBQ1gsU0FBUSxVQUFVLENBQUMsU0FBUztJQWtENUIsWUFDRSxLQUEyQixFQUMzQixFQUFVLEVBQ1YsS0FBMkM7UUFFM0MsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQWxDRix3Q0FBbUMsR0FBYSxFQUFFLENBQUM7UUFDbkQsZ0NBQTJCLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLDZDQUF3QyxHQUFHLEdBQUcsQ0FBQztRQUMvQyxzQ0FBaUMsR0FBRyxJQUFJLENBQUM7UUFDekMscUNBQWdDLEdBQy9DLHdDQUFrQixDQUFDLGdCQUFnQixDQUFDO1FBQ3JCLDZDQUF3QyxHQUN2RCx3Q0FBa0IsQ0FBQyxJQUFJLENBQUM7UUFDVCxpQ0FBNEIsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RCx1QkFBa0IsR0FBRyxTQUFTLENBQUM7UUFDL0IsZ0NBQTJCLEdBQUcsUUFBUSxDQUFDO1FBRXZDLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLGdDQUEyQixHQUFHLEVBQUUsQ0FBQztRQUVqQywrQkFBMEIsR0FDekMsbUVBQW1FLENBQUM7UUFDckQsOEJB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QUksQ0FBQyxFQUFFLElBQUksQ0FDL0gsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgY29kZWRlcGxveSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWRlcGxveSc7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgKiBhcyBlY3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcyc7XG5pbXBvcnQgKiBhcyBlbGJ2MiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBub2RlanNsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanMnO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgKiBhcyBzc20gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNzbSc7XG5pbXBvcnQgKiBhcyBjciBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzJztcbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBkYXRhZG9nIGZyb20gJy4vZGF0YWRvZyc7XG5pbXBvcnQgeyBGcmFtZXdvcmssIENvbnRhaW5lckRlZmluaXRpb25PcHRpb25zLCBGYXJnYXRlVGFza0RlZmluaXRpb25Qcm9wcywgTG9hZEJhbGFuY2VyT3B0aW9ucywgRGF0YWRvZ0ludGVncmF0aW9uUHJvcHMsIERhdGFEb2dMb2dnaW5nTW9kZSB9IGZyb20gJy4vcmlvLWZhcmdhdGUtc2VydmljZSc7XG5pbXBvcnQgeyBTcHJpbmcgfSBmcm9tICcuL3NwcmluZyc7XG5cbi8qKlxuICogRmFyZ2F0ZSBUYXNrIERlZmluaXRpb24gUHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSaW9GYXJnYXRlU2VydmljZUJsdWVHcmVlbkFscGhhUHJvcHMge1xuICAvKipcbiAgICogVGhlIHN0YWdlIG9mIHRoZSBzZXJ2aWNlLCBlLmcuICdwcm9kJy5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBOYW1lIG9mIHRoZSBzZXJ2aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIHNlcnZpY2UsIGUuZy4gdGhlIGdpdCBoYXNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIGNvbW1pdC5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGZyYW1ld29ya3MgaW4gdXNlcy5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSAtIE5vIGZyYW1ld29ya3MuXG4gICAqL1xuICByZWFkb25seSBmcmFtZXdvcmtzPzogRnJhbWV3b3JrW107XG5cbiAgLyoqXG4gICAqIFRoZSBWUEMgb2YgdGhlIHNlcnZpY2UncyBlY3MuQ2x1c3RlciBpZiBubyBjbHVzdGVyIGlzIGV4cGxpY2l0bHkgcGFzc2VkIGFzIHByb3AuXG4gICAqL1xuICByZWFkb25seSB2cGM6IGVjMi5JVnBjO1xuXG4gIC8qKlxuICAgKiBUaGUgRmFyZ2F0ZSBjbHVzdGVyIHRvIHJ1biB0aGUgc2VydmljZSBpbi5cbiAgICogSWYgbm90IG51bGwsIHRoZSBjbHVzdGVyLnZwYyBNVVNUIG1hdGNoIHRoZSB2cGMgcHJvdmlkZWQgYXMgZGlyZWN0IGFyZ3VtZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIC0gQ3JlYXRlIGEgbmV3IEZhcmdhdGUgY2x1c3RlciB3aXRoIGRlZmF1bHQgcHJvcGVydGllc1xuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3Rlcj86IGVjcy5JQ2x1c3RlcjtcblxuICAvKipcbiAgICogQ29udGFpbmVyIGRlZmluaXRpb24gb3B0aW9ucyBsaWtlIGltYWdlLCBjcHUsIG1lbW9yeS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhaW5lckRlZmluaXRpb25PcHRpb246IENvbnRhaW5lckRlZmluaXRpb25PcHRpb25zO1xuXG4gIC8qKlxuICAgKiBGYXJnYXRlIFRhc2sgRGVmaW5pdGlvbiBQcm9wZXJ0aWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgZmFyZ2F0ZU9wdGlvbnM6IEZhcmdhdGVUYXNrRGVmaW5pdGlvblByb3BzO1xuXG4gIC8qKlxuICAgKiBMb2FkYmFsYW5jZXIgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGxvYWRCYWxhbmNlck9wdGlvbnM/OiBMb2FkQmFsYW5jZXJPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBEYXRhZG9nIGludGVncmF0aW9uIHByb3BlcnRpZXNcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFkb2dPcHRpb25zPzogRGF0YWRvZ0ludGVncmF0aW9uUHJvcHM7XG5cbiAgLyoqXG4gICAqIEJsdWUgZ3JlZW4gZGVwbG95bWVudCBjb25maWd1cmF0aW9uXG4gICAqL1xuICByZWFkb25seSBibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnPzogQmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCbHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnIHtcbiAgLyoqXG4gICAgICogVGhlIHRhcmdldCBncm91cCB0byBhc3NvY2lhdGUgd2l0aCB0aGUgcmVwbGFjZW1lbnQgdGFzayBzZXQgZm9yIHRlc3RpbmcgYmVmb3JlIHByb21vdGluZyB0cmFmZmljIHRvIHByb2R1Y3Rpb24uXG4gICAgICogQGRlZmF1bHQgLSBObyB0YXJnZXQgZ3JvdXAuXG4gICAgICovXG4gIHJlYWRvbmx5IHRlc3RMaXN0ZW5lcj86IGVsYnYyLklBcHBsaWNhdGlvbkxpc3RlbmVyO1xuXG4gIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIGNhcGFiaWxpdGllcyB0byBydW4gd2l0aCB0aGUgbW9uaXRvcmluZyB0ZXN0IHN1aXRlIHJ1bm5lciB0ZXN0aW5nXG4gICAgICovXG4gIHJlYWRvbmx5IGNhcGFiaWxpdHlOYW1lcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgUmlvRmFyZ2F0ZVNlcnZpY2VCbHVlR3JlZW5BbHBoYVxuICBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0XG4gIGltcGxlbWVudHMgZWMyLklDb25uZWN0YWJsZSB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEREX0VOVl9ERU5ZX0xJU1QgPSBbXG4gICAgJ0REX0VOVicsXG4gICAgJ0REX1RBR1MnLFxuICAgICdERF9TRVJWSUNFJyxcbiAgICAnRERfVkVSU0lPTicsXG4gICAgJ0REX0xPR1NfSU5KRUNUSU9OJyxcbiAgXTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERF9UQUdfREVOWV9MSVNUID0gW1xuICAgICdlbnYnLFxuICAgICdzZXJ2aWNlJyxcbiAgICAndmVyc2lvbicsXG4gICAgJ2FjY291bnRfaWQnLFxuICAgICdhY2NvdW50X25hbWUnLFxuICAgICdyZWdpb24nLFxuICAgICd0ZWFtJyxcbiAgICAndGVhbV9pZGVudGlmaWVyJyxcbiAgXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfQVBNX0dFVF9FTkRQT0lOVFNfVE9fSUdOT1JFOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQURPR19TSURFQ0FSX0NQVSA9IDY0O1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQURPR19TSURFQ0FSX01FTU9SWV9MSU1JVF9NSUIgPSAxMjg7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfRVNTRU5USUFMID0gdHJ1ZTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0xPR0dJTkdfTU9ERV9GT1JfU0VSVklDRSA9XG4gICAgRGF0YURvZ0xvZ2dpbmdNb2RlLkZPUldBUkRFUl9MQU1CREE7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9MT0dHSU5HX01PREVfRk9SX0RBVEFET0dfU0lERUNBUiA9XG4gICAgRGF0YURvZ0xvZ2dpbmdNb2RlLk5PTkU7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9ERVJFR0lTVFJBVElPTl9ERUxBWSA9IGNkay5EdXJhdGlvbi5zZWNvbmRzKDUpO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfU0xPV19TVEFSVCA9IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RBVEFET0dfU0lERUNBUl9UQUcgPSAnbGF0ZXN0JztcblxuICBwcml2YXRlIHJlYWRvbmx5IExPR19ST1VURVJfQ1BVID0gNjQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgTE9HX1JPVVRFUl9NRU1PUllfTElNSVRfTUlCID0gNjQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBGSVJFTEVOU19DT05GSUdfQlVDS0VUX0FSTiA9XG4gICAgJ2Fybjphd3M6czM6Ojo1NzcxNDY4OTc3ODUtZXUtd2VzdC0xLWZpcmVsZW5zLWNvbmZpZ3VyYXRpb24tYnVja2V0JztcbiAgcHJpdmF0ZSByZWFkb25seSBGSVJFTEVOU19DT05GSUdfRklMRV9QQVRIID0gJy9wYXJzZS1qc29uLmNvbmYnO1xuXG4gIHJlYWRvbmx5IHNlcnZpY2VDb250YWluZXJEZWZpbml0aW9uOiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbjtcbiAgcmVhZG9ubHkgZGF0YWRvZ1NpZGVDYXJDb250YWluZXJEZWZpbml0aW9uOiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbjtcbiAgcmVhZG9ubHkgbG9nUm91dGVyQ29udGFpbmVyRGVmaW5pdGlvbj86IGVjcy5Db250YWluZXJEZWZpbml0aW9uO1xuICByZWFkb25seSB0YXNrRGVmaW5pdGlvbjogZWNzLkZhcmdhdGVUYXNrRGVmaW5pdGlvbjtcblxuICByZWFkb25seSBjb25uZWN0aW9uczogZWMyLkNvbm5lY3Rpb25zO1xuICByZWFkb25seSBzZXJ2aWNlOiBlY3MuRmFyZ2F0ZVNlcnZpY2U7XG4gIHJlYWRvbmx5IGJsdWVUYXJnZXRHcm91cDogZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cCB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgZ3JlZW5UYXJnZXRHcm91cDogZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cCB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogUmlvRmFyZ2F0ZVNlcnZpY2VCbHVlR3JlZW5BbHBoYVByb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3Qge1xuICAgICAgbG9hZEJhbGFuY2VyT3B0aW9ucyxcbiAgICAgIHZwYyxcbiAgICAgIGNsdXN0ZXIsXG4gICAgICBmYXJnYXRlT3B0aW9ucyxcbiAgICAgIGRhdGFkb2dPcHRpb25zLFxuICAgICAgc2VydmljZU5hbWUsXG4gICAgICBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uLFxuICAgICAgc3RhZ2UsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgZnJhbWV3b3JrcyxcbiAgICAgIGJsdWVHcmVlbkRlcGxveW1lbnRDb25maWcsXG4gICAgfSA9IHByb3BzO1xuXG4gICAgdGhpcy5ub2RlLmFkZFZhbGlkYXRpb24oXG4gICAgICBuZXcgRGVueUxpc3RlZEtleVZhbGlkYXRvcihcbiAgICAgICAgUmlvRmFyZ2F0ZVNlcnZpY2VCbHVlR3JlZW5BbHBoYS5ERF9FTlZfREVOWV9MSVNULFxuICAgICAgICBwcm9wcy5jb250YWluZXJEZWZpbml0aW9uT3B0aW9uLmVudmlyb25tZW50LFxuICAgICAgICAoaXQpID0+XG4gICAgICAgICAgYEVudmlyb25tZW50ICR7aXR9IGlzIG5vdCBhbGxvd2VkIHRvIGJlIHNldC4gVGhpcyB2YWx1ZSB3aWxsIGJlIGluZmVycmVkIGZyb20gdGhlIGFjY291bnQgb3Igb3RoZXIgcHJvcGVydGllcy5gLFxuICAgICAgKSxcbiAgICApO1xuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKFxuICAgICAgbmV3IERlbnlMaXN0ZWRLZXlWYWxpZGF0b3IoXG4gICAgICAgIFJpb0ZhcmdhdGVTZXJ2aWNlQmx1ZUdyZWVuQWxwaGEuRERfVEFHX0RFTllfTElTVCxcbiAgICAgICAgcHJvcHMuZGF0YWRvZ09wdGlvbnM/LmFkZGl0aW9uYWxUYWdzLFxuICAgICAgICAoaXQpID0+XG4gICAgICAgICAgYFRhZyAke2l0fSBpcyBub3QgYWxsb3dlZCB0byBiZSBzZXQuIFRoaXMgdmFsdWUgd2lsbCBiZSBpbmZlcnJlZCBmcm9tIHRoZSBhY2NvdW50IG9yIG90aGVyIHByb3BlcnRpZXMuYCxcbiAgICAgICksXG4gICAgKTtcblxuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKG5ldyBDbHVzdGVyVnBjVmFsaWRhdG9yKHByb3BzLnZwYywgcHJvcHMuY2x1c3RlcikpO1xuXG4gICAgY29uc3QgZmFyZ2F0ZUNsdXN0ZXIgPVxuICAgICAgY2x1c3RlciA/P1xuICAgICAgbmV3IGVjcy5DbHVzdGVyKHRoaXMsICdDbHVzdGVyJywge1xuICAgICAgICB2cGM6IHZwYyxcbiAgICAgIH0pO1xuICAgIHRoaXMudGFza0RlZmluaXRpb24gPSBuZXcgZWNzLkZhcmdhdGVUYXNrRGVmaW5pdGlvbihcbiAgICAgIHRoaXMsXG4gICAgICAnVGFza0RlZmluaXRpb24nLFxuICAgICAge1xuICAgICAgICBjcHU6IGZhcmdhdGVPcHRpb25zLmNwdSxcbiAgICAgICAgbWVtb3J5TGltaXRNaUI6IGZhcmdhdGVPcHRpb25zLm1lbW9yeUxpbWl0TWlCLFxuICAgICAgICBydW50aW1lUGxhdGZvcm06IHtcbiAgICAgICAgICBjcHVBcmNoaXRlY3R1cmU6XG4gICAgICAgICAgICBmYXJnYXRlT3B0aW9ucy5ydW50aW1lUGxhdGZvcm0/LmNwdUFyY2hpdGVjdHVyZSA/P1xuICAgICAgICAgICAgZWNzLkNwdUFyY2hpdGVjdHVyZS5YODZfNjQsXG4gICAgICAgICAgb3BlcmF0aW5nU3lzdGVtRmFtaWx5OlxuICAgICAgICAgICAgZmFyZ2F0ZU9wdGlvbnMucnVudGltZVBsYXRmb3JtPy5vcGVyYXRpbmdTeXN0ZW1GYW1pbHkgPz9cbiAgICAgICAgICAgIGVjcy5PcGVyYXRpbmdTeXN0ZW1GYW1pbHkuTElOVVgsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICk7XG4gICAgY29uc3QgYWNjb3VudE5hbWUgPSBzc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKFxuICAgICAgdGhpcyxcbiAgICAgICdBY2NvdW50TmFtZScsXG4gICAgICAnL2NvbmZpZy9hY2NvdW50L25hbWUnLFxuICAgICkuc3RyaW5nVmFsdWU7XG4gICAgY29uc3QgdGVhbU5hbWUgPSBzc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKFxuICAgICAgdGhpcyxcbiAgICAgICdUZWFtTmFtZScsXG4gICAgICAnL2NvbmZpZy90ZWFtL25hbWUnLFxuICAgICkuc3RyaW5nVmFsdWU7XG4gICAgY29uc3QgdGVhbUlkZW50aWZpZXIgPSBzc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKFxuICAgICAgdGhpcyxcbiAgICAgICdUZWFtSWRlbnRpZmllcicsXG4gICAgICAnL2NvbmZpZy90ZWFtL2lkZW50aWZpZXInLFxuICAgICkuc3RyaW5nVmFsdWU7XG5cbiAgICBjb25zdCBkYXRhZG9nU2l0ZSA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUoXG4gICAgICB0aGlzLFxuICAgICAgJ0RhdGFkb2dTaXRlJyxcbiAgICAgICcvcmlvL2NvbmZpZy9kYXRhZG9nLWludGVncmF0aW9uL3NpdGUnLFxuICAgICkuc3RyaW5nVmFsdWU7XG4gICAgY29uc3QgZGF0YWRvZ0FwaUtleVBhcmFtZXRlciA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUoXG4gICAgICB0aGlzLFxuICAgICAgJ0RhdGFkb2dBcGlLZXknLFxuICAgICAgJy9yaW8vY29uZmlnL2RhdGFkb2ctaW50ZWdyYXRpb24vYXBpLWtleScsXG4gICAgKTtcblxuICAgIGNvbnN0IGRhdGFkb2dTaWRlY2FyQ3B1ID1cbiAgICAgIGRhdGFkb2dPcHRpb25zPy5jcHUgPz8gdGhpcy5ERUZBVUxUX0RBVEFET0dfU0lERUNBUl9DUFU7XG4gICAgY29uc3QgZGF0YWRvZ1NpZGVjYXJNZW1vcnlNaUIgPVxuICAgICAgZGF0YWRvZ09wdGlvbnM/Lm1lbW9yeUxpbWl0TWlCID8/XG4gICAgICB0aGlzLkRFRkFVTFRfREFUQURPR19TSURFQ0FSX01FTU9SWV9MSU1JVF9NSUI7XG4gICAgY29uc3QgZGF0YWRvZ1NpZGVjYXJFc3NlbnRpYWwgPVxuICAgICAgZGF0YWRvZ09wdGlvbnM/LmRhdGFkb2dTaWRlY2FyRXNzZW50aWFsID8/XG4gICAgICB0aGlzLkRFRkFVTFRfREFUQURPR19TSURFQ0FSX0VTU0VOVElBTDtcblxuICAgIGNvbnN0IGxvZ2dpbmdNb2RlRm9yU2VydmljZSA9XG4gICAgICBkYXRhZG9nT3B0aW9ucz8ubG9nZ2luZ01vZGVGb3JTZXJ2aWNlID8/XG4gICAgICB0aGlzLkRFRkFVTFRfTE9HR0lOR19NT0RFX0ZPUl9TRVJWSUNFO1xuICAgIGNvbnN0IGxvZ2dpbmdNb2RlRm9yRGF0YWRvZ0FnZW50ID1cbiAgICAgIGRhdGFkb2dPcHRpb25zPy5sb2dnaW5nTW9kZUZvckRhdGFkb2dBZ2VudCA/P1xuICAgICAgdGhpcy5ERUZBVUxUX0xPR0dJTkdfTU9ERV9GT1JfREFUQURPR19TSURFQ0FSO1xuICAgIGNvbnN0IGZpcmVMZW5zTG9nUm91dGVyUmVxdWlyZWQgPVxuICAgICAgbG9nZ2luZ01vZGVGb3JTZXJ2aWNlID09PSBEYXRhRG9nTG9nZ2luZ01vZGUuQVdTX0ZJUkVfTEVOUyB8fFxuICAgICAgbG9nZ2luZ01vZGVGb3JEYXRhZG9nQWdlbnQgPT09IERhdGFEb2dMb2dnaW5nTW9kZS5BV1NfRklSRV9MRU5TO1xuXG4gICAgbGV0IHNlcnZpY2VDb250YWluZXJDcHVVbml0cztcbiAgICBsZXQgc2VydmljZUNvbnRhaW5lck1lbW9yeUxpbWl0TWlCO1xuXG4gICAgaWYgKGZpcmVMZW5zTG9nUm91dGVyUmVxdWlyZWQpIHtcbiAgICAgIHNlcnZpY2VDb250YWluZXJDcHVVbml0cyA9XG4gICAgICAgIGZhcmdhdGVPcHRpb25zLmNwdSAtIGRhdGFkb2dTaWRlY2FyQ3B1IC0gdGhpcy5MT0dfUk9VVEVSX0NQVTtcbiAgICAgIHNlcnZpY2VDb250YWluZXJNZW1vcnlMaW1pdE1pQiA9XG4gICAgICAgIGZhcmdhdGVPcHRpb25zLm1lbW9yeUxpbWl0TWlCIC1cbiAgICAgICAgZGF0YWRvZ1NpZGVjYXJNZW1vcnlNaUIgLVxuICAgICAgICB0aGlzLkxPR19ST1VURVJfTUVNT1JZX0xJTUlUX01JQjtcbiAgICAgIGRhdGFkb2cuYWRkRmlyZWxlbnNDb25maWdVcGxvYWRGcm9tUzNQZXJtaXNzaW9ucyh7XG4gICAgICAgIHRhc2tEZWZpbml0aW9uOiB0aGlzLnRhc2tEZWZpbml0aW9uLFxuICAgICAgICBmaXJlbGVuc0NvbmZpZ0J1Y2tldEFybjogdGhpcy5GSVJFTEVOU19DT05GSUdfQlVDS0VUX0FSTixcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXJ2aWNlQ29udGFpbmVyQ3B1VW5pdHMgPSBmYXJnYXRlT3B0aW9ucy5jcHUgLSBkYXRhZG9nU2lkZWNhckNwdTtcbiAgICAgIHNlcnZpY2VDb250YWluZXJNZW1vcnlMaW1pdE1pQiA9XG4gICAgICAgIGZhcmdhdGVPcHRpb25zLm1lbW9yeUxpbWl0TWlCIC0gZGF0YWRvZ1NpZGVjYXJNZW1vcnlNaUI7XG4gICAgfVxuICAgIHRoaXMuc2VydmljZUNvbnRhaW5lckRlZmluaXRpb24gPSB0aGlzLnRhc2tEZWZpbml0aW9uLmFkZENvbnRhaW5lcihcbiAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAge1xuICAgICAgICBpbWFnZTogY29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbi5pbWFnZSxcbiAgICAgICAgY3B1OiBzZXJ2aWNlQ29udGFpbmVyQ3B1VW5pdHMsXG4gICAgICAgIG1lbW9yeUxpbWl0TWlCOiBzZXJ2aWNlQ29udGFpbmVyTWVtb3J5TGltaXRNaUIsXG4gICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgLi4uZGF0YWRvZy5nZXRGYXJnYXRlQ29udGFpbmVyRW52aXJvbm1lbnRWYXJpYWJsZXMoe1xuICAgICAgICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICAgICAgICBzdGFnZSxcbiAgICAgICAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgICAgICAgdmVyc2lvbixcbiAgICAgICAgICAgIGFjY291bnROYW1lLFxuICAgICAgICAgICAgdGVhbU5hbWUsXG4gICAgICAgICAgICB0ZWFtSWRlbnRpZmllcixcbiAgICAgICAgICAgIGFkZGl0aW9uYWxUYWdzOiBkYXRhZG9nT3B0aW9ucz8uYWRkaXRpb25hbFRhZ3MsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgLi4uY29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbi5lbnZpcm9ubWVudCxcbiAgICAgICAgfSxcbiAgICAgICAgZG9ja2VyTGFiZWxzOiB7XG4gICAgICAgICAgLi4uZGF0YWRvZy5nZXRGYXJnYXRlRG9ja2VyTGFiZWxzKHsgc3RhZ2UsIHNlcnZpY2VOYW1lLCB2ZXJzaW9uIH0pLFxuICAgICAgICB9LFxuICAgICAgICBoZWFsdGhDaGVjazogY29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbi5oZWFsdGhDaGVjayxcbiAgICAgICAgbG9nZ2luZzogZGF0YWRvZy5zZXR1cExvZ2dpbmcoe1xuICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgIGFjY291bnROYW1lLFxuICAgICAgICAgIHRlYW1OYW1lLFxuICAgICAgICAgIHRlYW1JZGVudGlmaWVyLFxuICAgICAgICAgIHN0YWdlLFxuICAgICAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgICAgIHZlcnNpb24sXG4gICAgICAgICAgZGF0YWRvZ0FwaUtleVBhcmFtZXRlcixcbiAgICAgICAgICBkYXRhZG9nTG9nZ2luZ01vZGU6IGxvZ2dpbmdNb2RlRm9yU2VydmljZSxcbiAgICAgICAgICBkYXRhZG9nU2l0ZSxcbiAgICAgICAgICBjb250YWluZXJUeXBlOiAnc2VydmljZScsXG4gICAgICAgICAgYWRkaXRpb25hbFRhZ3M6IGRhdGFkb2dPcHRpb25zPy5hZGRpdGlvbmFsVGFncyxcbiAgICAgICAgfSksXG4gICAgICAgIHNlY3JldHM6IGNvbnRhaW5lckRlZmluaXRpb25PcHRpb24uc2VjcmV0cyxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGlmIChmcmFtZXdvcmtzPy5pbmNsdWRlcyhGcmFtZXdvcmsuU1BSSU5HKSkge1xuICAgICAgU3ByaW5nLmFsbG93UGFyYW1ldGVyU3RvcmVBY2Nlc3NGb3JTcHJpbmdDbG91ZEF3cyhcbiAgICAgICAgdGhpcyxcbiAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgIHRoaXMudGFza0RlZmluaXRpb24udGFza1JvbGUsXG4gICAgICApO1xuICAgICAgU3ByaW5nLmFsbG93U2VjcmV0c01hbmFnZXJBY2Nlc3NGb3JTcHJpbmdDbG91ZEF3cyhcbiAgICAgICAgdGhpcyxcbiAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgIHRoaXMudGFza0RlZmluaXRpb24udGFza1JvbGUsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChmaXJlTGVuc0xvZ1JvdXRlclJlcXVpcmVkKSB7XG4gICAgICB0aGlzLmxvZ1JvdXRlckNvbnRhaW5lckRlZmluaXRpb24gPSBkYXRhZG9nLmFkZEZpcmVMZW5zTG9nUm91dGVyKHtcbiAgICAgICAgdGFza0RlZmluaXRpb246IHRoaXMudGFza0RlZmluaXRpb24sXG4gICAgICAgIGNwdTogdGhpcy5MT0dfUk9VVEVSX0NQVSxcbiAgICAgICAgbWVtb3J5TGltaXRNaUI6IHRoaXMuTE9HX1JPVVRFUl9NRU1PUllfTElNSVRfTUlCLFxuICAgICAgICBmaXJlbGVuc0NvbmZpZ0J1Y2tldEFybjogdGhpcy5GSVJFTEVOU19DT05GSUdfQlVDS0VUX0FSTixcbiAgICAgICAgZmlyZWxlbnNDb25maWdGaWxlUGF0aDogdGhpcy5GSVJFTEVOU19DT05GSUdfRklMRV9QQVRILFxuICAgICAgICBzZXJ2aWNlTmFtZTogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5kYXRhZG9nU2lkZUNhckNvbnRhaW5lckRlZmluaXRpb24gPSBkYXRhZG9nLmFkZERhdGFkb2dTaWRlY2FyKHtcbiAgICAgIHNjb3BlLFxuICAgICAgdGFza0RlZmluaXRpb246IHRoaXMudGFza0RlZmluaXRpb24sXG4gICAgICBhY2NvdW50TmFtZSxcbiAgICAgIHRlYW1OYW1lLFxuICAgICAgdGVhbUlkZW50aWZpZXIsXG4gICAgICBzdGFnZSxcbiAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgdmVyc2lvbixcbiAgICAgIGRhdGFkb2dBcGlLZXlQYXJhbWV0ZXIsXG4gICAgICBkYXRhZG9nU2l0ZSxcbiAgICAgIGRhdGFkb2dMb2dnaW5nTW9kZTogbG9nZ2luZ01vZGVGb3JEYXRhZG9nQWdlbnQsXG4gICAgICBhcG1HZXRSZXNvdXJjZXNUb0lnbm9yZTpcbiAgICAgICAgZGF0YWRvZ09wdGlvbnM/LmFwbUdldEVuZHBvaW50c1RvSWdub3JlID8/XG4gICAgICAgIHRoaXMuREVGQVVMVF9BUE1fR0VUX0VORFBPSU5UU19UT19JR05PUkUsXG4gICAgICBjcHU6IGRhdGFkb2dTaWRlY2FyQ3B1LFxuICAgICAgbWVtb3J5TGltaXRNaUI6IGRhdGFkb2dTaWRlY2FyTWVtb3J5TWlCLFxuICAgICAgZXNzZW50aWFsOiBkYXRhZG9nU2lkZWNhckVzc2VudGlhbCxcbiAgICAgIGVuYWJsZVJlc3RhcnRQb2xpY3k6IHRydWUsXG4gICAgICByZXN0YXJ0SWdub3JlZEV4aXRDb2RlczogWzBdLFxuICAgICAgY29udGFpbmVyVGFnOlxuICAgICAgICBwcm9wcy5kYXRhZG9nT3B0aW9ucz8uZGF0YWRvZ1NpZGVjYXJUYWcgPz9cbiAgICAgICAgdGhpcy5ERUZBVUxUX0RBVEFET0dfU0lERUNBUl9UQUcsIC8vIFRoZXNlIGFyZSBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsXG4gICAgICBhZGRpdGlvbmFsVGFnczogZGF0YWRvZ09wdGlvbnM/LmFkZGl0aW9uYWxUYWdzLFxuICAgIH0pO1xuXG4gICAgZGF0YWRvZy5lbnN1cmVMb2dnaW5nQW5kTW9uaXRvcmluZ0FyZVJlYWR5QmVmb3JlU2VydmljZVN0YXJ0cyh0aGlzKTtcblxuICAgIGNvbnN0IGxvYWRCYWxhbmNlck9wdGlvbnNGb3JGYXJnYXRlU2VydmljZSA9IGxvYWRCYWxhbmNlck9wdGlvbnNcbiAgICAgID8geyBoZWFsdGhDaGVja0dyYWNlUGVyaW9kOiBsb2FkQmFsYW5jZXJPcHRpb25zLmhlYWx0aENoZWNrR3JhY2VQZXJpb2QgfVxuICAgICAgOiB7fTtcblxuICAgIHRoaXMuc2VydmljZSA9IG5ldyBlY3MuRmFyZ2F0ZVNlcnZpY2UodGhpcywgJ1NlcnZpY2UnLCB7XG4gICAgICBjbHVzdGVyOiBmYXJnYXRlQ2x1c3RlcixcbiAgICAgIHRhc2tEZWZpbml0aW9uOiB0aGlzLnRhc2tEZWZpbml0aW9uLFxuICAgICAgbWF4SGVhbHRoeVBlcmNlbnQ6IDIwMCxcbiAgICAgIG1pbkhlYWx0aHlQZXJjZW50OiAxMDAsXG4gICAgICBkZXNpcmVkQ291bnQ6IGZhcmdhdGVPcHRpb25zPy5kZXNpcmVkQ291bnQsXG4gICAgICBkZXBsb3ltZW50Q29udHJvbGxlcjogeyB0eXBlOiBlY3MuRGVwbG95bWVudENvbnRyb2xsZXJUeXBlLkNPREVfREVQTE9ZIH0sXG4gICAgICAuLi5sb2FkQmFsYW5jZXJPcHRpb25zRm9yRmFyZ2F0ZVNlcnZpY2UsXG4gICAgICBwcm9wYWdhdGVUYWdzOiBlY3MuUHJvcGFnYXRlZFRhZ1NvdXJjZS5TRVJWSUNFLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuc2VydmljZS5jb25uZWN0aW9ucztcblxuICAgIGlmIChsb2FkQmFsYW5jZXJPcHRpb25zICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lclBvcnQgPSA0NDM7XG4gICAgICB0aGlzLnNlcnZpY2VDb250YWluZXJEZWZpbml0aW9uLmFkZFBvcnRNYXBwaW5ncyh7XG4gICAgICAgIGNvbnRhaW5lclBvcnQ6IGNvbnRhaW5lclBvcnQsXG4gICAgICAgIHByb3RvY29sOiBlY3MuUHJvdG9jb2wuVENQLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmJsdWVUYXJnZXRHcm91cCA9IG5ldyBlbGJ2Mi5BcHBsaWNhdGlvblRhcmdldEdyb3VwKFxuICAgICAgICB0aGlzLFxuICAgICAgICAnQmx1ZVRhcmdldEdyb3VwJyxcbiAgICAgICAge1xuICAgICAgICAgIHZwYzogdnBjLFxuICAgICAgICAgIHBvcnQ6IGNvbnRhaW5lclBvcnQsXG4gICAgICAgICAgcHJvdG9jb2w6IGVsYnYyLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUFMsXG4gICAgICAgICAgdGFyZ2V0VHlwZTogZWxidjIuVGFyZ2V0VHlwZS5JUCxcbiAgICAgICAgICB0YXJnZXRzOiBbdGhpcy5zZXJ2aWNlXSxcbiAgICAgICAgICBoZWFsdGhDaGVjazogbG9hZEJhbGFuY2VyT3B0aW9ucy5oZWFsdGhDaGVjayxcbiAgICAgICAgICBzbG93U3RhcnQ6XG4gICAgICAgICAgICBwcm9wcy5sb2FkQmFsYW5jZXJPcHRpb25zPy5zbG93U3RhcnQgPz8gdGhpcy5ERUZBVUxUX1NMT1dfU1RBUlQsXG4gICAgICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTpcbiAgICAgICAgICAgIHByb3BzLmxvYWRCYWxhbmNlck9wdGlvbnM/LmRlcmVnaXN0cmF0aW9uRGVsYXkgPz9cbiAgICAgICAgICAgIHRoaXMuREVGQVVMVF9ERVJFR0lTVFJBVElPTl9ERUxBWSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgICB0aGlzLmdyZWVuVGFyZ2V0R3JvdXAgPSBuZXcgZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgJ0dyZWVuVGFyZ2V0R3JvdXAnLFxuICAgICAgICB7XG4gICAgICAgICAgdnBjOiB2cGMsXG4gICAgICAgICAgcG9ydDogY29udGFpbmVyUG9ydCxcbiAgICAgICAgICBwcm90b2NvbDogZWxidjIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQUyxcbiAgICAgICAgICB0YXJnZXRUeXBlOiBlbGJ2Mi5UYXJnZXRUeXBlLklQLFxuICAgICAgICAgIHRhcmdldHM6IFt0aGlzLnNlcnZpY2VdLFxuICAgICAgICAgIGhlYWx0aENoZWNrOiBsb2FkQmFsYW5jZXJPcHRpb25zLmhlYWx0aENoZWNrLFxuICAgICAgICAgIHNsb3dTdGFydDpcbiAgICAgICAgICAgIHByb3BzLmxvYWRCYWxhbmNlck9wdGlvbnM/LnNsb3dTdGFydCA/PyB0aGlzLkRFRkFVTFRfU0xPV19TVEFSVCxcbiAgICAgICAgICBkZXJlZ2lzdHJhdGlvbkRlbGF5OlxuICAgICAgICAgICAgcHJvcHMubG9hZEJhbGFuY2VyT3B0aW9ucz8uZGVyZWdpc3RyYXRpb25EZWxheSA/P1xuICAgICAgICAgICAgdGhpcy5ERUZBVUxUX0RFUkVHSVNUUkFUSU9OX0RFTEFZLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgbG9hZEJhbGFuY2VyT3B0aW9ucy5saXN0ZW5lclJ1bGVzLmZvckVhY2goKHsgcHJpb3JpdHksIGNvbmRpdGlvbnMgfSkgPT4ge1xuICAgICAgICBsb2FkQmFsYW5jZXJPcHRpb25zLmxpc3RlbmVyLmFkZFRhcmdldEdyb3VwcyhgUHJpb3JpdHkke3ByaW9yaXR5fUxpc3RlbmVyUnVsZWAsIHtcbiAgICAgICAgICB0YXJnZXRHcm91cHM6IFt0aGlzLmJsdWVUYXJnZXRHcm91cCBhcyBlbGJ2Mi5BcHBsaWNhdGlvblRhcmdldEdyb3VwXSxcbiAgICAgICAgICBwcmlvcml0eTogcHJpb3JpdHksXG4gICAgICAgICAgY29uZGl0aW9uczogY29uZGl0aW9ucyxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGlmIChibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnPy50ZXN0TGlzdGVuZXIpIHtcbiAgICAgICAgbG9hZEJhbGFuY2VyT3B0aW9ucy5saXN0ZW5lclJ1bGVzLmZvckVhY2goKHsgcHJpb3JpdHksIGNvbmRpdGlvbnMgfSkgPT4ge1xuICAgICAgICAgIGJsdWVHcmVlbkRlcGxveW1lbnRDb25maWcudGVzdExpc3RlbmVyPy5hZGRUYXJnZXRHcm91cHMoYFByaW9yaXR5JHtwcmlvcml0eX1MaXN0ZW5lclJ1bGVgLCB7XG4gICAgICAgICAgICB0YXJnZXRHcm91cHM6IFt0aGlzLmdyZWVuVGFyZ2V0R3JvdXAgYXMgZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cF0sXG4gICAgICAgICAgICBwcmlvcml0eTogcHJpb3JpdHksXG4gICAgICAgICAgICBjb25kaXRpb25zOiBjb25kaXRpb25zLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZWNzRGVwbG95bWVudEdyb3VwID0gbmV3IGNvZGVkZXBsb3kuRWNzRGVwbG95bWVudEdyb3VwKHRoaXMsICdEZXBsb3ltZW50R3JvdXAnLCB7XG4gICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljZSxcbiAgICAgICAgYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZzoge1xuICAgICAgICAgIGJsdWVUYXJnZXRHcm91cDogdGhpcy5ibHVlVGFyZ2V0R3JvdXAsXG4gICAgICAgICAgZ3JlZW5UYXJnZXRHcm91cDogdGhpcy5ncmVlblRhcmdldEdyb3VwLFxuICAgICAgICAgIGxpc3RlbmVyOiBsb2FkQmFsYW5jZXJPcHRpb25zLmxpc3RlbmVyLFxuICAgICAgICAgIHRlc3RMaXN0ZW5lcjogYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZz8udGVzdExpc3RlbmVyLFxuICAgICAgICB9LFxuICAgICAgICBkZXBsb3ltZW50Q29uZmlnOlxuICAgICAgICAgIGNvZGVkZXBsb3kuRWNzRGVwbG95bWVudENvbmZpZy5DQU5BUllfMTBQRVJDRU5UXzVNSU5VVEVTLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGNyZWF0ZURlcGxveW1lbnRMYW1iZGEgPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsICdDcmVhdGVEZXBsb3ltZW50TGFtYmRhJywge1xuICAgICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQoam9pbihfX2Rpcm5hbWUsICdjb2RlZGVwbG95LWN1c3RvbS1yZXNvdXJjZXMnKSwge1xuICAgICAgICAgIGV4Y2x1ZGU6IFsnKi5qcycsICcqLmQudHMnXSxcbiAgICAgICAgfSksXG4gICAgICAgIGhhbmRsZXI6ICdjcmVhdGUtZGVwbG95bWVudC1vbi1jcmVhdGUuaGFuZGxlcicsXG4gICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18yMF9YLFxuICAgICAgICBhcmNoaXRlY3R1cmU6IGxhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgbG9nR3JvdXA6IG5ldyBsb2dzLkxvZ0dyb3VwKHRoaXMsICdDcmVhdGVEZXBsb3ltZW50TGFtYmRhTG9nR3JvdXAnLCB7XG4gICAgICAgICAgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgICAgIH0pLFxuICAgICAgfSk7XG4gICAgICBjcmVhdGVEZXBsb3ltZW50TGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnY29kZWRlcGxveTpHZXRBcHBsaWNhdGlvblJldmlzaW9uJyxcbiAgICAgICAgICAnY29kZWRlcGxveTpSZWdpc3RlckFwcGxpY2F0aW9uUmV2aXNpb24nLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICBlY3NEZXBsb3ltZW50R3JvdXAuYXBwbGljYXRpb24uYXBwbGljYXRpb25Bcm4sXG4gICAgICAgIF0sXG4gICAgICB9KSk7XG4gICAgICBjcmVhdGVEZXBsb3ltZW50TGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnY29kZWRlcGxveTpDcmVhdGVEZXBsb3ltZW50JyxcbiAgICAgICAgICAnY29kZWRlcGxveTpTdG9wRGVwbG95bWVudCcsXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6R2V0RGVwbG95bWVudCcsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGVjc0RlcGxveW1lbnRHcm91cC5kZXBsb3ltZW50R3JvdXBBcm4sXG4gICAgICAgIF0sXG4gICAgICB9KSk7XG4gICAgICBjcmVhdGVEZXBsb3ltZW50TGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnY29kZWRlcGxveTpHZXREZXBsb3ltZW50Q29uZmlnJyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgZWNzRGVwbG95bWVudEdyb3VwLmRlcGxveW1lbnRDb25maWcuZGVwbG95bWVudENvbmZpZ0FybixcbiAgICAgICAgXSxcbiAgICAgIH0pKTtcblxuICAgICAgY29uc3QgaXNDb21wbGV0ZURlcGxveW1lbnRMYW1iZGEgPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsICdJc0NvbXBsZXRlRGVwbG95bWVudExhbWJkYScsIHtcbiAgICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KGpvaW4oX19kaXJuYW1lLCAnY29kZWRlcGxveS1jdXN0b20tcmVzb3VyY2VzJyksIHtcbiAgICAgICAgICBleGNsdWRlOiBbJyouanMnLCAnKi5kLnRzJ10sXG4gICAgICAgIH0pLFxuICAgICAgICBoYW5kbGVyOiAnY3JlYXRlLWRlcGxveW1lbnQtaXMtY29tcGxldGUuaGFuZGxlcicsXG4gICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18yMF9YLFxuICAgICAgICBhcmNoaXRlY3R1cmU6IGxhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgbG9nR3JvdXA6IG5ldyBsb2dzLkxvZ0dyb3VwKHRoaXMsICdJc0NvbXBsZXRlRGVwbG95bWVudExhbWJkYUxvZ0dyb3VwJywge1xuICAgICAgICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9XRUVLLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgICAgaXNDb21wbGV0ZURlcGxveW1lbnRMYW1iZGEuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICdjb2RlZGVwbG95OkdldERlcGxveW1lbnQnLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICBlY3NEZXBsb3ltZW50R3JvdXAuZGVwbG95bWVudEdyb3VwQXJuLFxuICAgICAgICBdLFxuICAgICAgfSkpO1xuICAgICAgY29uc3QgY3JlYXRlRGVwbG95bWVudExhbWJkYVByb3ZpZGVyID0gbmV3IGNyLlByb3ZpZGVyKHRoaXMsICdDcmVhdGVEZXBsb3ltZW50UHJvdmlkZXInLCB7XG4gICAgICAgIG9uRXZlbnRIYW5kbGVyOiBjcmVhdGVEZXBsb3ltZW50TGFtYmRhLFxuICAgICAgICBpc0NvbXBsZXRlSGFuZGxlcjogaXNDb21wbGV0ZURlcGxveW1lbnRMYW1iZGEsXG4gICAgICAgIHRvdGFsVGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNjApLFxuICAgICAgfSk7XG4gICAgICBsZXQgcnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYTogbm9kZWpzbGFtYmRhLk5vZGVqc0Z1bmN0aW9uIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgaWYgKGJsdWVHcmVlbkRlcGxveW1lbnRDb25maWc/LmNhcGFiaWxpdHlOYW1lcykge1xuICAgICAgICAvLyBydW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhID0gbmV3IG5vZGVqc2xhbWJkYS5Ob2RlanNGdW5jdGlvbih0aGlzLCAnUnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYScsIHtcbiAgICAgICAgLy8gICBlbnRyeTogJy4vc3JjL2ZhcmdhdGUvY29kZWRlcGxveS1jdXN0b20tcmVzb3VyY2VzL3J1bi1tb25pdG9yaW5nLXRlc3Qtc3VpdGUtcnVubmVyLnRzJyxcbiAgICAgICAgLy8gICBoYW5kbGVyOiAnaGFuZGxlcicsXG4gICAgICAgIC8vICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgIC8vICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzIwX1gsXG4gICAgICAgIC8vICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgLy8gICAgIENBUEFCSUxJVElFU19OQU1FOiBibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnLmNhcGFiaWxpdHlOYW1lcy5qb2luKCcsJyksXG4gICAgICAgIC8vICAgICBTVUJORVRTOiB2cGMuc2VsZWN0U3VibmV0cyh7IHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MgfSkuc3VibmV0SWRzLmpvaW4oJywnKSxcbiAgICAgICAgLy8gICB9LFxuICAgICAgICAvLyB9KTtcbiAgICAgICAgcnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYSA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgJ1J1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGEnLCB7XG4gICAgICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KGpvaW4oX19kaXJuYW1lLCAnY29kZWRlcGxveS1jdXN0b20tcmVzb3VyY2VzJyksIHtcbiAgICAgICAgICAgIGV4Y2x1ZGU6IFsnKi5qcycsICcqLmQudHMnXSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBoYW5kbGVyOiAncnVuLW1vbml0b3JpbmctdGVzdC1zdWl0ZS1ydW5uZXIuaGFuZGxlcicsXG4gICAgICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzIwX1gsXG4gICAgICAgICAgYXJjaGl0ZWN0dXJlOiBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICBsb2dHcm91cDogbmV3IGxvZ3MuTG9nR3JvdXAodGhpcywgJ1J1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGFyTG9nR3JvdXAnLCB7XG4gICAgICAgICAgICByZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfV0VFSyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgICAgQ0FQQUJJTElUSUVTX05BTUU6IGJsdWVHcmVlbkRlcGxveW1lbnRDb25maWcuY2FwYWJpbGl0eU5hbWVzLmpvaW4oJywnKSxcbiAgICAgICAgICAgIFNVQk5FVFM6IHZwYy5zZWxlY3RTdWJuZXRzKHsgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyB9KS5zdWJuZXRJZHMuam9pbignLCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByZWdpb24gPSBjZGsuU3RhY2sub2Yoc2NvcGUpLnJlZ2lvbjtcbiAgICAgICAgY29uc3QgYWNjb3VudCA9IGNkay5TdGFjay5vZihzY29wZSkuYWNjb3VudDtcbiAgICAgICAgcnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICdlY3M6UnVuVGFzaycsXG4gICAgICAgICAgXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgIGBhcm46YXdzOmVjczoke3JlZ2lvbn06JHthY2NvdW50fTp0YXNrLWRlZmluaXRpb24vbW9uaXRvcmluZy10ZXN0c3VpdGUtcnVubmVyKmAsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSkpO1xuICAgICAgICBydW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgJ2VjczpMaXN0Q0x1c3RlcnMnLFxuICAgICAgICAgICAgJ2VjczpMaXN0VGFza0RlZmluaXRpb25zJyxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgJyonLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pKTtcbiAgICAgICAgcnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFsnaWFtOlBhc3NSb2xlJ10sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbYGFybjphd3M6aWFtOjoke2FjY291bnR9OnJvbGUvbW9uaXRvcmluZy10ZXN0c3VpdGUqYF0sXG4gICAgICAgIH0pKTtcbiAgICAgIH1cblxuICAgICAgbmV3IGNkay5DdXN0b21SZXNvdXJjZSh0aGlzLCAnQ3JlYXRlRGVwbG95bWVudCcsIHtcbiAgICAgICAgc2VydmljZVRva2VuOiBjcmVhdGVEZXBsb3ltZW50TGFtYmRhUHJvdmlkZXIuc2VydmljZVRva2VuLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgQXBwbGljYXRpb25OYW1lOiBlY3NEZXBsb3ltZW50R3JvdXAuYXBwbGljYXRpb24uYXBwbGljYXRpb25OYW1lLFxuICAgICAgICAgIERlcGxveW1lbnRHcm91cE5hbWU6IGVjc0RlcGxveW1lbnRHcm91cC5kZXBsb3ltZW50R3JvdXBOYW1lLFxuICAgICAgICAgIFRhc2tEZWZpbml0aW9uQXJuOiB0aGlzLnRhc2tEZWZpbml0aW9uLnRhc2tEZWZpbml0aW9uQXJuLFxuICAgICAgICAgIENvbnRhaW5lck5hbWU6IHNlcnZpY2VOYW1lLFxuICAgICAgICAgIENvbnRhaW5lclBvcnQ6IGNvbnRhaW5lclBvcnQsXG4gICAgICAgICAgQWZ0ZXJBbGxvd1Rlc3RUcmFmZmljSG9vazogcnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYT8uZnVuY3Rpb25Bcm4sXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBEZW55TGlzdGVkS2V5VmFsaWRhdG9yIGltcGxlbWVudHMgY29uc3RydWN0cy5JVmFsaWRhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVueUxpc3Q6IHN0cmluZ1tdLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGljdDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IHVuZGVmaW5lZCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VHZW5lcmF0b3I6IChrZXlOYW1lOiBzdHJpbmcpID0+IHN0cmluZyxcbiAgKSB7fVxuXG4gIHZhbGlkYXRlKCk6IHN0cmluZ1tdIHtcbiAgICBpZiAoIXRoaXMuZGljdCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgICB0aGlzLmRlbnlMaXN0LmZvckVhY2goKGtleU5hbWUpID0+IHtcbiAgICAgIGlmICh0aGlzLmRpY3QgJiYga2V5TmFtZSBpbiB0aGlzLmRpY3QpIHtcbiAgICAgICAgcmVzdWx0LnB1c2godGhpcy5tZXNzYWdlR2VuZXJhdG9yKGtleU5hbWUpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuY2xhc3MgQ2x1c3RlclZwY1ZhbGlkYXRvciBpbXBsZW1lbnRzIGNvbnN0cnVjdHMuSVZhbGlkYXRpb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZwYzogZWMyLklWcGMsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjbHVzdGVyPzogZWNzLklDbHVzdGVyLFxuICApIHt9XG5cbiAgdmFsaWRhdGUoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGlmICh0aGlzLmNsdXN0ZXIgJiYgdGhpcy5jbHVzdGVyLnZwYy52cGNJZCAhPT0gdGhpcy52cGMudnBjSWQpIHtcbiAgICAgIHJlc3VsdC5wdXNoKFxuICAgICAgICBgVGhlIFZQQyBwcm92aWRlZCBpbiB0aGUgY2x1c3RlciAoJHt0aGlzLmNsdXN0ZXIudnBjLm5vZGUuaWR9KSBNVVNUIG1hdGNoIHRoZSBWUEMgcHJvdmlkZWQgYXMgYXJndW1lbnQgKCR7dGhpcy52cGMubm9kZS5pZH0pLmAsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=
|
|
416
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlvLWZhcmdhdGUtc2VydmljZS1ibHVlLWdyZWVuLWFscGhhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZhcmdhdGUvcmlvLWZhcmdhdGUtc2VydmljZS1ibHVlLWdyZWVuLWFscGhhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQTRCO0FBQzVCLG1DQUFtQztBQUNuQyx5REFBeUQ7QUFDekQsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQyxnRUFBZ0U7QUFDaEUsMkNBQTJDO0FBQzNDLGlEQUFpRDtBQUVqRCw2Q0FBNkM7QUFDN0MsMkNBQTJDO0FBQzNDLG1EQUFtRDtBQUNuRCx5Q0FBeUM7QUFDekMscUNBQXFDO0FBQ3JDLCtEQUE0SztBQUM1SyxxQ0FBa0M7QUFDbEMsNENBQW9EO0FBZ0ZwRCxNQUFhLCtCQUNYLFNBQVEsVUFBVSxDQUFDLFNBQVM7SUFrRDVCLFlBQ0UsS0FBMkIsRUFDM0IsRUFBVSxFQUNWLEtBQTJDO1FBRTNDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFsQ0Ysd0NBQW1DLEdBQWEsRUFBRSxDQUFDO1FBQ25ELGdDQUEyQixHQUFHLEVBQUUsQ0FBQztRQUNqQyw2Q0FBd0MsR0FBRyxHQUFHLENBQUM7UUFDL0Msc0NBQWlDLEdBQUcsSUFBSSxDQUFDO1FBQ3pDLHFDQUFnQyxHQUMvQyx3Q0FBa0IsQ0FBQyxnQkFBZ0IsQ0FBQztRQUNyQiw2Q0FBd0MsR0FDdkQsd0NBQWtCLENBQUMsSUFBSSxDQUFDO1FBQ1QsaUNBQTRCLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsdUJBQWtCLEdBQUcsU0FBUyxDQUFDO1FBQy9CLGdDQUEyQixHQUFHLFFBQVEsQ0FBQztRQUV2QyxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixnQ0FBMkIsR0FBRyxFQUFFLENBQUM7UUFFakMsK0JBQTBCLEdBQ3pDLG1FQUFtRSxD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Q0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGNvZGVkZXBsb3kgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZGVkZXBsb3knO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0ICogYXMgZWNzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3MnO1xuaW1wb3J0ICogYXMgZWxidjIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0ICogYXMgbm9kZWpzbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzJztcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgc3NtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zc20nO1xuaW1wb3J0ICogYXMgY3IgZnJvbSAnYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlcyc7XG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgZGF0YWRvZyBmcm9tICcuL2RhdGFkb2cnO1xuaW1wb3J0IHsgRnJhbWV3b3JrLCBDb250YWluZXJEZWZpbml0aW9uT3B0aW9ucywgRmFyZ2F0ZVRhc2tEZWZpbml0aW9uUHJvcHMsIExvYWRCYWxhbmNlck9wdGlvbnMsIERhdGFkb2dJbnRlZ3JhdGlvblByb3BzLCBEYXRhRG9nTG9nZ2luZ01vZGUgfSBmcm9tICcuL3Jpby1mYXJnYXRlLXNlcnZpY2UnO1xuaW1wb3J0IHsgU3ByaW5nIH0gZnJvbSAnLi9zcHJpbmcnO1xuaW1wb3J0IHsgREVGQVVMVF9OT0RFX1JVTlRJTUUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG4vKipcbiAqIEZhcmdhdGUgVGFzayBEZWZpbml0aW9uIFByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmlvRmFyZ2F0ZVNlcnZpY2VCbHVlR3JlZW5BbHBoYVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBzdGFnZSBvZiB0aGUgc2VydmljZSwgZS5nLiAncHJvZCcuXG4gICAqL1xuICByZWFkb25seSBzdGFnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgTmFtZSBvZiB0aGUgc2VydmljZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzZXJ2aWNlLCBlLmcuIHRoZSBnaXQgaGFzaCBvZiB0aGUgY29ycmVzcG9uZGluZyBjb21taXQuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmcmFtZXdvcmtzIGluIHVzZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgLSBObyBmcmFtZXdvcmtzLlxuICAgKi9cbiAgcmVhZG9ubHkgZnJhbWV3b3Jrcz86IEZyYW1ld29ya1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIG9mIHRoZSBzZXJ2aWNlJ3MgZWNzLkNsdXN0ZXIgaWYgbm8gY2x1c3RlciBpcyBleHBsaWNpdGx5IHBhc3NlZCBhcyBwcm9wLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBlYzIuSVZwYztcblxuICAvKipcbiAgICogVGhlIEZhcmdhdGUgY2x1c3RlciB0byBydW4gdGhlIHNlcnZpY2UgaW4uXG4gICAqIElmIG5vdCBudWxsLCB0aGUgY2x1c3Rlci52cGMgTVVTVCBtYXRjaCB0aGUgdnBjIHByb3ZpZGVkIGFzIGRpcmVjdCBhcmd1bWVudC5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSAtIENyZWF0ZSBhIG5ldyBGYXJnYXRlIGNsdXN0ZXIgd2l0aCBkZWZhdWx0IHByb3BlcnRpZXNcbiAgICovXG4gIHJlYWRvbmx5IGNsdXN0ZXI/OiBlY3MuSUNsdXN0ZXI7XG5cbiAgLyoqXG4gICAqIENvbnRhaW5lciBkZWZpbml0aW9uIG9wdGlvbnMgbGlrZSBpbWFnZSwgY3B1LCBtZW1vcnkuXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uOiBDb250YWluZXJEZWZpbml0aW9uT3B0aW9ucztcblxuICAvKipcbiAgICogRmFyZ2F0ZSBUYXNrIERlZmluaXRpb24gUHJvcGVydGllcy5cbiAgICovXG4gIHJlYWRvbmx5IGZhcmdhdGVPcHRpb25zOiBGYXJnYXRlVGFza0RlZmluaXRpb25Qcm9wcztcblxuICAvKipcbiAgICogTG9hZGJhbGFuY2VyIG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXJPcHRpb25zPzogTG9hZEJhbGFuY2VyT3B0aW9ucztcblxuICAvKipcbiAgICogRGF0YWRvZyBpbnRlZ3JhdGlvbiBwcm9wZXJ0aWVzXG4gICAqL1xuICByZWFkb25seSBkYXRhZG9nT3B0aW9ucz86IERhdGFkb2dJbnRlZ3JhdGlvblByb3BzO1xuXG4gIC8qKlxuICAgKiBCbHVlIGdyZWVuIGRlcGxveW1lbnQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZz86IEJsdWVHcmVlbkRlcGxveW1lbnRDb25maWc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZyB7XG4gIC8qKlxuICAgICAqIFRoZSB0YXJnZXQgZ3JvdXAgdG8gYXNzb2NpYXRlIHdpdGggdGhlIHJlcGxhY2VtZW50IHRhc2sgc2V0IGZvciB0ZXN0aW5nIGJlZm9yZSBwcm9tb3RpbmcgdHJhZmZpYyB0byBwcm9kdWN0aW9uLlxuICAgICAqIEBkZWZhdWx0IC0gTm8gdGFyZ2V0IGdyb3VwLlxuICAgICAqL1xuICByZWFkb25seSB0ZXN0TGlzdGVuZXI/OiBlbGJ2Mi5JQXBwbGljYXRpb25MaXN0ZW5lcjtcblxuICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBjYXBhYmlsaXRpZXMgdG8gcnVuIHdpdGggdGhlIG1vbml0b3JpbmcgdGVzdCBzdWl0ZSBydW5uZXIgdGVzdGluZ1xuICAgICAqL1xuICByZWFkb25seSBjYXBhYmlsaXR5TmFtZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFJpb0ZhcmdhdGVTZXJ2aWNlQmx1ZUdyZWVuQWxwaGFcbiAgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdFxuICBpbXBsZW1lbnRzIGVjMi5JQ29ubmVjdGFibGUge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERF9FTlZfREVOWV9MSVNUID0gW1xuICAgICdERF9FTlYnLFxuICAgICdERF9UQUdTJyxcbiAgICAnRERfU0VSVklDRScsXG4gICAgJ0REX1ZFUlNJT04nLFxuICAgICdERF9MT0dTX0lOSkVDVElPTicsXG4gIF07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRERfVEFHX0RFTllfTElTVCA9IFtcbiAgICAnZW52JyxcbiAgICAnc2VydmljZScsXG4gICAgJ3ZlcnNpb24nLFxuICAgICdhY2NvdW50X2lkJyxcbiAgICAnYWNjb3VudF9uYW1lJyxcbiAgICAncmVnaW9uJyxcbiAgICAndGVhbScsXG4gICAgJ3RlYW1faWRlbnRpZmllcicsXG4gIF07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0FQTV9HRVRfRU5EUE9JTlRTX1RPX0lHTk9SRTogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RBVEFET0dfU0lERUNBUl9DUFUgPSA2NDtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RBVEFET0dfU0lERUNBUl9NRU1PUllfTElNSVRfTUlCID0gMTI4O1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQURPR19TSURFQ0FSX0VTU0VOVElBTCA9IHRydWU7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9MT0dHSU5HX01PREVfRk9SX1NFUlZJQ0UgPVxuICAgIERhdGFEb2dMb2dnaW5nTW9kZS5GT1JXQVJERVJfTEFNQkRBO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfTE9HR0lOR19NT0RFX0ZPUl9EQVRBRE9HX1NJREVDQVIgPVxuICAgIERhdGFEb2dMb2dnaW5nTW9kZS5OT05FO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREVSRUdJU1RSQVRJT05fREVMQVkgPSBjZGsuRHVyYXRpb24uc2Vjb25kcyg1KTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX1NMT1dfU1RBUlQgPSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfVEFHID0gJ2xhdGVzdCc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBMT0dfUk9VVEVSX0NQVSA9IDY0O1xuICBwcml2YXRlIHJlYWRvbmx5IExPR19ST1VURVJfTUVNT1JZX0xJTUlUX01JQiA9IDY0O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgRklSRUxFTlNfQ09ORklHX0JVQ0tFVF9BUk4gPVxuICAgICdhcm46YXdzOnMzOjo6NTc3MTQ2ODk3Nzg1LWV1LXdlc3QtMS1maXJlbGVucy1jb25maWd1cmF0aW9uLWJ1Y2tldCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgRklSRUxFTlNfQ09ORklHX0ZJTEVfUEFUSCA9ICcvcGFyc2UtanNvbi5jb25mJztcblxuICByZWFkb25seSBzZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbjogZWNzLkNvbnRhaW5lckRlZmluaXRpb247XG4gIHJlYWRvbmx5IGRhdGFkb2dTaWRlQ2FyQ29udGFpbmVyRGVmaW5pdGlvbjogZWNzLkNvbnRhaW5lckRlZmluaXRpb247XG4gIHJlYWRvbmx5IGxvZ1JvdXRlckNvbnRhaW5lckRlZmluaXRpb24/OiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbjtcbiAgcmVhZG9ubHkgdGFza0RlZmluaXRpb246IGVjcy5GYXJnYXRlVGFza0RlZmluaXRpb247XG5cbiAgcmVhZG9ubHkgY29ubmVjdGlvbnM6IGVjMi5Db25uZWN0aW9ucztcbiAgcmVhZG9ubHkgc2VydmljZTogZWNzLkZhcmdhdGVTZXJ2aWNlO1xuICByZWFkb25seSBibHVlVGFyZ2V0R3JvdXA6IGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGdyZWVuVGFyZ2V0R3JvdXA6IGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IFJpb0ZhcmdhdGVTZXJ2aWNlQmx1ZUdyZWVuQWxwaGFQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHtcbiAgICAgIGxvYWRCYWxhbmNlck9wdGlvbnMsXG4gICAgICB2cGMsXG4gICAgICBjbHVzdGVyLFxuICAgICAgZmFyZ2F0ZU9wdGlvbnMsXG4gICAgICBkYXRhZG9nT3B0aW9ucyxcbiAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgY29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbixcbiAgICAgIHN0YWdlLFxuICAgICAgdmVyc2lvbixcbiAgICAgIGZyYW1ld29ya3MsXG4gICAgICBibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnLFxuICAgIH0gPSBwcm9wcztcblxuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKFxuICAgICAgbmV3IERlbnlMaXN0ZWRLZXlWYWxpZGF0b3IoXG4gICAgICAgIFJpb0ZhcmdhdGVTZXJ2aWNlQmx1ZUdyZWVuQWxwaGEuRERfRU5WX0RFTllfTElTVCxcbiAgICAgICAgcHJvcHMuY29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbi5lbnZpcm9ubWVudCxcbiAgICAgICAgKGl0KSA9PlxuICAgICAgICAgIGBFbnZpcm9ubWVudCAke2l0fSBpcyBub3QgYWxsb3dlZCB0byBiZSBzZXQuIFRoaXMgdmFsdWUgd2lsbCBiZSBpbmZlcnJlZCBmcm9tIHRoZSBhY2NvdW50IG9yIG90aGVyIHByb3BlcnRpZXMuYCxcbiAgICAgICksXG4gICAgKTtcbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbihcbiAgICAgIG5ldyBEZW55TGlzdGVkS2V5VmFsaWRhdG9yKFxuICAgICAgICBSaW9GYXJnYXRlU2VydmljZUJsdWVHcmVlbkFscGhhLkREX1RBR19ERU5ZX0xJU1QsXG4gICAgICAgIHByb3BzLmRhdGFkb2dPcHRpb25zPy5hZGRpdGlvbmFsVGFncyxcbiAgICAgICAgKGl0KSA9PlxuICAgICAgICAgIGBUYWcgJHtpdH0gaXMgbm90IGFsbG93ZWQgdG8gYmUgc2V0LiBUaGlzIHZhbHVlIHdpbGwgYmUgaW5mZXJyZWQgZnJvbSB0aGUgYWNjb3VudCBvciBvdGhlciBwcm9wZXJ0aWVzLmAsXG4gICAgICApLFxuICAgICk7XG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbihuZXcgQ2x1c3RlclZwY1ZhbGlkYXRvcihwcm9wcy52cGMsIHByb3BzLmNsdXN0ZXIpKTtcblxuICAgIGNvbnN0IGZhcmdhdGVDbHVzdGVyID1cbiAgICAgIGNsdXN0ZXIgPz9cbiAgICAgIG5ldyBlY3MuQ2x1c3Rlcih0aGlzLCAnQ2x1c3RlcicsIHtcbiAgICAgICAgdnBjOiB2cGMsXG4gICAgICB9KTtcbiAgICB0aGlzLnRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5GYXJnYXRlVGFza0RlZmluaXRpb24oXG4gICAgICB0aGlzLFxuICAgICAgJ1Rhc2tEZWZpbml0aW9uJyxcbiAgICAgIHtcbiAgICAgICAgY3B1OiBmYXJnYXRlT3B0aW9ucy5jcHUsXG4gICAgICAgIG1lbW9yeUxpbWl0TWlCOiBmYXJnYXRlT3B0aW9ucy5tZW1vcnlMaW1pdE1pQixcbiAgICAgICAgcnVudGltZVBsYXRmb3JtOiB7XG4gICAgICAgICAgY3B1QXJjaGl0ZWN0dXJlOlxuICAgICAgICAgICAgZmFyZ2F0ZU9wdGlvbnMucnVudGltZVBsYXRmb3JtPy5jcHVBcmNoaXRlY3R1cmUgPz9cbiAgICAgICAgICAgIGVjcy5DcHVBcmNoaXRlY3R1cmUuWDg2XzY0LFxuICAgICAgICAgIG9wZXJhdGluZ1N5c3RlbUZhbWlseTpcbiAgICAgICAgICAgIGZhcmdhdGVPcHRpb25zLnJ1bnRpbWVQbGF0Zm9ybT8ub3BlcmF0aW5nU3lzdGVtRmFtaWx5ID8/XG4gICAgICAgICAgICBlY3MuT3BlcmF0aW5nU3lzdGVtRmFtaWx5LkxJTlVYLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICApO1xuICAgIGNvbnN0IGFjY291bnROYW1lID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZShcbiAgICAgIHRoaXMsXG4gICAgICAnQWNjb3VudE5hbWUnLFxuICAgICAgJy9jb25maWcvYWNjb3VudC9uYW1lJyxcbiAgICApLnN0cmluZ1ZhbHVlO1xuICAgIGNvbnN0IHRlYW1OYW1lID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZShcbiAgICAgIHRoaXMsXG4gICAgICAnVGVhbU5hbWUnLFxuICAgICAgJy9jb25maWcvdGVhbS9uYW1lJyxcbiAgICApLnN0cmluZ1ZhbHVlO1xuICAgIGNvbnN0IHRlYW1JZGVudGlmaWVyID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZShcbiAgICAgIHRoaXMsXG4gICAgICAnVGVhbUlkZW50aWZpZXInLFxuICAgICAgJy9jb25maWcvdGVhbS9pZGVudGlmaWVyJyxcbiAgICApLnN0cmluZ1ZhbHVlO1xuXG4gICAgY29uc3QgZGF0YWRvZ1NpdGUgPSBzc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKFxuICAgICAgdGhpcyxcbiAgICAgICdEYXRhZG9nU2l0ZScsXG4gICAgICAnL3Jpby9jb25maWcvZGF0YWRvZy1pbnRlZ3JhdGlvbi9zaXRlJyxcbiAgICApLnN0cmluZ1ZhbHVlO1xuICAgIGNvbnN0IGRhdGFkb2dBcGlLZXlQYXJhbWV0ZXIgPSBzc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKFxuICAgICAgdGhpcyxcbiAgICAgICdEYXRhZG9nQXBpS2V5JyxcbiAgICAgICcvcmlvL2NvbmZpZy9kYXRhZG9nLWludGVncmF0aW9uL2FwaS1rZXknLFxuICAgICk7XG5cbiAgICBjb25zdCBkYXRhZG9nU2lkZWNhckNwdSA9XG4gICAgICBkYXRhZG9nT3B0aW9ucz8uY3B1ID8/IHRoaXMuREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfQ1BVO1xuICAgIGNvbnN0IGRhdGFkb2dTaWRlY2FyTWVtb3J5TWlCID1cbiAgICAgIGRhdGFkb2dPcHRpb25zPy5tZW1vcnlMaW1pdE1pQiA/P1xuICAgICAgdGhpcy5ERUZBVUxUX0RBVEFET0dfU0lERUNBUl9NRU1PUllfTElNSVRfTUlCO1xuICAgIGNvbnN0IGRhdGFkb2dTaWRlY2FyRXNzZW50aWFsID1cbiAgICAgIGRhdGFkb2dPcHRpb25zPy5kYXRhZG9nU2lkZWNhckVzc2VudGlhbCA/P1xuICAgICAgdGhpcy5ERUZBVUxUX0RBVEFET0dfU0lERUNBUl9FU1NFTlRJQUw7XG5cbiAgICBjb25zdCBsb2dnaW5nTW9kZUZvclNlcnZpY2UgPVxuICAgICAgZGF0YWRvZ09wdGlvbnM/LmxvZ2dpbmdNb2RlRm9yU2VydmljZSA/P1xuICAgICAgdGhpcy5ERUZBVUxUX0xPR0dJTkdfTU9ERV9GT1JfU0VSVklDRTtcbiAgICBjb25zdCBsb2dnaW5nTW9kZUZvckRhdGFkb2dBZ2VudCA9XG4gICAgICBkYXRhZG9nT3B0aW9ucz8ubG9nZ2luZ01vZGVGb3JEYXRhZG9nQWdlbnQgPz9cbiAgICAgIHRoaXMuREVGQVVMVF9MT0dHSU5HX01PREVfRk9SX0RBVEFET0dfU0lERUNBUjtcbiAgICBjb25zdCBmaXJlTGVuc0xvZ1JvdXRlclJlcXVpcmVkID1cbiAgICAgIGxvZ2dpbmdNb2RlRm9yU2VydmljZSA9PT0gRGF0YURvZ0xvZ2dpbmdNb2RlLkFXU19GSVJFX0xFTlMgfHxcbiAgICAgIGxvZ2dpbmdNb2RlRm9yRGF0YWRvZ0FnZW50ID09PSBEYXRhRG9nTG9nZ2luZ01vZGUuQVdTX0ZJUkVfTEVOUztcblxuICAgIGxldCBzZXJ2aWNlQ29udGFpbmVyQ3B1VW5pdHM7XG4gICAgbGV0IHNlcnZpY2VDb250YWluZXJNZW1vcnlMaW1pdE1pQjtcblxuICAgIGlmIChmaXJlTGVuc0xvZ1JvdXRlclJlcXVpcmVkKSB7XG4gICAgICBzZXJ2aWNlQ29udGFpbmVyQ3B1VW5pdHMgPVxuICAgICAgICBmYXJnYXRlT3B0aW9ucy5jcHUgLSBkYXRhZG9nU2lkZWNhckNwdSAtIHRoaXMuTE9HX1JPVVRFUl9DUFU7XG4gICAgICBzZXJ2aWNlQ29udGFpbmVyTWVtb3J5TGltaXRNaUIgPVxuICAgICAgICBmYXJnYXRlT3B0aW9ucy5tZW1vcnlMaW1pdE1pQiAtXG4gICAgICAgIGRhdGFkb2dTaWRlY2FyTWVtb3J5TWlCIC1cbiAgICAgICAgdGhpcy5MT0dfUk9VVEVSX01FTU9SWV9MSU1JVF9NSUI7XG4gICAgICBkYXRhZG9nLmFkZEZpcmVsZW5zQ29uZmlnVXBsb2FkRnJvbVMzUGVybWlzc2lvbnMoe1xuICAgICAgICB0YXNrRGVmaW5pdGlvbjogdGhpcy50YXNrRGVmaW5pdGlvbixcbiAgICAgICAgZmlyZWxlbnNDb25maWdCdWNrZXRBcm46IHRoaXMuRklSRUxFTlNfQ09ORklHX0JVQ0tFVF9BUk4sXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VydmljZUNvbnRhaW5lckNwdVVuaXRzID0gZmFyZ2F0ZU9wdGlvbnMuY3B1IC0gZGF0YWRvZ1NpZGVjYXJDcHU7XG4gICAgICBzZXJ2aWNlQ29udGFpbmVyTWVtb3J5TGltaXRNaUIgPVxuICAgICAgICBmYXJnYXRlT3B0aW9ucy5tZW1vcnlMaW1pdE1pQiAtIGRhdGFkb2dTaWRlY2FyTWVtb3J5TWlCO1xuICAgIH1cbiAgICB0aGlzLnNlcnZpY2VDb250YWluZXJEZWZpbml0aW9uID0gdGhpcy50YXNrRGVmaW5pdGlvbi5hZGRDb250YWluZXIoXG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2U6IGNvbnRhaW5lckRlZmluaXRpb25PcHRpb24uaW1hZ2UsXG4gICAgICAgIGNwdTogc2VydmljZUNvbnRhaW5lckNwdVVuaXRzLFxuICAgICAgICBtZW1vcnlMaW1pdE1pQjogc2VydmljZUNvbnRhaW5lck1lbW9yeUxpbWl0TWlCLFxuICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgIC4uLmRhdGFkb2cuZ2V0RmFyZ2F0ZUNvbnRhaW5lckVudmlyb25tZW50VmFyaWFibGVzKHtcbiAgICAgICAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgICAgICAgc3RhZ2UsXG4gICAgICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgICAgIHZlcnNpb24sXG4gICAgICAgICAgICBhY2NvdW50TmFtZSxcbiAgICAgICAgICAgIHRlYW1OYW1lLFxuICAgICAgICAgICAgdGVhbUlkZW50aWZpZXIsXG4gICAgICAgICAgICBhZGRpdGlvbmFsVGFnczogZGF0YWRvZ09wdGlvbnM/LmFkZGl0aW9uYWxUYWdzLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLmNvbnRhaW5lckRlZmluaXRpb25PcHRpb24uZW52aXJvbm1lbnQsXG4gICAgICAgIH0sXG4gICAgICAgIGRvY2tlckxhYmVsczoge1xuICAgICAgICAgIC4uLmRhdGFkb2cuZ2V0RmFyZ2F0ZURvY2tlckxhYmVscyh7IHN0YWdlLCBzZXJ2aWNlTmFtZSwgdmVyc2lvbiB9KSxcbiAgICAgICAgfSxcbiAgICAgICAgaGVhbHRoQ2hlY2s6IGNvbnRhaW5lckRlZmluaXRpb25PcHRpb24uaGVhbHRoQ2hlY2ssXG4gICAgICAgIGxvZ2dpbmc6IGRhdGFkb2cuc2V0dXBMb2dnaW5nKHtcbiAgICAgICAgICBzY29wZSxcbiAgICAgICAgICBhY2NvdW50TmFtZSxcbiAgICAgICAgICB0ZWFtTmFtZSxcbiAgICAgICAgICB0ZWFtSWRlbnRpZmllcixcbiAgICAgICAgICBzdGFnZSxcbiAgICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgICB2ZXJzaW9uLFxuICAgICAgICAgIGRhdGFkb2dBcGlLZXlQYXJhbWV0ZXIsXG4gICAgICAgICAgZGF0YWRvZ0xvZ2dpbmdNb2RlOiBsb2dnaW5nTW9kZUZvclNlcnZpY2UsXG4gICAgICAgICAgZGF0YWRvZ1NpdGUsXG4gICAgICAgICAgY29udGFpbmVyVHlwZTogJ3NlcnZpY2UnLFxuICAgICAgICAgIGFkZGl0aW9uYWxUYWdzOiBkYXRhZG9nT3B0aW9ucz8uYWRkaXRpb25hbFRhZ3MsXG4gICAgICAgIH0pLFxuICAgICAgICBzZWNyZXRzOiBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uLnNlY3JldHMsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBpZiAoZnJhbWV3b3Jrcz8uaW5jbHVkZXMoRnJhbWV3b3JrLlNQUklORykpIHtcbiAgICAgIFNwcmluZy5hbGxvd1BhcmFtZXRlclN0b3JlQWNjZXNzRm9yU3ByaW5nQ2xvdWRBd3MoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgICB0aGlzLnRhc2tEZWZpbml0aW9uLnRhc2tSb2xlLFxuICAgICAgKTtcbiAgICAgIFNwcmluZy5hbGxvd1NlY3JldHNNYW5hZ2VyQWNjZXNzRm9yU3ByaW5nQ2xvdWRBd3MoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgICB0aGlzLnRhc2tEZWZpbml0aW9uLnRhc2tSb2xlLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoZmlyZUxlbnNMb2dSb3V0ZXJSZXF1aXJlZCkge1xuICAgICAgdGhpcy5sb2dSb3V0ZXJDb250YWluZXJEZWZpbml0aW9uID0gZGF0YWRvZy5hZGRGaXJlTGVuc0xvZ1JvdXRlcih7XG4gICAgICAgIHRhc2tEZWZpbml0aW9uOiB0aGlzLnRhc2tEZWZpbml0aW9uLFxuICAgICAgICBjcHU6IHRoaXMuTE9HX1JPVVRFUl9DUFUsXG4gICAgICAgIG1lbW9yeUxpbWl0TWlCOiB0aGlzLkxPR19ST1VURVJfTUVNT1JZX0xJTUlUX01JQixcbiAgICAgICAgZmlyZWxlbnNDb25maWdCdWNrZXRBcm46IHRoaXMuRklSRUxFTlNfQ09ORklHX0JVQ0tFVF9BUk4sXG4gICAgICAgIGZpcmVsZW5zQ29uZmlnRmlsZVBhdGg6IHRoaXMuRklSRUxFTlNfQ09ORklHX0ZJTEVfUEFUSCxcbiAgICAgICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuZGF0YWRvZ1NpZGVDYXJDb250YWluZXJEZWZpbml0aW9uID0gZGF0YWRvZy5hZGREYXRhZG9nU2lkZWNhcih7XG4gICAgICBzY29wZSxcbiAgICAgIHRhc2tEZWZpbml0aW9uOiB0aGlzLnRhc2tEZWZpbml0aW9uLFxuICAgICAgYWNjb3VudE5hbWUsXG4gICAgICB0ZWFtTmFtZSxcbiAgICAgIHRlYW1JZGVudGlmaWVyLFxuICAgICAgc3RhZ2UsXG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICBkYXRhZG9nQXBpS2V5UGFyYW1ldGVyLFxuICAgICAgZGF0YWRvZ1NpdGUsXG4gICAgICBkYXRhZG9nTG9nZ2luZ01vZGU6IGxvZ2dpbmdNb2RlRm9yRGF0YWRvZ0FnZW50LFxuICAgICAgYXBtR2V0UmVzb3VyY2VzVG9JZ25vcmU6XG4gICAgICAgIGRhdGFkb2dPcHRpb25zPy5hcG1HZXRFbmRwb2ludHNUb0lnbm9yZSA/P1xuICAgICAgICB0aGlzLkRFRkFVTFRfQVBNX0dFVF9FTkRQT0lOVFNfVE9fSUdOT1JFLFxuICAgICAgY3B1OiBkYXRhZG9nU2lkZWNhckNwdSxcbiAgICAgIG1lbW9yeUxpbWl0TWlCOiBkYXRhZG9nU2lkZWNhck1lbW9yeU1pQixcbiAgICAgIGVzc2VudGlhbDogZGF0YWRvZ1NpZGVjYXJFc3NlbnRpYWwsXG4gICAgICBlbmFibGVSZXN0YXJ0UG9saWN5OiB0cnVlLFxuICAgICAgcmVzdGFydElnbm9yZWRFeGl0Q29kZXM6IFswXSxcbiAgICAgIGNvbnRhaW5lclRhZzpcbiAgICAgICAgcHJvcHMuZGF0YWRvZ09wdGlvbnM/LmRhdGFkb2dTaWRlY2FyVGFnID8/XG4gICAgICAgIHRoaXMuREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfVEFHLCAvLyBUaGVzZSBhcmUgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLFxuICAgICAgYWRkaXRpb25hbFRhZ3M6IGRhdGFkb2dPcHRpb25zPy5hZGRpdGlvbmFsVGFncyxcbiAgICB9KTtcblxuICAgIGRhdGFkb2cuZW5zdXJlTG9nZ2luZ0FuZE1vbml0b3JpbmdBcmVSZWFkeUJlZm9yZVNlcnZpY2VTdGFydHModGhpcyk7XG5cbiAgICBjb25zdCBsb2FkQmFsYW5jZXJPcHRpb25zRm9yRmFyZ2F0ZVNlcnZpY2UgPSBsb2FkQmFsYW5jZXJPcHRpb25zXG4gICAgICA/IHsgaGVhbHRoQ2hlY2tHcmFjZVBlcmlvZDogbG9hZEJhbGFuY2VyT3B0aW9ucy5oZWFsdGhDaGVja0dyYWNlUGVyaW9kIH1cbiAgICAgIDoge307XG5cbiAgICB0aGlzLnNlcnZpY2UgPSBuZXcgZWNzLkZhcmdhdGVTZXJ2aWNlKHRoaXMsICdTZXJ2aWNlJywge1xuICAgICAgY2x1c3RlcjogZmFyZ2F0ZUNsdXN0ZXIsXG4gICAgICB0YXNrRGVmaW5pdGlvbjogdGhpcy50YXNrRGVmaW5pdGlvbixcbiAgICAgIG1heEhlYWx0aHlQZXJjZW50OiAyMDAsXG4gICAgICBtaW5IZWFsdGh5UGVyY2VudDogMTAwLFxuICAgICAgZGVzaXJlZENvdW50OiBmYXJnYXRlT3B0aW9ucz8uZGVzaXJlZENvdW50LFxuICAgICAgZGVwbG95bWVudENvbnRyb2xsZXI6IHsgdHlwZTogZWNzLkRlcGxveW1lbnRDb250cm9sbGVyVHlwZS5DT0RFX0RFUExPWSB9LFxuICAgICAgLi4ubG9hZEJhbGFuY2VyT3B0aW9uc0ZvckZhcmdhdGVTZXJ2aWNlLFxuICAgICAgcHJvcGFnYXRlVGFnczogZWNzLlByb3BhZ2F0ZWRUYWdTb3VyY2UuU0VSVklDRSxcbiAgICB9KTtcblxuICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLnNlcnZpY2UuY29ubmVjdGlvbnM7XG5cbiAgICBpZiAobG9hZEJhbGFuY2VyT3B0aW9ucyAhPSBudWxsKSB7XG4gICAgICBjb25zdCBjb250YWluZXJQb3J0ID0gNDQzO1xuICAgICAgdGhpcy5zZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbi5hZGRQb3J0TWFwcGluZ3Moe1xuICAgICAgICBjb250YWluZXJQb3J0OiBjb250YWluZXJQb3J0LFxuICAgICAgICBwcm90b2NvbDogZWNzLlByb3RvY29sLlRDUCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5ibHVlVGFyZ2V0R3JvdXAgPSBuZXcgZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgJ0JsdWVUYXJnZXRHcm91cCcsXG4gICAgICAgIHtcbiAgICAgICAgICB2cGM6IHZwYyxcbiAgICAgICAgICBwb3J0OiBjb250YWluZXJQb3J0LFxuICAgICAgICAgIHByb3RvY29sOiBlbGJ2Mi5BcHBsaWNhdGlvblByb3RvY29sLkhUVFBTLFxuICAgICAgICAgIHRhcmdldFR5cGU6IGVsYnYyLlRhcmdldFR5cGUuSVAsXG4gICAgICAgICAgdGFyZ2V0czogW3RoaXMuc2VydmljZV0sXG4gICAgICAgICAgaGVhbHRoQ2hlY2s6IGxvYWRCYWxhbmNlck9wdGlvbnMuaGVhbHRoQ2hlY2ssXG4gICAgICAgICAgc2xvd1N0YXJ0OlxuICAgICAgICAgICAgcHJvcHMubG9hZEJhbGFuY2VyT3B0aW9ucz8uc2xvd1N0YXJ0ID8/IHRoaXMuREVGQVVMVF9TTE9XX1NUQVJULFxuICAgICAgICAgIGRlcmVnaXN0cmF0aW9uRGVsYXk6XG4gICAgICAgICAgICBwcm9wcy5sb2FkQmFsYW5jZXJPcHRpb25zPy5kZXJlZ2lzdHJhdGlvbkRlbGF5ID8/XG4gICAgICAgICAgICB0aGlzLkRFRkFVTFRfREVSRUdJU1RSQVRJT05fREVMQVksXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgdGhpcy5ncmVlblRhcmdldEdyb3VwID0gbmV3IGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAoXG4gICAgICAgIHRoaXMsXG4gICAgICAgICdHcmVlblRhcmdldEdyb3VwJyxcbiAgICAgICAge1xuICAgICAgICAgIHZwYzogdnBjLFxuICAgICAgICAgIHBvcnQ6IGNvbnRhaW5lclBvcnQsXG4gICAgICAgICAgcHJvdG9jb2w6IGVsYnYyLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUFMsXG4gICAgICAgICAgdGFyZ2V0VHlwZTogZWxidjIuVGFyZ2V0VHlwZS5JUCxcbiAgICAgICAgICB0YXJnZXRzOiBbdGhpcy5zZXJ2aWNlXSxcbiAgICAgICAgICBoZWFsdGhDaGVjazogbG9hZEJhbGFuY2VyT3B0aW9ucy5oZWFsdGhDaGVjayxcbiAgICAgICAgICBzbG93U3RhcnQ6XG4gICAgICAgICAgICBwcm9wcy5sb2FkQmFsYW5jZXJPcHRpb25zPy5zbG93U3RhcnQgPz8gdGhpcy5ERUZBVUxUX1NMT1dfU1RBUlQsXG4gICAgICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTpcbiAgICAgICAgICAgIHByb3BzLmxvYWRCYWxhbmNlck9wdGlvbnM/LmRlcmVnaXN0cmF0aW9uRGVsYXkgPz9cbiAgICAgICAgICAgIHRoaXMuREVGQVVMVF9ERVJFR0lTVFJBVElPTl9ERUxBWSxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIGxvYWRCYWxhbmNlck9wdGlvbnMubGlzdGVuZXJSdWxlcy5mb3JFYWNoKCh7IHByaW9yaXR5LCBjb25kaXRpb25zIH0pID0+IHtcbiAgICAgICAgbG9hZEJhbGFuY2VyT3B0aW9ucy5saXN0ZW5lci5hZGRUYXJnZXRHcm91cHMoYFByaW9yaXR5JHtwcmlvcml0eX1MaXN0ZW5lclJ1bGVgLCB7XG4gICAgICAgICAgdGFyZ2V0R3JvdXBzOiBbdGhpcy5ibHVlVGFyZ2V0R3JvdXAgYXMgZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cF0sXG4gICAgICAgICAgcHJpb3JpdHk6IHByaW9yaXR5LFxuICAgICAgICAgIGNvbmRpdGlvbnM6IGNvbmRpdGlvbnMsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBpZiAoYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZz8udGVzdExpc3RlbmVyKSB7XG4gICAgICAgIGxvYWRCYWxhbmNlck9wdGlvbnMubGlzdGVuZXJSdWxlcy5mb3JFYWNoKCh7IHByaW9yaXR5LCBjb25kaXRpb25zIH0pID0+IHtcbiAgICAgICAgICBibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnLnRlc3RMaXN0ZW5lcj8uYWRkVGFyZ2V0R3JvdXBzKGBQcmlvcml0eSR7cHJpb3JpdHl9TGlzdGVuZXJSdWxlYCwge1xuICAgICAgICAgICAgdGFyZ2V0R3JvdXBzOiBbdGhpcy5ncmVlblRhcmdldEdyb3VwIGFzIGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXBdLFxuICAgICAgICAgICAgcHJpb3JpdHk6IHByaW9yaXR5LFxuICAgICAgICAgICAgY29uZGl0aW9uczogY29uZGl0aW9ucyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVjc0RlcGxveW1lbnRHcm91cCA9IG5ldyBjb2RlZGVwbG95LkVjc0RlcGxveW1lbnRHcm91cCh0aGlzLCAnRGVwbG95bWVudEdyb3VwJywge1xuICAgICAgICBzZXJ2aWNlOiB0aGlzLnNlcnZpY2UsXG4gICAgICAgIGJsdWVHcmVlbkRlcGxveW1lbnRDb25maWc6IHtcbiAgICAgICAgICBibHVlVGFyZ2V0R3JvdXA6IHRoaXMuYmx1ZVRhcmdldEdyb3VwLFxuICAgICAgICAgIGdyZWVuVGFyZ2V0R3JvdXA6IHRoaXMuZ3JlZW5UYXJnZXRHcm91cCxcbiAgICAgICAgICBsaXN0ZW5lcjogbG9hZEJhbGFuY2VyT3B0aW9ucy5saXN0ZW5lcixcbiAgICAgICAgICB0ZXN0TGlzdGVuZXI6IGJsdWVHcmVlbkRlcGxveW1lbnRDb25maWc/LnRlc3RMaXN0ZW5lcixcbiAgICAgICAgfSxcbiAgICAgICAgZGVwbG95bWVudENvbmZpZzpcbiAgICAgICAgICBjb2RlZGVwbG95LkVjc0RlcGxveW1lbnRDb25maWcuQ0FOQVJZXzEwUEVSQ0VOVF81TUlOVVRFUyxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjcmVhdGVEZXBsb3ltZW50TGFtYmRhID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCAnQ3JlYXRlRGVwbG95bWVudExhbWJkYScsIHtcbiAgICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KGpvaW4oX19kaXJuYW1lLCAnY29kZWRlcGxveS1jdXN0b20tcmVzb3VyY2VzJyksIHtcbiAgICAgICAgICBleGNsdWRlOiBbJyouanMnLCAnKi5kLnRzJ10sXG4gICAgICAgIH0pLFxuICAgICAgICBoYW5kbGVyOiAnY3JlYXRlLWRlcGxveW1lbnQtb24tY3JlYXRlLmhhbmRsZXInLFxuICAgICAgICBydW50aW1lOiBERUZBVUxUX05PREVfUlVOVElNRSxcbiAgICAgICAgYXJjaGl0ZWN0dXJlOiBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgIGxvZ0dyb3VwOiBuZXcgbG9ncy5Mb2dHcm91cCh0aGlzLCAnQ3JlYXRlRGVwbG95bWVudExhbWJkYUxvZ0dyb3VwJywge1xuICAgICAgICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9XRUVLLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgICAgY3JlYXRlRGVwbG95bWVudExhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6R2V0QXBwbGljYXRpb25SZXZpc2lvbicsXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6UmVnaXN0ZXJBcHBsaWNhdGlvblJldmlzaW9uJyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgZWNzRGVwbG95bWVudEdyb3VwLmFwcGxpY2F0aW9uLmFwcGxpY2F0aW9uQXJuLFxuICAgICAgICBdLFxuICAgICAgfSkpO1xuICAgICAgY3JlYXRlRGVwbG95bWVudExhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6Q3JlYXRlRGVwbG95bWVudCcsXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6U3RvcERlcGxveW1lbnQnLFxuICAgICAgICAgICdjb2RlZGVwbG95OkdldERlcGxveW1lbnQnLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICBlY3NEZXBsb3ltZW50R3JvdXAuZGVwbG95bWVudEdyb3VwQXJuLFxuICAgICAgICBdLFxuICAgICAgfSkpO1xuICAgICAgY3JlYXRlRGVwbG95bWVudExhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6R2V0RGVwbG95bWVudENvbmZpZycsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGVjc0RlcGxveW1lbnRHcm91cC5kZXBsb3ltZW50Q29uZmlnLmRlcGxveW1lbnRDb25maWdBcm4sXG4gICAgICAgIF0sXG4gICAgICB9KSk7XG5cbiAgICAgIGNvbnN0IGlzQ29tcGxldGVEZXBsb3ltZW50TGFtYmRhID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCAnSXNDb21wbGV0ZURlcGxveW1lbnRMYW1iZGEnLCB7XG4gICAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChqb2luKF9fZGlybmFtZSwgJ2NvZGVkZXBsb3ktY3VzdG9tLXJlc291cmNlcycpLCB7XG4gICAgICAgICAgZXhjbHVkZTogWycqLmpzJywgJyouZC50cyddLFxuICAgICAgICB9KSxcbiAgICAgICAgaGFuZGxlcjogJ2NyZWF0ZS1kZXBsb3ltZW50LWlzLWNvbXBsZXRlLmhhbmRsZXInLFxuICAgICAgICBydW50aW1lOiBERUZBVUxUX05PREVfUlVOVElNRSxcbiAgICAgICAgYXJjaGl0ZWN0dXJlOiBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgIGxvZ0dyb3VwOiBuZXcgbG9ncy5Mb2dHcm91cCh0aGlzLCAnSXNDb21wbGV0ZURlcGxveW1lbnRMYW1iZGFMb2dHcm91cCcsIHtcbiAgICAgICAgICByZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfV0VFSyxcbiAgICAgICAgfSksXG4gICAgICB9KTtcbiAgICAgIGlzQ29tcGxldGVEZXBsb3ltZW50TGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnY29kZWRlcGxveTpHZXREZXBsb3ltZW50JyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgZWNzRGVwbG95bWVudEdyb3VwLmRlcGxveW1lbnRHcm91cEFybixcbiAgICAgICAgXSxcbiAgICAgIH0pKTtcbiAgICAgIGNvbnN0IGNyZWF0ZURlcGxveW1lbnRMYW1iZGFQcm92aWRlciA9IG5ldyBjci5Qcm92aWRlcih0aGlzLCAnQ3JlYXRlRGVwbG95bWVudFByb3ZpZGVyJywge1xuICAgICAgICBvbkV2ZW50SGFuZGxlcjogY3JlYXRlRGVwbG95bWVudExhbWJkYSxcbiAgICAgICAgaXNDb21wbGV0ZUhhbmRsZXI6IGlzQ29tcGxldGVEZXBsb3ltZW50TGFtYmRhLFxuICAgICAgICB0b3RhbFRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDYwKSxcbiAgICAgIH0pO1xuICAgICAgbGV0IHJ1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGE6IG5vZGVqc2xhbWJkYS5Ob2RlanNGdW5jdGlvbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgIGlmIChibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnPy5jYXBhYmlsaXR5TmFtZXMpIHtcbiAgICAgICAgLy8gcnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYSA9IG5ldyBub2RlanNsYW1iZGEuTm9kZWpzRnVuY3Rpb24odGhpcywgJ1J1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGEnLCB7XG4gICAgICAgIC8vICAgZW50cnk6ICcuL3NyYy9mYXJnYXRlL2NvZGVkZXBsb3ktY3VzdG9tLXJlc291cmNlcy9ydW4tbW9uaXRvcmluZy10ZXN0LXN1aXRlLXJ1bm5lci50cycsXG4gICAgICAgIC8vICAgaGFuZGxlcjogJ2hhbmRsZXInLFxuICAgICAgICAvLyAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICAvLyAgIHJ1bnRpbWU6IERFRkFVTFRfTk9ERV9SVU5USU1FLFxuICAgICAgICAvLyAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIC8vICAgICBDQVBBQklMSVRJRVNfTkFNRTogYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZy5jYXBhYmlsaXR5TmFtZXMuam9pbignLCcpLFxuICAgICAgICAvLyAgICAgU1VCTkVUUzogdnBjLnNlbGVjdFN1Ym5ldHMoeyBzdWJuZXRUeXBlOiBlYzIuU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTIH0pLnN1Ym5ldElkcy5qb2luKCcsJyksXG4gICAgICAgIC8vICAgfSxcbiAgICAgICAgLy8gfSk7XG4gICAgICAgIHJ1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGEgPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsICdSdW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhJywge1xuICAgICAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChqb2luKF9fZGlybmFtZSwgJ2NvZGVkZXBsb3ktY3VzdG9tLXJlc291cmNlcycpLCB7XG4gICAgICAgICAgICBleGNsdWRlOiBbJyouanMnLCAnKi5kLnRzJ10sXG4gICAgICAgICAgfSksXG4gICAgICAgICAgaGFuZGxlcjogJ3J1bi1tb25pdG9yaW5nLXRlc3Qtc3VpdGUtcnVubmVyLmhhbmRsZXInLFxuICAgICAgICAgIHJ1bnRpbWU6IERFRkFVTFRfTk9ERV9SVU5USU1FLFxuICAgICAgICAgIGFyY2hpdGVjdHVyZTogbGFtYmRhLkFyY2hpdGVjdHVyZS5BUk1fNjQsXG4gICAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgICAgbG9nR3JvdXA6IG5ldyBsb2dzLkxvZ0dyb3VwKHRoaXMsICdSdW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhckxvZ0dyb3VwJywge1xuICAgICAgICAgICAgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgICAgICAgfSksXG4gICAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICAgIENBUEFCSUxJVElFU19OQU1FOiBibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnLmNhcGFiaWxpdHlOYW1lcy5qb2luKCcsJyksXG4gICAgICAgICAgICBTVUJORVRTOiB2cGMuc2VsZWN0U3VibmV0cyh7IHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MgfSkuc3VibmV0SWRzLmpvaW4oJywnKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVnaW9uID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5yZWdpb247XG4gICAgICAgIGNvbnN0IGFjY291bnQgPSBjZGsuU3RhY2sub2Yoc2NvcGUpLmFjY291bnQ7XG4gICAgICAgIHJ1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGEuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAnZWNzOlJ1blRhc2snLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICBgYXJuOmF3czplY3M6JHtyZWdpb259OiR7YWNjb3VudH06dGFzay1kZWZpbml0aW9uL21vbml0b3JpbmctdGVzdHN1aXRlLXJ1bm5lcipgLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pKTtcbiAgICAgICAgcnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICdlY3M6TGlzdENMdXN0ZXJzJyxcbiAgICAgICAgICAgICdlY3M6TGlzdFRhc2tEZWZpbml0aW9ucycsXG4gICAgICAgICAgXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICcqJyxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSk7XG4gICAgICAgIHJ1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGEuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbJ2lhbTpQYXNzUm9sZSddLFxuICAgICAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOmlhbTo6JHthY2NvdW50fTpyb2xlL21vbml0b3JpbmctdGVzdHN1aXRlKmBdLFxuICAgICAgICB9KSk7XG4gICAgICB9XG5cbiAgICAgIG5ldyBjZGsuQ3VzdG9tUmVzb3VyY2UodGhpcywgJ0NyZWF0ZURlcGxveW1lbnQnLCB7XG4gICAgICAgIHNlcnZpY2VUb2tlbjogY3JlYXRlRGVwbG95bWVudExhbWJkYVByb3ZpZGVyLnNlcnZpY2VUb2tlbixcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIEFwcGxpY2F0aW9uTmFtZTogZWNzRGVwbG95bWVudEdyb3VwLmFwcGxpY2F0aW9uLmFwcGxpY2F0aW9uTmFtZSxcbiAgICAgICAgICBEZXBsb3ltZW50R3JvdXBOYW1lOiBlY3NEZXBsb3ltZW50R3JvdXAuZGVwbG95bWVudEdyb3VwTmFtZSxcbiAgICAgICAgICBUYXNrRGVmaW5pdGlvbkFybjogdGhpcy50YXNrRGVmaW5pdGlvbi50YXNrRGVmaW5pdGlvbkFybixcbiAgICAgICAgICBDb250YWluZXJOYW1lOiBzZXJ2aWNlTmFtZSxcbiAgICAgICAgICBDb250YWluZXJQb3J0OiBjb250YWluZXJQb3J0LFxuICAgICAgICAgIEFmdGVyQWxsb3dUZXN0VHJhZmZpY0hvb2s6IHJ1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGE/LmZ1bmN0aW9uQXJuLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgRGVueUxpc3RlZEtleVZhbGlkYXRvciBpbXBsZW1lbnRzIGNvbnN0cnVjdHMuSVZhbGlkYXRpb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlbnlMaXN0OiBzdHJpbmdbXSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpY3Q6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCB1bmRlZmluZWQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlR2VuZXJhdG9yOiAoa2V5TmFtZTogc3RyaW5nKSA9PiBzdHJpbmcsXG4gICkge31cblxuICB2YWxpZGF0ZSgpOiBzdHJpbmdbXSB7XG4gICAgaWYgKCF0aGlzLmRpY3QpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG4gICAgdGhpcy5kZW55TGlzdC5mb3JFYWNoKChrZXlOYW1lKSA9PiB7XG4gICAgICBpZiAodGhpcy5kaWN0ICYmIGtleU5hbWUgaW4gdGhpcy5kaWN0KSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHRoaXMubWVzc2FnZUdlbmVyYXRvcihrZXlOYW1lKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbmNsYXNzIENsdXN0ZXJWcGNWYWxpZGF0b3IgaW1wbGVtZW50cyBjb25zdHJ1Y3RzLklWYWxpZGF0aW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB2cGM6IGVjMi5JVnBjLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2x1c3Rlcj86IGVjcy5JQ2x1c3RlcixcbiAgKSB7fVxuXG4gIHZhbGlkYXRlKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBpZiAodGhpcy5jbHVzdGVyICYmIHRoaXMuY2x1c3Rlci52cGMudnBjSWQgIT09IHRoaXMudnBjLnZwY0lkKSB7XG4gICAgICByZXN1bHQucHVzaChcbiAgICAgICAgYFRoZSBWUEMgcHJvdmlkZWQgaW4gdGhlIGNsdXN0ZXIgKCR7dGhpcy5jbHVzdGVyLnZwYy5ub2RlLmlkfSkgTVVTVCBtYXRjaCB0aGUgVlBDIHByb3ZpZGVkIGFzIGFyZ3VtZW50ICgke3RoaXMudnBjLm5vZGUuaWR9KS5gLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
|
|
@@ -14,6 +14,7 @@ const ssm = require("aws-cdk-lib/aws-ssm");
|
|
|
14
14
|
const cdk = require("aws-cdk-lib/core");
|
|
15
15
|
const constructs_1 = require("constructs");
|
|
16
16
|
const helper_1 = require("./helper");
|
|
17
|
+
const constants_1 = require("../constants");
|
|
17
18
|
const datadogv2_1 = require("../datadogv2");
|
|
18
19
|
const rio_landing_zone_1 = require("../rio-landing-zone");
|
|
19
20
|
/**
|
|
@@ -99,7 +100,7 @@ class SesObservability extends constructs_1.Construct {
|
|
|
99
100
|
});
|
|
100
101
|
const logFunction = new lambda.Function(this, 'LogFunction', {
|
|
101
102
|
functionName: 'rio-ses-observability-log-function',
|
|
102
|
-
runtime:
|
|
103
|
+
runtime: constants_1.DEFAULT_NODE_RUNTIME,
|
|
103
104
|
architecture: lambda.Architecture.ARM_64,
|
|
104
105
|
handler: 'ses-logger.handler',
|
|
105
106
|
logRetention: aws_logs_1.RetentionDays.THREE_MONTHS,
|
|
@@ -242,4 +243,4 @@ SesObservability[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.SesObservability", v
|
|
|
242
243
|
// ! changing these values is a breaking change for users
|
|
243
244
|
SesObservability.CONFIGURATION_SET_NAME_SSM_PARAMETER = '/rio/config/ses-observability/configuration-set-name';
|
|
244
245
|
SesObservability.SNS_TOPIC_ARN_EXPORT_NAME = 'RioSesObservabilityTopicArn';
|
|
245
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VzLW9ic2VydmFiaWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VzL3Nlcy1vYnNlcnZhYmlsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLDZDQUFvQztBQUNwQyxpREFBaUQ7QUFFakQsbURBQTRFO0FBQzVFLDJDQUEyQztBQUMzQywyQ0FBMkM7QUFDM0Msc0VBQXNFO0FBQ3RFLDJDQUEyQztBQUMzQyx3Q0FBd0M7QUFDeEMsMkNBQXVDO0FBQ3ZDLHFDQUFzQztBQUN0Qyw0Q0FBNEY7QUFDNUYsMERBQXFEO0FBWXJEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdURHO0FBQ0gsTUFBYSxnQkFBaUIsU0FBUSxzQkFBUztJQU83QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTRCO1FBQ3BFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsTUFBTSxTQUFTLEdBQUcsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ3pDLE1BQU0sV0FBVyxHQUFHLGlDQUFjLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDO1FBRTdFLE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUU7WUFDdEUsYUFBYSxFQUFFLGdCQUFnQixDQUFDLG9DQUFvQztZQUNwRSxXQUFXLEVBQUUseUNBQXlDO1NBQ3ZELENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDOUMsU0FBUyxFQUFFLDZCQUE2QjtTQUN6QyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxHQUFH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QUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgTm9kZWpzRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqcyc7XG5pbXBvcnQgeyBDZm5TdWJzY3JpcHRpb25GaWx0ZXIsIFJldGVudGlvbkRheXMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgKiBhcyBzZXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNlcyc7XG5pbXBvcnQgKiBhcyBzbnMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNucyc7XG5pbXBvcnQgKiBhcyBzbnNTdWJzY3JpcHRpb25zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zbnMtc3Vic2NyaXB0aW9ucyc7XG5pbXBvcnQgKiBhcyBzc20gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNzbSc7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IHRyaW1JbmRlbnQgfSBmcm9tICcuL2hlbHBlcic7XG5pbXBvcnQgeyBEYXRhZG9nTW9uaXRvciwgRGF0YWRvZ01vbml0b3JRdWVyeUFsZXJ0VHlwZSwgTm9Ob3RpZmljYXRpb24gfSBmcm9tICcuLi9kYXRhZG9ndjInO1xuaW1wb3J0IHsgUmlvTGFuZGluZ1pvbmUgfSBmcm9tICcuLi9yaW8tbGFuZGluZy16b25lJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIFNlc09ic2VydmFiaWxpdHlQcm9wcyB7XG4gIC8qKlxuICAgICAqIFRoZSBTRVMgZXZlbnRzIHRvIGxvZy5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFtFbWFpbFNlbmRpbmdFdmVudC5ERUxJVkVSWSwgRW1haWxTZW5kaW5nRXZlbnQuQk9VTkNFLCBFbWFpbFNlbmRpbmdFdmVudC5DT01QTEFJTlQsIEVtYWlsU2VuZGluZ0V2ZW50LlJFSkVDVF1cbiAgICAgKi9cbiAgcmVhZG9ubHkgbG9nZ2VkU2VzRXZlbnRzPzogc2VzLkVtYWlsU2VuZGluZ0V2ZW50W107XG59XG5cbi8qKlxuICogUmlvU2VzT2JzZXJ2YWJpbGl0eVxuICpcbiAqIFRoaXMgY29uc3RydWN0IHNldHMgdXAgb2JzZXJ2YWJpbGl0eSBmb3IgU0VTIGFzIGRlZmluZWQgYnkgW0FEUiAtIFNFUyBkb21haW4gcmVwdXRhdGlvbiBvYnNlcnZhYmlsaXR5XShodHRwczovL2NvbmZsdWVuY2UuY29sbGFib3JhdGlvbi1tYW4uY29tL2Rpc3BsYXkvTUFOL0FEUistK1NFUytkb21haW4rcmVwdXRhdGlvbitvYnNlcnZhYmlsaXR5KS5cbiAqXG4gKiAjIFdhcm5pbmdcbiAqIFRoaXMgY29uc3RydWN0IHJlc3VsdHMgaW4gbG9nZ2luZyBhbGwgc2VudCBlbWFpbHMgaW5jbHVkaW5nIHRoZSByZWNpcGllbnQgYWRkcmVzcyBpbnRvIENsb3VkV2F0Y2ggbG9ncy5cbiAqIEFzIHRoaXMgaXMgY29uc2lkZXJlZCAqKlBJSSoqLCB0aGlzIGluZm9ybWF0aW9uIE1VU1QgYmUgaGFuZGxlZCBhY2NvcmRpbmdseS5cbiAqIEluIHBhcnRpY3VsYXIsIGxvZ3MgKipNVVNUIE5PVCoqIGJlIHNlbnQgdG8gZnVydGhlciB0aGlyZCBwYXJ0eSBzZXJ2aWNlcyAoZS5nLiBEYXRhZG9nKSBhbmQgdGhlIHJldGVudGlvbiBwZXJpb2QgZm9yIGxvZ3MgKipNVVNUIE5PVCoqIGJlIGV4dGVuZGVkLlxuICpcbiAqICMgVXNhZ2VcbiAqICMjIERlZmF1bHQgQ29uZmlndXJhdGlvbiBTZXQgZm9yIElkZW50aXR5XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmlvU2VzT2JzZXJ2YWJpbGl0eSA9IG5ldyBSaW9TZXNPYnNlcnZhYmlsaXR5KHRoaXMsICdDb25maWd1cmF0aW9uU2V0Jywge30pXG4gKiBjb25zdCBpZGVudGl0eSA9IG5ldyBFbWFpbElkZW50aXR5KHRoaXMsICdFbWFpbElkZW50aXR5Jywge1xuICogICAgIGlkZW50aXR5OiBJZGVudGl0eS5kb21haW4oJ2V4YW1wbGUuY29tJyksXG4gKiAgICAgY29uZmlndXJhdGlvblNldDogcmlvU2VzT2JzZXJ2YWJpbGl0eS5jb25maWd1cmF0aW9uU2V0LFxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiAjIyBTcGVjaWZpY2FsbHkgdXNpbmcgdGhlIGNvbmZpZ3VyYXRpb24gc2V0IHBlciByZXF1ZXN0XG4gKlxuICogVGhpcyBpcyBpZGVhbCBpZiB5b3Ugd2FudCB0byB0cnkgb3V0IHRoZSBjb25zdHJ1Y3QgZmlyc3Qgb25lIHNvbWUgc3BlY2lmaWMgZW1haWxzIChlLmcuIGR1cmluZyBpbml0aWFsIG1pZ3JhdGlvbikuXG4gKiBUaGUgY29uZmlndXJhdGlvbiBzZXQgbmFtZSBpcyBleHBvcnRlZCBhcyBhbiBTU00gcGFyYW1ldGVyIGAvcmlvL2NvbmZpZy9zZXMtb2JzZXJ2YWJpbGl0eS9jb25maWd1cmF0aW9uLXNldC1uYW1lYC5cbiAqIFRodXMsIHlvdSBjYW4gZWFzaWx5IG1ha2UgaXQgYXZhaWxhYmxlIGFzIGVudmlyb25tZW50IHZhcmlhYmxlIGluIHlvdXIgY29kZS5cbiAqXG4gKiBgYGBrb3RsaW5cbiAqIGltcG9ydCBjb20uYW1hem9uYXdzLnNlcnZpY2VzLnNpbXBsZWVtYWlsLm1vZGVsLlNlbmRFbWFpbFJlcXVlc3RcbiAqXG4gKiB2YWwgcmVxdWVzdCA9IFNlbmRFbWFpbFJlcXVlc3QoKVxuICogICAgICAgICAgICAgICAgIC53aXRoQ29uZmlndXJhdGlvblNldE5hbWUoU1NNX0NPTkZJR1VSQVRJT05fU1NNX1BBUkFNRVRFUl9WQUxVRSlcbiAqICAgICAgICAgICAgICAgICAuLi5cbiAqIGBgYFxuICpcbiAqICMjIEF1dG9tYXRlZCBldmVudCBwcm9jZXNzaW5nXG4gKlxuICogSWYgeW91IGhhdmUgc3BlY2lmaWMgbmVlZHMgZm9yIHdoaWNoIHlvdSdkIGxpa2UgdG8gcHJvY2VzcyB0aGUgU05TIGV2ZW50cyBkaXJlY3RseVxuICogKGUuZy4gYXV0b21hdGljYWxseSBjcmVhdGluZyBhIHN1cHByZXNzaW9uIGxpc3QgZnJvbSBib3VuY2VzKSwgeW91IGNhbiBzdWJzY3JpYmUgdG8gdGhlIFNOUyB0b3BpYy5cbiAqIFRvIGVuYWJsZSB0aGlzIHRoZSBTTlMgdG9waWMgQVJOIGlzIGV4cG9ydGVkIHZpYSBDbG91ZGZvcm1hdGlvbiBhcyBgUmlvU2VzT2JzZXJ2YWJpbGl0eVRvcGljQXJuYC5cbiAqXG4gKiAjIE5vdGVzXG4gKiAjIyBBZGQgbmVjZXNzYXJ5IHBlcm1pc3Npb25zIGZvciBmYXJnYXRlIHRhc2sgdG8gZW5hYmxlIHVzaW5nIHNlcyBjb25maWd1cmF0aW9uIHNldFxuICogTWFrZSBzdXJlIHlvdSBoYXZlIHRoZSBmb2xsb3dpbmcgcGVybWlzc2lvbnMgaW4gdGhlIHRhc2sgcm9sZSBvZiB0aGUgZmFyZ2F0ZSB0YXNrLCBlLmcuOlxuICogYGBgdHlwZXNjcmlwdFxuICogICAgIHNlcnZpY2UudGFza0RlZmluaXRpb24udGFza1JvbGUuYWRkVG9QcmluY2lwYWxQb2xpY3koXG4gKiAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gKiAgICAgICAgIGFjdGlvbnM6IFsnc2VzOnNlbmRFbWFpbCcsICdzZXM6c2VuZFJhd0VtYWlsJ10sXG4gKiAgICAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOnNlczo8eW91cl9yZWdpb24+Ojx5b3VyX2FjY291bnQ+OmNvbmZpZ3VyYXRpb24tc2V0Lzx5b3VyX2NvbmZpZ3VyYXRpb25fc2V0X25hbWU+YF0sXG4gKiAgICAgICB9KSk7XG4gKiBgYGBcbiAqXG4gKiAjIyBXYXRjaGZ1bFxuICogSXQgbWlnaHQgYmUgaGVscGZ1bCB0byBhZGQgd2F0Y2hmdWwgdG8geW91ciBzdGFjayB0b1xuICogZ2V0IG5vdGlmaWVkIGlmIHRoZSBzZXMtbG9nZ2VyIGxhbWJkYSBmYWlscy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNlc09ic2VydmFiaWxpdHkgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvLyAhIGNoYW5naW5nIHRoZXNlIHZhbHVlcyBpcyBhIGJyZWFraW5nIGNoYW5nZSBmb3IgdXNlcnNcbiAgc3RhdGljIHJlYWRvbmx5IENPTkZJR1VSQVRJT05fU0VUX05BTUVfU1NNX1BBUkFNRVRFUiA9ICcvcmlvL2NvbmZpZy9zZXMtb2JzZXJ2YWJpbGl0eS9jb25maWd1cmF0aW9uLXNldC1uYW1lJztcbiAgc3RhdGljIHJlYWRvbmx5IFNOU19UT1BJQ19BUk5fRVhQT1JUX05BTUUgPSAnUmlvU2VzT2JzZXJ2YWJpbGl0eVRvcGljQXJuJztcbiAgcmVhZG9ubHkgc25zVG9waWM6IHNucy5Ub3BpYztcbiAgcmVhZG9ubHkgY29uZmlndXJhdGlvblNldDogc2VzLkNvbmZpZ3VyYXRpb25TZXQ7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNlc09ic2VydmFiaWxpdHlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgY29uc3QgYWNjb3VudElkID0gU3RhY2sub2YodGhpcykuYWNjb3VudDtcbiAgICBjb25zdCBhY2NvdW50TmFtZSA9IFJpb0xhbmRpbmdab25lLmdldEFjY291bnROYW1lUGFyYW1ldGVyKHRoaXMpLnN0cmluZ1ZhbHVlO1xuXG4gICAgY29uc3QgcGFyYW1ldGVyID0gbmV3IHNzbS5TdHJpbmdQYXJhbWV0ZXIodGhpcywgJ0NvbmZpZ3VyYXRpb25TZXROYW1lJywge1xuICAgICAgcGFyYW1ldGVyTmFtZTogU2VzT2JzZXJ2YWJpbGl0eS5DT05GSUdVUkFUSU9OX1NFVF9OQU1FX1NTTV9QQVJBTUVURVIsXG4gICAgICBzdHJpbmdWYWx1ZTogJ3Jpby1zZXMtb2JzZXJ2YWJpbGl0eS1jb25maWd1cmF0aW9uLXNldCcsXG4gICAgfSk7XG5cbiAgICB0aGlzLnNuc1RvcGljID0gbmV3IHNucy5Ub3BpYyh0aGlzLCAnU25zVG9waWMnLCB7XG4gICAgICB0b3BpY05hbWU6ICdyaW8tc2VzLW9ic2VydmFiaWxpdHktdG9waWMnLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jb25maWd1cmF0aW9uU2V0ID0gbmV3IHNlcy5Db25maWd1cmF0aW9uU2V0KHRoaXMsICdDb25maWd1cmF0aW9uU2V0Jywge1xuICAgICAgY29uZmlndXJhdGlvblNldE5hbWU6IHBhcmFtZXRlci5zdHJpbmdWYWx1ZSxcbiAgICB9KTtcblxuICAgIHRoaXMuY29uZmlndXJhdGlvblNldC5hZGRFdmVudERlc3RpbmF0aW9uKCdFdmVudERlc3RpbmF0aW9uJywge1xuICAgICAgY29uZmlndXJhdGlvblNldEV2ZW50RGVzdGluYXRpb25OYW1lOiAncmlvLXNlcy1vYnNlcnZhYmlsaXR5LWV2ZW50LWRlc3RpbmF0aW9uJyxcbiAgICAgIGRlc3RpbmF0aW9uOiBzZXMuRXZlbnREZXN0aW5hdGlvbi5zbnNUb3BpYyh0aGlzLnNuc1RvcGljKSxcbiAgICAgIGV2ZW50czogcHJvcHMubG9nZ2VkU2VzRXZlbnRzID8/IFtcbiAgICAgICAgc2VzLkVtYWlsU2VuZGluZ0V2ZW50LkRFTElWRVJZLFxuICAgICAgICBzZXMuRW1haWxTZW5kaW5nRXZlbnQuQk9VTkNFLFxuICAgICAgICBzZXMuRW1haWxTZW5kaW5nRXZlbnQuQ09NUExBSU5ULFxuICAgICAgICBzZXMuRW1haWxTZW5kaW5nRXZlbnQuUkVKRUNULFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGxvZ0Z1bmN0aW9uID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCAnTG9nRnVuY3Rpb24nLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6ICdyaW8tc2VzLW9ic2VydmFiaWxpdHktbG9nLWZ1bmN0aW9uJyxcbiAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18yMF9YLFxuICAgICAgYXJjaGl0ZWN0dXJlOiBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgIGhhbmRsZXI6ICdzZXMtbG9nZ2VyLmhhbmRsZXInLFxuICAgICAgbG9nUmV0ZW50aW9uOiBSZXRlbnRpb25EYXlzLlRIUkVFX01PTlRIUyxcbiAgICAgIHN5c3RlbUxvZ0xldmVsVjI6IGxhbWJkYS5TeXN0ZW1Mb2dMZXZlbC5XQVJOLFxuICAgICAgbG9nZ2luZ0Zvcm1hdDogbGFtYmRhLkxvZ2dpbmdGb3JtYXQuSlNPTixcbiAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnbGFtYmRhJyksIHtcbiAgICAgICAgZXhjbHVkZTogWycqLmpzJywgJyouZC50cyddLFxuICAgICAgfSksXG4gICAgfSk7XG4gICAgdGhpcy5lbnN1cmVOb1N1YnNjcmlwdGlvbkZpbHRlcnNPbkxhbWJkYXNMb2dHcm91cChsb2dGdW5jdGlvbik7XG5cbiAgICB0aGlzLnNuc1RvcGljLmFkZFN1YnNjcmlwdGlvbihuZXcgc25zU3Vic2NyaXB0aW9ucy5MYW1iZGFTdWJzY3JpcHRpb24obG9nRnVuY3Rpb24pKTtcblxuICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsICdTbnNUb3BpY0FybicsIHtcbiAgICAgIHZhbHVlOiB0aGlzLnNuc1RvcGljLnRvcGljQXJuLFxuICAgICAgZXhwb3J0TmFtZTogU2VzT2JzZXJ2YWJpbGl0eS5TTlNfVE9QSUNfQVJOX0VYUE9SVF9OQU1FLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgbm90aWZpY2F0aW9uSGFuZGxlID0gUmlvTGFuZGluZ1pvbmUuZ2V0VGVhbUFsZXJ0U2xhY2tDaGFubmVsUGFyYW1ldGVyKHRoaXMpLnN0cmluZ1ZhbHVlO1xuXG4gICAgbmV3IERhdGFkb2dNb25pdG9yKHRoaXMsICdRdW90YU1vbml0b3InLCB7XG4gICAgICBuYW1lOiBgJHthY2NvdW50TmFtZX0gU0VTIHF1b3RhIGFsbW9zdCByZWFjaGVkYCxcbiAgICAgIHNlcnZpY2VOYW1lOiAnYXdzLXNlcycsXG4gICAgICBtb25pdG9yVHlwZTogRGF0YWRvZ01vbml0b3JRdWVyeUFsZXJ0VHlwZS5RVUVSWV9BTEVSVCxcbiAgICAgIHF1ZXJ5OiBgbWF4KGxhc3RfMWgpOm1heDphd3Muc2VzLnNlbnRfbGFzdF8yNF9ob3Vyc3thY2NvdW50X2lkOiR7YWNjb3VudElkfX0gLyBtYXg6YXdzLnNlcy5tYXhfMjRfaG91cl9zZW5ke2FjY291bnRfaWQ6JHthY2NvdW50SWR9fSA+IDAuOGAsXG4gICAgICBtZXNzYWdlOiB0cmltSW5kZW50YFxuICAgICAgICBZb3UgYXJlIGFsbW9zdCB1c2luZyB1cCB5b3UncmUgbWF4aW11bSBlbWFpbCBzZW5kaW5nIHF1b3RhIHBlciAyNGguIFxuICAgICAgICBFaXRoZXIgW3JlcXVlc3QgYW4gaW5jcmVhc2VdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zZXMvbGF0ZXN0L2RnL21hbmFnZS1zZW5kaW5nLXF1b3Rhcy1yZXF1ZXN0LWluY3JlYXNlLmh0bWwpIGZvciB5b3VyIHF1b3RhIGJ5IEFXUyBvciByZWR1Y2UgdGhlIGFtb3VudCBvZiBlbWFpbHMgc2VudC5cbiAgICAgICAgWW91IGNhbiBmaW5kIGxvZ3MgYWJvdXQgYWxsIG1haWxzIHNlbnQgYXQgXFxgJHtsb2dGdW5jdGlvbi5sb2dHcm91cC5sb2dHcm91cE5hbWV9XFxgLlxuICAgICAgICBcbiAgICAgICAge3sjaXNfYWxlcnR9fUBzbGFjay0ke25vdGlmaWNhdGlvbkhhbmRsZX17ey9pc19hbGVydH19XG4gICAgICAgIHt7I2lzX2FsZXJ0X3JlY292ZXJ5fX1Ac2xhY2stJHtub3RpZmljYXRpb25IYW5kbGV9e3svaXNfYWxlcnRfcmVjb3Zlcnl9fVxuICAgICAgICBgLFxuICAgICAgcHJpb3JpdHk6IDQsXG4gICAgICBvcHRpb25PdmVycmlkZXM6IHtcbiAgICAgICAgdGhyZXNob2xkczoge1xuICAgICAgICAgIGNyaXRpY2FsOiAwLjgsXG4gICAgICAgICAgd2FybmluZzogMC43LFxuICAgICAgICB9LFxuICAgICAgICBldmFsdWF0aW9uRGVsYXk6IDkwMCxcbiAgICAgIH0sXG4gICAgICBub3RpZmljYXRpb246IG5ldyBOb05vdGlmaWNhdGlvbigpLFxuICAgIH0pO1xuXG4gICAgbmV3IERhdGFkb2dNb25pdG9yKHRoaXMsICdFbWFpbFJlamVjdGVkTW9uaXRvcicsIHtcbiAgICAgIG5hbWU6IGAke2FjY291bnROYW1lfSBTRVMgRW1haWwgUmVqZWN0ZWRgLFxuICAgICAgc2VydmljZU5hbWU6ICdhd3Mtc2VzJyxcbiAgICAgIG1vbml0b3JUeXBlOiBEYXRhZG9nTW9uaXRvclF1ZXJ5QWxlcnRUeXBlLlFVRVJZX0FMRVJULFxuICAgICAgcXVlcnk6IGBzdW0obGFzdF8xaCk6bWF4OmF3cy5zZXMucmVqZWN0c3thY2NvdW50X2lkOiR7YWNjb3VudElkfX0gPiAwYCxcbiAgICAgIG1lc3NhZ2U6IHRyaW1JbmRlbnRgXG4gICAgICAgIFNFUyBbcmVqZWN0ZWRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zZXMvbGF0ZXN0L2RnL21vbml0b3Itc2VuZGluZy1hY3Rpdml0eS5odG1sKSBzZW5kaW5nIGF0IGxlYXN0IG9uZSBlbWFpbC5cbiAgICAgICAgUGxlYXNlIGludmVzdGlnYXRlIHRoZSByb290IGNhc2UsIGFzIHRoaXMgaXMgbm90IGV4cGVjdGVkIHRvIGhhcHBlbiBpbiBwcm9kdWN0aW9uIGV2ZXIuXG4gICAgICAgIFlvdSBjYW4gZmluZCBsb2dzIGFib3V0IGFsbCBtYWlscyBzZW50IGF0IFxcYCR7bG9nRnVuY3Rpb24ubG9nR3JvdXAubG9nR3JvdXBOYW1lfVxcYC5cbiAgICAgICAgXG4gICAgICAgIHt7I2lzX2FsZXJ0fX1Ac2xhY2stJHtub3RpZmljYXRpb25IYW5kbGV9e3svaXNfYWxlcnR9fVxuICAgICAgICBgLFxuICAgICAgcHJpb3JpdHk6IDMsXG4gICAgICBvcHRpb25PdmVycmlkZXM6IHtcbiAgICAgICAgdGhyZXNob2xkczoge1xuICAgICAgICAgIGNyaXRpY2FsOiAwLFxuICAgICAgICB9LFxuICAgICAgICBldmFsdWF0aW9uRGVsYXk6IDkwMCxcbiAgICAgIH0sXG4gICAgICBub3RpZmljYXRpb246IG5ldyBOb05vdGlmaWNhdGlvbigpLFxuICAgIH0pO1xuXG4gICAgbmV3IERhdGFkb2dNb25pdG9yKHRoaXMsICdDb21wbGFpbnRSYXRlTW9uaXRvcicsIHtcbiAgICAgIG5hbWU6IGAke2FjY291bnROYW1lfSBTRVMgcmVwdXRhdGlvbiBlbmRhbmdlcmVkOiBDb21wbGFpbnQgcmF0ZSBIaWdoYCxcbiAgICAgIHNlcnZpY2VOYW1lOiAnYXdzLXNlcycsXG4gICAgICBtb25pdG9yVHlwZTogRGF0YWRvZ01vbml0b3JRdWVyeUFsZXJ0VHlwZS5RVUVSWV9BTEVSVCxcbiAgICAgIHF1ZXJ5OiBgbWF4KGxhc3RfMWgpOm1heDphd3Muc2VzLnJlcHV0YXRpb25fY29tcGxhaW50X3JhdGV7YWNjb3VudF9pZDoke2FjY291bnRJZH0gYW5kIG5vdCBzZXM6Kn0gPiAwLjAwMWAsXG4gICAgICBtZXNzYWdlOiB0cmltSW5kZW50YFxuICAgICAgICBXYXJuaW5nIFRocmVzaG9sZCBmb3IgQ29tcGxhaW50IHJhdGUge3sjaXNfd2FybmluZ319YWxtb3N0IHt7L2lzX3dhcm5pbmd9fXJlYWNoZWQgKGFzIGRlZmluZWQgaW4gQVdTKS5cbiAgICAgICAgXG4gICAgICAgIFBsZWFzZSByZWR1Y2UgdGhlIG51bWJlciBvZiBjb21wbGFpbnRzIHJlY2VpdmVkIGZvciBFLW1haWxzIHNlbnQgYnkgeW91ciBBY2NvdW50LlxuICAgICAgICBJZiB0aGlzIG1ldHJpYyByZWFjaGVzIFxcYDAuNSVcXGAgdGhlIGVtYWlsIHNlbmRpbmcgY2FwYWJpbGl0eSBvZiB5b3VyIGFjY291bnQgd2lsbCBiZSBkaXNhYmxlZCBieSBBV1MuXG4gICAgICAgIFlvdSBjYW4gZmluZCBsb2dzIGFib3V0IGFsbCBtYWlscyBzZW50IGF0IFxcYCR7bG9nRnVuY3Rpb24ubG9nR3JvdXAubG9nR3JvdXBOYW1lfVxcYC5cbiAgICAgICAgU2VlIFtBRFIgLSBTRVMgZG9tYWluIHJlcHV0YXRpb24gb2JzZXJ2YWJpbGl0eV0oaHR0cHM6Ly9jb25mbHVlbmNlLmNvbGxhYm9yYXRpb24tbWFuLmNvbS9kaXNwbGF5L01BTi9BRFIrLStTRVMrZG9tYWluK3JlcHV0YXRpb24rb2JzZXJ2YWJpbGl0eSkuXG4gICAgICAgIFxuICAgICAgICBcbiAgICAgICAge3sjaXNfYWxlcnR9fUBzbGFjay0ke25vdGlmaWNhdGlvbkhhbmRsZX17ey9pc19hbGVydH19XG4gICAgICAgIHt7I2lzX2FsZXJ0X3JlY292ZXJ5fX1Ac2xhY2stJHtub3RpZmljYXRpb25IYW5kbGV9e3svaXNfYWxlcnRfcmVjb3Zlcnl9fVxuICAgICAgICBgLFxuICAgICAgcHJpb3JpdHk6IDIsXG4gICAgICBvcHRpb25PdmVycmlkZXM6IHtcbiAgICAgICAgdGhyZXNob2xkczoge1xuICAgICAgICAgIGNyaXRpY2FsOiAwLjAwMSxcbiAgICAgICAgICB3YXJuaW5nOiAwLjAwMDgsXG4gICAgICAgIH0sXG4gICAgICAgIGV2YWx1YXRpb25EZWxheTogOTAwLFxuICAgICAgfSxcbiAgICAgIG5vdGlmaWNhdGlvbjogbmV3IE5vTm90aWZpY2F0aW9uKCksXG4gICAgfSk7XG5cbiAgICBuZXcgRGF0YWRvZ01vbml0b3IodGhpcywgJ0JvdW5jZVJhdGVNb25pdG9yJywge1xuICAgICAgbmFtZTogYCR7YWNjb3VudE5hbWV9IFNFUyByZXB1dGF0aW9uIGVuZGFuZ2VyZWQ6IEJvdW5jZSBSYXRlIEhpZ2hgLFxuICAgICAgc2VydmljZU5hbWU6ICdhd3Mtc2VzJyxcbiAgICAgIG1vbml0b3JUeXBlOiBEYXRhZG9nTW9uaXRvclF1ZXJ5QWxlcnRUeXBlLlFVRVJZX0FMRVJULFxuICAgICAgcXVlcnk6IGBtYXgobGFzdF8xaCk6bWF4OmF3cy5zZXMucmVwdXRhdGlvbl9ib3VuY2VfcmF0ZXthY2NvdW50X2lkOiR7YWNjb3VudElkfSBhbmQgbm90IHNlczoqfSA+IDAuMDVgLFxuICAgICAgbWVzc2FnZTogdHJpbUluZGVudGBcbiAgICAgICAgV2FybmluZyBUaHJlc2hvbGQgZm9yIEJvdW5jZSByYXRlIHt7I2lzX3dhcm5pbmd9fWFsbW9zdCB7ey9pc193YXJuaW5nfX1yZWFjaGVkIChhcyBkZWZpbmVkIGluIEFXUykuXG4gICAgICAgIFxuICAgICAgICBQbGVhc2UgcmVkdWNlIHRoZSBudW1iZXIgb2YgYm91bmNlcyBmb3IgRS1tYWlscyBzZW50IGJ5IHlvdXIgQWNjb3VudC5cbiAgICAgICAgSWYgdGhpcyBtZXRyaWMgcmVhY2hlcyBcXGAxMCVcXGAgdGhlIGVtYWlsIHNlbmRpbmcgY2FwYWJpbGl0eSBvZiB5b3VyIGFjY291bnQgd2lsbCBiZSBkaXNhYmxlZCBieSBBV1MuXG4gICAgICAgIFlvdSBjYW4gZmluZCBsb2dzIGFib3V0IGFsbCBtYWlscyBzZW50IGF0IFxcYCR7bG9nRnVuY3Rpb24ubG9nR3JvdXAubG9nR3JvdXBOYW1lfVxcYC5cbiAgICAgICAgU2VlIFtBRFIgLSBTRVMgZG9tYWluIHJlcHV0YXRpb24gb2JzZXJ2YWJpbGl0eV0oaHR0cHM6Ly9jb25mbHVlbmNlLmNvbGxhYm9yYXRpb24tbWFuLmNvbS9kaXNwbGF5L01BTi9BRFIrLStTRVMrZG9tYWluK3JlcHV0YXRpb24rb2JzZXJ2YWJpbGl0eSkuXG4gICAgICAgIFxuICAgICAgICBcbiAgICAgICAge3sjaXNfYWxlcnR9fUBzbGFjay0ke25vdGlmaWNhdGlvbkhhbmRsZX17ey9pc19hbGVydH19XG4gICAgICAgIHt7I2lzX2FsZXJ0X3JlY292ZXJ5fX1Ac2xhY2stJHtub3RpZmljYXRpb25IYW5kbGV9e3svaXNfYWxlcnRfcmVjb3Zlcnl9fVxuICAgICAgICBgLFxuICAgICAgcHJpb3JpdHk6IDIsXG4gICAgICBvcHRpb25PdmVycmlkZXM6IHtcbiAgICAgICAgdGhyZXNob2xkczoge1xuICAgICAgICAgIGNyaXRpY2FsOiAwLjA1LFxuICAgICAgICAgIHdhcm5pbmc6IDAuMDQsXG4gICAgICAgIH0sXG4gICAgICAgIGV2YWx1YXRpb25EZWxheTogOTAwLFxuICAgICAgfSxcbiAgICAgIG5vdGlmaWNhdGlvbjogbmV3IE5vTm90aWZpY2F0aW9uKCksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBlbnN1cmVzIHRoYXQgbm8gUElJIGlzIGxlYWtlZCB0byBEYXRhZG9nIGJ5IGFkZGluZyBhIHN1YnNjcmlwdGlvbiBmaWx0ZXIgdG8gdGhlIGxvZyBncm91cCBvZiB0aGUgbGFtYmRhLlxuICAgKi9cbiAgcHJpdmF0ZSBlbnN1cmVOb1N1YnNjcmlwdGlvbkZpbHRlcnNPbkxhbWJkYXNMb2dHcm91cChsb2dGdW5jdGlvbjogTm9kZWpzRnVuY3Rpb24pIHtcbiAgICBjb25zdCBzdGFjayA9IGNkay5TdGFjay5vZih0aGlzKTtcbiAgICBzdGFjay5ub2RlLmFkZFZhbGlkYXRpb24oe1xuICAgICAgdmFsaWRhdGU6ICgpID0+IHtcbiAgICAgICAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBzdGFjay5ub2RlLmZpbmRBbGwoKS5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgQ2ZuU3Vic2NyaXB0aW9uRmlsdGVyKSB7XG4gICAgICAgICAgICBjb25zdCBsb2dHcm91cE5hbWUgPSBub2RlLmxvZ0dyb3VwTmFtZTtcbiAgICAgICAgICAgIGlmIChsb2dHcm91cE5hbWUgPT09IGxvZ0Z1bmN0aW9uLmxvZ0dyb3VwLmxvZ0dyb3VwTmFtZSkge1xuICAgICAgICAgICAgICBlcnJvcnMucHVzaCgnU3Vic2NyaXB0aW9uIGZpbHRlcnMgYXJlIG5vdCBhbGxvd2VkIHNlcy1vYnNlcnZhYmlsaXR5IGxhbWJkYXMgbG9nIGdyb3VwJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGVycm9ycztcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn0iXX0=
|
|
246
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VzLW9ic2VydmFiaWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VzL3Nlcy1vYnNlcnZhYmlsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLDZDQUFvQztBQUNwQyxpREFBaUQ7QUFFakQsbURBQTRFO0FBQzVFLDJDQUEyQztBQUMzQywyQ0FBMkM7QUFDM0Msc0VBQXNFO0FBQ3RFLDJDQUEyQztBQUMzQyx3Q0FBd0M7QUFDeEMsMkNBQXVDO0FBQ3ZDLHFDQUFzQztBQUN0Qyw0Q0FBb0Q7QUFDcEQsNENBQTRGO0FBQzVGLDBEQUFxRDtBQVlyRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVERztBQUNILE1BQWEsZ0JBQWlCLFNBQVEsc0JBQVM7SUFPN0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE0QjtRQUNwRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sU0FBUyxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUN6QyxNQUFNLFdBQVcsR0FBRyxpQ0FBYyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUU3RSxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFO1lBQ3RFLGFBQWEsRUFBRSxnQkFBZ0IsQ0FBQyxvQ0FBb0M7WUFDcEUsV0FBVyxFQUFFLHlDQUF5QztTQUN2RCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQzlDLFNBQVMsRUFBRSw2QkFBNkI7U0FDekMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGdCQUFnQixH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Q0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IE5vZGVqc0Z1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanMnO1xuaW1wb3J0IHsgQ2ZuU3Vic2NyaXB0aW9uRmlsdGVyLCBSZXRlbnRpb25EYXlzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgc2VzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zZXMnO1xuaW1wb3J0ICogYXMgc25zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zbnMnO1xuaW1wb3J0ICogYXMgc25zU3Vic2NyaXB0aW9ucyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc25zLXN1YnNjcmlwdGlvbnMnO1xuaW1wb3J0ICogYXMgc3NtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zc20nO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyB0cmltSW5kZW50IH0gZnJvbSAnLi9oZWxwZXInO1xuaW1wb3J0IHsgREVGQVVMVF9OT0RFX1JVTlRJTUUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRGF0YWRvZ01vbml0b3IsIERhdGFkb2dNb25pdG9yUXVlcnlBbGVydFR5cGUsIE5vTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vZGF0YWRvZ3YyJztcbmltcG9ydCB7IFJpb0xhbmRpbmdab25lIH0gZnJvbSAnLi4vcmlvLWxhbmRpbmctem9uZSc7XG5cblxuZXhwb3J0IGludGVyZmFjZSBTZXNPYnNlcnZhYmlsaXR5UHJvcHMge1xuICAvKipcbiAgICAgKiBUaGUgU0VTIGV2ZW50cyB0byBsb2cuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBbRW1haWxTZW5kaW5nRXZlbnQuREVMSVZFUlksIEVtYWlsU2VuZGluZ0V2ZW50LkJPVU5DRSwgRW1haWxTZW5kaW5nRXZlbnQuQ09NUExBSU5ULCBFbWFpbFNlbmRpbmdFdmVudC5SRUpFQ1RdXG4gICAgICovXG4gIHJlYWRvbmx5IGxvZ2dlZFNlc0V2ZW50cz86IHNlcy5FbWFpbFNlbmRpbmdFdmVudFtdO1xufVxuXG4vKipcbiAqIFJpb1Nlc09ic2VydmFiaWxpdHlcbiAqXG4gKiBUaGlzIGNvbnN0cnVjdCBzZXRzIHVwIG9ic2VydmFiaWxpdHkgZm9yIFNFUyBhcyBkZWZpbmVkIGJ5IFtBRFIgLSBTRVMgZG9tYWluIHJlcHV0YXRpb24gb2JzZXJ2YWJpbGl0eV0oaHR0cHM6Ly9jb25mbHVlbmNlLmNvbGxhYm9yYXRpb24tbWFuLmNvbS9kaXNwbGF5L01BTi9BRFIrLStTRVMrZG9tYWluK3JlcHV0YXRpb24rb2JzZXJ2YWJpbGl0eSkuXG4gKlxuICogIyBXYXJuaW5nXG4gKiBUaGlzIGNvbnN0cnVjdCByZXN1bHRzIGluIGxvZ2dpbmcgYWxsIHNlbnQgZW1haWxzIGluY2x1ZGluZyB0aGUgcmVjaXBpZW50IGFkZHJlc3MgaW50byBDbG91ZFdhdGNoIGxvZ3MuXG4gKiBBcyB0aGlzIGlzIGNvbnNpZGVyZWQgKipQSUkqKiwgdGhpcyBpbmZvcm1hdGlvbiBNVVNUIGJlIGhhbmRsZWQgYWNjb3JkaW5nbHkuXG4gKiBJbiBwYXJ0aWN1bGFyLCBsb2dzICoqTVVTVCBOT1QqKiBiZSBzZW50IHRvIGZ1cnRoZXIgdGhpcmQgcGFydHkgc2VydmljZXMgKGUuZy4gRGF0YWRvZykgYW5kIHRoZSByZXRlbnRpb24gcGVyaW9kIGZvciBsb2dzICoqTVVTVCBOT1QqKiBiZSBleHRlbmRlZC5cbiAqXG4gKiAjIFVzYWdlXG4gKiAjIyBEZWZhdWx0IENvbmZpZ3VyYXRpb24gU2V0IGZvciBJZGVudGl0eVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJpb1Nlc09ic2VydmFiaWxpdHkgPSBuZXcgUmlvU2VzT2JzZXJ2YWJpbGl0eSh0aGlzLCAnQ29uZmlndXJhdGlvblNldCcsIHt9KVxuICogY29uc3QgaWRlbnRpdHkgPSBuZXcgRW1haWxJZGVudGl0eSh0aGlzLCAnRW1haWxJZGVudGl0eScsIHtcbiAqICAgICBpZGVudGl0eTogSWRlbnRpdHkuZG9tYWluKCdleGFtcGxlLmNvbScpLFxuICogICAgIGNvbmZpZ3VyYXRpb25TZXQ6IHJpb1Nlc09ic2VydmFiaWxpdHkuY29uZmlndXJhdGlvblNldCxcbiAqIH0pO1xuICogYGBgXG4gKlxuICogIyMgU3BlY2lmaWNhbGx5IHVzaW5nIHRoZSBjb25maWd1cmF0aW9uIHNldCBwZXIgcmVxdWVzdFxuICpcbiAqIFRoaXMgaXMgaWRlYWwgaWYgeW91IHdhbnQgdG8gdHJ5IG91dCB0aGUgY29uc3RydWN0IGZpcnN0IG9uZSBzb21lIHNwZWNpZmljIGVtYWlscyAoZS5nLiBkdXJpbmcgaW5pdGlhbCBtaWdyYXRpb24pLlxuICogVGhlIGNvbmZpZ3VyYXRpb24gc2V0IG5hbWUgaXMgZXhwb3J0ZWQgYXMgYW4gU1NNIHBhcmFtZXRlciBgL3Jpby9jb25maWcvc2VzLW9ic2VydmFiaWxpdHkvY29uZmlndXJhdGlvbi1zZXQtbmFtZWAuXG4gKiBUaHVzLCB5b3UgY2FuIGVhc2lseSBtYWtlIGl0IGF2YWlsYWJsZSBhcyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpbiB5b3VyIGNvZGUuXG4gKlxuICogYGBga290bGluXG4gKiBpbXBvcnQgY29tLmFtYXpvbmF3cy5zZXJ2aWNlcy5zaW1wbGVlbWFpbC5tb2RlbC5TZW5kRW1haWxSZXF1ZXN0XG4gKlxuICogdmFsIHJlcXVlc3QgPSBTZW5kRW1haWxSZXF1ZXN0KClcbiAqICAgICAgICAgICAgICAgICAud2l0aENvbmZpZ3VyYXRpb25TZXROYW1lKFNTTV9DT05GSUdVUkFUSU9OX1NTTV9QQVJBTUVURVJfVkFMVUUpXG4gKiAgICAgICAgICAgICAgICAgLi4uXG4gKiBgYGBcbiAqXG4gKiAjIyBBdXRvbWF0ZWQgZXZlbnQgcHJvY2Vzc2luZ1xuICpcbiAqIElmIHlvdSBoYXZlIHNwZWNpZmljIG5lZWRzIGZvciB3aGljaCB5b3UnZCBsaWtlIHRvIHByb2Nlc3MgdGhlIFNOUyBldmVudHMgZGlyZWN0bHlcbiAqIChlLmcuIGF1dG9tYXRpY2FsbHkgY3JlYXRpbmcgYSBzdXBwcmVzc2lvbiBsaXN0IGZyb20gYm91bmNlcyksIHlvdSBjYW4gc3Vic2NyaWJlIHRvIHRoZSBTTlMgdG9waWMuXG4gKiBUbyBlbmFibGUgdGhpcyB0aGUgU05TIHRvcGljIEFSTiBpcyBleHBvcnRlZCB2aWEgQ2xvdWRmb3JtYXRpb24gYXMgYFJpb1Nlc09ic2VydmFiaWxpdHlUb3BpY0FybmAuXG4gKlxuICogIyBOb3Rlc1xuICogIyMgQWRkIG5lY2Vzc2FyeSBwZXJtaXNzaW9ucyBmb3IgZmFyZ2F0ZSB0YXNrIHRvIGVuYWJsZSB1c2luZyBzZXMgY29uZmlndXJhdGlvbiBzZXRcbiAqIE1ha2Ugc3VyZSB5b3UgaGF2ZSB0aGUgZm9sbG93aW5nIHBlcm1pc3Npb25zIGluIHRoZSB0YXNrIHJvbGUgb2YgdGhlIGZhcmdhdGUgdGFzaywgZS5nLjpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqICAgICBzZXJ2aWNlLnRhc2tEZWZpbml0aW9uLnRhc2tSb2xlLmFkZFRvUHJpbmNpcGFsUG9saWN5KFxuICogICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICogICAgICAgICBhY3Rpb25zOiBbJ3NlczpzZW5kRW1haWwnLCAnc2VzOnNlbmRSYXdFbWFpbCddLFxuICogICAgICAgICByZXNvdXJjZXM6IFtgYXJuOmF3czpzZXM6PHlvdXJfcmVnaW9uPjo8eW91cl9hY2NvdW50Pjpjb25maWd1cmF0aW9uLXNldC88eW91cl9jb25maWd1cmF0aW9uX3NldF9uYW1lPmBdLFxuICogICAgICAgfSkpO1xuICogYGBgXG4gKlxuICogIyMgV2F0Y2hmdWxcbiAqIEl0IG1pZ2h0IGJlIGhlbHBmdWwgdG8gYWRkIHdhdGNoZnVsIHRvIHlvdXIgc3RhY2sgdG9cbiAqIGdldCBub3RpZmllZCBpZiB0aGUgc2VzLWxvZ2dlciBsYW1iZGEgZmFpbHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXNPYnNlcnZhYmlsaXR5IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLy8gISBjaGFuZ2luZyB0aGVzZSB2YWx1ZXMgaXMgYSBicmVha2luZyBjaGFuZ2UgZm9yIHVzZXJzXG4gIHN0YXRpYyByZWFkb25seSBDT05GSUdVUkFUSU9OX1NFVF9OQU1FX1NTTV9QQVJBTUVURVIgPSAnL3Jpby9jb25maWcvc2VzLW9ic2VydmFiaWxpdHkvY29uZmlndXJhdGlvbi1zZXQtbmFtZSc7XG4gIHN0YXRpYyByZWFkb25seSBTTlNfVE9QSUNfQVJOX0VYUE9SVF9OQU1FID0gJ1Jpb1Nlc09ic2VydmFiaWxpdHlUb3BpY0Fybic7XG4gIHJlYWRvbmx5IHNuc1RvcGljOiBzbnMuVG9waWM7XG4gIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb25TZXQ6IHNlcy5Db25maWd1cmF0aW9uU2V0O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTZXNPYnNlcnZhYmlsaXR5UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIGNvbnN0IGFjY291bnRJZCA9IFN0YWNrLm9mKHRoaXMpLmFjY291bnQ7XG4gICAgY29uc3QgYWNjb3VudE5hbWUgPSBSaW9MYW5kaW5nWm9uZS5nZXRBY2NvdW50TmFtZVBhcmFtZXRlcih0aGlzKS5zdHJpbmdWYWx1ZTtcblxuICAgIGNvbnN0IHBhcmFtZXRlciA9IG5ldyBzc20uU3RyaW5nUGFyYW1ldGVyKHRoaXMsICdDb25maWd1cmF0aW9uU2V0TmFtZScsIHtcbiAgICAgIHBhcmFtZXRlck5hbWU6IFNlc09ic2VydmFiaWxpdHkuQ09ORklHVVJBVElPTl9TRVRfTkFNRV9TU01fUEFSQU1FVEVSLFxuICAgICAgc3RyaW5nVmFsdWU6ICdyaW8tc2VzLW9ic2VydmFiaWxpdHktY29uZmlndXJhdGlvbi1zZXQnLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zbnNUb3BpYyA9IG5ldyBzbnMuVG9waWModGhpcywgJ1Nuc1RvcGljJywge1xuICAgICAgdG9waWNOYW1lOiAncmlvLXNlcy1vYnNlcnZhYmlsaXR5LXRvcGljJyxcbiAgICB9KTtcblxuICAgIHRoaXMuY29uZmlndXJhdGlvblNldCA9IG5ldyBzZXMuQ29uZmlndXJhdGlvblNldCh0aGlzLCAnQ29uZmlndXJhdGlvblNldCcsIHtcbiAgICAgIGNvbmZpZ3VyYXRpb25TZXROYW1lOiBwYXJhbWV0ZXIuc3RyaW5nVmFsdWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbmZpZ3VyYXRpb25TZXQuYWRkRXZlbnREZXN0aW5hdGlvbignRXZlbnREZXN0aW5hdGlvbicsIHtcbiAgICAgIGNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uTmFtZTogJ3Jpby1zZXMtb2JzZXJ2YWJpbGl0eS1ldmVudC1kZXN0aW5hdGlvbicsXG4gICAgICBkZXN0aW5hdGlvbjogc2VzLkV2ZW50RGVzdGluYXRpb24uc25zVG9waWModGhpcy5zbnNUb3BpYyksXG4gICAgICBldmVudHM6IHByb3BzLmxvZ2dlZFNlc0V2ZW50cyA/PyBbXG4gICAgICAgIHNlcy5FbWFpbFNlbmRpbmdFdmVudC5ERUxJVkVSWSxcbiAgICAgICAgc2VzLkVtYWlsU2VuZGluZ0V2ZW50LkJPVU5DRSxcbiAgICAgICAgc2VzLkVtYWlsU2VuZGluZ0V2ZW50LkNPTVBMQUlOVCxcbiAgICAgICAgc2VzLkVtYWlsU2VuZGluZ0V2ZW50LlJFSkVDVCxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBsb2dGdW5jdGlvbiA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgJ0xvZ0Z1bmN0aW9uJywge1xuICAgICAgZnVuY3Rpb25OYW1lOiAncmlvLXNlcy1vYnNlcnZhYmlsaXR5LWxvZy1mdW5jdGlvbicsXG4gICAgICBydW50aW1lOiBERUZBVUxUX05PREVfUlVOVElNRSxcbiAgICAgIGFyY2hpdGVjdHVyZTogbGFtYmRhLkFyY2hpdGVjdHVyZS5BUk1fNjQsXG4gICAgICBoYW5kbGVyOiAnc2VzLWxvZ2dlci5oYW5kbGVyJyxcbiAgICAgIGxvZ1JldGVudGlvbjogUmV0ZW50aW9uRGF5cy5USFJFRV9NT05USFMsXG4gICAgICBzeXN0ZW1Mb2dMZXZlbFYyOiBsYW1iZGEuU3lzdGVtTG9nTGV2ZWwuV0FSTixcbiAgICAgIGxvZ2dpbmdGb3JtYXQ6IGxhbWJkYS5Mb2dnaW5nRm9ybWF0LkpTT04sXG4gICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJ2xhbWJkYScpLCB7XG4gICAgICAgIGV4Y2x1ZGU6IFsnKi5qcycsICcqLmQudHMnXSxcbiAgICAgIH0pLFxuICAgIH0pO1xuICAgIHRoaXMuZW5zdXJlTm9TdWJzY3JpcHRpb25GaWx0ZXJzT25MYW1iZGFzTG9nR3JvdXAobG9nRnVuY3Rpb24pO1xuXG4gICAgdGhpcy5zbnNUb3BpYy5hZGRTdWJzY3JpcHRpb24obmV3IHNuc1N1YnNjcmlwdGlvbnMuTGFtYmRhU3Vic2NyaXB0aW9uKGxvZ0Z1bmN0aW9uKSk7XG5cbiAgICBuZXcgY2RrLkNmbk91dHB1dCh0aGlzLCAnU25zVG9waWNBcm4nLCB7XG4gICAgICB2YWx1ZTogdGhpcy5zbnNUb3BpYy50b3BpY0FybixcbiAgICAgIGV4cG9ydE5hbWU6IFNlc09ic2VydmFiaWxpdHkuU05TX1RPUElDX0FSTl9FWFBPUlRfTkFNRSxcbiAgICB9KTtcblxuICAgIGNvbnN0IG5vdGlmaWNhdGlvbkhhbmRsZSA9IFJpb0xhbmRpbmdab25lLmdldFRlYW1BbGVydFNsYWNrQ2hhbm5lbFBhcmFtZXRlcih0aGlzKS5zdHJpbmdWYWx1ZTtcblxuICAgIG5ldyBEYXRhZG9nTW9uaXRvcih0aGlzLCAnUXVvdGFNb25pdG9yJywge1xuICAgICAgbmFtZTogYCR7YWNjb3VudE5hbWV9IFNFUyBxdW90YSBhbG1vc3QgcmVhY2hlZGAsXG4gICAgICBzZXJ2aWNlTmFtZTogJ2F3cy1zZXMnLFxuICAgICAgbW9uaXRvclR5cGU6IERhdGFkb2dNb25pdG9yUXVlcnlBbGVydFR5cGUuUVVFUllfQUxFUlQsXG4gICAgICBxdWVyeTogYG1heChsYXN0XzFoKTptYXg6YXdzLnNlcy5zZW50X2xhc3RfMjRfaG91cnN7YWNjb3VudF9pZDoke2FjY291bnRJZH19IC8gbWF4OmF3cy5zZXMubWF4XzI0X2hvdXJfc2VuZHthY2NvdW50X2lkOiR7YWNjb3VudElkfX0gPiAwLjhgLFxuICAgICAgbWVzc2FnZTogdHJpbUluZGVudGBcbiAgICAgICAgWW91IGFyZSBhbG1vc3QgdXNpbmcgdXAgeW91J3JlIG1heGltdW0gZW1haWwgc2VuZGluZyBxdW90YSBwZXIgMjRoLiBcbiAgICAgICAgRWl0aGVyIFtyZXF1ZXN0IGFuIGluY3JlYXNlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2VzL2xhdGVzdC9kZy9tYW5hZ2Utc2VuZGluZy1xdW90YXMtcmVxdWVzdC1pbmNyZWFzZS5odG1sKSBmb3IgeW91ciBxdW90YSBieSBBV1Mgb3IgcmVkdWNlIHRoZSBhbW91bnQgb2YgZW1haWxzIHNlbnQuXG4gICAgICAgIFlvdSBjYW4gZmluZCBsb2dzIGFib3V0IGFsbCBtYWlscyBzZW50IGF0IFxcYCR7bG9nRnVuY3Rpb24ubG9nR3JvdXAubG9nR3JvdXBOYW1lfVxcYC5cbiAgICAgICAgXG4gICAgICAgIHt7I2lzX2FsZXJ0fX1Ac2xhY2stJHtub3RpZmljYXRpb25IYW5kbGV9e3svaXNfYWxlcnR9fVxuICAgICAgICB7eyNpc19hbGVydF9yZWNvdmVyeX19QHNsYWNrLSR7bm90aWZpY2F0aW9uSGFuZGxlfXt7L2lzX2FsZXJ0X3JlY292ZXJ5fX1cbiAgICAgICAgYCxcbiAgICAgIHByaW9yaXR5OiA0LFxuICAgICAgb3B0aW9uT3ZlcnJpZGVzOiB7XG4gICAgICAgIHRocmVzaG9sZHM6IHtcbiAgICAgICAgICBjcml0aWNhbDogMC44LFxuICAgICAgICAgIHdhcm5pbmc6IDAuNyxcbiAgICAgICAgfSxcbiAgICAgICAgZXZhbHVhdGlvbkRlbGF5OiA5MDAsXG4gICAgICB9LFxuICAgICAgbm90aWZpY2F0aW9uOiBuZXcgTm9Ob3RpZmljYXRpb24oKSxcbiAgICB9KTtcblxuICAgIG5ldyBEYXRhZG9nTW9uaXRvcih0aGlzLCAnRW1haWxSZWplY3RlZE1vbml0b3InLCB7XG4gICAgICBuYW1lOiBgJHthY2NvdW50TmFtZX0gU0VTIEVtYWlsIFJlamVjdGVkYCxcbiAgICAgIHNlcnZpY2VOYW1lOiAnYXdzLXNlcycsXG4gICAgICBtb25pdG9yVHlwZTogRGF0YWRvZ01vbml0b3JRdWVyeUFsZXJ0VHlwZS5RVUVSWV9BTEVSVCxcbiAgICAgIHF1ZXJ5OiBgc3VtKGxhc3RfMWgpOm1heDphd3Muc2VzLnJlamVjdHN7YWNjb3VudF9pZDoke2FjY291bnRJZH19ID4gMGAsXG4gICAgICBtZXNzYWdlOiB0cmltSW5kZW50YFxuICAgICAgICBTRVMgW3JlamVjdGVkXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2VzL2xhdGVzdC9kZy9tb25pdG9yLXNlbmRpbmctYWN0aXZpdHkuaHRtbCkgc2VuZGluZyBhdCBsZWFzdCBvbmUgZW1haWwuXG4gICAgICAgIFBsZWFzZSBpbnZlc3RpZ2F0ZSB0aGUgcm9vdCBjYXNlLCBhcyB0aGlzIGlzIG5vdCBleHBlY3RlZCB0byBoYXBwZW4gaW4gcHJvZHVjdGlvbiBldmVyLlxuICAgICAgICBZb3UgY2FuIGZpbmQgbG9ncyBhYm91dCBhbGwgbWFpbHMgc2VudCBhdCBcXGAke2xvZ0Z1bmN0aW9uLmxvZ0dyb3VwLmxvZ0dyb3VwTmFtZX1cXGAuXG4gICAgICAgIFxuICAgICAgICB7eyNpc19hbGVydH19QHNsYWNrLSR7bm90aWZpY2F0aW9uSGFuZGxlfXt7L2lzX2FsZXJ0fX1cbiAgICAgICAgYCxcbiAgICAgIHByaW9yaXR5OiAzLFxuICAgICAgb3B0aW9uT3ZlcnJpZGVzOiB7XG4gICAgICAgIHRocmVzaG9sZHM6IHtcbiAgICAgICAgICBjcml0aWNhbDogMCxcbiAgICAgICAgfSxcbiAgICAgICAgZXZhbHVhdGlvbkRlbGF5OiA5MDAsXG4gICAgICB9LFxuICAgICAgbm90aWZpY2F0aW9uOiBuZXcgTm9Ob3RpZmljYXRpb24oKSxcbiAgICB9KTtcblxuICAgIG5ldyBEYXRhZG9nTW9uaXRvcih0aGlzLCAnQ29tcGxhaW50UmF0ZU1vbml0b3InLCB7XG4gICAgICBuYW1lOiBgJHthY2NvdW50TmFtZX0gU0VTIHJlcHV0YXRpb24gZW5kYW5nZXJlZDogQ29tcGxhaW50IHJhdGUgSGlnaGAsXG4gICAgICBzZXJ2aWNlTmFtZTogJ2F3cy1zZXMnLFxuICAgICAgbW9uaXRvclR5cGU6IERhdGFkb2dNb25pdG9yUXVlcnlBbGVydFR5cGUuUVVFUllfQUxFUlQsXG4gICAgICBxdWVyeTogYG1heChsYXN0XzFoKTptYXg6YXdzLnNlcy5yZXB1dGF0aW9uX2NvbXBsYWludF9yYXRle2FjY291bnRfaWQ6JHthY2NvdW50SWR9IGFuZCBub3Qgc2VzOip9ID4gMC4wMDFgLFxuICAgICAgbWVzc2FnZTogdHJpbUluZGVudGBcbiAgICAgICAgV2FybmluZyBUaHJlc2hvbGQgZm9yIENvbXBsYWludCByYXRlIHt7I2lzX3dhcm5pbmd9fWFsbW9zdCB7ey9pc193YXJuaW5nfX1yZWFjaGVkIChhcyBkZWZpbmVkIGluIEFXUykuXG4gICAgICAgIFxuICAgICAgICBQbGVhc2UgcmVkdWNlIHRoZSBudW1iZXIgb2YgY29tcGxhaW50cyByZWNlaXZlZCBmb3IgRS1tYWlscyBzZW50IGJ5IHlvdXIgQWNjb3VudC5cbiAgICAgICAgSWYgdGhpcyBtZXRyaWMgcmVhY2hlcyBcXGAwLjUlXFxgIHRoZSBlbWFpbCBzZW5kaW5nIGNhcGFiaWxpdHkgb2YgeW91ciBhY2NvdW50IHdpbGwgYmUgZGlzYWJsZWQgYnkgQVdTLlxuICAgICAgICBZb3UgY2FuIGZpbmQgbG9ncyBhYm91dCBhbGwgbWFpbHMgc2VudCBhdCBcXGAke2xvZ0Z1bmN0aW9uLmxvZ0dyb3VwLmxvZ0dyb3VwTmFtZX1cXGAuXG4gICAgICAgIFNlZSBbQURSIC0gU0VTIGRvbWFpbiByZXB1dGF0aW9uIG9ic2VydmFiaWxpdHldKGh0dHBzOi8vY29uZmx1ZW5jZS5jb2xsYWJvcmF0aW9uLW1hbi5jb20vZGlzcGxheS9NQU4vQURSKy0rU0VTK2RvbWFpbityZXB1dGF0aW9uK29ic2VydmFiaWxpdHkpLlxuICAgICAgICBcbiAgICAgICAgXG4gICAgICAgIHt7I2lzX2FsZXJ0fX1Ac2xhY2stJHtub3RpZmljYXRpb25IYW5kbGV9e3svaXNfYWxlcnR9fVxuICAgICAgICB7eyNpc19hbGVydF9yZWNvdmVyeX19QHNsYWNrLSR7bm90aWZpY2F0aW9uSGFuZGxlfXt7L2lzX2FsZXJ0X3JlY292ZXJ5fX1cbiAgICAgICAgYCxcbiAgICAgIHByaW9yaXR5OiAyLFxuICAgICAgb3B0aW9uT3ZlcnJpZGVzOiB7XG4gICAgICAgIHRocmVzaG9sZHM6IHtcbiAgICAgICAgICBjcml0aWNhbDogMC4wMDEsXG4gICAgICAgICAgd2FybmluZzogMC4wMDA4LFxuICAgICAgICB9LFxuICAgICAgICBldmFsdWF0aW9uRGVsYXk6IDkwMCxcbiAgICAgIH0sXG4gICAgICBub3RpZmljYXRpb246IG5ldyBOb05vdGlmaWNhdGlvbigpLFxuICAgIH0pO1xuXG4gICAgbmV3IERhdGFkb2dNb25pdG9yKHRoaXMsICdCb3VuY2VSYXRlTW9uaXRvcicsIHtcbiAgICAgIG5hbWU6IGAke2FjY291bnROYW1lfSBTRVMgcmVwdXRhdGlvbiBlbmRhbmdlcmVkOiBCb3VuY2UgUmF0ZSBIaWdoYCxcbiAgICAgIHNlcnZpY2VOYW1lOiAnYXdzLXNlcycsXG4gICAgICBtb25pdG9yVHlwZTogRGF0YWRvZ01vbml0b3JRdWVyeUFsZXJ0VHlwZS5RVUVSWV9BTEVSVCxcbiAgICAgIHF1ZXJ5OiBgbWF4KGxhc3RfMWgpOm1heDphd3Muc2VzLnJlcHV0YXRpb25fYm91bmNlX3JhdGV7YWNjb3VudF9pZDoke2FjY291bnRJZH0gYW5kIG5vdCBzZXM6Kn0gPiAwLjA1YCxcbiAgICAgIG1lc3NhZ2U6IHRyaW1JbmRlbnRgXG4gICAgICAgIFdhcm5pbmcgVGhyZXNob2xkIGZvciBCb3VuY2UgcmF0ZSB7eyNpc193YXJuaW5nfX1hbG1vc3Qge3svaXNfd2FybmluZ319cmVhY2hlZCAoYXMgZGVmaW5lZCBpbiBBV1MpLlxuICAgICAgICBcbiAgICAgICAgUGxlYXNlIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGJvdW5jZXMgZm9yIEUtbWFpbHMgc2VudCBieSB5b3VyIEFjY291bnQuXG4gICAgICAgIElmIHRoaXMgbWV0cmljIHJlYWNoZXMgXFxgMTAlXFxgIHRoZSBlbWFpbCBzZW5kaW5nIGNhcGFiaWxpdHkgb2YgeW91ciBhY2NvdW50IHdpbGwgYmUgZGlzYWJsZWQgYnkgQVdTLlxuICAgICAgICBZb3UgY2FuIGZpbmQgbG9ncyBhYm91dCBhbGwgbWFpbHMgc2VudCBhdCBcXGAke2xvZ0Z1bmN0aW9uLmxvZ0dyb3VwLmxvZ0dyb3VwTmFtZX1cXGAuXG4gICAgICAgIFNlZSBbQURSIC0gU0VTIGRvbWFpbiByZXB1dGF0aW9uIG9ic2VydmFiaWxpdHldKGh0dHBzOi8vY29uZmx1ZW5jZS5jb2xsYWJvcmF0aW9uLW1hbi5jb20vZGlzcGxheS9NQU4vQURSKy0rU0VTK2RvbWFpbityZXB1dGF0aW9uK29ic2VydmFiaWxpdHkpLlxuICAgICAgICBcbiAgICAgICAgXG4gICAgICAgIHt7I2lzX2FsZXJ0fX1Ac2xhY2stJHtub3RpZmljYXRpb25IYW5kbGV9e3svaXNfYWxlcnR9fVxuICAgICAgICB7eyNpc19hbGVydF9yZWNvdmVyeX19QHNsYWNrLSR7bm90aWZpY2F0aW9uSGFuZGxlfXt7L2lzX2FsZXJ0X3JlY292ZXJ5fX1cbiAgICAgICAgYCxcbiAgICAgIHByaW9yaXR5OiAyLFxuICAgICAgb3B0aW9uT3ZlcnJpZGVzOiB7XG4gICAgICAgIHRocmVzaG9sZHM6IHtcbiAgICAgICAgICBjcml0aWNhbDogMC4wNSxcbiAgICAgICAgICB3YXJuaW5nOiAwLjA0LFxuICAgICAgICB9LFxuICAgICAgICBldmFsdWF0aW9uRGVsYXk6IDkwMCxcbiAgICAgIH0sXG4gICAgICBub3RpZmljYXRpb246IG5ldyBOb05vdGlmaWNhdGlvbigpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gZW5zdXJlcyB0aGF0IG5vIFBJSSBpcyBsZWFrZWQgdG8gRGF0YWRvZyBieSBhZGRpbmcgYSBzdWJzY3JpcHRpb24gZmlsdGVyIHRvIHRoZSBsb2cgZ3JvdXAgb2YgdGhlIGxhbWJkYS5cbiAgICovXG4gIHByaXZhdGUgZW5zdXJlTm9TdWJzY3JpcHRpb25GaWx0ZXJzT25MYW1iZGFzTG9nR3JvdXAobG9nRnVuY3Rpb246IE5vZGVqc0Z1bmN0aW9uKSB7XG4gICAgY29uc3Qgc3RhY2sgPSBjZGsuU3RhY2sub2YodGhpcyk7XG4gICAgc3RhY2subm9kZS5hZGRWYWxpZGF0aW9uKHtcbiAgICAgIHZhbGlkYXRlOiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgc3RhY2subm9kZS5maW5kQWxsKCkuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIENmblN1YnNjcmlwdGlvbkZpbHRlcikge1xuICAgICAgICAgICAgY29uc3QgbG9nR3JvdXBOYW1lID0gbm9kZS5sb2dHcm91cE5hbWU7XG4gICAgICAgICAgICBpZiAobG9nR3JvdXBOYW1lID09PSBsb2dGdW5jdGlvbi5sb2dHcm91cC5sb2dHcm91cE5hbWUpIHtcbiAgICAgICAgICAgICAgZXJyb3JzLnB1c2goJ1N1YnNjcmlwdGlvbiBmaWx0ZXJzIGFyZSBub3QgYWxsb3dlZCBzZXMtb2JzZXJ2YWJpbGl0eSBsYW1iZGFzIGxvZyBncm91cCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59Il19
|
package/lib/watchful/aspect.js
CHANGED
|
@@ -54,9 +54,12 @@ class WatchfulAspect {
|
|
|
54
54
|
if (node instanceof dynamodb.Table) {
|
|
55
55
|
this.watchful.watchDynamoDbTable(node);
|
|
56
56
|
}
|
|
57
|
+
if (node instanceof dynamodb.TableV2) {
|
|
58
|
+
this.watchful.watchDynamoDbTable(node);
|
|
59
|
+
}
|
|
57
60
|
}
|
|
58
61
|
}
|
|
59
62
|
exports.WatchfulAspect = WatchfulAspect;
|
|
60
63
|
_a = JSII_RTTI_SYMBOL_1;
|
|
61
64
|
WatchfulAspect[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.WatchfulAspect", version: "0.0.0" };
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNwZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3dhdGNoZnVsL2FzcGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUFtRDtBQUNuRCx5REFBeUQ7QUFDekQsK0NBQStDO0FBQy9DLHFEQUFxRDtBQUNyRCwyQ0FBMkM7QUFDM0MsZ0VBQWdFO0FBQ2hFLGlEQUFpRDtBQUNqRCwyQ0FBMkM7QUFJM0M7O0dBRUc7QUFDSCxNQUFhLGNBQWM7SUFDekI7Ozs7T0FJRztJQUNILFlBQTZCLFFBQTBCO1FBQTFCLGFBQVEsR0FBUixRQUFRLENBQWtCO0lBQUcsQ0FBQztJQUVwRCxLQUFLLENBQUMsSUFBZ0I7UUFDM0IsSUFBSSxJQUFJLFlBQVksTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sV0FBVyxHQUF3QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQW1DLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztZQUNqSCxJQUFJLFdBQVcsRUFBRSxXQUFXLEVBQUUsS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDM0MseUJBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbEYsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUMsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLElBQUksWUFBWSxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUNELElBQUksSUFBSSxZQUFZLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFDRCxJQUFJLElBQUksWUFBWSxLQUFLLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsUUFBUSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFDRCxJQUFJLElBQUksWUFBWSxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUNELElBQUksSUFBSSxZQUFZLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFDRCxJQUFJLElBQUksWUFBWSxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBQ0QsSUFBSSxJQUFJLFlBQVksUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUNELElBQUksSUFBSSxZQUFZLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDOztBQXpDSCx3Q0EwQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbm5vdGF0aW9ucywgSUFzcGVjdCB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGNsb3VkZnJvbnQgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnQnO1xuaW1wb3J0ICogYXMgZG9jZGIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWRvY2RiJztcbmltcG9ydCAqIGFzIGR5bmFtb2RiIGZyb20gJ2F3cy1jZGstbGliL2F3cy1keW5hbW9kYic7XG5pbXBvcnQgKiBhcyBlY3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcyc7XG5pbXBvcnQgKiBhcyBlbGJ2MiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mic7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyByZHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXJkcyc7XG5pbXBvcnQgeyBJQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBBYnN0cmFjdFdhdGNoZnVsIH0gZnJvbSAnLi93YXRjaGZ1bCc7XG5cbi8qKlxuICogQSBDREsgYXNwZWN0IHRoYXQgY2FuIGF1dG9tYXRpY2FsbHkgd2F0Y2ggYWxsIHJlc291cmNlcyB3aXRoaW4gYSBzY29wZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFdhdGNoZnVsQXNwZWN0IGltcGxlbWVudHMgSUFzcGVjdCB7XG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgd2F0Y2hmdWwgYXNwZWN0XG4gICAqXG4gICAqIEBwYXJhbSB3YXRjaGZ1bCAtIFRoZSB3YXRjaGZ1bCB0byBhZGQgdGhvc2UgcmVzb3VyY2VzIHRvXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHdhdGNoZnVsOiBBYnN0cmFjdFdhdGNoZnVsKSB7fVxuXG4gIHB1YmxpYyB2aXNpdChub2RlOiBJQ29uc3RydWN0KTogdm9pZCB7XG4gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBsYW1iZGEuRnVuY3Rpb24pIHtcbiAgICAgIGNvbnN0IHdhdGNoZnVsVGFnOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAobm9kZS5ub2RlLmRlZmF1bHRDaGlsZCBhcyBsYW1iZGEuQ2ZuRnVuY3Rpb24pLnRhZ3MudGFnVmFsdWVzKCkuV2F0Y2hmdWw7XG4gICAgICBpZiAod2F0Y2hmdWxUYWc/LnRvTG93ZXJDYXNlKCkgPT09ICdmYWxzZScpIHtcbiAgICAgICAgQW5ub3RhdGlvbnMub2Yobm9kZSkuYWRkSW5mbyhgV2F0Y2hmdWwgd2lsbCBpZ25vcmUgdGhlIGxhbWJkYSAke25vZGUubm9kZS5pZH1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMud2F0Y2hmdWwud2F0Y2hMYW1iZGFGdW5jdGlvbihub2RlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBlY3MuQmFzZVNlcnZpY2UpIHtcbiAgICAgIHRoaXMud2F0Y2hmdWwud2F0Y2hFY3NTZXJ2aWNlKG5vZGUpO1xuICAgIH1cbiAgICBpZiAobm9kZSBpbnN0YW5jZW9mIGVsYnYyLkFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyKSB7XG4gICAgICB0aGlzLndhdGNoZnVsLndhdGNoQWxiKG5vZGUpO1xuICAgIH1cbiAgICBpZiAobm9kZSBpbnN0YW5jZW9mIGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXApIHtcbiAgICAgIHRoaXMud2F0Y2hmdWwud2F0Y2hBcHBsaWNhdGlvblRhcmdldEdyb3VwKG5vZGUpO1xuICAgIH1cbiAgICBpZiAobm9kZSBpbnN0YW5jZW9mIGRvY2RiLkRhdGFiYXNlQ2x1c3Rlcikge1xuICAgICAgdGhpcy53YXRjaGZ1bC53YXRjaERvY0RiKG5vZGUpO1xuICAgIH1cbiAgICBpZiAobm9kZSBpbnN0YW5jZW9mIHJkcy5EYXRhYmFzZUNsdXN0ZXIpIHtcbiAgICAgIHRoaXMud2F0Y2hmdWwud2F0Y2hEYXRhYmFzZUNsdXN0ZXIobm9kZSk7XG4gICAgfVxuICAgIGlmIChub2RlIGluc3RhbmNlb2YgY2xvdWRmcm9udC5EaXN0cmlidXRpb24pIHtcbiAgICAgIHRoaXMud2F0Y2hmdWwud2F0Y2hDbG91ZGZyb250RGlzdHJpYnV0aW9uKG5vZGUpO1xuICAgIH1cbiAgICBpZiAobm9kZSBpbnN0YW5jZW9mIGR5bmFtb2RiLlRhYmxlKSB7XG4gICAgICB0aGlzLndhdGNoZnVsLndhdGNoRHluYW1vRGJUYWJsZShub2RlKTtcbiAgICB9XG4gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBkeW5hbW9kYi5UYWJsZVYyKSB7XG4gICAgICB0aGlzLndhdGNoZnVsLndhdGNoRHluYW1vRGJUYWJsZShub2RlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -48,7 +48,7 @@ export interface WatchDynamoDbTableProps extends WatchDynamoDbTableOptions {
|
|
|
48
48
|
* The DynamoDb table that should be watched.
|
|
49
49
|
* [disable-awslint:ref-via-interface]
|
|
50
50
|
*/
|
|
51
|
-
readonly dynamoDbTable: dynamodb.Table;
|
|
51
|
+
readonly dynamoDbTable: dynamodb.Table | dynamodb.TableV2;
|
|
52
52
|
}
|
|
53
53
|
/**
|
|
54
54
|
* A Construct which creates the following alarms for DynamoDb tables:
|
package/lib/watchful/dynamodb.js
CHANGED
|
@@ -88,4 +88,4 @@ class WatchDynamoDbTable extends constructs_1.Construct {
|
|
|
88
88
|
exports.WatchDynamoDbTable = WatchDynamoDbTable;
|
|
89
89
|
_a = JSII_RTTI_SYMBOL_1;
|
|
90
90
|
WatchDynamoDbTable[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.WatchDynamoDbTable", version: "0.0.0" };
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1vZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2F0Y2hmdWwvZHluYW1vZGIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBdUY7QUFDdkYsMkNBQXVDO0FBRXZDLGlEQUE2QztBQXdEN0M7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFhLGtCQUFtQixTQUFRLHNCQUFTO0lBSS9DLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBOEI7UUFDdEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBRXBDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksRUFDNUIsMEJBQVcsQ0FBQyxvQkFBb0IsRUFDaEMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUN0RSxDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUM1QiwwQkFBVyxDQUFDLHFCQUFxQixFQUNqQyxJQUFJLENBQUMsOEJBQThCLENBQUMsS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQ3hFLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQzVCLDBCQUFXLENBQUMseUJBQXlCLEVBQ3JDLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FDaEYsQ0FBQztJQUNKLENBQUM7SUFFTyw2QkFBNkIsQ0FBQywyQkFBMkIsR0FBRyxDQUFDO1FBRW5FLE1BQU0sY0FBYyxHQUFHLElBQUksNEJBQUUsQ0FBQyxNQUFNLENBQUM7WUFDbkMsVUFBVSxFQUFFLG9CQUFvQjtZQUNoQyxTQUFTLEVBQUUsY0FBYztZQUN6QixNQUFNLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzVCLFNBQVMsRUFBRSw0QkFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHO1lBQ3ZCLGFBQWEsRUFBRTtnQkFDYixTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTO2FBQ25DO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsT0FBTztZQUNMLE1BQU0sRUFBRSxjQUFjO1lBQ3RCLGdCQUFnQixFQUNkLGlHQUFpRztZQUNuRyxrQkFBa0IsRUFBRSw0QkFBRSxDQUFDLGtCQUFrQixDQUFDLGtDQUFrQztZQUM1RSxTQUFTLEVBQUUsMkJBQTJCO1lBQ3RDLGdCQUFnQixFQUFFLDRCQUFFLENBQUMsZ0JBQWdCLENBQUMsYUFBYTtZQUNuRCxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLFFBQVEsRUFBRSxDQUFDO1NBQ1osQ0FBQztJQUNKLENBQUM7SUFDTyw4QkFBOEIsQ0FBQyw0QkFBNEIsR0FBRyxDQUFDO1FBQ3JFLE1BQU0sY0FBYyxHQUFHLElBQUksNEJBQUUsQ0FBQyxNQUFNLENBQUM7WUFDbkMsVUFBVSxFQUFFLHFCQUFxQjtZQUNqQyxTQUFTLEVBQUUsY0FBYztZQUN6QixNQUFNLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzVCLFNBQVMsRUFBRSw0QkFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHO1lBQ3ZCLGFBQWEsRUFBRTtnQkFDYixTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTO2FBQ25DO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsT0FBTztZQUNMLE1BQU0sRUFBRSxjQUFjO1lBQ3RCLGdCQUFnQixFQUNkLG9HQUFvRztZQUN0RyxrQkFBa0IsRUFBRSw0QkFBRSxDQUFDLGtCQUFrQixDQUFDLGtDQUFrQztZQUM1RSxTQUFTLEVBQUUsNEJBQTRCO1lBQ3ZDLGdCQUFnQixFQUFFLDRCQUFFLENBQUMsZ0JBQWdCLENBQUMsYUFBYTtZQUNuRCxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLFFBQVEsRUFBRSxDQUFDO1NBQ1osQ0FBQztJQUNKLENBQUM7SUFDTyxrQ0FBa0MsQ0FBQyxnQ0FBZ0MsR0FBRyxDQUFDO1FBQzdFLE1BQU0sY0FBYyxHQUFHLElBQUksNEJBQUUsQ0FBQyxNQUFNLENBQUM7WUFDbkMsVUFBVSxFQUFFLG1CQUFtQjtZQUMvQixTQUFTLEVBQUUsY0FBYztZQUN6QixNQUFNLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzVCLFNBQVMsRUFBRSw0QkFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHO1lBQ3ZCLGFBQWEsRUFBRTtnQkFDYixTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTO2FBQ25DO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsT0FBTztZQUNMLE1BQU0sRUFBRSxjQUFjO1lBQ3RCLGdCQUFnQixFQUNkLDBIQUEwSDtZQUM1SCxrQkFBa0IsRUFBRSw0QkFBRSxDQUFDLGtCQUFrQixDQUFDLGtDQUFrQztZQUM1RSxTQUFTLEVBQUUsZ0NBQWdDO1lBQzNDLGdCQUFnQixFQUFFLDRCQUFFLENBQUMsZ0JBQWdCLENBQUMsYUFBYTtZQUNuRCxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLFFBQVEsRUFBRSxDQUFDO1NBQ1osQ0FBQztJQUNKLENBQUM7O0FBdkZILGdEQXdGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF3c19jbG91ZHdhdGNoIGFzIGN3LCBhd3NfZHluYW1vZGIgYXMgZHluYW1vZGIsIER1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBNZXRyaWNBbGFybVByb3BzIH0gZnJvbSAnLi9tZXRyaWMtYWxhcm0nO1xuaW1wb3J0IHsgTW9uaXRvclR5cGUgfSBmcm9tICcuL21vbml0b3ItdHlwZSc7XG5pbXBvcnQgeyBJV2F0Y2hmdWwgfSBmcm9tICcuL3dhdGNoZnVsJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciBkZWZpbmluZyBhbGFybXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2F0Y2hEeW5hbW9EYlRhYmxlT3B0aW9ucyB7XG4gIC8qKlxuICAgICAqIFRocmVzaG9sZCBvZiByZWFkIHRocm90dGxlIGV2ZW50cy5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0VmFsdWUgMVxuICAgICAqL1xuICByZWFkb25seSByZWFkVGhyb3R0bGVFdmVudHNUaHJlc2hvbGQ/OiBudW1iZXI7XG4gIC8qKlxuICAgICAqIFRocmVzaG9sZCBvZiB3cml0ZSB0aHJvdHRsZSBldmVudHMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdFZhbHVlIDFcbiAgICAgKi9cbiAgcmVhZG9ubHkgd3JpdGVUaHJvdHRsZUV2ZW50c1RocmVzaG9sZD86IG51bWJlcjtcbiAgLyoqXG4gICAgICogVGhyZXNob2xkIG9mIHRocm90dGxlZCByZXF1ZXN0cyBldmVudHMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdFZhbHVlIDFcbiAgICAgKi9cbiAgcmVhZG9ubHkgdGhyb3R0bGVkUmVxdWVzdHNFdmVudHNUaHJlc2hvbGQ/
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1vZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2F0Y2hmdWwvZHluYW1vZGIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBdUY7QUFDdkYsMkNBQXVDO0FBRXZDLGlEQUE2QztBQXdEN0M7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFhLGtCQUFtQixTQUFRLHNCQUFTO0lBSS9DLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBOEI7UUFDdEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBRXBDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksRUFDNUIsMEJBQVcsQ0FBQyxvQkFBb0IsRUFDaEMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUN0RSxDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUM1QiwwQkFBVyxDQUFDLHFCQUFxQixFQUNqQyxJQUFJLENBQUMsOEJBQThCLENBQUMsS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQ3hFLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQzVCLDBCQUFXLENBQUMseUJBQXlCLEVBQ3JDLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FDaEYsQ0FBQztJQUNKLENBQUM7SUFFTyw2QkFBNkIsQ0FBQywyQkFBMkIsR0FBRyxDQUFDO1FBRW5FLE1BQU0sY0FBYyxHQUFHLElBQUksNEJBQUUsQ0FBQyxNQUFNLENBQUM7WUFDbkMsVUFBVSxFQUFFLG9CQUFvQjtZQUNoQyxTQUFTLEVBQUUsY0FBYztZQUN6QixNQUFNLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzVCLFNBQVMsRUFBRSw0QkFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHO1lBQ3ZCLGFBQWEsRUFBRTtnQkFDYixTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTO2FBQ25DO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsT0FBTztZQUNMLE1BQU0sRUFBRSxjQUFjO1lBQ3RCLGdCQUFnQixFQUNkLGlHQUFpRztZQUNuRyxrQkFBa0IsRUFBRSw0QkFBRSxDQUFDLGtCQUFrQixDQUFDLGtDQUFrQztZQUM1RSxTQUFTLEVBQUUsMkJBQTJCO1lBQ3RDLGdCQUFnQixFQUFFLDRCQUFFLENBQUMsZ0JBQWdCLENBQUMsYUFBYTtZQUNuRCxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLFFBQVEsRUFBRSxDQUFDO1NBQ1osQ0FBQztJQUNKLENBQUM7SUFDTyw4QkFBOEIsQ0FBQyw0QkFBNEIsR0FBRyxDQUFDO1FBQ3JFLE1BQU0sY0FBYyxHQUFHLElBQUksNEJBQUUsQ0FBQyxNQUFNLENBQUM7WUFDbkMsVUFBVSxFQUFFLHFCQUFxQjtZQUNqQyxTQUFTLEVBQUUsY0FBYztZQUN6QixNQUFNLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzVCLFNBQVMsRUFBRSw0QkFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHO1lBQ3ZCLGFBQWEsRUFBRTtnQkFDYixTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTO2FBQ25DO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsT0FBTztZQUNMLE1BQU0sRUFBRSxjQUFjO1lBQ3RCLGdCQUFnQixFQUNkLG9HQUFvRztZQUN0RyxrQkFBa0IsRUFBRSw0QkFBRSxDQUFDLGtCQUFrQixDQUFDLGtDQUFrQztZQUM1RSxTQUFTLEVBQUUsNEJBQTRCO1lBQ3ZDLGdCQUFnQixFQUFFLDRCQUFFLENBQUMsZ0JBQWdCLENBQUMsYUFBYTtZQUNuRCxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLFFBQVEsRUFBRSxDQUFDO1NBQ1osQ0FBQztJQUNKLENBQUM7SUFDTyxrQ0FBa0MsQ0FBQyxnQ0FBZ0MsR0FBRyxDQUFDO1FBQzdFLE1BQU0sY0FBYyxHQUFHLElBQUksNEJBQUUsQ0FBQyxNQUFNLENBQUM7WUFDbkMsVUFBVSxFQUFFLG1CQUFtQjtZQUMvQixTQUFTLEVBQUUsY0FBYztZQUN6QixNQUFNLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzVCLFNBQVMsRUFBRSw0QkFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHO1lBQ3ZCLGFBQWEsRUFBRTtnQkFDYixTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTO2FBQ25DO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsT0FBTztZQUNMLE1BQU0sRUFBRSxjQUFjO1lBQ3RCLGdCQUFnQixFQUNkLDBIQUEwSDtZQUM1SCxrQkFBa0IsRUFBRSw0QkFBRSxDQUFDLGtCQUFrQixDQUFDLGtDQUFrQztZQUM1RSxTQUFTLEVBQUUsZ0NBQWdDO1lBQzNDLGdCQUFnQixFQUFFLDRCQUFFLENBQUMsZ0JBQWdCLENBQUMsYUFBYTtZQUNuRCxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLFFBQVEsRUFBRSxDQUFDO1NBQ1osQ0FBQztJQUNKLENBQUM7O0FBdkZILGdEQXdGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF3c19jbG91ZHdhdGNoIGFzIGN3LCBhd3NfZHluYW1vZGIgYXMgZHluYW1vZGIsIER1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBNZXRyaWNBbGFybVByb3BzIH0gZnJvbSAnLi9tZXRyaWMtYWxhcm0nO1xuaW1wb3J0IHsgTW9uaXRvclR5cGUgfSBmcm9tICcuL21vbml0b3ItdHlwZSc7XG5pbXBvcnQgeyBJV2F0Y2hmdWwgfSBmcm9tICcuL3dhdGNoZnVsJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciBkZWZpbmluZyBhbGFybXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2F0Y2hEeW5hbW9EYlRhYmxlT3B0aW9ucyB7XG4gIC8qKlxuICAgICAqIFRocmVzaG9sZCBvZiByZWFkIHRocm90dGxlIGV2ZW50cy5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0VmFsdWUgMVxuICAgICAqL1xuICByZWFkb25seSByZWFkVGhyb3R0bGVFdmVudHNUaHJlc2hvbGQ/OiBudW1iZXI7XG4gIC8qKlxuICAgICAqIFRocmVzaG9sZCBvZiB3cml0ZSB0aHJvdHRsZSBldmVudHMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdFZhbHVlIDFcbiAgICAgKi9cbiAgcmVhZG9ubHkgd3JpdGVUaHJvdHRsZUV2ZW50c1RocmVzaG9sZD86IG51bWJlcjtcbiAgLyoqXG4gICAgICogVGhyZXNob2xkIG9mIHRocm90dGxlZCByZXF1ZXN0cyBldmVudHMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdFZhbHVlIDFcbiAgICAgKi9cbiAgcmVhZG9ubHkgdGhyb3R0bGVkUmVxdWVzdHNFdmVudHNUaHJlc2hvbGQ/OiBudW1iZXI7XG4gIC8qKlxuICAgICAqIFRocmVzaG9sZCBvZiB1c2VyIGVycm9ycy5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0VmFsdWUgMVxuICAgICAqL1xuICByZWFkb25seSB1c2VyRXJyb3JzVGhyZXNob2xkPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgICAqIFRocmVzaG9sZCBvZiBzeXN0ZW0gZXJyb3JzLlxuICAgICAqXG4gICAgICogQGRlZmF1bHRWYWx1ZSAxXG4gICAgICovXG4gIHJlYWRvbmx5IHN5c3RlbUVycm9yc1RocmVzaG9sZD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBkZWZpbmluZyBhIFdhdGNoRHluYW1vRGJUYWJsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdhdGNoRHluYW1vRGJUYWJsZVByb3BzIGV4dGVuZHMgV2F0Y2hEeW5hbW9EYlRhYmxlT3B0aW9ucyB7XG4gIC8qKlxuICAgICAqIFRoZSByZWZlcmVuY2UgdG8gSVdhdGNoZnVsIGNsYXNzLiBVc2VkIGludGVybmFsbHkuXG4gICAgICovXG4gIHJlYWRvbmx5IHdhdGNoZnVsOiBJV2F0Y2hmdWw7XG5cbiAgLyoqXG4gICAgICogVGhlIER5bmFtb0RiIHRhYmxlIHRoYXQgc2hvdWxkIGJlIHdhdGNoZWQuXG4gICAgICogW2Rpc2FibGUtYXdzbGludDpyZWYtdmlhLWludGVyZmFjZV1cbiAgICAgKi9cbiAgcmVhZG9ubHkgZHluYW1vRGJUYWJsZTogZHluYW1vZGIuVGFibGUgfCBkeW5hbW9kYi5UYWJsZVYyO1xufVxuXG4vKipcbiAqIEEgQ29uc3RydWN0IHdoaWNoIGNyZWF0ZXMgdGhlIGZvbGxvd2luZyBhbGFybXMgZm9yIER5bmFtb0RiIHRhYmxlczpcbiAqXG4gKiAtIHJlYWQgdGhyb3R0bGVzXG4gKiAtIHdyaXRlIHRocm90dGxlc1xuICogLSB0aHJvdHRsZWQgcmVxdWVzdHNcbiAqIC0gdXNlciBlcnJvcnNcbiAqIC0gc3lzdGVtIGVycm9yc1xuICovXG5leHBvcnQgY2xhc3MgV2F0Y2hEeW5hbW9EYlRhYmxlIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHJpdmF0ZSByZWFkb25seSB3YXRjaGZ1bDogSVdhdGNoZnVsO1xuICBwcml2YXRlIHJlYWRvbmx5IGR5bmFtb0RiOiBkeW5hbW9kYi5UYWJsZSB8IGR5bmFtb2RiLlRhYmxlVjI7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFdhdGNoRHluYW1vRGJUYWJsZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMud2F0Y2hmdWwgPSBwcm9wcy53YXRjaGZ1bDtcbiAgICB0aGlzLmR5bmFtb0RiID0gcHJvcHMuZHluYW1vRGJUYWJsZTtcblxuICAgIHRoaXMud2F0Y2hmdWwuY3JlYXRlQWxhcm0odGhpcyxcbiAgICAgIE1vbml0b3JUeXBlLlJFQURfVEhST1RUTEVfRVZFTlRTLFxuICAgICAgdGhpcy5jcmVhdGVSZWFkVGhyb3R0bGVFdmVudHNBbGFybShwcm9wcy5yZWFkVGhyb3R0bGVFdmVudHNUaHJlc2hvbGQpLFxuICAgICk7XG4gICAgdGhpcy53YXRjaGZ1bC5jcmVhdGVBbGFybSh0aGlzLFxuICAgICAgTW9uaXRvclR5cGUuV1JJVEVfVEhST1RUTEVfRVZFTlRTLFxuICAgICAgdGhpcy5jcmVhdGVXcml0ZVRocm90dGxlRXZlbnRzQWxhcm0ocHJvcHMud3JpdGVUaHJvdHRsZUV2ZW50c1RocmVzaG9sZCksXG4gICAgKTtcbiAgICB0aGlzLndhdGNoZnVsLmNyZWF0ZUFsYXJtKHRoaXMsXG4gICAgICBNb25pdG9yVHlwZS5USFJPVFRMRURfUkVRVUVTVFNfRVZFTlRTLFxuICAgICAgdGhpcy5jcmVhdGVUaHJvdHRsZWRSZXF1ZXN0c0V2ZW50c0FsYXJtKHByb3BzLnRocm90dGxlZFJlcXVlc3RzRXZlbnRzVGhyZXNob2xkKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVSZWFkVGhyb3R0bGVFdmVudHNBbGFybShyZWFkVGhyb3R0bGVFdmVudHNUaHJlc2hvbGQgPSAxKTogTWV0cmljQWxhcm1Qcm9wcyB7XG5cbiAgICBjb25zdCBkeW5hbW9EYk1ldHJpYyA9IG5ldyBjdy5NZXRyaWMoe1xuICAgICAgbWV0cmljTmFtZTogJ1JlYWRUaHJvdHRsZUV2ZW50cycsXG4gICAgICBuYW1lc3BhY2U6ICdBV1MvRHluYW1vREInLFxuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5zZWNvbmRzKDYwKSxcbiAgICAgIHN0YXRpc3RpYzogY3cuU3RhdHMuU1VNLFxuICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICBUYWJsZU5hbWU6IHRoaXMuZHluYW1vRGIudGFibGVOYW1lLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgbWV0cmljOiBkeW5hbW9EYk1ldHJpYyxcbiAgICAgIGFsYXJtRGVzY3JpcHRpb246XG4gICAgICAgICdSZWFkcyBhcmUgdGhyb3R0bGVkLiBMb3dlciBSZWFkQ2FwYWNpdHlVbml0c1V0aWxpemF0aW9uVGFyZ2V0IG9yIGluY3JlYXNlIE1heFJlYWRDYXBhY2l0eVVuaXRzLicsXG4gICAgICBjb21wYXJpc29uT3BlcmF0b3I6IGN3LkNvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgdGhyZXNob2xkOiByZWFkVGhyb3R0bGVFdmVudHNUaHJlc2hvbGQsXG4gICAgICB0cmVhdE1pc3NpbmdEYXRhOiBjdy5UcmVhdE1pc3NpbmdEYXRhLk5PVF9CUkVBQ0hJTkcsXG4gICAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICAgIHByaW9yaXR5OiAzLFxuICAgIH07XG4gIH1cbiAgcHJpdmF0ZSBjcmVhdGVXcml0ZVRocm90dGxlRXZlbnRzQWxhcm0od3JpdGVUaHJvdHRsZUV2ZW50c1RocmVzaG9sZCA9IDEpOiBNZXRyaWNBbGFybVByb3BzIHtcbiAgICBjb25zdCBkeW5hbW9EYk1ldHJpYyA9IG5ldyBjdy5NZXRyaWMoe1xuICAgICAgbWV0cmljTmFtZTogJ1dyaXRlVGhyb3R0bGVFdmVudHMnLFxuICAgICAgbmFtZXNwYWNlOiAnQVdTL0R5bmFtb0RCJyxcbiAgICAgIHBlcmlvZDogRHVyYXRpb24uc2Vjb25kcyg2MCksXG4gICAgICBzdGF0aXN0aWM6IGN3LlN0YXRzLlNVTSxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgVGFibGVOYW1lOiB0aGlzLmR5bmFtb0RiLnRhYmxlTmFtZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1ldHJpYzogZHluYW1vRGJNZXRyaWMsXG4gICAgICBhbGFybURlc2NyaXB0aW9uOlxuICAgICAgICAnV3JpdGVzIGFyZSB0aHJvdHRsZWQuIExvd2VyIFdyaXRlQ2FwYWNpdHlVbml0c1V0aWxpemF0aW9uVGFyZ2V0IG9yIGluY3JlYXNlIE1heFdyaXRlQ2FwYWNpdHlVbml0cy4nLFxuICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBjdy5Db21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgIHRocmVzaG9sZDogd3JpdGVUaHJvdHRsZUV2ZW50c1RocmVzaG9sZCxcbiAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IGN3LlRyZWF0TWlzc2luZ0RhdGEuTk9UX0JSRUFDSElORyxcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgcHJpb3JpdHk6IDMsXG4gICAgfTtcbiAgfVxuICBwcml2YXRlIGNyZWF0ZVRocm90dGxlZFJlcXVlc3RzRXZlbnRzQWxhcm0odGhyb3R0bGVkUmVxdWVzdHNFdmVudHNUaHJlc2hvbGQgPSAxKTogTWV0cmljQWxhcm1Qcm9wcyB7XG4gICAgY29uc3QgZHluYW1vRGJNZXRyaWMgPSBuZXcgY3cuTWV0cmljKHtcbiAgICAgIG1ldHJpY05hbWU6ICdUaHJvdHRsZWRSZXF1ZXN0cycsXG4gICAgICBuYW1lc3BhY2U6ICdBV1MvRHluYW1vREInLFxuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5zZWNvbmRzKDYwKSxcbiAgICAgIHN0YXRpc3RpYzogY3cuU3RhdHMuU1VNLFxuICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICBUYWJsZU5hbWU6IHRoaXMuZHluYW1vRGIudGFibGVOYW1lLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgbWV0cmljOiBkeW5hbW9EYk1ldHJpYyxcbiAgICAgIGFsYXJtRGVzY3JpcHRpb246XG4gICAgICAgICdCYXRjaCByZXF1ZXN0cyBhcmUgdGhyb3R0bGVkLiBMb3dlciB7UmVhZC9Xcml0ZX1DYXBhY2l0eVVuaXRzVXRpbGl6YXRpb25UYXJnZXQgb3IgaW5jcmVhc2UgTWF4e1JlYWQvV3JpdGV9Q2FwYWNpdHlVbml0cy4nLFxuICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBjdy5Db21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgIHRocmVzaG9sZDogdGhyb3R0bGVkUmVxdWVzdHNFdmVudHNUaHJlc2hvbGQsXG4gICAgICB0cmVhdE1pc3NpbmdEYXRhOiBjdy5UcmVhdE1pc3NpbmdEYXRhLk5PVF9CUkVBQ0hJTkcsXG4gICAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICAgIHByaW9yaXR5OiAzLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|