@openmrs/esm-app-shell 9.0.3-pre.4533 → 9.0.3-pre.4550

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/openmrs.js CHANGED
@@ -6,7 +6,7 @@ eval("{\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n
6
6
 
7
7
  },
8
8
  "./src/index.ts"(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
9
- eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n setupUtils: () => (setupUtils)\n});\n/* import */ var import_map_overrides__rspack_import_0 = __webpack_require__(\"../../../node_modules/import-map-overrides/dist/import-map-overrides.js\");\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _ts_generator(thisArg, body) {\n var f, y, t, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n }, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype), d = Object.defineProperty;\n return d(g, \"next\", {\n value: verb(0)\n }), d(g, \"throw\", {\n value: verb(1)\n }), d(g, \"return\", {\n value: verb(2)\n }), typeof Symbol === \"function\" && d(g, Symbol.iterator, {\n value: function() {\n return this;\n }\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(g && (g = 0, op[0] && (_ = 0)), _)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\n\nfunction _createSpaBase(baseUrl) {\n return function() {\n return baseUrl;\n };\n}\nfunction setupPaths(config) {\n var _process_env_BUILD_VERSION;\n var error = false;\n if (!config.apiUrl) {\n console.error('initializeSpa() was called without supplying an apiUrl. This means that the application cannot communicate with the backend.');\n error = true;\n }\n if (!config.spaPath) {\n console.error('initializeSpa() was called without supplying a spaPath. This means that the application cannot properly generate urls.');\n error = true;\n }\n if (error) {\n throw new Error('One or more required properties in the basic configuration of the application was missing and the application cannot be rendered. Please see the browser console for details.');\n }\n window.openmrsBase = config.apiUrl;\n window.spaBase = config.spaPath;\n window.spaEnv = config.env || 'production';\n window.spaVersion = (_process_env_BUILD_VERSION = \"9.0.3-pre.4533-20260415\") !== null && _process_env_BUILD_VERSION !== void 0 ? _process_env_BUILD_VERSION : 'local';\n var spaBaseWithSlash = window.spaBase.endsWith('/') ? window.spaBase : window.spaBase + '/';\n window.getOpenmrsSpaBase = _createSpaBase(spaBaseWithSlash);\n}\nfunction setupUtils() {\n window.copyText = function(source) {\n var sel = window.getSelection();\n if (sel) {\n var r = document.createRange();\n r.selectNode(source);\n sel.removeAllRanges();\n sel.addRange(r);\n document.execCommand('copy');\n sel.removeAllRanges();\n }\n };\n}\nfunction wireSpaPaths() {\n var baseElement = document.createElement('base');\n var baseHref = window.getOpenmrsSpaBase();\n baseElement.href = baseHref;\n document.head.appendChild(baseElement);\n __webpack_require__.p = baseHref;\n}\n/**\n * Initializes the OpenMRS Frontend App Shell.\n * @param config The global configuration to apply.\n */ function initializeSpa(config) {\n setupUtils();\n setupPaths(config);\n wireSpaPaths();\n return Promise.resolve(__webpack_require__.I('default')).then(function() {\n return _async_to_generator(function() {\n var shareScope, _config_configUrls, configUrls, _config_offline, offline, run;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n shareScope = __webpack_require__.S.default;\n // MF will deduplicate these as they're aliased at build time, but at runtime\n // apps try to load `@openmrs/esm-framework`, so here we provide a runtime\n // alias that resolves to the \"internal\" copy of the framework\n if (shareScope['@openmrs/esm-framework/src/internal'] && !shareScope['@openmrs/esm-framework']) {\n shareScope['@openmrs/esm-framework'] = shareScope['@openmrs/esm-framework/src/internal'];\n }\n _config_configUrls = config.configUrls, configUrls = _config_configUrls === void 0 ? [] : _config_configUrls, _config_offline = config.offline, offline = _config_offline === void 0 ? false : _config_offline;\n window.offlineEnabled = offline;\n return [\n 4,\n Promise.all(/* import() */ [__webpack_require__.e(\"default-webpack_sharing_consume_default_react_react\"), __webpack_require__.e(\"default-webpack_sharing_consume_default_react-dom_react-dom\"), __webpack_require__.e(\"default-node_modules_carbon_icons-react_es_generated_bucket-11_js-node_modules_carbon_icons-r-63ea09\"), __webpack_require__.e(\"default-framework_esm-framework_dist_internal_js\"), __webpack_require__.e(\"default-vendors-node_modules_i18next-browser-languagedetector_dist_esm_i18nextBrowserLanguage-1ba50a\"), __webpack_require__.e(\"default-src_run_ts\")]).then(__webpack_require__.bind(__webpack_require__, \"./src/run.ts\"))\n ];\n case 1:\n run = _state.sent().run;\n return [\n 2,\n run(configUrls)\n ];\n }\n });\n })();\n });\n}\nwindow.initializeSpa = initializeSpa;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9zaGVsbC9lc20tYXBwLXNoZWxsL3NyYy9pbmRleC50cyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi9zcmMvaW5kZXgudHM/OGNjNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ2ltcG9ydC1tYXAtb3ZlcnJpZGVzJztcbmltcG9ydCB0eXBlIHsgU3BhQ29uZmlnIH0gZnJvbSAnQG9wZW5tcnMvZXNtLWZyYW1ld29yay9zcmMvaW50ZXJuYWwnO1xuXG5mdW5jdGlvbiBfY3JlYXRlU3BhQmFzZShiYXNlVXJsOiBzdHJpbmcpIHtcbiAgcmV0dXJuICgpID0+IGJhc2VVcmw7XG59XG5cbmZ1bmN0aW9uIHNldHVwUGF0aHMoY29uZmlnOiBTcGFDb25maWcpIHtcbiAgbGV0IGVycm9yID0gZmFsc2U7XG4gIGlmICghY29uZmlnLmFwaVVybCkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAnaW5pdGlhbGl6ZVNwYSgpIHdhcyBjYWxsZWQgd2l0aG91dCBzdXBwbHlpbmcgYW4gYXBpVXJsLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGNhbm5vdCBjb21tdW5pY2F0ZSB3aXRoIHRoZSBiYWNrZW5kLicsXG4gICAgKTtcbiAgICBlcnJvciA9IHRydWU7XG4gIH1cblxuICBpZiAoIWNvbmZpZy5zcGFQYXRoKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgICdpbml0aWFsaXplU3BhKCkgd2FzIGNhbGxlZCB3aXRob3V0IHN1cHBseWluZyBhIHNwYVBhdGguIFRoaXMgbWVhbnMgdGhhdCB0aGUgYXBwbGljYXRpb24gY2Fubm90IHByb3Blcmx5IGdlbmVyYXRlIHVybHMuJyxcbiAgICApO1xuICAgIGVycm9yID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChlcnJvcikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdPbmUgb3IgbW9yZSByZXF1aXJlZCBwcm9wZXJ0aWVzIGluIHRoZSBiYXNpYyBjb25maWd1cmF0aW9uIG9mIHRoZSBhcHBsaWNhdGlvbiB3YXMgbWlzc2luZyBhbmQgdGhlIGFwcGxpY2F0aW9uIGNhbm5vdCBiZSByZW5kZXJlZC4gUGxlYXNlIHNlZSB0aGUgYnJvd3NlciBjb25zb2xlIGZvciBkZXRhaWxzLicsXG4gICAgKTtcbiAgfVxuXG4gIHdpbmRvdy5vcGVubXJzQmFzZSA9IGNvbmZpZy5hcGlVcmw7XG4gIHdpbmRvdy5zcGFCYXNlID0gY29uZmlnLnNwYVBhdGg7XG4gIHdpbmRvdy5zcGFFbnYgPSBjb25maWcuZW52IHx8ICdwcm9kdWN0aW9uJztcbiAgd2luZG93LnNwYVZlcnNpb24gPSBwcm9jZXNzLmVudi5CVUlMRF9WRVJTSU9OID8/ICdsb2NhbCc7XG4gIGNvbnN0IHNwYUJhc2VXaXRoU2xhc2ggPSB3aW5kb3cuc3BhQmFzZS5lbmRzV2l0aCgnLycpID8gd2luZG93LnNwYUJhc2UgOiB3aW5kb3cuc3BhQmFzZSArICcvJztcbiAgd2luZG93LmdldE9wZW5tcnNTcGFCYXNlID0gX2NyZWF0ZVNwYUJhc2Uoc3BhQmFzZVdpdGhTbGFzaCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cFV0aWxzKCkge1xuICB3aW5kb3cuY29weVRleHQgPSAoc291cmNlOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcblxuICAgIGlmIChzZWwpIHtcbiAgICAgIGNvbnN0IHIgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgICAgci5zZWxlY3ROb2RlKHNvdXJjZSk7XG4gICAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICBzZWwuYWRkUmFuZ2Uocik7XG4gICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gd2lyZVNwYVBhdGhzKCkge1xuICBjb25zdCBiYXNlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Jhc2UnKTtcbiAgY29uc3QgYmFzZUhyZWYgPSB3aW5kb3cuZ2V0T3Blbm1yc1NwYUJhc2UoKTtcbiAgYmFzZUVsZW1lbnQuaHJlZiA9IGJhc2VIcmVmO1xuICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGJhc2VFbGVtZW50KTtcbiAgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gPSBiYXNlSHJlZjtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplcyB0aGUgT3Blbk1SUyBGcm9udGVuZCBBcHAgU2hlbGwuXG4gKiBAcGFyYW0gY29uZmlnIFRoZSBnbG9iYWwgY29uZmlndXJhdGlvbiB0byBhcHBseS5cbiAqL1xuZnVuY3Rpb24gaW5pdGlhbGl6ZVNwYShjb25maWc6IFNwYUNvbmZpZykge1xuICBzZXR1cFV0aWxzKCk7XG4gIHNldHVwUGF0aHMoY29uZmlnKTtcbiAgd2lyZVNwYVBhdGhzKCk7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoX193ZWJwYWNrX2luaXRfc2hhcmluZ19fKCdkZWZhdWx0JykpLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNoYXJlU2NvcGUgPSBfX3dlYnBhY2tfc2hhcmVfc2NvcGVzX18uZGVmYXVsdDtcbiAgICAvLyBNRiB3aWxsIGRlZHVwbGljYXRlIHRoZXNlIGFzIHRoZXkncmUgYWxpYXNlZCBhdCBidWlsZCB0aW1lLCBidXQgYXQgcnVudGltZVxuICAgIC8vIGFwcHMgdHJ5IHRvIGxvYWQgYEBvcGVubXJzL2VzbS1mcmFtZXdvcmtgLCBzbyBoZXJlIHdlIHByb3ZpZGUgYSBydW50aW1lXG4gICAgLy8gYWxpYXMgdGhhdCByZXNvbHZlcyB0byB0aGUgXCJpbnRlcm5hbFwiIGNvcHkgb2YgdGhlIGZyYW1ld29ya1xuICAgIGlmIChzaGFyZVNjb3BlWydAb3Blbm1ycy9lc20tZnJhbWV3b3JrL3NyYy9pbnRlcm5hbCddICYmICFzaGFyZVNjb3BlWydAb3Blbm1ycy9lc20tZnJhbWV3b3JrJ10pIHtcbiAgICAgIHNoYXJlU2NvcGVbJ0BvcGVubXJzL2VzbS1mcmFtZXdvcmsnXSA9IHNoYXJlU2NvcGVbJ0BvcGVubXJzL2VzbS1mcmFtZXdvcmsvc3JjL2ludGVybmFsJ107XG4gICAgfVxuXG4gICAgY29uc3QgeyBjb25maWdVcmxzID0gW10sIG9mZmxpbmUgPSBmYWxzZSB9ID0gY29uZmlnO1xuICAgIHdpbmRvdy5vZmZsaW5lRW5hYmxlZCA9IG9mZmxpbmU7XG5cbiAgICBjb25zdCB7IHJ1biB9ID0gYXdhaXQgaW1wb3J0KC8qIHdlYnBhY2tQcmVsb2FkOiB0cnVlICovICcuL3J1bicpO1xuICAgIHJldHVybiBydW4oY29uZmlnVXJscyk7XG4gIH0pO1xufVxuXG53aW5kb3cuaW5pdGlhbGl6ZVNwYSA9IGluaXRpYWxpemVTcGE7XG4iXSwibmFtZXMiOlsiX2NyZWF0ZVNwYUJhc2UiLCJiYXNlVXJsIiwic2V0dXBQYXRocyIsImNvbmZpZyIsIl9wcm9jZXNzX2Vudl9CVUlMRF9WRVJTSU9OIiwiZXJyb3IiLCJjb25zb2xlIiwiRXJyb3IiLCJ3aW5kb3ciLCJzcGFCYXNlV2l0aFNsYXNoIiwic2V0dXBVdGlscyIsInNvdXJjZSIsInNlbCIsInIiLCJkb2N1bWVudCIsIndpcmVTcGFQYXRocyIsImJhc2VFbGVtZW50IiwiYmFzZUhyZWYiLCJfX3dlYnBhY2tfcHVibGljX3BhdGhfXyIsImluaXRpYWxpemVTcGEiLCJQcm9taXNlIiwiX193ZWJwYWNrX2luaXRfc2hhcmluZ19fIiwic2hhcmVTY29wZSIsImNvbmZpZ1VybHMiLCJvZmZsaW5lIiwicnVuIiwiX193ZWJwYWNrX3NoYXJlX3Njb3Blc19fIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQThCO0FBRzlCLFNBQVNBLGVBQWVDLE9BQWU7SUFDckMsT0FBTztlQUFNQTs7QUFDZjtBQUVBLFNBQVNDLFdBQVdDLE1BQWlCO1FBeUJmQztJQXhCcEIsSUFBSUMsUUFBUTtJQUNaLElBQUksQ0FBQ0YsT0FBTyxNQUFNLEVBQUU7UUFDbEJHLFFBQVEsS0FBSyxDQUNYO1FBRUZELFFBQVE7SUFDVjtJQUVBLElBQUksQ0FBQ0YsT0FBTyxPQUFPLEVBQUU7UUFDbkJHLFFBQVEsS0FBSyxDQUNYO1FBRUZELFFBQVE7SUFDVjtJQUVBLElBQUlBLE9BQU87UUFDVCxNQUFNLElBQUlFLE1BQ1I7SUFFSjtJQUVBQyxPQUFPLFdBQVcsR0FBR0wsT0FBTyxNQUFNO0lBQ2xDSyxPQUFPLE9BQU8sR0FBR0wsT0FBTyxPQUFPO0lBQy9CSyxPQUFPLE1BQU0sR0FBR0wsT0FBTyxHQUFHLElBQUk7SUFDOUJLLE9BQU8sVUFBVSxJQUFHSiw2QkFBQUEseUJBQXlCLGNBQXpCQSx3Q0FBQUEsNkJBQTZCO0lBQ2pELElBQU1LLG1CQUFtQkQsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU9BLE9BQU8sT0FBTyxHQUFHQSxPQUFPLE9BQU8sR0FBRztJQUMxRkEsT0FBTyxpQkFBaUIsR0FBR1IsZUFBZVM7QUFDNUM7QUFFTyxTQUFTQztJQUNkRixPQUFPLFFBQVEsR0FBRyxTQUFDRztRQUNqQixJQUFNQyxNQUFNSixPQUFPLFlBQVk7UUFFL0IsSUFBSUksS0FBSztZQUNQLElBQU1DLElBQUlDLFNBQVMsV0FBVztZQUM5QkQsRUFBRSxVQUFVLENBQUNGO1lBQ2JDLElBQUksZUFBZTtZQUNuQkEsSUFBSSxRQUFRLENBQUNDO1lBQ2JDLFNBQVMsV0FBVyxDQUFDO1lBQ3JCRixJQUFJLGVBQWU7UUFDckI7SUFDRjtBQUNGO0FBRUEsU0FBU0c7SUFDUCxJQUFNQyxjQUFjRixTQUFTLGFBQWEsQ0FBQztJQUMzQyxJQUFNRyxXQUFXVCxPQUFPLGlCQUFpQjtJQUN6Q1EsWUFBWSxJQUFJLEdBQUdDO0lBQ25CSCxTQUFTLElBQUksQ0FBQyxXQUFXLENBQUNFO0lBQzFCRSxxQkFBdUJBLEdBQUdEO0FBQzVCO0FBRUE7OztDQUdDLEdBQ0QsU0FBU0UsY0FBY2hCLE1BQWlCO0lBQ3RDTztJQUNBUixXQUFXQztJQUNYWTtJQUNBLE9BQU9LLFFBQVEsT0FBTyxDQUFDQyxxQkFBd0JBLENBQUMsWUFBWSxJQUFJLENBQUM7O2dCQUN6REMsZ0NBUUVDLDZCQUFpQkMsU0FHakJDOzs7O3dCQVhGSCxhQUFhSSxxQkFBd0JBLENBQUMsT0FBTzt3QkFDbkQsNkVBQTZFO3dCQUM3RSwwRUFBMEU7d0JBQzFFLDhEQUE4RDt3QkFDOUQsSUFBSUosVUFBVSxDQUFDLHNDQUFzQyxJQUFJLENBQUNBLFVBQVUsQ0FBQyx5QkFBeUIsRUFBRTs0QkFDOUZBLFVBQVUsQ0FBQyx5QkFBeUIsR0FBR0EsVUFBVSxDQUFDLHNDQUFzQzt3QkFDMUY7NkNBRTZDbkIsT0FBckNvQixZQUFBQSx3RkFBcUNwQixPQUFwQnFCLFNBQUFBLHVDQUFVO3dCQUNuQ2hCLE9BQU8sY0FBYyxHQUFHZ0I7d0JBRVI7OzRCQUFNLDBuQkFBMEM7Ozt3QkFBeERDLE1BQVEsY0FBUkE7d0JBQ1I7OzRCQUFPQSxJQUFJRjs7OztRQUNiOztBQUNGO0FBRUFmLE9BQU8sYUFBYSxHQUFHVyJ9\n//# sourceURL=webpack-internal:///./src/index.ts\n\n}");
9
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n setupUtils: () => (setupUtils)\n});\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _ts_generator(thisArg, body) {\n var f, y, t, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n }, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype), d = Object.defineProperty;\n return d(g, \"next\", {\n value: verb(0)\n }), d(g, \"throw\", {\n value: verb(1)\n }), d(g, \"return\", {\n value: verb(2)\n }), typeof Symbol === \"function\" && d(g, Symbol.iterator, {\n value: function() {\n return this;\n }\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(g && (g = 0, op[0] && (_ = 0)), _)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nfunction _createSpaBase(baseUrl) {\n return function() {\n return baseUrl;\n };\n}\nfunction setupPaths(config) {\n var _process_env_BUILD_VERSION;\n var error = false;\n if (!config.apiUrl) {\n console.error('initializeSpa() was called without supplying an apiUrl. This means that the application cannot communicate with the backend.');\n error = true;\n }\n if (!config.spaPath) {\n console.error('initializeSpa() was called without supplying a spaPath. This means that the application cannot properly generate urls.');\n error = true;\n }\n if (error) {\n throw new Error('One or more required properties in the basic configuration of the application was missing and the application cannot be rendered. Please see the browser console for details.');\n }\n // Object.defineProperty used to make these read-only\n Object.defineProperty(window, 'openmrsBase', {\n value: config.apiUrl,\n writable: false,\n configurable: false\n });\n Object.defineProperty(window, 'spaBase', {\n value: config.spaPath,\n writable: false,\n configurable: false\n });\n Object.defineProperty(window, 'spaEnv', {\n value: config.env || 'production',\n writable: false,\n configurable: false\n });\n Object.defineProperty(window, 'spaVersion', {\n value: (_process_env_BUILD_VERSION = \"9.0.3-pre.4550-20260417\") !== null && _process_env_BUILD_VERSION !== void 0 ? _process_env_BUILD_VERSION : 'local',\n writable: false,\n configurable: false\n });\n var spaBaseWithSlash = window.spaBase.endsWith('/') ? window.spaBase : window.spaBase + '/';\n Object.defineProperty(window, 'getOpenmrsSpaBase', {\n value: _createSpaBase(spaBaseWithSlash),\n writable: false,\n configurable: false\n });\n}\nfunction setupUtils() {\n Object.defineProperty(window, 'copyText', {\n value: function value(source) {\n var sel = window.getSelection();\n if (sel) {\n var r = document.createRange();\n r.selectNode(source);\n sel.removeAllRanges();\n sel.addRange(r);\n document.execCommand('copy');\n sel.removeAllRanges();\n }\n },\n writable: false,\n configurable: false\n });\n}\nfunction wireSpaPaths() {\n var baseElement = document.createElement('base');\n var baseHref = window.getOpenmrsSpaBase();\n baseElement.href = baseHref;\n document.head.appendChild(baseElement);\n __webpack_require__.p = baseHref;\n}\nvar initPromise = null;\n/**\n * Initializes the OpenMRS Frontend App Shell.\n * @param config The global configuration to apply.\n */ function initializeSpa(config) {\n if (initPromise) {\n return initPromise;\n }\n setupUtils();\n setupPaths(config);\n wireSpaPaths();\n initPromise = Promise.resolve(__webpack_require__.I('default')).then(function() {\n return _async_to_generator(function() {\n var shareScope, _config_configUrls, configUrls, _config_offline, offline, run;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n shareScope = __webpack_require__.S.default;\n // MF will deduplicate these as they're aliased at build time, but at runtime\n // apps try to load `@openmrs/esm-framework`, so here we provide a runtime\n // alias that resolves to the \"internal\" copy of the framework\n if (shareScope['@openmrs/esm-framework/src/internal'] && !shareScope['@openmrs/esm-framework']) {\n shareScope['@openmrs/esm-framework'] = shareScope['@openmrs/esm-framework/src/internal'];\n }\n _config_configUrls = config.configUrls, configUrls = _config_configUrls === void 0 ? [] : _config_configUrls, _config_offline = config.offline, offline = _config_offline === void 0 ? false : _config_offline;\n Object.defineProperty(window, 'offlineEnabled', {\n value: offline,\n writable: false,\n configurable: false\n });\n return [\n 4,\n Promise.all(/* import() */ [__webpack_require__.e(\"default-webpack_sharing_consume_default_react_react\"), __webpack_require__.e(\"default-webpack_sharing_consume_default_react-dom_react-dom\"), __webpack_require__.e(\"default-node_modules_carbon_icons-react_es_generated_bucket-11_js-node_modules_carbon_icons-r-63ea09\"), __webpack_require__.e(\"default-framework_esm-framework_dist_internal_js\"), __webpack_require__.e(\"default-vendors-node_modules_i18next-browser-languagedetector_dist_esm_i18nextBrowserLanguage-1ba50a\"), __webpack_require__.e(\"default-src_run_ts\")]).then(__webpack_require__.bind(__webpack_require__, \"./src/run.ts\"))\n ];\n case 1:\n run = _state.sent().run;\n return [\n 2,\n run(configUrls)\n ];\n }\n });\n })();\n });\n return initPromise;\n}\nObject.defineProperty(window, 'initializeSpa', {\n value: initializeSpa,\n writable: false,\n configurable: false\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9zaGVsbC9lc20tYXBwLXNoZWxsL3NyYy9pbmRleC50cyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi9zcmMvaW5kZXgudHM/OGNjNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNwYUNvbmZpZyB9IGZyb20gJ0BvcGVubXJzL2VzbS1mcmFtZXdvcmsvc3JjL2ludGVybmFsJztcblxuZnVuY3Rpb24gX2NyZWF0ZVNwYUJhc2UoYmFzZVVybDogc3RyaW5nKSB7XG4gIHJldHVybiAoKSA9PiBiYXNlVXJsO1xufVxuXG5mdW5jdGlvbiBzZXR1cFBhdGhzKGNvbmZpZzogU3BhQ29uZmlnKSB7XG4gIGxldCBlcnJvciA9IGZhbHNlO1xuICBpZiAoIWNvbmZpZy5hcGlVcmwpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgJ2luaXRpYWxpemVTcGEoKSB3YXMgY2FsbGVkIHdpdGhvdXQgc3VwcGx5aW5nIGFuIGFwaVVybC4gVGhpcyBtZWFucyB0aGF0IHRoZSBhcHBsaWNhdGlvbiBjYW5ub3QgY29tbXVuaWNhdGUgd2l0aCB0aGUgYmFja2VuZC4nLFxuICAgICk7XG4gICAgZXJyb3IgPSB0cnVlO1xuICB9XG5cbiAgaWYgKCFjb25maWcuc3BhUGF0aCkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAnaW5pdGlhbGl6ZVNwYSgpIHdhcyBjYWxsZWQgd2l0aG91dCBzdXBwbHlpbmcgYSBzcGFQYXRoLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGNhbm5vdCBwcm9wZXJseSBnZW5lcmF0ZSB1cmxzLicsXG4gICAgKTtcbiAgICBlcnJvciA9IHRydWU7XG4gIH1cblxuICBpZiAoZXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnT25lIG9yIG1vcmUgcmVxdWlyZWQgcHJvcGVydGllcyBpbiB0aGUgYmFzaWMgY29uZmlndXJhdGlvbiBvZiB0aGUgYXBwbGljYXRpb24gd2FzIG1pc3NpbmcgYW5kIHRoZSBhcHBsaWNhdGlvbiBjYW5ub3QgYmUgcmVuZGVyZWQuIFBsZWFzZSBzZWUgdGhlIGJyb3dzZXIgY29uc29sZSBmb3IgZGV0YWlscy4nLFxuICAgICk7XG4gIH1cblxuICAvLyBPYmplY3QuZGVmaW5lUHJvcGVydHkgdXNlZCB0byBtYWtlIHRoZXNlIHJlYWQtb25seVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCAnb3Blbm1yc0Jhc2UnLCB7XG4gICAgdmFsdWU6IGNvbmZpZy5hcGlVcmwsXG4gICAgd3JpdGFibGU6IGZhbHNlLFxuICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gIH0pO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCAnc3BhQmFzZScsIHtcbiAgICB2YWx1ZTogY29uZmlnLnNwYVBhdGgsXG4gICAgd3JpdGFibGU6IGZhbHNlLFxuICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gIH0pO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCAnc3BhRW52Jywge1xuICAgIHZhbHVlOiBjb25maWcuZW52IHx8ICdwcm9kdWN0aW9uJyxcbiAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgfSk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5kb3csICdzcGFWZXJzaW9uJywge1xuICAgIHZhbHVlOiBwcm9jZXNzLmVudi5CVUlMRF9WRVJTSU9OID8/ICdsb2NhbCcsXG4gICAgd3JpdGFibGU6IGZhbHNlLFxuICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0IHNwYUJhc2VXaXRoU2xhc2ggPSB3aW5kb3cuc3BhQmFzZS5lbmRzV2l0aCgnLycpID8gd2luZG93LnNwYUJhc2UgOiB3aW5kb3cuc3BhQmFzZSArICcvJztcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdywgJ2dldE9wZW5tcnNTcGFCYXNlJywge1xuICAgIHZhbHVlOiBfY3JlYXRlU3BhQmFzZShzcGFCYXNlV2l0aFNsYXNoKSxcbiAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cFV0aWxzKCkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCAnY29weVRleHQnLCB7XG4gICAgdmFsdWU6IChzb3VyY2U6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICAgIGlmIChzZWwpIHtcbiAgICAgICAgY29uc3QgciA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICAgIHIuc2VsZWN0Tm9kZShzb3VyY2UpO1xuICAgICAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICAgIHNlbC5hZGRSYW5nZShyKTtcbiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTtcbiAgICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgfVxuICAgIH0sXG4gICAgd3JpdGFibGU6IGZhbHNlLFxuICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gIH0pO1xufVxuXG5mdW5jdGlvbiB3aXJlU3BhUGF0aHMoKSB7XG4gIGNvbnN0IGJhc2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYmFzZScpO1xuICBjb25zdCBiYXNlSHJlZiA9IHdpbmRvdy5nZXRPcGVubXJzU3BhQmFzZSgpO1xuICBiYXNlRWxlbWVudC5ocmVmID0gYmFzZUhyZWY7XG4gIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoYmFzZUVsZW1lbnQpO1xuICBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyA9IGJhc2VIcmVmO1xufVxuXG5sZXQgaW5pdFByb21pc2U6IFByb21pc2U8dm9pZD4gfCBudWxsID0gbnVsbDtcblxuLyoqXG4gKiBJbml0aWFsaXplcyB0aGUgT3Blbk1SUyBGcm9udGVuZCBBcHAgU2hlbGwuXG4gKiBAcGFyYW0gY29uZmlnIFRoZSBnbG9iYWwgY29uZmlndXJhdGlvbiB0byBhcHBseS5cbiAqL1xuZnVuY3Rpb24gaW5pdGlhbGl6ZVNwYShjb25maWc6IFNwYUNvbmZpZykge1xuICBpZiAoaW5pdFByb21pc2UpIHtcbiAgICByZXR1cm4gaW5pdFByb21pc2U7XG4gIH1cblxuICBzZXR1cFV0aWxzKCk7XG4gIHNldHVwUGF0aHMoY29uZmlnKTtcbiAgd2lyZVNwYVBhdGhzKCk7XG4gIGluaXRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKF9fd2VicGFja19pbml0X3NoYXJpbmdfXygnZGVmYXVsdCcpKS50aGVuKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzaGFyZVNjb3BlID0gX193ZWJwYWNrX3NoYXJlX3Njb3Blc19fLmRlZmF1bHQ7XG4gICAgLy8gTUYgd2lsbCBkZWR1cGxpY2F0ZSB0aGVzZSBhcyB0aGV5J3JlIGFsaWFzZWQgYXQgYnVpbGQgdGltZSwgYnV0IGF0IHJ1bnRpbWVcbiAgICAvLyBhcHBzIHRyeSB0byBsb2FkIGBAb3Blbm1ycy9lc20tZnJhbWV3b3JrYCwgc28gaGVyZSB3ZSBwcm92aWRlIGEgcnVudGltZVxuICAgIC8vIGFsaWFzIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIFwiaW50ZXJuYWxcIiBjb3B5IG9mIHRoZSBmcmFtZXdvcmtcbiAgICBpZiAoc2hhcmVTY29wZVsnQG9wZW5tcnMvZXNtLWZyYW1ld29yay9zcmMvaW50ZXJuYWwnXSAmJiAhc2hhcmVTY29wZVsnQG9wZW5tcnMvZXNtLWZyYW1ld29yayddKSB7XG4gICAgICBzaGFyZVNjb3BlWydAb3Blbm1ycy9lc20tZnJhbWV3b3JrJ10gPSBzaGFyZVNjb3BlWydAb3Blbm1ycy9lc20tZnJhbWV3b3JrL3NyYy9pbnRlcm5hbCddO1xuICAgIH1cblxuICAgIGNvbnN0IHsgY29uZmlnVXJscyA9IFtdLCBvZmZsaW5lID0gZmFsc2UgfSA9IGNvbmZpZztcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCAnb2ZmbGluZUVuYWJsZWQnLCB7XG4gICAgICB2YWx1ZTogb2ZmbGluZSxcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgfSk7XG5cbiAgICBjb25zdCB7IHJ1biB9ID0gYXdhaXQgaW1wb3J0KC8qIHdlYnBhY2tQcmVsb2FkOiB0cnVlICovICcuL3J1bicpO1xuICAgIHJldHVybiBydW4oY29uZmlnVXJscyk7XG4gIH0pO1xuICByZXR1cm4gaW5pdFByb21pc2U7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5kb3csICdpbml0aWFsaXplU3BhJywge1xuICB2YWx1ZTogaW5pdGlhbGl6ZVNwYSxcbiAgd3JpdGFibGU6IGZhbHNlLFxuICBjb25maWd1cmFibGU6IGZhbHNlLFxufSk7XG4iXSwibmFtZXMiOlsiX2NyZWF0ZVNwYUJhc2UiLCJiYXNlVXJsIiwic2V0dXBQYXRocyIsImNvbmZpZyIsIl9wcm9jZXNzX2Vudl9CVUlMRF9WRVJTSU9OIiwiZXJyb3IiLCJjb25zb2xlIiwiRXJyb3IiLCJPYmplY3QiLCJ3aW5kb3ciLCJzcGFCYXNlV2l0aFNsYXNoIiwic2V0dXBVdGlscyIsInZhbHVlIiwic291cmNlIiwic2VsIiwiciIsImRvY3VtZW50Iiwid2lyZVNwYVBhdGhzIiwiYmFzZUVsZW1lbnQiLCJiYXNlSHJlZiIsIl9fd2VicGFja19wdWJsaWNfcGF0aF9fIiwiaW5pdFByb21pc2UiLCJpbml0aWFsaXplU3BhIiwiUHJvbWlzZSIsIl9fd2VicGFja19pbml0X3NoYXJpbmdfXyIsInNoYXJlU2NvcGUiLCJjb25maWdVcmxzIiwib2ZmbGluZSIsInJ1biIsIl9fd2VicGFja19zaGFyZV9zY29wZXNfXyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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\n//# sourceURL=webpack-internal:///./src/index.ts\n\n}");
10
10
 
11
11
  },
12
12
  "@module-federation/runtime/rspack.js!=!data:text/javascript,import __module_federation_bundler_runtime__ from \"/home/runner/work/openmrs-esm-core/openmrs-esm-core/node_modules/@module-federation/webpack-bundler-runtime/dist/index.cjs.cjs\";const __module_federation_runtime_plugins__ = [].filter(({ plugin }) => plugin).map(({ plugin, params }) => plugin(params));const __module_federation_remote_infos__ = {};const __module_federation_container_name__ = \"@openmrs/esm-app-shell\";const __module_federation_share_strategy__ = \"version-first\";if((__webpack_require__.initializeSharingData||__webpack_require__.initializeExposesData)&&__webpack_require__.federation){var _ref,_ref1,_ref2,_ref3,_ref4;var __webpack_require___remotesLoadingData,__webpack_require___remotesLoadingData1,__webpack_require___initializeSharingData,__webpack_require___consumesLoadingData,__webpack_require___consumesLoadingData1,__webpack_require___initializeExposesData,__webpack_require___consumesLoadingData2;const override=(obj,key,value)=>{if(!obj)return;if(obj[key])obj[key]=value};const merge=(obj,key,fn)=>{const value=fn();if(Array.isArray(value)){var _obj,_key,_;(_=(_obj=obj)[_key=key])!==null&&_!==void 0?_:_obj[_key]=[];obj[key].push(...value)}else if(typeof value===\"object\"&&value!==null){var _obj1,_key1,_1;(_1=(_obj1=obj)[_key1=key])!==null&&_1!==void 0?_1:_obj1[_key1]={};Object.assign(obj[key],value)}};const early=(obj,key,initial)=>{var _obj,_key,_;(_=(_obj=obj)[_key=key])!==null&&_!==void 0?_:_obj[_key]=initial()};const remotesLoadingChunkMapping=(_ref=(__webpack_require___remotesLoadingData=__webpack_require__.remotesLoadingData)===null||__webpack_require___remotesLoadingData===void 0?void 0:__webpack_require___remotesLoadingData.chunkMapping)!==null&&_ref!==void 0?_ref:{};const remotesLoadingModuleIdToRemoteDataMapping=(_ref1=(__webpack_require___remotesLoadingData1=__webpack_require__.remotesLoadingData)===null||__webpack_require___remotesLoadingData1===void 0?void 0:__webpack_require___remotesLoadingData1.moduleIdToRemoteDataMapping)!==null&&_ref1!==void 0?_ref1:{};const initializeSharingScopeToInitDataMapping=(_ref2=(__webpack_require___initializeSharingData=__webpack_require__.initializeSharingData)===null||__webpack_require___initializeSharingData===void 0?void 0:__webpack_require___initializeSharingData.scopeToSharingDataMapping)!==null&&_ref2!==void 0?_ref2:{};const consumesLoadingChunkMapping=(_ref3=(__webpack_require___consumesLoadingData=__webpack_require__.consumesLoadingData)===null||__webpack_require___consumesLoadingData===void 0?void 0:__webpack_require___consumesLoadingData.chunkMapping)!==null&&_ref3!==void 0?_ref3:{};const consumesLoadingModuleToConsumeDataMapping=(_ref4=(__webpack_require___consumesLoadingData1=__webpack_require__.consumesLoadingData)===null||__webpack_require___consumesLoadingData1===void 0?void 0:__webpack_require___consumesLoadingData1.moduleIdToConsumeDataMapping)!==null&&_ref4!==void 0?_ref4:{};const consumesLoadinginstalledModules={};const initializeSharingInitPromises=[];const initializeSharingInitTokens={};const containerShareScope=(__webpack_require___initializeExposesData=__webpack_require__.initializeExposesData)===null||__webpack_require___initializeExposesData===void 0?void 0:__webpack_require___initializeExposesData.shareScope;for(const key in __module_federation_bundler_runtime__){__webpack_require__.federation[key]=__module_federation_bundler_runtime__[key]}early(__webpack_require__.federation,\"consumesLoadingModuleToHandlerMapping\",()=>{const consumesLoadingModuleToHandlerMapping={};for(let[moduleId,data]of Object.entries(consumesLoadingModuleToConsumeDataMapping)){consumesLoadingModuleToHandlerMapping[moduleId]={getter:data.fallback,shareInfo:{shareConfig:{fixedDependencies:false,requiredVersion:data.requiredVersion,strictVersion:data.strictVersion,singleton:data.singleton,eager:data.eager},scope:[data.shareScope]},shareKey:data.shareKey}}return consumesLoadingModuleToHandlerMapping});early(__webpack_require__.federation,\"initOptions\",()=>({}));early(__webpack_require__.federation.initOptions,\"name\",()=>__module_federation_container_name__);early(__webpack_require__.federation.initOptions,\"shareStrategy\",()=>__module_federation_share_strategy__);early(__webpack_require__.federation.initOptions,\"shared\",()=>{const shared={};for(let[scope,stages]of Object.entries(initializeSharingScopeToInitDataMapping)){for(let stage of stages){if(typeof stage===\"object\"&&stage!==null){const{name,version,factory,eager,singleton,requiredVersion,strictVersion}=stage;const shareConfig={};const isValidValue=function(val){return typeof val!==\"undefined\"};if(isValidValue(singleton)){shareConfig.singleton=singleton}if(isValidValue(requiredVersion)){shareConfig.requiredVersion=requiredVersion}if(isValidValue(eager)){shareConfig.eager=eager}if(isValidValue(strictVersion)){shareConfig.strictVersion=strictVersion}const options={version,scope:[scope],shareConfig,get:factory};if(shared[name]){shared[name].push(options)}else{shared[name]=[options]}}}}return shared});merge(__webpack_require__.federation.initOptions,\"remotes\",()=>Object.values(__module_federation_remote_infos__).flat().filter(remote=>remote.externalType===\"script\"));merge(__webpack_require__.federation.initOptions,\"plugins\",()=>__module_federation_runtime_plugins__);early(__webpack_require__.federation,\"bundlerRuntimeOptions\",()=>({}));early(__webpack_require__.federation.bundlerRuntimeOptions,\"remotes\",()=>({}));early(__webpack_require__.federation.bundlerRuntimeOptions.remotes,\"chunkMapping\",()=>remotesLoadingChunkMapping);early(__webpack_require__.federation.bundlerRuntimeOptions.remotes,\"remoteInfos\",()=>__module_federation_remote_infos__);early(__webpack_require__.federation.bundlerRuntimeOptions.remotes,\"idToExternalAndNameMapping\",()=>{const remotesLoadingIdToExternalAndNameMappingMapping={};for(let[moduleId,data]of Object.entries(remotesLoadingModuleIdToRemoteDataMapping)){remotesLoadingIdToExternalAndNameMappingMapping[moduleId]=[data.shareScope,data.name,data.externalModuleId,data.remoteName]}return remotesLoadingIdToExternalAndNameMappingMapping});early(__webpack_require__.federation.bundlerRuntimeOptions.remotes,\"webpackRequire\",()=>__webpack_require__);merge(__webpack_require__.federation.bundlerRuntimeOptions.remotes,\"idToRemoteMap\",()=>{const idToRemoteMap={};for(let[id,remoteData]of Object.entries(remotesLoadingModuleIdToRemoteDataMapping)){const info=__module_federation_remote_infos__[remoteData.remoteName];if(info)idToRemoteMap[id]=info}return idToRemoteMap});override(__webpack_require__,\"S\",__webpack_require__.federation.bundlerRuntime.S);if(__webpack_require__.federation.attachShareScopeMap){__webpack_require__.federation.attachShareScopeMap(__webpack_require__)}override(__webpack_require__.f,\"remotes\",(chunkId,promises)=>__webpack_require__.federation.bundlerRuntime.remotes({chunkId,promises,chunkMapping:remotesLoadingChunkMapping,idToExternalAndNameMapping:__webpack_require__.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping,idToRemoteMap:__webpack_require__.federation.bundlerRuntimeOptions.remotes.idToRemoteMap,webpackRequire:__webpack_require__}));override(__webpack_require__.f,\"consumes\",(chunkId,promises)=>__webpack_require__.federation.bundlerRuntime.consumes({chunkId,promises,chunkMapping:consumesLoadingChunkMapping,moduleToHandlerMapping:__webpack_require__.federation.consumesLoadingModuleToHandlerMapping,installedModules:consumesLoadinginstalledModules,webpackRequire:__webpack_require__}));override(__webpack_require__,\"I\",(name,initScope)=>__webpack_require__.federation.bundlerRuntime.I({shareScopeName:name,initScope,initPromises:initializeSharingInitPromises,initTokens:initializeSharingInitTokens,webpackRequire:__webpack_require__}));override(__webpack_require__,\"initContainer\",(shareScope,initScope,remoteEntryInitOptions)=>__webpack_require__.federation.bundlerRuntime.initContainerEntry({shareScope,initScope,remoteEntryInitOptions,shareScopeKey:containerShareScope,webpackRequire:__webpack_require__}));override(__webpack_require__,\"getContainer\",(module1,getScope)=>{var moduleMap=__webpack_require__.initializeExposesData.moduleMap;__webpack_require__.R=getScope;getScope=Object.prototype.hasOwnProperty.call(moduleMap,module1)?moduleMap[module1]():Promise.resolve().then(()=>{throw new Error('Module \"'+module1+'\" does not exist in container.')});__webpack_require__.R=undefined;return getScope});__webpack_require__.federation.instance=__webpack_require__.federation.runtime.init(__webpack_require__.federation.initOptions);if((__webpack_require___consumesLoadingData2=__webpack_require__.consumesLoadingData)===null||__webpack_require___consumesLoadingData2===void 0?void 0:__webpack_require___consumesLoadingData2.initialConsumes){__webpack_require__.federation.bundlerRuntime.installInitialConsumes({webpackRequire:__webpack_require__,installedModules:consumesLoadinginstalledModules,initialConsumes:__webpack_require__.consumesLoadingData.initialConsumes,moduleToHandlerMapping:__webpack_require__.federation.consumesLoadingModuleToHandlerMapping})}}"(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
@@ -36,10 +36,6 @@ eval("{\n\nconst FEDERATION_SUPPORTED_TYPES = ['script'];\n\nexports.FEDERATION_
36
36
  "../../../node_modules/@module-federation/webpack-bundler-runtime/dist/index.cjs.cjs"(module, __unused_rspack_exports, __webpack_require__) {
37
37
  eval("{\n\nvar runtime = __webpack_require__(\"../../../node_modules/@module-federation/runtime/dist/index.cjs.cjs\");\nvar constant = __webpack_require__(\"../../../node_modules/@module-federation/webpack-bundler-runtime/dist/constant.cjs.cjs\");\nvar sdk = __webpack_require__(\"../../../node_modules/@module-federation/sdk/dist/index.cjs.cjs\");\n\nfunction _interopNamespaceDefault(e) {\n var n = Object.create(null);\n if (e) {\n for (var k in e) {\n n[k] = e[k];\n }\n }\n n.default = e;\n return Object.freeze(n);\n}\n\nvar runtime__namespace = /*#__PURE__*/_interopNamespaceDefault(runtime);\n\nfunction attachShareScopeMap(webpackRequire) {\n if (!webpackRequire.S ||\n webpackRequire.federation.hasAttachShareScopeMap ||\n !webpackRequire.federation.instance ||\n !webpackRequire.federation.instance.shareScopeMap) {\n return;\n }\n webpackRequire.S = webpackRequire.federation.instance.shareScopeMap;\n webpackRequire.federation.hasAttachShareScopeMap = true;\n}\n\nfunction updateConsumeOptions(options) {\n const { webpackRequire, moduleToHandlerMapping } = options;\n const { consumesLoadingData, initializeSharingData } = webpackRequire;\n if (consumesLoadingData && !consumesLoadingData._updated) {\n const { moduleIdToConsumeDataMapping: updatedModuleIdToConsumeDataMapping = {}, initialConsumes: updatedInitialConsumes = [], chunkMapping: updatedChunkMapping = {}, } = consumesLoadingData;\n Object.entries(updatedModuleIdToConsumeDataMapping).forEach(([id, data]) => {\n if (!moduleToHandlerMapping[id]) {\n moduleToHandlerMapping[id] = {\n getter: data.fallback,\n shareInfo: {\n shareConfig: {\n requiredVersion: data.requiredVersion,\n strictVersion: data.strictVersion,\n singleton: data.singleton,\n eager: data.eager,\n layer: data.layer,\n },\n scope: Array.isArray(data.shareScope)\n ? data.shareScope\n : [data.shareScope || 'default'],\n },\n shareKey: data.shareKey,\n };\n }\n });\n if ('initialConsumes' in options) {\n const { initialConsumes = [] } = options;\n updatedInitialConsumes.forEach((id) => {\n if (!initialConsumes.includes(id)) {\n initialConsumes.push(id);\n }\n });\n }\n if ('chunkMapping' in options) {\n const { chunkMapping = {} } = options;\n Object.entries(updatedChunkMapping).forEach(([id, chunkModules]) => {\n if (!chunkMapping[id]) {\n chunkMapping[id] = [];\n }\n chunkModules.forEach((moduleId) => {\n if (!chunkMapping[id].includes(moduleId)) {\n chunkMapping[id].push(moduleId);\n }\n });\n });\n }\n consumesLoadingData._updated = 1;\n }\n if (initializeSharingData && !initializeSharingData._updated) {\n const { federation } = webpackRequire;\n if (!federation.instance ||\n !initializeSharingData.scopeToSharingDataMapping) {\n return;\n }\n const shared = {};\n for (let [scope, stages] of Object.entries(initializeSharingData.scopeToSharingDataMapping)) {\n for (let stage of stages) {\n if (typeof stage === 'object' && stage !== null) {\n const { name, version, factory, eager, singleton, requiredVersion, strictVersion, } = stage;\n const shareConfig = {\n requiredVersion: `^${version}`,\n };\n const isValidValue = function (val) {\n return typeof val !== 'undefined';\n };\n if (isValidValue(singleton)) {\n shareConfig.singleton = singleton;\n }\n if (isValidValue(requiredVersion)) {\n shareConfig.requiredVersion = requiredVersion;\n }\n if (isValidValue(eager)) {\n shareConfig.eager = eager;\n }\n if (isValidValue(strictVersion)) {\n shareConfig.strictVersion = strictVersion;\n }\n const options = {\n version,\n scope: [scope],\n shareConfig,\n get: factory,\n };\n if (shared[name]) {\n shared[name].push(options);\n }\n else {\n shared[name] = [options];\n }\n }\n }\n }\n federation.instance.registerShared(shared);\n initializeSharingData._updated = 1;\n }\n}\nfunction updateRemoteOptions(options) {\n const { webpackRequire, idToExternalAndNameMapping = {}, idToRemoteMap = {}, chunkMapping = {}, } = options;\n const { remotesLoadingData } = webpackRequire;\n const remoteInfos = webpackRequire.federation?.bundlerRuntimeOptions?.remotes?.remoteInfos;\n if (!remotesLoadingData || remotesLoadingData._updated || !remoteInfos) {\n return;\n }\n const { chunkMapping: updatedChunkMapping, moduleIdToRemoteDataMapping } = remotesLoadingData;\n if (!updatedChunkMapping || !moduleIdToRemoteDataMapping) {\n return;\n }\n for (let [moduleId, data] of Object.entries(moduleIdToRemoteDataMapping)) {\n if (!idToExternalAndNameMapping[moduleId]) {\n idToExternalAndNameMapping[moduleId] = [\n data.shareScope,\n data.name,\n data.externalModuleId,\n ];\n }\n if (!idToRemoteMap[moduleId] && remoteInfos[data.remoteName]) {\n const items = remoteInfos[data.remoteName];\n idToRemoteMap[moduleId] ||= [];\n items.forEach((item) => {\n if (!idToRemoteMap[moduleId].includes(item)) {\n idToRemoteMap[moduleId].push(item);\n }\n });\n }\n }\n if (chunkMapping) {\n Object.entries(updatedChunkMapping).forEach(([id, chunkModules]) => {\n if (!chunkMapping[id]) {\n chunkMapping[id] = [];\n }\n chunkModules.forEach((moduleId) => {\n if (!chunkMapping[id].includes(moduleId)) {\n chunkMapping[id].push(moduleId);\n }\n });\n });\n }\n remotesLoadingData._updated = 1;\n}\n\nfunction remotes(options) {\n updateRemoteOptions(options);\n const { chunkId, promises, webpackRequire, chunkMapping, idToExternalAndNameMapping, idToRemoteMap, } = options;\n attachShareScopeMap(webpackRequire);\n if (webpackRequire.o(chunkMapping, chunkId)) {\n chunkMapping[chunkId].forEach((id) => {\n let getScope = webpackRequire.R;\n if (!getScope) {\n getScope = [];\n }\n const data = idToExternalAndNameMapping[id];\n const remoteInfos = idToRemoteMap[id] || [];\n // @ts-ignore seems not work\n if (getScope.indexOf(data) >= 0) {\n return;\n }\n // @ts-ignore seems not work\n getScope.push(data);\n if (data.p) {\n return promises.push(data.p);\n }\n const onError = (error) => {\n if (!error) {\n error = new Error('Container missing');\n }\n if (typeof error.message === 'string') {\n error.message += `\\nwhile loading \"${data[1]}\" from ${data[2]}`;\n }\n webpackRequire.m[id] = () => {\n throw error;\n };\n data.p = 0;\n };\n const handleFunction = (fn, arg1, arg2, d, next, first) => {\n try {\n const promise = fn(arg1, arg2);\n if (promise && promise.then) {\n const p = promise.then((result) => next(result, d), onError);\n if (first) {\n promises.push((data.p = p));\n }\n else {\n return p;\n }\n }\n else {\n return next(promise, d, first);\n }\n }\n catch (error) {\n onError(error);\n }\n };\n const onExternal = (external, _, first) => external\n ? handleFunction(webpackRequire.I, data[0], 0, external, onInitialized, first)\n : onError();\n // eslint-disable-next-line no-var\n var onInitialized = (_, external, first) => handleFunction(external.get, data[1], getScope, 0, onFactory, first);\n // eslint-disable-next-line no-var\n var onFactory = (factory) => {\n data.p = 1;\n webpackRequire.m[id] = (module) => {\n module.exports = factory();\n };\n };\n const onRemoteLoaded = () => {\n try {\n const remoteName = sdk.decodeName(remoteInfos[0].name, sdk.ENCODE_NAME_PREFIX);\n const remoteModuleName = remoteName + data[1].slice(1);\n const instance = webpackRequire.federation.instance;\n const loadRemote = () => webpackRequire.federation.instance.loadRemote(remoteModuleName, {\n loadFactory: false,\n from: 'build',\n });\n if (instance.options.shareStrategy === 'version-first') {\n return Promise.all(instance.sharedHandler.initializeSharing(data[0])).then(() => {\n return loadRemote();\n });\n }\n return loadRemote();\n }\n catch (error) {\n onError(error);\n }\n };\n const useRuntimeLoad = remoteInfos.length === 1 &&\n constant.FEDERATION_SUPPORTED_TYPES.includes(remoteInfos[0].externalType) &&\n remoteInfos[0].name;\n if (useRuntimeLoad) {\n handleFunction(onRemoteLoaded, data[2], 0, 0, onFactory, 1);\n }\n else {\n handleFunction(webpackRequire, data[2], 0, 0, onExternal, 1);\n }\n });\n }\n}\n\nfunction consumes(options) {\n updateConsumeOptions(options);\n const { chunkId, promises, installedModules, webpackRequire, chunkMapping, moduleToHandlerMapping, } = options;\n attachShareScopeMap(webpackRequire);\n if (webpackRequire.o(chunkMapping, chunkId)) {\n chunkMapping[chunkId].forEach((id) => {\n if (webpackRequire.o(installedModules, id)) {\n return promises.push(installedModules[id]);\n }\n const onFactory = (factory) => {\n installedModules[id] = 0;\n webpackRequire.m[id] = (module) => {\n delete webpackRequire.c[id];\n const result = factory();\n // Add layer property from shareConfig if available\n const { shareInfo } = moduleToHandlerMapping[id];\n if (shareInfo?.shareConfig?.layer &&\n result &&\n typeof result === 'object') {\n try {\n // Only set layer if it's not already defined or if it's undefined\n if (!result.hasOwnProperty('layer') ||\n result.layer === undefined) {\n result.layer = shareInfo.shareConfig.layer;\n }\n }\n catch (e) {\n // Ignore if layer property is read-only\n }\n }\n module.exports = result;\n };\n };\n const onError = (error) => {\n delete installedModules[id];\n webpackRequire.m[id] = (module) => {\n delete webpackRequire.c[id];\n throw error;\n };\n };\n try {\n const federationInstance = webpackRequire.federation.instance;\n if (!federationInstance) {\n throw new Error('Federation instance not found!');\n }\n const { shareKey, getter, shareInfo } = moduleToHandlerMapping[id];\n const promise = federationInstance\n .loadShare(shareKey, { customShareInfo: shareInfo })\n .then((factory) => {\n if (factory === false) {\n return getter();\n }\n return factory;\n });\n if (promise.then) {\n promises.push((installedModules[id] = promise.then(onFactory).catch(onError)));\n }\n else {\n // @ts-ignore maintain previous logic\n onFactory(promise);\n }\n }\n catch (e) {\n onError(e);\n }\n });\n }\n}\n\nfunction initializeSharing({ shareScopeName, webpackRequire, initPromises, initTokens, initScope, }) {\n const shareScopeKeys = Array.isArray(shareScopeName)\n ? shareScopeName\n : [shareScopeName];\n var initializeSharingPromises = [];\n var _initializeSharing = function (shareScopeKey) {\n if (!initScope)\n initScope = [];\n const mfInstance = webpackRequire.federation.instance;\n // handling circular init calls\n var initToken = initTokens[shareScopeKey];\n if (!initToken)\n initToken = initTokens[shareScopeKey] = { from: mfInstance.name };\n if (initScope.indexOf(initToken) >= 0)\n return;\n initScope.push(initToken);\n const promise = initPromises[shareScopeKey];\n if (promise)\n return promise;\n var warn = (msg) => typeof console !== 'undefined' && console.warn && console.warn(msg);\n var initExternal = (id) => {\n var handleError = (err) => warn('Initialization of sharing external failed: ' + err);\n try {\n var module = webpackRequire(id);\n if (!module)\n return;\n var initFn = (module) => module &&\n module.init &&\n // @ts-ignore compat legacy mf shared behavior\n module.init(webpackRequire.S[shareScopeKey], initScope, {\n shareScopeMap: webpackRequire.S || {},\n shareScopeKeys: shareScopeName,\n });\n if (module.then)\n return promises.push(module.then(initFn, handleError));\n var initResult = initFn(module);\n // @ts-ignore\n if (initResult && typeof initResult !== 'boolean' && initResult.then)\n // @ts-ignore\n return promises.push(initResult['catch'](handleError));\n }\n catch (err) {\n handleError(err);\n }\n };\n const promises = mfInstance.initializeSharing(shareScopeKey, {\n strategy: mfInstance.options.shareStrategy,\n initScope,\n from: 'build',\n });\n attachShareScopeMap(webpackRequire);\n const bundlerRuntimeRemotesOptions = webpackRequire.federation.bundlerRuntimeOptions.remotes;\n if (bundlerRuntimeRemotesOptions) {\n Object.keys(bundlerRuntimeRemotesOptions.idToRemoteMap).forEach((moduleId) => {\n const info = bundlerRuntimeRemotesOptions.idToRemoteMap[moduleId];\n const externalModuleId = bundlerRuntimeRemotesOptions.idToExternalAndNameMapping[moduleId][2];\n if (info.length > 1) {\n initExternal(externalModuleId);\n }\n else if (info.length === 1) {\n const remoteInfo = info[0];\n if (!constant.FEDERATION_SUPPORTED_TYPES.includes(remoteInfo.externalType)) {\n initExternal(externalModuleId);\n }\n }\n });\n }\n if (!promises.length) {\n return (initPromises[shareScopeKey] = true);\n }\n return (initPromises[shareScopeKey] = Promise.all(promises).then(() => (initPromises[shareScopeKey] = true)));\n };\n shareScopeKeys.forEach((key) => {\n initializeSharingPromises.push(_initializeSharing(key));\n });\n return Promise.all(initializeSharingPromises).then(() => true);\n}\n\nfunction handleInitialConsumes(options) {\n const { moduleId, moduleToHandlerMapping, webpackRequire } = options;\n const federationInstance = webpackRequire.federation.instance;\n if (!federationInstance) {\n throw new Error('Federation instance not found!');\n }\n const { shareKey, shareInfo } = moduleToHandlerMapping[moduleId];\n try {\n return federationInstance.loadShareSync(shareKey, {\n customShareInfo: shareInfo,\n });\n }\n catch (err) {\n console.error('loadShareSync failed! The function should not be called unless you set \"eager:true\". If you do not set it, and encounter this issue, you can check whether an async boundary is implemented.');\n console.error('The original error message is as follows: ');\n throw err;\n }\n}\nfunction installInitialConsumes(options) {\n const { webpackRequire } = options;\n updateConsumeOptions(options);\n const { initialConsumes, moduleToHandlerMapping, installedModules } = options;\n initialConsumes.forEach((id) => {\n webpackRequire.m[id] = (module) => {\n // Handle scenario when module is used synchronously\n installedModules[id] = 0;\n delete webpackRequire.c[id];\n const factory = handleInitialConsumes({\n moduleId: id,\n moduleToHandlerMapping,\n webpackRequire,\n });\n if (typeof factory !== 'function') {\n throw new Error(`Shared module is not available for eager consumption: ${id}`);\n }\n const result = factory();\n // Add layer property from shareConfig if available\n const { shareInfo } = moduleToHandlerMapping[id];\n if (shareInfo?.shareConfig?.layer &&\n result &&\n typeof result === 'object') {\n try {\n // Only set layer if it's not already defined or if it's undefined\n if (!result.hasOwnProperty('layer') ||\n result.layer === undefined) {\n result.layer = shareInfo.shareConfig.layer;\n }\n }\n catch (e) {\n // Ignore if layer property is read-only\n }\n }\n module.exports = result;\n };\n });\n}\n\nfunction initContainerEntry(options) {\n const { webpackRequire, shareScope, initScope, shareScopeKey, remoteEntryInitOptions, } = options;\n if (!webpackRequire.S)\n return;\n if (!webpackRequire.federation ||\n !webpackRequire.federation.instance ||\n !webpackRequire.federation.initOptions)\n return;\n const federationInstance = webpackRequire.federation.instance;\n federationInstance.initOptions({\n name: webpackRequire.federation.initOptions.name,\n remotes: [],\n ...remoteEntryInitOptions,\n });\n const hostShareScopeKeys = remoteEntryInitOptions?.shareScopeKeys;\n const hostShareScopeMap = remoteEntryInitOptions?.shareScopeMap;\n // host: 'default' remote: 'default' remote['default'] = hostShareScopeMap['default']\n // host: ['default', 'scope1'] remote: 'default' remote['default'] = hostShareScopeMap['default']; remote['scope1'] = hostShareScopeMap['scop1']\n // host: 'default' remote: ['default','scope1'] remote['default'] = hostShareScopeMap['default']; remote['scope1'] = hostShareScopeMap['scope1'] = {}\n // host: ['scope1','default'] remote: ['scope1','scope2'] => remote['scope1'] = hostShareScopeMap['scope1']; remote['scope2'] = hostShareScopeMap['scope2'] = {};\n if (!shareScopeKey || typeof shareScopeKey === 'string') {\n const key = shareScopeKey || 'default';\n if (Array.isArray(hostShareScopeKeys)) {\n // const sc = hostShareScopeMap![key];\n // if (!sc) {\n // throw new Error('shareScopeKey is not exist in hostShareScopeMap');\n // }\n // federationInstance.initShareScopeMap(key, sc, {\n // hostShareScopeMap: remoteEntryInitOptions?.shareScopeMap || {},\n // });\n hostShareScopeKeys.forEach((hostKey) => {\n if (!hostShareScopeMap[hostKey]) {\n hostShareScopeMap[hostKey] = {};\n }\n const sc = hostShareScopeMap[hostKey];\n federationInstance.initShareScopeMap(hostKey, sc, {\n hostShareScopeMap: remoteEntryInitOptions?.shareScopeMap || {},\n });\n });\n }\n else {\n federationInstance.initShareScopeMap(key, shareScope, {\n hostShareScopeMap: remoteEntryInitOptions?.shareScopeMap || {},\n });\n }\n }\n else {\n shareScopeKey.forEach((key) => {\n if (!hostShareScopeKeys || !hostShareScopeMap) {\n federationInstance.initShareScopeMap(key, shareScope, {\n hostShareScopeMap: remoteEntryInitOptions?.shareScopeMap || {},\n });\n return;\n }\n if (!hostShareScopeMap[key]) {\n hostShareScopeMap[key] = {};\n }\n const sc = hostShareScopeMap[key];\n federationInstance.initShareScopeMap(key, sc, {\n hostShareScopeMap: remoteEntryInitOptions?.shareScopeMap || {},\n });\n });\n }\n if (webpackRequire.federation.attachShareScopeMap) {\n webpackRequire.federation.attachShareScopeMap(webpackRequire);\n }\n if (typeof webpackRequire.federation.prefetch === 'function') {\n webpackRequire.federation.prefetch();\n }\n if (!Array.isArray(shareScopeKey)) {\n // @ts-ignore\n return webpackRequire.I(shareScopeKey || 'default', initScope);\n }\n var proxyInitializeSharing = Boolean(webpackRequire.federation.initOptions.shared);\n if (proxyInitializeSharing) {\n // @ts-ignore\n return webpackRequire.I(shareScopeKey, initScope);\n }\n // @ts-ignore\n return Promise.all(shareScopeKey.map((key) => {\n // @ts-ignore\n return webpackRequire.I(key, initScope);\n })).then(() => true);\n}\n\nconst federation = {\n runtime: runtime__namespace,\n instance: undefined,\n initOptions: undefined,\n bundlerRuntime: {\n remotes,\n consumes,\n I: initializeSharing,\n S: {},\n installInitialConsumes,\n initContainerEntry,\n },\n attachShareScopeMap,\n bundlerRuntimeOptions: {},\n};\n\nmodule.exports = federation;\n//# sourceMappingURL=index.cjs.cjs.map\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9keW5hbWljfC9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9ub2RlX21vZHVsZXMvQG1vZHVsZS1mZWRlcmF0aW9uL3dlYnBhY2stYnVuZGxlci1ydW50aW1lL2Rpc3QvaW5kZXguY2pzLmNqcyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Btb2R1bGUtZmVkZXJhdGlvbi93ZWJwYWNrLWJ1bmRsZXItcnVudGltZS9kaXN0L2luZGV4LmNqcy5janM/YTY1ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBydW50aW1lID0gcmVxdWlyZSgnQG1vZHVsZS1mZWRlcmF0aW9uL3J1bnRpbWUnKTtcbnZhciBjb25zdGFudCA9IHJlcXVpcmUoJy4vY29uc3RhbnQuY2pzLmNqcycpO1xudmFyIHNkayA9IHJlcXVpcmUoJ0Btb2R1bGUtZmVkZXJhdGlvbi9zZGsnKTtcblxuZnVuY3Rpb24gX2ludGVyb3BOYW1lc3BhY2VEZWZhdWx0KGUpIHtcbiAgICB2YXIgbiA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgaWYgKGUpIHtcbiAgICAgICAgZm9yICh2YXIgayBpbiBlKSB7XG4gICAgICAgICAgICBuW2tdID0gZVtrXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBuLmRlZmF1bHQgPSBlO1xuICAgIHJldHVybiBPYmplY3QuZnJlZXplKG4pO1xufVxuXG52YXIgcnVudGltZV9fbmFtZXNwYWNlID0gLyojX19QVVJFX18qL19pbnRlcm9wTmFtZXNwYWNlRGVmYXVsdChydW50aW1lKTtcblxuZnVuY3Rpb24gYXR0YWNoU2hhcmVTY29wZU1hcCh3ZWJwYWNrUmVxdWlyZSkge1xuICAgIGlmICghd2VicGFja1JlcXVpcmUuUyB8fFxuICAgICAgICB3ZWJwYWNrUmVxdWlyZS5mZWRlcmF0aW9uLmhhc0F0dGFjaFNoYXJlU2NvcGVNYXAgfHxcbiAgICAgICAgIXdlYnBhY2tSZXF1aXJlLmZlZGVyYXRpb24uaW5zdGFuY2UgfHxcbiAgICAgICAgIXdlYnBhY2tSZXF1aXJlLmZlZGVyYXRpb24uaW5zdGFuY2Uuc2hhcmVTY29wZU1hcCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHdlYnBhY2tSZXF1aXJlLlMgPSB3ZWJwYWNrUmVxdWlyZS5mZWRlcmF0aW9uLmluc3RhbmNlLnNoYXJlU2NvcGVNYXA7XG4gICAgd2VicGFja1JlcXVpcmUuZmVkZXJhdGlvbi5oYXNBdHRhY2hTaGFyZVNjb3BlTWFwID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlQ29uc3VtZU9wdGlvbnMob3B0aW9ucykge1xuICAgIGNvbnN0IHsgd2VicGFja1JlcXVpcmUsIG1vZHVsZVRvSGFuZGxlck1hcHBpbmcgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgeyBjb25zdW1lc0xvYWRpbmdEYXRhLCBpbml0aWFsaXplU2hhcmluZ0RhdGEgfSA9IHdlYnBhY2tSZXF1aXJlO1xuICAgIGlmIChjb25zdW1lc0xvYWRpbmdEYXRhICYmICFjb25zdW1lc0xvYWRpbmdEYXRhLl91cGRhdGVkKSB7XG4gICAgICAgIGNvbnN0IHsgbW9kdWxlSWRUb0NvbnN1bWVEYXRhTWFwcGluZzogdXBkYXRlZE1vZHVsZUlkVG9Db25zdW1lRGF0YU1hcHBpbmcgPSB7fSwgaW5pdGlhbENvbnN1bWVzOiB1cGRhdGVkSW5pdGlhbENvbnN1bWVzID0gW10sIGNodW5rTWFwcGluZzogdXBkYXRlZENodW5rTWFwcGluZyA9IHt9LCB9ID0gY29uc3VtZXNMb2FkaW5nRGF0YTtcbiAgICAgICAgT2JqZWN0LmVudHJpZXModXBkYXRlZE1vZHVsZUlkVG9Db25zdW1lRGF0YU1hcHBpbmcpLmZvckVhY2goKFtpZCwgZGF0YV0pID0+IHtcbiAgICAgICAgICAgIGlmICghbW9kdWxlVG9IYW5kbGVyTWFwcGluZ1tpZF0pIHtcbiAgICAgICAgICAgICAgICBtb2R1bGVUb0hhbmRsZXJNYXBwaW5nW2lkXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0dGVyOiBkYXRhLmZhbGxiYWNrLFxuICAgICAgICAgICAgICAgICAgICBzaGFyZUluZm86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlQ29uZmlnOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRWZXJzaW9uOiBkYXRhLnJlcXVpcmVkVmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3RWZXJzaW9uOiBkYXRhLnN0cmljdFZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xldG9uOiBkYXRhLnNpbmdsZXRvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYWdlcjogZGF0YS5lYWdlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcjogZGF0YS5sYXllcixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZTogQXJyYXkuaXNBcnJheShkYXRhLnNoYXJlU2NvcGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBkYXRhLnNoYXJlU2NvcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtkYXRhLnNoYXJlU2NvcGUgfHwgJ2RlZmF1bHQnXSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgc2hhcmVLZXk6IGRhdGEuc2hhcmVLZXksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICgnaW5pdGlhbENvbnN1bWVzJyBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCB7IGluaXRpYWxDb25zdW1lcyA9IFtdIH0gPSBvcHRpb25zO1xuICAgICAgICAgICAgdXBkYXRlZEluaXRpYWxDb25zdW1lcy5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghaW5pdGlhbENvbnN1bWVzLmluY2x1ZGVzKGlkKSkge1xuICAgICAgICAgICAgICAgICAgICBpbml0aWFsQ29uc3VtZXMucHVzaChpZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCdjaHVua01hcHBpbmcnIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgY2h1bmtNYXBwaW5nID0ge30gfSA9IG9wdGlvbnM7XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyh1cGRhdGVkQ2h1bmtNYXBwaW5nKS5mb3JFYWNoKChbaWQsIGNodW5rTW9kdWxlc10pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWNodW5rTWFwcGluZ1tpZF0pIHtcbiAgICAgICAgICAgICAgICAgICAgY2h1bmtNYXBwaW5nW2lkXSA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjaHVua01vZHVsZXMuZm9yRWFjaCgobW9kdWxlSWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjaHVua01hcHBpbmdbaWRdLmluY2x1ZGVzKG1vZHVsZUlkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmtNYXBwaW5nW2lkXS5wdXNoKG1vZHVsZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3VtZXNMb2FkaW5nRGF0YS5fdXBkYXRlZCA9IDE7XG4gICAgfVxuICAgIGlmIChpbml0aWFsaXplU2hhcmluZ0RhdGEgJiYgIWluaXRpYWxpemVTaGFyaW5nRGF0YS5fdXBkYXRlZCkge1xuICAgICAgICBjb25zdCB7IGZlZGVyYXRpb24gfSA9IHdlYnBhY2tSZXF1aXJlO1xuICAgICAgICBpZiAoIWZlZGVyYXRpb24uaW5zdGFuY2UgfHxcbiAgICAgICAgICAgICFpbml0aWFsaXplU2hhcmluZ0RhdGEuc2NvcGVUb1NoYXJpbmdEYXRhTWFwcGluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNoYXJlZCA9IHt9O1xuICAgICAgICBmb3IgKGxldCBbc2NvcGUsIHN0YWdlc10gb2YgT2JqZWN0LmVudHJpZXMoaW5pdGlhbGl6ZVNoYXJpbmdEYXRhLnNjb3BlVG9TaGFyaW5nRGF0YU1hcHBpbmcpKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBzdGFnZSBvZiBzdGFnZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHN0YWdlID09PSAnb2JqZWN0JyAmJiBzdGFnZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IG5hbWUsIHZlcnNpb24sIGZhY3RvcnksIGVhZ2VyLCBzaW5nbGV0b24sIHJlcXVpcmVkVmVyc2lvbiwgc3RyaWN0VmVyc2lvbiwgfSA9IHN0YWdlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaGFyZUNvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkVmVyc2lvbjogYF4ke3ZlcnNpb259YCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNWYWxpZFZhbHVlID0gZnVuY3Rpb24gKHZhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgIT09ICd1bmRlZmluZWQnO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZFZhbHVlKHNpbmdsZXRvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlQ29uZmlnLnNpbmdsZXRvbiA9IHNpbmdsZXRvbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZFZhbHVlKHJlcXVpcmVkVmVyc2lvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlQ29uZmlnLnJlcXVpcmVkVmVyc2lvbiA9IHJlcXVpcmVkVmVyc2lvbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZFZhbHVlKGVhZ2VyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVDb25maWcuZWFnZXIgPSBlYWdlcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZFZhbHVlKHN0cmljdFZlcnNpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFyZUNvbmZpZy5zdHJpY3RWZXJzaW9uID0gc3RyaWN0VmVyc2lvbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlOiBbc2NvcGVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVDb25maWcsXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXQ6IGZhY3RvcnksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGlmIChzaGFyZWRbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZFtuYW1lXS5wdXNoKG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkW25hbWVdID0gW29wdGlvbnNdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZlZGVyYXRpb24uaW5zdGFuY2UucmVnaXN0ZXJTaGFyZWQoc2hhcmVkKTtcbiAgICAgICAgaW5pdGlhbGl6ZVNoYXJpbmdEYXRhLl91cGRhdGVkID0gMTtcbiAgICB9XG59XG5mdW5jdGlvbiB1cGRhdGVSZW1vdGVPcHRpb25zKG9wdGlvbnMpIHtcbiAgICBjb25zdCB7IHdlYnBhY2tSZXF1aXJlLCBpZFRvRXh0ZXJuYWxBbmROYW1lTWFwcGluZyA9IHt9LCBpZFRvUmVtb3RlTWFwID0ge30sIGNodW5rTWFwcGluZyA9IHt9LCB9ID0gb3B0aW9ucztcbiAgICBjb25zdCB7IHJlbW90ZXNMb2FkaW5nRGF0YSB9ID0gd2VicGFja1JlcXVpcmU7XG4gICAgY29uc3QgcmVtb3RlSW5mb3MgPSB3ZWJwYWNrUmVxdWlyZS5mZWRlcmF0aW9uPy5idW5kbGVyUnVudGltZU9wdGlvbnM/LnJlbW90ZXM/LnJlbW90ZUluZm9zO1xuICAgIGlmICghcmVtb3Rlc0xvYWRpbmdEYXRhIHx8IHJlbW90ZXNMb2FkaW5nRGF0YS5fdXBkYXRlZCB8fCAhcmVtb3RlSW5mb3MpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB7IGNodW5rTWFwcGluZzogdXBkYXRlZENodW5rTWFwcGluZywgbW9kdWxlSWRUb1JlbW90ZURhdGFNYXBwaW5nIH0gPSByZW1vdGVzTG9hZGluZ0RhdGE7XG4gICAgaWYgKCF1cGRhdGVkQ2h1bmtNYXBwaW5nIHx8ICFtb2R1bGVJZFRvUmVtb3RlRGF0YU1hcHBpbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb3IgKGxldCBbbW9kdWxlSWQsIGRhdGFdIG9mIE9iamVjdC5lbnRyaWVzKG1vZHVsZUlkVG9SZW1vdGVEYXRhTWFwcGluZykpIHtcbiAgICAgICAgaWYgKCFpZFRvRXh0ZXJuYWxBbmROYW1lTWFwcGluZ1ttb2R1bGVJZF0pIHtcbiAgICAgICAgICAgIGlkVG9FeHRlcm5hbEFuZE5hbWVNYXBwaW5nW21vZHVsZUlkXSA9IFtcbiAgICAgICAgICAgICAgICBkYXRhLnNoYXJlU2NvcGUsXG4gICAgICAgICAgICAgICAgZGF0YS5uYW1lLFxuICAgICAgICAgICAgICAgIGRhdGEuZXh0ZXJuYWxNb2R1bGVJZCxcbiAgICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpZFRvUmVtb3RlTWFwW21vZHVsZUlkXSAmJiByZW1vdGVJbmZvc1tkYXRhLnJlbW90ZU5hbWVdKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtcyA9IHJlbW90ZUluZm9zW2RhdGEucmVtb3RlTmFtZV07XG4gICAgICAgICAgICBpZFRvUmVtb3RlTWFwW21vZHVsZUlkXSB8fD0gW107XG4gICAgICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFpZFRvUmVtb3RlTWFwW21vZHVsZUlkXS5pbmNsdWRlcyhpdGVtKSkge1xuICAgICAgICAgICAgICAgICAgICBpZFRvUmVtb3RlTWFwW21vZHVsZUlkXS5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChjaHVua01hcHBpbmcpIHtcbiAgICAgICAgT2JqZWN0LmVudHJpZXModXBkYXRlZENodW5rTWFwcGluZykuZm9yRWFjaCgoW2lkLCBjaHVua01vZHVsZXNdKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWNodW5rTWFwcGluZ1tpZF0pIHtcbiAgICAgICAgICAgICAgICBjaHVua01hcHBpbmdbaWRdID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjaHVua01vZHVsZXMuZm9yRWFjaCgobW9kdWxlSWQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWNodW5rTWFwcGluZ1tpZF0uaW5jbHVkZXMobW9kdWxlSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNodW5rTWFwcGluZ1tpZF0ucHVzaChtb2R1bGVJZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZW1vdGVzTG9hZGluZ0RhdGEuX3VwZGF0ZWQgPSAxO1xufVxuXG5mdW5jdGlvbiByZW1vdGVzKG9wdGlvbnMpIHtcbiAgICB1cGRhdGVSZW1vdGVPcHRpb25zKG9wdGlvbnMpO1xuICAgIGNvbnN0IHsgY2h1bmtJZCwgcHJvbWlzZXMsIHdlYnBhY2tSZXF1aXJlLCBjaHVua01hcHBpbmcsIGlkVG9FeHRlcm5hbEFuZE5hbWVNYXBwaW5nLCBpZFRvUmVtb3RlTWFwLCB9ID0gb3B0aW9ucztcbiAgICBhdHRhY2hTaGFyZVNjb3BlTWFwKHdlYnBhY2tSZXF1aXJlKTtcbiAgICBpZiAod2VicGFja1JlcXVpcmUubyhjaHVua01hcHBpbmcsIGNodW5rSWQpKSB7XG4gICAgICAgIGNodW5rTWFwcGluZ1tjaHVua0lkXS5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgICAgICAgbGV0IGdldFNjb3BlID0gd2VicGFja1JlcXVpcmUuUjtcbiAgICAgICAgICAgIGlmICghZ2V0U2NvcGUpIHtcbiAgICAgICAgICAgICAgICBnZXRTY29wZSA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IGlkVG9FeHRlcm5hbEFuZE5hbWVNYXBwaW5nW2lkXTtcbiAgICAgICAgICAgIGNvbnN0IHJlbW90ZUluZm9zID0gaWRUb1JlbW90ZU1hcFtpZF0gfHwgW107XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlIHNlZW1zIG5vdCB3b3JrXG4gICAgICAgICAgICBpZiAoZ2V0U2NvcGUuaW5kZXhPZihkYXRhKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBzZWVtcyBub3Qgd29ya1xuICAgICAgICAgICAgZ2V0U2NvcGUucHVzaChkYXRhKTtcbiAgICAgICAgICAgIGlmIChkYXRhLnApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZXMucHVzaChkYXRhLnApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgb25FcnJvciA9IChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoJ0NvbnRhaW5lciBtaXNzaW5nJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZXJyb3IubWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IubWVzc2FnZSArPSBgXFxud2hpbGUgbG9hZGluZyBcIiR7ZGF0YVsxXX1cIiBmcm9tICR7ZGF0YVsyXX1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3ZWJwYWNrUmVxdWlyZS5tW2lkXSA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBkYXRhLnAgPSAwO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZUZ1bmN0aW9uID0gKGZuLCBhcmcxLCBhcmcyLCBkLCBuZXh0LCBmaXJzdCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSBmbihhcmcxLCBhcmcyKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb21pc2UgJiYgcHJvbWlzZS50aGVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwID0gcHJvbWlzZS50aGVuKChyZXN1bHQpID0+IG5leHQocmVzdWx0LCBkKSwgb25FcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlcy5wdXNoKChkYXRhLnAgPSBwKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXh0KHByb21pc2UsIGQsIGZpcnN0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IG9uRXh0ZXJuYWwgPSAoZXh0ZXJuYWwsIF8sIGZpcnN0KSA9PiBleHRlcm5hbFxuICAgICAgICAgICAgICAgID8gaGFuZGxlRnVuY3Rpb24od2VicGFja1JlcXVpcmUuSSwgZGF0YVswXSwgMCwgZXh0ZXJuYWwsIG9uSW5pdGlhbGl6ZWQsIGZpcnN0KVxuICAgICAgICAgICAgICAgIDogb25FcnJvcigpO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXZhclxuICAgICAgICAgICAgdmFyIG9uSW5pdGlhbGl6ZWQgPSAoXywgZXh0ZXJuYWwsIGZpcnN0KSA9PiBoYW5kbGVGdW5jdGlvbihleHRlcm5hbC5nZXQsIGRhdGFbMV0sIGdldFNjb3BlLCAwLCBvbkZhY3RvcnksIGZpcnN0KTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby12YXJcbiAgICAgICAgICAgIHZhciBvbkZhY3RvcnkgPSAoZmFjdG9yeSkgPT4ge1xuICAgICAgICAgICAgICAgIGRhdGEucCA9IDE7XG4gICAgICAgICAgICAgICAgd2VicGFja1JlcXVpcmUubVtpZF0gPSAobW9kdWxlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3Qgb25SZW1vdGVMb2FkZWQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVtb3RlTmFtZSA9IHNkay5kZWNvZGVOYW1lKHJlbW90ZUluZm9zWzBdLm5hbWUsIHNkay5FTkNPREVfTkFNRV9QUkVGSVgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZW1vdGVNb2R1bGVOYW1lID0gcmVtb3RlTmFtZSArIGRhdGFbMV0uc2xpY2UoMSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gd2VicGFja1JlcXVpcmUuZmVkZXJhdGlvbi5pbnN0YW5jZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbG9hZFJlbW90ZSA9ICgpID0+IHdlYnBhY2tSZXF1aXJlLmZlZGVyYXRpb24uaW5zdGFuY2UubG9hZFJlbW90ZShyZW1vdGVNb2R1bGVOYW1lLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkRmFjdG9yeTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBmcm9tOiAnYnVpbGQnLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlLm9wdGlvbnMuc2hhcmVTdHJhdGVneSA9PT0gJ3ZlcnNpb24tZmlyc3QnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoaW5zdGFuY2Uuc2hhcmVkSGFuZGxlci5pbml0aWFsaXplU2hhcmluZyhkYXRhWzBdKSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRSZW1vdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkUmVtb3RlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgdXNlUnVudGltZUxvYWQgPSByZW1vdGVJbmZvcy5sZW5ndGggPT09IDEgJiZcbiAgICAgICAgICAgICAgICBjb25zdGFudC5GRURFUkFUSU9OX1NVUFBPUlRFRF9UWVBFUy5pbmNsdWRlcyhyZW1vdGVJbmZvc1swXS5leHRlcm5hbFR5cGUpICYmXG4gICAgICAgICAgICAgICAgcmVtb3RlSW5mb3NbMF0ubmFtZTtcbiAgICAgICAgICAgIGlmICh1c2VSdW50aW1lTG9hZCkge1xuICAgICAgICAgICAgICAgIGhhbmRsZUZ1bmN0aW9uKG9uUmVtb3RlTG9hZGVkLCBkYXRhWzJdLCAwLCAwLCBvbkZhY3RvcnksIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlRnVuY3Rpb24od2VicGFja1JlcXVpcmUsIGRhdGFbMl0sIDAsIDAsIG9uRXh0ZXJuYWwsIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGNvbnN1bWVzKG9wdGlvbnMpIHtcbiAgICB1cGRhdGVDb25zdW1lT3B0aW9ucyhvcHRpb25zKTtcbiAgICBjb25zdCB7IGNodW5rSWQsIHByb21pc2VzLCBpbnN0YWxsZWRNb2R1bGVzLCB3ZWJwYWNrUmVxdWlyZSwgY2h1bmtNYXBwaW5nLCBtb2R1bGVUb0hhbmRsZXJNYXBwaW5nLCB9ID0gb3B0aW9ucztcbiAgICBhdHRhY2hTaGFyZVNjb3BlTWFwKHdlYnBhY2tSZXF1aXJlKTtcbiAgICBpZiAod2VicGFja1JlcXVpcmUubyhjaHVua01hcHBpbmcsIGNodW5rSWQpKSB7XG4gICAgICAgIGNodW5rTWFwcGluZ1tjaHVua0lkXS5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgICAgICAgaWYgKHdlYnBhY2tSZXF1aXJlLm8oaW5zdGFsbGVkTW9kdWxlcywgaWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2VzLnB1c2goaW5zdGFsbGVkTW9kdWxlc1tpZF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgb25GYWN0b3J5ID0gKGZhY3RvcnkpID0+IHtcbiAgICAgICAgICAgICAgICBpbnN0YWxsZWRNb2R1bGVzW2lkXSA9IDA7XG4gICAgICAgICAgICAgICAgd2VicGFja1JlcXVpcmUubVtpZF0gPSAobW9kdWxlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB3ZWJwYWNrUmVxdWlyZS5jW2lkXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZmFjdG9yeSgpO1xuICAgICAgICAgICAgICAgICAgICAvLyBBZGQgbGF5ZXIgcHJvcGVydHkgZnJvbSBzaGFyZUNvbmZpZyBpZiBhdmFpbGFibGVcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBzaGFyZUluZm8gfSA9IG1vZHVsZVRvSGFuZGxlck1hcHBpbmdbaWRdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2hhcmVJbmZvPy5zaGFyZUNvbmZpZz8ubGF5ZXIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHJlc3VsdCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25seSBzZXQgbGF5ZXIgaWYgaXQncyBub3QgYWxyZWFkeSBkZWZpbmVkIG9yIGlmIGl0J3MgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzT3duUHJvcGVydHkoJ2xheWVyJykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmxheWVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmxheWVyID0gc2hhcmVJbmZvLnNoYXJlQ29uZmlnLmxheWVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlIGlmIGxheWVyIHByb3BlcnR5IGlzIHJlYWQtb25seVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG1vZHVsZS5leHBvcnRzID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3Qgb25FcnJvciA9IChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBpbnN0YWxsZWRNb2R1bGVzW2lkXTtcbiAgICAgICAgICAgICAgICB3ZWJwYWNrUmVxdWlyZS5tW2lkXSA9IChtb2R1bGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHdlYnBhY2tSZXF1aXJlLmNbaWRdO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmVkZXJhdGlvbkluc3RhbmNlID0gd2VicGFja1JlcXVpcmUuZmVkZXJhdGlvbi5pbnN0YW5jZTtcbiAgICAgICAgICAgICAgICBpZiAoIWZlZGVyYXRpb25JbnN0YW5jZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZlZGVyYXRpb24gaW5zdGFuY2Ugbm90IGZvdW5kIScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB7IHNoYXJlS2V5LCBnZXR0ZXIsIHNoYXJlSW5mbyB9ID0gbW9kdWxlVG9IYW5kbGVyTWFwcGluZ1tpZF07XG4gICAgICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IGZlZGVyYXRpb25JbnN0YW5jZVxuICAgICAgICAgICAgICAgICAgICAubG9hZFNoYXJlKHNoYXJlS2V5LCB7IGN1c3RvbVNoYXJlSW5mbzogc2hhcmVJbmZvIH0pXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKChmYWN0b3J5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmYWN0b3J5ID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldHRlcigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWN0b3J5O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChwcm9taXNlLnRoZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvbWlzZXMucHVzaCgoaW5zdGFsbGVkTW9kdWxlc1tpZF0gPSBwcm9taXNlLnRoZW4ob25GYWN0b3J5KS5jYXRjaChvbkVycm9yKSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBtYWludGFpbiBwcmV2aW91cyBsb2dpY1xuICAgICAgICAgICAgICAgICAgICBvbkZhY3RvcnkocHJvbWlzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBvbkVycm9yKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGluaXRpYWxpemVTaGFyaW5nKHsgc2hhcmVTY29wZU5hbWUsIHdlYnBhY2tSZXF1aXJlLCBpbml0UHJvbWlzZXMsIGluaXRUb2tlbnMsIGluaXRTY29wZSwgfSkge1xuICAgIGNvbnN0IHNoYXJlU2NvcGVLZXlzID0gQXJyYXkuaXNBcnJheShzaGFyZVNjb3BlTmFtZSlcbiAgICAgICAgPyBzaGFyZVNjb3BlTmFtZVxuICAgICAgICA6IFtzaGFyZVNjb3BlTmFtZV07XG4gICAgdmFyIGluaXRpYWxpemVTaGFyaW5nUHJvbWlzZXMgPSBbXTtcbiAgICB2YXIgX2luaXRpYWxpemVTaGFyaW5nID0gZnVuY3Rpb24gKHNoYXJlU2NvcGVLZXkpIHtcbiAgICAgICAgaWYgKCFpbml0U2NvcGUpXG4gICAgICAgICAgICBpbml0U2NvcGUgPSBbXTtcbiAgICAgICAgY29uc3QgbWZJbnN0YW5jZSA9IHdlYnBhY2tSZXF1aXJlLmZlZGVyYXRpb24uaW5zdGFuY2U7XG4gICAgICAgIC8vIGhhbmRsaW5nIGNpcmN1bGFyIGluaXQgY2FsbHNcbiAgICAgICAgdmFyIGluaXRUb2tlbiA9IGluaXRUb2tlbnNbc2hhcmVTY29wZUtleV07XG4gICAgICAgIGlmICghaW5pdFRva2VuKVxuICAgICAgICAgICAgaW5pdFRva2VuID0gaW5pdFRva2Vuc1tzaGFyZVNjb3BlS2V5XSA9IHsgZnJvbTogbWZJbnN0YW5jZS5uYW1lIH07XG4gICAgICAgIGlmIChpbml0U2NvcGUuaW5kZXhPZihpbml0VG9rZW4pID49IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGluaXRTY29wZS5wdXNoKGluaXRUb2tlbik7XG4gICAgICAgIGNvbnN0IHByb21pc2UgPSBpbml0UHJvbWlzZXNbc2hhcmVTY29wZUtleV07XG4gICAgICAgIGlmIChwcm9taXNlKVxuICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgICAgIHZhciB3YXJuID0gKG1zZykgPT4gdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIGNvbnNvbGUud2FybiAmJiBjb25zb2xlLndhcm4obXNnKTtcbiAgICAgICAgdmFyIGluaXRFeHRlcm5hbCA9IChpZCkgPT4ge1xuICAgICAgICAgICAgdmFyIGhhbmRsZUVycm9yID0gKGVycikgPT4gd2FybignSW5pdGlhbGl6YXRpb24gb2Ygc2hhcmluZyBleHRlcm5hbCBmYWlsZWQ6ICcgKyBlcnIpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB2YXIgbW9kdWxlID0gd2VicGFja1JlcXVpcmUoaWQpO1xuICAgICAgICAgICAgICAgIGlmICghbW9kdWxlKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgdmFyIGluaXRGbiA9IChtb2R1bGUpID0+IG1vZHVsZSAmJlxuICAgICAgICAgICAgICAgICAgICBtb2R1bGUuaW5pdCAmJlxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIGNvbXBhdCBsZWdhY3kgbWYgc2hhcmVkIGJlaGF2aW9yXG4gICAgICAgICAgICAgICAgICAgIG1vZHVsZS5pbml0KHdlYnBhY2tSZXF1aXJlLlNbc2hhcmVTY29wZUtleV0sIGluaXRTY29wZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVTY29wZU1hcDogd2VicGFja1JlcXVpcmUuUyB8fCB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlU2NvcGVLZXlzOiBzaGFyZVNjb3BlTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKG1vZHVsZS50aGVuKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZXMucHVzaChtb2R1bGUudGhlbihpbml0Rm4sIGhhbmRsZUVycm9yKSk7XG4gICAgICAgICAgICAgICAgdmFyIGluaXRSZXN1bHQgPSBpbml0Rm4obW9kdWxlKTtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgaWYgKGluaXRSZXN1bHQgJiYgdHlwZW9mIGluaXRSZXN1bHQgIT09ICdib29sZWFuJyAmJiBpbml0UmVzdWx0LnRoZW4pXG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2VzLnB1c2goaW5pdFJlc3VsdFsnY2F0Y2gnXShoYW5kbGVFcnJvcikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGhhbmRsZUVycm9yKGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gbWZJbnN0YW5jZS5pbml0aWFsaXplU2hhcmluZyhzaGFyZVNjb3BlS2V5LCB7XG4gICAgICAgICAgICBzdHJhdGVneTogbWZJbnN0YW5jZS5vcHRpb25zLnNoYXJlU3RyYXRlZ3ksXG4gICAgICAgICAgICBpbml0U2NvcGUsXG4gICAgICAgICAgICBmcm9tOiAnYnVpbGQnLFxuICAgICAgICB9KTtcbiAgICAgICAgYXR0YWNoU2hhcmVTY29wZU1hcCh3ZWJwYWNrUmVxdWlyZSk7XG4gICAgICAgIGNvbnN0IGJ1bmRsZXJSdW50aW1lUmVtb3Rlc09wdGlvbnMgPSB3ZWJwYWNrUmVxdWlyZS5mZWRlcmF0aW9uLmJ1bmRsZXJSdW50aW1lT3B0aW9ucy5yZW1vdGVzO1xuICAgICAgICBpZiAoYnVuZGxlclJ1bnRpbWVSZW1vdGVzT3B0aW9ucykge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoYnVuZGxlclJ1bnRpbWVSZW1vdGVzT3B0aW9ucy5pZFRvUmVtb3RlTWFwKS5mb3JFYWNoKChtb2R1bGVJZCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZm8gPSBidW5kbGVyUnVudGltZVJlbW90ZXNPcHRpb25zLmlkVG9SZW1vdGVNYXBbbW9kdWxlSWRdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4dGVybmFsTW9kdWxlSWQgPSBidW5kbGVyUnVudGltZVJlbW90ZXNPcHRpb25zLmlkVG9FeHRlcm5hbEFuZE5hbWVNYXBwaW5nW21vZHVsZUlkXVsyXTtcbiAgICAgICAgICAgICAgICBpZiAoaW5mby5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGluaXRFeHRlcm5hbChleHRlcm5hbE1vZHVsZUlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaW5mby5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVtb3RlSW5mbyA9IGluZm9bMF07XG4gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3RhbnQuRkVERVJBVElPTl9TVVBQT1JURURfVFlQRVMuaW5jbHVkZXMocmVtb3RlSW5mby5leHRlcm5hbFR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0RXh0ZXJuYWwoZXh0ZXJuYWxNb2R1bGVJZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXByb21pc2VzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIChpbml0UHJvbWlzZXNbc2hhcmVTY29wZUtleV0gPSB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKGluaXRQcm9taXNlc1tzaGFyZVNjb3BlS2V5XSA9IFByb21pc2UuYWxsKHByb21pc2VzKS50aGVuKCgpID0+IChpbml0UHJvbWlzZXNbc2hhcmVTY29wZUtleV0gPSB0cnVlKSkpO1xuICAgIH07XG4gICAgc2hhcmVTY29wZUtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGluaXRpYWxpemVTaGFyaW5nUHJvbWlzZXMucHVzaChfaW5pdGlhbGl6ZVNoYXJpbmcoa2V5KSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKGluaXRpYWxpemVTaGFyaW5nUHJvbWlzZXMpLnRoZW4oKCkgPT4gdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZUluaXRpYWxDb25zdW1lcyhvcHRpb25zKSB7XG4gICAgY29uc3QgeyBtb2R1bGVJZCwgbW9kdWxlVG9IYW5kbGVyTWFwcGluZywgd2VicGFja1JlcXVpcmUgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgZmVkZXJhdGlvbkluc3RhbmNlID0gd2VicGFja1JlcXVpcmUuZmVkZXJhdGlvbi5pbnN0YW5jZTtcbiAgICBpZiAoIWZlZGVyYXRpb25JbnN0YW5jZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZlZGVyYXRpb24gaW5zdGFuY2Ugbm90IGZvdW5kIScpO1xuICAgIH1cbiAgICBjb25zdCB7IHNoYXJlS2V5LCBzaGFyZUluZm8gfSA9IG1vZHVsZVRvSGFuZGxlck1hcHBpbmdbbW9kdWxlSWRdO1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBmZWRlcmF0aW9uSW5zdGFuY2UubG9hZFNoYXJlU3luYyhzaGFyZUtleSwge1xuICAgICAgICAgICAgY3VzdG9tU2hhcmVJbmZvOiBzaGFyZUluZm8sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ2xvYWRTaGFyZVN5bmMgZmFpbGVkISBUaGUgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSBjYWxsZWQgdW5sZXNzIHlvdSBzZXQgXCJlYWdlcjp0cnVlXCIuIElmIHlvdSBkbyBub3Qgc2V0IGl0LCBhbmQgZW5jb3VudGVyIHRoaXMgaXNzdWUsIHlvdSBjYW4gY2hlY2sgd2hldGhlciBhbiBhc3luYyBib3VuZGFyeSBpcyBpbXBsZW1lbnRlZC4nKTtcbiAgICAgICAgY29uc29sZS5lcnJvcignVGhlIG9yaWdpbmFsIGVycm9yIG1lc3NhZ2UgaXMgYXMgZm9sbG93czogJyk7XG4gICAgICAgIHRocm93IGVycjtcbiAgICB9XG59XG5mdW5jdGlvbiBpbnN0YWxsSW5pdGlhbENvbnN1bWVzKG9wdGlvbnMpIHtcbiAgICBjb25zdCB7IHdlYnBhY2tSZXF1aXJlIH0gPSBvcHRpb25zO1xuICAgIHVwZGF0ZUNvbnN1bWVPcHRpb25zKG9wdGlvbnMpO1xuICAgIGNvbnN0IHsgaW5pdGlhbENvbnN1bWVzLCBtb2R1bGVUb0hhbmRsZXJNYXBwaW5nLCBpbnN0YWxsZWRNb2R1bGVzIH0gPSBvcHRpb25zO1xuICAgIGluaXRpYWxDb25zdW1lcy5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgICB3ZWJwYWNrUmVxdWlyZS5tW2lkXSA9IChtb2R1bGUpID0+IHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBzY2VuYXJpbyB3aGVuIG1vZHVsZSBpcyB1c2VkIHN5bmNocm9ub3VzbHlcbiAgICAgICAgICAgIGluc3RhbGxlZE1vZHVsZXNbaWRdID0gMDtcbiAgICAgICAgICAgIGRlbGV0ZSB3ZWJwYWNrUmVxdWlyZS5jW2lkXTtcbiAgICAgICAgICAgIGNvbnN0IGZhY3RvcnkgPSBoYW5kbGVJbml0aWFsQ29uc3VtZXMoe1xuICAgICAgICAgICAgICAgIG1vZHVsZUlkOiBpZCxcbiAgICAgICAgICAgICAgICBtb2R1bGVUb0hhbmRsZXJNYXBwaW5nLFxuICAgICAgICAgICAgICAgIHdlYnBhY2tSZXF1aXJlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGZhY3RvcnkgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNoYXJlZCBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZSBmb3IgZWFnZXIgY29uc3VtcHRpb246ICR7aWR9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBmYWN0b3J5KCk7XG4gICAgICAgICAgICAvLyBBZGQgbGF5ZXIgcHJvcGVydHkgZnJvbSBzaGFyZUNvbmZpZyBpZiBhdmFpbGFibGVcbiAgICAgICAgICAgIGNvbnN0IHsgc2hhcmVJbmZvIH0gPSBtb2R1bGVUb0hhbmRsZXJNYXBwaW5nW2lkXTtcbiAgICAgICAgICAgIGlmIChzaGFyZUluZm8/LnNoYXJlQ29uZmlnPy5sYXllciAmJlxuICAgICAgICAgICAgICAgIHJlc3VsdCAmJlxuICAgICAgICAgICAgICAgIHR5cGVvZiByZXN1bHQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gT25seSBzZXQgbGF5ZXIgaWYgaXQncyBub3QgYWxyZWFkeSBkZWZpbmVkIG9yIGlmIGl0J3MgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc093blByb3BlcnR5KCdsYXllcicpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQubGF5ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmxheWVyID0gc2hhcmVJbmZvLnNoYXJlQ29uZmlnLmxheWVyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZSBpZiBsYXllciBwcm9wZXJ0eSBpcyByZWFkLW9ubHlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlc3VsdDtcbiAgICAgICAgfTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gaW5pdENvbnRhaW5lckVudHJ5KG9wdGlvbnMpIHtcbiAgICBjb25zdCB7IHdlYnBhY2tSZXF1aXJlLCBzaGFyZVNjb3BlLCBpbml0U2NvcGUsIHNoYXJlU2NvcGVLZXksIHJlbW90ZUVudHJ5SW5pdE9wdGlvbnMsIH0gPSBvcHRpb25zO1xuICAgIGlmICghd2VicGFja1JlcXVpcmUuUylcbiAgICAgICAgcmV0dXJuO1xuICAgIGlmICghd2VicGFja1JlcXVpcmUuZmVkZXJhdGlvbiB8fFxuICAgICAgICAhd2VicGFja1JlcXVpcmUuZmVkZXJhdGlvbi5pbnN0YW5jZSB8fFxuICAgICAgICAhd2VicGFja1JlcXVpcmUuZmVkZXJhdGlvbi5pbml0T3B0aW9ucylcbiAgICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IGZlZGVyYXRpb25JbnN0YW5jZSA9IHdlYnBhY2tSZXF1aXJlLmZlZGVyYXRpb24uaW5zdGFuY2U7XG4gICAgZmVkZXJhdGlvbkluc3RhbmNlLmluaXRPcHRpb25zKHtcbiAgICAgICAgbmFtZTogd2VicGFja1JlcXVpcmUuZmVkZXJhdGlvbi5pbml0T3B0aW9ucy5uYW1lLFxuICAgICAgICByZW1vdGVzOiBbXSxcbiAgICAgICAgLi4ucmVtb3RlRW50cnlJbml0T3B0aW9ucyxcbiAgICB9KTtcbiAgICBjb25zdCBob3N0U2hhcmVTY29wZUtleXMgPSByZW1vdGVFbnRyeUluaXRPcHRpb25zPy5zaGFyZVNjb3BlS2V5cztcbiAgICBjb25zdCBob3N0U2hhcmVTY29wZU1hcCA9IHJlbW90ZUVudHJ5SW5pdE9wdGlvbnM/LnNoYXJlU2NvcGVNYXA7XG4gICAgLy8gaG9zdDogJ2RlZmF1bHQnIHJlbW90ZTogJ2RlZmF1bHQnICByZW1vdGVbJ2RlZmF1bHQnXSA9IGhvc3RTaGFyZVNjb3BlTWFwWydkZWZhdWx0J11cbiAgICAvLyBob3N0OiBbJ2RlZmF1bHQnLCAnc2NvcGUxJ10gcmVtb3RlOiAnZGVmYXVsdCcgIHJlbW90ZVsnZGVmYXVsdCddID0gaG9zdFNoYXJlU2NvcGVNYXBbJ2RlZmF1bHQnXTsgcmVtb3RlWydzY29wZTEnXSA9IGhvc3RTaGFyZVNjb3BlTWFwWydzY29wMSddXG4gICAgLy8gaG9zdDogJ2RlZmF1bHQnIHJlbW90ZTogWydkZWZhdWx0Jywnc2NvcGUxJ10gIHJlbW90ZVsnZGVmYXVsdCddID0gaG9zdFNoYXJlU2NvcGVNYXBbJ2RlZmF1bHQnXTsgcmVtb3RlWydzY29wZTEnXSA9IGhvc3RTaGFyZVNjb3BlTWFwWydzY29wZTEnXSA9IHt9XG4gICAgLy8gaG9zdDogWydzY29wZTEnLCdkZWZhdWx0J10gcmVtb3RlOiBbJ3Njb3BlMScsJ3Njb3BlMiddID0+IHJlbW90ZVsnc2NvcGUxJ10gPSBob3N0U2hhcmVTY29wZU1hcFsnc2NvcGUxJ107IHJlbW90ZVsnc2NvcGUyJ10gPSBob3N0U2hhcmVTY29wZU1hcFsnc2NvcGUyJ10gPSB7fTtcbiAgICBpZiAoIXNoYXJlU2NvcGVLZXkgfHwgdHlwZW9mIHNoYXJlU2NvcGVLZXkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IHNoYXJlU2NvcGVLZXkgfHwgJ2RlZmF1bHQnO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShob3N0U2hhcmVTY29wZUtleXMpKSB7XG4gICAgICAgICAgICAvLyBjb25zdCBzYyA9IGhvc3RTaGFyZVNjb3BlTWFwIVtrZXldO1xuICAgICAgICAgICAgLy8gaWYgKCFzYykge1xuICAgICAgICAgICAgLy8gICB0aHJvdyBuZXcgRXJyb3IoJ3NoYXJlU2NvcGVLZXkgaXMgbm90IGV4aXN0IGluIGhvc3RTaGFyZVNjb3BlTWFwJyk7XG4gICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAvLyBmZWRlcmF0aW9uSW5zdGFuY2UuaW5pdFNoYXJlU2NvcGVNYXAoa2V5LCBzYywge1xuICAgICAgICAgICAgLy8gICBob3N0U2hhcmVTY29wZU1hcDogcmVtb3RlRW50cnlJbml0T3B0aW9ucz8uc2hhcmVTY29wZU1hcCB8fCB7fSxcbiAgICAgICAgICAgIC8vIH0pO1xuICAgICAgICAgICAgaG9zdFNoYXJlU2NvcGVLZXlzLmZvckVhY2goKGhvc3RLZXkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWhvc3RTaGFyZVNjb3BlTWFwW2hvc3RLZXldKSB7XG4gICAgICAgICAgICAgICAgICAgIGhvc3RTaGFyZVNjb3BlTWFwW2hvc3RLZXldID0ge307XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHNjID0gaG9zdFNoYXJlU2NvcGVNYXBbaG9zdEtleV07XG4gICAgICAgICAgICAgICAgZmVkZXJhdGlvbkluc3RhbmNlLmluaXRTaGFyZVNjb3BlTWFwKGhvc3RLZXksIHNjLCB7XG4gICAgICAgICAgICAgICAgICAgIGhvc3RTaGFyZVNjb3BlTWFwOiByZW1vdGVFbnRyeUluaXRPcHRpb25zPy5zaGFyZVNjb3BlTWFwIHx8IHt9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmZWRlcmF0aW9uSW5zdGFuY2UuaW5pdFNoYXJlU2NvcGVNYXAoa2V5LCBzaGFyZVNjb3BlLCB7XG4gICAgICAgICAgICAgICAgaG9zdFNoYXJlU2NvcGVNYXA6IHJlbW90ZUVudHJ5SW5pdE9wdGlvbnM/LnNoYXJlU2NvcGVNYXAgfHwge30sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgc2hhcmVTY29wZUtleS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGlmICghaG9zdFNoYXJlU2NvcGVLZXlzIHx8ICFob3N0U2hhcmVTY29wZU1hcCkge1xuICAgICAgICAgICAgICAgIGZlZGVyYXRpb25JbnN0YW5jZS5pbml0U2hhcmVTY29wZU1hcChrZXksIHNoYXJlU2NvcGUsIHtcbiAgICAgICAgICAgICAgICAgICAgaG9zdFNoYXJlU2NvcGVNYXA6IHJlbW90ZUVudHJ5SW5pdE9wdGlvbnM/LnNoYXJlU2NvcGVNYXAgfHwge30sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFob3N0U2hhcmVTY29wZU1hcFtrZXldKSB7XG4gICAgICAgICAgICAgICAgaG9zdFNoYXJlU2NvcGVNYXBba2V5XSA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc2MgPSBob3N0U2hhcmVTY29wZU1hcFtrZXldO1xuICAgICAgICAgICAgZmVkZXJhdGlvbkluc3RhbmNlLmluaXRTaGFyZVNjb3BlTWFwKGtleSwgc2MsIHtcbiAgICAgICAgICAgICAgICBob3N0U2hhcmVTY29wZU1hcDogcmVtb3RlRW50cnlJbml0T3B0aW9ucz8uc2hhcmVTY29wZU1hcCB8fCB7fSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHdlYnBhY2tSZXF1aXJlLmZlZGVyYXRpb24uYXR0YWNoU2hhcmVTY29wZU1hcCkge1xuICAgICAgICB3ZWJwYWNrUmVxdWlyZS5mZWRlcmF0aW9uLmF0dGFjaFNoYXJlU2NvcGVNYXAod2VicGFja1JlcXVpcmUpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHdlYnBhY2tSZXF1aXJlLmZlZGVyYXRpb24ucHJlZmV0Y2ggPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgd2VicGFja1JlcXVpcmUuZmVkZXJhdGlvbi5wcmVmZXRjaCgpO1xuICAgIH1cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoc2hhcmVTY29wZUtleSkpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZXR1cm4gd2VicGFja1JlcXVpcmUuSShzaGFyZVNjb3BlS2V5IHx8ICdkZWZhdWx0JywgaW5pdFNjb3BlKTtcbiAgICB9XG4gICAgdmFyIHByb3h5SW5pdGlhbGl6ZVNoYXJpbmcgPSBCb29sZWFuKHdlYnBhY2tSZXF1aXJlLmZlZGVyYXRpb24uaW5pdE9wdGlvbnMuc2hhcmVkKTtcbiAgICBpZiAocHJveHlJbml0aWFsaXplU2hhcmluZykge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJldHVybiB3ZWJwYWNrUmVxdWlyZS5JKHNoYXJlU2NvcGVLZXksIGluaXRTY29wZSk7XG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoc2hhcmVTY29wZUtleS5tYXAoKGtleSkgPT4ge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJldHVybiB3ZWJwYWNrUmVxdWlyZS5JKGtleSwgaW5pdFNjb3BlKTtcbiAgICB9KSkudGhlbigoKSA9PiB0cnVlKTtcbn1cblxuY29uc3QgZmVkZXJhdGlvbiA9IHtcbiAgICBydW50aW1lOiBydW50aW1lX19uYW1lc3BhY2UsXG4gICAgaW5zdGFuY2U6IHVuZGVmaW5lZCxcbiAgICBpbml0T3B0aW9uczogdW5kZWZpbmVkLFxuICAgIGJ1bmRsZXJSdW50aW1lOiB7XG4gICAgICAgIHJlbW90ZXMsXG4gICAgICAgIGNvbnN1bWVzLFxuICAgICAgICBJOiBpbml0aWFsaXplU2hhcmluZyxcbiAgICAgICAgUzoge30sXG4gICAgICAgIGluc3RhbGxJbml0aWFsQ29uc3VtZXMsXG4gICAgICAgIGluaXRDb250YWluZXJFbnRyeSxcbiAgICB9LFxuICAgIGF0dGFjaFNoYXJlU2NvcGVNYXAsXG4gICAgYnVuZGxlclJ1bnRpbWVPcHRpb25zOiB7fSxcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZmVkZXJhdGlvbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmNqcy5janMubWFwXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsY0FBYyxtQkFBTyxDQUFDLHFFQUE0QjtBQUNsRCxlQUFlLG1CQUFPLENBQUMsd0ZBQW9CO0FBQzNDLFVBQVUsbUJBQU8sQ0FBQyxpRUFBd0I7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWSx5Q0FBeUM7QUFDckQsWUFBWSw2Q0FBNkM7QUFDekQ7QUFDQSxnQkFBZ0Isc0VBQXNFLHNGQUFzRixJQUFJO0FBQ2hMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLG9CQUFvQix1QkFBdUI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLG9CQUFvQixvQkFBb0I7QUFDeEM7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\n//# sourceURL=webpack-internal:///../../../node_modules/@module-federation/webpack-bundler-runtime/dist/index.cjs.cjs\n\n}");
38
38
 
39
- },
40
- "../../../node_modules/import-map-overrides/dist/import-map-overrides.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
41
- eval("{__webpack_require__.r(__webpack_exports__);\nfunction _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n}\nfunction _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\n/* import-map-overrides@3.0.0 */ !function() {\n \"use strict\";\n function e(t) {\n return (e = \"function\" == typeof Symbol && \"symbol\" == _type_of(Symbol.iterator) ? function(e) {\n return typeof e === \"undefined\" ? \"undefined\" : _type_of(e);\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e === \"undefined\" ? \"undefined\" : _type_of(e);\n })(t);\n }\n function t(e, t) {\n if (!_instanceof(e, t)) throw new TypeError(\"Cannot call a class as a function\");\n }\n function n(e, t) {\n for(var n = 0; n < t.length; n++){\n var r = t[n];\n r.enumerable = r.enumerable || !1, r.configurable = !0, \"value\" in r && (r.writable = !0), Object.defineProperty(e, r.key, r);\n }\n }\n function r(e, t, r) {\n return t && n(e.prototype, t), r && n(e, r), e;\n }\n function o(e, t, n) {\n return t in e ? Object.defineProperty(e, t, {\n value: n,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[t] = n, e;\n }\n function i(e, t) {\n if (\"function\" != typeof t && null !== t) throw new TypeError(\"Super expression must either be null or a function\");\n e.prototype = Object.create(t && t.prototype, {\n constructor: {\n value: e,\n writable: !0,\n configurable: !0\n }\n }), t && a(e, t);\n }\n function l(e) {\n return (l = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {\n return e.__proto__ || Object.getPrototypeOf(e);\n })(e);\n }\n function a(e, t) {\n return (a = Object.setPrototypeOf || function(e, t) {\n return e.__proto__ = t, e;\n })(e, t);\n }\n function u() {\n if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1;\n if (Reflect.construct.sham) return !1;\n if (\"function\" == typeof Proxy) return !0;\n try {\n return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})), !0;\n } catch (e) {\n return !1;\n }\n }\n function s(e, t, n) {\n return (s = u() ? Reflect.construct : function(e, t, n) {\n var r = [\n null\n ];\n r.push.apply(r, t);\n var o = new (Function.bind.apply(e, r));\n return n && a(o, n.prototype), o;\n }).apply(null, arguments);\n }\n function d(e) {\n var t = \"function\" == typeof Map ? new Map : void 0;\n return (d = function d(e) {\n if (null === e || (n = e, -1 === Function.toString.call(n).indexOf(\"[native code]\"))) return e;\n var n;\n if (\"function\" != typeof e) throw new TypeError(\"Super expression must either be null or a function\");\n if (void 0 !== t) {\n if (t.has(e)) return t.get(e);\n t.set(e, r);\n }\n function r() {\n return s(e, arguments, l(this).constructor);\n }\n return r.prototype = Object.create(e.prototype, {\n constructor: {\n value: r,\n enumerable: !1,\n writable: !0,\n configurable: !0\n }\n }), a(r, e);\n })(e);\n }\n function c(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n }\n function p(e, t) {\n return !t || \"object\" != (typeof t === \"undefined\" ? \"undefined\" : _type_of(t)) && \"function\" != typeof t ? c(e) : t;\n }\n function m(e) {\n var t = u();\n return function() {\n var n, r = l(e);\n if (t) {\n var o = l(this).constructor;\n n = Reflect.construct(r, arguments, o);\n } else n = r.apply(this, arguments);\n return p(this, n);\n };\n }\n function f(e, t) {\n return function(e) {\n if (Array.isArray(e)) return e;\n }(e) || function(e, t) {\n var n = null == e ? null : \"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"];\n if (null != n) {\n var r, o, i = [], l = !0, a = !1;\n try {\n for(n = n.call(e); !(l = (r = n.next()).done) && (i.push(r.value), !t || i.length !== t); l = !0);\n } catch (e) {\n a = !0, o = e;\n } finally{\n try {\n l || null == n.return || n.return();\n } finally{\n if (a) throw o;\n }\n }\n return i;\n }\n }(e, t) || v(e, t) || function() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }();\n }\n function v(e, t) {\n if (e) {\n if (\"string\" == typeof e) return h(e, t);\n var n = Object.prototype.toString.call(e).slice(8, -1);\n return \"Object\" === n && e.constructor && (n = e.constructor.name), \"Map\" === n || \"Set\" === n ? Array.from(e) : \"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? h(e, t) : void 0;\n }\n }\n function h(e, t) {\n (null == t || t > e.length) && (t = e.length);\n for(var n = 0, r = new Array(t); n < t; n++)r[n] = e[n];\n return r;\n }\n function g(t, n) {\n if (Array.isArray(t)) {\n for(var r = 0; r < t.length; r++)if (t[r] === n) return !0;\n return !1;\n }\n if (\"string\" == typeof t) return t.indexOf(n) >= 0;\n throw Error(\"Can't call includes on \".concat(e(t)));\n }\n function _(e) {\n var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : window.location.href;\n e = e.replace(/[\\[\\]]/g, \"\\\\$&\");\n var n = new RegExp(\"[?&]\" + e + \"(=([^&#]*)|&|#|$)\"), r = n.exec(t);\n return r ? r[2] ? decodeURIComponent(r[2].replace(/\\+/g, \" \")) : \"\" : null;\n }\n var y, b = \"import-map-override:\", w = \"import-map-overrides-disabled\", x = \"import-map-overrides-external-maps\", k = \"data-is-importmap-override\", M = \"import-map-overrides-domains\", E = \"allowlist:\", O = \"denylist:\", N = document.querySelector('meta[name=\"importmap-type\"]'), S = document.querySelector('meta[name=\"'.concat(M, '\"]')), C = {}, U = N ? N.getAttribute(\"content\") : \"importmap\";\n if (S) {\n var I = S.getAttribute(\"content\");\n I || console.warn(\"Invalid \".concat(M, \" meta element - content required.\"));\n var P = function P(e) {\n return new RegExp((function(e) {\n if (\"string\" != typeof e) throw new TypeError(\"Expected a string\");\n return e.replace(/[|\\\\{}()[\\]^$+*?.]/g, \"\\\\$&\").replace(/-/g, \"\\\\x2d\");\n })(e).replace(\"\\\\*\", \".+\")).test(window.location.hostname);\n };\n 0 === I.indexOf(E) ? y = !I.slice(E.length).split(\",\").some(P) : 0 === I.indexOf(O) ? y = I.slice(O.length).split(\",\").some(P) : console.log(\"Invalid \".concat(M, \" meta content attribute - must start with \").concat(E, \" or \").concat(O));\n } else y = !1;\n (function() {\n try {\n return localStorage.getItem(\"test\"), !0;\n } catch (e) {\n return !1;\n }\n })() || (console.warn(\"Disabling import-map-overrides, since local storage is not readable\"), y = !0), y || function() {\n var e, t = !!N && N.hasAttribute(\"server-cookie\"), n = !!N && N.hasAttribute(\"server-only\");\n window.importMapOverrides = {\n addOverride: function addOverride(e, n) {\n /^\\d+$/g.test(n) && (n = r.getUrlFromPort(e, n));\n var o = b + e;\n return localStorage.setItem(o, n), t && (document.cookie = \"\".concat(o, \"=\").concat(n)), i(), r.getOverrideMap();\n },\n getOverrideMap: function getOverrideMap() {\n for(var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0], t = {\n imports: {},\n scopes: {}\n }, n = r.getDisabledOverrides(), o = function o(r, o) {\n !e && n.indexOf(r) >= 0 || (t.imports[r] = o);\n }, i = 0; i < localStorage.length; i++){\n var _$l = localStorage.key(i);\n 0 === _$l.indexOf(b) && o(_$l.slice(b.length), localStorage.getItem(_$l));\n }\n var a = _(\"imo\", window.location != window.parent.location ? document.referrer : window.location.href);\n if (a) {\n var u;\n try {\n u = JSON.parse(a);\n } catch (e) {\n throw Error(\"Invalid importMap query param - text content must be json\");\n }\n Object.keys(u.imports).forEach(function(e) {\n o(e, u.imports[e]);\n });\n }\n return t;\n },\n removeOverride: function removeOverride(e) {\n var n = b + e, o = null !== localStorage.getItem(n);\n return localStorage.removeItem(n), t && (document.cookie = \"\".concat(n, \"=; expires=Thu, 01 Jan 1970 00:00:01 GMT;\")), r.enableOverride(e), i(), o;\n },\n resetOverrides: function resetOverrides() {\n return Object.keys(r.getOverrideMap(!0).imports).forEach(function(e) {\n r.removeOverride(e);\n }), localStorage.removeItem(w), localStorage.removeItem(x), i(), r.getOverrideMap();\n },\n hasOverrides: function hasOverrides() {\n return Object.keys(r.getOverrideMap().imports).length > 0;\n },\n getUrlFromPort: function getUrlFromPort(e, t) {\n var n = e.replace(/@/g, \"\").replace(/\\//g, \"-\");\n return \"//localhost:\".concat(t, \"/\").concat(n, \".js\");\n },\n enableUI: function enableUI() {\n var e = \"import-map-overrides-full\", t = \"show-when-local-storage\", n = document.querySelector(e);\n n || ((n = document.createElement(e)).setAttribute(t, \"true\"), document.body.appendChild(n));\n var r = n.getAttribute(t);\n r && (localStorage.setItem(r, !0), n.renderWithPreact());\n },\n mergeImportMap: function mergeImportMap(e, t) {\n var n = {\n imports: {},\n scopes: {}\n };\n for(var r in e.imports)n.imports[r] = e.imports[r];\n for(var o in t.imports)n.imports[o] = t.imports[o];\n for(var i in e.scopes)n.scopes[i] = e.scopes[i];\n for(var _$l in t.scopes)n.scopes[_$l] = t.scopes[_$l];\n return n;\n },\n getDefaultMap: function getDefaultMap() {\n return e || (e = Array.prototype.reduce.call(document.querySelectorAll('script[type=\"'.concat(U, '\"], script[type=\"overridable-importmap\"]')), function(e, t) {\n return t.hasAttribute(k) ? e : (n = t.src ? v(t.src) : Promise.resolve(JSON.parse(t.textContent)), Promise.all([\n e,\n n\n ]).then(function(e) {\n var _$t = f(e, 2), n = _$t[0], o = _$t[1];\n return r.mergeImportMap(n, o);\n }));\n var n;\n }, Promise.resolve({\n imports: {},\n scopes: {}\n })));\n },\n getCurrentPageMap: function getCurrentPageMap() {\n return Promise.all([\n r.getDefaultMap(),\n r.getExternalOverrideMap(r.getCurrentPageExternalOverrides())\n ]).then(function(e) {\n var t = f(e, 2), n = t[0], o = t[1];\n return r.mergeImportMap(r.mergeImportMap(n, o), u);\n });\n },\n getCurrentPageExternalOverrides: function getCurrentPageExternalOverrides() {\n var e = [];\n return document.querySelectorAll(\"[\".concat(k, ']:not([id=\"import-map-overrides\"])')).forEach(function(t) {\n e.push(t.src);\n }), e;\n },\n getNextPageMap: function getNextPageMap() {\n return Promise.all([\n r.getDefaultMap(),\n r.getExternalOverrideMap()\n ]).then(function(e) {\n var t = f(e, 2), n = t[0], o = t[1];\n return r.mergeImportMap(r.mergeImportMap(n, o), r.getOverrideMap());\n });\n },\n disableOverride: function disableOverride(e) {\n var t = r.getDisabledOverrides();\n return !g(t, e) && (localStorage.setItem(w, JSON.stringify(t.concat(e))), i(), !0);\n },\n enableOverride: function enableOverride(e) {\n var t = r.getDisabledOverrides(), n = t.indexOf(e);\n return n >= 0 && (t.splice(n, 1), localStorage.setItem(w, JSON.stringify(t)), i(), !0);\n },\n getDisabledOverrides: function getDisabledOverrides() {\n var e = localStorage.getItem(w);\n return e ? JSON.parse(e) : [];\n },\n isDisabled: function isDisabled(e) {\n return g(r.getDisabledOverrides(), e);\n },\n getExternalOverrides: function getExternalOverrides() {\n var e = localStorage.getItem(x);\n return e ? JSON.parse(e).sort() : [];\n },\n addExternalOverride: function addExternalOverride(e) {\n e = new URL(e, document.baseURI).href;\n var t = r.getExternalOverrides();\n return !g(t, e) && (localStorage.setItem(x, JSON.stringify(t.concat(e))), i(), !0);\n },\n removeExternalOverride: function removeExternalOverride(e) {\n var t = r.getExternalOverrides();\n return !!g(t, e) && (localStorage.setItem(x, JSON.stringify(t.filter(function(t) {\n return t !== e;\n }))), i(), !0);\n },\n getExternalOverrideMap: function getExternalOverrideMap() {\n return (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : r.getExternalOverrides()).reduce(function(e, t) {\n var n = C[t] || (C[t] = v(t));\n return Promise.all([\n e,\n n\n ]).then(function(e) {\n var _$t = f(e, 2), n = _$t[0], o = _$t[1];\n return r.mergeImportMap(n, o);\n });\n }, Promise.resolve({\n imports: {},\n scopes: {}\n }));\n },\n isExternalMapValid: function isExternalMapValid(e) {\n return (C[e] || (C[e] = v(e))).then(function() {\n return g(r.invalidExternalMaps, e);\n });\n },\n invalidExternalMaps: []\n };\n var r = window.importMapOverrides, o = !0;\n try {\n CustomEvent ? new CustomEvent(\"a\") : o = !1;\n } catch (e) {\n o = !1;\n }\n function i() {\n l(\"change\");\n }\n function l(e) {\n setTimeout(function() {\n var t = \"import-map-overrides:\".concat(e), n = o ? new CustomEvent(t) : document.createEvent(\"CustomEvent\");\n o || n.initCustomEvent(t, !0, !0, null), window.dispatchEvent(n);\n });\n }\n var a, u = r.getOverrideMap(), s = r.getExternalOverrides();\n if (!n) {\n var d = document.querySelector('script[type=\"overridable-importmap\"]');\n if (!(a = d)) {\n var c = document.querySelectorAll('script[type=\"'.concat(U, '\"]'));\n a = c ? c[c.length - 1] : null;\n }\n if (d) {\n if (d.src) throw Error('import-map-overrides: external import maps with type=\"overridable-importmap\" are not supported');\n var p;\n try {\n p = JSON.parse(d.textContent);\n } catch (e) {\n throw Error('Invalid <script type=\"overridable-importmap\"> - text content must be json');\n }\n a = m(r.mergeImportMap(p, u), \"import-map-overrides\", a), h();\n } else h(), Object.keys(u.imports).length > 0 && (a = m(u, \"import-map-overrides\", a));\n }\n function m(e, t, n) {\n var r = document.createElement(\"script\");\n return r.type = U, r.id = t, r.setAttribute(k, \"\"), \"string\" == typeof e ? r.src = e : r.textContent = JSON.stringify(e, null, 2), n ? n.insertAdjacentElement(\"afterend\", r) : document.head.appendChild(r), r;\n }\n function v(e) {\n return fetch(e).then(function(e) {\n return e.ok ? e.json().catch(function(t) {\n return console.warn(Error(\"External override import map contained invalid json, at url \".concat(e.url, \". \").concat(t))), r.invalidExternalMaps.push(e.url), {\n imports: {},\n scopes: {}\n };\n }) : (console.warn(Error(\"Unable to download external override import map from url \".concat(e.url, \". Server responded with status \").concat(e.status))), r.invalidExternalMaps.push(e.url), {\n imports: {},\n scopes: {}\n });\n }, function() {\n return console.warn(Error(\"Unable to download external import map at url '\".concat(e, \"'\"))), r.invalidExternalMaps.push(new URL(e, document.baseURI).href), {\n imports: {},\n scopes: {}\n };\n });\n }\n function h() {\n s.length > 0 && s.forEach(function(e, t) {\n a = m(e, \"import-map-overrides-external-\".concat(t));\n });\n }\n l(\"init\");\n }();\n var D = \".imo-unstyled {\\n border: none;\\n padding: 0;\\n width: auto;\\n overflow: visible;\\n background: transparent;\\n color: inherit;\\n font: inherit;\\n line-height: normal;\\n cursor: pointer;\\n -webkit-font-smoothing: inherit;\\n -moz-osx-font-smoothing: inherit;\\n -webkit-appearance: none;\\n}\\n\\n.imo-unstyled::-moz-focus-inner {\\n border: 0;\\n padding: 0;\\n}\\n\\n.imo-trigger {\\n position: fixed;\\n bottom: 0;\\n right: 0;\\n margin: 10px;\\n border-radius: 5px;\\n background-color: navajowhite;\\n height: 50px;\\n width: 50px;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n font-size: 18px;\\n font-family: sans-serif;\\n z-index: 10500;\\n}\\n\\n.imo-popup {\\n box-sizing: border-box;\\n position: fixed;\\n bottom: 0;\\n left: 0;\\n width: 100%;\\n height: 50%;\\n z-index: 10000;\\n background-color: black;\\n color: white;\\n font-family: sans-serif;\\n padding: 24px;\\n overflow-y: auto;\\n}\\n\\n.imo-popup a:visited,\\n.imo-popup a {\\n color: white;\\n}\\n\\n.imo-popup .imo-module-dialog {\\n left: calc(50% - 200px);\\n}\\n\\n.imo-header {\\n display: flex;\\n justify-content: space-between;\\n align-items: flex-start;\\n}\\n\\n.imo-list {\\n margin-left: 16px;\\n}\\n\\n.imo-list > *:not(:last-child) {\\n margin-bottom: 8px;\\n}\\n\\n.imo-list-container *,\\n.imo-modal-container * {\\n font-family: sans-serif;\\n box-sizing: border-box;\\n}\\n\\n.imo-module-dialog {\\n position: fixed;\\n z-index: 30000000;\\n top: 30%;\\n max-width: 600px;\\n margin: 0 auto;\\n border: 4px solid navajowhite;\\n background-color: white;\\n padding: 1em;\\n left: 50%;\\n right: auto;\\n transform: translateX(-50%);\\n}\\n\\n.imo-module-dialog input {\\n width: 100%;\\n font-size: 16px;\\n box-sizing: border-box;\\n padding-right: 20px;\\n}\\n\\n.imo-module-dialog table {\\n margin-bottom: 16px;\\n}\\n\\n.imo-module-dialog table td:first-child {\\n text-align: right;\\n padding-right: 16px;\\n word-break: keep-all;\\n}\\n\\n.imo-module-dialog table td {\\n word-break: break-all;\\n}\\n\\n.imo-module-dialog.imo-overridden {\\n border: 4px solid salmon;\\n}\\n\\n.imo-table-header-actions {\\n display: flex;\\n align-items: center;\\n}\\n\\n.imo-overrides-table {\\n border-collapse: collapse;\\n margin-top: 32px;\\n}\\n\\n.imo-overrides-table tr td:first-child {\\n display: flex;\\n align-items: center;\\n padding-right: 32px;\\n position: relative;\\n}\\n\\n.imo-needs-refresh {\\n position: absolute;\\n right: 8px;\\n width: 20px;\\n height: 20px;\\n /* base64 encoded 27F2 svg */\\n background-image: url(\\\"data:image/svg+xml;charset=utf8,%3Csvg width='261' height='216' xmlns='http://www.w3.org/2000/svg' stroke='%23ffffff' stroke-linecap='square' stroke-miterlimit='10' shape-rendering='auto' stroke-opacity='1' fill='%23ffffff' stroke-dasharray='none' stroke-width='1' stroke-linejoin='miter' stroke-dashoffset='0'%3E%3Cg%3E%3Cpath fill='%23ffffff' d='m152.5625,214.0625q-27.5625,0 -49.6406,-11.8125q-22.0781,-11.8125 -34.7344,-28.4062l12.6563,-11.5313q10.6874,15.1875 31.0781,25.0313q20.3906,9.8437 40.6406,9.8437q21.375,0 44.1563,-11.5313q22.7812,-11.5312 34.3124,-34.3124q11.5313,-22.7813 11.5313,-44.1563q0,-21.375 -11.5313,-44.1563q-11.5312,-22.7812 -34.3124,-34.3124q-22.7813,-11.5313 -44.1563,-11.5313q-19.9687,0 -39.6563,9.1406q-19.6874,9.1407 -30.9374,24.1875q-11.25,15.0469 -16.7344,35.7188l42.3281,-34.7344l-54,91.6875l-54,-91.6875l47.25,38.8125q3.9375,-24.4687 17.4375,-44.5781q13.5,-20.1094 36.9844,-32.7656q23.4844,-12.6563 51.3281,-12.6563q29.25,0 54,14.0625q24.75,14.0625 38.8125,38.8125q14.0625,24.75 14.0625,54q0,29.25 -14.0625,54q-14.0625,24.75 -38.8125,38.8125q-24.75,14.0625 -54,14.0625z' /%3E%3C/g%3E%3C/svg%3E\\\");\\n background-size: contain;\\n background-repeat: no-repeat;\\n background-position: center;\\n}\\n\\n.imo-status {\\n height: 16px;\\n width: 16px;\\n border-radius: 8px;\\n border: 1px solid white;\\n margin-right: 8px;\\n}\\n\\n.imo-disabled-override {\\n background-color: lightblue;\\n}\\n\\n.imo-next-override {\\n background-color: darkred;\\n}\\n\\n.imo-current-override {\\n background-color: salmon;\\n}\\n\\n.imo-default-module {\\n background-color: lightgoldenrodyellow;\\n}\\n\\n.imo-external-override {\\n background-color: orange;\\n}\\n\\n.imo-next-default {\\n background-color: darkgoldenrod;\\n}\\n\\n.imo-dev-lib-override {\\n background-color: lightpink;\\n}\\n\\n.imo-overrides-table tbody tr:hover {\\n cursor: pointer;\\n background-color: #404040;\\n}\\n\\n.imo-overrides-table td,\\n.imo-overrides-table th {\\n line-height: 18px;\\n padding: 16px;\\n border: 1px solid white;\\n}\\n\\n.imo-add-new {\\n margin-left: 16px;\\n}\\n\\n.imo-add-new button {\\n color: black;\\n}\\n\\n.imo-clear-input {\\n position: absolute;\\n top: 0;\\n right: 4px;\\n cursor: pointer;\\n display: flex;\\n align-items: center;\\n height: 100%;\\n}\\n\\n.imo-modal-container {\\n font-family: sans-serif;\\n}\\n\\n.imo-modal {\\n background-color: rgba(61, 70, 77, 0.6);\\n position: fixed;\\n width: 100vw;\\n height: 100vh;\\n top: 0;\\n left: 0;\\n z-index: 20000000;\\n}\\n\\n.imo-list-search,\\n.imo-list-container button,\\n.imo-modal-container button {\\n font-size: 14px;\\n height: 27px;\\n line-height: 27px;\\n}\\n\\n.imo-list-search {\\n line-height: 22px;\\n border: none;\\n padding: 5px;\\n color: black;\\n}\\n\";\n !function(e, t) {\n void 0 === t && (t = {});\n var n = t.insertAt;\n if (\"undefined\" != typeof document) {\n var r = document.head || document.getElementsByTagName(\"head\")[0], o = document.createElement(\"style\");\n o.type = \"text/css\", \"top\" === n && r.firstChild ? r.insertBefore(o, r.firstChild) : r.appendChild(o), o.styleSheet ? o.styleSheet.cssText = e : o.appendChild(document.createTextNode(e));\n }\n }(D);\n var A, j, L, R, q, T, F = {}, W = [], z = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n function J(e, t) {\n for(var n in t)e[n] = t[n];\n return e;\n }\n function $(e) {\n var t = e.parentNode;\n t && t.removeChild(e);\n }\n function B(e, t, n) {\n var r, o, i, l = {};\n for(i in t)\"key\" == i ? r = t[i] : \"ref\" == i ? o = t[i] : l[i] = t[i];\n if (arguments.length > 2 && (l.children = arguments.length > 3 ? A.call(arguments, 2) : n), \"function\" == typeof e && null != e.defaultProps) for(i in e.defaultProps)void 0 === l[i] && (l[i] = e.defaultProps[i]);\n return V(e, l, r, o, null);\n }\n function V(e, t, n, r, o) {\n var i = {\n type: e,\n props: t,\n key: n,\n ref: r,\n __k: null,\n __: null,\n __b: 0,\n __e: null,\n __d: void 0,\n __c: null,\n __h: null,\n constructor: void 0,\n __v: null == o ? ++L : o\n };\n return null != j.vnode && j.vnode(i), i;\n }\n function H(e) {\n return e.children;\n }\n function G(e, t) {\n this.props = e, this.context = t;\n }\n function X(e, t) {\n if (null == t) return e.__ ? X(e.__, e.__.__k.indexOf(e) + 1) : null;\n for(var n; t < e.__k.length; t++)if (null != (n = e.__k[t]) && null != n.__e) return n.__e;\n return \"function\" == typeof e.type ? X(e) : null;\n }\n function K(e) {\n var t, n;\n if (null != (e = e.__) && null != e.__c) {\n for(e.__e = e.__c.base = null, t = 0; t < e.__k.length; t++)if (null != (n = e.__k[t]) && null != n.__e) {\n e.__e = e.__c.base = n.__e;\n break;\n }\n return K(e);\n }\n }\n function Q(e) {\n (!e.__d && (e.__d = !0) && R.push(e) && !Y.__r++ || T !== j.debounceRendering) && ((T = j.debounceRendering) || q)(Y);\n }\n function Y() {\n for(var e; Y.__r = R.length;)e = R.sort(function(e, t) {\n return e.__v.__b - t.__v.__b;\n }), R = [], e.some(function(e) {\n var t, n, r, o, i, l;\n e.__d && (i = (o = (t = e).__v).__e, (l = t.__P) && (n = [], (r = J({}, o)).__v = o.__v + 1, le(l, o, r, t.__n, void 0 !== l.ownerSVGElement, null != o.__h ? [\n i\n ] : null, n, null == i ? X(o) : i, o.__h), ae(n, o), o.__e != i && K(o)));\n });\n }\n function Z(e, t, n, r, o, i, l, a, u, s) {\n var d, c, p, m, f, v, h, g = r && r.__k || W, _ = g.length;\n for(n.__k = [], d = 0; d < t.length; d++)if (null != (m = n.__k[d] = null == (m = t[d]) || \"boolean\" == typeof m ? null : \"string\" == typeof m || \"number\" == typeof m || \"bigint\" == (typeof m === \"undefined\" ? \"undefined\" : _type_of(m)) ? V(null, m, null, null, m) : Array.isArray(m) ? V(H, {\n children: m\n }, null, null, null) : m.__b > 0 ? V(m.type, m.props, m.key, null, m.__v) : m)) {\n if (m.__ = n, m.__b = n.__b + 1, null === (p = g[d]) || p && m.key == p.key && m.type === p.type) g[d] = void 0;\n else for(c = 0; c < _; c++){\n if ((p = g[c]) && m.key == p.key && m.type === p.type) {\n g[c] = void 0;\n break;\n }\n p = null;\n }\n le(e, m, p = p || F, o, i, l, a, u, s), f = m.__e, (c = m.ref) && p.ref != c && (h || (h = []), p.ref && h.push(p.ref, null, m), h.push(c, m.__c || f, m)), null != f ? (null == v && (v = f), \"function\" == typeof m.type && null != m.__k && m.__k === p.__k ? m.__d = u = ee(m, u, e) : u = te(e, m, p, g, f, u), s || \"option\" !== n.type ? \"function\" == typeof n.type && (n.__d = u) : e.value = \"\") : u && p.__e == u && u.parentNode != e && (u = X(p));\n }\n for(n.__e = v, d = _; d--;)null != g[d] && (\"function\" == typeof n.type && null != g[d].__e && g[d].__e == n.__d && (n.__d = X(r, d + 1)), de(g[d], g[d]));\n if (h) for(d = 0; d < h.length; d++)se(h[d], h[++d], h[++d]);\n }\n function ee(e, t, n) {\n var r, o;\n for(r = 0; r < e.__k.length; r++)(o = e.__k[r]) && (o.__ = e, t = \"function\" == typeof o.type ? ee(o, t, n) : te(n, o, o, e.__k, o.__e, t));\n return t;\n }\n function te(e, t, n, r, o, i) {\n var l, a, u;\n if (void 0 !== t.__d) l = t.__d, t.__d = void 0;\n else if (null == n || o != i || null == o.parentNode) e: if (null == i || i.parentNode !== e) e.appendChild(o), l = null;\n else {\n for(a = i, u = 0; (a = a.nextSibling) && u < r.length; u += 2)if (a == o) break e;\n e.insertBefore(o, i), l = i;\n }\n return void 0 !== l ? l : o.nextSibling;\n }\n function ne(e, t, n) {\n \"-\" === t[0] ? e.setProperty(t, n) : e[t] = null == n ? \"\" : \"number\" != typeof n || z.test(t) ? n : n + \"px\";\n }\n function re(e, t, n, r, o) {\n var i;\n e: if (\"style\" === t) if (\"string\" == typeof n) e.style.cssText = n;\n else {\n if (\"string\" == typeof r && (e.style.cssText = r = \"\"), r) for(t in r)n && t in n || ne(e.style, t, \"\");\n if (n) for(t in n)r && n[t] === r[t] || ne(e.style, t, n[t]);\n }\n else if (\"o\" === t[0] && \"n\" === t[1]) i = t !== (t = t.replace(/Capture$/, \"\")), t = t.toLowerCase() in e ? t.toLowerCase().slice(2) : t.slice(2), e.l || (e.l = {}), e.l[t + i] = n, n ? r || e.addEventListener(t, i ? ie : oe, i) : e.removeEventListener(t, i ? ie : oe, i);\n else if (\"dangerouslySetInnerHTML\" !== t) {\n if (o) t = t.replace(/xlink[H:h]/, \"h\").replace(/sName$/, \"s\");\n else if (\"href\" !== t && \"list\" !== t && \"form\" !== t && \"tabIndex\" !== t && \"download\" !== t && t in e) try {\n e[t] = null == n ? \"\" : n;\n break e;\n } catch (e) {}\n \"function\" == typeof n || (null != n && (!1 !== n || \"a\" === t[0] && \"r\" === t[1]) ? e.setAttribute(t, n) : e.removeAttribute(t));\n }\n }\n function oe(e) {\n this.l[e.type + !1](j.event ? j.event(e) : e);\n }\n function ie(e) {\n this.l[e.type + !0](j.event ? j.event(e) : e);\n }\n function le(e, t, n, r, o, i, l, a, u) {\n var s, d, c, p, m, f, v, h, g, _, y, b = t.type;\n if (void 0 !== t.constructor) return null;\n null != n.__h && (u = n.__h, a = t.__e = n.__e, t.__h = null, i = [\n a\n ]), (s = j.__b) && s(t);\n try {\n e: if (\"function\" == typeof b) {\n if (h = t.props, g = (s = b.contextType) && r[s.__c], _ = s ? g ? g.props.value : s.__ : r, n.__c ? v = (d = t.__c = n.__c).__ = d.__E : (\"prototype\" in b && b.prototype.render ? t.__c = d = new b(h, _) : (t.__c = d = new G(h, _), d.constructor = b, d.render = ce), g && g.sub(d), d.props = h, d.state || (d.state = {}), d.context = _, d.__n = r, c = d.__d = !0, d.__h = []), null == d.__s && (d.__s = d.state), null != b.getDerivedStateFromProps && (d.__s == d.state && (d.__s = J({}, d.__s)), J(d.__s, b.getDerivedStateFromProps(h, d.__s))), p = d.props, m = d.state, c) null == b.getDerivedStateFromProps && null != d.componentWillMount && d.componentWillMount(), null != d.componentDidMount && d.__h.push(d.componentDidMount);\n else {\n if (null == b.getDerivedStateFromProps && h !== p && null != d.componentWillReceiveProps && d.componentWillReceiveProps(h, _), !d.__e && null != d.shouldComponentUpdate && !1 === d.shouldComponentUpdate(h, d.__s, _) || t.__v === n.__v) {\n d.props = h, d.state = d.__s, t.__v !== n.__v && (d.__d = !1), d.__v = t, t.__e = n.__e, t.__k = n.__k, t.__k.forEach(function(e) {\n e && (e.__ = t);\n }), d.__h.length && l.push(d);\n break e;\n }\n null != d.componentWillUpdate && d.componentWillUpdate(h, d.__s, _), null != d.componentDidUpdate && d.__h.push(function() {\n d.componentDidUpdate(p, m, f);\n });\n }\n d.context = _, d.props = h, d.state = d.__s, (s = j.__r) && s(t), d.__d = !1, d.__v = t, d.__P = e, s = d.render(d.props, d.state, d.context), d.state = d.__s, null != d.getChildContext && (r = J(J({}, r), d.getChildContext())), c || null == d.getSnapshotBeforeUpdate || (f = d.getSnapshotBeforeUpdate(p, m)), y = null != s && s.type === H && null == s.key ? s.props.children : s, Z(e, Array.isArray(y) ? y : [\n y\n ], t, n, r, o, i, l, a, u), d.base = t.__e, t.__h = null, d.__h.length && l.push(d), v && (d.__E = d.__ = null), d.__e = !1;\n } else null == i && t.__v === n.__v ? (t.__k = n.__k, t.__e = n.__e) : t.__e = ue(n.__e, t, n, r, o, i, l, u);\n (s = j.diffed) && s(t);\n } catch (e) {\n t.__v = null, (u || null != i) && (t.__e = a, t.__h = !!u, i[i.indexOf(a)] = null), j.__e(e, t, n);\n }\n }\n function ae(e, t) {\n j.__c && j.__c(t, e), e.some(function(t) {\n try {\n e = t.__h, t.__h = [], e.some(function(e) {\n e.call(t);\n });\n } catch (e) {\n j.__e(e, t.__v);\n }\n });\n }\n function ue(e, t, n, r, o, i, l, a) {\n var u, s, d, c = n.props, p = t.props, m = t.type, f = 0;\n if (\"svg\" === m && (o = !0), null != i) {\n for(; f < i.length; f++)if ((u = i[f]) && (u === e || (m ? u.localName == m : 3 == u.nodeType))) {\n e = u, i[f] = null;\n break;\n }\n }\n if (null == e) {\n if (null === m) return document.createTextNode(p);\n e = o ? document.createElementNS(\"http://www.w3.org/2000/svg\", m) : document.createElement(m, p.is && p), i = null, a = !1;\n }\n if (null === m) c === p || a && e.data === p || (e.data = p);\n else {\n if (i = i && A.call(e.childNodes), s = (c = n.props || F).dangerouslySetInnerHTML, d = p.dangerouslySetInnerHTML, !a) {\n if (null != i) for(c = {}, f = 0; f < e.attributes.length; f++)c[e.attributes[f].name] = e.attributes[f].value;\n (d || s) && (d && (s && d.__html == s.__html || d.__html === e.innerHTML) || (e.innerHTML = d && d.__html || \"\"));\n }\n if (function(e, t, n, r, o) {\n var _$i;\n for(_$i in n)\"children\" === _$i || \"key\" === _$i || _$i in t || re(e, _$i, null, n[_$i], r);\n for(_$i in t)o && \"function\" != typeof t[_$i] || \"children\" === _$i || \"key\" === _$i || \"value\" === _$i || \"checked\" === _$i || n[_$i] === t[_$i] || re(e, _$i, t[_$i], n[_$i], r);\n }(e, p, c, o, a), d) t.__k = [];\n else if (f = t.props.children, Z(e, Array.isArray(f) ? f : [\n f\n ], t, n, r, o && \"foreignObject\" !== m, i, l, i ? i[0] : n.__k && X(n, 0), a), null != i) for(f = i.length; f--;)null != i[f] && $(i[f]);\n a || (\"value\" in p && void 0 !== (f = p.value) && (f !== e.value || \"progress\" === m && !f) && re(e, \"value\", f, c.value, !1), \"checked\" in p && void 0 !== (f = p.checked) && f !== e.checked && re(e, \"checked\", f, c.checked, !1));\n }\n return e;\n }\n function se(e, t, n) {\n try {\n \"function\" == typeof e ? e(t) : e.current = t;\n } catch (e) {\n j.__e(e, n);\n }\n }\n function de(e, t, n) {\n var r, o;\n if (j.unmount && j.unmount(e), (r = e.ref) && (r.current && r.current !== e.__e || se(r, null, t)), null != (r = e.__c)) {\n if (r.componentWillUnmount) try {\n r.componentWillUnmount();\n } catch (e) {\n j.__e(e, t);\n }\n r.base = r.__P = null;\n }\n if (r = e.__k) for(o = 0; o < r.length; o++)r[o] && de(r[o], t, \"function\" != typeof e.type);\n n || null == e.__e || $(e.__e), e.__e = e.__d = void 0;\n }\n function ce(e, t, n) {\n return this.constructor(e, n);\n }\n function pe(e, t, n) {\n var r, o, i;\n j.__ && j.__(e, t), o = (r = \"function\" == typeof n) ? null : n && n.__k || t.__k, i = [], le(t, e = (!r && n || t).__k = B(H, null, [\n e\n ]), o || F, F, void 0 !== t.ownerSVGElement, !r && n ? [\n n\n ] : o ? null : t.firstChild ? A.call(t.childNodes) : null, i, !r && n ? n : o ? o.__e : t.firstChild, r), ae(i, e);\n }\n A = W.slice, j = {\n __e: function __e(e, t) {\n for(var n, r, o; t = t.__;)if ((n = t.__c) && !n.__) try {\n if ((r = n.constructor) && null != r.getDerivedStateFromError && (n.setState(r.getDerivedStateFromError(e)), o = n.__d), null != n.componentDidCatch && (n.componentDidCatch(e), o = n.__d), o) return n.__E = n;\n } catch (t) {\n e = t;\n }\n throw e;\n }\n }, L = 0, G.prototype.setState = function(e, t) {\n var n;\n n = null != this.__s && this.__s !== this.state ? this.__s : this.__s = J({}, this.state), \"function\" == typeof e && (e = e(J({}, n), this.props)), e && J(n, e), null != e && this.__v && (t && this.__h.push(t), Q(this));\n }, G.prototype.forceUpdate = function(e) {\n this.__v && (this.__e = !0, e && this.__h.push(e), Q(this));\n }, G.prototype.render = H, R = [], q = \"function\" == typeof Promise ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, Y.__r = 0;\n var me = function(e) {\n i(l, e);\n var n = m(l);\n function l() {\n var _$e;\n t(this, l);\n for(var _$r = arguments.length, _$i = new Array(_$r), a = 0; a < _$r; a++)_$i[a] = arguments[a];\n return o(c(_$e = n.call.apply(n, [\n this\n ].concat(_$i))), \"getInitialOverrideUrl\", function() {\n var _$t = new RegExp(\"//localhost:([0-9]+)/\").exec(_$e.props.module.overrideUrl);\n return _$t && _$e.props.module.overrideUrl === window.importMapOverrides.getUrlFromPort(_$e.props.module.moduleName, _$t[1]) ? _$t[1] : _$e.props.module.overrideUrl ? _$e.props.module.overrideUrl : \"\";\n }), o(c(_$e), \"state\", {\n overrideUrl: _$e.getInitialOverrideUrl(),\n moduleName: \"\"\n }), o(c(_$e), \"inputEl\", null), o(c(_$e), \"moduleNameEl\", null), o(c(_$e), \"handleInputRef\", function(t) {\n _$e.inputEl = t;\n }), o(c(_$e), \"handleModuleNameRef\", function(t) {\n _$e.moduleNameEl = t;\n }), o(c(_$e), \"dialogRef\", function(t) {\n _$e.dialogEl = t;\n }), o(c(_$e), \"handleSubmit\", function(t) {\n t.preventDefault(), _$e.props.module.moduleName && window.importMapOverrides.isDisabled(_$e.props.module.moduleName) && window.importMapOverrides.enableOverride(_$e.props.module.moduleName), _$e.props.module.isNew ? _$e.props.addNewModule(_$e.state.moduleName, _$e.state.overrideUrl) : _$e.props.updateModuleUrl(_$e.state.overrideUrl);\n }), o(c(_$e), \"getDerivedUrl\", function() {\n var _$t = _$e.props.module.isNew ? _$e.state.moduleName : _$e.props.module.moduleName;\n return fe.test(_$e.state.overrideUrl) ? window.importMapOverrides.getUrlFromPort(_$t, _$e.state.overrideUrl) : _$e.state.overrideUrl;\n }), o(c(_$e), \"keyDown\", function(t) {\n \"Escape\" === t.key && (t.stopPropagation(), _$e.props.cancel());\n }), o(c(_$e), \"focusFirstInput\", function() {\n (_$e.moduleNameEl || _$e.inputEl).select();\n }), o(c(_$e), \"clearModuleName\", function() {\n _$e.setState({\n moduleName: \"\"\n }, function() {\n _$e.focusFirstInput();\n });\n }), o(c(_$e), \"clearInput\", function() {\n _$e.setState({\n overrideUrl: \"\"\n }, function() {\n _$e.focusFirstInput();\n });\n }), _$e;\n }\n return r(l, [\n {\n key: \"componentDidMount\",\n value: function value() {\n this.focusFirstInput(), this.dialogEl.addEventListener(\"keydown\", this.keyDown);\n }\n },\n {\n key: \"componentDidUpdate\",\n value: function value(e, t) {\n var n = this;\n this.props.module !== e.module && this.setState({\n overrideUrl: this.props.module.overrideUrl || \"\"\n }, function() {\n n.focusFirstInput();\n });\n }\n },\n {\n key: \"componentWillUnmount\",\n value: function value() {\n this.dialogEl.removeEventListener(\"keydown\", this.keyDown);\n }\n },\n {\n key: \"render\",\n value: function value(e) {\n var t = this, n = e.module;\n return B(\"div\", {\n className: \"imo-modal-container\"\n }, B(\"div\", {\n className: \"imo-modal\"\n }), B(\"dialog\", {\n className: \"imo-module-dialog \".concat(this.state.overrideUrl.length > 0 ? \"imo-overridden\" : \"imo-default\"),\n open: !0,\n ref: this.dialogRef\n }, B(\"form\", {\n method: \"dialog\",\n onSubmit: this.handleSubmit\n }, B(\"h3\", {\n style: {\n marginTop: 0\n }\n }, n.moduleName), B(\"table\", null, B(\"tbody\", null, !n.isNew && B(\"tr\", null, B(\"td\", null, \"Default URL:\"), B(\"td\", null, n.defaultUrl)), n.isNew && B(\"tr\", null, B(\"td\", null, B(\"span\", {\n id: \"module-name-label\"\n }, \"Module Name:\")), B(\"td\", {\n style: {\n position: \"relative\"\n }\n }, B(\"input\", {\n type: \"text\",\n tabIndex: 1,\n value: this.state.moduleName,\n \"aria-labelledby\": \"module-name-label\",\n onInput: function onInput(e) {\n return t.setState({\n moduleName: e.target.value\n });\n },\n ref: this.handleModuleNameRef,\n required: !0\n }), B(\"div\", {\n role: \"button\",\n tabIndex: 3,\n className: \"imo-clear-input\",\n onClick: this.clearModuleName\n }, B(\"div\", null, \"ⓧ\")))), B(\"tr\", null, B(\"td\", null, B(\"span\", {\n id: \"override-url-label\"\n }, \"Override URL:\")), B(\"td\", {\n style: {\n position: \"relative\"\n }\n }, B(\"input\", {\n ref: this.handleInputRef,\n type: \"text\",\n value: this.state.overrideUrl,\n \"aria-labelledby\": \"override-url-label\",\n tabIndex: 2,\n onInput: function onInput(e) {\n return t.setState({\n overrideUrl: e.target.value\n });\n }\n }), B(\"div\", {\n role: \"button\",\n tabIndex: 4,\n className: \"imo-clear-input\",\n onClick: this.clearInput\n }, B(\"div\", null, \"ⓧ\")))), fe.test(this.state.overrideUrl) && B(\"tr\", null, B(\"td\", null, \"Derived url:\"), B(\"td\", null, this.getDerivedUrl())))), B(\"div\", {\n className: \"imo-dialog-actions\"\n }, B(\"button\", {\n type: \"button\",\n tabIndex: 5,\n onClick: this.props.cancel,\n style: {\n marginRight: \"16px\"\n }\n }, \"Cancel\"), this.props.module.overrideUrl && !this.props.module.disabled && B(\"button\", {\n type: \"button\",\n onClick: function onClick() {\n t.props.module.disabled ? window.importMapOverrides.enableOverride(t.props.module.moduleName) : window.importMapOverrides.disableOverride(t.props.module.moduleName), t.props.cancel();\n },\n tabIndex: 6,\n style: {\n marginRight: \"16px\"\n }\n }, this.props.module.disabled ? \"Enable\" : \"Disable\", \" Override\"), B(\"button\", {\n type: \"submit\",\n tabIndex: 7,\n className: this.state.overrideUrl ? \"imo-overridden\" : \"imo-default\"\n }, this.state.overrideUrl ? \"Apply override\" : \"Reset to default\")))));\n }\n }\n ]), l;\n }(G), fe = /^\\d+$/, ve = function(e) {\n i(l, e);\n var n = m(l);\n function l() {\n var _$e;\n t(this, l);\n for(var _$r = arguments.length, _$i = new Array(_$r), a = 0; a < _$r; a++)_$i[a] = arguments[a];\n return o(c(_$e = n.call.apply(n, [\n this\n ].concat(_$i))), \"state\", {\n url: _$e.props.dialogExternalMap.isNew ? \"\" : _$e.props.dialogExternalMap.url\n }), o(c(_$e), \"inputEl\", null), o(c(_$e), \"handleSubmit\", function(t) {\n t.preventDefault(), _$e.props.dialogExternalMap.isNew || window.importMapOverrides.removeExternalOverride(_$e.props.dialogExternalMap.url), _$e.state.url && window.importMapOverrides.addExternalOverride(_$e.state.url), _$e.props.cancel();\n }), o(c(_$e), \"keyDown\", function(t) {\n \"Escape\" === t.key && (t.stopPropagation(), _$e.props.cancel());\n }), _$e;\n }\n return r(l, [\n {\n key: \"componentDidMount\",\n value: function value() {\n this.inputEl.focus(), this.dialogEl.addEventListener(\"keydown\", this.keyDown);\n }\n },\n {\n key: \"componentWillUnmount\",\n value: function value() {\n this.dialogEl.removeEventListener(\"keydown\", this.keyDown);\n }\n },\n {\n key: \"render\",\n value: function value() {\n var _$e = this;\n return B(\"div\", {\n className: \"imo-modal-container\"\n }, B(\"div\", {\n className: \"imo-modal\"\n }), B(\"dialog\", {\n className: \"imo-module-dialog\",\n open: !0,\n ref: function ref(t) {\n return _$e.dialogEl = t;\n }\n }, B(\"form\", {\n method: \"dialog\",\n onSubmit: this.handleSubmit\n }, B(\"h3\", {\n style: {\n marginTop: 0\n }\n }, this.props.dialogExternalMap.isNew ? \"Add External Import Map\" : \"Edit External Import Map\"), B(\"div\", {\n style: {\n marginBottom: \"20px\"\n }\n }, B(\"label\", {\n htmlFor: \"external-importmap-url\"\n }, \"URL to import map:\"), B(\"span\", {\n style: {\n position: \"relative\"\n }\n }, B(\"input\", {\n id: \"external-importmap-url\",\n type: \"text\",\n value: this.state.url,\n onInput: function onInput(t) {\n return _$e.setState({\n url: t.target.value\n });\n },\n ref: function ref(t) {\n return _$e.inputEl = t;\n },\n required: this.props.dialogExternalMap.isNew\n }), B(\"div\", {\n role: \"button\",\n tabIndex: 0,\n className: \"imo-clear-input\",\n onClick: function onClick() {\n return _$e.setState({\n url: \"\"\n });\n }\n }, B(\"div\", null, \"ⓧ\")))), B(\"div\", {\n className: \"imo-dialog-actions\"\n }, B(\"button\", {\n type: \"button\",\n onClick: this.props.cancel,\n style: {\n marginRight: \"16px\"\n }\n }, \"Cancel\"), B(\"button\", {\n type: \"submit\",\n className: this.state.url ? \"imo-overridden\" : \"imo-default\"\n }, this.state.url || this.props.dialogExternalMap.isNew ? \"Apply override\" : \"Remove override\")))));\n }\n }\n ]), l;\n }(G), he = function(e) {\n i(o, e);\n var n = m(o);\n function o() {\n return t(this, o), n.apply(this, arguments);\n }\n return r(o, [\n {\n key: \"componentDidMount\",\n value: function value() {\n window.importMapOverrides.getCurrentPageMap().then(ye);\n }\n },\n {\n key: \"render\",\n value: function value() {\n return null;\n }\n }\n ]), o;\n }(G), ge = function ge(e) {\n return e.replace(\".min.js\", \".js\");\n }, _e = {\n react: function react(e) {\n return e.replace(\"production.min\", \"development\");\n },\n \"react-dom\": function(e) {\n return e.replace(\"production.min\", \"development\");\n },\n \"single-spa\": function(e) {\n return e.replace(\"single-spa.min.js\", \"single-spa.dev.js\");\n },\n vue: ge,\n \"vue-router\": ge,\n \"@angular/core\": ge,\n \"@angular/common\": ge,\n \"@angular/router\": ge,\n \"@angular/platform-browser\": ge\n };\n function ye(e) {\n Object.keys(e.imports).filter(function(e) {\n return _e[e];\n }).forEach(function(t) {\n window.importMapOverrides.addOverride(t, _e[t](e.imports[t]));\n });\n }\n function be() {\n return Object.keys(window.importMapOverrides.getOverrideMap().imports).filter(function(e) {\n return !_e[e];\n }).length > 0;\n }\n var we = function(e) {\n i(l, e);\n var n = m(l);\n function l() {\n var _$e;\n t(this, l);\n for(var _$r = arguments.length, _$i = new Array(_$r), a = 0; a < _$r; a++)_$i[a] = arguments[a];\n return o(c(_$e = n.call.apply(n, [\n this\n ].concat(_$i))), \"state\", {\n notOverriddenMap: {\n imports: {}\n },\n currentPageMap: {\n imports: {}\n },\n nextPageMap: {\n imports: {}\n },\n dialogModule: null,\n dialogExternalMap: null,\n searchVal: \"\"\n }), o(c(_$e), \"reload\", function(e) {\n e.stopPropagation(), window.location.reload();\n }), o(c(_$e), \"cancel\", function() {\n _$e.setState({\n dialogModule: null,\n dialogExternalMap: null\n });\n }), o(c(_$e), \"updateModuleUrl\", function(t) {\n null === (t = t || null) ? window.importMapOverrides.removeOverride(_$e.state.dialogModule.moduleName) : window.importMapOverrides.addOverride(_$e.state.dialogModule.moduleName, t), _$e.setState({\n dialogModule: null\n });\n }), o(c(_$e), \"doUpdate\", function() {\n _$e.forceUpdate(), window.importMapOverrides.getNextPageMap().then(function(t) {\n _$e.setState({\n nextPageMap: t\n });\n });\n }), o(c(_$e), \"addNewModule\", function(t, n) {\n t && n && window.importMapOverrides.addOverride(t, n), _$e.setState({\n dialogModule: null\n });\n }), o(c(_$e), \"filterModuleNames\", function(t) {\n return !(_$e.state.searchVal.trim().length > 0) || g(t, _$e.state.searchVal);\n }), _$e;\n }\n return r(l, [\n {\n key: \"componentDidMount\",\n value: function value() {\n var _$e = this;\n window.importMapOverrides.getDefaultMap().then(function(t) {\n _$e.setState({\n notOverriddenMap: t\n });\n }), window.importMapOverrides.getCurrentPageMap().then(function(t) {\n _$e.setState({\n currentPageMap: t\n });\n }), window.importMapOverrides.getNextPageMap().then(function(t) {\n _$e.setState({\n nextPageMap: t\n });\n }), window.addEventListener(\"import-map-overrides:change\", this.doUpdate), this.inputRef.focus();\n }\n },\n {\n key: \"componentWillUnmount\",\n value: function value() {\n window.removeEventListener(\"import-map-overrides:change\", this.doUpdate);\n }\n },\n {\n key: \"componentDidUpdate\",\n value: function value(e, t) {\n !t.dialogModule && this.state.dialogModule ? (this.dialogContainer = document.createElement(\"div\"), document.body.appendChild(this.dialogContainer), pe(B(me, {\n module: this.state.dialogModule,\n cancel: this.cancel,\n updateModuleUrl: this.updateModuleUrl,\n addNewModule: this.addNewModule\n }), this.dialogContainer)) : t.dialogModule && !this.state.dialogModule && (pe(null, this.dialogContainer), this.dialogContainer.remove(), delete this.dialogContainer), !t.dialogExternalMap && this.state.dialogExternalMap ? (this.dialogContainer = document.createElement(\"div\"), document.body.appendChild(this.dialogContainer), pe(B(ve, {\n dialogExternalMap: this.state.dialogExternalMap,\n cancel: this.cancel\n }), this.dialogContainer)) : t.dialogExternalMap && !this.state.dialogExternalMap && (pe(null, this.dialogContainer), this.dialogContainer.remove(), delete this.dialogContainer);\n }\n },\n {\n key: \"render\",\n value: function value() {\n var _$e = this, t = [], n = [], _$r = [], o = [], _$i = [], _$l = [], a = [], u = window.importMapOverrides.getOverrideMap(!0).imports, s = Object.keys(this.state.notOverriddenMap.imports), d = window.importMapOverrides.getDisabledOverrides();\n s.filter(this.filterModuleNames).forEach(function(s) {\n var c = {\n moduleName: s,\n defaultUrl: _$e.state.notOverriddenMap.imports[s],\n overrideUrl: u[s],\n disabled: g(d, s)\n };\n c.disabled ? _$r.push(c) : u[s] ? _$e.state.currentPageMap.imports[s] === u[s] ? _e[s] && _e[s](_$e.state.currentPageMap.imports[s]) === u[s] ? a.push(c) : t.push(c) : n.push(c) : _$e.state.notOverriddenMap.imports[s] === _$e.state.currentPageMap.imports[s] ? o.push(c) : _$e.state.notOverriddenMap.imports[s] === _$e.state.nextPageMap.imports[s] ? _$l.push(c) : _$i.push(c);\n }), Object.keys(u).filter(this.filterModuleNames).forEach(function(o) {\n if (!g(s, o)) {\n var _$i = {\n moduleName: o,\n defaultUrl: null,\n overrideUrl: u[o],\n disabled: g(d, o)\n };\n _$i.disabled ? _$r.push(_$i) : _$e.state.currentPageMap.imports[o] === u[o] ? t.push(_$i) : n.push(_$i);\n }\n }), t.sort(xe), o.sort(xe), n.sort(xe);\n var c = function() {\n var _$e, t = window.importMapOverrides.getExternalOverrides(), n = window.importMapOverrides.getCurrentPageExternalOverrides(), _$r = [], o = [], _$i = [], _$l = function(e, t) {\n var n = \"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"];\n if (!n) {\n if (Array.isArray(e) || (n = v(e))) {\n n && (e = n);\n var _$r = 0, o = function o() {};\n return {\n s: o,\n n: function n() {\n return _$r >= e.length ? {\n done: !0\n } : {\n done: !1,\n value: e[_$r++]\n };\n },\n e: function e(e) {\n throw e;\n },\n f: o\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var _$i, _$l = !0, a = !1;\n return {\n s: function s() {\n n = n.call(e);\n },\n n: function n1() {\n var _$e = n.next();\n return _$l = _$e.done, _$e;\n },\n e: function e(e) {\n a = !0, _$i = e;\n },\n f: function f() {\n try {\n _$l || null == n.return || n.return();\n } finally{\n if (a) throw _$i;\n }\n }\n };\n }(t);\n try {\n for(_$l.s(); !(_$e = _$l.n()).done;){\n var a = _$e.value;\n g(window.importMapOverrides.invalidExternalMaps, a) ? _$r.push(a) : g(n, a) ? o.push(a) : _$i.push(a);\n }\n } catch (e) {\n _$l.e(e);\n } finally{\n _$l.f();\n }\n return {\n brokenMaps: _$r,\n workingCurrentPageMaps: o,\n workingNextPageMaps: _$i\n };\n }(), p = c.brokenMaps, _$m = c.workingCurrentPageMaps, f = c.workingNextPageMaps;\n return B(\"div\", {\n className: \"imo-list-container\"\n }, B(\"div\", {\n className: \"imo-table-header-actions\"\n }, B(\"input\", {\n className: \"imo-list-search\",\n \"aria-label\": \"Search modules\",\n placeholder: \"Search modules\",\n value: this.state.searchVal,\n onInput: function onInput(t) {\n return _$e.setState({\n searchVal: t.target.value\n });\n },\n ref: function ref(t) {\n return _$e.inputRef = t;\n }\n }), B(\"div\", {\n className: \"imo-add-new\"\n }, B(\"button\", {\n onClick: function onClick() {\n return _$e.setState({\n dialogModule: {\n moduleName: \"New module\",\n isNew: !0\n }\n });\n }\n }, \"Add new module\")), B(\"div\", {\n className: \"imo-add-new\"\n }, B(\"button\", {\n onClick: function onClick() {\n _$e.setState({\n dialogExternalMap: {\n url: \"\",\n isNew: !0\n }\n });\n }\n }, \"Add import map\")), B(\"div\", {\n className: \"imo-add-new\"\n }, B(\"button\", {\n onClick: function onClick() {\n return window.importMapOverrides.resetOverrides();\n }\n }, \"Reset all overrides\"))), B(\"table\", {\n className: \"imo-overrides-table\"\n }, B(\"thead\", null, B(\"tr\", null, B(\"th\", null, \"Module Status\"), B(\"th\", null, \"Module Name\"), B(\"th\", null, \"Domain\"), B(\"th\", null, \"Filename\"))), B(\"tbody\", null, n.map(function(t) {\n return B(\"tr\", {\n role: \"button\",\n tabIndex: 0,\n onClick: function onClick() {\n return _$e.setState({\n dialogModule: t\n });\n },\n key: t.moduleName\n }, B(\"td\", {\n onClick: _$e.reload,\n role: \"button\",\n tabIndex: 0\n }, B(\"div\", {\n className: \"imo-status imo-next-override\"\n }), B(\"div\", null, \"Inline Override\"), B(\"div\", {\n className: \"imo-needs-refresh\"\n })), B(\"td\", null, t.moduleName), B(\"td\", null, Me(t)), B(\"td\", null, Ee(t)));\n }), _$l.map(function(t) {\n return B(\"tr\", {\n role: \"button\",\n tabIndex: 0,\n onClick: function onClick() {\n return _$e.setState({\n dialogModule: t\n });\n },\n key: t.moduleName\n }, B(\"td\", {\n style: {\n position: \"relative\"\n }\n }, B(\"div\", {\n className: \"imo-status imo-next-default\"\n }), B(\"div\", null, \"Default\"), B(\"div\", {\n className: \"imo-needs-refresh\"\n })), B(\"td\", null, t.moduleName), B(\"td\", null, Me(t)), B(\"td\", null, Ee(t)));\n }), _$r.map(function(t) {\n return B(\"tr\", {\n role: \"button\",\n tabIndex: 0,\n onClick: function onClick() {\n return _$e.setState({\n dialogModule: t\n });\n },\n key: t.moduleName\n }, B(\"td\", null, B(\"div\", {\n className: \"imo-status imo-disabled-override\"\n }), B(\"div\", null, \"Override disabled\")), B(\"td\", null, t.moduleName), B(\"td\", null, Me(t)), B(\"td\", null, Ee(t)));\n }), t.map(function(t) {\n return B(\"tr\", {\n role: \"button\",\n tabIndex: 0,\n onClick: function onClick() {\n return _$e.setState({\n dialogModule: t\n });\n },\n key: t.moduleName\n }, B(\"td\", null, B(\"div\", {\n className: \"imo-status imo-current-override\"\n }), B(\"div\", null, \"Inline Override\")), B(\"td\", null, t.moduleName), B(\"td\", null, Me(t)), B(\"td\", null, Ee(t)));\n }), _$i.map(function(t) {\n return B(\"tr\", {\n role: \"button\",\n tabIndex: 0,\n onClick: function onClick() {\n return _$e.setState({\n dialogModule: t\n });\n },\n key: t.moduleName\n }, B(\"td\", null, B(\"div\", {\n className: \"imo-status imo-external-override\"\n }), B(\"div\", null, \"External Override\")), B(\"td\", null, t.moduleName), B(\"td\", null, Me(t)), B(\"td\", null, Ee(t)));\n }), a.map(function(t) {\n return B(\"tr\", {\n role: \"button\",\n tabIndex: 0,\n onClick: function onClick() {\n return _$e.setState({\n dialogModule: t\n });\n },\n key: t.moduleName,\n title: \"Automatically use dev version of certain npm libs\"\n }, B(\"td\", null, B(\"div\", {\n className: \"imo-status imo-dev-lib-override\"\n }), B(\"div\", null, \"Dev Lib Override\")), B(\"td\", null, t.moduleName), B(\"td\", null, Me(t)), B(\"td\", null, Ee(t)));\n }), o.map(function(t) {\n return B(\"tr\", {\n role: \"button\",\n tabIndex: 0,\n onClick: function onClick() {\n return _$e.setState({\n dialogModule: t\n });\n },\n key: t.moduleName\n }, B(\"td\", null, B(\"div\", {\n className: \"imo-status imo-default-module\"\n }), B(\"div\", null, \"Default\")), B(\"td\", null, t.moduleName), B(\"td\", null, Me(t)), B(\"td\", null, Ee(t)));\n }))), (p.length > 0 || _$m.length > 0 || f.length > 0) && B(\"table\", {\n className: \"imo-overrides-table\"\n }, B(\"thead\", null, B(\"th\", null, \"Import Map Status\"), B(\"th\", null, \"URL\")), B(\"tbody\", null, p.map(function(t) {\n return B(\"tr\", {\n role: \"button\",\n tabIndex: 0,\n onClick: function onClick() {\n return _$e.setState({\n dialogExternalMap: {\n isNew: !1,\n url: t\n }\n });\n },\n key: t\n }, B(\"td\", null, B(\"div\", {\n className: \"imo-status imo-disabled-override\"\n }), B(\"div\", null, \"Invalid\")), B(\"td\", null, t));\n }), f.map(function(t) {\n return B(\"tr\", {\n role: \"button\",\n tabIndex: 0,\n onClick: function onClick() {\n return _$e.setState({\n dialogExternalMap: {\n isNew: !1,\n url: t\n }\n });\n },\n key: t\n }, B(\"td\", null, B(\"div\", {\n className: \"imo-status imo-next-override\"\n }), B(\"div\", null, \"Pending refresh\")), B(\"td\", null, t));\n }), _$m.map(function(t) {\n return B(\"tr\", {\n role: \"button\",\n tabIndex: 0,\n onClick: function onClick() {\n return _$e.setState({\n dialogExternalMap: {\n isNew: !1,\n url: t\n }\n });\n },\n key: t\n }, B(\"td\", null, B(\"div\", {\n className: \"imo-status imo-current-override\"\n }), B(\"div\", null, \"Override\")), B(\"td\", null, t));\n }))));\n }\n }\n ]), l;\n }(G);\n function xe(e, t) {\n return e.moduleName > t.moduleName;\n }\n var ke = document.querySelector(\"base\") && document.querySelector(\"base\").href || location.origin + \"/\";\n function Me(e) {\n var t = Oe(e), n = Ne(t);\n return n ? n.host : t;\n }\n function Ee(e) {\n var t = Oe(e), n = Ne(t);\n return n ? n.pathname.slice(n.pathname.lastIndexOf(\"/\") + 1) : t;\n }\n function Oe(e) {\n return e.overrideUrl || e.defaultUrl;\n }\n function Ne(e) {\n try {\n return new URL(e, ke);\n } catch (e) {\n return null;\n }\n }\n var Se = function(e) {\n i(l, e);\n var n = m(l);\n function l() {\n var _$e;\n t(this, l);\n for(var _$r = arguments.length, _$i = new Array(_$r), a = 0; a < _$r; a++)_$i[a] = arguments[a];\n return o(c(_$e = n.call.apply(n, [\n this\n ].concat(_$i))), \"doUpdate\", function() {\n return _$e.forceUpdate();\n }), o(c(_$e), \"keydownListener\", function(t) {\n \"Escape\" === t.key && _$e.props.close && _$e.props.close();\n }), _$e;\n }\n return r(l, [\n {\n key: \"componentDidMount\",\n value: function value() {\n window.addEventListener(\"keydown\", this.keydownListener), window.addEventListener(\"import-map-overrides:change\", this.doUpdate);\n }\n },\n {\n key: \"componentWillUnmount\",\n value: function value() {\n window.removeEventListener(\"keydown\", this.keydownListener), window.removeEventListener(\"import-map-overrides:change\", this.doUpdate);\n }\n },\n {\n key: \"render\",\n value: function value(e) {\n return B(\"div\", {\n className: \"imo-popup\"\n }, B(\"div\", {\n className: \"imo-header\"\n }, B(\"div\", null, B(\"h1\", null, \"Import Map Overrides\"), B(\"p\", null, \"This developer tool allows you to view and override your import maps. Start by clicking on a module that you'd like to override.\", \" \", B(\"a\", {\n target: \"_blank\",\n href: \"https://github.com/joeldenning/import-map-overrides\"\n }, \"See documentation for more info\"), \".\")), B(\"button\", {\n className: \"imo-unstyled\",\n onClick: e.close\n }, \"ⓧ\")), B(we, {\n importMapChanged: this.props.importMapChanged\n }));\n }\n }\n ]), l;\n }(G), Ce = function(e) {\n i(l, e);\n var n = m(l);\n function l() {\n var _$e;\n t(this, l);\n for(var _$r = arguments.length, _$i = new Array(_$r), a = 0; a < _$r; a++)_$i[a] = arguments[a];\n return o(c(_$e = n.call.apply(n, [\n this\n ].concat(_$i))), \"state\", {\n showingPopup: !1\n }), o(c(_$e), \"doUpdate\", function() {\n return _$e.forceUpdate();\n }), o(c(_$e), \"toggleTrigger\", function() {\n _$e.setState(function(e) {\n return {\n showingPopup: !e.showingPopup\n };\n });\n }), o(c(_$e), \"importMapChanged\", function() {\n _$e.forceUpdate();\n }), o(c(_$e), \"useDevLibs\", function() {\n var _$t = localStorage.getItem(\"import-map-overrides-dev-libs\");\n return _$t ? \"true\" === _$t : _$e.props.customElement.hasAttribute(\"dev-libs\");\n }), o(c(_$e), \"atLeastOneOverride\", function() {\n return _$e.useDevLibs() ? be() : Object.keys(window.importMapOverrides.getOverrideMap().imports).length > 0;\n }), _$e;\n }\n return r(l, [\n {\n key: \"componentDidMount\",\n value: function value() {\n window.addEventListener(\"import-map-overrides:change\", this.doUpdate);\n }\n },\n {\n key: \"componentWillUnmount\",\n value: function value() {\n window.removeEventListener(\"import-map-overrides:change\", this.doUpdate);\n }\n },\n {\n key: \"render\",\n value: function value(e, t) {\n return e.customElement.hasAttribute(\"show-when-local-storage\") && \"true\" !== localStorage.getItem(e.customElement.getAttribute(\"show-when-local-storage\")) ? null : B(\"div\", null, B(\"button\", {\n onClick: this.toggleTrigger,\n className: \"imo-unstyled imo-trigger \".concat(this.atLeastOneOverride() ? \"imo-current-override\" : \"\")\n }, \"{···}\"), this.useDevLibs() && B(he, null), t.showingPopup && B(Se, {\n close: this.toggleTrigger,\n importMapChanged: this.importMapChanged\n }));\n }\n }\n ]), l;\n }(G);\n function Ue(e) {\n var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [];\n return function(o) {\n i(a, o);\n var l = m(a);\n function a() {\n return t(this, a), l.apply(this, arguments);\n }\n return r(a, [\n {\n key: \"connectedCallback\",\n value: function value() {\n this.renderWithPreact();\n }\n },\n {\n key: \"disconnectedCallback\",\n value: function value() {\n pe(null, this), this.renderedEl = null;\n }\n },\n {\n key: \"attributeChangedCallback\",\n value: function value() {\n this.renderWithPreact();\n }\n },\n {\n key: \"renderWithPreact\",\n value: function value() {\n this.shadow = this.attachShadow({\n mode: \"open\"\n }), this.renderedEl = pe(B(e, {\n customElement: this\n }), this.shadow, this.renderedEl);\n var t = document.createElement(\"style\");\n t.textContent = D.toString(), this.shadow.appendChild(t);\n }\n }\n ], [\n {\n key: \"observedAttributes\",\n get: function get() {\n return n;\n }\n }\n ]), a;\n }(d(HTMLElement));\n }\n window.customElements && !y && (window.customElements.define(\"import-map-overrides-full\", Ue(Ce, [\n \"show-when-local-storage\"\n ])), window.customElements.define(\"import-map-overrides-popup\", Ue(Se)), window.customElements.define(\"import-map-overrides-list\", Ue(we)));\n}(); //# sourceMappingURL=import-map-overrides.js.map\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9ub2RlX21vZHVsZXMvaW1wb3J0LW1hcC1vdmVycmlkZXMvZGlzdC9pbXBvcnQtbWFwLW92ZXJyaWRlcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2ltcG9ydC1tYXAtb3ZlcnJpZGVzL3NyYy91dGlsL2luY2x1ZGVzLmpzPzQzNWYiLCJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi8uLi9ub2RlX21vZHVsZXMvaW1wb3J0LW1hcC1vdmVycmlkZXMvc3JjL3V0aWwvdXJsLXBhcmFtZXRlci5qcz9kZDhhIiwid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2ltcG9ydC1tYXAtb3ZlcnJpZGVzL3NyYy9hcGkvanMtYXBpLmpzP2FhNzkiLCJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi8uLi9ub2RlX21vZHVsZXMvaW1wb3J0LW1hcC1vdmVycmlkZXMvc3JjL3V0aWwvc3RyaW5nLXJlZ2V4LmpzPzM2YTciLCJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi8uLi9ub2RlX21vZHVsZXMvaW1wb3J0LW1hcC1vdmVycmlkZXMvbm9kZV9tb2R1bGVzLy5wbnBtL3N0eWxlLWluamVjdEAwLjMuMC9ub2RlX21vZHVsZXMvc3R5bGUtaW5qZWN0L2Rpc3Qvc3R5bGUtaW5qZWN0LmVzLmpzPzI5NmEiLCJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi8uLi9ub2RlX21vZHVsZXMvaW1wb3J0LW1hcC1vdmVycmlkZXMvbm9kZV9tb2R1bGVzLy5wbnBtL3ByZWFjdEAxMC41LjE0L25vZGVfbW9kdWxlcy9wcmVhY3QvZGlzdC9wcmVhY3QubWpzPzRlODAiLCJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi8uLi9ub2RlX21vZHVsZXMvaW1wb3J0LW1hcC1vdmVycmlkZXMvc3JjL3VpL2xpc3QvbW9kdWxlLWRpYWxvZy5jb21wb25lbnQuanM/NzdmYiIsIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9pbXBvcnQtbWFwLW92ZXJyaWRlcy9zcmMvdWkvbGlzdC9leHRlcm5hbC1pbXBvcnRtYXAtZGlhbG9nLmNvbXBvbmVudC5qcz9iMzA2Iiwid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2ltcG9ydC1tYXAtb3ZlcnJpZGVzL3NyYy91aS9kZXYtbGliLW92ZXJyaWRlcy5jb21wb25lbnQuanM/Y2EyNiIsIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9pbXBvcnQtbWFwLW92ZXJyaWRlcy9zcmMvdWkvbGlzdC9saXN0LmNvbXBvbmVudC5qcz9iYjc3Iiwid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2ltcG9ydC1tYXAtb3ZlcnJpZGVzL3NyYy91aS9wb3B1cC5jb21wb25lbnQuanM/YTdhYiIsIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9pbXBvcnQtbWFwLW92ZXJyaWRlcy9zcmMvdWkvZnVsbC11aS5jb21wb25lbnQuanM/ZWE3NyIsIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9pbXBvcnQtbWFwLW92ZXJyaWRlcy9zcmMvdWkvY3VzdG9tLWVsZW1lbnRzLmpzPzE0NWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGluY2x1ZGVzKG9iaiwgaXRlbSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmoubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChvYmpbaV0gPT09IGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIG9iai5pbmRleE9mKGl0ZW0pID49IDA7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgRXJyb3IoYENhbid0IGNhbGwgaW5jbHVkZXMgb24gJHt0eXBlb2Ygb2JqfWApO1xuICB9XG59XG4iLCIvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy85MDExMTUvaG93LWNhbi1pLWdldC1xdWVyeS1zdHJpbmctdmFsdWVzLWluLWphdmFzY3JpcHRcbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJhbWV0ZXJCeU5hbWUobmFtZSwgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWYpIHtcbiAgbmFtZSA9IG5hbWUucmVwbGFjZSgvW1xcW1xcXV0vZywgXCJcXFxcJCZcIik7XG4gIHZhciByZWdleCA9IG5ldyBSZWdFeHAoXCJbPyZdXCIgKyBuYW1lICsgXCIoPShbXiYjXSopfCZ8I3wkKVwiKSxcbiAgICByZXN1bHRzID0gcmVnZXguZXhlYyh1cmwpO1xuICBpZiAoIXJlc3VsdHMpIHJldHVybiBudWxsO1xuICBpZiAoIXJlc3VsdHNbMl0pIHJldHVybiBcIlwiO1xuICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHJlc3VsdHNbMl0ucmVwbGFjZSgvXFwrL2csIFwiIFwiKSk7XG59XG4iLCJpbXBvcnQgeyBlc2NhcGVTdHJpbmdSZWdleHAgfSBmcm9tIFwiLi4vdXRpbC9zdHJpbmctcmVnZXhcIjtcbmltcG9ydCB7IGluY2x1ZGVzIH0gZnJvbSBcIi4uL3V0aWwvaW5jbHVkZXMuanNcIjtcbmltcG9ydCB7IGdldFBhcmFtZXRlckJ5TmFtZSB9IGZyb20gXCIuLi91dGlsL3VybC1wYXJhbWV0ZXJcIjtcblxuY29uc3QgbG9jYWxTdG9yYWdlUHJlZml4ID0gXCJpbXBvcnQtbWFwLW92ZXJyaWRlOlwiO1xuY29uc3QgZGlzYWJsZWRPdmVycmlkZXNMb2NhbFN0b3JhZ2VLZXkgPSBcImltcG9ydC1tYXAtb3ZlcnJpZGVzLWRpc2FibGVkXCI7XG5jb25zdCBleHRlcm5hbE92ZXJyaWRlc0xvY2FsU3RvcmFnZUtleSA9IFwiaW1wb3J0LW1hcC1vdmVycmlkZXMtZXh0ZXJuYWwtbWFwc1wiO1xuY29uc3Qgb3ZlcnJpZGVBdHRyaWJ1dGUgPSBcImRhdGEtaXMtaW1wb3J0bWFwLW92ZXJyaWRlXCI7XG5jb25zdCBkb21haW5zTWV0YSA9IFwiaW1wb3J0LW1hcC1vdmVycmlkZXMtZG9tYWluc1wiO1xuY29uc3QgYWxsb3dMaXN0UHJlZml4ID0gXCJhbGxvd2xpc3Q6XCI7XG5jb25zdCBkZW55TGlzdFByZWZpeCA9IFwiZGVueWxpc3Q6XCI7XG5leHBvcnQgY29uc3QgcXVlcnlQYXJhbU92ZXJyaWRlc05hbWUgPSBcImltb1wiO1xuXG5jb25zdCBpbXBvcnRNYXBNZXRhRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICdtZXRhW25hbWU9XCJpbXBvcnRtYXAtdHlwZVwiXSdcbik7XG5cbmNvbnN0IGRvbWFpbnNFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgbWV0YVtuYW1lPVwiJHtkb21haW5zTWV0YX1cIl1gKTtcblxuY29uc3QgZXh0ZXJuYWxPdmVycmlkZU1hcFByb21pc2VzID0ge307XG5cbmV4cG9ydCBjb25zdCBpbXBvcnRNYXBUeXBlID0gaW1wb3J0TWFwTWV0YUVsZW1lbnRcbiAgPyBpbXBvcnRNYXBNZXRhRWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJjb250ZW50XCIpXG4gIDogXCJpbXBvcnRtYXBcIjtcblxuZXhwb3J0IGxldCBpc0Rpc2FibGVkO1xuXG5pZiAoZG9tYWluc0VsZW1lbnQpIHtcbiAgY29uc3QgY29udGVudCA9IGRvbWFpbnNFbGVtZW50LmdldEF0dHJpYnV0ZShcImNvbnRlbnRcIik7XG4gIGlmICghY29udGVudCkge1xuICAgIGNvbnNvbGUud2FybihgSW52YWxpZCAke2RvbWFpbnNNZXRhfSBtZXRhIGVsZW1lbnQgLSBjb250ZW50IHJlcXVpcmVkLmApO1xuICB9XG5cbiAgY29uc3QgbWF0Y2hIb3N0bmFtZSA9IChkb21haW4pID0+XG4gICAgbmV3IFJlZ0V4cChlc2NhcGVTdHJpbmdSZWdleHAoZG9tYWluKS5yZXBsYWNlKFwiXFxcXCpcIiwgXCIuK1wiKSkudGVzdChcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZVxuICAgICk7XG5cbiAgaWYgKGNvbnRlbnQuaW5kZXhPZihhbGxvd0xpc3RQcmVmaXgpID09PSAwKSB7XG4gICAgY29uc3QgYWxsb3dlZERvbWFpbnMgPSBjb250ZW50LnNsaWNlKGFsbG93TGlzdFByZWZpeC5sZW5ndGgpLnNwbGl0KFwiLFwiKTtcbiAgICBpc0Rpc2FibGVkID0gIWFsbG93ZWREb21haW5zLnNvbWUobWF0Y2hIb3N0bmFtZSk7XG4gIH0gZWxzZSBpZiAoY29udGVudC5pbmRleE9mKGRlbnlMaXN0UHJlZml4KSA9PT0gMCkge1xuICAgIGNvbnN0IGRlbmllZERvbWFpbnMgPSBjb250ZW50LnNsaWNlKGRlbnlMaXN0UHJlZml4Lmxlbmd0aCkuc3BsaXQoXCIsXCIpO1xuICAgIGlzRGlzYWJsZWQgPSBkZW5pZWREb21haW5zLnNvbWUobWF0Y2hIb3N0bmFtZSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGBJbnZhbGlkICR7ZG9tYWluc01ldGF9IG1ldGEgY29udGVudCBhdHRyaWJ1dGUgLSBtdXN0IHN0YXJ0IHdpdGggJHthbGxvd0xpc3RQcmVmaXh9IG9yICR7ZGVueUxpc3RQcmVmaXh9YFxuICAgICk7XG4gIH1cbn0gZWxzZSB7XG4gIGlzRGlzYWJsZWQgPSBmYWxzZTtcbn1cblxuaWYgKCFjYW5BY2Nlc3NMb2NhbFN0b3JhZ2UoKSkge1xuICBjb25zb2xlLndhcm4oXG4gICAgXCJEaXNhYmxpbmcgaW1wb3J0LW1hcC1vdmVycmlkZXMsIHNpbmNlIGxvY2FsIHN0b3JhZ2UgaXMgbm90IHJlYWRhYmxlXCJcbiAgKTtcbiAgaXNEaXNhYmxlZCA9IHRydWU7XG59XG5cbmlmICghaXNEaXNhYmxlZCkge1xuICBpbml0KCk7XG59XG5cbmZ1bmN0aW9uIGluaXQoKSB7XG4gIGNvbnN0IHNlcnZlck92ZXJyaWRlcyA9IGltcG9ydE1hcE1ldGFFbGVtZW50XG4gICAgPyBpbXBvcnRNYXBNZXRhRWxlbWVudC5oYXNBdHRyaWJ1dGUoXCJzZXJ2ZXItY29va2llXCIpXG4gICAgOiBmYWxzZTtcbiAgY29uc3Qgc2VydmVyT25seSA9IGltcG9ydE1hcE1ldGFFbGVtZW50XG4gICAgPyBpbXBvcnRNYXBNZXRhRWxlbWVudC5oYXNBdHRyaWJ1dGUoXCJzZXJ2ZXItb25seVwiKVxuICAgIDogZmFsc2U7XG5cbiAgbGV0IGRlZmF1bHRNYXBQcm9taXNlO1xuXG4gIHdpbmRvdy5pbXBvcnRNYXBPdmVycmlkZXMgPSB7XG4gICAgYWRkT3ZlcnJpZGUobW9kdWxlTmFtZSwgdXJsKSB7XG4gICAgICBjb25zdCBwb3J0UmVnZXggPSAvXlxcZCskL2c7XG4gICAgICBpZiAocG9ydFJlZ2V4LnRlc3QodXJsKSkge1xuICAgICAgICB1cmwgPSBpbW8uZ2V0VXJsRnJvbVBvcnQobW9kdWxlTmFtZSwgdXJsKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGtleSA9IGxvY2FsU3RvcmFnZVByZWZpeCArIG1vZHVsZU5hbWU7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIHVybCk7XG4gICAgICBpZiAoc2VydmVyT3ZlcnJpZGVzKSB7XG4gICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGAke2tleX09JHt1cmx9YDtcbiAgICAgIH1cbiAgICAgIGZpcmVDaGFuZ2VkRXZlbnQoKTtcbiAgICAgIHJldHVybiBpbW8uZ2V0T3ZlcnJpZGVNYXAoKTtcbiAgICB9LFxuICAgIGdldE92ZXJyaWRlTWFwKGluY2x1ZGVEaXNhYmxlZCA9IGZhbHNlKSB7XG4gICAgICBjb25zdCBvdmVycmlkZXMgPSBjcmVhdGVFbXB0eUltcG9ydE1hcCgpO1xuICAgICAgY29uc3QgZGlzYWJsZWRPdmVycmlkZXMgPSBpbW8uZ2V0RGlzYWJsZWRPdmVycmlkZXMoKTtcblxuICAgICAgY29uc3Qgc2V0T3ZlcnJpZGUgPSAobW9kdWxlTmFtZSwgcGF0aCkgPT4ge1xuICAgICAgICBpZiAoaW5jbHVkZURpc2FibGVkIHx8ICEoZGlzYWJsZWRPdmVycmlkZXMuaW5kZXhPZihtb2R1bGVOYW1lKSA+PSAwKSkge1xuICAgICAgICAgIG92ZXJyaWRlcy5pbXBvcnRzW21vZHVsZU5hbWVdID0gcGF0aDtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgLy8gZ2V0IGZyb20gbG9jYWxzdG9yYWdlXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxvY2FsU3RvcmFnZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBrZXkgPSBsb2NhbFN0b3JhZ2Uua2V5KGkpO1xuICAgICAgICBpZiAoa2V5LmluZGV4T2YobG9jYWxTdG9yYWdlUHJlZml4KSA9PT0gMCkge1xuICAgICAgICAgIHNldE92ZXJyaWRlKFxuICAgICAgICAgICAga2V5LnNsaWNlKGxvY2FsU3RvcmFnZVByZWZpeC5sZW5ndGgpLFxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gZ2V0IGZyb20gdXJsIGlmIHF1ZXJ5IHBhcmFtIGV4aXN0XG4gICAgICBjb25zdCBxdWVyeVBhcmFtID0gZ2V0UGFyYW1ldGVyQnlOYW1lKFxuICAgICAgICBxdWVyeVBhcmFtT3ZlcnJpZGVzTmFtZSxcbiAgICAgICAgd2luZG93LmxvY2F0aW9uICE9IHdpbmRvdy5wYXJlbnQubG9jYXRpb25cbiAgICAgICAgICA/IGRvY3VtZW50LnJlZmVycmVyXG4gICAgICAgICAgOiB3aW5kb3cubG9jYXRpb24uaHJlZlxuICAgICAgKTtcblxuICAgICAgaWYgKHF1ZXJ5UGFyYW0pIHtcbiAgICAgICAgbGV0IHF1ZXJ5UGFyYW1JbXBvcnRNYXA7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcXVlcnlQYXJhbUltcG9ydE1hcCA9IEpTT04ucGFyc2UocXVlcnlQYXJhbSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgIGBJbnZhbGlkIGltcG9ydE1hcCBxdWVyeSBwYXJhbSAtIHRleHQgY29udGVudCBtdXN0IGJlIGpzb25gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3Qua2V5cyhxdWVyeVBhcmFtSW1wb3J0TWFwLmltcG9ydHMpLmZvckVhY2goKG1vZHVsZU5hbWUpID0+IHtcbiAgICAgICAgICBzZXRPdmVycmlkZShtb2R1bGVOYW1lLCBxdWVyeVBhcmFtSW1wb3J0TWFwLmltcG9ydHNbbW9kdWxlTmFtZV0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG92ZXJyaWRlcztcbiAgICB9LFxuICAgIHJlbW92ZU92ZXJyaWRlKG1vZHVsZU5hbWUpIHtcbiAgICAgIGNvbnN0IGtleSA9IGxvY2FsU3RvcmFnZVByZWZpeCArIG1vZHVsZU5hbWU7XG4gICAgICBjb25zdCBoYXNJdGVtID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSAhPT0gbnVsbDtcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gICAgICBpZiAoc2VydmVyT3ZlcnJpZGVzKSB7XG4gICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGAke2tleX09OyBleHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDEgR01UO2A7XG4gICAgICB9XG4gICAgICBpbW8uZW5hYmxlT3ZlcnJpZGUobW9kdWxlTmFtZSk7XG4gICAgICBmaXJlQ2hhbmdlZEV2ZW50KCk7XG4gICAgICByZXR1cm4gaGFzSXRlbTtcbiAgICB9LFxuICAgIHJlc2V0T3ZlcnJpZGVzKCkge1xuICAgICAgT2JqZWN0LmtleXMoaW1vLmdldE92ZXJyaWRlTWFwKHRydWUpLmltcG9ydHMpLmZvckVhY2goKG1vZHVsZU5hbWUpID0+IHtcbiAgICAgICAgaW1vLnJlbW92ZU92ZXJyaWRlKG1vZHVsZU5hbWUpO1xuICAgICAgfSk7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShkaXNhYmxlZE92ZXJyaWRlc0xvY2FsU3RvcmFnZUtleSk7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShleHRlcm5hbE92ZXJyaWRlc0xvY2FsU3RvcmFnZUtleSk7XG4gICAgICBmaXJlQ2hhbmdlZEV2ZW50KCk7XG4gICAgICByZXR1cm4gaW1vLmdldE92ZXJyaWRlTWFwKCk7XG4gICAgfSxcbiAgICBoYXNPdmVycmlkZXMoKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMoaW1vLmdldE92ZXJyaWRlTWFwKCkuaW1wb3J0cykubGVuZ3RoID4gMDtcbiAgICB9LFxuICAgIGdldFVybEZyb21Qb3J0KG1vZHVsZU5hbWUsIHBvcnQpIHtcbiAgICAgIGNvbnN0IGZpbGVOYW1lID0gbW9kdWxlTmFtZS5yZXBsYWNlKC9AL2csIFwiXCIpLnJlcGxhY2UoL1xcLy9nLCBcIi1cIik7XG4gICAgICByZXR1cm4gYC8vbG9jYWxob3N0OiR7cG9ydH0vJHtmaWxlTmFtZX0uanNgO1xuICAgIH0sXG4gICAgZW5hYmxlVUkoKSB7XG4gICAgICBjb25zdCBjdXN0b21FbGVtZW50TmFtZSA9IFwiaW1wb3J0LW1hcC1vdmVycmlkZXMtZnVsbFwiO1xuICAgICAgY29uc3Qgc2hvd1doZW5Mb2NhbFN0b3JhZ2UgPSBcInNob3ctd2hlbi1sb2NhbC1zdG9yYWdlXCI7XG4gICAgICBsZXQgY3VzdG9tRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoY3VzdG9tRWxlbWVudE5hbWUpO1xuXG4gICAgICBpZiAoIWN1c3RvbUVsZW1lbnQpIHtcbiAgICAgICAgY3VzdG9tRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoY3VzdG9tRWxlbWVudE5hbWUpO1xuICAgICAgICBjdXN0b21FbGVtZW50LnNldEF0dHJpYnV0ZShzaG93V2hlbkxvY2FsU3RvcmFnZSwgXCJ0cnVlXCIpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGN1c3RvbUVsZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsb2NhbFN0b3JhZ2VLZXkgPSBjdXN0b21FbGVtZW50LmdldEF0dHJpYnV0ZShzaG93V2hlbkxvY2FsU3RvcmFnZSk7XG4gICAgICBpZiAobG9jYWxTdG9yYWdlS2V5KSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGxvY2FsU3RvcmFnZUtleSwgdHJ1ZSk7XG4gICAgICAgIGN1c3RvbUVsZW1lbnQucmVuZGVyV2l0aFByZWFjdCgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgbWVyZ2VJbXBvcnRNYXAob3JpZ2luYWxNYXAsIG5ld01hcCkge1xuICAgICAgY29uc3Qgb3V0TWFwID0gY3JlYXRlRW1wdHlJbXBvcnRNYXAoKTtcbiAgICAgIGZvciAobGV0IGkgaW4gb3JpZ2luYWxNYXAuaW1wb3J0cykge1xuICAgICAgICBvdXRNYXAuaW1wb3J0c1tpXSA9IG9yaWdpbmFsTWFwLmltcG9ydHNbaV07XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBpIGluIG5ld01hcC5pbXBvcnRzKSB7XG4gICAgICAgIG91dE1hcC5pbXBvcnRzW2ldID0gbmV3TWFwLmltcG9ydHNbaV07XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBpIGluIG9yaWdpbmFsTWFwLnNjb3Blcykge1xuICAgICAgICBvdXRNYXAuc2NvcGVzW2ldID0gb3JpZ2luYWxNYXAuc2NvcGVzW2ldO1xuICAgICAgfVxuICAgICAgZm9yIChsZXQgaSBpbiBuZXdNYXAuc2NvcGVzKSB7XG4gICAgICAgIG91dE1hcC5zY29wZXNbaV0gPSBuZXdNYXAuc2NvcGVzW2ldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dE1hcDtcbiAgICB9LFxuICAgIGdldERlZmF1bHRNYXAoKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBkZWZhdWx0TWFwUHJvbWlzZSB8fFxuICAgICAgICAoZGVmYXVsdE1hcFByb21pc2UgPSBBcnJheS5wcm90b3R5cGUucmVkdWNlLmNhbGwoXG4gICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAgIGBzY3JpcHRbdHlwZT1cIiR7aW1wb3J0TWFwVHlwZX1cIl0sIHNjcmlwdFt0eXBlPVwib3ZlcnJpZGFibGUtaW1wb3J0bWFwXCJdYFxuICAgICAgICAgICksXG4gICAgICAgICAgKHByb21pc2UsIHNjcmlwdEVsKSA9PiB7XG4gICAgICAgICAgICBpZiAoc2NyaXB0RWwuaGFzQXR0cmlidXRlKG92ZXJyaWRlQXR0cmlidXRlKSkge1xuICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGxldCBuZXh0UHJvbWlzZTtcbiAgICAgICAgICAgICAgaWYgKHNjcmlwdEVsLnNyYykge1xuICAgICAgICAgICAgICAgIG5leHRQcm9taXNlID0gZmV0Y2hFeHRlcm5hbE1hcChzY3JpcHRFbC5zcmMpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5leHRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKEpTT04ucGFyc2Uoc2NyaXB0RWwudGV4dENvbnRlbnQpKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICAgICAgcHJvbWlzZSxcbiAgICAgICAgICAgICAgICBuZXh0UHJvbWlzZSxcbiAgICAgICAgICAgICAgXSkudGhlbigoW29yaWdpbmFsTWFwLCBuZXdNYXBdKSA9PlxuICAgICAgICAgICAgICAgIGltby5tZXJnZUltcG9ydE1hcChvcmlnaW5hbE1hcCwgbmV3TWFwKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKGNyZWF0ZUVtcHR5SW1wb3J0TWFwKCkpXG4gICAgICAgICkpXG4gICAgICApO1xuICAgIH0sXG4gICAgZ2V0Q3VycmVudFBhZ2VNYXAoKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xuICAgICAgICBpbW8uZ2V0RGVmYXVsdE1hcCgpLFxuICAgICAgICBpbW8uZ2V0RXh0ZXJuYWxPdmVycmlkZU1hcChpbW8uZ2V0Q3VycmVudFBhZ2VFeHRlcm5hbE92ZXJyaWRlcygpKSxcbiAgICAgIF0pLnRoZW4oKFtkZWZhdWx0TWFwLCBleHRlcm5hbE92ZXJyaWRlc01hcF0pID0+IHtcbiAgICAgICAgcmV0dXJuIGltby5tZXJnZUltcG9ydE1hcChcbiAgICAgICAgICBpbW8ubWVyZ2VJbXBvcnRNYXAoZGVmYXVsdE1hcCwgZXh0ZXJuYWxPdmVycmlkZXNNYXApLFxuICAgICAgICAgIGluaXRpYWxPdmVycmlkZU1hcFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBnZXRDdXJyZW50UGFnZUV4dGVybmFsT3ZlcnJpZGVzKCkge1xuICAgICAgY29uc3QgY3VycmVudFBhZ2VFeHRlcm5hbE92ZXJyaWRlcyA9IFtdO1xuICAgICAgZG9jdW1lbnRcbiAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgICAgYFske292ZXJyaWRlQXR0cmlidXRlfV06bm90KFtpZD1cImltcG9ydC1tYXAtb3ZlcnJpZGVzXCJdKWBcbiAgICAgICAgKVxuICAgICAgICAuZm9yRWFjaCgoZXh0ZXJuYWxPdmVycmlkZUVsKSA9PiB7XG4gICAgICAgICAgY3VycmVudFBhZ2VFeHRlcm5hbE92ZXJyaWRlcy5wdXNoKGV4dGVybmFsT3ZlcnJpZGVFbC5zcmMpO1xuICAgICAgICB9KTtcbiAgICAgIHJldHVybiBjdXJyZW50UGFnZUV4dGVybmFsT3ZlcnJpZGVzO1xuICAgIH0sXG4gICAgZ2V0TmV4dFBhZ2VNYXAoKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xuICAgICAgICBpbW8uZ2V0RGVmYXVsdE1hcCgpLFxuICAgICAgICBpbW8uZ2V0RXh0ZXJuYWxPdmVycmlkZU1hcCgpLFxuICAgICAgXSkudGhlbigoW2RlZmF1bHRNYXAsIGV4dGVybmFsT3ZlcnJpZGVzTWFwXSkgPT4ge1xuICAgICAgICByZXR1cm4gaW1vLm1lcmdlSW1wb3J0TWFwKFxuICAgICAgICAgIGltby5tZXJnZUltcG9ydE1hcChkZWZhdWx0TWFwLCBleHRlcm5hbE92ZXJyaWRlc01hcCksXG4gICAgICAgICAgaW1vLmdldE92ZXJyaWRlTWFwKClcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZGlzYWJsZU92ZXJyaWRlKG1vZHVsZU5hbWUpIHtcbiAgICAgIGNvbnN0IGRpc2FibGVkT3ZlcnJpZGVzID0gaW1vLmdldERpc2FibGVkT3ZlcnJpZGVzKCk7XG4gICAgICBpZiAoIWluY2x1ZGVzKGRpc2FibGVkT3ZlcnJpZGVzLCBtb2R1bGVOYW1lKSkge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgICBkaXNhYmxlZE92ZXJyaWRlc0xvY2FsU3RvcmFnZUtleSxcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShkaXNhYmxlZE92ZXJyaWRlcy5jb25jYXQobW9kdWxlTmFtZSkpXG4gICAgICAgICk7XG4gICAgICAgIGZpcmVDaGFuZ2VkRXZlbnQoKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSxcbiAgICBlbmFibGVPdmVycmlkZShtb2R1bGVOYW1lKSB7XG4gICAgICBjb25zdCBkaXNhYmxlZE92ZXJyaWRlcyA9IGltby5nZXREaXNhYmxlZE92ZXJyaWRlcygpO1xuICAgICAgY29uc3QgaW5kZXggPSBkaXNhYmxlZE92ZXJyaWRlcy5pbmRleE9mKG1vZHVsZU5hbWUpO1xuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgZGlzYWJsZWRPdmVycmlkZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICAgICAgZGlzYWJsZWRPdmVycmlkZXNMb2NhbFN0b3JhZ2VLZXksXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZGlzYWJsZWRPdmVycmlkZXMpXG4gICAgICAgICk7XG4gICAgICAgIGZpcmVDaGFuZ2VkRXZlbnQoKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSxcbiAgICBnZXREaXNhYmxlZE92ZXJyaWRlcygpIHtcbiAgICAgIGNvbnN0IGRpc2FibGVkT3ZlcnJpZGVzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXG4gICAgICAgIGRpc2FibGVkT3ZlcnJpZGVzTG9jYWxTdG9yYWdlS2V5XG4gICAgICApO1xuICAgICAgcmV0dXJuIGRpc2FibGVkT3ZlcnJpZGVzID8gSlNPTi5wYXJzZShkaXNhYmxlZE92ZXJyaWRlcykgOiBbXTtcbiAgICB9LFxuICAgIGlzRGlzYWJsZWQobW9kdWxlTmFtZSkge1xuICAgICAgcmV0dXJuIGluY2x1ZGVzKGltby5nZXREaXNhYmxlZE92ZXJyaWRlcygpLCBtb2R1bGVOYW1lKTtcbiAgICB9LFxuICAgIGdldEV4dGVybmFsT3ZlcnJpZGVzKCkge1xuICAgICAgbGV0IGxvY2FsU3RvcmFnZVZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXG4gICAgICAgIGV4dGVybmFsT3ZlcnJpZGVzTG9jYWxTdG9yYWdlS2V5XG4gICAgICApO1xuICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZVZhbHVlID8gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VWYWx1ZSkuc29ydCgpIDogW107XG4gICAgfSxcbiAgICBhZGRFeHRlcm5hbE92ZXJyaWRlKHVybCkge1xuICAgICAgdXJsID0gbmV3IFVSTCh1cmwsIGRvY3VtZW50LmJhc2VVUkkpLmhyZWY7XG4gICAgICBjb25zdCBvdmVycmlkZXMgPSBpbW8uZ2V0RXh0ZXJuYWxPdmVycmlkZXMoKTtcbiAgICAgIGlmIChpbmNsdWRlcyhvdmVycmlkZXMsIHVybCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICAgICAgZXh0ZXJuYWxPdmVycmlkZXNMb2NhbFN0b3JhZ2VLZXksXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkob3ZlcnJpZGVzLmNvbmNhdCh1cmwpKVxuICAgICAgICApO1xuICAgICAgICBmaXJlQ2hhbmdlZEV2ZW50KCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0sXG4gICAgcmVtb3ZlRXh0ZXJuYWxPdmVycmlkZSh1cmwpIHtcbiAgICAgIGNvbnN0IG92ZXJyaWRlcyA9IGltby5nZXRFeHRlcm5hbE92ZXJyaWRlcygpO1xuICAgICAgaWYgKGluY2x1ZGVzKG92ZXJyaWRlcywgdXJsKSkge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgICBleHRlcm5hbE92ZXJyaWRlc0xvY2FsU3RvcmFnZUtleSxcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShvdmVycmlkZXMuZmlsdGVyKChvdmVycmlkZSkgPT4gb3ZlcnJpZGUgIT09IHVybCkpXG4gICAgICAgICk7XG4gICAgICAgIGZpcmVDaGFuZ2VkRXZlbnQoKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSxcbiAgICBnZXRFeHRlcm5hbE92ZXJyaWRlTWFwKGV4dGVybmFsT3ZlcnJpZGVzID0gaW1vLmdldEV4dGVybmFsT3ZlcnJpZGVzKCkpIHtcbiAgICAgIHJldHVybiBleHRlcm5hbE92ZXJyaWRlcy5yZWR1Y2UoKHJlc3VsdCwgZXh0ZXJuYWxPdmVycmlkZSkgPT4ge1xuICAgICAgICBjb25zdCBmZXRjaFByb21pc2UgPVxuICAgICAgICAgIGV4dGVybmFsT3ZlcnJpZGVNYXBQcm9taXNlc1tleHRlcm5hbE92ZXJyaWRlXSB8fFxuICAgICAgICAgIChleHRlcm5hbE92ZXJyaWRlTWFwUHJvbWlzZXNbZXh0ZXJuYWxPdmVycmlkZV0gPSBmZXRjaEV4dGVybmFsTWFwKFxuICAgICAgICAgICAgZXh0ZXJuYWxPdmVycmlkZVxuICAgICAgICAgICkpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW3Jlc3VsdCwgZmV0Y2hQcm9taXNlXSkudGhlbihcbiAgICAgICAgICAoW2ZpcnN0TWFwLCBzZWNvbmRNYXBdKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaW1vLm1lcmdlSW1wb3J0TWFwKGZpcnN0TWFwLCBzZWNvbmRNYXApO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0sIFByb21pc2UucmVzb2x2ZShjcmVhdGVFbXB0eUltcG9ydE1hcCgpKSk7XG4gICAgfSxcbiAgICBpc0V4dGVybmFsTWFwVmFsaWQoaW1wb3J0TWFwVXJsKSB7XG4gICAgICBjb25zdCBwcm9taXNlID1cbiAgICAgICAgZXh0ZXJuYWxPdmVycmlkZU1hcFByb21pc2VzW2ltcG9ydE1hcFVybF0gfHxcbiAgICAgICAgKGV4dGVybmFsT3ZlcnJpZGVNYXBQcm9taXNlc1tpbXBvcnRNYXBVcmxdID0gZmV0Y2hFeHRlcm5hbE1hcChcbiAgICAgICAgICBpbXBvcnRNYXBVcmxcbiAgICAgICAgKSk7XG4gICAgICByZXR1cm4gcHJvbWlzZS50aGVuKCgpID0+XG4gICAgICAgIGluY2x1ZGVzKGltby5pbnZhbGlkRXh0ZXJuYWxNYXBzLCBpbXBvcnRNYXBVcmwpXG4gICAgICApO1xuICAgIH0sXG4gICAgaW52YWxpZEV4dGVybmFsTWFwczogW10sXG4gIH07XG5cbiAgY29uc3QgaW1vID0gd2luZG93LmltcG9ydE1hcE92ZXJyaWRlcztcblxuICBsZXQgY2FuRmlyZUN1c3RvbUV2ZW50cyA9IHRydWU7XG4gIHRyeSB7XG4gICAgaWYgKEN1c3RvbUV2ZW50KSB7XG4gICAgICBuZXcgQ3VzdG9tRXZlbnQoXCJhXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYW5GaXJlQ3VzdG9tRXZlbnRzID0gZmFsc2U7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW5GaXJlQ3VzdG9tRXZlbnRzID0gZmFsc2U7XG4gIH1cblxuICBmdW5jdGlvbiBmaXJlQ2hhbmdlZEV2ZW50KCkge1xuICAgIGZpcmVFdmVudChcImNoYW5nZVwiKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGZpcmVFdmVudCh0eXBlKSB7XG4gICAgLy8gU2V0IHRpbWVvdXQgc28gdGhhdCBldmVudCBmaXJlcyBhZnRlciB0aGUgY2hhbmdlIGhhcyB0b3RhbGx5IGZpbmlzaGVkXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBldmVudFR5cGUgPSBgaW1wb3J0LW1hcC1vdmVycmlkZXM6JHt0eXBlfWA7XG4gICAgICBjb25zdCBldmVudCA9IGNhbkZpcmVDdXN0b21FdmVudHNcbiAgICAgICAgPyBuZXcgQ3VzdG9tRXZlbnQoZXZlbnRUeXBlKVxuICAgICAgICA6IGRvY3VtZW50LmNyZWF0ZUV2ZW50KFwiQ3VzdG9tRXZlbnRcIik7XG4gICAgICBpZiAoIWNhbkZpcmVDdXN0b21FdmVudHMpIHtcbiAgICAgICAgZXZlbnQuaW5pdEN1c3RvbUV2ZW50KGV2ZW50VHlwZSwgdHJ1ZSwgdHJ1ZSwgbnVsbCk7XG4gICAgICB9XG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBpbml0aWFsT3ZlcnJpZGVNYXAgPSBpbW8uZ2V0T3ZlcnJpZGVNYXAoKTtcbiAgY29uc3QgaW5pdGlhbEV4dGVybmFsT3ZlcnJpZGVNYXBzID0gaW1vLmdldEV4dGVybmFsT3ZlcnJpZGVzKCk7XG5cbiAgbGV0IHJlZmVyZW5jZU5vZGU7XG5cbiAgaWYgKCFzZXJ2ZXJPbmx5KSB7XG4gICAgY29uc3Qgb3ZlcnJpZGFibGVJbXBvcnRNYXAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJ3NjcmlwdFt0eXBlPVwib3ZlcnJpZGFibGUtaW1wb3J0bWFwXCJdJ1xuICAgICk7XG5cbiAgICByZWZlcmVuY2VOb2RlID0gb3ZlcnJpZGFibGVJbXBvcnRNYXA7XG5cbiAgICBpZiAoIXJlZmVyZW5jZU5vZGUpIHtcbiAgICAgIGNvbnN0IGltcG9ydE1hcHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICBgc2NyaXB0W3R5cGU9XCIke2ltcG9ydE1hcFR5cGV9XCJdYFxuICAgICAgKTtcbiAgICAgIHJlZmVyZW5jZU5vZGUgPSBpbXBvcnRNYXBzID8gaW1wb3J0TWFwc1tpbXBvcnRNYXBzLmxlbmd0aCAtIDFdIDogbnVsbDtcbiAgICB9XG5cbiAgICBpZiAob3ZlcnJpZGFibGVJbXBvcnRNYXApIHtcbiAgICAgIGlmIChvdmVycmlkYWJsZUltcG9ydE1hcC5zcmMpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgYGltcG9ydC1tYXAtb3ZlcnJpZGVzOiBleHRlcm5hbCBpbXBvcnQgbWFwcyB3aXRoIHR5cGU9XCJvdmVycmlkYWJsZS1pbXBvcnRtYXBcIiBhcmUgbm90IHN1cHBvcnRlZGBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGxldCBvcmlnaW5hbE1hcDtcbiAgICAgIHRyeSB7XG4gICAgICAgIG9yaWdpbmFsTWFwID0gSlNPTi5wYXJzZShvdmVycmlkYWJsZUltcG9ydE1hcC50ZXh0Q29udGVudCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgIGBJbnZhbGlkIDxzY3JpcHQgdHlwZT1cIm92ZXJyaWRhYmxlLWltcG9ydG1hcFwiPiAtIHRleHQgY29udGVudCBtdXN0IGJlIGpzb25gXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJlZmVyZW5jZU5vZGUgPSBpbnNlcnRPdmVycmlkZU1hcChcbiAgICAgICAgaW1vLm1lcmdlSW1wb3J0TWFwKG9yaWdpbmFsTWFwLCBpbml0aWFsT3ZlcnJpZGVNYXApLFxuICAgICAgICBgaW1wb3J0LW1hcC1vdmVycmlkZXNgLFxuICAgICAgICByZWZlcmVuY2VOb2RlXG4gICAgICApO1xuICAgICAgaW5zZXJ0QWxsRXh0ZXJuYWxPdmVycmlkZU1hcHMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5zZXJ0QWxsRXh0ZXJuYWxPdmVycmlkZU1hcHMoKTtcbiAgICAgIGlmIChPYmplY3Qua2V5cyhpbml0aWFsT3ZlcnJpZGVNYXAuaW1wb3J0cykubGVuZ3RoID4gMCkge1xuICAgICAgICByZWZlcmVuY2VOb2RlID0gaW5zZXJ0T3ZlcnJpZGVNYXAoXG4gICAgICAgICAgaW5pdGlhbE92ZXJyaWRlTWFwLFxuICAgICAgICAgIGBpbXBvcnQtbWFwLW92ZXJyaWRlc2AsXG4gICAgICAgICAgcmVmZXJlbmNlTm9kZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZpcmVFdmVudChcImluaXRcIik7XG5cbiAgZnVuY3Rpb24gaW5zZXJ0T3ZlcnJpZGVNYXAobWFwLCBpZCwgcmVmZXJlbmNlTm9kZSkge1xuICAgIGNvbnN0IG92ZXJyaWRlTWFwRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XG4gICAgb3ZlcnJpZGVNYXBFbGVtZW50LnR5cGUgPSBpbXBvcnRNYXBUeXBlO1xuICAgIG92ZXJyaWRlTWFwRWxlbWVudC5pZCA9IGlkOyAvLyBmb3IgZGVidWdnaW5nIGFuZCBmb3IgVUkgdG8gaWRlbnRpZnkgdGhpcyBpbXBvcnQgbWFwIGFzIHNwZWNpYWxcbiAgICBvdmVycmlkZU1hcEVsZW1lbnQuc2V0QXR0cmlidXRlKG92ZXJyaWRlQXR0cmlidXRlLCBcIlwiKTtcbiAgICBpZiAodHlwZW9mIG1hcCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgb3ZlcnJpZGVNYXBFbGVtZW50LnNyYyA9IG1hcDtcbiAgICB9IGVsc2Uge1xuICAgICAgb3ZlcnJpZGVNYXBFbGVtZW50LnRleHRDb250ZW50ID0gSlNPTi5zdHJpbmdpZnkobWFwLCBudWxsLCAyKTtcbiAgICB9XG5cbiAgICBpZiAocmVmZXJlbmNlTm9kZSkge1xuICAgICAgcmVmZXJlbmNlTm9kZS5pbnNlcnRBZGphY2VudEVsZW1lbnQoXCJhZnRlcmVuZFwiLCBvdmVycmlkZU1hcEVsZW1lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKG92ZXJyaWRlTWFwRWxlbWVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG92ZXJyaWRlTWFwRWxlbWVudDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGZldGNoRXh0ZXJuYWxNYXAodXJsKSB7XG4gICAgcmV0dXJuIGZldGNoKHVybCkudGhlbihcbiAgICAgIChyKSA9PiB7XG4gICAgICAgIGlmIChyLm9rKSB7XG4gICAgICAgICAgcmV0dXJuIHIuanNvbigpLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgRXJyb3IoXG4gICAgICAgICAgICAgICAgYEV4dGVybmFsIG92ZXJyaWRlIGltcG9ydCBtYXAgY29udGFpbmVkIGludmFsaWQganNvbiwgYXQgdXJsICR7ci51cmx9LiAke2Vycn1gXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpbW8uaW52YWxpZEV4dGVybmFsTWFwcy5wdXNoKHIudXJsKTtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVFbXB0eUltcG9ydE1hcCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIEVycm9yKFxuICAgICAgICAgICAgICBgVW5hYmxlIHRvIGRvd25sb2FkIGV4dGVybmFsIG92ZXJyaWRlIGltcG9ydCBtYXAgZnJvbSB1cmwgJHtyLnVybH0uIFNlcnZlciByZXNwb25kZWQgd2l0aCBzdGF0dXMgJHtyLnN0YXR1c31gXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpbW8uaW52YWxpZEV4dGVybmFsTWFwcy5wdXNoKHIudXJsKTtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlRW1wdHlJbXBvcnRNYXAoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIEVycm9yKGBVbmFibGUgdG8gZG93bmxvYWQgZXh0ZXJuYWwgaW1wb3J0IG1hcCBhdCB1cmwgJyR7dXJsfSdgKVxuICAgICAgICApO1xuICAgICAgICBpbW8uaW52YWxpZEV4dGVybmFsTWFwcy5wdXNoKG5ldyBVUkwodXJsLCBkb2N1bWVudC5iYXNlVVJJKS5ocmVmKTtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUVtcHR5SW1wb3J0TWFwKCk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUVtcHR5SW1wb3J0TWFwKCkge1xuICAgIHJldHVybiB7IGltcG9ydHM6IHt9LCBzY29wZXM6IHt9IH07XG4gIH1cblxuICBmdW5jdGlvbiBpbnNlcnRBbGxFeHRlcm5hbE92ZXJyaWRlTWFwcygpIHtcbiAgICBpZiAoaW5pdGlhbEV4dGVybmFsT3ZlcnJpZGVNYXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIGluaXRpYWxFeHRlcm5hbE92ZXJyaWRlTWFwcy5mb3JFYWNoKChtYXBVcmwsIGluZGV4KSA9PiB7XG4gICAgICAgIHJlZmVyZW5jZU5vZGUgPSBpbnNlcnRPdmVycmlkZU1hcChcbiAgICAgICAgICBtYXBVcmwsXG4gICAgICAgICAgYGltcG9ydC1tYXAtb3ZlcnJpZGVzLWV4dGVybmFsLSR7aW5kZXh9YFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNhbkFjY2Vzc0xvY2FsU3RvcmFnZSgpIHtcbiAgdHJ5IHtcbiAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInRlc3RcIik7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwiLy8gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vc2luZHJlc29yaHVzL2VzY2FwZS1zdHJpbmctcmVnZXhwXG5leHBvcnQgY29uc3QgZXNjYXBlU3RyaW5nUmVnZXhwID0gKHN0cmluZykgPT4ge1xuICBpZiAodHlwZW9mIHN0cmluZyAhPT0gXCJzdHJpbmdcIikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJFeHBlY3RlZCBhIHN0cmluZ1wiKTtcbiAgfVxuXG4gIC8vIEVzY2FwZSBjaGFyYWN0ZXJzIHdpdGggc3BlY2lhbCBtZWFuaW5nIGVpdGhlciBpbnNpZGUgb3Igb3V0c2lkZSBjaGFyYWN0ZXIgc2V0cy5cbiAgLy8gVXNlIGEgc2ltcGxlIGJhY2tzbGFzaCBlc2NhcGUgd2hlbiBpdOKAmXMgYWx3YXlzIHZhbGlkLCBhbmQgYSBgXFx4bm5gIGVzY2FwZSB3aGVuIHRoZSBzaW1wbGVyIGZvcm0gd291bGQgYmUgZGlzYWxsb3dlZCBieSBVbmljb2RlIHBhdHRlcm5z4oCZIHN0cmljdGVyIGdyYW1tYXIuXG4gIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW3xcXFxce30oKVtcXF1eJCsqPy5dL2csIFwiXFxcXCQmXCIpLnJlcGxhY2UoLy0vZywgXCJcXFxceDJkXCIpO1xufTtcbiIsImZ1bmN0aW9uIHN0eWxlSW5qZWN0KGNzcywgcmVmKSB7XG4gIGlmICggcmVmID09PSB2b2lkIDAgKSByZWYgPSB7fTtcbiAgdmFyIGluc2VydEF0ID0gcmVmLmluc2VydEF0O1xuXG4gIGlmICghY3NzIHx8IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHsgcmV0dXJuOyB9XG5cbiAgdmFyIGhlYWQgPSBkb2N1bWVudC5oZWFkIHx8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4gIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIHN0eWxlLnR5cGUgPSAndGV4dC9jc3MnO1xuXG4gIGlmIChpbnNlcnRBdCA9PT0gJ3RvcCcpIHtcbiAgICBpZiAoaGVhZC5maXJzdENoaWxkKSB7XG4gICAgICBoZWFkLmluc2VydEJlZm9yZShzdHlsZSwgaGVhZC5maXJzdENoaWxkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICB9XG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgc3R5bGVJbmplY3Q7XG4iLCJ2YXIgbixsLHUsaSx0LG8scixmLGU9e30sYz1bXSxzPS9hY2l0fGV4KD86c3xnfG58cHwkKXxycGh8Z3JpZHxvd3N8bW5jfG50d3xpbmVbY2hdfHpvb3xeb3JkfGl0ZXJhL2k7ZnVuY3Rpb24gYShuLGwpe2Zvcih2YXIgdSBpbiBsKW5bdV09bFt1XTtyZXR1cm4gbn1mdW5jdGlvbiBoKG4pe3ZhciBsPW4ucGFyZW50Tm9kZTtsJiZsLnJlbW92ZUNoaWxkKG4pfWZ1bmN0aW9uIHYobCx1LGkpe3ZhciB0LG8scixmPXt9O2ZvcihyIGluIHUpXCJrZXlcIj09cj90PXVbcl06XCJyZWZcIj09cj9vPXVbcl06ZltyXT11W3JdO2lmKGFyZ3VtZW50cy5sZW5ndGg+MiYmKGYuY2hpbGRyZW49YXJndW1lbnRzLmxlbmd0aD4zP24uY2FsbChhcmd1bWVudHMsMik6aSksXCJmdW5jdGlvblwiPT10eXBlb2YgbCYmbnVsbCE9bC5kZWZhdWx0UHJvcHMpZm9yKHIgaW4gbC5kZWZhdWx0UHJvcHMpdm9pZCAwPT09ZltyXSYmKGZbcl09bC5kZWZhdWx0UHJvcHNbcl0pO3JldHVybiB5KGwsZix0LG8sbnVsbCl9ZnVuY3Rpb24geShuLGksdCxvLHIpe3ZhciBmPXt0eXBlOm4scHJvcHM6aSxrZXk6dCxyZWY6byxfX2s6bnVsbCxfXzpudWxsLF9fYjowLF9fZTpudWxsLF9fZDp2b2lkIDAsX19jOm51bGwsX19oOm51bGwsY29uc3RydWN0b3I6dm9pZCAwLF9fdjpudWxsPT1yPysrdTpyfTtyZXR1cm4gbnVsbCE9bC52bm9kZSYmbC52bm9kZShmKSxmfWZ1bmN0aW9uIHAoKXtyZXR1cm57Y3VycmVudDpudWxsfX1mdW5jdGlvbiBkKG4pe3JldHVybiBuLmNoaWxkcmVufWZ1bmN0aW9uIF8obixsKXt0aGlzLnByb3BzPW4sdGhpcy5jb250ZXh0PWx9ZnVuY3Rpb24gayhuLGwpe2lmKG51bGw9PWwpcmV0dXJuIG4uX18/ayhuLl9fLG4uX18uX19rLmluZGV4T2YobikrMSk6bnVsbDtmb3IodmFyIHU7bDxuLl9fay5sZW5ndGg7bCsrKWlmKG51bGwhPSh1PW4uX19rW2xdKSYmbnVsbCE9dS5fX2UpcmV0dXJuIHUuX19lO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIG4udHlwZT9rKG4pOm51bGx9ZnVuY3Rpb24gYihuKXt2YXIgbCx1O2lmKG51bGwhPShuPW4uX18pJiZudWxsIT1uLl9fYyl7Zm9yKG4uX19lPW4uX19jLmJhc2U9bnVsbCxsPTA7bDxuLl9fay5sZW5ndGg7bCsrKWlmKG51bGwhPSh1PW4uX19rW2xdKSYmbnVsbCE9dS5fX2Upe24uX19lPW4uX19jLmJhc2U9dS5fX2U7YnJlYWt9cmV0dXJuIGIobil9fWZ1bmN0aW9uIG0obil7KCFuLl9fZCYmKG4uX19kPSEwKSYmdC5wdXNoKG4pJiYhZy5fX3IrK3x8ciE9PWwuZGVib3VuY2VSZW5kZXJpbmcpJiYoKHI9bC5kZWJvdW5jZVJlbmRlcmluZyl8fG8pKGcpfWZ1bmN0aW9uIGcoKXtmb3IodmFyIG47Zy5fX3I9dC5sZW5ndGg7KW49dC5zb3J0KGZ1bmN0aW9uKG4sbCl7cmV0dXJuIG4uX192Ll9fYi1sLl9fdi5fX2J9KSx0PVtdLG4uc29tZShmdW5jdGlvbihuKXt2YXIgbCx1LGksdCxvLHI7bi5fX2QmJihvPSh0PShsPW4pLl9fdikuX19lLChyPWwuX19QKSYmKHU9W10sKGk9YSh7fSx0KSkuX192PXQuX192KzEsaihyLHQsaSxsLl9fbix2b2lkIDAhPT1yLm93bmVyU1ZHRWxlbWVudCxudWxsIT10Ll9faD9bb106bnVsbCx1LG51bGw9PW8/ayh0KTpvLHQuX19oKSx6KHUsdCksdC5fX2UhPW8mJmIodCkpKX0pfWZ1bmN0aW9uIHcobixsLHUsaSx0LG8scixmLHMsYSl7dmFyIGgsdixwLF8sYixtLGcsdz1pJiZpLl9fa3x8YyxBPXcubGVuZ3RoO2Zvcih1Ll9faz1bXSxoPTA7aDxsLmxlbmd0aDtoKyspaWYobnVsbCE9KF89dS5fX2tbaF09bnVsbD09KF89bFtoXSl8fFwiYm9vbGVhblwiPT10eXBlb2YgXz9udWxsOlwic3RyaW5nXCI9PXR5cGVvZiBffHxcIm51bWJlclwiPT10eXBlb2YgX3x8XCJiaWdpbnRcIj09dHlwZW9mIF8/eShudWxsLF8sbnVsbCxudWxsLF8pOkFycmF5LmlzQXJyYXkoXyk/eShkLHtjaGlsZHJlbjpffSxudWxsLG51bGwsbnVsbCk6Xy5fX2I+MD95KF8udHlwZSxfLnByb3BzLF8ua2V5LG51bGwsXy5fX3YpOl8pKXtpZihfLl9fPXUsXy5fX2I9dS5fX2IrMSxudWxsPT09KHA9d1toXSl8fHAmJl8ua2V5PT1wLmtleSYmXy50eXBlPT09cC50eXBlKXdbaF09dm9pZCAwO2Vsc2UgZm9yKHY9MDt2PEE7disrKXtpZigocD13W3ZdKSYmXy5rZXk9PXAua2V5JiZfLnR5cGU9PT1wLnR5cGUpe3dbdl09dm9pZCAwO2JyZWFrfXA9bnVsbH1qKG4sXyxwPXB8fGUsdCxvLHIsZixzLGEpLGI9Xy5fX2UsKHY9Xy5yZWYpJiZwLnJlZiE9diYmKGd8fChnPVtdKSxwLnJlZiYmZy5wdXNoKHAucmVmLG51bGwsXyksZy5wdXNoKHYsXy5fX2N8fGIsXykpLG51bGwhPWI/KG51bGw9PW0mJihtPWIpLFwiZnVuY3Rpb25cIj09dHlwZW9mIF8udHlwZSYmbnVsbCE9Xy5fX2smJl8uX19rPT09cC5fX2s/Xy5fX2Q9cz14KF8scyxuKTpzPVAobixfLHAsdyxiLHMpLGF8fFwib3B0aW9uXCIhPT11LnR5cGU/XCJmdW5jdGlvblwiPT10eXBlb2YgdS50eXBlJiYodS5fX2Q9cyk6bi52YWx1ZT1cIlwiKTpzJiZwLl9fZT09cyYmcy5wYXJlbnROb2RlIT1uJiYocz1rKHApKX1mb3IodS5fX2U9bSxoPUE7aC0tOyludWxsIT13W2hdJiYoXCJmdW5jdGlvblwiPT10eXBlb2YgdS50eXBlJiZudWxsIT13W2hdLl9fZSYmd1toXS5fX2U9PXUuX19kJiYodS5fX2Q9ayhpLGgrMSkpLE4od1toXSx3W2hdKSk7aWYoZylmb3IoaD0wO2g8Zy5sZW5ndGg7aCsrKU0oZ1toXSxnWysraF0sZ1srK2hdKX1mdW5jdGlvbiB4KG4sbCx1KXt2YXIgaSx0O2ZvcihpPTA7aTxuLl9fay5sZW5ndGg7aSsrKSh0PW4uX19rW2ldKSYmKHQuX189bixsPVwiZnVuY3Rpb25cIj09dHlwZW9mIHQudHlwZT94KHQsbCx1KTpQKHUsdCx0LG4uX19rLHQuX19lLGwpKTtyZXR1cm4gbH1mdW5jdGlvbiBBKG4sbCl7cmV0dXJuIGw9bHx8W10sbnVsbD09bnx8XCJib29sZWFuXCI9PXR5cGVvZiBufHwoQXJyYXkuaXNBcnJheShuKT9uLnNvbWUoZnVuY3Rpb24obil7QShuLGwpfSk6bC5wdXNoKG4pKSxsfWZ1bmN0aW9uIFAobixsLHUsaSx0LG8pe3ZhciByLGYsZTtpZih2b2lkIDAhPT1sLl9fZClyPWwuX19kLGwuX19kPXZvaWQgMDtlbHNlIGlmKG51bGw9PXV8fHQhPW98fG51bGw9PXQucGFyZW50Tm9kZSluOmlmKG51bGw9PW98fG8ucGFyZW50Tm9kZSE9PW4pbi5hcHBlbmRDaGlsZCh0KSxyPW51bGw7ZWxzZXtmb3IoZj1vLGU9MDsoZj1mLm5leHRTaWJsaW5nKSYmZTxpLmxlbmd0aDtlKz0yKWlmKGY9PXQpYnJlYWsgbjtuLmluc2VydEJlZm9yZSh0LG8pLHI9b31yZXR1cm4gdm9pZCAwIT09cj9yOnQubmV4dFNpYmxpbmd9ZnVuY3Rpb24gQyhuLGwsdSxpLHQpe3ZhciBvO2ZvcihvIGluIHUpXCJjaGlsZHJlblwiPT09b3x8XCJrZXlcIj09PW98fG8gaW4gbHx8SChuLG8sbnVsbCx1W29dLGkpO2ZvcihvIGluIGwpdCYmXCJmdW5jdGlvblwiIT10eXBlb2YgbFtvXXx8XCJjaGlsZHJlblwiPT09b3x8XCJrZXlcIj09PW98fFwidmFsdWVcIj09PW98fFwiY2hlY2tlZFwiPT09b3x8dVtvXT09PWxbb118fEgobixvLGxbb10sdVtvXSxpKX1mdW5jdGlvbiAkKG4sbCx1KXtcIi1cIj09PWxbMF0/bi5zZXRQcm9wZXJ0eShsLHUpOm5bbF09bnVsbD09dT9cIlwiOlwibnVtYmVyXCIhPXR5cGVvZiB1fHxzLnRlc3QobCk/dTp1K1wicHhcIn1mdW5jdGlvbiBIKG4sbCx1LGksdCl7dmFyIG87bjppZihcInN0eWxlXCI9PT1sKWlmKFwic3RyaW5nXCI9PXR5cGVvZiB1KW4uc3R5bGUuY3NzVGV4dD11O2Vsc2V7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGkmJihuLnN0eWxlLmNzc1RleHQ9aT1cIlwiKSxpKWZvcihsIGluIGkpdSYmbCBpbiB1fHwkKG4uc3R5bGUsbCxcIlwiKTtpZih1KWZvcihsIGluIHUpaSYmdVtsXT09PWlbbF18fCQobi5zdHlsZSxsLHVbbF0pfWVsc2UgaWYoXCJvXCI9PT1sWzBdJiZcIm5cIj09PWxbMV0pbz1sIT09KGw9bC5yZXBsYWNlKC9DYXB0dXJlJC8sXCJcIikpLGw9bC50b0xvd2VyQ2FzZSgpaW4gbj9sLnRvTG93ZXJDYXNlKCkuc2xpY2UoMik6bC5zbGljZSgyKSxuLmx8fChuLmw9e30pLG4ubFtsK29dPXUsdT9pfHxuLmFkZEV2ZW50TGlzdGVuZXIobCxvP1Q6SSxvKTpuLnJlbW92ZUV2ZW50TGlzdGVuZXIobCxvP1Q6SSxvKTtlbHNlIGlmKFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIiE9PWwpe2lmKHQpbD1sLnJlcGxhY2UoL3hsaW5rW0g6aF0vLFwiaFwiKS5yZXBsYWNlKC9zTmFtZSQvLFwic1wiKTtlbHNlIGlmKFwiaHJlZlwiIT09bCYmXCJsaXN0XCIhPT1sJiZcImZvcm1cIiE9PWwmJlwidGFiSW5kZXhcIiE9PWwmJlwiZG93bmxvYWRcIiE9PWwmJmwgaW4gbil0cnl7bltsXT1udWxsPT11P1wiXCI6dTticmVhayBufWNhdGNoKG4pe31cImZ1bmN0aW9uXCI9PXR5cGVvZiB1fHwobnVsbCE9dSYmKCExIT09dXx8XCJhXCI9PT1sWzBdJiZcInJcIj09PWxbMV0pP24uc2V0QXR0cmlidXRlKGwsdSk6bi5yZW1vdmVBdHRyaWJ1dGUobCkpfX1mdW5jdGlvbiBJKG4pe3RoaXMubFtuLnR5cGUrITFdKGwuZXZlbnQ/bC5ldmVudChuKTpuKX1mdW5jdGlvbiBUKG4pe3RoaXMubFtuLnR5cGUrITBdKGwuZXZlbnQ/bC5ldmVudChuKTpuKX1mdW5jdGlvbiBqKG4sdSxpLHQsbyxyLGYsZSxjKXt2YXIgcyxoLHYseSxwLGssYixtLGcseCxBLFA9dS50eXBlO2lmKHZvaWQgMCE9PXUuY29uc3RydWN0b3IpcmV0dXJuIG51bGw7bnVsbCE9aS5fX2gmJihjPWkuX19oLGU9dS5fX2U9aS5fX2UsdS5fX2g9bnVsbCxyPVtlXSksKHM9bC5fX2IpJiZzKHUpO3RyeXtuOmlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIFApe2lmKG09dS5wcm9wcyxnPShzPVAuY29udGV4dFR5cGUpJiZ0W3MuX19jXSx4PXM/Zz9nLnByb3BzLnZhbHVlOnMuX186dCxpLl9fYz9iPShoPXUuX19jPWkuX19jKS5fXz1oLl9fRTooXCJwcm90b3R5cGVcImluIFAmJlAucHJvdG90eXBlLnJlbmRlcj91Ll9fYz1oPW5ldyBQKG0seCk6KHUuX19jPWg9bmV3IF8obSx4KSxoLmNvbnN0cnVjdG9yPVAsaC5yZW5kZXI9TyksZyYmZy5zdWIoaCksaC5wcm9wcz1tLGguc3RhdGV8fChoLnN0YXRlPXt9KSxoLmNvbnRleHQ9eCxoLl9fbj10LHY9aC5fX2Q9ITAsaC5fX2g9W10pLG51bGw9PWguX19zJiYoaC5fX3M9aC5zdGF0ZSksbnVsbCE9UC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMmJihoLl9fcz09aC5zdGF0ZSYmKGguX19zPWEoe30saC5fX3MpKSxhKGguX19zLFAuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKG0saC5fX3MpKSkseT1oLnByb3BzLHA9aC5zdGF0ZSx2KW51bGw9PVAuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzJiZudWxsIT1oLmNvbXBvbmVudFdpbGxNb3VudCYmaC5jb21wb25lbnRXaWxsTW91bnQoKSxudWxsIT1oLmNvbXBvbmVudERpZE1vdW50JiZoLl9faC5wdXNoKGguY29tcG9uZW50RGlkTW91bnQpO2Vsc2V7aWYobnVsbD09UC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMmJm0hPT15JiZudWxsIT1oLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJmguY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhtLHgpLCFoLl9fZSYmbnVsbCE9aC5zaG91bGRDb21wb25lbnRVcGRhdGUmJiExPT09aC5zaG91bGRDb21wb25lbnRVcGRhdGUobSxoLl9fcyx4KXx8dS5fX3Y9PT1pLl9fdil7aC5wcm9wcz1tLGguc3RhdGU9aC5fX3MsdS5fX3YhPT1pLl9fdiYmKGguX19kPSExKSxoLl9fdj11LHUuX19lPWkuX19lLHUuX19rPWkuX19rLHUuX19rLmZvckVhY2goZnVuY3Rpb24obil7biYmKG4uX189dSl9KSxoLl9faC5sZW5ndGgmJmYucHVzaChoKTticmVhayBufW51bGwhPWguY29tcG9uZW50V2lsbFVwZGF0ZSYmaC5jb21wb25lbnRXaWxsVXBkYXRlKG0saC5fX3MseCksbnVsbCE9aC5jb21wb25lbnREaWRVcGRhdGUmJmguX19oLnB1c2goZnVuY3Rpb24oKXtoLmNvbXBvbmVudERpZFVwZGF0ZSh5LHAsayl9KX1oLmNvbnRleHQ9eCxoLnByb3BzPW0saC5zdGF0ZT1oLl9fcywocz1sLl9fcikmJnModSksaC5fX2Q9ITEsaC5fX3Y9dSxoLl9fUD1uLHM9aC5yZW5kZXIoaC5wcm9wcyxoLnN0YXRlLGguY29udGV4dCksaC5zdGF0ZT1oLl9fcyxudWxsIT1oLmdldENoaWxkQ29udGV4dCYmKHQ9YShhKHt9LHQpLGguZ2V0Q2hpbGRDb250ZXh0KCkpKSx2fHxudWxsPT1oLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHwoaz1oLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKHkscCkpLEE9bnVsbCE9cyYmcy50eXBlPT09ZCYmbnVsbD09cy5rZXk/cy5wcm9wcy5jaGlsZHJlbjpzLHcobixBcnJheS5pc0FycmF5KEEpP0E6W0FdLHUsaSx0LG8scixmLGUsYyksaC5iYXNlPXUuX19lLHUuX19oPW51bGwsaC5fX2gubGVuZ3RoJiZmLnB1c2goaCksYiYmKGguX19FPWguX189bnVsbCksaC5fX2U9ITF9ZWxzZSBudWxsPT1yJiZ1Ll9fdj09PWkuX192Pyh1Ll9faz1pLl9fayx1Ll9fZT1pLl9fZSk6dS5fX2U9TChpLl9fZSx1LGksdCxvLHIsZixjKTsocz1sLmRpZmZlZCkmJnModSl9Y2F0Y2gobil7dS5fX3Y9bnVsbCwoY3x8bnVsbCE9cikmJih1Ll9fZT1lLHUuX19oPSEhYyxyW3IuaW5kZXhPZihlKV09bnVsbCksbC5fX2Uobix1LGkpfX1mdW5jdGlvbiB6KG4sdSl7bC5fX2MmJmwuX19jKHUsbiksbi5zb21lKGZ1bmN0aW9uKHUpe3RyeXtuPXUuX19oLHUuX19oPVtdLG4uc29tZShmdW5jdGlvbihuKXtuLmNhbGwodSl9KX1jYXRjaChuKXtsLl9fZShuLHUuX192KX19KX1mdW5jdGlvbiBMKGwsdSxpLHQsbyxyLGYsYyl7dmFyIHMsYSx2LHk9aS5wcm9wcyxwPXUucHJvcHMsZD11LnR5cGUsXz0wO2lmKFwic3ZnXCI9PT1kJiYobz0hMCksbnVsbCE9cilmb3IoO188ci5sZW5ndGg7XysrKWlmKChzPXJbX10pJiYocz09PWx8fChkP3MubG9jYWxOYW1lPT1kOjM9PXMubm9kZVR5cGUpKSl7bD1zLHJbX109bnVsbDticmVha31pZihudWxsPT1sKXtpZihudWxsPT09ZClyZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocCk7bD1vP2RvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsZCk6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChkLHAuaXMmJnApLHI9bnVsbCxjPSExfWlmKG51bGw9PT1kKXk9PT1wfHxjJiZsLmRhdGE9PT1wfHwobC5kYXRhPXApO2Vsc2V7aWYocj1yJiZuLmNhbGwobC5jaGlsZE5vZGVzKSxhPSh5PWkucHJvcHN8fGUpLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLHY9cC5kYW5nZXJvdXNseVNldElubmVySFRNTCwhYyl7aWYobnVsbCE9cilmb3IoeT17fSxfPTA7XzxsLmF0dHJpYnV0ZXMubGVuZ3RoO18rKyl5W2wuYXR0cmlidXRlc1tfXS5uYW1lXT1sLmF0dHJpYnV0ZXNbX10udmFsdWU7KHZ8fGEpJiYodiYmKGEmJnYuX19odG1sPT1hLl9faHRtbHx8di5fX2h0bWw9PT1sLmlubmVySFRNTCl8fChsLmlubmVySFRNTD12JiZ2Ll9faHRtbHx8XCJcIikpfWlmKEMobCxwLHksbyxjKSx2KXUuX19rPVtdO2Vsc2UgaWYoXz11LnByb3BzLmNoaWxkcmVuLHcobCxBcnJheS5pc0FycmF5KF8pP186W19dLHUsaSx0LG8mJlwiZm9yZWlnbk9iamVjdFwiIT09ZCxyLGYscj9yWzBdOmkuX19rJiZrKGksMCksYyksbnVsbCE9cilmb3IoXz1yLmxlbmd0aDtfLS07KW51bGwhPXJbX10mJmgocltfXSk7Y3x8KFwidmFsdWVcImluIHAmJnZvaWQgMCE9PShfPXAudmFsdWUpJiYoXyE9PWwudmFsdWV8fFwicHJvZ3Jlc3NcIj09PWQmJiFfKSYmSChsLFwidmFsdWVcIixfLHkudmFsdWUsITEpLFwiY2hlY2tlZFwiaW4gcCYmdm9pZCAwIT09KF89cC5jaGVja2VkKSYmXyE9PWwuY2hlY2tlZCYmSChsLFwiY2hlY2tlZFwiLF8seS5jaGVja2VkLCExKSl9cmV0dXJuIGx9ZnVuY3Rpb24gTShuLHUsaSl7dHJ5e1wiZnVuY3Rpb25cIj09dHlwZW9mIG4/bih1KTpuLmN1cnJlbnQ9dX1jYXRjaChuKXtsLl9fZShuLGkpfX1mdW5jdGlvbiBOKG4sdSxpKXt2YXIgdCxvO2lmKGwudW5tb3VudCYmbC51bm1vdW50KG4pLCh0PW4ucmVmKSYmKHQuY3VycmVudCYmdC5jdXJyZW50IT09bi5fX2V8fE0odCxudWxsLHUpKSxudWxsIT0odD1uLl9fYykpe2lmKHQuY29tcG9uZW50V2lsbFVubW91bnQpdHJ5e3QuY29tcG9uZW50V2lsbFVubW91bnQoKX1jYXRjaChuKXtsLl9fZShuLHUpfXQuYmFzZT10Ll9fUD1udWxsfWlmKHQ9bi5fX2spZm9yKG89MDtvPHQubGVuZ3RoO28rKyl0W29dJiZOKHRbb10sdSxcImZ1bmN0aW9uXCIhPXR5cGVvZiBuLnR5cGUpO2l8fG51bGw9PW4uX19lfHxoKG4uX19lKSxuLl9fZT1uLl9fZD12b2lkIDB9ZnVuY3Rpb24gTyhuLGwsdSl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3Iobix1KX1mdW5jdGlvbiBTKHUsaSx0KXt2YXIgbyxyLGY7bC5fXyYmbC5fXyh1LGkpLHI9KG89XCJmdW5jdGlvblwiPT10eXBlb2YgdCk/bnVsbDp0JiZ0Ll9fa3x8aS5fX2ssZj1bXSxqKGksdT0oIW8mJnR8fGkpLl9faz12KGQsbnVsbCxbdV0pLHJ8fGUsZSx2b2lkIDAhPT1pLm93bmVyU1ZHRWxlbWVudCwhbyYmdD9bdF06cj9udWxsOmkuZmlyc3RDaGlsZD9uLmNhbGwoaS5jaGlsZE5vZGVzKTpudWxsLGYsIW8mJnQ/dDpyP3IuX19lOmkuZmlyc3RDaGlsZCxvKSx6KGYsdSl9ZnVuY3Rpb24gcShuLGwpe1MobixsLHEpfWZ1bmN0aW9uIEIobCx1LGkpe3ZhciB0LG8scixmPWEoe30sbC5wcm9wcyk7Zm9yKHIgaW4gdSlcImtleVwiPT1yP3Q9dVtyXTpcInJlZlwiPT1yP289dVtyXTpmW3JdPXVbcl07cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MiYmKGYuY2hpbGRyZW49YXJndW1lbnRzLmxlbmd0aD4zP24uY2FsbChhcmd1bWVudHMsMik6aSkseShsLnR5cGUsZix0fHxsLmtleSxvfHxsLnJlZixudWxsKX1mdW5jdGlvbiBEKG4sbCl7dmFyIHU9e19fYzpsPVwiX19jQ1wiK2YrKyxfXzpuLENvbnN1bWVyOmZ1bmN0aW9uKG4sbCl7cmV0dXJuIG4uY2hpbGRyZW4obCl9LFByb3ZpZGVyOmZ1bmN0aW9uKG4pe3ZhciB1LGk7cmV0dXJuIHRoaXMuZ2V0Q2hpbGRDb250ZXh0fHwodT1bXSwoaT17fSlbbF09dGhpcyx0aGlzLmdldENoaWxkQ29udGV4dD1mdW5jdGlvbigpe3JldHVybiBpfSx0aGlzLnNob3VsZENvbXBvbmVudFVwZGF0ZT1mdW5jdGlvbihuKXt0aGlzLnByb3BzLnZhbHVlIT09bi52YWx1ZSYmdS5zb21lKG0pfSx0aGlzLnN1Yj1mdW5jdGlvbihuKXt1LnB1c2gobik7dmFyIGw9bi5jb21wb25lbnRXaWxsVW5tb3VudDtuLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7dS5zcGxpY2UodS5pbmRleE9mKG4pLDEpLGwmJmwuY2FsbChuKX19KSxuLmNoaWxkcmVufX07cmV0dXJuIHUuUHJvdmlkZXIuX189dS5Db25zdW1lci5jb250ZXh0VHlwZT11fW49Yy5zbGljZSxsPXtfX2U6ZnVuY3Rpb24obixsKXtmb3IodmFyIHUsaSx0O2w9bC5fXzspaWYoKHU9bC5fX2MpJiYhdS5fXyl0cnl7aWYoKGk9dS5jb25zdHJ1Y3RvcikmJm51bGwhPWkuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yJiYodS5zZXRTdGF0ZShpLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihuKSksdD11Ll9fZCksbnVsbCE9dS5jb21wb25lbnREaWRDYXRjaCYmKHUuY29tcG9uZW50RGlkQ2F0Y2gobiksdD11Ll9fZCksdClyZXR1cm4gdS5fX0U9dX1jYXRjaChsKXtuPWx9dGhyb3cgbn19LHU9MCxpPWZ1bmN0aW9uKG4pe3JldHVybiBudWxsIT1uJiZ2b2lkIDA9PT1uLmNvbnN0cnVjdG9yfSxfLnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihuLGwpe3ZhciB1O3U9bnVsbCE9dGhpcy5fX3MmJnRoaXMuX19zIT09dGhpcy5zdGF0ZT90aGlzLl9fczp0aGlzLl9fcz1hKHt9LHRoaXMuc3RhdGUpLFwiZnVuY3Rpb25cIj09dHlwZW9mIG4mJihuPW4oYSh7fSx1KSx0aGlzLnByb3BzKSksbiYmYSh1LG4pLG51bGwhPW4mJnRoaXMuX192JiYobCYmdGhpcy5fX2gucHVzaChsKSxtKHRoaXMpKX0sXy5wcm90b3R5cGUuZm9yY2VVcGRhdGU9ZnVuY3Rpb24obil7dGhpcy5fX3YmJih0aGlzLl9fZT0hMCxuJiZ0aGlzLl9faC5wdXNoKG4pLG0odGhpcykpfSxfLnByb3RvdHlwZS5yZW5kZXI9ZCx0PVtdLG89XCJmdW5jdGlvblwiPT10eXBlb2YgUHJvbWlzZT9Qcm9taXNlLnByb3RvdHlwZS50aGVuLmJpbmQoUHJvbWlzZS5yZXNvbHZlKCkpOnNldFRpbWVvdXQsZy5fX3I9MCxmPTA7ZXhwb3J0e1MgYXMgcmVuZGVyLHEgYXMgaHlkcmF0ZSx2IGFzIGNyZWF0ZUVsZW1lbnQsdiBhcyBoLGQgYXMgRnJhZ21lbnQscCBhcyBjcmVhdGVSZWYsaSBhcyBpc1ZhbGlkRWxlbWVudCxfIGFzIENvbXBvbmVudCxCIGFzIGNsb25lRWxlbWVudCxEIGFzIGNyZWF0ZUNvbnRleHQsQSBhcyB0b0NoaWxkQXJyYXksbCBhcyBvcHRpb25zfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXByZWFjdC5tb2R1bGUuanMubWFwXG4iLCJpbXBvcnQgeyBoLCBDb21wb25lbnQgfSBmcm9tIFwicHJlYWN0XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1vZHVsZURpYWxvZyBleHRlbmRzIENvbXBvbmVudCB7XG4gIGdldEluaXRpYWxPdmVycmlkZVVybCA9ICgpID0+IHtcbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoYC8vbG9jYWxob3N0OihbMC05XSspL2ApO1xuICAgIGNvbnN0IG1hdGNoID0gcmVnZXguZXhlYyh0aGlzLnByb3BzLm1vZHVsZS5vdmVycmlkZVVybCk7XG4gICAgaWYgKFxuICAgICAgbWF0Y2ggJiZcbiAgICAgIHRoaXMucHJvcHMubW9kdWxlLm92ZXJyaWRlVXJsID09PVxuICAgICAgICB3aW5kb3cuaW1wb3J0TWFwT3ZlcnJpZGVzLmdldFVybEZyb21Qb3J0KFxuICAgICAgICAgIHRoaXMucHJvcHMubW9kdWxlLm1vZHVsZU5hbWUsXG4gICAgICAgICAgbWF0Y2hbMV1cbiAgICAgICAgKVxuICAgICkge1xuICAgICAgcmV0dXJuIG1hdGNoWzFdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy5tb2R1bGUub3ZlcnJpZGVVcmwpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLm1vZHVsZS5vdmVycmlkZVVybDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICB9O1xuICBzdGF0ZSA9IHtcbiAgICBvdmVycmlkZVVybDogdGhpcy5nZXRJbml0aWFsT3ZlcnJpZGVVcmwoKSxcbiAgICBtb2R1bGVOYW1lOiBcIlwiLFxuICB9O1xuICBpbnB1dEVsID0gbnVsbDtcbiAgbW9kdWxlTmFtZUVsID0gbnVsbDtcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGhpcy5mb2N1c0ZpcnN0SW5wdXQoKTtcbiAgICB0aGlzLmRpYWxvZ0VsLmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIHRoaXMua2V5RG93bik7XG4gIH1cbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcywgcHJldlN0YXRlKSB7XG4gICAgaWYgKHRoaXMucHJvcHMubW9kdWxlICE9PSBwcmV2UHJvcHMubW9kdWxlKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKFxuICAgICAgICB7IG92ZXJyaWRlVXJsOiB0aGlzLnByb3BzLm1vZHVsZS5vdmVycmlkZVVybCB8fCBcIlwiIH0sXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLmZvY3VzRmlyc3RJbnB1dCgpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLmRpYWxvZ0VsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIHRoaXMua2V5RG93bik7XG4gIH1cbiAgcmVuZGVyKHsgbW9kdWxlIH0pIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbW8tbW9kYWwtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW1vLW1vZGFsXCIgLz5cbiAgICAgICAgPGRpYWxvZ1xuICAgICAgICAgIGNsYXNzTmFtZT17YGltby1tb2R1bGUtZGlhbG9nICR7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLm92ZXJyaWRlVXJsLmxlbmd0aCA+IDAgPyBcImltby1vdmVycmlkZGVuXCIgOiBcImltby1kZWZhdWx0XCJcbiAgICAgICAgICB9YH1cbiAgICAgICAgICBvcGVuXG4gICAgICAgICAgcmVmPXt0aGlzLmRpYWxvZ1JlZn1cbiAgICAgICAgPlxuICAgICAgICAgIDxmb3JtIG1ldGhvZD1cImRpYWxvZ1wiIG9uU3VibWl0PXt0aGlzLmhhbmRsZVN1Ym1pdH0+XG4gICAgICAgICAgICA8aDMgc3R5bGU9e3sgbWFyZ2luVG9wOiAwIH19Pnttb2R1bGUubW9kdWxlTmFtZX08L2gzPlxuICAgICAgICAgICAgPHRhYmxlPlxuICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgeyFtb2R1bGUuaXNOZXcgJiYgKFxuICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+RGVmYXVsdCBVUkw6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPnttb2R1bGUuZGVmYXVsdFVybH08L3RkPlxuICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHttb2R1bGUuaXNOZXcgJiYgKFxuICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9XCJtb2R1bGUtbmFtZS1sYWJlbFwiPk1vZHVsZSBOYW1lOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPXt7IHBvc2l0aW9uOiBcInJlbGF0aXZlXCIgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLm1vZHVsZU5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJtb2R1bGUtbmFtZS1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbklucHV0PXsoZXZ0KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbW9kdWxlTmFtZTogZXZ0LnRhcmdldC52YWx1ZSB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLmhhbmRsZU1vZHVsZU5hbWVSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17M31cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImltby1jbGVhci1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLmNsZWFyTW9kdWxlTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PntcIlxcdTI0RTdcIn08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPVwib3ZlcnJpZGUtdXJsLWxhYmVsXCI+T3ZlcnJpZGUgVVJMOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9e3sgcG9zaXRpb246IFwicmVsYXRpdmVcIiB9fT5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLmhhbmRsZUlucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS5vdmVycmlkZVVybH1cbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJvdmVycmlkZS11cmwtbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXsyfVxuICAgICAgICAgICAgICAgICAgICAgIG9uSW5wdXQ9eyhldnQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgb3ZlcnJpZGVVcmw6IGV2dC50YXJnZXQudmFsdWUgfSlcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17NH1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpbW8tY2xlYXItaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuY2xlYXJJbnB1dH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e1wiXFx1MjRFN1wifTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICB7cG9ydFJlZ2V4LnRlc3QodGhpcy5zdGF0ZS5vdmVycmlkZVVybCkgJiYgKFxuICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+RGVyaXZlZCB1cmw6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPnt0aGlzLmdldERlcml2ZWRVcmwoKX08L3RkPlxuICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW1vLWRpYWxvZy1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICB0YWJJbmRleD17NX1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLnByb3BzLmNhbmNlbH1cbiAgICAgICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5SaWdodDogXCIxNnB4XCIgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIENhbmNlbFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAge3RoaXMucHJvcHMubW9kdWxlLm92ZXJyaWRlVXJsICYmICF0aGlzLnByb3BzLm1vZHVsZS5kaXNhYmxlZCAmJiAoXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm1vZHVsZS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5pbXBvcnRNYXBPdmVycmlkZXMuZW5hYmxlT3ZlcnJpZGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm1vZHVsZS5tb2R1bGVOYW1lXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuaW1wb3J0TWFwT3ZlcnJpZGVzLmRpc2FibGVPdmVycmlkZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMubW9kdWxlLm1vZHVsZU5hbWVcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuY2FuY2VsKCk7XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezZ9XG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5SaWdodDogXCIxNnB4XCIgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5tb2R1bGUuZGlzYWJsZWQgPyBcIkVuYWJsZVwiIDogXCJEaXNhYmxlXCJ9IE92ZXJyaWRlXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICB0YWJJbmRleD17N31cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e1xuICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5vdmVycmlkZVVybCA/IFwiaW1vLW92ZXJyaWRkZW5cIiA6IFwiaW1vLWRlZmF1bHRcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0aGlzLnN0YXRlLm92ZXJyaWRlVXJsID8gXCJBcHBseSBvdmVycmlkZVwiIDogXCJSZXNldCB0byBkZWZhdWx0XCJ9XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9mb3JtPlxuICAgICAgICA8L2RpYWxvZz5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICBoYW5kbGVJbnB1dFJlZiA9IChlbCkgPT4ge1xuICAgIHRoaXMuaW5wdXRFbCA9IGVsO1xuICB9O1xuXG4gIGhhbmRsZU1vZHVsZU5hbWVSZWYgPSAoZWwpID0+IHtcbiAgICB0aGlzLm1vZHVsZU5hbWVFbCA9IGVsO1xuICB9O1xuXG4gIGRpYWxvZ1JlZiA9IChlbCkgPT4ge1xuICAgIHRoaXMuZGlhbG9nRWwgPSBlbDtcbiAgfTtcblxuICBoYW5kbGVTdWJtaXQgPSAoZXZ0KSA9PiB7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKFxuICAgICAgdGhpcy5wcm9wcy5tb2R1bGUubW9kdWxlTmFtZSAmJlxuICAgICAgd2luZG93LmltcG9ydE1hcE92ZXJyaWRlcy5pc0Rpc2FibGVkKHRoaXMucHJvcHMubW9kdWxlLm1vZHVsZU5hbWUpXG4gICAgKSB7XG4gICAgICB3aW5kb3cuaW1wb3J0TWFwT3ZlcnJpZGVzLmVuYWJsZU92ZXJyaWRlKHRoaXMucHJvcHMubW9kdWxlLm1vZHVsZU5hbWUpO1xuICAgIH1cbiAgICBpZiAodGhpcy5wcm9wcy5tb2R1bGUuaXNOZXcpIHtcbiAgICAgIHRoaXMucHJvcHMuYWRkTmV3TW9kdWxlKHRoaXMuc3RhdGUubW9kdWxlTmFtZSwgdGhpcy5zdGF0ZS5vdmVycmlkZVVybCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJvcHMudXBkYXRlTW9kdWxlVXJsKHRoaXMuc3RhdGUub3ZlcnJpZGVVcmwpO1xuICAgIH1cbiAgfTtcblxuICBnZXREZXJpdmVkVXJsID0gKCkgPT4ge1xuICAgIGNvbnN0IG1vZHVsZU5hbWUgPSB0aGlzLnByb3BzLm1vZHVsZS5pc05ld1xuICAgICAgPyB0aGlzLnN0YXRlLm1vZHVsZU5hbWVcbiAgICAgIDogdGhpcy5wcm9wcy5tb2R1bGUubW9kdWxlTmFtZTtcbiAgICByZXR1cm4gcG9ydFJlZ2V4LnRlc3QodGhpcy5zdGF0ZS5vdmVycmlkZVVybClcbiAgICAgID8gd2luZG93LmltcG9ydE1hcE92ZXJyaWRlcy5nZXRVcmxGcm9tUG9ydChcbiAgICAgICAgICBtb2R1bGVOYW1lLFxuICAgICAgICAgIHRoaXMuc3RhdGUub3ZlcnJpZGVVcmxcbiAgICAgICAgKVxuICAgICAgOiB0aGlzLnN0YXRlLm92ZXJyaWRlVXJsO1xuICB9O1xuXG4gIGtleURvd24gPSAoZXZ0KSA9PiB7XG4gICAgaWYgKGV2dC5rZXkgPT09IFwiRXNjYXBlXCIpIHtcbiAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHRoaXMucHJvcHMuY2FuY2VsKCk7XG4gICAgfVxuICB9O1xuXG4gIGZvY3VzRmlyc3RJbnB1dCA9ICgpID0+IHtcbiAgICBjb25zdCBmaXJzdElucHV0ID0gdGhpcy5tb2R1bGVOYW1lRWwgfHwgdGhpcy5pbnB1dEVsO1xuICAgIGZpcnN0SW5wdXQuc2VsZWN0KCk7XG4gIH07XG5cbiAgY2xlYXJNb2R1bGVOYW1lID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoeyBtb2R1bGVOYW1lOiBcIlwiIH0sICgpID0+IHtcbiAgICAgIHRoaXMuZm9jdXNGaXJzdElucHV0KCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY2xlYXJJbnB1dCA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHsgb3ZlcnJpZGVVcmw6IFwiXCIgfSwgKCkgPT4ge1xuICAgICAgdGhpcy5mb2N1c0ZpcnN0SW5wdXQoKTtcbiAgICB9KTtcbiAgfTtcbn1cblxuY29uc3QgcG9ydFJlZ2V4ID0gL15cXGQrJC87XG4iLCJpbXBvcnQgeyBoLCBDb21wb25lbnQgfSBmcm9tIFwicHJlYWN0XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV4dGVybmFsSW1wb3J0TWFwIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGUgPSB7XG4gICAgdXJsOiB0aGlzLnByb3BzLmRpYWxvZ0V4dGVybmFsTWFwLmlzTmV3XG4gICAgICA/IFwiXCJcbiAgICAgIDogdGhpcy5wcm9wcy5kaWFsb2dFeHRlcm5hbE1hcC51cmwsXG4gIH07XG4gIGlucHV0RWwgPSBudWxsO1xuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aGlzLmlucHV0RWwuZm9jdXMoKTtcbiAgICB0aGlzLmRpYWxvZ0VsLmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIHRoaXMua2V5RG93bik7XG4gIH1cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgdGhpcy5kaWFsb2dFbC5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCB0aGlzLmtleURvd24pO1xuICB9XG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbW8tbW9kYWwtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW1vLW1vZGFsXCIgLz5cbiAgICAgICAgPGRpYWxvZ1xuICAgICAgICAgIGNsYXNzTmFtZT1cImltby1tb2R1bGUtZGlhbG9nXCJcbiAgICAgICAgICBvcGVuXG4gICAgICAgICAgcmVmPXsoZWwpID0+ICh0aGlzLmRpYWxvZ0VsID0gZWwpfVxuICAgICAgICA+XG4gICAgICAgICAgPGZvcm0gbWV0aG9kPVwiZGlhbG9nXCIgb25TdWJtaXQ9e3RoaXMuaGFuZGxlU3VibWl0fT5cbiAgICAgICAgICAgIDxoMyBzdHlsZT17eyBtYXJnaW5Ub3A6IDAgfX0+XG4gICAgICAgICAgICAgIHt0aGlzLnByb3BzLmRpYWxvZ0V4dGVybmFsTWFwLmlzTmV3XG4gICAgICAgICAgICAgICAgPyBcIkFkZCBFeHRlcm5hbCBJbXBvcnQgTWFwXCJcbiAgICAgICAgICAgICAgICA6IFwiRWRpdCBFeHRlcm5hbCBJbXBvcnQgTWFwXCJ9XG4gICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBtYXJnaW5Cb3R0b206IFwiMjBweFwiIH19PlxuICAgICAgICAgICAgICA8bGFiZWwgaHRtbEZvcj1cImV4dGVybmFsLWltcG9ydG1hcC11cmxcIj5VUkwgdG8gaW1wb3J0IG1hcDo8L2xhYmVsPlxuICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiIH19PlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgaWQ9XCJleHRlcm5hbC1pbXBvcnRtYXAtdXJsXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLnVybH1cbiAgICAgICAgICAgICAgICAgIG9uSW5wdXQ9eyhldnQpID0+IHRoaXMuc2V0U3RhdGUoeyB1cmw6IGV2dC50YXJnZXQudmFsdWUgfSl9XG4gICAgICAgICAgICAgICAgICByZWY9eyhlbCkgPT4gKHRoaXMuaW5wdXRFbCA9IGVsKX1cbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPXt0aGlzLnByb3BzLmRpYWxvZ0V4dGVybmFsTWFwLmlzTmV3fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImltby1jbGVhci1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLnNldFN0YXRlKHsgdXJsOiBcIlwiIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXY+e1wiXFx1MjRFN1wifTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW1vLWRpYWxvZy1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLnByb3BzLmNhbmNlbH1cbiAgICAgICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5SaWdodDogXCIxNnB4XCIgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIENhbmNlbFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17dGhpcy5zdGF0ZS51cmwgPyBcImltby1vdmVycmlkZGVuXCIgOiBcImltby1kZWZhdWx0XCJ9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dGhpcy5zdGF0ZS51cmwgfHwgdGhpcy5wcm9wcy5kaWFsb2dFeHRlcm5hbE1hcC5pc05ld1xuICAgICAgICAgICAgICAgICAgPyBcIkFwcGx5IG92ZXJyaWRlXCJcbiAgICAgICAgICAgICAgICAgIDogXCJSZW1vdmUgb3ZlcnJpZGVcIn1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDwvZGlhbG9nPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuICBoYW5kbGVTdWJtaXQgPSAoZXZ0KSA9PiB7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBpZiAoIXRoaXMucHJvcHMuZGlhbG9nRXh0ZXJuYWxNYXAuaXNOZXcpIHtcbiAgICAgIHdpbmRvdy5pbXBvcnRNYXBPdmVycmlkZXMucmVtb3ZlRXh0ZXJuYWxPdmVycmlkZShcbiAgICAgICAgdGhpcy5wcm9wcy5kaWFsb2dFeHRlcm5hbE1hcC51cmxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RhdGUudXJsKSB7XG4gICAgICB3aW5kb3cuaW1wb3J0TWFwT3ZlcnJpZGVzLmFkZEV4dGVybmFsT3ZlcnJpZGUodGhpcy5zdGF0ZS51cmwpO1xuICAgIH1cblxuICAgIHRoaXMucHJvcHMuY2FuY2VsKCk7XG4gIH07XG4gIGtleURvd24gPSAoZXZ0KSA9PiB7XG4gICAgaWYgKGV2dC5rZXkgPT09IFwiRXNjYXBlXCIpIHtcbiAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHRoaXMucHJvcHMuY2FuY2VsKCk7XG4gICAgfVxuICB9O1xufVxuIiwiaW1wb3J0IHsgaCwgQ29tcG9uZW50IH0gZnJvbSBcInByZWFjdFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEZXZMaWJPdmVycmlkZXMgZXh0ZW5kcyBDb21wb25lbnQge1xuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB3aW5kb3cuaW1wb3J0TWFwT3ZlcnJpZGVzLmdldEN1cnJlbnRQYWdlTWFwKCkudGhlbihhZGREZXZMaWJPdmVycmlkZXMpO1xuICB9XG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5jb25zdCByZW1vdmVNaW4gPSAodXJsKSA9PiB1cmwucmVwbGFjZShcIi5taW4uanNcIiwgXCIuanNcIik7XG5cbmV4cG9ydCBjb25zdCBkZXZMaWJzID0ge1xuICByZWFjdDogKHVybCkgPT4gdXJsLnJlcGxhY2UoXCJwcm9kdWN0aW9uLm1pblwiLCBcImRldmVsb3BtZW50XCIpLFxuICBcInJlYWN0LWRvbVwiOiAodXJsKSA9PiB1cmwucmVwbGFjZShcInByb2R1Y3Rpb24ubWluXCIsIFwiZGV2ZWxvcG1lbnRcIiksXG4gIFwic2luZ2xlLXNwYVwiOiAodXJsKSA9PiB1cmwucmVwbGFjZShcInNpbmdsZS1zcGEubWluLmpzXCIsIFwic2luZ2xlLXNwYS5kZXYuanNcIiksXG4gIHZ1ZTogcmVtb3ZlTWluLFxuICBcInZ1ZS1yb3V0ZXJcIjogcmVtb3ZlTWluLFxuICBcIkBhbmd1bGFyL2NvcmVcIjogcmVtb3ZlTWluLFxuICBcIkBhbmd1bGFyL2NvbW1vblwiOiByZW1vdmVNaW4sXG4gIFwiQGFuZ3VsYXIvcm91dGVyXCI6IHJlbW92ZU1pbixcbiAgXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI6IHJlbW92ZU1pbixcbn07XG5cbmZ1bmN0aW9uIGFkZERldkxpYk92ZXJyaWRlcyhub3RPdmVycmlkZGVuTWFwKSB7XG4gIE9iamVjdC5rZXlzKG5vdE92ZXJyaWRkZW5NYXAuaW1wb3J0cylcbiAgICAuZmlsdGVyKChsaWJOYW1lKSA9PiBkZXZMaWJzW2xpYk5hbWVdKVxuICAgIC5mb3JFYWNoKChsaWJOYW1lKSA9PiB7XG4gICAgICB3aW5kb3cuaW1wb3J0TWFwT3ZlcnJpZGVzLmFkZE92ZXJyaWRlKFxuICAgICAgICBsaWJOYW1lLFxuICAgICAgICBkZXZMaWJzW2xpYk5hbWVdKG5vdE92ZXJyaWRkZW5NYXAuaW1wb3J0c1tsaWJOYW1lXSlcbiAgICAgICk7XG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvdmVycmlkZXNCZXNpZGVzRGV2TGlicygpIHtcbiAgcmV0dXJuIChcbiAgICBPYmplY3Qua2V5cyh3aW5kb3cuaW1wb3J0TWFwT3ZlcnJpZGVzLmdldE92ZXJyaWRlTWFwKCkuaW1wb3J0cykuZmlsdGVyKFxuICAgICAgKGspID0+ICFkZXZMaWJzW2tdXG4gICAgKS5sZW5ndGggPiAwXG4gICk7XG59XG4iLCJpbXBvcnQgeyBoLCBDb21wb25lbnQsIHJlbmRlciB9IGZyb20gXCJwcmVhY3RcIjtcbmltcG9ydCB7IGluY2x1ZGVzIH0gZnJvbSBcIi4uLy4uL3V0aWwvaW5jbHVkZXMuanNcIjtcbmltcG9ydCBNb2R1bGVEaWFsb2cgZnJvbSBcIi4vbW9kdWxlLWRpYWxvZy5jb21wb25lbnRcIjtcbmltcG9ydCBFeHRlcm5hbEltcG9ydE1hcCBmcm9tIFwiLi9leHRlcm5hbC1pbXBvcnRtYXAtZGlhbG9nLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgZGV2TGlicyB9IGZyb20gXCIuLi9kZXYtbGliLW92ZXJyaWRlcy5jb21wb25lbnRcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGlzdCBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRlID0ge1xuICAgIG5vdE92ZXJyaWRkZW5NYXA6IHsgaW1wb3J0czoge30gfSxcbiAgICBjdXJyZW50UGFnZU1hcDogeyBpbXBvcnRzOiB7fSB9LFxuICAgIG5leHRQYWdlTWFwOiB7IGltcG9ydHM6IHt9IH0sXG4gICAgZGlhbG9nTW9kdWxlOiBudWxsLFxuICAgIGRpYWxvZ0V4dGVybmFsTWFwOiBudWxsLFxuICAgIHNlYXJjaFZhbDogXCJcIixcbiAgfTtcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgd2luZG93LmltcG9ydE1hcE92ZXJyaWRlcy5nZXREZWZhdWx0TWFwKCkudGhlbigobm90T3ZlcnJpZGRlbk1hcCkgPT4ge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IG5vdE92ZXJyaWRkZW5NYXAgfSk7XG4gICAgfSk7XG4gICAgd2luZG93LmltcG9ydE1hcE92ZXJyaWRlcy5nZXRDdXJyZW50UGFnZU1hcCgpLnRoZW4oKGN1cnJlbnRQYWdlTWFwKSA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgY3VycmVudFBhZ2VNYXAgfSk7XG4gICAgfSk7XG4gICAgd2luZG93LmltcG9ydE1hcE92ZXJyaWRlcy5nZXROZXh0UGFnZU1hcCgpLnRoZW4oKG5leHRQYWdlTWFwKSA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgbmV4dFBhZ2VNYXAgfSk7XG4gICAgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJpbXBvcnQtbWFwLW92ZXJyaWRlczpjaGFuZ2VcIiwgdGhpcy5kb1VwZGF0ZSk7XG4gICAgdGhpcy5pbnB1dFJlZi5mb2N1cygpO1xuICB9XG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiaW1wb3J0LW1hcC1vdmVycmlkZXM6Y2hhbmdlXCIsIHRoaXMuZG9VcGRhdGUpO1xuICB9XG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZXZTdGF0ZSkge1xuICAgIGlmICghcHJldlN0YXRlLmRpYWxvZ01vZHVsZSAmJiB0aGlzLnN0YXRlLmRpYWxvZ01vZHVsZSkge1xuICAgICAgdGhpcy5kaWFsb2dDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLmRpYWxvZ0NvbnRhaW5lcik7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxNb2R1bGVEaWFsb2dcbiAgICAgICAgICBtb2R1bGU9e3RoaXMuc3RhdGUuZGlhbG9nTW9kdWxlfVxuICAgICAgICAgIGNhbmNlbD17dGhpcy5jYW5jZWx9XG4gICAgICAgICAgdXBkYXRlTW9kdWxlVXJsPXt0aGlzLnVwZGF0ZU1vZHVsZVVybH1cbiAgICAgICAgICBhZGROZXdNb2R1bGU9e3RoaXMuYWRkTmV3TW9kdWxlfVxuICAgICAgICAvPixcbiAgICAgICAgdGhpcy5kaWFsb2dDb250YWluZXJcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChwcmV2U3RhdGUuZGlhbG9nTW9kdWxlICYmICF0aGlzLnN0YXRlLmRpYWxvZ01vZHVsZSkge1xuICAgICAgcmVuZGVyKG51bGwsIHRoaXMuZGlhbG9nQ29udGFpbmVyKTtcbiAgICAgIHRoaXMuZGlhbG9nQ29udGFpbmVyLnJlbW92ZSgpO1xuICAgICAgZGVsZXRlIHRoaXMuZGlhbG9nQ29udGFpbmVyO1xuICAgIH1cblxuICAgIGlmICghcHJldlN0YXRlLmRpYWxvZ0V4dGVybmFsTWFwICYmIHRoaXMuc3RhdGUuZGlhbG9nRXh0ZXJuYWxNYXApIHtcbiAgICAgIHRoaXMuZGlhbG9nQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5kaWFsb2dDb250YWluZXIpO1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8RXh0ZXJuYWxJbXBvcnRNYXBcbiAgICAgICAgICBkaWFsb2dFeHRlcm5hbE1hcD17dGhpcy5zdGF0ZS5kaWFsb2dFeHRlcm5hbE1hcH1cbiAgICAgICAgICBjYW5jZWw9e3RoaXMuY2FuY2VsfVxuICAgICAgICAvPixcbiAgICAgICAgdGhpcy5kaWFsb2dDb250YWluZXJcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChwcmV2U3RhdGUuZGlhbG9nRXh0ZXJuYWxNYXAgJiYgIXRoaXMuc3RhdGUuZGlhbG9nRXh0ZXJuYWxNYXApIHtcbiAgICAgIHJlbmRlcihudWxsLCB0aGlzLmRpYWxvZ0NvbnRhaW5lcik7XG4gICAgICB0aGlzLmRpYWxvZ0NvbnRhaW5lci5yZW1vdmUoKTtcbiAgICAgIGRlbGV0ZSB0aGlzLmRpYWxvZ0NvbnRhaW5lcjtcbiAgICB9XG4gIH1cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IG92ZXJyaWRkZW5Nb2R1bGVzID0gW10sXG4gICAgICBuZXh0T3ZlcnJpZGRlbk1vZHVsZXMgPSBbXSxcbiAgICAgIGRpc2FibGVkT3ZlcnJpZGVzID0gW10sXG4gICAgICBkZWZhdWx0TW9kdWxlcyA9IFtdLFxuICAgICAgZXh0ZXJuYWxPdmVycmlkZU1vZHVsZXMgPSBbXSxcbiAgICAgIHBlbmRpbmdSZWZyZXNoRGVmYXVsdE1vZHVsZXMgPSBbXSxcbiAgICAgIGRldkxpYk1vZHVsZXMgPSBbXTtcblxuICAgIGNvbnN0IG92ZXJyaWRlTWFwID0gd2luZG93LmltcG9ydE1hcE92ZXJyaWRlcy5nZXRPdmVycmlkZU1hcCh0cnVlKS5pbXBvcnRzO1xuXG4gICAgY29uc3Qgbm90T3ZlcnJpZGRlbktleXMgPSBPYmplY3Qua2V5cyh0aGlzLnN0YXRlLm5vdE92ZXJyaWRkZW5NYXAuaW1wb3J0cyk7XG5cbiAgICBjb25zdCBkaXNhYmxlZE1vZHVsZXMgPSB3aW5kb3cuaW1wb3J0TWFwT3ZlcnJpZGVzLmdldERpc2FibGVkT3ZlcnJpZGVzKCk7XG5cbiAgICBub3RPdmVycmlkZGVuS2V5cy5maWx0ZXIodGhpcy5maWx0ZXJNb2R1bGVOYW1lcykuZm9yRWFjaCgobW9kdWxlTmFtZSkgPT4ge1xuICAgICAgY29uc3QgbW9kID0ge1xuICAgICAgICBtb2R1bGVOYW1lLFxuICAgICAgICBkZWZhdWx0VXJsOiB0aGlzLnN0YXRlLm5vdE92ZXJyaWRkZW5NYXAuaW1wb3J0c1ttb2R1bGVOYW1lXSxcbiAgICAgICAgb3ZlcnJpZGVVcmw6IG92ZXJyaWRlTWFwW21vZHVsZU5hbWVdLFxuICAgICAgICBkaXNhYmxlZDogaW5jbHVkZXMoZGlzYWJsZWRNb2R1bGVzLCBtb2R1bGVOYW1lKSxcbiAgICAgIH07XG4gICAgICBpZiAobW9kLmRpc2FibGVkKSB7XG4gICAgICAgIGRpc2FibGVkT3ZlcnJpZGVzLnB1c2gobW9kKTtcbiAgICAgIH0gZWxzZSBpZiAob3ZlcnJpZGVNYXBbbW9kdWxlTmFtZV0pIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuc3RhdGUuY3VycmVudFBhZ2VNYXAuaW1wb3J0c1ttb2R1bGVOYW1lXSA9PT1cbiAgICAgICAgICBvdmVycmlkZU1hcFttb2R1bGVOYW1lXVxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBkZXZMaWJzW21vZHVsZU5hbWVdICYmXG4gICAgICAgICAgICBkZXZMaWJzW21vZHVsZU5hbWVdKFxuICAgICAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRQYWdlTWFwLmltcG9ydHNbbW9kdWxlTmFtZV1cbiAgICAgICAgICAgICkgPT09IG92ZXJyaWRlTWFwW21vZHVsZU5hbWVdXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBkZXZMaWJNb2R1bGVzLnB1c2gobW9kKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3ZlcnJpZGRlbk1vZHVsZXMucHVzaChtb2QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXh0T3ZlcnJpZGRlbk1vZHVsZXMucHVzaChtb2QpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0aGlzLnN0YXRlLm5vdE92ZXJyaWRkZW5NYXAuaW1wb3J0c1ttb2R1bGVOYW1lXSA9PT1cbiAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50UGFnZU1hcC5pbXBvcnRzW21vZHVsZU5hbWVdXG4gICAgICApIHtcbiAgICAgICAgZGVmYXVsdE1vZHVsZXMucHVzaChtb2QpO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgdGhpcy5zdGF0ZS5ub3RPdmVycmlkZGVuTWFwLmltcG9ydHNbbW9kdWxlTmFtZV0gPT09XG4gICAgICAgIHRoaXMuc3RhdGUubmV4dFBhZ2VNYXAuaW1wb3J0c1ttb2R1bGVOYW1lXVxuICAgICAgKSB7XG4gICAgICAgIHBlbmRpbmdSZWZyZXNoRGVmYXVsdE1vZHVsZXMucHVzaChtb2QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXh0ZXJuYWxPdmVycmlkZU1vZHVsZXMucHVzaChtb2QpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgT2JqZWN0LmtleXMob3ZlcnJpZGVNYXApXG4gICAgICAuZmlsdGVyKHRoaXMuZmlsdGVyTW9kdWxlTmFtZXMpXG4gICAgICAuZm9yRWFjaCgobW9kdWxlTmFtZSkgPT4ge1xuICAgICAgICBpZiAoIWluY2x1ZGVzKG5vdE92ZXJyaWRkZW5LZXlzLCBtb2R1bGVOYW1lKSkge1xuICAgICAgICAgIGNvbnN0IG1vZCA9IHtcbiAgICAgICAgICAgIG1vZHVsZU5hbWUsXG4gICAgICAgICAgICBkZWZhdWx0VXJsOiBudWxsLFxuICAgICAgICAgICAgb3ZlcnJpZGVVcmw6IG92ZXJyaWRlTWFwW21vZHVsZU5hbWVdLFxuICAgICAgICAgICAgZGlzYWJsZWQ6IGluY2x1ZGVzKGRpc2FibGVkTW9kdWxlcywgbW9kdWxlTmFtZSksXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGlmIChtb2QuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGRpc2FibGVkT3ZlcnJpZGVzLnB1c2gobW9kKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50UGFnZU1hcC5pbXBvcnRzW21vZHVsZU5hbWVdID09PVxuICAgICAgICAgICAgb3ZlcnJpZGVNYXBbbW9kdWxlTmFtZV1cbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIG92ZXJyaWRkZW5Nb2R1bGVzLnB1c2gobW9kKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV4dE92ZXJyaWRkZW5Nb2R1bGVzLnB1c2gobW9kKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgb3ZlcnJpZGRlbk1vZHVsZXMuc29ydChzb3J0ZXIpO1xuICAgIGRlZmF1bHRNb2R1bGVzLnNvcnQoc29ydGVyKTtcbiAgICBuZXh0T3ZlcnJpZGRlbk1vZHVsZXMuc29ydChzb3J0ZXIpO1xuXG4gICAgY29uc3Qge1xuICAgICAgYnJva2VuTWFwcyxcbiAgICAgIHdvcmtpbmdDdXJyZW50UGFnZU1hcHMsXG4gICAgICB3b3JraW5nTmV4dFBhZ2VNYXBzLFxuICAgIH0gPSBnZXRFeHRlcm5hbE1hcHMoKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImltby1saXN0LWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImltby10YWJsZS1oZWFkZXItYWN0aW9uc1wiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW1vLWxpc3Qtc2VhcmNoXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJTZWFyY2ggbW9kdWxlc1wiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBtb2R1bGVzXCJcbiAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLnNlYXJjaFZhbH1cbiAgICAgICAgICAgIG9uSW5wdXQ9eyhldnQpID0+IHRoaXMuc2V0U3RhdGUoeyBzZWFyY2hWYWw6IGV2dC50YXJnZXQudmFsdWUgfSl9XG4gICAgICAgICAgICByZWY9eyhyZWYpID0+ICh0aGlzLmlucHV0UmVmID0gcmVmKX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW1vLWFkZC1uZXdcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgIGRpYWxvZ01vZHVsZTogeyBtb2R1bGVOYW1lOiBcIk5ldyBtb2R1bGVcIiwgaXNOZXc6IHRydWUgfSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEFkZCBuZXcgbW9kdWxlXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImltby1hZGQtbmV3XCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgIGRpYWxvZ0V4dGVybmFsTWFwOiB7IHVybDogXCJcIiwgaXNOZXc6IHRydWUgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQWRkIGltcG9ydCBtYXBcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW1vLWFkZC1uZXdcIj5cbiAgICAgICAgICAgIDxidXR0b24gb25DbGljaz17KCkgPT4gd2luZG93LmltcG9ydE1hcE92ZXJyaWRlcy5yZXNldE92ZXJyaWRlcygpfT5cbiAgICAgICAgICAgICAgUmVzZXQgYWxsIG92ZXJyaWRlc1xuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8dGFibGUgY2xhc3NOYW1lPVwiaW1vLW92ZXJyaWRlcy10YWJsZVwiPlxuICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgPHRoPk1vZHVsZSBTdGF0dXM8L3RoPlxuICAgICAgICAgICAgICA8dGg+TW9kdWxlIE5hbWU8L3RoPlxuICAgICAgICAgICAgICA8dGg+RG9tYWluPC90aD5cbiAgICAgICAgICAgICAgPHRoPkZpbGVuYW1lPC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICB7bmV4dE92ZXJyaWRkZW5Nb2R1bGVzLm1hcCgobW9kKSA9PiAoXG4gICAgICAgICAgICAgIDx0clxuICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRoaXMuc2V0U3RhdGUoeyBkaWFsb2dNb2R1bGU6IG1vZCB9KX1cbiAgICAgICAgICAgICAgICBrZXk9e21vZC5tb2R1bGVOYW1lfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHRkIG9uQ2xpY2s9e3RoaXMucmVsb2FkfSByb2xlPVwiYnV0dG9uXCIgdGFiSW5kZXg9ezB9PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbW8tc3RhdHVzIGltby1uZXh0LW92ZXJyaWRlXCIgLz5cbiAgICAgICAgICAgICAgICAgIDxkaXY+SW5saW5lIE92ZXJyaWRlPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImltby1uZWVkcy1yZWZyZXNoXCIgLz5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD57bW9kLm1vZHVsZU5hbWV9PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+e3RvRG9tYWluKG1vZCl9PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+e3RvRmlsZU5hbWUobW9kKX08L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICB7cGVuZGluZ1JlZnJlc2hEZWZhdWx0TW9kdWxlcy5tYXAoKG1vZCkgPT4gKFxuICAgICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLnNldFN0YXRlKHsgZGlhbG9nTW9kdWxlOiBtb2QgfSl9XG4gICAgICAgICAgICAgICAga2V5PXttb2QubW9kdWxlTmFtZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT17eyBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiIH19PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbW8tc3RhdHVzIGltby1uZXh0LWRlZmF1bHRcIiAvPlxuICAgICAgICAgICAgICAgICAgPGRpdj5EZWZhdWx0PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImltby1uZWVkcy1yZWZyZXNoXCIgLz5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD57bW9kLm1vZHVsZU5hbWV9PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+e3RvRG9tYWluKG1vZCl9PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+e3RvRmlsZU5hbWUobW9kKX08L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICB7ZGlzYWJsZWRPdmVycmlkZXMubWFwKChtb2QpID0+IChcbiAgICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGhpcy5zZXRTdGF0ZSh7IGRpYWxvZ01vZHVsZTogbW9kIH0pfVxuICAgICAgICAgICAgICAgIGtleT17bW9kLm1vZHVsZU5hbWV9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImltby1zdGF0dXMgaW1vLWRpc2FibGVkLW92ZXJyaWRlXCIgLz5cbiAgICAgICAgICAgICAgICAgIDxkaXY+T3ZlcnJpZGUgZGlzYWJsZWQ8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD57bW9kLm1vZHVsZU5hbWV9PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+e3RvRG9tYWluKG1vZCl9PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+e3RvRmlsZU5hbWUobW9kKX08L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICB7b3ZlcnJpZGRlbk1vZHVsZXMubWFwKChtb2QpID0+IChcbiAgICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGhpcy5zZXRTdGF0ZSh7IGRpYWxvZ01vZHVsZTogbW9kIH0pfVxuICAgICAgICAgICAgICAgIGtleT17bW9kLm1vZHVsZU5hbWV9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImltby1zdGF0dXMgaW1vLWN1cnJlbnQtb3ZlcnJpZGVcIiAvPlxuICAgICAgICAgICAgICAgICAgPGRpdj5JbmxpbmUgT3ZlcnJpZGU8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD57bW9kLm1vZHVsZU5hbWV9PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+e3RvRG9tYWluKG1vZCl9PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+e3RvRmlsZU5hbWUobW9kKX08L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICB7ZXh0ZXJuYWxPdmVycmlkZU1vZHVsZXMubWFwKChtb2QpID0+IChcbiAgICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGhpcy5zZXRTdGF0ZSh7IGRpYWxvZ01vZHVsZTogbW9kIH0pfVxuICAgICAgICAgICAgICAgIGtleT17bW9kLm1vZHVsZU5hbWV9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImltby1zdGF0dXMgaW1vLWV4dGVybmFsLW92ZXJyaWRlXCIgLz5cbiAgICAgICAgICAgICAgICAgIDxkaXY+RXh0ZXJuYWwgT3ZlcnJpZGU8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD57bW9kLm1vZHVsZU5hbWV9PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+e3RvRG9tYWluKG1vZCl9PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+e3RvRmlsZU5hbWUobW9kKX08L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICB7ZGV2TGliTW9kdWxlcy5tYXAoKG1vZCkgPT4gKFxuICAgICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLnNldFN0YXRlKHsgZGlhbG9nTW9kdWxlOiBtb2QgfSl9XG4gICAgICAgICAgICAgICAga2V5PXttb2QubW9kdWxlTmFtZX1cbiAgICAgICAgICAgICAgICB0aXRsZT1cIkF1dG9tYXRpY2FsbHkgdXNlIGRldiB2ZXJzaW9uIG9mIGNlcnRhaW4gbnBtIGxpYnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbW8tc3RhdHVzIGltby1kZXYtbGliLW92ZXJyaWRlXCIgLz5cbiAgICAgICAgICAgICAgICAgIDxkaXY+RGV2IExpYiBPdmVycmlkZTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkPnttb2QubW9kdWxlTmFtZX08L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD57dG9Eb21haW4obW9kKX08L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD57dG9GaWxlTmFtZShtb2QpfTwvdGQ+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICAgIHtkZWZhdWx0TW9kdWxlcy5tYXAoKG1vZCkgPT4gKFxuICAgICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLnNldFN0YXRlKHsgZGlhbG9nTW9kdWxlOiBtb2QgfSl9XG4gICAgICAgICAgICAgICAga2V5PXttb2QubW9kdWxlTmFtZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW1vLXN0YXR1cyBpbW8tZGVmYXVsdC1tb2R1bGVcIiAvPlxuICAgICAgICAgICAgICAgICAgPGRpdj5EZWZhdWx0PC9kaXY+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+e21vZC5tb2R1bGVOYW1lfTwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkPnt0b0RvbWFpbihtb2QpfTwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkPnt0b0ZpbGVOYW1lKG1vZCl9PC90ZD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICAgIHsoYnJva2VuTWFwcy5sZW5ndGggPiAwIHx8XG4gICAgICAgICAgd29ya2luZ0N1cnJlbnRQYWdlTWFwcy5sZW5ndGggPiAwIHx8XG4gICAgICAgICAgd29ya2luZ05leHRQYWdlTWFwcy5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgPHRhYmxlIGNsYXNzTmFtZT1cImltby1vdmVycmlkZXMtdGFibGVcIj5cbiAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgPHRoPkltcG9ydCBNYXAgU3RhdHVzPC90aD5cbiAgICAgICAgICAgICAgPHRoPlVSTDwvdGg+XG4gICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICB7YnJva2VuTWFwcy5tYXAoKHVybCkgPT4gKFxuICAgICAgICAgICAgICAgIDx0clxuICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBkaWFsb2dFeHRlcm5hbE1hcDogeyBpc05ldzogZmFsc2UsIHVybCB9IH0pXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBrZXk9e3VybH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW1vLXN0YXR1cyBpbW8tZGlzYWJsZWQtb3ZlcnJpZGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PkludmFsaWQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICA8dGQ+e3VybH08L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICB7d29ya2luZ05leHRQYWdlTWFwcy5tYXAoKHVybCkgPT4gKFxuICAgICAgICAgICAgICAgIDx0clxuICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBkaWFsb2dFeHRlcm5hbE1hcDogeyBpc05ldzogZmFsc2UsIHVybCB9IH0pXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBrZXk9e3VybH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW1vLXN0YXR1cyBpbW8tbmV4dC1vdmVycmlkZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+UGVuZGluZyByZWZyZXNoPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgPHRkPnt1cmx9PC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAge3dvcmtpbmdDdXJyZW50UGFnZU1hcHMubWFwKCh1cmwpID0+IChcbiAgICAgICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZGlhbG9nRXh0ZXJuYWxNYXA6IHsgaXNOZXc6IGZhbHNlLCB1cmwgfSB9KVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAga2V5PXt1cmx9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImltby1zdGF0dXMgaW1vLWN1cnJlbnQtb3ZlcnJpZGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2Pk92ZXJyaWRlPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgPHRkPnt1cmx9PC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICByZWxvYWQgPSAoZXZ0KSA9PiB7XG4gICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgfTtcblxuICBjYW5jZWwgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IGRpYWxvZ01vZHVsZTogbnVsbCwgZGlhbG9nRXh0ZXJuYWxNYXA6IG51bGwgfSk7XG4gIH07XG5cbiAgdXBkYXRlTW9kdWxlVXJsID0gKG5ld1VybCkgPT4ge1xuICAgIG5ld1VybCA9IG5ld1VybCB8fCBudWxsO1xuXG4gICAgaWYgKG5ld1VybCA9PT0gbnVsbCkge1xuICAgICAgd2luZG93LmltcG9ydE1hcE92ZXJyaWRlcy5yZW1vdmVPdmVycmlkZShcbiAgICAgICAgdGhpcy5zdGF0ZS5kaWFsb2dNb2R1bGUubW9kdWxlTmFtZVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93LmltcG9ydE1hcE92ZXJyaWRlcy5hZGRPdmVycmlkZShcbiAgICAgICAgdGhpcy5zdGF0ZS5kaWFsb2dNb2R1bGUubW9kdWxlTmFtZSxcbiAgICAgICAgbmV3VXJsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUoeyBkaWFsb2dNb2R1bGU6IG51bGwgfSk7XG4gIH07XG5cbiAgZG9VcGRhdGUgPSAoKSA9PiB7XG4gICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICAgIHdpbmRvdy5pbXBvcnRNYXBPdmVycmlkZXMuZ2V0TmV4dFBhZ2VNYXAoKS50aGVuKChuZXh0UGFnZU1hcCkgPT4ge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IG5leHRQYWdlTWFwIH0pO1xuICAgIH0pO1xuICB9O1xuXG4gIGFkZE5ld01vZHVsZSA9IChuYW1lLCB1cmwpID0+IHtcbiAgICBpZiAobmFtZSAmJiB1cmwpIHtcbiAgICAgIHdpbmRvdy5pbXBvcnRNYXBPdmVycmlkZXMuYWRkT3ZlcnJpZGUobmFtZSwgdXJsKTtcbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0ZSh7IGRpYWxvZ01vZHVsZTogbnVsbCB9KTtcbiAgfTtcblxuICBmaWx0ZXJNb2R1bGVOYW1lcyA9IChtb2R1bGVOYW1lKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VhcmNoVmFsLnRyaW0oKS5sZW5ndGggPiAwXG4gICAgICA/IGluY2x1ZGVzKG1vZHVsZU5hbWUsIHRoaXMuc3RhdGUuc2VhcmNoVmFsKVxuICAgICAgOiB0cnVlO1xuICB9O1xufVxuXG5mdW5jdGlvbiBzb3J0ZXIoZmlyc3QsIHNlY29uZCkge1xuICByZXR1cm4gZmlyc3QubW9kdWxlTmFtZSA+IHNlY29uZC5tb2R1bGVOYW1lO1xufVxuXG5jb25zdCBjdXJyZW50QmFzZSA9XG4gIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiYmFzZVwiKSAmJiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiYmFzZVwiKS5ocmVmKSB8fFxuICBsb2NhdGlvbi5vcmlnaW4gKyBcIi9cIjtcblxuZnVuY3Rpb24gdG9Eb21haW4obW9kKSB7XG4gIGNvbnN0IHVybFN0ciA9IHRvVXJsU3RyKG1vZCk7XG4gIGNvbnN0IHVybCA9IHRvVVJMKHVybFN0cik7XG4gIHJldHVybiB1cmwgPyB1cmwuaG9zdCA6IHVybFN0cjtcbn1cblxuZnVuY3Rpb24gdG9GaWxlTmFtZShtb2QpIHtcbiAgY29uc3QgdXJsU3RyID0gdG9VcmxTdHIobW9kKTtcbiAgY29uc3QgdXJsID0gdG9VUkwodXJsU3RyKTtcbiAgcmV0dXJuIHVybCA/IHVybC5wYXRobmFtZS5zbGljZSh1cmwucGF0aG5hbWUubGFzdEluZGV4T2YoXCIvXCIpICsgMSkgOiB1cmxTdHI7XG59XG5cbmZ1bmN0aW9uIHRvVXJsU3RyKG1vZCkge1xuICByZXR1cm4gbW9kLm92ZXJyaWRlVXJsIHx8IG1vZC5kZWZhdWx0VXJsO1xufVxuXG5mdW5jdGlvbiB0b1VSTCh1cmxTdHIpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IFVSTCh1cmxTdHIsIGN1cnJlbnRCYXNlKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RXh0ZXJuYWxNYXBzKCkge1xuICBjb25zdCBhbGxFeHRlcm5hbE1hcHMgPSB3aW5kb3cuaW1wb3J0TWFwT3ZlcnJpZGVzLmdldEV4dGVybmFsT3ZlcnJpZGVzKCk7XG4gIGNvbnN0IGFsbEN1cnJlbnRQYWdlTWFwcyA9IHdpbmRvdy5pbXBvcnRNYXBPdmVycmlkZXMuZ2V0Q3VycmVudFBhZ2VFeHRlcm5hbE92ZXJyaWRlcygpO1xuICBjb25zdCBicm9rZW5NYXBzID0gW10sXG4gICAgd29ya2luZ0N1cnJlbnRQYWdlTWFwcyA9IFtdLFxuICAgIHdvcmtpbmdOZXh0UGFnZU1hcHMgPSBbXTtcblxuICBmb3IgKGxldCBleHRlcm5hbE1hcCBvZiBhbGxFeHRlcm5hbE1hcHMpIHtcbiAgICBpZiAoaW5jbHVkZXMod2luZG93LmltcG9ydE1hcE92ZXJyaWRlcy5pbnZhbGlkRXh0ZXJuYWxNYXBzLCBleHRlcm5hbE1hcCkpIHtcbiAgICAgIGJyb2tlbk1hcHMucHVzaChleHRlcm5hbE1hcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpbmNsdWRlcyhhbGxDdXJyZW50UGFnZU1hcHMsIGV4dGVybmFsTWFwKSkge1xuICAgICAgICB3b3JraW5nQ3VycmVudFBhZ2VNYXBzLnB1c2goZXh0ZXJuYWxNYXApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd29ya2luZ05leHRQYWdlTWFwcy5wdXNoKGV4dGVybmFsTWFwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJyb2tlbk1hcHMsXG4gICAgd29ya2luZ0N1cnJlbnRQYWdlTWFwcyxcbiAgICB3b3JraW5nTmV4dFBhZ2VNYXBzLFxuICB9O1xufVxuIiwiaW1wb3J0IHsgaCwgQ29tcG9uZW50IH0gZnJvbSBcInByZWFjdFwiO1xuaW1wb3J0IExpc3QgZnJvbSBcIi4vbGlzdC9saXN0LmNvbXBvbmVudFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQb3B1cCBleHRlbmRzIENvbXBvbmVudCB7XG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCB0aGlzLmtleWRvd25MaXN0ZW5lcik7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJpbXBvcnQtbWFwLW92ZXJyaWRlczpjaGFuZ2VcIiwgdGhpcy5kb1VwZGF0ZSk7XG4gIH1cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIHRoaXMua2V5ZG93bkxpc3RlbmVyKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImltcG9ydC1tYXAtb3ZlcnJpZGVzOmNoYW5nZVwiLCB0aGlzLmRvVXBkYXRlKTtcbiAgfVxuICBkb1VwZGF0ZSA9ICgpID0+IHRoaXMuZm9yY2VVcGRhdGUoKTtcbiAgcmVuZGVyKHByb3BzKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW1vLXBvcHVwXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW1vLWhlYWRlclwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8aDE+SW1wb3J0IE1hcCBPdmVycmlkZXM8L2gxPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIFRoaXMgZGV2ZWxvcGVyIHRvb2wgYWxsb3dzIHlvdSB0byB2aWV3IGFuZCBvdmVycmlkZSB5b3VyIGltcG9ydFxuICAgICAgICAgICAgICBtYXBzLiBTdGFydCBieSBjbGlja2luZyBvbiBhIG1vZHVsZSB0aGF0IHlvdSdkIGxpa2UgdG8gb3ZlcnJpZGUue1wiIFwifVxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgaHJlZj1cImh0dHBzOi8vZ2l0aHViLmNvbS9qb2VsZGVubmluZy9pbXBvcnQtbWFwLW92ZXJyaWRlc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBTZWUgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvXG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwiaW1vLXVuc3R5bGVkXCIgb25DbGljaz17cHJvcHMuY2xvc2V9PlxuICAgICAgICAgICAge1wiXFx1MjRFN1wifVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPExpc3QgaW1wb3J0TWFwQ2hhbmdlZD17dGhpcy5wcm9wcy5pbXBvcnRNYXBDaGFuZ2VkfSAvPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuICBrZXlkb3duTGlzdGVuZXIgPSAoZXZ0KSA9PiB7XG4gICAgaWYgKGV2dC5rZXkgPT09IFwiRXNjYXBlXCIgJiYgdGhpcy5wcm9wcy5jbG9zZSkge1xuICAgICAgdGhpcy5wcm9wcy5jbG9zZSgpO1xuICAgIH1cbiAgfTtcbn1cbiIsImltcG9ydCB7IGgsIENvbXBvbmVudCB9IGZyb20gXCJwcmVhY3RcIjtcbmltcG9ydCBQb3B1cCBmcm9tIFwiLi9wb3B1cC5jb21wb25lbnRcIjtcbmltcG9ydCBEZXZMaWJPdmVycmlkZXMsIHtcbiAgb3ZlcnJpZGVzQmVzaWRlc0RldkxpYnMsXG59IGZyb20gXCIuL2Rldi1saWItb3ZlcnJpZGVzLmNvbXBvbmVudFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGdWxsVUkgZXh0ZW5kcyBDb21wb25lbnQge1xuICBzdGF0ZSA9IHtcbiAgICBzaG93aW5nUG9wdXA6IGZhbHNlLFxuICB9O1xuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImltcG9ydC1tYXAtb3ZlcnJpZGVzOmNoYW5nZVwiLCB0aGlzLmRvVXBkYXRlKTtcbiAgfVxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImltcG9ydC1tYXAtb3ZlcnJpZGVzOmNoYW5nZVwiLCB0aGlzLmRvVXBkYXRlKTtcbiAgfVxuICBkb1VwZGF0ZSA9ICgpID0+IHRoaXMuZm9yY2VVcGRhdGUoKTtcbiAgcmVuZGVyKHByb3BzLCBzdGF0ZSkge1xuICAgIGNvbnN0IHNob3VsZFNob3cgPVxuICAgICAgIXByb3BzLmN1c3RvbUVsZW1lbnQuaGFzQXR0cmlidXRlKFwic2hvdy13aGVuLWxvY2FsLXN0b3JhZ2VcIikgfHxcbiAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFxuICAgICAgICBwcm9wcy5jdXN0b21FbGVtZW50LmdldEF0dHJpYnV0ZShcInNob3ctd2hlbi1sb2NhbC1zdG9yYWdlXCIpXG4gICAgICApID09PSBcInRydWVcIjtcblxuICAgIGlmICghc2hvdWxkU2hvdykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXY+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBvbkNsaWNrPXt0aGlzLnRvZ2dsZVRyaWdnZXJ9XG4gICAgICAgICAgY2xhc3NOYW1lPXtgaW1vLXVuc3R5bGVkIGltby10cmlnZ2VyICR7XG4gICAgICAgICAgICB0aGlzLmF0TGVhc3RPbmVPdmVycmlkZSgpID8gXCJpbW8tY3VycmVudC1vdmVycmlkZVwiIDogXCJcIlxuICAgICAgICAgIH1gfVxuICAgICAgICA+XG4gICAgICAgICAge1wie1xcdTAwQjdcXHUwMEI3XFx1MDBCN31cIn1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIHt0aGlzLnVzZURldkxpYnMoKSAmJiA8RGV2TGliT3ZlcnJpZGVzIC8+fVxuICAgICAgICB7c3RhdGUuc2hvd2luZ1BvcHVwICYmIChcbiAgICAgICAgICA8UG9wdXBcbiAgICAgICAgICAgIGNsb3NlPXt0aGlzLnRvZ2dsZVRyaWdnZXJ9XG4gICAgICAgICAgICBpbXBvcnRNYXBDaGFuZ2VkPXt0aGlzLmltcG9ydE1hcENoYW5nZWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbiAgdG9nZ2xlVHJpZ2dlciA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKChwcmV2U3RhdGUpID0+ICh7XG4gICAgICBzaG93aW5nUG9wdXA6ICFwcmV2U3RhdGUuc2hvd2luZ1BvcHVwLFxuICAgIH0pKTtcbiAgfTtcbiAgaW1wb3J0TWFwQ2hhbmdlZCA9ICgpID0+IHtcbiAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XG4gIH07XG4gIHVzZURldkxpYnMgPSAoKSA9PiB7XG4gICAgY29uc3QgbG9jYWxTdG9yYWdlVmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcbiAgICAgIFwiaW1wb3J0LW1hcC1vdmVycmlkZXMtZGV2LWxpYnNcIlxuICAgICk7XG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZVZhbHVlXG4gICAgICA/IGxvY2FsU3RvcmFnZVZhbHVlID09PSBcInRydWVcIlxuICAgICAgOiB0aGlzLnByb3BzLmN1c3RvbUVsZW1lbnQuaGFzQXR0cmlidXRlKFwiZGV2LWxpYnNcIik7XG4gIH07XG4gIGF0TGVhc3RPbmVPdmVycmlkZSA9ICgpID0+IHtcbiAgICBpZiAodGhpcy51c2VEZXZMaWJzKCkpIHtcbiAgICAgIHJldHVybiBvdmVycmlkZXNCZXNpZGVzRGV2TGlicygpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBPYmplY3Qua2V5cyh3aW5kb3cuaW1wb3J0TWFwT3ZlcnJpZGVzLmdldE92ZXJyaWRlTWFwKCkuaW1wb3J0cykubGVuZ3RoID5cbiAgICAgICAgMFxuICAgICAgKTtcbiAgICB9XG4gIH07XG59XG4iLCJpbXBvcnQgc3R5bGVzIGZyb20gXCIuL2ltcG9ydC1tYXAtb3ZlcnJpZGVzLmNzc1wiO1xuaW1wb3J0IHsgcmVuZGVyLCBoIH0gZnJvbSBcInByZWFjdFwiO1xuaW1wb3J0IEZ1bGxVSSBmcm9tIFwiLi9mdWxsLXVpLmNvbXBvbmVudFwiO1xuaW1wb3J0IFBvcHVwIGZyb20gXCIuL3BvcHVwLmNvbXBvbmVudFwiO1xuaW1wb3J0IExpc3QgZnJvbSBcIi4vbGlzdC9saXN0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgaXNEaXNhYmxlZCB9IGZyb20gXCIuLi9hcGkvanMtYXBpXCI7XG5cbmlmICh3aW5kb3cuY3VzdG9tRWxlbWVudHMgJiYgIWlzRGlzYWJsZWQpIHtcbiAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZShcbiAgICBcImltcG9ydC1tYXAtb3ZlcnJpZGVzLWZ1bGxcIixcbiAgICBwcmVhY3RDdXN0b21FbGVtZW50KEZ1bGxVSSwgW1wic2hvdy13aGVuLWxvY2FsLXN0b3JhZ2VcIl0pXG4gICk7XG4gIHdpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoXG4gICAgXCJpbXBvcnQtbWFwLW92ZXJyaWRlcy1wb3B1cFwiLFxuICAgIHByZWFjdEN1c3RvbUVsZW1lbnQoUG9wdXApXG4gICk7XG4gIHdpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoXG4gICAgXCJpbXBvcnQtbWFwLW92ZXJyaWRlcy1saXN0XCIsXG4gICAgcHJlYWN0Q3VzdG9tRWxlbWVudChMaXN0KVxuICApO1xufVxuXG5mdW5jdGlvbiBwcmVhY3RDdXN0b21FbGVtZW50KENvbXAsIG9ic2VydmVkQXR0cmlidXRlcyA9IFtdKSB7XG4gIHJldHVybiBjbGFzcyBQcmVhY3RDdXN0b21FbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIGNvbm5lY3RlZENhbGxiYWNrKCkge1xuICAgICAgdGhpcy5yZW5kZXJXaXRoUHJlYWN0KCk7XG4gICAgfVxuICAgIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCkge1xuICAgICAgcmVuZGVyKG51bGwsIHRoaXMpO1xuICAgICAgdGhpcy5yZW5kZXJlZEVsID0gbnVsbDtcbiAgICB9XG4gICAgc3RhdGljIGdldCBvYnNlcnZlZEF0dHJpYnV0ZXMoKSB7XG4gICAgICByZXR1cm4gb2JzZXJ2ZWRBdHRyaWJ1dGVzO1xuICAgIH1cbiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soKSB7XG4gICAgICB0aGlzLnJlbmRlcldpdGhQcmVhY3QoKTtcbiAgICB9XG4gICAgcmVuZGVyV2l0aFByZWFjdCgpIHtcbiAgICAgIHRoaXMuc2hhZG93ID0gdGhpcy5hdHRhY2hTaGFkb3coeyBtb2RlOiBcIm9wZW5cIiB9KTtcbiAgICAgIHRoaXMucmVuZGVyZWRFbCA9IHJlbmRlcihcbiAgICAgICAgaChDb21wLCB7IGN1c3RvbUVsZW1lbnQ6IHRoaXMgfSksXG4gICAgICAgIHRoaXMuc2hhZG93LFxuICAgICAgICB0aGlzLnJlbmRlcmVkRWxcbiAgICAgICk7XG4gICAgICBjb25zdCBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICAgIHN0eWxlLnRleHRDb250ZW50ID0gc3R5bGVzLnRvU3RyaW5nKCk7XG4gICAgICB0aGlzLnNoYWRvdy5hcHBlbmRDaGlsZChzdHlsZSk7XG4gICAgfVxuICB9O1xufVxuIl0sIm5hbWVzIjpbImluY2x1ZGVzIiwib2JqIiwiaXRlbSIsIkFycmF5IiwiaXNBcnJheSIsImkiLCJsZW5ndGgiLCJpbmRleE9mIiwiRXJyb3IiLCJnZXRQYXJhbWV0ZXJCeU5hbWUiLCJuYW1lIiwidXJsIiwid2luZG93IiwibG9jYXRpb24iLCJocmVmIiwicmVwbGFjZSIsInJlZ2V4IiwiUmVnRXhwIiwicmVzdWx0cyIsImV4ZWMiLCJkZWNvZGVVUklDb21wb25lbnQiLCJpc0Rpc2FibGVkIiwibG9jYWxTdG9yYWdlUHJlZml4IiwiZGlzYWJsZWRPdmVycmlkZXNMb2NhbFN0b3JhZ2VLZXkiLCJleHRlcm5hbE92ZXJyaWRlc0xvY2FsU3RvcmFnZUtleSIsIm92ZXJyaWRlQXR0cmlidXRlIiwiZG9tYWluc01ldGEiLCJhbGxvd0xpc3RQcmVmaXgiLCJkZW55TGlzdFByZWZpeCIsImltcG9ydE1hcE1ldGFFbGVtZW50IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZG9tYWluc0VsZW1lbnQiLCJleHRlcm5hbE92ZXJyaWRlTWFwUHJvbWlzZXMiLCJpbXBvcnRNYXBUeXBlIiwiZ2V0QXR0cmlidXRlIiwiY29udGVudCIsImNvbnNvbGUiLCJ3YXJuIiwibWF0Y2hIb3N0bmFtZSIsImRvbWFpbiIsInN0cmluZyIsIlR5cGVFcnJvciIsImVzY2FwZVN0cmluZ1JlZ2V4cCIsInRlc3QiLCJob3N0bmFtZSIsInNsaWNlIiwic3BsaXQiLCJzb21lIiwibG9nIiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsImNhbkFjY2Vzc0xvY2FsU3RvcmFnZSIsImRlZmF1bHRNYXBQcm9taXNlIiwic2VydmVyT3ZlcnJpZGVzIiwiaGFzQXR0cmlidXRlIiwic2VydmVyT25seSIsImltcG9ydE1hcE92ZXJyaWRlcyIsImFkZE92ZXJyaWRlIiwibW9kdWxlTmFtZSIsImltbyIsImdldFVybEZyb21Qb3J0Iiwia2V5Iiwic2V0SXRlbSIsImNvb2tpZSIsImZpcmVDaGFuZ2VkRXZlbnQiLCJnZXRPdmVycmlkZU1hcCIsImluY2x1ZGVEaXNhYmxlZCIsIm92ZXJyaWRlcyIsImltcG9ydHMiLCJzY29wZXMiLCJkaXNhYmxlZE92ZXJyaWRlcyIsImdldERpc2FibGVkT3ZlcnJpZGVzIiwic2V0T3ZlcnJpZGUiLCJwYXRoIiwicXVlcnlQYXJhbSIsInBhcmVudCIsInJlZmVycmVyIiwicXVlcnlQYXJhbUltcG9ydE1hcCIsIkpTT04iLCJwYXJzZSIsImUiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsInJlbW92ZU92ZXJyaWRlIiwiaGFzSXRlbSIsInJlbW92ZUl0ZW0iLCJlbmFibGVPdmVycmlkZSIsInJlc2V0T3ZlcnJpZGVzIiwiaGFzT3ZlcnJpZGVzIiwicG9ydCIsImZpbGVOYW1lIiwiZW5hYmxlVUkiLCJjdXN0b21FbGVtZW50TmFtZSIsInNob3dXaGVuTG9jYWxTdG9yYWdlIiwiY3VzdG9tRWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJzZXRBdHRyaWJ1dGUiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJsb2NhbFN0b3JhZ2VLZXkiLCJyZW5kZXJXaXRoUHJlYWN0IiwibWVyZ2VJbXBvcnRNYXAiLCJvcmlnaW5hbE1hcCIsIm5ld01hcCIsIm91dE1hcCIsImdldERlZmF1bHRNYXAiLCJwcm90b3R5cGUiLCJyZWR1Y2UiLCJjYWxsIiwicXVlcnlTZWxlY3RvckFsbCIsInByb21pc2UiLCJzY3JpcHRFbCIsIm5leHRQcm9taXNlIiwic3JjIiwiZmV0Y2hFeHRlcm5hbE1hcCIsIlByb21pc2UiLCJyZXNvbHZlIiwidGV4dENvbnRlbnQiLCJhbGwiLCJ0aGVuIiwiZ2V0Q3VycmVudFBhZ2VNYXAiLCJnZXRFeHRlcm5hbE92ZXJyaWRlTWFwIiwiZ2V0Q3VycmVudFBhZ2VFeHRlcm5hbE92ZXJyaWRlcyIsImRlZmF1bHRNYXAiLCJleHRlcm5hbE92ZXJyaWRlc01hcCIsImluaXRpYWxPdmVycmlkZU1hcCIsImN1cnJlbnRQYWdlRXh0ZXJuYWxPdmVycmlkZXMiLCJleHRlcm5hbE92ZXJyaWRlRWwiLCJwdXNoIiwiZ2V0TmV4dFBhZ2VNYXAiLCJkaXNhYmxlT3ZlcnJpZGUiLCJzdHJpbmdpZnkiLCJjb25jYXQiLCJpbmRleCIsInNwbGljZSIsImdldEV4dGVybmFsT3ZlcnJpZGVzIiwibG9jYWxTdG9yYWdlVmFsdWUiLCJzb3J0IiwiYWRkRXh0ZXJuYWxPdmVycmlkZSIsIlVSTCIsImJhc2VVUkkiLCJyZW1vdmVFeHRlcm5hbE92ZXJyaWRlIiwiZmlsdGVyIiwib3ZlcnJpZGUiLCJyZXN1bHQiLCJleHRlcm5hbE92ZXJyaWRlIiwiZmV0Y2hQcm9taXNlIiwiZmlyc3RNYXAiLCJzZWNvbmRNYXAiLCJpc0V4dGVybmFsTWFwVmFsaWQiLCJpbXBvcnRNYXBVcmwiLCJpbnZhbGlkRXh0ZXJuYWxNYXBzIiwiY2FuRmlyZUN1c3RvbUV2ZW50cyIsIkN1c3RvbUV2ZW50IiwiZXJyIiwiZmlyZUV2ZW50IiwidHlwZSIsInNldFRpbWVvdXQiLCJldmVudFR5cGUiLCJldmVudCIsImNyZWF0ZUV2ZW50IiwiaW5pdEN1c3RvbUV2ZW50IiwiZGlzcGF0Y2hFdmVudCIsInJlZmVyZW5jZU5vZGUiLCJpbml0aWFsRXh0ZXJuYWxPdmVycmlkZU1hcHMiLCJvdmVycmlkYWJsZUltcG9ydE1hcCIsImltcG9ydE1hcHMiLCJpbnNlcnRPdmVycmlkZU1hcCIsImluc2VydEFsbEV4dGVybmFsT3ZlcnJpZGVNYXBzIiwibWFwIiwiaWQiLCJvdmVycmlkZU1hcEVsZW1lbnQiLCJpbnNlcnRBZGphY2VudEVsZW1lbnQiLCJoZWFkIiwiZmV0Y2giLCJyIiwib2siLCJqc29uIiwiY2F0Y2giLCJzdGF0dXMiLCJtYXBVcmwiLCJpbml0IiwiY3NzIiwicmVmIiwiaW5zZXJ0QXQiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInN0eWxlIiwiZmlyc3RDaGlsZCIsImluc2VydEJlZm9yZSIsInN0eWxlU2hlZXQiLCJjc3NUZXh0IiwiY3JlYXRlVGV4dE5vZGUiLCJuIiwibCIsInUiLCJ0IiwibyIsImMiLCJzIiwiYSIsImgiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJ2IiwiZiIsImFyZ3VtZW50cyIsImNoaWxkcmVuIiwiZGVmYXVsdFByb3BzIiwieSIsInByb3BzIiwiX19rIiwiX18iLCJfX2IiLCJfX2UiLCJfX2QiLCJfX2MiLCJfX2giLCJjb25zdHJ1Y3RvciIsIl9fdiIsInZub2RlIiwiZCIsIl8iLCJ0aGlzIiwiY29udGV4dCIsImsiLCJiIiwiYmFzZSIsIm0iLCJnIiwiX19yIiwiZGVib3VuY2VSZW5kZXJpbmciLCJfX1AiLCJqIiwiX19uIiwib3duZXJTVkdFbGVtZW50IiwieiIsInciLCJwIiwiQSIsIngiLCJQIiwidmFsdWUiLCJOIiwiTSIsIm5leHRTaWJsaW5nIiwiJCIsInNldFByb3BlcnR5IiwiSCIsInRvTG93ZXJDYXNlIiwiYWRkRXZlbnRMaXN0ZW5lciIsIlQiLCJJIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInJlbW92ZUF0dHJpYnV0ZSIsImNvbnRleHRUeXBlIiwiX19FIiwicmVuZGVyIiwiTyIsInN1YiIsInN0YXRlIiwiX19zIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwiY29tcG9uZW50V2lsbE1vdW50IiwiY29tcG9uZW50RGlkTW91bnQiLCJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIiwic2hvdWxkQ29tcG9uZW50VXBkYXRlIiwiY29tcG9uZW50V2lsbFVwZGF0ZSIsImNvbXBvbmVudERpZFVwZGF0ZSIsImdldENoaWxkQ29udGV4dCIsImdldFNuYXBzaG90QmVmb3JlVXBkYXRlIiwiTCIsImRpZmZlZCIsImxvY2FsTmFtZSIsIm5vZGVUeXBlIiwiY3JlYXRlRWxlbWVudE5TIiwiaXMiLCJkYXRhIiwiY2hpbGROb2RlcyIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiYXR0cmlidXRlcyIsIl9faHRtbCIsImlubmVySFRNTCIsIkMiLCJjaGVja2VkIiwiY3VycmVudCIsInVubW91bnQiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsIlMiLCJnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IiLCJzZXRTdGF0ZSIsImNvbXBvbmVudERpZENhdGNoIiwiZm9yY2VVcGRhdGUiLCJiaW5kIiwiTW9kdWxlRGlhbG9nIiwibWF0Y2giLCJfdGhpcyIsIm1vZHVsZSIsIm92ZXJyaWRlVXJsIiwiZ2V0SW5pdGlhbE92ZXJyaWRlVXJsIiwiZWwiLCJpbnB1dEVsIiwibW9kdWxlTmFtZUVsIiwiZGlhbG9nRWwiLCJldnQiLCJwcmV2ZW50RGVmYXVsdCIsImlzTmV3IiwiYWRkTmV3TW9kdWxlIiwidXBkYXRlTW9kdWxlVXJsIiwicG9ydFJlZ2V4Iiwic3RvcFByb3BhZ2F0aW9uIiwiY2FuY2VsIiwic2VsZWN0IiwiZm9jdXNGaXJzdElucHV0Iiwia2V5RG93biIsInByZXZQcm9wcyIsInByZXZTdGF0ZSIsIl90aGlzMiIsImNsYXNzTmFtZSIsIm9wZW4iLCJkaWFsb2dSZWYiLCJtZXRob2QiLCJvblN1Ym1pdCIsImhhbmRsZVN1Ym1pdCIsIm1hcmdpblRvcCIsImRlZmF1bHRVcmwiLCJwb3NpdGlvbiIsInRhYkluZGV4Iiwib25JbnB1dCIsIl90aGlzMyIsInRhcmdldCIsImhhbmRsZU1vZHVsZU5hbWVSZWYiLCJyZXF1aXJlZCIsInJvbGUiLCJvbkNsaWNrIiwiY2xlYXJNb2R1bGVOYW1lIiwiaGFuZGxlSW5wdXRSZWYiLCJjbGVhcklucHV0IiwiZ2V0RGVyaXZlZFVybCIsIm1hcmdpblJpZ2h0IiwiZGlzYWJsZWQiLCJDb21wb25lbnQiLCJFeHRlcm5hbEltcG9ydE1hcCIsImRpYWxvZ0V4dGVybmFsTWFwIiwiZm9jdXMiLCJtYXJnaW5Cb3R0b20iLCJodG1sRm9yIiwiRGV2TGliT3ZlcnJpZGVzIiwiYWRkRGV2TGliT3ZlcnJpZGVzIiwicmVtb3ZlTWluIiwiZGV2TGlicyIsInJlYWN0IiwidnVlIiwibm90T3ZlcnJpZGRlbk1hcCIsImxpYk5hbWUiLCJvdmVycmlkZXNCZXNpZGVzRGV2TGlicyIsIkxpc3QiLCJjdXJyZW50UGFnZU1hcCIsIm5leHRQYWdlTWFwIiwiZGlhbG9nTW9kdWxlIiwic2VhcmNoVmFsIiwicmVsb2FkIiwibmV3VXJsIiwidHJpbSIsImRvVXBkYXRlIiwiaW5wdXRSZWYiLCJkaWFsb2dDb250YWluZXIiLCJyZW1vdmUiLCJvdmVycmlkZGVuTW9kdWxlcyIsIm5leHRPdmVycmlkZGVuTW9kdWxlcyIsImRlZmF1bHRNb2R1bGVzIiwiZXh0ZXJuYWxPdmVycmlkZU1vZHVsZXMiLCJwZW5kaW5nUmVmcmVzaERlZmF1bHRNb2R1bGVzIiwiZGV2TGliTW9kdWxlcyIsIm92ZXJyaWRlTWFwIiwibm90T3ZlcnJpZGRlbktleXMiLCJkaXNhYmxlZE1vZHVsZXMiLCJmaWx0ZXJNb2R1bGVOYW1lcyIsIm1vZCIsInNvcnRlciIsImFsbEV4dGVybmFsTWFwcyIsImFsbEN1cnJlbnRQYWdlTWFwcyIsImJyb2tlbk1hcHMiLCJ3b3JraW5nQ3VycmVudFBhZ2VNYXBzIiwid29ya2luZ05leHRQYWdlTWFwcyIsImV4dGVybmFsTWFwIiwiZ2V0RXh0ZXJuYWxNYXBzIiwicGxhY2Vob2xkZXIiLCJ0b0RvbWFpbiIsInRvRmlsZU5hbWUiLCJ0aXRsZSIsImZpcnN0Iiwic2Vjb25kIiwiY3VycmVudEJhc2UiLCJvcmlnaW4iLCJ1cmxTdHIiLCJ0b1VybFN0ciIsInRvVVJMIiwiaG9zdCIsInBhdGhuYW1lIiwibGFzdEluZGV4T2YiLCJQb3B1cCIsImNsb3NlIiwia2V5ZG93bkxpc3RlbmVyIiwiaW1wb3J0TWFwQ2hhbmdlZCIsIkZ1bGxVSSIsInNob3dpbmdQb3B1cCIsInVzZURldkxpYnMiLCJ0b2dnbGVUcmlnZ2VyIiwiYXRMZWFzdE9uZU92ZXJyaWRlIiwicHJlYWN0Q3VzdG9tRWxlbWVudCIsIkNvbXAiLCJvYnNlcnZlZEF0dHJpYnV0ZXMiLCJyZW5kZXJlZEVsIiwic2hhZG93IiwiYXR0YWNoU2hhZG93IiwibW9kZSIsInN0eWxlcyIsInRvU3RyaW5nIiwiSFRNTEVsZW1lbnQiLCJjdXN0b21FbGVtZW50cyIsImRlZmluZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBTyxTQUFTQSxFQUFTQyxDQUFBQSxFQUFLQyxDQUFBQTtRQUFBQSxJQUN4QkMsTUFBTUMsT0FBQUEsQ0FBUUgsSUFBTTtZQUFBLElBQ2pCLElBQUlJLElBQUksR0FBR0EsSUFBSUosRUFBSUssTUFBQUEsRUFBUUQsSUFBQUEsSUFDMUJKLENBQUFBLENBQUlJLEVBQUFBLEtBQU9ILEdBQUFBLE9BQUFBLENBQ047WUFBQSxRQUdKO1FBQUE7UUFDRixJQUFtQixtQkFBUkQsR0FBQUEsT0FDVEEsRUFBSU0sT0FBQUEsQ0FBUUwsTUFBUztRQUFBLE1BRXRCTSxNQUFBQSwwQkFBQUEsTUFBQUEsQ0FBQUEsRUFBdUNQO0lBQUFBO0lDVjFDLFNBQVNRLEVBQW1CQyxDQUFBQTtRQUFBQSxJQUFNQyxJQUFBQSxVQUFBQSxNQUFBQSxHQUFBQSxLQUFBQSxLQUFB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\n//# sourceURL=webpack-internal:///../../../node_modules/import-map-overrides/dist/import-map-overrides.js\n\n}");
42
-
43
39
  },
44
40
 
45
41
  });
@@ -170,7 +166,7 @@ __webpack_require__.u = (chunkId) => {
170
166
  // return url for filenames not based on template
171
167
 
172
168
  // return url for filenames based on template
173
- return "" + {"default-framework_esm-framework_dist_internal_js": "096d8819045782aa","default-framework_esm-styleguide_dist_index_js": "de1ccb6b383053df","default-node_modules_carbon_icons-react_es_generated_bucket-11_js-node_modules_carbon_icons-r-63ea09": "b9d2df7a8d8b0e69","default-node_modules_carbon_react_es_index_js": "291e1f6288b7d23b","default-node_modules_react-dom_index_js": "8506318f66d16da9","default-node_modules_react-i18next_dist_es_index_js": "724b1acafcb3c494","default-node_modules_react-router-dom_dist_index_js": "9d32a476ab7bed13","default-node_modules_swr_dist__internal_index_mjs": "a55d0c7fc69677ef","default-node_modules_tslib_tslib_es6_mjs": "ea8552fa9b5b595c","default-src_run_ts": "83a407c428ad1840","default-vendors-node_modules_dayjs_dayjs_min_js": "5c778f985ad678ec","default-vendors-node_modules_i18next-browser-languagedetector_dist_esm_i18nextBrowserLanguage-1ba50a": "05d439038b8b61f4","default-vendors-node_modules_i18next_dist_esm_i18next_js": "a03b941d3b937f8d","default-vendors-node_modules_react_index_js": "2f0c98fe350433ed","default-vendors-node_modules_rxjs__esm5_index_js": "92b85e96c6ce8a46","default-vendors-node_modules_single-spa_lib_es2015_esm_single-spa_dev_js": "4682b3152838253a","framework_esm-translations_translations_am_json": "06aee695134bd88c","framework_esm-translations_translations_ar_SY_json": "086a5e1ac26f1a62","framework_esm-translations_translations_ar_json": "187d960cfc505554","framework_esm-translations_translations_bn_json": "f2c514ea31c828e3","framework_esm-translations_translations_cs_json": "1ba85eef0ead5042","framework_esm-translations_translations_de_json": "7dd156f94a857529","framework_esm-translations_translations_en_US_json": "d18770830db868c8","framework_esm-translations_translations_en_json": "f372453e21463e93","framework_esm-translations_translations_es_MX_json": "da748f8188c833d7","framework_esm-translations_translations_es_json": "c55b14008657a3be","framework_esm-translations_translations_fr_json": "828a8facba2fb98a","framework_esm-translations_translations_he_json": "bd5dc18397ad5098","framework_esm-translations_translations_hi_IN_json": "06ebc86c297de47e","framework_esm-translations_translations_hi_json": "628b7bb4e4b6fdec","framework_esm-translations_translations_id_json": "602691f331f79f76","framework_esm-translations_translations_it_json": "0307ccffc40d15e1","framework_esm-translations_translations_ka_json": "d575a575801d144a","framework_esm-translations_translations_km_json": "1d687e22c573ea8f","framework_esm-translations_translations_ku_json": "a5db5cdb878080aa","framework_esm-translations_translations_ky_json": "5890ffb53b3cffa4","framework_esm-translations_translations_lg_json": "fb31be88afa34d7a","framework_esm-translations_translations_ne_json": "3fae9cc7e8b9c833","framework_esm-translations_translations_pl_json": "d44f5ff4d0f87c16","framework_esm-translations_translations_pt_BR_json": "d8d61fddb26edf63","framework_esm-translations_translations_pt_json": "8144d8726771c08f","framework_esm-translations_translations_qu_json": "c9fef59aba3fcb13","framework_esm-translations_translations_ro_RO_json": "cceb766e6653a7d2","framework_esm-translations_translations_ru_RU_json": "34b718b592bcfed7","framework_esm-translations_translations_si_json": "ca21fb83f91dc92b","framework_esm-translations_translations_sq_json": "2552494ee2b1ecd1","framework_esm-translations_translations_sw_KE_json": "214838278663a696","framework_esm-translations_translations_sw_json": "dc052baecb3d5646","framework_esm-translations_translations_tr_TR_json": "c19369c2cb61645c","framework_esm-translations_translations_tr_json": "d407ba9747584f22","framework_esm-translations_translations_uk_json": "2e295b54ad1ac444","framework_esm-translations_translations_uz_Latn_json": "c2c4926db7e236c2","framework_esm-translations_translations_uz_UZ_json": "eb882b8b16e728a4","framework_esm-translations_translations_uz_json": "6dc2e17e163c4981","framework_esm-translations_translations_vi_json": "592beb196bd3214e","framework_esm-translations_translations_zh_CN_json": "c712c8acc74a10ff","framework_esm-translations_translations_zh_TW_json": "509d0ef5eb6011fe","framework_esm-translations_translations_zh_json": "4ca10201b36d44cf","intl-durationformat-polyfill": "cca0d70ddc22e728",}[chunkId] + ".js"
169
+ return "" + {"default-framework_esm-framework_dist_internal_js": "8fc619183a4e4ee5","default-framework_esm-styleguide_dist_index_js": "de1ccb6b383053df","default-node_modules_carbon_icons-react_es_generated_bucket-11_js-node_modules_carbon_icons-r-63ea09": "b9d2df7a8d8b0e69","default-node_modules_carbon_react_es_index_js": "291e1f6288b7d23b","default-node_modules_react-dom_index_js": "8506318f66d16da9","default-node_modules_react-i18next_dist_es_index_js": "724b1acafcb3c494","default-node_modules_react-router-dom_dist_index_js": "9d32a476ab7bed13","default-node_modules_swr_dist__internal_index_mjs": "a55d0c7fc69677ef","default-node_modules_tslib_tslib_es6_mjs": "ea8552fa9b5b595c","default-src_run_ts": "4925fcf077dcfe9f","default-vendors-node_modules_dayjs_dayjs_min_js": "5c778f985ad678ec","default-vendors-node_modules_i18next-browser-languagedetector_dist_esm_i18nextBrowserLanguage-1ba50a": "05d439038b8b61f4","default-vendors-node_modules_i18next_dist_esm_i18next_js": "a03b941d3b937f8d","default-vendors-node_modules_react_index_js": "2f0c98fe350433ed","default-vendors-node_modules_rxjs__esm5_index_js": "92b85e96c6ce8a46","default-vendors-node_modules_single-spa_lib_es2015_esm_single-spa_dev_js": "4682b3152838253a","framework_esm-translations_translations_am_json": "06aee695134bd88c","framework_esm-translations_translations_ar_SY_json": "086a5e1ac26f1a62","framework_esm-translations_translations_ar_json": "187d960cfc505554","framework_esm-translations_translations_bn_json": "f2c514ea31c828e3","framework_esm-translations_translations_cs_json": "1ba85eef0ead5042","framework_esm-translations_translations_de_json": "7dd156f94a857529","framework_esm-translations_translations_en_US_json": "d18770830db868c8","framework_esm-translations_translations_en_json": "f372453e21463e93","framework_esm-translations_translations_es_MX_json": "da748f8188c833d7","framework_esm-translations_translations_es_json": "c55b14008657a3be","framework_esm-translations_translations_fr_json": "828a8facba2fb98a","framework_esm-translations_translations_he_json": "bd5dc18397ad5098","framework_esm-translations_translations_hi_IN_json": "06ebc86c297de47e","framework_esm-translations_translations_hi_json": "628b7bb4e4b6fdec","framework_esm-translations_translations_id_json": "602691f331f79f76","framework_esm-translations_translations_it_json": "0307ccffc40d15e1","framework_esm-translations_translations_ka_json": "d575a575801d144a","framework_esm-translations_translations_km_json": "1d687e22c573ea8f","framework_esm-translations_translations_ku_json": "a5db5cdb878080aa","framework_esm-translations_translations_ky_json": "5890ffb53b3cffa4","framework_esm-translations_translations_lg_json": "fb31be88afa34d7a","framework_esm-translations_translations_ne_json": "3fae9cc7e8b9c833","framework_esm-translations_translations_pl_json": "d44f5ff4d0f87c16","framework_esm-translations_translations_pt_BR_json": "d8d61fddb26edf63","framework_esm-translations_translations_pt_json": "8144d8726771c08f","framework_esm-translations_translations_qu_json": "c9fef59aba3fcb13","framework_esm-translations_translations_ro_RO_json": "cceb766e6653a7d2","framework_esm-translations_translations_ru_RU_json": "34b718b592bcfed7","framework_esm-translations_translations_si_json": "ca21fb83f91dc92b","framework_esm-translations_translations_sq_json": "2552494ee2b1ecd1","framework_esm-translations_translations_sw_KE_json": "214838278663a696","framework_esm-translations_translations_sw_json": "dc052baecb3d5646","framework_esm-translations_translations_tr_TR_json": "c19369c2cb61645c","framework_esm-translations_translations_tr_json": "d407ba9747584f22","framework_esm-translations_translations_uk_json": "2e295b54ad1ac444","framework_esm-translations_translations_uz_Latn_json": "c2c4926db7e236c2","framework_esm-translations_translations_uz_UZ_json": "eb882b8b16e728a4","framework_esm-translations_translations_uz_json": "6dc2e17e163c4981","framework_esm-translations_translations_vi_json": "592beb196bd3214e","framework_esm-translations_translations_zh_CN_json": "c712c8acc74a10ff","framework_esm-translations_translations_zh_TW_json": "509d0ef5eb6011fe","framework_esm-translations_translations_zh_json": "4ca10201b36d44cf","intl-durationformat-polyfill": "81012d11162cd749",}[chunkId] + ".js"
174
170
  }
175
171
  })();
176
172
  // webpack/runtime/global
@@ -288,7 +284,7 @@ __webpack_require__.rv = () => ("1.7.9")
288
284
  (() => {
289
285
 
290
286
  __webpack_require__.S = {};
291
- __webpack_require__.initializeSharingData = { scopeToSharingDataMapping: { "default": [{ name: "@carbon/react", version: "1.92.1", factory: () => (Promise.all([__webpack_require__.e("default-webpack_sharing_consume_default_react_react"), __webpack_require__.e("default-webpack_sharing_consume_default_react-dom_react-dom"), __webpack_require__.e("default-node_modules_carbon_icons-react_es_generated_bucket-11_js-node_modules_carbon_icons-r-63ea09"), __webpack_require__.e("default-node_modules_tslib_tslib_es6_mjs"), __webpack_require__.e("default-node_modules_carbon_react_es_index_js")]).then(() => (() => (__webpack_require__("../../../node_modules/@carbon/react/es/index.js"))))), eager: 0, singleton: 1, requiredVersion: "1.x", strictVersion: 0 }, { name: "@openmrs/esm-framework/src/internal", version: "9.0.3-pre.4533", factory: () => (Promise.all([__webpack_require__.e("default-webpack_sharing_consume_default_react_react"), __webpack_require__.e("default-webpack_sharing_consume_default_react-dom_react-dom"), __webpack_require__.e("default-node_modules_carbon_icons-react_es_generated_bucket-11_js-node_modules_carbon_icons-r-63ea09"), __webpack_require__.e("default-framework_esm-framework_dist_internal_js")]).then(() => (() => (__webpack_require__("../../framework/esm-framework/dist/internal.js"))))), eager: 0, singleton: 1, requiredVersion: "*", strictVersion: 0 }, { name: "dayjs", version: "1.11.13", factory: () => (__webpack_require__.e("default-vendors-node_modules_dayjs_dayjs_min_js").then(() => (() => (__webpack_require__("../../../node_modules/dayjs/dayjs.min.js"))))), eager: 0, singleton: 1, requiredVersion: "1.x", strictVersion: 0 }, { name: "i18next", version: "25.5.3", factory: () => (__webpack_require__.e("default-vendors-node_modules_i18next_dist_esm_i18next_js").then(() => (() => (__webpack_require__("../../../node_modules/i18next/dist/esm/i18next.js"))))), eager: 0, singleton: 1, requiredVersion: "25.x", strictVersion: 0 }, { name: "react-dom", version: "18.3.1", factory: () => (Promise.all([__webpack_require__.e("default-webpack_sharing_consume_default_react_react"), __webpack_require__.e("default-node_modules_react-dom_index_js")]).then(() => (() => (__webpack_require__("../../../node_modules/react-dom/index.js"))))), eager: 0, singleton: 1, requiredVersion: "18.x", strictVersion: 0 }, { name: "react-i18next", version: "16.0.0", factory: () => (Promise.all([__webpack_require__.e("default-webpack_sharing_consume_default_react_react"), __webpack_require__.e("default-node_modules_react-i18next_dist_es_index_js")]).then(() => (() => (__webpack_require__("../../../node_modules/react-i18next/dist/es/index.js"))))), eager: 0, singleton: 1, requiredVersion: "16.x", strictVersion: 0 }, { name: "react-router-dom", version: "6.30.3", factory: () => (Promise.all([__webpack_require__.e("default-webpack_sharing_consume_default_react_react"), __webpack_require__.e("default-webpack_sharing_consume_default_react-dom_react-dom"), __webpack_require__.e("default-node_modules_react-router-dom_dist_index_js")]).then(() => (() => (__webpack_require__("../../../node_modules/react-router-dom/dist/index.js"))))), eager: 0, singleton: 1, requiredVersion: "6.x", strictVersion: 0 }, { name: "react", version: "18.3.1", factory: () => (__webpack_require__.e("default-vendors-node_modules_react_index_js").then(() => (() => (__webpack_require__("../../../node_modules/react/index.js"))))), eager: 0, singleton: 1, requiredVersion: "18.x", strictVersion: 0 }, { name: "rxjs", version: "6.6.7", factory: () => (__webpack_require__.e("default-vendors-node_modules_rxjs__esm5_index_js").then(() => (() => (__webpack_require__("../../../node_modules/rxjs/_esm5/index.js"))))), eager: 0, singleton: 1, requiredVersion: "6.x", strictVersion: 0 }, { name: "single-spa", version: "6.0.3", factory: () => (__webpack_require__.e("default-vendors-node_modules_single-spa_lib_es2015_esm_single-spa_dev_js").then(() => (() => (__webpack_require__("../../../node_modules/single-spa/lib/es2015/esm/single-spa.dev.js"))))), eager: 0, singleton: 1, requiredVersion: "6.x", strictVersion: 0 }, { name: "swr/_internal", version: "2.2.5", factory: () => (Promise.all([__webpack_require__.e("default-webpack_sharing_consume_default_react_react"), __webpack_require__.e("default-node_modules_swr_dist__internal_index_mjs")]).then(() => (() => (__webpack_require__("../../../node_modules/swr/dist/_internal/index.mjs"))))), eager: 0, singleton: 1, requiredVersion: "2.2.5", strictVersion: 0 }] }, uniqueName: "@openmrs/esm-app-shell" };
287
+ __webpack_require__.initializeSharingData = { scopeToSharingDataMapping: { "default": [{ name: "@carbon/react", version: "1.92.1", factory: () => (Promise.all([__webpack_require__.e("default-webpack_sharing_consume_default_react_react"), __webpack_require__.e("default-webpack_sharing_consume_default_react-dom_react-dom"), __webpack_require__.e("default-node_modules_carbon_icons-react_es_generated_bucket-11_js-node_modules_carbon_icons-r-63ea09"), __webpack_require__.e("default-node_modules_tslib_tslib_es6_mjs"), __webpack_require__.e("default-node_modules_carbon_react_es_index_js")]).then(() => (() => (__webpack_require__("../../../node_modules/@carbon/react/es/index.js"))))), eager: 0, singleton: 1, requiredVersion: "1.x", strictVersion: 0 }, { name: "@openmrs/esm-framework/src/internal", version: "9.0.3-pre.4550", factory: () => (Promise.all([__webpack_require__.e("default-webpack_sharing_consume_default_react_react"), __webpack_require__.e("default-webpack_sharing_consume_default_react-dom_react-dom"), __webpack_require__.e("default-node_modules_carbon_icons-react_es_generated_bucket-11_js-node_modules_carbon_icons-r-63ea09"), __webpack_require__.e("default-framework_esm-framework_dist_internal_js")]).then(() => (() => (__webpack_require__("../../framework/esm-framework/dist/internal.js"))))), eager: 0, singleton: 1, requiredVersion: "*", strictVersion: 0 }, { name: "dayjs", version: "1.11.13", factory: () => (__webpack_require__.e("default-vendors-node_modules_dayjs_dayjs_min_js").then(() => (() => (__webpack_require__("../../../node_modules/dayjs/dayjs.min.js"))))), eager: 0, singleton: 1, requiredVersion: "1.x", strictVersion: 0 }, { name: "i18next", version: "25.5.3", factory: () => (__webpack_require__.e("default-vendors-node_modules_i18next_dist_esm_i18next_js").then(() => (() => (__webpack_require__("../../../node_modules/i18next/dist/esm/i18next.js"))))), eager: 0, singleton: 1, requiredVersion: "25.x", strictVersion: 0 }, { name: "react-dom", version: "18.3.1", factory: () => (Promise.all([__webpack_require__.e("default-webpack_sharing_consume_default_react_react"), __webpack_require__.e("default-node_modules_react-dom_index_js")]).then(() => (() => (__webpack_require__("../../../node_modules/react-dom/index.js"))))), eager: 0, singleton: 1, requiredVersion: "18.x", strictVersion: 0 }, { name: "react-i18next", version: "16.0.0", factory: () => (Promise.all([__webpack_require__.e("default-webpack_sharing_consume_default_react_react"), __webpack_require__.e("default-node_modules_react-i18next_dist_es_index_js")]).then(() => (() => (__webpack_require__("../../../node_modules/react-i18next/dist/es/index.js"))))), eager: 0, singleton: 1, requiredVersion: "16.x", strictVersion: 0 }, { name: "react-router-dom", version: "6.30.3", factory: () => (Promise.all([__webpack_require__.e("default-webpack_sharing_consume_default_react_react"), __webpack_require__.e("default-webpack_sharing_consume_default_react-dom_react-dom"), __webpack_require__.e("default-node_modules_react-router-dom_dist_index_js")]).then(() => (() => (__webpack_require__("../../../node_modules/react-router-dom/dist/index.js"))))), eager: 0, singleton: 1, requiredVersion: "6.x", strictVersion: 0 }, { name: "react", version: "18.3.1", factory: () => (__webpack_require__.e("default-vendors-node_modules_react_index_js").then(() => (() => (__webpack_require__("../../../node_modules/react/index.js"))))), eager: 0, singleton: 1, requiredVersion: "18.x", strictVersion: 0 }, { name: "rxjs", version: "6.6.7", factory: () => (__webpack_require__.e("default-vendors-node_modules_rxjs__esm5_index_js").then(() => (() => (__webpack_require__("../../../node_modules/rxjs/_esm5/index.js"))))), eager: 0, singleton: 1, requiredVersion: "6.x", strictVersion: 0 }, { name: "single-spa", version: "6.0.3", factory: () => (__webpack_require__.e("default-vendors-node_modules_single-spa_lib_es2015_esm_single-spa_dev_js").then(() => (() => (__webpack_require__("../../../node_modules/single-spa/lib/es2015/esm/single-spa.dev.js"))))), eager: 0, singleton: 1, requiredVersion: "6.x", strictVersion: 0 }, { name: "swr/_internal", version: "2.2.5", factory: () => (Promise.all([__webpack_require__.e("default-webpack_sharing_consume_default_react_react"), __webpack_require__.e("default-node_modules_swr_dist__internal_index_mjs")]).then(() => (() => (__webpack_require__("../../../node_modules/swr/dist/_internal/index.mjs"))))), eager: 0, singleton: 1, requiredVersion: "2.2.5", strictVersion: 0 }] }, uniqueName: "@openmrs/esm-app-shell" };
292
288
  __webpack_require__.I = __webpack_require__.I || function() { throw new Error("should have __webpack_require__.I") }
293
289
 
294
290
  })();