terraconstructs 0.0.14 → 0.0.15

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.
Files changed (204) hide show
  1. package/.jsii +6323 -4796
  2. package/lib/aws/arn.js +1 -1
  3. package/lib/aws/aws-construct.js +1 -1
  4. package/lib/aws/aws-stack.js +1 -1
  5. package/lib/aws/aws-tags.js +2 -2
  6. package/lib/aws/cloudwatch/actions/ec2.js +1 -1
  7. package/lib/aws/cloudwatch/actions/lambda.js +1 -1
  8. package/lib/aws/cloudwatch/alarm-base.js +1 -1
  9. package/lib/aws/cloudwatch/alarm-rule.js +1 -1
  10. package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
  11. package/lib/aws/cloudwatch/alarm.js +1 -1
  12. package/lib/aws/cloudwatch/composite-alarm.js +1 -1
  13. package/lib/aws/cloudwatch/dashboard.js +1 -1
  14. package/lib/aws/cloudwatch/data-protection-policy.js +3 -3
  15. package/lib/aws/cloudwatch/graph.js +8 -8
  16. package/lib/aws/cloudwatch/layout.js +3 -3
  17. package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
  18. package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
  19. package/lib/aws/cloudwatch/log-group.js +1 -1
  20. package/lib/aws/cloudwatch/log-query.js +1 -1
  21. package/lib/aws/cloudwatch/log-stream.js +1 -1
  22. package/lib/aws/cloudwatch/metric-filter.js +1 -1
  23. package/lib/aws/cloudwatch/metric.js +2 -2
  24. package/lib/aws/cloudwatch/pattern.js +3 -3
  25. package/lib/aws/cloudwatch/policy.js +1 -1
  26. package/lib/aws/cloudwatch/query-definition.js +2 -2
  27. package/lib/aws/cloudwatch/stats.js +1 -1
  28. package/lib/aws/cloudwatch/subscription-filter.js +1 -1
  29. package/lib/aws/cloudwatch/text.js +1 -1
  30. package/lib/aws/cloudwatch/variable.js +3 -3
  31. package/lib/aws/cloudwatch/widget.js +1 -1
  32. package/lib/aws/compute/activity.js +1 -1
  33. package/lib/aws/compute/alb/application-listener-action.js +1 -1
  34. package/lib/aws/compute/alb/application-listener-certificate.js +1 -1
  35. package/lib/aws/compute/alb/application-listener-rule.js +1 -1
  36. package/lib/aws/compute/alb/application-listener.js +1 -1
  37. package/lib/aws/compute/alb/application-load-balancer.js +1 -1
  38. package/lib/aws/compute/alb/application-target-group.js +1 -1
  39. package/lib/aws/compute/alb/conditions.js +1 -1
  40. package/lib/aws/compute/alb/trust-store-revocation.js +1 -1
  41. package/lib/aws/compute/alb/trust-store.js +1 -1
  42. package/lib/aws/compute/architecture.js +1 -1
  43. package/lib/aws/compute/aspects/require-imdsv2-aspect.js +2 -2
  44. package/lib/aws/compute/bastion-host.js +1 -1
  45. package/lib/aws/compute/chain.js +1 -1
  46. package/lib/aws/compute/client-vpn-authorization-rule.js +1 -1
  47. package/lib/aws/compute/client-vpn-endpoint.js +2 -2
  48. package/lib/aws/compute/client-vpn-route.js +2 -2
  49. package/lib/aws/compute/condition.js +1 -1
  50. package/lib/aws/compute/connections.js +1 -1
  51. package/lib/aws/compute/event-invoke-config.js +1 -1
  52. package/lib/aws/compute/event-source-filter.js +2 -2
  53. package/lib/aws/compute/event-source-mapping.js +1 -1
  54. package/lib/aws/compute/event-sources/s3-onfailure-destination.js +1 -1
  55. package/lib/aws/compute/event-sources/s3.js +1 -1
  56. package/lib/aws/compute/event-sources/sqs-dlq.js +1 -1
  57. package/lib/aws/compute/event-sources/sqs.js +1 -1
  58. package/lib/aws/compute/fields.js +4 -4
  59. package/lib/aws/compute/function-alias.js +1 -1
  60. package/lib/aws/compute/function-base.js +2 -2
  61. package/lib/aws/compute/function-destinations/event-bridge.js +1 -1
  62. package/lib/aws/compute/function-destinations/function.js +1 -1
  63. package/lib/aws/compute/function-destinations/sqs.js +1 -1
  64. package/lib/aws/compute/function-nodejs.js +1 -1
  65. package/lib/aws/compute/function-url.js +1 -1
  66. package/lib/aws/compute/function.js +1 -1
  67. package/lib/aws/compute/instance-types.js +1 -1
  68. package/lib/aws/compute/instance.js +1 -1
  69. package/lib/aws/compute/ip-addresses.js +2 -2
  70. package/lib/aws/compute/ipam.js +1 -1
  71. package/lib/aws/compute/key-pair.js +1 -1
  72. package/lib/aws/compute/launch-template.js +2 -2
  73. package/lib/aws/compute/lb-shared/base-listener.js +1 -1
  74. package/lib/aws/compute/lb-shared/base-load-balancer.js +1 -1
  75. package/lib/aws/compute/lb-shared/base-target-group.js +1 -1
  76. package/lib/aws/compute/lb-shared/listener-certificate.js +1 -1
  77. package/lib/aws/compute/lb-shared/load-balancer-targets.js +2 -2
  78. package/lib/aws/compute/lb-targets/alb-target.js +3 -3
  79. package/lib/aws/compute/lb-targets/instance-target.js +2 -2
  80. package/lib/aws/compute/lb-targets/ip-target.js +1 -1
  81. package/lib/aws/compute/lb-targets/lambda-target.js +1 -1
  82. package/lib/aws/compute/load-balancer.js +3 -3
  83. package/lib/aws/compute/machine-image/amazon-linux-2022.js +2 -2
  84. package/lib/aws/compute/machine-image/amazon-linux-2023.js +2 -2
  85. package/lib/aws/compute/machine-image/amazon-linux2.js +2 -2
  86. package/lib/aws/compute/machine-image/common.js +1 -1
  87. package/lib/aws/compute/machine-image/machine-image.js +8 -8
  88. package/lib/aws/compute/nat.js +5 -5
  89. package/lib/aws/compute/network-acl-types.js +2 -2
  90. package/lib/aws/compute/network-acl.js +3 -3
  91. package/lib/aws/compute/nlb/network-listener-action.js +1 -1
  92. package/lib/aws/compute/nlb/network-listener.js +1 -1
  93. package/lib/aws/compute/nlb/network-load-balancer.js +1 -1
  94. package/lib/aws/compute/nlb/network-target-group.js +1 -1
  95. package/lib/aws/compute/peer.js +1 -1
  96. package/lib/aws/compute/placement-group.js +1 -1
  97. package/lib/aws/compute/port.js +1 -1
  98. package/lib/aws/compute/prefix-list.js +1 -1
  99. package/lib/aws/compute/route.js +8 -8
  100. package/lib/aws/compute/security-group.js +1 -1
  101. package/lib/aws/compute/state-graph.js +1 -1
  102. package/lib/aws/compute/state-machine-fragment.js +1 -1
  103. package/lib/aws/compute/state-machine.js +4 -4
  104. package/lib/aws/compute/states/choice.js +1 -1
  105. package/lib/aws/compute/states/custom-state.js +1 -1
  106. package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
  107. package/lib/aws/compute/states/distributed-map/item-reader.js +5 -5
  108. package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
  109. package/lib/aws/compute/states/distributed-map.js +1 -1
  110. package/lib/aws/compute/states/fail.js +1 -1
  111. package/lib/aws/compute/states/map-base.js +1 -1
  112. package/lib/aws/compute/states/map.js +1 -1
  113. package/lib/aws/compute/states/parallel.js +1 -1
  114. package/lib/aws/compute/states/pass.js +2 -2
  115. package/lib/aws/compute/states/state.js +1 -1
  116. package/lib/aws/compute/states/succeed.js +1 -1
  117. package/lib/aws/compute/states/task-base.js +2 -2
  118. package/lib/aws/compute/states/task.js +1 -1
  119. package/lib/aws/compute/states/wait.js +2 -2
  120. package/lib/aws/compute/subnet-v2.js +2 -2
  121. package/lib/aws/compute/subnet.js +1 -1
  122. package/lib/aws/compute/task-credentials.js +1 -1
  123. package/lib/aws/compute/task-input.js +1 -1
  124. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +1 -1
  125. package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
  126. package/lib/aws/compute/tasks/http/invoke.js +1 -1
  127. package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
  128. package/lib/aws/compute/tasks/sqs/send-message.js +1 -1
  129. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
  130. package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
  131. package/lib/aws/compute/types.js +1 -1
  132. package/lib/aws/compute/user-data.js +3 -3
  133. package/lib/aws/compute/volume.js +2 -2
  134. package/lib/aws/compute/vpc-endpoint-service.js +1 -1
  135. package/lib/aws/compute/vpc-endpoint.js +6 -6
  136. package/lib/aws/compute/vpc-flow-logs.js +4 -4
  137. package/lib/aws/compute/vpc-v2-base.js +1 -1
  138. package/lib/aws/compute/vpc-v2.js +2 -2
  139. package/lib/aws/compute/vpc.js +4 -4
  140. package/lib/aws/compute/vpn.js +3 -3
  141. package/lib/aws/edge/certificate.js +1 -1
  142. package/lib/aws/edge/distribution.js +3 -3
  143. package/lib/aws/edge/dns-alias-record-targets.js +2 -2
  144. package/lib/aws/edge/dns-record.js +13 -13
  145. package/lib/aws/edge/dns-zone.js +1 -1
  146. package/lib/aws/edge/function.js +2 -2
  147. package/lib/aws/edge/key-value-store.js +4 -4
  148. package/lib/aws/edge/origin.js +3 -3
  149. package/lib/aws/edge/response-headers-policy.js +1 -1
  150. package/lib/aws/encryption/alias.js +1 -1
  151. package/lib/aws/encryption/key.js +1 -1
  152. package/lib/aws/encryption/via-service-principal.js +1 -1
  153. package/lib/aws/iam/grant.js +2 -2
  154. package/lib/aws/iam/group.d.ts +146 -0
  155. package/lib/aws/iam/group.js +199 -0
  156. package/lib/aws/iam/index.d.ts +2 -0
  157. package/lib/aws/iam/index.js +3 -1
  158. package/lib/aws/iam/instance-profile.js +1 -1
  159. package/lib/aws/iam/managed-policy.js +1 -1
  160. package/lib/aws/iam/oidc-provider.js +1 -1
  161. package/lib/aws/iam/policy-document.js +1 -1
  162. package/lib/aws/iam/policy-statement.js +1 -1
  163. package/lib/aws/iam/policy.d.ts +26 -0
  164. package/lib/aws/iam/policy.js +65 -4
  165. package/lib/aws/iam/principals.js +20 -20
  166. package/lib/aws/iam/role.js +1 -1
  167. package/lib/aws/iam/saml-provider.js +2 -2
  168. package/lib/aws/iam/unknown-principal.js +1 -1
  169. package/lib/aws/iam/user.d.ts +174 -0
  170. package/lib/aws/iam/user.js +236 -0
  171. package/lib/aws/network/simple-ipv4-vpc.js +1 -1
  172. package/lib/aws/network/subnet-group.js +3 -3
  173. package/lib/aws/network/subnet.js +4 -4
  174. package/lib/aws/notify/archive.js +1 -1
  175. package/lib/aws/notify/connection.js +3 -3
  176. package/lib/aws/notify/event-bus.js +3 -3
  177. package/lib/aws/notify/event-pattern.js +1 -1
  178. package/lib/aws/notify/input.js +2 -2
  179. package/lib/aws/notify/kinesis-stream.js +1 -1
  180. package/lib/aws/notify/queue-policy.js +1 -1
  181. package/lib/aws/notify/queue.js +1 -1
  182. package/lib/aws/notify/resource-policy.js +1 -1
  183. package/lib/aws/notify/rule.js +1 -1
  184. package/lib/aws/notify/schedule.js +1 -1
  185. package/lib/aws/notify/targets/event-bus.js +1 -1
  186. package/lib/aws/notify/targets/function.js +1 -1
  187. package/lib/aws/notify/targets/log-group.js +2 -2
  188. package/lib/aws/notify/targets/sqs.js +1 -1
  189. package/lib/aws/notify/targets/state-machine.js +1 -1
  190. package/lib/aws/storage/bucket-notifications.js +1 -1
  191. package/lib/aws/storage/bucket-policy.js +1 -1
  192. package/lib/aws/storage/bucket-source.js +1 -1
  193. package/lib/aws/storage/bucket.js +2 -2
  194. package/lib/aws/storage/notification-targets/function.js +1 -1
  195. package/lib/aws/storage/notification-targets/queue.js +1 -1
  196. package/lib/aws/storage/origin-access-identity.js +1 -1
  197. package/lib/aws/storage/parameter.js +2 -2
  198. package/lib/construct-base.js +2 -2
  199. package/lib/duration.js +1 -1
  200. package/lib/expiration.js +1 -1
  201. package/lib/size.js +1 -1
  202. package/lib/stack-base.js +1 -1
  203. package/lib/terra-func.js +1 -1
  204. package/package.json +1 -1
@@ -0,0 +1,146 @@
1
+ import { Construct } from "constructs";
2
+ import { AwsConstructBase, AwsConstructProps, IAwsConstruct } from "../aws-construct";
3
+ import { IIdentity } from "./identity-base";
4
+ import { IManagedPolicy } from "./managed-policy";
5
+ import { Policy } from "./policy";
6
+ import { PolicyStatement } from "./policy-statement";
7
+ import { AddToPrincipalPolicyResult, IPrincipal, PrincipalPolicyFragment } from "./principals";
8
+ import { IUser } from "./user";
9
+ /**
10
+ * Outputs which may be registered for output via the Grid.
11
+ */
12
+ export interface GroupOutputs {
13
+ readonly arn: string;
14
+ readonly name: string;
15
+ }
16
+ /**
17
+ * Represents an IAM Group.
18
+ *
19
+ * @see https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html
20
+ */
21
+ export interface IGroup extends IIdentity, IAwsConstruct {
22
+ /**
23
+ * strongly typed roleOutputs
24
+ *
25
+ * @attribute
26
+ */
27
+ readonly groupOutputs: GroupOutputs;
28
+ /**
29
+ * Returns the IAM Group Name
30
+ *
31
+ * @attribute
32
+ */
33
+ readonly groupName: string;
34
+ /**
35
+ * Returns the IAM Group ARN
36
+ *
37
+ * @attribute
38
+ */
39
+ readonly groupArn: string;
40
+ }
41
+ /**
42
+ * Properties for defining an IAM group.
43
+ */
44
+ export interface GroupProps extends AwsConstructProps {
45
+ /**
46
+ * A name for the IAM group. For valid values, see the GroupName parameter
47
+ * for the CreateGroup action in the IAM API Reference. If you don't specify
48
+ * a name, a unique physical name will be generated.
49
+ *
50
+ * @default Generated by the framework (recommended)
51
+ */
52
+ readonly groupName?: string;
53
+ /**
54
+ * A list of managed policies to associate with this group.
55
+ *
56
+ * You can later add managed policies by calling addManagedPolicy.
57
+ *
58
+ * @default - No managed policies.
59
+ */
60
+ readonly managedPolicies?: IManagedPolicy[];
61
+ /**
62
+ * The path to the group. For more information about paths, see
63
+ * "IAM Identifiers" in the IAM User Guide.
64
+ *
65
+ * @default "/"
66
+ */
67
+ readonly path?: string;
68
+ }
69
+ /**
70
+ * Base class for IAM Groups.
71
+ */
72
+ declare abstract class GroupBase extends AwsConstructBase implements IGroup {
73
+ abstract readonly groupName: string;
74
+ abstract readonly groupArn: string;
75
+ get groupOutputs(): GroupOutputs;
76
+ get outputs(): Record<string, any>;
77
+ readonly grantPrincipal: IPrincipal;
78
+ readonly principalAccount: string | undefined;
79
+ readonly assumeRoleAction: string;
80
+ private readonly attachedPolicies;
81
+ private defaultPolicy?;
82
+ get policyFragment(): PrincipalPolicyFragment;
83
+ /**
84
+ * Attaches an inline policy to this group.
85
+ * @param policy The policy to attach.
86
+ */
87
+ attachInlinePolicy(policy: Policy): void;
88
+ /**
89
+ * Adds a managed policy to this group.
90
+ * (Note: In TerraConstructs managed policies are attached separately so this method just tracks them.)
91
+ */
92
+ addManagedPolicy(_policy: IManagedPolicy): void;
93
+ /**
94
+ * Adds a user to this group.
95
+ */
96
+ addUser(user: IUser): void;
97
+ /**
98
+ * Adds an IAM statement to the default policy.
99
+ */
100
+ addToPrincipalPolicy(statement: PolicyStatement): AddToPrincipalPolicyResult;
101
+ addToPolicy(statement: PolicyStatement): boolean;
102
+ }
103
+ /**
104
+ * An IAM Group (a collection of IAM users) which lets you specify permissions for multiple users.
105
+ *
106
+ * @see https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html
107
+ */
108
+ export declare class Group extends GroupBase {
109
+ /**
110
+ * Import an external group by ARN.
111
+ *
112
+ * Note: If the imported Group ARN is a Token and contains a path,
113
+ * the groupName property may not resolve correctly. In that case supply an ARN without a path.
114
+ *
115
+ * @param scope construct scope
116
+ * @param id construct id
117
+ * @param groupArn the ARN of the group to import (e.g. arn:aws:iam::account-id:group/group-name)
118
+ */
119
+ static fromGroupArn(scope: Construct, id: string, groupArn: string): IGroup;
120
+ /**
121
+ * Import an existing group by given name (including path).
122
+ *
123
+ * @param scope construct scope
124
+ * @param id construct id
125
+ * @param groupName the full group name (with path) of the existing group to import
126
+ */
127
+ static fromGroupName(scope: Construct, id: string, groupName: string): IGroup;
128
+ readonly groupName: string;
129
+ readonly groupArn: string;
130
+ private readonly managedPolicies;
131
+ private readonly physicalName;
132
+ constructor(scope: Construct, id: string, props?: GroupProps);
133
+ /**
134
+ * Attaches a managed policy to this group.
135
+ * @param policy The managed policy to attach.
136
+ */
137
+ addManagedPolicy(policy: IManagedPolicy): void;
138
+ private managedPoliciesExceededWarning;
139
+ /**
140
+ * Adds resource to the terraform JSON output.
141
+ *
142
+ * called by TerraformStack.prepareStack()
143
+ */
144
+ toTerraform(): any;
145
+ }
146
+ export {};
@@ -0,0 +1,199 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Group = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ // https://github.com/aws/aws-cdk/blob/dd912daf2b91a4a32064341e92863afbd9eeebdd/packages/aws-cdk-lib/aws-iam/lib/group.ts
7
+ const provider_aws_1 = require("@cdktf/provider-aws");
8
+ const cdktf_1 = require("cdktf");
9
+ const arn_1 = require("../arn");
10
+ const aws_construct_1 = require("../aws-construct");
11
+ const aws_stack_1 = require("../aws-stack");
12
+ const policy_1 = require("./policy");
13
+ const principals_1 = require("./principals");
14
+ const util_1 = require("./private/util");
15
+ /**
16
+ * Base class for IAM Groups.
17
+ */
18
+ class GroupBase extends aws_construct_1.AwsConstructBase {
19
+ constructor() {
20
+ super(...arguments);
21
+ this.grantPrincipal = this;
22
+ this.principalAccount = this.env.account;
23
+ this.assumeRoleAction = "sts:AssumeRole";
24
+ this.attachedPolicies = new util_1.AttachedPolicies();
25
+ }
26
+ get groupOutputs() {
27
+ return {
28
+ arn: this.groupArn,
29
+ name: this.groupName,
30
+ };
31
+ }
32
+ get outputs() {
33
+ return this.groupOutputs;
34
+ }
35
+ get policyFragment() {
36
+ return new principals_1.ArnPrincipal(this.groupArn).policyFragment;
37
+ }
38
+ /**
39
+ * Attaches an inline policy to this group.
40
+ * @param policy The policy to attach.
41
+ */
42
+ attachInlinePolicy(policy) {
43
+ this.attachedPolicies.attach(policy);
44
+ policy.attachToGroup(this);
45
+ }
46
+ /**
47
+ * Adds a managed policy to this group.
48
+ * (Note: In TerraConstructs managed policies are attached separately so this method just tracks them.)
49
+ */
50
+ addManagedPolicy(_policy) {
51
+ // No-op here; managed policies are attached externally via separate resources.
52
+ }
53
+ /**
54
+ * Adds a user to this group.
55
+ */
56
+ addUser(user) {
57
+ user.addToGroup(this);
58
+ }
59
+ /**
60
+ * Adds an IAM statement to the default policy.
61
+ */
62
+ addToPrincipalPolicy(statement) {
63
+ if (!this.defaultPolicy) {
64
+ this.defaultPolicy = new policy_1.Policy(this, "DefaultPolicy");
65
+ this.defaultPolicy.attachToGroup(this);
66
+ }
67
+ this.defaultPolicy.addStatements(statement);
68
+ return { statementAdded: true, policyDependable: this.defaultPolicy };
69
+ }
70
+ addToPolicy(statement) {
71
+ return this.addToPrincipalPolicy(statement).statementAdded;
72
+ }
73
+ }
74
+ /**
75
+ * An IAM Group (a collection of IAM users) which lets you specify permissions for multiple users.
76
+ *
77
+ * @see https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html
78
+ */
79
+ class Group extends GroupBase {
80
+ /**
81
+ * Import an external group by ARN.
82
+ *
83
+ * Note: If the imported Group ARN is a Token and contains a path,
84
+ * the groupName property may not resolve correctly. In that case supply an ARN without a path.
85
+ *
86
+ * @param scope construct scope
87
+ * @param id construct id
88
+ * @param groupArn the ARN of the group to import (e.g. arn:aws:iam::account-id:group/group-name)
89
+ */
90
+ static fromGroupArn(scope, id, groupArn) {
91
+ const arnComponents = aws_stack_1.AwsStack.ofAwsConstruct(scope).splitArn(groupArn, arn_1.ArnFormat.SLASH_RESOURCE_NAME);
92
+ const groupName = arnComponents.resourceName;
93
+ class Import extends GroupBase {
94
+ constructor() {
95
+ super(...arguments);
96
+ this.groupName = groupName;
97
+ this.groupArn = groupArn;
98
+ this.principalAccount = arnComponents.account;
99
+ }
100
+ }
101
+ return new Import(scope, id);
102
+ }
103
+ /**
104
+ * Import an existing group by given name (including path).
105
+ *
106
+ * @param scope construct scope
107
+ * @param id construct id
108
+ * @param groupName the full group name (with path) of the existing group to import
109
+ */
110
+ static fromGroupName(scope, id, groupName) {
111
+ const groupArn = aws_stack_1.AwsStack.ofAwsConstruct(scope).formatArn({
112
+ service: "iam",
113
+ region: "",
114
+ resource: "group",
115
+ resourceName: groupName,
116
+ });
117
+ return Group.fromGroupArn(scope, id, groupArn);
118
+ }
119
+ constructor(scope, id, props = {}) {
120
+ super(scope, id, props);
121
+ this.managedPolicies = [];
122
+ this.physicalName =
123
+ props.groupName ||
124
+ this.stack.uniqueResourceName(this, {
125
+ prefix: this.gridUUID,
126
+ });
127
+ if (props.managedPolicies) {
128
+ this.managedPolicies.push(...props.managedPolicies);
129
+ }
130
+ // Create the IAM Group using Terraform AWS Provider's IAM Group.
131
+ const groupResource = new provider_aws_1.iamGroup.IamGroup(this, "Resource", {
132
+ name: this.physicalName,
133
+ path: props.path,
134
+ });
135
+ this.groupName = groupResource.name;
136
+ this.groupArn = groupResource.arn;
137
+ // this.getResourceArnAttribute(groupResource.arn, {
138
+ // region: "", // IAM is global per partition.
139
+ // service: "iam",
140
+ // resource: "group",
141
+ // resourceName: `${props.path ? (props.path.startsWith("/") ? props.path.substring(1) : props.path) : ""}${this.physicalName}`,
142
+ // });
143
+ this.managedPoliciesExceededWarning();
144
+ }
145
+ /**
146
+ * Attaches a managed policy to this group.
147
+ * @param policy The managed policy to attach.
148
+ */
149
+ addManagedPolicy(policy) {
150
+ if (this.managedPolicies.indexOf(policy) >= 0) {
151
+ return;
152
+ }
153
+ this.managedPolicies.push(policy);
154
+ this.managedPoliciesExceededWarning();
155
+ }
156
+ managedPoliciesExceededWarning() {
157
+ if (this.managedPolicies.length > 10) {
158
+ // "@aws-cdk/aws-iam:groupMaxPoliciesExceeded",
159
+ cdktf_1.Annotations.of(this).addWarning(`You added ${this.managedPolicies.length} managed policies to IAM Group ${this.physicalName}. The maximum number of managed policies attached to an IAM group is 10.`);
160
+ }
161
+ }
162
+ /**
163
+ * Adds resource to the terraform JSON output.
164
+ *
165
+ * called by TerraformStack.prepareStack()
166
+ */
167
+ toTerraform() {
168
+ /**
169
+ * A preparing resolve run might add new resources to the stack
170
+ *
171
+ * should not add resources if `force` is `false` and the policy
172
+ * document is empty or not attached
173
+ * ref: https://github.com/aws/aws-cdk/blob/v2.143.0/packages/aws-cdk-lib/aws-iam/lib/policy.ts#L149
174
+ */
175
+ if (this.managedPolicies.length === 0) {
176
+ return {};
177
+ }
178
+ // add iamGroupPolicyAttachment resource for each referenced ManagedPolicy
179
+ // NOTE: The TerraformDependendableAspect will propgate construct dependencies on this policy to its IamRolePolicy resources
180
+ // not sure if time.sleep is still necessary?
181
+ // https://github.com/pulumi/pulumi-aws/issues/2260#issuecomment-1977606509
182
+ // else need: https://github.com/hashicorp/terraform-provider-aws/issues/29828#issuecomment-1693307500
183
+ for (let i = 0; i < this.managedPolicies.length; i++) {
184
+ const id = `ResourceManagedPolicy${i}`; // unique id for each managed policy
185
+ // ignore if already generated
186
+ if (this.node.tryFindChild(id))
187
+ continue;
188
+ new provider_aws_1.iamGroupPolicyAttachment.IamGroupPolicyAttachment(this, id, {
189
+ group: this.groupName,
190
+ policyArn: this.managedPolicies[i].managedPolicyArn,
191
+ });
192
+ }
193
+ return {};
194
+ }
195
+ }
196
+ exports.Group = Group;
197
+ _a = JSII_RTTI_SYMBOL_1;
198
+ Group[_a] = { fqn: "terraconstructs.aws.iam.Group", version: "0.0.15" };
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2lhbS9ncm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlIQUF5SDtBQUV6SCxzREFHNkI7QUFDN0IsaUNBQW9DO0FBRXBDLGdDQUFtQztBQUNuQyxvREFJMEI7QUFDMUIsNENBQXdDO0FBR3hDLHFDQUFrQztBQUVsQyw2Q0FLc0I7QUFDdEIseUNBQWtEO0FBc0VsRDs7R0FFRztBQUNILE1BQWUsU0FBVSxTQUFRLGdDQUFnQjtJQUFqRDs7UUFha0IsbUJBQWMsR0FBZSxJQUFJLENBQUM7UUFDbEMscUJBQWdCLEdBQXVCLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO1FBQ3hELHFCQUFnQixHQUFXLGdCQUFnQixDQUFDO1FBRTNDLHFCQUFnQixHQUFHLElBQUksdUJBQWdCLEVBQUUsQ0FBQztJQWdEN0QsQ0FBQztJQTlEQyxJQUFXLFlBQVk7UUFDckIsT0FBTztZQUNMLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNsQixJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDckIsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFTRCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLHlCQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksa0JBQWtCLENBQUMsTUFBYztRQUN0QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGdCQUFnQixDQUFDLE9BQXVCO1FBQzdDLCtFQUErRTtJQUNqRixDQUFDO0lBRUQ7O09B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QUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNyRCxNQUFNLEVBQUUsR0FBRyx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxvQ0FBb0M7WUFDNUUsOEJBQThCO1lBQzlCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO2dCQUFFLFNBQVM7WUFFekMsSUFBSSx1Q0FBd0IsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUM5RCxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVM7Z0JBQ3JCLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQjthQUNwRCxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDOztBQTNJSCxzQkE0SUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi9kZDkxMmRhZjJiOTFhNGEzMjA2NDM0MWU5Mjg2M2FmYmQ5ZWVlYmRkL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1pYW0vbGliL2dyb3VwLnRzXG5cbmltcG9ydCB7XG4gIGlhbUdyb3VwUG9saWN5QXR0YWNobWVudCxcbiAgaWFtR3JvdXAgYXMgdGZJYW1Hcm91cCxcbn0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1hd3NcIjtcbmltcG9ydCB7IEFubm90YXRpb25zIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQXJuRm9ybWF0IH0gZnJvbSBcIi4uL2FyblwiO1xuaW1wb3J0IHtcbiAgQXdzQ29uc3RydWN0QmFzZSxcbiAgQXdzQ29uc3RydWN0UHJvcHMsXG4gIElBd3NDb25zdHJ1Y3QsXG59IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5pbXBvcnQgeyBBd3NTdGFjayB9IGZyb20gXCIuLi9hd3Mtc3RhY2tcIjtcbmltcG9ydCB7IElJZGVudGl0eSB9IGZyb20gXCIuL2lkZW50aXR5LWJhc2VcIjtcbmltcG9ydCB7IElNYW5hZ2VkUG9saWN5IH0gZnJvbSBcIi4vbWFuYWdlZC1wb2xpY3lcIjtcbmltcG9ydCB7IFBvbGljeSB9IGZyb20gXCIuL3BvbGljeVwiO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50IH0gZnJvbSBcIi4vcG9saWN5LXN0YXRlbWVudFwiO1xuaW1wb3J0IHtcbiAgQWRkVG9QcmluY2lwYWxQb2xpY3lSZXN1bHQsXG4gIEFyblByaW5jaXBhbCxcbiAgSVByaW5jaXBhbCxcbiAgUHJpbmNpcGFsUG9saWN5RnJhZ21lbnQsXG59IGZyb20gXCIuL3ByaW5jaXBhbHNcIjtcbmltcG9ydCB7IEF0dGFjaGVkUG9saWNpZXMgfSBmcm9tIFwiLi9wcml2YXRlL3V0aWxcIjtcbmltcG9ydCB7IElVc2VyIH0gZnJvbSBcIi4vdXNlclwiO1xuXG4vKipcbiAqIE91dHB1dHMgd2hpY2ggbWF5IGJlIHJlZ2lzdGVyZWQgZm9yIG91dHB1dCB2aWEgdGhlIEdyaWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXBPdXRwdXRzIHtcbiAgcmVhZG9ubHkgYXJuOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIElBTSBHcm91cC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9pZF9ncm91cHMuaHRtbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElHcm91cCBleHRlbmRzIElJZGVudGl0eSwgSUF3c0NvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBzdHJvbmdseSB0eXBlZCByb2xlT3V0cHV0c1xuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBncm91cE91dHB1dHM6IEdyb3VwT3V0cHV0cztcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgSUFNIEdyb3VwIE5hbWVcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZ3JvdXBOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIElBTSBHcm91cCBBUk5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZ3JvdXBBcm46IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBkZWZpbmluZyBhbiBJQU0gZ3JvdXAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXBQcm9wcyBleHRlbmRzIEF3c0NvbnN0cnVjdFByb3BzIHtcbiAgLyoqXG4gICAqIEEgbmFtZSBmb3IgdGhlIElBTSBncm91cC4gRm9yIHZhbGlkIHZhbHVlcywgc2VlIHRoZSBHcm91cE5hbWUgcGFyYW1ldGVyXG4gICAqIGZvciB0aGUgQ3JlYXRlR3JvdXAgYWN0aW9uIGluIHRoZSBJQU0gQVBJIFJlZmVyZW5jZS4gSWYgeW91IGRvbid0IHNwZWNpZnlcbiAgICogYSBuYW1lLCBhIHVuaXF1ZSBwaHlzaWNhbCBuYW1lIHdpbGwgYmUgZ2VuZXJhdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBHZW5lcmF0ZWQgYnkgdGhlIGZyYW1ld29yayAocmVjb21tZW5kZWQpXG4gICAqL1xuICByZWFkb25seSBncm91cE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBtYW5hZ2VkIHBvbGljaWVzIHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgZ3JvdXAuXG4gICAqXG4gICAqIFlvdSBjYW4gbGF0ZXIgYWRkIG1hbmFnZWQgcG9saWNpZXMgYnkgY2FsbGluZyBhZGRNYW5hZ2VkUG9saWN5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIG1hbmFnZWQgcG9saWNpZXMuXG4gICAqL1xuICByZWFkb25seSBtYW5hZ2VkUG9saWNpZXM/OiBJTWFuYWdlZFBvbGljeVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB0aGUgZ3JvdXAuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHBhdGhzLCBzZWVcbiAgICogXCJJQU0gSWRlbnRpZmllcnNcIiBpbiB0aGUgSUFNIFVzZXIgR3VpZGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiL1wiXG4gICAqL1xuICByZWFkb25seSBwYXRoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIElBTSBHcm91cHMuXG4gKi9cbmFic3RyYWN0IGNsYXNzIEdyb3VwQmFzZSBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2UgaW1wbGVtZW50cyBJR3JvdXAge1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgZ3JvdXBOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBncm91cEFybjogc3RyaW5nO1xuICBwdWJsaWMgZ2V0IGdyb3VwT3V0cHV0cygpOiBHcm91cE91dHB1dHMge1xuICAgIHJldHVybiB7XG4gICAgICBhcm46IHRoaXMuZ3JvdXBBcm4sXG4gICAgICBuYW1lOiB0aGlzLmdyb3VwTmFtZSxcbiAgICB9O1xuICB9XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5ncm91cE91dHB1dHM7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgZ3JhbnRQcmluY2lwYWw6IElQcmluY2lwYWwgPSB0aGlzO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJpbmNpcGFsQWNjb3VudDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5lbnYuYWNjb3VudDtcbiAgcHVibGljIHJlYWRvbmx5IGFzc3VtZVJvbGVBY3Rpb246IHN0cmluZyA9IFwic3RzOkFzc3VtZVJvbGVcIjtcblxuICBwcml2YXRlIHJlYWRvbmx5IGF0dGFjaGVkUG9saWNpZXMgPSBuZXcgQXR0YWNoZWRQb2xpY2llcygpO1xuICBwcml2YXRlIGRlZmF1bHRQb2xpY3k/OiBQb2xpY3k7XG5cbiAgcHVibGljIGdldCBwb2xpY3lGcmFnbWVudCgpOiBQcmluY2lwYWxQb2xpY3lGcmFnbWVudCB7XG4gICAgcmV0dXJuIG5ldyBBcm5QcmluY2lwYWwodGhpcy5ncm91cEFybikucG9saWN5RnJhZ21lbnQ7XG4gIH1cblxuICAvKipcbiAgICogQXR0YWNoZXMgYW4gaW5saW5lIHBvbGljeSB0byB0aGlzIGdyb3VwLlxuICAgKiBAcGFyYW0gcG9saWN5IFRoZSBwb2xpY3kgdG8gYXR0YWNoLlxuICAgKi9cbiAgcHVibGljIGF0dGFjaElubGluZVBvbGljeShwb2xpY3k6IFBvbGljeSk6IHZvaWQge1xuICAgIHRoaXMuYXR0YWNoZWRQb2xpY2llcy5hdHRhY2gocG9saWN5KTtcbiAgICBwb2xpY3kuYXR0YWNoVG9Hcm91cCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbWFuYWdlZCBwb2xpY3kgdG8gdGhpcyBncm91cC5cbiAgICogKE5vdGU6IEluIFRlcnJhQ29uc3RydWN0cyBtYW5hZ2VkIHBvbGljaWVzIGFyZSBhdHRhY2hlZCBzZXBhcmF0ZWx5IHNvIHRoaXMgbWV0aG9kIGp1c3QgdHJhY2tzIHRoZW0uKVxuICAgKi9cbiAgcHVibGljIGFkZE1hbmFnZWRQb2xpY3koX3BvbGljeTogSU1hbmFnZWRQb2xpY3kpOiB2b2lkIHtcbiAgICAvLyBOby1vcCBoZXJlOyBtYW5hZ2VkIHBvbGljaWVzIGFyZSBhdHRhY2hlZCBleHRlcm5hbGx5IHZpYSBzZXBhcmF0ZSByZXNvdXJjZXMuXG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHVzZXIgdG8gdGhpcyBncm91cC5cbiAgICovXG4gIHB1YmxpYyBhZGRVc2VyKHVzZXI6IElVc2VyKTogdm9pZCB7XG4gICAgdXNlci5hZGRUb0dyb3VwKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gSUFNIHN0YXRlbWVudCB0byB0aGUgZGVmYXVsdCBwb2xpY3kuXG4gICAqL1xuICBwdWJsaWMgYWRkVG9QcmluY2lwYWxQb2xpY3koXG4gICAgc3RhdGVtZW50OiBQb2xpY3lTdGF0ZW1lbnQsXG4gICk6IEFkZFRvUHJpbmNpcGFsUG9saWN5UmVzdWx0IHtcbiAgICBpZiAoIXRoaXMuZGVmYXVsdFBvbGljeSkge1xuICAgICAgdGhpcy5kZWZhdWx0UG9saWN5ID0gbmV3IFBvbGljeSh0aGlzLCBcIkRlZmF1bHRQb2xpY3lcIik7XG4gICAgICB0aGlzLmRlZmF1bHRQb2xpY3kuYXR0YWNoVG9Hcm91cCh0aGlzKTtcbiAgICB9XG4gICAgdGhpcy5kZWZhdWx0UG9saWN5LmFkZFN0YXRlbWVudHMoc3RhdGVtZW50KTtcbiAgICByZXR1cm4geyBzdGF0ZW1lbnRBZGRlZDogdHJ1ZSwgcG9saWN5RGVwZW5kYWJsZTogdGhpcy5kZWZhdWx0UG9saWN5IH07XG4gIH1cblxuICBwdWJsaWMgYWRkVG9Qb2xpY3koc3RhdGVtZW50OiBQb2xpY3lTdGF0ZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hZGRUb1ByaW5jaXBhbFBvbGljeShzdGF0ZW1lbnQpLnN0YXRlbWVudEFkZGVkO1xuICB9XG59XG5cbi8qKlxuICogQW4gSUFNIEdyb3VwIChhIGNvbGxlY3Rpb24gb2YgSUFNIHVzZXJzKSB3aGljaCBsZXRzIHlvdSBzcGVjaWZ5IHBlcm1pc3Npb25zIGZvciBtdWx0aXBsZSB1c2Vycy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9pZF9ncm91cHMuaHRtbFxuICovXG5leHBvcnQgY2xhc3MgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2Uge1xuICAvKipcbiAgICogSW1wb3J0IGFuIGV4dGVybmFsIGdyb3VwIGJ5IEFSTi5cbiAgICpcbiAgICogTm90ZTogSWYgdGhlIGltcG9ydGVkIEdyb3VwIEFSTiBpcyBhIFRva2VuIGFuZCBjb250YWlucyBhIHBhdGgsXG4gICAqIHRoZSBncm91cE5hbWUgcHJvcGVydHkgbWF5IG5vdCByZXNvbHZlIGNvcnJlY3RseS4gSW4gdGhhdCBjYXNlIHN1cHBseSBhbiBBUk4gd2l0aG91dCBhIHBhdGguXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIGNvbnN0cnVjdCBpZFxuICAgKiBAcGFyYW0gZ3JvdXBBcm4gdGhlIEFSTiBvZiB0aGUgZ3JvdXAgdG8gaW1wb3J0IChlLmcuIGFybjphd3M6aWFtOjphY2NvdW50LWlkOmdyb3VwL2dyb3VwLW5hbWUpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Hcm91cEFybihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgZ3JvdXBBcm46IHN0cmluZyxcbiAgKTogSUdyb3VwIHtcbiAgICBjb25zdCBhcm5Db21wb25lbnRzID0gQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3Qoc2NvcGUpLnNwbGl0QXJuKFxuICAgICAgZ3JvdXBBcm4sXG4gICAgICBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICApO1xuICAgIGNvbnN0IGdyb3VwTmFtZSA9IGFybkNvbXBvbmVudHMucmVzb3VyY2VOYW1lITtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBHcm91cEJhc2Uge1xuICAgICAgcHVibGljIGdyb3VwTmFtZSA9IGdyb3VwTmFtZTtcbiAgICAgIHB1YmxpYyBncm91cEFybiA9IGdyb3VwQXJuO1xuICAgICAgcHVibGljIHByaW5jaXBhbEFjY291bnQgPSBhcm5Db21wb25lbnRzLmFjY291bnQ7XG4gICAgfVxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGdyb3VwIGJ5IGdpdmVuIG5hbWUgKGluY2x1ZGluZyBwYXRoKS5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcGFyYW0gaWQgY29uc3RydWN0IGlkXG4gICAqIEBwYXJhbSBncm91cE5hbWUgdGhlIGZ1bGwgZ3JvdXAgbmFtZSAod2l0aCBwYXRoKSBvZiB0aGUgZXhpc3RpbmcgZ3JvdXAgdG8gaW1wb3J0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Hcm91cE5hbWUoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGdyb3VwTmFtZTogc3RyaW5nLFxuICApOiBJR3JvdXAge1xuICAgIGNvbnN0IGdyb3VwQXJuID0gQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3Qoc2NvcGUpLmZvcm1hdEFybih7XG4gICAgICBzZXJ2aWNlOiBcImlhbVwiLFxuICAgICAgcmVnaW9uOiBcIlwiLFxuICAgICAgcmVzb3VyY2U6IFwiZ3JvdXBcIixcbiAgICAgIHJlc291cmNlTmFtZTogZ3JvdXBOYW1lLFxuICAgIH0pO1xuICAgIHJldHVybiBHcm91cC5mcm9tR3JvdXBBcm4oc2NvcGUsIGlkLCBncm91cEFybik7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgZ3JvdXBOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBncm91cEFybjogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbWFuYWdlZFBvbGljaWVzOiBJTWFuYWdlZFBvbGljeVtdID0gW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwaHlzaWNhbE5hbWU6IHN0cmluZztcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEdyb3VwUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIHRoaXMucGh5c2ljYWxOYW1lID1cbiAgICAgIHByb3BzLmdyb3VwTmFtZSB8fFxuICAgICAgdGhpcy5zdGFjay51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywge1xuICAgICAgICBwcmVmaXg6IHRoaXMuZ3JpZFVVSUQsXG4gICAgICB9KTtcblxuICAgIGlmIChwcm9wcy5tYW5hZ2VkUG9saWNpZXMpIHtcbiAgICAgIHRoaXMubWFuYWdlZFBvbGljaWVzLnB1c2goLi4ucHJvcHMubWFuYWdlZFBvbGljaWVzKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdGhlIElBTSBHcm91cCB1c2luZyBUZXJyYWZvcm0gQVdTIFByb3ZpZGVyJ3MgSUFNIEdyb3VwLlxuICAgIGNvbnN0IGdyb3VwUmVzb3VyY2UgPSBuZXcgdGZJYW1Hcm91cC5JYW1Hcm91cCh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIG5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgICAgcGF0aDogcHJvcHMucGF0aCxcbiAgICB9KTtcblxuICAgIHRoaXMuZ3JvdXBOYW1lID0gZ3JvdXBSZXNvdXJjZS5uYW1lO1xuICAgIHRoaXMuZ3JvdXBBcm4gPSBncm91cFJlc291cmNlLmFybjtcbiAgICAvLyB0aGlzLmdldFJlc291cmNlQXJuQXR0cmlidXRlKGdyb3VwUmVzb3VyY2UuYXJuLCB7XG4gICAgLy8gICByZWdpb246IFwiXCIsIC8vIElBTSBpcyBnbG9iYWwgcGVyIHBhcnRpdGlvbi5cbiAgICAvLyAgIHNlcnZpY2U6IFwiaWFtXCIsXG4gICAgLy8gICByZXNvdXJjZTogXCJncm91cFwiLFxuICAgIC8vICAgcmVzb3VyY2VOYW1lOiBgJHtwcm9wcy5wYXRoID8gKHByb3BzLnBhdGguc3RhcnRzV2l0aChcIi9cIikgPyBwcm9wcy5wYXRoLnN1YnN0cmluZygxKSA6IHByb3BzLnBhdGgpIDogXCJcIn0ke3RoaXMucGh5c2ljYWxOYW1lfWAsXG4gICAgLy8gfSk7XG5cbiAgICB0aGlzLm1hbmFnZWRQb2xpY2llc0V4Y2VlZGVkV2FybmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGFjaGVzIGEgbWFuYWdlZCBwb2xpY3kgdG8gdGhpcyBncm91cC5cbiAgICogQHBhcmFtIHBvbGljeSBUaGUgbWFuYWdlZCBwb2xpY3kgdG8gYXR0YWNoLlxuICAgKi9cbiAgcHVibGljIGFkZE1hbmFnZWRQb2xpY3kocG9saWN5OiBJTWFuYWdlZFBvbGljeSk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1hbmFnZWRQb2xpY2llcy5pbmRleE9mKHBvbGljeSkgPj0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm1hbmFnZWRQb2xpY2llcy5wdXNoKHBvbGljeSk7XG4gICAgdGhpcy5tYW5hZ2VkUG9saWNpZXNFeGNlZWRlZFdhcm5pbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFuYWdlZFBvbGljaWVzRXhjZWVkZWRXYXJuaW5nKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1hbmFnZWRQb2xpY2llcy5sZW5ndGggPiAxMCkge1xuICAgICAgLy8gXCJAYXdzLWNkay9hd3MtaWFtOmdyb3VwTWF4UG9saWNpZXNFeGNlZWRlZFwiLFxuICAgICAgQW5ub3RhdGlvbnMub2YodGhpcykuYWRkV2FybmluZyhcbiAgICAgICAgYFlvdSBhZGRlZCAke3RoaXMubWFuYWdlZFBvbGljaWVzLmxlbmd0aH0gbWFuYWdlZCBwb2xpY2llcyB0byBJQU0gR3JvdXAgJHt0aGlzLnBoeXNpY2FsTmFtZX0uIFRoZSBtYXhpbXVtIG51bWJlciBvZiBtYW5hZ2VkIHBvbGljaWVzIGF0dGFjaGVkIHRvIGFuIElBTSBncm91cCBpcyAxMC5gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEFkZHMgcmVzb3VyY2UgdG8gdGhlIHRlcnJhZm9ybSBKU09OIG91dHB1dC5cbiAgICpcbiAgICogY2FsbGVkIGJ5IFRlcnJhZm9ybVN0YWNrLnByZXBhcmVTdGFjaygpXG4gICAqL1xuICBwdWJsaWMgdG9UZXJyYWZvcm0oKTogYW55IHtcbiAgICAvKipcbiAgICAgKiBBIHByZXBhcmluZyByZXNvbHZlIHJ1biBtaWdodCBhZGQgbmV3IHJlc291cmNlcyB0byB0aGUgc3RhY2tcbiAgICAgKlxuICAgICAqIHNob3VsZCBub3QgYWRkIHJlc291cmNlcyBpZiBgZm9yY2VgIGlzIGBmYWxzZWAgYW5kIHRoZSBwb2xpY3lcbiAgICAgKiBkb2N1bWVudCBpcyBlbXB0eSBvciBub3QgYXR0YWNoZWRcbiAgICAgKiByZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE0My4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1pYW0vbGliL3BvbGljeS50cyNMMTQ5XG4gICAgICovXG4gICAgaWYgKHRoaXMubWFuYWdlZFBvbGljaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIC8vIGFkZCBpYW1Hcm91cFBvbGljeUF0dGFjaG1lbnQgcmVzb3VyY2UgZm9yIGVhY2ggcmVmZXJlbmNlZCBNYW5hZ2VkUG9saWN5XG4gICAgLy8gTk9URTogVGhlIFRlcnJhZm9ybURlcGVuZGVuZGFibGVBc3BlY3Qgd2lsbCBwcm9wZ2F0ZSBjb25zdHJ1Y3QgZGVwZW5kZW5jaWVzIG9uIHRoaXMgcG9saWN5IHRvIGl0cyBJYW1Sb2xlUG9saWN5IHJlc291cmNlc1xuICAgIC8vIG5vdCBzdXJlIGlmIHRpbWUuc2xlZXAgaXMgc3RpbGwgbmVjZXNzYXJ5P1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wdWx1bWkvcHVsdW1pLWF3cy9pc3N1ZXMvMjI2MCNpc3N1ZWNvbW1lbnQtMTk3NzYwNjUwOVxuICAgIC8vIGVsc2UgbmVlZDogaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tcHJvdmlkZXItYXdzL2lzc3Vlcy8yOTgyOCNpc3N1ZWNvbW1lbnQtMTY5MzMwNzUwMFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5tYW5hZ2VkUG9saWNpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGlkID0gYFJlc291cmNlTWFuYWdlZFBvbGljeSR7aX1gOyAvLyB1bmlxdWUgaWQgZm9yIGVhY2ggbWFuYWdlZCBwb2xpY3lcbiAgICAgIC8vIGlnbm9yZSBpZiBhbHJlYWR5IGdlbmVyYXRlZFxuICAgICAgaWYgKHRoaXMubm9kZS50cnlGaW5kQ2hpbGQoaWQpKSBjb250aW51ZTtcblxuICAgICAgbmV3IGlhbUdyb3VwUG9saWN5QXR0YWNobWVudC5JYW1Hcm91cFBvbGljeUF0dGFjaG1lbnQodGhpcywgaWQsIHtcbiAgICAgICAgZ3JvdXA6IHRoaXMuZ3JvdXBOYW1lLFxuICAgICAgICBwb2xpY3lBcm46IHRoaXMubWFuYWdlZFBvbGljaWVzW2ldLm1hbmFnZWRQb2xpY3lBcm4sXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG59XG4iXX0=
@@ -13,5 +13,7 @@ export * from "./saml-provider";
13
13
  export * from "./unknown-principal";
14
14
  export * from "./utils";
15
15
  export * from "./instance-profile";
16
+ export * from "./group";
17
+ export * from "./user";
16
18
  export * from "./policy-statement-props.generated";
17
19
  export * from "./policy-document-config.generated";
@@ -29,7 +29,9 @@ __exportStar(require("./saml-provider"), exports);
29
29
  __exportStar(require("./unknown-principal"), exports);
30
30
  __exportStar(require("./utils"), exports);
31
31
  __exportStar(require("./instance-profile"), exports);
32
+ __exportStar(require("./group"), exports);
33
+ __exportStar(require("./user"), exports);
32
34
  // auto generated by struct-builder
33
35
  __exportStar(require("./policy-statement-props.generated"), exports);
34
36
  __exportStar(require("./policy-document-config.generated"), exports);
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2lhbS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBQXdCO0FBQ3hCLGtEQUFnQztBQUNoQyxtREFBaUM7QUFDakMsa0RBQWdDO0FBQ2hDLHFFQUFtRDtBQUNuRCxvREFBa0M7QUFDbEMscUVBQW1EO0FBQ25ELHFEQUFtQztBQUNuQywyQ0FBeUI7QUFDekIsK0NBQTZCO0FBQzdCLHlDQUF1QjtBQUN2QixrREFBZ0M7QUFDaEMsc0RBQW9DO0FBQ3BDLDBDQUF3QjtBQUN4QixxREFBbUM7QUFFbkMsbUNBQW1DO0FBQ25DLHFFQUFtRDtBQUNuRCxxRUFBbUQiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9ncmFudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaWRlbnRpdHktYmFzZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbWFuYWdlZC1wb2xpY3lcIjtcbmV4cG9ydCAqIGZyb20gXCIuL29pZGMtcHJvdmlkZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BvbGljeS1kb2N1bWVudC1jb25maWcuZ2VuZXJhdGVkXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wb2xpY3ktZG9jdW1lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BvbGljeS1zdGF0ZW1lbnQtcHJvcHMuZ2VuZXJhdGVkXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wb2xpY3ktc3RhdGVtZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wb2xpY3lcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3ByaW5jaXBhbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvbGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NhbWwtcHJvdmlkZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Vua25vd24tcHJpbmNpcGFsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vaW5zdGFuY2UtcHJvZmlsZVwiO1xuXG4vLyBhdXRvIGdlbmVyYXRlZCBieSBzdHJ1Y3QtYnVpbGRlclxuZXhwb3J0ICogZnJvbSBcIi4vcG9saWN5LXN0YXRlbWVudC1wcm9wcy5nZW5lcmF0ZWRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BvbGljeS1kb2N1bWVudC1jb25maWcuZ2VuZXJhdGVkXCI7XG4iXX0=
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2lhbS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBQXdCO0FBQ3hCLGtEQUFnQztBQUNoQyxtREFBaUM7QUFDakMsa0RBQWdDO0FBQ2hDLHFFQUFtRDtBQUNuRCxvREFBa0M7QUFDbEMscUVBQW1EO0FBQ25ELHFEQUFtQztBQUNuQywyQ0FBeUI7QUFDekIsK0NBQTZCO0FBQzdCLHlDQUF1QjtBQUN2QixrREFBZ0M7QUFDaEMsc0RBQW9DO0FBQ3BDLDBDQUF3QjtBQUN4QixxREFBbUM7QUFDbkMsMENBQXdCO0FBQ3hCLHlDQUF1QjtBQUV2QixtQ0FBbUM7QUFDbkMscUVBQW1EO0FBQ25ELHFFQUFtRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2dyYW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pZGVudGl0eS1iYXNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tYW5hZ2VkLXBvbGljeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vb2lkYy1wcm92aWRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcG9saWN5LWRvY3VtZW50LWNvbmZpZy5nZW5lcmF0ZWRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BvbGljeS1kb2N1bWVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcG9saWN5LXN0YXRlbWVudC1wcm9wcy5nZW5lcmF0ZWRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BvbGljeS1zdGF0ZW1lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BvbGljeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcHJpbmNpcGFsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm9sZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc2FtbC1wcm92aWRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdW5rbm93bi1wcmluY2lwYWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pbnN0YW5jZS1wcm9maWxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ncm91cFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlclwiO1xuXG4vLyBhdXRvIGdlbmVyYXRlZCBieSBzdHJ1Y3QtYnVpbGRlclxuZXhwb3J0ICogZnJvbSBcIi4vcG9saWN5LXN0YXRlbWVudC1wcm9wcy5nZW5lcmF0ZWRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BvbGljeS1kb2N1bWVudC1jb25maWcuZ2VuZXJhdGVkXCI7XG4iXX0=
@@ -120,5 +120,5 @@ class InstanceProfile extends InstanceProfileBase {
120
120
  }
121
121
  exports.InstanceProfile = InstanceProfile;
122
122
  _a = JSII_RTTI_SYMBOL_1;
123
- InstanceProfile[_a] = { fqn: "terraconstructs.aws.iam.InstanceProfile", version: "0.0.14" };
123
+ InstanceProfile[_a] = { fqn: "terraconstructs.aws.iam.InstanceProfile", version: "0.0.15" };
124
124
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2UtcHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3MvaWFtL2luc3RhbmNlLXByb2ZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvR0FBb0c7QUFFcEcsc0RBQXlEO0FBRXpELGdDQUE2QjtBQUM3QixvREFJMEI7QUFDMUIsNENBQXdDO0FBQ3hDLDZDQUFnRDtBQUNoRCxpQ0FBcUM7QUFxR3JDOztHQUVHO0FBQ0gsTUFBZSxtQkFDYixTQUFRLGdDQUFnQjtJQVl4QixJQUFXLHNCQUFzQjtRQUMvQixPQUFPO1lBQ0wsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLG1CQUFtQjtZQUM3QyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQzNDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU87U0FDNUIsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztJQUNEOztPQUVHO0lBQ0gsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLG1CQUFtQjtJQUN0RDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsdUJBQXVCLENBQ25DLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixtQkFBMkI7UUFFM0IsTUFBTSxrQkFBa0IsR0FBRyxvQkFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDbEUsT0FBTyxFQUFFLEtBQUs7WUFDZCxNQUFNLEVBQUUsRUFBRTtZQUNWLFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsWUFBWSxFQUFFLG1CQUFtQjtTQUNsQyxDQUFDLENBQUM7UUFDSCxPQUFPLGVBQWUsQ0FBQyw2QkFBNkIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQzlELGtCQUFrQjtTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksTUFBTSxDQUFDLHNCQUFzQixDQUNsQyxLQUFnQixFQUNoQixFQUFVLEVBQ1Ysa0JBQTBCO1FBRTFCLE9BQU8sZUFBZSxDQUFDLDZCQUE2QixDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDOUQsa0JBQWtCO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxNQUFNLENBQUMsNkJBQTZCLENBQ3pDLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFnQztRQUVoQyxNQUFNLE1BQU8sU0FBUSxtQkFBbUI7WUFTdEMsWUFBWSxDQUFZLEVBQUUsQ0FBUztnQkFDakMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFURSx3QkFBbUIsR0FBVyxTQUFHLENBQUMsbUJBQW1CLENBQ25FLEtBQUssQ0FBQyxrQkFBa0IsRUFDeEIsa0JBQWtCLENBQ25CO3FCQUNFLEtBQUssQ0FBQyxHQUFHLENBQUM7cUJBQ1YsR0FBRyxFQUFHLENBQUM7Z0JBQ00sdUJBQWtCLEdBQVcsS0FBSyxDQUFDLGtCQUFrQixDQUFDO2dCQUlwRSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDMUIsQ0FBQztTQUNGO1FBQ0QsT0FBTyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQWNELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBOEIsRUFBRTtRQUN4RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4QixNQUFNLG1CQUFtQixHQUN2QixLQUFLLENBQUMsbUJBQW1CO1lBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFO2dCQUNsQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVE7YUFDdEIsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLEtBQUs7WUFDUixLQUFLLENBQUMsSUFBSTtnQkFDVixJQUFJLFdBQUksQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFO29CQUM3QixRQUFRLEVBQUUsR0FBRyxtQkFBbUIsT0FBTztvQkFDdkMsU0FBUyxFQUFFLElBQUksNkJBQWdCLENBQUMsbUJBQW1CLENBQUM7aUJBQ3JELENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxpQ0FBa0IsQ0FBQyxrQkFBa0IsQ0FDdkQsSUFBSSxFQUNKLFVBQVUsRUFDVjtZQUNFLElBQUksRUFBRSxtQkFBbUI7WUFDekIsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUN6QixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7U0FDakIsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUM1QyxvREFBb0Q7UUFDcEQsZ0JBQWdCO1FBQ2hCLG9CQUFvQjtRQUNwQixrQ0FBa0M7UUFDbEMseUhBQXlIO1FBQ3pILE1BQU07SUFDUixDQUFDOztBQXpISCwwQ0EwSEMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNzUuMS9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3MtaWFtL2xpYi9pbnN0YW5jZS1wcm9maWxlLnRzXG5cbmltcG9ydCB7IGlhbUluc3RhbmNlUHJvZmlsZSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQXJuIH0gZnJvbSBcIi4uL2FyblwiO1xuaW1wb3J0IHtcbiAgQXdzQ29uc3RydWN0QmFzZSxcbiAgSUF3c0NvbnN0cnVjdCxcbiAgQXdzQ29uc3RydWN0UHJvcHMsXG59IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5pbXBvcnQgeyBBd3NTdGFjayB9IGZyb20gXCIuLi9hd3Mtc3RhY2tcIjtcbmltcG9ydCB7IFNlcnZpY2VQcmluY2lwYWwgfSBmcm9tIFwiLi9wcmluY2lwYWxzXCI7XG5pbXBvcnQgeyBJUm9sZSwgUm9sZSB9IGZyb20gXCIuL3JvbGVcIjtcblxuLyoqXG4gKiBPdXRwdXRzIHdoaWNoIG1heSBiZSByZWdpc3RlcmVkIGZvciBvdXRwdXQgdmlhIHRoZSBHcmlkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlUHJvZmlsZU91dHB1dHMge1xuICAvKipcbiAgICogVGhlIEluc3RhbmNlUHJvZmlsZSdzIG5hbWUuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlUHJvZmlsZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEluc3RhbmNlUHJvZmlsZSdzIEFSTi5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VQcm9maWxlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByb2xlIGFzc29jaWF0ZWQgd2l0aCB0aGUgSW5zdGFuY2VQcm9maWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZUFybj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIElBTSBJbnN0YW5jZSBQcm9maWxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUluc3RhbmNlUHJvZmlsZSBleHRlbmRzIElBd3NDb25zdHJ1Y3Qge1xuICAvKiogU3Ryb25nbHkgdHlwZWQgb3V0cHV0cyAqL1xuICByZWFkb25seSBpbnN0YW5jZVByb2ZpbGVPdXRwdXRzOiBJbnN0YW5jZVByb2ZpbGVPdXRwdXRzO1xuXG4gIC8qKlxuICAgKiBUaGUgSW5zdGFuY2VQcm9maWxlJ3MgbmFtZS5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VQcm9maWxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSW5zdGFuY2VQcm9maWxlJ3MgQVJOLlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZVByb2ZpbGVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJvbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBJbnN0YW5jZVByb2ZpbGUuXG4gICAqL1xuICByZWFkb25seSByb2xlPzogSVJvbGU7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBvZiBhbiBJbnN0YW5jZSBQcm9maWxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdGFuY2VQcm9maWxlUHJvcHMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBBbiBJQU0gcm9sZSB0byBhc3NvY2lhdGUgd2l0aCB0aGUgaW5zdGFuY2UgcHJvZmlsZSB0aGF0IGlzIHVzZWQgYnkgRUMyIGluc3RhbmNlcy5cbiAgICpcbiAgICogVGhlIHJvbGUgbXVzdCBiZSBhc3N1bWFibGUgYnkgdGhlIHNlcnZpY2UgcHJpbmNpcGFsIGBlYzIuYW1hem9uYXdzLmNvbWA6XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgJ015Um9sZScsIHtcbiAgICogICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnZWMyLmFtYXpvbmF3cy5jb20nKVxuICAgKiB9KTtcbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIHJvbGUgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQsIGl0IGNhbiBiZSBhY2Nlc3NlZCB2aWEgdGhlIGByb2xlYCBwcm9wZXJ0eVxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZT86IElSb2xlO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgSW5zdGFuY2VQcm9maWxlIHRvIGNyZWF0ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBnZW5lcmF0ZWQgYnkgQ2xvdWRGb3JtYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlUHJvZmlsZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIHRoZSBJbnN0YW5jZVByb2ZpbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC9cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQXR0cmlidXRlcyBvZiBhbiBJbnN0YW5jZSBQcm9maWxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdGFuY2VQcm9maWxlQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBJbnN0YW5jZVByb2ZpbGUuXG4gICAqXG4gICAqIEZvcm1hdDogYXJuOjxwYXJ0aXRpb24+OmlhbTo6PGFjY291bnQtaWQ+Omluc3RhbmNlLXByb2ZpbGUvPGluc3RhbmNlLXByb2ZpbGUtbmFtZS13aXRoLXBhdGg+XG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZVByb2ZpbGVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJvbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBJbnN0YW5jZVByb2ZpbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcm9sZVxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZT86IElSb2xlO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGFuIEluc3RhbmNlIFByb2ZpbGVcbiAqL1xuYWJzdHJhY3QgY2xhc3MgSW5zdGFuY2VQcm9maWxlQmFzZVxuICBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2VcbiAgaW1wbGVtZW50cyBJSW5zdGFuY2VQcm9maWxlXG57XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBpbnN0YW5jZVByb2ZpbGVOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBpbnN0YW5jZVByb2ZpbGVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJvbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBJbnN0YW5jZVByb2ZpbGUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIF9yb2xlPzogSVJvbGU7XG5cbiAgcHVibGljIGdldCBpbnN0YW5jZVByb2ZpbGVPdXRwdXRzKCk6IEluc3RhbmNlUHJvZmlsZU91dHB1dHMge1xuICAgIHJldHVybiB7XG4gICAgICBpbnN0YW5jZVByb2ZpbGVOYW1lOiB0aGlzLmluc3RhbmNlUHJvZmlsZU5hbWUsXG4gICAgICBpbnN0YW5jZVByb2ZpbGVBcm46IHRoaXMuaW5zdGFuY2VQcm9maWxlQXJuLFxuICAgICAgcm9sZUFybjogdGhpcy5yb2xlPy5yb2xlQXJuLFxuICAgIH07XG4gIH1cbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLmluc3RhbmNlUHJvZmlsZU91dHB1dHM7XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHJvbGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgSW5zdGFuY2VQcm9maWxlLlxuICAgKi9cbiAgcHVibGljIGdldCByb2xlKCk6IElSb2xlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcm9sZTtcbiAgfVxufVxuXG4vKipcbiAqIElBTSBJbnN0YW5jZSBQcm9maWxlXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnN0YW5jZVByb2ZpbGUgZXh0ZW5kcyBJbnN0YW5jZVByb2ZpbGVCYXNlIHtcbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBJbnN0YW5jZVByb2ZpbGUgZnJvbSBhbiBJbnN0YW5jZVByb2ZpbGUgbmFtZS5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcGFyYW0gaWQgY29uc3RydWN0IGlkXG4gICAqIEBwYXJhbSBpbnN0YW5jZVByb2ZpbGVOYW1lIHRoZSBuYW1lIG9mIHRoZSBleGlzdGluZyBJbnN0YW5jZVByb2ZpbGUgdG8gaW1wb3J0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbnN0YW5jZVByb2ZpbGVOYW1lKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBpbnN0YW5jZVByb2ZpbGVOYW1lOiBzdHJpbmcsXG4gICk6IElJbnN0YW5jZVByb2ZpbGUge1xuICAgIGNvbnN0IGluc3RhbmNlUHJvZmlsZUFybiA9IEF3c1N0YWNrLm9mQXdzQ29uc3RydWN0KHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgc2VydmljZTogXCJpYW1cIixcbiAgICAgIHJlZ2lvbjogXCJcIixcbiAgICAgIHJlc291cmNlOiBcImluc3RhbmNlLXByb2ZpbGVcIixcbiAgICAgIHJlc291cmNlTmFtZTogaW5zdGFuY2VQcm9maWxlTmFtZSxcbiAgICB9KTtcbiAgICByZXR1cm4gSW5zdGFuY2VQcm9maWxlLmZyb21JbnN0YW5jZVByb2ZpbGVBdHRyaWJ1dGVzKHNjb3BlLCBpZCwge1xuICAgICAgaW5zdGFuY2VQcm9maWxlQXJuLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBJbnN0YW5jZVByb2ZpbGUgZnJvbSBhbiBJbnN0YW5jZVByb2ZpbGUgQVJOLlxuICAgKlxuICAgKiBJZiB0aGUgQVJOIGNvbWVzIGZyb20gYSBUb2tlbiwgdGhlIEluc3RhbmNlUHJvZmlsZSBjYW5ub3QgaGF2ZSBhIHBhdGg7IGlmIHNvLCBhbnkgYXR0ZW1wdFxuICAgKiB0byByZWZlcmVuY2UgaXRzIGluc3RhbmNlUHJvZmlsZU5hbWUgd2lsbCBmYWlsLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBjb25zdHJ1Y3QgaWRcbiAgICogQHBhcmFtIGluc3RhbmNlUHJvZmlsZUFybiB0aGUgQVJOIG9mIHRoZSBleGl0aW5nIEluc3RhbmNlUHJvZmlsZSB0byBpbXBvcnRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUluc3RhbmNlUHJvZmlsZUFybihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgaW5zdGFuY2VQcm9maWxlQXJuOiBzdHJpbmcsXG4gICk6IElJbnN0YW5jZVByb2ZpbGUge1xuICAgIHJldHVybiBJbnN0YW5jZVByb2ZpbGUuZnJvbUluc3RhbmNlUHJvZmlsZUF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7XG4gICAgICBpbnN0YW5jZVByb2ZpbGVBcm4sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIEluc3RhbmNlUHJvZmlsZSBmcm9tIGdpdmVuIEluc3RhbmNlUHJvZmlsZSBhdHRyaWJ1dGVzLlxuICAgKlxuICAgKiBJZiB0aGUgQVJOIGNvbWVzIGZyb20gYSBUb2tlbiwgdGhlIEluc3RhbmNlUHJvZmlsZSBjYW5ub3QgaGF2ZSBhIHBhdGg7IGlmIHNvLCBhbnkgYXR0ZW1wdFxuICAgKiB0byByZWZlcmVuY2UgaXRzIGluc3RhbmNlUHJvZmlsZU5hbWUgd2lsbCBmYWlsLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBjb25zdHJ1Y3QgaWRcbiAgICogQHBhcmFtIGF0dHJzIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBJbnN0YW5jZVByb2ZpbGUgdG8gaW1wb3J0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbnN0YW5jZVByb2ZpbGVBdHRyaWJ1dGVzKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBhdHRyczogSW5zdGFuY2VQcm9maWxlQXR0cmlidXRlcyxcbiAgKTogSUluc3RhbmNlUHJvZmlsZSB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgSW5zdGFuY2VQcm9maWxlQmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaW5zdGFuY2VQcm9maWxlTmFtZTogc3RyaW5nID0gQXJuLmV4dHJhY3RSZXNvdXJjZU5hbWUoXG4gICAgICAgIGF0dHJzLmluc3RhbmNlUHJvZmlsZUFybixcbiAgICAgICAgXCJpbnN0YW5jZS1wcm9maWxlXCIsXG4gICAgICApXG4gICAgICAgIC5zcGxpdChcIi9cIilcbiAgICAgICAgLnBvcCgpITtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpbnN0YW5jZVByb2ZpbGVBcm46IHN0cmluZyA9IGF0dHJzLmluc3RhbmNlUHJvZmlsZUFybjtcblxuICAgICAgY29uc3RydWN0b3IoczogQ29uc3RydWN0LCBpOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIocywgaSk7XG4gICAgICAgIHRoaXMuX3JvbGUgPSBhdHRycy5yb2xlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG5hbWUgb2YgdGhpcyBJbnN0YW5jZVByb2ZpbGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW5zdGFuY2VQcm9maWxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBBUk4gb2YgdGhpcyBJbnN0YW5jZVByb2ZpbGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW5zdGFuY2VQcm9maWxlQXJuOiBzdHJpbmc7XG5cbiAgcHVibGljIHJlc291cmNlOiBpYW1JbnN0YW5jZVByb2ZpbGUuSWFtSW5zdGFuY2VQcm9maWxlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJbnN0YW5jZVByb2ZpbGVQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgY29uc3QgaW5zdGFuY2VQcm9maWxlTmFtZSA9XG4gICAgICBwcm9wcy5pbnN0YW5jZVByb2ZpbGVOYW1lIHx8XG4gICAgICB0aGlzLnN0YWNrLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgICAgIHByZWZpeDogdGhpcy5ncmlkVVVJRCxcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fcm9sZSA9XG4gICAgICBwcm9wcy5yb2xlIHx8XG4gICAgICBuZXcgUm9sZSh0aGlzLCBcIkluc3RhbmNlUm9sZVwiLCB7XG4gICAgICAgIHJvbGVOYW1lOiBgJHtpbnN0YW5jZVByb2ZpbGVOYW1lfS1yb2xlYCxcbiAgICAgICAgYXNzdW1lZEJ5OiBuZXcgU2VydmljZVByaW5jaXBhbChcImVjMi5hbWF6b25hd3MuY29tXCIpLFxuICAgICAgfSk7XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IGlhbUluc3RhbmNlUHJvZmlsZS5JYW1JbnN0YW5jZVByb2ZpbGUoXG4gICAgICB0aGlzLFxuICAgICAgXCJSZXNvdXJjZVwiLFxuICAgICAge1xuICAgICAgICBuYW1lOiBpbnN0YW5jZVByb2ZpbGVOYW1lLFxuICAgICAgICByb2xlOiB0aGlzLl9yb2xlLnJvbGVOYW1lLFxuICAgICAgICBwYXRoOiBwcm9wcy5wYXRoLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgdGhpcy5pbnN0YW5jZVByb2ZpbGVOYW1lID0gdGhpcy5yZXNvdXJjZS5pZDtcbiAgICB0aGlzLmluc3RhbmNlUHJvZmlsZUFybiA9IHRoaXMucmVzb3VyY2UuYXJuO1xuICAgIC8vIHRoaXMuZ2V0UmVzb3VyY2VBcm5BdHRyaWJ1dGUodGhpcy5yZXNvdXJjZS5hcm4sIHtcbiAgICAvLyAgIHJlZ2lvbjogXCJcIixcbiAgICAvLyAgIHNlcnZpY2U6IFwiaWFtXCIsXG4gICAgLy8gICByZXNvdXJjZTogXCJpbnN0YW5jZS1wcm9maWxlXCIsXG4gICAgLy8gICByZXNvdXJjZU5hbWU6IGAke3Byb3BzLnBhdGggPyBwcm9wcy5wYXRoLnN1YnN0cmluZyhwcm9wcy5wYXRoLmNoYXJBdCgwKSA9PT0gXCIvXCIgPyAxIDogMCkgOiBcIlwifSR7dGhpcy5waHlzaWNhbE5hbWV9YCxcbiAgICAvLyB9KTtcbiAgfVxufVxuIl19
@@ -212,7 +212,7 @@ class ManagedPolicy extends ManagedPolicyBase {
212
212
  }
213
213
  exports.ManagedPolicy = ManagedPolicy;
214
214
  _a = JSII_RTTI_SYMBOL_1;
215
- ManagedPolicy[_a] = { fqn: "terraconstructs.aws.iam.ManagedPolicy", version: "0.0.14" };
215
+ ManagedPolicy[_a] = { fqn: "terraconstructs.aws.iam.ManagedPolicy", version: "0.0.15" };
216
216
  class ManagedPolicyGrantPrincipal {
217
217
  constructor(_managedPolicy) {
218
218
  this._managedPolicy = _managedPolicy;
@@ -78,5 +78,5 @@ class OpenIdConnectProvider extends aws_construct_1.AwsConstructBase {
78
78
  }
79
79
  exports.OpenIdConnectProvider = OpenIdConnectProvider;
80
80
  _a = JSII_RTTI_SYMBOL_1;
81
- OpenIdConnectProvider[_a] = { fqn: "terraconstructs.aws.iam.OpenIdConnectProvider", version: "0.0.14" };
81
+ OpenIdConnectProvider[_a] = { fqn: "terraconstructs.aws.iam.OpenIdConnectProvider", version: "0.0.15" };
82
82
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2lkYy1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3MvaWFtL29pZGMtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzREFBK0Q7QUFFL0QsZ0NBQTZCO0FBQzdCLG9EQUkwQjtBQXFGMUI7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQWEscUJBQ1gsU0FBUSxnQ0FBZ0I7SUFHeEI7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsNEJBQTRCLENBQ3hDLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVix3QkFBZ0M7UUFFaEMsTUFBTSxZQUFZLEdBQUcsU0FBRyxDQUFDLG1CQUFtQixDQUMxQyx3QkFBd0IsRUFDeEIsZUFBZSxDQUNoQixDQUFDO1FBRUYsTUFBTSxNQUFPLFNBQVEsZ0NBQWdCO1lBQXJDOztnQkFDa0IsNkJBQXdCLEdBQUcsd0JBQXdCLENBQUM7Z0JBQ3BELGdDQUEyQixHQUFHLFlBQVksQ0FBQztnQkFDM0MsaUNBQTRCLEdBQUc7b0JBQzdDLEdBQUcsRUFBRSx3QkFBd0I7b0JBQzdCLE1BQU0sRUFBRSxZQUFZO2lCQUNyQixDQUFDO1lBSUosQ0FBQztZQUhDLElBQVcsT0FBTztnQkFDaEIsT0FBTyxJQUFJLENBQUMsNEJBQTRCLENBQUM7WUFDM0MsQ0FBQztTQUNGO1FBRUQsT0FBTyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsNEJBQTRCLENBQUM7SUFDM0MsQ0FBQztJQWVEOzs7OztPQUtHO0lBQ0gsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBaUM7UUFFakMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEIsMEVBQTBFO1FBQzFFLG1FQUFtRTtRQUNuRSxJQUFJLGNBQWMsR0FBRyxLQUFLLENBQUMsV0FBVyxJQUFJO1lBQ3hDLDBDQUEwQztTQUMzQyxDQUFDO1FBQ0YseUVBQXlFO1FBRXpFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSx1Q0FBd0IsQ0FBQyx3QkFBd0IsQ0FDbkUsSUFBSSxFQUNKLFVBQVUsRUFDVjtZQUNFLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztZQUNkLFlBQVksRUFBRSxLQUFLLENBQUMsU0FBUztZQUM3QixjQUFjO1NBQ2YsQ0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1FBQ2xELElBQUksQ0FBQywyQkFBMkIsR0FBRyxTQUFHLENBQUMsbUJBQW1CLENBQ3hELElBQUksQ0FBQyx3QkFBd0IsRUFDN0IsZUFBZSxDQUNoQixDQUFDO1FBQ0YsSUFBSSxDQUFDLGdDQUFnQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDO1FBQ3JFLElBQUksQ0FBQyw0QkFBNEIsR0FBRztZQUNsQyxHQUFHLEVBQUUsSUFBSSxDQUFDLHdCQUF3QjtZQUNsQyxNQUFNLEVBQUUsSUFBSSxDQUFDLDJCQUEyQjtTQUN6QyxDQUFDO0lBQ0osQ0FBQzs7QUExRkgsc0RBMkZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaWFtT3BlbmlkQ29ubmVjdFByb3ZpZGVyIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1hd3NcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBcm4gfSBmcm9tIFwiLi4vYXJuXCI7XG5pbXBvcnQge1xuICBJQXdzQ29uc3RydWN0LFxuICBBd3NDb25zdHJ1Y3RCYXNlLFxuICBBd3NDb25zdHJ1Y3RQcm9wcyxcbn0gZnJvbSBcIi4uL2F3cy1jb25zdHJ1Y3RcIjtcblxuZXhwb3J0IGludGVyZmFjZSBPcGVuSWRDb25uZWN0UHJvdmlkZXJPdXRwdXRzIHtcbiAgLyoqXG4gICAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgSUFNIE9wZW5JRCBDb25uZWN0IHByb3ZpZGVyLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgYXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgaXNzdWVyIGZvciBPSURDIFByb3ZpZGVyXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBpc3N1ZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIElBTSBPcGVuSUQgQ29ubmVjdCBwcm92aWRlci5cbiAqXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSU9wZW5JZENvbm5lY3RQcm92aWRlciBleHRlbmRzIElBd3NDb25zdHJ1Y3Qge1xuICAvLyBzdHJvbmdseSB0eXBlZCBvdXRwdXRzXG4gIHJlYWRvbmx5IG9wZW5JZENvbm5lY3RQcm92aWRlck91dHB1dHM6IE9wZW5JZENvbm5lY3RQcm92aWRlck91dHB1dHM7XG5cbiAgLyoqXG4gICAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgSUFNIE9wZW5JRCBDb25uZWN0IHByb3ZpZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlbklkQ29ubmVjdFByb3ZpZGVyQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpc3N1ZXIgZm9yIE9JREMgUHJvdmlkZXJcbiAgICovXG4gIHJlYWRvbmx5IG9wZW5JZENvbm5lY3RQcm92aWRlcklzc3Vlcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemF0aW9uIHByb3BlcnRpZXMgZm9yIGBPcGVuSWRDb25uZWN0UHJvdmlkZXJgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5JZENvbm5lY3RQcm92aWRlclByb3BzIGV4dGVuZHMgQXdzQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIFVSTCBvZiB0aGUgaWRlbnRpdHkgcHJvdmlkZXIuIFRoZSBVUkwgbXVzdCBiZWdpbiB3aXRoIGh0dHBzOi8vIGFuZFxuICAgKiBzaG91bGQgY29ycmVzcG9uZCB0byB0aGUgaXNzIGNsYWltIGluIHRoZSBwcm92aWRlcidzIE9wZW5JRCBDb25uZWN0IElEXG4gICAqIHRva2Vucy4gUGVyIHRoZSBPSURDIHN0YW5kYXJkLCBwYXRoIGNvbXBvbmVudHMgYXJlIGFsbG93ZWQgYnV0IHF1ZXJ5XG4gICAqIHBhcmFtZXRlcnMgYXJlIG5vdC4gVHlwaWNhbGx5IHRoZSBVUkwgY29uc2lzdHMgb2Ygb25seSBhIGhvc3RuYW1lLCBsaWtlXG4gICAqIGh0dHBzOi8vc2VydmVyLmV4YW1wbGUub3JnIG9yIGh0dHBzOi8vZXhhbXBsZS5jb20uXG4gICAqXG4gICAqIFlvdSBjYW5ub3QgcmVnaXN0ZXIgdGhlIHNhbWUgcHJvdmlkZXIgbXVsdGlwbGUgdGltZXMgaW4gYSBzaW5nbGUgQVdTXG4gICAqIGFjY291bnQuIElmIHlvdSB0cnkgdG8gc3VibWl0IGEgVVJMIHRoYXQgaGFzIGFscmVhZHkgYmVlbiB1c2VkIGZvciBhblxuICAgKiBPcGVuSUQgQ29ubmVjdCBwcm92aWRlciBpbiB0aGUgQVdTIGFjY291bnQsIHlvdSB3aWxsIGdldCBhbiBlcnJvci5cbiAgICovXG4gIHJlYWRvbmx5IHVybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgY2xpZW50IElEcyAoYWxzbyBrbm93biBhcyBhdWRpZW5jZXMpLiBXaGVuIGEgbW9iaWxlIG9yIHdlYiBhcHBcbiAgICogcmVnaXN0ZXJzIHdpdGggYW4gT3BlbklEIENvbm5lY3QgcHJvdmlkZXIsIHRoZXkgZXN0YWJsaXNoIGEgdmFsdWUgdGhhdFxuICAgKiBpZGVudGlmaWVzIHRoZSBhcHBsaWNhdGlvbi4gKFRoaXMgaXMgdGhlIHZhbHVlIHRoYXQncyBzZW50IGFzIHRoZSBjbGllbnRfaWRcbiAgICogcGFyYW1ldGVyIG9uIE9BdXRoIHJlcXVlc3RzLilcbiAgICpcbiAgICogWW91IGNhbiByZWdpc3RlciBtdWx0aXBsZSBjbGllbnQgSURzIHdpdGggdGhlIHNhbWUgcHJvdmlkZXIuIEZvciBleGFtcGxlLFxuICAgKiB5b3UgbWlnaHQgaGF2ZSBtdWx0aXBsZSBhcHBsaWNhdGlvbnMgdGhhdCB1c2UgdGhlIHNhbWUgT0lEQyBwcm92aWRlci4gWW91XG4gICAqIGNhbm5vdCByZWdpc3RlciBtb3JlIHRoYW4gMTAwIGNsaWVudCBJRHMgd2l0aCBhIHNpbmdsZSBJQU0gT0lEQyBwcm92aWRlci5cbiAgICpcbiAgICogQ2xpZW50IElEcyBhcmUgdXAgdG8gMjU1IGNoYXJhY3RlcnMgbG9uZy5cbiAgICovXG4gIHJlYWRvbmx5IGNsaWVudElkczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBzZXJ2ZXIgY2VydGlmaWNhdGUgdGh1bWJwcmludHMgZm9yIHRoZSBPcGVuSUQgQ29ubmVjdCAoT0lEQylcbiAgICogaWRlbnRpdHkgcHJvdmlkZXIncyBzZXJ2ZXIgY2VydGlmaWNhdGVzLlxuICAgKlxuICAgKiBBV1Mgc2VjdXJlcyBjb21tdW5pY2F0aW9uIHdpdGggT0lEQyBpZGVudGl0eSBwcm92aWRlcnMgKElkUHMpIHVzaW5nIG91clxuICAgKiBsaWJyYXJ5IG9mIHRydXN0ZWQgcm9vdCBjZXJ0aWZpY2F0ZSBhdXRob3JpdGllcyAoQ0FzKSB0byB2ZXJpZnkgdGhlXG4gICAqIEpTT04gV2ViIEtleSBTZXQgKEpXS1MpIGVuZHBvaW50J3MgVExTIGNlcnRpZmljYXRlLlxuICAgKlxuICAgKiBJZiB5b3VyIE9JREMgSWRQIHJlbGllcyBvbiBhIGNlcnRpZmljYXRlIHRoYXQgaXMgbm90IHNpZ25lZCBieSBvbmUgb2ZcbiAgICogdGhlc2UgdHJ1c3RlZCBDQXMsIG9ubHkgdGhlbiB3ZSBzZWN1cmUgY29tbXVuaWNhdGlvbiB1c2luZyB0aGVcbiAgICogdGh1bWJwcmludHMgc2V0IGluIHRoZSBJZFAncyBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBBV1Mgd2lsbCBmYWxsIGJhY2sgdG8gdGh1bWJwcmludCB2ZXJpZmljYXRpb24gaWYgd2UgYXJlIHVuYWJsZSB0byByZXRyaWV2ZVxuICAgKiB0aGUgVExTIGNlcnRpZmljYXRlIG9yIGlmIFRMUyB2MS4zIGlzIHJlcXVpcmVkLlxuICAgKlxuICAgKiBTZWUgW0FXUyBPSURDIERvY3NdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9pZF9yb2xlc19wcm92aWRlcnNfY3JlYXRlX29pZGMuaHRtbCNtYW5hZ2Utb2lkYy1wcm92aWRlci1jb25zb2xlKVxuICAgKi9cbiAgcmVhZG9ubHkgdGh1bWJwcmludHM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBJQU0gT0lEQyBpZGVudGl0eSBwcm92aWRlcnMgYXJlIGVudGl0aWVzIGluIElBTSB0aGF0IGRlc2NyaWJlIGFuIGV4dGVybmFsXG4gKiBpZGVudGl0eSBwcm92aWRlciAoSWRQKSBzZXJ2aWNlIHRoYXQgc3VwcG9ydHMgdGhlIE9wZW5JRCBDb25uZWN0IChPSURDKVxuICogc3RhbmRhcmQsIHN1Y2ggYXMgR29vZ2xlIG9yIFNhbGVzZm9yY2UuIFlvdSB1c2UgYW4gSUFNIE9JREMgaWRlbnRpdHkgcHJvdmlkZXJcbiAqIHdoZW4geW91IHdhbnQgdG8gZXN0YWJsaXNoIHRydXN0IGJldHdlZW4gYW4gT0lEQy1jb21wYXRpYmxlIElkUCBhbmQgeW91ciBBV1NcbiAqIGFjY291bnQuIFRoaXMgaXMgdXNlZnVsIHdoZW4gY3JlYXRpbmcgYSBtb2JpbGUgYXBwIG9yIHdlYiBhcHBsaWNhdGlvbiB0aGF0XG4gKiByZXF1aXJlcyBhY2Nlc3MgdG8gQVdTIHJlc291cmNlcywgYnV0IHlvdSBkb24ndCB3YW50IHRvIGNyZWF0ZSBjdXN0b20gc2lnbi1pblxuICogY29kZSBvciBtYW5hZ2UgeW91ciBvd24gdXNlciBpZGVudGl0aWVzLlxuICpcbiAqIEBzZWUgaHR0cDovL29wZW5pZC5uZXQvY29ubmVjdFxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvaWRfcm9sZXNfcHJvdmlkZXJzX29pZGMuaHRtbFxuICpcbiAqIEByZXNvdXJjZSBBV1M6OkNsb3VkRm9ybWF0aW9uOjpDdXN0b21SZXNvdXJjZVxuICovXG5leHBvcnQgY2xhc3MgT3BlbklkQ29ubmVjdFByb3ZpZGVyXG4gIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZVxuICBpbXBsZW1lbnRzIElPcGVuSWRDb25uZWN0UHJvdmlkZXJcbntcbiAgLyoqXG4gICAqIEltcG9ydHMgYW4gT3BlbiBJRCBjb25uZWN0IHByb3ZpZGVyIGZyb20gYW4gQVJOLlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIGRlZmluaXRpb24gc2NvcGVcbiAgICogQHBhcmFtIGlkIElEIG9mIHRoZSBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIG9wZW5JZENvbm5lY3RQcm92aWRlckFybiB0aGUgQVJOIHRvIGltcG9ydFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tT3BlbklkQ29ubmVjdFByb3ZpZGVyQXJuKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBvcGVuSWRDb25uZWN0UHJvdmlkZXJBcm46IHN0cmluZyxcbiAgKTogSU9wZW5JZENvbm5lY3RQcm92aWRlciB7XG4gICAgY29uc3QgcmVzb3VyY2VOYW1lID0gQXJuLmV4dHJhY3RSZXNvdXJjZU5hbWUoXG4gICAgICBvcGVuSWRDb25uZWN0UHJvdmlkZXJBcm4sXG4gICAgICBcIm9pZGMtcHJvdmlkZXJcIixcbiAgICApO1xuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElPcGVuSWRDb25uZWN0UHJvdmlkZXIge1xuICAgICAgcHVibGljIHJlYWRvbmx5IG9wZW5JZENvbm5lY3RQcm92aWRlckFybiA9IG9wZW5JZENvbm5lY3RQcm92aWRlckFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBvcGVuSWRDb25uZWN0UHJvdmlkZXJJc3N1ZXIgPSByZXNvdXJjZU5hbWU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgb3BlbklkQ29ubmVjdFByb3ZpZGVyT3V0cHV0cyA9IHtcbiAgICAgICAgYXJuOiBvcGVuSWRDb25uZWN0UHJvdmlkZXJBcm4sXG4gICAgICAgIGlzc3VlcjogcmVzb3VyY2VOYW1lLFxuICAgICAgfTtcbiAgICAgIHB1YmxpYyBnZXQgb3V0cHV0cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3BlbklkQ29ubmVjdFByb3ZpZGVyT3V0cHV0cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQsIHt9KTtcbiAgfVxuICBwdWJsaWMgcmVhZG9ubHkgb3BlbklkQ29ubmVjdFByb3ZpZGVyT3V0cHV0czogT3BlbklkQ29ubmVjdFByb3ZpZGVyT3V0cHV0cztcbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLm9wZW5JZENvbm5lY3RQcm92aWRlck91dHB1dHM7XG4gIH1cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlOiBpYW1PcGVuaWRDb25uZWN0UHJvdmlkZXIuSWFtT3BlbmlkQ29ubmVjdFByb3ZpZGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIElBTSBPcGVuSUQgQ29ubmVjdCBwcm92aWRlci5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBvcGVuSWRDb25uZWN0UHJvdmlkZXJBcm46IHN0cmluZztcblxuICBwdWJsaWMgcmVhZG9ubHkgb3BlbklkQ29ubmVjdFByb3ZpZGVySXNzdWVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0aHVtYnByaW50cyBjb25maWd1cmVkIGZvciB0aGlzIHByb3ZpZGVyLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9wZW5JZENvbm5lY3RQcm92aWRlcnRodW1icHJpbnRzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRGVmaW5lcyBhbiBPcGVuSUQgQ29ubmVjdCBwcm92aWRlci5cbiAgICogQHBhcmFtIHNjb3BlIFRoZSBkZWZpbml0aW9uIHNjb3BlXG4gICAqIEBwYXJhbSBpZCBDb25zdHJ1Y3QgSURcbiAgICogQHBhcmFtIHByb3BzIEluaXRpYWxpemF0aW9uIHByb3BlcnRpZXNcbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IE9wZW5JZENvbm5lY3RQcm92aWRlclByb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgICAvLyB0aHVtYnByaW50cyBpcyBzdGlsbCByZXF1aXJlZCBmb3IgdGVycmFmb3JtLXByb3ZpZGVyLWF3cywgdXNlIGR1bW15IC4uLlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtLXByb3ZpZGVyLWF3cy9pc3N1ZXMvMzUxMTJcbiAgICBsZXQgdGh1bWJwcmludExpc3QgPSBwcm9wcy50aHVtYnByaW50cyA/PyBbXG4gICAgICBcImFmYWZhZmFmYWZhZmFmYWZhZmFmYWZhZmFmYWZhZmFmYWZhZmFmYWZcIixcbiAgICBdO1xuICAgIC8vIFRPRE86IHRoaXMgbWF5IGNhdXNlIHVuZXhwZWN0ZWQgZXJyb3JzIGlmIHRodW1icHJpbnRzIGFyZSBub3QgcHJvdmlkZWRcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgaWFtT3BlbmlkQ29ubmVjdFByb3ZpZGVyLklhbU9wZW5pZENvbm5lY3RQcm92aWRlcihcbiAgICAgIHRoaXMsXG4gICAgICBcIlJlc291cmNlXCIsXG4gICAgICB7XG4gICAgICAgIHVybDogcHJvcHMudXJsLFxuICAgICAgICBjbGllbnRJZExpc3Q6IHByb3BzLmNsaWVudElkcyxcbiAgICAgICAgdGh1bWJwcmludExpc3QsXG4gICAgICB9LFxuICAgICk7XG4gICAgdGhpcy5vcGVuSWRDb25uZWN0UHJvdmlkZXJBcm4gPSB0aGlzLnJlc291cmNlLmFybjtcbiAgICB0aGlzLm9wZW5JZENvbm5lY3RQcm92aWRlcklzc3VlciA9IEFybi5leHRyYWN0UmVzb3VyY2VOYW1lKFxuICAgICAgdGhpcy5vcGVuSWRDb25uZWN0UHJvdmlkZXJBcm4sXG4gICAgICBcIm9pZGMtcHJvdmlkZXJcIixcbiAgICApO1xuICAgIHRoaXMub3BlbklkQ29ubmVjdFByb3ZpZGVydGh1bWJwcmludHMgPSB0aGlzLnJlc291cmNlLnRodW1icHJpbnRMaXN0O1xuICAgIHRoaXMub3BlbklkQ29ubmVjdFByb3ZpZGVyT3V0cHV0cyA9IHtcbiAgICAgIGFybjogdGhpcy5vcGVuSWRDb25uZWN0UHJvdmlkZXJBcm4sXG4gICAgICBpc3N1ZXI6IHRoaXMub3BlbklkQ29ubmVjdFByb3ZpZGVySXNzdWVyLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -168,5 +168,5 @@ class PolicyDocument extends aws_construct_1.AwsConstructBase {
168
168
  }
169
169
  exports.PolicyDocument = PolicyDocument;
170
170
  _a = JSII_RTTI_SYMBOL_1;
171
- PolicyDocument[_a] = { fqn: "terraconstructs.aws.iam.PolicyDocument", version: "0.0.14" };
171
+ PolicyDocument[_a] = { fqn: "terraconstructs.aws.iam.PolicyDocument", version: "0.0.15" };
172
172
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LWRvY3VtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9pYW0vcG9saWN5LWRvY3VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsd0dBQXdHO0FBQ3hHLHNHQUFzRztBQUN0Ryw0RkFBNEY7QUFDNUYsMkRBQTJEO0FBQzNELDZEQUE2RDtBQUM3RCxzREFBK0Q7QUFDL0QsaUNBQThDO0FBRzlDLHlEQUFxRDtBQUNyRCxvREFBbUU7QUFDbkUsaUVBQTZEO0FBQzdELHVGQUFrRjtBQWlGbEYsTUFBYSxjQUNYLFNBQVEsZ0NBQWdCO0lBR3hCOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsUUFBUSxDQUNwQixLQUFnQixFQUNoQixFQUFVLEVBQ1YsR0FBUTtRQUVSLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO1FBQ3RDLElBQUksU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsaUJBQWlCLENBQUMsYUFBYSxDQUM3QixHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLGtDQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzFELENBQUM7UUFDRixPQUFPLGlCQUFpQixDQUFDO0lBQzNCLENBQUM7SUFJRCw0Q0FBNEM7SUFDNUMsdUNBQXVDO0lBRXZDLElBQVcscUJBQXFCO1FBQzlCLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFDRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJ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d3MtY2RrL3RyZWUvdjIuMTYxLjEvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWlhbS9saWIvcG9saWN5LWRvY3VtZW50LnRzXG4vLyBDQVZFQVQ6IGluc3RlYWQgb2YgdXNpbmcgSVJlc29sdmFibGUsIHRoaXMgaXMgYSBDb25zdHJ1Y3QgYW5kIGl0cyBjb25zdHJ1Y3RvciByZXF1aXJlcyBzY29wZSBhbmQgaWRcbi8vIFRoaXMgc3ludGhzIGRpcmVjdGx5IHRvIHRoZSB0ZXJyYWZvcm0tcHJvdmlkZXItYXdzIGBhd3NfaWFtX3BvbGljeV9kb2N1bWVudGAgZGF0YSBzb3VyY2UuXG4vLyBUaGlzIGlzIG5vdCB1bmRlZmluZWQgd2hlbiB0aGUgcG9saWN5IGRvY3VtZW50IGlzIGVtcHR5LlxuLy8gVE9ETzogQWRkIHZhbGlkYXRpb24gYW5kIGVycm9ycyBmb3IgZW1wdHkgcG9saWN5IGRvY3VtZW50c1xuaW1wb3J0IHsgZGF0YUF3c0lhbVBvbGljeURvY3VtZW50IH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1hd3NcIjtcbmltcG9ydCB7IExhenksIElSZXNvbHZlQ29udGV4dCB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFBvbGljeURvY3VtZW50Q29uZmlnIH0gZnJvbSBcIi4vcG9saWN5LWRvY3VtZW50LWNvbmZpZy5nZW5lcmF0ZWRcIjtcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCB9IGZyb20gXCIuL3BvbGljeS1zdGF0ZW1lbnRcIjtcbmltcG9ydCB7IEF3c0NvbnN0cnVjdEJhc2UsIElBd3NDb25zdHJ1Y3QgfSBmcm9tIFwiLi4vYXdzLWNvbnN0cnVjdFwiO1xuaW1wb3J0IHsgbWVyZ2VTdGF0ZW1lbnRzIH0gZnJvbSBcIi4vcHJpdmF0ZS9tZXJnZS1zdGF0ZW1lbnRzXCI7XG5pbXBvcnQgeyBQb3N0UHJvY2Vzc1BvbGljeURvY3VtZW50IH0gZnJvbSBcIi4vcHJpdmF0ZS9wb3N0cHJvY2Vzcy1wb2xpY3ktZG9jdW1lbnRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBQb2xpY3lEb2N1bWVudE91dHB1dHMge1xuICAvKipcbiAgICogVGhlIHBvbGljeSBkb2N1bWVudCBKU09OXG4gICAqL1xuICByZWFkb25seSBwb2xpY3k6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUG9saWN5RG9jdW1lbnQgZXh0ZW5kcyBJQXdzQ29uc3RydWN0IHtcbiAgLy8gc3Ryb25nbHkgdHlwZWQgYWNjZXNzIHRvIG91dHB1dHNcbiAgcmVhZG9ubHkgcG9saWN5RG9jdW1lbnRPdXRwdXRzOiBQb2xpY3lEb2N1bWVudE91dHB1dHM7XG4gIHJlYWRvbmx5IGlzRW1wdHk6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHN0YXRlbWVudENvdW50OiBudW1iZXI7XG4gIHJlYWRvbmx5IGpzb246IHN0cmluZztcbiAgLyoqXG4gICAqIEFkZHMgYSBzdGF0ZW1lbnQgdG8gdGhlIHBvbGljeSBkb2N1bWVudC5cbiAgICpcbiAgICogQHBhcmFtIHN0YXRlbWVudCB0aGUgc3RhdGVtZW50IHRvIGFkZC5cbiAgICovXG4gIGFkZFN0YXRlbWVudHMoLi4uc3RhdGVtZW50OiBQb2xpY3lTdGF0ZW1lbnRbXSk6IHZvaWQ7XG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGF0IGFsbCBwb2xpY3kgc3RhdGVtZW50cyBpbiB0aGUgcG9saWN5IGRvY3VtZW50IHNhdGlzZmllcyB0aGVcbiAgICogcmVxdWlyZW1lbnRzIGZvciBhbnkgcG9saWN5LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9hY2Nlc3NfcG9saWNpZXMuaHRtbCNhY2Nlc3NfcG9saWNpZXMtanNvblxuICAgKlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzLCBvciBhbiBlbXB0eSBhcnJheSBpZiB0aGUgZG9jdW1lbnQgaXMgdmFsaWQuXG4gICAqL1xuICB2YWxpZGF0ZUZvckFueVBvbGljeSgpOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFZhbGlkYXRlIHRoYXQgYWxsIHBvbGljeSBzdGF0ZW1lbnRzIGluIHRoZSBwb2xpY3kgZG9jdW1lbnQgc2F0aXNmaWVzIHRoZVxuICAgKiByZXF1aXJlbWVudHMgZm9yIGEgcmVzb3VyY2UtYmFzZWQgcG9saWN5LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9hY2Nlc3NfcG9saWNpZXMuaHRtbCNhY2Nlc3NfcG9saWNpZXMtanNvblxuICAgKlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzLCBvciBhbiBlbXB0eSBhcnJheSBpZiB0aGUgZG9jdW1lbnQgaXMgdmFsaWQuXG4gICAqL1xuICB2YWxpZGF0ZUZvclJlc291cmNlUG9saWN5KCk6IHN0cmluZ1tdIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGF0IGFsbCBwb2xpY3kgc3RhdGVtZW50cyBpbiB0aGUgcG9saWN5IGRvY3VtZW50IHNhdGlzZmllcyB0aGVcbiAgICogcmVxdWlyZW1lbnRzIGZvciBhbiBpZGVudGl0eS1iYXNlZCBwb2xpY3kuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL2FjY2Vzc19wb2xpY2llcy5odG1sI2FjY2Vzc19wb2xpY2llcy1qc29uXG4gICAqXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHZhbGlkYXRpb24gZXJyb3IgbWVzc2FnZXMsIG9yIGFuIGVtcHR5IGFycmF5IGlmIHRoZSBkb2N1bWVudCBpcyB2YWxpZC5cbiAgICovO1xuICB2YWxpZGF0ZUZvcklkZW50aXR5UG9saWN5KCk6IHN0cmluZ1tdO1xuICAvKipcbiAgICogR2V0IEFXUyBJQU0gUG9saWN5IGRvY3VtZW50IEpTT05cbiAgICpcbiAgICogTk9URTogVGhpcyBtYXkgY29udGFpbiB1bnJlc29sdmVkIHRva2VucywgdXNlIHNwZWMucmVzb2x2ZSgpIHRvIHJlc29sdmUgdGhlbS5cbiAgICovXG4gIHRvRG9jdW1lbnRKc29uKCk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQb2xpY3lEb2N1bWVudFByb3BzIGV4dGVuZHMgUG9saWN5RG9jdW1lbnRDb25maWcge1xuICAvKipcbiAgICogVHJ5IHRvIG1pbmltaXplIHRoZSBwb2xpY3kgYnkgbWVyZ2luZyBzdGF0ZW1lbnRzXG4gICAqXG4gICAqIFRvIGF2b2lkIG92ZXJydW5uaW5nIHRoZSBtYXhpbXVtIHBvbGljeSBzaXplLCBjb21iaW5lIHN0YXRlbWVudHMgaWYgdGhleSBwcm9kdWNlXG4gICAqIHRoZSBzYW1lIHJlc3VsdC4gTWVyZ2luZyBoYXBwZW5zIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIHJ1bGVzOlxuICAgKlxuICAgKiAtIFRoZSBFZmZlY3Qgb2YgYm90aCBzdGF0ZW1lbnRzIGlzIHRoZSBzYW1lXG4gICAqIC0gTmVpdGhlciBvZiB0aGUgc3RhdGVtZW50cyBoYXZlIGEgJ1NpZCdcbiAgICogLSBDb21iaW5lIFByaW5jaXBhbHMgaWYgdGhlIHJlc3Qgb2YgdGhlIHN0YXRlbWVudCBpcyBleGFjdGx5IHRoZSBzYW1lLlxuICAgKiAtIENvbWJpbmUgUmVzb3VyY2VzIGlmIHRoZSByZXN0IG9mIHRoZSBzdGF0ZW1lbnQgaXMgZXhhY3RseSB0aGUgc2FtZS5cbiAgICogLSBDb21iaW5lIEFjdGlvbnMgaWYgdGhlIHJlc3Qgb2YgdGhlIHN0YXRlbWVudCBpcyBleGFjdGx5IHRoZSBzYW1lLlxuICAgKiAtIFdlIHdpbGwgbmV2ZXIgY29tYmluZSBOb3RQcmluY2lwYWxzLCBOb3RSZXNvdXJjZXMgb3IgTm90QWN0aW9ucywgYmVjYXVzZSBkb2luZ1xuICAgKiAgIHNvIHdvdWxkIGNoYW5nZSB0aGUgbWVhbmluZyBvZiB0aGUgcG9saWN5IGRvY3VtZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlLCB1bmxlc3MgdGhlIGZlYXR1cmUgZmxhZyBgQGF3cy1jZGsvYXdzLWlhbTptaW5pbWl6ZVBvbGljaWVzYCBpcyBzZXRcbiAgICovXG4gIHJlYWRvbmx5IG1pbmltaXplPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgYXNzaWduIFN0YXRlbWVudCBJZHMgdG8gYWxsIHN0YXRlbWVudHNcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGFzc2lnblNpZHM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgUG9saWN5RG9jdW1lbnRcbiAgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlXG4gIGltcGxlbWVudHMgSVBvbGljeURvY3VtZW50XG57XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFBvbGljeURvY3VtZW50IGJhc2VkIG9uIHRoZSBvYmplY3QgcHJvdmlkZWQuXG4gICAqIFRoaXMgd2lsbCBhY2NlcHQgYW4gb2JqZWN0IGNyZWF0ZWQgZnJvbSB0aGUgYC50b0RvY3VtZW50SnNvbigpYCBjYWxsXG4gICAqIEBwYXJhbSBvYmogdGhlIFBvbGljeURvY3VtZW50IGluIG9iamVjdCBmb3JtLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSnNvbihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgb2JqOiBhbnksXG4gICk6IFBvbGljeURvY3VtZW50IHtcbiAgICBjb25zdCBuZXdQb2xpY3lEb2N1bWVudCA9IG5ldyBQb2xpY3lEb2N1bWVudChzY29wZSwgaWQpO1xuICAgIGNvbnN0IHN0YXRlbWVudCA9IG9iai5TdGF0ZW1lbnQgPz8gW107XG4gICAgaWYgKHN0YXRlbWVudCAmJiAhQXJyYXkuaXNBcnJheShzdGF0ZW1lbnQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTdGF0ZW1lbnQgbXVzdCBiZSBhbiBhcnJheVwiKTtcbiAgICB9XG4gICAgbmV3UG9saWN5RG9jdW1lbnQuYWRkU3RhdGVtZW50cyhcbiAgICAgIC4uLnN0YXRlbWVudC5tYXAoKHM6IGFueSkgPT4gUG9saWN5U3RhdGVtZW50LmZyb21Kc29uKHMpKSxcbiAgICApO1xuICAgIHJldHVybiBuZXdQb2xpY3lEb2N1bWVudDtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBzdGF0ZW1lbnRzID0gbmV3IEFycmF5PFBvbGljeVN0YXRlbWVudD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlOiBkYXRhQXdzSWFtUG9saWN5RG9jdW1lbnQuRGF0YUF3c0lhbVBvbGljeURvY3VtZW50O1xuICAvLyBwcml2YXRlIHJlYWRvbmx5IGF1dG9Bc3NpZ25TaWRzOiBib29sZWFuO1xuICAvLyBwcml2YXRlIHJlYWRvbmx5IG1pbmltaXplPzogYm9vbGVhbjtcblxuICBwdWJsaWMgZ2V0IHBvbGljeURvY3VtZW50T3V0cHV0cygpOiBQb2xpY3lEb2N1bWVudE91dHB1dHMge1xuICAgIHJldHVybiB7IHBvbGljeTogdGhpcy5qc29uIH07XG4gIH1cbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLnBvbGljeURvY3VtZW50T3V0cHV0cztcbiAgfVxuXG4gIHB1YmxpYyBnZXQganNvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlLmpzb247XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBhdXRvQXNzaWduU2lkczogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBtaW5pbWl6ZT86IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFBvbGljeURvY3VtZW50UHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIHRoaXMuYXV0b0Fzc2lnblNpZHMgPSAhIXByb3BzLmFzc2lnblNpZHM7XG4gICAgdGhpcy5taW5pbWl6ZSA9IHByb3BzLm1pbmltaXplID8/IGZhbHNlO1xuICAgIHRoaXMuYWRkU3RhdGVtZW50cyguLi4ocHJvcHMuc3RhdGVtZW50IHx8IFtdKSk7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgLy8gVE9ETzogbW92ZSBpbiB0b1RlcnJhZm9ybSgpIGFuZCBkb24ndCBnZW5lcmF0ZSBhbnl0aGluZyBpZiBpc0VtcHR5KCk/XG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBkYXRhQXdzSWFtUG9saWN5RG9jdW1lbnQuRGF0YUF3c0lhbVBvbGljeURvY3VtZW50KFxuICAgICAgdGhpcyxcbiAgICAgIFwiUmVzb3VyY2VcIixcbiAgICAgIHtcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIHN0YXRlbWVudDogTGF6eS5hbnlWYWx1ZSh7XG4gICAgICAgICAgcHJvZHVjZTogKGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbWF5YmVNZXJnZVN0YXRlbWVudHMoKTtcbiAgICAgICAgICAgIGNvbnRleHQucmVnaXN0ZXJQb3N0UHJvY2Vzc29yKFxuICAgICAgICAgICAgICBuZXcgUG9zdFByb2Nlc3NQb2xpY3lEb2N1bWVudChzZWxmLmF1dG9Bc3NpZ25TaWRzKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnRzLm1hcCgocykgPT5cbiAgICAgICAgICAgICAgZGF0YUF3c0lhbVBvbGljeURvY3VtZW50LmRhdGFBd3NJYW1Qb2xpY3lEb2N1bWVudFN0YXRlbWVudFRvVGVycmFmb3JtKFxuICAgICAgICAgICAgICAgIHMudG9KU09OKCksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gc3RhdGVtZW50IG1lcmdpbmcgKGlmIGVuYWJsZWQgYW5kIG5vdCBkb25lIHlldClcbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX21heWJlTWVyZ2VTdGF0ZW1lbnRzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1pbmltaXplICYmIHRoaXMuc3RhdGVtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBtZXJnZVN0YXRlbWVudHModGhpcy5zdGF0ZW1lbnRzLCB7IHNjb3BlOiB0aGlzIH0pO1xuICAgICAgdGhpcy5zdGF0ZW1lbnRzLnNwbGljZShcbiAgICAgICAgMCxcbiAgICAgICAgdGhpcy5zdGF0ZW1lbnRzLmxlbmd0aCxcbiAgICAgICAgLi4ucmVzdWx0Lm1lcmdlZFN0YXRlbWVudHMsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIC8qKlxuICAvLyAgKiBKU09OLWlmeSB0aGUgZG9jdW1lbnRcbiAgLy8gICpcbiAgLy8gICogVXNlZCB3aGVuIEpTT04uc3RyaW5naWZ5KCkgaXMgY2FsbGVkXG4gIC8vICAqL1xuICAvLyBwdWJsaWMgdG9KU09OKCk6IGFueSB7XG4gIC8vICAgcmV0dXJuIHtcbiAgLy8gICAgIHN0YXRlbWVudDogdGhpcy5zdGF0ZW1lbnRzLm1hcCgocykgPT4gcy50b0pTT04oKSksXG4gIC8vICAgfTtcbiAgLy8gfVxuXG4gIC8vVE9ETzogQ2F1dGlvbiAtIHRvVGVycmFmb3JtKCkgcmV0dXJucyBub3RoaW5nIGJ5IGRlc2lnbiFcbiAgLy8gQWRkaW5nIHRvVGVycmFmb3JtKCkgd2lsbCBjYXVzZSBpbmZpbml0ZSByZWN1cnNpb25cblxuICAvKipcbiAgICogR2V0IEFXUyBJQU0gUG9saWN5IGRvY3VtZW50IEpTT05cbiAgICpcbiAgICogTk9URTogTWF5IGNvbnRhaW4gdG9rZW5zLCB1c2Ugc3BlYy5yZXNvbHZlKCkgdG8gcmVzb2x2ZSB0aGVtLlxuICAgKi9cbiAgcHVibGljIHRvRG9jdW1lbnRKc29uKCk6IGFueSB7XG4gICAgaWYgKHRoaXMuaXNFbXB0eSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBtZXJnZSByZXNvbHZlZCBzdGF0ZW1lbnRzXG4gICAgdGhpcy5fbWF5YmVNZXJnZVN0YXRlbWVudHMoKTtcbiAgICBjb25zdCBkb2MgPSB7XG4gICAgICBTdGF0ZW1lbnQ6IHRoaXMuc3RhdGVtZW50cy5tYXAoKHMpID0+IHMudG9TdGF0ZW1lbnRKc29uKCkpLFxuICAgICAgVmVyc2lvbjogXCIyMDEyLTEwLTE3XCIsXG4gICAgfTtcblxuICAgIHJldHVybiBkb2M7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcG9saWN5IGRvY3VtZW50IGNvbnRhaW5zIGFueSBzdGF0ZW1lbnRzLlxuICAgKi9cbiAgcHVibGljIGdldCBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudHMubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2Ygc3RhdGVtZW50cyBhbHJlYWR5IGFkZGVkIHRvIHRoaXMgcG9saWN5LlxuICAgKiBDYW4gYmUgdXNlZCwgZm9yIGV4YW1wbGUsIHRvIGdlbmVyYXRlIHVuaXF1ZSBcInNpZFwicyB3aXRoaW4gdGhlIHBvbGljeS5cbiAgICovXG4gIHB1YmxpYyBnZXQgc3RhdGVtZW50Q291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnRzLmxlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgc3RhdGVtZW50IHRvIHRoZSBwb2xpY3kgZG9jdW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBzdGF0ZW1lbnQgdGhlIHN0YXRlbWVudCB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWRkU3RhdGVtZW50cyguLi5zdGF0ZW1lbnQ6IFBvbGljeVN0YXRlbWVudFtdKSB7XG4gICAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goLi4uc3RhdGVtZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGF0IGFsbCBwb2xpY3kgc3RhdGVtZW50cyBpbiB0aGUgcG9saWN5IGRvY3VtZW50IHNhdGlzZmllcyB0aGVcbiAgICogcmVxdWlyZW1lbnRzIGZvciBhbnkgcG9saWN5LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9hY2Nlc3NfcG9saWNpZXMuaHRtbCNhY2Nlc3NfcG9saWNpZXMtanNvblxuICAgKlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzLCBvciBhbiBlbXB0eSBhcnJheSBpZiB0aGUgZG9jdW1lbnQgaXMgdmFsaWQuXG4gICAqL1xuICBwdWJsaWMgdmFsaWRhdGVGb3JBbnlQb2xpY3koKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGVycm9ycyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgZm9yIChjb25zdCBzdGF0ZW1lbnQgb2YgdGhpcy5zdGF0ZW1lbnRzKSB7XG4gICAgICBlcnJvcnMucHVzaCguLi5zdGF0ZW1lbnQudmFsaWRhdGVGb3JBbnlQb2xpY3koKSk7XG4gICAgfVxuICAgIHJldHVybiBlcnJvcnM7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhhdCBhbGwgcG9saWN5IHN0YXRlbWVudHMgaW4gdGhlIHBvbGljeSBkb2N1bWVudCBzYXRpc2ZpZXMgdGhlXG4gICAqIHJlcXVpcmVtZW50cyBmb3IgYSByZXNvdXJjZS1iYXNlZCBwb2xpY3kuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL2FjY2Vzc19wb2xpY2llcy5odG1sI2FjY2Vzc19wb2xpY2llcy1qc29uXG4gICAqXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHZhbGlkYXRpb24gZXJyb3IgbWVzc2FnZXMsIG9yIGFuIGVtcHR5IGFycmF5IGlmIHRoZSBkb2N1bWVudCBpcyB2YWxpZC5cbiAgICovXG4gIHB1YmxpYyB2YWxpZGF0ZUZvclJlc291cmNlUG9saWN5KCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBlcnJvcnMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIGZvciAoY29uc3Qgc3RhdGVtZW50IG9mIHRoaXMuc3RhdGVtZW50cykge1xuICAgICAgZXJyb3JzLnB1c2goLi4uc3RhdGVtZW50LnZhbGlkYXRlRm9yUmVzb3VyY2VQb2xpY3koKSk7XG4gICAgfVxuICAgIHJldHVybiBlcnJvcnM7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhhdCBhbGwgcG9saWN5IHN0YXRlbWVudHMgaW4gdGhlIHBvbGljeSBkb2N1bWVudCBzYXRpc2ZpZXMgdGhlXG4gICAqIHJlcXVpcmVtZW50cyBmb3IgYW4gaWRlbnRpdHktYmFzZWQgcG9saWN5LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9hY2Nlc3NfcG9saWNpZXMuaHRtbCNhY2Nlc3NfcG9saWNpZXMtanNvblxuICAgKlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzLCBvciBhbiBlbXB0eSBhcnJheSBpZiB0aGUgZG9jdW1lbnQgaXMgdmFsaWQuXG4gICAqL1xuICBwdWJsaWMgdmFsaWRhdGVGb3JJZGVudGl0eVBvbGljeSgpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgZXJyb3JzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiB0aGlzLnN0YXRlbWVudHMpIHtcbiAgICAgIGVycm9ycy5wdXNoKC4uLnN0YXRlbWVudC52YWxpZGF0ZUZvcklkZW50aXR5UG9saWN5KCkpO1xuICAgIH1cbiAgICByZXR1cm4gZXJyb3JzO1xuICB9XG5cbiAgLy8gLyoqXG4gIC8vICAqIEZyZWV6ZSBhbGwgc3RhdGVtZW50c1xuICAvLyAgKi9cbiAgLy8gcHJpdmF0ZSBmcmVlemVTdGF0ZW1lbnRzKCkge1xuICAvLyAgIGZvciAoY29uc3Qgc3RhdGVtZW50IG9mIHRoaXMuc3RhdGVtZW50cykge1xuICAvLyAgICAgc3RhdGVtZW50LmZyZWV6ZSgpO1xuICAvLyAgIH1cbiAgLy8gfVxufVxuIl19
@@ -685,7 +685,7 @@ class PolicyStatement {
685
685
  }
686
686
  exports.PolicyStatement = PolicyStatement;
687
687
  _a = JSII_RTTI_SYMBOL_1;
688
- PolicyStatement[_a] = { fqn: "terraconstructs.aws.iam.PolicyStatement", version: "0.0.14" };
688
+ PolicyStatement[_a] = { fqn: "terraconstructs.aws.iam.PolicyStatement", version: "0.0.15" };
689
689
  /**
690
690
  * The Effect element of an IAM policy
691
691
  *
@@ -1,9 +1,11 @@
1
1
  import { Construct } from "constructs";
2
2
  import { IAwsConstruct, AwsConstructBase, AwsConstructProps } from "../aws-construct";
3
+ import { IGroup } from "./group";
3
4
  import { IPolicyDocument } from "./policy-document";
4
5
  import { PolicyStatement } from "./policy-statement";
5
6
  import { IGrantable, IPrincipal } from "./principals";
6
7
  import { IRole } from "./role";
8
+ import { IUser } from "./user";
7
9
  export declare const MAX_POLICY_NAME_LEN = 128;
8
10
  /**
9
11
  * Represents an IAM Policy
@@ -31,6 +33,13 @@ export interface PolicyProps extends AwsConstructProps {
31
33
  * to be unique within the stack.
32
34
  */
33
35
  readonly policyName?: string;
36
+ /**
37
+ * Users to attach this policy to.
38
+ * You can also use `attachToUser(user)` to attach this policy to a user.
39
+ *
40
+ * @default - No users.
41
+ */
42
+ readonly users?: IUser[];
34
43
  /**
35
44
  * Roles to attach this policy to.
36
45
  * You can also use `attachToRole(role)` to attach this policy to a role.
@@ -38,6 +47,13 @@ export interface PolicyProps extends AwsConstructProps {
38
47
  * @default - No roles.
39
48
  */
40
49
  readonly roles?: IRole[];
50
+ /**
51
+ * Groups to attach this policy to.
52
+ * You can also use `attachToGroup(group)` to attach this policy to a group.
53
+ *
54
+ * @default - No groups.
55
+ */
56
+ readonly groups?: IGroup[];
41
57
  /**
42
58
  * Initial set of permissions to add to this policy document.
43
59
  * You can also use `addStatements(...statement)` to add permissions later.
@@ -85,6 +101,8 @@ export declare class Policy extends AwsConstructBase implements IPolicy, IGranta
85
101
  get outputs(): Record<string, any>;
86
102
  private readonly _policyName;
87
103
  private readonly roles;
104
+ private readonly users;
105
+ private readonly groups;
88
106
  private readonly force;
89
107
  private referenceTaken;
90
108
  constructor(scope: Construct, id: string, props?: PolicyProps);
@@ -92,6 +110,10 @@ export declare class Policy extends AwsConstructBase implements IPolicy, IGranta
92
110
  * Adds a statement to the policy document.
93
111
  */
94
112
  addStatements(...statement: PolicyStatement[]): void;
113
+ /**
114
+ * Attaches this policy to a user.
115
+ */
116
+ attachToUser(user: IUser): void;
95
117
  /**
96
118
  * Attaches this policy to a role.
97
119
  *
@@ -102,6 +124,10 @@ export declare class Policy extends AwsConstructBase implements IPolicy, IGranta
102
124
  * you will get resource cycling and/or errors.
103
125
  */
104
126
  attachToRole(role: IRole): void;
127
+ /**
128
+ * Attaches this policy to a group.
129
+ */
130
+ attachToGroup(group: IGroup): void;
105
131
  /**
106
132
  * The name of this policy.
107
133
  *