@rio-cloud/cdk-v2-constructs 7.2.0 → 7.4.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 +4 -4
- package/docs/changelog.md +14 -0
- package/lib/contributions/team-transport-two/pipeline/buildspecs.js +6 -1
- package/lib/contributions/team-transport-two/pipeline/pipeline-stack.d.ts +1 -0
- package/lib/contributions/team-transport-two/pipeline/pipeline-stack.js +5 -2
- package/lib/test/normalized-test-template.js +4 -2
- package/package.json +1 -1
- package/version.json +1 -1
package/.jsii
CHANGED
|
@@ -9920,7 +9920,7 @@
|
|
|
9920
9920
|
},
|
|
9921
9921
|
"locationInModule": {
|
|
9922
9922
|
"filename": "src/contributions/team-transport-two/pipeline/pipeline-stack.ts",
|
|
9923
|
-
"line":
|
|
9923
|
+
"line": 285
|
|
9924
9924
|
},
|
|
9925
9925
|
"parameters": [
|
|
9926
9926
|
{
|
|
@@ -9957,7 +9957,7 @@
|
|
|
9957
9957
|
"immutable": true,
|
|
9958
9958
|
"locationInModule": {
|
|
9959
9959
|
"filename": "src/contributions/team-transport-two/pipeline/pipeline-stack.ts",
|
|
9960
|
-
"line":
|
|
9960
|
+
"line": 345
|
|
9961
9961
|
},
|
|
9962
9962
|
"name": "branchCodeBuildProject",
|
|
9963
9963
|
"type": {
|
|
@@ -9971,7 +9971,7 @@
|
|
|
9971
9971
|
"immutable": true,
|
|
9972
9972
|
"locationInModule": {
|
|
9973
9973
|
"filename": "src/contributions/team-transport-two/pipeline/pipeline-stack.ts",
|
|
9974
|
-
"line":
|
|
9974
|
+
"line": 341
|
|
9975
9975
|
},
|
|
9976
9976
|
"name": "mainCodebuildProject",
|
|
9977
9977
|
"type": {
|
|
@@ -21784,5 +21784,5 @@
|
|
|
21784
21784
|
}
|
|
21785
21785
|
},
|
|
21786
21786
|
"version": "0.0.0",
|
|
21787
|
-
"fingerprint": "
|
|
21787
|
+
"fingerprint": "T+gdXJAd20epSE/2LXzOZOtBWafYTv5koDm4a9IYoM4="
|
|
21788
21788
|
}
|
package/docs/changelog.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [7.4.0](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv7.3.0&sourceBranch=refs%2Ftags%2Fv7.4.0) (2025-05-14)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* updated NormalizedTestTemplate logic to ignore LatestNodeRuntimeMap ([5acce50](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/commits/5acce503841093bc382c9172a50b4f8188a4b428))
|
|
11
|
+
|
|
12
|
+
## [7.3.0](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv7.2.0&sourceBranch=refs%2Ftags%2Fv7.3.0) (2025-04-30)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* **pipeline:** Provide more environment variables for builds ([a1d61eb](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/commits/a1d61ebd13dde22f2ea27528d991d0d7960c7298))
|
|
18
|
+
|
|
5
19
|
## [7.2.0](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv7.1.2&sourceBranch=refs%2Ftags%2Fv7.2.0) (2025-04-23)
|
|
6
20
|
|
|
7
21
|
|
|
@@ -10,6 +10,7 @@ const createMainBuildSpec = (features) => {
|
|
|
10
10
|
buildCommands.push(...(0, exports.exportCommitHashAsVersion)());
|
|
11
11
|
env['parameter-store'] = {
|
|
12
12
|
ACCOUNT_NAME: '/config/account/name',
|
|
13
|
+
TEAM_IDENTIFIER: '/config/team/identifier',
|
|
13
14
|
};
|
|
14
15
|
if (features.gradleBuild) {
|
|
15
16
|
buildCommands.push(...gradleBuildCommands(features.kafkaIntegration ?? false));
|
|
@@ -164,6 +165,10 @@ const gradleBuildCommands = (kafkaIntegration) => {
|
|
|
164
165
|
const npmBuildCommands = () => [
|
|
165
166
|
'### NPM BUILD ###',
|
|
166
167
|
'export VITE_GIT_VERSION=$GIT_VERSION',
|
|
168
|
+
'export VITE_AWS_ACCOUNT_ID=$AWS_ACCOUNT_ID',
|
|
169
|
+
'export VITE_AWS_ACCOUNT_NAME=$ACCOUNT_NAME',
|
|
170
|
+
'export VITE_SERVICE_NAME=$SERVICE_NAME',
|
|
171
|
+
'export VITE_TEAM_IDENTIFIER=$TEAM_IDENTIFIER',
|
|
167
172
|
'npm ci',
|
|
168
173
|
'npm run lint',
|
|
169
174
|
'npm run test:ci',
|
|
@@ -201,4 +206,4 @@ const createReports = (features) => {
|
|
|
201
206
|
}
|
|
202
207
|
return reports;
|
|
203
208
|
};
|
|
204
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRzcGVjcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb250cmlidXRpb25zL3RlYW0tdHJhbnNwb3J0LXR3by9waXBlbGluZS9idWlsZHNwZWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZEQUFzRDtBQUd0RCxNQUFNLHlCQUF5QixHQUFHLE9BQU8sQ0FBQztBQUMxQyxNQUFNLHFCQUFxQixHQUFHLHlDQUF5Qyx5QkFBeUIsRUFBRSxDQUFDO0FBRTVGLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxRQUEwQixFQUFhLEVBQUU7SUFDM0UsTUFBTSxHQUFHLEdBQTJDLEVBQUUsQ0FBQztJQUN2RCxNQUFNLGFBQWEsR0FBYSxFQUFFLENBQUM7SUFDbkMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUEsaUNBQXlCLEdBQUUsQ0FBQyxDQUFDO0lBRW5ELEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHO1FBQ3ZCLFlBQVksRUFBRSxzQkFBc0I7S0FDckMsQ0FBQztJQUVGLElBQUksUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pCLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMvRSxHQUFHLENBQUMsaUJBQWlCLENBQUMsR0FBRztZQUN2QixHQUFHLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUU7WUFDL0IseUJBQXlCLEVBQUUsbURBQW1EO1lBQzlFLG1CQUFtQixFQUFFLGtDQUFrQztTQUN4RCxDQUFDO0lBQ0osQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDOUIsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEdBQUc7WUFDdkIsR0FBRyxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFO1lBQy9CLDhDQUE4QyxFQUFFLDBFQUEwRTtTQUMzSCxDQUFDO0lBQ0osQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RCLEdBQUcsQ0FBQyxTQUFTLEdBQUc7WUFDZCxFQUFFLEVBQUUsTUFBTTtTQUNYLENBQUM7UUFDRixhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ3JDLGFBQWEsQ0FBQyxJQUFJLENBQUMsbUNBQW1DLEVBQUUsR0FBRyxRQUFRLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLDJCQUEyQixFQUFFLENBQUMsQ0FBQztJQUVyRCxPQUFPLHlCQUFTLENBQUMsVUFBVSxDQUFDO1FBQzFCLE9BQU8sRUFBRSxLQUFLO1FBQ2QsR0FBRztRQUNILE1BQU0sRUFBRTtZQUNOLE9BQU8sRUFBRTtnQkFDUCxrQkFBa0IsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDO2FBQzFDO1lBQ0QsU0FBUyxFQUFFO2dCQUNULFFBQVEsRUFBRSxJQUFBLHFCQUFhLEdBQUU7YUFDMUI7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wsUUFBUSxFQUFFLGFBQWE7YUFDeEI7WUFDRCxVQUFVLEVBQUU7Z0JBQ1YsUUFBUSxFQUFFLElBQUEscUJBQWEsR0FBRTthQUMxQjtTQUNGO1FBQ0QsT0FBTyxFQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUM7UUFDaEMsS0FBSyxFQUFFO1lBQ0wsS0FBSyxFQUFFLFVBQVUsRUFBRTtTQUNwQjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQXpEVyxRQUFBLG1CQUFtQix1QkF5RDlCO0FBR0ssTUFBTSw0QkFBNEIsR0FBRyxDQUFDLFFBQTBCLEVBQUUsRUFBRTtJQUN6RSxNQUFNLEdBQUcsR0FBMkMsRUFBRSxDQUFDO0lBQ3ZELE1BQU0sYUFBYSxHQUFhLEVBQUUsQ0FBQztJQUVuQyxJQUFJLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6QixHQUFHLENBQUMsU0FBUyxHQUFHO1lBQ2QsSUFBSSxFQUFFLFNBQVM7U0FDaEIsQ0FBQztRQUNGLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHO1lBQ3ZCLG9CQUFvQixFQUFFLDhCQUE4QjtTQUNyRCxDQUFDO1FBQ0YsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHO1lBQ3BCLG9DQUFvQztZQUNwQyw4REFBOEQ7U0FDL0QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RCLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRztZQUNwQixpQ0FBaUM7WUFDakMsK0ZBQStGO1NBQ2hHLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUc7UUFDcEIsNENBQTRDO1FBQzVDLG1CQUFtQjtRQUNuQiwrRkFBK0Y7UUFDL0YsT0FBTztLQUNSLENBQUMsQ0FBQztJQUVILE9BQU8seUJBQVMsQ0FBQyxVQUFVLENBQUM7UUFDMUIsT0FBTyxFQUFFLEtBQUs7UUFDZCxHQUFHO1FBQ0gsTUFBTSxFQUFFO1lBQ04sT0FBTyxFQUFFO2dCQUNQLGtCQUFrQixFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUM7YUFDMUM7WUFDRCxTQUFTLEVBQUU7Z0JBQ1QsUUFBUSxFQUFFLElBQUEscUJBQWEsR0FBRTthQUMxQjtZQUNELEtBQUssRUFBRTtnQkFDTCxRQUFRLEVBQUUsYUFBYTthQUN4QjtZQUNELFVBQVUsRUFBRTtnQkFDVixRQUFRLEVBQUUsSUFBQSxxQkFBYSxHQUFFO2FBQzFCO1NBQ0Y7UUFDRCxLQUFLLEVBQUU7WUFDTCxLQUFLLEVBQUUsdUJBQXVCLEVBQUU7U0FDakM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFsRFcsUUFBQSw0QkFBNEIsZ0NBa0R2QztBQUVGLE1BQU0sV0FBVyxHQUFHLENBQUMsUUFBMEIsRUFBRSxFQUFFO0lBQ2pELE1BQU0sUUFBUSxHQUEyQixFQUFFLENBQUM7SUFDNUMsSUFBSSxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekIsUUFBUSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUM7SUFDL0IsQ0FBQztJQUNELFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVLLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ2pDLHNHQUFzRztDQUN2RyxDQUFDO0FBRlcsUUFBQSxhQUFhLGlCQUV4QjtBQUVLLE1BQU0seUJBQXlCLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDN0MsMENBQTBDO0NBQzNDLENBQUM7QUFGVyxRQUFBLHlCQUF5Qiw2QkFFcEM7QUFFRixNQUFNLDJCQUEyQixHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ3hDLDhCQUE4QjtJQUM5QixtQkFBbUI7SUFDbkIsUUFBUTtJQUNSLEdBQUcscUJBQXFCLDhGQUE4RjtJQUN0SCxnQ0FBZ0M7SUFDaEMsaUdBQWlHO0lBQ2pHLGtFQUFrRTtJQUNsRSwwS0FBMEs7SUFDMUssT0FBTztDQUNSLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFHLENBQUMsZ0JBQXlCLEVBQUUsRUFBRTtJQUN4RCxNQUFNLFFBQVEsR0FBYSxFQUFFLENBQUM7SUFDOUIsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHO1FBQ2Ysc0JBQXNCO1FBQ3RCLHVCQUF1QjtRQUN2QixpQkFBaUI7UUFDakIsR0FBRyxxQkFBcUIseUZBQXlGO1FBQ2pILDJCQUEyQjtRQUMzQiw0VUFBNFU7S0FDN1UsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3JCLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRztZQUNmLHFCQUFxQjtZQUNyQiw4R0FBOEc7WUFDOUcsc0NBQXNDO1lBQ3RDLDhIQUE4SDtZQUM5SCw0REFBNEQ7U0FDN0QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRztRQUNmLHNCQUFzQjtRQUN0QiwrQkFBK0I7S0FDaEMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUM3QixtQkFBbUI7SUFDbkIsc0NBQXNDO0lBQ3RDLFFBQVE7SUFDUixjQUFjO0lBQ2QsaUJBQWlCO0lBQ2pCLEdBQUcscUJBQXFCLCtGQUErRjtJQUN2SCxlQUFlO0NBQ2hCLENBQUM7QUFFRixNQUFNLFVBQVUsR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUN2QixZQUFZO0lBQ1osbUJBQW1CO0lBQ25CLGlCQUFpQjtJQUNqQiwyQkFBMkI7SUFDM0IsNEJBQTRCO0lBQzVCLHdDQUF3QztJQUN4Qyx1QkFBdUI7Q0FDeEIsQ0FBQztBQUVGLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDcEMsbUJBQW1CO0lBQ25CLDJCQUEyQjtJQUMzQiw0QkFBNEI7SUFDNUIsMENBQTBDO0NBQzNDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxDQUFDLFFBQTBCLEVBQUUsRUFBRTtJQUNuRCxNQUFNLE9BQU8sR0FBd0IsRUFBRSxDQUFDO0lBQ3hDLElBQUksUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sQ0FBQyxzQkFBc0IsR0FBRztZQUMvQixPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDakIsZ0JBQWdCLEVBQUUsb0JBQW9CO1NBQ3ZDLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEIsT0FBTyxDQUFDLG1CQUFtQixHQUFHO1lBQzVCLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNqQixnQkFBZ0IsRUFBRSxTQUFTO1NBQzVCLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnVpbGRTcGVjIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZGVidWlsZCc7XG5pbXBvcnQgeyBQaXBlbGluZUZlYXR1cmVzIH0gZnJvbSAnLi9waXBlbGluZS1zdGFjayc7XG5cbmNvbnN0IFJJT19MSUNFTlNFX0NIRUNLX1ZFUlNJT04gPSAnMS4wLjAnO1xuY29uc3QgTElDRU5TRV9DSEVDS19DT01NQU5EID0gYG5weCAteSBAcmlvLWNsb3VkL3Jpby1saWNlbnNlLWNoZWNrZXJAJHtSSU9fTElDRU5TRV9DSEVDS19WRVJTSU9OfWA7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVNYWluQnVpbGRTcGVjID0gKGZlYXR1cmVzOiBQaXBlbGluZUZlYXR1cmVzKTogQnVpbGRTcGVjID0+IHtcbiAgY29uc3QgZW52OiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiA9IHt9O1xuICBjb25zdCBidWlsZENvbW1hbmRzOiBzdHJpbmdbXSA9IFtdO1xuICBidWlsZENvbW1hbmRzLnB1c2goLi4uZXhwb3J0Q29tbWl0SGFzaEFzVmVyc2lvbigpKTtcblxuICBlbnZbJ3BhcmFtZXRlci1zdG9yZSddID0ge1xuICAgIEFDQ09VTlRfTkFNRTogJy9jb25maWcvYWNjb3VudC9uYW1lJyxcbiAgfTtcblxuICBpZiAoZmVhdHVyZXMuZ3JhZGxlQnVpbGQpIHtcbiAgICBidWlsZENvbW1hbmRzLnB1c2goLi4uZ3JhZGxlQnVpbGRDb21tYW5kcyhmZWF0dXJlcy5rYWZrYUludGVncmF0aW9uID8/IGZhbHNlKSk7XG4gICAgZW52WydwYXJhbWV0ZXItc3RvcmUnXSA9IHtcbiAgICAgIC4uLmVudlsncGFyYW1ldGVyLXN0b3JlJ10gPz8ge30sXG4gICAgICBTRVJWSUNFX0tFWVNUT1JFX1BBU1NXT1JEOiAnL2NvbmZpZy8ke1NFUlZJQ0VfTkFNRX0vc2VydmljZS1rZXlzdG9yZS1wYXNzd29yZCcsXG4gICAgICBMSUNFTlNFX0JVQ0tFVF9OQU1FOiAnL2NvbmZpZy9vc3MtbGljZW5zZXMvYnVja2V0LW5hbWUnLFxuICAgIH07XG4gIH1cbiAgaWYgKGZlYXR1cmVzLmthZmthSW50ZWdyYXRpb24pIHtcbiAgICBlbnZbJ3BhcmFtZXRlci1zdG9yZSddID0ge1xuICAgICAgLi4uZW52WydwYXJhbWV0ZXItc3RvcmUnXSA/PyB7fSxcbiAgICAgIENSRUFURV9BTkRfU0lHTl9DRVJUSUZJQ0FURV9TQ1JJUFRfUzNfTE9DQVRJT046ICcvY29uZmlnL2thZmthLWludGVncmF0aW9uL2NyZWF0ZS1hbmQtc2lnbi1jZXJ0aWZpY2F0ZS1zY3JpcHQtczMtbG9jYXRpb24nLFxuICAgIH07XG4gIH1cbiAgaWYgKGZlYXR1cmVzLm5wbUJ1aWxkKSB7XG4gICAgZW52LnZhcmlhYmxlcyA9IHtcbiAgICAgIENJOiAndHJ1ZScsXG4gICAgfTtcbiAgICBidWlsZENvbW1hbmRzLnB1c2goLi4ubnBtQnVpbGRDb21tYW5kcygpKTtcbiAgfVxuICBpZiAoZmVhdHVyZXMuYWRkaXRpb25hbEJ1aWxkQ29tbWFuZHMpIHtcbiAgICBidWlsZENvbW1hbmRzLnB1c2goJyMjIyBBRERJVElPTkFMIEJVSUxEIENPTU1BTkRTICMjIycsIC4uLmZlYXR1cmVzLmFkZGl0aW9uYWxCdWlsZENvbW1hbmRzKTtcbiAgfVxuXG4gIGJ1aWxkQ29tbWFuZHMucHVzaCguLi5pbmZyYXN0cnVjdHVyZUJ1aWxkQ29tbWFuZHMoKSk7XG5cbiAgcmV0dXJuIEJ1aWxkU3BlYy5mcm9tT2JqZWN0KHtcbiAgICB2ZXJzaW9uOiAnMC4yJyxcbiAgICBlbnYsXG4gICAgcGhhc2VzOiB7XG4gICAgICBpbnN0YWxsOiB7XG4gICAgICAgICdydW50aW1lLXZlcnNpb25zJzogZ2V0UnVudGltZXMoZmVhdHVyZXMpLFxuICAgICAgfSxcbiAgICAgIHByZV9idWlsZDoge1xuICAgICAgICBjb21tYW5kczogbG9nQ29tbWl0SGFzaCgpLFxuICAgICAgfSxcbiAgICAgIGJ1aWxkOiB7XG4gICAgICAgIGNvbW1hbmRzOiBidWlsZENvbW1hbmRzLFxuICAgICAgfSxcbiAgICAgIHBvc3RfYnVpbGQ6IHtcbiAgICAgICAgY29tbWFuZHM6IGxvZ0NvbW1pdEhhc2goKSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICByZXBvcnRzOiBjcmVhdGVSZXBvcnRzKGZlYXR1cmVzKSxcbiAgICBjYWNoZToge1xuICAgICAgcGF0aHM6IGNhY2hlUGF0aHMoKSxcbiAgICB9LFxuICB9KTtcbn07XG5cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVZ1bG5lcmFiaWxpdHlCdWlsZFNwZWMgPSAoZmVhdHVyZXM6IFBpcGVsaW5lRmVhdHVyZXMpID0+IHtcbiAgY29uc3QgZW52OiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiA9IHt9O1xuICBjb25zdCBidWlsZENvbW1hbmRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGlmIChmZWF0dXJlcy5ncmFkbGVCdWlsZCkge1xuICAgIGVudi52YXJpYWJsZXMgPSB7XG4gICAgICBMQU5HOiAnQy5VVEYtOCcsXG4gICAgfTtcbiAgICBlbnZbJ3BhcmFtZXRlci1zdG9yZSddID0ge1xuICAgICAgTklTVF9EQVRBX01JUlJPUl9VUkw6ICcvY29uZmlnL25pc3QtZGF0YS1taXJyb3IvdXJsJyxcbiAgICB9O1xuICAgIGJ1aWxkQ29tbWFuZHMucHVzaCguLi5bXG4gICAgICAnIyMjIEdSQURMRSBWVUxORVJBQklMSVRZIENIRUNLICMjIycsXG4gICAgICAnLi9ncmFkbGV3IC1Eb3JnLmdyYWRsZS5qdm1hcmdzPS1YbXg0ZyBkZXBlbmRlbmN5Q2hlY2tBbmFseXplJyxcbiAgICBdKTtcbiAgfVxuICBpZiAoZmVhdHVyZXMubnBtQnVpbGQpIHtcbiAgICBidWlsZENvbW1hbmRzLnB1c2goLi4uW1xuICAgICAgJyMjIyBOUE0gVlVMTkVSQUJJTElUWSBDSEVDSyAjIyMnLFxuICAgICAgJ25wbSBhdWRpdCAtLXJlZ2lzdHJ5IGh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnIC0tYXVkaXQtbGV2ZWwgbW9kZXJhdGUgLS1wYXJzZWFibGUgLS1vbWl0PWRldicsXG4gICAgXSk7XG4gIH1cbiAgYnVpbGRDb21tYW5kcy5wdXNoKC4uLltcbiAgICAnIyMjIElORlJBU1RSVUNUVVJFIFZVTE5FUkFCSUxJVFkgQ0hFQ0sgIyMjJyxcbiAgICAnY2QgaW5mcmFzdHJ1Y3R1cmUnLFxuICAgICducG0gYXVkaXQgLS1yZWdpc3RyeSBodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZyAtLWF1ZGl0LWxldmVsIG1vZGVyYXRlIC0tcGFyc2VhYmxlIC0tb21pdD1kZXYnLFxuICAgICdjZCAuLicsXG4gIF0pO1xuXG4gIHJldHVybiBCdWlsZFNwZWMuZnJvbU9iamVjdCh7XG4gICAgdmVyc2lvbjogJzAuMicsXG4gICAgZW52LFxuICAgIHBoYXNlczoge1xuICAgICAgaW5zdGFsbDoge1xuICAgICAgICAncnVudGltZS12ZXJzaW9ucyc6IGdldFJ1bnRpbWVzKGZlYXR1cmVzKSxcbiAgICAgIH0sXG4gICAgICBwcmVfYnVpbGQ6IHtcbiAgICAgICAgY29tbWFuZHM6IGxvZ0NvbW1pdEhhc2goKSxcbiAgICAgIH0sXG4gICAgICBidWlsZDoge1xuICAgICAgICBjb21tYW5kczogYnVpbGRDb21tYW5kcyxcbiAgICAgIH0sXG4gICAgICBwb3N0X2J1aWxkOiB7XG4gICAgICAgIGNvbW1hbmRzOiBsb2dDb21taXRIYXNoKCksXG4gICAgICB9LFxuICAgIH0sXG4gICAgY2FjaGU6IHtcbiAgICAgIHBhdGhzOiBjYWNoZVBhdGhzVnVsbmVyYWJpbGl0eSgpLFxuICAgIH0sXG4gIH0pO1xufTtcblxuY29uc3QgZ2V0UnVudGltZXMgPSAoZmVhdHVyZXM6IFBpcGVsaW5lRmVhdHVyZXMpID0+IHtcbiAgY29uc3QgcnVudGltZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgaWYgKGZlYXR1cmVzLmdyYWRsZUJ1aWxkKSB7XG4gICAgcnVudGltZXMuamF2YSA9ICdjb3JyZXR0bzE3JztcbiAgfVxuICBydW50aW1lcy5ub2RlanMgPSAnMjAnO1xuICByZXR1cm4gcnVudGltZXM7XG59O1xuXG5leHBvcnQgY29uc3QgbG9nQ29tbWl0SGFzaCA9ICgpID0+IFtcbiAgJyhlY2hvIFwiQnVpbGQgdHJpZ2dlcmVkIGJ5IGNvbW1pdCBcIiAmJiBnaXQgbG9nIC0tcHJldHR5PWZvcm1hdDpcIiVoJXgwOSVhbiV4MDklc1wiIC1uIDEgKSB8IHRyIC1kIFwiXFxcXG5cIicsXG5dO1xuXG5leHBvcnQgY29uc3QgZXhwb3J0Q29tbWl0SGFzaEFzVmVyc2lvbiA9ICgpID0+IFtcbiAgJ2V4cG9ydCBHSVRfVkVSU0lPTj0kKGdpdCByZXYtcGFyc2UgSEVBRCknLFxuXTtcblxuY29uc3QgaW5mcmFzdHJ1Y3R1cmVCdWlsZENvbW1hbmRzID0gKCkgPT4gW1xuICAnIyMjIElORlJBU1RSVUNUVVJFIEJVSUxEICMjIycsXG4gICdjZCBpbmZyYXN0cnVjdHVyZScsXG4gICducG0gY2knLFxuICBgJHtMSUNFTlNFX0NIRUNLX0NPTU1BTkR9IC0tdHlwZSBucG0tYmFja2VuZCAtLWFjY291bnQtbmFtZSBcXCR7QUNDT1VOVF9OQU1FfSAtLXNlcnZpY2UtbmFtZSBcXCR7U0VSVklDRV9OQU1FfSAtLXVwbG9hZGAsXG4gICducG0gcnVuIGNkayBzeW50aCAxPiAvZGV2L251bGwnLFxuICAvLyBJbiBwaXBlbGluZTogRXJyb3IgcGFyc2luZyByZWZlcmVuY2U6IGlzIG5vdCBhIHZhbGlkIHJlcG9zaXRvcnkvdGFnOiBpbnZhbGlkIHJlZmVyZW5jZSBmb3JtYXQuXG4gIC8vIHdvcmthcm91bmQgZHVlIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9pc3N1ZXMvMTgwNDQnLFxuICAnZmluZCAuLyAtdHlwZSBmIC1uYW1lIFwiKkRlcGxveUFwcGxpY2F0aW9uU3RhY2tzKi5hc3NldHMuanNvblwiIC1wcmludDAgfCB4YXJncyAtLW5vLXJ1bi1pZi1lbXB0eSAtMCBzZWQgLS1pbi1wbGFjZSBcXCdzfGRvY2tlciBsb2FkIC1pIGFzc2V0Lnxkb2NrZXIgbG9hZCAtaSAuLi9hc3NldC58Z1xcJycsXG4gICdjZCAuLicsXG5dO1xuXG5jb25zdCBncmFkbGVCdWlsZENvbW1hbmRzID0gKGthZmthSW50ZWdyYXRpb246IGJvb2xlYW4pID0+IHtcbiAgY29uc3QgY29tbWFuZHM6IHN0cmluZ1tdID0gW107XG4gIGNvbW1hbmRzLnB1c2goLi4uW1xuICAgICcjIyMgR1JBRExFIEJVSUxEICMjIycsXG4gICAgJy4vZ3JhZGxldyBjbGVhbiBidWlsZCcsXG4gICAgJyMgbGljZW5zZSBjaGVjaycsXG4gICAgYCR7TElDRU5TRV9DSEVDS19DT01NQU5EfSAtLXR5cGUgZ3JhZGxlIC0tYWNjb3VudC1uYW1lIFxcJHtBQ0NPVU5UX05BTUV9IC0tc2VydmljZS1uYW1lIFxcJHtTRVJWSUNFX05BTUV9IC0tdXBsb2FkYCxcbiAgICAnIyBzZWxmIHNpZ25lZCBjZXJ0aWZpY2F0ZScsXG4gICAgJ3NldCAtdTsga2V5dG9vbCAtZ2Vua2V5IC1hbGlhcyBJbnRlcm5hbFNlcnZpY2VDZXJ0aWZpY2F0ZSAta2V5YWxnIFJTQSAta2V5c3RvcmUgY29udGFpbmVyZmlsZXMvc2VydmljZS1rZXlzdG9yZS5wMTIgLXZhbGlkaXR5IDM2NTAgLXN0b3JldHlwZSBQS0NTMTIgLWRuYW1lIFwiQ049aW50ZXJuYWwuc2VydmljZS4ke1NFUlZJQ0VfTkFNRX0uJHtIT1NURURfWk9ORX0sIE9VPUxvZ2lzdGljcywgTz1SaW8sIEw9TXVuaWNoLCBTVD1CWSwgQz1ERVwiIC1rZXlwYXNzICR7U0VSVklDRV9LRVlTVE9SRV9QQVNTV09SRH0gLXN0b3JlcGFzcyAke1NFUlZJQ0VfS0VZU1RPUkVfUEFTU1dPUkR9JyxcbiAgXSk7XG4gIGlmIChrYWZrYUludGVncmF0aW9uKSB7XG4gICAgY29tbWFuZHMucHVzaCguLi5bXG4gICAgICAnIyBrYWZrYSBjZXJ0aWZpY2F0ZScsXG4gICAgICAnc2V0IC11OyBhd3MgczMgY3AgLS1xdWlldCBzMzovLyR7Q1JFQVRFX0FORF9TSUdOX0NFUlRJRklDQVRFX1NDUklQVF9TM19MT0NBVElPTn0gY3JlYXRlLWFuZC1zaWduLWNlcnRpZmljYXRlJyxcbiAgICAgICdjaG1vZCAreCBjcmVhdGUtYW5kLXNpZ24tY2VydGlmaWNhdGUnLFxuICAgICAgJ3NldCAtdTsgLi9jcmVhdGUtYW5kLXNpZ24tY2VydGlmaWNhdGUgLS1rZXlzdG9yZS1wYXNzd29yZCAke1NFUlZJQ0VfS0VZU1RPUkVfUEFTU1dPUkR9IC0tZnFkbiAke1NFUlZJQ0VfTkFNRX0uJHtIT1NURURfWk9ORX0nLFxuICAgICAgJ2NwIC9jZXJ0L2NlcnRpZmljYXRlLnAxMiBjb250YWluZXJmaWxlcy9rYWZrYS1rZXlzdG9yZS5wMTInLFxuICAgIF0pO1xuICB9XG4gIGNvbW1hbmRzLnB1c2goLi4uW1xuICAgICcjIGRvY2tlciBpbWFnZSBidWlsZCcsXG4gICAgJy4vZ3JhZGxldyBqaWJCdWlsZFRhciAtLXF1aWV0JyxcbiAgXSk7XG4gIHJldHVybiBjb21tYW5kcztcbn07XG5cbmNvbnN0IG5wbUJ1aWxkQ29tbWFuZHMgPSAoKSA9PiBbXG4gICcjIyMgTlBNIEJVSUxEICMjIycsXG4gICdleHBvcnQgVklURV9HSVRfVkVSU0lPTj0kR0lUX1ZFUlNJT04nLFxuICAnbnBtIGNpJyxcbiAgJ25wbSBydW4gbGludCcsXG4gICducG0gcnVuIHRlc3Q6Y2knLFxuICBgJHtMSUNFTlNFX0NIRUNLX0NPTU1BTkR9IC0tdHlwZSBucG0tZnJvbnRlbmQgLS1hY2NvdW50LW5hbWUgXFwke0FDQ09VTlRfTkFNRX0gLS1zZXJ2aWNlLW5hbWUgXFwke1NFUlZJQ0VfTkFNRX0gLS11cGxvYWRgLFxuICAnbnBtIHJ1biBidWlsZCcsXG5dO1xuXG5jb25zdCBjYWNoZVBhdGhzID0gKCkgPT4gW1xuICAnL2NlcnQvKiovKicsXG4gICcvcm9vdC8uY2FjaGUvKiovKicsXG4gICcvcm9vdC8ubnBtLyoqLyonLFxuICAnL3Jvb3QvLmdyYWRsZS9jYWNoZXMvKiovKicsXG4gICcvcm9vdC8uZ3JhZGxlL3dyYXBwZXIvKiovKicsXG4gICcvcm9vdC9nb29nbGUtY2xvdWQtdG9vbHMtamF2YS9qaWIvKiovKicsXG4gICd0YXJnZXQvamliLWNhY2hlLyoqLyonLFxuXTtcblxuY29uc3QgY2FjaGVQYXRoc1Z1bG5lcmFiaWxpdHkgPSAoKSA9PiBbXG4gICcvcm9vdC8uY2FjaGUvKiovKicsXG4gICcvcm9vdC8uZ3JhZGxlL2NhY2hlcy8qKi8qJyxcbiAgJy9yb290Ly5ncmFkbGUvd3JhcHBlci8qKi8qJyxcbiAgJy9yb290Ly5ncmFkbGUvZGVwZW5kZW5jeS1jaGVjay1kYXRhLyoqLyonLFxuXTtcblxuY29uc3QgY3JlYXRlUmVwb3J0cyA9IChmZWF0dXJlczogUGlwZWxpbmVGZWF0dXJlcykgPT4ge1xuICBjb25zdCByZXBvcnRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIGlmIChmZWF0dXJlcy5ncmFkbGVCdWlsZCkge1xuICAgIHJlcG9ydHMuR3JhZGxlQnVpbGRUZXN0UmVzdWx0cyA9IHtcbiAgICAgICdmaWxlcyc6IFsnKiovKiddLFxuICAgICAgJ2Jhc2UtZGlyZWN0b3J5JzogJ2J1aWxkL3Rlc3QtcmVzdWx0cycsXG4gICAgfTtcbiAgfVxuICBpZiAoZmVhdHVyZXMubnBtQnVpbGQpIHtcbiAgICByZXBvcnRzLk5wbUJ1aWxkVGVzdFJlc3VsdHMgPSB7XG4gICAgICAnZmlsZXMnOiBbJyoqLyonXSxcbiAgICAgICdiYXNlLWRpcmVjdG9yeSc6ICdyZXN1bHRzJyxcbiAgICB9O1xuICB9XG4gIHJldHVybiByZXBvcnRzO1xufTtcbiJdfQ==
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRzcGVjcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb250cmlidXRpb25zL3RlYW0tdHJhbnNwb3J0LXR3by9waXBlbGluZS9idWlsZHNwZWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZEQUFzRDtBQUd0RCxNQUFNLHlCQUF5QixHQUFHLE9BQU8sQ0FBQztBQUMxQyxNQUFNLHFCQUFxQixHQUFHLHlDQUF5Qyx5QkFBeUIsRUFBRSxDQUFDO0FBRTVGLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxRQUEwQixFQUFhLEVBQUU7SUFDM0UsTUFBTSxHQUFHLEdBQTJDLEVBQUUsQ0FBQztJQUN2RCxNQUFNLGFBQWEsR0FBYSxFQUFFLENBQUM7SUFDbkMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUEsaUNBQXlCLEdBQUUsQ0FBQyxDQUFDO0lBRW5ELEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHO1FBQ3ZCLFlBQVksRUFBRSxzQkFBc0I7UUFDcEMsZUFBZSxFQUFFLHlCQUF5QjtLQUMzQyxDQUFDO0lBRUYsSUFBSSxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekIsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQy9FLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHO1lBQ3ZCLEdBQUcsR0FBRyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRTtZQUMvQix5QkFBeUIsRUFBRSxtREFBbUQ7WUFDOUUsbUJBQW1CLEVBQUUsa0NBQWtDO1NBQ3hELENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM5QixHQUFHLENBQUMsaUJBQWlCLENBQUMsR0FBRztZQUN2QixHQUFHLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUU7WUFDL0IsOENB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c0NvbnRlbnQiOlsiaW1wb3J0IHsgQnVpbGRTcGVjIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZGVidWlsZCc7XG5pbXBvcnQgeyBQaXBlbGluZUZlYXR1cmVzIH0gZnJvbSAnLi9waXBlbGluZS1zdGFjayc7XG5cbmNvbnN0IFJJT19MSUNFTlNFX0NIRUNLX1ZFUlNJT04gPSAnMS4wLjAnO1xuY29uc3QgTElDRU5TRV9DSEVDS19DT01NQU5EID0gYG5weCAteSBAcmlvLWNsb3VkL3Jpby1saWNlbnNlLWNoZWNrZXJAJHtSSU9fTElDRU5TRV9DSEVDS19WRVJTSU9OfWA7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVNYWluQnVpbGRTcGVjID0gKGZlYXR1cmVzOiBQaXBlbGluZUZlYXR1cmVzKTogQnVpbGRTcGVjID0+IHtcbiAgY29uc3QgZW52OiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiA9IHt9O1xuICBjb25zdCBidWlsZENvbW1hbmRzOiBzdHJpbmdbXSA9IFtdO1xuICBidWlsZENvbW1hbmRzLnB1c2goLi4uZXhwb3J0Q29tbWl0SGFzaEFzVmVyc2lvbigpKTtcblxuICBlbnZbJ3BhcmFtZXRlci1zdG9yZSddID0ge1xuICAgIEFDQ09VTlRfTkFNRTogJy9jb25maWcvYWNjb3VudC9uYW1lJyxcbiAgICBURUFNX0lERU5USUZJRVI6ICcvY29uZmlnL3RlYW0vaWRlbnRpZmllcicsXG4gIH07XG5cbiAgaWYgKGZlYXR1cmVzLmdyYWRsZUJ1aWxkKSB7XG4gICAgYnVpbGRDb21tYW5kcy5wdXNoKC4uLmdyYWRsZUJ1aWxkQ29tbWFuZHMoZmVhdHVyZXMua2Fma2FJbnRlZ3JhdGlvbiA/PyBmYWxzZSkpO1xuICAgIGVudlsncGFyYW1ldGVyLXN0b3JlJ10gPSB7XG4gICAgICAuLi5lbnZbJ3BhcmFtZXRlci1zdG9yZSddID8/IHt9LFxuICAgICAgU0VSVklDRV9LRVlTVE9SRV9QQVNTV09SRDogJy9jb25maWcvJHtTRVJWSUNFX05BTUV9L3NlcnZpY2Uta2V5c3RvcmUtcGFzc3dvcmQnLFxuICAgICAgTElDRU5TRV9CVUNLRVRfTkFNRTogJy9jb25maWcvb3NzLWxpY2Vuc2VzL2J1Y2tldC1uYW1lJyxcbiAgICB9O1xuICB9XG4gIGlmIChmZWF0dXJlcy5rYWZrYUludGVncmF0aW9uKSB7XG4gICAgZW52WydwYXJhbWV0ZXItc3RvcmUnXSA9IHtcbiAgICAgIC4uLmVudlsncGFyYW1ldGVyLXN0b3JlJ10gPz8ge30sXG4gICAgICBDUkVBVEVfQU5EX1NJR05fQ0VSVElGSUNBVEVfU0NSSVBUX1MzX0xPQ0FUSU9OOiAnL2NvbmZpZy9rYWZrYS1pbnRlZ3JhdGlvbi9jcmVhdGUtYW5kLXNpZ24tY2VydGlmaWNhdGUtc2NyaXB0LXMzLWxvY2F0aW9uJyxcbiAgICB9O1xuICB9XG4gIGlmIChmZWF0dXJlcy5ucG1CdWlsZCkge1xuICAgIGVudi52YXJpYWJsZXMgPSB7XG4gICAgICBDSTogJ3RydWUnLFxuICAgIH07XG4gICAgYnVpbGRDb21tYW5kcy5wdXNoKC4uLm5wbUJ1aWxkQ29tbWFuZHMoKSk7XG4gIH1cbiAgaWYgKGZlYXR1cmVzLmFkZGl0aW9uYWxCdWlsZENvbW1hbmRzKSB7XG4gICAgYnVpbGRDb21tYW5kcy5wdXNoKCcjIyMgQURESVRJT05BTCBCVUlMRCBDT01NQU5EUyAjIyMnLCAuLi5mZWF0dXJlcy5hZGRpdGlvbmFsQnVpbGRDb21tYW5kcyk7XG4gIH1cblxuICBidWlsZENvbW1hbmRzLnB1c2goLi4uaW5mcmFzdHJ1Y3R1cmVCdWlsZENvbW1hbmRzKCkpO1xuXG4gIHJldHVybiBCdWlsZFNwZWMuZnJvbU9iamVjdCh7XG4gICAgdmVyc2lvbjogJzAuMicsXG4gICAgZW52LFxuICAgIHBoYXNlczoge1xuICAgICAgaW5zdGFsbDoge1xuICAgICAgICAncnVudGltZS12ZXJzaW9ucyc6IGdldFJ1bnRpbWVzKGZlYXR1cmVzKSxcbiAgICAgIH0sXG4gICAgICBwcmVfYnVpbGQ6IHtcbiAgICAgICAgY29tbWFuZHM6IGxvZ0NvbW1pdEhhc2goKSxcbiAgICAgIH0sXG4gICAgICBidWlsZDoge1xuICAgICAgICBjb21tYW5kczogYnVpbGRDb21tYW5kcyxcbiAgICAgIH0sXG4gICAgICBwb3N0X2J1aWxkOiB7XG4gICAgICAgIGNvbW1hbmRzOiBsb2dDb21taXRIYXNoKCksXG4gICAgICB9LFxuICAgIH0sXG4gICAgcmVwb3J0czogY3JlYXRlUmVwb3J0cyhmZWF0dXJlcyksXG4gICAgY2FjaGU6IHtcbiAgICAgIHBhdGhzOiBjYWNoZVBhdGhzKCksXG4gICAgfSxcbiAgfSk7XG59O1xuXG5cbmV4cG9ydCBjb25zdCBjcmVhdGVWdWxuZXJhYmlsaXR5QnVpbGRTcGVjID0gKGZlYXR1cmVzOiBQaXBlbGluZUZlYXR1cmVzKSA9PiB7XG4gIGNvbnN0IGVudjogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPSB7fTtcbiAgY29uc3QgYnVpbGRDb21tYW5kczogc3RyaW5nW10gPSBbXTtcblxuICBpZiAoZmVhdHVyZXMuZ3JhZGxlQnVpbGQpIHtcbiAgICBlbnYudmFyaWFibGVzID0ge1xuICAgICAgTEFORzogJ0MuVVRGLTgnLFxuICAgIH07XG4gICAgZW52WydwYXJhbWV0ZXItc3RvcmUnXSA9IHtcbiAgICAgIE5JU1RfREFUQV9NSVJST1JfVVJMOiAnL2NvbmZpZy9uaXN0LWRhdGEtbWlycm9yL3VybCcsXG4gICAgfTtcbiAgICBidWlsZENvbW1hbmRzLnB1c2goLi4uW1xuICAgICAgJyMjIyBHUkFETEUgVlVMTkVSQUJJTElUWSBDSEVDSyAjIyMnLFxuICAgICAgJy4vZ3JhZGxldyAtRG9yZy5ncmFkbGUuanZtYXJncz0tWG14NGcgZGVwZW5kZW5jeUNoZWNrQW5hbHl6ZScsXG4gICAgXSk7XG4gIH1cbiAgaWYgKGZlYXR1cmVzLm5wbUJ1aWxkKSB7XG4gICAgYnVpbGRDb21tYW5kcy5wdXNoKC4uLltcbiAgICAgICcjIyMgTlBNIFZVTE5FUkFCSUxJVFkgQ0hFQ0sgIyMjJyxcbiAgICAgICducG0gYXVkaXQgLS1yZWdpc3RyeSBodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZyAtLWF1ZGl0LWxldmVsIG1vZGVyYXRlIC0tcGFyc2VhYmxlIC0tb21pdD1kZXYnLFxuICAgIF0pO1xuICB9XG4gIGJ1aWxkQ29tbWFuZHMucHVzaCguLi5bXG4gICAgJyMjIyBJTkZSQVNUUlVDVFVSRSBWVUxORVJBQklMSVRZIENIRUNLICMjIycsXG4gICAgJ2NkIGluZnJhc3RydWN0dXJlJyxcbiAgICAnbnBtIGF1ZGl0IC0tcmVnaXN0cnkgaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcgLS1hdWRpdC1sZXZlbCBtb2RlcmF0ZSAtLXBhcnNlYWJsZSAtLW9taXQ9ZGV2JyxcbiAgICAnY2QgLi4nLFxuICBdKTtcblxuICByZXR1cm4gQnVpbGRTcGVjLmZyb21PYmplY3Qoe1xuICAgIHZlcnNpb246ICcwLjInLFxuICAgIGVudixcbiAgICBwaGFzZXM6IHtcbiAgICAgIGluc3RhbGw6IHtcbiAgICAgICAgJ3J1bnRpbWUtdmVyc2lvbnMnOiBnZXRSdW50aW1lcyhmZWF0dXJlcyksXG4gICAgICB9LFxuICAgICAgcHJlX2J1aWxkOiB7XG4gICAgICAgIGNvbW1hbmRzOiBsb2dDb21taXRIYXNoKCksXG4gICAgICB9LFxuICAgICAgYnVpbGQ6IHtcbiAgICAgICAgY29tbWFuZHM6IGJ1aWxkQ29tbWFuZHMsXG4gICAgICB9LFxuICAgICAgcG9zdF9idWlsZDoge1xuICAgICAgICBjb21tYW5kczogbG9nQ29tbWl0SGFzaCgpLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGNhY2hlOiB7XG4gICAgICBwYXRoczogY2FjaGVQYXRoc1Z1bG5lcmFiaWxpdHkoKSxcbiAgICB9LFxuICB9KTtcbn07XG5cbmNvbnN0IGdldFJ1bnRpbWVzID0gKGZlYXR1cmVzOiBQaXBlbGluZUZlYXR1cmVzKSA9PiB7XG4gIGNvbnN0IHJ1bnRpbWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIGlmIChmZWF0dXJlcy5ncmFkbGVCdWlsZCkge1xuICAgIHJ1bnRpbWVzLmphdmEgPSAnY29ycmV0dG8xNyc7XG4gIH1cbiAgcnVudGltZXMubm9kZWpzID0gJzIwJztcbiAgcmV0dXJuIHJ1bnRpbWVzO1xufTtcblxuZXhwb3J0IGNvbnN0IGxvZ0NvbW1pdEhhc2ggPSAoKSA9PiBbXG4gICcoZWNobyBcIkJ1aWxkIHRyaWdnZXJlZCBieSBjb21taXQgXCIgJiYgZ2l0IGxvZyAtLXByZXR0eT1mb3JtYXQ6XCIlaCV4MDklYW4leDA5JXNcIiAtbiAxICkgfCB0ciAtZCBcIlxcXFxuXCInLFxuXTtcblxuZXhwb3J0IGNvbnN0IGV4cG9ydENvbW1pdEhhc2hBc1ZlcnNpb24gPSAoKSA9PiBbXG4gICdleHBvcnQgR0lUX1ZFUlNJT049JChnaXQgcmV2LXBhcnNlIEhFQUQpJyxcbl07XG5cbmNvbnN0IGluZnJhc3RydWN0dXJlQnVpbGRDb21tYW5kcyA9ICgpID0+IFtcbiAgJyMjIyBJTkZSQVNUUlVDVFVSRSBCVUlMRCAjIyMnLFxuICAnY2QgaW5mcmFzdHJ1Y3R1cmUnLFxuICAnbnBtIGNpJyxcbiAgYCR7TElDRU5TRV9DSEVDS19DT01NQU5EfSAtLXR5cGUgbnBtLWJhY2tlbmQgLS1hY2NvdW50LW5hbWUgXFwke0FDQ09VTlRfTkFNRX0gLS1zZXJ2aWNlLW5hbWUgXFwke1NFUlZJQ0VfTkFNRX0gLS11cGxvYWRgLFxuICAnbnBtIHJ1biBjZGsgc3ludGggMT4gL2Rldi9udWxsJyxcbiAgLy8gSW4gcGlwZWxpbmU6IEVycm9yIHBhcnNpbmcgcmVmZXJlbmNlOiBpcyBub3QgYSB2YWxpZCByZXBvc2l0b3J5L3RhZzogaW52YWxpZCByZWZlcmVuY2UgZm9ybWF0LlxuICAvLyB3b3JrYXJvdW5kIGR1ZSB0byBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzE4MDQ0JyxcbiAgJ2ZpbmQgLi8gLXR5cGUgZiAtbmFtZSBcIipEZXBsb3lBcHBsaWNhdGlvblN0YWNrcyouYXNzZXRzLmpzb25cIiAtcHJpbnQwIHwgeGFyZ3MgLS1uby1ydW4taWYtZW1wdHkgLTAgc2VkIC0taW4tcGxhY2UgXFwnc3xkb2NrZXIgbG9hZCAtaSBhc3NldC58ZG9ja2VyIGxvYWQgLWkgLi4vYXNzZXQufGdcXCcnLFxuICAnY2QgLi4nLFxuXTtcblxuY29uc3QgZ3JhZGxlQnVpbGRDb21tYW5kcyA9IChrYWZrYUludGVncmF0aW9uOiBib29sZWFuKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmRzOiBzdHJpbmdbXSA9IFtdO1xuICBjb21tYW5kcy5wdXNoKC4uLltcbiAgICAnIyMjIEdSQURMRSBCVUlMRCAjIyMnLFxuICAgICcuL2dyYWRsZXcgY2xlYW4gYnVpbGQnLFxuICAgICcjIGxpY2Vuc2UgY2hlY2snLFxuICAgIGAke0xJQ0VOU0VfQ0hFQ0tfQ09NTUFORH0gLS10eXBlIGdyYWRsZSAtLWFjY291bnQtbmFtZSBcXCR7QUNDT1VOVF9OQU1FfSAtLXNlcnZpY2UtbmFtZSBcXCR7U0VSVklDRV9OQU1FfSAtLXVwbG9hZGAsXG4gICAgJyMgc2VsZiBzaWduZWQgY2VydGlmaWNhdGUnLFxuICAgICdzZXQgLXU7IGtleXRvb2wgLWdlbmtleSAtYWxpYXMgSW50ZXJuYWxTZXJ2aWNlQ2VydGlmaWNhdGUgLWtleWFsZyBSU0EgLWtleXN0b3JlIGNvbnRhaW5lcmZpbGVzL3NlcnZpY2Uta2V5c3RvcmUucDEyIC12YWxpZGl0eSAzNjUwIC1zdG9yZXR5cGUgUEtDUzEyIC1kbmFtZSBcIkNOPWludGVybmFsLnNlcnZpY2UuJHtTRVJWSUNFX05BTUV9LiR7SE9TVEVEX1pPTkV9LCBPVT1Mb2dpc3RpY3MsIE89UmlvLCBMPU11bmljaCwgU1Q9QlksIEM9REVcIiAta2V5cGFzcyAke1NFUlZJQ0VfS0VZU1RPUkVfUEFTU1dPUkR9IC1zdG9yZXBhc3MgJHtTRVJWSUNFX0tFWVNUT1JFX1BBU1NXT1JEfScsXG4gIF0pO1xuICBpZiAoa2Fma2FJbnRlZ3JhdGlvbikge1xuICAgIGNvbW1hbmRzLnB1c2goLi4uW1xuICAgICAgJyMga2Fma2EgY2VydGlmaWNhdGUnLFxuICAgICAgJ3NldCAtdTsgYXdzIHMzIGNwIC0tcXVpZXQgczM6Ly8ke0NSRUFURV9BTkRfU0lHTl9DRVJUSUZJQ0FURV9TQ1JJUFRfUzNfTE9DQVRJT059IGNyZWF0ZS1hbmQtc2lnbi1jZXJ0aWZpY2F0ZScsXG4gICAgICAnY2htb2QgK3ggY3JlYXRlLWFuZC1zaWduLWNlcnRpZmljYXRlJyxcbiAgICAgICdzZXQgLXU7IC4vY3JlYXRlLWFuZC1zaWduLWNlcnRpZmljYXRlIC0ta2V5c3RvcmUtcGFzc3dvcmQgJHtTRVJWSUNFX0tFWVNUT1JFX1BBU1NXT1JEfSAtLWZxZG4gJHtTRVJWSUNFX05BTUV9LiR7SE9TVEVEX1pPTkV9JyxcbiAgICAgICdjcCAvY2VydC9jZXJ0aWZpY2F0ZS5wMTIgY29udGFpbmVyZmlsZXMva2Fma2Eta2V5c3RvcmUucDEyJyxcbiAgICBdKTtcbiAgfVxuICBjb21tYW5kcy5wdXNoKC4uLltcbiAgICAnIyBkb2NrZXIgaW1hZ2UgYnVpbGQnLFxuICAgICcuL2dyYWRsZXcgamliQnVpbGRUYXIgLS1xdWlldCcsXG4gIF0pO1xuICByZXR1cm4gY29tbWFuZHM7XG59O1xuXG5jb25zdCBucG1CdWlsZENvbW1hbmRzID0gKCkgPT4gW1xuICAnIyMjIE5QTSBCVUlMRCAjIyMnLFxuICAnZXhwb3J0IFZJVEVfR0lUX1ZFUlNJT049JEdJVF9WRVJTSU9OJyxcbiAgJ2V4cG9ydCBWSVRFX0FXU19BQ0NPVU5UX0lEPSRBV1NfQUNDT1VOVF9JRCcsXG4gICdleHBvcnQgVklURV9BV1NfQUNDT1VOVF9OQU1FPSRBQ0NPVU5UX05BTUUnLFxuICAnZXhwb3J0IFZJVEVfU0VSVklDRV9OQU1FPSRTRVJWSUNFX05BTUUnLFxuICAnZXhwb3J0IFZJVEVfVEVBTV9JREVOVElGSUVSPSRURUFNX0lERU5USUZJRVInLFxuICAnbnBtIGNpJyxcbiAgJ25wbSBydW4gbGludCcsXG4gICducG0gcnVuIHRlc3Q6Y2knLFxuICBgJHtMSUNFTlNFX0NIRUNLX0NPTU1BTkR9IC0tdHlwZSBucG0tZnJvbnRlbmQgLS1hY2NvdW50LW5hbWUgXFwke0FDQ09VTlRfTkFNRX0gLS1zZXJ2aWNlLW5hbWUgXFwke1NFUlZJQ0VfTkFNRX0gLS11cGxvYWRgLFxuICAnbnBtIHJ1biBidWlsZCcsXG5dO1xuXG5jb25zdCBjYWNoZVBhdGhzID0gKCkgPT4gW1xuICAnL2NlcnQvKiovKicsXG4gICcvcm9vdC8uY2FjaGUvKiovKicsXG4gICcvcm9vdC8ubnBtLyoqLyonLFxuICAnL3Jvb3QvLmdyYWRsZS9jYWNoZXMvKiovKicsXG4gICcvcm9vdC8uZ3JhZGxlL3dyYXBwZXIvKiovKicsXG4gICcvcm9vdC9nb29nbGUtY2xvdWQtdG9vbHMtamF2YS9qaWIvKiovKicsXG4gICd0YXJnZXQvamliLWNhY2hlLyoqLyonLFxuXTtcblxuY29uc3QgY2FjaGVQYXRoc1Z1bG5lcmFiaWxpdHkgPSAoKSA9PiBbXG4gICcvcm9vdC8uY2FjaGUvKiovKicsXG4gICcvcm9vdC8uZ3JhZGxlL2NhY2hlcy8qKi8qJyxcbiAgJy9yb290Ly5ncmFkbGUvd3JhcHBlci8qKi8qJyxcbiAgJy9yb290Ly5ncmFkbGUvZGVwZW5kZW5jeS1jaGVjay1kYXRhLyoqLyonLFxuXTtcblxuY29uc3QgY3JlYXRlUmVwb3J0cyA9IChmZWF0dXJlczogUGlwZWxpbmVGZWF0dXJlcykgPT4ge1xuICBjb25zdCByZXBvcnRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIGlmIChmZWF0dXJlcy5ncmFkbGVCdWlsZCkge1xuICAgIHJlcG9ydHMuR3JhZGxlQnVpbGRUZXN0UmVzdWx0cyA9IHtcbiAgICAgICdmaWxlcyc6IFsnKiovKiddLFxuICAgICAgJ2Jhc2UtZGlyZWN0b3J5JzogJ2J1aWxkL3Rlc3QtcmVzdWx0cycsXG4gICAgfTtcbiAgfVxuICBpZiAoZmVhdHVyZXMubnBtQnVpbGQpIHtcbiAgICByZXBvcnRzLk5wbUJ1aWxkVGVzdFJlc3VsdHMgPSB7XG4gICAgICAnZmlsZXMnOiBbJyoqLyonXSxcbiAgICAgICdiYXNlLWRpcmVjdG9yeSc6ICdyZXN1bHRzJyxcbiAgICB9O1xuICB9XG4gIHJldHVybiByZXBvcnRzO1xufTtcbiJdfQ==
|
|
@@ -242,6 +242,7 @@ export declare class PipelineStack extends Stack {
|
|
|
242
242
|
private readonly _ossLicensesBucket;
|
|
243
243
|
private readonly _serviceKeystorePassword;
|
|
244
244
|
private readonly _accountNameParameter;
|
|
245
|
+
private readonly _teamIdentifierParameter;
|
|
245
246
|
private readonly _nistDataMirrorUrl;
|
|
246
247
|
private readonly _codePipelineType;
|
|
247
248
|
constructor(scope: Construct, id: string, props: PipelineStackProps);
|
|
@@ -90,6 +90,7 @@ class PipelineStack extends aws_cdk_lib_1.Stack {
|
|
|
90
90
|
version: 1,
|
|
91
91
|
});
|
|
92
92
|
this._accountNameParameter = ssm.StringParameter.fromStringParameterName(this, 'AccountNameParameter', '/config/account/name');
|
|
93
|
+
this._teamIdentifierParameter = ssm.StringParameter.fromStringParameterName(this, 'TeamIdentifierParameter', '/config/team/identifier');
|
|
93
94
|
this._nistDataMirrorUrl = ssm.StringParameter.fromSecureStringParameterAttributes(this, 'NistDataMirrorUrl', {
|
|
94
95
|
parameterName: '/config/nist-data-mirror/url',
|
|
95
96
|
version: 1,
|
|
@@ -109,7 +110,7 @@ class PipelineStack extends aws_cdk_lib_1.Stack {
|
|
|
109
110
|
product: index_1.ClaidometerProduct.CDK_CONTRIBUTION,
|
|
110
111
|
packageName,
|
|
111
112
|
feature,
|
|
112
|
-
version: '1.
|
|
113
|
+
version: '1.3.0',
|
|
113
114
|
});
|
|
114
115
|
}
|
|
115
116
|
get mainCodebuildProject() {
|
|
@@ -249,6 +250,7 @@ class PipelineStack extends aws_cdk_lib_1.Stack {
|
|
|
249
250
|
this._ossLicensesBucketParameter.grantRead(mainBuild);
|
|
250
251
|
this._serviceKeystorePassword.grantRead(mainBuild);
|
|
251
252
|
this._accountNameParameter.grantRead(mainBuild);
|
|
253
|
+
this._teamIdentifierParameter.grantRead(mainBuild);
|
|
252
254
|
if (this._features.kafkaIntegration) {
|
|
253
255
|
this.grantPermissionsForKafkaIntegration(mainBuild, 'KafkaIntegrationPolicy');
|
|
254
256
|
}
|
|
@@ -280,6 +282,7 @@ class PipelineStack extends aws_cdk_lib_1.Stack {
|
|
|
280
282
|
this._ossLicensesBucketParameter.grantRead(branchBuild);
|
|
281
283
|
this._serviceKeystorePassword.grantRead(branchBuild);
|
|
282
284
|
this._accountNameParameter.grantRead(branchBuild);
|
|
285
|
+
this._teamIdentifierParameter.grantRead(branchBuild);
|
|
283
286
|
if (this._features.kafkaIntegration) {
|
|
284
287
|
this.grantPermissionsForKafkaIntegration(branchBuild, 'BranchKafkaIntegrationPolicy');
|
|
285
288
|
}
|
|
@@ -412,4 +415,4 @@ class PipelineStack extends aws_cdk_lib_1.Stack {
|
|
|
412
415
|
exports.PipelineStack = PipelineStack;
|
|
413
416
|
_a = JSII_RTTI_SYMBOL_1;
|
|
414
417
|
PipelineStack[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.PipelineStack", version: "0.0.0" };
|
|
415
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29udHJpYnV0aW9ucy90ZWFtLXRyYW5zcG9ydC10d28vcGlwZWxpbmUvcGlwZWxpbmUtc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLDZDQUFtRjtBQUNuRiw2REFBNEc7QUFDNUcsNkRBQTZEO0FBQzdELDZFQUE2RTtBQUM3RSxpREFBaUQ7QUFDakQsMERBQTBEO0FBQzFELGlEQUFvRDtBQUVwRCx5Q0FBeUM7QUFDekMsK0NBQXFEO0FBQ3JELDJDQUEyQztBQUUzQyxtREFBbUQ7QUFDbkQscURBQTBFO0FBRTFFLGdDQUFnQztBQUNoQywyREFBa0Q7QUFDbEQsbURBQXNEO0FBQ3RELDZDQUFpRjtBQUNqRix5REFBZ0g7QUFDaEgscUVBQTZFO0FBRzdFLHNDQUFzQztBQUN0QywwQ0FBaUU7QUE2TGpFLElBQVksWUFzQ1g7QUF0Q0QsV0FBWSxZQUFZO0lBRXRCOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILG1EQUFtQyxDQUFBO0lBQ25DOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSCwrREFBK0MsQ0FBQTtJQUMvQzs7Ozs7T0FLRztJQUNILG1FQUFtRCxDQUFBO0FBQ3JELENBQUMsRUF0Q1csWUFBWSw0QkFBWixZQUFZLFFBc0N2QjtBQWNELE1BQWEsYUFBYyxTQUFRLG1CQUFLO0lBZ0J0QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXlCO1FBQ2pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUzQywrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLGdCQUFFLENBQUMsV0FBVyxDQUFDLGlDQUFpQyxDQUFDLENBQUMsQ0FBQztRQUNsSCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQ3JELGFBQWEsRUFBRSwyQkFBYSxDQUFDLE9BQU87WUFDcEMsaUJBQWlCLEVBQUUsSUFBSTtZQUN2QixjQUFjLEVBQUU7Z0JBQ2Q7b0JBQ0UsVUFBVSxFQUFFLHNCQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDN0IsbUNBQW1DLEVBQUUsc0JBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2lCQUN0RDthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxTQUFTLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUMsV0FBVyxZQUFZLEdBQUcsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDL0wsSUFBSSxDQUFDLHVCQUF1QixHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQyxXQUFXLFlBQVksR0FBRyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUUvTCxJQUFJLENBQUMsMkJBQTJCLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLEVBQUUsNEJBQTRCLEVBQUUsRUFBRSxhQUFhLEVBQUUsa0NBQWtDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hMLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVILElBQUksQ0FBQyx3QkFBd0IsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLG1DQUFtQyxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtZQUNoSCxhQUFhLEVBQUUsV0FBVyxLQUFLLENBQUMsV0FBVyw0QkFBNEI7WUFDdkUsT0FBTyxFQUFFLENBQUM7U0FDWCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMscUJBQXFCLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztRQUMvSCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxtQ0FBbUMsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7WUFDM0csYUFBYSxFQUFFLDhCQUE4QjtZQUM3QyxPQUFPLEVBQUUsQ0FBQztTQUNYLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLElBQUksWUFBWSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFFaEYsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRXhELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbEgsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUVELE1BQU0sQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkUsSUFBSSxtQkFBVyxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDbkMsT0FBTyxFQUFFLDBCQUFrQixDQUFDLGdCQUFnQjtZQUM1QyxXQUFXO1lBQ1gsT0FBTztZQUNQLE9BQU8sRUFBRSxPQUFPO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFXLG9CQUFvQjtRQUM3QixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBVyxzQkFBc0I7UUFDL0IsSUFBSSxJQUFJLENBQUMsdUJBQXVCLElBQUksU0FBUyxFQUFFLENBQUM7WUFDOUMsTUFBTSxLQUFLLENBQUMsaUZBQWlGLENBQUMsQ0FBQztRQUNqRyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUM7SUFDdEMsQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUF5QjtRQUM3QyxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sS0FBSyxDQUFDLGdGQUFnRixDQUFDLENBQUM7UUFDaEcsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUM7WUFDckUsTUFBTSxLQUFLLENBQUMscUVBQXFFLENBQUMsQ0FBQztRQUNyRixDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLGtCQUFrQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUNwRSxNQUFNLEtBQUssQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDO1FBQ2hGLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsdUJBQXVCLElBQUksS0FBSyxDQUFDLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLENBQUM7WUFDNUYsTUFBTSxLQUFLLENBQUMsK0VBQStFLENBQUMsQ0FBQztRQUMvRixDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSxDQUFDO1lBQ25FLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkxBQTJMLENBQUMsQ0FBQztRQUM1TSxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsUUFBUSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzNCLEtBQUssWUFBWSxDQUFDLGVBQWU7b0JBQy9CLE9BQU87d0JBQ0wsY0FBYyxFQUFFLElBQUk7d0JBQ3BCLHFCQUFxQixFQUFFLElBQUk7d0JBQzNCLFdBQVcsRUFBRSxJQUFJO3dCQUNqQixRQUFRLEVBQUUsS0FBSzt3QkFDZixnQkFBZ0IsRUFBRSxLQUFLO3dCQUN2QixzQkFBc0IsRUFBRSxJQUFJO3FCQUM3QixDQUFDO2dCQUNKLEtBQUssWUFBWSxDQUFDLHFCQUFxQjtvQkFDckMsT0FBTzt3QkFDTCxjQUFjLEVBQUUsSUFBSTt3QkFDcEIscUJBQXFCLEVBQUUsSUFBSTt3QkFDM0IsV0FBVyxFQUFFLElBQUk7d0JBQ2pCLFFBQVEsRUFBRSxLQUFLO3dCQUNmLGdCQUFnQixFQUFFLElBQUk7d0JBQ3RCLHNCQUFzQixFQUFFLElBQUk7cUJBQzdCLENBQUM7Z0JBQ0osS0FBSyxZQUFZLENBQUMsdUJBQXVCO29CQUN2QyxPQUFPO3dCQUNMLGNBQWMsRUFBRSxLQUFLO3dCQUNyQixxQkFBcUIsRUFBRSxLQUFLO3dCQUM1QixXQUFXLEVBQUUsS0FBSzt3QkFDbEIsUUFBUSxFQUFFLEtBQUs7d0JBQ2YsZ0JBQWdCLEVBQUUsS0FBSzt3QkFDdkIsc0JBQXNCLEVBQUUsSUFBSTtxQkFDN0IsQ0FBQztZQUNOLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTztZQUNMLGNBQWMsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLGNBQWMsSUFBSSxJQUFJO1lBQ3RELHFCQUFxQixFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUscUJBQXFCLElBQUksSUFBSTtZQUNwRSxXQUFXLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxXQUFXLElBQUksS0FBSztZQUNqRCxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxRQUFRLElBQUksS0FBSztZQUMzQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLGdCQUFnQixJQUFJLEtBQUs7WUFDM0Qsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxrQkFBa0I7WUFDdEQsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSx1QkFBdUI7WUFDaEUsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxzQkFBc0IsSUFBSSxJQUFJO1NBQ3ZFLENBQUM7SUFDSixDQUFDO0lBRU8seUJBQXlCLENBQUMsSUFBWSxFQUFFLFdBQStCLEVBQUUsS0FBeUI7UUFDeEcsT0FBTyxJQUFJLG1DQUFtQixDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDekMsS0FBSyxFQUFFLFdBQVc7WUFDbEIsZUFBZSxFQUFFLHdCQUF3QjtZQUN6QyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixDQUFDLElBQUksSUFBQSxnQ0FBbUIsRUFBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2xJLGdCQUFnQixFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0I7WUFDM0QsY0FBYyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUTtZQUN6QyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQy9CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxlQUFlLENBQUMsS0FBeUIsRUFBRSxTQUF3QjtRQUN6RSxNQUFNLFFBQVEsR0FBRyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUMzRCxjQUFjLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDakMsWUFBWSxFQUFFLElBQUksQ0FBQyxpQkFBaUI7WUFDcEMsd0JBQXdCLEVBQUUsSUFBSTtTQUMvQixDQUFDLENBQUM7UUFDSCxNQUFNLFlBQVksR0FBRyxJQUFJLFNBQVMsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLGNBQWMsRUFBRTtZQUN4RSxZQUFZLEVBQUUsUUFBUTtZQUN0QixLQUFLLEVBQUUsU0FBUztZQUNoQiw2QkFBNkIsRUFBRTtnQkFDN0IsZ0JBQWdCLEVBQUU7b0JBQ2hCLFVBQVUsRUFBRSxxQ0FBcUIsQ0FBQyx5QkFBeUI7b0JBQzNELFdBQVcsRUFBRSwyQkFBVyxDQUFDLFVBQVU7aUJBQ3BDO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFDSCxrQkFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRWhELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNqRSxZQUFZLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVqRSxNQUFNLDhCQUE4QixHQUFHLElBQUksQ0FBQyxvQ0FBb0MsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkcsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkUsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUUsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksOEJBQThCLEVBQUUsQ0FBQztZQUNuQyxTQUFTLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDakQsQ0FBQztRQUNELElBQUksa0JBQWtCLEVBQUUsQ0FBQztZQUN2QixTQUFTLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDckMsQ0FBQztRQUVELFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSwrQkFBVyxDQUFDLElBQUksRUFBRSx5QkFBeUIsRUFBRTtZQUNyRSxlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7WUFDdEMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixJQUFJLCtCQUErQjtTQUM5RSxDQUFDLEVBQUU7WUFDRixHQUFHLEVBQUUsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUNsRSxJQUFJLEVBQUUsU0FBUztTQUNoQixDQUFDLENBQUM7UUFFSCxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsRUFBRSxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ25GLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyw4QkFBOEIsRUFBRSxjQUFjLEVBQUUsOEJBQThCLENBQUMsQ0FBQztRQUN6RyxJQUFJLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFFaEYsSUFBSSw4QkFBOEIsRUFBRSxDQUFDO1lBQ25DLE1BQU0sK0JBQStCLEdBQUcsZUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsaUNBQWlDLEVBQUUsK0JBQStCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ3RKLCtCQUErQixDQUFDLFVBQVUsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQzdFLENBQUM7UUFDRCxJQUFJLGtCQUFrQixFQUFFLENBQUM7WUFDdkIsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQW9CLENBQUMsQ0FBQztZQUM3RyxjQUFjLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7WUFDckQsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxZQUFZLElBQUkscUJBQXFCLENBQUM7U0FDckcsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFaEUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsMkJBQTJCLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsbUNBQW1DLENBQUMsU0FBUyxFQUFFLHdCQUF3QixDQUFDLENBQUM7UUFDaEYsQ0FBQztRQUNELFlBQVksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFN0UsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLHNCQUFzQixFQUFFLENBQUM7WUFDM0MsSUFBSSw0Q0FBeUIsQ0FBQyxJQUFJLEVBQUUsNkJBQTZCLEVBQUU7Z0JBQ2pFLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztnQkFDOUIsWUFBWSxFQUFFLFFBQVEsQ0FBQyxZQUFZO2dCQUNuQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU87YUFDeEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxXQUEwQjtRQUNsRCxNQUFNLGNBQWMsR0FBRyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQ3ZFLGNBQWMsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUNqQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtZQUNwQyx3QkFBd0IsRUFBRSxJQUFJO1NBQy9CLENBQUMsQ0FBQztRQUNILE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxTQUFTLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUU7WUFDcEYsWUFBWSxFQUFFLGNBQWM7WUFDNUIsS0FBSyxFQUFFLFdBQVc7WUFDbEIsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO1FBQ0gsa0JBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RCxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQy9ELGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRW5DLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRXRFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsd0JBQXdCLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEQsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLFdBQVcsRUFBRSw4QkFBOEIsQ0FBQyxDQUFDO1FBQ3hGLENBQUM7SUFDSCxDQUFDO0lBRU8sd0JBQXdCLENBQUMsS0FBeUI7UUFDeEQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLG1DQUFtQixDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRTtZQUM5RSxLQUFLLEVBQUUsSUFBSSxDQUFDLHVCQUF1QjtZQUNuQyxnQkFBZ0IsRUFBRSxJQUFBLHlDQUE0QixFQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDOUQsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQjtZQUMzRCxjQUFjLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRO1lBQ3pDLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDL0IsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLHVCQUF1QixFQUFFO1lBQ3JGLGNBQWMsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUNqQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtZQUNwQyx3QkFBd0IsRUFBRSxJQUFJO1NBQy9CLENBQUMsQ0FBQztRQUNILE1BQU0seUJBQXlCLEdBQUcsSUFBSSxTQUFTLENBQUMsWUFBWSxDQUFDLHFCQUFxQixFQUFFLGNBQWMsRUFBRTtZQUNsRyxZQUFZLEVBQUUscUJBQXFCO1lBQ25DLEtBQUssRUFBRSxrQkFBa0I7WUFDekIsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO1FBQ0gsa0JBQUksQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBRXJFLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3JGLHlCQUF5QixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzFDLGtCQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUMvRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFdEQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLCtCQUErQixFQUFFO1lBQy9FLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUscUJBQXFCLElBQUkseUJBQXlCLENBQUM7U0FDbEgsQ0FBQyxDQUFDO1FBQ0gsaUJBQWlCLENBQUMsU0FBUyxDQUFDLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRTFGLElBQUksS0FBSyxDQUFDLGdCQUFnQixLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQzFDLE1BQU0sS0FBSyxDQUFDLDZHQUE2RyxDQUFDLENBQUM7UUFDN0gsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxDQUFDO1lBQzNDLElBQUksa0VBQStDLENBQUMsSUFBSSxFQUFFLG1EQUFtRCxFQUFFO2dCQUM3RyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7Z0JBQzlCLFlBQVksRUFBRSxxQkFBcUIsQ0FBQyxZQUFZO2dCQUNoRCxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQ3ZCLFlBQVksRUFBRSxLQUFLLENBQUMseUJBQXlCO2FBQzlDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRU8scUJBQXFCLENBQUMsUUFBZ0M7UUFDNUQsbUpBQW1KO1FBQ25KLHVHQUF1RztRQUN2RyxrR0FBa0c7UUFDbEcsT0FBTyxJQUFJLHlCQUFhLENBQ3RCLHlCQUF5QixFQUFFO1lBQ3pCLEtBQUssRUFBRSxRQUFRLENBQUMsb0JBQW9CO1lBQ3BDLFFBQVEsRUFBRTtnQkFDUixxREFBcUQ7Z0JBQ3JELGtDQUFrQztnQkFDbEMsaUJBQWlCO2dCQUNqQiw2QkFBNkI7Z0JBQzdCLHNDQUFzQzthQUN2QztZQUNELGdCQUFnQixFQUFFO2dCQUNoQixVQUFVLEVBQUUscUNBQXFCLENBQUMseUJBQXlCO2dCQUMzRCxXQUFXLEVBQUUsMkJBQVcsQ0FBQyxVQUFVO2FBQ3BDO1NBQ0YsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLG9DQUFvQyxDQUFDLFNBQXdCLEVBQUUsS0FBeUI7UUFDOUYsSUFBSSxLQUFLLENBQUMseUJBQXlCLEVBQUUsQ0FBQztZQUNwQyxNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLG1CQUFtQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ3ZHLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDakQsT0FBTztvQkFDTCxLQUFLLEVBQUUsTUFBTTtvQkFDYixLQUFLLEVBQUUsS0FBSyxDQUFDLHlCQUEwQixDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQztpQkFDakUsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxJQUFJLDBEQUFpQyxDQUFDLElBQUksRUFBRSw0QkFBNEIsRUFBRTtnQkFDL0UsbUJBQW1CLEVBQUUsbUJBQW1CO2FBQ3pDLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxLQUF5QjtRQUN2RCxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sSUFBSSxHQUFHLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRTtnQkFDekQsR0FBRyxLQUFLLENBQUMsc0JBQXNCO2dCQUMvQixLQUFLLEVBQUUsSUFBSSxDQUFDLHVCQUF1QjthQUNwQyxDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBRU8sOEJBQThCLENBQUMsU0FBd0I7UUFDN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUN2QyxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsTUFBTSxtQkFBbUIsR0FBRyxTQUFTLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEUsT0FBTyxJQUFJLHlCQUFhLENBQUMsZ0JBQWdCLEVBQUU7WUFDekMsS0FBSyxFQUFFLG1CQUFtQjtZQUMxQixnQkFBZ0IsRUFBRTtnQkFDaEIsVUFBVSxFQUFFLHFDQUFxQixDQUFDLHlCQUF5QjtnQkFDM0QsV0FBVyxFQUFFLDJCQUFXLENBQUMsVUFBVTthQUNwQztZQUNELFFBQVEsRUFBRTtnQkFDUiw4RUFBOEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsR0FBRztnQkFDbEgsdURBQXVELElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEdBQUc7YUFDNUY7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sbUNBQW1DLENBQUMsWUFBaUMsRUFBRSxRQUFnQjtRQUM3RixNQUFNLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQ25ELElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUNyQixnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FDL0IsdUJBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQ3JDLFFBQVEsRUFDUixnQkFBRSxDQUFDLFdBQVcsQ0FBQyw4QkFBOEIsQ0FBQyxDQUMvQyxDQUNGLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sS0FBSyxDQUFDLDhFQUE4RSxZQUFZLENBQUMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3BJLENBQUM7SUFDSCxDQUFDO0lBRU8scUJBQXFCLENBQUMsYUFBc0I7UUFDbEQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ25CLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFDRCxPQUFPLHlCQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBVyxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUVPLG1CQUFtQixDQUFDLE9BQWtDLEVBQUUsR0FBVyxFQUFFLEtBQWE7UUFDeEYsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLGtCQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDOztBQTdZSCxzQ0E4WUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgRHVyYXRpb24sIEZuLCBSZW1vdmFsUG9saWN5LCBTdGFjaywgU3RhY2tQcm9wcywgVGFncyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IEJ1aWxkRW52aXJvbm1lbnQsIEJ1aWxkU3BlYywgQ29tcHV0ZVR5cGUsIExpbnV4TGFtYmRhQnVpbGRJbWFnZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlYnVpbGQnO1xuaW1wb3J0ICogYXMgY29kZXBpcGVsaW5lIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlcGlwZWxpbmUnO1xuaW1wb3J0ICogYXMgY29kZXBpcGVsaW5lX2FjdGlvbnMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZGVwaXBlbGluZS1hY3Rpb25zJztcbmltcG9ydCAqIGFzIGV2ZW50cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzJztcbmltcG9ydCAqIGFzIHRhcmdldHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzJztcbmltcG9ydCB7IE1hbmFnZWRQb2xpY3kgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IElIb3N0ZWRab25lIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXJvdXRlNTMnO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB7IEJ1Y2tldCwgSUJ1Y2tldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgKiBhcyBzc20gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNzbSc7XG5pbXBvcnQgeyBJU3RyaW5nUGFyYW1ldGVyIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNzbSc7XG5pbXBvcnQgKiBhcyBwaXBlbGluZXMgZnJvbSAnYXdzLWNkay1saWIvcGlwZWxpbmVzJztcbmltcG9ydCB7IENvZGVCdWlsZFN0ZXAsIENvZGVQaXBlbGluZVNvdXJjZSB9IGZyb20gJ2F3cy1jZGstbGliL3BpcGVsaW5lcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIHlhbWwgZnJvbSAnanMteWFtbCc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbiB9IGZyb20gJy4vYXBwbGljYXRpb24tc3RhZ2UnO1xuaW1wb3J0IHsgUmlvQ29kZUJ1aWxkUHJvamVjdCB9IGZyb20gJy4vYnVpbGQtcHJvamVjdCc7XG5pbXBvcnQgeyBjcmVhdGVNYWluQnVpbGRTcGVjLCBjcmVhdGVWdWxuZXJhYmlsaXR5QnVpbGRTcGVjIH0gZnJvbSAnLi9idWlsZHNwZWNzJztcbmltcG9ydCB7IERhdGFkb2dQaXBlbGluZUVycm9yQWxlcnQsIERhdGFEb2dQaXBlbGluZUVycm9yQWxlcnRGb3JWdWxuZXJhYmlsaXR5Q2hlY2tzIH0gZnJvbSAnLi9kYXRhZG9nLW1vbml0b3JzJztcbmltcG9ydCB7IFJpb0NhcGFiaWxpdHlNb25pdG9yaW5nRGVwbG95U3RlcCB9IGZyb20gJy4vbW9uaXRvcmluZy1kZXBsb3ktc3RlcCc7XG5pbXBvcnQgeyBEYXRhZG9nQWxlcnRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vZGF0YWRvZyc7XG5pbXBvcnQgeyBJTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vLi4vZGF0YWRvZ3YyJztcbmltcG9ydCAqIGFzIHJpbyBmcm9tICcuLi8uLi8uLi9pbmRleCc7XG5pbXBvcnQgeyBDbGFpZG9tZXRlciwgQ2xhaWRvbWV0ZXJQcm9kdWN0IH0gZnJvbSAnLi4vLi4vLi4vaW5kZXgnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVTY2hlZHVsZXNQcm9wcyB7XG4gIHJlYWRvbmx5IG1haW5QaXBlbGluZT86IHN0cmluZztcbiAgcmVhZG9ubHkgdnVsbmVyYWJpbGl0eVBpcGVsaW5lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEBzdHJ1Y3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQaXBlbGluZVN0YWNrUHJvcHMgZXh0ZW5kcyBTdGFja1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzZXJ2aWNlXG4gICAqIC0gVGhpcyBoYXMgdG8gYmUgdGhlIHNhbWUgbmFtZSBhcyB0aGUgcmVwb3NpdG9yeSBhcyB0aGUgczMgdHJpZ2dlciBmaWxlIGNyZWF0ZWQgYnkgdGhlIGJpdGJ1Y2tldC1pbnRlZ3JhdGlvbiB1c2VzIHRoaXMgYXMgYSBwcmVmaXhcbiAgICogLSBUaGUgc2VydmljZU5hbWUgaXMgYXZhaWxhYmxlIGFzIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIFNFUlZJQ0VfTkFNRSBpbiB0aGUgQ29kZUJ1aWxkU3RlcFxuICAgKiAtIFRoZSBzZXJ2aWNlTmFtZSBpcyBhdmFpbGFibGUgaW4gdGhlIEFwcFN0YWNrUHJvcHMgaW4gdGhlIGFwcFN0YWNrRmFjdG9yeVxuICAgKiAtIFRoZSBzZXJ2aWNlTmFtZSBpcyBhdmFpbGFibGUgYXMgc3RhY2tOYW1lIHByb3BlcnR5IGluIHRoZSBBcHBTdGFja1Byb3BzIGluIHRoZSBhcHBTdGFja0ZhY3RvcnkuIEkuZS4gdGhlIHN0YWNrIGlzIG5hbWVkIGFmdGVyIHRoZSBzZXJ2aWNlXG4gICAqIC0gVGhlIHNlcnZpY2VOYW1lIGlzIGhhbmRlZCBvdmVyIHRvIGFsbCBEYXRhZG9nIG1vbml0b3JzXG4gICAqIC0gUklPIGNvbnZlbnRpb24gaXMgdGhhdCB1cGxvYWRlZCBsaWNlbnNlLWNoZWNrLWZpbGVzIGFyZSBuYW1lZCBhZnRlciB0aGUgc2VydmljZSwgaS5lLiBzZXJ2aWNlTmFtZS50eHRcbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByb3ZpZGVyIGZvciBhcHBTdGFjayB0byBiZSBkZXBsb3llZC5cbiAgICpcbiAgICogVGhpcyBhY3RzIGFzIGEgd3JhcHBlciBmb3IgYWxsIHJlc291cmNlcyB5b3Ugd2FudCB0byBkZXBsb3kgdmlhIHRoZSBwaXBlbGluZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcFN0YWNrRmFjdG9yeTogSUFwcFN0YWNrRmFjdG9yeTtcblxuICAvKipcbiAgICogRGVmaW5lcyB3aGljaCBraW5kIG9mIHBpcGVsaW5lIGlzIGRlcGxveWVkLlxuICAgKlxuICAgKiBVc2UgdGhlIGZlYXR1cmVzIHRvIGNvbWJpbmUgZGlmZmVyZW50IG9waW5pb25hdGVkLCBSSU8tc3BlY2lmaWMgcGlwZWxpbmUgZmVhdHVyZXMgc3VjaCBhcyBhZGRpbmcgYSBicmFuY2ggcGlwZWxpbmUgb3Igc3VwcG9ydGluZyBLYWZrYS5cbiAgICovXG4gIHJlYWRvbmx5IGZlYXR1cmVzPzogUGlwZWxpbmVGZWF0dXJlcztcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBgZmVhdHVyZXNgIHByb3BlcnR5IGluc3RlYWQuIEZvciBub3csIHRoZSBwaXBlbGluZSB0eXBlcyBhcmUgbWFwcGVkIHRvIHRoZSBmZWF0dXJlcy5cbiAgICogRGVmaW5lcyB3aGljaCBraW5kIG9mIHBpcGVsaW5lIGlzIGRlcGxveWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcGlwZWxpbmVUeXBlPzogUGlwZWxpbmVUeXBlO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGhvdyBvZnRlbiB0aGUgcGlwZWxpbmUgaXMgdHJpZ2dlcmVkIGF1dG9tYXRpY2FsbHkuIElzIGRlZmluZWQgdmlhIGEgY3JvbiBleHByZXNzaW9uLlxuICAgKlxuICAgKiBTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkV2F0Y2gvbGF0ZXN0L2V2ZW50cy9TY2hlZHVsZWRFdmVudHMuaHRtbFxuICAgKlxuICAgKiBEZWZhdWx0IHZhbHVlczpcbiAgICogLSBtYWluIHBpcGVsaW5lOiBjcm9uKDAgOSA/ICogMiMxICopXG4gICAqIC0gdnVsbmVyYWJpbGl0eSBwaXBlbGluZTogY3JvbigwIDUgPyAqIE1PTi1GUkkgKilcbiAgICovXG4gIHJlYWRvbmx5IHBpcGVsaW5lU2NoZWR1bGVzPzogUGlwZWxpbmVTY2hlZHVsZXNQcm9wcztcblxuXG4gIC8qKlxuICAgKiBQYXRoIHRvIHNlY3JldHMgZmlsZSBjb250YWluaW5nIGVuY3J5cHRlZCBzZWNyZXRzLlxuICAgKlxuICAgKiBUaGUgUmlvU2VjcmV0c0RlcGxveVN0ZXAgaXMgYWRkZWQgcHJpb3IgdG8gZGVwbG95bWVudCBvZiB0aGUgQXBwU3RhY2sgaWYgYSBwYXRoIGlzIHByb3ZpZGVkLlxuICAgKlxuICAgKiBObyBzZWNyZXRzIGFyZSBkZXBsb3llZCBpZiBubyBwYXRoIGlzIHByb3ZpZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0c0RlcGxveVN0ZXBQcm9wcz86IFBpcGVsaW5lU3RhY2tSaW9TZWNyZXRzRGVwbG95U3RlcFByb3BzO1xuXG4gIC8qKlxuICAgKiBDb2RlQnVpbGQgb3B0aW9ucyBvdmVycmlkaW5nIHRoZSByaW8tc3BlY2lmaWMgZGVmYXVsdHMuXG4gICAqL1xuICByZWFkb25seSBjb2RlQnVpbGRPcHRpb25zPzogQ29kZUJ1aWxkT3B0aW9ucztcbiAgLyoqXG4gICAqIElmIHByZXNlbnQsIHRoZSBjYXBhYmlsaXR5IG1vbml0b3JpbmcgZGVwbG95IHN0ZXAgaXMgYWRkZWQgdG8gdGhlIHBpcGVsaW5lLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9uaXRvcmluZ0RlcGxveVN0ZXBQcm9wcz86IFBpcGVsaW5lU3RhY2tSaW9Nb25pdG9yaW5nRGVwbG95U3RlcFByb3BzO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSB0aGUgYHZ1bG5lcmFiaWxpdHlOb3RpZmljYXRpb25gIHByb3BlcnR5IGluc3RlYWQuXG4gICAqIElmIGBvcHNnZW5pZWAgaXMgc3BlY2lmaWVkLCBhbiBFeGNlcHRpb24gaXMgdGhyb3duLCBhcyB0aGlzIGlzIG5vdCBzdXBwb3J0ZWQgYW55bW9yZS5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGFkb2dBbGVydFR5cGU/OiBEYXRhZG9nQWxlcnRUeXBlO1xuICAvKipcbiAgICogTm90aWZpY2F0aW9uIHR5cGUgZm9yIHRoZSBhdXRvLWdlbmVyYXRlZCB2dWxuZXJhYmlsaXR5IHBpcGVsaW5lIG1vbml0b3IuIERlZmF1bHRzIHRvIHNsYWNrLlxuICAgKi9cbiAgcmVhZG9ubHkgdnVsbmVyYWJpbGl0eU5vdGlmaWNhdGlvbj86IElOb3RpZmljYXRpb247XG4gIC8qKlxuICAgKiBDb2RlUGlwZWxpbmUgUGlwZWxpbmVUeXBlIChWMSBvciBWMikuIERlZmF1bHRzIHRvIFYxLlxuICAgKi9cbiAgcmVhZG9ubHkgY29kZVBpcGVsaW5lVHlwZT86IGNvZGVwaXBlbGluZS5QaXBlbGluZVR5cGU7XG59XG5cbi8qKlxuICogUHJvdmlkZXIgaW50ZXJmYWNlIHRvIGNyZWF0ZSB0aGUgQXBwU3RhY2sgd2l0aGluIHRoZSBzcGVjaWZpYyBzY29wZVxuICpcbiAqIFNpbXBseSBwbGFjZSB0aGUgQXBwU3RhY2sgY3JlYXRpb24gaW50byB0aGUgY3JlYXRlLW1ldGhvZDpcbiAqIEBleGFtcGxlXG4gKlxuICogLy8gVXNlIGUuZy4gd2l0aGluIEFwcGxpY2F0aW9uUHJvcHMgYXMgSlNPTk9iamVjdDpcbiAqIFxceyBjcmVhdGU6IChjb25zdHJ1Y3QsIHByb3BzKSA9XFw+IG5ldyBTdGFjayhjb25zdHJ1Y3QsICdBcHBTdGFjaycsIHByb3BzKSBcXH1cbiAqXG4gKiAvLyBvciBzaW1wbHkgYXMgY2xhc3MgaW50ZXJmYWNlIHdpdGhpbiB5b3VyIHN0YWNrIGltcGxlbWVudGF0aW9uOlxuICogY2xhc3MgUGlwZWxpbmVTdGFnZSBleHRlbmRzIFN0YWdlIGltcGxlbWVudHMgSUFwcFN0YWNrRmFjdG9yeSBcXHtcbiAqICAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFN0YWdlUHJvcHMpIFxce1xuICogICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICogICAgIC8vIHlvdXIgc3RhZ2UgZGVmaW5pdGlvblxuICogICBcXH1cbiAqXG4gKiAgIGNyZWF0ZShzY29wZTogQ29uc3RydWN0LCBwcm9wczogQXBwU3RhY2tQcm9wcyk6IHZvaWQgXFx7XG4gKiAgICAgLy8gYXBwIHN0YWNrIGluaXRpYXRpb24gZ29lcyBpbiBoZXJlXG4gKiAgIFxcfVxuICogXFx9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUFwcFN0YWNrRmFjdG9yeSB7XG4gIC8qKlxuICAgKiBGYWN0b3J5IG1ldGhvZCwgYmVpbmcgaW52b2tlZCB3aXRoIHRoZSBzcGVjaWZpYyBzY29wZSBkdXJpbmcgcGlwZWxpbmUgaW5zdGFudGlhdGlvblxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgLSBUaGUgcGFyZW50IGNvbnN0cnVjdCBmb3IgdGhlIGFwcCBzdGFja1xuICAgKiBAcGFyYW0gcHJvcHMgLSBUaGUgYXBwIHN0YWNrcyBwcm9wZXJ0aWVzXG4gICAqL1xuICBjcmVhdGUoc2NvcGU6IENvbnN0cnVjdCwgcHJvcHM6IEFwcFN0YWNrUHJvcHMpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcFN0YWNrUHJvcHMgZXh0ZW5kcyBTdGFja1Byb3BzIHtcbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNlbGVjdGVkIHByb3BlcnRpZXMgYmVpbmcgaGFuZGVkIG92ZXIgdG8gUmlvU2VjcmV0c0RlcGxveVN0ZXAuXG4gKlxuICogQHNlZSByaW8uUmlvU2VjcmV0c0RlcGxveVN0ZXBcbiAqIEBzZWUgcmlvLlJpb1NlY3JldHNEZXBsb3lTdGVwUHJvcHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQaXBlbGluZVN0YWNrUmlvU2VjcmV0c0RlcGxveVN0ZXBQcm9wcyB7XG4gIHJlYWRvbmx5IHNlY3JldHNGaWxlUGF0aDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lU3RhY2tSaW9Nb25pdG9yaW5nRGVwbG95U3RlcFByb3BzIHtcbiAgLyoqXG4gICAqIE1hcCBcXHtkaXJlY3Rvcnk6IGZpbGVuYW1lc1xcfSBjb250YWluaW5nICAuamFyIG9yIC56aXAgZmlsZXMgY3JlYXRlZCBpbiBtYWluIGJ1aWxkIHN0ZXAgdG8gYmUgdXBsb2FkZWQgdG8gdGhlIG1vbml0b3JpbmctdGVzdHN1aXRlLXJ1bm5lciBidWNrZXQsIGUuZy5cbiAgICogYGBgXG4gICAqIHtcbiAgICogICdhdmFpbGFiaWxpdHktbW9uaXRvcmluZy9idWlsZC9saWJzJzogWydmb28tYXZhaWxhYmlsaXR5LmphciddLFxuICAgKiAgJ3BlcmZvcm1hbmNlLW1vbml0b3JpbmcvYnVpbGQvbGlicyc6IFsnYXBpLWNoZWNrLnppcCcsICdmb28tcGVyZm9ybWFuY2UuamFyJ10sXG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICByZWFkb25seSBtb25pdG9yaW5nQXJ0aWZhY3RzOiB7IFtkaXJlY3Rvcnk6IHN0cmluZ106IHN0cmluZ1tdIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVGZWF0dXJlcyB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBicmFuY2ggcGlwZWxpbmUgdXNlZCBieSByZW5vdmF0ZS4gRGVmYXVsdHMgdG8gYHRydWVgLlxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoUGlwZWxpbmU/OiBib29sZWFuO1xuICAvKipcbiAgICogQ3JlYXRlIGEgdnVsbmVyYWJpbGl0eSBwaXBlbGluZSB0byBzY2FuIGRlcGVuZGVuY2llcyBmb3IgdnVsbmVyYWJpbGl0aWVzLiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqL1xuICByZWFkb25seSB2dWxuZXJhYmlsaXR5UGlwZWxpbmU/OiBib29sZWFuO1xuICAvKipcbiAgICogUnVuIGEgc3RhbmRhcmQgZ3JhZGxlIGJ1aWxkIGluIHRoZSByZXBvc2l0b3J5IHJvb3QuIERlZmF1bHRzIHRvIGBmYWxzZWA6XG4gICAqIC0gYnVpbGQgYW5kIHRlc3Qgb2YgdGhlIGFydGlmYWN0IHZpYSBjb21tYW5kIFwiLi9ncmFkbGV3IGNsZWFuIGJ1aWxkXCJcbiAgICogLSBsaWNlbnNlLWNoZWNrIGFuZCB1cGxvYWQgb2YgbGljZW5zZS1jaGVjay1maWxlIHZpYSBjb21tYW5kIFwiLi9ncmFkbGV3IGNoZWNrTGljZW5zZXNcIlxuICAgKiAtIGNyZWF0ZSBhIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlIHRvIG1ha2UgVExTIGNvbW11bmljYXRpb24gcG9zc2libGUsIGUuZy4gd2l0aCBhIGxvYWRiYWxhbmNlclxuICAgKiAtIGJ1aWxkIHRoZSBjb250YWluZXIgaW1hZ2UgdmlhIGNvbW1hbmQgXCIuL2dyYWRsZXcgamliQnVpbGRUYXJcIlxuICAgKi9cbiAgcmVhZG9ubHkgZ3JhZGxlQnVpbGQ/OiBib29sZWFuO1xuICAvKipcbiAgICogUnVuIGEgc3RhbmRhcmQgbnBtIGJ1aWxkIGluIHRoZSByZXBvc2l0b3J5IHJvb3QuIERlZmF1bHRzIHRvIGBmYWxzZWA6XG4gICAqIC0gcnVuIGxpbnRlciB2aWEgY29tbWFuZCBcIm5wbSBydW4gbGludFwiXG4gICAqIC0gcnVuIHRlc3RzIHZpYSBjb21tYW5kIFwibnBtIHJ1biB0ZXN0OmNpXCJcbiAgICogLSBydW4gYSBsaWNlbnNlIGNoZWNrIGJ5IGNhbGxpbmcgdGhlIHNjcmlwdCBcImNoZWNrLW9zcy1saWNlbnNlcy5zaFwiIChmcm9tIHRoZSBSSU8gZnJvbnRlbmQgdGVtcGxhdGUpXG4gICAqIC0gYnVpbGQgdGhlIGFydGlmYWN0IHZpYSBjb21tYW5kIFwibnBtIHJ1biBidWlsZFwiXG4gICAqL1xuICByZWFkb25seSBucG1CdWlsZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBZGQgcmVxdWlyZWQgc3RlcHMgYW5kIHBlcm1pc3Npb25zIHRvIHN1cHBvcnQgS2Fma2EuIEN1cnJlbnRseSwgdGhpcyByZXF1aXJlcyBgZ3JhZGxlQnVpbGRgIHRvIGJlIHNldCB0byBgdHJ1ZWAuIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAqL1xuICByZWFkb25seSBrYWZrYUludGVncmF0aW9uPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFMzIEJ1Y2tldCB0byBkZXBsb3kgZnJvbnRlbmQgdG8uIFJlcXVpcmVzIGBucG1CdWlsZGAgdG8gYmUgc2V0IHRvIGB0cnVlYC4gSWYgc2V0LCB0aGUgb3V0cHV0IG9mIHRoZSBucG0gYnVpbGQgaXMgZGVwbG95ZWQgdG8gdGhlIHByb3ZpZGVkIGJ1Y2tldC5cbiAgICovXG4gIHJlYWRvbmx5IGZyb250ZW5kQnVja2V0TmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgYnVpbGQgY29tbWFuZHMgZm9yIG1haW4gYW5kIGJyYW5jaCBwaXBlbGluZS4gV2lsbCBiZSBhZGRlZCBhZnRlciBhbGwgYnVpbGQgJiB0ZXN0IGNvbW1hbmRzLCBiZWZvcmUgdGhlIGluZnJhc3RydWN0dXJlIGJ1aWxkLiBEb2VzIG5vdCB3b3JrIHdpdGggcGFydGlhbEJ1aWxkc3BlYy5cbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxCdWlsZENvbW1hbmRzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBJZiBzZXQgdG8gZmFsc2UsIG5vIERhdGFkb2cgbW9uaXRvcnMgZm9yIG1haW4gYW5kIHZ1bG5lcmFiaWxpdHkgcGlwZWxpbmVzIHdpbGwgYmUgY3JlYXRlZC4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZVBpcGVsaW5lTW9uaXRvcnM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZW51bSBQaXBlbGluZVR5cGUge1xuXG4gIC8qKlxuICAgKiBTZWxmLW11dGF0aW5nIGNvZGVwaXBlbGluZSBkZXBsb3lpbmcgdGhlIHByb3ZpZGVkIEFwcFN0YWNrLiBCZSBhd2FyZTogVGhlIHByb3ZpZGVkIHNlcnZpY2Ugd29uJ3QgaGF2ZSBhY2Nlc3MgdG8gS2Fma2EuXG4gICAqXG4gICAqIENvbWVzIHdpdGggYSBwcmUtZGVmaW5lZCBidWlsZHNwZWMueWFtbCBmb3IgYSBncmFkbGUgcHJvamVjdC4gVGhpcyBidWlsZHNwZWMueWFtbCBpcyB1c2VkIGZvciBib3RoIHRoZSBtYWluIGFuZFxuICAgKiBicmFuY2ggcGlwZWxpbmUgYW5kIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcgc3RlcHNcbiAgICogLSBidWlsZCBhbmQgdGVzdCBvZiB0aGUgYXJ0aWZhY3QgdmlhIGNvbW1hbmQgXCIuL2dyYWRsZXcgY2xlYW4gYnVpbGRcIi5cbiAgICogPHA+IFRoaXMgZ3JhZGxlIGNvbW1hbmQgbXVzdCBiZSBwcm92aWRlZCBieSB0aGUgZ3JhZGxlIHByb2plY3QuXG4gICAqIC0gbGljZW5zZS1jaGVjayBhbmQgdXBsb2FkIG9mIGxpY2Vuc2UtY2hlY2stZmlsZSB2aWEgY29tbWFuZCBcIi4vZ3JhZGxldyBjaGVja0xpY2Vuc2VzXCIuXG4gICAqIDxwPiBUaGlzIGdyYWRsZSBjb21tYW5kIG11c3QgYmUgcHJvdmlkZWQgYnkgdGhlIGdyYWRsZSBwcm9qZWN0LlxuICAgKiAtIGNyZWF0ZSBhIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlIHRvIG1ha2UgVExTIGNvbW11bmljYXRpb24gcG9zc2libGUsIGUuZy4gd2l0aCBhIGxvYWRiYWxhbmNlci5cbiAgICogLSBidWlsZCB0aGUgY29udGFpbmVyIGltYWdlIHZpYSBjb21tYW5kIFwiLi9ncmFkbGV3IGppYkJ1aWxkVGFyXCIuXG4gICAqIDxwPiBUaGlzIGdyYWRsZSBjb21tYW5kIG11c3QgYmUgcHJvdmlkZWQgYnkgdGhlIGdyYWRsZSBwcm9qZWN0LlxuICAgKi9cbiAgU1RBTkRBUkRfR1JBRExFID0gJ1NUQU5EQVJEX0dSQURMRScsXG4gIC8qKlxuICAgKiBTZWxmLW11dGF0aW5nIGNvZGVwaXBlbGluZSBkZXBsb3lpbmcgdGhlIHByb3ZpZGVkIEFwcFN0YWNrIHdpdGggYWRkaXRpb25hbCBzdGVwcyBuZWVkZWQgdG8gYWNjZXNzIEthZmthLlxuICAgKlxuICAgKiBDb21lcyB3aXRoIGEgcHJlLWRlZmluZWQgYnVpbGRzcGVjLnlhbWwgZm9yIGEgZ3JhZGxlIHByb2plY3QuIFRoaXMgYnVpbGRzcGVjLnlhbWwgaXMgdXNlZCBmb3IgYm90aCB0aGUgbWFpbiBhbmRcbiAgICogYnJhbmNoIHBpcGVsaW5lIGFuZCBpbmNsdWRlcyB0aGUgZm9sbG93aW5nIHN0ZXBzXG4gICAqIC0gYnVpbGQgYW5kIHRlc3Qgb2YgdGhlIGFydGlmYWN0IHZpYSBjb21tYW5kIFwiLi9ncmFkbGV3IGNsZWFuIGJ1aWxkXCIuXG4gICAqIDxwPiBUaGlzIGdyYWRsZSBjb21tYW5kIG11c3QgYmUgcHJvdmlkZWQgYnkgdGhlIGdyYWRsZSBwcm9qZWN0LlxuICAgKiAtIGxpY2Vuc2UtY2hlY2sgYW5kIHVwbG9hZCBvZiBsaWNlbnNlLWNoZWNrLWZpbGUgdmlhIGNvbW1hbmQgXCIuL2dyYWRsZXcgY2hlY2tMaWNlbnNlc1wiLlxuICAgKiA8cD4gVGhpcyBncmFkbGUgY29tbWFuZCBtdXN0IGJlIHByb3ZpZGVkIGJ5IHRoZSBncmFkbGUgcHJvamVjdC5cbiAgICogLSBjcmVhdGUgYSBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZSB0byBtYWtlIFRMUyBjb21tdW5pY2F0aW9uIHBvc3NpYmxlLCBlLmcuIHdpdGggYSBsb2FkYmFsYW5jZXIuXG4gICAqIC0gcmVxdWVzdCBhIGNlcnRpZmljYXRlIHRvIGF1dGhlbnRpY2F0ZSBhZ2FpbnN0IEthZmthIHZpYSBtdXR1YWwgVExTXG4gICAqIC0gYnVpbGQgdGhlIGNvbnRhaW5lciBpbWFnZSB2aWEgY29tbWFuZCBcIi4vZ3JhZGxldyBqaWJCdWlsZFRhclwiLlxuICAgKiA8cD4gVGhpcyBncmFkbGUgY29tbWFuZCBtdXN0IGJlIHByb3ZpZGVkIGJ5IHRoZSBncmFkbGUgcHJvamVjdC5cbiAgICovXG4gIFNUQU5EQVJEX0dSQURMRV9LQUZLQSA9ICdTVEFOREFSRF9HUkFETEVfS0FGS0EnLFxuICAvKipcbiAgICogU2VsZi1tdXRhdGluZyBjb2RlcGlwZWxpbmUgZGVwbG95aW5nIHRoZSBwcm92aWRlZCBBcHBTdGFjay5cbiAgICpcbiAgICogQ29tZXMgd2l0aCBhIHByZS1kZWZpbmVkIGJ1aWxkc3BlYy55YW1sIHRvIHN5bnRoZXNpemUgdGhlIEFwcFN0YWNrLlxuICAgKiBObyBicmFuY2ggb3IgdnVsbmVyYWJpbGl0eSBwaXBlbGluZSBpcyBjcmVhdGVkLlxuICAgKi9cbiAgU1RBTkRBUkRfSU5GUkFTVFJVQ1RVUkUgPSAnU1RBTkRBUkRfSU5GUkFTVFJVQ1RVUkUnLFxufVxuXG4vKipcbiAqIEBwYXJhbSBwYXJ0aWFsQnVpbGRTcGVjUGF0aCAtIFBhdGggdG8gYSBjdXN0b20gYnVpbGQtc3BlYyBmaWxlIHRvIHVzZSBmb3IgdGhlIG1haW4gYW5kIGJyYW5jaCBwaXBlbGluZS5cbiAqIEEgcHJlLWRlZmluZWQgYnVpbGRzcGVjLnlhbWwgZml0dGluZyB0aGUgcGlwZWxpbmVUeXBlIGlzIHVzZWQgaWYgbm90IHByb3ZpZGVkLlxuICogQHBhcmFtIGJ1aWxkRW52aXJvbm1lbnQgLSBDdXN0b20gQ29kZUJ1aWxkIGJ1aWxkIGVudmlyb25tZW50IG92ZXJyaWRpbmcgdGhlIHJpby1zcGVjaWZpYyBkZWZhdWx0cy4gVGhlIGRlZmF1bHRzIGFyZTpcbiAqICAgICAgICAgIGJ1aWxkSW1hZ2U6IEFNQVpPTl9MSU5VWF8yXzVcbiAqICAgICAgICAgIGNvbXB1dGVUeXBlOiBMQVJHRVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvZGVCdWlsZE9wdGlvbnMge1xuICByZWFkb25seSBwYXJ0aWFsQnVpbGRTcGVjUGF0aD86IHN0cmluZztcbiAgcmVhZG9ubHkgYnVpbGRFbnZpcm9ubWVudD86IEJ1aWxkRW52aXJvbm1lbnQ7XG59XG5cbmV4cG9ydCBjbGFzcyBQaXBlbGluZVN0YWNrIGV4dGVuZHMgU3RhY2sge1xuICBwcml2YXRlIHJlYWRvbmx5IF9mZWF0dXJlczogUGlwZWxpbmVGZWF0dXJlcztcbiAgcHJpdmF0ZSByZWFkb25seSBfbWFpbkNvZGVCdWlsZFByb2plY3Q6IENvZGVCdWlsZFN0ZXA7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2JyYW5jaENvZGVCdWlsZFByb2plY3Q6IENvZGVCdWlsZFN0ZXAgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2J1Y2tldDogSUJ1Y2tldDtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2FjaGVCdWNrZXQ6IElCdWNrZXQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hvc3RlZFpvbmU6IElIb3N0ZWRab25lO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbnB1dE1hc3RlclRyaWdnZXJGaWxlOiBDb2RlUGlwZWxpbmVTb3VyY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lucHV0QnJhbmNoVHJpZ2dlckZpbGU6IENvZGVQaXBlbGluZVNvdXJjZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfb3NzTGljZW5zZXNCdWNrZXRQYXJhbWV0ZXI6IElTdHJpbmdQYXJhbWV0ZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX29zc0xpY2Vuc2VzQnVja2V0OiBJQnVja2V0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXJ2aWNlS2V5c3RvcmVQYXNzd29yZDogSVN0cmluZ1BhcmFtZXRlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfYWNjb3VudE5hbWVQYXJhbWV0ZXI6IElTdHJpbmdQYXJhbWV0ZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX25pc3REYXRhTWlycm9yVXJsOiBJU3RyaW5nUGFyYW1ldGVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb2RlUGlwZWxpbmVUeXBlOiBjb2RlcGlwZWxpbmUuUGlwZWxpbmVUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQaXBlbGluZVN0YWNrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIHRoaXMuX2ZlYXR1cmVzID0gdGhpcy5wYXJzZUZlYXR1cmVzKHByb3BzKTtcblxuICAgIC8vIHBvcHVsYXRlIGV4dGVybmFsIHBhcmFtZXRlcnNcbiAgICB0aGlzLl9idWNrZXQgPSBzMy5CdWNrZXQuZnJvbUJ1Y2tldE5hbWUodGhpcywgJ1RyaWdnZXJCdWNrZXQnLCBGbi5pbXBvcnRWYWx1ZSgnYml0YnVja2V0LWludGVncmF0aW9uLXMzLWJ1Y2tldCcpKTtcbiAgICB0aGlzLl9jYWNoZUJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQodGhpcywgJ0NhY2hlQnVja2V0Jywge1xuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgYXV0b0RlbGV0ZU9iamVjdHM6IHRydWUsXG4gICAgICBsaWZlY3ljbGVSdWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgZXhwaXJhdGlvbjogRHVyYXRpb24uZGF5cygzMCksXG4gICAgICAgICAgYWJvcnRJbmNvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkQWZ0ZXI6IER1cmF0aW9uLmRheXMoNyksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICAgIHRoaXMuX2hvc3RlZFpvbmUgPSByaW8uUmlvTGFuZGluZ1pvbmUuZ2V0RGVmYXVsdEhvc3RlZFpvbmUodGhpcyk7XG4gICAgdGhpcy5faW5wdXRNYXN0ZXJUcmlnZ2VyRmlsZSA9IHBpcGVsaW5lcy5Db2RlUGlwZWxpbmVTb3VyY2UuczModGhpcy5fYnVja2V0LCBgJHtwcm9wcy5zZXJ2aWNlTmFtZX0vdHJpZ2dlci8ke3Jpby5UcmlnZ2VyS2V5Lk1BU1RFUl9SRVBPfWAsIHsgdHJpZ2dlcjogY29kZXBpcGVsaW5lX2FjdGlvbnMuUzNUcmlnZ2VyLkVWRU5UUyB9KTtcbiAgICB0aGlzLl9pbnB1dEJyYW5jaFRyaWdnZXJGaWxlID0gcGlwZWxpbmVzLkNvZGVQaXBlbGluZVNvdXJjZS5zMyh0aGlzLl9idWNrZXQsIGAke3Byb3BzLnNlcnZpY2VOYW1lfS90cmlnZ2VyLyR7cmlvLlRyaWdnZXJLZXkuQlJBTkNIX1JFUE99YCwgeyB0cmlnZ2VyOiBjb2RlcGlwZWxpbmVfYWN0aW9ucy5TM1RyaWdnZXIuRVZFTlRTIH0pO1xuXG4gICAgdGhpcy5fb3NzTGljZW5zZXNCdWNrZXRQYXJhbWV0ZXIgPSBzc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJBdHRyaWJ1dGVzKHRoaXMsICdPc3NMaWNlbnNlc0J1Y2tldFBhcmFtZXRlcicsIHsgcGFyYW1ldGVyTmFtZTogJy9jb25maWcvb3NzLWxpY2Vuc2VzL2J1Y2tldC1uYW1lJyB9KTtcbiAgICB0aGlzLl9vc3NMaWNlbnNlc0J1Y2tldCA9IHMzLkJ1Y2tldC5mcm9tQnVja2V0TmFtZSh0aGlzLCAnT3NzTGljZW5zZXNCdWNrZXQnLCB0aGlzLl9vc3NMaWNlbnNlc0J1Y2tldFBhcmFtZXRlci5zdHJpbmdWYWx1ZSk7XG4gICAgdGhpcy5fc2VydmljZUtleXN0b3JlUGFzc3dvcmQgPSBzc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TZWN1cmVTdHJpbmdQYXJhbWV0ZXJBdHRyaWJ1dGVzKHRoaXMsICdLZXlzdG9yZVBhc3N3b3JkJywge1xuICAgICAgcGFyYW1ldGVyTmFtZTogYC9jb25maWcvJHtwcm9wcy5zZXJ2aWNlTmFtZX0vc2VydmljZS1rZXlzdG9yZS1wYXNzd29yZGAsXG4gICAgICB2ZXJzaW9uOiAxLFxuICAgIH0pO1xuICAgIHRoaXMuX2FjY291bnROYW1lUGFyYW1ldGVyID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZSh0aGlzLCAnQWNjb3VudE5hbWVQYXJhbWV0ZXInLCAnL2NvbmZpZy9hY2NvdW50L25hbWUnKTtcbiAgICB0aGlzLl9uaXN0RGF0YU1pcnJvclVybCA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVNlY3VyZVN0cmluZ1BhcmFtZXRlckF0dHJpYnV0ZXModGhpcywgJ05pc3REYXRhTWlycm9yVXJsJywge1xuICAgICAgcGFyYW1ldGVyTmFtZTogJy9jb25maWcvbmlzdC1kYXRhLW1pcnJvci91cmwnLFxuICAgICAgdmVyc2lvbjogMSxcbiAgICB9KTtcblxuICAgIHRoaXMuX2NvZGVQaXBlbGluZVR5cGUgPSBwcm9wcy5jb2RlUGlwZWxpbmVUeXBlID8/IGNvZGVwaXBlbGluZS5QaXBlbGluZVR5cGUuVjE7XG5cbiAgICB0aGlzLl9tYWluQ29kZUJ1aWxkUHJvamVjdCA9IHRoaXMuY3JlYXRlUmlvQ29kZUJ1aWxkUHJvamVjdCgnTWFpbkJ1aWxkJywgdGhpcy5faW5wdXRNYXN0ZXJUcmlnZ2VyRmlsZSwgcHJvcHMpO1xuICAgIHRoaXMuYWRkTWFpblBpcGVsaW5lKHByb3BzLCB0aGlzLl9tYWluQ29kZUJ1aWxkUHJvamVjdCk7XG5cbiAgICBpZiAodGhpcy5fZmVhdHVyZXMuYnJhbmNoUGlwZWxpbmUpIHtcbiAgICAgIHRoaXMuX2JyYW5jaENvZGVCdWlsZFByb2plY3QgPSB0aGlzLmNyZWF0ZVJpb0NvZGVCdWlsZFByb2plY3QoJ0JyYW5jaEJ1aWxkJywgdGhpcy5faW5wdXRCcmFuY2hUcmlnZ2VyRmlsZSwgcHJvcHMpO1xuICAgICAgdGhpcy5hZGRCcmFuY2hQaXBlbGluZSh0aGlzLl9icmFuY2hDb2RlQnVpbGRQcm9qZWN0KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2ZlYXR1cmVzLnZ1bG5lcmFiaWxpdHlQaXBlbGluZSkge1xuICAgICAgdGhpcy5hZGRWdWxuZXJhYmlsaXR5UGlwZWxpbmUocHJvcHMpO1xuICAgIH1cblxuICAgIGNvbnN0IFtmZWF0dXJlLCBwYWNrYWdlTmFtZV0gPSBfX2Rpcm5hbWUuc3BsaXQocGF0aC5zZXApLnJldmVyc2UoKTtcbiAgICBuZXcgQ2xhaWRvbWV0ZXIodGhpcywgJ0NsYWlkb21ldGVyJywge1xuICAgICAgcHJvZHVjdDogQ2xhaWRvbWV0ZXJQcm9kdWN0LkNES19DT05UUklCVVRJT04sXG4gICAgICBwYWNrYWdlTmFtZSxcbiAgICAgIGZlYXR1cmUsXG4gICAgICB2ZXJzaW9uOiAnMS4yLjAnLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBtYWluQ29kZWJ1aWxkUHJvamVjdCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWFpbkNvZGVCdWlsZFByb2plY3Q7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGJyYW5jaENvZGVCdWlsZFByb2plY3QoKTogQ29kZUJ1aWxkU3RlcCB7XG4gICAgaWYgKHRoaXMuX2JyYW5jaENvZGVCdWlsZFByb2plY3QgPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBFcnJvcignVGhlIHBpcGVsaW5lIHR5cGUgeW91IGhhdmUgc2VsZWN0ZWQgZG9lcyBub3Qgc3VwcG9ydCBhIGJyYW5jaCBjb2RlYnVpbGQgcHJvamVjdCcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fYnJhbmNoQ29kZUJ1aWxkUHJvamVjdDtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VGZWF0dXJlcyhwcm9wczogUGlwZWxpbmVTdGFja1Byb3BzKTogUGlwZWxpbmVGZWF0dXJlcyB7XG4gICAgaWYgKHByb3BzLnBpcGVsaW5lVHlwZSAmJiBwcm9wcy5mZWF0dXJlcykge1xuICAgICAgdGhyb3cgRXJyb3IoJ1lvdSBjYW5ub3QgcHJvdmlkZSBib3RoIGEgcGlwZWxpbmVUeXBlIGFuZCBmZWF0dXJlcy4gUGxlYXNlIHVzZSBmZWF0dXJlcyBvbmx5LicpO1xuICAgIH1cbiAgICBpZiAocHJvcHMuZmVhdHVyZXM/LmthZmthSW50ZWdyYXRpb24gJiYgIXByb3BzLmZlYXR1cmVzPy5ncmFkbGVCdWlsZCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0thZmthIGludGVncmF0aW9uIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBwaXBlbGluZXMgd2l0aCBncmFkbGUgYnVpbGQnKTtcbiAgICB9XG4gICAgaWYgKHByb3BzLmZlYXR1cmVzPy5mcm9udGVuZEJ1Y2tldE5hbWUgJiYgIXByb3BzLmZlYXR1cmVzPy5ucG1CdWlsZCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0Zyb250ZW5kIGJ1Y2tldCBuYW1lIGNhbiBvbmx5IGJlIHNldCB3aGVuIG5wbSBidWlsZCBpcyBlbmFibGVkJyk7XG4gICAgfVxuICAgIGlmIChwcm9wcy5mZWF0dXJlcz8uYWRkaXRpb25hbEJ1aWxkQ29tbWFuZHMgJiYgcHJvcHMuY29kZUJ1aWxkT3B0aW9ucz8ucGFydGlhbEJ1aWxkU3BlY1BhdGgpIHtcbiAgICAgIHRocm93IEVycm9yKCdZb3UgY2Fubm90IHByb3ZpZGUgYWRkaXRpb25hbEJ1aWxkQ29tbWFuZHMgaWYgeW91IHVzZSBhIHBhcnRpYWxCdWlsZFNwZWNQYXRoLicpO1xuICAgIH1cbiAgICBpZiAocHJvcHMuZmVhdHVyZXMgJiYgcHJvcHMuY29kZUJ1aWxkT3B0aW9ucz8ucGFydGlhbEJ1aWxkU3BlY1BhdGgpIHtcbiAgICAgIGNvbnNvbGUud2FybignWW91IGFyZSB1c2luZyB0aGUgcGlwZWxpbmUgZmVhdHVyZXMgaW4gY29tYmluYXRpb24gd2l0aCBhIHBhcnRpYWxCdWlsZFNwZWNQYXRoLiBQbGVhc2Uga2VlcCBpbiBtaW5kLCB0aGF0IGFsbCBidWlsZHNwZWMgcmVsYXRlZCBmZWF0dXJlcyBhcmUgaWdub3JlZCBhbmQgdGhlIHBhcnRpYWxCdWlsZFNwZWMgaXMgYXBwbGllZC4nKTtcbiAgICB9XG4gICAgaWYgKHByb3BzLnBpcGVsaW5lVHlwZSkge1xuICAgICAgc3dpdGNoIChwcm9wcy5waXBlbGluZVR5cGUpIHtcbiAgICAgICAgY2FzZSBQaXBlbGluZVR5cGUuU1RBTkRBUkRfR1JBRExFOlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBicmFuY2hQaXBlbGluZTogdHJ1ZSxcbiAgICAgICAgICAgIHZ1bG5lcmFiaWxpdHlQaXBlbGluZTogdHJ1ZSxcbiAgICAgICAgICAgIGdyYWRsZUJ1aWxkOiB0cnVlLFxuICAgICAgICAgICAgbnBtQnVpbGQ6IGZhbHNlLFxuICAgICAgICAgICAga2Fma2FJbnRlZ3JhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICBlbmFibGVQaXBlbGluZU1vbml0b3JzOiB0cnVlLFxuICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgUGlwZWxpbmVUeXBlLlNUQU5EQVJEX0dSQURMRV9LQUZLQTpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnJhbmNoUGlwZWxpbmU6IHRydWUsXG4gICAgICAgICAgICB2dWxuZXJhYmlsaXR5UGlwZWxpbmU6IHRydWUsXG4gICAgICAgICAgICBncmFkbGVCdWlsZDogdHJ1ZSxcbiAgICAgICAgICAgIG5wbUJ1aWxkOiBmYWxzZSxcbiAgICAgICAgICAgIGthZmthSW50ZWdyYXRpb246IHRydWUsXG4gICAgICAgICAgICBlbmFibGVQaXBlbGluZU1vbml0b3JzOiB0cnVlLFxuICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgUGlwZWxpbmVUeXBlLlNUQU5EQVJEX0lORlJBU1RSVUNUVVJFOlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBicmFuY2hQaXBlbGluZTogZmFsc2UsXG4gICAgICAgICAgICB2dWxuZXJhYmlsaXR5UGlwZWxpbmU6IGZhbHNlLFxuICAgICAgICAgICAgZ3JhZGxlQnVpbGQ6IGZhbHNlLFxuICAgICAgICAgICAgbnBtQnVpbGQ6IGZhbHNlLFxuICAgICAgICAgICAga2Fma2FJbnRlZ3JhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICBlbmFibGVQaXBlbGluZU1vbml0b3JzOiB0cnVlLFxuICAgICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBicmFuY2hQaXBlbGluZTogcHJvcHMuZmVhdHVyZXM/LmJyYW5jaFBpcGVsaW5lID8/IHRydWUsXG4gICAgICB2dWxuZXJhYmlsaXR5UGlwZWxpbmU6IHByb3BzLmZlYXR1cmVzPy52dWxuZXJhYmlsaXR5UGlwZWxpbmUgPz8gdHJ1ZSxcbiAgICAgIGdyYWRsZUJ1aWxkOiBwcm9wcy5mZWF0dXJlcz8uZ3JhZGxlQnVpbGQgPz8gZmFsc2UsXG4gICAgICBucG1CdWlsZDogcHJvcHMuZmVhdHVyZXM/Lm5wbUJ1aWxkID8/IGZhbHNlLFxuICAgICAga2Fma2FJbnRlZ3JhdGlvbjogcHJvcHMuZmVhdHVyZXM/LmthZmthSW50ZWdyYXRpb24gPz8gZmFsc2UsXG4gICAgICBmcm9udGVuZEJ1Y2tldE5hbWU6IHByb3BzLmZlYXR1cmVzPy5mcm9udGVuZEJ1Y2tldE5hbWUsXG4gICAgICBhZGRpdGlvbmFsQnVpbGRDb21tYW5kczogcHJvcHMuZmVhdHVyZXM/LmFkZGl0aW9uYWxCdWlsZENvbW1hbmRzLFxuICAgICAgZW5hYmxlUGlwZWxpbmVNb25pdG9yczogcHJvcHMuZmVhdHVyZXM/LmVuYWJsZVBpcGVsaW5lTW9uaXRvcnMgPz8gdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVSaW9Db2RlQnVpbGRQcm9qZWN0KG5hbWU6IHN0cmluZywgdHJpZ2dlckZpbGU6IENvZGVQaXBlbGluZVNvdXJjZSwgcHJvcHM6IFBpcGVsaW5lU3RhY2tQcm9wcykge1xuICAgIHJldHVybiBuZXcgUmlvQ29kZUJ1aWxkUHJvamVjdCh0aGlzLCBuYW1lLCB7XG4gICAgICBpbnB1dDogdHJpZ2dlckZpbGUsXG4gICAgICBjZGtPdXREaXJlY3Rvcnk6ICdpbmZyYXN0cnVjdHVyZS9jZGsub3V0JyxcbiAgICAgIHBhcnRpYWxCdWlsZFNwZWM6IHRoaXMubG9hZEJ1aWxkU3BlY0Zyb21GaWxlKHByb3BzPy5jb2RlQnVpbGRPcHRpb25zPy5wYXJ0aWFsQnVpbGRTcGVjUGF0aCkgfHwgY3JlYXRlTWFpbkJ1aWxkU3BlYyh0aGlzLl9mZWF0dXJlcyksXG4gICAgICBidWlsZEVudmlyb25tZW50OiBwcm9wcz8uY29kZUJ1aWxkT3B0aW9ucz8uYnVpbGRFbnZpcm9ubWVudCxcbiAgICAgIGhvc3RlZFpvbmVOYW1lOiB0aGlzLl9ob3N0ZWRab25lLnpvbmVOYW1lLFxuICAgICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgY2FjaGVCdWNrZXQ6IHRoaXMuX2NhY2hlQnVja2V0LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRNYWluUGlwZWxpbmUocHJvcHM6IFBpcGVsaW5lU3RhY2tQcm9wcywgbWFpbkJ1aWxkOiBDb2RlQnVpbGRTdGVwKSB7XG4gICAgY29uc3QgcGlwZWxpbmUgPSBuZXcgY29kZXBpcGVsaW5lLlBpcGVsaW5lKHRoaXMsICdQaXBlbGluZScsIHtcbiAgICAgIGFydGlmYWN0QnVja2V0OiB0aGlzLl9jYWNoZUJ1Y2tldCxcbiAgICAgIHBpcGVsaW5lVHlwZTogdGhpcy5fY29kZVBpcGVsaW5lVHlwZSxcbiAgICAgIHJlc3RhcnRFeGVjdXRpb25PblVwZGF0ZTogdHJ1ZSxcbiAgICB9KTtcbiAgICBjb25zdCBjb2RlUGlwZWxpbmUgPSBuZXcgcGlwZWxpbmVzLkNvZGVQaXBlbGluZShwaXBlbGluZSwgJ0NvZGVQaXBlbGluZScsIHtcbiAgICAgIGNvZGVQaXBlbGluZTogcGlwZWxpbmUsXG4gICAgICBzeW50aDogbWFpbkJ1aWxkLFxuICAgICAgc2VsZk11dGF0aW9uQ29kZUJ1aWxkRGVmYXVsdHM6IHtcbiAgICAgICAgYnVpbGRFbnZpcm9ubWVudDoge1xuICAgICAgICAgIGJ1aWxkSW1hZ2U6IExpbnV4TGFtYmRhQnVpbGRJbWFnZS5BTUFaT05fTElOVVhfMjAyM19OT0RFXzIwLFxuICAgICAgICAgIGNvbXB1dGVUeXBlOiBDb21wdXRlVHlwZS5MQU1CREFfMUdCLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBUYWdzLm9mKHBpcGVsaW5lKS5hZGQoJ3BpcGVsaW5lX3R5cGUnLCAnYnVpbGQnKTtcblxuICAgIGNvbnN0IHN0cmlwQXNzZXRzU3RlcCA9IHRoaXMuY3JlYXRlU3RyaXBBc3NldHNTdGVwKGNvZGVQaXBlbGluZSk7XG4gICAgY29kZVBpcGVsaW5lLmFkZFdhdmUoJ0JlZm9yZURlcGxveScsIHsgcHJlOiBbc3RyaXBBc3NldHNTdGVwXSB9KTtcblxuICAgIGNvbnN0IGNhcGFiaWxpdHlNb25pdG9yaW5nRGVwbG95U3RlcCA9IHRoaXMuY3JlYXRlQ2FwYWJpbGl0eU1vbml0b3JpbmdEZXBsb3lTdGVwKG1haW5CdWlsZCwgcHJvcHMpO1xuICAgIGNvbnN0IHNlY3JldHNEZXBsb3lTdGVwUHJvcHMgPSB0aGlzLmNyZWF0ZVNlY3JldHNEZXBsb3lTdGVwKHByb3BzKTtcbiAgICBjb25zdCBmcm9udGVuZERlcGxveVN0ZXAgPSB0aGlzLmNyZWF0ZURlcGxveUZyb250ZW5kRGVwbG95U3RlcChtYWluQnVpbGQpO1xuICAgIGNvbnN0IHBvc3RTdGVwcyA9IFtdO1xuICAgIGlmIChjYXBhYmlsaXR5TW9uaXRvcmluZ0RlcGxveVN0ZXApIHtcbiAgICAgIHBvc3RTdGVwcy5wdXNoKGNhcGFiaWxpdHlNb25pdG9yaW5nRGVwbG95U3RlcCk7XG4gICAgfVxuICAgIGlmIChmcm9udGVuZERlcGxveVN0ZXApIHtcbiAgICAgIHBvc3RTdGVwcy5wdXNoKGZyb250ZW5kRGVwbG95U3RlcCk7XG4gICAgfVxuXG4gICAgY29kZVBpcGVsaW5lLmFkZFN0YWdlKG5ldyBBcHBsaWNhdGlvbih0aGlzLCAnRGVwbG95QXBwbGljYXRpb25TdGFja3MnLCB7XG4gICAgICBhcHBTdGFja0ZhY3Rvcnk6IHByb3BzLmFwcFN0YWNrRmFjdG9yeSxcbiAgICAgIHNlcnZpY2VOYW1lOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICAgIHZlcnNpb246IHByb2Nlc3MuZW52LlBJUEVMSU5FX0VYRUNVVElPTl9JRCA/PyAnUElQRUxJTkVfRVhFQ1VUSU9OX0lEIG5vdCBzZXQnLFxuICAgIH0pLCB7XG4gICAgICBwcmU6IHNlY3JldHNEZXBsb3lTdGVwUHJvcHMgPyBbc2VjcmV0c0RlcGxveVN0ZXBQcm9wc10gOiB1bmRlZmluZWQsXG4gICAgICBwb3N0OiBwb3N0U3RlcHMsXG4gICAgfSk7XG5cbiAgICBjb2RlUGlwZWxpbmUuYnVpbGRQaXBlbGluZSgpO1xuXG4gICAgdGhpcy50YWdDb2RlQnVpbGRQcm9qZWN0KHN0cmlwQXNzZXRzU3RlcCwgJ3Byb2plY3RfdHlwZScsICdzdHJpcF9hc3NldHMnKTtcbiAgICB0aGlzLnRhZ0NvZGVCdWlsZFByb2plY3Qoc2VjcmV0c0RlcGxveVN0ZXBQcm9wcywgJ3Byb2plY3RfdHlwZScsICdkZXBsb3lfc2VjcmV0cycpO1xuICAgIHRoaXMudGFnQ29kZUJ1aWxkUHJvamVjdChtYWluQnVpbGQsICdwcm9qZWN0X3R5cGUnLCAnYnVpbGQnKTtcbiAgICB0aGlzLnRhZ0NvZGVCdWlsZFByb2plY3QoY2FwYWJpbGl0eU1vbml0b3JpbmdEZXBsb3lTdGVwLCAncHJvamVjdF90eXBlJywgJ2RlcGxveV9jYXBhYmlsaXR5X21vbml0b3JpbmcnKTtcbiAgICB0aGlzLnRhZ0NvZGVCdWlsZFByb2plY3QoZnJvbnRlbmREZXBsb3lTdGVwLCAncHJvamVjdF90eXBlJywgJ2RlcGxveV9mcm9udGVuZCcpO1xuXG4gICAgaWYgKGNhcGFiaWxpdHlNb25pdG9yaW5nRGVwbG95U3RlcCkge1xuICAgICAgY29uc3QgbW9uaXRvcmluZ1Rlc3RzdWl0ZVJ1bm5lckJ1Y2tldCA9IEJ1Y2tldC5mcm9tQnVja2V0TmFtZSh0aGlzLCAnTW9uaXRvcmluZ1Rlc3RzdWl0ZVJ1bm5lckJ1Y2tldCcsIGBtb25pdG9yaW5nLXRlc3RzdWl0ZS1ydW5uZXItJHt0aGlzLmFjY291bnR9YCk7XG4gICAgICBtb25pdG9yaW5nVGVzdHN1aXRlUnVubmVyQnVja2V0LmdyYW50V3JpdGUoY2FwYWJpbGl0eU1vbml0b3JpbmdEZXBsb3lTdGVwKTtcbiAgICB9XG4gICAgaWYgKGZyb250ZW5kRGVwbG95U3RlcCkge1xuICAgICAgY29uc3QgZnJvbnRlbmRCdWNrZXQgPSBzMy5CdWNrZXQuZnJvbUJ1Y2tldE5hbWUodGhpcywgJ0Zyb250ZW5kQnVja2V0JywgdGhpcy5fZmVhdHVyZXMuZnJvbnRlbmRCdWNrZXROYW1lISEpO1xuICAgICAgZnJvbnRlbmRCdWNrZXQuZ3JhbnRSZWFkV3JpdGUoZnJvbnRlbmREZXBsb3lTdGVwKTtcbiAgICB9XG5cbiAgICBjb25zdCBydWxlID0gbmV3IGV2ZW50cy5SdWxlKHRoaXMsICdQaXBlbGluZVNjaGVkdWxlJywge1xuICAgICAgc2NoZWR1bGU6IGV2ZW50cy5TY2hlZHVsZS5leHByZXNzaW9uKHByb3BzLnBpcGVsaW5lU2NoZWR1bGVzPy5tYWluUGlwZWxpbmUgfHwgJ2Nyb24oMCA5ID8gKiAyIzEgKiknKSxcbiAgICB9KTtcbiAgICBydWxlLmFkZFRhcmdldChuZXcgdGFyZ2V0cy5Db2RlUGlwZWxpbmUoY29kZVBpcGVsaW5lLnBpcGVsaW5lKSk7XG5cbiAgICB0aGlzLl9vc3NMaWNlbnNlc0J1Y2tldC5ncmFudFJlYWRXcml0ZShtYWluQnVpbGQpO1xuICAgIHRoaXMuX29zc0xpY2Vuc2VzQnVja2V0UGFyYW1ldGVyLmdyYW50UmVhZChtYWluQnVpbGQpO1xuICAgIHRoaXMuX3NlcnZpY2VLZXlzdG9yZVBhc3N3b3JkLmdyYW50UmVhZChtYWluQnVpbGQpO1xuICAgIHRoaXMuX2FjY291bnROYW1lUGFyYW1ldGVyLmdyYW50UmVhZChtYWluQnVpbGQpO1xuICAgIGlmICh0aGlzLl9mZWF0dXJlcy5rYWZrYUludGVncmF0aW9uKSB7XG4gICAgICB0aGlzLmdyYW50UGVybWlzc2lvbnNGb3JLYWZrYUludGVncmF0aW9uKG1haW5CdWlsZCwgJ0thZmthSW50ZWdyYXRpb25Qb2xpY3knKTtcbiAgICB9XG4gICAgY29kZVBpcGVsaW5lLnBpcGVsaW5lLmFydGlmYWN0QnVja2V0LmdyYW50UmVhZFdyaXRlKHN0cmlwQXNzZXRzU3RlcC5wcm9qZWN0KTtcblxuICAgIGlmICh0aGlzLl9mZWF0dXJlcz8uZW5hYmxlUGlwZWxpbmVNb25pdG9ycykge1xuICAgICAgbmV3IERhdGFkb2dQaXBlbGluZUVycm9yQWxlcnQodGhpcywgJ0RhdGFkb2dQaXBlbGluZUVycm9yTW9uaXRvcicsIHtcbiAgICAgICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgICBwaXBlbGluZU5hbWU6IHBpcGVsaW5lLnBpcGVsaW5lTmFtZSxcbiAgICAgICAgYWNjb3VudElkOiB0aGlzLmFjY291bnQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEJyYW5jaFBpcGVsaW5lKGJyYW5jaEJ1aWxkOiBDb2RlQnVpbGRTdGVwKSB7XG4gICAgY29uc3QgYnJhbmNoUGlwZWxpbmUgPSBuZXcgY29kZXBpcGVsaW5lLlBpcGVsaW5lKHRoaXMsICdCcmFuY2hQaXBlbGluZScsIHtcbiAgICAgIGFydGlmYWN0QnVja2V0OiB0aGlzLl9jYWNoZUJ1Y2tldCxcbiAgICAgIHBpcGVsaW5lVHlwZTogdGhpcy5fY29kZVBpcGVsaW5lVHlwZSxcbiAgICAgIHJlc3RhcnRFeGVjdXRpb25PblVwZGF0ZTogdHJ1ZSxcbiAgICB9KTtcbiAgICBjb25zdCBicmFuY2hDb2RlUGlwZWxpbmUgPSBuZXcgcGlwZWxpbmVzLkNvZGVQaXBlbGluZShicmFuY2hQaXBlbGluZSwgJ0NvZGVQaXBlbGluZScsIHtcbiAgICAgIGNvZGVQaXBlbGluZTogYnJhbmNoUGlwZWxpbmUsXG4gICAgICBzeW50aDogYnJhbmNoQnVpbGQsXG4gICAgICBzZWxmTXV0YXRpb246IGZhbHNlLFxuICAgIH0pO1xuICAgIFRhZ3Mub2YoYnJhbmNoUGlwZWxpbmUpLmFkZCgncGlwZWxpbmVfdHlwZScsICdicmFuY2gnKTtcbiAgICBicmFuY2hDb2RlUGlwZWxpbmUuYWRkV2F2ZSgnQnJhbmNoQnVpbGQnKS5hZGRQb3N0KGJyYW5jaEJ1aWxkKTtcbiAgICBicmFuY2hDb2RlUGlwZWxpbmUuYnVpbGRQaXBlbGluZSgpO1xuXG4gICAgdGhpcy50YWdDb2RlQnVpbGRQcm9qZWN0KGJyYW5jaEJ1aWxkLCAncHJvamVjdF90eXBlJywgJ2JyYW5jaF9idWlsZCcpO1xuXG4gICAgdGhpcy5fb3NzTGljZW5zZXNCdWNrZXQuZ3JhbnRSZWFkV3JpdGUoYnJhbmNoQnVpbGQpO1xuICAgIHRoaXMuX29zc0xpY2Vuc2VzQnVja2V0UGFyYW1ldGVyLmdyYW50UmVhZChicmFuY2hCdWlsZCk7XG4gICAgdGhpcy5fc2VydmljZUtleXN0b3JlUGFzc3dvcmQuZ3JhbnRSZWFkKGJyYW5jaEJ1aWxkKTtcbiAgICB0aGlzLl9hY2NvdW50TmFtZVBhcmFtZXRlci5ncmFudFJlYWQoYnJhbmNoQnVpbGQpO1xuICAgIGlmICh0aGlzLl9mZWF0dXJlcy5rYWZrYUludGVncmF0aW9uKSB7XG4gICAgICB0aGlzLmdyYW50UGVybWlzc2lvbnNGb3JLYWZrYUludGVncmF0aW9uKGJyYW5jaEJ1aWxkLCAnQnJhbmNoS2Fma2FJbnRlZ3JhdGlvblBvbGljeScpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkVnVsbmVyYWJpbGl0eVBpcGVsaW5lKHByb3BzOiBQaXBlbGluZVN0YWNrUHJvcHMpIHtcbiAgICBjb25zdCB2dWxuZXJhYmlsaXR5QnVpbGQgPSBuZXcgUmlvQ29kZUJ1aWxkUHJvamVjdCh0aGlzLCAnVnVsbmVyYWJpbGl0eUNoZWNrcycsIHtcbiAgICAgIGlucHV0OiB0aGlzLl9pbnB1dE1hc3RlclRyaWdnZXJGaWxlLFxuICAgICAgcGFydGlhbEJ1aWxkU3BlYzogY3JlYXRlVnVsbmVyYWJpbGl0eUJ1aWxkU3BlYyh0aGlzLl9mZWF0dXJlcyksXG4gICAgICBidWlsZEVudmlyb25tZW50OiBwcm9wcz8uY29kZUJ1aWxkT3B0aW9ucz8uYnVpbGRFbnZpcm9ubWVudCxcbiAgICAgIGhvc3RlZFpvbmVOYW1lOiB0aGlzLl9ob3N0ZWRab25lLnpvbmVOYW1lLFxuICAgICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgY2FjaGVCdWNrZXQ6IHRoaXMuX2NhY2hlQnVja2V0LFxuICAgIH0pO1xuICAgIGNvbnN0IHZ1bG5lcmFiaWxpdHlQaXBlbGluZSA9IG5ldyBjb2RlcGlwZWxpbmUuUGlwZWxpbmUodGhpcywgJ1Z1bG5lcmFiaWxpdHlQaXBlbGluZScsIHtcbiAgICAgIGFydGlmYWN0QnVja2V0OiB0aGlzLl9jYWNoZUJ1Y2tldCxcbiAgICAgIHBpcGVsaW5lVHlwZTogdGhpcy5fY29kZVBpcGVsaW5lVHlwZSxcbiAgICAgIHJlc3RhcnRFeGVjdXRpb25PblVwZGF0ZTogdHJ1ZSxcbiAgICB9KTtcbiAgICBjb25zdCB2dWxuZXJhYmlsaXR5Q29kZVBpcGVsaW5lID0gbmV3IHBpcGVsaW5lcy5Db2RlUGlwZWxpbmUodnVsbmVyYWJpbGl0eVBpcGVsaW5lLCAnQ29kZVBpcGVsaW5lJywge1xuICAgICAgY29kZVBpcGVsaW5lOiB2dWxuZXJhYmlsaXR5UGlwZWxpbmUsXG4gICAgICBzeW50aDogdnVsbmVyYWJpbGl0eUJ1aWxkLFxuICAgICAgc2VsZk11dGF0aW9uOiBmYWxzZSxcbiAgICB9KTtcbiAgICBUYWdzLm9mKHZ1bG5lcmFiaWxpdHlQaXBlbGluZSkuYWRkKCdwaXBlbGluZV90eXBlJywgJ3Z1bG5lcmFiaWxpdHknKTtcblxuICAgIHZ1bG5lcmFiaWxpdHlDb2RlUGlwZWxpbmUuYWRkV2F2ZSgnVnVsbmVyYWJpbGl0eUNoZWNrcycpLmFkZFBvc3QodnVsbmVyYWJpbGl0eUJ1aWxkKTtcbiAgICB2dWxuZXJhYmlsaXR5Q29kZVBpcGVsaW5lLmJ1aWxkUGlwZWxpbmUoKTtcbiAgICBUYWdzLm9mKHZ1bG5lcmFiaWxpdHlCdWlsZC5wcm9qZWN0KS5hZGQoJ3Byb2plY3RfdHlwZScsICd2dWxuZXJhYmlsaXR5X2NoZWNrJyk7XG4gICAgdGhpcy5fbmlzdERhdGFNaXJyb3JVcmwuZ3JhbnRSZWFkKHZ1bG5lcmFiaWxpdHlCdWlsZCk7XG5cbiAgICBjb25zdCB2dWxuZXJhYmlsaXR5UnVsZSA9IG5ldyBldmVudHMuUnVsZSh0aGlzLCAnVnVsbmVyYWJpbGl0eVBpcGVsaW5lU2NoZWR1bGUnLCB7XG4gICAgICBzY2hlZHVsZTogZXZlbnRzLlNjaGVkdWxlLmV4cHJlc3Npb24ocHJvcHMucGlwZWxpbmVTY2hlZHVsZXM/LnZ1bG5lcmFiaWxpdHlQaXBlbGluZSB8fCAnY3JvbigwIDUgPyAqIE1PTi1GUkkgKiknKSxcbiAgICB9KTtcbiAgICB2dWxuZXJhYmlsaXR5UnVsZS5hZGRUYXJnZXQobmV3IHRhcmdldHMuQ29kZVBpcGVsaW5lKHZ1bG5lcmFiaWxpdHlDb2RlUGlwZWxpbmUucGlwZWxpbmUpKTtcblxuICAgIGlmIChwcm9wcy5kYXRhZG9nQWxlcnRUeXBlID09PSAnb3BzZ2VuaWUnKSB7XG4gICAgICB0aHJvdyBFcnJvcignVGhlIE9wc0dlbmllIGFsZXJ0VHlwZSBpcyBub3Qgc3VwcG9ydGVkIGFueW1vcmUuIFBsZWFzZSB1c2UgdGhlIHZ1bG5lcmFiaWxpdHlOb3RpZmljYXRpb24gcHJvcGVydHkgaW5zdGVhZC4nKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2ZlYXR1cmVzPy5lbmFibGVQaXBlbGluZU1vbml0b3JzKSB7XG4gICAgICBuZXcgRGF0YURvZ1BpcGVsaW5lRXJyb3JBbGVydEZvclZ1bG5lcmFiaWxpdHlDaGVja3ModGhpcywgJ0RhdGFEb2dQaXBlbGluZUVycm9yRm9yVnVsbmVyYWJpbGl0eUNoZWNrc01vbml0b3InLCB7XG4gICAgICAgIHNlcnZpY2VOYW1lOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICAgICAgcGlwZWxpbmVOYW1lOiB2dWxuZXJhYmlsaXR5UGlwZWxpbmUucGlwZWxpbmVOYW1lLFxuICAgICAgICBhY2NvdW50SWQ6IHRoaXMuYWNjb3VudCxcbiAgICAgICAgbm90aWZpY2F0aW9uOiBwcm9wcy52dWxuZXJhYmlsaXR5Tm90aWZpY2F0aW9uLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTdHJpcEFzc2V0c1N0ZXAocGlwZWxpbmU6IHBpcGVsaW5lcy5Db2RlUGlwZWxpbmUpOiBDb2RlQnVpbGRTdGVwIHtcbiAgICAvLyBDbG91ZEFzc2VtYmx5QXJ0aWZhY3RzIG11c3QgYmUgc21hbGxlciB0aGFuIDI1Nk1CLiBEdWUgdG8gdGhlIGdyYWRsZSBhcnRpZmFjdCB3ZSBhcmUgZXhjZWVkaW5nIHRoaXMgbGltaXQgYW5kIHBpcGVsaW5lIGZhaWxzIGluIGRlcGxveW1lbnQgc3RlcC5cbiAgICAvLyBJc3N1ZSBpcyBrbm93biBhbmQgbm90IGZpeGVkIGZvciBhbHJlYWR5IHNvbWUgeWVhcnMuIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2lzc3Vlcy85OTE3XG4gICAgLy8gRGlydHkgZml4OiBBc3NldHMgYXJlIGFscmVhZHkgdXBsb2FkZWQgYW5kIHRodXMgbm90IG5lZWRlZC4gUmVtb3ZlIHRoZW0gZnJvbSBwaXBlbGluZSBhcnRpZmFjdC5cbiAgICByZXR1cm4gbmV3IENvZGVCdWlsZFN0ZXAoXG4gICAgICAnU3RyaXBBc3NldHNGcm9tQXNzZW1ibHknLCB7XG4gICAgICAgIGlucHV0OiBwaXBlbGluZS5jbG91ZEFzc2VtYmx5RmlsZVNldCxcbiAgICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgICAnUzNfUEFUSD0ke0NPREVCVUlMRF9TT1VSQ0VfVkVSU0lPTiNcImFybjphd3M6czM6OjpcIn0nLFxuICAgICAgICAgICdaSVBfQVJDSElWRT0kKGJhc2VuYW1lICRTM19QQVRIKScsXG4gICAgICAgICAgJ3JtIC1yZnYgYXNzZXQuKicsXG4gICAgICAgICAgJ3ppcCAtciAtcSAtQSAkWklQX0FSQ0hJVkUgKicsXG4gICAgICAgICAgJ2F3cyBzMyBjcCAkWklQX0FSQ0hJVkUgczM6Ly8kUzNfUEFUSCcsXG4gICAgICAgIF0sXG4gICAgICAgIGJ1aWxkRW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICBidWlsZEltYWdlOiBMaW51eExhbWJkYUJ1aWxkSW1hZ2UuQU1BWk9OX0xJTlVYXzIwMjNfTk9ERV8yMCxcbiAgICAgICAgICBjb21wdXRlVHlwZTogQ29tcHV0ZVR5cGUuTEFNQkRBXzFHQixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ2FwYWJpbGl0eU1vbml0b3JpbmdEZXBsb3lTdGVwKG1haW5CdWlsZDogQ29kZUJ1aWxkU3RlcCwgcHJvcHM6IFBpcGVsaW5lU3RhY2tQcm9wcyk6IENvZGVCdWlsZFN0ZXAgfCB1bmRlZmluZWQge1xuICAgIGlmIChwcm9wcy5tb25pdG9yaW5nRGVwbG95U3RlcFByb3BzKSB7XG4gICAgICBjb25zdCBtb25pdG9yaW5nQXJ0aWZhY3RzID0gT2JqZWN0LmtleXMocHJvcHMubW9uaXRvcmluZ0RlcGxveVN0ZXBQcm9wcy5tb25pdG9yaW5nQXJ0aWZhY3RzKS5tYXAoKGtleSkgPT4ge1xuICAgICAgICBjb25zdCBvdXRwdXQgPSBtYWluQnVpbGQuYWRkT3V0cHV0RGlyZWN0b3J5KGtleSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaW5wdXQ6IG91dHB1dCxcbiAgICAgICAgICBmaWxlczogcHJvcHMubW9uaXRvcmluZ0RlcGxveVN0ZXBQcm9wcyEubW9uaXRvcmluZ0FydGlmYWN0c1trZXldLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV3IFJpb0NhcGFiaWxpdHlNb25pdG9yaW5nRGVwbG95U3RlcCh0aGlzLCAnRGVwbG95Q2FwYWJpbGl0eU1vbml0b3JpbmcnLCB7XG4gICAgICAgIG1vbml0b3JpbmdBcnRpZmFjdHM6IG1vbml0b3JpbmdBcnRpZmFjdHMsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVNlY3JldHNEZXBsb3lTdGVwKHByb3BzOiBQaXBlbGluZVN0YWNrUHJvcHMpOiByaW8uUmlvU2VjcmV0c0RlcGxveVN0ZXAgfCB1bmRlZmluZWQge1xuICAgIGlmIChwcm9wcy5zZWNyZXRzRGVwbG95U3RlcFByb3BzKSB7XG4gICAgICByZXR1cm4gbmV3IHJpby5SaW9TZWNyZXRzRGVwbG95U3RlcCh0aGlzLCAnRGVwbG95U2VjcmV0cycsIHtcbiAgICAgICAgLi4ucHJvcHMuc2VjcmV0c0RlcGxveVN0ZXBQcm9wcyxcbiAgICAgICAgaW5wdXQ6IHRoaXMuX2lucHV0TWFzdGVyVHJpZ2dlckZpbGUsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZURlcGxveUZyb250ZW5kRGVwbG95U3RlcChtYWluQnVpbGQ6IENvZGVCdWlsZFN0ZXApOiBDb2RlQnVpbGRTdGVwIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMuX2ZlYXR1cmVzLmZyb250ZW5kQnVja2V0TmFtZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgZnJvbnRlbmRCdWlsZE91dHB1dCA9IG1haW5CdWlsZC5hZGRPdXRwdXREaXJlY3RvcnkoJ2J1aWxkJyk7XG4gICAgcmV0dXJuIG5ldyBDb2RlQnVpbGRTdGVwKCdEZXBsb3lGcm9udGVuZCcsIHtcbiAgICAgIGlucHV0OiBmcm9udGVuZEJ1aWxkT3V0cHV0LFxuICAgICAgYnVpbGRFbnZpcm9ubWVudDoge1xuICAgICAgICBidWlsZEltYWdlOiBMaW51eExhbWJkYUJ1aWxkSW1hZ2UuQU1BWk9OX0xJTlVYXzIwMjNfTk9ERV8yMCxcbiAgICAgICAgY29tcHV0ZVR5cGU6IENvbXB1dGVUeXBlLkxBTUJEQV8xR0IsXG4gICAgICB9LFxuICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgYGF3cyBzMyBzeW5jIC0tZXhjbHVkZSBpbmRleC5odG1sIC0tY2FjaGUtY29udHJvbCBtYXgtYWdlPTMxNTM2MDAwIC4vICdzMzovLyR7dGhpcy5fZmVhdHVyZXMuZnJvbnRlbmRCdWNrZXROYW1lfSdgLFxuICAgICAgICBgYXdzIHMzIGNwIC0tY2FjaGUtY29udHJvbCBuby1jYWNoZSBpbmRleC5odG1sICdzMzovLyR7dGhpcy5fZmVhdHVyZXMuZnJvbnRlbmRCdWNrZXROYW1lfSdgLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ3JhbnRQZXJtaXNzaW9uc0ZvckthZmthSW50ZWdyYXRpb24oYnVpbGRQcm9qZWN0OiBSaW9Db2RlQnVpbGRQcm9qZWN0LCBwb2xpY3lJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgYnVpbGRQcm9qZWN0Um9sZSA9IGJ1aWxkUHJvamVjdC5wcm9qZWN0LnJvbGU7XG4gICAgaWYgKGJ1aWxkUHJvamVjdFJvbGUpIHtcbiAgICAgIGJ1aWxkUHJvamVjdFJvbGUuYWRkTWFuYWdlZFBvbGljeShcbiAgICAgICAgTWFuYWdlZFBvbGljeS5mcm9tTWFuYWdlZFBvbGljeUFybih0aGlzLFxuICAgICAgICAgIHBvbGljeUlkLFxuICAgICAgICAgIEZuLmltcG9ydFZhbHVlKCdrYWZrYS1pbnRlZ3JhdGlvbi1wb2xpY3ktYXJuJyksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBFcnJvcihgQ291bGQgbm90IGFkZCBtYW5hZ2VkIHBvbGljeSBmb3Iga2Fma2EtaW50ZWdyYXRpb24gdG8gQ29kZUJ1aWxkIHByb2plY3Qgb2YgJHtidWlsZFByb2plY3QuaWR9IGR1ZSB0byBtaXNzaW5nIHJvbGUuYCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsb2FkQnVpbGRTcGVjRnJvbUZpbGUoYnVpbGRTcGVjUGF0aD86IHN0cmluZyk6IEJ1aWxkU3BlYyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFidWlsZFNwZWNQYXRoKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gQnVpbGRTcGVjLmZyb21PYmplY3QoeWFtbC5sb2FkKGZzLnJlYWRGaWxlU3luYyhidWlsZFNwZWNQYXRoLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pKSBhcyBPYmplY3QpO1xuICB9XG5cbiAgcHJpdmF0ZSB0YWdDb2RlQnVpbGRQcm9qZWN0KHByb2plY3Q6IENvZGVCdWlsZFN0ZXAgfCB1bmRlZmluZWQsIGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHByb2plY3QpIHtcbiAgICAgIFRhZ3Mub2YocHJvamVjdC5wcm9qZWN0KS5hZGQoa2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
418
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29udHJpYnV0aW9ucy90ZWFtLXRyYW5zcG9ydC10d28vcGlwZWxpbmUvcGlwZWxpbmUtc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLDZDQUFtRjtBQUNuRiw2REFBNEc7QUFDNUcsNkRBQTZEO0FBQzdELDZFQUE2RTtBQUM3RSxpREFBaUQ7QUFDakQsMERBQTBEO0FBQzFELGlEQUFvRDtBQUVwRCx5Q0FBeUM7QUFDekMsK0NBQXFEO0FBQ3JELDJDQUEyQztBQUUzQyxtREFBbUQ7QUFDbkQscURBQTBFO0FBRTFFLGdDQUFnQztBQUNoQywyREFBa0Q7QUFDbEQsbURBQXNEO0FBQ3RELDZDQUFpRjtBQUNqRix5REFBZ0g7QUFDaEgscUVBQTZFO0FBRzdFLHNDQUFzQztBQUN0QywwQ0FBaUU7QUE2TGpFLElBQVksWUFzQ1g7QUF0Q0QsV0FBWSxZQUFZO0lBRXRCOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILG1EQUFtQyxDQUFBO0lBQ25DOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSCwrREFBK0MsQ0FBQTtJQUMvQzs7Ozs7T0FLRztJQUNILG1FQUFtRCxDQUFBO0FBQ3JELENBQUMsRUF0Q1csWUFBWSw0QkFBWixZQUFZLFFBc0N2QjtBQWNELE1BQWEsYUFBYyxTQUFRLG1CQUFLO0lBaUJ0QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXlCO1FBQ2pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUzQywrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUs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Q0FBQzs7QUFqWkgsc0NBa1pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IER1cmF0aW9uLCBGbiwgUmVtb3ZhbFBvbGljeSwgU3RhY2ssIFN0YWNrUHJvcHMsIFRhZ3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBCdWlsZEVudmlyb25tZW50LCBCdWlsZFNwZWMsIENvbXB1dGVUeXBlLCBMaW51eExhbWJkYUJ1aWxkSW1hZ2UgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkJztcbmltcG9ydCAqIGFzIGNvZGVwaXBlbGluZSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZXBpcGVsaW5lJztcbmltcG9ydCAqIGFzIGNvZGVwaXBlbGluZV9hY3Rpb25zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlcGlwZWxpbmUtYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBldmVudHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQgKiBhcyB0YXJnZXRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMtdGFyZ2V0cyc7XG5pbXBvcnQgeyBNYW5hZ2VkUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBJSG9zdGVkWm9uZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1yb3V0ZTUzJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBCdWNrZXQsIElCdWNrZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0ICogYXMgc3NtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zc20nO1xuaW1wb3J0IHsgSVN0cmluZ1BhcmFtZXRlciB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zc20nO1xuaW1wb3J0ICogYXMgcGlwZWxpbmVzIGZyb20gJ2F3cy1jZGstbGliL3BpcGVsaW5lcyc7XG5pbXBvcnQgeyBDb2RlQnVpbGRTdGVwLCBDb2RlUGlwZWxpbmVTb3VyY2UgfSBmcm9tICdhd3MtY2RrLWxpYi9waXBlbGluZXMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyB5YW1sIGZyb20gJ2pzLXlhbWwnO1xuaW1wb3J0IHsgQXBwbGljYXRpb24gfSBmcm9tICcuL2FwcGxpY2F0aW9uLXN0YWdlJztcbmltcG9ydCB7IFJpb0NvZGVCdWlsZFByb2plY3QgfSBmcm9tICcuL2J1aWxkLXByb2plY3QnO1xuaW1wb3J0IHsgY3JlYXRlTWFpbkJ1aWxkU3BlYywgY3JlYXRlVnVsbmVyYWJpbGl0eUJ1aWxkU3BlYyB9IGZyb20gJy4vYnVpbGRzcGVjcyc7XG5pbXBvcnQgeyBEYXRhZG9nUGlwZWxpbmVFcnJvckFsZXJ0LCBEYXRhRG9nUGlwZWxpbmVFcnJvckFsZXJ0Rm9yVnVsbmVyYWJpbGl0eUNoZWNrcyB9IGZyb20gJy4vZGF0YWRvZy1tb25pdG9ycyc7XG5pbXBvcnQgeyBSaW9DYXBhYmlsaXR5TW9uaXRvcmluZ0RlcGxveVN0ZXAgfSBmcm9tICcuL21vbml0b3JpbmctZGVwbG95LXN0ZXAnO1xuaW1wb3J0IHsgRGF0YWRvZ0FsZXJ0VHlwZSB9IGZyb20gJy4uLy4uLy4uL2RhdGFkb2cnO1xuaW1wb3J0IHsgSU5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2RhdGFkb2d2Mic7XG5pbXBvcnQgKiBhcyByaW8gZnJvbSAnLi4vLi4vLi4vaW5kZXgnO1xuaW1wb3J0IHsgQ2xhaWRvbWV0ZXIsIENsYWlkb21ldGVyUHJvZHVjdCB9IGZyb20gJy4uLy4uLy4uL2luZGV4JztcblxuXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lU2NoZWR1bGVzUHJvcHMge1xuICByZWFkb25seSBtYWluUGlwZWxpbmU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZ1bG5lcmFiaWxpdHlQaXBlbGluZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBAc3RydWN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVTdGFja1Byb3BzIGV4dGVuZHMgU3RhY2tQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc2VydmljZVxuICAgKiAtIFRoaXMgaGFzIHRvIGJlIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHJlcG9zaXRvcnkgYXMgdGhlIHMzIHRyaWdnZXIgZmlsZSBjcmVhdGVkIGJ5IHRoZSBiaXRidWNrZXQtaW50ZWdyYXRpb24gdXNlcyB0aGlzIGFzIGEgcHJlZml4XG4gICAqIC0gVGhlIHNlcnZpY2VOYW1lIGlzIGF2YWlsYWJsZSBhcyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBTRVJWSUNFX05BTUUgaW4gdGhlIENvZGVCdWlsZFN0ZXBcbiAgICogLSBUaGUgc2VydmljZU5hbWUgaXMgYXZhaWxhYmxlIGluIHRoZSBBcHBTdGFja1Byb3BzIGluIHRoZSBhcHBTdGFja0ZhY3RvcnlcbiAgICogLSBUaGUgc2VydmljZU5hbWUgaXMgYXZhaWxhYmxlIGFzIHN0YWNrTmFtZSBwcm9wZXJ0eSBpbiB0aGUgQXBwU3RhY2tQcm9wcyBpbiB0aGUgYXBwU3RhY2tGYWN0b3J5LiBJLmUuIHRoZSBzdGFjayBpcyBuYW1lZCBhZnRlciB0aGUgc2VydmljZVxuICAgKiAtIFRoZSBzZXJ2aWNlTmFtZSBpcyBoYW5kZWQgb3ZlciB0byBhbGwgRGF0YWRvZyBtb25pdG9yc1xuICAgKiAtIFJJTyBjb252ZW50aW9uIGlzIHRoYXQgdXBsb2FkZWQgbGljZW5zZS1jaGVjay1maWxlcyBhcmUgbmFtZWQgYWZ0ZXIgdGhlIHNlcnZpY2UsIGkuZS4gc2VydmljZU5hbWUudHh0XG4gICAqL1xuICByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlciBmb3IgYXBwU3RhY2sgdG8gYmUgZGVwbG95ZWQuXG4gICAqXG4gICAqIFRoaXMgYWN0cyBhcyBhIHdyYXBwZXIgZm9yIGFsbCByZXNvdXJjZXMgeW91IHdhbnQgdG8gZGVwbG95IHZpYSB0aGUgcGlwZWxpbmUuXG4gICAqL1xuICByZWFkb25seSBhcHBTdGFja0ZhY3Rvcnk6IElBcHBTdGFja0ZhY3Rvcnk7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgd2hpY2gga2luZCBvZiBwaXBlbGluZSBpcyBkZXBsb3llZC5cbiAgICpcbiAgICogVXNlIHRoZSBmZWF0dXJlcyB0byBjb21iaW5lIGRpZmZlcmVudCBvcGluaW9uYXRlZCwgUklPLXNwZWNpZmljIHBpcGVsaW5lIGZlYXR1cmVzIHN1Y2ggYXMgYWRkaW5nIGEgYnJhbmNoIHBpcGVsaW5lIG9yIHN1cHBvcnRpbmcgS2Fma2EuXG4gICAqL1xuICByZWFkb25seSBmZWF0dXJlcz86IFBpcGVsaW5lRmVhdHVyZXM7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSB0aGUgYGZlYXR1cmVzYCBwcm9wZXJ0eSBpbnN0ZWFkLiBGb3Igbm93LCB0aGUgcGlwZWxpbmUgdHlwZXMgYXJlIG1hcHBlZCB0byB0aGUgZmVhdHVyZXMuXG4gICAqIERlZmluZXMgd2hpY2gga2luZCBvZiBwaXBlbGluZSBpcyBkZXBsb3llZC5cbiAgICovXG4gIHJlYWRvbmx5IHBpcGVsaW5lVHlwZT86IFBpcGVsaW5lVHlwZTtcblxuICAvKipcbiAgICogRGVmaW5lcyBob3cgb2Z0ZW4gdGhlIHBpcGVsaW5lIGlzIHRyaWdnZXJlZCBhdXRvbWF0aWNhbGx5LiBJcyBkZWZpbmVkIHZpYSBhIGNyb24gZXhwcmVzc2lvbi5cbiAgICpcbiAgICogU2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZFdhdGNoL2xhdGVzdC9ldmVudHMvU2NoZWR1bGVkRXZlbnRzLmh0bWxcbiAgICpcbiAgICogRGVmYXVsdCB2YWx1ZXM6XG4gICAqIC0gbWFpbiBwaXBlbGluZTogY3JvbigwIDkgPyAqIDIjMSAqKVxuICAgKiAtIHZ1bG5lcmFiaWxpdHkgcGlwZWxpbmU6IGNyb24oMCA1ID8gKiBNT04tRlJJICopXG4gICAqL1xuICByZWFkb25seSBwaXBlbGluZVNjaGVkdWxlcz86IFBpcGVsaW5lU2NoZWR1bGVzUHJvcHM7XG5cblxuICAvKipcbiAgICogUGF0aCB0byBzZWNyZXRzIGZpbGUgY29udGFpbmluZyBlbmNyeXB0ZWQgc2VjcmV0cy5cbiAgICpcbiAgICogVGhlIFJpb1NlY3JldHNEZXBsb3lTdGVwIGlzIGFkZGVkIHByaW9yIHRvIGRlcGxveW1lbnQgb2YgdGhlIEFwcFN0YWNrIGlmIGEgcGF0aCBpcyBwcm92aWRlZC5cbiAgICpcbiAgICogTm8gc2VjcmV0cyBhcmUgZGVwbG95ZWQgaWYgbm8gcGF0aCBpcyBwcm92aWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3JldHNEZXBsb3lTdGVwUHJvcHM/OiBQaXBlbGluZVN0YWNrUmlvU2VjcmV0c0RlcGxveVN0ZXBQcm9wcztcblxuICAvKipcbiAgICogQ29kZUJ1aWxkIG9wdGlvbnMgb3ZlcnJpZGluZyB0aGUgcmlvLXNwZWNpZmljIGRlZmF1bHRzLlxuICAgKi9cbiAgcmVhZG9ubHkgY29kZUJ1aWxkT3B0aW9ucz86IENvZGVCdWlsZE9wdGlvbnM7XG4gIC8qKlxuICAgKiBJZiBwcmVzZW50LCB0aGUgY2FwYWJpbGl0eSBtb25pdG9yaW5nIGRlcGxveSBzdGVwIGlzIGFkZGVkIHRvIHRoZSBwaXBlbGluZS5cbiAgICovXG4gIHJlYWRvbmx5IG1vbml0b3JpbmdEZXBsb3lTdGVwUHJvcHM/OiBQaXBlbGluZVN0YWNrUmlvTW9uaXRvcmluZ0RlcGxveVN0ZXBQcm9wcztcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgdGhlIGB2dWxuZXJhYmlsaXR5Tm90aWZpY2F0aW9uYCBwcm9wZXJ0eSBpbnN0ZWFkLlxuICAgKiBJZiBgb3BzZ2VuaWVgIGlzIHNwZWNpZmllZCwgYW4gRXhjZXB0aW9uIGlzIHRocm93biwgYXMgdGhpcyBpcyBub3Qgc3VwcG9ydGVkIGFueW1vcmUuXG4gICAqL1xuICByZWFkb25seSBkYXRhZG9nQWxlcnRUeXBlPzogRGF0YWRvZ0FsZXJ0VHlwZTtcbiAgLyoqXG4gICAqIE5vdGlmaWNhdGlvbiB0eXBlIGZvciB0aGUgYXV0by1nZW5lcmF0ZWQgdnVsbmVyYWJpbGl0eSBwaXBlbGluZSBtb25pdG9yLiBEZWZhdWx0cyB0byBzbGFjay5cbiAgICovXG4gIHJlYWRvbmx5IHZ1bG5lcmFiaWxpdHlOb3RpZmljYXRpb24/OiBJTm90aWZpY2F0aW9uO1xuICAvKipcbiAgICogQ29kZVBpcGVsaW5lIFBpcGVsaW5lVHlwZSAoVjEgb3IgVjIpLiBEZWZhdWx0cyB0byBWMS5cbiAgICovXG4gIHJlYWRvbmx5IGNvZGVQaXBlbGluZVR5cGU/OiBjb2RlcGlwZWxpbmUuUGlwZWxpbmVUeXBlO1xufVxuXG4vKipcbiAqIFByb3ZpZGVyIGludGVyZmFjZSB0byBjcmVhdGUgdGhlIEFwcFN0YWNrIHdpdGhpbiB0aGUgc3BlY2lmaWMgc2NvcGVcbiAqXG4gKiBTaW1wbHkgcGxhY2UgdGhlIEFwcFN0YWNrIGNyZWF0aW9uIGludG8gdGhlIGNyZWF0ZS1tZXRob2Q6XG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIFVzZSBlLmcuIHdpdGhpbiBBcHBsaWNhdGlvblByb3BzIGFzIEpTT05PYmplY3Q6XG4gKiBcXHsgY3JlYXRlOiAoY29uc3RydWN0LCBwcm9wcykgPVxcPiBuZXcgU3RhY2soY29uc3RydWN0LCAnQXBwU3RhY2snLCBwcm9wcykgXFx9XG4gKlxuICogLy8gb3Igc2ltcGx5IGFzIGNsYXNzIGludGVyZmFjZSB3aXRoaW4geW91ciBzdGFjayBpbXBsZW1lbnRhdGlvbjpcbiAqIGNsYXNzIFBpcGVsaW5lU3RhZ2UgZXh0ZW5kcyBTdGFnZSBpbXBsZW1lbnRzIElBcHBTdGFja0ZhY3RvcnkgXFx7XG4gKiAgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTdGFnZVByb3BzKSBcXHtcbiAqICAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcbiAqICAgICAvLyB5b3VyIHN0YWdlIGRlZmluaXRpb25cbiAqICAgXFx9XG4gKlxuICogICBjcmVhdGUoc2NvcGU6IENvbnN0cnVjdCwgcHJvcHM6IEFwcFN0YWNrUHJvcHMpOiB2b2lkIFxce1xuICogICAgIC8vIGFwcCBzdGFjayBpbml0aWF0aW9uIGdvZXMgaW4gaGVyZVxuICogICBcXH1cbiAqIFxcfVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElBcHBTdGFja0ZhY3Rvcnkge1xuICAvKipcbiAgICogRmFjdG9yeSBtZXRob2QsIGJlaW5nIGludm9rZWQgd2l0aCB0aGUgc3BlY2lmaWMgc2NvcGUgZHVyaW5nIHBpcGVsaW5lIGluc3RhbnRpYXRpb25cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gVGhlIHBhcmVudCBjb25zdHJ1Y3QgZm9yIHRoZSBhcHAgc3RhY2tcbiAgICogQHBhcmFtIHByb3BzIC0gVGhlIGFwcCBzdGFja3MgcHJvcGVydGllc1xuICAgKi9cbiAgY3JlYXRlKHNjb3BlOiBDb25zdHJ1Y3QsIHByb3BzOiBBcHBTdGFja1Byb3BzKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBTdGFja1Byb3BzIGV4dGVuZHMgU3RhY2tQcm9wcyB7XG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBTZWxlY3RlZCBwcm9wZXJ0aWVzIGJlaW5nIGhhbmRlZCBvdmVyIHRvIFJpb1NlY3JldHNEZXBsb3lTdGVwLlxuICpcbiAqIEBzZWUgcmlvLlJpb1NlY3JldHNEZXBsb3lTdGVwXG4gKiBAc2VlIHJpby5SaW9TZWNyZXRzRGVwbG95U3RlcFByb3BzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVTdGFja1Jpb1NlY3JldHNEZXBsb3lTdGVwUHJvcHMge1xuICByZWFkb25seSBzZWNyZXRzRmlsZVBhdGg6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQaXBlbGluZVN0YWNrUmlvTW9uaXRvcmluZ0RlcGxveVN0ZXBQcm9wcyB7XG4gIC8qKlxuICAgKiBNYXAgXFx7ZGlyZWN0b3J5OiBmaWxlbmFtZXNcXH0gY29udGFpbmluZyAgLmphciBvciAuemlwIGZpbGVzIGNyZWF0ZWQgaW4gbWFpbiBidWlsZCBzdGVwIHRvIGJlIHVwbG9hZGVkIHRvIHRoZSBtb25pdG9yaW5nLXRlc3RzdWl0ZS1ydW5uZXIgYnVja2V0LCBlLmcuXG4gICAqIGBgYFxuICAgKiB7XG4gICAqICAnYXZhaWxhYmlsaXR5LW1vbml0b3JpbmcvYnVpbGQvbGlicyc6IFsnZm9vLWF2YWlsYWJpbGl0eS5qYXInXSxcbiAgICogICdwZXJmb3JtYW5jZS1tb25pdG9yaW5nL2J1aWxkL2xpYnMnOiBbJ2FwaS1jaGVjay56aXAnLCAnZm9vLXBlcmZvcm1hbmNlLmphciddLFxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgcmVhZG9ubHkgbW9uaXRvcmluZ0FydGlmYWN0czogeyBbZGlyZWN0b3J5OiBzdHJpbmddOiBzdHJpbmdbXSB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lRmVhdHVyZXMge1xuICAvKipcbiAgICogQ3JlYXRlIGEgYnJhbmNoIHBpcGVsaW5lIHVzZWQgYnkgcmVub3ZhdGUuIERlZmF1bHRzIHRvIGB0cnVlYC5cbiAgICovXG4gIHJlYWRvbmx5IGJyYW5jaFBpcGVsaW5lPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIHZ1bG5lcmFiaWxpdHkgcGlwZWxpbmUgdG8gc2NhbiBkZXBlbmRlbmNpZXMgZm9yIHZ1bG5lcmFiaWxpdGllcy4gRGVmYXVsdHMgdG8gYHRydWVgLlxuICAgKi9cbiAgcmVhZG9ubHkgdnVsbmVyYWJpbGl0eVBpcGVsaW5lPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFJ1biBhIHN0YW5kYXJkIGdyYWRsZSBidWlsZCBpbiB0aGUgcmVwb3NpdG9yeSByb290LiBEZWZhdWx0cyB0byBgZmFsc2VgOlxuICAgKiAtIGJ1aWxkIGFuZCB0ZXN0IG9mIHRoZSBhcnRpZmFjdCB2aWEgY29tbWFuZCBcIi4vZ3JhZGxldyBjbGVhbiBidWlsZFwiXG4gICAqIC0gbGljZW5zZS1jaGVjayBhbmQgdXBsb2FkIG9mIGxpY2Vuc2UtY2hlY2stZmlsZSB2aWEgY29tbWFuZCBcIi4vZ3JhZGxldyBjaGVja0xpY2Vuc2VzXCJcbiAgICogLSBjcmVhdGUgYSBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZSB0byBtYWtlIFRMUyBjb21tdW5pY2F0aW9uIHBvc3NpYmxlLCBlLmcuIHdpdGggYSBsb2FkYmFsYW5jZXJcbiAgICogLSBidWlsZCB0aGUgY29udGFpbmVyIGltYWdlIHZpYSBjb21tYW5kIFwiLi9ncmFkbGV3IGppYkJ1aWxkVGFyXCJcbiAgICovXG4gIHJlYWRvbmx5IGdyYWRsZUJ1aWxkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFJ1biBhIHN0YW5kYXJkIG5wbSBidWlsZCBpbiB0aGUgcmVwb3NpdG9yeSByb290LiBEZWZhdWx0cyB0byBgZmFsc2VgOlxuICAgKiAtIHJ1biBsaW50ZXIgdmlhIGNvbW1hbmQgXCJucG0gcnVuIGxpbnRcIlxuICAgKiAtIHJ1biB0ZXN0cyB2aWEgY29tbWFuZCBcIm5wbSBydW4gdGVzdDpjaVwiXG4gICAqIC0gcnVuIGEgbGljZW5zZSBjaGVjayBieSBjYWxsaW5nIHRoZSBzY3JpcHQgXCJjaGVjay1vc3MtbGljZW5zZXMuc2hcIiAoZnJvbSB0aGUgUklPIGZyb250ZW5kIHRlbXBsYXRlKVxuICAgKiAtIGJ1aWxkIHRoZSBhcnRpZmFjdCB2aWEgY29tbWFuZCBcIm5wbSBydW4gYnVpbGRcIlxuICAgKi9cbiAgcmVhZG9ubHkgbnBtQnVpbGQ/OiBib29sZWFuO1xuICAvKipcbiAgICogQWRkIHJlcXVpcmVkIHN0ZXBzIGFuZCBwZXJtaXNzaW9ucyB0byBzdXBwb3J0IEthZmthLiBDdXJyZW50bHksIHRoaXMgcmVxdWlyZXMgYGdyYWRsZUJ1aWxkYCB0byBiZSBzZXQgdG8gYHRydWVgLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgKi9cbiAgcmVhZG9ubHkga2Fma2FJbnRlZ3JhdGlvbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTMyBCdWNrZXQgdG8gZGVwbG95IGZyb250ZW5kIHRvLiBSZXF1aXJlcyBgbnBtQnVpbGRgIHRvIGJlIHNldCB0byBgdHJ1ZWAuIElmIHNldCwgdGhlIG91dHB1dCBvZiB0aGUgbnBtIGJ1aWxkIGlzIGRlcGxveWVkIHRvIHRoZSBwcm92aWRlZCBidWNrZXQuXG4gICAqL1xuICByZWFkb25seSBmcm9udGVuZEJ1Y2tldE5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGJ1aWxkIGNvbW1hbmRzIGZvciBtYWluIGFuZCBicmFuY2ggcGlwZWxpbmUuIFdpbGwgYmUgYWRkZWQgYWZ0ZXIgYWxsIGJ1aWxkICYgdGVzdCBjb21tYW5kcywgYmVmb3JlIHRoZSBpbmZyYXN0cnVjdHVyZSBidWlsZC4gRG9lcyBub3Qgd29yayB3aXRoIHBhcnRpYWxCdWlsZHNwZWMuXG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsQnVpbGRDb21tYW5kcz86IHN0cmluZ1tdO1xuICAvKipcbiAgICogSWYgc2V0IHRvIGZhbHNlLCBubyBEYXRhZG9nIG1vbml0b3JzIGZvciBtYWluIGFuZCB2dWxuZXJhYmlsaXR5IHBpcGVsaW5lcyB3aWxsIGJlIGNyZWF0ZWQuIERlZmF1bHRzIHRvIHRydWUuXG4gICAqL1xuICByZWFkb25seSBlbmFibGVQaXBlbGluZU1vbml0b3JzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGVudW0gUGlwZWxpbmVUeXBlIHtcblxuICAvKipcbiAgICogU2VsZi1tdXRhdGluZyBjb2RlcGlwZWxpbmUgZGVwbG95aW5nIHRoZSBwcm92aWRlZCBBcHBTdGFjay4gQmUgYXdhcmU6IFRoZSBwcm92aWRlZCBzZXJ2aWNlIHdvbid0IGhhdmUgYWNjZXNzIHRvIEthZmthLlxuICAgKlxuICAgKiBDb21lcyB3aXRoIGEgcHJlLWRlZmluZWQgYnVpbGRzcGVjLnlhbWwgZm9yIGEgZ3JhZGxlIHByb2plY3QuIFRoaXMgYnVpbGRzcGVjLnlhbWwgaXMgdXNlZCBmb3IgYm90aCB0aGUgbWFpbiBhbmRcbiAgICogYnJhbmNoIHBpcGVsaW5lIGFuZCBpbmNsdWRlcyB0aGUgZm9sbG93aW5nIHN0ZXBzXG4gICAqIC0gYnVpbGQgYW5kIHRlc3Qgb2YgdGhlIGFydGlmYWN0IHZpYSBjb21tYW5kIFwiLi9ncmFkbGV3IGNsZWFuIGJ1aWxkXCIuXG4gICAqIDxwPiBUaGlzIGdyYWRsZSBjb21tYW5kIG11c3QgYmUgcHJvdmlkZWQgYnkgdGhlIGdyYWRsZSBwcm9qZWN0LlxuICAgKiAtIGxpY2Vuc2UtY2hlY2sgYW5kIHVwbG9hZCBvZiBsaWNlbnNlLWNoZWNrLWZpbGUgdmlhIGNvbW1hbmQgXCIuL2dyYWRsZXcgY2hlY2tMaWNlbnNlc1wiLlxuICAgKiA8cD4gVGhpcyBncmFkbGUgY29tbWFuZCBtdXN0IGJlIHByb3ZpZGVkIGJ5IHRoZSBncmFkbGUgcHJvamVjdC5cbiAgICogLSBjcmVhdGUgYSBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZSB0byBtYWtlIFRMUyBjb21tdW5pY2F0aW9uIHBvc3NpYmxlLCBlLmcuIHdpdGggYSBsb2FkYmFsYW5jZXIuXG4gICAqIC0gYnVpbGQgdGhlIGNvbnRhaW5lciBpbWFnZSB2aWEgY29tbWFuZCBcIi4vZ3JhZGxldyBqaWJCdWlsZFRhclwiLlxuICAgKiA8cD4gVGhpcyBncmFkbGUgY29tbWFuZCBtdXN0IGJlIHByb3ZpZGVkIGJ5IHRoZSBncmFkbGUgcHJvamVjdC5cbiAgICovXG4gIFNUQU5EQVJEX0dSQURMRSA9ICdTVEFOREFSRF9HUkFETEUnLFxuICAvKipcbiAgICogU2VsZi1tdXRhdGluZyBjb2RlcGlwZWxpbmUgZGVwbG95aW5nIHRoZSBwcm92aWRlZCBBcHBTdGFjayB3aXRoIGFkZGl0aW9uYWwgc3RlcHMgbmVlZGVkIHRvIGFjY2VzcyBLYWZrYS5cbiAgICpcbiAgICogQ29tZXMgd2l0aCBhIHByZS1kZWZpbmVkIGJ1aWxkc3BlYy55YW1sIGZvciBhIGdyYWRsZSBwcm9qZWN0LiBUaGlzIGJ1aWxkc3BlYy55YW1sIGlzIHVzZWQgZm9yIGJvdGggdGhlIG1haW4gYW5kXG4gICAqIGJyYW5jaCBwaXBlbGluZSBhbmQgaW5jbHVkZXMgdGhlIGZvbGxvd2luZyBzdGVwc1xuICAgKiAtIGJ1aWxkIGFuZCB0ZXN0IG9mIHRoZSBhcnRpZmFjdCB2aWEgY29tbWFuZCBcIi4vZ3JhZGxldyBjbGVhbiBidWlsZFwiLlxuICAgKiA8cD4gVGhpcyBncmFkbGUgY29tbWFuZCBtdXN0IGJlIHByb3ZpZGVkIGJ5IHRoZSBncmFkbGUgcHJvamVjdC5cbiAgICogLSBsaWNlbnNlLWNoZWNrIGFuZCB1cGxvYWQgb2YgbGljZW5zZS1jaGVjay1maWxlIHZpYSBjb21tYW5kIFwiLi9ncmFkbGV3IGNoZWNrTGljZW5zZXNcIi5cbiAgICogPHA+IFRoaXMgZ3JhZGxlIGNvbW1hbmQgbXVzdCBiZSBwcm92aWRlZCBieSB0aGUgZ3JhZGxlIHByb2plY3QuXG4gICAqIC0gY3JlYXRlIGEgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUgdG8gbWFrZSBUTFMgY29tbXVuaWNhdGlvbiBwb3NzaWJsZSwgZS5nLiB3aXRoIGEgbG9hZGJhbGFuY2VyLlxuICAgKiAtIHJlcXVlc3QgYSBjZXJ0aWZpY2F0ZSB0byBhdXRoZW50aWNhdGUgYWdhaW5zdCBLYWZrYSB2aWEgbXV0dWFsIFRMU1xuICAgKiAtIGJ1aWxkIHRoZSBjb250YWluZXIgaW1hZ2UgdmlhIGNvbW1hbmQgXCIuL2dyYWRsZXcgamliQnVpbGRUYXJcIi5cbiAgICogPHA+IFRoaXMgZ3JhZGxlIGNvbW1hbmQgbXVzdCBiZSBwcm92aWRlZCBieSB0aGUgZ3JhZGxlIHByb2plY3QuXG4gICAqL1xuICBTVEFOREFSRF9HUkFETEVfS0FGS0EgPSAnU1RBTkRBUkRfR1JBRExFX0tBRktBJyxcbiAgLyoqXG4gICAqIFNlbGYtbXV0YXRpbmcgY29kZXBpcGVsaW5lIGRlcGxveWluZyB0aGUgcHJvdmlkZWQgQXBwU3RhY2suXG4gICAqXG4gICAqIENvbWVzIHdpdGggYSBwcmUtZGVmaW5lZCBidWlsZHNwZWMueWFtbCB0byBzeW50aGVzaXplIHRoZSBBcHBTdGFjay5cbiAgICogTm8gYnJhbmNoIG9yIHZ1bG5lcmFiaWxpdHkgcGlwZWxpbmUgaXMgY3JlYXRlZC5cbiAgICovXG4gIFNUQU5EQVJEX0lORlJBU1RSVUNUVVJFID0gJ1NUQU5EQVJEX0lORlJBU1RSVUNUVVJFJyxcbn1cblxuLyoqXG4gKiBAcGFyYW0gcGFydGlhbEJ1aWxkU3BlY1BhdGggLSBQYXRoIHRvIGEgY3VzdG9tIGJ1aWxkLXNwZWMgZmlsZSB0byB1c2UgZm9yIHRoZSBtYWluIGFuZCBicmFuY2ggcGlwZWxpbmUuXG4gKiBBIHByZS1kZWZpbmVkIGJ1aWxkc3BlYy55YW1sIGZpdHRpbmcgdGhlIHBpcGVsaW5lVHlwZSBpcyB1c2VkIGlmIG5vdCBwcm92aWRlZC5cbiAqIEBwYXJhbSBidWlsZEVudmlyb25tZW50IC0gQ3VzdG9tIENvZGVCdWlsZCBidWlsZCBlbnZpcm9ubWVudCBvdmVycmlkaW5nIHRoZSByaW8tc3BlY2lmaWMgZGVmYXVsdHMuIFRoZSBkZWZhdWx0cyBhcmU6XG4gKiAgICAgICAgICBidWlsZEltYWdlOiBBTUFaT05fTElOVVhfMl81XG4gKiAgICAgICAgICBjb21wdXRlVHlwZTogTEFSR0VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2RlQnVpbGRPcHRpb25zIHtcbiAgcmVhZG9ubHkgcGFydGlhbEJ1aWxkU3BlY1BhdGg/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGJ1aWxkRW52aXJvbm1lbnQ/OiBCdWlsZEVudmlyb25tZW50O1xufVxuXG5leHBvcnQgY2xhc3MgUGlwZWxpbmVTdGFjayBleHRlbmRzIFN0YWNrIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZmVhdHVyZXM6IFBpcGVsaW5lRmVhdHVyZXM7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21haW5Db2RlQnVpbGRQcm9qZWN0OiBDb2RlQnVpbGRTdGVwO1xuICBwcml2YXRlIHJlYWRvbmx5IF9icmFuY2hDb2RlQnVpbGRQcm9qZWN0OiBDb2RlQnVpbGRTdGVwIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9idWNrZXQ6IElCdWNrZXQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NhY2hlQnVja2V0OiBJQnVja2V0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9ob3N0ZWRab25lOiBJSG9zdGVkWm9uZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5wdXRNYXN0ZXJUcmlnZ2VyRmlsZTogQ29kZVBpcGVsaW5lU291cmNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbnB1dEJyYW5jaFRyaWdnZXJGaWxlOiBDb2RlUGlwZWxpbmVTb3VyY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX29zc0xpY2Vuc2VzQnVja2V0UGFyYW1ldGVyOiBJU3RyaW5nUGFyYW1ldGVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vc3NMaWNlbnNlc0J1Y2tldDogSUJ1Y2tldDtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2VydmljZUtleXN0b3JlUGFzc3dvcmQ6IElTdHJpbmdQYXJhbWV0ZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjY291bnROYW1lUGFyYW1ldGVyOiBJU3RyaW5nUGFyYW1ldGVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF90ZWFtSWRlbnRpZmllclBhcmFtZXRlcjogSVN0cmluZ1BhcmFtZXRlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmlzdERhdGFNaXJyb3JVcmw6IElTdHJpbmdQYXJhbWV0ZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvZGVQaXBlbGluZVR5cGU6IGNvZGVwaXBlbGluZS5QaXBlbGluZVR5cGU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFBpcGVsaW5lU3RhY2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgdGhpcy5fZmVhdHVyZXMgPSB0aGlzLnBhcnNlRmVhdHVyZXMocHJvcHMpO1xuXG4gICAgLy8gcG9wdWxhdGUgZXh0ZXJuYWwgcGFyYW1ldGVyc1xuICAgIHRoaXMuX2J1Y2tldCA9IHMzLkJ1Y2tldC5mcm9tQnVja2V0TmFtZSh0aGlzLCAnVHJpZ2dlckJ1Y2tldCcsIEZuLmltcG9ydFZhbHVlKCdiaXRidWNrZXQtaW50ZWdyYXRpb24tczMtYnVja2V0JykpO1xuICAgIHRoaXMuX2NhY2hlQnVja2V0ID0gbmV3IHMzLkJ1Y2tldCh0aGlzLCAnQ2FjaGVCdWNrZXQnLCB7XG4gICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgICBhdXRvRGVsZXRlT2JqZWN0czogdHJ1ZSxcbiAgICAgIGxpZmVjeWNsZVJ1bGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBleHBpcmF0aW9uOiBEdXJhdGlvbi5kYXlzKDMwKSxcbiAgICAgICAgICBhYm9ydEluY29tcGxldGVNdWx0aXBhcnRVcGxvYWRBZnRlcjogRHVyYXRpb24uZGF5cyg3KSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gICAgdGhpcy5faG9zdGVkWm9uZSA9IHJpby5SaW9MYW5kaW5nWm9uZS5nZXREZWZhdWx0SG9zdGVkWm9uZSh0aGlzKTtcbiAgICB0aGlzLl9pbnB1dE1hc3RlclRyaWdnZXJGaWxlID0gcGlwZWxpbmVzLkNvZGVQaXBlbGluZVNvdXJjZS5zMyh0aGlzLl9idWNrZXQsIGAke3Byb3BzLnNlcnZpY2VOYW1lfS90cmlnZ2VyLyR7cmlvLlRyaWdnZXJLZXkuTUFTVEVSX1JFUE99YCwgeyB0cmlnZ2VyOiBjb2RlcGlwZWxpbmVfYWN0aW9ucy5TM1RyaWdnZXIuRVZFTlRTIH0pO1xuICAgIHRoaXMuX2lucHV0QnJhbmNoVHJpZ2dlckZpbGUgPSBwaXBlbGluZXMuQ29kZVBpcGVsaW5lU291cmNlLnMzKHRoaXMuX2J1Y2tldCwgYCR7cHJvcHMuc2VydmljZU5hbWV9L3RyaWdnZXIvJHtyaW8uVHJpZ2dlcktleS5CUkFOQ0hfUkVQT31gLCB7IHRyaWdnZXI6IGNvZGVwaXBlbGluZV9hY3Rpb25zLlMzVHJpZ2dlci5FVkVOVFMgfSk7XG5cbiAgICB0aGlzLl9vc3NMaWNlbnNlc0J1Y2tldFBhcmFtZXRlciA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlckF0dHJpYnV0ZXModGhpcywgJ09zc0xpY2Vuc2VzQnVja2V0UGFyYW1ldGVyJywgeyBwYXJhbWV0ZXJOYW1lOiAnL2NvbmZpZy9vc3MtbGljZW5zZXMvYnVja2V0LW5hbWUnIH0pO1xuICAgIHRoaXMuX29zc0xpY2Vuc2VzQnVja2V0ID0gczMuQnVja2V0LmZyb21CdWNrZXROYW1lKHRoaXMsICdPc3NMaWNlbnNlc0J1Y2tldCcsIHRoaXMuX29zc0xpY2Vuc2VzQnVja2V0UGFyYW1ldGVyLnN0cmluZ1ZhbHVlKTtcbiAgICB0aGlzLl9zZXJ2aWNlS2V5c3RvcmVQYXNzd29yZCA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVNlY3VyZVN0cmluZ1BhcmFtZXRlckF0dHJpYnV0ZXModGhpcywgJ0tleXN0b3JlUGFzc3dvcmQnLCB7XG4gICAgICBwYXJhbWV0ZXJOYW1lOiBgL2NvbmZpZy8ke3Byb3BzLnNlcnZpY2VOYW1lfS9zZXJ2aWNlLWtleXN0b3JlLXBhc3N3b3JkYCxcbiAgICAgIHZlcnNpb246IDEsXG4gICAgfSk7XG4gICAgdGhpcy5fYWNjb3VudE5hbWVQYXJhbWV0ZXIgPSBzc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKHRoaXMsICdBY2NvdW50TmFtZVBhcmFtZXRlcicsICcvY29uZmlnL2FjY291bnQvbmFtZScpO1xuICAgIHRoaXMuX3RlYW1JZGVudGlmaWVyUGFyYW1ldGVyID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZSh0aGlzLCAnVGVhbUlkZW50aWZpZXJQYXJhbWV0ZXInLCAnL2NvbmZpZy90ZWFtL2lkZW50aWZpZXInKTtcbiAgICB0aGlzLl9uaXN0RGF0YU1pcnJvclVybCA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVNlY3VyZVN0cmluZ1BhcmFtZXRlckF0dHJpYnV0ZXModGhpcywgJ05pc3REYXRhTWlycm9yVXJsJywge1xuICAgICAgcGFyYW1ldGVyTmFtZTogJy9jb25maWcvbmlzdC1kYXRhLW1pcnJvci91cmwnLFxuICAgICAgdmVyc2lvbjogMSxcbiAgICB9KTtcblxuICAgIHRoaXMuX2NvZGVQaXBlbGluZVR5cGUgPSBwcm9wcy5jb2RlUGlwZWxpbmVUeXBlID8/IGNvZGVwaXBlbGluZS5QaXBlbGluZVR5cGUuVjE7XG5cbiAgICB0aGlzLl9tYWluQ29kZUJ1aWxkUHJvamVjdCA9IHRoaXMuY3JlYXRlUmlvQ29kZUJ1aWxkUHJvamVjdCgnTWFpbkJ1aWxkJywgdGhpcy5faW5wdXRNYXN0ZXJUcmlnZ2VyRmlsZSwgcHJvcHMpO1xuICAgIHRoaXMuYWRkTWFpblBpcGVsaW5lKHByb3BzLCB0aGlzLl9tYWluQ29kZUJ1aWxkUHJvamVjdCk7XG5cbiAgICBpZiAodGhpcy5fZmVhdHVyZXMuYnJhbmNoUGlwZWxpbmUpIHtcbiAgICAgIHRoaXMuX2JyYW5jaENvZGVCdWlsZFByb2plY3QgPSB0aGlzLmNyZWF0ZVJpb0NvZGVCdWlsZFByb2plY3QoJ0JyYW5jaEJ1aWxkJywgdGhpcy5faW5wdXRCcmFuY2hUcmlnZ2VyRmlsZSwgcHJvcHMpO1xuICAgICAgdGhpcy5hZGRCcmFuY2hQaXBlbGluZSh0aGlzLl9icmFuY2hDb2RlQnVpbGRQcm9qZWN0KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2ZlYXR1cmVzLnZ1bG5lcmFiaWxpdHlQaXBlbGluZSkge1xuICAgICAgdGhpcy5hZGRWdWxuZXJhYmlsaXR5UGlwZWxpbmUocHJvcHMpO1xuICAgIH1cblxuICAgIGNvbnN0IFtmZWF0dXJlLCBwYWNrYWdlTmFtZV0gPSBfX2Rpcm5hbWUuc3BsaXQocGF0aC5zZXApLnJldmVyc2UoKTtcbiAgICBuZXcgQ2xhaWRvbWV0ZXIodGhpcywgJ0NsYWlkb21ldGVyJywge1xuICAgICAgcHJvZHVjdDogQ2xhaWRvbWV0ZXJQcm9kdWN0LkNES19DT05UUklCVVRJT04sXG4gICAgICBwYWNrYWdlTmFtZSxcbiAgICAgIGZlYXR1cmUsXG4gICAgICB2ZXJzaW9uOiAnMS4zLjAnLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBtYWluQ29kZWJ1aWxkUHJvamVjdCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWFpbkNvZGVCdWlsZFByb2plY3Q7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGJyYW5jaENvZGVCdWlsZFByb2plY3QoKTogQ29kZUJ1aWxkU3RlcCB7XG4gICAgaWYgKHRoaXMuX2JyYW5jaENvZGVCdWlsZFByb2plY3QgPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBFcnJvcignVGhlIHBpcGVsaW5lIHR5cGUgeW91IGhhdmUgc2VsZWN0ZWQgZG9lcyBub3Qgc3VwcG9ydCBhIGJyYW5jaCBjb2RlYnVpbGQgcHJvamVjdCcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fYnJhbmNoQ29kZUJ1aWxkUHJvamVjdDtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VGZWF0dXJlcyhwcm9wczogUGlwZWxpbmVTdGFja1Byb3BzKTogUGlwZWxpbmVGZWF0dXJlcyB7XG4gICAgaWYgKHByb3BzLnBpcGVsaW5lVHlwZSAmJiBwcm9wcy5mZWF0dXJlcykge1xuICAgICAgdGhyb3cgRXJyb3IoJ1lvdSBjYW5ub3QgcHJvdmlkZSBib3RoIGEgcGlwZWxpbmVUeXBlIGFuZCBmZWF0dXJlcy4gUGxlYXNlIHVzZSBmZWF0dXJlcyBvbmx5LicpO1xuICAgIH1cbiAgICBpZiAocHJvcHMuZmVhdHVyZXM/LmthZmthSW50ZWdyYXRpb24gJiYgIXByb3BzLmZlYXR1cmVzPy5ncmFkbGVCdWlsZCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0thZmthIGludGVncmF0aW9uIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBwaXBlbGluZXMgd2l0aCBncmFkbGUgYnVpbGQnKTtcbiAgICB9XG4gICAgaWYgKHByb3BzLmZlYXR1cmVzPy5mcm9udGVuZEJ1Y2tldE5hbWUgJiYgIXByb3BzLmZlYXR1cmVzPy5ucG1CdWlsZCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0Zyb250ZW5kIGJ1Y2tldCBuYW1lIGNhbiBvbmx5IGJlIHNldCB3aGVuIG5wbSBidWlsZCBpcyBlbmFibGVkJyk7XG4gICAgfVxuICAgIGlmIChwcm9wcy5mZWF0dXJlcz8uYWRkaXRpb25hbEJ1aWxkQ29tbWFuZHMgJiYgcHJvcHMuY29kZUJ1aWxkT3B0aW9ucz8ucGFydGlhbEJ1aWxkU3BlY1BhdGgpIHtcbiAgICAgIHRocm93IEVycm9yKCdZb3UgY2Fubm90IHByb3ZpZGUgYWRkaXRpb25hbEJ1aWxkQ29tbWFuZHMgaWYgeW91IHVzZSBhIHBhcnRpYWxCdWlsZFNwZWNQYXRoLicpO1xuICAgIH1cbiAgICBpZiAocHJvcHMuZmVhdHVyZXMgJiYgcHJvcHMuY29kZUJ1aWxkT3B0aW9ucz8ucGFydGlhbEJ1aWxkU3BlY1BhdGgpIHtcbiAgICAgIGNvbnNvbGUud2FybignWW91IGFyZSB1c2luZyB0aGUgcGlwZWxpbmUgZmVhdHVyZXMgaW4gY29tYmluYXRpb24gd2l0aCBhIHBhcnRpYWxCdWlsZFNwZWNQYXRoLiBQbGVhc2Uga2VlcCBpbiBtaW5kLCB0aGF0IGFsbCBidWlsZHNwZWMgcmVsYXRlZCBmZWF0dXJlcyBhcmUgaWdub3JlZCBhbmQgdGhlIHBhcnRpYWxCdWlsZFNwZWMgaXMgYXBwbGllZC4nKTtcbiAgICB9XG4gICAgaWYgKHByb3BzLnBpcGVsaW5lVHlwZSkge1xuICAgICAgc3dpdGNoIChwcm9wcy5waXBlbGluZVR5cGUpIHtcbiAgICAgICAgY2FzZSBQaXBlbGluZVR5cGUuU1RBTkRBUkRfR1JBRExFOlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBicmFuY2hQaXBlbGluZTogdHJ1ZSxcbiAgICAgICAgICAgIHZ1bG5lcmFiaWxpdHlQaXBlbGluZTogdHJ1ZSxcbiAgICAgICAgICAgIGdyYWRsZUJ1aWxkOiB0cnVlLFxuICAgICAgICAgICAgbnBtQnVpbGQ6IGZhbHNlLFxuICAgICAgICAgICAga2Fma2FJbnRlZ3JhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICBlbmFibGVQaXBlbGluZU1vbml0b3JzOiB0cnVlLFxuICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgUGlwZWxpbmVUeXBlLlNUQU5EQVJEX0dSQURMRV9LQUZLQTpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnJhbmNoUGlwZWxpbmU6IHRydWUsXG4gICAgICAgICAgICB2dWxuZXJhYmlsaXR5UGlwZWxpbmU6IHRydWUsXG4gICAgICAgICAgICBncmFkbGVCdWlsZDogdHJ1ZSxcbiAgICAgICAgICAgIG5wbUJ1aWxkOiBmYWxzZSxcbiAgICAgICAgICAgIGthZmthSW50ZWdyYXRpb246IHRydWUsXG4gICAgICAgICAgICBlbmFibGVQaXBlbGluZU1vbml0b3JzOiB0cnVlLFxuICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgUGlwZWxpbmVUeXBlLlNUQU5EQVJEX0lORlJBU1RSVUNUVVJFOlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBicmFuY2hQaXBlbGluZTogZmFsc2UsXG4gICAgICAgICAgICB2dWxuZXJhYmlsaXR5UGlwZWxpbmU6IGZhbHNlLFxuICAgICAgICAgICAgZ3JhZGxlQnVpbGQ6IGZhbHNlLFxuICAgICAgICAgICAgbnBtQnVpbGQ6IGZhbHNlLFxuICAgICAgICAgICAga2Fma2FJbnRlZ3JhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICBlbmFibGVQaXBlbGluZU1vbml0b3JzOiB0cnVlLFxuICAgICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBicmFuY2hQaXBlbGluZTogcHJvcHMuZmVhdHVyZXM/LmJyYW5jaFBpcGVsaW5lID8/IHRydWUsXG4gICAgICB2dWxuZXJhYmlsaXR5UGlwZWxpbmU6IHByb3BzLmZlYXR1cmVzPy52dWxuZXJhYmlsaXR5UGlwZWxpbmUgPz8gdHJ1ZSxcbiAgICAgIGdyYWRsZUJ1aWxkOiBwcm9wcy5mZWF0dXJlcz8uZ3JhZGxlQnVpbGQgPz8gZmFsc2UsXG4gICAgICBucG1CdWlsZDogcHJvcHMuZmVhdHVyZXM/Lm5wbUJ1aWxkID8/IGZhbHNlLFxuICAgICAga2Fma2FJbnRlZ3JhdGlvbjogcHJvcHMuZmVhdHVyZXM/LmthZmthSW50ZWdyYXRpb24gPz8gZmFsc2UsXG4gICAgICBmcm9udGVuZEJ1Y2tldE5hbWU6IHByb3BzLmZlYXR1cmVzPy5mcm9udGVuZEJ1Y2tldE5hbWUsXG4gICAgICBhZGRpdGlvbmFsQnVpbGRDb21tYW5kczogcHJvcHMuZmVhdHVyZXM/LmFkZGl0aW9uYWxCdWlsZENvbW1hbmRzLFxuICAgICAgZW5hYmxlUGlwZWxpbmVNb25pdG9yczogcHJvcHMuZmVhdHVyZXM/LmVuYWJsZVBpcGVsaW5lTW9uaXRvcnMgPz8gdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVSaW9Db2RlQnVpbGRQcm9qZWN0KG5hbWU6IHN0cmluZywgdHJpZ2dlckZpbGU6IENvZGVQaXBlbGluZVNvdXJjZSwgcHJvcHM6IFBpcGVsaW5lU3RhY2tQcm9wcykge1xuICAgIHJldHVybiBuZXcgUmlvQ29kZUJ1aWxkUHJvamVjdCh0aGlzLCBuYW1lLCB7XG4gICAgICBpbnB1dDogdHJpZ2dlckZpbGUsXG4gICAgICBjZGtPdXREaXJlY3Rvcnk6ICdpbmZyYXN0cnVjdHVyZS9jZGsub3V0JyxcbiAgICAgIHBhcnRpYWxCdWlsZFNwZWM6IHRoaXMubG9hZEJ1aWxkU3BlY0Zyb21GaWxlKHByb3BzPy5jb2RlQnVpbGRPcHRpb25zPy5wYXJ0aWFsQnVpbGRTcGVjUGF0aCkgfHwgY3JlYXRlTWFpbkJ1aWxkU3BlYyh0aGlzLl9mZWF0dXJlcyksXG4gICAgICBidWlsZEVudmlyb25tZW50OiBwcm9wcz8uY29kZUJ1aWxkT3B0aW9ucz8uYnVpbGRFbnZpcm9ubWVudCxcbiAgICAgIGhvc3RlZFpvbmVOYW1lOiB0aGlzLl9ob3N0ZWRab25lLnpvbmVOYW1lLFxuICAgICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgY2FjaGVCdWNrZXQ6IHRoaXMuX2NhY2hlQnVja2V0LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRNYWluUGlwZWxpbmUocHJvcHM6IFBpcGVsaW5lU3RhY2tQcm9wcywgbWFpbkJ1aWxkOiBDb2RlQnVpbGRTdGVwKSB7XG4gICAgY29uc3QgcGlwZWxpbmUgPSBuZXcgY29kZXBpcGVsaW5lLlBpcGVsaW5lKHRoaXMsICdQaXBlbGluZScsIHtcbiAgICAgIGFydGlmYWN0QnVja2V0OiB0aGlzLl9jYWNoZUJ1Y2tldCxcbiAgICAgIHBpcGVsaW5lVHlwZTogdGhpcy5fY29kZVBpcGVsaW5lVHlwZSxcbiAgICAgIHJlc3RhcnRFeGVjdXRpb25PblVwZGF0ZTogdHJ1ZSxcbiAgICB9KTtcbiAgICBjb25zdCBjb2RlUGlwZWxpbmUgPSBuZXcgcGlwZWxpbmVzLkNvZGVQaXBlbGluZShwaXBlbGluZSwgJ0NvZGVQaXBlbGluZScsIHtcbiAgICAgIGNvZGVQaXBlbGluZTogcGlwZWxpbmUsXG4gICAgICBzeW50aDogbWFpbkJ1aWxkLFxuICAgICAgc2VsZk11dGF0aW9uQ29kZUJ1aWxkRGVmYXVsdHM6IHtcbiAgICAgICAgYnVpbGRFbnZpcm9ubWVudDoge1xuICAgICAgICAgIGJ1aWxkSW1hZ2U6IExpbnV4TGFtYmRhQnVpbGRJbWFnZS5BTUFaT05fTElOVVhfMjAyM19OT0RFXzIwLFxuICAgICAgICAgIGNvbXB1dGVUeXBlOiBDb21wdXRlVHlwZS5MQU1CREFfMUdCLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBUYWdzLm9mKHBpcGVsaW5lKS5hZGQoJ3BpcGVsaW5lX3R5cGUnLCAnYnVpbGQnKTtcblxuICAgIGNvbnN0IHN0cmlwQXNzZXRzU3RlcCA9IHRoaXMuY3JlYXRlU3RyaXBBc3NldHNTdGVwKGNvZGVQaXBlbGluZSk7XG4gICAgY29kZVBpcGVsaW5lLmFkZFdhdmUoJ0JlZm9yZURlcGxveScsIHsgcHJlOiBbc3RyaXBBc3NldHNTdGVwXSB9KTtcblxuICAgIGNvbnN0IGNhcGFiaWxpdHlNb25pdG9yaW5nRGVwbG95U3RlcCA9IHRoaXMuY3JlYXRlQ2FwYWJpbGl0eU1vbml0b3JpbmdEZXBsb3lTdGVwKG1haW5CdWlsZCwgcHJvcHMpO1xuICAgIGNvbnN0IHNlY3JldHNEZXBsb3lTdGVwUHJvcHMgPSB0aGlzLmNyZWF0ZVNlY3JldHNEZXBsb3lTdGVwKHByb3BzKTtcbiAgICBjb25zdCBmcm9udGVuZERlcGxveVN0ZXAgPSB0aGlzLmNyZWF0ZURlcGxveUZyb250ZW5kRGVwbG95U3RlcChtYWluQnVpbGQpO1xuICAgIGNvbnN0IHBvc3RTdGVwcyA9IFtdO1xuICAgIGlmIChjYXBhYmlsaXR5TW9uaXRvcmluZ0RlcGxveVN0ZXApIHtcbiAgICAgIHBvc3RTdGVwcy5wdXNoKGNhcGFiaWxpdHlNb25pdG9yaW5nRGVwbG95U3RlcCk7XG4gICAgfVxuICAgIGlmIChmcm9udGVuZERlcGxveVN0ZXApIHtcbiAgICAgIHBvc3RTdGVwcy5wdXNoKGZyb250ZW5kRGVwbG95U3RlcCk7XG4gICAgfVxuXG4gICAgY29kZVBpcGVsaW5lLmFkZFN0YWdlKG5ldyBBcHBsaWNhdGlvbih0aGlzLCAnRGVwbG95QXBwbGljYXRpb25TdGFja3MnLCB7XG4gICAgICBhcHBTdGFja0ZhY3Rvcnk6IHByb3BzLmFwcFN0YWNrRmFjdG9yeSxcbiAgICAgIHNlcnZpY2VOYW1lOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICAgIHZlcnNpb246IHByb2Nlc3MuZW52LlBJUEVMSU5FX0VYRUNVVElPTl9JRCA/PyAnUElQRUxJTkVfRVhFQ1VUSU9OX0lEIG5vdCBzZXQnLFxuICAgIH0pLCB7XG4gICAgICBwcmU6IHNlY3JldHNEZXBsb3lTdGVwUHJvcHMgPyBbc2VjcmV0c0RlcGxveVN0ZXBQcm9wc10gOiB1bmRlZmluZWQsXG4gICAgICBwb3N0OiBwb3N0U3RlcHMsXG4gICAgfSk7XG5cbiAgICBjb2RlUGlwZWxpbmUuYnVpbGRQaXBlbGluZSgpO1xuXG4gICAgdGhpcy50YWdDb2RlQnVpbGRQcm9qZWN0KHN0cmlwQXNzZXRzU3RlcCwgJ3Byb2plY3RfdHlwZScsICdzdHJpcF9hc3NldHMnKTtcbiAgICB0aGlzLnRhZ0NvZGVCdWlsZFByb2plY3Qoc2VjcmV0c0RlcGxveVN0ZXBQcm9wcywgJ3Byb2plY3RfdHlwZScsICdkZXBsb3lfc2VjcmV0cycpO1xuICAgIHRoaXMudGFnQ29kZUJ1aWxkUHJvamVjdChtYWluQnVpbGQsICdwcm9qZWN0X3R5cGUnLCAnYnVpbGQnKTtcbiAgICB0aGlzLnRhZ0NvZGVCdWlsZFByb2plY3QoY2FwYWJpbGl0eU1vbml0b3JpbmdEZXBsb3lTdGVwLCAncHJvamVjdF90eXBlJywgJ2RlcGxveV9jYXBhYmlsaXR5X21vbml0b3JpbmcnKTtcbiAgICB0aGlzLnRhZ0NvZGVCdWlsZFByb2plY3QoZnJvbnRlbmREZXBsb3lTdGVwLCAncHJvamVjdF90eXBlJywgJ2RlcGxveV9mcm9udGVuZCcpO1xuXG4gICAgaWYgKGNhcGFiaWxpdHlNb25pdG9yaW5nRGVwbG95U3RlcCkge1xuICAgICAgY29uc3QgbW9uaXRvcmluZ1Rlc3RzdWl0ZVJ1bm5lckJ1Y2tldCA9IEJ1Y2tldC5mcm9tQnVja2V0TmFtZSh0aGlzLCAnTW9uaXRvcmluZ1Rlc3RzdWl0ZVJ1bm5lckJ1Y2tldCcsIGBtb25pdG9yaW5nLXRlc3RzdWl0ZS1ydW5uZXItJHt0aGlzLmFjY291bnR9YCk7XG4gICAgICBtb25pdG9yaW5nVGVzdHN1aXRlUnVubmVyQnVja2V0LmdyYW50V3JpdGUoY2FwYWJpbGl0eU1vbml0b3JpbmdEZXBsb3lTdGVwKTtcbiAgICB9XG4gICAgaWYgKGZyb250ZW5kRGVwbG95U3RlcCkge1xuICAgICAgY29uc3QgZnJvbnRlbmRCdWNrZXQgPSBzMy5CdWNrZXQuZnJvbUJ1Y2tldE5hbWUodGhpcywgJ0Zyb250ZW5kQnVja2V0JywgdGhpcy5fZmVhdHVyZXMuZnJvbnRlbmRCdWNrZXROYW1lISEpO1xuICAgICAgZnJvbnRlbmRCdWNrZXQuZ3JhbnRSZWFkV3JpdGUoZnJvbnRlbmREZXBsb3lTdGVwKTtcbiAgICB9XG5cbiAgICBjb25zdCBydWxlID0gbmV3IGV2ZW50cy5SdWxlKHRoaXMsICdQaXBlbGluZVNjaGVkdWxlJywge1xuICAgICAgc2NoZWR1bGU6IGV2ZW50cy5TY2hlZHVsZS5leHByZXNzaW9uKHByb3BzLnBpcGVsaW5lU2NoZWR1bGVzPy5tYWluUGlwZWxpbmUgfHwgJ2Nyb24oMCA5ID8gKiAyIzEgKiknKSxcbiAgICB9KTtcbiAgICBydWxlLmFkZFRhcmdldChuZXcgdGFyZ2V0cy5Db2RlUGlwZWxpbmUoY29kZVBpcGVsaW5lLnBpcGVsaW5lKSk7XG5cbiAgICB0aGlzLl9vc3NMaWNlbnNlc0J1Y2tldC5ncmFudFJlYWRXcml0ZShtYWluQnVpbGQpO1xuICAgIHRoaXMuX29zc0xpY2Vuc2VzQnVja2V0UGFyYW1ldGVyLmdyYW50UmVhZChtYWluQnVpbGQpO1xuICAgIHRoaXMuX3NlcnZpY2VLZXlzdG9yZVBhc3N3b3JkLmdyYW50UmVhZChtYWluQnVpbGQpO1xuICAgIHRoaXMuX2FjY291bnROYW1lUGFyYW1ldGVyLmdyYW50UmVhZChtYWluQnVpbGQpO1xuICAgIHRoaXMuX3RlYW1JZGVudGlmaWVyUGFyYW1ldGVyLmdyYW50UmVhZChtYWluQnVpbGQpO1xuICAgIGlmICh0aGlzLl9mZWF0dXJlcy5rYWZrYUludGVncmF0aW9uKSB7XG4gICAgICB0aGlzLmdyYW50UGVybWlzc2lvbnNGb3JLYWZrYUludGVncmF0aW9uKG1haW5CdWlsZCwgJ0thZmthSW50ZWdyYXRpb25Qb2xpY3knKTtcbiAgICB9XG4gICAgY29kZVBpcGVsaW5lLnBpcGVsaW5lLmFydGlmYWN0QnVja2V0LmdyYW50UmVhZFdyaXRlKHN0cmlwQXNzZXRzU3RlcC5wcm9qZWN0KTtcblxuICAgIGlmICh0aGlzLl9mZWF0dXJlcz8uZW5hYmxlUGlwZWxpbmVNb25pdG9ycykge1xuICAgICAgbmV3IERhdGFkb2dQaXBlbGluZUVycm9yQWxlcnQodGhpcywgJ0RhdGFkb2dQaXBlbGluZUVycm9yTW9uaXRvcicsIHtcbiAgICAgICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgICBwaXBlbGluZU5hbWU6IHBpcGVsaW5lLnBpcGVsaW5lTmFtZSxcbiAgICAgICAgYWNjb3VudElkOiB0aGlzLmFjY291bnQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEJyYW5jaFBpcGVsaW5lKGJyYW5jaEJ1aWxkOiBDb2RlQnVpbGRTdGVwKSB7XG4gICAgY29uc3QgYnJhbmNoUGlwZWxpbmUgPSBuZXcgY29kZXBpcGVsaW5lLlBpcGVsaW5lKHRoaXMsICdCcmFuY2hQaXBlbGluZScsIHtcbiAgICAgIGFydGlmYWN0QnVja2V0OiB0aGlzLl9jYWNoZUJ1Y2tldCxcbiAgICAgIHBpcGVsaW5lVHlwZTogdGhpcy5fY29kZVBpcGVsaW5lVHlwZSxcbiAgICAgIHJlc3RhcnRFeGVjdXRpb25PblVwZGF0ZTogdHJ1ZSxcbiAgICB9KTtcbiAgICBjb25zdCBicmFuY2hDb2RlUGlwZWxpbmUgPSBuZXcgcGlwZWxpbmVzLkNvZGVQaXBlbGluZShicmFuY2hQaXBlbGluZSwgJ0NvZGVQaXBlbGluZScsIHtcbiAgICAgIGNvZGVQaXBlbGluZTogYnJhbmNoUGlwZWxpbmUsXG4gICAgICBzeW50aDogYnJhbmNoQnVpbGQsXG4gICAgICBzZWxmTXV0YXRpb246IGZhbHNlLFxuICAgIH0pO1xuICAgIFRhZ3Mub2YoYnJhbmNoUGlwZWxpbmUpLmFkZCgncGlwZWxpbmVfdHlwZScsICdicmFuY2gnKTtcbiAgICBicmFuY2hDb2RlUGlwZWxpbmUuYWRkV2F2ZSgnQnJhbmNoQnVpbGQnKS5hZGRQb3N0KGJyYW5jaEJ1aWxkKTtcbiAgICBicmFuY2hDb2RlUGlwZWxpbmUuYnVpbGRQaXBlbGluZSgpO1xuXG4gICAgdGhpcy50YWdDb2RlQnVpbGRQcm9qZWN0KGJyYW5jaEJ1aWxkLCAncHJvamVjdF90eXBlJywgJ2JyYW5jaF9idWlsZCcpO1xuXG4gICAgdGhpcy5fb3NzTGljZW5zZXNCdWNrZXQuZ3JhbnRSZWFkV3JpdGUoYnJhbmNoQnVpbGQpO1xuICAgIHRoaXMuX29zc0xpY2Vuc2VzQnVja2V0UGFyYW1ldGVyLmdyYW50UmVhZChicmFuY2hCdWlsZCk7XG4gICAgdGhpcy5fc2VydmljZUtleXN0b3JlUGFzc3dvcmQuZ3JhbnRSZWFkKGJyYW5jaEJ1aWxkKTtcbiAgICB0aGlzLl9hY2NvdW50TmFtZVBhcmFtZXRlci5ncmFudFJlYWQoYnJhbmNoQnVpbGQpO1xuICAgIHRoaXMuX3RlYW1JZGVudGlmaWVyUGFyYW1ldGVyLmdyYW50UmVhZChicmFuY2hCdWlsZCk7XG4gICAgaWYgKHRoaXMuX2ZlYXR1cmVzLmthZmthSW50ZWdyYXRpb24pIHtcbiAgICAgIHRoaXMuZ3JhbnRQZXJtaXNzaW9uc0ZvckthZmthSW50ZWdyYXRpb24oYnJhbmNoQnVpbGQsICdCcmFuY2hLYWZrYUludGVncmF0aW9uUG9saWN5Jyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRWdWxuZXJhYmlsaXR5UGlwZWxpbmUocHJvcHM6IFBpcGVsaW5lU3RhY2tQcm9wcykge1xuICAgIGNvbnN0IHZ1bG5lcmFiaWxpdHlCdWlsZCA9IG5ldyBSaW9Db2RlQnVpbGRQcm9qZWN0KHRoaXMsICdWdWxuZXJhYmlsaXR5Q2hlY2tzJywge1xuICAgICAgaW5wdXQ6IHRoaXMuX2lucHV0TWFzdGVyVHJpZ2dlckZpbGUsXG4gICAgICBwYXJ0aWFsQnVpbGRTcGVjOiBjcmVhdGVWdWxuZXJhYmlsaXR5QnVpbGRTcGVjKHRoaXMuX2ZlYXR1cmVzKSxcbiAgICAgIGJ1aWxkRW52aXJvbm1lbnQ6IHByb3BzPy5jb2RlQnVpbGRPcHRpb25zPy5idWlsZEVudmlyb25tZW50LFxuICAgICAgaG9zdGVkWm9uZU5hbWU6IHRoaXMuX2hvc3RlZFpvbmUuem9uZU5hbWUsXG4gICAgICBzZXJ2aWNlTmFtZTogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgICBjYWNoZUJ1Y2tldDogdGhpcy5fY2FjaGVCdWNrZXQsXG4gICAgfSk7XG4gICAgY29uc3QgdnVsbmVyYWJpbGl0eVBpcGVsaW5lID0gbmV3IGNvZGVwaXBlbGluZS5QaXBlbGluZSh0aGlzLCAnVnVsbmVyYWJpbGl0eVBpcGVsaW5lJywge1xuICAgICAgYXJ0aWZhY3RCdWNrZXQ6IHRoaXMuX2NhY2hlQnVja2V0LFxuICAgICAgcGlwZWxpbmVUeXBlOiB0aGlzLl9jb2RlUGlwZWxpbmVUeXBlLFxuICAgICAgcmVzdGFydEV4ZWN1dGlvbk9uVXBkYXRlOiB0cnVlLFxuICAgIH0pO1xuICAgIGNvbnN0IHZ1bG5lcmFiaWxpdHlDb2RlUGlwZWxpbmUgPSBuZXcgcGlwZWxpbmVzLkNvZGVQaXBlbGluZSh2dWxuZXJhYmlsaXR5UGlwZWxpbmUsICdDb2RlUGlwZWxpbmUnLCB7XG4gICAgICBjb2RlUGlwZWxpbmU6IHZ1bG5lcmFiaWxpdHlQaXBlbGluZSxcbiAgICAgIHN5bnRoOiB2dWxuZXJhYmlsaXR5QnVpbGQsXG4gICAgICBzZWxmTXV0YXRpb246IGZhbHNlLFxuICAgIH0pO1xuICAgIFRhZ3Mub2YodnVsbmVyYWJpbGl0eVBpcGVsaW5lKS5hZGQoJ3BpcGVsaW5lX3R5cGUnLCAndnVsbmVyYWJpbGl0eScpO1xuXG4gICAgdnVsbmVyYWJpbGl0eUNvZGVQaXBlbGluZS5hZGRXYXZlKCdWdWxuZXJhYmlsaXR5Q2hlY2tzJykuYWRkUG9zdCh2dWxuZXJhYmlsaXR5QnVpbGQpO1xuICAgIHZ1bG5lcmFiaWxpdHlDb2RlUGlwZWxpbmUuYnVpbGRQaXBlbGluZSgpO1xuICAgIFRhZ3Mub2YodnVsbmVyYWJpbGl0eUJ1aWxkLnByb2plY3QpLmFkZCgncHJvamVjdF90eXBlJywgJ3Z1bG5lcmFiaWxpdHlfY2hlY2snKTtcbiAgICB0aGlzLl9uaXN0RGF0YU1pcnJvclVybC5ncmFudFJlYWQodnVsbmVyYWJpbGl0eUJ1aWxkKTtcblxuICAgIGNvbnN0IHZ1bG5lcmFiaWxpdHlSdWxlID0gbmV3IGV2ZW50cy5SdWxlKHRoaXMsICdWdWxuZXJhYmlsaXR5UGlwZWxpbmVTY2hlZHVsZScsIHtcbiAgICAgIHNjaGVkdWxlOiBldmVudHMuU2NoZWR1bGUuZXhwcmVzc2lvbihwcm9wcy5waXBlbGluZVNjaGVkdWxlcz8udnVsbmVyYWJpbGl0eVBpcGVsaW5lIHx8ICdjcm9uKDAgNSA/ICogTU9OLUZSSSAqKScpLFxuICAgIH0pO1xuICAgIHZ1bG5lcmFiaWxpdHlSdWxlLmFkZFRhcmdldChuZXcgdGFyZ2V0cy5Db2RlUGlwZWxpbmUodnVsbmVyYWJpbGl0eUNvZGVQaXBlbGluZS5waXBlbGluZSkpO1xuXG4gICAgaWYgKHByb3BzLmRhdGFkb2dBbGVydFR5cGUgPT09ICdvcHNnZW5pZScpIHtcbiAgICAgIHRocm93IEVycm9yKCdUaGUgT3BzR2VuaWUgYWxlcnRUeXBlIGlzIG5vdCBzdXBwb3J0ZWQgYW55bW9yZS4gUGxlYXNlIHVzZSB0aGUgdnVsbmVyYWJpbGl0eU5vdGlmaWNhdGlvbiBwcm9wZXJ0eSBpbnN0ZWFkLicpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZmVhdHVyZXM/LmVuYWJsZVBpcGVsaW5lTW9uaXRvcnMpIHtcbiAgICAgIG5ldyBEYXRhRG9nUGlwZWxpbmVFcnJvckFsZXJ0Rm9yVnVsbmVyYWJpbGl0eUNoZWNrcyh0aGlzLCAnRGF0YURvZ1BpcGVsaW5lRXJyb3JGb3JWdWxuZXJhYmlsaXR5Q2hlY2tzTW9uaXRvcicsIHtcbiAgICAgICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgICBwaXBlbGluZU5hbWU6IHZ1bG5lcmFiaWxpdHlQaXBlbGluZS5waXBlbGluZU5hbWUsXG4gICAgICAgIGFjY291bnRJZDogdGhpcy5hY2NvdW50LFxuICAgICAgICBub3RpZmljYXRpb246IHByb3BzLnZ1bG5lcmFiaWxpdHlOb3RpZmljYXRpb24sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVN0cmlwQXNzZXRzU3RlcChwaXBlbGluZTogcGlwZWxpbmVzLkNvZGVQaXBlbGluZSk6IENvZGVCdWlsZFN0ZXAge1xuICAgIC8vIENsb3VkQXNzZW1ibHlBcnRpZmFjdHMgbXVzdCBiZSBzbWFsbGVyIHRoYW4gMjU2TUIuIER1ZSB0byB0aGUgZ3JhZGxlIGFydGlmYWN0IHdlIGFyZSBleGNlZWRpbmcgdGhpcyBsaW1pdCBhbmQgcGlwZWxpbmUgZmFpbHMgaW4gZGVwbG95bWVudCBzdGVwLlxuICAgIC8vIElzc3VlIGlzIGtub3duIGFuZCBub3QgZml4ZWQgZm9yIGFscmVhZHkgc29tZSB5ZWFycy4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzk5MTdcbiAgICAvLyBEaXJ0eSBmaXg6IEFzc2V0cyBhcmUgYWxyZWFkeSB1cGxvYWRlZCBhbmQgdGh1cyBub3QgbmVlZGVkLiBSZW1vdmUgdGhlbSBmcm9tIHBpcGVsaW5lIGFydGlmYWN0LlxuICAgIHJldHVybiBuZXcgQ29kZUJ1aWxkU3RlcChcbiAgICAgICdTdHJpcEFzc2V0c0Zyb21Bc3NlbWJseScsIHtcbiAgICAgICAgaW5wdXQ6IHBpcGVsaW5lLmNsb3VkQXNzZW1ibHlGaWxlU2V0LFxuICAgICAgICBjb21tYW5kczogW1xuICAgICAgICAgICdTM19QQVRIPSR7Q09ERUJVSUxEX1NPVVJDRV9WRVJTSU9OI1wiYXJuOmF3czpzMzo6OlwifScsXG4gICAgICAgICAgJ1pJUF9BUkNISVZFPSQoYmFzZW5hbWUgJFMzX1BBVEgpJyxcbiAgICAgICAgICAncm0gLXJmdiBhc3NldC4qJyxcbiAgICAgICAgICAnemlwIC1yIC1xIC1BICRaSVBfQVJDSElWRSAqJyxcbiAgICAgICAgICAnYXdzIHMzIGNwICRaSVBfQVJDSElWRSBzMzovLyRTM19QQVRIJyxcbiAgICAgICAgXSxcbiAgICAgICAgYnVpbGRFbnZpcm9ubWVudDoge1xuICAgICAgICAgIGJ1aWxkSW1hZ2U6IExpbnV4TGFtYmRhQnVpbGRJbWFnZS5BTUFaT05fTElOVVhfMjAyM19OT0RFXzIwLFxuICAgICAgICAgIGNvbXB1dGVUeXBlOiBDb21wdXRlVHlwZS5MQU1CREFfMUdCLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDYXBhYmlsaXR5TW9uaXRvcmluZ0RlcGxveVN0ZXAobWFpbkJ1aWxkOiBDb2RlQnVpbGRTdGVwLCBwcm9wczogUGlwZWxpbmVTdGFja1Byb3BzKTogQ29kZUJ1aWxkU3RlcCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHByb3BzLm1vbml0b3JpbmdEZXBsb3lTdGVwUHJvcHMpIHtcbiAgICAgIGNvbnN0IG1vbml0b3JpbmdBcnRpZmFjdHMgPSBPYmplY3Qua2V5cyhwcm9wcy5tb25pdG9yaW5nRGVwbG95U3RlcFByb3BzLm1vbml0b3JpbmdBcnRpZmFjdHMpLm1hcCgoa2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IG91dHB1dCA9IG1haW5CdWlsZC5hZGRPdXRwdXREaXJlY3Rvcnkoa2V5KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpbnB1dDogb3V0cHV0LFxuICAgICAgICAgIGZpbGVzOiBwcm9wcy5tb25pdG9yaW5nRGVwbG95U3RlcFByb3BzIS5tb25pdG9yaW5nQXJ0aWZhY3RzW2tleV0sXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgUmlvQ2FwYWJpbGl0eU1vbml0b3JpbmdEZXBsb3lTdGVwKHRoaXMsICdEZXBsb3lDYXBhYmlsaXR5TW9uaXRvcmluZycsIHtcbiAgICAgICAgbW9uaXRvcmluZ0FydGlmYWN0czogbW9uaXRvcmluZ0FydGlmYWN0cyxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU2VjcmV0c0RlcGxveVN0ZXAocHJvcHM6IFBpcGVsaW5lU3RhY2tQcm9wcyk6IHJpby5SaW9TZWNyZXRzRGVwbG95U3RlcCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHByb3BzLnNlY3JldHNEZXBsb3lTdGVwUHJvcHMpIHtcbiAgICAgIHJldHVybiBuZXcgcmlvLlJpb1NlY3JldHNEZXBsb3lTdGVwKHRoaXMsICdEZXBsb3lTZWNyZXRzJywge1xuICAgICAgICAuLi5wcm9wcy5zZWNyZXRzRGVwbG95U3RlcFByb3BzLFxuICAgICAgICBpbnB1dDogdGhpcy5faW5wdXRNYXN0ZXJUcmlnZ2VyRmlsZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRGVwbG95RnJvbnRlbmREZXBsb3lTdGVwKG1haW5CdWlsZDogQ29kZUJ1aWxkU3RlcCk6IENvZGVCdWlsZFN0ZXAgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5fZmVhdHVyZXMuZnJvbnRlbmRCdWNrZXROYW1lKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBmcm9udGVuZEJ1aWxkT3V0cHV0ID0gbWFpbkJ1aWxkLmFkZE91dHB1dERpcmVjdG9yeSgnYnVpbGQnKTtcbiAgICByZXR1cm4gbmV3IENvZGVCdWlsZFN0ZXAoJ0RlcGxveUZyb250ZW5kJywge1xuICAgICAgaW5wdXQ6IGZyb250ZW5kQnVpbGRPdXRwdXQsXG4gICAgICBidWlsZEVudmlyb25tZW50OiB7XG4gICAgICAgIGJ1aWxkSW1hZ2U6IExpbnV4TGFtYmRhQnVpbGRJbWFnZS5BTUFaT05fTElOVVhfMjAyM19OT0RFXzIwLFxuICAgICAgICBjb21wdXRlVHlwZTogQ29tcHV0ZVR5cGUuTEFNQkRBXzFHQixcbiAgICAgIH0sXG4gICAgICBjb21tYW5kczogW1xuICAgICAgICBgYXdzIHMzIHN5bmMgLS1leGNsdWRlIGluZGV4Lmh0bWwgLS1jYWNoZS1jb250cm9sIG1heC1hZ2U9MzE1MzYwMDAgLi8gJ3MzOi8vJHt0aGlzLl9mZWF0dXJlcy5mcm9udGVuZEJ1Y2tldE5hbWV9J2AsXG4gICAgICAgIGBhd3MgczMgY3AgLS1jYWNoZS1jb250cm9sIG5vLWNhY2hlIGluZGV4Lmh0bWwgJ3MzOi8vJHt0aGlzLl9mZWF0dXJlcy5mcm9udGVuZEJ1Y2tldE5hbWV9J2AsXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBncmFudFBlcm1pc3Npb25zRm9yS2Fma2FJbnRlZ3JhdGlvbihidWlsZFByb2plY3Q6IFJpb0NvZGVCdWlsZFByb2plY3QsIHBvbGljeUlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBidWlsZFByb2plY3RSb2xlID0gYnVpbGRQcm9qZWN0LnByb2plY3Qucm9sZTtcbiAgICBpZiAoYnVpbGRQcm9qZWN0Um9sZSkge1xuICAgICAgYnVpbGRQcm9qZWN0Um9sZS5hZGRNYW5hZ2VkUG9saWN5KFxuICAgICAgICBNYW5hZ2VkUG9saWN5LmZyb21NYW5hZ2VkUG9saWN5QXJuKHRoaXMsXG4gICAgICAgICAgcG9saWN5SWQsXG4gICAgICAgICAgRm4uaW1wb3J0VmFsdWUoJ2thZmthLWludGVncmF0aW9uLXBvbGljeS1hcm4nKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IEVycm9yKGBDb3VsZCBub3QgYWRkIG1hbmFnZWQgcG9saWN5IGZvciBrYWZrYS1pbnRlZ3JhdGlvbiB0byBDb2RlQnVpbGQgcHJvamVjdCBvZiAke2J1aWxkUHJvamVjdC5pZH0gZHVlIHRvIG1pc3Npbmcgcm9sZS5gKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWRCdWlsZFNwZWNGcm9tRmlsZShidWlsZFNwZWNQYXRoPzogc3RyaW5nKTogQnVpbGRTcGVjIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIWJ1aWxkU3BlY1BhdGgpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBCdWlsZFNwZWMuZnJvbU9iamVjdCh5YW1sLmxvYWQoZnMucmVhZEZpbGVTeW5jKGJ1aWxkU3BlY1BhdGgsIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSkpIGFzIE9iamVjdCk7XG4gIH1cblxuICBwcml2YXRlIHRhZ0NvZGVCdWlsZFByb2plY3QocHJvamVjdDogQ29kZUJ1aWxkU3RlcCB8IHVuZGVmaW5lZCwga2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAocHJvamVjdCkge1xuICAgICAgVGFncy5vZihwcm9qZWN0LnByb2plY3QpLmFkZChrZXksIHZhbHVlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -29,10 +29,12 @@ class NormalizedTestTemplate {
|
|
|
29
29
|
for (const [regex, replacement] of replacements) {
|
|
30
30
|
normalizedString = normalizedString.replace(regex, replacement);
|
|
31
31
|
}
|
|
32
|
-
|
|
32
|
+
const normalizedJson = JSON.parse(normalizedString);
|
|
33
|
+
delete normalizedJson.Mappings?.LatestNodeRuntimeMap;
|
|
34
|
+
return normalizedJson;
|
|
33
35
|
}
|
|
34
36
|
}
|
|
35
37
|
exports.NormalizedTestTemplate = NormalizedTestTemplate;
|
|
36
38
|
_a = JSII_RTTI_SYMBOL_1;
|
|
37
39
|
NormalizedTestTemplate[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.NormalizedTestTemplate", version: "0.0.0" };
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsaXplZC10ZXN0LXRlbXBsYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3Qvbm9ybWFsaXplZC10ZXN0LXRlbXBsYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBYSxzQkFBc0I7SUFDMUIsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFrQjtRQUUzQyxNQUFNLFlBQVksR0FBdUI7WUFDdkMsQ0FBQyxvQkFBb0IsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFLGdDQUFnQztZQUMzRSxDQUFDLHdEQUF3RCxFQUFFLDJCQUEyQixDQUFDLEVBQUUsdURBQXVEO1NBQ2pKLENBQUM7UUFFRixJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsS0FBSyxNQUFNLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2hELGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUVELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNwRCxPQUFPLGNBQWMsQ0FBQyxRQUFRLEVBQUUsb0JBQW9CLENBQUM7UUFDckQsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQzs7QUFoQkgsd0RBaUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hc3NlcnRpb25zJztcblxuLyoqXG4gKiBBIHV0aWxpdHkgY2xhc3MgdGhhdCBub3JtYWxpemVzIGEgVGVtcGxhdGUgb2JqZWN0IHRvIHNpbXBsaWZ5IHRlbXBsYXRlIGNvbXBhcmlzb25zIGluIHRlc3RzLlxuICpcbiAqIFRoZSBmcm9tVGVtcGxhdGUoKSBtZXRob2Qgd29ya3MgYnkgYXBwbHlpbmcgYSBzZXQgb2YgcmVnZXggcmVwbGFjZW1lbnRzIGZvciBjYWxjdWxhdGVkIHZhbHVlcyB3aXRoIGFcbiAqIHBsYWNlaG9sZGVyIHZhbHVlLiBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgYmVjYXVzZSBlbGVtZW50cyBsaWtlIHRoZSBTM1xuICoga2V5cyBmb3IgTGFtYmRhIGNvZGUgYXNzZXRzIGluY2x1ZGUgaGFzaCBzdHJpbmdzIHRoYXQgY2hhbmdlIHdpdGggZXZlcnkgZGVwZW5kZW5jeSB1cGRhdGUuIE5vcm1hbGl6aW5nXG4gKiB0aGVzZSB2YWx1ZXMgcHJldmVudHMgZmFsc2UgbmVnYXRpdmVzIGR1cmluZyB0ZW1wbGF0ZSBvYmplY3QgY29tcGFyaXNvbnMuXG4gKlxuICogQ3VycmVudCByZXBsYWNlbWVudHM6XG4gKiAtIFNIQS0yNTYgaGFzaCBzdHJpbmdzICg2NCBhbHBoYW51bWVyaWMgY2hhcmFjdGVycykgYXJlIHJlcGxhY2VkIHdpdGggJ2R1bW15LWNkay1hc3NldCcuXG4gKiAtIFRhZ3Mgd2l0aCBLZXkgJ2RkX2Nka19jb25zdHJ1Y3QnIGFyZSByZXBsYWNlZCB3aXRoICdkdW1teS1kYXRhZG9nLXZlcnNpb24nLlxuICogQGV4YW1wbGVcbiAqICAgY29uc3QgYXBwU3RhY2sgPSBuZXcgQXBwU3RhY2soKVxuICogICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhhcHBTdGFjayk7XG4gKiAgIGV4cGVjdChOb3JtYWxpemVkVGVtcGxhdGUuZnJvbSh0ZW1wbGF0ZSkudG9NYXRjaFNuYXBzaG90KCk7XG4gKi9cbmV4cG9ydCBjbGFzcyBOb3JtYWxpemVkVGVzdFRlbXBsYXRlIHtcbiAgcHVibGljIHN0YXRpYyBmcm9tVGVtcGxhdGUodGVtcGxhdGU6IFRlbXBsYXRlKTogVGVtcGxhdGUge1xuXG4gICAgY29uc3QgcmVwbGFjZW1lbnRzOiBbUmVnRXhwLCBzdHJpbmddW10gPSBbXG4gICAgICBbL1xcYlthLWYwLTldezY0fVxcYi9naSwgJ2R1bW15LWNkay1hc3NldCddLCAvLyBNYXRjaCBhbnkgU0hBLTI1NiBoYXNoIHN0cmluZ1xuICAgICAgWy8oXCJLZXlcIjpcXHMqXCJkZF9jZGtfY29uc3RydWN0XCIsXFxzKlwiVmFsdWVcIjpcXHMqXCIpW15cIl0qKFwiKS9nLCAnJDFkdW1teS1kYXRhZG9nLXZlcnNpb24kMiddLCAvLyBNYXRjaCBkZF9jZGtfY29uc3RydWN0IHRhZyBhZGRlZCB0byBsYW1iZGEgZnVuY3Rpb25zXG4gICAgXTtcblxuICAgIGxldCBub3JtYWxpemVkU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkodGVtcGxhdGUpO1xuICAgIGZvciAoY29uc3QgW3JlZ2V4LCByZXBsYWNlbWVudF0gb2YgcmVwbGFjZW1lbnRzKSB7XG4gICAgICBub3JtYWxpemVkU3RyaW5nID0gbm9ybWFsaXplZFN0cmluZy5yZXBsYWNlKHJlZ2V4LCByZXBsYWNlbWVudCk7XG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZEpzb24gPSBKU09OLnBhcnNlKG5vcm1hbGl6ZWRTdHJpbmcpO1xuICAgIGRlbGV0ZSBub3JtYWxpemVkSnNvbi5NYXBwaW5ncz8uTGF0ZXN0Tm9kZVJ1bnRpbWVNYXA7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZWRKc29uO1xuICB9XG59XG5cbiJdfQ==
|
package/package.json
CHANGED
package/version.json
CHANGED