@aws-solutions-constructs/core 2.97.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 +1378 -427
- package/index.d.ts +2 -0
- package/index.js +3 -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/textract-helper.d.ts +63 -0
- package/lib/textract-helper.js +220 -0
- package/lib/vpc-helper.d.ts +3 -1
- package/lib/vpc-helper.js +13 -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/textract-helper.test.d.ts +13 -0
- package/test/textract-helper.test.js +857 -0
- package/test/vpc-helper.test.js +28 -1
|
@@ -0,0 +1,220 @@
|
|
|
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.ConfigureTextractSupport = ConfigureTextractSupport;
|
|
16
|
+
exports.CheckTextractProps = CheckTextractProps;
|
|
17
|
+
exports.CheckTextractSnsProps = CheckTextractSnsProps;
|
|
18
|
+
const iam = require("aws-cdk-lib/aws-iam");
|
|
19
|
+
const s3_bucket_helper_1 = require("./s3-bucket-helper");
|
|
20
|
+
const sns_helper_1 = require("./sns-helper");
|
|
21
|
+
const utils_1 = require("./utils");
|
|
22
|
+
const syncPermissions = [
|
|
23
|
+
'textract:DetectDocumentText',
|
|
24
|
+
'textract:AnalyzeDocument',
|
|
25
|
+
'textract:AnalyzeExpense',
|
|
26
|
+
'textract:AnalyzeID'
|
|
27
|
+
];
|
|
28
|
+
const asyncPermissions = [
|
|
29
|
+
'textract:StartDocumentTextDetection',
|
|
30
|
+
'textract:GetDocumentTextDetection',
|
|
31
|
+
'textract:StartDocumentAnalysis',
|
|
32
|
+
'textract:GetDocumentAnalysis',
|
|
33
|
+
'textract:StartExpenseAnalysis',
|
|
34
|
+
'textract:GetExpenseAnalysis',
|
|
35
|
+
'textract:StartLendingAnalysis',
|
|
36
|
+
'textract:GetLendingAnalysis'
|
|
37
|
+
];
|
|
38
|
+
function ConfigureTextractSupport(scope, id, props) {
|
|
39
|
+
let configuration = {
|
|
40
|
+
lambdaIamActionsRequired: [...syncPermissions],
|
|
41
|
+
};
|
|
42
|
+
if (props.asyncJobs) {
|
|
43
|
+
const buildTopicResponse = (0, sns_helper_1.buildTopic)(scope, id, {
|
|
44
|
+
existingTopicObj: props.existingNotificationTopicObj,
|
|
45
|
+
existingTopicEncryptionKey: props.existingNotificationTopicEncryptionKey,
|
|
46
|
+
topicProps: props.notificationTopicProps,
|
|
47
|
+
enableEncryptionWithCustomerManagedKey: props.enableNotificationTopicEncryptionWithCustomerManagedKey,
|
|
48
|
+
encryptionKey: props.notificationTopicEncryptionKey,
|
|
49
|
+
encryptionKeyProps: props.notificationTopicEncryptionKeyProps
|
|
50
|
+
});
|
|
51
|
+
// Setup notification topic
|
|
52
|
+
configuration = (0, utils_1.overrideProps)(configuration, {
|
|
53
|
+
snsNotificationTopic: buildTopicResponse.topic,
|
|
54
|
+
});
|
|
55
|
+
if (buildTopicResponse.key) {
|
|
56
|
+
configuration = (0, utils_1.overrideProps)(configuration, { notificationTopicEncryptionKey: buildTopicResponse.key });
|
|
57
|
+
}
|
|
58
|
+
// Setup source S3 Bucket
|
|
59
|
+
if (props.existingSourceBucketObj) {
|
|
60
|
+
configuration = (0, utils_1.overrideProps)(configuration, {
|
|
61
|
+
sourceBucket: {
|
|
62
|
+
bucketInterface: props.existingSourceBucketObj
|
|
63
|
+
}
|
|
64
|
+
}, false);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
const buildSourceBucketResponse = (0, s3_bucket_helper_1.buildS3Bucket)(scope, {
|
|
68
|
+
bucketProps: props.sourceBucketProps,
|
|
69
|
+
loggingBucketProps: props.sourceLoggingBucketProps,
|
|
70
|
+
logS3AccessLogs: props.logSourceS3AccessLogs
|
|
71
|
+
}, `${id}-source-bucket`);
|
|
72
|
+
configuration = (0, utils_1.overrideProps)(configuration, {
|
|
73
|
+
sourceBucket: {
|
|
74
|
+
bucket: buildSourceBucketResponse.bucket,
|
|
75
|
+
loggingBucket: buildSourceBucketResponse.loggingBucket,
|
|
76
|
+
bucketInterface: buildSourceBucketResponse.bucket,
|
|
77
|
+
}
|
|
78
|
+
}, false);
|
|
79
|
+
}
|
|
80
|
+
if (props.createCustomerManagedOutputBucket !== false) {
|
|
81
|
+
// Setup destination S3 Bucket
|
|
82
|
+
if (props.useSameBucket) {
|
|
83
|
+
configuration = (0, utils_1.overrideProps)(configuration, {
|
|
84
|
+
destinationBucket: {
|
|
85
|
+
bucketInterface: configuration.sourceBucket?.bucketInterface,
|
|
86
|
+
bucket: configuration.sourceBucket?.bucket,
|
|
87
|
+
loggingBucket: configuration.sourceBucket?.loggingBucket,
|
|
88
|
+
}
|
|
89
|
+
}, false);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
if (props.existingDestinationBucketObj) {
|
|
93
|
+
configuration = (0, utils_1.overrideProps)(configuration, {
|
|
94
|
+
destinationBucket: {
|
|
95
|
+
bucketInterface: props.existingDestinationBucketObj
|
|
96
|
+
}
|
|
97
|
+
}, false);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
const buildDestinationBucketResponse = (0, s3_bucket_helper_1.buildS3Bucket)(scope, {
|
|
101
|
+
bucketProps: props.destinationBucketProps,
|
|
102
|
+
loggingBucketProps: props.destinationLoggingBucketProps,
|
|
103
|
+
logS3AccessLogs: props.logDestinationS3AccessLogs
|
|
104
|
+
}, `${id}-destination-bucket`);
|
|
105
|
+
configuration = (0, utils_1.overrideProps)(configuration, {
|
|
106
|
+
destinationBucket: {
|
|
107
|
+
bucket: buildDestinationBucketResponse.bucket,
|
|
108
|
+
loggingBucket: buildDestinationBucketResponse.loggingBucket,
|
|
109
|
+
bucketInterface: buildDestinationBucketResponse.bucket,
|
|
110
|
+
}
|
|
111
|
+
}, false);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// Set up role that is sent to the Textract service
|
|
116
|
+
const textractServiceRole = new iam.Role(scope, `${id}-textract-service-role`, {
|
|
117
|
+
assumedBy: new iam.ServicePrincipal('textract.amazonaws.com'),
|
|
118
|
+
});
|
|
119
|
+
configuration.snsNotificationTopic.grantPublish(textractServiceRole);
|
|
120
|
+
configuration = (0, utils_1.overrideProps)(configuration, {
|
|
121
|
+
textractRole: textractServiceRole
|
|
122
|
+
}, false);
|
|
123
|
+
// Give the Lambda function additional permissions
|
|
124
|
+
asyncPermissions.forEach((permission) => {
|
|
125
|
+
configuration.lambdaIamActionsRequired.push(permission);
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
return configuration;
|
|
129
|
+
}
|
|
130
|
+
function CheckTextractProps(props) {
|
|
131
|
+
let errorMessages = '';
|
|
132
|
+
let errorFound = false;
|
|
133
|
+
if (props.asyncJobs) {
|
|
134
|
+
// Check source bucket props
|
|
135
|
+
const sourceS3Props = {
|
|
136
|
+
existingBucketObj: props.existingSourceBucketObj,
|
|
137
|
+
bucketProps: props.sourceBucketProps,
|
|
138
|
+
loggingBucketProps: props.sourceLoggingBucketProps,
|
|
139
|
+
logS3AccessLogs: props.logSourceS3AccessLogs
|
|
140
|
+
};
|
|
141
|
+
(0, s3_bucket_helper_1.CheckS3Props)(sourceS3Props);
|
|
142
|
+
// Check destination bucket props (only if not using same bucket)
|
|
143
|
+
if (!props.useSameBucket) {
|
|
144
|
+
const destinationS3Props = {
|
|
145
|
+
existingBucketObj: props.existingDestinationBucketObj,
|
|
146
|
+
bucketProps: props.destinationBucketProps,
|
|
147
|
+
loggingBucketProps: props.destinationLoggingBucketProps,
|
|
148
|
+
logS3AccessLogs: props.logDestinationS3AccessLogs
|
|
149
|
+
};
|
|
150
|
+
(0, s3_bucket_helper_1.CheckS3Props)(destinationS3Props);
|
|
151
|
+
}
|
|
152
|
+
// Check SNS topic props
|
|
153
|
+
CheckTextractSnsProps(props);
|
|
154
|
+
}
|
|
155
|
+
// If asyncJobs is false, no S3 bucket props should be provided
|
|
156
|
+
if (!props.asyncJobs) {
|
|
157
|
+
if (props.existingSourceBucketObj || props.sourceBucketProps ||
|
|
158
|
+
props.existingDestinationBucketObj || props.destinationBucketProps ||
|
|
159
|
+
props.sourceLoggingBucketProps || props.destinationLoggingBucketProps ||
|
|
160
|
+
props.logSourceS3AccessLogs !== undefined || props.logDestinationS3AccessLogs !== undefined ||
|
|
161
|
+
props.sourceBucketEnvironmentVariableName || props.destinationBucketEnvironmentVariableName ||
|
|
162
|
+
props.dataAccessRoleArnEnvironmentVariableName || props.useSameBucket) {
|
|
163
|
+
errorMessages += 'S3 bucket properties can only be provided when asyncJobs is true\n';
|
|
164
|
+
errorFound = true;
|
|
165
|
+
}
|
|
166
|
+
// Check SNS topic props separately for clearer error message
|
|
167
|
+
if (props.existingNotificationTopicObj || props.notificationTopicProps || props.existingNotificationTopicEncryptionKey ||
|
|
168
|
+
props.enableNotificationTopicEncryptionWithCustomerManagedKey !== undefined || props.notificationTopicEncryptionKey ||
|
|
169
|
+
props.notificationTopicEncryptionKeyProps) {
|
|
170
|
+
errorMessages += 'SNS topic properties can only be provided when asyncJobs is true';
|
|
171
|
+
errorFound = true;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// If useSameBucket is true, no destination bucket props should be provided
|
|
175
|
+
if (props.useSameBucket) {
|
|
176
|
+
if (props.existingDestinationBucketObj || props.destinationBucketProps ||
|
|
177
|
+
props.destinationLoggingBucketProps || props.logDestinationS3AccessLogs !== undefined) {
|
|
178
|
+
errorMessages += 'Destination bucket properties cannot be provided when useSameBucket is true\n';
|
|
179
|
+
errorFound = true;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
// If createCustomerManagedOutputBucket is explicitly false, no output bucket properties should be provided
|
|
183
|
+
if (props.createCustomerManagedOutputBucket === false) {
|
|
184
|
+
if (props.existingDestinationBucketObj || props.destinationBucketProps ||
|
|
185
|
+
props.destinationLoggingBucketProps || props.logDestinationS3AccessLogs !== undefined ||
|
|
186
|
+
props.useSameBucket) {
|
|
187
|
+
errorMessages += 'Output bucket properties cannot be provided when createCustomerManagedOutputBucket is false';
|
|
188
|
+
errorFound = true;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
if (errorFound) {
|
|
192
|
+
throw new Error(errorMessages);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
function CheckTextractSnsProps(propsObject) {
|
|
196
|
+
let errorMessages = '';
|
|
197
|
+
let errorFound = false;
|
|
198
|
+
// FargateToSns used TopicObject instead of TopicObj - to fix would be a breaking change, so we
|
|
199
|
+
// must look for both here.
|
|
200
|
+
if (propsObject.notificationTopicProps && (propsObject.existingNotificationTopicObj || propsObject.existingNotificationTopicObject)) {
|
|
201
|
+
errorMessages += 'Error - Either provide notificationTopicProps or existingNotificationTopicObj, but not both.\n';
|
|
202
|
+
errorFound = true;
|
|
203
|
+
}
|
|
204
|
+
if (propsObject.notificationTopicProps?.masterKey && propsObject.notificationTopicEncryptionKey) {
|
|
205
|
+
errorMessages += 'Error - Either provide notificationTopicProps.masterKey or notificationTopicEncryptionKey, but not both.\n';
|
|
206
|
+
errorFound = true;
|
|
207
|
+
}
|
|
208
|
+
if (propsObject.notificationTopicProps?.masterKey && propsObject.notificationTopicEncryptionKeyProps) {
|
|
209
|
+
errorMessages += 'Error - Either provide notificationTopicProps.masterKey or notificationTopicEncryptionKeyProps, but not both.\n';
|
|
210
|
+
errorFound = true;
|
|
211
|
+
}
|
|
212
|
+
if (propsObject.notificationTopicEncryptionKey && propsObject.notificationTopicEncryptionKeyProps) {
|
|
213
|
+
errorMessages += 'Error - Either provide notificationTopicEncryptionKey or notificationTopicEncryptionKeyProps, but not both.\n';
|
|
214
|
+
errorFound = true;
|
|
215
|
+
}
|
|
216
|
+
if (errorFound) {
|
|
217
|
+
throw new Error(errorMessages);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHJhY3QtaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGV4dHJhY3QtaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFvRUgsNERBK0ZDO0FBRUQsZ0RBeUVDO0FBb0JELHNEQTZCQztBQTNSRCwyQ0FBMkM7QUFFM0MseURBQWlFO0FBQ2pFLDZDQUEwQztBQUMxQyxtQ0FBd0M7QUEwQ3hDLE1BQU0sZUFBZSxHQUFHO0lBQ3RCLDZCQUE2QjtJQUM3QiwwQkFBMEI7SUFDMUIseUJBQXlCO0lBQ3pCLG9CQUFvQjtDQUNyQixDQUFDO0FBRUYsTUFBTSxnQkFBZ0IsR0FBRztJQUN2QixxQ0FBcUM7SUFDckMsbUNBQW1DO0lBQ25DLGdDQUFnQztJQUNoQyw4QkFBOEI7SUFDOUIsK0JBQStCO0lBQy9CLDZCQUE2QjtJQUM3QiwrQkFBK0I7SUFDL0IsNkJBQTZCO0NBQzlCLENBQUM7QUFFRixTQUFnQix3QkFBd0IsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFvQjtJQUV6RixJQUFJLGFBQWEsR0FBMEI7UUFDekMsd0JBQXdCLEVBQUUsQ0FBQyxHQUFHLGVBQWUsQ0FBQztLQUMvQyxDQUFDO0lBRUYsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDcEIsTUFBTSxrQkFBa0IsR0FBRyxJQUFBLHVCQUFVLEVBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUMvQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsNEJBQTRCO1lBQ3BELDBCQUEwQixFQUFFLEtBQUssQ0FBQyxzQ0FBc0M7WUFDeEUsVUFBVSxFQUFFLEtBQUssQ0FBQyxzQkFBc0I7WUFDeEMsc0NBQXNDLEVBQUUsS0FBSyxDQUFDLHVEQUF1RDtZQUNyRyxhQUFhLEVBQUUsS0FBSyxDQUFDLDhCQUE4QjtZQUNuRCxrQkFBa0IsRUFBRSxLQUFLLENBQUMsbUNBQW1DO1NBQzlELENBQUMsQ0FBQztRQUNILDJCQUEyQjtRQUMz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LFdBQVcsQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1FBQ2hHLGFBQWEsSUFBSSw0R0FBNEcsQ0FBQztRQUM5SCxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLFdBQVcsQ0FBQyxzQkFBc0IsRUFBRSxTQUFTLElBQUksV0FBVyxDQUFDLG1DQUFtQyxFQUFFLENBQUM7UUFDckcsYUFBYSxJQUFJLGlIQUFpSCxDQUFDO1FBQ25JLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksV0FBVyxDQUFDLDhCQUE4QixJQUFJLFdBQVcsQ0FBQyxtQ0FBbUMsRUFBRSxDQUFDO1FBQ2xHLGFBQWEsSUFBSSwrR0FBK0csQ0FBQztRQUNqSSxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNqQyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCB7IENoZWNrUzNQcm9wcywgYnVpbGRTM0J1Y2tldCB9IGZyb20gJy4vczMtYnVja2V0LWhlbHBlcic7XG5pbXBvcnQgeyBidWlsZFRvcGljIH0gZnJvbSAnLi9zbnMtaGVscGVyJztcbmltcG9ydCB7IG92ZXJyaWRlUHJvcHMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCAqIGFzIHNucyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc25zJztcblxuZXhwb3J0IGludGVyZmFjZSBUZXh0cmFjdFByb3BzIHtcbiAgcmVhZG9ubHkgYXN5bmNKb2JzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZXhpc3RpbmdTb3VyY2VCdWNrZXRPYmo/OiBzMy5JQnVja2V0O1xuICByZWFkb25seSBzb3VyY2VCdWNrZXRQcm9wcz86IHMzLkJ1Y2tldFByb3BzO1xuICByZWFkb25seSBleGlzdGluZ0Rlc3RpbmF0aW9uQnVja2V0T2JqPzogczMuSUJ1Y2tldDtcbiAgcmVhZG9ubHkgZGVzdGluYXRpb25CdWNrZXRQcm9wcz86IHMzLkJ1Y2tldFByb3BzO1xuICByZWFkb25seSB1c2VTYW1lQnVja2V0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY3JlYXRlQ3VzdG9tZXJNYW5hZ2VkT3V0cHV0QnVja2V0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgc291cmNlTG9nZ2luZ0J1Y2tldFByb3BzPzogczMuQnVja2V0UHJvcHM7XG4gIHJlYWRvbmx5IGRlc3RpbmF0aW9uTG9nZ2luZ0J1Y2tldFByb3BzPzogczMuQnVja2V0UHJvcHM7XG4gIHJlYWRvbmx5IGxvZ1NvdXJjZVMzQWNjZXNzTG9ncz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGxvZ0Rlc3RpbmF0aW9uUzNBY2Nlc3NMb2dzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgc291cmNlQnVja2V0RW52aXJvbm1lbnRWYXJpYWJsZU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlc3RpbmF0aW9uQnVja2V0RW52aXJvbm1lbnRWYXJpYWJsZU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRhdGFBY2Nlc3NSb2xlQXJuRW52aXJvbm1lbnRWYXJpYWJsZU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNuc05vdGlmaWNhdGlvblRvcGljQXJuRW52aXJvbm1lbnRWYXJpYWJsZU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGV4aXN0aW5nTm90aWZpY2F0aW9uVG9waWNPYmo/OiBzbnMuVG9waWM7XG4gIHJlYWRvbmx5IGV4aXN0aW5nTm90aWZpY2F0aW9uVG9waWNFbmNyeXB0aW9uS2V5Pzoga21zLktleTtcbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uVG9waWNQcm9wcz86IHNucy5Ub3BpY1Byb3BzO1xuICByZWFkb25seSBlbmFibGVOb3RpZmljYXRpb25Ub3BpY0VuY3J5cHRpb25XaXRoQ3VzdG9tZXJNYW5hZ2VkS2V5PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uVG9waWNFbmNyeXB0aW9uS2V5Pzoga21zLktleTtcbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uVG9waWNFbmNyeXB0aW9uS2V5UHJvcHM/OiBrbXMuS2V5UHJvcHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dHJhY3RCdWNrZXREZXRhaWxzIHtcbiAgcmVhZG9ubHkgYnVja2V0PzogczMuQnVja2V0LFxuICByZWFkb25seSBidWNrZXRJbnRlcmZhY2U6IHMzLklCdWNrZXQsXG4gIHJlYWRvbmx5IGxvZ2dpbmdCdWNrZXQ/OiBzMy5CdWNrZXRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXh0cmFjdENvbmZpZ3VyYXRpb24ge1xuICByZWFkb25seSB0ZXh0cmFjdFJvbGU/OiBpYW0uUm9sZSxcbiAgcmVhZG9ubHkgbGFtYmRhSWFtQWN0aW9uc1JlcXVpcmVkOiBzdHJpbmdbXSxcbiAgcmVhZG9ubHkgc291cmNlQnVja2V0PzogVGV4dHJhY3RCdWNrZXREZXRhaWxzLFxuICByZWFkb25seSBkZXN0aW5hdGlvbkJ1Y2tldD86IFRleHRyYWN0QnVja2V0RGV0YWlscyxcbiAgcmVhZG9ubHkgc25zTm90aWZpY2F0aW9uVG9waWM/OiBzbnMuVG9waWMsXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvblRvcGljRW5jcnlwdGlvbktleT86IGttcy5LZXksXG59XG5cbmNvbnN0IHN5bmNQZXJtaXNzaW9ucyA9IFtcbiAgJ3RleHRyYWN0OkRldGVjdERvY3VtZW50VGV4dCcsXG4gICd0ZXh0cmFjdDpBbmFseXplRG9jdW1lbnQnLFxuICAndGV4dHJhY3Q6QW5hbHl6ZUV4cGVuc2UnLFxuICAndGV4dHJhY3Q6QW5hbHl6ZUlEJ1xuXTtcblxuY29uc3QgYXN5bmNQZXJtaXNzaW9ucyA9IFtcbiAgJ3RleHRyYWN0OlN0YXJ0RG9jdW1lbnRUZXh0RGV0ZWN0aW9uJyxcbiAgJ3RleHRyYWN0OkdldERvY3VtZW50VGV4dERldGVjdGlvbicsXG4gICd0ZXh0cmFjdDpTdGFydERvY3VtZW50QW5hbHlzaXMnLFxuICAndGV4dHJhY3Q6R2V0RG9jdW1lbnRBbmFseXNpcycsXG4gICd0ZXh0cmFjdDpTdGFydEV4cGVuc2VBbmFseXNpcycsXG4gICd0ZXh0cmFjdDpHZXRFeHBlbnNlQW5hbHlzaXMnLFxuICAndGV4dHJhY3Q6U3RhcnRMZW5kaW5nQW5hbHlzaXMnLFxuICAndGV4dHJhY3Q6R2V0TGVuZGluZ0FuYWx5c2lzJ1xuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIENvbmZpZ3VyZVRleHRyYWN0U3VwcG9ydChzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogVGV4dHJhY3RQcm9wcyk6IFRleHRyYWN0Q29uZmlndXJhdGlvbiB7XG5cbiAgbGV0IGNvbmZpZ3VyYXRpb246IFRleHRyYWN0Q29uZmlndXJhdGlvbiA9IHtcbiAgICBsYW1iZGFJYW1BY3Rpb25zUmVxdWlyZWQ6IFsuLi5zeW5jUGVybWlzc2lvbnNdLFxuICB9O1xuXG4gIGlmIChwcm9wcy5hc3luY0pvYnMpIHtcbiAgICBjb25zdCBidWlsZFRvcGljUmVzcG9uc2UgPSBidWlsZFRvcGljKHNjb3BlLCBpZCwge1xuICAgICAgZXhpc3RpbmdUb3BpY09iajogcHJvcHMuZXhpc3RpbmdOb3RpZmljYXRpb25Ub3BpY09iaixcbiAgICAgIGV4aXN0aW5nVG9waWNFbmNyeXB0aW9uS2V5OiBwcm9wcy5leGlzdGluZ05vdGlmaWNhdGlvblRvcGljRW5jcnlwdGlvbktleSxcbiAgICAgIHRvcGljUHJvcHM6IHByb3BzLm5vdGlmaWNhdGlvblRvcGljUHJvcHMsXG4gICAgICBlbmFibGVFbmNyeXB0aW9uV2l0aEN1c3RvbWVyTWFuYWdlZEtleTogcHJvcHMuZW5hYmxlTm90aWZpY2F0aW9uVG9waWNFbmNyeXB0aW9uV2l0aEN1c3RvbWVyTWFuYWdlZEtleSxcbiAgICAgIGVuY3J5cHRpb25LZXk6IHByb3BzLm5vdGlmaWNhdGlvblRvcGljRW5jcnlwdGlvbktleSxcbiAgICAgIGVuY3J5cHRpb25LZXlQcm9wczogcHJvcHMubm90aWZpY2F0aW9uVG9waWNFbmNyeXB0aW9uS2V5UHJvcHNcbiAgICB9KTtcbiAgICAvLyBTZXR1cCBub3RpZmljYXRpb24gdG9waWNcbiAgICBjb25maWd1cmF0aW9uID0gb3ZlcnJpZGVQcm9wcyhjb25maWd1cmF0aW9uLCB7XG4gICAgICBzbnNOb3RpZmljYXRpb25Ub3BpYzogYnVpbGRUb3BpY1Jlc3BvbnNlLnRvcGljLFxuICAgIH0pO1xuICAgIGlmIChidWlsZFRvcGljUmVzcG9uc2Uua2V5KSB7XG4gICAgICBjb25maWd1cmF0aW9uID0gb3ZlcnJpZGVQcm9wcyhjb25maWd1cmF0aW9uLCB7IG5vdGlmaWNhdGlvblRvcGljRW5jcnlwdGlvbktleTogYnVpbGRUb3BpY1Jlc3BvbnNlLmtleSB9KTtcbiAgICB9XG5cbiAgICAvLyBTZXR1cCBzb3VyY2UgUzMgQnVja2V0XG4gICAgaWYgKHByb3BzLmV4aXN0aW5nU291cmNlQnVja2V0T2JqKSB7XG4gICAgICBjb25maWd1cmF0aW9uID0gb3ZlcnJpZGVQcm9wcyhjb25maWd1cmF0aW9uLCB7XG4gICAgICAgIHNvdXJjZUJ1Y2tldDoge1xuICAgICAgICAgIGJ1Y2tldEludGVyZmFjZTogcHJvcHMuZXhpc3RpbmdTb3VyY2VCdWNrZXRPYmpcbiAgICAgICAgfVxuICAgICAgfSwgZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBidWlsZFNvdXJjZUJ1Y2tldFJlc3BvbnNlID0gYnVpbGRTM0J1Y2tldChzY29wZSwge1xuICAgICAgICBidWNrZXRQcm9wczogcHJvcHMuc291cmNlQnVja2V0UHJvcHMsXG4gICAgICAgIGxvZ2dpbmdCdWNrZXRQcm9wczogcHJvcHMuc291cmNlTG9nZ2luZ0J1Y2tldFByb3BzLFxuICAgICAgICBsb2dTM0FjY2Vzc0xvZ3M6IHByb3BzLmxvZ1NvdXJjZVMzQWNjZXNzTG9nc1xuICAgICAgfSwgYCR7aWR9LXNvdXJjZS1idWNrZXRgKTtcbiAgICAgIGNvbmZpZ3VyYXRpb24gPSBvdmVycmlkZVByb3BzKGNvbmZpZ3VyYXRpb24sIHtcbiAgICAgICAgc291cmNlQnVja2V0OiB7XG4gICAgICAgICAgYnVja2V0OiBidWlsZFNvdXJjZUJ1Y2tldFJlc3BvbnNlLmJ1Y2tldCxcbiAgICAgICAgICBsb2dnaW5nQnVja2V0OiBidWlsZFNvdXJjZUJ1Y2tldFJlc3BvbnNlLmxvZ2dpbmdCdWNrZXQsXG4gICAgICAgICAgYnVja2V0SW50ZXJmYWNlOiBidWlsZFNvdXJjZUJ1Y2tldFJlc3BvbnNlLmJ1Y2tldCxcbiAgICAgICAgfVxuICAgICAgfSwgZmFsc2UpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5jcmVhdGVDdXN0b21lck1hbmFnZWRPdXRwdXRCdWNrZXQgIT09IGZhbHNlKSB7XG4gICAgICAvLyBTZXR1cCBkZXN0aW5hdGlvbiBTMyBCdWNrZXRcbiAgICAgIGlmIChwcm9wcy51c2VTYW1lQnVja2V0KSB7XG4gICAgICAgIGNvbmZpZ3VyYXRpb24gPSBvdmVycmlkZVByb3BzKGNvbmZpZ3VyYXRpb24sIHtcbiAgICAgICAgICBkZXN0aW5hdGlvbkJ1Y2tldDoge1xuICAgICAgICAgICAgYnVja2V0SW50ZXJmYWNlOiBjb25maWd1cmF0aW9uLnNvdXJjZUJ1Y2tldD8uYnVja2V0SW50ZXJmYWNlLFxuICAgICAgICAgICAgYnVja2V0OiBjb25maWd1cmF0aW9uLnNvdXJjZUJ1Y2tldD8uYnVja2V0LFxuICAgICAgICAgICAgbG9nZ2luZ0J1Y2tldDogY29uZmlndXJhdGlvbi5zb3VyY2VCdWNrZXQ/LmxvZ2dpbmdCdWNrZXQsXG4gICAgICAgICAgfVxuICAgICAgICB9LCBmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJvcHMuZXhpc3RpbmdEZXN0aW5hdGlvbkJ1Y2tldE9iaikge1xuICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBvdmVycmlkZVByb3BzKGNvbmZpZ3VyYXRpb24sIHtcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uQnVja2V0OiB7XG4gICAgICAgICAgICAgIGJ1Y2tldEludGVyZmFjZTogcHJvcHMuZXhpc3RpbmdEZXN0aW5hdGlvbkJ1Y2tldE9ialxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBidWlsZERlc3RpbmF0aW9uQnVja2V0UmVzcG9uc2UgPSBidWlsZFMzQnVja2V0KHNjb3BlLCB7XG4gICAgICAgICAgICBidWNrZXRQcm9wczogcHJvcHMuZGVzdGluYXRpb25CdWNrZXRQcm9wcyxcbiAgICAgICAgICAgIGxvZ2dpbmdCdWNrZXRQcm9wczogcHJvcHMuZGVzdGluYXRpb25Mb2dnaW5nQnVja2V0UHJvcHMsXG4gICAgICAgICAgICBsb2dTM0FjY2Vzc0xvZ3M6IHByb3BzLmxvZ0Rlc3RpbmF0aW9uUzNBY2Nlc3NMb2dzXG4gICAgICAgICAgfSwgYCR7aWR9LWRlc3RpbmF0aW9uLWJ1Y2tldGApO1xuICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBvdmVycmlkZVByb3BzKGNvbmZpZ3VyYXRpb24sIHtcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uQnVja2V0OiB7XG4gICAgICAgICAgICAgIGJ1Y2tldDogYnVpbGREZXN0aW5hdGlvbkJ1Y2tldFJlc3BvbnNlLmJ1Y2tldCxcbiAgICAgICAgICAgICAgbG9nZ2luZ0J1Y2tldDogYnVpbGREZXN0aW5hdGlvbkJ1Y2tldFJlc3BvbnNlLmxvZ2dpbmdCdWNrZXQsXG4gICAgICAgICAgICAgIGJ1Y2tldEludGVyZmFjZTogYnVpbGREZXN0aW5hdGlvbkJ1Y2tldFJlc3BvbnNlLmJ1Y2tldCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXQgdXAgcm9sZSB0aGF0IGlzIHNlbnQgdG8gdGhlIFRleHRyYWN0IHNlcnZpY2VcbiAgICBjb25zdCB0ZXh0cmFjdFNlcnZpY2VSb2xlID0gbmV3IGlhbS5Sb2xlKHNjb3BlLCBgJHtpZH0tdGV4dHJhY3Qtc2VydmljZS1yb2xlYCwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ3RleHRyYWN0LmFtYXpvbmF3cy5jb20nKSxcbiAgICB9KTtcbiAgICBjb25maWd1cmF0aW9uLnNuc05vdGlmaWNhdGlvblRvcGljIS5ncmFudFB1Ymxpc2godGV4dHJhY3RTZXJ2aWNlUm9sZSk7XG4gICAgY29uZmlndXJhdGlvbiA9IG92ZXJyaWRlUHJvcHMoY29uZmlndXJhdGlvbiwge1xuICAgICAgdGV4dHJhY3RSb2xlOiB0ZXh0cmFjdFNlcnZpY2VSb2xlXG4gICAgfSwgZmFsc2UpO1xuXG4gICAgLy8gR2l2ZSB0aGUgTGFtYmRhIGZ1bmN0aW9uIGFkZGl0aW9uYWwgcGVybWlzc2lvbnNcbiAgICBhc3luY1Blcm1pc3Npb25zLmZvckVhY2goKHBlcm1pc3Npb24pID0+IHtcbiAgICAgIGNvbmZpZ3VyYXRpb24ubGFtYmRhSWFtQWN0aW9uc1JlcXVpcmVkLnB1c2gocGVybWlzc2lvbik7XG4gICAgfSk7XG5cbiAgfVxuICByZXR1cm4gY29uZmlndXJhdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENoZWNrVGV4dHJhY3RQcm9wcyhwcm9wczogVGV4dHJhY3RQcm9wcyk6IHZvaWQge1xuICBsZXQgZXJyb3JNZXNzYWdlcyA9ICcnO1xuICBsZXQgZXJyb3JGb3VuZCA9IGZhbHNlO1xuXG4gIGlmIChwcm9wcy5hc3luY0pvYnMpIHtcblxuICAgIC8vIENoZWNrIHNvdXJjZSBidWNrZXQgcHJvcHNcbiAgICBjb25zdCBzb3VyY2VTM1Byb3BzID0ge1xuICAgICAgZXhpc3RpbmdCdWNrZXRPYmo6IHByb3BzLmV4aXN0aW5nU291cmNlQnVja2V0T2JqLFxuICAgICAgYnVja2V0UHJvcHM6IHByb3BzLnNvdXJjZUJ1Y2tldFByb3BzLFxuICAgICAgbG9nZ2luZ0J1Y2tldFByb3BzOiBwcm9wcy5zb3VyY2VMb2dnaW5nQnVja2V0UHJvcHMsXG4gICAgICBsb2dTM0FjY2Vzc0xvZ3M6IHByb3BzLmxvZ1NvdXJjZVMzQWNjZXNzTG9nc1xuICAgIH07XG4gICAgQ2hlY2tTM1Byb3BzKHNvdXJjZVMzUHJvcHMpO1xuXG4gICAgLy8gQ2hlY2sgZGVzdGluYXRpb24gYnVja2V0IHByb3BzIChvbmx5IGlmIG5vdCB1c2luZyBzYW1lIGJ1Y2tldClcbiAgICBpZiAoIXByb3BzLnVzZVNhbWVCdWNrZXQpIHtcbiAgICAgIGNvbnN0IGRlc3RpbmF0aW9uUzNQcm9wcyA9IHtcbiAgICAgICAgZXhpc3RpbmdCdWNrZXRPYmo6IHByb3BzLmV4aXN0aW5nRGVzdGluYXRpb25CdWNrZXRPYmosXG4gICAgICAgIGJ1Y2tldFByb3BzOiBwcm9wcy5kZXN0aW5hdGlvbkJ1Y2tldFByb3BzLFxuICAgICAgICBsb2dnaW5nQnVja2V0UHJvcHM6IHByb3BzLmRlc3RpbmF0aW9uTG9nZ2luZ0J1Y2tldFByb3BzLFxuICAgICAgICBsb2dTM0FjY2Vzc0xvZ3M6IHByb3BzLmxvZ0Rlc3RpbmF0aW9uUzNBY2Nlc3NMb2dzXG4gICAgICB9O1xuICAgICAgQ2hlY2tTM1Byb3BzKGRlc3RpbmF0aW9uUzNQcm9wcyk7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgU05TIHRvcGljIHByb3BzXG4gICAgQ2hlY2tUZXh0cmFjdFNuc1Byb3BzKHByb3BzKTtcbiAgfVxuXG4gIC8vIElmIGFzeW5jSm9icyBpcyBmYWxzZSwgbm8gUzMgYnVja2V0IHByb3BzIHNob3VsZCBiZSBwcm92aWRlZFxuICBpZiAoIXByb3BzLmFzeW5jSm9icykge1xuICAgIGlmIChwcm9wcy5leGlzdGluZ1NvdXJjZUJ1Y2tldE9iaiB8fCBwcm9wcy5zb3VyY2VCdWNrZXRQcm9wcyB8fFxuICAgICAgcHJvcHMuZXhpc3RpbmdEZXN0aW5hdGlvbkJ1Y2tldE9iaiB8fCBwcm9wcy5kZXN0aW5hdGlvbkJ1Y2tldFByb3BzIHx8XG4gICAgICBwcm9wcy5zb3VyY2VMb2dnaW5nQnVja2V0UHJvcHMgfHwgcHJvcHMuZGVzdGluYXRpb25Mb2dnaW5nQnVja2V0UHJvcHMgfHxcbiAgICAgIHByb3BzLmxvZ1NvdXJjZVMzQWNjZXNzTG9ncyAhPT0gdW5kZWZpbmVkIHx8IHByb3BzLmxvZ0Rlc3RpbmF0aW9uUzNBY2Nlc3NMb2dzICE9PSB1bmRlZmluZWQgfHxcbiAgICAgIHByb3BzLnNvdXJjZUJ1Y2tldEVudmlyb25tZW50VmFyaWFibGVOYW1lIHx8IHByb3BzLmRlc3RpbmF0aW9uQnVja2V0RW52aXJvbm1lbnRWYXJpYWJsZU5hbWUgfHxcbiAgICAgIHByb3BzLmRhdGFBY2Nlc3NSb2xlQXJuRW52aXJvbm1lbnRWYXJpYWJsZU5hbWUgfHwgcHJvcHMudXNlU2FtZUJ1Y2tldCkge1xuICAgICAgZXJyb3JNZXNzYWdlcyArPSAnUzMgYnVja2V0IHByb3BlcnRpZXMgY2FuIG9ubHkgYmUgcHJvdmlkZWQgd2hlbiBhc3luY0pvYnMgaXMgdHJ1ZVxcbic7XG4gICAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBTTlMgdG9waWMgcHJvcHMgc2VwYXJhdGVseSBmb3IgY2xlYXJlciBlcnJvciBtZXNzYWdlXG4gICAgaWYgKHByb3BzLmV4aXN0aW5nTm90aWZpY2F0aW9uVG9waWNPYmogfHwgcHJvcHMubm90aWZpY2F0aW9uVG9waWNQcm9wcyB8fCBwcm9wcy5leGlzdGluZ05vdGlmaWNhdGlvblRvcGljRW5jcnlwdGlvbktleSB8fFxuICAgICAgcHJvcHMuZW5hYmxlTm90aWZpY2F0aW9uVG9waWNFbmNyeXB0aW9uV2l0aEN1c3RvbWVyTWFuYWdlZEtleSAhPT0gdW5kZWZpbmVkIHx8IHByb3BzLm5vdGlmaWNhdGlvblRvcGljRW5jcnlwdGlvbktleSB8fFxuICAgICAgcHJvcHMubm90aWZpY2F0aW9uVG9waWNFbmNyeXB0aW9uS2V5UHJvcHMpIHtcbiAgICAgIGVycm9yTWVzc2FnZXMgKz0gJ1NOUyB0b3BpYyBwcm9wZXJ0aWVzIGNhbiBvbmx5IGJlIHByb3ZpZGVkIHdoZW4gYXN5bmNKb2JzIGlzIHRydWUnO1xuICAgICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgdXNlU2FtZUJ1Y2tldCBpcyB0cnVlLCBubyBkZXN0aW5hdGlvbiBidWNrZXQgcHJvcHMgc2hvdWxkIGJlIHByb3ZpZGVkXG4gIGlmIChwcm9wcy51c2VTYW1lQnVja2V0KSB7XG4gICAgaWYgKHByb3BzLmV4aXN0aW5nRGVzdGluYXRpb25CdWNrZXRPYmogfHwgcHJvcHMuZGVzdGluYXRpb25CdWNrZXRQcm9wcyB8fFxuICAgICAgcHJvcHMuZGVzdGluYXRpb25Mb2dnaW5nQnVja2V0UHJvcHMgfHwgcHJvcHMubG9nRGVzdGluYXRpb25TM0FjY2Vzc0xvZ3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZXJyb3JNZXNzYWdlcyArPSAnRGVzdGluYXRpb24gYnVja2V0IHByb3BlcnRpZXMgY2Fubm90IGJlIHByb3ZpZGVkIHdoZW4gdXNlU2FtZUJ1Y2tldCBpcyB0cnVlXFxuJztcbiAgICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIGNyZWF0ZUN1c3RvbWVyTWFuYWdlZE91dHB1dEJ1Y2tldCBpcyBleHBsaWNpdGx5IGZhbHNlLCBubyBvdXRwdXQgYnVja2V0IHByb3BlcnRpZXMgc2hvdWxkIGJlIHByb3ZpZGVkXG4gIGlmIChwcm9wcy5jcmVhdGVDdXN0b21lck1hbmFnZWRPdXRwdXRCdWNrZXQgPT09IGZhbHNlKSB7XG4gICAgaWYgKHByb3BzLmV4aXN0aW5nRGVzdGluYXRpb25CdWNrZXRPYmogfHwgcHJvcHMuZGVzdGluYXRpb25CdWNrZXRQcm9wcyB8fFxuICAgICAgcHJvcHMuZGVzdGluYXRpb25Mb2dnaW5nQnVja2V0UHJvcHMgfHwgcHJvcHMubG9nRGVzdGluYXRpb25TM0FjY2Vzc0xvZ3MgIT09IHVuZGVmaW5lZCB8fFxuICAgICAgcHJvcHMudXNlU2FtZUJ1Y2tldCkge1xuICAgICAgZXJyb3JNZXNzYWdlcyArPSAnT3V0cHV0IGJ1Y2tldCBwcm9wZXJ0aWVzIGNhbm5vdCBiZSBwcm92aWRlZCB3aGVuIGNyZWF0ZUN1c3RvbWVyTWFuYWdlZE91dHB1dEJ1Y2tldCBpcyBmYWxzZSc7XG4gICAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoZXJyb3JGb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2VzKTtcbiAgfVxufVxuXG4vKlxuICogQmVjYXVzZSB0aGUgbm90aWZpY2F0aW9uIHRvcGljIGlzIGEgc2Vjb25kYXJ5IHJlc291cmNlXG4gKiBmb3IgdGV4dHJhY3QgY29uZmlndXJhdGlvbnMsIHRoZSBwcm9wIG5hbWVzIGFyZSBkaWZmZXJlbnRcbiAqIHRoYW4gd2hlbiBTTlMgaXMgcHJpbWFyeSByZXNvdXJjZS4gQ2hlY2tUZXh0cmFjdFNuc1Byb3BzKCkgaXNcbiAqIGEgY2xvbmUgb2YgdGhlIENoZWNrU25zUHJvcHMoKSBpbiBzbnMtaGVscGVyLnRzIHVzaW5nIHRoZVxuICogVGV4dHJhY3Qgbm90aWZpY2F0aW9uIHRvcGljIHNwZWNpZmljIG5hbWVzLiBUaGlzIGhhcyBhIHJpc2sgb2ZcbiAqIGdldHRpbmcgb3V0IG9mIHN5bmMgZ29pbmcgZm9yd2FyZCAtIGJ1dCB0aGlzIHNlZW1lZCBhIGJldHRlclxuICogc29sdXRpb24gdGhhbiBDaGVja1Nuc1Byb3BzIHRocm93aW5nIGVycm9yIG1lc3NhZ2VzIHdpdGggdGhlXG4gKiB3cm9uZyBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZXh0cmFjdFNuc1Byb3BzIHtcbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uVG9waWNQcm9wcz86IHNucy5Ub3BpY1Byb3BzLFxuICByZWFkb25seSBleGlzdGluZ05vdGlmaWNhdGlvblRvcGljT2JqPzogc25zLlRvcGljLFxuICByZWFkb25seSBleGlzdGluZ05vdGlmaWNhdGlvblRvcGljT2JqZWN0Pzogc25zLlRvcGljLFxuICByZWFkb25seSBub3RpZmljYXRpb25Ub3BpY0VuY3J5cHRpb25LZXk/OiBrbXMuS2V5LFxuICByZWFkb25seSBub3RpZmljYXRpb25Ub3BpY0VuY3J5cHRpb25LZXlQcm9wcz86IGttcy5LZXlQcm9wc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ2hlY2tUZXh0cmFjdFNuc1Byb3BzKHByb3BzT2JqZWN0OiBUZXh0cmFjdFNuc1Byb3BzIHwgYW55KSB7XG4gIGxldCBlcnJvck1lc3NhZ2VzID0gJyc7XG4gIGxldCBlcnJvckZvdW5kID0gZmFsc2U7XG5cbiAgLy8gRmFyZ2F0ZVRvU25zIHVzZWQgVG9waWNPYmplY3QgaW5zdGVhZCBvZiBUb3BpY09iaiAtIHRvIGZpeCB3b3VsZCBiZSBhIGJyZWFraW5nIGNoYW5nZSwgc28gd2VcbiAgLy8gbXVzdCBsb29rIGZvciBib3RoIGhlcmUuXG4gIGlmIChwcm9wc09iamVjdC5ub3RpZmljYXRpb25Ub3BpY1Byb3BzICYmIChwcm9wc09iamVjdC5leGlzdGluZ05vdGlmaWNhdGlvblRvcGljT2JqIHx8IHByb3BzT2JqZWN0LmV4aXN0aW5nTm90aWZpY2F0aW9uVG9waWNPYmplY3QpKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBFaXRoZXIgcHJvdmlkZSBub3RpZmljYXRpb25Ub3BpY1Byb3BzIG9yIGV4aXN0aW5nTm90aWZpY2F0aW9uVG9waWNPYmosIGJ1dCBub3QgYm90aC5cXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKHByb3BzT2JqZWN0Lm5vdGlmaWNhdGlvblRvcGljUHJvcHM/Lm1hc3RlcktleSAmJiBwcm9wc09iamVjdC5ub3RpZmljYXRpb25Ub3BpY0VuY3J5cHRpb25LZXkpIHtcbiAgICBlcnJvck1lc3NhZ2VzICs9ICdFcnJvciAtIEVpdGhlciBwcm92aWRlIG5vdGlmaWNhdGlvblRvcGljUHJvcHMubWFzdGVyS2V5IG9yIG5vdGlmaWNhdGlvblRvcGljRW5jcnlwdGlvbktleSwgYnV0IG5vdCBib3RoLlxcbic7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAocHJvcHNPYmplY3Qubm90aWZpY2F0aW9uVG9waWNQcm9wcz8ubWFzdGVyS2V5ICYmIHByb3BzT2JqZWN0Lm5vdGlmaWNhdGlvblRvcGljRW5jcnlwdGlvbktleVByb3BzKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBFaXRoZXIgcHJvdmlkZSBub3RpZmljYXRpb25Ub3BpY1Byb3BzLm1hc3RlcktleSBvciBub3RpZmljYXRpb25Ub3BpY0VuY3J5cHRpb25LZXlQcm9wcywgYnV0IG5vdCBib3RoLlxcbic7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAocHJvcHNPYmplY3Qubm90aWZpY2F0aW9uVG9waWNFbmNyeXB0aW9uS2V5ICYmIHByb3BzT2JqZWN0Lm5vdGlmaWNhdGlvblRvcGljRW5jcnlwdGlvbktleVByb3BzKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBFaXRoZXIgcHJvdmlkZSBub3RpZmljYXRpb25Ub3BpY0VuY3J5cHRpb25LZXkgb3Igbm90aWZpY2F0aW9uVG9waWNFbmNyeXB0aW9uS2V5UHJvcHMsIGJ1dCBub3QgYm90aC5cXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGVycm9yRm91bmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlcyk7XG4gIH1cbn1cbiJdfQ==
|
package/lib/vpc-helper.d.ts
CHANGED
|
@@ -56,7 +56,9 @@ export declare enum ServiceEndpointTypes {
|
|
|
56
56
|
BEDROCK_RUNTIME = "BEDROCK_RUNTIME",
|
|
57
57
|
KENDRA = "KENDRA",
|
|
58
58
|
TRANSCRIBE = "TRANSCRIBE",
|
|
59
|
-
TRANSLATE = "TRANSLATE"
|
|
59
|
+
TRANSLATE = "TRANSLATE",
|
|
60
|
+
TEXTRACT = "TEXTRACT",
|
|
61
|
+
POLLY = "POLLY"
|
|
60
62
|
}
|
|
61
63
|
/**
|
|
62
64
|
* @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
|
package/lib/vpc-helper.js
CHANGED
|
@@ -69,6 +69,8 @@ var ServiceEndpointTypes;
|
|
|
69
69
|
ServiceEndpointTypes["KENDRA"] = "KENDRA";
|
|
70
70
|
ServiceEndpointTypes["TRANSCRIBE"] = "TRANSCRIBE";
|
|
71
71
|
ServiceEndpointTypes["TRANSLATE"] = "TRANSLATE";
|
|
72
|
+
ServiceEndpointTypes["TEXTRACT"] = "TEXTRACT";
|
|
73
|
+
ServiceEndpointTypes["POLLY"] = "POLLY";
|
|
72
74
|
})(ServiceEndpointTypes || (exports.ServiceEndpointTypes = ServiceEndpointTypes = {}));
|
|
73
75
|
var EndpointTypes;
|
|
74
76
|
(function (EndpointTypes) {
|
|
@@ -165,6 +167,16 @@ const endpointSettings = [
|
|
|
165
167
|
endpointName: ServiceEndpointTypes.TRANSLATE,
|
|
166
168
|
endpointType: EndpointTypes.INTERFACE,
|
|
167
169
|
endpointInterfaceService: ec2.InterfaceVpcEndpointAwsService.TRANSLATE
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
endpointName: ServiceEndpointTypes.TEXTRACT,
|
|
173
|
+
endpointType: EndpointTypes.INTERFACE,
|
|
174
|
+
endpointInterfaceService: ec2.InterfaceVpcEndpointAwsService.TEXTRACT
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
endpointName: ServiceEndpointTypes.POLLY,
|
|
178
|
+
endpointType: EndpointTypes.INTERFACE,
|
|
179
|
+
endpointInterfaceService: ec2.InterfaceVpcEndpointAwsService.POLLY
|
|
168
180
|
}
|
|
169
181
|
];
|
|
170
182
|
/**
|
|
@@ -276,4 +288,4 @@ function calculateIpMaskSize(ipAddressCount) {
|
|
|
276
288
|
}
|
|
277
289
|
return maskSize;
|
|
278
290
|
}
|
|
279
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInZwYy1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOzs7QUEyQ0gsNEJBeUJDO0FBbUlELHNEQXVCQztBQXlERCw0REFpQkM7QUFRRCxzQ0FZQztBQUVELGtEQXlCQztBQXJWRDs7O0dBR0c7QUFFSCwyQ0FBMkM7QUFHM0MsbUVBQTZEO0FBQzdELG1DQUF3RztBQUN4RyxtQ0FBbUM7QUE0Qm5DOztHQUVHO0FBQ0gsU0FBZ0IsUUFBUSxDQUFDLEtBQWdCLEVBQUUsS0FBb0IsRUFBRSxFQUFXO0lBQzFFLElBQUksS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sS0FBSyxFQUFFLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxlQUFlLEdBQWlCLEtBQUssRUFBRSxlQUFlLENBQUM7SUFFM0QsZUFBZSxHQUFHLElBQUEsd0JBQWdCLEVBQUMsZUFBZSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFFbkcsdUVBQXVFO0lBQ3ZFLCtDQUErQztJQUMvQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN2QyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxlQUFlLENBQUMsQ0FBQztJQUV2RCxnR0FBZ0c7SUFDaEcsdUVBQXVFO0lBQ3ZFLCtDQUErQztJQUMvQyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNuRCxNQUFNLE9BQU8sR0FBZ0IsR0FBRyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUV2RCwyQkFBMkIs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YSxJQUFJLHNHQUFzRyxDQUFDO1FBQ3hILFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksVUFBVSxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsbUJBQW1CLENBQUMsY0FBc0I7SUFDeEQsaUJBQWlCO0lBQ2pCLElBQUksY0FBYyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsa0ZBQWtGO0lBQ2xGLGtEQUFrRDtJQUNsRCxpRUFBaUU7SUFFakUsTUFBTSxvQkFBb0IsR0FBRyxjQUFjLEdBQUcsQ0FBQyxDQUFDO0lBRWhELG1DQUFtQztJQUNuQyxNQUFNLFFBQVEsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztJQUVqRSwrRUFBK0U7SUFDL0UsSUFBSSxRQUFRLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsY0FBYyxpRkFBaUYsQ0FBQyxDQUFDO0lBQzFJLENBQUM7SUFFRCxJQUFJLFFBQVEsR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixjQUFjLGdGQUFnRixDQUFDLENBQUM7SUFDekksQ0FBQztJQUVELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKlxuICogIFRoZSBmdW5jdGlvbnMgZm91bmQgaGVyZSBpbiB0aGUgY29yZSBsaWJyYXJ5IGFyZSBmb3IgaW50ZXJuYWwgdXNlIGFuZCBjYW4gYmUgY2hhbmdlZFxuICogIG9yIHJlbW92ZWQgb3V0c2lkZSBvZiBhIG1ham9yIHJlbGVhc2UuIFdlIHJlY29tbWVuZCBhZ2FpbnN0IGNhbGxpbmcgdGhlbSBkaXJlY3RseSBmcm9tIGNsaWVudCBjb2RlLlxuICovXG5cbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHsgQ2ZuTG9nR3JvdXAgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBidWlsZFNlY3VyaXR5R3JvdXAgfSBmcm9tIFwiLi9zZWN1cml0eS1ncm91cC1oZWxwZXJcIjtcbmltcG9ydCB7IGNvbnNvbGlkYXRlUHJvcHMsIGFkZENmblN1cHByZXNzUnVsZXMsIHN1cHByZXNzVnBjQ3VzdG9tZXJIYW5kbGVyUm9sZVdhcm5pbmdzIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5cbi8vIERlZmluZWQgT05DRSBpbiBvdXIgY29kZSBpbiBjb3JlIHNvbWV3aGVyZVxuLy8gRGVmaW5pdGVseSBjb2RlIHRvIGJlIGxldmVyYWdlZCB3aXRob3V0IG5lY2Vzc2FyaWx5IHVuZGVyc3RhbmRpbmcgaXRcbmV4cG9ydCB0eXBlIFByb3BzQnVpbGRlcjxUPiA9IHtcbiAgLXJlYWRvbmx5IFtQIGluIGtleW9mIFRdPzogVFtQXTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRWcGNQcm9wcyB7XG4gIC8qKlxuICAgKiBFeGlzdGluZyBpbnN0YW5jZSBvZiBhIFZQQywgaWYgdGhpcyBpcyBzZXQgdGhlbiB0aGUgYWxsIFByb3BzIGFyZSBpZ25vcmVkXG4gICAqL1xuICByZWFkb25seSBleGlzdGluZ1ZwYz86IGVjMi5JVnBjO1xuICAvKipcbiAgICogT25lIG9mIHRoZSBkZWZhdWx0IFZQQyBjb25maWd1cmF0aW9ucyBhdmFpbGFibGUgaW4gdnBjLWRlZmF1bHRzXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0VnBjUHJvcHM6IGVjMi5WcGNQcm9wcztcbiAgLyoqXG4gICAqIFVzZXIgcHJvdmlkZWQgcHJvcHMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcHJvcHMgZm9yIHRoZSBWUEMuXG4gICAqL1xuICByZWFkb25seSB1c2VyVnBjUHJvcHM/OiBlYzIuVnBjUHJvcHM7XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3Qgc3BlY2lmaWVkIHByb3BzIHRoYXQgb3ZlcnJpZGUgYm90aCB0aGUgZGVmYXVsdCBwcm9wc1xuICAgKiBhbmQgdXNlciBwcm9wcyBmb3IgdGhlIFZQQy5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnN0cnVjdFZwY1Byb3BzPzogZWMyLlZwY1Byb3BzO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFZwYyhzY29wZTogQ29uc3RydWN0LCBwcm9wczogQnVpbGRWcGNQcm9wcywgaWQ/OiBzdHJpbmcpOiBlYzIuSVZwYyB7XG4gIGlmIChwcm9wcz8uZXhpc3RpbmdWcGMpIHtcbiAgICByZXR1cm4gcHJvcHM/LmV4aXN0aW5nVnBjO1xuICB9XG5cbiAgbGV0IGN1bXVsYXRpdmVQcm9wczogZWMyLlZwY1Byb3BzID0gcHJvcHM/LmRlZmF1bHRWcGNQcm9wcztcblxuICBjdW11bGF0aXZlUHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKGN1bXVsYXRpdmVQcm9wcywgcHJvcHM/LnVzZXJWcGNQcm9wcywgcHJvcHM/LmNvbnN0cnVjdFZwY1Byb3BzKTtcblxuICAvLyBTdGF5IGNvbXBhdGlibGUgd2l0aCBWUENzIGNyZWF0ZWQgYmVmb3JlIElEIHdhcyBhZGRlZCBhcyBhbiBhcmd1bWVudFxuICAvLyBUT0RPOiB3ZSBuZWVkIGEgdW5pdCB0ZXN0IGZvciBhbiBpZCBhcmd1bWVudFxuICBjb25zdCB2cGNJZCA9IGlkID8gYHZwYy0ke2lkfWAgOiBcIlZwY1wiO1xuICBjb25zdCB2cGMgPSBuZXcgZWMyLlZwYyhzY29wZSwgdnBjSWQsIGN1bXVsYXRpdmVQcm9wcyk7XG5cbiAgLy8gQWRkIFZQQyBGbG93TG9ncyB3aXRoIHRoZSBkZWZhdWx0IHNldHRpbmcgb2YgdHJhZmZpY1R5cGU6QUxMIGFuZCBkZXN0aW5hdGlvbjogQ2xvdWRXYXRjaCBMb2dzXG4gIC8vIFN0YXkgY29tcGF0aWJsZSB3aXRoIFZQQ3MgY3JlYXRlZCBiZWZvcmUgSUQgd2FzIGFkZGVkIGFzIGFuIGFyZ3VtZW50XG4gIC8vIFRPRE86IHdlIG5lZWQgYSB1bml0IHRlc3QgZm9yIGFuIGlkIGFyZ3VtZW50XG4gIGNvbnN0IGZsb3dMb2dJZCA9IGlkID8gYGZsb3dsb2ctJHtpZH1gIDogXCJGbG93TG9nXCI7XG4gIGNvbnN0IGZsb3dMb2c6IGVjMi5GbG93TG9nID0gdnBjLmFkZEZsb3dMb2coZmxvd0xvZ0lkKTtcblxuICBTdXBwcmVzc01hcFB1YmxpY0lwV2FybmluZ3ModnBjKTtcbiAgU3VwcHJlc3NFbmNyeXB0ZWRMb2dXYXJuaW5ncyhmbG93TG9nKTtcbiAgc3VwcHJlc3NWcGNDdXN0b21lckhhbmRsZXJSb2xlV2FybmluZ3MoY2RrLlN0YWNrLm9mKHNjb3BlKSk7XG5cbiAgcmV0dXJuIHZwYztcbn1cblxuZXhwb3J0IGVudW0gU2VydmljZUVuZHBvaW50VHlwZXMge1xuICBEWU5BTU9EQiA9IFwiRERCXCIsXG4gIFNOUyA9IFwiU05TXCIsXG4gIFNRUyA9IFwiU1FTXCIsXG4gIFMzID0gXCJTM1wiLFxuICBTVEVQX0ZVTkNUSU9OUyA9IFwiU1RFUF9GVU5DVElPTlNcIixcbiAgU0FHRU1BS0VSX1JVTlRJTUUgPSBcIlNBR0VNQUtFUl9SVU5USU1FXCIsXG4gIFNFQ1JFVFNfTUFOQUdFUiA9IFwiU0VDUkVUU19NQU5BR0VSXCIsXG4gIFNTTSA9IFwiU1NNXCIsXG4gIEVDUl9BUEkgPSBcIkVDUl9BUElcIixcbiAgRUNSX0RLUiA9IFwiRUNSX0RLUlwiLFxuICBFVkVOVFMgPSBcIkNMT1VEV0FUQ0hfRVZFTlRTXCIsXG4gIEtJTkVTSVNfRklSRUhPU0UgPSBcIktJTkVTSVNfRklSRUhPU0VcIixcbiAgS0lORVNJU19TVFJFQU1TID0gXCJLSU5FU0lTX1NUUkVBTVNcIixcbiAgQkVEUk9DSyA9IFwiQkVEUk9DS1wiLFxuICBCRURST0NLX1JVTlRJTUUgPSBcIkJFRFJPQ0tfUlVOVElNRVwiLFxuICBLRU5EUkEgPSBcIktFTkRSQVwiLFxuICBUUkFOU0NSSUJFID0gXCJUUkFOU0NSSUJFXCIsXG4gIFRSQU5TTEFURSA9IFwiVFJBTlNMQVRFXCJcbn1cblxuZW51bSBFbmRwb2ludFR5cGVzIHtcbiAgR0FURVdBWSA9IFwiR2F0ZXdheVwiLFxuICBJTlRFUkZBQ0UgPSBcIkludGVyZmFjZVwiLFxufVxuXG5pbnRlcmZhY2UgRW5kcG9pbnREZWZpbml0aW9uIHtcbiAgZW5kcG9pbnROYW1lOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcztcbiAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGVzO1xuICBlbmRwb2ludEdhdGV3YXlTZXJ2aWNlPzogZWMyLkdhdGV3YXlWcGNFbmRwb2ludEF3c1NlcnZpY2U7XG4gIGVuZHBvaW50SW50ZXJmYWNlU2VydmljZT86IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2U7XG59XG5cbmNvbnN0IGVuZHBvaW50U2V0dGluZ3M6IEVuZHBvaW50RGVmaW5pdGlvbltdID0gW1xuICB7XG4gICAgZW5kcG9pbnROYW1lOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcy5EWU5BTU9EQixcbiAgICBlbmRwb2ludFR5cGU6IEVuZHBvaW50VHlwZXMuR0FURVdBWSxcbiAgICBlbmRwb2ludEdhdGV3YXlTZXJ2aWNlOiBlYzIuR2F0ZXdheVZwY0VuZHBvaW50QXdzU2VydmljZS5EWU5BTU9EQixcbiAgfSxcbiAge1xuICAgIGVuZHBvaW50TmFtZTogU2VydmljZUVuZHBvaW50VHlwZXMuUzMsXG4gICAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGVzLkdBVEVXQVksXG4gICAgZW5kcG9pbnRHYXRld2F5U2VydmljZTogZWMyLkdhdGV3YXlWcGNFbmRwb2ludEF3c1NlcnZpY2UuUzMsXG4gIH0sXG4gIHtcbiAgICBlbmRwb2ludE5hbWU6IFNlcnZpY2VFbmRwb2ludFR5cGVzLlNURVBfRlVOQ1RJT05TLFxuICAgIGVuZHBvaW50VHlwZTogRW5kcG9pbnRUeXBlcy5JTlRFUkZBQ0UsXG4gICAgZW5kcG9pbnRJbnRlcmZhY2VTZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLlNURVBfRlVOQ1RJT05TLFxuICB9LFxuICB7XG4gICAgZW5kcG9pbnROYW1lOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcy5TTlMsXG4gICAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGVzLklOVEVSRkFDRSxcbiAgICBlbmRwb2ludEludGVyZmFjZVNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuU05TLFxuICB9LFxuICB7XG4gICAgZW5kcG9pbnROYW1lOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcy5TUVMsXG4gICAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGVzLklOVEVSRkFDRSxcbiAgICBlbmRwb2ludEludGVyZmFjZVNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuU1FTLFxuICB9LFxuICB7XG4gICAgZW5kcG9pbnROYW1lOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcy5TQUdFTUFLRVJfUlVOVElNRSxcbiAgICBlbmRwb2ludFR5cGU6IEVuZHBvaW50VHlwZXMuSU5URVJGQUNFLFxuICAgIGVuZHBvaW50SW50ZXJmYWNlU2VydmljZTogZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5TQUdFTUFLRVJfUlVOVElNRSxcbiAgfSxcbiAge1xuICAgIGVuZHBvaW50TmFtZTogU2VydmljZUVuZHBvaW50VHlwZXMuU0VDUkVUU19NQU5BR0VSLFxuICAgIGVuZHBvaW50VHlwZTogRW5kcG9pbnRUeXBlcy5JTlRFUkZBQ0UsXG4gICAgZW5kcG9pbnRJbnRlcmZhY2VTZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLlNFQ1JFVFNfTUFOQUdFUixcbiAgfSxcbiAge1xuICAgIGVuZHBvaW50TmFtZTogU2VydmljZUVuZHBvaW50VHlwZXMuU1NNLFxuICAgIGVuZHBvaW50VHlwZTogRW5kcG9pbnRUeXBlcy5JTlRFUkZBQ0UsXG4gICAgZW5kcG9pbnRJbnRlcmZhY2VTZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLlNTTSxcbiAgfSxcbiAge1xuICAgIGVuZHBvaW50TmFtZTogU2VydmljZUVuZHBvaW50VHlwZXMuRUNSX0FQSSxcbiAgICBlbmRwb2ludFR5cGU6IEVuZHBvaW50VHlwZXMuSU5URVJGQUNFLFxuICAgIGVuZHBvaW50SW50ZXJmYWNlU2VydmljZTogZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5FQ1JcbiAgfSxcbiAge1xuICAgIGVuZHBvaW50TmFtZTogU2VydmljZUVuZHBvaW50VHlwZXMuRUNSX0RLUixcbiAgICBlbmRwb2ludFR5cGU6IEVuZHBvaW50VHlwZXMuSU5URVJGQUNFLFxuICAgIGVuZHBvaW50SW50ZXJmYWNlU2VydmljZTogZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5FQ1JfRE9DS0VSXG4gIH0sXG4gIHtcbiAgICBlbmRwb2ludE5hbWU6IFNlcnZpY2VFbmRwb2ludFR5cGVzLkVWRU5UUyxcbiAgICBlbmRwb2ludFR5cGU6IEVuZHBvaW50VHlwZXMuSU5URVJGQUNFLFxuICAgIGVuZHBvaW50SW50ZXJmYWNlU2VydmljZTogZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5DTE9VRFdBVENIX0VWRU5UU1xuICB9LFxuICB7XG4gICAgZW5kcG9pbnROYW1lOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcy5LSU5FU0lTX0ZJUkVIT1NFLFxuICAgIGVuZHBvaW50VHlwZTogRW5kcG9pbnRUeXBlcy5JTlRFUkZBQ0UsXG4gICAgZW5kcG9pbnRJbnRlcmZhY2VTZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLktJTkVTSVNfRklSRUhPU0VcbiAgfSxcbiAge1xuICAgIGVuZHBvaW50TmFtZTogU2VydmljZUVuZHBvaW50VHlwZXMuS0lORVNJU19TVFJFQU1TLFxuICAgIGVuZHBvaW50VHlwZTogRW5kcG9pbnRUeXBlcy5JTlRFUkZBQ0UsXG4gICAgZW5kcG9pbnRJbnRlcmZhY2VTZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLktJTkVTSVNfU1RSRUFNU1xuICB9LFxuICB7XG4gICAgZW5kcG9pbnROYW1lOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcy5LRU5EUkEsXG4gICAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGVzLklOVEVSRkFDRSxcbiAgICBlbmRwb2ludEludGVyZmFjZVNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuS0VORFJBXG4gIH0sXG4gIHtcbiAgICBlbmRwb2ludE5hbWU6IFNlcnZpY2VFbmRwb2ludFR5cGVzLkJFRFJPQ0ssXG4gICAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGVzLklOVEVSRkFDRSxcbiAgICBlbmRwb2ludEludGVyZmFjZVNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuQkVEUk9DS1xuICB9LFxuICB7XG4gICAgZW5kcG9pbnROYW1lOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcy5CRURST0NLX1JVTlRJTUUsXG4gICAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGVzLklOVEVSRkFDRSxcbiAgICBlbmRwb2ludEludGVyZmFjZVNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuQkVEUk9DS19SVU5USU1FXG4gIH0sXG4gIHtcbiAgICBlbmRwb2ludE5hbWU6IFNlcnZpY2VFbmRwb2ludFR5cGVzLlRSQU5TQ1JJQkUsXG4gICAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGVzLklOVEVSRkFDRSxcbiAgICBlbmRwb2ludEludGVyZmFjZVNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuVFJBTlNDUklCRVxuICB9LFxuICB7XG4gICAgZW5kcG9pbnROYW1lOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcy5UUkFOU0xBVEUsXG4gICAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGVzLklOVEVSRkFDRSxcbiAgICBlbmRwb2ludEludGVyZmFjZVNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuVFJBTlNMQVRFXG4gIH1cbl07XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFkZEF3c1NlcnZpY2VFbmRwb2ludChcbiAgc2NvcGU6IENvbnN0cnVjdCxcbiAgdnBjOiBlYzIuSVZwYyxcbiAgaW50ZXJmYWNlVGFnOiBTZXJ2aWNlRW5kcG9pbnRUeXBlc1xuKSB7XG4gIGlmIChDaGVja0lmRW5kcG9pbnRBbHJlYWR5RXhpc3RzKHZwYywgaW50ZXJmYWNlVGFnKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHNlcnZpY2UgPSBlbmRwb2ludFNldHRpbmdzLmZpbmQoXG4gICAgKGVuZHBvaW50KSA9PiBlbmRwb2ludC5lbmRwb2ludE5hbWUgPT09IGludGVyZmFjZVRhZ1xuICApO1xuXG4gIGlmICghc2VydmljZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIFNlcnZpY2Ugc2VudCB0byBBZGRTZXJ2aWNlRW5kcG9pbnRcIik7XG4gIH1cblxuICBpZiAoc2VydmljZS5lbmRwb2ludFR5cGUgPT09IEVuZHBvaW50VHlwZXMuR0FURVdBWSkge1xuICAgIEFkZEdhdGV3YXlFbmRwb2ludCh2cGMsIHNlcnZpY2UsIGludGVyZmFjZVRhZyk7XG4gIH1cbiAgaWYgKHNlcnZpY2UuZW5kcG9pbnRUeXBlID09PSBFbmRwb2ludFR5cGVzLklOVEVSRkFDRSkge1xuICAgIEFkZEludGVyZmFjZUVuZHBvaW50KHNjb3BlLCB2cGMsIHNlcnZpY2UsIGludGVyZmFjZVRhZyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gQ2hlY2tJZkVuZHBvaW50QWxyZWFkeUV4aXN0cyh2cGM6IGVjMi5JVnBjLCBpbnRlcmZhY2VUYWc6IFNlcnZpY2VFbmRwb2ludFR5cGVzKTogYm9vbGVhbiB7XG4gIHJldHVybiB2cGMubm9kZS5jaGlsZHJlbi5zb21lKChjaGlsZCkgPT4gY2hpbGQubm9kZS5pZCA9PT0gaW50ZXJmYWNlVGFnKTtcbn1cblxuZnVuY3Rpb24gU3VwcHJlc3NNYXBQdWJsaWNJcFdhcm5pbmdzKHZwYzogZWMyLlZwYykge1xuICAvLyBBZGQgQ2ZuIE5hZyBzdXBwcmVzc2lvbiBmb3IgUFVCTElDIHN1Ym5ldHMgdG8gc3VwcHJlc3MgV0FSTiBXMzM6IEVDMiBTdWJuZXQgc2hvdWxkIG5vdCBoYXZlIE1hcFB1YmxpY0lwT25MYXVuY2ggc2V0IHRvIHRydWVcbiAgdnBjLnB1YmxpY1N1Ym5ldHMuZm9yRWFjaCgoc3VibmV0KSA9PiB7XG4gICAgY29uc3QgY2ZuU3VibmV0ID0gc3VibmV0Lm5vZGUuZGVmYXVsdENoaWxkIGFzIGVjMi5DZm5TdWJuZXQ7XG4gICAgYWRkQ2ZuU3VwcHJlc3NSdWxlcyhjZm5TdWJuZXQsIFtcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdXMzMnLFxuICAgICAgICByZWFzb246ICdBbGxvdyBQdWJsaWMgU3VibmV0cyB0byBoYXZlIE1hcFB1YmxpY0lwT25MYXVuY2ggc2V0IHRvIHRydWUnXG4gICAgICB9XG4gICAgXSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBTdXBwcmVzc0VuY3J5cHRlZExvZ1dhcm5pbmdzKGZsb3dMb2c6IGVjMi5GbG93TG9nKSB7XG4gIC8vIEFkZCBDZm4gTmFnIHN1cHByZXNzaW9uIGZvciBDbG91ZFdhdGNoTG9ncyBMb2dHcm91cHMgZGF0YSBpcyBlbmNyeXB0ZWRcbiAgY29uc3QgY2ZuTG9nR3JvdXA6IENmbkxvZ0dyb3VwID0gZmxvd0xvZy5sb2dHcm91cD8ubm9kZS5kZWZhdWx0Q2hpbGQgYXMgQ2ZuTG9nR3JvdXA7XG4gIGFkZENmblN1cHByZXNzUnVsZXMoY2ZuTG9nR3JvdXAsIFtcbiAgICB7XG4gICAgICBpZDogJ1c4NCcsXG4gICAgICByZWFzb246ICdCeSBkZWZhdWx0IENsb3VkV2F0Y2hMb2dzIExvZ0dyb3VwcyBkYXRhIGlzIGVuY3J5cHRlZCB1c2luZyB0aGUgQ2xvdWRXYXRjaCBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIGtleXMgKEFXUyBNYW5hZ2VkIEtleXMpJ1xuICAgIH1cbiAgXSk7XG59XG5cbmZ1bmN0aW9uIEFkZEludGVyZmFjZUVuZHBvaW50KHNjb3BlOiBDb25zdHJ1Y3QsIHZwYzogZWMyLklWcGMsIHNlcnZpY2U6IEVuZHBvaW50RGVmaW5pdGlvbiwgaW50ZXJmYWNlVGFnOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcykge1xuICBjb25zdCBlbmRwb2ludERlZmF1bHRTZWN1cml0eUdyb3VwID0gYnVpbGRTZWN1cml0eUdyb3VwKFxuICAgIHNjb3BlLFxuICAgIGAke3Njb3BlLm5vZGUuaWR9LSR7c2VydmljZS5lbmRwb2ludE5hbWV9YCxcbiAgICB7XG4gICAgICB2cGMsXG4gICAgICBhbGxvd0FsbE91dGJvdW5kOiB0cnVlLFxuICAgIH0sXG4gICAgW3sgcGVlcjogZWMyLlBlZXIuaXB2NCh2cGMudnBjQ2lkckJsb2NrKSwgY29ubmVjdGlvbjogZWMyLlBvcnQudGNwKDQ0MykgfV0sXG4gICAgW11cbiAgKTtcblxuICB2cGMuYWRkSW50ZXJmYWNlRW5kcG9pbnQoaW50ZXJmYWNlVGFnLCB7XG4gICAgc2VydmljZTogc2VydmljZS5lbmRwb2ludEludGVyZmFjZVNlcnZpY2UgYXMgZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZSxcbiAgICBzZWN1cml0eUdyb3VwczogW2VuZHBvaW50RGVmYXVsdFNlY3VyaXR5R3JvdXBdLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gQWRkR2F0ZXdheUVuZHBvaW50KHZwYzogZWMyLklWcGMsIHNlcnZpY2U6IEVuZHBvaW50RGVmaW5pdGlvbiwgaW50ZXJmYWNlVGFnOiBTZXJ2aWNlRW5kcG9pbnRUeXBlcykge1xuICB2cGMuYWRkR2F0ZXdheUVuZHBvaW50KGludGVyZmFjZVRhZywge1xuICAgIHNlcnZpY2U6IHNlcnZpY2UuZW5kcG9pbnRHYXRld2F5U2VydmljZSBhcyBlYzIuR2F0ZXdheVZwY0VuZHBvaW50QXdzU2VydmljZSxcbiAgfSk7XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJldHJpZXZlUHJpdmF0ZVN1Ym5ldElkcyh2cGM6IGVjMi5JVnBjKSB7XG4gIGxldCB0YXJnZXRTdWJuZXRUeXBlO1xuXG4gIGlmICh2cGMuaXNvbGF0ZWRTdWJuZXRzLmxlbmd0aCkge1xuICAgIHRhcmdldFN1Ym5ldFR5cGUgPSBlYzIuU3VibmV0VHlwZS5QUklWQVRFX0lTT0xBVEVEO1xuICB9IGVsc2UgaWYgKHZwYy5wcml2YXRlU3VibmV0cy5sZW5ndGgpIHtcbiAgICB0YXJnZXRTdWJuZXRUeXBlID0gZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUztcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIC0gTm8gaXNvbGF0ZWQgb3IgcHJpdmF0ZSBzdWJuZXRzIGF2YWlsYWJsZSBpbiBWUEMnKTtcbiAgfVxuXG4gIGNvbnN0IHN1Ym5ldFNlbGVjdG9yID0ge1xuICAgIG9uZVBlckF6OiB0cnVlLFxuICAgIHN1Ym5ldFR5cGU6IHRhcmdldFN1Ym5ldFR5cGVcbiAgfTtcblxuICByZXR1cm4gdnBjLnNlbGVjdFN1Ym5ldHMoc3VibmV0U2VsZWN0b3IpLnN1Ym5ldElkcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWcGNQcm9wc1NldCB7XG4gIHJlYWRvbmx5IGV4aXN0aW5nVnBjPzogZWMyLklWcGM7XG4gIHJlYWRvbmx5IHZwY1Byb3BzPzogZWMyLlZwY1Byb3BzO1xuICByZWFkb25seSBkZXBsb3lWcGM/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 {};
|