@kontur.candy/tools 2.175.0 → 2.176.1

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 CHANGED
@@ -1,3 +1,19 @@
1
+ <a name="2.176.1"></a>
2
+ ## [2.176.1](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.176.0...release/tools/v2.176.1) (2024-03-11)
3
+
4
+
5
+ ### Bug Fixes
6
+
7
+ * **Tools:** Исправлена медленная сборка форм ([72d9783](https://git.skbkontur.ru/ke/candy-utils/commit/72d9783))
8
+
9
+ <a name="2.176.0"></a>
10
+ # [2.176.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.175.0...release/tools/v2.176.0) (2024-03-10)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **Tools:** Мелкие доделки в формоцентричной сборке ([9c7cf1e](https://git.skbkontur.ru/ke/candy-utils/commit/9c7cf1e))
16
+
1
17
  <a name="2.175.0"></a>
2
18
  # [2.175.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.174.0...release/tools/v2.175.0) (2024-03-07)
3
19
 
@@ -41,9 +41,9 @@ function getGeneratorVersion(generatorSource) {
41
41
  async function runBuildForms(context, options, farmDirectory, resourcesDirectory, engineDirectory, candyModulesDirectory, hlFarmDirectoryPath) {
42
42
  const buildOptions = options;
43
43
  const pickListsChain = _Observe.Observe.files(_path.default.join(farmDirectory, "picklists"), "*.json").do(x => _FSTask.FSTask.copyRecursively(context.logger.withPrefix("PICKLISTS"), x, _path.default.join(resourcesDirectory, "picklists")));
44
- const formGlobs = await _FormGlobsUtils.FormGlobs.validateGlobs(await _FormGlobsUtils.FormGlobs.resolveSpecifiers(buildOptions.formGlobs, farmDirectory), farmDirectory);
44
+ await _FormGlobsUtils.FormGlobs.ensureEachGlobResolvesIntoExistingForm(buildOptions.formGlobs, farmDirectory);
45
+ const formGlobs = await _FormGlobsUtils.FormGlobs.resolveSpecifiers(buildOptions.formGlobs, farmDirectory);
45
46
  const staticResourcesForProductionChain = _Observe.Observe.files(_path.default.join(__dirname, "..", "..", "StaticFilesForProductionResourcesDir"), "*.js", "*.js.map").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("STATICS"), x, _path.default.join(resourcesDirectory, "public", "scripts")));
46
- const resourcesNuSpecChain = _Observe.Observe.files(_path.default.join(farmDirectory), "*.nuspec").do(x => _FSTask.FSTask.copyByMasks((0, _StaticLogger.getLogger)().withPrefix("NUSPEC"), x, ["*.nuspec"], _path.default.join(resourcesDirectory)));
47
47
 
48
48
  /** Конвертеры описи для форм, которые пока не реализованы на кенди, сама механика описи перенесена в формы в кенди апи, поэтому они должны быть в candy.resources
49
49
  * Реализуется только при общем билде форм: candy build *
@@ -197,7 +197,6 @@ async function runBuildForms(context, options, farmDirectory, resourcesDirectory
197
197
  const stopObserve1 = await pickListsChain.observe();
198
198
  const stopObserve2 = await buildFormsChain.observe();
199
199
  const stopObserve3 = await staticResourcesForProductionChain.observe();
200
- const stopObserve4 = await resourcesNuSpecChain.observe();
201
200
  const stopObserve5 = await resourcesExternalConvertersChain.observe();
202
201
  await context.waitForExit();
203
202
  if (stopObserve3 != undefined) {
@@ -219,7 +218,6 @@ async function runBuildForms(context, options, farmDirectory, resourcesDirectory
219
218
  }
220
219
  await pickListsChain.currentValue;
221
220
  await staticResourcesForProductionChain.currentValue;
222
- await resourcesNuSpecChain.currentValue;
223
221
  await resourcesExternalConvertersChain.currentValue;
224
222
  await buildFormsChain.currentValue;
225
223
  // eslint-disable-next-line no-console
@@ -236,4 +234,4 @@ async function cleanTargetDirectory(resourcesDirectory, logger) {
236
234
  await (0, _fsExtra.emptyDir)(resourcesDirectory);
237
235
  logger.log("Resource directory clean");
238
236
  }
239
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NoYWxrIiwiX2ZzRXh0cmEiLCJfbm9kZU5vdGlmaWVyIiwiX0FjcXVpcmVGb3JtRW5naW5lIiwiX0VuZ2luZVNvdXJjZSIsIl9Db21waWxlRm9ybSIsIl9HZW5lcmF0ZUZvcm0iLCJfTnVsbEZvcm1HZW5lcmF0b3IiLCJfV3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyIsIl9GU1Rhc2siLCJfQWNxdWlyZUZvcm1HZW5lcmF0b3IiLCJfUHVibGlzaGVkVmVyc2lvblV0aWxzIiwiX1Jlc29sdmVGb3JtSW5mbyIsIl9Xcml0ZUZvcm1NZXRhIiwiX0Zvcm1HbG9ic1V0aWxzIiwiX1N0YXRpY0xvZ2dlciIsIl9PYnNlcnZlIiwiX1NpbmdsZVZhbHVlUHJvZHVjZXIiLCJfVGltaW5nVXRpbHMiLCJfQ2FjaGVBc3NldHNQbHVnaW4iLCJfVHlwaW5nVXRpbHMiLCJfV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIiwiX2dldFJuZ1NjaGVtYUZpbGVuYW1lIiwiX0Zvcm1QYXRoVXRpbHMiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJnZXRHZW5lcmF0b3JWZXJzaW9uIiwiZ2VuZXJhdG9yU291cmNlIiwidHlwZSIsInZlcnNpb24iLCJFcnJvciIsInJ1bkJ1aWxkRm9ybXMiLCJjb250ZXh0Iiwib3B0aW9ucyIsImZhcm1EaXJlY3RvcnkiLCJyZXNvdXJjZXNEaXJlY3RvcnkiLCJlbmdpbmVEaXJlY3RvcnkiLCJjYW5keU1vZHVsZXNEaXJlY3RvcnkiLCJobEZhcm1EaXJlY3RvcnlQYXRoIiwiYnVpbGRPcHRpb25zIiwicGlja0xpc3RzQ2hhaW4iLCJPYnNlcnZlIiwiZmlsZXMiLCJwYXRoIiwiam9pbiIsImRvIiwieCIsIkZTVGFzayIsImNvcHlSZWN1cnNpdmVseSIsImxvZ2dlciIsIndpdGhQcmVmaXgiLCJmb3JtR2xvYnMiLCJGb3JtR2xvYnMiLCJ2YWxpZGF0ZUdsb2JzIiwicmVzb2x2ZVNwZWNpZmllcnMiLCJzdGF0aWNSZXNvdXJjZXNGb3JQcm9kdWN0aW9uQ2hhaW4iLCJfX2Rpcm5hbWUiLCJnZXRMb2dnZXIiLCJyZXNvdXJjZXNOdVNwZWNDaGFpbiIsImNvcHlCeU1hc2tzIiwicmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW4iLCJlbXB0eSIsImNvcGllZEVuZ2luZXMiLCJTZXQiLCJyZXBvc2l0b3J5Um9vdCIsImJ1aWxkQ2FjaGUiLCJCdWlsZENhY2hlIiwiYnVpbGRDYWNoZU1vZGUiLCJidWlsZEZvcm1zQ2hhaW4iLCJmb3JtRGlyZWN0b3JpZXMiLCJzcGxpdFRvUGFyYWxsZWxDaGFpbnMiLCJmb3JtUmVsYXRpdmVQYXRoIiwiZ2Z2IiwiZXh0cmFjdEdmdkZyb21Gb3JtUGF0aCIsImZvcm1EaXJQYXRoIiwicGF0aEV4aXN0cyIsIldlbGxLbm93bkRpcmVjdG9yaWVzIiwiRm9ybUpzb25GaWxlTmFtZSIsIndhcm5pbmciLCJ2YWx1ZSIsImZvcm1TY2hlbWFzRGlyUGF0aCIsInJuZ1NjaGVtYU1hc2siLCJnZXRSbmdTY2hlbWFGaWxlbmFtZSIsImZpbGUiLCJ0cmFuc2Zvcm0iLCJmb3JtSnNvbkZpbGUiLCJyZXNvbHZlRm9ybUluZm8iLCJ1cGdyYWRlRm9ybUpzb24iLCJ1c2VMYXN0U3RhYmxlVmVyc2lvbiIsInVzZVByZXJlbGVhc2VWZXJzaW9uIiwiZmkiLCJtb2RlIiwiRm9ybUJ1aWxkTW9kZSIsIk5vcm1hbEJ1aWxkIiwiZ2VuZXJhdG9yVmVyc2lvbiIsInVuZGVmaW5lZCIsImVuZ2luZVZlcnNpb24iLCJyZXNvbHZlR2VuZXJhdG9yVmVyc2lvbiIsImVuZ2luZVNvdXJjZSIsInJlc29sdmVFbmdpbmVWZXJzaW9uIiwiYXR0YWNoIiwiU2luZ2xlVmFsdWVQcm9kdWNlciIsIk51bGxGb3JtR2VuZXJhdG9yIiwiZ2VuZXJhdG9yRmFjdG9yeSIsInVzZVZlcnNpb25Gcm9tQ2FjaGUiLCJ5IiwiZ2VuZXJhdG9yIiwiZ2V0R2VuZXJhdG9yU291cmNlS2V5IiwiZW5naW5lRmFjdG9yeSIsImhhcyIsImdldEVuZ2luZVNvdXJjZUtleSIsImFkZCIsImZvcm1Tb3VyY2VzUGF0aCIsImRlcGVuZGVuY2llc0hhc2giLCJzdXBwb3J0c0RlcGVuZGVuY2llc0V4dHJhY3Rpb24iLCJnZXRBbGxEZXBlbmRlbmNpZXNIYXNoIiwiYnVpbGRDYWNoZUV4aXN0IiwiZXhpc3RzIiwiX2ZpJGRlcGVuZGVuY2llc0hhc2giLCJsb2ciLCJnZW5lcmF0ZUZvcm0iLCJza2lwQ29kZVJlZm9ybWF0dGluZyIsInNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nIiwicmVzb3VyY2VzSGFzaCIsIl9maSRkZXBlbmRlbmNpZXNIYXNoMiIsIl9maSRkZXBlbmRlbmNpZXNIYXNoMyIsImV4dHJhY3QiLCJidWlsZENhY2hlT3B0aW9ucyIsImRlcHNIYXNoIiwiY29tcGlsZUZvcm0iLCJmb3JtTmFtZSIsInRoZW1lcyIsInJlamVjdCIsIndyaXRlRm9ybU1ldGEiLCJ3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIiwid3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIiwiQ29weUxlZ2FjeVByZWJ1aWx0UmVzb3VyY2VzIiwibW9kaWZpZXIiLCJjb250ZW50IiwicmVwbGFjZSIsIm1vZGlmeUZpbGVzQ29udGVudCIsIndhdGNoIiwibm90aWZpZXIiLCJub3RpZnkiLCJ0aXRsZSIsIm1lc3NhZ2UiLCJjbGVhbiIsImNsZWFuVGFyZ2V0RGlyZWN0b3J5Iiwic3RvcE9ic2VydmUxIiwib2JzZXJ2ZSIsInN0b3BPYnNlcnZlMiIsInN0b3BPYnNlcnZlMyIsInN0b3BPYnNlcnZlNCIsInN0b3BPYnNlcnZlNSIsIndhaXRGb3JFeGl0Iiwic3RhcnREYXRlIiwiRGF0ZSIsIm5vdyIsImN1cnJlbnRWYWx1ZSIsImNvbnNvbGUiLCJjaGFsayIsImdyZWVuQnJpZ2h0IiwidG90YWxUaW1lIiwicHJpbnRUaW1lIiwiZW1wdHlEaXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQ0xJQ29tbWFuZHMvQnVpbGRGb3Jtcy9SdW5CdWlsZEZvcm1zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB7IGVtcHR5RGlyLCBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgbm90aWZpZXIgZnJvbSBcIm5vZGUtbm90aWZpZXJcIjtcblxuaW1wb3J0IHsgZW5naW5lRmFjdG9yeSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0VuZ2luZS9BY3F1aXJlRm9ybUVuZ2luZVwiO1xuaW1wb3J0IHsgZ2V0RW5naW5lU291cmNlS2V5IH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRW5naW5lL0VuZ2luZVNvdXJjZVwiO1xuaW1wb3J0IHsgY29tcGlsZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0NvbXBpbGVGb3JtXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0dlbmVyYXRlRm9ybVwiO1xuaW1wb3J0IHsgTnVsbEZvcm1HZW5lcmF0b3IgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL051bGxGb3JtR2VuZXJhdG9yXCI7XG5pbXBvcnQgeyB3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Xcml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzXCI7XG5pbXBvcnQgeyBGU1Rhc2sgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9GU1Rhc2tcIjtcbmltcG9ydCB7XG4gICAgZ2VuZXJhdG9yRmFjdG9yeSxcbiAgICBHZW5lcmF0b3JTb3VyY2UsXG4gICAgZ2V0R2VuZXJhdG9yU291cmNlS2V5LFxufSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9HZW5lcmF0b3IvQWNxdWlyZUZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7IHJlc29sdmVFbmdpbmVWZXJzaW9uLCByZXNvbHZlR2VuZXJhdG9yVmVyc2lvbiB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1B1Ymxpc2hlZFZlcnNpb25VdGlsc1wiO1xuaW1wb3J0IHsgRm9ybUJ1aWxkTW9kZSwgcmVzb2x2ZUZvcm1JbmZvIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyB3cml0ZUZvcm1NZXRhIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvV3JpdGVGb3JtTWV0YVwiO1xuaW1wb3J0IHsgQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gXCIuLi8uLi9Db21tb25zL0NvbnNvbGVBcHBsaWNhdGlvbi9Db25zb2xlQXBwbGljYXRpb25Db250ZXh0XCI7XG5pbXBvcnQgeyBGb3JtR2xvYnMgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Gb3JtR2xvYnNVdGlsc1wiO1xuaW1wb3J0IHsgSUxvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvSUxvZ2dlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcbmltcG9ydCB7IE9ic2VydmUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvT2JzZXJ2ZVwiO1xuaW1wb3J0IHsgU2luZ2xlVmFsdWVQcm9kdWNlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9TaW5nbGVWYWx1ZVByb2R1Y2VyXCI7XG5pbXBvcnQgeyBwcmludFRpbWUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UaW1pbmdVdGlsc1wiO1xuaW1wb3J0IHsgQnVpbGRDYWNoZSB9IGZyb20gXCIuLi8uLi9Gb3JtV2VicGFja0NvbmZpZ3VyYXRpb24vQ2FjaGVBc3NldHNQbHVnaW5cIjtcbmltcG9ydCB7IHJlamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vVHlwaW5nVXRpbHNcIjtcbmltcG9ydCB7IHdyaXRlQXR0YWNobWVudFBhdGhGaWxlcyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzXCI7XG5pbXBvcnQgeyBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL0NoYWluYWJsZVZhbHVlUHJvZHVjZXJcIjtcbmltcG9ydCB7IEVtcHR5UHJvZHVjZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvRW1wdHlQcm9kdWNlclwiO1xuaW1wb3J0IHsgZ2V0Um5nU2NoZW1hRmlsZW5hbWUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL2dldFJuZ1NjaGVtYUZpbGVuYW1lXCI7XG5pbXBvcnQgeyBleHRyYWN0R2Z2RnJvbUZvcm1QYXRoIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9Gb3JtUGF0aFV0aWxzXCI7XG5pbXBvcnQgeyBXZWxsS25vd25EaXJlY3RvcmllcyB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vV2VsbEtub3duRGlyZWN0b3JpZXNcIjtcblxuaW1wb3J0IHsgQnVpbGRGb3Jtc09wdGlvbnMgfSBmcm9tIFwiLi9CdWlsZEZvcm1zT3B0aW9uc1wiO1xuXG5mdW5jdGlvbiBnZXRHZW5lcmF0b3JWZXJzaW9uKGdlbmVyYXRvclNvdXJjZTogR2VuZXJhdG9yU291cmNlKTogc3RyaW5nIHtcbiAgICBpZiAoZ2VuZXJhdG9yU291cmNlLnR5cGUgPT09IFwiUHVibGlzaGVkR2VuZXJhdG9yXCIpIHtcbiAgICAgICAgcmV0dXJuIGdlbmVyYXRvclNvdXJjZS52ZXJzaW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWRQcm9ncmFtU3RhdGVcIik7XG4gICAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuQnVpbGRGb3JtcyhcbiAgICBjb250ZXh0OiBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0LFxuICAgIG9wdGlvbnM6IEJ1aWxkRm9ybXNPcHRpb25zLFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBobEZhcm1EaXJlY3RvcnlQYXRoOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGJ1aWxkT3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCBwaWNrTGlzdHNDaGFpbiA9IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwicGlja2xpc3RzXCIpLCBcIiouanNvblwiKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChcIlBJQ0tMSVNUU1wiKSwgeCwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwaWNrbGlzdHNcIikpXG4gICAgKTtcblxuICAgIGNvbnN0IGZvcm1HbG9icyA9IGF3YWl0IEZvcm1HbG9icy52YWxpZGF0ZUdsb2JzKFxuICAgICAgICBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZVNwZWNpZmllcnMoYnVpbGRPcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSksXG4gICAgICAgIGZhcm1EaXJlY3RvcnlcbiAgICApO1xuXG4gICAgY29uc3Qgc3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluID0gT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcIi4uXCIsIFwiU3RhdGljRmlsZXNGb3JQcm9kdWN0aW9uUmVzb3VyY2VzRGlyXCIpLFxuICAgICAgICBcIiouanNcIixcbiAgICAgICAgXCIqLmpzLm1hcFwiXG4gICAgKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNUQVRJQ1NcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicHVibGljXCIsIFwic2NyaXB0c1wiKSlcbiAgICApO1xuXG4gICAgY29uc3QgcmVzb3VyY2VzTnVTcGVjQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5KSwgXCIqLm51c3BlY1wiKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5QnlNYXNrcyhnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTlVTUEVDXCIpLCB4LCBbXCIqLm51c3BlY1wiXSwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSkpXG4gICAgKTtcblxuICAgIC8qKiDQmtC+0L3QstC10YDRgtC10YDRiyDQvtC/0LjRgdC4INC00LvRjyDRhNC+0YDQvCwg0LrQvtGC0L7RgNGL0LUg0L/QvtC60LAg0L3QtSDRgNC10LDQu9C40LfQvtCy0LDQvdGLINC90LAg0LrQtdC90LTQuCwg0YHQsNC80LAg0LzQtdGF0LDQvdC40LrQsCDQvtC/0LjRgdC4INC/0LXRgNC10L3QtdGB0LXQvdCwINCyINGE0L7RgNC80Ysg0LIg0LrQtdC90LTQuCDQsNC/0LgsINC/0L7RjdGC0L7QvNGDINC+0L3QuCDQtNC+0LvQttC90Ysg0LHRi9GC0Ywg0LIgY2FuZHkucmVzb3VyY2VzXG4gICAgICogINCg0LXQsNC70LjQt9GD0LXRgtGB0Y8g0YLQvtC70YzQutC+INC/0YDQuCDQvtCx0YnQtdC8INCx0LjQu9C00LUg0YTQvtGA0Lw6IGNhbmR5IGJ1aWxkICpcbiAgICAgKiAqL1xuICAgIGxldCByZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbjogQ2hhaW5hYmxlVmFsdWVQcm9kdWNlcjxzdHJpbmc+IHwgRW1wdHlQcm9kdWNlciA9IE9ic2VydmUuZW1wdHkoKTtcbiAgICBpZiAoZm9ybUdsb2JzWzBdID09PSBcIipcIikge1xuICAgICAgICByZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbiA9IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZXh0ZXJuYWxDb252ZXJ0ZXJzXCIpLCBcIioueHNsdFwiKS5kbyhcbiAgICAgICAgICAgIHggPT5cbiAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiRVhURVJOQUwtQ09OVkVSVEVSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJjb252ZXJ0ZXJzXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGNvcGllZEVuZ2luZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGNvbnN0IHJlcG9zaXRvcnlSb290ID0gcGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiLi5cIik7XG4gICAgY29uc3QgYnVpbGRDYWNoZSA9IG5ldyBCdWlsZENhY2hlKGZhcm1EaXJlY3RvcnksIG9wdGlvbnMuYnVpbGRDYWNoZU1vZGUpO1xuICAgIGNvbnN0IGJ1aWxkRm9ybXNDaGFpbiA9IE9ic2VydmUuZm9ybURpcmVjdG9yaWVzKHJlcG9zaXRvcnlSb290LCBmb3JtR2xvYnMpLnNwbGl0VG9QYXJhbGxlbENoYWlucyhcbiAgICAgICAgeCA9PiB4LFxuICAgICAgICB4ID0+IHgsXG4gICAgICAgIGFzeW5jIGZvcm1SZWxhdGl2ZVBhdGggPT4ge1xuICAgICAgICAgICAgY29uc3QgZ2Z2ID0gZXh0cmFjdEdmdkZyb21Gb3JtUGF0aChmb3JtUmVsYXRpdmVQYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKHJlcG9zaXRvcnlSb290LCBmb3JtUmVsYXRpdmVQYXRoKTtcblxuICAgICAgICAgICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhwYXRoLmpvaW4oZm9ybURpclBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpKSkpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53YXJuaW5nKFxuICAgICAgICAgICAgICAgICAgICBgRm9ybSAke2dmdn0gZG9lcyBub3QgaGF2ZSBmb3JtLmpzb24gZmlsZS4gVG8gaW5jbHVkZSB0aGlzIGZvcm0gdG8gYnVpbGQgcHJvY2VzcyByZXN0YXJ0IGJ1aWxkYFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmUudmFsdWUoe30pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZm9ybVNjaGVtYXNEaXJQYXRoID0gcGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcInNjaGVtYXNcIik7XG4gICAgICAgICAgICBjb25zdCBybmdTY2hlbWFNYXNrID0gYCoke2dldFJuZ1NjaGVtYUZpbGVuYW1lKGZvcm1TY2hlbWFzRGlyUGF0aCwgZ2Z2KX1gO1xuXG4gICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS5maWxlKHBhdGguam9pbihmb3JtRGlyUGF0aCwgV2VsbEtub3duRGlyZWN0b3JpZXMuRm9ybUpzb25GaWxlTmFtZSkpXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShmb3JtSnNvbkZpbGUgPT5cbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZUZvcm1JbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUpzb25GaWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURpclBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmdpbmVEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGBGT1JNOiR7Z2Z2fWApLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51cGdyYWRlRm9ybUpzb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVzZUxhc3RTdGFibGVWZXJzaW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51c2VQcmVyZWxlYXNlVmVyc2lvblxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkubW9kZSA9PT0gRm9ybUJ1aWxkTW9kZS5Ob3JtYWxCdWlsZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZ2VuZXJhdG9yVmVyc2lvbiBpcyBub3QgZGVmaW5lZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaS5lbmdpbmVWZXJzaW9uID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImVuZ2luZVZlcnNpb24gaXMgbm90IGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclNvdXJjZTogYXdhaXQgcmVzb2x2ZUdlbmVyYXRvclZlcnNpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvclZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoZ2Z2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiBhd2FpdCByZXNvbHZlRW5naW5lVmVyc2lvbihmaS5lbmdpbmVWZXJzaW9uLCBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGdmdikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2luZ2xlVmFsdWVQcm9kdWNlcihuZXcgTnVsbEZvcm1HZW5lcmF0b3IoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3JGYWN0b3J5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3JTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51c2VWZXJzaW9uRnJvbUNhY2hlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgKGZpLCB5KSA9PiAoeyAuLi5maSwgZ2VuZXJhdG9yOiB5IH0pLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yU291cmNlICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0R2VuZXJhdG9yU291cmNlS2V5KGZpLmdlbmVyYXRvclNvdXJjZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiTnVsbEZvcm1HZW5lcmF0b3JcIlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZW5naW5lU291cmNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVZhbHVlUHJvZHVjZXIoXCJOdWxsRW5naW5lXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVuZ2luZUZhY3RvcnkoZmkuZW5naW5lU291cmNlLCBjYW5keU1vZHVsZXNEaXJlY3RvcnksIG9wdGlvbnMudXNlVmVyc2lvbkZyb21DYWNoZSkuZG8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgeCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29waWVkRW5naW5lcy5oYXMoZ2V0RW5naW5lU291cmNlS2V5KGZpLmVuZ2luZVNvdXJjZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJFTkdJTkVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInB1YmxpY1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcGllZEVuZ2luZXMuYWRkKGdldEVuZ2luZVNvdXJjZUtleShmaS5lbmdpbmVTb3VyY2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGZpLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiAoZmkuZW5naW5lU291cmNlICE9IHVuZGVmaW5lZCA/IGdldEVuZ2luZVNvdXJjZUtleShmaS5lbmdpbmVTb3VyY2UpIDogXCJOdWxsRW5naW5lXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4vY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIuLi8uLi94c2x0VGVtcGxhdGVzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4vanNIZWxwZXJzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic2NoZW1hcy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInN1Z2FyLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhdXRvY2FsYy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImhlbHBlcnMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ2YWxpZGF0aW9ucy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImxvY2FsaXphdGlvbi8qKi8qXCJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRlcGVuZGVuY2llc0hhc2g6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLm1vZGUgIT09IEZvcm1CdWlsZE1vZGUuTm9ybWFsQnVpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzSGFzaDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYXdhaXQgZmkuZ2VuZXJhdG9yLnN1cHBvcnRzRGVwZW5kZW5jaWVzRXh0cmFjdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNIYXNoID0gYXdhaXQgZmkuZ2VuZXJhdG9yLmdldEFsbERlcGVuZGVuY2llc0hhc2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURpclBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llc0hhc2g6IGRlcGVuZGVuY2llc0hhc2gsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGJ1aWxkQ2FjaGVFeGlzdDogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZGVwZW5kZW5jaWVzSGFzaCAhPSB1bmRlZmluZWQgJiYgZmkuZ2VuZXJhdG9yU291cmNlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZUV4aXN0ID0gYXdhaXQgYnVpbGRDYWNoZS5leGlzdHMoZmkuZ2VuZXJhdG9yU291cmNlLCBnZnYsIGZpLmRlcGVuZGVuY2llc0hhc2gpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVFeGlzdDogYnVpbGRDYWNoZUV4aXN0LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclNvdXJjZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmJ1aWxkQ2FjaGVFeGlzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChgR0VORVJBVEU6JHtnZnZ9YCkubG9nKFwiU2tpcHBlZCBkdWUgYnVpbGQgY2FjaGUgZXhpdHNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBDb2RlUmVmb3JtYXR0aW5nOiBvcHRpb25zLnNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0hhc2g6IGZpLmRlcGVuZGVuY2llc0hhc2ggPz8gXCJVbmRlZmluZWRSZXNvdXJjZXNIYXNoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm1cIiksIFwiKiovKlwiKSlcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZCAmJiBmaS5idWlsZENhY2hlRXhpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYENPTVBJTEU6JHtnZnZ9YCkubG9nKFwiU2tpcHBlZCBkdWUgYnVpbGQgY2FjaGUgZXhpc3RzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgYnVpbGRDYWNoZS5leHRyYWN0KGZpLmdlbmVyYXRvclNvdXJjZSwgZ2Z2LCBmaS5kZXBlbmRlbmNpZXNIYXNoLCByZXNvdXJjZXNEaXJlY3RvcnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1aWxkQ2FjaGVPcHRpb25zID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwc0hhc2g6IGZpLmRlcGVuZGVuY2llc0hhc2gsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yVmVyc2lvbjogZ2V0R2VuZXJhdG9yVmVyc2lvbihmaS5nZW5lcmF0b3JTb3VyY2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmdjogZ2Z2LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6IG9wdGlvbnMuYnVpbGRDYWNoZU1vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeTogZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBjb21waWxlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkudGhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGlzIHZlcnNpb24gb2YgZ2VuZXJhdG9yIGlzIG5vdCBzdXBwb3J0ZWQgZHVlIHRvIGRlcGVuZGVuY2llcyBleHRyYWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGb3JtTWV0YShcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdmdixcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmVuZ2luZVNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhpcyB2ZXJzaW9uIG9mIGdlbmVyYXRvciBpcyBub3Qgc3VwcG9ydGVkIGR1ZSB0byBkZXBlbmRlbmNpZXMgZXh0cmFjdGlvbiBpcyBub3Qgc3VwcG9ydGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkudGhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1aWxkQ2FjaGVPcHRpb25zID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwc0hhc2g6IGZpLmRlcGVuZGVuY2llc0hhc2gsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yVmVyc2lvbjogZ2V0R2VuZXJhdG9yVmVyc2lvbihmaS5nZW5lcmF0b3JTb3VyY2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmdjogZ2Z2LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6IG9wdGlvbnMuYnVpbGRDYWNoZU1vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeTogZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuYnVpbGRDYWNoZUV4aXN0XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlQXR0YWNobWVudFBhdGhGaWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLm1vZGUgPT09IEZvcm1CdWlsZE1vZGUuQ29weUxlZ2FjeVByZWJ1aWx0UmVzb3VyY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcImxlZ2FjeS1wcmVidWlsdFwiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTEVHQUNZLVBSRUJVSUxUXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVZhbHVlUHJvZHVjZXIoXCJcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInNjaGVtYXNcIiksIHJuZ1NjaGVtYU1hc2spLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNDSEVNQVNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInNjaGVtYXNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJjb252ZXJ0ZXJzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiQ09OVkVSVEVSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm1lcmdlcnNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJNRVJHRVJTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJtZXJnZXJzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGlmaWVyID0gKGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC5yZXBsYWNlKC88eDppbmNsdWRlIGhyZWY9XCJbLi9dKy9nLCAnPHg6aW5jbHVkZSBocmVmPVwiJyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwiY29udmVydGVyc1wiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5tb2RpZnlGaWxlc0NvbnRlbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkZJWC1YU0xULUlOQ0xVREVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcImNvbnZlcnRlcnNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIqKi8qLnhzbHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwiLi5cIiwgXCIuLlwiLCBcInhzbHRUZW1wbGF0ZXNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJYU0xULVRFTVBMQVRFU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiLCBcInhzbHRUZW1wbGF0ZXNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJub3JtYWxpemVcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTk9STUFMSVpFXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJub3JtYWxpemVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJwYXRjaFwiKSwgXCIqLnhzbHRcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiUEFUQ0hcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInBhdGNoXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibWFwXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk1BUFwiKSwgeCwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJtYXBcIikpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwidW5tYXBcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiVU5NQVBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInVubWFwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJ1aWxkT3B0aW9ucy53YXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpZXIubm90aWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYCR7ZmkuZm9ybU5hbWV9OiDRgdCx0L7RgNC60LAg0LfQsNCy0LXRgNGI0LXQvdCwYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBgRW5naW5lOiAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5lbmdpbmVTb3VyY2UgPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiW05vRW5naW5lXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGZpLmVuZ2luZVNvdXJjZS50eXBlID09PSBcIkxvY2FsRW5naW5lU291cmNlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwibG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmaS5lbmdpbmVTb3VyY2UudmVyc2lvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBpZiAoYnVpbGRPcHRpb25zLndhdGNoKSB7XG4gICAgICAgIGlmIChvcHRpb25zLmNsZWFuKSB7XG4gICAgICAgICAgICBhd2FpdCBjbGVhblRhcmdldERpcmVjdG9yeShyZXNvdXJjZXNEaXJlY3RvcnksIGNvbnRleHQubG9nZ2VyKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTEgPSBhd2FpdCBwaWNrTGlzdHNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMiA9IGF3YWl0IGJ1aWxkRm9ybXNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMyA9IGF3YWl0IHN0YXRpY1Jlc291cmNlc0ZvclByb2R1Y3Rpb25DaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlNCA9IGF3YWl0IHJlc291cmNlc051U3BlY0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmU1ID0gYXdhaXQgcmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBhd2FpdCBjb250ZXh0LndhaXRGb3JFeGl0KCk7XG4gICAgICAgIGlmIChzdG9wT2JzZXJ2ZTMgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RvcE9ic2VydmU0ICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYXdhaXQgc3RvcE9ic2VydmU0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0b3BPYnNlcnZlNSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlNSgpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMigpO1xuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTEoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzdGFydERhdGUgPSBEYXRlLm5vdygpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuY2xlYW4pIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBjbGVhblRhcmdldERpcmVjdG9yeShyZXNvdXJjZXNEaXJlY3RvcnksIGNvbnRleHQubG9nZ2VyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHBpY2tMaXN0c0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHN0YXRpY1Jlc291cmNlc0ZvclByb2R1Y3Rpb25DaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBhd2FpdCByZXNvdXJjZXNOdVNwZWNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBhd2FpdCByZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBhd2FpdCBidWlsZEZvcm1zQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuQnJpZ2h0KFwiQnVpbGQgc3VjY2Vzc1wiKSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBjb25zdCB0b3RhbFRpbWUgPSBEYXRlLm5vdygpIC0gc3RhcnREYXRlO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBUb3RhbCB0aW1lOiAke3ByaW50VGltZSh0b3RhbFRpbWUpfWApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBjbGVhblRhcmdldERpcmVjdG9yeShyZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZywgbG9nZ2VyOiBJTG9nZ2VyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbG9nZ2VyLmxvZyhcIkNsZWFuaW5nIHJlc291cmNlIGRpcmVjdG9yeS4gXCIgKyByZXNvdXJjZXNEaXJlY3RvcnkpO1xuICAgIGF3YWl0IGVtcHR5RGlyKHJlc291cmNlc0RpcmVjdG9yeSk7XG4gICAgbG9nZ2VyLmxvZyhcIlJlc291cmNlIGRpcmVjdG9yeSBjbGVhblwiKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLE1BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFFBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLGFBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFJLGtCQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxhQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxZQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxhQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxrQkFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsNkJBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLE9BQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLHFCQUFBLEdBQUFYLE9BQUE7QUFLQSxJQUFBWSxzQkFBQSxHQUFBWixPQUFBO0FBQ0EsSUFBQWEsZ0JBQUEsR0FBQWIsT0FBQTtBQUNBLElBQUFjLGNBQUEsR0FBQWQsT0FBQTtBQUVBLElBQUFlLGVBQUEsR0FBQWYsT0FBQTtBQUVBLElBQUFnQixhQUFBLEdBQUFoQixPQUFBO0FBQ0EsSUFBQWlCLFFBQUEsR0FBQWpCLE9BQUE7QUFDQSxJQUFBa0Isb0JBQUEsR0FBQWxCLE9BQUE7QUFDQSxJQUFBbUIsWUFBQSxHQUFBbkIsT0FBQTtBQUNBLElBQUFvQixrQkFBQSxHQUFBcEIsT0FBQTtBQUNBLElBQUFxQixZ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
237
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NoYWxrIiwiX2ZzRXh0cmEiLCJfbm9kZU5vdGlmaWVyIiwiX0FjcXVpcmVGb3JtRW5naW5lIiwiX0VuZ2luZVNvdXJjZSIsIl9Db21waWxlRm9ybSIsIl9HZW5lcmF0ZUZvcm0iLCJfTnVsbEZvcm1HZW5lcmF0b3IiLCJfV3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyIsIl9GU1Rhc2siLCJfQWNxdWlyZUZvcm1HZW5lcmF0b3IiLCJfUHVibGlzaGVkVmVyc2lvblV0aWxzIiwiX1Jlc29sdmVGb3JtSW5mbyIsIl9Xcml0ZUZvcm1NZXRhIiwiX0Zvcm1HbG9ic1V0aWxzIiwiX1N0YXRpY0xvZ2dlciIsIl9PYnNlcnZlIiwiX1NpbmdsZVZhbHVlUHJvZHVjZXIiLCJfVGltaW5nVXRpbHMiLCJfQ2FjaGVBc3NldHNQbHVnaW4iLCJfVHlwaW5nVXRpbHMiLCJfV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIiwiX2dldFJuZ1NjaGVtYUZpbGVuYW1lIiwiX0Zvcm1QYXRoVXRpbHMiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJnZXRHZW5lcmF0b3JWZXJzaW9uIiwiZ2VuZXJhdG9yU291cmNlIiwidHlwZSIsInZlcnNpb24iLCJFcnJvciIsInJ1bkJ1aWxkRm9ybXMiLCJjb250ZXh0Iiwib3B0aW9ucyIsImZhcm1EaXJlY3RvcnkiLCJyZXNvdXJjZXNEaXJlY3RvcnkiLCJlbmdpbmVEaXJlY3RvcnkiLCJjYW5keU1vZHVsZXNEaXJlY3RvcnkiLCJobEZhcm1EaXJlY3RvcnlQYXRoIiwiYnVpbGRPcHRpb25zIiwicGlja0xpc3RzQ2hhaW4iLCJPYnNlcnZlIiwiZmlsZXMiLCJwYXRoIiwiam9pbiIsImRvIiwieCIsIkZTVGFzayIsImNvcHlSZWN1cnNpdmVseSIsImxvZ2dlciIsIndpdGhQcmVmaXgiLCJGb3JtR2xvYnMiLCJlbnN1cmVFYWNoR2xvYlJlc29sdmVzSW50b0V4aXN0aW5nRm9ybSIsImZvcm1HbG9icyIsInJlc29sdmVTcGVjaWZpZXJzIiwic3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluIiwiX19kaXJuYW1lIiwiZ2V0TG9nZ2VyIiwicmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW4iLCJlbXB0eSIsImNvcGllZEVuZ2luZXMiLCJTZXQiLCJyZXBvc2l0b3J5Um9vdCIsImJ1aWxkQ2FjaGUiLCJCdWlsZENhY2hlIiwiYnVpbGRDYWNoZU1vZGUiLCJidWlsZEZvcm1zQ2hhaW4iLCJmb3JtRGlyZWN0b3JpZXMiLCJzcGxpdFRvUGFyYWxsZWxDaGFpbnMiLCJmb3JtUmVsYXRpdmVQYXRoIiwiZ2Z2IiwiZXh0cmFjdEdmdkZyb21Gb3JtUGF0aCIsImZvcm1EaXJQYXRoIiwicGF0aEV4aXN0cyIsIldlbGxLbm93bkRpcmVjdG9yaWVzIiwiRm9ybUpzb25GaWxlTmFtZSIsIndhcm5pbmciLCJ2YWx1ZSIsImZvcm1TY2hlbWFzRGlyUGF0aCIsInJuZ1NjaGVtYU1hc2siLCJnZXRSbmdTY2hlbWFGaWxlbmFtZSIsImZpbGUiLCJ0cmFuc2Zvcm0iLCJmb3JtSnNvbkZpbGUiLCJyZXNvbHZlRm9ybUluZm8iLCJ1cGdyYWRlRm9ybUpzb24iLCJ1c2VMYXN0U3RhYmxlVmVyc2lvbiIsInVzZVByZXJlbGVhc2VWZXJzaW9uIiwiZmkiLCJtb2RlIiwiRm9ybUJ1aWxkTW9kZSIsIk5vcm1hbEJ1aWxkIiwiZ2VuZXJhdG9yVmVyc2lvbiIsInVuZGVmaW5lZCIsImVuZ2luZVZlcnNpb24iLCJyZXNvbHZlR2VuZXJhdG9yVmVyc2lvbiIsImVuZ2luZVNvdXJjZSIsInJlc29sdmVFbmdpbmVWZXJzaW9uIiwiYXR0YWNoIiwiU2luZ2xlVmFsdWVQcm9kdWNlciIsIk51bGxGb3JtR2VuZXJhdG9yIiwiZ2VuZXJhdG9yRmFjdG9yeSIsInVzZVZlcnNpb25Gcm9tQ2FjaGUiLCJ5IiwiZ2VuZXJhdG9yIiwiZ2V0R2VuZXJhdG9yU291cmNlS2V5IiwiZW5naW5lRmFjdG9yeSIsImhhcyIsImdldEVuZ2luZVNvdXJjZUtleSIsImFkZCIsImZvcm1Tb3VyY2VzUGF0aCIsImRlcGVuZGVuY2llc0hhc2giLCJzdXBwb3J0c0RlcGVuZGVuY2llc0V4dHJhY3Rpb24iLCJnZXRBbGxEZXBlbmRlbmNpZXNIYXNoIiwiYnVpbGRDYWNoZUV4aXN0IiwiZXhpc3RzIiwiX2ZpJGRlcGVuZGVuY2llc0hhc2giLCJsb2ciLCJnZW5lcmF0ZUZvcm0iLCJza2lwQ29kZVJlZm9ybWF0dGluZyIsInNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nIiwicmVzb3VyY2VzSGFzaCIsIl9maSRkZXBlbmRlbmNpZXNIYXNoMiIsIl9maSRkZXBlbmRlbmNpZXNIYXNoMyIsImV4dHJhY3QiLCJidWlsZENhY2hlT3B0aW9ucyIsImRlcHNIYXNoIiwiY29tcGlsZUZvcm0iLCJmb3JtTmFtZSIsInRoZW1lcyIsInJlamVjdCIsIndyaXRlRm9ybU1ldGEiLCJ3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIiwid3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIiwiQ29weUxlZ2FjeVByZWJ1aWx0UmVzb3VyY2VzIiwibW9kaWZpZXIiLCJjb250ZW50IiwicmVwbGFjZSIsIm1vZGlmeUZpbGVzQ29udGVudCIsIndhdGNoIiwibm90aWZpZXIiLCJub3RpZnkiLCJ0aXRsZSIsIm1lc3NhZ2UiLCJjbGVhbiIsImNsZWFuVGFyZ2V0RGlyZWN0b3J5Iiwic3RvcE9ic2VydmUxIiwib2JzZXJ2ZSIsInN0b3BPYnNlcnZlMiIsInN0b3BPYnNlcnZlMyIsInN0b3BPYnNlcnZlNSIsIndhaXRGb3JFeGl0Iiwic3RvcE9ic2VydmU0Iiwic3RhcnREYXRlIiwiRGF0ZSIsIm5vdyIsImN1cnJlbnRWYWx1ZSIsImNvbnNvbGUiLCJjaGFsayIsImdyZWVuQnJpZ2h0IiwidG90YWxUaW1lIiwicHJpbnRUaW1lIiwiZW1wdHlEaXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQ0xJQ29tbWFuZHMvQnVpbGRGb3Jtcy9SdW5CdWlsZEZvcm1zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB7IGVtcHR5RGlyLCBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgbm90aWZpZXIgZnJvbSBcIm5vZGUtbm90aWZpZXJcIjtcblxuaW1wb3J0IHsgZW5naW5lRmFjdG9yeSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0VuZ2luZS9BY3F1aXJlRm9ybUVuZ2luZVwiO1xuaW1wb3J0IHsgZ2V0RW5naW5lU291cmNlS2V5IH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRW5naW5lL0VuZ2luZVNvdXJjZVwiO1xuaW1wb3J0IHsgY29tcGlsZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0NvbXBpbGVGb3JtXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0dlbmVyYXRlRm9ybVwiO1xuaW1wb3J0IHsgTnVsbEZvcm1HZW5lcmF0b3IgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL051bGxGb3JtR2VuZXJhdG9yXCI7XG5pbXBvcnQgeyB3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Xcml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzXCI7XG5pbXBvcnQgeyBGU1Rhc2sgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9GU1Rhc2tcIjtcbmltcG9ydCB7XG4gICAgZ2VuZXJhdG9yRmFjdG9yeSxcbiAgICBHZW5lcmF0b3JTb3VyY2UsXG4gICAgZ2V0R2VuZXJhdG9yU291cmNlS2V5LFxufSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9HZW5lcmF0b3IvQWNxdWlyZUZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7IHJlc29sdmVFbmdpbmVWZXJzaW9uLCByZXNvbHZlR2VuZXJhdG9yVmVyc2lvbiB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1B1Ymxpc2hlZFZlcnNpb25VdGlsc1wiO1xuaW1wb3J0IHsgRm9ybUJ1aWxkTW9kZSwgcmVzb2x2ZUZvcm1JbmZvIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyB3cml0ZUZvcm1NZXRhIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvV3JpdGVGb3JtTWV0YVwiO1xuaW1wb3J0IHsgQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gXCIuLi8uLi9Db21tb25zL0NvbnNvbGVBcHBsaWNhdGlvbi9Db25zb2xlQXBwbGljYXRpb25Db250ZXh0XCI7XG5pbXBvcnQgeyBGb3JtR2xvYnMgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Gb3JtR2xvYnNVdGlsc1wiO1xuaW1wb3J0IHsgSUxvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvSUxvZ2dlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcbmltcG9ydCB7IE9ic2VydmUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvT2JzZXJ2ZVwiO1xuaW1wb3J0IHsgU2luZ2xlVmFsdWVQcm9kdWNlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9TaW5nbGVWYWx1ZVByb2R1Y2VyXCI7XG5pbXBvcnQgeyBwcmludFRpbWUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UaW1pbmdVdGlsc1wiO1xuaW1wb3J0IHsgQnVpbGRDYWNoZSB9IGZyb20gXCIuLi8uLi9Gb3JtV2VicGFja0NvbmZpZ3VyYXRpb24vQ2FjaGVBc3NldHNQbHVnaW5cIjtcbmltcG9ydCB7IHJlamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vVHlwaW5nVXRpbHNcIjtcbmltcG9ydCB7IHdyaXRlQXR0YWNobWVudFBhdGhGaWxlcyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzXCI7XG5pbXBvcnQgeyBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL0NoYWluYWJsZVZhbHVlUHJvZHVjZXJcIjtcbmltcG9ydCB7IEVtcHR5UHJvZHVjZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvRW1wdHlQcm9kdWNlclwiO1xuaW1wb3J0IHsgZ2V0Um5nU2NoZW1hRmlsZW5hbWUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL2dldFJuZ1NjaGVtYUZpbGVuYW1lXCI7XG5pbXBvcnQgeyBleHRyYWN0R2Z2RnJvbUZvcm1QYXRoIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9Gb3JtUGF0aFV0aWxzXCI7XG5pbXBvcnQgeyBXZWxsS25vd25EaXJlY3RvcmllcyB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vV2VsbEtub3duRGlyZWN0b3JpZXNcIjtcblxuaW1wb3J0IHsgQnVpbGRGb3Jtc09wdGlvbnMgfSBmcm9tIFwiLi9CdWlsZEZvcm1zT3B0aW9uc1wiO1xuXG5mdW5jdGlvbiBnZXRHZW5lcmF0b3JWZXJzaW9uKGdlbmVyYXRvclNvdXJjZTogR2VuZXJhdG9yU291cmNlKTogc3RyaW5nIHtcbiAgICBpZiAoZ2VuZXJhdG9yU291cmNlLnR5cGUgPT09IFwiUHVibGlzaGVkR2VuZXJhdG9yXCIpIHtcbiAgICAgICAgcmV0dXJuIGdlbmVyYXRvclNvdXJjZS52ZXJzaW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWRQcm9ncmFtU3RhdGVcIik7XG4gICAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuQnVpbGRGb3JtcyhcbiAgICBjb250ZXh0OiBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0LFxuICAgIG9wdGlvbnM6IEJ1aWxkRm9ybXNPcHRpb25zLFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBobEZhcm1EaXJlY3RvcnlQYXRoOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGJ1aWxkT3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCBwaWNrTGlzdHNDaGFpbiA9IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwicGlja2xpc3RzXCIpLCBcIiouanNvblwiKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChcIlBJQ0tMSVNUU1wiKSwgeCwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwaWNrbGlzdHNcIikpXG4gICAgKTtcblxuXG4gICAgYXdhaXQgRm9ybUdsb2JzLmVuc3VyZUVhY2hHbG9iUmVzb2x2ZXNJbnRvRXhpc3RpbmdGb3JtKGJ1aWxkT3B0aW9ucy5mb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpO1xuICAgIGNvbnN0IGZvcm1HbG9icyA9IGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlU3BlY2lmaWVycyhidWlsZE9wdGlvbnMuZm9ybUdsb2JzLCBmYXJtRGlyZWN0b3J5KTtcblxuICAgIGNvbnN0IHN0YXRpY1Jlc291cmNlc0ZvclByb2R1Y3Rpb25DaGFpbiA9IE9ic2VydmUuZmlsZXMoXG4gICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi5cIiwgXCIuLlwiLCBcIlN0YXRpY0ZpbGVzRm9yUHJvZHVjdGlvblJlc291cmNlc0RpclwiKSxcbiAgICAgICAgXCIqLmpzXCIsXG4gICAgICAgIFwiKi5qcy5tYXBcIlxuICAgICkuZG8oeCA9PlxuICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJTVEFUSUNTXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInB1YmxpY1wiLCBcInNjcmlwdHNcIikpXG4gICAgKTtcblxuICAgIC8qKiDQmtC+0L3QstC10YDRgtC10YDRiyDQvtC/0LjRgdC4INC00LvRjyDRhNC+0YDQvCwg0LrQvtGC0L7RgNGL0LUg0L/QvtC60LAg0L3QtSDRgNC10LDQu9C40LfQvtCy0LDQvdGLINC90LAg0LrQtdC90LTQuCwg0YHQsNC80LAg0LzQtdGF0LDQvdC40LrQsCDQvtC/0LjRgdC4INC/0LXRgNC10L3QtdGB0LXQvdCwINCyINGE0L7RgNC80Ysg0LIg0LrQtdC90LTQuCDQsNC/0LgsINC/0L7RjdGC0L7QvNGDINC+0L3QuCDQtNC+0LvQttC90Ysg0LHRi9GC0Ywg0LIgY2FuZHkucmVzb3VyY2VzXG4gICAgICogINCg0LXQsNC70LjQt9GD0LXRgtGB0Y8g0YLQvtC70YzQutC+INC/0YDQuCDQvtCx0YnQtdC8INCx0LjQu9C00LUg0YTQvtGA0Lw6IGNhbmR5IGJ1aWxkICpcbiAgICAgKiAqL1xuICAgIGxldCByZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbjogQ2hhaW5hYmxlVmFsdWVQcm9kdWNlcjxzdHJpbmc+IHwgRW1wdHlQcm9kdWNlciA9IE9ic2VydmUuZW1wdHkoKTtcbiAgICBpZiAoZm9ybUdsb2JzWzBdID09PSBcIipcIikge1xuICAgICAgICByZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbiA9IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZXh0ZXJuYWxDb252ZXJ0ZXJzXCIpLCBcIioueHNsdFwiKS5kbyhcbiAgICAgICAgICAgIHggPT5cbiAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiRVhURVJOQUwtQ09OVkVSVEVSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJjb252ZXJ0ZXJzXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGNvcGllZEVuZ2luZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGNvbnN0IHJlcG9zaXRvcnlSb290ID0gcGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiLi5cIik7XG4gICAgY29uc3QgYnVpbGRDYWNoZSA9IG5ldyBCdWlsZENhY2hlKGZhcm1EaXJlY3RvcnksIG9wdGlvbnMuYnVpbGRDYWNoZU1vZGUpO1xuICAgIGNvbnN0IGJ1aWxkRm9ybXNDaGFpbiA9IE9ic2VydmUuZm9ybURpcmVjdG9yaWVzKHJlcG9zaXRvcnlSb290LCBmb3JtR2xvYnMpLnNwbGl0VG9QYXJhbGxlbENoYWlucyhcbiAgICAgICAgeCA9PiB4LFxuICAgICAgICB4ID0+IHgsXG4gICAgICAgIGFzeW5jIGZvcm1SZWxhdGl2ZVBhdGggPT4ge1xuICAgICAgICAgICAgY29uc3QgZ2Z2ID0gZXh0cmFjdEdmdkZyb21Gb3JtUGF0aChmb3JtUmVsYXRpdmVQYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKHJlcG9zaXRvcnlSb290LCBmb3JtUmVsYXRpdmVQYXRoKTtcblxuICAgICAgICAgICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhwYXRoLmpvaW4oZm9ybURpclBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpKSkpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53YXJuaW5nKFxuICAgICAgICAgICAgICAgICAgICBgRm9ybSAke2dmdn0gZG9lcyBub3QgaGF2ZSBmb3JtLmpzb24gZmlsZS4gVG8gaW5jbHVkZSB0aGlzIGZvcm0gdG8gYnVpbGQgcHJvY2VzcyByZXN0YXJ0IGJ1aWxkYFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmUudmFsdWUoe30pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZm9ybVNjaGVtYXNEaXJQYXRoID0gcGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcInNjaGVtYXNcIik7XG4gICAgICAgICAgICBjb25zdCBybmdTY2hlbWFNYXNrID0gYCoke2dldFJuZ1NjaGVtYUZpbGVuYW1lKGZvcm1TY2hlbWFzRGlyUGF0aCwgZ2Z2KX1gO1xuXG4gICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS5maWxlKHBhdGguam9pbihmb3JtRGlyUGF0aCwgV2VsbEtub3duRGlyZWN0b3JpZXMuRm9ybUpzb25GaWxlTmFtZSkpXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShmb3JtSnNvbkZpbGUgPT5cbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZUZvcm1JbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUpzb25GaWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURpclBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmdpbmVEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGBGT1JNOiR7Z2Z2fWApLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51cGdyYWRlRm9ybUpzb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVzZUxhc3RTdGFibGVWZXJzaW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51c2VQcmVyZWxlYXNlVmVyc2lvblxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkubW9kZSA9PT0gRm9ybUJ1aWxkTW9kZS5Ob3JtYWxCdWlsZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZ2VuZXJhdG9yVmVyc2lvbiBpcyBub3QgZGVmaW5lZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaS5lbmdpbmVWZXJzaW9uID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImVuZ2luZVZlcnNpb24gaXMgbm90IGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclNvdXJjZTogYXdhaXQgcmVzb2x2ZUdlbmVyYXRvclZlcnNpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvclZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoZ2Z2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiBhd2FpdCByZXNvbHZlRW5naW5lVmVyc2lvbihmaS5lbmdpbmVWZXJzaW9uLCBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGdmdikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2luZ2xlVmFsdWVQcm9kdWNlcihuZXcgTnVsbEZvcm1HZW5lcmF0b3IoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3JGYWN0b3J5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3JTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51c2VWZXJzaW9uRnJvbUNhY2hlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgKGZpLCB5KSA9PiAoeyAuLi5maSwgZ2VuZXJhdG9yOiB5IH0pLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yU291cmNlICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0R2VuZXJhdG9yU291cmNlS2V5KGZpLmdlbmVyYXRvclNvdXJjZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiTnVsbEZvcm1HZW5lcmF0b3JcIlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZW5naW5lU291cmNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVZhbHVlUHJvZHVjZXIoXCJOdWxsRW5naW5lXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVuZ2luZUZhY3RvcnkoZmkuZW5naW5lU291cmNlLCBjYW5keU1vZHVsZXNEaXJlY3RvcnksIG9wdGlvbnMudXNlVmVyc2lvbkZyb21DYWNoZSkuZG8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgeCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29waWVkRW5naW5lcy5oYXMoZ2V0RW5naW5lU291cmNlS2V5KGZpLmVuZ2luZVNvdXJjZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJFTkdJTkVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInB1YmxpY1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcGllZEVuZ2luZXMuYWRkKGdldEVuZ2luZVNvdXJjZUtleShmaS5lbmdpbmVTb3VyY2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGZpLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiAoZmkuZW5naW5lU291cmNlICE9IHVuZGVmaW5lZCA/IGdldEVuZ2luZVNvdXJjZUtleShmaS5lbmdpbmVTb3VyY2UpIDogXCJOdWxsRW5naW5lXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4vY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIuLi8uLi94c2x0VGVtcGxhdGVzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4vanNIZWxwZXJzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic2NoZW1hcy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInN1Z2FyLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhdXRvY2FsYy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImhlbHBlcnMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ2YWxpZGF0aW9ucy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImxvY2FsaXphdGlvbi8qKi8qXCJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRlcGVuZGVuY2llc0hhc2g6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLm1vZGUgIT09IEZvcm1CdWlsZE1vZGUuTm9ybWFsQnVpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzSGFzaDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYXdhaXQgZmkuZ2VuZXJhdG9yLnN1cHBvcnRzRGVwZW5kZW5jaWVzRXh0cmFjdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNIYXNoID0gYXdhaXQgZmkuZ2VuZXJhdG9yLmdldEFsbERlcGVuZGVuY2llc0hhc2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURpclBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llc0hhc2g6IGRlcGVuZGVuY2llc0hhc2gsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGJ1aWxkQ2FjaGVFeGlzdDogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZGVwZW5kZW5jaWVzSGFzaCAhPSB1bmRlZmluZWQgJiYgZmkuZ2VuZXJhdG9yU291cmNlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZUV4aXN0ID0gYXdhaXQgYnVpbGRDYWNoZS5leGlzdHMoZmkuZ2VuZXJhdG9yU291cmNlLCBnZnYsIGZpLmRlcGVuZGVuY2llc0hhc2gpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVFeGlzdDogYnVpbGRDYWNoZUV4aXN0LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclNvdXJjZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmJ1aWxkQ2FjaGVFeGlzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChgR0VORVJBVEU6JHtnZnZ9YCkubG9nKFwiU2tpcHBlZCBkdWUgYnVpbGQgY2FjaGUgZXhpdHNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBDb2RlUmVmb3JtYXR0aW5nOiBvcHRpb25zLnNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0hhc2g6IGZpLmRlcGVuZGVuY2llc0hhc2ggPz8gXCJVbmRlZmluZWRSZXNvdXJjZXNIYXNoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm1cIiksIFwiKiovKlwiKSlcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZCAmJiBmaS5idWlsZENhY2hlRXhpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYENPTVBJTEU6JHtnZnZ9YCkubG9nKFwiU2tpcHBlZCBkdWUgYnVpbGQgY2FjaGUgZXhpc3RzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgYnVpbGRDYWNoZS5leHRyYWN0KGZpLmdlbmVyYXRvclNvdXJjZSwgZ2Z2LCBmaS5kZXBlbmRlbmNpZXNIYXNoLCByZXNvdXJjZXNEaXJlY3RvcnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1aWxkQ2FjaGVPcHRpb25zID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwc0hhc2g6IGZpLmRlcGVuZGVuY2llc0hhc2gsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yVmVyc2lvbjogZ2V0R2VuZXJhdG9yVmVyc2lvbihmaS5nZW5lcmF0b3JTb3VyY2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmdjogZ2Z2LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6IG9wdGlvbnMuYnVpbGRDYWNoZU1vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeTogZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBjb21waWxlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkudGhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGlzIHZlcnNpb24gb2YgZ2VuZXJhdG9yIGlzIG5vdCBzdXBwb3J0ZWQgZHVlIHRvIGRlcGVuZGVuY2llcyBleHRyYWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGb3JtTWV0YShcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdmdixcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmVuZ2luZVNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhpcyB2ZXJzaW9uIG9mIGdlbmVyYXRvciBpcyBub3Qgc3VwcG9ydGVkIGR1ZSB0byBkZXBlbmRlbmNpZXMgZXh0cmFjdGlvbiBpcyBub3Qgc3VwcG9ydGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkudGhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1aWxkQ2FjaGVPcHRpb25zID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwc0hhc2g6IGZpLmRlcGVuZGVuY2llc0hhc2gsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yVmVyc2lvbjogZ2V0R2VuZXJhdG9yVmVyc2lvbihmaS5nZW5lcmF0b3JTb3VyY2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmdjogZ2Z2LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6IG9wdGlvbnMuYnVpbGRDYWNoZU1vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeTogZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuYnVpbGRDYWNoZUV4aXN0XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlQXR0YWNobWVudFBhdGhGaWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLm1vZGUgPT09IEZvcm1CdWlsZE1vZGUuQ29weUxlZ2FjeVByZWJ1aWx0UmVzb3VyY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcImxlZ2FjeS1wcmVidWlsdFwiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTEVHQUNZLVBSRUJVSUxUXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVZhbHVlUHJvZHVjZXIoXCJcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInNjaGVtYXNcIiksIHJuZ1NjaGVtYU1hc2spLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNDSEVNQVNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInNjaGVtYXNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJjb252ZXJ0ZXJzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiQ09OVkVSVEVSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm1lcmdlcnNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJNRVJHRVJTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJtZXJnZXJzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGlmaWVyID0gKGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC5yZXBsYWNlKC88eDppbmNsdWRlIGhyZWY9XCJbLi9dKy9nLCAnPHg6aW5jbHVkZSBocmVmPVwiJyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwiY29udmVydGVyc1wiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5tb2RpZnlGaWxlc0NvbnRlbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkZJWC1YU0xULUlOQ0xVREVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcImNvbnZlcnRlcnNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIqKi8qLnhzbHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwiLi5cIiwgXCIuLlwiLCBcInhzbHRUZW1wbGF0ZXNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJYU0xULVRFTVBMQVRFU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiLCBcInhzbHRUZW1wbGF0ZXNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJub3JtYWxpemVcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTk9STUFMSVpFXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJub3JtYWxpemVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJwYXRjaFwiKSwgXCIqLnhzbHRcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiUEFUQ0hcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInBhdGNoXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibWFwXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk1BUFwiKSwgeCwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJtYXBcIikpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwidW5tYXBcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiVU5NQVBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInVubWFwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJ1aWxkT3B0aW9ucy53YXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpZXIubm90aWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYCR7ZmkuZm9ybU5hbWV9OiDRgdCx0L7RgNC60LAg0LfQsNCy0LXRgNGI0LXQvdCwYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBgRW5naW5lOiAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5lbmdpbmVTb3VyY2UgPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiW05vRW5naW5lXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGZpLmVuZ2luZVNvdXJjZS50eXBlID09PSBcIkxvY2FsRW5naW5lU291cmNlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwibG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmaS5lbmdpbmVTb3VyY2UudmVyc2lvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBpZiAoYnVpbGRPcHRpb25zLndhdGNoKSB7XG4gICAgICAgIGlmIChvcHRpb25zLmNsZWFuKSB7XG4gICAgICAgICAgICBhd2FpdCBjbGVhblRhcmdldERpcmVjdG9yeShyZXNvdXJjZXNEaXJlY3RvcnksIGNvbnRleHQubG9nZ2VyKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTEgPSBhd2FpdCBwaWNrTGlzdHNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMiA9IGF3YWl0IGJ1aWxkRm9ybXNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMyA9IGF3YWl0IHN0YXRpY1Jlc291cmNlc0ZvclByb2R1Y3Rpb25DaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlNSA9IGF3YWl0IHJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgYXdhaXQgY29udGV4dC53YWl0Rm9yRXhpdCgpO1xuICAgICAgICBpZiAoc3RvcE9ic2VydmUzICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0b3BPYnNlcnZlNCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlNCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdG9wT2JzZXJ2ZTUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTUoKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTIoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUxKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmNsZWFuKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5LCBjb250ZXh0LmxvZ2dlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBwaWNrTGlzdHNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBhd2FpdCBzdGF0aWNSZXNvdXJjZXNGb3JQcm9kdWN0aW9uQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgcmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgYnVpbGRGb3Jtc0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbkJyaWdodChcIkJ1aWxkIHN1Y2Nlc3NcIikpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgY29uc3QgdG90YWxUaW1lID0gRGF0ZS5ub3coKSAtIHN0YXJ0RGF0ZTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgVG90YWwgdGltZTogJHtwcmludFRpbWUodG90YWxUaW1lKX1gKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsIGxvZ2dlcjogSUxvZ2dlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvZ2dlci5sb2coXCJDbGVhbmluZyByZXNvdXJjZSBkaXJlY3RvcnkuIFwiICsgcmVzb3VyY2VzRGlyZWN0b3J5KTtcbiAgICBhd2FpdCBlbXB0eURpcihyZXNvdXJjZXNEaXJlY3RvcnkpO1xuICAgIGxvZ2dlci5sb2coXCJSZXNvdXJjZSBkaXJlY3RvcnkgY2xlYW5cIik7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxNQUFBLEdB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
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.BuildServerBuildFormsController = void 0;
8
8
  var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime/helpers/applyDecoratedDescriptor"));
9
+ var path = _interopRequireWildcard(require("path"));
9
10
  var _mimeTypes = _interopRequireDefault(require("mime-types"));
10
11
  var _ResolveFormInfo = require("../../../BuildTasks/ResolveFormInfo");
11
12
  var _Methods = require("../../../Commons/HttpServer/AttributeRouting/Methods");
@@ -15,9 +16,12 @@ var _Results = require("../../../Commons/HttpServer/AttributeRouting/Results");
15
16
  var _StreamResultHandler = require("../../../Commons/HttpServer/AttributeRouting/Results/StreamResultHandler");
16
17
  var _SingletonController = require("../../../Commons/HttpServer/ExpressWrapper/SingletonController");
17
18
  var _StaticLogger = require("../../../Commons/Logging/StaticLogger");
19
+ var _WellKnownDirectories = require("../../../../../Common/WellKnownDirectories");
18
20
  var _BuildFormDevServer = require("./DevServers/BuildFormDevServer");
19
21
  var _FarmDirectory = require("./Directories/FarmDirectory");
20
22
  var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class;
23
+ 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); }
24
+ 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; }
21
25
  let BuildServerBuildFormsController = (_dec = (0, _Methods.httpGet)("/:update.hot-update.json", _Results.httpReturn.StreamWithMime("application/json"), (0, _Params.httpUrlParam)("update", _Params.httpType.String)), _dec2 = (0, _Methods.httpGet)("/:update.hot-update.js", _Results.httpReturn.StreamWithMime("application/javascript"), (0, _Params.httpUrlParam)("update", _Params.httpType.String)), _dec3 = (0, _Methods.httpGet)("/:update.hot-update.js.map", _Results.httpReturn.StreamWithMime("application/json"), (0, _Params.httpUrlParam)("update", _Params.httpType.String)), _dec4 = (0, _Methods.httpGet)(/^\/public\/scripts\/(((\d{6,7})(.[\w\-]*)?(.min)?).js)$/i, _Results.httpReturn.StreamWithMime("application/javascript"), (0, _Params.httpUrlParam)("0", _Params.httpType.String), (0, _Params.httpUrlParam)("1", _Params.httpType.String), (0, _Params.httpUrlParam)("2", _Params.httpType.String)), _dec5 = (0, _Methods.httpGet)(/^\/public\/styles\/(((\d{6,7})(.[\w\-]*)?(.min)?).css)$/i, _Results.httpReturn.StreamWithMime("text/css"), (0, _Params.httpUrlParam)("0", _Params.httpType.String), (0, _Params.httpUrlParam)("1", _Params.httpType.String), (0, _Params.httpUrlParam)("2", _Params.httpType.String), (0, _Params.httpUrlParam)("3", _Params.httpType.String)), _dec6 = (0, _Methods.httpGet)("/public/images/:filename", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("filename", _Params.httpType.String)), (_class = class BuildServerBuildFormsController extends _SingletonController.SingletonController {
22
26
  constructor(allFarmConfig, candyModulesDirectory, useGeneratorFromLocalSources, engineDirectory, buildDebugOnly, nightly = false) {
23
27
  super();
@@ -73,12 +77,7 @@ let BuildServerBuildFormsController = (_dec = (0, _Methods.httpGet)("/:update.ho
73
77
  throw new _NotFoundWebError.NotFoundWebError("File not found", true);
74
78
  }
75
79
  async getAllAttachmentPathFileNames() {
76
- const result = [];
77
- const farmFormJsons = (await Promise.all(this.allFarmDirectory.map(i => i.getAllFormJsonFiles()))).flat();
78
- for (const farmFormJson of farmFormJsons) {
79
- result.push(`${farmFormJson.gfv}.json`);
80
- }
81
- return result;
80
+ return (await Promise.all(this.allFarmDirectory.map(i => i.getAllGfvs()))).flat().map(gfv => `${gfv}.json`);
82
81
  }
83
82
  async getAttachmentPathsFileContent(gfv) {
84
83
  const buildFormDevServer = await this.getOrCreateBuildFormDevServer(gfv);
@@ -87,17 +86,16 @@ let BuildServerBuildFormsController = (_dec = (0, _Methods.httpGet)("/:update.ho
87
86
  }
88
87
  async getAllNormalizationFileNames() {
89
88
  const result = [];
90
- const farmFormJsons = (await Promise.all(this.allFarmDirectory.map(i => i.getAllFormJsonFiles()))).flat();
91
- for (const farmFormJson of farmFormJsons) {
89
+ const gfvInfos = (await Promise.all(this.allFarmDirectory.map(i => i.getAllGfvWithLocations()))).flat();
90
+ for (const {
91
+ gfv,
92
+ formPath
93
+ } of gfvInfos) {
92
94
  var _formConfig$settings$, _formConfig$settings;
93
- const formJsonPath = (await Promise.all(this.allFarmDirectory.map(i => i.getFormJsonPath(farmFormJson.gfv)))).flat().filter(i => i != undefined);
94
- if (formJsonPath[0] == undefined) {
95
- throw Error(`gfv ${farmFormJson.gfv} not found in config dir`);
96
- }
97
- const formConfig = await (0, _ResolveFormInfo.readFormConfig)(formJsonPath[0], (0, _StaticLogger.getLogger)());
95
+ const formConfig = await (0, _ResolveFormInfo.readFormConfig)(path.join(formPath, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName), (0, _StaticLogger.getLogger)());
98
96
  const useServerSideFLangNormalization = (_formConfig$settings$ = (_formConfig$settings = formConfig.settings) === null || _formConfig$settings === void 0 ? void 0 : _formConfig$settings.useServerSideFLangNormalization) !== null && _formConfig$settings$ !== void 0 ? _formConfig$settings$ : false;
99
97
  if (useServerSideFLangNormalization) {
100
- result.push(`${farmFormJson.gfv}.normalize`);
98
+ result.push(`${gfv}.normalize`);
101
99
  }
102
100
  }
103
101
  return result;
@@ -118,4 +116,4 @@ let BuildServerBuildFormsController = (_dec = (0, _Methods.httpGet)("/:update.ho
118
116
  }
119
117
  }, ((0, _applyDecoratedDescriptor2.default)(_class.prototype, "getDevServerUpdateJson", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "getDevServerUpdateJson"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getDevServerUpdateJs", [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, "getDevServerUpdateJs"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getDevServerUpdateJsMap", [_dec3], Object.getOwnPropertyDescriptor(_class.prototype, "getDevServerUpdateJsMap"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormScript", [_dec4], Object.getOwnPropertyDescriptor(_class.prototype, "getFormScript"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormStyle", [_dec5], Object.getOwnPropertyDescriptor(_class.prototype, "getFormStyle"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormImages", [_dec6], Object.getOwnPropertyDescriptor(_class.prototype, "getFormImages"), _class.prototype)), _class));
120
118
  exports.BuildServerBuildFormsController = BuildServerBuildFormsController;
121
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWltZVR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX01ldGhvZHMiLCJfTm90Rm91bmRXZWJFcnJvciIsIl9QYXJhbXMiLCJfUmVzdWx0cyIsIl9TdHJlYW1SZXN1bHRIYW5kbGVyIiwiX1NpbmdsZXRvbkNvbnRyb2xsZXIiLCJfU3RhdGljTG9nZ2VyIiwiX0J1aWxkRm9ybURldlNlcnZlciIsIl9GYXJtRGlyZWN0b3J5IiwiX2RlYyIsIl9kZWMyIiwiX2RlYzMiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfY2xhc3MiLCJCdWlsZFNlcnZlckJ1aWxkRm9ybXNDb250cm9sbGVyIiwiaHR0cEdldCIsImh0dHBSZXR1cm4iLCJTdHJlYW1XaXRoTWltZSIsImh0dHBVcmxQYXJhbSIsImh0dHBUeXBlIiwiU3RyaW5nIiwiU3RyZWFtIiwiU2luZ2xldG9uQ29udHJvbGxlciIsImNvbnN0cnVjdG9yIiwiYWxsRmFybUNvbmZpZyIsImNhbmR5TW9kdWxlc0RpcmVjdG9yeSIsInVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXMiLCJlbmdpbmVEaXJlY3RvcnkiLCJidWlsZERlYnVnT25seSIsIm5pZ2h0bHkiLCJhbGxGYXJtRGlyZWN0b3J5IiwiYWxsRmFybURpcmVjdG9yeVBhdGgiLCJuZXh0RnJlZVBvcnQiLCJkZXZTZXJ2ZXJzIiwibWFwIiwiZmFybSIsIkZhcm1EaXJlY3RvcnkiLCJmYXJtRGlyZWN0b3J5IiwiZ2V0RGV2U2VydmVyVXBkYXRlSnNvbiIsInVwZGF0ZU5hbWUiLCJnZXRGaXJzdEV4aXN0c0ZpbGVBc1N0cmVhbUZyb21EZXZTZXJ2ZXIiLCJnZXREZXZTZXJ2ZXJVcGRhdGVKcyIsImdldERldlNlcnZlclVwZGF0ZUpzTWFwIiwiZ2V0Rm9ybVNjcmlwdCIsImZpbGVOYW1lIiwiZmlsZU5hbWVXaXRob3V0RXh0IiwiZ2Z2IiwiYnVpbGRGb3JtRGV2U2VydmVyIiwiZ2V0T3JDcmVhdGVCdWlsZEZvcm1EZXZTZXJ2ZXIiLCJTdHJlYW1SZXN1bHQiLCJnZXRGaWxlQXNTdHJlYW0iLCJnZXRGb3JtU3R5bGUiLCJ0aGVtZSIsInJlcGxhY2UiLCJnZXRGb3JtSW1hZ2VzIiwibWltZSIsImxvb2t1cCIsImZpbGVuYW1lIiwibWltZVR5cGUiLCJkZXZTZXJ2ZXIiLCJPYmplY3QiLCJ2YWx1ZXMiLCJ1bmRlZmluZWQiLCJOb3RGb3VuZFdlYkVycm9yIiwiZ2V0QWxsQXR0YWNobWVudFBhdGhGaWxlTmFtZXMiLCJyZXN1bHQiLCJmYXJtRm9ybUpzb25zIiwiUHJvbWlzZSIsImFsbCIsImkiLCJnZXRBbGxGb3JtSnNvbkZpbGVzIiwiZmxhdCIsImZhcm1Gb3JtSnNvbiIsInB1c2giLCJnZXRBdHRhY2htZW50UGF0aHNGaWxlQ29udGVudCIsInJlc3VsdFN0cmVhbSIsImdldEdlbmVyYXRlZEZpbGVBc1N0cmVhbSIsImdldEFsbE5vcm1hbGl6YXRpb25GaWxlTmFtZXMiLCJfZm9ybUNvbmZpZyRzZXR0aW5ncyQiLCJfZm9ybUNvbmZpZyRzZXR0aW5ncyIsImZvcm1Kc29uUGF0aCIsImdldEZvcm1Kc29uUGF0aCIsImZpbHRlciIsIkVycm9yIiwiZm9ybUNvbmZpZyIsInJlYWRGb3JtQ29uZmlnIiwiZ2V0TG9nZ2VyIiwidXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbiIsInNldHRpbmdzIiwiZ2V0Tm9ybWFsaXphdGlvbkZpbGVDb250ZW50IiwiQnVpbGRGb3JtRGV2U2VydmVyIiwic3RhcnQiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yMiIsImRlZmF1bHQiLCJwcm90b3R5cGUiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL0J1aWxkU2VydmVyL1Jlc291cmNlc0NvbnRyb2xsZXJzL0J1aWxkU2VydmVyQnVpbGRGb3Jtc0NvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1pbWUgZnJvbSBcIm1pbWUtdHlwZXNcIjtcbmltcG9ydCB7IEZhcm1Db25maWcgfSBmcm9tIFwiVG9vbHMvc3JjL0NhbmR5Q0xJXCI7XG5cbmltcG9ydCB7IHJlYWRGb3JtQ29uZmlnIH0gZnJvbSBcIi4uLy4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyBodHRwR2V0IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL01ldGhvZHNcIjtcbmltcG9ydCB7IE5vdEZvdW5kV2ViRXJyb3IgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvTm90Rm91bmRXZWJFcnJvclwiO1xuaW1wb3J0IHsgaHR0cFR5cGUsIGh0dHBVcmxQYXJhbSB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9QYXJhbXNcIjtcbmltcG9ydCB7IGh0dHBSZXR1cm4gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUmVzdWx0c1wiO1xuaW1wb3J0IHsgU3RyZWFtUmVzdWx0IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1Jlc3VsdHMvU3RyZWFtUmVzdWx0SGFuZGxlclwiO1xuaW1wb3J0IHsgU2luZ2xldG9uQ29udHJvbGxlciB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvRXhwcmVzc1dyYXBwZXIvU2luZ2xldG9uQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcblxuaW1wb3J0IHsgQnVpbGRGb3JtRGV2U2VydmVyIH0gZnJvbSBcIi4vRGV2U2VydmVycy9CdWlsZEZvcm1EZXZTZXJ2ZXJcIjtcbmltcG9ydCB7IEZhcm1EaXJlY3RvcnkgfSBmcm9tIFwiLi9EaXJlY3Rvcmllcy9GYXJtRGlyZWN0b3J5XCI7XG5pbXBvcnQgeyBJR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlciB9IGZyb20gXCIuL0lHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBCdWlsZFNlcnZlckJ1aWxkRm9ybXNDb250cm9sbGVyXG4gICAgZXh0ZW5kcyBTaW5nbGV0b25Db250cm9sbGVyXG4gICAgaW1wbGVtZW50cyBJR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlclxue1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsRmFybURpcmVjdG9yeTogRmFybURpcmVjdG9yeVtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsRmFybURpcmVjdG9yeVBhdGg6IHN0cmluZ1tdO1xuICAgIHByaXZhdGUgbmV4dEZyZWVQb3J0ID0gMTIwMDE7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXZTZXJ2ZXJzOiB7IFtnZnY6IHN0cmluZ106IHVuZGVmaW5lZCB8IEJ1aWxkRm9ybURldlNlcnZlciB9ID0ge307XG4gICAgcHJpdmF0ZSByZWFkb25seSBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsbEZhcm1Db25maWc6IEZhcm1Db25maWdbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXM6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5pZ2h0bHk6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBidWlsZERlYnVnT25seTogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgYWxsRmFybUNvbmZpZzogRmFybUNvbmZpZ1tdLFxuICAgICAgICBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICAgICAgdXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlczogYm9vbGVhbixcbiAgICAgICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIGJ1aWxkRGVidWdPbmx5OiBib29sZWFuLFxuICAgICAgICBuaWdodGx5OiBib29sZWFuID0gZmFsc2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5uaWdodGx5ID0gbmlnaHRseTtcbiAgICAgICAgdGhpcy5hbGxGYXJtRGlyZWN0b3J5ID0gYWxsRmFybUNvbmZpZy5tYXAoZmFybSA9PiBuZXcgRmFybURpcmVjdG9yeShmYXJtLmZhcm1EaXJlY3RvcnkpKTtcbiAgICAgICAgdGhpcy5hbGxGYXJtRGlyZWN0b3J5UGF0aCA9IGFsbEZhcm1Db25maWcubWFwKGZhcm0gPT4gZmFybS5mYXJtRGlyZWN0b3J5KTtcbiAgICAgICAgdGhpcy5jYW5keU1vZHVsZXNEaXJlY3RvcnkgPSBjYW5keU1vZHVsZXNEaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMuYWxsRmFybUNvbmZpZyA9IGFsbEZhcm1Db25maWc7XG4gICAgICAgIHRoaXMudXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcyA9IHVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXM7XG4gICAgICAgIHRoaXMuZW5naW5lRGlyZWN0b3J5ID0gZW5naW5lRGlyZWN0b3J5O1xuICAgICAgICB0aGlzLmJ1aWxkRGVidWdPbmx5ID0gYnVpbGREZWJ1Z09ubHk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIFwiLzp1cGRhdGUuaG90LXVwZGF0ZS5qc29uXCIsXG4gICAgICAgIGh0dHBSZXR1cm4uU3RyZWFtV2l0aE1pbWUoXCJhcHBsaWNhdGlvbi9qc29uXCIpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCJ1cGRhdGVcIiwgaHR0cFR5cGUuU3RyaW5nKVxuICAgIClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RGV2U2VydmVyVXBkYXRlSnNvbih1cGRhdGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRGaXJzdEV4aXN0c0ZpbGVBc1N0cmVhbUZyb21EZXZTZXJ2ZXIoYHN0YXRpYy8ke3VwZGF0ZU5hbWV9LmhvdC11cGRhdGUuanNvbmApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFxuICAgICAgICBcIi86dXBkYXRlLmhvdC11cGRhdGUuanNcIixcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcInVwZGF0ZVwiLCBodHRwVHlwZS5TdHJpbmcpXG4gICAgKVxuICAgIHB1YmxpYyBhc3luYyBnZXREZXZTZXJ2ZXJVcGRhdGVKcyh1cGRhdGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRGaXJzdEV4aXN0c0ZpbGVBc1N0cmVhbUZyb21EZXZTZXJ2ZXIoYHN0YXRpYy8ke3VwZGF0ZU5hbWV9LmhvdC11cGRhdGUuanNgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcbiAgICAgICAgXCIvOnVwZGF0ZS5ob3QtdXBkYXRlLmpzLm1hcFwiLFxuICAgICAgICBodHRwUmV0dXJuLlN0cmVhbVdpdGhNaW1lKFwiYXBwbGljYXRpb24vanNvblwiKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwidXBkYXRlXCIsIGh0dHBUeXBlLlN0cmluZylcbiAgICApXG4gICAgcHVibGljIGFzeW5jIGdldERldlNlcnZlclVwZGF0ZUpzTWFwKHVwZGF0ZU5hbWU6IHN0cmluZyk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldEZpcnN0RXhpc3RzRmlsZUFzU3RyZWFtRnJvbURldlNlcnZlcihgc3RhdGljLyR7dXBkYXRlTmFtZX0uaG90LXVwZGF0ZS5qcy5tYXBgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcbiAgICAgICAgL15cXC9wdWJsaWNcXC9zY3JpcHRzXFwvKCgoXFxkezYsN30pKC5bXFx3XFwtXSopPygubWluKT8pLmpzKSQvaSxcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcIjBcIiwgaHR0cFR5cGUuU3RyaW5nKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiMVwiLCBodHRwVHlwZS5TdHJpbmcpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCIyXCIsIGh0dHBUeXBlLlN0cmluZylcbiAgICApXG4gICAgcHVibGljIGFzeW5jIGdldEZvcm1TY3JpcHQoZmlsZU5hbWU6IHN0cmluZywgZmlsZU5hbWVXaXRob3V0RXh0OiBzdHJpbmcsIGdmdjogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYnVpbGRGb3JtRGV2U2VydmVyID0gYXdhaXQgdGhpcy5nZXRPckNyZWF0ZUJ1aWxkRm9ybURldlNlcnZlcihnZnYpO1xuICAgICAgICByZXR1cm4gbmV3IFN0cmVhbVJlc3VsdChhd2FpdCBidWlsZEZvcm1EZXZTZXJ2ZXIuZ2V0RmlsZUFzU3RyZWFtKGBzdGF0aWMvcHVibGljL3NjcmlwdHMvJHtmaWxlTmFtZX1gKSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIC9eXFwvcHVibGljXFwvc3R5bGVzXFwvKCgoXFxkezYsN30pKC5bXFx3XFwtXSopPygubWluKT8pLmNzcykkL2ksXG4gICAgICAgIGh0dHBSZXR1cm4uU3RyZWFtV2l0aE1pbWUoXCJ0ZXh0L2Nzc1wiKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiMFwiLCBodHRwVHlwZS5TdHJpbmcpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCIxXCIsIGh0dHBUeXBlLlN0cmluZyksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcIjJcIiwgaHR0cFR5cGUuU3RyaW5nKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiM1wiLCBodHRwVHlwZS5TdHJpbmcpXG4gICAgKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtU3R5bGUoXG4gICAgICAgIGZpbGVOYW1lOiBzdHJpbmcsXG4gICAgICAgIGZpbGVOYW1lV2l0aG91dEV4dDogc3RyaW5nLFxuICAgICAgICBnZnY6IHN0cmluZyxcbiAgICAgICAgdGhlbWU6IHVuZGVmaW5lZCB8IHN0cmluZ1xuICAgICk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGJ1aWxkRm9ybURldlNlcnZlciA9IGF3YWl0IHRoaXMuZ2V0T3JDcmVhdGVCdWlsZEZvcm1EZXZTZXJ2ZXIoZ2Z2KTtcbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW1SZXN1bHQoXG4gICAgICAgICAgICBhd2FpdCBidWlsZEZvcm1EZXZTZXJ2ZXIuZ2V0RmlsZUFzU3RyZWFtKGBzdGF0aWMvcHVibGljL3N0eWxlcy8ke2ZpbGVOYW1lLnJlcGxhY2UodGhlbWUgPz8gXCJcIiwgXCJcIil9YClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9wdWJsaWMvaW1hZ2VzLzpmaWxlbmFtZVwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZmlsZW5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Rm9ybUltYWdlcyhmaWxlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0Rmlyc3RFeGlzdHNGaWxlQXNTdHJlYW1Gcm9tRGV2U2VydmVyKFxuICAgICAgICAgICAgYHN0YXRpYy9wdWJsaWMvaW1hZ2VzLyR7ZmlsZU5hbWV9YCxcbiAgICAgICAgICAgIG1pbWUubG9va3VwKGZpbGVOYW1lKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZ2V0Rmlyc3RFeGlzdHNGaWxlQXNTdHJlYW1Gcm9tRGV2U2VydmVyKGZpbGVuYW1lOiBzdHJpbmcsIG1pbWVUeXBlPzogc3RyaW5nIHwgZmFsc2UpIHtcbiAgICAgICAgZm9yIChjb25zdCBkZXZTZXJ2ZXIgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLmRldlNlcnZlcnMpKSB7XG4gICAgICAgICAgICBpZiAoZGV2U2VydmVyICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU3RyZWFtUmVzdWx0KGF3YWl0IGRldlNlcnZlci5nZXRGaWxlQXNTdHJlYW0oZmlsZW5hbWUpLCBtaW1lVHlwZSk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRyeSBuZXh0IHNlcnZlclxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRXZWJFcnJvcihcIkZpbGUgbm90IGZvdW5kXCIsIHRydWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxBdHRhY2htZW50UGF0aEZpbGVOYW1lcygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgY29uc3QgZmFybUZvcm1Kc29ucyA9IChhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmFsbEZhcm1EaXJlY3RvcnkubWFwKGkgPT4gaS5nZXRBbGxGb3JtSnNvbkZpbGVzKCkpKSkuZmxhdCgpO1xuICAgICAgICBmb3IgKGNvbnN0IGZhcm1Gb3JtSnNvbiBvZiBmYXJtRm9ybUpzb25zKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChgJHtmYXJtRm9ybUpzb24uZ2Z2fS5qc29uYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QXR0YWNobWVudFBhdGhzRmlsZUNvbnRlbnQoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPE5vZGVKUy5SZWFkYWJsZVN0cmVhbT4ge1xuICAgICAgICBjb25zdCBidWlsZEZvcm1EZXZTZXJ2ZXIgPSBhd2FpdCB0aGlzLmdldE9yQ3JlYXRlQnVpbGRGb3JtRGV2U2VydmVyKGdmdik7XG4gICAgICAgIGNvbnN0IHJlc3VsdFN0cmVhbSA9IGF3YWl0IGJ1aWxkRm9ybURldlNlcnZlci5nZXRHZW5lcmF0ZWRGaWxlQXNTdHJlYW0oYEF0dGFjaG1lbnRQYXRocy5qc29uYCk7XG4gICAgICAgIHJldHVybiByZXN1bHRTdHJlYW07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbE5vcm1hbGl6YXRpb25GaWxlTmFtZXMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGNvbnN0IGZhcm1Gb3JtSnNvbnMgPSAoYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5hbGxGYXJtRGlyZWN0b3J5Lm1hcChpID0+IGkuZ2V0QWxsRm9ybUpzb25GaWxlcygpKSkpLmZsYXQoKTtcbiAgICAgICAgZm9yIChjb25zdCBmYXJtRm9ybUpzb24gb2YgZmFybUZvcm1Kc29ucykge1xuICAgICAgICAgICAgY29uc3QgZm9ybUpzb25QYXRoID0gKFxuICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHRoaXMuYWxsRmFybURpcmVjdG9yeS5tYXAoaSA9PiBpLmdldEZvcm1Kc29uUGF0aChmYXJtRm9ybUpzb24uZ2Z2KSkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmZsYXQoKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoaSA9PiBpICE9IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICBpZiAoZm9ybUpzb25QYXRoWzBdID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBnZnYgJHtmYXJtRm9ybUpzb24uZ2Z2fSBub3QgZm91bmQgaW4gY29uZmlnIGRpcmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZm9ybUNvbmZpZyA9IGF3YWl0IHJlYWRGb3JtQ29uZmlnKGZvcm1Kc29uUGF0aFswXSwgZ2V0TG9nZ2VyKCkpO1xuICAgICAgICAgICAgY29uc3QgdXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbiA9IGZvcm1Db25maWcuc2V0dGluZ3M/LnVzZVNlcnZlclNpZGVGTGFuZ05vcm1hbGl6YXRpb24gPz8gZmFsc2U7XG4gICAgICAgICAgICBpZiAodXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbikge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGAke2Zhcm1Gb3JtSnNvbi5nZnZ9Lm5vcm1hbGl6ZWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldE5vcm1hbGl6YXRpb25GaWxlQ29udGVudChnZnY6IHN0cmluZyk6IFByb21pc2U8Tm9kZUpTLlJlYWRhYmxlU3RyZWFtPiB7XG4gICAgICAgIGNvbnN0IGJ1aWxkRm9ybURldlNlcnZlciA9IGF3YWl0IHRoaXMuZ2V0T3JDcmVhdGVCdWlsZEZvcm1EZXZTZXJ2ZXIoZ2Z2KTtcbiAgICAgICAgY29uc3QgcmVzdWx0U3RyZWFtID0gYXdhaXQgYnVpbGRGb3JtRGV2U2VydmVyLmdldEdlbmVyYXRlZEZpbGVBc1N0cmVhbShgU2VydmVyU2lkZS5ub3JtYWxpemVgKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFN0cmVhbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGdldE9yQ3JlYXRlQnVpbGRGb3JtRGV2U2VydmVyKGdmdjogc3RyaW5nKTogUHJvbWlzZTxCdWlsZEZvcm1EZXZTZXJ2ZXI+IHtcbiAgICAgICAgbGV0IGRldlNlcnZlciA9IHRoaXMuZGV2U2VydmVyc1tnZnZdO1xuICAgICAgICBpZiAoZGV2U2VydmVyID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZGV2U2VydmVyID0gbmV3IEJ1aWxkRm9ybURldlNlcnZlcihcbiAgICAgICAgICAgICAgICB0aGlzLm5leHRGcmVlUG9ydCsrLFxuICAgICAgICAgICAgICAgIHRoaXMuYWxsRmFybURpcmVjdG9yeVBhdGgsXG4gICAgICAgICAgICAgICAgZ2Z2LFxuICAgICAgICAgICAgICAgIHRoaXMuY2FuZHlNb2R1bGVzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgIHRoaXMuYWxsRmFybUNvbmZpZyxcbiAgICAgICAgICAgICAgICB0aGlzLnVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXMsXG4gICAgICAgICAgICAgICAgdGhpcy5lbmdpbmVEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZERlYnVnT25seSxcbiAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICB0aGlzLm5pZ2h0bHlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmRldlNlcnZlcnNbZ2Z2XSA9IGRldlNlcnZlcjtcbiAgICAgICAgICAgIGF3YWl0IGRldlNlcnZlci5zdGFydCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZXZTZXJ2ZXI7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUdBLElBQUFDLGdCQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxpQkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksT0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssUUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sb0JBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLG9CQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxhQUFBLEdBQUFSLE9BQUE7QUFFQSxJQUFBUyxtQkFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsY0FBQSxHQUFBVixPQUFBO0FBQTRELElBQUFXLElBQUEsRUFBQUMsS0FBQSxFQUFBQyxLQUFBLEVBQUFDLEtBQUEsRUFBQUMsS0FBQSxFQUFBQyxLQUFBLEVBQUFDLE1BQUE7QUFBQSxJQUcvQ0MsK0JBQStCLElBQUFQLElBQUEsR0FrQ3ZDLElBQUFRLGdCQUFPLEVBQ0osMEJBQTBCLEVBQzFCQyxtQkFBVSxDQUFDQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsRUFDN0MsSUFBQUMsb0JBQVksRUFBQyxRQUFRLEVBQUVDLGdCQUFRLENBQUNDLE1BQU0sQ0FDMUMsQ0FBQyxFQUFBWixLQUFBLEdBS0EsSUFBQU8sZ0JBQU8sRUFDSix3QkFBd0IsRUFDeEJDLG1CQUFVLENBQUNDLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQyxFQUNuRCxJQUFBQyxvQkFBWSxFQUFDLFFBQVEsRUFBRUMsZ0JBQVEsQ0FBQ0MsTUFBTSxDQUMxQyxDQUFDLEVBQUFYLEtBQUEsR0FLQSxJQUFBTSxnQkFBTyxFQUNKLDRCQUE0QixFQUM1QkMsbUJBQVUsQ0FBQ0MsY0FBYyxDQUFDLGtCQUFrQixDQUFDLEVBQzdDLElBQUFDLG9CQUFZLEVBQUMsUUFBUSxFQUFFQyxnQkFBUSxDQUFDQyxNQUFNLENBQzFDLENBQUMsRUFBQVYsS0FBQSxHQUtBLElBQUFLLGdCQUFPLEVBQ0osMERBQTBELEVBQzFEQyxtQkFBVSxDQUFDQyxjQUFjLENBQUMsd0JBQXdCLENBQUMsRUFDbkQsSUFBQUMsb0JBQVksRUFBQyxHQUFHLEVBQUVDLGdCQUFRLENBQUNDLE1BQU0sQ0FBQyxFQUNsQyxJQUFBRixvQkFBWSxFQUFDLEdBQUcsRUFBRUMsZ0JBQVEsQ0FBQ0MsTUFBTSxDQUFDLEVBQ2xDLElBQUFGLG9CQUFZLEVBQUMsR0FBRyxFQUFFQyxnQkFBUSxDQUFDQyxNQUFNLENBQ3JDLENBQUMsRUFBQVQsS0FBQSxHQU1BLElBQUFJLGdCQUFPLEVBQ0osMERBQTBELEVBQzFEQyxtQkFBVSxDQUFDQyxjQUFjLENBQUMsVUFBVSxDQUFDLEVBQ3JDLElBQUFDLG9CQUFZLEVBQUMsR0FBRyxFQUFFQyxnQkFBUSxDQUFDQyxNQUFNLENBQUMsRUFDbEMsSUFBQUYsb0JBQVksRUFBQyxHQUFHLEVBQUVDLGdCQUFRLENBQUNDLE1BQU0sQ0FBQyxFQUNsQyxJQUFBRixvQkFBWSxFQUFDLEdBQUcsRUFBRUMsZ0JBQVEsQ0FBQ0MsTUFBTSxDQUFDLEVBQ2xDLElBQUFGLG9CQUFZLEVBQUMsR0FBRyxFQUFFQyxnQkFBUSxDQUFDQyxNQUFNLENBQ3JDLENBQUMsRUFBQVIsS0FBQSxHQWFBLElBQUFHLGdCQUFPLEVBQUMsMEJBQTBCLEVBQUVDLG1CQUFVLENBQUNLLE1BQU0sRUFBRSxJQUFBSCxvQkFBWSxFQUFDLFVBQVUsRUFBRUMsZ0JBQVEsQ0FBQ0MsTUFBTSxDQUFDLENBQUMsR0FBQVAsTUFBQSxHQTdGL0YsTUFBTUMsK0JBQStCLFNBQ2hDUSx3Q0FBbUIsQ0FFL0I7RUFZV0MsV0FBV0EsQ0FDZEMsYUFBMkIsRUFDM0JDLHFCQUE2QixFQUM3QkMsNEJBQXFDLEVBQ3JDQyxlQUF1QixFQUN2QkMsY0FBdUIsRUFDdkJDLE9BQWdCLEdBQUcsS0FBSyxFQUMxQjtJQUNFLEtBQUssQ0FBQyxDQUFDO0lBQUMsS0FuQktDLGdCQUFnQjtJQUFBLEtBQ2hCQyxvQkFBb0I7SUFBQSxLQUM3QkMsWUFBWSxHQUFHLEtBQUs7SUFBQSxLQUNYQyxVQUFVLEdBQXNELENBQUMsQ0FBQztJQUFBLEtBQ2xFUixxQkFBcUI7SUFBQSxLQUNyQkQsYUFBYTtJQUFBLEtBQ2JFLDRCQUE0QjtJQUFBLEtBQzVCQyxlQUFlO0lBQUEsS0FDZkUsT0FBTztJQUFBLEtBQ1BELGNBQWM7SUFXM0IsSUFBSSxDQUFDQyxPQUFPLEdBQUdBLE9BQU87SUFDdEIsSUFBSSxDQUFDQyxnQkFBZ0IsR0FBR04sYUFBYSxDQUFDVSxHQUFHLENBQUNDLElBQUksSUFBSSxJQUFJQyw0QkFBYSxDQUFDRCxJQUFJLENBQUNFLGFBQWEsQ0FBQyxDQUFDO0lBQ3hGLElBQUksQ0FBQ04sb0JBQW9CLEdBQUdQLGFBQWEsQ0FBQ1UsR0FBRyxDQUFDQyxJQUFJLElBQUlBLElBQUksQ0FBQ0UsYUFBYSxDQUFDO0lBQ3pFLElBQUksQ0FBQ1oscUJBQXFCLEdBQUdBLHFCQUFxQjtJQUNsRCxJQUFJLENBQUNELGFBQWEsR0FBR0EsYUFBYTtJQUNsQyxJQUFJLENBQUNFLDRCQUE0QixHQUFHQSw0QkFBNEI7SUFDaEUsSUFBSSxDQUFDQyxlQUFlLEdBQUdBLGVBQWU7SUFDdEMsSUFBSSxDQUFDQyxjQUFjLEdBQUdBLGNBQWM7RUFDeEM7RUFFQSxNQUthVSxzQkFBc0JBLENBQUNDLFVBQWtCLEVBQXlCO0lBQzNFLE9BQU8sTUFBTSxJQUFJLENBQUNDLHVDQUF1QyxDQUFFLFVBQVNELFVBQVcsa0JBQWlCLENBQUM7RUFDckc7RUFFQSxNQUthRSxvQkFBb0JBLENBQUNGLFVBQWtCLEVBQXlCO0lBQ3pFLE9BQU8sTUFBTSxJQUFJLENBQUNDLHVDQUF1QyxDQUFFLFVBQVNELFVBQVcsZ0JBQWUsQ0FBQztFQUNuRztFQUVBLE1BS2FHLHVCQUF1QkEsQ0FBQ0gsVUFBa0IsRUFBeUI7SUFDNUUsT0FBTyxNQUFNLElBQUksQ0FBQ0MsdUNBQXVDLENBQUUsVUFBU0QsVUFBVyxvQkFBbUIsQ0FBQztFQUN2RztFQUVBLE1BT2FJLGFBQWFBLENBQUNDLFFBQWdCLEVBQUVDLGtCQUEwQixFQUFFQyxHQUFXLEVBQXlCO0lBQ3pHLE1BQU1DLGtCQUFrQixHQUFHLE1BQU0sSUFBSSxDQUFDQyw2QkFBNkIsQ0FBQ0YsR0FBRyxDQUFDO0lBQ3hFLE9BQU8sSUFBSUcsaUNBQVksQ0FBQyxNQUFNRixrQkFBa0IsQ0FBQ0csZUFBZSxDQUFFLHlCQUF3Qk4sUUFBUyxFQUFDLENBQUMsQ0FBQztFQUMxRztFQUVBLE1BUWFPLFlBQVlBLENBQ3JCUCxRQUFnQixFQUNoQkMsa0JBQTBCLEVBQzFCQyxHQUFXLEVBQ1hNLEtBQXlCLEVBQ0o7SUFDckIsTUFBTUwsa0JBQWtCLEdBQUcsTUFBTSxJQUFJLENBQUNDLDZCQUE2QixDQUFDRixHQUFHLENBQUM7SUFDeEUsT0FBTyxJQUFJRyxpQ0FBWSxDQUNuQixNQUFNRixrQkFBa0IsQ0FBQ0csZUFBZSxDQUFFLHdCQUF1Qk4sUUFBUSxDQUFDUyxPQUFPLENBQUNELEtBQUssYUFBTEEsS0FBSyxjQUFMQSxLQUFLLEdBQUksRUFBRSxFQUFFLEVBQUUsQ0FBRSxFQUFDLENBQ3hHLENBQUM7RUFDTDtFQUVBLE1BQ2FFLGFBQWFBLENBQUNWLFFBQWdCLEVBQXlCO0lBQ2hFLE9BQU8sTUFBTSxJQUFJLENBQUNKLHVDQUF1QyxDQUNwRCx3QkFBdUJJLFFBQVMsRUFBQyxFQUNsQ1csa0JBQUksQ0FBQ0MsTUFBTSxDQUFDWixRQUFRLENBQ3hCLENBQUM7RUFDTDtFQUVBLE1BQWNKLHVDQUF1Q0EsQ0FBQ2lCLFFBQWdCLEVBQUVDLFFBQXlCLEVBQUU7SUFDL0YsS0FBSyxNQUFNQyxTQUFTLElBQUlDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLElBQUksQ0FBQzVCLFVBQVUsQ0FBQyxFQUFFO01BQ3BELElBQUkwQixTQUFTLElBQUlHLFNBQVMsRUFBRTtRQUN4QixJQUFJO1VBQ0EsT0FBTyxJQUFJYixpQ0FBWSxDQUFDLE1BQU1VLFNBQVMsQ0FBQ1QsZUFBZSxDQUFDTyxRQUFRLENBQUMsRUFBRUMsUUFBUSxDQUFDO1FBQ2hGLENBQUMsQ0FBQyxNQUFNO1VBQ0o7UUFBQTtNQUVSO0lBQ0o7SUFDQSxNQUFNLElBQUlLLGtDQUFnQixDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQztFQUN0RDtFQUVBLE1BQWFDLDZCQUE2QkEsQ0FBQSxFQUFzQjtJQUM1RCxNQUFNQyxNQUFnQixHQUFHLEVBQUU7SUFDM0IsTUFBTUMsYUFBYSxHQUFHLENBQUMsTUFBTUMsT0FBTyxDQUFDQyxHQUFHLENBQUMsSUFBSSxDQUFDdEMsZ0JBQWdCLENBQUNJLEdBQUcsQ0FBQ21DLENBQUMsSUFBSUEsQ0FBQyxDQUFDQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFQyxJQUFJLENBQUMsQ0FBQztJQUN6RyxLQUFLLE1BQU1DLFlBQVksSUFBSU4sYUFBYSxFQUFFO01BQ3RDRCxNQUFNLENBQUNRLElBQUksQ0FBRSxHQUFFRCxZQUFZLENBQUMxQixHQUFJLE9BQU0sQ0FBQztJQUMzQztJQUNBLE9BQU9tQixNQUFNO0VBQ2pCO0VBRUEsTUFBYVMsNkJBQTZCQSxDQUFDNUIsR0FBVyxFQUFrQztJQUNwRixNQUFNQyxrQkFBa0IsR0FBRyxNQUFNLElBQUksQ0FBQ0MsNkJBQTZCLENBQUNGLEdBQUcsQ0FBQztJQUN4RSxNQUFNNkIsWUFBWSxHQUFHLE1BQU01QixrQkFBa0IsQ0FBQzZCLHdCQUF3QixDQUFFLHNCQUFxQixDQUFDO0lBQzlGLE9BQU9ELFlBQVk7RUFDdkI7RUFFQSxNQUFhRSw0QkFBNEJBLENBQUEsRUFBc0I7SUFDM0QsTUFBTVosTUFBZ0IsR0FBRyxFQUFFO0lBQzNCLE1BQU1DLGFBQWEsR0FBRyxDQUFDLE1BQU1DLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLElBQUksQ0FBQ3RDLGdCQUFnQixDQUFDSSxHQUFHLENBQUNtQyxDQUFDLElBQUlBLENBQUMsQ0FBQ0MsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRUMsSUFBSSxDQUFDLENBQUM7SUFDekcsS0FBSyxNQUFNQyxZQUFZLElBQUlOLGFBQWEsRUFBRTtNQUFBLElBQUFZLHFCQUFBLEVBQUFDLG9CQUFBO01BQ3RDLE1BQU1DLFlBQVksR0FBRyxDQUNqQixNQUFNYixPQUFPLENBQUNDLEdBQUcsQ0FBQyxJQUFJLENBQUN0QyxnQkFBZ0IsQ0FBQ0ksR0FBRyxDQUFDbUMsQ0FBQyxJQUFJQSxDQUFDLENBQUNZLGVBQWUsQ0FBQ1QsWUFBWSxDQUFDMUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUVyRnlCLElBQUksQ0FBQyxDQUFDLENBQ05XLE1BQU0sQ0FBQ2IsQ0FBQyxJQUFJQSxDQUFDLElBQUlQLFNBQVMsQ0FBQztNQUNoQyxJQUFJa0IsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJbEIsU0FBUyxFQUFFO1FBQzlCLE1BQU1xQixLQUFLLENBQUUsT0FBTVgsWUFBWSxDQUFDMUIsR0FBSSwwQkFBeUIsQ0FBQztNQUNsRTtNQUNBLE1BQU1zQyxVQUFVLEdBQUcsTUFBTSxJQUFBQywrQkFBYyxFQUFDTCxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBQU0sdUJBQVMsRUFBQyxDQUFDLENBQUM7TUFDckUsTUFBTUMsK0JBQStCLElBQUFULHFCQUFBLElBQUFDLG9CQUFBLEdBQUdLLFVBQVUsQ0FBQ0ksUUFBUSxjQUFBVCxvQkFBQSx1QkFBbkJBLG9CQUFBLENBQXFCUSwrQkFBK0IsY0FBQVQscUJBQUEsY0FBQUEscUJBQUEsR0FBSSxLQUFLO01BQ3JHLElBQUlTLCtCQUErQixFQUFFO1FBQ2pDdEIsTUFBTSxDQUFDUSxJQUFJLENBQUUsR0FBRUQsWUFBWSxDQUFDMUIsR0FBSSxZQUFXLENBQUM7TUFDaEQ7SUFDSjtJQUNBLE9BQU9tQixNQUFNO0VBQ2pCO0VBRUEsTUFBYXdCLDJCQUEyQkEsQ0FBQzNDLEdBQVcsRUFBa0M7SUFDbEYsTUFBTUMsa0JBQWtCLEdBQUcsTUFBTSxJQUFJLENBQUNDLDZCQUE2QixDQUFDRixHQUFHLENBQUM7SUFDeEUsTUFBTTZCLFlBQVksR0FBRyxNQUFNNUIsa0JBQWtCLENBQUM2Qix3QkFBd0IsQ0FBRSxzQkFBcUIsQ0FBQztJQUM5RixPQUFPRCxZQUFZO0VBQ3ZCO0VBRUEsTUFBYzNCLDZCQUE2QkEsQ0FBQ0YsR0FBVyxFQUErQjtJQUNsRixJQUFJYSxTQUFTLEdBQUcsSUFBSSxDQUFDMUIsVUFBVSxDQUFDYSxHQUFHLENBQUM7SUFDcEMsSUFBSWEsU0FBUyxJQUFJRyxTQUFTLEVBQUU7TUFDeEJILFNBQVMsR0FBRyxJQUFJK0Isc0NBQWtCLENBQzlCLElBQUksQ0FBQzFELFlBQVksRUFBRSxFQUNuQixJQUFJLENBQUNELG9CQUFvQixFQUN6QmUsR0FBRyxFQUNILElBQUksQ0FBQ3JCLHFCQUFxQixFQUMxQixJQUFJLENBQUNELGFBQWEsRUFDbEIsSUFBSSxDQUFDRSw0QkFBNEIsRUFDakMsSUFBSSxDQUFDQyxlQUFlLEVBQ3BCLElBQUksQ0FBQ0MsY0FBYyxFQUNuQixLQUFLLEVBQ0wsSUFBSSxDQUFDQyxPQUNULENBQUM7TUFDRCxJQUFJLENBQUNJLFVBQVUsQ0FBQ2EsR0FBRyxDQUFDLEdBQUdhLFNBQVM7TUFDaEMsTUFBTUEsU0FBUyxDQUFDZ0MsS0FBSyxDQUFDLENBQUM7SUFDM0I7SUFDQSxPQUFPaEMsU0FBUztFQUNwQjtBQUNKLENBQUMsT0FBQWlDLDBCQUFBLENBQUFDLE9BQUEsRUFBQWhGLE1BQUEsQ0FBQWlGLFNBQUEsNkJBQUF2RixJQUFBLEdBQUFxRCxNQUFBLENBQUFtQyx3QkFBQSxDQUFBbEYsTUFBQSxDQUFBaUYsU0FBQSw2QkFBQWpGLE1BQUEsQ0FBQWlGLFNBQUEsT0FBQUYsMEJBQUEsQ0FBQUMsT0FBQSxFQUFBaEYsTUFBQSxDQUFBaUYsU0FBQSwyQkFBQXRGLEtBQUEsR0FBQW9ELE1BQUEsQ0FBQW1DLHdCQUFBLENBQUFsRixNQUFBLENBQUFpRixTQUFBLDJCQUFBakYsTUFBQSxDQUFBaUYsU0FBQSxPQUFBRiwwQkFBQSxDQUFBQyxPQUFBLEVBQUFoRixNQUFBLENBQUFpRixTQUFBLDhCQUFBckYsS0FBQSxHQUFBbUQsTUFBQSxDQUFBbUMsd0JBQUEsQ0FBQWxGLE1BQUEsQ0FBQWlGLFNBQUEsOEJBQUFqRixNQUFBLENBQUFpRixTQUFBLE9BQUFGLDBCQUFBLENBQUFDLE9BQUEsRUFBQWhGLE1BQUEsQ0FBQWlGLFNBQUEsb0JBQUFwRixLQUFBLEdBQUFrRCxNQUFBLENBQUFtQyx3QkFBQSxDQUFBbEYsTUFBQSxDQUFBaUYsU0FBQSxvQkFBQWpGLE1BQUEsQ0FBQWlGLFNBQUEsT0FBQUYsMEJBQUEsQ0FBQUMsT0FBQSxFQUFBaEYsTUFBQSxDQUFBaUYsU0FBQSxtQkFBQW5GLEtBQUEsR0FBQWlELE1BQUEsQ0FBQW1DLHdCQUFBLENBQUFsRixNQUFBLENBQUFpRixTQUFBLG1CQUFBakYsTUFBQSxDQUFBaUYsU0FBQSxPQUFBRiwwQkFBQSxDQUFBQyxPQUFBLEVBQUFoRixNQUFBLENBQUFpRixTQUFBLG9CQUFBbEYsS0FBQSxHQUFBZ0QsTUFBQSxDQUFBbUMsd0JBQUEsQ0FBQWxGLE1BQUEsQ0FBQWlGLFNBQUEsb0JBQUFqRixNQUFBLENBQUFpRixTQUFBLElBQUFqRixNQUFBO0FBQUFtRixPQUFBLENBQUFsRiwrQkFBQSxHQUFBQSwrQkFBQSJ9
119
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX21pbWVUeXBlcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX01ldGhvZHMiLCJfTm90Rm91bmRXZWJFcnJvciIsIl9QYXJhbXMiLCJfUmVzdWx0cyIsIl9TdHJlYW1SZXN1bHRIYW5kbGVyIiwiX1NpbmdsZXRvbkNvbnRyb2xsZXIiLCJfU3RhdGljTG9nZ2VyIiwiX1dlbGxLbm93bkRpcmVjdG9yaWVzIiwiX0J1aWxkRm9ybURldlNlcnZlciIsIl9GYXJtRGlyZWN0b3J5IiwiX2RlYyIsIl9kZWMyIiwiX2RlYzMiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfY2xhc3MiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiQnVpbGRTZXJ2ZXJCdWlsZEZvcm1zQ29udHJvbGxlciIsImh0dHBHZXQiLCJodHRwUmV0dXJuIiwiU3RyZWFtV2l0aE1pbWUiLCJodHRwVXJsUGFyYW0iLCJodHRwVHlwZSIsIlN0cmluZyIsIlN0cmVhbSIsIlNpbmdsZXRvbkNvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImFsbEZhcm1Db25maWciLCJjYW5keU1vZHVsZXNEaXJlY3RvcnkiLCJ1c2VHZW5lcmF0b3JGcm9tTG9jYWxTb3VyY2VzIiwiZW5naW5lRGlyZWN0b3J5IiwiYnVpbGREZWJ1Z09ubHkiLCJuaWdodGx5IiwiYWxsRmFybURpcmVjdG9yeSIsImFsbEZhcm1EaXJlY3RvcnlQYXRoIiwibmV4dEZyZWVQb3J0IiwiZGV2U2VydmVycyIsIm1hcCIsImZhcm0iLCJGYXJtRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsImdldERldlNlcnZlclVwZGF0ZUpzb24iLCJ1cGRhdGVOYW1lIiwiZ2V0Rmlyc3RFeGlzdHNGaWxlQXNTdHJlYW1Gcm9tRGV2U2VydmVyIiwiZ2V0RGV2U2VydmVyVXBkYXRlSnMiLCJnZXREZXZTZXJ2ZXJVcGRhdGVKc01hcCIsImdldEZvcm1TY3JpcHQiLCJmaWxlTmFtZSIsImZpbGVOYW1lV2l0aG91dEV4dCIsImdmdiIsImJ1aWxkRm9ybURldlNlcnZlciIsImdldE9yQ3JlYXRlQnVpbGRGb3JtRGV2U2VydmVyIiwiU3RyZWFtUmVzdWx0IiwiZ2V0RmlsZUFzU3RyZWFtIiwiZ2V0Rm9ybVN0eWxlIiwidGhlbWUiLCJyZXBsYWNlIiwiZ2V0Rm9ybUltYWdlcyIsIm1pbWUiLCJsb29rdXAiLCJmaWxlbmFtZSIsIm1pbWVUeXBlIiwiZGV2U2VydmVyIiwidmFsdWVzIiwidW5kZWZpbmVkIiwiTm90Rm91bmRXZWJFcnJvciIsImdldEFsbEF0dGFjaG1lbnRQYXRoRmlsZU5hbWVzIiwiUHJvbWlzZSIsImFsbCIsImkiLCJnZXRBbGxHZnZzIiwiZmxhdCIsImdldEF0dGFjaG1lbnRQYXRoc0ZpbGVDb250ZW50IiwicmVzdWx0U3RyZWFtIiwiZ2V0R2VuZXJhdGVkRmlsZUFzU3RyZWFtIiwiZ2V0QWxsTm9ybWFsaXphdGlvbkZpbGVOYW1lcyIsInJlc3VsdCIsImdmdkluZm9zIiwiZ2V0QWxsR2Z2V2l0aExvY2F0aW9ucyIsImZvcm1QYXRoIiwiX2Zvcm1Db25maWckc2V0dGluZ3MkIiwiX2Zvcm1Db25maWckc2V0dGluZ3MiLCJmb3JtQ29uZmlnIiwicmVhZEZvcm1Db25maWciLCJqb2luIiwiV2VsbEtub3duRGlyZWN0b3JpZXMiLCJGb3JtSnNvbkZpbGVOYW1lIiwiZ2V0TG9nZ2VyIiwidXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbiIsInNldHRpbmdzIiwicHVzaCIsImdldE5vcm1hbGl6YXRpb25GaWxlQ29udGVudCIsIkJ1aWxkRm9ybURldlNlcnZlciIsInN0YXJ0IiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcjIiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL0J1aWxkU2VydmVyL1Jlc291cmNlc0NvbnRyb2xsZXJzL0J1aWxkU2VydmVyQnVpbGRGb3Jtc0NvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgbWltZSBmcm9tIFwibWltZS10eXBlc1wiO1xuaW1wb3J0IHsgRmFybUNvbmZpZyB9IGZyb20gXCJUb29scy9zcmMvQ2FuZHlDTElcIjtcblxuaW1wb3J0IHsgcmVhZEZvcm1Db25maWcgfSBmcm9tIFwiLi4vLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IGh0dHBHZXQgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvTWV0aG9kc1wiO1xuaW1wb3J0IHsgTm90Rm91bmRXZWJFcnJvciB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9Ob3RGb3VuZFdlYkVycm9yXCI7XG5pbXBvcnQgeyBodHRwVHlwZSwgaHR0cFVybFBhcmFtIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1BhcmFtc1wiO1xuaW1wb3J0IHsgaHR0cFJldHVybiB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9SZXN1bHRzXCI7XG5pbXBvcnQgeyBTdHJlYW1SZXN1bHQgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUmVzdWx0cy9TdHJlYW1SZXN1bHRIYW5kbGVyXCI7XG5pbXBvcnQgeyBTaW5nbGV0b25Db250cm9sbGVyIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9FeHByZXNzV3JhcHBlci9TaW5nbGV0b25Db250cm9sbGVyXCI7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL1N0YXRpY0xvZ2dlclwiO1xuaW1wb3J0IHsgV2VsbEtub3duRGlyZWN0b3JpZXMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL1dlbGxLbm93bkRpcmVjdG9yaWVzXCI7XG5cbmltcG9ydCB7IEJ1aWxkRm9ybURldlNlcnZlciB9IGZyb20gXCIuL0RldlNlcnZlcnMvQnVpbGRGb3JtRGV2U2VydmVyXCI7XG5pbXBvcnQgeyBGYXJtRGlyZWN0b3J5IH0gZnJvbSBcIi4vRGlyZWN0b3JpZXMvRmFybURpcmVjdG9yeVwiO1xuaW1wb3J0IHsgSUdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIgfSBmcm9tIFwiLi9JR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlclwiO1xuXG5leHBvcnQgY2xhc3MgQnVpbGRTZXJ2ZXJCdWlsZEZvcm1zQ29udHJvbGxlclxuICAgIGV4dGVuZHMgU2luZ2xldG9uQ29udHJvbGxlclxuICAgIGltcGxlbWVudHMgSUdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXJcbntcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsbEZhcm1EaXJlY3Rvcnk6IEZhcm1EaXJlY3RvcnlbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsbEZhcm1EaXJlY3RvcnlQYXRoOiBzdHJpbmdbXTtcbiAgICBwcml2YXRlIG5leHRGcmVlUG9ydCA9IDEyMDAxO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGV2U2VydmVyczogeyBbZ2Z2OiBzdHJpbmddOiB1bmRlZmluZWQgfCBCdWlsZEZvcm1EZXZTZXJ2ZXIgfSA9IHt9O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FuZHlNb2R1bGVzRGlyZWN0b3J5OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGxGYXJtQ29uZmlnOiBGYXJtQ29uZmlnW107XG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VHZW5lcmF0b3JGcm9tTG9jYWxTb3VyY2VzOiBib29sZWFuO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuaWdodGx5OiBib29sZWFuO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYnVpbGREZWJ1Z09ubHk6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIGFsbEZhcm1Db25maWc6IEZhcm1Db25maWdbXSxcbiAgICAgICAgY2FuZHlNb2R1bGVzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIHVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXM6IGJvb2xlYW4sXG4gICAgICAgIGVuZ2luZURpcmVjdG9yeTogc3RyaW5nLFxuICAgICAgICBidWlsZERlYnVnT25seTogYm9vbGVhbixcbiAgICAgICAgbmlnaHRseTogYm9vbGVhbiA9IGZhbHNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubmlnaHRseSA9IG5pZ2h0bHk7XG4gICAgICAgIHRoaXMuYWxsRmFybURpcmVjdG9yeSA9IGFsbEZhcm1Db25maWcubWFwKGZhcm0gPT4gbmV3IEZhcm1EaXJlY3RvcnkoZmFybS5mYXJtRGlyZWN0b3J5KSk7XG4gICAgICAgIHRoaXMuYWxsRmFybURpcmVjdG9yeVBhdGggPSBhbGxGYXJtQ29uZmlnLm1hcChmYXJtID0+IGZhcm0uZmFybURpcmVjdG9yeSk7XG4gICAgICAgIHRoaXMuY2FuZHlNb2R1bGVzRGlyZWN0b3J5ID0gY2FuZHlNb2R1bGVzRGlyZWN0b3J5O1xuICAgICAgICB0aGlzLmFsbEZhcm1Db25maWcgPSBhbGxGYXJtQ29uZmlnO1xuICAgICAgICB0aGlzLnVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXMgPSB1c2VHZW5lcmF0b3JGcm9tTG9jYWxTb3VyY2VzO1xuICAgICAgICB0aGlzLmVuZ2luZURpcmVjdG9yeSA9IGVuZ2luZURpcmVjdG9yeTtcbiAgICAgICAgdGhpcy5idWlsZERlYnVnT25seSA9IGJ1aWxkRGVidWdPbmx5O1xuICAgIH1cblxuICAgIEBodHRwR2V0KFxuICAgICAgICBcIi86dXBkYXRlLmhvdC11cGRhdGUuanNvblwiLFxuICAgICAgICBodHRwUmV0dXJuLlN0cmVhbVdpdGhNaW1lKFwiYXBwbGljYXRpb24vanNvblwiKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwidXBkYXRlXCIsIGh0dHBUeXBlLlN0cmluZylcbiAgICApXG4gICAgcHVibGljIGFzeW5jIGdldERldlNlcnZlclVwZGF0ZUpzb24odXBkYXRlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0Rmlyc3RFeGlzdHNGaWxlQXNTdHJlYW1Gcm9tRGV2U2VydmVyKGBzdGF0aWMvJHt1cGRhdGVOYW1lfS5ob3QtdXBkYXRlLmpzb25gKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcbiAgICAgICAgXCIvOnVwZGF0ZS5ob3QtdXBkYXRlLmpzXCIsXG4gICAgICAgIGh0dHBSZXR1cm4uU3RyZWFtV2l0aE1pbWUoXCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0XCIpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCJ1cGRhdGVcIiwgaHR0cFR5cGUuU3RyaW5nKVxuICAgIClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RGV2U2VydmVyVXBkYXRlSnModXBkYXRlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0Rmlyc3RFeGlzdHNGaWxlQXNTdHJlYW1Gcm9tRGV2U2VydmVyKGBzdGF0aWMvJHt1cGRhdGVOYW1lfS5ob3QtdXBkYXRlLmpzYCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIFwiLzp1cGRhdGUuaG90LXVwZGF0ZS5qcy5tYXBcIixcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcImFwcGxpY2F0aW9uL2pzb25cIiksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcInVwZGF0ZVwiLCBodHRwVHlwZS5TdHJpbmcpXG4gICAgKVxuICAgIHB1YmxpYyBhc3luYyBnZXREZXZTZXJ2ZXJVcGRhdGVKc01hcCh1cGRhdGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRGaXJzdEV4aXN0c0ZpbGVBc1N0cmVhbUZyb21EZXZTZXJ2ZXIoYHN0YXRpYy8ke3VwZGF0ZU5hbWV9LmhvdC11cGRhdGUuanMubWFwYCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIC9eXFwvcHVibGljXFwvc2NyaXB0c1xcLygoKFxcZHs2LDd9KSguW1xcd1xcLV0qKT8oLm1pbik/KS5qcykkL2ksXG4gICAgICAgIGh0dHBSZXR1cm4uU3RyZWFtV2l0aE1pbWUoXCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0XCIpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCIwXCIsIGh0dHBUeXBlLlN0cmluZyksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcIjFcIiwgaHR0cFR5cGUuU3RyaW5nKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiMlwiLCBodHRwVHlwZS5TdHJpbmcpXG4gICAgKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtU2NyaXB0KGZpbGVOYW1lOiBzdHJpbmcsIGZpbGVOYW1lV2l0aG91dEV4dDogc3RyaW5nLCBnZnY6IHN0cmluZyk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGJ1aWxkRm9ybURldlNlcnZlciA9IGF3YWl0IHRoaXMuZ2V0T3JDcmVhdGVCdWlsZEZvcm1EZXZTZXJ2ZXIoZ2Z2KTtcbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW1SZXN1bHQoYXdhaXQgYnVpbGRGb3JtRGV2U2VydmVyLmdldEZpbGVBc1N0cmVhbShgc3RhdGljL3B1YmxpYy9zY3JpcHRzLyR7ZmlsZU5hbWV9YCkpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFxuICAgICAgICAvXlxcL3B1YmxpY1xcL3N0eWxlc1xcLygoKFxcZHs2LDd9KSguW1xcd1xcLV0qKT8oLm1pbik/KS5jc3MpJC9pLFxuICAgICAgICBodHRwUmV0dXJuLlN0cmVhbVdpdGhNaW1lKFwidGV4dC9jc3NcIiksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcIjBcIiwgaHR0cFR5cGUuU3RyaW5nKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiMVwiLCBodHRwVHlwZS5TdHJpbmcpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCIyXCIsIGh0dHBUeXBlLlN0cmluZyksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcIjNcIiwgaHR0cFR5cGUuU3RyaW5nKVxuICAgIClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Rm9ybVN0eWxlKFxuICAgICAgICBmaWxlTmFtZTogc3RyaW5nLFxuICAgICAgICBmaWxlTmFtZVdpdGhvdXRFeHQ6IHN0cmluZyxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIHRoZW1lOiB1bmRlZmluZWQgfCBzdHJpbmdcbiAgICApOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBidWlsZEZvcm1EZXZTZXJ2ZXIgPSBhd2FpdCB0aGlzLmdldE9yQ3JlYXRlQnVpbGRGb3JtRGV2U2VydmVyKGdmdik7XG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtUmVzdWx0KFxuICAgICAgICAgICAgYXdhaXQgYnVpbGRGb3JtRGV2U2VydmVyLmdldEZpbGVBc1N0cmVhbShgc3RhdGljL3B1YmxpYy9zdHlsZXMvJHtmaWxlTmFtZS5yZXBsYWNlKHRoZW1lID8/IFwiXCIsIFwiXCIpfWApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcHVibGljL2ltYWdlcy86ZmlsZW5hbWVcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImZpbGVuYW1lXCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldEZvcm1JbWFnZXMoZmlsZU5hbWU6IHN0cmluZyk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldEZpcnN0RXhpc3RzRmlsZUFzU3RyZWFtRnJvbURldlNlcnZlcihcbiAgICAgICAgICAgIGBzdGF0aWMvcHVibGljL2ltYWdlcy8ke2ZpbGVOYW1lfWAsXG4gICAgICAgICAgICBtaW1lLmxvb2t1cChmaWxlTmFtZSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGdldEZpcnN0RXhpc3RzRmlsZUFzU3RyZWFtRnJvbURldlNlcnZlcihmaWxlbmFtZTogc3RyaW5nLCBtaW1lVHlwZT86IHN0cmluZyB8IGZhbHNlKSB7XG4gICAgICAgIGZvciAoY29uc3QgZGV2U2VydmVyIG9mIE9iamVjdC52YWx1ZXModGhpcy5kZXZTZXJ2ZXJzKSkge1xuICAgICAgICAgICAgaWYgKGRldlNlcnZlciAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFN0cmVhbVJlc3VsdChhd2FpdCBkZXZTZXJ2ZXIuZ2V0RmlsZUFzU3RyZWFtKGZpbGVuYW1lKSwgbWltZVR5cGUpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgICAgICAvLyB0cnkgbmV4dCBzZXJ2ZXJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kV2ViRXJyb3IoXCJGaWxlIG5vdCBmb3VuZFwiLCB0cnVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsQXR0YWNobWVudFBhdGhGaWxlTmFtZXMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICByZXR1cm4gKGF3YWl0IFByb21pc2UuYWxsKHRoaXMuYWxsRmFybURpcmVjdG9yeS5tYXAoaSA9PiBpLmdldEFsbEdmdnMoKSkpKS5mbGF0KCkubWFwKGdmdiA9PiBgJHtnZnZ9Lmpzb25gKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QXR0YWNobWVudFBhdGhzRmlsZUNvbnRlbnQoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPE5vZGVKUy5SZWFkYWJsZVN0cmVhbT4ge1xuICAgICAgICBjb25zdCBidWlsZEZvcm1EZXZTZXJ2ZXIgPSBhd2FpdCB0aGlzLmdldE9yQ3JlYXRlQnVpbGRGb3JtRGV2U2VydmVyKGdmdik7XG4gICAgICAgIGNvbnN0IHJlc3VsdFN0cmVhbSA9IGF3YWl0IGJ1aWxkRm9ybURldlNlcnZlci5nZXRHZW5lcmF0ZWRGaWxlQXNTdHJlYW0oYEF0dGFjaG1lbnRQYXRocy5qc29uYCk7XG4gICAgICAgIHJldHVybiByZXN1bHRTdHJlYW07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbE5vcm1hbGl6YXRpb25GaWxlTmFtZXMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGNvbnN0IGdmdkluZm9zID0gKGF3YWl0IFByb21pc2UuYWxsKHRoaXMuYWxsRmFybURpcmVjdG9yeS5tYXAoaSA9PiBpLmdldEFsbEdmdldpdGhMb2NhdGlvbnMoKSkpKS5mbGF0KCk7XG4gICAgICAgIGZvciAoY29uc3QgeyBnZnYsIGZvcm1QYXRoIH0gb2YgZ2Z2SW5mb3MpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1Db25maWcgPSBhd2FpdCByZWFkRm9ybUNvbmZpZyhcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4oZm9ybVBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpLFxuICAgICAgICAgICAgICAgIGdldExvZ2dlcigpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgdXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbiA9IGZvcm1Db25maWcuc2V0dGluZ3M/LnVzZVNlcnZlclNpZGVGTGFuZ05vcm1hbGl6YXRpb24gPz8gZmFsc2U7XG4gICAgICAgICAgICBpZiAodXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbikge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGAke2dmdn0ubm9ybWFsaXplYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0Tm9ybWFsaXphdGlvbkZpbGVDb250ZW50KGdmdjogc3RyaW5nKTogUHJvbWlzZTxOb2RlSlMuUmVhZGFibGVTdHJlYW0+IHtcbiAgICAgICAgY29uc3QgYnVpbGRGb3JtRGV2U2VydmVyID0gYXdhaXQgdGhpcy5nZXRPckNyZWF0ZUJ1aWxkRm9ybURldlNlcnZlcihnZnYpO1xuICAgICAgICBjb25zdCByZXN1bHRTdHJlYW0gPSBhd2FpdCBidWlsZEZvcm1EZXZTZXJ2ZXIuZ2V0R2VuZXJhdGVkRmlsZUFzU3RyZWFtKGBTZXJ2ZXJTaWRlLm5vcm1hbGl6ZWApO1xuICAgICAgICByZXR1cm4gcmVzdWx0U3RyZWFtO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZ2V0T3JDcmVhdGVCdWlsZEZvcm1EZXZTZXJ2ZXIoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEJ1aWxkRm9ybURldlNlcnZlcj4ge1xuICAgICAgICBsZXQgZGV2U2VydmVyID0gdGhpcy5kZXZTZXJ2ZXJzW2dmdl07XG4gICAgICAgIGlmIChkZXZTZXJ2ZXIgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBkZXZTZXJ2ZXIgPSBuZXcgQnVpbGRGb3JtRGV2U2VydmVyKFxuICAgICAgICAgICAgICAgIHRoaXMubmV4dEZyZWVQb3J0KyssXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxGYXJtRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgICAgICBnZnYsXG4gICAgICAgICAgICAgICAgdGhpcy5jYW5keU1vZHVsZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxGYXJtQ29uZmlnLFxuICAgICAgICAgICAgICAgIHRoaXMudXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcyxcbiAgICAgICAgICAgICAgICB0aGlzLmVuZ2luZURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkRGVidWdPbmx5LFxuICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgIHRoaXMubmlnaHRseVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZGV2U2VydmVyc1tnZnZdID0gZGV2U2VydmVyO1xuICAgICAgICAgICAgYXdhaXQgZGV2U2VydmVyLnN0YXJ0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRldlNlcnZlcjtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsSUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsVUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBR0EsSUFBQUcsZ0JBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFFBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLGlCQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxPQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxRQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxvQkFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsb0JBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLGFBQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLHFCQUFBLEdBQUFYLE9BQUE7QUFFQSxJQUFBWSxtQkFBQSxHQUFBWixPQUFBO0FB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
@@ -29,8 +29,7 @@ let BuildServerFormInfoController = (_dec = (0, _Methods.httpGet)("/metas", _Res
29
29
  this.useEngineFromLocalSources = useEngineFromLocalSources;
30
30
  }
31
31
  async getAllFormMetas() {
32
- const farmFormJsons = await Promise.all(this.allFarmDirectories.map(i => i.getAllFormJsonFiles()));
33
- return [...(await AsyncIterator.from(farmFormJsons.flat()).map(x => `${x.gfv}.metas.json`).toArray())].join("\n");
32
+ return (await Promise.all(this.allFarmDirectories.map(i => i.getAllGfvs()))).flat().map(x => `${x}.metas.json`).join("\n");
34
33
  }
35
34
  async getFormMeta(gfv) {
36
35
  if (this.useEngineFromLocalSources) {
@@ -64,4 +63,4 @@ let BuildServerFormInfoController = (_dec = (0, _Methods.httpGet)("/metas", _Res
64
63
  }
65
64
  }, ((0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllFormMetas", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "getAllFormMetas"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormMeta", [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, "getFormMeta"), _class.prototype)), _class));
66
65
  exports.BuildServerFormInfoController = BuildServerFormInfoController;
67
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX0VuZ2luZVZlcnNpb25VdGlscyIsIl9QdWJsaXNoZWRWZXJzaW9uVXRpbHMiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX01ldGhvZHMiLCJfUGFyYW1zIiwiX1Jlc3VsdHMiLCJfU2luZ2xldG9uQ29udHJvbGxlciIsIl9GYXJtRGlyZWN0b3J5IiwiX2RlYyIsIl9kZWMyIiwiX2NsYXNzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIkJ1aWxkU2VydmVyRm9ybUluZm9Db250cm9sbGVyIiwiaHR0cEdldCIsImh0dHBSZXR1cm4iLCJQbGFpblRleHQiLCJodHRwVXJsUGFyYW0iLCJodHRwVHlwZSIsIlN0cmluZyIsIlNpbmdsZXRvbkNvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImFsbEZhcm1Db25maWciLCJ1c2VFbmdpbmVGcm9tTG9jYWxTb3VyY2VzIiwibmlnaHRseSIsImFsbEZhcm1EaXJlY3RvcmllcyIsIm1hcCIsImkiLCJGYXJtRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsImdldEFsbEZvcm1NZXRhcyIsImZhcm1Gb3JtSnNvbnMiLCJQcm9taXNlIiwiYWxsIiwiZ2V0QWxsRm9ybUpzb25GaWxlcyIsIkFzeW5jSXRlcmF0b3IiLCJmcm9tIiwiZmxhdCIsIngiLCJnZnYiLCJ0b0FycmF5Iiwiam9pbiIsImdldEZvcm1NZXRhIiwibG9jYWxFbmdpbmVNZXRhQ29udGVudCIsImVuZ2luZU5hbWUiLCJyZXNvdXJjZXNIYXNoIiwiSlNPTiIsInN0cmluZ2lmeSIsInVuZGVmaW5lZCIsImZvcm1Kc29uRmlsZSIsImdldEZvcm1Kc29uUGF0aCIsImZpbHRlciIsIkVycm9yIiwiZm9ybUluZm8iLCJyZXNvbHZlRm9ybUluZm8iLCJkaXJuYW1lIiwiZW5naW5lVmVyc2lvbiIsInR5cGUiLCJwcmVJZCIsImVuZ2luZVNvdXJjZXMiLCJyZXNvbHZlRW5naW5lVmVyc2lvbiIsImZvcm1NZXRhQ29udGVudCIsIkVuZ2luZVZlcnNpb25VdGlscyIsImVuZ2luZVZlcnNpb25Ub05hbWUiLCJ2ZXJzaW9uIiwidGhlbWVzIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcjIiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL0J1aWxkU2VydmVyL1Jlc291cmNlc0NvbnRyb2xsZXJzL0J1aWxkU2VydmVyRm9ybUluZm9Db250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgRmFybUNvbmZpZyB9IGZyb20gXCJUb29scy9zcmMvQ2FuZHlDTElcIjtcblxuaW1wb3J0IHsgRW5naW5lVmVyc2lvblV0aWxzIH0gZnJvbSBcIi4uLy4uLy4uL0J1aWxkVGFza3MvRW5naW5lVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyByZXNvbHZlRW5naW5lVmVyc2lvbiB9IGZyb20gXCIuLi8uLi8uLi9CdWlsZFRhc2tzL1B1Ymxpc2hlZFZlcnNpb25VdGlsc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZUZvcm1JbmZvIH0gZnJvbSBcIi4uLy4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyBGb3JtTWV0YUNvbnRlbnQgfSBmcm9tIFwiLi4vLi4vLi4vQnVpbGRUYXNrcy9Xcml0ZUZvcm1NZXRhXCI7XG5pbXBvcnQgeyBodHRwR2V0IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL01ldGhvZHNcIjtcbmltcG9ydCB7IGh0dHBUeXBlLCBodHRwVXJsUGFyYW0gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUGFyYW1zXCI7XG5pbXBvcnQgeyBodHRwUmV0dXJuIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1Jlc3VsdHNcIjtcbmltcG9ydCB7IFNpbmdsZXRvbkNvbnRyb2xsZXIgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0V4cHJlc3NXcmFwcGVyL1NpbmdsZXRvbkNvbnRyb2xsZXJcIjtcbmltcG9ydCB7IENhbmR5VmVyc2lvblNwZWMgfSBmcm9tIFwiLi4vLi4vLi4vQnVpbGRUYXNrcy9WZXJzaW9uXCI7XG5cbmltcG9ydCB7IEZhcm1EaXJlY3RvcnkgfSBmcm9tIFwiLi9EaXJlY3Rvcmllcy9GYXJtRGlyZWN0b3J5XCI7XG5cbmV4cG9ydCBjbGFzcyBCdWlsZFNlcnZlckZvcm1JbmZvQ29udHJvbGxlciBleHRlbmRzIFNpbmdsZXRvbkNvbnRyb2xsZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsRmFybURpcmVjdG9yaWVzOiBGYXJtRGlyZWN0b3J5W107XG4gICAgcHJpdmF0ZSByZWFkb25seSBuaWdodGx5OiBib29sZWFuO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlRW5naW5lRnJvbUxvY2FsU291cmNlczogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihhbGxGYXJtQ29uZmlnOiBGYXJtQ29uZmlnW10sIHVzZUVuZ2luZUZyb21Mb2NhbFNvdXJjZXM6IGJvb2xlYW4sIG5pZ2h0bHk6IGJvb2xlYW4pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5uaWdodGx5ID0gbmlnaHRseTtcbiAgICAgICAgdGhpcy5hbGxGYXJtRGlyZWN0b3JpZXMgPSBhbGxGYXJtQ29uZmlnLm1hcChpID0+IG5ldyBGYXJtRGlyZWN0b3J5KGkuZmFybURpcmVjdG9yeSkpO1xuICAgICAgICB0aGlzLnVzZUVuZ2luZUZyb21Mb2NhbFNvdXJjZXMgPSB1c2VFbmdpbmVGcm9tTG9jYWxTb3VyY2VzO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL21ldGFzXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxGb3JtTWV0YXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgZmFybUZvcm1Kc29ucyA9IGF3YWl0IFByb21pc2UuYWxsKHRoaXMuYWxsRmFybURpcmVjdG9yaWVzLm1hcChpID0+IGkuZ2V0QWxsRm9ybUpzb25GaWxlcygpKSk7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAuLi4oYXdhaXQgQXN5bmNJdGVyYXRvci5mcm9tKGZhcm1Gb3JtSnNvbnMuZmxhdCgpKVxuICAgICAgICAgICAgICAgIC5tYXAoeCA9PiBgJHt4Lmdmdn0ubWV0YXMuanNvbmApXG4gICAgICAgICAgICAgICAgLnRvQXJyYXkoKSksXG4gICAgICAgIF0uam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9tZXRhcy86Z2Z2Lm1ldGFzLmpzb25cIiwgaHR0cFJldHVybi5QbGFpblRleHQsIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtTWV0YShnZnY6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGlmICh0aGlzLnVzZUVuZ2luZUZyb21Mb2NhbFNvdXJjZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGxvY2FsRW5naW5lTWV0YUNvbnRlbnQ6IEZvcm1NZXRhQ29udGVudCA9IHtcbiAgICAgICAgICAgICAgICBlbmdpbmVOYW1lOiBcImxvY2FsXCIsXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzSGFzaDogXCJsb2NhbC1oYXNoXCIsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGxvY2FsRW5naW5lTWV0YUNvbnRlbnQsIHVuZGVmaW5lZCwgXCIgIFwiKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb3JtSnNvbkZpbGUgPSAoYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5hbGxGYXJtRGlyZWN0b3JpZXMubWFwKGkgPT4gaS5nZXRGb3JtSnNvblBhdGgoZ2Z2KSkpKVxuICAgICAgICAgICAgLmZsYXQoKVxuICAgICAgICAgICAgLmZpbHRlcihpID0+IGkgIT0gdW5kZWZpbmVkKTtcbiAgICAgICAgaWYgKGZvcm1Kc29uRmlsZVswXSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGAke2dmdn0gbm90IGZvdW5kIGluIGZhcm0gZGlyZWN0b3JpZXNgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb3JtSW5mbyA9IGF3YWl0IHJlc29sdmVGb3JtSW5mbyhmb3JtSnNvbkZpbGVbMF0sIHBhdGguZGlybmFtZShmb3JtSnNvbkZpbGVbMF0pLCB1bmRlZmluZWQpO1xuICAgICAgICBjb25zdCBlbmdpbmVWZXJzaW9uOiB1bmRlZmluZWQgfCBDYW5keVZlcnNpb25TcGVjID0gdGhpcy5uaWdodGx5XG4gICAgICAgICAgICA/IHsgdHlwZTogXCJwcmVcIiwgcHJlSWQ6IFwibmlnaHRseVwiIH1cbiAgICAgICAgICAgIDogZm9ybUluZm8uZW5naW5lVmVyc2lvbjtcbiAgICAgICAgaWYgKGVuZ2luZVZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCIhISEhXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVuZ2luZVNvdXJjZXMgPSBhd2FpdCByZXNvbHZlRW5naW5lVmVyc2lvbihlbmdpbmVWZXJzaW9uKTtcbiAgICAgICAgY29uc3QgZm9ybU1ldGFDb250ZW50OiBGb3JtTWV0YUNvbnRlbnQgPSB7XG4gICAgICAgICAgICBlbmdpbmVOYW1lOlxuICAgICAgICAgICAgICAgIGVuZ2luZVNvdXJjZXMudHlwZSA9PT0gXCJMb2NhbEVuZ2luZVNvdXJjZXNcIlxuICAgICAgICAgICAgICAgICAgICA/IFwibG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICA6IEVuZ2luZVZlcnNpb25VdGlscy5lbmdpbmVWZXJzaW9uVG9OYW1lKGVuZ2luZVNvdXJjZXMudmVyc2lvbiksXG4gICAgICAgICAgICByZXNvdXJjZXNIYXNoOiBcImxvY2FsLWhhc2hcIixcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGZvcm1JbmZvLnRoZW1lcyAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGZvcm1NZXRhQ29udGVudC50aGVtZXMgPSBmb3JtSW5mby50aGVtZXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGZvcm1NZXRhQ29udGVudCwgdW5kZWZpbmVkLCBcIiAgXCIpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxJQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFJQSxJQUFBQyxtQkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsc0JBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLGdCQUFBLEdBQUFILE9BQUE7QUFFQSxJQUFBSSxRQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxPQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxRQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxvQkFBQSxHQUFBUCxPQUFBO0FBR0EsSUFBQVEsY0FBQSxHQUFBUixPQUFBO0FBQTRELElBQUFTLElBQUEsRUFBQUMsS0FBQSxFQUFBQyxNQUFBO0FBQUEsU0FBQUMseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLENBQUFDLFdBQUEsV0FBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxLQUFBRixXQUFBO0FBQUEsU0FBQWQsd0JBQUFrQixHQUFBLEVBQUFKLFdBQUEsU0FBQUEsV0FBQSxJQUFBSSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxXQUFBRCxHQUFBLFFBQUFBLEdBQUEsb0JBQUFBLEdBQUEsd0JBQUFBLEdBQUEsNEJBQUFFLE9BQUEsRUFBQUYsR0FBQSxVQUFBRyxLQUFBLEdBQUFSLHdCQUFBLENBQUFDLFdBQUEsT0FBQU8sS0FBQSxJQUFBQSxLQUFBLENBQUFDLEdBQUEsQ0FBQUosR0FBQSxZQUFBRyxLQUFBLENBQUFFLEdBQUEsQ0FBQUwsR0FBQSxTQUFBTSxNQUFBLFdBQUFDLHFCQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLEdBQUEsSUFBQVgsR0FBQSxRQUFBVyxHQUFBLGtCQUFBSCxNQUFBLENBQUFJLFNBQUEsQ0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFkLEdBQUEsRUFBQVcsR0FBQSxTQUFBSSxJQUFBLEdBQUFSLHFCQUFBLEdBQUFDLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQVYsR0FBQSxFQUFBVyxHQUFBLGNBQUFJLElBQUEsS0FBQUEsSUFBQSxDQUFBVixHQUFBLElBQUFVLElBQUEsQ0FBQUMsR0FBQSxLQUFBUixNQUFBLENBQUFDLGNBQUEsQ0FBQUgsTUFBQSxFQUFBSyxHQUFBLEVBQUFJLElBQUEsWUFBQVQsTUFBQSxDQUFBSyxHQUFBLElBQUFYLEdBQUEsQ0FBQVcsR0FBQSxTQUFBTCxNQUFBLENBQUFKLE9BQUEsR0FBQUYsR0FBQSxNQUFBRyxLQUFBLElBQUFBLEtBQUEsQ0FBQWEsR0FBQSxDQUFBaEIsR0FBQSxFQUFBTSxNQUFBLFlBQUFBLE1BQUE7QUFBQSxJQUUvQ1csNkJBQTZCLElBQUF6QixJQUFBLEdBWXJDLElBQUEwQixnQkFBTyxFQUFDLFFBQVEsRUFBRUMsbUJBQVUsQ0FBQ0MsU0FBUyxDQUFDLEVBQUEzQixLQUFBLEdBVXZDLElBQUF5QixnQkFBTyxFQUFDLHdCQUF3QixFQUFFQyxtQkFBVSxDQUFDQyxTQUFTLEVBQUUsSUFBQUMsb0JBQVksRUFBQyxLQUFLLEVBQUVDLGdCQUFRLENBQUNDLE1BQU0sQ0FBQyxDQUFDLEdBQUE3QixNQUFBLEdBdEIzRixNQUFNdUIsNkJBQTZCLFNBQVNPLHdDQUFtQixDQUFDO0VBSzVEQyxXQUFXQSxDQUFDQyxhQUEyQixFQUFFQyx5QkFBa0MsRUFBRUMsT0FBZ0IsRUFBRTtJQUNsRyxLQUFLLENBQUMsQ0FBQztJQUFDLEtBTEtDLGtCQUFrQjtJQUFBLEtBQ2xCRCxPQUFPO0lBQUEsS0FDUEQseUJBQXlCO0lBSXRDLElBQUksQ0FBQ0MsT0FBTyxHQUFHQSxPQUFPO0lBQ3RCLElBQUksQ0FBQ0Msa0JBQWtCLEdBQUdILGFBQWEsQ0FBQ0ksR0FBRyxDQUFDQyxDQUFDLElBQUksSUFBSUMsNEJBQWEsQ0FBQ0QsQ0FBQyxDQUFDRSxhQUFhLENBQUMsQ0FBQztJQUNwRixJQUFJLENBQUNOLHlCQUF5QixHQUFHQSx5QkFBeUI7RUFDOUQ7RUFFQSxNQUNhTyxlQUFlQSxDQUFBLEVBQW9CO0lBQzVDLE1BQU1DLGFBQWEsR0FBRyxNQUFNQyxPQUFPLENBQUNDLEdBQUcsQ0FBQyxJQUFJLENBQUNSLGtCQUFrQixDQUFDQyxHQUFHLENBQUNDLENBQUMsSUFBSUEsQ0FBQyxDQUFDTyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRyxPQUFPLENBQ0gsSUFBSSxNQUFNQyxhQUFhLENBQUNDLElBQUksQ0FBQ0wsYUFBYSxDQUFDTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQzdDWCxHQUFHLENBQUNZLENBQUMsSUFBSyxHQUFFQSxDQUFDLENBQUNDLEdBQUksYUFBWSxDQUFDLENBQy9CQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQ2xCLENBQUNDLElBQUksQ0FBQyxJQUFJLENBQUM7RUFDaEI7RUFFQSxNQUNhQyxXQUFXQSxDQUFDSCxHQUFXLEVBQW1CO0lBQ25ELElBQUksSUFBSSxDQUFDaEIseUJBQXlCLEVBQUU7TUFDaEMsTUFBTW9CLHNCQUF1QyxHQUFHO1FBQzVDQyxVQUFVLEVBQUUsT0FBTztRQUNuQkMsYUFBYSxFQUFFO01BQ25CLENBQUM7TUFDRCxPQUFPQyxJQUFJLENBQUNDLFNBQVMsQ0FBQ0osc0JBQXNCLEVBQUVLLFNBQVMsRUFBRSxJQUFJLENBQUM7SUFDbEU7SUFDQSxNQUFNQyxZQUFZLEdBQUcsQ0FBQyxNQUFNakIsT0FBTyxDQUFDQyxHQUFHLENBQUMsSUFBSSxDQUFDUixrQkFBa0IsQ0FBQ0MsR0FBRyxDQUFDQyxDQUFDLElBQUlBLENBQUMsQ0FBQ3VCLGVBQWUsQ0FBQ1gsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUM1RkYsSUFBSSxDQUFDLENBQUMsQ0FDTmMsTUFBTSxDQUFDeEIsQ0FBQyxJQUFJQSxDQUFDLElBQUlxQixTQUFTLENBQUM7SUFDaEMsSUFBSUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJRCxTQUFTLEVBQUU7TUFDOUIsTUFBTUksS0FBSyxDQUFFLEdBQUViLEdBQUksZ0NBQStCLENBQUM7SUFDdkQ7SUFDQSxNQUFNYyxRQUFRLEdBQUcsTUFBTSxJQUFBQyxnQ0FBZSxFQUFDTCxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUV4RSxJQUFJLENBQUM4RSxPQUFPLENBQUNOLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFRCxTQUFTLENBQUM7SUFDakcsTUFBTVEsYUFBMkMsR0FBRyxJQUFJLENBQUNoQyxPQUFPLEdBQzFEO01BQUVpQyxJQUFJLEVBQUUsS0FBSztNQUFFQyxLQUFLLEVBQUU7SUFBVSxDQUFDLEdBQ2pDTCxRQUFRLENBQUNHLGFBQWE7SUFDNUIsSUFBSUEsYUFBYSxJQUFJUixTQUFTLEVBQUU7TUFDNUIsTUFBTSxJQUFJSSxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQzNCO0lBQ0EsTUFBTU8sYUFBYSxHQUFHLE1BQU0sSUFBQUMsMkNBQW9CLEVBQUNKLGFBQWEsQ0FBQztJQUMvRCxNQUFNSyxlQUFnQyxHQUFHO01BQ3JDakIsVUFBVSxFQUNOZSxhQUFhLENBQUNGLElBQUksS0FBSyxvQkFBb0IsR0FDckMsT0FBTyxHQUNQSyxzQ0FBa0IsQ0FBQ0MsbUJBQW1CLENBQUNKLGFBQWEsQ0FBQ0ssT0FBTyxDQUFDO01BQ3ZFbkIsYUFBYSxFQUFFO0lBQ25CLENBQUM7SUFDRCxJQUFJUSxRQUFRLENBQUNZLE1BQU0sSUFBSWpCLFNBQVMsRUFBRTtNQUM5QmEsZUFBZSxDQUFDSSxNQUFNLEdBQUdaLFFBQVEsQ0FBQ1ksTUFBTTtJQUM1QztJQUNBLE9BQU9uQixJQUFJLENBQUNDLFNBQVMsQ0FBQ2MsZUFBZSxFQUFFYixTQUFTLEVBQUUsSUFBSSxDQUFDO0VBQzNEO0FBQ0osQ0FBQyxPQUFBa0IsMEJBQUEsQ0FBQXBFLE9BQUEsRUFBQVIsTUFBQSxDQUFBa0IsU0FBQSxzQkFBQXBCLElBQUEsR0FBQWdCLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWhCLE1BQUEsQ0FBQWtCLFNBQUEsc0JBQUFsQixNQUFBLENBQUFrQixTQUFBLE9BQUEwRCwwQkFBQSxDQUFBcEUsT0FBQSxFQUFBUixNQUFBLENBQUFrQixTQUFBLGtCQUFBbkIsS0FBQSxHQUFBZSxNQUFBLENBQUFFLHdCQUFBLENBQUFoQixNQUFBLENBQUFrQixTQUFBLGtCQUFBbEIsTUFBQSxDQUFBa0IsU0FBQSxJQUFBbEIsTUFBQTtBQUFBNkUsT0FBQSxDQUFBdEQsNkJBQUEsR0FBQUEsNkJBQUEifQ==
66
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX0VuZ2luZVZlcnNpb25VdGlscyIsIl9QdWJsaXNoZWRWZXJzaW9uVXRpbHMiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX01ldGhvZHMiLCJfUGFyYW1zIiwiX1Jlc3VsdHMiLCJfU2luZ2xldG9uQ29udHJvbGxlciIsIl9GYXJtRGlyZWN0b3J5IiwiX2RlYyIsIl9kZWMyIiwiX2NsYXNzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIkJ1aWxkU2VydmVyRm9ybUluZm9Db250cm9sbGVyIiwiaHR0cEdldCIsImh0dHBSZXR1cm4iLCJQbGFpblRleHQiLCJodHRwVXJsUGFyYW0iLCJodHRwVHlwZSIsIlN0cmluZyIsIlNpbmdsZXRvbkNvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImFsbEZhcm1Db25maWciLCJ1c2VFbmdpbmVGcm9tTG9jYWxTb3VyY2VzIiwibmlnaHRseSIsImFsbEZhcm1EaXJlY3RvcmllcyIsIm1hcCIsImkiLCJGYXJtRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsImdldEFsbEZvcm1NZXRhcyIsIlByb21pc2UiLCJhbGwiLCJnZXRBbGxHZnZzIiwiZmxhdCIsIngiLCJqb2luIiwiZ2V0Rm9ybU1ldGEiLCJnZnYiLCJsb2NhbEVuZ2luZU1ldGFDb250ZW50IiwiZW5naW5lTmFtZSIsInJlc291cmNlc0hhc2giLCJKU09OIiwic3RyaW5naWZ5IiwidW5kZWZpbmVkIiwiZm9ybUpzb25GaWxlIiwiZ2V0Rm9ybUpzb25QYXRoIiwiZmlsdGVyIiwiRXJyb3IiLCJmb3JtSW5mbyIsInJlc29sdmVGb3JtSW5mbyIsImRpcm5hbWUiLCJlbmdpbmVWZXJzaW9uIiwidHlwZSIsInByZUlkIiwiZW5naW5lU291cmNlcyIsInJlc29sdmVFbmdpbmVWZXJzaW9uIiwiZm9ybU1ldGFDb250ZW50IiwiRW5naW5lVmVyc2lvblV0aWxzIiwiZW5naW5lVmVyc2lvblRvTmFtZSIsInZlcnNpb24iLCJ0aGVtZXMiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yMiIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvQ0xJQ29tbWFuZHMvQnVpbGRTZXJ2ZXIvUmVzb3VyY2VzQ29udHJvbGxlcnMvQnVpbGRTZXJ2ZXJGb3JtSW5mb0NvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBGYXJtQ29uZmlnIH0gZnJvbSBcIlRvb2xzL3NyYy9DYW5keUNMSVwiO1xuXG5pbXBvcnQgeyBFbmdpbmVWZXJzaW9uVXRpbHMgfSBmcm9tIFwiLi4vLi4vLi4vQnVpbGRUYXNrcy9FbmdpbmVWZXJzaW9uVXRpbHNcIjtcbmltcG9ydCB7IHJlc29sdmVFbmdpbmVWZXJzaW9uIH0gZnJvbSBcIi4uLy4uLy4uL0J1aWxkVGFza3MvUHVibGlzaGVkVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyByZXNvbHZlRm9ybUluZm8gfSBmcm9tIFwiLi4vLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IEZvcm1NZXRhQ29udGVudCB9IGZyb20gXCIuLi8uLi8uLi9CdWlsZFRhc2tzL1dyaXRlRm9ybU1ldGFcIjtcbmltcG9ydCB7IGh0dHBHZXQgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvTWV0aG9kc1wiO1xuaW1wb3J0IHsgaHR0cFR5cGUsIGh0dHBVcmxQYXJhbSB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9QYXJhbXNcIjtcbmltcG9ydCB7IGh0dHBSZXR1cm4gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUmVzdWx0c1wiO1xuaW1wb3J0IHsgU2luZ2xldG9uQ29udHJvbGxlciB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvRXhwcmVzc1dyYXBwZXIvU2luZ2xldG9uQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgQ2FuZHlWZXJzaW9uU3BlYyB9IGZyb20gXCIuLi8uLi8uLi9CdWlsZFRhc2tzL1ZlcnNpb25cIjtcblxuaW1wb3J0IHsgRmFybURpcmVjdG9yeSB9IGZyb20gXCIuL0RpcmVjdG9yaWVzL0Zhcm1EaXJlY3RvcnlcIjtcblxuZXhwb3J0IGNsYXNzIEJ1aWxkU2VydmVyRm9ybUluZm9Db250cm9sbGVyIGV4dGVuZHMgU2luZ2xldG9uQ29udHJvbGxlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGxGYXJtRGlyZWN0b3JpZXM6IEZhcm1EaXJlY3RvcnlbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5pZ2h0bHk6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VFbmdpbmVGcm9tTG9jYWxTb3VyY2VzOiBib29sZWFuO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGFsbEZhcm1Db25maWc6IEZhcm1Db25maWdbXSwgdXNlRW5naW5lRnJvbUxvY2FsU291cmNlczogYm9vbGVhbiwgbmlnaHRseTogYm9vbGVhbikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm5pZ2h0bHkgPSBuaWdodGx5O1xuICAgICAgICB0aGlzLmFsbEZhcm1EaXJlY3RvcmllcyA9IGFsbEZhcm1Db25maWcubWFwKGkgPT4gbmV3IEZhcm1EaXJlY3RvcnkoaS5mYXJtRGlyZWN0b3J5KSk7XG4gICAgICAgIHRoaXMudXNlRW5naW5lRnJvbUxvY2FsU291cmNlcyA9IHVzZUVuZ2luZUZyb21Mb2NhbFNvdXJjZXM7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbWV0YXNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbEZvcm1NZXRhcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gKGF3YWl0IFByb21pc2UuYWxsKHRoaXMuYWxsRmFybURpcmVjdG9yaWVzLm1hcChpID0+IGkuZ2V0QWxsR2Z2cygpKSkpXG4gICAgICAgICAgICAuZmxhdCgpXG4gICAgICAgICAgICAubWFwKHggPT4gYCR7eH0ubWV0YXMuanNvbmApXG4gICAgICAgICAgICAuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9tZXRhcy86Z2Z2Lm1ldGFzLmpzb25cIiwgaHR0cFJldHVybi5QbGFpblRleHQsIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtTWV0YShnZnY6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGlmICh0aGlzLnVzZUVuZ2luZUZyb21Mb2NhbFNvdXJjZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGxvY2FsRW5naW5lTWV0YUNvbnRlbnQ6IEZvcm1NZXRhQ29udGVudCA9IHtcbiAgICAgICAgICAgICAgICBlbmdpbmVOYW1lOiBcImxvY2FsXCIsXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzSGFzaDogXCJsb2NhbC1oYXNoXCIsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGxvY2FsRW5naW5lTWV0YUNvbnRlbnQsIHVuZGVmaW5lZCwgXCIgIFwiKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb3JtSnNvbkZpbGUgPSAoYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5hbGxGYXJtRGlyZWN0b3JpZXMubWFwKGkgPT4gaS5nZXRGb3JtSnNvblBhdGgoZ2Z2KSkpKVxuICAgICAgICAgICAgLmZsYXQoKVxuICAgICAgICAgICAgLmZpbHRlcihpID0+IGkgIT0gdW5kZWZpbmVkKTtcbiAgICAgICAgaWYgKGZvcm1Kc29uRmlsZVswXSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGAke2dmdn0gbm90IGZvdW5kIGluIGZhcm0gZGlyZWN0b3JpZXNgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb3JtSW5mbyA9IGF3YWl0IHJlc29sdmVGb3JtSW5mbyhmb3JtSnNvbkZpbGVbMF0sIHBhdGguZGlybmFtZShmb3JtSnNvbkZpbGVbMF0pLCB1bmRlZmluZWQpO1xuICAgICAgICBjb25zdCBlbmdpbmVWZXJzaW9uOiB1bmRlZmluZWQgfCBDYW5keVZlcnNpb25TcGVjID0gdGhpcy5uaWdodGx5XG4gICAgICAgICAgICA/IHsgdHlwZTogXCJwcmVcIiwgcHJlSWQ6IFwibmlnaHRseVwiIH1cbiAgICAgICAgICAgIDogZm9ybUluZm8uZW5naW5lVmVyc2lvbjtcbiAgICAgICAgaWYgKGVuZ2luZVZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCIhISEhXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVuZ2luZVNvdXJjZXMgPSBhd2FpdCByZXNvbHZlRW5naW5lVmVyc2lvbihlbmdpbmVWZXJzaW9uKTtcbiAgICAgICAgY29uc3QgZm9ybU1ldGFDb250ZW50OiBGb3JtTWV0YUNvbnRlbnQgPSB7XG4gICAgICAgICAgICBlbmdpbmVOYW1lOlxuICAgICAgICAgICAgICAgIGVuZ2luZVNvdXJjZXMudHlwZSA9PT0gXCJMb2NhbEVuZ2luZVNvdXJjZXNcIlxuICAgICAgICAgICAgICAgICAgICA/IFwibG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICA6IEVuZ2luZVZlcnNpb25VdGlscy5lbmdpbmVWZXJzaW9uVG9OYW1lKGVuZ2luZVNvdXJjZXMudmVyc2lvbiksXG4gICAgICAgICAgICByZXNvdXJjZXNIYXNoOiBcImxvY2FsLWhhc2hcIixcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGZvcm1JbmZvLnRoZW1lcyAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGZvcm1NZXRhQ29udGVudC50aGVtZXMgPSBmb3JtSW5mby50aGVtZXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGZvcm1NZXRhQ29udGVudCwgdW5kZWZpbmVkLCBcIiAgXCIpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxJQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFJQSxJQUFBQyxtQkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsc0JBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLGdCQUFBLEdBQUFILE9BQUE7QUFFQSxJQUFBSSxRQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxPQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxRQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxvQkFBQSxHQUFBUCxPQUFBO0FBR0EsSUFBQVEsY0FBQSxHQUFBUixPQUFBO0FBQTRELElBQUFTLElBQUEsRUFBQUMsS0FBQSxFQUFBQyxNQUFBO0FBQUEsU0FBQUMseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLENBQUFDLFdBQUEsV0FBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxLQUFBRixXQUFBO0FBQUEsU0FBQWQsd0JBQUFrQixHQUFBLEVBQUFKLFdBQUEsU0FBQUEsV0FBQSxJQUFBSSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxXQUFBRCxHQUFBLFFBQUFBLEdBQUEsb0JBQUFB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