mxcad-app 1.0.32 → 1.0.34
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/dist/chunks/en-US.js.gz +0 -0
- package/dist/chunks/identificationFrame.js.gz +0 -0
- package/dist/chunks/index10.js.gz +0 -0
- package/dist/chunks/index11.js.gz +0 -0
- package/dist/chunks/index12.js.gz +0 -0
- package/dist/chunks/index18.js.gz +0 -0
- package/dist/chunks/index2.js.gz +0 -0
- package/dist/chunks/index21.js.gz +0 -0
- package/dist/chunks/index25.js.gz +0 -0
- package/dist/chunks/index28.js.gz +0 -0
- package/dist/chunks/index29.js.gz +0 -0
- package/dist/chunks/index30.js.gz +0 -0
- package/dist/chunks/index36.js.gz +0 -0
- package/dist/chunks/index37.js.gz +0 -0
- package/dist/chunks/index38.js.gz +0 -0
- package/dist/chunks/index4.js.gz +0 -0
- package/dist/chunks/index40.js.gz +0 -0
- package/dist/chunks/index41.js.gz +0 -0
- package/dist/chunks/index42.js.gz +0 -0
- package/dist/chunks/index43.js.gz +0 -0
- package/dist/chunks/index5.js.gz +0 -0
- package/dist/chunks/index6.js.gz +0 -0
- package/dist/chunks/index9.js.gz +0 -0
- package/dist/chunks/ko-KR.js.gz +0 -0
- package/dist/chunks/lib.js.gz +0 -0
- package/dist/chunks/mapbox-gl.js.gz +0 -0
- package/dist/chunks/mapbox.js.gz +0 -0
- package/dist/chunks/mxcad.js.gz +0 -0
- package/dist/chunks/mxdraw.js.gz +0 -0
- package/dist/chunks/sandbox.js.gz +0 -0
- package/dist/chunks/zh-TW.js.gz +0 -0
- package/dist/index.cjs.gz +0 -0
- package/dist/index.d.ts +20 -20
- package/dist/index.umd.js.gz +0 -0
- package/dist/mxcad.d.ts +180 -1
- package/dist/mxcadAppAssets/languages/mx-cad-app-vuetify3__1_0_0/messages/en-US.ts +9 -5
- package/dist/mxcadAppAssets/languages/mx-cad-app-vuetify3__1_0_0/messages/idMap.json.gz +0 -0
- package/dist/mxcadAppAssets/languages/mx-cad-app-vuetify3__1_0_0/messages/ko-KR.ts +9 -5
- package/dist/mxcadAppAssets/languages/mx-cad-app-vuetify3__1_0_0/messages/zh-CN.ts +9 -5
- package/dist/mxcadAppAssets/languages/mx-cad-app-vuetify3__1_0_0/messages/zh-TW.ts +9 -5
- package/dist/mxcadAppAssets/languages/pluginIdentifyPattern__1_0_0/messages/en-US.ts +5 -1
- package/dist/mxcadAppAssets/languages/pluginIdentifyPattern__1_0_0/messages/idMap.json.gz +0 -0
- package/dist/mxcadAppAssets/languages/pluginIdentifyPattern__1_0_0/messages/ko-KR.ts +5 -1
- package/dist/mxcadAppAssets/languages/pluginIdentifyPattern__1_0_0/messages/zh-CN.ts +5 -1
- package/dist/mxcadAppAssets/languages/pluginIdentifyPattern__1_0_0/messages/zh-TW.ts +5 -1
- package/dist/mxcadAppAssets/mxcad.umd.js.gz +0 -0
- package/dist/mxcadAppAssets/mxdraw.umd.js.gz +0 -0
- package/dist/mxcadAppAssets/wasm/2d/mxdrawassembly_min.js.gz +0 -0
- package/dist/mxcadAppAssets/wasm/2d/mxdrawassembly_min.wasm.gz +0 -0
- package/dist/mxcadAppAssets/wasm/2d-st/mxdrawassembly_min.js.gz +0 -0
- package/dist/mxcadAppAssets/wasm/2d-st/mxdrawassembly_minst.wasm.gz +0 -0
- package/dist/mxdraw.d.ts +9 -1
- package/dist/styles/style.css.gz +0 -0
- package/packToolPlugin/api-map.json.d.ts +7 -0
- package/packToolPlugin/{index-BjWOMSdo.mjs → index-C-cFEcIk.mjs} +19 -34
- package/packToolPlugin/{index-COZtdG6B.js → index-DRKNKLRx.js} +20 -35
- package/packToolPlugin/rollup/index.cjs +1 -1
- package/packToolPlugin/rollup/index.mjs +1 -1
- package/packToolPlugin/vite/index.cjs +1 -1
- package/packToolPlugin/vite/index.mjs +1 -1
- package/packToolPlugin/webpack/index.cjs +6 -3
- package/packToolPlugin/webpack/index.d.ts.map +1 -1
- package/packToolPlugin/webpack/index.mjs +6 -3
- package/package.json +1 -1
|
@@ -29,6 +29,11 @@ const mxcad = [
|
|
|
29
29
|
"IMxEditorNode",
|
|
30
30
|
"IMxEditorPoint",
|
|
31
31
|
"IRowHeight",
|
|
32
|
+
"ITableData",
|
|
33
|
+
"ITableDimensions",
|
|
34
|
+
"ITablePosition",
|
|
35
|
+
"ITableStyle",
|
|
36
|
+
"IXlsxTableData",
|
|
32
37
|
"IsZero",
|
|
33
38
|
"LineInfo",
|
|
34
39
|
"MLStyle",
|
|
@@ -119,6 +124,7 @@ const mxcad = [
|
|
|
119
124
|
"MxCADUiPrInt",
|
|
120
125
|
"MxCADUiPrKeyWord",
|
|
121
126
|
"MxCADUiPrPoint",
|
|
127
|
+
"MxCADUiPrPointTransform",
|
|
122
128
|
"MxCADUiPrString",
|
|
123
129
|
"MxCADUtility",
|
|
124
130
|
"MxCADUtilityClass",
|
|
@@ -153,6 +159,7 @@ const mxcad = [
|
|
|
153
159
|
"SegmentRelationsData",
|
|
154
160
|
"SequenceFragment",
|
|
155
161
|
"THREEColorArgs",
|
|
162
|
+
"TableRenderDirection",
|
|
156
163
|
"TextFragment",
|
|
157
164
|
"TextSequence",
|
|
158
165
|
"_ML_String",
|
|
@@ -1294,7 +1301,7 @@ function getSourceAssetsPath() {
|
|
|
1294
1301
|
if (typeof __filename !== "undefined") {
|
|
1295
1302
|
currentFile = __filename;
|
|
1296
1303
|
} else {
|
|
1297
|
-
currentFile = url.fileURLToPath(typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === "SCRIPT" && _documentCurrentScript.src || new URL("index-
|
|
1304
|
+
currentFile = url.fileURLToPath(typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === "SCRIPT" && _documentCurrentScript.src || new URL("index-DRKNKLRx.js", document.baseURI).href);
|
|
1298
1305
|
}
|
|
1299
1306
|
const packageRoot = path.resolve(currentFile, "..", "..", "..");
|
|
1300
1307
|
const assetsPath = path.resolve(packageRoot, name, "dist", "mxcadAppAssets");
|
|
@@ -1480,42 +1487,20 @@ function createMxCadAssetsMiddleware(root, options, publicDir, logger) {
|
|
|
1480
1487
|
};
|
|
1481
1488
|
}
|
|
1482
1489
|
function serveFile(filePath, fileName, res, logger) {
|
|
1483
|
-
fs.
|
|
1490
|
+
const stream = fs.createReadStream(filePath);
|
|
1491
|
+
stream.on("error", (err) => {
|
|
1484
1492
|
var _a;
|
|
1485
|
-
if (
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
res.statusCode = 404;
|
|
1489
|
-
return res.end("File not found");
|
|
1490
|
-
}
|
|
1491
|
-
if (err.code === "EACCES") {
|
|
1492
|
-
res.statusCode = 403;
|
|
1493
|
-
return res.end("Access denied");
|
|
1494
|
-
}
|
|
1495
|
-
(_a = logger == null ? void 0 : logger.error) == null ? void 0 : _a.call(logger, `[MxCadAssets] Stat error: ${err.message}`, err);
|
|
1496
|
-
res.statusCode = 500;
|
|
1497
|
-
return res.end("Internal Server Error");
|
|
1498
|
-
}
|
|
1499
|
-
if (!stats.isFile()) {
|
|
1500
|
-
if (!res.headersSent) {
|
|
1501
|
-
res.statusCode = 404;
|
|
1502
|
-
res.end("Not a file");
|
|
1503
|
-
}
|
|
1504
|
-
return;
|
|
1493
|
+
if (res.headersSent) return;
|
|
1494
|
+
if (err.code === "ENOENT" || err.code === "EACCES") {
|
|
1495
|
+
return res.statusCode === 200 ? res.end() : void 0;
|
|
1505
1496
|
}
|
|
1506
|
-
|
|
1507
|
-
res.
|
|
1508
|
-
res.
|
|
1509
|
-
const stream = fs.createReadStream(filePath);
|
|
1510
|
-
stream.on("error", (readErr) => {
|
|
1511
|
-
var _a2;
|
|
1512
|
-
if (res.headersSent) return;
|
|
1513
|
-
(_a2 = logger == null ? void 0 : logger.error) == null ? void 0 : _a2.call(logger, `[MxCadAssets] Read stream error: ${readErr.message}`, readErr);
|
|
1514
|
-
res.statusCode = 500;
|
|
1515
|
-
res.end("Internal Server Error");
|
|
1516
|
-
});
|
|
1517
|
-
stream.pipe(res);
|
|
1497
|
+
(_a = logger == null ? void 0 : logger.error) == null ? void 0 : _a.call(logger, `[MxCadAssets] Read error: ${err.message}`, err);
|
|
1498
|
+
res.statusCode = 500;
|
|
1499
|
+
res.end("Internal Server Error");
|
|
1518
1500
|
});
|
|
1501
|
+
res.setHeader("Content-Type", getContentType(fileName));
|
|
1502
|
+
res.setHeader("X-Content-Type-Options", "nosniff");
|
|
1503
|
+
stream.pipe(res);
|
|
1519
1504
|
}
|
|
1520
1505
|
exports.copyDir = copyDir;
|
|
1521
1506
|
exports.createGlobalUniversalMiddleware = createGlobalUniversalMiddleware;
|
|
@@ -1526,4 +1511,4 @@ exports.getContentType = getContentType;
|
|
|
1526
1511
|
exports.getExternals = getExternals;
|
|
1527
1512
|
exports.getSourceAssetsPath = getSourceAssetsPath;
|
|
1528
1513
|
exports.resolveOptions = resolveOptions;
|
|
1529
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtQ09adGRHNkIuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3BhY2tUb29sUGx1Z2luU3JjL3NoYXJlZC9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJcclxuLy8gcGx1Z2lucy9zaGFyZWQvaW5kZXgudHNcclxuaW1wb3J0IHsgYmFzZW5hbWUsIGpvaW4sIHJlbGF0aXZlLCByZXNvbHZlIH0gZnJvbSAncGF0aCc7XHJcbmltcG9ydCBmcywgeyBOb1BhcmFtQ2FsbGJhY2sgfSBmcm9tICdmcyc7XHJcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICd1cmwnO1xyXG5pbXBvcnQgeyBuYW1lIH0gZnJvbSBcIi4uLy4uL2xpYi9wYWNrYWdlLmpzb25cIlxyXG5cclxuaW1wb3J0IHsgTXhRdWlja0NvbW1hbmQgfSBmcm9tIFwiLi90eXBlcy9teFF1aWNrQ29tbWFuZC5kXCJcclxuaW1wb3J0IHsgTXhTZXJ2ZXJDb25maWcgfSBmcm9tIFwiLi90eXBlcy9teFNlcnZlckNvbmZpZy5kXCJcclxuaW1wb3J0IHsgTXhTa2V0Y2hlc0FuZE5vdGVzVWlDb25maWcgfSBmcm9tIFwiLi90eXBlcy9teFNrZXRjaGVzQW5kTm90ZXNVaUNvbmZpZy5kXCJcclxuaW1wb3J0IHsgTXhVaUNvbmZpZyB9IGZyb20gXCIuL3R5cGVzL214VWlDb25maWcuZFwiXHJcbmltcG9ydCB7IE14Y2FkVWlDb25maWcgfSBmcm9tIFwiLi90eXBlcy9teGNhZFVpQ29uZmlnLmRcIlxyXG5pbXBvcnQgeyBWdWV0aWZ5VGhlbWVDb25maWcgfSBmcm9tIFwiLi90eXBlcy92dWV0aWZ5VGhlbWVDb25maWcuZFwiXHJcbmltcG9ydCBhcGlNYXAgZnJvbSAnLi4vYXBpLW1hcC5qc29uJ1xyXG5leHBvcnQgY29uc3QgZ2V0QXBpTWFwID0gKCkgPT4gYXBpTWFwXHJcbmV4cG9ydCBpbnRlcmZhY2UgTXhQbHVnaW5Db25maWcge1xyXG4gIHBsdWdpbnM6IChzdHJpbmcgfCB7XHJcbiAgICBuYW1lPzogc3RyaW5nLFxyXG4gICAgaXNBZnRlckxvYWQ/OiBib29sZWFuLFxyXG4gICAgZGlyPzogYm9vbGVhbixcclxuICAgIHZlcnNpb24/OiBzdHJpbmdcclxuICB9KVtdXHJcbn1cclxuLy8gPT09IOaWsOWinu+8mumFjee9ruaWh+S7tuWQjeW4uOmHjyA9PT1cclxuZXhwb3J0IGNvbnN0IENPTkZJR19GSUxFTkFNRVMgPSBbXHJcbiAgLy8gJ214Y2FkVWlDb25maWcuanNvbicsXHJcbiAgJ214UXVpY2tDb21tYW5kLmpzb24nLFxyXG4gICdteFNlcnZlckNvbmZpZy5qc29uJyxcclxuICAnbXhTa2V0Y2hlc0FuZE5vdGVzVWlDb25maWcuanNvbicsXHJcbiAgJ214VWlDb25maWcuanNvbicsXHJcbiAgJ3Z1ZXRpZnlUaGVtZUNvbmZpZy5qc29uJyxcclxuICAvLyAncGx1Z2lucy9jb25maWcuanNvbidcclxuXSBhcyBjb25zdDtcclxuLyoqXHJcbiAqIOmFjee9ruaWh+S7tuWkhOeQhuWZqFxyXG4gKiDlj6/pgInvvJrlr7nnibnlrprphY3nva7mlofku7bov5vooYzov5DooYzml7bkv67mlLlcclxuICog5Ye95pWw5o6l5pS25Y6f5aeLIEpTT04g5pWw5o2u77yM6L+U5Zue5L+u5pS55ZCO55qEIEpTT04g5pWw5o2u77yI5Y+v5byC5q2l77yJXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZm9ybUZ1bmN0aW9ucyB7XHJcbiAgLy8gdHJhbnNmb3JtTXhjYWRVaUNvbmZpZyhkYXRhOiBNeGNhZFVpQ29uZmlnKTogUHJvbWlzZTxNeGNhZFVpQ29uZmlnPiB8IE14Y2FkVWlDb25maWc7XHJcbiAgdHJhbnNmb3JtTXhRdWlja0NvbW1hbmQoZGF0YTogTXhRdWlja0NvbW1hbmQpOiBQcm9taXNlPE14UXVpY2tDb21tYW5kPiB8IE14UXVpY2tDb21tYW5kO1xyXG4gIHRyYW5zZm9ybU14U2VydmVyQ29uZmlnKGRhdGE6IE14U2VydmVyQ29uZmlnKTogUHJvbWlzZTxNeFNlcnZlckNvbmZpZz4gfCBNeFNlcnZlckNvbmZpZztcclxuICB0cmFuc2Zvcm1NeFNrZXRjaGVzQW5kTm90ZXNVaUNvbmZpZyhkYXRhOiBNeFNrZXRjaGVzQW5kTm90ZXNVaUNvbmZpZyk6IFByb21pc2U8TXhTa2V0Y2hlc0FuZE5vdGVzVWlDb25maWc+IHwgTXhTa2V0Y2hlc0FuZE5vdGVzVWlDb25maWc7XHJcbiAgdHJhbnNmb3JtTXhVaUNvbmZpZyhkYXRhOiBNeFVpQ29uZmlnKTogUHJvbWlzZTxNeFVpQ29uZmlnPiB8IE14VWlDb25maWc7XHJcbiAgdHJhbnNmb3JtVnVldGlmeVRoZW1lQ29uZmlnKGRhdGE6IFZ1ZXRpZnlUaGVtZUNvbmZpZyk6IFByb21pc2U8VnVldGlmeVRoZW1lQ29uZmlnPiB8IFZ1ZXRpZnlUaGVtZUNvbmZpZztcclxuICAvLyB0cmFuc2Zvcm1NeFBsdWdpbnNDb25maWcoZGF0YTogTXhQbHVnaW5Db25maWdbXSk6IFByb21pc2U8TXhQbHVnaW5Db25maWdbXT4gfCBNeFBsdWdpbkNvbmZpZ1tdO1xyXG59XHJcbi8vIOaJqeWxleaPkuS7tumAiemhueaOpeWPoyA9PT1cclxuZXhwb3J0IGludGVyZmFjZSBNeENhZEFzc2V0c1BsdWdpbk9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPFRyYW5zZm9ybUZ1bmN0aW9ucz4ge1xyXG4gIC8qKlxyXG4gICAqIOaehOW7uuWQju+8jG14Y2FkQXBwQXNzZXRzIOi1hOa6kOWtmOaUvueahOWtkOebruW9leWQjeOAglxyXG4gICAqIEBkZWZhdWx0ICdteGNhZEFwcEFzc2V0cydcclxuICAgKi9cclxuICBvdXRwdXREaXI/OiBzdHJpbmc7XHJcbiAgLyoqIOesrOS4ieaWueS+nei1liovXHJcbiAgbGlicmFyeU5hbWVzPzogKGtleW9mIHR5cGVvZiBleHRlcm5hbHMpW107XHJcbiAgLyoqIOaYr+WQpuWNlee6v+eoi+WKoOi9vXdhc20gKOm7mOiupOS9v+eUqOWkmue6v+eoi+WPiuWKoOi9vSkgKi9cclxuICBpc1dhc21TdD86IGJvb2xlYW47XHJcbiAgIC8qKlxyXG4gICAqIOaYr+WQpuWQr+eUqOmihOWOi+e8qei1hOa6kO+8iOWmgiAuZ3og5paH5Lu277yJ55qE5ou36LSdIOm7mOiupOaYr3RydWVcclxuICAgKiDorr7nva7kuLogZmFsc2Ug5pe277yMLmd6IOWOi+e8qeaWh+S7tuWwhuS4jeS8muiiq+WkjeWItuWIsOi+k+WHuuebruW9lVxyXG4gICAqIEBkZWZhdWx0IHRydWVcclxuICAgKi9cclxuICBlbmFibGVDb21wcmVzc2VkQXNzZXRzPzogYm9vbGVhbjtcclxufVxyXG5cclxuXHJcbi8vID09PSDlop7lvLrvvJpyZXNvbHZlT3B0aW9ucyDpu5jorqTlgLwgPT09XHJcbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlT3B0aW9ucyhvcHRpb25zOiBNeENhZEFzc2V0c1BsdWdpbk9wdGlvbnMgPSB7fSk6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz4ge1xyXG4gIGNvbnN0IHJlc29sdmVkOiBSZXF1aXJlZDxNeENhZEFzc2V0c1BsdWdpbk9wdGlvbnM+ID0ge1xyXG4gICAgb3V0cHV0RGlyOiBvcHRpb25zLm91dHB1dERpciB8fCAnbXhjYWRBcHBBc3NldHMnLFxyXG4gICAgbGlicmFyeU5hbWVzOiBvcHRpb25zLmxpYnJhcnlOYW1lcyB8fCBbXSxcclxuICAgIGlzV2FzbVN0OiBvcHRpb25zLmlzV2FzbVN0IHx8IGZhbHNlLFxyXG4gICAgZW5hYmxlQ29tcHJlc3NlZEFzc2V0czogb3B0aW9ucy5lbmFibGVDb21wcmVzc2VkQXNzZXRzIHx8IHRydWUsXHJcbiAgICAvLyB0cmFuc2Zvcm1NeGNhZFVpQ29uZmlnOiBvcHRpb25zLnRyYW5zZm9ybU14Y2FkVWlDb25maWcgfHwgKChkKSA9PiBkKSxcclxuICAgIHRyYW5zZm9ybU14UXVpY2tDb21tYW5kOiBvcHRpb25zLnRyYW5zZm9ybU14UXVpY2tDb21tYW5kIHx8ICgoZCkgPT4gZCksXHJcbiAgICB0cmFuc2Zvcm1NeFNlcnZlckNvbmZpZzogb3B0aW9ucy50cmFuc2Zvcm1NeFNlcnZlckNvbmZpZyB8fCAoKGQpID0+IGQpLFxyXG4gICAgdHJhbnNmb3JtTXhTa2V0Y2hlc0FuZE5vdGVzVWlDb25maWc6IG9wdGlvbnMudHJhbnNmb3JtTXhTa2V0Y2hlc0FuZE5vdGVzVWlDb25maWcgfHwgKChkKSA9PiBkKSxcclxuICAgIHRyYW5zZm9ybU14VWlDb25maWc6IG9wdGlvbnMudHJhbnNmb3JtTXhVaUNvbmZpZyB8fCAoKGQpID0+IGQpLFxyXG4gICAgdHJhbnNmb3JtVnVldGlmeVRoZW1lQ29uZmlnOiBvcHRpb25zLnRyYW5zZm9ybVZ1ZXRpZnlUaGVtZUNvbmZpZyB8fCAoKGQpID0+IGQpLFxyXG4gICAgLy8gdHJhbnNmb3JtTXhQbHVnaW5zQ29uZmlnOiBvcHRpb25zLnRyYW5zZm9ybU14UGx1Z2luc0NvbmZpZyB8fCAoKGQpID0+IGQpLFxyXG4gIH07XHJcbiAgcmV0dXJuIHJlc29sdmVkO1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRQYXRoUmVzdWx0IHtcclxuICBzdWNjZXNzOiBib29sZWFuO1xyXG4gIGZpbGVQYXRoPzogc3RyaW5nOyAgICAgICAgIC8vIOW3siByZXNvbHZlIOeahOWuieWFqOaWh+S7tui3r+W+hFxyXG4gIHVybFBhdGg/OiBzdHJpbmc7ICAgICAgICAgIC8vIOino+eggeWQjueahCBVUkwg6Lev5b6E77yI5LiN5ZCrIHF1ZXJ577yJXHJcbiAgZmlsZU5hbWU/OiBzdHJpbmc7ICAgICAgICAgLy8g5paH5Lu25ZCN77yIYmFzZW5hbWXvvIlcclxuICBzdGF0dXNDb2RlPzogbnVtYmVyO1xyXG4gIG1lc3NhZ2U/OiBzdHJpbmc7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICog5a6J5YWo6Kej5p6Q5bm26aqM6K+B6K+35rGC6Lev5b6EXHJcbiAqIEBwYXJhbSByZXFVcmwg6K+35rGC55qEIFVSTO+8iOWmgiAnL2Fzc2V0cy9teFNlcnZlckNvbmZpZy5qc29uP3Y9MSfvvIlcclxuICogQHBhcmFtIHJvb3Qg5pys5Zyw5qC555uu5b2V77yI5aaCICdEOi9wcm9qZWN0L2Rpc3QvbXhjYWQn77yJXHJcbiAqIEBwYXJhbSBiYXNlUGF0aCDlj6/pgInnmoTln7rnoYDot6/lvoTliY3nvIDvvIjlpoIgJy9teGNhZC8n77yM55So5LqOIFZpdGXvvIlcclxuICogQHJldHVybnMg6Kej5p6Q57uT5p6c5oiW6ZSZ6K+vXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVNhZmVQYXRoKFxyXG4gIHJlcVVybDogc3RyaW5nLFxyXG4gIHJvb3Q6IHN0cmluZyxcclxuICBiYXNlUGF0aD86IHN0cmluZ1xyXG4pOiBQYXJzZWRQYXRoUmVzdWx0IHtcclxuICAvLyAxLiDln7rmnKzmoKHpqoxcclxuICBpZiAoIXJlcVVybCB8fCB0eXBlb2YgcmVxVXJsICE9PSAnc3RyaW5nJykge1xyXG4gICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIHN0YXR1c0NvZGU6IDQwMCwgbWVzc2FnZTogJ0JhZCBSZXF1ZXN0JyB9O1xyXG4gIH1cclxuXHJcbiAgLy8gMi4g5o+Q5Y+W6Lev5b6E77yI5Y67IHF1ZXJ5IOWSjCBoYXNo77yJXHJcbiAgbGV0IHVybFBhdGggPSByZXFVcmwuc3BsaXQoJz8nKVswXS5zcGxpdCgnIycpWzBdO1xyXG5cclxuICAvLyAzLiDop6PnoIEgVVJMXHJcbiAgbGV0IGRlY29kZWRQYXRoOiBzdHJpbmc7XHJcbiAgdHJ5IHtcclxuICAgIGRlY29kZWRQYXRoID0gZGVjb2RlVVJJQ29tcG9uZW50KHVybFBhdGgpO1xyXG4gICAgLy8g6Ziy5q2iIG51bGwg5a2X6IqC5pS75Ye7XHJcbiAgICBpZiAoZGVjb2RlZFBhdGguaW5jbHVkZXMoJ1xcMCcpKSB7XHJcbiAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBzdGF0dXNDb2RlOiA0MDAsIG1lc3NhZ2U6ICdJbnZhbGlkIFVSTCcgfTtcclxuICAgIH1cclxuICB9IGNhdGNoIChlcnIpIHtcclxuICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBzdGF0dXNDb2RlOiA0MDAsIG1lc3NhZ2U6ICdJbnZhbGlkIFVSTCBlbmNvZGluZycgfTtcclxuICB9XHJcblxyXG4gIC8vIDQuIOWkhOeQhiBiYXNlUGF0aO+8iOWmgiBWaXRlIOeahCBiYXNl77yJXHJcbiAgaWYgKGJhc2VQYXRoICYmIGRlY29kZWRQYXRoLnN0YXJ0c1dpdGgoYmFzZVBhdGgpKSB7XHJcbiAgICBkZWNvZGVkUGF0aCA9IGRlY29kZWRQYXRoLnNsaWNlKGJhc2VQYXRoLmxlbmd0aCk7XHJcbiAgfVxyXG5cclxuICAvLyA1LiDmuIXnkIbot6/lvoTvvJrljrvpmaTlvIDlpLTlpJrkvZnnmoQgL1xyXG4gIC8vIOS+i+Wmgu+8mi8vYXNzZXRzL2ZpbGUuanNvbiAtPiBhc3NldHMvZmlsZS5qc29uXHJcbiAgY29uc3QgY2xlYW5lZFBhdGggPSBkZWNvZGVkUGF0aC5yZXBsYWNlKC9eXFwvKy8sICcnKTtcclxuXHJcbiAgLy8gNi4g5ou85o6l5paH5Lu26Lev5b6EXHJcbiAgY29uc3QgZmlsZVBhdGggPSBqb2luKHJvb3QsIGNsZWFuZWRQYXRoIHx8ICcuJyk7XHJcblxyXG4gIC8vIDcuIOWuieWFqOajgOafpe+8mumYsuatoui3r+W+hOepv+i2ilxyXG4gIGxldCBub3JtYWxpemVkRmlsZTogc3RyaW5nO1xyXG4gIGxldCBub3JtYWxpemVkUm9vdDogc3RyaW5nO1xyXG4gIHRyeSB7XHJcbiAgICBub3JtYWxpemVkRmlsZSA9IHJlc29sdmUoZmlsZVBhdGgpO1xyXG4gICAgbm9ybWFsaXplZFJvb3QgPSByZXNvbHZlKHJvb3QpO1xyXG4gIH0gY2F0Y2ggKGVycikge1xyXG4gICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIHN0YXR1c0NvZGU6IDUwMCwgbWVzc2FnZTogJ1BhdGggcmVzb2x1dGlvbiBmYWlsZWQnIH07XHJcbiAgfVxyXG5cclxuICAvLyDinIUg5YWz6ZSu77ya56Gu5L+dIG5vcm1hbGl6ZWRGaWxlIOWcqCBub3JtYWxpemVkUm9vdCDnm67lvZXkuItcclxuICBjb25zdCBub3JtYWxpemVkRmlsZVN0ciA9IG5vcm1hbGl6ZWRGaWxlLnJlcGxhY2UoL1xcXFwvZywgJy8nKSArICcvJztcclxuICBjb25zdCBub3JtYWxpemVkUm9vdFN0ciA9IG5vcm1hbGl6ZWRSb290LnJlcGxhY2UoL1xcXFwvZywgJy8nKSArICcvJztcclxuXHJcbiAgaWYgKCFub3JtYWxpemVkRmlsZVN0ci5zdGFydHNXaXRoKG5vcm1hbGl6ZWRSb290U3RyKSkge1xyXG4gICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIHN0YXR1c0NvZGU6IDQwMywgbWVzc2FnZTogJ0ZvcmJpZGRlbjogUGF0aCB0cmF2ZXJzYWwgZGV0ZWN0ZWQnIH07XHJcbiAgfVxyXG5cclxuICAvLyA4LiDmj5Dlj5YgZmlsZU5hbWVcclxuICBjb25zdCBwYXRoU2VnbWVudHMgPSBjbGVhbmVkUGF0aC5zcGxpdCgnLycpLmZpbHRlcihCb29sZWFuKTtcclxuICBjb25zdCBmaWxlTmFtZSA9IHBhdGhTZWdtZW50cy5sZW5ndGggPiAwID8gYmFzZW5hbWUocGF0aFNlZ21lbnRzW3BhdGhTZWdtZW50cy5sZW5ndGggLSAxXSkgOiAnJztcclxuXHJcbiAgLy8g4pyFIOaIkOWKn1xyXG4gIHJldHVybiB7XHJcbiAgICBzdWNjZXNzOiB0cnVlLFxyXG4gICAgZmlsZVBhdGg6IG5vcm1hbGl6ZWRGaWxlLFxyXG4gICAgdXJsUGF0aDogZGVjb2RlZFBhdGgsXHJcbiAgICBmaWxlTmFtZSxcclxuICB9O1xyXG59XHJcblxyXG5cclxudHlwZSBDb25maWdGaWxlbmFtZSA9ICh0eXBlb2YgQ09ORklHX0ZJTEVOQU1FUylbbnVtYmVyXTtcclxuZnVuY3Rpb24gaGFuZGxlQ29uZmlnRmlsZShcclxuICBzcmNQYXRoOiBzdHJpbmcsXHJcbiAgZGVzdFBhdGg6IHN0cmluZyxcclxuICBmaWxlbmFtZTogQ29uZmlnRmlsZW5hbWUsXHJcbiAgb3B0aW9uczogUmVxdWlyZWQ8TXhDYWRBc3NldHNQbHVnaW5PcHRpb25zPixcclxuICBjYWxsYmFjazogTm9QYXJhbUNhbGxiYWNrXHJcbikge1xyXG4gIGZzLnJlYWRGaWxlKHNyY1BhdGgsICd1dGYtOCcsIGFzeW5jIChlcnIsIGNvbnRlbnQpID0+IHtcclxuICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBkYXRhID0gY29udGVudC50cmltKCkgPyBKU09OLnBhcnNlKGNvbnRlbnQpIDoge307XHJcblxyXG4gICAgICAvLyDinIUg5q2j56Gu55Sf5oiQIHRyYW5zZm9ybSDlh73mlbDlkI1cclxuICAgICAgY29uc3QgYmFzZU5hbWUgPSBmaWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC9pLCAnJyk7XHJcbiAgICAgIGNvbnN0IHRyYW5zZm9ybUtleSA9IGB0cmFuc2Zvcm0ke3Bhc2NhbENhc2UoYmFzZU5hbWUpfWA7IC8vIOS+i+WmgjogdHJhbnNmb3JtUGx1Z2luc0NvbmZpZyDmiJYgdHJhbnNmb3JtTXhQbHVnaW5zQ29uZmlnXHJcblxyXG4gICAgICBjb25zdCB0cmFuc2Zvcm1GbiA9IChvcHRpb25zIGFzIGFueSlbdHJhbnNmb3JtS2V5XTtcclxuXHJcbiAgICAgIGlmICh0eXBlb2YgdHJhbnNmb3JtRm4gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICBkYXRhID0gYXdhaXQgdHJhbnNmb3JtRm4oZGF0YSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKTtcclxuICAgICAgZnMud3JpdGVGaWxlKGRlc3RQYXRoLCBqc29uLCAndXRmLTgnLCBjYWxsYmFjayk7XHJcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xyXG4gICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG4vKipcclxuICog5aSE55CG6YWN572u5paH5Lu26K+35rGC77ya6K+75Y+WIOKGkiDovazmjaIg4oaSIOi/lOWbnuWTjeW6lFxyXG4gKiDnlKjkuo4gVml0ZS9XZWJwYWNrIGRldiBzZXJ2ZXIg5Lit6Ze05Lu2XHJcbiAqL1xyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlQ29uZmlnUmVxdWVzdChcclxuICBmaWxlUGF0aDogc3RyaW5nLCAgICAgICAgICAgLy8g5bey57uP6aqM6K+B6L+H55qE5a6J5YWo6Lev5b6EXHJcbiAgZmlsZU5hbWU6IHN0cmluZywgICAgICAgICAgIC8vIOaWh+S7tuWQje+8jOWmgiAnbXhTZXJ2ZXJDb25maWcuanNvbidcclxuICBvcHRpb25zOiBSZXF1aXJlZDxNeENhZEFzc2V0c1BsdWdpbk9wdGlvbnM+LFxyXG4gIHJlczogYW55LFxyXG4gIGxvZ2dlcj86IHsgaW5mbz86IChtc2c6IHN0cmluZykgPT4gdm9pZDsgZXJyb3I/OiAobXNnOiBzdHJpbmcpID0+IHZvaWQgfVxyXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAvLyDku4XlpITnkIbnmb3lkI3ljZXlhoXnmoTmlofku7ZcclxuICBpZiAoIShDT05GSUdfRklMRU5BTUVTIGFzIHVua25vd24gYXMgc3RyaW5nKS5pbmNsdWRlcyhmaWxlTmFtZSkpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHRyeSB7XHJcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgZnMucHJvbWlzZXMucmVhZEZpbGUoZmlsZVBhdGgsICd1dGYtOCcpO1xyXG4gICAgbGV0IGRhdGEgPSBjb250ZW50LnRyaW0oKSA/IEpTT04ucGFyc2UoY29udGVudCkgOiB7fTtcclxuXHJcbiAgICBjb25zdCB0cmFuc2Zvcm1LZXkgPSBgdHJhbnNmb3JtJHtwYXNjYWxDYXNlKGZpbGVOYW1lLnJlcGxhY2UoL1xcLmpzb24kL2ksICcnKSl9YDtcclxuICAgIGNvbnN0IHRyYW5zZm9ybUZuID0gKG9wdGlvbnMgYXMgYW55KVt0cmFuc2Zvcm1LZXldO1xyXG5cclxuICAgIGlmICh0eXBlb2YgdHJhbnNmb3JtRm4gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgZGF0YSA9IGF3YWl0IHRyYW5zZm9ybUZuKGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICByZXMuc2V0SGVhZGVyKCdDYWNoZS1Db250cm9sJywgJ25vLWNhY2hlJyk7XHJcbiAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDIpKTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH0gY2F0Y2ggKGVycjogYW55KSB7XHJcbiAgICBsb2dnZXI/LmVycm9yPy4oYFtteGNhZC1hc3NldHNdIOKdjCBGYWlsZWQgdG8gc2VydmUgJHtmaWxlTmFtZX06ICR7ZXJyLm1lc3NhZ2V9YCk7XHJcbiAgICBpZiAoIXJlcy5oZWFkZXJzU2VudCkge1xyXG4gICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAndGV4dC9wbGFpbicpO1xyXG4gICAgICByZXMuc3RhdHVzQ29kZSA9IDUwMDtcclxuICAgICAgcmVzLmVuZCgnSW50ZXJuYWwgU2VydmVyIEVycm9yJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTsgLy8g5bey5aSE55CG6ZSZ6K+vXHJcbiAgfVxyXG59XHJcblxyXG4vKiog5Yib5bu66YCa55So5YWo5bGA5Lit6Ze05Lu2ICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHbG9iYWxVbml2ZXJzYWxNaWRkbGV3YXJlKG9wdGlvbnM6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz4pIHtcclxuICByZXR1cm4gYXN5bmMgKHJlcTogYW55LCByZXM6IGFueSwgbmV4dDogYW55KSA9PiB7XHJcbiAgICBpZiAoIW9wdGlvbnMuaXNXYXNtU3QpIHtcclxuICAgICAgcmVzLnNldEhlYWRlcignQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3knLCAnc2FtZS1vcmlnaW4nKTtcclxuICAgICAgcmVzLnNldEhlYWRlcignQ3Jvc3MtT3JpZ2luLUVtYmVkZGVyLVBvbGljeScsICdyZXF1aXJlLWNvcnAnKTtcclxuICAgIH1cclxuICAgIG5leHQoKTtcclxuICB9XHJcbn1cclxuLy8gPT09IOi+heWKqeWHveaVsO+8muWtl+espuS4sui9rCBQYXNjYWxDYXNlID09PVxyXG5leHBvcnQgZnVuY3Rpb24gcGFzY2FsQ2FzZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHN0clxyXG4gICAgLnJlcGxhY2UoL1teYS16QS1aMC05XSsoLikvZywgKG0sIGNocikgPT4gY2hyLnRvVXBwZXJDYXNlKCkpXHJcbiAgICAucmVwbGFjZSgvXi4vLCBjID0+IGMudG9VcHBlckNhc2UoKSk7XHJcbn1cclxuXHJcbi8vID09PSDlhbbku5bljp/mnInlr7zlh7rkv53mjIHkuI3lj5ggPT09XHJcbmV4cG9ydCBjb25zdCBleHRlcm5hbHMgPSB7XHJcbiAgJ3Z1ZSc6ICdNWENBREFQUF9FWFRFUk5BTExJQlJBUklFUy5WdWUnLFxyXG4gICdheGlvcyc6ICdNWENBREFQUF9FWFRFUk5BTExJQlJBUklFUy5heGlvcycsXHJcbiAgJ3Z1ZXRpZnknOiAnTVhDQURBUFBfRVhURVJOQUxMSUJSQVJJRVMudnVldGlmeScsXHJcbiAgJ3Z1ZXRpZnkvY29tcG9uZW50cyc6ICdNWENBREFQUF9FWFRFUk5BTExJQlJBUklFUy52dWV0aWZ5Q29tcG9uZW50cycsXHJcbiAgJ21hcGJveC1nbCc6ICdNWENBREFQUF9FWFRFUk5BTExJQlJBUklFUy5tYXBib3hnbCcsXHJcbiAgJ3BpbmlhJzogJ01YQ0FEQVBQX0VYVEVSTkFMTElCUkFSSUVTLnBpbmlhJ1xyXG59O1xyXG4vLyDlp4vnu4jkv53nlZnnmoTmqKHlnZdcclxuY29uc3QgQUxXQVlTX0tFRVAgPSBuZXcgU2V0KFsnbXhjYWQnLCAnbXhkcmF3J10pO1xyXG5cclxuLyoqXHJcbiAqIOa4heeQhuW5tuWGmeWFpeato+ehrueahOexu+Wei+W8leeUqFxyXG4gKi9cclxuZnVuY3Rpb24gc3luY1R5cGVSZWZlcmVuY2VzKGxpYnJhcnlOYW1lczogc3RyaW5nW10pOiB2b2lkIHtcclxuICBjb25zdCByb290RGlyID0gcHJvY2Vzcy5jd2QoKTtcclxuICBjb25zdCBkaXN0RGlyID0gcmVzb2x2ZShyb290RGlyLCAnbm9kZV9tb2R1bGVzJywgJ214Y2FkLWFwcCcsICdkaXN0Jyk7XHJcbiAgY29uc3QgaW5kZXhQYXRoID0gcmVzb2x2ZShkaXN0RGlyLCAnaW5kZXguZC50cycpO1xyXG5cclxuICB0cnkge1xyXG4gICAgLy8g4pyFIDEuIOajgOafpSBkaXN0IOebruW9lVxyXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGRpc3REaXIpKSB7XHJcbiAgICAgIGNvbnNvbGUud2Fybihg4pqg77iPIG14Y2FkLWFwcC9kaXN0IOebruW9leS4jeWtmOWcqO+8jOi3s+i/h+exu+Wei+WQjOatpTogJHtkaXN0RGlyfWApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIDIuIOehruS/nSBpbmRleC5kLnRzIOWtmOWcqFxyXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGluZGV4UGF0aCkpIHtcclxuICAgICAgZnMud3JpdGVGaWxlU3luYyhpbmRleFBhdGgsICcnLCAndXRmLTgnKTtcclxuICAgICAgY29uc29sZS5sb2coYOKchSDlt7LliJvlu7rnqbrnsbvlnovmlofku7Y6ICR7aW5kZXhQYXRofWApO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGluZGV4UGF0aCwgJ3V0Zi04Jyk7XHJcbiAgICBjb25zdCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoL1xccj9cXG4vKTtcclxuXHJcbiAgICAvLyDinIUgMy4g5o+Q5Y+W5omA5pyJ546w5pyJ55qEIC8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuL3h4eC5kLnRzXCIgLz4g6KGMXHJcbiAgICBjb25zdCByZWZlcmVuY2VSZWdleCA9IC9cXC9cXC9cXC9cXHMqPHJlZmVyZW5jZVxccytwYXRoPVwiXFwuXFwvKFteXCJdK1xcLmRcXC50cylcIlxccypcXC8+LztcclxuICAgIGNvbnN0IGV4aXN0aW5nUmVmczogc3RyaW5nW10gPSBbXTtcclxuICAgIGNvbnN0IG5vblJlZkxpbmVzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIGxpbmVzLmZvckVhY2gobGluZSA9PiB7XHJcbiAgICAgIGNvbnN0IG1hdGNoID0gbGluZS50cmltKCkubWF0Y2gocmVmZXJlbmNlUmVnZXgpO1xyXG4gICAgICBpZiAobWF0Y2gpIHtcclxuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IG1hdGNoWzFdOyAvLyDlpoIgXCJ2dWUuZC50c1wiXHJcbiAgICAgICAgY29uc3QgbW9kdWxlTmFtZSA9IGZpbGVOYW1lLnJlcGxhY2UoL1xcLmRcXC50cyQvLCAnJyk7IC8vIOaPkOWPluaooeWdl+WQjVxyXG4gICAgICAgIGV4aXN0aW5nUmVmcy5wdXNoKG1vZHVsZU5hbWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5vblJlZkxpbmVzLnB1c2gobGluZSk7IC8vIOS/neeVmemdniByZWZlcmVuY2Ug6KGMXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIOKchSA0LiDorqHnrpfmnIDnu4jlupTor6Xkv53nlZnnmoTmqKHlnZdcclxuICAgIGNvbnN0IHZhbGlkTW9kdWxlcyA9IG5ldyBTZXQ8c3RyaW5nPihBTFdBWVNfS0VFUCk7XHJcblxyXG4gICAgbGlicmFyeU5hbWVzLmZvckVhY2gobmFtZSA9PiB7XHJcbiAgICAgIC8vIOW/hemhu+WcqCBleHRlcm5hbHMg5Lit5a6a5LmJ77yM5LiU57G75Z6L5paH5Lu25a2Y5ZyoXHJcbiAgICAgIGlmIChuYW1lIGluIGV4dGVybmFscykge1xyXG4gICAgICAgIGNvbnN0IGR0c1BhdGggPSByZXNvbHZlKGRpc3REaXIsIGAke25hbWV9LmQudHNgKTtcclxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhkdHNQYXRoKSkge1xyXG4gICAgICAgICAgdmFsaWRNb2R1bGVzLmFkZChuYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIOKchSA1LiDnlJ/miJDmnIDnu4jnmoQgcmVmZXJlbmNlIOihjO+8iOS/neaMgSBteGNhZCDlkowgbXhkcmF3IOWcqOacgOWJje+8iVxyXG4gICAgY29uc3QgZmluYWxSZWZzID0gWydteGNhZCcsICdteGRyYXcnXVxyXG4gICAgICAuZmlsdGVyKG5hbWUgPT4gdmFsaWRNb2R1bGVzLmhhcyhuYW1lKSlcclxuICAgICAgLm1hcChuYW1lID0+IGAvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi8ke25hbWV9LmQudHNcIiAvPmApO1xyXG5cclxuICAgIC8vIOa3u+WKoOWFtuS7liB2YWxpZE1vZHVsZXMg5Lit55qE77yI5Y676YeN77yJXHJcbiAgICBBcnJheS5mcm9tKHZhbGlkTW9kdWxlcylcclxuICAgICAgLmZpbHRlcihuYW1lID0+ICFBTFdBWVNfS0VFUC5oYXMobmFtZSkpXHJcbiAgICAgIC5mb3JFYWNoKG5hbWUgPT4ge1xyXG4gICAgICAgIGZpbmFsUmVmcy5wdXNoKGAvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi8ke25hbWV9LmQudHNcIiAvPmApO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAvLyDinIUgNi4g5ZCI5bm277ya5pyA57uI5byV55SoICsg5Y6f5aeL6Z2e5byV55So6KGMXHJcbiAgICBjb25zdCByZXN1bHRMaW5lcyA9IFsuLi5maW5hbFJlZnMsICcnLCAuLi5ub25SZWZMaW5lcy5maWx0ZXIobCA9PiBsLnRyaW0oKS5sZW5ndGggPiAwKV07XHJcblxyXG4gICAgLy8g56e76Zmk6L+e57ut56m66KGM77yM5L+d55WZ5LiA5Liq5YiG6ZqUXHJcbiAgICBjb25zdCBjbGVhbmVkTGluZXMgPSByZXN1bHRMaW5lcy5maWx0ZXIoKGxpbmUsIGksIGFycikgPT5cclxuICAgICAgIShsaW5lLnRyaW0oKSA9PT0gJycgJiYgaSA+IDAgJiYgYXJyW2kgLSAxXS50cmltKCkgPT09ICcnKVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBuZXdDb250ZW50ID0gY2xlYW5lZExpbmVzLmpvaW4oJ1xcbicpLnRyaW0oKSArICdcXG4nO1xyXG5cclxuICAgIC8vIOKchSA3LiDlhpnlm57mlofku7bvvIjku4XlvZPlhoXlrrnlj5jljJbml7bvvIlcclxuICAgIGlmIChjb250ZW50LnRyaW0oKSAhPT0gbmV3Q29udGVudC50cmltKCkpIHtcclxuICAgICAgZnMud3JpdGVGaWxlU3luYyhpbmRleFBhdGgsIG5ld0NvbnRlbnQsICd1dGYtOCcpO1xyXG4gICAgICBjb25zb2xlLmxvZyhg4pyFIOW3suWQjOatpSBteGNhZC1hcHAvZGlzdC9pbmRleC5kLnRzIOexu+Wei+W8leeUqGApO1xyXG4gICAgICBjb25zb2xlLmxvZyhgICAg5L+d55WZOiAke0FycmF5LmZyb20odmFsaWRNb2R1bGVzKS5qb2luKCcsICcpfWApO1xyXG4gICAgfVxyXG4gIH0gY2F0Y2ggKGVycikge1xyXG4gICAgY29uc29sZS5lcnJvcihg4p2MIOWQjOatpeexu+Wei+W8leeUqOWksei0pTpgLCBlcnIpO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIOmihOWumuS5ieW6k+WQjeWIsOWFqOWxgOWPmOmHj+eahOaYoOWwhFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTElCUkFSWV9NQVA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgbXhjYWQ6ICdNeENBRCcsXHJcbiAgbXhkcmF3OiAnTXgnXHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEV4dGVybmFscyhcclxuICBsaWJyYXJ5TmFtZXM6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz5bJ2xpYnJhcnlOYW1lcyddXHJcbik6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xyXG4gIHN5bmNUeXBlUmVmZXJlbmNlcyhsaWJyYXJ5TmFtZXMpO1xyXG4gIGNvbnN0IHJlc3VsdDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHsgLi4uREVGQVVMVF9MSUJSQVJZX01BUCB9XHJcbiAgaWYgKCFBcnJheS5pc0FycmF5KGxpYnJhcnlOYW1lcykpIHJldHVybiByZXN1bHQ7XHJcbiAgbGlicmFyeU5hbWVzLmZvckVhY2gobmFtZSA9PiB7XHJcbiAgICBpZiAobmFtZSBpbiBleHRlcm5hbHMpIHtcclxuICAgICAgcmVzdWx0W25hbWVdID0gZXh0ZXJuYWxzW25hbWUgYXMga2V5b2YgdHlwZW9mIGV4dGVybmFsc107XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFNvdXJjZUFzc2V0c1BhdGgoKTogc3RyaW5nIHtcclxuICBsZXQgY3VycmVudEZpbGU6IHN0cmluZztcclxuICBpZiAodHlwZW9mIF9fZmlsZW5hbWUgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICBjdXJyZW50RmlsZSA9IF9fZmlsZW5hbWU7XHJcbiAgfSBlbHNlIHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIGN1cnJlbnRGaWxlID0gZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpO1xyXG4gIH1cclxuICBjb25zdCBwYWNrYWdlUm9vdCA9IHJlc29sdmUoY3VycmVudEZpbGUsICcuLicsICcuLicsICcuLicpO1xyXG4gIGNvbnN0IGFzc2V0c1BhdGggPSByZXNvbHZlKHBhY2thZ2VSb290LCBuYW1lLCAnZGlzdCcsICdteGNhZEFwcEFzc2V0cycpO1xyXG4gIGlmICghZnMuZXhpc3RzU3luYyhhc3NldHNQYXRoKSkge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKGBteC1jYWQtYXBwIGFzc2V0cyBub3QgZm91bmQgYXQ6ICR7YXNzZXRzUGF0aH1gKTtcclxuICB9XHJcbiAgcmV0dXJuIGFzc2V0c1BhdGg7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjaGVja1NvdXJjZUFzc2V0c0V4aXN0KCk6IGJvb2xlYW4ge1xyXG4gIGNvbnN0IHBhdGggPSBnZXRTb3VyY2VBc3NldHNQYXRoKCk7XHJcbiAgcmV0dXJuIGZzLmV4aXN0c1N5bmMocGF0aCkgJiYgZnMubHN0YXRTeW5jKHBhdGgpLmlzRGlyZWN0b3J5KCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVJ1bnRpbWVDb25maWdTY3JpcHQocHVibGljUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcclxuICByZXR1cm4gYFxyXG4gICAgPHNjcmlwdD5cclxuICAgICAgd2luZG93Ll9fTVhfQ0FEX0FQUF9BU1NFVF9QQVRIX18gPSAnJHtwdWJsaWNQYXRofSc7XHJcbiAgICA8L3NjcmlwdD5cclxuICBgLnRyaW0oKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNvcHlEaXIoXHJcbiAgc3JjOiBzdHJpbmcsXHJcbiAgZGVzdDogc3RyaW5nLFxyXG4gIHB1YmxpY0Rpcjogc3RyaW5nLFxyXG4gIG9wdGlvbnM6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz4sXHJcbiAgY2FsbGJhY2s6IChlcnI/OiBFcnJvcikgPT4gdm9pZFxyXG4pOiB2b2lkIHtcclxuICAvLyDnrKzkuIDmraXvvJrmiavmj48gcHVibGljRGlyIOS4i+aJgOacieaWh+S7tu+8iOebuOWvueS6jiBwdWJsaWNEaXIg55qE6Lev5b6E77yJXHJcbiAgc2NhblB1YmxpY0RpcihwdWJsaWNEaXIsIChlcnIsIHB1YmxpY0ZpbGVzKSA9PiB7XHJcbiAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcclxuXHJcbiAgICAvLyDnrKzkuozmraXvvJrlvIDlp4vlpI3liLbvvIzkvKDlhaUgcHVibGljRmlsZXMg57yT5a2YXHJcbiAgICBkb0NvcHkoc3JjLCBkZXN0LCBwdWJsaWNEaXIsIHB1YmxpY0ZpbGVzISwgb3B0aW9ucywgY2FsbGJhY2spO1xyXG4gIH0pO1xyXG59XHJcblxyXG4vLyDlrp7pmYXmiafooYzlpI3liLbnmoTlh73mlbBcclxuZnVuY3Rpb24gZG9Db3B5KFxyXG4gIHNyYzogc3RyaW5nLFxyXG4gIGRlc3Q6IHN0cmluZyxcclxuICBwdWJsaWNEaXI6IHN0cmluZyxcclxuICBwdWJsaWNGaWxlczogU2V0PHN0cmluZz4sXHJcbiAgb3B0aW9uczogUmVxdWlyZWQ8TXhDYWRBc3NldHNQbHVnaW5PcHRpb25zPiwgLy8g5rOo5oSP77ya6L+Z6YeM6ZyA6KaB56Gu5L+dIGVuYWJsZUNvbXByZXNzZWRBc3NldHMg5piv5b+F6YCJ55qEXHJcbiAgY2FsbGJhY2s6IChlcnI/OiBFcnJvcikgPT4gdm9pZFxyXG4pIHtcclxuICBmcy5ta2RpcihkZXN0LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9LCAoZXJyKSA9PiB7XHJcbiAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcclxuXHJcbiAgICBmcy5yZWFkZGlyKHNyYywgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0sIChlcnIsIGRpcmVudHMpID0+IHtcclxuICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XHJcblxyXG4gICAgICBsZXQgcGVuZGluZyA9IGRpcmVudHMubGVuZ3RoO1xyXG4gICAgICBpZiAocGVuZGluZyA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKCk7XHJcblxyXG4gICAgICAvLyDmj5DliY3lrprkuYnljovnvKnmlofku7bmianlsZXlkI1cclxuICAgICAgY29uc3QgY29tcHJlc3NlZEV4dHMgPSBbJy5neiddOyAvLyDlj6/mjInpnIDmianlsZVcclxuXHJcbiAgICAgIGRpcmVudHMuZm9yRWFjaCgoZGlyZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc3JjUGF0aCA9IHJlc29sdmUoc3JjLCBkaXJlbnQubmFtZSk7XHJcbiAgICAgICAgY29uc3QgZGVzdFBhdGggPSByZXNvbHZlKGRlc3QsIGRpcmVudC5uYW1lKTtcclxuICAgICAgICBjb25zdCByZWxhdGl2ZVBhdGggPSByZWxhdGl2ZShzcmMsIHNyY1BhdGgpLnJlcGxhY2UoL1xcXFwvZywgJy8nKSBhcyBDb25maWdGaWxlbmFtZTtcclxuXHJcbiAgICAgICAgLy8g5paw5aKe77ya5aaC5p6c56aB55So5Y6L57yp6LWE5rqQ5LiU5piv5Y6L57yp5paH5Lu277yM5YiZ6Lez6L+HXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgIW9wdGlvbnMuZW5hYmxlQ29tcHJlc3NlZEFzc2V0cyAmJlxyXG4gICAgICAgICAgY29tcHJlc3NlZEV4dHMuc29tZShleHQgPT4gcmVsYXRpdmVQYXRoLmVuZHNXaXRoKGV4dCkpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpZiAoLS1wZW5kaW5nID09PSAwKSBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGRpcmVudC5pc0RpcmVjdG9yeSgpKSB7XHJcbiAgICAgICAgICBkb0NvcHkoc3JjUGF0aCwgZGVzdFBhdGgsIHB1YmxpY0RpciwgcHVibGljRmlsZXMsIG9wdGlvbnMsICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKC0tcGVuZGluZyA9PT0gMCkgY2FsbGJhY2soKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZGlyZW50LmlzRmlsZSgpKSB7XHJcbiAgICAgICAgICBpZiAocHVibGljRmlsZXMuaGFzKHJlbGF0aXZlUGF0aCkpIHtcclxuICAgICAgICAgICAgY29uc3QgcHVibGljRmlsZVBhdGggPSByZXNvbHZlKHB1YmxpY0RpciwgcmVsYXRpdmVQYXRoKTtcclxuICAgICAgICAgICAgZnMuY29weUZpbGUocHVibGljRmlsZVBhdGgsIGRlc3RQYXRoLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XHJcbiAgICAgICAgICAgICAgaWYgKC0tcGVuZGluZyA9PT0gMCkgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKENPTkZJR19GSUxFTkFNRVMuaW5jbHVkZXMocmVsYXRpdmVQYXRoKSkge1xyXG4gICAgICAgICAgICBoYW5kbGVDb25maWdGaWxlKHNyY1BhdGgsIGRlc3RQYXRoLCByZWxhdGl2ZVBhdGgsIG9wdGlvbnMsIChlcnIpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcclxuICAgICAgICAgICAgICBpZiAoLS1wZW5kaW5nID09PSAwKSBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGZzLmNvcHlGaWxlKHNyY1BhdGgsIGRlc3RQYXRoLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XHJcbiAgICAgICAgICAgICAgaWYgKC0tcGVuZGluZyA9PT0gMCkgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICgtLXBlbmRpbmcgPT09IDApIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG59XHJcbi8vIOaJq+aPjyBwdWJsaWNEaXIg5LiL5omA5pyJ5paH5Lu277yM6L+U5Zue55u45a+55LqOIHB1YmxpY0RpciDnmoTot6/lvoTpm4blkIhcclxuZnVuY3Rpb24gc2NhblB1YmxpY0RpcihcclxuICBwdWJsaWNEaXI6IHN0cmluZyxcclxuICBjYWxsYmFjazogKGVycjogTm9kZUpTLkVycm5vRXhjZXB0aW9uIHwgbnVsbCwgZmlsZXM/OiBTZXQ8c3RyaW5nPikgPT4gdm9pZFxyXG4pIHtcclxuICBjb25zdCByZXN1bHQgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuXHJcbiAgZnVuY3Rpb24gd2FsayhkaXI6IHN0cmluZykge1xyXG4gICAgZnMucmVhZGRpcihkaXIsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9LCAoZXJyLCBkaXJlbnRzKSA9PiB7XHJcbiAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xyXG5cclxuICAgICAgbGV0IHBlbmRpbmcgPSBkaXJlbnRzLmxlbmd0aDtcclxuICAgICAgaWYgKHBlbmRpbmcgPT09IDApIHtcclxuICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZGlyZW50cy5mb3JFYWNoKChkaXJlbnQpID0+IHtcclxuICAgICAgICBjb25zdCBmdWxsUGF0aCA9IHJlc29sdmUoZGlyLCBkaXJlbnQubmFtZSk7XHJcbiAgICAgICAgY29uc3QgcmVsUGF0aCA9IHJlbGF0aXZlKHB1YmxpY0RpciwgZnVsbFBhdGgpLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcclxuXHJcbiAgICAgICAgaWYgKGRpcmVudC5pc0RpcmVjdG9yeSgpKSB7XHJcbiAgICAgICAgICB3YWxrKGZ1bGxQYXRoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGRpcmVudC5pc0ZpbGUoKSkge1xyXG4gICAgICAgICAgcmVzdWx0LmFkZChyZWxQYXRoKTtcclxuICAgICAgICAgIGlmICgtLXBlbmRpbmcgPT09IDApIHtcclxuICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKC0tcGVuZGluZyA9PT0gMCkge1xyXG4gICAgICAgICAgICBjYWxsYmFjayhudWxsLCByZXN1bHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHdhbGsocHVibGljRGlyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnRlbnRUeXBlKGZpbGVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIGNvbnN0IGV4dCA9IGZpbGVQYXRoLnNwbGl0KCcuJykucG9wKCk/LnRvTG93ZXJDYXNlKCkgfHwgJyc7XHJcbiAgY29uc3QgdHlwZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgICAnY3NzJzogJ3RleHQvY3NzJyxcclxuICAgICdqcyc6ICdhcHBsaWNhdGlvbi9qYXZhc2NyaXB0JyxcclxuICAgICdqc29uJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgJ3BuZyc6ICdpbWFnZS9wbmcnLFxyXG4gICAgJ2pwZyc6ICdpbWFnZS9qcGVnJyxcclxuICAgICdqcGVnJzogJ2ltYWdlL2pwZWcnLFxyXG4gICAgJ2dpZic6ICdpbWFnZS9naWYnLFxyXG4gICAgJ3N2Zyc6ICdpbWFnZS9zdmcreG1sJyxcclxuICAgICd3b2ZmJzogJ2ZvbnQvd29mZicsXHJcbiAgICAnd29mZjInOiAnZm9udC93b2ZmMicsXHJcbiAgICAndHRmJzogJ2ZvbnQvdHRmJyxcclxuICAgICdlb3QnOiAnYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3QnLFxyXG4gICAgJ2ljbyc6ICdpbWFnZS94LWljb24nLFxyXG4gICAgJ3dhc20nOiAnYXBwbGljYXRpb24vd2FzbScsXHJcbiAgICAnemlwJzogJ2FwcGxpY2F0aW9uL3ppcCcsXHJcbiAgICAncmFyJzogJ2FwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQnLFxyXG4gICAgJzd6JzogJ2FwcGxpY2F0aW9uL3gtN3otY29tcHJlc3NlZCcsXHJcbiAgICAndGFyJzogJ2FwcGxpY2F0aW9uL3gtdGFyJyxcclxuICAgICdneic6ICdhcHBsaWNhdGlvbi9nemlwJyxcclxuICAgICdiejInOiAnYXBwbGljYXRpb24veC1iemlwMicsXHJcbiAgICAneHonOiAnYXBwbGljYXRpb24veC14eidcclxuICB9O1xyXG4gIHJldHVybiB0eXBlc1tleHRdIHx8ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIOagh+WHhuWMlui3r+W+hO+8jOehruS/neS7pSAnLycg57uT5bC+XHJcbiAqL1xyXG5mdW5jdGlvbiBub3JtYWxpemVQYXRoKHA6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHJlc29sdmUocCkucmVwbGFjZSgvXFxcXC9nLCAnLycpICsgJy8nO1xyXG59XHJcblxyXG4vKipcclxuICog5Yib5bu66YCa55So5Lit6Ze05Lu277ya5LyY5YWI5L2/55SoIHB1YmxpYyDotYTmupDvvIzlm57pgIDliLAgc291cmNlQXNzZXRzUGF0aFxyXG4gKiDlr7nmoIcgY3JlYXRlU3RhdGljTWlkZGxld2FyZSDpo47moLxcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNeENhZEFzc2V0c01pZGRsZXdhcmUoXHJcbiAgcm9vdDogc3RyaW5nLFxyXG4gIG9wdGlvbnM6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz4sXHJcbiAgcHVibGljRGlyOiBzdHJpbmcsXHJcbiAgbG9nZ2VyPzogYW55XHJcbikge1xyXG4gIGNvbnN0IHsgb3V0cHV0RGlyLCBpc1dhc21TdCA9IGZhbHNlIH0gPSBvcHRpb25zO1xyXG4gIC8vIOKchSAxLiDop4TojIPljJbot6/lvoRcclxuICBjb25zdCBiYXNlUGF0aCA9IGAvJHtvdXRwdXREaXIucmVwbGFjZSgvXlxcLysvLCAnJyl9YDsgLy8gJy9teGNhZEFwcEFzc2V0cydcclxuICBjb25zdCBzb3VyY2VBc3NldHNSb290ID0gbm9ybWFsaXplUGF0aChyb290KTtcclxuXHJcbiAgcmV0dXJuIGFzeW5jIChyZXE6IGFueSwgcmVzOiBhbnksIG5leHQ6ICgpID0+IHZvaWQpID0+IHtcclxuICAgIC8vIOKchSAyLiDln7rmnKzmoKHpqoxcclxuICAgIGlmICghcmVxLnVybCB8fCB0eXBlb2YgcmVxLnVybCAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgcmV0dXJuIG5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDinIUgMy4g6K6+572u5a6J5YWo5aS077yI6Z2eIGlzV2FzbVN0IOaooeW8j++8iVxyXG4gICAgaWYgKCFpc1dhc21TdCkge1xyXG4gICAgICByZXMuc2V0SGVhZGVyKCdDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeScsICdzYW1lLW9yaWdpbicpO1xyXG4gICAgICByZXMuc2V0SGVhZGVyKCdDcm9zcy1PcmlnaW4tRW1iZWRkZXItUG9saWN5JywgJ3JlcXVpcmUtY29ycCcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOKchSA0LiDop6PmnpAgVVJMIOi3r+W+hO+8iOWOuyBxdWVyee+8jOino+egge+8iVxyXG4gICAgY29uc3QgdXJsUGF0aCA9IHJlcS51cmwuc3BsaXQoJz8nKVswXTtcclxuICAgIGxldCBmaWxlUGF0aCE6IHN0cmluZztcclxuICAgIGxldCBmaWxlTmFtZSE6IHN0cmluZztcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBkZWNvZGVkUGF0aCA9IGRlY29kZVVSSUNvbXBvbmVudCh1cmxQYXRoKTtcclxuICAgICAgLy8g6KeE6IyD5YyW6Lev5b6E77yM6Ziy5q2iIC4uLy4uLyDotormnYNcclxuICAgICAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBkZWNvZGVkUGF0aC5yZXBsYWNlKC9eWy9cXFxcXSsvLCAnJyk7XHJcblxyXG4gICAgICAvLyDinIUgNS4g5LyY5YWI77ya5qOA5p+lIHB1YmxpYy8ke291dHB1dERpcn0g55uu5b2VXHJcbiAgICAgIGNvbnN0IHB1YmxpY0ZpbGVQYXRoID0gam9pbihwdWJsaWNEaXIsIG5vcm1hbGl6ZWRQYXRoKS5yZXBsYWNlKC9cXFxcL2csICcvJyk7XHJcblxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHN0YXQgPSBhd2FpdCBmcy5wcm9taXNlcy5zdGF0KHB1YmxpY0ZpbGVQYXRoKTtcclxuICAgICAgICBpZiAoc3RhdC5pc0ZpbGUoKSkge1xyXG4gICAgICAgICAgZmlsZVBhdGggPSBwdWJsaWNGaWxlUGF0aDtcclxuICAgICAgICAgIGZpbGVOYW1lID0gYmFzZW5hbWUobm9ybWFsaXplZFBhdGgpO1xyXG4gICAgICAgICAgcmV0dXJuIHNlcnZlRmlsZShmaWxlUGF0aCwgZmlsZU5hbWUsIHJlcywgbG9nZ2VyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIC8vIHB1YmxpYyDkuK3msqHmnInvvIznu6fnu63mn6Xmib4gc291cmNlQXNzZXRzUGF0aFxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyDinIUgNi4gZmFsbGJhY2vvvJrmn6Xmib4gc291cmNlQXNzZXRzUGF0aFxyXG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlU2FmZVBhdGgoZGVjb2RlZFBhdGgsIHNvdXJjZUFzc2V0c1Jvb3QsIGJhc2VQYXRoKTtcclxuICAgICAgaWYgKCFyZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gcmVzdWx0LnN0YXR1c0NvZGUgfHwgNDAwO1xyXG4gICAgICAgIHJldHVybiByZXMuZW5kKHJlc3VsdC5tZXNzYWdlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHJlc3VsdC5maWxlUGF0aCkgZmlsZVBhdGggPSByZXN1bHQuZmlsZVBhdGg7XHJcbiAgICAgIGlmIChyZXN1bHQuZmlsZU5hbWUpIGZpbGVOYW1lID0gcmVzdWx0LmZpbGVOYW1lO1xyXG5cclxuICAgICAgLy8g4pyFIDcuIOWwneivleeUsSBoYW5kbGVDb25maWdSZXF1ZXN0IOWkhOeQhu+8iOWmguazqOWFpemFjee9ru+8iVxyXG4gICAgICBjb25zdCBoYW5kbGVkID0gYXdhaXQgaGFuZGxlQ29uZmlnUmVxdWVzdChcclxuICAgICAgICBmaWxlUGF0aCxcclxuICAgICAgICBmaWxlTmFtZSxcclxuICAgICAgICBvcHRpb25zLFxyXG4gICAgICAgIHJlcyxcclxuICAgICAgICBsb2dnZXJcclxuICAgICAgKTtcclxuICAgICAgaWYgKGhhbmRsZWQpIHJldHVybjtcclxuXHJcbiAgICAgIC8vIOKchSA4LiDnoa7kv53mmK/mlofku7ZcclxuICAgICAgY29uc3Qgc3RhdCA9IGF3YWl0IGZzLnByb21pc2VzLnN0YXQoZmlsZVBhdGgpO1xyXG4gICAgICBpZiAoIXN0YXQuaXNGaWxlKCkpIHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICByZXR1cm4gcmVzLmVuZCgnRmlsZSBub3QgZm91bmQnKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHNlcnZlRmlsZShmaWxlUGF0aCwgZmlsZU5hbWUsIHJlcywgbG9nZ2VyKTtcclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICBsb2dnZXI/Lndhcm4/LihgW014Q2FkQXNzZXRzXSBTZXJ2ZSBmYWlsZWQgZm9yICR7cmVxLnVybH06ICR7KGVyciBhcyBFcnJvcikubWVzc2FnZX1gKTtcclxuICAgICAgaWYgKHJlcy5oZWFkZXJzU2VudCkgcmV0dXJuO1xyXG4gICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgcmVzLmVuZCgnRmlsZSBub3QgZm91bmQnKTtcclxuICAgIH1cclxuICB9O1xyXG59XHJcblxyXG4vKipcclxuICog5bCB6KOF5paH5Lu25ZON5bqU6YC76L6R77yI5rWB5byP5Lyg6L6T77yJXHJcbiAqL1xyXG5mdW5jdGlvbiBzZXJ2ZUZpbGUoZmlsZVBhdGg6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZywgcmVzOiBhbnksIGxvZ2dlcj86IGFueSkge1xyXG4gIC8vIOWFiOiOt+WPluaWh+S7tueKtuaAge+8iOW/hemhu+WcqOWIm+W7uua1geS5i+WJje+8iVxyXG4gIGZzLnN0YXQoZmlsZVBhdGgsIChlcnIsIHN0YXRzKSA9PiB7XHJcbiAgICBpZiAoZXJyKSB7XHJcbiAgICAgIGlmIChyZXMuaGVhZGVyc1NlbnQpIHJldHVybjtcclxuICAgICAgaWYgKGVyci5jb2RlID09PSAnRU5PRU5UJykge1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDA0O1xyXG4gICAgICAgIHJldHVybiByZXMuZW5kKCdGaWxlIG5vdCBmb3VuZCcpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChlcnIuY29kZSA9PT0gJ0VBQ0NFUycpIHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMztcclxuICAgICAgICByZXR1cm4gcmVzLmVuZCgnQWNjZXNzIGRlbmllZCcpO1xyXG4gICAgICB9XHJcbiAgICAgIGxvZ2dlcj8uZXJyb3I/LihgW014Q2FkQXNzZXRzXSBTdGF0IGVycm9yOiAke2Vyci5tZXNzYWdlfWAsIGVycik7XHJcbiAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICByZXR1cm4gcmVzLmVuZCgnSW50ZXJuYWwgU2VydmVyIEVycm9yJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g56Gu5L+d5piv5paH5Lu277yI5LiN5piv55uu5b2V77yJXHJcbiAgICBpZiAoIXN0YXRzLmlzRmlsZSgpKSB7XHJcbiAgICAgIGlmICghcmVzLmhlYWRlcnNTZW50KSB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgcmVzLmVuZCgnTm90IGEgZmlsZScpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyDorr7nva7lk43lupTlpLTvvIjlv4XpobvlnKggcGlwZSDkuYvliY3vvIlcclxuICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsIGdldENvbnRlbnRUeXBlKGZpbGVOYW1lKSk7XHJcbiAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LUxlbmd0aCcsIHN0YXRzLnNpemUpO1xyXG4gICAgcmVzLnNldEhlYWRlcignWC1Db250ZW50LVR5cGUtT3B0aW9ucycsICdub3NuaWZmJyk7XHJcblxyXG4gICAgLy8g5Yib5bu66K+75Y+W5rWBXHJcbiAgICBjb25zdCBzdHJlYW0gPSBmcy5jcmVhdGVSZWFkU3RyZWFtKGZpbGVQYXRoKTtcclxuXHJcbiAgICBzdHJlYW0ub24oJ2Vycm9yJywgKHJlYWRFcnI6IE5vZGVKUy5FcnJub0V4Y2VwdGlvbikgPT4ge1xyXG4gICAgICBpZiAocmVzLmhlYWRlcnNTZW50KSByZXR1cm47XHJcbiAgICAgIGxvZ2dlcj8uZXJyb3I/LihgW014Q2FkQXNzZXRzXSBSZWFkIHN0cmVhbSBlcnJvcjogJHtyZWFkRXJyLm1lc3NhZ2V9YCwgcmVhZEVycik7XHJcbiAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICByZXMuZW5kKCdJbnRlcm5hbCBTZXJ2ZXIgRXJyb3InKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIOW8gOWni+a1geW8j+S8oOi+k1xyXG4gICAgc3RyZWFtLnBpcGUocmVzKTtcclxuICB9KTtcclxufSJdLCJuYW1lcyI6WyJqb2luIiwicmVzb2x2ZSIsImJhc2VuYW1lIiwiZXJyIiwibmFtZSIsImZpbGVVUkxUb1BhdGgiLCJyZWxhdGl2ZSIsInN0YXQiLCJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
1514
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtRFJLTktMUnguanMiLCJzb3VyY2VzIjpbIi4uLy4uL3BhY2tUb29sUGx1Z2luU3JjL3NoYXJlZC9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJcclxuLy8gcGx1Z2lucy9zaGFyZWQvaW5kZXgudHNcclxuaW1wb3J0IHsgYmFzZW5hbWUsIGpvaW4sIHJlbGF0aXZlLCByZXNvbHZlIH0gZnJvbSAncGF0aCc7XHJcbmltcG9ydCBmcywgeyBOb1BhcmFtQ2FsbGJhY2sgfSBmcm9tICdmcyc7XHJcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICd1cmwnO1xyXG5pbXBvcnQgeyBuYW1lIH0gZnJvbSBcIi4uLy4uL2xpYi9wYWNrYWdlLmpzb25cIlxyXG5cclxuaW1wb3J0IHsgTXhRdWlja0NvbW1hbmQgfSBmcm9tIFwiLi90eXBlcy9teFF1aWNrQ29tbWFuZC5kXCJcclxuaW1wb3J0IHsgTXhTZXJ2ZXJDb25maWcgfSBmcm9tIFwiLi90eXBlcy9teFNlcnZlckNvbmZpZy5kXCJcclxuaW1wb3J0IHsgTXhTa2V0Y2hlc0FuZE5vdGVzVWlDb25maWcgfSBmcm9tIFwiLi90eXBlcy9teFNrZXRjaGVzQW5kTm90ZXNVaUNvbmZpZy5kXCJcclxuaW1wb3J0IHsgTXhVaUNvbmZpZyB9IGZyb20gXCIuL3R5cGVzL214VWlDb25maWcuZFwiXHJcbmltcG9ydCB7IE14Y2FkVWlDb25maWcgfSBmcm9tIFwiLi90eXBlcy9teGNhZFVpQ29uZmlnLmRcIlxyXG5pbXBvcnQgeyBWdWV0aWZ5VGhlbWVDb25maWcgfSBmcm9tIFwiLi90eXBlcy92dWV0aWZ5VGhlbWVDb25maWcuZFwiXHJcbmltcG9ydCBhcGlNYXAgZnJvbSAnLi4vYXBpLW1hcC5qc29uJ1xyXG5leHBvcnQgY29uc3QgZ2V0QXBpTWFwID0gKCkgPT4gYXBpTWFwXHJcbmV4cG9ydCBpbnRlcmZhY2UgTXhQbHVnaW5Db25maWcge1xyXG4gIHBsdWdpbnM6IChzdHJpbmcgfCB7XHJcbiAgICBuYW1lPzogc3RyaW5nLFxyXG4gICAgaXNBZnRlckxvYWQ/OiBib29sZWFuLFxyXG4gICAgZGlyPzogYm9vbGVhbixcclxuICAgIHZlcnNpb24/OiBzdHJpbmdcclxuICB9KVtdXHJcbn1cclxuLy8gPT09IOaWsOWinu+8mumFjee9ruaWh+S7tuWQjeW4uOmHjyA9PT1cclxuZXhwb3J0IGNvbnN0IENPTkZJR19GSUxFTkFNRVMgPSBbXHJcbiAgLy8gJ214Y2FkVWlDb25maWcuanNvbicsXHJcbiAgJ214UXVpY2tDb21tYW5kLmpzb24nLFxyXG4gICdteFNlcnZlckNvbmZpZy5qc29uJyxcclxuICAnbXhTa2V0Y2hlc0FuZE5vdGVzVWlDb25maWcuanNvbicsXHJcbiAgJ214VWlDb25maWcuanNvbicsXHJcbiAgJ3Z1ZXRpZnlUaGVtZUNvbmZpZy5qc29uJyxcclxuICAvLyAncGx1Z2lucy9jb25maWcuanNvbidcclxuXSBhcyBjb25zdDtcclxuLyoqXHJcbiAqIOmFjee9ruaWh+S7tuWkhOeQhuWZqFxyXG4gKiDlj6/pgInvvJrlr7nnibnlrprphY3nva7mlofku7bov5vooYzov5DooYzml7bkv67mlLlcclxuICog5Ye95pWw5o6l5pS25Y6f5aeLIEpTT04g5pWw5o2u77yM6L+U5Zue5L+u5pS55ZCO55qEIEpTT04g5pWw5o2u77yI5Y+v5byC5q2l77yJXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZm9ybUZ1bmN0aW9ucyB7XHJcbiAgLy8gdHJhbnNmb3JtTXhjYWRVaUNvbmZpZyhkYXRhOiBNeGNhZFVpQ29uZmlnKTogUHJvbWlzZTxNeGNhZFVpQ29uZmlnPiB8IE14Y2FkVWlDb25maWc7XHJcbiAgdHJhbnNmb3JtTXhRdWlja0NvbW1hbmQoZGF0YTogTXhRdWlja0NvbW1hbmQpOiBQcm9taXNlPE14UXVpY2tDb21tYW5kPiB8IE14UXVpY2tDb21tYW5kO1xyXG4gIHRyYW5zZm9ybU14U2VydmVyQ29uZmlnKGRhdGE6IE14U2VydmVyQ29uZmlnKTogUHJvbWlzZTxNeFNlcnZlckNvbmZpZz4gfCBNeFNlcnZlckNvbmZpZztcclxuICB0cmFuc2Zvcm1NeFNrZXRjaGVzQW5kTm90ZXNVaUNvbmZpZyhkYXRhOiBNeFNrZXRjaGVzQW5kTm90ZXNVaUNvbmZpZyk6IFByb21pc2U8TXhTa2V0Y2hlc0FuZE5vdGVzVWlDb25maWc+IHwgTXhTa2V0Y2hlc0FuZE5vdGVzVWlDb25maWc7XHJcbiAgdHJhbnNmb3JtTXhVaUNvbmZpZyhkYXRhOiBNeFVpQ29uZmlnKTogUHJvbWlzZTxNeFVpQ29uZmlnPiB8IE14VWlDb25maWc7XHJcbiAgdHJhbnNmb3JtVnVldGlmeVRoZW1lQ29uZmlnKGRhdGE6IFZ1ZXRpZnlUaGVtZUNvbmZpZyk6IFByb21pc2U8VnVldGlmeVRoZW1lQ29uZmlnPiB8IFZ1ZXRpZnlUaGVtZUNvbmZpZztcclxuICAvLyB0cmFuc2Zvcm1NeFBsdWdpbnNDb25maWcoZGF0YTogTXhQbHVnaW5Db25maWdbXSk6IFByb21pc2U8TXhQbHVnaW5Db25maWdbXT4gfCBNeFBsdWdpbkNvbmZpZ1tdO1xyXG59XHJcbi8vIOaJqeWxleaPkuS7tumAiemhueaOpeWPoyA9PT1cclxuZXhwb3J0IGludGVyZmFjZSBNeENhZEFzc2V0c1BsdWdpbk9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPFRyYW5zZm9ybUZ1bmN0aW9ucz4ge1xyXG4gIC8qKlxyXG4gICAqIOaehOW7uuWQju+8jG14Y2FkQXBwQXNzZXRzIOi1hOa6kOWtmOaUvueahOWtkOebruW9leWQjeOAglxyXG4gICAqIEBkZWZhdWx0ICdteGNhZEFwcEFzc2V0cydcclxuICAgKi9cclxuICBvdXRwdXREaXI/OiBzdHJpbmc7XHJcbiAgLyoqIOesrOS4ieaWueS+nei1liovXHJcbiAgbGlicmFyeU5hbWVzPzogKGtleW9mIHR5cGVvZiBleHRlcm5hbHMpW107XHJcbiAgLyoqIOaYr+WQpuWNlee6v+eoi+WKoOi9vXdhc20gKOm7mOiupOS9v+eUqOWkmue6v+eoi+WPiuWKoOi9vSkgKi9cclxuICBpc1dhc21TdD86IGJvb2xlYW47XHJcbiAgIC8qKlxyXG4gICAqIOaYr+WQpuWQr+eUqOmihOWOi+e8qei1hOa6kO+8iOWmgiAuZ3og5paH5Lu277yJ55qE5ou36LSdIOm7mOiupOaYr3RydWVcclxuICAgKiDorr7nva7kuLogZmFsc2Ug5pe277yMLmd6IOWOi+e8qeaWh+S7tuWwhuS4jeS8muiiq+WkjeWItuWIsOi+k+WHuuebruW9lVxyXG4gICAqIEBkZWZhdWx0IHRydWVcclxuICAgKi9cclxuICBlbmFibGVDb21wcmVzc2VkQXNzZXRzPzogYm9vbGVhbjtcclxufVxyXG5cclxuXHJcbi8vID09PSDlop7lvLrvvJpyZXNvbHZlT3B0aW9ucyDpu5jorqTlgLwgPT09XHJcbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlT3B0aW9ucyhvcHRpb25zOiBNeENhZEFzc2V0c1BsdWdpbk9wdGlvbnMgPSB7fSk6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz4ge1xyXG4gIGNvbnN0IHJlc29sdmVkOiBSZXF1aXJlZDxNeENhZEFzc2V0c1BsdWdpbk9wdGlvbnM+ID0ge1xyXG4gICAgb3V0cHV0RGlyOiBvcHRpb25zLm91dHB1dERpciB8fCAnbXhjYWRBcHBBc3NldHMnLFxyXG4gICAgbGlicmFyeU5hbWVzOiBvcHRpb25zLmxpYnJhcnlOYW1lcyB8fCBbXSxcclxuICAgIGlzV2FzbVN0OiBvcHRpb25zLmlzV2FzbVN0IHx8IGZhbHNlLFxyXG4gICAgZW5hYmxlQ29tcHJlc3NlZEFzc2V0czogb3B0aW9ucy5lbmFibGVDb21wcmVzc2VkQXNzZXRzIHx8IHRydWUsXHJcbiAgICAvLyB0cmFuc2Zvcm1NeGNhZFVpQ29uZmlnOiBvcHRpb25zLnRyYW5zZm9ybU14Y2FkVWlDb25maWcgfHwgKChkKSA9PiBkKSxcclxuICAgIHRyYW5zZm9ybU14UXVpY2tDb21tYW5kOiBvcHRpb25zLnRyYW5zZm9ybU14UXVpY2tDb21tYW5kIHx8ICgoZCkgPT4gZCksXHJcbiAgICB0cmFuc2Zvcm1NeFNlcnZlckNvbmZpZzogb3B0aW9ucy50cmFuc2Zvcm1NeFNlcnZlckNvbmZpZyB8fCAoKGQpID0+IGQpLFxyXG4gICAgdHJhbnNmb3JtTXhTa2V0Y2hlc0FuZE5vdGVzVWlDb25maWc6IG9wdGlvbnMudHJhbnNmb3JtTXhTa2V0Y2hlc0FuZE5vdGVzVWlDb25maWcgfHwgKChkKSA9PiBkKSxcclxuICAgIHRyYW5zZm9ybU14VWlDb25maWc6IG9wdGlvbnMudHJhbnNmb3JtTXhVaUNvbmZpZyB8fCAoKGQpID0+IGQpLFxyXG4gICAgdHJhbnNmb3JtVnVldGlmeVRoZW1lQ29uZmlnOiBvcHRpb25zLnRyYW5zZm9ybVZ1ZXRpZnlUaGVtZUNvbmZpZyB8fCAoKGQpID0+IGQpLFxyXG4gICAgLy8gdHJhbnNmb3JtTXhQbHVnaW5zQ29uZmlnOiBvcHRpb25zLnRyYW5zZm9ybU14UGx1Z2luc0NvbmZpZyB8fCAoKGQpID0+IGQpLFxyXG4gIH07XHJcbiAgcmV0dXJuIHJlc29sdmVkO1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRQYXRoUmVzdWx0IHtcclxuICBzdWNjZXNzOiBib29sZWFuO1xyXG4gIGZpbGVQYXRoPzogc3RyaW5nOyAgICAgICAgIC8vIOW3siByZXNvbHZlIOeahOWuieWFqOaWh+S7tui3r+W+hFxyXG4gIHVybFBhdGg/OiBzdHJpbmc7ICAgICAgICAgIC8vIOino+eggeWQjueahCBVUkwg6Lev5b6E77yI5LiN5ZCrIHF1ZXJ577yJXHJcbiAgZmlsZU5hbWU/OiBzdHJpbmc7ICAgICAgICAgLy8g5paH5Lu25ZCN77yIYmFzZW5hbWXvvIlcclxuICBzdGF0dXNDb2RlPzogbnVtYmVyO1xyXG4gIG1lc3NhZ2U/OiBzdHJpbmc7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICog5a6J5YWo6Kej5p6Q5bm26aqM6K+B6K+35rGC6Lev5b6EXHJcbiAqIEBwYXJhbSByZXFVcmwg6K+35rGC55qEIFVSTO+8iOWmgiAnL2Fzc2V0cy9teFNlcnZlckNvbmZpZy5qc29uP3Y9MSfvvIlcclxuICogQHBhcmFtIHJvb3Qg5pys5Zyw5qC555uu5b2V77yI5aaCICdEOi9wcm9qZWN0L2Rpc3QvbXhjYWQn77yJXHJcbiAqIEBwYXJhbSBiYXNlUGF0aCDlj6/pgInnmoTln7rnoYDot6/lvoTliY3nvIDvvIjlpoIgJy9teGNhZC8n77yM55So5LqOIFZpdGXvvIlcclxuICogQHJldHVybnMg6Kej5p6Q57uT5p6c5oiW6ZSZ6K+vXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVNhZmVQYXRoKFxyXG4gIHJlcVVybDogc3RyaW5nLFxyXG4gIHJvb3Q6IHN0cmluZyxcclxuICBiYXNlUGF0aD86IHN0cmluZ1xyXG4pOiBQYXJzZWRQYXRoUmVzdWx0IHtcclxuICAvLyAxLiDln7rmnKzmoKHpqoxcclxuICBpZiAoIXJlcVVybCB8fCB0eXBlb2YgcmVxVXJsICE9PSAnc3RyaW5nJykge1xyXG4gICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIHN0YXR1c0NvZGU6IDQwMCwgbWVzc2FnZTogJ0JhZCBSZXF1ZXN0JyB9O1xyXG4gIH1cclxuXHJcbiAgLy8gMi4g5o+Q5Y+W6Lev5b6E77yI5Y67IHF1ZXJ5IOWSjCBoYXNo77yJXHJcbiAgbGV0IHVybFBhdGggPSByZXFVcmwuc3BsaXQoJz8nKVswXS5zcGxpdCgnIycpWzBdO1xyXG5cclxuICAvLyAzLiDop6PnoIEgVVJMXHJcbiAgbGV0IGRlY29kZWRQYXRoOiBzdHJpbmc7XHJcbiAgdHJ5IHtcclxuICAgIGRlY29kZWRQYXRoID0gZGVjb2RlVVJJQ29tcG9uZW50KHVybFBhdGgpO1xyXG4gICAgLy8g6Ziy5q2iIG51bGwg5a2X6IqC5pS75Ye7XHJcbiAgICBpZiAoZGVjb2RlZFBhdGguaW5jbHVkZXMoJ1xcMCcpKSB7XHJcbiAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBzdGF0dXNDb2RlOiA0MDAsIG1lc3NhZ2U6ICdJbnZhbGlkIFVSTCcgfTtcclxuICAgIH1cclxuICB9IGNhdGNoIChlcnIpIHtcclxuICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBzdGF0dXNDb2RlOiA0MDAsIG1lc3NhZ2U6ICdJbnZhbGlkIFVSTCBlbmNvZGluZycgfTtcclxuICB9XHJcblxyXG4gIC8vIDQuIOWkhOeQhiBiYXNlUGF0aO+8iOWmgiBWaXRlIOeahCBiYXNl77yJXHJcbiAgaWYgKGJhc2VQYXRoICYmIGRlY29kZWRQYXRoLnN0YXJ0c1dpdGgoYmFzZVBhdGgpKSB7XHJcbiAgICBkZWNvZGVkUGF0aCA9IGRlY29kZWRQYXRoLnNsaWNlKGJhc2VQYXRoLmxlbmd0aCk7XHJcbiAgfVxyXG5cclxuICAvLyA1LiDmuIXnkIbot6/lvoTvvJrljrvpmaTlvIDlpLTlpJrkvZnnmoQgL1xyXG4gIC8vIOS+i+Wmgu+8mi8vYXNzZXRzL2ZpbGUuanNvbiAtPiBhc3NldHMvZmlsZS5qc29uXHJcbiAgY29uc3QgY2xlYW5lZFBhdGggPSBkZWNvZGVkUGF0aC5yZXBsYWNlKC9eXFwvKy8sICcnKTtcclxuXHJcbiAgLy8gNi4g5ou85o6l5paH5Lu26Lev5b6EXHJcbiAgY29uc3QgZmlsZVBhdGggPSBqb2luKHJvb3QsIGNsZWFuZWRQYXRoIHx8ICcuJyk7XHJcblxyXG4gIC8vIDcuIOWuieWFqOajgOafpe+8mumYsuatoui3r+W+hOepv+i2ilxyXG4gIGxldCBub3JtYWxpemVkRmlsZTogc3RyaW5nO1xyXG4gIGxldCBub3JtYWxpemVkUm9vdDogc3RyaW5nO1xyXG4gIHRyeSB7XHJcbiAgICBub3JtYWxpemVkRmlsZSA9IHJlc29sdmUoZmlsZVBhdGgpO1xyXG4gICAgbm9ybWFsaXplZFJvb3QgPSByZXNvbHZlKHJvb3QpO1xyXG4gIH0gY2F0Y2ggKGVycikge1xyXG4gICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIHN0YXR1c0NvZGU6IDUwMCwgbWVzc2FnZTogJ1BhdGggcmVzb2x1dGlvbiBmYWlsZWQnIH07XHJcbiAgfVxyXG5cclxuICAvLyDinIUg5YWz6ZSu77ya56Gu5L+dIG5vcm1hbGl6ZWRGaWxlIOWcqCBub3JtYWxpemVkUm9vdCDnm67lvZXkuItcclxuICBjb25zdCBub3JtYWxpemVkRmlsZVN0ciA9IG5vcm1hbGl6ZWRGaWxlLnJlcGxhY2UoL1xcXFwvZywgJy8nKSArICcvJztcclxuICBjb25zdCBub3JtYWxpemVkUm9vdFN0ciA9IG5vcm1hbGl6ZWRSb290LnJlcGxhY2UoL1xcXFwvZywgJy8nKSArICcvJztcclxuXHJcbiAgaWYgKCFub3JtYWxpemVkRmlsZVN0ci5zdGFydHNXaXRoKG5vcm1hbGl6ZWRSb290U3RyKSkge1xyXG4gICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIHN0YXR1c0NvZGU6IDQwMywgbWVzc2FnZTogJ0ZvcmJpZGRlbjogUGF0aCB0cmF2ZXJzYWwgZGV0ZWN0ZWQnIH07XHJcbiAgfVxyXG5cclxuICAvLyA4LiDmj5Dlj5YgZmlsZU5hbWVcclxuICBjb25zdCBwYXRoU2VnbWVudHMgPSBjbGVhbmVkUGF0aC5zcGxpdCgnLycpLmZpbHRlcihCb29sZWFuKTtcclxuICBjb25zdCBmaWxlTmFtZSA9IHBhdGhTZWdtZW50cy5sZW5ndGggPiAwID8gYmFzZW5hbWUocGF0aFNlZ21lbnRzW3BhdGhTZWdtZW50cy5sZW5ndGggLSAxXSkgOiAnJztcclxuXHJcbiAgLy8g4pyFIOaIkOWKn1xyXG4gIHJldHVybiB7XHJcbiAgICBzdWNjZXNzOiB0cnVlLFxyXG4gICAgZmlsZVBhdGg6IG5vcm1hbGl6ZWRGaWxlLFxyXG4gICAgdXJsUGF0aDogZGVjb2RlZFBhdGgsXHJcbiAgICBmaWxlTmFtZSxcclxuICB9O1xyXG59XHJcblxyXG5cclxudHlwZSBDb25maWdGaWxlbmFtZSA9ICh0eXBlb2YgQ09ORklHX0ZJTEVOQU1FUylbbnVtYmVyXTtcclxuZnVuY3Rpb24gaGFuZGxlQ29uZmlnRmlsZShcclxuICBzcmNQYXRoOiBzdHJpbmcsXHJcbiAgZGVzdFBhdGg6IHN0cmluZyxcclxuICBmaWxlbmFtZTogQ29uZmlnRmlsZW5hbWUsXHJcbiAgb3B0aW9uczogUmVxdWlyZWQ8TXhDYWRBc3NldHNQbHVnaW5PcHRpb25zPixcclxuICBjYWxsYmFjazogTm9QYXJhbUNhbGxiYWNrXHJcbikge1xyXG4gIGZzLnJlYWRGaWxlKHNyY1BhdGgsICd1dGYtOCcsIGFzeW5jIChlcnIsIGNvbnRlbnQpID0+IHtcclxuICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBkYXRhID0gY29udGVudC50cmltKCkgPyBKU09OLnBhcnNlKGNvbnRlbnQpIDoge307XHJcblxyXG4gICAgICAvLyDinIUg5q2j56Gu55Sf5oiQIHRyYW5zZm9ybSDlh73mlbDlkI1cclxuICAgICAgY29uc3QgYmFzZU5hbWUgPSBmaWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC9pLCAnJyk7XHJcbiAgICAgIGNvbnN0IHRyYW5zZm9ybUtleSA9IGB0cmFuc2Zvcm0ke3Bhc2NhbENhc2UoYmFzZU5hbWUpfWA7IC8vIOS+i+WmgjogdHJhbnNmb3JtUGx1Z2luc0NvbmZpZyDmiJYgdHJhbnNmb3JtTXhQbHVnaW5zQ29uZmlnXHJcblxyXG4gICAgICBjb25zdCB0cmFuc2Zvcm1GbiA9IChvcHRpb25zIGFzIGFueSlbdHJhbnNmb3JtS2V5XTtcclxuXHJcbiAgICAgIGlmICh0eXBlb2YgdHJhbnNmb3JtRm4gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICBkYXRhID0gYXdhaXQgdHJhbnNmb3JtRm4oZGF0YSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKTtcclxuICAgICAgZnMud3JpdGVGaWxlKGRlc3RQYXRoLCBqc29uLCAndXRmLTgnLCBjYWxsYmFjayk7XHJcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xyXG4gICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG4vKipcclxuICog5aSE55CG6YWN572u5paH5Lu26K+35rGC77ya6K+75Y+WIOKGkiDovazmjaIg4oaSIOi/lOWbnuWTjeW6lFxyXG4gKiDnlKjkuo4gVml0ZS9XZWJwYWNrIGRldiBzZXJ2ZXIg5Lit6Ze05Lu2XHJcbiAqL1xyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlQ29uZmlnUmVxdWVzdChcclxuICBmaWxlUGF0aDogc3RyaW5nLCAgICAgICAgICAgLy8g5bey57uP6aqM6K+B6L+H55qE5a6J5YWo6Lev5b6EXHJcbiAgZmlsZU5hbWU6IHN0cmluZywgICAgICAgICAgIC8vIOaWh+S7tuWQje+8jOWmgiAnbXhTZXJ2ZXJDb25maWcuanNvbidcclxuICBvcHRpb25zOiBSZXF1aXJlZDxNeENhZEFzc2V0c1BsdWdpbk9wdGlvbnM+LFxyXG4gIHJlczogYW55LFxyXG4gIGxvZ2dlcj86IHsgaW5mbz86IChtc2c6IHN0cmluZykgPT4gdm9pZDsgZXJyb3I/OiAobXNnOiBzdHJpbmcpID0+IHZvaWQgfVxyXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAvLyDku4XlpITnkIbnmb3lkI3ljZXlhoXnmoTmlofku7ZcclxuICBpZiAoIShDT05GSUdfRklMRU5BTUVTIGFzIHVua25vd24gYXMgc3RyaW5nKS5pbmNsdWRlcyhmaWxlTmFtZSkpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHRyeSB7XHJcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgZnMucHJvbWlzZXMucmVhZEZpbGUoZmlsZVBhdGgsICd1dGYtOCcpO1xyXG4gICAgbGV0IGRhdGEgPSBjb250ZW50LnRyaW0oKSA/IEpTT04ucGFyc2UoY29udGVudCkgOiB7fTtcclxuXHJcbiAgICBjb25zdCB0cmFuc2Zvcm1LZXkgPSBgdHJhbnNmb3JtJHtwYXNjYWxDYXNlKGZpbGVOYW1lLnJlcGxhY2UoL1xcLmpzb24kL2ksICcnKSl9YDtcclxuICAgIGNvbnN0IHRyYW5zZm9ybUZuID0gKG9wdGlvbnMgYXMgYW55KVt0cmFuc2Zvcm1LZXldO1xyXG5cclxuICAgIGlmICh0eXBlb2YgdHJhbnNmb3JtRm4gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgZGF0YSA9IGF3YWl0IHRyYW5zZm9ybUZuKGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICByZXMuc2V0SGVhZGVyKCdDYWNoZS1Db250cm9sJywgJ25vLWNhY2hlJyk7XHJcbiAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDIpKTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH0gY2F0Y2ggKGVycjogYW55KSB7XHJcbiAgICBsb2dnZXI/LmVycm9yPy4oYFtteGNhZC1hc3NldHNdIOKdjCBGYWlsZWQgdG8gc2VydmUgJHtmaWxlTmFtZX06ICR7ZXJyLm1lc3NhZ2V9YCk7XHJcbiAgICBpZiAoIXJlcy5oZWFkZXJzU2VudCkge1xyXG4gICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAndGV4dC9wbGFpbicpO1xyXG4gICAgICByZXMuc3RhdHVzQ29kZSA9IDUwMDtcclxuICAgICAgcmVzLmVuZCgnSW50ZXJuYWwgU2VydmVyIEVycm9yJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTsgLy8g5bey5aSE55CG6ZSZ6K+vXHJcbiAgfVxyXG59XHJcblxyXG4vKiog5Yib5bu66YCa55So5YWo5bGA5Lit6Ze05Lu2ICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHbG9iYWxVbml2ZXJzYWxNaWRkbGV3YXJlKG9wdGlvbnM6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz4pIHtcclxuICByZXR1cm4gYXN5bmMgKHJlcTogYW55LCByZXM6IGFueSwgbmV4dDogYW55KSA9PiB7XHJcbiAgICBpZiAoIW9wdGlvbnMuaXNXYXNtU3QpIHtcclxuICAgICAgcmVzLnNldEhlYWRlcignQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3knLCAnc2FtZS1vcmlnaW4nKTtcclxuICAgICAgcmVzLnNldEhlYWRlcignQ3Jvc3MtT3JpZ2luLUVtYmVkZGVyLVBvbGljeScsICdyZXF1aXJlLWNvcnAnKTtcclxuICAgIH1cclxuICAgIG5leHQoKTtcclxuICB9XHJcbn1cclxuLy8gPT09IOi+heWKqeWHveaVsO+8muWtl+espuS4sui9rCBQYXNjYWxDYXNlID09PVxyXG5leHBvcnQgZnVuY3Rpb24gcGFzY2FsQ2FzZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHN0clxyXG4gICAgLnJlcGxhY2UoL1teYS16QS1aMC05XSsoLikvZywgKG0sIGNocikgPT4gY2hyLnRvVXBwZXJDYXNlKCkpXHJcbiAgICAucmVwbGFjZSgvXi4vLCBjID0+IGMudG9VcHBlckNhc2UoKSk7XHJcbn1cclxuXHJcbi8vID09PSDlhbbku5bljp/mnInlr7zlh7rkv53mjIHkuI3lj5ggPT09XHJcbmV4cG9ydCBjb25zdCBleHRlcm5hbHMgPSB7XHJcbiAgJ3Z1ZSc6ICdNWENBREFQUF9FWFRFUk5BTExJQlJBUklFUy5WdWUnLFxyXG4gICdheGlvcyc6ICdNWENBREFQUF9FWFRFUk5BTExJQlJBUklFUy5heGlvcycsXHJcbiAgJ3Z1ZXRpZnknOiAnTVhDQURBUFBfRVhURVJOQUxMSUJSQVJJRVMudnVldGlmeScsXHJcbiAgJ3Z1ZXRpZnkvY29tcG9uZW50cyc6ICdNWENBREFQUF9FWFRFUk5BTExJQlJBUklFUy52dWV0aWZ5Q29tcG9uZW50cycsXHJcbiAgJ21hcGJveC1nbCc6ICdNWENBREFQUF9FWFRFUk5BTExJQlJBUklFUy5tYXBib3hnbCcsXHJcbiAgJ3BpbmlhJzogJ01YQ0FEQVBQX0VYVEVSTkFMTElCUkFSSUVTLnBpbmlhJ1xyXG59O1xyXG4vLyDlp4vnu4jkv53nlZnnmoTmqKHlnZdcclxuY29uc3QgQUxXQVlTX0tFRVAgPSBuZXcgU2V0KFsnbXhjYWQnLCAnbXhkcmF3J10pO1xyXG5cclxuLyoqXHJcbiAqIOa4heeQhuW5tuWGmeWFpeato+ehrueahOexu+Wei+W8leeUqFxyXG4gKi9cclxuZnVuY3Rpb24gc3luY1R5cGVSZWZlcmVuY2VzKGxpYnJhcnlOYW1lczogc3RyaW5nW10pOiB2b2lkIHtcclxuICBjb25zdCByb290RGlyID0gcHJvY2Vzcy5jd2QoKTtcclxuICBjb25zdCBkaXN0RGlyID0gcmVzb2x2ZShyb290RGlyLCAnbm9kZV9tb2R1bGVzJywgJ214Y2FkLWFwcCcsICdkaXN0Jyk7XHJcbiAgY29uc3QgaW5kZXhQYXRoID0gcmVzb2x2ZShkaXN0RGlyLCAnaW5kZXguZC50cycpO1xyXG5cclxuICB0cnkge1xyXG4gICAgLy8g4pyFIDEuIOajgOafpSBkaXN0IOebruW9lVxyXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGRpc3REaXIpKSB7XHJcbiAgICAgIGNvbnNvbGUud2Fybihg4pqg77iPIG14Y2FkLWFwcC9kaXN0IOebruW9leS4jeWtmOWcqO+8jOi3s+i/h+exu+Wei+WQjOatpTogJHtkaXN0RGlyfWApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIDIuIOehruS/nSBpbmRleC5kLnRzIOWtmOWcqFxyXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGluZGV4UGF0aCkpIHtcclxuICAgICAgZnMud3JpdGVGaWxlU3luYyhpbmRleFBhdGgsICcnLCAndXRmLTgnKTtcclxuICAgICAgY29uc29sZS5sb2coYOKchSDlt7LliJvlu7rnqbrnsbvlnovmlofku7Y6ICR7aW5kZXhQYXRofWApO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGluZGV4UGF0aCwgJ3V0Zi04Jyk7XHJcbiAgICBjb25zdCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoL1xccj9cXG4vKTtcclxuXHJcbiAgICAvLyDinIUgMy4g5o+Q5Y+W5omA5pyJ546w5pyJ55qEIC8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuL3h4eC5kLnRzXCIgLz4g6KGMXHJcbiAgICBjb25zdCByZWZlcmVuY2VSZWdleCA9IC9cXC9cXC9cXC9cXHMqPHJlZmVyZW5jZVxccytwYXRoPVwiXFwuXFwvKFteXCJdK1xcLmRcXC50cylcIlxccypcXC8+LztcclxuICAgIGNvbnN0IGV4aXN0aW5nUmVmczogc3RyaW5nW10gPSBbXTtcclxuICAgIGNvbnN0IG5vblJlZkxpbmVzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIGxpbmVzLmZvckVhY2gobGluZSA9PiB7XHJcbiAgICAgIGNvbnN0IG1hdGNoID0gbGluZS50cmltKCkubWF0Y2gocmVmZXJlbmNlUmVnZXgpO1xyXG4gICAgICBpZiAobWF0Y2gpIHtcclxuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IG1hdGNoWzFdOyAvLyDlpoIgXCJ2dWUuZC50c1wiXHJcbiAgICAgICAgY29uc3QgbW9kdWxlTmFtZSA9IGZpbGVOYW1lLnJlcGxhY2UoL1xcLmRcXC50cyQvLCAnJyk7IC8vIOaPkOWPluaooeWdl+WQjVxyXG4gICAgICAgIGV4aXN0aW5nUmVmcy5wdXNoKG1vZHVsZU5hbWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5vblJlZkxpbmVzLnB1c2gobGluZSk7IC8vIOS/neeVmemdniByZWZlcmVuY2Ug6KGMXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIOKchSA0LiDorqHnrpfmnIDnu4jlupTor6Xkv53nlZnnmoTmqKHlnZdcclxuICAgIGNvbnN0IHZhbGlkTW9kdWxlcyA9IG5ldyBTZXQ8c3RyaW5nPihBTFdBWVNfS0VFUCk7XHJcblxyXG4gICAgbGlicmFyeU5hbWVzLmZvckVhY2gobmFtZSA9PiB7XHJcbiAgICAgIC8vIOW/hemhu+WcqCBleHRlcm5hbHMg5Lit5a6a5LmJ77yM5LiU57G75Z6L5paH5Lu25a2Y5ZyoXHJcbiAgICAgIGlmIChuYW1lIGluIGV4dGVybmFscykge1xyXG4gICAgICAgIGNvbnN0IGR0c1BhdGggPSByZXNvbHZlKGRpc3REaXIsIGAke25hbWV9LmQudHNgKTtcclxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhkdHNQYXRoKSkge1xyXG4gICAgICAgICAgdmFsaWRNb2R1bGVzLmFkZChuYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIOKchSA1LiDnlJ/miJDmnIDnu4jnmoQgcmVmZXJlbmNlIOihjO+8iOS/neaMgSBteGNhZCDlkowgbXhkcmF3IOWcqOacgOWJje+8iVxyXG4gICAgY29uc3QgZmluYWxSZWZzID0gWydteGNhZCcsICdteGRyYXcnXVxyXG4gICAgICAuZmlsdGVyKG5hbWUgPT4gdmFsaWRNb2R1bGVzLmhhcyhuYW1lKSlcclxuICAgICAgLm1hcChuYW1lID0+IGAvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi8ke25hbWV9LmQudHNcIiAvPmApO1xyXG5cclxuICAgIC8vIOa3u+WKoOWFtuS7liB2YWxpZE1vZHVsZXMg5Lit55qE77yI5Y676YeN77yJXHJcbiAgICBBcnJheS5mcm9tKHZhbGlkTW9kdWxlcylcclxuICAgICAgLmZpbHRlcihuYW1lID0+ICFBTFdBWVNfS0VFUC5oYXMobmFtZSkpXHJcbiAgICAgIC5mb3JFYWNoKG5hbWUgPT4ge1xyXG4gICAgICAgIGZpbmFsUmVmcy5wdXNoKGAvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi8ke25hbWV9LmQudHNcIiAvPmApO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAvLyDinIUgNi4g5ZCI5bm277ya5pyA57uI5byV55SoICsg5Y6f5aeL6Z2e5byV55So6KGMXHJcbiAgICBjb25zdCByZXN1bHRMaW5lcyA9IFsuLi5maW5hbFJlZnMsICcnLCAuLi5ub25SZWZMaW5lcy5maWx0ZXIobCA9PiBsLnRyaW0oKS5sZW5ndGggPiAwKV07XHJcblxyXG4gICAgLy8g56e76Zmk6L+e57ut56m66KGM77yM5L+d55WZ5LiA5Liq5YiG6ZqUXHJcbiAgICBjb25zdCBjbGVhbmVkTGluZXMgPSByZXN1bHRMaW5lcy5maWx0ZXIoKGxpbmUsIGksIGFycikgPT5cclxuICAgICAgIShsaW5lLnRyaW0oKSA9PT0gJycgJiYgaSA+IDAgJiYgYXJyW2kgLSAxXS50cmltKCkgPT09ICcnKVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBuZXdDb250ZW50ID0gY2xlYW5lZExpbmVzLmpvaW4oJ1xcbicpLnRyaW0oKSArICdcXG4nO1xyXG5cclxuICAgIC8vIOKchSA3LiDlhpnlm57mlofku7bvvIjku4XlvZPlhoXlrrnlj5jljJbml7bvvIlcclxuICAgIGlmIChjb250ZW50LnRyaW0oKSAhPT0gbmV3Q29udGVudC50cmltKCkpIHtcclxuICAgICAgZnMud3JpdGVGaWxlU3luYyhpbmRleFBhdGgsIG5ld0NvbnRlbnQsICd1dGYtOCcpO1xyXG4gICAgICBjb25zb2xlLmxvZyhg4pyFIOW3suWQjOatpSBteGNhZC1hcHAvZGlzdC9pbmRleC5kLnRzIOexu+Wei+W8leeUqGApO1xyXG4gICAgICBjb25zb2xlLmxvZyhgICAg5L+d55WZOiAke0FycmF5LmZyb20odmFsaWRNb2R1bGVzKS5qb2luKCcsICcpfWApO1xyXG4gICAgfVxyXG4gIH0gY2F0Y2ggKGVycikge1xyXG4gICAgY29uc29sZS5lcnJvcihg4p2MIOWQjOatpeexu+Wei+W8leeUqOWksei0pTpgLCBlcnIpO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIOmihOWumuS5ieW6k+WQjeWIsOWFqOWxgOWPmOmHj+eahOaYoOWwhFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTElCUkFSWV9NQVA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgbXhjYWQ6ICdNeENBRCcsXHJcbiAgbXhkcmF3OiAnTXgnXHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEV4dGVybmFscyhcclxuICBsaWJyYXJ5TmFtZXM6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz5bJ2xpYnJhcnlOYW1lcyddXHJcbik6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xyXG4gIHN5bmNUeXBlUmVmZXJlbmNlcyhsaWJyYXJ5TmFtZXMpO1xyXG4gIGNvbnN0IHJlc3VsdDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHsgLi4uREVGQVVMVF9MSUJSQVJZX01BUCB9XHJcbiAgaWYgKCFBcnJheS5pc0FycmF5KGxpYnJhcnlOYW1lcykpIHJldHVybiByZXN1bHQ7XHJcbiAgbGlicmFyeU5hbWVzLmZvckVhY2gobmFtZSA9PiB7XHJcbiAgICBpZiAobmFtZSBpbiBleHRlcm5hbHMpIHtcclxuICAgICAgcmVzdWx0W25hbWVdID0gZXh0ZXJuYWxzW25hbWUgYXMga2V5b2YgdHlwZW9mIGV4dGVybmFsc107XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFNvdXJjZUFzc2V0c1BhdGgoKTogc3RyaW5nIHtcclxuICBsZXQgY3VycmVudEZpbGU6IHN0cmluZztcclxuICBpZiAodHlwZW9mIF9fZmlsZW5hbWUgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICBjdXJyZW50RmlsZSA9IF9fZmlsZW5hbWU7XHJcbiAgfSBlbHNlIHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIGN1cnJlbnRGaWxlID0gZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpO1xyXG4gIH1cclxuICBjb25zdCBwYWNrYWdlUm9vdCA9IHJlc29sdmUoY3VycmVudEZpbGUsICcuLicsICcuLicsICcuLicpO1xyXG4gIGNvbnN0IGFzc2V0c1BhdGggPSByZXNvbHZlKHBhY2thZ2VSb290LCBuYW1lLCAnZGlzdCcsICdteGNhZEFwcEFzc2V0cycpO1xyXG4gIGlmICghZnMuZXhpc3RzU3luYyhhc3NldHNQYXRoKSkge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKGBteC1jYWQtYXBwIGFzc2V0cyBub3QgZm91bmQgYXQ6ICR7YXNzZXRzUGF0aH1gKTtcclxuICB9XHJcbiAgcmV0dXJuIGFzc2V0c1BhdGg7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjaGVja1NvdXJjZUFzc2V0c0V4aXN0KCk6IGJvb2xlYW4ge1xyXG4gIGNvbnN0IHBhdGggPSBnZXRTb3VyY2VBc3NldHNQYXRoKCk7XHJcbiAgcmV0dXJuIGZzLmV4aXN0c1N5bmMocGF0aCkgJiYgZnMubHN0YXRTeW5jKHBhdGgpLmlzRGlyZWN0b3J5KCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVJ1bnRpbWVDb25maWdTY3JpcHQocHVibGljUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcclxuICByZXR1cm4gYFxyXG4gICAgPHNjcmlwdD5cclxuICAgICAgd2luZG93Ll9fTVhfQ0FEX0FQUF9BU1NFVF9QQVRIX18gPSAnJHtwdWJsaWNQYXRofSc7XHJcbiAgICA8L3NjcmlwdD5cclxuICBgLnRyaW0oKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNvcHlEaXIoXHJcbiAgc3JjOiBzdHJpbmcsXHJcbiAgZGVzdDogc3RyaW5nLFxyXG4gIHB1YmxpY0Rpcjogc3RyaW5nLFxyXG4gIG9wdGlvbnM6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz4sXHJcbiAgY2FsbGJhY2s6IChlcnI/OiBFcnJvcikgPT4gdm9pZFxyXG4pOiB2b2lkIHtcclxuICAvLyDnrKzkuIDmraXvvJrmiavmj48gcHVibGljRGlyIOS4i+aJgOacieaWh+S7tu+8iOebuOWvueS6jiBwdWJsaWNEaXIg55qE6Lev5b6E77yJXHJcbiAgc2NhblB1YmxpY0RpcihwdWJsaWNEaXIsIChlcnIsIHB1YmxpY0ZpbGVzKSA9PiB7XHJcbiAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcclxuXHJcbiAgICAvLyDnrKzkuozmraXvvJrlvIDlp4vlpI3liLbvvIzkvKDlhaUgcHVibGljRmlsZXMg57yT5a2YXHJcbiAgICBkb0NvcHkoc3JjLCBkZXN0LCBwdWJsaWNEaXIsIHB1YmxpY0ZpbGVzISwgb3B0aW9ucywgY2FsbGJhY2spO1xyXG4gIH0pO1xyXG59XHJcblxyXG4vLyDlrp7pmYXmiafooYzlpI3liLbnmoTlh73mlbBcclxuZnVuY3Rpb24gZG9Db3B5KFxyXG4gIHNyYzogc3RyaW5nLFxyXG4gIGRlc3Q6IHN0cmluZyxcclxuICBwdWJsaWNEaXI6IHN0cmluZyxcclxuICBwdWJsaWNGaWxlczogU2V0PHN0cmluZz4sXHJcbiAgb3B0aW9uczogUmVxdWlyZWQ8TXhDYWRBc3NldHNQbHVnaW5PcHRpb25zPiwgLy8g5rOo5oSP77ya6L+Z6YeM6ZyA6KaB56Gu5L+dIGVuYWJsZUNvbXByZXNzZWRBc3NldHMg5piv5b+F6YCJ55qEXHJcbiAgY2FsbGJhY2s6IChlcnI/OiBFcnJvcikgPT4gdm9pZFxyXG4pIHtcclxuICBmcy5ta2RpcihkZXN0LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9LCAoZXJyKSA9PiB7XHJcbiAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcclxuXHJcbiAgICBmcy5yZWFkZGlyKHNyYywgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0sIChlcnIsIGRpcmVudHMpID0+IHtcclxuICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XHJcblxyXG4gICAgICBsZXQgcGVuZGluZyA9IGRpcmVudHMubGVuZ3RoO1xyXG4gICAgICBpZiAocGVuZGluZyA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKCk7XHJcblxyXG4gICAgICAvLyDmj5DliY3lrprkuYnljovnvKnmlofku7bmianlsZXlkI1cclxuICAgICAgY29uc3QgY29tcHJlc3NlZEV4dHMgPSBbJy5neiddOyAvLyDlj6/mjInpnIDmianlsZVcclxuXHJcbiAgICAgIGRpcmVudHMuZm9yRWFjaCgoZGlyZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc3JjUGF0aCA9IHJlc29sdmUoc3JjLCBkaXJlbnQubmFtZSk7XHJcbiAgICAgICAgY29uc3QgZGVzdFBhdGggPSByZXNvbHZlKGRlc3QsIGRpcmVudC5uYW1lKTtcclxuICAgICAgICBjb25zdCByZWxhdGl2ZVBhdGggPSByZWxhdGl2ZShzcmMsIHNyY1BhdGgpLnJlcGxhY2UoL1xcXFwvZywgJy8nKSBhcyBDb25maWdGaWxlbmFtZTtcclxuXHJcbiAgICAgICAgLy8g5paw5aKe77ya5aaC5p6c56aB55So5Y6L57yp6LWE5rqQ5LiU5piv5Y6L57yp5paH5Lu277yM5YiZ6Lez6L+HXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgIW9wdGlvbnMuZW5hYmxlQ29tcHJlc3NlZEFzc2V0cyAmJlxyXG4gICAgICAgICAgY29tcHJlc3NlZEV4dHMuc29tZShleHQgPT4gcmVsYXRpdmVQYXRoLmVuZHNXaXRoKGV4dCkpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpZiAoLS1wZW5kaW5nID09PSAwKSBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGRpcmVudC5pc0RpcmVjdG9yeSgpKSB7XHJcbiAgICAgICAgICBkb0NvcHkoc3JjUGF0aCwgZGVzdFBhdGgsIHB1YmxpY0RpciwgcHVibGljRmlsZXMsIG9wdGlvbnMsICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKC0tcGVuZGluZyA9PT0gMCkgY2FsbGJhY2soKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZGlyZW50LmlzRmlsZSgpKSB7XHJcbiAgICAgICAgICBpZiAocHVibGljRmlsZXMuaGFzKHJlbGF0aXZlUGF0aCkpIHtcclxuICAgICAgICAgICAgY29uc3QgcHVibGljRmlsZVBhdGggPSByZXNvbHZlKHB1YmxpY0RpciwgcmVsYXRpdmVQYXRoKTtcclxuICAgICAgICAgICAgZnMuY29weUZpbGUocHVibGljRmlsZVBhdGgsIGRlc3RQYXRoLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XHJcbiAgICAgICAgICAgICAgaWYgKC0tcGVuZGluZyA9PT0gMCkgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKENPTkZJR19GSUxFTkFNRVMuaW5jbHVkZXMocmVsYXRpdmVQYXRoKSkge1xyXG4gICAgICAgICAgICBoYW5kbGVDb25maWdGaWxlKHNyY1BhdGgsIGRlc3RQYXRoLCByZWxhdGl2ZVBhdGgsIG9wdGlvbnMsIChlcnIpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcclxuICAgICAgICAgICAgICBpZiAoLS1wZW5kaW5nID09PSAwKSBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGZzLmNvcHlGaWxlKHNyY1BhdGgsIGRlc3RQYXRoLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XHJcbiAgICAgICAgICAgICAgaWYgKC0tcGVuZGluZyA9PT0gMCkgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICgtLXBlbmRpbmcgPT09IDApIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG59XHJcbi8vIOaJq+aPjyBwdWJsaWNEaXIg5LiL5omA5pyJ5paH5Lu277yM6L+U5Zue55u45a+55LqOIHB1YmxpY0RpciDnmoTot6/lvoTpm4blkIhcclxuZnVuY3Rpb24gc2NhblB1YmxpY0RpcihcclxuICBwdWJsaWNEaXI6IHN0cmluZyxcclxuICBjYWxsYmFjazogKGVycjogTm9kZUpTLkVycm5vRXhjZXB0aW9uIHwgbnVsbCwgZmlsZXM/OiBTZXQ8c3RyaW5nPikgPT4gdm9pZFxyXG4pIHtcclxuICBjb25zdCByZXN1bHQgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuXHJcbiAgZnVuY3Rpb24gd2FsayhkaXI6IHN0cmluZykge1xyXG4gICAgZnMucmVhZGRpcihkaXIsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9LCAoZXJyLCBkaXJlbnRzKSA9PiB7XHJcbiAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xyXG5cclxuICAgICAgbGV0IHBlbmRpbmcgPSBkaXJlbnRzLmxlbmd0aDtcclxuICAgICAgaWYgKHBlbmRpbmcgPT09IDApIHtcclxuICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZGlyZW50cy5mb3JFYWNoKChkaXJlbnQpID0+IHtcclxuICAgICAgICBjb25zdCBmdWxsUGF0aCA9IHJlc29sdmUoZGlyLCBkaXJlbnQubmFtZSk7XHJcbiAgICAgICAgY29uc3QgcmVsUGF0aCA9IHJlbGF0aXZlKHB1YmxpY0RpciwgZnVsbFBhdGgpLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcclxuXHJcbiAgICAgICAgaWYgKGRpcmVudC5pc0RpcmVjdG9yeSgpKSB7XHJcbiAgICAgICAgICB3YWxrKGZ1bGxQYXRoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGRpcmVudC5pc0ZpbGUoKSkge1xyXG4gICAgICAgICAgcmVzdWx0LmFkZChyZWxQYXRoKTtcclxuICAgICAgICAgIGlmICgtLXBlbmRpbmcgPT09IDApIHtcclxuICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKC0tcGVuZGluZyA9PT0gMCkge1xyXG4gICAgICAgICAgICBjYWxsYmFjayhudWxsLCByZXN1bHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHdhbGsocHVibGljRGlyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnRlbnRUeXBlKGZpbGVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIGNvbnN0IGV4dCA9IGZpbGVQYXRoLnNwbGl0KCcuJykucG9wKCk/LnRvTG93ZXJDYXNlKCkgfHwgJyc7XHJcbiAgY29uc3QgdHlwZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgICAnY3NzJzogJ3RleHQvY3NzJyxcclxuICAgICdqcyc6ICdhcHBsaWNhdGlvbi9qYXZhc2NyaXB0JyxcclxuICAgICdqc29uJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgJ3BuZyc6ICdpbWFnZS9wbmcnLFxyXG4gICAgJ2pwZyc6ICdpbWFnZS9qcGVnJyxcclxuICAgICdqcGVnJzogJ2ltYWdlL2pwZWcnLFxyXG4gICAgJ2dpZic6ICdpbWFnZS9naWYnLFxyXG4gICAgJ3N2Zyc6ICdpbWFnZS9zdmcreG1sJyxcclxuICAgICd3b2ZmJzogJ2ZvbnQvd29mZicsXHJcbiAgICAnd29mZjInOiAnZm9udC93b2ZmMicsXHJcbiAgICAndHRmJzogJ2ZvbnQvdHRmJyxcclxuICAgICdlb3QnOiAnYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3QnLFxyXG4gICAgJ2ljbyc6ICdpbWFnZS94LWljb24nLFxyXG4gICAgJ3dhc20nOiAnYXBwbGljYXRpb24vd2FzbScsXHJcbiAgICAnemlwJzogJ2FwcGxpY2F0aW9uL3ppcCcsXHJcbiAgICAncmFyJzogJ2FwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQnLFxyXG4gICAgJzd6JzogJ2FwcGxpY2F0aW9uL3gtN3otY29tcHJlc3NlZCcsXHJcbiAgICAndGFyJzogJ2FwcGxpY2F0aW9uL3gtdGFyJyxcclxuICAgICdneic6ICdhcHBsaWNhdGlvbi9nemlwJyxcclxuICAgICdiejInOiAnYXBwbGljYXRpb24veC1iemlwMicsXHJcbiAgICAneHonOiAnYXBwbGljYXRpb24veC14eidcclxuICB9O1xyXG4gIHJldHVybiB0eXBlc1tleHRdIHx8ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIOagh+WHhuWMlui3r+W+hO+8jOehruS/neS7pSAnLycg57uT5bC+XHJcbiAqL1xyXG5mdW5jdGlvbiBub3JtYWxpemVQYXRoKHA6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHJlc29sdmUocCkucmVwbGFjZSgvXFxcXC9nLCAnLycpICsgJy8nO1xyXG59XHJcblxyXG4vKipcclxuICog5Yib5bu66YCa55So5Lit6Ze05Lu277ya5LyY5YWI5L2/55SoIHB1YmxpYyDotYTmupDvvIzlm57pgIDliLAgc291cmNlQXNzZXRzUGF0aFxyXG4gKiDlr7nmoIcgY3JlYXRlU3RhdGljTWlkZGxld2FyZSDpo47moLxcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNeENhZEFzc2V0c01pZGRsZXdhcmUoXHJcbiAgcm9vdDogc3RyaW5nLFxyXG4gIG9wdGlvbnM6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz4sXHJcbiAgcHVibGljRGlyOiBzdHJpbmcsXHJcbiAgbG9nZ2VyPzogYW55XHJcbikge1xyXG4gIGNvbnN0IHsgb3V0cHV0RGlyLCBpc1dhc21TdCA9IGZhbHNlIH0gPSBvcHRpb25zO1xyXG4gIC8vIOKchSAxLiDop4TojIPljJbot6/lvoRcclxuICBjb25zdCBiYXNlUGF0aCA9IGAvJHtvdXRwdXREaXIucmVwbGFjZSgvXlxcLysvLCAnJyl9YDsgLy8gJy9teGNhZEFwcEFzc2V0cydcclxuICBjb25zdCBzb3VyY2VBc3NldHNSb290ID0gbm9ybWFsaXplUGF0aChyb290KTtcclxuXHJcbiAgcmV0dXJuIGFzeW5jIChyZXE6IGFueSwgcmVzOiBhbnksIG5leHQ6ICgpID0+IHZvaWQpID0+IHtcclxuICAgIC8vIOKchSAyLiDln7rmnKzmoKHpqoxcclxuICAgIGlmICghcmVxLnVybCB8fCB0eXBlb2YgcmVxLnVybCAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgcmV0dXJuIG5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDinIUgMy4g6K6+572u5a6J5YWo5aS077yI6Z2eIGlzV2FzbVN0IOaooeW8j++8iVxyXG4gICAgaWYgKCFpc1dhc21TdCkge1xyXG4gICAgICByZXMuc2V0SGVhZGVyKCdDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeScsICdzYW1lLW9yaWdpbicpO1xyXG4gICAgICByZXMuc2V0SGVhZGVyKCdDcm9zcy1PcmlnaW4tRW1iZWRkZXItUG9saWN5JywgJ3JlcXVpcmUtY29ycCcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOKchSA0LiDop6PmnpAgVVJMIOi3r+W+hO+8iOWOuyBxdWVyee+8jOino+egge+8iVxyXG4gICAgY29uc3QgdXJsUGF0aCA9IHJlcS51cmwuc3BsaXQoJz8nKVswXTtcclxuICAgIGxldCBmaWxlUGF0aCE6IHN0cmluZztcclxuICAgIGxldCBmaWxlTmFtZSE6IHN0cmluZztcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBkZWNvZGVkUGF0aCA9IGRlY29kZVVSSUNvbXBvbmVudCh1cmxQYXRoKTtcclxuICAgICAgLy8g6KeE6IyD5YyW6Lev5b6E77yM6Ziy5q2iIC4uLy4uLyDotormnYNcclxuICAgICAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBkZWNvZGVkUGF0aC5yZXBsYWNlKC9eWy9cXFxcXSsvLCAnJyk7XHJcblxyXG4gICAgICAvLyDinIUgNS4g5LyY5YWI77ya5qOA5p+lIHB1YmxpYy8ke291dHB1dERpcn0g55uu5b2VXHJcbiAgICAgIGNvbnN0IHB1YmxpY0ZpbGVQYXRoID0gam9pbihwdWJsaWNEaXIsIG5vcm1hbGl6ZWRQYXRoKS5yZXBsYWNlKC9cXFxcL2csICcvJyk7XHJcblxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHN0YXQgPSBhd2FpdCBmcy5wcm9taXNlcy5zdGF0KHB1YmxpY0ZpbGVQYXRoKTtcclxuICAgICAgICBpZiAoc3RhdC5pc0ZpbGUoKSkge1xyXG4gICAgICAgICAgZmlsZVBhdGggPSBwdWJsaWNGaWxlUGF0aDtcclxuICAgICAgICAgIGZpbGVOYW1lID0gYmFzZW5hbWUobm9ybWFsaXplZFBhdGgpO1xyXG4gICAgICAgICAgcmV0dXJuIHNlcnZlRmlsZShmaWxlUGF0aCwgZmlsZU5hbWUsIHJlcywgbG9nZ2VyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIC8vIHB1YmxpYyDkuK3msqHmnInvvIznu6fnu63mn6Xmib4gc291cmNlQXNzZXRzUGF0aFxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyDinIUgNi4gZmFsbGJhY2vvvJrmn6Xmib4gc291cmNlQXNzZXRzUGF0aFxyXG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlU2FmZVBhdGgoZGVjb2RlZFBhdGgsIHNvdXJjZUFzc2V0c1Jvb3QsIGJhc2VQYXRoKTtcclxuICAgICAgaWYgKCFyZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gcmVzdWx0LnN0YXR1c0NvZGUgfHwgNDAwO1xyXG4gICAgICAgIHJldHVybiByZXMuZW5kKHJlc3VsdC5tZXNzYWdlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHJlc3VsdC5maWxlUGF0aCkgZmlsZVBhdGggPSByZXN1bHQuZmlsZVBhdGg7XHJcbiAgICAgIGlmIChyZXN1bHQuZmlsZU5hbWUpIGZpbGVOYW1lID0gcmVzdWx0LmZpbGVOYW1lO1xyXG5cclxuICAgICAgLy8g4pyFIDcuIOWwneivleeUsSBoYW5kbGVDb25maWdSZXF1ZXN0IOWkhOeQhu+8iOWmguazqOWFpemFjee9ru+8iVxyXG4gICAgICBjb25zdCBoYW5kbGVkID0gYXdhaXQgaGFuZGxlQ29uZmlnUmVxdWVzdChcclxuICAgICAgICBmaWxlUGF0aCxcclxuICAgICAgICBmaWxlTmFtZSxcclxuICAgICAgICBvcHRpb25zLFxyXG4gICAgICAgIHJlcyxcclxuICAgICAgICBsb2dnZXJcclxuICAgICAgKTtcclxuICAgICAgaWYgKGhhbmRsZWQpIHJldHVybjtcclxuXHJcbiAgICAgIC8vIOKchSA4LiDnoa7kv53mmK/mlofku7ZcclxuICAgICAgY29uc3Qgc3RhdCA9IGF3YWl0IGZzLnByb21pc2VzLnN0YXQoZmlsZVBhdGgpO1xyXG4gICAgICBpZiAoIXN0YXQuaXNGaWxlKCkpIHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICByZXR1cm4gcmVzLmVuZCgnRmlsZSBub3QgZm91bmQnKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHNlcnZlRmlsZShmaWxlUGF0aCwgZmlsZU5hbWUsIHJlcywgbG9nZ2VyKTtcclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICBsb2dnZXI/Lndhcm4/LihgW014Q2FkQXNzZXRzXSBTZXJ2ZSBmYWlsZWQgZm9yICR7cmVxLnVybH06ICR7KGVyciBhcyBFcnJvcikubWVzc2FnZX1gKTtcclxuICAgICAgaWYgKHJlcy5oZWFkZXJzU2VudCkgcmV0dXJuO1xyXG4gICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgcmVzLmVuZCgnRmlsZSBub3QgZm91bmQnKTtcclxuICAgIH1cclxuICB9O1xyXG59XHJcblxyXG4vKipcclxuICog5bCB6KOF5paH5Lu25ZON5bqU6YC76L6R77yI5rWB5byP5Lyg6L6T77yJXHJcbiAqL1xyXG5mdW5jdGlvbiBzZXJ2ZUZpbGUoZmlsZVBhdGg6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZywgcmVzOiBhbnksIGxvZ2dlcj86IGFueSkge1xyXG4gIGNvbnN0IHN0cmVhbSA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0oZmlsZVBhdGgpO1xyXG5cclxuICBzdHJlYW0ub24oJ2Vycm9yJywgKGVycjogTm9kZUpTLkVycm5vRXhjZXB0aW9uKSA9PiB7XHJcbiAgICBpZiAocmVzLmhlYWRlcnNTZW50KSByZXR1cm47XHJcbiAgICBpZiAoZXJyLmNvZGUgPT09ICdFTk9FTlQnIHx8IGVyci5jb2RlID09PSAnRUFDQ0VTJykge1xyXG4gICAgICByZXR1cm4gcmVzLnN0YXR1c0NvZGUgPT09IDIwMCA/IHJlcy5lbmQoKSA6IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIGxvZ2dlcj8uZXJyb3I/LihgW014Q2FkQXNzZXRzXSBSZWFkIGVycm9yOiAke2Vyci5tZXNzYWdlfWAsIGVycik7XHJcbiAgICByZXMuc3RhdHVzQ29kZSA9IDUwMDtcclxuICAgIHJlcy5lbmQoJ0ludGVybmFsIFNlcnZlciBFcnJvcicpO1xyXG4gIH0pO1xyXG5cclxuICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCBnZXRDb250ZW50VHlwZShmaWxlTmFtZSkpO1xyXG4gIHJlcy5zZXRIZWFkZXIoJ1gtQ29udGVudC1UeXBlLU9wdGlvbnMnLCAnbm9zbmlmZicpO1xyXG5cclxuICBzdHJlYW0ucGlwZShyZXMpO1xyXG59Il0sIm5hbWVzIjpbImpvaW4iLCJyZXNvbHZlIiwiYmFzZW5hbWUiLCJlcnIiLCJuYW1lIiwiZmlsZVVSTFRvUGF0aCIsInJlbGF0aXZlIiwic3RhdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
3
|
const path = require("path");
|
|
4
4
|
const fs = require("fs");
|
|
5
|
-
const index = require("../index-
|
|
5
|
+
const index = require("../index-DRKNKLRx.js");
|
|
6
6
|
function _interopNamespaceDefault(e) {
|
|
7
7
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
8
8
|
if (e) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { resolve } from "path";
|
|
2
2
|
import * as fs from "fs";
|
|
3
|
-
import { r as resolveOptions, g as getSourceAssetsPath, a as getExternals, f as generateRuntimeConfigScript, c as copyDir, h as getContentType, b as createGlobalUniversalMiddleware, e as getApiMap } from "../index-
|
|
3
|
+
import { r as resolveOptions, g as getSourceAssetsPath, a as getExternals, f as generateRuntimeConfigScript, c as copyDir, h as getContentType, b as createGlobalUniversalMiddleware, e as getApiMap } from "../index-C-cFEcIk.mjs";
|
|
4
4
|
function mxcadAssetsPlugin(options = {}) {
|
|
5
5
|
const resolvedOptions = resolveOptions(options);
|
|
6
6
|
const sourceAssetsPath = getSourceAssetsPath();
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
3
|
const path = require("path");
|
|
4
4
|
const fs = require("fs");
|
|
5
|
-
const index = require("../index-
|
|
5
|
+
const index = require("../index-DRKNKLRx.js");
|
|
6
6
|
function _interopNamespaceDefault(e) {
|
|
7
7
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
8
8
|
if (e) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { resolve } from "path";
|
|
2
2
|
import * as fs from "fs";
|
|
3
|
-
import { r as resolveOptions, g as getSourceAssetsPath, a as getExternals, c as copyDir, b as createGlobalUniversalMiddleware, d as createMxCadAssetsMiddleware, e as getApiMap, f as generateRuntimeConfigScript } from "../index-
|
|
3
|
+
import { r as resolveOptions, g as getSourceAssetsPath, a as getExternals, c as copyDir, b as createGlobalUniversalMiddleware, d as createMxCadAssetsMiddleware, e as getApiMap, f as generateRuntimeConfigScript } from "../index-C-cFEcIk.mjs";
|
|
4
4
|
function mxcadAssetsPlugin(options = {}) {
|
|
5
5
|
let config;
|
|
6
6
|
const resolvedOptions = resolveOptions(options);
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
|
|
|
3
3
|
const webpack = require("webpack");
|
|
4
4
|
const fs = require("fs");
|
|
5
5
|
const path = require("path");
|
|
6
|
-
const index = require("../index-
|
|
6
|
+
const index = require("../index-DRKNKLRx.js");
|
|
7
7
|
function _interopNamespaceDefault(e) {
|
|
8
8
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
9
9
|
if (e) {
|
|
@@ -200,7 +200,10 @@ class MxCadAssetsWebpackPlugin {
|
|
|
200
200
|
} else {
|
|
201
201
|
logger.info(`[mxcad-assets] ✅ Copied to ${targetAssetsPath}`);
|
|
202
202
|
}
|
|
203
|
-
|
|
203
|
+
try {
|
|
204
|
+
callback(err2);
|
|
205
|
+
} catch (e) {
|
|
206
|
+
}
|
|
204
207
|
});
|
|
205
208
|
});
|
|
206
209
|
}
|
|
@@ -250,4 +253,4 @@ function isSource(asset) {
|
|
|
250
253
|
}
|
|
251
254
|
exports.MxCadAssetsWebpackPlugin = MxCadAssetsWebpackPlugin;
|
|
252
255
|
exports.default = MxCadAssetsWebpackPlugin;
|
|
253
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrVG9vbFBsdWdpblNyYy93ZWJwYWNrL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIE14Q2FkQXNzZXRzV2VicGFja1BsdWdpbi50c1xyXG4vLyBAdHMtaWdub3JlXHJcbmltcG9ydCB7IENvbXBpbGVyLCBDb21waWxhdGlvbiB9IGZyb20gJ3dlYnBhY2snO1xyXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XHJcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XHJcblxyXG5pbXBvcnQge1xyXG4gIE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucyxcclxuICByZXNvbHZlT3B0aW9ucyxcclxuICBnZXRTb3VyY2VBc3NldHNQYXRoLFxyXG4gIGdlbmVyYXRlUnVudGltZUNvbmZpZ1NjcmlwdCxcclxuICBnZXRDb250ZW50VHlwZSxcclxuICBjb3B5RGlyIGFzIHNoYXJlZENvcHlEaXIsXHJcbiAgZ2V0RXh0ZXJuYWxzLFxyXG4gIGhhbmRsZUNvbmZpZ1JlcXVlc3QsXHJcbiAgcmVzb2x2ZVNhZmVQYXRoLFxyXG4gIGNyZWF0ZUdsb2JhbFVuaXZlcnNhbE1pZGRsZXdhcmUsXHJcbiAgY3JlYXRlTXhDYWRBc3NldHNNaWRkbGV3YXJlLFxyXG59IGZyb20gJy4uL3NoYXJlZCc7XHJcblxyXG5leHBvcnQgY2xhc3MgTXhDYWRBc3NldHNXZWJwYWNrUGx1Z2luIHtcclxuICBwcml2YXRlIG9wdGlvbnM6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz47XHJcbiAgcHJpdmF0ZSBzb3VyY2VBc3NldHNQYXRoOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSByZXNvbHZlZENvbmZpZz86IHtcclxuICAgIGlzUHJvZHVjdGlvbjogYm9vbGVhbjtcclxuICAgIHB1YmxpY1BhdGg6IHN0cmluZztcclxuICAgIG91dHB1dERpcjogc3RyaW5nO1xyXG4gICAgbG9nZ2VyOiBhbnk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3Iob3B0aW9ucz86IE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucykge1xyXG4gICAgdGhpcy5vcHRpb25zID0gcmVzb2x2ZU9wdGlvbnMob3B0aW9ucyk7XHJcbiAgICB0aGlzLnNvdXJjZUFzc2V0c1BhdGggPSBnZXRTb3VyY2VBc3NldHNQYXRoKCk7XHJcblxyXG4gICAgLy8g8J+UpSDlvLrliLbpqozor4Egc291cmNlQXNzZXRzUGF0aCDlrZjlnKhcclxuICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLnNvdXJjZUFzc2V0c1BhdGgpKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgW214Y2FkLWFzc2V0c10gU291cmNlIGFzc2V0cyBub3QgZm91bmQ6ICR7dGhpcy5zb3VyY2VBc3NldHNQYXRofWApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXBwbHkoY29tcGlsZXI6IENvbXBpbGVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBsb2dnZXIgPSBjb21waWxlci5nZXRJbmZyYXN0cnVjdHVyZUxvZ2dlcignTXhDYWRBc3NldHNQbHVnaW4nKTtcclxuICAgIC8vIPCfjLEgMS4gY29uZmlnUmVzb2x2ZWRcclxuICAgIHRoaXMuY29uZmlnUmVzb2x2ZWQoY29tcGlsZXIsIGxvZ2dlcik7XHJcbiAgICBjb25zdCBpc0RldlNlcnZlck1vZGUgPSBjb21waWxlci5vcHRpb25zLm1vZGUgIT09ICdwcm9kdWN0aW9uJ1xyXG5cclxuICAgIC8vIPCflKcgMi4g5by65Yi25rOo5YWlIGRldlNlcnZlcu+8iOaguOW/g++8iVxyXG4gICAgaWYgKGlzRGV2U2VydmVyTW9kZSkge1xyXG4gICAgICB0aGlzLmZvcmNlQ29uZmlndXJlRGV2U2VydmVyKGNvbXBpbGVyLCBsb2dnZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOWcqOi/memHjOiuv+mXruWSjOS/ruaUuSB3ZWJwYWNrIOmFjee9rlxyXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLmV4dGVybmFscykge1xyXG4gICAgICBjb21waWxlci5vcHRpb25zLmV4dGVybmFscyA9IHt9O1xyXG4gICAgfVxyXG4gICAgLy8g5re75Yqg5oiW6KaG55uWIGV4dGVybmFscyDphY3nva5cclxuICAgIE9iamVjdC5hc3NpZ24oY29tcGlsZXIub3B0aW9ucy5leHRlcm5hbHMsIGdldEV4dGVybmFscyh0aGlzLm9wdGlvbnMubGlicmFyeU5hbWVzKSk7XHJcbiAgICAvLyDwn5OmIDMuIOaehOW7uuaXtuWkjeWItlxyXG4gICAgdGhpcy5jbG9zZUJ1bmRsZShjb21waWxlciwgbG9nZ2VyKTtcclxuXHJcbiAgICAvLyDwn46oIDQuIEhUTUwg5rOo5YWlXHJcbiAgICB0aGlzLnRyYW5zZm9ybUluZGV4SHRtbChjb21waWxlciwgbG9nZ2VyKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uZmlnUmVzb2x2ZWQoY29tcGlsZXI6IENvbXBpbGVyLCBsb2dnZXI6IGFueSkge1xyXG4gICAgY29uc3QgeyBvdXRwdXREaXIgfSA9IHRoaXMub3B0aW9ucztcclxuICAgIGNvbnN0IGlzUHJvZHVjdGlvbiA9IGNvbXBpbGVyLm9wdGlvbnMubW9kZSA9PT0gJ3Byb2R1Y3Rpb24nO1xyXG4gICAgY29uc3QgcHVibGljUGF0aCA9IHRoaXMuaW5mZXJQdWJsaWNQYXRoKGNvbXBpbGVyKTtcclxuXHJcbiAgICB0aGlzLnJlc29sdmVkQ29uZmlnID0ge1xyXG4gICAgICBpc1Byb2R1Y3Rpb24sXHJcbiAgICAgIHB1YmxpY1BhdGgsXHJcbiAgICAgIG91dHB1dERpcixcclxuICAgICAgbG9nZ2VyLFxyXG4gICAgfTtcclxuXHJcbiAgICBsb2dnZXIuaW5mbyhgW214Y2FkLWFzc2V0c10g8J+agCBSZXNvbHZlZDogcHVibGljUGF0aD0ke3B1YmxpY1BhdGh9YCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluZmVyUHVibGljUGF0aChjb21waWxlcjogQ29tcGlsZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgeyBvdXRwdXREaXIgfSA9IHRoaXMub3B0aW9ucztcclxuICAgIGNvbnN0IG91dHB1dE9wdGlvbnMgPSBjb21waWxlci5vcHRpb25zLm91dHB1dCB8fCB7fTtcclxuICAgIGNvbnN0IGRldlNlcnZlciA9IGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyO1xyXG5cclxuICAgIGlmICh0eXBlb2Ygb3V0cHV0T3B0aW9ucy5wdWJsaWNQYXRoID09PSAnc3RyaW5nJykge1xyXG4gICAgICBjb25zdCBiYXNlID0gb3V0cHV0T3B0aW9ucy5wdWJsaWNQYXRoID09PSAnYXV0bycgPyAnLycgOiBvdXRwdXRPcHRpb25zLnB1YmxpY1BhdGg7XHJcbiAgICAgIHJldHVybiBlbnN1cmVMZWFkaW5nU2xhc2goYmFzZSkgKyBvdXRwdXREaXIgKyAnLyc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRldlNlcnZlcikge1xyXG4gICAgICBpZiAodHlwZW9mIChkZXZTZXJ2ZXIgYXMgYW55KS5wdWJsaWNQYXRoID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGNvbnN0IGJhc2UgPSAoZGV2U2VydmVyIGFzIGFueSkucHVibGljUGF0aCA9PT0gJ2F1dG8nID8gJy8nIDogKGRldlNlcnZlciBhcyBhbnkpLnB1YmxpY1BhdGg7XHJcbiAgICAgICAgcmV0dXJuIGVuc3VyZUxlYWRpbmdTbGFzaChiYXNlKSArIG91dHB1dERpciArICcvJztcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCdzdGF0aWMnIGluIGRldlNlcnZlcikge1xyXG4gICAgICAgIGNvbnN0IHN0YXRpY0l0ZW1zID0gQXJyYXkuaXNBcnJheShkZXZTZXJ2ZXIuc3RhdGljKVxyXG4gICAgICAgICAgPyBkZXZTZXJ2ZXIuc3RhdGljXHJcbiAgICAgICAgICA6IChkZXZTZXJ2ZXIuc3RhdGljID8gW2RldlNlcnZlci5zdGF0aWNdIDogW10pO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygc3RhdGljSXRlbXMpIHtcclxuICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyA/IGl0ZW0gOiB7IGRpcmVjdG9yeTogaXRlbSB9O1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiBjb25maWcucHVibGljUGF0aCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGVuc3VyZUxlYWRpbmdTbGFzaChjb25maWcucHVibGljUGF0aCkgKyBvdXRwdXREaXIgKyAnLyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGAke291dHB1dERpcn0vYDtcclxuICB9XHJcblxyXG4gIC8vIPCflKUg5qC45b+D77ya5by65Yi25rOo5YWlIGRldlNlcnZlclxyXG4gIHByaXZhdGUgZm9yY2VDb25maWd1cmVEZXZTZXJ2ZXIoY29tcGlsZXI6IENvbXBpbGVyLCBsb2dnZXI6IGFueSkge1xyXG4gICAgY29uc3QgeyBvdXRwdXREaXIgfSA9IHRoaXMub3B0aW9ucztcclxuICAgIGNvbnN0IGJhc2VQYXRoID0gYC8ke291dHB1dERpci5yZXBsYWNlKC9eXFwvKy8sICcnKX1gO1xyXG4gICAgbGV0IGRldlNlcnZlckNvbmZpZyA9IGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyO1xyXG5cclxuICAgIGlmICghZGV2U2VydmVyQ29uZmlnKSB7XHJcbiAgICAgIChjb21waWxlci5vcHRpb25zIGFzIGFueSkuZGV2U2VydmVyID0gZGV2U2VydmVyQ29uZmlnID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIDEuIOWFiOWkhOeQhiBXRFMgdjTvvIjkv53mjIHkuI3lj5jvvIlcclxuICAgIGNvbnN0IGhhc1NldHVwTWlkZGxld2FyZXMgPSAnc2V0dXBNaWRkbGV3YXJlcycgaW4gZGV2U2VydmVyQ29uZmlnO1xyXG5cclxuICAgIGlmIChoYXNTZXR1cE1pZGRsZXdhcmVzKSB7XHJcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKTtcclxuICAgICAgY29uc3QgZGVmYXVsdFB1YmxpY0RpciA9IHBhdGguam9pbihjb250ZXh0LCAncHVibGljJywgdGhpcy5vcHRpb25zLm91dHB1dERpcik7XHJcbiAgICAgIGNvbnN0IG9yaWdpbmFsID0gZGV2U2VydmVyQ29uZmlnLnNldHVwTWlkZGxld2FyZXM7XHJcbiAgICAgIGRldlNlcnZlckNvbmZpZy5zZXR1cE1pZGRsZXdhcmVzID0gKG1pZGRsZXdhcmVzLCBzZXJ2ZXIpID0+IHtcclxuICAgICAgICBsb2dnZXIuaW5mbyhgW214Y2FkLWFzc2V0c10g8J+foiBJbmplY3RpbmcgbWlkZGxld2FyZSB2aWEgc2V0dXBNaWRkbGV3YXJlc2ApO1xyXG4gICAgICAgIHNlcnZlci5hcHAudXNlKGNyZWF0ZUdsb2JhbFVuaXZlcnNhbE1pZGRsZXdhcmUodGhpcy5vcHRpb25zKSk7XHJcbiAgICAgICAgc2VydmVyLmFwcC51c2UoYmFzZVBhdGgsIGNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSh0aGlzLnNvdXJjZUFzc2V0c1BhdGgsIHRoaXMub3B0aW9ucywgZGVmYXVsdFB1YmxpY0RpciwgbG9nZ2VyKSk7XHJcblxyXG4gICAgICAgIHJldHVybiBvcmlnaW5hbD8uKG1pZGRsZXdhcmVzLCBzZXJ2ZXIpIHx8IG1pZGRsZXdhcmVzO1xyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyDwn5SlIDIuIFdEUyB2M++8muWKq+aMgSBTZXJ2ZXIucHJvdG90eXBlLmxpc3RlblxyXG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0TWlkZGxld2FyZUZvcldEU3YzKGNvbXBpbGVyLCBiYXNlUGF0aCwgbG9nZ2VyKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5qZWN0TWlkZGxld2FyZUZvcldEU3YzKGNvbXBpbGVyOiBDb21waWxlciwgYmFzZVBhdGg6IHN0cmluZywgbG9nZ2VyOiBhbnkpIHtcclxuICAgIGNvbnN0IHRoaXNPcHRpb25zID0gdGhpcztcclxuICAgIGNvbnN0IGNvbnRleHQgPSBjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKTtcclxuICAgIGNvbnN0IGRlZmF1bHRQdWJsaWNEaXIgPSBwYXRoLmpvaW4oY29udGV4dCwgJ3B1YmxpYycsIHRoaXMub3B0aW9ucy5vdXRwdXREaXIpO1xyXG4gICAgLy8gV0RTIHYzIOS8muWcqCBjb21waWxhdGlvbiDml7bmmrTpnLIgZGV2U2VydmVyXHJcbiAgICBjb25zdCBkZXZTZXJ2ZXIgPSBjb21waWxlci5kZXZTZXJ2ZXI7XHJcbiAgICBpZiAoZGV2U2VydmVyKSB7XHJcbiAgICAgIC8vIOKchSDmlrnms5UgMe+8muWmguaenCBkZXZTZXJ2ZXIuc2VydmVyIOWtmOWcqO+8iOW3suWIm+W7uu+8iVxyXG4gICAgICBpZiAoZGV2U2VydmVyLnNlcnZlciAmJiBkZXZTZXJ2ZXIuc2VydmVyLmFwcCkge1xyXG4gICAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDwn5+iIEluamVjdGluZyBtaWRkbGV3YXJlIGRpcmVjdGx5IGludG8gZGV2U2VydmVyLnNlcnZlci5hcHBgKTtcclxuICAgICAgICBkZXZTZXJ2ZXIuc2VydmVyLmFwcC51c2UoY3JlYXRlR2xvYmFsVW5pdmVyc2FsTWlkZGxld2FyZSh0aGlzT3B0aW9ucy5vcHRpb25zKSlcclxuICAgICAgICBkZXZTZXJ2ZXIuc2VydmVyLmFwcC51c2UoYmFzZVBhdGgsIGNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSh0aGlzT3B0aW9ucy5zb3VyY2VBc3NldHNQYXRoLCB0aGlzT3B0aW9ucy5vcHRpb25zLCBkZWZhdWx0UHVibGljRGlyLCBsb2dnZXIpKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8g4pyFIOaWueazlSAy77ya55uR5ZCsIHNlcnZlciDnmoQgJ2xpc3RlbmluZycg5LqL5Lu2XHJcbiAgICAgIGNvbnN0IG9yaWdpbmFsTGlzdGVuID0gZGV2U2VydmVyLmxpc3RlbjtcclxuICAgICAgZGV2U2VydmVyLmxpc3RlbiA9IGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG9yaWdpbmFsTGlzdGVuLmFwcGx5KHRoaXMsIGFyZ3MpO1xyXG5cclxuICAgICAgICAvLyDnrYnlvoUgc2VydmVyIOWQr+WKqFxyXG4gICAgICAgIHRoaXMub24oJ2xpc3RlbmluZycsICgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLmFwcCAmJiAhdGhpcy5hcHAuX214Y2FkX2luamVjdGVkKSB7XHJcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDwn5qAIEluamVjdGluZyBtaWRkbGV3YXJlIHZpYSBkZXZTZXJ2ZXIubGlzdGVuIG92ZXJyaWRlYCk7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwLnVzZShjcmVhdGVHbG9iYWxVbml2ZXJzYWxNaWRkbGV3YXJlKHRoaXNPcHRpb25zLm9wdGlvbnMpKVxyXG4gICAgICAgICAgICB0aGlzLmFwcC51c2UoYmFzZVBhdGgsIGNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSh0aGlzT3B0aW9ucy5zb3VyY2VBc3NldHNQYXRoLCB0aGlzT3B0aW9ucy5vcHRpb25zLCBkZWZhdWx0UHVibGljRGlyLCBsb2dnZXIpKTtcclxuICAgICAgICAgICAgdGhpcy5hcHAuX214Y2FkX2luamVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDwn5ug77iPIFBhdGNoZWQgZGV2U2VydmVyLmxpc3RlbiBmb3IgV0RTIHYzYCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIOaWueazlSAz77ya5aaC5p6c5LiK6Z2i5LiN6KGM77yM5bCd6K+V5Yqr5oyBIFNlcnZlci5wcm90b3R5cGUubGlzdGVu77yI5aSH55So77yJXHJcbiAgICB0cnkge1xyXG4gICAgICAvLyDkvb/nlKggcmVxdWlyZS5jYWNoZSDliqjmgIHmn6Xmib4gU2VydmVyIOWunuS+i1xyXG4gICAgICBjb25zdCBzZXJ2ZXJQYXRoID0gJ3dlYnBhY2stZGV2LXNlcnZlci9saWIvU2VydmVyJztcclxuICAgICAgY29uc3QgY2FjaGVkTW9kdWxlID0gcmVxdWlyZS5jYWNoZVtyZXF1aXJlLnJlc29sdmUoc2VydmVyUGF0aCldO1xyXG5cclxuICAgICAgaWYgKGNhY2hlZE1vZHVsZSkge1xyXG4gICAgICAgIGNvbnN0IFNlcnZlciA9IGNhY2hlZE1vZHVsZS5leHBvcnRzO1xyXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsTGlzdGVuU2V0dXBNaWRkbGV3YXJlcyA9IFNlcnZlci5wcm90b3R5cGUuc2V0dXBNaWRkbGV3YXJlc1xyXG4gICAgICAgIFNlcnZlci5wcm90b3R5cGUuc2V0dXBNaWRkbGV3YXJlcyA9IGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuX214Y2FkX2luamVjdGVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsU2V0dXBNaWRkbGV3YXJlcyA9IHRoaXMub3B0aW9ucy5zZXR1cE1pZGRsZXdhcmVzXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zZXR1cE1pZGRsZXdhcmVzID0gKG1pZGRsZXdhcmVzLCBzZXJ2ZXIpID0+IHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgW214Y2FkLWFzc2V0c10g8J+foiBJbmplY3RpbmcgbWlkZGxld2FyZSB2aWEgc2V0dXBNaWRkbGV3YXJlc2ApO1xyXG4gICAgICAgICAgICAgIHRoaXMuYXBwLnVzZShjcmVhdGVHbG9iYWxVbml2ZXJzYWxNaWRkbGV3YXJlKHRoaXNPcHRpb25zLm9wdGlvbnMpKVxyXG4gICAgICAgICAgICAgIHNlcnZlci5hcHAudXNlKGJhc2VQYXRoLCBjcmVhdGVNeENhZEFzc2V0c01pZGRsZXdhcmUodGhpc09wdGlvbnMuc291cmNlQXNzZXRzUGF0aCwgdGhpc09wdGlvbnMub3B0aW9ucywgZGVmYXVsdFB1YmxpY0RpcikpO1xyXG4gICAgICAgICAgICAgIHJldHVybiAob3JpZ2luYWxTZXR1cE1pZGRsZXdhcmVzID09IG51bGwgPyB2b2lkIDAgOiBvcmlnaW5hbFNldHVwTWlkZGxld2FyZXMobWlkZGxld2FyZXMsIHNlcnZlcikpIHx8IG1pZGRsZXdhcmVzO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLl9teGNhZF9pbmplY3RlZCA9IHRydWVcclxuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsTGlzdGVuU2V0dXBNaWRkbGV3YXJlcy5hcHBseSh0aGlzLCAuLi5hcmdzKTs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxMaXN0ZW4gPSBTZXJ2ZXIucHJvdG90eXBlLmxpc3RlbjtcclxuXHJcbiAgICAgICAgU2VydmVyLnByb3RvdHlwZS5saXN0ZW4gPSBmdW5jdGlvbiAodGhpczogYW55LCAuLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgICAgICAgbG9nZ2VyLmluZm8oYFtteGNhZC1hc3NldHNdIPCfmoAgU2VydmVyLnByb3RvdHlwZS5saXN0ZW4gY2FsbGVkIChmcm9tIGNhY2hlKWApO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmFwcCAmJiAhdGhpcy5hcHAuX214Y2FkX2luamVjdGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwLnVzZShjcmVhdGVHbG9iYWxVbml2ZXJzYWxNaWRkbGV3YXJlKHRoaXNPcHRpb25zLm9wdGlvbnMpKVxyXG4gICAgICAgICAgICB0aGlzLmFwcC51c2UoYmFzZVBhdGgsIGNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSh0aGlzT3B0aW9ucy5zb3VyY2VBc3NldHNQYXRoLCB0aGlzT3B0aW9ucy5vcHRpb25zLCBkZWZhdWx0UHVibGljRGlyLCBsb2dnZXIpKTtcclxuICAgICAgICAgICAgdGhpcy5hcHAuX214Y2FkX2luamVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgbG9nZ2VyLmluZm8oYFtteGNhZC1hc3NldHNdIOKchSBNaWRkbGV3YXJlIGluamVjdGVkIHZpYSBTZXJ2ZXIucHJvdG90eXBlLmxpc3RlbmApO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHJldHVybiBvcmlnaW5hbExpc3Rlbi5hcHBseSh0aGlzLCBhcmdzKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBsb2dnZXIuaW5mbyhgW214Y2FkLWFzc2V0c10g8J+boO+4jyBQYXRjaGVkIFNlcnZlci5wcm90b3R5cGUubGlzdGVuIHZpYSByZXF1aXJlLmNhY2hlYCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbG9nZ2VyLndhcm4oYFtteGNhZC1hc3NldHNdIOKaoO+4jyBTZXJ2ZXIgbW9kdWxlIG5vdCBjYWNoZWQgeWV0LCBwYXRjaCBtYXkgZmFpbGApO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDwn5+hIENvdWxkIG5vdCBwYXRjaCB2aWEgcmVxdWlyZS5jYWNoZTogJHsoZSBhcyBFcnJvcikubWVzc2FnZX1gKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBjbG9zZUJ1bmRsZShjb21waWxlcjogQ29tcGlsZXIsIGxvZ2dlcjogYW55KSB7XHJcbiAgICBjb21waWxlci5ob29rcy5kb25lLnRhcEFzeW5jKCdNeENhZEFzc2V0c1BsdWdpbicsIChzdGF0cywgY2FsbGJhY2spID0+IHtcclxuICAgICAgaWYgKGNvbXBpbGVyLm9wdGlvbnMubW9kZSA9PT0gJ3Byb2R1Y3Rpb24nKSB7XHJcbiAgICAgICAgdGhpcy5jb3B5QXNzZXRzVG9PdXRwdXQoY29tcGlsZXIsIGxvZ2dlciwgY2FsbGJhY2spO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb3B5QXNzZXRzVG9PdXRwdXQoXHJcbiAgICBjb21waWxlcjogQ29tcGlsZXIsXHJcbiAgICBsb2dnZXI6IGFueSxcclxuICAgIGNhbGxiYWNrOiAoZXJyPzogRXJyb3IpID0+IHZvaWRcclxuICApIHtcclxuICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLnNvdXJjZUFzc2V0c1BhdGgpKSB7XHJcbiAgICAgIGxvZ2dlci53YXJuKGBbbXhjYWQtYXNzZXRzXSDimqDvuI8gU291cmNlIG5vdCBmb3VuZDogJHt0aGlzLnNvdXJjZUFzc2V0c1BhdGh9YCk7XHJcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG91dHB1dFBhdGggPSBjb21waWxlci5vcHRpb25zLm91dHB1dD8ucGF0aCB8fCAnZGlzdCc7XHJcbiAgICBjb25zdCB0YXJnZXRBc3NldHNQYXRoID0gcGF0aC5qb2luKG91dHB1dFBhdGgsIHRoaXMub3B0aW9ucy5vdXRwdXREaXIpO1xyXG4gICAgY29uc3Qgb3V0cHV0RnMgPSBjb21waWxlci5vdXRwdXRGaWxlU3lzdGVtIHx8IGZzO1xyXG5cclxuICAgIG91dHB1dEZzLm1rZGlyKHRhcmdldEFzc2V0c1BhdGgsIHsgcmVjdXJzaXZlOiB0cnVlIH0sIChlcnIpID0+IHtcclxuICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XHJcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKTtcclxuICAgICAgY29uc3QgZGVmYXVsdFB1YmxpY0RpciA9IHBhdGguam9pbihjb250ZXh0LCAncHVibGljJywgdGhpcy5vcHRpb25zLm91dHB1dERpcik7XHJcblxyXG4gICAgICBzaGFyZWRDb3B5RGlyKHRoaXMuc291cmNlQXNzZXRzUGF0aCwgdGFyZ2V0QXNzZXRzUGF0aCwgZGVmYXVsdFB1YmxpY0RpciwgdGhpcy5vcHRpb25zLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgbG9nZ2VyLmVycm9yKGBbbXhjYWQtYXNzZXRzXSDinYwgQ29weSBmYWlsZWQ6ICR7ZXJyLm1lc3NhZ2V9YCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDinIUgQ29waWVkIHRvICR7dGFyZ2V0QXNzZXRzUGF0aH1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FsbGJhY2soZXJyKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdHJhbnNmb3JtSW5kZXhIdG1sKGNvbXBpbGVyOiBDb21waWxlciwgbG9nZ2VyOiBhbnkpIHtcclxuICAgIGNvbnN0IGluamVjdFNjcmlwdCA9IChjb21waWxhdGlvbjogQ29tcGlsYXRpb24pID0+IHtcclxuICAgICAgY29uc3QgcHVibGljUGF0aCA9IHRoaXMucmVzb2x2ZWRDb25maWc/LnB1YmxpY1BhdGggfHwgYC4vJHt0aGlzLm9wdGlvbnMub3V0cHV0RGlyfS9gO1xyXG4gICAgICBjb25zdCBzY3JpcHQgPSBnZW5lcmF0ZVJ1bnRpbWVDb25maWdTY3JpcHQocHVibGljUGF0aCk7XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IFtmaWxlbmFtZSwgYXNzZXRdIG9mIE9iamVjdC5lbnRyaWVzKGNvbXBpbGF0aW9uLmFzc2V0cykpIHtcclxuICAgICAgICBpZiAoZmlsZW5hbWUuZW5kc1dpdGgoJy5odG1sJykgJiYgaXNTb3VyY2UoYXNzZXQpKSB7XHJcbiAgICAgICAgICBjb25zdCBzb3VyY2UgPSBhc3NldC5zb3VyY2UoKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgaWYgKHNvdXJjZS5pbmNsdWRlcygnPC9oZWFkPicpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vZGlmaWVkID0gc291cmNlLnJlcGxhY2UoJzwvaGVhZD4nLCBgJHtzY3JpcHR9PC9oZWFkPmApO1xyXG4gICAgICAgICAgICBjb21waWxhdGlvbi5hc3NldHNbZmlsZW5hbWVdID0ge1xyXG4gICAgICAgICAgICAgIHNvdXJjZTogKCkgPT4gbW9kaWZpZWQsXHJcbiAgICAgICAgICAgICAgc2l6ZTogKCkgPT4gQnVmZmVyLmJ5dGVMZW5ndGgobW9kaWZpZWQsICd1dGY4JyksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDinIUgSW5qZWN0ZWQgaW50byAke2ZpbGVuYW1lfWApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyDmo4Dmn6XmmK/lkKbmlK/mjIEgcHJvY2Vzc0Fzc2V0c++8iFdlYnBhY2sgNSvvvIlcclxuICAgIGlmICgncHJvY2Vzc0Fzc2V0cycgaW4gY29tcGlsZXIuaG9va3MpIHtcclxuICAgICAgY29tcGlsZXIuaG9va3MuY29tcGlsYXRpb24udGFwKCdNeENhZEFzc2V0c1BsdWdpbicsIChjb21waWxhdGlvbjogQ29tcGlsYXRpb24pID0+IHtcclxuICAgICAgICAvLyDinIUg5L2/55So5q2j56Gu55qE6Zi25q615bi46YeP77yaQURESVRJT05BTO+8iOS4jeaYryBBRERJVElPTlPvvIlcclxuICAgICAgICBjb21waWxhdGlvbi5ob29rcy5wcm9jZXNzQXNzZXRzLnRhcChcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ014Q2FkQXNzZXRzUGx1Z2luJyxcclxuICAgICAgICAgICAgc3RhZ2U6IENvbXBpbGF0aW9uLlBST0NFU1NfQVNTRVRTX1NUQUdFX0FERElUSU9OQUwsIC8vIOKchSDpnZnmgIHlsZ7mgKfvvIznm7TmjqXpgJrov4fnsbvorr/pl65cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBpbmplY3RTY3JpcHRcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICAvLyDlj6/pgInvvJrmt7vliqDnsbvlnovkv6Hmga/vvIhXZWJwYWNrIOexu+Wei++8iVxyXG4gICAgICAgIC8vIGNvbXBpbGF0aW9uOiBDb21waWxhdGlvblxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIFdlYnBhY2sgNCDlhbzlrrnvvJrkvb/nlKggZW1pdCDpkqnlrZBcclxuICAgICAgY29tcGlsZXIuaG9va3MuZW1pdC50YXBBc3luYygnTXhDYWRBc3NldHNQbHVnaW4nLCAoY29tcGlsYXRpb246IENvbXBpbGF0aW9uLCBjYikgPT4ge1xyXG4gICAgICAgIGluamVjdFNjcmlwdChjb21waWxhdGlvbik7XHJcbiAgICAgICAgY2IoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4vLyDlt6Xlhbflh73mlbBcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbmZ1bmN0aW9uIGVuc3VyZUxlYWRpbmdTbGFzaChzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHN0clxyXG59XHJcblxyXG5mdW5jdGlvbiBpc1NvdXJjZShhc3NldDogYW55KTogYXNzZXQgaXMgeyBzb3VyY2UoKTogc3RyaW5nIHwgQnVmZmVyIH0ge1xyXG4gIHJldHVybiBhc3NldCAmJiB0eXBlb2YgYXNzZXQuc291cmNlID09PSAnZnVuY3Rpb24nO1xyXG59XHJcblxyXG5cclxuXHJcbmV4cG9ydCBkZWZhdWx0IE14Q2FkQXNzZXRzV2VicGFja1BsdWdpbjsiXSwibmFtZXMiOlsicmVzb2x2ZU9wdGlvbnMiLCJnZXRTb3VyY2VBc3NldHNQYXRoIiwiZnMiLCJnZXRFeHRlcm5hbHMiLCJwYXRoIiwiY3JlYXRlR2xvYmFsVW5pdmVyc2FsTWlkZGxld2FyZSIsImNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSIsInNoYXJlZENvcHlEaXIiLCJlcnIiLCJnZW5lcmF0ZVJ1bnRpbWVDb25maWdTY3JpcHQiLCJDb21waWxhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JPLE1BQU0seUJBQXlCO0FBQUEsRUFDNUI7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBT1IsWUFBWSxTQUFvQztBQUM5QyxTQUFLLFVBQVVBLE1BQUFBLGVBQWUsT0FBTztBQUNyQyxTQUFLLG1CQUFtQkMsMEJBQUE7QUFHeEIsUUFBSSxDQUFDQyxjQUFHLFdBQVcsS0FBSyxnQkFBZ0IsR0FBRztBQUN6QyxZQUFNLElBQUksTUFBTSwyQ0FBMkMsS0FBSyxnQkFBZ0IsRUFBRTtBQUFBLElBQ3BGO0FBQUEsRUFDRjtBQUFBLEVBRUEsTUFBTSxVQUEwQjtBQUM5QixVQUFNLFNBQVMsU0FBUyx3QkFBd0IsbUJBQW1CO0FBRW5FLFNBQUssZUFBZSxVQUFVLE1BQU07QUFDcEMsVUFBTSxrQkFBa0IsU0FBUyxRQUFRLFNBQVM7QUFHbEQsUUFBSSxpQkFBaUI7QUFDbkIsV0FBSyx3QkFBd0IsVUFBVSxNQUFNO0FBQUEsSUFDL0M7QUFHQSxRQUFJLENBQUMsU0FBUyxRQUFRLFdBQVc7QUFDL0IsZUFBUyxRQUFRLFlBQVksQ0FBQTtBQUFBLElBQy9CO0FBRUEsV0FBTyxPQUFPLFNBQVMsUUFBUSxXQUFXQyxNQUFBQSxhQUFhLEtBQUssUUFBUSxZQUFZLENBQUM7QUFFakYsU0FBSyxZQUFZLFVBQVUsTUFBTTtBQUdqQyxTQUFLLG1CQUFtQixVQUFVLE1BQU07QUFBQSxFQUMxQztBQUFBLEVBRVEsZUFBZSxVQUFvQixRQUFhO0FBQ3RELFVBQU0sRUFBRSxjQUFjLEtBQUs7QUFDM0IsVUFBTSxlQUFlLFNBQVMsUUFBUSxTQUFTO0FBQy9DLFVBQU0sYUFBYSxLQUFLLGdCQUFnQixRQUFRO0FBRWhELFNBQUssaUJBQWlCO0FBQUEsTUFDcEI7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUFBO0FBR0YsV0FBTyxLQUFLLDBDQUEwQyxVQUFVLEVBQUU7QUFBQSxFQUNwRTtBQUFBLEVBRVEsZ0JBQWdCLFVBQTRCO0FBQ2xELFVBQU0sRUFBRSxjQUFjLEtBQUs7QUFDM0IsVUFBTSxnQkFBZ0IsU0FBUyxRQUFRLFVBQVUsQ0FBQTtBQUNqRCxVQUFNLFlBQVksU0FBUyxRQUFRO0FBRW5DLFFBQUksT0FBTyxjQUFjLGVBQWUsVUFBVTtBQUNoRCxZQUFNLE9BQU8sY0FBYyxlQUFlLFNBQVMsTUFBTSxjQUFjO0FBQ3ZFLGFBQU8sbUJBQW1CLElBQUksSUFBSSxZQUFZO0FBQUEsSUFDaEQ7QUFFQSxRQUFJLFdBQVc7QUFDYixVQUFJLE9BQVEsVUFBa0IsZUFBZSxVQUFVO0FBQ3JELGNBQU0sT0FBUSxVQUFrQixlQUFlLFNBQVMsTUFBTyxVQUFrQjtBQUNqRixlQUFPLG1CQUFtQixJQUFJLElBQUksWUFBWTtBQUFBLE1BQ2hEO0FBRUEsVUFBSSxZQUFZLFdBQVc7QUFDekIsY0FBTSxjQUFjLE1BQU0sUUFBUSxVQUFVLE1BQU0sSUFDOUMsVUFBVSxTQUNULFVBQVUsU0FBUyxDQUFDLFVBQVUsTUFBTSxJQUFJLENBQUE7QUFFN0MsbUJBQVcsUUFBUSxhQUFhO0FBQzlCLGdCQUFNLFNBQVMsT0FBTyxTQUFTLFdBQVcsT0FBTyxDQUFrQjtBQUNuRSxjQUFJLE9BQU8sT0FBTyxlQUFlLFVBQVU7QUFDekMsbUJBQU8sbUJBQW1CLE9BQU8sVUFBVSxJQUFJLFlBQVk7QUFBQSxVQUM3RDtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUVBLFdBQU8sR0FBRyxTQUFTO0FBQUEsRUFDckI7QUFBQTtBQUFBLEVBR1Esd0JBQXdCLFVBQW9CLFFBQWE7QUFDL0QsVUFBTSxFQUFFLGNBQWMsS0FBSztBQUMzQixVQUFNLFdBQVcsSUFBSSxVQUFVLFFBQVEsUUFBUSxFQUFFLENBQUM7QUFDbEQsUUFBSSxrQkFBa0IsU0FBUyxRQUFRO0FBRXZDLFFBQUksQ0FBQyxpQkFBaUI7QUFDbkIsZUFBUyxRQUFnQixZQUFZLGtCQUFrQixDQUFBO0FBQUEsSUFDMUQ7QUFHQSxVQUFNLHNCQUFzQixzQkFBc0I7QUFFbEQsUUFBSSxxQkFBcUI7QUFDdkIsWUFBTSxVQUFVLFNBQVMsUUFBUSxXQUFXLFFBQVEsSUFBQTtBQUNwRCxZQUFNLG1CQUFtQkMsZ0JBQUssS0FBSyxTQUFTLFVBQVUsS0FBSyxRQUFRLFNBQVM7QUFDNUUsWUFBTSxXQUFXLGdCQUFnQjtBQUNqQyxzQkFBZ0IsbUJBQW1CLENBQUMsYUFBYSxXQUFXO0FBQzFELGVBQU8sS0FBSyw2REFBNkQ7QUFDekUsZUFBTyxJQUFJLElBQUlDLE1BQUFBLGdDQUFnQyxLQUFLLE9BQU8sQ0FBQztBQUM1RCxlQUFPLElBQUksSUFBSSxVQUFVQyxNQUFBQSw0QkFBNEIsS0FBSyxrQkFBa0IsS0FBSyxTQUFTLGtCQUFrQixNQUFNLENBQUM7QUFFbkgsZ0JBQU8scUNBQVcsYUFBYSxZQUFXO0FBQUEsTUFDNUM7QUFDQTtBQUFBLElBQ0Y7QUFFQSxXQUFPLEtBQUsseUJBQXlCLFVBQVUsVUFBVSxNQUFNO0FBQUEsRUFDakU7QUFBQSxFQUVRLHlCQUF5QixVQUFvQixVQUFrQixRQUFhO0FBQ2xGLFVBQU0sY0FBYztBQUNwQixVQUFNLFVBQVUsU0FBUyxRQUFRLFdBQVcsUUFBUSxJQUFBO0FBQ3BELFVBQU0sbUJBQW1CRixnQkFBSyxLQUFLLFNBQVMsVUFBVSxLQUFLLFFBQVEsU0FBUztBQUU1RSxVQUFNLFlBQVksU0FBUztBQUMzQixRQUFJLFdBQVc7QUFFYixVQUFJLFVBQVUsVUFBVSxVQUFVLE9BQU8sS0FBSztBQUM1QyxlQUFPLEtBQUssMkVBQTJFO0FBQ3ZGLGtCQUFVLE9BQU8sSUFBSSxJQUFJQyxNQUFBQSxnQ0FBZ0MsWUFBWSxPQUFPLENBQUM7QUFDN0Usa0JBQVUsT0FBTyxJQUFJLElBQUksVUFBVUMsTUFBQUEsNEJBQTRCLFlBQVksa0JBQWtCLFlBQVksU0FBUyxrQkFBa0IsTUFBTSxDQUFDO0FBQUEsTUFDN0k7QUFHQSxZQUFNLGlCQUFpQixVQUFVO0FBQ2pDLGdCQUFVLFNBQVMsWUFBYSxNQUFhO0FBQzNDLGNBQU0sU0FBUyxlQUFlLE1BQU0sTUFBTSxJQUFJO0FBRzlDLGFBQUssR0FBRyxhQUFhLE1BQU07QUFDekIsY0FBSSxLQUFLLE9BQU8sQ0FBQyxLQUFLLElBQUksaUJBQWlCO0FBQ3pDLG1CQUFPLEtBQUssc0VBQXNFO0FBQ2xGLGlCQUFLLElBQUksSUFBSUQsTUFBQUEsZ0NBQWdDLFlBQVksT0FBTyxDQUFDO0FBQ2pFLGlCQUFLLElBQUksSUFBSSxVQUFVQyxNQUFBQSw0QkFBNEIsWUFBWSxrQkFBa0IsWUFBWSxTQUFTLGtCQUFrQixNQUFNLENBQUM7QUFDL0gsaUJBQUssSUFBSSxrQkFBa0I7QUFBQSxVQUM3QjtBQUFBLFFBQ0YsQ0FBQztBQUVELGVBQU87QUFBQSxNQUNUO0FBRUEsYUFBTyxLQUFLLHdEQUF3RDtBQUFBLElBQ3RFO0FBR0EsUUFBSTtBQUVGLFlBQU0sYUFBYTtBQUNuQixZQUFNLGVBQWUsUUFBUSxNQUFNLFFBQVEsUUFBUSxVQUFVLENBQUM7QUFFOUQsVUFBSSxjQUFjO0FBQ2hCLGNBQU0sU0FBUyxhQUFhO0FBQzVCLGNBQU0saUNBQWlDLE9BQU8sVUFBVTtBQUN4RCxlQUFPLFVBQVUsbUJBQW1CLFlBQXdCLE1BQWE7QUFDdkUsY0FBSSxDQUFDLEtBQUssaUJBQWlCO0FBQ3pCLGtCQUFNLDJCQUEyQixLQUFLLFFBQVE7QUFDOUMsaUJBQUssUUFBUSxtQkFBbUIsQ0FBQyxhQUFhLFdBQVc7QUFDdkQsc0JBQVEsSUFBSSw2REFBNkQ7QUFDekUsbUJBQUssSUFBSSxJQUFJRCxNQUFBQSxnQ0FBZ0MsWUFBWSxPQUFPLENBQUM7QUFDakUscUJBQU8sSUFBSSxJQUFJLFVBQVVDLE1BQUFBLDRCQUE0QixZQUFZLGtCQUFrQixZQUFZLFNBQVMsZ0JBQWdCLENBQUM7QUFDekgsc0JBQVEsNEJBQTRCLE9BQU8sU0FBUyx5QkFBeUIsYUFBYSxNQUFNLE1BQU07QUFBQSxZQUN4RztBQUNBLGlCQUFLLGtCQUFrQjtBQUN2QixtQkFBTywrQkFBK0IsTUFBTSxNQUFNLEdBQUcsSUFBSTtBQUFFO0FBQUEsVUFDN0Q7QUFBQSxRQUNGO0FBRUEsY0FBTSxpQkFBaUIsT0FBTyxVQUFVO0FBRXhDLGVBQU8sVUFBVSxTQUFTLFlBQXdCLE1BQWE7QUFDN0QsaUJBQU8sS0FBSywrREFBK0Q7QUFFM0UsY0FBSSxLQUFLLE9BQU8sQ0FBQyxLQUFLLElBQUksaUJBQWlCO0FBQ3pDLGlCQUFLLElBQUksSUFBSUQsTUFBQUEsZ0NBQWdDLFlBQVksT0FBTyxDQUFDO0FBQ2pFLGlCQUFLLElBQUksSUFBSSxVQUFVQyxNQUFBQSw0QkFBNEIsWUFBWSxrQkFBa0IsWUFBWSxTQUFTLGtCQUFrQixNQUFNLENBQUM7QUFDL0gsaUJBQUssSUFBSSxrQkFBa0I7QUFDM0IsbUJBQU8sS0FBSyxrRUFBa0U7QUFBQSxVQUNoRjtBQUVBLGlCQUFPLGVBQWUsTUFBTSxNQUFNLElBQUk7QUFBQSxRQUN4QztBQUVBLGVBQU8sS0FBSyxzRUFBc0U7QUFBQSxNQUNwRixPQUFPO0FBQ0wsZUFBTyxLQUFLLGdFQUFnRTtBQUFBLE1BQzlFO0FBQUEsSUFDRixTQUFTLEdBQUc7QUFDVixhQUFPLEtBQUssd0RBQXlELEVBQVksT0FBTyxFQUFFO0FBQUEsSUFDNUY7QUFBQSxFQUNGO0FBQUEsRUFDUSxZQUFZLFVBQW9CLFFBQWE7QUFDbkQsYUFBUyxNQUFNLEtBQUssU0FBUyxxQkFBcUIsQ0FBQyxPQUFPLGFBQWE7QUFDckUsVUFBSSxTQUFTLFFBQVEsU0FBUyxjQUFjO0FBQzFDLGFBQUssbUJBQW1CLFVBQVUsUUFBUSxRQUFRO0FBQUEsTUFDcEQsT0FBTztBQUNMLGlCQUFBO0FBQUEsTUFDRjtBQUFBLElBQ0YsQ0FBQztBQUFBLEVBQ0g7QUFBQSxFQUVRLG1CQUNOLFVBQ0EsUUFDQSxVQUNBOztBQUNBLFFBQUksQ0FBQ0osY0FBRyxXQUFXLEtBQUssZ0JBQWdCLEdBQUc7QUFDekMsYUFBTyxLQUFLLHVDQUF1QyxLQUFLLGdCQUFnQixFQUFFO0FBQzFFLGFBQU8sU0FBQTtBQUFBLElBQ1Q7QUFFQSxVQUFNLGVBQWEsY0FBUyxRQUFRLFdBQWpCLG1CQUF5QixTQUFRO0FBQ3BELFVBQU0sbUJBQW1CRSxnQkFBSyxLQUFLLFlBQVksS0FBSyxRQUFRLFNBQVM7QUFDckUsVUFBTSxXQUFXLFNBQVMsb0JBQW9CRjtBQUU5QyxhQUFTLE1BQU0sa0JBQWtCLEVBQUUsV0FBVyxLQUFBLEdBQVEsQ0FBQyxRQUFRO0FBQzdELFVBQUksSUFBSyxRQUFPLFNBQVMsR0FBRztBQUM1QixZQUFNLFVBQVUsU0FBUyxRQUFRLFdBQVcsUUFBUSxJQUFBO0FBQ3BELFlBQU0sbUJBQW1CRSxnQkFBSyxLQUFLLFNBQVMsVUFBVSxLQUFLLFFBQVEsU0FBUztBQUU1RUcsb0JBQWMsS0FBSyxrQkFBa0Isa0JBQWtCLGtCQUFrQixLQUFLLFNBQVMsQ0FBQ0MsU0FBUTtBQUM5RixZQUFJQSxNQUFLO0FBQ1AsaUJBQU8sTUFBTSxpQ0FBaUNBLEtBQUksT0FBTyxFQUFFO0FBQUEsUUFDN0QsT0FBTztBQUNMLGlCQUFPLEtBQUssOEJBQThCLGdCQUFnQixFQUFFO0FBQUEsUUFDOUQ7QUFDQSxpQkFBU0EsSUFBRztBQUFBLE1BQ2QsQ0FBQztBQUFBLElBQ0gsQ0FBQztBQUFBLEVBQ0g7QUFBQSxFQUVRLG1CQUFtQixVQUFvQixRQUFhO0FBQzFELFVBQU0sZUFBZSxDQUFDLGdCQUE2Qjs7QUFDakQsWUFBTSxlQUFhLFVBQUssbUJBQUwsbUJBQXFCLGVBQWMsS0FBSyxLQUFLLFFBQVEsU0FBUztBQUNqRixZQUFNLFNBQVNDLE1BQUFBLDRCQUE0QixVQUFVO0FBRXJELGlCQUFXLENBQUMsVUFBVSxLQUFLLEtBQUssT0FBTyxRQUFRLFlBQVksTUFBTSxHQUFHO0FBQ2xFLFlBQUksU0FBUyxTQUFTLE9BQU8sS0FBSyxTQUFTLEtBQUssR0FBRztBQUNqRCxnQkFBTSxTQUFTLE1BQU0sT0FBQSxFQUFTLFNBQUE7QUFDOUIsY0FBSSxPQUFPLFNBQVMsU0FBUyxHQUFHO0FBQzlCLGtCQUFNLFdBQVcsT0FBTyxRQUFRLFdBQVcsR0FBRyxNQUFNLFNBQVM7QUFDN0Qsd0JBQVksT0FBTyxRQUFRLElBQUk7QUFBQSxjQUM3QixRQUFRLE1BQU07QUFBQSxjQUNkLE1BQU0sTUFBTSxPQUFPLFdBQVcsVUFBVSxNQUFNO0FBQUEsWUFBQTtBQUVoRCxtQkFBTyxLQUFLLGtDQUFrQyxRQUFRLEVBQUU7QUFBQSxVQUMxRDtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUdBLFFBQUksbUJBQW1CLFNBQVMsT0FBTztBQUNyQyxlQUFTLE1BQU0sWUFBWSxJQUFJLHFCQUFxQixDQUFDLGdCQUE2QjtBQUVoRixvQkFBWSxNQUFNLGNBQWM7QUFBQSxVQUM5QjtBQUFBLFlBQ0UsTUFBTTtBQUFBLFlBQ04sT0FBT0MsUUFBQUEsWUFBWTtBQUFBO0FBQUEsVUFBQTtBQUFBLFVBRXJCO0FBQUEsUUFBQTtBQUFBLE1BS0osQ0FBQztBQUFBLElBQ0gsT0FBTztBQUVMLGVBQVMsTUFBTSxLQUFLLFNBQVMscUJBQXFCLENBQUMsYUFBMEIsT0FBTztBQUNsRixxQkFBYSxXQUFXO0FBQ3hCLFdBQUE7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNIO0FBQUEsRUFDRjtBQUNGO0FBTUEsU0FBUyxtQkFBbUIsS0FBcUI7QUFDL0MsU0FBTztBQUNUO0FBRUEsU0FBUyxTQUFTLE9BQW9EO0FBQ3BFLFNBQU8sU0FBUyxPQUFPLE1BQU0sV0FBVztBQUMxQzs7OyJ9
|
|
256
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrVG9vbFBsdWdpblNyYy93ZWJwYWNrL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIE14Q2FkQXNzZXRzV2VicGFja1BsdWdpbi50c1xyXG4vLyBAdHMtaWdub3JlXHJcbmltcG9ydCB7IENvbXBpbGVyLCBDb21waWxhdGlvbiB9IGZyb20gJ3dlYnBhY2snO1xyXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XHJcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XHJcblxyXG5pbXBvcnQge1xyXG4gIE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucyxcclxuICByZXNvbHZlT3B0aW9ucyxcclxuICBnZXRTb3VyY2VBc3NldHNQYXRoLFxyXG4gIGdlbmVyYXRlUnVudGltZUNvbmZpZ1NjcmlwdCxcclxuICBnZXRDb250ZW50VHlwZSxcclxuICBjb3B5RGlyIGFzIHNoYXJlZENvcHlEaXIsXHJcbiAgZ2V0RXh0ZXJuYWxzLFxyXG4gIGhhbmRsZUNvbmZpZ1JlcXVlc3QsXHJcbiAgcmVzb2x2ZVNhZmVQYXRoLFxyXG4gIGNyZWF0ZUdsb2JhbFVuaXZlcnNhbE1pZGRsZXdhcmUsXHJcbiAgY3JlYXRlTXhDYWRBc3NldHNNaWRkbGV3YXJlLFxyXG59IGZyb20gJy4uL3NoYXJlZCc7XHJcblxyXG5leHBvcnQgY2xhc3MgTXhDYWRBc3NldHNXZWJwYWNrUGx1Z2luIHtcclxuICBwcml2YXRlIG9wdGlvbnM6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz47XHJcbiAgcHJpdmF0ZSBzb3VyY2VBc3NldHNQYXRoOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSByZXNvbHZlZENvbmZpZz86IHtcclxuICAgIGlzUHJvZHVjdGlvbjogYm9vbGVhbjtcclxuICAgIHB1YmxpY1BhdGg6IHN0cmluZztcclxuICAgIG91dHB1dERpcjogc3RyaW5nO1xyXG4gICAgbG9nZ2VyOiBhbnk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3Iob3B0aW9ucz86IE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucykge1xyXG4gICAgdGhpcy5vcHRpb25zID0gcmVzb2x2ZU9wdGlvbnMob3B0aW9ucyk7XHJcbiAgICB0aGlzLnNvdXJjZUFzc2V0c1BhdGggPSBnZXRTb3VyY2VBc3NldHNQYXRoKCk7XHJcblxyXG4gICAgLy8g8J+UpSDlvLrliLbpqozor4Egc291cmNlQXNzZXRzUGF0aCDlrZjlnKhcclxuICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLnNvdXJjZUFzc2V0c1BhdGgpKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgW214Y2FkLWFzc2V0c10gU291cmNlIGFzc2V0cyBub3QgZm91bmQ6ICR7dGhpcy5zb3VyY2VBc3NldHNQYXRofWApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXBwbHkoY29tcGlsZXI6IENvbXBpbGVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBsb2dnZXIgPSBjb21waWxlci5nZXRJbmZyYXN0cnVjdHVyZUxvZ2dlcignTXhDYWRBc3NldHNQbHVnaW4nKTtcclxuICAgIC8vIPCfjLEgMS4gY29uZmlnUmVzb2x2ZWRcclxuICAgIHRoaXMuY29uZmlnUmVzb2x2ZWQoY29tcGlsZXIsIGxvZ2dlcik7XHJcbiAgICBjb25zdCBpc0RldlNlcnZlck1vZGUgPSBjb21waWxlci5vcHRpb25zLm1vZGUgIT09ICdwcm9kdWN0aW9uJ1xyXG5cclxuICAgIC8vIPCflKcgMi4g5by65Yi25rOo5YWlIGRldlNlcnZlcu+8iOaguOW/g++8iVxyXG4gICAgaWYgKGlzRGV2U2VydmVyTW9kZSkge1xyXG4gICAgICB0aGlzLmZvcmNlQ29uZmlndXJlRGV2U2VydmVyKGNvbXBpbGVyLCBsb2dnZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOWcqOi/memHjOiuv+mXruWSjOS/ruaUuSB3ZWJwYWNrIOmFjee9rlxyXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLmV4dGVybmFscykge1xyXG4gICAgICBjb21waWxlci5vcHRpb25zLmV4dGVybmFscyA9IHt9O1xyXG4gICAgfVxyXG4gICAgLy8g5re75Yqg5oiW6KaG55uWIGV4dGVybmFscyDphY3nva5cclxuICAgIE9iamVjdC5hc3NpZ24oY29tcGlsZXIub3B0aW9ucy5leHRlcm5hbHMsIGdldEV4dGVybmFscyh0aGlzLm9wdGlvbnMubGlicmFyeU5hbWVzKSk7XHJcbiAgICAvLyDwn5OmIDMuIOaehOW7uuaXtuWkjeWItlxyXG4gICAgdGhpcy5jbG9zZUJ1bmRsZShjb21waWxlciwgbG9nZ2VyKTtcclxuXHJcbiAgICAvLyDwn46oIDQuIEhUTUwg5rOo5YWlXHJcbiAgICB0aGlzLnRyYW5zZm9ybUluZGV4SHRtbChjb21waWxlciwgbG9nZ2VyKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uZmlnUmVzb2x2ZWQoY29tcGlsZXI6IENvbXBpbGVyLCBsb2dnZXI6IGFueSkge1xyXG4gICAgY29uc3QgeyBvdXRwdXREaXIgfSA9IHRoaXMub3B0aW9ucztcclxuICAgIGNvbnN0IGlzUHJvZHVjdGlvbiA9IGNvbXBpbGVyLm9wdGlvbnMubW9kZSA9PT0gJ3Byb2R1Y3Rpb24nO1xyXG4gICAgY29uc3QgcHVibGljUGF0aCA9IHRoaXMuaW5mZXJQdWJsaWNQYXRoKGNvbXBpbGVyKTtcclxuXHJcbiAgICB0aGlzLnJlc29sdmVkQ29uZmlnID0ge1xyXG4gICAgICBpc1Byb2R1Y3Rpb24sXHJcbiAgICAgIHB1YmxpY1BhdGgsXHJcbiAgICAgIG91dHB1dERpcixcclxuICAgICAgbG9nZ2VyLFxyXG4gICAgfTtcclxuXHJcbiAgICBsb2dnZXIuaW5mbyhgW214Y2FkLWFzc2V0c10g8J+agCBSZXNvbHZlZDogcHVibGljUGF0aD0ke3B1YmxpY1BhdGh9YCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluZmVyUHVibGljUGF0aChjb21waWxlcjogQ29tcGlsZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgeyBvdXRwdXREaXIgfSA9IHRoaXMub3B0aW9ucztcclxuICAgIGNvbnN0IG91dHB1dE9wdGlvbnMgPSBjb21waWxlci5vcHRpb25zLm91dHB1dCB8fCB7fTtcclxuICAgIGNvbnN0IGRldlNlcnZlciA9IGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyO1xyXG5cclxuICAgIGlmICh0eXBlb2Ygb3V0cHV0T3B0aW9ucy5wdWJsaWNQYXRoID09PSAnc3RyaW5nJykge1xyXG4gICAgICBjb25zdCBiYXNlID0gb3V0cHV0T3B0aW9ucy5wdWJsaWNQYXRoID09PSAnYXV0bycgPyAnLycgOiBvdXRwdXRPcHRpb25zLnB1YmxpY1BhdGg7XHJcbiAgICAgIHJldHVybiBlbnN1cmVMZWFkaW5nU2xhc2goYmFzZSkgKyBvdXRwdXREaXIgKyAnLyc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRldlNlcnZlcikge1xyXG4gICAgICBpZiAodHlwZW9mIChkZXZTZXJ2ZXIgYXMgYW55KS5wdWJsaWNQYXRoID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGNvbnN0IGJhc2UgPSAoZGV2U2VydmVyIGFzIGFueSkucHVibGljUGF0aCA9PT0gJ2F1dG8nID8gJy8nIDogKGRldlNlcnZlciBhcyBhbnkpLnB1YmxpY1BhdGg7XHJcbiAgICAgICAgcmV0dXJuIGVuc3VyZUxlYWRpbmdTbGFzaChiYXNlKSArIG91dHB1dERpciArICcvJztcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCdzdGF0aWMnIGluIGRldlNlcnZlcikge1xyXG4gICAgICAgIGNvbnN0IHN0YXRpY0l0ZW1zID0gQXJyYXkuaXNBcnJheShkZXZTZXJ2ZXIuc3RhdGljKVxyXG4gICAgICAgICAgPyBkZXZTZXJ2ZXIuc3RhdGljXHJcbiAgICAgICAgICA6IChkZXZTZXJ2ZXIuc3RhdGljID8gW2RldlNlcnZlci5zdGF0aWNdIDogW10pO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygc3RhdGljSXRlbXMpIHtcclxuICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyA/IGl0ZW0gOiB7IGRpcmVjdG9yeTogaXRlbSB9O1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiBjb25maWcucHVibGljUGF0aCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGVuc3VyZUxlYWRpbmdTbGFzaChjb25maWcucHVibGljUGF0aCkgKyBvdXRwdXREaXIgKyAnLyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGAke291dHB1dERpcn0vYDtcclxuICB9XHJcblxyXG4gIC8vIPCflKUg5qC45b+D77ya5by65Yi25rOo5YWlIGRldlNlcnZlclxyXG4gIHByaXZhdGUgZm9yY2VDb25maWd1cmVEZXZTZXJ2ZXIoY29tcGlsZXI6IENvbXBpbGVyLCBsb2dnZXI6IGFueSkge1xyXG4gICAgY29uc3QgeyBvdXRwdXREaXIgfSA9IHRoaXMub3B0aW9ucztcclxuICAgIGNvbnN0IGJhc2VQYXRoID0gYC8ke291dHB1dERpci5yZXBsYWNlKC9eXFwvKy8sICcnKX1gO1xyXG4gICAgbGV0IGRldlNlcnZlckNvbmZpZyA9IGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyO1xyXG5cclxuICAgIGlmICghZGV2U2VydmVyQ29uZmlnKSB7XHJcbiAgICAgIChjb21waWxlci5vcHRpb25zIGFzIGFueSkuZGV2U2VydmVyID0gZGV2U2VydmVyQ29uZmlnID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIDEuIOWFiOWkhOeQhiBXRFMgdjTvvIjkv53mjIHkuI3lj5jvvIlcclxuICAgIGNvbnN0IGhhc1NldHVwTWlkZGxld2FyZXMgPSAnc2V0dXBNaWRkbGV3YXJlcycgaW4gZGV2U2VydmVyQ29uZmlnO1xyXG5cclxuICAgIGlmIChoYXNTZXR1cE1pZGRsZXdhcmVzKSB7XHJcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKTtcclxuICAgICAgY29uc3QgZGVmYXVsdFB1YmxpY0RpciA9IHBhdGguam9pbihjb250ZXh0LCAncHVibGljJywgdGhpcy5vcHRpb25zLm91dHB1dERpcik7XHJcbiAgICAgIGNvbnN0IG9yaWdpbmFsID0gZGV2U2VydmVyQ29uZmlnLnNldHVwTWlkZGxld2FyZXM7XHJcbiAgICAgIGRldlNlcnZlckNvbmZpZy5zZXR1cE1pZGRsZXdhcmVzID0gKG1pZGRsZXdhcmVzLCBzZXJ2ZXIpID0+IHtcclxuICAgICAgICBsb2dnZXIuaW5mbyhgW214Y2FkLWFzc2V0c10g8J+foiBJbmplY3RpbmcgbWlkZGxld2FyZSB2aWEgc2V0dXBNaWRkbGV3YXJlc2ApO1xyXG4gICAgICAgIHNlcnZlci5hcHAudXNlKGNyZWF0ZUdsb2JhbFVuaXZlcnNhbE1pZGRsZXdhcmUodGhpcy5vcHRpb25zKSk7XHJcbiAgICAgICAgc2VydmVyLmFwcC51c2UoYmFzZVBhdGgsIGNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSh0aGlzLnNvdXJjZUFzc2V0c1BhdGgsIHRoaXMub3B0aW9ucywgZGVmYXVsdFB1YmxpY0RpciwgbG9nZ2VyKSk7XHJcblxyXG4gICAgICAgIHJldHVybiBvcmlnaW5hbD8uKG1pZGRsZXdhcmVzLCBzZXJ2ZXIpIHx8IG1pZGRsZXdhcmVzO1xyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyDwn5SlIDIuIFdEUyB2M++8muWKq+aMgSBTZXJ2ZXIucHJvdG90eXBlLmxpc3RlblxyXG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0TWlkZGxld2FyZUZvcldEU3YzKGNvbXBpbGVyLCBiYXNlUGF0aCwgbG9nZ2VyKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5qZWN0TWlkZGxld2FyZUZvcldEU3YzKGNvbXBpbGVyOiBDb21waWxlciwgYmFzZVBhdGg6IHN0cmluZywgbG9nZ2VyOiBhbnkpIHtcclxuICAgIGNvbnN0IHRoaXNPcHRpb25zID0gdGhpcztcclxuICAgIGNvbnN0IGNvbnRleHQgPSBjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKTtcclxuICAgIGNvbnN0IGRlZmF1bHRQdWJsaWNEaXIgPSBwYXRoLmpvaW4oY29udGV4dCwgJ3B1YmxpYycsIHRoaXMub3B0aW9ucy5vdXRwdXREaXIpO1xyXG4gICAgLy8gV0RTIHYzIOS8muWcqCBjb21waWxhdGlvbiDml7bmmrTpnLIgZGV2U2VydmVyXHJcbiAgICBjb25zdCBkZXZTZXJ2ZXIgPSBjb21waWxlci5kZXZTZXJ2ZXI7XHJcbiAgICBpZiAoZGV2U2VydmVyKSB7XHJcbiAgICAgIC8vIOKchSDmlrnms5UgMe+8muWmguaenCBkZXZTZXJ2ZXIuc2VydmVyIOWtmOWcqO+8iOW3suWIm+W7uu+8iVxyXG4gICAgICBpZiAoZGV2U2VydmVyLnNlcnZlciAmJiBkZXZTZXJ2ZXIuc2VydmVyLmFwcCkge1xyXG4gICAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDwn5+iIEluamVjdGluZyBtaWRkbGV3YXJlIGRpcmVjdGx5IGludG8gZGV2U2VydmVyLnNlcnZlci5hcHBgKTtcclxuICAgICAgICBkZXZTZXJ2ZXIuc2VydmVyLmFwcC51c2UoY3JlYXRlR2xvYmFsVW5pdmVyc2FsTWlkZGxld2FyZSh0aGlzT3B0aW9ucy5vcHRpb25zKSlcclxuICAgICAgICBkZXZTZXJ2ZXIuc2VydmVyLmFwcC51c2UoYmFzZVBhdGgsIGNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSh0aGlzT3B0aW9ucy5zb3VyY2VBc3NldHNQYXRoLCB0aGlzT3B0aW9ucy5vcHRpb25zLCBkZWZhdWx0UHVibGljRGlyLCBsb2dnZXIpKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8g4pyFIOaWueazlSAy77ya55uR5ZCsIHNlcnZlciDnmoQgJ2xpc3RlbmluZycg5LqL5Lu2XHJcbiAgICAgIGNvbnN0IG9yaWdpbmFsTGlzdGVuID0gZGV2U2VydmVyLmxpc3RlbjtcclxuICAgICAgZGV2U2VydmVyLmxpc3RlbiA9IGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG9yaWdpbmFsTGlzdGVuLmFwcGx5KHRoaXMsIGFyZ3MpO1xyXG5cclxuICAgICAgICAvLyDnrYnlvoUgc2VydmVyIOWQr+WKqFxyXG4gICAgICAgIHRoaXMub24oJ2xpc3RlbmluZycsICgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLmFwcCAmJiAhdGhpcy5hcHAuX214Y2FkX2luamVjdGVkKSB7XHJcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDwn5qAIEluamVjdGluZyBtaWRkbGV3YXJlIHZpYSBkZXZTZXJ2ZXIubGlzdGVuIG92ZXJyaWRlYCk7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwLnVzZShjcmVhdGVHbG9iYWxVbml2ZXJzYWxNaWRkbGV3YXJlKHRoaXNPcHRpb25zLm9wdGlvbnMpKVxyXG4gICAgICAgICAgICB0aGlzLmFwcC51c2UoYmFzZVBhdGgsIGNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSh0aGlzT3B0aW9ucy5zb3VyY2VBc3NldHNQYXRoLCB0aGlzT3B0aW9ucy5vcHRpb25zLCBkZWZhdWx0UHVibGljRGlyLCBsb2dnZXIpKTtcclxuICAgICAgICAgICAgdGhpcy5hcHAuX214Y2FkX2luamVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDwn5ug77iPIFBhdGNoZWQgZGV2U2VydmVyLmxpc3RlbiBmb3IgV0RTIHYzYCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIOaWueazlSAz77ya5aaC5p6c5LiK6Z2i5LiN6KGM77yM5bCd6K+V5Yqr5oyBIFNlcnZlci5wcm90b3R5cGUubGlzdGVu77yI5aSH55So77yJXHJcbiAgICB0cnkge1xyXG4gICAgICAvLyDkvb/nlKggcmVxdWlyZS5jYWNoZSDliqjmgIHmn6Xmib4gU2VydmVyIOWunuS+i1xyXG4gICAgICBjb25zdCBzZXJ2ZXJQYXRoID0gJ3dlYnBhY2stZGV2LXNlcnZlci9saWIvU2VydmVyJztcclxuICAgICAgY29uc3QgY2FjaGVkTW9kdWxlID0gcmVxdWlyZS5jYWNoZVtyZXF1aXJlLnJlc29sdmUoc2VydmVyUGF0aCldO1xyXG5cclxuICAgICAgaWYgKGNhY2hlZE1vZHVsZSkge1xyXG4gICAgICAgIGNvbnN0IFNlcnZlciA9IGNhY2hlZE1vZHVsZS5leHBvcnRzO1xyXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsTGlzdGVuU2V0dXBNaWRkbGV3YXJlcyA9IFNlcnZlci5wcm90b3R5cGUuc2V0dXBNaWRkbGV3YXJlc1xyXG4gICAgICAgIFNlcnZlci5wcm90b3R5cGUuc2V0dXBNaWRkbGV3YXJlcyA9IGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuX214Y2FkX2luamVjdGVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsU2V0dXBNaWRkbGV3YXJlcyA9IHRoaXMub3B0aW9ucy5zZXR1cE1pZGRsZXdhcmVzXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zZXR1cE1pZGRsZXdhcmVzID0gKG1pZGRsZXdhcmVzLCBzZXJ2ZXIpID0+IHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgW214Y2FkLWFzc2V0c10g8J+foiBJbmplY3RpbmcgbWlkZGxld2FyZSB2aWEgc2V0dXBNaWRkbGV3YXJlc2ApO1xyXG4gICAgICAgICAgICAgIHRoaXMuYXBwLnVzZShjcmVhdGVHbG9iYWxVbml2ZXJzYWxNaWRkbGV3YXJlKHRoaXNPcHRpb25zLm9wdGlvbnMpKVxyXG4gICAgICAgICAgICAgIHNlcnZlci5hcHAudXNlKGJhc2VQYXRoLCBjcmVhdGVNeENhZEFzc2V0c01pZGRsZXdhcmUodGhpc09wdGlvbnMuc291cmNlQXNzZXRzUGF0aCwgdGhpc09wdGlvbnMub3B0aW9ucywgZGVmYXVsdFB1YmxpY0RpcikpO1xyXG4gICAgICAgICAgICAgIHJldHVybiAob3JpZ2luYWxTZXR1cE1pZGRsZXdhcmVzID09IG51bGwgPyB2b2lkIDAgOiBvcmlnaW5hbFNldHVwTWlkZGxld2FyZXMobWlkZGxld2FyZXMsIHNlcnZlcikpIHx8IG1pZGRsZXdhcmVzO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLl9teGNhZF9pbmplY3RlZCA9IHRydWVcclxuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsTGlzdGVuU2V0dXBNaWRkbGV3YXJlcy5hcHBseSh0aGlzLCAuLi5hcmdzKTs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxMaXN0ZW4gPSBTZXJ2ZXIucHJvdG90eXBlLmxpc3RlbjtcclxuXHJcbiAgICAgICAgU2VydmVyLnByb3RvdHlwZS5saXN0ZW4gPSBmdW5jdGlvbiAodGhpczogYW55LCAuLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgICAgICAgbG9nZ2VyLmluZm8oYFtteGNhZC1hc3NldHNdIPCfmoAgU2VydmVyLnByb3RvdHlwZS5saXN0ZW4gY2FsbGVkIChmcm9tIGNhY2hlKWApO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmFwcCAmJiAhdGhpcy5hcHAuX214Y2FkX2luamVjdGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwLnVzZShjcmVhdGVHbG9iYWxVbml2ZXJzYWxNaWRkbGV3YXJlKHRoaXNPcHRpb25zLm9wdGlvbnMpKVxyXG4gICAgICAgICAgICB0aGlzLmFwcC51c2UoYmFzZVBhdGgsIGNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSh0aGlzT3B0aW9ucy5zb3VyY2VBc3NldHNQYXRoLCB0aGlzT3B0aW9ucy5vcHRpb25zLCBkZWZhdWx0UHVibGljRGlyLCBsb2dnZXIpKTtcclxuICAgICAgICAgICAgdGhpcy5hcHAuX214Y2FkX2luamVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgbG9nZ2VyLmluZm8oYFtteGNhZC1hc3NldHNdIOKchSBNaWRkbGV3YXJlIGluamVjdGVkIHZpYSBTZXJ2ZXIucHJvdG90eXBlLmxpc3RlbmApO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHJldHVybiBvcmlnaW5hbExpc3Rlbi5hcHBseSh0aGlzLCBhcmdzKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBsb2dnZXIuaW5mbyhgW214Y2FkLWFzc2V0c10g8J+boO+4jyBQYXRjaGVkIFNlcnZlci5wcm90b3R5cGUubGlzdGVuIHZpYSByZXF1aXJlLmNhY2hlYCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbG9nZ2VyLndhcm4oYFtteGNhZC1hc3NldHNdIOKaoO+4jyBTZXJ2ZXIgbW9kdWxlIG5vdCBjYWNoZWQgeWV0LCBwYXRjaCBtYXkgZmFpbGApO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDwn5+hIENvdWxkIG5vdCBwYXRjaCB2aWEgcmVxdWlyZS5jYWNoZTogJHsoZSBhcyBFcnJvcikubWVzc2FnZX1gKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBjbG9zZUJ1bmRsZShjb21waWxlcjogQ29tcGlsZXIsIGxvZ2dlcjogYW55KSB7XHJcbiAgICBjb21waWxlci5ob29rcy5kb25lLnRhcEFzeW5jKCdNeENhZEFzc2V0c1BsdWdpbicsIChzdGF0cywgY2FsbGJhY2spID0+IHtcclxuICAgICAgaWYgKGNvbXBpbGVyLm9wdGlvbnMubW9kZSA9PT0gJ3Byb2R1Y3Rpb24nKSB7XHJcbiAgICAgICAgdGhpcy5jb3B5QXNzZXRzVG9PdXRwdXQoY29tcGlsZXIsIGxvZ2dlciwgY2FsbGJhY2spO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb3B5QXNzZXRzVG9PdXRwdXQoXHJcbiAgICBjb21waWxlcjogQ29tcGlsZXIsXHJcbiAgICBsb2dnZXI6IGFueSxcclxuICAgIGNhbGxiYWNrOiAoZXJyPzogRXJyb3IpID0+IHZvaWRcclxuICApIHtcclxuICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLnNvdXJjZUFzc2V0c1BhdGgpKSB7XHJcbiAgICAgIGxvZ2dlci53YXJuKGBbbXhjYWQtYXNzZXRzXSDimqDvuI8gU291cmNlIG5vdCBmb3VuZDogJHt0aGlzLnNvdXJjZUFzc2V0c1BhdGh9YCk7XHJcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG91dHB1dFBhdGggPSBjb21waWxlci5vcHRpb25zLm91dHB1dD8ucGF0aCB8fCAnZGlzdCc7XHJcbiAgICBjb25zdCB0YXJnZXRBc3NldHNQYXRoID0gcGF0aC5qb2luKG91dHB1dFBhdGgsIHRoaXMub3B0aW9ucy5vdXRwdXREaXIpO1xyXG4gICAgY29uc3Qgb3V0cHV0RnMgPSBjb21waWxlci5vdXRwdXRGaWxlU3lzdGVtIHx8IGZzO1xyXG5cclxuICAgIG91dHB1dEZzLm1rZGlyKHRhcmdldEFzc2V0c1BhdGgsIHsgcmVjdXJzaXZlOiB0cnVlIH0sIChlcnIpID0+IHtcclxuICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XHJcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKTtcclxuICAgICAgY29uc3QgZGVmYXVsdFB1YmxpY0RpciA9IHBhdGguam9pbihjb250ZXh0LCAncHVibGljJywgdGhpcy5vcHRpb25zLm91dHB1dERpcik7XHJcblxyXG4gICAgICBzaGFyZWRDb3B5RGlyKHRoaXMuc291cmNlQXNzZXRzUGF0aCwgdGFyZ2V0QXNzZXRzUGF0aCwgZGVmYXVsdFB1YmxpY0RpciwgdGhpcy5vcHRpb25zLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgbG9nZ2VyLmVycm9yKGBbbXhjYWQtYXNzZXRzXSDinYwgQ29weSBmYWlsZWQ6ICR7ZXJyLm1lc3NhZ2V9YCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDinIUgQ29waWVkIHRvICR7dGFyZ2V0QXNzZXRzUGF0aH1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICBjYWxsYmFjayhlcnIpO1xyXG4gICAgICAgIH0gY2F0Y2goZSkge1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyYW5zZm9ybUluZGV4SHRtbChjb21waWxlcjogQ29tcGlsZXIsIGxvZ2dlcjogYW55KSB7XHJcbiAgICBjb25zdCBpbmplY3RTY3JpcHQgPSAoY29tcGlsYXRpb246IENvbXBpbGF0aW9uKSA9PiB7XHJcbiAgICAgIGNvbnN0IHB1YmxpY1BhdGggPSB0aGlzLnJlc29sdmVkQ29uZmlnPy5wdWJsaWNQYXRoIHx8IGAuLyR7dGhpcy5vcHRpb25zLm91dHB1dERpcn0vYDtcclxuICAgICAgY29uc3Qgc2NyaXB0ID0gZ2VuZXJhdGVSdW50aW1lQ29uZmlnU2NyaXB0KHB1YmxpY1BhdGgpO1xyXG5cclxuICAgICAgZm9yIChjb25zdCBbZmlsZW5hbWUsIGFzc2V0XSBvZiBPYmplY3QuZW50cmllcyhjb21waWxhdGlvbi5hc3NldHMpKSB7XHJcbiAgICAgICAgaWYgKGZpbGVuYW1lLmVuZHNXaXRoKCcuaHRtbCcpICYmIGlzU291cmNlKGFzc2V0KSkge1xyXG4gICAgICAgICAgY29uc3Qgc291cmNlID0gYXNzZXQuc291cmNlKCkudG9TdHJpbmcoKTtcclxuICAgICAgICAgIGlmIChzb3VyY2UuaW5jbHVkZXMoJzwvaGVhZD4nKSkge1xyXG4gICAgICAgICAgICBjb25zdCBtb2RpZmllZCA9IHNvdXJjZS5yZXBsYWNlKCc8L2hlYWQ+JywgYCR7c2NyaXB0fTwvaGVhZD5gKTtcclxuICAgICAgICAgICAgY29tcGlsYXRpb24uYXNzZXRzW2ZpbGVuYW1lXSA9IHtcclxuICAgICAgICAgICAgICBzb3VyY2U6ICgpID0+IG1vZGlmaWVkLFxyXG4gICAgICAgICAgICAgIHNpemU6ICgpID0+IEJ1ZmZlci5ieXRlTGVuZ3RoKG1vZGlmaWVkLCAndXRmOCcpLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBsb2dnZXIuaW5mbyhgW214Y2FkLWFzc2V0c10g4pyFIEluamVjdGVkIGludG8gJHtmaWxlbmFtZX1gKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLy8g5qOA5p+l5piv5ZCm5pSv5oyBIHByb2Nlc3NBc3NldHPvvIhXZWJwYWNrIDUr77yJXHJcbiAgICBpZiAoJ3Byb2Nlc3NBc3NldHMnIGluIGNvbXBpbGVyLmhvb2tzKSB7XHJcbiAgICAgIGNvbXBpbGVyLmhvb2tzLmNvbXBpbGF0aW9uLnRhcCgnTXhDYWRBc3NldHNQbHVnaW4nLCAoY29tcGlsYXRpb246IENvbXBpbGF0aW9uKSA9PiB7XHJcbiAgICAgICAgLy8g4pyFIOS9v+eUqOato+ehrueahOmYtuauteW4uOmHj++8mkFERElUSU9OQUzvvIjkuI3mmK8gQURESVRJT05T77yJXHJcbiAgICAgICAgY29tcGlsYXRpb24uaG9va3MucHJvY2Vzc0Fzc2V0cy50YXAoXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdNeENhZEFzc2V0c1BsdWdpbicsXHJcbiAgICAgICAgICAgIHN0YWdlOiBDb21waWxhdGlvbi5QUk9DRVNTX0FTU0VUU19TVEFHRV9BRERJVElPTkFMLCAvLyDinIUg6Z2Z5oCB5bGe5oCn77yM55u05o6l6YCa6L+H57G76K6/6ZeuXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgaW5qZWN0U2NyaXB0XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgLy8g5Y+v6YCJ77ya5re75Yqg57G75Z6L5L+h5oGv77yIV2VicGFjayDnsbvlnovvvIlcclxuICAgICAgICAvLyBjb21waWxhdGlvbjogQ29tcGlsYXRpb25cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBXZWJwYWNrIDQg5YW85a6577ya5L2/55SoIGVtaXQg6ZKp5a2QXHJcbiAgICAgIGNvbXBpbGVyLmhvb2tzLmVtaXQudGFwQXN5bmMoJ014Q2FkQXNzZXRzUGx1Z2luJywgKGNvbXBpbGF0aW9uOiBDb21waWxhdGlvbiwgY2IpID0+IHtcclxuICAgICAgICBpbmplY3RTY3JpcHQoY29tcGlsYXRpb24pO1xyXG4gICAgICAgIGNiKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy8g5bel5YW35Ye95pWwXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG5mdW5jdGlvbiBlbnN1cmVMZWFkaW5nU2xhc2goc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIHJldHVybiBzdHJcclxufVxyXG5cclxuZnVuY3Rpb24gaXNTb3VyY2UoYXNzZXQ6IGFueSk6IGFzc2V0IGlzIHsgc291cmNlKCk6IHN0cmluZyB8IEJ1ZmZlciB9IHtcclxuICByZXR1cm4gYXNzZXQgJiYgdHlwZW9mIGFzc2V0LnNvdXJjZSA9PT0gJ2Z1bmN0aW9uJztcclxufVxyXG5cclxuXHJcblxyXG5leHBvcnQgZGVmYXVsdCBNeENhZEFzc2V0c1dlYnBhY2tQbHVnaW47Il0sIm5hbWVzIjpbInJlc29sdmVPcHRpb25zIiwiZ2V0U291cmNlQXNzZXRzUGF0aCIsImZzIiwiZ2V0RXh0ZXJuYWxzIiwicGF0aCIsImNyZWF0ZUdsb2JhbFVuaXZlcnNhbE1pZGRsZXdhcmUiLCJjcmVhdGVNeENhZEFzc2V0c01pZGRsZXdhcmUiLCJzaGFyZWRDb3B5RGlyIiwiZXJyIiwi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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../packToolPluginSrc/webpack/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAe,MAAM,SAAS,CAAC;AAIhD,OAAO,EACL,wBAAwB,EAWzB,MAAM,WAAW,CAAC;AAEnB,qBAAa,wBAAwB;IACnC,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,cAAc,CAAC,CAKrB;gBAEU,OAAO,CAAC,EAAE,wBAAwB;IAU9C,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAwB/B,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,uBAAuB;IA6B/B,OAAO,CAAC,wBAAwB;IAiFhC,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,kBAAkB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../packToolPluginSrc/webpack/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAe,MAAM,SAAS,CAAC;AAIhD,OAAO,EACL,wBAAwB,EAWzB,MAAM,WAAW,CAAC;AAEnB,qBAAa,wBAAwB;IACnC,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,cAAc,CAAC,CAKrB;gBAEU,OAAO,CAAC,EAAE,wBAAwB;IAU9C,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAwB/B,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,uBAAuB;IA6B/B,OAAO,CAAC,wBAAwB;IAiFhC,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,kBAAkB;IAkC1B,OAAO,CAAC,kBAAkB;CA2C3B;AAgBD,eAAe,wBAAwB,CAAC"}
|