@tricoteuses/assemblee 1.7.2 → 1.7.4
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/README.md +9 -55
- package/lib/file_systems.js +1 -1
- package/lib/file_systems.mjs +1 -1
- package/lib/git.d.ts +1 -0
- package/lib/git.js +12 -1
- package/lib/git.mjs +11 -1
- package/lib/parsers/textes_lois.d.ts +1 -0
- package/lib/parsers/textes_lois.js +86 -0
- package/lib/parsers/textes_lois.mjs +43 -0
- package/lib/scripts/clean_reorganized_data.js +2 -10
- package/lib/scripts/clean_reorganized_data.mjs +2 -10
- package/lib/scripts/reorganize_data.js +2 -10
- package/lib/scripts/reorganize_data.mjs +2 -10
- package/lib/scripts/retrieve_deputes_photos.d.ts +3 -1
- package/lib/scripts/retrieve_deputes_photos.js +169 -164
- package/lib/scripts/retrieve_deputes_photos.mjs +76 -91
- package/lib/scripts/retrieve_pending_amendments.js +2 -10
- package/lib/scripts/retrieve_pending_amendments.mjs +2 -10
- package/lib/scripts/retrieve_senateurs_photos.js +120 -175
- package/lib/scripts/retrieve_senateurs_photos.mjs +42 -107
- package/lib/scripts/retrieve_textes_lois_llm.d.ts +1 -0
- package/lib/scripts/retrieve_textes_lois_llm.js +188 -0
- package/lib/scripts/retrieve_textes_lois_llm.mjs +85 -0
- package/lib/scripts/shared/cli_helpers.d.ts +0 -2
- package/lib/scripts/shared/cli_helpers.js +2 -19
- package/lib/scripts/shared/cli_helpers.mjs +1 -8
- package/lib/shared_types/codes_actes.d.ts +2 -0
- package/lib/shared_types/codes_actes.js +3 -1
- package/lib/shared_types/codes_actes.mjs +3 -1
- package/lib/types/scrutins.d.ts +4 -4
- package/lib/types/scrutins.js +5 -5
- package/lib/types/scrutins.mjs +5 -5
- package/package.json +4 -1
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { execSync } from "child_process";
|
|
2
1
|
import commandLineArgs from "command-line-args";
|
|
3
2
|
import fs from "fs-extra";
|
|
4
3
|
import path from "path";
|
|
@@ -37,14 +36,7 @@ function parseArgs(argv) {
|
|
|
37
36
|
return options;
|
|
38
37
|
}
|
|
39
38
|
function cloneGit(gitGroupUrl, datasetName, dataDir) {
|
|
40
|
-
|
|
41
|
-
execSync(`git clone ${gitGroupUrl}/${datasetName}_nettoye.git`, {
|
|
42
|
-
cwd: dataDir,
|
|
43
|
-
env: process.env,
|
|
44
|
-
encoding: "utf-8",
|
|
45
|
-
stdio: ["ignore", "ignore", "pipe"]
|
|
46
|
-
});
|
|
47
|
-
}
|
|
39
|
+
git.clone(gitGroupUrl, `${datasetName}_nettoye`, dataDir);
|
|
48
40
|
}
|
|
49
41
|
function commitGit(datasetCleanDir, options, exitCode, subdirectories) {
|
|
50
42
|
if (options.commit) {
|
|
@@ -266,4 +258,4 @@ function main(argv) {
|
|
|
266
258
|
|
|
267
259
|
/* istanbul ignore if */
|
|
268
260
|
if (process.argv[1].endsWith("clean_reorganized_data.ts")) process.exit(main(process.argv));
|
|
269
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJleGVjU3luYyIsImNvbW1hbmRMaW5lQXJncyIsImZzIiwicGF0aCIsImNsZWFuQWN0ZXVyIiwiY2xlYW5BbWVuZGVtZW50IiwiY2xlYW5Eb2N1bWVudE9yRGl2aXNpb24iLCJjbGVhbkRvc3NpZXJQYXJsZW1lbnRhaXJlIiwiY2xlYW5PcmdhbmUiLCJjbGVhblJldW5pb24iLCJjbGVhblNjcnV0aW4iLCJjbGVhblF1ZXN0aW9uIiwiY2xlYW5Db21wdGVSZW5kdSIsImRhdGFzZXRzIiwiRW5hYmxlZERhdGFzZXRzIiwiZ2V0RW5hYmxlZERhdGFzZXRzIiwiZmlsdGVyQnlMZWdpc2xhdHVyZSIsImV4aXN0aW5nRGF0ZVRvSnNvbiIsInBhdGNoZWREYXRlVG9Kc29uIiwid2Fsa0RpciIsImdpdCIsIkNvbnZlcnQiLCJBY3RldXJzRXRPcmdhbmVzQ29udmVydCIsIkFnZW5kYXNDb252ZXJ0IiwiQW1lbmRlbWVudHNDb252ZXJ0IiwiRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQiLCJTY3J1dGluc0NvbnZlcnQiLCJRdWVzdGlvbnNDb252ZXJ0IiwiQ29tcHRlc1JlbmR1c0NvbnZlcnQiLCJjbG9uZU9wdGlvbiIsImNvbW1pdE9wdGlvbiIsInJlbW90ZU9wdGlvbiIsImxlZ2lzbGF0dXJlT3B0aW9uIiwiY2F0ZWdvcmllc09wdGlvbiIsImRhdGFEaXJEZWZhdWx0T3B0aW9uIiwic2lsZW50T3B0aW9uIiwidmVyYm9zZU9wdGlvbiIsInB1bGxPcHRpb24iLCJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwibmFtZSIsInR5cGUiLCJTdHJpbmciLCJCb29sZWFuIiwib3B0aW9ucyIsImNsb25lR2l0IiwiZ2l0R3JvdXBVcmwiLCJkYXRhc2V0TmFtZSIsImRhdGFEaXIiLCJ1bmRlZmluZWQiLCJjd2QiLCJlbnYiLCJwcm9jZXNzIiwiZW5jb2RpbmciLCJzdGRpbyIsImNvbW1pdEdpdCIsImRhdGFzZXRDbGVhbkRpciIsImV4aXRDb2RlIiwic3ViZGlyZWN0b3JpZXMiLCJjb21taXQiLCJlcnJvckNvZGUiLCJjb21taXRBbmRQdXNoIiwicmVtb3RlIiwiY29tbWl0QW5kUHVzaFVpZCIsImNsZWFuQW5kVmFsaWRhdGVEYXRhIiwiZGF0YSIsImNsZWFuZXIiLCJmcm9tSnNvbiIsInRvSnNvbiIsIm5vVmFsaWRhdGUiLCJqc29uRGF0YSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ2YWxpZGF0ZWREYXRhIiwicHJvY2Vzc0ZpbGVzIiwiZGF0YXNldFJhd0RpciIsIndhbGtEaXJQYXJhbXMiLCJkYXRhQ29udmVydGVyIiwiZmlsZVBhdGhBcnJheSIsImZpbGVuYW1lIiwibGVuZ3RoIiwiZW5kc1dpdGgiLCJyYXdGaWxlUGF0aCIsImpvaW4iLCJyYXdKc29uIiwicmVhZEZpbGVTeW5jIiwidmVyYm9zZSIsImNvbnNvbGUiLCJsb2ciLCJwYXJzZSIsInZhbGlkYXRlRGF0YSIsImNsZWFuSnNvbiIsImNsZWFuRmlsZVBhdGgiLCJlbnN1cmVEaXJTeW5jIiwiZGlybmFtZSIsIndyaXRlRmlsZVN5bmMiLCJjbGVhblJlb3JnYW5pemVkRGF0YSIsIkRhdGUiLCJwcm90b3R5cGUiLCJ0b0pTT04iLCJjbG9uZSIsInRyaW0iLCJyZXBsYWNlIiwiZW5hYmxlZERhdGFzZXRzIiwiY2F0ZWdvcmllcyIsImNob3NlbkRhdGFzZXRzIiwibGVnaXNsYXR1cmUiLCJBY3RldXJzRXRPcmdhbmVzIiwiZGF0YXNldCIsImFjdGV1cnNFdE9yZ2FuZXMiLCJiYXNlbmFtZSIsInB1bGwiLCJyZXNldEFuZFB1bGwiLCJhbmFseXplQW5kUmVtb3ZlIiwidG9BY3RldXIiLCJhY3RldXJUb0pzb24iLCJ0b09yZ2FuZSIsIm9yZ2FuZVRvSnNvbiIsIkFnZW5kYXMiLCJhZ2VuZGFzIiwidG9SZXVuaW9uIiwicmV1bmlvblRvSnNvbiIsIkFtZW5kZW1lbnRzIiwiYW1lbmRlbWVudHMiLCJ0b0FtZW5kZW1lbnQiLCJhbWVuZGVtZW50VG9Kc29uIiwiRG9zc2llcnNMZWdpc2xhdGlmcyIsImRvc3NpZXJzTGVnaXNsYXRpZnMiLCJ0b0RvY3VtZW50IiwiZG9jdW1lbnRUb0pzb24iLCJ0b0Rvc3NpZXJQYXJsZW1lbnRhaXJlIiwiZG9zc2llclBhcmxlbWVudGFpcmVUb0pzb24iLCJTY3J1dGlucyIsInNjcnV0aW5zIiwidG9TY3J1dGluIiwic2NydXRpblRvSnNvbiIsIlF1ZXN0aW9ucyIsInF1ZXN0aW9ucyIsInRvUXVlc3Rpb24iLCJxdWVzdGlvblRvSnNvbiIsIkNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiY29tcHRlc1JlbmR1c1NlYW5jZXMiLCJ0b0NvbXB0ZVJlbmR1IiwiY29tcHRlUmVuZHVUb0pzb24iLCJzaWxlbnQiLCJyZWFkZGlyU3luYyIsInBhdGhuYW1lIiwicmVtb3ZlU3luYyIsInJlcG9zaXRvcnlEaXIiLCJlcnJvciIsInVpZEJyYW5jaFVwZGF0ZSIsInJ1biIsImNoaWxkUHJvY2VzcyIsIm1haW4iLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvY2xlYW5fcmVvcmdhbml6ZWRfZGF0YS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCJcbmltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IHtcbiAgY2xlYW5BY3RldXIsXG4gIGNsZWFuQW1lbmRlbWVudCxcbiAgY2xlYW5Eb2N1bWVudE9yRGl2aXNpb24sXG4gIGNsZWFuRG9zc2llclBhcmxlbWVudGFpcmUsXG4gIGNsZWFuT3JnYW5lLFxuICBjbGVhblJldW5pb24sXG4gIGNsZWFuU2NydXRpbixcbiAgY2xlYW5RdWVzdGlvbixcbiAgY2xlYW5Db21wdGVSZW5kdSxcbn0gZnJvbSBcIi4uL2NsZWFuZXJzXCJcbmltcG9ydCB7XG4gIGRhdGFzZXRzLFxuICBFbmFibGVkRGF0YXNldHMsXG4gIGdldEVuYWJsZWREYXRhc2V0cyxcbiAgZmlsdGVyQnlMZWdpc2xhdHVyZSxcbn0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IGV4aXN0aW5nRGF0ZVRvSnNvbiwgcGF0Y2hlZERhdGVUb0pzb24gfSBmcm9tIFwiLi4vZGF0ZXNcIlxuaW1wb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0ICogYXMgZ2l0IGZyb20gXCIuLi9naXRcIlxuaW1wb3J0IHtcbiAgQWN0ZXVyLFxuICBDb252ZXJ0IGFzIEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LFxuICBPcmdhbmUsXG59IGZyb20gXCIuLi90eXBlcy9hY3RldXJzX2V0X29yZ2FuZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBZ2VuZGFzQ29udmVydCwgUmV1bmlvbiB9IGZyb20gXCIuLi90eXBlcy9hZ2VuZGFzXCJcbmltcG9ydCB7IEFtZW5kZW1lbnQsIENvbnZlcnQgYXMgQW1lbmRlbWVudHNDb252ZXJ0IH0gZnJvbSBcIi4uL3R5cGVzL2FtZW5kZW1lbnRzXCJcbmltcG9ydCB7XG4gIENvbnZlcnQgYXMgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQsXG4gIERvY3VtZW50LFxuICBEb3NzaWVyUGFybGVtZW50YWlyZSxcbn0gZnJvbSBcIi4uL3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgU2NydXRpbnNDb252ZXJ0LCBTY3J1dGluIH0gZnJvbSBcIi4uL3R5cGVzL3NjcnV0aW5zXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgUXVlc3Rpb25zQ29udmVydCwgUXVlc3Rpb24gfSBmcm9tIFwiLi4vdHlwZXMvcXVlc3Rpb25zXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQ29tcHRlc1JlbmR1c0NvbnZlcnQsIENvbXB0ZVJlbmR1IH0gZnJvbSBcIi4uL3R5cGVzL2RlYmF0c1wiXG5pbXBvcnQge1xuICBjbG9uZU9wdGlvbixcbiAgY29tbWl0T3B0aW9uLFxuICByZW1vdGVPcHRpb24sXG4gIGxlZ2lzbGF0dXJlT3B0aW9uLFxuICBjYXRlZ29yaWVzT3B0aW9uLFxuICBkYXRhRGlyRGVmYXVsdE9wdGlvbixcbiAgc2lsZW50T3B0aW9uLFxuICB2ZXJib3NlT3B0aW9uLFxuICBwdWxsT3B0aW9uLFxufSBmcm9tIFwiLi9zaGFyZWQvY2xpX2hlbHBlcnNcIlxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MoYXJndjogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gICAgY2xvbmVPcHRpb24sXG4gICAgY29tbWl0T3B0aW9uLFxuICAgIHJlbW90ZU9wdGlvbixcbiAgICBsZWdpc2xhdHVyZU9wdGlvbixcbiAgICBjYXRlZ29yaWVzT3B0aW9uLFxuICAgIHNpbGVudE9wdGlvbixcbiAgICB2ZXJib3NlT3B0aW9uLFxuICAgIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxuICAgIHB1bGxPcHRpb24sXG4gICAge1xuICAgICAgYWxpYXM6IFwiZFwiLFxuICAgICAgaGVscDogXCJzaW5nbGUgZGF0YXNldCB0byByZW9yZ2FuaXplXCIsXG4gICAgICBuYW1lOiBcImRhdGFzZXRcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlbHA6IFwiZG8gbm90IHJlc2V0IC0taGFyZCBhZnRlciBjb21taXQgdG8gc2F2ZSBJL08gaWYgdGhlIHdvcmtpbmcgdHJlZSBpcyB0byBiZSBkaXNjYXJkZWRcIixcbiAgICAgIG5hbWU6IFwibm8tcmVzZXQtYWZ0ZXItY29tbWl0XCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwiVlwiLFxuICAgICAgaGVscDogXCJkb24ndCB2YWxpZGF0ZSBkYXRhXCIsXG4gICAgICBuYW1lOiBcIm5vLXZhbGlkYXRlXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMsIHtcbiAgICBhcmd2OiBhcmd2LFxuICB9KVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG5mdW5jdGlvbiBjbG9uZUdpdChcbiAgZ2l0R3JvdXBVcmw6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgZGF0YXNldE5hbWU6IHN0cmluZyxcbiAgZGF0YURpcjogc3RyaW5nLFxuKTogdm9pZCB7XG4gIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfV9uZXR0b3llLmdpdGAsIHtcbiAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgfSlcbiAgfVxufVxuXG5mdW5jdGlvbiBjb21taXRHaXQoXG4gIGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nLFxuICBvcHRpb25zOiBhbnksXG4gIGV4aXRDb2RlOiBudW1iZXIsXG4gIHN1YmRpcmVjdG9yaWVzOiBhbnksXG4pOiBudW1iZXIge1xuICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgKVxuICAgIGlmIChcbiAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICApIHtcbiAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgfVxuICB9XG4gIGlmIChcbiAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgc3ViZGlyZWN0b3JpZXMpICYmXG4gICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgKSB7XG4gICAgZXhpdENvZGUgPSAxXG4gIH1cbiAgcmV0dXJuIGV4aXRDb2RlXG59XG5cbmZ1bmN0aW9uIGNsZWFuQW5kVmFsaWRhdGVEYXRhPFQ+KFxuICBkYXRhOiBhbnksXG4gIGNsZWFuZXI6IChkYXRhOiBUKSA9PiB2b2lkLFxuICBmcm9tSnNvbjogKGpzb246IHN0cmluZykgPT4gVCxcbiAgdG9Kc29uOiAoZGF0YTogVCkgPT4gc3RyaW5nLFxuICBub1ZhbGlkYXRlOiBCb29sZWFuLFxuKTogc3RyaW5nIHtcbiAgY2xlYW5lcihkYXRhKVxuICBjb25zdCBqc29uRGF0YSA9IEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDIpXG4gIGlmICghbm9WYWxpZGF0ZSkge1xuICAgIHJldHVybiBqc29uRGF0YVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IHZhbGlkYXRlZERhdGE6IFQgPSBmcm9tSnNvbihqc29uRGF0YSlcbiAgICByZXR1cm4gdG9Kc29uKHZhbGlkYXRlZERhdGEpXG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0ZpbGVzPFQ+KFxuICBkYXRhc2V0UmF3RGlyOiBzdHJpbmcsXG4gIGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nLFxuICB3YWxrRGlyUGFyYW1zOiBhbnlbXSxcbiAgY2xlYW5lcjogYW55LFxuICBkYXRhQ29udmVydGVyOiB7IGZyb21Kc29uOiBhbnk7IHRvSnNvbjogYW55IH0sXG4gIG9wdGlvbnM6IGFueSxcbik6IHZvaWQge1xuICBmb3IgKGNvbnN0IGZpbGVQYXRoQXJyYXkgb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyLCB3YWxrRGlyUGFyYW1zKSkge1xuICAgIGNvbnN0IGZpbGVuYW1lID0gZmlsZVBhdGhBcnJheVtmaWxlUGF0aEFycmF5Lmxlbmd0aCAtIDFdXG4gICAgaWYgKCFmaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSBjb250aW51ZVxuICAgIGNvbnN0IHJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXRSYXdEaXIsIC4uLmZpbGVQYXRoQXJyYXkpXG4gICAgY29uc3QgcmF3SnNvbiA9IGZzLnJlYWRGaWxlU3luYyhyYXdGaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICBpZiAob3B0aW9ucy52ZXJib3NlKSBjb25zb2xlLmxvZyhgQ2xlYW5pbmcgZmlsZTogJHtyYXdGaWxlUGF0aH0uLi5gKVxuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKHJhd0pzb24pXG4gICAgY29uc3QgdmFsaWRhdGVEYXRhID0gIW9wdGlvbnNbXCJuby12YWxpZGF0ZVwiXVxuICAgIGNvbnN0IGNsZWFuSnNvbiA9IGNsZWFuQW5kVmFsaWRhdGVEYXRhPFQ+KFxuICAgICAgZGF0YSxcbiAgICAgIGNsZWFuZXIsXG4gICAgICBkYXRhQ29udmVydGVyLmZyb21Kc29uLFxuICAgICAgZGF0YUNvbnZlcnRlci50b0pzb24sXG4gICAgICB2YWxpZGF0ZURhdGEsXG4gICAgKVxuICAgIGNvbnN0IGNsZWFuRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldENsZWFuRGlyLCAuLi5maWxlUGF0aEFycmF5KVxuICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKGNsZWFuRmlsZVBhdGgpKVxuICAgIGZzLndyaXRlRmlsZVN5bmMoY2xlYW5GaWxlUGF0aCwgY2xlYW5Kc29uLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIGNsZWFuUmVvcmdhbml6ZWREYXRhKG9wdGlvbnM6IGFueSk6IG51bWJlciB7XG4gIGNvbnN0IGRhdGFEaXI6IHN0cmluZyA9IG9wdGlvbnMuZGF0YURpclxuICBEYXRlLnByb3RvdHlwZS50b0pTT04gPSBwYXRjaGVkRGF0ZVRvSnNvblxuICBsZXQgZXhpdENvZGUgPSBvcHRpb25zLmNvbW1pdCA/IDEwIDogMFxuICBjb25zdCBnaXRHcm91cFVybCA9IG9wdGlvbnMuY2xvbmU/LnRyaW0oKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpXG4gIGNvbnN0IGVuYWJsZWREYXRhc2V0cyA9IGdldEVuYWJsZWREYXRhc2V0cyhvcHRpb25zLmNhdGVnb3JpZXMpXG4gIGxldCBjaG9zZW5EYXRhc2V0cyA9IGZpbHRlckJ5TGVnaXNsYXR1cmUoZGF0YXNldHMsIG9wdGlvbnMubGVnaXNsYXR1cmUpXG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcblxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBpZiAob3B0aW9ucy5wdWxsKSB7XG4gICAgICAgIGdpdC5yZXNldEFuZFB1bGwoZGF0YXNldENsZWFuRGlyKVxuICAgICAgfVxuXG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgcHJvY2Vzc0ZpbGVzPEFjdGV1cj4oXG4gICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgW1wiYWN0ZXVyc1wiXSxcbiAgICAgICAgY2xlYW5BY3RldXIsXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXIsXG4gICAgICAgICAgdG9Kc29uOiBBY3RldXJzRXRPcmdhbmVzQ29udmVydC5hY3RldXJUb0pzb24sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApXG4gICAgICBwcm9jZXNzRmlsZXM8T3JnYW5lPihcbiAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICBbXCJvcmdhbmVzXCJdLFxuICAgICAgICBjbGVhbk9yZ2FuZSxcbiAgICAgICAge1xuICAgICAgICAgIGZyb21Kc29uOiBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b09yZ2FuZSxcbiAgICAgICAgICB0b0pzb246IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0Lm9yZ2FuZVRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcblxuICAgICAgZXhpdENvZGUgPSBjb21taXRHaXQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBleGl0Q29kZSwgW1xuICAgICAgICBcImFjdGV1cnNcIixcbiAgICAgICAgXCJvcmdhbmVzXCIsXG4gICAgICBdKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcblxuICAgICAgcHJvY2Vzc0ZpbGVzPFJldW5pb24+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtdLFxuICAgICAgICBjbGVhblJldW5pb24sXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogQWdlbmRhc0NvbnZlcnQudG9SZXVuaW9uLFxuICAgICAgICAgIHRvSnNvbjogQWdlbmRhc0NvbnZlcnQucmV1bmlvblRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcblxuICAgICAgZXhpdENvZGUgPSBjb21taXRHaXQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBleGl0Q29kZSwgW1wiLlwiXSlcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFtZW5kZW1lbnRzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcblxuICAgICAgcHJvY2Vzc0ZpbGVzPEFtZW5kZW1lbnQ+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtdLFxuICAgICAgICBjbGVhbkFtZW5kZW1lbnQsXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogQW1lbmRlbWVudHNDb252ZXJ0LnRvQW1lbmRlbWVudCxcbiAgICAgICAgICB0b0pzb246IEFtZW5kZW1lbnRzQ29udmVydC5hbWVuZGVtZW50VG9Kc29uLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuXG4gICAgICBleGl0Q29kZSA9IGNvbW1pdEdpdChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIGV4aXRDb2RlLCBbXCIuXCJdKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcblxuICAgICAgcHJvY2Vzc0ZpbGVzPERvY3VtZW50PihcbiAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICBbXCJkb2N1bWVudHNcIl0sXG4gICAgICAgIGNsZWFuRG9jdW1lbnRPckRpdmlzaW9uLFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbUpzb246IERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9jdW1lbnQsXG4gICAgICAgICAgdG9Kc29uOiBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC5kb2N1bWVudFRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcbiAgICAgIHByb2Nlc3NGaWxlczxEb3NzaWVyUGFybGVtZW50YWlyZT4oXG4gICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgW1wiZG9zc2llcnNcIl0sXG4gICAgICAgIGNsZWFuRG9zc2llclBhcmxlbWVudGFpcmUsXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgICAgICAgICB0b0pzb246IERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LmRvc3NpZXJQYXJsZW1lbnRhaXJlVG9Kc29uLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuXG4gICAgICBleGl0Q29kZSA9IGNvbW1pdEdpdChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIGV4aXRDb2RlLCBbXG4gICAgICAgIFwiZG9jdW1lbnRzXCIsXG4gICAgICAgIFwiZG9zc2llcnNcIixcbiAgICAgIF0pXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5TY3J1dGlucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5zY3J1dGlucykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG5cbiAgICAgIHByb2Nlc3NGaWxlczxTY3J1dGluPihcbiAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICBbXSxcbiAgICAgICAgY2xlYW5TY3J1dGluLFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbUpzb246IFNjcnV0aW5zQ29udmVydC50b1NjcnV0aW4sXG4gICAgICAgICAgdG9Kc29uOiBTY3J1dGluc0NvbnZlcnQuc2NydXRpblRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcblxuICAgICAgZXhpdENvZGUgPSBjb21taXRHaXQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBleGl0Q29kZSwgW1wiLlwiXSlcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlF1ZXN0aW9ucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5xdWVzdGlvbnMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuXG4gICAgICBwcm9jZXNzRmlsZXM8UXVlc3Rpb24+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtdLFxuICAgICAgICBjbGVhblF1ZXN0aW9uLFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbUpzb246IFF1ZXN0aW9uc0NvbnZlcnQudG9RdWVzdGlvbixcbiAgICAgICAgICB0b0pzb246IFF1ZXN0aW9uc0NvbnZlcnQucXVlc3Rpb25Ub0pzb24sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApXG5cbiAgICAgIGV4aXRDb2RlID0gY29tbWl0R2l0KGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgZXhpdENvZGUsIFtcIi5cIl0pXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Db21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5jb21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLnhtbFwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcblxuICAgICAgcHJvY2Vzc0ZpbGVzPENvbXB0ZVJlbmR1PihcbiAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICBbXSxcbiAgICAgICAgY2xlYW5Db21wdGVSZW5kdSxcbiAgICAgICAge1xuICAgICAgICAgIGZyb21Kc29uOiBDb21wdGVzUmVuZHVzQ29udmVydC50b0NvbXB0ZVJlbmR1LFxuICAgICAgICAgIHRvSnNvbjogQ29tcHRlc1JlbmR1c0NvbnZlcnQuY29tcHRlUmVuZHVUb0pzb24sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApXG5cbiAgICAgIGV4aXRDb2RlID0gY29tbWl0R2l0KGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgZXhpdENvZGUsIFtcIi5cIl0pXG4gICAgfVxuICB9XG5cbiAgLy8gUmVzdG9yZSBzdGFuZGFyZCBjb252ZXJzaW9uIG9mIGRhdGVzIHRvIEpTT04uXG4gIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IGV4aXN0aW5nRGF0ZVRvSnNvblxuXG4gIHJldHVybiBleGl0Q29kZVxufVxuXG5mdW5jdGlvbiBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lOiBzdHJpbmcsIG9wdGlvbnM6IGFueSk6IGFueSB7XG4gIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgIGNvbnNvbGUubG9nKGBDbGVhbmluZyBkaXJlY3Rvcnk6ICR7ZGF0YXNldENsZWFuRGlyfeKApmApXG4gIH1cbiAgZnMuZW5zdXJlRGlyU3luYyhkYXRhc2V0Q2xlYW5EaXIpXG4gIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGF0YXNldENsZWFuRGlyKSkge1xuICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IHBhdGhuYW1lID0gcGF0aC5qb2luKGRhdGFzZXRDbGVhbkRpciwgZmlsZW5hbWUpXG4gICAgZnMucmVtb3ZlU3luYyhwYXRobmFtZSlcbiAgfVxufVxuXG5mdW5jdGlvbiBjb21taXRBbmRQdXNoVWlkKFxuICByZXBvc2l0b3J5RGlyOiBzdHJpbmcsXG4gIG9wdGlvbnM6IGFueSxcbiAgc3ViZGlyZWN0b3JpZXM6IGFueSxcbik6IGJvb2xlYW4ge1xuICBsZXQgZXJyb3IgPSBmYWxzZVxuICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICBnaXQudWlkQnJhbmNoVXBkYXRlKFxuICAgICAgcmVwb3NpdG9yeURpcixcbiAgICAgIHN1YmRpcmVjdG9yaWVzLFxuICAgICAgb3B0aW9uc1tcIm5vLXJlc2V0LWFmdGVyLWNvbW1pdFwiXSxcbiAgICApXG4gICAgZm9yIChjb25zdCByZW1vdGUgb2Ygb3B0aW9ucy5yZW1vdGUgfHwgW10pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGdpdC5ydW4ocmVwb3NpdG9yeURpciwgYHB1c2ggLS1xdWlldCAke3JlbW90ZX0gdWlkOnVpZGApXG4gICAgICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbiAgICAgICAgZXJyb3IgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBlcnJvclxufVxuXG5mdW5jdGlvbiBtYWluKGFyZ3Y6IGFueSk6IG51bWJlciB7XG4gIGNvbnN0IG9wdGlvbnMgPSBwYXJzZUFyZ3MoYXJndilcbiAgcmV0dXJuIGNsZWFuUmVvcmdhbml6ZWREYXRhKG9wdGlvbnMpXG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHByb2Nlc3MuYXJndlsxXS5lbmRzV2l0aChcImNsZWFuX3Jlb3JnYW5pemVkX2RhdGEudHNcIikpXG4gIHByb2Nlc3MuZXhpdChtYWluKHByb2Nlc3MuYXJndikpXG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFFBQVEsUUFBUSxlQUFlO0FBQ3hDLE9BQU9DLGVBQWUsTUFBTSxtQkFBbUI7QUFDL0MsT0FBT0MsRUFBRSxNQUFNLFVBQVU7QUFDekIsT0FBT0MsSUFBSSxNQUFNLE1BQU07QUFBQSxTQUVyQkMsV0FBVyxFQUNYQyxlQUFlLEVBQ2ZDLHVCQUF1QixFQUN2QkMseUJBQXlCLEVBQ3pCQyxXQUFXLEVBQ1hDLFlBQVksRUFDWkMsWUFBWSxFQUNaQyxhQUFhLEVBQ2JDLGdCQUFnQjtBQUFBLFNBR2hCQyxRQUFRLEVBQ1JDLGVBQWUsRUFDZkMsa0JBQWtCLEVBQ2xCQyxtQkFBbUI7QUFBQSxTQUVaQyxrQkFBa0IsRUFBRUMsaUJBQWlCO0FBQUEsU0FDckNDLE9B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
|
|
261
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kTGluZUFyZ3MiLCJmcyIsInBhdGgiLCJjbGVhbkFjdGV1ciIsImNsZWFuQW1lbmRlbWVudCIsImNsZWFuRG9jdW1lbnRPckRpdmlzaW9uIiwiY2xlYW5Eb3NzaWVyUGFybGVtZW50YWlyZSIsImNsZWFuT3JnYW5lIiwiY2xlYW5SZXVuaW9uIiwiY2xlYW5TY3J1dGluIiwiY2xlYW5RdWVzdGlvbiIsImNsZWFuQ29tcHRlUmVuZHUiLCJkYXRhc2V0cyIsIkVuYWJsZWREYXRhc2V0cyIsImdldEVuYWJsZWREYXRhc2V0cyIsImZpbHRlckJ5TGVnaXNsYXR1cmUiLCJleGlzdGluZ0RhdGVUb0pzb24iLCJwYXRjaGVkRGF0ZVRvSnNvbiIsIndhbGtEaXIiLCJnaXQiLCJDb252ZXJ0IiwiQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQiLCJBZ2VuZGFzQ29udmVydCIsIkFtZW5kZW1lbnRzQ29udmVydCIsIkRvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0IiwiU2NydXRpbnNDb252ZXJ0IiwiUXVlc3Rpb25zQ29udmVydCIsIkNvbXB0ZXNSZW5kdXNDb252ZXJ0IiwiY2xvbmVPcHRpb24iLCJjb21taXRPcHRpb24iLCJyZW1vdGVPcHRpb24iLCJsZWdpc2xhdHVyZU9wdGlvbiIsImNhdGVnb3JpZXNPcHRpb24iLCJkYXRhRGlyRGVmYXVsdE9wdGlvbiIsInNpbGVudE9wdGlvbiIsInZlcmJvc2VPcHRpb24iLCJwdWxsT3B0aW9uIiwicGFyc2VBcmdzIiwiYXJndiIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImFsaWFzIiwiaGVscCIsIm5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwiQm9vbGVhbiIsIm9wdGlvbnMiLCJjbG9uZUdpdCIsImdpdEdyb3VwVXJsIiwiZGF0YXNldE5hbWUiLCJkYXRhRGlyIiwiY2xvbmUiLCJjb21taXRHaXQiLCJkYXRhc2V0Q2xlYW5EaXIiLCJleGl0Q29kZSIsInN1YmRpcmVjdG9yaWVzIiwiY29tbWl0IiwiZXJyb3JDb2RlIiwiY29tbWl0QW5kUHVzaCIsInJlbW90ZSIsImNvbW1pdEFuZFB1c2hVaWQiLCJjbGVhbkFuZFZhbGlkYXRlRGF0YSIsImRhdGEiLCJjbGVhbmVyIiwiZnJvbUpzb24iLCJ0b0pzb24iLCJub1ZhbGlkYXRlIiwianNvbkRhdGEiLCJKU09OIiwic3RyaW5naWZ5IiwidmFsaWRhdGVkRGF0YSIsInByb2Nlc3NGaWxlcyIsImRhdGFzZXRSYXdEaXIiLCJ3YWxrRGlyUGFyYW1zIiwiZGF0YUNvbnZlcnRlciIsImZpbGVQYXRoQXJyYXkiLCJmaWxlbmFtZSIsImxlbmd0aCIsImVuZHNXaXRoIiwicmF3RmlsZVBhdGgiLCJqb2luIiwicmF3SnNvbiIsInJlYWRGaWxlU3luYyIsImVuY29kaW5nIiwidmVyYm9zZSIsImNvbnNvbGUiLCJsb2ciLCJwYXJzZSIsInZhbGlkYXRlRGF0YSIsImNsZWFuSnNvbiIsImNsZWFuRmlsZVBhdGgiLCJlbnN1cmVEaXJTeW5jIiwiZGlybmFtZSIsIndyaXRlRmlsZVN5bmMiLCJjbGVhblJlb3JnYW5pemVkRGF0YSIsIkRhdGUiLCJwcm90b3R5cGUiLCJ0b0pTT04iLCJ0cmltIiwicmVwbGFjZSIsImVuYWJsZWREYXRhc2V0cyIsImNhdGVnb3JpZXMiLCJjaG9zZW5EYXRhc2V0cyIsImxlZ2lzbGF0dXJlIiwiQWN0ZXVyc0V0T3JnYW5lcyIsImRhdGFzZXQiLCJhY3RldXJzRXRPcmdhbmVzIiwiYmFzZW5hbWUiLCJwdWxsIiwicmVzZXRBbmRQdWxsIiwiYW5hbHl6ZUFuZFJlbW92ZSIsInRvQWN0ZXVyIiwiYWN0ZXVyVG9Kc29uIiwidG9PcmdhbmUiLCJvcmdhbmVUb0pzb24iLCJBZ2VuZGFzIiwiYWdlbmRhcyIsInRvUmV1bmlvbiIsInJldW5pb25Ub0pzb24iLCJBbWVuZGVtZW50cyIsImFtZW5kZW1lbnRzIiwidG9BbWVuZGVtZW50IiwiYW1lbmRlbWVudFRvSnNvbiIsIkRvc3NpZXJzTGVnaXNsYXRpZnMiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwidG9Eb2N1bWVudCIsImRvY3VtZW50VG9Kc29uIiwidG9Eb3NzaWVyUGFybGVtZW50YWlyZSIsImRvc3NpZXJQYXJsZW1lbnRhaXJlVG9Kc29uIiwiU2NydXRpbnMiLCJzY3J1dGlucyIsInRvU2NydXRpbiIsInNjcnV0aW5Ub0pzb24iLCJRdWVzdGlvbnMiLCJxdWVzdGlvbnMiLCJ0b1F1ZXN0aW9uIiwicXVlc3Rpb25Ub0pzb24iLCJDb21wdGVzUmVuZHVzU2VhbmNlcyIsImNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwidG9Db21wdGVSZW5kdSIsImNvbXB0ZVJlbmR1VG9Kc29uIiwic2lsZW50IiwicmVhZGRpclN5bmMiLCJwYXRobmFtZSIsInJlbW92ZVN5bmMiLCJyZXBvc2l0b3J5RGlyIiwiZXJyb3IiLCJ1aWRCcmFuY2hVcGRhdGUiLCJydW4iLCJjaGlsZFByb2Nlc3MiLCJtYWluIiwicHJvY2VzcyIsImV4aXQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9jbGVhbl9yZW9yZ2FuaXplZF9kYXRhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IHtcbiAgY2xlYW5BY3RldXIsXG4gIGNsZWFuQW1lbmRlbWVudCxcbiAgY2xlYW5Eb2N1bWVudE9yRGl2aXNpb24sXG4gIGNsZWFuRG9zc2llclBhcmxlbWVudGFpcmUsXG4gIGNsZWFuT3JnYW5lLFxuICBjbGVhblJldW5pb24sXG4gIGNsZWFuU2NydXRpbixcbiAgY2xlYW5RdWVzdGlvbixcbiAgY2xlYW5Db21wdGVSZW5kdSxcbn0gZnJvbSBcIi4uL2NsZWFuZXJzXCJcbmltcG9ydCB7XG4gIGRhdGFzZXRzLFxuICBFbmFibGVkRGF0YXNldHMsXG4gIGdldEVuYWJsZWREYXRhc2V0cyxcbiAgZmlsdGVyQnlMZWdpc2xhdHVyZSxcbn0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IGV4aXN0aW5nRGF0ZVRvSnNvbiwgcGF0Y2hlZERhdGVUb0pzb24gfSBmcm9tIFwiLi4vZGF0ZXNcIlxuaW1wb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0ICogYXMgZ2l0IGZyb20gXCIuLi9naXRcIlxuaW1wb3J0IHtcbiAgQWN0ZXVyLFxuICBDb252ZXJ0IGFzIEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LFxuICBPcmdhbmUsXG59IGZyb20gXCIuLi90eXBlcy9hY3RldXJzX2V0X29yZ2FuZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBZ2VuZGFzQ29udmVydCwgUmV1bmlvbiB9IGZyb20gXCIuLi90eXBlcy9hZ2VuZGFzXCJcbmltcG9ydCB7IEFtZW5kZW1lbnQsIENvbnZlcnQgYXMgQW1lbmRlbWVudHNDb252ZXJ0IH0gZnJvbSBcIi4uL3R5cGVzL2FtZW5kZW1lbnRzXCJcbmltcG9ydCB7XG4gIENvbnZlcnQgYXMgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQsXG4gIERvY3VtZW50LFxuICBEb3NzaWVyUGFybGVtZW50YWlyZSxcbn0gZnJvbSBcIi4uL3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgU2NydXRpbnNDb252ZXJ0LCBTY3J1dGluIH0gZnJvbSBcIi4uL3R5cGVzL3NjcnV0aW5zXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgUXVlc3Rpb25zQ29udmVydCwgUXVlc3Rpb24gfSBmcm9tIFwiLi4vdHlwZXMvcXVlc3Rpb25zXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQ29tcHRlc1JlbmR1c0NvbnZlcnQsIENvbXB0ZVJlbmR1IH0gZnJvbSBcIi4uL3R5cGVzL2RlYmF0c1wiXG5pbXBvcnQge1xuICBjbG9uZU9wdGlvbixcbiAgY29tbWl0T3B0aW9uLFxuICByZW1vdGVPcHRpb24sXG4gIGxlZ2lzbGF0dXJlT3B0aW9uLFxuICBjYXRlZ29yaWVzT3B0aW9uLFxuICBkYXRhRGlyRGVmYXVsdE9wdGlvbixcbiAgc2lsZW50T3B0aW9uLFxuICB2ZXJib3NlT3B0aW9uLFxuICBwdWxsT3B0aW9uLFxufSBmcm9tIFwiLi9zaGFyZWQvY2xpX2hlbHBlcnNcIlxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MoYXJndjogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gICAgY2xvbmVPcHRpb24sXG4gICAgY29tbWl0T3B0aW9uLFxuICAgIHJlbW90ZU9wdGlvbixcbiAgICBsZWdpc2xhdHVyZU9wdGlvbixcbiAgICBjYXRlZ29yaWVzT3B0aW9uLFxuICAgIHNpbGVudE9wdGlvbixcbiAgICB2ZXJib3NlT3B0aW9uLFxuICAgIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxuICAgIHB1bGxPcHRpb24sXG4gICAge1xuICAgICAgYWxpYXM6IFwiZFwiLFxuICAgICAgaGVscDogXCJzaW5nbGUgZGF0YXNldCB0byByZW9yZ2FuaXplXCIsXG4gICAgICBuYW1lOiBcImRhdGFzZXRcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlbHA6IFwiZG8gbm90IHJlc2V0IC0taGFyZCBhZnRlciBjb21taXQgdG8gc2F2ZSBJL08gaWYgdGhlIHdvcmtpbmcgdHJlZSBpcyB0byBiZSBkaXNjYXJkZWRcIixcbiAgICAgIG5hbWU6IFwibm8tcmVzZXQtYWZ0ZXItY29tbWl0XCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwiVlwiLFxuICAgICAgaGVscDogXCJkb24ndCB2YWxpZGF0ZSBkYXRhXCIsXG4gICAgICBuYW1lOiBcIm5vLXZhbGlkYXRlXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMsIHtcbiAgICBhcmd2OiBhcmd2LFxuICB9KVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG5mdW5jdGlvbiBjbG9uZUdpdChcbiAgZ2l0R3JvdXBVcmw6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgZGF0YXNldE5hbWU6IHN0cmluZyxcbiAgZGF0YURpcjogc3RyaW5nLFxuKTogdm9pZCB7XG4gIGdpdC5jbG9uZShnaXRHcm91cFVybCwgYCR7ZGF0YXNldE5hbWV9X25ldHRveWVgLCBkYXRhRGlyKVxufVxuXG5mdW5jdGlvbiBjb21taXRHaXQoXG4gIGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nLFxuICBvcHRpb25zOiBhbnksXG4gIGV4aXRDb2RlOiBudW1iZXIsXG4gIHN1YmRpcmVjdG9yaWVzOiBhbnksXG4pOiBudW1iZXIge1xuICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgKVxuICAgIGlmIChcbiAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICApIHtcbiAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgfVxuICB9XG4gIGlmIChcbiAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgc3ViZGlyZWN0b3JpZXMpICYmXG4gICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgKSB7XG4gICAgZXhpdENvZGUgPSAxXG4gIH1cbiAgcmV0dXJuIGV4aXRDb2RlXG59XG5cbmZ1bmN0aW9uIGNsZWFuQW5kVmFsaWRhdGVEYXRhPFQ+KFxuICBkYXRhOiBhbnksXG4gIGNsZWFuZXI6IChkYXRhOiBUKSA9PiB2b2lkLFxuICBmcm9tSnNvbjogKGpzb246IHN0cmluZykgPT4gVCxcbiAgdG9Kc29uOiAoZGF0YTogVCkgPT4gc3RyaW5nLFxuICBub1ZhbGlkYXRlOiBCb29sZWFuLFxuKTogc3RyaW5nIHtcbiAgY2xlYW5lcihkYXRhKVxuICBjb25zdCBqc29uRGF0YSA9IEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDIpXG4gIGlmICghbm9WYWxpZGF0ZSkge1xuICAgIHJldHVybiBqc29uRGF0YVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IHZhbGlkYXRlZERhdGE6IFQgPSBmcm9tSnNvbihqc29uRGF0YSlcbiAgICByZXR1cm4gdG9Kc29uKHZhbGlkYXRlZERhdGEpXG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0ZpbGVzPFQ+KFxuICBkYXRhc2V0UmF3RGlyOiBzdHJpbmcsXG4gIGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nLFxuICB3YWxrRGlyUGFyYW1zOiBhbnlbXSxcbiAgY2xlYW5lcjogYW55LFxuICBkYXRhQ29udmVydGVyOiB7IGZyb21Kc29uOiBhbnk7IHRvSnNvbjogYW55IH0sXG4gIG9wdGlvbnM6IGFueSxcbik6IHZvaWQge1xuICBmb3IgKGNvbnN0IGZpbGVQYXRoQXJyYXkgb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyLCB3YWxrRGlyUGFyYW1zKSkge1xuICAgIGNvbnN0IGZpbGVuYW1lID0gZmlsZVBhdGhBcnJheVtmaWxlUGF0aEFycmF5Lmxlbmd0aCAtIDFdXG4gICAgaWYgKCFmaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSBjb250aW51ZVxuICAgIGNvbnN0IHJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXRSYXdEaXIsIC4uLmZpbGVQYXRoQXJyYXkpXG4gICAgY29uc3QgcmF3SnNvbiA9IGZzLnJlYWRGaWxlU3luYyhyYXdGaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICBpZiAob3B0aW9ucy52ZXJib3NlKSBjb25zb2xlLmxvZyhgQ2xlYW5pbmcgZmlsZTogJHtyYXdGaWxlUGF0aH0uLi5gKVxuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKHJhd0pzb24pXG4gICAgY29uc3QgdmFsaWRhdGVEYXRhID0gIW9wdGlvbnNbXCJuby12YWxpZGF0ZVwiXVxuICAgIGNvbnN0IGNsZWFuSnNvbiA9IGNsZWFuQW5kVmFsaWRhdGVEYXRhPFQ+KFxuICAgICAgZGF0YSxcbiAgICAgIGNsZWFuZXIsXG4gICAgICBkYXRhQ29udmVydGVyLmZyb21Kc29uLFxuICAgICAgZGF0YUNvbnZlcnRlci50b0pzb24sXG4gICAgICB2YWxpZGF0ZURhdGEsXG4gICAgKVxuICAgIGNvbnN0IGNsZWFuRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldENsZWFuRGlyLCAuLi5maWxlUGF0aEFycmF5KVxuICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKGNsZWFuRmlsZVBhdGgpKVxuICAgIGZzLndyaXRlRmlsZVN5bmMoY2xlYW5GaWxlUGF0aCwgY2xlYW5Kc29uLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIGNsZWFuUmVvcmdhbml6ZWREYXRhKG9wdGlvbnM6IGFueSk6IG51bWJlciB7XG4gIGNvbnN0IGRhdGFEaXI6IHN0cmluZyA9IG9wdGlvbnMuZGF0YURpclxuICBEYXRlLnByb3RvdHlwZS50b0pTT04gPSBwYXRjaGVkRGF0ZVRvSnNvblxuICBsZXQgZXhpdENvZGUgPSBvcHRpb25zLmNvbW1pdCA/IDEwIDogMFxuICBjb25zdCBnaXRHcm91cFVybCA9IG9wdGlvbnMuY2xvbmU/LnRyaW0oKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpXG4gIGNvbnN0IGVuYWJsZWREYXRhc2V0cyA9IGdldEVuYWJsZWREYXRhc2V0cyhvcHRpb25zLmNhdGVnb3JpZXMpXG4gIGxldCBjaG9zZW5EYXRhc2V0cyA9IGZpbHRlckJ5TGVnaXNsYXR1cmUoZGF0YXNldHMsIG9wdGlvbnMubGVnaXNsYXR1cmUpXG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcblxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBpZiAob3B0aW9ucy5wdWxsKSB7XG4gICAgICAgIGdpdC5yZXNldEFuZFB1bGwoZGF0YXNldENsZWFuRGlyKVxuICAgICAgfVxuXG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgcHJvY2Vzc0ZpbGVzPEFjdGV1cj4oXG4gICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgW1wiYWN0ZXVyc1wiXSxcbiAgICAgICAgY2xlYW5BY3RldXIsXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXIsXG4gICAgICAgICAgdG9Kc29uOiBBY3RldXJzRXRPcmdhbmVzQ29udmVydC5hY3RldXJUb0pzb24sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApXG4gICAgICBwcm9jZXNzRmlsZXM8T3JnYW5lPihcbiAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICBbXCJvcmdhbmVzXCJdLFxuICAgICAgICBjbGVhbk9yZ2FuZSxcbiAgICAgICAge1xuICAgICAgICAgIGZyb21Kc29uOiBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b09yZ2FuZSxcbiAgICAgICAgICB0b0pzb246IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0Lm9yZ2FuZVRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcblxuICAgICAgZXhpdENvZGUgPSBjb21taXRHaXQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBleGl0Q29kZSwgW1xuICAgICAgICBcImFjdGV1cnNcIixcbiAgICAgICAgXCJvcmdhbmVzXCIsXG4gICAgICBdKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcblxuICAgICAgcHJvY2Vzc0ZpbGVzPFJldW5pb24+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtdLFxuICAgICAgICBjbGVhblJldW5pb24sXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogQWdlbmRhc0NvbnZlcnQudG9SZXVuaW9uLFxuICAgICAgICAgIHRvSnNvbjogQWdlbmRhc0NvbnZlcnQucmV1bmlvblRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcblxuICAgICAgZXhpdENvZGUgPSBjb21taXRHaXQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBleGl0Q29kZSwgW1wiLlwiXSlcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFtZW5kZW1lbnRzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcblxuICAgICAgcHJvY2Vzc0ZpbGVzPEFtZW5kZW1lbnQ+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtdLFxuICAgICAgICBjbGVhbkFtZW5kZW1lbnQsXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogQW1lbmRlbWVudHNDb252ZXJ0LnRvQW1lbmRlbWVudCxcbiAgICAgICAgICB0b0pzb246IEFtZW5kZW1lbnRzQ29udmVydC5hbWVuZGVtZW50VG9Kc29uLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuXG4gICAgICBleGl0Q29kZSA9IGNvbW1pdEdpdChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIGV4aXRDb2RlLCBbXCIuXCJdKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcblxuICAgICAgcHJvY2Vzc0ZpbGVzPERvY3VtZW50PihcbiAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICBbXCJkb2N1bWVudHNcIl0sXG4gICAgICAgIGNsZWFuRG9jdW1lbnRPckRpdmlzaW9uLFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbUpzb246IERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9jdW1lbnQsXG4gICAgICAgICAgdG9Kc29uOiBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC5kb2N1bWVudFRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcbiAgICAgIHByb2Nlc3NGaWxlczxEb3NzaWVyUGFybGVtZW50YWlyZT4oXG4gICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgW1wiZG9zc2llcnNcIl0sXG4gICAgICAgIGNsZWFuRG9zc2llclBhcmxlbWVudGFpcmUsXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgICAgICAgICB0b0pzb246IERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LmRvc3NpZXJQYXJsZW1lbnRhaXJlVG9Kc29uLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuXG4gICAgICBleGl0Q29kZSA9IGNvbW1pdEdpdChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIGV4aXRDb2RlLCBbXG4gICAgICAgIFwiZG9jdW1lbnRzXCIsXG4gICAgICAgIFwiZG9zc2llcnNcIixcbiAgICAgIF0pXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5TY3J1dGlucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5zY3J1dGlucykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG5cbiAgICAgIHByb2Nlc3NGaWxlczxTY3J1dGluPihcbiAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICBbXSxcbiAgICAgICAgY2xlYW5TY3J1dGluLFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbUpzb246IFNjcnV0aW5zQ29udmVydC50b1NjcnV0aW4sXG4gICAgICAgICAgdG9Kc29uOiBTY3J1dGluc0NvbnZlcnQuc2NydXRpblRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcblxuICAgICAgZXhpdENvZGUgPSBjb21taXRHaXQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBleGl0Q29kZSwgW1wiLlwiXSlcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlF1ZXN0aW9ucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5xdWVzdGlvbnMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuXG4gICAgICBwcm9jZXNzRmlsZXM8UXVlc3Rpb24+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtdLFxuICAgICAgICBjbGVhblF1ZXN0aW9uLFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbUpzb246IFF1ZXN0aW9uc0NvbnZlcnQudG9RdWVzdGlvbixcbiAgICAgICAgICB0b0pzb246IFF1ZXN0aW9uc0NvbnZlcnQucXVlc3Rpb25Ub0pzb24sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApXG5cbiAgICAgIGV4aXRDb2RlID0gY29tbWl0R2l0KGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgZXhpdENvZGUsIFtcIi5cIl0pXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Db21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5jb21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLnhtbFwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcblxuICAgICAgcHJvY2Vzc0ZpbGVzPENvbXB0ZVJlbmR1PihcbiAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICBbXSxcbiAgICAgICAgY2xlYW5Db21wdGVSZW5kdSxcbiAgICAgICAge1xuICAgICAgICAgIGZyb21Kc29uOiBDb21wdGVzUmVuZHVzQ29udmVydC50b0NvbXB0ZVJlbmR1LFxuICAgICAgICAgIHRvSnNvbjogQ29tcHRlc1JlbmR1c0NvbnZlcnQuY29tcHRlUmVuZHVUb0pzb24sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApXG5cbiAgICAgIGV4aXRDb2RlID0gY29tbWl0R2l0KGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgZXhpdENvZGUsIFtcIi5cIl0pXG4gICAgfVxuICB9XG5cbiAgLy8gUmVzdG9yZSBzdGFuZGFyZCBjb252ZXJzaW9uIG9mIGRhdGVzIHRvIEpTT04uXG4gIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IGV4aXN0aW5nRGF0ZVRvSnNvblxuXG4gIHJldHVybiBleGl0Q29kZVxufVxuXG5mdW5jdGlvbiBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lOiBzdHJpbmcsIG9wdGlvbnM6IGFueSk6IGFueSB7XG4gIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgIGNvbnNvbGUubG9nKGBDbGVhbmluZyBkaXJlY3Rvcnk6ICR7ZGF0YXNldENsZWFuRGlyfeKApmApXG4gIH1cbiAgZnMuZW5zdXJlRGlyU3luYyhkYXRhc2V0Q2xlYW5EaXIpXG4gIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGF0YXNldENsZWFuRGlyKSkge1xuICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IHBhdGhuYW1lID0gcGF0aC5qb2luKGRhdGFzZXRDbGVhbkRpciwgZmlsZW5hbWUpXG4gICAgZnMucmVtb3ZlU3luYyhwYXRobmFtZSlcbiAgfVxufVxuXG5mdW5jdGlvbiBjb21taXRBbmRQdXNoVWlkKFxuICByZXBvc2l0b3J5RGlyOiBzdHJpbmcsXG4gIG9wdGlvbnM6IGFueSxcbiAgc3ViZGlyZWN0b3JpZXM6IGFueSxcbik6IGJvb2xlYW4ge1xuICBsZXQgZXJyb3IgPSBmYWxzZVxuICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICBnaXQudWlkQnJhbmNoVXBkYXRlKFxuICAgICAgcmVwb3NpdG9yeURpcixcbiAgICAgIHN1YmRpcmVjdG9yaWVzLFxuICAgICAgb3B0aW9uc1tcIm5vLXJlc2V0LWFmdGVyLWNvbW1pdFwiXSxcbiAgICApXG4gICAgZm9yIChjb25zdCByZW1vdGUgb2Ygb3B0aW9ucy5yZW1vdGUgfHwgW10pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGdpdC5ydW4ocmVwb3NpdG9yeURpciwgYHB1c2ggLS1xdWlldCAke3JlbW90ZX0gdWlkOnVpZGApXG4gICAgICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbiAgICAgICAgZXJyb3IgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBlcnJvclxufVxuXG5mdW5jdGlvbiBtYWluKGFyZ3Y6IGFueSk6IG51bWJlciB7XG4gIGNvbnN0IG9wdGlvbnMgPSBwYXJzZUFyZ3MoYXJndilcbiAgcmV0dXJuIGNsZWFuUmVvcmdhbml6ZWREYXRhKG9wdGlvbnMpXG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHByb2Nlc3MuYXJndlsxXS5lbmRzV2l0aChcImNsZWFuX3Jlb3JnYW5pemVkX2RhdGEudHNcIikpXG4gIHByb2Nlc3MuZXhpdChtYWluKHByb2Nlc3MuYXJndikpXG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLGVBQWUsTUFBTSxtQkFBbUI7QUFDL0MsT0FBT0MsRUFBRSxNQUFNLFVBQVU7QUFDekIsT0FBT0MsSUFBSSxNQUFNLE1BQU07QUFBQSxTQUVyQkMsV0FBVyxFQUNYQyxlQUFlLEVBQ2ZDLHVCQUF1QixFQUN2QkMseUJBQXlCLEVBQ3pCQyxXQUFXLEVBQ1hDLFlBQVksRUFDWkMsWUFBWSxFQUNaQyxhQUFhLEVBQ2JDLGdCQUFnQjtBQUFBLFNBR2hCQyxRQUFRLEVBQ1JDLGVBQWUsRUFDZkMsa0JBQWtCLEVBQ2xCQyxtQkFBbUI7QUFBQSxTQUVaQyxrQkFBa0IsRUFBRUMsaUJBQWlCO0FBQUEsU0FDckNDLE9BQU87QUFBQSxPQUNULEtBQUtDLEdBQUc7QUFBQSxTQUdiQyxPQUFPLElBQUlDLHVCQUF1QjtBQUFBLFNBRzNCRCxPQUFPLElBQUlFLGNBQWM7QUFBQSxTQUNiRixPQUFPLElBQUlHLGtCQUFrQjtBQUFBLFNBRWhESCxPQUFPLElBQUlJLDBCQUEwQjtBQUFBLFNBSTlCSixPQUFPLElBQUlLLGVBQWU7QUFBQSxTQUMxQkwsT0FBTyxJQUFJTSxnQkFBZ0I7QUFBQSxTQUMzQk4sT0FBTyxJQUFJTyxvQkFBb0I7QUFBQSxTQUV0Q0MsV0FBVyxFQUNYQyxZQUFZLEVBQ1pDLFlBQVksRUFDWkMsaUJBQWlCLEVBQ2pCQyxnQkFBZ0IsRUFD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
|