@liflig/cdk 2.24.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/alarms/database-alarms.js +29 -30
- package/lib/alarms/index.d.ts +6 -3
- package/lib/alarms/index.js +4 -10
- package/lib/alarms/service-alarms.js +38 -38
- package/lib/alarms/ses-alarms.js +16 -20
- package/lib/alarms/slack-alarm.js +18 -17
- package/lib/bastion-host.js +12 -15
- package/lib/bin/cdk-create-snapshots.js +3 -5
- package/lib/bin/fetch-pipeline-variables.js +4 -6
- package/lib/build-artifacts/github-actions-role.js +9 -14
- package/lib/build-artifacts/index.js +25 -26
- package/lib/cdk-pipelines/cloud-assembly-lookup-handler.js +13 -17
- package/lib/cdk-pipelines/index.d.ts +4 -2
- package/lib/cdk-pipelines/index.js +4 -10
- package/lib/cdk-pipelines/liflig-cdk-pipeline.js +29 -24
- package/lib/cdk-pipelines/slack-notification.js +12 -14
- package/lib/cdk-pipelines/variables.js +12 -18
- package/lib/cloudtrail-slack-integration/cloudtrail-slack-integration.js +16 -17
- package/lib/cloudtrail-slack-integration/index.d.ts +2 -1
- package/lib/cloudtrail-slack-integration/index.js +2 -6
- package/lib/configure-parameters/configure-parameters.js +12 -11
- package/lib/configure-parameters/index.d.ts +2 -1
- package/lib/configure-parameters/index.js +2 -6
- package/lib/cross-region-ssm-parameter.js +4 -8
- package/lib/ecs/cluster.js +11 -13
- package/lib/ecs/fargate-service.js +25 -25
- package/lib/ecs/index.d.ts +6 -3
- package/lib/ecs/index.js +4 -10
- package/lib/ecs/listener-rule.js +13 -10
- package/lib/feature-flags.js +5 -10
- package/lib/hosted-zone-with-param.js +15 -16
- package/lib/index.js +22 -56
- package/lib/kinesis/index.d.ts +2 -1
- package/lib/kinesis/index.js +2 -6
- package/lib/kinesis/kinesis-to-datadog-stream.js +11 -15
- package/lib/load-balancer/index.d.ts +2 -1
- package/lib/load-balancer/index.js +2 -6
- package/lib/load-balancer/load-balancer.js +12 -13
- package/lib/platform/index.d.ts +2 -1
- package/lib/platform/index.js +2 -7
- package/lib/platform/platform.js +9 -10
- package/lib/rds/database.js +15 -15
- package/lib/rds/index.d.ts +2 -1
- package/lib/rds/index.js +2 -6
- package/lib/ses/configurationsetdeliveryoptions/index.js +5 -9
- package/lib/ses/configurationsetsnsdestination/handler.js +8 -12
- package/lib/ses/configurationsetsnsdestination/index.js +22 -19
- package/lib/ses/index.d.ts +2 -1
- package/lib/ses/index.js +5 -12
- package/lib/ses/sesdomain/handler.js +11 -16
- package/lib/ses/sesdomain/index.js +24 -19
- package/lib/ses/sesverifyemail/handler.js +6 -10
- package/lib/ses/sesverifyemail/index.js +19 -14
- package/lib/snapshots.js +13 -19
- package/lib/ssm-parameter-backed-resource.js +15 -15
- package/lib/ssm-parameter-reader.js +5 -10
- package/lib/tags.js +4 -7
- package/lib/utils.js +3 -6
- package/lib/webapp/index.d.ts +2 -1
- package/lib/webapp/index.js +4 -10
- package/lib/webapp/monitor.js +32 -33
- package/lib/webapp/security-headers.js +7 -11
- package/lib/webapp/webapp.js +20 -22
- package/lib/webapp-deploy-via-role.js +7 -11
- package/package.json +20 -20
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const s3 = require("aws-cdk-lib/aws-s3");
|
|
8
|
-
const cdk = require("aws-cdk-lib");
|
|
9
|
-
const github_actions_role_1 = require("./github-actions-role");
|
|
1
|
+
import * as constructs from "constructs";
|
|
2
|
+
import * as ecr from "aws-cdk-lib/aws-ecr";
|
|
3
|
+
import * as iam from "aws-cdk-lib/aws-iam";
|
|
4
|
+
import * as s3 from "aws-cdk-lib/aws-s3";
|
|
5
|
+
import * as cdk from "aws-cdk-lib";
|
|
6
|
+
import { GithubActionsRole, } from "./github-actions-role";
|
|
10
7
|
/**
|
|
11
8
|
* Utility functions for generating IAM statements.
|
|
12
9
|
*/
|
|
@@ -15,7 +12,7 @@ const policyStatements = {
|
|
|
15
12
|
effect: iam.Effect.ALLOW,
|
|
16
13
|
actions: ["ssm:PutParameter"],
|
|
17
14
|
resources: [
|
|
18
|
-
`arn:aws:ssm:${cdk.Stack.of(scope).region}:${cdk.Stack.of(scope).account}:parameter/liflig-cdk/*/pipeline-variables/${prefix
|
|
15
|
+
`arn:aws:ssm:${cdk.Stack.of(scope).region}:${cdk.Stack.of(scope).account}:parameter/liflig-cdk/*/pipeline-variables/${prefix ?? "*"}`,
|
|
19
16
|
],
|
|
20
17
|
}),
|
|
21
18
|
denyProdPipelines: (scope, bucket) => new iam.PolicyStatement({
|
|
@@ -37,17 +34,15 @@ const policyStatements = {
|
|
|
37
34
|
/**
|
|
38
35
|
* Utility function for validating the construct properties.
|
|
39
36
|
*/
|
|
40
|
-
const validateProps = (props) => {
|
|
41
|
-
var _a;
|
|
37
|
+
export const validateProps = (props) => {
|
|
42
38
|
let valid = true;
|
|
43
|
-
if (
|
|
39
|
+
if (props.githubActions?.defaultBranch &&
|
|
44
40
|
!props.githubActions.defaultBranch.match(/^[a-zA-Z0-9-]+$/)) {
|
|
45
41
|
console.error(`Default branch ${props.githubActions.defaultBranch} contains invalid characters`);
|
|
46
42
|
valid = false;
|
|
47
43
|
}
|
|
48
44
|
return valid;
|
|
49
45
|
};
|
|
50
|
-
exports.validateProps = validateProps;
|
|
51
46
|
/**
|
|
52
47
|
* Create various artifacts used as part of Continuous Integration (CI).
|
|
53
48
|
*
|
|
@@ -61,11 +56,15 @@ exports.validateProps = validateProps;
|
|
|
61
56
|
*
|
|
62
57
|
* @experimental
|
|
63
58
|
*/
|
|
64
|
-
class BuildArtifacts extends constructs.Construct {
|
|
59
|
+
export class BuildArtifacts extends constructs.Construct {
|
|
60
|
+
bucketName;
|
|
61
|
+
ecrRepositoryArn;
|
|
62
|
+
ecrRepositoryName;
|
|
63
|
+
role;
|
|
64
|
+
limitedRole;
|
|
65
65
|
constructor(scope, id, props) {
|
|
66
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
67
66
|
super(scope, id);
|
|
68
|
-
if (!
|
|
67
|
+
if (!validateProps(props)) {
|
|
69
68
|
throw new Error("Invalid props were supplied");
|
|
70
69
|
}
|
|
71
70
|
this.bucketName = props.bucketName;
|
|
@@ -105,7 +104,7 @@ class BuildArtifacts extends constructs.Construct {
|
|
|
105
104
|
ecrRepo.grantPull(new iam.AccountPrincipal(targetAccountId));
|
|
106
105
|
}
|
|
107
106
|
if (props.githubActions) {
|
|
108
|
-
const trustedOwners =
|
|
107
|
+
const trustedOwners = props.githubActions.trustedOwners ?? [
|
|
109
108
|
"capralifecycle",
|
|
110
109
|
];
|
|
111
110
|
// NOTE: There's an L2 construct that predates the official CloudFormation resource,
|
|
@@ -122,13 +121,13 @@ class BuildArtifacts extends constructs.Construct {
|
|
|
122
121
|
thumbprintList: ["1c58a3a8518e8759bf075b76b750d4f2df264fcd"],
|
|
123
122
|
});
|
|
124
123
|
const oidcProvider = iam.OpenIdConnectProvider.fromOpenIdConnectProviderArn(this, "Provider", cfnOidcProvider.ref);
|
|
125
|
-
const createLimitedRole =
|
|
126
|
-
const role = new
|
|
124
|
+
const createLimitedRole = props.githubActions.limitedRoleConfiguration?.enabled ?? true;
|
|
125
|
+
const role = new GithubActionsRole(this, "GithubActionsRole", {
|
|
127
126
|
oidcProvider,
|
|
128
127
|
trustedOwners,
|
|
129
|
-
roleName:
|
|
128
|
+
roleName: props.githubActions.roleName ?? "github-actions-role",
|
|
130
129
|
trustedBranch: createLimitedRole
|
|
131
|
-
? (
|
|
130
|
+
? (props.githubActions.defaultBranch ?? "master")
|
|
132
131
|
: // NOTE: If the limited role is disabled, only one role will be created
|
|
133
132
|
// and that role then needs to be assumable from all branches.
|
|
134
133
|
"*",
|
|
@@ -139,10 +138,11 @@ class BuildArtifacts extends constructs.Construct {
|
|
|
139
138
|
bucket.grantPut(this.role);
|
|
140
139
|
ecrRepo.grantPullPush(this.role);
|
|
141
140
|
if (createLimitedRole) {
|
|
142
|
-
const limitedRole = new
|
|
141
|
+
const limitedRole = new GithubActionsRole(this, "GithubActionsLimitedRole", {
|
|
143
142
|
oidcProvider,
|
|
144
143
|
trustedOwners,
|
|
145
|
-
roleName:
|
|
144
|
+
roleName: props.githubActions.limitedRoleConfiguration?.roleName ??
|
|
145
|
+
"github-actions-limited-role",
|
|
146
146
|
// NOTE: The limited role can be assumed from all branches.
|
|
147
147
|
trustedBranch: "*",
|
|
148
148
|
repositories: props.githubActions.repositories,
|
|
@@ -181,5 +181,4 @@ class BuildArtifacts extends constructs.Construct {
|
|
|
181
181
|
}
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
|
-
exports.BuildArtifacts = BuildArtifacts;
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnVpbGQtYXJ0aWZhY3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUF3QztBQUN4QywyQ0FBMEM7QUFDMUMsMkNBQTBDO0FBQzFDLHlDQUF3QztBQUN4QyxtQ0FBa0M7QUFDbEMsK0RBRzhCO0FBbUY5Qjs7R0FFRztBQUNILE1BQU0sZ0JBQWdCLEdBQUc7SUFDdkIsc0JBQXNCLEVBQUUsQ0FBQyxLQUEyQixFQUFFLE1BQWUsRUFBRSxFQUFFLENBQ3ZFLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztRQUN0QixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLO1FBQ3hCLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO1FBQzdCLFNBQVMsRUFBRTtZQUNULGVBQWUsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sOENBQThDLE1BQU0sYUFBTixNQUFNLGNBQU4sTUFBTSxHQUFJLEdBQUcsRUFBRTtTQUN0STtLQUNGLENBQUM7SUFDSixpQkFBaUIsRUFBRSxDQUFDLEtBQTJCLEVBQUUsTUFBa0IsRUFBRSxFQUFFLENBQ3JFLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztRQUN0QixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJO1FBQ3ZCLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNqQixTQUFTLEVBQUU7WUFDVCxNQUFNLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDO1lBQzFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUM7U0FDN0M7S0FDRixDQUFDO0lBQ0oseUJBQXlCLEVBQUUsQ0FBQyxLQUEyQixFQUFFLEVBQUUsQ0FDekQsSUFBSSxHQUFHLENBQUMs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Q2pDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87YUFDekIsQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ3hDLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU87YUFDaEMsQ0FBQyxDQUFBO1FBQ0osQ0FBQztJQUNILENBQUM7Q0FDRjtBQWpLRCx3Q0FpS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCAqIGFzIGVjciBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjclwiXG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIlxuaW1wb3J0ICogYXMgczMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiXG5pbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCJcbmltcG9ydCB7XG4gIEdpdGh1YkFjdGlvbnNSb2xlLFxuICBQcm9wcyBhcyBHaXRodWJBY3Rpb25zUm9sZVByb3BzLFxufSBmcm9tIFwiLi9naXRodWItYWN0aW9ucy1yb2xlXCJcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIHRvIHVzZSBmb3IgdGhlIFMzIEJ1Y2tldC5cbiAgICpcbiAgICogTk9URTogU2hvdWxkIGluY2x1ZGUgYm90aCBhY2NvdW50IGFuZCByZWdpb24gc28gdGhhdCBpdCB3aWxsXG4gICAqIG5vdCBjb25mbGljdCB3aXRoIG90aGVyIGFjY291bnRzL3JlZ2lvbnMuXG4gICAqL1xuICBidWNrZXROYW1lOiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBuYW1lIHRvIHVzZSBmb3IgdGhlIEVDUiBSZXBvc2l0b3J5LlxuICAgKi9cbiAgZWNyUmVwb3NpdG9yeU5hbWU6IHN0cmluZ1xuICAvKipcbiAgICogQ3JlYXRlIGEgcm9sZSB0aGF0IGNhbiBiZSBhc3N1bWVkIGJ5IExpZmxpZyBKZW5raW5zLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBAZGVmYXVsdCAtIG5vIHJvbGUgd2lsbCBiZSBjcmVhdGVkXG4gICAqL1xuICBjaVJvbGVOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiBUaGUgbGlmZWN5Y2xlIHJ1bGVzIHRvIGFwcGx5IHRvIGltYWdlcyBzdG9yZWQgaW4gdGhlIEVDUiByZXBvc2l0b3J5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEV4cGlyZSBpbWFnZXMgYWZ0ZXIgMTgwIGRheXNcbiAgICovXG4gIGVjclJlcG9zaXRvcnlMaWZlY3ljbGVSdWxlcz86IGVjci5MaWZlY3ljbGVSdWxlW11cbiAgLyoqXG4gICAqIElEIG9mIEFXUyBhY2NvdW50cyB0aGF0IHdpbGwgYmUgZ3JhbnRlZCBwZXJtaXNzaW9uIHRvIHJlYWQgZnJvbVxuICAgKiB0aGUgYXJ0aWZhY3QgcmVwb3MuXG4gICAqL1xuICB0YXJnZXRBY2NvdW50SWRzPzogc3RyaW5nW11cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIGNyZWF0aW5nIElBTSByb2xlcyB0aGF0IGNhbiBiZSBhc3N1bWVkXG4gICAqIGJ5IEdpdEh1YiBBY3Rpb25zIGluIHNwZWNpZmljIEdpdEh1YiByZXBvc2l0b3JpZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcm9sZXMgYXJlIGNyZWF0ZWQuXG4gICAqL1xuICBnaXRodWJBY3Rpb25zPzogT21pdDxcbiAgICBHaXRodWJBY3Rpb25zUm9sZVByb3BzLFxuICAgIFwidHJ1c3RlZE93bmVyc1wiIHwgXCJ0cnVzdGVkQnJhbmNoXCIgfCBcIm9pZGNQcm92aWRlclwiIHwgXCJyb2xlTmFtZVwiXG4gID4gJiB7XG4gICAgLyoqXG4gICAgICogQSBsaXN0IG9mIHRydXN0ZWQgR2l0SHViIHJlcG9zaXRvcnkgb3duZXJzLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgW1wiY2FwcmFsaWZlY3ljbGVcIl1cbiAgICAgKi9cbiAgICB0cnVzdGVkT3duZXJzPzogc3RyaW5nW11cbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgcm9sZSB0byBjcmVhdGUuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcImdpdGh1Yi1hY3Rpb25zLXJvbGVcIlxuICAgICAqL1xuICAgIHJvbGVOYW1lPzogc3RyaW5nXG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIGRlZmF1bHQgYnJhbmNoIGluIGFsbCByZXBvc2l0b3JpZXMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcIm1hc3RlclwiXG4gICAgICovXG4gICAgZGVmYXVsdEJyYW5jaD86IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYXRpb24gZm9yIGEgbGltaXRlZCByb2xlIHRoYXQgY2FuIGJlIHVzZWQgb24gbm9uLWRlZmF1bHRcbiAgICAgKiBicmFuY2hlcyB3aXRoIGxlc3MgSUFNIHBlcm1pc3Npb25zIHRoYW4gdGhlIG1haW4gcm9sZS5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IC0gYSBsaW1pdGVkIHJvbGUgaXMgY3JlYXRlZC5cbiAgICAgKi9cbiAgICBsaW1pdGVkUm9sZUNvbmZpZ3VyYXRpb24/OiB7XG4gICAgICAvKipcbiAgICAgICAqIFdoZXRoZXIgdG8gY3JlYXRlIHRoZSByb2xlIG9yIG5vdC5cbiAgICAgICAqXG4gICAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICAgKi9cbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuXG4gICAgICAvKipcbiAgICAgICAqIFRoZSBuYW1lIG9mIHRoZSByb2xlIHRvIGNyZWF0ZS5cbiAgICAgICAqXG4gICAgICAgKiBAZGVmYXVsdCBcImdpdGh1Yi1hY3Rpb25zLWxpbWl0ZWQtcm9sZVwiXG4gICAgICAgKi9cbiAgICAgIHJvbGVOYW1lPzogc3RyaW5nXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbnMgZm9yIGdlbmVyYXRpbmcgSUFNIHN0YXRlbWVudHMuXG4gKi9cbmNvbnN0IHBvbGljeVN0YXRlbWVudHMgPSB7XG4gIGFsbG93UGlwZWxpbmVWYXJpYWJsZXM6IChzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIHByZWZpeD86IHN0cmluZykgPT5cbiAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICBhY3Rpb25zOiBbXCJzc206UHV0UGFyYW1ldGVyXCJdLFxuICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgIGBhcm46YXdzOnNzbToke2Nkay5TdGFjay5vZihzY29wZSkucmVnaW9ufToke2Nkay5TdGFjay5vZihzY29wZSkuYWNjb3VudH06cGFyYW1ldGVyL2xpZmxpZy1jZGsvKi9waXBlbGluZS12YXJpYWJsZXMvJHtwcmVmaXggPz8gXCIqXCJ9YCxcbiAgICAgIF0sXG4gICAgfSksXG4gIGRlbnlQcm9kUGlwZWxpbmVzOiAoc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBidWNrZXQ6IHMzLklCdWNrZXQpID0+XG4gICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkRFTlksXG4gICAgICBhY3Rpb25zOiBbXCJzMzoqXCJdLFxuICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgIGJ1Y2tldC5hcm5Gb3JPYmplY3RzKFwicGlwZWxpbmVzLyotcHJvZC8qXCIpLFxuICAgICAgICBidWNrZXQuYXJuRm9yT2JqZWN0cyhcInBpcGVsaW5lcy8qLXByb2QtKi8qXCIpLFxuICAgICAgXSxcbiAgICB9KSxcbiAgZGVueVByb2RQaXBlbGluZVZhcmlhYmxlczogKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCkgPT5cbiAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuREVOWSxcbiAgICAgIGFjdGlvbnM6IFtcInNzbTpQdXRQYXJhbWV0ZXJcIl0sXG4gICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgYGFybjphd3M6c3NtOiR7Y2RrLlN0YWNrLm9mKHNjb3BlKS5yZWdpb259OiR7XG4gICAgICAgICAgY2RrLlN0YWNrLm9mKHNjb3BlKS5hY2NvdW50XG4gICAgICAgIH06cGFyYW1ldGVyL2xpZmxpZy1jZGsvKi9waXBlbGluZS12YXJpYWJsZXMvcHJvZCpgLFxuICAgICAgXSxcbiAgICB9KSxcbn1cblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIGZvciB2YWxpZGF0aW5nIHRoZSBjb25zdHJ1Y3QgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHZhbGlkYXRlUHJvcHMgPSAocHJvcHM6IFByb3BzKSA9PiB7XG4gIGxldCB2YWxpZCA9IHRydWVcbiAgaWYgKFxuICAgIHByb3BzLmdpdGh1YkFjdGlvbnM/LmRlZmF1bHRCcmFuY2ggJiZcbiAgICAhcHJvcHMuZ2l0aHViQWN0aW9ucy5kZWZhdWx0QnJhbmNoLm1hdGNoKC9eW2EtekEtWjAtOS1dKyQvKVxuICApIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgYERlZmF1bHQgYnJhbmNoICR7cHJvcHMuZ2l0aHViQWN0aW9ucy5kZWZhdWx0QnJhbmNofSBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnNgLFxuICAgIClcbiAgICB2YWxpZCA9IGZhbHNlXG4gIH1cbiAgcmV0dXJuIHZhbGlkXG59XG5cbi8qKlxuICogQ3JlYXRlIHZhcmlvdXMgYXJ0aWZhY3RzIHVzZWQgYXMgcGFydCBvZiBDb250aW51b3VzIEludGVncmF0aW9uIChDSSkuXG4gKlxuICogVGhpcyBpbmNsdWRlcyBhcnRpZmFjdCByZXBvc2l0b3JpZXMgc3VjaCBhcyBTMyBidWNrZXQgYW5kIEVDUlxuICogcmVwb3NpdG9yeSwgYXMgd2VsbCBhcyBJQU0gcm9sZShzKSB0aGF0IGdyYW50IHRoZSBDSSBzZXJ2ZXIgd3JpdGVcbiAqIGFjY2VzcyB0byB0aGVzZSByZXBvc2l0b3JpZXMuXG4gKlxuICogVE9ETzogSG93IGNhbiB3ZSBjbGVhbnVwIHN0dWZmIHRoYXQgZ29lcyBpbnRvIHRoaXMgUzMgQnVja2V0IGFuZFxuICogIEVDUiBSZXBvc2l0b3J5PyBDYW4gd2UgZXZlciByZWxpYWJseSBjbGVhbnVwPyBXZSBwcm9iYWJseSBuZWVkXG4gKiAgc29tZSBzdHJhdGVneSBmb3IgaG93IHdlIHB1dCBzdHVmZiBoZXJlIHRvIGJlIGFibGUgdG8gZG8gaXQuXG4gKlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgY2xhc3MgQnVpbGRBcnRpZmFjdHMgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBidWNrZXROYW1lOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgcHVibGljIHJlYWRvbmx5IGVjclJlcG9zaXRvcnlBcm46IHN0cmluZ1xuICBwdWJsaWMgcmVhZG9ubHkgZWNyUmVwb3NpdG9yeU5hbWU6IHN0cmluZ1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZT86IGlhbS5Sb2xlXG4gIHB1YmxpYyByZWFkb25seSBsaW1pdGVkUm9sZT86IGlhbS5Sb2xlXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICBpZiAoIXZhbGlkYXRlUHJvcHMocHJvcHMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHByb3BzIHdlcmUgc3VwcGxpZWRcIilcbiAgICB9XG5cbiAgICB0aGlzLmJ1Y2tldE5hbWUgPSBwcm9wcy5idWNrZXROYW1lXG4gICAgdGhpcy5lY3JSZXBvc2l0b3J5TmFtZSA9IHByb3BzLmVjclJlcG9zaXRvcnlOYW1lXG4gICAgdGhpcy5lY3JSZXBvc2l0b3J5QXJuID0gY2RrLkFybi5mb3JtYXQoXG4gICAgICB7XG4gICAgICAgIHNlcnZpY2U6IFwiZWNyXCIsXG4gICAgICAgIHJlc291cmNlOiBcInJlcG9zaXRvcnlcIixcbiAgICAgICAgcmVzb3VyY2VOYW1lOiB0aGlzLmVjclJlcG9zaXRvcnlOYW1lLFxuICAgICAgfSxcbiAgICAgIGNkay5TdGFjay5vZih0aGlzKSxcbiAgICApXG5cbiAgICBjb25zdCBlY3JSZXBvc2l0b3J5TmFtZSA9IHByb3BzLmVjclJlcG9zaXRvcnlOYW1lXG5cbiAgICBjb25zdCBidWNrZXQgPSBuZXcgczMuQnVja2V0KHRoaXMsIFwiUzNCdWNrZXRcIiwge1xuICAgICAgYnVja2V0TmFtZTogcHJvcHMuYnVja2V0TmFtZSxcbiAgICAgIGVuY3J5cHRpb246IHMzLkJ1Y2tldEVuY3J5cHRpb24uUzNfTUFOQUdFRCxcbiAgICAgIGV2ZW50QnJpZGdlRW5hYmxlZDogdHJ1ZSxcbiAgICAgIGJsb2NrUHVibGljQWNjZXNzOiBzMy5CbG9ja1B1YmxpY0FjY2Vzcy5CTE9DS19BTEwsXG4gICAgICB2ZXJzaW9uZWQ6IHRydWUsXG4gICAgICBsaWZlY3ljbGVSdWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgbm9uY3VycmVudFZlcnNpb25FeHBpcmF0aW9uOiBjZGsuRHVyYXRpb24uZGF5cygxMCksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pXG5cbiAgICBjb25zdCBlY3JSZXBvID0gbmV3IGVjci5SZXBvc2l0b3J5KHRoaXMsIFwiRWNyUmVwb3NpdG9yeVwiLCB7XG4gICAgICByZXBvc2l0b3J5TmFtZTogZWNyUmVwb3NpdG9yeU5hbWUsXG4gICAgICBsaWZlY3ljbGVSdWxlczogcHJvcHMuZWNyUmVwb3NpdG9yeUxpZmVjeWNsZVJ1bGVzIHx8IFtcbiAgICAgICAge1xuICAgICAgICAgIG1heEltYWdlQWdlOiBjZGsuRHVyYXRpb24uZGF5cygxODApLFxuICAgICAgICAgIHRhZ1N0YXR1czogZWNyLlRhZ1N0YXR1cy5BTlksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pXG5cbiAgICAvLyBBbGxvdyBhIHRhcmdldCB0byByZWFkIGZyb20gdGhlIHJlcG9zLiBBcyBhbnkgc3BlY2lmaWMgcm9sZXMgbmVlZFxuICAgIC8vIHRvIGV4aXN0IGJlZm9yZSB3ZSBjYW4gZ3JhbnQgYWNjZXNzLCB3ZSBkZWxlZ2F0ZSB0aGF0IHJlc3BvbnNpYmlsaXR5XG4gICAgLy8gdG8gdGhlIHRhcmdldCBhY2NvdW50LlxuICAgIGZvciAoY29uc3QgdGFyZ2V0QWNjb3VudElkIG9mIHByb3BzLnRhcmdldEFjY291bnRJZHMgfHwgW10pIHtcbiAgICAgIGJ1Y2tldC5ncmFudFJlYWQobmV3IGlhbS5BY2NvdW50UHJpbmNpcGFsKHRhcmdldEFjY291bnRJZCkpXG4gICAgICBlY3JSZXBvLmdyYW50UHVsbChuZXcgaWFtLkFjY291bnRQcmluY2lwYWwodGFyZ2V0QWNjb3VudElkKSlcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuZ2l0aHViQWN0aW9ucykge1xuICAgICAgY29uc3QgdHJ1c3RlZE93bmVycyA9IHByb3BzLmdpdGh1YkFjdGlvbnMudHJ1c3RlZE93bmVycyA/PyBbXG4gICAgICAgIFwiY2FwcmFsaWZlY3ljbGVcIixcbiAgICAgIF1cbiAgICAgIC8vIE5PVEU6IFRoZXJlJ3MgYW4gTDIgY29uc3RydWN0IHRoYXQgcHJlZGF0ZXMgdGhlIG9mZmljaWFsIENsb3VkRm9ybWF0aW9uIHJlc291cmNlLFxuICAgICAgLy8gYW5kIGl0IGlzIHRoZXJlZm9yZSBpbXBsZW1lbnRlZCBhcyBhIGN1c3RvbSByZXNvdXJjZS5cbiAgICAgIC8vIFdlIHVzZSB0aGUgTDEgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgaW5zdGVhZCBiZWNhdXNlOlxuICAgICAgLy8gMSkgaXQncyBzaW1wbGVyXG4gICAgICAvLyAyKSB0aGVyZSdzIGEgY2hhbmNlIHRoZSBMMiBjb25zdHJ1Y3Qgd2lsbCBiZSBkZXByZWNhdGVkIGluIHRoZSBmdXR1cmUgaW4gZmF2b3JcbiAgICAgIC8vIG9mIHRoZSBvZmZpY2lhbCBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZS5cbiAgICAgIGNvbnN0IGNmbk9pZGNQcm92aWRlciA9IG5ldyBpYW0uQ2ZuT0lEQ1Byb3ZpZGVyKFxuICAgICAgICB0aGlzLFxuICAgICAgICBcIk9wZW5JZENvbm5lY3RQcm92aWRlclwiLFxuICAgICAgICB7XG4gICAgICAgICAgdXJsOiBcImh0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb21cIixcbiAgICAgICAgICBjbGllbnRJZExpc3Q6IFtcInN0cy5hbWF6b25hd3MuY29tXCJdLFxuICAgICAgICAgIC8vIE5PVEU6IFRoZSB0aHVtYnByaW50IGlzbid0IGFjdHVhbGx5IHVzZWQsIGJ1dCB0aGUgQVdTIEFQSSBzdGlsbCByZXF1aXJlcyB1cyB0byBzdXBwbHkgaXQuXG4gICAgICAgICAgLy8gTW9yZSBkZXRhaWxzIGhlcmU6IGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDI0MDEyMjE1NTc1OC9odHRwczovL2dpdGh1Yi5jb20vYXdzLWFjdGlvbnMvY29uZmlndXJlLWF3cy1jcmVkZW50aWFscy9pc3N1ZXMvMzU3I2lzc3VlY29tbWVudC0xNjI2MzU3MzMzXG4gICAgICAgICAgdGh1bWJwcmludExpc3Q6IFtcIjFjNThhM2E4NTE4ZTg3NTliZjA3NWI3NmI3NTBkNGYyZGYyNjRmY2RcIl0sXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgICBjb25zdCBvaWRjUHJvdmlkZXIgPVxuICAgICAgICBpYW0uT3BlbklkQ29ubmVjdFByb3ZpZGVyLmZyb21PcGVuSWRDb25uZWN0UHJvdmlkZXJBcm4oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBcIlByb3ZpZGVyXCIsXG4gICAgICAgICAgY2ZuT2lkY1Byb3ZpZGVyLnJlZixcbiAgICAgICAgKVxuICAgICAgY29uc3QgY3JlYXRlTGltaXRlZFJvbGUgPVxuICAgICAgICBwcm9wcy5naXRodWJBY3Rpb25zLmxpbWl0ZWRSb2xlQ29uZmlndXJhdGlvbj8uZW5hYmxlZCA/PyB0cnVlXG4gICAgICBjb25zdCByb2xlID0gbmV3IEdpdGh1YkFjdGlvbnNSb2xlKHRoaXMsIFwiR2l0aHViQWN0aW9uc1JvbGVcIiwge1xuICAgICAgICBvaWRjUHJvdmlkZXIsXG4gICAgICAgIHRydXN0ZWRPd25lcnMsXG4gICAgICAgIHJvbGVOYW1lOiBwcm9wcy5naXRodWJBY3Rpb25zLnJvbGVOYW1lID8/IFwiZ2l0aHViLWFjdGlvbnMtcm9sZVwiLFxuICAgICAgICB0cnVzdGVkQnJhbmNoOiBjcmVhdGVMaW1pdGVkUm9sZVxuICAgICAgICAgID8gKHByb3BzLmdpdGh1YkFjdGlvbnMuZGVmYXVsdEJyYW5jaCA/PyBcIm1hc3RlclwiKVxuICAgICAgICAgIDogLy8gTk9URTogSWYgdGhlIGxpbWl0ZWQgcm9sZSBpcyBkaXNhYmxlZCwgb25seSBvbmUgcm9sZSB3aWxsIGJlIGNyZWF0ZWRcbiAgICAgICAgICAgIC8vIGFuZCB0aGF0IHJvbGUgdGhlbiBuZWVkcyB0byBiZSBhc3N1bWFibGUgZnJvbSBhbGwgYnJhbmNoZXMuXG4gICAgICAgICAgICBcIipcIixcbiAgICAgICAgcmVwb3NpdG9yaWVzOiBwcm9wcy5naXRodWJBY3Rpb25zLnJlcG9zaXRvcmllcyxcbiAgICAgIH0pXG4gICAgICB0aGlzLnJvbGUgPSByb2xlLnJvbGVcbiAgICAgIHRoaXMucm9sZS5hZGRUb1BvbGljeShwb2xpY3lTdGF0ZW1lbnRzLmFsbG93UGlwZWxpbmVWYXJpYWJsZXModGhpcykpXG4gICAgICBidWNrZXQuZ3JhbnRQdXQodGhpcy5yb2xlKVxuICAgICAgZWNyUmVwby5ncmFudFB1bGxQdXNoKHRoaXMucm9sZSlcbiAgICAgIGlmIChjcmVhdGVMaW1pdGVkUm9sZSkge1xuICAgICAgICBjb25zdCBsaW1pdGVkUm9sZSA9IG5ldyBHaXRodWJBY3Rpb25zUm9sZShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIFwiR2l0aHViQWN0aW9uc0xpbWl0ZWRSb2xlXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgb2lkY1Byb3ZpZGVyLFxuICAgICAgICAgICAgdHJ1c3RlZE93bmVycyxcbiAgICAgICAgICAgIHJvbGVOYW1lOlxuICAgICAgICAgICAgICBwcm9wcy5naXRodWJBY3Rpb25zLmxpbWl0ZWRSb2xlQ29uZmlndXJhdGlvbj8ucm9sZU5hbWUgPz9cbiAgICAgICAgICAgICAgXCJnaXRodWItYWN0aW9ucy1saW1pdGVkLXJvbGVcIixcbiAgICAgICAgICAgIC8vIE5PVEU6IFRoZSBsaW1pdGVkIHJvbGUgY2FuIGJlIGFzc3VtZWQgZnJvbSBhbGwgYnJhbmNoZXMuXG4gICAgICAgICAgICB0cnVzdGVkQnJhbmNoOiBcIipcIixcbiAgICAgICAgICAgIHJlcG9zaXRvcmllczogcHJvcHMuZ2l0aHViQWN0aW9ucy5yZXBvc2l0b3JpZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgKVxuICAgICAgICB0aGlzLmxpbWl0ZWRSb2xlID0gbGltaXRlZFJvbGUucm9sZVxuICAgICAgICB0aGlzLmxpbWl0ZWRSb2xlLmFkZFRvUG9saWN5KFxuICAgICAgICAgIHBvbGljeVN0YXRlbWVudHMuYWxsb3dQaXBlbGluZVZhcmlhYmxlcyh0aGlzLCBcImRldipcIiksXG4gICAgICAgIClcbiAgICAgICAgdGhpcy5saW1pdGVkUm9sZS5hZGRUb1BvbGljeShcbiAgICAgICAgICBwb2xpY3lTdGF0ZW1lbnRzLmRlbnlQcm9kUGlwZWxpbmVzKHNjb3BlLCBidWNrZXQpLFxuICAgICAgICApXG4gICAgICAgIGJ1Y2tldC5ncmFudFB1dCh0aGlzLmxpbWl0ZWRSb2xlKVxuICAgICAgICBlY3JSZXBvLmdyYW50UHVsbFB1c2godGhpcy5saW1pdGVkUm9sZSlcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHByb3BzLmNpUm9sZU5hbWUpIHtcbiAgICAgIGNvbnN0IGxlZ2FjeVJvbGVGb3JKZW5raW5zID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiQ2lSb2xlXCIsIHtcbiAgICAgICAgcm9sZU5hbWU6IHByb3BzLmNpUm9sZU5hbWUsXG4gICAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5Bcm5QcmluY2lwYWwoXG4gICAgICAgICAgXCJhcm46YXdzOmlhbTo6OTIzNDAyMDk3MDQ2OnJvbGUvYnVpbGR0b29scy1qZW5raW5zLVJvbGVKZW5raW5zU2xhdmUtSlFHWUhSNVdFNkM1XCIsXG4gICAgICAgICksXG4gICAgICB9KVxuICAgICAgbGVnYWN5Um9sZUZvckplbmtpbnMuYWRkVG9Qb2xpY3koXG4gICAgICAgIHBvbGljeVN0YXRlbWVudHMuYWxsb3dQaXBlbGluZVZhcmlhYmxlcyh0aGlzKSxcbiAgICAgIClcbiAgICAgIGJ1Y2tldC5ncmFudFB1dChsZWdhY3lSb2xlRm9ySmVua2lucylcbiAgICAgIGVjclJlcG8uZ3JhbnRQdWxsUHVzaChsZWdhY3lSb2xlRm9ySmVua2lucylcbiAgICB9XG5cbiAgICBuZXcgY2RrLkNmbk91dHB1dCh0aGlzLCBcIkVjclJlcG9VcmlcIiwge1xuICAgICAgdmFsdWU6IGVjclJlcG8ucmVwb3NpdG9yeVVyaSxcbiAgICB9KVxuXG4gICAgbmV3IGNkay5DZm5PdXRwdXQodGhpcywgXCJCdWNrZXROYW1lXCIsIHtcbiAgICAgIHZhbHVlOiBidWNrZXQuYnVja2V0TmFtZSxcbiAgICB9KVxuXG4gICAgaWYgKHRoaXMucm9sZSkge1xuICAgICAgbmV3IGNkay5DZm5PdXRwdXQodGhpcywgXCJSb2xlQXJuXCIsIHtcbiAgICAgICAgdmFsdWU6IHRoaXMucm9sZS5yb2xlQXJuLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHRoaXMubGltaXRlZFJvbGUpIHtcbiAgICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsIFwiTGltaXRlZFJvbGVBcm5cIiwge1xuICAgICAgICB2YWx1ZTogdGhpcy5saW1pdGVkUm9sZS5yb2xlQXJuLFxuICAgICAgfSlcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnVpbGQtYXJ0aWZhY3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ3hDLE9BQU8sS0FBSyxHQUFHLE1BQU0scUJBQXFCLENBQUE7QUFDMUMsT0FBTyxLQUFLLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQTtBQUMxQyxPQUFPLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ3hDLE9BQU8sS0FBSyxHQUFHLE1BQU0sYUFBYSxDQUFBO0FBQ2xDLE9BQU8sRUFDTCxpQkFBaUIsR0FFbEIsTUFBTSx1QkFBdUIsQ0FBQTtBQW1GOUI7O0dBRUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHO0lBQ3ZCLHNCQUFzQixFQUFFLENBQUMsS0FBMkIsRUFBRSxNQUFlLEVBQUUsRUFBRSxDQUN2RSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7UUFDdEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSztRQUN4QixPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztRQUM3QixTQUFTLEVBQUU7WUFDVCxlQUFlLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLDhDQUE4QyxNQUFNLElBQUksR0FBRyxFQUFFO1NBQ3RJO0tBQ0YsQ0FBQztJQUNKLGlCQUFpQixFQUFFLENBQUMsS0FBMkIsRUFBRSxNQUFrQixFQUFFLEVBQUUsQ0FDckUsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO1FBQ3RCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUk7UUFDdkIsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2pCLFNBQVMsRUFBRTtZQUNULE1BQU0sQ0FBQyxhQUFh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QUUsWUFBWSxFQUFFO1lBQ3BDLEtBQUssRUFBRSxNQUFNLENBQUMsVUFBVTtTQUN6QixDQUFDLENBQUE7UUFFRixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO2dCQUNqQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO2FBQ3pCLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUN4QyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPO2FBQ2hDLENBQUMsQ0FBQTtRQUNKLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCAqIGFzIGVjciBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjclwiXG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIlxuaW1wb3J0ICogYXMgczMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiXG5pbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCJcbmltcG9ydCB7XG4gIEdpdGh1YkFjdGlvbnNSb2xlLFxuICBQcm9wcyBhcyBHaXRodWJBY3Rpb25zUm9sZVByb3BzLFxufSBmcm9tIFwiLi9naXRodWItYWN0aW9ucy1yb2xlXCJcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIHRvIHVzZSBmb3IgdGhlIFMzIEJ1Y2tldC5cbiAgICpcbiAgICogTk9URTogU2hvdWxkIGluY2x1ZGUgYm90aCBhY2NvdW50IGFuZCByZWdpb24gc28gdGhhdCBpdCB3aWxsXG4gICAqIG5vdCBjb25mbGljdCB3aXRoIG90aGVyIGFjY291bnRzL3JlZ2lvbnMuXG4gICAqL1xuICBidWNrZXROYW1lOiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBuYW1lIHRvIHVzZSBmb3IgdGhlIEVDUiBSZXBvc2l0b3J5LlxuICAgKi9cbiAgZWNyUmVwb3NpdG9yeU5hbWU6IHN0cmluZ1xuICAvKipcbiAgICogQ3JlYXRlIGEgcm9sZSB0aGF0IGNhbiBiZSBhc3N1bWVkIGJ5IExpZmxpZyBKZW5raW5zLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBAZGVmYXVsdCAtIG5vIHJvbGUgd2lsbCBiZSBjcmVhdGVkXG4gICAqL1xuICBjaVJvbGVOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiBUaGUgbGlmZWN5Y2xlIHJ1bGVzIHRvIGFwcGx5IHRvIGltYWdlcyBzdG9yZWQgaW4gdGhlIEVDUiByZXBvc2l0b3J5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEV4cGlyZSBpbWFnZXMgYWZ0ZXIgMTgwIGRheXNcbiAgICovXG4gIGVjclJlcG9zaXRvcnlMaWZlY3ljbGVSdWxlcz86IGVjci5MaWZlY3ljbGVSdWxlW11cbiAgLyoqXG4gICAqIElEIG9mIEFXUyBhY2NvdW50cyB0aGF0IHdpbGwgYmUgZ3JhbnRlZCBwZXJtaXNzaW9uIHRvIHJlYWQgZnJvbVxuICAgKiB0aGUgYXJ0aWZhY3QgcmVwb3MuXG4gICAqL1xuICB0YXJnZXRBY2NvdW50SWRzPzogc3RyaW5nW11cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIGNyZWF0aW5nIElBTSByb2xlcyB0aGF0IGNhbiBiZSBhc3N1bWVkXG4gICAqIGJ5IEdpdEh1YiBBY3Rpb25zIGluIHNwZWNpZmljIEdpdEh1YiByZXBvc2l0b3JpZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcm9sZXMgYXJlIGNyZWF0ZWQuXG4gICAqL1xuICBnaXRodWJBY3Rpb25zPzogT21pdDxcbiAgICBHaXRodWJBY3Rpb25zUm9sZVByb3BzLFxuICAgIFwidHJ1c3RlZE93bmVyc1wiIHwgXCJ0cnVzdGVkQnJhbmNoXCIgfCBcIm9pZGNQcm92aWRlclwiIHwgXCJyb2xlTmFtZVwiXG4gID4gJiB7XG4gICAgLyoqXG4gICAgICogQSBsaXN0IG9mIHRydXN0ZWQgR2l0SHViIHJlcG9zaXRvcnkgb3duZXJzLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgW1wiY2FwcmFsaWZlY3ljbGVcIl1cbiAgICAgKi9cbiAgICB0cnVzdGVkT3duZXJzPzogc3RyaW5nW11cbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgcm9sZSB0byBjcmVhdGUuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcImdpdGh1Yi1hY3Rpb25zLXJvbGVcIlxuICAgICAqL1xuICAgIHJvbGVOYW1lPzogc3RyaW5nXG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIGRlZmF1bHQgYnJhbmNoIGluIGFsbCByZXBvc2l0b3JpZXMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcIm1hc3RlclwiXG4gICAgICovXG4gICAgZGVmYXVsdEJyYW5jaD86IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYXRpb24gZm9yIGEgbGltaXRlZCByb2xlIHRoYXQgY2FuIGJlIHVzZWQgb24gbm9uLWRlZmF1bHRcbiAgICAgKiBicmFuY2hlcyB3aXRoIGxlc3MgSUFNIHBlcm1pc3Npb25zIHRoYW4gdGhlIG1haW4gcm9sZS5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IC0gYSBsaW1pdGVkIHJvbGUgaXMgY3JlYXRlZC5cbiAgICAgKi9cbiAgICBsaW1pdGVkUm9sZUNvbmZpZ3VyYXRpb24/OiB7XG4gICAgICAvKipcbiAgICAgICAqIFdoZXRoZXIgdG8gY3JlYXRlIHRoZSByb2xlIG9yIG5vdC5cbiAgICAgICAqXG4gICAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICAgKi9cbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuXG4gICAgICAvKipcbiAgICAgICAqIFRoZSBuYW1lIG9mIHRoZSByb2xlIHRvIGNyZWF0ZS5cbiAgICAgICAqXG4gICAgICAgKiBAZGVmYXVsdCBcImdpdGh1Yi1hY3Rpb25zLWxpbWl0ZWQtcm9sZVwiXG4gICAgICAgKi9cbiAgICAgIHJvbGVOYW1lPzogc3RyaW5nXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbnMgZm9yIGdlbmVyYXRpbmcgSUFNIHN0YXRlbWVudHMuXG4gKi9cbmNvbnN0IHBvbGljeVN0YXRlbWVudHMgPSB7XG4gIGFsbG93UGlwZWxpbmVWYXJpYWJsZXM6IChzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIHByZWZpeD86IHN0cmluZykgPT5cbiAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICBhY3Rpb25zOiBbXCJzc206UHV0UGFyYW1ldGVyXCJdLFxuICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgIGBhcm46YXdzOnNzbToke2Nkay5TdGFjay5vZihzY29wZSkucmVnaW9ufToke2Nkay5TdGFjay5vZihzY29wZSkuYWNjb3VudH06cGFyYW1ldGVyL2xpZmxpZy1jZGsvKi9waXBlbGluZS12YXJpYWJsZXMvJHtwcmVmaXggPz8gXCIqXCJ9YCxcbiAgICAgIF0sXG4gICAgfSksXG4gIGRlbnlQcm9kUGlwZWxpbmVzOiAoc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBidWNrZXQ6IHMzLklCdWNrZXQpID0+XG4gICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkRFTlksXG4gICAgICBhY3Rpb25zOiBbXCJzMzoqXCJdLFxuICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgIGJ1Y2tldC5hcm5Gb3JPYmplY3RzKFwicGlwZWxpbmVzLyotcHJvZC8qXCIpLFxuICAgICAgICBidWNrZXQuYXJuRm9yT2JqZWN0cyhcInBpcGVsaW5lcy8qLXByb2QtKi8qXCIpLFxuICAgICAgXSxcbiAgICB9KSxcbiAgZGVueVByb2RQaXBlbGluZVZhcmlhYmxlczogKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCkgPT5cbiAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuREVOWSxcbiAgICAgIGFjdGlvbnM6IFtcInNzbTpQdXRQYXJhbWV0ZXJcIl0sXG4gICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgYGFybjphd3M6c3NtOiR7Y2RrLlN0YWNrLm9mKHNjb3BlKS5yZWdpb259OiR7XG4gICAgICAgICAgY2RrLlN0YWNrLm9mKHNjb3BlKS5hY2NvdW50XG4gICAgICAgIH06cGFyYW1ldGVyL2xpZmxpZy1jZGsvKi9waXBlbGluZS12YXJpYWJsZXMvcHJvZCpgLFxuICAgICAgXSxcbiAgICB9KSxcbn1cblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIGZvciB2YWxpZGF0aW5nIHRoZSBjb25zdHJ1Y3QgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHZhbGlkYXRlUHJvcHMgPSAocHJvcHM6IFByb3BzKSA9PiB7XG4gIGxldCB2YWxpZCA9IHRydWVcbiAgaWYgKFxuICAgIHByb3BzLmdpdGh1YkFjdGlvbnM/LmRlZmF1bHRCcmFuY2ggJiZcbiAgICAhcHJvcHMuZ2l0aHViQWN0aW9ucy5kZWZhdWx0QnJhbmNoLm1hdGNoKC9eW2EtekEtWjAtOS1dKyQvKVxuICApIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgYERlZmF1bHQgYnJhbmNoICR7cHJvcHMuZ2l0aHViQWN0aW9ucy5kZWZhdWx0QnJhbmNofSBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnNgLFxuICAgIClcbiAgICB2YWxpZCA9IGZhbHNlXG4gIH1cbiAgcmV0dXJuIHZhbGlkXG59XG5cbi8qKlxuICogQ3JlYXRlIHZhcmlvdXMgYXJ0aWZhY3RzIHVzZWQgYXMgcGFydCBvZiBDb250aW51b3VzIEludGVncmF0aW9uIChDSSkuXG4gKlxuICogVGhpcyBpbmNsdWRlcyBhcnRpZmFjdCByZXBvc2l0b3JpZXMgc3VjaCBhcyBTMyBidWNrZXQgYW5kIEVDUlxuICogcmVwb3NpdG9yeSwgYXMgd2VsbCBhcyBJQU0gcm9sZShzKSB0aGF0IGdyYW50IHRoZSBDSSBzZXJ2ZXIgd3JpdGVcbiAqIGFjY2VzcyB0byB0aGVzZSByZXBvc2l0b3JpZXMuXG4gKlxuICogVE9ETzogSG93IGNhbiB3ZSBjbGVhbnVwIHN0dWZmIHRoYXQgZ29lcyBpbnRvIHRoaXMgUzMgQnVja2V0IGFuZFxuICogIEVDUiBSZXBvc2l0b3J5PyBDYW4gd2UgZXZlciByZWxpYWJseSBjbGVhbnVwPyBXZSBwcm9iYWJseSBuZWVkXG4gKiAgc29tZSBzdHJhdGVneSBmb3IgaG93IHdlIHB1dCBzdHVmZiBoZXJlIHRvIGJlIGFibGUgdG8gZG8gaXQuXG4gKlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgY2xhc3MgQnVpbGRBcnRpZmFjdHMgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBidWNrZXROYW1lOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgcHVibGljIHJlYWRvbmx5IGVjclJlcG9zaXRvcnlBcm46IHN0cmluZ1xuICBwdWJsaWMgcmVhZG9ubHkgZWNyUmVwb3NpdG9yeU5hbWU6IHN0cmluZ1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZT86IGlhbS5Sb2xlXG4gIHB1YmxpYyByZWFkb25seSBsaW1pdGVkUm9sZT86IGlhbS5Sb2xlXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICBpZiAoIXZhbGlkYXRlUHJvcHMocHJvcHMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHByb3BzIHdlcmUgc3VwcGxpZWRcIilcbiAgICB9XG5cbiAgICB0aGlzLmJ1Y2tldE5hbWUgPSBwcm9wcy5idWNrZXROYW1lXG4gICAgdGhpcy5lY3JSZXBvc2l0b3J5TmFtZSA9IHByb3BzLmVjclJlcG9zaXRvcnlOYW1lXG4gICAgdGhpcy5lY3JSZXBvc2l0b3J5QXJuID0gY2RrLkFybi5mb3JtYXQoXG4gICAgICB7XG4gICAgICAgIHNlcnZpY2U6IFwiZWNyXCIsXG4gICAgICAgIHJlc291cmNlOiBcInJlcG9zaXRvcnlcIixcbiAgICAgICAgcmVzb3VyY2VOYW1lOiB0aGlzLmVjclJlcG9zaXRvcnlOYW1lLFxuICAgICAgfSxcbiAgICAgIGNkay5TdGFjay5vZih0aGlzKSxcbiAgICApXG5cbiAgICBjb25zdCBlY3JSZXBvc2l0b3J5TmFtZSA9IHByb3BzLmVjclJlcG9zaXRvcnlOYW1lXG5cbiAgICBjb25zdCBidWNrZXQgPSBuZXcgczMuQnVja2V0KHRoaXMsIFwiUzNCdWNrZXRcIiwge1xuICAgICAgYnVja2V0TmFtZTogcHJvcHMuYnVja2V0TmFtZSxcbiAgICAgIGVuY3J5cHRpb246IHMzLkJ1Y2tldEVuY3J5cHRpb24uUzNfTUFOQUdFRCxcbiAgICAgIGV2ZW50QnJpZGdlRW5hYmxlZDogdHJ1ZSxcbiAgICAgIGJsb2NrUHVibGljQWNjZXNzOiBzMy5CbG9ja1B1YmxpY0FjY2Vzcy5CTE9DS19BTEwsXG4gICAgICB2ZXJzaW9uZWQ6IHRydWUsXG4gICAgICBsaWZlY3ljbGVSdWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgbm9uY3VycmVudFZlcnNpb25FeHBpcmF0aW9uOiBjZGsuRHVyYXRpb24uZGF5cygxMCksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pXG5cbiAgICBjb25zdCBlY3JSZXBvID0gbmV3IGVjci5SZXBvc2l0b3J5KHRoaXMsIFwiRWNyUmVwb3NpdG9yeVwiLCB7XG4gICAgICByZXBvc2l0b3J5TmFtZTogZWNyUmVwb3NpdG9yeU5hbWUsXG4gICAgICBsaWZlY3ljbGVSdWxlczogcHJvcHMuZWNyUmVwb3NpdG9yeUxpZmVjeWNsZVJ1bGVzIHx8IFtcbiAgICAgICAge1xuICAgICAgICAgIG1heEltYWdlQWdlOiBjZGsuRHVyYXRpb24uZGF5cygxODApLFxuICAgICAgICAgIHRhZ1N0YXR1czogZWNyLlRhZ1N0YXR1cy5BTlksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pXG5cbiAgICAvLyBBbGxvdyBhIHRhcmdldCB0byByZWFkIGZyb20gdGhlIHJlcG9zLiBBcyBhbnkgc3BlY2lmaWMgcm9sZXMgbmVlZFxuICAgIC8vIHRvIGV4aXN0IGJlZm9yZSB3ZSBjYW4gZ3JhbnQgYWNjZXNzLCB3ZSBkZWxlZ2F0ZSB0aGF0IHJlc3BvbnNpYmlsaXR5XG4gICAgLy8gdG8gdGhlIHRhcmdldCBhY2NvdW50LlxuICAgIGZvciAoY29uc3QgdGFyZ2V0QWNjb3VudElkIG9mIHByb3BzLnRhcmdldEFjY291bnRJZHMgfHwgW10pIHtcbiAgICAgIGJ1Y2tldC5ncmFudFJlYWQobmV3IGlhbS5BY2NvdW50UHJpbmNpcGFsKHRhcmdldEFjY291bnRJZCkpXG4gICAgICBlY3JSZXBvLmdyYW50UHVsbChuZXcgaWFtLkFjY291bnRQcmluY2lwYWwodGFyZ2V0QWNjb3VudElkKSlcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuZ2l0aHViQWN0aW9ucykge1xuICAgICAgY29uc3QgdHJ1c3RlZE93bmVycyA9IHByb3BzLmdpdGh1YkFjdGlvbnMudHJ1c3RlZE93bmVycyA/PyBbXG4gICAgICAgIFwiY2FwcmFsaWZlY3ljbGVcIixcbiAgICAgIF1cbiAgICAgIC8vIE5PVEU6IFRoZXJlJ3MgYW4gTDIgY29uc3RydWN0IHRoYXQgcHJlZGF0ZXMgdGhlIG9mZmljaWFsIENsb3VkRm9ybWF0aW9uIHJlc291cmNlLFxuICAgICAgLy8gYW5kIGl0IGlzIHRoZXJlZm9yZSBpbXBsZW1lbnRlZCBhcyBhIGN1c3RvbSByZXNvdXJjZS5cbiAgICAgIC8vIFdlIHVzZSB0aGUgTDEgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgaW5zdGVhZCBiZWNhdXNlOlxuICAgICAgLy8gMSkgaXQncyBzaW1wbGVyXG4gICAgICAvLyAyKSB0aGVyZSdzIGEgY2hhbmNlIHRoZSBMMiBjb25zdHJ1Y3Qgd2lsbCBiZSBkZXByZWNhdGVkIGluIHRoZSBmdXR1cmUgaW4gZmF2b3JcbiAgICAgIC8vIG9mIHRoZSBvZmZpY2lhbCBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZS5cbiAgICAgIGNvbnN0IGNmbk9pZGNQcm92aWRlciA9IG5ldyBpYW0uQ2ZuT0lEQ1Byb3ZpZGVyKFxuICAgICAgICB0aGlzLFxuICAgICAgICBcIk9wZW5JZENvbm5lY3RQcm92aWRlclwiLFxuICAgICAgICB7XG4gICAgICAgICAgdXJsOiBcImh0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb21cIixcbiAgICAgICAgICBjbGllbnRJZExpc3Q6IFtcInN0cy5hbWF6b25hd3MuY29tXCJdLFxuICAgICAgICAgIC8vIE5PVEU6IFRoZSB0aHVtYnByaW50IGlzbid0IGFjdHVhbGx5IHVzZWQsIGJ1dCB0aGUgQVdTIEFQSSBzdGlsbCByZXF1aXJlcyB1cyB0byBzdXBwbHkgaXQuXG4gICAgICAgICAgLy8gTW9yZSBkZXRhaWxzIGhlcmU6IGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDI0MDEyMjE1NTc1OC9odHRwczovL2dpdGh1Yi5jb20vYXdzLWFjdGlvbnMvY29uZmlndXJlLWF3cy1jcmVkZW50aWFscy9pc3N1ZXMvMzU3I2lzc3VlY29tbWVudC0xNjI2MzU3MzMzXG4gICAgICAgICAgdGh1bWJwcmludExpc3Q6IFtcIjFjNThhM2E4NTE4ZTg3NTliZjA3NWI3NmI3NTBkNGYyZGYyNjRmY2RcIl0sXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgICBjb25zdCBvaWRjUHJvdmlkZXIgPVxuICAgICAgICBpYW0uT3BlbklkQ29ubmVjdFByb3ZpZGVyLmZyb21PcGVuSWRDb25uZWN0UHJvdmlkZXJBcm4oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBcIlByb3ZpZGVyXCIsXG4gICAgICAgICAgY2ZuT2lkY1Byb3ZpZGVyLnJlZixcbiAgICAgICAgKVxuICAgICAgY29uc3QgY3JlYXRlTGltaXRlZFJvbGUgPVxuICAgICAgICBwcm9wcy5naXRodWJBY3Rpb25zLmxpbWl0ZWRSb2xlQ29uZmlndXJhdGlvbj8uZW5hYmxlZCA/PyB0cnVlXG4gICAgICBjb25zdCByb2xlID0gbmV3IEdpdGh1YkFjdGlvbnNSb2xlKHRoaXMsIFwiR2l0aHViQWN0aW9uc1JvbGVcIiwge1xuICAgICAgICBvaWRjUHJvdmlkZXIsXG4gICAgICAgIHRydXN0ZWRPd25lcnMsXG4gICAgICAgIHJvbGVOYW1lOiBwcm9wcy5naXRodWJBY3Rpb25zLnJvbGVOYW1lID8/IFwiZ2l0aHViLWFjdGlvbnMtcm9sZVwiLFxuICAgICAgICB0cnVzdGVkQnJhbmNoOiBjcmVhdGVMaW1pdGVkUm9sZVxuICAgICAgICAgID8gKHByb3BzLmdpdGh1YkFjdGlvbnMuZGVmYXVsdEJyYW5jaCA/PyBcIm1hc3RlclwiKVxuICAgICAgICAgIDogLy8gTk9URTogSWYgdGhlIGxpbWl0ZWQgcm9sZSBpcyBkaXNhYmxlZCwgb25seSBvbmUgcm9sZSB3aWxsIGJlIGNyZWF0ZWRcbiAgICAgICAgICAgIC8vIGFuZCB0aGF0IHJvbGUgdGhlbiBuZWVkcyB0byBiZSBhc3N1bWFibGUgZnJvbSBhbGwgYnJhbmNoZXMuXG4gICAgICAgICAgICBcIipcIixcbiAgICAgICAgcmVwb3NpdG9yaWVzOiBwcm9wcy5naXRodWJBY3Rpb25zLnJlcG9zaXRvcmllcyxcbiAgICAgIH0pXG4gICAgICB0aGlzLnJvbGUgPSByb2xlLnJvbGVcbiAgICAgIHRoaXMucm9sZS5hZGRUb1BvbGljeShwb2xpY3lTdGF0ZW1lbnRzLmFsbG93UGlwZWxpbmVWYXJpYWJsZXModGhpcykpXG4gICAgICBidWNrZXQuZ3JhbnRQdXQodGhpcy5yb2xlKVxuICAgICAgZWNyUmVwby5ncmFudFB1bGxQdXNoKHRoaXMucm9sZSlcbiAgICAgIGlmIChjcmVhdGVMaW1pdGVkUm9sZSkge1xuICAgICAgICBjb25zdCBsaW1pdGVkUm9sZSA9IG5ldyBHaXRodWJBY3Rpb25zUm9sZShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIFwiR2l0aHViQWN0aW9uc0xpbWl0ZWRSb2xlXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgb2lkY1Byb3ZpZGVyLFxuICAgICAgICAgICAgdHJ1c3RlZE93bmVycyxcbiAgICAgICAgICAgIHJvbGVOYW1lOlxuICAgICAgICAgICAgICBwcm9wcy5naXRodWJBY3Rpb25zLmxpbWl0ZWRSb2xlQ29uZmlndXJhdGlvbj8ucm9sZU5hbWUgPz9cbiAgICAgICAgICAgICAgXCJnaXRodWItYWN0aW9ucy1saW1pdGVkLXJvbGVcIixcbiAgICAgICAgICAgIC8vIE5PVEU6IFRoZSBsaW1pdGVkIHJvbGUgY2FuIGJlIGFzc3VtZWQgZnJvbSBhbGwgYnJhbmNoZXMuXG4gICAgICAgICAgICB0cnVzdGVkQnJhbmNoOiBcIipcIixcbiAgICAgICAgICAgIHJlcG9zaXRvcmllczogcHJvcHMuZ2l0aHViQWN0aW9ucy5yZXBvc2l0b3JpZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgKVxuICAgICAgICB0aGlzLmxpbWl0ZWRSb2xlID0gbGltaXRlZFJvbGUucm9sZVxuICAgICAgICB0aGlzLmxpbWl0ZWRSb2xlLmFkZFRvUG9saWN5KFxuICAgICAgICAgIHBvbGljeVN0YXRlbWVudHMuYWxsb3dQaXBlbGluZVZhcmlhYmxlcyh0aGlzLCBcImRldipcIiksXG4gICAgICAgIClcbiAgICAgICAgdGhpcy5saW1pdGVkUm9sZS5hZGRUb1BvbGljeShcbiAgICAgICAgICBwb2xpY3lTdGF0ZW1lbnRzLmRlbnlQcm9kUGlwZWxpbmVzKHNjb3BlLCBidWNrZXQpLFxuICAgICAgICApXG4gICAgICAgIGJ1Y2tldC5ncmFudFB1dCh0aGlzLmxpbWl0ZWRSb2xlKVxuICAgICAgICBlY3JSZXBvLmdyYW50UHVsbFB1c2godGhpcy5saW1pdGVkUm9sZSlcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHByb3BzLmNpUm9sZU5hbWUpIHtcbiAgICAgIGNvbnN0IGxlZ2FjeVJvbGVGb3JKZW5raW5zID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiQ2lSb2xlXCIsIHtcbiAgICAgICAgcm9sZU5hbWU6IHByb3BzLmNpUm9sZU5hbWUsXG4gICAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5Bcm5QcmluY2lwYWwoXG4gICAgICAgICAgXCJhcm46YXdzOmlhbTo6OTIzNDAyMDk3MDQ2OnJvbGUvYnVpbGR0b29scy1qZW5raW5zLVJvbGVKZW5raW5zU2xhdmUtSlFHWUhSNVdFNkM1XCIsXG4gICAgICAgICksXG4gICAgICB9KVxuICAgICAgbGVnYWN5Um9sZUZvckplbmtpbnMuYWRkVG9Qb2xpY3koXG4gICAgICAgIHBvbGljeVN0YXRlbWVudHMuYWxsb3dQaXBlbGluZVZhcmlhYmxlcyh0aGlzKSxcbiAgICAgIClcbiAgICAgIGJ1Y2tldC5ncmFudFB1dChsZWdhY3lSb2xlRm9ySmVua2lucylcbiAgICAgIGVjclJlcG8uZ3JhbnRQdWxsUHVzaChsZWdhY3lSb2xlRm9ySmVua2lucylcbiAgICB9XG5cbiAgICBuZXcgY2RrLkNmbk91dHB1dCh0aGlzLCBcIkVjclJlcG9VcmlcIiwge1xuICAgICAgdmFsdWU6IGVjclJlcG8ucmVwb3NpdG9yeVVyaSxcbiAgICB9KVxuXG4gICAgbmV3IGNkay5DZm5PdXRwdXQodGhpcywgXCJCdWNrZXROYW1lXCIsIHtcbiAgICAgIHZhbHVlOiBidWNrZXQuYnVja2V0TmFtZSxcbiAgICB9KVxuXG4gICAgaWYgKHRoaXMucm9sZSkge1xuICAgICAgbmV3IGNkay5DZm5PdXRwdXQodGhpcywgXCJSb2xlQXJuXCIsIHtcbiAgICAgICAgdmFsdWU6IHRoaXMucm9sZS5yb2xlQXJuLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHRoaXMubGltaXRlZFJvbGUpIHtcbiAgICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsIFwiTGltaXRlZFJvbGVBcm5cIiwge1xuICAgICAgICB2YWx1ZTogdGhpcy5saW1pdGVkUm9sZS5yb2xlQXJuLFxuICAgICAgfSlcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const handler = async (event, context) => {
|
|
8
|
-
const s3Client = new client_s3_1.S3Client();
|
|
9
|
-
const codepipelineClient = new client_codepipeline_1.CodePipelineClient();
|
|
1
|
+
import { GetObjectCommand, S3Client } from "@aws-sdk/client-s3";
|
|
2
|
+
import { CodePipelineClient, PutJobFailureResultCommand, PutJobSuccessResultCommand, } from "@aws-sdk/client-codepipeline";
|
|
3
|
+
import { Upload } from "@aws-sdk/lib-storage";
|
|
4
|
+
export const handler = async (event, context) => {
|
|
5
|
+
const s3Client = new S3Client();
|
|
6
|
+
const codepipelineClient = new CodePipelineClient();
|
|
10
7
|
const jobId = event["CodePipeline.job"].id;
|
|
11
8
|
try {
|
|
12
9
|
const userParametersRaw = event["CodePipeline.job"].data.actionConfiguration.configuration
|
|
@@ -15,7 +12,7 @@ const handler = async (event, context) => {
|
|
|
15
12
|
console.log("Parsing user parameters");
|
|
16
13
|
const userParameters = JSON.parse(userParametersRaw);
|
|
17
14
|
console.log("Fetching reference data from S3");
|
|
18
|
-
const getReferenceDataResp = await s3Client.send(new
|
|
15
|
+
const getReferenceDataResp = await s3Client.send(new GetObjectCommand({
|
|
19
16
|
Bucket: userParameters.bucketName,
|
|
20
17
|
Key: userParameters.objectKey,
|
|
21
18
|
}));
|
|
@@ -25,7 +22,7 @@ const handler = async (event, context) => {
|
|
|
25
22
|
const outputArtifact = event["CodePipeline.job"].data.outputArtifacts[0];
|
|
26
23
|
const s3Loc = outputArtifact.location.s3Location;
|
|
27
24
|
console.log("Fetching Cloud Assembly ZIP data from S3");
|
|
28
|
-
const cloudAssemblyZipData = await s3Client.send(new
|
|
25
|
+
const cloudAssemblyZipData = await s3Client.send(new GetObjectCommand({
|
|
29
26
|
Bucket: cloudAssemblyReference.cloudAssemblyBucketName,
|
|
30
27
|
Key: cloudAssemblyReference.cloudAssemblyBucketKey,
|
|
31
28
|
}));
|
|
@@ -35,11 +32,11 @@ const handler = async (event, context) => {
|
|
|
35
32
|
if (artifactCreds === undefined) {
|
|
36
33
|
console.error("No artifact credentials found in job event");
|
|
37
34
|
}
|
|
38
|
-
const authedS3Client = new
|
|
35
|
+
const authedS3Client = new S3Client({
|
|
39
36
|
credentials: artifactCreds,
|
|
40
37
|
});
|
|
41
38
|
console.log(`Uploading Cloud Assembly ZIP to s3://${s3Loc.bucketName}/${s3Loc.objectKey}`);
|
|
42
|
-
const upload = new
|
|
39
|
+
const upload = new Upload({
|
|
43
40
|
client: authedS3Client,
|
|
44
41
|
params: {
|
|
45
42
|
Bucket: s3Loc.bucketName,
|
|
@@ -52,14 +49,14 @@ const handler = async (event, context) => {
|
|
|
52
49
|
});
|
|
53
50
|
await upload.done();
|
|
54
51
|
console.log("Sending success result to CodePipeline");
|
|
55
|
-
await codepipelineClient.send(new
|
|
52
|
+
await codepipelineClient.send(new PutJobSuccessResultCommand({
|
|
56
53
|
jobId,
|
|
57
54
|
}));
|
|
58
55
|
console.log("Success");
|
|
59
56
|
}
|
|
60
57
|
catch (e) {
|
|
61
58
|
console.log("Sending failure result to CodePipeline");
|
|
62
|
-
await codepipelineClient.send(new
|
|
59
|
+
await codepipelineClient.send(new PutJobFailureResultCommand({
|
|
63
60
|
failureDetails: {
|
|
64
61
|
message: JSON.stringify(e),
|
|
65
62
|
type: "JobFailed",
|
|
@@ -70,5 +67,4 @@ const handler = async (event, context) => {
|
|
|
70
67
|
console.error("Failed", e);
|
|
71
68
|
}
|
|
72
69
|
};
|
|
73
|
-
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtYXNzZW1ibHktbG9va3VwLWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2RrLXBpcGVsaW5lcy9jbG91ZC1hc3NlbWJseS1sb29rdXAtaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxrREFBK0Q7QUFDL0Qsc0VBSXFDO0FBQ3JDLHNEQUE2QztBQTBDdEMsTUFBTSxPQUFPLEdBQVksS0FBSyxFQUFFLEtBQXdCLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDMUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxvQkFBUSxFQUFFLENBQUE7SUFDL0IsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLHdDQUFrQixFQUFFLENBQUE7SUFFbkQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFBO0lBRTFDLElBQUksQ0FBQztRQUNILE1BQU0saUJBQWlCLEdBQ3JCLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhO2FBQzdELGNBQWMsQ0FBQTtRQUVuQixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLGlCQUFpQixDQUFDLENBQUE7UUFFakQsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO1FBQ3RDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQy9CLGlCQUFpQixDQUNtQixDQUFBO1FBRXRDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLENBQUMsQ0FBQTtRQUM5QyxNQUFNLG9CQUFvQixHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksQ0FDOUMsSUFBSSw0QkFBZ0IsQ0FBQztZQUNuQixNQUFNLEVBQUUsY0FBYyxDQUFDLFVBQVU7WUFDakMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxTQUFTO1NBQzlCLENBQUMsQ0FDSCxDQUFBO1FBQ0QsTUFBTSxhQUFhLEdBQ2pCLE1BQU0sb0JBQW9C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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBIYW5kbGVyIH0gZnJvbSBcImF3cy1sYW1iZGFcIlxuaW1wb3J0IHsgR2V0T2JqZWN0Q29tbWFuZCwgUzNDbGllbnQgfSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LXMzXCJcbmltcG9ydCB7XG4gIENvZGVQaXBlbGluZUNsaWVudCxcbiAgUHV0Sm9iRmFpbHVyZVJlc3VsdENvbW1hbmQsXG4gIFB1dEpvYlN1Y2Nlc3NSZXN1bHRDb21tYW5kLFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LWNvZGVwaXBlbGluZVwiXG5pbXBvcnQgeyBVcGxvYWQgfSBmcm9tIFwiQGF3cy1zZGsvbGliLXN0b3JhZ2VcIlxuXG4vLyBSZWxldmFudCBmaWVsZHMgZnJvbVxuLy8gaHR0cHM6Ly9kb2NzLmFtYXpvbmF3cy5jbi9lbl91cy9sYW1iZGEvbGF0ZXN0L2RnL3NlcnZpY2VzLWNvZGVwaXBlbGluZS5odG1sXG5pbnRlcmZhY2UgQ29kZVBpcGVsaW5lRXZlbnQge1xuICBcIkNvZGVQaXBlbGluZS5qb2JcIjoge1xuICAgIGlkOiBzdHJpbmdcbiAgICBkYXRhOiB7XG4gICAgICBhY3Rpb25Db25maWd1cmF0aW9uOiB7XG4gICAgICAgIGNvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAvLyBKU09OXG4gICAgICAgICAgVXNlclBhcmFtZXRlcnM6IHN0cmluZ1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBvdXRwdXRBcnRpZmFjdHM6IHtcbiAgICAgICAgbmFtZTogc3RyaW5nXG4gICAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgICAgczNMb2NhdGlvbjoge1xuICAgICAgICAgICAgYnVja2V0TmFtZTogc3RyaW5nXG4gICAgICAgICAgICBvYmplY3RLZXk6IHN0cmluZ1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVtdXG4gICAgICBhcnRpZmFjdENyZWRlbnRpYWxzOiB7XG4gICAgICAgIGFjY2Vzc0tleUlkOiBzdHJpbmdcbiAgICAgICAgc2VjcmV0QWNjZXNzS2V5OiBzdHJpbmdcbiAgICAgICAgc2Vzc2lvblRva2VuOiBzdHJpbmdcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuaW50ZXJmYWNlIENsb3VkQXNzZW1ibHlSZWZlcmVuY2Uge1xuICBjbG91ZEFzc2VtYmx5QnVja2V0TmFtZTogc3RyaW5nXG4gIGNsb3VkQXNzZW1ibHlCdWNrZXRLZXk6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsb3VkQXNzZW1ibHlMb29rdXBVc2VyUGFyYW1ldGVycyB7XG4gIGJ1Y2tldE5hbWU6IHN0cmluZ1xuICBvYmplY3RLZXk6IHN0cmluZ1xufVxuXG5leHBvcnQgY29uc3QgaGFuZGxlcjogSGFuZGxlciA9IGFzeW5jIChldmVudDogQ29kZVBpcGVsaW5lRXZlbnQsIGNvbnRleHQpID0+IHtcbiAgY29uc3QgczNDbGllbnQgPSBuZXcgUzNDbGllbnQoKVxuICBjb25zdCBjb2RlcGlwZWxpbmVDbGllbnQgPSBuZXcgQ29kZVBpcGVsaW5lQ2xpZW50KClcblxuICBjb25zdCBqb2JJZCA9IGV2ZW50W1wiQ29kZVBpcGVsaW5lLmpvYlwiXS5pZFxuXG4gIHRyeSB7XG4gICAgY29uc3QgdXNlclBhcmFtZXRlcnNSYXcgPVxuICAgICAgZXZlbnRbXCJDb2RlUGlwZWxpbmUuam9iXCJdLmRhdGEuYWN0aW9uQ29uZmlndXJhdGlvbi5jb25maWd1cmF0aW9uXG4gICAgICAgIC5Vc2VyUGFyYW1ldGVyc1xuXG4gICAgY29uc29sZS5sb2coXCJVc2VyIHBhcmFtZXRlcnNcIiwgdXNlclBhcmFtZXRlcnNSYXcpXG5cbiAgICBjb25zb2xlLmxvZyhcIlBhcnNpbmcgdXNlciBwYXJhbWV0ZXJzXCIpXG4gICAgY29uc3QgdXNlclBhcmFtZXRlcnMgPSBKU09OLnBhcnNlKFxuICAgICAgdXNlclBhcmFtZXRlcnNSYXcsXG4gICAgKSBhcyBDbG91ZEFzc2VtYmx5TG9va3VwVXNlclBhcmFtZXRlcnNcblxuICAgIGNvbnNvbGUubG9nKFwiRmV0Y2hpbmcgcmVmZXJlbmNlIGRhdGEgZnJvbSBTM1wiKVxuICAgIGNvbnN0IGdldFJlZmVyZW5jZURhdGFSZXNwID0gYXdhaXQgczNDbGllbnQuc2VuZChcbiAgICAgIG5ldyBHZXRPYmplY3RDb21tYW5kKHtcbiAgICAgICAgQnVja2V0OiB1c2VyUGFyYW1ldGVycy5idWNrZXROYW1lLFxuICAgICAgICBLZXk6IHVzZXJQYXJhbWV0ZXJzLm9iamVjdEtleSxcbiAgICAgIH0pLFxuICAgIClcbiAgICBjb25zdCByZWZlcmVuY2VEYXRhID1cbiAgICAgIGF3YWl0IGdldFJlZmVyZW5jZURhdGFSZXNwLkJvZHkhLnRyYW5zZm9ybVRvU3RyaW5nKFwidXRmLThcIilcblxuICAgIGNvbnNvbGUubG9nKFwiUGFyc2luZyByZWZlcmVuY2UgZGF0YSBmcm9tIFMzXCIpXG4gICAgY29uc3QgY2xvdWRBc3NlbWJseVJlZmVyZW5jZSA9IEpTT04ucGFyc2UoXG4gICAgICByZWZlcmVuY2VEYXRhLFxuICAgICkgYXMgQ2xvdWRBc3NlbWJseVJlZmVyZW5jZVxuXG4gICAgY29uc3Qgb3V0cHV0QXJ0aWZhY3QgPSBldmVudFtcIkNvZGVQaXBlbGluZS5qb2JcIl0uZGF0YS5vdXRwdXRBcnRpZmFjdHNbMF1cbiAgICBjb25zdCBzM0xvYyA9IG91dHB1dEFydGlmYWN0LmxvY2F0aW9uLnMzTG9jYXRpb25cblxuICAgIGNvbnNvbGUubG9nKFwiRmV0Y2hpbmcgQ2xvdWQgQXNzZW1ibHkgWklQIGRhdGEgZnJvbSBTM1wiKVxuICAgIGNvbnN0IGNsb3VkQXNzZW1ibHlaaXBEYXRhID0gYXdhaXQgczNDbGllbnQuc2VuZChcbiAgICAgIG5ldyBHZXRPYmplY3RDb21tYW5kKHtcbiAgICAgICAgQnVja2V0OiBjbG91ZEFzc2VtYmx5UmVmZXJlbmNlLmNsb3VkQXNzZW1ibHlCdWNrZXROYW1lLFxuICAgICAgICBLZXk6IGNsb3VkQXNzZW1ibHlSZWZlcmVuY2UuY2xvdWRBc3NlbWJseUJ1Y2tldEtleSxcbiAgICAgIH0pLFxuICAgIClcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIFwiQ29udGVudC1MZW5ndGggb2YgQ2xvdWQgQXNzZW1ibHkgKGJ5dGVzKVwiLFxuICAgICAgY2xvdWRBc3NlbWJseVppcERhdGEuQ29udGVudExlbmd0aCxcbiAgICApXG5cbiAgICBjb25zb2xlLmxvZyhcIkNyZWF0aW5nIGF1dGhlbnRpY2F0ZWQgUzMgY2xpZW50IGZvciBhcnRpZmFjdCB1cGxvYWRcIilcbiAgICBjb25zdCBhcnRpZmFjdENyZWRzID0gZXZlbnRbXCJDb2RlUGlwZWxpbmUuam9iXCJdLmRhdGEuYXJ0aWZhY3RDcmVkZW50aWFsc1xuICAgIGlmIChhcnRpZmFjdENyZWRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJObyBhcnRpZmFjdCBjcmVkZW50aWFscyBmb3VuZCBpbiBqb2IgZXZlbnRcIilcbiAgICB9XG4gICAgY29uc3QgYXV0aGVkUzNDbGllbnQgPSBuZXcgUzNDbGllbnQoe1xuICAgICAgY3JlZGVudGlhbHM6IGFydGlmYWN0Q3JlZHMsXG4gICAgfSlcblxuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYFVwbG9hZGluZyBDbG91ZCBBc3NlbWJseSBaSVAgdG8gczM6Ly8ke3MzTG9jLmJ1Y2tldE5hbWV9LyR7czNMb2Mub2JqZWN0S2V5fWAsXG4gICAgKVxuXG4gICAgY29uc3QgdXBsb2FkID0gbmV3IFVwbG9hZCh7XG4gICAgICBjbGllbnQ6IGF1dGhlZFMzQ2xpZW50LFxuICAgICAgcGFyYW1zOiB7XG4gICAgICAgIEJ1Y2tldDogczNMb2MuYnVja2V0TmFtZSxcbiAgICAgICAgS2V5OiBzM0xvYy5vYmplY3RLZXksXG4gICAgICAgIEJvZHk6IGNsb3VkQXNzZW1ibHlaaXBEYXRhLkJvZHksXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICB1cGxvYWQub24oXCJodHRwVXBsb2FkUHJvZ3Jlc3NcIiwgKHByb2dyZXNzKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhwcm9ncmVzcylcbiAgICB9KVxuXG4gICAgYXdhaXQgdXBsb2FkLmRvbmUoKVxuXG4gICAgY29uc29sZS5sb2coXCJTZW5kaW5nIHN1Y2Nlc3MgcmVzdWx0IHRvIENvZGVQaXBlbGluZVwiKVxuICAgIGF3YWl0IGNvZGVwaXBlbGluZUNsaWVudC5zZW5kKFxuICAgICAgbmV3IFB1dEpvYlN1Y2Nlc3NSZXN1bHRDb21tYW5kKHtcbiAgICAgICAgam9iSWQsXG4gICAgICB9KSxcbiAgICApXG4gICAgY29uc29sZS5sb2coXCJTdWNjZXNzXCIpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZyhcIlNlbmRpbmcgZmFpbHVyZSByZXN1bHQgdG8gQ29kZVBpcGVsaW5lXCIpXG4gICAgYXdhaXQgY29kZXBpcGVsaW5lQ2xpZW50LnNlbmQoXG4gICAgICBuZXcgUHV0Sm9iRmFpbHVyZVJlc3VsdENvbW1hbmQoe1xuICAgICAgICBmYWlsdXJlRGV0YWlsczoge1xuICAgICAgICAgIG1lc3NhZ2U6IEpTT04uc3RyaW5naWZ5KGUpLFxuICAgICAgICAgIHR5cGU6IFwiSm9iRmFpbGVkXCIsXG4gICAgICAgICAgZXh0ZXJuYWxFeGVjdXRpb25JZDogY29udGV4dC5hd3NSZXF1ZXN0SWQsXG4gICAgICAgIH0sXG4gICAgICAgIGpvYklkLFxuICAgICAgfSksXG4gICAgKVxuICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWRcIiwgZSlcbiAgfVxufVxuIl19
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtYXNzZW1ibHktbG9va3VwLWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2RrLXBpcGVsaW5lcy9jbG91ZC1hc3NlbWJseS1sb29rdXAtaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDL0QsT0FBTyxFQUNMLGtCQUFrQixFQUNsQiwwQkFBMEIsRUFDMUIsMEJBQTBCLEdBQzNCLE1BQU0sOEJBQThCLENBQUE7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBMEM3QyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQVksS0FBSyxFQUFFLEtBQXdCLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDMUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQTtJQUMvQixNQUFNLGtCQUFrQixHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQTtJQUVuRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFFMUMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxpQkFBaUIsR0FDckIsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWE7YUFDN0QsY0FBYyxDQUFBO1FBRW5CLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTtRQUVqRCxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUE7UUFDdEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDL0IsaUJBQWlCLENBQ21CLENBQUE7UUFFdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFBO1FBQzlDLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxD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O1lBQ0QsS0FBSztTQUNOLENBQUMsQ0FDSCxDQUFBO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDNUIsQ0FBQztBQUNILENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSGFuZGxlciB9IGZyb20gXCJhd3MtbGFtYmRhXCJcbmltcG9ydCB7IEdldE9iamVjdENvbW1hbmQsIFMzQ2xpZW50IH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zM1wiXG5pbXBvcnQge1xuICBDb2RlUGlwZWxpbmVDbGllbnQsXG4gIFB1dEpvYkZhaWx1cmVSZXN1bHRDb21tYW5kLFxuICBQdXRKb2JTdWNjZXNzUmVzdWx0Q29tbWFuZCxcbn0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1jb2RlcGlwZWxpbmVcIlxuaW1wb3J0IHsgVXBsb2FkIH0gZnJvbSBcIkBhd3Mtc2RrL2xpYi1zdG9yYWdlXCJcblxuLy8gUmVsZXZhbnQgZmllbGRzIGZyb21cbi8vIGh0dHBzOi8vZG9jcy5hbWF6b25hd3MuY24vZW5fdXMvbGFtYmRhL2xhdGVzdC9kZy9zZXJ2aWNlcy1jb2RlcGlwZWxpbmUuaHRtbFxuaW50ZXJmYWNlIENvZGVQaXBlbGluZUV2ZW50IHtcbiAgXCJDb2RlUGlwZWxpbmUuam9iXCI6IHtcbiAgICBpZDogc3RyaW5nXG4gICAgZGF0YToge1xuICAgICAgYWN0aW9uQ29uZmlndXJhdGlvbjoge1xuICAgICAgICBjb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgLy8gSlNPTlxuICAgICAgICAgIFVzZXJQYXJhbWV0ZXJzOiBzdHJpbmdcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgb3V0cHV0QXJ0aWZhY3RzOiB7XG4gICAgICAgIG5hbWU6IHN0cmluZ1xuICAgICAgICBsb2NhdGlvbjoge1xuICAgICAgICAgIHMzTG9jYXRpb246IHtcbiAgICAgICAgICAgIGJ1Y2tldE5hbWU6IHN0cmluZ1xuICAgICAgICAgICAgb2JqZWN0S2V5OiBzdHJpbmdcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1bXVxuICAgICAgYXJ0aWZhY3RDcmVkZW50aWFsczoge1xuICAgICAgICBhY2Nlc3NLZXlJZDogc3RyaW5nXG4gICAgICAgIHNlY3JldEFjY2Vzc0tleTogc3RyaW5nXG4gICAgICAgIHNlc3Npb25Ub2tlbjogc3RyaW5nXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmludGVyZmFjZSBDbG91ZEFzc2VtYmx5UmVmZXJlbmNlIHtcbiAgY2xvdWRBc3NlbWJseUJ1Y2tldE5hbWU6IHN0cmluZ1xuICBjbG91ZEFzc2VtYmx5QnVja2V0S2V5OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbG91ZEFzc2VtYmx5TG9va3VwVXNlclBhcmFtZXRlcnMge1xuICBidWNrZXROYW1lOiBzdHJpbmdcbiAgb2JqZWN0S2V5OiBzdHJpbmdcbn1cblxuZXhwb3J0IGNvbnN0IGhhbmRsZXI6IEhhbmRsZXIgPSBhc3luYyAoZXZlbnQ6IENvZGVQaXBlbGluZUV2ZW50LCBjb250ZXh0KSA9PiB7XG4gIGNvbnN0IHMzQ2xpZW50ID0gbmV3IFMzQ2xpZW50KClcbiAgY29uc3QgY29kZXBpcGVsaW5lQ2xpZW50ID0gbmV3IENvZGVQaXBlbGluZUNsaWVudCgpXG5cbiAgY29uc3Qgam9iSWQgPSBldmVudFtcIkNvZGVQaXBlbGluZS5qb2JcIl0uaWRcblxuICB0cnkge1xuICAgIGNvbnN0IHVzZXJQYXJhbWV0ZXJzUmF3ID1cbiAgICAgIGV2ZW50W1wiQ29kZVBpcGVsaW5lLmpvYlwiXS5kYXRhLmFjdGlvbkNvbmZpZ3VyYXRpb24uY29uZmlndXJhdGlvblxuICAgICAgICAuVXNlclBhcmFtZXRlcnNcblxuICAgIGNvbnNvbGUubG9nKFwiVXNlciBwYXJhbWV0ZXJzXCIsIHVzZXJQYXJhbWV0ZXJzUmF3KVxuXG4gICAgY29uc29sZS5sb2coXCJQYXJzaW5nIHVzZXIgcGFyYW1ldGVyc1wiKVxuICAgIGNvbnN0IHVzZXJQYXJhbWV0ZXJzID0gSlNPTi5wYXJzZShcbiAgICAgIHVzZXJQYXJhbWV0ZXJzUmF3LFxuICAgICkgYXMgQ2xvdWRBc3NlbWJseUxvb2t1cFVzZXJQYXJhbWV0ZXJzXG5cbiAgICBjb25zb2xlLmxvZyhcIkZldGNoaW5nIHJlZmVyZW5jZSBkYXRhIGZyb20gUzNcIilcbiAgICBjb25zdCBnZXRSZWZlcmVuY2VEYXRhUmVzcCA9IGF3YWl0IHMzQ2xpZW50LnNlbmQoXG4gICAgICBuZXcgR2V0T2JqZWN0Q29tbWFuZCh7XG4gICAgICAgIEJ1Y2tldDogdXNlclBhcmFtZXRlcnMuYnVja2V0TmFtZSxcbiAgICAgICAgS2V5OiB1c2VyUGFyYW1ldGVycy5vYmplY3RLZXksXG4gICAgICB9KSxcbiAgICApXG4gICAgY29uc3QgcmVmZXJlbmNlRGF0YSA9XG4gICAgICBhd2FpdCBnZXRSZWZlcmVuY2VEYXRhUmVzcC5Cb2R5IS50cmFuc2Zvcm1Ub1N0cmluZyhcInV0Zi04XCIpXG5cbiAgICBjb25zb2xlLmxvZyhcIlBhcnNpbmcgcmVmZXJlbmNlIGRhdGEgZnJvbSBTM1wiKVxuICAgIGNvbnN0IGNsb3VkQXNzZW1ibHlSZWZlcmVuY2UgPSBKU09OLnBhcnNlKFxuICAgICAgcmVmZXJlbmNlRGF0YSxcbiAgICApIGFzIENsb3VkQXNzZW1ibHlSZWZlcmVuY2VcblxuICAgIGNvbnN0IG91dHB1dEFydGlmYWN0ID0gZXZlbnRbXCJDb2RlUGlwZWxpbmUuam9iXCJdLmRhdGEub3V0cHV0QXJ0aWZhY3RzWzBdXG4gICAgY29uc3QgczNMb2MgPSBvdXRwdXRBcnRpZmFjdC5sb2NhdGlvbi5zM0xvY2F0aW9uXG5cbiAgICBjb25zb2xlLmxvZyhcIkZldGNoaW5nIENsb3VkIEFzc2VtYmx5IFpJUCBkYXRhIGZyb20gUzNcIilcbiAgICBjb25zdCBjbG91ZEFzc2VtYmx5WmlwRGF0YSA9IGF3YWl0IHMzQ2xpZW50LnNlbmQoXG4gICAgICBuZXcgR2V0T2JqZWN0Q29tbWFuZCh7XG4gICAgICAgIEJ1Y2tldDogY2xvdWRBc3NlbWJseVJlZmVyZW5jZS5jbG91ZEFzc2VtYmx5QnVja2V0TmFtZSxcbiAgICAgICAgS2V5OiBjbG91ZEFzc2VtYmx5UmVmZXJlbmNlLmNsb3VkQXNzZW1ibHlCdWNrZXRLZXksXG4gICAgICB9KSxcbiAgICApXG4gICAgY29uc29sZS5sb2coXG4gICAgICBcIkNvbnRlbnQtTGVuZ3RoIG9mIENsb3VkIEFzc2VtYmx5IChieXRlcylcIixcbiAgICAgIGNsb3VkQXNzZW1ibHlaaXBEYXRhLkNvbnRlbnRMZW5ndGgsXG4gICAgKVxuXG4gICAgY29uc29sZS5sb2coXCJDcmVhdGluZyBhdXRoZW50aWNhdGVkIFMzIGNsaWVudCBmb3IgYXJ0aWZhY3QgdXBsb2FkXCIpXG4gICAgY29uc3QgYXJ0aWZhY3RDcmVkcyA9IGV2ZW50W1wiQ29kZVBpcGVsaW5lLmpvYlwiXS5kYXRhLmFydGlmYWN0Q3JlZGVudGlhbHNcbiAgICBpZiAoYXJ0aWZhY3RDcmVkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiTm8gYXJ0aWZhY3QgY3JlZGVudGlhbHMgZm91bmQgaW4gam9iIGV2ZW50XCIpXG4gICAgfVxuICAgIGNvbnN0IGF1dGhlZFMzQ2xpZW50ID0gbmV3IFMzQ2xpZW50KHtcbiAgICAgIGNyZWRlbnRpYWxzOiBhcnRpZmFjdENyZWRzLFxuICAgIH0pXG5cbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGBVcGxvYWRpbmcgQ2xvdWQgQXNzZW1ibHkgWklQIHRvIHMzOi8vJHtzM0xvYy5idWNrZXROYW1lfS8ke3MzTG9jLm9iamVjdEtleX1gLFxuICAgIClcblxuICAgIGNvbnN0IHVwbG9hZCA9IG5ldyBVcGxvYWQoe1xuICAgICAgY2xpZW50OiBhdXRoZWRTM0NsaWVudCxcbiAgICAgIHBhcmFtczoge1xuICAgICAgICBCdWNrZXQ6IHMzTG9jLmJ1Y2tldE5hbWUsXG4gICAgICAgIEtleTogczNMb2Mub2JqZWN0S2V5LFxuICAgICAgICBCb2R5OiBjbG91ZEFzc2VtYmx5WmlwRGF0YS5Cb2R5LFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgdXBsb2FkLm9uKFwiaHR0cFVwbG9hZFByb2dyZXNzXCIsIChwcm9ncmVzcykgPT4ge1xuICAgICAgY29uc29sZS5sb2cocHJvZ3Jlc3MpXG4gICAgfSlcblxuICAgIGF3YWl0IHVwbG9hZC5kb25lKClcblxuICAgIGNvbnNvbGUubG9nKFwiU2VuZGluZyBzdWNjZXNzIHJlc3VsdCB0byBDb2RlUGlwZWxpbmVcIilcbiAgICBhd2FpdCBjb2RlcGlwZWxpbmVDbGllbnQuc2VuZChcbiAgICAgIG5ldyBQdXRKb2JTdWNjZXNzUmVzdWx0Q29tbWFuZCh7XG4gICAgICAgIGpvYklkLFxuICAgICAgfSksXG4gICAgKVxuICAgIGNvbnNvbGUubG9nKFwiU3VjY2Vzc1wiKVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5sb2coXCJTZW5kaW5nIGZhaWx1cmUgcmVzdWx0IHRvIENvZGVQaXBlbGluZVwiKVxuICAgIGF3YWl0IGNvZGVwaXBlbGluZUNsaWVudC5zZW5kKFxuICAgICAgbmV3IFB1dEpvYkZhaWx1cmVSZXN1bHRDb21tYW5kKHtcbiAgICAgICAgZmFpbHVyZURldGFpbHM6IHtcbiAgICAgICAgICBtZXNzYWdlOiBKU09OLnN0cmluZ2lmeShlKSxcbiAgICAgICAgICB0eXBlOiBcIkpvYkZhaWxlZFwiLFxuICAgICAgICAgIGV4dGVybmFsRXhlY3V0aW9uSWQ6IGNvbnRleHQuYXdzUmVxdWVzdElkLFxuICAgICAgICB9LFxuICAgICAgICBqb2JJZCxcbiAgICAgIH0pLFxuICAgIClcbiAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkXCIsIGUpXG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
export { LifligCdkPipeline
|
|
2
|
-
export { SlackNotification
|
|
1
|
+
export { LifligCdkPipeline } from "./liflig-cdk-pipeline";
|
|
2
|
+
export { SlackNotification } from "./slack-notification";
|
|
3
3
|
export { getVariable } from "./variables";
|
|
4
|
+
export type { LifligCdkPipelineProps } from "./liflig-cdk-pipeline";
|
|
5
|
+
export type { SlackNotificationProps } from "./slack-notification";
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "LifligCdkPipeline", { enumerable: true, get: function () { return liflig_cdk_pipeline_1.LifligCdkPipeline; } });
|
|
6
|
-
var slack_notification_1 = require("./slack-notification");
|
|
7
|
-
Object.defineProperty(exports, "SlackNotification", { enumerable: true, get: function () { return slack_notification_1.SlackNotification; } });
|
|
8
|
-
var variables_1 = require("./variables");
|
|
9
|
-
Object.defineProperty(exports, "getVariable", { enumerable: true, get: function () { return variables_1.getVariable; } });
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2RrLXBpcGVsaW5lcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2REFHOEI7QUFGNUIsd0hBQUEsaUJBQWlCLE9BQUE7QUFHbkIsMkRBQWdGO0FBQXZFLHVIQUFBLGlCQUFpQixPQUFBO0FBQzFCLHlDQUF5QztBQUFoQyx3R0FBQSxXQUFXLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBMaWZsaWdDZGtQaXBlbGluZSxcbiAgTGlmbGlnQ2RrUGlwZWxpbmVQcm9wcyxcbn0gZnJvbSBcIi4vbGlmbGlnLWNkay1waXBlbGluZVwiXG5leHBvcnQgeyBTbGFja05vdGlmaWNhdGlvbiwgU2xhY2tOb3RpZmljYXRpb25Qcm9wcyB9IGZyb20gXCIuL3NsYWNrLW5vdGlmaWNhdGlvblwiXG5leHBvcnQgeyBnZXRWYXJpYWJsZSB9IGZyb20gXCIuL3ZhcmlhYmxlc1wiXG4iXX0=
|
|
1
|
+
export { LifligCdkPipeline } from "./liflig-cdk-pipeline";
|
|
2
|
+
export { SlackNotification } from "./slack-notification";
|
|
3
|
+
export { getVariable } from "./variables";
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2RrLXBpcGVsaW5lcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgTGlmbGlnQ2RrUGlwZWxpbmUgfSBmcm9tIFwiLi9saWZsaWctY2RrLXBpcGVsaW5lXCJcbmV4cG9ydCB7IFNsYWNrTm90aWZpY2F0aW9uIH0gZnJvbSBcIi4vc2xhY2stbm90aWZpY2F0aW9uXCJcbmV4cG9ydCB7IGdldFZhcmlhYmxlIH0gZnJvbSBcIi4vdmFyaWFibGVzXCJcbmV4cG9ydCB0eXBlIHsgTGlmbGlnQ2RrUGlwZWxpbmVQcm9wcyB9IGZyb20gXCIuL2xpZmxpZy1jZGstcGlwZWxpbmVcIlxuZXhwb3J0IHR5cGUgeyBTbGFja05vdGlmaWNhdGlvblByb3BzIH0gZnJvbSBcIi4vc2xhY2stbm90aWZpY2F0aW9uXCJcbiJdfQ==
|
|
@@ -1,19 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const
|
|
1
|
+
import * as constructs from "constructs";
|
|
2
|
+
import * as codepipeline from "aws-cdk-lib/aws-codepipeline";
|
|
3
|
+
import * as codepipelineActions from "aws-cdk-lib/aws-codepipeline-actions";
|
|
4
|
+
import * as iam from "aws-cdk-lib/aws-iam";
|
|
5
|
+
import * as lambda from "aws-cdk-lib/aws-lambda";
|
|
6
|
+
import * as events from "aws-cdk-lib/aws-events";
|
|
7
|
+
import * as targets from "aws-cdk-lib/aws-events-targets";
|
|
8
|
+
import * as cdk from "aws-cdk-lib";
|
|
9
|
+
import * as pipelines from "aws-cdk-lib/pipelines";
|
|
10
|
+
import * as fs from "fs";
|
|
11
|
+
import * as path from "path";
|
|
12
|
+
import { fileURLToPath } from "node:url";
|
|
13
|
+
import { SlackNotification } from "./slack-notification";
|
|
14
|
+
import { NodejsFunction } from "aws-cdk-lib/aws-lambda-nodejs";
|
|
15
|
+
import { createRequire } from "node:module";
|
|
16
|
+
const require = createRequire(import.meta.url);
|
|
17
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
18
|
+
const __dirname = path.dirname(__filename);
|
|
17
19
|
/**
|
|
18
20
|
* CDK Pipeline for Liflig.
|
|
19
21
|
*
|
|
@@ -54,7 +56,7 @@ const aws_lambda_nodejs_1 = require("aws-cdk-lib/aws-lambda-nodejs");
|
|
|
54
56
|
* Variables enables separation of IaC code and application code if
|
|
55
57
|
* they are not colocated in the same repository.
|
|
56
58
|
*/
|
|
57
|
-
class LifligCdkPipeline extends constructs.Construct {
|
|
59
|
+
export class LifligCdkPipeline extends constructs.Construct {
|
|
58
60
|
/**
|
|
59
61
|
* Path on S3 for pipeline configuration.
|
|
60
62
|
*/
|
|
@@ -69,8 +71,11 @@ class LifligCdkPipeline extends constructs.Construct {
|
|
|
69
71
|
static pipelineS3TriggerKey(pipelineName) {
|
|
70
72
|
return `pipelines/${pipelineName}/trigger`;
|
|
71
73
|
}
|
|
74
|
+
cdkPipeline;
|
|
75
|
+
codePipeline;
|
|
76
|
+
artifactsBucket;
|
|
77
|
+
triggerObjectKey;
|
|
72
78
|
constructor(scope, id, props) {
|
|
73
|
-
var _a;
|
|
74
79
|
super(scope, id);
|
|
75
80
|
this.artifactsBucket = props.artifactsBucket;
|
|
76
81
|
const cloudAssemblyArtifact = new codepipeline.Artifact();
|
|
@@ -83,7 +88,7 @@ class LifligCdkPipeline extends constructs.Construct {
|
|
|
83
88
|
stages = cloudAssembly.stages;
|
|
84
89
|
break;
|
|
85
90
|
case "cdk-source":
|
|
86
|
-
const cdkSource = this.cdkSourceStage(cloudAssemblyArtifact, this.artifactsBucket, props.pipelineName,
|
|
91
|
+
const cdkSource = this.cdkSourceStage(cloudAssemblyArtifact, this.artifactsBucket, props.pipelineName, props.parametersNamespace ?? "default");
|
|
87
92
|
synth = cdkSource.synth;
|
|
88
93
|
stages = cdkSource.stages;
|
|
89
94
|
break;
|
|
@@ -92,6 +97,7 @@ class LifligCdkPipeline extends constructs.Construct {
|
|
|
92
97
|
this.triggerObjectKey = LifligCdkPipeline.pipelineS3TriggerKey(props.pipelineName);
|
|
93
98
|
this.codePipeline = new codepipeline.Pipeline(this, "CodePipeline", {
|
|
94
99
|
pipelineName: props.pipelineName,
|
|
100
|
+
pipelineType: codepipeline.PipelineType.V1,
|
|
95
101
|
stages: [
|
|
96
102
|
{
|
|
97
103
|
stageName: "Source",
|
|
@@ -146,8 +152,8 @@ class LifligCdkPipeline extends constructs.Construct {
|
|
|
146
152
|
return undefined;
|
|
147
153
|
}
|
|
148
154
|
cloudAssemblyStage(cloudAssemblyArtifact, cdkBucket, pipelineName) {
|
|
149
|
-
const cloudAssemblyLookupFn = new
|
|
150
|
-
entry: require.resolve(
|
|
155
|
+
const cloudAssemblyLookupFn = new NodejsFunction(this, "CloudAssemblyLookupFn", {
|
|
156
|
+
entry: require.resolve(`${__dirname}/cloud-assembly-lookup-handler`),
|
|
151
157
|
runtime: lambda.Runtime.NODEJS_18_X,
|
|
152
158
|
timeout: cdk.Duration.minutes(1),
|
|
153
159
|
memorySize: 512,
|
|
@@ -219,7 +225,7 @@ class LifligCdkPipeline extends constructs.Construct {
|
|
|
219
225
|
return { stages, synth };
|
|
220
226
|
}
|
|
221
227
|
addSlackNotification(props) {
|
|
222
|
-
new
|
|
228
|
+
new SlackNotification(this, "Slack", {
|
|
223
229
|
pipeline: this.codePipeline,
|
|
224
230
|
artifactsBucket: this.artifactsBucket,
|
|
225
231
|
triggerObjectKey: this.triggerObjectKey,
|
|
@@ -227,5 +233,4 @@ class LifligCdkPipeline extends constructs.Construct {
|
|
|
227
233
|
});
|
|
228
234
|
}
|
|
229
235
|
}
|
|
230
|
-
exports.LifligCdkPipeline = LifligCdkPipeline;
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmbGlnLWNkay1waXBlbGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jZGstcGlwZWxpbmVzL2xpZmxpZy1jZGstcGlwZWxpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXdDO0FBQ3hDLDZEQUE0RDtBQUM1RCw0RUFBMkU7QUFDM0UsMkNBQTBDO0FBQzFDLGlEQUFnRDtBQUNoRCxpREFBZ0Q7QUFDaEQsMERBQXlEO0FBRXpELG1DQUFrQztBQUNsQyxtREFBa0Q7QUFDbEQseUJBQXdCO0FBQ3hCLDZCQUE0QjtBQUU1Qiw2REFBZ0Y7QUFDaEYscUVBQThEO0FBNkM5RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUNHO0FBQ0gsTUFBYSxpQkFBa0IsU0FBUSxVQUFVLENBQUMsU0FBUztJQUN6RDs7T0FFRztJQUNILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFvQjtRQUMxQyxPQUFPLGFBQWEsWUFBWSxHQUFHLENBQUE7SUFDckMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsb0JBQW9CLENBQUMsWUFBb0I7UUFDOUMsT0FBTyxhQUFhLFlBQVksVUFBVSxDQUFBO0lBQzVDLENBQUM7SUFPRCxZQUNFLEtBQTJCLEVBQzNCLEVBQVUsRUFDVixLQUE2Qjs7UUFFN0IsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUE7UUFFNUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQTtRQUV6RCxJQUFJLEtBQWlDLENBQUE7UUFDckMsSUFBSSxNQUFpQyxDQUFBO1FBRXJDLFFBQVEsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3pCLEtBQUssZ0JBQWdCO2dCQUNuQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQzND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UUFFckQsTUFBTSxjQUFjLEdBQW1DO1lBQ3JELFVBQVUsRUFBRSxTQUFTLENBQUMsVUFBVTtZQUNoQyxNQUFNLEVBQUUsYUFBYSxZQUFZLEdBQUc7WUFDcEMsbUJBQW1CLEVBQUUsbUJBQW1CO1NBQ3pDLENBQUE7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsdUJBQXVCLEVBQUU7WUFDN0QsS0FBSyxFQUFFLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUM7WUFDcEUsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO1lBQzNCLFFBQVEsRUFBRSxDQUFDLGVBQWUsQ0FBQztTQUM1QixDQUFDLENBQUE7UUFDRixNQUFNLE1BQU0sR0FBRztZQUNiO2dCQUNFLFNBQVMsRUFBRSxrQkFBa0I7Z0JBQzdCLE9BQU8sRUFBRTtvQkFDUCxJQUFJLG1CQUFtQixDQUFDLGtCQUFrQixDQUFDO3dCQUN6QyxVQUFVLEVBQUUsb0JBQW9CO3dCQUNoQyxNQUFNLEVBQUUsa0JBQWtCO3dCQUMxQixPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQzt3QkFDNUIsY0FBYztxQkFDZixDQUFDO2lCQUNIO2FBQ0Y7U0FDRixDQUFBO1FBQ0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0lBRUQsb0JBQW9CLENBQ2xCLEtBR0M7UUFFRCxJQUFJLHNDQUFpQixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUU7WUFDbkMsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQzNCLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNyQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQ3ZDLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRjtBQWxQRCw4Q0FrUEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCAqIGFzIGNvZGVwaXBlbGluZSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZGVwaXBlbGluZVwiXG5pbXBvcnQgKiBhcyBjb2RlcGlwZWxpbmVBY3Rpb25zIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29kZXBpcGVsaW5lLWFjdGlvbnNcIlxuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCJcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiXG5pbXBvcnQgKiBhcyBldmVudHMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1ldmVudHNcIlxuaW1wb3J0ICogYXMgdGFyZ2V0cyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzXCJcbmltcG9ydCAqIGFzIHMzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIlxuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgKiBhcyBwaXBlbGluZXMgZnJvbSBcImF3cy1jZGstbGliL3BpcGVsaW5lc1wiXG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIlxuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgeyBDbG91ZEFzc2VtYmx5TG9va3VwVXNlclBhcmFtZXRlcnMgfSBmcm9tIFwiLi9jbG91ZC1hc3NlbWJseS1sb29rdXAtaGFuZGxlclwiXG5pbXBvcnQgeyBTbGFja05vdGlmaWNhdGlvbiwgU2xhY2tOb3RpZmljYXRpb25Qcm9wcyB9IGZyb20gXCIuL3NsYWNrLW5vdGlmaWNhdGlvblwiXG5pbXBvcnQgeyBOb2RlanNGdW5jdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlmbGlnQ2RrUGlwZWxpbmVQcm9wcyB7XG4gIC8qKlxuICAgKiBCdWNrZXQgaG9sZGluZyBwaXBlbGluZSBjb25maWd1cmF0aW9uIGFuZCB0cmlnZ2VyIGZpbGUuXG4gICAqL1xuICBhcnRpZmFjdHNCdWNrZXQ6IHMzLklCdWNrZXRcbiAgLyoqXG4gICAqIE5hbWUgb2YgcGlwZWxpbmUuIFRoaXMgaXMgdXNlZCBmb3IgdGhlIHBhdGggd2hlcmUgY29uZmlndXJhdGlvblxuICAgKiBpcyBzdG9yZWQgaW4gUzMuXG4gICAqL1xuICBwaXBlbGluZU5hbWU6IHN0cmluZ1xuICAvKipcbiAgICogVHlwZSBvZiB1cGxvYWRlZCBhcnRpZmFjdC4gVGhpcyBjaGFuZ2VzIHRoZSBiZWhhdmlvdXIgb2YgdGhlXG4gICAqIHBpcGVsaW5lIGFuZCB3aGF0IGtpbmQgb2YgcHJvY2VzcyBpdCBwZXJmb3Jtcy5cbiAgICpcbiAgICogVHdvIHR5cGVzIGFyZSBzdXBwb3J0ZWQ6XG4gICAqXG4gICAqICAgLSBjZGstc291cmNlOiBUaGUgdXBsb2FkZWQgYXJ0aWZhY3QgcmVwcmVzZW50cyBhIENESyBhcHBsaWNhdGlvblxuICAgKiAgICAgYXMgc291cmNlIGNvZGUuIEEgYnVpbGQgc3RlcCB3aWxsIGNvbXBpbGUgdGhpcyBpbnRvIGFcbiAgICogICAgIENESyBDbG91ZCBBc3NlbWJseS5cbiAgICpcbiAgICogICAgIEFzIHBhcnQgb2Ygc3ludGhlc2l6aW5nIHRoaXMgaW50byBhIENESyBDbG91ZCBBc3NlbWJseSxcbiAgICogICAgIGEgZmlsZSBcInZhcmlhYmxlcy5qc29uXCIgd2lsbCBiZSB3cml0dGVuIGZvciB0aGVcbiAgICogICAgIENESyBhcHBsaWNhdGlvbiB0byBwYXJhbWV0ZXJpemUgdGhlIGJ1aWxkIGlmIGFueVxuICAgKiAgICAgdmFyaWFibGVzIGFyZSBmb3VuZCBpbiB0aGUgcGlwZWxpbmUgc291cmNlLlxuICAgKlxuICAgKiAgIC0gY2xvdWQtYXNzZW1ibHk6IFRoZSB1cGxvYWRlZCBhcnRpZmFjdCByZXByZXNlbnRzIGFcbiAgICogICAgIENESyBDbG91ZCBBc3NlbWJseSB3aGljaCBpcyByZWFkeSBmb3IgZGVwbG95bWVudC5cbiAgICpcbiAgICogICAgIFRoaXMgZG9lcyBub3Qgc3VwcG9ydCByZWFkaW5nIHZhcmlhYmxlcyBhdCB0aGUgY3VycmVudCB0aW1lXG4gICAqICAgICBzaW5jZSBDREsgUGlwZWxpbmVzIGRvbid0IHN1cHBvcnQgcGFyYW1ldGVyaXplZCBkZXBsb3lzLlxuICAgKiAgICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9pc3N1ZXMvOTU2MFxuICAgKi9cbiAgc291cmNlVHlwZTogXCJjZGstc291cmNlXCIgfCBcImNsb3VkLWFzc2VtYmx5XCJcbiAgLyoqXG4gICAqIFRoZSBuYW1lc3BhY2UgdXNlZCBmb3IgcGFyYW1ldGVycyBpbiBQYXJhbWV0ZXIgU3RvcmUuXG4gICAqXG4gICAqIE9ubHkgcmVsZXZhbnQgZm9yIHNvdXJjZVR5cGUgb2YgXCJjZGstc29ydWNlXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGRlZmF1bHRcbiAgICovXG4gIHBhcmFtZXRlcnNOYW1lc3BhY2U/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiBDREsgUGlwZWxpbmUgZm9yIExpZmxpZy5cbiAqXG4gKiBBdm9pZCBwdXR0aW5nIG11bHRpcGxlIHBpcGVsaW5lcyBpbiBhIHN0YWNrLCBzaW5jZSB0aGUgcGlwZWxpbmVcbiAqIHdpbGwgYWxzbyBrZWVwIHRoZSBob3N0aW5nIHN0YWNrIHVwLXRvLWRhdGUuXG4gKlxuICogVGhlIHBpcGVsaW5lIGlzIGV4ZWN1dGVkIGJ5IHdyaXRpbmcgYW4gZW1wdHkgZmlsZSB0b1xuICogczM6Ly88YXJ0aWZhY3RzLWJ1Y2tldD4vcGlwZWxpbmVzLzxwaXBlbGluZS1uYW1lPi90cmlnZ2VyXG4gKlxuICogQ29uZmlndXJhdGlvbiBmaWxlcyBhcmUgcmVhZCBmcm9tIFMzIGF0IHRoZSBwYXRoXG4gKiBzMzovLzxhcnRpZmFjdHMtYnVja2V0Pi9waXBlbGluZXMvPHBpcGVsaW5lLW5hbWU+L1xuICpcbiAqIEZvciB1cGxvYWQgdHlwZSBcImNkay1zb3VyY2VcIjpcbiAqXG4gKiAgIC0gY2RrLXNvdXJjZS5qc29uIGhvbGRpbmcgYSBwb2ludGVyIHRvIHRoZSBhY3RpdmUgQ0RLIHNvdXJjZVxuICogICAgIHRoYXQgc2hvdWxkIGJlIHVzZWQuIFNjaGVtYTpcbiAqXG4gKiAgICAge1xuICogICAgICAgYnVja2V0TmFtZTogc3RyaW5nXG4gKiAgICAgICBidWNrZXRLZXk6IHN0cmluZ1xuICogICAgIH1cbiAqXG4gKiAgIC0gdmFyaWFibGVzKi5qc29uIHdoaWNoIGNhbiBiZSB6ZXJvIG9yIG1vcmUgZmlsZXNcbiAqICAgICB3aXRoIHN0cmluZy1zdHJpbmcgbWFwIGhvbGRpbmcgdmFyaWFibGVzIHRoYXQgd2lsbFxuICogICAgIGJlIHdyaXR0ZW4gdG8gdmFyaWFibGVzLmpzb24gYW5kIGNhbiBiZSByZWFkIGJ5IHRoZVxuICogICAgIHRoZSBDREsgYXBwbGljYXRpb24gZHVyaW5nIHN5bnRoZXNpemUuXG4gKlxuICogRm9yIHVwbG9hZCB0eXBlIFwiY2xvdWQtYXNzZW1ibHlcIjpcbiAqXG4gKiAgIC0gY2xvdWQtYXNzZW1ibHkuanNvbiBob2xkaW5nIGEgcG9pbnRlciB0byB0aGUgYWN0aXZlXG4gKiAgICAgQ0RLIENsb3VkIEFzc2VtYmx5IHRoYXQgc2hvdWxkIGJlIHVzZWQ6IFNjaGVtYTpcbiAqXG4gKiAgICAge1xuICogICAgICAgY2xvdWRBc3NlbWJseUJ1Y2tldE5hbWU6IHN0cmluZ1xuICogICAgICAgY2xvdWRBc3NlbWJseUJ1Y2tldEtleTogc3RyaW5nXG4gKiAgICAgfVxuICpcbiAqIFZhcmlhYmxlcyBlbmFibGVzIHNlcGFyYXRpb24gb2YgSWFDIGNvZGUgYW5kIGFwcGxpY2F0aW9uIGNvZGUgaWZcbiAqIHRoZXkgYXJlIG5vdCBjb2xvY2F0ZWQgaW4gdGhlIHNhbWUgcmVwb3NpdG9yeS5cbiAqL1xuZXhwb3J0IGNsYXNzIExpZmxpZ0Nka1BpcGVsaW5lIGV4dGVuZHMgY29uc3RydWN0cy5Db25zdHJ1Y3Qge1xuICAvKipcbiAgICogUGF0aCBvbiBTMyBmb3IgcGlwZWxpbmUgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHN0YXRpYyBwaXBlbGluZVMzUHJlZml4KHBpcGVsaW5lTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHBpcGVsaW5lcy8ke3BpcGVsaW5lTmFtZX0vYFxuICB9XG5cbiAgLyoqXG4gICAqIEtleSBpbiBTMyBidWNrZXQgdXNlZCB0byB0cmlnZ2VyIHBpcGVsaW5lLlxuICAgKlxuICAgKiBUaGlzIGlzIGFuIGVtcHR5IGZpbGUgd2l0aGluIHRoZSBwaXBlbGluZSBwYXRoLlxuICAgKi9cbiAgc3RhdGljIHBpcGVsaW5lUzNUcmlnZ2VyS2V5KHBpcGVsaW5lTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHBpcGVsaW5lcy8ke3BpcGVsaW5lTmFtZX0vdHJpZ2dlcmBcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBjZGtQaXBlbGluZTogcGlwZWxpbmVzLkNvZGVQaXBlbGluZVxuICBwdWJsaWMgcmVhZG9ubHkgY29kZVBpcGVsaW5lOiBjb2RlcGlwZWxpbmUuUGlwZWxpbmVcbiAgcHVibGljIHJlYWRvbmx5IGFydGlmYWN0c0J1Y2tldDogczMuSUJ1Y2tldFxuICBwdWJsaWMgcmVhZG9ubHkgdHJpZ2dlck9iamVjdEtleTogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IExpZmxpZ0Nka1BpcGVsaW5lUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIHRoaXMuYXJ0aWZhY3RzQnVja2V0ID0gcHJvcHMuYXJ0aWZhY3RzQnVja2V0XG5cbiAgICBjb25zdCBjbG91ZEFzc2VtYmx5QXJ0aWZhY3QgPSBuZXcgY29kZXBpcGVsaW5lLkFydGlmYWN0KClcblxuICAgIGxldCBzeW50aDogcGlwZWxpbmVzLklGaWxlU2V0UHJvZHVjZXJcbiAgICBsZXQgc3RhZ2VzOiBjb2RlcGlwZWxpbmUuU3RhZ2VQcm9wc1tdXG5cbiAgICBzd2l0Y2ggKHByb3BzLnNvdXJjZVR5cGUpIHtcbiAgICAgIGNhc2UgXCJjbG91ZC1hc3NlbWJseVwiOlxuICAgICAgICBjb25zdCBjbG91ZEFzc2VtYmx5ID0gdGhpcy5jbG91ZEFzc2VtYmx5U3RhZ2UoXG4gICAgICAgICAgY2xvdWRBc3NlbWJseUFydGlmYWN0LFxuICAgICAgICAgIHRoaXMuYXJ0aWZhY3RzQnVja2V0LFxuICAgICAgICAgIHByb3BzLnBpcGVsaW5lTmFtZSxcbiAgICAgICAgKVxuICAgICAgICBzeW50aCA9IGNsb3VkQXNzZW1ibHkuc3ludGhcbiAgICAgICAgc3RhZ2VzID0gY2xvdWRBc3NlbWJseS5zdGFnZXNcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJjZGstc291cmNlXCI6XG4gICAgICAgIGNvbnN0IGNka1NvdXJjZSA9IHRoaXMuY2RrU291cmNlU3RhZ2UoXG4gICAgICAgICAgY2xvdWRBc3NlbWJseUFydGlmYWN0LFxuICAgICAgICAgIHRoaXMuYXJ0aWZhY3RzQnVja2V0LFxuICAgICAgICAgIHByb3BzLnBpcGVsaW5lTmFtZSxcbiAgICAgICAgICBwcm9wcy5wYXJhbWV0ZXJzTmFtZXNwYWNlID8/IFwiZGVmYXVsdFwiLFxuICAgICAgICApXG4gICAgICAgIHN5bnRoID0gY2RrU291cmNlLnN5bnRoXG4gICAgICAgIHN0YWdlcyA9IGNka1NvdXJjZS5zdGFnZXNcbiAgICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjb25zdCBkdW1teUFydGlmYWN0ID0gbmV3IGNvZGVwaXBlbGluZS5BcnRpZmFjdCgpXG5cbiAgICB0aGlzLnRyaWdnZXJPYmplY3RLZXkgPSBMaWZsaWdDZGtQaXBlbGluZS5waXBlbGluZVMzVHJpZ2dlcktleShcbiAgICAgIHByb3BzLnBpcGVsaW5lTmFtZSxcbiAgICApXG5cbiAgICB0aGlzLmNvZGVQaXBlbGluZSA9IG5ldyBjb2RlcGlwZWxpbmUuUGlwZWxpbmUodGhpcywgXCJDb2RlUGlwZWxpbmVcIiwge1xuICAgICAgcGlwZWxpbmVOYW1lOiBwcm9wcy5waXBlbGluZU5hbWUsXG4gICAgICBzdGFnZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHN0YWdlTmFtZTogXCJTb3VyY2VcIixcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICBuZXcgY29kZXBpcGVsaW5lQWN0aW9ucy5TM1NvdXJjZUFjdGlvbih7XG4gICAgICAgICAgICAgIGFjdGlvbk5hbWU6IFwic291cmNlXCIsXG4gICAgICAgICAgICAgIGJ1Y2tldDogdGhpcy5hcnRpZmFjdHNCdWNrZXQsXG4gICAgICAgICAgICAgIHRyaWdnZXI6IGNvZGVwaXBlbGluZUFjdGlvbnMuUzNUcmlnZ2VyLk5PTkUsXG4gICAgICAgICAgICAgIGJ1Y2tldEtleTogdGhpcy50cmlnZ2VyT2JqZWN0S2V5LFxuICAgICAgICAgICAgICBvdXRwdXQ6IGR1bW15QXJ0aWZhY3QsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICAuLi5zdGFnZXMsXG4gICAgICBdLFxuICAgICAgcmVzdGFydEV4ZWN1dGlvbk9uVXBkYXRlOiB0cnVlLFxuICAgIH0pXG5cbiAgICBuZXcgZXZlbnRzLlJ1bGUodGhpcywgXCJQaXBlbGluZVRyaWdnZXJcIiwge1xuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIHNvdXJjZTogW1wiYXdzLnMzXCJdLFxuICAgICAgICBkZXRhaWxUeXBlOiBbXCJPYmplY3QgQ3JlYXRlZFwiXSxcbiAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgYnVja2V0OiB7XG4gICAgICAgICAgICBuYW1lOiBbdGhpcy5hcnRpZmFjdHNCdWNrZXQuYnVja2V0TmFtZV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvYmplY3Q6IHtcbiAgICAgICAgICAgIGtleTogW3RoaXMudHJpZ2dlck9iamVjdEtleV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0YXJnZXRzOiBbbmV3IHRhcmdldHMuQ29kZVBpcGVsaW5lKHRoaXMuY29kZVBpcGVsaW5lKV0sXG4gICAgfSlcblxuICAgIHRoaXMuY2RrUGlwZWxpbmUgPSBuZXcgcGlwZWxpbmVzLkNvZGVQaXBlbGluZSh0aGlzLCBcIkNka1BpcGVsaW5lXCIsIHtcbiAgICAgIHN5bnRoLFxuICAgICAgdXNlQ2hhbmdlU2V0czogZmFsc2UsXG4gICAgICBjb2RlUGlwZWxpbmU6IHRoaXMuY29kZVBpcGVsaW5lLFxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXRBd3NDZGtQYWNrYWdlSnNvbkZpbGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBBbHNvIGxvb2sgdXAgdGhlIHRyZWUgYSBiaXQgdG8gaGFuZGxlIHlhcm4gd29ya3NwYWNlcy5cbiAgICBjb25zdCBjYW5kaWRhdGVzID0gW1xuICAgICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwibm9kZV9tb2R1bGVzL2F3cy1jZGsvcGFja2FnZS5qc29uXCIpLFxuICAgICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwiLi4vbm9kZV9tb2R1bGVzL2F3cy1jZGsvcGFja2FnZS5qc29uXCIpLFxuICAgICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2F3cy1jZGsvcGFja2FnZS5qc29uXCIpLFxuICAgICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F3cy1jZGsvcGFja2FnZS5qc29uXCIpLFxuICAgIF1cblxuICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpIHtcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGNhbmRpZGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIHByaXZhdGUgY2xvdWRBc3NlbWJseVN0YWdlKFxuICAgIGNsb3VkQXNzZW1ibHlBcnRpZmFjdDogY29kZXBpcGVsaW5lLkFydGlmYWN0LFxuICAgIGNka0J1Y2tldDogczMuSUJ1Y2tldCxcbiAgICBwaXBlbGluZU5hbWU6IHN0cmluZyxcbiAgKTogeyBzdGFnZXM6IGNvZGVwaXBlbGluZS5TdGFnZVByb3BzW107IHN5bnRoOiBwaXBlbGluZXMuSUZpbGVTZXRQcm9kdWNlciB9IHtcbiAgICBjb25zdCBjbG91ZEFzc2VtYmx5TG9va3VwRm4gPSBuZXcgTm9kZWpzRnVuY3Rpb24oXG4gICAgICB0aGlzLFxuICAgICAgXCJDbG91ZEFzc2VtYmx5TG9va3VwRm5cIixcbiAgICAgIHtcbiAgICAgICAgZW50cnk6IHJlcXVpcmUucmVzb2x2ZShcIi4vY2xvdWQtYXNzZW1ibHktbG9va3VwLWhhbmRsZXJcIiksXG4gICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xOF9YLFxuICAgICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgbWVtb3J5U2l6ZTogNTEyLFxuICAgICAgICBhd3NTZGtDb25uZWN0aW9uUmV1c2U6IGZhbHNlLFxuICAgICAgfSxcbiAgICApXG5cbiAgICBjZGtCdWNrZXQuZ3JhbnRSZWFkV3JpdGUoY2xvdWRBc3NlbWJseUxvb2t1cEZuKVxuXG4gICAgY29uc3QgdXNlclBhcmFtZXRlcnM6IENsb3VkQXNzZW1ibHlMb29rdXBVc2VyUGFyYW1ldGVycyA9IHtcbiAgICAgIGJ1Y2tldE5hbWU6IGNka0J1Y2tldC5idWNrZXROYW1lLFxuICAgICAgb2JqZWN0S2V5OiBgcGlwZWxpbmVzLyR7cGlwZWxpbmVOYW1lfS9jbG91ZC1hc3NlbWJseS5qc29uYCxcbiAgICB9XG5cbiAgICBjb25zdCBzeW50aCA9IHBpcGVsaW5lcy5Db2RlUGlwZWxpbmVGaWxlU2V0LmZyb21BcnRpZmFjdChcbiAgICAgIGNsb3VkQXNzZW1ibHlBcnRpZmFjdCxcbiAgICApXG5cbiAgICBjb25zdCBzdGFnZXMgPSBbXG4gICAgICB7XG4gICAgICAgIHN0YWdlTmFtZTogXCJQcmVwYXJlQ2xvdWRBc3NlbWJseVwiLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgbmV3IGNvZGVwaXBlbGluZUFjdGlvbnMuTGFtYmRhSW52b2tlQWN0aW9uKHtcbiAgICAgICAgICAgIGFjdGlvbk5hbWU6IFwiY2xvdWQtYXNzZW1ibHktbG9va3VwXCIsXG4gICAgICAgICAgICBsYW1iZGE6IGNsb3VkQXNzZW1ibHlMb29rdXBGbixcbiAgICAgICAgICAgIG91dHB1dHM6IFtjbG91ZEFzc2VtYmx5QXJ0aWZhY3RdLFxuICAgICAgICAgICAgdXNlclBhcmFtZXRlcnMsXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF1cbiAgICByZXR1cm4geyBzdGFnZXMsIHN5bnRoIH1cbiAgfVxuXG4gIHByaXZhdGUgY2RrU291cmNlU3RhZ2UoXG4gICAgY2xvdWRBc3NlbWJseUFydGlmYWN0OiBjb2RlcGlwZWxpbmUuQXJ0aWZhY3QsXG4gICAgY2RrQnVja2V0OiBzMy5JQnVja2V0LFxuICAgIHBpcGVsaW5lTmFtZTogc3RyaW5nLFxuICAgIHBhcmFtZXRlcnNOYW1lc3BhY2U6IHN0cmluZyxcbiAgKTogeyBzdGFnZXM6IGNvZGVwaXBlbGluZS5TdGFnZVByb3BzW107IHN5bnRoOiBwaXBlbGluZXMuSUZpbGVTZXRQcm9kdWNlciB9IHtcbiAgICBjb25zdCBwcmVwYXJlQ2RrU291cmNlRm4gPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsIFwiUHJlcGFyZUNka1NvdXJjZUZuXCIsIHtcbiAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChcbiAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLi8uLi9hc3NldHMvcHJlcGFyZS1jZGstc291cmNlLWxhbWJkYVwiKSxcbiAgICAgICksXG4gICAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgICAgIC8vIFVzaW5nIHB5dGhvbiBpbnN0ZWFkIGlmIE5vZGVKUyBkdWUgdG8gemlwLXN1cHBvcnQgaW4gc3RkbGliLlxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuUFlUSE9OXzNfMTIsXG4gICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIG1lbW9yeVNpemU6IDUxMixcbiAgICB9KVxuXG4gICAgY29uc3QgYWNjb3VudCA9IGNkay5TdGFjay5vZih0aGlzKS5hY2NvdW50XG4gICAgY29uc3QgcmVnaW9uID0gY2RrLlN0YWNrLm9mKHRoaXMpLnJlZ2lvblxuXG4gICAgcHJlcGFyZUNka1NvdXJjZUZuLmdyYW50UHJpbmNpcGFsLmFkZFRvUHJpbmNpcGFsUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXCJzc206R2V0UGFyYW1ldGVyc0J5UGF0aFwiXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgYGFybjphd3M6c3NtOiR7cmVnaW9ufToke2FjY291bnR9OnBhcmFtZXRlci9saWZsaWctY2RrLyovcGlwZWxpbmUtdmFyaWFibGVzLypgLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgKVxuXG4gICAgY2RrQnVja2V0LmdyYW50UmVhZFdyaXRlKHByZXBhcmVDZGtTb3VyY2VGbilcblxuICAgIGNvbnN0IGNka1NvdXJjZUFydGlmYWN0ID0gbmV3IGNvZGVwaXBlbGluZS5BcnRpZmFjdCgpXG5cbiAgICBjb25zdCB1c2VyUGFyYW1ldGVyczogUHJlcGFyZUNka1NvdXJjZVVzZXJQYXJhbWV0ZXJzID0ge1xuICAgICAgYnVja2V0TmFtZTogY2RrQnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICBwcmVmaXg6IGBwaXBlbGluZXMvJHtwaXBlbGluZU5hbWV9L2AsXG4gICAgICBwYXJhbWV0ZXJzTmFtZXNwYWNlOiBwYXJhbWV0ZXJzTmFtZXNwYWNlLFxuICAgIH1cblxuICAgIGNvbnN0IHN5bnRoID0gbmV3IHBpcGVsaW5lcy5TaGVsbFN0ZXAoXCJHZW5lcmF0ZUNsb3VkQXNzZW1ibHlcIiwge1xuICAgICAgaW5wdXQ6IHBpcGVsaW5lcy5Db2RlUGlwZWxpbmVGaWxlU2V0LmZyb21BcnRpZmFjdChjZGtTb3VyY2VBcnRpZmFjdCksXG4gICAgICBpbnN0YWxsQ29tbWFuZHM6IFtcIm5wbSBjaVwiXSxcbiAgICAgIGNvbW1hbmRzOiBbXCJucHggY2RrIHN5bnRoXCJdLFxuICAgIH0pXG4gICAgY29uc3Qgc3RhZ2VzID0gW1xuICAgICAge1xuICAgICAgICBzdGFnZU5hbWU6IFwiUHJlcGFyZUNka1NvdXJjZVwiLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgbmV3IGNvZGVwaXBlbGluZUFjdGlvbnMuTGFtYmRhSW52b2tlQWN0aW9uKHtcbiAgICAgICAgICAgIGFjdGlvbk5hbWU6IFwicHJlcGFyZS1jZGstc291cmNlXCIsXG4gICAgICAgICAgICBsYW1iZGE6IHByZXBhcmVDZGtTb3VyY2VGbixcbiAgICAgICAgICAgIG91dHB1dHM6IFtjZGtTb3VyY2VBcnRpZmFjdF0sXG4gICAgICAgICAgICB1c2VyUGFyYW1ldGVycyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXVxuICAgIHJldHVybiB7IHN0YWdlcywgc3ludGggfVxuICB9XG5cbiAgYWRkU2xhY2tOb3RpZmljYXRpb24oXG4gICAgcHJvcHM6IE9taXQ8XG4gICAgICBTbGFja05vdGlmaWNhdGlvblByb3BzLFxuICAgICAgXCJwaXBlbGluZVwiIHwgXCJhcnRpZmFjdHNCdWNrZXRcIiB8IFwidHJpZ2dlck9iamVjdEtleVwiXG4gICAgPixcbiAgKTogdm9pZCB7XG4gICAgbmV3IFNsYWNrTm90aWZpY2F0aW9uKHRoaXMsIFwiU2xhY2tcIiwge1xuICAgICAgcGlwZWxpbmU6IHRoaXMuY29kZVBpcGVsaW5lLFxuICAgICAgYXJ0aWZhY3RzQnVja2V0OiB0aGlzLmFydGlmYWN0c0J1Y2tldCxcbiAgICAgIHRyaWdnZXJPYmplY3RLZXk6IHRoaXMudHJpZ2dlck9iamVjdEtleSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pXG4gIH1cbn1cblxuaW50ZXJmYWNlIFByZXBhcmVDZGtTb3VyY2VVc2VyUGFyYW1ldGVycyB7XG4gIGJ1Y2tldE5hbWU6IHN0cmluZ1xuICBwcmVmaXg6IHN0cmluZ1xuICBwYXJhbWV0ZXJzTmFtZXNwYWNlOiBzdHJpbmdcbn1cbiJdfQ==
|
|
236
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmbGlnLWNkay1waXBlbGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jZGstcGlwZWxpbmVzL2xpZmxpZy1jZGstcGlwZWxpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUE7QUFDeEMsT0FBTyxLQUFLLFlBQVksTUFBTSw4QkFBOEIsQ0FBQTtBQUM1RCxPQUFPLEtBQUssbUJBQW1CLE1BQU0sc0NBQXNDLENBQUE7QUFDM0UsT0FBTyxLQUFLLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQTtBQUMxQyxPQUFPLEtBQUssTUFBTSxNQUFNLHdCQUF3QixDQUFBO0FBQ2hELE9BQU8sS0FBSyxNQUFNLE1BQU0sd0JBQXdCLENBQUE7QUFDaEQsT0FBTyxLQUFLLE9BQU8sTUFBTSxnQ0FBZ0MsQ0FBQTtBQUV6RCxPQUFPLEtBQUssR0FBRyxNQUFNLGFBQWEsQ0FBQTtBQUNsQyxPQUFPLEtBQUssU0FBUyxNQUFNLHVCQUF1QixDQUFBO0FBQ2xELE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBQ3hCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFeEMsT0FBTyxFQUFFLGlCQUFpQixFQUEwQixNQUFNLHNCQUFzQixDQUFBO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRTNDLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQzlDLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ2pELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUE7QUE0QzFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Q0c7QUFDSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsVUFBVSxDQUFDLFNBQVM7SUFDekQ7O09BRUc7SUFDSCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsWUFBb0I7UUFDMUMsT0FBTyxhQUFhLFlBQVksR0FBRyxDQUFBO0lBQ3JDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFlBQW9CO1FBQzlDLE9BQU8sYUFBYSxZQUFZLFVBQVUsQ0FBQTtJQUM1QyxDQUFDO0lBRWUsV0FBVyxDQUF3QjtJQUNuQyxZQUFZLENBQXVCO0lBQ25DLGVBQWUsQ0FBWTtJQUMzQixnQkFBZ0IsQ0FBUTtJQUV4QyxZQUNFLEtBQTJCLEVBQzNCLEVBQVUsRUFDVixLQUE2QjtRQUU3QixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRWhCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQTtRQUU1QyxNQUFNLHFCQUFxQixHQUFHLElBQUksWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBRXpELElBQUksS0FBaUMsQ0FBQTtRQUNyQyxJQUFJLE1BQWlDLENBQUE7UUFFckMsUUFBUSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDekIsS0FBSyxnQkFBZ0I7Z0JBQ25CLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FDM0MscUJBQXFCLEVBQ3JCLElBQUksQ0FBQyxlQUFlLEVBQ3BCLEtBQUssQ0FBQyxZQUFZLENBQ25CLENBQUE7Z0JBQ0QsS0FBSyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUE7Z0JBQzNCLE1BQU0sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFBO2dCQUM3QixNQUFLO1lBQ1AsS0FBSyxZQUFZO2dCQUNmLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQ25DLHFCQUFxQixFQUNyQixJQUFJLENBQUMsZUFBZSxFQUNwQixLQUFLLENBQUMsWUFBWSxFQUNsQixLQUFLLENBQUMsbUJBQW1CLElBQUksU0FBUyxDQUN2QyxDQUFBO2dCQUNELEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFBO2dCQUN2QixNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQTtnQkFDekIsTUFBSztRQUNULENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFJLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQTtRQUVqRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUMsb0JBQW9CLENBQzVELEtBQUssQ0FBQyxZQUFZLENBQ25CLENBQUE7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFO1lBQ2xFLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxZQUFZLEVBQUUsWUFBWSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQzFDLE1BQU0sRUFBRTtnQkFDTjtvQkFDRSxTQUFTLEVBQUUsUUFBUTtvQkFDbkIsT0FBTyxFQUFFO3dCQUNQLElBQUksbUJBQW1CLENBQUMsY0FBYyxDQUFDOzRCQUNyQyxVQUFVLEVBQUUsUUFBUTs0QkFDcEIsTUFBTSxFQUFFLElBQUksQ0FBQyxlQUFlOzRCQUM1QixPQUFPLEVBQUUsbUJBQW1CLENBQUMsU0FBUyxDQUFDLElBQUk7NEJBQzNDLFNBQVMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCOzRCQUNoQyxNQUFNLEVBQUUsYUFBYTt5QkFDdEIsQ0FBQztxQkFDSDtpQkFDRjtnQkFDRCxHQUFHLE1BQU07YUFDVjtZQUNELHdCQUF3QixFQUFFLElBQUk7U0FDL0IsQ0FBQyxDQUFBO1FBRUYsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUN2QyxZQUFZLEVBQUU7Z0JBQ1osTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUNsQixVQUFVLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDOUIsTUFBTSxFQUFFO29CQUNOLE1BQU0sRUFBRTt3QkFDTixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQztxQkFDeEM7b0JBQ0QsTUFBTSxFQUFFO3dCQUNOLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztxQkFDN0I7aUJBQ0Y7YUFDRjtZQUNELE9BQU8sRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDdkQsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUNqRSxLQUFLO1lBQ0wsYUFBYSxFQUFFLEtBQUs7WUFDcEIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQ2hDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFTyxNQUFNLENBQUMsd0JBQXdCO1FBQ3JDLHlEQUF5RDtRQUN6RCxNQUFNLFVBQVUsR0FBRztZQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxtQ0FBbUMsQ0FBQztZQUM3RCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxzQ0FBc0MsQ0FBQztZQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSx5Q0FBeUMsQ0FBQztZQUNuRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSw0Q0FBNEMsQ0FBQztTQUN2RSxDQUFBO1FBRUQsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNuQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDN0IsT0FBTyxTQUFTLENBQUE7WUFDbEIsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQTtJQUNsQixDQUFDO0lBRU8sa0JBQWtCLENBQ3hCLHFCQUE0QyxFQUM1QyxTQUFxQixFQUNyQixZQUFvQjtRQUVwQixNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUM5QyxJQUFJLEVBQ0osdUJBQXVCLEVBQ3ZCO1lBQ0UsS0FBSyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxTQUFTLGdDQUFnQyxDQUFDO1lBQ3BFLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFDbkMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNoQyxVQUFVLEVBQUUsR0FBRztZQUNmLHFCQUFxQixFQUFFLEtBQUs7U0FDN0IsQ0FDRixDQUFBO1FBRUQsU0FBUyxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1FBRS9DLE1BQU0sY0FBYyxHQUFzQztZQUN4RCxVQUFVLEVBQUUsU0FBUyxDQUFDLFVBQVU7WUFDaEMsU0FBUyxFQUFFLGFBQWEsWUFBWSxzQkFBc0I7U0FDM0QsQ0FBQTtRQUVELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQ3RELHFCQUFxQixDQUN0QixDQUFBO1FBRUQsTUFBTSxNQUFNLEdBQUc7WUFDYjtnQkFDRSxTQUFTLEVBQUUsc0JBQXNCO2dCQUNqQyxPQUFPLEVBQUU7b0JBQ1AsSUFBSSxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQzt3QkFDekMsVUFBVSxFQUFFLHVCQUF1Qjt3QkFDbkMsTUFBTSxFQUFFLHFCQUFxQjt3QkFDN0IsT0FBTyxFQUFFLENBQUMscUJBQXFCLENBQUM7d0JBQ2hDLGNBQWM7cUJBQ2YsQ0FBQztpQkFDSDthQUNGO1NBQ0YsQ0FBQTtRQUNELE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUE7SUFDMUIsQ0FBQztJQUVPLGNBQWMsQ0FDcEIscUJBQTRDLEVBQzVDLFNBQXFCLEVBQ3JCLFlBQW9CLEVBQ3BCLG1CQUEyQjtRQUUzQixNQUFNLGtCQUFrQixHQUFHLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7WUFDekUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSx3Q0FBd0MsQ0FBQyxDQUMvRDtZQUNELE9BQU8sRUFBRSxlQUFlO1lBQ3hCLCtEQUErRDtZQUMvRCxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXO1lBQ25DLE9BQU8sRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDaEMsVUFBVSxFQUFFLEdBQUc7U0FDaEIsQ0FBQyxDQUFBO1FBRUYsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFBO1FBQzFDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQTtRQUV4QyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQ3BELElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztZQUN0QixPQUFPLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztZQUNwQyxTQUFTLEVBQUU7Z0JBQ1QsZUFBZSxNQUFNLElBQUksT0FBTyw4Q0FBOEM7YUFDL0U7U0FDRixDQUFDLENBQ0gsQ0FBQTtRQUVELFNBQVMsQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtRQUU1QyxNQUFNLGlCQUFpQixHQUFHLElBQUksWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBRXJELE1BQU0sY0FBYyxHQUFtQztZQUNyRCxVQUFVLEVBQUUsU0FBUyxDQUFDLFVBQVU7WUFDaEMsTUFBTSxFQUFFLGFBQWEsWUFBWSxHQUFHO1lBQ3BDLG1CQUFtQixFQUFFLG1CQUFtQjtTQUN6QyxDQUFBO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLHVCQUF1QixFQUFFO1lBQzdELEtBQUssRUFBRSxTQUFTLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDO1lBQ3BFLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztZQUMzQixRQUFRLEVBQUUsQ0FBQyxlQUFlLENBQUM7U0FDNUIsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxNQUFNLEdBQUc7WUFDYjtnQkFDRSxTQUFTLEVBQUUsa0JBQWtCO2dCQUM3QixPQUFPLEVBQUU7b0JBQ1AsSUFBSSxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQzt3QkFDekMsVUFBVSxFQUFFLG9CQUFvQjt3QkFDaEMsTUFBTSxFQUFFLGtCQUFrQjt3QkFDMUIsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQUM7d0JBQzVCLGNBQWM7cUJBQ2YsQ0FBQztpQkFDSDthQUNGO1NBQ0YsQ0FBQTtRQUNELE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUE7SUFDMUIsQ0FBQztJQUVELG9CQUFvQixDQUNsQixLQUdDO1FBRUQsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFO1lBQ25DLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMzQixlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDckMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUN2QyxHQUFHLEtBQUs7U0FDVCxDQUFDLENBQUE7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCAqIGFzIGNvZGVwaXBlbGluZSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZGVwaXBlbGluZVwiXG5pbXBvcnQgKiBhcyBjb2RlcGlwZWxpbmVBY3Rpb25zIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29kZXBpcGVsaW5lLWFjdGlvbnNcIlxuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCJcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiXG5pbXBvcnQgKiBhcyBldmVudHMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1ldmVudHNcIlxuaW1wb3J0ICogYXMgdGFyZ2V0cyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzXCJcbmltcG9ydCAqIGFzIHMzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIlxuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgKiBhcyBwaXBlbGluZXMgZnJvbSBcImF3cy1jZGstbGliL3BpcGVsaW5lc1wiXG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIlxuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSBcIm5vZGU6dXJsXCJcbmltcG9ydCB7IENsb3VkQXNzZW1ibHlMb29rdXBVc2VyUGFyYW1ldGVycyB9IGZyb20gXCIuL2Nsb3VkLWFzc2VtYmx5LWxvb2t1cC1oYW5kbGVyXCJcbmltcG9ydCB7IFNsYWNrTm90aWZpY2F0aW9uLCBTbGFja05vdGlmaWNhdGlvblByb3BzIH0gZnJvbSBcIi4vc2xhY2stbm90aWZpY2F0aW9uXCJcbmltcG9ydCB7IE5vZGVqc0Z1bmN0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzXCJcbmltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibm9kZTptb2R1bGVcIlxuXG5jb25zdCByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpXG5jb25zdCBfX2ZpbGVuYW1lID0gZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpXG5jb25zdCBfX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoX19maWxlbmFtZSlcbmV4cG9ydCBpbnRlcmZhY2UgTGlmbGlnQ2RrUGlwZWxpbmVQcm9wcyB7XG4gIC8qKlxuICAgKiBCdWNrZXQgaG9sZGluZyBwaXBlbGluZSBjb25maWd1cmF0aW9uIGFuZCB0cmlnZ2VyIGZpbGUuXG4gICAqL1xuICBhcnRpZmFjdHNCdWNrZXQ6IHMzLklCdWNrZXRcbiAgLyoqXG4gICAqIE5hbWUgb2YgcGlwZWxpbmUuIFRoaXMgaXMgdXNlZCBmb3IgdGhlIHBhdGggd2hlcmUgY29uZmlndXJhdGlvblxuICAgKiBpcyBzdG9yZWQgaW4gUzMuXG4gICAqL1xuICBwaXBlbGluZU5hbWU6IHN0cmluZ1xuICAvKipcbiAgICogVHlwZSBvZiB1cGxvYWRlZCBhcnRpZmFjdC4gVGhpcyBjaGFuZ2VzIHRoZSBiZWhhdmlvdXIgb2YgdGhlXG4gICAqIHBpcGVsaW5lIGFuZCB3aGF0IGtpbmQgb2YgcHJvY2VzcyBpdCBwZXJmb3Jtcy5cbiAgICpcbiAgICogVHdvIHR5cGVzIGFyZSBzdXBwb3J0ZWQ6XG4gICAqXG4gICAqICAgLSBjZGstc291cmNlOiBUaGUgdXBsb2FkZWQgYXJ0aWZhY3QgcmVwcmVzZW50cyBhIENESyBhcHBsaWNhdGlvblxuICAgKiAgICAgYXMgc291cmNlIGNvZGUuIEEgYnVpbGQgc3RlcCB3aWxsIGNvbXBpbGUgdGhpcyBpbnRvIGFcbiAgICogICAgIENESyBDbG91ZCBBc3NlbWJseS5cbiAgICpcbiAgICogICAgIEFzIHBhcnQgb2Ygc3ludGhlc2l6aW5nIHRoaXMgaW50byBhIENESyBDbG91ZCBBc3NlbWJseSxcbiAgICogICAgIGEgZmlsZSBcInZhcmlhYmxlcy5qc29uXCIgd2lsbCBiZSB3cml0dGVuIGZvciB0aGVcbiAgICogICAgIENESyBhcHBsaWNhdGlvbiB0byBwYXJhbWV0ZXJpemUgdGhlIGJ1aWxkIGlmIGFueVxuICAgKiAgICAgdmFyaWFibGVzIGFyZSBmb3VuZCBpbiB0aGUgcGlwZWxpbmUgc291cmNlLlxuICAgKlxuICAgKiAgIC0gY2xvdWQtYXNzZW1ibHk6IFRoZSB1cGxvYWRlZCBhcnRpZmFjdCByZXByZXNlbnRzIGFcbiAgICogICAgIENESyBDbG91ZCBBc3NlbWJseSB3aGljaCBpcyByZWFkeSBmb3IgZGVwbG95bWVudC5cbiAgICpcbiAgICogICAgIFRoaXMgZG9lcyBub3Qgc3VwcG9ydCByZWFkaW5nIHZhcmlhYmxlcyBhdCB0aGUgY3VycmVudCB0aW1lXG4gICAqICAgICBzaW5jZSBDREsgUGlwZWxpbmVzIGRvbid0IHN1cHBvcnQgcGFyYW1ldGVyaXplZCBkZXBsb3lzLlxuICAgKiAgICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9pc3N1ZXMvOTU2MFxuICAgKi9cbiAgc291cmNlVHlwZTogXCJjZGstc291cmNlXCIgfCBcImNsb3VkLWFzc2VtYmx5XCJcbiAgLyoqXG4gICAqIFRoZSBuYW1lc3BhY2UgdXNlZCBmb3IgcGFyYW1ldGVycyBpbiBQYXJhbWV0ZXIgU3RvcmUuXG4gICAqXG4gICAqIE9ubHkgcmVsZXZhbnQgZm9yIHNvdXJjZVR5cGUgb2YgXCJjZGstc29ydWNlXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGRlZmF1bHRcbiAgICovXG4gIHBhcmFtZXRlcnNOYW1lc3BhY2U/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiBDREsgUGlwZWxpbmUgZm9yIExpZmxpZy5cbiAqXG4gKiBBdm9pZCBwdXR0aW5nIG11bHRpcGxlIHBpcGVsaW5lcyBpbiBhIHN0YWNrLCBzaW5jZSB0aGUgcGlwZWxpbmVcbiAqIHdpbGwgYWxzbyBrZWVwIHRoZSBob3N0aW5nIHN0YWNrIHVwLXRvLWRhdGUuXG4gKlxuICogVGhlIHBpcGVsaW5lIGlzIGV4ZWN1dGVkIGJ5IHdyaXRpbmcgYW4gZW1wdHkgZmlsZSB0b1xuICogczM6Ly88YXJ0aWZhY3RzLWJ1Y2tldD4vcGlwZWxpbmVzLzxwaXBlbGluZS1uYW1lPi90cmlnZ2VyXG4gKlxuICogQ29uZmlndXJhdGlvbiBmaWxlcyBhcmUgcmVhZCBmcm9tIFMzIGF0IHRoZSBwYXRoXG4gKiBzMzovLzxhcnRpZmFjdHMtYnVja2V0Pi9waXBlbGluZXMvPHBpcGVsaW5lLW5hbWU+L1xuICpcbiAqIEZvciB1cGxvYWQgdHlwZSBcImNkay1zb3VyY2VcIjpcbiAqXG4gKiAgIC0gY2RrLXNvdXJjZS5qc29uIGhvbGRpbmcgYSBwb2ludGVyIHRvIHRoZSBhY3RpdmUgQ0RLIHNvdXJjZVxuICogICAgIHRoYXQgc2hvdWxkIGJlIHVzZWQuIFNjaGVtYTpcbiAqXG4gKiAgICAge1xuICogICAgICAgYnVja2V0TmFtZTogc3RyaW5nXG4gKiAgICAgICBidWNrZXRLZXk6IHN0cmluZ1xuICogICAgIH1cbiAqXG4gKiAgIC0gdmFyaWFibGVzKi5qc29uIHdoaWNoIGNhbiBiZSB6ZXJvIG9yIG1vcmUgZmlsZXNcbiAqICAgICB3aXRoIHN0cmluZy1zdHJpbmcgbWFwIGhvbGRpbmcgdmFyaWFibGVzIHRoYXQgd2lsbFxuICogICAgIGJlIHdyaXR0ZW4gdG8gdmFyaWFibGVzLmpzb24gYW5kIGNhbiBiZSByZWFkIGJ5IHRoZVxuICogICAgIHRoZSBDREsgYXBwbGljYXRpb24gZHVyaW5nIHN5bnRoZXNpemUuXG4gKlxuICogRm9yIHVwbG9hZCB0eXBlIFwiY2xvdWQtYXNzZW1ibHlcIjpcbiAqXG4gKiAgIC0gY2xvdWQtYXNzZW1ibHkuanNvbiBob2xkaW5nIGEgcG9pbnRlciB0byB0aGUgYWN0aXZlXG4gKiAgICAgQ0RLIENsb3VkIEFzc2VtYmx5IHRoYXQgc2hvdWxkIGJlIHVzZWQ6IFNjaGVtYTpcbiAqXG4gKiAgICAge1xuICogICAgICAgY2xvdWRBc3NlbWJseUJ1Y2tldE5hbWU6IHN0cmluZ1xuICogICAgICAgY2xvdWRBc3NlbWJseUJ1Y2tldEtleTogc3RyaW5nXG4gKiAgICAgfVxuICpcbiAqIFZhcmlhYmxlcyBlbmFibGVzIHNlcGFyYXRpb24gb2YgSWFDIGNvZGUgYW5kIGFwcGxpY2F0aW9uIGNvZGUgaWZcbiAqIHRoZXkgYXJlIG5vdCBjb2xvY2F0ZWQgaW4gdGhlIHNhbWUgcmVwb3NpdG9yeS5cbiAqL1xuZXhwb3J0IGNsYXNzIExpZmxpZ0Nka1BpcGVsaW5lIGV4dGVuZHMgY29uc3RydWN0cy5Db25zdHJ1Y3Qge1xuICAvKipcbiAgICogUGF0aCBvbiBTMyBmb3IgcGlwZWxpbmUgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHN0YXRpYyBwaXBlbGluZVMzUHJlZml4KHBpcGVsaW5lTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHBpcGVsaW5lcy8ke3BpcGVsaW5lTmFtZX0vYFxuICB9XG5cbiAgLyoqXG4gICAqIEtleSBpbiBTMyBidWNrZXQgdXNlZCB0byB0cmlnZ2VyIHBpcGVsaW5lLlxuICAgKlxuICAgKiBUaGlzIGlzIGFuIGVtcHR5IGZpbGUgd2l0aGluIHRoZSBwaXBlbGluZSBwYXRoLlxuICAgKi9cbiAgc3RhdGljIHBpcGVsaW5lUzNUcmlnZ2VyS2V5KHBpcGVsaW5lTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHBpcGVsaW5lcy8ke3BpcGVsaW5lTmFtZX0vdHJpZ2dlcmBcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBjZGtQaXBlbGluZTogcGlwZWxpbmVzLkNvZGVQaXBlbGluZVxuICBwdWJsaWMgcmVhZG9ubHkgY29kZVBpcGVsaW5lOiBjb2RlcGlwZWxpbmUuUGlwZWxpbmVcbiAgcHVibGljIHJlYWRvbmx5IGFydGlmYWN0c0J1Y2tldDogczMuSUJ1Y2tldFxuICBwdWJsaWMgcmVhZG9ubHkgdHJpZ2dlck9iamVjdEtleTogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IExpZmxpZ0Nka1BpcGVsaW5lUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIHRoaXMuYXJ0aWZhY3RzQnVja2V0ID0gcHJvcHMuYXJ0aWZhY3RzQnVja2V0XG5cbiAgICBjb25zdCBjbG91ZEFzc2VtYmx5QXJ0aWZhY3QgPSBuZXcgY29kZXBpcGVsaW5lLkFydGlmYWN0KClcblxuICAgIGxldCBzeW50aDogcGlwZWxpbmVzLklGaWxlU2V0UHJvZHVjZXJcbiAgICBsZXQgc3RhZ2VzOiBjb2RlcGlwZWxpbmUuU3RhZ2VQcm9wc1tdXG5cbiAgICBzd2l0Y2ggKHByb3BzLnNvdXJjZVR5cGUpIHtcbiAgICAgIGNhc2UgXCJjbG91ZC1hc3NlbWJseVwiOlxuICAgICAgICBjb25zdCBjbG91ZEFzc2VtYmx5ID0gdGhpcy5jbG91ZEFzc2VtYmx5U3RhZ2UoXG4gICAgICAgICAgY2xvdWRBc3NlbWJseUFydGlmYWN0LFxuICAgICAgICAgIHRoaXMuYXJ0aWZhY3RzQnVja2V0LFxuICAgICAgICAgIHByb3BzLnBpcGVsaW5lTmFtZSxcbiAgICAgICAgKVxuICAgICAgICBzeW50aCA9IGNsb3VkQXNzZW1ibHkuc3ludGhcbiAgICAgICAgc3RhZ2VzID0gY2xvdWRBc3NlbWJseS5zdGFnZXNcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJjZGstc291cmNlXCI6XG4gICAgICAgIGNvbnN0IGNka1NvdXJjZSA9IHRoaXMuY2RrU291cmNlU3RhZ2UoXG4gICAgICAgICAgY2xvdWRBc3NlbWJseUFydGlmYWN0LFxuICAgICAgICAgIHRoaXMuYXJ0aWZhY3RzQnVja2V0LFxuICAgICAgICAgIHByb3BzLnBpcGVsaW5lTmFtZSxcbiAgICAgICAgICBwcm9wcy5wYXJhbWV0ZXJzTmFtZXNwYWNlID8/IFwiZGVmYXVsdFwiLFxuICAgICAgICApXG4gICAgICAgIHN5bnRoID0gY2RrU291cmNlLnN5bnRoXG4gICAgICAgIHN0YWdlcyA9IGNka1NvdXJjZS5zdGFnZXNcbiAgICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjb25zdCBkdW1teUFydGlmYWN0ID0gbmV3IGNvZGVwaXBlbGluZS5BcnRpZmFjdCgpXG5cbiAgICB0aGlzLnRyaWdnZXJPYmplY3RLZXkgPSBMaWZsaWdDZGtQaXBlbGluZS5waXBlbGluZVMzVHJpZ2dlcktleShcbiAgICAgIHByb3BzLnBpcGVsaW5lTmFtZSxcbiAgICApXG5cbiAgICB0aGlzLmNvZGVQaXBlbGluZSA9IG5ldyBjb2RlcGlwZWxpbmUuUGlwZWxpbmUodGhpcywgXCJDb2RlUGlwZWxpbmVcIiwge1xuICAgICAgcGlwZWxpbmVOYW1lOiBwcm9wcy5waXBlbGluZU5hbWUsXG4gICAgICBwaXBlbGluZVR5cGU6IGNvZGVwaXBlbGluZS5QaXBlbGluZVR5cGUuVjEsXG4gICAgICBzdGFnZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHN0YWdlTmFtZTogXCJTb3VyY2VcIixcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICBuZXcgY29kZXBpcGVsaW5lQWN0aW9ucy5TM1NvdXJjZUFjdGlvbih7XG4gICAgICAgICAgICAgIGFjdGlvbk5hbWU6IFwic291cmNlXCIsXG4gICAgICAgICAgICAgIGJ1Y2tldDogdGhpcy5hcnRpZmFjdHNCdWNrZXQsXG4gICAgICAgICAgICAgIHRyaWdnZXI6IGNvZGVwaXBlbGluZUFjdGlvbnMuUzNUcmlnZ2VyLk5PTkUsXG4gICAgICAgICAgICAgIGJ1Y2tldEtleTogdGhpcy50cmlnZ2VyT2JqZWN0S2V5LFxuICAgICAgICAgICAgICBvdXRwdXQ6IGR1bW15QXJ0aWZhY3QsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICAuLi5zdGFnZXMsXG4gICAgICBdLFxuICAgICAgcmVzdGFydEV4ZWN1dGlvbk9uVXBkYXRlOiB0cnVlLFxuICAgIH0pXG5cbiAgICBuZXcgZXZlbnRzLlJ1bGUodGhpcywgXCJQaXBlbGluZVRyaWdnZXJcIiwge1xuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIHNvdXJjZTogW1wiYXdzLnMzXCJdLFxuICAgICAgICBkZXRhaWxUeXBlOiBbXCJPYmplY3QgQ3JlYXRlZFwiXSxcbiAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgYnVja2V0OiB7XG4gICAgICAgICAgICBuYW1lOiBbdGhpcy5hcnRpZmFjdHNCdWNrZXQuYnVja2V0TmFtZV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvYmplY3Q6IHtcbiAgICAgICAgICAgIGtleTogW3RoaXMudHJpZ2dlck9iamVjdEtleV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0YXJnZXRzOiBbbmV3IHRhcmdldHMuQ29kZVBpcGVsaW5lKHRoaXMuY29kZVBpcGVsaW5lKV0sXG4gICAgfSlcblxuICAgIHRoaXMuY2RrUGlwZWxpbmUgPSBuZXcgcGlwZWxpbmVzLkNvZGVQaXBlbGluZSh0aGlzLCBcIkNka1BpcGVsaW5lXCIsIHtcbiAgICAgIHN5bnRoLFxuICAgICAgdXNlQ2hhbmdlU2V0czogZmFsc2UsXG4gICAgICBjb2RlUGlwZWxpbmU6IHRoaXMuY29kZVBpcGVsaW5lLFxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXRBd3NDZGtQYWNrYWdlSnNvbkZpbGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBBbHNvIGxvb2sgdXAgdGhlIHRyZWUgYSBiaXQgdG8gaGFuZGxlIHlhcm4gd29ya3NwYWNlcy5cbiAgICBjb25zdCBjYW5kaWRhdGVzID0gW1xuICAgICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwibm9kZV9tb2R1bGVzL2F3cy1jZGsvcGFja2FnZS5qc29uXCIpLFxuICAgICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwiLi4vbm9kZV9tb2R1bGVzL2F3cy1jZGsvcGFja2FnZS5qc29uXCIpLFxuICAgICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2F3cy1jZGsvcGFja2FnZS5qc29uXCIpLFxuICAgICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F3cy1jZGsvcGFja2FnZS5qc29uXCIpLFxuICAgIF1cblxuICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpIHtcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGNhbmRpZGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIHByaXZhdGUgY2xvdWRBc3NlbWJseVN0YWdlKFxuICAgIGNsb3VkQXNzZW1ibHlBcnRpZmFjdDogY29kZXBpcGVsaW5lLkFydGlmYWN0LFxuICAgIGNka0J1Y2tldDogczMuSUJ1Y2tldCxcbiAgICBwaXBlbGluZU5hbWU6IHN0cmluZyxcbiAgKTogeyBzdGFnZXM6IGNvZGVwaXBlbGluZS5TdGFnZVByb3BzW107IHN5bnRoOiBwaXBlbGluZXMuSUZpbGVTZXRQcm9kdWNlciB9IHtcbiAgICBjb25zdCBjbG91ZEFzc2VtYmx5TG9va3VwRm4gPSBuZXcgTm9kZWpzRnVuY3Rpb24oXG4gICAgICB0aGlzLFxuICAgICAgXCJDbG91ZEFzc2VtYmx5TG9va3VwRm5cIixcbiAgICAgIHtcbiAgICAgICAgZW50cnk6IHJlcXVpcmUucmVzb2x2ZShgJHtfX2Rpcm5hbWV9L2Nsb3VkLWFzc2VtYmx5LWxvb2t1cC1oYW5kbGVyYCksXG4gICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xOF9YLFxuICAgICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgbWVtb3J5U2l6ZTogNTEyLFxuICAgICAgICBhd3NTZGtDb25uZWN0aW9uUmV1c2U6IGZhbHNlLFxuICAgICAgfSxcbiAgICApXG5cbiAgICBjZGtCdWNrZXQuZ3JhbnRSZWFkV3JpdGUoY2xvdWRBc3NlbWJseUxvb2t1cEZuKVxuXG4gICAgY29uc3QgdXNlclBhcmFtZXRlcnM6IENsb3VkQXNzZW1ibHlMb29rdXBVc2VyUGFyYW1ldGVycyA9IHtcbiAgICAgIGJ1Y2tldE5hbWU6IGNka0J1Y2tldC5idWNrZXROYW1lLFxuICAgICAgb2JqZWN0S2V5OiBgcGlwZWxpbmVzLyR7cGlwZWxpbmVOYW1lfS9jbG91ZC1hc3NlbWJseS5qc29uYCxcbiAgICB9XG5cbiAgICBjb25zdCBzeW50aCA9IHBpcGVsaW5lcy5Db2RlUGlwZWxpbmVGaWxlU2V0LmZyb21BcnRpZmFjdChcbiAgICAgIGNsb3VkQXNzZW1ibHlBcnRpZmFjdCxcbiAgICApXG5cbiAgICBjb25zdCBzdGFnZXMgPSBbXG4gICAgICB7XG4gICAgICAgIHN0YWdlTmFtZTogXCJQcmVwYXJlQ2xvdWRBc3NlbWJseVwiLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgbmV3IGNvZGVwaXBlbGluZUFjdGlvbnMuTGFtYmRhSW52b2tlQWN0aW9uKHtcbiAgICAgICAgICAgIGFjdGlvbk5hbWU6IFwiY2xvdWQtYXNzZW1ibHktbG9va3VwXCIsXG4gICAgICAgICAgICBsYW1iZGE6IGNsb3VkQXNzZW1ibHlMb29rdXBGbixcbiAgICAgICAgICAgIG91dHB1dHM6IFtjbG91ZEFzc2VtYmx5QXJ0aWZhY3RdLFxuICAgICAgICAgICAgdXNlclBhcmFtZXRlcnMsXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF1cbiAgICByZXR1cm4geyBzdGFnZXMsIHN5bnRoIH1cbiAgfVxuXG4gIHByaXZhdGUgY2RrU291cmNlU3RhZ2UoXG4gICAgY2xvdWRBc3NlbWJseUFydGlmYWN0OiBjb2RlcGlwZWxpbmUuQXJ0aWZhY3QsXG4gICAgY2RrQnVja2V0OiBzMy5JQnVja2V0LFxuICAgIHBpcGVsaW5lTmFtZTogc3RyaW5nLFxuICAgIHBhcmFtZXRlcnNOYW1lc3BhY2U6IHN0cmluZyxcbiAgKTogeyBzdGFnZXM6IGNvZGVwaXBlbGluZS5TdGFnZVByb3BzW107IHN5bnRoOiBwaXBlbGluZXMuSUZpbGVTZXRQcm9kdWNlciB9IHtcbiAgICBjb25zdCBwcmVwYXJlQ2RrU291cmNlRm4gPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsIFwiUHJlcGFyZUNka1NvdXJjZUZuXCIsIHtcbiAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChcbiAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLi8uLi9hc3NldHMvcHJlcGFyZS1jZGstc291cmNlLWxhbWJkYVwiKSxcbiAgICAgICksXG4gICAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgICAgIC8vIFVzaW5nIHB5dGhvbiBpbnN0ZWFkIGlmIE5vZGVKUyBkdWUgdG8gemlwLXN1cHBvcnQgaW4gc3RkbGliLlxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuUFlUSE9OXzNfMTIsXG4gICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIG1lbW9yeVNpemU6IDUxMixcbiAgICB9KVxuXG4gICAgY29uc3QgYWNjb3VudCA9IGNkay5TdGFjay5vZih0aGlzKS5hY2NvdW50XG4gICAgY29uc3QgcmVnaW9uID0gY2RrLlN0YWNrLm9mKHRoaXMpLnJlZ2lvblxuXG4gICAgcHJlcGFyZUNka1NvdXJjZUZuLmdyYW50UHJpbmNpcGFsLmFkZFRvUHJpbmNpcGFsUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXCJzc206R2V0UGFyYW1ldGVyc0J5UGF0aFwiXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgYGFybjphd3M6c3NtOiR7cmVnaW9ufToke2FjY291bnR9OnBhcmFtZXRlci9saWZsaWctY2RrLyovcGlwZWxpbmUtdmFyaWFibGVzLypgLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgKVxuXG4gICAgY2RrQnVja2V0LmdyYW50UmVhZFdyaXRlKHByZXBhcmVDZGtTb3VyY2VGbilcblxuICAgIGNvbnN0IGNka1NvdXJjZUFydGlmYWN0ID0gbmV3IGNvZGVwaXBlbGluZS5BcnRpZmFjdCgpXG5cbiAgICBjb25zdCB1c2VyUGFyYW1ldGVyczogUHJlcGFyZUNka1NvdXJjZVVzZXJQYXJhbWV0ZXJzID0ge1xuICAgICAgYnVja2V0TmFtZTogY2RrQnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICBwcmVmaXg6IGBwaXBlbGluZXMvJHtwaXBlbGluZU5hbWV9L2AsXG4gICAgICBwYXJhbWV0ZXJzTmFtZXNwYWNlOiBwYXJhbWV0ZXJzTmFtZXNwYWNlLFxuICAgIH1cblxuICAgIGNvbnN0IHN5bnRoID0gbmV3IHBpcGVsaW5lcy5TaGVsbFN0ZXAoXCJHZW5lcmF0ZUNsb3VkQXNzZW1ibHlcIiwge1xuICAgICAgaW5wdXQ6IHBpcGVsaW5lcy5Db2RlUGlwZWxpbmVGaWxlU2V0LmZyb21BcnRpZmFjdChjZGtTb3VyY2VBcnRpZmFjdCksXG4gICAgICBpbnN0YWxsQ29tbWFuZHM6IFtcIm5wbSBjaVwiXSxcbiAgICAgIGNvbW1hbmRzOiBbXCJucHggY2RrIHN5bnRoXCJdLFxuICAgIH0pXG4gICAgY29uc3Qgc3RhZ2VzID0gW1xuICAgICAge1xuICAgICAgICBzdGFnZU5hbWU6IFwiUHJlcGFyZUNka1NvdXJjZVwiLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgbmV3IGNvZGVwaXBlbGluZUFjdGlvbnMuTGFtYmRhSW52b2tlQWN0aW9uKHtcbiAgICAgICAgICAgIGFjdGlvbk5hbWU6IFwicHJlcGFyZS1jZGstc291cmNlXCIsXG4gICAgICAgICAgICBsYW1iZGE6IHByZXBhcmVDZGtTb3VyY2VGbixcbiAgICAgICAgICAgIG91dHB1dHM6IFtjZGtTb3VyY2VBcnRpZmFjdF0sXG4gICAgICAgICAgICB1c2VyUGFyYW1ldGVycyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXVxuICAgIHJldHVybiB7IHN0YWdlcywgc3ludGggfVxuICB9XG5cbiAgYWRkU2xhY2tOb3RpZmljYXRpb24oXG4gICAgcHJvcHM6IE9taXQ8XG4gICAgICBTbGFja05vdGlmaWNhdGlvblByb3BzLFxuICAgICAgXCJwaXBlbGluZVwiIHwgXCJhcnRpZmFjdHNCdWNrZXRcIiB8IFwidHJpZ2dlck9iamVjdEtleVwiXG4gICAgPixcbiAgKTogdm9pZCB7XG4gICAgbmV3IFNsYWNrTm90aWZpY2F0aW9uKHRoaXMsIFwiU2xhY2tcIiwge1xuICAgICAgcGlwZWxpbmU6IHRoaXMuY29kZVBpcGVsaW5lLFxuICAgICAgYXJ0aWZhY3RzQnVja2V0OiB0aGlzLmFydGlmYWN0c0J1Y2tldCxcbiAgICAgIHRyaWdnZXJPYmplY3RLZXk6IHRoaXMudHJpZ2dlck9iamVjdEtleSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pXG4gIH1cbn1cblxuaW50ZXJmYWNlIFByZXBhcmVDZGtTb3VyY2VVc2VyUGFyYW1ldGVycyB7XG4gIGJ1Y2tldE5hbWU6IHN0cmluZ1xuICBwcmVmaXg6IHN0cmluZ1xuICBwYXJhbWV0ZXJzTmFtZXNwYWNlOiBzdHJpbmdcbn1cbiJdfQ==
|