@kontur.candy/tools 2.138.0 → 2.140.0-debug
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/CHANGELOG.md +79 -0
- package/distr/Common/CandyApiClient/CandyApiClient.js +80 -9
- package/distr/Common/CandyApiClient/FakeCandyApiClient.js +26 -4
- package/distr/Common/CandyApiClient/Types/GetInner/ServerRawResponse.js +11 -0
- package/distr/Common/CandyApiClient/Types/MassActions/MassActionParameters.js +6 -0
- package/distr/Common/CandyApiClient/Types/Print/PrintResponse.js +6 -0
- package/distr/Common/CandyApiClient/Types/Print/PrintType.js +14 -0
- package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesOptions.js +6 -0
- package/distr/Common/HttpClient/HttpClient.js +5 -2
- package/distr/Common/IterableUtils.js +26 -1
- package/distr/Common/KCLangRuntimeUtils.js +10 -2
- package/distr/Common/ModelPath/BuildIterationSequence.js +3 -2
- package/distr/Common/ModelPath/ModelPath.js +15 -4
- package/distr/Common/StringArrayKey.js +4 -12
- package/distr/Common/UseShowOnce.js +88 -0
- package/distr/Common/hashUtils.js +17 -0
- package/distr/Tools/src/BuildTasks/Form/CompileForm.js +10 -4
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js +45 -2
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js +3 -1
- package/distr/Tools/src/BuildTasks/ResolveFormInfo.js +1 -1
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +6 -6
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +46 -4
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js +2 -2
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js +12 -6
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +2 -2
- package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js +5 -2
- package/distr/Tools/src/Commons/ApiClient/ToolsApiClient.js +37 -0
- package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js +9 -7
- package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +5 -3
- package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +151 -57
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +226 -137
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -37,13 +37,13 @@ var _PathPattern = require("../../../Commons/PathPattern");
|
|
|
37
37
|
|
|
38
38
|
var _TypingUtils = require("../../../../../Common/TypingUtils");
|
|
39
39
|
|
|
40
|
-
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _class;
|
|
40
|
+
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _class;
|
|
41
41
|
|
|
42
42
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
43
43
|
|
|
44
44
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
45
45
|
|
|
46
|
-
let BuildServerBackendResourcesController = (_dec = (0, _Methods.httpGet)("/picklists", _Results.httpReturn.PlainText),
|
|
46
|
+
let BuildServerBackendResourcesController = (_dec = (0, _Methods.httpGet)("/gfvs", _Results.httpReturn.Json), _dec2 = (0, _Methods.httpGet)("/picklists", _Results.httpReturn.PlainText), _dec3 = (0, _Methods.httpGet)("/picklists/:picklistFilename", _Results.httpReturn.StreamWithMime("application/json"), (0, _Params.httpUrlParam)("picklistFilename", _Params.httpType.String)), _dec4 = (0, _Methods.httpGet)("/converters", _Results.httpReturn.PlainText), _dec5 = (0, _Methods.httpGet)("/converters/:filename", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("filename", _Params.httpType.String)), _dec6 = (0, _Methods.httpGet)("/mergers", _Results.httpReturn.PlainText), _dec7 = (0, _Methods.httpGet)("/mergers/:filename", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("filename", _Params.httpType.String)), _dec8 = (0, _Methods.httpGet)("*/xsltTemplates*/:filename", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("filename", _Params.httpType.String)), _dec9 = (0, _Methods.httpGet)("/schemas", _Results.httpReturn.PlainText), _dec10 = (0, _Methods.httpGet)("/schemas/:filename", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("filename", _Params.httpType.String)), _dec11 = (0, _Methods.httpGet)("/presentations", _Results.httpReturn.PlainText), _dec12 = (0, _Methods.httpGet)("/presentations/:gfv.presentations.json", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec13 = (0, _Methods.httpGet)("/normalize", _Results.httpReturn.PlainText), _dec14 = (0, _Methods.httpGet)("/normalize/:gfv.xml", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec15 = (0, _Methods.httpGet)("/normalize/:gfv.normalize", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec16 = (0, _Methods.httpGet)("/attachmentpaths", _Results.httpReturn.PlainText), _dec17 = (0, _Methods.httpGet)("/attachmentpaths/:gfv.json", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec18 = (0, _Methods.httpGet)("/unmap", _Results.httpReturn.PlainText), _dec19 = (0, _Methods.httpGet)("/unmap/:gfv.xml", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec20 = (0, _Methods.httpGet)("/map", _Results.httpReturn.PlainText), _dec21 = (0, _Methods.httpGet)("/map/:gfv.xml", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec22 = (0, _Methods.httpGet)("/patch", _Results.httpReturn.PlainText), _dec23 = (0, _Methods.httpGet)("/patch/:gfv.xslt", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), (_class = class BuildServerBackendResourcesController extends _SingletonController.SingletonController {
|
|
47
47
|
constructor(allFarmConfig, flangNormalizationSourcesProvider) {
|
|
48
48
|
super();
|
|
49
49
|
this.allFarmConfig = void 0;
|
|
@@ -57,6 +57,14 @@ let BuildServerBackendResourcesController = (_dec = (0, _Methods.httpGet)("/pick
|
|
|
57
57
|
}, 5000);
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
+
async getAllGfvs() {
|
|
61
|
+
const promises = this.allFarmConfig.map(i => (0, _FsUtils.globAsync)("forms/*", {
|
|
62
|
+
cwd: path.join(i.farmDirectory)
|
|
63
|
+
}));
|
|
64
|
+
const gfvs = (await Promise.all(promises)).flat();
|
|
65
|
+
return gfvs.map(x => x.replace("forms/", ""));
|
|
66
|
+
}
|
|
67
|
+
|
|
60
68
|
async getAllPicklists() {
|
|
61
69
|
const promises = this.allFarmConfig.map(i => (0, _FsUtils.globAsync)("picklists/*", {
|
|
62
70
|
cwd: path.join(i.farmDirectory)
|
|
@@ -99,6 +107,40 @@ let BuildServerBackendResourcesController = (_dec = (0, _Methods.httpGet)("/pick
|
|
|
99
107
|
throw new _NotFoundWebError.NotFoundWebError("File not found", false);
|
|
100
108
|
}
|
|
101
109
|
|
|
110
|
+
async getAllMergersFiles() {
|
|
111
|
+
const promises = this.allFarmConfig.map(i => (0, _FsUtils.globAsync)("forms/*/mergers/*", {
|
|
112
|
+
cwd: path.join(i.farmDirectory)
|
|
113
|
+
}));
|
|
114
|
+
const files = (await Promise.all(promises)).flat();
|
|
115
|
+
return files.map(x => path.basename(x)).join("\n");
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
async getMergerFile(filename) {
|
|
119
|
+
const allFarmDirectories = this.allFarmConfig.map(i => i.farmDirectory).flat();
|
|
120
|
+
const formDirPath = allFarmDirectories.map(pth => path.join(pth));
|
|
121
|
+
const possibleFilePaths = formDirPath.map(i => (0, _ExtractGfvsFromFileName.extractGfvsFromFileName)(filename).map(gfv => path.join(i, `forms/${gfv}/mergers/${filename}`))).flat();
|
|
122
|
+
|
|
123
|
+
for (const filePath of possibleFilePaths) {
|
|
124
|
+
if (await (0, _fsExtra.pathExists)(filePath)) {
|
|
125
|
+
return new _StreamResultHandler.FileStreamResult(filePath);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
throw new _NotFoundWebError.NotFoundWebError("File not found", false);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
async getXsltTemplate(filename) {
|
|
133
|
+
const xsltTemplatesPaths = this.allFarmConfig.map(i => path.join(i.farmDirectory, "xsltTemplates", filename));
|
|
134
|
+
|
|
135
|
+
for (const filePath of xsltTemplatesPaths) {
|
|
136
|
+
if (await (0, _fsExtra.pathExists)(filePath)) {
|
|
137
|
+
return new _StreamResultHandler.FileStreamResult(filePath);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
throw new _NotFoundWebError.NotFoundWebError(`XSLT template not found: ${filename}`, false);
|
|
142
|
+
}
|
|
143
|
+
|
|
102
144
|
async getAllSchemasFiles() {
|
|
103
145
|
if (this.allSchemasFiles === undefined) {
|
|
104
146
|
const promises = this.allFarmConfig.map(i => (0, _FsUtils.globAsync)("forms/*/schemas/*", {
|
|
@@ -242,6 +284,6 @@ let BuildServerBackendResourcesController = (_dec = (0, _Methods.httpGet)("/pick
|
|
|
242
284
|
throw Error(`not found unmap ${gfv}.xml`);
|
|
243
285
|
}
|
|
244
286
|
|
|
245
|
-
}, ((0, _applyDecoratedDescriptor2.default)(_class.prototype, "
|
|
287
|
+
}, ((0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllGfvs", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "getAllGfvs"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllPicklists", [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, "getAllPicklists"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getPicklists", [_dec3], Object.getOwnPropertyDescriptor(_class.prototype, "getPicklists"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllConvertersFiles", [_dec4], Object.getOwnPropertyDescriptor(_class.prototype, "getAllConvertersFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getConverterFile", [_dec5], Object.getOwnPropertyDescriptor(_class.prototype, "getConverterFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllMergersFiles", [_dec6], Object.getOwnPropertyDescriptor(_class.prototype, "getAllMergersFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getMergerFile", [_dec7], Object.getOwnPropertyDescriptor(_class.prototype, "getMergerFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getXsltTemplate", [_dec8], Object.getOwnPropertyDescriptor(_class.prototype, "getXsltTemplate"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllSchemasFiles", [_dec9], Object.getOwnPropertyDescriptor(_class.prototype, "getAllSchemasFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormSchemas", [_dec10], Object.getOwnPropertyDescriptor(_class.prototype, "getFormSchemas"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllFormPresentations", [_dec11], Object.getOwnPropertyDescriptor(_class.prototype, "getAllFormPresentations"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormPresentations", [_dec12], Object.getOwnPropertyDescriptor(_class.prototype, "getFormPresentations"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllNormalizeFiles", [_dec13], Object.getOwnPropertyDescriptor(_class.prototype, "getAllNormalizeFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getNormalizeFile", [_dec14], Object.getOwnPropertyDescriptor(_class.prototype, "getNormalizeFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFLangNormalizeFile", [_dec15], Object.getOwnPropertyDescriptor(_class.prototype, "getFLangNormalizeFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllAttachmentPathsFileNames", [_dec16], Object.getOwnPropertyDescriptor(_class.prototype, "getAllAttachmentPathsFileNames"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAttachmentPathFile", [_dec17], Object.getOwnPropertyDescriptor(_class.prototype, "getAttachmentPathFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllUnmapFiles", [_dec18], Object.getOwnPropertyDescriptor(_class.prototype, "getAllUnmapFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getUnmapFile", [_dec19], Object.getOwnPropertyDescriptor(_class.prototype, "getUnmapFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllMapFiles", [_dec20], Object.getOwnPropertyDescriptor(_class.prototype, "getAllMapFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getMapFile", [_dec21], Object.getOwnPropertyDescriptor(_class.prototype, "getMapFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllPatchFiles", [_dec22], Object.getOwnPropertyDescriptor(_class.prototype, "getAllPatchFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getPatchFile", [_dec23], Object.getOwnPropertyDescriptor(_class.prototype, "getPatchFile"), _class.prototype)), _class));
|
|
246
288
|
exports.BuildServerBackendResourcesController = BuildServerBackendResourcesController;
|
|
247
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNDb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbIkJ1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc0NvbnRyb2xsZXIiLCJodHRwUmV0dXJuIiwiUGxhaW5UZXh0IiwiU3RyZWFtV2l0aE1pbWUiLCJodHRwVHlwZSIsIlN0cmluZyIsIlN0cmVhbSIsIlNpbmdsZXRvbkNvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImFsbEZhcm1Db25maWciLCJmbGFuZ05vcm1hbGl6YXRpb25Tb3VyY2VzUHJvdmlkZXIiLCJnZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyIiwiYWxsU2NoZW1hc0ZpbGVzIiwicmVzZXRBbGxTY2hlbWFGaWxlc0RlYm91bmNlZCIsInVuZGVmaW5lZCIsImdldEFsbFBpY2tsaXN0cyIsInByb21pc2VzIiwibWFwIiwiaSIsImN3ZCIsInBhdGgiLCJqb2luIiwiZmFybURpcmVjdG9yeSIsImZpbGVzIiwiUHJvbWlzZSIsImFsbCIsImZsYXQiLCJ4IiwicmVwbGFjZSIsImdldFBpY2tsaXN0cyIsInBpY2tsaXN0RmlsZW5hbWUiLCJhbGxGaWxlUGF0aCIsInBhdGhGaWxlIiwiRXJyb3IiLCJnZXRBbGxDb252ZXJ0ZXJzRmlsZXMiLCJiYXNlbmFtZSIsImdldENvbnZlcnRlckZpbGUiLCJmaWxlbmFtZSIsImFsbEZhcm1EaXJlY3RvcmllcyIsImZvcm1EaXJQYXRoIiwicHRoIiwicG9zc2libGVGaWxlUGF0aHMiLCJnZnYiLCJmaWxlUGF0aCIsIkZpbGVTdHJlYW1SZXN1bHQiLCJOb3RGb3VuZFdlYkVycm9yIiwiZ2V0QWxsU2NoZW1hc0ZpbGVzIiwiZ2V0Rm9ybVNjaGVtYXMiLCJmaWxlUGF0dGVybiIsIlBhdGhQYXR0ZXJuIiwiZXhlY1N0cmljdCIsImZpbGUiLCJnZXRBbGxGb3JtUHJlc2VudGF0aW9ucyIsImdldEZvcm1QcmVzZW50YXRpb25zIiwiZ2V0QWxsTm9ybWFsaXplRmlsZXMiLCJmbGFuZ0ZpbGVzIiwiZ2V0QWxsTm9ybWFsaXphdGlvbkZpbGVOYW1lcyIsImdldE5vcm1hbGl6ZUZpbGUiLCJnZXRGTGFuZ05vcm1hbGl6ZUZpbGUiLCJTdHJlYW1SZXN1bHQiLCJnZXROb3JtYWxpemF0aW9uRmlsZUNvbnRlbnQiLCJnZXRBbGxBdHRhY2htZW50UGF0aHNGaWxlTmFtZXMiLCJnZXRBbGxBdHRhY2htZW50UGF0aEZpbGVOYW1lcyIsImdldEF0dGFjaG1lbnRQYXRoRmlsZSIsImdldEF0dGFjaG1lbnRQYXRoc0ZpbGVDb250ZW50IiwiZ2V0QWxsVW5tYXBGaWxlcyIsImdldFVubWFwRmlsZSIsImdldEFsbE1hcEZpbGVzIiwiZ2V0TWFwRmlsZSIsImdldEFsbFBhdGNoRmlsZXMiLCJnZXRQYXRjaEZpbGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSUE7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0lBSWFBLHFDLFdBbUJSLHNCQUFRLFlBQVIsRUFBc0JDLG9CQUFXQyxTQUFqQyxDLFVBT0Esc0JBQ0csOEJBREgsRUFFR0Qsb0JBQVdFLGNBQVgsQ0FBMEIsa0JBQTFCLENBRkgsRUFHRywwQkFBYSxrQkFBYixFQUFpQ0MsaUJBQVNDLE1BQTFDLENBSEgsQyxVQWVBLHNCQUFRLGFBQVIsRUFBdUJKLG9CQUFXQyxTQUFsQyxDLFVBU0Esc0JBQVEsdUJBQVIsRUFBaUNELG9CQUFXSyxNQUE1QyxFQUFvRCwwQkFBYSxVQUFiLEVBQXlCRixpQkFBU0MsTUFBbEMsQ0FBcEQsQyxVQWdCQSxzQkFBUSxVQUFSLEVBQW9CSixvQkFBV0MsU0FBL0IsQyxVQWFBLHNCQUFRLG9CQUFSLEVBQThCRCxvQkFBV0ssTUFBekMsRUFBaUQsMEJBQWEsVUFBYixFQUF5QkYsaUJB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LEVBQTJCLE9BQTNCLEVBQW9Db0IsR0FBcEMsRUFBeUMsT0FBekMsRUFBbUQsR0FBRUEsR0FBSSxPQUF6RCxDQURnQixDQUFwQjs7QUFHQSxTQUFLLE1BQU1WLFFBQVgsSUFBdUJELFdBQXZCLEVBQW9DO0FBQ2hDLFVBQUksTUFBTSx5QkFBV0MsUUFBWCxDQUFWLEVBQWdDO0FBQzVCLGVBQU8sSUFBSVkscUNBQUosQ0FBcUJaLFFBQXJCLENBQVA7QUFDSDtBQUNKOztBQUNELFVBQU1DLEtBQUssQ0FBRSxtQkFBa0JTLEdBQUksTUFBeEIsQ0FBWDtBQUNIOztBQXZOMEUsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVJlYWRTdHJlYW0sIFJlYWRTdHJlYW0gfSBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgcGF0aEV4aXN0cyB9IGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IF8sIHsgZGVib3VuY2UgfSBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQgeyBGYXJtQ29uZmlnIH0gZnJvbSBcIlRvb2xzL3NyYy9DYW5keUNMSVwiO1xuXG5pbXBvcnQgeyBleHRyYWN0R2Z2c0Zyb21GaWxlTmFtZSB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0V4dHJhY3RHZnZzRnJvbUZpbGVOYW1lXCI7XG5pbXBvcnQgeyBnbG9iQXN5bmMgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9Gc1V0aWxzXCI7XG5pbXBvcnQgeyBodHRwR2V0IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL01ldGhvZHNcIjtcbmltcG9ydCB7IE5vdEZvdW5kV2ViRXJyb3IgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvTm90Rm91bmRXZWJFcnJvclwiO1xuaW1wb3J0IHsgaHR0cFR5cGUsIGh0dHBVcmxQYXJhbSB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9QYXJhbXNcIjtcbmltcG9ydCB7IGh0dHBSZXR1cm4gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUmVzdWx0c1wiO1xuaW1wb3J0IHtcbiAgICBGaWxlU3RyZWFtUmVzdWx0LFxuICAgIFN0cmVhbVJlc3VsdCxcbn0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1Jlc3VsdHMvU3RyZWFtUmVzdWx0SGFuZGxlclwiO1xuaW1wb3J0IHsgU2luZ2xldG9uQ29udHJvbGxlciB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvRXhwcmVzc1dyYXBwZXIvU2luZ2xldG9uQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgUGF0aFBhdHRlcm4gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9QYXRoUGF0dGVyblwiO1xuaW1wb3J0IHsgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9UeXBpbmdVdGlsc1wiO1xuXG5pbXBvcnQgeyBJR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlciB9IGZyb20gXCIuL0lHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBCdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNDb250cm9sbGVyIGV4dGVuZHMgU2luZ2xldG9uQ29udHJvbGxlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGxGYXJtQ29uZmlnOiBGYXJtQ29uZmlnW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBnZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyOiBJR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlcjtcblxuICAgIHByaXZhdGUgYWxsU2NoZW1hc0ZpbGVzOiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSByZXNldEFsbFNjaGVtYUZpbGVzRGVib3VuY2VkOiAoKSA9PiB2b2lkO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBhbGxGYXJtQ29uZmlnOiBGYXJtQ29uZmlnW10sXG4gICAgICAgIGZsYW5nTm9ybWFsaXphdGlvblNvdXJjZXNQcm92aWRlcjogSUdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXJcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyID0gZmxhbmdOb3JtYWxpemF0aW9uU291cmNlc1Byb3ZpZGVyO1xuICAgICAgICB0aGlzLmFsbEZhcm1Db25maWcgPSBhbGxGYXJtQ29uZmlnO1xuICAgICAgICB0aGlzLnJlc2V0QWxsU2NoZW1hRmlsZXNEZWJvdW5jZWQgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFsbFNjaGVtYXNGaWxlcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfSwgNTAwMCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcGlja2xpc3RzXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxQaWNrbGlzdHMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT4gZ2xvYkFzeW5jKFwicGlja2xpc3RzLypcIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiB4LnJlcGxhY2UoXCJwaWNrbGlzdHMvXCIsIFwiXCIpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFxuICAgICAgICBcIi9waWNrbGlzdHMvOnBpY2tsaXN0RmlsZW5hbWVcIixcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcImFwcGxpY2F0aW9uL2pzb25cIiksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcInBpY2tsaXN0RmlsZW5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKVxuICAgIClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0UGlja2xpc3RzKHBpY2tsaXN0RmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8UmVhZFN0cmVhbT4ge1xuICAgICAgICBjb25zdCBhbGxGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5LCBcInBpY2tsaXN0c1wiLCBwaWNrbGlzdEZpbGVuYW1lKSk7XG4gICAgICAgIGZvciAoY29uc3QgcGF0aEZpbGUgb2YgYWxsRmlsZVBhdGgpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKHBhdGhGaWxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZWFkU3RyZWFtKHBhdGhGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBFcnJvcihgbm90IGZvdW5kIHBpY2tsaXN0RmlsZW5hbWUgJHtwaWNrbGlzdEZpbGVuYW1lfWApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL2NvbnZlcnRlcnNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbENvbnZlcnRlcnNGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgZ2xvYkFzeW5jKFwiZm9ybXMvKi9jb252ZXJ0ZXJzLypcIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICByZXR1cm4gZmlsZXMubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSkuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9jb252ZXJ0ZXJzLzpmaWxlbmFtZVwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZmlsZW5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q29udmVydGVyRmlsZShmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGFsbEZhcm1EaXJlY3RvcmllcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBpLmZhcm1EaXJlY3RvcnkpLmZsYXQoKTtcbiAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBhbGxGYXJtRGlyZWN0b3JpZXMubWFwKHB0aCA9PiBwYXRoLmpvaW4ocHRoKSk7XG5cbiAgICAgICAgY29uc3QgcG9zc2libGVGaWxlUGF0aHMgPSBmb3JtRGlyUGF0aFxuICAgICAgICAgICAgLm1hcChpID0+IGV4dHJhY3RHZnZzRnJvbUZpbGVOYW1lKGZpbGVuYW1lKS5tYXAoZ2Z2ID0+IHBhdGguam9pbihpLCBgZm9ybXMvJHtnZnZ9L2NvbnZlcnRlcnMvJHtmaWxlbmFtZX1gKSkpXG4gICAgICAgICAgICAuZmxhdCgpO1xuICAgICAgICBmb3IgKGNvbnN0IGZpbGVQYXRoIG9mIHBvc3NpYmxlRmlsZVBhdGhzKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlUGF0aCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoZmlsZVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZFdlYkVycm9yKFwiRmlsZSBub3QgZm91bmRcIiwgZmFsc2UpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3NjaGVtYXNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbFNjaGVtYXNGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBpZiAodGhpcy5hbGxTY2hlbWFzRmlsZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgICAgICBnbG9iQXN5bmMoXCJmb3Jtcy8qL3NjaGVtYXMvKlwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgICAgIHRoaXMuYWxsU2NoZW1hc0ZpbGVzID0gZmlsZXMubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSkuam9pbihcIlxcblwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlc2V0QWxsU2NoZW1hRmlsZXNEZWJvdW5jZWQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxsU2NoZW1hc0ZpbGVzO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3NjaGVtYXMvOmZpbGVuYW1lXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJmaWxlbmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtU2NoZW1hcyhmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXR0ZXJuID0gbmV3IFBhdGhQYXR0ZXJuKFwie2dmdn0uKi54bWxcIik7XG4gICAgICAgIGNvbnN0IGdmdjogc3RyaW5nID0gZmlsZVBhdHRlcm4uZXhlY1N0cmljdChmaWxlbmFtZSkuZ2Z2ID8/IHJlamVjdCgpO1xuICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZ1xuICAgICAgICAgICAgLm1hcChpID0+IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2LCBcInNjaGVtYXNcIiwgZmlsZW5hbWUpKVxuICAgICAgICAgICAgLmZsYXQoKTtcbiAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVQYXRoKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChmaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRXZWJFcnJvcihcIkZpbGUgbm90IGZvdW5kXCIsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9wcmVzZW50YXRpb25zXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxGb3JtUHJlc2VudGF0aW9ucygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgZ2xvYkFzeW5jKFwiZm9ybXMvKi9wcmVzZW50YXRpb25zLmpzb25cIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICByZXR1cm4gZmlsZXMubWFwKHggPT4geC5yZXBsYWNlKFwiZm9ybXMvXCIsIFwiXCIpLnJlcGxhY2UoXCIvXCIsIFwiLlwiKSkuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9wcmVzZW50YXRpb25zLzpnZnYucHJlc2VudGF0aW9ucy5qc29uXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Rm9ybVByZXNlbnRhdGlvbnMoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYWxsRmlsZVBhdGggPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT4gcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwicHJlc2VudGF0aW9ucy5qc29uXCIpKTtcbiAgICAgICAgZm9yIChjb25zdCBwYXRoRmlsZSBvZiBhbGxGaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGF0aEZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KHBhdGhGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBFcnJvcihgbm90IGZvdW5kIHVubWFwICR7Z2Z2fS54bWxgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9ub3JtYWxpemVcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbE5vcm1hbGl6ZUZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBnbG9iQXN5bmMoXCJmb3Jtcy8qL25vcm1hbGl6ZS8qLnhtbFwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIGNvbnN0IGZsYW5nRmlsZXMgPSBhd2FpdCB0aGlzLmdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIuZ2V0QWxsTm9ybWFsaXphdGlvbkZpbGVOYW1lcygpO1xuICAgICAgICByZXR1cm4gWy4uLmZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLCAuLi5mbGFuZ0ZpbGVzXS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL25vcm1hbGl6ZS86Z2Z2LnhtbFwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldE5vcm1hbGl6ZUZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYWxsRmlsZVBhdGggPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2LCBcIm5vcm1hbGl6ZVwiLCBgJHtnZnZ9LnhtbGApXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3QgcGF0aEZpbGUgb2YgYWxsRmlsZVBhdGgpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKHBhdGhGaWxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChwYXRoRmlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgRXJyb3IoYG5vdCBmb3VuZCB1bm1hcCAke2dmdn0ueG1sYCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbm9ybWFsaXplLzpnZnYubm9ybWFsaXplXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RkxhbmdOb3JtYWxpemVGaWxlKGdmdjogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW1SZXN1bHQoYXdhaXQgdGhpcy5nZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyLmdldE5vcm1hbGl6YXRpb25GaWxlQ29udGVudChnZnYpKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9hdHRhY2htZW50cGF0aHNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbEF0dGFjaG1lbnRQYXRoc0ZpbGVOYW1lcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBmbGFuZ0ZpbGVzID0gYXdhaXQgdGhpcy5nZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyLmdldEFsbEF0dGFjaG1lbnRQYXRoRmlsZU5hbWVzKCk7XG4gICAgICAgIHJldHVybiBmbGFuZ0ZpbGVzLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvYXR0YWNobWVudHBhdGhzLzpnZnYuanNvblwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldEF0dGFjaG1lbnRQYXRoRmlsZShnZnY6IHN0cmluZyk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtUmVzdWx0KGF3YWl0IHRoaXMuZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlci5nZXRBdHRhY2htZW50UGF0aHNGaWxlQ29udGVudChnZnYpKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi91bm1hcFwiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsVW5tYXBGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgZ2xvYkFzeW5jKFwiZm9ybXMvKi91bm1hcC8qLnhtbFwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3VubWFwLzpnZnYueG1sXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0VW5tYXBGaWxlKGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGFsbEZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdiwgXCJ1bm1hcFwiLCBgJHtnZnZ9LnhtbGApXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3QgcGF0aEZpbGUgb2YgYWxsRmlsZVBhdGgpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKHBhdGhGaWxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChwYXRoRmlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgRXJyb3IoYG5vdCBmb3VuZCB1bm1hcCAke2dmdn0ueG1sYCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbWFwXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxNYXBGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgZ2xvYkFzeW5jKFwiZm9ybXMvKi9tYXAvKi54bWxcIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICByZXR1cm4gZmlsZXMubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSkuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9tYXAvOmdmdi54bWxcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRNYXBGaWxlKGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGFsbEZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2LCBcIm1hcFwiLCBgJHtnZnZ9LnhtbGApKTtcbiAgICAgICAgZm9yIChjb25zdCBwYXRoRmlsZSBvZiBhbGxGaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGF0aEZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KHBhdGhGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBFcnJvcihgbm90IGZvdW5kIHVubWFwICR7Z2Z2fS54bWxgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9wYXRjaFwiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsUGF0Y2hGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgZ2xvYkFzeW5jKFwiZm9ybXMvKi9wYXRjaC8qLnhzbHRcIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICByZXR1cm4gZmlsZXMubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSkuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9wYXRjaC86Z2Z2LnhzbHRcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRQYXRjaEZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYWxsRmlsZVBhdGggPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2LCBcInBhdGNoXCIsIGAke2dmdn0ueHNsdGApXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3QgcGF0aEZpbGUgb2YgYWxsRmlsZVBhdGgpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKHBhdGhGaWxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChwYXRoRmlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgRXJyb3IoYG5vdCBmb3VuZCB1bm1hcCAke2dmdn0ueG1sYCk7XG4gICAgfVxufVxuIl19
|
|
289
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNDb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbIkJ1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc0NvbnRyb2xsZXIiLCJodHRwUmV0dXJuIiwiSnNvbiIsIlBsYWluVGV4dCIsIlN0cmVhbVdpdGhNaW1lIiwiaHR0cFR5cGUiLCJTdHJpbmciLCJTdHJlYW0iLCJTaW5nbGV0b25Db250cm9sbGVyIiwiY29uc3RydWN0b3IiLCJhbGxGYXJtQ29uZmlnIiwiZmxhbmdOb3JtYWxpemF0aW9uU291cmNlc1Byb3ZpZGVyIiwiZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlciIsImFsbFNjaGVtYXNGaWxlcyIsInJlc2V0QWxsU2NoZW1hRmlsZXNEZWJvdW5jZWQiLCJ1bmRlZmluZWQiLCJnZXRBbGxHZnZzIiwicHJvbWlzZXMiLCJtYXAiLCJpIiwiY3dkIiwicGF0aCIsImpvaW4iLCJmYXJtRGlyZWN0b3J5IiwiZ2Z2cyIsIlByb21pc2UiLCJhbGwiLCJmbGF0IiwieCIsInJlcGxhY2UiLCJnZXRBbGxQaWNrbGlzdHMiLCJmaWxlcyIsImdldFBpY2tsaXN0cyIsInBpY2tsaXN0RmlsZW5hbWUiLCJhbGxGaWxlUGF0aCIsInBhdGhGaWxlIiwiRXJyb3IiLCJnZXRBbGxDb252ZXJ0ZXJzRmlsZXMiLCJiYXNlbmFtZSIsImdldENvbnZlcnRlckZpbGUiLCJmaWxlbmFtZSIsImFsbEZhcm1EaXJlY3RvcmllcyIsImZvcm1EaXJQYXRoIiwicHRoIiwicG9zc2libGVGaWxlUGF0aHMiLCJnZnYiLCJmaWxlUGF0aCIsIkZpbGVTdHJlYW1SZXN1bHQiLCJOb3RGb3VuZFdlYkVycm9yIiwiZ2V0QWxsTWVyZ2Vyc0ZpbGVzIiwiZ2V0TWVyZ2VyRmlsZSIsImdldFhzbHRUZW1wbGF0ZSIsInhzbHRUZW1wbGF0ZXNQYXRocyIsImdldEFsbFNjaGVtYXNGaWxlcyIsImdldEZvcm1TY2hlbWFzIiwiZmlsZVBhdHRlcm4iLCJQYXRoUGF0dGVybiIsImV4ZWNTdHJpY3QiLCJmaWxlIiwiZ2V0QWxsRm9ybVByZXNlbnRhdGlvbnMiLCJnZXRGb3JtUHJlc2VudGF0aW9ucyIsImdldEFsbE5vcm1hbGl6ZUZpbGVzIiwiZmxhbmdGaWxlcyIsImdldEFsbE5vcm1hbGl6YXRpb25GaWxlTmFtZXMiLCJnZXROb3JtYWxpemVGaWxlIiwiZ2V0RkxhbmdOb3JtYWxpemVGaWxlIiwiU3RyZWFtUmVzdWx0IiwiZ2V0Tm9ybWFsaXphdGlvbkZpbGVDb250ZW50IiwiZ2V0QWxsQXR0YWNobWVudFBhdGhzRmlsZU5hbWVzIiwiZ2V0QWxsQXR0YWNobWVudFBhdGhGaWxlTmFtZXMiLCJnZXRBdHRhY2htZW50UGF0aEZpbGUiLCJnZXRBdHRhY2htZW50UGF0aHNGaWxlQ29udGVudCIsImdldEFsbFVubWFwRmlsZXMiLCJnZXRVbm1hcEZpbGUiLCJnZXRBbGxNYXBGaWxlcyIsImdldE1hcEZpbGUiLCJnZXRBbGxQYXRjaEZpbGVzIiwiZ2V0UGF0Y2hGaWxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUVBOztBQUNBOztBQUdBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUlBOztBQUNBOztBQUNBOzs7Ozs7OztJQUlhQSxxQyxXQW1CUixzQkFBUSxPQUFSLEVBQWlCQyxvQkFBV0MsSUFBNUIsQyxVQU9BLHNCQUFRLFlBQVIsRUFBc0JELG9CQUFXRSxTQUFqQyxDLFVBT0Esc0JBQ0csOEJBREgsRUFFR0Ysb0JBQVdHLGNBQVgsQ0FBMEIsa0JBQTFCLENBRkgsRUFHRywwQkFBYSxrQkFBYixFQUFpQ0MsaUJBQVNDLE1BQTFDLENBSEgsQyxVQWVBLHNCQUFRLGFBQVIsRUFBdUJMLG9CQUFXRSxTQUFsQyxDLFVBU0Esc0JBQVEsdUJBQVIsRUFBaUNGLG9CQUFXTSxNQUE1QyxFQUFvRCww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QUssR0FBRyxDQUFDLE1BQU1OLE9BQU8sQ0FBQ0MsR0FBUixDQUFZVCxRQUFaLENBQVAsRUFBOEJVLElBQTlCLEVBQWQ7QUFDQSxXQUFPSSxLQUFLLENBQUNiLEdBQU4sQ0FBVVUsQ0FBQyxJQUFJUCxJQUFJLENBQUNpQixRQUFMLENBQWNWLENBQWQsQ0FBZixFQUFpQ04sSUFBakMsQ0FBc0MsSUFBdEMsQ0FBUDtBQUNIOztBQUd3QixRQUFadUQsWUFBWSxDQUFDaEMsR0FBRCxFQUF5QztBQUM5RCxVQUFNWCxXQUFXLEdBQUcsS0FBS3hCLGFBQUwsQ0FBbUJRLEdBQW5CLENBQXVCQyxDQUFDLElBQ3hDRSxJQUFJLENBQUNDLElBQUwsQ0FBVUgsQ0FBQyxDQUFDSSxhQUFaLEVBQTJCLE9BQTNCLEVBQW9Dc0IsR0FBcEMsRUFBeUMsT0FBekMsRUFBbUQsR0FBRUEsR0FBSSxPQUF6RCxDQURnQixDQUFwQjs7QUFHQSxTQUFLLE1BQU1WLFFBQVgsSUFBdUJELFdBQXZCLEVBQW9DO0FBQ2hDLFVBQUksTUFBTSx5QkFBV0MsUUFBWCxDQUFWLEVBQWdDO0FBQzVCLGVBQU8sSUFBSVkscUNBQUosQ0FBcUJaLFFBQXJCLENBQVA7QUFDSDtBQUNKOztBQUNELFVBQU1DLEtBQUssQ0FBRSxtQkFBa0JTLEdBQUksTUFBeEIsQ0FBWDtBQUNIOztBQXBRMEUsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVJlYWRTdHJlYW0sIFJlYWRTdHJlYW0gfSBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgcGF0aEV4aXN0cyB9IGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IF8sIHsgZGVib3VuY2UgfSBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQgeyBGYXJtQ29uZmlnIH0gZnJvbSBcIlRvb2xzL3NyYy9DYW5keUNMSVwiO1xuXG5pbXBvcnQgeyBleHRyYWN0R2Z2c0Zyb21GaWxlTmFtZSB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0V4dHJhY3RHZnZzRnJvbUZpbGVOYW1lXCI7XG5pbXBvcnQgeyBnbG9iQXN5bmMgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9Gc1V0aWxzXCI7XG5pbXBvcnQgeyBodHRwR2V0IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL01ldGhvZHNcIjtcbmltcG9ydCB7IE5vdEZvdW5kV2ViRXJyb3IgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvTm90Rm91bmRXZWJFcnJvclwiO1xuaW1wb3J0IHsgaHR0cFR5cGUsIGh0dHBVcmxQYXJhbSB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9QYXJhbXNcIjtcbmltcG9ydCB7IGh0dHBSZXR1cm4gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUmVzdWx0c1wiO1xuaW1wb3J0IHtcbiAgICBGaWxlU3RyZWFtUmVzdWx0LFxuICAgIFN0cmVhbVJlc3VsdCxcbn0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1Jlc3VsdHMvU3RyZWFtUmVzdWx0SGFuZGxlclwiO1xuaW1wb3J0IHsgU2luZ2xldG9uQ29udHJvbGxlciB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvRXhwcmVzc1dyYXBwZXIvU2luZ2xldG9uQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgUGF0aFBhdHRlcm4gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9QYXRoUGF0dGVyblwiO1xuaW1wb3J0IHsgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9UeXBpbmdVdGlsc1wiO1xuXG5pbXBvcnQgeyBJR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlciB9IGZyb20gXCIuL0lHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBCdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNDb250cm9sbGVyIGV4dGVuZHMgU2luZ2xldG9uQ29udHJvbGxlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGxGYXJtQ29uZmlnOiBGYXJtQ29uZmlnW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBnZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyOiBJR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlcjtcblxuICAgIHByaXZhdGUgYWxsU2NoZW1hc0ZpbGVzOiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSByZXNldEFsbFNjaGVtYUZpbGVzRGVib3VuY2VkOiAoKSA9PiB2b2lkO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBhbGxGYXJtQ29uZmlnOiBGYXJtQ29uZmlnW10sXG4gICAgICAgIGZsYW5nTm9ybWFsaXphdGlvblNvdXJjZXNQcm92aWRlcjogSUdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXJcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyID0gZmxhbmdOb3JtYWxpemF0aW9uU291cmNlc1Byb3ZpZGVyO1xuICAgICAgICB0aGlzLmFsbEZhcm1Db25maWcgPSBhbGxGYXJtQ29uZmlnO1xuICAgICAgICB0aGlzLnJlc2V0QWxsU2NoZW1hRmlsZXNEZWJvdW5jZWQgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFsbFNjaGVtYXNGaWxlcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfSwgNTAwMCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvZ2Z2c1wiLCBodHRwUmV0dXJuLkpzb24pXG4gICAgcHVibGljIGFzeW5jIGdldEFsbEdmdnMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBnbG9iQXN5bmMoXCJmb3Jtcy8qXCIsIHsgY3dkOiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5KSB9KSk7XG4gICAgICAgIGNvbnN0IGdmdnMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIHJldHVybiBnZnZzLm1hcCh4ID0+IHgucmVwbGFjZShcImZvcm1zL1wiLCBcIlwiKSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcGlja2xpc3RzXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxQaWNrbGlzdHMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT4gZ2xvYkFzeW5jKFwicGlja2xpc3RzLypcIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiB4LnJlcGxhY2UoXCJwaWNrbGlzdHMvXCIsIFwiXCIpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFxuICAgICAgICBcIi9waWNrbGlzdHMvOnBpY2tsaXN0RmlsZW5hbWVcIixcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcImFwcGxpY2F0aW9uL2pzb25cIiksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcInBpY2tsaXN0RmlsZW5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKVxuICAgIClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0UGlja2xpc3RzKHBpY2tsaXN0RmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8UmVhZFN0cmVhbT4ge1xuICAgICAgICBjb25zdCBhbGxGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5LCBcInBpY2tsaXN0c1wiLCBwaWNrbGlzdEZpbGVuYW1lKSk7XG4gICAgICAgIGZvciAoY29uc3QgcGF0aEZpbGUgb2YgYWxsRmlsZVBhdGgpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKHBhdGhGaWxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZWFkU3RyZWFtKHBhdGhGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBFcnJvcihgbm90IGZvdW5kIHBpY2tsaXN0RmlsZW5hbWUgJHtwaWNrbGlzdEZpbGVuYW1lfWApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL2NvbnZlcnRlcnNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbENvbnZlcnRlcnNGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgZ2xvYkFzeW5jKFwiZm9ybXMvKi9jb252ZXJ0ZXJzLypcIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICByZXR1cm4gZmlsZXMubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSkuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9jb252ZXJ0ZXJzLzpmaWxlbmFtZVwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZmlsZW5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q29udmVydGVyRmlsZShmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGFsbEZhcm1EaXJlY3RvcmllcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBpLmZhcm1EaXJlY3RvcnkpLmZsYXQoKTtcbiAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBhbGxGYXJtRGlyZWN0b3JpZXMubWFwKHB0aCA9PiBwYXRoLmpvaW4ocHRoKSk7XG5cbiAgICAgICAgY29uc3QgcG9zc2libGVGaWxlUGF0aHMgPSBmb3JtRGlyUGF0aFxuICAgICAgICAgICAgLm1hcChpID0+IGV4dHJhY3RHZnZzRnJvbUZpbGVOYW1lKGZpbGVuYW1lKS5tYXAoZ2Z2ID0+IHBhdGguam9pbihpLCBgZm9ybXMvJHtnZnZ9L2NvbnZlcnRlcnMvJHtmaWxlbmFtZX1gKSkpXG4gICAgICAgICAgICAuZmxhdCgpO1xuICAgICAgICBmb3IgKGNvbnN0IGZpbGVQYXRoIG9mIHBvc3NpYmxlRmlsZVBhdGhzKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlUGF0aCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoZmlsZVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZFdlYkVycm9yKFwiRmlsZSBub3QgZm91bmRcIiwgZmFsc2UpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL21lcmdlcnNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbE1lcmdlcnNGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgZ2xvYkFzeW5jKFwiZm9ybXMvKi9tZXJnZXJzLypcIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICByZXR1cm4gZmlsZXMubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSkuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9tZXJnZXJzLzpmaWxlbmFtZVwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZmlsZW5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0TWVyZ2VyRmlsZShmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGFsbEZhcm1EaXJlY3RvcmllcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBpLmZhcm1EaXJlY3RvcnkpLmZsYXQoKTtcbiAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBhbGxGYXJtRGlyZWN0b3JpZXMubWFwKHB0aCA9PiBwYXRoLmpvaW4ocHRoKSk7XG5cbiAgICAgICAgY29uc3QgcG9zc2libGVGaWxlUGF0aHMgPSBmb3JtRGlyUGF0aFxuICAgICAgICAgICAgLm1hcChpID0+IGV4dHJhY3RHZnZzRnJvbUZpbGVOYW1lKGZpbGVuYW1lKS5tYXAoZ2Z2ID0+IHBhdGguam9pbihpLCBgZm9ybXMvJHtnZnZ9L21lcmdlcnMvJHtmaWxlbmFtZX1gKSkpXG4gICAgICAgICAgICAuZmxhdCgpO1xuICAgICAgICBmb3IgKGNvbnN0IGZpbGVQYXRoIG9mIHBvc3NpYmxlRmlsZVBhdGhzKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlUGF0aCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoZmlsZVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZFdlYkVycm9yKFwiRmlsZSBub3QgZm91bmRcIiwgZmFsc2UpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiKi94c2x0VGVtcGxhdGVzKi86ZmlsZW5hbWVcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImZpbGVuYW1lXCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldFhzbHRUZW1wbGF0ZShmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IHhzbHRUZW1wbGF0ZXNQYXRocyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5LCBcInhzbHRUZW1wbGF0ZXNcIiwgZmlsZW5hbWUpKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGZpbGVQYXRoIG9mIHhzbHRUZW1wbGF0ZXNQYXRocykge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KGZpbGVQYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZFdlYkVycm9yKGBYU0xUIHRlbXBsYXRlIG5vdCBmb3VuZDogJHtmaWxlbmFtZX1gLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvc2NoZW1hc1wiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsU2NoZW1hc0ZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGlmICh0aGlzLmFsbFNjaGVtYXNGaWxlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgICAgIGdsb2JBc3luYyhcImZvcm1zLyovc2NoZW1hcy8qXCIsIHsgY3dkOiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5KSB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICAgICAgdGhpcy5hbGxTY2hlbWFzRmlsZXMgPSBmaWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKS5qb2luKFwiXFxuXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVzZXRBbGxTY2hlbWFGaWxlc0RlYm91bmNlZCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5hbGxTY2hlbWFzRmlsZXM7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvc2NoZW1hcy86ZmlsZW5hbWVcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImZpbGVuYW1lXCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldEZvcm1TY2hlbWFzKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdHRlcm4gPSBuZXcgUGF0aFBhdHRlcm4oXCJ7Z2Z2fS4qLnhtbFwiKTtcbiAgICAgICAgY29uc3QgZ2Z2OiBzdHJpbmcgPSBmaWxlUGF0dGVybi5leGVjU3RyaWN0KGZpbGVuYW1lKS5nZnYgPz8gcmVqZWN0KCk7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnXG4gICAgICAgICAgICAubWFwKGkgPT4gcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwic2NoZW1hc1wiLCBmaWxlbmFtZSkpXG4gICAgICAgICAgICAuZmxhdCgpO1xuICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZVBhdGgpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKGZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KGZpbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZFdlYkVycm9yKFwiRmlsZSBub3QgZm91bmRcIiwgZmFsc2UpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3ByZXNlbnRhdGlvbnNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbEZvcm1QcmVzZW50YXRpb25zKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBnbG9iQXN5bmMoXCJmb3Jtcy8qL3ByZXNlbnRhdGlvbnMuanNvblwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiB4LnJlcGxhY2UoXCJmb3Jtcy9cIiwgXCJcIikucmVwbGFjZShcIi9cIiwgXCIuXCIpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3ByZXNlbnRhdGlvbnMvOmdmdi5wcmVzZW50YXRpb25zLmpzb25cIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtUHJlc2VudGF0aW9ucyhnZnY6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBhbGxGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdiwgXCJwcmVzZW50YXRpb25zLmpzb25cIikpO1xuICAgICAgICBmb3IgKGNvbnN0IHBhdGhGaWxlIG9mIGFsbEZpbGVQYXRoKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwYXRoRmlsZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQocGF0aEZpbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IEVycm9yKGBub3QgZm91bmQgdW5tYXAgJHtnZnZ9LnhtbGApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL25vcm1hbGl6ZVwiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsTm9ybWFsaXplRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIGdsb2JBc3luYyhcImZvcm1zLyovbm9ybWFsaXplLyoueG1sXCIsIHsgY3dkOiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5KSB9KVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgY29uc3QgZmxhbmdGaWxlcyA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlci5nZXRBbGxOb3JtYWxpemF0aW9uRmlsZU5hbWVzKCk7XG4gICAgICAgIHJldHVybiBbLi4uZmlsZXMubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSksIC4uLmZsYW5nRmlsZXNdLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbm9ybWFsaXplLzpnZnYueG1sXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Tm9ybWFsaXplRmlsZShnZnY6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBhbGxGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwibm9ybWFsaXplXCIsIGAke2dmdn0ueG1sYClcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBwYXRoRmlsZSBvZiBhbGxGaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGF0aEZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KHBhdGhGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBFcnJvcihgbm90IGZvdW5kIHVubWFwICR7Z2Z2fS54bWxgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9ub3JtYWxpemUvOmdmdi5ub3JtYWxpemVcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGTGFuZ05vcm1hbGl6ZUZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gbmV3IFN0cmVhbVJlc3VsdChhd2FpdCB0aGlzLmdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIuZ2V0Tm9ybWFsaXphdGlvbkZpbGVDb250ZW50KGdmdikpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL2F0dGFjaG1lbnRwYXRoc1wiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsQXR0YWNobWVudFBhdGhzRmlsZU5hbWVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IGZsYW5nRmlsZXMgPSBhd2FpdCB0aGlzLmdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIuZ2V0QWxsQXR0YWNobWVudFBhdGhGaWxlTmFtZXMoKTtcbiAgICAgICAgcmV0dXJuIGZsYW5nRmlsZXMuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9hdHRhY2htZW50cGF0aHMvOmdmdi5qc29uXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QXR0YWNobWVudFBhdGhGaWxlKGdmdjogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW1SZXN1bHQoYXdhaXQgdGhpcy5nZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyLmdldEF0dGFjaG1lbnRQYXRoc0ZpbGVDb250ZW50KGdmdikpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3VubWFwXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxVbm1hcEZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBnbG9iQXN5bmMoXCJmb3Jtcy8qL3VubWFwLyoueG1sXCIsIHsgY3dkOiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5KSB9KVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgcmV0dXJuIGZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvdW5tYXAvOmdmdi54bWxcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRVbm1hcEZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYWxsRmlsZVBhdGggPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2LCBcInVubWFwXCIsIGAke2dmdn0ueG1sYClcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBwYXRoRmlsZSBvZiBhbGxGaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGF0aEZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KHBhdGhGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBFcnJvcihgbm90IGZvdW5kIHVubWFwICR7Z2Z2fS54bWxgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9tYXBcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbE1hcEZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBnbG9iQXN5bmMoXCJmb3Jtcy8qL21hcC8qLnhtbFwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL21hcC86Z2Z2LnhtbFwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldE1hcEZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYWxsRmlsZVBhdGggPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT4gcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwibWFwXCIsIGAke2dmdn0ueG1sYCkpO1xuICAgICAgICBmb3IgKGNvbnN0IHBhdGhGaWxlIG9mIGFsbEZpbGVQYXRoKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwYXRoRmlsZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQocGF0aEZpbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IEVycm9yKGBub3QgZm91bmQgdW5tYXAgJHtnZnZ9LnhtbGApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3BhdGNoXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxQYXRjaEZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBnbG9iQXN5bmMoXCJmb3Jtcy8qL3BhdGNoLyoueHNsdFwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3BhdGNoLzpnZnYueHNsdFwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldFBhdGNoRmlsZShnZnY6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBhbGxGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwicGF0Y2hcIiwgYCR7Z2Z2fS54c2x0YClcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBwYXRoRmlsZSBvZiBhbGxGaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGF0aEZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KHBhdGhGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBFcnJvcihgbm90IGZvdW5kIHVubWFwICR7Z2Z2fS54bWxgKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -35,7 +35,7 @@ let BuildServerBackendResourcesUpdatesController = (_dec = (0, _Methods.httpGet)
|
|
|
35
35
|
this.farmWatchers = void 0;
|
|
36
36
|
this.resourcesWatcher = void 0;
|
|
37
37
|
this.allFarmConfig = void 0;
|
|
38
|
-
this.farmWatchingRegexps = ["forms/*/schemas/*.rng.xml", "forms/*/converters/*", // NOTE Тут такое дело: почему-то иногда (иногда, то есть не всегда!), когда нам приходит запрос на
|
|
38
|
+
this.farmWatchingRegexps = ["forms/*/schemas/*.rng.xml", "forms/*/converters/*", "forms/*/mergers/*", // NOTE Тут такое дело: почему-то иногда (иногда, то есть не всегда!), когда нам приходит запрос на
|
|
39
39
|
// forms/*/presentations.json в этом классе возникает событие об измении этого файла и мы генерим очень много
|
|
40
40
|
// лишних событий об измении ресурсов и CandyApi зависает. Я пока не смог разобраться почему это так.
|
|
41
41
|
// "forms/*/presentations.json",
|
|
@@ -100,4 +100,4 @@ class Monitor {
|
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
103
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNVcGRhdGVzQ29udHJvbGxlci50cyJdLCJuYW1lcyI6WyJCdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNVcGRhdGVzQ29udHJvbGxlciIsImh0dHBSZXR1cm4iLCJQbGFpblRleHQiLCJodHRwVHlwZSIsIk51bWJlciIsIlNpbmdsZXRvbkNvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImFsbEZhcm1Db25maWciLCJsYXN0VXBkYXRlVGltZSIsInVwZGF0ZU1vbml0b3IiLCJNb25pdG9yIiwiZmFybVdhdGNoZXJzIiwicmVzb3VyY2VzV2F0Y2hlciIsImZhcm1XYXRjaGluZ1JlZ2V4cHMiLCJtYXAiLCJnbG9iVG9SZWdleHAiLCJoYW5kbGVGYXJtRlNVcGRhdGUiLCJldmVudFR5cGUiLCJmaWxlUGF0aCIsInNvbWUiLCJ4IiwidGVzdCIsIkRhdGUiLCJub3ciLCJwdWxzZUFsbCIsImJlZm9yZVN0YXJ0IiwiY29uZmlnIiwiZmFybURpcmVjdG9yeSIsInJlY3Vyc2l2ZSIsIl8iLCJkZWJvdW5jZSIsImdldExhc3RVcGRhdGVUaW1lIiwicHJldkxhc3RVcGRhdGVUaW1lIiwidW5kZWZpbmVkIiwidG9TdHJpbmciLCJQcm9taXNlIiwicmFjZSIsIndhaXQiLCJhZnRlclN0b3AiLCJpIiwiY2xvc2UiLCJhd2FpdGVycyIsIndhaXRQcm9taXNlSGFuZGxlciIsInJlc29sdmUiLCJwdXNoIiwiYXdhaXRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7OztJQUVhQSw0QyxXQW1DUixzQkFDRywrQ0FESCxFQUVHQyxvQkFBV0MsU0FGZCxFQUdHLDRCQUFlLGdCQUFmLEVBQWlDQyxpQkFBU0MsTUFBMUMsQ0FISCxD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RUFBZ0M7QUFDNUJJLE1BQUFBLE9BQU87QUFDVjtBQUNKOztBQWJTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRlNXYXRjaGVyLCB3YXRjaCB9IGZyb20gXCJmc1wiO1xuXG5pbXBvcnQgXyBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQgeyBGYXJtQ29uZmlnIH0gZnJvbSBcIlRvb2xzL3NyYy9DYW5keUNMSVwiO1xuXG5pbXBvcnQgeyBkZWxheSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vQXN5bmNVdGlsc1wiO1xuaW1wb3J0IHsgaHR0cEdldCB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9NZXRob2RzXCI7XG5pbXBvcnQgeyBodHRwUXVlcnlQYXJhbSwgaHR0cFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUGFyYW1zXCI7XG5pbXBvcnQgeyBodHRwUmV0dXJuIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1Jlc3VsdHNcIjtcbmltcG9ydCB7IFNpbmdsZXRvbkNvbnRyb2xsZXIgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0V4cHJlc3NXcmFwcGVyL1NpbmdsZXRvbkNvbnRyb2xsZXJcIjtcblxuaW1wb3J0IHsgZ2xvYlRvUmVnZXhwIH0gZnJvbSBcIi4vR2xvYlRvUmVnZXhwXCI7XG5cbmV4cG9ydCBjbGFzcyBCdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNVcGRhdGVzQ29udHJvbGxlciBleHRlbmRzIFNpbmdsZXRvbkNvbnRyb2xsZXIge1xuICAgIHByaXZhdGUgbGFzdFVwZGF0ZVRpbWUgPSAwO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXBkYXRlTW9uaXRvcjogTW9uaXRvciA9IG5ldyBNb25pdG9yKCk7XG4gICAgcHJpdmF0ZSBmYXJtV2F0Y2hlcnM/OiBGU1dhdGNoZXJbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlc1dhdGNoZXI/OiBGU1dhdGNoZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGxGYXJtQ29uZmlnOiBGYXJtQ29uZmlnW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYXJtV2F0Y2hpbmdSZWdleHBzID0gW1xuICAgICAgICBcImZvcm1zLyovc2NoZW1hcy8qLnJuZy54bWxcIixcbiAgICAgICAgXCJmb3Jtcy8qL2NvbnZlcnRlcnMvKlwiLFxuICAgICAgICBcImZvcm1zLyovbWVyZ2Vycy8qXCIsXG4gICAgICAgIC8vIE5PVEUg0KLRg9GCINGC0LDQutC+0LUg0LTQtdC70L46INC/0L7Rh9C10LzRgy3RgtC+INC40L3QvtCz0LTQsCAo0LjQvdC+0LPQtNCwLCDRgtC+INC10YHRgtGMINC90LUg0LLRgdC10LPQtNCwISksINC60L7Qs9C00LAg0L3QsNC8INC/0YDQuNGF0L7QtNC40YIg0LfQsNC/0YDQvtGBINC90LBcbiAgICAgICAgLy8gZm9ybXMvKi9wcmVzZW50YXRpb25zLmpzb24g0LIg0Y3RgtC+0Lwg0LrQu9Cw0YHRgdC1INCy0L7Qt9C90LjQutCw0LXRgiDRgdC+0LHRi9GC0LjQtSDQvtCxINC40LfQvNC10L3QuNC4INGN0YLQvtCz0L4g0YTQsNC50LvQsCDQuCDQvNGLINCz0LXQvdC10YDQuNC8INC+0YfQtdC90Ywg0LzQvdC+0LPQvlxuICAgICAgICAvLyDQu9C40YjQvdC40YUg0YHQvtCx0YvRgtC40Lkg0L7QsSDQuNC30LzQtdC90LjQuCDRgNC10YHRg9GA0YHQvtCyINC4IENhbmR5QXBpINC30LDQstC40YHQsNC10YIuINCvINC/0L7QutCwINC90LUg0YHQvNC+0LMg0YDQsNC30L7QsdGA0LDRgtGM0YHRjyDQv9C+0YfQtdC80YMg0Y3RgtC+INGC0LDQui5cbiAgICAgICAgLy8gXCJmb3Jtcy8qL3ByZXNlbnRhdGlvbnMuanNvblwiLFxuICAgICAgICBcImZvcm1zLyovZm9ybS5qc29uXCIsXG4gICAgICAgIFwiZm9ybXMvKi9zdWdhci8qLnhtbFwiLFxuICAgICAgICBcImZvcm1zLyovbm9ybWFsaXplLyoueG1sXCIsXG4gICAgICAgIFwiZm9ybXMvKi91bm1hcC8qLnhtbFwiLFxuICAgICAgICBcImZvcm1zLyovbWFwLyoueG1sXCIsXG4gICAgICAgIFwiZm9ybXMvKi9wYXRjaC8qLnhzbHRcIixcbiAgICAgICAgXCJwaWNrbGlzdHMvKlwiLFxuICAgIF0ubWFwKGdsb2JUb1JlZ2V4cCk7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoYWxsRmFybUNvbmZpZzogRmFybUNvbmZpZ1tdKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuYWxsRmFybUNvbmZpZyA9IGFsbEZhcm1Db25maWc7XG4gICAgICAgIHRoaXMubGFzdFVwZGF0ZVRpbWUgPSBEYXRlLm5vdygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBiZWZvcmVTdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5mYXJtV2F0Y2hlcnMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGNvbmZpZyA9PlxuICAgICAgICAgICAgd2F0Y2goY29uZmlnLmZhcm1EaXJlY3RvcnksIHsgcmVjdXJzaXZlOiB0cnVlIH0sIF8uZGVib3VuY2UodGhpcy5oYW5kbGVGYXJtRlNVcGRhdGUsIDIwMCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIFwiL3VwZGF0ZXMtb2JzZXJ2ZXIvY2hlY2stbGFzdC11cGRhdGUtbG9uZy1wb2xsXCIsXG4gICAgICAgIGh0dHBSZXR1cm4uUGxhaW5UZXh0LFxuICAgICAgICBodHRwUXVlcnlQYXJhbShcInByZXZMYXN0VXBkYXRlXCIsIGh0dHBUeXBlLk51bWJlcilcbiAgICApXG4gICAgcHVibGljIGFzeW5jIGdldExhc3RVcGRhdGVUaW1lKHByZXZMYXN0VXBkYXRlVGltZT86IG51bWJlcik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGlmIChwcmV2TGFzdFVwZGF0ZVRpbWUgPT0gdW5kZWZpbmVkIHx8IHByZXZMYXN0VXBkYXRlVGltZSA8IHRoaXMubGFzdFVwZGF0ZVRpbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxhc3RVcGRhdGVUaW1lLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgUHJvbWlzZS5yYWNlKFt0aGlzLnVwZGF0ZU1vbml0b3Iud2FpdCgpLCBkZWxheSg2MDAwMCldKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFzdFVwZGF0ZVRpbWUudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYWZ0ZXJTdG9wKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLmZhcm1XYXRjaGVycz8ubWFwKGkgPT4gaS5jbG9zZSgpKTtcbiAgICAgICAgdGhpcy5yZXNvdXJjZXNXYXRjaGVyPy5jbG9zZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlRmFybUZTVXBkYXRlID0gKGV2ZW50VHlwZTogc3RyaW5nLCBmaWxlUGF0aDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmZhcm1XYXRjaGluZ1JlZ2V4cHMuc29tZSh4ID0+IHgudGVzdChmaWxlUGF0aCkpKSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RVcGRhdGVUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTW9uaXRvci5wdWxzZUFsbCgpO1xuICAgICAgICB9XG4gICAgfTtcbn1cblxuY2xhc3MgTW9uaXRvciB7XG4gICAgcHJpdmF0ZSBhd2FpdGVyczogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXTtcblxuICAgIHB1YmxpYyB3YWl0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UodGhpcy53YWl0UHJvbWlzZUhhbmRsZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwdWxzZUFsbCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYXdhaXRlcnMgPSBbLi4udGhpcy5hd2FpdGVyc107XG4gICAgICAgIHRoaXMuYXdhaXRlcnMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBhd2FpdGVyIG9mIGF3YWl0ZXJzKSB7XG4gICAgICAgICAgICBhd2FpdGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHdhaXRQcm9taXNlSGFuZGxlciA9IChyZXNvbHZlOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgICAgIHRoaXMuYXdhaXRlcnMucHVzaChyZXNvbHZlKTtcbiAgICB9O1xufVxuIl19
|
|
@@ -154,9 +154,15 @@ class BuildFormDevServer {
|
|
|
154
154
|
const allPossibleFilePath = this.allFarmConfig.map(i => _path.default.join(i, "forms", this.gfv, "form", filename));
|
|
155
155
|
|
|
156
156
|
for (const pth of allPossibleFilePath) {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
157
|
+
try {
|
|
158
|
+
var _this$webpackHybridFi2;
|
|
159
|
+
|
|
160
|
+
if ((_this$webpackHybridFi2 = this.webpackHybridFileSystem) !== null && _this$webpackHybridFi2 !== void 0 && _this$webpackHybridFi2.statSync(pth)) {
|
|
161
|
+
fileName = pth;
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
} catch (e) {
|
|
165
|
+
continue;
|
|
160
166
|
}
|
|
161
167
|
}
|
|
162
168
|
|
|
@@ -165,9 +171,9 @@ class BuildFormDevServer {
|
|
|
165
171
|
}
|
|
166
172
|
|
|
167
173
|
return new Promise((resolve, reject) => {
|
|
168
|
-
var _this$
|
|
174
|
+
var _this$webpackHybridFi3;
|
|
169
175
|
|
|
170
|
-
(_this$
|
|
176
|
+
(_this$webpackHybridFi3 = this.webpackHybridFileSystem) === null || _this$webpackHybridFi3 === void 0 ? void 0 : _this$webpackHybridFi3.readFile(fileName, "utf-8", (error, data) => {
|
|
171
177
|
if (error) {
|
|
172
178
|
reject(error);
|
|
173
179
|
} else {
|
|
@@ -208,4 +214,4 @@ class BuildFormDevServer {
|
|
|
208
214
|
}
|
|
209
215
|
|
|
210
216
|
exports.BuildFormDevServer = BuildFormDevServer;
|
|
211
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9EZXZTZXJ2ZXJzL0J1aWxkRm9ybURldlNlcnZlci50cyJdLCJuYW1lcyI6WyJCdWlsZEZvcm1EZXZTZXJ2ZXIiLCJjb25zdHJ1Y3RvciIsInBvcnQiLCJhbGxGYXJtQ29uZmlnIiwiZ2Z2IiwiY2FuZHlNb2R1bGVzRGlyZWN0b3J5IiwiZmFybUNvbmZpZ0FycmF5IiwidXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcyIsImVuZ2luZURpcmVjdG9yeSIsImJ1aWxkRGVidWdPbmx5Iiwic2tpcENvZGVSZWZvcm1hdHRpbmciLCJuaWdodGx5IiwiZmFybURpcmVjdG9yeSIsInN0YXJ0UGFyYWxsZWxMaW1pdCIsImdlbmVyYXRlQ2hhaW4iLCJ3ZWJwYWNrRGV2U2VydmVyU3RhcnRlZCIsIndlYnBhY2tIeWJyaWRGaWxlU3lzdGVtIiwic3RhcnQiLCJ1bmRlZmluZWQiLCJhbGxQb3NzaWJsZUZpbGVQYXRoIiwibWFwIiwiaSIsInBhdGgiLCJqb2luIiwiZm9ybURpclBhdGgiLCJwdGgiLCJFcnJvciIsIldlYnBhY2tIeWJyaWRGaWxlU3lzdGVtIiwiT2JzZXJ2ZSIsImZpbGUiLCJ0cmFuc2Zvcm0iLCJmb3JtSnNvbkZpbGUiLCJ4IiwiZ2VuZXJhdG9yU291cmNlIiwiZW5naW5lU291cmNlIiwiZ2VuZXJhdG9yVmVyc2lvbiIsImVuZ2luZVZlcnNpb24iLCJhdHRhY2giLCJmaSIsInkiLCJnZW5lcmF0b3IiLCJmaWxlcyIsImZvcm1Tb3VyY2VzUGF0aCIsImRvIiwiRm9ybXNEaXJXaXRoSGxQYXRoIiwiZmluZCIsInN0YXJ0c1dpdGgiLCJobEZhcm1EaXJlY3RvcnlQYXRoIiwicmVzb3VyY2VzSGFzaCIsImUiLCJmb3JtRW50cnlQb2ludFBhdGgiLCJ3cml0ZUJhdGNoIiwiZm9ybWF0RXJyb3IiLCJvYnNlcnZlIiwiZ2V0R2VuZXJhdGVkRmlsZUFzU3RyZWFtIiwiZmlsZW5hbWUiLCJmaWxlTmFtZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicmVhZEZpbGUiLCJlcnJvciIsImRhdGEiLCJSZWFkYWJsZSIsImZyb20iLCJnZXRGaWxlQXNTdHJlYW0iLCJyZXNwb25zZSIsIm1ldGhvZCIsImFnZW50IiwiQWdlbnQiLCJyZWplY3RVbmF1dGhvcml6ZWQiLCJzdGF0dXMiLCJ0ZXh0UmVzcG9uc2UiLCJ0ZXh0IiwiYm9keSIsInN0YWNrIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFFQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFNQTs7QUFDQTs7QUFHQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFFTyxNQUFNQSxrQkFBTixDQUF5QjtBQVE1QjtBQVVPQyxFQUFBQSxXQUFXLENBQ2RDLElBRGMsRUFFZEMsYUFGYyxFQUdkQyxHQUhjLEVBSWRDLHFCQUpjLEVBS2RDLGVBTGMsRUFNZEMsNEJBTmMsRUFPZEMsZUFQYyxFQVFkQyxjQVJjLEVBU2RDLG9CQVRjLEVBVWRDLE9BVmMsRUFXaEI7QUFBQSxTQTVCZVQsSUE0QmY7QUFBQSxTQTNCZUMsYUEyQmY7QUFBQSxTQTFCZUMsR0EwQmY7QUFBQSxTQXpCZUMscUJBeUJmO0FBQUEsU0F4Qk1PLGFBd0JOO0FBQUEsU0F2QmVOLGVBdUJmO0FBQUEsU0F0QmVPLGtCQXNCZjtBQUFBLFNBcEJNQyxhQW9CTjtBQUFBLFNBbkJNQyx1QkFtQk4sR0FuQmdDLEtBbUJoQztBQUFBLFNBbEJlUiw0QkFrQmY7QUFBQSxTQWpCZUMsZUFpQmY7QUFBQSxTQWhCZUcsT0FnQmY7QUFBQSxTQWZlRixjQWVmO0FBQUEsU0FkZUMsb0JBY2Y7QUFBQSxTQWJNTSx1QkFhTjtBQUNFLFNBQUtkLElBQUwsR0FBWUEsSUFBWjtBQUNBLFNBQUtDLGFBQUwsR0FBcUJBLGFBQXJCO0FBQ0EsU0FBS0MsR0FBTCxHQUFXQSxHQUFYO0FBQ0EsU0FBS0MscUJBQUwsR0FBNkJBLHFC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LEVBQUFBLFdBQVcsQ0FBQ0gsQ0FBRCxFQUEyQjtBQUMxQyxRQUFJQSxDQUFDLFlBQVl2QixLQUFqQixFQUF3QjtBQUNwQixhQUFRLEdBQUV1QixDQUFFLEtBQUlBLENBQUMsQ0FBQzBCLEtBQU0sRUFBeEI7QUFDSDs7QUFDRCxXQUFRLEdBQUUxQixDQUFFLEVBQVo7QUFDSDs7QUFqTjJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IFJlYWRhYmxlIH0gZnJvbSBcInN0cmVhbVwiO1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tIFwiaHR0cHNcIjtcblxuaW1wb3J0IGZldGNoIGZyb20gXCJub2RlLWZldGNoXCI7XG5pbXBvcnQgcExpbWl0LCB7IExpbWl0IH0gZnJvbSBcInAtbGltaXRcIjtcbmltcG9ydCB7IEZhcm1Db25maWcgfSBmcm9tIFwiVG9vbHMvc3JjL0NhbmR5Q0xJXCI7XG5pbXBvcnQgeyBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5cbmltcG9ydCB7IGdlbmVyYXRlRm9ybSB9IGZyb20gXCIuLi8uLi8uLi8uLi9CdWlsZFRhc2tzL0Zvcm0vR2VuZXJhdGVGb3JtXCI7XG5pbXBvcnQgeyBnZW5lcmF0b3JGYWN0b3J5LCBnZXRHZW5lcmF0b3JTb3VyY2VLZXkgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQnVpbGRUYXNrcy9HZW5lcmF0b3IvQWNxdWlyZUZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7XG4gICAgcmVzb2x2ZUVuZ2luZVZlcnNpb24sXG4gICAgcmVzb2x2ZUdlbmVyYXRvclZlcnNpb24sXG4gICAgcmVzb2x2ZUxvY2FsRW5naW5lU291cmNlLFxuICAgIHJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZSxcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL0J1aWxkVGFza3MvUHVibGlzaGVkVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyByZXNvbHZlRm9ybUluZm8gfSBmcm9tIFwiLi4vLi4vLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL0NvbW1vbi9Bc3luY1V0aWxzXCI7XG5pbXBvcnQgeyBSZWFzb25PckVycm9yIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbnMvRXJyb3JVbnR5cGVkXCI7XG5pbXBvcnQgeyBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL0NoYWluYWJsZVZhbHVlUHJvZHVjZXJcIjtcbmltcG9ydCB7IE9ic2VydmUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvT2JzZXJ2ZVwiO1xuXG5pbXBvcnQgeyBnZXRSZXBvcnRHZW5lcmF0b3JFcnJvclRvUGFnZUJvZHlTY3JpcHQgfSBmcm9tIFwiLi9SZXBvcnRHZW5lcmF0b3JFcnJvclRvUGFnZUJvZHlcIjtcbmltcG9ydCB7IHJ1bkZvcm1Db21waWxhdGlvblZpYVdlYnBhY2tEZXZTZXJ2ZXIgfSBmcm9tIFwiLi9SdW5Gb3JtQ29tcGlsYXRpb25WaWFXZWJwYWNrRGV2U2VydmVyXCI7XG5pbXBvcnQgeyBXZWJwYWNrSHlicmlkRmlsZVN5c3RlbSB9IGZyb20gXCIuL1dlYnBhY2tJbk1lbW9yeVV0aWxzL1dlYnBhY2tIeWJyaWRGaWxlU3lzdGVtXCI7XG5cbmV4cG9ydCBjbGFzcyBCdWlsZEZvcm1EZXZTZXJ2ZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsRmFybUNvbmZpZzogc3RyaW5nW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBnZnY6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgZmFybURpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmFybUNvbmZpZ0FycmF5OiBGYXJtQ29uZmlnW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGFydFBhcmFsbGVsTGltaXQ6IExpbWl0O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUNoYWluPzogQ2hhaW5hYmxlVmFsdWVQcm9kdWNlcjxhbnk+O1xuICAgIHByaXZhdGUgd2VicGFja0RldlNlcnZlclN0YXJ0ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXM6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5pZ2h0bHk6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBidWlsZERlYnVnT25seTogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNraXBDb2RlUmVmb3JtYXR0aW5nOiBib29sZWFuO1xuICAgIHByaXZhdGUgd2VicGFja0h5YnJpZEZpbGVTeXN0ZW0/OiBXZWJwYWNrSHlicmlkRmlsZVN5c3RlbTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcG9ydDogbnVtYmVyLFxuICAgICAgICBhbGxGYXJtQ29uZmlnOiBzdHJpbmdbXSxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgICAgICBmYXJtQ29uZmlnQXJyYXk6IEZhcm1Db25maWdbXSxcbiAgICAgICAgdXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlczogYm9vbGVhbixcbiAgICAgICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIGJ1aWxkRGVidWdPbmx5OiBib29sZWFuLFxuICAgICAgICBza2lwQ29kZVJlZm9ybWF0dGluZzogYm9vbGVhbixcbiAgICAgICAgbmlnaHRseTogYm9vbGVhblxuICAgICkge1xuICAgICAgICB0aGlzLnBvcnQgPSBwb3J0O1xuICAgICAgICB0aGlzLmFsbEZhcm1Db25maWcgPSBhbGxGYXJtQ29uZmlnO1xuICAgICAgICB0aGlzLmdmdiA9IGdmdjtcbiAgICAgICAgdGhpcy5jYW5keU1vZHVsZXNEaXJlY3RvcnkgPSBjYW5keU1vZHVsZXNEaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMuZmFybUNvbmZpZ0FycmF5ID0gZmFybUNvbmZpZ0FycmF5O1xuICAgICAgICB0aGlzLnN0YXJ0UGFyYWxsZWxMaW1pdCA9IHBMaW1pdCgxKTtcbiAgICAgICAgdGhpcy51c2VHZW5lcmF0b3JGcm9tTG9jYWxTb3VyY2VzID0gdXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcztcbiAgICAgICAgdGhpcy5lbmdpbmVEaXJlY3RvcnkgPSBlbmdpbmVEaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMuYnVpbGREZWJ1Z09ubHkgPSBidWlsZERlYnVnT25seTtcbiAgICAgICAgdGhpcy5za2lwQ29kZVJlZm9ybWF0dGluZyA9IHNraXBDb2RlUmVmb3JtYXR0aW5nO1xuICAgICAgICB0aGlzLm5pZ2h0bHkgPSBuaWdodGx5O1xuICAgICAgICB0aGlzLmZhcm1EaXJlY3RvcnkgPSBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRQYXJhbGxlbExpbWl0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdlbmVyYXRlQ2hhaW4gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYWxsUG9zc2libGVGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBwYXRoLmpvaW4oaSwgXCJmb3Jtc1wiLCB0aGlzLmdmdikpO1xuICAgICAgICAgICAgbGV0IGZvcm1EaXJQYXRoID0gXCJcIjtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHRoIG9mIGFsbFBvc3NpYmxlRmlsZVBhdGgpIHtcbiAgICAgICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwdGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoID0gcHRoO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZhcm1EaXJlY3RvcnkgPSBwYXRoLmpvaW4ocHRoLCBcIi4uXCIsIFwiLi5cIik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZvcm1EaXJQYXRoID09PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJmb3JtRGlyUGF0aCBub3QgZm91bmRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKHRoaXMuZmFybURpcmVjdG9yeSkpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYEZhcm1EaXJlY3RvcnkgPSAke3RoaXMuZmFybURpcmVjdG9yeX0gbm90IGV4aXN0YCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMud2VicGFja0h5YnJpZEZpbGVTeXN0ZW0gPSBuZXcgV2VicGFja0h5YnJpZEZpbGVTeXN0ZW0ocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm1cIikpO1xuXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlQ2hhaW4gPSBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm0uanNvblwiKSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGZvcm1Kc29uRmlsZSA9PlxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlRm9ybUluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtSnNvbkZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmlnaHRseVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgeCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ueCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IHJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZSh0aGlzLmVuZ2luZURpcmVjdG9yeSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiByZXNvbHZlTG9jYWxFbmdpbmVTb3VyY2UodGhpcy5lbmdpbmVEaXJlY3RvcnkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4LmdlbmVyYXRvclZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZ2VuZXJhdG9yVmVyc2lvbiBpcyBubyBkZWZpbmVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHguZW5naW5lVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJlbmdpbmVWZXJzaW9uIGlzIG5vIGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLngsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiBhd2FpdCByZXNvbHZlR2VuZXJhdG9yVmVyc2lvbih4LmdlbmVyYXRvclZlcnNpb24pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZVNvdXJjZTogYXdhaXQgcmVzb2x2ZUVuZ2luZVZlcnNpb24oeC5lbmdpbmVWZXJzaW9uKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGdlbmVyYXRvckZhY3RvcnkoZmkuZ2VuZXJhdG9yU291cmNlLCB0aGlzLmNhbmR5TW9kdWxlc0RpcmVjdG9yeSwgZmFsc2UsIHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIChmaSwgeSkgPT4gKHsgLi4uZmksIGdlbmVyYXRvcjogeSB9KSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4gZ2V0R2VuZXJhdG9yU291cmNlS2V5KGZpLmdlbmVyYXRvclNvdXJjZSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIuLi8uLi9jb250cm9scy8qKi9nZW5lcmF0b3IvKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzY2hlbWFzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3VnYXIvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb250cm9scy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImF1dG9jYWxjLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaGVscGVycy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZhbGlkYXRpb25zLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibG9jYWxpemF0aW9uLyoqLypcIlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGb3Jtc0RpcldpdGhIbFBhdGggPSB0aGlzLmZhcm1Db25maWdBcnJheS5maW5kKGkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aC5zdGFydHNXaXRoKGkuZmFybURpcmVjdG9yeSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoRm9ybXNEaXJXaXRoSGxQYXRoID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiRm9ybXNEaXJXaXRoSGxQYXRoID09PSB1bmRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBnZW5lcmF0ZUZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3Jtc0RpcldpdGhIbFBhdGguaGxGYXJtRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcENvZGVSZWZvcm1hdHRpbmc6IHRoaXMuc2tpcENvZGVSZWZvcm1hdHRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0hhc2g6IFwibG9jYWwtaGFzaFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53ZWJwYWNrSHlicmlkRmlsZVN5c3RlbVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybUVudHJ5UG9pbnRQYXRoID0gcGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCB0aGlzLmdmdiwgXCJmb3JtXCIsIFwid2ViLmpzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy53ZWJwYWNrSHlicmlkRmlsZVN5c3RlbT8ud3JpdGVCYXRjaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1FbnRyeVBvaW50UGF0aF06IGdldFJlcG9ydEdlbmVyYXRvckVycm9yVG9QYWdlQm9keVNjcmlwdCh0aGlzLmZvcm1hdEVycm9yKGUpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2VuZXJhdGVDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgICAgICBhd2FpdCBydW5Gb3JtQ29tcGlsYXRpb25WaWFXZWJwYWNrRGV2U2VydmVyKFxuICAgICAgICAgICAgICAgIHRoaXMuZ2Z2LFxuICAgICAgICAgICAgICAgIHRoaXMuZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5LCBcInJlc1wiKSxcbiAgICAgICAgICAgICAgICBcImxvY2FsLWhhc2hcIixcbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkRGVidWdPbmx5LFxuICAgICAgICAgICAgICAgIHRoaXMud2VicGFja0h5YnJpZEZpbGVTeXN0ZW0sXG4gICAgICAgICAgICAgICAgdGhpcy5wb3J0XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy53ZWJwYWNrRGV2U2VydmVyU3RhcnRlZCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRHZW5lcmF0ZWRGaWxlQXNTdHJlYW0oZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8Tm9kZUpTLlJlYWRhYmxlU3RyZWFtPiB7XG4gICAgICAgIHdoaWxlICghdGhpcy53ZWJwYWNrRGV2U2VydmVyU3RhcnRlZCkge1xuICAgICAgICAgICAgYXdhaXQgZGVsYXkoNTAwKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZmlsZU5hbWUgPSBcIlwiO1xuICAgICAgICBjb25zdCBhbGxQb3NzaWJsZUZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+IHBhdGguam9pbihpLCBcImZvcm1zXCIsIHRoaXMuZ2Z2LCBcImZvcm1cIiwgZmlsZW5hbWUpKTtcbiAgICAgICAgZm9yIChjb25zdCBwdGggb2YgYWxsUG9zc2libGVGaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocHRoKSkge1xuICAgICAgICAgICAgICAgIGZpbGVOYW1lID0gcHRoO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChmaWxlTmFtZSA9PT0gXCJcIikge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJnZXRHZW5lcmF0ZWRGaWxlQXNTdHJlYW0gZmlsZW5hbWUgbm90IGZvdW5kXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMud2VicGFja0h5YnJpZEZpbGVTeXN0ZW0/LnJlYWRGaWxlKGZpbGVOYW1lLCBcInV0Zi04XCIsIChlcnJvciwgZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoUmVhZGFibGUuZnJvbShbZGF0YV0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEZpbGVBc1N0cmVhbShmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxOb2RlSlMuUmVhZGFibGVTdHJlYW0+IHtcbiAgICAgICAgd2hpbGUgKCF0aGlzLndlYnBhY2tEZXZTZXJ2ZXJTdGFydGVkKSB7XG4gICAgICAgICAgICBhd2FpdCBkZWxheSg1MDApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYGh0dHBzOi8vbG9jYWxob3N0OiR7dGhpcy5wb3J0fS8ke2ZpbGVuYW1lfWAsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgICAgIGFnZW50OiBuZXcgQWdlbnQoeyByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlIH0pLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPSAyMDApIHtcbiAgICAgICAgICAgIGNvbnN0IHRleHRSZXNwb25zZSA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0ZXh0UmVzcG9uc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNwb25zZS5ib2R5O1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0RXJyb3IoZTogUmVhc29uT3JFcnJvcik6IHN0cmluZyB7XG4gICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtlfVxcbiR7ZS5zdGFja31gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHtlfWA7XG4gICAgfVxufVxuIl19
|
|
217
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9EZXZTZXJ2ZXJzL0J1aWxkRm9ybURldlNlcnZlci50cyJdLCJuYW1lcyI6WyJCdWlsZEZvcm1EZXZTZXJ2ZXIiLCJjb25zdHJ1Y3RvciIsInBvcnQiLCJhbGxGYXJtQ29uZmlnIiwiZ2Z2IiwiY2FuZHlNb2R1bGVzRGlyZWN0b3J5IiwiZmFybUNvbmZpZ0FycmF5IiwidXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcyIsImVuZ2luZURpcmVjdG9yeSIsImJ1aWxkRGVidWdPbmx5Iiwic2tpcENvZGVSZWZvcm1hdHRpbmciLCJuaWdodGx5IiwiZmFybURpcmVjdG9yeSIsInN0YXJ0UGFyYWxsZWxMaW1pdCIsImdlbmVyYXRlQ2hhaW4iLCJ3ZWJwYWNrRGV2U2VydmVyU3RhcnRlZCIsIndlYnBhY2tIeWJyaWRGaWxlU3lzdGVtIiwic3RhcnQiLCJ1bmRlZmluZWQiLCJhbGxQb3NzaWJsZUZpbGVQYXRoIiwibWFwIiwiaSIsInBhdGgiLCJqb2luIiwiZm9ybURpclBhdGgiLCJwdGgiLCJFcnJvciIsIldlYnBhY2tIeWJyaWRGaWxlU3lzdGVtIiwiT2JzZXJ2ZSIsImZpbGUiLCJ0cmFuc2Zvcm0iLCJmb3JtSnNvbkZpbGUiLCJ4IiwiZ2VuZXJhdG9yU291cmNlIiwiZW5naW5lU291cmNlIiwiZ2VuZXJhdG9yVmVyc2lvbiIsImVuZ2luZVZlcnNpb24iLCJhdHRhY2giLCJmaSIsInkiLCJnZW5lcmF0b3IiLCJmaWxlcyIsImZvcm1Tb3VyY2VzUGF0aCIsImRvIiwiRm9ybXNEaXJXaXRoSGxQYXRoIiwiZmluZCIsInN0YXJ0c1dpdGgiLCJobEZhcm1EaXJlY3RvcnlQYXRoIiwicmVzb3VyY2VzSGFzaCIsImUiLCJmb3JtRW50cnlQb2ludFBhdGgiLCJ3cml0ZUJhdGNoIiwiZm9ybWF0RXJyb3IiLCJvYnNlcnZlIiwiZ2V0R2VuZXJhdGVkRmlsZUFzU3RyZWFtIiwiZmlsZW5hbWUiLCJmaWxlTmFtZSIsInN0YXRTeW5jIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZWFkRmlsZSIsImVycm9yIiwiZGF0YSIsIlJlYWRhYmxlIiwiZnJvbSIsImdldEZpbGVBc1N0cmVhbSIsInJlc3BvbnNlIiwibWV0aG9kIiwiYWdlbnQiLCJBZ2VudCIsInJlamVjdFVuYXV0aG9yaXplZCIsInN0YXR1cyIsInRleHRSZXNwb25zZSIsInRleHQiLCJib2R5Iiwic3RhY2siXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUVBOztBQUVBOztBQUNBOztBQUNBOztBQU1BOztBQUNBOztBQUdBOztBQUVBOztBQUNBOztBQUNBOztBQUVPLE1BQU1BLGtCQUFOLENBQXlCO0FBUTVCO0FBVU9DLEVBQUFBLFdBQVcsQ0FDZEMsSUFEYyxFQUVkQyxhQUZjLEVBR2RDLEdBSGMsRUFJZEMscUJBSmMsRUFLZEMsZUFMYyxFQU1kQyw0QkFOYyxFQU9kQyxlQVBjLEVBUWRDLGNBUmMsRUFTZEMsb0JBVGMsRUFVZEMsT0FWYyxFQVdoQjtBQUFBLFNBNUJlVCxJQTRCZjtBQUFBLFNBM0JlQyxhQTJCZjtBQUFBLFNBMUJlQyxHQTBCZjtBQUFBLFNBekJlQyxxQkF5QmY7QUFBQSxTQXhCTU8sYUF3Qk47QUFBQSxTQXZCZU4sZUF1QmY7QUFBQSxTQXRCZU8sa0JBc0JmO0FBQUEsU0FwQk1DLGFBb0JOO0FBQUEsU0FuQk1DLHVCQW1CTixHQW5CZ0MsS0FtQmhDO0FBQUEsU0FsQmVSLDRCQWtCZjtBQUFBLFNBakJlQyxlQWlCZjtBQUFBLFNBaEJlRyxPQWdCZjtBQUFBLFNBZmVGLGNBZWY7QUFBQSxTQWRlQyxvQkFjZjtBQUFBLFNBYk1NLHVCQWFOO0FBQ0UsU0FBS2QsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsU0FBS0MsYUFBTCxHQUFxQkEsYUFBckI7QUFDQSxTQUFLQyxHQUFMLEdBQVdBLEdBQVg7QUFDQSxTQUFLQyxxQkFB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Q08sSUFBVCxFQUEzQjtBQUNBLFlBQU0sSUFBSWhELEtBQUosQ0FBVStDLFlBQVYsQ0FBTjtBQUNIOztBQUNELFdBQU9OLFFBQVEsQ0FBQ1EsSUFBaEI7QUFDSDs7QUFFT3ZCLEVBQUFBLFdBQVcsQ0FBQ0gsQ0FBRCxFQUEyQjtBQUMxQyxRQUFJQSxDQUFDLFlBQVl2QixLQUFqQixFQUF3QjtBQUNwQixhQUFRLEdBQUV1QixDQUFFLEtBQUlBLENBQUMsQ0FBQzJCLEtBQU0sRUFBeEI7QUFDSDs7QUFDRCxXQUFRLEdBQUUzQixDQUFFLEVBQVo7QUFDSDs7QUFyTjJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IFJlYWRhYmxlIH0gZnJvbSBcInN0cmVhbVwiO1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tIFwiaHR0cHNcIjtcblxuaW1wb3J0IGZldGNoIGZyb20gXCJub2RlLWZldGNoXCI7XG5pbXBvcnQgcExpbWl0LCB7IExpbWl0IH0gZnJvbSBcInAtbGltaXRcIjtcbmltcG9ydCB7IEZhcm1Db25maWcgfSBmcm9tIFwiVG9vbHMvc3JjL0NhbmR5Q0xJXCI7XG5pbXBvcnQgeyBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5cbmltcG9ydCB7IGdlbmVyYXRlRm9ybSB9IGZyb20gXCIuLi8uLi8uLi8uLi9CdWlsZFRhc2tzL0Zvcm0vR2VuZXJhdGVGb3JtXCI7XG5pbXBvcnQgeyBnZW5lcmF0b3JGYWN0b3J5LCBnZXRHZW5lcmF0b3JTb3VyY2VLZXkgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQnVpbGRUYXNrcy9HZW5lcmF0b3IvQWNxdWlyZUZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7XG4gICAgcmVzb2x2ZUVuZ2luZVZlcnNpb24sXG4gICAgcmVzb2x2ZUdlbmVyYXRvclZlcnNpb24sXG4gICAgcmVzb2x2ZUxvY2FsRW5naW5lU291cmNlLFxuICAgIHJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZSxcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL0J1aWxkVGFza3MvUHVibGlzaGVkVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyByZXNvbHZlRm9ybUluZm8gfSBmcm9tIFwiLi4vLi4vLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL0NvbW1vbi9Bc3luY1V0aWxzXCI7XG5pbXBvcnQgeyBSZWFzb25PckVycm9yIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbnMvRXJyb3JVbnR5cGVkXCI7XG5pbXBvcnQgeyBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL0NoYWluYWJsZVZhbHVlUHJvZHVjZXJcIjtcbmltcG9ydCB7IE9ic2VydmUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvT2JzZXJ2ZVwiO1xuXG5pbXBvcnQgeyBnZXRSZXBvcnRHZW5lcmF0b3JFcnJvclRvUGFnZUJvZHlTY3JpcHQgfSBmcm9tIFwiLi9SZXBvcnRHZW5lcmF0b3JFcnJvclRvUGFnZUJvZHlcIjtcbmltcG9ydCB7IHJ1bkZvcm1Db21waWxhdGlvblZpYVdlYnBhY2tEZXZTZXJ2ZXIgfSBmcm9tIFwiLi9SdW5Gb3JtQ29tcGlsYXRpb25WaWFXZWJwYWNrRGV2U2VydmVyXCI7XG5pbXBvcnQgeyBXZWJwYWNrSHlicmlkRmlsZVN5c3RlbSB9IGZyb20gXCIuL1dlYnBhY2tJbk1lbW9yeVV0aWxzL1dlYnBhY2tIeWJyaWRGaWxlU3lzdGVtXCI7XG5cbmV4cG9ydCBjbGFzcyBCdWlsZEZvcm1EZXZTZXJ2ZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsRmFybUNvbmZpZzogc3RyaW5nW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBnZnY6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgZmFybURpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmFybUNvbmZpZ0FycmF5OiBGYXJtQ29uZmlnW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGFydFBhcmFsbGVsTGltaXQ6IExpbWl0O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUNoYWluPzogQ2hhaW5hYmxlVmFsdWVQcm9kdWNlcjxhbnk+O1xuICAgIHByaXZhdGUgd2VicGFja0RldlNlcnZlclN0YXJ0ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXM6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5pZ2h0bHk6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBidWlsZERlYnVnT25seTogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNraXBDb2RlUmVmb3JtYXR0aW5nOiBib29sZWFuO1xuICAgIHByaXZhdGUgd2VicGFja0h5YnJpZEZpbGVTeXN0ZW0/OiBXZWJwYWNrSHlicmlkRmlsZVN5c3RlbTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcG9ydDogbnVtYmVyLFxuICAgICAgICBhbGxGYXJtQ29uZmlnOiBzdHJpbmdbXSxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgICAgICBmYXJtQ29uZmlnQXJyYXk6IEZhcm1Db25maWdbXSxcbiAgICAgICAgdXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlczogYm9vbGVhbixcbiAgICAgICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIGJ1aWxkRGVidWdPbmx5OiBib29sZWFuLFxuICAgICAgICBza2lwQ29kZVJlZm9ybWF0dGluZzogYm9vbGVhbixcbiAgICAgICAgbmlnaHRseTogYm9vbGVhblxuICAgICkge1xuICAgICAgICB0aGlzLnBvcnQgPSBwb3J0O1xuICAgICAgICB0aGlzLmFsbEZhcm1Db25maWcgPSBhbGxGYXJtQ29uZmlnO1xuICAgICAgICB0aGlzLmdmdiA9IGdmdjtcbiAgICAgICAgdGhpcy5jYW5keU1vZHVsZXNEaXJlY3RvcnkgPSBjYW5keU1vZHVsZXNEaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMuZmFybUNvbmZpZ0FycmF5ID0gZmFybUNvbmZpZ0FycmF5O1xuICAgICAgICB0aGlzLnN0YXJ0UGFyYWxsZWxMaW1pdCA9IHBMaW1pdCgxKTtcbiAgICAgICAgdGhpcy51c2VHZW5lcmF0b3JGcm9tTG9jYWxTb3VyY2VzID0gdXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcztcbiAgICAgICAgdGhpcy5lbmdpbmVEaXJlY3RvcnkgPSBlbmdpbmVEaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMuYnVpbGREZWJ1Z09ubHkgPSBidWlsZERlYnVnT25seTtcbiAgICAgICAgdGhpcy5za2lwQ29kZVJlZm9ybWF0dGluZyA9IHNraXBDb2RlUmVmb3JtYXR0aW5nO1xuICAgICAgICB0aGlzLm5pZ2h0bHkgPSBuaWdodGx5O1xuICAgICAgICB0aGlzLmZhcm1EaXJlY3RvcnkgPSBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRQYXJhbGxlbExpbWl0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdlbmVyYXRlQ2hhaW4gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYWxsUG9zc2libGVGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBwYXRoLmpvaW4oaSwgXCJmb3Jtc1wiLCB0aGlzLmdmdikpO1xuICAgICAgICAgICAgbGV0IGZvcm1EaXJQYXRoID0gXCJcIjtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHRoIG9mIGFsbFBvc3NpYmxlRmlsZVBhdGgpIHtcbiAgICAgICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwdGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoID0gcHRoO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZhcm1EaXJlY3RvcnkgPSBwYXRoLmpvaW4ocHRoLCBcIi4uXCIsIFwiLi5cIik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZvcm1EaXJQYXRoID09PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJmb3JtRGlyUGF0aCBub3QgZm91bmRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKHRoaXMuZmFybURpcmVjdG9yeSkpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYEZhcm1EaXJlY3RvcnkgPSAke3RoaXMuZmFybURpcmVjdG9yeX0gbm90IGV4aXN0YCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMud2VicGFja0h5YnJpZEZpbGVTeXN0ZW0gPSBuZXcgV2VicGFja0h5YnJpZEZpbGVTeXN0ZW0ocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm1cIikpO1xuXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlQ2hhaW4gPSBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm0uanNvblwiKSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGZvcm1Kc29uRmlsZSA9PlxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlRm9ybUluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtSnNvbkZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmlnaHRseVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgeCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ueCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IHJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZSh0aGlzLmVuZ2luZURpcmVjdG9yeSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiByZXNvbHZlTG9jYWxFbmdpbmVTb3VyY2UodGhpcy5lbmdpbmVEaXJlY3RvcnkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4LmdlbmVyYXRvclZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZ2VuZXJhdG9yVmVyc2lvbiBpcyBubyBkZWZpbmVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHguZW5naW5lVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJlbmdpbmVWZXJzaW9uIGlzIG5vIGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLngsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiBhd2FpdCByZXNvbHZlR2VuZXJhdG9yVmVyc2lvbih4LmdlbmVyYXRvclZlcnNpb24pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZVNvdXJjZTogYXdhaXQgcmVzb2x2ZUVuZ2luZVZlcnNpb24oeC5lbmdpbmVWZXJzaW9uKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGdlbmVyYXRvckZhY3RvcnkoZmkuZ2VuZXJhdG9yU291cmNlLCB0aGlzLmNhbmR5TW9kdWxlc0RpcmVjdG9yeSwgZmFsc2UsIHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIChmaSwgeSkgPT4gKHsgLi4uZmksIGdlbmVyYXRvcjogeSB9KSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4gZ2V0R2VuZXJhdG9yU291cmNlS2V5KGZpLmdlbmVyYXRvclNvdXJjZSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIuLi8uLi9jb250cm9scy8qKi9nZW5lcmF0b3IvKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzY2hlbWFzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3VnYXIvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb250cm9scy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImF1dG9jYWxjLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaGVscGVycy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZhbGlkYXRpb25zLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibG9jYWxpemF0aW9uLyoqLypcIlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGb3Jtc0RpcldpdGhIbFBhdGggPSB0aGlzLmZhcm1Db25maWdBcnJheS5maW5kKGkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aC5zdGFydHNXaXRoKGkuZmFybURpcmVjdG9yeSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoRm9ybXNEaXJXaXRoSGxQYXRoID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiRm9ybXNEaXJXaXRoSGxQYXRoID09PSB1bmRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBnZW5lcmF0ZUZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3Jtc0RpcldpdGhIbFBhdGguaGxGYXJtRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcENvZGVSZWZvcm1hdHRpbmc6IHRoaXMuc2tpcENvZGVSZWZvcm1hdHRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0hhc2g6IFwibG9jYWwtaGFzaFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53ZWJwYWNrSHlicmlkRmlsZVN5c3RlbVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybUVudHJ5UG9pbnRQYXRoID0gcGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCB0aGlzLmdmdiwgXCJmb3JtXCIsIFwid2ViLmpzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy53ZWJwYWNrSHlicmlkRmlsZVN5c3RlbT8ud3JpdGVCYXRjaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1FbnRyeVBvaW50UGF0aF06IGdldFJlcG9ydEdlbmVyYXRvckVycm9yVG9QYWdlQm9keVNjcmlwdCh0aGlzLmZvcm1hdEVycm9yKGUpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2VuZXJhdGVDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgICAgICBhd2FpdCBydW5Gb3JtQ29tcGlsYXRpb25WaWFXZWJwYWNrRGV2U2VydmVyKFxuICAgICAgICAgICAgICAgIHRoaXMuZ2Z2LFxuICAgICAgICAgICAgICAgIHRoaXMuZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5LCBcInJlc1wiKSxcbiAgICAgICAgICAgICAgICBcImxvY2FsLWhhc2hcIixcbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkRGVidWdPbmx5LFxuICAgICAgICAgICAgICAgIHRoaXMud2VicGFja0h5YnJpZEZpbGVTeXN0ZW0sXG4gICAgICAgICAgICAgICAgdGhpcy5wb3J0XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy53ZWJwYWNrRGV2U2VydmVyU3RhcnRlZCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRHZW5lcmF0ZWRGaWxlQXNTdHJlYW0oZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8Tm9kZUpTLlJlYWRhYmxlU3RyZWFtPiB7XG4gICAgICAgIHdoaWxlICghdGhpcy53ZWJwYWNrRGV2U2VydmVyU3RhcnRlZCkge1xuICAgICAgICAgICAgYXdhaXQgZGVsYXkoNTAwKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZmlsZU5hbWUgPSBcIlwiO1xuICAgICAgICBjb25zdCBhbGxQb3NzaWJsZUZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+IHBhdGguam9pbihpLCBcImZvcm1zXCIsIHRoaXMuZ2Z2LCBcImZvcm1cIiwgZmlsZW5hbWUpKTtcbiAgICAgICAgZm9yIChjb25zdCBwdGggb2YgYWxsUG9zc2libGVGaWxlUGF0aCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy53ZWJwYWNrSHlicmlkRmlsZVN5c3RlbT8uc3RhdFN5bmMocHRoKSkge1xuICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZSA9IHB0aDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChmaWxlTmFtZSA9PT0gXCJcIikge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJnZXRHZW5lcmF0ZWRGaWxlQXNTdHJlYW0gZmlsZW5hbWUgbm90IGZvdW5kXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMud2VicGFja0h5YnJpZEZpbGVTeXN0ZW0/LnJlYWRGaWxlKGZpbGVOYW1lLCBcInV0Zi04XCIsIChlcnJvciwgZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoUmVhZGFibGUuZnJvbShbZGF0YV0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEZpbGVBc1N0cmVhbShmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxOb2RlSlMuUmVhZGFibGVTdHJlYW0+IHtcbiAgICAgICAgd2hpbGUgKCF0aGlzLndlYnBhY2tEZXZTZXJ2ZXJTdGFydGVkKSB7XG4gICAgICAgICAgICBhd2FpdCBkZWxheSg1MDApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYGh0dHBzOi8vbG9jYWxob3N0OiR7dGhpcy5wb3J0fS8ke2ZpbGVuYW1lfWAsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgICAgIGFnZW50OiBuZXcgQWdlbnQoeyByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlIH0pLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPSAyMDApIHtcbiAgICAgICAgICAgIGNvbnN0IHRleHRSZXNwb25zZSA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0ZXh0UmVzcG9uc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNwb25zZS5ib2R5O1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0RXJyb3IoZTogUmVhc29uT3JFcnJvcik6IHN0cmluZyB7XG4gICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtlfVxcbiR7ZS5zdGFja31gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHtlfWA7XG4gICAgfVxufVxuIl19
|
|
@@ -75,7 +75,7 @@ async function runDevBuild(context, options, engineDirectory, resourcesDirectory
|
|
|
75
75
|
skipCodeReformatting: options.skipGeneratedCodeReformatting,
|
|
76
76
|
resourcesHash: fi.dependenciesHash
|
|
77
77
|
});
|
|
78
|
-
}).attach(async fi => _Observe.Observe.files(_path.default.join(formDirPath, "form"), "**/*")).do(fi => (0, _CompileForm.compileForm)(fi.formName, fi.themes, farmDirectory, resourcesDirectory, fi.dependenciesHash, options.buildDebugOnly)).do(fi => (0, _WriteFLangNormalizationFiles.writeFLangNormalizationFiles)(fi.formName, farmDirectory, resourcesDirectory)).do(fi => (0, _WriteAttachmentPathFiles.writeAttachmentPathFiles)(fi.formName, farmDirectory, resourcesDirectory)).do(fi => (0, _WriteFormMeta.writeFormMeta)(resourcesDirectory, gfv, fi.engineSource, fi.dependenciesHash, fi.themes)).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "schemas"), "*.rng.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("SCHEMAS"), x, _path.default.join(resourcesDirectory, "schemas")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "converters"), "*").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("CONVERTERS"), x, _path.default.join(resourcesDirectory, "converters")))).attach(async fi => _Observe.Observe.file(_path.default.join(fi.formSourcesPath, "presentations.json")).do(x => _FSTask.FSTask.copyFile((0, _StaticLogger.getLogger)().withPrefix("PRESENTATIONS"), x, _path.default.join(resourcesDirectory, "presentations", `${gfv}.presentations.json`)))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "normalize"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("NORMALIZE"), x, _path.default.join(resourcesDirectory, "normalize")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "patch"), "*.xslt").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("PATCH"), x, _path.default.join(resourcesDirectory, "patch")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "map"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("MAP"), x, _path.default.join(resourcesDirectory, "map")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "unmap"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("UNMAP"), x, _path.default.join(resourcesDirectory, "unmap"))));
|
|
78
|
+
}).attach(async fi => _Observe.Observe.files(_path.default.join(formDirPath, "form"), "**/*")).do(fi => (0, _CompileForm.compileForm)(fi.formName, fi.themes, farmDirectory, resourcesDirectory, fi.dependenciesHash, options.buildDebugOnly)).do(fi => (0, _WriteFLangNormalizationFiles.writeFLangNormalizationFiles)(fi.formName, farmDirectory, resourcesDirectory)).do(fi => (0, _WriteAttachmentPathFiles.writeAttachmentPathFiles)(fi.formName, farmDirectory, resourcesDirectory)).do(fi => (0, _WriteFormMeta.writeFormMeta)(resourcesDirectory, gfv, fi.engineSource, fi.dependenciesHash, fi.themes)).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "schemas"), "*.rng.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("SCHEMAS"), x, _path.default.join(resourcesDirectory, "schemas")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "converters"), "*").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("CONVERTERS"), x, _path.default.join(resourcesDirectory, "converters")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "mergers"), "*").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("MERGERS"), x, _path.default.join(resourcesDirectory, "mergers")))).attach(async fi => _Observe.Observe.file(_path.default.join(fi.formSourcesPath, "presentations.json")).do(x => _FSTask.FSTask.copyFile((0, _StaticLogger.getLogger)().withPrefix("PRESENTATIONS"), x, _path.default.join(resourcesDirectory, "presentations", `${gfv}.presentations.json`)))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "normalize"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("NORMALIZE"), x, _path.default.join(resourcesDirectory, "normalize")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "patch"), "*.xslt").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("PATCH"), x, _path.default.join(resourcesDirectory, "patch")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "map"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("MAP"), x, _path.default.join(resourcesDirectory, "map")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "unmap"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("UNMAP"), x, _path.default.join(resourcesDirectory, "unmap"))));
|
|
79
79
|
});
|
|
80
80
|
|
|
81
81
|
if (devBuildOptions.watch) {
|
|
@@ -109,4 +109,4 @@ async function runDevBuild(context, options, engineDirectory, resourcesDirectory
|
|
|
109
109
|
console.log(`${_chalk.default.greenBright("Build success")} Total time: ${(0, _TimingUtils.printTime)(totalTime)}`);
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9EZXZCdWlsZC9SdW5EZXZCdWlsZC50cyJdLCJuYW1lcyI6WyJydW5EZXZCdWlsZCIsImNvbnRleHQiLCJvcHRpb25zIiwiZW5naW5lRGlyZWN0b3J5IiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsImNhbmR5TW9kdWxlc0RpcmVjdG9yeSIsImhsRmFybURpcmVjdG9yeVBhdGgiLCJkZXZCdWlsZE9wdGlvbnMiLCJlbmdpbmVXZWJwYWNrQ29uZmlnVGFzayIsImJ1aWxkRW5naW5lQ2hhaW4iLCJjaGFpbldpdGgiLCJwIiwiQnVpbGRMb2NhbEVuZ2luZVRhc2siLCJidWlsZERlYnVnT25seSIsImNsaWVudFdlYnBhY2tDb25maWdUYXNrIiwiYnVpbGRDbGllbnRKc0NoYWluIiwiQnVpbGRDbGllbnRKc1Rhc2siLCJzdGF0aWNSZXNvdXJjZXNDaGFpbiIsIk9ic2VydmUiLCJmaWxlcyIsInBhdGgiLCJqb2luIiwiX19kaXJuYW1lIiwiZG8iLCJ4IiwiRlNUYXNrIiwiY29weVJlY3Vyc2l2ZWx5Iiwid2l0aFByZWZpeCIsInBpY2tMaXN0c0NoYWluIiwibG9nZ2VyIiwiZm9ybUdsb2JzIiwiRm9ybUdsb2JzIiwidmFsaWRhdGVHbG9icyIsInJlc29sdmVTcGVjaWZpZXJzIiwiYnVpbGRGb3Jtc0NoYWluIiwiZGlyZWN0b3J5Iiwic3BsaXRUb1BhcmFsbGVsQ2hhaW5zIiwiZ2Z2IiwiZm9ybURpclBhdGgiLCJmaWxlIiwidHJhbnNmb3JtIiwiZm9ybUpzb25GaWxlIiwiZ2VuZXJhdG9yU291cmNlIiwiZW5naW5lU291cmNlIiwiYXR0YWNoIiwiZmkiLCJ1bmRlZmluZWQiLCJ5IiwiZ2VuZXJhdG9yIiwiZm9ybVNvdXJjZXNQYXRoIiwiZGVwZW5kZW5jaWVzSGFzaCIsImdldEFsbERlcGVuZGVuY2llc0hhc2giLCJza2lwR2VuZXJhdGlvbiIsInNraXBDb2RlUmVmb3JtYXR0aW5nIiwic2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmciLCJyZXNvdXJjZXNIYXNoIiwiZm9ybU5hbWUiLCJ0aGVtZXMiLCJjb3B5RmlsZSIsIndhdGNoIiwic3RvcE9ic2VydmUxIiwib2JzZXJ2ZSIsInN0b3BPYnNlcnZlMiIsInN0b3BPYnNlcnZlMyIsInN0b3BPYnNlcnZlNCIsInN0b3BPYnNlcnZlNSIsIndhaXRGb3JFeGl0Iiwic3RhcnREYXRlIiwiRGF0ZSIsIm5vdyIsIlByb21pc2UiLCJhbGwiLCJjdXJyZW50VmFsdWUiLCJlIiwiY29udGludWVPbkVycm9yIiwiZXJyb3IiLCJ0b3RhbFRpbWUiLCJjb25zb2xlIiwibG9nIiwiY2hhbGsiLCJncmVlbkJyaWdodCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSU8sZUFBZUEsV0FBZixDQUNIQyxPQURHLEVBRUhDLE9BRkcsRUFHSEMsZUFIRyxFQUlIQyxrQkFKRyxFQUtIQyxhQUxHLEVBTUhDLHFCQU5HLEVBT0hDLG1CQVBHLEVBUVU7QUFDYixRQUFNQyxlQUFlLEdBQUdOLE9BQXhCO0FBRUEsUUFBTU8sdUJBQXVCLEdBQUcsTUFBTSx5REFBOEJOLGVBQTlCLENBQXRDO0FBQ0EsUUFBTU8sZ0JBQWdCLEdBQUdELHVCQUF1QixDQUFDRSxTQUF4QixDQUNyQkMsQ0FBQyxJQUFJLElBQUlDLDBDQUFKLENBQXlCRCxDQUF6QixFQUE0QlIsa0JBQTVCLEVBQWdERixPQUFPLENBQUNZLGNBQXhELENBRGdCLENBQXpCO0FBSUEsUUFBTUMsdUJBQXVCLEdBQUcsTUFBTSx5REFBOEJaLGVBQTlCLENBQXRDO0FBQ0EsUUFBTWEsa0JBQWtCLEdBQUdELHVCQUF1QixDQUFDSixTQUF4QixDQUFrQ0MsQ0FBQyxJQUFJLElBQUlLLG9DQUFKLENBQXNCTCxDQUF0QixFQUF5QlIsa0JBQXpCLENBQXZDLENBQTNCOztBQUVBLFFBQU1jLG9CQUFvQixHQUFHQyxpQkFBUUMsS0FBUixDQUN6QkMsY0FBS0MsSUFBTCxDQUFVQyxTQUFWLEVBQXFCLElBQXJCLEVBQTJCLElBQTNCLEVBQWlDLDRCQUFqQyxDQUR5QixFQUV6QixNQUZ5QixFQUczQkMsRUFIMkIsQ0FHeEJDLENBQUMsSUFDRkMsZUFBT0MsZUFBUCxDQUF1QiwrQkFBWUMsVUFBWixDQUF1QixTQUF2QixDQUF2QixFQUEwREgsQ0FBMUQsRUFBNkRKLGNBQUtDLElBQUwsQ0FBVWxCLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDLFNBQXhDLENBQTdELENBSnlCLENBQTdCOztBQU9BLFFBQU15QixjQUFjLEdBQUdWLGlCQUFRQyxLQUFSLENBQWNDLGNBQUtDLElBQUwsQ0FBVWpCLGFBQVYsRUFBeUIsV0FBekIsQ0FBZCxFQUFxRCxRQUFyRCxFQUErRG1CLEVBQS9ELENBQWtFQyxDQUFDLElBQ3RGQyxlQUFPQyxlQUFQLENBQXVCMUIsT0FBTyxDQUFDNkIsTUFBUixDQUFlRixVQUFmLENBQTBCLFdBQTFCLENBQXZCLEVBQStESCxDQUEvRCxFQUFrRUosY0FBS0MsSUFBTCxDQUFVbEIsa0JBQVYsRUFBOEIsV0FBOUIsQ0FBbEUsQ0FEbUIsQ0FBdkI7O0FBSUEsUUFBTTJCLFNBQVMsR0FBRyxNQUFNQywwQkFBVUMsYUFBVixDQUNwQixNQUFNRCwwQkFBVUUsaUJBQVYsQ0FBNEJoQyxPQUFPLENBQUM2QixTQUFwQyxFQUErQzFCLGFBQS9DLENBRGMsRUFFcEJBLGFBRm9CLENBQXhCOztBQUlBLFFBQU04QixlQUFlLEdBQUdoQixpQkFBUWlCLFNBQVIsQ0FBa0JmLGNBQUtDLElBQUwsQ0FBVWpCLGFBQVYsRUFBeUIsT0FBekIsQ0FBbEIsRUFBcUQwQixTQUFyRCxFQUFnRU0scUJBQWhFLENBQ3BCWixDQUFDLElBQUlBLENBRGUsRUFFcEJBLENBQUMsSUFBSUEsQ0FGZSxFQUdwQmEsR0FBRyxJQUFJO0FBQ0gsVUFBTUMsV0FBVyxHQUFHbEIsY0FBS0MsSUFBTCxDQUFVakIsYUFBVixFQUF5QixPQUF6QixFQUFrQ2lDLEdBQWxDLENBQXBCOztBQUVBLFdBQU9uQixpQkFBUXFCLElBQVIsQ0FBYW5CLGNBQUtDLElBQUwsQ0FBVWlCLFdBQVYsRUFBdUIsV0FBdkIsQ0FBYixFQUNGRSxTQURFLENBQ1FDLFlBQVksSUFBSSxzQ0FBZ0JBLFlBQWhCLEVBQThCSCxXQUE5QixFQUEyQ3BDLGVBQTNDLENBRHhCLEVBRUZzQyxTQUZFLENBRVEsTUFBTWhCLENBQU4sS0FBWSxFQUNuQixHQUFHQSxDQURnQjtBQUVuQmtCLE1BQUFBLGVBQWUsRUFBRSx3REFBNEJ4QyxlQUE1QixDQUZFO0FBR25CeUMsTUFBQUEsWUFBWSxFQUFFLHFEQUF5QnpDLGVBQXpCO0FBSEssS0FBWixDQUZSLEVBT0YwQyxNQVBFLENBUUMsTUFBTUMsRUFBTixJQUFZLDRDQUFpQkEsRUFBRSxDQUFDSCxlQUFwQixFQUFxQ3JDLHFCQUFyQyxFQUE0RCxLQUE1RCxFQUFtRXlDLFNBQW5FLENBUmIsRUFTQyxPQUFPRCxFQUFQLEVBQVdFLENBQVgsTUFBa0IsRUFBRSxHQUFHRixFQUFMO0FBQVNHLE1BQUFBLFNBQVMsRUFBRUQ7QUFBcEIsS0FBbEIsQ0FURCxFQVVDLE1BQU1GLEVBQU4sSUFBWSxpREFBc0JBLEVBQUUsQ0FBQ0gsZUFBekIsQ0FWYixFQVlGRSxNQVpFLENBWUssTUFBTUMsRUFBTixJQUNKM0IsaUJBQVFDLEtBQVIsQ0FDSTBCLEVBQUUsQ0FBQ0ksZUFEUCxFQUVJLHFCQUZKLEVBR0ksY0FISixFQUlJLFlBSkosRUFLSSxlQUxKLEVBTUksZUFOSixFQU9JLGNBUEosRUFRSSxrQkFSSixFQVNJLG1CQVRKLENBYkQsRUF5QkZULFNBekJFLENBeUJRLE1BQU1LLEVBQU4sS0FBYSxFQUNwQixHQUFHQSxFQURpQjtBQUVwQkssTUFBQUEsZ0JBQWdCLEVBQUUsTUFBTUwsRUFBRSxDQUFDRyxTQUFILENBQWFHLHNCQUFiLENBQ3BCYixXQURvQixFQUVwQmxDLGFBRm9CLEVBR3BCRSxtQkFIb0I7QUFGSixLQUFiLENBekJSLEVBaUNGaUIsRUFqQ0UsQ0FpQ0MsTUFBTXNCLEVBQU4sSUFBWTtBQUNaLFVBQUk1QyxPQUFPLENBQUNtRCxjQUFaLEVBQTRCO0FBQ3hCLGVBQU9OLFNBQVA7QUFDSDs7QUFDRCxhQUFPLGdDQUNIRCxFQUFFLENBQUNJLGVBREEsRUFFSDdDLGFBRkcsRUFHSEUsbUJBSEcsRUFJSHVDLEVBQUUsQ0FBQ0csU0FKQSxFQUtIRixTQUxHLEVBTUg7QUFDSU8sUUFBQUEsb0JBQW9CLEVBQUVwRCxPQUFPLENBQUNxRCw2QkFEbEM7QUFFSUMsUUFBQUEsYUFBYSxFQUFFVixFQUFFLENBQUNLO0FBRnRCLE9BTkcsQ0FBUDtBQVdILEtBaERFLEVBaURGTixNQWpERSxDQWlESyxNQUFNQyxFQUFOLElBQVkzQixpQkFBUUMsS0FBUixDQUFjQyxjQUFLQyxJQUFMLENBQVVpQixXQUFWLEVBQXVCLE1BQXZCLENBQWQsRUFBOEMsTUFBOUMsQ0FqRGpCLEVBa0RGZixFQWxERSxDQWtEQ3NCLEVBQUUsSUFDRiw4QkFDSUEsRUFBRSxDQUFDVyxRQURQLEVBRUlYLEVBQUUsQ0FBQ1ksTUFGUCxFQUdJckQsYUFISixFQUlJRCxrQkFKSixFQUtJMEMsRUFBRSxDQUFDSyxnQkFMUCxFQU1JakQsT0FBTyxDQUFDWSxjQU5aLENBbkRELEVBNERGVSxFQTVERSxDQTREQ3NCLEVBQUUsSUFBSSxnRUFBNkJBLEVBQUUsQ0FBQ1csUUFBaEMsRUFBMENwRCxhQUExQyxFQUF5REQsa0JBQXpELENBNURQLEVBNkRGb0IsRUE3REUsQ0E2RENzQixFQUFFLElBQUksd0RBQXlCQSxFQUFFLENBQUNXLFFBQTVCLEVBQXNDcEQsYUFBdEMsRUFBcURELGtCQUFyRCxDQTdEUCxFQThERm9CLEVBOURFLENBOERDc0IsRUFBRSxJQUFJLGtDQUFjMUMsa0JBQWQsRUFBa0NrQyxHQUFsQyxFQUF1Q1EsRUFBRSxDQUFDRixZQUExQyxFQUF3REUsRUFBRSxDQUFDSyxnQkFBM0QsRUFBNkVMLEVBQUUsQ0FBQ1ksTUFBaEYsQ0E5RFAsRUErREZiLE1BL0RFLENBK0RLLE1BQU1DLEVBQU4sSUFDSjNCLGlCQUFRQyxLQUFSLENBQWNDLGNBQUtDLElBQUwsQ0FBVXdCLEVBQUUsQ0FBQ0ksZUFBYixFQUE4QixTQUE5QixDQUFkLEVBQXdELFdBQXhELEVBQXFFMUIsRUFBckUsQ0FBd0VDLENBQUMsSUFDckVDLGVBQU9DLGVBQVAsQ0FDSSwrQkFBWUMsVUFBWixDQUF1QixTQUF2QixDQURKLEVBRUlILENBRkosRUFHSUosY0FBS0MsSUFBTCxDQUFVbEIsa0JBQVYsRUFBOEIsU0FBOUIsQ0FISixDQURKLENBaEVELEVBd0VGeUMsTUF4RUUsQ0F3RUssTUFBTUMsRUFBTixJQUNKM0IsaUJBQVFDLEtBQVIsQ0FBY0MsY0FBS0MsSUFBTCxDQUFVd0IsRUFBRSxDQUFDSSxlQUFiLEVBQThCLFlBQTlCLENBQWQsRUFBMkQsR0FBM0QsRUFBZ0UxQixFQUFoRSxDQUFtRUMsQ0FBQyxJQUNoRUMsZUFBT0MsZUFBUCxDQUNJLCtCQUFZQyxVQUFaLENBQXVCLFlBQXZCLENBREosRUFFSUgsQ0FGSixFQUdJSixjQUFLQyxJQUFMLENBQVVsQixrQkFBVixFQUE4QixZQUE5QixDQUhKLENBREosQ0F6RUQsRUFpRkZ5QyxNQWpGRSxDQWlGSyxNQUFNQyxFQUFOLElBQ0ozQixpQkFBUXFCLElBQVIsQ0FBYW5CLGNBQUtDLElBQUwsQ0FBVXdCLEVBQUUsQ0FBQ0ksZUFBYixFQUE4QixvQkFBOUIsQ0FBYixFQUFrRTFCLEVBQWxFLENBQXFFQyxDQUFDLElBQ2xFQyxlQUFPaUMsUUFBUCxDQUNJLCtCQUFZL0IsVUFBWixDQUF1QixlQUF2QixDQURKLEVBRUlILENBRkosRUFHSUosY0FBS0MsSUFBTCxDQUFVbEIsa0JBQVYsRUFBOEIsZUFBOUIsRUFBZ0QsR0FBRWtDLEdBQUkscUJBQXRELENBSEosQ0FESixDQWxGRCxFQTBGRk8sTUExRkUsQ0EwRkssTUFBTUMsRUFBTixJQUNKM0IsaUJBQVFDLEtBQVIsQ0FBY0MsY0FBS0MsSUFBTCxDQUFVd0IsRUFBRSxDQUFDSSxlQUFiLEVBQThCLFdBQTlCLENBQWQsRUFBMEQsT0FBMUQsRUFBbUUxQixFQUFuRSxDQUFzRUMsQ0FBQyxJQUNuRUMsZUFBT0MsZUFBUCxDQUNJLCtCQUFZQyxVQUFaLENBQXVCLFdBQXZCLENBREosRUFFSUgsQ0FGSixFQUdJSixjQUFLQyxJQUFMLENBQVVsQixrQkFBVixFQUE4QixXQUE5QixDQUhKLENBREosQ0EzRkQsRUFtR0Z5QyxNQW5HRSxDQW1HSyxNQUFNQyxFQUFOLElBQ0ozQixpQkFBUUMsS0FBUixDQUFjQyxjQUFLQyxJQUFMLENBQVV3QixFQUFFLENBQUNJLGVBQWIsRUFBOEIsT0FBOUIsQ0FBZCxFQUFzRCxRQUF0RCxFQUFnRTFCLEVBQWhFLENBQW1FQyxDQUFDLElBQ2hFQyxlQUFPQyxlQUFQLENBQ0ksK0JBQVlDLFVBQVosQ0FBdUIsT0FBdkIsQ0FESixFQUVJSCxDQUZKLEVBR0lKLGNBQUtDLElBQUwsQ0FBVWxCLGtCQUFWLEVBQThCLE9BQTlCLENBSEosQ0FESixDQXBHRCxFQTRHRnlDLE1BNUdFLENBNEdLLE1BQU1DLEVBQU4sSUFDSjNCLGlCQUFRQyxLQUFSLENBQWNDLGNBQUtDLElBQUwsQ0FBVXdCLEVBQUUsQ0FBQ0ksZUFBYixFQUE4QixLQUE5QixDQUFkLEVBQW9ELE9BQXBELEVBQTZEMUIsRUFBN0QsQ0FBZ0VDLENBQUMsSUFDN0RDLGVBQU9DLGVBQVAsQ0FBdUIsK0JBQVlDLFVBQVosQ0FBdUIsS0FBdkIsQ0FBdkIsRUFBc0RILENBQXRELEVBQXlESixjQUFLQyxJQUFMLENBQVVsQixrQkFBVixFQUE4QixLQUE5QixDQUF6RCxDQURKLENBN0dELEVBaUhGeUMsTUFqSEUsQ0FpSEssTUFBTUMsRUFBTixJQUNKM0IsaUJBQVFDLEtBQVIsQ0FBY0MsY0FBS0MsSUFBTCxDQUFVd0IsRUFBRSxDQUFDSSxlQUFiLEVBQThCLE9BQTlCLENBQWQsRUFBc0QsT0FBdEQsRUFBK0QxQixFQUEvRCxDQUFrRUMsQ0FBQyxJQUMvREMsZUFBT0MsZUFBUCxDQUNJLCtCQUFZQyxVQUFaLENBQXVCLE9BQXZCLENBREosRUFFSUgsQ0FGSixFQUdJSixjQUFLQyxJQUFMLENBQVVsQixrQkFBVixFQUE4QixPQUE5QixDQUhKLENBREosQ0FsSEQsQ0FBUDtBQTBISCxHQWhJbUIsQ0FBeEI7O0FBbUlBLE1BQUlJLGVBQWUsQ0FBQ29ELEtBQXBCLEVBQTJCO0FBQ3ZCLFVBQU1DLFlBQVksR0FBRyxNQUFNbkQsZ0JBQWdCLENBQUNvRCxPQUFqQixFQUEzQjtBQUNBLFVBQU1DLFlBQVksR0FBRyxNQUFNL0Msa0JBQWtCLENBQUM4QyxPQUFuQixFQUEzQjtBQUNBLFVBQU1FLFlBQVksR0FBRyxNQUFNOUMsb0JBQW9CLENBQUM0QyxPQUFyQixFQUEzQjtBQUNBLFVBQU1HLFlBQVksR0FBRyxNQUFNOUIsZUFBZSxDQUFDMkIsT0FBaEIsRUFBM0I7QUFDQSxVQUFNSSxZQUFZLEdBQUcsTUFBTXJDLGNBQWMsQ0FBQ2lDLE9BQWYsRUFBM0I7QUFFQSxVQUFNN0QsT0FBTyxDQUFDa0UsV0FBUixFQUFOO0FBRUEsVUFBTU4sWUFBWSxFQUFsQjtBQUNBLFVBQU1FLFlBQVksRUFBbEI7QUFDQSxVQUFNQyxZQUFZLEVBQWxCO0FBQ0EsVUFBTUMsWUFBWSxFQUFsQjtBQUNBLFVBQU1DLFlBQVksRUFBbEI7QUFDSCxHQWRELE1BY087QUFDSCxVQUFNRSxTQUFTLEdBQUdDLElBQUksQ0FBQ0MsR0FBTCxFQUFsQjtBQUNBLFVBQU1DLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLENBQ2Q5RCxnQkFBZ0IsQ0FBQytELFlBREgsRUFFZHpELGtCQUFrQixDQUFDeUQsWUFGTCxFQUdkdkQsb0JBQW9CLENBQUN1RCxZQUhQLEVBSWQsQ0FBQyxZQUFZO0FBQ1QsVUFBSTtBQUNBLGNBQU01QyxjQUFjLENBQUM0QyxZQUFyQjtBQUNBLGNBQU10QyxlQUFlLENBQUNzQyxZQUF0QjtBQUNILE9BSEQsQ0FHRSxPQUFPQyxDQUFQLEVBQVU7QUFDUixZQUFJeEUsT0FBTyxDQUFDeUUsZUFBWixFQUE2QjtBQUN6QjFFLFVBQUFBLE9BQU8sQ0FBQzZCLE1BQVIsQ0FBZThDLEtBQWYsQ0FBcUJGLENBQXJCO0FBQ0gsU0FGRCxNQUVPO0FBQ0gsZ0JBQU1BLENBQU47QUFDSDtBQUNKO0FBQ0osS0FYRCxHQUpjLENBQVosQ0FBTjtBQWlCQSxVQUFNRyxTQUFTLEdBQUdSLElBQUksQ0FBQ0MsR0FBTCxLQUFhRixTQUEvQixDQW5CRyxDQW9CSDs7QUFDQVUsSUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQWEsR0FBRUMsZUFBTUMsV0FBTixDQUFrQixlQUFsQixDQUFtQyxnQkFBZSw0QkFBVUosU0FBVixDQUFxQixFQUF0RjtBQUNIO0FBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5cbmltcG9ydCB7IEJ1aWxkQ2xpZW50SnNUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvQ2xpZW50SlMvQnVpbGRDbGllbnRKc1Rhc2tcIjtcbmltcG9ydCB7IEJ1aWxkTG9jYWxFbmdpbmVUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRW5naW5lL0J1aWxkTG9jYWxFbmdpbmVUYXNrXCI7XG5pbXBvcnQgeyBjcmVhdGVDbGllbnRXZWJwYWNrQ29uZmlnVGFzaywgY3JlYXRlRW5naW5lV2VicGFja0NvbmZpZ1Rhc2sgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9FbmdpbmVTdHJ1Y3R1cmVVdGlsc1wiO1xuaW1wb3J0IHsgY29tcGlsZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0NvbXBpbGVGb3JtXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0dlbmVyYXRlRm9ybVwiO1xuaW1wb3J0IHsgd3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vV3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlc1wiO1xuaW1wb3J0IHsgRlNUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRlNUYXNrXCI7XG5pbXBvcnQgeyBnZW5lcmF0b3JGYWN0b3J5LCBnZXRHZW5lcmF0b3JTb3VyY2VLZXkgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9HZW5lcmF0b3IvQWNxdWlyZUZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7IHJlc29sdmVMb2NhbEVuZ2luZVNvdXJjZSwgcmVzb2x2ZUxvY2FsR2VuZXJhdG9yU291cmNlIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUHVibGlzaGVkVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyByZXNvbHZlRm9ybUluZm8gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IHdyaXRlRm9ybU1ldGEgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Xcml0ZUZvcm1NZXRhXCI7XG5pbXBvcnQgeyBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvQ29uc29sZUFwcGxpY2F0aW9uL0NvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHRcIjtcbmltcG9ydCB7IEZvcm1HbG9icyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0Zvcm1HbG9ic1V0aWxzXCI7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL1N0YXRpY0xvZ2dlclwiO1xuaW1wb3J0IHsgT2JzZXJ2ZSB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9PYnNlcnZlXCI7XG5pbXBvcnQgeyBwcmludFRpbWUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UaW1pbmdVdGlsc1wiO1xuaW1wb3J0IHsgd3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Xcml0ZUF0dGFjaG1lbnRQYXRoRmlsZXNcIjtcblxuaW1wb3J0IHsgRGV2ZWxvcG1lbnRCdWlsZE9wdGlvbnMgfSBmcm9tIFwiLi9EZXZCdWlsZE9wdGlvbnNcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkRldkJ1aWxkKFxuICAgIGNvbnRleHQ6IENvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHQsXG4gICAgb3B0aW9uczogRGV2ZWxvcG1lbnRCdWlsZE9wdGlvbnMsXG4gICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZmFybURpcmVjdG9yeTogc3RyaW5nLFxuICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgIGhsRmFybURpcmVjdG9yeVBhdGg6IHN0cmluZ1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZGV2QnVpbGRPcHRpb25zID0gb3B0aW9ucztcblxuICAgIGNvbnN0IGVuZ2luZVdlYnBhY2tDb25maWdUYXNrID0gYXdhaXQgY3JlYXRlRW5naW5lV2VicGFja0NvbmZpZ1Rhc2soZW5naW5lRGlyZWN0b3J5KTtcbiAgICBjb25zdCBidWlsZEVuZ2luZUNoYWluID0gZW5naW5lV2VicGFja0NvbmZpZ1Rhc2suY2hhaW5XaXRoKFxuICAgICAgICBwID0+IG5ldyBCdWlsZExvY2FsRW5naW5lVGFzayhwLCByZXNvdXJjZXNEaXJlY3RvcnksIG9wdGlvbnMuYnVpbGREZWJ1Z09ubHkpXG4gICAgKTtcblxuICAgIGNvbnN0IGNsaWVudFdlYnBhY2tDb25maWdUYXNrID0gYXdhaXQgY3JlYXRlQ2xpZW50V2VicGFja0NvbmZpZ1Rhc2soZW5naW5lRGlyZWN0b3J5KTtcbiAgICBjb25zdCBidWlsZENsaWVudEpzQ2hhaW4gPSBjbGllbnRXZWJwYWNrQ29uZmlnVGFzay5jaGFpbldpdGgocCA9PiBuZXcgQnVpbGRDbGllbnRKc1Rhc2socCwgcmVzb3VyY2VzRGlyZWN0b3J5KSk7XG5cbiAgICBjb25zdCBzdGF0aWNSZXNvdXJjZXNDaGFpbiA9IE9ic2VydmUuZmlsZXMoXG4gICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi5cIiwgXCIuLlwiLCBcIlN0YXRpY0ZpbGVzRm9yUmVzb3VyY2VzRGlyXCIpLFxuICAgICAgICBcIiouanNcIlxuICAgICkuZG8oeCA9PlxuICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJTVEFUSUNTXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInB1YmxpY1wiLCBcInNjcmlwdHNcIikpXG4gICAgKTtcblxuICAgIGNvbnN0IHBpY2tMaXN0c0NoYWluID0gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJwaWNrbGlzdHNcIiksIFwiKi5qc29uXCIpLmRvKHggPT5cbiAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KFwiUElDS0xJU1RTXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInBpY2tsaXN0c1wiKSlcbiAgICApO1xuXG4gICAgY29uc3QgZm9ybUdsb2JzID0gYXdhaXQgRm9ybUdsb2JzLnZhbGlkYXRlR2xvYnMoXG4gICAgICAgIGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlU3BlY2lmaWVycyhvcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSksXG4gICAgICAgIGZhcm1EaXJlY3RvcnlcbiAgICApO1xuICAgIGNvbnN0IGJ1aWxkRm9ybXNDaGFpbiA9IE9ic2VydmUuZGlyZWN0b3J5KHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIpLCBmb3JtR2xvYnMpLnNwbGl0VG9QYXJhbGxlbENoYWlucyhcbiAgICAgICAgeCA9PiB4LFxuICAgICAgICB4ID0+IHgsXG4gICAgICAgIGdmdiA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3JtRGlyUGF0aCA9IHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdik7XG5cbiAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm0uanNvblwiKSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGZvcm1Kc29uRmlsZSA9PiByZXNvbHZlRm9ybUluZm8oZm9ybUpzb25GaWxlLCBmb3JtRGlyUGF0aCwgZW5naW5lRGlyZWN0b3J5KSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGFzeW5jIHggPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4ueCxcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiByZXNvbHZlTG9jYWxHZW5lcmF0b3JTb3VyY2UoZW5naW5lRGlyZWN0b3J5KSxcbiAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiByZXNvbHZlTG9jYWxFbmdpbmVTb3VyY2UoZW5naW5lRGlyZWN0b3J5KSxcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiBnZW5lcmF0b3JGYWN0b3J5KGZpLmdlbmVyYXRvclNvdXJjZSwgY2FuZHlNb2R1bGVzRGlyZWN0b3J5LCBmYWxzZSwgdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgKGZpLCB5KSA9PiAoeyAuLi5maSwgZ2VuZXJhdG9yOiB5IH0pLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiBnZXRHZW5lcmF0b3JTb3VyY2VLZXkoZmkuZ2VuZXJhdG9yU291cmNlKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtU291cmNlc1BhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIi4uLy4uL2NvbnRyb2xzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic2NoZW1hcy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInN1Z2FyLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhdXRvY2FsYy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImhlbHBlcnMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ2YWxpZGF0aW9ucy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImxvY2FsaXphdGlvbi8qKi8qXCJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGFzeW5jIGZpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNIYXNoOiBhd2FpdCBmaS5nZW5lcmF0b3IuZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaChcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGhcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5za2lwR2VuZXJhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcENvZGVSZWZvcm1hdHRpbmc6IG9wdGlvbnMuc2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzSGFzaDogZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT4gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwiZm9ybVwiKSwgXCIqKi8qXCIpKVxuICAgICAgICAgICAgICAgIC5kbyhmaSA9PlxuICAgICAgICAgICAgICAgICAgICBjb21waWxlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkudGhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2gsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmJ1aWxkRGVidWdPbmx5XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmRvKGZpID0+IHdyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXMoZmkuZm9ybU5hbWUsIGZhcm1EaXJlY3RvcnksIHJlc291cmNlc0RpcmVjdG9yeSkpXG4gICAgICAgICAgICAgICAgLmRvKGZpID0+IHdyaXRlQXR0YWNobWVudFBhdGhGaWxlcyhmaS5mb3JtTmFtZSwgZmFybURpcmVjdG9yeSwgcmVzb3VyY2VzRGlyZWN0b3J5KSlcbiAgICAgICAgICAgICAgICAuZG8oZmkgPT4gd3JpdGVGb3JtTWV0YShyZXNvdXJjZXNEaXJlY3RvcnksIGdmdiwgZmkuZW5naW5lU291cmNlLCBmaS5kZXBlbmRlbmNpZXNIYXNoLCBmaS50aGVtZXMpKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInNjaGVtYXNcIiksIFwiKi5ybmcueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNDSEVNQVNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInNjaGVtYXNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJjb252ZXJ0ZXJzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiQ09OVkVSVEVSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwicHJlc2VudGF0aW9ucy5qc29uXCIpKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weUZpbGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlBSRVNFTlRBVElPTlNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInByZXNlbnRhdGlvbnNcIiwgYCR7Z2Z2fS5wcmVzZW50YXRpb25zLmpzb25gKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm5vcm1hbGl6ZVwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJOT1JNQUxJWkVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcIm5vcm1hbGl6ZVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInBhdGNoXCIpLCBcIioueHNsdFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJQQVRDSFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicGF0Y2hcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJtYXBcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTUFQXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcIm1hcFwiKSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJ1bm1hcFwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJVTk1BUFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwidW5tYXBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgaWYgKGRldkJ1aWxkT3B0aW9ucy53YXRjaCkge1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTEgPSBhd2FpdCBidWlsZEVuZ2luZUNoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUyID0gYXdhaXQgYnVpbGRDbGllbnRKc0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUzID0gYXdhaXQgc3RhdGljUmVzb3VyY2VzQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTQgPSBhd2FpdCBidWlsZEZvcm1zQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTUgPSBhd2FpdCBwaWNrTGlzdHNDaGFpbi5vYnNlcnZlKCk7XG5cbiAgICAgICAgYXdhaXQgY29udGV4dC53YWl0Rm9yRXhpdCgpO1xuXG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMSgpO1xuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTIoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUzKCk7XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlNCgpO1xuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzdGFydERhdGUgPSBEYXRlLm5vdygpO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICBidWlsZEVuZ2luZUNoYWluLmN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICAgIGJ1aWxkQ2xpZW50SnNDaGFpbi5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgICBzdGF0aWNSZXNvdXJjZXNDaGFpbi5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHBpY2tMaXN0c0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgYnVpbGRGb3Jtc0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmNvbnRpbnVlT25FcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkoKSxcbiAgICAgICAgXSk7XG4gICAgICAgIGNvbnN0IHRvdGFsVGltZSA9IERhdGUubm93KCkgLSBzdGFydERhdGU7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUubG9nKGAke2NoYWxrLmdyZWVuQnJpZ2h0KFwiQnVpbGQgc3VjY2Vzc1wiKX0gVG90YWwgdGltZTogJHtwcmludFRpbWUodG90YWxUaW1lKX1gKTtcbiAgICB9XG59XG4iXX0=
|
|
112
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9EZXZCdWlsZC9SdW5EZXZCdWlsZC50cyJdLCJuYW1lcyI6WyJydW5EZXZCdWlsZCIsImNvbnRleHQiLCJvcHRpb25zIiwiZW5naW5lRGlyZWN0b3J5IiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsImNhbmR5TW9kdWxlc0RpcmVjdG9yeSIsImhsRmFybURpcmVjdG9yeVBhdGgiLCJkZXZCdWlsZE9wdGlvbnMiLCJlbmdpbmVXZWJwYWNrQ29uZmlnVGFzayIsImJ1aWxkRW5naW5lQ2hhaW4iLCJjaGFpbldpdGgiLCJwIiwiQnVpbGRMb2NhbEVuZ2luZVRhc2siLCJidWlsZERlYnVnT25seSIsImNsaWVudFdlYnBhY2tDb25maWdUYXNrIiwiYnVpbGRDbGllbnRKc0NoYWluIiwiQnVpbGRDbGllbnRKc1Rhc2siLCJzdGF0aWNSZXNvdXJjZXNDaGFpbiIsIk9ic2VydmUiLCJmaWxlcyIsInBhdGgiLCJqb2luIiwiX19kaXJuYW1lIiwiZG8iLCJ4IiwiRlNUYXNrIiwiY29weVJlY3Vyc2l2ZWx5Iiwid2l0aFByZWZpeCIsInBpY2tMaXN0c0NoYWluIiwibG9nZ2VyIiwiZm9ybUdsb2JzIiwiRm9ybUdsb2JzIiwidmFsaWRhdGVHbG9icyIsInJlc29sdmVTcGVjaWZpZXJzIiwiYnVpbGRGb3Jtc0NoYWluIiwiZGlyZWN0b3J5Iiwic3BsaXRUb1BhcmFsbGVsQ2hhaW5zIiwiZ2Z2IiwiZm9ybURpclBhdGgiLCJmaWxlIiwidHJhbnNmb3JtIiwiZm9ybUpzb25GaWxlIiwiZ2VuZXJhdG9yU291cmNlIiwiZW5naW5lU291cmNlIiwiYXR0YWNoIiwiZmkiLCJ1bmRlZmluZWQiLCJ5IiwiZ2VuZXJhdG9yIiwiZm9ybVNvdXJjZXNQYXRoIiwiZGVwZW5kZW5jaWVzSGFzaCIsImdldEFsbERlcGVuZGVuY2llc0hhc2giLCJza2lwR2VuZXJhdGlvbiIsInNraXBDb2RlUmVmb3JtYXR0aW5nIiwic2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmciLCJyZXNvdXJjZXNIYXNoIiwiZm9ybU5hbWUiLCJ0aGVtZXMiLCJjb3B5RmlsZSIsIndhdGNoIiwic3RvcE9ic2VydmUxIiwib2JzZXJ2ZSIsInN0b3BPYnNlcnZlMiIsInN0b3BPYnNlcnZlMyIsInN0b3BPYnNlcnZlNCIsInN0b3BPYnNlcnZlNSIsIndhaXRGb3JFeGl0Iiwic3RhcnREYXRlIiwiRGF0ZSIsIm5vdyIsIlByb21pc2UiLCJhbGwiLCJjdXJyZW50VmFsdWUiLCJlIiwiY29udGludWVPbkVycm9yIiwiZXJyb3IiLCJ0b3RhbFRpbWUiLCJjb25zb2xlIiwibG9nIiwiY2hhbGsiLCJncmVlbkJyaWdodCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSU8sZUFBZUEsV0FBZixDQUNIQyxPQURHLEVBRUhDLE9BRkcsRUFHSEMsZUFIRyxFQUlIQyxrQkFKRyxFQUtIQyxhQUxHLEVBTUhDLHFCQU5HLEVBT0hDLG1CQVBHLEVBUVU7QUFDYixRQUFNQyxlQUFlLEdBQUdOLE9BQXhCO0FBRUEsUUFBTU8sdUJBQXVCLEdBQUcsTUFBTSx5REFBOEJOLGVBQTlCLENBQXRDO0FBQ0EsUUFBTU8sZ0JBQWdCLEdBQUdELHVCQUF1QixDQUFDRSxTQUF4QixDQUNyQkMsQ0FBQyxJQUFJLElBQUlDLDBDQUFKLENBQXlCRCxDQUF6QixFQUE0QlIsa0JBQTVCLEVBQWdERixPQUFPLENBQUNZLGNBQXhELENBRGdCLENBQXpCO0FBSUEsUUFBTUMsdUJBQXVCLEdBQUcsTUFBTSx5REFBOEJaLGVBQTlCLENBQXRDO0FBQ0EsUUFBTWEsa0JBQWtCLEdBQUdELHVCQUF1QixDQUFDSixTQUF4QixDQUFrQ0MsQ0FBQyxJQUFJLElBQUlLLG9DQUFKLENBQXNCTCxDQUF0QixFQUF5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T0FBTyxDQUFDQyxHQUFSLENBQVksQ0FDZDlELGdCQUFnQixDQUFDK0QsWUFESCxFQUVkekQsa0JBQWtCLENBQUN5RCxZQUZMLEVBR2R2RCxvQkFBb0IsQ0FBQ3VELFlBSFAsRUFJZCxDQUFDLFlBQVk7QUFDVCxVQUFJO0FBQ0EsY0FBTTVDLGNBQWMsQ0FBQzRDLFlBQXJCO0FBQ0EsY0FBTXRDLGVBQWUsQ0FBQ3NDLFlBQXRCO0FBQ0gsT0FIRCxDQUdFLE9BQU9DLENBQVAsRUFBVTtBQUNSLFlBQUl4RSxPQUFPLENBQUN5RSxlQUFaLEVBQTZCO0FBQ3pCMUUsVUFBQUEsT0FBTyxDQUFDNkIsTUFBUixDQUFlOEMsS0FBZixDQUFxQkYsQ0FBckI7QUFDSCxTQUZELE1BRU87QUFDSCxnQkFBTUEsQ0FBTjtBQUNIO0FBQ0o7QUFDSixLQVhELEdBSmMsQ0FBWixDQUFOO0FBaUJBLFVBQU1HLFNBQVMsR0FBR1IsSUFBSSxDQUFDQyxHQUFMLEtBQWFGLFNBQS9CLENBbkJHLENBb0JIOztBQUNBVSxJQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBYSxHQUFFQyxlQUFNQyxXQUFOLENBQWtCLGVBQWxCLENBQW1DLGdCQUFlLDRCQUFVSixTQUFWLENBQXFCLEVBQXRGO0FBQ0g7QUFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcblxuaW1wb3J0IHsgQnVpbGRDbGllbnRKc1Rhc2sgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9DbGllbnRKUy9CdWlsZENsaWVudEpzVGFza1wiO1xuaW1wb3J0IHsgQnVpbGRMb2NhbEVuZ2luZVRhc2sgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9FbmdpbmUvQnVpbGRMb2NhbEVuZ2luZVRhc2tcIjtcbmltcG9ydCB7IGNyZWF0ZUNsaWVudFdlYnBhY2tDb25maWdUYXNrLCBjcmVhdGVFbmdpbmVXZWJwYWNrQ29uZmlnVGFzayB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0VuZ2luZVN0cnVjdHVyZVV0aWxzXCI7XG5pbXBvcnQgeyBjb21waWxlRm9ybSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vQ29tcGlsZUZvcm1cIjtcbmltcG9ydCB7IGdlbmVyYXRlRm9ybSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vR2VuZXJhdGVGb3JtXCI7XG5pbXBvcnQgeyB3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Xcml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzXCI7XG5pbXBvcnQgeyBGU1Rhc2sgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9GU1Rhc2tcIjtcbmltcG9ydCB7IGdlbmVyYXRvckZhY3RvcnksIGdldEdlbmVyYXRvclNvdXJjZUtleSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0dlbmVyYXRvci9BY3F1aXJlRm9ybUdlbmVyYXRvclwiO1xuaW1wb3J0IHsgcmVzb2x2ZUxvY2FsRW5naW5lU291cmNlLCByZXNvbHZlTG9jYWxHZW5lcmF0b3JTb3VyY2UgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9QdWJsaXNoZWRWZXJzaW9uVXRpbHNcIjtcbmltcG9ydCB7IHJlc29sdmVGb3JtSW5mbyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1Jlc29sdmVGb3JtSW5mb1wiO1xuaW1wb3J0IHsgd3JpdGVGb3JtTWV0YSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1dyaXRlRm9ybU1ldGFcIjtcbmltcG9ydCB7IENvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHQgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Db25zb2xlQXBwbGljYXRpb24vQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dFwiO1xuaW1wb3J0IHsgRm9ybUdsb2JzIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvRm9ybUdsb2JzVXRpbHNcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvU3RhdGljTG9nZ2VyXCI7XG5pbXBvcnQgeyBPYnNlcnZlIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL09ic2VydmVcIjtcbmltcG9ydCB7IHByaW50VGltZSB9IGZyb20gXCIuLi8uLi9Db21tb25zL1RpbWluZ1V0aWxzXCI7XG5pbXBvcnQgeyB3cml0ZUF0dGFjaG1lbnRQYXRoRmlsZXMgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL1dyaXRlQXR0YWNobWVudFBhdGhGaWxlc1wiO1xuXG5pbXBvcnQgeyBEZXZlbG9wbWVudEJ1aWxkT3B0aW9ucyB9IGZyb20gXCIuL0RldkJ1aWxkT3B0aW9uc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuRGV2QnVpbGQoXG4gICAgY29udGV4dDogQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCxcbiAgICBvcHRpb25zOiBEZXZlbG9wbWVudEJ1aWxkT3B0aW9ucyxcbiAgICBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgY2FuZHlNb2R1bGVzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgaGxGYXJtRGlyZWN0b3J5UGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBkZXZCdWlsZE9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgY29uc3QgZW5naW5lV2VicGFja0NvbmZpZ1Rhc2sgPSBhd2FpdCBjcmVhdGVFbmdpbmVXZWJwYWNrQ29uZmlnVGFzayhlbmdpbmVEaXJlY3RvcnkpO1xuICAgIGNvbnN0IGJ1aWxkRW5naW5lQ2hhaW4gPSBlbmdpbmVXZWJwYWNrQ29uZmlnVGFzay5jaGFpbldpdGgoXG4gICAgICAgIHAgPT4gbmV3IEJ1aWxkTG9jYWxFbmdpbmVUYXNrKHAsIHJlc291cmNlc0RpcmVjdG9yeSwgb3B0aW9ucy5idWlsZERlYnVnT25seSlcbiAgICApO1xuXG4gICAgY29uc3QgY2xpZW50V2VicGFja0NvbmZpZ1Rhc2sgPSBhd2FpdCBjcmVhdGVDbGllbnRXZWJwYWNrQ29uZmlnVGFzayhlbmdpbmVEaXJlY3RvcnkpO1xuICAgIGNvbnN0IGJ1aWxkQ2xpZW50SnNDaGFpbiA9IGNsaWVudFdlYnBhY2tDb25maWdUYXNrLmNoYWluV2l0aChwID0+IG5ldyBCdWlsZENsaWVudEpzVGFzayhwLCByZXNvdXJjZXNEaXJlY3RvcnkpKTtcblxuICAgIGNvbnN0IHN0YXRpY1Jlc291cmNlc0NoYWluID0gT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcIi4uXCIsIFwiU3RhdGljRmlsZXNGb3JSZXNvdXJjZXNEaXJcIiksXG4gICAgICAgIFwiKi5qc1wiXG4gICAgKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNUQVRJQ1NcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicHVibGljXCIsIFwic2NyaXB0c1wiKSlcbiAgICApO1xuXG4gICAgY29uc3QgcGlja0xpc3RzQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcInBpY2tsaXN0c1wiKSwgXCIqLmpzb25cIikuZG8oeCA9PlxuICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoXCJQSUNLTElTVFNcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicGlja2xpc3RzXCIpKVxuICAgICk7XG5cbiAgICBjb25zdCBmb3JtR2xvYnMgPSBhd2FpdCBGb3JtR2xvYnMudmFsaWRhdGVHbG9icyhcbiAgICAgICAgYXdhaXQgRm9ybUdsb2JzLnJlc29sdmVTcGVjaWZpZXJzKG9wdGlvbnMuZm9ybUdsb2JzLCBmYXJtRGlyZWN0b3J5KSxcbiAgICAgICAgZmFybURpcmVjdG9yeVxuICAgICk7XG4gICAgY29uc3QgYnVpbGRGb3Jtc0NoYWluID0gT2JzZXJ2ZS5kaXJlY3RvcnkocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiksIGZvcm1HbG9icykuc3BsaXRUb1BhcmFsbGVsQ2hhaW5zKFxuICAgICAgICB4ID0+IHgsXG4gICAgICAgIHggPT4geCxcbiAgICAgICAgZ2Z2ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2KTtcblxuICAgICAgICAgICAgcmV0dXJuIE9ic2VydmUuZmlsZShwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwiZm9ybS5qc29uXCIpKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oZm9ybUpzb25GaWxlID0+IHJlc29sdmVGb3JtSW5mbyhmb3JtSnNvbkZpbGUsIGZvcm1EaXJQYXRoLCBlbmdpbmVEaXJlY3RvcnkpKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgeCA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAuLi54LFxuICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IHJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZShlbmdpbmVEaXJlY3RvcnkpLFxuICAgICAgICAgICAgICAgICAgICBlbmdpbmVTb3VyY2U6IHJlc29sdmVMb2NhbEVuZ2luZVNvdXJjZShlbmdpbmVEaXJlY3RvcnkpLFxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGdlbmVyYXRvckZhY3RvcnkoZmkuZ2VuZXJhdG9yU291cmNlLCBjYW5keU1vZHVsZXNEaXJlY3RvcnksIGZhbHNlLCB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyAoZmksIHkpID0+ICh7IC4uLmZpLCBnZW5lcmF0b3I6IHkgfSksXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGdldEdlbmVyYXRvclNvdXJjZUtleShmaS5nZW5lcmF0b3JTb3VyY2UpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4vY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzY2hlbWFzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3VnYXIvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb250cm9scy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImF1dG9jYWxjLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaGVscGVycy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZhbGlkYXRpb25zLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibG9jYWxpemF0aW9uLyoqLypcIlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgZmkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llc0hhc2g6IGF3YWl0IGZpLmdlbmVyYXRvci5nZXRBbGxEZXBlbmRlbmNpZXNIYXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURpclBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnNraXBHZW5lcmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZUZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtU291cmNlc1BhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwQ29kZVJlZm9ybWF0dGluZzogb3B0aW9ucy5za2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNIYXNoOiBmaS5kZXBlbmRlbmNpZXNIYXNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PiBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtXCIpLCBcIioqLypcIikpXG4gICAgICAgICAgICAgICAgLmRvKGZpID0+XG4gICAgICAgICAgICAgICAgICAgIGNvbXBpbGVGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS50aGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuYnVpbGREZWJ1Z09ubHlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZG8oZmkgPT4gd3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyhmaS5mb3JtTmFtZSwgZmFybURpcmVjdG9yeSwgcmVzb3VyY2VzRGlyZWN0b3J5KSlcbiAgICAgICAgICAgICAgICAuZG8oZmkgPT4gd3JpdGVBdHRhY2htZW50UGF0aEZpbGVzKGZpLmZvcm1OYW1lLCBmYXJtRGlyZWN0b3J5LCByZXNvdXJjZXNEaXJlY3RvcnkpKVxuICAgICAgICAgICAgICAgIC5kbyhmaSA9PiB3cml0ZUZvcm1NZXRhKHJlc291cmNlc0RpcmVjdG9yeSwgZ2Z2LCBmaS5lbmdpbmVTb3VyY2UsIGZpLmRlcGVuZGVuY2llc0hhc2gsIGZpLnRoZW1lcykpXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwic2NoZW1hc1wiKSwgXCIqLnJuZy54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiU0NIRU1BU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwic2NoZW1hc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcImNvbnZlcnRlcnNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJDT05WRVJURVJTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJjb252ZXJ0ZXJzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibWVyZ2Vyc1wiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk1FUkdFUlNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcIm1lcmdlcnNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZShwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInByZXNlbnRhdGlvbnMuanNvblwiKSkuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlGaWxlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJQUkVTRU5UQVRJT05TXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwcmVzZW50YXRpb25zXCIsIGAke2dmdn0ucHJlc2VudGF0aW9ucy5qc29uYClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJub3JtYWxpemVcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTk9STUFMSVpFXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJub3JtYWxpemVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJwYXRjaFwiKSwgXCIqLnhzbHRcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiUEFUQ0hcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInBhdGNoXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibWFwXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk1BUFwiKSwgeCwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJtYXBcIikpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwidW5tYXBcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiVU5NQVBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInVubWFwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgKTtcblxuICAgIGlmIChkZXZCdWlsZE9wdGlvbnMud2F0Y2gpIHtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUxID0gYXdhaXQgYnVpbGRFbmdpbmVDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMiA9IGF3YWl0IGJ1aWxkQ2xpZW50SnNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMyA9IGF3YWl0IHN0YXRpY1Jlc291cmNlc0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmU0ID0gYXdhaXQgYnVpbGRGb3Jtc0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmU1ID0gYXdhaXQgcGlja0xpc3RzQ2hhaW4ub2JzZXJ2ZSgpO1xuXG4gICAgICAgIGF3YWl0IGNvbnRleHQud2FpdEZvckV4aXQoKTtcblxuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTEoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUyKCk7XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMygpO1xuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTQoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmU1KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gRGF0ZS5ub3coKTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgYnVpbGRFbmdpbmVDaGFpbi5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgICBidWlsZENsaWVudEpzQ2hhaW4uY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgc3RhdGljUmVzb3VyY2VzQ2hhaW4uY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBwaWNrTGlzdHNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGJ1aWxkRm9ybXNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5jb250aW51ZU9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKCksXG4gICAgICAgIF0pO1xuICAgICAgICBjb25zdCB0b3RhbFRpbWUgPSBEYXRlLm5vdygpIC0gc3RhcnREYXRlO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmxvZyhgJHtjaGFsay5ncmVlbkJyaWdodChcIkJ1aWxkIHN1Y2Nlc3NcIil9IFRvdGFsIHRpbWU6ICR7cHJpbnRUaW1lKHRvdGFsVGltZSl9YCk7XG4gICAgfVxufVxuIl19
|