aws-cdk 2.1004.0 → 2.1006.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/THIRD_PARTY_LICENSES +31 -31
- package/build-info.json +2 -2
- package/db.json.gz +0 -0
- package/lib/api/aws-auth/account-cache.d.ts +1 -1
- package/lib/api/aws-auth/account-cache.js +1 -1
- package/lib/api/aws-auth/awscli-compatible.d.ts +1 -1
- package/lib/api/aws-auth/awscli-compatible.js +9 -10
- package/lib/api/aws-auth/credential-plugins.d.ts +1 -1
- package/lib/api/aws-auth/credential-plugins.js +6 -7
- package/lib/api/aws-auth/provider-caching.d.ts +1 -1
- package/lib/api/aws-auth/provider-caching.js +1 -1
- package/lib/api/aws-auth/sdk-logger.d.ts +2 -2
- package/lib/api/aws-auth/sdk-logger.js +3 -4
- package/lib/api/aws-auth/sdk-provider.d.ts +4 -4
- package/lib/api/aws-auth/sdk-provider.js +11 -13
- package/lib/api/aws-auth/sdk.d.ts +12 -12
- package/lib/api/aws-auth/sdk.js +8 -9
- package/lib/api/aws-auth/tracing.js +3 -4
- package/lib/api/aws-auth/user-agent.js +4 -5
- package/lib/api/bootstrap/bootstrap-environment.d.ts +2 -2
- package/lib/api/bootstrap/bootstrap-environment.js +42 -46
- package/lib/api/bootstrap/bootstrap-props.d.ts +3 -3
- package/lib/api/bootstrap/bootstrap-props.js +1 -1
- package/lib/api/bootstrap/deploy-bootstrap.d.ts +4 -4
- package/lib/api/bootstrap/deploy-bootstrap.js +11 -14
- package/lib/api/bootstrap/legacy-template.d.ts +1 -1
- package/lib/api/bootstrap/legacy-template.js +1 -1
- package/lib/api/{evaluate-cloudformation-template.d.ts → cloudformation/evaluate-cloudformation-template.d.ts} +10 -9
- package/lib/api/cloudformation/evaluate-cloudformation-template.js +440 -0
- package/lib/api/cloudformation/index.d.ts +4 -0
- package/lib/api/cloudformation/index.js +21 -0
- package/lib/api/{deployments → cloudformation}/nested-stack-helpers.d.ts +1 -1
- package/lib/api/cloudformation/nested-stack-helpers.js +86 -0
- package/lib/api/cloudformation/stack-helpers.d.ts +96 -0
- package/lib/api/cloudformation/stack-helpers.js +158 -0
- package/lib/api/{util → cloudformation}/template-body-parameter.d.ts +4 -3
- package/lib/api/cloudformation/template-body-parameter.js +104 -0
- package/lib/api/context.js +3 -3
- package/lib/api/cxapp/cloud-assembly.js +13 -15
- package/lib/api/cxapp/cloud-executable.d.ts +3 -3
- package/lib/api/cxapp/cloud-executable.js +4 -5
- package/lib/api/cxapp/environments.d.ts +3 -3
- package/lib/api/cxapp/environments.js +4 -4
- package/lib/api/cxapp/exec.d.ts +4 -4
- package/lib/api/cxapp/exec.js +20 -23
- package/lib/api/deployments/asset-publishing.d.ts +2 -4
- package/lib/api/deployments/asset-publishing.js +24 -31
- package/lib/api/deployments/assets.d.ts +3 -3
- package/lib/api/deployments/assets.js +12 -13
- package/lib/api/deployments/{cloudformation.d.ts → cfn-api.d.ts} +5 -102
- package/lib/api/deployments/cfn-api.js +438 -0
- package/lib/api/deployments/checks.d.ts +2 -2
- package/lib/api/deployments/checks.js +12 -13
- package/lib/api/deployments/deploy-stack.d.ts +6 -7
- package/lib/api/deployments/deploy-stack.js +69 -80
- package/lib/api/deployments/deployment-result.js +3 -3
- package/lib/api/deployments/deployments.d.ts +7 -7
- package/lib/api/deployments/deployments.js +35 -42
- package/lib/api/deployments/hotswap-deployments.d.ts +7 -5
- package/lib/api/deployments/hotswap-deployments.js +160 -82
- package/lib/api/deployments/index.d.ts +0 -2
- package/lib/api/deployments/index.js +1 -3
- package/lib/api/environment/environment-access.d.ts +6 -6
- package/lib/api/environment/environment-access.js +18 -20
- package/lib/api/environment/environment-resources.d.ts +1 -1
- package/lib/api/environment/environment-resources.js +17 -19
- package/lib/api/environment/index.d.ts +1 -0
- package/lib/api/environment/index.js +2 -1
- package/lib/api/environment/placeholders.js +23 -0
- package/lib/api/garbage-collection/garbage-collector.d.ts +4 -4
- package/lib/api/garbage-collection/garbage-collector.js +57 -67
- package/lib/api/garbage-collection/progress-printer.d.ts +2 -2
- package/lib/api/garbage-collection/progress-printer.js +7 -7
- package/lib/api/garbage-collection/stack-refresh.d.ts +2 -2
- package/lib/api/garbage-collection/stack-refresh.js +12 -15
- package/lib/api/hotswap/appsync-mapping-templates.d.ts +4 -3
- package/lib/api/hotswap/appsync-mapping-templates.js +32 -27
- package/lib/api/hotswap/code-build-projects.d.ts +4 -3
- package/lib/api/hotswap/code-build-projects.js +19 -12
- package/lib/api/hotswap/common.d.ts +27 -64
- package/lib/api/hotswap/common.js +40 -82
- package/lib/api/hotswap/ecs-services.d.ts +4 -3
- package/lib/api/hotswap/ecs-services.js +44 -25
- package/lib/api/hotswap/lambda-functions.d.ts +4 -3
- package/lib/api/hotswap/lambda-functions.js +61 -75
- package/lib/api/hotswap/s3-bucket-deployments.d.ts +5 -9
- package/lib/api/hotswap/s3-bucket-deployments.js +26 -21
- package/lib/api/hotswap/stepfunctions-state-machines.d.ts +4 -3
- package/lib/api/hotswap/stepfunctions-state-machines.js +15 -9
- package/lib/api/logs/find-cloudwatch-logs.d.ts +1 -1
- package/lib/api/logs/find-cloudwatch-logs.js +7 -9
- package/lib/api/logs/logs-monitor.d.ts +2 -2
- package/lib/api/logs/logs-monitor.js +5 -8
- package/lib/api/plugin/plugin.js +6 -10
- package/lib/api/resource-import/importer.d.ts +10 -5
- package/lib/api/resource-import/importer.js +23 -29
- package/lib/api/resource-import/migrator.d.ts +4 -4
- package/lib/api/resource-import/migrator.js +6 -6
- package/lib/api/settings.d.ts +0 -3
- package/lib/api/settings.js +4 -40
- package/lib/api/stack-events/stack-activity-monitor.d.ts +1 -2
- package/lib/api/stack-events/stack-activity-monitor.js +14 -37
- package/lib/api/stack-events/stack-event-poller.js +9 -10
- package/lib/api/stack-events/stack-progress-monitor.d.ts +1 -1
- package/lib/api/stack-events/stack-progress-monitor.js +1 -1
- package/lib/api/toolkit-info.d.ts +3 -3
- package/lib/api/toolkit-info.js +20 -24
- package/lib/{tree.d.ts → api/tree.d.ts} +3 -3
- package/lib/api/tree.js +37 -0
- package/lib/api/util/rwlock.js +4 -4
- package/lib/api/work-graph/work-graph-builder.d.ts +2 -2
- package/lib/api/work-graph/work-graph-builder.js +4 -4
- package/lib/api/work-graph/work-graph-types.d.ts +2 -2
- package/lib/api/work-graph/work-graph-types.js +1 -1
- package/lib/api/work-graph/work-graph.d.ts +2 -2
- package/lib/api/work-graph/work-graph.js +13 -15
- package/lib/cli/activity-printer/base.d.ts +3 -3
- package/lib/cli/activity-printer/base.js +6 -8
- package/lib/cli/activity-printer/current.d.ts +2 -1
- package/lib/cli/activity-printer/current.js +7 -11
- package/lib/cli/activity-printer/history.d.ts +2 -1
- package/lib/cli/activity-printer/history.js +2 -3
- package/lib/cli/cdk-toolkit.d.ts +9 -15
- package/lib/cli/cdk-toolkit.js +90 -73
- package/lib/cli/ci-systems.d.ts +29 -0
- package/lib/cli/ci-systems.js +61 -0
- package/lib/cli/cli-config.js +3 -3
- package/lib/cli/cli.d.ts +1 -1
- package/lib/cli/cli.js +69 -52
- package/lib/cli/convert-to-user-input.js +110 -111
- package/lib/{toolkit → cli/io-host}/cli-io-host.d.ts +22 -3
- package/lib/cli/io-host/cli-io-host.js +356 -0
- package/lib/cli/io-host/index.d.ts +1 -0
- package/lib/{toolkit/error.js → cli/io-host/index.js} +2 -2
- package/lib/cli/messages.d.ts +2 -2
- package/lib/cli/messages.js +2 -3
- package/lib/cli/parse-command-line-arguments.js +1 -1
- package/lib/cli/pretty-print-error.d.ts +1 -0
- package/lib/cli/pretty-print-error.js +35 -0
- package/lib/cli/root-dir.js +4 -4
- package/lib/cli/user-configuration.js +57 -14
- package/lib/cli/user-input.js +1 -1
- package/lib/cli/util/npm.js +3 -3
- package/lib/cli/util/yargs-helpers.d.ts +1 -1
- package/lib/cli/util/yargs-helpers.js +3 -3
- package/lib/cli/version.js +4 -4
- package/lib/commands/context.d.ts +1 -1
- package/lib/commands/context.js +7 -8
- package/lib/commands/diff.d.ts +50 -0
- package/lib/commands/diff.js +215 -0
- package/lib/commands/init/index.d.ts +1 -0
- package/lib/commands/init/index.js +18 -0
- package/lib/commands/init/init-hooks.js +63 -0
- package/lib/commands/init/init.js +435 -0
- package/lib/{os.js → commands/init/os.js} +4 -4
- package/lib/{list-stacks.d.ts → commands/list-stacks.d.ts} +1 -1
- package/lib/{list-stacks.js → commands/list-stacks.js} +2 -2
- package/lib/commands/migrate.d.ts +1 -1
- package/lib/commands/migrate.js +29 -32
- package/lib/context-providers/ami.d.ts +4 -2
- package/lib/context-providers/ami.js +8 -8
- package/lib/context-providers/availability-zones.d.ts +4 -2
- package/lib/context-providers/availability-zones.js +4 -4
- package/lib/context-providers/cc-api-provider.d.ts +9 -13
- package/lib/context-providers/cc-api-provider.js +88 -66
- package/lib/context-providers/endpoint-service-availability-zones.d.ts +4 -2
- package/lib/context-providers/endpoint-service-availability-zones.js +6 -6
- package/lib/context-providers/hosted-zones.d.ts +5 -3
- package/lib/context-providers/hosted-zones.js +11 -11
- package/lib/context-providers/index.d.ts +22 -8
- package/lib/context-providers/index.js +35 -17
- package/lib/context-providers/keys.d.ts +4 -2
- package/lib/context-providers/keys.js +8 -8
- package/lib/context-providers/load-balancers.d.ts +3 -3
- package/lib/context-providers/load-balancers.js +15 -18
- package/lib/context-providers/security-groups.js +10 -12
- package/lib/context-providers/ssm-parameters.d.ts +4 -2
- package/lib/context-providers/ssm-parameters.js +7 -7
- package/lib/context-providers/vpcs.d.ts +4 -2
- package/lib/context-providers/vpcs.js +14 -15
- package/lib/index.js +115212 -114237
- package/lib/init-templates/.init-version.json +1 -1
- package/lib/init-templates/.recommended-feature-flags.json +2 -1
- package/lib/legacy-exports-source.d.ts +4 -5
- package/lib/legacy-exports-source.js +6 -7
- package/lib/legacy-logging-source.js +1 -1
- package/lib/logging.d.ts +3 -3
- package/lib/logging.js +38 -36
- package/lib/notices.d.ts +22 -18
- package/lib/notices.js +67 -73
- package/package.json +18 -20
- package/lib/api/deployments/cloudformation.js +0 -597
- package/lib/api/deployments/nested-stack-helpers.js +0 -88
- package/lib/api/evaluate-cloudformation-template.js +0 -443
- package/lib/api/util/placeholders.js +0 -24
- package/lib/api/util/template-body-parameter.js +0 -103
- package/lib/diff.d.ts +0 -28
- package/lib/diff.js +0 -165
- package/lib/init-hooks.js +0 -63
- package/lib/init.js +0 -437
- package/lib/toolkit/cli-io-host.js +0 -324
- package/lib/toolkit/error.d.ts +0 -1
- package/lib/tree.js +0 -40
- /package/lib/api/{util → environment}/placeholders.d.ts +0 -0
- /package/lib/{init-hooks.d.ts → commands/init/init-hooks.d.ts} +0 -0
- /package/lib/{init.d.ts → commands/init/init.d.ts} +0 -0
- /package/lib/{os.d.ts → commands/init/os.d.ts} +0 -0
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CredentialPlugins = void 0;
|
|
4
4
|
const util_1 = require("util");
|
|
5
5
|
const provider_caching_1 = require("./provider-caching");
|
|
6
|
+
const api_1 = require("../../../../@aws-cdk/tmp-toolkit-helpers/src/api");
|
|
6
7
|
const logging_1 = require("../../logging");
|
|
7
|
-
const error_1 = require("../../toolkit/error");
|
|
8
8
|
const util_2 = require("../../util");
|
|
9
9
|
const plugin_1 = require("../plugin/plugin");
|
|
10
10
|
/**
|
|
@@ -22,7 +22,7 @@ const plugin_1 = require("../plugin/plugin");
|
|
|
22
22
|
class CredentialPlugins {
|
|
23
23
|
constructor(host) {
|
|
24
24
|
this.cache = {};
|
|
25
|
-
this.host = host
|
|
25
|
+
this.host = host ?? plugin_1.PluginHost.instance;
|
|
26
26
|
}
|
|
27
27
|
async fetchCredentialsFor(awsAccountId, mode) {
|
|
28
28
|
const key = `${awsAccountId}-${mode}`;
|
|
@@ -110,7 +110,7 @@ async function v3ProviderFromPlugin(producer) {
|
|
|
110
110
|
return v3ProviderFromV2Credentials(initial);
|
|
111
111
|
}
|
|
112
112
|
else {
|
|
113
|
-
throw new
|
|
113
|
+
throw new api_1.AuthenticationError(`Plugin returned a value that doesn't resemble AWS credentials: ${(0, util_1.inspect)(initial)}`);
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
/**
|
|
@@ -118,14 +118,13 @@ async function v3ProviderFromPlugin(producer) {
|
|
|
118
118
|
*/
|
|
119
119
|
function v3ProviderFromV2Credentials(x) {
|
|
120
120
|
return async () => {
|
|
121
|
-
var _a;
|
|
122
121
|
// Get will fetch or refresh as necessary
|
|
123
122
|
await x.getPromise();
|
|
124
123
|
return {
|
|
125
124
|
accessKeyId: x.accessKeyId,
|
|
126
125
|
secretAccessKey: x.secretAccessKey,
|
|
127
126
|
sessionToken: x.sessionToken,
|
|
128
|
-
expiration:
|
|
127
|
+
expiration: x.expireTime ?? undefined,
|
|
129
128
|
};
|
|
130
129
|
};
|
|
131
130
|
}
|
|
@@ -134,7 +133,7 @@ function refreshFromPluginProvider(current, producer) {
|
|
|
134
133
|
if ((0, provider_caching_1.credentialsAboutToExpire)(current)) {
|
|
135
134
|
const newCreds = await producer();
|
|
136
135
|
if (!isV3Credentials(newCreds)) {
|
|
137
|
-
throw new
|
|
136
|
+
throw new api_1.AuthenticationError(`Plugin initially returned static V3 credentials but now returned something else: ${(0, util_1.inspect)(newCreds)}`);
|
|
138
137
|
}
|
|
139
138
|
current = newCreds;
|
|
140
139
|
}
|
|
@@ -150,4 +149,4 @@ function isV2Credentials(x) {
|
|
|
150
149
|
function isV3Credentials(x) {
|
|
151
150
|
return !!(x && typeof x === 'object' && x.accessKeyId && !isV2Credentials(x));
|
|
152
151
|
}
|
|
153
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGVudGlhbC1wbHVnaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY3JlZGVudGlhbC1wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUcvQix5REFBbUY7QUFDbkYsMkNBQStDO0FBQy9DLCtDQUEwRDtBQUMxRCxxQ0FBZ0Q7QUFFaEQsNkNBQThDO0FBRTlDOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBYSxpQkFBaUI7SUFJNUIsWUFBWSxJQUFpQjtRQUhaLFVBQUssR0FBZ0UsRUFBRSxDQUFDO1FBSXZGLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxhQUFKLElBQUksY0FBSixJQUFJLEdBQUksbUJBQVUsQ0FBQyxRQUFRLENBQUM7SUFDMUMsQ0FBQztJQUVNLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxZQUFvQixFQUFFLElBQVU7UUFDL0QsTUFBTSxHQUFHLEdBQUcsR0FBRyxZQUFZLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsb0JBQW9CO1FBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU8sS0FBSyxDQUFDLGlCQUFpQixDQUFDLFlBQW9CLEVBQUUsSUFBVTtRQUM5RCxNQUFNLFlBQVksR0FBK0IsRUFBRSxDQUFDO1FBQ3BELDREQUE0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QVMsZUFBZSxDQUFDLENBQXVCO0lBQzlDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsV0FBVyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluc3BlY3QgfSBmcm9tICd1dGlsJztcbmltcG9ydCB0eXBlIHsgQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlLCBGb3JSZWFkaW5nLCBGb3JXcml0aW5nLCBQbHVnaW5Qcm92aWRlclJlc3VsdCwgU0RLdjJDb21wYXRpYmxlQ3JlZGVudGlhbHMsIFNES3YzQ29tcGF0aWJsZUNyZWRlbnRpYWxQcm92aWRlciwgU0RLdjNDb21wYXRpYmxlQ3JlZGVudGlhbHMgfSBmcm9tICdAYXdzLWNkay9jbGktcGx1Z2luLWNvbnRyYWN0JztcbmltcG9ydCB0eXBlIHsgQXdzQ3JlZGVudGlhbElkZW50aXR5LCBBd3NDcmVkZW50aWFsSWRlbnRpdHlQcm92aWRlciB9IGZyb20gJ0BzbWl0aHkvdHlwZXMnO1xuaW1wb3J0IHsgY3JlZGVudGlhbHNBYm91dFRvRXhwaXJlLCBtYWtlQ2FjaGluZ1Byb3ZpZGVyIH0gZnJvbSAnLi9wcm92aWRlci1jYWNoaW5nJztcbmltcG9ydCB7IGRlYnVnLCB3YXJuaW5nIH0gZnJvbSAnLi4vLi4vbG9nZ2luZyc7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbkVycm9yIH0gZnJvbSAnLi4vLi4vdG9vbGtpdC9lcnJvcic7XG5pbXBvcnQgeyBmb3JtYXRFcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB7IE1vZGUgfSBmcm9tICcuLi9wbHVnaW4vbW9kZSc7XG5pbXBvcnQgeyBQbHVnaW5Ib3N0IH0gZnJvbSAnLi4vcGx1Z2luL3BsdWdpbic7XG5cbi8qKlxuICogQ2FjaGUgZm9yIGNyZWRlbnRpYWwgcHJvdmlkZXJzLlxuICpcbiAqIEdpdmVuIGFuIGFjY291bnQgYW5kIGFuIG9wZXJhdGluZyBtb2RlIChyZWFkIG9yIHdyaXRlKSB3aWxsIHJldHVybiBhblxuICogYXBwcm9wcmlhdGUgY3JlZGVudGlhbCBwcm92aWRlciBmb3IgY3JlZGVudGlhbHMgZm9yIHRoZSBnaXZlbiBhY2NvdW50LiBUaGVcbiAqIGNyZWRlbnRpYWwgcHJvdmlkZXIgd2lsbCBiZSBjYWNoZWQgc28gdGhhdCBtdWx0aXBsZSBBV1MgY2xpZW50cyBmb3IgdGhlIHNhbWVcbiAqIGVudmlyb25tZW50IHdpbGwgbm90IG1ha2UgbXVsdGlwbGUgbmV0d29yayBjYWxscyB0byBvYnRhaW4gY3JlZGVudGlhbHMuXG4gKlxuICogV2lsbCB1c2UgZGVmYXVsdCBjcmVkZW50aWFscyBpZiB0aGV5IGFyZSBmb3IgdGhlIHJpZ2h0IGFjY291bnQ7IG90aGVyd2lzZSxcbiAqIGFsbCBsb2FkZWQgY3JlZGVudGlhbCBwcm92aWRlciBwbHVnaW5zIHdpbGwgYmUgdHJpZWQgdG8gb2J0YWluIGNyZWRlbnRpYWxzXG4gKiBmb3IgdGhlIGdpdmVuIGFjY291bnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBDcmVkZW50aWFsUGx1Z2lucyB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2FjaGU6IHsgW2tleTogc3RyaW5nXTogUGx1Z2luQ3JlZGVudGlhbHNGZXRjaFJlc3VsdCB8IHVuZGVmaW5lZCB9ID0ge307XG4gIHByaXZhdGUgcmVhZG9ubHkgaG9zdDogUGx1Z2luSG9zdDtcblxuICBjb25zdHJ1Y3Rvcihob3N0PzogUGx1Z2luSG9zdCkge1xuICAgIHRoaXMuaG9zdCA9IGhvc3QgPz8gUGx1Z2luSG9zdC5pbnN0YW5jZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBmZXRjaENyZWRlbnRpYWxzRm9yKGF3c0FjY291bnRJZDogc3RyaW5nLCBtb2RlOiBNb2RlKTogUHJvbWlzZTxQbHVnaW5DcmVkZW50aWFsc0ZldGNoUmVzdWx0IHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3Qga2V5ID0gYCR7YXdzQWNjb3VudElkfS0ke21vZGV9YDtcbiAgICBpZiAoIShrZXkgaW4gdGhpcy5jYWNoZSkpIHtcbiAgICAgIHRoaXMuY2FjaGVba2V5XSA9IGF3YWl0IHRoaXMubG9va3VwQ3JlZGVudGlhbHMoYXdzQWNjb3VudElkLCBtb2RlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVba2V5XTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXZhaWxhYmxlUGx1Z2luTmFtZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmhvc3QuY3JlZGVudGlhbFByb3ZpZGVyU291cmNlcy5tYXAoKHMpID0+IHMubmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvb2t1cENyZWRlbnRpYWxzKGF3c0FjY291bnRJZDogc3RyaW5nLCBtb2RlOiBNb2RlKTogUHJvbWlzZTxQbHVnaW5DcmVkZW50aWFsc0ZldGNoUmVzdWx0IHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgdHJpZWRTb3VyY2VzOiBDcmVkZW50aWFsUHJvdmlkZXJTb3VyY2VbXSA9IFtdO1xuICAgIC8vIE90aGVyd2lzZSwgaW5zcGVjdCB0aGUgdmFyaW91cyBjcmVkZW50aWFsIHNvdXJjZXMgd2UgaGF2ZVxuICAgIGZvciAoY29uc3Qgc291cmNlIG9mIHRoaXMuaG9zdC5jcmVkZW50aWFsUHJvdmlkZXJTb3VyY2VzKSB7XG4gICAgICBsZXQgYXZhaWxhYmxlOiBib29sZWFuO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXZhaWxhYmxlID0gYXdhaXQgc291cmNlLmlzQXZhaWxhYmxlKCk7XG4gICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgLy8gVGhpcyBzaG91bGRuJ3QgaGFwcGVuLCBidXQgbGV0J3MgZ3VhcmQgYWdhaW5zdCBpdCBhbnl3YXlcbiAgICAgICAgd2FybmluZyhgVW5jYXVnaHQgZXhjZXB0aW9uIGluICR7c291cmNlLm5hbWV9OiAke2Zvcm1hdEVycm9yTWVzc2FnZShlKX1gKTtcbiAgICAgICAgYXZhaWxhYmxlID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICghYXZhaWxhYmxlKSB7XG4gICAgICAgIGRlYnVnKCdDcmVkZW50aWFscyBzb3VyY2UgJXMgaXMgbm90IGF2YWlsYWJsZSwgaWdub3JpbmcgaXQuJywgc291cmNlLm5hbWUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHRyaWVkU291cmNlcy5wdXNoKHNvdXJjZSk7XG4gICAgICBsZXQgY2FuUHJvdmlkZTogYm9vbGVhbjtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNhblByb3ZpZGUgPSBhd2FpdCBzb3VyY2UuY2FuUHJvdmlkZUNyZWRlbnRpYWxzKGF3c0FjY291bnRJZCk7XG4gICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgLy8gVGhpcyBzaG91bGRuJ3QgaGFwcGVuLCBidXQgbGV0J3MgZ3VhcmQgYWdhaW5zdCBpdCBhbnl3YXlcbiAgICAgICAgd2FybmluZyhgVW5jYXVnaHQgZXhjZXB0aW9uIGluICR7c291cmNlLm5hbWV9OiAke2Zvcm1hdEVycm9yTWVzc2FnZShlKX1gKTtcbiAgICAgICAgY2FuUHJvdmlkZSA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKCFjYW5Qcm92aWRlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgZGVidWcoYFVzaW5nICR7c291cmNlLm5hbWV9IGNyZWRlbnRpYWxzIGZvciBhY2NvdW50ICR7YXdzQWNjb3VudElkfWApO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjcmVkZW50aWFsczogYXdhaXQgdjNQcm92aWRlckZyb21QbHVnaW4oKCkgPT4gc291cmNlLmdldFByb3ZpZGVyKGF3c0FjY291bnRJZCwgbW9kZSBhcyBGb3JSZWFkaW5nIHwgRm9yV3JpdGluZywge1xuICAgICAgICAgIHN1cHBvcnRzVjNQcm92aWRlcnM6IHRydWUsXG4gICAgICAgIH0pKSxcbiAgICAgICAgcGx1Z2luTmFtZTogc291cmNlLm5hbWUsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogUmVzdWx0IGZyb20gdHJ5aW5nIHRvIGZldGNoIGNyZWRlbnRpYWxzIGZyb20gdGhlIFBsdWdpbiBob3N0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luQ3JlZGVudGlhbHNGZXRjaFJlc3VsdCB7XG4gIC8qKlxuICAgKiBTREstdjMgY29tcGF0aWJsZSBjcmVkZW50aWFsIHByb3ZpZGVyXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFsczogQXdzQ3JlZGVudGlhbElkZW50aXR5UHJvdmlkZXI7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgcGx1Z2luIHRoYXQgc3VjY2Vzc2Z1bGx5IHByb3ZpZGVkIGNyZWRlbnRpYWxzXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5OYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGFrZSBhIGZ1bmN0aW9uIHRoYXQgY2FsbHMgdGhlIHBsdWdpbiwgYW5kIHR1cm4gaXQgaW50byBhbiBTREt2My1jb21wYXRpYmxlIGNyZWRlbnRpYWwgcHJvdmlkZXIuXG4gKlxuICogV2hhdCB3ZSB3aWxsIGRvIGlzIHRoZSBmb2xsb3dpbmc6XG4gKlxuICogLSBRdWVyeSB0aGUgcGx1Z2luIGFuZCBzZWUgd2hhdCBraW5kIG9mIHJlc3VsdCBpdCBnaXZlcyB1cy5cbiAqIC0gSWYgdGhlIHJlc3VsdCBpcyBzZWxmLXJlZnJlc2hpbmcgb3IgZG9lc24ndCBuZWVkIHJlZnJlc2hpbmcsIHdlIHR1cm4gaXQgaW50byBhbiBTREt2MyBwcm92aWRlclxuICogICBhbmQgcmV0dXJuIGl0IGRpcmVjdGx5LlxuICogICAqIElmIHRoZSB1bmRlcmx5aW5nIHJldHVybiB2YWx1ZSBpcyBhIHByb3ZpZGVyLCB3ZSB3aWxsIG1ha2UgaXQgYSBjYWNoaW5nIHByb3ZpZGVyXG4gKiAgICAgKGJlY2F1c2Ugd2UgY2FuJ3Qga25vdyBpZiBpdCB3aWxsIGNhY2hlIGJ5IGl0c2VsZiBvciBub3QpLlxuICogICAqIElmIHRoZSB1bmRlcmx5aW5nIHJldHVybiB2YWx1ZSBpcyBhIHN0YXRpYyBjcmVkZW50aWFsLCBjYWNoaW5nIGlzbid0IHJlbGV2YW50LlxuICogICAqIElmIHRoZSB1bmRlcmx5aW5nIHJldHVybiB2YWx1ZSBpcyBWMiBjcmVkZW50aWFscywgdGhvc2UgaGF2ZSBjYWNoaW5nIGJ1aWx0LWluLlxuICogLSBJZiB0aGUgcmVzdWx0IGlzIGEgc3RhdGljIGNyZWRlbnRpYWwgdGhhdCBleHBpcmVzLCB3ZSB3aWxsIHdyYXAgaXQgaW4gYW4gU0RLdjMgcHJvdmlkZXJcbiAqICAgdGhhdCB3aWxsIHF1ZXJ5IHRoZSBwbHVnaW4gYWdhaW4gd2hlbiB0aGUgY3JlZGVudGlhbCBleHBpcmVzLlxuICovXG5hc3luYyBmdW5jdGlvbiB2M1Byb3ZpZGVyRnJvbVBsdWdpbihwcm9kdWNlcjogKCkgPT4gUHJvbWlzZTxQbHVnaW5Qcm92aWRlclJlc3VsdD4pOiBQcm9taXNlPEF3c0NyZWRlbnRpYWxJZGVudGl0eVByb3ZpZGVyPiB7XG4gIGNvbnN0IGluaXRpYWwgPSBhd2FpdCBwcm9kdWNlcigpO1xuXG4gIGlmIChpc1YzUHJvdmlkZXIoaW5pdGlhbCkpIHtcbiAgICAvLyBBbHJlYWR5IGEgcHJvdmlkZXIsIG1ha2UgY2FjaGluZ1xuICAgIHJldHVybiBtYWtlQ2FjaGluZ1Byb3ZpZGVyKGluaXRpYWwpO1xuICB9IGVsc2UgaWYgKGlzVjNDcmVkZW50aWFscyhpbml0aWFsKSAmJiBpbml0aWFsLmV4cGlyYXRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIFN0YXRpYyBjcmVkZW50aWFscyB0aGF0IGRvbid0IG5lZWQgcmVmcmVzaGluZyBub3IgY2FjaGluZ1xuICAgIHJldHVybiAoKSA9PiBQcm9taXNlLnJlc29sdmUoaW5pdGlhbCk7XG4gIH0gZWxzZSBpZiAoaXNWM0NyZWRlbnRpYWxzKGluaXRpYWwpICYmIGluaXRpYWwuZXhwaXJhdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gU3RhdGljIGNyZWRlbnRpYWxzIHRoYXQgZG8gbmVlZCByZWZyZXNoaW5nIGFuZCBjYWNoaW5nXG4gICAgcmV0dXJuIHJlZnJlc2hGcm9tUGx1Z2luUHJvdmlkZXIoaW5pdGlhbCwgcHJvZHVjZXIpO1xuICB9IGVsc2UgaWYgKGlzVjJDcmVkZW50aWFscyhpbml0aWFsKSkge1xuICAgIC8vIFYyIGNyZWRlbnRpYWxzIHRoYXQgcmVmcmVzaCBhbmQgY2FjaGUgdGhlbXNlbHZlc1xuICAgIHJldHVybiB2M1Byb3ZpZGVyRnJvbVYyQ3JlZGVudGlhbHMoaW5pdGlhbCk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEF1dGhlbnRpY2F0aW9uRXJyb3IoYFBsdWdpbiByZXR1cm5lZCBhIHZhbHVlIHRoYXQgZG9lc24ndCByZXNlbWJsZSBBV1MgY3JlZGVudGlhbHM6ICR7aW5zcGVjdChpbml0aWFsKX1gKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgVjIgY3JlZGVudGlhbCBpbnRvIGEgVjMtY29tcGF0aWJsZSBwcm92aWRlclxuICovXG5mdW5jdGlvbiB2M1Byb3ZpZGVyRnJvbVYyQ3JlZGVudGlhbHMoeDogU0RLdjJDb21wYXRpYmxlQ3JlZGVudGlhbHMpOiBBd3NDcmVkZW50aWFsSWRlbnRpdHlQcm92aWRlciB7XG4gIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgLy8gR2V0IHdpbGwgZmV0Y2ggb3IgcmVmcmVzaCBhcyBuZWNlc3NhcnlcbiAgICBhd2FpdCB4LmdldFByb21pc2UoKTtcblxuICAgIHJldHVybiB7XG4gICAgICBhY2Nlc3NLZXlJZDogeC5hY2Nlc3NLZXlJZCxcbiAgICAgIHNlY3JldEFjY2Vzc0tleTogeC5zZWNyZXRBY2Nlc3NLZXksXG4gICAgICBzZXNzaW9uVG9rZW46IHguc2Vzc2lvblRva2VuLFxuICAgICAgZXhwaXJhdGlvbjogeC5leHBpcmVUaW1lID8/IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9O1xufVxuXG5mdW5jdGlvbiByZWZyZXNoRnJvbVBsdWdpblByb3ZpZGVyKGN1cnJlbnQ6IEF3c0NyZWRlbnRpYWxJZGVudGl0eSwgcHJvZHVjZXI6ICgpID0+IFByb21pc2U8UGx1Z2luUHJvdmlkZXJSZXN1bHQ+KTogQXdzQ3JlZGVudGlhbElkZW50aXR5UHJvdmlkZXIge1xuICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgIGlmIChjcmVkZW50aWFsc0Fib3V0VG9FeHBpcmUoY3VycmVudCkpIHtcbiAgICAgIGNvbnN0IG5ld0NyZWRzID0gYXdhaXQgcHJvZHVjZXIoKTtcbiAgICAgIGlmICghaXNWM0NyZWRlbnRpYWxzKG5ld0NyZWRzKSkge1xuICAgICAgICB0aHJvdyBuZXcgQXV0aGVudGljYXRpb25FcnJvcihgUGx1Z2luIGluaXRpYWxseSByZXR1cm5lZCBzdGF0aWMgVjMgY3JlZGVudGlhbHMgYnV0IG5vdyByZXR1cm5lZCBzb21ldGhpbmcgZWxzZTogJHtpbnNwZWN0KG5ld0NyZWRzKX1gKTtcbiAgICAgIH1cbiAgICAgIGN1cnJlbnQgPSBuZXdDcmVkcztcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGlzVjNQcm92aWRlcih4OiBQbHVnaW5Qcm92aWRlclJlc3VsdCk6IHggaXMgU0RLdjNDb21wYXRpYmxlQ3JlZGVudGlhbFByb3ZpZGVyIHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSAnZnVuY3Rpb24nO1xufVxuXG5mdW5jdGlvbiBpc1YyQ3JlZGVudGlhbHMoeDogUGx1Z2luUHJvdmlkZXJSZXN1bHQpOiB4IGlzIFNES3YyQ29tcGF0aWJsZUNyZWRlbnRpYWxzIHtcbiAgcmV0dXJuICEhKHggJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmICh4IGFzIFNES3YyQ29tcGF0aWJsZUNyZWRlbnRpYWxzKS5nZXRQcm9taXNlKTtcbn1cblxuZnVuY3Rpb24gaXNWM0NyZWRlbnRpYWxzKHg6IFBsdWdpblByb3ZpZGVyUmVzdWx0KTogeCBpcyBTREt2M0NvbXBhdGlibGVDcmVkZW50aWFscyB7XG4gIHJldHVybiAhISh4ICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiB4LmFjY2Vzc0tleUlkICYmICFpc1YyQ3JlZGVudGlhbHMoeCkpO1xufVxuIl19
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGVudGlhbC1wbHVnaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY3JlZGVudGlhbC1wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUcvQix5REFBbUY7QUFDbkYsMEVBQXVGO0FBQ3ZGLDJDQUErQztBQUMvQyxxQ0FBZ0Q7QUFFaEQsNkNBQThDO0FBRTlDOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBYSxpQkFBaUI7SUFJNUIsWUFBWSxJQUFpQjtRQUhaLFVBQUssR0FBZ0UsRUFBRSxDQUFDO1FBSXZGLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLG1CQUFVLENBQUMsUUFBUSxDQUFDO0lBQzFDLENBQUM7SUFFTSxLQUFLLENBQUMsbUJBQW1CLENBQUMsWUFBb0IsRUFBRSxJQUFVO1FBQy9ELE1BQU0sR0FBRyxHQUFHLEdBQUcsWUFBWSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFXLG9CQUFvQjtRQUM3QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVPLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxZQUFvQixFQUFFLElBQVU7UUFDOUQsTUFBTSxZQUFZLEdBQStCLEVBQUUsQ0FBQztRQUNwRCw0REFBNEQ7UUFDNUQsS0FBSyxNQUFNLE1B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QU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsV0FBVyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluc3BlY3QgfSBmcm9tICd1dGlsJztcbmltcG9ydCB0eXBlIHsgQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlLCBGb3JSZWFkaW5nLCBGb3JXcml0aW5nLCBQbHVnaW5Qcm92aWRlclJlc3VsdCwgU0RLdjJDb21wYXRpYmxlQ3JlZGVudGlhbHMsIFNES3YzQ29tcGF0aWJsZUNyZWRlbnRpYWxQcm92aWRlciwgU0RLdjNDb21wYXRpYmxlQ3JlZGVudGlhbHMgfSBmcm9tICdAYXdzLWNkay9jbGktcGx1Z2luLWNvbnRyYWN0JztcbmltcG9ydCB0eXBlIHsgQXdzQ3JlZGVudGlhbElkZW50aXR5LCBBd3NDcmVkZW50aWFsSWRlbnRpdHlQcm92aWRlciB9IGZyb20gJ0BzbWl0aHkvdHlwZXMnO1xuaW1wb3J0IHsgY3JlZGVudGlhbHNBYm91dFRvRXhwaXJlLCBtYWtlQ2FjaGluZ1Byb3ZpZGVyIH0gZnJvbSAnLi9wcm92aWRlci1jYWNoaW5nJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uRXJyb3IgfSBmcm9tICcuLi8uLi8uLi8uLi9AYXdzLWNkay90bXAtdG9vbGtpdC1oZWxwZXJzL3NyYy9hcGknO1xuaW1wb3J0IHsgZGVidWcsIHdhcm5pbmcgfSBmcm9tICcuLi8uLi9sb2dnaW5nJztcbmltcG9ydCB7IGZvcm1hdEVycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uL3V0aWwnO1xuaW1wb3J0IHR5cGUgeyBNb2RlIH0gZnJvbSAnLi4vcGx1Z2luL21vZGUnO1xuaW1wb3J0IHsgUGx1Z2luSG9zdCB9IGZyb20gJy4uL3BsdWdpbi9wbHVnaW4nO1xuXG4vKipcbiAqIENhY2hlIGZvciBjcmVkZW50aWFsIHByb3ZpZGVycy5cbiAqXG4gKiBHaXZlbiBhbiBhY2NvdW50IGFuZCBhbiBvcGVyYXRpbmcgbW9kZSAocmVhZCBvciB3cml0ZSkgd2lsbCByZXR1cm4gYW5cbiAqIGFwcHJvcHJpYXRlIGNyZWRlbnRpYWwgcHJvdmlkZXIgZm9yIGNyZWRlbnRpYWxzIGZvciB0aGUgZ2l2ZW4gYWNjb3VudC4gVGhlXG4gKiBjcmVkZW50aWFsIHByb3ZpZGVyIHdpbGwgYmUgY2FjaGVkIHNvIHRoYXQgbXVsdGlwbGUgQVdTIGNsaWVudHMgZm9yIHRoZSBzYW1lXG4gKiBlbnZpcm9ubWVudCB3aWxsIG5vdCBtYWtlIG11bHRpcGxlIG5ldHdvcmsgY2FsbHMgdG8gb2J0YWluIGNyZWRlbnRpYWxzLlxuICpcbiAqIFdpbGwgdXNlIGRlZmF1bHQgY3JlZGVudGlhbHMgaWYgdGhleSBhcmUgZm9yIHRoZSByaWdodCBhY2NvdW50OyBvdGhlcndpc2UsXG4gKiBhbGwgbG9hZGVkIGNyZWRlbnRpYWwgcHJvdmlkZXIgcGx1Z2lucyB3aWxsIGJlIHRyaWVkIHRvIG9idGFpbiBjcmVkZW50aWFsc1xuICogZm9yIHRoZSBnaXZlbiBhY2NvdW50LlxuICovXG5leHBvcnQgY2xhc3MgQ3JlZGVudGlhbFBsdWdpbnMge1xuICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlOiB7IFtrZXk6IHN0cmluZ106IFBsdWdpbkNyZWRlbnRpYWxzRmV0Y2hSZXN1bHQgfCB1bmRlZmluZWQgfSA9IHt9O1xuICBwcml2YXRlIHJlYWRvbmx5IGhvc3Q6IFBsdWdpbkhvc3Q7XG5cbiAgY29uc3RydWN0b3IoaG9zdD86IFBsdWdpbkhvc3QpIHtcbiAgICB0aGlzLmhvc3QgPSBob3N0ID8/IFBsdWdpbkhvc3QuaW5zdGFuY2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZmV0Y2hDcmVkZW50aWFsc0Zvcihhd3NBY2NvdW50SWQ6IHN0cmluZywgbW9kZTogTW9kZSk6IFByb21pc2U8UGx1Z2luQ3JlZGVudGlhbHNGZXRjaFJlc3VsdCB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGtleSA9IGAke2F3c0FjY291bnRJZH0tJHttb2RlfWA7XG4gICAgaWYgKCEoa2V5IGluIHRoaXMuY2FjaGUpKSB7XG4gICAgICB0aGlzLmNhY2hlW2tleV0gPSBhd2FpdCB0aGlzLmxvb2t1cENyZWRlbnRpYWxzKGF3c0FjY291bnRJZCwgbW9kZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNhY2hlW2tleV07XG4gIH1cblxuICBwdWJsaWMgZ2V0IGF2YWlsYWJsZVBsdWdpbk5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5ob3N0LmNyZWRlbnRpYWxQcm92aWRlclNvdXJjZXMubWFwKChzKSA9PiBzLm5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb29rdXBDcmVkZW50aWFscyhhd3NBY2NvdW50SWQ6IHN0cmluZywgbW9kZTogTW9kZSk6IFByb21pc2U8UGx1Z2luQ3JlZGVudGlhbHNGZXRjaFJlc3VsdCB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHRyaWVkU291cmNlczogQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlW10gPSBbXTtcbiAgICAvLyBPdGhlcndpc2UsIGluc3BlY3QgdGhlIHZhcmlvdXMgY3JlZGVudGlhbCBzb3VyY2VzIHdlIGhhdmVcbiAgICBmb3IgKGNvbnN0IHNvdXJjZSBvZiB0aGlzLmhvc3QuY3JlZGVudGlhbFByb3ZpZGVyU291cmNlcykge1xuICAgICAgbGV0IGF2YWlsYWJsZTogYm9vbGVhbjtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF2YWlsYWJsZSA9IGF3YWl0IHNvdXJjZS5pc0F2YWlsYWJsZSgpO1xuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIC8vIFRoaXMgc2hvdWxkbid0IGhhcHBlbiwgYnV0IGxldCdzIGd1YXJkIGFnYWluc3QgaXQgYW55d2F5XG4gICAgICAgIHdhcm5pbmcoYFVuY2F1Z2h0IGV4Y2VwdGlvbiBpbiAke3NvdXJjZS5uYW1lfTogJHtmb3JtYXRFcnJvck1lc3NhZ2UoZSl9YCk7XG4gICAgICAgIGF2YWlsYWJsZSA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWF2YWlsYWJsZSkge1xuICAgICAgICBkZWJ1ZygnQ3JlZGVudGlhbHMgc291cmNlICVzIGlzIG5vdCBhdmFpbGFibGUsIGlnbm9yaW5nIGl0LicsIHNvdXJjZS5uYW1lKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB0cmllZFNvdXJjZXMucHVzaChzb3VyY2UpO1xuICAgICAgbGV0IGNhblByb3ZpZGU6IGJvb2xlYW47XG4gICAgICB0cnkge1xuICAgICAgICBjYW5Qcm92aWRlID0gYXdhaXQgc291cmNlLmNhblByb3ZpZGVDcmVkZW50aWFscyhhd3NBY2NvdW50SWQpO1xuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIC8vIFRoaXMgc2hvdWxkbid0IGhhcHBlbiwgYnV0IGxldCdzIGd1YXJkIGFnYWluc3QgaXQgYW55d2F5XG4gICAgICAgIHdhcm5pbmcoYFVuY2F1Z2h0IGV4Y2VwdGlvbiBpbiAke3NvdXJjZS5uYW1lfTogJHtmb3JtYXRFcnJvck1lc3NhZ2UoZSl9YCk7XG4gICAgICAgIGNhblByb3ZpZGUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmICghY2FuUHJvdmlkZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGRlYnVnKGBVc2luZyAke3NvdXJjZS5uYW1lfSBjcmVkZW50aWFscyBmb3IgYWNjb3VudCAke2F3c0FjY291bnRJZH1gKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY3JlZGVudGlhbHM6IGF3YWl0IHYzUHJvdmlkZXJGcm9tUGx1Z2luKCgpID0+IHNvdXJjZS5nZXRQcm92aWRlcihhd3NBY2NvdW50SWQsIG1vZGUgYXMgRm9yUmVhZGluZyB8IEZvcldyaXRpbmcsIHtcbiAgICAgICAgICBzdXBwb3J0c1YzUHJvdmlkZXJzOiB0cnVlLFxuICAgICAgICB9KSksXG4gICAgICAgIHBsdWdpbk5hbWU6IHNvdXJjZS5uYW1lLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIFJlc3VsdCBmcm9tIHRyeWluZyB0byBmZXRjaCBjcmVkZW50aWFscyBmcm9tIHRoZSBQbHVnaW4gaG9zdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkNyZWRlbnRpYWxzRmV0Y2hSZXN1bHQge1xuICAvKipcbiAgICogU0RLLXYzIGNvbXBhdGlibGUgY3JlZGVudGlhbCBwcm92aWRlclxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbHM6IEF3c0NyZWRlbnRpYWxJZGVudGl0eVByb3ZpZGVyO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHBsdWdpbiB0aGF0IHN1Y2Nlc3NmdWxseSBwcm92aWRlZCBjcmVkZW50aWFsc1xuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRha2UgYSBmdW5jdGlvbiB0aGF0IGNhbGxzIHRoZSBwbHVnaW4sIGFuZCB0dXJuIGl0IGludG8gYW4gU0RLdjMtY29tcGF0aWJsZSBjcmVkZW50aWFsIHByb3ZpZGVyLlxuICpcbiAqIFdoYXQgd2Ugd2lsbCBkbyBpcyB0aGUgZm9sbG93aW5nOlxuICpcbiAqIC0gUXVlcnkgdGhlIHBsdWdpbiBhbmQgc2VlIHdoYXQga2luZCBvZiByZXN1bHQgaXQgZ2l2ZXMgdXMuXG4gKiAtIElmIHRoZSByZXN1bHQgaXMgc2VsZi1yZWZyZXNoaW5nIG9yIGRvZXNuJ3QgbmVlZCByZWZyZXNoaW5nLCB3ZSB0dXJuIGl0IGludG8gYW4gU0RLdjMgcHJvdmlkZXJcbiAqICAgYW5kIHJldHVybiBpdCBkaXJlY3RseS5cbiAqICAgKiBJZiB0aGUgdW5kZXJseWluZyByZXR1cm4gdmFsdWUgaXMgYSBwcm92aWRlciwgd2Ugd2lsbCBtYWtlIGl0IGEgY2FjaGluZyBwcm92aWRlclxuICogICAgIChiZWNhdXNlIHdlIGNhbid0IGtub3cgaWYgaXQgd2lsbCBjYWNoZSBieSBpdHNlbGYgb3Igbm90KS5cbiAqICAgKiBJZiB0aGUgdW5kZXJseWluZyByZXR1cm4gdmFsdWUgaXMgYSBzdGF0aWMgY3JlZGVudGlhbCwgY2FjaGluZyBpc24ndCByZWxldmFudC5cbiAqICAgKiBJZiB0aGUgdW5kZXJseWluZyByZXR1cm4gdmFsdWUgaXMgVjIgY3JlZGVudGlhbHMsIHRob3NlIGhhdmUgY2FjaGluZyBidWlsdC1pbi5cbiAqIC0gSWYgdGhlIHJlc3VsdCBpcyBhIHN0YXRpYyBjcmVkZW50aWFsIHRoYXQgZXhwaXJlcywgd2Ugd2lsbCB3cmFwIGl0IGluIGFuIFNES3YzIHByb3ZpZGVyXG4gKiAgIHRoYXQgd2lsbCBxdWVyeSB0aGUgcGx1Z2luIGFnYWluIHdoZW4gdGhlIGNyZWRlbnRpYWwgZXhwaXJlcy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gdjNQcm92aWRlckZyb21QbHVnaW4ocHJvZHVjZXI6ICgpID0+IFByb21pc2U8UGx1Z2luUHJvdmlkZXJSZXN1bHQ+KTogUHJvbWlzZTxBd3NDcmVkZW50aWFsSWRlbnRpdHlQcm92aWRlcj4ge1xuICBjb25zdCBpbml0aWFsID0gYXdhaXQgcHJvZHVjZXIoKTtcblxuICBpZiAoaXNWM1Byb3ZpZGVyKGluaXRpYWwpKSB7XG4gICAgLy8gQWxyZWFkeSBhIHByb3ZpZGVyLCBtYWtlIGNhY2hpbmdcbiAgICByZXR1cm4gbWFrZUNhY2hpbmdQcm92aWRlcihpbml0aWFsKTtcbiAgfSBlbHNlIGlmIChpc1YzQ3JlZGVudGlhbHMoaW5pdGlhbCkgJiYgaW5pdGlhbC5leHBpcmF0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBTdGF0aWMgY3JlZGVudGlhbHMgdGhhdCBkb24ndCBuZWVkIHJlZnJlc2hpbmcgbm9yIGNhY2hpbmdcbiAgICByZXR1cm4gKCkgPT4gUHJvbWlzZS5yZXNvbHZlKGluaXRpYWwpO1xuICB9IGVsc2UgaWYgKGlzVjNDcmVkZW50aWFscyhpbml0aWFsKSAmJiBpbml0aWFsLmV4cGlyYXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgIC8vIFN0YXRpYyBjcmVkZW50aWFscyB0aGF0IGRvIG5lZWQgcmVmcmVzaGluZyBhbmQgY2FjaGluZ1xuICAgIHJldHVybiByZWZyZXNoRnJvbVBsdWdpblByb3ZpZGVyKGluaXRpYWwsIHByb2R1Y2VyKTtcbiAgfSBlbHNlIGlmIChpc1YyQ3JlZGVudGlhbHMoaW5pdGlhbCkpIHtcbiAgICAvLyBWMiBjcmVkZW50aWFscyB0aGF0IHJlZnJlc2ggYW5kIGNhY2hlIHRoZW1zZWx2ZXNcbiAgICByZXR1cm4gdjNQcm92aWRlckZyb21WMkNyZWRlbnRpYWxzKGluaXRpYWwpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBBdXRoZW50aWNhdGlvbkVycm9yKGBQbHVnaW4gcmV0dXJuZWQgYSB2YWx1ZSB0aGF0IGRvZXNuJ3QgcmVzZW1ibGUgQVdTIGNyZWRlbnRpYWxzOiAke2luc3BlY3QoaW5pdGlhbCl9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIFYyIGNyZWRlbnRpYWwgaW50byBhIFYzLWNvbXBhdGlibGUgcHJvdmlkZXJcbiAqL1xuZnVuY3Rpb24gdjNQcm92aWRlckZyb21WMkNyZWRlbnRpYWxzKHg6IFNES3YyQ29tcGF0aWJsZUNyZWRlbnRpYWxzKTogQXdzQ3JlZGVudGlhbElkZW50aXR5UHJvdmlkZXIge1xuICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdldCB3aWxsIGZldGNoIG9yIHJlZnJlc2ggYXMgbmVjZXNzYXJ5XG4gICAgYXdhaXQgeC5nZXRQcm9taXNlKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWNjZXNzS2V5SWQ6IHguYWNjZXNzS2V5SWQsXG4gICAgICBzZWNyZXRBY2Nlc3NLZXk6IHguc2VjcmV0QWNjZXNzS2V5LFxuICAgICAgc2Vzc2lvblRva2VuOiB4LnNlc3Npb25Ub2tlbixcbiAgICAgIGV4cGlyYXRpb246IHguZXhwaXJlVGltZSA/PyB1bmRlZmluZWQsXG4gICAgfTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gcmVmcmVzaEZyb21QbHVnaW5Qcm92aWRlcihjdXJyZW50OiBBd3NDcmVkZW50aWFsSWRlbnRpdHksIHByb2R1Y2VyOiAoKSA9PiBQcm9taXNlPFBsdWdpblByb3ZpZGVyUmVzdWx0Pik6IEF3c0NyZWRlbnRpYWxJZGVudGl0eVByb3ZpZGVyIHtcbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBpZiAoY3JlZGVudGlhbHNBYm91dFRvRXhwaXJlKGN1cnJlbnQpKSB7XG4gICAgICBjb25zdCBuZXdDcmVkcyA9IGF3YWl0IHByb2R1Y2VyKCk7XG4gICAgICBpZiAoIWlzVjNDcmVkZW50aWFscyhuZXdDcmVkcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEF1dGhlbnRpY2F0aW9uRXJyb3IoYFBsdWdpbiBpbml0aWFsbHkgcmV0dXJuZWQgc3RhdGljIFYzIGNyZWRlbnRpYWxzIGJ1dCBub3cgcmV0dXJuZWQgc29tZXRoaW5nIGVsc2U6ICR7aW5zcGVjdChuZXdDcmVkcyl9YCk7XG4gICAgICB9XG4gICAgICBjdXJyZW50ID0gbmV3Q3JlZHM7XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50O1xuICB9O1xufVxuXG5mdW5jdGlvbiBpc1YzUHJvdmlkZXIoeDogUGx1Z2luUHJvdmlkZXJSZXN1bHQpOiB4IGlzIFNES3YzQ29tcGF0aWJsZUNyZWRlbnRpYWxQcm92aWRlciB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZnVuY3Rpb24gaXNWMkNyZWRlbnRpYWxzKHg6IFBsdWdpblByb3ZpZGVyUmVzdWx0KTogeCBpcyBTREt2MkNvbXBhdGlibGVDcmVkZW50aWFscyB7XG4gIHJldHVybiAhISh4ICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiAoeCBhcyBTREt2MkNvbXBhdGlibGVDcmVkZW50aWFscykuZ2V0UHJvbWlzZSk7XG59XG5cbmZ1bmN0aW9uIGlzVjNDcmVkZW50aWFscyh4OiBQbHVnaW5Qcm92aWRlclJlc3VsdCk6IHggaXMgU0RLdjNDb21wYXRpYmxlQ3JlZGVudGlhbHMge1xuICByZXR1cm4gISEoeCAmJiB0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgeC5hY2Nlc3NLZXlJZCAmJiAhaXNWMkNyZWRlbnRpYWxzKHgpKTtcbn1cbiJdfQ==
|
|
@@ -21,4 +21,4 @@ function credentialsAboutToExpire(token) {
|
|
|
21
21
|
// token.expiration is sometimes null
|
|
22
22
|
return !!token.expiration && token.expiration.getTime() - Date.now() < expiryMarginSecs * 1000;
|
|
23
23
|
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItY2FjaGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInByb3ZpZGVyLWNhY2hpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFhQSxrREFNQztBQUVELDREQUlDO0FBekJELGlFQUFvRDtBQUdwRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixtQkFBbUIsQ0FBQyxRQUF1QztJQUN6RSxPQUFPLElBQUEsMkJBQU8sRUFDWixRQUFRLEVBQ1Isd0JBQXdCLEVBQ3hCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FDOUIsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFnQix3QkFBd0IsQ0FBQyxLQUE0QjtJQUNuRSxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQztJQUMzQixxQ0FBcUM7SUFDckMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7QUFDakcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1lbW9pemUgfSBmcm9tICdAc21pdGh5L3Byb3BlcnR5LXByb3ZpZGVyJztcbmltcG9ydCB0eXBlIHsgQXdzQ3JlZGVudGlhbElkZW50aXR5LCBBd3NDcmVkZW50aWFsSWRlbnRpdHlQcm92aWRlciB9IGZyb20gJ0BzbWl0aHkvdHlwZXMnO1xuXG4vKipcbiAqIFdyYXAgYSBjcmVkZW50aWFsIHByb3ZpZGVyIGluIGEgY2FjaGVcbiAqXG4gKiBTb21lIGNyZWRlbnRpYWwgcHJvdmlkZXJzIGluIHRoZSBTREt2MyBhcmUgY2FjaGVkICh0aGUgZGVmYXVsdCBOb2RlXG4gKiBjaGFpbiwgc3BlY2lmaWNhbGx5KSBidXQgbW9zdCBvdGhlcnMgYXJlIG5vdC5cbiAqXG4gKiBTaW5jZSB3ZSB3YW50IHRvIGF2b2lkIGR1cGxpY2F0ZSBjYWxscyB0byBgQXNzdW1lUm9sZWAsIG9yIGR1cGxpY2F0ZVxuICogTUZBIHByb21wdHMgb3Igd2hhdCBoYXZlIHlvdSwgd2UgYXJlIGdvaW5nIHRvIGxpYmVyYWxseSB3cmFwIHByb3ZpZGVyc1xuICogaW4gY2FjaGVzIHdoaWNoIHdpbGwgcmV0dXJuIHRoZSBjYWNoZWQgdmFsdWUgdW50aWwgaXQgZXhwaXJlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VDYWNoaW5nUHJvdmlkZXIocHJvdmlkZXI6IEF3c0NyZWRlbnRpYWxJZGVudGl0eVByb3ZpZGVyKTogQXdzQ3JlZGVudGlhbElkZW50aXR5UHJvdmlkZXIge1xuICByZXR1cm4gbWVtb2l6ZShcbiAgICBwcm92aWRlcixcbiAgICBjcmVkZW50aWFsc0Fib3V0VG9FeHBpcmUsXG4gICAgKHRva2VuKSA9PiAhIXRva2VuLmV4cGlyYXRpb24sXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVkZW50aWFsc0Fib3V0VG9FeHBpcmUodG9rZW46IEF3c0NyZWRlbnRpYWxJZGVudGl0eSkge1xuICBjb25zdCBleHBpcnlNYXJnaW5TZWNzID0gNTtcbiAgLy8gdG9rZW4uZXhwaXJhdGlvbiBpcyBzb21ldGltZXMgbnVsbFxuICByZXR1cm4gISF0b2tlbi5leHBpcmF0aW9uICYmIHRva2VuLmV4cGlyYXRpb24uZ2V0VGltZSgpIC0gRGF0ZS5ub3coKSA8IGV4cGlyeU1hcmdpblNlY3MgKiAxMDAwO1xufVxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Logger } from '@smithy/types';
|
|
2
|
-
import { IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private';
|
|
1
|
+
import type { Logger } from '@smithy/types';
|
|
2
|
+
import type { IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private';
|
|
3
3
|
export declare class SdkToCliLogger implements Logger {
|
|
4
4
|
private readonly ioHelper;
|
|
5
5
|
constructor(ioHelper: IoHelper);
|
|
@@ -97,15 +97,14 @@ function formatSdkLoggerContent(content) {
|
|
|
97
97
|
return content.map((x) => typeof x === 'string' ? x : (0, util_1.inspect)(x)).join('');
|
|
98
98
|
}
|
|
99
99
|
function formatApiCall(content) {
|
|
100
|
-
var _a, _b, _c, _d;
|
|
101
100
|
if (!isSdkApiCallSuccess(content) && !isSdkApiCallError(content)) {
|
|
102
101
|
return undefined;
|
|
103
102
|
}
|
|
104
103
|
const service = content.clientName.replace(/Client$/, '');
|
|
105
104
|
const api = content.commandName.replace(/Command$/, '');
|
|
106
105
|
const parts = [];
|
|
107
|
-
if ((
|
|
108
|
-
parts.push(`[${
|
|
106
|
+
if ((content.metadata?.attempts ?? 0) > 1) {
|
|
107
|
+
parts.push(`[${content.metadata?.attempts} attempts, ${content.metadata?.totalRetryDelay}ms retry]`);
|
|
109
108
|
}
|
|
110
109
|
parts.push(`${service}.${api}(${JSON.stringify(content.input, util_2.replacerBufferWithInfo)})`);
|
|
111
110
|
if (isSdkApiCallSuccess(content)) {
|
|
@@ -122,4 +121,4 @@ function isSdkApiCallSuccess(x) {
|
|
|
122
121
|
function isSdkApiCallError(x) {
|
|
123
122
|
return x && typeof x === 'object' && x.commandName && x.error;
|
|
124
123
|
}
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RrLWxvZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNkay1sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBZ0dBLHdEQVFDO0FBeEdELCtCQUF1QztBQUd2Qyx5RkFBaUY7QUFDakYscUNBQW9EO0FBRXBELE1BQWEsY0FBYztJQUd6QixZQUFtQixRQUFrQjtRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRU8sTUFBTSxDQUFDLEtBQTBDLEVBQUUsR0FBRyxPQUFjO1FBQzFFLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsWUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBQSxhQUFNLEVBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqSCxDQUFDO0lBRU0sS0FBSyxDQUFDLEdBQUcsUUFBZTtRQUM3Qix1Q0FBdUM7UUFDdkMsb0NBQW9DO0lBQ3RDLENBQUM7SUFFTSxLQUFLLENBQUMsR0FBRyxRQUFlO1FBQzdCLHVDQUF1QztRQUN2QyxvQ0FBb0M7SUFDdEMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTBCRztJQUNJLElBQUksQ0FBQyxHQUFHLE9BQWM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sSUFBSSxDQUFDLEdBQUcsT0FBYztRQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FvQkc7SUFDSSxLQUFLLENBQUMsR0FBRyxPQUFjO1FBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBaEZELHdDQWdGQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixzQkFBc0IsQ0FBQyxPQUFjO0lBQ25ELElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QixNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxjQUFPLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDN0UsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLE9BQVk7SUFDakMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNqRSxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUV4RCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLFFBQVEsY0FBYyxPQUFPLENBQUMsUUFBUSxFQUFFLGVBQWUsV0FBVyxDQUFDLENBQUM7SUFDdkcsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSw2QkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUxRixJQUFJLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDakMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QixDQUFDO1NBQU0sQ0FBQztRQUNOLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLENBQUM7QUFtQkQsU0FBUyxtQkFBbUIsQ0FBQyxDQUFNO0lBQ2pDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDakUsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsQ0FBTTtJQUMvQixPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ2hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnNwZWN0LCBmb3JtYXQgfSBmcm9tICd1dGlsJztcbmltcG9ydCB0eXBlIHsgTG9nZ2VyIH0gZnJvbSAnQHNtaXRoeS90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IElvSGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vQGF3cy1jZGsvdG1wLXRvb2xraXQtaGVscGVycy9zcmMvYXBpL2lvL3ByaXZhdGUnO1xuaW1wb3J0IHsgSU8gfSBmcm9tICcuLi8uLi8uLi8uLi9AYXdzLWNkay90bXAtdG9vbGtpdC1oZWxwZXJzL3NyYy9hcGkvaW8vcHJpdmF0ZSc7XG5pbXBvcnQgeyByZXBsYWNlckJ1ZmZlcldpdGhJbmZvIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5cbmV4cG9ydCBjbGFzcyBTZGtUb0NsaUxvZ2dlciBpbXBsZW1lbnRzIExvZ2dlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW9IZWxwZXI6IElvSGVscGVyO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihpb0hlbHBlcjogSW9IZWxwZXIpIHtcbiAgICB0aGlzLmlvSGVscGVyID0gaW9IZWxwZXI7XG4gIH1cblxuICBwcml2YXRlIG5vdGlmeShsZXZlbDogJ2RlYnVnJyB8ICdpbmZvJyB8ICd3YXJuJyB8ICdlcnJvcicsIC4uLmNvbnRlbnQ6IGFueVtdKSB7XG4gICAgdm9pZCB0aGlzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfU0RLX0kwMDAwLm1zZyhmb3JtYXQoJ1tTREsgJXNdICVzJywgbGV2ZWwsIGZvcm1hdFNka0xvZ2dlckNvbnRlbnQoY29udGVudCkpKSk7XG4gIH1cblxuICBwdWJsaWMgdHJhY2UoLi4uX2NvbnRlbnQ6IGFueVtdKSB7XG4gICAgLy8gVGhpcyBpcyB0b28gbXVjaCBkZXRhaWwgZm9yIG91ciBsb2dzXG4gICAgLy8gdGhpcy5ub3RpZnkoJ3RyYWNlJywgLi4uY29udGVudCk7XG4gIH1cblxuICBwdWJsaWMgZGVidWcoLi4uX2NvbnRlbnQ6IGFueVtdKSB7XG4gICAgLy8gVGhpcyBpcyB0b28gbXVjaCBkZXRhaWwgZm9yIG91ciBsb2dzXG4gICAgLy8gdGhpcy5ub3RpZnkoJ2RlYnVnJywgLi4uY29udGVudCk7XG4gIH1cblxuICAvKipcbiAgICogSW5mbyBpcyBjYWxsZWQgbW9zdGx5IChleGNsdXNpdmVseT8pIGZvciBzdWNjZXNzZnVsIEFQSSBjYWxsc1xuICAgKlxuICAgKiBQYXlsb2FkOlxuICAgKlxuICAgKiAoTm90ZSB0aGUgaW5wdXQgY29udGFpbnMgZW50aXJlIENGTiB0ZW1wbGF0ZXMsIGZvciBleGFtcGxlKVxuICAgKlxuICAgKiBgYGBcbiAgICoge1xuICAgKiAgIGNsaWVudE5hbWU6ICdTM0NsaWVudCcsXG4gICAqICAgY29tbWFuZE5hbWU6ICdHZXRCdWNrZXRMb2NhdGlvbkNvbW1hbmQnLFxuICAgKiAgIGlucHV0OiB7XG4gICAqICAgICBCdWNrZXQ6ICcuLi4uLicsXG4gICAqICAgICBFeHBlY3RlZEJ1Y2tldE93bmVyOiB1bmRlZmluZWRcbiAgICogICB9LFxuICAgKiAgIG91dHB1dDogeyBMb2NhdGlvbkNvbnN0cmFpbnQ6ICdldS1jZW50cmFsLTEnIH0sXG4gICAqICAgbWV0YWRhdGE6IHtcbiAgICogICAgIGh0dHBTdGF0dXNDb2RlOiAyMDAsXG4gICAqICAgICByZXF1ZXN0SWQ6ICcuLi4uJyxcbiAgICogICAgIGV4dGVuZGVkUmVxdWVzdElkOiAnLi4uJyxcbiAgICogICAgIGNmSWQ6IHVuZGVmaW5lZCxcbiAgICogICAgIGF0dGVtcHRzOiAxLFxuICAgKiAgICAgdG90YWxSZXRyeURlbGF5OiAwXG4gICAqICAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGluZm8oLi4uY29udGVudDogYW55W10pIHtcbiAgICB0aGlzLm5vdGlmeSgnaW5mbycsIC4uLmNvbnRlbnQpO1xuICB9XG5cbiAgcHVibGljIHdhcm4oLi4uY29udGVudDogYW55W10pIHtcbiAgICB0aGlzLm5vdGlmeSgnd2FybicsIC4uLmNvbnRlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVycm9yIGlzIGNhbGxlZCBtb3N0bHkgKGV4Y2x1c2l2ZWx5PykgZm9yIGZhaWxpbmcgQVBJIGNhbGxzXG4gICAqXG4gICAqIFBheWxvYWQgKGlucHV0IHdvdWxkIGJlIHRoZSBlbnRpcmUgQVBJIGNhbGwgYXJndW1lbnRzKS5cbiAgICpcbiAgICogYGBgXG4gICAqIHtcbiAgICogICBjbGllbnROYW1lOiAnU1RTQ2xpZW50JyxcbiAgICogICBjb21tYW5kTmFtZTogJ0dldENhbGxlcklkZW50aXR5Q29tbWFuZCcsXG4gICAqICAgaW5wdXQ6IHt9LFxuICAgKiAgIGVycm9yOiBBZ2dyZWdhdGVFcnJvciBbRUNPTk5SRUZVU0VEXTpcbiAgICogICAgICAgYXQgaW50ZXJuYWxDb25uZWN0TXVsdGlwbGUgKG5vZGU6bmV0OjExMjE6MTgpXG4gICAqICAgICAgIGF0IGFmdGVyQ29ubmVjdE11bHRpcGxlIChub2RlOm5ldDoxNjg4OjcpIHtcbiAgICogICAgIGNvZGU6ICdFQ09OTlJFRlVTRUQnLFxuICAgKiAgICAgJyRtZXRhZGF0YSc6IHsgYXR0ZW1wdHM6IDMsIHRvdGFsUmV0cnlEZWxheTogNjAwIH0sXG4gICAqICAgICBbZXJyb3JzXTogWyBbRXJyb3JdLCBbRXJyb3JdIF1cbiAgICogICB9LFxuICAgKiAgIG1ldGFkYXRhOiB7IGF0dGVtcHRzOiAzLCB0b3RhbFJldHJ5RGVsYXk6IDYwMCB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgZXJyb3IoLi4uY29udGVudDogYW55W10pIHtcbiAgICB0aGlzLm5vdGlmeSgnZXJyb3InLCAuLi5jb250ZW50KTtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgY2FuIGJlIGFueXRoaW5nLlxuICpcbiAqIEZvciBkZWJ1ZywgaXQgc2VlbXMgdG8gYmUgbW9zdGx5IHN0cmluZ3MuXG4gKiBGb3IgaW5mbywgaXQgc2VlbXMgdG8gYmUgb2JqZWN0cy5cbiAqXG4gKiBTdHJpbmdpZnkgYW5kIGpvaW4gd2l0aG91dCBzZXBhcmF0b3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRTZGtMb2dnZXJDb250ZW50KGNvbnRlbnQ6IGFueVtdKSB7XG4gIGlmIChjb250ZW50Lmxlbmd0aCA9PT0gMSkge1xuICAgIGNvbnN0IGFwaUZtdCA9IGZvcm1hdEFwaUNhbGwoY29udGVudFswXSk7XG4gICAgaWYgKGFwaUZtdCkge1xuICAgICAgcmV0dXJuIGFwaUZtdDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvbnRlbnQubWFwKCh4KSA9PiB0eXBlb2YgeCA9PT0gJ3N0cmluZycgPyB4IDogaW5zcGVjdCh4KSkuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEFwaUNhbGwoY29udGVudDogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFpc1Nka0FwaUNhbGxTdWNjZXNzKGNvbnRlbnQpICYmICFpc1Nka0FwaUNhbGxFcnJvcihjb250ZW50KSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBzZXJ2aWNlID0gY29udGVudC5jbGllbnROYW1lLnJlcGxhY2UoL0NsaWVudCQvLCAnJyk7XG4gIGNvbnN0IGFwaSA9IGNvbnRlbnQuY29tbWFuZE5hbWUucmVwbGFjZSgvQ29tbWFuZCQvLCAnJyk7XG5cbiAgY29uc3QgcGFydHMgPSBbXTtcbiAgaWYgKChjb250ZW50Lm1ldGFkYXRhPy5hdHRlbXB0cyA/PyAwKSA+IDEpIHtcbiAgICBwYXJ0cy5wdXNoKGBbJHtjb250ZW50Lm1ldGFkYXRhPy5hdHRlbXB0c30gYXR0ZW1wdHMsICR7Y29udGVudC5tZXRhZGF0YT8udG90YWxSZXRyeURlbGF5fW1zIHJldHJ5XWApO1xuICB9XG5cbiAgcGFydHMucHVzaChgJHtzZXJ2aWNlfS4ke2FwaX0oJHtKU09OLnN0cmluZ2lmeShjb250ZW50LmlucHV0LCByZXBsYWNlckJ1ZmZlcldpdGhJbmZvKX0pYCk7XG5cbiAgaWYgKGlzU2RrQXBpQ2FsbFN1Y2Nlc3MoY29udGVudCkpIHtcbiAgICBwYXJ0cy5wdXNoKCctPiBPSycpO1xuICB9IGVsc2Uge1xuICAgIHBhcnRzLnB1c2goYC0+ICR7Y29udGVudC5lcnJvcn1gKTtcbiAgfVxuXG4gIHJldHVybiBwYXJ0cy5qb2luKCcgJyk7XG59XG5cbmludGVyZmFjZSBTZGtBcGlDYWxsQmFzZSB7XG4gIGNsaWVudE5hbWU6IHN0cmluZztcbiAgY29tbWFuZE5hbWU6IHN0cmluZztcbiAgaW5wdXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBtZXRhZGF0YT86IHtcbiAgICBodHRwU3RhdHVzQ29kZT86IG51bWJlcjtcbiAgICByZXF1ZXN0SWQ/OiBzdHJpbmc7XG4gICAgZXh0ZW5kZWRSZXF1ZXN0SWQ/OiBzdHJpbmc7XG4gICAgY2ZJZD86IHN0cmluZztcbiAgICBhdHRlbXB0cz86IG51bWJlcjtcbiAgICB0b3RhbFJldHJ5RGVsYXk/OiBudW1iZXI7XG4gIH07XG59XG5cbnR5cGUgU2RrQXBpQ2FsbFN1Y2Nlc3MgPSBTZGtBcGlDYWxsQmFzZSAmIHsgb3V0cHV0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9O1xudHlwZSBTZGtBcGlDYWxsRXJyb3IgPSBTZGtBcGlDYWxsQmFzZSAmIHsgZXJyb3I6IEVycm9yIH07XG5cbmZ1bmN0aW9uIGlzU2RrQXBpQ2FsbFN1Y2Nlc3MoeDogYW55KTogeCBpcyBTZGtBcGlDYWxsU3VjY2VzcyB7XG4gIHJldHVybiB4ICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiB4LmNvbW1hbmROYW1lICYmIHgub3V0cHV0O1xufVxuXG5mdW5jdGlvbiBpc1Nka0FwaUNhbGxFcnJvcih4OiBhbnkpOiB4IGlzIFNka0FwaUNhbGxFcnJvciB7XG4gIHJldHVybiB4ICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiB4LmNvbW1hbmROYW1lICYmIHguZXJyb3I7XG59XG4iXX0=
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ContextLookupRoleOptions } from '@aws-cdk/cloud-assembly-schema';
|
|
2
|
-
import { Environment } from '@aws-cdk/cx-api';
|
|
3
|
-
import { AssumeRoleCommandInput } from '@aws-sdk/client-sts';
|
|
1
|
+
import type { ContextLookupRoleOptions } from '@aws-cdk/cloud-assembly-schema';
|
|
2
|
+
import type { Environment } from '@aws-cdk/cx-api';
|
|
3
|
+
import type { AssumeRoleCommandInput } from '@aws-sdk/client-sts';
|
|
4
4
|
import type { NodeHttpHandlerOptions } from '@smithy/node-http-handler';
|
|
5
|
-
import { AwsCredentialIdentityProvider, Logger } from '@smithy/types';
|
|
5
|
+
import type { AwsCredentialIdentityProvider, Logger } from '@smithy/types';
|
|
6
6
|
import { SDK } from './sdk';
|
|
7
7
|
import { Mode } from '../plugin/mode';
|
|
8
8
|
export type AssumeRoleAdditionalOptions = Partial<Omit<AssumeRoleCommandInput, 'ExternalId' | 'RoleArn'>>;
|
|
@@ -18,8 +18,8 @@ const credential_plugins_1 = require("./credential-plugins");
|
|
|
18
18
|
const provider_caching_1 = require("./provider-caching");
|
|
19
19
|
const sdk_1 = require("./sdk");
|
|
20
20
|
const tracing_1 = require("./tracing");
|
|
21
|
+
const api_1 = require("../../../../@aws-cdk/tmp-toolkit-helpers/src/api");
|
|
21
22
|
const logging_1 = require("../../logging");
|
|
22
|
-
const error_1 = require("../../toolkit/error");
|
|
23
23
|
const util_1 = require("../../util");
|
|
24
24
|
const mode_1 = require("../plugin/mode");
|
|
25
25
|
const CACHED_ACCOUNT = Symbol('cached_account');
|
|
@@ -85,13 +85,13 @@ let SdkProvider = SdkProvider_1 = class SdkProvider {
|
|
|
85
85
|
const baseCreds = await this.obtainBaseCredentials(env.account, mode);
|
|
86
86
|
// At this point, we need at least SOME credentials
|
|
87
87
|
if (baseCreds.source === 'none') {
|
|
88
|
-
throw new
|
|
88
|
+
throw new api_1.AuthenticationError(fmtObtainCredentialsError(env.account, baseCreds));
|
|
89
89
|
}
|
|
90
90
|
// Simple case is if we don't need to "assumeRole" here. If so, we must now have credentials for the right
|
|
91
91
|
// account.
|
|
92
|
-
if (
|
|
92
|
+
if (options?.assumeRoleArn === undefined) {
|
|
93
93
|
if (baseCreds.source === 'incorrectDefault') {
|
|
94
|
-
throw new
|
|
94
|
+
throw new api_1.AuthenticationError(fmtObtainCredentialsError(env.account, baseCreds));
|
|
95
95
|
}
|
|
96
96
|
// Our current credentials must be valid and not expired. Confirm that before we get into doing
|
|
97
97
|
// actual CloudFormation calls, which might take a long time to hang.
|
|
@@ -148,11 +148,10 @@ let SdkProvider = SdkProvider_1 = class SdkProvider {
|
|
|
148
148
|
* any SDK credentials.
|
|
149
149
|
*/
|
|
150
150
|
async resolveEnvironment(env) {
|
|
151
|
-
var _a;
|
|
152
151
|
const region = env.region !== cx_api_1.UNKNOWN_REGION ? env.region : this.defaultRegion;
|
|
153
|
-
const account = env.account !== cx_api_1.UNKNOWN_ACCOUNT ? env.account : (
|
|
152
|
+
const account = env.account !== cx_api_1.UNKNOWN_ACCOUNT ? env.account : (await this.defaultAccount())?.accountId;
|
|
154
153
|
if (!account) {
|
|
155
|
-
throw new
|
|
154
|
+
throw new api_1.AuthenticationError('Unable to resolve AWS account to use. It must be either configured when you define your CDK Stack, or through the environment');
|
|
156
155
|
}
|
|
157
156
|
return {
|
|
158
157
|
region,
|
|
@@ -201,9 +200,8 @@ let SdkProvider = SdkProvider_1 = class SdkProvider {
|
|
|
201
200
|
* 4. Return a failure if any of them returned credentials
|
|
202
201
|
*/
|
|
203
202
|
async obtainBaseCredentials(accountId, mode) {
|
|
204
|
-
var _a;
|
|
205
203
|
// First try 'current' credentials
|
|
206
|
-
const defaultAccountId = (
|
|
204
|
+
const defaultAccountId = (await this.defaultAccount())?.accountId;
|
|
207
205
|
if (defaultAccountId === accountId) {
|
|
208
206
|
return {
|
|
209
207
|
source: 'correctDefault',
|
|
@@ -239,7 +237,7 @@ let SdkProvider = SdkProvider_1 = class SdkProvider {
|
|
|
239
237
|
*/
|
|
240
238
|
async withAssumedRole(mainCredentials, roleArn, externalId, additionalOptions, region) {
|
|
241
239
|
(0, logging_1.debug)(`Assuming role '${roleArn}'.`);
|
|
242
|
-
region = region
|
|
240
|
+
region = region ?? this.defaultRegion;
|
|
243
241
|
const sourceDescription = fmtObtainedCredentials(mainCredentials);
|
|
244
242
|
try {
|
|
245
243
|
const credentials = await (0, provider_caching_1.makeCachingProvider)((0, credential_providers_1.fromTemporaryCredentials)({
|
|
@@ -249,7 +247,7 @@ let SdkProvider = SdkProvider_1 = class SdkProvider {
|
|
|
249
247
|
ExternalId: externalId,
|
|
250
248
|
RoleSessionName: `aws-cdk-${safeUsername()}`,
|
|
251
249
|
...additionalOptions,
|
|
252
|
-
TransitiveTagKeys:
|
|
250
|
+
TransitiveTagKeys: additionalOptions?.Tags ? additionalOptions.Tags.map((t) => t.Key) : undefined,
|
|
253
251
|
},
|
|
254
252
|
clientConfig: {
|
|
255
253
|
region,
|
|
@@ -268,7 +266,7 @@ let SdkProvider = SdkProvider_1 = class SdkProvider {
|
|
|
268
266
|
throw err;
|
|
269
267
|
}
|
|
270
268
|
(0, logging_1.debug)(`Assuming role failed: ${err.message}`);
|
|
271
|
-
throw new
|
|
269
|
+
throw new api_1.AuthenticationError([
|
|
272
270
|
'Could not assume role in target account',
|
|
273
271
|
...(sourceDescription ? [`using ${sourceDescription}`] : []),
|
|
274
272
|
err.message,
|
|
@@ -356,4 +354,4 @@ async function initContextProviderSdk(aws, options) {
|
|
|
356
354
|
};
|
|
357
355
|
return (await aws.forEnvironment(cx_api_1.EnvironmentUtils.make(account, region), mode_1.Mode.ForReading, creds)).sdk;
|
|
358
356
|
}
|
|
359
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RrLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2RrLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUF5Z0JBLHdEQVdDO0FBcGhCRCx5QkFBeUI7QUFFekIsNENBQWlHO0FBRWpHLHdFQUF5RTtBQUd6RSwyREFBdUQ7QUFDdkQscUNBQWtDO0FBQ2xDLDZEQUF5RDtBQUN6RCx5REFBeUQ7QUFDekQsK0JBQTRCO0FBQzVCLHVDQUEwRDtBQUMxRCwyQ0FBK0M7QUFDL0MsK0NBQTBEO0FBQzFELHFDQUFnRDtBQUNoRCx5Q0FBc0M7QUE2Q3RDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBNkJoRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVJLElBQU0sV0FBVyxtQkFBakIsTUFBTSxXQUFXO0lBQ3RCOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxVQUE4QixFQUFFO1FBQy9FLElBQUEsbUJBQVMsRUFBQyxhQUFXLENBQUMsNEJBQTRCLENBQUMsSUFBSSxFQUFFLGFBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2RyxNQUFNLGtCQUFrQixHQUFHLE1BQU0sb0NBQWdCLENBQUMsc0JBQXNCLENBQUM7WUFDdkUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1lBQ3hCLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztZQUNoQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07U0FDdkIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsTUFBTSxvQ0FBZ0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlELE1BQU0sY0FBYyxHQUFHLG9DQUFnQixDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuRixPQUFP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O0lBQ2hDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFFOUIsTUFBTSxLQUFLLEdBQXVCO1FBQ2hDLGFBQWEsRUFBRSxPQUFPLENBQUMsYUFBYTtRQUNwQyxvQkFBb0IsRUFBRSxPQUFPLENBQUMsb0JBQW9CO1FBQ2xELDJCQUEyQixFQUFFLE9BQU8sQ0FBQywyQkFBMkI7S0FDakUsQ0FBQztJQUVGLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxjQUFjLENBQUMseUJBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRSxXQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ3hHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgeyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMgfSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQsIEVudmlyb25tZW50VXRpbHMsIFVOS05PV05fQUNDT1VOVCwgVU5LTk9XTl9SRUdJT04gfSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0IHsgQXNzdW1lUm9sZUNvbW1hbmRJbnB1dCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zdHMnO1xuaW1wb3J0IHsgZnJvbVRlbXBvcmFyeUNyZWRlbnRpYWxzIH0gZnJvbSAnQGF3cy1zZGsvY3JlZGVudGlhbC1wcm92aWRlcnMnO1xuaW1wb3J0IHR5cGUgeyBOb2RlSHR0cEhhbmRsZXJPcHRpb25zIH0gZnJvbSAnQHNtaXRoeS9ub2RlLWh0dHAtaGFuZGxlcic7XG5pbXBvcnQgeyBBd3NDcmVkZW50aWFsSWRlbnRpdHlQcm92aWRlciwgTG9nZ2VyIH0gZnJvbSAnQHNtaXRoeS90eXBlcyc7XG5pbXBvcnQgeyBBd3NDbGlDb21wYXRpYmxlIH0gZnJvbSAnLi9hd3NjbGktY29tcGF0aWJsZSc7XG5pbXBvcnQgeyBjYWNoZWQgfSBmcm9tICcuL2NhY2hlZCc7XG5pbXBvcnQgeyBDcmVkZW50aWFsUGx1Z2lucyB9IGZyb20gJy4vY3JlZGVudGlhbC1wbHVnaW5zJztcbmltcG9ydCB7IG1ha2VDYWNoaW5nUHJvdmlkZXIgfSBmcm9tICcuL3Byb3ZpZGVyLWNhY2hpbmcnO1xuaW1wb3J0IHsgU0RLIH0gZnJvbSAnLi9zZGsnO1xuaW1wb3J0IHsgY2FsbFRyYWNlLCB0cmFjZU1lbWJlck1ldGhvZHMgfSBmcm9tICcuL3RyYWNpbmcnO1xuaW1wb3J0IHsgZGVidWcsIHdhcm5pbmcgfSBmcm9tICcuLi8uLi9sb2dnaW5nJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uRXJyb3IgfSBmcm9tICcuLi8uLi90b29sa2l0L2Vycm9yJztcbmltcG9ydCB7IGZvcm1hdEVycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uL3V0aWwnO1xuaW1wb3J0IHsgTW9kZSB9IGZyb20gJy4uL3BsdWdpbi9tb2RlJztcblxuZXhwb3J0IHR5cGUgQXNzdW1lUm9sZUFkZGl0aW9uYWxPcHRpb25zID0gUGFydGlhbDxPbWl0PEFzc3VtZVJvbGVDb21tYW5kSW5wdXQsICdFeHRlcm5hbElkJyB8ICdSb2xlQXJuJz4+O1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBkZWZhdWx0IFNESyBwcm92aWRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNka1Byb3ZpZGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBQcm9maWxlIHRvIHJlYWQgZnJvbSB+Ly5hd3NcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBwcm9maWxlXG4gICAqL1xuICByZWFkb25seSBwcm9maWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBIVFRQIG9wdGlvbnMgZm9yIFNES1xuICAgKi9cbiAgcmVhZG9ubHkgaHR0cE9wdGlvbnM/OiBTZGtIdHRwT3B0aW9ucztcblxuICAvKipcbiAgICogVGhlIGxvZ2dlciBmb3Igc2RrIGNhbGxzLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nZ2VyPzogTG9nZ2VyO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGluZGl2aWR1YWwgU0RLc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNka0h0dHBPcHRpb25zIHtcbiAgLyoqXG4gICAqIFByb3h5IGFkZHJlc3MgdG8gdXNlXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIHByb3h5XG4gICAqL1xuICByZWFkb25seSBwcm94eUFkZHJlc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCB0byBhIGNlcnRpZmljYXRlIGJ1bmRsZSB0aGF0IGNvbnRhaW5zIGEgY2VydCB0byBiZSB0cnVzdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBjZXJ0aWZpY2F0ZSBidW5kbGVcbiAgICovXG4gIHJlYWRvbmx5IGNhQnVuZGxlUGF0aD86IHN0cmluZztcbn1cblxuY29uc3QgQ0FDSEVEX0FDQ09VTlQgPSBTeW1ib2woJ2NhY2hlZF9hY2NvdW50Jyk7XG5cbi8qKlxuICogU0RLIGNvbmZpZ3VyYXRpb24gZm9yIGEgZ2l2ZW4gZW52aXJvbm1lbnRcbiAqICdmb3JFbnZpcm9ubWVudCcgd2lsbCBhdHRlbXB0IHRvIGFzc3VtZSBhIHJvbGUgYW5kIGlmIGl0XG4gKiBpcyBub3Qgc3VjY2Vzc2Z1bCwgdGhlbiBpdCB3aWxsIGVpdGhlcjpcbiAqICAgMS4gQ2hlY2sgdG8gc2VlIGlmIHRoZSBkZWZhdWx0IGNyZWRlbnRpYWxzIChsb2NhbCBjcmVkZW50aWFscyB0aGUgQ0xJIHdhcyBleGVjdXRlZCB3aXRoKVxuICogICAgICBhcmUgZm9yIHRoZSBnaXZlbiBlbnZpcm9ubWVudC4gSWYgdGhleSBhcmUgdGhlbiByZXR1cm4gdGhvc2UuXG4gKiAgIDIuIElmIHRoZSBkZWZhdWx0IGNyZWRlbnRpYWxzIGFyZSBub3QgZm9yIHRoZSBnaXZlbiBlbnZpcm9ubWVudCB0aGVuXG4gKiAgICAgIHRocm93IGFuIGVycm9yXG4gKlxuICogJ2RpZEFzc3VtZVJvbGUnIGFsbG93cyBjYWxsZXJzIHRvIHdoZXRoZXIgdGhleSBhcmUgcmVjZWl2aW5nIHRoZSBhc3N1bWUgcm9sZVxuICogY3JlZGVudGlhbHMgb3IgdGhlIGRlZmF1bHQgY3JlZGVudGlhbHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2RrRm9yRW52aXJvbm1lbnQge1xuICAvKipcbiAgICogVGhlIFNESyBmb3IgdGhlIGdpdmVuIGVudmlyb25tZW50XG4gICAqL1xuICByZWFkb25seSBzZGs6IFNESztcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIGFzc3VtZSByb2xlIHdhcyBzdWNjZXNzZnVsLlxuICAgKiBJZiB0aGUgYXNzdW1lIHJvbGUgd2FzIG5vdCBzdWNjZXNzZnVsIChmYWxzZSlcbiAgICogdGhlbiB0aGF0IG1lYW5zIHRoYXQgdGhlICdzZGsnIHJldHVybmVkIGNvbnRhaW5zXG4gICAqIHRoZSBkZWZhdWx0IGNyZWRlbnRpYWxzIChub3QgdGhlIGFzc3VtZSByb2xlIGNyZWRlbnRpYWxzKVxuICAgKi9cbiAgcmVhZG9ubHkgZGlkQXNzdW1lUm9sZTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGluc3RhbmNlcyBvZiB0aGUgQVdTIFNESyBhcHByb3ByaWF0ZSBmb3IgYSBnaXZlbiBhY2NvdW50L3JlZ2lvbi5cbiAqXG4gKiBCZWhhdmlvciBpcyBhcyBmb2xsb3dzOlxuICpcbiAqIC0gRmlyc3QsIGEgc2V0IG9mIFwiYmFzZVwiIGNyZWRlbnRpYWxzIGFyZSBlc3RhYmxpc2hlZFxuICogICAtIElmIGEgdGFyZ2V0IGVudmlyb25tZW50IGlzIGdpdmVuIGFuZCB0aGUgZGVmYXVsdCAoXCJjdXJyZW50XCIpIFNESyBjcmVkZW50aWFscyBhcmUgZm9yXG4gKiAgICAgdGhhdCBhY2NvdW50LCByZXR1cm4gdGhvc2U7IG90aGVyd2lzZVxuICogICAtIElmIGEgdGFyZ2V0IGVudmlyb25tZW50IGlzIGdpdmVuLCBzY2FuIGFsbCBjcmVkZW50aWFsIHByb3ZpZGVyIHBsdWdpbnNcbiAqICAgICBmb3IgY3JlZGVudGlhbHMsIGFuZCByZXR1cm4gdGhvc2UgaWYgZm91bmQ7IG90aGVyd2lzZVxuICogICAtIFJldHVybiBkZWZhdWx0IChcImN1cnJlbnRcIikgU0RLIGNyZWRlbnRpYWxzLCBub3RpbmcgdGhhdCB0aGV5IG1pZ2h0IGJlIHdyb25nLlxuICpcbiAqIC0gU2Vjb25kLCBhIHJvbGUgbWF5IG9wdGlvbmFsbHkgbmVlZCB0byBiZSBhc3N1bWVkLiBVc2UgdGhlIGJhc2UgY3JlZGVudGlhbHNcbiAqICAgZXN0YWJsaXNoZWQgaW4gdGhlIHByZXZpb3VzIHByb2Nlc3MgdG8gYXNzdW1lIHRoYXQgcm9sZS5cbiAqICAgLSBJZiBhc3N1bWluZyB0aGUgcm9sZSBmYWlscyBhbmQgdGhlIGJhc2UgY3JlZGVudGlhbHMgYXJlIGZvciB0aGUgY29ycmVjdFxuICogICAgIGFjY291bnQsIHJldHVybiB0aG9zZS4gVGhpcyBpcyBhIGZhbGxiYWNrIGZvciBwZW9wbGUgd2hvIGFyZSB0cnlpbmcgdG8gaW50ZXJhY3RcbiAqICAgICB3aXRoIGEgRGVmYXVsdCBTeW50aGVzaXplZCBzdGFjayBhbmQgYWxyZWFkeSBoYXZlIHJpZ2h0IGNyZWRlbnRpYWxzIHNldHVwLlxuICpcbiAqICAgICBUeXBpY2FsIGNhc2VzIHdlIHNlZSBpbiB0aGUgd2lsZDpcbiAqICAgICAtIENyZWRlbnRpYWwgcGx1Z2luIHNldHVwIHRoYXQsIGFsdGhvdWdoIG5vdCByZWNvbW1lbmRlZCwgd29ya3MgZm9yIHRoZW1cbiAqICAgICAtIFNlZWRlZCB0ZXJtaW5hbCB3aXRoIGBSZWFkT25seWAgY3JlZGVudGlhbHMgaW4gb3JkZXIgdG8gZG8gYGNkayBkaWZmYC0tdGhlIGBSZWFkT25seWBcbiAqICAgICAgIHJvbGUgZG9lc24ndCBoYXZlIGBzdHM6QXNzdW1lUm9sZWAgYW5kIHdpbGwgZmFpbCBmb3Igbm8gcmVhbCBnb29kIHJlYXNvbi5cbiAqL1xuQHRyYWNlTWVtYmVyTWV0aG9kc1xuZXhwb3J0IGNsYXNzIFNka1Byb3ZpZGVyIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBTZGtQcm92aWRlciB3aGljaCBnZXRzIGl0cyBkZWZhdWx0cyBpbiBhIHdheSB0aGF0IGJlaGF2ZXMgbGlrZSB0aGUgQVdTIENMSSBkb2VzXG4gICAqXG4gICAqIFRoZSBBV1MgU0RLIGZvciBKUyBiZWhhdmVzIHNsaWdodGx5IGRpZmZlcmVudGx5IGZyb20gdGhlIEFXUyBDTEkgaW4gYSBudW1iZXIgb2Ygd2F5czsgc2VlIHRoZVxuICAgKiBjbGFzcyBgQXdzQ2xpQ29tcGF0aWJsZWAgZm9yIHRoZSBkZXRhaWxzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhc3luYyB3aXRoQXdzQ2xpQ29tcGF0aWJsZURlZmF1bHRzKG9wdGlvbnM6IFNka1Byb3ZpZGVyT3B0aW9ucyA9IHt9KSB7XG4gICAgY2FsbFRyYWNlKFNka1Byb3ZpZGVyLndpdGhBd3NDbGlDb21wYXRpYmxlRGVmYXVsdHMubmFtZSwgU2RrUHJvdmlkZXIuY29uc3RydWN0b3IubmFtZSwgb3B0aW9ucy5sb2dnZXIpO1xuICAgIGNvbnN0IGNyZWRlbnRpYWxQcm92aWRlciA9IGF3YWl0IEF3c0NsaUNvbXBhdGlibGUuY3JlZGVudGlhbENoYWluQnVpbGRlcih7XG4gICAgICBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUsXG4gICAgICBodHRwT3B0aW9uczogb3B0aW9ucy5odHRwT3B0aW9ucyxcbiAgICAgIGxvZ2dlcjogb3B0aW9ucy5sb2dnZXIsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZWdpb24gPSBhd2FpdCBBd3NDbGlDb21wYXRpYmxlLnJlZ2lvbihvcHRpb25zLnByb2ZpbGUpO1xuICAgIGNvbnN0IHJlcXVlc3RIYW5kbGVyID0gQXdzQ2xpQ29tcGF0aWJsZS5yZXF1ZXN0SGFuZGxlckJ1aWxkZXIob3B0aW9ucy5odHRwT3B0aW9ucyk7XG4gICAgcmV0dXJuIG5ldyBTZGtQcm92aWRlcihjcmVkZW50aWFsUHJvdmlkZXIsIHJlZ2lvbiwgcmVxdWVzdEhhbmRsZXIsIG9wdGlvbnMubG9nZ2VyKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2lucyA9IG5ldyBDcmVkZW50aWFsUGx1Z2lucygpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRDcmVkZW50aWFsUHJvdmlkZXI6IEF3c0NyZWRlbnRpYWxJZGVudGl0eVByb3ZpZGVyLFxuICAgIC8qKlxuICAgICAqIERlZmF1bHQgcmVnaW9uXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHRSZWdpb246IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlcXVlc3RIYW5kbGVyOiBOb2RlSHR0cEhhbmRsZXJPcHRpb25zID0ge30sXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI/OiBMb2dnZXIsXG4gICkge1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBTREsgd2hpY2ggY2FuIGRvIG9wZXJhdGlvbnMgaW4gdGhlIGdpdmVuIGVudmlyb25tZW50XG4gICAqXG4gICAqIFRoZSBgZW52aXJvbm1lbnRgIHBhcmFtZXRlciBpcyByZXNvbHZlZCBmaXJzdCAoc2VlIGByZXNvbHZlRW52aXJvbm1lbnQoKWApLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGZvckVudmlyb25tZW50KFxuICAgIGVudmlyb25tZW50OiBFbnZpcm9ubWVudCxcbiAgICBtb2RlOiBNb2RlLFxuICAgIG9wdGlvbnM/OiBDcmVkZW50aWFsc09wdGlvbnMsXG4gICAgcXVpZXQgPSBmYWxzZSxcbiAgKTogUHJvbWlzZTxTZGtGb3JFbnZpcm9ubWVudD4ge1xuICAgIGNvbnN0IGVudiA9IGF3YWl0IHRoaXMucmVzb2x2ZUVudmlyb25tZW50KGVudmlyb25tZW50KTtcblxuICAgIGNvbnN0IGJhc2VDcmVkcyA9IGF3YWl0IHRoaXMub2J0YWluQmFzZUNyZWRlbnRpYWxzKGVudi5hY2NvdW50LCBtb2RlKTtcblxuICAgIC8vIEF0IHRoaXMgcG9pbnQsIHdlIG5lZWQgYXQgbGVhc3QgU09NRSBjcmVkZW50aWFsc1xuICAgIGlmIChiYXNlQ3JlZHMuc291cmNlID09PSAnbm9uZScpIHtcbiAgICAgIHRocm93IG5ldyBBdXRoZW50aWNhdGlvbkVycm9yKGZtdE9idGFpbkNyZWRlbnRpYWxzRXJyb3IoZW52LmFjY291bnQsIGJhc2VDcmVkcykpO1xuICAgIH1cblxuICAgIC8vIFNpbXBsZSBjYXNlIGlzIGlmIHdlIGRvbid0IG5lZWQgdG8gXCJhc3N1bWVSb2xlXCIgaGVyZS4gSWYgc28sIHdlIG11c3Qgbm93IGhhdmUgY3JlZGVudGlhbHMgZm9yIHRoZSByaWdodFxuICAgIC8vIGFjY291bnQuXG4gICAgaWYgKG9wdGlvbnM/LmFzc3VtZVJvbGVBcm4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGJhc2VDcmVkcy5zb3VyY2UgPT09ICdpbmNvcnJlY3REZWZhdWx0Jykge1xuICAgICAgICB0aHJvdyBuZXcgQXV0aGVudGljYXRpb25FcnJvcihmbXRPYnRhaW5DcmVkZW50aWFsc0Vycm9yKGVudi5hY2NvdW50LCBiYXNlQ3JlZHMpKTtcbiAgICAgIH1cblxuICAgICAgLy8gT3VyIGN1cnJlbnQgY3JlZGVudGlhbHMgbXVzdCBiZSB2YWxpZCBhbmQgbm90IGV4cGlyZWQuIENvbmZpcm0gdGhhdCBiZWZvcmUgd2UgZ2V0IGludG8gZG9pbmdcbiAgICAgIC8vIGFjdHVhbCBDbG91ZEZvcm1hdGlvbiBjYWxscywgd2hpY2ggbWlnaHQgdGFrZSBhIGxvbmcgdGltZSB0byBoYW5nLlxuICAgICAgY29uc3Qgc2RrID0gbmV3IFNESyhiYXNlQ3JlZHMuY3JlZGVudGlhbHMsIGVudi5yZWdpb24sIHRoaXMucmVxdWVzdEhhbmRsZXIsIHRoaXMubG9nZ2VyKTtcbiAgICAgIGF3YWl0IHNkay52YWxpZGF0ZUNyZWRlbnRpYWxzKCk7XG4gICAgICByZXR1cm4geyBzZGssIGRpZEFzc3VtZVJvbGU6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFdlIHdpbGwgcHJvY2VlZCB0byBBc3N1bWVSb2xlIHVzaW5nIHdoYXRldmVyIHdlJ3ZlIGJlZW4gZ2l2ZW4uXG4gICAgICBjb25zdCBzZGsgPSBhd2FpdCB0aGlzLndpdGhBc3N1bWVkUm9sZShcbiAgICAgICAgYmFzZUNyZWRzLFxuICAgICAgICBvcHRpb25zLmFzc3VtZVJvbGVBcm4sXG4gICAgICAgIG9wdGlvbnMuYXNzdW1lUm9sZUV4dGVybmFsSWQsXG4gICAgICAgIG9wdGlvbnMuYXNzdW1lUm9sZUFkZGl0aW9uYWxPcHRpb25zLFxuICAgICAgICBlbnYucmVnaW9uLFxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHsgc2RrLCBkaWRBc3N1bWVSb2xlOiB0cnVlIH07XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgIGlmIChlcnIubmFtZSA9PT0gJ0V4cGlyZWRUb2tlbicpIHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuXG4gICAgICAvLyBBc3N1bWVSb2xlIGZhaWxlZC4gUHJvY2VlZCBhbmQgd2FybiAqaWYgYW5kIG9ubHkgaWYqIHRoZSBiYXNlQ3JlZGVudGlhbHMgd2VyZSBhbHJlYWR5IGZvciB0aGUgcmlnaHQgYWNjb3VudFxuICAgICAgLy8gb3IgcmV0dXJuZWQgZnJvbSBhIHBsdWdpbi4gVGhpcyBpcyB0byBjb3ZlciBzb21lIGN1cnJlbnQgc2V0dXBzIGZvciBwZW9wbGUgdXNpbmcgcGx1Z2lucyBvciBwcmVmZXJyaW5nIHRvXG4gICAgICAvLyBmZWVkIHRoZSBDTEkgY3JlZGVudGlhbHMgd2hpY2ggYXJlIHN1ZmZpY2llbnQgYnkgdGhlbXNlbHZlcy4gUHJlZmVyIHRvIGFzc3VtZSB0aGUgY29ycmVjdCByb2xlIGlmIHdlIGNhbixcbiAgICAgIC8vIGJ1dCBpZiB3ZSBjYW4ndCB0aGVuIGxldCdzIGp1c3QgdHJ5IHdpdGggYXZhaWxhYmxlIGNyZWRlbnRpYWxzIGFueXdheS5cbiAgICAgIGlmIChiYXNlQ3JlZHMuc291cmNlID09PSAnY29ycmVjdERlZmF1bHQnIHx8IGJhc2VDcmVkcy5zb3VyY2UgPT09ICdwbHVnaW4nKSB7XG4gICAgICAgIGRlYnVnKGVyci5tZXNzYWdlKTtcbiAgICAgICAgY29uc3QgbG9nZ2VyID0gcXVpZXQgPyBkZWJ1ZyA6IHdhcm5pbmc7XG4gICAgICAgIGxvZ2dlcihcbiAgICAgICAgICBgJHtmbXRPYnRhaW5lZENyZWRlbnRpYWxzKGJhc2VDcmVkcyl9IGNvdWxkIG5vdCBiZSB1c2VkIHRvIGFzc3VtZSAnJHtvcHRpb25zLmFzc3VtZVJvbGVBcm59JywgYnV0IGFyZSBmb3IgdGhlIHJpZ2h0IGFjY291bnQuIFByb2NlZWRpbmcgYW55d2F5LmAsXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc2RrOiBuZXcgU0RLKGJhc2VDcmVkcy5jcmVkZW50aWFscywgZW52LnJlZ2lvbiwgdGhpcy5yZXF1ZXN0SGFuZGxlciwgdGhpcy5sb2dnZXIpLFxuICAgICAgICAgIGRpZEFzc3VtZVJvbGU6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgcGFydGl0aW9uIHRoYXQgYmFzZSBjcmVkZW50aWFscyBhcmUgZm9yXG4gICAqXG4gICAqIFJldHVybnMgYHVuZGVmaW5lZGAgaWYgdGhlcmUgYXJlIG5vIGJhc2UgY3JlZGVudGlhbHMuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgYmFzZUNyZWRlbnRpYWxzUGFydGl0aW9uKGVudmlyb25tZW50OiBFbnZpcm9ubWVudCwgbW9kZTogTW9kZSk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgZW52ID0gYXdhaXQgdGhpcy5yZXNvbHZlRW52aXJvbm1lbnQoZW52aXJvbm1lbnQpO1xuICAgIGNvbnN0IGJhc2VDcmVkcyA9IGF3YWl0IHRoaXMub2J0YWluQmFzZUNyZWRlbnRpYWxzKGVudi5hY2NvdW50LCBtb2RlKTtcbiAgICBpZiAoYmFzZUNyZWRzLnNvdXJjZSA9PT0gJ25vbmUnKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gKGF3YWl0IG5ldyBTREsoYmFzZUNyZWRzLmNyZWRlbnRpYWxzLCBlbnYucmVnaW9uLCB0aGlzLnJlcXVlc3RIYW5kbGVyLCB0aGlzLmxvZ2dlcikuY3VycmVudEFjY291bnQoKSkucGFydGl0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIGVudmlyb25tZW50IGZvciBhIHN0YWNrXG4gICAqXG4gICAqIFJlcGxhY2VzIHRoZSBtYWdpYyB2YWx1ZXMgYFVOS05PV05fUkVHSU9OYCBhbmQgYFVOS05PV05fQUNDT1VOVGBcbiAgICogd2l0aCB0aGUgZGVmYXVsdHMgZm9yIHRoZSBjdXJyZW50IFNESyBjb25maWd1cmF0aW9uIChgfi8uYXdzL2NvbmZpZ2Agb3JcbiAgICogb3RoZXJ3aXNlKS5cbiAgICpcbiAgICogSXQgaXMgYW4gZXJyb3IgaWYgYFVOS05PV05fQUNDT1VOVGAgaXMgdXNlZCBidXQgdGhlIHVzZXIgaGFzbid0IGNvbmZpZ3VyZWRcbiAgICogYW55IFNESyBjcmVkZW50aWFscy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyByZXNvbHZlRW52aXJvbm1lbnQoZW52OiBFbnZpcm9ubWVudCk6IFByb21pc2U8RW52aXJvbm1lbnQ+IHtcbiAgICBjb25zdCByZWdpb24gPSBlbnYucmVnaW9uICE9PSBVTktOT1dOX1JFR0lPTiA/IGVudi5yZWdpb24gOiB0aGlzLmRlZmF1bHRSZWdpb247XG4gICAgY29uc3QgYWNjb3VudCA9IGVudi5hY2NvdW50ICE9PSBVTktOT1dOX0FDQ09VTlQgPyBlbnYuYWNjb3VudCA6IChhd2FpdCB0aGlzLmRlZmF1bHRBY2NvdW50KCkpPy5hY2NvdW50SWQ7XG5cbiAgICBpZiAoIWFjY291bnQpIHtcbiAgICAgIHRocm93IG5ldyBBdXRoZW50aWNhdGlvbkVycm9yKFxuICAgICAgICAnVW5hYmxlIHRvIHJlc29sdmUgQVdTIGFjY291bnQgdG8gdXNlLiBJdCBtdXN0IGJlIGVpdGhlciBjb25maWd1cmVkIHdoZW4geW91IGRlZmluZSB5b3VyIENESyBTdGFjaywgb3IgdGhyb3VnaCB0aGUgZW52aXJvbm1lbnQnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVnaW9uLFxuICAgICAgYWNjb3VudCxcbiAgICAgIG5hbWU6IEVudmlyb25tZW50VXRpbHMuZm9ybWF0KGFjY291bnQsIHJlZ2lvbiksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYWNjb3VudCB3ZSdkIGF1dGggaW50byBpZiB3ZSB1c2VkIGRlZmF1bHQgY3JlZGVudGlhbHMuXG4gICAqXG4gICAqIERlZmF1bHQgY3JlZGVudGlhbHMgYXJlIHRoZSBzZXQgb2YgYW1iaWVudGx5IGNvbmZpZ3VyZWQgY3JlZGVudGlhbHMgdXNpbmdcbiAgICogb25lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIG9yIH4vLmF3cy9jcmVkZW50aWFscywgb3IgdGhlICpvbmUqXG4gICAqIHByb2ZpbGUgdGhhdCB3YXMgcGFzc2VkIGludG8gdGhlIENMSS5cbiAgICpcbiAgICogTWlnaHQgcmV0dXJuIHVuZGVmaW5lZCBpZiB0aGVyZSBhcmUgbm8gZGVmYXVsdC9hbWJpZW50IGNyZWRlbnRpYWxzXG4gICAqIGF2YWlsYWJsZSAoaW4gd2hpY2ggY2FzZSB0aGUgdXNlciBzaG91bGQgYmV0dGVyIGhvcGUgdGhleSBoYXZlXG4gICAqIGNyZWRlbnRpYWwgcGx1Z2lucyBjb25maWd1cmVkKS5cbiAgICpcbiAgICogVXNlcyBhIGNhY2hlIHRvIGF2b2lkIFNUUyBjYWxscyBpZiB3ZSBkb24ndCBuZWVkICdlbS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBkZWZhdWx0QWNjb3VudCgpOiBQcm9taXNlPEFjY291bnQgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gY2FjaGVkKHRoaXMsIENBQ0hFRF9BQ0NPVU5ULCBhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgbmV3IFNESyh0aGlzLmRlZmF1bHRDcmVkZW50aWFsUHJvdmlkZXIsIHRoaXMuZGVmYXVsdFJlZ2lvbiwgdGhpcy5yZXF1ZXN0SGFuZGxlciwgdGhpcy5sb2dnZXIpLmN1cnJlbnRBY2NvdW50KCk7XG4gICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgLy8gVHJlYXQgJ0V4cGlyZWRUb2tlbicgc3BlY2lhbGx5LiBUaGlzIGlzIGEgY29tbW9uIHNpdHVhdGlvbiB0aGF0IHBlb3BsZSBtYXkgZmluZCB0aGVtc2VsdmVzIGluLCBhbmRcbiAgICAgICAgLy8gdGhleSBhcmUgY29tcGxhaW5pbmcgYWJvdXQgaWYgd2UgZmFpbCAnY2RrIHN5bnRoJyBvbiB0aGVtLiBXZSBsb3VkbHkgY29tcGxhaW4gaW4gb3JkZXIgdG8gc2hvdyB0aGF0XG4gICAgICAgIC8vIHRoZSBjdXJyZW50IHNpdHVhdGlvbiBpcyBwcm9iYWJseSB1bmRlc2lyYWJsZSwgYnV0IHdlIGRvbid0IGZhaWwuXG4gICAgICAgIGlmIChlLm5hbWUgPT09ICdFeHBpcmVkVG9rZW4nKSB7XG4gICAgICAgICAgd2FybmluZyhcbiAgICAgICAgICAgICdUaGVyZSBhcmUgZXhwaXJlZCBBV1MgY3JlZGVudGlhbHMgaW4geW91ciBlbnZpcm9ubWVudC4gVGhlIENESyBhcHAgd2lsbCBzeW50aCB3aXRob3V0IGN1cnJlbnQgYWNjb3VudCBpbmZvcm1hdGlvbi4nLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlYnVnKGBVbmFibGUgdG8gZGV0ZXJtaW5lIHRoZSBkZWZhdWx0IEFXUyBhY2NvdW50ICgke2UubmFtZX0pOiAke2Zvcm1hdEVycm9yTWVzc2FnZShlKX1gKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY3JlZGVudGlhbHMgZm9yIHRoZSBnaXZlbiBhY2NvdW50IElEIGluIHRoZSBnaXZlbiBtb2RlXG4gICAqXG4gICAqIDEuIFVzZSB0aGUgZGVmYXVsdCBjcmVkZW50aWFscyBpZiB0aGUgZGVzdGluYXRpb24gYWNjb3VudCBtYXRjaGVzIHRoZVxuICAgKiAgICBjdXJyZW50IGNyZWRlbnRpYWxzJyBhY2NvdW50LlxuICAgKiAyLiBPdGhlcndpc2UgdHJ5IGFsbCBjcmVkZW50aWFsIHBsdWdpbnMuXG4gICAqIDMuIEZhaWwgaWYgbmVpdGhlciBvZiB0aGVzZSB5aWVsZCBhbnkgY3JlZGVudGlhbHMuXG4gICAqIDQuIFJldHVybiBhIGZhaWx1cmUgaWYgYW55IG9mIHRoZW0gcmV0dXJuZWQgY3JlZGVudGlhbHNcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgb2J0YWluQmFzZUNyZWRlbnRpYWxzKGFjY291bnRJZDogc3RyaW5nLCBtb2RlOiBNb2RlKTogUHJvbWlzZTxPYnRhaW5CYXNlQ3JlZGVudGlhbHNSZXN1bHQ+IHtcbiAgICAvLyBGaXJzdCB0cnkgJ2N1cnJlbnQnIGNyZWRlbnRpYWxzXG4gICAgY29uc3QgZGVmYXVsdEFjY291bnRJZCA9IChhd2FpdCB0aGlzLmRlZmF1bHRBY2NvdW50KCkpPy5hY2NvdW50SWQ7XG4gICAgaWYgKGRlZmF1bHRBY2NvdW50SWQgPT09IGFjY291bnRJZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc291cmNlOiAnY29ycmVjdERlZmF1bHQnLFxuICAgICAgICBjcmVkZW50aWFsczogYXdhaXQgdGhpcy5kZWZhdWx0Q3JlZGVudGlhbFByb3ZpZGVyLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBUaGVuIHRyeSB0aGUgcGx1Z2luc1xuICAgIGNvbnN0IHBsdWdpbkNyZWRzID0gYXdhaXQgdGhpcy5wbHVnaW5zLmZldGNoQ3JlZGVudGlhbHNGb3IoYWNjb3VudElkLCBtb2RlKTtcbiAgICBpZiAocGx1Z2luQ3JlZHMpIHtcbiAgICAgIHJldHVybiB7IHNvdXJjZTogJ3BsdWdpbicsIC4uLnBsdWdpbkNyZWRzIH07XG4gICAgfVxuXG4gICAgLy8gRmFsbCBiYWNrIHRvIGRlZmF1bHQgY3JlZGVudGlhbHMgd2l0aCBhIG5vdGUgdGhhdCB0aGV5J3JlIG5vdCB0aGUgcmlnaHQgb25lcyB5ZXRcbiAgICBpZiAoZGVmYXVsdEFjY291bnRJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzb3VyY2U6ICdpbmNvcnJlY3REZWZhdWx0JyxcbiAgICAgICAgYWNjb3VudElkOiBkZWZhdWx0QWNjb3VudElkLFxuICAgICAgICBjcmVkZW50aWFsczogYXdhaXQgdGhpcy5kZWZhdWx0Q3JlZGVudGlhbFByb3ZpZGVyLFxuICAgICAgICB1bnVzZWRQbHVnaW5zOiB0aGlzLnBsdWdpbnMuYXZhaWxhYmxlUGx1Z2luTmFtZXMsXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEFwcGFyZW50bHkgd2UgZGlkbid0IGZpbmQgYW55IGF0IGFsbFxuICAgIHJldHVybiB7XG4gICAgICBzb3VyY2U6ICdub25lJyxcbiAgICAgIHVudXNlZFBsdWdpbnM6IHRoaXMucGx1Z2lucy5hdmFpbGFibGVQbHVnaW5OYW1lcyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBTREsgd2hpY2ggdXNlcyBhc3N1bWVkIHJvbGUgY3JlZGVudGlhbHNcbiAgICpcbiAgICogVGhlIGJhc2UgY3JlZGVudGlhbHMgdXNlZCB0byByZXRyaWV2ZSB0aGUgYXNzdW1lZCByb2xlIGNyZWRlbnRpYWxzIHdpbGwgYmUgdGhlXG4gICAqIHNhbWUgY3JlZGVudGlhbHMgcmV0dXJuZWQgYnkgb2J0YWluQ3JlZGVudGlhbHMgaWYgYW4gZW52aXJvbm1lbnQgYW5kIG1vZGUgaXMgcGFzc2VkLFxuICAgKiBvdGhlcndpc2UgaXQgd2lsbCBiZSB0aGUgY3VycmVudCBjcmVkZW50aWFscy5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgd2l0aEFzc3VtZWRSb2xlKFxuICAgIG1haW5DcmVkZW50aWFsczogRXhjbHVkZTxPYnRhaW5CYXNlQ3JlZGVudGlhbHNSZXN1bHQsIHsgc291cmNlOiAnbm9uZScgfT4sXG4gICAgcm9sZUFybjogc3RyaW5nLFxuICAgIGV4dGVybmFsSWQ/OiBzdHJpbmcsXG4gICAgYWRkaXRpb25hbE9wdGlvbnM/OiBBc3N1bWVSb2xlQWRkaXRpb25hbE9wdGlvbnMsXG4gICAgcmVnaW9uPzogc3RyaW5nLFxuICApOiBQcm9taXNlPFNESz4ge1xuICAgIGRlYnVnKGBBc3N1bWluZyByb2xlICcke3JvbGVBcm59Jy5gKTtcblxuICAgIHJlZ2lvbiA9IHJlZ2lvbiA/PyB0aGlzLmRlZmF1bHRSZWdpb247XG5cbiAgICBjb25zdCBzb3VyY2VEZXNjcmlwdGlvbiA9IGZtdE9idGFpbmVkQ3JlZGVudGlhbHMobWFpbkNyZWRlbnRpYWxzKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBjcmVkZW50aWFscyA9IGF3YWl0IG1ha2VDYWNoaW5nUHJvdmlkZXIoZnJvbVRlbXBvcmFyeUNyZWRlbnRpYWxzKHtcbiAgICAgICAgbWFzdGVyQ3JlZGVudGlhbHM6IG1haW5DcmVkZW50aWFscy5jcmVkZW50aWFscyxcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgUm9sZUFybjogcm9sZUFybixcbiAgICAgICAgICBFeHRlcm5hbElkOiBleHRlcm5hbElkLFxuICAgICAgICAgIFJvbGVTZXNzaW9uTmFtZTogYGF3cy1jZGstJHtzYWZlVXNlcm5hbWUoKX1gLFxuICAgICAgICAgIC4uLmFkZGl0aW9uYWxPcHRpb25zLFxuICAgICAgICAgIFRyYW5zaXRpdmVUYWdLZXlzOiBhZGRpdGlvbmFsT3B0aW9ucz8uVGFncyA/IGFkZGl0aW9uYWxPcHRpb25zLlRhZ3MubWFwKCh0KSA9PiB0LktleSEpIDogdW5kZWZpbmVkLFxuICAgICAgICB9LFxuICAgICAgICBjbGllbnRDb25maWc6IHtcbiAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgcmVxdWVzdEhhbmRsZXI6IHRoaXMucmVxdWVzdEhhbmRsZXIsXG4gICAgICAgICAgY3VzdG9tVXNlckFnZW50OiAnYXdzLWNkaycsXG4gICAgICAgICAgbG9nZ2VyOiB0aGlzLmxvZ2dlcixcbiAgICAgICAgfSxcbiAgICAgICAgbG9nZ2VyOiB0aGlzLmxvZ2dlcixcbiAgICAgIH0pKTtcblxuICAgICAgLy8gQ2FsbCB0aGUgcHJvdmlkZXIgYXQgbGVhc3Qgb25jZSBoZXJlLCB0byBjYXRjaCBhbiBlcnJvciBpZiBpdCBvY2N1cnNcbiAgICAgIGF3YWl0IGNyZWRlbnRpYWxzKCk7XG5cbiAgICAgIHJldHVybiBuZXcgU0RLKGNyZWRlbnRpYWxzLCByZWdpb24sIHRoaXMucmVxdWVzdEhhbmRsZXIsIHRoaXMubG9nZ2VyKTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgaWYgKGVyci5uYW1lID09PSAnRXhwaXJlZFRva2VuJykge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG5cbiAgICAgIGRlYnVnKGBBc3N1bWluZyByb2xlIGZhaWxlZDogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIHRocm93IG5ldyBBdXRoZW50aWNhdGlvbkVycm9yKFxuICAgICAgICBbXG4gICAgICAgICAgJ0NvdWxkIG5vdCBhc3N1bWUgcm9sZSBpbiB0YXJnZXQgYWNjb3VudCcsXG4gICAgICAgICAgLi4uKHNvdXJjZURlc2NyaXB0aW9uID8gW2B1c2luZyAke3NvdXJjZURlc2NyaXB0aW9ufWBdIDogW10pLFxuICAgICAgICAgIGVyci5tZXNzYWdlLFxuICAgICAgICAgIFwiLiBQbGVhc2UgbWFrZSBzdXJlIHRoYXQgdGhpcyByb2xlIGV4aXN0cyBpbiB0aGUgYWNjb3VudC4gSWYgaXQgZG9lc24ndCBleGlzdCwgKHJlKS1ib290c3RyYXAgdGhlIGVudmlyb25tZW50IFwiICtcbiAgICAgICAgICAgIFwid2l0aCB0aGUgcmlnaHQgJy0tdHJ1c3QnLCB1c2luZyB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIENESyBDTEkuXCIsXG4gICAgICAgIF0uam9pbignICcpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBbiBBV1MgYWNjb3VudFxuICpcbiAqIEFuIEFXUyBhY2NvdW50IGFsd2F5cyBleGlzdHMgaW4gb25seSBvbmUgcGFydGl0aW9uLiBVc3VhbGx5IHdlIGRvbid0IGNhcmUgYWJvdXRcbiAqIHRoZSBwYXJ0aXRpb24sIGJ1dCB3aGVuIHdlIG5lZWQgdG8gZm9ybSBBUk5zIHdlIGRvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjY291bnQge1xuICAvKipcbiAgICogVGhlIGFjY291bnQgbnVtYmVyXG4gICAqL1xuICByZWFkb25seSBhY2NvdW50SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhcnRpdGlvbiAoJ2F3cycgb3IgJ2F3cy1jbicgb3Igb3RoZXJ3aXNlKVxuICAgKi9cbiAgcmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSB1c2VybmFtZSB3aXRoIGNoYXJhY3RlcnMgaW52YWxpZCBmb3IgYSBSb2xlU2Vzc2lvbk5hbWUgcmVtb3ZlZFxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL1NUUy9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9Bc3N1bWVSb2xlLmh0bWwjQVBJX0Fzc3VtZVJvbGVfUmVxdWVzdFBhcmFtZXRlcnNcbiAqL1xuZnVuY3Rpb24gc2FmZVVzZXJuYW1lKCkge1xuICB0cnkge1xuICAgIHJldHVybiBvcy51c2VySW5mbygpLnVzZXJuYW1lLnJlcGxhY2UoL1teXFx3Kz0sLkAtXS9nLCAnQCcpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gJ25vbmFtZSc7XG4gIH1cbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBvYnRhaW5pbmcgY3JlZGVudGlhbHMgZm9yIGFuIGVudmlyb25tZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlZGVudGlhbHNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHJvbGUgdGhhdCBuZWVkcyB0byBiZSBhc3N1bWVkLCBpZiBhbnlcbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4dGVybmFsIElEIHJlcXVpcmVkIHRvIGFzc3VtZSB0aGUgZ2l2ZW4gcm9sZS5cbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVFeHRlcm5hbElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZXNzaW9uIHRhZ3MgcmVxdWlyZWQgdG8gYXNzdW1lIHRoZSBnaXZlbiByb2xlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXNzdW1lUm9sZUFkZGl0aW9uYWxPcHRpb25zPzogQXNzdW1lUm9sZUFkZGl0aW9uYWxPcHRpb25zO1xufVxuXG4vKipcbiAqIFJlc3VsdCBvZiBvYnRhaW5pbmcgYmFzZSBjcmVkZW50aWFsc1xuICovXG50eXBlIE9idGFpbkJhc2VDcmVkZW50aWFsc1Jlc3VsdCA9XG4gIHwgeyBzb3VyY2U6ICdjb3JyZWN0RGVmYXVsdCc7IGNyZWRlbnRpYWxzOiBBd3NDcmVkZW50aWFsSWRlbnRpdHlQcm92aWRlciB9XG4gIHwgeyBzb3VyY2U6ICdwbHVnaW4nOyBwbHVnaW5OYW1lOiBzdHJpbmc7IGNyZWRlbnRpYWxzOiBBd3NDcmVkZW50aWFsSWRlbnRpdHlQcm92aWRlciB9XG4gIHwge1xuICAgIHNvdXJjZTogJ2luY29ycmVjdERlZmF1bHQnO1xuICAgIGNyZWRlbnRpYWxzOiBBd3NDcmVkZW50aWFsSWRlbnRpdHlQcm92aWRlcjtcbiAgICBhY2NvdW50SWQ6IHN0cmluZztcbiAgICB1bnVzZWRQbHVnaW5zOiBzdHJpbmdbXTtcbiAgfVxuICB8IHsgc291cmNlOiAnbm9uZSc7IHVudXNlZFBsdWdpbnM6IHN0cmluZ1tdIH07XG5cbi8qKlxuICogSXNvbGF0aW5nIHRoZSBjb2RlIHRoYXQgdHJhbnNsYXRlcyBjYWxjdWxhdGlvbiBlcnJvcnMgaW50byBodW1hbiBlcnJvciBtZXNzYWdlc1xuICpcbiAqIFdlIGNvdmVyIHRoZSBmb2xsb3dpbmcgY2FzZXM6XG4gKlxuICogLSBObyBjcmVkZW50aWFscyBhcmUgYXZhaWxhYmxlIGF0IGFsbFxuICogLSBEZWZhdWx0IGNyZWRlbnRpYWxzIGFyZSBmb3IgdGhlIHdyb25nIGFjY291bnRcbiAqL1xuZnVuY3Rpb24gZm10T2J0YWluQ3JlZGVudGlhbHNFcnJvcihcbiAgdGFyZ2V0QWNjb3VudElkOiBzdHJpbmcsXG4gIG9idGFpblJlc3VsdDogT2J0YWluQmFzZUNyZWRlbnRpYWxzUmVzdWx0ICYge1xuICAgIHNvdXJjZTogJ25vbmUnIHwgJ2luY29ycmVjdERlZmF1bHQnO1xuICB9LFxuKTogc3RyaW5nIHtcbiAgY29uc3QgbXNnID0gW2BOZWVkIHRvIHBlcmZvcm0gQVdTIGNhbGxzIGZvciBhY2NvdW50ICR7dGFyZ2V0QWNjb3VudElkfWBdO1xuICBzd2l0Y2ggKG9idGFpblJlc3VsdC5zb3VyY2UpIHtcbiAgICBjYXNlICdpbmNvcnJlY3REZWZhdWx0JzpcbiAgICAgIG1zZy5wdXNoKGBidXQgdGhlIGN1cnJlbnQgY3JlZGVudGlhbHMgYXJlIGZvciAke29idGFpblJlc3VsdC5hY2NvdW50SWR9YCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdub25lJzpcbiAgICAgIG1zZy5wdXNoKCdidXQgbm8gY3JlZGVudGlhbHMgaGF2ZSBiZWVuIGNvbmZpZ3VyZWQnKTtcbiAgfVxuICBpZiAob2J0YWluUmVzdWx0LnVudXNlZFBsdWdpbnMubGVuZ3RoID4gMCkge1xuICAgIG1zZy5wdXNoKGBhbmQgbm9uZSBvZiB0aGVzZSBwbHVnaW5zIGZvdW5kIGFueTogJHtvYnRhaW5SZXN1bHQudW51c2VkUGx1Z2lucy5qb2luKCcsICcpfWApO1xuICB9XG4gIHJldHVybiBtc2cuam9pbignLCAnKTtcbn1cblxuLyoqXG4gKiBGb3JtYXQgYSBtZXNzYWdlIGluZGljYXRpbmcgd2hlcmUgd2UgZ290IGJhc2UgY3JlZGVudGlhbHMgZm9yIHRoZSBhc3N1bWUgcm9sZVxuICpcbiAqIFdlIGNvdmVyIHRoZSBmb2xsb3dpbmcgY2FzZXM6XG4gKlxuICogLSBEZWZhdWx0IGNyZWRlbnRpYWxzIGZvciB0aGUgcmlnaHQgYWNjb3VudFxuICogLSBEZWZhdWx0IGNyZWRlbnRpYWxzIGZvciB0aGUgd3JvbmcgYWNjb3VudFxuICogLSBDcmVkZW50aWFscyByZXR1cm5lZCBmcm9tIGEgcGx1Z2luXG4gKi9cbmZ1bmN0aW9uIGZtdE9idGFpbmVkQ3JlZGVudGlhbHMob2J0YWluUmVzdWx0OiBFeGNsdWRlPE9idGFpbkJhc2VDcmVkZW50aWFsc1Jlc3VsdCwgeyBzb3VyY2U6ICdub25lJyB9Pik6IHN0cmluZyB7XG4gIHN3aXRjaCAob2J0YWluUmVzdWx0LnNvdXJjZSkge1xuICAgIGNhc2UgJ2NvcnJlY3REZWZhdWx0JzpcbiAgICAgIHJldHVybiAnY3VycmVudCBjcmVkZW50aWFscyc7XG4gICAgY2FzZSAncGx1Z2luJzpcbiAgICAgIHJldHVybiBgY3JlZGVudGlhbHMgcmV0dXJuZWQgYnkgcGx1Z2luICcke29idGFpblJlc3VsdC5wbHVnaW5OYW1lfSdgO1xuICAgIGNhc2UgJ2luY29ycmVjdERlZmF1bHQnOlxuICAgICAgY29uc3QgbXNnID0gW107XG4gICAgICBtc2cucHVzaChgY3VycmVudCBjcmVkZW50aWFscyAod2hpY2ggYXJlIGZvciBhY2NvdW50ICR7b2J0YWluUmVzdWx0LmFjY291bnRJZH1gKTtcblxuICAgICAgaWYgKG9idGFpblJlc3VsdC51bnVzZWRQbHVnaW5zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbXNnLnB1c2goYCwgYW5kIG5vbmUgb2YgdGhlIGZvbGxvd2luZyBwbHVnaW5zIHByb3ZpZGVkIGNyZWRlbnRpYWxzOiAke29idGFpblJlc3VsdC51bnVzZWRQbHVnaW5zLmpvaW4oJywgJyl9YCk7XG4gICAgICB9XG4gICAgICBtc2cucHVzaCgnKScpO1xuXG4gICAgICByZXR1cm4gbXNnLmpvaW4oJycpO1xuICB9XG59XG5cbi8qKlxuICogSW5zdGFudGlhdGUgYW4gU0RLIGZvciBjb250ZXh0IHByb3ZpZGVycy4gVGhpcyBmdW5jdGlvbiBlbnN1cmVzIHRoYXQgYWxsXG4gKiBsb29rdXAgYXNzdW1lIHJvbGUgb3B0aW9ucyBhcmUgdXNlZCB3aGVuIGNvbnRleHQgcHJvdmlkZXJzIHBlcmZvcm0gbG9va3Vwcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXRDb250ZXh0UHJvdmlkZXJTZGsoYXdzOiBTZGtQcm92aWRlciwgb3B0aW9uczogQ29udGV4dExvb2t1cFJvbGVPcHRpb25zKTogUHJvbWlzZTxTREs+IHtcbiAgY29uc3QgYWNjb3VudCA9IG9wdGlvbnMuYWNjb3VudDtcbiAgY29uc3QgcmVnaW9uID0gb3B0aW9ucy5yZWdpb247XG5cbiAgY29uc3QgY3JlZHM6IENyZWRlbnRpYWxzT3B0aW9ucyA9IHtcbiAgICBhc3N1bWVSb2xlQXJuOiBvcHRpb25zLmxvb2t1cFJvbGVBcm4sXG4gICAgYXNzdW1lUm9sZUV4dGVybmFsSWQ6IG9wdGlvbnMubG9va3VwUm9sZUV4dGVybmFsSWQsXG4gICAgYXNzdW1lUm9sZUFkZGl0aW9uYWxPcHRpb25zOiBvcHRpb25zLmFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucyxcbiAgfTtcblxuICByZXR1cm4gKGF3YWl0IGF3cy5mb3JFbnZpcm9ubWVudChFbnZpcm9ubWVudFV0aWxzLm1ha2UoYWNjb3VudCwgcmVnaW9uKSwgTW9kZS5Gb3JSZWFkaW5nLCBjcmVkcykpLnNkaztcbn1cbiJdfQ==
|
|
357
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RrLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2RrLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUEwZ0JBLHdEQVdDO0FBcmhCRCx5QkFBeUI7QUFHekIsNENBQW9GO0FBRXBGLHdFQUF5RTtBQUd6RSwyREFBdUQ7QUFDdkQscUNBQWtDO0FBQ2xDLDZEQUF5RDtBQUN6RCx5REFBeUQ7QUFDekQsK0JBQTRCO0FBQzVCLHVDQUEwRDtBQUMxRCwwRUFBdUY7QUFDdkYsMkNBQStDO0FBQy9DLHFDQUFnRDtBQUNoRCx5Q0FBc0M7QUE2Q3RDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBNkJoRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVJLElBQU0sV0FBVyxtQkFBakIsTUFBTSxXQUFXO0lBQ3RCOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxVQUE4QixFQUFFO1FBQy9FLElBQUEsbUJBQVMsRUFBQyxhQUFXLENBQUMsNEJBQTRCLENBQUMsSUFBSSxFQUFFLGFBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2RyxNQUFNLGtCQUFrQixHQUFHLE1BQU0sb0NBQWdCLENBQUMsc0JBQXNCLENBQUM7WUFDdkUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1lBQ3hCLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztZQUNoQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07U0FDdkIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsTUFBTSxvQ0FBZ0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlELE1BQU0sY0FBYyxHQUFHLG9DQUFnQixDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuRixPQUFP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QWE7UUFDcEMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLG9CQUFvQjtRQUNsRCwyQkFBMkIsRUFBRSxPQUFPLENBQUMsMkJBQTJCO0tBQ2pFLENBQUM7SUFFRixPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsY0FBYyxDQUFDLHlCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsV0FBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUN4RyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IHR5cGUgeyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMgfSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEnO1xuaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudCB9IGZyb20gJ0Bhd3MtY2RrL2N4LWFwaSc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudFV0aWxzLCBVTktOT1dOX0FDQ09VTlQsIFVOS05PV05fUkVHSU9OIH0gZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCB0eXBlIHsgQXNzdW1lUm9sZUNvbW1hbmRJbnB1dCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zdHMnO1xuaW1wb3J0IHsgZnJvbVRlbXBvcmFyeUNyZWRlbnRpYWxzIH0gZnJvbSAnQGF3cy1zZGsvY3JlZGVudGlhbC1wcm92aWRlcnMnO1xuaW1wb3J0IHR5cGUgeyBOb2RlSHR0cEhhbmRsZXJPcHRpb25zIH0gZnJvbSAnQHNtaXRoeS9ub2RlLWh0dHAtaGFuZGxlcic7XG5pbXBvcnQgdHlwZSB7IEF3c0NyZWRlbnRpYWxJZGVudGl0eVByb3ZpZGVyLCBMb2dnZXIgfSBmcm9tICdAc21pdGh5L3R5cGVzJztcbmltcG9ydCB7IEF3c0NsaUNvbXBhdGlibGUgfSBmcm9tICcuL2F3c2NsaS1jb21wYXRpYmxlJztcbmltcG9ydCB7IGNhY2hlZCB9IGZyb20gJy4vY2FjaGVkJztcbmltcG9ydCB7IENyZWRlbnRpYWxQbHVnaW5zIH0gZnJvbSAnLi9jcmVkZW50aWFsLXBsdWdpbnMnO1xuaW1wb3J0IHsgbWFrZUNhY2hpbmdQcm92aWRlciB9IGZyb20gJy4vcHJvdmlkZXItY2FjaGluZyc7XG5pbXBvcnQgeyBTREsgfSBmcm9tICcuL3Nkayc7XG5pbXBvcnQgeyBjYWxsVHJhY2UsIHRyYWNlTWVtYmVyTWV0aG9kcyB9IGZyb20gJy4vdHJhY2luZyc7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbkVycm9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vQGF3cy1jZGsvdG1wLXRvb2xraXQtaGVscGVycy9zcmMvYXBpJztcbmltcG9ydCB7IGRlYnVnLCB3YXJuaW5nIH0gZnJvbSAnLi4vLi4vbG9nZ2luZyc7XG5pbXBvcnQgeyBmb3JtYXRFcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB7IE1vZGUgfSBmcm9tICcuLi9wbHVnaW4vbW9kZSc7XG5cbmV4cG9ydCB0eXBlIEFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucyA9IFBhcnRpYWw8T21pdDxBc3N1bWVSb2xlQ29tbWFuZElucHV0LCAnRXh0ZXJuYWxJZCcgfCAnUm9sZUFybic+PjtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgZGVmYXVsdCBTREsgcHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZGtQcm92aWRlck9wdGlvbnMge1xuICAvKipcbiAgICogUHJvZmlsZSB0byByZWFkIGZyb20gfi8uYXdzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcHJvZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogSFRUUCBvcHRpb25zIGZvciBTREtcbiAgICovXG4gIHJlYWRvbmx5IGh0dHBPcHRpb25zPzogU2RrSHR0cE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2dnZXIgZm9yIHNkayBjYWxscy5cbiAgICovXG4gIHJlYWRvbmx5IGxvZ2dlcj86IExvZ2dlcjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBpbmRpdmlkdWFsIFNES3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZGtIdHRwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBQcm94eSBhZGRyZXNzIHRvIHVzZVxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBwcm94eVxuICAgKi9cbiAgcmVhZG9ubHkgcHJveHlBZGRyZXNzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHBhdGggdG8gYSBjZXJ0aWZpY2F0ZSBidW5kbGUgdGhhdCBjb250YWlucyBhIGNlcnQgdG8gYmUgdHJ1c3RlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgTm8gY2VydGlmaWNhdGUgYnVuZGxlXG4gICAqL1xuICByZWFkb25seSBjYUJ1bmRsZVBhdGg/OiBzdHJpbmc7XG59XG5cbmNvbnN0IENBQ0hFRF9BQ0NPVU5UID0gU3ltYm9sKCdjYWNoZWRfYWNjb3VudCcpO1xuXG4vKipcbiAqIFNESyBjb25maWd1cmF0aW9uIGZvciBhIGdpdmVuIGVudmlyb25tZW50XG4gKiAnZm9yRW52aXJvbm1lbnQnIHdpbGwgYXR0ZW1wdCB0byBhc3N1bWUgYSByb2xlIGFuZCBpZiBpdFxuICogaXMgbm90IHN1Y2Nlc3NmdWwsIHRoZW4gaXQgd2lsbCBlaXRoZXI6XG4gKiAgIDEuIENoZWNrIHRvIHNlZSBpZiB0aGUgZGVmYXVsdCBjcmVkZW50aWFscyAobG9jYWwgY3JlZGVudGlhbHMgdGhlIENMSSB3YXMgZXhlY3V0ZWQgd2l0aClcbiAqICAgICAgYXJlIGZvciB0aGUgZ2l2ZW4gZW52aXJvbm1lbnQuIElmIHRoZXkgYXJlIHRoZW4gcmV0dXJuIHRob3NlLlxuICogICAyLiBJZiB0aGUgZGVmYXVsdCBjcmVkZW50aWFscyBhcmUgbm90IGZvciB0aGUgZ2l2ZW4gZW52aXJvbm1lbnQgdGhlblxuICogICAgICB0aHJvdyBhbiBlcnJvclxuICpcbiAqICdkaWRBc3N1bWVSb2xlJyBhbGxvd3MgY2FsbGVycyB0byB3aGV0aGVyIHRoZXkgYXJlIHJlY2VpdmluZyB0aGUgYXNzdW1lIHJvbGVcbiAqIGNyZWRlbnRpYWxzIG9yIHRoZSBkZWZhdWx0IGNyZWRlbnRpYWxzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNka0ZvckVudmlyb25tZW50IHtcbiAgLyoqXG4gICAqIFRoZSBTREsgZm9yIHRoZSBnaXZlbiBlbnZpcm9ubWVudFxuICAgKi9cbiAgcmVhZG9ubHkgc2RrOiBTREs7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoZSBhc3N1bWUgcm9sZSB3YXMgc3VjY2Vzc2Z1bC5cbiAgICogSWYgdGhlIGFzc3VtZSByb2xlIHdhcyBub3Qgc3VjY2Vzc2Z1bCAoZmFsc2UpXG4gICAqIHRoZW4gdGhhdCBtZWFucyB0aGF0IHRoZSAnc2RrJyByZXR1cm5lZCBjb250YWluc1xuICAgKiB0aGUgZGVmYXVsdCBjcmVkZW50aWFscyAobm90IHRoZSBhc3N1bWUgcm9sZSBjcmVkZW50aWFscylcbiAgICovXG4gIHJlYWRvbmx5IGRpZEFzc3VtZVJvbGU6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ3JlYXRlcyBpbnN0YW5jZXMgb2YgdGhlIEFXUyBTREsgYXBwcm9wcmlhdGUgZm9yIGEgZ2l2ZW4gYWNjb3VudC9yZWdpb24uXG4gKlxuICogQmVoYXZpb3IgaXMgYXMgZm9sbG93czpcbiAqXG4gKiAtIEZpcnN0LCBhIHNldCBvZiBcImJhc2VcIiBjcmVkZW50aWFscyBhcmUgZXN0YWJsaXNoZWRcbiAqICAgLSBJZiBhIHRhcmdldCBlbnZpcm9ubWVudCBpcyBnaXZlbiBhbmQgdGhlIGRlZmF1bHQgKFwiY3VycmVudFwiKSBTREsgY3JlZGVudGlhbHMgYXJlIGZvclxuICogICAgIHRoYXQgYWNjb3VudCwgcmV0dXJuIHRob3NlOyBvdGhlcndpc2VcbiAqICAgLSBJZiBhIHRhcmdldCBlbnZpcm9ubWVudCBpcyBnaXZlbiwgc2NhbiBhbGwgY3JlZGVudGlhbCBwcm92aWRlciBwbHVnaW5zXG4gKiAgICAgZm9yIGNyZWRlbnRpYWxzLCBhbmQgcmV0dXJuIHRob3NlIGlmIGZvdW5kOyBvdGhlcndpc2VcbiAqICAgLSBSZXR1cm4gZGVmYXVsdCAoXCJjdXJyZW50XCIpIFNESyBjcmVkZW50aWFscywgbm90aW5nIHRoYXQgdGhleSBtaWdodCBiZSB3cm9uZy5cbiAqXG4gKiAtIFNlY29uZCwgYSByb2xlIG1heSBvcHRpb25hbGx5IG5lZWQgdG8gYmUgYXNzdW1lZC4gVXNlIHRoZSBiYXNlIGNyZWRlbnRpYWxzXG4gKiAgIGVzdGFibGlzaGVkIGluIHRoZSBwcmV2aW91cyBwcm9jZXNzIHRvIGFzc3VtZSB0aGF0IHJvbGUuXG4gKiAgIC0gSWYgYXNzdW1pbmcgdGhlIHJvbGUgZmFpbHMgYW5kIHRoZSBiYXNlIGNyZWRlbnRpYWxzIGFyZSBmb3IgdGhlIGNvcnJlY3RcbiAqICAgICBhY2NvdW50LCByZXR1cm4gdGhvc2UuIFRoaXMgaXMgYSBmYWxsYmFjayBmb3IgcGVvcGxlIHdobyBhcmUgdHJ5aW5nIHRvIGludGVyYWN0XG4gKiAgICAgd2l0aCBhIERlZmF1bHQgU3ludGhlc2l6ZWQgc3RhY2sgYW5kIGFscmVhZHkgaGF2ZSByaWdodCBjcmVkZW50aWFscyBzZXR1cC5cbiAqXG4gKiAgICAgVHlwaWNhbCBjYXNlcyB3ZSBzZWUgaW4gdGhlIHdpbGQ6XG4gKiAgICAgLSBDcmVkZW50aWFsIHBsdWdpbiBzZXR1cCB0aGF0LCBhbHRob3VnaCBub3QgcmVjb21tZW5kZWQsIHdvcmtzIGZvciB0aGVtXG4gKiAgICAgLSBTZWVkZWQgdGVybWluYWwgd2l0aCBgUmVhZE9ubHlgIGNyZWRlbnRpYWxzIGluIG9yZGVyIHRvIGRvIGBjZGsgZGlmZmAtLXRoZSBgUmVhZE9ubHlgXG4gKiAgICAgICByb2xlIGRvZXNuJ3QgaGF2ZSBgc3RzOkFzc3VtZVJvbGVgIGFuZCB3aWxsIGZhaWwgZm9yIG5vIHJlYWwgZ29vZCByZWFzb24uXG4gKi9cbkB0cmFjZU1lbWJlck1ldGhvZHNcbmV4cG9ydCBjbGFzcyBTZGtQcm92aWRlciB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgU2RrUHJvdmlkZXIgd2hpY2ggZ2V0cyBpdHMgZGVmYXVsdHMgaW4gYSB3YXkgdGhhdCBiZWhhdmVzIGxpa2UgdGhlIEFXUyBDTEkgZG9lc1xuICAgKlxuICAgKiBUaGUgQVdTIFNESyBmb3IgSlMgYmVoYXZlcyBzbGlnaHRseSBkaWZmZXJlbnRseSBmcm9tIHRoZSBBV1MgQ0xJIGluIGEgbnVtYmVyIG9mIHdheXM7IHNlZSB0aGVcbiAgICogY2xhc3MgYEF3c0NsaUNvbXBhdGlibGVgIGZvciB0aGUgZGV0YWlscy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgd2l0aEF3c0NsaUNvbXBhdGlibGVEZWZhdWx0cyhvcHRpb25zOiBTZGtQcm92aWRlck9wdGlvbnMgPSB7fSkge1xuICAgIGNhbGxUcmFjZShTZGtQcm92aWRlci53aXRoQXdzQ2xpQ29tcGF0aWJsZURlZmF1bHRzLm5hbWUsIFNka1Byb3ZpZGVyLmNvbnN0cnVjdG9yLm5hbWUsIG9wdGlvbnMubG9nZ2VyKTtcbiAgICBjb25zdCBjcmVkZW50aWFsUHJvdmlkZXIgPSBhd2FpdCBBd3NDbGlDb21wYXRpYmxlLmNyZWRlbnRpYWxDaGFpbkJ1aWxkZXIoe1xuICAgICAgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlLFxuICAgICAgaHR0cE9wdGlvbnM6IG9wdGlvbnMuaHR0cE9wdGlvbnMsXG4gICAgICBsb2dnZXI6IG9wdGlvbnMubG9nZ2VyLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVnaW9uID0gYXdhaXQgQXdzQ2xpQ29tcGF0aWJsZS5yZWdpb24ob3B0aW9ucy5wcm9maWxlKTtcbiAgICBjb25zdCByZXF1ZXN0SGFuZGxlciA9IEF3c0NsaUNvbXBhdGlibGUucmVxdWVzdEhhbmRsZXJCdWlsZGVyKG9wdGlvbnMuaHR0cE9wdGlvbnMpO1xuICAgIHJldHVybiBuZXcgU2RrUHJvdmlkZXIoY3JlZGVudGlhbFByb3ZpZGVyLCByZWdpb24sIHJlcXVlc3RIYW5kbGVyLCBvcHRpb25zLmxvZ2dlcik7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IHBsdWdpbnMgPSBuZXcgQ3JlZGVudGlhbFBsdWdpbnMoKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0Q3JlZGVudGlhbFByb3ZpZGVyOiBBd3NDcmVkZW50aWFsSWRlbnRpdHlQcm92aWRlcixcbiAgICAvKipcbiAgICAgKiBEZWZhdWx0IHJlZ2lvblxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBkZWZhdWx0UmVnaW9uOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXF1ZXN0SGFuZGxlcjogTm9kZUh0dHBIYW5kbGVyT3B0aW9ucyA9IHt9LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyPzogTG9nZ2VyLFxuICApIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gU0RLIHdoaWNoIGNhbiBkbyBvcGVyYXRpb25zIGluIHRoZSBnaXZlbiBlbnZpcm9ubWVudFxuICAgKlxuICAgKiBUaGUgYGVudmlyb25tZW50YCBwYXJhbWV0ZXIgaXMgcmVzb2x2ZWQgZmlyc3QgKHNlZSBgcmVzb2x2ZUVudmlyb25tZW50KClgKS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBmb3JFbnZpcm9ubWVudChcbiAgICBlbnZpcm9ubWVudDogRW52aXJvbm1lbnQsXG4gICAgbW9kZTogTW9kZSxcbiAgICBvcHRpb25zPzogQ3JlZGVudGlhbHNPcHRpb25zLFxuICAgIHF1aWV0ID0gZmFsc2UsXG4gICk6IFByb21pc2U8U2RrRm9yRW52aXJvbm1lbnQ+IHtcbiAgICBjb25zdCBlbnYgPSBhd2FpdCB0aGlzLnJlc29sdmVFbnZpcm9ubWVudChlbnZpcm9ubWVudCk7XG5cbiAgICBjb25zdCBiYXNlQ3JlZHMgPSBhd2FpdCB0aGlzLm9idGFpbkJhc2VDcmVkZW50aWFscyhlbnYuYWNjb3VudCwgbW9kZSk7XG5cbiAgICAvLyBBdCB0aGlzIHBvaW50LCB3ZSBuZWVkIGF0IGxlYXN0IFNPTUUgY3JlZGVudGlhbHNcbiAgICBpZiAoYmFzZUNyZWRzLnNvdXJjZSA9PT0gJ25vbmUnKSB7XG4gICAgICB0aHJvdyBuZXcgQXV0aGVudGljYXRpb25FcnJvcihmbXRPYnRhaW5DcmVkZW50aWFsc0Vycm9yKGVudi5hY2NvdW50LCBiYXNlQ3JlZHMpKTtcbiAgICB9XG5cbiAgICAvLyBTaW1wbGUgY2FzZSBpcyBpZiB3ZSBkb24ndCBuZWVkIHRvIFwiYXNzdW1lUm9sZVwiIGhlcmUuIElmIHNvLCB3ZSBtdXN0IG5vdyBoYXZlIGNyZWRlbnRpYWxzIGZvciB0aGUgcmlnaHRcbiAgICAvLyBhY2NvdW50LlxuICAgIGlmIChvcHRpb25zPy5hc3N1bWVSb2xlQXJuID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChiYXNlQ3JlZHMuc291cmNlID09PSAnaW5jb3JyZWN0RGVmYXVsdCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEF1dGhlbnRpY2F0aW9uRXJyb3IoZm10T2J0YWluQ3JlZGVudGlhbHNFcnJvcihlbnYuYWNjb3VudCwgYmFzZUNyZWRzKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIE91ciBjdXJyZW50IGNyZWRlbnRpYWxzIG11c3QgYmUgdmFsaWQgYW5kIG5vdCBleHBpcmVkLiBDb25maXJtIHRoYXQgYmVmb3JlIHdlIGdldCBpbnRvIGRvaW5nXG4gICAgICAvLyBhY3R1YWwgQ2xvdWRGb3JtYXRpb24gY2FsbHMsIHdoaWNoIG1pZ2h0IHRha2UgYSBsb25nIHRpbWUgdG8gaGFuZy5cbiAgICAgIGNvbnN0IHNkayA9IG5ldyBTREsoYmFzZUNyZWRzLmNyZWRlbnRpYWxzLCBlbnYucmVnaW9uLCB0aGlzLnJlcXVlc3RIYW5kbGVyLCB0aGlzLmxvZ2dlcik7XG4gICAgICBhd2FpdCBzZGsudmFsaWRhdGVDcmVkZW50aWFscygpO1xuICAgICAgcmV0dXJuIHsgc2RrLCBkaWRBc3N1bWVSb2xlOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAvLyBXZSB3aWxsIHByb2NlZWQgdG8gQXNzdW1lUm9sZSB1c2luZyB3aGF0ZXZlciB3ZSd2ZSBiZWVuIGdpdmVuLlxuICAgICAgY29uc3Qgc2RrID0gYXdhaXQgdGhpcy53aXRoQXNzdW1lZFJvbGUoXG4gICAgICAgIGJhc2VDcmVkcyxcbiAgICAgICAgb3B0aW9ucy5hc3N1bWVSb2xlQXJuLFxuICAgICAgICBvcHRpb25zLmFzc3VtZVJvbGVFeHRlcm5hbElkLFxuICAgICAgICBvcHRpb25zLmFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucyxcbiAgICAgICAgZW52LnJlZ2lvbixcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB7IHNkaywgZGlkQXNzdW1lUm9sZTogdHJ1ZSB9O1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBpZiAoZXJyLm5hbWUgPT09ICdFeHBpcmVkVG9rZW4nKSB7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cblxuICAgICAgLy8gQXNzdW1lUm9sZSBmYWlsZWQuIFByb2NlZWQgYW5kIHdhcm4gKmlmIGFuZCBvbmx5IGlmKiB0aGUgYmFzZUNyZWRlbnRpYWxzIHdlcmUgYWxyZWFkeSBmb3IgdGhlIHJpZ2h0IGFjY291bnRcbiAgICAgIC8vIG9yIHJldHVybmVkIGZyb20gYSBwbHVnaW4uIFRoaXMgaXMgdG8gY292ZXIgc29tZSBjdXJyZW50IHNldHVwcyBmb3IgcGVvcGxlIHVzaW5nIHBsdWdpbnMgb3IgcHJlZmVycmluZyB0b1xuICAgICAgLy8gZmVlZCB0aGUgQ0xJIGNyZWRlbnRpYWxzIHdoaWNoIGFyZSBzdWZmaWNpZW50IGJ5IHRoZW1zZWx2ZXMuIFByZWZlciB0byBhc3N1bWUgdGhlIGNvcnJlY3Qgcm9sZSBpZiB3ZSBjYW4sXG4gICAgICAvLyBidXQgaWYgd2UgY2FuJ3QgdGhlbiBsZXQncyBqdXN0IHRyeSB3aXRoIGF2YWlsYWJsZSBjcmVkZW50aWFscyBhbnl3YXkuXG4gICAgICBpZiAoYmFzZUNyZWRzLnNvdXJjZSA9PT0gJ2NvcnJlY3REZWZhdWx0JyB8fCBiYXNlQ3JlZHMuc291cmNlID09PSAncGx1Z2luJykge1xuICAgICAgICBkZWJ1ZyhlcnIubWVzc2FnZSk7XG4gICAgICAgIGNvbnN0IGxvZ2dlciA9IHF1aWV0ID8gZGVidWcgOiB3YXJuaW5nO1xuICAgICAgICBsb2dnZXIoXG4gICAgICAgICAgYCR7Zm10T2J0YWluZWRDcmVkZW50aWFscyhiYXNlQ3JlZHMpfSBjb3VsZCBub3QgYmUgdXNlZCB0byBhc3N1bWUgJyR7b3B0aW9ucy5hc3N1bWVSb2xlQXJufScsIGJ1dCBhcmUgZm9yIHRoZSByaWdodCBhY2NvdW50LiBQcm9jZWVkaW5nIGFueXdheS5gLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNkazogbmV3IFNESyhiYXNlQ3JlZHMuY3JlZGVudGlhbHMsIGVudi5yZWdpb24sIHRoaXMucmVxdWVzdEhhbmRsZXIsIHRoaXMubG9nZ2VyKSxcbiAgICAgICAgICBkaWRBc3N1bWVSb2xlOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHBhcnRpdGlvbiB0aGF0IGJhc2UgY3JlZGVudGlhbHMgYXJlIGZvclxuICAgKlxuICAgKiBSZXR1cm5zIGB1bmRlZmluZWRgIGlmIHRoZXJlIGFyZSBubyBiYXNlIGNyZWRlbnRpYWxzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGJhc2VDcmVkZW50aWFsc1BhcnRpdGlvbihlbnZpcm9ubWVudDogRW52aXJvbm1lbnQsIG1vZGU6IE1vZGUpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGVudiA9IGF3YWl0IHRoaXMucmVzb2x2ZUVudmlyb25tZW50KGVudmlyb25tZW50KTtcbiAgICBjb25zdCBiYXNlQ3JlZHMgPSBhd2FpdCB0aGlzLm9idGFpbkJhc2VDcmVkZW50aWFscyhlbnYuYWNjb3VudCwgbW9kZSk7XG4gICAgaWYgKGJhc2VDcmVkcy5zb3VyY2UgPT09ICdub25lJykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIChhd2FpdCBuZXcgU0RLKGJhc2VDcmVkcy5jcmVkZW50aWFscywgZW52LnJlZ2lvbiwgdGhpcy5yZXF1ZXN0SGFuZGxlciwgdGhpcy5sb2dnZXIpLmN1cnJlbnRBY2NvdW50KCkpLnBhcnRpdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIHRoZSBlbnZpcm9ubWVudCBmb3IgYSBzdGFja1xuICAgKlxuICAgKiBSZXBsYWNlcyB0aGUgbWFnaWMgdmFsdWVzIGBVTktOT1dOX1JFR0lPTmAgYW5kIGBVTktOT1dOX0FDQ09VTlRgXG4gICAqIHdpdGggdGhlIGRlZmF1bHRzIGZvciB0aGUgY3VycmVudCBTREsgY29uZmlndXJhdGlvbiAoYH4vLmF3cy9jb25maWdgIG9yXG4gICAqIG90aGVyd2lzZSkuXG4gICAqXG4gICAqIEl0IGlzIGFuIGVycm9yIGlmIGBVTktOT1dOX0FDQ09VTlRgIGlzIHVzZWQgYnV0IHRoZSB1c2VyIGhhc24ndCBjb25maWd1cmVkXG4gICAqIGFueSBTREsgY3JlZGVudGlhbHMuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcmVzb2x2ZUVudmlyb25tZW50KGVudjogRW52aXJvbm1lbnQpOiBQcm9taXNlPEVudmlyb25tZW50PiB7XG4gICAgY29uc3QgcmVnaW9uID0gZW52LnJlZ2lvbiAhPT0gVU5LTk9XTl9SRUdJT04gPyBlbnYucmVnaW9uIDogdGhpcy5kZWZhdWx0UmVnaW9uO1xuICAgIGNvbnN0IGFjY291bnQgPSBlbnYuYWNjb3VudCAhPT0gVU5LTk9XTl9BQ0NPVU5UID8gZW52LmFjY291bnQgOiAoYXdhaXQgdGhpcy5kZWZhdWx0QWNjb3VudCgpKT8uYWNjb3VudElkO1xuXG4gICAgaWYgKCFhY2NvdW50KSB7XG4gICAgICB0aHJvdyBuZXcgQXV0aGVudGljYXRpb25FcnJvcihcbiAgICAgICAgJ1VuYWJsZSB0byByZXNvbHZlIEFXUyBhY2NvdW50IHRvIHVzZS4gSXQgbXVzdCBiZSBlaXRoZXIgY29uZmlndXJlZCB3aGVuIHlvdSBkZWZpbmUgeW91ciBDREsgU3RhY2ssIG9yIHRocm91Z2ggdGhlIGVudmlyb25tZW50JyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJlZ2lvbixcbiAgICAgIGFjY291bnQsXG4gICAgICBuYW1lOiBFbnZpcm9ubWVudFV0aWxzLmZvcm1hdChhY2NvdW50LCByZWdpb24pLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVGhlIGFjY291bnQgd2UnZCBhdXRoIGludG8gaWYgd2UgdXNlZCBkZWZhdWx0IGNyZWRlbnRpYWxzLlxuICAgKlxuICAgKiBEZWZhdWx0IGNyZWRlbnRpYWxzIGFyZSB0aGUgc2V0IG9mIGFtYmllbnRseSBjb25maWd1cmVkIGNyZWRlbnRpYWxzIHVzaW5nXG4gICAqIG9uZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBvciB+Ly5hd3MvY3JlZGVudGlhbHMsIG9yIHRoZSAqb25lKlxuICAgKiBwcm9maWxlIHRoYXQgd2FzIHBhc3NlZCBpbnRvIHRoZSBDTEkuXG4gICAqXG4gICAqIE1pZ2h0IHJldHVybiB1bmRlZmluZWQgaWYgdGhlcmUgYXJlIG5vIGRlZmF1bHQvYW1iaWVudCBjcmVkZW50aWFsc1xuICAgKiBhdmFpbGFibGUgKGluIHdoaWNoIGNhc2UgdGhlIHVzZXIgc2hvdWxkIGJldHRlciBob3BlIHRoZXkgaGF2ZVxuICAgKiBjcmVkZW50aWFsIHBsdWdpbnMgY29uZmlndXJlZCkuXG4gICAqXG4gICAqIFVzZXMgYSBjYWNoZSB0byBhdm9pZCBTVFMgY2FsbHMgaWYgd2UgZG9uJ3QgbmVlZCAnZW0uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZGVmYXVsdEFjY291bnQoKTogUHJvbWlzZTxBY2NvdW50IHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIGNhY2hlZCh0aGlzLCBDQUNIRURfQUNDT1VOVCwgYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG5ldyBTREsodGhpcy5kZWZhdWx0Q3JlZGVudGlhbFByb3ZpZGVyLCB0aGlzLmRlZmF1bHRSZWdpb24sIHRoaXMucmVxdWVzdEhhbmRsZXIsIHRoaXMubG9nZ2VyKS5jdXJyZW50QWNjb3VudCgpO1xuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIC8vIFRyZWF0ICdFeHBpcmVkVG9rZW4nIHNwZWNpYWxseS4gVGhpcyBpcyBhIGNvbW1vbiBzaXR1YXRpb24gdGhhdCBwZW9wbGUgbWF5IGZpbmQgdGhlbXNlbHZlcyBpbiwgYW5kXG4gICAgICAgIC8vIHRoZXkgYXJlIGNvbXBsYWluaW5nIGFib3V0IGlmIHdlIGZhaWwgJ2NkayBzeW50aCcgb24gdGhlbS4gV2UgbG91ZGx5IGNvbXBsYWluIGluIG9yZGVyIHRvIHNob3cgdGhhdFxuICAgICAgICAvLyB0aGUgY3VycmVudCBzaXR1YXRpb24gaXMgcHJvYmFibHkgdW5kZXNpcmFibGUsIGJ1dCB3ZSBkb24ndCBmYWlsLlxuICAgICAgICBpZiAoZS5uYW1lID09PSAnRXhwaXJlZFRva2VuJykge1xuICAgICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgICAnVGhlcmUgYXJlIGV4cGlyZWQgQVdTIGNyZWRlbnRpYWxzIGluIHlvdXIgZW52aXJvbm1lbnQuIFRoZSBDREsgYXBwIHdpbGwgc3ludGggd2l0aG91dCBjdXJyZW50IGFjY291bnQgaW5mb3JtYXRpb24uJyxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBkZWJ1ZyhgVW5hYmxlIHRvIGRldGVybWluZSB0aGUgZGVmYXVsdCBBV1MgYWNjb3VudCAoJHtlLm5hbWV9KTogJHtmb3JtYXRFcnJvck1lc3NhZ2UoZSl9YCk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNyZWRlbnRpYWxzIGZvciB0aGUgZ2l2ZW4gYWNjb3VudCBJRCBpbiB0aGUgZ2l2ZW4gbW9kZVxuICAgKlxuICAgKiAxLiBVc2UgdGhlIGRlZmF1bHQgY3JlZGVudGlhbHMgaWYgdGhlIGRlc3RpbmF0aW9uIGFjY291bnQgbWF0Y2hlcyB0aGVcbiAgICogICAgY3VycmVudCBjcmVkZW50aWFscycgYWNjb3VudC5cbiAgICogMi4gT3RoZXJ3aXNlIHRyeSBhbGwgY3JlZGVudGlhbCBwbHVnaW5zLlxuICAgKiAzLiBGYWlsIGlmIG5laXRoZXIgb2YgdGhlc2UgeWllbGQgYW55IGNyZWRlbnRpYWxzLlxuICAgKiA0LiBSZXR1cm4gYSBmYWlsdXJlIGlmIGFueSBvZiB0aGVtIHJldHVybmVkIGNyZWRlbnRpYWxzXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIG9idGFpbkJhc2VDcmVkZW50aWFscyhhY2NvdW50SWQ6IHN0cmluZywgbW9kZTogTW9kZSk6IFByb21pc2U8T2J0YWluQmFzZUNyZWRlbnRpYWxzUmVzdWx0PiB7XG4gICAgLy8gRmlyc3QgdHJ5ICdjdXJyZW50JyBjcmVkZW50aWFsc1xuICAgIGNvbnN0IGRlZmF1bHRBY2NvdW50SWQgPSAoYXdhaXQgdGhpcy5kZWZhdWx0QWNjb3VudCgpKT8uYWNjb3VudElkO1xuICAgIGlmIChkZWZhdWx0QWNjb3VudElkID09PSBhY2NvdW50SWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogJ2NvcnJlY3REZWZhdWx0JyxcbiAgICAgICAgY3JlZGVudGlhbHM6IGF3YWl0IHRoaXMuZGVmYXVsdENyZWRlbnRpYWxQcm92aWRlcixcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gVGhlbiB0cnkgdGhlIHBsdWdpbnNcbiAgICBjb25zdCBwbHVnaW5DcmVkcyA9IGF3YWl0IHRoaXMucGx1Z2lucy5mZXRjaENyZWRlbnRpYWxzRm9yKGFjY291bnRJZCwgbW9kZSk7XG4gICAgaWYgKHBsdWdpbkNyZWRzKSB7XG4gICAgICByZXR1cm4geyBzb3VyY2U6ICdwbHVnaW4nLCAuLi5wbHVnaW5DcmVkcyB9O1xuICAgIH1cblxuICAgIC8vIEZhbGwgYmFjayB0byBkZWZhdWx0IGNyZWRlbnRpYWxzIHdpdGggYSBub3RlIHRoYXQgdGhleSdyZSBub3QgdGhlIHJpZ2h0IG9uZXMgeWV0XG4gICAgaWYgKGRlZmF1bHRBY2NvdW50SWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc291cmNlOiAnaW5jb3JyZWN0RGVmYXVsdCcsXG4gICAgICAgIGFjY291bnRJZDogZGVmYXVsdEFjY291bnRJZCxcbiAgICAgICAgY3JlZGVudGlhbHM6IGF3YWl0IHRoaXMuZGVmYXVsdENyZWRlbnRpYWxQcm92aWRlcixcbiAgICAgICAgdW51c2VkUGx1Z2luczogdGhpcy5wbHVnaW5zLmF2YWlsYWJsZVBsdWdpbk5hbWVzLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBBcHBhcmVudGx5IHdlIGRpZG4ndCBmaW5kIGFueSBhdCBhbGxcbiAgICByZXR1cm4ge1xuICAgICAgc291cmNlOiAnbm9uZScsXG4gICAgICB1bnVzZWRQbHVnaW5zOiB0aGlzLnBsdWdpbnMuYXZhaWxhYmxlUGx1Z2luTmFtZXMsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gU0RLIHdoaWNoIHVzZXMgYXNzdW1lZCByb2xlIGNyZWRlbnRpYWxzXG4gICAqXG4gICAqIFRoZSBiYXNlIGNyZWRlbnRpYWxzIHVzZWQgdG8gcmV0cmlldmUgdGhlIGFzc3VtZWQgcm9sZSBjcmVkZW50aWFscyB3aWxsIGJlIHRoZVxuICAgKiBzYW1lIGNyZWRlbnRpYWxzIHJldHVybmVkIGJ5IG9idGFpbkNyZWRlbnRpYWxzIGlmIGFuIGVudmlyb25tZW50IGFuZCBtb2RlIGlzIHBhc3NlZCxcbiAgICogb3RoZXJ3aXNlIGl0IHdpbGwgYmUgdGhlIGN1cnJlbnQgY3JlZGVudGlhbHMuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHdpdGhBc3N1bWVkUm9sZShcbiAgICBtYWluQ3JlZGVudGlhbHM6IEV4Y2x1ZGU8T2J0YWluQmFzZUNyZWRlbnRpYWxzUmVzdWx0LCB7IHNvdXJjZTogJ25vbmUnIH0+LFxuICAgIHJvbGVBcm46IHN0cmluZyxcbiAgICBleHRlcm5hbElkPzogc3RyaW5nLFxuICAgIGFkZGl0aW9uYWxPcHRpb25zPzogQXNzdW1lUm9sZUFkZGl0aW9uYWxPcHRpb25zLFxuICAgIHJlZ2lvbj86IHN0cmluZyxcbiAgKTogUHJvbWlzZTxTREs+IHtcbiAgICBkZWJ1ZyhgQXNzdW1pbmcgcm9sZSAnJHtyb2xlQXJufScuYCk7XG5cbiAgICByZWdpb24gPSByZWdpb24gPz8gdGhpcy5kZWZhdWx0UmVnaW9uO1xuXG4gICAgY29uc3Qgc291cmNlRGVzY3JpcHRpb24gPSBmbXRPYnRhaW5lZENyZWRlbnRpYWxzKG1haW5DcmVkZW50aWFscyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgY3JlZGVudGlhbHMgPSBhd2FpdCBtYWtlQ2FjaGluZ1Byb3ZpZGVyKGZyb21UZW1wb3JhcnlDcmVkZW50aWFscyh7XG4gICAgICAgIG1hc3RlckNyZWRlbnRpYWxzOiBtYWluQ3JlZGVudGlhbHMuY3JlZGVudGlhbHMsXG4gICAgICAgIHBhcmFtczoge1xuICAgICAgICAgIFJvbGVBcm46IHJvbGVBcm4sXG4gICAgICAgICAgRXh0ZXJuYWxJZDogZXh0ZXJuYWxJZCxcbiAgICAgICAgICBSb2xlU2Vzc2lvbk5hbWU6IGBhd3MtY2RrLSR7c2FmZVVzZXJuYW1lKCl9YCxcbiAgICAgICAgICAuLi5hZGRpdGlvbmFsT3B0aW9ucyxcbiAgICAgICAgICBUcmFuc2l0aXZlVGFnS2V5czogYWRkaXRpb25hbE9wdGlvbnM/LlRhZ3MgPyBhZGRpdGlvbmFsT3B0aW9ucy5UYWdzLm1hcCgodCkgPT4gdC5LZXkhKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgfSxcbiAgICAgICAgY2xpZW50Q29uZmlnOiB7XG4gICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgIHJlcXVlc3RIYW5kbGVyOiB0aGlzLnJlcXVlc3RIYW5kbGVyLFxuICAgICAgICAgIGN1c3RvbVVzZXJBZ2VudDogJ2F3cy1jZGsnLFxuICAgICAgICAgIGxvZ2dlcjogdGhpcy5sb2dnZXIsXG4gICAgICAgIH0sXG4gICAgICAgIGxvZ2dlcjogdGhpcy5sb2dnZXIsXG4gICAgICB9KSk7XG5cbiAgICAgIC8vIENhbGwgdGhlIHByb3ZpZGVyIGF0IGxlYXN0IG9uY2UgaGVyZSwgdG8gY2F0Y2ggYW4gZXJyb3IgaWYgaXQgb2NjdXJzXG4gICAgICBhd2FpdCBjcmVkZW50aWFscygpO1xuXG4gICAgICByZXR1cm4gbmV3IFNESyhjcmVkZW50aWFscywgcmVnaW9uLCB0aGlzLnJlcXVlc3RIYW5kbGVyLCB0aGlzLmxvZ2dlcik7XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgIGlmIChlcnIubmFtZSA9PT0gJ0V4cGlyZWRUb2tlbicpIHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuXG4gICAgICBkZWJ1ZyhgQXNzdW1pbmcgcm9sZSBmYWlsZWQ6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICB0aHJvdyBuZXcgQXV0aGVudGljYXRpb25FcnJvcihcbiAgICAgICAgW1xuICAgICAgICAgICdDb3VsZCBub3QgYXNzdW1lIHJvbGUgaW4gdGFyZ2V0IGFjY291bnQnLFxuICAgICAgICAgIC4uLihzb3VyY2VEZXNjcmlwdGlvbiA/IFtgdXNpbmcgJHtzb3VyY2VEZXNjcmlwdGlvbn1gXSA6IFtdKSxcbiAgICAgICAgICBlcnIubWVzc2FnZSxcbiAgICAgICAgICBcIi4gUGxlYXNlIG1ha2Ugc3VyZSB0aGF0IHRoaXMgcm9sZSBleGlzdHMgaW4gdGhlIGFjY291bnQuIElmIGl0IGRvZXNuJ3QgZXhpc3QsIChyZSktYm9vdHN0cmFwIHRoZSBlbnZpcm9ubWVudCBcIiArXG4gICAgICAgICAgICBcIndpdGggdGhlIHJpZ2h0ICctLXRydXN0JywgdXNpbmcgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBDREsgQ0xJLlwiLFxuICAgICAgICBdLmpvaW4oJyAnKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQW4gQVdTIGFjY291bnRcbiAqXG4gKiBBbiBBV1MgYWNjb3VudCBhbHdheXMgZXhpc3RzIGluIG9ubHkgb25lIHBhcnRpdGlvbi4gVXN1YWxseSB3ZSBkb24ndCBjYXJlIGFib3V0XG4gKiB0aGUgcGFydGl0aW9uLCBidXQgd2hlbiB3ZSBuZWVkIHRvIGZvcm0gQVJOcyB3ZSBkby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY2NvdW50IHtcbiAgLyoqXG4gICAqIFRoZSBhY2NvdW50IG51bWJlclxuICAgKi9cbiAgcmVhZG9ubHkgYWNjb3VudElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJ0aXRpb24gKCdhd3MnIG9yICdhd3MtY24nIG9yIG90aGVyd2lzZSlcbiAgICovXG4gIHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJldHVybiB0aGUgdXNlcm5hbWUgd2l0aCBjaGFyYWN0ZXJzIGludmFsaWQgZm9yIGEgUm9sZVNlc3Npb25OYW1lIHJlbW92ZWRcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9TVFMvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQXNzdW1lUm9sZS5odG1sI0FQSV9Bc3N1bWVSb2xlX1JlcXVlc3RQYXJhbWV0ZXJzXG4gKi9cbmZ1bmN0aW9uIHNhZmVVc2VybmFtZSgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gb3MudXNlckluZm8oKS51c2VybmFtZS5yZXBsYWNlKC9bXlxcdys9LC5ALV0vZywgJ0AnKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuICdub25hbWUnO1xuICB9XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Igb2J0YWluaW5nIGNyZWRlbnRpYWxzIGZvciBhbiBlbnZpcm9ubWVudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWRlbnRpYWxzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSByb2xlIHRoYXQgbmVlZHMgdG8gYmUgYXNzdW1lZCwgaWYgYW55XG4gICAqL1xuICByZWFkb25seSBhc3N1bWVSb2xlQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFeHRlcm5hbCBJRCByZXF1aXJlZCB0byBhc3N1bWUgdGhlIGdpdmVuIHJvbGUuXG4gICAqL1xuICByZWFkb25seSBhc3N1bWVSb2xlRXh0ZXJuYWxJZD86IHN0cmluZztcblxuICAvKipcbiAgICogU2Vzc2lvbiB0YWdzIHJlcXVpcmVkIHRvIGFzc3VtZSB0aGUgZ2l2ZW4gcm9sZS5cbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucz86IEFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucztcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2Ygb2J0YWluaW5nIGJhc2UgY3JlZGVudGlhbHNcbiAqL1xudHlwZSBPYnRhaW5CYXNlQ3JlZGVudGlhbHNSZXN1bHQgPVxuICB8IHsgc291cmNlOiAnY29ycmVjdERlZmF1bHQnOyBjcmVkZW50aWFsczogQXdzQ3JlZGVudGlhbElkZW50aXR5UHJvdmlkZXIgfVxuICB8IHsgc291cmNlOiAncGx1Z2luJzsgcGx1Z2luTmFtZTogc3RyaW5nOyBjcmVkZW50aWFsczogQXdzQ3JlZGVudGlhbElkZW50aXR5UHJvdmlkZXIgfVxuICB8IHtcbiAgICBzb3VyY2U6ICdpbmNvcnJlY3REZWZhdWx0JztcbiAgICBjcmVkZW50aWFsczogQXdzQ3JlZGVudGlhbElkZW50aXR5UHJvdmlkZXI7XG4gICAgYWNjb3VudElkOiBzdHJpbmc7XG4gICAgdW51c2VkUGx1Z2luczogc3RyaW5nW107XG4gIH1cbiAgfCB7IHNvdXJjZTogJ25vbmUnOyB1bnVzZWRQbHVnaW5zOiBzdHJpbmdbXSB9O1xuXG4vKipcbiAqIElzb2xhdGluZyB0aGUgY29kZSB0aGF0IHRyYW5zbGF0ZXMgY2FsY3VsYXRpb24gZXJyb3JzIGludG8gaHVtYW4gZXJyb3IgbWVzc2FnZXNcbiAqXG4gKiBXZSBjb3ZlciB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICpcbiAqIC0gTm8gY3JlZGVudGlhbHMgYXJlIGF2YWlsYWJsZSBhdCBhbGxcbiAqIC0gRGVmYXVsdCBjcmVkZW50aWFscyBhcmUgZm9yIHRoZSB3cm9uZyBhY2NvdW50XG4gKi9cbmZ1bmN0aW9uIGZtdE9idGFpbkNyZWRlbnRpYWxzRXJyb3IoXG4gIHRhcmdldEFjY291bnRJZDogc3RyaW5nLFxuICBvYnRhaW5SZXN1bHQ6IE9idGFpbkJhc2VDcmVkZW50aWFsc1Jlc3VsdCAmIHtcbiAgICBzb3VyY2U6ICdub25lJyB8ICdpbmNvcnJlY3REZWZhdWx0JztcbiAgfSxcbik6IHN0cmluZyB7XG4gIGNvbnN0IG1zZyA9IFtgTmVlZCB0byBwZXJmb3JtIEFXUyBjYWxscyBmb3IgYWNjb3VudCAke3RhcmdldEFjY291bnRJZH1gXTtcbiAgc3dpdGNoIChvYnRhaW5SZXN1bHQuc291cmNlKSB7XG4gICAgY2FzZSAnaW5jb3JyZWN0RGVmYXVsdCc6XG4gICAgICBtc2cucHVzaChgYnV0IHRoZSBjdXJyZW50IGNyZWRlbnRpYWxzIGFyZSBmb3IgJHtvYnRhaW5SZXN1bHQuYWNjb3VudElkfWApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbm9uZSc6XG4gICAgICBtc2cucHVzaCgnYnV0IG5vIGNyZWRlbnRpYWxzIGhhdmUgYmVlbiBjb25maWd1cmVkJyk7XG4gIH1cbiAgaWYgKG9idGFpblJlc3VsdC51bnVzZWRQbHVnaW5zLmxlbmd0aCA+IDApIHtcbiAgICBtc2cucHVzaChgYW5kIG5vbmUgb2YgdGhlc2UgcGx1Z2lucyBmb3VuZCBhbnk6ICR7b2J0YWluUmVzdWx0LnVudXNlZFBsdWdpbnMuam9pbignLCAnKX1gKTtcbiAgfVxuICByZXR1cm4gbXNnLmpvaW4oJywgJyk7XG59XG5cbi8qKlxuICogRm9ybWF0IGEgbWVzc2FnZSBpbmRpY2F0aW5nIHdoZXJlIHdlIGdvdCBiYXNlIGNyZWRlbnRpYWxzIGZvciB0aGUgYXNzdW1lIHJvbGVcbiAqXG4gKiBXZSBjb3ZlciB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICpcbiAqIC0gRGVmYXVsdCBjcmVkZW50aWFscyBmb3IgdGhlIHJpZ2h0IGFjY291bnRcbiAqIC0gRGVmYXVsdCBjcmVkZW50aWFscyBmb3IgdGhlIHdyb25nIGFjY291bnRcbiAqIC0gQ3JlZGVudGlhbHMgcmV0dXJuZWQgZnJvbSBhIHBsdWdpblxuICovXG5mdW5jdGlvbiBmbXRPYnRhaW5lZENyZWRlbnRpYWxzKG9idGFpblJlc3VsdDogRXhjbHVkZTxPYnRhaW5CYXNlQ3JlZGVudGlhbHNSZXN1bHQsIHsgc291cmNlOiAnbm9uZScgfT4pOiBzdHJpbmcge1xuICBzd2l0Y2ggKG9idGFpblJlc3VsdC5zb3VyY2UpIHtcbiAgICBjYXNlICdjb3JyZWN0RGVmYXVsdCc6XG4gICAgICByZXR1cm4gJ2N1cnJlbnQgY3JlZGVudGlhbHMnO1xuICAgIGNhc2UgJ3BsdWdpbic6XG4gICAgICByZXR1cm4gYGNyZWRlbnRpYWxzIHJldHVybmVkIGJ5IHBsdWdpbiAnJHtvYnRhaW5SZXN1bHQucGx1Z2luTmFtZX0nYDtcbiAgICBjYXNlICdpbmNvcnJlY3REZWZhdWx0JzpcbiAgICAgIGNvbnN0IG1zZyA9IFtdO1xuICAgICAgbXNnLnB1c2goYGN1cnJlbnQgY3JlZGVudGlhbHMgKHdoaWNoIGFyZSBmb3IgYWNjb3VudCAke29idGFpblJlc3VsdC5hY2NvdW50SWR9YCk7XG5cbiAgICAgIGlmIChvYnRhaW5SZXN1bHQudW51c2VkUGx1Z2lucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIG1zZy5wdXNoKGAsIGFuZCBub25lIG9mIHRoZSBmb2xsb3dpbmcgcGx1Z2lucyBwcm92aWRlZCBjcmVkZW50aWFsczogJHtvYnRhaW5SZXN1bHQudW51c2VkUGx1Z2lucy5qb2luKCcsICcpfWApO1xuICAgICAgfVxuICAgICAgbXNnLnB1c2goJyknKTtcblxuICAgICAgcmV0dXJuIG1zZy5qb2luKCcnKTtcbiAgfVxufVxuXG4vKipcbiAqIEluc3RhbnRpYXRlIGFuIFNESyBmb3IgY29udGV4dCBwcm92aWRlcnMuIFRoaXMgZnVuY3Rpb24gZW5zdXJlcyB0aGF0IGFsbFxuICogbG9va3VwIGFzc3VtZSByb2xlIG9wdGlvbnMgYXJlIHVzZWQgd2hlbiBjb250ZXh0IHByb3ZpZGVycyBwZXJmb3JtIGxvb2t1cHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0Q29udGV4dFByb3ZpZGVyU2RrKGF3czogU2RrUHJvdmlkZXIsIG9wdGlvbnM6IENvbnRleHRMb29rdXBSb2xlT3B0aW9ucyk6IFByb21pc2U8U0RLPiB7XG4gIGNvbnN0IGFjY291bnQgPSBvcHRpb25zLmFjY291bnQ7XG4gIGNvbnN0IHJlZ2lvbiA9IG9wdGlvbnMucmVnaW9uO1xuXG4gIGNvbnN0IGNyZWRzOiBDcmVkZW50aWFsc09wdGlvbnMgPSB7XG4gICAgYXNzdW1lUm9sZUFybjogb3B0aW9ucy5sb29rdXBSb2xlQXJuLFxuICAgIGFzc3VtZVJvbGVFeHRlcm5hbElkOiBvcHRpb25zLmxvb2t1cFJvbGVFeHRlcm5hbElkLFxuICAgIGFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9uczogb3B0aW9ucy5hc3N1bWVSb2xlQWRkaXRpb25hbE9wdGlvbnMsXG4gIH07XG5cbiAgcmV0dXJuIChhd2FpdCBhd3MuZm9yRW52aXJvbm1lbnQoRW52aXJvbm1lbnRVdGlscy5tYWtlKGFjY291bnQsIHJlZ2lvbiksIE1vZGUuRm9yUmVhZGluZywgY3JlZHMpKS5zZGs7XG59XG4iXX0=
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import { FunctionConfiguration,
|
|
2
|
-
import { GetResourceCommandInput, GetResourceCommandOutput, ListResourcesCommandInput, ListResourcesCommandOutput } from '@aws-sdk/client-cloudcontrol';
|
|
3
|
-
import { ContinueUpdateRollbackCommandInput, ContinueUpdateRollbackCommandOutput,
|
|
4
|
-
import {
|
|
1
|
+
import type { FunctionConfiguration, GetSchemaCreationStatusCommandInput, GetSchemaCreationStatusCommandOutput, ListFunctionsCommandInput, StartSchemaCreationCommandInput, StartSchemaCreationCommandOutput, UpdateApiKeyCommandInput, UpdateApiKeyCommandOutput, UpdateFunctionCommandInput, UpdateFunctionCommandOutput, UpdateResolverCommandInput, UpdateResolverCommandOutput } from '@aws-sdk/client-appsync';
|
|
2
|
+
import type { GetResourceCommandInput, GetResourceCommandOutput, ListResourcesCommandInput, ListResourcesCommandOutput } from '@aws-sdk/client-cloudcontrol';
|
|
3
|
+
import type { ContinueUpdateRollbackCommandInput, ContinueUpdateRollbackCommandOutput, DescribeStackEventsCommandOutput, DescribeStackResourcesCommandInput, DescribeStackResourcesCommandOutput, ListStacksCommandInput, ListStacksCommandOutput, RollbackStackCommandInput, RollbackStackCommandOutput, StackResourceSummary, CreateChangeSetCommandInput, CreateChangeSetCommandOutput, CreateGeneratedTemplateCommandInput, CreateGeneratedTemplateCommandOutput, CreateStackCommandInput, CreateStackCommandOutput, DeleteChangeSetCommandInput, DeleteChangeSetCommandOutput, DeleteGeneratedTemplateCommandInput, DeleteGeneratedTemplateCommandOutput, DeleteStackCommandInput, DeleteStackCommandOutput, DescribeChangeSetCommandInput, DescribeChangeSetCommandOutput, DescribeGeneratedTemplateCommandInput, DescribeGeneratedTemplateCommandOutput, DescribeResourceScanCommandInput, DescribeResourceScanCommandOutput, DescribeStackEventsCommandInput, DescribeStacksCommandInput, DescribeStacksCommandOutput, ExecuteChangeSetCommandInput, ExecuteChangeSetCommandOutput, GetGeneratedTemplateCommandInput, GetGeneratedTemplateCommandOutput, GetTemplateCommandInput, GetTemplateCommandOutput, GetTemplateSummaryCommandInput, GetTemplateSummaryCommandOutput, ListExportsCommandInput, ListExportsCommandOutput, ListResourceScanRelatedResourcesCommandInput, ListResourceScanRelatedResourcesCommandOutput, ListResourceScanResourcesCommandInput, ListResourceScanResourcesCommandOutput, ListResourceScansCommandInput, ListResourceScansCommandOutput, ListStackResourcesCommandInput, StartResourceScanCommandInput, StartResourceScanCommandOutput, UpdateStackCommandInput, UpdateStackCommandOutput, UpdateTerminationProtectionCommandInput, UpdateTerminationProtectionCommandOutput } from '@aws-sdk/client-cloudformation';
|
|
4
|
+
import type { FilterLogEventsCommandInput, FilterLogEventsCommandOutput, DescribeLogGroupsCommandInput, DescribeLogGroupsCommandOutput } from '@aws-sdk/client-cloudwatch-logs';
|
|
5
5
|
import { type UpdateProjectCommandInput, type UpdateProjectCommandOutput } from '@aws-sdk/client-codebuild';
|
|
6
6
|
import { type DescribeAvailabilityZonesCommandInput, type DescribeAvailabilityZonesCommandOutput, type DescribeImagesCommandInput, type DescribeImagesCommandOutput, type DescribeInstancesCommandInput, type DescribeInstancesCommandOutput, type DescribeRouteTablesCommandInput, type DescribeRouteTablesCommandOutput, type DescribeSecurityGroupsCommandInput, type DescribeSecurityGroupsCommandOutput, type DescribeSubnetsCommandInput, type DescribeSubnetsCommandOutput, type DescribeVpcEndpointServicesCommandInput, type DescribeVpcEndpointServicesCommandOutput, type DescribeVpcsCommandInput, type DescribeVpcsCommandOutput, type DescribeVpnGatewaysCommandInput, type DescribeVpnGatewaysCommandOutput } from '@aws-sdk/client-ec2';
|
|
7
|
-
import { BatchDeleteImageCommandInput, BatchDeleteImageCommandOutput,
|
|
8
|
-
import { DescribeServicesCommandInput,
|
|
9
|
-
import {
|
|
7
|
+
import type { BatchDeleteImageCommandInput, BatchDeleteImageCommandOutput, ListImagesCommandInput, ListImagesCommandOutput, PutImageCommandInput, PutImageCommandOutput, BatchGetImageCommandInput, BatchGetImageCommandOutput, CreateRepositoryCommandInput, CreateRepositoryCommandOutput, DescribeImagesCommandInput as ECRDescribeImagesCommandInput, DescribeImagesCommandOutput as ECRDescribeImagesCommandOutput, DescribeRepositoriesCommandInput, DescribeRepositoriesCommandOutput, GetAuthorizationTokenCommandInput, GetAuthorizationTokenCommandOutput, PutImageScanningConfigurationCommandInput, PutImageScanningConfigurationCommandOutput } from '@aws-sdk/client-ecr';
|
|
8
|
+
import type { DescribeServicesCommandInput, RegisterTaskDefinitionCommandInput, ListClustersCommandInput, ListClustersCommandOutput, RegisterTaskDefinitionCommandOutput, UpdateServiceCommandInput, UpdateServiceCommandOutput } from '@aws-sdk/client-ecs';
|
|
9
|
+
import type { Listener, LoadBalancer, DescribeListenersCommandInput, DescribeListenersCommandOutput, DescribeLoadBalancersCommandInput, DescribeLoadBalancersCommandOutput, DescribeTagsCommandInput, DescribeTagsCommandOutput } from '@aws-sdk/client-elastic-load-balancing-v2';
|
|
10
10
|
import { type CreatePolicyCommandInput, type CreatePolicyCommandOutput, type GetPolicyCommandInput, type GetPolicyCommandOutput, type GetRoleCommandInput, type GetRoleCommandOutput } from '@aws-sdk/client-iam';
|
|
11
11
|
import { type DescribeKeyCommandInput, type DescribeKeyCommandOutput, type ListAliasesCommandInput, type ListAliasesCommandOutput } from '@aws-sdk/client-kms';
|
|
12
12
|
import { type InvokeCommandInput, type InvokeCommandOutput, type PublishVersionCommandInput, type PublishVersionCommandOutput, type UpdateAliasCommandInput, type UpdateAliasCommandOutput, type UpdateFunctionCodeCommandInput, type UpdateFunctionCodeCommandOutput, type UpdateFunctionConfigurationCommandInput, type UpdateFunctionConfigurationCommandOutput } from '@aws-sdk/client-lambda';
|
|
13
13
|
import { type GetHostedZoneCommandInput, type GetHostedZoneCommandOutput, type ListHostedZonesByNameCommandInput, type ListHostedZonesByNameCommandOutput, type ListHostedZonesCommandInput, type ListHostedZonesCommandOutput } from '@aws-sdk/client-route-53';
|
|
14
|
-
import
|
|
14
|
+
import type { DeleteObjectsCommandInput, DeleteObjectsCommandOutput, DeleteObjectTaggingCommandInput, DeleteObjectTaggingCommandOutput, GetObjectTaggingCommandInput, GetObjectTaggingCommandOutput, PutObjectTaggingCommandInput, PutObjectTaggingCommandOutput, CompleteMultipartUploadCommandOutput, GetBucketEncryptionCommandInput, GetBucketEncryptionCommandOutput, GetBucketLocationCommandInput, GetBucketLocationCommandOutput, GetObjectCommandInput, GetObjectCommandOutput, ListObjectsV2CommandInput, ListObjectsV2CommandOutput, PutObjectCommandInput } from '@aws-sdk/client-s3';
|
|
15
15
|
import { type GetSecretValueCommandInput, type GetSecretValueCommandOutput } from '@aws-sdk/client-secrets-manager';
|
|
16
|
-
import { UpdateStateMachineCommandInput, UpdateStateMachineCommandOutput } from '@aws-sdk/client-sfn';
|
|
16
|
+
import type { UpdateStateMachineCommandInput, UpdateStateMachineCommandOutput } from '@aws-sdk/client-sfn';
|
|
17
17
|
import { type GetParameterCommandInput, type GetParameterCommandOutput } from '@aws-sdk/client-ssm';
|
|
18
18
|
import type { NodeHttpHandlerOptions } from '@smithy/node-http-handler';
|
|
19
|
-
import { AwsCredentialIdentityProvider, Logger } from '@smithy/types';
|
|
19
|
+
import type { AwsCredentialIdentityProvider, Logger } from '@smithy/types';
|
|
20
20
|
import { ConfiguredRetryStrategy } from '@smithy/util-retry';
|
|
21
|
-
import { WaiterResult } from '@smithy/util-waiter';
|
|
22
|
-
import { Account } from './sdk-provider';
|
|
21
|
+
import type { WaiterResult } from '@smithy/util-waiter';
|
|
22
|
+
import type { Account } from './sdk-provider';
|
|
23
23
|
export interface S3ClientOptions {
|
|
24
24
|
/**
|
|
25
25
|
* If APIs are used that require MD5 checksums.
|