@aws-solutions-constructs/core 2.98.0 → 2.99.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/.jsii +418 -13
- package/index.d.ts +1 -0
- package/index.js +2 -1
- package/lib/polly-helper.d.ts +50 -0
- package/lib/polly-helper.js +138 -0
- package/lib/step-function-helper.js +12 -2
- package/lib/vpc-helper.d.ts +2 -1
- package/lib/vpc-helper.js +7 -1
- package/package.json +3 -3
- package/test/polly-helper.test.d.ts +13 -0
- package/test/polly-helper.test.js +495 -0
- package/test/vpc-helper.test.js +28 -1
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
|
|
6
|
+
* with the License. A copy of the License is located at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
|
|
11
|
+
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
|
|
12
|
+
* and limitations under the License.
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ConfigurePollySupport = ConfigurePollySupport;
|
|
16
|
+
exports.CheckPollyProps = CheckPollyProps;
|
|
17
|
+
const s3_bucket_helper_1 = require("./s3-bucket-helper");
|
|
18
|
+
const sns_helper_1 = require("./sns-helper");
|
|
19
|
+
const utils_1 = require("./utils");
|
|
20
|
+
const syncPermissions = [
|
|
21
|
+
'polly:SynthesizeSpeech'
|
|
22
|
+
];
|
|
23
|
+
const asyncPermissions = [
|
|
24
|
+
'polly:StartSpeechSynthesisTask',
|
|
25
|
+
'polly:GetSpeechSynthesisTask',
|
|
26
|
+
'polly:ListSpeechSynthesisTasks'
|
|
27
|
+
];
|
|
28
|
+
function ConfigurePollySupport(scope, id, props) {
|
|
29
|
+
let configuration = {
|
|
30
|
+
lambdaIamActionsRequired: [...syncPermissions],
|
|
31
|
+
environmentVariables: [],
|
|
32
|
+
};
|
|
33
|
+
if (props.asyncJobs) {
|
|
34
|
+
// Setup SNS notification topic
|
|
35
|
+
const buildTopicResponse = (0, sns_helper_1.buildTopic)(scope, id, {
|
|
36
|
+
existingTopicObj: props.existingTopicObj,
|
|
37
|
+
existingTopicEncryptionKey: props.existingTopicEncryptionKey,
|
|
38
|
+
topicProps: props.topicProps,
|
|
39
|
+
enableEncryptionWithCustomerManagedKey: props.enableTopicEncryptionWithCustomerManagedKey,
|
|
40
|
+
encryptionKey: props.topicEncryptionKey,
|
|
41
|
+
encryptionKeyProps: props.topicEncryptionKeyProps
|
|
42
|
+
});
|
|
43
|
+
configuration = (0, utils_1.overrideProps)(configuration, {
|
|
44
|
+
snsNotificationTopic: buildTopicResponse.topic,
|
|
45
|
+
});
|
|
46
|
+
if (buildTopicResponse.key) {
|
|
47
|
+
configuration = (0, utils_1.overrideProps)(configuration, { notificationTopicEncryptionKey: buildTopicResponse.key });
|
|
48
|
+
}
|
|
49
|
+
// Setup S3 Bucket for audio output
|
|
50
|
+
if (props.existingBucketObj) {
|
|
51
|
+
configuration = (0, utils_1.overrideProps)(configuration, {
|
|
52
|
+
destinationBucket: {
|
|
53
|
+
bucketInterface: props.existingBucketObj
|
|
54
|
+
}
|
|
55
|
+
}, false);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
const buildBucketResponse = (0, s3_bucket_helper_1.buildS3Bucket)(scope, {
|
|
59
|
+
bucketProps: props.bucketProps,
|
|
60
|
+
loggingBucketProps: props.loggingBucketProps,
|
|
61
|
+
logS3AccessLogs: props.logS3AccessLogs
|
|
62
|
+
}, `${id}-output-bucket`);
|
|
63
|
+
configuration = (0, utils_1.overrideProps)(configuration, {
|
|
64
|
+
destinationBucket: {
|
|
65
|
+
bucket: buildBucketResponse.bucket,
|
|
66
|
+
loggingBucket: buildBucketResponse.loggingBucket,
|
|
67
|
+
bucketInterface: buildBucketResponse.bucket,
|
|
68
|
+
}
|
|
69
|
+
}, false);
|
|
70
|
+
}
|
|
71
|
+
// Add async permissions
|
|
72
|
+
asyncPermissions.forEach((permission) => {
|
|
73
|
+
configuration.lambdaIamActionsRequired.push(permission);
|
|
74
|
+
});
|
|
75
|
+
// Build environment variables
|
|
76
|
+
configuration.environmentVariables.push({
|
|
77
|
+
defaultName: 'OUTPUT_BUCKET_NAME',
|
|
78
|
+
clientNameOverride: props.bucketEnvironmentVariableName,
|
|
79
|
+
value: configuration.destinationBucket.bucketInterface.bucketName
|
|
80
|
+
});
|
|
81
|
+
configuration.environmentVariables.push({
|
|
82
|
+
defaultName: 'SNS_TOPIC_ARN',
|
|
83
|
+
clientNameOverride: props.topicEnvironmentVariableName,
|
|
84
|
+
value: configuration.snsNotificationTopic.topicArn
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
return configuration;
|
|
88
|
+
}
|
|
89
|
+
function CheckPollyProps(props) {
|
|
90
|
+
let errorMessages = '';
|
|
91
|
+
let errorFound = false;
|
|
92
|
+
if (props.asyncJobs) {
|
|
93
|
+
// Check for conflicting bucket props
|
|
94
|
+
if (props.existingBucketObj && props.bucketProps) {
|
|
95
|
+
errorMessages += 'Error - Either provide bucketProps or existingBucketObj, but not both.\n';
|
|
96
|
+
errorFound = true;
|
|
97
|
+
}
|
|
98
|
+
// Check for conflicting topic props
|
|
99
|
+
if (props.existingTopicObj && props.topicProps) {
|
|
100
|
+
errorMessages += 'Error - Either provide topicProps or existingTopicObj, but not both.\n';
|
|
101
|
+
errorFound = true;
|
|
102
|
+
}
|
|
103
|
+
// Check SNS encryption props
|
|
104
|
+
if (props.topicProps?.masterKey && props.topicEncryptionKey) {
|
|
105
|
+
errorMessages += 'Error - Either provide topicProps.masterKey or topicEncryptionKey, but not both.\n';
|
|
106
|
+
errorFound = true;
|
|
107
|
+
}
|
|
108
|
+
if (props.topicProps?.masterKey && props.topicEncryptionKeyProps) {
|
|
109
|
+
errorMessages += 'Error - Either provide topicProps.masterKey or topicEncryptionKeyProps, but not both.\n';
|
|
110
|
+
errorFound = true;
|
|
111
|
+
}
|
|
112
|
+
if (props.topicEncryptionKey && props.topicEncryptionKeyProps) {
|
|
113
|
+
errorMessages += 'Error - Either provide topicEncryptionKey or topicEncryptionKeyProps, but not both.\n';
|
|
114
|
+
errorFound = true;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// If asyncJobs is false or undefined, no bucket or topic props should be provided
|
|
118
|
+
if (!props.asyncJobs) {
|
|
119
|
+
if (props.existingBucketObj || props.bucketProps ||
|
|
120
|
+
props.loggingBucketProps || props.logS3AccessLogs !== undefined ||
|
|
121
|
+
props.bucketEnvironmentVariableName) {
|
|
122
|
+
errorMessages += 'Error - Bucket properties can only be provided when asyncJobs is true.\n';
|
|
123
|
+
errorFound = true;
|
|
124
|
+
}
|
|
125
|
+
if (props.existingTopicObj || props.topicProps ||
|
|
126
|
+
props.existingTopicEncryptionKey || props.topicEncryptionKey ||
|
|
127
|
+
props.topicEncryptionKeyProps ||
|
|
128
|
+
props.enableTopicEncryptionWithCustomerManagedKey !== undefined ||
|
|
129
|
+
props.topicEnvironmentVariableName) {
|
|
130
|
+
errorMessages += 'Error - Topic properties can only be provided when asyncJobs is true.\n';
|
|
131
|
+
errorFound = true;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (errorFound) {
|
|
135
|
+
throw new Error(errorMessages);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9sbHktaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicG9sbHktaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUE2REgsc0RBcUVDO0FBRUQsMENBd0RDO0FBbExELHlEQUFtRDtBQUNuRCw2Q0FBMEM7QUFDMUMsbUNBQXdDO0FBdUN4QyxNQUFNLGVBQWUsR0FBRztJQUN0Qix3QkFBd0I7Q0FDekIsQ0FBQztBQUVGLE1BQU0sZ0JBQWdCLEdBQUc7SUFDdkIsZ0NBQWdDO0lBQ2hDLDhCQUE4QjtJQUM5QixnQ0FBZ0M7Q0FDakMsQ0FBQztBQUVGLFNBQWdCLHFCQUFxQixDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWlCO0lBRW5GLElBQUksYUFBYSxHQUF1QjtRQUN0Qyx3QkFBd0IsRUFBRSxDQUFDLEdBQUcsZUFBZSxDQUFDO1FBQzlDLG9CQUFvQixFQUFFLEVBQUU7S0FDekIsQ0FBQztJQUVGLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3BCLCtCQUErQjtRQUMvQixNQUFNLGtCQUFrQixHQUFHLElBQUEsdUJBQVUsRUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQy9DLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7WUFDeEMsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLDBCQUEwQjtZQUM1RCxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsc0NBQXNDLEVBQUUsS0FBSyxDQUFDLDJDQUEyQztZQUN6RixhQUFhLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtZQUN2QyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsdUJBQXVCO1NBQ2xELENBQUMsQ0FBQztRQUVILGFBQWEsR0FBRyxJQUFBLHFCQUFhLEVBQUMsYUFBYSxFQUFFO1lBQzNDLG9CQUFvQixFQUFFLGtCQUFrQixDQUFDLEtBQUs7U0FDL0MsQ0FBQyxDQUFDO1FBRUgsSUFBSSxrQkFBa0IsQ0FBQyxHQUFH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dUIsRUFBRSxDQUFDO1lBQ2pFLGFBQWEsSUFBSSx5RkFBeUYsQ0FBQztZQUMzRyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxLQUFLLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUM5RCxhQUFhLElBQUksdUZBQXVGLENBQUM7WUFDekcsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUVELGtGQUFrRjtJQUNsRixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3JCLElBQUksS0FBSyxDQUFDLGlCQUFpQixJQUFJLEtBQUssQ0FBQyxXQUFXO1lBQzlDLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxLQUFLLENBQUMsZUFBZSxLQUFLLFNBQVM7WUFDL0QsS0FBSyxDQUFDLDZCQUE2QixFQUFFLENBQUM7WUFDdEMsYUFBYSxJQUFJLDBFQUEwRSxDQUFDO1lBQzVGLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDcEIsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLGdCQUFnQixJQUFJLEtBQUssQ0FBQyxVQUFVO1lBQzVDLEtBQUssQ0FBQywwQkFBMEIsSUFBSSxLQUFLLENBQUMsa0JBQWtCO1lBQzVELEtBQUssQ0FBQyx1QkFBdUI7WUFDN0IsS0FBSyxDQUFDLDJDQUEyQyxLQUFLLFNBQVM7WUFDL0QsS0FBSyxDQUFDLDRCQUE0QixFQUFFLENBQUM7WUFDckMsYUFBYSxJQUFJLHlFQUF5RSxDQUFDO1lBQzNGLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNqQyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qXG4gKiAgVGhlIGZ1bmN0aW9ucyBmb3VuZCBoZXJlIGluIHRoZSBjb3JlIGxpYnJhcnkgYXJlIGZvciBpbnRlcm5hbCB1c2UgYW5kIGNhbiBiZSBjaGFuZ2VkXG4gKiAgb3IgcmVtb3ZlZCBvdXRzaWRlIG9mIGEgbWFqb3IgcmVsZWFzZS4gV2UgcmVjb21tZW5kIGFnYWluc3QgY2FsbGluZyB0aGVtIGRpcmVjdGx5IGZyb20gY2xpZW50IGNvZGUuXG4gKi9cblxuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMga21zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0IHsgYnVpbGRTM0J1Y2tldCB9IGZyb20gJy4vczMtYnVja2V0LWhlbHBlcic7XG5pbXBvcnQgeyBidWlsZFRvcGljIH0gZnJvbSAnLi9zbnMtaGVscGVyJztcbmltcG9ydCB7IG92ZXJyaWRlUHJvcHMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCAqIGFzIHNucyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc25zJztcblxuZXhwb3J0IGludGVyZmFjZSBQb2xseVByb3BzIHtcbiAgcmVhZG9ubHkgYXN5bmNKb2JzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZXhpc3RpbmdCdWNrZXRPYmo/OiBzMy5JQnVja2V0O1xuICByZWFkb25seSBidWNrZXRQcm9wcz86IHMzLkJ1Y2tldFByb3BzO1xuICByZWFkb25seSBsb2dnaW5nQnVja2V0UHJvcHM/OiBzMy5CdWNrZXRQcm9wcztcbiAgcmVhZG9ubHkgbG9nUzNBY2Nlc3NMb2dzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgYnVja2V0RW52aXJvbm1lbnRWYXJpYWJsZU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGV4aXN0aW5nVG9waWNPYmo/OiBzbnMuVG9waWM7XG4gIHJlYWRvbmx5IGV4aXN0aW5nVG9waWNFbmNyeXB0aW9uS2V5Pzoga21zLktleTtcbiAgcmVhZG9ubHkgdG9waWNQcm9wcz86IHNucy5Ub3BpY1Byb3BzO1xuICByZWFkb25seSBlbmFibGVUb3BpY0VuY3J5cHRpb25XaXRoQ3VzdG9tZXJNYW5hZ2VkS2V5PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdG9waWNFbmNyeXB0aW9uS2V5Pzoga21zLktleTtcbiAgcmVhZG9ubHkgdG9waWNFbmNyeXB0aW9uS2V5UHJvcHM/OiBrbXMuS2V5UHJvcHM7XG4gIHJlYWRvbmx5IHRvcGljRW52aXJvbm1lbnRWYXJpYWJsZU5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9sbHlCdWNrZXREZXRhaWxzIHtcbiAgcmVhZG9ubHkgYnVja2V0PzogczMuQnVja2V0LFxuICByZWFkb25seSBidWNrZXRJbnRlcmZhY2U6IHMzLklCdWNrZXQsXG4gIHJlYWRvbmx5IGxvZ2dpbmdCdWNrZXQ/OiBzMy5CdWNrZXRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnZpcm9ubWVudFZhcmlhYmxlRGVmaW5pdGlvbiB7XG4gIHJlYWRvbmx5IGRlZmF1bHROYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNsaWVudE5hbWVPdmVycmlkZT86IHN0cmluZztcbiAgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQb2xseUNvbmZpZ3VyYXRpb24ge1xuICByZWFkb25seSBkZXN0aW5hdGlvbkJ1Y2tldD86IFBvbGx5QnVja2V0RGV0YWlscyxcbiAgcmVhZG9ubHkgc25zTm90aWZpY2F0aW9uVG9waWM/OiBzbnMuVG9waWMsXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvblRvcGljRW5jcnlwdGlvbktleT86IGttcy5LZXksXG4gIHJlYWRvbmx5IGxhbWJkYUlhbUFjdGlvbnNSZXF1aXJlZDogc3RyaW5nW10sXG4gIHJlYWRvbmx5IGVudmlyb25tZW50VmFyaWFibGVzOiBFbnZpcm9ubWVudFZhcmlhYmxlRGVmaW5pdGlvbltdLFxufVxuXG5jb25zdCBzeW5jUGVybWlzc2lvbnMgPSBbXG4gICdwb2xseTpTeW50aGVzaXplU3BlZWNoJ1xuXTtcblxuY29uc3QgYXN5bmNQZXJtaXNzaW9ucyA9IFtcbiAgJ3BvbGx5OlN0YXJ0U3BlZWNoU3ludGhlc2lzVGFzaycsXG4gICdwb2xseTpHZXRTcGVlY2hTeW50aGVzaXNUYXNrJyxcbiAgJ3BvbGx5Okxpc3RTcGVlY2hTeW50aGVzaXNUYXNrcydcbl07XG5cbmV4cG9ydCBmdW5jdGlvbiBDb25maWd1cmVQb2xseVN1cHBvcnQoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFBvbGx5UHJvcHMpOiBQb2xseUNvbmZpZ3VyYXRpb24ge1xuXG4gIGxldCBjb25maWd1cmF0aW9uOiBQb2xseUNvbmZpZ3VyYXRpb24gPSB7XG4gICAgbGFtYmRhSWFtQWN0aW9uc1JlcXVpcmVkOiBbLi4uc3luY1Blcm1pc3Npb25zXSxcbiAgICBlbnZpcm9ubWVudFZhcmlhYmxlczogW10sXG4gIH07XG5cbiAgaWYgKHByb3BzLmFzeW5jSm9icykge1xuICAgIC8vIFNldHVwIFNOUyBub3RpZmljYXRpb24gdG9waWNcbiAgICBjb25zdCBidWlsZFRvcGljUmVzcG9uc2UgPSBidWlsZFRvcGljKHNjb3BlLCBpZCwge1xuICAgICAgZXhpc3RpbmdUb3BpY09iajogcHJvcHMuZXhpc3RpbmdUb3BpY09iaixcbiAgICAgIGV4aXN0aW5nVG9waWNFbmNyeXB0aW9uS2V5OiBwcm9wcy5leGlzdGluZ1RvcGljRW5jcnlwdGlvbktleSxcbiAgICAgIHRvcGljUHJvcHM6IHByb3BzLnRvcGljUHJvcHMsXG4gICAgICBlbmFibGVFbmNyeXB0aW9uV2l0aEN1c3RvbWVyTWFuYWdlZEtleTogcHJvcHMuZW5hYmxlVG9waWNFbmNyeXB0aW9uV2l0aEN1c3RvbWVyTWFuYWdlZEtleSxcbiAgICAgIGVuY3J5cHRpb25LZXk6IHByb3BzLnRvcGljRW5jcnlwdGlvbktleSxcbiAgICAgIGVuY3J5cHRpb25LZXlQcm9wczogcHJvcHMudG9waWNFbmNyeXB0aW9uS2V5UHJvcHNcbiAgICB9KTtcblxuICAgIGNvbmZpZ3VyYXRpb24gPSBvdmVycmlkZVByb3BzKGNvbmZpZ3VyYXRpb24sIHtcbiAgICAgIHNuc05vdGlmaWNhdGlvblRvcGljOiBidWlsZFRvcGljUmVzcG9uc2UudG9waWMsXG4gICAgfSk7XG5cbiAgICBpZiAoYnVpbGRUb3BpY1Jlc3BvbnNlLmtleSkge1xuICAgICAgY29uZmlndXJhdGlvbiA9IG92ZXJyaWRlUHJvcHMoY29uZmlndXJhdGlvbiwgeyBub3RpZmljYXRpb25Ub3BpY0VuY3J5cHRpb25LZXk6IGJ1aWxkVG9waWNSZXNwb25zZS5rZXkgfSk7XG4gICAgfVxuXG4gICAgLy8gU2V0dXAgUzMgQnVja2V0IGZvciBhdWRpbyBvdXRwdXRcbiAgICBpZiAocHJvcHMuZXhpc3RpbmdCdWNrZXRPYmopIHtcbiAgICAgIGNvbmZpZ3VyYXRpb24gPSBvdmVycmlkZVByb3BzKGNvbmZpZ3VyYXRpb24sIHtcbiAgICAgICAgZGVzdGluYXRpb25CdWNrZXQ6IHtcbiAgICAgICAgICBidWNrZXRJbnRlcmZhY2U6IHByb3BzLmV4aXN0aW5nQnVja2V0T2JqXG4gICAgICAgIH1cbiAgICAgIH0sIGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYnVpbGRCdWNrZXRSZXNwb25zZSA9IGJ1aWxkUzNCdWNrZXQoc2NvcGUsIHtcbiAgICAgICAgYnVja2V0UHJvcHM6IHByb3BzLmJ1Y2tldFByb3BzLFxuICAgICAgICBsb2dnaW5nQnVja2V0UHJvcHM6IHByb3BzLmxvZ2dpbmdCdWNrZXRQcm9wcyxcbiAgICAgICAgbG9nUzNBY2Nlc3NMb2dzOiBwcm9wcy5sb2dTM0FjY2Vzc0xvZ3NcbiAgICAgIH0sIGAke2lkfS1vdXRwdXQtYnVja2V0YCk7XG5cbiAgICAgIGNvbmZpZ3VyYXRpb24gPSBvdmVycmlkZVByb3BzKGNvbmZpZ3VyYXRpb24sIHtcbiAgICAgICAgZGVzdGluYXRpb25CdWNrZXQ6IHtcbiAgICAgICAgICBidWNrZXQ6IGJ1aWxkQnVja2V0UmVzcG9uc2UuYnVja2V0LFxuICAgICAgICAgIGxvZ2dpbmdCdWNrZXQ6IGJ1aWxkQnVja2V0UmVzcG9uc2UubG9nZ2luZ0J1Y2tldCxcbiAgICAgICAgICBidWNrZXRJbnRlcmZhY2U6IGJ1aWxkQnVja2V0UmVzcG9uc2UuYnVja2V0LFxuICAgICAgICB9XG4gICAgICB9LCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIGFzeW5jIHBlcm1pc3Npb25zXG4gICAgYXN5bmNQZXJtaXNzaW9ucy5mb3JFYWNoKChwZXJtaXNzaW9uKSA9PiB7XG4gICAgICBjb25maWd1cmF0aW9uLmxhbWJkYUlhbUFjdGlvbnNSZXF1aXJlZC5wdXNoKHBlcm1pc3Npb24pO1xuICAgIH0pO1xuXG4gICAgLy8gQnVpbGQgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAgY29uZmlndXJhdGlvbi5lbnZpcm9ubWVudFZhcmlhYmxlcy5wdXNoKHtcbiAgICAgIGRlZmF1bHROYW1lOiAnT1VUUFVUX0JVQ0tFVF9OQU1FJyxcbiAgICAgIGNsaWVudE5hbWVPdmVycmlkZTogcHJvcHMuYnVja2V0RW52aXJvbm1lbnRWYXJpYWJsZU5hbWUsXG4gICAgICB2YWx1ZTogY29uZmlndXJhdGlvbi5kZXN0aW5hdGlvbkJ1Y2tldCEuYnVja2V0SW50ZXJmYWNlLmJ1Y2tldE5hbWVcbiAgICB9KTtcblxuICAgIGNvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnRWYXJpYWJsZXMucHVzaCh7XG4gICAgICBkZWZhdWx0TmFtZTogJ1NOU19UT1BJQ19BUk4nLFxuICAgICAgY2xpZW50TmFtZU92ZXJyaWRlOiBwcm9wcy50b3BpY0Vudmlyb25tZW50VmFyaWFibGVOYW1lLFxuICAgICAgdmFsdWU6IGNvbmZpZ3VyYXRpb24uc25zTm90aWZpY2F0aW9uVG9waWMhLnRvcGljQXJuXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gY29uZmlndXJhdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENoZWNrUG9sbHlQcm9wcyhwcm9wczogUG9sbHlQcm9wcyk6IHZvaWQge1xuICBsZXQgZXJyb3JNZXNzYWdlcyA9ICcnO1xuICBsZXQgZXJyb3JGb3VuZCA9IGZhbHNlO1xuXG4gIGlmIChwcm9wcy5hc3luY0pvYnMpIHtcbiAgICAvLyBDaGVjayBmb3IgY29uZmxpY3RpbmcgYnVja2V0IHByb3BzXG4gICAgaWYgKHByb3BzLmV4aXN0aW5nQnVja2V0T2JqICYmIHByb3BzLmJ1Y2tldFByb3BzKSB7XG4gICAgICBlcnJvck1lc3NhZ2VzICs9ICdFcnJvciAtIEVpdGhlciBwcm92aWRlIGJ1Y2tldFByb3BzIG9yIGV4aXN0aW5nQnVja2V0T2JqLCBidXQgbm90IGJvdGguXFxuJztcbiAgICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciBjb25mbGljdGluZyB0b3BpYyBwcm9wc1xuICAgIGlmIChwcm9wcy5leGlzdGluZ1RvcGljT2JqICYmIHByb3BzLnRvcGljUHJvcHMpIHtcbiAgICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gRWl0aGVyIHByb3ZpZGUgdG9waWNQcm9wcyBvciBleGlzdGluZ1RvcGljT2JqLCBidXQgbm90IGJvdGguXFxuJztcbiAgICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIFNOUyBlbmNyeXB0aW9uIHByb3BzXG4gICAgaWYgKHByb3BzLnRvcGljUHJvcHM/Lm1hc3RlcktleSAmJiBwcm9wcy50b3BpY0VuY3J5cHRpb25LZXkpIHtcbiAgICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gRWl0aGVyIHByb3ZpZGUgdG9waWNQcm9wcy5tYXN0ZXJLZXkgb3IgdG9waWNFbmNyeXB0aW9uS2V5LCBidXQgbm90IGJvdGguXFxuJztcbiAgICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy50b3BpY1Byb3BzPy5tYXN0ZXJLZXkgJiYgcHJvcHMudG9waWNFbmNyeXB0aW9uS2V5UHJvcHMpIHtcbiAgICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gRWl0aGVyIHByb3ZpZGUgdG9waWNQcm9wcy5tYXN0ZXJLZXkgb3IgdG9waWNFbmNyeXB0aW9uS2V5UHJvcHMsIGJ1dCBub3QgYm90aC5cXG4nO1xuICAgICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnRvcGljRW5jcnlwdGlvbktleSAmJiBwcm9wcy50b3BpY0VuY3J5cHRpb25LZXlQcm9wcykge1xuICAgICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBFaXRoZXIgcHJvdmlkZSB0b3BpY0VuY3J5cHRpb25LZXkgb3IgdG9waWNFbmNyeXB0aW9uS2V5UHJvcHMsIGJ1dCBub3QgYm90aC5cXG4nO1xuICAgICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgYXN5bmNKb2JzIGlzIGZhbHNlIG9yIHVuZGVmaW5lZCwgbm8gYnVja2V0IG9yIHRvcGljIHByb3BzIHNob3VsZCBiZSBwcm92aWRlZFxuICBpZiAoIXByb3BzLmFzeW5jSm9icykge1xuICAgIGlmIChwcm9wcy5leGlzdGluZ0J1Y2tldE9iaiB8fCBwcm9wcy5idWNrZXRQcm9wcyB8fFxuICAgICAgcHJvcHMubG9nZ2luZ0J1Y2tldFByb3BzIHx8IHByb3BzLmxvZ1MzQWNjZXNzTG9ncyAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICBwcm9wcy5idWNrZXRFbnZpcm9ubWVudFZhcmlhYmxlTmFtZSkge1xuICAgICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBCdWNrZXQgcHJvcGVydGllcyBjYW4gb25seSBiZSBwcm92aWRlZCB3aGVuIGFzeW5jSm9icyBpcyB0cnVlLlxcbic7XG4gICAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuZXhpc3RpbmdUb3BpY09iaiB8fCBwcm9wcy50b3BpY1Byb3BzIHx8XG4gICAgICBwcm9wcy5leGlzdGluZ1RvcGljRW5jcnlwdGlvbktleSB8fCBwcm9wcy50b3BpY0VuY3J5cHRpb25LZXkgfHxcbiAgICAgIHByb3BzLnRvcGljRW5jcnlwdGlvbktleVByb3BzIHx8XG4gICAgICBwcm9wcy5lbmFibGVUb3BpY0VuY3J5cHRpb25XaXRoQ3VzdG9tZXJNYW5hZ2VkS2V5ICE9PSB1bmRlZmluZWQgfHxcbiAgICAgIHByb3BzLnRvcGljRW52aXJvbm1lbnRWYXJpYWJsZU5hbWUpIHtcbiAgICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gVG9waWMgcHJvcGVydGllcyBjYW4gb25seSBiZSBwcm92aWRlZCB3aGVuIGFzeW5jSm9icyBpcyB0cnVlLlxcbic7XG4gICAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoZXJyb3JGb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2VzKTtcbiAgfVxufVxuIl19
|
|
@@ -41,7 +41,17 @@ function buildStateMachine(scope, id, props) {
|
|
|
41
41
|
let consolidatedStateMachineProps;
|
|
42
42
|
// If they sent a logGroup in stateMachineProps
|
|
43
43
|
if (props.stateMachineProps.logs?.destination) {
|
|
44
|
-
|
|
44
|
+
// In CDK v2.235.0+, logs.destination is ILogGroupRef, but we need ILogGroup
|
|
45
|
+
// We need to verify it's actually an ILogGroup (has the full interface)
|
|
46
|
+
const destination = props.stateMachineProps.logs.destination;
|
|
47
|
+
// Type guard: Check if destination has ILogGroup methods
|
|
48
|
+
if ('addMetricFilter' in destination && 'grantWrite' in destination) {
|
|
49
|
+
logGroup = destination;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
throw new Error('The provided log group destination must be a full ILogGroup (not just ILogGroupRef). ' +
|
|
53
|
+
'Please provide a LogGroup created with new LogGroup() or LogGroup.fromLogGroupArn().');
|
|
54
|
+
}
|
|
45
55
|
consolidatedStateMachineProps = props.stateMachineProps;
|
|
46
56
|
}
|
|
47
57
|
else {
|
|
@@ -151,4 +161,4 @@ function CheckStateMachineProps(propsObject) {
|
|
|
151
161
|
throw new Error(errorMessages);
|
|
152
162
|
}
|
|
153
163
|
}
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1mdW5jdGlvbi1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdGVwLWZ1bmN0aW9uLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7OztBQThDSCw4Q0E4REM7QUFLRCw4REEwQ0M7QUFVRCx3REFzQkM7QUFsTEQsbUNBQW1DO0FBQ25DLHVEQUF1RDtBQUN2RCxxREFBcUQ7QUFDckQsbUNBQTJGO0FBRTNGLHlEQUF5RDtBQUN6RCwrRUFBOEQ7QUFJOUQ7Ozs7O0dBS0c7QUFDVSxRQUFBLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFjdkM7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQUMsS0FBZ0IsRUFBRSxFQUFzQixFQUFFLEtBQTRCO0lBRXRHLElBQUksUUFBd0IsQ0FBQztJQUM3QixJQUFJLDZCQUE2QixDQUFDO0lBRWxDLCtDQUErQztJQUMvQyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDOUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDO1FBQ3JELDZCQUE2QixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztJQUMxRCxDQUFDO1NBQU0sQ0FBQztRQUNOLHNCQUFzQjtRQUN0Qiw4RUFBOEU7UUFDOUUsdUZBQXVGO1FBQ3ZGLDZFQUE2RTtRQUM3RSxJQUFJLHlCQUF5QixHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFFcEQsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7WUFDL0IseUJBQXlCLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLENBQUM7UUFFRCxJQUFJLENBQUMseUJBQXlCLEVBQUUsWUFBWSxFQUFFLENBQUM7WUFDN0MsTUFBTSxjQUFjLEdBQUcsb0NBQW9DLENBQUM7WUFDNUQsTUFBTSxTQUFTLEdBQWE7Z0JBQzFCLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFB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QWEsSUFBSSxrRkFBa0YsQ0FBQztRQUNwRyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDO1FBQ3ZDLENBQUMsV0FBVyxDQUFDLGlCQUFpQjtZQUM1QixDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsS0FBSyxTQUFTLENBQUM7WUFDbEQsV0FBVyxDQUFDLHNCQUFzQjtZQUNsQyxXQUFXLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUUvQixhQUFhLElBQUkseUZBQXlGLENBQUM7UUFDM0csVUFBVSxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKlxuICogIFRoZSBmdW5jdGlvbnMgZm91bmQgaGVyZSBpbiB0aGUgY29yZSBsaWJyYXJ5IGFyZSBmb3IgaW50ZXJuYWwgdXNlIGFuZCBjYW4gYmUgY2hhbmdlZFxuICogIG9yIHJlbW92ZWQgb3V0c2lkZSBvZiBhIG1ham9yIHJlbGVhc2UuIFdlIHJlY29tbWVuZCBhZ2FpbnN0IGNhbGxpbmcgdGhlbSBkaXJlY3RseSBmcm9tIGNsaWVudCBjb2RlLlxuICovXG5cbi8vIEltcG9ydHNcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIHNtRGVmYXVsdHMgZnJvbSAnLi9zdGVwLWZ1bmN0aW9uLWRlZmF1bHRzJztcbmltcG9ydCAqIGFzIHNmbiBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9ucyc7XG5pbXBvcnQgeyBvdmVycmlkZVByb3BzLCBhZGRDZm5TdXBwcmVzc1J1bGVzLCBnZW5lcmF0ZVBoeXNpY2FsTG9nR3JvdXBOYW1lIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBjbG91ZHdhdGNoIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCB7IGJ1aWxkTG9nR3JvdXAgfSBmcm9tICcuL2Nsb3Vkd2F0Y2gtbG9nLWdyb3VwLWhlbHBlcic7XG4vLyBOb3RlOiBUbyBlbnN1cmUgQ0RLdjIgY29tcGF0aWJpbGl0eSwga2VlcCB0aGUgaW1wb3J0IHN0YXRlbWVudCBmb3IgQ29uc3RydWN0IHNlcGFyYXRlXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLypcbiAqIHRoZSBpZCBwYXJhbWV0ZXIgd2FzIGFkZGVkIHRvIGJ1aWxkU3RhdGVNYWNoaW5lKCkgbG9uZyBhZnRlciB0aGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24sXG4gKiB0aGlzIHZhbHVlIGNhbiBiZSB1c2VkIGZvciB0aGUgbmV3IHBhcmFtZXRlciBhbmQgZW5zdXJlIGJlaGF2aW9yIGlzIHRoZSBzYW1lLlxuICogKGlmIHdlIGp1c3QgcmVxdWlyZSBhbiBpZCwgdGhlIHN0YXRlIG1hY2hpbmUgbmFtZSB3aWxsIGJlIGNoYW5nZWQgYW5kIGl0IHdpbGwgYmUgYVxuICogZGVzdHJ1Y3RpdmUgY2hhbmdlKVxuICovXG5leHBvcnQgY29uc3QgaWRQbGFjZWhvbGRlciA9IHVuZGVmaW5lZDtcblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFN0YXRlTWFjaW5lUHJvcHMge1xuICByZWFkb25seSBzdGF0ZU1hY2hpbmVQcm9wczogc2ZuLlN0YXRlTWFjaGluZVByb3BzLFxuICByZWFkb25seSBsb2dHcm91cFByb3BzPzogbG9ncy5Mb2dHcm91cFByb3BzLFxuICByZWFkb25seSBjcmVhdGVDbG91ZFdhdGNoQWxhcm1zPzogYm9vbGVhbixcbiAgcmVhZG9ubHkgY2xvdWRXYXRjaEFsYXJtc1ByZWZpeD86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkU3RhdGVNYWNoaW5lUmVzcG9uc2Uge1xuICByZWFkb25seSBzdGF0ZU1hY2hpbmU6IHNmbi5TdGF0ZU1hY2hpbmUsXG4gIHJlYWRvbmx5IGxvZ0dyb3VwOiBsb2dzLklMb2dHcm91cCxcbiAgcmVhZG9ubHkgY2xvdWRXYXRjaEFsYXJtcz86IGNsb3Vkd2F0Y2guQWxhcm1bXVxufVxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICpcbiAqIEJ1aWxkcyBhbmQgcmV0dXJucyBhIFN0YXRlTWFjaGluZS5cbiAqIEBwYXJhbSBzY29wZSAtIHRoZSBjb25zdHJ1Y3QgdG8gd2hpY2ggdGhlIFN0YXRlTWFjaGluZSBzaG91bGQgYmUgYXR0YWNoZWQgdG8uXG4gKiBAcGFyYW0gc3RhdGVNYWNoaW5lUHJvcHMgLSB1c2VyLXNwZWNpZmllZCBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFN0YXRlTWFjaGluZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nIHwgdW5kZWZpbmVkLCBwcm9wczogQnVpbGRTdGF0ZU1hY2luZVByb3BzKTogQnVpbGRTdGF0ZU1hY2hpbmVSZXNwb25zZSB7XG5cbiAgbGV0IGxvZ0dyb3VwOiBsb2dzLklMb2dHcm91cDtcbiAgbGV0IGNvbnNvbGlkYXRlZFN0YXRlTWFjaGluZVByb3BzO1xuXG4gIC8vIElmIHRoZXkgc2VudCBhIGxvZ0dyb3VwIGluIHN0YXRlTWFjaGluZVByb3BzXG4gIGlmIChwcm9wcy5zdGF0ZU1hY2hpbmVQcm9wcy5sb2dzPy5kZXN0aW5hdGlvbikge1xuICAgIGxvZ0dyb3VwID0gcHJvcHMuc3RhdGVNYWNoaW5lUHJvcHMubG9ncz8uZGVzdGluYXRpb247XG4gICAgY29uc29saWRhdGVkU3RhdGVNYWNoaW5lUHJvcHMgPSBwcm9wcy5zdGF0ZU1hY2hpbmVQcm9wcztcbiAgfSBlbHNlIHtcbiAgICAvLyBUaHJlZSBwb3NzaWJpbGl0aWVzXG4gICAgLy8gMSkgbG9nR3JvdXBQcm9wcyBub3QgcHJvdmlkZWQgLSBjcmVhdGUgbG9nR3JvdXBQcm9wcyB3aXRoIGp1c3QgbG9nR3JvdXBOYW1lXG4gICAgLy8gMikgbG9nR3JvdXBQcm9wcyBwcm92aWRlZCB3aXRoIG5vIGxvZ0dyb3VwTmFtZSAtIG92ZXJyaWRlIGxvZ0dyb3VwUHJvcHMubG9nR3JvdXBOYW1lXG4gICAgLy8gMykgbG9nR3JvdXBQcm9wcyBwcm92aWRlZCB3aXRoIGxvZ0dyb3VwTmFtZSAtIHBhc3MgdW5hbHRlcmVkIGxvZ0dyb3VwUHJvcHNcbiAgICBsZXQgY29uc29saWRhdGVkTG9nR3JvdXBQcm9wcyA9IHByb3BzLmxvZ0dyb3VwUHJvcHM7XG5cbiAgICBpZiAoIWNvbnNvbGlkYXRlZExvZ0dyb3VwUHJvcHMpIHtcbiAgICAgIGNvbnNvbGlkYXRlZExvZ0dyb3VwUHJvcHMgPSB7fTtcbiAgICB9XG5cbiAgICBpZiAoIWNvbnNvbGlkYXRlZExvZ0dyb3VwUHJvcHM/LmxvZ0dyb3VwTmFtZSkge1xuICAgICAgY29uc3QgbG9nR3JvdXBQcmVmaXggPSAnL2F3cy92ZW5kZWRsb2dzL3N0YXRlcy9jb25zdHJ1Y3RzLyc7XG4gICAgICBjb25zdCBuYW1lUGFydHM6IHN0cmluZ1tdID0gW1xuICAgICAgICBjZGsuU3RhY2sub2Yoc2NvcGUpLnN0YWNrTmFtZSwgLy8gTmFtZSBvZiB0aGUgc3RhY2tcbiAgICAgICAgaWQgPz8gc2NvcGUubm9kZS5pZCwgICAgICAgICAgIC8vIFVzZSB0aGUgSUQgZnJvbSBjbGllbnQgaWYgcHJvdmlkZWQsIG90aGVyd2lzZSB1c2UgdGhlIGNvbnN0cnVjdCBJRFxuICAgICAgICAnU3RhdGVNYWNoaW5lTG9nJyAgICAgICAgICAgICAgLy8gTGl0ZXJhbCBzdHJpbmcgZm9yIGxvZyBncm91cCBuYW1lIHBvcnRpb25cbiAgICAgIF07XG5cbiAgICAgIGNvbnN0IGxvZ0dyb3VwTmFtZSA9IGdlbmVyYXRlUGh5c2ljYWxMb2dHcm91cE5hbWUobG9nR3JvdXBQcmVmaXgsIG5hbWVQYXJ0cyk7XG4gICAgICBjb25zb2xpZGF0ZWRMb2dHcm91cFByb3BzID0gb3ZlcnJpZGVQcm9wcyhjb25zb2xpZGF0ZWRMb2dHcm91cFByb3BzLCB7IGxvZ0dyb3VwTmFtZSB9KTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgbmV3IENsb3Vkd2F0Y2ggbG9nIGdyb3VwIGZvciBTdGVwIGZ1bmN0aW9uIFN0YXRlIE1hY2hpbmVcbiAgICBsb2dHcm91cCA9IGJ1aWxkTG9nR3JvdXAoc2NvcGUsIGBTdGF0ZU1hY2hpbmVMb2dHcm91cCR7KGlkID8/ICcnKX1gLCBjb25zb2xpZGF0ZWRMb2dHcm91cFByb3BzKTtcblxuICAgIC8vIE92ZXJyaWRlIHRoZSBkZWZhdWx0cyB3aXRoIHRoZSB1c2VyIHByb3ZpZGVkIHByb3BzXG4gICAgY29uc29saWRhdGVkU3RhdGVNYWNoaW5lUHJvcHMgPSBvdmVycmlkZVByb3BzKHNtRGVmYXVsdHMuRGVmYXVsdFN0YXRlTWFjaGluZVByb3BzKGxvZ0dyb3VwKSwgcHJvcHMuc3RhdGVNYWNoaW5lUHJvcHMpO1xuICB9XG5cbiAgLy8gT3ZlcnJpZGUgdGhlIENsb3Vkd2F0Y2ggcGVybWlzc2lvbnMgdG8gbWFrZSBpdCBtb3JlIGZpbmUgZ3JhaW5lZFxuICBjb25zdCBuZXdTdGF0ZU1hY2hpbmUgPSBuZXcgc2ZuLlN0YXRlTWFjaGluZShzY29wZSwgYFN0YXRlTWFjaGluZSR7KGlkID8/ICcnKX1gLCBjb25zb2xpZGF0ZWRTdGF0ZU1hY2hpbmVQcm9wcyk7XG5cbiAgLy8gSWYgdGhlIGNsaWVudCBkaWQgbm90IHBhc3MgYSByb2xlIHdlIGdvdCB0aGUgZGVmYXVsdCByb2xlIGFuZCB3aWxsIHRyaW0gdGhlIHByaXZpbGVnZXNcbiAgaWYgKCFwcm9wcy5zdGF0ZU1hY2hpbmVQcm9wcy5yb2xlKSB7XG4gICAgY29uc3Qgcm9sZSA9IG5ld1N0YXRlTWFjaGluZS5ub2RlLmZpbmRDaGlsZCgnUm9sZScpIGFzIGlhbS5Sb2xlO1xuICAgIGNvbnN0IGNmbkRlZmF1bHRQb2xpY3kgPSByb2xlLm5vZGUuZmluZENoaWxkKCdEZWZhdWx0UG9saWN5Jykubm9kZS5kZWZhdWx0Q2hpbGQgYXMgYW55O1xuICAgIC8vIE92ZXJyaWRlIENmbiBOYWcgd2FybmluZyBXMTI6IElBTSBwb2xpY3kgc2hvdWxkIG5vdCBhbGxvdyAqIHJlc291cmNlXG4gICAgYWRkQ2ZuU3VwcHJlc3NSdWxlcyhjZm5EZWZhdWx0UG9saWN5LCBbXG4gICAgICB7XG4gICAgICAgIGlkOiAnVzEyJyxcbiAgICAgICAgcmVhc29uOiBgVGhlc2UgYXJlIENESyBkZWZhdWx0cy4gVGhlICdMb2dEZWxpdmVyeScgYWN0aW9ucyBkbyBub3Qgc3VwcG9ydCByZXNvdXJjZS1sZXZlbCBhdXRob3JpemF0aW9ucy4gQW55IGxvZ2dpbmcgaXMgZG9uZSBieSBTdGF0ZSBNYWNoaW5lIGNvZGVgXG4gICAgICB9XG4gICAgXSk7XG4gIH1cbiAgY29uc3QgY3JlYXRlQ2xvdWRXYXRjaEFsYXJtczogYm9vbGVhbiA9IChwcm9wcy5jcmVhdGVDbG91ZFdhdGNoQWxhcm1zID09PSB1bmRlZmluZWQgfHwgcHJvcHMuY3JlYXRlQ2xvdWRXYXRjaEFsYXJtcyk7XG4gIGNvbnN0IGNsb3VkV2F0Y2hBbGFybXMgPSBjcmVhdGVDbG91ZFdhdGNoQWxhcm1zID8gYnVpbGRTdGVwRnVuY3Rpb25DV0FsYXJtcyhzY29wZSwgcHJvcHMuY2xvdWRXYXRjaEFsYXJtc1ByZWZpeCwgbmV3U3RhdGVNYWNoaW5lKSA6IHVuZGVmaW5lZDtcblxuICByZXR1cm4ge1xuICAgIHN0YXRlTWFjaGluZTogbmV3U3RhdGVNYWNoaW5lLFxuICAgIGxvZ0dyb3VwLFxuICAgIGNsb3VkV2F0Y2hBbGFybXNcbiAgfTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTdGVwRnVuY3Rpb25DV0FsYXJtcyhzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nIHwgdW5kZWZpbmVkLCBzbTogc2ZuLlN0YXRlTWFjaGluZSk6IGNsb3Vkd2F0Y2guQWxhcm1bXSB7XG4gIC8vIFNldHVwIENXIEFsYXJtcyBmb3IgU3RhdGUgTWFjaGluZVxuICBjb25zdCBhbGFybXM6IGNsb3Vkd2F0Y2guQWxhcm1bXSA9IG5ldyBBcnJheSgpO1xuICBjb25zdCBwcmVmaXggPSBpZCA/PyBcIlwiO1xuXG4gIC8vIFN1bSBvZiBudW1iZXIgb2YgZXhlY3V0aW9ucyB0aGF0IGZhaWxlZCBpcyA+PSAxIGZvciA1IG1pbnV0ZXMsIDEgY29uc2VjdXRpdmUgdGltZVxuICBhbGFybXMucHVzaChuZXcgY2xvdWR3YXRjaC5BbGFybShzY29wZSwgYCR7cHJlZml4fUV4ZWN1dGlvbkZhaWxlZEFsYXJtYCwge1xuICAgIG1ldHJpYzogc20ubWV0cmljRmFpbGVkKHtcbiAgICAgIHN0YXRpc3RpYzogJ1N1bScsXG4gICAgICBwZXJpb2Q6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDMwMCksXG4gICAgfSksXG4gICAgdGhyZXNob2xkOiAxLFxuICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgIGNvbXBhcmlzb25PcGVyYXRvcjogY2xvdWR3YXRjaC5Db21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICBhbGFybURlc2NyaXB0aW9uOiAnQWxhcm0gZm9yIHRoZSBudW1iZXIgb2YgZXhlY3V0aW9ucyB0aGF0IGZhaWxlZCBleGNlZWRlZCB0aGUgdGhyZXNob2xkIG9mIDEuICdcbiAgfSkpO1xuXG4gIC8vIFN1bSBvZiBudW1iZXIgb2YgZXhlY3V0aW9ucyB0aGF0IGZhaWxlZCBtYXhpbXVtIGlzID49IDEgZm9yIDUgbWludXRlLCAxIGNvbnNlY3V0aXZlIHRpbWVcbiAgYWxhcm1zLnB1c2gobmV3IGNsb3Vkd2F0Y2guQWxhcm0oc2NvcGUsIGAke3ByZWZpeH1FeGVjdXRpb25UaHJvdHRsZWRBbGFybWAsIHtcbiAgICBtZXRyaWM6IHNtLm1ldHJpY1Rocm90dGxlZCh7XG4gICAgICBzdGF0aXN0aWM6ICdTdW0nLFxuICAgICAgcGVyaW9kOiBjZGsuRHVyYXRpb24uc2Vjb25kcygzMDApLFxuICAgIH0pLFxuICAgIHRocmVzaG9sZDogMSxcbiAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICBjb21wYXJpc29uT3BlcmF0b3I6IGNsb3Vkd2F0Y2guQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgYWxhcm1EZXNjcmlwdGlvbjogJ0FsYXJtIGZvciB0aGUgbnVtYmVyIG9mIGV4ZWN1dGlvbnMgdGhhdCB0aHJvdHRsZWQgZXhjZWVkZWQgdGhlIHRocmVzaG9sZCBvZiAxLiAnXG4gIH0pKTtcblxuICAvLyBOdW1iZXIgb2YgZXhlY3V0aW9ucyB0aGF0IGFib3J0ZWQgbWF4aW11bSBpcyA+PSAxIGZvciA1IG1pbnV0ZSwgMSBjb25zZWN1dGl2ZSB0aW1lXG4gIGFsYXJtcy5wdXNoKG5ldyBjbG91ZHdhdGNoLkFsYXJtKHNjb3BlLCBgJHtwcmVmaXh9RXhlY3V0aW9uQWJvcnRlZEFsYXJtYCwge1xuICAgIG1ldHJpYzogc20ubWV0cmljQWJvcnRlZCh7XG4gICAgICBzdGF0aXN0aWM6ICdNYXhpbXVtJyxcbiAgICAgIHBlcmlvZDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMzAwKSxcbiAgICB9KSxcbiAgICB0aHJlc2hvbGQ6IDEsXG4gICAgZXZhbHVhdGlvblBlcmlvZHM6IDEsXG4gICAgY29tcGFyaXNvbk9wZXJhdG9yOiBjbG91ZHdhdGNoLkNvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgIGFsYXJtRGVzY3JpcHRpb246ICdBbGFybSBmb3IgdGhlIG51bWJlciBvZiBleGVjdXRpb25zIHRoYXQgYWJvcnRlZCBleGNlZWRlZCB0aGUgdGhyZXNob2xkIG9mIDEuICdcbiAgfSkpO1xuXG4gIHJldHVybiBhbGFybXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGVNYWNoaW5lUHJvcHMge1xuICByZWFkb25seSBzdGF0ZU1hY2hpbmVQcm9wcz86IHNmbi5TdGF0ZU1hY2hpbmVQcm9wcztcbiAgcmVhZG9ubHkgZXhpc3RpbmdTdGF0ZU1hY2hpbmVPYmo/OiBzZm4uU3RhdGVNYWNoaW5lO1xuICByZWFkb25seSBjcmVhdGVDbG91ZFdhdGNoQWxhcm1zPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY2xvdWRXYXRjaEFsYXJtc1ByZWZpeD86IHN0cmluZ1xuICByZWFkb25seSBsb2dHcm91cFByb3BzPzogbG9ncy5Mb2dHcm91cFByb3BzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ2hlY2tTdGF0ZU1hY2hpbmVQcm9wcyhwcm9wc09iamVjdDogU3RhdGVNYWNoaW5lUHJvcHMgfCBhbnkpIHtcbiAgbGV0IGVycm9yTWVzc2FnZXMgPSAnJztcbiAgbGV0IGVycm9yRm91bmQgPSBmYWxzZTtcblxuICBpZiAoKHByb3BzT2JqZWN0LmNyZWF0ZUNsb3VkV2F0Y2hBbGFybXMgPT09IGZhbHNlKSAmJiBwcm9wc09iamVjdC5jbG91ZFdhdGNoQWxhcm1zUHJlZml4KSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBjbG91ZFdhdGNoQWxhcm1zUHJlZml4IGlzIGludmFsaWQgd2hlbiBjcmVhdGVDbG91ZFdhdGNoQWxhcm1zIGlzIGZhbHNlXFxuJztcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGlmICgocHJvcHNPYmplY3QuZXhpc3RpbmdTdGF0ZU1hY2hpbmVPYmopICYmXG4gICAgKHByb3BzT2JqZWN0LnN0YXRlTWFjaGluZVByb3BzIHx8XG4gICAgICAocHJvcHNPYmplY3QuY3JlYXRlQ2xvdWRXYXRjaEFsYXJtcyAhPT0gdW5kZWZpbmVkKSB8fFxuICAgICAgcHJvcHNPYmplY3QuY2xvdWRXYXRjaEFsYXJtc1ByZWZpeCB8fFxuICAgICAgcHJvcHNPYmplY3QubG9nR3JvdXBQcm9wcykpIHtcblxuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0VSUk9SIC0gSWYgZXhpc3RpbmdTdGF0ZU1hY2hpbmUgaXMgcHJvdmlkZWQsIG5vIG90aGVyIHN0YXRlIG1hY2hpbmUgcHJvcHMgYXJlIGFsbG93ZWRcXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGVycm9yRm91bmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlcyk7XG4gIH1cbn1cbiJdfQ==
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1mdW5jdGlvbi1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdGVwLWZ1bmN0aW9uLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7OztBQThDSCw4Q0F3RUM7QUFLRCw4REEwQ0M7QUFVRCx3REFzQkM7QUE1TEQsbUNBQW1DO0FBQ25DLHVEQUF1RDtBQUN2RCxxREFBcUQ7QUFDckQsbUNBQTJGO0FBRTNGLHlEQUF5RDtBQUN6RCwrRUFBOEQ7QUFJOUQ7Ozs7O0dBS0c7QUFDVSxRQUFBLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFjdkM7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQUMsS0FBZ0IsRUFBRSxFQUFzQixFQUFFLEtBQTRCO0lBRXRHLElBQUksUUFBd0IsQ0FBQztJQUM3QixJQUFJLDZCQUE2QixDQUFDO0lBRWxDLCtDQUErQztJQUMvQyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDOUMsNEVBQTRFO1FBQzVFLHdFQUF3RTtRQUN4RSxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUU3RCx5REFBeUQ7UUFDekQsSUFBSSxpQkFBaUIsSUFBSSxXQUFXLElBQUksWUFBWSxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ3BFLFFBQVEsR0FBRyxXQUE2QixDQUFDO1FBQzNDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyx1RkFBdUY7Z0JBQ3JHLHNGQUFzRixDQUFDLENBQUM7UUFDNUYsQ0FBQztRQUNELDZCQUE2QixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztJQUMxRCxDQUFDO1NBQU0sQ0FBQztRQUNOLHNCQUFzQjtRQUN0Qiw4RUFBOEU7UUFDOUUsdUZBQXVGO1FBQ3ZGLDZFQUE2RTtRQUM3RSxJQUFJLHlCQUF5QixHQUFHLEtB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LENBQUM7SUFFSixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBVUQsU0FBZ0Isc0JBQXNCLENBQUMsV0FBb0M7SUFDekUsSUFBSSxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztJQUV2QixJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixLQUFLLEtBQUssQ0FBQyxJQUFJLFdBQVcsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3pGLGFBQWEsSUFBSSxrRkFBa0YsQ0FBQztRQUNwRyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDO1FBQ3ZDLENBQUMsV0FBVyxDQUFDLGlCQUFpQjtZQUM1QixDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsS0FBSyxTQUFTLENBQUM7WUFDbEQsV0FBVyxDQUFDLHNCQUFzQjtZQUNsQyxXQUFXLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUUvQixhQUFhLElBQUkseUZBQXlGLENBQUM7UUFDM0csVUFBVSxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKlxuICogIFRoZSBmdW5jdGlvbnMgZm91bmQgaGVyZSBpbiB0aGUgY29yZSBsaWJyYXJ5IGFyZSBmb3IgaW50ZXJuYWwgdXNlIGFuZCBjYW4gYmUgY2hhbmdlZFxuICogIG9yIHJlbW92ZWQgb3V0c2lkZSBvZiBhIG1ham9yIHJlbGVhc2UuIFdlIHJlY29tbWVuZCBhZ2FpbnN0IGNhbGxpbmcgdGhlbSBkaXJlY3RseSBmcm9tIGNsaWVudCBjb2RlLlxuICovXG5cbi8vIEltcG9ydHNcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIHNtRGVmYXVsdHMgZnJvbSAnLi9zdGVwLWZ1bmN0aW9uLWRlZmF1bHRzJztcbmltcG9ydCAqIGFzIHNmbiBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9ucyc7XG5pbXBvcnQgeyBvdmVycmlkZVByb3BzLCBhZGRDZm5TdXBwcmVzc1J1bGVzLCBnZW5lcmF0ZVBoeXNpY2FsTG9nR3JvdXBOYW1lIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBjbG91ZHdhdGNoIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCB7IGJ1aWxkTG9nR3JvdXAgfSBmcm9tICcuL2Nsb3Vkd2F0Y2gtbG9nLWdyb3VwLWhlbHBlcic7XG4vLyBOb3RlOiBUbyBlbnN1cmUgQ0RLdjIgY29tcGF0aWJpbGl0eSwga2VlcCB0aGUgaW1wb3J0IHN0YXRlbWVudCBmb3IgQ29uc3RydWN0IHNlcGFyYXRlXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLypcbiAqIHRoZSBpZCBwYXJhbWV0ZXIgd2FzIGFkZGVkIHRvIGJ1aWxkU3RhdGVNYWNoaW5lKCkgbG9uZyBhZnRlciB0aGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24sXG4gKiB0aGlzIHZhbHVlIGNhbiBiZSB1c2VkIGZvciB0aGUgbmV3IHBhcmFtZXRlciBhbmQgZW5zdXJlIGJlaGF2aW9yIGlzIHRoZSBzYW1lLlxuICogKGlmIHdlIGp1c3QgcmVxdWlyZSBhbiBpZCwgdGhlIHN0YXRlIG1hY2hpbmUgbmFtZSB3aWxsIGJlIGNoYW5nZWQgYW5kIGl0IHdpbGwgYmUgYVxuICogZGVzdHJ1Y3RpdmUgY2hhbmdlKVxuICovXG5leHBvcnQgY29uc3QgaWRQbGFjZWhvbGRlciA9IHVuZGVmaW5lZDtcblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFN0YXRlTWFjaW5lUHJvcHMge1xuICByZWFkb25seSBzdGF0ZU1hY2hpbmVQcm9wczogc2ZuLlN0YXRlTWFjaGluZVByb3BzLFxuICByZWFkb25seSBsb2dHcm91cFByb3BzPzogbG9ncy5Mb2dHcm91cFByb3BzLFxuICByZWFkb25seSBjcmVhdGVDbG91ZFdhdGNoQWxhcm1zPzogYm9vbGVhbixcbiAgcmVhZG9ubHkgY2xvdWRXYXRjaEFsYXJtc1ByZWZpeD86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkU3RhdGVNYWNoaW5lUmVzcG9uc2Uge1xuICByZWFkb25seSBzdGF0ZU1hY2hpbmU6IHNmbi5TdGF0ZU1hY2hpbmUsXG4gIHJlYWRvbmx5IGxvZ0dyb3VwOiBsb2dzLklMb2dHcm91cCxcbiAgcmVhZG9ubHkgY2xvdWRXYXRjaEFsYXJtcz86IGNsb3Vkd2F0Y2guQWxhcm1bXVxufVxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICpcbiAqIEJ1aWxkcyBhbmQgcmV0dXJucyBhIFN0YXRlTWFjaGluZS5cbiAqIEBwYXJhbSBzY29wZSAtIHRoZSBjb25zdHJ1Y3QgdG8gd2hpY2ggdGhlIFN0YXRlTWFjaGluZSBzaG91bGQgYmUgYXR0YWNoZWQgdG8uXG4gKiBAcGFyYW0gc3RhdGVNYWNoaW5lUHJvcHMgLSB1c2VyLXNwZWNpZmllZCBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFN0YXRlTWFjaGluZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nIHwgdW5kZWZpbmVkLCBwcm9wczogQnVpbGRTdGF0ZU1hY2luZVByb3BzKTogQnVpbGRTdGF0ZU1hY2hpbmVSZXNwb25zZSB7XG5cbiAgbGV0IGxvZ0dyb3VwOiBsb2dzLklMb2dHcm91cDtcbiAgbGV0IGNvbnNvbGlkYXRlZFN0YXRlTWFjaGluZVByb3BzO1xuXG4gIC8vIElmIHRoZXkgc2VudCBhIGxvZ0dyb3VwIGluIHN0YXRlTWFjaGluZVByb3BzXG4gIGlmIChwcm9wcy5zdGF0ZU1hY2hpbmVQcm9wcy5sb2dzPy5kZXN0aW5hdGlvbikge1xuICAgIC8vIEluIENESyB2Mi4yMzUuMCssIGxvZ3MuZGVzdGluYXRpb24gaXMgSUxvZ0dyb3VwUmVmLCBidXQgd2UgbmVlZCBJTG9nR3JvdXBcbiAgICAvLyBXZSBuZWVkIHRvIHZlcmlmeSBpdCdzIGFjdHVhbGx5IGFuIElMb2dHcm91cCAoaGFzIHRoZSBmdWxsIGludGVyZmFjZSlcbiAgICBjb25zdCBkZXN0aW5hdGlvbiA9IHByb3BzLnN0YXRlTWFjaGluZVByb3BzLmxvZ3MuZGVzdGluYXRpb247XG5cbiAgICAvLyBUeXBlIGd1YXJkOiBDaGVjayBpZiBkZXN0aW5hdGlvbiBoYXMgSUxvZ0dyb3VwIG1ldGhvZHNcbiAgICBpZiAoJ2FkZE1ldHJpY0ZpbHRlcicgaW4gZGVzdGluYXRpb24gJiYgJ2dyYW50V3JpdGUnIGluIGRlc3RpbmF0aW9uKSB7XG4gICAgICBsb2dHcm91cCA9IGRlc3RpbmF0aW9uIGFzIGxvZ3MuSUxvZ0dyb3VwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBwcm92aWRlZCBsb2cgZ3JvdXAgZGVzdGluYXRpb24gbXVzdCBiZSBhIGZ1bGwgSUxvZ0dyb3VwIChub3QganVzdCBJTG9nR3JvdXBSZWYpLiAnICtcbiAgICAgICAgJ1BsZWFzZSBwcm92aWRlIGEgTG9nR3JvdXAgY3JlYXRlZCB3aXRoIG5ldyBMb2dHcm91cCgpIG9yIExvZ0dyb3VwLmZyb21Mb2dHcm91cEFybigpLicpO1xuICAgIH1cbiAgICBjb25zb2xpZGF0ZWRTdGF0ZU1hY2hpbmVQcm9wcyA9IHByb3BzLnN0YXRlTWFjaGluZVByb3BzO1xuICB9IGVsc2Uge1xuICAgIC8vIFRocmVlIHBvc3NpYmlsaXRpZXNcbiAgICAvLyAxKSBsb2dHcm91cFByb3BzIG5vdCBwcm92aWRlZCAtIGNyZWF0ZSBsb2dHcm91cFByb3BzIHdpdGgganVzdCBsb2dHcm91cE5hbWVcbiAgICAvLyAyKSBsb2dHcm91cFByb3BzIHByb3ZpZGVkIHdpdGggbm8gbG9nR3JvdXBOYW1lIC0gb3ZlcnJpZGUgbG9nR3JvdXBQcm9wcy5sb2dHcm91cE5hbWVcbiAgICAvLyAzKSBsb2dHcm91cFByb3BzIHByb3ZpZGVkIHdpdGggbG9nR3JvdXBOYW1lIC0gcGFzcyB1bmFsdGVyZWQgbG9nR3JvdXBQcm9wc1xuICAgIGxldCBjb25zb2xpZGF0ZWRMb2dHcm91cFByb3BzID0gcHJvcHMubG9nR3JvdXBQcm9wcztcblxuICAgIGlmICghY29uc29saWRhdGVkTG9nR3JvdXBQcm9wcykge1xuICAgICAgY29uc29saWRhdGVkTG9nR3JvdXBQcm9wcyA9IHt9O1xuICAgIH1cblxuICAgIGlmICghY29uc29saWRhdGVkTG9nR3JvdXBQcm9wcz8ubG9nR3JvdXBOYW1lKSB7XG4gICAgICBjb25zdCBsb2dHcm91cFByZWZpeCA9ICcvYXdzL3ZlbmRlZGxvZ3Mvc3RhdGVzL2NvbnN0cnVjdHMvJztcbiAgICAgIGNvbnN0IG5hbWVQYXJ0czogc3RyaW5nW10gPSBbXG4gICAgICAgIGNkay5TdGFjay5vZihzY29wZSkuc3RhY2tOYW1lLCAvLyBOYW1lIG9mIHRoZSBzdGFja1xuICAgICAgICBpZCA/PyBzY29wZS5ub2RlLmlkLCAgICAgICAgICAgLy8gVXNlIHRoZSBJRCBmcm9tIGNsaWVudCBpZiBwcm92aWRlZCwgb3RoZXJ3aXNlIHVzZSB0aGUgY29uc3RydWN0IElEXG4gICAgICAgICdTdGF0ZU1hY2hpbmVMb2cnICAgICAgICAgICAgICAvLyBMaXRlcmFsIHN0cmluZyBmb3IgbG9nIGdyb3VwIG5hbWUgcG9ydGlvblxuICAgICAgXTtcblxuICAgICAgY29uc3QgbG9nR3JvdXBOYW1lID0gZ2VuZXJhdGVQaHlzaWNhbExvZ0dyb3VwTmFtZShsb2dHcm91cFByZWZpeCwgbmFtZVBhcnRzKTtcbiAgICAgIGNvbnNvbGlkYXRlZExvZ0dyb3VwUHJvcHMgPSBvdmVycmlkZVByb3BzKGNvbnNvbGlkYXRlZExvZ0dyb3VwUHJvcHMsIHsgbG9nR3JvdXBOYW1lIH0pO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBuZXcgQ2xvdWR3YXRjaCBsb2cgZ3JvdXAgZm9yIFN0ZXAgZnVuY3Rpb24gU3RhdGUgTWFjaGluZVxuICAgIGxvZ0dyb3VwID0gYnVpbGRMb2dHcm91cChzY29wZSwgYFN0YXRlTWFjaGluZUxvZ0dyb3VwJHsoaWQgPz8gJycpfWAsIGNvbnNvbGlkYXRlZExvZ0dyb3VwUHJvcHMpO1xuXG4gICAgLy8gT3ZlcnJpZGUgdGhlIGRlZmF1bHRzIHdpdGggdGhlIHVzZXIgcHJvdmlkZWQgcHJvcHNcbiAgICBjb25zb2xpZGF0ZWRTdGF0ZU1hY2hpbmVQcm9wcyA9IG92ZXJyaWRlUHJvcHMoc21EZWZhdWx0cy5EZWZhdWx0U3RhdGVNYWNoaW5lUHJvcHMobG9nR3JvdXApLCBwcm9wcy5zdGF0ZU1hY2hpbmVQcm9wcyk7XG4gIH1cblxuICAvLyBPdmVycmlkZSB0aGUgQ2xvdWR3YXRjaCBwZXJtaXNzaW9ucyB0byBtYWtlIGl0IG1vcmUgZmluZSBncmFpbmVkXG4gIGNvbnN0IG5ld1N0YXRlTWFjaGluZSA9IG5ldyBzZm4uU3RhdGVNYWNoaW5lKHNjb3BlLCBgU3RhdGVNYWNoaW5lJHsoaWQgPz8gJycpfWAsIGNvbnNvbGlkYXRlZFN0YXRlTWFjaGluZVByb3BzKTtcblxuICAvLyBJZiB0aGUgY2xpZW50IGRpZCBub3QgcGFzcyBhIHJvbGUgd2UgZ290IHRoZSBkZWZhdWx0IHJvbGUgYW5kIHdpbGwgdHJpbSB0aGUgcHJpdmlsZWdlc1xuICBpZiAoIXByb3BzLnN0YXRlTWFjaGluZVByb3BzLnJvbGUpIHtcbiAgICBjb25zdCByb2xlID0gbmV3U3RhdGVNYWNoaW5lLm5vZGUuZmluZENoaWxkKCdSb2xlJykgYXMgaWFtLlJvbGU7XG4gICAgY29uc3QgY2ZuRGVmYXVsdFBvbGljeSA9IHJvbGUubm9kZS5maW5kQ2hpbGQoJ0RlZmF1bHRQb2xpY3knKS5ub2RlLmRlZmF1bHRDaGlsZCBhcyBhbnk7XG4gICAgLy8gT3ZlcnJpZGUgQ2ZuIE5hZyB3YXJuaW5nIFcxMjogSUFNIHBvbGljeSBzaG91bGQgbm90IGFsbG93ICogcmVzb3VyY2VcbiAgICBhZGRDZm5TdXBwcmVzc1J1bGVzKGNmbkRlZmF1bHRQb2xpY3ksIFtcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdXMTInLFxuICAgICAgICByZWFzb246IGBUaGVzZSBhcmUgQ0RLIGRlZmF1bHRzLiBUaGUgJ0xvZ0RlbGl2ZXJ5JyBhY3Rpb25zIGRvIG5vdCBzdXBwb3J0IHJlc291cmNlLWxldmVsIGF1dGhvcml6YXRpb25zLiBBbnkgbG9nZ2luZyBpcyBkb25lIGJ5IFN0YXRlIE1hY2hpbmUgY29kZWBcbiAgICAgIH1cbiAgICBdKTtcbiAgfVxuICBjb25zdCBjcmVhdGVDbG91ZFdhdGNoQWxhcm1zOiBib29sZWFuID0gKHByb3BzLmNyZWF0ZUNsb3VkV2F0Y2hBbGFybXMgPT09IHVuZGVmaW5lZCB8fCBwcm9wcy5jcmVhdGVDbG91ZFdhdGNoQWxhcm1zKTtcbiAgY29uc3QgY2xvdWRXYXRjaEFsYXJtcyA9IGNyZWF0ZUNsb3VkV2F0Y2hBbGFybXMgPyBidWlsZFN0ZXBGdW5jdGlvbkNXQWxhcm1zKHNjb3BlLCBwcm9wcy5jbG91ZFdhdGNoQWxhcm1zUHJlZml4LCBuZXdTdGF0ZU1hY2hpbmUpIDogdW5kZWZpbmVkO1xuXG4gIHJldHVybiB7XG4gICAgc3RhdGVNYWNoaW5lOiBuZXdTdGF0ZU1hY2hpbmUsXG4gICAgbG9nR3JvdXAsXG4gICAgY2xvdWRXYXRjaEFsYXJtc1xuICB9O1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFN0ZXBGdW5jdGlvbkNXQWxhcm1zKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcgfCB1bmRlZmluZWQsIHNtOiBzZm4uU3RhdGVNYWNoaW5lKTogY2xvdWR3YXRjaC5BbGFybVtdIHtcbiAgLy8gU2V0dXAgQ1cgQWxhcm1zIGZvciBTdGF0ZSBNYWNoaW5lXG4gIGNvbnN0IGFsYXJtczogY2xvdWR3YXRjaC5BbGFybVtdID0gbmV3IEFycmF5KCk7XG4gIGNvbnN0IHByZWZpeCA9IGlkID8/IFwiXCI7XG5cbiAgLy8gU3VtIG9mIG51bWJlciBvZiBleGVjdXRpb25zIHRoYXQgZmFpbGVkIGlzID49IDEgZm9yIDUgbWludXRlcywgMSBjb25zZWN1dGl2ZSB0aW1lXG4gIGFsYXJtcy5wdXNoKG5ldyBjbG91ZHdhdGNoLkFsYXJtKHNjb3BlLCBgJHtwcmVmaXh9RXhlY3V0aW9uRmFpbGVkQWxhcm1gLCB7XG4gICAgbWV0cmljOiBzbS5tZXRyaWNGYWlsZWQoe1xuICAgICAgc3RhdGlzdGljOiAnU3VtJyxcbiAgICAgIHBlcmlvZDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMzAwKSxcbiAgICB9KSxcbiAgICB0aHJlc2hvbGQ6IDEsXG4gICAgZXZhbHVhdGlvblBlcmlvZHM6IDEsXG4gICAgY29tcGFyaXNvbk9wZXJhdG9yOiBjbG91ZHdhdGNoLkNvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgIGFsYXJtRGVzY3JpcHRpb246ICdBbGFybSBmb3IgdGhlIG51bWJlciBvZiBleGVjdXRpb25zIHRoYXQgZmFpbGVkIGV4Y2VlZGVkIHRoZSB0aHJlc2hvbGQgb2YgMS4gJ1xuICB9KSk7XG5cbiAgLy8gU3VtIG9mIG51bWJlciBvZiBleGVjdXRpb25zIHRoYXQgZmFpbGVkIG1heGltdW0gaXMgPj0gMSBmb3IgNSBtaW51dGUsIDEgY29uc2VjdXRpdmUgdGltZVxuICBhbGFybXMucHVzaChuZXcgY2xvdWR3YXRjaC5BbGFybShzY29wZSwgYCR7cHJlZml4fUV4ZWN1dGlvblRocm90dGxlZEFsYXJtYCwge1xuICAgIG1ldHJpYzogc20ubWV0cmljVGhyb3R0bGVkKHtcbiAgICAgIHN0YXRpc3RpYzogJ1N1bScsXG4gICAgICBwZXJpb2Q6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDMwMCksXG4gICAgfSksXG4gICAgdGhyZXNob2xkOiAxLFxuICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgIGNvbXBhcmlzb25PcGVyYXRvcjogY2xvdWR3YXRjaC5Db21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICBhbGFybURlc2NyaXB0aW9uOiAnQWxhcm0gZm9yIHRoZSBudW1iZXIgb2YgZXhlY3V0aW9ucyB0aGF0IHRocm90dGxlZCBleGNlZWRlZCB0aGUgdGhyZXNob2xkIG9mIDEuICdcbiAgfSkpO1xuXG4gIC8vIE51bWJlciBvZiBleGVjdXRpb25zIHRoYXQgYWJvcnRlZCBtYXhpbXVtIGlzID49IDEgZm9yIDUgbWludXRlLCAxIGNvbnNlY3V0aXZlIHRpbWVcbiAgYWxhcm1zLnB1c2gobmV3IGNsb3Vkd2F0Y2guQWxhcm0oc2NvcGUsIGAke3ByZWZpeH1FeGVjdXRpb25BYm9ydGVkQWxhcm1gLCB7XG4gICAgbWV0cmljOiBzbS5tZXRyaWNBYm9ydGVkKHtcbiAgICAgIHN0YXRpc3RpYzogJ01heGltdW0nLFxuICAgICAgcGVyaW9kOiBjZGsuRHVyYXRpb24uc2Vjb25kcygzMDApLFxuICAgIH0pLFxuICAgIHRocmVzaG9sZDogMSxcbiAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICBjb21wYXJpc29uT3BlcmF0b3I6IGNsb3Vkd2F0Y2guQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgYWxhcm1EZXNjcmlwdGlvbjogJ0FsYXJtIGZvciB0aGUgbnVtYmVyIG9mIGV4ZWN1dGlvbnMgdGhhdCBhYm9ydGVkIGV4Y2VlZGVkIHRoZSB0aHJlc2hvbGQgb2YgMS4gJ1xuICB9KSk7XG5cbiAgcmV0dXJuIGFsYXJtcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZU1hY2hpbmVQcm9wcyB7XG4gIHJlYWRvbmx5IHN0YXRlTWFjaGluZVByb3BzPzogc2ZuLlN0YXRlTWFjaGluZVByb3BzO1xuICByZWFkb25seSBleGlzdGluZ1N0YXRlTWFjaGluZU9iaj86IHNmbi5TdGF0ZU1hY2hpbmU7XG4gIHJlYWRvbmx5IGNyZWF0ZUNsb3VkV2F0Y2hBbGFybXM/OiBib29sZWFuO1xuICByZWFkb25seSBjbG91ZFdhdGNoQWxhcm1zUHJlZml4Pzogc3RyaW5nXG4gIHJlYWRvbmx5IGxvZ0dyb3VwUHJvcHM/OiBsb2dzLkxvZ0dyb3VwUHJvcHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDaGVja1N0YXRlTWFjaGluZVByb3BzKHByb3BzT2JqZWN0OiBTdGF0ZU1hY2hpbmVQcm9wcyB8IGFueSkge1xuICBsZXQgZXJyb3JNZXNzYWdlcyA9ICcnO1xuICBsZXQgZXJyb3JGb3VuZCA9IGZhbHNlO1xuXG4gIGlmICgocHJvcHNPYmplY3QuY3JlYXRlQ2xvdWRXYXRjaEFsYXJtcyA9PT0gZmFsc2UpICYmIHByb3BzT2JqZWN0LmNsb3VkV2F0Y2hBbGFybXNQcmVmaXgpIHtcbiAgICBlcnJvck1lc3NhZ2VzICs9ICdFcnJvciAtIGNsb3VkV2F0Y2hBbGFybXNQcmVmaXggaXMgaW52YWxpZCB3aGVuIGNyZWF0ZUNsb3VkV2F0Y2hBbGFybXMgaXMgZmFsc2VcXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKChwcm9wc09iamVjdC5leGlzdGluZ1N0YXRlTWFjaGluZU9iaikgJiZcbiAgICAocHJvcHNPYmplY3Quc3RhdGVNYWNoaW5lUHJvcHMgfHxcbiAgICAgIChwcm9wc09iamVjdC5jcmVhdGVDbG91ZFdhdGNoQWxhcm1zICE9PSB1bmRlZmluZWQpIHx8XG4gICAgICBwcm9wc09iamVjdC5jbG91ZFdhdGNoQWxhcm1zUHJlZml4IHx8XG4gICAgICBwcm9wc09iamVjdC5sb2dHcm91cFByb3BzKSkge1xuXG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRVJST1IgLSBJZiBleGlzdGluZ1N0YXRlTWFjaGluZSBpcyBwcm92aWRlZCwgbm8gb3RoZXIgc3RhdGUgbWFjaGluZSBwcm9wcyBhcmUgYWxsb3dlZFxcbic7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAoZXJyb3JGb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2VzKTtcbiAgfVxufVxuIl19
|
package/lib/vpc-helper.d.ts
CHANGED
|
@@ -57,7 +57,8 @@ export declare enum ServiceEndpointTypes {
|
|
|
57
57
|
KENDRA = "KENDRA",
|
|
58
58
|
TRANSCRIBE = "TRANSCRIBE",
|
|
59
59
|
TRANSLATE = "TRANSLATE",
|
|
60
|
-
TEXTRACT = "TEXTRACT"
|
|
60
|
+
TEXTRACT = "TEXTRACT",
|
|
61
|
+
POLLY = "POLLY"
|
|
61
62
|
}
|
|
62
63
|
/**
|
|
63
64
|
* @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
|
package/lib/vpc-helper.js
CHANGED
|
@@ -70,6 +70,7 @@ var ServiceEndpointTypes;
|
|
|
70
70
|
ServiceEndpointTypes["TRANSCRIBE"] = "TRANSCRIBE";
|
|
71
71
|
ServiceEndpointTypes["TRANSLATE"] = "TRANSLATE";
|
|
72
72
|
ServiceEndpointTypes["TEXTRACT"] = "TEXTRACT";
|
|
73
|
+
ServiceEndpointTypes["POLLY"] = "POLLY";
|
|
73
74
|
})(ServiceEndpointTypes || (exports.ServiceEndpointTypes = ServiceEndpointTypes = {}));
|
|
74
75
|
var EndpointTypes;
|
|
75
76
|
(function (EndpointTypes) {
|
|
@@ -171,6 +172,11 @@ const endpointSettings = [
|
|
|
171
172
|
endpointName: ServiceEndpointTypes.TEXTRACT,
|
|
172
173
|
endpointType: EndpointTypes.INTERFACE,
|
|
173
174
|
endpointInterfaceService: ec2.InterfaceVpcEndpointAwsService.TEXTRACT
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
endpointName: ServiceEndpointTypes.POLLY,
|
|
178
|
+
endpointType: EndpointTypes.INTERFACE,
|
|
179
|
+
endpointInterfaceService: ec2.InterfaceVpcEndpointAwsService.POLLY
|
|
174
180
|
}
|
|
175
181
|
];
|
|
176
182
|
/**
|
|
@@ -282,4 +288,4 @@ function calculateIpMaskSize(ipAddressCount) {
|
|
|
282
288
|
}
|
|
283
289
|
return maskSize;
|
|
284
290
|
}
|
|
285
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInZwYy1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOzs7QUEyQ0gsNEJBeUJDO0FBeUlELHNEQXVCQztBQXlERCw0REFpQkM7QUFRRCxzQ0FZQztBQUVELGtEQXlCQztBQTNWRDs7O0dBR0c7QUFFSCwyQ0FBMkM7QUFHM0MsbUVBQTZEO0FBQzdELG1DQUF3RztBQUN4RyxtQ0FBbUM7QUE0Qm5DOztHQUVHO0FBQ0gsU0FBZ0IsUUFBUSxDQUFDLEtBQWdCLEVBQUUsS0FBb0IsRUFBRSxFQUFXO0lBQzFFLElBQUksS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sS0FBSyxFQUFFLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxlQUFlLEdBQWlCLEtBQUssRUFBRSxlQUFlLENBQUM7SUFFM0QsZUFBZSxHQUFHLElBQUEsd0JBQWdCLEVBQUMsZUFBZSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFFbkcsdUVBQXVFO0lBQ3ZFLCtDQUErQztJQUMvQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN2QyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxlQUFlLENBQUMsQ0FBQztJQUV2RCxnR0FBZ0c7SUFDaEcsdUVBQXVFO0lBQ3ZFLCtDQUErQztJQUMvQyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNuRCxNQUFNLE9BQU8sR0FBZ0IsR0FBRyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUV2RCwyQkFBMkIs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IG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qXG4gKiAgVGhlIGZ1bmN0aW9ucyBmb3VuZCBoZXJlIGluIHRoZSBjb3JlIGxpYnJhcnkgYXJlIGZvciBpbnRlcm5hbCB1c2UgYW5kIGNhbiBiZSBjaGFuZ2VkXG4gKiAgb3IgcmVtb3ZlZCBvdXRzaWRlIG9mIGEgbWFqb3IgcmVsZWFzZS4gV2UgcmVjb21tZW5kIGFnYWluc3QgY2FsbGluZyB0aGVtIGRpcmVjdGx5IGZyb20gY2xpZW50IGNvZGUuXG4gKi9cblxuaW1wb3J0ICogYXMgZWMyIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgeyBDZm5Mb2dHcm91cCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbG9nc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IGJ1aWxkU2VjdXJpdHlHcm91cCB9IGZyb20gXCIuL3NlY3VyaXR5LWdyb3VwLWhlbHBlclwiO1xuaW1wb3J0IHsgY29uc29saWRhdGVQcm9wcywgYWRkQ2ZuU3VwcHJlc3NSdWxlcywgc3VwcHJlc3NWcGNDdXN0b21lckhhbmRsZXJSb2xlV2FybmluZ3MgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcblxuLy8gRGVmaW5lZCBPTkNFIGluIG91ciBjb2RlIGluIGNvcmUgc29tZXdoZXJlXG4vLyBEZWZpbml0ZWx5IGNvZGUgdG8gYmUgbGV2ZXJhZ2VkIHdpdGhvdXQgbmVjZXNzYXJpbHkgdW5kZXJzdGFuZGluZyBpdFxuZXhwb3J0IHR5cGUgUHJvcHNCdWlsZGVyPFQ+ID0ge1xuICAtcmVhZG9ubHkgW1AgaW4ga2V5b2YgVF0/OiBUW1BdO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFZwY1Byb3BzIHtcbiAgLyoqXG4gICAqIEV4aXN0aW5nIGluc3RhbmNlIG9mIGEgVlBDLCBpZiB0aGlzIGlzIHNldCB0aGVuIHRoZSBhbGwgUHJvcHMgYXJlIGlnbm9yZWRcbiAgICovXG4gIHJlYWRvbmx5IGV4aXN0aW5nVnBjPzogZWMyLklWcGM7XG4gIC8qKlxuICAgKiBPbmUgb2YgdGhlIGRlZmF1bHQgVlBDIGNvbmZpZ3VyYXRpb25zIGF2YWlsYWJsZSBpbiB2cGMtZGVmYXVsdHNcbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRWcGNQcm9wczogZWMyLlZwY1Byb3BzO1xuICAvKipcbiAgICogVXNlciBwcm92aWRlZCBwcm9wcyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwcm9wcyBmb3IgdGhlIFZQQy5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJWcGNQcm9wcz86IGVjMi5WcGNQcm9wcztcbiAgLyoqXG4gICAqIENvbnN0cnVjdCBzcGVjaWZpZWQgcHJvcHMgdGhhdCBvdmVycmlkZSBib3RoIHRoZSBkZWZhdWx0IHByb3BzXG4gICAqIGFuZCB1c2VyIHByb3BzIGZvciB0aGUgVlBDLlxuICAgKi9cbiAgcmVhZG9ubHkgY29uc3RydWN0VnBjUHJvcHM/OiBlYzIuVnBjUHJvcHM7XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkVnBjKHNjb3BlOiBDb25zdHJ1Y3QsIHByb3BzOiBCdWlsZFZwY1Byb3BzLCBpZD86IHN0cmluZyk6IGVjMi5JVnBjIHtcbiAgaWYgKHByb3BzPy5leGlzdGluZ1ZwYykge1xuICAgIHJldHVybiBwcm9wcz8uZXhpc3RpbmdWcGM7XG4gIH1cblxuICBsZXQgY3VtdWxhdGl2ZVByb3BzOiBlYzIuVnBjUHJvcHMgPSBwcm9wcz8uZGVmYXVsdFZwY1Byb3BzO1xuXG4gIGN1bXVsYXRpdmVQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoY3VtdWxhdGl2ZVByb3BzLCBwcm9wcz8udXNlclZwY1Byb3BzLCBwcm9wcz8uY29uc3RydWN0VnBjUHJvcHMpO1xuXG4gIC8vIFN0YXkgY29tcGF0aWJsZSB3aXRoIFZQQ3MgY3JlYXRlZCBiZWZvcmUgSUQgd2FzIGFkZGVkIGFzIGFuIGFyZ3VtZW50XG4gIC8vIFRPRE86IHdlIG5lZWQgYSB1bml0IHRlc3QgZm9yIGFuIGlkIGFyZ3VtZW50XG4gIGNvbnN0IHZwY0lkID0gaWQgPyBgdnBjLSR7aWR9YCA6IFwiVnBjXCI7XG4gIGNvbnN0IHZwYyA9IG5ldyBlYzIuVnBjKHNjb3BlLCB2cGNJZCwgY3VtdWxhdGl2ZVByb3BzKTtcblxuICAvLyBBZGQgVlBDIEZsb3dMb2dzIHdpdGggdGhlIGRlZmF1bHQgc2V0dGluZyBvZiB0cmFmZmljVHlwZTpBTEwgYW5kIGRlc3RpbmF0aW9uOiBDbG91ZFdhdGNoIExvZ3NcbiAgLy8gU3RheSBjb21wYXRpYmxlIHdpdGggVlBDcyBjcmVhdGVkIGJlZm9yZSBJRCB3YXMgYWRkZWQgYXMgYW4gYXJndW1lbnRcbiAgLy8gVE9ETzogd2UgbmVlZCBhIHVuaXQgdGVzdCBmb3IgYW4gaWQgYXJndW1lbnRcbiAgY29uc3QgZmxvd0xvZ0lkID0gaWQgPyBgZmxvd2xvZy0ke2lkfWAgOiBcIkZsb3dMb2dcIjtcbiAgY29uc3QgZmxvd0xvZzogZWMyLkZsb3dMb2cgPSB2cGMuYWRkRmxvd0xvZyhmbG93TG9nSWQpO1xuXG4gIFN1cHByZXNzTWFwUHVibGljSXBXYXJuaW5ncyh2cGMpO1xuICBTdXBwcmVzc0VuY3J5cHRlZExvZ1dhcm5pbmdzKGZsb3dMb2cpO1xuICBzdXBwcmVzc1ZwY0N1c3RvbWVySGFuZGxlclJvbGVXYXJuaW5ncyhjZGsuU3RhY2sub2Yoc2NvcGUpKTtcblxuICByZXR1cm4gdnBjO1xufVxuXG5leHBvcnQgZW51bSBTZXJ2aWNlRW5kcG9pbnRUeXBlcyB7XG4gIERZTkFNT0RCID0gXCJEREJcIixcbiAgU05TID0gXCJTTlNcIixcbiAgU1FTID0gXCJTUVNcIixcbiAgUzMgPSBcIlMzXCIsXG4gIFNURVBfRlVOQ1RJT05TID0gXCJTVEVQX0ZVTkNUSU9OU1wiLFxuICBTQUdFTUFLRVJfUlVOVElNRSA9IFwiU0FHRU1BS0VSX1JVTlRJTUVcIixcbiAgU0VDUkVUU19NQU5BR0VSID0gXCJTRUNSRVRTX01BTkFHRVJcIixcbiAgU1NNID0gXCJTU01cIixcbiAgRUNSX0FQSSA9IFwiRUNSX0FQSVwiLFxuICBFQ1JfREtSID0gXCJFQ1JfREtSXCIsXG4gIEVWRU5UUyA9IFwiQ0xPVURXQVRDSF9FVkVOVFNcIixcbiAgS0lORVNJU19GSVJFSE9TRSA9IFwiS0lORVNJU19GSVJFSE9TRVwiLFxuICBLSU5FU0lTX1NUUkVBTVMgPSBcIktJTkVTSVNfU1RSRUFNU1wiLFxuICBCRURST0NLID0gXCJCRURST0NLXCIsXG4gIEJFRFJPQ0tfUlVOVElNRSA9IFwiQkVEUk9DS19SVU5USU1FXCIsXG4gIEtFTkRSQSA9IFwiS0VORFJBXCIsXG4gIFRSQU5TQ1JJQkUgPSBcIlRSQU5TQ1JJQkVcIixcbiAgVFJBTlNMQVRFID0gXCJUUkFOU0xBVEVcIixcbiAgVEVYVFJBQ1QgPSBcIlRFWFRSQUNUXCJcbn1cblxuZW51bSBFbmRwb2ludFR5cGVzIHtcbiAgR0FURVdBWSA9IFwiR2F0ZXdheVwiLFxuICBJTlRFUkZBQ0UgPSBcIkludGVyZmFjZVwiLFxufVxuXG5pbnRlcmZhY2UgRW5kcG9pbnREZWZpbml0aW9uIHtcbiAgZW5kcG9pbnROYW1lOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcztcbiAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGVzO1xuICBlbmRwb2ludEdhdGV3YXlTZXJ2aWNlPzogZWMyLkdhdGV3YXlWcGNFbmRwb2ludEF3c1NlcnZpY2U7XG4gIGVuZHBvaW50SW50ZXJmYWNlU2VydmljZT86IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2U7XG59XG5cbmNvbnN0IGVuZHBvaW50U2V0dGluZ3M6IEVuZHBvaW50RGVmaW5pdGlvbltdID0gW1xuICB7XG4gICAgZW5kcG9pbnROYW1lOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcy5EWU5BTU9EQixcbiAgICBlbmRwb2ludFR5cGU6IEVuZHBvaW50VHlwZXMuR0FURVdBWSxcbiAgICBlbmRwb2ludEdhdGV3YXlTZXJ2aWNlOiBlYzIuR2F0ZXdheVZwY0VuZHBvaW50QXdzU2VydmljZS5EWU5BTU9EQixcbiAgfSxcbiAge1xuICAgIGVuZHBvaW50TmFtZTogU2VydmljZUVuZHBvaW50VHlwZXMuUzMsXG4gICAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGVzLkdBVEVXQVksXG4gICAgZW5kcG9pbnRHYXRld2F5U2VydmljZTogZWMyLkdhdGV3YXlWcGNFbmRwb2ludEF3c1NlcnZpY2UuUzMsXG4gIH0sXG4gIHtcbiAgICBlbmRwb2ludE5hbWU6IFNlcnZpY2VFbmRwb2ludFR5cGVzLlNURVBfRlVOQ1RJT05TLFxuICAgIGVuZHBvaW50VHlwZTogRW5kcG9pbnRUeXBlcy5JTlRFUkZBQ0UsXG4gICAgZW5kcG9pbnRJbnRlcmZhY2VTZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLlNURVBfRlVOQ1RJT05TLFxuICB9LFxuICB7XG4gICAgZW5kcG9pbnROYW1lOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcy5TTlMsXG4gICAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGVzLklOVEVSRkFDRSxcbiAgICBlbmRwb2ludEludGVyZmFjZVNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuU05TLFxuICB9LFxuICB7XG4gICAgZW5kcG9pbnROYW1lOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcy5TUVMsXG4gICAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGVzLklOVEVSRkFDRSxcbiAgICBlbmRwb2ludEludGVyZmFjZVNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuU1FTLFxuICB9LFxuICB7XG4gICAgZW5kcG9pbnROYW1lOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcy5TQUdFTUFLRVJfUlVOVElNRSxcbiAgICBlbmRwb2ludFR5cGU6IEVuZHBvaW50VHlwZXMuSU5URVJGQUNFLFxuICAgIGVuZHBvaW50SW50ZXJmYWNlU2VydmljZTogZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5TQUdFTUFLRVJfUlVOVElNRSxcbiAgfSxcbiAge1xuICAgIGVuZHBvaW50TmFtZTogU2VydmljZUVuZHBvaW50VHlwZXMuU0VDUkVUU19NQU5BR0VSLFxuICAgIGVuZHBvaW50VHlwZTogRW5kcG9pbnRUeXBlcy5JTlRFUkZBQ0UsXG4gICAgZW5kcG9pbnRJbnRlcmZhY2VTZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLlNFQ1JFVFNfTUFOQUdFUixcbiAgfSxcbiAge1xuICAgIGVuZHBvaW50TmFtZTogU2VydmljZUVuZHBvaW50VHlwZXMuU1NNLFxuICAgIGVuZHBvaW50VHlwZTogRW5kcG9pbnRUeXBlcy5JTlRFUkZBQ0UsXG4gICAgZW5kcG9pbnRJbnRlcmZhY2VTZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLlNTTSxcbiAgfSxcbiAge1xuICAgIGVuZHBvaW50TmFtZTogU2VydmljZUVuZHBvaW50VHlwZXMuRUNSX0FQSSxcbiAgICBlbmRwb2ludFR5cGU6IEVuZHBvaW50VHlwZXMuSU5URVJGQUNFLFxuICAgIGVuZHBvaW50SW50ZXJmYWNlU2VydmljZTogZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5FQ1JcbiAgfSxcbiAge1xuICAgIGVuZHBvaW50TmFtZTogU2VydmljZUVuZHBvaW50VHlwZXMuRUNSX0RLUixcbiAgICBlbmRwb2ludFR5cGU6IEVuZHBvaW50VHlwZXMuSU5URVJGQUNFLFxuICAgIGVuZHBvaW50SW50ZXJmYWNlU2VydmljZTogZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5FQ1JfRE9DS0VSXG4gIH0sXG4gIHtcbiAgICBlbmRwb2ludE5hbWU6IFNlcnZpY2VFbmRwb2ludFR5cGVzLkVWRU5UUyxcbiAgICBlbmRwb2ludFR5cGU6IEVuZHBvaW50VHlwZXMuSU5URVJGQUNFLFxuICAgIGVuZHBvaW50SW50ZXJmYWNlU2VydmljZTogZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5DTE9VRFdBVENIX0VWRU5UU1xuICB9LFxuICB7XG4gICAgZW5kcG9pbnROYW1lOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcy5LSU5FU0lTX0ZJUkVIT1NFLFxuICAgIGVuZHBvaW50VHlwZTogRW5kcG9pbnRUeXBlcy5JTlRFUkZBQ0UsXG4gICAgZW5kcG9pbnRJbnRlcmZhY2VTZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLktJTkVTSVNfRklSRUhPU0VcbiAgfSxcbiAge1xuICAgIGVuZHBvaW50TmFtZTogU2VydmljZUVuZHBvaW50VHlwZXMuS0lORVNJU19TVFJFQU1TLFxuICAgIGVuZHBvaW50VHlwZTogRW5kcG9pbnRUeXBlcy5JTlRFUkZBQ0UsXG4gICAgZW5kcG9pbnRJbnRlcmZhY2VTZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLktJTkVTSVNfU1RSRUFNU1xuICB9LFxuICB7XG4gICAgZW5kcG9pbnROYW1lOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcy5LRU5EUkEsXG4gICAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGVzLklOVEVSRkFDRSxcbiAgICBlbmRwb2ludEludGVyZmFjZVNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuS0VORFJBXG4gIH0sXG4gIHtcbiAgICBlbmRwb2ludE5hbWU6IFNlcnZpY2VFbmRwb2ludFR5cGVzLkJFRFJPQ0ssXG4gICAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGVzLklOVEVSRkFDRSxcbiAgICBlbmRwb2ludEludGVyZmFjZVNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuQkVEUk9DS1xuICB9LFxuICB7XG4gICAgZW5kcG9pbnROYW1lOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcy5CRURST0NLX1JVTlRJTUUsXG4gICAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGVzLklOVEVSRkFDRSxcbiAgICBlbmRwb2ludEludGVyZmFjZVNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuQkVEUk9DS19SVU5USU1FXG4gIH0sXG4gIHtcbiAgICBlbmRwb2ludE5hbWU6IFNlcnZpY2VFbmRwb2ludFR5cGVzLlRSQU5TQ1JJQkUsXG4gICAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGVzLklOVEVSRkFDRSxcbiAgICBlbmRwb2ludEludGVyZmFjZVNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuVFJBTlNDUklCRVxuICB9LFxuICB7XG4gICAgZW5kcG9pbnROYW1lOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcy5UUkFOU0xBVEUsXG4gICAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGVzLklOVEVSRkFDRSxcbiAgICBlbmRwb2ludEludGVyZmFjZVNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuVFJBTlNMQVRFXG4gIH0sXG4gIHtcbiAgICBlbmRwb2ludE5hbWU6IFNlcnZpY2VFbmRwb2ludFR5cGVzLlRFWFRSQUNULFxuICAgIGVuZHBvaW50VHlwZTogRW5kcG9pbnRUeXBlcy5JTlRFUkZBQ0UsXG4gICAgZW5kcG9pbnRJbnRlcmZhY2VTZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLlRFWFRSQUNUXG4gIH1cbl07XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFkZEF3c1NlcnZpY2VFbmRwb2ludChcbiAgc2NvcGU6IENvbnN0cnVjdCxcbiAgdnBjOiBlYzIuSVZwYyxcbiAgaW50ZXJmYWNlVGFnOiBTZXJ2aWNlRW5kcG9pbnRUeXBlc1xuKSB7XG4gIGlmIChDaGVja0lmRW5kcG9pbnRBbHJlYWR5RXhpc3RzKHZwYywgaW50ZXJmYWNlVGFnKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHNlcnZpY2UgPSBlbmRwb2ludFNldHRpbmdzLmZpbmQoXG4gICAgKGVuZHBvaW50KSA9PiBlbmRwb2ludC5lbmRwb2ludE5hbWUgPT09IGludGVyZmFjZVRhZ1xuICApO1xuXG4gIGlmICghc2VydmljZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIFNlcnZpY2Ugc2VudCB0byBBZGRTZXJ2aWNlRW5kcG9pbnRcIik7XG4gIH1cblxuICBpZiAoc2VydmljZS5lbmRwb2ludFR5cGUgPT09IEVuZHBvaW50VHlwZXMuR0FURVdBWSkge1xuICAgIEFkZEdhdGV3YXlFbmRwb2ludCh2cGMsIHNlcnZpY2UsIGludGVyZmFjZVRhZyk7XG4gIH1cbiAgaWYgKHNlcnZpY2UuZW5kcG9pbnRUeXBlID09PSBFbmRwb2ludFR5cGVzLklOVEVSRkFDRSkge1xuICAgIEFkZEludGVyZmFjZUVuZHBvaW50KHNjb3BlLCB2cGMsIHNlcnZpY2UsIGludGVyZmFjZVRhZyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gQ2hlY2tJZkVuZHBvaW50QWxyZWFkeUV4aXN0cyh2cGM6IGVjMi5JVnBjLCBpbnRlcmZhY2VUYWc6IFNlcnZpY2VFbmRwb2ludFR5cGVzKTogYm9vbGVhbiB7XG4gIHJldHVybiB2cGMubm9kZS5jaGlsZHJlbi5zb21lKChjaGlsZCkgPT4gY2hpbGQubm9kZS5pZCA9PT0gaW50ZXJmYWNlVGFnKTtcbn1cblxuZnVuY3Rpb24gU3VwcHJlc3NNYXBQdWJsaWNJcFdhcm5pbmdzKHZwYzogZWMyLlZwYykge1xuICAvLyBBZGQgQ2ZuIE5hZyBzdXBwcmVzc2lvbiBmb3IgUFVCTElDIHN1Ym5ldHMgdG8gc3VwcHJlc3MgV0FSTiBXMzM6IEVDMiBTdWJuZXQgc2hvdWxkIG5vdCBoYXZlIE1hcFB1YmxpY0lwT25MYXVuY2ggc2V0IHRvIHRydWVcbiAgdnBjLnB1YmxpY1N1Ym5ldHMuZm9yRWFjaCgoc3VibmV0KSA9PiB7XG4gICAgY29uc3QgY2ZuU3VibmV0ID0gc3VibmV0Lm5vZGUuZGVmYXVsdENoaWxkIGFzIGVjMi5DZm5TdWJuZXQ7XG4gICAgYWRkQ2ZuU3VwcHJlc3NSdWxlcyhjZm5TdWJuZXQsIFtcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdXMzMnLFxuICAgICAgICByZWFzb246ICdBbGxvdyBQdWJsaWMgU3VibmV0cyB0byBoYXZlIE1hcFB1YmxpY0lwT25MYXVuY2ggc2V0IHRvIHRydWUnXG4gICAgICB9XG4gICAgXSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBTdXBwcmVzc0VuY3J5cHRlZExvZ1dhcm5pbmdzKGZsb3dMb2c6IGVjMi5GbG93TG9nKSB7XG4gIC8vIEFkZCBDZm4gTmFnIHN1cHByZXNzaW9uIGZvciBDbG91ZFdhdGNoTG9ncyBMb2dHcm91cHMgZGF0YSBpcyBlbmNyeXB0ZWRcbiAgY29uc3QgY2ZuTG9nR3JvdXA6IENmbkxvZ0dyb3VwID0gZmxvd0xvZy5sb2dHcm91cD8ubm9kZS5kZWZhdWx0Q2hpbGQgYXMgQ2ZuTG9nR3JvdXA7XG4gIGFkZENmblN1cHByZXNzUnVsZXMoY2ZuTG9nR3JvdXAsIFtcbiAgICB7XG4gICAgICBpZDogJ1c4NCcsXG4gICAgICByZWFzb246ICdCeSBkZWZhdWx0IENsb3VkV2F0Y2hMb2dzIExvZ0dyb3VwcyBkYXRhIGlzIGVuY3J5cHRlZCB1c2luZyB0aGUgQ2xvdWRXYXRjaCBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIGtleXMgKEFXUyBNYW5hZ2VkIEtleXMpJ1xuICAgIH1cbiAgXSk7XG59XG5cbmZ1bmN0aW9uIEFkZEludGVyZmFjZUVuZHBvaW50KHNjb3BlOiBDb25zdHJ1Y3QsIHZwYzogZWMyLklWcGMsIHNlcnZpY2U6IEVuZHBvaW50RGVmaW5pdGlvbiwgaW50ZXJmYWNlVGFnOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcykge1xuICBjb25zdCBlbmRwb2ludERlZmF1bHRTZWN1cml0eUdyb3VwID0gYnVpbGRTZWN1cml0eUdyb3VwKFxuICAgIHNjb3BlLFxuICAgIGAke3Njb3BlLm5vZGUuaWR9LSR7c2VydmljZS5lbmRwb2ludE5hbWV9YCxcbiAgICB7XG4gICAgICB2cGMsXG4gICAgICBhbGxvd0FsbE91dGJvdW5kOiB0cnVlLFxuICAgIH0sXG4gICAgW3sgcGVlcjogZWMyLlBlZXIuaXB2NCh2cGMudnBjQ2lkckJsb2NrKSwgY29ubmVjdGlvbjogZWMyLlBvcnQudGNwKDQ0MykgfV0sXG4gICAgW11cbiAgKTtcblxuICB2cGMuYWRkSW50ZXJmYWNlRW5kcG9pbnQoaW50ZXJmYWNlVGFnLCB7XG4gICAgc2VydmljZTogc2VydmljZS5lbmRwb2ludEludGVyZmFjZVNlcnZpY2UgYXMgZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZSxcbiAgICBzZWN1cml0eUdyb3VwczogW2VuZHBvaW50RGVmYXVsdFNlY3VyaXR5R3JvdXBdLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gQWRkR2F0ZXdheUVuZHBvaW50KHZwYzogZWMyLklWcGMsIHNlcnZpY2U6IEVuZHBvaW50RGVmaW5pdGlvbiwgaW50ZXJmYWNlVGFnOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcykge1xuICB2cGMuYWRkR2F0ZXdheUVuZHBvaW50KGludGVyZmFjZVRhZywge1xuICAgIHNlcnZpY2U6IHNlcnZpY2UuZW5kcG9pbnRHYXRld2F5U2VydmljZSBhcyBlYzIuR2F0ZXdheVZwY0VuZHBvaW50QXdzU2VydmljZSxcbiAgfSk7XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJldHJpZXZlUHJpdmF0ZVN1Ym5ldElkcyh2cGM6IGVjMi5JVnBjKSB7XG4gIGxldCB0YXJnZXRTdWJuZXRUeXBlO1xuXG4gIGlmICh2cGMuaXNvbGF0ZWRTdWJuZXRzLmxlbmd0aCkge1xuICAgIHRhcmdldFN1Ym5ldFR5cGUgPSBlYzIuU3VibmV0VHlwZS5QUklWQVRFX0lTT0xBVEVEO1xuICB9IGVsc2UgaWYgKHZwYy5wcml2YXRlU3VibmV0cy5sZW5ndGgpIHtcbiAgICB0YXJnZXRTdWJuZXRUeXBlID0gZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUztcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIC0gTm8gaXNvbGF0ZWQgb3IgcHJpdmF0ZSBzdWJuZXRzIGF2YWlsYWJsZSBpbiBWUEMnKTtcbiAgfVxuXG4gIGNvbnN0IHN1Ym5ldFNlbGVjdG9yID0ge1xuICAgIG9uZVBlckF6OiB0cnVlLFxuICAgIHN1Ym5ldFR5cGU6IHRhcmdldFN1Ym5ldFR5cGVcbiAgfTtcblxuICByZXR1cm4gdnBjLnNlbGVjdFN1Ym5ldHMoc3VibmV0U2VsZWN0b3IpLnN1Ym5ldElkcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWcGNQcm9wc1NldCB7XG4gIHJlYWRvbmx5IGV4aXN0aW5nVnBjPzogZWMyLklWcGM7XG4gIHJlYWRvbmx5IHZwY1Byb3BzPzogZWMyLlZwY1Byb3BzO1xuICByZWFkb25seSBkZXBsb3lWcGM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ2hlY2tWcGNQcm9wcyhwcm9wc09iamVjdDogVnBjUHJvcHNTZXQgfCBhbnkpIHtcbiAgbGV0IGVycm9yTWVzc2FnZXMgPSAnJztcbiAgbGV0IGVycm9yRm91bmQgPSBmYWxzZTtcblxuICBpZiAoKHByb3BzT2JqZWN0LmRlcGxveVZwYyB8fCBwcm9wc09iamVjdC52cGNQcm9wcykgJiYgcHJvcHNPYmplY3QuZXhpc3RpbmdWcGMpIHtcbiAgICBlcnJvck1lc3NhZ2VzICs9ICdFcnJvciAtIEVpdGhlciBwcm92aWRlIGFuIGV4aXN0aW5nVnBjIG9yIHNvbWUgY29tYmluYXRpb24gb2YgZGVwbG95VnBjIGFuZCB2cGNQcm9wcywgYnV0IG5vdCBib3RoLlxcbic7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAoZXJyb3JGb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2VzKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlSXBNYXNrU2l6ZShpcEFkZHJlc3NDb3VudDogbnVtYmVyKTogbnVtYmVyIHtcbiAgLy8gVmFsaWRhdGUgaW5wdXRcbiAgaWYgKGlwQWRkcmVzc0NvdW50IDw9IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0lQIGFkZHJlc3MgY291bnQgbXVzdCBiZSBncmVhdGVyIHRoYW4gMCcpO1xuICB9XG5cbiAgLy8gQVdTIFZQQyBzdWJuZXRzIHJlc2VydmUgNSBJUCBhZGRyZXNzZXMgKG5ldHdvcmssIGJyb2FkY2FzdCwgYW5kIDMgQVdTIHJlc2VydmVkKVxuICAvLyBGb3JtdWxhOiBpcEFkZHJlc3NDb3VudCA9IDJeKDMyIC0gbWFza1NpemUpIC0gNVxuICAvLyBTb2x2aW5nIGZvciBtYXNrU2l6ZTogbWFza1NpemUgPSAzMiAtIGxvZzIoaXBBZGRyZXNzQ291bnQgKyA1KVxuXG4gIGNvbnN0IHRvdGFsQWRkcmVzc2VzTmVlZGVkID0gaXBBZGRyZXNzQ291bnQgKyA1O1xuXG4gIC8vIENhbGN1bGF0ZSB0aGUgcmVxdWlyZWQgbWFzayBzaXplXG4gIGNvbnN0IG1hc2tTaXplID0gMzIgLSBNYXRoLmNlaWwoTWF0aC5sb2cyKHRvdGFsQWRkcmVzc2VzTmVlZGVkKSk7XG5cbiAgLy8gVmFsaWRhdGUgdGhlIG1hc2sgc2l6ZSBpcyB3aXRoaW4gdmFsaWQgQ0lEUiByYW5nZSAoMTYtMjggZm9yIHN1Ym5ldHMgaW4gQVdTKVxuICBpZiAobWFza1NpemUgPCAxNikge1xuICAgIHRocm93IG5ldyBFcnJvcihgUmVxdWVzdGVkIElQIGNvdW50ICgke2lwQWRkcmVzc0NvdW50fSkgcmVxdWlyZXMgYSBtYXNrIHNpemUgc21hbGxlciB0aGFuIC8xNiwgd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBmb3IgVlBDIHN1Ym5ldHNgKTtcbiAgfVxuXG4gIGlmIChtYXNrU2l6ZSA+IDI4KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBSZXF1ZXN0ZWQgSVAgY291bnQgKCR7aXBBZGRyZXNzQ291bnR9KSByZXF1aXJlcyBhIG1hc2sgc2l6ZSBsYXJnZXIgdGhhbiAvMjgsIHdoaWNoIGlzIG5vdCBwcmFjdGljYWwgZm9yIFZQQyBzdWJuZXRzYCk7XG4gIH1cblxuICByZXR1cm4gbWFza1NpemU7XG59Il19
|
|
291
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInZwYy1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOzs7QUEyQ0gsNEJBeUJDO0FBK0lELHNEQXVCQztBQXlERCw0REFpQkM7QUFRRCxzQ0FZQztBQUVELGtEQXlCQztBQWpXRDs7O0dBR0c7QUFFSCwyQ0FBMkM7QUFHM0MsbUVBQTZEO0FBQzdELG1DQUF3RztBQUN4RyxtQ0FBbUM7QUE0Qm5DOztHQUVHO0FBQ0gsU0FBZ0IsUUFBUSxDQUFDLEtBQWdCLEVBQUUsS0FBb0IsRUFBRSxFQUFXO0lBQzFFLElBQUksS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sS0FBSyxFQUFFLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxlQUFlLEdBQWlCLEtBQUssRUFBRSxlQUFlLENBQUM7SUFFM0QsZUFBZSxHQUFHLElBQUEsd0JBQWdCLEVBQUMsZUFBZSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFFbkcsdUVBQXVFO0lBQ3ZFLCtDQUErQztJQUMvQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN2QyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxlQUFlLENBQUMsQ0FBQztJQUV2RCxnR0FBZ0c7SUFDaEcsdUVBQXVFO0lBQ3ZFLCtDQUErQztJQUMvQyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNuRCxNQUFNLE9BQU8sR0FBZ0IsR0FBRyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUV2RCwyQkFBMkIs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S0FBSyxDQUFDLHVCQUF1QixjQUFjLGdGQUFnRixDQUFDLENBQUM7SUFDekksQ0FBQztJQUVELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKlxuICogIFRoZSBmdW5jdGlvbnMgZm91bmQgaGVyZSBpbiB0aGUgY29yZSBsaWJyYXJ5IGFyZSBmb3IgaW50ZXJuYWwgdXNlIGFuZCBjYW4gYmUgY2hhbmdlZFxuICogIG9yIHJlbW92ZWQgb3V0c2lkZSBvZiBhIG1ham9yIHJlbGVhc2UuIFdlIHJlY29tbWVuZCBhZ2FpbnN0IGNhbGxpbmcgdGhlbSBkaXJlY3RseSBmcm9tIGNsaWVudCBjb2RlLlxuICovXG5cbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHsgQ2ZuTG9nR3JvdXAgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBidWlsZFNlY3VyaXR5R3JvdXAgfSBmcm9tIFwiLi9zZWN1cml0eS1ncm91cC1oZWxwZXJcIjtcbmltcG9ydCB7IGNvbnNvbGlkYXRlUHJvcHMsIGFkZENmblN1cHByZXNzUnVsZXMsIHN1cHByZXNzVnBjQ3VzdG9tZXJIYW5kbGVyUm9sZVdhcm5pbmdzIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5cbi8vIERlZmluZWQgT05DRSBpbiBvdXIgY29kZSBpbiBjb3JlIHNvbWV3aGVyZVxuLy8gRGVmaW5pdGVseSBjb2RlIHRvIGJlIGxldmVyYWdlZCB3aXRob3V0IG5lY2Vzc2FyaWx5IHVuZGVyc3RhbmRpbmcgaXRcbmV4cG9ydCB0eXBlIFByb3BzQnVpbGRlcjxUPiA9IHtcbiAgLXJlYWRvbmx5IFtQIGluIGtleW9mIFRdPzogVFtQXTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRWcGNQcm9wcyB7XG4gIC8qKlxuICAgKiBFeGlzdGluZyBpbnN0YW5jZSBvZiBhIFZQQywgaWYgdGhpcyBpcyBzZXQgdGhlbiB0aGUgYWxsIFByb3BzIGFyZSBpZ25vcmVkXG4gICAqL1xuICByZWFkb25seSBleGlzdGluZ1ZwYz86IGVjMi5JVnBjO1xuICAvKipcbiAgICogT25lIG9mIHRoZSBkZWZhdWx0IFZQQyBjb25maWd1cmF0aW9ucyBhdmFpbGFibGUgaW4gdnBjLWRlZmF1bHRzXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0VnBjUHJvcHM6IGVjMi5WcGNQcm9wcztcbiAgLyoqXG4gICAqIFVzZXIgcHJvdmlkZWQgcHJvcHMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcHJvcHMgZm9yIHRoZSBWUEMuXG4gICAqL1xuICByZWFkb25seSB1c2VyVnBjUHJvcHM/OiBlYzIuVnBjUHJvcHM7XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3Qgc3BlY2lmaWVkIHByb3BzIHRoYXQgb3ZlcnJpZGUgYm90aCB0aGUgZGVmYXVsdCBwcm9wc1xuICAgKiBhbmQgdXNlciBwcm9wcyBmb3IgdGhlIFZQQy5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnN0cnVjdFZwY1Byb3BzPzogZWMyLlZwY1Byb3BzO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFZwYyhzY29wZTogQ29uc3RydWN0LCBwcm9wczogQnVpbGRWcGNQcm9wcywgaWQ/OiBzdHJpbmcpOiBlYzIuSVZwYyB7XG4gIGlmIChwcm9wcz8uZXhpc3RpbmdWcGMpIHtcbiAgICByZXR1cm4gcHJvcHM/LmV4aXN0aW5nVnBjO1xuICB9XG5cbiAgbGV0IGN1bXVsYXRpdmVQcm9wczogZWMyLlZwY1Byb3BzID0gcHJvcHM/LmRlZmF1bHRWcGNQcm9wcztcblxuICBjdW11bGF0aXZlUHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKGN1bXVsYXRpdmVQcm9wcywgcHJvcHM/LnVzZXJWcGNQcm9wcywgcHJvcHM/LmNvbnN0cnVjdFZwY1Byb3BzKTtcblxuICAvLyBTdGF5IGNvbXBhdGlibGUgd2l0aCBWUENzIGNyZWF0ZWQgYmVmb3JlIElEIHdhcyBhZGRlZCBhcyBhbiBhcmd1bWVudFxuICAvLyBUT0RPOiB3ZSBuZWVkIGEgdW5pdCB0ZXN0IGZvciBhbiBpZCBhcmd1bWVudFxuICBjb25zdCB2cGNJZCA9IGlkID8gYHZwYy0ke2lkfWAgOiBcIlZwY1wiO1xuICBjb25zdCB2cGMgPSBuZXcgZWMyLlZwYyhzY29wZSwgdnBjSWQsIGN1bXVsYXRpdmVQcm9wcyk7XG5cbiAgLy8gQWRkIFZQQyBGbG93TG9ncyB3aXRoIHRoZSBkZWZhdWx0IHNldHRpbmcgb2YgdHJhZmZpY1R5cGU6QUxMIGFuZCBkZXN0aW5hdGlvbjogQ2xvdWRXYXRjaCBMb2dzXG4gIC8vIFN0YXkgY29tcGF0aWJsZSB3aXRoIFZQQ3MgY3JlYXRlZCBiZWZvcmUgSUQgd2FzIGFkZGVkIGFzIGFuIGFyZ3VtZW50XG4gIC8vIFRPRE86IHdlIG5lZWQgYSB1bml0IHRlc3QgZm9yIGFuIGlkIGFyZ3VtZW50XG4gIGNvbnN0IGZsb3dMb2dJZCA9IGlkID8gYGZsb3dsb2ctJHtpZH1gIDogXCJGbG93TG9nXCI7XG4gIGNvbnN0IGZsb3dMb2c6IGVjMi5GbG93TG9nID0gdnBjLmFkZEZsb3dMb2coZmxvd0xvZ0lkKTtcblxuICBTdXBwcmVzc01hcFB1YmxpY0lwV2FybmluZ3ModnBjKTtcbiAgU3VwcHJlc3NFbmNyeXB0ZWRMb2dXYXJuaW5ncyhmbG93TG9nKTtcbiAgc3VwcHJlc3NWcGNDdXN0b21lckhhbmRsZXJSb2xlV2FybmluZ3MoY2RrLlN0YWNrLm9mKHNjb3BlKSk7XG5cbiAgcmV0dXJuIHZwYztcbn1cblxuZXhwb3J0IGVudW0gU2VydmljZUVuZHBvaW50VHlwZXMge1xuICBEWU5BTU9EQiA9IFwiRERCXCIsXG4gIFNOUyA9IFwiU05TXCIsXG4gIFNRUyA9IFwiU1FTXCIsXG4gIFMzID0gXCJTM1wiLFxuICBTVEVQX0ZVTkNUSU9OUyA9IFwiU1RFUF9GVU5DVElPTlNcIixcbiAgU0FHRU1BS0VSX1JVTlRJTUUgPSBcIlNBR0VNQUtFUl9SVU5USU1FXCIsXG4gIFNFQ1JFVFNfTUFOQUdFUiA9IFwiU0VDUkVUU19NQU5BR0VSXCIsXG4gIFNTTSA9IFwiU1NNXCIsXG4gIEVDUl9BUEkgPSBcIkVDUl9BUElcIixcbiAgRUNSX0RLUiA9IFwiRUNSX0RLUlwiLFxuICBFVkVOVFMgPSBcIkNMT1VEV0FUQ0hfRVZFTlRTXCIsXG4gIEtJTkVTSVNfRklSRUhPU0UgPSBcIktJTkVTSVNfRklSRUhPU0VcIixcbiAgS0lORVNJU19TVFJFQU1TID0gXCJLSU5FU0lTX1NUUkVBTVNcIixcbiAgQkVEUk9DSyA9IFwiQkVEUk9DS1wiLFxuICBCRURST0NLX1JVTlRJTUUgPSBcIkJFRFJPQ0tfUlVOVElNRVwiLFxuICBLRU5EUkEgPSBcIktFTkRSQVwiLFxuICBUUkFOU0NSSUJFID0gXCJUUkFOU0NSSUJFXCIsXG4gIFRSQU5TTEFURSA9IFwiVFJBTlNMQVRFXCIsXG4gIFRFWFRSQUNUID0gXCJURVhUUkFDVFwiLFxuICBQT0xMWSA9IFwiUE9MTFlcIlxufVxuXG5lbnVtIEVuZHBvaW50VHlwZXMge1xuICBHQVRFV0FZID0gXCJHYXRld2F5XCIsXG4gIElOVEVSRkFDRSA9IFwiSW50ZXJmYWNlXCIsXG59XG5cbmludGVyZmFjZSBFbmRwb2ludERlZmluaXRpb24ge1xuICBlbmRwb2ludE5hbWU6IFNlcnZpY2VFbmRwb2ludFR5cGVzO1xuICBlbmRwb2ludFR5cGU6IEVuZHBvaW50VHlwZXM7XG4gIGVuZHBvaW50R2F0ZXdheVNlcnZpY2U/OiBlYzIuR2F0ZXdheVZwY0VuZHBvaW50QXdzU2VydmljZTtcbiAgZW5kcG9pbnRJbnRlcmZhY2VTZXJ2aWNlPzogZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZTtcbn1cblxuY29uc3QgZW5kcG9pbnRTZXR0aW5nczogRW5kcG9pbnREZWZpbml0aW9uW10gPSBbXG4gIHtcbiAgICBlbmRwb2ludE5hbWU6IFNlcnZpY2VFbmRwb2ludFR5cGVzLkRZTkFNT0RCLFxuICAgIGVuZHBvaW50VHlwZTogRW5kcG9pbnRUeXBlcy5HQVRFV0FZLFxuICAgIGVuZHBvaW50R2F0ZXdheVNlcnZpY2U6IGVjMi5HYXRld2F5VnBjRW5kcG9pbnRBd3NTZXJ2aWNlLkRZTkFNT0RCLFxuICB9LFxuICB7XG4gICAgZW5kcG9pbnROYW1lOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcy5TMyxcbiAgICBlbmRwb2ludFR5cGU6IEVuZHBvaW50VHlwZXMuR0FURVdBWSxcbiAgICBlbmRwb2ludEdhdGV3YXlTZXJ2aWNlOiBlYzIuR2F0ZXdheVZwY0VuZHBvaW50QXdzU2VydmljZS5TMyxcbiAgfSxcbiAge1xuICAgIGVuZHBvaW50TmFtZTogU2VydmljZUVuZHBvaW50VHlwZXMuU1RFUF9GVU5DVElPTlMsXG4gICAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGVzLklOVEVSRkFDRSxcbiAgICBlbmRwb2ludEludGVyZmFjZVNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuU1RFUF9GVU5DVElPTlMsXG4gIH0sXG4gIHtcbiAgICBlbmRwb2ludE5hbWU6IFNlcnZpY2VFbmRwb2ludFR5cGVzLlNOUyxcbiAgICBlbmRwb2ludFR5cGU6IEVuZHBvaW50VHlwZXMuSU5URVJGQUNFLFxuICAgIGVuZHBvaW50SW50ZXJmYWNlU2VydmljZTogZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5TTlMsXG4gIH0sXG4gIHtcbiAgICBlbmRwb2ludE5hbWU6IFNlcnZpY2VFbmRwb2ludFR5cGVzLlNRUyxcbiAgICBlbmRwb2ludFR5cGU6IEVuZHBvaW50VHlwZXMuSU5URVJGQUNFLFxuICAgIGVuZHBvaW50SW50ZXJmYWNlU2VydmljZTogZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5TUVMsXG4gIH0sXG4gIHtcbiAgICBlbmRwb2ludE5hbWU6IFNlcnZpY2VFbmRwb2ludFR5cGVzLlNBR0VNQUtFUl9SVU5USU1FLFxuICAgIGVuZHBvaW50VHlwZTogRW5kcG9pbnRUeXBlcy5JTlRFUkZBQ0UsXG4gICAgZW5kcG9pbnRJbnRlcmZhY2VTZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLlNBR0VNQUtFUl9SVU5USU1FLFxuICB9LFxuICB7XG4gICAgZW5kcG9pbnROYW1lOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcy5TRUNSRVRTX01BTkFHRVIsXG4gICAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGVzLklOVEVSRkFDRSxcbiAgICBlbmRwb2ludEludGVyZmFjZVNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuU0VDUkVUU19NQU5BR0VSLFxuICB9LFxuICB7XG4gICAgZW5kcG9pbnROYW1lOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcy5TU00sXG4gICAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGVzLklOVEVSRkFDRSxcbiAgICBlbmRwb2ludEludGVyZmFjZVNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuU1NNLFxuICB9LFxuICB7XG4gICAgZW5kcG9pbnROYW1lOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcy5FQ1JfQVBJLFxuICAgIGVuZHBvaW50VHlwZTogRW5kcG9pbnRUeXBlcy5JTlRFUkZBQ0UsXG4gICAgZW5kcG9pbnRJbnRlcmZhY2VTZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLkVDUlxuICB9LFxuICB7XG4gICAgZW5kcG9pbnROYW1lOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcy5FQ1JfREtSLFxuICAgIGVuZHBvaW50VHlwZTogRW5kcG9pbnRUeXBlcy5JTlRFUkZBQ0UsXG4gICAgZW5kcG9pbnRJbnRlcmZhY2VTZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLkVDUl9ET0NLRVJcbiAgfSxcbiAge1xuICAgIGVuZHBvaW50TmFtZTogU2VydmljZUVuZHBvaW50VHlwZXMuRVZFTlRTLFxuICAgIGVuZHBvaW50VHlwZTogRW5kcG9pbnRUeXBlcy5JTlRFUkZBQ0UsXG4gICAgZW5kcG9pbnRJbnRlcmZhY2VTZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLkNMT1VEV0FUQ0hfRVZFTlRTXG4gIH0sXG4gIHtcbiAgICBlbmRwb2ludE5hbWU6IFNlcnZpY2VFbmRwb2ludFR5cGVzLktJTkVTSVNfRklSRUhPU0UsXG4gICAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGVzLklOVEVSRkFDRSxcbiAgICBlbmRwb2ludEludGVyZmFjZVNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuS0lORVNJU19GSVJFSE9TRVxuICB9LFxuICB7XG4gICAgZW5kcG9pbnROYW1lOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcy5LSU5FU0lTX1NUUkVBTVMsXG4gICAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGVzLklOVEVSRkFDRSxcbiAgICBlbmRwb2ludEludGVyZmFjZVNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuS0lORVNJU19TVFJFQU1TXG4gIH0sXG4gIHtcbiAgICBlbmRwb2ludE5hbWU6IFNlcnZpY2VFbmRwb2ludFR5cGVzLktFTkRSQSxcbiAgICBlbmRwb2ludFR5cGU6IEVuZHBvaW50VHlwZXMuSU5URVJGQUNFLFxuICAgIGVuZHBvaW50SW50ZXJmYWNlU2VydmljZTogZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5LRU5EUkFcbiAgfSxcbiAge1xuICAgIGVuZHBvaW50TmFtZTogU2VydmljZUVuZHBvaW50VHlwZXMuQkVEUk9DSyxcbiAgICBlbmRwb2ludFR5cGU6IEVuZHBvaW50VHlwZXMuSU5URVJGQUNFLFxuICAgIGVuZHBvaW50SW50ZXJmYWNlU2VydmljZTogZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5CRURST0NLXG4gIH0sXG4gIHtcbiAgICBlbmRwb2ludE5hbWU6IFNlcnZpY2VFbmRwb2ludFR5cGVzLkJFRFJPQ0tfUlVOVElNRSxcbiAgICBlbmRwb2ludFR5cGU6IEVuZHBvaW50VHlwZXMuSU5URVJGQUNFLFxuICAgIGVuZHBvaW50SW50ZXJmYWNlU2VydmljZTogZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5CRURST0NLX1JVTlRJTUVcbiAgfSxcbiAge1xuICAgIGVuZHBvaW50TmFtZTogU2VydmljZUVuZHBvaW50VHlwZXMuVFJBTlNDUklCRSxcbiAgICBlbmRwb2ludFR5cGU6IEVuZHBvaW50VHlwZXMuSU5URVJGQUNFLFxuICAgIGVuZHBvaW50SW50ZXJmYWNlU2VydmljZTogZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5UUkFOU0NSSUJFXG4gIH0sXG4gIHtcbiAgICBlbmRwb2ludE5hbWU6IFNlcnZpY2VFbmRwb2ludFR5cGVzLlRSQU5TTEFURSxcbiAgICBlbmRwb2ludFR5cGU6IEVuZHBvaW50VHlwZXMuSU5URVJGQUNFLFxuICAgIGVuZHBvaW50SW50ZXJmYWNlU2VydmljZTogZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5UUkFOU0xBVEVcbiAgfSxcbiAge1xuICAgIGVuZHBvaW50TmFtZTogU2VydmljZUVuZHBvaW50VHlwZXMuVEVYVFJBQ1QsXG4gICAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGVzLklOVEVSRkFDRSxcbiAgICBlbmRwb2ludEludGVyZmFjZVNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuVEVYVFJBQ1RcbiAgfSxcbiAge1xuICAgIGVuZHBvaW50TmFtZTogU2VydmljZUVuZHBvaW50VHlwZXMuUE9MTFksXG4gICAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGVzLklOVEVSRkFDRSxcbiAgICBlbmRwb2ludEludGVyZmFjZVNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuUE9MTFlcbiAgfVxuXTtcblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQWRkQXdzU2VydmljZUVuZHBvaW50KFxuICBzY29wZTogQ29uc3RydWN0LFxuICB2cGM6IGVjMi5JVnBjLFxuICBpbnRlcmZhY2VUYWc6IFNlcnZpY2VFbmRwb2ludFR5cGVzXG4pIHtcbiAgaWYgKENoZWNrSWZFbmRwb2ludEFscmVhZHlFeGlzdHModnBjLCBpbnRlcmZhY2VUYWcpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgc2VydmljZSA9IGVuZHBvaW50U2V0dGluZ3MuZmluZChcbiAgICAoZW5kcG9pbnQpID0+IGVuZHBvaW50LmVuZHBvaW50TmFtZSA9PT0gaW50ZXJmYWNlVGFnXG4gICk7XG5cbiAgaWYgKCFzZXJ2aWNlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgU2VydmljZSBzZW50IHRvIEFkZFNlcnZpY2VFbmRwb2ludFwiKTtcbiAgfVxuXG4gIGlmIChzZXJ2aWNlLmVuZHBvaW50VHlwZSA9PT0gRW5kcG9pbnRUeXBlcy5HQVRFV0FZKSB7XG4gICAgQWRkR2F0ZXdheUVuZHBvaW50KHZwYywgc2VydmljZSwgaW50ZXJmYWNlVGFnKTtcbiAgfVxuICBpZiAoc2VydmljZS5lbmRwb2ludFR5cGUgPT09IEVuZHBvaW50VHlwZXMuSU5URVJGQUNFKSB7XG4gICAgQWRkSW50ZXJmYWNlRW5kcG9pbnQoc2NvcGUsIHZwYywgc2VydmljZSwgaW50ZXJmYWNlVGFnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBDaGVja0lmRW5kcG9pbnRBbHJlYWR5RXhpc3RzKHZwYzogZWMyLklWcGMsIGludGVyZmFjZVRhZzogU2VydmljZUVuZHBvaW50VHlwZXMpOiBib29sZWFuIHtcbiAgcmV0dXJuIHZwYy5ub2RlLmNoaWxkcmVuLnNvbWUoKGNoaWxkKSA9PiBjaGlsZC5ub2RlLmlkID09PSBpbnRlcmZhY2VUYWcpO1xufVxuXG5mdW5jdGlvbiBTdXBwcmVzc01hcFB1YmxpY0lwV2FybmluZ3ModnBjOiBlYzIuVnBjKSB7XG4gIC8vIEFkZCBDZm4gTmFnIHN1cHByZXNzaW9uIGZvciBQVUJMSUMgc3VibmV0cyB0byBzdXBwcmVzcyBXQVJOIFczMzogRUMyIFN1Ym5ldCBzaG91bGQgbm90IGhhdmUgTWFwUHVibGljSXBPbkxhdW5jaCBzZXQgdG8gdHJ1ZVxuICB2cGMucHVibGljU3VibmV0cy5mb3JFYWNoKChzdWJuZXQpID0+IHtcbiAgICBjb25zdCBjZm5TdWJuZXQgPSBzdWJuZXQubm9kZS5kZWZhdWx0Q2hpbGQgYXMgZWMyLkNmblN1Ym5ldDtcbiAgICBhZGRDZm5TdXBwcmVzc1J1bGVzKGNmblN1Ym5ldCwgW1xuICAgICAge1xuICAgICAgICBpZDogJ1czMycsXG4gICAgICAgIHJlYXNvbjogJ0FsbG93IFB1YmxpYyBTdWJuZXRzIHRvIGhhdmUgTWFwUHVibGljSXBPbkxhdW5jaCBzZXQgdG8gdHJ1ZSdcbiAgICAgIH1cbiAgICBdKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIFN1cHByZXNzRW5jcnlwdGVkTG9nV2FybmluZ3MoZmxvd0xvZzogZWMyLkZsb3dMb2cpIHtcbiAgLy8gQWRkIENmbiBOYWcgc3VwcHJlc3Npb24gZm9yIENsb3VkV2F0Y2hMb2dzIExvZ0dyb3VwcyBkYXRhIGlzIGVuY3J5cHRlZFxuICBjb25zdCBjZm5Mb2dHcm91cDogQ2ZuTG9nR3JvdXAgPSBmbG93TG9nLmxvZ0dyb3VwPy5ub2RlLmRlZmF1bHRDaGlsZCBhcyBDZm5Mb2dHcm91cDtcbiAgYWRkQ2ZuU3VwcHJlc3NSdWxlcyhjZm5Mb2dHcm91cCwgW1xuICAgIHtcbiAgICAgIGlkOiAnVzg0JyxcbiAgICAgIHJlYXNvbjogJ0J5IGRlZmF1bHQgQ2xvdWRXYXRjaExvZ3MgTG9nR3JvdXBzIGRhdGEgaXMgZW5jcnlwdGVkIHVzaW5nIHRoZSBDbG91ZFdhdGNoIHNlcnZlci1zaWRlIGVuY3J5cHRpb24ga2V5cyAoQVdTIE1hbmFnZWQgS2V5cyknXG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gQWRkSW50ZXJmYWNlRW5kcG9pbnQoc2NvcGU6IENvbnN0cnVjdCwgdnBjOiBlYzIuSVZwYywgc2VydmljZTogRW5kcG9pbnREZWZpbml0aW9uLCBpbnRlcmZhY2VUYWc6IFNlcnZpY2VFbmRwb2ludFR5cGVzKSB7XG4gIGNvbnN0IGVuZHBvaW50RGVmYXVsdFNlY3VyaXR5R3JvdXAgPSBidWlsZFNlY3VyaXR5R3JvdXAoXG4gICAgc2NvcGUsXG4gICAgYCR7c2NvcGUubm9kZS5pZH0tJHtzZXJ2aWNlLmVuZHBvaW50TmFtZX1gLFxuICAgIHtcbiAgICAgIHZwYyxcbiAgICAgIGFsbG93QWxsT3V0Ym91bmQ6IHRydWUsXG4gICAgfSxcbiAgICBbeyBwZWVyOiBlYzIuUGVlci5pcHY0KHZwYy52cGNDaWRyQmxvY2spLCBjb25uZWN0aW9uOiBlYzIuUG9ydC50Y3AoNDQzKSB9XSxcbiAgICBbXVxuICApO1xuXG4gIHZwYy5hZGRJbnRlcmZhY2VFbmRwb2ludChpbnRlcmZhY2VUYWcsIHtcbiAgICBzZXJ2aWNlOiBzZXJ2aWNlLmVuZHBvaW50SW50ZXJmYWNlU2VydmljZSBhcyBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLFxuICAgIHNlY3VyaXR5R3JvdXBzOiBbZW5kcG9pbnREZWZhdWx0U2VjdXJpdHlHcm91cF0sXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBBZGRHYXRld2F5RW5kcG9pbnQodnBjOiBlYzIuSVZwYywgc2VydmljZTogRW5kcG9pbnREZWZpbml0aW9uLCBpbnRlcmZhY2VUYWc6IFNlcnZpY2VFbmRwb2ludFR5cGVzKSB7XG4gIHZwYy5hZGRHYXRld2F5RW5kcG9pbnQoaW50ZXJmYWNlVGFnLCB7XG4gICAgc2VydmljZTogc2VydmljZS5lbmRwb2ludEdhdGV3YXlTZXJ2aWNlIGFzIGVjMi5HYXRld2F5VnBjRW5kcG9pbnRBd3NTZXJ2aWNlLFxuICB9KTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmV0cmlldmVQcml2YXRlU3VibmV0SWRzKHZwYzogZWMyLklWcGMpIHtcbiAgbGV0IHRhcmdldFN1Ym5ldFR5cGU7XG5cbiAgaWYgKHZwYy5pc29sYXRlZFN1Ym5ldHMubGVuZ3RoKSB7XG4gICAgdGFyZ2V0U3VibmV0VHlwZSA9IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURUQ7XG4gIH0gZWxzZSBpZiAodnBjLnByaXZhdGVTdWJuZXRzLmxlbmd0aCkge1xuICAgIHRhcmdldFN1Ym5ldFR5cGUgPSBlYzIuU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignRXJyb3IgLSBObyBpc29sYXRlZCBvciBwcml2YXRlIHN1Ym5ldHMgYXZhaWxhYmxlIGluIFZQQycpO1xuICB9XG5cbiAgY29uc3Qgc3VibmV0U2VsZWN0b3IgPSB7XG4gICAgb25lUGVyQXo6IHRydWUsXG4gICAgc3VibmV0VHlwZTogdGFyZ2V0U3VibmV0VHlwZVxuICB9O1xuXG4gIHJldHVybiB2cGMuc2VsZWN0U3VibmV0cyhzdWJuZXRTZWxlY3Rvcikuc3VibmV0SWRzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZwY1Byb3BzU2V0IHtcbiAgcmVhZG9ubHkgZXhpc3RpbmdWcGM/OiBlYzIuSVZwYztcbiAgcmVhZG9ubHkgdnBjUHJvcHM/OiBlYzIuVnBjUHJvcHM7XG4gIHJlYWRvbmx5IGRlcGxveVZwYz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDaGVja1ZwY1Byb3BzKHByb3BzT2JqZWN0OiBWcGNQcm9wc1NldCB8IGFueSkge1xuICBsZXQgZXJyb3JNZXNzYWdlcyA9ICcnO1xuICBsZXQgZXJyb3JGb3VuZCA9IGZhbHNlO1xuXG4gIGlmICgocHJvcHNPYmplY3QuZGVwbG95VnBjIHx8IHByb3BzT2JqZWN0LnZwY1Byb3BzKSAmJiBwcm9wc09iamVjdC5leGlzdGluZ1ZwYykge1xuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gRWl0aGVyIHByb3ZpZGUgYW4gZXhpc3RpbmdWcGMgb3Igc29tZSBjb21iaW5hdGlvbiBvZiBkZXBsb3lWcGMgYW5kIHZwY1Byb3BzLCBidXQgbm90IGJvdGguXFxuJztcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChlcnJvckZvdW5kKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZXMpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVJcE1hc2tTaXplKGlwQWRkcmVzc0NvdW50OiBudW1iZXIpOiBudW1iZXIge1xuICAvLyBWYWxpZGF0ZSBpbnB1dFxuICBpZiAoaXBBZGRyZXNzQ291bnQgPD0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSVAgYWRkcmVzcyBjb3VudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwJyk7XG4gIH1cblxuICAvLyBBV1MgVlBDIHN1Ym5ldHMgcmVzZXJ2ZSA1IElQIGFkZHJlc3NlcyAobmV0d29yaywgYnJvYWRjYXN0LCBhbmQgMyBBV1MgcmVzZXJ2ZWQpXG4gIC8vIEZvcm11bGE6IGlwQWRkcmVzc0NvdW50ID0gMl4oMzIgLSBtYXNrU2l6ZSkgLSA1XG4gIC8vIFNvbHZpbmcgZm9yIG1hc2tTaXplOiBtYXNrU2l6ZSA9IDMyIC0gbG9nMihpcEFkZHJlc3NDb3VudCArIDUpXG5cbiAgY29uc3QgdG90YWxBZGRyZXNzZXNOZWVkZWQgPSBpcEFkZHJlc3NDb3VudCArIDU7XG5cbiAgLy8gQ2FsY3VsYXRlIHRoZSByZXF1aXJlZCBtYXNrIHNpemVcbiAgY29uc3QgbWFza1NpemUgPSAzMiAtIE1hdGguY2VpbChNYXRoLmxvZzIodG90YWxBZGRyZXNzZXNOZWVkZWQpKTtcblxuICAvLyBWYWxpZGF0ZSB0aGUgbWFzayBzaXplIGlzIHdpdGhpbiB2YWxpZCBDSURSIHJhbmdlICgxNi0yOCBmb3Igc3VibmV0cyBpbiBBV1MpXG4gIGlmIChtYXNrU2l6ZSA8IDE2KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBSZXF1ZXN0ZWQgSVAgY291bnQgKCR7aXBBZGRyZXNzQ291bnR9KSByZXF1aXJlcyBhIG1hc2sgc2l6ZSBzbWFsbGVyIHRoYW4gLzE2LCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGZvciBWUEMgc3VibmV0c2ApO1xuICB9XG5cbiAgaWYgKG1hc2tTaXplID4gMjgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFJlcXVlc3RlZCBJUCBjb3VudCAoJHtpcEFkZHJlc3NDb3VudH0pIHJlcXVpcmVzIGEgbWFzayBzaXplIGxhcmdlciB0aGFuIC8yOCwgd2hpY2ggaXMgbm90IHByYWN0aWNhbCBmb3IgVlBDIHN1Ym5ldHNgKTtcbiAgfVxuXG4gIHJldHVybiBtYXNrU2l6ZTtcbn0iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-solutions-constructs/core",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.99.0",
|
|
4
4
|
"description": "Core CDK Construct for patterns library",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.ts",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"@types/jest": "^27.4.0",
|
|
68
68
|
"@types/node": "^10.3.0",
|
|
69
69
|
"constructs": "^10.0.0",
|
|
70
|
-
"aws-cdk-lib": "2.
|
|
70
|
+
"aws-cdk-lib": "2.238.0"
|
|
71
71
|
},
|
|
72
72
|
"jest": {
|
|
73
73
|
"moduleFileExtensions": [
|
|
@@ -90,6 +90,6 @@
|
|
|
90
90
|
],
|
|
91
91
|
"peerDependencies": {
|
|
92
92
|
"constructs": "^10.0.0",
|
|
93
|
-
"aws-cdk-lib": "^2.
|
|
93
|
+
"aws-cdk-lib": "^2.238.0"
|
|
94
94
|
}
|
|
95
95
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
|
|
5
|
+
* with the License. A copy of the License is located at
|
|
6
|
+
*
|
|
7
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
|
|
10
|
+
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
|
|
11
|
+
* and limitations under the License.
|
|
12
|
+
*/
|
|
13
|
+
export {};
|