@fjall/components-infrastructure 0.87.20 → 0.88.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/app.d.ts +14 -18
- package/dist/lib/app.js +58 -41
- package/dist/lib/config/aws/accountId.js +1 -2
- package/dist/lib/config/aws/backupGlobalSettings.js +1 -2
- package/dist/lib/config/aws/costAllocationTags.js +3 -4
- package/dist/lib/config/aws/identityCenter.d.ts +4 -4
- package/dist/lib/config/aws/identityCenter.js +17 -63
- package/dist/lib/config/aws/identityCenterGroupMembership.js +27 -42
- package/dist/lib/config/aws/index.d.ts +0 -8
- package/dist/lib/config/aws/index.js +1 -9
- package/dist/lib/config/aws/ipamDelegateAdmin.js +1 -2
- package/dist/lib/config/aws/ipamPoolId.js +1 -2
- package/dist/lib/config/aws/organisationId.js +1 -2
- package/dist/lib/config/aws/organisationsAccess.js +1 -2
- package/dist/lib/config/aws/ramSharing.js +1 -2
- package/dist/lib/layers/layers/secrets-resolver/bin/resolve-secrets +30 -0
- package/dist/lib/layers/layers/secrets-resolver/bin/resolve-secrets.mjs +212 -0
- package/dist/lib/layers/secrets-resolver/bin/resolve-secrets +30 -0
- package/dist/lib/layers/secrets-resolver/bin/resolve-secrets.mjs +212 -0
- package/dist/lib/patterns/aws/account.d.ts +12 -0
- package/dist/lib/patterns/aws/account.js +73 -0
- package/dist/lib/patterns/aws/buildkite.js +1 -2
- package/dist/lib/patterns/aws/cdn.d.ts +5 -10
- package/dist/lib/patterns/aws/cdn.js +5 -13
- package/dist/lib/patterns/aws/compute.d.ts +20 -3
- package/dist/lib/patterns/aws/compute.js +29 -5
- package/dist/lib/patterns/aws/database.d.ts +3 -3
- package/dist/lib/patterns/aws/database.js +18 -15
- package/dist/lib/patterns/aws/index.d.ts +4 -3
- package/dist/lib/patterns/aws/index.js +6 -4
- package/dist/lib/patterns/aws/interfaces/index.d.ts +2 -1
- package/dist/lib/patterns/aws/interfaces/index.js +8 -5
- package/dist/lib/patterns/aws/interfaces/organisation.d.ts +22 -0
- package/dist/lib/patterns/aws/interfaces/organisation.js +28 -0
- package/dist/lib/patterns/aws/interfaces/pattern.d.ts +5 -5
- package/dist/lib/patterns/aws/interfaces/pattern.js +1 -1
- package/dist/lib/patterns/aws/interfaces/storage.d.ts +10 -120
- package/dist/lib/patterns/aws/interfaces/storage.js +6 -43
- package/dist/lib/patterns/aws/organisation.d.ts +38 -0
- package/dist/lib/patterns/aws/organisation.js +92 -0
- package/dist/lib/patterns/aws/organisationFactory.d.ts +20 -0
- package/dist/lib/patterns/aws/organisationFactory.js +24 -0
- package/dist/lib/patterns/aws/pattern.d.ts +1 -1
- package/dist/lib/patterns/aws/pattern.js +1 -1
- package/dist/lib/patterns/aws/payload.d.ts +6 -5
- package/dist/lib/patterns/aws/payload.js +92 -42
- package/dist/lib/patterns/aws/platform.d.ts +11 -0
- package/dist/lib/patterns/aws/platform.js +29 -0
- package/dist/lib/patterns/aws/storage.d.ts +40 -125
- package/dist/lib/patterns/aws/storage.js +63 -191
- package/dist/lib/resources/aws/compute/ec2.d.ts +1 -1
- package/dist/lib/resources/aws/compute/ec2.js +3 -4
- package/dist/lib/resources/aws/compute/ecs.d.ts +6 -9
- package/dist/lib/resources/aws/compute/ecs.js +58 -26
- package/dist/lib/resources/aws/compute/lambda.d.ts +14 -1
- package/dist/lib/resources/aws/compute/lambda.js +45 -13
- package/dist/lib/resources/aws/database/rdsAurora.d.ts +1 -0
- package/dist/lib/resources/aws/database/rdsAurora.js +16 -16
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.d.ts +1 -0
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.js +14 -10
- package/dist/lib/resources/aws/database/rdsInstance.d.ts +5 -4
- package/dist/lib/resources/aws/database/rdsInstance.js +18 -7
- package/dist/lib/resources/aws/iam/identityCenter/assignment.d.ts +0 -2
- package/dist/lib/resources/aws/iam/identityCenter/assignment.js +9 -46
- package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.js +1 -2
- package/dist/lib/resources/aws/iam/identityCenter/group.d.ts +1 -3
- package/dist/lib/resources/aws/iam/identityCenter/group.js +7 -85
- package/dist/lib/resources/aws/iam/identityCenter/permissionSet.d.ts +1 -3
- package/dist/lib/resources/aws/iam/identityCenter/permissionSet.js +9 -96
- package/dist/lib/resources/aws/index.d.ts +1 -0
- package/dist/lib/resources/aws/index.js +2 -1
- package/dist/lib/resources/aws/logging/cloudTrail.js +7 -4
- package/dist/lib/resources/aws/networking/ipamPool.js +76 -5
- package/dist/lib/resources/aws/organisation/index.d.ts +4 -0
- package/dist/lib/resources/aws/organisation/index.js +10 -0
- package/dist/lib/resources/aws/organisation/organisation.d.ts +12 -0
- package/dist/lib/resources/aws/organisation/organisation.js +14 -0
- package/dist/lib/resources/aws/organisation/organisationAccount.d.ts +18 -0
- package/dist/lib/resources/aws/organisation/organisationAccount.js +31 -0
- package/dist/lib/resources/aws/organisation/organisationPolicy.d.ts +13 -0
- package/dist/lib/resources/aws/organisation/organisationPolicy.js +32 -0
- package/dist/lib/resources/aws/organisation/organisationalUnit.d.ts +10 -0
- package/dist/lib/resources/aws/organisation/organisationalUnit.js +9 -0
- package/dist/lib/resources/aws/secrets/kms.js +10 -7
- package/dist/lib/resources/aws/secrets/parameter.js +5 -4
- package/dist/lib/resources/aws/storage/ecr.d.ts +3 -1
- package/dist/lib/resources/aws/storage/ecr.js +3 -3
- package/dist/lib/resources/aws/storage/s3.d.ts +6 -39
- package/dist/lib/resources/aws/storage/s3.js +31 -34
- package/dist/lib/utils/capitaliseString.d.ts +12 -0
- package/dist/lib/utils/capitaliseString.js +30 -0
- package/dist/lib/utils/capitalizeString.d.ts +11 -0
- package/dist/lib/utils/capitalizeString.js +24 -1
- package/dist/lib/utils/getConfig.d.ts +5 -1
- package/dist/lib/utils/getConfig.js +9 -1
- package/dist/lib/utils/index.d.ts +1 -0
- package/dist/lib/utils/index.js +2 -1
- package/dist/lib/utils/resourceNaming.d.ts +22 -19
- package/dist/lib/utils/resourceNaming.js +39 -35
- package/package.json +5 -6
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Account = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const aws_1 = require("../../config/aws");
|
|
6
|
+
const cloudTrail_1 = require("../../config/aws/cloudTrail");
|
|
7
|
+
const getConfig_1 = require("../../utils/getConfig");
|
|
8
|
+
const disasterRecovery_1 = require("../../config/aws/disasterRecovery");
|
|
9
|
+
class Account extends aws_cdk_lib_1.Stack {
|
|
10
|
+
constructor(scope, id, props) {
|
|
11
|
+
const config = (0, getConfig_1.getConfig)();
|
|
12
|
+
const accountId = props.accountId ?? config.accountId;
|
|
13
|
+
const region = props.region ?? config.region;
|
|
14
|
+
if (!accountId) {
|
|
15
|
+
throw new Error("Account requires an account ID. Provide it via accountId or ensure CDK context includes accountId.");
|
|
16
|
+
}
|
|
17
|
+
super(scope, id, props);
|
|
18
|
+
this.organisationType = "account";
|
|
19
|
+
this.resolvedRegion = region;
|
|
20
|
+
const orgId = this.node.tryGetContext("orgId");
|
|
21
|
+
if (orgId) {
|
|
22
|
+
new aws_cdk_lib_1.CfnOutput(this, "OrganisationIdOutput", {
|
|
23
|
+
key: "OrganisationId",
|
|
24
|
+
value: orgId,
|
|
25
|
+
exportName: "OrganisationId"
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
new aws_cdk_lib_1.CfnOutput(this, "AccountIdOutput", {
|
|
29
|
+
key: "AccountId",
|
|
30
|
+
value: this.account,
|
|
31
|
+
exportName: "AccountId",
|
|
32
|
+
description: "AWS Account ID for this account"
|
|
33
|
+
});
|
|
34
|
+
const eventBus = new aws_1.DefaultEventBus(this, "EventBus");
|
|
35
|
+
const ipamPoolId = this.node.tryGetContext("ipamPoolId");
|
|
36
|
+
if (id === "Account" && ipamPoolId) {
|
|
37
|
+
const regionSuffix = region.replace(/-/g, "");
|
|
38
|
+
new aws_cdk_lib_1.CfnOutput(this, "IpamPoolIdOutput", {
|
|
39
|
+
key: `IpamPoolId${accountId}${regionSuffix}`,
|
|
40
|
+
value: ipamPoolId,
|
|
41
|
+
exportName: `IpamPoolId${accountId}${regionSuffix}`
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
new cloudTrail_1.ManagementEventsTrail(this, "CloudTrail", {
|
|
45
|
+
accountId: this.account,
|
|
46
|
+
region
|
|
47
|
+
});
|
|
48
|
+
new aws_1.EcrDefaultImage(this, "EcrDefaultImage", {
|
|
49
|
+
region,
|
|
50
|
+
accountId: this.account,
|
|
51
|
+
eventBusArn: eventBus.defaultEventBusArn.value
|
|
52
|
+
});
|
|
53
|
+
const environment = config.environment || "unknown";
|
|
54
|
+
const isComplianceAccount = environment === "compliance";
|
|
55
|
+
const isReplicationRegion = config.disasterRecoveryRegion && region === config.disasterRecoveryRegion;
|
|
56
|
+
if (environment === "production" ||
|
|
57
|
+
isComplianceAccount ||
|
|
58
|
+
isReplicationRegion) {
|
|
59
|
+
new disasterRecovery_1.DisasterRecovery(this, "DisasterRecovery", {
|
|
60
|
+
region,
|
|
61
|
+
accountId
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
new aws_cdk_lib_1.CfnOutput(this, "Environment", {
|
|
65
|
+
key: "Environment",
|
|
66
|
+
value: environment,
|
|
67
|
+
exportName: "Environment",
|
|
68
|
+
description: "Environment type for this account (e.g., production, staging, development)"
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.Account = Account;
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvYWNjb3VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBZ0U7QUFDaEUsMENBQW9FO0FBRXBFLDREQUFvRTtBQUNwRSxxREFBa0Q7QUFDbEQsd0VBQXFFO0FBUXJFLE1BQWEsT0FBUSxTQUFRLG1CQUFLO0lBSWhDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBbUI7UUFDM0QsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBUyxHQUFFLENBQUM7UUFDM0IsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ3RELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUU3QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksS0FBSyxDQUNiLG9HQUFvRyxDQUNyRyxDQUFDO1FBQ0osQ0FBQztRQUVELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBZFYscUJBQWdCLEdBQXFCLFNBQVMsQ0FBQztRQWdCN0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUM7UUFFN0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUU7Z0JBQzFDLEdBQUcsRUFBRSxnQkFBZ0I7Z0JBQ3JCLEtBQUssRUFBRSxLQUFLO2dCQUNaLFVBQVUsRUFBRSxnQkFBZ0I7YUFDN0IsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDckMsR0FBRyxFQUFFLFdBQVc7WUFDaEIsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ25CLFVBQVUsRUFBRSxXQUFXO1lBQ3ZCLFdBQVcsRUFBRSxpQ0FBaUM7U0FDL0MsQ0FBQyxDQUFDO1FBRUgsTUFBTSxRQUFRLEdBQUcsSUFBSSxxQkFBZSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUV2RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN6RCxJQUFJLEVBQUUsS0FBSyxTQUFTLElBQUksVUFBVSxFQUFFLENBQUM7WUFDbkMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDOUMsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtnQkFDdEMsR0FBRyxFQUFFLGFBQWEsU0FBUyxHQUFHLFlBQVksRUFBRTtnQkFDNUMsS0FBSyxFQUFFLFVBQVU7Z0JBQ2pCLFVBQVUsRUFBRSxhQUFhLFNBQVMsR0FBRyxZQUFZLEVBQUU7YUFDcEQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksa0NBQXFCLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtZQUM1QyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDdkIsTUFBTTtTQUNQLENBQUMsQ0FBQztRQUVILElBQUkscUJBQWUsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDM0MsTUFBTTtZQUNOLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTztZQUN2QixXQUFXLEVBQUUsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEtBQUs7U0FDL0MsQ0FBQyxDQUFDO1FBRUgsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsSUFBSSxTQUFTLENBQUM7UUFFcEQsTUFBTSxtQkFBbUIsR0FBRyxXQUFXLEtBQUssWUFBWSxDQUFDO1FBQ3pELE1BQU0sbUJBQW1CLEdBQ3ZCLE1BQU0sQ0FBQyxzQkFBc0IsSUFBSSxNQUFNLEtBQUssTUFBTSxDQUFDLHNCQUFzQixDQUFDO1FBRTVFLElBQ0UsV0FBVyxLQUFLLFlBQVk7WUFDNUIsbUJBQW1CO1lBQ25CLG1CQUFtQixFQUNuQixDQUFDO1lBQ0QsSUFBSSxtQ0FBZ0IsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7Z0JBQzdDLE1BQU07Z0JBQ04sU0FBUzthQUNWLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUNqQyxHQUFHLEVBQUUsYUFBYTtZQUNsQixLQUFLLEVBQUUsV0FBVztZQUNsQixVQUFVLEVBQUUsYUFBYTtZQUN6QixXQUFXLEVBQ1QsNEVBQTRFO1NBQy9FLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQW5GRCwwQkFtRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5PdXRwdXQsIFN0YWNrLCB0eXBlIFN0YWNrUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IEVjckRlZmF1bHRJbWFnZSwgRGVmYXVsdEV2ZW50QnVzIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9hd3NcIjtcbmltcG9ydCB7IHR5cGUgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IE1hbmFnZW1lbnRFdmVudHNUcmFpbCB9IGZyb20gXCIuLi8uLi9jb25maWcvYXdzL2Nsb3VkVHJhaWxcIjtcbmltcG9ydCB7IGdldENvbmZpZyB9IGZyb20gXCIuLi8uLi91dGlscy9nZXRDb25maWdcIjtcbmltcG9ydCB7IERpc2FzdGVyUmVjb3ZlcnkgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2F3cy9kaXNhc3RlclJlY292ZXJ5XCI7XG5pbXBvcnQgdHlwZSB7IE9yZ2FuaXNhdGlvblR5cGUgfSBmcm9tIFwiLi9pbnRlcmZhY2VzL29yZ2FuaXNhdGlvblwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjY291bnRQcm9wcyBleHRlbmRzIFN0YWNrUHJvcHMge1xuICBhY2NvdW50SWQ/OiBzdHJpbmc7XG4gIHJlZ2lvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEFjY291bnQgZXh0ZW5kcyBTdGFjayB7XG4gIHB1YmxpYyByZWFkb25seSBvcmdhbmlzYXRpb25UeXBlOiBPcmdhbmlzYXRpb25UeXBlID0gXCJhY2NvdW50XCI7XG4gIHByb3RlY3RlZCByZWFkb25seSByZXNvbHZlZFJlZ2lvbjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBY2NvdW50UHJvcHMpIHtcbiAgICBjb25zdCBjb25maWcgPSBnZXRDb25maWcoKTtcbiAgICBjb25zdCBhY2NvdW50SWQgPSBwcm9wcy5hY2NvdW50SWQgPz8gY29uZmlnLmFjY291bnRJZDtcbiAgICBjb25zdCByZWdpb24gPSBwcm9wcy5yZWdpb24gPz8gY29uZmlnLnJlZ2lvbjtcblxuICAgIGlmICghYWNjb3VudElkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiQWNjb3VudCByZXF1aXJlcyBhbiBhY2NvdW50IElELiBQcm92aWRlIGl0IHZpYSBhY2NvdW50SWQgb3IgZW5zdXJlIENESyBjb250ZXh0IGluY2x1ZGVzIGFjY291bnRJZC5cIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIHRoaXMucmVzb2x2ZWRSZWdpb24gPSByZWdpb247XG5cbiAgICBjb25zdCBvcmdJZCA9IHRoaXMubm9kZS50cnlHZXRDb250ZXh0KFwib3JnSWRcIik7XG4gICAgaWYgKG9yZ0lkKSB7XG4gICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiT3JnYW5pc2F0aW9uSWRPdXRwdXRcIiwge1xuICAgICAgICBrZXk6IFwiT3JnYW5pc2F0aW9uSWRcIixcbiAgICAgICAgdmFsdWU6IG9yZ0lkLFxuICAgICAgICBleHBvcnROYW1lOiBcIk9yZ2FuaXNhdGlvbklkXCJcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJBY2NvdW50SWRPdXRwdXRcIiwge1xuICAgICAga2V5OiBcIkFjY291bnRJZFwiLFxuICAgICAgdmFsdWU6IHRoaXMuYWNjb3VudCxcbiAgICAgIGV4cG9ydE5hbWU6IFwiQWNjb3VudElkXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJBV1MgQWNjb3VudCBJRCBmb3IgdGhpcyBhY2NvdW50XCJcbiAgICB9KTtcblxuICAgIGNvbnN0IGV2ZW50QnVzID0gbmV3IERlZmF1bHRFdmVudEJ1cyh0aGlzLCBcIkV2ZW50QnVzXCIpO1xuXG4gICAgY29uc3QgaXBhbVBvb2xJZCA9IHRoaXMubm9kZS50cnlHZXRDb250ZXh0KFwiaXBhbVBvb2xJZFwiKTtcbiAgICBpZiAoaWQgPT09IFwiQWNjb3VudFwiICYmIGlwYW1Qb29sSWQpIHtcbiAgICAgIGNvbnN0IHJlZ2lvblN1ZmZpeCA9IHJlZ2lvbi5yZXBsYWNlKC8tL2csIFwiXCIpO1xuICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBcIklwYW1Qb29sSWRPdXRwdXRcIiwge1xuICAgICAgICBrZXk6IGBJcGFtUG9vbElkJHthY2NvdW50SWR9JHtyZWdpb25TdWZmaXh9YCxcbiAgICAgICAgdmFsdWU6IGlwYW1Qb29sSWQsXG4gICAgICAgIGV4cG9ydE5hbWU6IGBJcGFtUG9vbElkJHthY2NvdW50SWR9JHtyZWdpb25TdWZmaXh9YFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmV3IE1hbmFnZW1lbnRFdmVudHNUcmFpbCh0aGlzLCBcIkNsb3VkVHJhaWxcIiwge1xuICAgICAgYWNjb3VudElkOiB0aGlzLmFjY291bnQsXG4gICAgICByZWdpb25cbiAgICB9KTtcblxuICAgIG5ldyBFY3JEZWZhdWx0SW1hZ2UodGhpcywgXCJFY3JEZWZhdWx0SW1hZ2VcIiwge1xuICAgICAgcmVnaW9uLFxuICAgICAgYWNjb3VudElkOiB0aGlzLmFjY291bnQsXG4gICAgICBldmVudEJ1c0FybjogZXZlbnRCdXMuZGVmYXVsdEV2ZW50QnVzQXJuLnZhbHVlXG4gICAgfSk7XG5cbiAgICBjb25zdCBlbnZpcm9ubWVudCA9IGNvbmZpZy5lbnZpcm9ubWVudCB8fCBcInVua25vd25cIjtcblxuICAgIGNvbnN0IGlzQ29tcGxpYW5jZUFjY291bnQgPSBlbnZpcm9ubWVudCA9PT0gXCJjb21wbGlhbmNlXCI7XG4gICAgY29uc3QgaXNSZXBsaWNhdGlvblJlZ2lvbiA9XG4gICAgICBjb25maWcuZGlzYXN0ZXJSZWNvdmVyeVJlZ2lvbiAmJiByZWdpb24gPT09IGNvbmZpZy5kaXNhc3RlclJlY292ZXJ5UmVnaW9uO1xuXG4gICAgaWYgKFxuICAgICAgZW52aXJvbm1lbnQgPT09IFwicHJvZHVjdGlvblwiIHx8XG4gICAgICBpc0NvbXBsaWFuY2VBY2NvdW50IHx8XG4gICAgICBpc1JlcGxpY2F0aW9uUmVnaW9uXG4gICAgKSB7XG4gICAgICBuZXcgRGlzYXN0ZXJSZWNvdmVyeSh0aGlzLCBcIkRpc2FzdGVyUmVjb3ZlcnlcIiwge1xuICAgICAgICByZWdpb24sXG4gICAgICAgIGFjY291bnRJZFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBcIkVudmlyb25tZW50XCIsIHtcbiAgICAgIGtleTogXCJFbnZpcm9ubWVudFwiLFxuICAgICAgdmFsdWU6IGVudmlyb25tZW50LFxuICAgICAgZXhwb3J0TmFtZTogXCJFbnZpcm9ubWVudFwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiRW52aXJvbm1lbnQgdHlwZSBmb3IgdGhpcyBhY2NvdW50IChlLmcuLCBwcm9kdWN0aW9uLCBzdGFnaW5nLCBkZXZlbG9wbWVudClcIlxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -313,7 +313,6 @@ class Buildkite extends aws_cdk_lib_1.Stack {
|
|
|
313
313
|
}));
|
|
314
314
|
// Buildkite Suspend Austoscaling Group Custom Resource
|
|
315
315
|
new awsCustomResource_1.AwsCustomResource(this, `${id}SuspendAutoscalingProcess`, {
|
|
316
|
-
functionName: "suspendAutoScalingProcessess",
|
|
317
316
|
onCreate: {
|
|
318
317
|
service: "AutoScaling",
|
|
319
318
|
action: "suspendProcesses",
|
|
@@ -359,4 +358,4 @@ class Buildkite extends aws_cdk_lib_1.Stack {
|
|
|
359
358
|
}
|
|
360
359
|
exports.Buildkite = Buildkite;
|
|
361
360
|
exports.default = Buildkite;
|
|
362
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRraXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL3BhdHRlcm5zL2F3cy9idWlsZGtpdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXFFO0FBQ3JFLGlEQUs2QjtBQUM3Qix5RUFBOEQ7QUFDOUQsaURBWTZCO0FBQzdCLGlFQU1xQztBQUNyQyxpREFBcUQ7QUFDckQsbUVBQWtFO0FBQ2xFLHFFQUF5RTtBQUV6RSw0REFBeUQ7QUFDekQsaURBQXVEO0FBQ3ZELHlEQUF1RDtBQUN2RCx5REFBb0U7QUFDcEUsdUZBQW9GO0FBR3BGLElBQUssWUFJSjtBQUpELFdBQUssWUFBWTtJQUNmLGlDQUFpQixDQUFBO0lBQ2pCLDZCQUFhLENBQUE7SUFDYiw2QkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUpJLFlBQVksS0FBWixZQUFZLFFBSWhCO0FBbURZLFFBQUEscUJBQXFCLEdBOEM5QjtJQUNGLGdDQUFnQztJQUNoQyxtQkFBbUIsRUFBRSxTQUFTO0lBQzlCLE9BQU8sRUFBRSxFQUFFO0lBQ1gscUJBQXFCLEVBQUUsWUFBWSxDQUFDLE1BQU07SUFDMUMsa0JBQWtCLEVBQUUsRUFBRTtJQUN0Qiw0QkFBNEIsRUFBRSxLQUFLO0lBQ25DLHlCQUF5QixFQUFFLEVBQUU7SUFDN0IsMkJBQTJCLEVBQUUsT0FBTztJQUNwQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ25CLDRCQUE0QixFQUFFLEVBQUU7SUFDaEMsK0JBQStCLEVBQUUsRUFBRTtJQUNuQyxrQ0FBa0MsRUFBRSxLQUFLO0lBQ3pDLGtDQUFrQyxFQUFFLEVBQUU7SUFDdEMsY0FBYyxFQUFFLFNBQVM7SUFDekIsaUJBQWlCLEVBQUUsQ0FBQztJQUNwQixrQkFBa0IsRUFBRSxFQUFFO0lBQ3RCLGVBQWUsRUFBRSxFQUFFO0lBQ25CLGtCQUFrQixFQUFFLEVBQUU7SUFDdEIsaUJBQWlCO0lBQ2pCLGlCQUFpQixFQUFFLHNCQUFZLENBQUMsRUFBRSxDQUFD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L0MsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixFQUFFO2dCQUNyQyxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUMsaUJBQWlCLEVBQUU7Z0JBQ3JDLG1CQUFtQixFQUFFLGdCQUFnQixDQUFDLG9CQUFvQjtnQkFDMUQsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjO2dCQUNwQyxzQkFBc0IsRUFBRSxHQUFHLEtBQUssQ0FBQyxzQkFBc0IsRUFBRTtnQkFDekQsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLHlCQUF5QjtnQkFDcEQsZUFBZSxFQUFFLEtBQUssQ0FBQyxxQkFBcUI7Z0JBQzVDLGdCQUFnQixFQUFFLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixFQUFFO2FBQzlDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBNVlELDhCQTRZQztBQUVELGtCQUFlLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER1cmF0aW9uLCB0eXBlIFN0YWNrUHJvcHMsIFN0YWNrLCBUYWdzIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge1xuICBDb21wb3NpdGVQcmluY2lwYWwsXG4gIFNlcnZpY2VQcmluY2lwYWwsXG4gIFBvbGljeURvY3VtZW50LFxuICBQb2xpY3lTdGF0ZW1lbnRcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IEZqYWxsTG9nZ2VyIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3ZhbGlkYXRpb25Mb2dnZXIuanNcIjtcbmltcG9ydCB7XG4gIEJsb2NrRGV2aWNlVm9sdW1lLFxuICBJbnN0YW5jZUNsYXNzLFxuICBJbnN0YW5jZVNpemUsXG4gIEluc3RhbmNlVHlwZSxcbiAgTGF1bmNoVGVtcGxhdGUsXG4gIExhdW5jaFRlbXBsYXRlSHR0cFRva2VucyxcbiAgTWFjaGluZUltYWdlLFxuICBNdWx0aXBhcnRCb2R5LFxuICBNdWx0aXBhcnRVc2VyRGF0YSxcbiAgU3VibmV0VHlwZSxcbiAgVXNlckRhdGFcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7XG4gIEF1dG9TY2FsaW5nR3JvdXAsXG4gIEdyb3VwTWV0cmljcyxcbiAgU3BvdEFsbG9jYXRpb25TdHJhdGVneSxcbiAgVGVybWluYXRpb25Qb2xpY3ksXG4gIFVwZGF0ZVBvbGljeVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWF1dG9zY2FsaW5nXCI7XG5pbXBvcnQgeyBDZm5BcHBsaWNhdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc2FtXCI7XG5pbXBvcnQgeyBQaHlzaWNhbFJlc291cmNlSWQgfSBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiO1xuaW1wb3J0IHsgQnVja2V0RGVwbG95bWVudCwgU291cmNlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zMy1kZXBsb3ltZW50XCI7XG5pbXBvcnQgeyB0eXBlIENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBWcGMgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9uZXR3b3JraW5nL3ZwY1wiO1xuaW1wb3J0IHsgUG9saWN5LCBSb2xlIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvaWFtXCI7XG5pbXBvcnQgeyBTM0J1Y2tldCB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL3N0b3JhZ2VcIjtcbmltcG9ydCB7IFNlY3VyZVN0cmluZ1BhcmFtZXRlciB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL3NlY3JldHNcIjtcbmltcG9ydCB7IEF3c0N1c3RvbVJlc291cmNlIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvdXRpbGl0aWVzL2F3c0N1c3RvbVJlc291cmNlXCI7XG5pbXBvcnQgeyB0eXBlIEtleVZhbHVlIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5cbmVudW0gYWdlbnRSZWxlYXNlIHtcbiAgU1RBQkxFID0gXCJzdGFibGVcIixcbiAgQkVUQSA9IFwiYmV0YVwiLFxuICBFREdFID0gXCJlZGdlXCJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZGtpdGVQcm9wcyBleHRlbmRzIFN0YWNrUHJvcHMge1xuICBhY2NvdW50SWQ/OiBzdHJpbmc7XG4gIGVsYXN0aWNTdGFja1ZlcnNpb246IHN0cmluZztcbiAga2V5TmFtZTogc3RyaW5nO1xuICBidWlsZGtpdGVBZ2VudFJlbGVhc2U6IGFnZW50UmVsZWFzZTtcbiAgYnVpbGRraXRlQWdlbnRUYWdzOiBzdHJpbmc7XG4gIGJ1aWxka2l0ZUFnZW50VGltZXN0YW1wTGluZXM6IGJvb2xlYW47XG4gIGJ1aWxka2l0ZUFnZW50RXhwZXJpbWVudHM6IHN0cmluZztcbiAgYnVpbGRraXRlQWdlbnRTY2FsZXJWZXJzaW9uOiBzdHJpbmc7XG4gIGxvZ1JldGVudGlvbkRheXM6IG51bWJlcjtcbiAgYnVpbGRraXRlQWdlbnRUcmFjaW5nQmFja2VuZDogXCJcIiB8IFwiZGF0YWRvZ1wiIHwgXCJvcGVudGVsZW1ldHJ5XCI7XG4gIGJ1aWxka2l0ZUFnZW50Q2FuY2VsR3JhY2VQZXJpb2Q6IG51bWJlcjtcbiAgYnVpbGRraXRlVGVybWluYXRlSW5zdGFuY2VBZnRlckpvYjogYm9vbGVhbjtcbiAgYnVpbGRraXRlQWRkaXRpb25hbFN1ZG9QZXJtaXNzaW9uczogc3RyaW5nO1xuICBidWlsZGtpdGVRdWV1ZTogc3RyaW5nO1xuICBhZ2VudHNQZXJJbnN0YW5jZTogbnVtYmVyO1xuICBib290c3RyYXBTY3JpcHRVcmw6IHN0cmluZztcbiAgYWdlbnRFbnZGaWxlVXJsOiBzdHJpbmc7XG4gIGF1dGhvcml6ZWRVc2Vyc1VybDogc3RyaW5nO1xuICAvLyBJbmZyYXN0cnVjdHVyZVxuICBhZ2VudEluc3RhbmNlVHlwZTogSW5zdGFuY2VUeXBlO1xuICBhZ2VudFZvbHVtZVNpemU6IG51bWJlcjtcbiAgYWdlbnRNaW5JbnN0YW5jZXM6IG51bWJlcjtcbiAgYWdlbnRNYXhJbnN0YW5jZXM6IG51bWJlcjtcbiAgc2NhbGVyRXZlbnRTY2hlZHVsZVBlcmlvZDogc3RyaW5nO1xuICBzY2FsZXJNaW5Qb2xsSW50ZXJ2YWw6IHN0cmluZztcbiAgc3BvdENhcGFjaXR5UGVyY2VudGFnZTogbnVtYmVyO1xuICBzY2FsZU91dEZhY3Rvcjogc3RyaW5nO1xuICBlY3JBY2Nlc3NQb2xpY3k6IHN0cmluZztcbiAgc2NhbGVJbklkbGVQZXJpb2Q6IG51bWJlcjtcbiAgc2NhbGVPdXRXYWl0aW5nRm9ySm9iczogYm9vbGVhbjtcbiAgZG9ja2VyTmV0d29ya2luZ1Byb3RvY29sOiBcImlwdjRcIiB8IFwiZHVhbHN0YWNrXCI7XG4gIGVuYWJsZVNlY3JldHNQbHVnaW46IGJvb2xlYW47XG4gIGVuYWJsZUVjclBsdWdpbjogYm9vbGVhbjtcbiAgZW5hYmxlRG9ja2VyTG9naW5QbHVnaW46IGJvb2xlYW47XG4gIGVuYWJsZURvY2tlclVzZXJOYW1lc3BhY2VSZW1hcDogYm9vbGVhbjtcbiAgZW5hYmxlRG9ja2VyRXhwZXJpbWVudGFsOiBib29sZWFuO1xuICBlbmFibGVJbnN0YW5jZVN0b3JhZ2U6IGJvb2xlYW47XG4gIG1vdW50VG1wZnNBdFRtcDogYm9vbGVhbjtcbiAgYnVpbGRraXRlQWdlbnRFbmFibGVHaXRNaXJyb3JzOiBib29sZWFuO1xuICBwaXBlbGluZVNpZ25pbmdLTVNLZXk6IHN0cmluZztcbiAgcGlwZWxpbmVTaWduaW5nVmVyaWZpY2F0aW9uRmFpbHVyZUJlaGF2aW9yOiBcImJsb2NrXCIgfCBcIndhcm5cIjtcbiAgLy8gVGFnc1xuICAvLyBUT0RPOiBNb3ZlIHRoZXNlIGludG8gYSBzaW5nbGUgdGFncyBvYmplY3RcbiAgdGFnczogS2V5VmFsdWU7XG4gIGVudmlyb25tZW50OiBzdHJpbmc7XG4gIG93bmVyPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgQnVpbGRraXRlRGVmYXVsdFByb3BzOiBQaWNrPFxuICBCdWlsZGtpdGVQcm9wcyxcbiAgLy8gQnVpbGRraXRlIEFnZW50IENvbmZpZ3VyYXRpb25cbiAgfCBcImVsYXN0aWNTdGFja1ZlcnNpb25cIlxuICB8IFwia2V5TmFtZVwiXG4gIHwgXCJidWlsZGtpdGVBZ2VudFJlbGVhc2VcIlxuICB8IFwiYnVpbGRraXRlQWdlbnRUYWdzXCJcbiAgfCBcImJ1aWxka2l0ZUFnZW50VGltZXN0YW1wTGluZXNcIlxuICB8IFwiYnVpbGRraXRlQWdlbnRFeHBlcmltZW50c1wiXG4gIHwgXCJidWlsZGtpdGVBZ2VudFNjYWxlclZlcnNpb25cIlxuICB8IFwibG9nUmV0ZW50aW9uRGF5c1wiXG4gIHwgXCJidWlsZGtpdGVBZ2VudFRyYWNpbmdCYWNrZW5kXCJcbiAgfCBcImJ1aWxka2l0ZUFnZW50Q2FuY2VsR3JhY2VQZXJpb2RcIlxuICB8IFwiYnVpbGRraXRlVGVybWluYXRlSW5zdGFuY2VBZnRlckpvYlwiXG4gIHwgXCJidWlsZGtpdGVBZGRpdGlvbmFsU3Vkb1Blcm1pc3Npb25zXCJcbiAgfCBcImJ1aWxka2l0ZVF1ZXVlXCJcbiAgfCBcImFnZW50c1Blckluc3RhbmNlXCJcbiAgfCBcImJvb3RzdHJhcFNjcmlwdFVybFwiXG4gIHwgXCJhZ2VudEVudkZpbGVVcmxcIlxuICB8IFwiYXV0aG9yaXplZFVzZXJzVXJsXCJcbiAgLy8gSW5mcmFzdHJ1Y3R1cmVcbiAgfCBcImFnZW50SW5zdGFuY2VUeXBlXCJcbiAgfCBcImFnZW50Vm9sdW1lU2l6ZVwiXG4gIHwgXCJhZ2VudE1pbkluc3RhbmNlc1wiXG4gIHwgXCJhZ2VudE1heEluc3RhbmNlc1wiXG4gIHwgXCJzY2FsZXJFdmVudFNjaGVkdWxlUGVyaW9kXCJcbiAgfCBcInNjYWxlck1pblBvbGxJbnRlcnZhbFwiXG4gIHwgXCJzcG90Q2FwYWNpdHlQZXJjZW50YWdlXCJcbiAgfCBcInNjYWxlT3V0RmFjdG9yXCJcbiAgfCBcInNjYWxlSW5JZGxlUGVyaW9kXCJcbiAgfCBcInNjYWxlT3V0V2FpdGluZ0ZvckpvYnNcIlxuICB8IFwiZWNyQWNjZXNzUG9saWN5XCJcbiAgfCBcImRvY2tlck5ldHdvcmtpbmdQcm90b2NvbFwiXG4gIHwgXCJlbmFibGVTZWNyZXRzUGx1Z2luXCJcbiAgfCBcImVuYWJsZUVjclBsdWdpblwiXG4gIHwgXCJlbmFibGVEb2NrZXJMb2dpblBsdWdpblwiXG4gIHwgXCJlbmFibGVEb2NrZXJVc2VyTmFtZXNwYWNlUmVtYXBcIlxuICB8IFwiZW5hYmxlRG9ja2VyRXhwZXJpbWVudGFsXCJcbiAgfCBcImVuYWJsZUluc3RhbmNlU3RvcmFnZVwiXG4gIHwgXCJtb3VudFRtcGZzQXRUbXBcIlxuICB8IFwiYnVpbGRraXRlQWdlbnRFbmFibGVHaXRNaXJyb3JzXCJcbiAgfCBcInBpcGVsaW5lU2lnbmluZ0tNU0tleVwiXG4gIHwgXCJwaXBlbGluZVNpZ25pbmdWZXJpZmljYXRpb25GYWlsdXJlQmVoYXZpb3JcIlxuICAvLyBUYWdzXG4gIHwgXCJlbnZpcm9ubWVudFwiXG4gIHwgXCJvd25lclwiXG4+ID0ge1xuICAvLyBCdWlsZGtpdGUgQWdlbnQgQ29uZmlndXJhdGlvblxuICBlbGFzdGljU3RhY2tWZXJzaW9uOiBcInY2LjMwLjBcIixcbiAga2V5TmFtZTogXCJcIixcbiAgYnVpbGRraXRlQWdlbnRSZWxlYXNlOiBhZ2VudFJlbGVhc2UuU1RBQkxFLFxuICBidWlsZGtpdGVBZ2VudFRhZ3M6IFwiXCIsXG4gIGJ1aWxka2l0ZUFnZW50VGltZXN0YW1wTGluZXM6IGZhbHNlLFxuICBidWlsZGtpdGVBZ2VudEV4cGVyaW1lbnRzOiBcIlwiLFxuICBidWlsZGtpdGVBZ2VudFNjYWxlclZlcnNpb246IFwiMS44LjBcIixcbiAgbG9nUmV0ZW50aW9uRGF5czogMSxcbiAgYnVpbGRraXRlQWdlbnRUcmFjaW5nQmFja2VuZDogXCJcIixcbiAgYnVpbGRraXRlQWdlbnRDYW5jZWxHcmFjZVBlcmlvZDogNjAsXG4gIGJ1aWxka2l0ZVRlcm1pbmF0ZUluc3RhbmNlQWZ0ZXJKb2I6IGZhbHNlLFxuICBidWlsZGtpdGVBZGRpdGlvbmFsU3Vkb1Blcm1pc3Npb25zOiBcIlwiLFxuICBidWlsZGtpdGVRdWV1ZTogXCJkZWZhdWx0XCIsXG4gIGFnZW50c1Blckluc3RhbmNlOiAxLFxuICBib290c3RyYXBTY3JpcHRVcmw6IFwiXCIsXG4gIGFnZW50RW52RmlsZVVybDogXCJcIixcbiAgYXV0aG9yaXplZFVzZXJzVXJsOiBcIlwiLFxuICAvLyBJbmZyYXN0cnVjdHVyZVxuICBhZ2VudEluc3RhbmNlVHlwZTogSW5zdGFuY2VUeXBlLm9mKEluc3RhbmNlQ2xhc3MuTTUsIEluc3RhbmNlU2l6ZS5MQVJHRSksXG4gIGFnZW50TWluSW5zdGFuY2VzOiAwLFxuICBhZ2VudE1heEluc3RhbmNlczogMTAsXG4gIGFnZW50Vm9sdW1lU2l6ZTogMjUwLFxuICBzY2FsZXJFdmVudFNjaGVkdWxlUGVyaW9kOiBcIjEgbWludXRlXCIsXG4gIHNjYWxlck1pblBvbGxJbnRlcnZhbDogXCIxMHNcIixcbiAgc3BvdENhcGFjaXR5UGVyY2VudGFnZTogNzUsXG4gIHNjYWxlT3V0RmFjdG9yOiBcIjEuMFwiLFxuICBzY2FsZUluSWRsZVBlcmlvZDogNjAwLFxuICBzY2FsZU91dFdhaXRpbmdGb3JKb2JzOiBmYWxzZSxcbiAgZWNyQWNjZXNzUG9saWN5OiBcIlwiLFxuICBkb2NrZXJOZXR3b3JraW5nUHJvdG9jb2w6IFwiaXB2NFwiLFxuICBlbmFibGVTZWNyZXRzUGx1Z2luOiB0cnVlLFxuICBlbmFibGVFY3JQbHVnaW46IHRydWUsXG4gIGVuYWJsZURvY2tlckxvZ2luUGx1Z2luOiB0cnVlLFxuICBlbmFibGVEb2NrZXJVc2VyTmFtZXNwYWNlUmVtYXA6IHRydWUsXG4gIGVuYWJsZURvY2tlckV4cGVyaW1lbnRhbDogZmFsc2UsXG4gIGVuYWJsZUluc3RhbmNlU3RvcmFnZTogZmFsc2UsXG4gIG1vdW50VG1wZnNBdFRtcDogdHJ1ZSxcbiAgYnVpbGRraXRlQWdlbnRFbmFibGVHaXRNaXJyb3JzOiBmYWxzZSxcbiAgcGlwZWxpbmVTaWduaW5nS01TS2V5OiBcIlwiLFxuICBwaXBlbGluZVNpZ25pbmdWZXJpZmljYXRpb25GYWlsdXJlQmVoYXZpb3I6IFwiYmxvY2tcIixcbiAgLy8gVGFnc1xuICBlbnZpcm9ubWVudDogXCJwbGF0Zm9ybVwiLFxuICBvd25lcjogXCJlbmdpbmVlclwiXG59O1xuXG5leHBvcnQgY2xhc3MgQnVpbGRraXRlIGV4dGVuZHMgU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQnVpbGRraXRlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIC8vIFRPRE86IE1ha2UgdGhpcyBpbW11dGFibGUgYW5kIGVuZm9yY2UgdGhlIHRhZ3MgYmVpbmcgc2V0XG4gICAgY29uc3QgdGFncyA9IHtcbiAgICAgIC4uLnByb3BzLnRhZ3MsXG4gICAgICBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOmVudmlyb25tZW50XCI6IHByb3BzLmVudmlyb25tZW50IHx8IFwicGxhdGZvcm1cIixcbiAgICAgIFwiZmphbGw6Y29zdEFsbG9jYXRpb246c2VydmljZVwiOiBcImJ1aWxka2l0ZVwiLFxuICAgICAgXCJmamFsbDpjb3N0QWxsb2NhdGlvbjpvd25lclwiOiBwcm9wcy5vd25lciB8fCBcImVuZ2luZWVyXCIgLy8gVE9ETzogdGhpcyB3aWxsIGhhdmUgdG8gYmUgdGhlIHBsYXRmb3JtIGFjY291bnQgbmFtZT9cbiAgICB9O1xuXG4gICAgLy8gVlBDXG4gICAgY29uc3QgdnBjID0gbmV3IFZwYyh0aGlzLCBgJHtpZH1WcGNgLCB7XG4gICAgICBhY2NvdW50SWQ6IHByb3BzLmFjY291bnRJZCxcbiAgICAgIHN1Ym5ldENvbmZpZ3VyYXRpb246IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IGAke2lkfWAsXG4gICAgICAgICAgc3VibmV0VHlwZTogU3VibmV0VHlwZS5QVUJMSUNcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgLy8gQXJ0aWZhY3RzIEJ1Y2tldFxuICAgIGNvbnN0IGFydGlmYWN0QnVja2V0ID0gbmV3IFMzQnVja2V0KHRoaXMsIGAke2lkfUFydGlmYWN0QnVja2V0YCk7XG5cbiAgICAvLyBNYW5hZ2VkIFNlY3JldHNcbiAgICBjb25zdCBtYW5hZ2VkU2VjcmV0c0J1Y2tldCA9IG5ldyBTM0J1Y2tldChcbiAgICAgIHRoaXMsXG4gICAgICBgJHtpZH1NYW5hZ2VkU2VjcmV0c0J1Y2tldGBcbiAgICApO1xuICAgIGlmIChwcm9jZXNzLmVudi5CVUlMREtJVEVfUFJJVkFURV9TU0hfS0VZKSB7XG4gICAgICBuZXcgQnVja2V0RGVwbG95bWVudCh0aGlzLCBgJHtpZH1Tc2hLZXlEZXBsb3ltZW50YCwge1xuICAgICAgICBzb3VyY2VzOiBbXG4gICAgICAgICAgU291cmNlLmRhdGEoXCJwcml2YXRlX3NzaF9rZXlcIiwgcHJvY2Vzcy5lbnYuQlVJTERLSVRFX1BSSVZBVEVfU1NIX0tFWSlcbiAgICAgICAgXSxcbiAgICAgICAgZGVzdGluYXRpb25CdWNrZXQ6IG1hbmFnZWRTZWNyZXRzQnVja2V0XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgRmphbGxMb2dnZXIud2FybihcbiAgICAgICAgXCInQlVJTERLSVRFX1BSSVZBVEVfU1NIX0tFWScgZW52aXJvbm1lbnQgdmFyaWFibGUgbm90IGRlY2xhcmVkLiBTa2lwcGluZyB1cGxvYWQgb2YgcHJpdmF0ZSBTU0gga2V5LlwiXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEVuY3J5cHRlZCBCdWlsZGtpdGUgQWdlbnQgVG9rZW5cbiAgICBjb25zdCBhZ2VudFRva2VuID0gbmV3IFNlY3VyZVN0cmluZ1BhcmFtZXRlcih0aGlzLCBgJHtpZH1BZ2VudFRva2VuYCwge1xuICAgICAgbmFtZTogYC9idWlsZGtpdGUvYWdlbnRUb2tlbmAsXG4gICAgICBhbGlhc05hbWU6IGBidWlsZGtpdGVBZ2VudFRva2VuYCxcbiAgICAgIHZhbHVlOiBwcm9jZXNzLmVudi5CVUlMREtJVEVfQUdFTlRfVE9LRU4sXG4gICAgICBvdmVyd3JpdGU6IHByb2Nlc3MuZW52LkJVSUxES0lURV9BR0VOVF9UT0tFTiA/IHRydWUgOiBmYWxzZSxcbiAgICAgIHRhZ3M6IHRhZ3MsXG4gICAgICBhY2NvdW50SWQ6IHRoaXMuYWNjb3VudCxcbiAgICAgIHJlZ2lvbjogdGhpcy5yZWdpb25cbiAgICB9KTtcblxuICAgIC8vIEJ1aWxka2l0ZSBBZ2VudCBFeGVjdXRpb24gUm9sZVxuICAgIGNvbnN0IGFnZW50Um9sZSA9IG5ldyBSb2xlKHRoaXMsIGAke2lkfUFnZW50Um9sZWAsIHtcbiAgICAgIHJvbGVOYW1lOiBgJHtpZH1BZ2VudFJvbGVgLFxuICAgICAgZGVzY3JpcHRpb246IFwiQnVpbGRraXRlIEFnZW50IElBTSBSb2xlXCIsXG4gICAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgICBbXCJkZWNyeXB0QnVpbGRraXRlQWdlbnRUb2tlblwiXTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1wia21zOkRlY3J5cHRcIl0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW2FnZW50VG9rZW4uY21rLmtleS5rZXlBcm5dXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfSksXG4gICAgICAgIFtcInJlYWRCdWlsZGtpdGVBZ2VudFRva2VuXCJdOiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXCJzc206R2V0UGFyYW1ldGVyXCJdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgICBgYXJuOmF3czpzc206JHtwcm9wcy5lbnY/LnJlZ2lvbn06JHtwcm9wcy5lbnY/LmFjY291bnR9OnBhcmFtZXRlciR7YWdlbnRUb2tlbi5uYW1lfWBcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIH0pLFxuICAgICAgICBbXCJyZWFkTWFuYWdlZFNlY3JldHNCdWNrZXRcIl06IG5ldyBQb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcInMzOkdldCpcIiwgXCJzMzpMaXN0KlwiXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAgICAgbWFuYWdlZFNlY3JldHNCdWNrZXQuYnVja2V0QXJuLFxuICAgICAgICAgICAgICAgIGAke21hbmFnZWRTZWNyZXRzQnVja2V0LmJ1Y2tldEFybn0vKmBcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIH0pLFxuICAgICAgICBbXCJ3cml0ZUFydGlmYWN0QnVja2V0XCJdOiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgXCJzMzpHZXRPYmplY3RcIixcbiAgICAgICAgICAgICAgICBcInMzOkdldE9iamVjdEFjbFwiLFxuICAgICAgICAgICAgICAgIFwiczM6R2V0T2JqZWN0VmVyc2lvblwiLFxuICAgICAgICAgICAgICAgIFwiczM6R2V0T2JqZWN0VmVyc2lvbkFjbFwiLFxuICAgICAgICAgICAgICAgIFwiczM6TGlzdEJ1Y2tldFwiLFxuICAgICAgICAgICAgICAgIFwiczM6UHV0T2JqZWN0XCIsXG4gICAgICAgICAgICAgICAgXCJzMzpQdXRPYmplY3RBY2xcIixcbiAgICAgICAgICAgICAgICBcInMzOlB1dE9iamVjdFZlcnNpb25BY2xcIlxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgICBhcnRpZmFjdEJ1Y2tldC5idWNrZXRBcm4sXG4gICAgICAgICAgICAgICAgYCR7YXJ0aWZhY3RCdWNrZXQuYnVja2V0QXJufS8qYFxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfSksXG4gICAgICAgIFtcImRlc2NyaWJlSW5zdGFuY2VcIl06IG5ldyBQb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICBcImF1dG9zY2FsaW5nOkRlc2NyaWJlQXV0b1NjYWxpbmdJbnN0YW5jZXNcIixcbiAgICAgICAgICAgICAgICBcImNsb3Vkd2F0Y2g6UHV0TWV0cmljRGF0YVwiLFxuICAgICAgICAgICAgICAgIFwiY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFja1Jlc291cmNlXCIsXG4gICAgICAgICAgICAgICAgXCJlYzI6RGVzY3JpYmVUYWdzXCJcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfSksXG4gICAgICAgIFtcImxvZ2dpbmdcIl06IG5ldyBQb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICBcImxvZ3M6Q3JlYXRlTG9nR3JvdXBcIixcbiAgICAgICAgICAgICAgICBcImxvZ3M6Q3JlYXRlTG9nU3RyZWFtXCIsXG4gICAgICAgICAgICAgICAgXCJsb2dzOlB1dExvZ0V2ZW50c1wiLFxuICAgICAgICAgICAgICAgIFwibG9nczpEZXNjcmliZUxvZ0dyb3Vwc1wiLFxuICAgICAgICAgICAgICAgIFwibG9nczpEZXNjcmliZUxvZ1N0cmVhbXNcIlxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KSxcbiAgICAgICAgW1wic3NtXCJdOiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgXCJzc206RGVzY3JpYmVJbnN0YW5jZVByb3BlcnRpZXNcIixcbiAgICAgICAgICAgICAgICBcInNzbTpMaXN0QXNzb2NpYXRpb25zXCIsXG4gICAgICAgICAgICAgICAgXCJzc206UHV0SW52ZW50b3J5XCIsXG4gICAgICAgICAgICAgICAgXCJzc206VXBkYXRlSW5zdGFuY2VJbmZvcm1hdGlvblwiLFxuICAgICAgICAgICAgICAgIFwic3NtbWVzc2FnZXM6Q3JlYXRlQ29udHJvbENoYW5uZWxcIixcbiAgICAgICAgICAgICAgICBcInNzbW1lc3NhZ2VzOkNyZWF0ZURhdGFDaGFubmVsXCIsXG4gICAgICAgICAgICAgICAgXCJzc21tZXNzYWdlczpPcGVuQ29udHJvbENoYW5uZWxcIixcbiAgICAgICAgICAgICAgICBcInNzbW1lc3NhZ2VzOk9wZW5EYXRhQ2hhbm5lbFwiLFxuICAgICAgICAgICAgICAgIFwiZWMybWVzc2FnZXM6QWNrbm93bGVkZ2VNZXNzYWdlXCIsXG4gICAgICAgICAgICAgICAgXCJlYzJtZXNzYWdlczpEZWxldGVNZXNzYWdlXCIsXG4gICAgICAgICAgICAgICAgXCJlYzJtZXNzYWdlczpGYWlsTWVzc2FnZVwiLFxuICAgICAgICAgICAgICAgIFwiZWMybWVzc2FnZXM6R2V0RW5kcG9pbnRcIixcbiAgICAgICAgICAgICAgICBcImVjMm1lc3NhZ2VzOkdldE1lc3NhZ2VzXCIsXG4gICAgICAgICAgICAgICAgXCJlYzJtZXNzYWdlczpTZW5kUmVwbHlcIlxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KVxuICAgICAgfSxcbiAgICAgIGFzc3VtZWRCeTogbmV3IENvbXBvc2l0ZVByaW5jaXBhbChcbiAgICAgICAgbmV3IFNlcnZpY2VQcmluY2lwYWwoXCJhdXRvc2NhbGluZy5hbWF6b25hd3MuY29tXCIpLFxuICAgICAgICBuZXcgU2VydmljZVByaW5jaXBhbChcImVjMi5hbWF6b25hd3MuY29tXCIpXG4gICAgICApXG4gICAgfSk7XG5cbiAgICAvLyBCdWlsZGtpdGUgQWdlbnQgRUMyIFVzZXIgRGF0YVxuICAgIGNvbnN0IG11bHRpcGFydFVzZXJEYXRhID0gbmV3IE11bHRpcGFydFVzZXJEYXRhKCk7XG5cbiAgICAvLyBDbG91ZCBDb25maWdcbiAgICBjb25zdCBjbG91ZENvbmZpZ1VzZXJEYXRhID0gVXNlckRhdGEuZm9yTGludXgoe1xuICAgICAgc2hlYmFuZzogXCIjY2xvdWQtY29uZmlnXCJcbiAgICB9KTtcbiAgICBjbG91ZENvbmZpZ1VzZXJEYXRhLmFkZENvbW1hbmRzKFxuICAgICAgXCJjbG91ZF9maW5hbF9tb2R1bGVzOlwiLFxuICAgICAgXCIgIC0gW3NjcmlwdHMtdXNlciwgYWx3YXlzXVwiXG4gICAgKTtcbiAgICBtdWx0aXBhcnRVc2VyRGF0YS5hZGRQYXJ0KFxuICAgICAgTXVsdGlwYXJ0Qm9keS5mcm9tVXNlckRhdGEoXG4gICAgICAgIGNsb3VkQ29uZmlnVXNlckRhdGEsXG4gICAgICAgIFwidGV4dC9jbG91ZC1jb25maWc7IGNoYXJzZXQ9J3VzLWFzY2lpJ1wiXG4gICAgICApXG4gICAgKTtcblxuICAgIC8vIE1vdW50IFN0b3JhZ2VcbiAgICBjb25zdCBtb3VudFN0b3JhZ2VVc2VyRGF0YSA9IFVzZXJEYXRhLmZvckxpbnV4KHtcbiAgICAgIHNoZWJhbmc6IFwiIyEvYmluL2Jhc2ggLXZcIlxuICAgIH0pO1xuICAgIG1vdW50U3RvcmFnZVVzZXJEYXRhLmFkZENvbW1hbmRzKFxuICAgICAgYEJVSUxES0lURV9FTkFCTEVfSU5TVEFOQ0VfU1RPUkFHRT0nJHtwcm9wcy5lbmFibGVJbnN0YW5jZVN0b3JhZ2V9JyBcXFxcYCxcbiAgICAgIGBCVUlMREtJVEVfTU9VTlRfVE1QRlNfQVRfVE1QPScke3Byb3BzLm1vdW50VG1wZnNBdFRtcH0nIFxcXFxgLFxuICAgICAgXCIvdXNyL2xvY2FsL2Jpbi9iay1tb3VudC1pbnN0YW5jZS1zdG9yYWdlLnNoXCJcbiAgICApO1xuICAgIG11bHRpcGFydFVzZXJEYXRhLmFkZFBhcnQoXG4gICAgICBNdWx0aXBhcnRCb2R5LmZyb21Vc2VyRGF0YShcbiAgICAgICAgbW91bnRTdG9yYWdlVXNlckRhdGEsXG4gICAgICAgIFwidGV4dC94LXNoZWxsc2NyaXB0OyBjaGFyc2V0PSd1cy1hc2NpaSdcIlxuICAgICAgKVxuICAgICk7XG5cbiAgICAvLyBDb25maWd1cmUgRG9ja2VyXG4gICAgY29uc3QgY29uZmlndXJlRG9ja2VyVXNlckRhdGEgPSBVc2VyRGF0YS5mb3JMaW51eCh7XG4gICAgICBzaGViYW5nOiBcIiMhL2Jpbi9iYXNoIC12XCJcbiAgICB9KTtcbiAgICBjb25maWd1cmVEb2NrZXJVc2VyRGF0YS5hZGRDb21tYW5kcyhcbiAgICAgIGBET0NLRVJfVVNFUk5TX1JFTUFQPScke3Byb3BzLmVuYWJsZURvY2tlclVzZXJOYW1lc3BhY2VSZW1hcH0nIFxcXFxgLFxuICAgICAgYERPQ0tFUl9FWFBFUklNRU5UQUw9JyR7cHJvcHMuZW5hYmxlRG9ja2VyRXhwZXJpbWVudGFsfScgXFxcXGAsXG4gICAgICBgRE9DS0VSX05FVFdPUktJTkdfUFJPVE9DT0w9JyR7cHJvcHMuZG9ja2VyTmV0d29ya2luZ1Byb3RvY29sfScgXFxcXGAsXG4gICAgICBgQlVJTERLSVRFX0VOQUJMRV9JTlNUQU5DRV9TVE9SQUdFPScke3Byb3BzLmVuYWJsZUluc3RhbmNlU3RvcmFnZX0nIFxcXFxgLFxuICAgICAgXCIvdXNyL2xvY2FsL2Jpbi9iay1jb25maWd1cmUtZG9ja2VyLnNoXCJcbiAgICApO1xuICAgIG11bHRpcGFydFVzZXJEYXRhLmFkZFBhcnQoXG4gICAgICBNdWx0aXBhcnRCb2R5LmZyb21Vc2VyRGF0YShcbiAgICAgICAgY29uZmlndXJlRG9ja2VyVXNlckRhdGEsXG4gICAgICAgIFwidGV4dC94LXNoZWxsc2NyaXB0OyBjaGFyc2V0PSd1cy1hc2NpaSdcIlxuICAgICAgKVxuICAgICk7XG5cbiAgICBjb25zdCBpbnN0YWxsRWxhc3RpY1N0YWNrVXNlckRhdGEgPSBVc2VyRGF0YS5mb3JMaW51eCh7XG4gICAgICBzaGViYW5nOiBcIiMhL2Jpbi9iYXNoIC12XCJcbiAgICB9KTtcbiAgICBpbnN0YWxsRWxhc3RpY1N0YWNrVXNlckRhdGEuYWRkQ29tbWFuZHMoXG4gICAgICBgQlVJTERLSVRFX1NUQUNLX05BTUU9JyR7aWR9JyBcXFxcYCxcbiAgICAgIGBCVUlMREtJVEVfU1RBQ0tfVkVSU0lPTj0nJHtwcm9wcy5lbGFzdGljU3RhY2tWZXJzaW9ufScgXFxcXGAsXG4gICAgICBgQlVJTERLSVRFX1NDQUxFX0lOX0lETEVfUEVSSU9EPScke3Byb3BzLnNjYWxlSW5JZGxlUGVyaW9kfScgXFxcXGAsXG4gICAgICBgQlVJTERLSVRFX1NFQ1JFVFNfQlVDS0VUPScke21hbmFnZWRTZWNyZXRzQnVja2V0LmJ1Y2tldE5hbWV9JyBcXFxcYCxcbiAgICAgIGBCVUlMREtJVEVfU0VDUkVUU19CVUNLRVRfUkVHSU9OPScke3Byb3BzLmVudj8ucmVnaW9ufScgXFxcXGAsXG4gICAgICBgQlVJTERLSVRFX0FHRU5UX1RPS0VOX1BBVEg9JyR7YWdlbnRUb2tlbi5uYW1lfScgXFxcXGAsXG4gICAgICBgQlVJTERLSVRFX0FHRU5UU19QRVJfSU5TVEFOQ0U9JyR7cHJvcHMuYWdlbnRzUGVySW5zdGFuY2V9JyBcXFxcYCxcbiAgICAgIGBCVUlMREtJVEVfQUdFTlRfVEFHUz0nJHtwcm9wcy5idWlsZGtpdGVBZ2VudFRhZ3N9JyBcXFxcYCxcbiAgICAgIGBCVUlMREtJVEVfQUdFTlRfVElNRVNUQU1QX0xJTkVTPScke3Byb3BzLmJ1aWxka2l0ZUFnZW50VGltZXN0YW1wTGluZXN9JyBcXFxcYCxcbiAgICAgIGBCVUlMREtJVEVfQUdFTlRfRVhQRVJJTUVOVFM9JyR7cHJvcHMuYnVpbGRraXRlQWdlbnRFeHBlcmltZW50c30nIFxcXFxgLFxuICAgICAgYEJVSUxES0lURV9BR0VOVF9UUkFDSU5HX0JBQ0tFTkQ9JyR7cHJvcHMuYnVpbGRraXRlQWdlbnRUcmFjaW5nQmFja2VuZH0nIFxcXFxgLFxuICAgICAgYEJVSUxES0lURV9BR0VOVF9SRUxFQVNFPScke3Byb3BzLmJ1aWxka2l0ZUFnZW50UmVsZWFzZX0nIFxcXFxgLFxuICAgICAgYEJVSUxES0lURV9BR0VOVF9DQU5DRUxfR1JBQ0VfUEVSSU9EPScke3Byb3BzLmJ1aWxka2l0ZUFnZW50Q2FuY2VsR3JhY2VQZXJpb2R9JyBcXFxcYCxcbiAgICAgIGBCVUlMREtJVEVfQUdFTlRfU0lHTklOR19LTVNfS0VZPScke3Byb3BzLnBpcGVsaW5lU2lnbmluZ0tNU0tleX0nIFxcXFxgLFxuICAgICAgYEJVSUxES0lURV9BR0VOVF9TSUdOSU5HX0ZBSUxVUkVfQkVIQVZJT1I9JyR7cHJvcHMucGlwZWxpbmVTaWduaW5nVmVyaWZpY2F0aW9uRmFpbHVyZUJlaGF2aW9yfScgXFxcXGAsXG4gICAgICBgQlVJTERLSVRFX1FVRVVFPScke3Byb3BzLmJ1aWxka2l0ZVF1ZXVlfScgXFxcXGAsXG4gICAgICBgQlVJTERLSVRFX0FHRU5UX0VOQUJMRV9HSVRfTUlSUk9SUz0nJHtwcm9wcy5idWlsZGtpdGVBZ2VudEVuYWJsZUdpdE1pcnJvcnN9JyBcXFxcYCxcbiAgICAgIGBCVUlMREtJVEVfRUxBU1RJQ19CT09UU1RSQVBfU0NSSVBUPScke3Byb3BzLmJvb3RzdHJhcFNjcmlwdFVybH0nIFxcXFxgLFxuICAgICAgYEJVSUxES0lURV9FTlZfRklMRV9VUkw9JyR7cHJvcHMuYWdlbnRFbnZGaWxlVXJsfScgXFxcXGAsXG4gICAgICBgQlVJTERLSVRFX0VOQUJMRV9JTlNUQU5DRV9TVE9SQUdFPScke3Byb3BzLmVuYWJsZUluc3RhbmNlU3RvcmFnZX0nIFxcXFxgLFxuICAgICAgYEJVSUxES0lURV9BVVRIT1JJWkVEX1VTRVJTX1VSTD0nJHtwcm9wcy5hdXRob3JpemVkVXNlcnNVcmx9JyBcXFxcYCxcbiAgICAgIGBCVUlMREtJVEVfRUNSX1BPTElDWT0nJHtwcm9wcy5lY3JBY2Nlc3NQb2xpY3l9JyBcXFxcYCxcbiAgICAgIGBCVUlMREtJVEVfVEVSTUlOQVRFX0lOU1RBTkNFX0FGVEVSX0pPQj0nJHtwcm9wcy5idWlsZGtpdGVUZXJtaW5hdGVJbnN0YW5jZUFmdGVySm9ifScgXFxcXGAsXG4gICAgICBgQlVJTERLSVRFX0FERElUSU9OQUxfU1VET19QRVJNSVNTSU9OUz0nJHtwcm9wcy5idWlsZGtpdGVBZGRpdGlvbmFsU3Vkb1Blcm1pc3Npb25zfScgXFxcXGAsXG4gICAgICBgQVdTX0RFRkFVTFRfUkVHSU9OPScke3Byb3BzLmVudj8ucmVnaW9ufScgXFxcXGAsXG4gICAgICBgU0VDUkVUU19QTFVHSU5fRU5BQkxFRD0nJHtwcm9wcy5lbmFibGVTZWNyZXRzUGx1Z2lufScgXFxcXGAsXG4gICAgICBgRUNSX1BMVUdJTl9FTkFCTEVEPScke3Byb3BzLmVuYWJsZUVjclBsdWdpbn0nIFxcXFxgLFxuICAgICAgYERPQ0tFUl9MT0dJTl9QTFVHSU5fRU5BQkxFRD0nJHtwcm9wcy5lbmFibGVEb2NrZXJMb2dpblBsdWdpbn0nIFxcXFxgLFxuICAgICAgYERPQ0tFUl9FWFBFUklNRU5UQUw9JyR7cHJvcHMuZW5hYmxlRG9ja2VyRXhwZXJpbWVudGFsfScgXFxcXGAsXG4gICAgICBgRE9DS0VSX1VTRVJOU19SRU1BUD0nJHtwcm9wcy5lbmFibGVEb2NrZXJVc2VyTmFtZXNwYWNlUmVtYXB9JyBcXFxcYCxcbiAgICAgIGBBV1NfUkVHSU9OPScke3Byb3BzLmVudj8ucmVnaW9ufScgXFxcXGAsXG4gICAgICBcIi91c3IvbG9jYWwvYmluL2JrLWluc3RhbGwtZWxhc3RpYy1zdGFjay5zaFwiXG4gICAgKTtcblxuICAgIC8vIE1lcmdlIFVzZXIgRGF0YVxuICAgIG11bHRpcGFydFVzZXJEYXRhLmFkZFBhcnQoXG4gICAgICBNdWx0aXBhcnRCb2R5LmZyb21Vc2VyRGF0YShcbiAgICAgICAgaW5zdGFsbEVsYXN0aWNTdGFja1VzZXJEYXRhLFxuICAgICAgICBcInRleHQveC1zaGVsbHNjcmlwdDsgY2hhcnNldD0ndXMtYXNjaWknXCJcbiAgICAgIClcbiAgICApO1xuXG4gICAgLy8gTGF1bmNoIFRlbXBsYXRlXG4gICAgY29uc3QgbGF1bmNoVGVtcGxhdGUgPSBuZXcgTGF1bmNoVGVtcGxhdGUoXG4gICAgICB0aGlzLFxuICAgICAgYCR7aWR9QWdlbnRMYXVuY2hUZW1wbGF0ZWAsXG4gICAgICB7XG4gICAgICAgIGxhdW5jaFRlbXBsYXRlTmFtZTogYGJ1aWxka2l0ZUxhdW5jaFRlbXBsYXRlYCxcbiAgICAgICAgaW5zdGFuY2VUeXBlOiBwcm9wcy5hZ2VudEluc3RhbmNlVHlwZSxcbiAgICAgICAgbWFjaGluZUltYWdlOiBNYWNoaW5lSW1hZ2UubG9va3VwKHtcbiAgICAgICAgICBuYW1lOiBcImJ1aWxka2l0ZS1zdGFjay1saW51eC14ODZfNjQtKlwiLFxuICAgICAgICAgIG93bmVyczogW1wiMTcyODQwMDY0ODMyXCJdLFxuICAgICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgIFtcImJsb2NrLWRldmljZS1tYXBwaW5nLnZvbHVtZS10eXBlXCJdOiBbXCJncDNcIl1cbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICB1c2VyRGF0YTogbXVsdGlwYXJ0VXNlckRhdGEsXG4gICAgICAgIHJvbGU6IGFnZW50Um9sZSxcbiAgICAgICAgYmxvY2tEZXZpY2VzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGV2aWNlTmFtZTogXCIvZGV2L3h2ZGFcIixcbiAgICAgICAgICAgIHZvbHVtZTogQmxvY2tEZXZpY2VWb2x1bWUuZWJzKHByb3BzLmFnZW50Vm9sdW1lU2l6ZSlcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIGRldGFpbGVkTW9uaXRvcmluZzogdHJ1ZSxcbiAgICAgICAgcmVxdWlyZUltZHN2MjogZmFsc2UsXG4gICAgICAgIGh0dHBQdXRSZXNwb25zZUhvcExpbWl0OiAyLFxuICAgICAgICBodHRwVG9rZW5zOiBMYXVuY2hUZW1wbGF0ZUh0dHBUb2tlbnMuUkVRVUlSRUQsXG4gICAgICAgIGluc3RhbmNlTWV0YWRhdGFUYWdzOiB0cnVlXG4gICAgICB9XG4gICAgKTtcblxuICAgIC8vIEZ1bmN0aW9uYWwgdGFncyBmb3IgYnVpbGRraXRlIGFnZW50IGlkZW50aWZpY2F0aW9uXG4gICAgVGFncy5vZihsYXVuY2hUZW1wbGF0ZSkuYWRkKFwiUm9sZVwiLCBcImJ1aWxka2l0ZUFnZW50XCIpO1xuICAgIFRhZ3Mub2YobGF1bmNoVGVtcGxhdGUpLmFkZChcIkJ1aWxka2l0ZUFnZW50UmVsZWFzZVwiLCBhZ2VudFJlbGVhc2UuU1RBQkxFKTtcbiAgICBUYWdzLm9mKGxhdW5jaFRlbXBsYXRlKS5hZGQoXCJCdWlsZGtpdGVRdWV1ZVwiLCBwcm9wcy5idWlsZGtpdGVRdWV1ZSk7XG5cbiAgICAvLyBBdXRvc2NhbGluZyBHcm91cFxuICAgIGNvbnN0IGF1dG9TY2FsaW5nR3JvdXAgPSBuZXcgQXV0b1NjYWxpbmdHcm91cChcbiAgICAgIHRoaXMsXG4gICAgICBgJHtpZH1BZ2VudEF1dG9TY2FsaW5nR3JvdXBgLFxuICAgICAge1xuICAgICAgICB2cGM6IHZwYyxcbiAgICAgICAgbWl4ZWRJbnN0YW5jZXNQb2xpY3k6IHtcbiAgICAgICAgICBsYXVuY2hUZW1wbGF0ZTogbGF1bmNoVGVtcGxhdGUsXG4gICAgICAgICAgaW5zdGFuY2VzRGlzdHJpYnV0aW9uOiB7XG4gICAgICAgICAgICBvbkRlbWFuZFBlcmNlbnRhZ2VBYm92ZUJhc2VDYXBhY2l0eTogcHJvcHMuc3BvdENhcGFjaXR5UGVyY2VudGFnZSxcbiAgICAgICAgICAgIHNwb3RBbGxvY2F0aW9uU3RyYXRlZ3k6IFNwb3RBbGxvY2F0aW9uU3RyYXRlZ3kuQ0FQQUNJVFlfT1BUSU1JWkVEXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsYXVuY2hUZW1wbGF0ZU92ZXJyaWRlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpbnN0YW5jZVR5cGU6IHByb3BzLmFnZW50SW5zdGFuY2VUeXBlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBtaW5DYXBhY2l0eTogcHJvcHMuYWdlbnRNaW5JbnN0YW5jZXMsXG4gICAgICAgIG1heENhcGFjaXR5OiBwcm9wcy5hZ2VudE1heEluc3RhbmNlcyxcbiAgICAgICAgY29vbGRvd246IER1cmF0aW9uLnNlY29uZHMoNjApLFxuICAgICAgICBncm91cE1ldHJpY3M6IFtHcm91cE1ldHJpY3MuYWxsKCldLFxuICAgICAgICB1cGRhdGVQb2xpY3k6IFVwZGF0ZVBvbGljeS5yZXBsYWNpbmdVcGRhdGUoKSxcbiAgICAgICAgbmV3SW5zdGFuY2VzUHJvdGVjdGVkRnJvbVNjYWxlSW46IHRydWUsXG4gICAgICAgIHRlcm1pbmF0aW9uUG9saWNpZXM6IFtcbiAgICAgICAgICBUZXJtaW5hdGlvblBvbGljeS5PTERFU1RfTEFVTkNIX0NPTkZJR1VSQVRJT04sXG4gICAgICAgICAgVGVybWluYXRpb25Qb2xpY3kuQ0xPU0VTVF9UT19ORVhUX0lOU1RBTkNFX0hPVVJcbiAgICAgICAgXSxcbiAgICAgICAgc3NtU2Vzc2lvblBlcm1pc3Npb25zOiB0cnVlXG4gICAgICB9XG4gICAgKTtcblxuICAgIGFnZW50Um9sZS5hdHRhY2hJbmxpbmVQb2xpY3koXG4gICAgICBuZXcgUG9saWN5KHRoaXMsIGAke2lkfVVwZGF0ZUF1dG9TY2FsaW5nR3JvdXBQb2xpY3lgLCB7XG4gICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgXCJhdXRvc2NhbGluZzpTZXRJbnN0YW5jZUhlYWx0aFwiLFxuICAgICAgICAgICAgICBcImF1dG9zY2FsaW5nOlRlcm1pbmF0ZUluc3RhbmNlSW5BdXRvU2NhbGluZ0dyb3VwXCJcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByZXNvdXJjZXM6IFtgJHthdXRvU2NhbGluZ0dyb3VwLmF1dG9TY2FsaW5nR3JvdXBBcm59YF1cbiAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgICB9KVxuICAgICk7XG5cbiAgICAvLyBCdWlsZGtpdGUgU3VzcGVuZCBBdXN0b3NjYWxpbmcgR3JvdXAgQ3VzdG9tIFJlc291cmNlXG4gICAgbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsIGAke2lkfVN1c3BlbmRBdXRvc2NhbGluZ1Byb2Nlc3NgLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6IFwic3VzcGVuZEF1dG9TY2FsaW5nUHJvY2Vzc2Vzc1wiLFxuICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJBdXRvU2NhbGluZ1wiLFxuICAgICAgICBhY3Rpb246IFwic3VzcGVuZFByb2Nlc3Nlc1wiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgQXV0b1NjYWxpbmdHcm91cE5hbWU6IGF1dG9TY2FsaW5nR3JvdXAuYXV0b1NjYWxpbmdHcm91cE5hbWUsXG4gICAgICAgICAgU2NhbGluZ1Byb2Nlc3NlczogW1wiQVpSZWJhbGFuY2VcIl1cbiAgICAgICAgfSxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBQaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgXCJzdXNwZW5kQXV0b1NjYWxpbmdQcm9jZXNzZXNzXCJcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwiQXV0b1NjYWxpbmdcIixcbiAgICAgICAgYWN0aW9uOiBcInN1c3BlbmRQcm9jZXNzZXNcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIEF1dG9TY2FsaW5nR3JvdXBOYW1lOiBhdXRvU2NhbGluZ0dyb3VwLmF1dG9TY2FsaW5nR3JvdXBOYW1lLFxuICAgICAgICAgIFNjYWxpbmdQcm9jZXNzZXM6IFtcIkFaUmViYWxhbmNlXCJdXG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFxuICAgICAgICAgIFwic3VzcGVuZEF1dG9TY2FsaW5nUHJvY2Vzc2Vzc1wiXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpidWlsZGtpdGVTdXNwZW5kQXV0b3NjYWxpbmdcIlxuICAgIH0pO1xuXG4gICAgbmV3IENmbkFwcGxpY2F0aW9uKHRoaXMsIGAke2lkfUFnZW50U2NhbGVyYCwge1xuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgYXBwbGljYXRpb25JZDpcbiAgICAgICAgICBcImFybjphd3M6c2VydmVybGVzc3JlcG86dXMtZWFzdC0xOjE3Mjg0MDA2NDgzMjphcHBsaWNhdGlvbnMvYnVpbGRraXRlLWFnZW50LXNjYWxlclwiLFxuICAgICAgICBzZW1hbnRpY1ZlcnNpb246IHByb3BzLmJ1aWxka2l0ZUFnZW50U2NhbGVyVmVyc2lvblxuICAgICAgfSxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgQnVpbGRraXRlQWdlbnRUb2tlblBhcmFtZXRlcjogYCR7YWdlbnRUb2tlbi5uYW1lfWAsXG4gICAgICAgIEJ1aWxka2l0ZUFnZW50VG9rZW5QYXJhbWV0ZXJTdG9yZUtNU0tleTogYWdlbnRUb2tlbi5jbWsua2V5LmtleUlkLFxuICAgICAgICBSb2xlUGVybWlzc2lvbnNCb3VuZGFyeUFSTjogXCJcIixcbiAgICAgICAgQnVpbGRraXRlUXVldWU6IHByb3BzLmJ1aWxka2l0ZVF1ZXVlLFxuICAgICAgICBBZ2VudHNQZXJJbnN0YW5jZTogYCR7cHJvcHMuYWdlbnRzUGVySW5zdGFuY2V9YCxcbiAgICAgICAgTWluU2l6ZTogYCR7cHJvcHMuYWdlbnRNaW5JbnN0YW5jZXN9YCxcbiAgICAgICAgTWF4U2l6ZTogYCR7cHJvcHMuYWdlbnRNYXhJbnN0YW5jZXN9YCxcbiAgICAgICAgQWdlbnRBdXRvU2NhbGVHcm91cDogYXV0b1NjYWxpbmdHcm91cC5hdXRvU2NhbGluZ0dyb3VwTmFtZSxcbiAgICAgICAgU2NhbGVPdXRGYWN0b3I6IHByb3BzLnNjYWxlT3V0RmFjdG9yLFxuICAgICAgICBTY2FsZU91dEZvcldhaXRpbmdKb2JzOiBgJHtwcm9wcy5zY2FsZU91dFdhaXRpbmdGb3JKb2JzfWAsXG4gICAgICAgIEV2ZW50U2NoZWR1bGVQZXJpb2Q6IHByb3BzLnNjYWxlckV2ZW50U2NoZWR1bGVQZXJpb2QsXG4gICAgICAgIE1pblBvbGxJbnRlcnZhbDogcHJvcHMuc2NhbGVyTWluUG9sbEludGVydmFsLFxuICAgICAgICBMb2dSZXRlbnRpb25EYXlzOiBgJHtwcm9wcy5sb2dSZXRlbnRpb25EYXlzfWBcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBCdWlsZGtpdGU7XG4iXX0=
|
|
361
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRraXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL3BhdHRlcm5zL2F3cy9idWlsZGtpdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXFFO0FBQ3JFLGlEQUs2QjtBQUM3Qix5RUFBOEQ7QUFDOUQsaURBWTZCO0FBQzdCLGlFQU1xQztBQUNyQyxpREFBcUQ7QUFDckQsbUVBQWtFO0FBQ2xFLHFFQUF5RTtBQUV6RSw0REFBeUQ7QUFDekQsaURBQXVEO0FBQ3ZELHlEQUF1RDtBQUN2RCx5REFBb0U7QUFDcEUsdUZBQW9GO0FBR3BGLElBQUssWUFJSjtBQUpELFdBQUssWUFBWTtJQUNmLGlDQUFpQixDQUFBO0lBQ2pCLDZCQUFhLENBQUE7SUFDYiw2QkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUpJLFlBQVksS0FBWixZQUFZLFFBSWhCO0FBbURZLFFBQUEscUJBQXFCLEdBOEM5QjtJQUNGLGdDQUFnQztJQUNoQyxtQkFBbUIsRUFBRSxTQUFTO0lBQzlCLE9BQU8sRUFBRSxFQUFFO0lBQ1gscUJBQXFCLEVBQUUsWUFBWSxDQUFDLE1BQU07SUFDMUMsa0JBQWtCLEVBQUUsRUFBRTtJQUN0Qiw0QkFBNEIsRUFBRSxLQUFLO0lBQ25DLHlCQUF5QixFQUFFLEVBQUU7SUFDN0IsMkJBQTJCLEVBQUUsT0FBTztJQUNwQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ25CLDRCQUE0QixFQUFFLEVBQUU7SUFDaEMsK0JBQStCLEVBQUUsRUFBRTtJQUNuQyxrQ0FBa0MsRUFBRSxLQUFLO0lBQ3pDLGtDQUFrQyxFQUFFLEVBQUU7SUFDdEMsY0FBYyxFQUFFLFNBQVM7SUFDekIsaUJBQWlCLEVBQUUsQ0FBQztJQUNwQixrQkFBa0IsRUFBRSxFQUFFO0lBQ3RCLGVBQWUsRUFBRSxFQUFFO0lBQ25CLGtCQUFrQixFQUFFLEVBQUU7SUFDdEIsaUJBQWlCO0lBQ2pCLGlCQUFpQixFQUFFLHNCQUFZLENBQUMsRUFBRSxDQUFD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Q0FBQyxpQkFBaUIsRUFBRTtnQkFDckMsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixFQUFFO2dCQUNyQyxtQkFBbUIsRUFBRSxnQkFBZ0IsQ0FBQyxvQkFBb0I7Z0JBQzFELGNBQWMsRUFBRSxLQUFLLENBQUMsY0FBYztnQkFDcEMsc0JBQXNCLEVBQUUsR0FBRyxLQUFLLENBQUMsc0JBQXNCLEVBQUU7Z0JBQ3pELG1CQUFtQixFQUFFLEtBQUssQ0FBQyx5QkFBeUI7Z0JBQ3BELGVBQWUsRUFBRSxLQUFLLENBQUMscUJBQXFCO2dCQUM1QyxnQkFBZ0IsRUFBRSxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRTthQUM5QztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTNZRCw4QkEyWUM7QUFFRCxrQkFBZSxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiwgdHlwZSBTdGFja1Byb3BzLCBTdGFjaywgVGFncyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtcbiAgQ29tcG9zaXRlUHJpbmNpcGFsLFxuICBTZXJ2aWNlUHJpbmNpcGFsLFxuICBQb2xpY3lEb2N1bWVudCxcbiAgUG9saWN5U3RhdGVtZW50XG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBGamFsbExvZ2dlciB9IGZyb20gXCIuLi8uLi91dGlscy92YWxpZGF0aW9uTG9nZ2VyLmpzXCI7XG5pbXBvcnQge1xuICBCbG9ja0RldmljZVZvbHVtZSxcbiAgSW5zdGFuY2VDbGFzcyxcbiAgSW5zdGFuY2VTaXplLFxuICBJbnN0YW5jZVR5cGUsXG4gIExhdW5jaFRlbXBsYXRlLFxuICBMYXVuY2hUZW1wbGF0ZUh0dHBUb2tlbnMsXG4gIE1hY2hpbmVJbWFnZSxcbiAgTXVsdGlwYXJ0Qm9keSxcbiAgTXVsdGlwYXJ0VXNlckRhdGEsXG4gIFN1Ym5ldFR5cGUsXG4gIFVzZXJEYXRhXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQge1xuICBBdXRvU2NhbGluZ0dyb3VwLFxuICBHcm91cE1ldHJpY3MsXG4gIFNwb3RBbGxvY2F0aW9uU3RyYXRlZ3ksXG4gIFRlcm1pbmF0aW9uUG9saWN5LFxuICBVcGRhdGVQb2xpY3lcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hdXRvc2NhbGluZ1wiO1xuaW1wb3J0IHsgQ2ZuQXBwbGljYXRpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNhbVwiO1xuaW1wb3J0IHsgUGh5c2ljYWxSZXNvdXJjZUlkIH0gZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIjtcbmltcG9ydCB7IEJ1Y2tldERlcGxveW1lbnQsIFNvdXJjZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczMtZGVwbG95bWVudFwiO1xuaW1wb3J0IHsgdHlwZSBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgVnBjIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvbmV0d29ya2luZy92cGNcIjtcbmltcG9ydCB7IFBvbGljeSwgUm9sZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2lhbVwiO1xuaW1wb3J0IHsgUzNCdWNrZXQgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9zdG9yYWdlXCI7XG5pbXBvcnQgeyBTZWN1cmVTdHJpbmdQYXJhbWV0ZXIgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9zZWNyZXRzXCI7XG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL3V0aWxpdGllcy9hd3NDdXN0b21SZXNvdXJjZVwiO1xuaW1wb3J0IHsgdHlwZSBLZXlWYWx1ZSB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuXG5lbnVtIGFnZW50UmVsZWFzZSB7XG4gIFNUQUJMRSA9IFwic3RhYmxlXCIsXG4gIEJFVEEgPSBcImJldGFcIixcbiAgRURHRSA9IFwiZWRnZVwiXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRraXRlUHJvcHMgZXh0ZW5kcyBTdGFja1Byb3BzIHtcbiAgYWNjb3VudElkPzogc3RyaW5nO1xuICBlbGFzdGljU3RhY2tWZXJzaW9uOiBzdHJpbmc7XG4gIGtleU5hbWU6IHN0cmluZztcbiAgYnVpbGRraXRlQWdlbnRSZWxlYXNlOiBhZ2VudFJlbGVhc2U7XG4gIGJ1aWxka2l0ZUFnZW50VGFnczogc3RyaW5nO1xuICBidWlsZGtpdGVBZ2VudFRpbWVzdGFtcExpbmVzOiBib29sZWFuO1xuICBidWlsZGtpdGVBZ2VudEV4cGVyaW1lbnRzOiBzdHJpbmc7XG4gIGJ1aWxka2l0ZUFnZW50U2NhbGVyVmVyc2lvbjogc3RyaW5nO1xuICBsb2dSZXRlbnRpb25EYXlzOiBudW1iZXI7XG4gIGJ1aWxka2l0ZUFnZW50VHJhY2luZ0JhY2tlbmQ6IFwiXCIgfCBcImRhdGFkb2dcIiB8IFwib3BlbnRlbGVtZXRyeVwiO1xuICBidWlsZGtpdGVBZ2VudENhbmNlbEdyYWNlUGVyaW9kOiBudW1iZXI7XG4gIGJ1aWxka2l0ZVRlcm1pbmF0ZUluc3RhbmNlQWZ0ZXJKb2I6IGJvb2xlYW47XG4gIGJ1aWxka2l0ZUFkZGl0aW9uYWxTdWRvUGVybWlzc2lvbnM6IHN0cmluZztcbiAgYnVpbGRraXRlUXVldWU6IHN0cmluZztcbiAgYWdlbnRzUGVySW5zdGFuY2U6IG51bWJlcjtcbiAgYm9vdHN0cmFwU2NyaXB0VXJsOiBzdHJpbmc7XG4gIGFnZW50RW52RmlsZVVybDogc3RyaW5nO1xuICBhdXRob3JpemVkVXNlcnNVcmw6IHN0cmluZztcbiAgLy8gSW5mcmFzdHJ1Y3R1cmVcbiAgYWdlbnRJbnN0YW5jZVR5cGU6IEluc3RhbmNlVHlwZTtcbiAgYWdlbnRWb2x1bWVTaXplOiBudW1iZXI7XG4gIGFnZW50TWluSW5zdGFuY2VzOiBudW1iZXI7XG4gIGFnZW50TWF4SW5zdGFuY2VzOiBudW1iZXI7XG4gIHNjYWxlckV2ZW50U2NoZWR1bGVQZXJpb2Q6IHN0cmluZztcbiAgc2NhbGVyTWluUG9sbEludGVydmFsOiBzdHJpbmc7XG4gIHNwb3RDYXBhY2l0eVBlcmNlbnRhZ2U6IG51bWJlcjtcbiAgc2NhbGVPdXRGYWN0b3I6IHN0cmluZztcbiAgZWNyQWNjZXNzUG9saWN5OiBzdHJpbmc7XG4gIHNjYWxlSW5JZGxlUGVyaW9kOiBudW1iZXI7XG4gIHNjYWxlT3V0V2FpdGluZ0ZvckpvYnM6IGJvb2xlYW47XG4gIGRvY2tlck5ldHdvcmtpbmdQcm90b2NvbDogXCJpcHY0XCIgfCBcImR1YWxzdGFja1wiO1xuICBlbmFibGVTZWNyZXRzUGx1Z2luOiBib29sZWFuO1xuICBlbmFibGVFY3JQbHVnaW46IGJvb2xlYW47XG4gIGVuYWJsZURvY2tlckxvZ2luUGx1Z2luOiBib29sZWFuO1xuICBlbmFibGVEb2NrZXJVc2VyTmFtZXNwYWNlUmVtYXA6IGJvb2xlYW47XG4gIGVuYWJsZURvY2tlckV4cGVyaW1lbnRhbDogYm9vbGVhbjtcbiAgZW5hYmxlSW5zdGFuY2VTdG9yYWdlOiBib29sZWFuO1xuICBtb3VudFRtcGZzQXRUbXA6IGJvb2xlYW47XG4gIGJ1aWxka2l0ZUFnZW50RW5hYmxlR2l0TWlycm9yczogYm9vbGVhbjtcbiAgcGlwZWxpbmVTaWduaW5nS01TS2V5OiBzdHJpbmc7XG4gIHBpcGVsaW5lU2lnbmluZ1ZlcmlmaWNhdGlvbkZhaWx1cmVCZWhhdmlvcjogXCJibG9ja1wiIHwgXCJ3YXJuXCI7XG4gIC8vIFRhZ3NcbiAgLy8gVE9ETzogTW92ZSB0aGVzZSBpbnRvIGEgc2luZ2xlIHRhZ3Mgb2JqZWN0XG4gIHRhZ3M6IEtleVZhbHVlO1xuICBlbnZpcm9ubWVudDogc3RyaW5nO1xuICBvd25lcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IEJ1aWxka2l0ZURlZmF1bHRQcm9wczogUGljazxcbiAgQnVpbGRraXRlUHJvcHMsXG4gIC8vIEJ1aWxka2l0ZSBBZ2VudCBDb25maWd1cmF0aW9uXG4gIHwgXCJlbGFzdGljU3RhY2tWZXJzaW9uXCJcbiAgfCBcImtleU5hbWVcIlxuICB8IFwiYnVpbGRraXRlQWdlbnRSZWxlYXNlXCJcbiAgfCBcImJ1aWxka2l0ZUFnZW50VGFnc1wiXG4gIHwgXCJidWlsZGtpdGVBZ2VudFRpbWVzdGFtcExpbmVzXCJcbiAgfCBcImJ1aWxka2l0ZUFnZW50RXhwZXJpbWVudHNcIlxuICB8IFwiYnVpbGRraXRlQWdlbnRTY2FsZXJWZXJzaW9uXCJcbiAgfCBcImxvZ1JldGVudGlvbkRheXNcIlxuICB8IFwiYnVpbGRraXRlQWdlbnRUcmFjaW5nQmFja2VuZFwiXG4gIHwgXCJidWlsZGtpdGVBZ2VudENhbmNlbEdyYWNlUGVyaW9kXCJcbiAgfCBcImJ1aWxka2l0ZVRlcm1pbmF0ZUluc3RhbmNlQWZ0ZXJKb2JcIlxuICB8IFwiYnVpbGRraXRlQWRkaXRpb25hbFN1ZG9QZXJtaXNzaW9uc1wiXG4gIHwgXCJidWlsZGtpdGVRdWV1ZVwiXG4gIHwgXCJhZ2VudHNQZXJJbnN0YW5jZVwiXG4gIHwgXCJib290c3RyYXBTY3JpcHRVcmxcIlxuICB8IFwiYWdlbnRFbnZGaWxlVXJsXCJcbiAgfCBcImF1dGhvcml6ZWRVc2Vyc1VybFwiXG4gIC8vIEluZnJhc3RydWN0dXJlXG4gIHwgXCJhZ2VudEluc3RhbmNlVHlwZVwiXG4gIHwgXCJhZ2VudFZvbHVtZVNpemVcIlxuICB8IFwiYWdlbnRNaW5JbnN0YW5jZXNcIlxuICB8IFwiYWdlbnRNYXhJbnN0YW5jZXNcIlxuICB8IFwic2NhbGVyRXZlbnRTY2hlZHVsZVBlcmlvZFwiXG4gIHwgXCJzY2FsZXJNaW5Qb2xsSW50ZXJ2YWxcIlxuICB8IFwic3BvdENhcGFjaXR5UGVyY2VudGFnZVwiXG4gIHwgXCJzY2FsZU91dEZhY3RvclwiXG4gIHwgXCJzY2FsZUluSWRsZVBlcmlvZFwiXG4gIHwgXCJzY2FsZU91dFdhaXRpbmdGb3JKb2JzXCJcbiAgfCBcImVjckFjY2Vzc1BvbGljeVwiXG4gIHwgXCJkb2NrZXJOZXR3b3JraW5nUHJvdG9jb2xcIlxuICB8IFwiZW5hYmxlU2VjcmV0c1BsdWdpblwiXG4gIHwgXCJlbmFibGVFY3JQbHVnaW5cIlxuICB8IFwiZW5hYmxlRG9ja2VyTG9naW5QbHVnaW5cIlxuICB8IFwiZW5hYmxlRG9ja2VyVXNlck5hbWVzcGFjZVJlbWFwXCJcbiAgfCBcImVuYWJsZURvY2tlckV4cGVyaW1lbnRhbFwiXG4gIHwgXCJlbmFibGVJbnN0YW5jZVN0b3JhZ2VcIlxuICB8IFwibW91bnRUbXBmc0F0VG1wXCJcbiAgfCBcImJ1aWxka2l0ZUFnZW50RW5hYmxlR2l0TWlycm9yc1wiXG4gIHwgXCJwaXBlbGluZVNpZ25pbmdLTVNLZXlcIlxuICB8IFwicGlwZWxpbmVTaWduaW5nVmVyaWZpY2F0aW9uRmFpbHVyZUJlaGF2aW9yXCJcbiAgLy8gVGFnc1xuICB8IFwiZW52aXJvbm1lbnRcIlxuICB8IFwib3duZXJcIlxuPiA9IHtcbiAgLy8gQnVpbGRraXRlIEFnZW50IENvbmZpZ3VyYXRpb25cbiAgZWxhc3RpY1N0YWNrVmVyc2lvbjogXCJ2Ni4zMC4wXCIsXG4gIGtleU5hbWU6IFwiXCIsXG4gIGJ1aWxka2l0ZUFnZW50UmVsZWFzZTogYWdlbnRSZWxlYXNlLlNUQUJMRSxcbiAgYnVpbGRraXRlQWdlbnRUYWdzOiBcIlwiLFxuICBidWlsZGtpdGVBZ2VudFRpbWVzdGFtcExpbmVzOiBmYWxzZSxcbiAgYnVpbGRraXRlQWdlbnRFeHBlcmltZW50czogXCJcIixcbiAgYnVpbGRraXRlQWdlbnRTY2FsZXJWZXJzaW9uOiBcIjEuOC4wXCIsXG4gIGxvZ1JldGVudGlvbkRheXM6IDEsXG4gIGJ1aWxka2l0ZUFnZW50VHJhY2luZ0JhY2tlbmQ6IFwiXCIsXG4gIGJ1aWxka2l0ZUFnZW50Q2FuY2VsR3JhY2VQZXJpb2Q6IDYwLFxuICBidWlsZGtpdGVUZXJtaW5hdGVJbnN0YW5jZUFmdGVySm9iOiBmYWxzZSxcbiAgYnVpbGRraXRlQWRkaXRpb25hbFN1ZG9QZXJtaXNzaW9uczogXCJcIixcbiAgYnVpbGRraXRlUXVldWU6IFwiZGVmYXVsdFwiLFxuICBhZ2VudHNQZXJJbnN0YW5jZTogMSxcbiAgYm9vdHN0cmFwU2NyaXB0VXJsOiBcIlwiLFxuICBhZ2VudEVudkZpbGVVcmw6IFwiXCIsXG4gIGF1dGhvcml6ZWRVc2Vyc1VybDogXCJcIixcbiAgLy8gSW5mcmFzdHJ1Y3R1cmVcbiAgYWdlbnRJbnN0YW5jZVR5cGU6IEluc3RhbmNlVHlwZS5vZihJbnN0YW5jZUNsYXNzLk01LCBJbnN0YW5jZVNpemUuTEFSR0UpLFxuICBhZ2VudE1pbkluc3RhbmNlczogMCxcbiAgYWdlbnRNYXhJbnN0YW5jZXM6IDEwLFxuICBhZ2VudFZvbHVtZVNpemU6IDI1MCxcbiAgc2NhbGVyRXZlbnRTY2hlZHVsZVBlcmlvZDogXCIxIG1pbnV0ZVwiLFxuICBzY2FsZXJNaW5Qb2xsSW50ZXJ2YWw6IFwiMTBzXCIsXG4gIHNwb3RDYXBhY2l0eVBlcmNlbnRhZ2U6IDc1LFxuICBzY2FsZU91dEZhY3RvcjogXCIxLjBcIixcbiAgc2NhbGVJbklkbGVQZXJpb2Q6IDYwMCxcbiAgc2NhbGVPdXRXYWl0aW5nRm9ySm9iczogZmFsc2UsXG4gIGVjckFjY2Vzc1BvbGljeTogXCJcIixcbiAgZG9ja2VyTmV0d29ya2luZ1Byb3RvY29sOiBcImlwdjRcIixcbiAgZW5hYmxlU2VjcmV0c1BsdWdpbjogdHJ1ZSxcbiAgZW5hYmxlRWNyUGx1Z2luOiB0cnVlLFxuICBlbmFibGVEb2NrZXJMb2dpblBsdWdpbjogdHJ1ZSxcbiAgZW5hYmxlRG9ja2VyVXNlck5hbWVzcGFjZVJlbWFwOiB0cnVlLFxuICBlbmFibGVEb2NrZXJFeHBlcmltZW50YWw6IGZhbHNlLFxuICBlbmFibGVJbnN0YW5jZVN0b3JhZ2U6IGZhbHNlLFxuICBtb3VudFRtcGZzQXRUbXA6IHRydWUsXG4gIGJ1aWxka2l0ZUFnZW50RW5hYmxlR2l0TWlycm9yczogZmFsc2UsXG4gIHBpcGVsaW5lU2lnbmluZ0tNU0tleTogXCJcIixcbiAgcGlwZWxpbmVTaWduaW5nVmVyaWZpY2F0aW9uRmFpbHVyZUJlaGF2aW9yOiBcImJsb2NrXCIsXG4gIC8vIFRhZ3NcbiAgZW52aXJvbm1lbnQ6IFwicGxhdGZvcm1cIixcbiAgb3duZXI6IFwiZW5naW5lZXJcIlxufTtcblxuZXhwb3J0IGNsYXNzIEJ1aWxka2l0ZSBleHRlbmRzIFN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEJ1aWxka2l0ZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICAvLyBUT0RPOiBNYWtlIHRoaXMgaW1tdXRhYmxlIGFuZCBlbmZvcmNlIHRoZSB0YWdzIGJlaW5nIHNldFxuICAgIGNvbnN0IHRhZ3MgPSB7XG4gICAgICAuLi5wcm9wcy50YWdzLFxuICAgICAgXCJmamFsbDpjb3N0QWxsb2NhdGlvbjplbnZpcm9ubWVudFwiOiBwcm9wcy5lbnZpcm9ubWVudCB8fCBcInBsYXRmb3JtXCIsXG4gICAgICBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOnNlcnZpY2VcIjogXCJidWlsZGtpdGVcIixcbiAgICAgIFwiZmphbGw6Y29zdEFsbG9jYXRpb246b3duZXJcIjogcHJvcHMub3duZXIgfHwgXCJlbmdpbmVlclwiIC8vIFRPRE86IHRoaXMgd2lsbCBoYXZlIHRvIGJlIHRoZSBwbGF0Zm9ybSBhY2NvdW50IG5hbWU/XG4gICAgfTtcblxuICAgIC8vIFZQQ1xuICAgIGNvbnN0IHZwYyA9IG5ldyBWcGModGhpcywgYCR7aWR9VnBjYCwge1xuICAgICAgYWNjb3VudElkOiBwcm9wcy5hY2NvdW50SWQsXG4gICAgICBzdWJuZXRDb25maWd1cmF0aW9uOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBgJHtpZH1gLFxuICAgICAgICAgIHN1Ym5ldFR5cGU6IFN1Ym5ldFR5cGUuUFVCTElDXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIC8vIEFydGlmYWN0cyBCdWNrZXRcbiAgICBjb25zdCBhcnRpZmFjdEJ1Y2tldCA9IG5ldyBTM0J1Y2tldCh0aGlzLCBgJHtpZH1BcnRpZmFjdEJ1Y2tldGApO1xuXG4gICAgLy8gTWFuYWdlZCBTZWNyZXRzXG4gICAgY29uc3QgbWFuYWdlZFNlY3JldHNCdWNrZXQgPSBuZXcgUzNCdWNrZXQoXG4gICAgICB0aGlzLFxuICAgICAgYCR7aWR9TWFuYWdlZFNlY3JldHNCdWNrZXRgXG4gICAgKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuQlVJTERLSVRFX1BSSVZBVEVfU1NIX0tFWSkge1xuICAgICAgbmV3IEJ1Y2tldERlcGxveW1lbnQodGhpcywgYCR7aWR9U3NoS2V5RGVwbG95bWVudGAsIHtcbiAgICAgICAgc291cmNlczogW1xuICAgICAgICAgIFNvdXJjZS5kYXRhKFwicHJpdmF0ZV9zc2hfa2V5XCIsIHByb2Nlc3MuZW52LkJVSUxES0lURV9QUklWQVRFX1NTSF9LRVkpXG4gICAgICAgIF0sXG4gICAgICAgIGRlc3RpbmF0aW9uQnVja2V0OiBtYW5hZ2VkU2VjcmV0c0J1Y2tldFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIEZqYWxsTG9nZ2VyLndhcm4oXG4gICAgICAgIFwiJ0JVSUxES0lURV9QUklWQVRFX1NTSF9LRVknIGVudmlyb25tZW50IHZhcmlhYmxlIG5vdCBkZWNsYXJlZC4gU2tpcHBpbmcgdXBsb2FkIG9mIHByaXZhdGUgU1NIIGtleS5cIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBFbmNyeXB0ZWQgQnVpbGRraXRlIEFnZW50IFRva2VuXG4gICAgY29uc3QgYWdlbnRUb2tlbiA9IG5ldyBTZWN1cmVTdHJpbmdQYXJhbWV0ZXIodGhpcywgYCR7aWR9QWdlbnRUb2tlbmAsIHtcbiAgICAgIG5hbWU6IGAvYnVpbGRraXRlL2FnZW50VG9rZW5gLFxuICAgICAgYWxpYXNOYW1lOiBgYnVpbGRraXRlQWdlbnRUb2tlbmAsXG4gICAgICB2YWx1ZTogcHJvY2Vzcy5lbnYuQlVJTERLSVRFX0FHRU5UX1RPS0VOLFxuICAgICAgb3ZlcndyaXRlOiBwcm9jZXNzLmVudi5CVUlMREtJVEVfQUdFTlRfVE9LRU4gPyB0cnVlIDogZmFsc2UsXG4gICAgICB0YWdzOiB0YWdzLFxuICAgICAgYWNjb3VudElkOiB0aGlzLmFjY291bnQsXG4gICAgICByZWdpb246IHRoaXMucmVnaW9uXG4gICAgfSk7XG5cbiAgICAvLyBCdWlsZGtpdGUgQWdlbnQgRXhlY3V0aW9uIFJvbGVcbiAgICBjb25zdCBhZ2VudFJvbGUgPSBuZXcgUm9sZSh0aGlzLCBgJHtpZH1BZ2VudFJvbGVgLCB7XG4gICAgICByb2xlTmFtZTogYCR7aWR9QWdlbnRSb2xlYCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkJ1aWxka2l0ZSBBZ2VudCBJQU0gUm9sZVwiLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgW1wiZGVjcnlwdEJ1aWxka2l0ZUFnZW50VG9rZW5cIl06IG5ldyBQb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcImttczpEZWNyeXB0XCJdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFthZ2VudFRva2VuLmNtay5rZXkua2V5QXJuXVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIH0pLFxuICAgICAgICBbXCJyZWFkQnVpbGRraXRlQWdlbnRUb2tlblwiXTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1wic3NtOkdldFBhcmFtZXRlclwiXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAgICAgYGFybjphd3M6c3NtOiR7cHJvcHMuZW52Py5yZWdpb259OiR7cHJvcHMuZW52Py5hY2NvdW50fTpwYXJhbWV0ZXIke2FnZW50VG9rZW4ubmFtZX1gXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KSxcbiAgICAgICAgW1wicmVhZE1hbmFnZWRTZWNyZXRzQnVja2V0XCJdOiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXCJzMzpHZXQqXCIsIFwiczM6TGlzdCpcIl0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICAgIG1hbmFnZWRTZWNyZXRzQnVja2V0LmJ1Y2tldEFybixcbiAgICAgICAgICAgICAgICBgJHttYW5hZ2VkU2VjcmV0c0J1Y2tldC5idWNrZXRBcm59LypgXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KSxcbiAgICAgICAgW1wid3JpdGVBcnRpZmFjdEJ1Y2tldFwiXTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgIFwiczM6R2V0T2JqZWN0XCIsXG4gICAgICAgICAgICAgICAgXCJzMzpHZXRPYmplY3RBY2xcIixcbiAgICAgICAgICAgICAgICBcInMzOkdldE9iamVjdFZlcnNpb25cIixcbiAgICAgICAgICAgICAgICBcInMzOkdldE9iamVjdFZlcnNpb25BY2xcIixcbiAgICAgICAgICAgICAgICBcInMzOkxpc3RCdWNrZXRcIixcbiAgICAgICAgICAgICAgICBcInMzOlB1dE9iamVjdFwiLFxuICAgICAgICAgICAgICAgIFwiczM6UHV0T2JqZWN0QWNsXCIsXG4gICAgICAgICAgICAgICAgXCJzMzpQdXRPYmplY3RWZXJzaW9uQWNsXCJcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAgICAgYXJ0aWZhY3RCdWNrZXQuYnVja2V0QXJuLFxuICAgICAgICAgICAgICAgIGAke2FydGlmYWN0QnVja2V0LmJ1Y2tldEFybn0vKmBcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIH0pLFxuICAgICAgICBbXCJkZXNjcmliZUluc3RhbmNlXCJdOiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgXCJhdXRvc2NhbGluZzpEZXNjcmliZUF1dG9TY2FsaW5nSW5zdGFuY2VzXCIsXG4gICAgICAgICAgICAgICAgXCJjbG91ZHdhdGNoOlB1dE1ldHJpY0RhdGFcIixcbiAgICAgICAgICAgICAgICBcImNsb3VkZm9ybWF0aW9uOkRlc2NyaWJlU3RhY2tSZXNvdXJjZVwiLFxuICAgICAgICAgICAgICAgIFwiZWMyOkRlc2NyaWJlVGFnc1wiXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIH0pLFxuICAgICAgICBbXCJsb2dnaW5nXCJdOiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgXCJsb2dzOkNyZWF0ZUxvZ0dyb3VwXCIsXG4gICAgICAgICAgICAgICAgXCJsb2dzOkNyZWF0ZUxvZ1N0cmVhbVwiLFxuICAgICAgICAgICAgICAgIFwibG9nczpQdXRMb2dFdmVudHNcIixcbiAgICAgICAgICAgICAgICBcImxvZ3M6RGVzY3JpYmVMb2dHcm91cHNcIixcbiAgICAgICAgICAgICAgICBcImxvZ3M6RGVzY3JpYmVMb2dTdHJlYW1zXCJcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfSksXG4gICAgICAgIFtcInNzbVwiXTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgIFwic3NtOkRlc2NyaWJlSW5zdGFuY2VQcm9wZXJ0aWVzXCIsXG4gICAgICAgICAgICAgICAgXCJzc206TGlzdEFzc29jaWF0aW9uc1wiLFxuICAgICAgICAgICAgICAgIFwic3NtOlB1dEludmVudG9yeVwiLFxuICAgICAgICAgICAgICAgIFwic3NtOlVwZGF0ZUluc3RhbmNlSW5mb3JtYXRpb25cIixcbiAgICAgICAgICAgICAgICBcInNzbW1lc3NhZ2VzOkNyZWF0ZUNvbnRyb2xDaGFubmVsXCIsXG4gICAgICAgICAgICAgICAgXCJzc21tZXNzYWdlczpDcmVhdGVEYXRhQ2hhbm5lbFwiLFxuICAgICAgICAgICAgICAgIFwic3NtbWVzc2FnZXM6T3BlbkNvbnRyb2xDaGFubmVsXCIsXG4gICAgICAgICAgICAgICAgXCJzc21tZXNzYWdlczpPcGVuRGF0YUNoYW5uZWxcIixcbiAgICAgICAgICAgICAgICBcImVjMm1lc3NhZ2VzOkFja25vd2xlZGdlTWVzc2FnZVwiLFxuICAgICAgICAgICAgICAgIFwiZWMybWVzc2FnZXM6RGVsZXRlTWVzc2FnZVwiLFxuICAgICAgICAgICAgICAgIFwiZWMybWVzc2FnZXM6RmFpbE1lc3NhZ2VcIixcbiAgICAgICAgICAgICAgICBcImVjMm1lc3NhZ2VzOkdldEVuZHBvaW50XCIsXG4gICAgICAgICAgICAgICAgXCJlYzJtZXNzYWdlczpHZXRNZXNzYWdlc1wiLFxuICAgICAgICAgICAgICAgIFwiZWMybWVzc2FnZXM6U2VuZFJlcGx5XCJcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgICBhc3N1bWVkQnk6IG5ldyBDb21wb3NpdGVQcmluY2lwYWwoXG4gICAgICAgIG5ldyBTZXJ2aWNlUHJpbmNpcGFsKFwiYXV0b3NjYWxpbmcuYW1hem9uYXdzLmNvbVwiKSxcbiAgICAgICAgbmV3IFNlcnZpY2VQcmluY2lwYWwoXCJlYzIuYW1hem9uYXdzLmNvbVwiKVxuICAgICAgKVxuICAgIH0pO1xuXG4gICAgLy8gQnVpbGRraXRlIEFnZW50IEVDMiBVc2VyIERhdGFcbiAgICBjb25zdCBtdWx0aXBhcnRVc2VyRGF0YSA9IG5ldyBNdWx0aXBhcnRVc2VyRGF0YSgpO1xuXG4gICAgLy8gQ2xvdWQgQ29uZmlnXG4gICAgY29uc3QgY2xvdWRDb25maWdVc2VyRGF0YSA9IFVzZXJEYXRhLmZvckxpbnV4KHtcbiAgICAgIHNoZWJhbmc6IFwiI2Nsb3VkLWNvbmZpZ1wiXG4gICAgfSk7XG4gICAgY2xvdWRDb25maWdVc2VyRGF0YS5hZGRDb21tYW5kcyhcbiAgICAgIFwiY2xvdWRfZmluYWxfbW9kdWxlczpcIixcbiAgICAgIFwiICAtIFtzY3JpcHRzLXVzZXIsIGFsd2F5c11cIlxuICAgICk7XG4gICAgbXVsdGlwYXJ0VXNlckRhdGEuYWRkUGFydChcbiAgICAgIE11bHRpcGFydEJvZHkuZnJvbVVzZXJEYXRhKFxuICAgICAgICBjbG91ZENvbmZpZ1VzZXJEYXRhLFxuICAgICAgICBcInRleHQvY2xvdWQtY29uZmlnOyBjaGFyc2V0PSd1cy1hc2NpaSdcIlxuICAgICAgKVxuICAgICk7XG5cbiAgICAvLyBNb3VudCBTdG9yYWdlXG4gICAgY29uc3QgbW91bnRTdG9yYWdlVXNlckRhdGEgPSBVc2VyRGF0YS5mb3JMaW51eCh7XG4gICAgICBzaGViYW5nOiBcIiMhL2Jpbi9iYXNoIC12XCJcbiAgICB9KTtcbiAgICBtb3VudFN0b3JhZ2VVc2VyRGF0YS5hZGRDb21tYW5kcyhcbiAgICAgIGBCVUlMREtJVEVfRU5BQkxFX0lOU1RBTkNFX1NUT1JBR0U9JyR7cHJvcHMuZW5hYmxlSW5zdGFuY2VTdG9yYWdlfScgXFxcXGAsXG4gICAgICBgQlVJTERLSVRFX01PVU5UX1RNUEZTX0FUX1RNUD0nJHtwcm9wcy5tb3VudFRtcGZzQXRUbXB9JyBcXFxcYCxcbiAgICAgIFwiL3Vzci9sb2NhbC9iaW4vYmstbW91bnQtaW5zdGFuY2Utc3RvcmFnZS5zaFwiXG4gICAgKTtcbiAgICBtdWx0aXBhcnRVc2VyRGF0YS5hZGRQYXJ0KFxuICAgICAgTXVsdGlwYXJ0Qm9keS5mcm9tVXNlckRhdGEoXG4gICAgICAgIG1vdW50U3RvcmFnZVVzZXJEYXRhLFxuICAgICAgICBcInRleHQveC1zaGVsbHNjcmlwdDsgY2hhcnNldD0ndXMtYXNjaWknXCJcbiAgICAgIClcbiAgICApO1xuXG4gICAgLy8gQ29uZmlndXJlIERvY2tlclxuICAgIGNvbnN0IGNvbmZpZ3VyZURvY2tlclVzZXJEYXRhID0gVXNlckRhdGEuZm9yTGludXgoe1xuICAgICAgc2hlYmFuZzogXCIjIS9iaW4vYmFzaCAtdlwiXG4gICAgfSk7XG4gICAgY29uZmlndXJlRG9ja2VyVXNlckRhdGEuYWRkQ29tbWFuZHMoXG4gICAgICBgRE9DS0VSX1VTRVJOU19SRU1BUD0nJHtwcm9wcy5lbmFibGVEb2NrZXJVc2VyTmFtZXNwYWNlUmVtYXB9JyBcXFxcYCxcbiAgICAgIGBET0NLRVJfRVhQRVJJTUVOVEFMPScke3Byb3BzLmVuYWJsZURvY2tlckV4cGVyaW1lbnRhbH0nIFxcXFxgLFxuICAgICAgYERPQ0tFUl9ORVRXT1JLSU5HX1BST1RPQ09MPScke3Byb3BzLmRvY2tlck5ldHdvcmtpbmdQcm90b2NvbH0nIFxcXFxgLFxuICAgICAgYEJVSUxES0lURV9FTkFCTEVfSU5TVEFOQ0VfU1RPUkFHRT0nJHtwcm9wcy5lbmFibGVJbnN0YW5jZVN0b3JhZ2V9JyBcXFxcYCxcbiAgICAgIFwiL3Vzci9sb2NhbC9iaW4vYmstY29uZmlndXJlLWRvY2tlci5zaFwiXG4gICAgKTtcbiAgICBtdWx0aXBhcnRVc2VyRGF0YS5hZGRQYXJ0KFxuICAgICAgTXVsdGlwYXJ0Qm9keS5mcm9tVXNlckRhdGEoXG4gICAgICAgIGNvbmZpZ3VyZURvY2tlclVzZXJEYXRhLFxuICAgICAgICBcInRleHQveC1zaGVsbHNjcmlwdDsgY2hhcnNldD0ndXMtYXNjaWknXCJcbiAgICAgIClcbiAgICApO1xuXG4gICAgY29uc3QgaW5zdGFsbEVsYXN0aWNTdGFja1VzZXJEYXRhID0gVXNlckRhdGEuZm9yTGludXgoe1xuICAgICAgc2hlYmFuZzogXCIjIS9iaW4vYmFzaCAtdlwiXG4gICAgfSk7XG4gICAgaW5zdGFsbEVsYXN0aWNTdGFja1VzZXJEYXRhLmFkZENvbW1hbmRzKFxuICAgICAgYEJVSUxES0lURV9TVEFDS19OQU1FPScke2lkfScgXFxcXGAsXG4gICAgICBgQlVJTERLSVRFX1NUQUNLX1ZFUlNJT049JyR7cHJvcHMuZWxhc3RpY1N0YWNrVmVyc2lvbn0nIFxcXFxgLFxuICAgICAgYEJVSUxES0lURV9TQ0FMRV9JTl9JRExFX1BFUklPRD0nJHtwcm9wcy5zY2FsZUluSWRsZVBlcmlvZH0nIFxcXFxgLFxuICAgICAgYEJVSUxES0lURV9TRUNSRVRTX0JVQ0tFVD0nJHttYW5hZ2VkU2VjcmV0c0J1Y2tldC5idWNrZXROYW1lfScgXFxcXGAsXG4gICAgICBgQlVJTERLSVRFX1NFQ1JFVFNfQlVDS0VUX1JFR0lPTj0nJHtwcm9wcy5lbnY/LnJlZ2lvbn0nIFxcXFxgLFxuICAgICAgYEJVSUxES0lURV9BR0VOVF9UT0tFTl9QQVRIPScke2FnZW50VG9rZW4ubmFtZX0nIFxcXFxgLFxuICAgICAgYEJVSUxES0lURV9BR0VOVFNfUEVSX0lOU1RBTkNFPScke3Byb3BzLmFnZW50c1Blckluc3RhbmNlfScgXFxcXGAsXG4gICAgICBgQlVJTERLSVRFX0FHRU5UX1RBR1M9JyR7cHJvcHMuYnVpbGRraXRlQWdlbnRUYWdzfScgXFxcXGAsXG4gICAgICBgQlVJTERLSVRFX0FHRU5UX1RJTUVTVEFNUF9MSU5FUz0nJHtwcm9wcy5idWlsZGtpdGVBZ2VudFRpbWVzdGFtcExpbmVzfScgXFxcXGAsXG4gICAgICBgQlVJTERLSVRFX0FHRU5UX0VYUEVSSU1FTlRTPScke3Byb3BzLmJ1aWxka2l0ZUFnZW50RXhwZXJpbWVudHN9JyBcXFxcYCxcbiAgICAgIGBCVUlMREtJVEVfQUdFTlRfVFJBQ0lOR19CQUNLRU5EPScke3Byb3BzLmJ1aWxka2l0ZUFnZW50VHJhY2luZ0JhY2tlbmR9JyBcXFxcYCxcbiAgICAgIGBCVUlMREtJVEVfQUdFTlRfUkVMRUFTRT0nJHtwcm9wcy5idWlsZGtpdGVBZ2VudFJlbGVhc2V9JyBcXFxcYCxcbiAgICAgIGBCVUlMREtJVEVfQUdFTlRfQ0FOQ0VMX0dSQUNFX1BFUklPRD0nJHtwcm9wcy5idWlsZGtpdGVBZ2VudENhbmNlbEdyYWNlUGVyaW9kfScgXFxcXGAsXG4gICAgICBgQlVJTERLSVRFX0FHRU5UX1NJR05JTkdfS01TX0tFWT0nJHtwcm9wcy5waXBlbGluZVNpZ25pbmdLTVNLZXl9JyBcXFxcYCxcbiAgICAgIGBCVUlMREtJVEVfQUdFTlRfU0lHTklOR19GQUlMVVJFX0JFSEFWSU9SPScke3Byb3BzLnBpcGVsaW5lU2lnbmluZ1ZlcmlmaWNhdGlvbkZhaWx1cmVCZWhhdmlvcn0nIFxcXFxgLFxuICAgICAgYEJVSUxES0lURV9RVUVVRT0nJHtwcm9wcy5idWlsZGtpdGVRdWV1ZX0nIFxcXFxgLFxuICAgICAgYEJVSUxES0lURV9BR0VOVF9FTkFCTEVfR0lUX01JUlJPUlM9JyR7cHJvcHMuYnVpbGRraXRlQWdlbnRFbmFibGVHaXRNaXJyb3JzfScgXFxcXGAsXG4gICAgICBgQlVJTERLSVRFX0VMQVNUSUNfQk9PVFNUUkFQX1NDUklQVD0nJHtwcm9wcy5ib290c3RyYXBTY3JpcHRVcmx9JyBcXFxcYCxcbiAgICAgIGBCVUlMREtJVEVfRU5WX0ZJTEVfVVJMPScke3Byb3BzLmFnZW50RW52RmlsZVVybH0nIFxcXFxgLFxuICAgICAgYEJVSUxES0lURV9FTkFCTEVfSU5TVEFOQ0VfU1RPUkFHRT0nJHtwcm9wcy5lbmFibGVJbnN0YW5jZVN0b3JhZ2V9JyBcXFxcYCxcbiAgICAgIGBCVUlMREtJVEVfQVVUSE9SSVpFRF9VU0VSU19VUkw9JyR7cHJvcHMuYXV0aG9yaXplZFVzZXJzVXJsfScgXFxcXGAsXG4gICAgICBgQlVJTERLSVRFX0VDUl9QT0xJQ1k9JyR7cHJvcHMuZWNyQWNjZXNzUG9saWN5fScgXFxcXGAsXG4gICAgICBgQlVJTERLSVRFX1RFUk1JTkFURV9JTlNUQU5DRV9BRlRFUl9KT0I9JyR7cHJvcHMuYnVpbGRraXRlVGVybWluYXRlSW5zdGFuY2VBZnRlckpvYn0nIFxcXFxgLFxuICAgICAgYEJVSUxES0lURV9BRERJVElPTkFMX1NVRE9fUEVSTUlTU0lPTlM9JyR7cHJvcHMuYnVpbGRraXRlQWRkaXRpb25hbFN1ZG9QZXJtaXNzaW9uc30nIFxcXFxgLFxuICAgICAgYEFXU19ERUZBVUxUX1JFR0lPTj0nJHtwcm9wcy5lbnY/LnJlZ2lvbn0nIFxcXFxgLFxuICAgICAgYFNFQ1JFVFNfUExVR0lOX0VOQUJMRUQ9JyR7cHJvcHMuZW5hYmxlU2VjcmV0c1BsdWdpbn0nIFxcXFxgLFxuICAgICAgYEVDUl9QTFVHSU5fRU5BQkxFRD0nJHtwcm9wcy5lbmFibGVFY3JQbHVnaW59JyBcXFxcYCxcbiAgICAgIGBET0NLRVJfTE9HSU5fUExVR0lOX0VOQUJMRUQ9JyR7cHJvcHMuZW5hYmxlRG9ja2VyTG9naW5QbHVnaW59JyBcXFxcYCxcbiAgICAgIGBET0NLRVJfRVhQRVJJTUVOVEFMPScke3Byb3BzLmVuYWJsZURvY2tlckV4cGVyaW1lbnRhbH0nIFxcXFxgLFxuICAgICAgYERPQ0tFUl9VU0VSTlNfUkVNQVA9JyR7cHJvcHMuZW5hYmxlRG9ja2VyVXNlck5hbWVzcGFjZVJlbWFwfScgXFxcXGAsXG4gICAgICBgQVdTX1JFR0lPTj0nJHtwcm9wcy5lbnY/LnJlZ2lvbn0nIFxcXFxgLFxuICAgICAgXCIvdXNyL2xvY2FsL2Jpbi9iay1pbnN0YWxsLWVsYXN0aWMtc3RhY2suc2hcIlxuICAgICk7XG5cbiAgICAvLyBNZXJnZSBVc2VyIERhdGFcbiAgICBtdWx0aXBhcnRVc2VyRGF0YS5hZGRQYXJ0KFxuICAgICAgTXVsdGlwYXJ0Qm9keS5mcm9tVXNlckRhdGEoXG4gICAgICAgIGluc3RhbGxFbGFzdGljU3RhY2tVc2VyRGF0YSxcbiAgICAgICAgXCJ0ZXh0L3gtc2hlbGxzY3JpcHQ7IGNoYXJzZXQ9J3VzLWFzY2lpJ1wiXG4gICAgICApXG4gICAgKTtcblxuICAgIC8vIExhdW5jaCBUZW1wbGF0ZVxuICAgIGNvbnN0IGxhdW5jaFRlbXBsYXRlID0gbmV3IExhdW5jaFRlbXBsYXRlKFxuICAgICAgdGhpcyxcbiAgICAgIGAke2lkfUFnZW50TGF1bmNoVGVtcGxhdGVgLFxuICAgICAge1xuICAgICAgICBsYXVuY2hUZW1wbGF0ZU5hbWU6IGBidWlsZGtpdGVMYXVuY2hUZW1wbGF0ZWAsXG4gICAgICAgIGluc3RhbmNlVHlwZTogcHJvcHMuYWdlbnRJbnN0YW5jZVR5cGUsXG4gICAgICAgIG1hY2hpbmVJbWFnZTogTWFjaGluZUltYWdlLmxvb2t1cCh7XG4gICAgICAgICAgbmFtZTogXCJidWlsZGtpdGUtc3RhY2stbGludXgteDg2XzY0LSpcIixcbiAgICAgICAgICBvd25lcnM6IFtcIjE3Mjg0MDA2NDgzMlwiXSxcbiAgICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgICBbXCJibG9jay1kZXZpY2UtbWFwcGluZy52b2x1bWUtdHlwZVwiXTogW1wiZ3AzXCJdXG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgdXNlckRhdGE6IG11bHRpcGFydFVzZXJEYXRhLFxuICAgICAgICByb2xlOiBhZ2VudFJvbGUsXG4gICAgICAgIGJsb2NrRGV2aWNlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRldmljZU5hbWU6IFwiL2Rldi94dmRhXCIsXG4gICAgICAgICAgICB2b2x1bWU6IEJsb2NrRGV2aWNlVm9sdW1lLmVicyhwcm9wcy5hZ2VudFZvbHVtZVNpemUpXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBkZXRhaWxlZE1vbml0b3Jpbmc6IHRydWUsXG4gICAgICAgIHJlcXVpcmVJbWRzdjI6IGZhbHNlLFxuICAgICAgICBodHRwUHV0UmVzcG9uc2VIb3BMaW1pdDogMixcbiAgICAgICAgaHR0cFRva2VuczogTGF1bmNoVGVtcGxhdGVIdHRwVG9rZW5zLlJFUVVJUkVELFxuICAgICAgICBpbnN0YW5jZU1ldGFkYXRhVGFnczogdHJ1ZVxuICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBGdW5jdGlvbmFsIHRhZ3MgZm9yIGJ1aWxka2l0ZSBhZ2VudCBpZGVudGlmaWNhdGlvblxuICAgIFRhZ3Mub2YobGF1bmNoVGVtcGxhdGUpLmFkZChcIlJvbGVcIiwgXCJidWlsZGtpdGVBZ2VudFwiKTtcbiAgICBUYWdzLm9mKGxhdW5jaFRlbXBsYXRlKS5hZGQoXCJCdWlsZGtpdGVBZ2VudFJlbGVhc2VcIiwgYWdlbnRSZWxlYXNlLlNUQUJMRSk7XG4gICAgVGFncy5vZihsYXVuY2hUZW1wbGF0ZSkuYWRkKFwiQnVpbGRraXRlUXVldWVcIiwgcHJvcHMuYnVpbGRraXRlUXVldWUpO1xuXG4gICAgLy8gQXV0b3NjYWxpbmcgR3JvdXBcbiAgICBjb25zdCBhdXRvU2NhbGluZ0dyb3VwID0gbmV3IEF1dG9TY2FsaW5nR3JvdXAoXG4gICAgICB0aGlzLFxuICAgICAgYCR7aWR9QWdlbnRBdXRvU2NhbGluZ0dyb3VwYCxcbiAgICAgIHtcbiAgICAgICAgdnBjOiB2cGMsXG4gICAgICAgIG1peGVkSW5zdGFuY2VzUG9saWN5OiB7XG4gICAgICAgICAgbGF1bmNoVGVtcGxhdGU6IGxhdW5jaFRlbXBsYXRlLFxuICAgICAgICAgIGluc3RhbmNlc0Rpc3RyaWJ1dGlvbjoge1xuICAgICAgICAgICAgb25EZW1hbmRQZXJjZW50YWdlQWJvdmVCYXNlQ2FwYWNpdHk6IHByb3BzLnNwb3RDYXBhY2l0eVBlcmNlbnRhZ2UsXG4gICAgICAgICAgICBzcG90QWxsb2NhdGlvblN0cmF0ZWd5OiBTcG90QWxsb2NhdGlvblN0cmF0ZWd5LkNBUEFDSVRZX09QVElNSVpFRFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbGF1bmNoVGVtcGxhdGVPdmVycmlkZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaW5zdGFuY2VUeXBlOiBwcm9wcy5hZ2VudEluc3RhbmNlVHlwZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgbWluQ2FwYWNpdHk6IHByb3BzLmFnZW50TWluSW5zdGFuY2VzLFxuICAgICAgICBtYXhDYXBhY2l0eTogcHJvcHMuYWdlbnRNYXhJbnN0YW5jZXMsXG4gICAgICAgIGNvb2xkb3duOiBEdXJhdGlvbi5zZWNvbmRzKDYwKSxcbiAgICAgICAgZ3JvdXBNZXRyaWNzOiBbR3JvdXBNZXRyaWNzLmFsbCgpXSxcbiAgICAgICAgdXBkYXRlUG9saWN5OiBVcGRhdGVQb2xpY3kucmVwbGFjaW5nVXBkYXRlKCksXG4gICAgICAgIG5ld0luc3RhbmNlc1Byb3RlY3RlZEZyb21TY2FsZUluOiB0cnVlLFxuICAgICAgICB0ZXJtaW5hdGlvblBvbGljaWVzOiBbXG4gICAgICAgICAgVGVybWluYXRpb25Qb2xpY3kuT0xERVNUX0xBVU5DSF9DT05GSUdVUkFUSU9OLFxuICAgICAgICAgIFRlcm1pbmF0aW9uUG9saWN5LkNMT1NFU1RfVE9fTkVYVF9JTlNUQU5DRV9IT1VSXG4gICAgICAgIF0sXG4gICAgICAgIHNzbVNlc3Npb25QZXJtaXNzaW9uczogdHJ1ZVxuICAgICAgfVxuICAgICk7XG5cbiAgICBhZ2VudFJvbGUuYXR0YWNoSW5saW5lUG9saWN5KFxuICAgICAgbmV3IFBvbGljeSh0aGlzLCBgJHtpZH1VcGRhdGVBdXRvU2NhbGluZ0dyb3VwUG9saWN5YCwge1xuICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgIFwiYXV0b3NjYWxpbmc6U2V0SW5zdGFuY2VIZWFsdGhcIixcbiAgICAgICAgICAgICAgXCJhdXRvc2NhbGluZzpUZXJtaW5hdGVJbnN0YW5jZUluQXV0b1NjYWxpbmdHcm91cFwiXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmVzb3VyY2VzOiBbYCR7YXV0b1NjYWxpbmdHcm91cC5hdXRvU2NhbGluZ0dyb3VwQXJufWBdXG4gICAgICAgICAgfSlcbiAgICAgICAgXVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgLy8gQnVpbGRraXRlIFN1c3BlbmQgQXVzdG9zY2FsaW5nIEdyb3VwIEN1c3RvbSBSZXNvdXJjZVxuICAgIG5ldyBBd3NDdXN0b21SZXNvdXJjZSh0aGlzLCBgJHtpZH1TdXNwZW5kQXV0b3NjYWxpbmdQcm9jZXNzYCwge1xuICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJBdXRvU2NhbGluZ1wiLFxuICAgICAgICBhY3Rpb246IFwic3VzcGVuZFByb2Nlc3Nlc1wiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgQXV0b1NjYWxpbmdHcm91cE5hbWU6IGF1dG9TY2FsaW5nR3JvdXAuYXV0b1NjYWxpbmdHcm91cE5hbWUsXG4gICAgICAgICAgU2NhbGluZ1Byb2Nlc3NlczogW1wiQVpSZWJhbGFuY2VcIl1cbiAgICAgICAgfSxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBQaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgXCJzdXNwZW5kQXV0b1NjYWxpbmdQcm9jZXNzZXNzXCJcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwiQXV0b1NjYWxpbmdcIixcbiAgICAgICAgYWN0aW9uOiBcInN1c3BlbmRQcm9jZXNzZXNcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIEF1dG9TY2FsaW5nR3JvdXBOYW1lOiBhdXRvU2NhbGluZ0dyb3VwLmF1dG9TY2FsaW5nR3JvdXBOYW1lLFxuICAgICAgICAgIFNjYWxpbmdQcm9jZXNzZXM6IFtcIkFaUmViYWxhbmNlXCJdXG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFxuICAgICAgICAgIFwic3VzcGVuZEF1dG9TY2FsaW5nUHJvY2Vzc2Vzc1wiXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpidWlsZGtpdGVTdXNwZW5kQXV0b3NjYWxpbmdcIlxuICAgIH0pO1xuXG4gICAgbmV3IENmbkFwcGxpY2F0aW9uKHRoaXMsIGAke2lkfUFnZW50U2NhbGVyYCwge1xuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgYXBwbGljYXRpb25JZDpcbiAgICAgICAgICBcImFybjphd3M6c2VydmVybGVzc3JlcG86dXMtZWFzdC0xOjE3Mjg0MDA2NDgzMjphcHBsaWNhdGlvbnMvYnVpbGRraXRlLWFnZW50LXNjYWxlclwiLFxuICAgICAgICBzZW1hbnRpY1ZlcnNpb246IHByb3BzLmJ1aWxka2l0ZUFnZW50U2NhbGVyVmVyc2lvblxuICAgICAgfSxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgQnVpbGRraXRlQWdlbnRUb2tlblBhcmFtZXRlcjogYCR7YWdlbnRUb2tlbi5uYW1lfWAsXG4gICAgICAgIEJ1aWxka2l0ZUFnZW50VG9rZW5QYXJhbWV0ZXJTdG9yZUtNU0tleTogYWdlbnRUb2tlbi5jbWsua2V5LmtleUlkLFxuICAgICAgICBSb2xlUGVybWlzc2lvbnNCb3VuZGFyeUFSTjogXCJcIixcbiAgICAgICAgQnVpbGRraXRlUXVldWU6IHByb3BzLmJ1aWxka2l0ZVF1ZXVlLFxuICAgICAgICBBZ2VudHNQZXJJbnN0YW5jZTogYCR7cHJvcHMuYWdlbnRzUGVySW5zdGFuY2V9YCxcbiAgICAgICAgTWluU2l6ZTogYCR7cHJvcHMuYWdlbnRNaW5JbnN0YW5jZXN9YCxcbiAgICAgICAgTWF4U2l6ZTogYCR7cHJvcHMuYWdlbnRNYXhJbnN0YW5jZXN9YCxcbiAgICAgICAgQWdlbnRBdXRvU2NhbGVHcm91cDogYXV0b1NjYWxpbmdHcm91cC5hdXRvU2NhbGluZ0dyb3VwTmFtZSxcbiAgICAgICAgU2NhbGVPdXRGYWN0b3I6IHByb3BzLnNjYWxlT3V0RmFjdG9yLFxuICAgICAgICBTY2FsZU91dEZvcldhaXRpbmdKb2JzOiBgJHtwcm9wcy5zY2FsZU91dFdhaXRpbmdGb3JKb2JzfWAsXG4gICAgICAgIEV2ZW50U2NoZWR1bGVQZXJpb2Q6IHByb3BzLnNjYWxlckV2ZW50U2NoZWR1bGVQZXJpb2QsXG4gICAgICAgIE1pblBvbGxJbnRlcnZhbDogcHJvcHMuc2NhbGVyTWluUG9sbEludGVydmFsLFxuICAgICAgICBMb2dSZXRlbnRpb25EYXlzOiBgJHtwcm9wcy5sb2dSZXRlbnRpb25EYXlzfWBcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBCdWlsZGtpdGU7XG4iXX0=
|
|
@@ -5,18 +5,14 @@ import { type ICertificate } from "aws-cdk-lib/aws-certificatemanager";
|
|
|
5
5
|
import { type ICachePolicy } from "aws-cdk-lib/aws-cloudfront";
|
|
6
6
|
import type App from "../../app";
|
|
7
7
|
import { CloudFrontDistribution, type CachePolicyPreset } from "../../resources/aws/cdn";
|
|
8
|
-
import {
|
|
8
|
+
import { type Storage } from "./storage";
|
|
9
9
|
import { type AnyCompute } from "./compute";
|
|
10
|
-
/**
|
|
11
|
-
* Union type for Fjall S3 storage classes.
|
|
12
|
-
*/
|
|
13
|
-
type StorageResource = PrivateStorage | WebsiteStorage | PublicStorage;
|
|
14
10
|
/**
|
|
15
11
|
* S3 origin CDN props - use with S3 bucket
|
|
16
12
|
*/
|
|
17
13
|
export interface S3CdnProps {
|
|
18
14
|
originType: "s3";
|
|
19
|
-
bucket: IBucket |
|
|
15
|
+
bucket: IBucket | Storage;
|
|
20
16
|
originPath?: string;
|
|
21
17
|
cachePolicy?: CachePolicyPreset | ICachePolicy;
|
|
22
18
|
defaultAllowedMethods?: "GET_HEAD" | "GET_HEAD_OPTIONS" | "ALL";
|
|
@@ -71,7 +67,7 @@ export interface HttpCdnProps {
|
|
|
71
67
|
*/
|
|
72
68
|
export interface SmartCdnProps {
|
|
73
69
|
originType: "auto";
|
|
74
|
-
origin:
|
|
70
|
+
origin: Storage | AnyCompute | string;
|
|
75
71
|
cachePolicy?: CachePolicyPreset | ICachePolicy;
|
|
76
72
|
defaultAllowedMethods?: "GET_HEAD" | "GET_HEAD_OPTIONS" | "ALL";
|
|
77
73
|
behaviours?: SmartCdnBehaviour[];
|
|
@@ -90,7 +86,7 @@ export type ICdnProps = S3CdnProps | AlbCdnProps | HttpCdnProps | SmartCdnProps;
|
|
|
90
86
|
*/
|
|
91
87
|
export interface SmartCdnBehaviour {
|
|
92
88
|
pathPattern: string;
|
|
93
|
-
origin:
|
|
89
|
+
origin: Storage | AnyCompute | string;
|
|
94
90
|
cachePolicy?: CachePolicyPreset | ICachePolicy;
|
|
95
91
|
allowedMethods?: "GET_HEAD" | "GET_HEAD_OPTIONS" | "ALL";
|
|
96
92
|
}
|
|
@@ -121,7 +117,7 @@ export declare class Cdn extends CloudFrontDistribution {
|
|
|
121
117
|
*
|
|
122
118
|
* @example
|
|
123
119
|
* // S3 origin
|
|
124
|
-
* const assets = app.addStorage(StorageFactory.build("Assets", {
|
|
120
|
+
* const assets = app.addStorage(StorageFactory.build("Assets", {}));
|
|
125
121
|
* app.addCdn(CdnFactory.build("AssetsCdn", {
|
|
126
122
|
* originType: "s3",
|
|
127
123
|
* bucket: assets
|
|
@@ -161,4 +157,3 @@ export declare class CdnFactory {
|
|
|
161
157
|
*/
|
|
162
158
|
static build(id: string, props: ICdnProps): (_app: App, scope: Construct) => Cdn;
|
|
163
159
|
}
|
|
164
|
-
export {};
|
|
@@ -6,14 +6,6 @@ const cdn_1 = require("../../resources/aws/cdn");
|
|
|
6
6
|
const storage_1 = require("./storage");
|
|
7
7
|
const compute_1 = require("./compute");
|
|
8
8
|
const validationLogger_js_1 = require("../../utils/validationLogger.js");
|
|
9
|
-
/**
|
|
10
|
-
* Type guard to check if a value is a Fjall storage resource.
|
|
11
|
-
*/
|
|
12
|
-
function isStorageResource(value) {
|
|
13
|
-
return (value instanceof storage_1.PrivateStorage ||
|
|
14
|
-
value instanceof storage_1.WebsiteStorage ||
|
|
15
|
-
value instanceof storage_1.PublicStorage);
|
|
16
|
-
}
|
|
17
9
|
/**
|
|
18
10
|
* Validates CDN props and logs warnings for misconfigured options.
|
|
19
11
|
*/
|
|
@@ -112,7 +104,7 @@ class Cdn extends cdn_1.CloudFrontDistribution {
|
|
|
112
104
|
static resolveDefaultOrigin(props) {
|
|
113
105
|
switch (props.originType) {
|
|
114
106
|
case "s3": {
|
|
115
|
-
const bucket =
|
|
107
|
+
const bucket = (0, storage_1.isStorage)(props.bucket)
|
|
116
108
|
? props.bucket.getBucket()
|
|
117
109
|
: props.bucket;
|
|
118
110
|
return {
|
|
@@ -172,8 +164,8 @@ class Cdn extends cdn_1.CloudFrontDistribution {
|
|
|
172
164
|
domainName: resource
|
|
173
165
|
};
|
|
174
166
|
}
|
|
175
|
-
//
|
|
176
|
-
if (
|
|
167
|
+
// Storage → S3 origin
|
|
168
|
+
if ((0, storage_1.isStorage)(resource)) {
|
|
177
169
|
return {
|
|
178
170
|
type: "s3",
|
|
179
171
|
bucket: resource.getBucket()
|
|
@@ -215,7 +207,7 @@ exports.Cdn = Cdn;
|
|
|
215
207
|
*
|
|
216
208
|
* @example
|
|
217
209
|
* // S3 origin
|
|
218
|
-
* const assets = app.addStorage(StorageFactory.build("Assets", {
|
|
210
|
+
* const assets = app.addStorage(StorageFactory.build("Assets", {}));
|
|
219
211
|
* app.addCdn(CdnFactory.build("AssetsCdn", {
|
|
220
212
|
* originType: "s3",
|
|
221
213
|
* bucket: assets
|
|
@@ -261,4 +253,4 @@ class CdnFactory {
|
|
|
261
253
|
}
|
|
262
254
|
}
|
|
263
255
|
exports.CdnFactory = CdnFactory;
|
|
264
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL3BhdHRlcm5zL2F3cy9jZG4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkNBQWlDO0FBT2pDLGlEQU1pQztBQUNqQyx1Q0FBMEU7QUFDMUUsdUNBS21CO0FBQ25CLHlFQUE4RDtBQU85RDs7R0FFRztBQUNILFNBQVMsaUJBQWlCLENBQ3hCLEtBQWM7SUFFZCxPQUFPLENBQ0wsS0FBSyxZQUFZLHdCQUFjO1FBQy9CLEtBQUssWUFBWSx3QkFBYztRQUMvQixLQUFLLFlBQVksdUJBQWEsQ0FDL0IsQ0FBQztBQUNKLENBQUM7QUEyRkQ7O0dBRUc7QUFDSCxTQUFTLGdCQUFnQixDQUFDLEtBQWdCO0lBQ3hDLHNDQUFzQztJQUN0QyxJQUFJLEtBQUssQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMzRSxpQ0FBVyxDQUFDLElBQUksQ0FDZCx1REFBdUQ7WUFDckQsbURBQW1ELENBQ3RELENBQUM7SUFDSixDQUFDO0lBRUQsNENBQTRDO0lBQzVDLElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDNUUsaUNBQVcsQ0FBQyxJQUFJLENBQ2QseURBQXlEO1lBQ3ZELDhEQUE4RCxDQUNqRSxDQUFDO0lBQ0osQ0FBQztJQUVELHNCQUFzQjtJQUN0QixJQUFJLEtBQUssQ0FBQyxVQUFVLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDL0IsTUFBTSxRQUFRLEdBQUcsS0FBb0IsQ0FBQztRQUN0QyxJQUNFLElBQUEsbUJBQVMsRUFBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBQ2hDLElBQUEsc0JBQVksRUFBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVB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QUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBZEQsZ0NBY0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBGbiB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgdHlwZSBJQnVja2V0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuaW1wb3J0IHsgdHlwZSBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjJcIjtcbmltcG9ydCB7IHR5cGUgSUNlcnRpZmljYXRlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jZXJ0aWZpY2F0ZW1hbmFnZXJcIjtcbmltcG9ydCB7IHR5cGUgSUNhY2hlUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZGZyb250XCI7XG5cbmltcG9ydCB0eXBlIEFwcCBmcm9tIFwiLi4vLi4vYXBwXCI7XG5pbXBvcnQge1xuICBDbG91ZEZyb250RGlzdHJpYnV0aW9uLFxuICB0eXBlIENsb3VkRnJvbnREaXN0cmlidXRpb25Qcm9wcyxcbiAgdHlwZSBDZG5PcmlnaW5Db25maWcsXG4gIHR5cGUgQ2RuQmVoYXZpb3VyLFxuICB0eXBlIENhY2hlUG9saWN5UHJlc2V0XG59IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2NkblwiO1xuaW1wb3J0IHsgUHJpdmF0ZVN0b3JhZ2UsIFdlYnNpdGVTdG9yYWdlLCBQdWJsaWNTdG9yYWdlIH0gZnJvbSBcIi4vc3RvcmFnZVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBBbnlDb21wdXRlLFxuICBpc0NvbXB1dGUsXG4gIGlzRWNzQ29tcHV0ZSxcbiAgaXNMYW1iZGFDb21wdXRlXG59IGZyb20gXCIuL2NvbXB1dGVcIjtcbmltcG9ydCB7IEZqYWxsTG9nZ2VyIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3ZhbGlkYXRpb25Mb2dnZXIuanNcIjtcblxuLyoqXG4gKiBVbmlvbiB0eXBlIGZvciBGamFsbCBTMyBzdG9yYWdlIGNsYXNzZXMuXG4gKi9cbnR5cGUgU3RvcmFnZVJlc291cmNlID0gUHJpdmF0ZVN0b3JhZ2UgfCBXZWJzaXRlU3RvcmFnZSB8IFB1YmxpY1N0b3JhZ2U7XG5cbi8qKlxuICogVHlwZSBndWFyZCB0byBjaGVjayBpZiBhIHZhbHVlIGlzIGEgRmphbGwgc3RvcmFnZSByZXNvdXJjZS5cbiAqL1xuZnVuY3Rpb24gaXNTdG9yYWdlUmVzb3VyY2UoXG4gIHZhbHVlOiB1bmtub3duXG4pOiB2YWx1ZSBpcyBQcml2YXRlU3RvcmFnZSB8IFdlYnNpdGVTdG9yYWdlIHwgUHVibGljU3RvcmFnZSB7XG4gIHJldHVybiAoXG4gICAgdmFsdWUgaW5zdGFuY2VvZiBQcml2YXRlU3RvcmFnZSB8fFxuICAgIHZhbHVlIGluc3RhbmNlb2YgV2Vic2l0ZVN0b3JhZ2UgfHxcbiAgICB2YWx1ZSBpbnN0YW5jZW9mIFB1YmxpY1N0b3JhZ2VcbiAgKTtcbn1cblxuLyoqXG4gKiBTMyBvcmlnaW4gQ0ROIHByb3BzIC0gdXNlIHdpdGggUzMgYnVja2V0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUzNDZG5Qcm9wcyB7XG4gIG9yaWdpblR5cGU6IFwiczNcIjtcbiAgYnVja2V0OiBJQnVja2V0IHwgU3RvcmFnZVJlc291cmNlO1xuICBvcmlnaW5QYXRoPzogc3RyaW5nO1xuICBjYWNoZVBvbGljeT86IENhY2hlUG9saWN5UHJlc2V0IHwgSUNhY2hlUG9saWN5O1xuICBkZWZhdWx0QWxsb3dlZE1ldGhvZHM/OiBcIkdFVF9IRUFEXCIgfCBcIkdFVF9IRUFEX09QVElPTlNcIiB8IFwiQUxMXCI7XG4gIGJlaGF2aW91cnM/OiBTbWFydENkbkJlaGF2aW91cltdO1xuICBkb21haW5OYW1lcz86IHN0cmluZ1tdO1xuICBjZXJ0aWZpY2F0ZT86IElDZXJ0aWZpY2F0ZTtcbiAgY29tbWVudD86IHN0cmluZztcbiAgZW5hYmxlTG9nZ2luZz86IGJvb2xlYW47XG4gIGxvZ0J1Y2tldD86IElCdWNrZXQ7XG4gIHByaWNlQ2xhc3M/OiBcIlByaWNlQ2xhc3NfMTAwXCIgfCBcIlByaWNlQ2xhc3NfMjAwXCIgfCBcIlByaWNlQ2xhc3NfQWxsXCI7XG4gIGZvcndhcmRIb3N0SGVhZGVyPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBTEIgb3JpZ2luIENETiBwcm9wcyAtIHVzZSB3aXRoIEFwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGJDZG5Qcm9wcyB7XG4gIG9yaWdpblR5cGU6IFwiYWxiXCI7XG4gIGxvYWRCYWxhbmNlcjogSUFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyIHwgQW55Q29tcHV0ZTtcbiAgcHJvdG9jb2xQb2xpY3k/OiBcIkhUVFBfT05MWVwiIHwgXCJIVFRQU19PTkxZXCIgfCBcIk1BVENIX1ZJRVdFUlwiO1xuICBjYWNoZVBvbGljeT86IENhY2hlUG9saWN5UHJlc2V0IHwgSUNhY2hlUG9saWN5O1xuICBkZWZhdWx0QWxsb3dlZE1ldGhvZHM/OiBcIkdFVF9IRUFEXCIgfCBcIkdFVF9IRUFEX09QVElPTlNcIiB8IFwiQUxMXCI7XG4gIGJlaGF2aW91cnM/OiBTbWFydENkbkJlaGF2aW91cltdO1xuICBkb21haW5OYW1lcz86IHN0cmluZ1tdO1xuICBjZXJ0aWZpY2F0ZT86IElDZXJ0aWZpY2F0ZTtcbiAgY29tbWVudD86IHN0cmluZztcbiAgZW5hYmxlTG9nZ2luZz86IGJvb2xlYW47XG4gIGxvZ0J1Y2tldD86IElCdWNrZXQ7XG4gIHByaWNlQ2xhc3M/OiBcIlByaWNlQ2xhc3NfMTAwXCIgfCBcIlByaWNlQ2xhc3NfMjAwXCIgfCBcIlByaWNlQ2xhc3NfQWxsXCI7XG4gIGZvcndhcmRIb3N0SGVhZGVyPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBIVFRQIG9yaWdpbiBDRE4gcHJvcHMgLSB1c2Ugd2l0aCBjdXN0b20gSFRUUCBlbmRwb2ludFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBDZG5Qcm9wcyB7XG4gIG9yaWdpblR5cGU6IFwiaHR0cFwiO1xuICBkb21haW5OYW1lOiBzdHJpbmc7XG4gIG9yaWdpblBhdGg/OiBzdHJpbmc7XG4gIHByb3RvY29sUG9saWN5PzogXCJIVFRQX09OTFlcIiB8IFwiSFRUUFNfT05MWVwiIHwgXCJNQVRDSF9WSUVXRVJcIjtcbiAgY2FjaGVQb2xpY3k/OiBDYWNoZVBvbGljeVByZXNldCB8IElDYWNoZVBvbGljeTtcbiAgZGVmYXVsdEFsbG93ZWRNZXRob2RzPzogXCJHRVRfSEVBRFwiIHwgXCJHRVRfSEVBRF9PUFRJT05TXCIgfCBcIkFMTFwiO1xuICBiZWhhdmlvdXJzPzogU21hcnRDZG5CZWhhdmlvdXJbXTtcbiAgZG9tYWluTmFtZXM/OiBzdHJpbmdbXTtcbiAgY2VydGlmaWNhdGU/OiBJQ2VydGlmaWNhdGU7XG4gIGNvbW1lbnQ/OiBzdHJpbmc7XG4gIGVuYWJsZUxvZ2dpbmc/OiBib29sZWFuO1xuICBsb2dCdWNrZXQ/OiBJQnVja2V0O1xuICBwcmljZUNsYXNzPzogXCJQcmljZUNsYXNzXzEwMFwiIHwgXCJQcmljZUNsYXNzXzIwMFwiIHwgXCJQcmljZUNsYXNzX0FsbFwiO1xuICBmb3J3YXJkSG9zdEhlYWRlcj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogU21hcnQgb3JpZ2luIENETiBwcm9wcyAtIGF1dG8tZGV0ZWN0IG9yaWdpbiB0eXBlIGZyb20gRmphbGwgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTbWFydENkblByb3BzIHtcbiAgb3JpZ2luVHlwZTogXCJhdXRvXCI7XG4gIG9yaWdpbjogU3RvcmFnZVJlc291cmNlIHwgQW55Q29tcHV0ZSB8IHN0cmluZztcbiAgY2FjaGVQb2xpY3k/OiBDYWNoZVBvbGljeVByZXNldCB8IElDYWNoZVBvbGljeTtcbiAgZGVmYXVsdEFsbG93ZWRNZXRob2RzPzogXCJHRVRfSEVBRFwiIHwgXCJHRVRfSEVBRF9PUFRJT05TXCIgfCBcIkFMTFwiO1xuICBiZWhhdmlvdXJzPzogU21hcnRDZG5CZWhhdmlvdXJbXTtcbiAgZG9tYWluTmFtZXM/OiBzdHJpbmdbXTtcbiAgY2VydGlmaWNhdGU/OiBJQ2VydGlmaWNhdGU7XG4gIGNvbW1lbnQ/OiBzdHJpbmc7XG4gIGVuYWJsZUxvZ2dpbmc/OiBib29sZWFuO1xuICBsb2dCdWNrZXQ/OiBJQnVja2V0O1xuICBwcmljZUNsYXNzPzogXCJQcmljZUNsYXNzXzEwMFwiIHwgXCJQcmljZUNsYXNzXzIwMFwiIHwgXCJQcmljZUNsYXNzX0FsbFwiO1xuICBmb3J3YXJkSG9zdEhlYWRlcj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIElDZG5Qcm9wcyA9IFMzQ2RuUHJvcHMgfCBBbGJDZG5Qcm9wcyB8IEh0dHBDZG5Qcm9wcyB8IFNtYXJ0Q2RuUHJvcHM7XG5cbi8qKlxuICogU21hcnQgYmVoYXZpb3VyIHR5cGUgdGhhdCBhY2NlcHRzIEZqYWxsIHJlc291cmNlcyBhcyBvcmlnaW5zLlxuICogVGhlIGZhY3Rvcnkgd2lsbCB0cmFuc2Zvcm0gdGhlc2UgdG8gcHJvcGVyIENkbkJlaGF2aW91ciBvYmplY3RzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0Q2RuQmVoYXZpb3VyIHtcbiAgcGF0aFBhdHRlcm46IHN0cmluZztcbiAgb3JpZ2luOiBTdG9yYWdlUmVzb3VyY2UgfCBBbnlDb21wdXRlIHwgc3RyaW5nO1xuICBjYWNoZVBvbGljeT86IENhY2hlUG9saWN5UHJlc2V0IHwgSUNhY2hlUG9saWN5O1xuICBhbGxvd2VkTWV0aG9kcz86IFwiR0VUX0hFQURcIiB8IFwiR0VUX0hFQURfT1BUSU9OU1wiIHwgXCJBTExcIjtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgQ0ROIHByb3BzIGFuZCBsb2dzIHdhcm5pbmdzIGZvciBtaXNjb25maWd1cmVkIG9wdGlvbnMuXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlQ2RuUHJvcHMocHJvcHM6IElDZG5Qcm9wcyk6IHZvaWQge1xuICAvLyBWYWxpZGF0ZSBjZXJ0aWZpY2F0ZSByZWdpb24gd2FybmluZ1xuICBpZiAocHJvcHMuY2VydGlmaWNhdGUgJiYgcHJvcHMuZG9tYWluTmFtZXMgJiYgcHJvcHMuZG9tYWluTmFtZXMubGVuZ3RoID4gMCkge1xuICAgIEZqYWxsTG9nZ2VyLmluZm8oXG4gICAgICBcIkNsb3VkRnJvbnQgY2VydGlmaWNhdGVzIG11c3QgYmUgaW4gdXMtZWFzdC0xIHJlZ2lvbi4gXCIgK1xuICAgICAgICBcIkVuc3VyZSB5b3VyIGNlcnRpZmljYXRlIHdhcyBjcmVhdGVkIGluIHVzLWVhc3QtMS5cIlxuICAgICk7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBkb21haW4gbmFtZXMgcmVxdWlyZSBjZXJ0aWZpY2F0ZVxuICBpZiAocHJvcHMuZG9tYWluTmFtZXMgJiYgcHJvcHMuZG9tYWluTmFtZXMubGVuZ3RoID4gMCAmJiAhcHJvcHMuY2VydGlmaWNhdGUpIHtcbiAgICBGamFsbExvZ2dlci53YXJuKFxuICAgICAgXCInZG9tYWluTmFtZXMnIHByb3ZpZGVkIGJ1dCBubyAnY2VydGlmaWNhdGUnIHNwZWNpZmllZC4gXCIgK1xuICAgICAgICBcIkN1c3RvbSBkb21haW4gbmFtZXMgcmVxdWlyZSBhbiBBQ00gY2VydGlmaWNhdGUgaW4gdXMtZWFzdC0xLlwiXG4gICAgKTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIEFMQiBvcmlnaW5cbiAgaWYgKHByb3BzLm9yaWdpblR5cGUgPT09IFwiYWxiXCIpIHtcbiAgICBjb25zdCBhbGJQcm9wcyA9IHByb3BzIGFzIEFsYkNkblByb3BzO1xuICAgIGlmIChcbiAgICAgIGlzQ29tcHV0ZShhbGJQcm9wcy5sb2FkQmFsYW5jZXIpICYmXG4gICAgICBpc0Vjc0NvbXB1dGUoYWxiUHJvcHMubG9hZEJhbGFuY2VyKVxuICAgICkge1xuICAgICAgY29uc3QgbGIgPSBhbGJQcm9wcy5sb2FkQmFsYW5jZXIuZ2V0TG9hZEJhbGFuY2VyKCk7XG4gICAgICBpZiAoIWxiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBcIkNvbXB1dGUgcmVzb3VyY2UgZG9lcyBub3QgaGF2ZSBhIGxvYWQgYmFsYW5jZXIuIFwiICtcbiAgICAgICAgICAgIFwiRW5zdXJlIEVDUyBjb21wdXRlIGhhcyBsb2FkQmFsYW5jZXIgZW5hYmxlZCBmb3IgQ0ROIG9yaWdpbi5cIlxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFZhbGlkYXRlIHNtYXJ0IG9yaWdpblxuICBpZiAocHJvcHMub3JpZ2luVHlwZSA9PT0gXCJhdXRvXCIpIHtcbiAgICBjb25zdCBzbWFydFByb3BzID0gcHJvcHMgYXMgU21hcnRDZG5Qcm9wcztcbiAgICBpZiAoaXNDb21wdXRlKHNtYXJ0UHJvcHMub3JpZ2luKSkge1xuICAgICAgaWYgKGlzRWNzQ29tcHV0ZShzbWFydFByb3BzLm9yaWdpbikpIHtcbiAgICAgICAgaWYgKCFzbWFydFByb3BzLm9yaWdpbi5nZXRMb2FkQmFsYW5jZXIoKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIFwiRUNTIGNvbXB1dGUgbXVzdCBoYXZlIGEgbG9hZCBiYWxhbmNlciBmb3IgQ0ROIG9yaWdpbi4gXCIgK1xuICAgICAgICAgICAgICBcIkVuYWJsZSBsb2FkQmFsYW5jZXIgaW4geW91ciBFQ1MgY29tcHV0ZSBjb25maWd1cmF0aW9uLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpc0xhbWJkYUNvbXB1dGUoc21hcnRQcm9wcy5vcmlnaW4pKSB7XG4gICAgICAgIGlmICghc21hcnRQcm9wcy5vcmlnaW4uZ2V0RnVuY3Rpb25VcmwoKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIFwiTGFtYmRhIGNvbXB1dGUgbXVzdCBoYXZlIGEgZnVuY3Rpb24gVVJMIGZvciBDRE4gb3JpZ2luLiBcIiArXG4gICAgICAgICAgICAgIFwiRW5hYmxlIGZ1bmN0aW9uVXJsIGluIHlvdXIgTGFtYmRhIGNvbXB1dGUgY29uZmlndXJhdGlvbi5cIlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE11c3QgYmUgRUMyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBcIkVDMiBjb21wdXRlIHR5cGUgaXMgbm90IHN1cHBvcnRlZCBmb3IgQ0ROIG9yaWdpbi4gXCIgK1xuICAgICAgICAgICAgXCJVc2UgRUNTIHdpdGggbG9hZCBiYWxhbmNlciBvciBMYW1iZGEgd2l0aCBmdW5jdGlvbiBVUkwuXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDRE4gd3JhcHBlciBjbGFzcyB0aGF0IGV4dGVuZHMgQ2xvdWRGcm9udERpc3RyaWJ1dGlvbiB3aXRoIEZqYWxsIHBhdHRlcm5zLlxuICovXG5leHBvcnQgY2xhc3MgQ2RuIGV4dGVuZHMgQ2xvdWRGcm9udERpc3RyaWJ1dGlvbiB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJQ2RuUHJvcHMpIHtcbiAgICBjb25zdCByZXNvbHZlZFByb3BzID0gQ2RuLnJlc29sdmVQcm9wcyhwcm9wcyk7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCByZXNvbHZlZFByb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIElDZG5Qcm9wcyB0byBDbG91ZEZyb250RGlzdHJpYnV0aW9uUHJvcHMuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyByZXNvbHZlUHJvcHMocHJvcHM6IElDZG5Qcm9wcyk6IENsb3VkRnJvbnREaXN0cmlidXRpb25Qcm9wcyB7XG4gICAgY29uc3QgZGVmYXVsdE9yaWdpbiA9IENkbi5yZXNvbHZlRGVmYXVsdE9yaWdpbihwcm9wcyk7XG4gICAgY29uc3QgYmVoYXZpb3VycyA9IENkbi5yZXNvbHZlQmVoYXZpb3Vycyhwcm9wcy5iZWhhdmlvdXJzKTtcblxuICAgIHJldHVybiB7XG4gICAgICBkZWZhdWx0T3JpZ2luLFxuICAgICAgZGVmYXVsdENhY2hlUG9saWN5OiBwcm9wcy5jYWNoZVBvbGljeSxcbiAgICAgIGRlZmF1bHRBbGxvd2VkTWV0aG9kczogcHJvcHMuZGVmYXVsdEFsbG93ZWRNZXRob2RzLFxuICAgICAgYmVoYXZpb3VycyxcbiAgICAgIGRvbWFpbk5hbWVzOiBwcm9wcy5kb21haW5OYW1lcyxcbiAgICAgIGNlcnRpZmljYXRlOiBwcm9wcy5jZXJ0aWZpY2F0ZSxcbiAgICAgIGNvbW1lbnQ6IHByb3BzLmNvbW1lbnQsXG4gICAgICBlbmFibGVMb2dnaW5nOiBwcm9wcy5lbmFibGVMb2dnaW5nLFxuICAgICAgbG9nQnVja2V0OiBwcm9wcy5sb2dCdWNrZXQsXG4gICAgICBwcmljZUNsYXNzOiBwcm9wcy5wcmljZUNsYXNzLFxuICAgICAgZm9yd2FyZEhvc3RIZWFkZXI6IHByb3BzLmZvcndhcmRIb3N0SGVhZGVyXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gc21hcnQgYmVoYXZpb3VycyB0byBDZG5CZWhhdmlvdXIgb2JqZWN0cy5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHJlc29sdmVCZWhhdmlvdXJzKFxuICAgIGJlaGF2aW91cnM/OiBTbWFydENkbkJlaGF2aW91cltdXG4gICk6IENkbkJlaGF2aW91cltdIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIWJlaGF2aW91cnMgfHwgYmVoYXZpb3Vycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJlaGF2aW91cnMubWFwKChiZWhhdmlvdXIpID0+ICh7XG4gICAgICBwYXRoUGF0dGVybjogYmVoYXZpb3VyLnBhdGhQYXR0ZXJuLFxuICAgICAgb3JpZ2luOiBDZG4uZGV0ZWN0T3JpZ2luRnJvbVJlc291cmNlKGJlaGF2aW91ci5vcmlnaW4pLFxuICAgICAgY2FjaGVQb2xpY3k6IGJlaGF2aW91ci5jYWNoZVBvbGljeSxcbiAgICAgIGFsbG93ZWRNZXRob2RzOiBiZWhhdmlvdXIuYWxsb3dlZE1ldGhvZHNcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZSB0aGUgZGVmYXVsdCBvcmlnaW4gZnJvbSBJQ2RuUHJvcHMuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyByZXNvbHZlRGVmYXVsdE9yaWdpbihwcm9wczogSUNkblByb3BzKTogQ2RuT3JpZ2luQ29uZmlnIHtcbiAgICBzd2l0Y2ggKHByb3BzLm9yaWdpblR5cGUpIHtcbiAgICAgIGNhc2UgXCJzM1wiOiB7XG4gICAgICAgIGNvbnN0IGJ1Y2tldCA9IGlzU3RvcmFnZVJlc291cmNlKHByb3BzLmJ1Y2tldClcbiAgICAgICAgICA/IHByb3BzLmJ1Y2tldC5nZXRCdWNrZXQoKVxuICAgICAgICAgIDogcHJvcHMuYnVja2V0O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwiczNcIixcbiAgICAgICAgICBidWNrZXQsXG4gICAgICAgICAgb3JpZ2luUGF0aDogcHJvcHMub3JpZ2luUGF0aFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjYXNlIFwiYWxiXCI6IHtcbiAgICAgICAgbGV0IGxvYWRCYWxhbmNlcjogSUFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyO1xuICAgICAgICBpZiAoaXNDb21wdXRlKHByb3BzLmxvYWRCYWxhbmNlcikpIHtcbiAgICAgICAgICBpZiAoaXNFY3NDb21wdXRlKHByb3BzLmxvYWRCYWxhbmNlcikpIHtcbiAgICAgICAgICAgIGNvbnN0IGxiID0gcHJvcHMubG9hZEJhbGFuY2VyLmdldExvYWRCYWxhbmNlcigpO1xuICAgICAgICAgICAgaWYgKCFsYikge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgXCJDb21wdXRlIHJlc291cmNlIGRvZXMgbm90IGhhdmUgYSBsb2FkIGJhbGFuY2VyLiBcIiArXG4gICAgICAgICAgICAgICAgICBcIkVuc3VyZSBFQ1MgY29tcHV0ZSBoYXMgbG9hZEJhbGFuY2VyIGVuYWJsZWQgZm9yIENETiBvcmlnaW4uXCJcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvYWRCYWxhbmNlciA9IGxiO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIFwiT25seSBFQ1MgY29tcHV0ZSB3aXRoIGxvYWQgYmFsYW5jZXIgaXMgc3VwcG9ydGVkIGZvciBBTEIgb3JpZ2luLiBcIiArXG4gICAgICAgICAgICAgICAgXCJMYW1iZGEgYW5kIEVDMiBjb21wdXRlIHR5cGVzIGFyZSBub3Qgc3VwcG9ydGVkLlwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2FkQmFsYW5jZXIgPSBwcm9wcy5sb2FkQmFsYW5jZXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiBcImFsYlwiLFxuICAgICAgICAgIGxvYWRCYWxhbmNlcixcbiAgICAgICAgICBwcm90b2NvbFBvbGljeTogcHJvcHMucHJvdG9jb2xQb2xpY3lcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgY2FzZSBcImh0dHBcIjpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiBcImh0dHBcIixcbiAgICAgICAgICBkb21haW5OYW1lOiBwcm9wcy5kb21haW5OYW1lLFxuICAgICAgICAgIG9yaWdpblBhdGg6IHByb3BzLm9yaWdpblBhdGgsXG4gICAgICAgICAgcHJvdG9jb2xQb2xpY3k6IHByb3BzLnByb3RvY29sUG9saWN5XG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgXCJhdXRvXCI6XG4gICAgICAgIHJldHVybiBDZG4uZGV0ZWN0T3JpZ2luRnJvbVJlc291cmNlKHByb3BzLm9yaWdpbik7XG5cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29uc3QgX2V4aGF1c3RpdmU6IG5ldmVyID0gcHJvcHM7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgVW5zdXBwb3J0ZWQgQ0ROIG9yaWdpbiB0eXBlOiAkeyhwcm9wcyBhcyBJQ2RuUHJvcHMpLm9yaWdpblR5cGV9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBdXRvLWRldGVjdCBvcmlnaW4gY29uZmlndXJhdGlvbiBmcm9tIGEgRmphbGwgcmVzb3VyY2UuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBkZXRlY3RPcmlnaW5Gcm9tUmVzb3VyY2UoXG4gICAgcmVzb3VyY2U6IFN0b3JhZ2VSZXNvdXJjZSB8IEFueUNvbXB1dGUgfCBzdHJpbmdcbiAgKTogQ2RuT3JpZ2luQ29uZmlnIHtcbiAgICAvLyBTdHJpbmcg4oaSIEhUVFAgb3JpZ2luXG4gICAgaWYgKHR5cGVvZiByZXNvdXJjZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJodHRwXCIsXG4gICAgICAgIGRvbWFpbk5hbWU6IHJlc291cmNlXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFN0b3JhZ2VSZXNvdXJjZSDihpIgUzMgb3JpZ2luXG4gICAgaWYgKGlzU3RvcmFnZVJlc291cmNlKHJlc291cmNlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJzM1wiLFxuICAgICAgICBidWNrZXQ6IHJlc291cmNlLmdldEJ1Y2tldCgpXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEVDUyBDb21wdXRlIOKGkiBBTEIgb3JpZ2luXG4gICAgaWYgKGlzRWNzQ29tcHV0ZShyZXNvdXJjZSkpIHtcbiAgICAgIGNvbnN0IGxvYWRCYWxhbmNlciA9IHJlc291cmNlLmdldExvYWRCYWxhbmNlcigpO1xuICAgICAgaWYgKGxvYWRCYWxhbmNlcikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwiYWxiXCIsXG4gICAgICAgICAgbG9hZEJhbGFuY2VyXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTGFtYmRhIENvbXB1dGUg4oaSIEhUVFAgb3JpZ2luIChmdW5jdGlvbiBVUkwpXG4gICAgaWYgKGlzTGFtYmRhQ29tcHV0ZShyZXNvdXJjZSkpIHtcbiAgICAgIGNvbnN0IGZ1bmN0aW9uVXJsID0gcmVzb3VyY2UuZ2V0RnVuY3Rpb25VcmwoKTtcbiAgICAgIGlmIChmdW5jdGlvblVybCkge1xuICAgICAgICAvLyBMYW1iZGEgZnVuY3Rpb24gVVJMIGlzIGFuIEhUVFAgb3JpZ2luXG4gICAgICAgIC8vIEV4dHJhY3QgZG9tYWluIGZyb20gVVJMIHRva2VuIHVzaW5nIENsb3VkRm9ybWF0aW9uIGludHJpbnNpY3NcbiAgICAgICAgLy8gVVJMIGZvcm1hdDogaHR0cHM6Ly88ZG9tYWluPi9cbiAgICAgICAgLy8gU3BsaXQgYnkgXCIvXCIgZ2l2ZXMgW1wiaHR0cHM6XCIsIFwiXCIsIFwiPGRvbWFpbj5cIiwgXCJcIl1cbiAgICAgICAgLy8gU2VsZWN0IGluZGV4IDIgdG8gZ2V0IHRoZSBkb21haW5cbiAgICAgICAgY29uc3QgZG9tYWluTmFtZSA9IEZuLnNlbGVjdCgyLCBGbi5zcGxpdChcIi9cIiwgZnVuY3Rpb25VcmwpKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiBcImh0dHBcIixcbiAgICAgICAgICBkb21haW5OYW1lXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFVuYWJsZSB0byBkZXRlY3QgQ0ROIG9yaWdpbiBmcm9tIHJlc291cmNlOiAke3R5cGVvZiByZXNvdXJjZX0uIGAgK1xuICAgICAgICBcIlByb3ZpZGUgZXhwbGljaXQgb3JpZ2luIGNvbmZpZ3VyYXRpb24gdXNpbmcgb3JpZ2luVHlwZS5cIlxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBGYWN0b3J5IGZvciBjcmVhdGluZyBDRE4gKENsb3VkRnJvbnQpIGRpc3RyaWJ1dGlvbnMuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFMzIG9yaWdpblxuICogY29uc3QgYXNzZXRzID0gYXBwLmFkZFN0b3JhZ2UoU3RvcmFnZUZhY3RvcnkuYnVpbGQoXCJBc3NldHNcIiwgeyBidWNrZXRUeXBlOiBcInByaXZhdGVcIiB9KSk7XG4gKiBhcHAuYWRkQ2RuKENkbkZhY3RvcnkuYnVpbGQoXCJBc3NldHNDZG5cIiwge1xuICogICBvcmlnaW5UeXBlOiBcInMzXCIsXG4gKiAgIGJ1Y2tldDogYXNzZXRzXG4gKiB9KSk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFMQiBvcmlnaW4gKEVDUylcbiAqIGNvbnN0IGFwaSA9IGFwcC5hZGRDb21wdXRlKENvbXB1dGVGYWN0b3J5LmJ1aWxkKFwiQXBpXCIsIHsgdHlwZTogXCJlY3NcIiwgLi4uIH0pKTtcbiAqIGFwcC5hZGRDZG4oQ2RuRmFjdG9yeS5idWlsZChcIkFwaUNkblwiLCB7XG4gKiAgIG9yaWdpblR5cGU6IFwiYWxiXCIsXG4gKiAgIGxvYWRCYWxhbmNlcjogYXBpXG4gKiB9KSk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNtYXJ0IGRldGVjdGlvblxuICogYXBwLmFkZENkbihDZG5GYWN0b3J5LmJ1aWxkKFwiQXBwQ2RuXCIsIHtcbiAqICAgb3JpZ2luVHlwZTogXCJhdXRvXCIsXG4gKiAgIG9yaWdpbjogYXNzZXRzXG4gKiB9KSk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEN1c3RvbSBkb21haW5cbiAqIGFwcC5hZGRDZG4oQ2RuRmFjdG9yeS5idWlsZChcIkFwcENkblwiLCB7XG4gKiAgIG9yaWdpblR5cGU6IFwiczNcIixcbiAqICAgYnVja2V0OiBhc3NldHMsXG4gKiAgIGRvbWFpbk5hbWVzOiBbXCJhcHAuZXhhbXBsZS5jb21cIl0sXG4gKiAgIGNlcnRpZmljYXRlOiBteUNlcnRcbiAqIH0pKTtcbiAqL1xuZXhwb3J0IGNsYXNzIENkbkZhY3Rvcnkge1xuICAvKipcbiAgICogQnVpbGQgYSBDRE4gZmFjdG9yeSBmdW5jdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGlkIC0gVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBDRE5cbiAgICogQHBhcmFtIHByb3BzIC0gQ0ROIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllc1xuICAgKiBAcmV0dXJucyBGYWN0b3J5IGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyB0aGUgQ0ROIHdoZW4gaW52b2tlZFxuICAgKi9cbiAgc3RhdGljIGJ1aWxkKGlkOiBzdHJpbmcsIHByb3BzOiBJQ2RuUHJvcHMpIHtcbiAgICByZXR1cm4gKF9hcHA6IEFwcCwgc2NvcGU6IENvbnN0cnVjdCk6IENkbiA9PiB7XG4gICAgICB2YWxpZGF0ZUNkblByb3BzKHByb3BzKTtcbiAgICAgIHJldHVybiBuZXcgQ2RuKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
256
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL3BhdHRlcm5zL2F3cy9jZG4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkNBQWlDO0FBT2pDLGlEQU1pQztBQUNqQyx1Q0FBb0Q7QUFDcEQsdUNBS21CO0FBQ25CLHlFQUE4RDtBQTJGOUQ7O0dBRUc7QUFDSCxTQUFTLGdCQUFnQixDQUFDLEtBQWdCO0lBQ3hDLHNDQUFzQztJQUN0QyxJQUFJLEtBQUssQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMzRSxpQ0FBVyxDQUFDLElBQUksQ0FDZCx1REFBdUQ7WUFDckQsbURBQW1ELENBQ3RELENBQUM7SUFDSixDQUFDO0lBRUQsNENBQTRDO0lBQzVDLElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDNUUsaUNBQVcsQ0FBQyxJQUFJLENBQ2QseURBQXlEO1lBQ3ZELDhEQUE4RCxDQUNqRSxDQUFDO0lBQ0osQ0FBQztJQUVELHNCQUFzQjtJQUN0QixJQUFJLEtBQUssQ0FBQyxVQUFVLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDL0IsTUFBTSxRQUFRLEdBQUcsS0FBb0IsQ0FBQztRQUN0QyxJQUNFLElBQUEsbUJBQVMsRUFBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBQ2hDLElBQUEsc0JBQVksRUFBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQ25DLENBQUM7WUFDRCxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDUixNQUFNLElBQUksS0FBSyxDQUNiLGtEQUFrRDtvQkFDaEQs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QUFFLEtBQUs7b0JBQ1gsWUFBWTtpQkFDYixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRCw4Q0FBOEM7UUFDOUMsSUFBSSxJQUFBLHlCQUFlLEVBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM5QixNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDOUMsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDaEIsd0NBQXdDO2dCQUN4QyxnRUFBZ0U7Z0JBQ2hFLGdDQUFnQztnQkFDaEMsb0RBQW9EO2dCQUNwRCxtQ0FBbUM7Z0JBQ25DLE1BQU0sVUFBVSxHQUFHLGdCQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxnQkFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDNUQsT0FBTztvQkFDTCxJQUFJLEVBQUUsTUFBTTtvQkFDWixVQUFVO2lCQUNYLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sSUFBSSxLQUFLLENBQ2IsOENBQThDLE9BQU8sUUFBUSxJQUFJO1lBQy9ELHlEQUF5RCxDQUM1RCxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBcktELGtCQXFLQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0NHO0FBQ0gsTUFBYSxVQUFVO0lBQ3JCOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBVSxFQUFFLEtBQWdCO1FBQ3ZDLE9BQU8sQ0FBQyxJQUFTLEVBQUUsS0FBZ0IsRUFBTyxFQUFFO1lBQzFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFkRCxnQ0FjQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEZuIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyB0eXBlIElCdWNrZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQgeyB0eXBlIElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2MlwiO1xuaW1wb3J0IHsgdHlwZSBJQ2VydGlmaWNhdGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNlcnRpZmljYXRlbWFuYWdlclwiO1xuaW1wb3J0IHsgdHlwZSBJQ2FjaGVQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnRcIjtcblxuaW1wb3J0IHR5cGUgQXBwIGZyb20gXCIuLi8uLi9hcHBcIjtcbmltcG9ydCB7XG4gIENsb3VkRnJvbnREaXN0cmlidXRpb24sXG4gIHR5cGUgQ2xvdWRGcm9udERpc3RyaWJ1dGlvblByb3BzLFxuICB0eXBlIENkbk9yaWdpbkNvbmZpZyxcbiAgdHlwZSBDZG5CZWhhdmlvdXIsXG4gIHR5cGUgQ2FjaGVQb2xpY3lQcmVzZXRcbn0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvY2RuXCI7XG5pbXBvcnQgeyB0eXBlIFN0b3JhZ2UsIGlzU3RvcmFnZSB9IGZyb20gXCIuL3N0b3JhZ2VcIjtcbmltcG9ydCB7XG4gIHR5cGUgQW55Q29tcHV0ZSxcbiAgaXNDb21wdXRlLFxuICBpc0Vjc0NvbXB1dGUsXG4gIGlzTGFtYmRhQ29tcHV0ZVxufSBmcm9tIFwiLi9jb21wdXRlXCI7XG5pbXBvcnQgeyBGamFsbExvZ2dlciB9IGZyb20gXCIuLi8uLi91dGlscy92YWxpZGF0aW9uTG9nZ2VyLmpzXCI7XG5cbi8qKlxuICogUzMgb3JpZ2luIENETiBwcm9wcyAtIHVzZSB3aXRoIFMzIGJ1Y2tldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFMzQ2RuUHJvcHMge1xuICBvcmlnaW5UeXBlOiBcInMzXCI7XG4gIGJ1Y2tldDogSUJ1Y2tldCB8IFN0b3JhZ2U7XG4gIG9yaWdpblBhdGg/OiBzdHJpbmc7XG4gIGNhY2hlUG9saWN5PzogQ2FjaGVQb2xpY3lQcmVzZXQgfCBJQ2FjaGVQb2xpY3k7XG4gIGRlZmF1bHRBbGxvd2VkTWV0aG9kcz86IFwiR0VUX0hFQURcIiB8IFwiR0VUX0hFQURfT1BUSU9OU1wiIHwgXCJBTExcIjtcbiAgYmVoYXZpb3Vycz86IFNtYXJ0Q2RuQmVoYXZpb3VyW107XG4gIGRvbWFpbk5hbWVzPzogc3RyaW5nW107XG4gIGNlcnRpZmljYXRlPzogSUNlcnRpZmljYXRlO1xuICBjb21tZW50Pzogc3RyaW5nO1xuICBlbmFibGVMb2dnaW5nPzogYm9vbGVhbjtcbiAgbG9nQnVja2V0PzogSUJ1Y2tldDtcbiAgcHJpY2VDbGFzcz86IFwiUHJpY2VDbGFzc18xMDBcIiB8IFwiUHJpY2VDbGFzc18yMDBcIiB8IFwiUHJpY2VDbGFzc19BbGxcIjtcbiAgZm9yd2FyZEhvc3RIZWFkZXI/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEFMQiBvcmlnaW4gQ0ROIHByb3BzIC0gdXNlIHdpdGggQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFsYkNkblByb3BzIHtcbiAgb3JpZ2luVHlwZTogXCJhbGJcIjtcbiAgbG9hZEJhbGFuY2VyOiBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIgfCBBbnlDb21wdXRlO1xuICBwcm90b2NvbFBvbGljeT86IFwiSFRUUF9PTkxZXCIgfCBcIkhUVFBTX09OTFlcIiB8IFwiTUFUQ0hfVklFV0VSXCI7XG4gIGNhY2hlUG9saWN5PzogQ2FjaGVQb2xpY3lQcmVzZXQgfCBJQ2FjaGVQb2xpY3k7XG4gIGRlZmF1bHRBbGxvd2VkTWV0aG9kcz86IFwiR0VUX0hFQURcIiB8IFwiR0VUX0hFQURfT1BUSU9OU1wiIHwgXCJBTExcIjtcbiAgYmVoYXZpb3Vycz86IFNtYXJ0Q2RuQmVoYXZpb3VyW107XG4gIGRvbWFpbk5hbWVzPzogc3RyaW5nW107XG4gIGNlcnRpZmljYXRlPzogSUNlcnRpZmljYXRlO1xuICBjb21tZW50Pzogc3RyaW5nO1xuICBlbmFibGVMb2dnaW5nPzogYm9vbGVhbjtcbiAgbG9nQnVja2V0PzogSUJ1Y2tldDtcbiAgcHJpY2VDbGFzcz86IFwiUHJpY2VDbGFzc18xMDBcIiB8IFwiUHJpY2VDbGFzc18yMDBcIiB8IFwiUHJpY2VDbGFzc19BbGxcIjtcbiAgZm9yd2FyZEhvc3RIZWFkZXI/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEhUVFAgb3JpZ2luIENETiBwcm9wcyAtIHVzZSB3aXRoIGN1c3RvbSBIVFRQIGVuZHBvaW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cENkblByb3BzIHtcbiAgb3JpZ2luVHlwZTogXCJodHRwXCI7XG4gIGRvbWFpbk5hbWU6IHN0cmluZztcbiAgb3JpZ2luUGF0aD86IHN0cmluZztcbiAgcHJvdG9jb2xQb2xpY3k/OiBcIkhUVFBfT05MWVwiIHwgXCJIVFRQU19PTkxZXCIgfCBcIk1BVENIX1ZJRVdFUlwiO1xuICBjYWNoZVBvbGljeT86IENhY2hlUG9saWN5UHJlc2V0IHwgSUNhY2hlUG9saWN5O1xuICBkZWZhdWx0QWxsb3dlZE1ldGhvZHM/OiBcIkdFVF9IRUFEXCIgfCBcIkdFVF9IRUFEX09QVElPTlNcIiB8IFwiQUxMXCI7XG4gIGJlaGF2aW91cnM/OiBTbWFydENkbkJlaGF2aW91cltdO1xuICBkb21haW5OYW1lcz86IHN0cmluZ1tdO1xuICBjZXJ0aWZpY2F0ZT86IElDZXJ0aWZpY2F0ZTtcbiAgY29tbWVudD86IHN0cmluZztcbiAgZW5hYmxlTG9nZ2luZz86IGJvb2xlYW47XG4gIGxvZ0J1Y2tldD86IElCdWNrZXQ7XG4gIHByaWNlQ2xhc3M/OiBcIlByaWNlQ2xhc3NfMTAwXCIgfCBcIlByaWNlQ2xhc3NfMjAwXCIgfCBcIlByaWNlQ2xhc3NfQWxsXCI7XG4gIGZvcndhcmRIb3N0SGVhZGVyPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTbWFydCBvcmlnaW4gQ0ROIHByb3BzIC0gYXV0by1kZXRlY3Qgb3JpZ2luIHR5cGUgZnJvbSBGamFsbCByZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0Q2RuUHJvcHMge1xuICBvcmlnaW5UeXBlOiBcImF1dG9cIjtcbiAgb3JpZ2luOiBTdG9yYWdlIHwgQW55Q29tcHV0ZSB8IHN0cmluZztcbiAgY2FjaGVQb2xpY3k/OiBDYWNoZVBvbGljeVByZXNldCB8IElDYWNoZVBvbGljeTtcbiAgZGVmYXVsdEFsbG93ZWRNZXRob2RzPzogXCJHRVRfSEVBRFwiIHwgXCJHRVRfSEVBRF9PUFRJT05TXCIgfCBcIkFMTFwiO1xuICBiZWhhdmlvdXJzPzogU21hcnRDZG5CZWhhdmlvdXJbXTtcbiAgZG9tYWluTmFtZXM/OiBzdHJpbmdbXTtcbiAgY2VydGlmaWNhdGU/OiBJQ2VydGlmaWNhdGU7XG4gIGNvbW1lbnQ/OiBzdHJpbmc7XG4gIGVuYWJsZUxvZ2dpbmc/OiBib29sZWFuO1xuICBsb2dCdWNrZXQ/OiBJQnVja2V0O1xuICBwcmljZUNsYXNzPzogXCJQcmljZUNsYXNzXzEwMFwiIHwgXCJQcmljZUNsYXNzXzIwMFwiIHwgXCJQcmljZUNsYXNzX0FsbFwiO1xuICBmb3J3YXJkSG9zdEhlYWRlcj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIElDZG5Qcm9wcyA9IFMzQ2RuUHJvcHMgfCBBbGJDZG5Qcm9wcyB8IEh0dHBDZG5Qcm9wcyB8IFNtYXJ0Q2RuUHJvcHM7XG5cbi8qKlxuICogU21hcnQgYmVoYXZpb3VyIHR5cGUgdGhhdCBhY2NlcHRzIEZqYWxsIHJlc291cmNlcyBhcyBvcmlnaW5zLlxuICogVGhlIGZhY3Rvcnkgd2lsbCB0cmFuc2Zvcm0gdGhlc2UgdG8gcHJvcGVyIENkbkJlaGF2aW91ciBvYmplY3RzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0Q2RuQmVoYXZpb3VyIHtcbiAgcGF0aFBhdHRlcm46IHN0cmluZztcbiAgb3JpZ2luOiBTdG9yYWdlIHwgQW55Q29tcHV0ZSB8IHN0cmluZztcbiAgY2FjaGVQb2xpY3k/OiBDYWNoZVBvbGljeVByZXNldCB8IElDYWNoZVBvbGljeTtcbiAgYWxsb3dlZE1ldGhvZHM/OiBcIkdFVF9IRUFEXCIgfCBcIkdFVF9IRUFEX09QVElPTlNcIiB8IFwiQUxMXCI7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIENETiBwcm9wcyBhbmQgbG9ncyB3YXJuaW5ncyBmb3IgbWlzY29uZmlndXJlZCBvcHRpb25zLlxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUNkblByb3BzKHByb3BzOiBJQ2RuUHJvcHMpOiB2b2lkIHtcbiAgLy8gVmFsaWRhdGUgY2VydGlmaWNhdGUgcmVnaW9uIHdhcm5pbmdcbiAgaWYgKHByb3BzLmNlcnRpZmljYXRlICYmIHByb3BzLmRvbWFpbk5hbWVzICYmIHByb3BzLmRvbWFpbk5hbWVzLmxlbmd0aCA+IDApIHtcbiAgICBGamFsbExvZ2dlci5pbmZvKFxuICAgICAgXCJDbG91ZEZyb250IGNlcnRpZmljYXRlcyBtdXN0IGJlIGluIHVzLWVhc3QtMSByZWdpb24uIFwiICtcbiAgICAgICAgXCJFbnN1cmUgeW91ciBjZXJ0aWZpY2F0ZSB3YXMgY3JlYXRlZCBpbiB1cy1lYXN0LTEuXCJcbiAgICApO1xuICB9XG5cbiAgLy8gVmFsaWRhdGUgZG9tYWluIG5hbWVzIHJlcXVpcmUgY2VydGlmaWNhdGVcbiAgaWYgKHByb3BzLmRvbWFpbk5hbWVzICYmIHByb3BzLmRvbWFpbk5hbWVzLmxlbmd0aCA+IDAgJiYgIXByb3BzLmNlcnRpZmljYXRlKSB7XG4gICAgRmphbGxMb2dnZXIud2FybihcbiAgICAgIFwiJ2RvbWFpbk5hbWVzJyBwcm92aWRlZCBidXQgbm8gJ2NlcnRpZmljYXRlJyBzcGVjaWZpZWQuIFwiICtcbiAgICAgICAgXCJDdXN0b20gZG9tYWluIG5hbWVzIHJlcXVpcmUgYW4gQUNNIGNlcnRpZmljYXRlIGluIHVzLWVhc3QtMS5cIlxuICAgICk7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBBTEIgb3JpZ2luXG4gIGlmIChwcm9wcy5vcmlnaW5UeXBlID09PSBcImFsYlwiKSB7XG4gICAgY29uc3QgYWxiUHJvcHMgPSBwcm9wcyBhcyBBbGJDZG5Qcm9wcztcbiAgICBpZiAoXG4gICAgICBpc0NvbXB1dGUoYWxiUHJvcHMubG9hZEJhbGFuY2VyKSAmJlxuICAgICAgaXNFY3NDb21wdXRlKGFsYlByb3BzLmxvYWRCYWxhbmNlcilcbiAgICApIHtcbiAgICAgIGNvbnN0IGxiID0gYWxiUHJvcHMubG9hZEJhbGFuY2VyLmdldExvYWRCYWxhbmNlcigpO1xuICAgICAgaWYgKCFsYikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJDb21wdXRlIHJlc291cmNlIGRvZXMgbm90IGhhdmUgYSBsb2FkIGJhbGFuY2VyLiBcIiArXG4gICAgICAgICAgICBcIkVuc3VyZSBFQ1MgY29tcHV0ZSBoYXMgbG9hZEJhbGFuY2VyIGVuYWJsZWQgZm9yIENETiBvcmlnaW4uXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBzbWFydCBvcmlnaW5cbiAgaWYgKHByb3BzLm9yaWdpblR5cGUgPT09IFwiYXV0b1wiKSB7XG4gICAgY29uc3Qgc21hcnRQcm9wcyA9IHByb3BzIGFzIFNtYXJ0Q2RuUHJvcHM7XG4gICAgaWYgKGlzQ29tcHV0ZShzbWFydFByb3BzLm9yaWdpbikpIHtcbiAgICAgIGlmIChpc0Vjc0NvbXB1dGUoc21hcnRQcm9wcy5vcmlnaW4pKSB7XG4gICAgICAgIGlmICghc21hcnRQcm9wcy5vcmlnaW4uZ2V0TG9hZEJhbGFuY2VyKCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBcIkVDUyBjb21wdXRlIG11c3QgaGF2ZSBhIGxvYWQgYmFsYW5jZXIgZm9yIENETiBvcmlnaW4uIFwiICtcbiAgICAgICAgICAgICAgXCJFbmFibGUgbG9hZEJhbGFuY2VyIGluIHlvdXIgRUNTIGNvbXB1dGUgY29uZmlndXJhdGlvbi5cIlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNMYW1iZGFDb21wdXRlKHNtYXJ0UHJvcHMub3JpZ2luKSkge1xuICAgICAgICBpZiAoIXNtYXJ0UHJvcHMub3JpZ2luLmdldEZ1bmN0aW9uVXJsKCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBcIkxhbWJkYSBjb21wdXRlIG11c3QgaGF2ZSBhIGZ1bmN0aW9uIFVSTCBmb3IgQ0ROIG9yaWdpbi4gXCIgK1xuICAgICAgICAgICAgICBcIkVuYWJsZSBmdW5jdGlvblVybCBpbiB5b3VyIExhbWJkYSBjb21wdXRlIGNvbmZpZ3VyYXRpb24uXCJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBNdXN0IGJlIEVDMlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJFQzIgY29tcHV0ZSB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIENETiBvcmlnaW4uIFwiICtcbiAgICAgICAgICAgIFwiVXNlIEVDUyB3aXRoIGxvYWQgYmFsYW5jZXIgb3IgTGFtYmRhIHdpdGggZnVuY3Rpb24gVVJMLlwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ0ROIHdyYXBwZXIgY2xhc3MgdGhhdCBleHRlbmRzIENsb3VkRnJvbnREaXN0cmlidXRpb24gd2l0aCBGamFsbCBwYXR0ZXJucy5cbiAqL1xuZXhwb3J0IGNsYXNzIENkbiBleHRlbmRzIENsb3VkRnJvbnREaXN0cmlidXRpb24ge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSUNkblByb3BzKSB7XG4gICAgY29uc3QgcmVzb2x2ZWRQcm9wcyA9IENkbi5yZXNvbHZlUHJvcHMocHJvcHMpO1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcmVzb2x2ZWRQcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZSBJQ2RuUHJvcHMgdG8gQ2xvdWRGcm9udERpc3RyaWJ1dGlvblByb3BzLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVzb2x2ZVByb3BzKHByb3BzOiBJQ2RuUHJvcHMpOiBDbG91ZEZyb250RGlzdHJpYnV0aW9uUHJvcHMge1xuICAgIGNvbnN0IGRlZmF1bHRPcmlnaW4gPSBDZG4ucmVzb2x2ZURlZmF1bHRPcmlnaW4ocHJvcHMpO1xuICAgIGNvbnN0IGJlaGF2aW91cnMgPSBDZG4ucmVzb2x2ZUJlaGF2aW91cnMocHJvcHMuYmVoYXZpb3Vycyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGVmYXVsdE9yaWdpbixcbiAgICAgIGRlZmF1bHRDYWNoZVBvbGljeTogcHJvcHMuY2FjaGVQb2xpY3ksXG4gICAgICBkZWZhdWx0QWxsb3dlZE1ldGhvZHM6IHByb3BzLmRlZmF1bHRBbGxvd2VkTWV0aG9kcyxcbiAgICAgIGJlaGF2aW91cnMsXG4gICAgICBkb21haW5OYW1lczogcHJvcHMuZG9tYWluTmFtZXMsXG4gICAgICBjZXJ0aWZpY2F0ZTogcHJvcHMuY2VydGlmaWNhdGUsXG4gICAgICBjb21tZW50OiBwcm9wcy5jb21tZW50LFxuICAgICAgZW5hYmxlTG9nZ2luZzogcHJvcHMuZW5hYmxlTG9nZ2luZyxcbiAgICAgIGxvZ0J1Y2tldDogcHJvcHMubG9nQnVja2V0LFxuICAgICAgcHJpY2VDbGFzczogcHJvcHMucHJpY2VDbGFzcyxcbiAgICAgIGZvcndhcmRIb3N0SGVhZGVyOiBwcm9wcy5mb3J3YXJkSG9zdEhlYWRlclxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtIHNtYXJ0IGJlaGF2aW91cnMgdG8gQ2RuQmVoYXZpb3VyIG9iamVjdHMuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyByZXNvbHZlQmVoYXZpb3VycyhcbiAgICBiZWhhdmlvdXJzPzogU21hcnRDZG5CZWhhdmlvdXJbXVxuICApOiBDZG5CZWhhdmlvdXJbXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFiZWhhdmlvdXJzIHx8IGJlaGF2aW91cnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiBiZWhhdmlvdXJzLm1hcCgoYmVoYXZpb3VyKSA9PiAoe1xuICAgICAgcGF0aFBhdHRlcm46IGJlaGF2aW91ci5wYXRoUGF0dGVybixcbiAgICAgIG9yaWdpbjogQ2RuLmRldGVjdE9yaWdpbkZyb21SZXNvdXJjZShiZWhhdmlvdXIub3JpZ2luKSxcbiAgICAgIGNhY2hlUG9saWN5OiBiZWhhdmlvdXIuY2FjaGVQb2xpY3ksXG4gICAgICBhbGxvd2VkTWV0aG9kczogYmVoYXZpb3VyLmFsbG93ZWRNZXRob2RzXG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIGRlZmF1bHQgb3JpZ2luIGZyb20gSUNkblByb3BzLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVzb2x2ZURlZmF1bHRPcmlnaW4ocHJvcHM6IElDZG5Qcm9wcyk6IENkbk9yaWdpbkNvbmZpZyB7XG4gICAgc3dpdGNoIChwcm9wcy5vcmlnaW5UeXBlKSB7XG4gICAgICBjYXNlIFwiczNcIjoge1xuICAgICAgICBjb25zdCBidWNrZXQgPSBpc1N0b3JhZ2UocHJvcHMuYnVja2V0KVxuICAgICAgICAgID8gcHJvcHMuYnVja2V0LmdldEJ1Y2tldCgpXG4gICAgICAgICAgOiBwcm9wcy5idWNrZXQ7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogXCJzM1wiLFxuICAgICAgICAgIGJ1Y2tldCxcbiAgICAgICAgICBvcmlnaW5QYXRoOiBwcm9wcy5vcmlnaW5QYXRoXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNhc2UgXCJhbGJcIjoge1xuICAgICAgICBsZXQgbG9hZEJhbGFuY2VyOiBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXI7XG4gICAgICAgIGlmIChpc0NvbXB1dGUocHJvcHMubG9hZEJhbGFuY2VyKSkge1xuICAgICAgICAgIGlmIChpc0Vjc0NvbXB1dGUocHJvcHMubG9hZEJhbGFuY2VyKSkge1xuICAgICAgICAgICAgY29uc3QgbGIgPSBwcm9wcy5sb2FkQmFsYW5jZXIuZ2V0TG9hZEJhbGFuY2VyKCk7XG4gICAgICAgICAgICBpZiAoIWxiKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBcIkNvbXB1dGUgcmVzb3VyY2UgZG9lcyBub3QgaGF2ZSBhIGxvYWQgYmFsYW5jZXIuIFwiICtcbiAgICAgICAgICAgICAgICAgIFwiRW5zdXJlIEVDUyBjb21wdXRlIGhhcyBsb2FkQmFsYW5jZXIgZW5hYmxlZCBmb3IgQ0ROIG9yaWdpbi5cIlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbG9hZEJhbGFuY2VyID0gbGI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgXCJPbmx5IEVDUyBjb21wdXRlIHdpdGggbG9hZCBiYWxhbmNlciBpcyBzdXBwb3J0ZWQgZm9yIEFMQiBvcmlnaW4uIFwiICtcbiAgICAgICAgICAgICAgICBcIkxhbWJkYSBhbmQgRUMyIGNvbXB1dGUgdHlwZXMgYXJlIG5vdCBzdXBwb3J0ZWQuXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvYWRCYWxhbmNlciA9IHByb3BzLmxvYWRCYWxhbmNlcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwiYWxiXCIsXG4gICAgICAgICAgbG9hZEJhbGFuY2VyLFxuICAgICAgICAgIHByb3RvY29sUG9saWN5OiBwcm9wcy5wcm90b2NvbFBvbGljeVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjYXNlIFwiaHR0cFwiOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwiaHR0cFwiLFxuICAgICAgICAgIGRvbWFpbk5hbWU6IHByb3BzLmRvbWFpbk5hbWUsXG4gICAgICAgICAgb3JpZ2luUGF0aDogcHJvcHMub3JpZ2luUGF0aCxcbiAgICAgICAgICBwcm90b2NvbFBvbGljeTogcHJvcHMucHJvdG9jb2xQb2xpY3lcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSBcImF1dG9cIjpcbiAgICAgICAgcmV0dXJuIENkbi5kZXRlY3RPcmlnaW5Gcm9tUmVzb3VyY2UocHJvcHMub3JpZ2luKTtcblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb25zdCBfZXhoYXVzdGl2ZTogbmV2ZXIgPSBwcm9wcztcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBVbnN1cHBvcnRlZCBDRE4gb3JpZ2luIHR5cGU6ICR7KHByb3BzIGFzIElDZG5Qcm9wcykub3JpZ2luVHlwZX1gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEF1dG8tZGV0ZWN0IG9yaWdpbiBjb25maWd1cmF0aW9uIGZyb20gYSBGamFsbCByZXNvdXJjZS5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGRldGVjdE9yaWdpbkZyb21SZXNvdXJjZShcbiAgICByZXNvdXJjZTogU3RvcmFnZSB8IEFueUNvbXB1dGUgfCBzdHJpbmdcbiAgKTogQ2RuT3JpZ2luQ29uZmlnIHtcbiAgICAvLyBTdHJpbmcg4oaSIEhUVFAgb3JpZ2luXG4gICAgaWYgKHR5cGVvZiByZXNvdXJjZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJodHRwXCIsXG4gICAgICAgIGRvbWFpbk5hbWU6IHJlc291cmNlXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFN0b3JhZ2Ug4oaSIFMzIG9yaWdpblxuICAgIGlmIChpc1N0b3JhZ2UocmVzb3VyY2UpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcInMzXCIsXG4gICAgICAgIGJ1Y2tldDogcmVzb3VyY2UuZ2V0QnVja2V0KClcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gRUNTIENvbXB1dGUg4oaSIEFMQiBvcmlnaW5cbiAgICBpZiAoaXNFY3NDb21wdXRlKHJlc291cmNlKSkge1xuICAgICAgY29uc3QgbG9hZEJhbGFuY2VyID0gcmVzb3VyY2UuZ2V0TG9hZEJhbGFuY2VyKCk7XG4gICAgICBpZiAobG9hZEJhbGFuY2VyKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogXCJhbGJcIixcbiAgICAgICAgICBsb2FkQmFsYW5jZXJcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBMYW1iZGEgQ29tcHV0ZSDihpIgSFRUUCBvcmlnaW4gKGZ1bmN0aW9uIFVSTClcbiAgICBpZiAoaXNMYW1iZGFDb21wdXRlKHJlc291cmNlKSkge1xuICAgICAgY29uc3QgZnVuY3Rpb25VcmwgPSByZXNvdXJjZS5nZXRGdW5jdGlvblVybCgpO1xuICAgICAgaWYgKGZ1bmN0aW9uVXJsKSB7XG4gICAgICAgIC8vIExhbWJkYSBmdW5jdGlvbiBVUkwgaXMgYW4gSFRUUCBvcmlnaW5cbiAgICAgICAgLy8gRXh0cmFjdCBkb21haW4gZnJvbSBVUkwgdG9rZW4gdXNpbmcgQ2xvdWRGb3JtYXRpb24gaW50cmluc2ljc1xuICAgICAgICAvLyBVUkwgZm9ybWF0OiBodHRwczovLzxkb21haW4+L1xuICAgICAgICAvLyBTcGxpdCBieSBcIi9cIiBnaXZlcyBbXCJodHRwczpcIiwgXCJcIiwgXCI8ZG9tYWluPlwiLCBcIlwiXVxuICAgICAgICAvLyBTZWxlY3QgaW5kZXggMiB0byBnZXQgdGhlIGRvbWFpblxuICAgICAgICBjb25zdCBkb21haW5OYW1lID0gRm4uc2VsZWN0KDIsIEZuLnNwbGl0KFwiL1wiLCBmdW5jdGlvblVybCkpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwiaHR0cFwiLFxuICAgICAgICAgIGRvbWFpbk5hbWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgVW5hYmxlIHRvIGRldGVjdCBDRE4gb3JpZ2luIGZyb20gcmVzb3VyY2U6ICR7dHlwZW9mIHJlc291cmNlfS4gYCArXG4gICAgICAgIFwiUHJvdmlkZSBleHBsaWNpdCBvcmlnaW4gY29uZmlndXJhdGlvbiB1c2luZyBvcmlnaW5UeXBlLlwiXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIEZhY3RvcnkgZm9yIGNyZWF0aW5nIENETiAoQ2xvdWRGcm9udCkgZGlzdHJpYnV0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUzMgb3JpZ2luXG4gKiBjb25zdCBhc3NldHMgPSBhcHAuYWRkU3RvcmFnZShTdG9yYWdlRmFjdG9yeS5idWlsZChcIkFzc2V0c1wiLCB7fSkpO1xuICogYXBwLmFkZENkbihDZG5GYWN0b3J5LmJ1aWxkKFwiQXNzZXRzQ2RuXCIsIHtcbiAqICAgb3JpZ2luVHlwZTogXCJzM1wiLFxuICogICBidWNrZXQ6IGFzc2V0c1xuICogfSkpO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBTEIgb3JpZ2luIChFQ1MpXG4gKiBjb25zdCBhcGkgPSBhcHAuYWRkQ29tcHV0ZShDb21wdXRlRmFjdG9yeS5idWlsZChcIkFwaVwiLCB7IHR5cGU6IFwiZWNzXCIsIC4uLiB9KSk7XG4gKiBhcHAuYWRkQ2RuKENkbkZhY3RvcnkuYnVpbGQoXCJBcGlDZG5cIiwge1xuICogICBvcmlnaW5UeXBlOiBcImFsYlwiLFxuICogICBsb2FkQmFsYW5jZXI6IGFwaVxuICogfSkpO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTbWFydCBkZXRlY3Rpb25cbiAqIGFwcC5hZGRDZG4oQ2RuRmFjdG9yeS5idWlsZChcIkFwcENkblwiLCB7XG4gKiAgIG9yaWdpblR5cGU6IFwiYXV0b1wiLFxuICogICBvcmlnaW46IGFzc2V0c1xuICogfSkpO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDdXN0b20gZG9tYWluXG4gKiBhcHAuYWRkQ2RuKENkbkZhY3RvcnkuYnVpbGQoXCJBcHBDZG5cIiwge1xuICogICBvcmlnaW5UeXBlOiBcInMzXCIsXG4gKiAgIGJ1Y2tldDogYXNzZXRzLFxuICogICBkb21haW5OYW1lczogW1wiYXBwLmV4YW1wbGUuY29tXCJdLFxuICogICBjZXJ0aWZpY2F0ZTogbXlDZXJ0XG4gKiB9KSk7XG4gKi9cbmV4cG9ydCBjbGFzcyBDZG5GYWN0b3J5IHtcbiAgLyoqXG4gICAqIEJ1aWxkIGEgQ0ROIGZhY3RvcnkgZnVuY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSBpZCAtIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgQ0ROXG4gICAqIEBwYXJhbSBwcm9wcyAtIENETiBjb25maWd1cmF0aW9uIHByb3BlcnRpZXNcbiAgICogQHJldHVybnMgRmFjdG9yeSBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgdGhlIENETiB3aGVuIGludm9rZWRcbiAgICovXG4gIHN0YXRpYyBidWlsZChpZDogc3RyaW5nLCBwcm9wczogSUNkblByb3BzKSB7XG4gICAgcmV0dXJuIChfYXBwOiBBcHAsIHNjb3BlOiBDb25zdHJ1Y3QpOiBDZG4gPT4ge1xuICAgICAgdmFsaWRhdGVDZG5Qcm9wcyhwcm9wcyk7XG4gICAgICByZXR1cm4gbmV3IENkbihzY29wZSwgaWQsIHByb3BzKTtcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type RepositoryImage, type ICluster, type IBaseService } from "aws-cdk-lib/aws-ecs";
|
|
2
2
|
import { Repository } from "aws-cdk-lib/aws-ecr";
|
|
3
|
-
import {
|
|
3
|
+
import { Connections, type IVpc, type UserData, type IMachineImage, type ISecurityGroup } from "aws-cdk-lib/aws-ec2";
|
|
4
4
|
import { Code, Runtime, type Architecture, type FunctionUrlAuthType, type FunctionUrlCorsOptions, type IFunction, type InvokeMode } from "aws-cdk-lib/aws-lambda";
|
|
5
5
|
import { type PolicyStatement, type PolicyDocument, type IManagedPolicy, type IGrantable, Grant } from "aws-cdk-lib/aws-iam";
|
|
6
6
|
import { type IApplicationLoadBalancer, type ApplicationListener } from "aws-cdk-lib/aws-elasticloadbalancingv2";
|
|
@@ -221,6 +221,13 @@ export interface EcsRoutingConfig {
|
|
|
221
221
|
* { name: "users", containers: [{ port: 3000 }], routing: { path: "/users/*", priority: 100 } }
|
|
222
222
|
*
|
|
223
223
|
* @example
|
|
224
|
+
* // Service with multiple routing rules (same target group)
|
|
225
|
+
* { name: "web", containers: [{ port: 3000 }], routing: [
|
|
226
|
+
* { path: "/api/v2/*", priority: 50 },
|
|
227
|
+
* { path: "/*", priority: 200 },
|
|
228
|
+
* ]}
|
|
229
|
+
*
|
|
230
|
+
* @example
|
|
224
231
|
* // Service with sidecars
|
|
225
232
|
* {
|
|
226
233
|
* name: "api",
|
|
@@ -250,8 +257,16 @@ export interface EcsServiceConfig {
|
|
|
250
257
|
* Routing rules for this service on the cluster's ALB.
|
|
251
258
|
* Required when cluster has multiple services with ports.
|
|
252
259
|
* Optional for single service (gets /* automatically).
|
|
260
|
+
* Can be a single rule or an array of rules pointing to the same target group.
|
|
261
|
+
*
|
|
262
|
+
* @example
|
|
263
|
+
* // Multiple routes for the same service
|
|
264
|
+
* routing: [
|
|
265
|
+
* { path: "/api/v2/*", priority: 50 },
|
|
266
|
+
* { path: "/*", priority: 200 },
|
|
267
|
+
* ]
|
|
253
268
|
*/
|
|
254
|
-
routing?: EcsRoutingConfig;
|
|
269
|
+
routing?: EcsRoutingConfig | EcsRoutingConfig[];
|
|
255
270
|
/** CPU units for this service's tasks (256-4096) */
|
|
256
271
|
cpu?: number;
|
|
257
272
|
/** Memory in MiB for this service's tasks (512-30720) */
|
|
@@ -602,7 +617,7 @@ export interface CodeLambdaProps extends BaseLambdaProps {
|
|
|
602
617
|
code: Code;
|
|
603
618
|
/** Handler function. Default: "index.handler" */
|
|
604
619
|
handler?: string;
|
|
605
|
-
/** Lambda runtime. Default:
|
|
620
|
+
/** Lambda runtime. Default: NODEJS_22_X */
|
|
606
621
|
runtime?: Runtime;
|
|
607
622
|
}
|
|
608
623
|
/**
|
|
@@ -725,6 +740,8 @@ export declare class EcsCompute extends Construct implements IEcsCompute {
|
|
|
725
740
|
getEcsCluster(): EcsCluster;
|
|
726
741
|
/**
|
|
727
742
|
* Grants ecs:ExecuteCommand permission for ECS services.
|
|
743
|
+
* Uses wildcard resource because ecs:ExecuteCommand targets task ARNs
|
|
744
|
+
* which are not known until runtime (tasks are ephemeral).
|
|
728
745
|
*/
|
|
729
746
|
grantExecuteCommand(grantee: IGrantable): Grant;
|
|
730
747
|
}
|