@openmrs/esm-app-shell 10.0.1-pre.5251 → 10.0.1-pre.5255

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.
@@ -5620,7 +5620,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webp
5620
5620
  },
5621
5621
  "../../framework/esm-dynamic-loading/dist/import-maps.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
5622
5622
  "use strict";
5623
- eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n addImportMapOverride: () => (addImportMapOverride),\n enableImportMapOverride: () => (enableImportMapOverride),\n getCurrentPageMap: () => (getCurrentPageMap),\n getImportMapDefaultMap: () => (getImportMapDefaultMap),\n getImportMapDisabledOverrides: () => (getImportMapDisabledOverrides),\n getImportMapNextPageMap: () => (getImportMapNextPageMap),\n getImportMapOverrideMap: () => (getImportMapOverrideMap),\n isImportMapOverrideDisabled: () => (isImportMapOverrideDisabled),\n removeImportMapOverride: () => (removeImportMapOverride),\n resetImportMapOverrides: () => (resetImportMapOverrides),\n setupImportMapOverrides: () => (setupImportMapOverrides)\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}\n/** @module @category Import Map */ var OVERRIDE_PREFIX = 'import-map-override:';\nvar DISABLED_KEY = 'import-map-overrides-disabled';\nvar CHANGE_EVENT = 'import-map-overrides:change';\n// Set by setupImportMapOverrides(); controls whether override functionality is active.\nvar devMode = false;\n// Snapshot of overrides at setup time (matches import-map-overrides library behavior:\n// getCurrentPageMap returns the overrides as they were when the page loaded).\nvar initialOverrideSnapshot = null;\n/**\n * Reads all `<script type=\"systemjs-importmap\">` tags from the DOM and merges\n * them into a single {@link ImportMap}. Tags with a `src` attribute are fetched;\n * inline tags have their `textContent` parsed as JSON.\n */ function readBaseMap() {\n return _async_to_generator(function() {\n var scripts, maps, i, script, response, _, e;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n scripts = document.querySelectorAll('script[type=\"systemjs-importmap\"]');\n maps = [];\n i = 0;\n _state.label = 1;\n case 1:\n if (!(i < scripts.length)) return [\n 3,\n 9\n ];\n script = scripts[i];\n _state.label = 2;\n case 2:\n _state.trys.push([\n 2,\n 7,\n ,\n 8\n ]);\n if (!script.src) return [\n 3,\n 5\n ];\n return [\n 4,\n fetch(script.src)\n ];\n case 3:\n response = _state.sent();\n _ = maps.push;\n return [\n 4,\n response.json()\n ];\n case 4:\n _.apply(maps, [\n _state.sent()\n ]);\n return [\n 3,\n 6\n ];\n case 5:\n if (script.textContent) {\n maps.push(JSON.parse(script.textContent));\n }\n _state.label = 6;\n case 6:\n return [\n 3,\n 8\n ];\n case 7:\n e = _state.sent();\n console.warn(\"[import-maps] Failed to parse import map from script tag at index \".concat(i), e);\n return [\n 3,\n 8\n ];\n case 8:\n i++;\n return [\n 3,\n 1\n ];\n case 9:\n return [\n 2,\n mergeMaps(maps)\n ];\n }\n });\n })();\n}\nfunction mergeMaps(maps) {\n var merged = {\n imports: {}\n };\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = maps[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var map = _step.value;\n if (map === null || map === void 0 ? void 0 : map.imports) {\n Object.assign(merged.imports, map.imports);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return merged;\n}\n/** Returns all `import-map-override:*` entries from localStorage as an {@link ImportMap}. */ function readOverrideMap() {\n var imports = {};\n try {\n var disabled = getImportMapDisabledOverrides();\n for(var i = 0; i < localStorage.length; i++){\n var key = localStorage.key(i);\n if (key === null || key === void 0 ? void 0 : key.startsWith(OVERRIDE_PREFIX)) {\n var moduleName = key.slice(OVERRIDE_PREFIX.length);\n if (!disabled.includes(moduleName)) {\n var url = localStorage.getItem(key);\n if (url) {\n imports[moduleName] = url;\n }\n }\n }\n }\n } catch (e) {\n console.warn('[import-maps] Failed to read import-map overrides from localStorage', e);\n }\n return {\n imports: imports\n };\n}\n/**\n * Returns the import map for the current page. In dev mode, this merges\n * the base map with the override snapshot captured at page load.\n */ function getCurrentPageMap() {\n return _async_to_generator(function() {\n var base, overrides;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n readBaseMap()\n ];\n case 1:\n base = _state.sent();\n if (!devMode) {\n return [\n 2,\n base\n ];\n }\n overrides = initialOverrideSnapshot !== null && initialOverrideSnapshot !== void 0 ? initialOverrideSnapshot : readOverrideMap();\n return [\n 2,\n mergeMaps([\n base,\n overrides\n ])\n ];\n }\n });\n })();\n}\n/**\n * Returns the base import map from the DOM without any overrides applied.\n */ function getImportMapDefaultMap() {\n return _async_to_generator(function() {\n return _ts_generator(this, function(_state) {\n return [\n 2,\n readBaseMap()\n ];\n });\n })();\n}\n/**\n * Returns what the import map will look like on the next page load, including\n * any overrides that have been added/removed since the page loaded.\n * In production, this is the same as the base map.\n */ function getImportMapNextPageMap() {\n return _async_to_generator(function() {\n var base;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n if (!devMode) {\n return [\n 2,\n readBaseMap()\n ];\n }\n return [\n 4,\n readBaseMap()\n ];\n case 1:\n base = _state.sent();\n return [\n 2,\n mergeMaps([\n base,\n readOverrideMap()\n ])\n ];\n }\n });\n })();\n}\n/**\n * Returns the current override map. In production, returns empty imports.\n * @param includeDisabled If true, includes disabled overrides.\n */ function getImportMapOverrideMap(includeDisabled) {\n if (!devMode) {\n return {\n imports: {}\n };\n }\n if (includeDisabled) {\n var imports = {};\n for(var i = 0; i < localStorage.length; i++){\n var key = localStorage.key(i);\n if (key === null || key === void 0 ? void 0 : key.startsWith(OVERRIDE_PREFIX)) {\n var url = localStorage.getItem(key);\n if (url) {\n imports[key.slice(OVERRIDE_PREFIX.length)] = url;\n }\n }\n }\n return {\n imports: imports\n };\n }\n return readOverrideMap();\n}\n/**\n * Returns the list of module names whose overrides are disabled.\n * In production, returns an empty array.\n */ function getImportMapDisabledOverrides() {\n if (!devMode) {\n return [];\n }\n try {\n var raw = localStorage.getItem(DISABLED_KEY);\n if (raw) {\n var parsed = JSON.parse(raw);\n if (Array.isArray(parsed)) {\n return parsed;\n }\n }\n } catch (unused) {\n // ignore malformed data\n }\n return [];\n}\n/**\n * Returns whether the given module's override is disabled.\n * In production, returns false.\n */ function isImportMapOverrideDisabled(moduleName) {\n if (!devMode) {\n return false;\n }\n return getImportMapDisabledOverrides().includes(moduleName);\n}\n/**\n * Adds an import map override. In production, this is a no-op.\n */ function addImportMapOverride(name, url) {\n if (!devMode) {\n console.warn('[Security] Import map overrides are disabled in production mode.');\n return;\n }\n try {\n localStorage.setItem(OVERRIDE_PREFIX + name, url);\n window.dispatchEvent(new CustomEvent(CHANGE_EVENT));\n } catch (e) {\n console.warn('[import-maps] Failed to write import-map override to localStorage', e);\n }\n}\n/**\n * Removes an import map override. In production, this is a no-op.\n */ function removeImportMapOverride(name) {\n if (!devMode) {\n console.warn('[Security] Import map overrides are disabled in production mode.');\n return;\n }\n try {\n localStorage.removeItem(OVERRIDE_PREFIX + name);\n var disabled = getImportMapDisabledOverrides().filter(function(n) {\n return n !== name;\n });\n if (disabled.length > 0) {\n localStorage.setItem(DISABLED_KEY, JSON.stringify(disabled));\n } else {\n localStorage.removeItem(DISABLED_KEY);\n }\n window.dispatchEvent(new CustomEvent(CHANGE_EVENT));\n } catch (e) {\n console.warn('[import-maps] Failed to update import-map overrides in localStorage', e);\n }\n}\n/**\n * Clears all import map overrides. In production, this is a no-op.\n */ function resetImportMapOverrides() {\n if (!devMode) {\n console.warn('[Security] Import map overrides are disabled in production mode.');\n return;\n }\n try {\n var keysToRemove = [];\n for(var i = 0; i < localStorage.length; i++){\n var key = localStorage.key(i);\n if (key === null || key === void 0 ? void 0 : key.startsWith(OVERRIDE_PREFIX)) {\n keysToRemove.push(key);\n }\n }\n keysToRemove.forEach(function(key) {\n return localStorage.removeItem(key);\n });\n localStorage.removeItem(DISABLED_KEY);\n window.dispatchEvent(new CustomEvent(CHANGE_EVENT));\n } catch (e) {\n console.warn('[import-maps] Failed to clear import-map overrides from localStorage', e);\n }\n}\n/**\n * Re-enables a previously disabled import map override. In production, this is a no-op.\n */ function enableImportMapOverride(name) {\n if (!devMode) {\n console.warn('[Security] Import map overrides are disabled in production mode.');\n return;\n }\n try {\n var disabled = getImportMapDisabledOverrides().filter(function(n) {\n return n !== name;\n });\n if (disabled.length > 0) {\n localStorage.setItem(DISABLED_KEY, JSON.stringify(disabled));\n } else {\n localStorage.removeItem(DISABLED_KEY);\n }\n window.dispatchEvent(new CustomEvent(CHANGE_EVENT));\n } catch (e) {\n console.warn('[import-maps] Failed to update import-map overrides in localStorage', e);\n }\n}\n/**\n * Initializes the import map override system with mode-aware behavior.\n *\n * In production (`window.spaEnv !== 'development'`), mutation functions are\n * no-ops and localStorage overrides are never consulted. In development, the\n * full override workflow is available.\n *\n * Must be called before any code that depends on the import map functions.\n */ var initialized = false;\nfunction setupImportMapOverrides() {\n if (initialized) {\n return;\n }\n initialized = true;\n devMode = window.spaEnv === 'development';\n if (devMode) {\n initialOverrideSnapshot = readOverrideMap();\n }\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLWR5bmFtaWMtbG9hZGluZy9kaXN0L2ltcG9ydC1tYXBzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWR5bmFtaWMtbG9hZGluZy9kaXN0L2ltcG9ydC1tYXBzLmpzP2I2ZTIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IEltcG9ydCBNYXAgKi8gY29uc3QgT1ZFUlJJREVfUFJFRklYID0gJ2ltcG9ydC1tYXAtb3ZlcnJpZGU6JztcbmNvbnN0IERJU0FCTEVEX0tFWSA9ICdpbXBvcnQtbWFwLW92ZXJyaWRlcy1kaXNhYmxlZCc7XG5jb25zdCBDSEFOR0VfRVZFTlQgPSAnaW1wb3J0LW1hcC1vdmVycmlkZXM6Y2hhbmdlJztcbi8vIFNldCBieSBzZXR1cEltcG9ydE1hcE92ZXJyaWRlcygpOyBjb250cm9scyB3aGV0aGVyIG92ZXJyaWRlIGZ1bmN0aW9uYWxpdHkgaXMgYWN0aXZlLlxubGV0IGRldk1vZGUgPSBmYWxzZTtcbi8vIFNuYXBzaG90IG9mIG92ZXJyaWRlcyBhdCBzZXR1cCB0aW1lIChtYXRjaGVzIGltcG9ydC1tYXAtb3ZlcnJpZGVzIGxpYnJhcnkgYmVoYXZpb3I6XG4vLyBnZXRDdXJyZW50UGFnZU1hcCByZXR1cm5zIHRoZSBvdmVycmlkZXMgYXMgdGhleSB3ZXJlIHdoZW4gdGhlIHBhZ2UgbG9hZGVkKS5cbmxldCBpbml0aWFsT3ZlcnJpZGVTbmFwc2hvdCA9IG51bGw7XG4vKipcbiAqIFJlYWRzIGFsbCBgPHNjcmlwdCB0eXBlPVwic3lzdGVtanMtaW1wb3J0bWFwXCI+YCB0YWdzIGZyb20gdGhlIERPTSBhbmQgbWVyZ2VzXG4gKiB0aGVtIGludG8gYSBzaW5nbGUge0BsaW5rIEltcG9ydE1hcH0uIFRhZ3Mgd2l0aCBhIGBzcmNgIGF0dHJpYnV0ZSBhcmUgZmV0Y2hlZDtcbiAqIGlubGluZSB0YWdzIGhhdmUgdGhlaXIgYHRleHRDb250ZW50YCBwYXJzZWQgYXMgSlNPTi5cbiAqLyBhc3luYyBmdW5jdGlvbiByZWFkQmFzZU1hcCgpIHtcbiAgICBjb25zdCBzY3JpcHRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnc2NyaXB0W3R5cGU9XCJzeXN0ZW1qcy1pbXBvcnRtYXBcIl0nKTtcbiAgICBjb25zdCBtYXBzID0gW107XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyBpKyspe1xuICAgICAgICBjb25zdCBzY3JpcHQgPSBzY3JpcHRzW2ldO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHNjcmlwdC5zcmMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHNjcmlwdC5zcmMpO1xuICAgICAgICAgICAgICAgIG1hcHMucHVzaChhd2FpdCByZXNwb25zZS5qc29uKCkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzY3JpcHQudGV4dENvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICBtYXBzLnB1c2goSlNPTi5wYXJzZShzY3JpcHQudGV4dENvbnRlbnQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBbaW1wb3J0LW1hcHNdIEZhaWxlZCB0byBwYXJzZSBpbXBvcnQgbWFwIGZyb20gc2NyaXB0IHRhZyBhdCBpbmRleCAke2l9YCwgZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1lcmdlTWFwcyhtYXBzKTtcbn1cbmZ1bmN0aW9uIG1lcmdlTWFwcyhtYXBzKSB7XG4gICAgY29uc3QgbWVyZ2VkID0ge1xuICAgICAgICBpbXBvcnRzOiB7fVxuICAgIH07XG4gICAgZm9yIChjb25zdCBtYXAgb2YgbWFwcyl7XG4gICAgICAgIGlmIChtYXA/LmltcG9ydHMpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24obWVyZ2VkLmltcG9ydHMsIG1hcC5pbXBvcnRzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWVyZ2VkO1xufVxuLyoqIFJldHVybnMgYWxsIGBpbXBvcnQtbWFwLW92ZXJyaWRlOipgIGVudHJpZXMgZnJvbSBsb2NhbFN0b3JhZ2UgYXMgYW4ge0BsaW5rIEltcG9ydE1hcH0uICovIGZ1bmN0aW9uIHJlYWRPdmVycmlkZU1hcCgpIHtcbiAgICBjb25zdCBpbXBvcnRzID0ge307XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZGlzYWJsZWQgPSBnZXRJbXBvcnRNYXBEaXNhYmxlZE92ZXJyaWRlcygpO1xuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbG9jYWxTdG9yYWdlLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGxvY2FsU3RvcmFnZS5rZXkoaSk7XG4gICAgICAgICAgICBpZiAoa2V5Py5zdGFydHNXaXRoKE9WRVJSSURFX1BSRUZJWCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtb2R1bGVOYW1lID0ga2V5LnNsaWNlKE9WRVJSSURFX1BSRUZJWC5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIGlmICghZGlzYWJsZWQuaW5jbHVkZXMobW9kdWxlTmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0c1ttb2R1bGVOYW1lXSA9IHVybDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdbaW1wb3J0LW1hcHNdIEZhaWxlZCB0byByZWFkIGltcG9ydC1tYXAgb3ZlcnJpZGVzIGZyb20gbG9jYWxTdG9yYWdlJywgZSk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGltcG9ydHNcbiAgICB9O1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpbXBvcnQgbWFwIGZvciB0aGUgY3VycmVudCBwYWdlLiBJbiBkZXYgbW9kZSwgdGhpcyBtZXJnZXNcbiAqIHRoZSBiYXNlIG1hcCB3aXRoIHRoZSBvdmVycmlkZSBzbmFwc2hvdCBjYXB0dXJlZCBhdCBwYWdlIGxvYWQuXG4gKi8gZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEN1cnJlbnRQYWdlTWFwKCkge1xuICAgIGNvbnN0IGJhc2UgPSBhd2FpdCByZWFkQmFzZU1hcCgpO1xuICAgIGlmICghZGV2TW9kZSkge1xuICAgICAgICByZXR1cm4gYmFzZTtcbiAgICB9XG4gICAgY29uc3Qgb3ZlcnJpZGVzID0gaW5pdGlhbE92ZXJyaWRlU25hcHNob3QgPz8gcmVhZE92ZXJyaWRlTWFwKCk7XG4gICAgcmV0dXJuIG1lcmdlTWFwcyhbXG4gICAgICAgIGJhc2UsXG4gICAgICAgIG92ZXJyaWRlc1xuICAgIF0pO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBiYXNlIGltcG9ydCBtYXAgZnJvbSB0aGUgRE9NIHdpdGhvdXQgYW55IG92ZXJyaWRlcyBhcHBsaWVkLlxuICovIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRJbXBvcnRNYXBEZWZhdWx0TWFwKCkge1xuICAgIHJldHVybiByZWFkQmFzZU1hcCgpO1xufVxuLyoqXG4gKiBSZXR1cm5zIHdoYXQgdGhlIGltcG9ydCBtYXAgd2lsbCBsb29rIGxpa2Ugb24gdGhlIG5leHQgcGFnZSBsb2FkLCBpbmNsdWRpbmdcbiAqIGFueSBvdmVycmlkZXMgdGhhdCBoYXZlIGJlZW4gYWRkZWQvcmVtb3ZlZCBzaW5jZSB0aGUgcGFnZSBsb2FkZWQuXG4gKiBJbiBwcm9kdWN0aW9uLCB0aGlzIGlzIHRoZSBzYW1lIGFzIHRoZSBiYXNlIG1hcC5cbiAqLyBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0SW1wb3J0TWFwTmV4dFBhZ2VNYXAoKSB7XG4gICAgaWYgKCFkZXZNb2RlKSB7XG4gICAgICAgIHJldHVybiByZWFkQmFzZU1hcCgpO1xuICAgIH1cbiAgICBjb25zdCBiYXNlID0gYXdhaXQgcmVhZEJhc2VNYXAoKTtcbiAgICByZXR1cm4gbWVyZ2VNYXBzKFtcbiAgICAgICAgYmFzZSxcbiAgICAgICAgcmVhZE92ZXJyaWRlTWFwKClcbiAgICBdKTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgY3VycmVudCBvdmVycmlkZSBtYXAuIEluIHByb2R1Y3Rpb24sIHJldHVybnMgZW1wdHkgaW1wb3J0cy5cbiAqIEBwYXJhbSBpbmNsdWRlRGlzYWJsZWQgSWYgdHJ1ZSwgaW5jbHVkZXMgZGlzYWJsZWQgb3ZlcnJpZGVzLlxuICovIGV4cG9ydCBmdW5jdGlvbiBnZXRJbXBvcnRNYXBPdmVycmlkZU1hcChpbmNsdWRlRGlzYWJsZWQpIHtcbiAgICBpZiAoIWRldk1vZGUpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltcG9ydHM6IHt9XG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmIChpbmNsdWRlRGlzYWJsZWQpIHtcbiAgICAgICAgY29uc3QgaW1wb3J0cyA9IHt9O1xuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbG9jYWxTdG9yYWdlLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGxvY2FsU3RvcmFnZS5rZXkoaSk7XG4gICAgICAgICAgICBpZiAoa2V5Py5zdGFydHNXaXRoKE9WRVJSSURFX1BSRUZJWCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgICAgICAgICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgaW1wb3J0c1trZXkuc2xpY2UoT1ZFUlJJREVfUFJFRklYLmxlbmd0aCldID0gdXJsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW1wb3J0c1xuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gcmVhZE92ZXJyaWRlTWFwKCk7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIGxpc3Qgb2YgbW9kdWxlIG5hbWVzIHdob3NlIG92ZXJyaWRlcyBhcmUgZGlzYWJsZWQuXG4gKiBJbiBwcm9kdWN0aW9uLCByZXR1cm5zIGFuIGVtcHR5IGFycmF5LlxuICovIGV4cG9ydCBmdW5jdGlvbiBnZXRJbXBvcnRNYXBEaXNhYmxlZE92ZXJyaWRlcygpIHtcbiAgICBpZiAoIWRldk1vZGUpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBjb25zdCByYXcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShESVNBQkxFRF9LRVkpO1xuICAgICAgICBpZiAocmF3KSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHJhdyk7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXJzZWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggIHtcbiAgICAvLyBpZ25vcmUgbWFsZm9ybWVkIGRhdGFcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xufVxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIG1vZHVsZSdzIG92ZXJyaWRlIGlzIGRpc2FibGVkLlxuICogSW4gcHJvZHVjdGlvbiwgcmV0dXJucyBmYWxzZS5cbiAqLyBleHBvcnQgZnVuY3Rpb24gaXNJbXBvcnRNYXBPdmVycmlkZURpc2FibGVkKG1vZHVsZU5hbWUpIHtcbiAgICBpZiAoIWRldk1vZGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0SW1wb3J0TWFwRGlzYWJsZWRPdmVycmlkZXMoKS5pbmNsdWRlcyhtb2R1bGVOYW1lKTtcbn1cbi8qKlxuICogQWRkcyBhbiBpbXBvcnQgbWFwIG92ZXJyaWRlLiBJbiBwcm9kdWN0aW9uLCB0aGlzIGlzIGEgbm8tb3AuXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGFkZEltcG9ydE1hcE92ZXJyaWRlKG5hbWUsIHVybCkge1xuICAgIGlmICghZGV2TW9kZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tTZWN1cml0eV0gSW1wb3J0IG1hcCBvdmVycmlkZXMgYXJlIGRpc2FibGVkIGluIHByb2R1Y3Rpb24gbW9kZS4nKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShPVkVSUklERV9QUkVGSVggKyBuYW1lLCB1cmwpO1xuICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoQ0hBTkdFX0VWRU5UKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tpbXBvcnQtbWFwc10gRmFpbGVkIHRvIHdyaXRlIGltcG9ydC1tYXAgb3ZlcnJpZGUgdG8gbG9jYWxTdG9yYWdlJywgZSk7XG4gICAgfVxufVxuLyoqXG4gKiBSZW1vdmVzIGFuIGltcG9ydCBtYXAgb3ZlcnJpZGUuIEluIHByb2R1Y3Rpb24sIHRoaXMgaXMgYSBuby1vcC5cbiAqLyBleHBvcnQgZnVuY3Rpb24gcmVtb3ZlSW1wb3J0TWFwT3ZlcnJpZGUobmFtZSkge1xuICAgIGlmICghZGV2TW9kZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tTZWN1cml0eV0gSW1wb3J0IG1hcCBvdmVycmlkZXMgYXJlIGRpc2FibGVkIGluIHByb2R1Y3Rpb24gbW9kZS4nKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShPVkVSUklERV9QUkVGSVggKyBuYW1lKTtcbiAgICAgICAgY29uc3QgZGlzYWJsZWQgPSBnZXRJbXBvcnRNYXBEaXNhYmxlZE92ZXJyaWRlcygpLmZpbHRlcigobik9Pm4gIT09IG5hbWUpO1xuICAgICAgICBpZiAoZGlzYWJsZWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oRElTQUJMRURfS0VZLCBKU09OLnN0cmluZ2lmeShkaXNhYmxlZCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oRElTQUJMRURfS0VZKTtcbiAgICAgICAgfVxuICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoQ0hBTkdFX0VWRU5UKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tpbXBvcnQtbWFwc10gRmFpbGVkIHRvIHVwZGF0ZSBpbXBvcnQtbWFwIG92ZXJyaWRlcyBpbiBsb2NhbFN0b3JhZ2UnLCBlKTtcbiAgICB9XG59XG4vKipcbiAqIENsZWFycyBhbGwgaW1wb3J0IG1hcCBvdmVycmlkZXMuIEluIHByb2R1Y3Rpb24sIHRoaXMgaXMgYSBuby1vcC5cbiAqLyBleHBvcnQgZnVuY3Rpb24gcmVzZXRJbXBvcnRNYXBPdmVycmlkZXMoKSB7XG4gICAgaWYgKCFkZXZNb2RlKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW1NlY3VyaXR5XSBJbXBvcnQgbWFwIG92ZXJyaWRlcyBhcmUgZGlzYWJsZWQgaW4gcHJvZHVjdGlvbiBtb2RlLicpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGtleXNUb1JlbW92ZSA9IFtdO1xuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbG9jYWxTdG9yYWdlLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGxvY2FsU3RvcmFnZS5rZXkoaSk7XG4gICAgICAgICAgICBpZiAoa2V5Py5zdGFydHNXaXRoKE9WRVJSSURFX1BSRUZJWCkpIHtcbiAgICAgICAgICAgICAgICBrZXlzVG9SZW1vdmUucHVzaChrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGtleXNUb1JlbW92ZS5mb3JFYWNoKChrZXkpPT5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oRElTQUJMRURfS0VZKTtcbiAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KENIQU5HRV9FVkVOVCkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdbaW1wb3J0LW1hcHNdIEZhaWxlZCB0byBjbGVhciBpbXBvcnQtbWFwIG92ZXJyaWRlcyBmcm9tIGxvY2FsU3RvcmFnZScsIGUpO1xuICAgIH1cbn1cbi8qKlxuICogUmUtZW5hYmxlcyBhIHByZXZpb3VzbHkgZGlzYWJsZWQgaW1wb3J0IG1hcCBvdmVycmlkZS4gSW4gcHJvZHVjdGlvbiwgdGhpcyBpcyBhIG5vLW9wLlxuICovIGV4cG9ydCBmdW5jdGlvbiBlbmFibGVJbXBvcnRNYXBPdmVycmlkZShuYW1lKSB7XG4gICAgaWYgKCFkZXZNb2RlKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW1NlY3VyaXR5XSBJbXBvcnQgbWFwIG92ZXJyaWRlcyBhcmUgZGlzYWJsZWQgaW4gcHJvZHVjdGlvbiBtb2RlLicpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGRpc2FibGVkID0gZ2V0SW1wb3J0TWFwRGlzYWJsZWRPdmVycmlkZXMoKS5maWx0ZXIoKG4pPT5uICE9PSBuYW1lKTtcbiAgICAgICAgaWYgKGRpc2FibGVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKERJU0FCTEVEX0tFWSwgSlNPTi5zdHJpbmdpZnkoZGlzYWJsZWQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKERJU0FCTEVEX0tFWSk7XG4gICAgICAgIH1cbiAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KENIQU5HRV9FVkVOVCkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdbaW1wb3J0LW1hcHNdIEZhaWxlZCB0byB1cGRhdGUgaW1wb3J0LW1hcCBvdmVycmlkZXMgaW4gbG9jYWxTdG9yYWdlJywgZSk7XG4gICAgfVxufVxuLyoqXG4gKiBJbml0aWFsaXplcyB0aGUgaW1wb3J0IG1hcCBvdmVycmlkZSBzeXN0ZW0gd2l0aCBtb2RlLWF3YXJlIGJlaGF2aW9yLlxuICpcbiAqIEluIHByb2R1Y3Rpb24gKGB3aW5kb3cuc3BhRW52ICE9PSAnZGV2ZWxvcG1lbnQnYCksIG11dGF0aW9uIGZ1bmN0aW9ucyBhcmVcbiAqIG5vLW9wcyBhbmQgbG9jYWxTdG9yYWdlIG92ZXJyaWRlcyBhcmUgbmV2ZXIgY29uc3VsdGVkLiBJbiBkZXZlbG9wbWVudCwgdGhlXG4gKiBmdWxsIG92ZXJyaWRlIHdvcmtmbG93IGlzIGF2YWlsYWJsZS5cbiAqXG4gKiBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IGNvZGUgdGhhdCBkZXBlbmRzIG9uIHRoZSBpbXBvcnQgbWFwIGZ1bmN0aW9ucy5cbiAqLyBsZXQgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbmV4cG9ydCBmdW5jdGlvbiBzZXR1cEltcG9ydE1hcE92ZXJyaWRlcygpIHtcbiAgICBpZiAoaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpbml0aWFsaXplZCA9IHRydWU7XG4gICAgZGV2TW9kZSA9IHdpbmRvdy5zcGFFbnYgPT09ICdkZXZlbG9wbWVudCc7XG4gICAgaWYgKGRldk1vZGUpIHtcbiAgICAgICAgaW5pdGlhbE92ZXJyaWRlU25hcHNob3QgPSByZWFkT3ZlcnJpZGVNYXAoKTtcbiAgICB9XG59XG4iXSwibmFtZXMiOlsiT1ZFUlJJREVfUFJFRklYIiwiRElTQUJMRURfS0VZIiwiQ0hBTkdFX0VWRU5UIiwiZGV2TW9kZSIsImluaXRpYWxPdmVycmlkZVNuYXBzaG90IiwicmVhZEJhc2VNYXAiLCJzY3JpcHRzIiwibWFwcyIsImkiLCJzY3JpcHQiLCJyZXNwb25zZSIsImUiLCJkb2N1bWVudCIsImZldGNoIiwiSlNPTiIsImNvbnNvbGUiLCJtZXJnZU1hcHMiLCJtZXJnZWQiLCJfaXRlcmF0b3JFcnJvciIsIm1hcCIsIk9iamVjdCIsInJlYWRPdmVycmlkZU1hcCIsImltcG9ydHMiLCJkaXNhYmxlZCIsImdldEltcG9ydE1hcERpc2FibGVkT3ZlcnJpZGVzIiwibG9jYWxTdG9yYWdlIiwia2V5IiwibW9kdWxlTmFtZSIsInVybCIsImdldEN1cnJlbnRQYWdlTWFwIiwiYmFzZSIsIm92ZXJyaWRlcyIsImdldEltcG9ydE1hcERlZmF1bHRNYXAiLCJnZXRJbXBvcnRNYXBOZXh0UGFnZU1hcCIsImdldEltcG9ydE1hcE92ZXJyaWRlTWFwIiwiaW5jbHVkZURpc2FibGVkIiwicmF3IiwicGFyc2VkIiwiQXJyYXkiLCJpc0ltcG9ydE1hcE92ZXJyaWRlRGlzYWJsZWQiLCJhZGRJbXBvcnRNYXBPdmVycmlkZSIsIm5hbWUiLCJ3aW5kb3ciLCJDdXN0b21FdmVudCIsInJlbW92ZUltcG9ydE1hcE92ZXJyaWRlIiwibiIsInJlc2V0SW1wb3J0TWFwT3ZlcnJpZGVzIiwia2V5c1RvUmVtb3ZlIiwiZW5hYmxlSW1wb3J0TWFwT3ZlcnJpZGUiLCJpbml0aWFsaXplZCIsInNldHVwSW1wb3J0TWFwT3ZlcnJpZGVzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUNBQWlDLEdBQUcsSUFB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\n//# sourceURL=webpack-internal:///../../framework/esm-dynamic-loading/dist/import-maps.js\n\n}");
5623
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n addImportMapOverride: () => (addImportMapOverride),\n enableImportMapOverride: () => (enableImportMapOverride),\n getCurrentPageMap: () => (getCurrentPageMap),\n getImportMapDefaultMap: () => (getImportMapDefaultMap),\n getImportMapDisabledOverrides: () => (getImportMapDisabledOverrides),\n getImportMapNextPageMap: () => (getImportMapNextPageMap),\n getImportMapOverrideMap: () => (getImportMapOverrideMap),\n isImportMapOverrideDisabled: () => (isImportMapOverrideDisabled),\n removeImportMapOverride: () => (removeImportMapOverride),\n resetImportMapOverrides: () => (resetImportMapOverrides),\n setupImportMapOverrides: () => (setupImportMapOverrides)\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}\n/** @module @category Import Map */ var OVERRIDE_PREFIX = 'import-map-override:';\nvar DISABLED_KEY = 'import-map-overrides-disabled';\nvar CHANGE_EVENT = 'import-map-overrides:change';\n// Set by setupImportMapOverrides(); controls whether override functionality is active.\nvar devMode = false;\n// Snapshot of overrides at setup time (matches import-map-overrides library behavior:\n// getCurrentPageMap returns the overrides as they were when the page loaded).\nvar initialOverrideSnapshot = null;\n// Memoizes the base map so that the import map is fetched at most once per page load.\nvar baseMapPromise = null;\n/**\n * Reads all `<script type=\"systemjs-importmap\">` tags from the DOM and merges\n * them into a single {@link ImportMap}. Tags with a `src` attribute are fetched;\n * inline tags have their `textContent` parsed as JSON.\n *\n * A read in which every tag was parsed successfully is cached and reused by all later\n * callers. A read that lost one or more tags to an error is returned as-is but not cached, so\n * that a transient network failure doesn't leave the page with a permanently incomplete map.\n */ function readBaseMap() {\n return _async_to_generator(function() {\n return _ts_generator(this, function(_state) {\n baseMapPromise !== null && baseMapPromise !== void 0 ? baseMapPromise : baseMapPromise = loadBaseMap().then(function(param) {\n var map = param.map, complete = param.complete;\n if (!complete) {\n baseMapPromise = null;\n }\n return map;\n });\n return [\n 2,\n baseMapPromise\n ];\n });\n })();\n}\nfunction loadBaseMap() {\n return _async_to_generator(function() {\n var scripts, maps, complete, i, script, response, _, e;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n scripts = document.querySelectorAll('script[type=\"systemjs-importmap\"]');\n maps = [];\n complete = true;\n i = 0;\n _state.label = 1;\n case 1:\n if (!(i < scripts.length)) return [\n 3,\n 9\n ];\n script = scripts[i];\n _state.label = 2;\n case 2:\n _state.trys.push([\n 2,\n 7,\n ,\n 8\n ]);\n if (!script.src) return [\n 3,\n 5\n ];\n return [\n 4,\n fetch(script.src)\n ];\n case 3:\n response = _state.sent();\n if (!response.ok) {\n throw new Error(\"Request for \".concat(script.src, \" returned \").concat(response.status, \" \").concat(response.statusText));\n }\n _ = maps.push;\n return [\n 4,\n response.json()\n ];\n case 4:\n _.apply(maps, [\n _state.sent()\n ]);\n return [\n 3,\n 6\n ];\n case 5:\n if (script.textContent) {\n maps.push(JSON.parse(script.textContent));\n }\n _state.label = 6;\n case 6:\n return [\n 3,\n 8\n ];\n case 7:\n e = _state.sent();\n complete = false;\n console.warn(\"[import-maps] Failed to parse import map from script tag at index \".concat(i), e);\n return [\n 3,\n 8\n ];\n case 8:\n i++;\n return [\n 3,\n 1\n ];\n case 9:\n return [\n 2,\n {\n map: mergeMaps(maps),\n complete: complete\n }\n ];\n }\n });\n })();\n}\nfunction mergeMaps(maps) {\n var merged = {\n imports: {}\n };\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = maps[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var map = _step.value;\n if (map === null || map === void 0 ? void 0 : map.imports) {\n Object.assign(merged.imports, map.imports);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return merged;\n}\n/** Returns all `import-map-override:*` entries from localStorage as an {@link ImportMap}. */ function readOverrideMap() {\n var imports = {};\n try {\n var disabled = getImportMapDisabledOverrides();\n for(var i = 0; i < localStorage.length; i++){\n var key = localStorage.key(i);\n if (key === null || key === void 0 ? void 0 : key.startsWith(OVERRIDE_PREFIX)) {\n var moduleName = key.slice(OVERRIDE_PREFIX.length);\n if (!disabled.includes(moduleName)) {\n var url = localStorage.getItem(key);\n if (url) {\n imports[moduleName] = url;\n }\n }\n }\n }\n } catch (e) {\n console.warn('[import-maps] Failed to read import-map overrides from localStorage', e);\n }\n return {\n imports: imports\n };\n}\n/**\n * Returns the import map for the current page. In dev mode, this merges\n * the base map with the override snapshot captured at page load.\n */ function getCurrentPageMap() {\n return _async_to_generator(function() {\n var base, overrides;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n readBaseMap()\n ];\n case 1:\n base = _state.sent();\n if (!devMode) {\n return [\n 2,\n base\n ];\n }\n overrides = initialOverrideSnapshot !== null && initialOverrideSnapshot !== void 0 ? initialOverrideSnapshot : readOverrideMap();\n return [\n 2,\n mergeMaps([\n base,\n overrides\n ])\n ];\n }\n });\n })();\n}\n/**\n * Returns the base import map from the DOM without any overrides applied.\n */ function getImportMapDefaultMap() {\n return _async_to_generator(function() {\n return _ts_generator(this, function(_state) {\n return [\n 2,\n readBaseMap()\n ];\n });\n })();\n}\n/**\n * Returns what the import map will look like on the next page load, including\n * any overrides that have been added/removed since the page loaded.\n * In production, this is the same as the base map.\n */ function getImportMapNextPageMap() {\n return _async_to_generator(function() {\n var base;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n if (!devMode) {\n return [\n 2,\n readBaseMap()\n ];\n }\n return [\n 4,\n readBaseMap()\n ];\n case 1:\n base = _state.sent();\n return [\n 2,\n mergeMaps([\n base,\n readOverrideMap()\n ])\n ];\n }\n });\n })();\n}\n/**\n * Returns the current override map. In production, returns empty imports.\n * @param includeDisabled If true, includes disabled overrides.\n */ function getImportMapOverrideMap(includeDisabled) {\n if (!devMode) {\n return {\n imports: {}\n };\n }\n if (includeDisabled) {\n var imports = {};\n for(var i = 0; i < localStorage.length; i++){\n var key = localStorage.key(i);\n if (key === null || key === void 0 ? void 0 : key.startsWith(OVERRIDE_PREFIX)) {\n var url = localStorage.getItem(key);\n if (url) {\n imports[key.slice(OVERRIDE_PREFIX.length)] = url;\n }\n }\n }\n return {\n imports: imports\n };\n }\n return readOverrideMap();\n}\n/**\n * Returns the list of module names whose overrides are disabled.\n * In production, returns an empty array.\n */ function getImportMapDisabledOverrides() {\n if (!devMode) {\n return [];\n }\n try {\n var raw = localStorage.getItem(DISABLED_KEY);\n if (raw) {\n var parsed = JSON.parse(raw);\n if (Array.isArray(parsed)) {\n return parsed;\n }\n }\n } catch (unused) {\n // ignore malformed data\n }\n return [];\n}\n/**\n * Returns whether the given module's override is disabled.\n * In production, returns false.\n */ function isImportMapOverrideDisabled(moduleName) {\n if (!devMode) {\n return false;\n }\n return getImportMapDisabledOverrides().includes(moduleName);\n}\n/**\n * Adds an import map override. In production, this is a no-op.\n */ function addImportMapOverride(name, url) {\n if (!devMode) {\n console.warn('[Security] Import map overrides are disabled in production mode.');\n return;\n }\n try {\n localStorage.setItem(OVERRIDE_PREFIX + name, url);\n window.dispatchEvent(new CustomEvent(CHANGE_EVENT));\n } catch (e) {\n console.warn('[import-maps] Failed to write import-map override to localStorage', e);\n }\n}\n/**\n * Removes an import map override. In production, this is a no-op.\n */ function removeImportMapOverride(name) {\n if (!devMode) {\n console.warn('[Security] Import map overrides are disabled in production mode.');\n return;\n }\n try {\n localStorage.removeItem(OVERRIDE_PREFIX + name);\n var disabled = getImportMapDisabledOverrides().filter(function(n) {\n return n !== name;\n });\n if (disabled.length > 0) {\n localStorage.setItem(DISABLED_KEY, JSON.stringify(disabled));\n } else {\n localStorage.removeItem(DISABLED_KEY);\n }\n window.dispatchEvent(new CustomEvent(CHANGE_EVENT));\n } catch (e) {\n console.warn('[import-maps] Failed to update import-map overrides in localStorage', e);\n }\n}\n/**\n * Clears all import map overrides. In production, this is a no-op.\n */ function resetImportMapOverrides() {\n if (!devMode) {\n console.warn('[Security] Import map overrides are disabled in production mode.');\n return;\n }\n try {\n var keysToRemove = [];\n for(var i = 0; i < localStorage.length; i++){\n var key = localStorage.key(i);\n if (key === null || key === void 0 ? void 0 : key.startsWith(OVERRIDE_PREFIX)) {\n keysToRemove.push(key);\n }\n }\n keysToRemove.forEach(function(key) {\n return localStorage.removeItem(key);\n });\n localStorage.removeItem(DISABLED_KEY);\n window.dispatchEvent(new CustomEvent(CHANGE_EVENT));\n } catch (e) {\n console.warn('[import-maps] Failed to clear import-map overrides from localStorage', e);\n }\n}\n/**\n * Re-enables a previously disabled import map override. In production, this is a no-op.\n */ function enableImportMapOverride(name) {\n if (!devMode) {\n console.warn('[Security] Import map overrides are disabled in production mode.');\n return;\n }\n try {\n var disabled = getImportMapDisabledOverrides().filter(function(n) {\n return n !== name;\n });\n if (disabled.length > 0) {\n localStorage.setItem(DISABLED_KEY, JSON.stringify(disabled));\n } else {\n localStorage.removeItem(DISABLED_KEY);\n }\n window.dispatchEvent(new CustomEvent(CHANGE_EVENT));\n } catch (e) {\n console.warn('[import-maps] Failed to update import-map overrides in localStorage', e);\n }\n}\n/**\n * Initializes the import map override system with mode-aware behavior.\n *\n * In production (`window.spaEnv !== 'development'`), mutation functions are\n * no-ops and localStorage overrides are never consulted. In development, the\n * full override workflow is available.\n *\n * Must be called before any code that depends on the import map functions.\n */ var initialized = false;\nfunction setupImportMapOverrides() {\n if (initialized) {\n return;\n }\n initialized = true;\n devMode = window.spaEnv === 'development';\n if (devMode) {\n initialOverrideSnapshot = readOverrideMap();\n }\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLWR5bmFtaWMtbG9hZGluZy9kaXN0L2ltcG9ydC1tYXBzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWR5bmFtaWMtbG9hZGluZy9kaXN0L2ltcG9ydC1tYXBzLmpzP2I2ZTIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IEltcG9ydCBNYXAgKi8gY29uc3QgT1ZFUlJJREVfUFJFRklYID0gJ2ltcG9ydC1tYXAtb3ZlcnJpZGU6JztcbmNvbnN0IERJU0FCTEVEX0tFWSA9ICdpbXBvcnQtbWFwLW92ZXJyaWRlcy1kaXNhYmxlZCc7XG5jb25zdCBDSEFOR0VfRVZFTlQgPSAnaW1wb3J0LW1hcC1vdmVycmlkZXM6Y2hhbmdlJztcbi8vIFNldCBieSBzZXR1cEltcG9ydE1hcE92ZXJyaWRlcygpOyBjb250cm9scyB3aGV0aGVyIG92ZXJyaWRlIGZ1bmN0aW9uYWxpdHkgaXMgYWN0aXZlLlxubGV0IGRldk1vZGUgPSBmYWxzZTtcbi8vIFNuYXBzaG90IG9mIG92ZXJyaWRlcyBhdCBzZXR1cCB0aW1lIChtYXRjaGVzIGltcG9ydC1tYXAtb3ZlcnJpZGVzIGxpYnJhcnkgYmVoYXZpb3I6XG4vLyBnZXRDdXJyZW50UGFnZU1hcCByZXR1cm5zIHRoZSBvdmVycmlkZXMgYXMgdGhleSB3ZXJlIHdoZW4gdGhlIHBhZ2UgbG9hZGVkKS5cbmxldCBpbml0aWFsT3ZlcnJpZGVTbmFwc2hvdCA9IG51bGw7XG4vLyBNZW1vaXplcyB0aGUgYmFzZSBtYXAgc28gdGhhdCB0aGUgaW1wb3J0IG1hcCBpcyBmZXRjaGVkIGF0IG1vc3Qgb25jZSBwZXIgcGFnZSBsb2FkLlxubGV0IGJhc2VNYXBQcm9taXNlID0gbnVsbDtcbi8qKlxuICogUmVhZHMgYWxsIGA8c2NyaXB0IHR5cGU9XCJzeXN0ZW1qcy1pbXBvcnRtYXBcIj5gIHRhZ3MgZnJvbSB0aGUgRE9NIGFuZCBtZXJnZXNcbiAqIHRoZW0gaW50byBhIHNpbmdsZSB7QGxpbmsgSW1wb3J0TWFwfS4gVGFncyB3aXRoIGEgYHNyY2AgYXR0cmlidXRlIGFyZSBmZXRjaGVkO1xuICogaW5saW5lIHRhZ3MgaGF2ZSB0aGVpciBgdGV4dENvbnRlbnRgIHBhcnNlZCBhcyBKU09OLlxuICpcbiAqIEEgcmVhZCBpbiB3aGljaCBldmVyeSB0YWcgd2FzIHBhcnNlZCBzdWNjZXNzZnVsbHkgaXMgY2FjaGVkIGFuZCByZXVzZWQgYnkgYWxsIGxhdGVyXG4gKiBjYWxsZXJzLiBBIHJlYWQgdGhhdCBsb3N0IG9uZSBvciBtb3JlIHRhZ3MgdG8gYW4gZXJyb3IgaXMgcmV0dXJuZWQgYXMtaXMgYnV0IG5vdCBjYWNoZWQsIHNvXG4gKiB0aGF0IGEgdHJhbnNpZW50IG5ldHdvcmsgZmFpbHVyZSBkb2Vzbid0IGxlYXZlIHRoZSBwYWdlIHdpdGggYSBwZXJtYW5lbnRseSBpbmNvbXBsZXRlIG1hcC5cbiAqLyBhc3luYyBmdW5jdGlvbiByZWFkQmFzZU1hcCgpIHtcbiAgICBiYXNlTWFwUHJvbWlzZSA/PyAoYmFzZU1hcFByb21pc2UgPSBsb2FkQmFzZU1hcCgpLnRoZW4oKHsgbWFwLCBjb21wbGV0ZSB9KT0+e1xuICAgICAgICBpZiAoIWNvbXBsZXRlKSB7XG4gICAgICAgICAgICBiYXNlTWFwUHJvbWlzZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICB9KSk7XG4gICAgcmV0dXJuIGJhc2VNYXBQcm9taXNlO1xufVxuYXN5bmMgZnVuY3Rpb24gbG9hZEJhc2VNYXAoKSB7XG4gICAgY29uc3Qgc2NyaXB0cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NjcmlwdFt0eXBlPVwic3lzdGVtanMtaW1wb3J0bWFwXCJdJyk7XG4gICAgY29uc3QgbWFwcyA9IFtdO1xuICAgIGxldCBjb21wbGV0ZSA9IHRydWU7XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyBpKyspe1xuICAgICAgICBjb25zdCBzY3JpcHQgPSBzY3JpcHRzW2ldO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHNjcmlwdC5zcmMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHNjcmlwdC5zcmMpO1xuICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZXF1ZXN0IGZvciAke3NjcmlwdC5zcmN9IHJldHVybmVkICR7cmVzcG9uc2Uuc3RhdHVzfSAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcHMucHVzaChhd2FpdCByZXNwb25zZS5qc29uKCkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzY3JpcHQudGV4dENvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICBtYXBzLnB1c2goSlNPTi5wYXJzZShzY3JpcHQudGV4dENvbnRlbnQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29tcGxldGUgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgW2ltcG9ydC1tYXBzXSBGYWlsZWQgdG8gcGFyc2UgaW1wb3J0IG1hcCBmcm9tIHNjcmlwdCB0YWcgYXQgaW5kZXggJHtpfWAsIGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIG1hcDogbWVyZ2VNYXBzKG1hcHMpLFxuICAgICAgICBjb21wbGV0ZVxuICAgIH07XG59XG5mdW5jdGlvbiBtZXJnZU1hcHMobWFwcykge1xuICAgIGNvbnN0IG1lcmdlZCA9IHtcbiAgICAgICAgaW1wb3J0czoge31cbiAgICB9O1xuICAgIGZvciAoY29uc3QgbWFwIG9mIG1hcHMpe1xuICAgICAgICBpZiAobWFwPy5pbXBvcnRzKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKG1lcmdlZC5pbXBvcnRzLCBtYXAuaW1wb3J0cyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1lcmdlZDtcbn1cbi8qKiBSZXR1cm5zIGFsbCBgaW1wb3J0LW1hcC1vdmVycmlkZToqYCBlbnRyaWVzIGZyb20gbG9jYWxTdG9yYWdlIGFzIGFuIHtAbGluayBJbXBvcnRNYXB9LiAqLyBmdW5jdGlvbiByZWFkT3ZlcnJpZGVNYXAoKSB7XG4gICAgY29uc3QgaW1wb3J0cyA9IHt9O1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGRpc2FibGVkID0gZ2V0SW1wb3J0TWFwRGlzYWJsZWRPdmVycmlkZXMoKTtcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGxvY2FsU3RvcmFnZS5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBsb2NhbFN0b3JhZ2Uua2V5KGkpO1xuICAgICAgICAgICAgaWYgKGtleT8uc3RhcnRzV2l0aChPVkVSUklERV9QUkVGSVgpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbW9kdWxlTmFtZSA9IGtleS5zbGljZShPVkVSUklERV9QUkVGSVgubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBpZiAoIWRpc2FibGVkLmluY2x1ZGVzKG1vZHVsZU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVybCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydHNbbW9kdWxlTmFtZV0gPSB1cmw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW2ltcG9ydC1tYXBzXSBGYWlsZWQgdG8gcmVhZCBpbXBvcnQtbWFwIG92ZXJyaWRlcyBmcm9tIGxvY2FsU3RvcmFnZScsIGUpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBpbXBvcnRzXG4gICAgfTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgaW1wb3J0IG1hcCBmb3IgdGhlIGN1cnJlbnQgcGFnZS4gSW4gZGV2IG1vZGUsIHRoaXMgbWVyZ2VzXG4gKiB0aGUgYmFzZSBtYXAgd2l0aCB0aGUgb3ZlcnJpZGUgc25hcHNob3QgY2FwdHVyZWQgYXQgcGFnZSBsb2FkLlxuICovIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDdXJyZW50UGFnZU1hcCgpIHtcbiAgICBjb25zdCBiYXNlID0gYXdhaXQgcmVhZEJhc2VNYXAoKTtcbiAgICBpZiAoIWRldk1vZGUpIHtcbiAgICAgICAgcmV0dXJuIGJhc2U7XG4gICAgfVxuICAgIGNvbnN0IG92ZXJyaWRlcyA9IGluaXRpYWxPdmVycmlkZVNuYXBzaG90ID8/IHJlYWRPdmVycmlkZU1hcCgpO1xuICAgIHJldHVybiBtZXJnZU1hcHMoW1xuICAgICAgICBiYXNlLFxuICAgICAgICBvdmVycmlkZXNcbiAgICBdKTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgYmFzZSBpbXBvcnQgbWFwIGZyb20gdGhlIERPTSB3aXRob3V0IGFueSBvdmVycmlkZXMgYXBwbGllZC5cbiAqLyBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0SW1wb3J0TWFwRGVmYXVsdE1hcCgpIHtcbiAgICByZXR1cm4gcmVhZEJhc2VNYXAoKTtcbn1cbi8qKlxuICogUmV0dXJucyB3aGF0IHRoZSBpbXBvcnQgbWFwIHdpbGwgbG9vayBsaWtlIG9uIHRoZSBuZXh0IHBhZ2UgbG9hZCwgaW5jbHVkaW5nXG4gKiBhbnkgb3ZlcnJpZGVzIHRoYXQgaGF2ZSBiZWVuIGFkZGVkL3JlbW92ZWQgc2luY2UgdGhlIHBhZ2UgbG9hZGVkLlxuICogSW4gcHJvZHVjdGlvbiwgdGhpcyBpcyB0aGUgc2FtZSBhcyB0aGUgYmFzZSBtYXAuXG4gKi8gZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEltcG9ydE1hcE5leHRQYWdlTWFwKCkge1xuICAgIGlmICghZGV2TW9kZSkge1xuICAgICAgICByZXR1cm4gcmVhZEJhc2VNYXAoKTtcbiAgICB9XG4gICAgY29uc3QgYmFzZSA9IGF3YWl0IHJlYWRCYXNlTWFwKCk7XG4gICAgcmV0dXJuIG1lcmdlTWFwcyhbXG4gICAgICAgIGJhc2UsXG4gICAgICAgIHJlYWRPdmVycmlkZU1hcCgpXG4gICAgXSk7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIGN1cnJlbnQgb3ZlcnJpZGUgbWFwLiBJbiBwcm9kdWN0aW9uLCByZXR1cm5zIGVtcHR5IGltcG9ydHMuXG4gKiBAcGFyYW0gaW5jbHVkZURpc2FibGVkIElmIHRydWUsIGluY2x1ZGVzIGRpc2FibGVkIG92ZXJyaWRlcy5cbiAqLyBleHBvcnQgZnVuY3Rpb24gZ2V0SW1wb3J0TWFwT3ZlcnJpZGVNYXAoaW5jbHVkZURpc2FibGVkKSB7XG4gICAgaWYgKCFkZXZNb2RlKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbXBvcnRzOiB7fVxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAoaW5jbHVkZURpc2FibGVkKSB7XG4gICAgICAgIGNvbnN0IGltcG9ydHMgPSB7fTtcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGxvY2FsU3RvcmFnZS5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBsb2NhbFN0b3JhZ2Uua2V5KGkpO1xuICAgICAgICAgICAgaWYgKGtleT8uc3RhcnRzV2l0aChPVkVSUklERV9QUkVGSVgpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXJsID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcbiAgICAgICAgICAgICAgICBpZiAodXJsKSB7XG4gICAgICAgICAgICAgICAgICAgIGltcG9ydHNba2V5LnNsaWNlKE9WRVJSSURFX1BSRUZJWC5sZW5ndGgpXSA9IHVybDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltcG9ydHNcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHJlYWRPdmVycmlkZU1hcCgpO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBsaXN0IG9mIG1vZHVsZSBuYW1lcyB3aG9zZSBvdmVycmlkZXMgYXJlIGRpc2FibGVkLlxuICogSW4gcHJvZHVjdGlvbiwgcmV0dXJucyBhbiBlbXB0eSBhcnJheS5cbiAqLyBleHBvcnQgZnVuY3Rpb24gZ2V0SW1wb3J0TWFwRGlzYWJsZWRPdmVycmlkZXMoKSB7XG4gICAgaWYgKCFkZXZNb2RlKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmF3ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oRElTQUJMRURfS0VZKTtcbiAgICAgICAgaWYgKHJhdykge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShyYXcpO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGFyc2VkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGNhdGNoICB7XG4gICAgLy8gaWdub3JlIG1hbGZvcm1lZCBkYXRhXG4gICAgfVxuICAgIHJldHVybiBbXTtcbn1cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIHRoZSBnaXZlbiBtb2R1bGUncyBvdmVycmlkZSBpcyBkaXNhYmxlZC5cbiAqIEluIHByb2R1Y3Rpb24sIHJldHVybnMgZmFsc2UuXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGlzSW1wb3J0TWFwT3ZlcnJpZGVEaXNhYmxlZChtb2R1bGVOYW1lKSB7XG4gICAgaWYgKCFkZXZNb2RlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGdldEltcG9ydE1hcERpc2FibGVkT3ZlcnJpZGVzKCkuaW5jbHVkZXMobW9kdWxlTmFtZSk7XG59XG4vKipcbiAqIEFkZHMgYW4gaW1wb3J0IG1hcCBvdmVycmlkZS4gSW4gcHJvZHVjdGlvbiwgdGhpcyBpcyBhIG5vLW9wLlxuICovIGV4cG9ydCBmdW5jdGlvbiBhZGRJbXBvcnRNYXBPdmVycmlkZShuYW1lLCB1cmwpIHtcbiAgICBpZiAoIWRldk1vZGUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdbU2VjdXJpdHldIEltcG9ydCBtYXAgb3ZlcnJpZGVzIGFyZSBkaXNhYmxlZCBpbiBwcm9kdWN0aW9uIG1vZGUuJyk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oT1ZFUlJJREVfUFJFRklYICsgbmFtZSwgdXJsKTtcbiAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KENIQU5HRV9FVkVOVCkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdbaW1wb3J0LW1hcHNdIEZhaWxlZCB0byB3cml0ZSBpbXBvcnQtbWFwIG92ZXJyaWRlIHRvIGxvY2FsU3RvcmFnZScsIGUpO1xuICAgIH1cbn1cbi8qKlxuICogUmVtb3ZlcyBhbiBpbXBvcnQgbWFwIG92ZXJyaWRlLiBJbiBwcm9kdWN0aW9uLCB0aGlzIGlzIGEgbm8tb3AuXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUltcG9ydE1hcE92ZXJyaWRlKG5hbWUpIHtcbiAgICBpZiAoIWRldk1vZGUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdbU2VjdXJpdHldIEltcG9ydCBtYXAgb3ZlcnJpZGVzIGFyZSBkaXNhYmxlZCBpbiBwcm9kdWN0aW9uIG1vZGUuJyk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oT1ZFUlJJREVfUFJFRklYICsgbmFtZSk7XG4gICAgICAgIGNvbnN0IGRpc2FibGVkID0gZ2V0SW1wb3J0TWFwRGlzYWJsZWRPdmVycmlkZXMoKS5maWx0ZXIoKG4pPT5uICE9PSBuYW1lKTtcbiAgICAgICAgaWYgKGRpc2FibGVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKERJU0FCTEVEX0tFWSwgSlNPTi5zdHJpbmdpZnkoZGlzYWJsZWQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKERJU0FCTEVEX0tFWSk7XG4gICAgICAgIH1cbiAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KENIQU5HRV9FVkVOVCkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdbaW1wb3J0LW1hcHNdIEZhaWxlZCB0byB1cGRhdGUgaW1wb3J0LW1hcCBvdmVycmlkZXMgaW4gbG9jYWxTdG9yYWdlJywgZSk7XG4gICAgfVxufVxuLyoqXG4gKiBDbGVhcnMgYWxsIGltcG9ydCBtYXAgb3ZlcnJpZGVzLiBJbiBwcm9kdWN0aW9uLCB0aGlzIGlzIGEgbm8tb3AuXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHJlc2V0SW1wb3J0TWFwT3ZlcnJpZGVzKCkge1xuICAgIGlmICghZGV2TW9kZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tTZWN1cml0eV0gSW1wb3J0IG1hcCBvdmVycmlkZXMgYXJlIGRpc2FibGVkIGluIHByb2R1Y3Rpb24gbW9kZS4nKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBjb25zdCBrZXlzVG9SZW1vdmUgPSBbXTtcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGxvY2FsU3RvcmFnZS5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBsb2NhbFN0b3JhZ2Uua2V5KGkpO1xuICAgICAgICAgICAgaWYgKGtleT8uc3RhcnRzV2l0aChPVkVSUklERV9QUkVGSVgpKSB7XG4gICAgICAgICAgICAgICAga2V5c1RvUmVtb3ZlLnB1c2goa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBrZXlzVG9SZW1vdmUuZm9yRWFjaCgoa2V5KT0+bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KSk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKERJU0FCTEVEX0tFWSk7XG4gICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChDSEFOR0VfRVZFTlQpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW2ltcG9ydC1tYXBzXSBGYWlsZWQgdG8gY2xlYXIgaW1wb3J0LW1hcCBvdmVycmlkZXMgZnJvbSBsb2NhbFN0b3JhZ2UnLCBlKTtcbiAgICB9XG59XG4vKipcbiAqIFJlLWVuYWJsZXMgYSBwcmV2aW91c2x5IGRpc2FibGVkIGltcG9ydCBtYXAgb3ZlcnJpZGUuIEluIHByb2R1Y3Rpb24sIHRoaXMgaXMgYSBuby1vcC5cbiAqLyBleHBvcnQgZnVuY3Rpb24gZW5hYmxlSW1wb3J0TWFwT3ZlcnJpZGUobmFtZSkge1xuICAgIGlmICghZGV2TW9kZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tTZWN1cml0eV0gSW1wb3J0IG1hcCBvdmVycmlkZXMgYXJlIGRpc2FibGVkIGluIHByb2R1Y3Rpb24gbW9kZS4nKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBjb25zdCBkaXNhYmxlZCA9IGdldEltcG9ydE1hcERpc2FibGVkT3ZlcnJpZGVzKCkuZmlsdGVyKChuKT0+biAhPT0gbmFtZSk7XG4gICAgICAgIGlmIChkaXNhYmxlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShESVNBQkxFRF9LRVksIEpTT04uc3RyaW5naWZ5KGRpc2FibGVkKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShESVNBQkxFRF9LRVkpO1xuICAgICAgICB9XG4gICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChDSEFOR0VfRVZFTlQpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW2ltcG9ydC1tYXBzXSBGYWlsZWQgdG8gdXBkYXRlIGltcG9ydC1tYXAgb3ZlcnJpZGVzIGluIGxvY2FsU3RvcmFnZScsIGUpO1xuICAgIH1cbn1cbi8qKlxuICogSW5pdGlhbGl6ZXMgdGhlIGltcG9ydCBtYXAgb3ZlcnJpZGUgc3lzdGVtIHdpdGggbW9kZS1hd2FyZSBiZWhhdmlvci5cbiAqXG4gKiBJbiBwcm9kdWN0aW9uIChgd2luZG93LnNwYUVudiAhPT0gJ2RldmVsb3BtZW50J2ApLCBtdXRhdGlvbiBmdW5jdGlvbnMgYXJlXG4gKiBuby1vcHMgYW5kIGxvY2FsU3RvcmFnZSBvdmVycmlkZXMgYXJlIG5ldmVyIGNvbnN1bHRlZC4gSW4gZGV2ZWxvcG1lbnQsIHRoZVxuICogZnVsbCBvdmVycmlkZSB3b3JrZmxvdyBpcyBhdmFpbGFibGUuXG4gKlxuICogTXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBjb2RlIHRoYXQgZGVwZW5kcyBvbiB0aGUgaW1wb3J0IG1hcCBmdW5jdGlvbnMuXG4gKi8gbGV0IGluaXRpYWxpemVkID0gZmFsc2U7XG5leHBvcnQgZnVuY3Rpb24gc2V0dXBJbXBvcnRNYXBPdmVycmlkZXMoKSB7XG4gICAgaWYgKGluaXRpYWxpemVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIGRldk1vZGUgPSB3aW5kb3cuc3BhRW52ID09PSAnZGV2ZWxvcG1lbnQnO1xuICAgIGlmIChkZXZNb2RlKSB7XG4gICAgICAgIGluaXRpYWxPdmVycmlkZVNuYXBzaG90ID0gcmVhZE92ZXJyaWRlTWFwKCk7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbIk9WRVJSSURFX1BSRUZJWCIsIkRJU0FCTEVEX0tFWSIsIkNIQU5HRV9FVkVOVCIsImRldk1vZGUiLCJpbml0aWFsT3ZlcnJpZGVTbmFwc2hvdCIsImJhc2VNYXBQcm9taXNlIiwicmVhZEJhc2VNYXAiLCJsb2FkQmFzZU1hcCIsIm1hcCIsImNvbXBsZXRlIiwic2NyaXB0cyIsIm1hcHMiLCJpIiwic2NyaXB0IiwicmVzcG9uc2UiLCJlIiwiZG9jdW1lbnQiLCJmZXRjaCIsIkVycm9yIiwiSlNPTiIsImNvbnNvbGUiLCJtZXJnZU1hcHMiLCJtZXJnZWQiLCJfaXRlcmF0b3JFcnJvciIsIk9iamVjdCIsInJlYWRPdmVycmlkZU1hcCIsImltcG9ydHMiLCJkaXNhYmxlZCIsImdldEltcG9ydE1hcERpc2FibGVkT3ZlcnJpZGVzIiwibG9jYWxTdG9yYWdlIiwia2V5IiwibW9kdWxlTmFtZSIsInVybCIsImdldEN1cnJlbnRQYWdlTWFwIiwiYmFzZSIsIm92ZXJyaWRlcyIsImdldEltcG9ydE1hcERlZmF1bHRNYXAiLCJnZXRJbXBvcnRNYXBOZXh0UGFnZU1hcCIsImdldEltcG9ydE1hcE92ZXJyaWRlTWFwIiwiaW5jbHVkZURpc2FibGVkIiwicmF3IiwicGFyc2VkIiwiQXJyYXkiLCJpc0ltcG9ydE1hcE92ZXJyaWRlRGlzYWJsZWQiLCJhZGRJbXBvcnRNYXBPdmVycmlkZSIsIm5hbWUiLCJ3aW5kb3ciLCJDdXN0b21FdmVudCIsInJlbW92ZUltcG9ydE1hcE92ZXJyaWRlIiwibiIsInJlc2V0SW1wb3J0TWFwT3ZlcnJpZGVzIiwia2V5c1RvUmVtb3ZlIiwiZW5hYmxlSW1wb3J0TWFwT3ZlcnJpZGUiLCJpbml0aWFsaXplZCIsInNldHVwSW1wb3J0TWFwT3ZlcnJpZGVzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUNBQWlDLEdBQUcsSUFBTUEsa0JBQWtCO0FBQzVELElBQU1DLGVBQWU7QUFDckIsSUFBTUMsZUFBZTtBQUNyQix1RkFBdUY7QUFDdkYsSUFBSUMsVUFBVTtBQUNkLHNGQUFzRjtBQUN0Riw4RUFBOEU7QUFDOUUsSUFBSUMsMEJBQTBCO0FBQzlCLHNGQUFzRjtBQUN0RixJQUFJQyxpQkFBaUI7QUFDckI7Ozs7Ozs7O0NBUUMsR0FBRyxTQUFlQzs7O1lBQ2ZELDJCQUFBQSw0QkFBQUEsaUJBQW1CQSxpQkFBaUJFLGNBQWMsSUFBSSxDQUFDO29CQUFHQyxZQUFBQSxLQUFLQyxpQkFBQUE7Z0JBQzNELElBQUksQ0FBQ0EsVUFBVTtvQkFDWEosaUJBQWlCO2dCQUNyQjtnQkFDQSxPQUFPRztZQUNYO1lBQ0E7O2dCQUFPSDs7O0lBQ1g7O0FBQ0EsU0FBZUU7O1lBQ0xHLFNBQ0FDLE1BQ0ZGLFVBQ0lHLEdBQ0VDLFFBR1FDLGFBUUxDOzs7O29CQWZQTCxVQUFVTSxTQUFTLGdCQUFnQixDQUFDO29CQUNwQ0w7b0JBQ0ZGLFdBQVc7b0JBQ1BHLElBQUk7Ozt5QkFBR0EsQ0FBQUEsSUFBSUYsUUFBUSxNQUFLOzs7O29CQUN0QkcsU0FBU0gsT0FBTyxDQUFDRSxFQUFFOzs7Ozs7Ozs7eUJBRWpCQyxPQUFPLEdBQUcsRUFBVkE7Ozs7b0JBQ2lCOzt3QkFBTUksTUFBTUosT0FBTyxHQUFHOzs7b0JBQWpDQyxXQUFXO29CQUNqQixJQUFJLENBQUNBLFNBQVMsRUFBRSxFQUFFO3dCQUNkLE1BQU0sSUFBSUksTUFBTyxlQUFxQ0osT0FBdkJELE9BQU8sR0FBRyxFQUFDLGNBQStCQyxPQUFuQkEsU0FBUyxNQUFNLEVBQUMsS0FBdUIsT0FBcEJBLFNBQVMsVUFBVTtvQkFDaEc7d0JBQ0FILEtBQUssSUFBSTtvQkFBQzs7d0JBQU1HLFNBQVMsSUFBSTs7O29CQUE3QkgsUUFBQUE7d0JBQVU7Ozs7Ozs7b0JBQ1AsSUFBSUUsT0FBTyxXQUFXLEVBQUU7d0JBQzNCRixLQUFLLElBQUksQ0FBQ1EsS0FBSyxLQUFLLENBQUNOLE9BQU8sV0FBVztvQkFDM0M7Ozs7Ozs7O29CQUNLRTtvQkFDTE4sV0FBVztvQkFDWFcsUUFBUSxJQUFJLENBQUUscUVBQXNFLE9BQUZSLElBQUtHOzs7Ozs7b0JBZDVESDs7Ozs7O29CQWlCbkM7O3dCQUFPOzRCQUNILEtBQUtTLFVBQVVWOzRCQUNmRixVQUFBQTt3QkFDSjs7OztJQUNKOztBQUNBLFNBQVNZLFVBQVVWLElBQUk7SUFDbkIsSUFBTVcsU0FBUztRQUNYLFNBQVMsQ0FBQztJQUNkO1FBQ0tDLGtDQUFBQSwyQkFBQUE7O1FBQUwsUUFBS0EsWUFBYVoseUJBQWJZLFNBQUFBLDZCQUFBQSxRQUFBQSx5QkFBQUEsaUNBQWtCO1lBQWxCQSxJQUFNZixNQUFOZTtZQUNELElBQUlmLGdCQUFBQSwwQkFBQUEsSUFBSyxPQUFPLEVBQUU7Z0JBQ2RnQixPQUFPLE1BQU0sQ0FBQ0YsT0FBTyxPQUFPLEVBQUVkLElBQUksT0FBTztZQUM3QztRQUNKOztRQUpLZTtRQUFBQTs7O2lCQUFBQSw2QkFBQUE7Z0JBQUFBOzs7Z0JBQUFBO3NCQUFBQTs7OztJQUtMLE9BQU9EO0FBQ1g7QUFDQSwyRkFBMkYsR0FBRyxTQUFTRztJQUNuRyxJQUFNQyxVQUFVLENBQUM7SUFDakIsSUFBSTtRQUNBLElBQU1DLFdBQVdDO1FBQ2pCLElBQUksSUFBSWhCLElBQUksR0FBR0EsSUFBSWlCLGFBQWEsTUFBTSxFQUFFakIsSUFBSTtZQUN4QyxJQUFNa0IsTUFBTUQsYUFBYSxHQUFHLENBQUNqQjtZQUM3QixJQUFJa0IsZ0JBQUFBLDBCQUFBQSxJQUFLLFVBQVUsQ0FBQzlCLGtCQUFrQjtnQkFDbEMsSUFBTStCLGFBQWFELElBQUksS0FBSyxDQUFDOUIsZ0JBQWdCLE1BQU07Z0JBQ25ELElBQUksQ0FBQzJCLFNBQVMsUUFBUSxDQUFDSSxhQUFhO29CQUNoQyxJQUFNQyxNQUFNSCxhQUFhLE9BQU8sQ0FBQ0M7b0JBQ2pDLElBQUlFLEtBQUs7d0JBQ0xOLE9BQU8sQ0FBQ0ssV0FBVyxHQUFHQztvQkFDMUI7Z0JBQ0o7WUFDSjtRQUNKO0lBQ0osRUFBRSxPQUFPakIsR0FBRztRQUNSSyxRQUFRLElBQUksQ0FBQyx1RUFBdUVMO0lBQ3hGO0lBQ0EsT0FBTztRQUNIVyxTQUFBQTtJQUNKO0FBQ0o7QUFDQTs7O0NBR0MsR0FBVSxTQUFlTzs7WUFDaEJDLE1BSUFDOzs7O29CQUpPOzt3QkFBTTdCOzs7b0JBQWI0QixPQUFPO29CQUNiLElBQUksQ0FBQy9CLFNBQVM7d0JBQ1Y7OzRCQUFPK0I7O29CQUNYO29CQUNNQyxZQUFZL0Isb0NBQUFBLHFDQUFBQSwwQkFBMkJxQjtvQkFDN0M7O3dCQUFPSjs0QkFDSGE7NEJBQ0FDOzs7OztJQUVSOztBQUNBOztDQUVDLEdBQVUsU0FBZUM7OztZQUN0Qjs7Z0JBQU85Qjs7O0lBQ1g7O0FBQ0E7Ozs7Q0FJQyxHQUFVLFNBQWUrQjs7WUFJaEJIOzs7O29CQUhOLElBQUksQ0FBQy9CLFNBQVM7d0JBQ1Y7OzRCQUFPRzs7b0JBQ1g7b0JBQ2E7O3dCQUFNQTs7O29CQUFiNEIsT0FBTztvQkFDYjs7d0JBQU9iOzRCQUNIYTs0QkFDQVQ7Ozs7O0lBRVI7O0FBQ0E7OztDQUdDLEdBQVUsU0FBU2Esd0JBQXdCQyxlQUFlO0lBQ3ZELElBQUksQ0FBQ3BDLFNBQVM7UUFDVixPQUFPO1lBQ0gsU0FBUyxDQUFDO1FBQ2Q7SUFDSjtJQUNBLElBQUlvQyxpQkFBaUI7UUFDakIsSUFBTWIsVUFBVSxDQUFDO1FBQ2pCLElBQUksSUFBSWQsSUFBSSxHQUFHQSxJQUFJaUIsYUFBYSxNQUFNLEVBQUVqQixJQUFJO1lBQ3hDLElBQU1rQixNQUFNRCxhQUFhLEdBQUcsQ0FBQ2pCO1lBQzdCLElBQUlrQixnQkFBQUEsMEJBQUFBLElBQUssVUFBVSxDQUFDOUIsa0JBQWtCO2dCQUNsQyxJQUFNZ0MsTUFBTUgsYUFBYSxPQUFPLENBQUNDO2dCQUNqQyxJQUFJRSxLQUFLO29CQUNMTixPQUFPLENBQUNJLElBQUksS0FBSyxDQUFDOUIsZ0JBQWdCLE1BQU0sRUFBRSxHQUFHZ0M7Z0JBQ2pEO1lBQ0o7UUFDSjtRQUNBLE9BQU87WUFDSE4sU0FBQUE7UUFDSjtJQUNKO0lBQ0EsT0FBT0Q7QUFDWDtBQUNBOzs7Q0FHQyxHQUFVLFNBQVNHO0lBQ2hCLElBQUksQ0FBQ3pCLFNBQVM7UUFDVixPQUFPLEVBQUU7SUFDYjtJQUNBLElBQUk7UUFDQSxJQUFNcUMsTUFBTVgsYUFBYSxPQUFPLENBQUM1QjtRQUNqQyxJQUFJdUMsS0FBSztZQUNMLElBQU1DLFNBQVN0QixLQUFLLEtBQUssQ0FBQ3FCO1lBQzFCLElBQUlFLE1BQU0sT0FBTyxDQUFDRCxTQUFTO2dCQUN2QixPQUFPQTtZQUNYO1FBQ0o7SUFDSixFQUFFLGVBQU87SUFDVCx3QkFBd0I7SUFDeEI7SUFDQSxPQUFPLEVBQUU7QUFDYjtBQUNBOzs7Q0FHQyxHQUFVLFNBQVNFLDRCQUE0QlosVUFBVTtJQUN0RCxJQUFJLENBQUM1QixTQUFTO1FBQ1YsT0FBTztJQUNYO0lBQ0EsT0FBT3lCLGdDQUFnQyxRQUFRLENBQUNHO0FBQ3BEO0FBQ0E7O0NBRUMsR0FBVSxTQUFTYSxxQkFBcUJDLElBQUksRUFBRWIsR0FBRztJQUM5QyxJQUFJLENBQUM3QixTQUFTO1FBQ1ZpQixRQUFRLElBQUksQ0FBQztRQUNiO0lBQ0o7SUFDQSxJQUFJO1FBQ0FTLGFBQWEsT0FBTyxDQUFDN0Isa0JBQWtCNkMsTUFBTWI7UUFDN0NjLE9BQU8sYUFBYSxDQUFDLElBQUlDLFlBQVk3QztJQUN6QyxFQUFFLE9BQU9hLEdBQUc7UUFDUkssUUFBUSxJQUFJLENBQUMscUVBQXFFTDtJQUN0RjtBQUNKO0FBQ0E7O0NBRUMsR0FBVSxTQUFTaUMsd0JBQXdCSCxJQUFJO0lBQzVDLElBQUksQ0FBQzFDLFNBQVM7UUFDVmlCLFFBQVEsSUFBSSxDQUFDO1FBQ2I7SUFDSjtJQUNBLElBQUk7UUFDQVMsYUFBYSxVQUFVLENBQUM3QixrQkFBa0I2QztRQUMxQyxJQUFNbEIsV0FBV0MsZ0NBQWdDLE1BQU0sQ0FBQyxTQUFDcUI7bUJBQUlBLE1BQU1KOztRQUNuRSxJQUFJbEIsU0FBUyxNQUFNLEdBQUcsR0FBRztZQUNyQkUsYUFBYSxPQUFPLENBQUM1QixjQUFja0IsS0FBSyxTQUFTLENBQUNRO1FBQ3RELE9BQU87WUFDSEUsYUFBYSxVQUFVLENBQUM1QjtRQUM1QjtRQUNBNkMsT0FBTyxhQUFhLENBQUMsSUFBSUMsWUFBWTdDO0lBQ3pDLEVBQUUsT0FBT2EsR0FBRztRQUNSSyxRQUFRLElBQUksQ0FBQyx1RUFBdUVMO0lBQ3hGO0FBQ0o7QUFDQTs7Q0FFQyxHQUFVLFNBQVNtQztJQUNoQixJQUFJLENBQUMvQyxTQUFTO1FBQ1ZpQixRQUFRLElBQUksQ0FBQztRQUNiO0lBQ0o7SUFDQSxJQUFJO1FBQ0EsSUFBTStCLGVBQWUsRUFBRTtRQUN2QixJQUFJLElBQUl2QyxJQUFJLEdBQUdBLElBQUlpQixhQUFhLE1BQU0sRUFBRWpCLElBQUk7WUFDeEMsSUFBTWtCLE1BQU1ELGFBQWEsR0FBRyxDQUFDakI7WUFDN0IsSUFBSWtCLGdCQUFBQSwwQkFBQUEsSUFBSyxVQUFVLENBQUM5QixrQkFBa0I7Z0JBQ2xDbUQsYUFBYSxJQUFJLENBQUNyQjtZQUN0QjtRQUNKO1FBQ0FxQixhQUFhLE9BQU8sQ0FBQyxTQUFDckI7bUJBQU1ELGFBQWEsVUFBVSxDQUFDQzs7UUFDcERELGFBQWEsVUFBVSxDQUFDNUI7UUFDeEI2QyxPQUFPLGFBQWEsQ0FBQyxJQUFJQyxZQUFZN0M7SUFDekMsRUFBRSxPQUFPYSxHQUFHO1FBQ1JLLFFBQVEsSUFBSSxDQUFDLHdFQUF3RUw7SUFDekY7QUFDSjtBQUNBOztDQUVDLEdBQVUsU0FBU3FDLHdCQUF3QlAsSUFBSTtJQUM1QyxJQUFJLENBQUMxQyxTQUFTO1FBQ1ZpQixRQUFRLElBQUksQ0FBQztRQUNiO0lBQ0o7SUFDQSxJQUFJO1FBQ0EsSUFBTU8sV0FBV0MsZ0NBQWdDLE1BQU0sQ0FBQyxTQUFDcUI7bUJBQUlBLE1BQU1KOztRQUNuRSxJQUFJbEIsU0FBUyxNQUFNLEdBQUcsR0FBRztZQUNyQkUsYUFBYSxPQUFPLENBQUM1QixjQUFja0IsS0FBSyxTQUFTLENBQUNRO1FBQ3RELE9BQU87WUFDSEUsYUFBYSxVQUFVLENBQUM1QjtRQUM1QjtRQUNBNkMsT0FBTyxhQUFhLENBQUMsSUFBSUMsWUFBWTdDO0lBQ3pDLEVBQUUsT0FBT2EsR0FBRztRQUNSSyxRQUFRLElBQUksQ0FBQyx1RUFBdUVMO0lBQ3hGO0FBQ0o7QUFDQTs7Ozs7Ozs7Q0FRQyxHQUFHLElBQUlzQyxjQUFjO0FBQ2YsU0FBU0M7SUFDWixJQUFJRCxhQUFhO1FBQ2I7SUFDSjtJQUNBQSxjQUFjO0lBQ2RsRCxVQUFVMkMsT0FBTyxNQUFNLEtBQUs7SUFDNUIsSUFBSTNDLFNBQVM7UUFDVEMsMEJBQTBCcUI7SUFDOUI7QUFDSiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-dynamic-loading/dist/import-maps.js\n\n}");
5624
5624
 
5625
5625
  },
5626
5626
  "../../framework/esm-dynamic-loading/dist/index.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
@@ -5630,7 +5630,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webp
5630
5630
  },
5631
5631
  "../../framework/esm-dynamic-loading/dist/route-maps.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
5632
5632
  "use strict";
5633
- eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n addRouteMapOverride: () => (addRouteMapOverride),\n getCurrentRouteMap: () => (getCurrentRouteMap),\n getRouteMapDefaultMap: () => (getRouteMapDefaultMap),\n getRouteMapNextPageMap: () => (getRouteMapNextPageMap),\n getRouteMapOverrideMap: () => (getRouteMapOverrideMap),\n removeRouteMapOverride: () => (removeRouteMapOverride),\n resetRouteMapOverrides: () => (resetRouteMapOverrides),\n setupRouteMapOverrides: () => (setupRouteMapOverrides)\n});\n/* import */ var _openmrs_esm_globals__rspack_import_0 = __webpack_require__(\"../../framework/esm-globals/dist/index.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 _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}\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/** @module @category Route Map */ \nvar OVERRIDE_PREFIX = 'openmrs-routes:';\nvar CHANGE_EVENT = 'openmrs-routes:change';\n// Set by setupRouteMapOverrides(); controls whether override functionality is active.\nvar devMode = false;\n// Snapshot of overrides at setup time (mirrors the import-map-overrides pattern:\n// getCurrentRouteMap returns the overrides as they were when the page loaded).\nvar initialOverrideSnapshot = null;\n/**\n * Reads all `<script type=\"openmrs-routes\">` tags from the DOM and merges\n * them into a single {@link OpenmrsRoutes} object. Tags with a `src` attribute\n * are fetched; inline tags have their `textContent` parsed as JSON.\n */ function readBaseMap() {\n return _async_to_generator(function() {\n var scripts, maps, i, script, parsed, response, e;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n scripts = document.querySelectorAll(\"script[type='openmrs-routes']\");\n maps = [];\n i = 0;\n _state.label = 1;\n case 1:\n if (!(i < scripts.length)) return [\n 3,\n 9\n ];\n script = scripts[i];\n _state.label = 2;\n case 2:\n _state.trys.push([\n 2,\n 7,\n ,\n 8\n ]);\n parsed = void 0;\n if (!script.src) return [\n 3,\n 5\n ];\n return [\n 4,\n fetch(script.src)\n ];\n case 3:\n response = _state.sent();\n return [\n 4,\n response.json()\n ];\n case 4:\n parsed = _state.sent();\n return [\n 3,\n 6\n ];\n case 5:\n if (script.textContent) {\n parsed = JSON.parse(script.textContent);\n }\n _state.label = 6;\n case 6:\n if (parsed && (0,_openmrs_esm_globals__rspack_import_0.isOpenmrsRoutes)(parsed)) {\n maps.push(parsed);\n }\n return [\n 3,\n 8\n ];\n case 7:\n e = _state.sent();\n console.warn(\"[route-maps] Failed to parse routes from script tag at index \".concat(i), e);\n return [\n 3,\n 8\n ];\n case 8:\n i++;\n return [\n 3,\n 1\n ];\n case 9:\n return [\n 2,\n mergeRouteMaps(maps)\n ];\n }\n });\n })();\n}\nfunction mergeRouteMaps(maps) {\n var merged = {\n routes: {}\n };\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = maps[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var map = _step.value;\n if (map && (typeof map === \"undefined\" ? \"undefined\" : _type_of(map)) === 'object' && !Array.isArray(map)) {\n Object.assign(merged.routes, map.routes);\n if (merged.version === undefined && map.version !== undefined) {\n merged.version = map.version;\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return merged;\n}\n/**\n * Reads all `openmrs-routes:*` entries from localStorage as an {@link OpenmrsRoutes}.\n * This is async because URL-valued overrides need to be fetched.\n */ function readOverrideMap() {\n return _async_to_generator(function() {\n var result, entries, i, key, raw, settled, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, entry, e;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n result = {\n version: undefined,\n routes: {}\n };\n _state.label = 1;\n case 1:\n _state.trys.push([\n 1,\n 3,\n ,\n 4\n ]);\n entries = [];\n for(i = 0; i < localStorage.length; i++){\n key = localStorage.key(i);\n if (key === null || key === void 0 ? void 0 : key.startsWith(OVERRIDE_PREFIX)) {\n raw = localStorage.getItem(key);\n if (raw) {\n entries.push({\n moduleName: key.slice(OVERRIDE_PREFIX.length),\n raw: raw\n });\n }\n }\n }\n return [\n 4,\n Promise.allSettled(entries.map(function(param) {\n var moduleName = param.moduleName, raw = param.raw;\n return _async_to_generator(function() {\n var parsed, response, fetched;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n parsed = JSON.parse(raw);\n if ((0,_openmrs_esm_globals__rspack_import_0.isOpenmrsAppRoutes)(parsed)) {\n return [\n 2,\n {\n moduleName: moduleName,\n routes: parsed\n }\n ];\n }\n if (!(typeof parsed === 'string' && parsed.startsWith('http'))) return [\n 3,\n 3\n ];\n return [\n 4,\n fetch(parsed)\n ];\n case 1:\n response = _state.sent();\n return [\n 4,\n response.json()\n ];\n case 2:\n fetched = _state.sent();\n if ((0,_openmrs_esm_globals__rspack_import_0.isOpenmrsAppRoutes)(fetched)) {\n return [\n 2,\n {\n moduleName: moduleName,\n routes: fetched\n }\n ];\n }\n throw new Error(\"\".concat(parsed, \" did not resolve to a valid OpenmrsAppRoutes object\"));\n case 3:\n throw new Error(\"Override for \".concat(moduleName, \" is neither a valid routes object nor a URL\"));\n }\n });\n })();\n }))\n ];\n case 2:\n settled = _state.sent();\n _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(_iterator = settled[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n entry = _step.value;\n if (entry.status === 'fulfilled') {\n result['routes'][entry.value.moduleName] = entry.value.routes;\n } else {\n console.warn('[route-maps] Failed to load route override', entry.reason);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return [\n 3,\n 4\n ];\n case 3:\n e = _state.sent();\n console.warn('[route-maps] Failed to read route overrides from localStorage', e);\n return [\n 3,\n 4\n ];\n case 4:\n return [\n 2,\n result\n ];\n }\n });\n })();\n}\n/**\n * Returns the route map for the current page. In dev mode, this merges\n * the base map with the override snapshot captured at page load.\n */ function getCurrentRouteMap() {\n return _async_to_generator(function() {\n var base, overrides, _tmp;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n readBaseMap()\n ];\n case 1:\n base = _state.sent();\n if (!devMode) {\n return [\n 2,\n base\n ];\n }\n if (!(initialOverrideSnapshot !== null && initialOverrideSnapshot !== void 0)) return [\n 3,\n 2\n ];\n _tmp = initialOverrideSnapshot;\n return [\n 3,\n 4\n ];\n case 2:\n return [\n 4,\n readOverrideMap()\n ];\n case 3:\n _tmp = _state.sent();\n _state.label = 4;\n case 4:\n overrides = _tmp;\n return [\n 2,\n mergeRouteMaps([\n base,\n overrides\n ])\n ];\n }\n });\n })();\n}\n/**\n * Returns the base route map from the DOM without any overrides applied.\n */ function getRouteMapDefaultMap() {\n return _async_to_generator(function() {\n return _ts_generator(this, function(_state) {\n return [\n 2,\n readBaseMap()\n ];\n });\n })();\n}\n/**\n * Returns what the route map will look like on the next page load, including\n * any overrides that have been added/removed since the page loaded.\n * In production, this is the same as the base map.\n */ function getRouteMapNextPageMap() {\n return _async_to_generator(function() {\n var base, _tmp;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n if (!devMode) {\n return [\n 2,\n readBaseMap()\n ];\n }\n return [\n 4,\n readBaseMap()\n ];\n case 1:\n base = _state.sent();\n _tmp = [\n base\n ];\n return [\n 4,\n readOverrideMap()\n ];\n case 2:\n return [\n 2,\n mergeRouteMaps.apply(void 0, [\n _tmp.concat([\n _state.sent()\n ])\n ])\n ];\n }\n });\n })();\n}\n/**\n * Returns the current raw override entries from localStorage.\n * In production, returns an empty object.\n */ function getRouteMapOverrideMap() {\n if (!devMode) {\n return {};\n }\n var result = {};\n try {\n for(var i = 0; i < localStorage.length; i++){\n var key = localStorage.key(i);\n if (key === null || key === void 0 ? void 0 : key.startsWith(OVERRIDE_PREFIX)) {\n var value = localStorage.getItem(key);\n if (value) {\n result[key.slice(OVERRIDE_PREFIX.length)] = value;\n }\n }\n }\n } catch (e) {\n console.warn('[route-maps] Failed to read route overrides from localStorage', e);\n }\n return result;\n}\n/**\n * Adds a route override. In production, this is a no-op.\n * The app must be reloaded for overrides to take effect.\n *\n * @param moduleName The name of the module the routes are for\n * @param routes Either an {@link OpenmrsAppRoutes} object, a string that represents a JSON\n * version of an {@link OpenmrsAppRoutes} object, or a string or URL that resolves to a\n * JSON document that represents an {@link OpenmrsAppRoutes} object\n */ function addRouteMapOverride(moduleName, routes) {\n if (!devMode) {\n console.warn('[Security] Route overrides are disabled outside development mode.');\n return;\n }\n try {\n if (typeof routes === 'string') {\n if (routes.startsWith('http')) {\n localStorage.setItem(OVERRIDE_PREFIX + moduleName, JSON.stringify(routes));\n } else {\n var maybeRoutes = JSON.parse(routes);\n if ((0,_openmrs_esm_globals__rspack_import_0.isOpenmrsAppRoutes)(maybeRoutes)) {\n localStorage.setItem(OVERRIDE_PREFIX + moduleName, JSON.stringify(maybeRoutes));\n } else {\n console.error(\"The supplied routes for \".concat(moduleName, \" is not a valid OpenmrsAppRoutes object\"), routes);\n return;\n }\n }\n } else if (_instanceof(routes, URL)) {\n localStorage.setItem(OVERRIDE_PREFIX + moduleName, JSON.stringify(routes.toString()));\n } else if ((0,_openmrs_esm_globals__rspack_import_0.isOpenmrsAppRoutes)(routes)) {\n localStorage.setItem(OVERRIDE_PREFIX + moduleName, JSON.stringify(routes));\n } else {\n console.error(\"Override for \".concat(moduleName, \" is not in a valid format. Expected either a Javascript Object, a JSON string of a Javascript object, or a URL\"), routes);\n return;\n }\n window.dispatchEvent(new CustomEvent(CHANGE_EVENT));\n } catch (e) {\n console.warn('[route-maps] Failed to write route override to localStorage', e);\n }\n}\n/**\n * Removes a route override. In production, this is a no-op.\n * The app must be reloaded for the removal to take effect.\n *\n * @param moduleName The module to remove the overrides for\n */ function removeRouteMapOverride(moduleName) {\n if (!devMode) {\n console.warn('[Security] Route overrides are disabled outside development mode.');\n return;\n }\n try {\n localStorage.removeItem(OVERRIDE_PREFIX + moduleName);\n window.dispatchEvent(new CustomEvent(CHANGE_EVENT));\n } catch (e) {\n console.warn('[route-maps] Failed to remove route override from localStorage', e);\n }\n}\n/**\n * Clears all route overrides. In production, this is a no-op.\n * The app must be reloaded for the removal to take effect.\n */ function resetRouteMapOverrides() {\n if (!devMode) {\n console.warn('[Security] Route overrides are disabled outside development mode.');\n return;\n }\n try {\n var keysToRemove = [];\n for(var i = 0; i < localStorage.length; i++){\n var key = localStorage.key(i);\n if (key === null || key === void 0 ? void 0 : key.startsWith(OVERRIDE_PREFIX)) {\n keysToRemove.push(key);\n }\n }\n keysToRemove.forEach(function(key) {\n return localStorage.removeItem(key);\n });\n window.dispatchEvent(new CustomEvent(CHANGE_EVENT));\n } catch (e) {\n console.warn('[route-maps] Failed to clear route overrides from localStorage', e);\n }\n}\n/**\n * Initializes the route map override system with mode-aware behavior.\n *\n * In production (`window.spaEnv !== 'development'`), mutation functions are\n * no-ops and localStorage overrides are never consulted. In development, the\n * full override workflow is available.\n *\n * Must be called before any code that depends on the route map functions.\n */ var setupPromise = null;\nfunction setupRouteMapOverrides() {\n if (setupPromise) {\n return setupPromise;\n }\n devMode = window.spaEnv === 'development';\n if (devMode) {\n setupPromise = readOverrideMap().then(function(snapshot) {\n initialOverrideSnapshot = snapshot;\n });\n } else {\n setupPromise = Promise.resolve();\n }\n return setupPromise;\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLWR5bmFtaWMtbG9hZGluZy9kaXN0L3JvdXRlLW1hcHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tZHluYW1pYy1sb2FkaW5nL2Rpc3Qvcm91dGUtbWFwcy5qcz83MzQxIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBSb3V0ZSBNYXAgKi8gaW1wb3J0IHsgaXNPcGVubXJzQXBwUm91dGVzLCBpc09wZW5tcnNSb3V0ZXMgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLWdsb2JhbHNcIjtcbmNvbnN0IE9WRVJSSURFX1BSRUZJWCA9ICdvcGVubXJzLXJvdXRlczonO1xuY29uc3QgQ0hBTkdFX0VWRU5UID0gJ29wZW5tcnMtcm91dGVzOmNoYW5nZSc7XG4vLyBTZXQgYnkgc2V0dXBSb3V0ZU1hcE92ZXJyaWRlcygpOyBjb250cm9scyB3aGV0aGVyIG92ZXJyaWRlIGZ1bmN0aW9uYWxpdHkgaXMgYWN0aXZlLlxubGV0IGRldk1vZGUgPSBmYWxzZTtcbi8vIFNuYXBzaG90IG9mIG92ZXJyaWRlcyBhdCBzZXR1cCB0aW1lIChtaXJyb3JzIHRoZSBpbXBvcnQtbWFwLW92ZXJyaWRlcyBwYXR0ZXJuOlxuLy8gZ2V0Q3VycmVudFJvdXRlTWFwIHJldHVybnMgdGhlIG92ZXJyaWRlcyBhcyB0aGV5IHdlcmUgd2hlbiB0aGUgcGFnZSBsb2FkZWQpLlxubGV0IGluaXRpYWxPdmVycmlkZVNuYXBzaG90ID0gbnVsbDtcbi8qKlxuICogUmVhZHMgYWxsIGA8c2NyaXB0IHR5cGU9XCJvcGVubXJzLXJvdXRlc1wiPmAgdGFncyBmcm9tIHRoZSBET00gYW5kIG1lcmdlc1xuICogdGhlbSBpbnRvIGEgc2luZ2xlIHtAbGluayBPcGVubXJzUm91dGVzfSBvYmplY3QuIFRhZ3Mgd2l0aCBhIGBzcmNgIGF0dHJpYnV0ZVxuICogYXJlIGZldGNoZWQ7IGlubGluZSB0YWdzIGhhdmUgdGhlaXIgYHRleHRDb250ZW50YCBwYXJzZWQgYXMgSlNPTi5cbiAqLyBhc3luYyBmdW5jdGlvbiByZWFkQmFzZU1hcCgpIHtcbiAgICBjb25zdCBzY3JpcHRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInNjcmlwdFt0eXBlPSdvcGVubXJzLXJvdXRlcyddXCIpO1xuICAgIGNvbnN0IG1hcHMgPSBbXTtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGNvbnN0IHNjcmlwdCA9IHNjcmlwdHNbaV07XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgcGFyc2VkO1xuICAgICAgICAgICAgaWYgKHNjcmlwdC5zcmMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHNjcmlwdC5zcmMpO1xuICAgICAgICAgICAgICAgIHBhcnNlZCA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc2NyaXB0LnRleHRDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgcGFyc2VkID0gSlNPTi5wYXJzZShzY3JpcHQudGV4dENvbnRlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhcnNlZCAmJiBpc09wZW5tcnNSb3V0ZXMocGFyc2VkKSkge1xuICAgICAgICAgICAgICAgIG1hcHMucHVzaChwYXJzZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFtyb3V0ZS1tYXBzXSBGYWlsZWQgdG8gcGFyc2Ugcm91dGVzIGZyb20gc2NyaXB0IHRhZyBhdCBpbmRleCAke2l9YCwgZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1lcmdlUm91dGVNYXBzKG1hcHMpO1xufVxuZnVuY3Rpb24gbWVyZ2VSb3V0ZU1hcHMobWFwcykge1xuICAgIGNvbnN0IG1lcmdlZCA9IHtcbiAgICAgICAgcm91dGVzOiB7fVxuICAgIH07XG4gICAgZm9yIChjb25zdCBtYXAgb2YgbWFwcyl7XG4gICAgICAgIGlmIChtYXAgJiYgdHlwZW9mIG1hcCA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkobWFwKSkge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihtZXJnZWQucm91dGVzLCBtYXAucm91dGVzKTtcbiAgICAgICAgICAgIGlmIChtZXJnZWQudmVyc2lvbiA9PT0gdW5kZWZpbmVkICYmIG1hcC52ZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBtZXJnZWQudmVyc2lvbiA9IG1hcC52ZXJzaW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtZXJnZWQ7XG59XG4vKipcbiAqIFJlYWRzIGFsbCBgb3Blbm1ycy1yb3V0ZXM6KmAgZW50cmllcyBmcm9tIGxvY2FsU3RvcmFnZSBhcyBhbiB7QGxpbmsgT3Blbm1yc1JvdXRlc30uXG4gKiBUaGlzIGlzIGFzeW5jIGJlY2F1c2UgVVJMLXZhbHVlZCBvdmVycmlkZXMgbmVlZCB0byBiZSBmZXRjaGVkLlxuICovIGFzeW5jIGZ1bmN0aW9uIHJlYWRPdmVycmlkZU1hcCgpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAgIHZlcnNpb246IHVuZGVmaW5lZCxcbiAgICAgICAgcm91dGVzOiB7fVxuICAgIH07XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbG9jYWxTdG9yYWdlLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGxvY2FsU3RvcmFnZS5rZXkoaSk7XG4gICAgICAgICAgICBpZiAoa2V5Py5zdGFydHNXaXRoKE9WRVJSSURFX1BSRUZJWCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByYXcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgICAgICAgICAgICAgIGlmIChyYXcpIHtcbiAgICAgICAgICAgICAgICAgICAgZW50cmllcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZU5hbWU6IGtleS5zbGljZShPVkVSUklERV9QUkVGSVgubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhd1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2V0dGxlZCA9IGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChlbnRyaWVzLm1hcChhc3luYyAoeyBtb2R1bGVOYW1lLCByYXcgfSk9PntcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UocmF3KTtcbiAgICAgICAgICAgIGlmIChpc09wZW5tcnNBcHBSb3V0ZXMocGFyc2VkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIG1vZHVsZU5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlczogcGFyc2VkXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgcGFyc2VkID09PSAnc3RyaW5nJyAmJiBwYXJzZWQuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChwYXJzZWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZldGNoZWQgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgICAgICAgICAgICAgaWYgKGlzT3Blbm1yc0FwcFJvdXRlcyhmZXRjaGVkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlczogZmV0Y2hlZFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7cGFyc2VkfSBkaWQgbm90IHJlc29sdmUgdG8gYSB2YWxpZCBPcGVubXJzQXBwUm91dGVzIG9iamVjdGApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBPdmVycmlkZSBmb3IgJHttb2R1bGVOYW1lfSBpcyBuZWl0aGVyIGEgdmFsaWQgcm91dGVzIG9iamVjdCBub3IgYSBVUkxgKTtcbiAgICAgICAgfSkpO1xuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHNldHRsZWQpe1xuICAgICAgICAgICAgaWYgKGVudHJ5LnN0YXR1cyA9PT0gJ2Z1bGZpbGxlZCcpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbJ3JvdXRlcyddW2VudHJ5LnZhbHVlLm1vZHVsZU5hbWVdID0gZW50cnkudmFsdWUucm91dGVzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1tyb3V0ZS1tYXBzXSBGYWlsZWQgdG8gbG9hZCByb3V0ZSBvdmVycmlkZScsIGVudHJ5LnJlYXNvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW3JvdXRlLW1hcHNdIEZhaWxlZCB0byByZWFkIHJvdXRlIG92ZXJyaWRlcyBmcm9tIGxvY2FsU3RvcmFnZScsIGUpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSByb3V0ZSBtYXAgZm9yIHRoZSBjdXJyZW50IHBhZ2UuIEluIGRldiBtb2RlLCB0aGlzIG1lcmdlc1xuICogdGhlIGJhc2UgbWFwIHdpdGggdGhlIG92ZXJyaWRlIHNuYXBzaG90IGNhcHR1cmVkIGF0IHBhZ2UgbG9hZC5cbiAqLyBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q3VycmVudFJvdXRlTWFwKCkge1xuICAgIGNvbnN0IGJhc2UgPSBhd2FpdCByZWFkQmFzZU1hcCgpO1xuICAgIGlmICghZGV2TW9kZSkge1xuICAgICAgICByZXR1cm4gYmFzZTtcbiAgICB9XG4gICAgY29uc3Qgb3ZlcnJpZGVzID0gaW5pdGlhbE92ZXJyaWRlU25hcHNob3QgPz8gYXdhaXQgcmVhZE92ZXJyaWRlTWFwKCk7XG4gICAgcmV0dXJuIG1lcmdlUm91dGVNYXBzKFtcbiAgICAgICAgYmFzZSxcbiAgICAgICAgb3ZlcnJpZGVzXG4gICAgXSk7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIGJhc2Ugcm91dGUgbWFwIGZyb20gdGhlIERPTSB3aXRob3V0IGFueSBvdmVycmlkZXMgYXBwbGllZC5cbiAqLyBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Um91dGVNYXBEZWZhdWx0TWFwKCkge1xuICAgIHJldHVybiByZWFkQmFzZU1hcCgpO1xufVxuLyoqXG4gKiBSZXR1cm5zIHdoYXQgdGhlIHJvdXRlIG1hcCB3aWxsIGxvb2sgbGlrZSBvbiB0aGUgbmV4dCBwYWdlIGxvYWQsIGluY2x1ZGluZ1xuICogYW55IG92ZXJyaWRlcyB0aGF0IGhhdmUgYmVlbiBhZGRlZC9yZW1vdmVkIHNpbmNlIHRoZSBwYWdlIGxvYWRlZC5cbiAqIEluIHByb2R1Y3Rpb24sIHRoaXMgaXMgdGhlIHNhbWUgYXMgdGhlIGJhc2UgbWFwLlxuICovIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRSb3V0ZU1hcE5leHRQYWdlTWFwKCkge1xuICAgIGlmICghZGV2TW9kZSkge1xuICAgICAgICByZXR1cm4gcmVhZEJhc2VNYXAoKTtcbiAgICB9XG4gICAgY29uc3QgYmFzZSA9IGF3YWl0IHJlYWRCYXNlTWFwKCk7XG4gICAgcmV0dXJuIG1lcmdlUm91dGVNYXBzKFtcbiAgICAgICAgYmFzZSxcbiAgICAgICAgYXdhaXQgcmVhZE92ZXJyaWRlTWFwKClcbiAgICBdKTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgY3VycmVudCByYXcgb3ZlcnJpZGUgZW50cmllcyBmcm9tIGxvY2FsU3RvcmFnZS5cbiAqIEluIHByb2R1Y3Rpb24sIHJldHVybnMgYW4gZW1wdHkgb2JqZWN0LlxuICovIGV4cG9ydCBmdW5jdGlvbiBnZXRSb3V0ZU1hcE92ZXJyaWRlTWFwKCkge1xuICAgIGlmICghZGV2TW9kZSkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIHRyeSB7XG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBsb2NhbFN0b3JhZ2UubGVuZ3RoOyBpKyspe1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gbG9jYWxTdG9yYWdlLmtleShpKTtcbiAgICAgICAgICAgIGlmIChrZXk/LnN0YXJ0c1dpdGgoT1ZFUlJJREVfUFJFRklYKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleS5zbGljZShPVkVSUklERV9QUkVGSVgubGVuZ3RoKV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW3JvdXRlLW1hcHNdIEZhaWxlZCB0byByZWFkIHJvdXRlIG92ZXJyaWRlcyBmcm9tIGxvY2FsU3RvcmFnZScsIGUpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLyoqXG4gKiBBZGRzIGEgcm91dGUgb3ZlcnJpZGUuIEluIHByb2R1Y3Rpb24sIHRoaXMgaXMgYSBuby1vcC5cbiAqIFRoZSBhcHAgbXVzdCBiZSByZWxvYWRlZCBmb3Igb3ZlcnJpZGVzIHRvIHRha2UgZWZmZWN0LlxuICpcbiAqIEBwYXJhbSBtb2R1bGVOYW1lIFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlIHJvdXRlcyBhcmUgZm9yXG4gKiBAcGFyYW0gcm91dGVzIEVpdGhlciBhbiB7QGxpbmsgT3Blbm1yc0FwcFJvdXRlc30gb2JqZWN0LCBhIHN0cmluZyB0aGF0IHJlcHJlc2VudHMgYSBKU09OXG4gKiAgdmVyc2lvbiBvZiBhbiB7QGxpbmsgT3Blbm1yc0FwcFJvdXRlc30gb2JqZWN0LCBvciBhIHN0cmluZyBvciBVUkwgdGhhdCByZXNvbHZlcyB0byBhXG4gKiAgSlNPTiBkb2N1bWVudCB0aGF0IHJlcHJlc2VudHMgYW4ge0BsaW5rIE9wZW5tcnNBcHBSb3V0ZXN9IG9iamVjdFxuICovIGV4cG9ydCBmdW5jdGlvbiBhZGRSb3V0ZU1hcE92ZXJyaWRlKG1vZHVsZU5hbWUsIHJvdXRlcykge1xuICAgIGlmICghZGV2TW9kZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tTZWN1cml0eV0gUm91dGUgb3ZlcnJpZGVzIGFyZSBkaXNhYmxlZCBvdXRzaWRlIGRldmVsb3BtZW50IG1vZGUuJyk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiByb3V0ZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAocm91dGVzLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKE9WRVJSSURFX1BSRUZJWCArIG1vZHVsZU5hbWUsIEpTT04uc3RyaW5naWZ5KHJvdXRlcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXliZVJvdXRlcyA9IEpTT04ucGFyc2Uocm91dGVzKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNPcGVubXJzQXBwUm91dGVzKG1heWJlUm91dGVzKSkge1xuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShPVkVSUklERV9QUkVGSVggKyBtb2R1bGVOYW1lLCBKU09OLnN0cmluZ2lmeShtYXliZVJvdXRlcykpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFRoZSBzdXBwbGllZCByb3V0ZXMgZm9yICR7bW9kdWxlTmFtZX0gaXMgbm90IGEgdmFsaWQgT3Blbm1yc0FwcFJvdXRlcyBvYmplY3RgLCByb3V0ZXMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHJvdXRlcyBpbnN0YW5jZW9mIFVSTCkge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oT1ZFUlJJREVfUFJFRklYICsgbW9kdWxlTmFtZSwgSlNPTi5zdHJpbmdpZnkocm91dGVzLnRvU3RyaW5nKCkpKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc09wZW5tcnNBcHBSb3V0ZXMocm91dGVzKSkge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oT1ZFUlJJREVfUFJFRklYICsgbW9kdWxlTmFtZSwgSlNPTi5zdHJpbmdpZnkocm91dGVzKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBPdmVycmlkZSBmb3IgJHttb2R1bGVOYW1lfSBpcyBub3QgaW4gYSB2YWxpZCBmb3JtYXQuIEV4cGVjdGVkIGVpdGhlciBhIEphdmFzY3JpcHQgT2JqZWN0LCBhIEpTT04gc3RyaW5nIG9mIGEgSmF2YXNjcmlwdCBvYmplY3QsIG9yIGEgVVJMYCwgcm91dGVzKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoQ0hBTkdFX0VWRU5UKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tyb3V0ZS1tYXBzXSBGYWlsZWQgdG8gd3JpdGUgcm91dGUgb3ZlcnJpZGUgdG8gbG9jYWxTdG9yYWdlJywgZSk7XG4gICAgfVxufVxuLyoqXG4gKiBSZW1vdmVzIGEgcm91dGUgb3ZlcnJpZGUuIEluIHByb2R1Y3Rpb24sIHRoaXMgaXMgYSBuby1vcC5cbiAqIFRoZSBhcHAgbXVzdCBiZSByZWxvYWRlZCBmb3IgdGhlIHJlbW92YWwgdG8gdGFrZSBlZmZlY3QuXG4gKlxuICogQHBhcmFtIG1vZHVsZU5hbWUgVGhlIG1vZHVsZSB0byByZW1vdmUgdGhlIG92ZXJyaWRlcyBmb3JcbiAqLyBleHBvcnQgZnVuY3Rpb24gcmVtb3ZlUm91dGVNYXBPdmVycmlkZShtb2R1bGVOYW1lKSB7XG4gICAgaWYgKCFkZXZNb2RlKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW1NlY3VyaXR5XSBSb3V0ZSBvdmVycmlkZXMgYXJlIGRpc2FibGVkIG91dHNpZGUgZGV2ZWxvcG1lbnQgbW9kZS4nKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShPVkVSUklERV9QUkVGSVggKyBtb2R1bGVOYW1lKTtcbiAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KENIQU5HRV9FVkVOVCkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdbcm91dGUtbWFwc10gRmFpbGVkIHRvIHJlbW92ZSByb3V0ZSBvdmVycmlkZSBmcm9tIGxvY2FsU3RvcmFnZScsIGUpO1xuICAgIH1cbn1cbi8qKlxuICogQ2xlYXJzIGFsbCByb3V0ZSBvdmVycmlkZXMuIEluIHByb2R1Y3Rpb24sIHRoaXMgaXMgYSBuby1vcC5cbiAqIFRoZSBhcHAgbXVzdCBiZSByZWxvYWRlZCBmb3IgdGhlIHJlbW92YWwgdG8gdGFrZSBlZmZlY3QuXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHJlc2V0Um91dGVNYXBPdmVycmlkZXMoKSB7XG4gICAgaWYgKCFkZXZNb2RlKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW1NlY3VyaXR5XSBSb3V0ZSBvdmVycmlkZXMgYXJlIGRpc2FibGVkIG91dHNpZGUgZGV2ZWxvcG1lbnQgbW9kZS4nKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBjb25zdCBrZXlzVG9SZW1vdmUgPSBbXTtcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGxvY2FsU3RvcmFnZS5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBsb2NhbFN0b3JhZ2Uua2V5KGkpO1xuICAgICAgICAgICAgaWYgKGtleT8uc3RhcnRzV2l0aChPVkVSUklERV9QUkVGSVgpKSB7XG4gICAgICAgICAgICAgICAga2V5c1RvUmVtb3ZlLnB1c2goa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBrZXlzVG9SZW1vdmUuZm9yRWFjaCgoa2V5KT0+bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KSk7XG4gICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChDSEFOR0VfRVZFTlQpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW3JvdXRlLW1hcHNdIEZhaWxlZCB0byBjbGVhciByb3V0ZSBvdmVycmlkZXMgZnJvbSBsb2NhbFN0b3JhZ2UnLCBlKTtcbiAgICB9XG59XG4vKipcbiAqIEluaXRpYWxpemVzIHRoZSByb3V0ZSBtYXAgb3ZlcnJpZGUgc3lzdGVtIHdpdGggbW9kZS1hd2FyZSBiZWhhdmlvci5cbiAqXG4gKiBJbiBwcm9kdWN0aW9uIChgd2luZG93LnNwYUVudiAhPT0gJ2RldmVsb3BtZW50J2ApLCBtdXRhdGlvbiBmdW5jdGlvbnMgYXJlXG4gKiBuby1vcHMgYW5kIGxvY2FsU3RvcmFnZSBvdmVycmlkZXMgYXJlIG5ldmVyIGNvbnN1bHRlZC4gSW4gZGV2ZWxvcG1lbnQsIHRoZVxuICogZnVsbCBvdmVycmlkZSB3b3JrZmxvdyBpcyBhdmFpbGFibGUuXG4gKlxuICogTXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBjb2RlIHRoYXQgZGVwZW5kcyBvbiB0aGUgcm91dGUgbWFwIGZ1bmN0aW9ucy5cbiAqLyBsZXQgc2V0dXBQcm9taXNlID0gbnVsbDtcbmV4cG9ydCBmdW5jdGlvbiBzZXR1cFJvdXRlTWFwT3ZlcnJpZGVzKCkge1xuICAgIGlmIChzZXR1cFByb21pc2UpIHtcbiAgICAgICAgcmV0dXJuIHNldHVwUHJvbWlzZTtcbiAgICB9XG4gICAgZGV2TW9kZSA9IHdpbmRvdy5zcGFFbnYgPT09ICdkZXZlbG9wbWVudCc7XG4gICAgaWYgKGRldk1vZGUpIHtcbiAgICAgICAgc2V0dXBQcm9taXNlID0gcmVhZE92ZXJyaWRlTWFwKCkudGhlbigoc25hcHNob3QpPT57XG4gICAgICAgICAgICBpbml0aWFsT3ZlcnJpZGVTbmFwc2hvdCA9IHNuYXBzaG90O1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBzZXR1cFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG4gICAgcmV0dXJuIHNldHVwUHJvbWlzZTtcbn1cbiJdLCJuYW1lcyI6WyJpc09wZW5tcnNBcHBSb3V0ZXMiLCJpc09wZW5tcnNSb3V0ZXMiLCJPVkVSUklERV9QUkVGSVgiLCJDSEFOR0VfRVZFTlQiLCJkZXZNb2RlIiwiaW5pdGlhbE92ZXJyaWRlU25hcHNob3QiLCJyZWFkQmFzZU1hcCIsInNjcmlwdHMiLCJtYXBzIiwiaSIsInNjcmlwdCIsInBhcnNlZCIsInJlc3BvbnNlIiwiZSIsImRvY3VtZW50IiwiZmV0Y2giLCJKU09OIiwiY29uc29sZSIsIm1lcmdlUm91dGVNYXBzIiwibWVyZ2VkIiwiX2l0ZXJhdG9yRXJyb3IiLCJtYXAiLCJfdHlwZV9vZiIsIkFycmF5IiwiT2JqZWN0IiwidW5kZWZpbmVkIiwicmVhZE92ZXJyaWRlTWFwIiwicmVzdWx0IiwiZW50cmllcyIsImtleSIsInJhdyIsInNldHRsZWQiLCJlbnRyeSIsImxvY2FsU3RvcmFnZSIsIlByb21pc2UiLCJtb2R1bGVOYW1lIiwiZmV0Y2hlZCIsIkVycm9yIiwiZ2V0Q3VycmVudFJvdXRlTWFwIiwiYmFzZSIsIm92ZXJyaWRlcyIsImdldFJvdXRlTWFwRGVmYXVsdE1hcCIsImdldFJvdXRlTWFwTmV4dFBhZ2VNYXAiLCJnZXRSb3V0ZU1hcE92ZXJyaWRlTWFwIiwidmFsdWUiLCJhZGRSb3V0ZU1hcE92ZXJyaWRlIiwicm91dGVzIiwibWF5YmVSb3V0ZXMiLCJfaW5zdGFuY2VvZiIsIlVSTCIsIndpbmRvdyIsIkN1c3RvbUV2ZW50IiwicmVtb3ZlUm91dGVNYXBPdmVycmlkZSIsInJlc2V0Um91dGVNYXBPdmVycmlkZXMiLCJrZXlzVG9SZW1vdmUiLCJzZXR1cFByb21pc2UiLCJzZXR1cFJvdXRlTWFwT3ZlcnJpZGVzIiwic25hcHNob3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnQ0FBZ0MsR0FBOEU7QUFDOUcsSUFBTUUsa0JBQWtCO0FBQ3hCLElBQU1DLGVBQWU7QUFDckIsc0ZBQXNGO0FBQ3RGLElBQUlDLFVBQVU7QUFDZCxpRkFBaUY7QUFDakYsK0VBQStFO0FBQy9FLElBQUlDLDBCQUEwQjtBQUM5Qjs7OztDQUlDLEdBQUcsU0FBZUM7O1lBQ1RDLFNBQ0FDLE1BQ0VDLEdBQ0VDLFFBRUVDLFFBRU1DLFVBUUxDOzs7O29CQWZQTixVQUFVTyxTQUFTLGdCQUFnQixDQUFDO29CQUNwQ047b0JBQ0VDLElBQUk7Ozt5QkFBR0EsQ0FBQUEsSUFBSUYsUUFBUSxNQUFLOzs7O29CQUN0QkcsU0FBU0gsT0FBTyxDQUFDRSxFQUFFOzs7Ozs7Ozs7b0JBRWpCRSxTQUFBQSxLQUFBQTt5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\n//# sourceURL=webpack-internal:///../../framework/esm-dynamic-loading/dist/route-maps.js\n\n}");
5633
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n addRouteMapOverride: () => (addRouteMapOverride),\n getCurrentRouteMap: () => (getCurrentRouteMap),\n getRouteMapDefaultMap: () => (getRouteMapDefaultMap),\n getRouteMapNextPageMap: () => (getRouteMapNextPageMap),\n getRouteMapOverrideMap: () => (getRouteMapOverrideMap),\n removeRouteMapOverride: () => (removeRouteMapOverride),\n resetRouteMapOverrides: () => (resetRouteMapOverrides),\n setupRouteMapOverrides: () => (setupRouteMapOverrides)\n});\n/* import */ var _openmrs_esm_globals__rspack_import_0 = __webpack_require__(\"../../framework/esm-globals/dist/index.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 _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}\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/** @module @category Route Map */ \nvar OVERRIDE_PREFIX = 'openmrs-routes:';\nvar CHANGE_EVENT = 'openmrs-routes:change';\n// Set by setupRouteMapOverrides(); controls whether override functionality is active.\nvar devMode = false;\n// Snapshot of overrides at setup time (mirrors the import-map-overrides pattern:\n// getCurrentRouteMap returns the overrides as they were when the page loaded).\nvar initialOverrideSnapshot = null;\n// Memoizes the base map so that the routes registry is fetched at most once per page load.\nvar baseMapPromise = null;\n/**\n * Reads all `<script type=\"openmrs-routes\">` tags from the DOM and merges\n * them into a single {@link OpenmrsRoutes} object. Tags with a `src` attribute\n * are fetched; inline tags have their `textContent` parsed as JSON.\n *\n * A read in which no tag threw is cached and reused by all later callers. A read that lost a\n * tag to an error is returned as-is but not cached, so that a transient network failure doesn't\n * leave the page with a permanently incomplete map. A tag that loads but fails validation is\n * dropped without invalidating the cache, since re-reading it would only fail the same way.\n */ function readBaseMap() {\n return _async_to_generator(function() {\n return _ts_generator(this, function(_state) {\n baseMapPromise !== null && baseMapPromise !== void 0 ? baseMapPromise : baseMapPromise = loadBaseMap().then(function(param) {\n var map = param.map, complete = param.complete;\n if (!complete) {\n baseMapPromise = null;\n }\n return map;\n });\n return [\n 2,\n baseMapPromise\n ];\n });\n })();\n}\nfunction loadBaseMap() {\n return _async_to_generator(function() {\n var scripts, maps, complete, i, script, parsed, response, e;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n scripts = document.querySelectorAll(\"script[type='openmrs-routes']\");\n maps = [];\n complete = true;\n i = 0;\n _state.label = 1;\n case 1:\n if (!(i < scripts.length)) return [\n 3,\n 9\n ];\n script = scripts[i];\n _state.label = 2;\n case 2:\n _state.trys.push([\n 2,\n 7,\n ,\n 8\n ]);\n parsed = void 0;\n if (!script.src) return [\n 3,\n 5\n ];\n return [\n 4,\n fetch(script.src)\n ];\n case 3:\n response = _state.sent();\n if (!response.ok) {\n throw new Error(\"Request for \".concat(script.src, \" returned \").concat(response.status, \" \").concat(response.statusText));\n }\n return [\n 4,\n response.json()\n ];\n case 4:\n parsed = _state.sent();\n return [\n 3,\n 6\n ];\n case 5:\n if (script.textContent) {\n parsed = JSON.parse(script.textContent);\n }\n _state.label = 6;\n case 6:\n if (parsed && (0,_openmrs_esm_globals__rspack_import_0.isOpenmrsRoutes)(parsed)) {\n maps.push(parsed);\n }\n return [\n 3,\n 8\n ];\n case 7:\n e = _state.sent();\n complete = false;\n console.warn(\"[route-maps] Failed to parse routes from script tag at index \".concat(i), e);\n return [\n 3,\n 8\n ];\n case 8:\n i++;\n return [\n 3,\n 1\n ];\n case 9:\n return [\n 2,\n {\n map: mergeRouteMaps(maps),\n complete: complete\n }\n ];\n }\n });\n })();\n}\nfunction mergeRouteMaps(maps) {\n var merged = {\n routes: {}\n };\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = maps[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var map = _step.value;\n if (map && (typeof map === \"undefined\" ? \"undefined\" : _type_of(map)) === 'object' && !Array.isArray(map)) {\n Object.assign(merged.routes, map.routes);\n if (merged.version === undefined && map.version !== undefined) {\n merged.version = map.version;\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return merged;\n}\n/**\n * Reads all `openmrs-routes:*` entries from localStorage as an {@link OpenmrsRoutes}.\n * This is async because URL-valued overrides need to be fetched.\n */ function readOverrideMap() {\n return _async_to_generator(function() {\n var result, entries, i, key, raw, settled, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, entry, e;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n result = {\n version: undefined,\n routes: {}\n };\n _state.label = 1;\n case 1:\n _state.trys.push([\n 1,\n 3,\n ,\n 4\n ]);\n entries = [];\n for(i = 0; i < localStorage.length; i++){\n key = localStorage.key(i);\n if (key === null || key === void 0 ? void 0 : key.startsWith(OVERRIDE_PREFIX)) {\n raw = localStorage.getItem(key);\n if (raw) {\n entries.push({\n moduleName: key.slice(OVERRIDE_PREFIX.length),\n raw: raw\n });\n }\n }\n }\n return [\n 4,\n Promise.allSettled(entries.map(function(param) {\n var moduleName = param.moduleName, raw = param.raw;\n return _async_to_generator(function() {\n var parsed, response, fetched;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n parsed = JSON.parse(raw);\n if ((0,_openmrs_esm_globals__rspack_import_0.isOpenmrsAppRoutes)(parsed)) {\n return [\n 2,\n {\n moduleName: moduleName,\n routes: parsed\n }\n ];\n }\n if (!(typeof parsed === 'string' && parsed.startsWith('http'))) return [\n 3,\n 3\n ];\n return [\n 4,\n fetch(parsed)\n ];\n case 1:\n response = _state.sent();\n return [\n 4,\n response.json()\n ];\n case 2:\n fetched = _state.sent();\n if ((0,_openmrs_esm_globals__rspack_import_0.isOpenmrsAppRoutes)(fetched)) {\n return [\n 2,\n {\n moduleName: moduleName,\n routes: fetched\n }\n ];\n }\n throw new Error(\"\".concat(parsed, \" did not resolve to a valid OpenmrsAppRoutes object\"));\n case 3:\n throw new Error(\"Override for \".concat(moduleName, \" is neither a valid routes object nor a URL\"));\n }\n });\n })();\n }))\n ];\n case 2:\n settled = _state.sent();\n _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(_iterator = settled[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n entry = _step.value;\n if (entry.status === 'fulfilled') {\n result['routes'][entry.value.moduleName] = entry.value.routes;\n } else {\n console.warn('[route-maps] Failed to load route override', entry.reason);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return [\n 3,\n 4\n ];\n case 3:\n e = _state.sent();\n console.warn('[route-maps] Failed to read route overrides from localStorage', e);\n return [\n 3,\n 4\n ];\n case 4:\n return [\n 2,\n result\n ];\n }\n });\n })();\n}\n/**\n * Returns the route map for the current page. In dev mode, this merges\n * the base map with the override snapshot captured at page load.\n */ function getCurrentRouteMap() {\n return _async_to_generator(function() {\n var base, overrides, _tmp;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n readBaseMap()\n ];\n case 1:\n base = _state.sent();\n if (!devMode) {\n return [\n 2,\n base\n ];\n }\n if (!(initialOverrideSnapshot !== null && initialOverrideSnapshot !== void 0)) return [\n 3,\n 2\n ];\n _tmp = initialOverrideSnapshot;\n return [\n 3,\n 4\n ];\n case 2:\n return [\n 4,\n readOverrideMap()\n ];\n case 3:\n _tmp = _state.sent();\n _state.label = 4;\n case 4:\n overrides = _tmp;\n return [\n 2,\n mergeRouteMaps([\n base,\n overrides\n ])\n ];\n }\n });\n })();\n}\n/**\n * Returns the base route map from the DOM without any overrides applied.\n */ function getRouteMapDefaultMap() {\n return _async_to_generator(function() {\n return _ts_generator(this, function(_state) {\n return [\n 2,\n readBaseMap()\n ];\n });\n })();\n}\n/**\n * Returns what the route map will look like on the next page load, including\n * any overrides that have been added/removed since the page loaded.\n * In production, this is the same as the base map.\n */ function getRouteMapNextPageMap() {\n return _async_to_generator(function() {\n var base, _tmp;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n if (!devMode) {\n return [\n 2,\n readBaseMap()\n ];\n }\n return [\n 4,\n readBaseMap()\n ];\n case 1:\n base = _state.sent();\n _tmp = [\n base\n ];\n return [\n 4,\n readOverrideMap()\n ];\n case 2:\n return [\n 2,\n mergeRouteMaps.apply(void 0, [\n _tmp.concat([\n _state.sent()\n ])\n ])\n ];\n }\n });\n })();\n}\n/**\n * Returns the current raw override entries from localStorage.\n * In production, returns an empty object.\n */ function getRouteMapOverrideMap() {\n if (!devMode) {\n return {};\n }\n var result = {};\n try {\n for(var i = 0; i < localStorage.length; i++){\n var key = localStorage.key(i);\n if (key === null || key === void 0 ? void 0 : key.startsWith(OVERRIDE_PREFIX)) {\n var value = localStorage.getItem(key);\n if (value) {\n result[key.slice(OVERRIDE_PREFIX.length)] = value;\n }\n }\n }\n } catch (e) {\n console.warn('[route-maps] Failed to read route overrides from localStorage', e);\n }\n return result;\n}\n/**\n * Adds a route override. In production, this is a no-op.\n * The app must be reloaded for overrides to take effect.\n *\n * @param moduleName The name of the module the routes are for\n * @param routes Either an {@link OpenmrsAppRoutes} object, a string that represents a JSON\n * version of an {@link OpenmrsAppRoutes} object, or a string or URL that resolves to a\n * JSON document that represents an {@link OpenmrsAppRoutes} object\n */ function addRouteMapOverride(moduleName, routes) {\n if (!devMode) {\n console.warn('[Security] Route overrides are disabled outside development mode.');\n return;\n }\n try {\n if (typeof routes === 'string') {\n if (routes.startsWith('http')) {\n localStorage.setItem(OVERRIDE_PREFIX + moduleName, JSON.stringify(routes));\n } else {\n var maybeRoutes = JSON.parse(routes);\n if ((0,_openmrs_esm_globals__rspack_import_0.isOpenmrsAppRoutes)(maybeRoutes)) {\n localStorage.setItem(OVERRIDE_PREFIX + moduleName, JSON.stringify(maybeRoutes));\n } else {\n console.error(\"The supplied routes for \".concat(moduleName, \" is not a valid OpenmrsAppRoutes object\"), routes);\n return;\n }\n }\n } else if (_instanceof(routes, URL)) {\n localStorage.setItem(OVERRIDE_PREFIX + moduleName, JSON.stringify(routes.toString()));\n } else if ((0,_openmrs_esm_globals__rspack_import_0.isOpenmrsAppRoutes)(routes)) {\n localStorage.setItem(OVERRIDE_PREFIX + moduleName, JSON.stringify(routes));\n } else {\n console.error(\"Override for \".concat(moduleName, \" is not in a valid format. Expected either a Javascript Object, a JSON string of a Javascript object, or a URL\"), routes);\n return;\n }\n window.dispatchEvent(new CustomEvent(CHANGE_EVENT));\n } catch (e) {\n console.warn('[route-maps] Failed to write route override to localStorage', e);\n }\n}\n/**\n * Removes a route override. In production, this is a no-op.\n * The app must be reloaded for the removal to take effect.\n *\n * @param moduleName The module to remove the overrides for\n */ function removeRouteMapOverride(moduleName) {\n if (!devMode) {\n console.warn('[Security] Route overrides are disabled outside development mode.');\n return;\n }\n try {\n localStorage.removeItem(OVERRIDE_PREFIX + moduleName);\n window.dispatchEvent(new CustomEvent(CHANGE_EVENT));\n } catch (e) {\n console.warn('[route-maps] Failed to remove route override from localStorage', e);\n }\n}\n/**\n * Clears all route overrides. In production, this is a no-op.\n * The app must be reloaded for the removal to take effect.\n */ function resetRouteMapOverrides() {\n if (!devMode) {\n console.warn('[Security] Route overrides are disabled outside development mode.');\n return;\n }\n try {\n var keysToRemove = [];\n for(var i = 0; i < localStorage.length; i++){\n var key = localStorage.key(i);\n if (key === null || key === void 0 ? void 0 : key.startsWith(OVERRIDE_PREFIX)) {\n keysToRemove.push(key);\n }\n }\n keysToRemove.forEach(function(key) {\n return localStorage.removeItem(key);\n });\n window.dispatchEvent(new CustomEvent(CHANGE_EVENT));\n } catch (e) {\n console.warn('[route-maps] Failed to clear route overrides from localStorage', e);\n }\n}\n/**\n * Initializes the route map override system with mode-aware behavior.\n *\n * In production (`window.spaEnv !== 'development'`), mutation functions are\n * no-ops and localStorage overrides are never consulted. In development, the\n * full override workflow is available.\n *\n * Must be called before any code that depends on the route map functions.\n */ var setupPromise = null;\nfunction setupRouteMapOverrides() {\n if (setupPromise) {\n return setupPromise;\n }\n devMode = window.spaEnv === 'development';\n if (devMode) {\n setupPromise = readOverrideMap().then(function(snapshot) {\n initialOverrideSnapshot = snapshot;\n });\n } else {\n setupPromise = Promise.resolve();\n }\n return setupPromise;\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLWR5bmFtaWMtbG9hZGluZy9kaXN0L3JvdXRlLW1hcHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tZHluYW1pYy1sb2FkaW5nL2Rpc3Qvcm91dGUtbWFwcy5qcz83MzQxIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBSb3V0ZSBNYXAgKi8gaW1wb3J0IHsgaXNPcGVubXJzQXBwUm91dGVzLCBpc09wZW5tcnNSb3V0ZXMgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLWdsb2JhbHNcIjtcbmNvbnN0IE9WRVJSSURFX1BSRUZJWCA9ICdvcGVubXJzLXJvdXRlczonO1xuY29uc3QgQ0hBTkdFX0VWRU5UID0gJ29wZW5tcnMtcm91dGVzOmNoYW5nZSc7XG4vLyBTZXQgYnkgc2V0dXBSb3V0ZU1hcE92ZXJyaWRlcygpOyBjb250cm9scyB3aGV0aGVyIG92ZXJyaWRlIGZ1bmN0aW9uYWxpdHkgaXMgYWN0aXZlLlxubGV0IGRldk1vZGUgPSBmYWxzZTtcbi8vIFNuYXBzaG90IG9mIG92ZXJyaWRlcyBhdCBzZXR1cCB0aW1lIChtaXJyb3JzIHRoZSBpbXBvcnQtbWFwLW92ZXJyaWRlcyBwYXR0ZXJuOlxuLy8gZ2V0Q3VycmVudFJvdXRlTWFwIHJldHVybnMgdGhlIG92ZXJyaWRlcyBhcyB0aGV5IHdlcmUgd2hlbiB0aGUgcGFnZSBsb2FkZWQpLlxubGV0IGluaXRpYWxPdmVycmlkZVNuYXBzaG90ID0gbnVsbDtcbi8vIE1lbW9pemVzIHRoZSBiYXNlIG1hcCBzbyB0aGF0IHRoZSByb3V0ZXMgcmVnaXN0cnkgaXMgZmV0Y2hlZCBhdCBtb3N0IG9uY2UgcGVyIHBhZ2UgbG9hZC5cbmxldCBiYXNlTWFwUHJvbWlzZSA9IG51bGw7XG4vKipcbiAqIFJlYWRzIGFsbCBgPHNjcmlwdCB0eXBlPVwib3Blbm1ycy1yb3V0ZXNcIj5gIHRhZ3MgZnJvbSB0aGUgRE9NIGFuZCBtZXJnZXNcbiAqIHRoZW0gaW50byBhIHNpbmdsZSB7QGxpbmsgT3Blbm1yc1JvdXRlc30gb2JqZWN0LiBUYWdzIHdpdGggYSBgc3JjYCBhdHRyaWJ1dGVcbiAqIGFyZSBmZXRjaGVkOyBpbmxpbmUgdGFncyBoYXZlIHRoZWlyIGB0ZXh0Q29udGVudGAgcGFyc2VkIGFzIEpTT04uXG4gKlxuICogQSByZWFkIGluIHdoaWNoIG5vIHRhZyB0aHJldyBpcyBjYWNoZWQgYW5kIHJldXNlZCBieSBhbGwgbGF0ZXIgY2FsbGVycy4gQSByZWFkIHRoYXQgbG9zdCBhXG4gKiB0YWcgdG8gYW4gZXJyb3IgaXMgcmV0dXJuZWQgYXMtaXMgYnV0IG5vdCBjYWNoZWQsIHNvIHRoYXQgYSB0cmFuc2llbnQgbmV0d29yayBmYWlsdXJlIGRvZXNuJ3RcbiAqIGxlYXZlIHRoZSBwYWdlIHdpdGggYSBwZXJtYW5lbnRseSBpbmNvbXBsZXRlIG1hcC4gQSB0YWcgdGhhdCBsb2FkcyBidXQgZmFpbHMgdmFsaWRhdGlvbiBpc1xuICogZHJvcHBlZCB3aXRob3V0IGludmFsaWRhdGluZyB0aGUgY2FjaGUsIHNpbmNlIHJlLXJlYWRpbmcgaXQgd291bGQgb25seSBmYWlsIHRoZSBzYW1lIHdheS5cbiAqLyBhc3luYyBmdW5jdGlvbiByZWFkQmFzZU1hcCgpIHtcbiAgICBiYXNlTWFwUHJvbWlzZSA/PyAoYmFzZU1hcFByb21pc2UgPSBsb2FkQmFzZU1hcCgpLnRoZW4oKHsgbWFwLCBjb21wbGV0ZSB9KT0+e1xuICAgICAgICBpZiAoIWNvbXBsZXRlKSB7XG4gICAgICAgICAgICBiYXNlTWFwUHJvbWlzZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICB9KSk7XG4gICAgcmV0dXJuIGJhc2VNYXBQcm9taXNlO1xufVxuYXN5bmMgZnVuY3Rpb24gbG9hZEJhc2VNYXAoKSB7XG4gICAgY29uc3Qgc2NyaXB0cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJzY3JpcHRbdHlwZT0nb3Blbm1ycy1yb3V0ZXMnXVwiKTtcbiAgICBjb25zdCBtYXBzID0gW107XG4gICAgbGV0IGNvbXBsZXRlID0gdHJ1ZTtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGNvbnN0IHNjcmlwdCA9IHNjcmlwdHNbaV07XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgcGFyc2VkO1xuICAgICAgICAgICAgaWYgKHNjcmlwdC5zcmMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHNjcmlwdC5zcmMpO1xuICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZXF1ZXN0IGZvciAke3NjcmlwdC5zcmN9IHJldHVybmVkICR7cmVzcG9uc2Uuc3RhdHVzfSAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBhcnNlZCA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc2NyaXB0LnRleHRDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgcGFyc2VkID0gSlNPTi5wYXJzZShzY3JpcHQudGV4dENvbnRlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhcnNlZCAmJiBpc09wZW5tcnNSb3V0ZXMocGFyc2VkKSkge1xuICAgICAgICAgICAgICAgIG1hcHMucHVzaChwYXJzZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb21wbGV0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBbcm91dGUtbWFwc10gRmFpbGVkIHRvIHBhcnNlIHJvdXRlcyBmcm9tIHNjcmlwdCB0YWcgYXQgaW5kZXggJHtpfWAsIGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIG1hcDogbWVyZ2VSb3V0ZU1hcHMobWFwcyksXG4gICAgICAgIGNvbXBsZXRlXG4gICAgfTtcbn1cbmZ1bmN0aW9uIG1lcmdlUm91dGVNYXBzKG1hcHMpIHtcbiAgICBjb25zdCBtZXJnZWQgPSB7XG4gICAgICAgIHJvdXRlczoge31cbiAgICB9O1xuICAgIGZvciAoY29uc3QgbWFwIG9mIG1hcHMpe1xuICAgICAgICBpZiAobWFwICYmIHR5cGVvZiBtYXAgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KG1hcCkpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24obWVyZ2VkLnJvdXRlcywgbWFwLnJvdXRlcyk7XG4gICAgICAgICAgICBpZiAobWVyZ2VkLnZlcnNpb24gPT09IHVuZGVmaW5lZCAmJiBtYXAudmVyc2lvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgbWVyZ2VkLnZlcnNpb24gPSBtYXAudmVyc2lvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWVyZ2VkO1xufVxuLyoqXG4gKiBSZWFkcyBhbGwgYG9wZW5tcnMtcm91dGVzOipgIGVudHJpZXMgZnJvbSBsb2NhbFN0b3JhZ2UgYXMgYW4ge0BsaW5rIE9wZW5tcnNSb3V0ZXN9LlxuICogVGhpcyBpcyBhc3luYyBiZWNhdXNlIFVSTC12YWx1ZWQgb3ZlcnJpZGVzIG5lZWQgdG8gYmUgZmV0Y2hlZC5cbiAqLyBhc3luYyBmdW5jdGlvbiByZWFkT3ZlcnJpZGVNYXAoKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgICB2ZXJzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHJvdXRlczoge31cbiAgICB9O1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBbXTtcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGxvY2FsU3RvcmFnZS5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBsb2NhbFN0b3JhZ2Uua2V5KGkpO1xuICAgICAgICAgICAgaWYgKGtleT8uc3RhcnRzV2l0aChPVkVSUklERV9QUkVGSVgpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmF3ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcbiAgICAgICAgICAgICAgICBpZiAocmF3KSB7XG4gICAgICAgICAgICAgICAgICAgIGVudHJpZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVOYW1lOiBrZXkuc2xpY2UoT1ZFUlJJREVfUFJFRklYLmxlbmd0aCksXG4gICAgICAgICAgICAgICAgICAgICAgICByYXdcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNldHRsZWQgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoZW50cmllcy5tYXAoYXN5bmMgKHsgbW9kdWxlTmFtZSwgcmF3IH0pPT57XG4gICAgICAgICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHJhdyk7XG4gICAgICAgICAgICBpZiAoaXNPcGVubXJzQXBwUm91dGVzKHBhcnNlZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBtb2R1bGVOYW1lLFxuICAgICAgICAgICAgICAgICAgICByb3V0ZXM6IHBhcnNlZFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHBhcnNlZCA9PT0gJ3N0cmluZycgJiYgcGFyc2VkLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2gocGFyc2VkKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmZXRjaGVkID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgICAgICAgICAgICAgIGlmIChpc09wZW5tcnNBcHBSb3V0ZXMoZmV0Y2hlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXM6IGZldGNoZWRcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3BhcnNlZH0gZGlkIG5vdCByZXNvbHZlIHRvIGEgdmFsaWQgT3Blbm1yc0FwcFJvdXRlcyBvYmplY3RgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgT3ZlcnJpZGUgZm9yICR7bW9kdWxlTmFtZX0gaXMgbmVpdGhlciBhIHZhbGlkIHJvdXRlcyBvYmplY3Qgbm9yIGEgVVJMYCk7XG4gICAgICAgIH0pKTtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBzZXR0bGVkKXtcbiAgICAgICAgICAgIGlmIChlbnRyeS5zdGF0dXMgPT09ICdmdWxmaWxsZWQnKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0Wydyb3V0ZXMnXVtlbnRyeS52YWx1ZS5tb2R1bGVOYW1lXSA9IGVudHJ5LnZhbHVlLnJvdXRlcztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdbcm91dGUtbWFwc10gRmFpbGVkIHRvIGxvYWQgcm91dGUgb3ZlcnJpZGUnLCBlbnRyeS5yZWFzb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tyb3V0ZS1tYXBzXSBGYWlsZWQgdG8gcmVhZCByb3V0ZSBvdmVycmlkZXMgZnJvbSBsb2NhbFN0b3JhZ2UnLCBlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgcm91dGUgbWFwIGZvciB0aGUgY3VycmVudCBwYWdlLiBJbiBkZXYgbW9kZSwgdGhpcyBtZXJnZXNcbiAqIHRoZSBiYXNlIG1hcCB3aXRoIHRoZSBvdmVycmlkZSBzbmFwc2hvdCBjYXB0dXJlZCBhdCBwYWdlIGxvYWQuXG4gKi8gZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEN1cnJlbnRSb3V0ZU1hcCgpIHtcbiAgICBjb25zdCBiYXNlID0gYXdhaXQgcmVhZEJhc2VNYXAoKTtcbiAgICBpZiAoIWRldk1vZGUpIHtcbiAgICAgICAgcmV0dXJuIGJhc2U7XG4gICAgfVxuICAgIGNvbnN0IG92ZXJyaWRlcyA9IGluaXRpYWxPdmVycmlkZVNuYXBzaG90ID8/IGF3YWl0IHJlYWRPdmVycmlkZU1hcCgpO1xuICAgIHJldHVybiBtZXJnZVJvdXRlTWFwcyhbXG4gICAgICAgIGJhc2UsXG4gICAgICAgIG92ZXJyaWRlc1xuICAgIF0pO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBiYXNlIHJvdXRlIG1hcCBmcm9tIHRoZSBET00gd2l0aG91dCBhbnkgb3ZlcnJpZGVzIGFwcGxpZWQuXG4gKi8gZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFJvdXRlTWFwRGVmYXVsdE1hcCgpIHtcbiAgICByZXR1cm4gcmVhZEJhc2VNYXAoKTtcbn1cbi8qKlxuICogUmV0dXJucyB3aGF0IHRoZSByb3V0ZSBtYXAgd2lsbCBsb29rIGxpa2Ugb24gdGhlIG5leHQgcGFnZSBsb2FkLCBpbmNsdWRpbmdcbiAqIGFueSBvdmVycmlkZXMgdGhhdCBoYXZlIGJlZW4gYWRkZWQvcmVtb3ZlZCBzaW5jZSB0aGUgcGFnZSBsb2FkZWQuXG4gKiBJbiBwcm9kdWN0aW9uLCB0aGlzIGlzIHRoZSBzYW1lIGFzIHRoZSBiYXNlIG1hcC5cbiAqLyBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Um91dGVNYXBOZXh0UGFnZU1hcCgpIHtcbiAgICBpZiAoIWRldk1vZGUpIHtcbiAgICAgICAgcmV0dXJuIHJlYWRCYXNlTWFwKCk7XG4gICAgfVxuICAgIGNvbnN0IGJhc2UgPSBhd2FpdCByZWFkQmFzZU1hcCgpO1xuICAgIHJldHVybiBtZXJnZVJvdXRlTWFwcyhbXG4gICAgICAgIGJhc2UsXG4gICAgICAgIGF3YWl0IHJlYWRPdmVycmlkZU1hcCgpXG4gICAgXSk7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIGN1cnJlbnQgcmF3IG92ZXJyaWRlIGVudHJpZXMgZnJvbSBsb2NhbFN0b3JhZ2UuXG4gKiBJbiBwcm9kdWN0aW9uLCByZXR1cm5zIGFuIGVtcHR5IG9iamVjdC5cbiAqLyBleHBvcnQgZnVuY3Rpb24gZ2V0Um91dGVNYXBPdmVycmlkZU1hcCgpIHtcbiAgICBpZiAoIWRldk1vZGUpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICB0cnkge1xuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbG9jYWxTdG9yYWdlLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGxvY2FsU3RvcmFnZS5rZXkoaSk7XG4gICAgICAgICAgICBpZiAoa2V5Py5zdGFydHNXaXRoKE9WRVJSSURFX1BSRUZJWCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXkuc2xpY2UoT1ZFUlJJREVfUFJFRklYLmxlbmd0aCldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tyb3V0ZS1tYXBzXSBGYWlsZWQgdG8gcmVhZCByb3V0ZSBvdmVycmlkZXMgZnJvbSBsb2NhbFN0b3JhZ2UnLCBlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbi8qKlxuICogQWRkcyBhIHJvdXRlIG92ZXJyaWRlLiBJbiBwcm9kdWN0aW9uLCB0aGlzIGlzIGEgbm8tb3AuXG4gKiBUaGUgYXBwIG11c3QgYmUgcmVsb2FkZWQgZm9yIG92ZXJyaWRlcyB0byB0YWtlIGVmZmVjdC5cbiAqXG4gKiBAcGFyYW0gbW9kdWxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSByb3V0ZXMgYXJlIGZvclxuICogQHBhcmFtIHJvdXRlcyBFaXRoZXIgYW4ge0BsaW5rIE9wZW5tcnNBcHBSb3V0ZXN9IG9iamVjdCwgYSBzdHJpbmcgdGhhdCByZXByZXNlbnRzIGEgSlNPTlxuICogIHZlcnNpb24gb2YgYW4ge0BsaW5rIE9wZW5tcnNBcHBSb3V0ZXN9IG9iamVjdCwgb3IgYSBzdHJpbmcgb3IgVVJMIHRoYXQgcmVzb2x2ZXMgdG8gYVxuICogIEpTT04gZG9jdW1lbnQgdGhhdCByZXByZXNlbnRzIGFuIHtAbGluayBPcGVubXJzQXBwUm91dGVzfSBvYmplY3RcbiAqLyBleHBvcnQgZnVuY3Rpb24gYWRkUm91dGVNYXBPdmVycmlkZShtb2R1bGVOYW1lLCByb3V0ZXMpIHtcbiAgICBpZiAoIWRldk1vZGUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdbU2VjdXJpdHldIFJvdXRlIG92ZXJyaWRlcyBhcmUgZGlzYWJsZWQgb3V0c2lkZSBkZXZlbG9wbWVudCBtb2RlLicpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2Ygcm91dGVzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgaWYgKHJvdXRlcy5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShPVkVSUklERV9QUkVGSVggKyBtb2R1bGVOYW1lLCBKU09OLnN0cmluZ2lmeShyb3V0ZXMpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF5YmVSb3V0ZXMgPSBKU09OLnBhcnNlKHJvdXRlcyk7XG4gICAgICAgICAgICAgICAgaWYgKGlzT3Blbm1yc0FwcFJvdXRlcyhtYXliZVJvdXRlcykpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oT1ZFUlJJREVfUFJFRklYICsgbW9kdWxlTmFtZSwgSlNPTi5zdHJpbmdpZnkobWF5YmVSb3V0ZXMpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBUaGUgc3VwcGxpZWQgcm91dGVzIGZvciAke21vZHVsZU5hbWV9IGlzIG5vdCBhIHZhbGlkIE9wZW5tcnNBcHBSb3V0ZXMgb2JqZWN0YCwgcm91dGVzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChyb3V0ZXMgaW5zdGFuY2VvZiBVUkwpIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKE9WRVJSSURFX1BSRUZJWCArIG1vZHVsZU5hbWUsIEpTT04uc3RyaW5naWZ5KHJvdXRlcy50b1N0cmluZygpKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNPcGVubXJzQXBwUm91dGVzKHJvdXRlcykpIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKE9WRVJSSURFX1BSRUZJWCArIG1vZHVsZU5hbWUsIEpTT04uc3RyaW5naWZ5KHJvdXRlcykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgT3ZlcnJpZGUgZm9yICR7bW9kdWxlTmFtZX0gaXMgbm90IGluIGEgdmFsaWQgZm9ybWF0LiBFeHBlY3RlZCBlaXRoZXIgYSBKYXZhc2NyaXB0IE9iamVjdCwgYSBKU09OIHN0cmluZyBvZiBhIEphdmFzY3JpcHQgb2JqZWN0LCBvciBhIFVSTGAsIHJvdXRlcyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KENIQU5HRV9FVkVOVCkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdbcm91dGUtbWFwc10gRmFpbGVkIHRvIHdyaXRlIHJvdXRlIG92ZXJyaWRlIHRvIGxvY2FsU3RvcmFnZScsIGUpO1xuICAgIH1cbn1cbi8qKlxuICogUmVtb3ZlcyBhIHJvdXRlIG92ZXJyaWRlLiBJbiBwcm9kdWN0aW9uLCB0aGlzIGlzIGEgbm8tb3AuXG4gKiBUaGUgYXBwIG11c3QgYmUgcmVsb2FkZWQgZm9yIHRoZSByZW1vdmFsIHRvIHRha2UgZWZmZWN0LlxuICpcbiAqIEBwYXJhbSBtb2R1bGVOYW1lIFRoZSBtb2R1bGUgdG8gcmVtb3ZlIHRoZSBvdmVycmlkZXMgZm9yXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVJvdXRlTWFwT3ZlcnJpZGUobW9kdWxlTmFtZSkge1xuICAgIGlmICghZGV2TW9kZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tTZWN1cml0eV0gUm91dGUgb3ZlcnJpZGVzIGFyZSBkaXNhYmxlZCBvdXRzaWRlIGRldmVsb3BtZW50IG1vZGUuJyk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oT1ZFUlJJREVfUFJFRklYICsgbW9kdWxlTmFtZSk7XG4gICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChDSEFOR0VfRVZFTlQpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW3JvdXRlLW1hcHNdIEZhaWxlZCB0byByZW1vdmUgcm91dGUgb3ZlcnJpZGUgZnJvbSBsb2NhbFN0b3JhZ2UnLCBlKTtcbiAgICB9XG59XG4vKipcbiAqIENsZWFycyBhbGwgcm91dGUgb3ZlcnJpZGVzLiBJbiBwcm9kdWN0aW9uLCB0aGlzIGlzIGEgbm8tb3AuXG4gKiBUaGUgYXBwIG11c3QgYmUgcmVsb2FkZWQgZm9yIHRoZSByZW1vdmFsIHRvIHRha2UgZWZmZWN0LlxuICovIGV4cG9ydCBmdW5jdGlvbiByZXNldFJvdXRlTWFwT3ZlcnJpZGVzKCkge1xuICAgIGlmICghZGV2TW9kZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tTZWN1cml0eV0gUm91dGUgb3ZlcnJpZGVzIGFyZSBkaXNhYmxlZCBvdXRzaWRlIGRldmVsb3BtZW50IG1vZGUuJyk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3Qga2V5c1RvUmVtb3ZlID0gW107XG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBsb2NhbFN0b3JhZ2UubGVuZ3RoOyBpKyspe1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gbG9jYWxTdG9yYWdlLmtleShpKTtcbiAgICAgICAgICAgIGlmIChrZXk/LnN0YXJ0c1dpdGgoT1ZFUlJJREVfUFJFRklYKSkge1xuICAgICAgICAgICAgICAgIGtleXNUb1JlbW92ZS5wdXNoKGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAga2V5c1RvUmVtb3ZlLmZvckVhY2goKGtleSk9PmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSkpO1xuICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoQ0hBTkdFX0VWRU5UKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tyb3V0ZS1tYXBzXSBGYWlsZWQgdG8gY2xlYXIgcm91dGUgb3ZlcnJpZGVzIGZyb20gbG9jYWxTdG9yYWdlJywgZSk7XG4gICAgfVxufVxuLyoqXG4gKiBJbml0aWFsaXplcyB0aGUgcm91dGUgbWFwIG92ZXJyaWRlIHN5c3RlbSB3aXRoIG1vZGUtYXdhcmUgYmVoYXZpb3IuXG4gKlxuICogSW4gcHJvZHVjdGlvbiAoYHdpbmRvdy5zcGFFbnYgIT09ICdkZXZlbG9wbWVudCdgKSwgbXV0YXRpb24gZnVuY3Rpb25zIGFyZVxuICogbm8tb3BzIGFuZCBsb2NhbFN0b3JhZ2Ugb3ZlcnJpZGVzIGFyZSBuZXZlciBjb25zdWx0ZWQuIEluIGRldmVsb3BtZW50LCB0aGVcbiAqIGZ1bGwgb3ZlcnJpZGUgd29ya2Zsb3cgaXMgYXZhaWxhYmxlLlxuICpcbiAqIE11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhlIHJvdXRlIG1hcCBmdW5jdGlvbnMuXG4gKi8gbGV0IHNldHVwUHJvbWlzZSA9IG51bGw7XG5leHBvcnQgZnVuY3Rpb24gc2V0dXBSb3V0ZU1hcE92ZXJyaWRlcygpIHtcbiAgICBpZiAoc2V0dXBQcm9taXNlKSB7XG4gICAgICAgIHJldHVybiBzZXR1cFByb21pc2U7XG4gICAgfVxuICAgIGRldk1vZGUgPSB3aW5kb3cuc3BhRW52ID09PSAnZGV2ZWxvcG1lbnQnO1xuICAgIGlmIChkZXZNb2RlKSB7XG4gICAgICAgIHNldHVwUHJvbWlzZSA9IHJlYWRPdmVycmlkZU1hcCgpLnRoZW4oKHNuYXBzaG90KT0+e1xuICAgICAgICAgICAgaW5pdGlhbE92ZXJyaWRlU25hcHNob3QgPSBzbmFwc2hvdDtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgc2V0dXBQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuICAgIHJldHVybiBzZXR1cFByb21pc2U7XG59XG4iXSwibmFtZXMiOlsiaXNPcGVubXJzQXBwUm91dGVzIiwiaXNPcGVubXJzUm91dGVzIiwiT1ZFUlJJREVfUFJFRklYIiwiQ0hBTkdFX0VWRU5UIiwiZGV2TW9kZSIsImluaXRpYWxPdmVycmlkZVNuYXBzaG90IiwiYmFzZU1hcFByb21pc2UiLCJyZWFkQmFzZU1hcCIsImxvYWRCYXNlTWFwIiwibWFwIiwiY29tcGxldGUiLCJzY3JpcHRzIiwibWFwcyIsImkiLCJzY3JpcHQiLCJwYXJzZWQiLCJyZXNwb25zZSIsImUiLCJkb2N1bWVudCIsImZldGNoIiwiRXJyb3IiLCJKU09OIiwiY29uc29sZSIsIm1lcmdlUm91dGVNYXBzIiwibWVyZ2VkIiwiX2l0ZXJhdG9yRXJyb3IiLCJfdHlwZV9vZiIsIkFycmF5IiwiT2JqZWN0IiwidW5kZWZpbmVkIiwicmVhZE92ZXJyaWRlTWFwIiwicmVzdWx0IiwiZW50cmllcyIsImtleSIsInJhdyIsInNldHRsZWQiLCJlbnRyeSIsImxvY2FsU3RvcmFnZSIsIlByb21pc2UiLCJtb2R1bGVOYW1lIiwiZmV0Y2hlZCIsImdldEN1cnJlbnRSb3V0ZU1hcCIsImJhc2UiLCJvdmVycmlkZXMiLCJnZXRSb3V0ZU1hcERlZmF1bHRNYXAiLCJnZXRSb3V0ZU1hcE5leHRQYWdlTWFwIiwiZ2V0Um91dGVNYXBPdmVycmlkZU1hcCIsInZhbHVlIiwiYWRkUm91dGVNYXBPdmVycmlkZSIsInJvdXRlcyIsIm1heWJlUm91dGVzIiwiX2luc3RhbmNlb2YiLCJVUkwiLCJ3aW5kb3ciLCJDdXN0b21FdmVudCIsInJlbW92ZVJvdXRlTWFwT3ZlcnJpZGUiLCJyZXNldFJvdXRlTWFwT3ZlcnJpZGVzIiwia2V5c1RvUmVtb3ZlIiwic2V0dXBQcm9taXNlIiwic2V0dXBSb3V0ZU1hcE92ZXJyaWRlcyIsInNuYXBzaG90Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0NBQWdDLEdBQThFO0FBQzlHLElBQU1FLGtCQUFrQjtBQUN4QixJQUFNQyxlQUFlO0FBQ3JCLHNGQUFzRjtBQUN0RixJQUFJQyxVQUFVO0FBQ2QsaUZBQWlGO0FBQ2pGLCtFQUErRTtBQUMvRSxJQUFJQywwQkFBMEI7QUFDOUIsMkZBQTJGO0FBQzNGLElBQUlDLGlCQUFpQjtBQUNyQjs7Ozs7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\n//# sourceURL=webpack-internal:///../../framework/esm-dynamic-loading/dist/route-maps.js\n\n}");
5634
5634
 
5635
5635
  },
5636
5636
  "../../framework/esm-emr-api/dist/attachments.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {