@kontur.candy/tools 2.138.0 → 2.140.0-debug

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/CHANGELOG.md +79 -0
  2. package/distr/Common/CandyApiClient/CandyApiClient.js +80 -9
  3. package/distr/Common/CandyApiClient/FakeCandyApiClient.js +26 -4
  4. package/distr/Common/CandyApiClient/Types/GetInner/ServerRawResponse.js +11 -0
  5. package/distr/Common/CandyApiClient/Types/MassActions/MassActionParameters.js +6 -0
  6. package/distr/Common/CandyApiClient/Types/Print/PrintResponse.js +6 -0
  7. package/distr/Common/CandyApiClient/Types/Print/PrintType.js +14 -0
  8. package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesOptions.js +6 -0
  9. package/distr/Common/HttpClient/HttpClient.js +5 -2
  10. package/distr/Common/IterableUtils.js +26 -1
  11. package/distr/Common/KCLangRuntimeUtils.js +10 -2
  12. package/distr/Common/ModelPath/BuildIterationSequence.js +3 -2
  13. package/distr/Common/ModelPath/ModelPath.js +15 -4
  14. package/distr/Common/StringArrayKey.js +4 -12
  15. package/distr/Common/UseShowOnce.js +88 -0
  16. package/distr/Common/hashUtils.js +17 -0
  17. package/distr/Tools/src/BuildTasks/Form/CompileForm.js +10 -4
  18. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js +45 -2
  19. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js +3 -1
  20. package/distr/Tools/src/BuildTasks/ResolveFormInfo.js +1 -1
  21. package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +6 -6
  22. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +46 -4
  23. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js +2 -2
  24. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js +12 -6
  25. package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +2 -2
  26. package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js +5 -2
  27. package/distr/Tools/src/Commons/ApiClient/ToolsApiClient.js +37 -0
  28. package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js +9 -7
  29. package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +5 -3
  30. package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js +1 -1
  31. package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
  32. package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
  33. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +151 -57
  34. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
  35. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +226 -137
  36. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
  37. package/package.json +1 -1
@@ -23,8 +23,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
23
23
 
24
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; }
25
25
 
26
- temp.track();
27
-
26
+ // temp.track();
28
27
  function tempMKDir(affixes) {
29
28
  return new Promise((resolve, reject) => {
30
29
  temp.mkdir(affixes, (err, result) => {
@@ -52,6 +51,9 @@ async function compileForm(gfv, themes, farmDirectory, resourcesDirectory, resou
52
51
  };
53
52
  const action = (0, _ILogger.buildActionBegin)(logger, "Compile");
54
53
  const formBuildTempDir = await tempMKDir(`candy-forms-${gfv}-build`);
54
+ logger.log("=== все компоненты для билда находятся в этой папке ====");
55
+ logger.log(formBuildTempDir);
56
+ logger.log("========================================================");
55
57
 
56
58
  const formBuildWebpackConfig = _path.default.join(formBuildTempDir, "webpack.config.js");
57
59
 
@@ -61,10 +63,14 @@ module.exports = createConfig(${JSON.stringify(options)})`, "utf8");
61
63
 
62
64
  const pathToWebPackExecutable = _path.default.join(require.resolve("webpack"), "..", "..", "..", ".bin", "webpack");
63
65
 
64
- await (0, _ExecUtils.execCommandAsync)(logger, `${pathToWebPackExecutable} --config ${formBuildWebpackConfig}`, {
66
+ const zzz = `${pathToWebPackExecutable} --config ${formBuildWebpackConfig}`;
67
+ logger.log("============== Команда на исполнение ==============");
68
+ logger.log(zzz);
69
+ logger.log("=======================================================");
70
+ await (0, _ExecUtils.execCommandAsync)(logger, zzz, {
65
71
  caption: "Compiling form",
66
72
  cwd: _path.default.dirname(formBuildWebpackConfig)
67
73
  });
68
74
  action.complete();
69
75
  }
70
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9CdWlsZFRhc2tzL0Zvcm0vQ29tcGlsZUZvcm0udHMiXSwibmFtZXMiOlsidGVtcCIsInRyYWNrIiwidGVtcE1LRGlyIiwiYWZmaXhlcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwibWtkaXIiLCJlcnIiLCJyZXN1bHQiLCJjb21waWxlRm9ybSIsImdmdiIsInRoZW1lcyIsImZhcm1EaXJlY3RvcnkiLCJyZXNvdXJjZXNEaXJlY3RvcnkiLCJyZXNvdXJjZXNIYXNoIiwiYnVpbGREZWJ1Z09ubHkiLCJwYXJlbnRMb2dnZXIiLCJidWlsZENhY2hlT3B0aW9ucyIsImxvZ2dlciIsIndpdGhQcmVmaXgiLCJwYXRoVG9XZWJwYWNrQ29uZmlnRmFjdG9yeSIsInJlcXVpcmUiLCJvcHRpb25zIiwiZm9ybXNEaXJlY3RvcnlQYXRoIiwicGF0aCIsImpvaW4iLCJyZXNvdXJjZXNEaXJlY3RvcnlQYXRoIiwibW9kZXMiLCJhY3Rpb24iLCJmb3JtQnVpbGRUZW1wRGlyIiwiZm9ybUJ1aWxkV2VicGFja0NvbmZpZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJwYXRoVG9XZWJQYWNrRXhlY3V0YWJsZSIsImNhcHRpb24iLCJjd2QiLCJkaXJuYW1lIiwiY29tcGxldGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFJQUEsSUFBSSxDQUFDQyxLQUFMOztBQUVBLFNBQVNDLFNBQVQsQ0FBbUJDLE9BQW5CLEVBQTBFO0FBQ3RFLFNBQU8sSUFBSUMsT0FBSixDQUFvQixDQUFDQyxPQUFELEVBQVVDLE1BQVYsS0FBcUI7QUFDNUNOLElBQUFBLElBQUksQ0FBQ08sS0FBTCxDQUFXSixPQUFYLEVBQW9CLENBQUNLLEdBQUQsRUFBTUMsTUFBTixLQUFpQjtBQUNqQyxVQUFJRCxHQUFKLEVBQVM7QUFDTEYsUUFBQUEsTUFBTSxDQUFDRSxHQUFELENBQU47QUFDSCxPQUZELE1BRU87QUFDSEgsUUFBQUEsT0FBTyxDQUFDSSxNQUFELENBQVA7QUFDSDtBQUNKLEtBTkQ7QUFPSCxHQVJNLENBQVA7QUFTSDs7QUFFTSxlQUFlQyxXQUFmLENBQ0hDLEdBREcsRUFFSEMsTUFGRyxFQUdIQyxhQUhHLEVBSUhDLGtCQUpHLEVBS0hDLGFBTEcsRUFNSEMsY0FORyxFQU9IQyxZQUFxQixHQUFHLDhCQVByQixFQVFIQyxpQkFSRyxFQVNVO0FBQ2IsUUFBTUMsTUFBTSxHQUFHRixZQUFZLENBQUNHLFVBQWIsQ0FBeUIsV0FBVVQsR0FBSSxFQUF2QyxDQUFmOztBQUNBLFFBQU1VLDBCQUEwQixHQUFHQyxPQUFPLENBQUNqQixPQUFSLGlFQUFuQzs7QUFFQSxRQUFNa0IsT0FBMEMsR0FBRztBQUMvQ1osSUFBQUEsR0FBRyxFQUFFQSxHQUQwQztBQUUvQ0ksSUFBQUEsYUFBYSxFQUFFQSxhQUZnQztBQUcvQ1MsSUFBQUEsa0JBQWtCLEVBQUVDLGNBQUtDLElBQUwsQ0FBVWIsYUFBVixFQUF5QixPQUF6QixDQUgyQjtBQUkvQ2MsSUFBQUEsc0JBQXNCLEVBQUViLGtCQUp1QjtBQUsvQ2MsSUFBQUEsS0FBSyxFQUFFWixjQUFjLEdBQUcsQ0FBQyxhQUFELENBQUgsR0FBcUIsQ0FBQyxZQUFELEVBQWUsYUFBZixDQUxLO0FBTS9DRSxJQUFBQSxpQkFBaUIsRUFBRUE7QUFONEIsR0FBbkQ7QUFTQSxRQUFNVyxNQUFNLEdBQUcsK0JBQWlCVixNQUFqQixFQUF5QixTQUF6QixDQUFmO0FBRUEsUUFBTVcsZ0JBQWdCLEdBQUcsTUFBTTVCLFNBQVMsQ0FBRSxlQUFjUyxHQUFJLFFBQXBCLENBQXhDOztBQUNBLFFBQU1vQixzQkFBc0IsR0FBR04sY0FBS0MsSUFBTCxDQUFVSSxnQkFBVixFQUE0QixtQkFBNUIsQ0FBL0I7O0FBQ0EsUUFBTSw2QkFDRkMsc0JBREUsRUFFRDtBQUNULCtCQUErQkMsSUFBSSxDQUFDQyxTQUFMLENBQWVaLDBCQUFmLENBQTJDO0FBQzFFLGdDQUFnQ1csSUFBSSxDQUFDQyxTQUFMLENBQWVWLE9BQWYsQ0FBd0IsR0FKOUMsRUFLRixNQUxFLENBQU47O0FBT0EsUUFBTVcsdUJBQXVCLEdBQUdULGNBQUtDLElBQUwsQ0FBVUosT0FBTyxDQUFDakIsT0FBUixDQUFnQixTQUFoQixDQUFWLEVBQXNDLElBQXRDLEVBQTRDLElBQTVDLEVBQWtELElBQWxELEVBQXdELE1BQXhELEVBQWdFLFNBQWhFLENBQWhDOztBQUNBLFFBQU0saUNBQWlCYyxNQUFqQixFQUEwQixHQUFFZSx1QkFBd0IsYUFBWUgsc0JBQXVCLEVBQXZGLEVBQTBGO0FBQzVGSSxJQUFBQSxPQUFPLEVBQUUsZ0JBRG1GO0FBRTVGQyxJQUFBQSxHQUFHLEVBQUVYLGNBQUtZLE9BQUwsQ0FBYU4sc0JBQWI7QUFGdUYsR0FBMUYsQ0FBTjtBQUtBRixFQUFBQSxNQUFNLENBQUNTLFFBQVA7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCAqIGFzIHRlbXAgZnJvbSBcInRlbXBcIjtcblxuaW1wb3J0IHsgZXhlY0NvbW1hbmRBc3luYyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0V4ZWNVdGlsc1wiO1xuaW1wb3J0IHsgd3JpdGVGaWxlQXN5bmMgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Gc1V0aWxzXCI7XG5pbXBvcnQgeyBidWlsZEFjdGlvbkJlZ2luLCBJTG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9JTG9nZ2VyXCI7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL1N0YXRpY0xvZ2dlclwiO1xuaW1wb3J0IHsgQ3JlYXRlV2VicGFja0NvbmZpZ3VyYXRpb25PcHRpb25zIH0gZnJvbSBcIi4uLy4uL0Zvcm1XZWJwYWNrQ29uZmlndXJhdGlvbi9jcmVhdGVGb3JtV2VicGFja0NvbmZpZ3VyYXRpb25cIjtcbmltcG9ydCB7IEZvcm1CdWlsZENhY2hlT3B0aW9ucyB9IGZyb20gXCIuLi8uLi9Gb3JtV2VicGFja0NvbmZpZ3VyYXRpb24vQ2FjaGVBc3NldHNQbHVnaW5cIjtcblxudGVtcC50cmFjaygpO1xuXG5mdW5jdGlvbiB0ZW1wTUtEaXIoYWZmaXhlcz86IHN0cmluZyB8IHRlbXAuQWZmaXhPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHRlbXAubWtkaXIoYWZmaXhlcywgKGVyciwgcmVzdWx0KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb21waWxlRm9ybShcbiAgICBnZnY6IHN0cmluZyxcbiAgICB0aGVtZXM6IHVuZGVmaW5lZCB8IHN0cmluZ1tdLFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICByZXNvdXJjZXNIYXNoOiBzdHJpbmcsXG4gICAgYnVpbGREZWJ1Z09ubHk6IGJvb2xlYW4sXG4gICAgcGFyZW50TG9nZ2VyOiBJTG9nZ2VyID0gZ2V0TG9nZ2VyKCksXG4gICAgYnVpbGRDYWNoZU9wdGlvbnM/OiBGb3JtQnVpbGRDYWNoZU9wdGlvbnNcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGxvZ2dlciA9IHBhcmVudExvZ2dlci53aXRoUHJlZml4KGBDT01QSUxFOiR7Z2Z2fWApO1xuICAgIGNvbnN0IHBhdGhUb1dlYnBhY2tDb25maWdGYWN0b3J5ID0gcmVxdWlyZS5yZXNvbHZlKFwiLi4vLi4vRm9ybVdlYnBhY2tDb25maWd1cmF0aW9uL2NyZWF0ZUZvcm1XZWJwYWNrQ29uZmlndXJhdGlvblwiKTtcblxuICAgIGNvbnN0IG9wdGlvbnM6IENyZWF0ZVdlYnBhY2tDb25maWd1cmF0aW9uT3B0aW9ucyA9IHtcbiAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgIHJlc291cmNlc0hhc2g6IHJlc291cmNlc0hhc2gsXG4gICAgICAgIGZvcm1zRGlyZWN0b3J5UGF0aDogcGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiksXG4gICAgICAgIHJlc291cmNlc0RpcmVjdG9yeVBhdGg6IHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgbW9kZXM6IGJ1aWxkRGVidWdPbmx5ID8gW1wiZGV2ZWxvcG1lbnRcIl0gOiBbXCJwcm9kdWN0aW9uXCIsIFwiZGV2ZWxvcG1lbnRcIl0sXG4gICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zOiBidWlsZENhY2hlT3B0aW9ucyxcbiAgICB9O1xuXG4gICAgY29uc3QgYWN0aW9uID0gYnVpbGRBY3Rpb25CZWdpbihsb2dnZXIsIFwiQ29tcGlsZVwiKTtcblxuICAgIGNvbnN0IGZvcm1CdWlsZFRlbXBEaXIgPSBhd2FpdCB0ZW1wTUtEaXIoYGNhbmR5LWZvcm1zLSR7Z2Z2fS1idWlsZGApO1xuICAgIGNvbnN0IGZvcm1CdWlsZFdlYnBhY2tDb25maWcgPSBwYXRoLmpvaW4oZm9ybUJ1aWxkVGVtcERpciwgXCJ3ZWJwYWNrLmNvbmZpZy5qc1wiKTtcbiAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhcbiAgICAgICAgZm9ybUJ1aWxkV2VicGFja0NvbmZpZyxcbiAgICAgICAgYFxuY29uc3QgY3JlYXRlQ29uZmlnID0gcmVxdWlyZSgke0pTT04uc3RyaW5naWZ5KHBhdGhUb1dlYnBhY2tDb25maWdGYWN0b3J5KX0pLmNyZWF0ZUNvbmZpZztcbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQ29uZmlnKCR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucyl9KWAsXG4gICAgICAgIFwidXRmOFwiXG4gICAgKTtcbiAgICBjb25zdCBwYXRoVG9XZWJQYWNrRXhlY3V0YWJsZSA9IHBhdGguam9pbihyZXF1aXJlLnJlc29sdmUoXCJ3ZWJwYWNrXCIpLCBcIi4uXCIsIFwiLi5cIiwgXCIuLlwiLCBcIi5iaW5cIiwgXCJ3ZWJwYWNrXCIpO1xuICAgIGF3YWl0IGV4ZWNDb21tYW5kQXN5bmMobG9nZ2VyLCBgJHtwYXRoVG9XZWJQYWNrRXhlY3V0YWJsZX0gLS1jb25maWcgJHtmb3JtQnVpbGRXZWJwYWNrQ29uZmlnfWAsIHtcbiAgICAgICAgY2FwdGlvbjogXCJDb21waWxpbmcgZm9ybVwiLFxuICAgICAgICBjd2Q6IHBhdGguZGlybmFtZShmb3JtQnVpbGRXZWJwYWNrQ29uZmlnKSxcbiAgICB9KTtcblxuICAgIGFjdGlvbi5jb21wbGV0ZSgpO1xufVxuIl19
76
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9CdWlsZFRhc2tzL0Zvcm0vQ29tcGlsZUZvcm0udHMiXSwibmFtZXMiOlsidGVtcE1LRGlyIiwiYWZmaXhlcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwidGVtcCIsIm1rZGlyIiwiZXJyIiwicmVzdWx0IiwiY29tcGlsZUZvcm0iLCJnZnYiLCJ0aGVtZXMiLCJmYXJtRGlyZWN0b3J5IiwicmVzb3VyY2VzRGlyZWN0b3J5IiwicmVzb3VyY2VzSGFzaCIsImJ1aWxkRGVidWdPbmx5IiwicGFyZW50TG9nZ2VyIiwiYnVpbGRDYWNoZU9wdGlvbnMiLCJsb2dnZXIiLCJ3aXRoUHJlZml4IiwicGF0aFRvV2VicGFja0NvbmZpZ0ZhY3RvcnkiLCJyZXF1aXJlIiwib3B0aW9ucyIsImZvcm1zRGlyZWN0b3J5UGF0aCIsInBhdGgiLCJqb2luIiwicmVzb3VyY2VzRGlyZWN0b3J5UGF0aCIsIm1vZGVzIiwiYWN0aW9uIiwiZm9ybUJ1aWxkVGVtcERpciIsImxvZyIsImZvcm1CdWlsZFdlYnBhY2tDb25maWciLCJKU09OIiwic3RyaW5naWZ5IiwicGF0aFRvV2ViUGFja0V4ZWN1dGFibGUiLCJ6enoiLCJjYXB0aW9uIiwiY3dkIiwiZGlybmFtZSIsImNvbXBsZXRlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBSUE7QUFFQSxTQUFTQSxTQUFULENBQW1CQyxPQUFuQixFQUEwRTtBQUN0RSxTQUFPLElBQUlDLE9BQUosQ0FBb0IsQ0FBQ0MsT0FBRCxFQUFVQyxNQUFWLEtBQXFCO0FBQzVDQyxJQUFBQSxJQUFJLENBQUNDLEtBQUwsQ0FBV0wsT0FBWCxFQUFvQixDQUFDTSxHQUFELEVBQU1DLE1BQU4sS0FBaUI7QUFDakMsVUFBSUQsR0FBSixFQUFTO0FBQ0xILFFBQUFBLE1BQU0sQ0FBQ0csR0FBRCxDQUFOO0FBQ0gsT0FGRCxNQUVPO0FBQ0hKLFFBQUFBLE9BQU8sQ0FBQ0ssTUFBRCxDQUFQO0FBQ0g7QUFDSixLQU5EO0FBT0gsR0FSTSxDQUFQO0FBU0g7O0FBRU0sZUFBZUMsV0FBZixDQUNIQyxHQURHLEVBRUhDLE1BRkcsRUFHSEMsYUFIRyxFQUlIQyxrQkFKRyxFQUtIQyxhQUxHLEVBTUhDLGNBTkcsRUFPSEMsWUFBcUIsR0FBRyw4QkFQckIsRUFRSEMsaUJBUkcsRUFTVTtBQUNiLFFBQU1DLE1BQU0sR0FBR0YsWUFBWSxDQUFDRyxVQUFiLENBQXlCLFdBQVVULEdBQUksRUFBdkMsQ0FBZjs7QUFDQSxRQUFNVSwwQkFBMEIsR0FBR0MsT0FBTyxDQUFDbEIsT0FBUixpRUFBbkM7O0FBRUEsUUFBTW1CLE9BQTBDLEdBQUc7QUFDL0NaLElBQUFBLEdBQUcsRUFBRUEsR0FEMEM7QUFFL0NJLElBQUFBLGFBQWEsRUFBRUEsYUFGZ0M7QUFHL0NTLElBQUFBLGtCQUFrQixFQUFFQyxjQUFLQyxJQUFMLENBQVViLGFBQVYsRUFBeUIsT0FBekIsQ0FIMkI7QUFJL0NjLElBQUFBLHNCQUFzQixFQUFFYixrQkFKdUI7QUFLL0NjLElBQUFBLEtBQUssRUFBRVosY0FBYyxHQUFHLENBQUMsYUFBRCxDQUFILEdBQXFCLENBQUMsWUFBRCxFQUFlLGFBQWYsQ0FMSztBQU0vQ0UsSUFBQUEsaUJBQWlCLEVBQUVBO0FBTjRCLEdBQW5EO0FBU0EsUUFBTVcsTUFBTSxHQUFHLCtCQUFpQlYsTUFBakIsRUFBeUIsU0FBekIsQ0FBZjtBQUVBLFFBQU1XLGdCQUFnQixHQUFHLE1BQU03QixTQUFTLENBQUUsZUFBY1UsR0FBSSxRQUFwQixDQUF4QztBQUNBUSxFQUFBQSxNQUFNLENBQUNZLEdBQVAsQ0FBVywwREFBWDtBQUNBWixFQUFBQSxNQUFNLENBQUNZLEdBQVAsQ0FBV0QsZ0JBQVg7QUFDQVgsRUFBQUEsTUFBTSxDQUFDWSxHQUFQLENBQVcsMERBQVg7O0FBQ0EsUUFBTUMsc0JBQXNCLEdBQUdQLGNBQUtDLElBQUwsQ0FBVUksZ0JBQVYsRUFBNEIsbUJBQTVCLENBQS9COztBQUNBLFFBQU0sNkJBQ0ZFLHNCQURFLEVBRUQ7QUFDVCwrQkFBK0JDLElBQUksQ0FBQ0MsU0FBTCxDQUFlYiwwQkFBZixDQUEyQztBQUMxRSxnQ0FBZ0NZLElBQUksQ0FBQ0MsU0FBTCxDQUFlWCxPQUFmLENBQXdCLEdBSjlDLEVBS0YsTUFMRSxDQUFOOztBQU9BLFFBQU1ZLHVCQUF1QixHQUFHVixjQUFLQyxJQUFMLENBQVVKLE9BQU8sQ0FBQ2xCLE9BQVIsQ0FBZ0IsU0FBaEIsQ0FBVixFQUFzQyxJQUF0QyxFQUE0QyxJQUE1QyxFQUFrRCxJQUFsRCxFQUF3RCxNQUF4RCxFQUFnRSxTQUFoRSxDQUFoQzs7QUFDQSxRQUFNZ0MsR0FBRyxHQUFJLEdBQUVELHVCQUF3QixhQUFZSCxzQkFBdUIsRUFBMUU7QUFDQWIsRUFBQUEsTUFBTSxDQUFDWSxHQUFQLENBQVcscURBQVg7QUFDQVosRUFBQUEsTUFBTSxDQUFDWSxHQUFQLENBQVdLLEdBQVg7QUFDQWpCLEVBQUFBLE1BQU0sQ0FBQ1ksR0FBUCxDQUFXLHlEQUFYO0FBQ0EsUUFBTSxpQ0FBaUJaLE1BQWpCLEVBQXlCaUIsR0FBekIsRUFBOEI7QUFDaENDLElBQUFBLE9BQU8sRUFBRSxnQkFEdUI7QUFFaENDLElBQUFBLEdBQUcsRUFBRWIsY0FBS2MsT0FBTCxDQUFhUCxzQkFBYjtBQUYyQixHQUE5QixDQUFOO0FBS0FILEVBQUFBLE1BQU0sQ0FBQ1csUUFBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0ICogYXMgdGVtcCBmcm9tIFwidGVtcFwiO1xuXG5pbXBvcnQgeyBleGVjQ29tbWFuZEFzeW5jIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvRXhlY1V0aWxzXCI7XG5pbXBvcnQgeyB3cml0ZUZpbGVBc3luYyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0ZzVXRpbHNcIjtcbmltcG9ydCB7IGJ1aWxkQWN0aW9uQmVnaW4sIElMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL0lMb2dnZXJcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvU3RhdGljTG9nZ2VyXCI7XG5pbXBvcnQgeyBDcmVhdGVXZWJwYWNrQ29uZmlndXJhdGlvbk9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vRm9ybVdlYnBhY2tDb25maWd1cmF0aW9uL2NyZWF0ZUZvcm1XZWJwYWNrQ29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHsgRm9ybUJ1aWxkQ2FjaGVPcHRpb25zIH0gZnJvbSBcIi4uLy4uL0Zvcm1XZWJwYWNrQ29uZmlndXJhdGlvbi9DYWNoZUFzc2V0c1BsdWdpblwiO1xuXG4vLyB0ZW1wLnRyYWNrKCk7XG5cbmZ1bmN0aW9uIHRlbXBNS0RpcihhZmZpeGVzPzogc3RyaW5nIHwgdGVtcC5BZmZpeE9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgdGVtcC5ta2RpcihhZmZpeGVzLCAoZXJyLCByZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvbXBpbGVGb3JtKFxuICAgIGdmdjogc3RyaW5nLFxuICAgIHRoZW1lczogdW5kZWZpbmVkIHwgc3RyaW5nW10sXG4gICAgZmFybURpcmVjdG9yeTogc3RyaW5nLFxuICAgIHJlc291cmNlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgIHJlc291cmNlc0hhc2g6IHN0cmluZyxcbiAgICBidWlsZERlYnVnT25seTogYm9vbGVhbixcbiAgICBwYXJlbnRMb2dnZXI6IElMb2dnZXIgPSBnZXRMb2dnZXIoKSxcbiAgICBidWlsZENhY2hlT3B0aW9ucz86IEZvcm1CdWlsZENhY2hlT3B0aW9uc1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbG9nZ2VyID0gcGFyZW50TG9nZ2VyLndpdGhQcmVmaXgoYENPTVBJTEU6JHtnZnZ9YCk7XG4gICAgY29uc3QgcGF0aFRvV2VicGFja0NvbmZpZ0ZhY3RvcnkgPSByZXF1aXJlLnJlc29sdmUoXCIuLi8uLi9Gb3JtV2VicGFja0NvbmZpZ3VyYXRpb24vY3JlYXRlRm9ybVdlYnBhY2tDb25maWd1cmF0aW9uXCIpO1xuXG4gICAgY29uc3Qgb3B0aW9uczogQ3JlYXRlV2VicGFja0NvbmZpZ3VyYXRpb25PcHRpb25zID0ge1xuICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgcmVzb3VyY2VzSGFzaDogcmVzb3VyY2VzSGFzaCxcbiAgICAgICAgZm9ybXNEaXJlY3RvcnlQYXRoOiBwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiKSxcbiAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5UGF0aDogcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICBtb2RlczogYnVpbGREZWJ1Z09ubHkgPyBbXCJkZXZlbG9wbWVudFwiXSA6IFtcInByb2R1Y3Rpb25cIiwgXCJkZXZlbG9wbWVudFwiXSxcbiAgICAgICAgYnVpbGRDYWNoZU9wdGlvbnM6IGJ1aWxkQ2FjaGVPcHRpb25zLFxuICAgIH07XG5cbiAgICBjb25zdCBhY3Rpb24gPSBidWlsZEFjdGlvbkJlZ2luKGxvZ2dlciwgXCJDb21waWxlXCIpO1xuXG4gICAgY29uc3QgZm9ybUJ1aWxkVGVtcERpciA9IGF3YWl0IHRlbXBNS0RpcihgY2FuZHktZm9ybXMtJHtnZnZ9LWJ1aWxkYCk7XG4gICAgbG9nZ2VyLmxvZyhcIj09PSDQstGB0LUg0LrQvtC80L/QvtC90LXQvdGC0Ysg0LTQu9GPINCx0LjQu9C00LAg0L3QsNGF0L7QtNGP0YLRgdGPINCyINGN0YLQvtC5INC/0LDQv9C60LUgPT09PVwiKTtcbiAgICBsb2dnZXIubG9nKGZvcm1CdWlsZFRlbXBEaXIpO1xuICAgIGxvZ2dlci5sb2coXCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVwiKTtcbiAgICBjb25zdCBmb3JtQnVpbGRXZWJwYWNrQ29uZmlnID0gcGF0aC5qb2luKGZvcm1CdWlsZFRlbXBEaXIsIFwid2VicGFjay5jb25maWcuanNcIik7XG4gICAgYXdhaXQgd3JpdGVGaWxlQXN5bmMoXG4gICAgICAgIGZvcm1CdWlsZFdlYnBhY2tDb25maWcsXG4gICAgICAgIGBcbmNvbnN0IGNyZWF0ZUNvbmZpZyA9IHJlcXVpcmUoJHtKU09OLnN0cmluZ2lmeShwYXRoVG9XZWJwYWNrQ29uZmlnRmFjdG9yeSl9KS5jcmVhdGVDb25maWc7XG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUNvbmZpZygke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMpfSlgLFxuICAgICAgICBcInV0ZjhcIlxuICAgICk7XG4gICAgY29uc3QgcGF0aFRvV2ViUGFja0V4ZWN1dGFibGUgPSBwYXRoLmpvaW4ocmVxdWlyZS5yZXNvbHZlKFwid2VicGFja1wiKSwgXCIuLlwiLCBcIi4uXCIsIFwiLi5cIiwgXCIuYmluXCIsIFwid2VicGFja1wiKTtcbiAgICBjb25zdCB6enogPSBgJHtwYXRoVG9XZWJQYWNrRXhlY3V0YWJsZX0gLS1jb25maWcgJHtmb3JtQnVpbGRXZWJwYWNrQ29uZmlnfWA7XG4gICAgbG9nZ2VyLmxvZyhcIj09PT09PT09PT09PT09INCa0L7QvNCw0L3QtNCwINC90LAg0LjRgdC/0L7Qu9C90LXQvdC40LUgPT09PT09PT09PT09PT1cIik7XG4gICAgbG9nZ2VyLmxvZyh6enopO1xuICAgIGxvZ2dlci5sb2coXCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XCIpO1xuICAgIGF3YWl0IGV4ZWNDb21tYW5kQXN5bmMobG9nZ2VyLCB6enosIHtcbiAgICAgICAgY2FwdGlvbjogXCJDb21waWxpbmcgZm9ybVwiLFxuICAgICAgICBjd2Q6IHBhdGguZGlybmFtZShmb3JtQnVpbGRXZWJwYWNrQ29uZmlnKSxcbiAgICB9KTtcblxuICAgIGFjdGlvbi5jb21wbGV0ZSgpO1xufVxuIl19
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.GeneratorSourcesImporter = void 0;
6
+ exports.GeneratorSourcesValidator = exports.GeneratorSourcesImporter = void 0;
7
7
 
8
8
  var path = _interopRequireWildcard(require("path"));
9
9
 
@@ -15,6 +15,8 @@ var _EngineStructureUtils = require("../../EngineStructureUtils");
15
15
 
16
16
  var _ReadFormSource = require("../../ReadFormSource");
17
17
 
18
+ var _ToolsApiClient = require("../../../Commons/ApiClient/ToolsApiClient");
19
+
18
20
  var _RequireUncached = require("./RequireUncached");
19
21
 
20
22
  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); }
@@ -98,4 +100,45 @@ class GeneratorSourcesImporter {
98
100
  }
99
101
 
100
102
  exports.GeneratorSourcesImporter = GeneratorSourcesImporter;
101
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9CdWlsZFRhc2tzL0dlbmVyYXRvci9HZW5lcmF0b3JXb3JrZXIvR2VuZXJhdG9yUmVxdWlyZVV0aWxzLnRzIl0sIm5hbWVzIjpbIkdlbmVyYXRvclNvdXJjZXNJbXBvcnRlciIsImNvbnN0cnVjdG9yIiwicHVyZ2VDYWNoZSIsImltcG9ydFJlYWRTb3VyY2VzIiwicGF0aFRvR2VuZXJhdG9yIiwicmVhZFNvdXJjZXNQYXRoIiwicGF0aCIsImpvaW4iLCJyZXF1aXJlVW5jYWNoZWREZWZhdWx0IiwicmVhZEZvcm1Tb3VyY2UiLCJnZW5lcmF0b3JNYWluIiwicmVxdWlyZVVuY2FjaGVkQWxsTmFtZWQiLCJpbXBvcnRHZXRBbGxEZXBlbmRlbmNpZXMiLCJ1bmRlZmluZWQiLCJpbXBvcnRHZXRBbGxEZXBlbmRlbmNpZXNIYXNoIiwiaW1wb3J0UHJvY2Vzc1N1Z2FyIiwicHJvY2Vzc1N1Z2FyUGF0aCIsInJlcXVpcmUiLCJkZWZhdWx0IiwiaW1wb3J0TG9jYWxpemF0aW9uIiwibG9jYWxpemF0aW9uRW50cnlQb2ludFBhdGgiLCJtb2R1bGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFFQTs7QUFFQTs7QUFDQTs7QUFFQTs7QUFFQTs7Ozs7O0FBVkE7QUFrQk8sTUFBTUEsd0JBQU4sQ0FBK0I7QUFHM0JDLEVBQUFBLFdBQVcsQ0FBQ0MsVUFBRCxFQUFzQjtBQUFBLFNBRnZCQSxVQUV1QjtBQUNwQyxTQUFLQSxVQUFMLEdBQWtCQSxVQUFsQjtBQUNIOztBQUU2QixRQUFqQkMsaUJBQWlCLENBQUNDLGVBQUQsRUFBaUU7QUFDM0YsUUFBSSxNQUFNLDBEQUErQkEsZUFBL0IsQ0FBVixFQUEyRDtBQUN2RCxZQUFNQyxlQUFlLEdBQUdDLElBQUksQ0FBQ0MsSUFBTCxDQUFVSCxlQUFWLEVBQTJCLE1BQTNCLEVBQW1DLFlBQW5DLEVBQWlELGdCQUFqRCxDQUF4Qjs7QUFFQSxVQUFJLE1BQU0sMkJBQWFDLGVBQWIsQ0FBVixFQUF5QztBQUNyQyxlQUFPLEtBQUtHLHNCQUFMLENBQTRCSCxlQUE1QixDQUFQO0FBQ0gsT0FGRCxNQUVPO0FBQ0gsZUFBT0ksOEJBQVA7QUFDSDtBQUNKLEtBUkQsTUFRTztBQUNILFlBQU1DLGFBQWEsR0FBRyxLQUFLQyx1QkFBTCxDQUE2QlAsZUFBN0IsQ0FBdEI7QUFDQSxhQUFPTSxhQUFhLENBQUMsYUFBRCxDQUFwQjtBQUNIO0FBQ0o7O0FBRW9DLFFBQXhCRSx3QkFBd0IsQ0FDakNSLGVBRGlDLEVBRXVCO0FBQ3hELFFBQUksTUFBTSwwREFBK0JBLGVBQS9CLENBQVYsRUFBMkQ7QUFDdkQsYUFBT1MsU0FBUDtBQUNIOztBQUNELFVBQU1ILGFBQWEsR0FBRyxLQUFLQyx1QkFBTCxDQUE2QlAsZUFBN0IsQ0FBdEI7QUFDQSxXQUFPTSxhQUFhLENBQUMsb0JBQUQsQ0FBcEI7QUFDSDs7QUFFd0MsUUFBNUJJLDRCQUE0QixDQUNyQ1YsZUFEcUMsRUFFdUI7QUFDNUQsUUFBSSxNQUFNLDBEQUErQkEsZUFBL0IsQ0FBVixFQUEyRDtBQUN2RCxhQUFPUyxTQUFQO0FBQ0g7O0FBQ0QsVUFBTUgsYUFBYSxHQUFHLEtBQUtDLHVCQUFMLENBQTZCUCxlQUE3QixDQUF0QjtBQUNBLFdBQU9NLGFBQWEsQ0FBQyx3QkFBRCxDQUFwQjtBQUNIOztBQUU4QixRQUFsQkssa0JBQWtCLENBQUNYLGVBQUQsRUFBcUQ7QUFDaEYsUUFBSSxNQUFNLDBEQUErQkEsZUFBL0IsQ0FBVixFQUEyRDtBQUN2RCxZQUFNWSxnQkFBZ0IsR0FBR1YsSUFBSSxDQUFDQyxJQUFMLENBQVVILGVBQVYsRUFBMkIsTUFBM0IsRUFBbUMsWUFBbkMsRUFBaUQsaUJBQWpELENBQXpCLENBRHVELENBRXZEOztBQUNBLGFBQU9hLE9BQU8sQ0FBQ0QsZ0JBQUQsQ0FBUCxDQUEwQkUsT0FBakM7QUFDSCxLQUpELE1BSU87QUFDSCxZQUFNUixhQUFhLEdBQUcsS0FBS0MsdUJBQUwsQ0FBNkJQLGVBQTdCLENBQXRCO0FBQ0EsYUFBT00sYUFBYSxDQUFDLGNBQUQsQ0FBcEI7QUFDSDtBQUNKOztBQUU4QixRQUFsQlMsa0JBQWtCLENBQUNmLGVBQUQsRUFBdUU7QUFDbEcsUUFBSSxNQUFNLDBEQUErQkEsZUFBL0IsQ0FBVixFQUEyRDtBQUN2RCxZQUFNZ0IsMEJBQTBCLEdBQUdkLElBQUksQ0FBQ0MsSUFBTCxDQUFVSCxlQUFWLEVBQTJCLE1BQTNCLEVBQW1DLFlBQW5DLEVBQWlELGlCQUFqRCxDQUFuQzs7QUFDQSxVQUFJLEVBQUUsTUFBTSx5QkFBV2dCLDBCQUFYLENBQVIsQ0FBSixFQUFxRDtBQUNqRCxlQUFPUCxTQUFQO0FBQ0g7O0FBQ0QsYUFBT0ksT0FBTyxDQUFDRywwQkFBRCxDQUFkO0FBQ0gsS0FORCxNQU1PO0FBQ0gsWUFBTVYsYUFBYSxHQUFHLEtBQUtDLHVCQUFMLENBQTZCUCxlQUE3QixDQUF0QjtBQUNBLGFBQU9NLGFBQWEsQ0FBQyxjQUFELENBQXBCO0FBQ0g7QUFDSjs7QUFDT0YsRUFBQUEsc0JBQXNCLENBQUNhLE1BQUQsRUFBdUM7QUFDakUsV0FBTyw2Q0FBdUJBLE1BQXZCLEVBQStCLEtBQUtuQixVQUFwQyxDQUFQO0FBQ0g7O0FBRU9TLEVBQUFBLHVCQUF1QixDQUFDVSxNQUFELEVBQXVDO0FBQ2xFLFdBQU8sOENBQXdCQSxNQUF4QixFQUFnQyxLQUFLbkIsVUFBckMsQ0FBUDtBQUNIOztBQXZFaUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVybiAqL1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5cbmltcG9ydCB7IGlzRmlsZUV4aXN0cyB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0ZzVXRpbHNcIjtcbmltcG9ydCB7IGlzT2xkR2VuZXJhdG9yU291cmNlc1N0cnVjdHVyZSB9IGZyb20gXCIuLi8uLi9FbmdpbmVTdHJ1Y3R1cmVVdGlsc1wiO1xuaW1wb3J0IHsgRm9ybUdlbmVyYXRvciwgR2VuZXJhdGVkRm9ybSwgR2VuZXJhdGlvbk9wdGlvbnMsIExvY2FsaXphdGlvbkVudHJ5UG9pbnQgfSBmcm9tIFwiLi4vLi4vRm9ybS9HZW5lcmF0ZUZvcm1cIjtcbmltcG9ydCB7IEZvcm1SZXNvdXJjZXMsIHJlYWRGb3JtU291cmNlLCBTdWdhckNvbnRlbnQgfSBmcm9tIFwiLi4vLi4vUmVhZEZvcm1Tb3VyY2VcIjtcblxuaW1wb3J0IHsgUmVxdWlyZURlZmF1bHRSZXN1bHQsIHJlcXVpcmVVbmNhY2hlZEFsbE5hbWVkLCByZXF1aXJlVW5jYWNoZWREZWZhdWx0IH0gZnJvbSBcIi4vUmVxdWlyZVVuY2FjaGVkXCI7XG5cbnR5cGUgUHJvY2Vzc1N1Z2FyRnVuYyA9IChcbiAgICBzdWdhckZpbGVzOiBTdWdhckNvbnRlbnQsXG4gICAgcmVzb3VyY2VzOiBGb3JtUmVzb3VyY2VzLFxuICAgIGdlbmVyYXRpb25PcHRpb25zPzogR2VuZXJhdGlvbk9wdGlvbnNcbikgPT4gR2VuZXJhdGVkRm9ybSB8IFByb21pc2U8R2VuZXJhdGVkRm9ybT47XG5cbmV4cG9ydCBjbGFzcyBHZW5lcmF0b3JTb3VyY2VzSW1wb3J0ZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHVyZ2VDYWNoZTogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwdXJnZUNhY2hlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMucHVyZ2VDYWNoZSA9IHB1cmdlQ2FjaGU7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGltcG9ydFJlYWRTb3VyY2VzKHBhdGhUb0dlbmVyYXRvcjogc3RyaW5nKTogUHJvbWlzZTxGb3JtR2VuZXJhdG9yW1wicmVhZFNvdXJjZXNcIl0+IHtcbiAgICAgICAgaWYgKGF3YWl0IGlzT2xkR2VuZXJhdG9yU291cmNlc1N0cnVjdHVyZShwYXRoVG9HZW5lcmF0b3IpKSB7XG4gICAgICAgICAgICBjb25zdCByZWFkU291cmNlc1BhdGggPSBwYXRoLmpvaW4ocGF0aFRvR2VuZXJhdG9yLCBcImRpc3RcIiwgXCJnZW5lcmF0b3JzXCIsIFwicmVhZFNvdXJjZXMuanNcIik7XG5cbiAgICAgICAgICAgIGlmIChhd2FpdCBpc0ZpbGVFeGlzdHMocmVhZFNvdXJjZXNQYXRoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVVbmNhY2hlZERlZmF1bHQocmVhZFNvdXJjZXNQYXRoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRGb3JtU291cmNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZ2VuZXJhdG9yTWFpbiA9IHRoaXMucmVxdWlyZVVuY2FjaGVkQWxsTmFtZWQocGF0aFRvR2VuZXJhdG9yKTtcbiAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3JNYWluW1wicmVhZFNvdXJjZXNcIl07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaW1wb3J0R2V0QWxsRGVwZW5kZW5jaWVzKFxuICAgICAgICBwYXRoVG9HZW5lcmF0b3I6IHN0cmluZ1xuICAgICk6IFByb21pc2U8Rm9ybUdlbmVyYXRvcltcImdldEFsbERlcGVuZGVuY2llc1wiXSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAoYXdhaXQgaXNPbGRHZW5lcmF0b3JTb3VyY2VzU3RydWN0dXJlKHBhdGhUb0dlbmVyYXRvcikpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZ2VuZXJhdG9yTWFpbiA9IHRoaXMucmVxdWlyZVVuY2FjaGVkQWxsTmFtZWQocGF0aFRvR2VuZXJhdG9yKTtcbiAgICAgICAgcmV0dXJuIGdlbmVyYXRvck1haW5bXCJnZXRBbGxEZXBlbmRlbmNpZXNcIl07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGltcG9ydEdldEFsbERlcGVuZGVuY2llc0hhc2goXG4gICAgICAgIHBhdGhUb0dlbmVyYXRvcjogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxGb3JtR2VuZXJhdG9yW1wiZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaFwiXSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAoYXdhaXQgaXNPbGRHZW5lcmF0b3JTb3VyY2VzU3RydWN0dXJlKHBhdGhUb0dlbmVyYXRvcikpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZ2VuZXJhdG9yTWFpbiA9IHRoaXMucmVxdWlyZVVuY2FjaGVkQWxsTmFtZWQocGF0aFRvR2VuZXJhdG9yKTtcbiAgICAgICAgcmV0dXJuIGdlbmVyYXRvck1haW5bXCJnZXRBbGxEZXBlbmRlbmNpZXNIYXNoXCJdO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbXBvcnRQcm9jZXNzU3VnYXIocGF0aFRvR2VuZXJhdG9yOiBzdHJpbmcpOiBQcm9taXNlPFByb2Nlc3NTdWdhckZ1bmM+IHtcbiAgICAgICAgaWYgKGF3YWl0IGlzT2xkR2VuZXJhdG9yU291cmNlc1N0cnVjdHVyZShwYXRoVG9HZW5lcmF0b3IpKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9jZXNzU3VnYXJQYXRoID0gcGF0aC5qb2luKHBhdGhUb0dlbmVyYXRvciwgXCJkaXN0XCIsIFwiZ2VuZXJhdG9yc1wiLCBcInByb2Nlc3NTdWdhci5qc1wiKTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG4gICAgICAgICAgICByZXR1cm4gcmVxdWlyZShwcm9jZXNzU3VnYXJQYXRoKS5kZWZhdWx0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZ2VuZXJhdG9yTWFpbiA9IHRoaXMucmVxdWlyZVVuY2FjaGVkQWxsTmFtZWQocGF0aFRvR2VuZXJhdG9yKTtcbiAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3JNYWluW1wicHJvY2Vzc1N1Z2FyXCJdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGltcG9ydExvY2FsaXphdGlvbihwYXRoVG9HZW5lcmF0b3I6IHN0cmluZyk6IFByb21pc2U8dW5kZWZpbmVkIHwgTG9jYWxpemF0aW9uRW50cnlQb2ludD4ge1xuICAgICAgICBpZiAoYXdhaXQgaXNPbGRHZW5lcmF0b3JTb3VyY2VzU3RydWN0dXJlKHBhdGhUb0dlbmVyYXRvcikpIHtcbiAgICAgICAgICAgIGNvbnN0IGxvY2FsaXphdGlvbkVudHJ5UG9pbnRQYXRoID0gcGF0aC5qb2luKHBhdGhUb0dlbmVyYXRvciwgXCJkaXN0XCIsIFwiZ2VuZXJhdG9yc1wiLCBcImxvY2FsaXphdGlvbi5qc1wiKTtcbiAgICAgICAgICAgIGlmICghKGF3YWl0IHBhdGhFeGlzdHMobG9jYWxpemF0aW9uRW50cnlQb2ludFBhdGgpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVxdWlyZShsb2NhbGl6YXRpb25FbnRyeVBvaW50UGF0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBnZW5lcmF0b3JNYWluID0gdGhpcy5yZXF1aXJlVW5jYWNoZWRBbGxOYW1lZChwYXRoVG9HZW5lcmF0b3IpO1xuICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvck1haW5bXCJsb2NhbGl6YXRpb25cIl07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpdmF0ZSByZXF1aXJlVW5jYWNoZWREZWZhdWx0KG1vZHVsZTogc3RyaW5nKTogUmVxdWlyZURlZmF1bHRSZXN1bHQge1xuICAgICAgICByZXR1cm4gcmVxdWlyZVVuY2FjaGVkRGVmYXVsdChtb2R1bGUsIHRoaXMucHVyZ2VDYWNoZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXF1aXJlVW5jYWNoZWRBbGxOYW1lZChtb2R1bGU6IHN0cmluZyk6IFJlcXVpcmVEZWZhdWx0UmVzdWx0IHtcbiAgICAgICAgcmV0dXJuIHJlcXVpcmVVbmNhY2hlZEFsbE5hbWVkKG1vZHVsZSwgdGhpcy5wdXJnZUNhY2hlKTtcbiAgICB9XG59XG4iXX0=
103
+
104
+ class GeneratorSourcesValidator {
105
+ constructor(generationOptions) {
106
+ this.isLocalDebug = void 0;
107
+ this.apiClient = void 0;
108
+
109
+ this.validate = async formContent => {
110
+ if (!this.isLocalDebug) {
111
+ return;
112
+ }
113
+
114
+ await this.compileNormalizationRulesOrDie(formContent);
115
+ };
116
+
117
+ this.compileNormalizationRulesOrDie = async formContent => {
118
+ var _compileResult$diagno, _compileResult$diagno2;
119
+
120
+ const normalizationRules = formContent["ServerSide.normalize"];
121
+
122
+ if (!normalizationRules || typeof normalizationRules !== "string") {
123
+ return;
124
+ }
125
+
126
+ const compileResult = await this.apiClient.compileNormalizationRules(normalizationRules, "formulas");
127
+
128
+ if (!compileResult || ((_compileResult$diagno = compileResult === null || compileResult === void 0 ? void 0 : (_compileResult$diagno2 = compileResult.diagnosticMessages) === null || _compileResult$diagno2 === void 0 ? void 0 : _compileResult$diagno2.length) !== null && _compileResult$diagno !== void 0 ? _compileResult$diagno : 0) == 0) {
129
+ return;
130
+ }
131
+
132
+ throw Error(`Invalid ServerSide.normalize:\r\n
133
+ ${JSON.stringify(compileResult.diagnosticMessages)}\r\n
134
+ ${compileResult.sourceText}`);
135
+ };
136
+
137
+ this.isLocalDebug = (generationOptions === null || generationOptions === void 0 ? void 0 : generationOptions.resourcesHash) == "local-hash";
138
+ this.apiClient = new _ToolsApiClient.ToolsApiClient();
139
+ }
140
+
141
+ }
142
+
143
+ exports.GeneratorSourcesValidator = GeneratorSourcesValidator;
144
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9CdWlsZFRhc2tzL0dlbmVyYXRvci9HZW5lcmF0b3JXb3JrZXIvR2VuZXJhdG9yUmVxdWlyZVV0aWxzLnRzIl0sIm5hbWVzIjpbIkdlbmVyYXRvclNvdXJjZXNJbXBvcnRlciIsImNvbnN0cnVjdG9yIiwicHVyZ2VDYWNoZSIsImltcG9ydFJlYWRTb3VyY2VzIiwicGF0aFRvR2VuZXJhdG9yIiwicmVhZFNvdXJjZXNQYXRoIiwicGF0aCIsImpvaW4iLCJyZXF1aXJlVW5jYWNoZWREZWZhdWx0IiwicmVhZEZvcm1Tb3VyY2UiLCJnZW5lcmF0b3JNYWluIiwicmVxdWlyZVVuY2FjaGVkQWxsTmFtZWQiLCJpbXBvcnRHZXRBbGxEZXBlbmRlbmNpZXMiLCJ1bmRlZmluZWQiLCJpbXBvcnRHZXRBbGxEZXBlbmRlbmNpZXNIYXNoIiwiaW1wb3J0UHJvY2Vzc1N1Z2FyIiwicHJvY2Vzc1N1Z2FyUGF0aCIsInJlcXVpcmUiLCJkZWZhdWx0IiwiaW1wb3J0TG9jYWxpemF0aW9uIiwibG9jYWxpemF0aW9uRW50cnlQb2ludFBhdGgiLCJtb2R1bGUiLCJHZW5lcmF0b3JTb3VyY2VzVmFsaWRhdG9yIiwiZ2VuZXJhdGlvbk9wdGlvbnMiLCJpc0xvY2FsRGVidWciLCJhcGlDbGllbnQiLCJ2YWxpZGF0ZSIsImZvcm1Db250ZW50IiwiY29tcGlsZU5vcm1hbGl6YXRpb25SdWxlc09yRGllIiwibm9ybWFsaXphdGlvblJ1bGVzIiwiY29tcGlsZVJlc3VsdCIsImNvbXBpbGVOb3JtYWxpemF0aW9uUnVsZXMiLCJkaWFnbm9zdGljTWVzc2FnZXMiLCJsZW5ndGgiLCJFcnJvciIsIkpTT04iLCJzdHJpbmdpZnkiLCJzb3VyY2VUZXh0IiwicmVzb3VyY2VzSGFzaCIsIlRvb2xzQXBpQ2xpZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7O0FBRUE7O0FBRUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBRUE7Ozs7OztBQVhBO0FBbUJPLE1BQU1B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RUFBakI7QUFDSDs7QUFQa0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVybiAqL1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5cbmltcG9ydCB7IGlzRmlsZUV4aXN0cyB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0ZzVXRpbHNcIjtcbmltcG9ydCB7IGlzT2xkR2VuZXJhdG9yU291cmNlc1N0cnVjdHVyZSB9IGZyb20gXCIuLi8uLi9FbmdpbmVTdHJ1Y3R1cmVVdGlsc1wiO1xuaW1wb3J0IHsgRm9ybUdlbmVyYXRvciwgR2VuZXJhdGVkRm9ybSwgR2VuZXJhdGlvbk9wdGlvbnMsIExvY2FsaXphdGlvbkVudHJ5UG9pbnQgfSBmcm9tIFwiLi4vLi4vRm9ybS9HZW5lcmF0ZUZvcm1cIjtcbmltcG9ydCB7IEZvcm1SZXNvdXJjZXMsIHJlYWRGb3JtU291cmNlLCBTdWdhckNvbnRlbnQgfSBmcm9tIFwiLi4vLi4vUmVhZEZvcm1Tb3VyY2VcIjtcbmltcG9ydCB7IFRvb2xzQXBpQ2xpZW50IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvQXBpQ2xpZW50L1Rvb2xzQXBpQ2xpZW50XCI7XG5cbmltcG9ydCB7IFJlcXVpcmVEZWZhdWx0UmVzdWx0LCByZXF1aXJlVW5jYWNoZWRBbGxOYW1lZCwgcmVxdWlyZVVuY2FjaGVkRGVmYXVsdCB9IGZyb20gXCIuL1JlcXVpcmVVbmNhY2hlZFwiO1xuXG50eXBlIFByb2Nlc3NTdWdhckZ1bmMgPSAoXG4gICAgc3VnYXJGaWxlczogU3VnYXJDb250ZW50LFxuICAgIHJlc291cmNlczogRm9ybVJlc291cmNlcyxcbiAgICBnZW5lcmF0aW9uT3B0aW9ucz86IEdlbmVyYXRpb25PcHRpb25zXG4pID0+IEdlbmVyYXRlZEZvcm0gfCBQcm9taXNlPEdlbmVyYXRlZEZvcm0+O1xuXG5leHBvcnQgY2xhc3MgR2VuZXJhdG9yU291cmNlc0ltcG9ydGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHB1cmdlQ2FjaGU6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHVyZ2VDYWNoZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnB1cmdlQ2FjaGUgPSBwdXJnZUNhY2hlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbXBvcnRSZWFkU291cmNlcyhwYXRoVG9HZW5lcmF0b3I6IHN0cmluZyk6IFByb21pc2U8Rm9ybUdlbmVyYXRvcltcInJlYWRTb3VyY2VzXCJdPiB7XG4gICAgICAgIGlmIChhd2FpdCBpc09sZEdlbmVyYXRvclNvdXJjZXNTdHJ1Y3R1cmUocGF0aFRvR2VuZXJhdG9yKSkge1xuICAgICAgICAgICAgY29uc3QgcmVhZFNvdXJjZXNQYXRoID0gcGF0aC5qb2luKHBhdGhUb0dlbmVyYXRvciwgXCJkaXN0XCIsIFwiZ2VuZXJhdG9yc1wiLCBcInJlYWRTb3VyY2VzLmpzXCIpO1xuXG4gICAgICAgICAgICBpZiAoYXdhaXQgaXNGaWxlRXhpc3RzKHJlYWRTb3VyY2VzUGF0aCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlVW5jYWNoZWREZWZhdWx0KHJlYWRTb3VyY2VzUGF0aCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWFkRm9ybVNvdXJjZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGdlbmVyYXRvck1haW4gPSB0aGlzLnJlcXVpcmVVbmNhY2hlZEFsbE5hbWVkKHBhdGhUb0dlbmVyYXRvcik7XG4gICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yTWFpbltcInJlYWRTb3VyY2VzXCJdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGltcG9ydEdldEFsbERlcGVuZGVuY2llcyhcbiAgICAgICAgcGF0aFRvR2VuZXJhdG9yOiBzdHJpbmdcbiAgICApOiBQcm9taXNlPEZvcm1HZW5lcmF0b3JbXCJnZXRBbGxEZXBlbmRlbmNpZXNcIl0gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKGF3YWl0IGlzT2xkR2VuZXJhdG9yU291cmNlc1N0cnVjdHVyZShwYXRoVG9HZW5lcmF0b3IpKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGdlbmVyYXRvck1haW4gPSB0aGlzLnJlcXVpcmVVbmNhY2hlZEFsbE5hbWVkKHBhdGhUb0dlbmVyYXRvcik7XG4gICAgICAgIHJldHVybiBnZW5lcmF0b3JNYWluW1wiZ2V0QWxsRGVwZW5kZW5jaWVzXCJdO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbXBvcnRHZXRBbGxEZXBlbmRlbmNpZXNIYXNoKFxuICAgICAgICBwYXRoVG9HZW5lcmF0b3I6IHN0cmluZ1xuICAgICk6IFByb21pc2U8Rm9ybUdlbmVyYXRvcltcImdldEFsbERlcGVuZGVuY2llc0hhc2hcIl0gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKGF3YWl0IGlzT2xkR2VuZXJhdG9yU291cmNlc1N0cnVjdHVyZShwYXRoVG9HZW5lcmF0b3IpKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGdlbmVyYXRvck1haW4gPSB0aGlzLnJlcXVpcmVVbmNhY2hlZEFsbE5hbWVkKHBhdGhUb0dlbmVyYXRvcik7XG4gICAgICAgIHJldHVybiBnZW5lcmF0b3JNYWluW1wiZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaFwiXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaW1wb3J0UHJvY2Vzc1N1Z2FyKHBhdGhUb0dlbmVyYXRvcjogc3RyaW5nKTogUHJvbWlzZTxQcm9jZXNzU3VnYXJGdW5jPiB7XG4gICAgICAgIGlmIChhd2FpdCBpc09sZEdlbmVyYXRvclNvdXJjZXNTdHJ1Y3R1cmUocGF0aFRvR2VuZXJhdG9yKSkge1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc1N1Z2FyUGF0aCA9IHBhdGguam9pbihwYXRoVG9HZW5lcmF0b3IsIFwiZGlzdFwiLCBcImdlbmVyYXRvcnNcIiwgXCJwcm9jZXNzU3VnYXIuanNcIik7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlc1xuICAgICAgICAgICAgcmV0dXJuIHJlcXVpcmUocHJvY2Vzc1N1Z2FyUGF0aCkuZGVmYXVsdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGdlbmVyYXRvck1haW4gPSB0aGlzLnJlcXVpcmVVbmNhY2hlZEFsbE5hbWVkKHBhdGhUb0dlbmVyYXRvcik7XG4gICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yTWFpbltcInByb2Nlc3NTdWdhclwiXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbXBvcnRMb2NhbGl6YXRpb24ocGF0aFRvR2VuZXJhdG9yOiBzdHJpbmcpOiBQcm9taXNlPHVuZGVmaW5lZCB8IExvY2FsaXphdGlvbkVudHJ5UG9pbnQ+IHtcbiAgICAgICAgaWYgKGF3YWl0IGlzT2xkR2VuZXJhdG9yU291cmNlc1N0cnVjdHVyZShwYXRoVG9HZW5lcmF0b3IpKSB7XG4gICAgICAgICAgICBjb25zdCBsb2NhbGl6YXRpb25FbnRyeVBvaW50UGF0aCA9IHBhdGguam9pbihwYXRoVG9HZW5lcmF0b3IsIFwiZGlzdFwiLCBcImdlbmVyYXRvcnNcIiwgXCJsb2NhbGl6YXRpb24uanNcIik7XG4gICAgICAgICAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKGxvY2FsaXphdGlvbkVudHJ5UG9pbnRQYXRoKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlcXVpcmUobG9jYWxpemF0aW9uRW50cnlQb2ludFBhdGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZ2VuZXJhdG9yTWFpbiA9IHRoaXMucmVxdWlyZVVuY2FjaGVkQWxsTmFtZWQocGF0aFRvR2VuZXJhdG9yKTtcbiAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3JNYWluW1wibG9jYWxpemF0aW9uXCJdO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgcmVxdWlyZVVuY2FjaGVkRGVmYXVsdChtb2R1bGU6IHN0cmluZyk6IFJlcXVpcmVEZWZhdWx0UmVzdWx0IHtcbiAgICAgICAgcmV0dXJuIHJlcXVpcmVVbmNhY2hlZERlZmF1bHQobW9kdWxlLCB0aGlzLnB1cmdlQ2FjaGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVxdWlyZVVuY2FjaGVkQWxsTmFtZWQobW9kdWxlOiBzdHJpbmcpOiBSZXF1aXJlRGVmYXVsdFJlc3VsdCB7XG4gICAgICAgIHJldHVybiByZXF1aXJlVW5jYWNoZWRBbGxOYW1lZChtb2R1bGUsIHRoaXMucHVyZ2VDYWNoZSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2VuZXJhdG9yU291cmNlc1ZhbGlkYXRvciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpc0xvY2FsRGVidWc6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBhcGlDbGllbnQ6IFRvb2xzQXBpQ2xpZW50O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGdlbmVyYXRpb25PcHRpb25zOiBHZW5lcmF0aW9uT3B0aW9ucyB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmlzTG9jYWxEZWJ1ZyA9IGdlbmVyYXRpb25PcHRpb25zPy5yZXNvdXJjZXNIYXNoID09IFwibG9jYWwtaGFzaFwiO1xuICAgICAgICB0aGlzLmFwaUNsaWVudCA9IG5ldyBUb29sc0FwaUNsaWVudCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyB2YWxpZGF0ZSA9IGFzeW5jIChmb3JtQ29udGVudDogR2VuZXJhdGVkRm9ybSk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNMb2NhbERlYnVnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5jb21waWxlTm9ybWFsaXphdGlvblJ1bGVzT3JEaWUoZm9ybUNvbnRlbnQpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbXBpbGVOb3JtYWxpemF0aW9uUnVsZXNPckRpZSA9IGFzeW5jIChmb3JtQ29udGVudDogR2VuZXJhdGVkRm9ybSk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICBjb25zdCBub3JtYWxpemF0aW9uUnVsZXMgPSBmb3JtQ29udGVudFtcIlNlcnZlclNpZGUubm9ybWFsaXplXCJdO1xuICAgICAgICBpZiAoIW5vcm1hbGl6YXRpb25SdWxlcyB8fCB0eXBlb2Ygbm9ybWFsaXphdGlvblJ1bGVzICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29tcGlsZVJlc3VsdCA9IGF3YWl0IHRoaXMuYXBpQ2xpZW50LmNvbXBpbGVOb3JtYWxpemF0aW9uUnVsZXMobm9ybWFsaXphdGlvblJ1bGVzLCBcImZvcm11bGFzXCIpO1xuICAgICAgICBpZiAoIWNvbXBpbGVSZXN1bHQgfHwgKGNvbXBpbGVSZXN1bHQ/LmRpYWdub3N0aWNNZXNzYWdlcz8ubGVuZ3RoID8/IDApID09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgYEludmFsaWQgU2VydmVyU2lkZS5ub3JtYWxpemU6XFxyXFxuXG4gICAgICAgICAgICAgJHtKU09OLnN0cmluZ2lmeShjb21waWxlUmVzdWx0LmRpYWdub3N0aWNNZXNzYWdlcyl9XFxyXFxuXG4gICAgICAgICAgICAgJHtjb21waWxlUmVzdWx0LnNvdXJjZVRleHR9YFxuICAgICAgICApO1xuICAgIH07XG59XG4iXX0=
@@ -15,6 +15,8 @@ _TypedProcessWorker.TypedProcessWorker.start(async ([pathToGeneratorProcessSugar
15
15
  formSource = await readSources(formSourcesPath, farmDirectory, hlFarmDirectoryPath);
16
16
  const processSugar = await importer.importProcessSugar(pathToGeneratorProcessSugar);
17
17
  const formContent = await processSugar(formSource.sugarContent, formSource.resources, generationOptions);
18
+ const validator = new _GeneratorRequireUtils.GeneratorSourcesValidator(generationOptions);
19
+ await validator.validate(formContent);
18
20
  const result = {}; // NOTE Because only JSON are allowed for IPC we need to convert Buffer -> Base64
19
21
  // Another solution is use a stream, but formContent still need to convert or send by chunks
20
22
 
@@ -53,4 +55,4 @@ _TypedProcessWorker.TypedProcessWorker.start(async ([pathToGeneratorProcessSugar
53
55
  }
54
56
  }
55
57
  });
56
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9CdWlsZFRhc2tzL0dlbmVyYXRvci9HZW5lcmF0b3JXb3JrZXIvUmVhZFNvdXJjZXNBbmRQcm9jZXNzU3VnYXJXb3JrZXIudHMiXSwibmFtZXMiOlsiVHlwZWRQcm9jZXNzV29ya2VyIiwic3RhcnQiLCJwYXRoVG9HZW5lcmF0b3JQcm9jZXNzU3VnYXIiLCJmb3JtU291cmNlc1BhdGgiLCJmYXJtRGlyZWN0b3J5IiwiaGxGYXJtRGlyZWN0b3J5UGF0aCIsImdlbmVyYXRpb25PcHRpb25zIiwicHVyZ2VDYWNoZSIsInJlcXVlc3ROdW1iZXIiLCJzZW5kIiwiZm9ybVNvdXJjZSIsImltcG9ydGVyIiwiR2VuZXJhdG9yU291cmNlc0ltcG9ydGVyIiwicmVhZFNvdXJjZXMiLCJpbXBvcnRSZWFkU291cmNlcyIsInByb2Nlc3NTdWdhciIsImltcG9ydFByb2Nlc3NTdWdhciIsImZvcm1Db250ZW50Iiwic3VnYXJDb250ZW50IiwicmVzb3VyY2VzIiwicmVzdWx0Iiwia2V5IiwiZm9ybUNvbnRlbnRJdGVtIiwiQnVmZmVyIiwicGF5bG9hZCIsInRvU3RyaW5nIiwiZW5jb2RpbmciLCJ0eXBlIiwiZ2Z2IiwiZ2VuZXJhdGVkRm9ybSIsImVycm9yIiwiRXJyb3IiLCJlcnJvclRleHQiLCJzdGFjayJdLCJtYXBwaW5ncyI6Ijs7QUFFQTs7QUFFQTs7QUFDQTs7QUFXQUEsdUNBQW1CQyxLQUFuQixDQUNJLE9BQ0ksQ0FDSUMsMkJBREosRUFFSUMsZUFGSixFQUdJQyxhQUhKLEVBSUlDLG1CQUpKLEVBS0lDLGlCQUxKLEVBTUlDLFVBTkosRUFPSUMsYUFQSixDQURKLEVBVUlDLElBVkosS0FXb0I7QUFDaEIsTUFBSUMsVUFBSjs7QUFDQSxNQUFJO0FBQ0EsVUFBTUMsUUFBUSxHQUFHLElBQUlDLCtDQUFKLENBQTZCTCxVQUE3QixDQUFqQjtBQUNBLFVBQU1NLFdBQVcsR0FBRyxNQUFNRixRQUFRLENBQUNHLGlCQUFULENBQTJCWiwyQkFBM0IsQ0FBMUI7QUFDQVEsSUFBQUEsVUFBVSxHQUFHLE1BQU1HLFdBQVcsQ0FBQ1YsZUFBRCxFQUFrQkMsYUFBbEIsRUFBaUNDLG1CQUFqQyxDQUE5QjtBQUVBLFVBQU1VLFlBQVksR0FBRyxNQUFNSixRQUFRLENBQUNLLGtCQUFULENBQTRCZCwyQkFBNUIsQ0FBM0I7QUFFQSxVQUFNZSxXQUEwQixHQUFHLE1BQU1GLFlBQVksQ0FDakRMLFVBQVUsQ0FBQ1EsWUFEc0MsRUFFakRSLFVBQVUsQ0FBQ1MsU0FGc0MsRUFHakRiLGlCQUhpRCxDQUFyRDtBQU1BLFVBQU1jLE1BQXdDLEdBQUcsRUFBakQsQ0FiQSxDQWVBO0FBQ0E7O0FBQ0EsU0FBSyxNQUFNLENBQUNDLEdBQUQsRUFBTUMsZUFBTixDQUFYLElBQXFDLG1DQUFlTCxXQUFmLENBQXJDLEVBQWtFO0FBQzlERyxNQUFBQSxNQUFNLENBQUNDLEdBQUQsQ0FBTixHQUNJQyxlQUFlLFlBQVlDLE1BQTNCLEdBQ007QUFBRUMsUUFBQUEsT0FBTyxFQUFFRixlQUFlLENBQUNHLFFBQWhCLENBQXlCLFFBQXpCLENBQVg7QUFBK0NDLFFBQUFBLFFBQVEsRUFBRTtBQUF6RCxPQUROLEdBRU1KLGVBSFY7QUFJSDs7QUFFRGIsSUFBQUEsSUFBSSxDQUFDO0FBQ0RrQixNQUFBQSxJQUFJLEVBQUUsUUFETDtBQUVEQyxNQUFBQSxHQUFHLEVBQUVsQixVQUFVLENBQUNTLFNBQVgsQ0FBcUJTLEdBRnpCO0FBR0RDLE1BQUFBLGFBQWEsRUFBRVQsTUFIZDtBQUlEWixNQUFBQSxhQUFhLEVBQUVBO0FBSmQsS0FBRCxDQUFKO0FBTUgsR0E5QkQsQ0E4QkUsT0FBT3NCLEtBQVAsRUFBYztBQUNaLFFBQUlBLEtBQUssWUFBWUMsS0FBckIsRUFBNEI7QUFBQTs7QUFDeEJ0QixNQUFBQSxJQUFJLENBQUM7QUFDRGtCLFFBQUFBLElBQUksRUFBRSxPQURMO0FBRURDLFFBQUFBLEdBQUcsaUJBQUVsQixVQUFGLGdEQUFFLFlBQVlTLFNBQVosQ0FBc0JTLEdBRjFCO0FBR0RJLFFBQUFBLFNBQVMsRUFBRyxHQUFFRixLQUFLLENBQUNMLFFBQU4sRUFBaUIsS0FBSUssS0FBSyxDQUFDRyxLQUFNLEVBSDlDO0FBSUR6QixRQUFBQSxhQUFhLEVBQUVBO0FBSmQsT0FBRCxDQUFKO0FBTUgsS0FQRCxNQU9PO0FBQUE7O0FBQ0hDLE1BQUFBLElBQUksQ0FBQztBQUNEa0IsUUFBQUEsSUFBSSxFQUFFLE9BREw7QUFFREMsUUFBQUEsR0FBRyxrQkFBRWxCLFVBQUYsaURBQUUsYUFBWVMsU0FBWixDQUFzQlMsR0FGMUI7QUFHREksUUFBQUEsU0FBUyxFQUFHLEdBQUVGLEtBQU0sRUFIbkI7QUFJRHRCLFFBQUFBLGFBQWEsRUFBRUE7QUFKZCxPQUFELENBQUo7QUFNSDtBQUNKO0FBQ0osQ0E3REwiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW5lcmF0ZWRGb3JtLCBHZW5lcmF0aW9uT3B0aW9ucyB9IGZyb20gXCIuLi8uLi9Gb3JtL0dlbmVyYXRlRm9ybVwiO1xuaW1wb3J0IHsgRm9ybVNvdXJjZSB9IGZyb20gXCIuLi8uLi9SZWFkRm9ybVNvdXJjZVwiO1xuaW1wb3J0IHsgaXRlcmF0ZUVudHJpZXMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0l0ZXJhYmxlVXRpbHNcIjtcblxuaW1wb3J0IHsgR2VuZXJhdG9yU291cmNlc0ltcG9ydGVyIH0gZnJvbSBcIi4vR2VuZXJhdG9yUmVxdWlyZVV0aWxzXCI7XG5pbXBvcnQgeyBUeXBlZFByb2Nlc3NXb3JrZXIgfSBmcm9tIFwiLi9UeXBlZFByb2Nlc3NXb3JrZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0ZWRGb3JtSW50ZXJQcm9jZXNzTWVzc2FnZSB7XG4gICAgW3JlbGF0aXZlRmlsZU5hbWU6IHN0cmluZ106IHN0cmluZyB8IHsgcGF5bG9hZDogc3RyaW5nOyBlbmNvZGluZzogc3RyaW5nIH07XG59XG5cbmV4cG9ydCB0eXBlIENhbGxNZXNzYWdlID0gW3N0cmluZywgc3RyaW5nLCBzdHJpbmcsIHN0cmluZywgdW5kZWZpbmVkIHwgR2VuZXJhdGlvbk9wdGlvbnMsIGJvb2xlYW4sIG51bWJlcl07XG5leHBvcnQgdHlwZSBDYWxsUmVzcG9uc2UgPVxuICAgIHwgeyB0eXBlOiBcIlJlc3VsdFwiOyBnZnY6IHN0cmluZzsgZ2VuZXJhdGVkRm9ybTogR2VuZXJhdGVkRm9ybUludGVyUHJvY2Vzc01lc3NhZ2U7IHJlcXVlc3ROdW1iZXI6IG51bWJlciB9XG4gICAgfCB7IHR5cGU6IFwiRXJyb3JcIjsgZ2Z2Pzogc3RyaW5nOyBlcnJvclRleHQ6IHN0cmluZzsgcmVxdWVzdE51bWJlcjogbnVtYmVyIH07XG5cblR5cGVkUHJvY2Vzc1dvcmtlci5zdGFydDxDYWxsTWVzc2FnZSwgQ2FsbFJlc3BvbnNlPihcbiAgICBhc3luYyAoXG4gICAgICAgIFtcbiAgICAgICAgICAgIHBhdGhUb0dlbmVyYXRvclByb2Nlc3NTdWdhcixcbiAgICAgICAgICAgIGZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoLFxuICAgICAgICAgICAgZ2VuZXJhdGlvbk9wdGlvbnMsXG4gICAgICAgICAgICBwdXJnZUNhY2hlLFxuICAgICAgICAgICAgcmVxdWVzdE51bWJlcixcbiAgICAgICAgXSxcbiAgICAgICAgc2VuZFxuICAgICk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICBsZXQgZm9ybVNvdXJjZTogRm9ybVNvdXJjZSB8IHVuZGVmaW5lZDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGltcG9ydGVyID0gbmV3IEdlbmVyYXRvclNvdXJjZXNJbXBvcnRlcihwdXJnZUNhY2hlKTtcbiAgICAgICAgICAgIGNvbnN0IHJlYWRTb3VyY2VzID0gYXdhaXQgaW1wb3J0ZXIuaW1wb3J0UmVhZFNvdXJjZXMocGF0aFRvR2VuZXJhdG9yUHJvY2Vzc1N1Z2FyKTtcbiAgICAgICAgICAgIGZvcm1Tb3VyY2UgPSBhd2FpdCByZWFkU291cmNlcyhmb3JtU291cmNlc1BhdGgsIGZhcm1EaXJlY3RvcnksIGhsRmFybURpcmVjdG9yeVBhdGgpO1xuXG4gICAgICAgICAgICBjb25zdCBwcm9jZXNzU3VnYXIgPSBhd2FpdCBpbXBvcnRlci5pbXBvcnRQcm9jZXNzU3VnYXIocGF0aFRvR2VuZXJhdG9yUHJvY2Vzc1N1Z2FyKTtcblxuICAgICAgICAgICAgY29uc3QgZm9ybUNvbnRlbnQ6IEdlbmVyYXRlZEZvcm0gPSBhd2FpdCBwcm9jZXNzU3VnYXIoXG4gICAgICAgICAgICAgICAgZm9ybVNvdXJjZS5zdWdhckNvbnRlbnQsXG4gICAgICAgICAgICAgICAgZm9ybVNvdXJjZS5yZXNvdXJjZXMsXG4gICAgICAgICAgICAgICAgZ2VuZXJhdGlvbk9wdGlvbnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogR2VuZXJhdGVkRm9ybUludGVyUHJvY2Vzc01lc3NhZ2UgPSB7fTtcblxuICAgICAgICAgICAgLy8gTk9URSBCZWNhdXNlIG9ubHkgSlNPTiBhcmUgYWxsb3dlZCBmb3IgSVBDIHdlIG5lZWQgdG8gY29udmVydCBCdWZmZXIgLT4gQmFzZTY0XG4gICAgICAgICAgICAvLyBBbm90aGVyIHNvbHV0aW9uIGlzIHVzZSBhIHN0cmVhbSwgYnV0IGZvcm1Db250ZW50IHN0aWxsIG5lZWQgdG8gY29udmVydCBvciBzZW5kIGJ5IGNodW5rc1xuICAgICAgICAgICAgZm9yIChjb25zdCBba2V5LCBmb3JtQ29udGVudEl0ZW1dIG9mIGl0ZXJhdGVFbnRyaWVzKGZvcm1Db250ZW50KSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID1cbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRlbnRJdGVtIGluc3RhbmNlb2YgQnVmZmVyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHsgcGF5bG9hZDogZm9ybUNvbnRlbnRJdGVtLnRvU3RyaW5nKFwiYmFzZTY0XCIpLCBlbmNvZGluZzogXCJiYXNlNjRcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgICA6IGZvcm1Db250ZW50SXRlbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2VuZCh7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJSZXN1bHRcIixcbiAgICAgICAgICAgICAgICBnZnY6IGZvcm1Tb3VyY2UucmVzb3VyY2VzLmdmdixcbiAgICAgICAgICAgICAgICBnZW5lcmF0ZWRGb3JtOiByZXN1bHQsXG4gICAgICAgICAgICAgICAgcmVxdWVzdE51bWJlcjogcmVxdWVzdE51bWJlcixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBzZW5kKHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJFcnJvclwiLFxuICAgICAgICAgICAgICAgICAgICBnZnY6IGZvcm1Tb3VyY2U/LnJlc291cmNlcy5nZnYsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yVGV4dDogYCR7ZXJyb3IudG9TdHJpbmcoKX1cXG4ke2Vycm9yLnN0YWNrfWAsXG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3ROdW1iZXI6IHJlcXVlc3ROdW1iZXIsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNlbmQoe1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkVycm9yXCIsXG4gICAgICAgICAgICAgICAgICAgIGdmdjogZm9ybVNvdXJjZT8ucmVzb3VyY2VzLmdmdixcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JUZXh0OiBgJHtlcnJvcn1gLFxuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0TnVtYmVyOiByZXF1ZXN0TnVtYmVyLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuKTtcbiJdfQ==
58
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9CdWlsZFRhc2tzL0dlbmVyYXRvci9HZW5lcmF0b3JXb3JrZXIvUmVhZFNvdXJjZXNBbmRQcm9jZXNzU3VnYXJXb3JrZXIudHMiXSwibmFtZXMiOlsiVHlwZWRQcm9jZXNzV29ya2VyIiwic3RhcnQiLCJwYXRoVG9HZW5lcmF0b3JQcm9jZXNzU3VnYXIiLCJmb3JtU291cmNlc1BhdGgiLCJmYXJtRGlyZWN0b3J5IiwiaGxGYXJtRGlyZWN0b3J5UGF0aCIsImdlbmVyYXRpb25PcHRpb25zIiwicHVyZ2VDYWNoZSIsInJlcXVlc3ROdW1iZXIiLCJzZW5kIiwiZm9ybVNvdXJjZSIsImltcG9ydGVyIiwiR2VuZXJhdG9yU291cmNlc0ltcG9ydGVyIiwicmVhZFNvdXJjZXMiLCJpbXBvcnRSZWFkU291cmNlcyIsInByb2Nlc3NTdWdhciIsImltcG9ydFByb2Nlc3NTdWdhciIsImZvcm1Db250ZW50Iiwic3VnYXJDb250ZW50IiwicmVzb3VyY2VzIiwidmFsaWRhdG9yIiwiR2VuZXJhdG9yU291cmNlc1ZhbGlkYXRvciIsInZhbGlkYXRlIiwicmVzdWx0Iiwia2V5IiwiZm9ybUNvbnRlbnRJdGVtIiwiQnVmZmVyIiwicGF5bG9hZCIsInRvU3RyaW5nIiwiZW5jb2RpbmciLCJ0eXBlIiwiZ2Z2IiwiZ2VuZXJhdGVkRm9ybSIsImVycm9yIiwiRXJyb3IiLCJlcnJvclRleHQiLCJzdGFjayJdLCJtYXBwaW5ncyI6Ijs7QUFFQTs7QUFFQTs7QUFDQTs7QUFXQUEsdUNBQW1CQyxLQUFuQixDQUNJLE9BQ0ksQ0FDSUMsMkJBREosRUFFSUMsZUFGSixFQUdJQyxhQUhKLEVBSUlDLG1CQUpKLEVBS0lDLGlCQUxKLEVBTUlDLFVBTkosRUFPSUMsYUFQSixDQURKLEVBVUlDLElBVkosS0FXb0I7QUFDaEIsTUFBSUMsVUFBSjs7QUFDQSxNQUFJO0FBQ0EsVUFBTUMsUUFBUSxHQUFHLElBQUlDLCtDQUFKLENBQTZCTCxVQUE3QixDQUFqQjtBQUNBLFVBQU1NLFdBQVcsR0FBRyxNQUFNRixRQUFRLENBQUNHLGlCQUFULENBQTJCWiwyQkFBM0IsQ0FBMUI7QUFDQVEsSUFBQUEsVUFBVSxHQUFHLE1BQU1HLFdBQVcsQ0FBQ1YsZUFBRCxFQUFrQkMsYUFBbEIsRUFBaUNDLG1CQUFqQyxDQUE5QjtBQUVBLFVBQU1VLFlBQVksR0FBRyxNQUFNSixRQUFRLENBQUNLLGtCQUFULENBQTRCZCwyQkFBNUIsQ0FBM0I7QUFFQSxVQUFNZSxXQUEwQixHQUFHLE1BQU1GLFlBQVksQ0FDakRMLFVBQVUsQ0FBQ1EsWUFEc0MsRUFFakRSLFVBQVUsQ0FBQ1MsU0FGc0MsRUFHakRiLGlCQUhpRCxDQUFyRDtBQU1BLFVBQU1jLFNBQVMsR0FBRyxJQUFJQyxnREFBSixDQUE4QmYsaUJBQTlCLENBQWxCO0FBQ0EsVUFBTWMsU0FBUyxDQUFDRSxRQUFWLENBQW1CTCxXQUFuQixDQUFOO0FBRUEsVUFBTU0sTUFBd0MsR0FBRyxFQUFqRCxDQWhCQSxDQWtCQTtBQUNBOztBQUNBLFNBQUssTUFBTSxDQUFDQyxHQUFELEVBQU1DLGVBQU4sQ0FBWCxJQUFxQyxtQ0FBZVIsV0FBZixDQUFyQyxFQUFrRTtBQUM5RE0sTUFBQUEsTUFBTSxDQUFDQyxHQUFELENBQU4sR0FDSUMsZUFBZSxZQUFZQyxNQUEzQixHQUNNO0FBQUVDLFFBQUFBLE9BQU8sRUFBRUYsZUFBZSxDQUFDRyxRQUFoQixDQUF5QixRQUF6QixDQUFYO0FBQStDQyxRQUFBQSxRQUFRLEVBQUU7QUFBekQsT0FETixHQUVNSixlQUhWO0FBSUg7O0FBRURoQixJQUFBQSxJQUFJLENBQUM7QUFDRHFCLE1BQUFBLElBQUksRUFBRSxRQURMO0FBRURDLE1BQUFBLEdBQUcsRUFBRXJCLFVBQVUsQ0FBQ1MsU0FBWCxDQUFxQlksR0FGekI7QUFHREMsTUFBQUEsYUFBYSxFQUFFVCxNQUhkO0FBSURmLE1BQUFBLGFBQWEsRUFBRUE7QUFKZCxLQUFELENBQUo7QUFNSCxHQWpDRCxDQWlDRSxPQUFPeUIsS0FBUCxFQUFjO0FBQ1osUUFBSUEsS0FBSyxZQUFZQyxLQUFyQixFQUE0QjtBQUFBOztBQUN4QnpCLE1BQUFBLElBQUksQ0FBQztBQUNEcUIsUUFBQUEsSUFBSSxFQUFFLE9BREw7QUFFREMsUUFBQUEsR0FBRyxpQkFBRXJCLFVBQUYsZ0RBQUUsWUFBWVMsU0FBWixDQUFzQlksR0FGMUI7QUFHREksUUFBQUEsU0FBUyxFQUFHLEdBQUVGLEtBQUssQ0FBQ0wsUUFBTixFQUFpQixLQUFJSyxLQUFLLENBQUNHLEtBQU0sRUFIOUM7QUFJRDVCLFFBQUFBLGFBQWEsRUFBRUE7QUFKZCxPQUFELENBQUo7QUFNSCxLQVBELE1BT087QUFBQTs7QUFDSEMsTUFBQUEsSUFBSSxDQUFDO0FBQ0RxQixRQUFBQSxJQUFJLEVBQUUsT0FETDtBQUVEQyxRQUFBQSxHQUFHLGtCQUFFckIsVUFBRixpREFBRSxhQUFZUyxTQUFaLENBQXNCWSxHQUYxQjtBQUdESSxRQUFBQSxTQUFTLEVBQUcsR0FBRUYsS0FBTSxFQUhuQjtBQUlEekIsUUFBQUEsYUFBYSxFQUFFQTtBQUpkLE9BQUQsQ0FBSjtBQU1IO0FBQ0o7QUFDSixDQWhFTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdlbmVyYXRlZEZvcm0sIEdlbmVyYXRpb25PcHRpb25zIH0gZnJvbSBcIi4uLy4uL0Zvcm0vR2VuZXJhdGVGb3JtXCI7XG5pbXBvcnQgeyBGb3JtU291cmNlIH0gZnJvbSBcIi4uLy4uL1JlYWRGb3JtU291cmNlXCI7XG5pbXBvcnQgeyBpdGVyYXRlRW50cmllcyB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vSXRlcmFibGVVdGlsc1wiO1xuXG5pbXBvcnQgeyBHZW5lcmF0b3JTb3VyY2VzSW1wb3J0ZXIsIEdlbmVyYXRvclNvdXJjZXNWYWxpZGF0b3IgfSBmcm9tIFwiLi9HZW5lcmF0b3JSZXF1aXJlVXRpbHNcIjtcbmltcG9ydCB7IFR5cGVkUHJvY2Vzc1dvcmtlciB9IGZyb20gXCIuL1R5cGVkUHJvY2Vzc1dvcmtlclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlZEZvcm1JbnRlclByb2Nlc3NNZXNzYWdlIHtcbiAgICBbcmVsYXRpdmVGaWxlTmFtZTogc3RyaW5nXTogc3RyaW5nIHwgeyBwYXlsb2FkOiBzdHJpbmc7IGVuY29kaW5nOiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IHR5cGUgQ2FsbE1lc3NhZ2UgPSBbc3RyaW5nLCBzdHJpbmcsIHN0cmluZywgc3RyaW5nLCB1bmRlZmluZWQgfCBHZW5lcmF0aW9uT3B0aW9ucywgYm9vbGVhbiwgbnVtYmVyXTtcbmV4cG9ydCB0eXBlIENhbGxSZXNwb25zZSA9XG4gICAgfCB7IHR5cGU6IFwiUmVzdWx0XCI7IGdmdjogc3RyaW5nOyBnZW5lcmF0ZWRGb3JtOiBHZW5lcmF0ZWRGb3JtSW50ZXJQcm9jZXNzTWVzc2FnZTsgcmVxdWVzdE51bWJlcjogbnVtYmVyIH1cbiAgICB8IHsgdHlwZTogXCJFcnJvclwiOyBnZnY/OiBzdHJpbmc7IGVycm9yVGV4dDogc3RyaW5nOyByZXF1ZXN0TnVtYmVyOiBudW1iZXIgfTtcblxuVHlwZWRQcm9jZXNzV29ya2VyLnN0YXJ0PENhbGxNZXNzYWdlLCBDYWxsUmVzcG9uc2U+KFxuICAgIGFzeW5jIChcbiAgICAgICAgW1xuICAgICAgICAgICAgcGF0aFRvR2VuZXJhdG9yUHJvY2Vzc1N1Z2FyLFxuICAgICAgICAgICAgZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGgsXG4gICAgICAgICAgICBnZW5lcmF0aW9uT3B0aW9ucyxcbiAgICAgICAgICAgIHB1cmdlQ2FjaGUsXG4gICAgICAgICAgICByZXF1ZXN0TnVtYmVyLFxuICAgICAgICBdLFxuICAgICAgICBzZW5kXG4gICAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIGxldCBmb3JtU291cmNlOiBGb3JtU291cmNlIHwgdW5kZWZpbmVkO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgaW1wb3J0ZXIgPSBuZXcgR2VuZXJhdG9yU291cmNlc0ltcG9ydGVyKHB1cmdlQ2FjaGUpO1xuICAgICAgICAgICAgY29uc3QgcmVhZFNvdXJjZXMgPSBhd2FpdCBpbXBvcnRlci5pbXBvcnRSZWFkU291cmNlcyhwYXRoVG9HZW5lcmF0b3JQcm9jZXNzU3VnYXIpO1xuICAgICAgICAgICAgZm9ybVNvdXJjZSA9IGF3YWl0IHJlYWRTb3VyY2VzKGZvcm1Tb3VyY2VzUGF0aCwgZmFybURpcmVjdG9yeSwgaGxGYXJtRGlyZWN0b3J5UGF0aCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NTdWdhciA9IGF3YWl0IGltcG9ydGVyLmltcG9ydFByb2Nlc3NTdWdhcihwYXRoVG9HZW5lcmF0b3JQcm9jZXNzU3VnYXIpO1xuXG4gICAgICAgICAgICBjb25zdCBmb3JtQ29udGVudDogR2VuZXJhdGVkRm9ybSA9IGF3YWl0IHByb2Nlc3NTdWdhcihcbiAgICAgICAgICAgICAgICBmb3JtU291cmNlLnN1Z2FyQ29udGVudCxcbiAgICAgICAgICAgICAgICBmb3JtU291cmNlLnJlc291cmNlcyxcbiAgICAgICAgICAgICAgICBnZW5lcmF0aW9uT3B0aW9uc1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgdmFsaWRhdG9yID0gbmV3IEdlbmVyYXRvclNvdXJjZXNWYWxpZGF0b3IoZ2VuZXJhdGlvbk9wdGlvbnMpO1xuICAgICAgICAgICAgYXdhaXQgdmFsaWRhdG9yLnZhbGlkYXRlKGZvcm1Db250ZW50KTtcblxuICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBHZW5lcmF0ZWRGb3JtSW50ZXJQcm9jZXNzTWVzc2FnZSA9IHt9O1xuXG4gICAgICAgICAgICAvLyBOT1RFIEJlY2F1c2Ugb25seSBKU09OIGFyZSBhbGxvd2VkIGZvciBJUEMgd2UgbmVlZCB0byBjb252ZXJ0IEJ1ZmZlciAtPiBCYXNlNjRcbiAgICAgICAgICAgIC8vIEFub3RoZXIgc29sdXRpb24gaXMgdXNlIGEgc3RyZWFtLCBidXQgZm9ybUNvbnRlbnQgc3RpbGwgbmVlZCB0byBjb252ZXJ0IG9yIHNlbmQgYnkgY2h1bmtzXG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIGZvcm1Db250ZW50SXRlbV0gb2YgaXRlcmF0ZUVudHJpZXMoZm9ybUNvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPVxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udGVudEl0ZW0gaW5zdGFuY2VvZiBCdWZmZXJcbiAgICAgICAgICAgICAgICAgICAgICAgID8geyBwYXlsb2FkOiBmb3JtQ29udGVudEl0ZW0udG9TdHJpbmcoXCJiYXNlNjRcIiksIGVuY29kaW5nOiBcImJhc2U2NFwiIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogZm9ybUNvbnRlbnRJdGVtO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZW5kKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcIlJlc3VsdFwiLFxuICAgICAgICAgICAgICAgIGdmdjogZm9ybVNvdXJjZS5yZXNvdXJjZXMuZ2Z2LFxuICAgICAgICAgICAgICAgIGdlbmVyYXRlZEZvcm06IHJlc3VsdCxcbiAgICAgICAgICAgICAgICByZXF1ZXN0TnVtYmVyOiByZXF1ZXN0TnVtYmVyLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgICAgIHNlbmQoe1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkVycm9yXCIsXG4gICAgICAgICAgICAgICAgICAgIGdmdjogZm9ybVNvdXJjZT8ucmVzb3VyY2VzLmdmdixcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JUZXh0OiBgJHtlcnJvci50b1N0cmluZygpfVxcbiR7ZXJyb3Iuc3RhY2t9YCxcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdE51bWJlcjogcmVxdWVzdE51bWJlcixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VuZCh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiRXJyb3JcIixcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBmb3JtU291cmNlPy5yZXNvdXJjZXMuZ2Z2LFxuICAgICAgICAgICAgICAgICAgICBlcnJvclRleHQ6IGAke2Vycm9yfWAsXG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3ROdW1iZXI6IHJlcXVlc3ROdW1iZXIsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4pO1xuIl19
@@ -133,4 +133,4 @@ function getFormConfigFromSource(formConfig, logger) {
133
133
  } : undefined
134
134
  };
135
135
  }
136
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9CdWlsZFRhc2tzL1Jlc29sdmVGb3JtSW5mby50cyJdLCJuYW1lcyI6WyJGb3JtQnVpbGRNb2RlIiwicmVzb2x2ZUZvcm1JbmZvIiwiZm9ybUpzb25GaWxlIiwicGF0aFRvRm9ybSIsIl9lbmdpbmVEaXJlY3RvcnkiLCJsb2dnZXIiLCJ1cGdyYWRlRm9ybUpzb24iLCJ1c2VMYXN0U3RhYmxlVmVyc2lvbiIsInVzZVByZXJlbGVhc2VWZXJzaW9uIiwibmlnaHRseSIsImZvcm1Db25maWciLCJyZWFkRm9ybUNvbmZpZyIsInVuZGVmaW5lZCIsIkVycm9yIiwiZGVwZW5kZW5jaWVzIiwiZW5naW5lIiwiZ2VuZXJhdG9yIiwibG9nIiwiSlNPTiIsInN0cmluZ2lmeSIsInByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24iLCJnZW5lcmF0b3JWZXJzaW9uIiwiZW5naW5lVmVyc2lvbiIsInR5cGUiLCJwcmVJZCIsInRoZW1lcyIsIm1vZGUiLCJOb0VkaXRvciIsIkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcyIsIk5vcm1hbEJ1aWxkIiwiZm9ybU5hbWUiLCJwYXRoIiwiYmFzZW5hbWUiLCJmb3JtU291cmNlc1BhdGgiLCJpc05ld0Zvcm1Kc29uRm9ybWF0IiwiZ2V0Rm9ybUNvbmZpZ0Zyb21Tb3VyY2UiLCJzZXR0aW5ncyIsInVzZVNlcnZlclNpZGVGTGFuZ05vcm1hbGl6YXRpb24iLCJ4IiwiYnVpbGQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFLQTs7SUFFWUEsYTs7O1dBQUFBLGE7QUFBQUEsRUFBQUEsYSxDQUFBQSxhO0FBQUFBLEVBQUFBLGEsQ0FBQUEsYTtBQUFBQSxFQUFBQSxhLENBQUFBLGE7R0FBQUEsYSw2QkFBQUEsYTs7QUE2Q0wsZUFBZUMsZUFBZixDQUNIQyxZQURHLEVBRUhDLFVBRkcsRUFHSEMsZ0JBSEcsRUFJSEMsTUFBZSxHQUFHLDhCQUpm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LEdBQUc7QUFDYkMsSUFBQUEsK0JBQStCLEVBQUUsS0FEcEI7QUFFYixPQUFHLDRDQUFPM0IsVUFBVSxDQUFDMEIsUUFBbEIsdUVBQThCLEVBQTlCLEVBQWtDRSxDQUFDLElBQUlBLENBQUMsS0FBSzFCLFNBQTdDO0FBRlUsR0FBakI7QUFLQSxTQUFPO0FBQ0hhLElBQUFBLE1BQU0sRUFBRWYsVUFBVSxDQUFDZSxNQURoQjtBQUVIYyxJQUFBQSxLQUFLLEVBQUU3QixVQUFVLENBQUM2QixLQUFYLElBQW9CLFFBRnhCO0FBR0hiLElBQUFBLElBQUksc0JBQUVoQixVQUFVLENBQUNnQixJQUFiLCtEQUFxQixjQUh0QjtBQUlIVSxJQUFBQSxRQUFRLEVBQUVBLFFBSlA7QUFLSHRCLElBQUFBLFlBQVksRUFDUkosVUFBVSxDQUFDSSxZQUFYLElBQTJCRixTQUEzQixHQUNNO0FBQ0lJLE1BQUFBLFNBQVMsRUFBRU4sVUFBVSxDQUFDSSxZQUFYLENBQXdCRSxTQUR2QztBQUVJRCxNQUFBQSxNQUFNLEVBQUVMLFVBQVUsQ0FBQ0ksWUFBWCxDQUF3QkM7QUFGcEMsS0FETixHQUtNSDtBQVhQLEdBQVA7QUFhSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IHJlYWRKc29uIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgeyBwaWNrQnkgfSBmcm9tIFwibG9kYXNoXCI7XG5cbmltcG9ydCB7IHdyaXRlRmlsZUFzeW5jIH0gZnJvbSBcIi4uL0NvbW1vbnMvRnNVdGlsc1wiO1xuaW1wb3J0IHsgSUxvZ2dlciB9IGZyb20gXCIuLi9Db21tb25zL0xvZ2dpbmcvSUxvZ2dlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcblxuaW1wb3J0IHtcbiAgICBnZXRMYXN0U3RhYmxlRW5naW5lVmVyc2lvbixcbiAgICBnZXRMYXN0U3RhYmxlR2VuZXJhdG9yVmVyc2lvbixcbiAgICBnZXRQcmVyZWxlYXNlVmVyc2lvbkZvcm1Kc29uLFxufSBmcm9tIFwiLi9QdWJsaXNoZWRWZXJzaW9uVXRpbHNcIjtcbmltcG9ydCB7IENhbmR5VmVyc2lvblNwZWMsIGlzVmFsaWRTZW1WZXJWZXJzaW9uUmFuZ2UsIHBhcnNlQ2FuZHlWZXJzaW9uU3BlYyB9IGZyb20gXCIuL1ZlcnNpb25cIjtcblxuZXhwb3J0IGVudW0gRm9ybUJ1aWxkTW9kZSB7XG4gICAgTm9ybWFsQnVpbGQsXG4gICAgTm9FZGl0b3IsXG4gICAgQ29weUxlZ2FjeVByZWJ1aWx0UmVzb3VyY2VzLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1JbmZvIHtcbiAgICB0aGVtZXM/OiBzdHJpbmdbXTtcbiAgICBtb2RlOiBGb3JtQnVpbGRNb2RlO1xuICAgIGZvcm1OYW1lOiBzdHJpbmc7XG4gICAgZm9ybVNvdXJjZXNQYXRoOiBzdHJpbmc7XG4gICAgZ2VuZXJhdG9yVmVyc2lvbjogdW5kZWZpbmVkIHwgQ2FuZHlWZXJzaW9uU3BlYztcbiAgICBlbmdpbmVWZXJzaW9uOiB1bmRlZmluZWQgfCBDYW5keVZlcnNpb25TcGVjO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1Db25maWdDb250ZW50IHtcbiAgICB0aGVtZXM/OiBzdHJpbmdbXTtcbiAgICBidWlsZD86IFwiY2lcIiB8IFwibWFudWFsXCI7XG4gICAgbW9kZT86IFwibm8tZWRpdG9yXCIgfCBcImNvcHktbGVnYWN5LXByZWJ1aWx0LXJlc291cmNlc1wiO1xuICAgIGRlcGVuZGVuY2llcz86IHtcbiAgICAgICAgZ2VuZXJhdG9yPzogc3RyaW5nO1xuICAgICAgICBlbmdpbmU/OiBzdHJpbmc7XG4gICAgfTtcbiAgICBzZXR0aW5ncz86IHtcbiAgICAgICAgdXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbj86IGJvb2xlYW47XG4gICAgICAgIGF1dG9DYWxjdWxhdGlvbkNhbGN1bGF0b3JJbXBsPzogXCJjYWxjdWxhdG9yMlwiO1xuICAgICAgICBkaXNhYmxlRmxhbmdSdWxlc0ZvckVuYWJsZUF1dG9GaWVsZEZlYXR1cmU/OiBib29sZWFuO1xuICAgIH07XG59XG5cbmludGVyZmFjZSBGb3JtQ29uZmlnIHtcbiAgICB0aGVtZXM/OiBzdHJpbmdbXTtcbiAgICBidWlsZD86IFwiY2lcIiB8IFwibWFudWFsXCI7XG4gICAgbW9kZT86IFwibm8tZWRpdG9yXCIgfCBcImNvcHktbGVnYWN5LXByZWJ1aWx0LXJlc291cmNlc1wiIHwgXCJub3JtYWwtYnVpbGRcIjtcbiAgICBkZXBlbmRlbmNpZXM/OiB7XG4gICAgICAgIGdlbmVyYXRvcjogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICAgICAgICBlbmdpbmU6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICB9O1xuICAgIHNldHRpbmdzOiB7XG4gICAgICAgIHVzZVNlcnZlclNpZGVGTGFuZ05vcm1hbGl6YXRpb246IGJvb2xlYW47XG4gICAgICAgIGF1dG9DYWxjdWxhdGlvbkNhbGN1bGF0b3JJbXBsPzogXCJjYWxjdWxhdG9yMlwiIHwgXCJkZWZhdWx0XCI7XG4gICAgICAgIGRpc2FibGVGbGFuZ1J1bGVzRm9yRW5hYmxlQXV0b0ZpZWxkRmVhdHVyZT86IGJvb2xlYW47XG4gICAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVGb3JtSW5mbyhcbiAgICBmb3JtSnNvbkZpbGU6IHN0cmluZyxcbiAgICBwYXRoVG9Gb3JtOiBzdHJpbmcsXG4gICAgX2VuZ2luZURpcmVjdG9yeTogdW5kZWZpbmVkIHwgc3RyaW5nLFxuICAgIGxvZ2dlcjogSUxvZ2dlciA9IGdldExvZ2dlcigpLFxuICAgIHVwZ3JhZGVGb3JtSnNvbjogYm9vbGVhbiA9IGZhbHNlLFxuICAgIHVzZUxhc3RTdGFibGVWZXJzaW9uOiBib29sZWFuID0gZmFsc2UsXG4gICAgdXNlUHJlcmVsZWFzZVZlcnNpb24/OiBzdHJpbmcsXG4gICAgbmlnaHRseTogYm9vbGVhbiA9IGZhbHNlXG4pOiBQcm9taXNlPEZvcm1JbmZvPiB7XG4gICAgY29uc3QgZm9ybUNvbmZpZyA9IGF3YWl0IHJlYWRGb3JtQ29uZmlnKGZvcm1Kc29uRmlsZSwgbG9nZ2VyKTtcbiAgICBpZiAodXNlTGFzdFN0YWJsZVZlcnNpb24gJiYgdXNlUHJlcmVsZWFzZVZlcnNpb24gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcItCd0LXQvtCx0YXQvtC00LjQvNC+INC40YHQv9C+0LvRjNC30L7QstCw0YLRjCDQu9C40LHQviDRhNC70LDQsyB1c2VMYXN0U3RhYmxlVmVyc2lvbiDQu9C40LHQviB1c2VQcmVyZWxlYXNlVmVyc2lvblwiKTtcbiAgICB9XG4gICAgaWYgKHVzZUxhc3RTdGFibGVWZXJzaW9uKSB7XG4gICAgICAgIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzID0ge1xuICAgICAgICAgICAgZW5naW5lOiBhd2FpdCBnZXRMYXN0U3RhYmxlRW5naW5lVmVyc2lvbigpLFxuICAgICAgICAgICAgZ2VuZXJhdG9yOiBhd2FpdCBnZXRMYXN0U3RhYmxlR2VuZXJhdG9yVmVyc2lvbigpLFxuICAgICAgICB9O1xuICAgICAgICBsb2dnZXIubG9nKGBVcGRhdGVkIHRvIGxhc3Qgc3RhYmxlIHZlcnNpb24gJHtmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5lbmdpbmV9YCk7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZUFzeW5jKGZvcm1Kc29uRmlsZSwgSlNPTi5zdHJpbmdpZnkoZm9ybUNvbmZpZywgdW5kZWZpbmVkLCBcIiAgXCIpLCBcInV0ZjhcIik7XG4gICAgfVxuICAgIGlmICh1c2VQcmVyZWxlYXNlVmVyc2lvbiAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgcHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbiA9IGF3YWl0IGdldFByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24odXNlUHJlcmVsZWFzZVZlcnNpb24pO1xuICAgICAgICBpZiAocHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbiAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzID0ge1xuICAgICAgICAgICAgICAgIGVuZ2luZTogcHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbixcbiAgICAgICAgICAgICAgICBnZW5lcmF0b3I6IHByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhgVXBkYXRlZCB0byBsYXN0IHByZXJlbGVhc2UgdmVyc2lvbiAke2Zvcm1Db25maWcuZGVwZW5kZW5jaWVzLmVuZ2luZX1gKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhmb3JtSnNvbkZpbGUsIEpTT04uc3RyaW5naWZ5KGZvcm1Db25maWcsIHVuZGVmaW5lZCwgXCIgIFwiKSwgXCJ1dGY4XCIpO1xuICAgIH1cbiAgICBsZXQgZ2VuZXJhdG9yVmVyc2lvbiA9XG4gICAgICAgIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzPy5nZW5lcmF0b3IgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IHBhcnNlQ2FuZHlWZXJzaW9uU3BlYyhmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5nZW5lcmF0b3IpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBsZXQgZW5naW5lVmVyc2lvbiA9XG4gICAgICAgIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzPy5lbmdpbmUgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IHBhcnNlQ2FuZHlWZXJzaW9uU3BlYyhmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5lbmdpbmUpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBpZiAobmlnaHRseSkge1xuICAgICAgICBnZW5lcmF0b3JWZXJzaW9uID0geyB0eXBlOiBcInByZVwiLCBwcmVJZDogXCJuaWdodGx5XCIgfTtcbiAgICAgICAgZW5naW5lVmVyc2lvbiA9IHsgdHlwZTogXCJwcmVcIiwgcHJlSWQ6IFwibmlnaHRseVwiIH07XG4gICAgfVxuICAgIGlmICh1cGdyYWRlRm9ybUpzb24pIHtcbiAgICAgICAgYXdhaXQgd3JpdGVGaWxlQXN5bmMoZm9ybUpzb25GaWxlLCBKU09OLnN0cmluZ2lmeShmb3JtQ29uZmlnLCB1bmRlZmluZWQsIFwiICBcIiksIFwidXRmOFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdGhlbWVzOiBmb3JtQ29uZmlnLnRoZW1lcyxcbiAgICAgICAgbW9kZTpcbiAgICAgICAgICAgIGZvcm1Db25maWcubW9kZSA9PT0gXCJuby1lZGl0b3JcIlxuICAgICAgICAgICAgICAgID8gRm9ybUJ1aWxkTW9kZS5Ob0VkaXRvclxuICAgICAgICAgICAgICAgIDogZm9ybUNvbmZpZy5tb2RlID09PSBcImNvcHktbGVnYWN5LXByZWJ1aWx0LXJlc291cmNlc1wiXG4gICAgICAgICAgICAgICAgPyBGb3JtQnVpbGRNb2RlLkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlc1xuICAgICAgICAgICAgICAgIDogRm9ybUJ1aWxkTW9kZS5Ob3JtYWxCdWlsZCxcbiAgICAgICAgZm9ybU5hbWU6IHBhdGguYmFzZW5hbWUocGF0aFRvRm9ybSksXG4gICAgICAgIGZvcm1Tb3VyY2VzUGF0aDogcGF0aFRvRm9ybSxcbiAgICAgICAgZ2VuZXJhdG9yVmVyc2lvbjogZ2VuZXJhdG9yVmVyc2lvbixcbiAgICAgICAgZW5naW5lVmVyc2lvbjogZW5naW5lVmVyc2lvbixcbiAgICB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaXNOZXdGb3JtSnNvbkZvcm1hdChmb3JtSnNvbkZpbGU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby11bnNhZmUtYW55XG4gICAgY29uc3QgZm9ybUNvbmZpZzogRm9ybUNvbmZpZ0NvbnRlbnQgPSBhd2FpdCByZWFkSnNvbihmb3JtSnNvbkZpbGUpO1xuICAgIHJldHVybiBmb3JtQ29uZmlnLmRlcGVuZGVuY2llcyAhPSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkRm9ybUNvbmZpZyhmb3JtSnNvbkZpbGU6IHN0cmluZywgbG9nZ2VyOiBJTG9nZ2VyKTogUHJvbWlzZTxGb3JtQ29uZmlnPiB7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLXVuc2FmZS1hbnlcbiAgICBjb25zdCBmb3JtQ29uZmlnOiBGb3JtQ29uZmlnQ29udGVudCA9IGF3YWl0IHJlYWRKc29uKGZvcm1Kc29uRmlsZSk7XG4gICAgcmV0dXJuIGdldEZvcm1Db25maWdGcm9tU291cmNlKGZvcm1Db25maWcsIGxvZ2dlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtQ29uZmlnRnJvbVNvdXJjZShmb3JtQ29uZmlnOiBGb3JtQ29uZmlnQ29udGVudCwgbG9nZ2VyOiBJTG9nZ2VyKTogRm9ybUNvbmZpZyB7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLXVuc2FmZS1hbnlcbiAgICBpZiAoXG4gICAgICAgIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzPy5nZW5lcmF0b3IgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICFpc1ZhbGlkU2VtVmVyVmVyc2lvblJhbmdlKGZvcm1Db25maWcuZGVwZW5kZW5jaWVzLmdlbmVyYXRvcilcbiAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2Zvcm1Db25maWcuZGVwZW5kZW5jaWVzLmdlbmVyYXRvcn0gaXMgbm90IHZhbGlkIHZlcnNpb24gZm9ybWF0YCk7XG4gICAgfVxuXG4gICAgaWYgKGZvcm1Db25maWcuZGVwZW5kZW5jaWVzPy5lbmdpbmUgIT0gdW5kZWZpbmVkICYmICFpc1ZhbGlkU2VtVmVyVmVyc2lvblJhbmdlKGZvcm1Db25maWcuZGVwZW5kZW5jaWVzLmVuZ2luZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2Zvcm1Db25maWcuZGVwZW5kZW5jaWVzLmVuZ2luZX0gaXMgbm90IHZhbGlkIHZlcnNpb24gZm9ybWF0YCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2V0dGluZ3MgPSB7XG4gICAgICAgIHVzZVNlcnZlclNpZGVGTGFuZ05vcm1hbGl6YXRpb246IGZhbHNlLFxuICAgICAgICAuLi5waWNrQnkoZm9ybUNvbmZpZy5zZXR0aW5ncyA/PyB7fSwgeCA9PiB4ICE9PSB1bmRlZmluZWQpLFxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB0aGVtZXM6IGZvcm1Db25maWcudGhlbWVzLFxuICAgICAgICBidWlsZDogZm9ybUNvbmZpZy5idWlsZCB8fCBcIm1hbnVhbFwiLFxuICAgICAgICBtb2RlOiBmb3JtQ29uZmlnLm1vZGUgPz8gXCJub3JtYWwtYnVpbGRcIixcbiAgICAgICAgc2V0dGluZ3M6IHNldHRpbmdzLFxuICAgICAgICBkZXBlbmRlbmNpZXM6XG4gICAgICAgICAgICBmb3JtQ29uZmlnLmRlcGVuZGVuY2llcyAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3I6IGZvcm1Db25maWcuZGVwZW5kZW5jaWVzLmdlbmVyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgICBlbmdpbmU6IGZvcm1Db25maWcuZGVwZW5kZW5jaWVzLmVuZ2luZSxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9O1xufVxuIl19
136
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9CdWlsZFRhc2tzL1Jlc29sdmVGb3JtSW5mby50cyJdLCJuYW1lcyI6WyJGb3JtQnVpbGRNb2RlIiwicmVzb2x2ZUZvcm1JbmZvIiwiZm9ybUpzb25GaWxlIiwicGF0aFRvRm9ybSIsIl9lbmdpbmVEaXJlY3RvcnkiLCJsb2dnZXIiLCJ1cGdyYWRlRm9ybUpzb24iLCJ1c2VMYXN0U3RhYmxlVmVyc2lvbiIsInVzZVByZXJlbGVhc2VWZXJzaW9uIiwibmlnaHRseSIsImZvcm1Db25maWciLCJyZWFkRm9ybUNvbmZpZyIsInVuZGVmaW5lZCIsIkVycm9yIiwiZGVwZW5kZW5jaWVzIiwiZW5naW5lIiwiZ2VuZXJhdG9yIiwibG9nIiwiSlNPTiIsInN0cmluZ2lmeSIsInByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24iLCJnZW5lcmF0b3JWZXJzaW9uIiwiZW5naW5lVmVyc2lvbiIsInR5cGUiLCJwcmVJZCIsInRoZW1lcyIsIm1vZGUiLCJOb0VkaXRvciIsIkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcyIsIk5vcm1hbEJ1aWxkIiwiZm9ybU5hbWUiLCJwYXRoIiwiYmFzZW5hbWUiLCJmb3JtU291cmNlc1BhdGgiLCJpc05ld0Zvcm1Kc29uRm9ybWF0IiwiZ2V0Rm9ybUNvbmZpZ0Zyb21Tb3VyY2UiLCJzZXR0aW5ncyIsInVzZVNlcnZlclNpZGVGTGFuZ05vcm1hbGl6YXRpb24iLCJ4IiwiYnVpbGQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFLQTs7SUFFWUEsYTs7O1dBQUFBLGE7QUFBQUEsRUFBQUEsYSxDQUFBQSxhO0FBQUFBLEVBQUFBLGEsQ0FBQUEsYTtBQUFBQSxFQUFBQSxhLENBQUFBLGE7R0FBQUEsYSw2QkFBQUEsYTs7QUErQ0wsZUFBZUMsZUFBZixDQUNIQyxZQURHLEVBRUhDLFVBRkcsRUFHSEMsZ0JBSEcsRUFJSEMsTUFBZSxHQUFHLDhCQUpm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LEdBQUc7QUFDYkMsSUFBQUEsK0JBQStCLEVBQUUsS0FEcEI7QUFFYixPQUFHLDRDQUFPM0IsVUFBVSxDQUFDMEIsUUFBbEIsdUVBQThCLEVBQTlCLEVBQWtDRSxDQUFDLElBQUlBLENBQUMsS0FBSzFCLFNBQTdDO0FBRlUsR0FBakI7QUFLQSxTQUFPO0FBQ0hhLElBQUFBLE1BQU0sRUFBRWYsVUFBVSxDQUFDZSxNQURoQjtBQUVIYyxJQUFBQSxLQUFLLEVBQUU3QixVQUFVLENBQUM2QixLQUFYLElBQW9CLFFBRnhCO0FBR0hiLElBQUFBLElBQUksc0JBQUVoQixVQUFVLENBQUNnQixJQUFiLCtEQUFxQixjQUh0QjtBQUlIVSxJQUFBQSxRQUFRLEVBQUVBLFFBSlA7QUFLSHRCLElBQUFBLFlBQVksRUFDUkosVUFBVSxDQUFDSSxZQUFYLElBQTJCRixTQUEzQixHQUNNO0FBQ0lJLE1BQUFBLFNBQVMsRUFBRU4sVUFBVSxDQUFDSSxZQUFYLENBQXdCRSxTQUR2QztBQUVJRCxNQUFBQSxNQUFNLEVBQUVMLFVBQVUsQ0FBQ0ksWUFBWCxDQUF3QkM7QUFGcEMsS0FETixHQUtNSDtBQVhQLEdBQVA7QUFhSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IHJlYWRKc29uIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgeyBwaWNrQnkgfSBmcm9tIFwibG9kYXNoXCI7XG5cbmltcG9ydCB7IHdyaXRlRmlsZUFzeW5jIH0gZnJvbSBcIi4uL0NvbW1vbnMvRnNVdGlsc1wiO1xuaW1wb3J0IHsgSUxvZ2dlciB9IGZyb20gXCIuLi9Db21tb25zL0xvZ2dpbmcvSUxvZ2dlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcblxuaW1wb3J0IHtcbiAgICBnZXRMYXN0U3RhYmxlRW5naW5lVmVyc2lvbixcbiAgICBnZXRMYXN0U3RhYmxlR2VuZXJhdG9yVmVyc2lvbixcbiAgICBnZXRQcmVyZWxlYXNlVmVyc2lvbkZvcm1Kc29uLFxufSBmcm9tIFwiLi9QdWJsaXNoZWRWZXJzaW9uVXRpbHNcIjtcbmltcG9ydCB7IENhbmR5VmVyc2lvblNwZWMsIGlzVmFsaWRTZW1WZXJWZXJzaW9uUmFuZ2UsIHBhcnNlQ2FuZHlWZXJzaW9uU3BlYyB9IGZyb20gXCIuL1ZlcnNpb25cIjtcblxuZXhwb3J0IGVudW0gRm9ybUJ1aWxkTW9kZSB7XG4gICAgTm9ybWFsQnVpbGQsXG4gICAgTm9FZGl0b3IsXG4gICAgQ29weUxlZ2FjeVByZWJ1aWx0UmVzb3VyY2VzLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1JbmZvIHtcbiAgICB0aGVtZXM/OiBzdHJpbmdbXTtcbiAgICBtb2RlOiBGb3JtQnVpbGRNb2RlO1xuICAgIGZvcm1OYW1lOiBzdHJpbmc7XG4gICAgZm9ybVNvdXJjZXNQYXRoOiBzdHJpbmc7XG4gICAgZ2VuZXJhdG9yVmVyc2lvbjogdW5kZWZpbmVkIHwgQ2FuZHlWZXJzaW9uU3BlYztcbiAgICBlbmdpbmVWZXJzaW9uOiB1bmRlZmluZWQgfCBDYW5keVZlcnNpb25TcGVjO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1Db25maWdDb250ZW50IHtcbiAgICB0aGVtZXM/OiBzdHJpbmdbXTtcbiAgICBidWlsZD86IFwiY2lcIiB8IFwibWFudWFsXCI7XG4gICAgbW9kZT86IFwibm8tZWRpdG9yXCIgfCBcImNvcHktbGVnYWN5LXByZWJ1aWx0LXJlc291cmNlc1wiO1xuICAgIGRlcGVuZGVuY2llcz86IHtcbiAgICAgICAgZ2VuZXJhdG9yPzogc3RyaW5nO1xuICAgICAgICBlbmdpbmU/OiBzdHJpbmc7XG4gICAgfTtcbiAgICBzZXR0aW5ncz86IHtcbiAgICAgICAgdXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbj86IGJvb2xlYW47XG4gICAgICAgIGF1dG9DYWxjdWxhdGlvbkNhbGN1bGF0b3JJbXBsPzogXCJjYWxjdWxhdG9yMlwiO1xuICAgICAgICBkaXNhYmxlRmxhbmdSdWxlc0ZvckVuYWJsZUF1dG9GaWVsZEZlYXR1cmU/OiBib29sZWFuO1xuICAgICAgICBkaXNhYmxlRmxhbmdSdWxlc0ZvckZvcm11bGFBbmRJbml0Tm9ybWFsaXplcj86IGJvb2xlYW47XG4gICAgfTtcbn1cblxuaW50ZXJmYWNlIEZvcm1Db25maWcge1xuICAgIHRoZW1lcz86IHN0cmluZ1tdO1xuICAgIGJ1aWxkPzogXCJjaVwiIHwgXCJtYW51YWxcIjtcbiAgICBtb2RlPzogXCJuby1lZGl0b3JcIiB8IFwiY29weS1sZWdhY3ktcHJlYnVpbHQtcmVzb3VyY2VzXCIgfCBcIm5vcm1hbC1idWlsZFwiO1xuICAgIGRlcGVuZGVuY2llcz86IHtcbiAgICAgICAgZ2VuZXJhdG9yOiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAgICAgIGVuZ2luZTogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICAgIH07XG4gICAgc2V0dGluZ3M6IHtcbiAgICAgICAgdXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbjogYm9vbGVhbjtcbiAgICAgICAgYXV0b0NhbGN1bGF0aW9uQ2FsY3VsYXRvckltcGw/OiBcImNhbGN1bGF0b3IyXCIgfCBcImRlZmF1bHRcIjtcbiAgICAgICAgZGlzYWJsZUZsYW5nUnVsZXNGb3JFbmFibGVBdXRvRmllbGRGZWF0dXJlPzogYm9vbGVhbjtcbiAgICAgICAgZGlzYWJsZUZsYW5nUnVsZXNGb3JGb3JtdWxhQW5kSW5pdE5vcm1hbGl6ZXI/OiBib29sZWFuO1xuICAgIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNvbHZlRm9ybUluZm8oXG4gICAgZm9ybUpzb25GaWxlOiBzdHJpbmcsXG4gICAgcGF0aFRvRm9ybTogc3RyaW5nLFxuICAgIF9lbmdpbmVEaXJlY3Rvcnk6IHVuZGVmaW5lZCB8IHN0cmluZyxcbiAgICBsb2dnZXI6IElMb2dnZXIgPSBnZXRMb2dnZXIoKSxcbiAgICB1cGdyYWRlRm9ybUpzb246IGJvb2xlYW4gPSBmYWxzZSxcbiAgICB1c2VMYXN0U3RhYmxlVmVyc2lvbjogYm9vbGVhbiA9IGZhbHNlLFxuICAgIHVzZVByZXJlbGVhc2VWZXJzaW9uPzogc3RyaW5nLFxuICAgIG5pZ2h0bHk6IGJvb2xlYW4gPSBmYWxzZVxuKTogUHJvbWlzZTxGb3JtSW5mbz4ge1xuICAgIGNvbnN0IGZvcm1Db25maWcgPSBhd2FpdCByZWFkRm9ybUNvbmZpZyhmb3JtSnNvbkZpbGUsIGxvZ2dlcik7XG4gICAgaWYgKHVzZUxhc3RTdGFibGVWZXJzaW9uICYmIHVzZVByZXJlbGVhc2VWZXJzaW9uICE9IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCLQndC10L7QsdGF0L7QtNC40LzQviDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0Ywg0LvQuNCx0L4g0YTQu9Cw0LMgdXNlTGFzdFN0YWJsZVZlcnNpb24g0LvQuNCx0L4gdXNlUHJlcmVsZWFzZVZlcnNpb25cIik7XG4gICAgfVxuICAgIGlmICh1c2VMYXN0U3RhYmxlVmVyc2lvbikge1xuICAgICAgICBmb3JtQ29uZmlnLmRlcGVuZGVuY2llcyA9IHtcbiAgICAgICAgICAgIGVuZ2luZTogYXdhaXQgZ2V0TGFzdFN0YWJsZUVuZ2luZVZlcnNpb24oKSxcbiAgICAgICAgICAgIGdlbmVyYXRvcjogYXdhaXQgZ2V0TGFzdFN0YWJsZUdlbmVyYXRvclZlcnNpb24oKSxcbiAgICAgICAgfTtcbiAgICAgICAgbG9nZ2VyLmxvZyhgVXBkYXRlZCB0byBsYXN0IHN0YWJsZSB2ZXJzaW9uICR7Zm9ybUNvbmZpZy5kZXBlbmRlbmNpZXMuZW5naW5lfWApO1xuICAgICAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhmb3JtSnNvbkZpbGUsIEpTT04uc3RyaW5naWZ5KGZvcm1Db25maWcsIHVuZGVmaW5lZCwgXCIgIFwiKSwgXCJ1dGY4XCIpO1xuICAgIH1cbiAgICBpZiAodXNlUHJlcmVsZWFzZVZlcnNpb24gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IHByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24gPSBhd2FpdCBnZXRQcmVyZWxlYXNlVmVyc2lvbkZvcm1Kc29uKHVzZVByZXJlbGVhc2VWZXJzaW9uKTtcbiAgICAgICAgaWYgKHByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmb3JtQ29uZmlnLmRlcGVuZGVuY2llcyA9IHtcbiAgICAgICAgICAgICAgICBlbmdpbmU6IHByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24sXG4gICAgICAgICAgICAgICAgZ2VuZXJhdG9yOiBwcmVyZWxlYXNlVmVyc2lvbkZvcm1Kc29uLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGxvZ2dlci5sb2coYFVwZGF0ZWQgdG8gbGFzdCBwcmVyZWxlYXNlIHZlcnNpb24gJHtmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5lbmdpbmV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgd3JpdGVGaWxlQXN5bmMoZm9ybUpzb25GaWxlLCBKU09OLnN0cmluZ2lmeShmb3JtQ29uZmlnLCB1bmRlZmluZWQsIFwiICBcIiksIFwidXRmOFwiKTtcbiAgICB9XG4gICAgbGV0IGdlbmVyYXRvclZlcnNpb24gPVxuICAgICAgICBmb3JtQ29uZmlnLmRlcGVuZGVuY2llcz8uZ2VuZXJhdG9yICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBwYXJzZUNhbmR5VmVyc2lvblNwZWMoZm9ybUNvbmZpZy5kZXBlbmRlbmNpZXMuZ2VuZXJhdG9yKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgbGV0IGVuZ2luZVZlcnNpb24gPVxuICAgICAgICBmb3JtQ29uZmlnLmRlcGVuZGVuY2llcz8uZW5naW5lICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBwYXJzZUNhbmR5VmVyc2lvblNwZWMoZm9ybUNvbmZpZy5kZXBlbmRlbmNpZXMuZW5naW5lKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgaWYgKG5pZ2h0bHkpIHtcbiAgICAgICAgZ2VuZXJhdG9yVmVyc2lvbiA9IHsgdHlwZTogXCJwcmVcIiwgcHJlSWQ6IFwibmlnaHRseVwiIH07XG4gICAgICAgIGVuZ2luZVZlcnNpb24gPSB7IHR5cGU6IFwicHJlXCIsIHByZUlkOiBcIm5pZ2h0bHlcIiB9O1xuICAgIH1cbiAgICBpZiAodXBncmFkZUZvcm1Kc29uKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZUFzeW5jKGZvcm1Kc29uRmlsZSwgSlNPTi5zdHJpbmdpZnkoZm9ybUNvbmZpZywgdW5kZWZpbmVkLCBcIiAgXCIpLCBcInV0ZjhcIik7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHRoZW1lczogZm9ybUNvbmZpZy50aGVtZXMsXG4gICAgICAgIG1vZGU6XG4gICAgICAgICAgICBmb3JtQ29uZmlnLm1vZGUgPT09IFwibm8tZWRpdG9yXCJcbiAgICAgICAgICAgICAgICA/IEZvcm1CdWlsZE1vZGUuTm9FZGl0b3JcbiAgICAgICAgICAgICAgICA6IGZvcm1Db25maWcubW9kZSA9PT0gXCJjb3B5LWxlZ2FjeS1wcmVidWlsdC1yZXNvdXJjZXNcIlxuICAgICAgICAgICAgICAgID8gRm9ybUJ1aWxkTW9kZS5Db3B5TGVnYWN5UHJlYnVpbHRSZXNvdXJjZXNcbiAgICAgICAgICAgICAgICA6IEZvcm1CdWlsZE1vZGUuTm9ybWFsQnVpbGQsXG4gICAgICAgIGZvcm1OYW1lOiBwYXRoLmJhc2VuYW1lKHBhdGhUb0Zvcm0pLFxuICAgICAgICBmb3JtU291cmNlc1BhdGg6IHBhdGhUb0Zvcm0sXG4gICAgICAgIGdlbmVyYXRvclZlcnNpb246IGdlbmVyYXRvclZlcnNpb24sXG4gICAgICAgIGVuZ2luZVZlcnNpb246IGVuZ2luZVZlcnNpb24sXG4gICAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzTmV3Rm9ybUpzb25Gb3JtYXQoZm9ybUpzb25GaWxlOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5zYWZlLWFueVxuICAgIGNvbnN0IGZvcm1Db25maWc6IEZvcm1Db25maWdDb250ZW50ID0gYXdhaXQgcmVhZEpzb24oZm9ybUpzb25GaWxlKTtcbiAgICByZXR1cm4gZm9ybUNvbmZpZy5kZXBlbmRlbmNpZXMgIT0gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEZvcm1Db25maWcoZm9ybUpzb25GaWxlOiBzdHJpbmcsIGxvZ2dlcjogSUxvZ2dlcik6IFByb21pc2U8Rm9ybUNvbmZpZz4ge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby11bnNhZmUtYW55XG4gICAgY29uc3QgZm9ybUNvbmZpZzogRm9ybUNvbmZpZ0NvbnRlbnQgPSBhd2FpdCByZWFkSnNvbihmb3JtSnNvbkZpbGUpO1xuICAgIHJldHVybiBnZXRGb3JtQ29uZmlnRnJvbVNvdXJjZShmb3JtQ29uZmlnLCBsb2dnZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybUNvbmZpZ0Zyb21Tb3VyY2UoZm9ybUNvbmZpZzogRm9ybUNvbmZpZ0NvbnRlbnQsIGxvZ2dlcjogSUxvZ2dlcik6IEZvcm1Db25maWcge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby11bnNhZmUtYW55XG4gICAgaWYgKFxuICAgICAgICBmb3JtQ29uZmlnLmRlcGVuZGVuY2llcz8uZ2VuZXJhdG9yICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICAhaXNWYWxpZFNlbVZlclZlcnNpb25SYW5nZShmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5nZW5lcmF0b3IpXG4gICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5nZW5lcmF0b3J9IGlzIG5vdCB2YWxpZCB2ZXJzaW9uIGZvcm1hdGApO1xuICAgIH1cblxuICAgIGlmIChmb3JtQ29uZmlnLmRlcGVuZGVuY2llcz8uZW5naW5lICE9IHVuZGVmaW5lZCAmJiAhaXNWYWxpZFNlbVZlclZlcnNpb25SYW5nZShmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5lbmdpbmUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5lbmdpbmV9IGlzIG5vdCB2YWxpZCB2ZXJzaW9uIGZvcm1hdGApO1xuICAgIH1cblxuICAgIGNvbnN0IHNldHRpbmdzID0ge1xuICAgICAgICB1c2VTZXJ2ZXJTaWRlRkxhbmdOb3JtYWxpemF0aW9uOiBmYWxzZSxcbiAgICAgICAgLi4ucGlja0J5KGZvcm1Db25maWcuc2V0dGluZ3MgPz8ge30sIHggPT4geCAhPT0gdW5kZWZpbmVkKSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgdGhlbWVzOiBmb3JtQ29uZmlnLnRoZW1lcyxcbiAgICAgICAgYnVpbGQ6IGZvcm1Db25maWcuYnVpbGQgfHwgXCJtYW51YWxcIixcbiAgICAgICAgbW9kZTogZm9ybUNvbmZpZy5tb2RlID8/IFwibm9ybWFsLWJ1aWxkXCIsXG4gICAgICAgIHNldHRpbmdzOiBzZXR0aW5ncyxcbiAgICAgICAgZGVwZW5kZW5jaWVzOlxuICAgICAgICAgICAgZm9ybUNvbmZpZy5kZXBlbmRlbmNpZXMgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yOiBmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5nZW5lcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgZW5naW5lOiBmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5lbmdpbmUsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfTtcbn1cbiJdfQ==
@@ -86,11 +86,11 @@ async function runBuildForms(context, options, farmDirectory, resourcesDirectory
86
86
  return _Observe.Observe.file(_path.default.join(formDirPath, "form.json")).transform(formJsonFile => (0, _ResolveFormInfo.resolveFormInfo)(formJsonFile, formDirPath, engineDirectory, context.logger.withPrefix(`FORM:${gfv}`), options.upgradeFormJson, options.useLastStableVersion, options.usePrereleaseVersion)).transform(async fi => {
87
87
  if (fi.mode === _ResolveFormInfo.FormBuildMode.NormalBuild) {
88
88
  if (fi.generatorVersion == undefined) {
89
- throw new Error("generatorVersion is no defined");
89
+ throw new Error("generatorVersion is not defined");
90
90
  }
91
91
 
92
92
  if (fi.engineVersion == undefined) {
93
- throw new Error("engineVersion is no defined");
93
+ throw new Error("engineVersion is not defined");
94
94
  }
95
95
 
96
96
  return { ...fi,
@@ -178,8 +178,8 @@ async function runBuildForms(context, options, farmDirectory, resourcesDirectory
178
178
  mode: options.buildCacheMode,
179
179
  farmDirectory: farmDirectory
180
180
  } : undefined;
181
- await (0, _CompileForm.compileForm)(fi.formName, fi.themes, farmDirectory, resourcesDirectory, (_fi$dependenciesHash2 = fi.dependenciesHash) !== null && _fi$dependenciesHash2 !== void 0 ? _fi$dependenciesHash2 : (0, _TypingUtils.reject)("This version of generator is not supported due to dependencies extraction is not supporter"), false, undefined, buildCacheOptions);
182
- await (0, _WriteFormMeta.writeFormMeta)(resourcesDirectory, gfv, fi.engineSource, (_fi$dependenciesHash3 = fi.dependenciesHash) !== null && _fi$dependenciesHash3 !== void 0 ? _fi$dependenciesHash3 : (0, _TypingUtils.reject)("This version of generator is not supported due to dependencies extraction is not supporter"), fi.themes, buildCache, buildCacheOptions);
181
+ await (0, _CompileForm.compileForm)(fi.formName, fi.themes, farmDirectory, resourcesDirectory, (_fi$dependenciesHash2 = fi.dependenciesHash) !== null && _fi$dependenciesHash2 !== void 0 ? _fi$dependenciesHash2 : (0, _TypingUtils.reject)("This version of generator is not supported due to dependencies extraction is not supported"), false, undefined, buildCacheOptions);
182
+ await (0, _WriteFormMeta.writeFormMeta)(resourcesDirectory, gfv, fi.engineSource, (_fi$dependenciesHash3 = fi.dependenciesHash) !== null && _fi$dependenciesHash3 !== void 0 ? _fi$dependenciesHash3 : (0, _TypingUtils.reject)("This version of generator is not supported due to dependencies extraction is not supported"), fi.themes, buildCache, buildCacheOptions);
183
183
  }).do(async fi => {
184
184
  if (fi.generatorSource == undefined) {
185
185
  return;
@@ -200,7 +200,7 @@ async function runBuildForms(context, options, farmDirectory, resourcesDirectory
200
200
  } else {
201
201
  return new _SingleValueProducer.SingleValueProducer("");
202
202
  }
203
- }).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "schemas"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("SCHEMAS"), x, _path.default.join(resourcesDirectory, "schemas")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "converters"), "*").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("CONVERTERS"), x, _path.default.join(resourcesDirectory, "converters")))).attach(async fi => {
203
+ }).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "schemas"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("SCHEMAS"), x, _path.default.join(resourcesDirectory, "schemas")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "converters"), "*").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("CONVERTERS"), x, _path.default.join(resourcesDirectory, "converters")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "mergers"), "*").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("MERGERS"), x, _path.default.join(resourcesDirectory, "mergers")))).attach(async fi => {
204
204
  const modifier = content => content.replace(/<x:include href="[./]+/g, '<x:include href="');
205
205
 
206
206
  return _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "converters"), "*").do(x => _FSTask.FSTask.modifyFilesContent((0, _StaticLogger.getLogger)().withPrefix("FIX-XSLT-INCLUDE"), x, _path.default.join(resourcesDirectory, "converters"), "**/*.xslt", modifier));
@@ -262,4 +262,4 @@ async function cleanTargetDirectory(resourcesDirectory, logger) {
262
262
  await (0, _fsExtra.emptyDir)(resourcesDirectory);
263
263
  logger.log("Resource directory clean");
264
264
  }
265
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZEZvcm1zL1J1bkJ1aWxkRm9ybXMudHMiXSwibmFtZXMiOlsiZ2V0R2VuZXJhdG9yVmVyc2lvbiIsImdlbmVyYXRvclNvdXJjZSIsInR5cGUiLCJ2ZXJzaW9uIiwiRXJyb3IiLCJydW5CdWlsZEZvcm1zIiwiY29udGV4dCIsIm9wdGlvbnMiLCJmYXJtRGlyZWN0b3J5IiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZW5naW5lRGlyZWN0b3J5IiwiY2FuZHlNb2R1bGVzRGlyZWN0b3J5IiwiaGxGYXJtRGlyZWN0b3J5UGF0aCIsImJ1aWxkT3B0aW9ucyIsInBpY2tMaXN0c0NoYWluIiwiT2JzZXJ2ZSIsImZpbGVzIiwicGF0aCIsImpvaW4iLCJkbyIsIngiLCJGU1Rhc2siLCJjb3B5UmVjdXJzaXZlbHkiLCJsb2dnZXIiLCJ3aXRoUHJlZml4IiwiZm9ybUdsb2JzIiwiRm9ybUdsb2JzIiwidmFsaWRhdGVHbG9icyIsInJlc29sdmVTcGVjaWZpZXJzIiwic3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluIiwiX19kaXJuYW1lIiwicmVzb3VyY2VzTnVTcGVjQ2hhaW4iLCJjb3B5QnlNYXNrcyIsImNvcGllZEVuZ2luZXMiLCJTZXQiLCJidWlsZENhY2hlIiwiQnVpbGRDYWNoZSIsImJ1aWxkQ2FjaGVNb2RlIiwiYnVpbGRGb3Jtc0NoYWluIiwiZGlyZWN0b3J5Iiwic3BsaXRUb1BhcmFsbGVsQ2hhaW5zIiwiZ2Z2IiwiZm9ybURpclBhdGgiLCJ3YXJuaW5nIiwidmFsdWUiLCJmaWxlIiwidHJhbnNmb3JtIiwiZm9ybUpzb25GaWxlIiwidXBncmFkZUZvcm1Kc29uIiwidXNlTGFzdFN0YWJsZVZlcnNpb24iLCJ1c2VQcmVyZWxlYXNlVmVyc2lvbiIsImZpIiwibW9kZSIsIkZvcm1CdWlsZE1vZGUiLCJOb3JtYWxCdWlsZCIsImdlbmVyYXRvclZlcnNpb24iLCJ1bmRlZmluZWQiLCJlbmdpbmVWZXJzaW9uIiwiZW5naW5lU291cmNlIiwiYXR0YWNoIiwiU2luZ2xlVmFsdWVQcm9kdWNlciIsIk51bGxGb3JtR2VuZXJhdG9yIiwidXNlVmVyc2lvbkZyb21DYWNoZSIsInkiLCJnZW5lcmF0b3IiLCJoYXMiLCJhZGQiLCJmb3JtU291cmNlc1BhdGgiLCJkZXBlbmRlbmNpZXNIYXNoIiwic3VwcG9ydHNEZXBlbmRlbmNpZXNFeHRyYWN0aW9uIiwiZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaCIsImV4aXN0cyIsImxvZyIsInNraXBDb2RlUmVmb3JtYXR0aW5nIiwic2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmciLCJyZXNvdXJjZXNIYXNoIiwiZXh0cmFjdCIsImJ1aWxkQ2FjaGVPcHRpb25zIiwiZGVwc0hhc2giLCJmb3JtTmFtZSIsInRoZW1lcyIsIkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcyIsIm1vZGlmaWVyIiwiY29udGVudCIsInJlcGxhY2UiLCJtb2RpZnlGaWxlc0NvbnRlbnQiLCJjb3B5RmlsZSIsIndhdGNoIiwibm90aWZpZXIiLCJub3RpZnkiLCJ0aXRsZSIsIm1lc3NhZ2UiLCJjbGVhbiIsImNsZWFuVGFyZ2V0RGlyZWN0b3J5Iiwic3RvcE9ic2VydmUxIiwib2JzZXJ2ZSIsInN0b3BPYnNlcnZlMiIsInN0b3BPYnNlcnZlMyIsInN0b3BPYnNlcnZlNCIsIndhaXRGb3JFeGl0Iiwic3RhcnREYXRlIiwiRGF0ZSIsIm5vdyIsImN1cnJlbnRWYWx1ZSIsImNvbnNvbGUiLCJjaGFsayIsImdyZWVuQnJpZ2h0IiwidG90YWxUaW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFLQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFJQSxTQUFTQSxtQkFBVCxDQUE2QkMsZUFBN0IsRUFBdUU7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SUFBSSxDQUFDQyxHQUFMLEVBQWxCOztBQUNBLFFBQUk7QUFDQSxVQUFJL0YsT0FBTyxDQUFDcUYsS0FBWixFQUFtQjtBQUNmLGNBQU1DLG9CQUFvQixDQUFDcEYsa0JBQUQsRUFBcUJILE9BQU8sQ0FBQ2lCLE1BQTdCLENBQTFCO0FBQ0g7O0FBQ0QsWUFBTVQsY0FBYyxDQUFDeUYsWUFBckI7QUFDQSxZQUFNMUUsaUNBQWlDLENBQUMwRSxZQUF4QztBQUNBLFlBQU14RSxvQkFBb0IsQ0FBQ3dFLFlBQTNCO0FBQ0EsWUFBTWpFLGVBQWUsQ0FBQ2lFLFlBQXRCLENBUEEsQ0FRQTs7QUFDQUMsTUFBQUEsT0FBTyxDQUFDaEMsR0FBUixDQUFZaUMsZUFBTUMsV0FBTixDQUFrQixlQUFsQixDQUFaO0FBQ0gsS0FWRCxTQVVVO0FBQ04sWUFBTUMsU0FBUyxHQUFHTixJQUFJLENBQUNDLEdBQUwsS0FBYUYsU0FBL0IsQ0FETSxDQUVOOztBQUNBSSxNQUFBQSxPQUFPLENBQUNoQyxHQUFSLENBQWEsZUFBYyw0QkFBVW1DLFNBQVYsQ0FBcUIsRUFBaEQ7QUFDSDtBQUNKO0FBQ0o7O0FBRUQsZUFBZWQsb0JBQWYsQ0FBb0NwRixrQkFBcEMsRUFBZ0VjLE1BQWhFLEVBQWdHO0FBQzVGQSxFQUFBQSxNQUFNLENBQUNpRCxHQUFQLENBQVcsa0NBQWtDL0Qsa0JBQTdDO0FBQ0EsUUFBTSx1QkFBU0Esa0JBQVQsQ0FBTjtBQUNBYyxFQUFBQSxNQUFNLENBQUNpRCxHQUFQLENBQVcsMEJBQVg7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB7IGVtcHR5RGlyLCBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgbm90aWZpZXIgZnJvbSBcIm5vZGUtbm90aWZpZXJcIjtcblxuaW1wb3J0IHsgZW5naW5lRmFjdG9yeSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0VuZ2luZS9BY3F1aXJlRm9ybUVuZ2luZVwiO1xuaW1wb3J0IHsgZ2V0RW5naW5lU291cmNlS2V5IH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRW5naW5lL0VuZ2luZVNvdXJjZVwiO1xuaW1wb3J0IHsgY29tcGlsZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0NvbXBpbGVGb3JtXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0dlbmVyYXRlRm9ybVwiO1xuaW1wb3J0IHsgTnVsbEZvcm1HZW5lcmF0b3IgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL051bGxGb3JtR2VuZXJhdG9yXCI7XG5pbXBvcnQgeyB3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Xcml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzXCI7XG5pbXBvcnQgeyBGU1Rhc2sgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9GU1Rhc2tcIjtcbmltcG9ydCB7XG4gICAgZ2VuZXJhdG9yRmFjdG9yeSxcbiAgICBHZW5lcmF0b3JTb3VyY2UsXG4gICAgZ2V0R2VuZXJhdG9yU291cmNlS2V5LFxufSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9HZW5lcmF0b3IvQWNxdWlyZUZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7IHJlc29sdmVFbmdpbmVWZXJzaW9uLCByZXNvbHZlR2VuZXJhdG9yVmVyc2lvbiB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1B1Ymxpc2hlZFZlcnNpb25VdGlsc1wiO1xuaW1wb3J0IHsgRm9ybUJ1aWxkTW9kZSwgcmVzb2x2ZUZvcm1JbmZvIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyB3cml0ZUZvcm1NZXRhIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvV3JpdGVGb3JtTWV0YVwiO1xuaW1wb3J0IHsgQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gXCIuLi8uLi9Db21tb25zL0NvbnNvbGVBcHBsaWNhdGlvbi9Db25zb2xlQXBwbGljYXRpb25Db250ZXh0XCI7XG5pbXBvcnQgeyBGb3JtR2xvYnMgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Gb3JtR2xvYnNVdGlsc1wiO1xuaW1wb3J0IHsgSUxvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvSUxvZ2dlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcbmltcG9ydCB7IE9ic2VydmUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvT2JzZXJ2ZVwiO1xuaW1wb3J0IHsgU2luZ2xlVmFsdWVQcm9kdWNlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9TaW5nbGVWYWx1ZVByb2R1Y2VyXCI7XG5pbXBvcnQgeyBwcmludFRpbWUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UaW1pbmdVdGlsc1wiO1xuaW1wb3J0IHsgQnVpbGRDYWNoZSB9IGZyb20gXCIuLi8uLi9Gb3JtV2VicGFja0NvbmZpZ3VyYXRpb24vQ2FjaGVBc3NldHNQbHVnaW5cIjtcbmltcG9ydCB7IHJlamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vVHlwaW5nVXRpbHNcIjtcbmltcG9ydCB7IHdyaXRlQXR0YWNobWVudFBhdGhGaWxlcyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzXCI7XG5cbmltcG9ydCB7IEJ1aWxkRm9ybXNPcHRpb25zIH0gZnJvbSBcIi4vQnVpbGRGb3Jtc09wdGlvbnNcIjtcblxuZnVuY3Rpb24gZ2V0R2VuZXJhdG9yVmVyc2lvbihnZW5lcmF0b3JTb3VyY2U6IEdlbmVyYXRvclNvdXJjZSk6IHN0cmluZyB7XG4gICAgaWYgKGdlbmVyYXRvclNvdXJjZS50eXBlID09PSBcIlB1Ymxpc2hlZEdlbmVyYXRvclwiKSB7XG4gICAgICAgIHJldHVybiBnZW5lcmF0b3JTb3VyY2UudmVyc2lvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkUHJvZ3JhbVN0YXRlXCIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkJ1aWxkRm9ybXMoXG4gICAgY29udGV4dDogQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCxcbiAgICBvcHRpb25zOiBCdWlsZEZvcm1zT3B0aW9ucyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgY2FuZHlNb2R1bGVzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgaGxGYXJtRGlyZWN0b3J5UGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBidWlsZE9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgY29uc3QgcGlja0xpc3RzQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcInBpY2tsaXN0c1wiKSwgXCIqLmpzb25cIikuZG8oeCA9PlxuICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoXCJQSUNLTElTVFNcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicGlja2xpc3RzXCIpKVxuICAgICk7XG5cbiAgICBjb25zdCBmb3JtR2xvYnMgPSBhd2FpdCBGb3JtR2xvYnMudmFsaWRhdGVHbG9icyhcbiAgICAgICAgYXdhaXQgRm9ybUdsb2JzLnJlc29sdmVTcGVjaWZpZXJzKGJ1aWxkT3B0aW9ucy5mb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpLFxuICAgICAgICBmYXJtRGlyZWN0b3J5XG4gICAgKTtcblxuICAgIGNvbnN0IHN0YXRpY1Jlc291cmNlc0ZvclByb2R1Y3Rpb25DaGFpbiA9IE9ic2VydmUuZmlsZXMoXG4gICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi5cIiwgXCIuLlwiLCBcIlN0YXRpY0ZpbGVzRm9yUHJvZHVjdGlvblJlc291cmNlc0RpclwiKSxcbiAgICAgICAgXCIqLmpzXCIsXG4gICAgICAgIFwiKi5qcy5tYXBcIlxuICAgICkuZG8oeCA9PlxuICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJTVEFUSUNTXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInB1YmxpY1wiLCBcInNjcmlwdHNcIikpXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc291cmNlc051U3BlY0NoYWluID0gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmFybURpcmVjdG9yeSksIFwiKi5udXNwZWNcIikuZG8oeCA9PlxuICAgICAgICBGU1Rhc2suY29weUJ5TWFza3MoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk5VU1BFQ1wiKSwgeCwgW1wiKi5udXNwZWNcIl0sIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnkpKVxuICAgICk7XG5cbiAgICBjb25zdCBjb3BpZWRFbmdpbmVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBjb25zdCBidWlsZENhY2hlID0gbmV3IEJ1aWxkQ2FjaGUoZmFybURpcmVjdG9yeSwgb3B0aW9ucy5idWlsZENhY2hlTW9kZSk7XG4gICAgY29uc3QgYnVpbGRGb3Jtc0NoYWluID0gT2JzZXJ2ZS5kaXJlY3RvcnkocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiksIGZvcm1HbG9icykuc3BsaXRUb1BhcmFsbGVsQ2hhaW5zKFxuICAgICAgICB4ID0+IHgsXG4gICAgICAgIHggPT4geCxcbiAgICAgICAgYXN5bmMgZ2Z2ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2KTtcblxuICAgICAgICAgICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwiZm9ybS5qc29uXCIpKSkpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53YXJuaW5nKFxuICAgICAgICAgICAgICAgICAgICBgRm9ybSAke2dmdn0gZG9lcyBub3QgaGF2ZSBmb3JtLmpzb24gZmlsZS4gVG8gaW5jbHVkZSB0aGlzIGZvcm0gdG8gYnVpbGQgcHJvY2VzcyByZXN0YXJ0IGJ1aWxkYFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmUudmFsdWUoe30pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS5maWxlKHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtLmpzb25cIikpXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShmb3JtSnNvbkZpbGUgPT5cbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZUZvcm1JbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUpzb25GaWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURpclBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmdpbmVEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGBGT1JNOiR7Z2Z2fWApLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51cGdyYWRlRm9ybUpzb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVzZUxhc3RTdGFibGVWZXJzaW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51c2VQcmVyZWxlYXNlVmVyc2lvblxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkubW9kZSA9PT0gRm9ybUJ1aWxkTW9kZS5Ob3JtYWxCdWlsZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZ2VuZXJhdG9yVmVyc2lvbiBpcyBubyBkZWZpbmVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmVuZ2luZVZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZW5naW5lVmVyc2lvbiBpcyBubyBkZWZpbmVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IGF3YWl0IHJlc29sdmVHZW5lcmF0b3JWZXJzaW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3JWZXJzaW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGdmdilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZVNvdXJjZTogYXdhaXQgcmVzb2x2ZUVuZ2luZVZlcnNpb24oZmkuZW5naW5lVmVyc2lvbiwgY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChnZnYpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclNvdXJjZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZVNvdXJjZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclNvdXJjZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVZhbHVlUHJvZHVjZXIobmV3IE51bGxGb3JtR2VuZXJhdG9yKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yRmFjdG9yeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yU291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5keU1vZHVsZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXNlVmVyc2lvbkZyb21DYWNoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIChmaSwgeSkgPT4gKHsgLi4uZmksIGdlbmVyYXRvcjogeSB9KSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvclNvdXJjZSAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGdldEdlbmVyYXRvclNvdXJjZUtleShmaS5nZW5lcmF0b3JTb3VyY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIk51bGxGb3JtR2VuZXJhdG9yXCJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmVuZ2luZVNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW5nbGVWYWx1ZVByb2R1Y2VyKFwiTnVsbEVuZ2luZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbmdpbmVGYWN0b3J5KGZpLmVuZ2luZVNvdXJjZSwgY2FuZHlNb2R1bGVzRGlyZWN0b3J5LCBvcHRpb25zLnVzZVZlcnNpb25Gcm9tQ2FjaGUpLmRvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jIHggPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvcGllZEVuZ2luZXMuaGFzKGdldEVuZ2luZVNvdXJjZUtleShmaS5lbmdpbmVTb3VyY2UpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiRU5HSU5FXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwdWJsaWNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3BpZWRFbmdpbmVzLmFkZChnZXRFbmdpbmVTb3VyY2VLZXkoZmkuZW5naW5lU291cmNlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiBmaSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4gKGZpLmVuZ2luZVNvdXJjZSAhPSB1bmRlZmluZWQgPyBnZXRFbmdpbmVTb3VyY2VLZXkoZmkuZW5naW5lU291cmNlKSA6IFwiTnVsbEVuZ2luZVwiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtU291cmNlc1BhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIi4uLy4uL2NvbnRyb2xzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4veHNsdFRlbXBsYXRlcy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIi4uLy4uL2pzSGVscGVycy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInNjaGVtYXMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzdWdhci8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImNvbnRyb2xzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYXV0b2NhbGMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJoZWxwZXJzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidmFsaWRhdGlvbnMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJsb2NhbGl6YXRpb24vKiovKlwiXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkZXBlbmRlbmNpZXNIYXNoOiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5tb2RlICE9PSBGb3JtQnVpbGRNb2RlLk5vcm1hbEJ1aWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llc0hhc2g6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGF3YWl0IGZpLmdlbmVyYXRvci5zdXBwb3J0c0RlcGVuZGVuY2llc0V4dHJhY3Rpb24oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzSGFzaCA9IGF3YWl0IGZpLmdlbmVyYXRvci5nZXRBbGxEZXBlbmRlbmNpZXNIYXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNIYXNoOiBkZXBlbmRlbmNpZXNIYXNoLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclNvdXJjZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmRlcGVuZGVuY2llc0hhc2ggIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXdhaXQgYnVpbGRDYWNoZS5leGlzdHMoZmkuZ2VuZXJhdG9yU291cmNlLCBnZnYsIGZpLmRlcGVuZGVuY2llc0hhc2gpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChgR0VORVJBVEU6JHtnZnZ9YCkubG9nKFwiU2tpcHBlZCBkdWUgYnVpbGQgY2FjaGUgZXhpdHNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcENvZGVSZWZvcm1hdHRpbmc6IG9wdGlvbnMuc2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzSGFzaDogZmkuZGVwZW5kZW5jaWVzSGFzaCA/PyBcIlVuZGVmaW5lZFJlc291cmNlc0hhc2hcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT4gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwiZm9ybVwiKSwgXCIqKi8qXCIpKVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5nZW5lcmF0b3JTb3VyY2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmRlcGVuZGVuY2llc0hhc2ggIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXdhaXQgYnVpbGRDYWNoZS5leGlzdHMoZmkuZ2VuZXJhdG9yU291cmNlLCBnZnYsIGZpLmRlcGVuZGVuY2llc0hhc2gpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChgQ09NUElMRToke2dmdn1gKS5sb2coXCJTa2lwcGVkIGR1ZSBidWlsZCBjYWNoZSBleGlzdHNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgYnVpbGRDYWNoZS5leHRyYWN0KGZpLmdlbmVyYXRvclNvdXJjZSwgZ2Z2LCBmaS5kZXBlbmRlbmNpZXNIYXNoLCByZXNvdXJjZXNEaXJlY3RvcnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBidWlsZENhY2hlT3B0aW9ucyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHNIYXNoOiBmaS5kZXBlbmRlbmNpZXNIYXNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclZlcnNpb246IGdldEdlbmVyYXRvclZlcnNpb24oZmkuZ2VuZXJhdG9yU291cmNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlOiBvcHRpb25zLmJ1aWxkQ2FjaGVNb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3Rvcnk6IGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGNvbXBpbGVGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS50aGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGlzIHZlcnNpb24gb2YgZ2VuZXJhdG9yIGlzIG5vdCBzdXBwb3J0ZWQgZHVlIHRvIGRlcGVuZGVuY2llcyBleHRyYWN0aW9uIGlzIG5vdCBzdXBwb3J0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRm9ybU1ldGEoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBnZnYsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5lbmdpbmVTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5kZXBlbmRlbmNpZXNIYXNoID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRoaXMgdmVyc2lvbiBvZiBnZW5lcmF0b3IgaXMgbm90IHN1cHBvcnRlZCBkdWUgdG8gZGVwZW5kZW5jaWVzIGV4dHJhY3Rpb24gaXMgbm90IHN1cHBvcnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLnRoZW1lcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclNvdXJjZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBidWlsZENhY2hlT3B0aW9ucyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHNIYXNoOiBmaS5kZXBlbmRlbmNpZXNIYXNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclZlcnNpb246IGdldEdlbmVyYXRvclZlcnNpb24oZmkuZ2VuZXJhdG9yU291cmNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlOiBvcHRpb25zLmJ1aWxkQ2FjaGVNb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3Rvcnk6IGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZU9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVBdHRhY2htZW50UGF0aEZpbGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLm1vZGUgPT09IEZvcm1CdWlsZE1vZGUuQ29weUxlZ2FjeVByZWJ1aWx0UmVzb3VyY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcImxlZ2FjeS1wcmVidWlsdFwiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTEVHQUNZLVBSRUJVSUxUXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVZhbHVlUHJvZHVjZXIoXCJcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInNjaGVtYXNcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiU0NIRU1BU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwic2NoZW1hc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcImNvbnZlcnRlcnNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJDT05WRVJURVJTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJjb252ZXJ0ZXJzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGlmaWVyID0gKGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC5yZXBsYWNlKC88eDppbmNsdWRlIGhyZWY9XCJbLi9dKy9nLCAnPHg6aW5jbHVkZSBocmVmPVwiJyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwiY29udmVydGVyc1wiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5tb2RpZnlGaWxlc0NvbnRlbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkZJWC1YU0xULUlOQ0xVREVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcImNvbnZlcnRlcnNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIqKi8qLnhzbHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwiLi5cIiwgXCIuLlwiLCBcInhzbHRUZW1wbGF0ZXNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJYU0xULVRFTVBMQVRFU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiLCBcInhzbHRUZW1wbGF0ZXNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZShwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInByZXNlbnRhdGlvbnMuanNvblwiKSkuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlGaWxlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJQUkVTRU5UQVRJT05TXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwcmVzZW50YXRpb25zXCIsIGAke2dmdn0ucHJlc2VudGF0aW9ucy5qc29uYClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJub3JtYWxpemVcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTk9STUFMSVpFXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJub3JtYWxpemVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJwYXRjaFwiKSwgXCIqLnhzbHRcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiUEFUQ0hcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInBhdGNoXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibWFwXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk1BUFwiKSwgeCwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJtYXBcIikpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwidW5tYXBcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiVU5NQVBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInVubWFwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJ1aWxkT3B0aW9ucy53YXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpZXIubm90aWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYCR7ZmkuZm9ybU5hbWV9OiDRgdCx0L7RgNC60LAg0LfQsNCy0LXRgNGI0LXQvdCwYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBgRW5naW5lOiAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5lbmdpbmVTb3VyY2UgPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiW05vRW5naW5lXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGZpLmVuZ2luZVNvdXJjZS50eXBlID09PSBcIkxvY2FsRW5naW5lU291cmNlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwibG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmaS5lbmdpbmVTb3VyY2UudmVyc2lvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBpZiAoYnVpbGRPcHRpb25zLndhdGNoKSB7XG4gICAgICAgIGlmIChvcHRpb25zLmNsZWFuKSB7XG4gICAgICAgICAgICBhd2FpdCBjbGVhblRhcmdldERpcmVjdG9yeShyZXNvdXJjZXNEaXJlY3RvcnksIGNvbnRleHQubG9nZ2VyKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTEgPSBhd2FpdCBwaWNrTGlzdHNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMiA9IGF3YWl0IGJ1aWxkRm9ybXNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMyA9IGF3YWl0IHN0YXRpY1Jlc291cmNlc0ZvclByb2R1Y3Rpb25DaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlNCA9IGF3YWl0IHJlc291cmNlc051U3BlY0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgYXdhaXQgY29udGV4dC53YWl0Rm9yRXhpdCgpO1xuICAgICAgICBpZiAoc3RvcE9ic2VydmUzICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0b3BPYnNlcnZlNCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlNCgpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMigpO1xuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTEoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzdGFydERhdGUgPSBEYXRlLm5vdygpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuY2xlYW4pIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBjbGVhblRhcmdldERpcmVjdG9yeShyZXNvdXJjZXNEaXJlY3RvcnksIGNvbnRleHQubG9nZ2VyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHBpY2tMaXN0c0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHN0YXRpY1Jlc291cmNlc0ZvclByb2R1Y3Rpb25DaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBhd2FpdCByZXNvdXJjZXNOdVNwZWNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBhd2FpdCBidWlsZEZvcm1zQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuQnJpZ2h0KFwiQnVpbGQgc3VjY2Vzc1wiKSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBjb25zdCB0b3RhbFRpbWUgPSBEYXRlLm5vdygpIC0gc3RhcnREYXRlO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBUb3RhbCB0aW1lOiAke3ByaW50VGltZSh0b3RhbFRpbWUpfWApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBjbGVhblRhcmdldERpcmVjdG9yeShyZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZywgbG9nZ2VyOiBJTG9nZ2VyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbG9nZ2VyLmxvZyhcIkNsZWFuaW5nIHJlc291cmNlIGRpcmVjdG9yeS4gXCIgKyByZXNvdXJjZXNEaXJlY3RvcnkpO1xuICAgIGF3YWl0IGVtcHR5RGlyKHJlc291cmNlc0RpcmVjdG9yeSk7XG4gICAgbG9nZ2VyLmxvZyhcIlJlc291cmNlIGRpcmVjdG9yeSBjbGVhblwiKTtcbn1cbiJdfQ==
265
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZEZvcm1zL1J1bkJ1aWxkRm9ybXMudHMiXSwibmFtZXMiOlsiZ2V0R2VuZXJhdG9yVmVyc2lvbiIsImdlbmVyYXRvclNvdXJjZSIsInR5cGUiLCJ2ZXJzaW9uIiwiRXJyb3IiLCJydW5CdWlsZEZvcm1zIiwiY29udGV4dCIsIm9wdGlvbnMiLCJmYXJtRGlyZWN0b3J5IiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZW5naW5lRGlyZWN0b3J5IiwiY2FuZHlNb2R1bGVzRGlyZWN0b3J5IiwiaGxGYXJtRGlyZWN0b3J5UGF0aCIsImJ1aWxkT3B0aW9ucyIsInBpY2tMaXN0c0NoYWluIiwiT2JzZXJ2ZSIsImZpbGVzIiwicGF0aCIsImpvaW4iLCJkbyIsIngiLCJGU1Rhc2siLCJjb3B5UmVjdXJzaXZlbHkiLCJsb2dnZXIiLCJ3aXRoUHJlZml4IiwiZm9ybUdsb2JzIiwiRm9ybUdsb2JzIiwidmFsaWRhdGVHbG9icyIsInJlc29sdmVTcGVjaWZpZXJzIiwic3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluIiwiX19kaXJuYW1lIiwicmVzb3VyY2VzTnVTcGVjQ2hhaW4iLCJjb3B5QnlNYXNrcyIsImNvcGllZEVuZ2luZXMiLCJTZXQiLCJidWlsZENhY2hlIiwiQnVpbGRDYWNoZSIsImJ1aWxkQ2FjaGVNb2RlIiwiYnVpbGRGb3Jtc0NoYWluIiwiZGlyZWN0b3J5Iiwic3BsaXRUb1BhcmFsbGVsQ2hhaW5zIiwiZ2Z2IiwiZm9ybURpclBhdGgiLCJ3YXJuaW5nIiwidmFsdWUiLCJmaWxlIiwidHJhbnNmb3JtIiwiZm9ybUpzb25GaWxlIiwidXBncmFkZUZvcm1Kc29uIiwidXNlTGFzdFN0YWJsZVZlcnNpb24iLCJ1c2VQcmVyZWxlYXNlVmVyc2lvbiIsImZpIiwibW9kZSIsIkZvcm1CdWlsZE1vZGUiLCJOb3JtYWxCdWlsZCIsImdlbmVyYXRvclZlcnNpb24iLCJ1bmRlZmluZWQiLCJlbmdpbmVWZXJzaW9uIiwiZW5naW5lU291cmNlIiwiYXR0YWNoIiwiU2luZ2xlVmFsdWVQcm9kdWNlciIsIk51bGxGb3JtR2VuZXJhdG9yIiwidXNlVmVyc2lvbkZyb21DYWNoZSIsInkiLCJnZW5lcmF0b3IiLCJoYXMiLCJhZGQiLCJmb3JtU291cmNlc1BhdGgiLCJkZXBlbmRlbmNpZXNIYXNoIiwic3VwcG9ydHNEZXBlbmRlbmNpZXNFeHRyYWN0aW9uIiwiZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaCIsImV4aXN0cyIsImxvZyIsInNraXBDb2RlUmVmb3JtYXR0aW5nIiwic2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmciLCJyZXNvdXJjZXNIYXNoIiwiZXh0cmFjdCIsImJ1aWxkQ2FjaGVPcHRpb25zIiwiZGVwc0hhc2giLCJmb3JtTmFtZSIsInRoZW1lcyIsIkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcyIsIm1vZGlmaWVyIiwiY29udGVudCIsInJlcGxhY2UiLCJtb2RpZnlGaWxlc0NvbnRlbnQiLCJjb3B5RmlsZSIsIndhdGNoIiwibm90aWZpZXIiLCJub3RpZnkiLCJ0aXRsZSIsIm1lc3NhZ2UiLCJjbGVhbiIsImNsZWFuVGFyZ2V0RGlyZWN0b3J5Iiwic3RvcE9ic2VydmUxIiwib2JzZXJ2ZSIsInN0b3BPYnNlcnZlMiIsInN0b3BPYnNlcnZlMyIsInN0b3BPYnNlcnZlNCIsIndhaXRGb3JFeGl0Iiwic3RhcnREYXRlIiwiRGF0ZSIsIm5vdyIsImN1cnJlbnRWYWx1ZSIsImNvbnNvbGUiLCJjaGFsayIsImdyZWVuQnJpZ2h0IiwidG90YWxUaW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFLQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFJQSxTQUFTQSxtQkFBVCxDQUE2QkMsZUFBN0IsRUFBdUU7QUFDbkUsTUFBSUEsZUFBZSxDQUFDQyxJQUFoQixLQUF5QixvQkFBN0IsRUFBbUQ7QUFDL0MsV0FBT0QsZUFBZSxDQUFDRSxPQUF2QjtBQUNILEdBRkQsTUFFTztBQUNILFVBQU0sSUFBSUMsS0FBSixDQUFVLHFCQUFWLENBQU47QUFDSDtBQUNKOztBQUVNLGVBQWVDLGFBQWYsQ0FDSEMsT0FERyxFQUVIQyxPQUZHLEVBR0hDLGFBSEcsRUFJSEMsa0JBSkcsRUFLSEMsZUFMRyxFQU1IQyxxQkFORyxFQU9IQyxtQkFQRyxFQVFVO0FBQ2IsUUFBTUMsWUFBWSxHQUFHTixPQUFyQjs7QUFFQSxRQUFNTyxjQUFjLEdBQUdDLGlCQUFRQyxLQUFSLENBQWNDLGNBQUtDLElBQUwsQ0FBVVYsYUFBVixFQUF5QixXQUF6QixDQUFkLEVBQXFELFFBQXJELEVBQStEVyxFQUEvRCxDQUFrRUMsQ0FBQyxJQUN0RkMsZUFBT0MsZUFBUCxDQUF1QmhCLE9BQU8sQ0FBQ2lCLE1BQVIsQ0FBZUMsVUFBZixDQUEwQixXQUExQixDQUF2QixFQUErREosQ0FBL0QsRUFBa0VILGNBQUtDLElBQUwsQ0FBVVQsa0JBQVYsRUFBOEIsV0FBOUIsQ0FBbEUsQ0FEbUIsQ0FBdkI7O0FBSUEsUUFBTWdCLFNBQVMsR0FBRyxNQUFNQywwQkFBVUMsYUFBVixDQUNwQixNQUFNRCwwQkFBVUUsaUJBQVYsQ0FBNEJmLFlBQVksQ0FBQ1ksU0FBekMsRUFBb0RqQixhQUFwRCxDQURjLEVBRXBCQSxhQUZvQixDQUF4Qjs7QUFLQSxRQUFNcUIsaUNBQWlDLEdBQUdkLGlCQUFRQyxLQUFSLENBQ3RDQyxjQUFLQyxJQUFMLENBQVVZLFNBQVYsRUFBcUIsSUFBckIsRUFBMkIsSUFBM0IsRUFBaUMsc0NBQWpDLENBRHNDLEVBRXRDLE1BRnNDLEVBR3RDLFVBSHNDLEVBSXhDWCxFQUp3QyxDQUlyQ0MsQ0FBQyxJQUNGQyxlQUFPQyxlQUFQLENBQXVCLCtCQUFZRSxVQUFaLENBQXVCLFNBQXZCLENBQXZCLEVBQTBESixDQUExRCxFQUE2REgsY0FBS0MsSUFBTCxDQUFVVCxrQkFBVixFQUE4QixRQUE5QixFQUF3QyxTQUF4QyxDQUE3RCxDQUxzQyxDQUExQzs7QUFRQSxRQUFNc0Isb0JBQW9CLEdBQUdoQixpQkFBUUMsS0FBUixDQUFjQyxjQUFLQyxJQUFMLENBQVVWLGFBQVYsQ0FBZCxFQUF3QyxVQUF4QyxFQUFvRFcsRUFBcEQsQ0FBdURDLENBQUMsSUFDakZDLGVBQU9XLFdBQVAsQ0FBbUIsK0JBQVlSLFVBQVosQ0FBdUIsUUFBdkIsQ0FBbkIsRUFBcURKLENBQXJELEVBQXdELENBQUMsVUFBRCxDQUF4RCxFQUFzRUgsY0FBS0MsSUFBTCxDQUFVVCxrQkFBVixDQUF0RSxDQUR5QixDQUE3Qjs7QUFJQSxRQUFNd0IsYUFBYSxHQUFHLElBQUlDLEdBQUosRUFBdEI7QUFFQSxRQUFNQyxVQUFVLEdBQUcsSUFBSUMsNkJBQUosQ0FBZTVCLGFBQWYsRUFBOEJELE9BQU8sQ0FBQzhCLGNBQXRDLENBQW5COztBQUNBLFFBQU1DLGVBQWUsR0FBR3ZCLGlCQUFRd0IsU0FBUixDQUFrQnRCLGNBQUtDLElBQUwsQ0FBVVYsYUFBVixFQUF5QixPQUF6QixDQUFsQixFQUFxRGlCLFNBQXJELEVBQWdFZSxxQkFBaEUsQ0FDcEJwQixDQUFDLElBQUlBLENBRGUsRUFFcEJBLENBQUMsSUFBSUEsQ0FGZSxFQUdwQixNQUFNcUIsR0FBTixJQUFhO0FBQ1QsVUFBTUMsV0FBVyxHQUFHekIsY0FBS0MsSUFBTCxDQUFVVixhQUFWLEVBQXlCLE9BQXpCLEVBQWtDaUMsR0FBbEMsQ0FBcEI7O0FBRUEsUUFBSSxFQUFFLE1BQU0seUJBQVd4QixjQUFLQyxJQUFMLENBQVV3QixXQUFWLEVBQXVCLFdBQXZCLENBQVgsQ0FBUixDQUFKLEVBQThEO0FBQzFEcEMsTUFBQUEsT0FBTyxDQUFDaUIsTUFBUixDQUFlb0IsT0FBZixDQUNLLFFBQU9GLEdBQUksb0ZBRGhCO0FBR0EsYUFBTzFCLGlCQUFRNkIsS0FBUixDQUFjLEVBQWQsQ0FBUDtBQUNIOztBQUVELFdBQU83QixpQkFBUThCLElBQVIsQ0FBYTVCLGNBQUtDLElBQUwsQ0FBVXdCLFdBQVYsRUFBdUIsV0FBdkIsQ0FBYixFQUNGSSxTQURFLENBQ1FDLFlBQVksSUFDbkIsc0NBQ0lBLFlBREosRUFFSUwsV0FGSixFQUdJaEMsZUFISixFQUlJSixPQUFPLENBQUNpQixNQUFSLENBQWVDLFVBQWYsQ0FBMkIsUUFBT2lCLEdBQUksRUFBdEMsQ0FKSixFQUtJbEMsT0FBTyxDQUFDeUMsZUFMWixFQU1JekMsT0FBTyxDQUFDMEMsb0JBTlosRUFPSTFDLE9BQU8sQ0FBQzJDLG9CQVBaLENBRkQsRUFZRkosU0FaRSxDQVlRLE1BQU1LLEVBQU4sSUFBWTtBQUNuQixVQUFJQSxFQUFFLENBQUNDLElBQUgsS0FBWUMsK0JBQWNDLFdBQTlCLEVBQTJDO0FBQ3ZDLFlBQUlILEVBQUUsQ0FBQ0ksZ0JBQUgsSUFBdUJDLFNBQTNCLEVBQXNDO0FBQ2xDLGdCQUFNLElBQUlwRCxLQUFKLENBQVUsaUNBQVYsQ0FBTjtBQUNIOztBQUNELFlBQUkrQyxFQUFFLENBQUNNLGFBQUgsSUFBb0JELFNBQXhCLEVBQW1DO0FBQy9CLGdCQUFNLElBQUlwRCxLQUFKLENBQVUsOEJBQVYsQ0FBTjtBQUNIOztBQUNELGVBQU8sRUFDSCxHQUFHK0MsRUFEQTtBQUVIbEQsVUFBQUEsZUFBZSxFQUFFLE1BQU0sb0RBQ25Ca0QsRUFBRSxDQUFDSSxnQkFEZ0IsRUFFbkJqRCxPQUFPLENBQUNpQixNQUFSLENBQWVDLFVBQWYsQ0FBMEJpQixHQUExQixDQUZtQixDQUZwQjtBQU1IaUIsVUFBQUEsWUFBWSxFQUFFLE1BQU0saURBQXFCUCxFQUFFLENBQUNNLGFBQXhCLEVBQXVDbkQsT0FBTyxDQUFDaUIsTUFBUixDQUFlQyxVQUFmLENBQTBCaUIsR0FBMUIsQ0FBdkM7QUFOakIsU0FBUDtBQVFILE9BZkQsTUFlTztBQUNILGVBQU8sRUFDSCxHQUFHVSxFQURBO0FBRUhsRCxVQUFBQSxlQUFlLEVBQUV1RCxTQUZkO0FBR0hFLFVBQUFBLFlBQVksRUFBRUY7QUFIWCxTQUFQO0FBS0g7QUFDSixLQW5DRSxFQW9DRkcsTUFwQ0UsQ0FxQ0MsTUFBTVIsRUFBTixJQUFZO0FBQ1IsVUFBSUEsRUFBRSxDQUFDbEQsZUFBSCxJQUFzQnVELFNBQTFCLEVBQXFDO0FBQ2pDLGVBQU8sSUFBSUksd0NBQUosQ0FBd0IsSUFBSUMsb0NBQUosRUFBeEIsQ0FBUDtBQUNILE9BRkQsTUFFTztBQUNILGVBQU8sNENBQ0hWLEVBQUUsQ0FBQ2xELGVBREEsRUFFSFUscUJBRkcsRUFHSEosT0FBTyxDQUFDdUQsbUJBSEwsQ0FBUDtBQUtIO0FBQ0osS0EvQ0YsRUFnREMsT0FBT1gsRUFBUCxFQUFXWSxDQUFYLE1BQWtCLEVBQUUsR0FBR1osRUFBTDtBQUFTYSxNQUFBQSxTQUFTLEVBQUVEO0FBQXBCLEtBQWxCLENBaERELEVBaURDLE1BQU1aLEVBQU4sSUFDSUEsRUFBRSxDQUFDbEQsZUFBSCxJQUFzQnVELFNBQXRCLEdBQ00saURBQXNCTCxFQUFFLENBQUNsRCxlQUF6QixDQUROLEdBRU0sbUJBcERYLEVBc0RGMEQsTUF0REUsQ0F1REMsTUFBTVIsRUFBTixJQUFZO0FBQ1IsVUFBSUEsRUFBRSxDQUFDTyxZQUFILEtBQW9CRixTQUF4QixFQUFtQztBQUMvQixlQUFPLElBQUlJLHdDQUFKLENBQXdCLFlBQXhCLENBQVA7QUFDSDs7QUFDRCxhQUFPLHNDQUFjVCxFQUFFLENBQUNPLFlBQWpCLEVBQStCL0MscUJBQS9CLEVBQXNESixPQUFPLENBQUN1RCxtQkFBOUQsRUFBbUYzQyxFQUFuRixDQUNILE1BQU1DLENBQU4sSUFBVztBQUNQLFlBQUksQ0FBQ2EsYUFBYSxDQUFDZ0MsR0FBZCxDQUFrQixzQ0FBbUJkLEVBQUUsQ0FBQ08sWUFBdEIsQ0FBbEIsQ0FBTCxFQUE2RDtBQUN6RCxnQkFBTXJDLGVBQU9DLGVBQVAsQ0FDRiwrQkFBWUUsVUFBWixDQUF1QixRQUF2QixDQURFLEVBRUZKLENBRkUsRUFHRkgsY0FBS0MsSUFBTCxDQUFVVCxrQkFBVixFQUE4QixRQUE5QixDQUhFLENBQU47QUFLQXdCLFVBQUFBLGFBQWEsQ0FBQ2lDLEdBQWQsQ0FBa0Isc0NBQW1CZixFQUFFLENBQUNPLFlBQXRCLENBQWxCO0FBQ0g7QUFDSixPQVZFLENBQVA7QUFZSCxLQXZFRixFQXdFQyxNQUFNUCxFQUFOLElBQVlBLEVBeEViLEVBeUVDLE1BQU1BLEVBQU4sSUFBYUEsRUFBRSxDQUFDTyxZQUFILElBQW1CRixTQUFuQixHQUErQixzQ0FBbUJMLEVBQUUsQ0FBQ08sWUFBdEIsQ0FBL0IsR0FBcUUsWUF6RW5GLEVBMkVGQyxNQTNFRSxDQTJFSyxNQUFNUixFQUFOLElBQ0pwQyxpQkFBUUMsS0FBUixDQUNJbUMsRUFBRSxDQUFDZ0IsZUFEUCxFQUVJLHFCQUZKLEVBR0ksMEJBSEosRUFJSSxzQkFKSixFQUtJLGNBTEosRUFNSSxZQU5KLEVBT0ksZUFQSixFQVFJLGVBUkosRUFTSSxjQVRKLEVBVUksa0JBVkosRUFXSSxtQkFYSixDQTVFRCxFQTBGRnJCLFNBMUZFLENBMEZRLE1BQU1LLEVBQU4sSUFBWTtBQUNuQixVQUFJaUIsZ0JBQUo7O0FBQ0EsVUFBSWpCLEVBQUUsQ0FBQ0MsSUFBSCxLQUFZQywrQkFBY0MsV0FBOUIsRUFBMkM7QUFDdkMsZUFBTyxFQUNILEdBQUdILEVBREE7QUFFSGlCLFVBQUFBLGdCQUFnQixFQUFFWjtBQUZmLFNBQVA7QUFJSDs7QUFDRCxVQUFJLE1BQU1MLEVBQUUsQ0FBQ2EsU0FBSCxDQUFhSyw4QkFBYixFQUFWLEVBQXlEO0FBQ3JERCxRQUFBQSxnQkFBZ0IsR0FBRyxNQUFNakIsRUFBRSxDQUFDYSxTQUFILENBQWFNLHNCQUFiLENBQ3JCNUIsV0FEcUIsRUFFckJsQyxhQUZxQixFQUdyQkksbUJBSHFCLENBQXpCO0FBS0g7O0FBQ0QsYUFBTyxFQUNILEdBQUd1QyxFQURBO0FBRUhpQixRQUFBQSxnQkFBZ0IsRUFBRUE7QUFGZixPQUFQO0FBSUgsS0E3R0UsRUE4R0ZqRCxFQTlHRSxDQThHQyxNQUFNZ0MsRUFBTixJQUFZO0FBQUE7O0FBQ1osVUFBSUEsRUFBRSxDQUFDbEQsZUFBSCxJQUFzQnVELFNBQTFCLEVBQXFDO0FBQ2pDLGVBQU9BLFNBQVA7QUFDSDs7QUFDRCxVQUFJTCxFQUFFLENBQUNpQixnQkFBSCxJQUF1QlosU0FBM0IsRUFBc0M7QUFDbEMsWUFBSSxNQUFNckIsVUFBVSxDQUFDb0MsTUFBWCxDQUFrQnBCLEVBQUUsQ0FBQ2xELGVBQXJCLEVBQXNDd0MsR0FBdEMsRUFBMkNVLEVBQUUsQ0FBQ2lCLGdCQUE5QyxDQUFWLEVBQTJFO0FBQ3ZFOUQsVUFBQUEsT0FBTyxDQUFDaUIsTUFBUixDQUFlQyxVQUFmLENBQTJCLFlBQVdpQixHQUFJLEVBQTFDLEVBQTZDK0IsR0FBN0MsQ0FBaUQsK0JBQWpEO0FBQ0EsaUJBQU9oQixTQUFQO0FBQ0g7QUFDSjs7QUFDRCxhQUFPLGdDQUNITCxFQUFFLENBQUNnQixlQURBLEVBRUgzRCxhQUZHLEVBR0hJLG1CQUhHLEVBSUh1QyxFQUFFLENBQUNhLFNBSkEsRUFLSFIsU0FMRyxFQU1IO0FBQ0lpQixRQUFBQSxvQkFBb0IsRUFBRWxFLE9BQU8sQ0FBQ21FLDZCQURsQztBQUVJQyxRQUFBQSxhQUFhLDBCQUFFeEIsRUFBRSxDQUFDaUIsZ0JBQUwsdUVBQXlCO0FBRjFDLE9BTkcsQ0FBUDtBQVdILEtBbklFLEVBb0lGVCxNQXBJRSxDQW9JSyxNQUFNUixFQUFOLElBQVlwQyxpQkFBUUMsS0FBUixDQUFjQyxjQUFLQyxJQUFMLENBQVV3QixXQUFWLEVBQXVCLE1BQXZCLENBQWQsRUFBOEMsTUFBOUMsQ0FwSWpCLEVBcUlGdkIsRUFySUUsQ0FxSUMsTUFBTWdDLEVBQU4sSUFBWTtBQUFBOztBQUNaLFVBQUlBLEVBQUUsQ0FBQ2xELGVBQUgsSUFBc0J1RCxTQUExQixFQUFxQztBQUNqQztBQUNIOztBQUNELFVBQUlMLEVBQUUsQ0FBQ2lCLGdCQUFILElBQXVCWixTQUEzQixFQUFzQztBQUNsQyxZQUFJLE1BQU1yQixVQUFVLENBQUNvQyxNQUFYLENBQWtCcEIsRUFBRSxDQUFDbEQsZUFBckIsRUFBc0N3QyxHQUF0QyxFQUEyQ1UsRUFBRSxDQUFDaUIsZ0JBQTlDLENBQVYsRUFBMkU7QUFDdkU5RCxVQUFBQSxPQUFPLENBQUNpQixNQUFSLENBQWVDLFVBQWYsQ0FBMkIsV0FBVWlCLEdBQUksRUFBekMsRUFBNEMrQixHQUE1QyxDQUFnRCxnQ0FBaEQ7QUFDQSxnQkFBTXJDLFVBQVUsQ0FBQ3lDLE9BQVgsQ0FBbUJ6QixFQUFFLENBQUNsRCxlQUF0QixFQUF1Q3dDLEdBQXZDLEVBQTRDVSxFQUFFLENBQUNpQixnQkFBL0MsRUFBaUUzRCxrQkFBakUsQ0FBTjtBQUNBO0FBQ0g7QUFDSjs7QUFDRCxZQUFNb0UsaUJBQWlCLEdBQ25CMUIsRUFBRSxDQUFDaUIsZ0JBQUgsSUFBdUJaLFNBQXZCLEdBQ007QUFDSXNCLFFBQUFBLFFBQVEsRUFBRTNCLEVBQUUsQ0FBQ2lCLGdCQURqQjtBQUVJYixRQUFBQSxnQkFBZ0IsRUFBRXZELG1CQUFtQixDQUFDbUQsRUFBRSxDQUFDbEQsZUFBSixDQUZ6QztBQUdJd0MsUUFBQUEsR0FBRyxFQUFFQSxHQUhUO0FBSUlXLFFBQUFBLElBQUksRUFBRTdDLE9BQU8sQ0FBQzhCLGNBSmxCO0FBS0k3QixRQUFBQSxhQUFhLEVBQUVBO0FBTG5CLE9BRE4sR0FRTWdELFNBVFY7QUFVQSxZQUFNLDhCQUNGTCxFQUFFLENBQUM0QixRQURELEVBRUY1QixFQUFFLENBQUM2QixNQUZELEVBR0Z4RSxhQUhFLEVBSUZDLGtCQUpFLDJCQUtGMEMsRUFBRSxDQUFDaUIsZ0JBTEQseUVBTUUseUJBQ0ksNEZBREosQ0FORixFQVNGLEtBVEUsRUFVRlosU0FWRSxFQVdGcUIsaUJBWEUsQ0FBTjtBQWFBLFlBQU0sa0NBQ0ZwRSxrQkFERSxFQUVGZ0MsR0FGRSxFQUdGVSxFQUFFLENBQUNPLFlBSEQsMkJBSUZQLEVBQUUsQ0FBQ2lCLGdCQUpELHlFQUtFLHlCQUNJLDRGQURKLENBTEYsRUFRRmpCLEVBQUUsQ0FBQzZCLE1BUkQsRUFTRjdDLFVBVEUsRUFVRjBDLGlCQVZFLENBQU47QUFZSCxLQW5MRSxFQW9MRjFELEVBcExFLENBb0xDLE1BQU1nQyxFQUFOLElBQVk7QUFDWixVQUFJQSxFQUFFLENBQUNsRCxlQUFILElBQXNCdUQsU0FBMUIsRUFBcUM7QUFDakM7QUFDSDs7QUFDRCxZQUFNcUIsaUJBQWlCLEdBQ25CMUIsRUFBRSxDQUFDaUIsZ0JBQUgsSUFBdUJaLFNBQXZCLEdBQ007QUFDSXNCLFFBQUFBLFFBQVEsRUFBRTNCLEVBQUUsQ0FBQ2lCLGdCQURqQjtBQUVJYixRQUFBQSxnQkFBZ0IsRUFBRXZELG1CQUFtQixDQUFDbUQsRUFBRSxDQUFDbEQsZUFBSixDQUZ6QztBQUdJd0MsUUFBQUEsR0FBRyxFQUFFQSxHQUhUO0FBSUlXLFFBQUFBLElBQUksRUFBRTdDLE9BQU8sQ0FBQzhCLGNBSmxCO0FBS0k3QixRQUFBQSxhQUFhLEVBQUVBO0FBTG5CLE9BRE4sR0FRTWdELFNBVFY7QUFVQSxZQUFNLGdFQUNGTCxFQUFFLENBQUM0QixRQURELEVBRUZ2RSxhQUZFLEVBR0ZDLGtCQUhFLEVBSUYrQyxTQUpFLEVBS0ZyQixVQUxFLEVBTUYwQyxpQkFORSxDQUFOO0FBUUEsWUFBTSx3REFDRjFCLEVBQUUsQ0FBQzRCLFFBREQsRUFFRnZFLGFBRkUsRUFHRkMsa0JBSEUsRUFJRitDLFNBSkUsRUFLRnJCLFVBTEUsRUFNRjBDLGlCQU5FLENBQU47QUFRSCxLQWxORSxFQW1ORmxCLE1Bbk5FLENBbU5LLE1BQU1SLEVBQU4sSUFBWTtBQUNoQixVQUFJQSxFQUFFLENBQUNDLElBQUgsS0FBWUMsK0JBQWM0QiwyQkFBOUIsRUFBMkQ7QUFDdkQsZUFBT2xFLGlCQUFRQyxLQUFSLENBQWNDLGNBQUtDLElBQUwsQ0FBVWlDLEVBQUUsQ0FBQ2dCLGVBQWIsRUFBOEIsaUJBQTlCLENBQWQsRUFBZ0UsR0FBaEUsRUFBcUVoRCxFQUFyRSxDQUF3RUMsQ0FBQyxJQUM1RUMsZUFBT0MsZUFBUCxDQUNJLCtCQUFZRSxVQUFaLENBQXVCLGlCQUF2QixDQURKLEVBRUlKLENBRkosRUFHSUgsY0FBS0MsSUFBTCxDQUFVVCxrQkFBVixDQUhKLENBREcsQ0FBUDtBQU9ILE9BUkQsTUFRTztBQUNILGVBQU8sSUFBSW1ELHdDQUFKLENBQXdCLEVBQXhCLENBQVA7QUFDSDtBQUNKLEtBL05FLEVBZ09GRCxNQWhPRSxDQWdPSyxNQUFNUixFQUFOLElBQ0pwQyxpQkFBUUMsS0FBUixDQUFjQyxjQUFLQyxJQUFMLENBQVVpQyxFQUFFLENBQUNnQixlQUFiLEVBQThCLFNBQTlCLENBQWQsRUFBd0QsT0FBeEQsRUFBaUVoRCxFQUFqRSxDQUFvRUMsQ0FBQyxJQUNqRUMsZUFBT0MsZUFBUCxDQUNJLCtCQUFZRSxVQUFaLENBQXVCLFNBQXZCLENBREosRUFFSUosQ0FGSixFQUdJSCxjQUFLQyxJQUFMLENBQVVULGtCQUFWLEVBQThCLFNBQTlCLENBSEosQ0FESixDQWpPRCxFQXlPRmtELE1Bek9FLENBeU9LLE1BQU1SLEVBQU4sSUFDSnBDLGlCQUFRQyxLQUFSLENBQWNDLGNBQUtDLElBQUwsQ0FBVWlDLEVBQUUsQ0FBQ2dCLGVBQWIsRUFBOEIsWUFBOUIsQ0FBZCxFQUEyRCxHQUEzRCxFQUFnRWhELEVBQWhFLENBQW1FQyxDQUFDLElBQ2hFQyxlQUFPQyxlQUFQLENBQ0ksK0JBQVlFLFVBQVosQ0FBdUIsWUFBdkIsQ0FESixFQUVJSixDQUZKLEVBR0lILGNBQUtDLElBQUwsQ0FBVVQsa0JBQVYsRUFBOEIsWUFBOUIsQ0FISixDQURKLENBMU9ELEVBa1BGa0QsTUFsUEUsQ0FrUEssTUFBTVIsRUFBTixJQUNKcEMsaUJBQVFDLEtBQVIsQ0FBY0MsY0FBS0MsSUFBTCxDQUFVaUMsRUFBRSxDQUFDZ0IsZUFBYixFQUE4QixTQUE5QixDQUFkLEVBQXdELEdBQXhELEVBQTZEaEQsRUFBN0QsQ0FBZ0VDLENBQUMsSUFDN0RDLGVBQU9DLGVBQVAsQ0FDSSwrQkFBWUUsVUFBWixDQUF1QixTQUF2QixDQURKLEVBRUlKLENBRkosRUFHSUgsY0FBS0MsSUFBTCxDQUFVVCxrQkFBVixFQUE4QixTQUE5QixDQUhKLENBREosQ0FuUEQsRUEyUEZrRCxNQTNQRSxDQTJQSyxNQUFNUixFQUFOLElBQVk7QUFDaEIsWUFBTStCLFFBQVEsR0FBSUMsT0FBRCxJQUNiQSxPQUFPLENBQUNDLE9BQVIsQ0FBZ0IseUJBQWhCLEVBQTJDLG1CQUEzQyxDQURKOztBQUVBLGFBQU9yRSxpQkFBUUMsS0FBUixDQUFjQyxjQUFLQyxJQUFMLENBQVVpQyxFQUFFLENBQUNnQixlQUFiLEVBQThCLFlBQTlCLENBQWQsRUFBMkQsR0FBM0QsRUFBZ0VoRCxFQUFoRSxDQUFtRUMsQ0FBQyxJQUN2RUMsZUFBT2dFLGtCQUFQLENBQ0ksK0JBQVk3RCxVQUFaLENBQXVCLGtCQUF2QixDQURKLEVBRUlKLENBRkosRUFHSUgsY0FBS0MsSUFBTCxDQUFVVCxrQkFBVixFQUE4QixZQUE5QixDQUhKLEVBSUksV0FKSixFQUtJeUUsUUFMSixDQURHLENBQVA7QUFTSCxLQXZRRSxFQXdRRnZCLE1BeFFFLENBd1FLLE1BQU1SLEVBQU4sSUFDSnBDLGlCQUFRQyxLQUFSLENBQWNDLGNBQUtDLElBQUwsQ0FBVWlDLEVBQUUsQ0FBQ2dCLGVBQWIsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsZUFBMUMsQ0FBZCxFQUEwRSxHQUExRSxFQUErRWhELEVBQS9FLENBQWtGQyxDQUFDLElBQy9FQyxlQUFPQyxlQUFQLENBQ0ksK0JBQVlFLFVBQVosQ0FBdUIsZ0JBQXZCLENBREosRUFFSUosQ0FGSixFQUdJSCxjQUFLQyxJQUFMLENBQVVULGtCQUFWLEVBQThCLFlBQTlCLEVBQTRDLGVBQTVDLENBSEosQ0FESixDQXpRRCxFQWlSRmtELE1BalJFLENBaVJLLE1BQU1SLEVBQU4sSUFDSnBDLGlCQUFROEIsSUFBUixDQUFhNUIsY0FBS0MsSUFBTCxDQUFVaUMsRUFBRSxDQUFDZ0IsZUFBYixFQUE4QixvQkFBOUIsQ0FBYixFQUFrRWhELEVBQWxFLENBQXFFQyxDQUFDLElBQ2xFQyxlQUFPaUUsUUFBUCxDQUNJLCtCQUFZOUQsVUFBWixDQUF1QixlQUF2QixDQURKLEVBRUlKLENBRkosRUFHSUgsY0FBS0MsSUFBTCxDQUFVVCxrQkFBVixFQUE4QixlQUE5QixFQUFnRCxHQUFFZ0MsR0FBSSxxQkFBdEQsQ0FISixDQURKLENBbFJELEVBMFJGa0IsTUExUkUsQ0EwUkssTUFBTVIsRUFBTixJQUNKcEMsaUJBQVFDLEtBQVIsQ0FBY0MsY0FBS0MsSUFBTCxDQUFVaUMsRUFBRSxDQUFDZ0IsZUFBYixFQUE4QixXQUE5QixDQUFkLEVBQTBELE9BQTFELEVBQW1FaEQsRUFBbkUsQ0FBc0VDLENBQUMsSUFDbkVDLGVBQU9DLGVBQVAsQ0FDSSwrQkFBWUUsVUFBWixDQUF1QixXQUF2QixDQURKLEVBRUlKLENBRkosRUFHSUgsY0FBS0MsSUFBTCxDQUFVVCxrQkFBVixFQUE4QixXQUE5QixDQUhKLENBREosQ0EzUkQsRUFtU0ZrRCxNQW5TRSxDQW1TSyxNQUFNUixFQUFOLElBQ0pwQyxpQkFBUUMsS0FBUixDQUFjQyxjQUFLQyxJQUFMLENBQVVpQyxFQUFFLENBQUNnQixlQUFiLEVBQThCLE9BQTlCLENBQWQsRUFBc0QsUUFBdEQsRUFBZ0VoRCxFQUFoRSxDQUFtRUMsQ0FBQyxJQUNoRUMsZUFBT0MsZUFBUCxDQUNJLCtCQUFZRSxVQUFaLENBQXVCLE9BQXZCLENBREosRUFFSUosQ0FGSixFQUdJSCxjQUFLQyxJQUFMLENBQVVULGtCQUFWLEVBQThCLE9BQTlCLENBSEosQ0FESixDQXBTRCxFQTRTRmtELE1BNVNFLENBNFNLLE1BQU1SLEVBQU4sSUFDSnBDLGlCQUFRQyxLQUFSLENBQWNDLGNBQUtDLElBQUwsQ0FBVWlDLEVBQUUsQ0FBQ2dCLGVBQWIsRUFBOEIsS0FBOUIsQ0FBZCxFQUFvRCxPQUFwRCxFQUE2RGhELEVBQTdELENBQWdFQyxDQUFDLElBQzdEQyxlQUFPQyxlQUFQLENBQXVCLCtCQUFZRSxVQUFaLENBQXVCLEtBQXZCLENBQXZCLEVBQXNESixDQUF0RCxFQUF5REgsY0FBS0MsSUFBTCxDQUFVVCxrQkFBVixFQUE4QixLQUE5QixDQUF6RCxDQURKLENBN1NELEVBaVRGa0QsTUFqVEUsQ0FpVEssTUFBTVIsRUFBTixJQUNKcEMsaUJBQVFDLEtBQVIsQ0FBY0MsY0FBS0MsSUFBTCxDQUFVaUMsRUFBRSxDQUFDZ0IsZUFBYixFQUE4QixPQUE5QixDQUFkLEVBQXNELE9BQXRELEVBQStEaEQsRUFBL0QsQ0FBa0VDLENBQUMsSUFDL0RDLGVBQU9DLGVBQVAsQ0FDSSwrQkFBWUUsVUFBWixDQUF1QixPQUF2QixDQURKLEVBRUlKLENBRkosRUFHSUgsY0FBS0MsSUFBTCxDQUFVVCxrQkFBVixFQUE4QixPQUE5QixDQUhKLENBREosQ0FsVEQsRUEwVEZVLEVBMVRFLENBMFRDLE1BQU1nQyxFQUFOLElBQVk7QUFDWixVQUFJdEMsWUFBWSxDQUFDMEUsS0FBakIsRUFBd0I7QUFDcEJDLDhCQUFTQyxNQUFULENBQWdCO0FBQ1pDLFVBQUFBLEtBQUssRUFBRyxHQUFFdkMsRUFBRSxDQUFDNEIsUUFBUyxvQkFEVjtBQUVaWSxVQUFBQSxPQUFPLEVBQUcsV0FDTnhDLEVBQUUsQ0FBQ08sWUFBSCxJQUFtQkYsU0FBbkIsR0FDTSxZQUROLEdBRU1MLEVBQUUsQ0FBQ08sWUFBSCxDQUFnQnhELElBQWhCLEtBQXlCLG9CQUF6QixHQUNBLE9BREEsR0FFQWlELEVBQUUsQ0FBQ08sWUFBSCxDQUFnQnZELE9BQ3pCO0FBUlcsU0FBaEI7QUFVSDtBQUNKLEtBdlVFLENBQVA7QUF3VUgsR0FyVm1CLENBQXhCOztBQXdWQSxNQUFJVSxZQUFZLENBQUMwRSxLQUFqQixFQUF3QjtBQUNwQixRQUFJaEYsT0FBTyxDQUFDcUYsS0FBWixFQUFtQjtBQUNmLFlBQU1DLG9CQUFvQixDQUFDcEYsa0JBQUQsRUFBcUJILE9BQU8sQ0FBQ2lCLE1BQTdCLENBQTFCO0FBQ0g7O0FBQ0QsVUFBTXVFLFlBQVksR0FBRyxNQUFNaEYsY0FBYyxDQUFDaUYsT0FBZixFQUEzQjtBQUNBLFVBQU1DLFlBQVksR0FBRyxNQUFNMUQsZUFBZSxDQUFDeUQsT0FBaEIsRUFBM0I7QUFDQSxVQUFNRSxZQUFZLEdBQUcsTUFBTXBFLGlDQUFpQyxDQUFDa0UsT0FBbEMsRUFBM0I7QUFDQSxVQUFNRyxZQUFZLEdBQUcsTUFBTW5FLG9CQUFvQixDQUFDZ0UsT0FBckIsRUFBM0I7QUFDQSxVQUFNekYsT0FBTyxDQUFDNkYsV0FBUixFQUFOOztBQUNBLFFBQUlGLFlBQVksSUFBSXpDLFNBQXBCLEVBQStCO0FBQzNCLFlBQU15QyxZQUFZLEVBQWxCO0FBQ0g7O0FBQ0QsUUFBSUMsWUFBWSxJQUFJMUMsU0FBcEIsRUFBK0I7QUFDM0IsWUFBTTBDLFlBQVksRUFBbEI7QUFDSDs7QUFDRCxVQUFNRixZQUFZLEVBQWxCO0FBQ0EsVUFBTUYsWUFBWSxFQUFsQjtBQUNILEdBakJELE1BaUJPO0FBQ0gsVUFBTU0sU0FBUyxHQUFHQyxJQUFJLENBQUNDLEdBQUwsRUFBbEI7O0FBQ0EsUUFBSTtBQUNBLFVBQUkvRixPQUFPLENBQUNxRixLQUFaLEVBQW1CO0FBQ2YsY0FBTUMsb0JBQW9CLENBQUNwRixrQkFBRCxFQUFxQkgsT0FBTyxDQUFDaUIsTUFBN0IsQ0FBMUI7QUFDSDs7QUFDRCxZQUFNVCxjQUFjLENBQUN5RixZQUFyQjtBQUNBLFlBQU0xRSxpQ0FBaUMsQ0FBQzBFLFlBQXhDO0FBQ0EsWUFBTXhFLG9CQUFvQixDQUFDd0UsWUFBM0I7QUFDQSxZQUFNakUsZUFBZSxDQUFDaUUsWUFBdEIsQ0FQQSxDQVFBOztBQUNBQyxNQUFBQSxPQUFPLENBQUNoQyxHQUFSLENBQVlpQyxlQUFNQyxXQUFOLENBQWtCLGVBQWxCLENBQVo7QUFDSCxLQVZELFNBVVU7QUFDTixZQUFNQyxTQUFTLEdBQUdOLElBQUksQ0FBQ0MsR0FBTCxLQUFhRixTQUEvQixDQURNLENBRU47O0FBQ0FJLE1BQUFBLE9BQU8sQ0FBQ2hDLEdBQVIsQ0FBYSxlQUFjLDRCQUFVbUMsU0FBVixDQUFxQixFQUFoRDtBQUNIO0FBQ0o7QUFDSjs7QUFFRCxlQUFlZCxvQkFBZixDQUFvQ3BGLGtCQUFwQyxFQUFnRWMsTUFBaEUsRUFBZ0c7QUFDNUZBLEVBQUFBLE1BQU0sQ0FBQ2lELEdBQVAsQ0FBVyxrQ0FBa0MvRCxrQkFBN0M7QUFDQSxRQUFNLHVCQUFTQSxrQkFBVCxDQUFOO0FBQ0FjLEVBQUFBLE1BQU0sQ0FBQ2lELEdBQVAsQ0FBVywwQkFBWDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0IHsgZW1wdHlEaXIsIHBhdGhFeGlzdHMgfSBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCBub3RpZmllciBmcm9tIFwibm9kZS1ub3RpZmllclwiO1xuXG5pbXBvcnQgeyBlbmdpbmVGYWN0b3J5IH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRW5naW5lL0FjcXVpcmVGb3JtRW5naW5lXCI7XG5pbXBvcnQgeyBnZXRFbmdpbmVTb3VyY2VLZXkgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9FbmdpbmUvRW5naW5lU291cmNlXCI7XG5pbXBvcnQgeyBjb21waWxlRm9ybSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vQ29tcGlsZUZvcm1cIjtcbmltcG9ydCB7IGdlbmVyYXRlRm9ybSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vR2VuZXJhdGVGb3JtXCI7XG5pbXBvcnQgeyBOdWxsRm9ybUdlbmVyYXRvciB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vTnVsbEZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7IHdyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXMgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL1dyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXNcIjtcbmltcG9ydCB7IEZTVGFzayB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0ZTVGFza1wiO1xuaW1wb3J0IHtcbiAgICBnZW5lcmF0b3JGYWN0b3J5LFxuICAgIEdlbmVyYXRvclNvdXJjZSxcbiAgICBnZXRHZW5lcmF0b3JTb3VyY2VLZXksXG59IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0dlbmVyYXRvci9BY3F1aXJlRm9ybUdlbmVyYXRvclwiO1xuaW1wb3J0IHsgcmVzb2x2ZUVuZ2luZVZlcnNpb24sIHJlc29sdmVHZW5lcmF0b3JWZXJzaW9uIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUHVibGlzaGVkVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyBGb3JtQnVpbGRNb2RlLCByZXNvbHZlRm9ybUluZm8gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IHdyaXRlRm9ybU1ldGEgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Xcml0ZUZvcm1NZXRhXCI7XG5pbXBvcnQgeyBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvQ29uc29sZUFwcGxpY2F0aW9uL0NvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHRcIjtcbmltcG9ydCB7IEZvcm1HbG9icyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0Zvcm1HbG9ic1V0aWxzXCI7XG5pbXBvcnQgeyBJTG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9JTG9nZ2VyXCI7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL1N0YXRpY0xvZ2dlclwiO1xuaW1wb3J0IHsgT2JzZXJ2ZSB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9PYnNlcnZlXCI7XG5pbXBvcnQgeyBTaW5nbGVWYWx1ZVByb2R1Y2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL1NpbmdsZVZhbHVlUHJvZHVjZXJcIjtcbmltcG9ydCB7IHByaW50VGltZSB9IGZyb20gXCIuLi8uLi9Db21tb25zL1RpbWluZ1V0aWxzXCI7XG5pbXBvcnQgeyBCdWlsZENhY2hlIH0gZnJvbSBcIi4uLy4uL0Zvcm1XZWJwYWNrQ29uZmlndXJhdGlvbi9DYWNoZUFzc2V0c1BsdWdpblwiO1xuaW1wb3J0IHsgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHsgd3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Xcml0ZUF0dGFjaG1lbnRQYXRoRmlsZXNcIjtcblxuaW1wb3J0IHsgQnVpbGRGb3Jtc09wdGlvbnMgfSBmcm9tIFwiLi9CdWlsZEZvcm1zT3B0aW9uc1wiO1xuXG5mdW5jdGlvbiBnZXRHZW5lcmF0b3JWZXJzaW9uKGdlbmVyYXRvclNvdXJjZTogR2VuZXJhdG9yU291cmNlKTogc3RyaW5nIHtcbiAgICBpZiAoZ2VuZXJhdG9yU291cmNlLnR5cGUgPT09IFwiUHVibGlzaGVkR2VuZXJhdG9yXCIpIHtcbiAgICAgICAgcmV0dXJuIGdlbmVyYXRvclNvdXJjZS52ZXJzaW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWRQcm9ncmFtU3RhdGVcIik7XG4gICAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuQnVpbGRGb3JtcyhcbiAgICBjb250ZXh0OiBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0LFxuICAgIG9wdGlvbnM6IEJ1aWxkRm9ybXNPcHRpb25zLFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBobEZhcm1EaXJlY3RvcnlQYXRoOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGJ1aWxkT3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCBwaWNrTGlzdHNDaGFpbiA9IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwicGlja2xpc3RzXCIpLCBcIiouanNvblwiKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChcIlBJQ0tMSVNUU1wiKSwgeCwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwaWNrbGlzdHNcIikpXG4gICAgKTtcblxuICAgIGNvbnN0IGZvcm1HbG9icyA9IGF3YWl0IEZvcm1HbG9icy52YWxpZGF0ZUdsb2JzKFxuICAgICAgICBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZVNwZWNpZmllcnMoYnVpbGRPcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSksXG4gICAgICAgIGZhcm1EaXJlY3RvcnlcbiAgICApO1xuXG4gICAgY29uc3Qgc3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluID0gT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcIi4uXCIsIFwiU3RhdGljRmlsZXNGb3JQcm9kdWN0aW9uUmVzb3VyY2VzRGlyXCIpLFxuICAgICAgICBcIiouanNcIixcbiAgICAgICAgXCIqLmpzLm1hcFwiXG4gICAgKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNUQVRJQ1NcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicHVibGljXCIsIFwic2NyaXB0c1wiKSlcbiAgICApO1xuXG4gICAgY29uc3QgcmVzb3VyY2VzTnVTcGVjQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5KSwgXCIqLm51c3BlY1wiKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5QnlNYXNrcyhnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTlVTUEVDXCIpLCB4LCBbXCIqLm51c3BlY1wiXSwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSkpXG4gICAgKTtcblxuICAgIGNvbnN0IGNvcGllZEVuZ2luZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGNvbnN0IGJ1aWxkQ2FjaGUgPSBuZXcgQnVpbGRDYWNoZShmYXJtRGlyZWN0b3J5LCBvcHRpb25zLmJ1aWxkQ2FjaGVNb2RlKTtcbiAgICBjb25zdCBidWlsZEZvcm1zQ2hhaW4gPSBPYnNlcnZlLmRpcmVjdG9yeShwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiKSwgZm9ybUdsb2JzKS5zcGxpdFRvUGFyYWxsZWxDaGFpbnMoXG4gICAgICAgIHggPT4geCxcbiAgICAgICAgeCA9PiB4LFxuICAgICAgICBhc3luYyBnZnYgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYpO1xuXG4gICAgICAgICAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtLmpzb25cIikpKSkge1xuICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndhcm5pbmcoXG4gICAgICAgICAgICAgICAgICAgIGBGb3JtICR7Z2Z2fSBkb2VzIG5vdCBoYXZlIGZvcm0uanNvbiBmaWxlLiBUbyBpbmNsdWRlIHRoaXMgZm9ybSB0byBidWlsZCBwcm9jZXNzIHJlc3RhcnQgYnVpbGRgXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS52YWx1ZSh7fSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm0uanNvblwiKSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGZvcm1Kc29uRmlsZSA9PlxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlRm9ybUluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtSnNvbkZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYEZPUk06JHtnZnZ9YCksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVwZ3JhZGVGb3JtSnNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXNlTGFzdFN0YWJsZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVzZVByZXJlbGVhc2VWZXJzaW9uXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5tb2RlID09PSBGb3JtQnVpbGRNb2RlLk5vcm1hbEJ1aWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJnZW5lcmF0b3JWZXJzaW9uIGlzIG5vdCBkZWZpbmVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmVuZ2luZVZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZW5naW5lVmVyc2lvbiBpcyBub3QgZGVmaW5lZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiBhd2FpdCByZXNvbHZlR2VuZXJhdG9yVmVyc2lvbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yVmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChnZnYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmdpbmVTb3VyY2U6IGF3YWl0IHJlc29sdmVFbmdpbmVWZXJzaW9uKGZpLmVuZ2luZVZlcnNpb24sIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoZ2Z2KSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmdpbmVTb3VyY2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaS5nZW5lcmF0b3JTb3VyY2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW5nbGVWYWx1ZVByb2R1Y2VyKG5ldyBOdWxsRm9ybUdlbmVyYXRvcigpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvckZhY3RvcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvclNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuZHlNb2R1bGVzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVzZVZlcnNpb25Gcm9tQ2FjaGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBhc3luYyAoZmksIHkpID0+ICh7IC4uLmZpLCBnZW5lcmF0b3I6IHkgfSksXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3JTb3VyY2UgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBnZXRHZW5lcmF0b3JTb3VyY2VLZXkoZmkuZ2VuZXJhdG9yU291cmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJOdWxsRm9ybUdlbmVyYXRvclwiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaS5lbmdpbmVTb3VyY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2luZ2xlVmFsdWVQcm9kdWNlcihcIk51bGxFbmdpbmVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW5naW5lRmFjdG9yeShmaS5lbmdpbmVTb3VyY2UsIGNhbmR5TW9kdWxlc0RpcmVjdG9yeSwgb3B0aW9ucy51c2VWZXJzaW9uRnJvbUNhY2hlKS5kbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3luYyB4ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb3BpZWRFbmdpbmVzLmhhcyhnZXRFbmdpbmVTb3VyY2VLZXkoZmkuZW5naW5lU291cmNlKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkVOR0lORVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicHVibGljXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29waWVkRW5naW5lcy5hZGQoZ2V0RW5naW5lU291cmNlS2V5KGZpLmVuZ2luZVNvdXJjZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4gZmksXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IChmaS5lbmdpbmVTb3VyY2UgIT0gdW5kZWZpbmVkID8gZ2V0RW5naW5lU291cmNlS2V5KGZpLmVuZ2luZVNvdXJjZSkgOiBcIk51bGxFbmdpbmVcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIuLi8uLi9jb250cm9scy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIi4uLy4uL3hzbHRUZW1wbGF0ZXMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIuLi8uLi9qc0hlbHBlcnMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzY2hlbWFzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3VnYXIvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb250cm9scy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImF1dG9jYWxjLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaGVscGVycy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZhbGlkYXRpb25zLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibG9jYWxpemF0aW9uLyoqLypcIlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZGVwZW5kZW5jaWVzSGFzaDogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkubW9kZSAhPT0gRm9ybUJ1aWxkTW9kZS5Ob3JtYWxCdWlsZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNIYXNoOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChhd2FpdCBmaS5nZW5lcmF0b3Iuc3VwcG9ydHNEZXBlbmRlbmNpZXNFeHRyYWN0aW9uKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llc0hhc2ggPSBhd2FpdCBmaS5nZW5lcmF0b3IuZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzSGFzaDogZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5nZW5lcmF0b3JTb3VyY2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF3YWl0IGJ1aWxkQ2FjaGUuZXhpc3RzKGZpLmdlbmVyYXRvclNvdXJjZSwgZ2Z2LCBmaS5kZXBlbmRlbmNpZXNIYXNoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYEdFTkVSQVRFOiR7Z2Z2fWApLmxvZyhcIlNraXBwZWQgZHVlIGJ1aWxkIGNhY2hlIGV4aXRzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBDb2RlUmVmb3JtYXR0aW5nOiBvcHRpb25zLnNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0hhc2g6IGZpLmRlcGVuZGVuY2llc0hhc2ggPz8gXCJVbmRlZmluZWRSZXNvdXJjZXNIYXNoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm1cIiksIFwiKiovKlwiKSlcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF3YWl0IGJ1aWxkQ2FjaGUuZXhpc3RzKGZpLmdlbmVyYXRvclNvdXJjZSwgZ2Z2LCBmaS5kZXBlbmRlbmNpZXNIYXNoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYENPTVBJTEU6JHtnZnZ9YCkubG9nKFwiU2tpcHBlZCBkdWUgYnVpbGQgY2FjaGUgZXhpc3RzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGJ1aWxkQ2FjaGUuZXh0cmFjdChmaS5nZW5lcmF0b3JTb3VyY2UsIGdmdiwgZmkuZGVwZW5kZW5jaWVzSGFzaCwgcmVzb3VyY2VzRGlyZWN0b3J5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYnVpbGRDYWNoZU9wdGlvbnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBzSGFzaDogZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JWZXJzaW9uOiBnZXRHZW5lcmF0b3JWZXJzaW9uKGZpLmdlbmVyYXRvclNvdXJjZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogb3B0aW9ucy5idWlsZENhY2hlTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5OiBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBjb21waWxlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkudGhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhpcyB2ZXJzaW9uIG9mIGdlbmVyYXRvciBpcyBub3Qgc3VwcG9ydGVkIGR1ZSB0byBkZXBlbmRlbmNpZXMgZXh0cmFjdGlvbiBpcyBub3Qgc3VwcG9ydGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZvcm1NZXRhKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2Z2LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZW5naW5lU291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGlzIHZlcnNpb24gb2YgZ2VuZXJhdG9yIGlzIG5vdCBzdXBwb3J0ZWQgZHVlIHRvIGRlcGVuZGVuY2llcyBleHRyYWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS50aGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZU9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5nZW5lcmF0b3JTb3VyY2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYnVpbGRDYWNoZU9wdGlvbnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBzSGFzaDogZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JWZXJzaW9uOiBnZXRHZW5lcmF0b3JWZXJzaW9uKGZpLmdlbmVyYXRvclNvdXJjZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogb3B0aW9ucy5idWlsZENhY2hlTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5OiBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlQXR0YWNobWVudFBhdGhGaWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5tb2RlID09PSBGb3JtQnVpbGRNb2RlLkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJsZWdhY3ktcHJlYnVpbHRcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkxFR0FDWS1QUkVCVUlMVFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW5nbGVWYWx1ZVByb2R1Y2VyKFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJzY2hlbWFzXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNDSEVNQVNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInNjaGVtYXNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJjb252ZXJ0ZXJzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiQ09OVkVSVEVSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm1lcmdlcnNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJNRVJHRVJTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJtZXJnZXJzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGlmaWVyID0gKGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC5yZXBsYWNlKC88eDppbmNsdWRlIGhyZWY9XCJbLi9dKy9nLCAnPHg6aW5jbHVkZSBocmVmPVwiJyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwiY29udmVydGVyc1wiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5tb2RpZnlGaWxlc0NvbnRlbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkZJWC1YU0xULUlOQ0xVREVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcImNvbnZlcnRlcnNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIqKi8qLnhzbHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwiLi5cIiwgXCIuLlwiLCBcInhzbHRUZW1wbGF0ZXNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJYU0xULVRFTVBMQVRFU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiLCBcInhzbHRUZW1wbGF0ZXNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZShwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInByZXNlbnRhdGlvbnMuanNvblwiKSkuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlGaWxlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJQUkVTRU5UQVRJT05TXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwcmVzZW50YXRpb25zXCIsIGAke2dmdn0ucHJlc2VudGF0aW9ucy5qc29uYClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJub3JtYWxpemVcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTk9STUFMSVpFXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJub3JtYWxpemVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJwYXRjaFwiKSwgXCIqLnhzbHRcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiUEFUQ0hcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInBhdGNoXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibWFwXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk1BUFwiKSwgeCwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJtYXBcIikpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwidW5tYXBcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiVU5NQVBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInVubWFwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJ1aWxkT3B0aW9ucy53YXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpZXIubm90aWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYCR7ZmkuZm9ybU5hbWV9OiDRgdCx0L7RgNC60LAg0LfQsNCy0LXRgNGI0LXQvdCwYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBgRW5naW5lOiAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5lbmdpbmVTb3VyY2UgPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiW05vRW5naW5lXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGZpLmVuZ2luZVNvdXJjZS50eXBlID09PSBcIkxvY2FsRW5naW5lU291cmNlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwibG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmaS5lbmdpbmVTb3VyY2UudmVyc2lvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBpZiAoYnVpbGRPcHRpb25zLndhdGNoKSB7XG4gICAgICAgIGlmIChvcHRpb25zLmNsZWFuKSB7XG4gICAgICAgICAgICBhd2FpdCBjbGVhblRhcmdldERpcmVjdG9yeShyZXNvdXJjZXNEaXJlY3RvcnksIGNvbnRleHQubG9nZ2VyKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTEgPSBhd2FpdCBwaWNrTGlzdHNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMiA9IGF3YWl0IGJ1aWxkRm9ybXNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMyA9IGF3YWl0IHN0YXRpY1Jlc291cmNlc0ZvclByb2R1Y3Rpb25DaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlNCA9IGF3YWl0IHJlc291cmNlc051U3BlY0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgYXdhaXQgY29udGV4dC53YWl0Rm9yRXhpdCgpO1xuICAgICAgICBpZiAoc3RvcE9ic2VydmUzICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0b3BPYnNlcnZlNCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlNCgpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMigpO1xuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTEoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzdGFydERhdGUgPSBEYXRlLm5vdygpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuY2xlYW4pIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBjbGVhblRhcmdldERpcmVjdG9yeShyZXNvdXJjZXNEaXJlY3RvcnksIGNvbnRleHQubG9nZ2VyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHBpY2tMaXN0c0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHN0YXRpY1Jlc291cmNlc0ZvclByb2R1Y3Rpb25DaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBhd2FpdCByZXNvdXJjZXNOdVNwZWNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBhd2FpdCBidWlsZEZvcm1zQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuQnJpZ2h0KFwiQnVpbGQgc3VjY2Vzc1wiKSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBjb25zdCB0b3RhbFRpbWUgPSBEYXRlLm5vdygpIC0gc3RhcnREYXRlO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBUb3RhbCB0aW1lOiAke3ByaW50VGltZSh0b3RhbFRpbWUpfWApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBjbGVhblRhcmdldERpcmVjdG9yeShyZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZywgbG9nZ2VyOiBJTG9nZ2VyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbG9nZ2VyLmxvZyhcIkNsZWFuaW5nIHJlc291cmNlIGRpcmVjdG9yeS4gXCIgKyByZXNvdXJjZXNEaXJlY3RvcnkpO1xuICAgIGF3YWl0IGVtcHR5RGlyKHJlc291cmNlc0RpcmVjdG9yeSk7XG4gICAgbG9nZ2VyLmxvZyhcIlJlc291cmNlIGRpcmVjdG9yeSBjbGVhblwiKTtcbn1cbiJdfQ==