@fjall/components-infrastructure 0.87.20 → 0.88.1
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 +13 -17
- package/dist/lib/app.js +56 -40
- 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.js +1 -2
- package/dist/lib/config/aws/identityCenterGroupMembership.js +1 -6
- package/dist/lib/config/aws/index.d.ts +0 -1
- package/dist/lib/config/aws/index.js +1 -2
- 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/patterns/aws/account.d.ts +12 -0
- package/dist/lib/patterns/aws/account.js +59 -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 +1 -1
- package/dist/lib/patterns/aws/database.js +16 -13
- 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 +51 -0
- package/dist/lib/patterns/aws/organisation.js +150 -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 +2 -0
- package/dist/lib/resources/aws/compute/lambda.js +11 -6
- 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.js +1 -2
- package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.js +1 -2
- package/dist/lib/resources/aws/iam/identityCenter/group.js +1 -4
- package/dist/lib/resources/aws/iam/identityCenter/permissionSet.js +1 -4
- 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 +21 -3
- 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 +1 -2
- package/dist/lib/resources/aws/storage/ecr.d.ts +3 -1
- package/dist/lib/resources/aws/storage/ecr.js +5 -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 +1 -0
- 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 +42 -35
- package/package.json +3 -4
|
@@ -10,7 +10,6 @@ class Group extends constructs_1.Construct {
|
|
|
10
10
|
const physicalId = `identityStoreGroup${props.displayName}`;
|
|
11
11
|
// Create Group
|
|
12
12
|
const createGroup = new awsCustomResource_1.AwsCustomResource(this, "createIdentityStoreGroup", {
|
|
13
|
-
functionName: `createIdentityStoreGroup${props.displayName}`,
|
|
14
13
|
onCreate: {
|
|
15
14
|
service: "identitystore",
|
|
16
15
|
action: "CreateGroup", // https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/identitystore/command/CreateGroupCommand
|
|
@@ -33,7 +32,6 @@ class Group extends constructs_1.Construct {
|
|
|
33
32
|
this.groupId = createGroup.getResponseField("GroupId");
|
|
34
33
|
// Update Group
|
|
35
34
|
const updateGroup = new awsCustomResource_1.AwsCustomResource(this, "updateIdentityStoreGroup", {
|
|
36
|
-
functionName: `updateIdentityStoreGroup${props.displayName}`,
|
|
37
35
|
onUpdate: {
|
|
38
36
|
service: "identitystore",
|
|
39
37
|
action: "UpdateGroup", // https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/identitystore/command/UpdateGroupCommand
|
|
@@ -66,7 +64,6 @@ class Group extends constructs_1.Construct {
|
|
|
66
64
|
});
|
|
67
65
|
// Delete Group
|
|
68
66
|
const deleteGroup = new awsCustomResource_1.AwsCustomResource(this, "deleteIdentityStoreGroup", {
|
|
69
|
-
functionName: `deleteIdentityStoreGroup${props.displayName}`,
|
|
70
67
|
onDelete: {
|
|
71
68
|
service: "identitystore",
|
|
72
69
|
action: "DeleteGroup", // https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/identitystore/command/DeleteGroupCommand
|
|
@@ -95,4 +92,4 @@ class Group extends constructs_1.Construct {
|
|
|
95
92
|
}
|
|
96
93
|
}
|
|
97
94
|
exports.Group = Group;
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9pYW0vaWRlbnRpdHlDZW50ZXIvZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQW1EO0FBQ25ELGdFQUFnRTtBQUNoRSx5RUFBc0U7QUFTdEUsTUFBYSxLQUFNLFNBQVEsc0JBQVM7SUFHbEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFpQjtRQUN6RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sVUFBVSxHQUFHLHFCQUFxQixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFNUQsZUFBZTtRQUNmLE1BQU0sV0FBVyxHQUFHLElBQUkscUNBQWlCLENBQ3ZDLElBQUksRUFDSiwwQkFBMEIsRUFDMUI7WUFDRSxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLE1BQU0sRUFBRSxhQUFhLEVBQUUseUdBQXlHO2dCQUNoSSxVQUFVLEVBQUU7b0JBQ1YsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO29CQUM5QixlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7b0JBQ3RDLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztpQkFDL0I7Z0JBQ0Qsa0JBQWtCLEVBQUUsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUM7YUFDdEU7WUFDRCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsMkZBQTJGO1lBQzNGLG1FQUFtRTtZQUNuRSwwQkFBMEI7WUFDMUIsOENBQThDO1lBQzlDLHVCQUF1QjtZQUN2QixPQUFPO1lBQ1AsS0FBSztTQUNOLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXZELGVBQWU7UUFDZixNQUFNLFdBQVcsR0FBRyxJQUFJLHFDQUFpQixDQUN2QyxJQUFJLEVBQ0osMEJBQTBCLEVBQzFCO1lBQ0UsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixNQUFNLEVBQUUsYUFBYSxFQUFFLHlHQUF5RztnQkFDaEksVUFBVSxFQUFFO29CQUNWLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztvQkFDckIsZUFBZSxFQUFFLEtBQUssQ0FBQyxlQUFlO29CQUN0Qyx5REFBeUQ7b0JBQ3pELFVBQVUsRUFBRTt3QkFDVjs0QkFDRSxhQUFhLEVBQUUsYUFBYTs0QkFDNUIsY0FBYyxFQUFFLEtBQUssQ0FBQyxXQUFXO3lCQUNsQzt3QkFDRDs0QkFDRSxhQUFhLEVBQUUsYUFBYTs0QkFDNUIsY0FBYyxFQUFFLEtBQUssQ0FBQyxXQUFXO3lCQUNsQztxQkFDRjtpQkFDRjtnQkFDRCxrQkFBa0IsRUFBRSxlQUFlLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQzthQUN0RTtZQUNELElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQiwyRkFBMkY7WUFDM0YsbUVBQW1FO1lBQ25FLDBCQUEwQjtZQUMxQiw4Q0FBOEM7WUFDOUMsdUJBQXVCO1lBQ3ZCLE9BQU87WUFDUCxNQUFNO1lBQ04sWUFBWSxFQUFFLGVBQWU7U0FDOUIsQ0FDRixDQUFDO1FBRUYsZUFBZTtRQUNmLE1BQU0sV0FBVyxHQUFHLElBQUkscUNBQWlCLENBQ3ZDLElBQUksRUFDSiwwQkFBMEIsRUFDMUI7WUFDRSxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLE1BQU0sRUFBRSxhQUFhLEVBQUUseUdBQXlHO2dCQUNoSSxVQUFVLEVBQUU7b0JBQ1YsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO29CQUNyQixlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7aUJBQ3ZDO2FBQ0Y7WUFDRCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsMkZBQTJGO1lBQzNGLG1FQUFtRTtZQUNuRSwwQkFBMEI7WUFDMUIsOENBQThDO1lBQzlDLHVCQUF1QjtZQUN2QixPQUFPO1lBQ1AsTUFBTTtZQUNOLFlBQVksRUFBRSxlQUFlO1NBQzlCLENBQ0YsQ0FBQztRQUVGLG9EQUFvRDtRQUNwRCx1QkFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7WUFDekIsZUFBZSxFQUFFLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUM7U0FDekQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztDQUNGO0FBM0dELHNCQTJHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCwgRGVwZW5kYWJsZSB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgKiBhcyBjdXN0b21SZXNvdXJjZXMgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIjtcbmltcG9ydCB7IEF3c0N1c3RvbVJlc291cmNlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9hd3NDdXN0b21SZXNvdXJjZVwiO1xuaW1wb3J0IHsgdHlwZSBSb2xlIH0gZnJvbSBcIi4uXCI7XG5cbmludGVyZmFjZSBHcm91cFByb3BzIHtcbiAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgaWRlbnRpdHlTdG9yZUlkOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICByb2xlOiBSb2xlO1xufVxuZXhwb3J0IGNsYXNzIEdyb3VwIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHJpdmF0ZSBncm91cElkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEdyb3VwUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgcGh5c2ljYWxJZCA9IGBpZGVudGl0eVN0b3JlR3JvdXAke3Byb3BzLmRpc3BsYXlOYW1lfWA7XG5cbiAgICAvLyBDcmVhdGUgR3JvdXBcbiAgICBjb25zdCBjcmVhdGVHcm91cCA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZShcbiAgICAgIHRoaXMsXG4gICAgICBcImNyZWF0ZUlkZW50aXR5U3RvcmVHcm91cFwiLFxuICAgICAge1xuICAgICAgICBvbkNyZWF0ZToge1xuICAgICAgICAgIHNlcnZpY2U6IFwiaWRlbnRpdHlzdG9yZVwiLFxuICAgICAgICAgIGFjdGlvbjogXCJDcmVhdGVHcm91cFwiLCAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy92My9sYXRlc3QvY2xpZW50L2lkZW50aXR5c3RvcmUvY29tbWFuZC9DcmVhdGVHcm91cENvbW1hbmRcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBEaXNwbGF5TmFtZTogcHJvcHMuZGlzcGxheU5hbWUsXG4gICAgICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IHByb3BzLmlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgICAgIERlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvblxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKHBoeXNpY2FsSWQpXG4gICAgICAgIH0sXG4gICAgICAgIHJvbGU6IHByb3BzLnJvbGVcbiAgICAgICAgLy8gVE9ETzogTG9jayBkb3duIHBlcm1pc3Npb25zLCB3aGVuIHdlJ3JlIHJlYWR5IHRvIHRyb3VibGVzaG9vdCBpbnRlcm1pdHRlbnQgcG9saWN5IGVycm9yc1xuICAgICAgICAvLyBwb2xpY3k6IGN1c3RvbVJlc291cmNlcy5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU3RhdGVtZW50cyhbXG4gICAgICAgIC8vICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIC8vICAgICBhY3Rpb25zOiBbXCJpZGVudGl0eXN0b3JlOkNyZWF0ZUdyb3VwXCJdLFxuICAgICAgICAvLyAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgIC8vICAgfSlcbiAgICAgICAgLy8gXSlcbiAgICAgIH1cbiAgICApO1xuXG4gICAgdGhpcy5ncm91cElkID0gY3JlYXRlR3JvdXAuZ2V0UmVzcG9uc2VGaWVsZChcIkdyb3VwSWRcIik7XG5cbiAgICAvLyBVcGRhdGUgR3JvdXBcbiAgICBjb25zdCB1cGRhdGVHcm91cCA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZShcbiAgICAgIHRoaXMsXG4gICAgICBcInVwZGF0ZUlkZW50aXR5U3RvcmVHcm91cFwiLFxuICAgICAge1xuICAgICAgICBvblVwZGF0ZToge1xuICAgICAgICAgIHNlcnZpY2U6IFwiaWRlbnRpdHlzdG9yZVwiLFxuICAgICAgICAgIGFjdGlvbjogXCJVcGRhdGVHcm91cFwiLCAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy92My9sYXRlc3QvY2xpZW50L2lkZW50aXR5c3RvcmUvY29tbWFuZC9VcGRhdGVHcm91cENvbW1hbmRcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBHcm91cElkOiB0aGlzLmdyb3VwSWQsXG4gICAgICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IHByb3BzLmlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgICAgIC8vIFRPRE86IFN1cHBwb3J0IHRha2luZyBpbiBhbnkgY2hhbmdlcyBhbmQgdXBkYXRpbmcgdGhlbVxuICAgICAgICAgICAgT3BlcmF0aW9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgQXR0cmlidXRlUGF0aDogXCJEaXNwbGF5TmFtZVwiLFxuICAgICAgICAgICAgICAgIEF0dHJpYnV0ZVZhbHVlOiBwcm9wcy5kaXNwbGF5TmFtZVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgQXR0cmlidXRlUGF0aDogXCJEZXNjcmlwdGlvblwiLFxuICAgICAgICAgICAgICAgIEF0dHJpYnV0ZVZhbHVlOiBwcm9wcy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YocGh5c2ljYWxJZClcbiAgICAgICAgfSxcbiAgICAgICAgcm9sZTogcHJvcHMucm9sZSxcbiAgICAgICAgLy8gVE9ETzogTG9jayBkb3duIHBlcm1pc3Npb25zLCB3aGVuIHdlJ3JlIHJlYWR5IHRvIHRyb3VibGVzaG9vdCBpbnRlcm1pdHRlbnQgcG9saWN5IGVycm9yc1xuICAgICAgICAvLyBwb2xpY3k6IGN1c3RvbVJlc291cmNlcy5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU3RhdGVtZW50cyhbXG4gICAgICAgIC8vICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIC8vICAgICBhY3Rpb25zOiBbXCJpZGVudGl0eXN0b3JlOlVwZGF0ZUdyb3VwXCJdLFxuICAgICAgICAvLyAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgIC8vICAgfSlcbiAgICAgICAgLy8gXSksXG4gICAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206Okdyb3VwXCJcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gRGVsZXRlIEdyb3VwXG4gICAgY29uc3QgZGVsZXRlR3JvdXAgPSBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UoXG4gICAgICB0aGlzLFxuICAgICAgXCJkZWxldGVJZGVudGl0eVN0b3JlR3JvdXBcIixcbiAgICAgIHtcbiAgICAgICAgb25EZWxldGU6IHtcbiAgICAgICAgICBzZXJ2aWNlOiBcImlkZW50aXR5c3RvcmVcIixcbiAgICAgICAgICBhY3Rpb246IFwiRGVsZXRlR3JvdXBcIiwgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0phdmFTY3JpcHRTREsvdjMvbGF0ZXN0L2NsaWVudC9pZGVudGl0eXN0b3JlL2NvbW1hbmQvRGVsZXRlR3JvdXBDb21tYW5kXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgR3JvdXBJZDogdGhpcy5ncm91cElkLFxuICAgICAgICAgICAgSWRlbnRpdHlTdG9yZUlkOiBwcm9wcy5pZGVudGl0eVN0b3JlSWRcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJvbGU6IHByb3BzLnJvbGUsXG4gICAgICAgIC8vIFRPRE86IExvY2sgZG93biBwZXJtaXNzaW9ucywgd2hlbiB3ZSdyZSByZWFkeSB0byB0cm91Ymxlc2hvb3QgaW50ZXJtaXR0ZW50IHBvbGljeSBlcnJvcnNcbiAgICAgICAgLy8gcG9saWN5OiBjdXN0b21SZXNvdXJjZXMuQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVN0YXRlbWVudHMoW1xuICAgICAgICAvLyAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAvLyAgICAgYWN0aW9uczogW1wiaWRlbnRpdHlzdG9yZTpEZWxldGVHcm91cFwiXSxcbiAgICAgICAgLy8gICAgIHJlc291cmNlczogW1wiKlwiXVxuICAgICAgICAvLyAgIH0pXG4gICAgICAgIC8vIF0pLFxuICAgICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpHcm91cFwiXG4gICAgICB9XG4gICAgKTtcblxuICAgIC8vIEltcGxlbWVudCBEZXBlbmRhYmxlIHRvIG1ha2UgY29uc3RydWN0IGRlcGVuZGFibGVcbiAgICBEZXBlbmRhYmxlLmltcGxlbWVudCh0aGlzLCB7XG4gICAgICBkZXBlbmRlbmN5Um9vdHM6IFtjcmVhdGVHcm91cCwgdXBkYXRlR3JvdXAsIGRlbGV0ZUdyb3VwXVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldEdyb3VwSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ncm91cElkO1xuICB9XG59XG4iXX0=
|
|
@@ -12,7 +12,6 @@ class PermissionSet extends constructs_1.Construct {
|
|
|
12
12
|
super(scope, id);
|
|
13
13
|
const permissionSetPhysicalId = `permissionSet${props.name}`;
|
|
14
14
|
const createPermissionSet = new awsCustomResource_1.AwsCustomResource(this, "createPermissionSet", {
|
|
15
|
-
functionName: `createPermissionSet${props.name}`,
|
|
16
15
|
onCreate: {
|
|
17
16
|
service: "sso-admin",
|
|
18
17
|
action: "CreatePermissionSet", // https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sso-admin/command/CreatePermissionSetCommand
|
|
@@ -43,7 +42,6 @@ class PermissionSet extends constructs_1.Construct {
|
|
|
43
42
|
});
|
|
44
43
|
this.permissionSetArn = createPermissionSet.getResponseField("PermissionSet.PermissionSetArn");
|
|
45
44
|
const updatePermissionSet = new awsCustomResource_1.AwsCustomResource(this, "updatePermissionSet", {
|
|
46
|
-
functionName: `updatePermissionSet${props.name}`,
|
|
47
45
|
onUpdate: {
|
|
48
46
|
service: "sso-admin",
|
|
49
47
|
action: "UpdatePermissionSet", // https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sso-admin/command/UpdatePermissionSetCommand
|
|
@@ -73,7 +71,6 @@ class PermissionSet extends constructs_1.Construct {
|
|
|
73
71
|
});
|
|
74
72
|
updatePermissionSet.node.addDependency(createPermissionSet);
|
|
75
73
|
const deletePermissionSet = new awsCustomResource_1.AwsCustomResource(this, "deletePermissionSet", {
|
|
76
|
-
functionName: `deletePermissionSet${props.name}`,
|
|
77
74
|
onDelete: {
|
|
78
75
|
service: "sso-admin",
|
|
79
76
|
action: "DeletePermissionSet", // https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sso-admin/command/DeletePermissionSetCommand
|
|
@@ -106,4 +103,4 @@ class PermissionSet extends constructs_1.Construct {
|
|
|
106
103
|
}
|
|
107
104
|
}
|
|
108
105
|
exports.PermissionSet = PermissionSet;
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvblNldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL2lhbS9pZGVudGl0eUNlbnRlci9wZXJtaXNzaW9uU2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF1QztBQUN2QyxnRUFBZ0U7QUFDaEUseUVBQXNFO0FBSXRFLFNBQVMsYUFBYSxDQUFDLElBQWlCO0lBQ3RDLE9BQU8sSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3JFLENBQUM7QUFFRCxNQUFhLGFBQWMsU0FBUSxzQkFBUztJQUcxQyxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQU9DO1FBRUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLHVCQUF1QixHQUFHLGdCQUFnQixLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFN0QsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLHFDQUFpQixDQUMvQyxJQUFJLEVBQ0oscUJBQXFCLEVBQ3JCO1lBQ0UsWUFBWSxFQUFFLHNCQUFzQixLQUFLLENBQUMsSUFBSSxFQUFFO1lBQ2hELFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsV0FBVztnQkFDcEIsTUFBTSxFQUFFLHFCQUFxQixFQUFFLDZHQUE2RztnQkFDNUksVUFBVSxFQUFFO29CQUNWLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtvQkFDaEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO29CQUM5QixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7b0JBQzlCLElBQUksRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztpQkFDaEM7Z0JBQ0Qsa0JBQWtC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b250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgKiBhcyBjdXN0b21SZXNvdXJjZXMgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIjtcbmltcG9ydCB7IEF3c0N1c3RvbVJlc291cmNlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9hd3NDdXN0b21SZXNvdXJjZVwiO1xuaW1wb3J0IHsgdHlwZSBLZXlWYWx1ZSB9IGZyb20gXCIuLi8uLi8uLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBSb2xlIH0gZnJvbSBcIi4uXCI7XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVRhZ3ModGFncz86IEtleVZhbHVlW10pIHtcbiAgcmV0dXJuIHRhZ3M/Lm1hcCgoeyBrZXksIHZhbHVlIH0pID0+ICh7IEtleToga2V5LCBWYWx1ZTogdmFsdWUgfSkpO1xufVxuXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvblNldCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHByaXZhdGUgcGVybWlzc2lvblNldEFybjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczoge1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgaW5zdGFuY2VBcm46IHN0cmluZztcbiAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgICAgcm9sZTogUm9sZTtcbiAgICAgIG1hbmFnZWRQb2xpY2llcz86IHN0cmluZ1tdO1xuICAgICAgdGFncz86IEtleVZhbHVlW107XG4gICAgfVxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgcGVybWlzc2lvblNldFBoeXNpY2FsSWQgPSBgcGVybWlzc2lvblNldCR7cHJvcHMubmFtZX1gO1xuXG4gICAgY29uc3QgY3JlYXRlUGVybWlzc2lvblNldCA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZShcbiAgICAgIHRoaXMsXG4gICAgICBcImNyZWF0ZVBlcm1pc3Npb25TZXRcIixcbiAgICAgIHtcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBgY3JlYXRlUGVybWlzc2lvblNldCR7cHJvcHMubmFtZX1gLFxuICAgICAgICBvbkNyZWF0ZToge1xuICAgICAgICAgIHNlcnZpY2U6IFwic3NvLWFkbWluXCIsXG4gICAgICAgICAgYWN0aW9uOiBcIkNyZWF0ZVBlcm1pc3Npb25TZXRcIiwgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0phdmFTY3JpcHRTREsvdjMvbGF0ZXN0L2NsaWVudC9zc28tYWRtaW4vY29tbWFuZC9DcmVhdGVQZXJtaXNzaW9uU2V0Q29tbWFuZFxuICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgIE5hbWU6IHByb3BzLm5hbWUsXG4gICAgICAgICAgICBJbnN0YW5jZUFybjogcHJvcHMuaW5zdGFuY2VBcm4sXG4gICAgICAgICAgICBEZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBUYWdzOiB0cmFuc2Zvcm1UYWdzKHByb3BzLnRhZ3MpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgICBwZXJtaXNzaW9uU2V0UGh5c2ljYWxJZFxuICAgICAgICAgIClcbiAgICAgICAgfSxcbiAgICAgICAgcG9saWN5OiBjdXN0b21SZXNvdXJjZXMuQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVNka0NhbGxzKHtcbiAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgICAgfSksXG4gICAgICAgIC8vIFRPRE86IExvY2sgZG93biBwZXJtaXNzaW9ucywgd2hlbiB3ZSdyZSByZWFkeSB0byB0cm91Ymxlc2hvb3QgaW50ZXJtaXR0ZW50IHBvbGljeSBlcnJvcnNcbiAgICAgICAgLy8gcm9sZTogcHJvcHMucm9sZSxcbiAgICAgICAgLy8gcG9saWN5OiBjdXN0b21SZXNvdXJjZXMuQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVN0YXRlbWVudHMoW1xuICAgICAgICAvLyAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAvLyAgICAgYWN0aW9uczogW1xuICAgICAgICAvLyAgICAgICBcInNzbzpDcmVhdGVQZXJtaXNzaW9uU2V0XCIsXG4gICAgICAgIC8vICAgICAgIFwic3NvOlByb3Zpc2lvblBlcm1pc3Npb25TZXRcIixcbiAgICAgICAgLy8gICAgICAgXCJzc286VGFnUmVzb3VyY2VcIlxuICAgICAgICAvLyAgICAgXSxcbiAgICAgICAgLy8gICAgIHJlc291cmNlczogW1wiKlwiXVxuICAgICAgICAvLyAgIH0pXG4gICAgICAgIC8vIF0pLFxuICAgICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpQZXJtaXNzaW9uU2V0XCJcbiAgICAgIH1cbiAgICApO1xuXG4gICAgdGhpcy5wZXJtaXNzaW9uU2V0QXJuID0gY3JlYXRlUGVybWlzc2lvblNldC5nZXRSZXNwb25zZUZpZWxkKFxuICAgICAgXCJQZXJtaXNzaW9uU2V0LlBlcm1pc3Npb25TZXRBcm5cIlxuICAgICk7XG5cbiAgICBjb25zdCB1cGRhdGVQZXJtaXNzaW9uU2V0ID0gbmV3IEF3c0N1c3RvbVJlc291cmNlKFxuICAgICAgdGhpcyxcbiAgICAgIFwidXBkYXRlUGVybWlzc2lvblNldFwiLFxuICAgICAge1xuICAgICAgICBmdW5jdGlvbk5hbWU6IGB1cGRhdGVQZXJtaXNzaW9uU2V0JHtwcm9wcy5uYW1lfWAsXG4gICAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgICAgc2VydmljZTogXCJzc28tYWRtaW5cIixcbiAgICAgICAgICBhY3Rpb246IFwiVXBkYXRlUGVybWlzc2lvblNldFwiLCAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy92My9sYXRlc3QvY2xpZW50L3Nzby1hZG1pbi9jb21tYW5kL1VwZGF0ZVBlcm1pc3Npb25TZXRDb21tYW5kXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgSW5zdGFuY2VBcm46IHByb3BzLmluc3RhbmNlQXJuLFxuICAgICAgICAgICAgUGVybWlzc2lvblNldEFybjogdGhpcy5wZXJtaXNzaW9uU2V0QXJuLFxuICAgICAgICAgICAgRGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgICBwZXJtaXNzaW9uU2V0UGh5c2ljYWxJZFxuICAgICAgICAgIClcbiAgICAgICAgfSxcblxuICAgICAgICBwb2xpY3k6IGN1c3RvbVJlc291cmNlcy5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU2RrQ2FsbHMoe1xuICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXVxuICAgICAgICB9KSxcbiAgICAgICAgLy8gVE9ETzogTG9jayBkb3duIHBlcm1pc3Npb25zLCB3aGVuIHdlJ3JlIHJlYWR5IHRvIHRyb3VibGVzaG9vdCBpbnRlcm1pdHRlbnQgcG9saWN5IGVycm9yc1xuICAgICAgICAvLyByb2xlOiBwcm9wcy5yb2xlLFxuICAgICAgICAvLyBwb2xpY3k6IGN1c3RvbVJlc291cmNlcy5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU3RhdGVtZW50cyhbXG4gICAgICAgIC8vICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIC8vICAgICBhY3Rpb25zOiBbXG4gICAgICAgIC8vICAgICAgIFwic3NvOlVwZGF0ZVBlcm1pc3Npb25TZXRcIixcbiAgICAgICAgLy8gICAgICAgXCJzc286UHJvdmlzaW9uUGVybWlzc2lvblNldFwiLFxuICAgICAgICAvLyAgICAgICBcInNzbzpUYWdSZXNvdXJjZVwiXG4gICAgICAgIC8vICAgICBdLFxuICAgICAgICAvLyAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgIC8vICAgfSlcbiAgICAgICAgLy8gXSksXG4gICAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OlBlcm1pc3Npb25TZXRcIlxuICAgICAgfVxuICAgICk7XG4gICAgdXBkYXRlUGVybWlzc2lvblNldC5ub2RlLmFkZERlcGVuZGVuY3koY3JlYXRlUGVybWlzc2lvblNldCk7XG5cbiAgICBjb25zdCBkZWxldGVQZXJtaXNzaW9uU2V0ID0gbmV3IEF3c0N1c3RvbVJlc291cmNlKFxuICAgICAgdGhpcyxcbiAgICAgIFwiZGVsZXRlUGVybWlzc2lvblNldFwiLFxuICAgICAge1xuICAgICAgICBmdW5jdGlvbk5hbWU6IGBkZWxldGVQZXJtaXNzaW9uU2V0JHtwcm9wcy5uYW1lfWAsXG4gICAgICAgIG9uRGVsZXRlOiB7XG4gICAgICAgICAgc2VydmljZTogXCJzc28tYWRtaW5cIixcbiAgICAgICAgICBhY3Rpb246IFwiRGVsZXRlUGVybWlzc2lvblNldFwiLCAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy92My9sYXRlc3QvY2xpZW50L3Nzby1hZG1pbi9jb21tYW5kL0RlbGV0ZVBlcm1pc3Npb25TZXRDb21tYW5kXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgSW5zdGFuY2VBcm46IHByb3BzLmluc3RhbmNlQXJuLFxuICAgICAgICAgICAgUGVybWlzc2lvblNldEFybjogdGhpcy5wZXJtaXNzaW9uU2V0QXJuXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBwb2xpY3k6IGN1c3RvbVJlc291cmNlcy5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU2RrQ2FsbHMoe1xuICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXVxuICAgICAgICB9KSxcbiAgICAgICAgLy8gVE9ETzogTG9jayBkb3duIHBlcm1pc3Npb25zLCB3aGVuIHdlJ3JlIHJlYWR5IHRvIHRyb3VibGVzaG9vdCBpbnRlcm1pdHRlbnQgcG9saWN5IGVycm9yc1xuICAgICAgICAvLyByb2xlOiBwcm9wcy5yb2xlLFxuICAgICAgICAvLyBwb2xpY3k6IGN1c3RvbVJlc291cmNlcy5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU3RhdGVtZW50cyhbXG4gICAgICAgIC8vICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIC8vICAgICBhY3Rpb25zOiBbXG4gICAgICAgIC8vICAgICAgIFwic3NvOlVwZGF0ZVBlcm1pc3Npb25TZXRcIixcbiAgICAgICAgLy8gICAgICAgXCJzc286RGVsZXRlUGVybWlzc2lvblNldFwiLFxuICAgICAgICAvLyAgICAgICBcInNzbzpUYWdSZXNvdXJjZVwiXG4gICAgICAgIC8vICAgICBdLFxuICAgICAgICAvLyAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgIC8vICAgfSlcbiAgICAgICAgLy8gXSksXG4gICAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OlBlcm1pc3Npb25TZXRcIlxuICAgICAgfVxuICAgICk7XG4gICAgZGVsZXRlUGVybWlzc2lvblNldC5ub2RlLmFkZERlcGVuZGVuY3koY3JlYXRlUGVybWlzc2lvblNldCk7XG4gIH1cbiAgcHVibGljIGdldFBlcm1pc3Npb25TZXRBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wZXJtaXNzaW9uU2V0QXJuO1xuICB9XG59XG4iXX0=
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvblNldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL2lhbS9pZGVudGl0eUNlbnRlci9wZXJtaXNzaW9uU2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF1QztBQUN2QyxnRUFBZ0U7QUFDaEUseUVBQXNFO0FBSXRFLFNBQVMsYUFBYSxDQUFDLElBQWlCO0lBQ3RDLE9BQU8sSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3JFLENBQUM7QUFFRCxNQUFhLGFBQWMsU0FBUSxzQkFBUztJQUcxQyxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQU9DO1FBRUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLHVCQUF1QixHQUFHLGdCQUFnQixLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFN0QsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLHFDQUFpQixDQUMvQyxJQUFJLEVBQ0oscUJBQXFCLEVBQ3JCO1lBQ0UsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxXQUFXO2dCQUNwQixNQUFNLEVBQUUscUJBQXFCLEVBQUUsNkdBQTZHO2dCQUM1SSxVQUFVLEVBQUU7b0JBQ1YsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO29CQUNoQixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7b0JBQzlCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztvQkFDOUIsSUFBSSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2lCQUNoQztnQkFDRCxrQkFBa0IsRUFBRSxlQUFlLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUN2RCx1QkFBdUIsQ0FDeEI7YUFDRjtZQUNELE1BQU0sRUFBRSxlQUFlLENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDO2dCQUMzRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7YUFDakIsQ0FBQztZQUNGLDJGQUEyRjtZQUMzRixvQkFBb0I7WUFDcEIsbUVBQW1FO1lBQ25FLDBCQUEwQjtZQUMxQixpQkFBaUI7WUFDakIsbUNBQW1DO1lBQ25DLHNDQUFzQztZQUN0QywwQkFBMEI7WUFDMUIsU0FBUztZQUNULHVCQUF1QjtZQUN2QixPQUFPO1lBQ1AsTUFBTTtZQUNOLFlBQVksRUFBRSx1QkFBdUI7U0FDdEMsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDLGdCQUFnQixDQUMxRCxnQ0FBZ0MsQ0FDakMsQ0FBQztRQUVGLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxxQ0FBaUIsQ0FDL0MsSUFBSSxFQUNKLHFCQUFxQixFQUNyQjtZQUNFLFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsV0FBVztnQkFDcEIsTUFBTSxFQUFFLHFCQUFxQixFQUFFLDZHQUE2RztnQkFDNUksVUFBVSxFQUFFO29CQUNWLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztvQkFDOUIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtvQkFDdkMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO2lCQUMvQjtnQkFDRCxrQkFBa0IsRUFBRSxlQUFlLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUN2RCx1QkFBdUIsQ0FDeEI7YUFDRjtZQUVELE1BQU0sRUFBRSxlQUFlLENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDO2dCQUMzRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7YUFDakIsQ0FBQztZQUNGLDJGQUEyRjtZQUMzRixvQkFBb0I7WUFDcEIsbUVBQW1FO1lBQ25FLDBCQUEwQjtZQUMxQixpQkFBaUI7WUFDakIsbUNBQW1DO1lBQ25DLHNDQUFzQztZQUN0QywwQkFBMEI7WUFDMUIsU0FBUztZQUNULHVCQUF1QjtZQUN2QixPQUFPO1lBQ1AsTUFBTTtZQUNOLFlBQVksRUFBRSx1QkFBdUI7U0FDdEMsQ0FDRixDQUFDO1FBQ0YsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRTVELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxxQ0FBaUIsQ0FDL0MsSUFBSSxFQUNKLHFCQUFxQixFQUNyQjtZQUNFLFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsV0FBVztnQkFDcEIsTUFBTSxFQUFFLHFCQUFxQixFQUFFLDZHQUE2RztnQkFDNUksVUFBVSxFQUFFO29CQUNWLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztvQkFDOUIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtpQkFDeEM7YUFDRjtZQUNELE1BQU0sRUFBRSxlQUFlLENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDO2dCQUMzRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7YUFDakIsQ0FBQztZQUNGLDJGQUEyRjtZQUMzRixvQkFBb0I7WUFDcEIsbUVBQW1FO1lBQ25FLDBCQUEwQjtZQUMxQixpQkFBaUI7WUFDakIsbUNBQW1DO1lBQ25DLG1DQUFtQztZQUNuQywwQkFBMEI7WUFDMUIsU0FBUztZQUNULHVCQUF1QjtZQUN2QixPQUFPO1lBQ1AsTUFBTTtZQUNOLFlBQVksRUFBRSx1QkFBdUI7U0FDdEMsQ0FDRixDQUFDO1FBQ0YsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFDTSxtQkFBbUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBbklELHNDQW1JQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgKiBhcyBjdXN0b21SZXNvdXJjZXMgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIjtcbmltcG9ydCB7IEF3c0N1c3RvbVJlc291cmNlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9hd3NDdXN0b21SZXNvdXJjZVwiO1xuaW1wb3J0IHsgdHlwZSBLZXlWYWx1ZSB9IGZyb20gXCIuLi8uLi8uLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBSb2xlIH0gZnJvbSBcIi4uXCI7XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVRhZ3ModGFncz86IEtleVZhbHVlW10pIHtcbiAgcmV0dXJuIHRhZ3M/Lm1hcCgoeyBrZXksIHZhbHVlIH0pID0+ICh7IEtleToga2V5LCBWYWx1ZTogdmFsdWUgfSkpO1xufVxuXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvblNldCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHByaXZhdGUgcGVybWlzc2lvblNldEFybjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczoge1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgaW5zdGFuY2VBcm46IHN0cmluZztcbiAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgICAgcm9sZTogUm9sZTtcbiAgICAgIG1hbmFnZWRQb2xpY2llcz86IHN0cmluZ1tdO1xuICAgICAgdGFncz86IEtleVZhbHVlW107XG4gICAgfVxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgcGVybWlzc2lvblNldFBoeXNpY2FsSWQgPSBgcGVybWlzc2lvblNldCR7cHJvcHMubmFtZX1gO1xuXG4gICAgY29uc3QgY3JlYXRlUGVybWlzc2lvblNldCA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZShcbiAgICAgIHRoaXMsXG4gICAgICBcImNyZWF0ZVBlcm1pc3Npb25TZXRcIixcbiAgICAgIHtcbiAgICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgICBzZXJ2aWNlOiBcInNzby1hZG1pblwiLFxuICAgICAgICAgIGFjdGlvbjogXCJDcmVhdGVQZXJtaXNzaW9uU2V0XCIsIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL3YzL2xhdGVzdC9jbGllbnQvc3NvLWFkbWluL2NvbW1hbmQvQ3JlYXRlUGVybWlzc2lvblNldENvbW1hbmRcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBOYW1lOiBwcm9wcy5uYW1lLFxuICAgICAgICAgICAgSW5zdGFuY2VBcm46IHByb3BzLmluc3RhbmNlQXJuLFxuICAgICAgICAgICAgRGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgVGFnczogdHJhbnNmb3JtVGFncyhwcm9wcy50YWdzKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFxuICAgICAgICAgICAgcGVybWlzc2lvblNldFBoeXNpY2FsSWRcbiAgICAgICAgICApXG4gICAgICAgIH0sXG4gICAgICAgIHBvbGljeTogY3VzdG9tUmVzb3VyY2VzLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TZGtDYWxscyh7XG4gICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgIH0pLFxuICAgICAgICAvLyBUT0RPOiBMb2NrIGRvd24gcGVybWlzc2lvbnMsIHdoZW4gd2UncmUgcmVhZHkgdG8gdHJvdWJsZXNob290IGludGVybWl0dGVudCBwb2xpY3kgZXJyb3JzXG4gICAgICAgIC8vIHJvbGU6IHByb3BzLnJvbGUsXG4gICAgICAgIC8vIHBvbGljeTogY3VzdG9tUmVzb3VyY2VzLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TdGF0ZW1lbnRzKFtcbiAgICAgICAgLy8gICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgLy8gICAgIGFjdGlvbnM6IFtcbiAgICAgICAgLy8gICAgICAgXCJzc286Q3JlYXRlUGVybWlzc2lvblNldFwiLFxuICAgICAgICAvLyAgICAgICBcInNzbzpQcm92aXNpb25QZXJtaXNzaW9uU2V0XCIsXG4gICAgICAgIC8vICAgICAgIFwic3NvOlRhZ1Jlc291cmNlXCJcbiAgICAgICAgLy8gICAgIF0sXG4gICAgICAgIC8vICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgICAgLy8gICB9KVxuICAgICAgICAvLyBdKSxcbiAgICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6UGVybWlzc2lvblNldFwiXG4gICAgICB9XG4gICAgKTtcblxuICAgIHRoaXMucGVybWlzc2lvblNldEFybiA9IGNyZWF0ZVBlcm1pc3Npb25TZXQuZ2V0UmVzcG9uc2VGaWVsZChcbiAgICAgIFwiUGVybWlzc2lvblNldC5QZXJtaXNzaW9uU2V0QXJuXCJcbiAgICApO1xuXG4gICAgY29uc3QgdXBkYXRlUGVybWlzc2lvblNldCA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZShcbiAgICAgIHRoaXMsXG4gICAgICBcInVwZGF0ZVBlcm1pc3Npb25TZXRcIixcbiAgICAgIHtcbiAgICAgICAgb25VcGRhdGU6IHtcbiAgICAgICAgICBzZXJ2aWNlOiBcInNzby1hZG1pblwiLFxuICAgICAgICAgIGFjdGlvbjogXCJVcGRhdGVQZXJtaXNzaW9uU2V0XCIsIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL3YzL2xhdGVzdC9jbGllbnQvc3NvLWFkbWluL2NvbW1hbmQvVXBkYXRlUGVybWlzc2lvblNldENvbW1hbmRcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBJbnN0YW5jZUFybjogcHJvcHMuaW5zdGFuY2VBcm4sXG4gICAgICAgICAgICBQZXJtaXNzaW9uU2V0QXJuOiB0aGlzLnBlcm1pc3Npb25TZXRBcm4sXG4gICAgICAgICAgICBEZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb25cbiAgICAgICAgICB9LFxuICAgICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICAgIHBlcm1pc3Npb25TZXRQaHlzaWNhbElkXG4gICAgICAgICAgKVxuICAgICAgICB9LFxuXG4gICAgICAgIHBvbGljeTogY3VzdG9tUmVzb3VyY2VzLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TZGtDYWxscyh7XG4gICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgIH0pLFxuICAgICAgICAvLyBUT0RPOiBMb2NrIGRvd24gcGVybWlzc2lvbnMsIHdoZW4gd2UncmUgcmVhZHkgdG8gdHJvdWJsZXNob290IGludGVybWl0dGVudCBwb2xpY3kgZXJyb3JzXG4gICAgICAgIC8vIHJvbGU6IHByb3BzLnJvbGUsXG4gICAgICAgIC8vIHBvbGljeTogY3VzdG9tUmVzb3VyY2VzLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TdGF0ZW1lbnRzKFtcbiAgICAgICAgLy8gICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgLy8gICAgIGFjdGlvbnM6IFtcbiAgICAgICAgLy8gICAgICAgXCJzc286VXBkYXRlUGVybWlzc2lvblNldFwiLFxuICAgICAgICAvLyAgICAgICBcInNzbzpQcm92aXNpb25QZXJtaXNzaW9uU2V0XCIsXG4gICAgICAgIC8vICAgICAgIFwic3NvOlRhZ1Jlc291cmNlXCJcbiAgICAgICAgLy8gICAgIF0sXG4gICAgICAgIC8vICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgICAgLy8gICB9KVxuICAgICAgICAvLyBdKSxcbiAgICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6UGVybWlzc2lvblNldFwiXG4gICAgICB9XG4gICAgKTtcbiAgICB1cGRhdGVQZXJtaXNzaW9uU2V0Lm5vZGUuYWRkRGVwZW5kZW5jeShjcmVhdGVQZXJtaXNzaW9uU2V0KTtcblxuICAgIGNvbnN0IGRlbGV0ZVBlcm1pc3Npb25TZXQgPSBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UoXG4gICAgICB0aGlzLFxuICAgICAgXCJkZWxldGVQZXJtaXNzaW9uU2V0XCIsXG4gICAgICB7XG4gICAgICAgIG9uRGVsZXRlOiB7XG4gICAgICAgICAgc2VydmljZTogXCJzc28tYWRtaW5cIixcbiAgICAgICAgICBhY3Rpb246IFwiRGVsZXRlUGVybWlzc2lvblNldFwiLCAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy92My9sYXRlc3QvY2xpZW50L3Nzby1hZG1pbi9jb21tYW5kL0RlbGV0ZVBlcm1pc3Npb25TZXRDb21tYW5kXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgSW5zdGFuY2VBcm46IHByb3BzLmluc3RhbmNlQXJuLFxuICAgICAgICAgICAgUGVybWlzc2lvblNldEFybjogdGhpcy5wZXJtaXNzaW9uU2V0QXJuXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBwb2xpY3k6IGN1c3RvbVJlc291cmNlcy5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU2RrQ2FsbHMoe1xuICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXVxuICAgICAgICB9KSxcbiAgICAgICAgLy8gVE9ETzogTG9jayBkb3duIHBlcm1pc3Npb25zLCB3aGVuIHdlJ3JlIHJlYWR5IHRvIHRyb3VibGVzaG9vdCBpbnRlcm1pdHRlbnQgcG9saWN5IGVycm9yc1xuICAgICAgICAvLyByb2xlOiBwcm9wcy5yb2xlLFxuICAgICAgICAvLyBwb2xpY3k6IGN1c3RvbVJlc291cmNlcy5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU3RhdGVtZW50cyhbXG4gICAgICAgIC8vICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIC8vICAgICBhY3Rpb25zOiBbXG4gICAgICAgIC8vICAgICAgIFwic3NvOlVwZGF0ZVBlcm1pc3Npb25TZXRcIixcbiAgICAgICAgLy8gICAgICAgXCJzc286RGVsZXRlUGVybWlzc2lvblNldFwiLFxuICAgICAgICAvLyAgICAgICBcInNzbzpUYWdSZXNvdXJjZVwiXG4gICAgICAgIC8vICAgICBdLFxuICAgICAgICAvLyAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgIC8vICAgfSlcbiAgICAgICAgLy8gXSksXG4gICAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OlBlcm1pc3Npb25TZXRcIlxuICAgICAgfVxuICAgICk7XG4gICAgZGVsZXRlUGVybWlzc2lvblNldC5ub2RlLmFkZERlcGVuZGVuY3koY3JlYXRlUGVybWlzc2lvblNldCk7XG4gIH1cbiAgcHVibGljIGdldFBlcm1pc3Npb25TZXRBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wZXJtaXNzaW9uU2V0QXJuO1xuICB9XG59XG4iXX0=
|
|
@@ -21,4 +21,5 @@ __exportStar(require("./backup"), exports);
|
|
|
21
21
|
__exportStar(require("./monitoring"), exports);
|
|
22
22
|
__exportStar(require("./cdn"), exports);
|
|
23
23
|
__exportStar(require("./messaging"), exports);
|
|
24
|
-
|
|
24
|
+
__exportStar(require("./organisation"), exports);
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQTZCO0FBQzdCLDRDQUEwQjtBQUMxQix5Q0FBdUI7QUFDdkIsMkNBQXlCO0FBQ3pCLCtDQUE2QjtBQUM3Qix3Q0FBc0I7QUFDdEIsOENBQTRCO0FBQzVCLGlEQUErQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL25ldHdvcmtpbmdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3N0b3JhZ2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Jhc2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2JhY2t1cFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbW9uaXRvcmluZ1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY2RuXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tZXNzYWdpbmdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL29yZ2FuaXNhdGlvblwiO1xuIl19
|
|
@@ -14,14 +14,17 @@ class Trail extends constructs_1.Construct {
|
|
|
14
14
|
const encryptionKey = new secrets_1.CustomerManagedKey(this, `${id}CloudTrailEncryptionKey`, {
|
|
15
15
|
aliasName: `cmk/cloudtrail/${id}/encryptionKey`
|
|
16
16
|
});
|
|
17
|
-
this.bucket = new storage_1.S3Bucket(this, `${id}
|
|
17
|
+
this.bucket = new storage_1.S3Bucket(this, `${id}CloudTrailBucket`, {
|
|
18
18
|
bucketName: props.bucketName,
|
|
19
19
|
bucketKeyEnabled: true,
|
|
20
20
|
encryption: aws_s3_1.BucketEncryption.KMS,
|
|
21
|
-
encryptionKey: encryptionKey.key
|
|
21
|
+
encryptionKey: encryptionKey.key,
|
|
22
|
+
versioned: false,
|
|
23
|
+
removalPolicy: aws_cdk_lib_1.RemovalPolicy.RETAIN,
|
|
24
|
+
lifecycleRules: [{ expiration: aws_cdk_lib_1.Duration.days(365), enabled: true }]
|
|
22
25
|
});
|
|
23
26
|
this.bucket.grantReadWrite(new aws_iam_1.ServicePrincipal("cloudtrail.amazonaws.com"));
|
|
24
|
-
this.trail = new CloudTrail.Trail(this, `${id}
|
|
27
|
+
this.trail = new CloudTrail.Trail(this, `${id}CloudTrail`, {
|
|
25
28
|
...props,
|
|
26
29
|
bucket: this.bucket,
|
|
27
30
|
trailName: props.trailName || `${id}Trail`,
|
|
@@ -39,4 +42,4 @@ class TrailStack extends aws_cdk_lib_1.Stack {
|
|
|
39
42
|
}
|
|
40
43
|
}
|
|
41
44
|
exports.TrailStack = TrailStack;
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRUcmFpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL2xvZ2dpbmcvY2xvdWRUcmFpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBNkQ7QUFDN0QseURBQXlEO0FBQ3pELDJDQUF1QztBQUN2Qyx3Q0FBZ0Q7QUFDaEQsd0NBQXNDO0FBQ3RDLCtDQUFzRDtBQUN0RCxpREFBdUQ7QUFNdkQsTUFBYSxLQUFNLFNBQVEsc0JBQVM7SUFJbEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sYUFBYSxHQUFHLElBQUksNEJBQWtCLENBQzFDLElBQUksRUFDSixHQUFHLEVBQUUseUJBQXlCLEVBQzlCO1lBQ0UsU0FBUyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQjtTQUNoRCxDQUNGLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksa0JBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLGtCQUFrQixFQUFFO1lBQ3hELFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtZQUM1QixnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLFVBQVUsRUFBRSx5QkFBZ0IsQ0FBQyxHQUFHO1lBQ2hDLGFBQWEsRUFBRSxhQUFhLENBQUMsR0FBRztZQUNoQyxTQUFTLEVBQUUsS0FBSztZQUNoQixhQUFhLEVBQUUsMkJBQWEsQ0FBQyxNQUFNO1lBQ25DLGNBQWMsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLHNCQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUNwRSxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FDeEIsSUFBSSwwQkFBZ0IsQ0FBQywwQkFBMEIsQ0FBQyxDQUNqRCxDQUFDO1FBRUYsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUU7WUFDekQsR0FBRyxLQUFLO1lBQ1IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxJQUFJLEdBQUcsRUFBRSxPQUFPO1lBQzFDLGFBQWEsRUFBRSxhQUFhLENBQUMsR0FBRztTQUNqQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFuQ0Qsc0JBbUNDO0FBRUQsTUFBYSxVQUFXLFNBQVEsbUJBQUs7SUFDbkMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDbEIsR0FBRyxLQUFLO1NBQ1QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBUkQsZ0NBUUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeSwgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIENsb3VkVHJhaWwgZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZHRyYWlsXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQ3VzdG9tZXJNYW5hZ2VkS2V5IH0gZnJvbSBcIi4uL3NlY3JldHNcIjtcbmltcG9ydCB7IFMzQnVja2V0IH0gZnJvbSBcIi4uL3N0b3JhZ2VcIjtcbmltcG9ydCB7IEJ1Y2tldEVuY3J5cHRpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQgeyBTZXJ2aWNlUHJpbmNpcGFsIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcblxuaW50ZXJmYWNlIENsb3VkVHJhaWxQcm9wcyBleHRlbmRzIENsb3VkVHJhaWwuVHJhaWxQcm9wcyB7XG4gIGJ1Y2tldE5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFRyYWlsIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IHRyYWlsOiBDbG91ZFRyYWlsLlRyYWlsO1xuICBwdWJsaWMgcmVhZG9ubHkgYnVja2V0OiBTM0J1Y2tldDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ2xvdWRUcmFpbFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGVuY3J5cHRpb25LZXkgPSBuZXcgQ3VzdG9tZXJNYW5hZ2VkS2V5KFxuICAgICAgdGhpcyxcbiAgICAgIGAke2lkfUNsb3VkVHJhaWxFbmNyeXB0aW9uS2V5YCxcbiAgICAgIHtcbiAgICAgICAgYWxpYXNOYW1lOiBgY21rL2Nsb3VkdHJhaWwvJHtpZH0vZW5jcnlwdGlvbktleWBcbiAgICAgIH1cbiAgICApO1xuXG4gICAgdGhpcy5idWNrZXQgPSBuZXcgUzNCdWNrZXQodGhpcywgYCR7aWR9Q2xvdWRUcmFpbEJ1Y2tldGAsIHtcbiAgICAgIGJ1Y2tldE5hbWU6IHByb3BzLmJ1Y2tldE5hbWUsXG4gICAgICBidWNrZXRLZXlFbmFibGVkOiB0cnVlLFxuICAgICAgZW5jcnlwdGlvbjogQnVja2V0RW5jcnlwdGlvbi5LTVMsXG4gICAgICBlbmNyeXB0aW9uS2V5OiBlbmNyeXB0aW9uS2V5LmtleSxcbiAgICAgIHZlcnNpb25lZDogZmFsc2UsXG4gICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LlJFVEFJTixcbiAgICAgIGxpZmVjeWNsZVJ1bGVzOiBbeyBleHBpcmF0aW9uOiBEdXJhdGlvbi5kYXlzKDM2NSksIGVuYWJsZWQ6IHRydWUgfV1cbiAgICB9KTtcbiAgICB0aGlzLmJ1Y2tldC5ncmFudFJlYWRXcml0ZShcbiAgICAgIG5ldyBTZXJ2aWNlUHJpbmNpcGFsKFwiY2xvdWR0cmFpbC5hbWF6b25hd3MuY29tXCIpXG4gICAgKTtcblxuICAgIHRoaXMudHJhaWwgPSBuZXcgQ2xvdWRUcmFpbC5UcmFpbCh0aGlzLCBgJHtpZH1DbG91ZFRyYWlsYCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBidWNrZXQ6IHRoaXMuYnVja2V0LFxuICAgICAgdHJhaWxOYW1lOiBwcm9wcy50cmFpbE5hbWUgfHwgYCR7aWR9VHJhaWxgLFxuICAgICAgZW5jcnlwdGlvbktleTogZW5jcnlwdGlvbktleS5rZXlcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHJhaWxTdGFjayBleHRlbmRzIFN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENsb3VkVHJhaWxQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBuZXcgVHJhaWwodGhpcywgaWQsIHtcbiAgICAgIC4uLnByb3BzXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -81,8 +81,14 @@ class IpamPool extends constructs_1.Construct {
|
|
|
81
81
|
ipamPoolId: regionalPool.attrIpamPoolId,
|
|
82
82
|
netmaskLength: 10 // Each region gets a /10 (4,194,304 IPs)
|
|
83
83
|
});
|
|
84
|
-
// Create account pools under each regional pool
|
|
85
|
-
|
|
84
|
+
// Create account pools under each regional pool.
|
|
85
|
+
// IPAM enforces a low concurrent-mutation limit (not publicly documented).
|
|
86
|
+
// Batch account pools so each batch depends on the previous batch
|
|
87
|
+
// completing, limiting concurrent IPAM pool mutations.
|
|
88
|
+
const IPAM_CONCURRENCY_LIMIT = 2;
|
|
89
|
+
const batches = [];
|
|
90
|
+
for (let i = 0; i < organisationAccounts.length; i++) {
|
|
91
|
+
const account = organisationAccounts[i];
|
|
86
92
|
const accountId = (0, getAccountId_1.default)(account);
|
|
87
93
|
const ipamPool = new aws_ec2_1.CfnIPAMPool(this, `${account}IpamPool${regionSuffix}`, {
|
|
88
94
|
description: `${account} - IPAM pool - ${region}`,
|
|
@@ -111,6 +117,18 @@ class IpamPool extends constructs_1.Construct {
|
|
|
111
117
|
});
|
|
112
118
|
// Ensure the account pool is created after the regional CIDR allocation
|
|
113
119
|
ipamPool.node.addDependency(regionalCidrAllocation);
|
|
120
|
+
// Each batch of IPAM_CONCURRENCY_LIMIT pools depends on ALL pools
|
|
121
|
+
// from the previous batch, so the next batch only starts once the
|
|
122
|
+
// entire previous batch has completed.
|
|
123
|
+
const batchIndex = Math.floor(i / IPAM_CONCURRENCY_LIMIT);
|
|
124
|
+
if (batchIndex > 0) {
|
|
125
|
+
for (const previousPool of batches[batchIndex - 1]) {
|
|
126
|
+
ipamPool.node.addDependency(previousPool);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if (!batches[batchIndex])
|
|
130
|
+
batches[batchIndex] = [];
|
|
131
|
+
batches[batchIndex].push(ipamPool);
|
|
114
132
|
const cidrAllocation = new aws_ec2_1.CfnIPAMPoolCidr(this, `${account}PoolCidr${provisionedNetmaskLength}${regionSuffix}`, {
|
|
115
133
|
ipamPoolId: ipamPool.attrIpamPoolId,
|
|
116
134
|
netmaskLength: provisionedNetmaskLength
|
|
@@ -156,4 +174,4 @@ class IpamPoolStack extends aws_cdk_lib_1.Stack {
|
|
|
156
174
|
}
|
|
157
175
|
}
|
|
158
176
|
exports.IpamPoolStack = IpamPoolStack;
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbVBvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9uZXR3b3JraW5nL2lwYW1Qb29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvRTtBQUNwRSwyQ0FBdUM7QUFDdkMsaURBRzZCO0FBQzdCLDhEQUEyRDtBQUMzRCw4REFBdUQ7QUFDdkQsc0VBQThEO0FBeUI5RCxNQUFhLFFBQVMsU0FBUSxzQkFBUztJQUNyQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW9CO1FBQzVELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsMERBQTBEO1FBQzFELE1BQU0seUJBQXlCLEdBQzdCLEtBQUssQ0FBQyxTQUFTLElBQUksZ0JBQUUsQ0FBQyxXQUFXLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUVqRSxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzlCLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7UUFDMUUsQ0FBQztRQUVELE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUM3RCxPQUFPLENBQUMsV0FBVyxFQUFFLENBQ3RCLENBQUM7UUFFRix1REFBdUQ7UUFDdkQsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLENBQUMsOEJBQThCLElBQUksRUFBRSxDQUFDO1FBQ3hFLE1BQU0sd0JBQXdCLEdBQUcsS0FBSyxDQUFDLHdCQUF3QixJQUFJLEVBQUUsQ0FBQztRQUV0RSxrRkFBa0Y7UUFDbEYsSUFBSSxvQkFBb0IsR0FBRyxFQUFFLElBQUksb0JBQW9CLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDM0QsTUFBTSxJQUFJLEtBQUssQ0FDYixtRkFBbUYsb0JBQW9CLEVBQUUsQ0FDMUcsQ0FBQztRQUNKLENBQUM7UUFFRCwrQ0FBK0M7UUFDL0MsSUFBSSx3QkFBd0IsR0FBRyxFQUFFLElBQUksd0JBQXdCLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDbkUsTUFBTSxJQUFJLEtBQUssQ0FDYiw2RUFBNkUsd0JBQXdCLEVBQUUsQ0FDeEcsQ0FBQztRQUNKLENBQUM7UUFFRCx5RUFBeUU7UUFDekUsSUFBSSxvQkFBb0IsR0FBRyx3QkFBd0IsRUFBRSxDQUFDO1lBQ3BELDhCQUFXLENBQUMsSUFBSSxDQUNkLHNDQUFzQyxvQkFBb0IsaURBQWlELHdCQUF3QixLQUFLO2dCQUN0SSxpRUFBaUUsQ0FDcEUsQ0FBQztRQUNKLENBQUM7UUFFRCxpQkFBaUI7UUFDakIsTUFBTSxRQUFRLEdBQUcsSUFBSSxxQkFBYSxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtZQUMzRCxXQUFXLEVBQUUseUJBQXlCO1lBQ3RDLGFBQWEsRUFBRSxNQUFNO1lBQ3JCLFdBQVcsRUFBRSx5QkFBeUI7WUFDdEMsZ0JBQWdCLEVBQUU7Z0JBQ2hCLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRTtnQkFDdEIsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFO2dCQUN6QixFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTthQUMzQjtZQUNELFVBQVUsRUFBRSxJQUFJO1lBQ2hCLElBQUksRUFBRTtnQkFDSjtvQkFDRSxHQUFHLEVBQUUsdUJBQXVCO29CQUM1QixLQUFLLEVBQUUsV0FBVztpQkFDbkI7Z0JBQ0Q7b0JBQ0UsR0FBRyxFQUFFLGtDQUFrQztvQkFDdkMsS0FBSyxFQUFFLFlBQVk7aUJBQ3BCO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFFSCxxREFBcUQ7UUFDckQsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUM3QixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUU5QyxrREFBa0Q7WUFDbEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxxQkFBYSxDQUNwQyxJQUFJLEVBQ0osZUFBZSxZQUFZLEVBQUUsRUFDN0I7Z0JBQ0UsV0FBVyxFQUFFLHdCQUF3QixNQUFNLEVBQUU7Z0JBQzdDLGFBQWEsRUFBRSxNQUFNO2dCQUNyQixXQUFXLEVBQUUseUJBQXlCO2dCQUN0QyxNQUFNLEVBQUUsTUFBTTtnQkFDZCxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsY0FBYztnQkFDekMsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLElBQUksRUFBRTtvQkFDSjt3QkFDRSxHQUFHLEVBQUUsdUJBQXVCO3dCQUM1QixLQUFLLEVBQUUsWUFBWSxNQUFNLEVBQUU7cUJBQzVCO29CQUNEO3dCQUNFLEdBQUcsRUFBRSxrQ0FBa0M7d0JBQ3ZDLEtBQUssRUFBRSxZQUFZO3FCQUNwQjtpQkFDRjthQUNGLENBQ0YsQ0FBQztZQUVGLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSx5QkFBZSxDQUNoRCxJQUFJLEVBQ0osbUJBQW1CLFlBQVksRUFBRSxFQUNqQztnQkFDRSxVQUFVLEVBQUUsWUFBWSxDQUFDLGNBQWM7Z0JBQ3ZDLGFBQWEsRUFBRSxFQUFFLENBQUMseUNBQXlDO2FBQzVELENBQ0YsQ0FBQztZQUVGLGdEQUFnRDtZQUNoRCxLQUFLLE1BQU0sT0FBTyxJQUFJLG9CQUFvQixFQUFFLENBQUM7Z0JBQzNDLE1BQU0sU0FBUyxHQUFHLElBQUEsc0JBQVksRUFBQyxPQUFPLENBQUMsQ0FBQztnQkFFeEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxxQkFBYSxDQUNoQyxJQUFJLEVBQ0osR0FBRyxPQUFPLFdBQVcsWUFBWSxFQUFFLEVBQ25DO29CQUNFLFdBQVcsRUFBRSxHQUFHLE9BQU8sa0JBQWtCLE1BQU0sRUFBRTtvQkFDakQsYUFBYSxFQUFFLE1BQU07b0JBQ3JCLFdBQVcsRUFBRSx5QkFBeUI7b0JBQ3RDLE1BQU0sRUFBRSxNQUFNO29CQUNkLGdCQUFnQixFQUFFLFlBQVksQ0FBQyxjQUFjO29CQUM3Qyw4QkFBOEIsRUFBRSxvQkFBb0I7b0JBQ3BELHNCQUFzQixFQUFFO3dCQUN0Qjs0QkFDRSxHQUFHLEVBQUUsdUJBQXVCOzRCQUM1QixLQUFLLEVBQUUsR0FBRyxTQUFTLElBQUksTUFBTSxFQUFFO3lCQUNoQztxQkFDRjtvQkFDRCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNKOzRCQUNFLEdBQUcsRUFBRSx1QkFBdUI7NEJBQzVCLEtBQUssRUFBRSxHQUFHLFNBQVMsSUFBSSxNQUFNLEVBQUU7eUJBQ2hDO3dCQUNEOzRCQUNFLEdBQUcsRUFBRSxrQ0FBa0M7NEJBQ3ZDLEtBQUssRUFBRSxPQUFPO3lCQUNmO3FCQUNGO2lCQUNGLENBQ0YsQ0FBQztnQkFFRix3RUFBd0U7Z0JBQ3hFLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLENBQUM7Z0JBRXBELE1BQU0sY0FBYyxHQUFHLElBQUkseUJBQWUsQ0FDeEMsSUFBSSxFQUNKLEdBQUcsT0FBTyxXQUFXLHdCQUF3QixHQUFHLFlBQVksRUFBRSxFQUM5RDtvQkFDRSxVQUFVLEVBQUUsUUFBUSxDQUFDLGNBQWM7b0JBQ25DLGFBQWEsRUFBRSx3QkFBd0I7aUJBQ3hDLENBQ0YsQ0FBQztnQkFFRixtRUFBbUU7Z0JBQ25FLE1BQU0sS0FBSyxHQUFHLElBQUksNkJBQWEsQ0FDN0IsSUFBSSxFQUNKLEdBQUcsT0FBTyxvQkFBb0IsWUFBWSxFQUFFLEVBQzVDO29CQUNFLElBQUksRUFBRSxHQUFHLE9BQU8scUJBQXFCLE1BQU0sRUFBRTtvQkFDN0MsdUJBQXVCLEVBQUUsS0FBSztvQkFDOUIsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDO29CQUN2QixZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO29CQUNoQyxJQUFJLEVBQUU7d0JBQ0o7NEJBQ0UsR0FBRyxFQUFFLGtDQUFrQzs0QkFDdkMsS0FBSyxFQUFFLFlBQVk7eUJBQ3BCO3FCQUNGO2lCQUNGLENBQ0YsQ0FBQztnQkFFRixpRUFBaUU7Z0JBQ2pFLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUV6QyxrRUFBa0U7Z0JBQ2xFLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsYUFBYSxTQUFTLEdBQUcsWUFBWSxFQUFFLEVBQUU7b0JBQzNELEdBQUcsRUFBRSxhQUFhLFNBQVMsR0FBRyxZQUFZLEVBQUU7b0JBQzVDLEtBQUssRUFBRSxRQUFRLENBQUMsY0FBYztvQkFDOUIsVUFBVSxFQUFFLGFBQWEsU0FBUyxHQUFHLFlBQVksRUFBRTtpQkFDcEQsQ0FBQyxDQUFDO2dCQUVILElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsY0FBYyxTQUFTLEdBQUcsWUFBWSxFQUFFLEVBQUU7b0JBQzVELEdBQUcsRUFBRSxjQUFjLFNBQVMsR0FBRyxZQUFZLEVBQUU7b0JBQzdDLEtBQUssRUFBRSxRQUFRLENBQUMsT0FBTztvQkFDdkIsVUFBVSxFQUFFLGNBQWMsU0FBUyxHQUFHLFlBQVksRUFBRTtpQkFDckQsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUF6TEQsNEJBeUxDO0FBRUQsTUFBYSxhQUFjLFNBQVEsbUJBQUs7SUFDdEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF5QjtRQUNqRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDN0IsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztTQUN2QixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFURCxzQ0FTQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbk91dHB1dCwgRm4sIHR5cGUgU3RhY2tQcm9wcywgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICBDZm5JUEFNUG9vbCBhcyBJcGFtUG9vbENsYXNzLFxuICBDZm5JUEFNUG9vbENpZHJcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7IFJlc291cmNlU2hhcmUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3Jlc291cmNlU2hhcmVcIjtcbmltcG9ydCBnZXRBY2NvdW50SWQgZnJvbSBcIi4uLy4uLy4uL3V0aWxzL2dldEFjY291bnRJZFwiO1xuaW1wb3J0IHsgRmphbGxMb2dnZXIgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvdmFsaWRhdGlvbkxvZ2dlclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElwYW1Qb29sUHJvcHMgZXh0ZW5kcyBTdGFja1Byb3BzIHtcbiAgb3JnQWNjb3VudHM6IHN0cmluZ1tdO1xuICBpcGFtU2NvcGU/OiBzdHJpbmc7XG4gIHJlZ2lvbnM6IHN0cmluZ1tdO1xuICAvKipcbiAgICogVGhlIG5ldG1hc2sgbGVuZ3RoICgvQ0lEUikgZWFjaCBjaGlsZCBJUEFNIHBvb2wgc2hvdWxkIHJlY2VpdmUuXG4gICAqIENvbnRyb2xzIHRoZSBzaXplIG9mIENJRFIgYmxvY2tzIGF1dG9tYXRpY2FsbHkgYWxsb2NhdGVkIHRvIFZQQ3MgZnJvbSB0aGUgcG9vbC5cbiAgICogQWNjZXB0ZWQgcmFuZ2U6IC8xNiAoNjUsNTM2IElQcykg4oCTIC8yOCAoMTYgSVBzKS4gRGVmYXVsdHMgdG8gLzIwICg0LDA5NiBJUHMpLlxuICAgKi9cbiAgYWxsb2NhdGlvbkRlZmF1bHROZXRtYXNrTGVuZ3RoPzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIG5ldG1hc2sgbGVuZ3RoICgvQ0lEUikgcHJvdmlzaW9uZWQgaW50byBlYWNoIGNoaWxkIElQQU0gcG9vbCBvbiBjcmVhdGlvbi5cbiAgICogRGV0ZXJtaW5lcyB0aGUgdG90YWwgYWRkcmVzcyBzcGFjZSBhdmFpbGFibGUgZm9yIFZQQyBhbGxvY2F0aW9ucyBpbiB0aGF0IGFjY291bnQuXG4gICAqIEFjY2VwdGVkIHJhbmdlOiAvMTMgKDUyNCwyODggSVBzKSDigJMgLzE2ICg2NSw1MzYgSVBzKS4gRGVmYXVsdHMgdG8gLzE0LlxuICAgKi9cbiAgcHJvdmlzaW9uZWROZXRtYXNrTGVuZ3RoPzogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgSXBhbVBvb2xTdGFja1Byb3BzIGV4dGVuZHMgU3RhY2tQcm9wcyB7XG4gIG9yZ0FjY291bnRzOiBzdHJpbmdbXTtcbiAgcmVnaW9uczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBJcGFtUG9vbCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJcGFtUG9vbFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIC8vIEdldCB0aGUgZGVmYXVsdCBJUEFNIHNjb3BlIElEIGZyb20gcHJvcHMsIG9yIENGTiBpbXBvcnRcbiAgICBjb25zdCBJcGFtUHJpdmF0ZURlZmF1bHRTY29wZUlkID1cbiAgICAgIHByb3BzLmlwYW1TY29wZSB8fCBGbi5pbXBvcnRWYWx1ZShcIklwYW1Qcml2YXRlRGVmYXVsdFNjb3BlSWRcIik7XG5cbiAgICBjb25zdCByZWdpb25zID0gcHJvcHMucmVnaW9ucztcbiAgICBpZiAoIXJlZ2lvbnMgfHwgcmVnaW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkF0IGxlYXN0IG9uZSByZWdpb24gbXVzdCBiZSBzcGVjaWZpZWQgZm9yIElQQU0gcG9vbHNcIik7XG4gICAgfVxuXG4gICAgY29uc3Qgb3JnYW5pc2F0aW9uQWNjb3VudHMgPSBwcm9wcy5vcmdBY2NvdW50cy5tYXAoKGFjY291bnQpID0+XG4gICAgICBhY2NvdW50LnRvTG93ZXJDYXNlKClcbiAgICApO1xuXG4gICAgLy8gRGV0ZXJtaW5lIHRoZSBjaGlsZC1wb29sIENJRFIgc2l6ZSAoZGVmYXVsdHMgdG8gLzIwKVxuICAgIGNvbnN0IGRlZmF1bHROZXRtYXNrTGVuZ3RoID0gcHJvcHMuYWxsb2NhdGlvbkRlZmF1bHROZXRtYXNrTGVuZ3RoID8/IDIwO1xuICAgIGNvbnN0IHByb3Zpc2lvbmVkTmV0bWFza0xlbmd0aCA9IHByb3BzLnByb3Zpc2lvbmVkTmV0bWFza0xlbmd0aCA/PyAxNDtcblxuICAgIC8vIEJhc2ljIHZhbGlkYXRpb24g4oCTIC8xNiB0byAvMjggaW5jbHVzaXZlIGFyZSBjb25zaWRlcmVkIHNhZmUgZm9yIFZQQyBhbGxvY2F0aW9uc1xuICAgIGlmIChkZWZhdWx0TmV0bWFza0xlbmd0aCA8IDE2IHx8IGRlZmF1bHROZXRtYXNrTGVuZ3RoID4gMjgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYGFsbG9jYXRpb25EZWZhdWx0TmV0bWFza0xlbmd0aCBtdXN0IGJlIGJldHdlZW4gMTYgYW5kIDI4IChpbmNsdXNpdmUpLiBSZWNlaXZlZDogJHtkZWZhdWx0TmV0bWFza0xlbmd0aH1gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIHByb3Zpc2lvbmVkIGJsb2NrIHNpemUgKC8xMyB0byAvMTYpXG4gICAgaWYgKHByb3Zpc2lvbmVkTmV0bWFza0xlbmd0aCA8IDEzIHx8IHByb3Zpc2lvbmVkTmV0bWFza0xlbmd0aCA+IDE2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBwcm92aXNpb25lZE5ldG1hc2tMZW5ndGggbXVzdCBiZSBiZXR3ZWVuIDEzIGFuZCAxNiAoaW5jbHVzaXZlKS4gUmVjZWl2ZWQ6ICR7cHJvdmlzaW9uZWROZXRtYXNrTGVuZ3RofWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gV2FybiBpZiB1c2VyIHJlcXVlc3RzIFZQQyBhbGxvY2F0aW9ucyBsYXJnZXIgdGhhbiB0aGUgcHJvdmlzaW9uZWQgcG9vbFxuICAgIGlmIChkZWZhdWx0TmV0bWFza0xlbmd0aCA8IHByb3Zpc2lvbmVkTmV0bWFza0xlbmd0aCkge1xuICAgICAgRmphbGxMb2dnZXIud2FybihcbiAgICAgICAgYCdhbGxvY2F0aW9uRGVmYXVsdE5ldG1hc2tMZW5ndGgnICgvJHtkZWZhdWx0TmV0bWFza0xlbmd0aH0pIGlzIGxhcmdlciB0aGFuICdwcm92aXNpb25lZE5ldG1hc2tMZW5ndGgnICgvJHtwcm92aXNpb25lZE5ldG1hc2tMZW5ndGh9KS4gYCArXG4gICAgICAgICAgYFZQQyBhbGxvY2F0aW9uIG1heSBmYWlsIGlmIHRoZSBwb29sIGNhbm5vdCBzYXRpc2Z5IHRoZSByZXF1ZXN0LmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gVG9wIExldmVsIFBvb2xcbiAgICBjb25zdCByb290UG9vbCA9IG5ldyBJcGFtUG9vbENsYXNzKHRoaXMsIFwiVG9wTGV2ZWxJcGFtUG9vbFwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYFJvb3QgSVBBTSBwb29sIChHbG9iYWwpYCxcbiAgICAgIGFkZHJlc3NGYW1pbHk6IFwiaXB2NFwiLFxuICAgICAgaXBhbVNjb3BlSWQ6IElwYW1Qcml2YXRlRGVmYXVsdFNjb3BlSWQsXG4gICAgICBwcm92aXNpb25lZENpZHJzOiBbXG4gICAgICAgIHsgY2lkcjogXCIxMC4wLjAuMC84XCIgfSxcbiAgICAgICAgeyBjaWRyOiBcIjE3Mi4xNi4wLjAvMTJcIiB9LFxuICAgICAgICB7IGNpZHI6IFwiMTkyLjE2OC4wLjAvMTZcIiB9XG4gICAgICBdLFxuICAgICAgYXV0b0ltcG9ydDogdHJ1ZSxcbiAgICAgIHRhZ3M6IFtcbiAgICAgICAge1xuICAgICAgICAgIGtleTogXCJmamFsbDpvcGVyYXRpb25zOnBvb2xcIixcbiAgICAgICAgICB2YWx1ZTogXCJ0b3AtbGV2ZWxcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAga2V5OiBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOmVudmlyb25tZW50XCIsXG4gICAgICAgICAgdmFsdWU6IFwibWFuYWdlbWVudFwiXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSByZWdpb25hbCBwb29scyBhcyBjaGlsZHJlbiBvZiB0aGUgcm9vdCBwb29sXG4gICAgZm9yIChjb25zdCByZWdpb24gb2YgcmVnaW9ucykge1xuICAgICAgY29uc3QgcmVnaW9uU3VmZml4ID0gcmVnaW9uLnJlcGxhY2UoLy0vZywgXCJcIik7XG5cbiAgICAgIC8vIENyZWF0ZSBhIHJlZ2lvbmFsIHBvb2wgZm9yIHRoaXMgc3BlY2lmaWMgcmVnaW9uXG4gICAgICBjb25zdCByZWdpb25hbFBvb2wgPSBuZXcgSXBhbVBvb2xDbGFzcyhcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYFJlZ2lvbmFsUG9vbCR7cmVnaW9uU3VmZml4fWAsXG4gICAgICAgIHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogYFJlZ2lvbmFsIElQQU0gcG9vbCAtICR7cmVnaW9ufWAsXG4gICAgICAgICAgYWRkcmVzc0ZhbWlseTogXCJpcHY0XCIsXG4gICAgICAgICAgaXBhbVNjb3BlSWQ6IElwYW1Qcml2YXRlRGVmYXVsdFNjb3BlSWQsXG4gICAgICAgICAgbG9jYWxlOiByZWdpb24sXG4gICAgICAgICAgc291cmNlSXBhbVBvb2xJZDogcm9vdFBvb2wuYXR0cklwYW1Qb29sSWQsXG4gICAgICAgICAgYXV0b0ltcG9ydDogdHJ1ZSxcbiAgICAgICAgICB0YWdzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGtleTogXCJmamFsbDpvcGVyYXRpb25zOnBvb2xcIixcbiAgICAgICAgICAgICAgdmFsdWU6IGByZWdpb25hbC0ke3JlZ2lvbn1gXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBrZXk6IFwiZmphbGw6Y29zdEFsbG9jYXRpb246ZW52aXJvbm1lbnRcIixcbiAgICAgICAgICAgICAgdmFsdWU6IFwibWFuYWdlbWVudFwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICBjb25zdCByZWdpb25hbENpZHJBbGxvY2F0aW9uID0gbmV3IENmbklQQU1Qb29sQ2lkcihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYFJlZ2lvbmFsUG9vbENpZHIke3JlZ2lvblN1ZmZpeH1gLFxuICAgICAgICB7XG4gICAgICAgICAgaXBhbVBvb2xJZDogcmVnaW9uYWxQb29sLmF0dHJJcGFtUG9vbElkLFxuICAgICAgICAgIG5ldG1hc2tMZW5ndGg6IDEwIC8vIEVhY2ggcmVnaW9uIGdldHMgYSAvMTAgKDQsMTk0LDMwNCBJUHMpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIC8vIENyZWF0ZSBhY2NvdW50IHBvb2xzIHVuZGVyIGVhY2ggcmVnaW9uYWwgcG9vbFxuICAgICAgZm9yIChjb25zdCBhY2NvdW50IG9mIG9yZ2FuaXNhdGlvbkFjY291bnRzKSB7XG4gICAgICAgIGNvbnN0IGFjY291bnRJZCA9IGdldEFjY291bnRJZChhY2NvdW50KTtcblxuICAgICAgICBjb25zdCBpcGFtUG9vbCA9IG5ldyBJcGFtUG9vbENsYXNzKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgYCR7YWNjb3VudH1JcGFtUG9vbCR7cmVnaW9uU3VmZml4fWAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246IGAke2FjY291bnR9IC0gSVBBTSBwb29sIC0gJHtyZWdpb259YCxcbiAgICAgICAgICAgIGFkZHJlc3NGYW1pbHk6IFwiaXB2NFwiLFxuICAgICAgICAgICAgaXBhbVNjb3BlSWQ6IElwYW1Qcml2YXRlRGVmYXVsdFNjb3BlSWQsXG4gICAgICAgICAgICBsb2NhbGU6IHJlZ2lvbixcbiAgICAgICAgICAgIHNvdXJjZUlwYW1Qb29sSWQ6IHJlZ2lvbmFsUG9vbC5hdHRySXBhbVBvb2xJZCxcbiAgICAgICAgICAgIGFsbG9jYXRpb25EZWZhdWx0TmV0bWFza0xlbmd0aDogZGVmYXVsdE5ldG1hc2tMZW5ndGgsXG4gICAgICAgICAgICBhbGxvY2F0aW9uUmVzb3VyY2VUYWdzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6IFwiZmphbGw6b3BlcmF0aW9uczpwb29sXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGAke2FjY291bnRJZH0tJHtyZWdpb259YFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgYXV0b0ltcG9ydDogdHJ1ZSxcbiAgICAgICAgICAgIHRhZ3M6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtleTogXCJmamFsbDpvcGVyYXRpb25zOnBvb2xcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogYCR7YWNjb3VudElkfS0ke3JlZ2lvbn1gXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6IFwiZmphbGw6Y29zdEFsbG9jYXRpb246YWNjb3VudE5hbWVcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogYWNjb3VudFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIEVuc3VyZSB0aGUgYWNjb3VudCBwb29sIGlzIGNyZWF0ZWQgYWZ0ZXIgdGhlIHJlZ2lvbmFsIENJRFIgYWxsb2NhdGlvblxuICAgICAgICBpcGFtUG9vbC5ub2RlLmFkZERlcGVuZGVuY3kocmVnaW9uYWxDaWRyQWxsb2NhdGlvbik7XG5cbiAgICAgICAgY29uc3QgY2lkckFsbG9jYXRpb24gPSBuZXcgQ2ZuSVBBTVBvb2xDaWRyKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgYCR7YWNjb3VudH1Qb29sQ2lkciR7cHJvdmlzaW9uZWROZXRtYXNrTGVuZ3RofSR7cmVnaW9uU3VmZml4fWAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaXBhbVBvb2xJZDogaXBhbVBvb2wuYXR0cklwYW1Qb29sSWQsXG4gICAgICAgICAgICBuZXRtYXNrTGVuZ3RoOiBwcm92aXNpb25lZE5ldG1hc2tMZW5ndGhcbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gU2hhcmUgdGhlIHBvb2wgd2l0aCB0aGUgdGFyZ2V0IGFjY291bnQgc28gdGhhdCBWUENzIGNhbiBhbGxvY2F0ZVxuICAgICAgICBjb25zdCBzaGFyZSA9IG5ldyBSZXNvdXJjZVNoYXJlKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgYCR7YWNjb3VudH1JcGFtUmVzb3VyY2VTaGFyZSR7cmVnaW9uU3VmZml4fWAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogYCR7YWNjb3VudH1JcGFtUmVzb3VyY2VTaGFyZS4ke3JlZ2lvbn1gLFxuICAgICAgICAgICAgYWxsb3dFeHRlcm5hbFByaW5jaXBhbHM6IGZhbHNlLFxuICAgICAgICAgICAgcHJpbmNpcGFsczogW2FjY291bnRJZF0sXG4gICAgICAgICAgICByZXNvdXJjZUFybnM6IFtpcGFtUG9vbC5hdHRyQXJuXSxcbiAgICAgICAgICAgIHRhZ3M6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtleTogXCJmamFsbDpjb3N0QWxsb2NhdGlvbjplbnZpcm9ubWVudFwiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBgbWFuYWdlbWVudGBcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICAvLyBFbnN1cmUgdGhlIHNoYXJlIGlzIGNyZWF0ZWQgb25seSBhZnRlciB0aGUgQ0lEUiBpcyBwcm92aXNpb25lZFxuICAgICAgICBzaGFyZS5ub2RlLmFkZERlcGVuZGVuY3koY2lkckFsbG9jYXRpb24pO1xuXG4gICAgICAgIC8vIEV4cG9zZSB0aGUgcG9vbCBJRCBmb3IgY3Jvc3Mtc3RhY2sgdXNhZ2UgKGUuZy4gVlBDIGFsbG9jYXRpb25zKVxuICAgICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGBJcGFtUG9vbElkJHthY2NvdW50SWR9JHtyZWdpb25TdWZmaXh9YCwge1xuICAgICAgICAgIGtleTogYElwYW1Qb29sSWQke2FjY291bnRJZH0ke3JlZ2lvblN1ZmZpeH1gLFxuICAgICAgICAgIHZhbHVlOiBpcGFtUG9vbC5hdHRySXBhbVBvb2xJZCxcbiAgICAgICAgICBleHBvcnROYW1lOiBgSXBhbVBvb2xJZCR7YWNjb3VudElkfSR7cmVnaW9uU3VmZml4fWBcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBgSXBhbVBvb2xBcm4ke2FjY291bnRJZH0ke3JlZ2lvblN1ZmZpeH1gLCB7XG4gICAgICAgICAga2V5OiBgSXBhbVBvb2xBcm4ke2FjY291bnRJZH0ke3JlZ2lvblN1ZmZpeH1gLFxuICAgICAgICAgIHZhbHVlOiBpcGFtUG9vbC5hdHRyQXJuLFxuICAgICAgICAgIGV4cG9ydE5hbWU6IGBJcGFtUG9vbEFybiR7YWNjb3VudElkfSR7cmVnaW9uU3VmZml4fWBcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJcGFtUG9vbFN0YWNrIGV4dGVuZHMgU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSXBhbVBvb2xTdGFja1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIG5ldyBJcGFtUG9vbCh0aGlzLCBcIklwYW1Qb29sXCIsIHtcbiAgICAgIG9yZ0FjY291bnRzOiBwcm9wcy5vcmdBY2NvdW50cyxcbiAgICAgIHJlZ2lvbnM6IHByb3BzLnJlZ2lvbnNcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbVBvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9uZXR3b3JraW5nL2lwYW1Qb29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvRTtBQUNwRSwyQ0FBdUM7QUFDdkMsaURBRzZCO0FBQzdCLDhEQUEyRDtBQUMzRCw4REFBdUQ7QUFDdkQsc0VBQThEO0FBeUI5RCxNQUFhLFFBQVMsU0FBUSxzQkFBUztJQUNyQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW9CO1FBQzVELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsMERBQTBEO1FBQzFELE1BQU0seUJBQXlCLEdBQzdCLEtBQUssQ0FBQyxTQUFTLElBQUksZ0JBQUUsQ0FBQyxXQUFXLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUVqRSxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzlCLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7UUFDMUUsQ0FBQztRQUVELE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUM3RCxPQUFPLENBQUMsV0FBVyxFQUFFLENBQ3RCLENBQUM7UUFFRix1REFBdUQ7UUFDdkQsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLENBQUMsOEJBQThCLElBQUksRUFBRSxDQUFDO1FBQ3hFLE1BQU0sd0JBQXdCLEdBQUcsS0FBSyxDQUFDLHdCQUF3QixJQUFJLEVBQUUsQ0FBQztRQUV0RSxrRkFBa0Y7UUFDbEYsSUFBSSxvQkFBb0IsR0FBRyxFQUFFLElBQUksb0JBQW9CLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDM0QsTUFBTSxJQUFJ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UyxHQUFHLFlBQVksRUFBRSxFQUFFO29CQUM1RCxHQUFHLEVBQUUsY0FBYyxTQUFTLEdBQUcsWUFBWSxFQUFFO29CQUM3QyxLQUFLLEVBQUUsUUFBUSxDQUFDLE9BQU87b0JBQ3ZCLFVBQVUsRUFBRSxjQUFjLFNBQVMsR0FBRyxZQUFZLEVBQUU7aUJBQ3JELENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBM01ELDRCQTJNQztBQUVELE1BQWEsYUFBYyxTQUFRLG1CQUFLO0lBQ3RDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBeUI7UUFDakUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQzdCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87U0FDdkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBVEQsc0NBU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5PdXRwdXQsIEZuLCB0eXBlIFN0YWNrUHJvcHMsIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgQ2ZuSVBBTVBvb2wgYXMgSXBhbVBvb2xDbGFzcyxcbiAgQ2ZuSVBBTVBvb2xDaWRyXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgeyBSZXNvdXJjZVNoYXJlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9yZXNvdXJjZVNoYXJlXCI7XG5pbXBvcnQgZ2V0QWNjb3VudElkIGZyb20gXCIuLi8uLi8uLi91dGlscy9nZXRBY2NvdW50SWRcIjtcbmltcG9ydCB7IEZqYWxsTG9nZ2VyIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL3ZhbGlkYXRpb25Mb2dnZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJcGFtUG9vbFByb3BzIGV4dGVuZHMgU3RhY2tQcm9wcyB7XG4gIG9yZ0FjY291bnRzOiBzdHJpbmdbXTtcbiAgaXBhbVNjb3BlPzogc3RyaW5nO1xuICByZWdpb25zOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSBuZXRtYXNrIGxlbmd0aCAoL0NJRFIpIGVhY2ggY2hpbGQgSVBBTSBwb29sIHNob3VsZCByZWNlaXZlLlxuICAgKiBDb250cm9scyB0aGUgc2l6ZSBvZiBDSURSIGJsb2NrcyBhdXRvbWF0aWNhbGx5IGFsbG9jYXRlZCB0byBWUENzIGZyb20gdGhlIHBvb2wuXG4gICAqIEFjY2VwdGVkIHJhbmdlOiAvMTYgKDY1LDUzNiBJUHMpIOKAkyAvMjggKDE2IElQcykuIERlZmF1bHRzIHRvIC8yMCAoNCwwOTYgSVBzKS5cbiAgICovXG4gIGFsbG9jYXRpb25EZWZhdWx0TmV0bWFza0xlbmd0aD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBuZXRtYXNrIGxlbmd0aCAoL0NJRFIpIHByb3Zpc2lvbmVkIGludG8gZWFjaCBjaGlsZCBJUEFNIHBvb2wgb24gY3JlYXRpb24uXG4gICAqIERldGVybWluZXMgdGhlIHRvdGFsIGFkZHJlc3Mgc3BhY2UgYXZhaWxhYmxlIGZvciBWUEMgYWxsb2NhdGlvbnMgaW4gdGhhdCBhY2NvdW50LlxuICAgKiBBY2NlcHRlZCByYW5nZTogLzEzICg1MjQsMjg4IElQcykg4oCTIC8xNiAoNjUsNTM2IElQcykuIERlZmF1bHRzIHRvIC8xNC5cbiAgICovXG4gIHByb3Zpc2lvbmVkTmV0bWFza0xlbmd0aD86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIElwYW1Qb29sU3RhY2tQcm9wcyBleHRlbmRzIFN0YWNrUHJvcHMge1xuICBvcmdBY2NvdW50czogc3RyaW5nW107XG4gIHJlZ2lvbnM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgSXBhbVBvb2wgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSXBhbVBvb2xQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBHZXQgdGhlIGRlZmF1bHQgSVBBTSBzY29wZSBJRCBmcm9tIHByb3BzLCBvciBDRk4gaW1wb3J0XG4gICAgY29uc3QgSXBhbVByaXZhdGVEZWZhdWx0U2NvcGVJZCA9XG4gICAgICBwcm9wcy5pcGFtU2NvcGUgfHwgRm4uaW1wb3J0VmFsdWUoXCJJcGFtUHJpdmF0ZURlZmF1bHRTY29wZUlkXCIpO1xuXG4gICAgY29uc3QgcmVnaW9ucyA9IHByb3BzLnJlZ2lvbnM7XG4gICAgaWYgKCFyZWdpb25zIHx8IHJlZ2lvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdCBsZWFzdCBvbmUgcmVnaW9uIG11c3QgYmUgc3BlY2lmaWVkIGZvciBJUEFNIHBvb2xzXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IG9yZ2FuaXNhdGlvbkFjY291bnRzID0gcHJvcHMub3JnQWNjb3VudHMubWFwKChhY2NvdW50KSA9PlxuICAgICAgYWNjb3VudC50b0xvd2VyQ2FzZSgpXG4gICAgKTtcblxuICAgIC8vIERldGVybWluZSB0aGUgY2hpbGQtcG9vbCBDSURSIHNpemUgKGRlZmF1bHRzIHRvIC8yMClcbiAgICBjb25zdCBkZWZhdWx0TmV0bWFza0xlbmd0aCA9IHByb3BzLmFsbG9jYXRpb25EZWZhdWx0TmV0bWFza0xlbmd0aCA/PyAyMDtcbiAgICBjb25zdCBwcm92aXNpb25lZE5ldG1hc2tMZW5ndGggPSBwcm9wcy5wcm92aXNpb25lZE5ldG1hc2tMZW5ndGggPz8gMTQ7XG5cbiAgICAvLyBCYXNpYyB2YWxpZGF0aW9uIOKAkyAvMTYgdG8gLzI4IGluY2x1c2l2ZSBhcmUgY29uc2lkZXJlZCBzYWZlIGZvciBWUEMgYWxsb2NhdGlvbnNcbiAgICBpZiAoZGVmYXVsdE5ldG1hc2tMZW5ndGggPCAxNiB8fCBkZWZhdWx0TmV0bWFza0xlbmd0aCA+IDI4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBhbGxvY2F0aW9uRGVmYXVsdE5ldG1hc2tMZW5ndGggbXVzdCBiZSBiZXR3ZWVuIDE2IGFuZCAyOCAoaW5jbHVzaXZlKS4gUmVjZWl2ZWQ6ICR7ZGVmYXVsdE5ldG1hc2tMZW5ndGh9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBWYWxpZGF0ZSBwcm92aXNpb25lZCBibG9jayBzaXplICgvMTMgdG8gLzE2KVxuICAgIGlmIChwcm92aXNpb25lZE5ldG1hc2tMZW5ndGggPCAxMyB8fCBwcm92aXNpb25lZE5ldG1hc2tMZW5ndGggPiAxNikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgcHJvdmlzaW9uZWROZXRtYXNrTGVuZ3RoIG11c3QgYmUgYmV0d2VlbiAxMyBhbmQgMTYgKGluY2x1c2l2ZSkuIFJlY2VpdmVkOiAke3Byb3Zpc2lvbmVkTmV0bWFza0xlbmd0aH1gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFdhcm4gaWYgdXNlciByZXF1ZXN0cyBWUEMgYWxsb2NhdGlvbnMgbGFyZ2VyIHRoYW4gdGhlIHByb3Zpc2lvbmVkIHBvb2xcbiAgICBpZiAoZGVmYXVsdE5ldG1hc2tMZW5ndGggPCBwcm92aXNpb25lZE5ldG1hc2tMZW5ndGgpIHtcbiAgICAgIEZqYWxsTG9nZ2VyLndhcm4oXG4gICAgICAgIGAnYWxsb2NhdGlvbkRlZmF1bHROZXRtYXNrTGVuZ3RoJyAoLyR7ZGVmYXVsdE5ldG1hc2tMZW5ndGh9KSBpcyBsYXJnZXIgdGhhbiAncHJvdmlzaW9uZWROZXRtYXNrTGVuZ3RoJyAoLyR7cHJvdmlzaW9uZWROZXRtYXNrTGVuZ3RofSkuIGAgK1xuICAgICAgICAgIGBWUEMgYWxsb2NhdGlvbiBtYXkgZmFpbCBpZiB0aGUgcG9vbCBjYW5ub3Qgc2F0aXNmeSB0aGUgcmVxdWVzdC5gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFRvcCBMZXZlbCBQb29sXG4gICAgY29uc3Qgcm9vdFBvb2wgPSBuZXcgSXBhbVBvb2xDbGFzcyh0aGlzLCBcIlRvcExldmVsSXBhbVBvb2xcIiwge1xuICAgICAgZGVzY3JpcHRpb246IGBSb290IElQQU0gcG9vbCAoR2xvYmFsKWAsXG4gICAgICBhZGRyZXNzRmFtaWx5OiBcImlwdjRcIixcbiAgICAgIGlwYW1TY29wZUlkOiBJcGFtUHJpdmF0ZURlZmF1bHRTY29wZUlkLFxuICAgICAgcHJvdmlzaW9uZWRDaWRyczogW1xuICAgICAgICB7IGNpZHI6IFwiMTAuMC4wLjAvOFwiIH0sXG4gICAgICAgIHsgY2lkcjogXCIxNzIuMTYuMC4wLzEyXCIgfSxcbiAgICAgICAgeyBjaWRyOiBcIjE5Mi4xNjguMC4wLzE2XCIgfVxuICAgICAgXSxcbiAgICAgIGF1dG9JbXBvcnQ6IHRydWUsXG4gICAgICB0YWdzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6IFwiZmphbGw6b3BlcmF0aW9uczpwb29sXCIsXG4gICAgICAgICAgdmFsdWU6IFwidG9wLWxldmVsXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGtleTogXCJmamFsbDpjb3N0QWxsb2NhdGlvbjplbnZpcm9ubWVudFwiLFxuICAgICAgICAgIHZhbHVlOiBcIm1hbmFnZW1lbnRcIlxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgcmVnaW9uYWwgcG9vbHMgYXMgY2hpbGRyZW4gb2YgdGhlIHJvb3QgcG9vbFxuICAgIGZvciAoY29uc3QgcmVnaW9uIG9mIHJlZ2lvbnMpIHtcbiAgICAgIGNvbnN0IHJlZ2lvblN1ZmZpeCA9IHJlZ2lvbi5yZXBsYWNlKC8tL2csIFwiXCIpO1xuXG4gICAgICAvLyBDcmVhdGUgYSByZWdpb25hbCBwb29sIGZvciB0aGlzIHNwZWNpZmljIHJlZ2lvblxuICAgICAgY29uc3QgcmVnaW9uYWxQb29sID0gbmV3IElwYW1Qb29sQ2xhc3MoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGBSZWdpb25hbFBvb2wke3JlZ2lvblN1ZmZpeH1gLFxuICAgICAgICB7XG4gICAgICAgICAgZGVzY3JpcHRpb246IGBSZWdpb25hbCBJUEFNIHBvb2wgLSAke3JlZ2lvbn1gLFxuICAgICAgICAgIGFkZHJlc3NGYW1pbHk6IFwiaXB2NFwiLFxuICAgICAgICAgIGlwYW1TY29wZUlkOiBJcGFtUHJpdmF0ZURlZmF1bHRTY29wZUlkLFxuICAgICAgICAgIGxvY2FsZTogcmVnaW9uLFxuICAgICAgICAgIHNvdXJjZUlwYW1Qb29sSWQ6IHJvb3RQb29sLmF0dHJJcGFtUG9vbElkLFxuICAgICAgICAgIGF1dG9JbXBvcnQ6IHRydWUsXG4gICAgICAgICAgdGFnczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBrZXk6IFwiZmphbGw6b3BlcmF0aW9uczpwb29sXCIsXG4gICAgICAgICAgICAgIHZhbHVlOiBgcmVnaW9uYWwtJHtyZWdpb259YFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAga2V5OiBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOmVudmlyb25tZW50XCIsXG4gICAgICAgICAgICAgIHZhbHVlOiBcIm1hbmFnZW1lbnRcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgY29uc3QgcmVnaW9uYWxDaWRyQWxsb2NhdGlvbiA9IG5ldyBDZm5JUEFNUG9vbENpZHIoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGBSZWdpb25hbFBvb2xDaWRyJHtyZWdpb25TdWZmaXh9YCxcbiAgICAgICAge1xuICAgICAgICAgIGlwYW1Qb29sSWQ6IHJlZ2lvbmFsUG9vbC5hdHRySXBhbVBvb2xJZCxcbiAgICAgICAgICBuZXRtYXNrTGVuZ3RoOiAxMCAvLyBFYWNoIHJlZ2lvbiBnZXRzIGEgLzEwICg0LDE5NCwzMDQgSVBzKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICAvLyBDcmVhdGUgYWNjb3VudCBwb29scyB1bmRlciBlYWNoIHJlZ2lvbmFsIHBvb2wuXG4gICAgICAvLyBJUEFNIGVuZm9yY2VzIGEgbG93IGNvbmN1cnJlbnQtbXV0YXRpb24gbGltaXQgKG5vdCBwdWJsaWNseSBkb2N1bWVudGVkKS5cbiAgICAgIC8vIEJhdGNoIGFjY291bnQgcG9vbHMgc28gZWFjaCBiYXRjaCBkZXBlbmRzIG9uIHRoZSBwcmV2aW91cyBiYXRjaFxuICAgICAgLy8gY29tcGxldGluZywgbGltaXRpbmcgY29uY3VycmVudCBJUEFNIHBvb2wgbXV0YXRpb25zLlxuICAgICAgY29uc3QgSVBBTV9DT05DVVJSRU5DWV9MSU1JVCA9IDI7XG4gICAgICBjb25zdCBiYXRjaGVzOiBJcGFtUG9vbENsYXNzW11bXSA9IFtdO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcmdhbmlzYXRpb25BY2NvdW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBhY2NvdW50ID0gb3JnYW5pc2F0aW9uQWNjb3VudHNbaV07XG4gICAgICAgIGNvbnN0IGFjY291bnRJZCA9IGdldEFjY291bnRJZChhY2NvdW50KTtcblxuICAgICAgICBjb25zdCBpcGFtUG9vbCA9IG5ldyBJcGFtUG9vbENsYXNzKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgYCR7YWNjb3VudH1JcGFtUG9vbCR7cmVnaW9uU3VmZml4fWAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246IGAke2FjY291bnR9IC0gSVBBTSBwb29sIC0gJHtyZWdpb259YCxcbiAgICAgICAgICAgIGFkZHJlc3NGYW1pbHk6IFwiaXB2NFwiLFxuICAgICAgICAgICAgaXBhbVNjb3BlSWQ6IElwYW1Qcml2YXRlRGVmYXVsdFNjb3BlSWQsXG4gICAgICAgICAgICBsb2NhbGU6IHJlZ2lvbixcbiAgICAgICAgICAgIHNvdXJjZUlwYW1Qb29sSWQ6IHJlZ2lvbmFsUG9vbC5hdHRySXBhbVBvb2xJZCxcbiAgICAgICAgICAgIGFsbG9jYXRpb25EZWZhdWx0TmV0bWFza0xlbmd0aDogZGVmYXVsdE5ldG1hc2tMZW5ndGgsXG4gICAgICAgICAgICBhbGxvY2F0aW9uUmVzb3VyY2VUYWdzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6IFwiZmphbGw6b3BlcmF0aW9uczpwb29sXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGAke2FjY291bnRJZH0tJHtyZWdpb259YFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgYXV0b0ltcG9ydDogdHJ1ZSxcbiAgICAgICAgICAgIHRhZ3M6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtleTogXCJmamFsbDpvcGVyYXRpb25zOnBvb2xcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogYCR7YWNjb3VudElkfS0ke3JlZ2lvbn1gXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6IFwiZmphbGw6Y29zdEFsbG9jYXRpb246YWNjb3VudE5hbWVcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogYWNjb3VudFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIEVuc3VyZSB0aGUgYWNjb3VudCBwb29sIGlzIGNyZWF0ZWQgYWZ0ZXIgdGhlIHJlZ2lvbmFsIENJRFIgYWxsb2NhdGlvblxuICAgICAgICBpcGFtUG9vbC5ub2RlLmFkZERlcGVuZGVuY3kocmVnaW9uYWxDaWRyQWxsb2NhdGlvbik7XG5cbiAgICAgICAgLy8gRWFjaCBiYXRjaCBvZiBJUEFNX0NPTkNVUlJFTkNZX0xJTUlUIHBvb2xzIGRlcGVuZHMgb24gQUxMIHBvb2xzXG4gICAgICAgIC8vIGZyb20gdGhlIHByZXZpb3VzIGJhdGNoLCBzbyB0aGUgbmV4dCBiYXRjaCBvbmx5IHN0YXJ0cyBvbmNlIHRoZVxuICAgICAgICAvLyBlbnRpcmUgcHJldmlvdXMgYmF0Y2ggaGFzIGNvbXBsZXRlZC5cbiAgICAgICAgY29uc3QgYmF0Y2hJbmRleCA9IE1hdGguZmxvb3IoaSAvIElQQU1fQ09OQ1VSUkVOQ1lfTElNSVQpO1xuICAgICAgICBpZiAoYmF0Y2hJbmRleCA+IDApIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHByZXZpb3VzUG9vbCBvZiBiYXRjaGVzW2JhdGNoSW5kZXggLSAxXSkge1xuICAgICAgICAgICAgaXBhbVBvb2wubm9kZS5hZGREZXBlbmRlbmN5KHByZXZpb3VzUG9vbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghYmF0Y2hlc1tiYXRjaEluZGV4XSkgYmF0Y2hlc1tiYXRjaEluZGV4XSA9IFtdO1xuICAgICAgICBiYXRjaGVzW2JhdGNoSW5kZXhdLnB1c2goaXBhbVBvb2wpO1xuXG4gICAgICAgIGNvbnN0IGNpZHJBbGxvY2F0aW9uID0gbmV3IENmbklQQU1Qb29sQ2lkcihcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIGAke2FjY291bnR9UG9vbENpZHIke3Byb3Zpc2lvbmVkTmV0bWFza0xlbmd0aH0ke3JlZ2lvblN1ZmZpeH1gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlwYW1Qb29sSWQ6IGlwYW1Qb29sLmF0dHJJcGFtUG9vbElkLFxuICAgICAgICAgICAgbmV0bWFza0xlbmd0aDogcHJvdmlzaW9uZWROZXRtYXNrTGVuZ3RoXG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIFNoYXJlIHRoZSBwb29sIHdpdGggdGhlIHRhcmdldCBhY2NvdW50IHNvIHRoYXQgVlBDcyBjYW4gYWxsb2NhdGVcbiAgICAgICAgY29uc3Qgc2hhcmUgPSBuZXcgUmVzb3VyY2VTaGFyZShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIGAke2FjY291bnR9SXBhbVJlc291cmNlU2hhcmUke3JlZ2lvblN1ZmZpeH1gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IGAke2FjY291bnR9SXBhbVJlc291cmNlU2hhcmUuJHtyZWdpb259YCxcbiAgICAgICAgICAgIGFsbG93RXh0ZXJuYWxQcmluY2lwYWxzOiBmYWxzZSxcbiAgICAgICAgICAgIHByaW5jaXBhbHM6IFthY2NvdW50SWRdLFxuICAgICAgICAgICAgcmVzb3VyY2VBcm5zOiBbaXBhbVBvb2wuYXR0ckFybl0sXG4gICAgICAgICAgICB0YWdzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6IFwiZmphbGw6Y29zdEFsbG9jYXRpb246ZW52aXJvbm1lbnRcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogYG1hbmFnZW1lbnRgXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gRW5zdXJlIHRoZSBzaGFyZSBpcyBjcmVhdGVkIG9ubHkgYWZ0ZXIgdGhlIENJRFIgaXMgcHJvdmlzaW9uZWRcbiAgICAgICAgc2hhcmUubm9kZS5hZGREZXBlbmRlbmN5KGNpZHJBbGxvY2F0aW9uKTtcblxuICAgICAgICAvLyBFeHBvc2UgdGhlIHBvb2wgSUQgZm9yIGNyb3NzLXN0YWNrIHVzYWdlIChlLmcuIFZQQyBhbGxvY2F0aW9ucylcbiAgICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBgSXBhbVBvb2xJZCR7YWNjb3VudElkfSR7cmVnaW9uU3VmZml4fWAsIHtcbiAgICAgICAgICBrZXk6IGBJcGFtUG9vbElkJHthY2NvdW50SWR9JHtyZWdpb25TdWZmaXh9YCxcbiAgICAgICAgICB2YWx1ZTogaXBhbVBvb2wuYXR0cklwYW1Qb29sSWQsXG4gICAgICAgICAgZXhwb3J0TmFtZTogYElwYW1Qb29sSWQke2FjY291bnRJZH0ke3JlZ2lvblN1ZmZpeH1gXG4gICAgICAgIH0pO1xuXG4gICAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYElwYW1Qb29sQXJuJHthY2NvdW50SWR9JHtyZWdpb25TdWZmaXh9YCwge1xuICAgICAgICAgIGtleTogYElwYW1Qb29sQXJuJHthY2NvdW50SWR9JHtyZWdpb25TdWZmaXh9YCxcbiAgICAgICAgICB2YWx1ZTogaXBhbVBvb2wuYXR0ckFybixcbiAgICAgICAgICBleHBvcnROYW1lOiBgSXBhbVBvb2xBcm4ke2FjY291bnRJZH0ke3JlZ2lvblN1ZmZpeH1gXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSXBhbVBvb2xTdGFjayBleHRlbmRzIFN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IElwYW1Qb29sU3RhY2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBuZXcgSXBhbVBvb2wodGhpcywgXCJJcGFtUG9vbFwiLCB7XG4gICAgICBvcmdBY2NvdW50czogcHJvcHMub3JnQWNjb3VudHMsXG4gICAgICByZWdpb25zOiBwcm9wcy5yZWdpb25zXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { Organisation as OrganisationResource, type OrganisationProps as OrganisationResourceProps } from "./organisation";
|
|
2
|
+
export { type OrganisationalUnitProps } from "./organisationalUnit";
|
|
3
|
+
export { OrganisationAccount, type OrganisationAccountProps } from "./organisationAccount";
|
|
4
|
+
export { OrganisationPolicy, type OrganisationPolicyProps, type OrganisationPolicyType } from "./organisationPolicy";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OrganisationPolicy = exports.OrganisationAccount = exports.OrganisationResource = void 0;
|
|
4
|
+
var organisation_1 = require("./organisation");
|
|
5
|
+
Object.defineProperty(exports, "OrganisationResource", { enumerable: true, get: function () { return organisation_1.Organisation; } });
|
|
6
|
+
var organisationAccount_1 = require("./organisationAccount");
|
|
7
|
+
Object.defineProperty(exports, "OrganisationAccount", { enumerable: true, get: function () { return organisationAccount_1.OrganisationAccount; } });
|
|
8
|
+
var organisationPolicy_1 = require("./organisationPolicy");
|
|
9
|
+
Object.defineProperty(exports, "OrganisationPolicy", { enumerable: true, get: function () { return organisationPolicy_1.OrganisationPolicy; } });
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9vcmdhbmlzYXRpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0NBR3dCO0FBRnRCLG9IQUFBLFlBQVksT0FBd0I7QUFJdEMsNkRBRytCO0FBRjdCLDBIQUFBLG1CQUFtQixPQUFBO0FBR3JCLDJEQUk4QjtBQUg1Qix3SEFBQSxrQkFBa0IsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIE9yZ2FuaXNhdGlvbiBhcyBPcmdhbmlzYXRpb25SZXNvdXJjZSxcbiAgdHlwZSBPcmdhbmlzYXRpb25Qcm9wcyBhcyBPcmdhbmlzYXRpb25SZXNvdXJjZVByb3BzXG59IGZyb20gXCIuL29yZ2FuaXNhdGlvblwiO1xuZXhwb3J0IHsgdHlwZSBPcmdhbmlzYXRpb25hbFVuaXRQcm9wcyB9IGZyb20gXCIuL29yZ2FuaXNhdGlvbmFsVW5pdFwiO1xuZXhwb3J0IHtcbiAgT3JnYW5pc2F0aW9uQWNjb3VudCxcbiAgdHlwZSBPcmdhbmlzYXRpb25BY2NvdW50UHJvcHNcbn0gZnJvbSBcIi4vb3JnYW5pc2F0aW9uQWNjb3VudFwiO1xuZXhwb3J0IHtcbiAgT3JnYW5pc2F0aW9uUG9saWN5LFxuICB0eXBlIE9yZ2FuaXNhdGlvblBvbGljeVByb3BzLFxuICB0eXBlIE9yZ2FuaXNhdGlvblBvbGljeVR5cGVcbn0gZnJvbSBcIi4vb3JnYW5pc2F0aW9uUG9saWN5XCI7XG4iXX0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
export interface OrganisationProps {
|
|
3
|
+
orgId: string;
|
|
4
|
+
rootId: string;
|
|
5
|
+
managementAccountId: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class Organisation extends Construct {
|
|
8
|
+
readonly orgId: string;
|
|
9
|
+
readonly rootId: string;
|
|
10
|
+
readonly managementAccountId: string;
|
|
11
|
+
constructor(scope: Construct, id: string, props: OrganisationProps);
|
|
12
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Organisation = void 0;
|
|
4
|
+
const constructs_1 = require("constructs");
|
|
5
|
+
class Organisation extends constructs_1.Construct {
|
|
6
|
+
constructor(scope, id, props) {
|
|
7
|
+
super(scope, id);
|
|
8
|
+
this.orgId = props.orgId;
|
|
9
|
+
this.rootId = props.rootId;
|
|
10
|
+
this.managementAccountId = props.managementAccountId;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.Organisation = Organisation;
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pc2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3Mvb3JnYW5pc2F0aW9uL29yZ2FuaXNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFRdkMsTUFBYSxZQUFhLFNBQVEsc0JBQVM7SUFLekMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF3QjtRQUNoRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQztJQUN2RCxDQUFDO0NBQ0Y7QUFYRCxvQ0FXQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pc2F0aW9uUHJvcHMge1xuICBvcmdJZDogc3RyaW5nO1xuICByb290SWQ6IHN0cmluZztcbiAgbWFuYWdlbWVudEFjY291bnRJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgT3JnYW5pc2F0aW9uIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IG9yZ0lkOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSByb290SWQ6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IG1hbmFnZW1lbnRBY2NvdW50SWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogT3JnYW5pc2F0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMub3JnSWQgPSBwcm9wcy5vcmdJZDtcbiAgICB0aGlzLnJvb3RJZCA9IHByb3BzLnJvb3RJZDtcbiAgICB0aGlzLm1hbmFnZW1lbnRBY2NvdW50SWQgPSBwcm9wcy5tYW5hZ2VtZW50QWNjb3VudElkO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
export interface OrganisationAccountProps {
|
|
3
|
+
accountId: string;
|
|
4
|
+
managementAccountId: string;
|
|
5
|
+
orgId: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* CDK construct that exports account ID and ARN as CloudFormation outputs.
|
|
9
|
+
*
|
|
10
|
+
* Account creation and OU placement are handled by the CLI pre-deploy steps
|
|
11
|
+
* (AwsAccountService.ensureMissingAccountsCreated / placeAccountsInOUs).
|
|
12
|
+
* This construct only produces the CfnOutputs needed for cross-stack references.
|
|
13
|
+
*/
|
|
14
|
+
export declare class OrganisationAccount extends Construct {
|
|
15
|
+
readonly accountId: string;
|
|
16
|
+
readonly accountArn: string;
|
|
17
|
+
constructor(scope: Construct, id: string, props: OrganisationAccountProps);
|
|
18
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OrganisationAccount = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const constructs_1 = require("constructs");
|
|
6
|
+
/**
|
|
7
|
+
* CDK construct that exports account ID and ARN as CloudFormation outputs.
|
|
8
|
+
*
|
|
9
|
+
* Account creation and OU placement are handled by the CLI pre-deploy steps
|
|
10
|
+
* (AwsAccountService.ensureMissingAccountsCreated / placeAccountsInOUs).
|
|
11
|
+
* This construct only produces the CfnOutputs needed for cross-stack references.
|
|
12
|
+
*/
|
|
13
|
+
class OrganisationAccount extends constructs_1.Construct {
|
|
14
|
+
constructor(scope, id, props) {
|
|
15
|
+
super(scope, id);
|
|
16
|
+
this.accountId = props.accountId;
|
|
17
|
+
this.accountArn = `arn:aws:organizations::${props.managementAccountId}:account/${props.orgId}/${props.accountId}`;
|
|
18
|
+
new aws_cdk_lib_1.CfnOutput(this, `${id}Id`, {
|
|
19
|
+
key: `${id}Id`,
|
|
20
|
+
value: this.accountId,
|
|
21
|
+
exportName: `${id}Id`
|
|
22
|
+
});
|
|
23
|
+
new aws_cdk_lib_1.CfnOutput(this, `${id}Arn`, {
|
|
24
|
+
key: `${id}Arn`,
|
|
25
|
+
value: this.accountArn,
|
|
26
|
+
exportName: `${id}Arn`
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.OrganisationAccount = OrganisationAccount;
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pc2F0aW9uQWNjb3VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL29yZ2FuaXNhdGlvbi9vcmdhbmlzYXRpb25BY2NvdW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF3QztBQUN4QywyQ0FBdUM7QUFRdkM7Ozs7OztHQU1HO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSxzQkFBUztJQUloRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQStCO1FBQ3ZFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsMEJBQTBCLEtBQUssQ0FBQyxtQkFBbUIsWUFBWSxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVsSCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUU7WUFDN0IsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJO1lBQ2QsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3JCLFVBQVUsRUFBRSxHQUFHLEVBQUUsSUFBSTtTQUN0QixDQUFDLENBQUM7UUFFSCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7WUFDOUIsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLO1lBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQ3RCLFVBQVUsRUFBRSxHQUFHLEVBQUUsS0FBSztTQUN2QixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUF0QkQsa0RBc0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXNhdGlvbkFjY291bnRQcm9wcyB7XG4gIGFjY291bnRJZDogc3RyaW5nO1xuICBtYW5hZ2VtZW50QWNjb3VudElkOiBzdHJpbmc7XG4gIG9yZ0lkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ0RLIGNvbnN0cnVjdCB0aGF0IGV4cG9ydHMgYWNjb3VudCBJRCBhbmQgQVJOIGFzIENsb3VkRm9ybWF0aW9uIG91dHB1dHMuXG4gKlxuICogQWNjb3VudCBjcmVhdGlvbiBhbmQgT1UgcGxhY2VtZW50IGFyZSBoYW5kbGVkIGJ5IHRoZSBDTEkgcHJlLWRlcGxveSBzdGVwc1xuICogKEF3c0FjY291bnRTZXJ2aWNlLmVuc3VyZU1pc3NpbmdBY2NvdW50c0NyZWF0ZWQgLyBwbGFjZUFjY291bnRzSW5PVXMpLlxuICogVGhpcyBjb25zdHJ1Y3Qgb25seSBwcm9kdWNlcyB0aGUgQ2ZuT3V0cHV0cyBuZWVkZWQgZm9yIGNyb3NzLXN0YWNrIHJlZmVyZW5jZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBPcmdhbmlzYXRpb25BY2NvdW50IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGFjY291bnRJZDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgYWNjb3VudEFybjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBPcmdhbmlzYXRpb25BY2NvdW50UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5hY2NvdW50SWQgPSBwcm9wcy5hY2NvdW50SWQ7XG4gICAgdGhpcy5hY2NvdW50QXJuID0gYGFybjphd3M6b3JnYW5pemF0aW9uczo6JHtwcm9wcy5tYW5hZ2VtZW50QWNjb3VudElkfTphY2NvdW50LyR7cHJvcHMub3JnSWR9LyR7cHJvcHMuYWNjb3VudElkfWA7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke2lkfUlkYCwge1xuICAgICAga2V5OiBgJHtpZH1JZGAsXG4gICAgICB2YWx1ZTogdGhpcy5hY2NvdW50SWQsXG4gICAgICBleHBvcnROYW1lOiBgJHtpZH1JZGBcbiAgICB9KTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYCR7aWR9QXJuYCwge1xuICAgICAga2V5OiBgJHtpZH1Bcm5gLFxuICAgICAgdmFsdWU6IHRoaXMuYWNjb3VudEFybixcbiAgICAgIGV4cG9ydE5hbWU6IGAke2lkfUFybmBcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
export type OrganisationPolicyType = "SERVICE_CONTROL_POLICY" | "TAG_POLICY" | "BACKUP_POLICY" | "AISERVICES_OPT_OUT_POLICY";
|
|
3
|
+
export interface OrganisationPolicyProps {
|
|
4
|
+
name: string;
|
|
5
|
+
policyType: OrganisationPolicyType;
|
|
6
|
+
content: string | Record<string, unknown>;
|
|
7
|
+
description?: string;
|
|
8
|
+
targetIds?: string[];
|
|
9
|
+
}
|
|
10
|
+
export declare class OrganisationPolicy extends Construct {
|
|
11
|
+
readonly policyId: string;
|
|
12
|
+
constructor(scope: Construct, id: string, props: OrganisationPolicyProps);
|
|
13
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OrganisationPolicy = void 0;
|
|
4
|
+
const aws_organizations_1 = require("aws-cdk-lib/aws-organizations");
|
|
5
|
+
const constructs_1 = require("constructs");
|
|
6
|
+
class OrganisationPolicy extends constructs_1.Construct {
|
|
7
|
+
constructor(scope, id, props) {
|
|
8
|
+
super(scope, id);
|
|
9
|
+
let content;
|
|
10
|
+
if (typeof props.content === "string") {
|
|
11
|
+
try {
|
|
12
|
+
content = JSON.parse(props.content);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
throw new Error(`Invalid JSON in organisation policy "${props.name}": ${props.content.slice(0, 100)}`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
content = props.content;
|
|
20
|
+
}
|
|
21
|
+
const policy = new aws_organizations_1.CfnPolicy(this, "Policy", {
|
|
22
|
+
name: props.name,
|
|
23
|
+
type: props.policyType,
|
|
24
|
+
content,
|
|
25
|
+
description: props.description,
|
|
26
|
+
targetIds: props.targetIds
|
|
27
|
+
});
|
|
28
|
+
this.policyId = policy.attrId;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.OrganisationPolicy = OrganisationPolicy;
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pc2F0aW9uUG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3Mvb3JnYW5pc2F0aW9uL29yZ2FuaXNhdGlvblBvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBMEQ7QUFDMUQsMkNBQXVDO0FBZ0J2QyxNQUFhLGtCQUFtQixTQUFRLHNCQUFTO0lBRy9DLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBOEI7UUFDdEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLE9BQWdDLENBQUM7UUFDckMsSUFBSSxPQUFPLEtBQUssQ0FBQyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDO2dCQUNILE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQTRCLENBQUM7WUFDakUsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxNQUFNLElBQUksS0FBSyxDQUNiLHdDQUF3QyxLQUFLLENBQUMsSUFBSSxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUN0RixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDMUIsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksNkJBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQzNDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDdEIsT0FBTztZQUNQLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ2hDLENBQUM7Q0FDRjtBQTdCRCxnREE2QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5Qb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLW9yZ2FuaXphdGlvbnNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmV4cG9ydCB0eXBlIE9yZ2FuaXNhdGlvblBvbGljeVR5cGUgPVxuICB8IFwiU0VSVklDRV9DT05UUk9MX1BPTElDWVwiXG4gIHwgXCJUQUdfUE9MSUNZXCJcbiAgfCBcIkJBQ0tVUF9QT0xJQ1lcIlxuICB8IFwiQUlTRVJWSUNFU19PUFRfT1VUX1BPTElDWVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXNhdGlvblBvbGljeVByb3BzIHtcbiAgbmFtZTogc3RyaW5nO1xuICBwb2xpY3lUeXBlOiBPcmdhbmlzYXRpb25Qb2xpY3lUeXBlO1xuICBjb250ZW50OiBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHRhcmdldElkcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgT3JnYW5pc2F0aW9uUG9saWN5IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IHBvbGljeUlkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE9yZ2FuaXNhdGlvblBvbGljeVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGxldCBjb250ZW50OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBpZiAodHlwZW9mIHByb3BzLmNvbnRlbnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnRlbnQgPSBKU09OLnBhcnNlKHByb3BzLmNvbnRlbnQpIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgSW52YWxpZCBKU09OIGluIG9yZ2FuaXNhdGlvbiBwb2xpY3kgXCIke3Byb3BzLm5hbWV9XCI6ICR7cHJvcHMuY29udGVudC5zbGljZSgwLCAxMDApfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29udGVudCA9IHByb3BzLmNvbnRlbnQ7XG4gICAgfVxuXG4gICAgY29uc3QgcG9saWN5ID0gbmV3IENmblBvbGljeSh0aGlzLCBcIlBvbGljeVwiLCB7XG4gICAgICBuYW1lOiBwcm9wcy5uYW1lLFxuICAgICAgdHlwZTogcHJvcHMucG9saWN5VHlwZSxcbiAgICAgIGNvbnRlbnQsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICB0YXJnZXRJZHM6IHByb3BzLnRhcmdldElkc1xuICAgIH0pO1xuXG4gICAgdGhpcy5wb2xpY3lJZCA9IHBvbGljeS5hdHRySWQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Organisational Unit management is handled by the CLI pre-deploy step
|
|
3
|
+
* (AwsAccountService.ensureOrganisationalUnitsExist).
|
|
4
|
+
*
|
|
5
|
+
* This module is retained only for type re-exports from the index barrel.
|
|
6
|
+
*/
|
|
7
|
+
export interface OrganisationalUnitProps {
|
|
8
|
+
name: string;
|
|
9
|
+
parentId: string;
|
|
10
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Organisational Unit management is handled by the CLI pre-deploy step
|
|
4
|
+
* (AwsAccountService.ensureOrganisationalUnitsExist).
|
|
5
|
+
*
|
|
6
|
+
* This module is retained only for type re-exports from the index barrel.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pc2F0aW9uYWxVbml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3Mvb3JnYW5pc2F0aW9uL29yZ2FuaXNhdGlvbmFsVW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7O0dBS0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE9yZ2FuaXNhdGlvbmFsIFVuaXQgbWFuYWdlbWVudCBpcyBoYW5kbGVkIGJ5IHRoZSBDTEkgcHJlLWRlcGxveSBzdGVwXG4gKiAoQXdzQWNjb3VudFNlcnZpY2UuZW5zdXJlT3JnYW5pc2F0aW9uYWxVbml0c0V4aXN0KS5cbiAqXG4gKiBUaGlzIG1vZHVsZSBpcyByZXRhaW5lZCBvbmx5IGZvciB0eXBlIHJlLWV4cG9ydHMgZnJvbSB0aGUgaW5kZXggYmFycmVsLlxuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pc2F0aW9uYWxVbml0UHJvcHMge1xuICBuYW1lOiBzdHJpbmc7XG4gIHBhcmVudElkOiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -4,9 +4,12 @@ exports.CustomerManagedKey = void 0;
|
|
|
4
4
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
5
|
const aws_kms_1 = require("aws-cdk-lib/aws-kms");
|
|
6
6
|
const constructs_1 = require("constructs");
|
|
7
|
+
const capitaliseString_1 = require("../../../utils/capitaliseString");
|
|
7
8
|
class CustomerManagedKey extends constructs_1.Construct {
|
|
8
9
|
constructor(scope, id, props) {
|
|
9
10
|
super(scope, id);
|
|
11
|
+
// Sanitise id for CloudFormation output keys (must be alphanumeric)
|
|
12
|
+
const outputName = (0, capitaliseString_1.toPascalCase)(id);
|
|
10
13
|
this.key = new aws_kms_1.Key(this, `${id}Key`, {
|
|
11
14
|
description: props.description || `${id} KMS Key`,
|
|
12
15
|
removalPolicy: props.removalPolicy ?? aws_cdk_lib_1.RemovalPolicy.RETAIN,
|
|
@@ -14,21 +17,21 @@ class CustomerManagedKey extends constructs_1.Construct {
|
|
|
14
17
|
? aws_cdk_lib_1.Duration.days(14)
|
|
15
18
|
: undefined
|
|
16
19
|
});
|
|
17
|
-
new aws_cdk_lib_1.CfnOutput(this, `${
|
|
18
|
-
key: `${
|
|
20
|
+
new aws_cdk_lib_1.CfnOutput(this, `${outputName}KeyArn`, {
|
|
21
|
+
key: `${outputName}Arn`,
|
|
19
22
|
value: this.key.keyArn,
|
|
20
|
-
exportName: `${
|
|
23
|
+
exportName: `${outputName}KeyArn`
|
|
21
24
|
});
|
|
22
25
|
this.alias = new aws_kms_1.Alias(this, `${id}KeyAlias`, {
|
|
23
26
|
aliasName: props.aliasName || `cmk/${id}`,
|
|
24
27
|
targetKey: this.key
|
|
25
28
|
});
|
|
26
|
-
new aws_cdk_lib_1.CfnOutput(this, `${
|
|
27
|
-
key: `${
|
|
29
|
+
new aws_cdk_lib_1.CfnOutput(this, `${outputName}KeyAliasArn`, {
|
|
30
|
+
key: `${outputName}AliasArn`,
|
|
28
31
|
value: this.alias.aliasArn,
|
|
29
|
-
exportName: `${
|
|
32
|
+
exportName: `${outputName}KeyAliasArn`
|
|
30
33
|
});
|
|
31
34
|
}
|
|
32
35
|
}
|
|
33
36
|
exports.CustomerManagedKey = CustomerManagedKey;
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia21zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3Mvc2VjcmV0cy9rbXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQWlFO0FBQ2pFLGlEQUFpRDtBQUNqRCwyQ0FBdUM7QUFDdkMsc0VBQStEO0FBb0IvRCxNQUFhLGtCQUFtQixTQUFRLHNCQUFTO0lBSS9DLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBOEI7UUFDdEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixvRUFBb0U7UUFDcEUsTUFBTSxVQUFVLEdBQUcsSUFBQSwrQkFBWSxFQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXBDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxhQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7WUFDbkMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksR0FBRyxFQUFFLFVBQVU7WUFDakQsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhLElBQUksMkJBQWEsQ0FBQyxNQUFNO1lBQzFELGFBQWEsRUFDWCxLQUFLLENBQUMsYUFBYSxLQUFLLDJCQUFhLENBQUMsT0FBTztnQkFDM0MsQ0FBQyxDQUFDLHNCQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDbkIsQ0FBQyxDQUFDLFNBQVM7U0FDaEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxHQUFHLFVBQVUsUUFBUSxFQUFFO1lBQ3pDLEdBQUcsRUFBRSxHQUFHLFVBQVUsS0FBSztZQUN2QixLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNO1lBQ3RCLFVBQVUsRUFBRSxHQUFHLFVBQVUsUUFBUTtTQUNsQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksZUFBSyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFO1lBQzVDLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxJQUFJLE9BQU8sRUFBRSxFQUFFO1lBQ3pDLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRztTQUNwQixDQUFDLENBQUM7UUFDSCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsVUFBVSxhQUFhLEVBQUU7WUFDOUMsR0FBRyxFQUFFLEdBQUcsVUFBVSxVQUFVO1lBQzVCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7WUFDMUIsVUFBVSxFQUFFLEdBQUcsVUFBVSxhQUFhO1NBQ3ZDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQWxDRCxnREFrQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5PdXRwdXQsIER1cmF0aW9uLCBSZW1vdmFsUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBBbGlhcywgS2V5IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1rbXNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyB0b1Bhc2NhbENhc2UgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvY2FwaXRhbGlzZVN0cmluZ1wiO1xuXG5pbnRlcmZhY2UgQ3VzdG9tZXJNYW5hZ2VkS2V5UHJvcHMge1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgYWxpYXNOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogUmVtb3ZhbCBwb2xpY3kgZm9yIHRoZSBLTVMga2V5LlxuICAgKlxuICAgKiBJTVBPUlRBTlQ6IEtNUyBrZXlzIGNhbm5vdCBiZSBpbW1lZGlhdGVseSBkZWxldGVkLiBXaGVuIFJlbW92YWxQb2xpY3kuREVTVFJPWVxuICAgKiBpcyB1c2VkLCB0aGUga2V5IHdpbGwgYmUgc2NoZWR1bGVkIGZvciBkZWxldGlvbiB3aXRoIGEgNy1kYXkgd2FpdGluZyBwZXJpb2RcbiAgICogKEFXUyBtaW5pbXVtKS4gRHVyaW5nIHRoaXMgcGVyaW9kLCB0aGUga2V5IGlzIGRpc2FibGVkIGJ1dCBjYW4gYmUgcmVjb3ZlcmVkLlxuICAgKlxuICAgKiBGb3IgcHJvZHVjdGlvbiB3b3JrbG9hZHMsIGFsd2F5cyB1c2UgUkVUQUlOIChkZWZhdWx0KSB0byBwcmV2ZW50IGFjY2lkZW50YWxcbiAgICogZGF0YSBsb3NzIC0gZGVsZXRpbmcgYSBLTVMga2V5IG1ha2VzIGFsbCBlbmNyeXB0ZWQgZGF0YSBwZXJtYW5lbnRseSB1bnJlY292ZXJhYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBSZW1vdmFsUG9saWN5LlJFVEFJTlxuICAgKi9cbiAgcmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG59XG5cbmV4cG9ydCBjbGFzcyBDdXN0b21lck1hbmFnZWRLZXkgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkga2V5OiBLZXk7XG4gIHB1YmxpYyByZWFkb25seSBhbGlhczogQWxpYXM7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEN1c3RvbWVyTWFuYWdlZEtleVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIC8vIFNhbml0aXNlIGlkIGZvciBDbG91ZEZvcm1hdGlvbiBvdXRwdXQga2V5cyAobXVzdCBiZSBhbHBoYW51bWVyaWMpXG4gICAgY29uc3Qgb3V0cHV0TmFtZSA9IHRvUGFzY2FsQ2FzZShpZCk7XG5cbiAgICB0aGlzLmtleSA9IG5ldyBLZXkodGhpcywgYCR7aWR9S2V5YCwge1xuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uIHx8IGAke2lkfSBLTVMgS2V5YCxcbiAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzLnJlbW92YWxQb2xpY3kgPz8gUmVtb3ZhbFBvbGljeS5SRVRBSU4sXG4gICAgICBwZW5kaW5nV2luZG93OlxuICAgICAgICBwcm9wcy5yZW1vdmFsUG9saWN5ID09PSBSZW1vdmFsUG9saWN5LkRFU1RST1lcbiAgICAgICAgICA/IER1cmF0aW9uLmRheXMoMTQpXG4gICAgICAgICAgOiB1bmRlZmluZWRcbiAgICB9KTtcbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke291dHB1dE5hbWV9S2V5QXJuYCwge1xuICAgICAga2V5OiBgJHtvdXRwdXROYW1lfUFybmAsXG4gICAgICB2YWx1ZTogdGhpcy5rZXkua2V5QXJuLFxuICAgICAgZXhwb3J0TmFtZTogYCR7b3V0cHV0TmFtZX1LZXlBcm5gXG4gICAgfSk7XG5cbiAgICB0aGlzLmFsaWFzID0gbmV3IEFsaWFzKHRoaXMsIGAke2lkfUtleUFsaWFzYCwge1xuICAgICAgYWxpYXNOYW1lOiBwcm9wcy5hbGlhc05hbWUgfHwgYGNtay8ke2lkfWAsXG4gICAgICB0YXJnZXRLZXk6IHRoaXMua2V5XG4gICAgfSk7XG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtvdXRwdXROYW1lfUtleUFsaWFzQXJuYCwge1xuICAgICAga2V5OiBgJHtvdXRwdXROYW1lfUFsaWFzQXJuYCxcbiAgICAgIHZhbHVlOiB0aGlzLmFsaWFzLmFsaWFzQXJuLFxuICAgICAgZXhwb3J0TmFtZTogYCR7b3V0cHV0TmFtZX1LZXlBbGlhc0FybmBcbiAgICB9KTtcbiAgfVxufVxuIl19
|