@codedrifters/constructs 0.0.0 → 0.0.2

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.
@@ -19,5 +19,4 @@ class PrivateBucket extends aws_s3_1.Bucket {
19
19
  }
20
20
  }
21
21
  exports.PrivateBucket = PrivateBucket;
22
- // foo
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZS1idWNrZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvczMvcHJpdmF0ZS1idWNrZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQTRDO0FBQzVDLCtDQUs0QjtBQUs1QixNQUFhLGFBQWMsU0FBUSxlQUFNO0lBQ3ZDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBNEIsRUFBRTtRQUN0RSxNQUFNLFlBQVksR0FBRztZQUNuQixhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWEsSUFBSSwyQkFBYSxDQUFDLE1BQU07WUFDMUQsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGFBQWEsS0FBSywyQkFBYSxDQUFDLE9BQU87U0FDakUsQ0FBQztRQUVGLE1BQU0sYUFBYSxHQUFHO1lBQ3BCLGdCQUFnQixFQUFFLEtBQUs7WUFDdkIsaUJBQWlCLEVBQUUsMEJBQWlCLENBQUMsU0FBUztZQUM5QyxVQUFVLEVBQUUsSUFBSTtZQUNoQixlQUFlLEVBQUUsd0JBQWUsQ0FBQyxxQkFBcUI7U0FDdkQsQ0FBQztRQUVGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxZQUFZLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7Q0FDRjtBQWhCRCxzQ0FnQkM7QUFDRCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtcbiAgQmxvY2tQdWJsaWNBY2Nlc3MsXG4gIEJ1Y2tldCxcbiAgQnVja2V0UHJvcHMsXG4gIE9iamVjdE93bmVyc2hpcCxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBQcml2YXRlQnVja2V0UHJvcHMgZXh0ZW5kcyBCdWNrZXRQcm9wcyB7fVxuXG5leHBvcnQgY2xhc3MgUHJpdmF0ZUJ1Y2tldCBleHRlbmRzIEJ1Y2tldCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQcml2YXRlQnVja2V0UHJvcHMgPSB7fSkge1xuICAgIGNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzLnJlbW92YWxQb2xpY3kgPz8gUmVtb3ZhbFBvbGljeS5SRVRBSU4sXG4gICAgICBhdXRvRGVsZXRlT2JqZWN0czogcHJvcHMucmVtb3ZhbFBvbGljeSA9PT0gUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgIH07XG5cbiAgICBjb25zdCByZXF1aXJlZFByb3BzID0ge1xuICAgICAgcHVibGljUmVhZEFjY2VzczogZmFsc2UsXG4gICAgICBibG9ja1B1YmxpY0FjY2VzczogQmxvY2tQdWJsaWNBY2Nlc3MuQkxPQ0tfQUxMLFxuICAgICAgZW5mb3JjZVNTTDogdHJ1ZSxcbiAgICAgIG9iamVjdE93bmVyc2hpcDogT2JqZWN0T3duZXJzaGlwLkJVQ0tFVF9PV05FUl9FTkZPUkNFRCxcbiAgICB9O1xuXG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7IC4uLmRlZmF1bHRQcm9wcywgLi4ucHJvcHMsIC4uLnJlcXVpcmVkUHJvcHMgfSk7XG4gIH1cbn1cbi8vIGZvb1xuIl19
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZS1idWNrZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvczMvcHJpdmF0ZS1idWNrZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQTRDO0FBQzVDLCtDQUs0QjtBQUs1QixNQUFhLGFBQWMsU0FBUSxlQUFNO0lBQ3ZDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBNEIsRUFBRTtRQUN0RSxNQUFNLFlBQVksR0FBRztZQUNuQixhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWEsSUFBSSwyQkFBYSxDQUFDLE1BQU07WUFDMUQsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGFBQWEsS0FBSywyQkFBYSxDQUFDLE9BQU87U0FDakUsQ0FBQztRQUVGLE1BQU0sYUFBYSxHQUFHO1lBQ3BCLGdCQUFnQixFQUFFLEtBQUs7WUFDdkIsaUJBQWlCLEVBQUUsMEJBQWlCLENBQUMsU0FBUztZQUM5QyxVQUFVLEVBQUUsSUFBSTtZQUNoQixlQUFlLEVBQUUsd0JBQWUsQ0FBQyxxQkFBcUI7U0FDdkQsQ0FBQztRQUVGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxZQUFZLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7Q0FDRjtBQWhCRCxzQ0FnQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZW1vdmFsUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge1xuICBCbG9ja1B1YmxpY0FjY2VzcyxcbiAgQnVja2V0LFxuICBCdWNrZXRQcm9wcyxcbiAgT2JqZWN0T3duZXJzaGlwLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByaXZhdGVCdWNrZXRQcm9wcyBleHRlbmRzIEJ1Y2tldFByb3BzIHt9XG5cbmV4cG9ydCBjbGFzcyBQcml2YXRlQnVja2V0IGV4dGVuZHMgQnVja2V0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFByaXZhdGVCdWNrZXRQcm9wcyA9IHt9KSB7XG4gICAgY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICAgICAgcmVtb3ZhbFBvbGljeTogcHJvcHMucmVtb3ZhbFBvbGljeSA/PyBSZW1vdmFsUG9saWN5LlJFVEFJTixcbiAgICAgIGF1dG9EZWxldGVPYmplY3RzOiBwcm9wcy5yZW1vdmFsUG9saWN5ID09PSBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgfTtcblxuICAgIGNvbnN0IHJlcXVpcmVkUHJvcHMgPSB7XG4gICAgICBwdWJsaWNSZWFkQWNjZXNzOiBmYWxzZSxcbiAgICAgIGJsb2NrUHVibGljQWNjZXNzOiBCbG9ja1B1YmxpY0FjY2Vzcy5CTE9DS19BTEwsXG4gICAgICBlbmZvcmNlU1NMOiB0cnVlLFxuICAgICAgb2JqZWN0T3duZXJzaGlwOiBPYmplY3RPd25lcnNoaXAuQlVDS0VUX09XTkVSX0VORk9SQ0VELFxuICAgIH07XG5cbiAgICBzdXBlcihzY29wZSwgaWQsIHsgLi4uZGVmYXVsdFByb3BzLCAuLi5wcm9wcywgLi4ucmVxdWlyZWRQcm9wcyB9KTtcbiAgfVxufVxuIl19
@@ -3,10 +3,6 @@ import { HostedZoneAttributes } from "aws-cdk-lib/aws-route53";
3
3
  import { Construct } from "constructs";
4
4
  import { PrivateBucketProps } from "../s3/private-bucket";
5
5
  export interface StaticDomainProps {
6
- /**
7
- * The sub domain prefix (ie: images)
8
- */
9
- readonly subDomain: string;
10
6
  /**
11
7
  * The base domain (ie: codedrifters.com)
12
8
  */
@@ -17,6 +13,10 @@ export interface StaticDomainProps {
17
13
  readonly hostedZoneAttributes: HostedZoneAttributes;
18
14
  }
19
15
  export interface StaticHostingProps extends StackProps {
16
+ /**
17
+ * Short description used in various places for traceability.
18
+ */
19
+ readonly description?: string;
20
20
  /**
21
21
  * Values used to connect a domain name to the cloudfront distribution. If not
22
22
  * supplied, cloudfront doesn't use a custom domain.
@@ -29,8 +29,7 @@ class StaticHosting extends constructs_1.Construct {
29
29
  distributionIDParamName: "/STATIC_WEBSITE/DISTRIBUTION_ID",
30
30
  ...props,
31
31
  };
32
- const { subDomain, baseDomain, hostedZoneAttributes } = staticDomainProps ?? {};
33
- this.fullDomain = [subDomain, baseDomain].join(".");
32
+ const { baseDomain, hostedZoneAttributes } = staticDomainProps ?? {};
34
33
  /***************************************************************************
35
34
  *
36
35
  * PRIVATE BUCKET
@@ -50,14 +49,14 @@ class StaticHosting extends constructs_1.Construct {
50
49
  **************************************************************************/
51
50
  let zone;
52
51
  let certificate;
53
- if (hostedZoneAttributes) {
52
+ if (hostedZoneAttributes && baseDomain) {
54
53
  zone = aws_route53_1.HostedZone.fromHostedZoneAttributes(this, "zone", hostedZoneAttributes);
55
54
  certificate = new aws_certificatemanager_1.Certificate(this, "wildcard-certificate", {
56
- domainName: `*.${this.fullDomain}`,
57
- subjectAlternativeNames: [this.fullDomain],
55
+ domainName: `*.${baseDomain}`,
56
+ subjectAlternativeNames: [baseDomain],
58
57
  validation: aws_certificatemanager_1.CertificateValidation.fromDnsMultiZone({
59
- [`*.${this.fullDomain}`]: zone,
60
- [this.fullDomain]: zone,
58
+ [`*.${baseDomain}`]: zone,
59
+ [baseDomain]: zone,
61
60
  }),
62
61
  });
63
62
  }
@@ -101,14 +100,14 @@ class StaticHosting extends constructs_1.Construct {
101
100
  originAccessLevels: [aws_cloudfront_1.AccessLevel.READ],
102
101
  });
103
102
  const distribution = new aws_cloudfront_1.Distribution(this, "cloudfront-distribution", {
104
- comment: `Distribution for ${this.fullDomain}`,
103
+ comment: `Distribution for ${props.description ?? id}`,
105
104
  /**
106
105
  * Only if domain was supplied
107
106
  */
108
- ...(certificate
107
+ ...(certificate && baseDomain
109
108
  ? {
110
109
  certificate,
111
- domainNames: [this.fullDomain, `*.${this.fullDomain}`],
110
+ domainNames: [baseDomain, `*.${baseDomain}`],
112
111
  }
113
112
  : {}),
114
113
  defaultBehavior: {
@@ -125,6 +124,11 @@ class StaticHosting extends constructs_1.Construct {
125
124
  },
126
125
  defaultRootObject: "index.html",
127
126
  });
127
+ /**
128
+ * We finally have enough information to set the full domain.
129
+ */
130
+ this.fullDomain =
131
+ certificate && baseDomain ? baseDomain : distribution.domainName;
128
132
  /***************************************************************************
129
133
  *
130
134
  * DNS ENTRY
@@ -135,12 +139,12 @@ class StaticHosting extends constructs_1.Construct {
135
139
  if (zone) {
136
140
  new aws_route53_1.ARecord(this, "root-dns-entry", {
137
141
  zone,
138
- recordName: subDomain,
142
+ recordName: baseDomain ? baseDomain : "",
139
143
  target: aws_route53_1.RecordTarget.fromAlias(new aws_route53_targets_1.CloudFrontTarget(distribution)),
140
144
  });
141
145
  new aws_route53_1.ARecord(this, "wc-dns-entry", {
142
146
  zone,
143
- recordName: `*.${subDomain}`,
147
+ recordName: baseDomain ? `*.${baseDomain}` : "*",
144
148
  target: aws_route53_1.RecordTarget.fromAlias(new aws_route53_targets_1.CloudFrontTarget(distribution)),
145
149
  });
146
150
  }
@@ -152,21 +156,21 @@ class StaticHosting extends constructs_1.Construct {
152
156
  *
153
157
  **************************************************************************/
154
158
  new aws_ssm_1.StringParameter(this, "dist-domain", {
155
- description: `GENERATED DO NOT CHANGE - CloudFront Distribution Details (${this.fullDomain}).`,
159
+ description: `GENERATED DO NOT CHANGE - CloudFront Distribution Details (${props.description ?? id}).`,
156
160
  parameterName: distributionDomainParamName,
157
161
  stringValue: distribution.domainName,
158
162
  });
159
163
  new aws_ssm_1.StringParameter(this, "dist-id", {
160
- description: `GENERATED DO NOT CHANGE - CloudFront Distribution Details (${this.fullDomain}).`,
164
+ description: `GENERATED DO NOT CHANGE - CloudFront Distribution Details (${props.description ?? id}).`,
161
165
  parameterName: distributionIDParamName,
162
166
  stringValue: distribution.distributionId,
163
167
  });
164
168
  new aws_ssm_1.StringParameter(this, "bucket-arn", {
165
- description: `GENERATED DO NOT CHANGE - S3 Bucket ARN for Static Website Hosting (${this.fullDomain}).`,
169
+ description: `GENERATED DO NOT CHANGE - S3 Bucket ARN for (${props.description ?? id}).`,
166
170
  parameterName: bucketArnParamName,
167
171
  stringValue: bucket.bucketArn,
168
172
  });
169
173
  }
170
174
  }
171
175
  exports.StaticHosting = StaticHosting;
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLWhvc3RpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhdGljLWhvc3Rpbmcvc3RhdGljLWhvc3RpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQW1EO0FBQ25ELCtFQUc0QztBQUM1QywrREFZb0M7QUFDcEMsK0VBQW9FO0FBQ3BFLHVEQUFpRDtBQUNqRCxxRUFBK0Q7QUFDL0QsbURBQStEO0FBQy9ELHlEQU1pQztBQUNqQyx5RUFBbUU7QUFDbkUsaURBQXNEO0FBQ3RELDJDQUF1QztBQUN2Qyx5REFBeUU7QUFnRHpFLE1BQWEsYUFBYyxTQUFRLHNCQUFTO0lBTTFDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBNEIsRUFBRTtRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCOzs7Ozs7b0ZBTTRFO1FBRTVFLE1BQU0sRUFDSixrQkFBa0IsRUFDbEIsMkJBQTJCLEVBQzNCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsa0JBQWtCLEdBQ25CLEdBQUc7WUFDRixrQkFBa0IsRUFBRSw0QkFBNEI7WUFDaEQsMkJBQTJCLEVBQUUscUNBQXFDO1lBQ2xFLHVCQUF1QixFQUFFLGlDQUFpQztZQUMxRCxHQUFHLEtBQUs7U0FDVCxDQUFDO1FBRUYsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsR0FDbkQsaUJBQWlCLElBQUksRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXBEOzs7Ozs7O29GQU80RTtRQUU1RSxNQUFNLE1BQU0sR0FBRyxJQUFJLDhCQUFhLENBQzlCLElBQUksRUFDSix1QkFBdUIsRUFDdkIsa0JBQWtCLENBQ25CLENBQUM7UUFFRjs7Ozs7OztvRkFPNEU7UUFFNUUsSUFBSSxJQUE2QixD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LENBQUMsU0FBUztTQUM5QixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFyTUQsc0NBcU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHVyYXRpb24sIFN0YWNrUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIENlcnRpZmljYXRlLFxuICBDZXJ0aWZpY2F0ZVZhbGlkYXRpb24sXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2VydGlmaWNhdGVtYW5hZ2VyXCI7XG5pbXBvcnQge1xuICBBY2Nlc3NMZXZlbCxcbiAgQWxsb3dlZE1ldGhvZHMsXG4gIENhY2hlQ29va2llQmVoYXZpb3IsXG4gIENhY2hlSGVhZGVyQmVoYXZpb3IsXG4gIENhY2hlUG9saWN5LFxuICBDYWNoZVF1ZXJ5U3RyaW5nQmVoYXZpb3IsXG4gIERpc3RyaWJ1dGlvbixcbiAgTGFtYmRhRWRnZUV2ZW50VHlwZSxcbiAgUzNPcmlnaW5BY2Nlc3NDb250cm9sLFxuICBTaWduaW5nLFxuICBWaWV3ZXJQcm90b2NvbFBvbGljeSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZGZyb250XCI7XG5pbXBvcnQgeyBTM0J1Y2tldE9yaWdpbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udC1vcmlnaW5zXCI7XG5pbXBvcnQgeyBSdW50aW1lIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IE5vZGVqc0Z1bmN0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzXCI7XG5pbXBvcnQgeyBMb2dHcm91cCwgUmV0ZW50aW9uRGF5cyB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbG9nc1wiO1xuaW1wb3J0IHtcbiAgQVJlY29yZCxcbiAgSG9zdGVkWm9uZSxcbiAgSG9zdGVkWm9uZUF0dHJpYnV0ZXMsXG4gIElIb3N0ZWRab25lLFxuICBSZWNvcmRUYXJnZXQsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHsgQ2xvdWRGcm9udFRhcmdldCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1My10YXJnZXRzXCI7XG5pbXBvcnQgeyBTdHJpbmdQYXJhbWV0ZXIgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNzbVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFByaXZhdGVCdWNrZXQsIFByaXZhdGVCdWNrZXRQcm9wcyB9IGZyb20gXCIuLi9zMy9wcml2YXRlLWJ1Y2tldFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRpY0RvbWFpblByb3BzIHtcbiAgLyoqXG4gICAqICBUaGUgc3ViIGRvbWFpbiBwcmVmaXggKGllOiBpbWFnZXMpXG4gICAqL1xuICByZWFkb25seSBzdWJEb21haW46IHN0cmluZztcblxuICAvKipcbiAgICogIFRoZSBiYXNlIGRvbWFpbiAoaWU6IGNvZGVkcmlmdGVycy5jb20pXG4gICAqL1xuICByZWFkb25seSBiYXNlRG9tYWluOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEhvc3RlZCB6b25lIElEIGZvciB0aGUgYmFzZSBkb21haW4uXG4gICAqL1xuICByZWFkb25seSBob3N0ZWRab25lQXR0cmlidXRlczogSG9zdGVkWm9uZUF0dHJpYnV0ZXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGljSG9zdGluZ1Byb3BzIGV4dGVuZHMgU3RhY2tQcm9wcyB7XG4gIC8qKlxuICAgKiBWYWx1ZXMgdXNlZCB0byBjb25uZWN0IGEgZG9tYWluIG5hbWUgdG8gdGhlIGNsb3VkZnJvbnQgZGlzdHJpYnV0aW9uLiBJZiBub3RcbiAgICogc3VwcGxpZWQsIGNsb3VkZnJvbnQgZG9lc24ndCB1c2UgYSBjdXN0b20gZG9tYWluLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGljRG9tYWluUHJvcHM/OiBTdGF0aWNEb21haW5Qcm9wcztcblxuICAvKipcbiAgICogUGFyYW1ldGVyIG5hbWUgdG8gdXNlIHdoZW4gc3RvcmluZyB0aGUgc3RhdGljIGhvc3RpbmcgYnVja2V0J3MgQVJOLlxuICAgKiBUaGlzIGlzIG5lZWRlZCBpbiBvdGhlciBsYXRlciBzdGVwcyB3aGVuIGRlcGxveWluZyBob3N0ZWQgY29udGVudCB0byBTMy5cbiAgICovXG4gIHJlYWRvbmx5IGJ1Y2tldEFyblBhcmFtTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogUGFyYW1ldGVyIG5hbWUgdG8gdXNlIHdoZW4gc3RvcmluZyB0aGUgQ2xvdWRGcm9udCBEaXN0cmlidXRpb24gRG9tYWluIE5hbWUuXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb25Eb21haW5QYXJhbU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhcmFtZXRlciBuYW1lIHRvIHVzZSB3aGVuIHN0b3JpbmcgdGhlIENsb3VkRnJvbnQgRGlzdHJpYnV0aW9uIElELlxuICAgKi9cbiAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uSURQYXJhbU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByb3BzIHRvIHBhc3MgdG8gdGhlIHByaXZhdGUgUzMgYnVja2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgcHJpdmF0ZUJ1Y2tldFByb3BzPzogUHJpdmF0ZUJ1Y2tldFByb3BzO1xufVxuXG5leHBvcnQgY2xhc3MgU3RhdGljSG9zdGluZyBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBGdWxsIGRvbWFpbiBuYW1lIHVzZWQgYXMgYmFzaXMgZm9yIGhvc3RpbmcuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZnVsbERvbWFpbjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTdGF0aWNIb3N0aW5nUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBJbml0aWFsIFNldHVwXG4gICAgICpcbiAgICAgKiBTZXQgc29tZSBkZWZhdWx0cywgYnVpbGQgZG9tYWluIGluZm9ybWF0aW9uLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgY29uc3Qge1xuICAgICAgYnVja2V0QXJuUGFyYW1OYW1lLFxuICAgICAgZGlzdHJpYnV0aW9uRG9tYWluUGFyYW1OYW1lLFxuICAgICAgZGlzdHJpYnV0aW9uSURQYXJhbU5hbWUsXG4gICAgICBzdGF0aWNEb21haW5Qcm9wcyxcbiAgICAgIHByaXZhdGVCdWNrZXRQcm9wcyxcbiAgICB9ID0ge1xuICAgICAgYnVja2V0QXJuUGFyYW1OYW1lOiBcIi9TVEFUSUNfV0VCU0lURS9CVUNLRVRfQVJOXCIsXG4gICAgICBkaXN0cmlidXRpb25Eb21haW5QYXJhbU5hbWU6IFwiL1NUQVRJQ19XRUJTSVRFL0RJU1RSSUJVVElPTl9ET01BSU5cIixcbiAgICAgIGRpc3RyaWJ1dGlvbklEUGFyYW1OYW1lOiBcIi9TVEFUSUNfV0VCU0lURS9ESVNUUklCVVRJT05fSURcIixcbiAgICAgIC4uLnByb3BzLFxuICAgIH07XG5cbiAgICBjb25zdCB7IHN1YkRvbWFpbiwgYmFzZURvbWFpbiwgaG9zdGVkWm9uZUF0dHJpYnV0ZXMgfSA9XG4gICAgICBzdGF0aWNEb21haW5Qcm9wcyA/PyB7fTtcbiAgICB0aGlzLmZ1bGxEb21haW4gPSBbc3ViRG9tYWluLCBiYXNlRG9tYWluXS5qb2luKFwiLlwiKTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIFBSSVZBVEUgQlVDS0VUXG4gICAgICpcbiAgICAgKiBBIGJ1Y2tldCB0byBzdG9yZSB0aGUgZmlsZXMgd2l0aGluLlxuICAgICAqIFNhdmUgQVJOIGZvciBsYXRlciBkZXBsb3lzLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgY29uc3QgYnVja2V0ID0gbmV3IFByaXZhdGVCdWNrZXQoXG4gICAgICB0aGlzLFxuICAgICAgXCJzdGF0aWMtaG9zdGluZy1idWNrZXRcIixcbiAgICAgIHByaXZhdGVCdWNrZXRQcm9wcyxcbiAgICApO1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogRE5TICYgV2lsZGNhcmQgQ2VydGlmaWNhdGVcbiAgICAgKlxuICAgICAqIElmIGEgem9uZSBJZCBhcyBwYXNzZWQgaW4sIGZpbmQgdGhlIGhvc3RlZCB6b25lIGFuZCBjcmVhdGUgYSB3aWxkY2FyZFxuICAgICAqIGNlcnRpZmljYXRlIGZvciB0aGUgZG9tYWluLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgbGV0IHpvbmU6IElIb3N0ZWRab25lIHwgdW5kZWZpbmVkO1xuICAgIGxldCBjZXJ0aWZpY2F0ZTogQ2VydGlmaWNhdGUgfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAoaG9zdGVkWm9uZUF0dHJpYnV0ZXMpIHtcbiAgICAgIHpvbmUgPSBIb3N0ZWRab25lLmZyb21Ib3N0ZWRab25lQXR0cmlidXRlcyhcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJ6b25lXCIsXG4gICAgICAgIGhvc3RlZFpvbmVBdHRyaWJ1dGVzLFxuICAgICAgKTtcbiAgICAgIGNlcnRpZmljYXRlID0gbmV3IENlcnRpZmljYXRlKHRoaXMsIFwid2lsZGNhcmQtY2VydGlmaWNhdGVcIiwge1xuICAgICAgICBkb21haW5OYW1lOiBgKi4ke3RoaXMuZnVsbERvbWFpbn1gLFxuICAgICAgICBzdWJqZWN0QWx0ZXJuYXRpdmVOYW1lczogW3RoaXMuZnVsbERvbWFpbl0sXG4gICAgICAgIHZhbGlkYXRpb246IENlcnRpZmljYXRlVmFsaWRhdGlvbi5mcm9tRG5zTXVsdGlab25lKHtcbiAgICAgICAgICBbYCouJHt0aGlzLmZ1bGxEb21haW59YF06IHpvbmUsXG4gICAgICAgICAgW3RoaXMuZnVsbERvbWFpbl06IHpvbmUsXG4gICAgICAgIH0pLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogTEFNQkRBQEVER0UgRlVOQ1RJT05cbiAgICAgKlxuICAgICAqIFRoaXMgaGFuZGxlcyByZXdyaXRpbmcgdGhlIHBhdGggZnJvbSBkb21haW4gbmFtZS5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGNvbnN0IGhhbmRsZXIgPSBuZXcgTm9kZWpzRnVuY3Rpb24odGhpcywgXCJ2aWV3ZXItcmVxdWVzdC1oYW5kbGVyXCIsIHtcbiAgICAgIG1lbW9yeVNpemU6IDEyOCxcbiAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzI0X1gsXG4gICAgICBsb2dHcm91cDogbmV3IExvZ0dyb3VwKHRoaXMsIFwidmlld2VyLXJlcXVlc3QtaGFuZGxlci1sb2ctZ3JvdXBcIiwge1xuICAgICAgICByZXRlbnRpb246IFJldGVudGlvbkRheXMuT05FX01PTlRILFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiAgQ0xPVURGUk9OVCBDT05GSUdcbiAgICAgKlxuICAgICAqICBTZXR1cCBhIENsb3VkRnJvbnQgRGlzdHJpYnV0aW9uIGZvciB0aGUgYnVja2V0LlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgY29uc3QgY2FjaGVQb2xpY3kgPSBuZXcgQ2FjaGVQb2xpY3kodGhpcywgXCJjbG91ZGZyb250LXBvbGljeVwiLCB7XG4gICAgICBjb21tZW50OiBcIlJlbGF0aXZlbHkgY29uc2VydmF0aXZlIFRUTCBwb2xpY3kuXCIsXG4gICAgICBtYXhUdGw6IER1cmF0aW9uLnNlY29uZHMoMzAwKSxcbiAgICAgIG1pblR0bDogRHVyYXRpb24uc2Vjb25kcygwKSxcbiAgICAgIGRlZmF1bHRUdGw6IER1cmF0aW9uLnNlY29uZHMoNjApLFxuICAgICAgaGVhZGVyQmVoYXZpb3I6IENhY2hlSGVhZGVyQmVoYXZpb3Iubm9uZSgpLFxuICAgICAgcXVlcnlTdHJpbmdCZWhhdmlvcjogQ2FjaGVRdWVyeVN0cmluZ0JlaGF2aW9yLm5vbmUoKSxcbiAgICAgIGNvb2tpZUJlaGF2aW9yOiBDYWNoZUNvb2tpZUJlaGF2aW9yLm5vbmUoKSxcbiAgICAgIGVuYWJsZUFjY2VwdEVuY29kaW5nR3ppcDogdHJ1ZSxcbiAgICAgIGVuYWJsZUFjY2VwdEVuY29kaW5nQnJvdGxpOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgb2FjID0gbmV3IFMzT3JpZ2luQWNjZXNzQ29udHJvbCh0aGlzLCBcIk15T0FDXCIsIHtcbiAgICAgIHNpZ25pbmc6IFNpZ25pbmcuU0lHVjRfTk9fT1ZFUlJJREUsXG4gICAgfSk7XG4gICAgY29uc3Qgb3JpZ2luID0gUzNCdWNrZXRPcmlnaW4ud2l0aE9yaWdpbkFjY2Vzc0NvbnRyb2woYnVja2V0LCB7XG4gICAgICBvcmlnaW5BY2Nlc3NDb250cm9sOiBvYWMsXG4gICAgICBvcmlnaW5BY2Nlc3NMZXZlbHM6IFtBY2Nlc3NMZXZlbC5SRUFEXSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGRpc3RyaWJ1dGlvbiA9IG5ldyBEaXN0cmlidXRpb24odGhpcywgXCJjbG91ZGZyb250LWRpc3RyaWJ1dGlvblwiLCB7XG4gICAgICBjb21tZW50OiBgRGlzdHJpYnV0aW9uIGZvciAke3RoaXMuZnVsbERvbWFpbn1gLFxuXG4gICAgICAvKipcbiAgICAgICAqIE9ubHkgaWYgZG9tYWluIHdhcyBzdXBwbGllZFxuICAgICAgICovXG4gICAgICAuLi4oY2VydGlmaWNhdGVcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBjZXJ0aWZpY2F0ZSxcbiAgICAgICAgICAgIGRvbWFpbk5hbWVzOiBbdGhpcy5mdWxsRG9tYWluLCBgKi4ke3RoaXMuZnVsbERvbWFpbn1gXSxcbiAgICAgICAgICB9XG4gICAgICAgIDoge30pLFxuXG4gICAgICBkZWZhdWx0QmVoYXZpb3I6IHtcbiAgICAgICAgb3JpZ2luLFxuICAgICAgICB2aWV3ZXJQcm90b2NvbFBvbGljeTogVmlld2VyUHJvdG9jb2xQb2xpY3kuUkVESVJFQ1RfVE9fSFRUUFMsXG4gICAgICAgIGNhY2hlUG9saWN5LFxuICAgICAgICBhbGxvd2VkTWV0aG9kczogQWxsb3dlZE1ldGhvZHMuQUxMT1dfR0VUX0hFQURfT1BUSU9OUyxcbiAgICAgICAgZWRnZUxhbWJkYXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvblZlcnNpb246IGhhbmRsZXIuY3VycmVudFZlcnNpb24sXG4gICAgICAgICAgICBldmVudFR5cGU6IExhbWJkYUVkZ2VFdmVudFR5cGUuVklFV0VSX1JFUVVFU1QsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICBkZWZhdWx0Um9vdE9iamVjdDogXCJpbmRleC5odG1sXCIsXG4gICAgfSk7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiAgRE5TIEVOVFJZXG4gICAgICpcbiAgICAgKiBMaW5rIGNsb3VkZnJvbnQgdG8gYm90aCB0aGUgcm9vdCBmdWxsZG9tYWluIGFuZCBhbGwgcG9zc2libGUgc3ViZG9tYWlucy5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGlmICh6b25lKSB7XG4gICAgICBuZXcgQVJlY29yZCh0aGlzLCBcInJvb3QtZG5zLWVudHJ5XCIsIHtcbiAgICAgICAgem9uZSxcbiAgICAgICAgcmVjb3JkTmFtZTogc3ViRG9tYWluLFxuICAgICAgICB0YXJnZXQ6IFJlY29yZFRhcmdldC5mcm9tQWxpYXMobmV3IENsb3VkRnJvbnRUYXJnZXQoZGlzdHJpYnV0aW9uKSksXG4gICAgICB9KTtcblxuICAgICAgbmV3IEFSZWNvcmQodGhpcywgXCJ3Yy1kbnMtZW50cnlcIiwge1xuICAgICAgICB6b25lLFxuICAgICAgICByZWNvcmROYW1lOiBgKi4ke3N1YkRvbWFpbn1gLFxuICAgICAgICB0YXJnZXQ6IFJlY29yZFRhcmdldC5mcm9tQWxpYXMobmV3IENsb3VkRnJvbnRUYXJnZXQoZGlzdHJpYnV0aW9uKSksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBFWFBPUlRTXG4gICAgICpcbiAgICAgKiBVc2VkIGJ5IGNvbnRlbnQgdXBsb2FkZXIgbGF0ZXIuXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICBuZXcgU3RyaW5nUGFyYW1ldGVyKHRoaXMsIFwiZGlzdC1kb21haW5cIiwge1xuICAgICAgZGVzY3JpcHRpb246IGBHRU5FUkFURUQgRE8gTk9UIENIQU5HRSAtIENsb3VkRnJvbnQgRGlzdHJpYnV0aW9uIERldGFpbHMgKCR7dGhpcy5mdWxsRG9tYWlufSkuYCxcbiAgICAgIHBhcmFtZXRlck5hbWU6IGRpc3RyaWJ1dGlvbkRvbWFpblBhcmFtTmFtZSxcbiAgICAgIHN0cmluZ1ZhbHVlOiBkaXN0cmlidXRpb24uZG9tYWluTmFtZSxcbiAgICB9KTtcblxuICAgIG5ldyBTdHJpbmdQYXJhbWV0ZXIodGhpcywgXCJkaXN0LWlkXCIsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgR0VORVJBVEVEIERPIE5PVCBDSEFOR0UgLSBDbG91ZEZyb250IERpc3RyaWJ1dGlvbiBEZXRhaWxzICgke3RoaXMuZnVsbERvbWFpbn0pLmAsXG4gICAgICBwYXJhbWV0ZXJOYW1lOiBkaXN0cmlidXRpb25JRFBhcmFtTmFtZSxcbiAgICAgIHN0cmluZ1ZhbHVlOiBkaXN0cmlidXRpb24uZGlzdHJpYnV0aW9uSWQsXG4gICAgfSk7XG5cbiAgICBuZXcgU3RyaW5nUGFyYW1ldGVyKHRoaXMsIFwiYnVja2V0LWFyblwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYEdFTkVSQVRFRCBETyBOT1QgQ0hBTkdFIC0gUzMgQnVja2V0IEFSTiBmb3IgU3RhdGljIFdlYnNpdGUgSG9zdGluZyAoJHt0aGlzLmZ1bGxEb21haW59KS5gLFxuICAgICAgcGFyYW1ldGVyTmFtZTogYnVja2V0QXJuUGFyYW1OYW1lLFxuICAgICAgc3RyaW5nVmFsdWU6IGJ1Y2tldC5idWNrZXRBcm4sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLWhvc3RpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhdGljLWhvc3Rpbmcvc3RhdGljLWhvc3RpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQW1EO0FBQ25ELCtFQUc0QztBQUM1QywrREFZb0M7QUFDcEMsK0VBQW9FO0FBQ3BFLHVEQUFpRDtBQUNqRCxxRUFBK0Q7QUFDL0QsbURBQStEO0FBQy9ELHlEQU1pQztBQUNqQyx5RUFBbUU7QUFDbkUsaURBQXNEO0FBQ3RELDJDQUF1QztBQUN2Qyx5REFBeUU7QUFnRHpFLE1BQWEsYUFBYyxTQUFRLHNCQUFTO0lBTTFDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBNEIsRUFBRTtRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCOzs7Ozs7b0ZBTTRFO1FBRTVFLE1BQU0sRUFDSixrQkFBa0IsRUFDbEIsMkJBQTJCLEVBQzNCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsa0JBQWtCLEdBQ25CLEdBQUc7WUFDRixrQkFBa0IsRUFBRSw0QkFBNEI7WUFDaEQsMkJBQTJCLEVBQUUscUNBQXFDO1lBQ2xFLHVCQUF1QixFQUFFLGlDQUFpQztZQUMxRCxHQUFHLEtBQUs7U0FDVCxDQUFDO1FBRUYsTUFBTSxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLGlCQUFpQixJQUFJLEVBQUUsQ0FBQztRQUVyRTs7Ozs7OztvRkFPNEU7UUFFNUUsTUFBTSxNQUFNLEdBQUcsSUFBSSw4QkFBYSxDQUM5QixJQUFJLEVBQ0osdUJBQXVCLEVBQ3ZCLGtCQUFrQixDQUNuQixDQUFDO1FBRUY7Ozs7Ozs7b0ZBTzRFO1FBRTVFLElBQUksSUFBNkIsQ0FBQztRQUNsQyxJQUFJLFdBQW9DLENBQUM7UUFFekMsSUFBSSxvQkFBb0IsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUN2QyxJQUFJLEdBQUcsd0JBQVUsQ0FBQyx3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WUFDdEMsV0FBVyxFQUFFLGdEQUFnRCxLQUFLLENBQUMsV0FBVyxJQUFJLEVBQUUsSUFBSTtZQUN4RixhQUFhLEVBQUUsa0JBQWtCO1lBQ2pDLFdBQVcsRUFBRSxNQUFNLENBQUMsU0FBUztTQUM5QixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUF6TUQsc0NBeU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHVyYXRpb24sIFN0YWNrUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIENlcnRpZmljYXRlLFxuICBDZXJ0aWZpY2F0ZVZhbGlkYXRpb24sXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2VydGlmaWNhdGVtYW5hZ2VyXCI7XG5pbXBvcnQge1xuICBBY2Nlc3NMZXZlbCxcbiAgQWxsb3dlZE1ldGhvZHMsXG4gIENhY2hlQ29va2llQmVoYXZpb3IsXG4gIENhY2hlSGVhZGVyQmVoYXZpb3IsXG4gIENhY2hlUG9saWN5LFxuICBDYWNoZVF1ZXJ5U3RyaW5nQmVoYXZpb3IsXG4gIERpc3RyaWJ1dGlvbixcbiAgTGFtYmRhRWRnZUV2ZW50VHlwZSxcbiAgUzNPcmlnaW5BY2Nlc3NDb250cm9sLFxuICBTaWduaW5nLFxuICBWaWV3ZXJQcm90b2NvbFBvbGljeSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZGZyb250XCI7XG5pbXBvcnQgeyBTM0J1Y2tldE9yaWdpbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udC1vcmlnaW5zXCI7XG5pbXBvcnQgeyBSdW50aW1lIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IE5vZGVqc0Z1bmN0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzXCI7XG5pbXBvcnQgeyBMb2dHcm91cCwgUmV0ZW50aW9uRGF5cyB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbG9nc1wiO1xuaW1wb3J0IHtcbiAgQVJlY29yZCxcbiAgSG9zdGVkWm9uZSxcbiAgSG9zdGVkWm9uZUF0dHJpYnV0ZXMsXG4gIElIb3N0ZWRab25lLFxuICBSZWNvcmRUYXJnZXQsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHsgQ2xvdWRGcm9udFRhcmdldCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1My10YXJnZXRzXCI7XG5pbXBvcnQgeyBTdHJpbmdQYXJhbWV0ZXIgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNzbVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFByaXZhdGVCdWNrZXQsIFByaXZhdGVCdWNrZXRQcm9wcyB9IGZyb20gXCIuLi9zMy9wcml2YXRlLWJ1Y2tldFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRpY0RvbWFpblByb3BzIHtcbiAgLyoqXG4gICAqICBUaGUgYmFzZSBkb21haW4gKGllOiBjb2RlZHJpZnRlcnMuY29tKVxuICAgKi9cbiAgcmVhZG9ubHkgYmFzZURvbWFpbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBIb3N0ZWQgem9uZSBJRCBmb3IgdGhlIGJhc2UgZG9tYWluLlxuICAgKi9cbiAgcmVhZG9ubHkgaG9zdGVkWm9uZUF0dHJpYnV0ZXM6IEhvc3RlZFpvbmVBdHRyaWJ1dGVzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRpY0hvc3RpbmdQcm9wcyBleHRlbmRzIFN0YWNrUHJvcHMge1xuICAvKipcbiAgICogU2hvcnQgZGVzY3JpcHRpb24gdXNlZCBpbiB2YXJpb3VzIHBsYWNlcyBmb3IgdHJhY2VhYmlsaXR5LlxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZhbHVlcyB1c2VkIHRvIGNvbm5lY3QgYSBkb21haW4gbmFtZSB0byB0aGUgY2xvdWRmcm9udCBkaXN0cmlidXRpb24uIElmIG5vdFxuICAgKiBzdXBwbGllZCwgY2xvdWRmcm9udCBkb2Vzbid0IHVzZSBhIGN1c3RvbSBkb21haW4uXG4gICAqL1xuICByZWFkb25seSBzdGF0aWNEb21haW5Qcm9wcz86IFN0YXRpY0RvbWFpblByb3BzO1xuXG4gIC8qKlxuICAgKiBQYXJhbWV0ZXIgbmFtZSB0byB1c2Ugd2hlbiBzdG9yaW5nIHRoZSBzdGF0aWMgaG9zdGluZyBidWNrZXQncyBBUk4uXG4gICAqIFRoaXMgaXMgbmVlZGVkIGluIG90aGVyIGxhdGVyIHN0ZXBzIHdoZW4gZGVwbG95aW5nIGhvc3RlZCBjb250ZW50IHRvIFMzLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVja2V0QXJuUGFyYW1OYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQYXJhbWV0ZXIgbmFtZSB0byB1c2Ugd2hlbiBzdG9yaW5nIHRoZSBDbG91ZEZyb250IERpc3RyaWJ1dGlvbiBEb21haW4gTmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IGRpc3RyaWJ1dGlvbkRvbWFpblBhcmFtTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogUGFyYW1ldGVyIG5hbWUgdG8gdXNlIHdoZW4gc3RvcmluZyB0aGUgQ2xvdWRGcm9udCBEaXN0cmlidXRpb24gSUQuXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb25JRFBhcmFtTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogUHJvcHMgdG8gcGFzcyB0byB0aGUgcHJpdmF0ZSBTMyBidWNrZXQuXG4gICAqL1xuICByZWFkb25seSBwcml2YXRlQnVja2V0UHJvcHM/OiBQcml2YXRlQnVja2V0UHJvcHM7XG59XG5cbmV4cG9ydCBjbGFzcyBTdGF0aWNIb3N0aW5nIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIEZ1bGwgZG9tYWluIG5hbWUgdXNlZCBhcyBiYXNpcyBmb3IgaG9zdGluZy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBmdWxsRG9tYWluOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFN0YXRpY0hvc3RpbmdQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIEluaXRpYWwgU2V0dXBcbiAgICAgKlxuICAgICAqIFNldCBzb21lIGRlZmF1bHRzLCBidWlsZCBkb21haW4gaW5mb3JtYXRpb24uXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICBjb25zdCB7XG4gICAgICBidWNrZXRBcm5QYXJhbU5hbWUsXG4gICAgICBkaXN0cmlidXRpb25Eb21haW5QYXJhbU5hbWUsXG4gICAgICBkaXN0cmlidXRpb25JRFBhcmFtTmFtZSxcbiAgICAgIHN0YXRpY0RvbWFpblByb3BzLFxuICAgICAgcHJpdmF0ZUJ1Y2tldFByb3BzLFxuICAgIH0gPSB7XG4gICAgICBidWNrZXRBcm5QYXJhbU5hbWU6IFwiL1NUQVRJQ19XRUJTSVRFL0JVQ0tFVF9BUk5cIixcbiAgICAgIGRpc3RyaWJ1dGlvbkRvbWFpblBhcmFtTmFtZTogXCIvU1RBVElDX1dFQlNJVEUvRElTVFJJQlVUSU9OX0RPTUFJTlwiLFxuICAgICAgZGlzdHJpYnV0aW9uSURQYXJhbU5hbWU6IFwiL1NUQVRJQ19XRUJTSVRFL0RJU1RSSUJVVElPTl9JRFwiLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfTtcblxuICAgIGNvbnN0IHsgYmFzZURvbWFpbiwgaG9zdGVkWm9uZUF0dHJpYnV0ZXMgfSA9IHN0YXRpY0RvbWFpblByb3BzID8/IHt9O1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogUFJJVkFURSBCVUNLRVRcbiAgICAgKlxuICAgICAqIEEgYnVja2V0IHRvIHN0b3JlIHRoZSBmaWxlcyB3aXRoaW4uXG4gICAgICogU2F2ZSBBUk4gZm9yIGxhdGVyIGRlcGxveXMuXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICBjb25zdCBidWNrZXQgPSBuZXcgUHJpdmF0ZUJ1Y2tldChcbiAgICAgIHRoaXMsXG4gICAgICBcInN0YXRpYy1ob3N0aW5nLWJ1Y2tldFwiLFxuICAgICAgcHJpdmF0ZUJ1Y2tldFByb3BzLFxuICAgICk7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBETlMgJiBXaWxkY2FyZCBDZXJ0aWZpY2F0ZVxuICAgICAqXG4gICAgICogSWYgYSB6b25lIElkIGFzIHBhc3NlZCBpbiwgZmluZCB0aGUgaG9zdGVkIHpvbmUgYW5kIGNyZWF0ZSBhIHdpbGRjYXJkXG4gICAgICogY2VydGlmaWNhdGUgZm9yIHRoZSBkb21haW4uXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICBsZXQgem9uZTogSUhvc3RlZFpvbmUgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGNlcnRpZmljYXRlOiBDZXJ0aWZpY2F0ZSB8IHVuZGVmaW5lZDtcblxuICAgIGlmIChob3N0ZWRab25lQXR0cmlidXRlcyAmJiBiYXNlRG9tYWluKSB7XG4gICAgICB6b25lID0gSG9zdGVkWm9uZS5mcm9tSG9zdGVkWm9uZUF0dHJpYnV0ZXMoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiem9uZVwiLFxuICAgICAgICBob3N0ZWRab25lQXR0cmlidXRlcyxcbiAgICAgICk7XG4gICAgICBjZXJ0aWZpY2F0ZSA9IG5ldyBDZXJ0aWZpY2F0ZSh0aGlzLCBcIndpbGRjYXJkLWNlcnRpZmljYXRlXCIsIHtcbiAgICAgICAgZG9tYWluTmFtZTogYCouJHtiYXNlRG9tYWlufWAsXG4gICAgICAgIHN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzOiBbYmFzZURvbWFpbl0sXG4gICAgICAgIHZhbGlkYXRpb246IENlcnRpZmljYXRlVmFsaWRhdGlvbi5mcm9tRG5zTXVsdGlab25lKHtcbiAgICAgICAgICBbYCouJHtiYXNlRG9tYWlufWBdOiB6b25lLFxuICAgICAgICAgIFtiYXNlRG9tYWluXTogem9uZSxcbiAgICAgICAgfSksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBMQU1CREFARURHRSBGVU5DVElPTlxuICAgICAqXG4gICAgICogVGhpcyBoYW5kbGVzIHJld3JpdGluZyB0aGUgcGF0aCBmcm9tIGRvbWFpbiBuYW1lLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgY29uc3QgaGFuZGxlciA9IG5ldyBOb2RlanNGdW5jdGlvbih0aGlzLCBcInZpZXdlci1yZXF1ZXN0LWhhbmRsZXJcIiwge1xuICAgICAgbWVtb3J5U2l6ZTogMTI4LFxuICAgICAgcnVudGltZTogUnVudGltZS5OT0RFSlNfMjRfWCxcbiAgICAgIGxvZ0dyb3VwOiBuZXcgTG9nR3JvdXAodGhpcywgXCJ2aWV3ZXItcmVxdWVzdC1oYW5kbGVyLWxvZy1ncm91cFwiLCB7XG4gICAgICAgIHJldGVudGlvbjogUmV0ZW50aW9uRGF5cy5PTkVfTU9OVEgsXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqICBDTE9VREZST05UIENPTkZJR1xuICAgICAqXG4gICAgICogIFNldHVwIGEgQ2xvdWRGcm9udCBEaXN0cmlidXRpb24gZm9yIHRoZSBidWNrZXQuXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICBjb25zdCBjYWNoZVBvbGljeSA9IG5ldyBDYWNoZVBvbGljeSh0aGlzLCBcImNsb3VkZnJvbnQtcG9saWN5XCIsIHtcbiAgICAgIGNvbW1lbnQ6IFwiUmVsYXRpdmVseSBjb25zZXJ2YXRpdmUgVFRMIHBvbGljeS5cIixcbiAgICAgIG1heFR0bDogRHVyYXRpb24uc2Vjb25kcygzMDApLFxuICAgICAgbWluVHRsOiBEdXJhdGlvbi5zZWNvbmRzKDApLFxuICAgICAgZGVmYXVsdFR0bDogRHVyYXRpb24uc2Vjb25kcyg2MCksXG4gICAgICBoZWFkZXJCZWhhdmlvcjogQ2FjaGVIZWFkZXJCZWhhdmlvci5ub25lKCksXG4gICAgICBxdWVyeVN0cmluZ0JlaGF2aW9yOiBDYWNoZVF1ZXJ5U3RyaW5nQmVoYXZpb3Iubm9uZSgpLFxuICAgICAgY29va2llQmVoYXZpb3I6IENhY2hlQ29va2llQmVoYXZpb3Iubm9uZSgpLFxuICAgICAgZW5hYmxlQWNjZXB0RW5jb2RpbmdHemlwOiB0cnVlLFxuICAgICAgZW5hYmxlQWNjZXB0RW5jb2RpbmdCcm90bGk6IHRydWUsXG4gICAgfSk7XG5cbiAgICBjb25zdCBvYWMgPSBuZXcgUzNPcmlnaW5BY2Nlc3NDb250cm9sKHRoaXMsIFwiTXlPQUNcIiwge1xuICAgICAgc2lnbmluZzogU2lnbmluZy5TSUdWNF9OT19PVkVSUklERSxcbiAgICB9KTtcbiAgICBjb25zdCBvcmlnaW4gPSBTM0J1Y2tldE9yaWdpbi53aXRoT3JpZ2luQWNjZXNzQ29udHJvbChidWNrZXQsIHtcbiAgICAgIG9yaWdpbkFjY2Vzc0NvbnRyb2w6IG9hYyxcbiAgICAgIG9yaWdpbkFjY2Vzc0xldmVsczogW0FjY2Vzc0xldmVsLlJFQURdLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGlzdHJpYnV0aW9uID0gbmV3IERpc3RyaWJ1dGlvbih0aGlzLCBcImNsb3VkZnJvbnQtZGlzdHJpYnV0aW9uXCIsIHtcbiAgICAgIGNvbW1lbnQ6IGBEaXN0cmlidXRpb24gZm9yICR7cHJvcHMuZGVzY3JpcHRpb24gPz8gaWR9YCxcblxuICAgICAgLyoqXG4gICAgICAgKiBPbmx5IGlmIGRvbWFpbiB3YXMgc3VwcGxpZWRcbiAgICAgICAqL1xuICAgICAgLi4uKGNlcnRpZmljYXRlICYmIGJhc2VEb21haW5cbiAgICAgICAgPyB7XG4gICAgICAgICAgICBjZXJ0aWZpY2F0ZSxcbiAgICAgICAgICAgIGRvbWFpbk5hbWVzOiBbYmFzZURvbWFpbiwgYCouJHtiYXNlRG9tYWlufWBdLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7fSksXG5cbiAgICAgIGRlZmF1bHRCZWhhdmlvcjoge1xuICAgICAgICBvcmlnaW4sXG4gICAgICAgIHZpZXdlclByb3RvY29sUG9saWN5OiBWaWV3ZXJQcm90b2NvbFBvbGljeS5SRURJUkVDVF9UT19IVFRQUyxcbiAgICAgICAgY2FjaGVQb2xpY3ksXG4gICAgICAgIGFsbG93ZWRNZXRob2RzOiBBbGxvd2VkTWV0aG9kcy5BTExPV19HRVRfSEVBRF9PUFRJT05TLFxuICAgICAgICBlZGdlTGFtYmRhczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uVmVyc2lvbjogaGFuZGxlci5jdXJyZW50VmVyc2lvbixcbiAgICAgICAgICAgIGV2ZW50VHlwZTogTGFtYmRhRWRnZUV2ZW50VHlwZS5WSUVXRVJfUkVRVUVTVCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIGRlZmF1bHRSb290T2JqZWN0OiBcImluZGV4Lmh0bWxcIixcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFdlIGZpbmFsbHkgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gc2V0IHRoZSBmdWxsIGRvbWFpbi5cbiAgICAgKi9cbiAgICB0aGlzLmZ1bGxEb21haW4gPVxuICAgICAgY2VydGlmaWNhdGUgJiYgYmFzZURvbWFpbiA/IGJhc2VEb21haW4gOiBkaXN0cmlidXRpb24uZG9tYWluTmFtZTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqICBETlMgRU5UUllcbiAgICAgKlxuICAgICAqIExpbmsgY2xvdWRmcm9udCB0byBib3RoIHRoZSByb290IGZ1bGxkb21haW4gYW5kIGFsbCBwb3NzaWJsZSBzdWJkb21haW5zLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgaWYgKHpvbmUpIHtcbiAgICAgIG5ldyBBUmVjb3JkKHRoaXMsIFwicm9vdC1kbnMtZW50cnlcIiwge1xuICAgICAgICB6b25lLFxuICAgICAgICByZWNvcmROYW1lOiBiYXNlRG9tYWluID8gYmFzZURvbWFpbiA6IFwiXCIsXG4gICAgICAgIHRhcmdldDogUmVjb3JkVGFyZ2V0LmZyb21BbGlhcyhuZXcgQ2xvdWRGcm9udFRhcmdldChkaXN0cmlidXRpb24pKSxcbiAgICAgIH0pO1xuXG4gICAgICBuZXcgQVJlY29yZCh0aGlzLCBcIndjLWRucy1lbnRyeVwiLCB7XG4gICAgICAgIHpvbmUsXG4gICAgICAgIHJlY29yZE5hbWU6IGJhc2VEb21haW4gPyBgKi4ke2Jhc2VEb21haW59YCA6IFwiKlwiLFxuICAgICAgICB0YXJnZXQ6IFJlY29yZFRhcmdldC5mcm9tQWxpYXMobmV3IENsb3VkRnJvbnRUYXJnZXQoZGlzdHJpYnV0aW9uKSksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBFWFBPUlRTXG4gICAgICpcbiAgICAgKiBVc2VkIGJ5IGNvbnRlbnQgdXBsb2FkZXIgbGF0ZXIuXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICBuZXcgU3RyaW5nUGFyYW1ldGVyKHRoaXMsIFwiZGlzdC1kb21haW5cIiwge1xuICAgICAgZGVzY3JpcHRpb246IGBHRU5FUkFURUQgRE8gTk9UIENIQU5HRSAtIENsb3VkRnJvbnQgRGlzdHJpYnV0aW9uIERldGFpbHMgKCR7cHJvcHMuZGVzY3JpcHRpb24gPz8gaWR9KS5gLFxuICAgICAgcGFyYW1ldGVyTmFtZTogZGlzdHJpYnV0aW9uRG9tYWluUGFyYW1OYW1lLFxuICAgICAgc3RyaW5nVmFsdWU6IGRpc3RyaWJ1dGlvbi5kb21haW5OYW1lLFxuICAgIH0pO1xuXG4gICAgbmV3IFN0cmluZ1BhcmFtZXRlcih0aGlzLCBcImRpc3QtaWRcIiwge1xuICAgICAgZGVzY3JpcHRpb246IGBHRU5FUkFURUQgRE8gTk9UIENIQU5HRSAtIENsb3VkRnJvbnQgRGlzdHJpYnV0aW9uIERldGFpbHMgKCR7cHJvcHMuZGVzY3JpcHRpb24gPz8gaWR9KS5gLFxuICAgICAgcGFyYW1ldGVyTmFtZTogZGlzdHJpYnV0aW9uSURQYXJhbU5hbWUsXG4gICAgICBzdHJpbmdWYWx1ZTogZGlzdHJpYnV0aW9uLmRpc3RyaWJ1dGlvbklkLFxuICAgIH0pO1xuXG4gICAgbmV3IFN0cmluZ1BhcmFtZXRlcih0aGlzLCBcImJ1Y2tldC1hcm5cIiwge1xuICAgICAgZGVzY3JpcHRpb246IGBHRU5FUkFURUQgRE8gTk9UIENIQU5HRSAtIFMzIEJ1Y2tldCBBUk4gZm9yICgke3Byb3BzLmRlc2NyaXB0aW9uID8/IGlkfSkuYCxcbiAgICAgIHBhcmFtZXRlck5hbWU6IGJ1Y2tldEFyblBhcmFtTmFtZSxcbiAgICAgIHN0cmluZ1ZhbHVlOiBidWNrZXQuYnVja2V0QXJuLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -1,19 +1,13 @@
1
1
  {
2
2
  "name": "@codedrifters/constructs",
3
- "scripts": {
4
- "build": "npx projen build",
5
- "compile": "npx projen compile",
6
- "default": "npx projen default",
7
- "eslint": "npx projen eslint",
8
- "package": "npx projen package",
9
- "post-compile": "npx projen post-compile",
10
- "post-upgrade": "npx projen post-upgrade",
11
- "pre-compile": "npx projen pre-compile",
12
- "test": "npx projen test",
13
- "test:watch": "npx projen test:watch",
14
- "upgrade": "npx projen upgrade",
15
- "watch": "npx projen watch",
16
- "projen": "npx projen"
3
+ "description": "Constructs frequently used in CodeDrifter projects.",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "https://github.com/codedrifters/packages"
7
+ },
8
+ "author": {
9
+ "name": "CodeDrifters",
10
+ "organization": true
17
11
  },
18
12
  "devDependencies": {
19
13
  "@swc/core": "^1.15.2",
@@ -22,8 +16,9 @@
22
16
  "@types/node": "^24.10.1",
23
17
  "@typescript-eslint/eslint-plugin": "^8",
24
18
  "@typescript-eslint/parser": "^8",
25
- "aws-cdk-lib": "2.232.1",
26
- "constructs": "10.4.3",
19
+ "aws-cdk-lib": "2.233.0",
20
+ "commit-and-tag-version": "^12",
21
+ "constructs": "10.4.4",
27
22
  "eslint": "^9",
28
23
  "eslint-config-prettier": "^10.1.8",
29
24
  "eslint-import-resolver-typescript": "^4.4.4",
@@ -35,8 +30,8 @@
35
30
  "typescript": "^5.9.3"
36
31
  },
37
32
  "peerDependencies": {
38
- "aws-cdk-lib": "2.232.1",
39
- "constructs": "10.4.3"
33
+ "aws-cdk-lib": "2.233.0",
34
+ "constructs": "10.4.4"
40
35
  },
41
36
  "dependencies": {
42
37
  "@aws-sdk/client-dynamodb": "^3.936.0",
@@ -47,7 +42,25 @@
47
42
  },
48
43
  "main": "lib/index.js",
49
44
  "license": "UNLICENSED",
50
- "version": "0.0.0",
45
+ "version": "0.0.2",
51
46
  "types": "lib/index.d.ts",
52
- "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"."
53
- }
47
+ "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".",
48
+ "scripts": {
49
+ "build": "npx projen build",
50
+ "bump": "npx projen bump",
51
+ "compile": "npx projen compile",
52
+ "default": "npx projen default",
53
+ "eslint": "npx projen eslint",
54
+ "package": "npx projen package",
55
+ "post-compile": "npx projen post-compile",
56
+ "post-upgrade": "npx projen post-upgrade",
57
+ "pre-compile": "npx projen pre-compile",
58
+ "release": "npx projen release",
59
+ "test": "npx projen test",
60
+ "test:watch": "npx projen test:watch",
61
+ "unbump": "npx projen unbump",
62
+ "upgrade": "npx projen upgrade",
63
+ "watch": "npx projen watch",
64
+ "projen": "npx projen"
65
+ }
66
+ }