@openmrs/esm-app-shell 5.6.1-pre.2043 → 5.6.1-pre.2049
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +13 -12
- package/dist/{0f85df5904268497.js → 9721ed8625f19bc5.js} +1 -1
- package/dist/index.html +1 -1
- package/dist/{openmrs.077309a7d51cfd88.js → openmrs.14e6b3ef8c51361e.js} +2 -2
- package/dist/{openmrs.077309a7d51cfd88.js.map → openmrs.14e6b3ef8c51361e.js.map} +1 -1
- package/dist/service-worker.js +1 -1
- package/lib/{8242b87762734207.js → 440062c00b94bf59.js} +1 -1
- package/lib/esm-devtools-app/889.js +1 -1
- package/lib/esm-devtools-app/main.js +1 -1
- package/lib/esm-devtools-app/openmrs-esm-devtools-app.js +1 -1
- package/lib/esm-devtools-app/openmrs-esm-devtools-app.js.buildmanifest.json +3 -3
- package/lib/esm-devtools-app/routes.json +1 -1
- package/lib/esm-help-menu-app/889.js +1 -1
- package/lib/esm-help-menu-app/main.js +1 -1
- package/lib/esm-help-menu-app/openmrs-esm-help-menu-app.js +1 -1
- package/lib/esm-help-menu-app/openmrs-esm-help-menu-app.js.buildmanifest.json +3 -3
- package/lib/esm-help-menu-app/routes.json +1 -1
- package/lib/esm-login-app/889.js +1 -1
- package/lib/esm-login-app/main.js +1 -1
- package/lib/esm-login-app/openmrs-esm-login-app.js +1 -1
- package/lib/esm-login-app/openmrs-esm-login-app.js.buildmanifest.json +3 -3
- package/lib/esm-login-app/routes.json +1 -1
- package/lib/esm-offline-tools-app/889.js +1 -1
- package/lib/esm-offline-tools-app/main.js +1 -1
- package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js +1 -1
- package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js.buildmanifest.json +3 -3
- package/lib/esm-offline-tools-app/routes.json +1 -1
- package/lib/esm-primary-navigation-app/889.js +1 -1
- package/lib/esm-primary-navigation-app/main.js +1 -1
- package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js +1 -1
- package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js.buildmanifest.json +3 -3
- package/lib/esm-primary-navigation-app/routes.json +1 -1
- package/lib/index.html +2 -2
- package/lib/openmrs.js +6 -6
- package/lib/service-worker.js +2 -2
- package/package.json +3 -3
- package/lib/esm-implementer-tools-app/271.js +0 -1
- package/lib/esm-implementer-tools-app/319.js +0 -1
- package/lib/esm-implementer-tools-app/426.js +0 -1
- package/lib/esm-implementer-tools-app/426.js.map +0 -1
- package/lib/esm-implementer-tools-app/460.js +0 -1
- package/lib/esm-implementer-tools-app/482.js +0 -1
- package/lib/esm-implementer-tools-app/482.js.map +0 -1
- package/lib/esm-implementer-tools-app/523.js +0 -2
- package/lib/esm-implementer-tools-app/523.js.LICENSE.txt +0 -19
- package/lib/esm-implementer-tools-app/523.js.map +0 -1
- package/lib/esm-implementer-tools-app/528.js +0 -1
- package/lib/esm-implementer-tools-app/528.js.map +0 -1
- package/lib/esm-implementer-tools-app/56.js +0 -1
- package/lib/esm-implementer-tools-app/56.js.map +0 -1
- package/lib/esm-implementer-tools-app/560.js +0 -1
- package/lib/esm-implementer-tools-app/560.js.map +0 -1
- package/lib/esm-implementer-tools-app/574.js +0 -1
- package/lib/esm-implementer-tools-app/587.js +0 -1
- package/lib/esm-implementer-tools-app/587.js.map +0 -1
- package/lib/esm-implementer-tools-app/620.js +0 -2
- package/lib/esm-implementer-tools-app/620.js.LICENSE.txt +0 -38
- package/lib/esm-implementer-tools-app/620.js.map +0 -1
- package/lib/esm-implementer-tools-app/625.js +0 -1
- package/lib/esm-implementer-tools-app/644.js +0 -1
- package/lib/esm-implementer-tools-app/657.js +0 -1
- package/lib/esm-implementer-tools-app/657.js.map +0 -1
- package/lib/esm-implementer-tools-app/71.js +0 -1
- package/lib/esm-implementer-tools-app/71.js.map +0 -1
- package/lib/esm-implementer-tools-app/735.js +0 -2
- package/lib/esm-implementer-tools-app/735.js.LICENSE.txt +0 -9
- package/lib/esm-implementer-tools-app/735.js.map +0 -1
- package/lib/esm-implementer-tools-app/757.js +0 -1
- package/lib/esm-implementer-tools-app/788.js +0 -2
- package/lib/esm-implementer-tools-app/788.js.LICENSE.txt +0 -19
- package/lib/esm-implementer-tools-app/788.js.map +0 -1
- package/lib/esm-implementer-tools-app/791.js +0 -1
- package/lib/esm-implementer-tools-app/791.js.map +0 -1
- package/lib/esm-implementer-tools-app/803.js +0 -2
- package/lib/esm-implementer-tools-app/803.js.LICENSE.txt +0 -5
- package/lib/esm-implementer-tools-app/803.js.map +0 -1
- package/lib/esm-implementer-tools-app/807.js +0 -1
- package/lib/esm-implementer-tools-app/833.js +0 -1
- package/lib/esm-implementer-tools-app/889.js +0 -2
- package/lib/esm-implementer-tools-app/889.js.LICENSE.txt +0 -3
- package/lib/esm-implementer-tools-app/889.js.map +0 -1
- package/lib/esm-implementer-tools-app/main.js +0 -2
- package/lib/esm-implementer-tools-app/main.js.LICENSE.txt +0 -5
- package/lib/esm-implementer-tools-app/main.js.map +0 -1
- package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js +0 -1
- package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js.buildmanifest.json +0 -678
- package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js.map +0 -1
- package/lib/esm-implementer-tools-app/routes.json +0 -1
- /package/dist/{openmrs.077309a7d51cfd88.js.LICENSE.txt → openmrs.14e6b3ef8c51361e.js.LICENSE.txt} +0 -0
package/lib/openmrs.js
CHANGED
|
@@ -8277,7 +8277,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n\n//# sourceURL=[module]\n//#
|
|
|
8277
8277
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8278
8278
|
|
|
8279
8279
|
"use strict";
|
|
8280
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ canCloseWorkspaceWithoutPrompting: () => (/* binding */ canCloseWorkspaceWithoutPrompting),\n/* harmony export */ cancelPrompt: () => (/* binding */ cancelPrompt),\n/* harmony export */ changeWorkspaceContext: () => (/* binding */ changeWorkspaceContext),\n/* harmony export */ closeAllWorkspaces: () => (/* binding */ closeAllWorkspaces),\n/* harmony export */ closeWorkspace: () => (/* binding */ closeWorkspace),\n/* harmony export */ getPromptBeforeClosingFcn: () => (/* binding */ getPromptBeforeClosingFcn),\n/* harmony export */ getWorkspaceStore: () => (/* binding */ getWorkspaceStore),\n/* harmony export */ launchWorkspace: () => (/* binding */ launchWorkspace),\n/* harmony export */ navigateAndLaunchWorkspace: () => (/* binding */ navigateAndLaunchWorkspace),\n/* harmony export */ promptBeforeClosing: () => (/* binding */ promptBeforeClosing),\n/* harmony export */ registerWorkspace: () => (/* binding */ registerWorkspace),\n/* harmony export */ resetWorkspaceStore: () => (/* binding */ resetWorkspaceStore),\n/* harmony export */ showWorkspacePrompts: () => (/* binding */ showWorkspacePrompts),\n/* harmony export */ updateWorkspaceWindowState: () => (/* binding */ updateWorkspaceWindowState),\n/* harmony export */ useWorkspaces: () => (/* binding */ useWorkspaces),\n/* harmony export */ workspaceStore: () => (/* binding */ workspaceStore)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-extensions */ \"../../framework/esm-extensions/src/index.ts\");\n/* harmony import */ var _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @openmrs/esm-react-utils */ \"../../framework/esm-react-utils/src/index.ts\");\n/* harmony import */ var _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @openmrs/esm-navigation */ \"../../framework/esm-navigation/src/index.ts\");\n/* harmony import */ var _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @openmrs/esm-state */ \"../../framework/esm-state/src/index.ts\");\n/* harmony import */ var _openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @openmrs/esm-translations */ \"../../framework/esm-translations/src/index.ts\");\n/** @module @category Workspace */ function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(arr);\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\n\n\n\n\n\n\nvar workspaceRegistrationStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_4__.createGlobalStore)(\"workspaceRegistrations\", {\n workspaces: {}\n});\n/**\n * Tells the workspace system about a workspace. This is used by the app shell\n * to register workspaces defined in the `routes.json` file.\n * @internal\n */ function registerWorkspace(workspace) {\n var _workspace_preferredWindowSize, _workspace_type, _workspace_canHide, _workspace_canMaximize, _workspace_width, _workspace_hasOwnSidebar, _workspace_sidebarFamily;\n workspaceRegistrationStore.setState(function(state) {\n return {\n workspaces: _object_spread_props(_object_spread({}, state.workspaces), _define_property({}, workspace.name, _object_spread_props(_object_spread({}, workspace), {\n preferredWindowSize: (_workspace_preferredWindowSize = workspace.preferredWindowSize) !== null && _workspace_preferredWindowSize !== void 0 ? _workspace_preferredWindowSize : \"normal\",\n type: (_workspace_type = workspace.type) !== null && _workspace_type !== void 0 ? _workspace_type : \"form\",\n canHide: (_workspace_canHide = workspace.canHide) !== null && _workspace_canHide !== void 0 ? _workspace_canHide : false,\n canMaximize: (_workspace_canMaximize = workspace.canMaximize) !== null && _workspace_canMaximize !== void 0 ? _workspace_canMaximize : false,\n width: (_workspace_width = workspace.width) !== null && _workspace_width !== void 0 ? _workspace_width : \"narrow\",\n hasOwnSidebar: (_workspace_hasOwnSidebar = workspace.hasOwnSidebar) !== null && _workspace_hasOwnSidebar !== void 0 ? _workspace_hasOwnSidebar : false,\n sidebarFamily: (_workspace_sidebarFamily = workspace.sidebarFamily) !== null && _workspace_sidebarFamily !== void 0 ? _workspace_sidebarFamily : \"default\"\n })))\n };\n });\n}\nvar workspaceExtensionWarningsIssued = new Set();\n/**\n * This exists for compatibility with the old way of registering\n * workspaces (as extensions).\n *\n * @param name of the workspace\n */ function getWorkspaceRegistration(name) {\n var registeredWorkspaces = workspaceRegistrationStore.getState().workspaces;\n if (registeredWorkspaces[name]) {\n return registeredWorkspaces[name];\n } else {\n var workspaceExtension = (0,_openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_1__.getExtensionRegistration)(name);\n if (workspaceExtension) {\n var _workspaceExtension_meta, _workspaceExtension_meta1, _workspaceExtension_meta2, _workspaceExtension_meta3, _workspaceExtension_meta4;\n if (!workspaceExtensionWarningsIssued.has(name)) {\n console.warn(\"The workspace '\".concat(name, '\\' is registered as an extension. This is deprecated. Please register it in the \"workspaces\" section of the routes.json file.'));\n workspaceExtensionWarningsIssued.add(name);\n }\n var _workspaceExtension_meta_screenSize, _workspaceExtension_meta_type, _workspaceExtension_meta_canHide, _workspaceExtension_meta_canMaximize, _workspaceExtension_meta_width;\n return {\n name: workspaceExtension.name,\n title: getTitleFromExtension(workspaceExtension),\n moduleName: workspaceExtension.moduleName,\n preferredWindowSize: (_workspaceExtension_meta_screenSize = (_workspaceExtension_meta = workspaceExtension.meta) === null || _workspaceExtension_meta === void 0 ? void 0 : _workspaceExtension_meta.screenSize) !== null && _workspaceExtension_meta_screenSize !== void 0 ? _workspaceExtension_meta_screenSize : \"normal\",\n load: workspaceExtension.load,\n type: (_workspaceExtension_meta_type = (_workspaceExtension_meta1 = workspaceExtension.meta) === null || _workspaceExtension_meta1 === void 0 ? void 0 : _workspaceExtension_meta1.type) !== null && _workspaceExtension_meta_type !== void 0 ? _workspaceExtension_meta_type : \"form\",\n canHide: (_workspaceExtension_meta_canHide = (_workspaceExtension_meta2 = workspaceExtension.meta) === null || _workspaceExtension_meta2 === void 0 ? void 0 : _workspaceExtension_meta2.canHide) !== null && _workspaceExtension_meta_canHide !== void 0 ? _workspaceExtension_meta_canHide : false,\n canMaximize: (_workspaceExtension_meta_canMaximize = (_workspaceExtension_meta3 = workspaceExtension.meta) === null || _workspaceExtension_meta3 === void 0 ? void 0 : _workspaceExtension_meta3.canMaximize) !== null && _workspaceExtension_meta_canMaximize !== void 0 ? _workspaceExtension_meta_canMaximize : false,\n width: (_workspaceExtension_meta_width = (_workspaceExtension_meta4 = workspaceExtension.meta) === null || _workspaceExtension_meta4 === void 0 ? void 0 : _workspaceExtension_meta4.width) !== null && _workspaceExtension_meta_width !== void 0 ? _workspaceExtension_meta_width : \"narrow\",\n sidebarFamily: \"default\",\n hasOwnSidebar: false\n };\n } else {\n throw new Error(\"No workspace named '\".concat(name, \"' has been registered.\"));\n }\n }\n}\nfunction getTitleFromExtension(ext) {\n var _ext_meta;\n var title = ext === null || ext === void 0 ? void 0 : (_ext_meta = ext.meta) === null || _ext_meta === void 0 ? void 0 : _ext_meta.title;\n if (typeof title === \"string\") {\n return title;\n } else if (title && typeof title === \"object\") {\n return (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.translateFrom)(ext.moduleName, title.key, title.default);\n }\n return ext.name;\n}\n/**\n *\n * @param name Name of the workspace\n * @param ignoreChanges If set to true, the \"unsaved changes\" modal will never be shown, even if the `promptBeforeClosing` function returns true. The user will not be prompted before closing.\n * @returns true if the workspace can be closed.\n */ function canCloseWorkspaceWithoutPrompting(name) {\n var ignoreChanges = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n if (ignoreChanges) {\n return true;\n }\n var promptBeforeFn = getPromptBeforeClosingFcn(name);\n return !promptBeforeFn || !promptBeforeFn();\n}\nfunction promptBeforeLaunchingWorkspace(workspace, newWorkspaceDetails) {\n var name = newWorkspaceDetails.name, additionalProps = newWorkspaceDetails.additionalProps;\n var proceed = function() {\n workspace.closeWorkspace({\n ignoreChanges: true,\n // Calling the launchWorkspace again, since one of the `if` case\n // might resolve, but we need to check all the cases before launching the form.\n onWorkspaceClose: function() {\n return launchWorkspace(name, additionalProps);\n }\n });\n };\n if (!canCloseWorkspaceWithoutPrompting(workspace.name)) {\n var _workspace_title;\n showWorkspacePrompts(\"closing-workspace-launching-new-workspace\", proceed, (_workspace_title = workspace.title) !== null && _workspace_title !== void 0 ? _workspace_title : workspace.name);\n } else {\n proceed();\n }\n}\n/**\n * This launches a workspace by its name. The workspace must have been registered.\n * Workspaces should be registered in the `routes.json` file.\n *\n * For the workspace to appear, there must be either a `<WorkspaceOverlay />` or\n * a `<WorkspaceWindow />` component rendered.\n *\n * The behavior of this function is as follows:\n *\n * - If no workspaces are open, or if no other workspaces with the same type are open,\n * it will be opened and focused.\n * - If a workspace with the same name is already open, it will be displayed/focused,\n * if it was not already.\n * - If a workspace is launched and a workspace which cannot be hidden is already open,\n * a confirmation modal will pop up warning about closing the currently open workspace.\n * - If another workspace with the same type is open, the workspace will be brought to\n * the front and then a confirmation modal will pop up warning about closing the opened\n * workspace\n *\n * Note that this function just manipulates the workspace store. The UI logic is handled\n * by the components that display workspaces.\n *\n * Additional props can be passed to the workspace component being launched. Passing a\n * prop named `workspaceTitle` will override the title of the workspace.\n *\n * @param name The name of the workspace to launch\n * @param additionalProps Props to pass to the workspace component being launched. Passing\n * a prop named `workspaceTitle` will override the title of the workspace.\n */ function launchWorkspace(name, additionalProps) {\n var updateStoreWithNewWorkspace = function updateStoreWithNewWorkspace(workspaceToBeAdded, restOfTheWorkspaces) {\n store.setState(function(state) {\n var openWorkspaces = [\n workspaceToBeAdded\n ].concat(_to_consumable_array(restOfTheWorkspaces !== null && restOfTheWorkspaces !== void 0 ? restOfTheWorkspaces : state.openWorkspaces));\n var workspaceWindowState = getUpdatedWorkspaceWindowState(openWorkspaces[0]);\n return _object_spread_props(_object_spread({}, state), {\n openWorkspaces: openWorkspaces,\n workspaceWindowState: workspaceWindowState\n });\n });\n };\n var store = getWorkspaceStore();\n var workspace = getWorkspaceRegistration(name);\n var newWorkspace = _object_spread_props(_object_spread({}, workspace), {\n title: getWorkspaceTitle(workspace, additionalProps),\n closeWorkspace: function() {\n var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n return closeWorkspace(name, options);\n },\n closeWorkspaceWithSavedChanges: function(options) {\n return closeWorkspace(name, _object_spread({\n ignoreChanges: true\n }, options));\n },\n promptBeforeClosing: function(testFcn) {\n return promptBeforeClosing(name, testFcn);\n },\n setTitle: function(title, titleNode) {\n newWorkspace.title = title;\n newWorkspace.titleNode = titleNode;\n store.setState(function(state) {\n var openWorkspaces = state.openWorkspaces.map(function(w) {\n return w.name === name ? newWorkspace : w;\n });\n return _object_spread_props(_object_spread({}, state), {\n openWorkspaces: openWorkspaces\n });\n });\n },\n additionalProps: additionalProps !== null && additionalProps !== void 0 ? additionalProps : {}\n });\n var openWorkspaces = store.getState().openWorkspaces;\n var workspaceIndexInOpenWorkspaces = openWorkspaces.findIndex(function(w) {\n return w.name === name;\n });\n var isWorkspaceAlreadyOpen = workspaceIndexInOpenWorkspaces >= 0;\n var openedWorkspaceWithSameType = openWorkspaces.find(function(w) {\n return w.type == newWorkspace.type;\n });\n if (openWorkspaces.length === 0) {\n updateStoreWithNewWorkspace(newWorkspace);\n } else if (!openWorkspaces[0].canHide && workspaceIndexInOpenWorkspaces !== 0) {\n promptBeforeLaunchingWorkspace(openWorkspaces[0], {\n name: name,\n additionalProps: additionalProps\n });\n } else if (isWorkspaceAlreadyOpen) {\n var openWorkspace = openWorkspaces[workspaceIndexInOpenWorkspaces];\n // Only update the title if it hasn't been set by `setTitle`\n if (openWorkspace.title == getWorkspaceTitle(openWorkspace, openWorkspace.additionalProps)) {\n openWorkspace.title = getWorkspaceTitle(openWorkspace, newWorkspace.additionalProps);\n }\n openWorkspace.additionalProps = newWorkspace.additionalProps;\n var restOfTheWorkspaces = openWorkspaces.filter(function(w) {\n return w.name != name;\n });\n updateStoreWithNewWorkspace(openWorkspaces[workspaceIndexInOpenWorkspaces], restOfTheWorkspaces);\n } else if (openedWorkspaceWithSameType) {\n var restOfTheWorkspaces1 = store.getState().openWorkspaces.filter(function(w) {\n return w.type != newWorkspace.type;\n });\n updateStoreWithNewWorkspace(openedWorkspaceWithSameType, restOfTheWorkspaces1);\n promptBeforeLaunchingWorkspace(openedWorkspaceWithSameType, {\n name: name,\n additionalProps: additionalProps\n });\n } else {\n updateStoreWithNewWorkspace(newWorkspace);\n }\n}\n/**\n * Use this function to navigate to a new page and launch a workspace on that page.\n *\n * @param options.targetUrl: The URL to navigate to. Will be passed to [[navigate]].\n * @param options.contextKey: The context key used by the target page.\n * @param options.workspaceName: The name of the workspace to launch.\n * @param options.additionalProps: Additional props to pass to the workspace component being launched.\n */ function navigateAndLaunchWorkspace(param) {\n var targetUrl = param.targetUrl, contextKey = param.contextKey, workspaceName = param.workspaceName, additionalProps = param.additionalProps;\n changeWorkspaceContext(contextKey);\n launchWorkspace(workspaceName, additionalProps);\n (0,_openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_3__.navigate)({\n to: targetUrl\n });\n}\nvar promptBeforeClosingFcns = {};\nfunction promptBeforeClosing(workspaceName, testFcn) {\n promptBeforeClosingFcns[workspaceName] = testFcn;\n}\nfunction getPromptBeforeClosingFcn(workspaceName) {\n return promptBeforeClosingFcns[workspaceName];\n}\nfunction cancelPrompt() {\n var store = getWorkspaceStore();\n var state = store.getState();\n store.setState(_object_spread_props(_object_spread({}, state), {\n prompt: null\n }));\n}\n/**\n * Function to close an opened workspace\n * @param name Workspace registration name\n * @param options Options to close workspace\n */ function closeWorkspace(name) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {\n ignoreChanges: false,\n onWorkspaceClose: function() {}\n };\n var store = getWorkspaceStore();\n var updateStoreWithClosedWorkspace = function() {\n var _options_onWorkspaceClose;\n var state = store.getState();\n var newOpenWorkspaces = state.openWorkspaces.filter(function(w) {\n return w.name != name;\n });\n // ensure closed workspace will not prompt\n promptBeforeClosing(name, function() {\n return false;\n });\n store.setState(_object_spread_props(_object_spread({}, state), {\n prompt: null,\n openWorkspaces: newOpenWorkspaces,\n workspaceWindowState: getUpdatedWorkspaceWindowState(newOpenWorkspaces === null || newOpenWorkspaces === void 0 ? void 0 : newOpenWorkspaces[0])\n }));\n options === null || options === void 0 ? void 0 : (_options_onWorkspaceClose = options.onWorkspaceClose) === null || _options_onWorkspaceClose === void 0 ? void 0 : _options_onWorkspaceClose.call(options);\n };\n if (!canCloseWorkspaceWithoutPrompting(name, options === null || options === void 0 ? void 0 : options.ignoreChanges)) {\n var _getWorkspaceRegistration_title;\n var currentName = (_getWorkspaceRegistration_title = getWorkspaceRegistration(name).title) !== null && _getWorkspaceRegistration_title !== void 0 ? _getWorkspaceRegistration_title : name;\n showWorkspacePrompts(\"closing-workspace\", updateStoreWithClosedWorkspace, currentName);\n return false;\n } else {\n updateStoreWithClosedWorkspace();\n return true;\n }\n}\n/**\n * The set of workspaces is specific to a particular page. This function\n * should be used when transitioning to a new page. If the current\n * workspace data is for a different page, the workspace state is cleared.\n *\n * This is called by the workspace components when they mount.\n * @internal\n *\n * @param contextKey An arbitrary key to identify the current page\n */ function changeWorkspaceContext(contextKey) {\n var store = getWorkspaceStore();\n var state = store.getState();\n if (state.context != contextKey) {\n store.setState({\n context: contextKey,\n openWorkspaces: [],\n prompt: null\n });\n }\n}\nvar initialState = {\n context: \"\",\n openWorkspaces: [],\n prompt: null,\n workspaceWindowState: \"normal\"\n};\nvar workspaceStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_4__.createGlobalStore)(\"workspace\", initialState);\nfunction getWorkspaceStore() {\n return (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_4__.getGlobalStore)(\"workspace\", initialState);\n}\nfunction updateWorkspaceWindowState(value) {\n var store = getWorkspaceStore();\n var state = store.getState();\n store.setState(_object_spread_props(_object_spread({}, state), {\n workspaceWindowState: value\n }));\n}\nfunction getUpdatedWorkspaceWindowState(workspaceAtTop) {\n var _workspaceAtTop_preferredWindowSize;\n return (_workspaceAtTop_preferredWindowSize = workspaceAtTop === null || workspaceAtTop === void 0 ? void 0 : workspaceAtTop.preferredWindowSize) !== null && _workspaceAtTop_preferredWindowSize !== void 0 ? _workspaceAtTop_preferredWindowSize : \"normal\";\n}\nfunction closeAllWorkspaces() {\n var onClosingWorkspaces = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : function() {};\n var store = getWorkspaceStore();\n var canCloseAllWorkspaces = store.getState().openWorkspaces.every(function(param) {\n var name = param.name;\n var canCloseWorkspace = canCloseWorkspaceWithoutPrompting(name);\n return canCloseWorkspace;\n });\n var updateWorkspaceStore = function() {\n resetWorkspaceStore();\n onClosingWorkspaces === null || onClosingWorkspaces === void 0 ? void 0 : onClosingWorkspaces();\n };\n if (!canCloseAllWorkspaces) {\n showWorkspacePrompts(\"closing-all-workspaces\", updateWorkspaceStore);\n } else {\n updateWorkspaceStore();\n }\n}\nfunction useWorkspaces() {\n var _useStore = (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_2__.useStore)(workspaceStore), workspaceWindowState = _useStore.workspaceWindowState, openWorkspaces = _useStore.openWorkspaces, prompt = _useStore.prompt;\n var memoisedResults = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return {\n active: openWorkspaces.length > 0,\n prompt: prompt,\n workspaceWindowState: workspaceWindowState,\n workspaces: openWorkspaces\n };\n }, [\n openWorkspaces,\n workspaceWindowState,\n prompt\n ]);\n return memoisedResults;\n}\n/**\n * Sets the current prompt according to the prompt type.\n * @param promptType Determines the text and behavior of the prompt\n * @param onConfirmation Function to be called after the user confirms to close the workspace\n * @param workspaceTitle Workspace title to be shown in the prompt\n * @returns\n */ function showWorkspacePrompts(promptType) {\n var onConfirmation = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : function() {}, workspaceTitle = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : \"\";\n var store = getWorkspaceStore();\n var prompt;\n switch(promptType){\n case \"closing-workspace\":\n {\n prompt = {\n title: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)(\"unsavedChangesTitleText\", \"Unsaved Changes\"),\n body: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)(\"unsavedChangesInOpenedWorkspace\", \"You have unsaved changes in the opened workspace. Do you want to discard these changes?\"),\n onConfirm: function() {\n onConfirmation === null || onConfirmation === void 0 ? void 0 : onConfirmation();\n },\n confirmText: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)(\"discard\", \"Discard\")\n };\n break;\n }\n case \"closing-all-workspaces\":\n {\n var workspacesNotClosed = store.getState().openWorkspaces.filter(function(param) {\n var name = param.name;\n return !canCloseWorkspaceWithoutPrompting(name);\n }).map(function(param, indx) {\n var title = param.title;\n return \"\".concat(indx + 1, \". \").concat(title);\n });\n prompt = {\n title: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)(\"closingAllWorkspacesPromptTitle\", \"You have unsaved changes\"),\n body: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)(\"closingAllWorkspacesPromptBody\", \"There are unsaved changes in the following workspaces. Do you want to discard changes in the following workspaces? {{workspaceNames}}\", {\n workspaceNames: workspacesNotClosed.join(\",\")\n }),\n onConfirm: function() {\n onConfirmation === null || onConfirmation === void 0 ? void 0 : onConfirmation();\n },\n confirmText: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)(\"closeAllOpenedWorkspaces\", \"Discard changes in {{count}} workspaces\", {\n count: workspacesNotClosed.length\n })\n };\n break;\n }\n case \"closing-workspace-launching-new-workspace\":\n {\n prompt = {\n title: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)(\"unsavedChangesTitleText\", \"Unsaved Changes\"),\n body: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)(\"unsavedChangesInWorkspace\", \"There are unsaved changes in {{workspaceName}}. Please save them before opening another workspace.\", {\n workspaceName: workspaceTitle\n }),\n onConfirm: function() {\n store.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n prompt: null\n });\n });\n onConfirmation === null || onConfirmation === void 0 ? void 0 : onConfirmation();\n },\n confirmText: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)(\"openAnyway\", \"Open anyway\")\n };\n break;\n }\n default:\n {\n console.error('Workspace system trying to open unknown prompt type \"'.concat(promptType, '\" in function \"showWorkspacePrompts\"'));\n onConfirmation === null || onConfirmation === void 0 ? void 0 : onConfirmation();\n return;\n }\n }\n store.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n prompt: prompt\n });\n });\n}\nfunction getWorkspaceTitle(workspace, additionalProps) {\n var _additionalProps_workspaceTitle;\n return (_additionalProps_workspaceTitle = additionalProps === null || additionalProps === void 0 ? void 0 : additionalProps[\"workspaceTitle\"]) !== null && _additionalProps_workspaceTitle !== void 0 ? _additionalProps_workspaceTitle : (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.translateFrom)(workspace.moduleName, workspace.title, workspace.title);\n}\nfunction resetWorkspaceStore() {\n getWorkspaceStore().setState(initialState);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy93b3Jrc3BhY2VzL3dvcmtzcGFjZXMudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnQ0FBZ0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ2dCO0FBRytDO0FBRTNDO0FBQ0Q7QUFDb0I7QUFDTztBQTRDOUUsSUFBTVEsNkJBQTZCSCxxRUFBaUJBLENBQTZCLDBCQUEwQjtJQUN6R0ksWUFBWSxDQUFDO0FBQ2Y7QUFpQkE7Ozs7Q0FJQyxHQUNNLFNBQVNDLGtCQUFrQkMsU0FBbUMsRUFBRTtRQU0xQ0EsZ0NBQ2ZBLGlCQUNHQSxvQkFDSUEsd0JBQ05BLGtCQUNRQSwwQkFDQUE7SUFYckJILDJCQUEyQkksUUFBUSxDQUFDLFNBQUNDO2VBQVc7WUFDOUNKLFlBQVksd0NBQ1BJLE1BQU1KLFVBQVUsR0FDbkIscUJBQUNFLFVBQVVHLElBQUksRUFBRyx3Q0FDYkg7Z0JBQ0hJLHFCQUFxQkosQ0FBQUEsaUNBQUFBLFVBQVVJLG1CQUFtQixjQUE3QkosNENBQUFBLGlDQUFpQyxRQUFRO2dCQUM5REssTUFBTUwsQ0FBQUEsa0JBQUFBLFVBQVVLLElBQUksY0FBZEwsNkJBQUFBLGtCQUFrQixNQUFNO2dCQUM5Qk0sU0FBU04sQ0FBQUEscUJBQUFBLFVBQVVNLE9BQU8sY0FBakJOLGdDQUFBQSxxQkFBcUIsS0FBSztnQkFDbkNPLGFBQWFQLENBQUFBLHlCQUFBQSxVQUFVTyxXQUFXLGNBQXJCUCxvQ0FBQUEseUJBQXlCLEtBQUs7Z0JBQzNDUSxPQUFPUixDQUFBQSxtQkFBQUEsVUFBVVEsS0FBSyxjQUFmUiw4QkFBQUEsbUJBQW1CLFFBQVE7Z0JBQ2xDUyxlQUFlVCxDQUFBQSwyQkFBQUEsVUFBVVMsYUFBYSxjQUF2QlQsc0NBQUFBLDJCQUEyQixLQUFLO2dCQUMvQ1UsZUFBZVYs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Q0FDWCx3REFBbUUsT0FBWFgsWUFBVztnQkFFckVDLDJCQUFBQSw0QkFBQUEsS0FBQUEsSUFBQUE7Z0JBQ0E7WUFDRjtJQUNGO0lBQ0FwRCxNQUFNN0MsUUFBUSxDQUFDLFNBQUNDO2VBQVcsd0NBQUtBO1lBQU8yRSxRQUFBQTs7O0FBQ3pDLENBQUM7QUFFRCxTQUFTekIsa0JBQWtCcEQsU0FBZ0MsRUFBRXFDLGVBQXdCLEVBQUU7UUFDOUVBO0lBQVAsT0FBT0EsQ0FBQUEsa0NBQUFBLDRCQUFBQSw2QkFBQUEsS0FBQUEsSUFBQUEsZUFBaUIsQ0FBQyxpQkFBaUIsY0FBbkNBLDZDQUFBQSxrQ0FBdUN6Qyx3RUFBYUEsQ0FBQ0ksVUFBVXVCLFVBQVUsRUFBRXZCLFVBQVVxQixLQUFLLEVBQUVyQixVQUFVcUIsS0FBSyxDQUFDO0FBQ3JIO0FBRU8sU0FBU3dFLHNCQUFzQjtJQUNwQzNDLG9CQUFvQmpELFFBQVEsQ0FBQ2lGO0FBQy9CLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tc3R5bGVndWlkZS9zcmMvd29ya3NwYWNlcy93b3Jrc3BhY2VzLnRzP2MxNWUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IFdvcmtzcGFjZSAqL1xuaW1wb3J0IHsgdHlwZSBSZWFjdE5vZGUsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0eXBlIExpZmVDeWNsZXMgfSBmcm9tICdzaW5nbGUtc3BhJztcbmltcG9ydCBfaTE4biBmcm9tICdpMThuZXh0JztcbmltcG9ydCB7IHR5cGUgRXh0ZW5zaW9uUmVnaXN0cmF0aW9uLCBnZXRFeHRlbnNpb25SZWdpc3RyYXRpb24gfSBmcm9tICdAb3Blbm1ycy9lc20tZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyB0eXBlIFdvcmtzcGFjZVdpbmRvd1N0YXRlIH0gZnJvbSAnQG9wZW5tcnMvZXNtLWdsb2JhbHMnO1xuaW1wb3J0IHsgdXNlU3RvcmUgfSBmcm9tICdAb3Blbm1ycy9lc20tcmVhY3QtdXRpbHMnO1xuaW1wb3J0IHsgbmF2aWdhdGUgfSBmcm9tICdAb3Blbm1ycy9lc20tbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBnZXRHbG9iYWxTdG9yZSwgY3JlYXRlR2xvYmFsU3RvcmUgfSBmcm9tICdAb3Blbm1ycy9lc20tc3RhdGUnO1xuaW1wb3J0IHsgZ2V0Q29yZVRyYW5zbGF0aW9uLCB0cmFuc2xhdGVGcm9tIH0gZnJvbSAnQG9wZW5tcnMvZXNtLXRyYW5zbGF0aW9ucyc7XG5pbXBvcnQgeyB0eXBlIERlZmF1bHRXb3Jrc3BhY2VQcm9wcywgdHlwZSBDbG9zZVdvcmtzcGFjZU9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBQcm9tcHQge1xuICB0aXRsZTogc3RyaW5nO1xuICBib2R5OiBzdHJpbmc7XG4gIC8qKiBEZWZhdWx0cyB0byBcIkNvbmZpcm1cIiAqL1xuICBjb25maXJtVGV4dD86IHN0cmluZztcbiAgb25Db25maXJtKCk6IHZvaWQ7XG4gIC8qKiBEZWZhdWx0cyB0byBcIkNhbmNlbFwiICovXG4gIGNhbmNlbFRleHQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV29ya3NwYWNlU3RvcmVTdGF0ZSB7XG4gIGNvbnRleHQ6IHN0cmluZyB8IG51bGw7XG4gIG9wZW5Xb3Jrc3BhY2VzOiBBcnJheTxPcGVuV29ya3NwYWNlPjtcbiAgcHJvbXB0OiBQcm9tcHQgfCBudWxsO1xuICB3b3Jrc3BhY2VXaW5kb3dTdGF0ZTogV29ya3NwYWNlV2luZG93U3RhdGU7XG59XG5cbi8qKiBTZWUgW1tXb3Jrc3BhY2VEZWZpbml0aW9uXV0gZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlc2UgcHJvcGVydGllcyAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VSZWdpc3RyYXRpb24ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHRpdGxlTm9kZT86IFJlYWN0Tm9kZTtcbiAgdHlwZTogc3RyaW5nO1xuICBjYW5IaWRlOiBib29sZWFuO1xuICBjYW5NYXhpbWl6ZTogYm9vbGVhbjtcbiAgd2lkdGg6ICduYXJyb3cnIHwgJ3dpZGVyJyB8ICdleHRyYS13aWRlJztcbiAgaGFzT3duU2lkZWJhcjogYm9vbGVhbjtcbiAgc2lkZWJhckZhbWlseTogc3RyaW5nO1xuICBwcmVmZXJyZWRXaW5kb3dTaXplOiBXb3Jrc3BhY2VXaW5kb3dTdGF0ZTtcbiAgbG9hZDogKCkgPT4gUHJvbWlzZTx7IGRlZmF1bHQ/OiBMaWZlQ3ljbGVzIH0gJiBMaWZlQ3ljbGVzPjtcbiAgbW9kdWxlTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5Xb3Jrc3BhY2UgZXh0ZW5kcyBXb3Jrc3BhY2VSZWdpc3RyYXRpb24sIERlZmF1bHRXb3Jrc3BhY2VQcm9wcyB7XG4gIGFkZGl0aW9uYWxQcm9wczogb2JqZWN0O1xufVxuXG5pbnRlcmZhY2UgV29ya3NwYWNlUmVnaXN0cmF0aW9uU3RvcmUge1xuICB3b3Jrc3BhY2VzOiBSZWNvcmQ8c3RyaW5nLCBXb3Jrc3BhY2VSZWdpc3RyYXRpb24+O1xufVxuXG5jb25zdCB3b3Jrc3BhY2VSZWdpc3RyYXRpb25TdG9yZSA9IGNyZWF0ZUdsb2JhbFN0b3JlPFdvcmtzcGFjZVJlZ2lzdHJhdGlvblN0b3JlPignd29ya3NwYWNlUmVnaXN0cmF0aW9ucycsIHtcbiAgd29ya3NwYWNlczoge30sXG59KTtcblxuLyoqIFNlZSBbW1dvcmtzcGFjZURlZmluaXRpb25dXSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGVzZSBwcm9wZXJ0aWVzICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdGVyV29ya3NwYWNlT3B0aW9ucyB7XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgdHlwZT86IHN0cmluZztcbiAgY2FuSGlkZT86IGJvb2xlYW47XG4gIGNhbk1heGltaXplPzogYm9vbGVhbjtcbiAgd2lkdGg/OiAnbmFycm93JyB8ICd3aWRlcicgfCAnZXh0cmEtd2lkZSc7XG4gIGhhc093blNpZGViYXI/OiBib29sZWFuO1xuICBzaWRlYmFyRmFtaWx5Pzogc3RyaW5nO1xuICBwcmVmZXJyZWRXaW5kb3dTaXplPzogV29ya3NwYWNlV2luZG93U3RhdGU7XG4gIGxvYWQ6ICgpID0+IFByb21pc2U8eyBkZWZhdWx0PzogTGlmZUN5Y2xlcyB9ICYgTGlmZUN5Y2xlcz47XG4gIG1vZHVsZU5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUZWxscyB0aGUgd29ya3NwYWNlIHN5c3RlbSBhYm91dCBhIHdvcmtzcGFjZS4gVGhpcyBpcyB1c2VkIGJ5IHRoZSBhcHAgc2hlbGxcbiAqIHRvIHJlZ2lzdGVyIHdvcmtzcGFjZXMgZGVmaW5lZCBpbiB0aGUgYHJvdXRlcy5qc29uYCBmaWxlLlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlcldvcmtzcGFjZSh3b3Jrc3BhY2U6IFJlZ2lzdGVyV29ya3NwYWNlT3B0aW9ucykge1xuICB3b3Jrc3BhY2VSZWdpc3RyYXRpb25TdG9yZS5zZXRTdGF0ZSgoc3RhdGUpID0+ICh7XG4gICAgd29ya3NwYWNlczoge1xuICAgICAgLi4uc3RhdGUud29ya3NwYWNlcyxcbiAgICAgIFt3b3Jrc3BhY2UubmFtZV06IHtcbiAgICAgICAgLi4ud29ya3NwYWNlLFxuICAgICAgICBwcmVmZXJyZWRXaW5kb3dTaXplOiB3b3Jrc3BhY2UucHJlZmVycmVkV2luZG93U2l6ZSA/PyAnbm9ybWFsJyxcbiAgICAgICAgdHlwZTogd29ya3NwYWNlLnR5cGUgPz8gJ2Zvcm0nLFxuICAgICAgICBjYW5IaWRlOiB3b3Jrc3BhY2UuY2FuSGlkZSA/PyBmYWxzZSxcbiAgICAgICAgY2FuTWF4aW1pemU6IHdvcmtzcGFjZS5jYW5NYXhpbWl6ZSA/PyBmYWxzZSxcbiAgICAgICAgd2lkdGg6IHdvcmtzcGFjZS53aWR0aCA/PyAnbmFycm93JyxcbiAgICAgICAgaGFzT3duU2lkZWJhcjogd29ya3NwYWNlLmhhc093blNpZGViYXIgPz8gZmFsc2UsXG4gICAgICAgIHNpZGViYXJGYW1pbHk6IHdvcmtzcGFjZS5zaWRlYmFyRmFtaWx5ID8/ICdkZWZhdWx0JyxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSkpO1xufVxuXG5jb25zdCB3b3Jrc3BhY2VFeHRlbnNpb25XYXJuaW5nc0lzc3VlZCA9IG5ldyBTZXQoKTtcbi8qKlxuICogVGhpcyBleGlzdHMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgb2xkIHdheSBvZiByZWdpc3RlcmluZ1xuICogd29ya3NwYWNlcyAoYXMgZXh0ZW5zaW9ucykuXG4gKlxuICogQHBhcmFtIG5hbWUgb2YgdGhlIHdvcmtzcGFjZVxuICovXG5mdW5jdGlvbiBnZXRXb3Jrc3BhY2VSZWdpc3RyYXRpb24obmFtZTogc3RyaW5nKTogV29ya3NwYWNlUmVnaXN0cmF0aW9uIHtcbiAgY29uc3QgcmVnaXN0ZXJlZFdvcmtzcGFjZXMgPSB3b3Jrc3BhY2VSZWdpc3RyYXRpb25TdG9yZS5nZXRTdGF0ZSgpLndvcmtzcGFjZXM7XG4gIGlmIChyZWdpc3RlcmVkV29ya3NwYWNlc1tuYW1lXSkge1xuICAgIHJldHVybiByZWdpc3RlcmVkV29ya3NwYWNlc1tuYW1lXTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB3b3Jrc3BhY2VFeHRlbnNpb24gPSBnZXRFeHRlbnNpb25SZWdpc3RyYXRpb24obmFtZSk7XG4gICAgaWYgKHdvcmtzcGFjZUV4dGVuc2lvbikge1xuICAgICAgaWYgKCF3b3Jrc3BhY2VFeHRlbnNpb25XYXJuaW5nc0lzc3VlZC5oYXMobmFtZSkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBUaGUgd29ya3NwYWNlICcke25hbWV9JyBpcyByZWdpc3RlcmVkIGFzIGFuIGV4dGVuc2lvbi4gVGhpcyBpcyBkZXByZWNhdGVkLiBQbGVhc2UgcmVnaXN0ZXIgaXQgaW4gdGhlIFwid29ya3NwYWNlc1wiIHNlY3Rpb24gb2YgdGhlIHJvdXRlcy5qc29uIGZpbGUuYCxcbiAgICAgICAgKTtcbiAgICAgICAgd29ya3NwYWNlRXh0ZW5zaW9uV2FybmluZ3NJc3N1ZWQuYWRkKG5hbWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogd29ya3NwYWNlRXh0ZW5zaW9uLm5hbWUsXG4gICAgICAgIHRpdGxlOiBnZXRUaXRsZUZyb21FeHRlbnNpb24od29ya3NwYWNlRXh0ZW5zaW9uKSxcbiAgICAgICAgbW9kdWxlTmFtZTogd29ya3NwYWNlRXh0ZW5zaW9uLm1vZHVsZU5hbWUsXG4gICAgICAgIHByZWZlcnJlZFdpbmRvd1NpemU6IHdvcmtzcGFjZUV4dGVuc2lvbi5tZXRhPy5zY3JlZW5TaXplID8/ICdub3JtYWwnLFxuICAgICAgICBsb2FkOiB3b3Jrc3BhY2VFeHRlbnNpb24ubG9hZCxcbiAgICAgICAgdHlwZTogd29ya3NwYWNlRXh0ZW5zaW9uLm1ldGE/LnR5cGUgPz8gJ2Zvcm0nLFxuICAgICAgICBjYW5IaWRlOiB3b3Jrc3BhY2VFeHRlbnNpb24ubWV0YT8uY2FuSGlkZSA/PyBmYWxzZSxcbiAgICAgICAgY2FuTWF4aW1pemU6IHdvcmtzcGFjZUV4dGVuc2lvbi5tZXRhPy5jYW5NYXhpbWl6ZSA/PyBmYWxzZSxcbiAgICAgICAgd2lkdGg6IHdvcmtzcGFjZUV4dGVuc2lvbi5tZXRhPy53aWR0aCA/PyAnbmFycm93JyxcbiAgICAgICAgc2lkZWJhckZhbWlseTogJ2RlZmF1bHQnLFxuICAgICAgICBoYXNPd25TaWRlYmFyOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gd29ya3NwYWNlIG5hbWVkICcke25hbWV9JyBoYXMgYmVlbiByZWdpc3RlcmVkLmApO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRUaXRsZUZyb21FeHRlbnNpb24oZXh0OiBFeHRlbnNpb25SZWdpc3RyYXRpb24pIHtcbiAgY29uc3QgdGl0bGUgPSBleHQ/Lm1ldGE/LnRpdGxlO1xuICBpZiAodHlwZW9mIHRpdGxlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB0aXRsZTtcbiAgfSBlbHNlIGlmICh0aXRsZSAmJiB0eXBlb2YgdGl0bGUgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIHRyYW5zbGF0ZUZyb20oZXh0Lm1vZHVsZU5hbWUsIHRpdGxlLmtleSwgdGl0bGUuZGVmYXVsdCk7XG4gIH1cbiAgcmV0dXJuIGV4dC5uYW1lO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSB3b3Jrc3BhY2VcbiAqIEBwYXJhbSBpZ25vcmVDaGFuZ2VzIElmIHNldCB0byB0cnVlLCB0aGUgXCJ1bnNhdmVkIGNoYW5nZXNcIiBtb2RhbCB3aWxsIG5ldmVyIGJlIHNob3duLCBldmVuIGlmIHRoZSBgcHJvbXB0QmVmb3JlQ2xvc2luZ2AgZnVuY3Rpb24gcmV0dXJucyB0cnVlLiBUaGUgdXNlciB3aWxsIG5vdCBiZSBwcm9tcHRlZCBiZWZvcmUgY2xvc2luZy5cbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIHdvcmtzcGFjZSBjYW4gYmUgY2xvc2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FuQ2xvc2VXb3Jrc3BhY2VXaXRob3V0UHJvbXB0aW5nKG5hbWU6IHN0cmluZywgaWdub3JlQ2hhbmdlczogYm9vbGVhbiA9IGZhbHNlKSB7XG4gIGlmIChpZ25vcmVDaGFuZ2VzKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgY29uc3QgcHJvbXB0QmVmb3JlRm4gPSBnZXRQcm9tcHRCZWZvcmVDbG9zaW5nRmNuKG5hbWUpO1xuICByZXR1cm4gIXByb21wdEJlZm9yZUZuIHx8ICFwcm9tcHRCZWZvcmVGbigpO1xufVxuXG5mdW5jdGlvbiBwcm9tcHRCZWZvcmVMYXVuY2hpbmdXb3Jrc3BhY2UoXG4gIHdvcmtzcGFjZTogT3BlbldvcmtzcGFjZSxcbiAgbmV3V29ya3NwYWNlRGV0YWlsczogeyBuYW1lOiBzdHJpbmc7IGFkZGl0aW9uYWxQcm9wcz86IG9iamVjdCB9LFxuKSB7XG4gIGNvbnN0IHsgbmFtZSwgYWRkaXRpb25hbFByb3BzIH0gPSBuZXdXb3Jrc3BhY2VEZXRhaWxzO1xuXG4gIGNvbnN0IHByb2NlZWQgPSAoKSA9PiB7XG4gICAgd29ya3NwYWNlLmNsb3NlV29ya3NwYWNlKHtcbiAgICAgIGlnbm9yZUNoYW5nZXM6IHRydWUsXG4gICAgICAvLyBDYWxsaW5nIHRoZSBsYXVuY2hXb3Jrc3BhY2UgYWdhaW4sIHNpbmNlIG9uZSBvZiB0aGUgYGlmYCBjYXNlXG4gICAgICAvLyBtaWdodCByZXNvbHZlLCBidXQgd2UgbmVlZCB0byBjaGVjayBhbGwgdGhlIGNhc2VzIGJlZm9yZSBsYXVuY2hpbmcgdGhlIGZvcm0uXG4gICAgICBvbldvcmtzcGFjZUNsb3NlOiAoKSA9PiBsYXVuY2hXb3Jrc3BhY2UobmFtZSwgYWRkaXRpb25hbFByb3BzKSxcbiAgICB9KTtcbiAgfTtcblxuICBpZiAoIWNhbkNsb3NlV29ya3NwYWNlV2l0aG91dFByb21wdGluZyh3b3Jrc3BhY2UubmFtZSkpIHtcbiAgICBzaG93V29ya3NwYWNlUHJvbXB0cygnY2xvc2luZy13b3Jrc3BhY2UtbGF1bmNoaW5nLW5ldy13b3Jrc3BhY2UnLCBwcm9jZWVkLCB3b3Jrc3BhY2UudGl0bGUgPz8gd29ya3NwYWNlLm5hbWUpO1xuICB9IGVsc2Uge1xuICAgIHByb2NlZWQoKTtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgbGF1bmNoZXMgYSB3b3Jrc3BhY2UgYnkgaXRzIG5hbWUuIFRoZSB3b3Jrc3BhY2UgbXVzdCBoYXZlIGJlZW4gcmVnaXN0ZXJlZC5cbiAqIFdvcmtzcGFjZXMgc2hvdWxkIGJlIHJlZ2lzdGVyZWQgaW4gdGhlIGByb3V0ZXMuanNvbmAgZmlsZS5cbiAqXG4gKiBGb3IgdGhlIHdvcmtzcGFjZSB0byBhcHBlYXIsIHRoZXJlIG11c3QgYmUgZWl0aGVyIGEgYDxXb3Jrc3BhY2VPdmVybGF5IC8+YCBvclxuICogYSBgPFdvcmtzcGFjZVdpbmRvdyAvPmAgY29tcG9uZW50IHJlbmRlcmVkLlxuICpcbiAqIFRoZSBiZWhhdmlvciBvZiB0aGlzIGZ1bmN0aW9uIGlzIGFzIGZvbGxvd3M6XG4gKlxuICogLSBJZiBubyB3b3Jrc3BhY2VzIGFyZSBvcGVuLCBvciBpZiBubyBvdGhlciB3b3Jrc3BhY2VzIHdpdGggdGhlIHNhbWUgdHlwZSBhcmUgb3BlbixcbiAqICAgaXQgd2lsbCBiZSBvcGVuZWQgYW5kIGZvY3VzZWQuXG4gKiAtIElmIGEgd29ya3NwYWNlIHdpdGggdGhlIHNhbWUgbmFtZSBpcyBhbHJlYWR5IG9wZW4sIGl0IHdpbGwgYmUgZGlzcGxheWVkL2ZvY3VzZWQsXG4gKiAgIGlmIGl0IHdhcyBub3QgYWxyZWFkeS5cbiAqIC0gSWYgYSB3b3Jrc3BhY2UgaXMgbGF1bmNoZWQgYW5kIGEgd29ya3NwYWNlIHdoaWNoIGNhbm5vdCBiZSBoaWRkZW4gaXMgYWxyZWFkeSBvcGVuLFxuICogIGEgY29uZmlybWF0aW9uIG1vZGFsIHdpbGwgcG9wIHVwIHdhcm5pbmcgYWJvdXQgY2xvc2luZyB0aGUgY3VycmVudGx5IG9wZW4gd29ya3NwYWNlLlxuICogLSBJZiBhbm90aGVyIHdvcmtzcGFjZSB3aXRoIHRoZSBzYW1lIHR5cGUgaXMgb3BlbiwgdGhlIHdvcmtzcGFjZSB3aWxsIGJlIGJyb3VnaHQgdG9cbiAqICAgdGhlIGZyb250IGFuZCB0aGVuIGEgY29uZmlybWF0aW9uIG1vZGFsIHdpbGwgcG9wIHVwIHdhcm5pbmcgYWJvdXQgY2xvc2luZyB0aGUgb3BlbmVkXG4gKiAgIHdvcmtzcGFjZVxuICpcbiAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGp1c3QgbWFuaXB1bGF0ZXMgdGhlIHdvcmtzcGFjZSBzdG9yZS4gVGhlIFVJIGxvZ2ljIGlzIGhhbmRsZWRcbiAqIGJ5IHRoZSBjb21wb25lbnRzIHRoYXQgZGlzcGxheSB3b3Jrc3BhY2VzLlxuICpcbiAqIEFkZGl0aW9uYWwgcHJvcHMgY2FuIGJlIHBhc3NlZCB0byB0aGUgd29ya3NwYWNlIGNvbXBvbmVudCBiZWluZyBsYXVuY2hlZC4gUGFzc2luZyBhXG4gKiBwcm9wIG5hbWVkIGB3b3Jrc3BhY2VUaXRsZWAgd2lsbCBvdmVycmlkZSB0aGUgdGl0bGUgb2YgdGhlIHdvcmtzcGFjZS5cbiAqXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgd29ya3NwYWNlIHRvIGxhdW5jaFxuICogQHBhcmFtIGFkZGl0aW9uYWxQcm9wcyBQcm9wcyB0byBwYXNzIHRvIHRoZSB3b3Jrc3BhY2UgY29tcG9uZW50IGJlaW5nIGxhdW5jaGVkLiBQYXNzaW5nXG4gKiAgICAgICAgICBhIHByb3AgbmFtZWQgYHdvcmtzcGFjZVRpdGxlYCB3aWxsIG92ZXJyaWRlIHRoZSB0aXRsZSBvZiB0aGUgd29ya3NwYWNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbGF1bmNoV29ya3NwYWNlPFxuICBUIGV4dGVuZHMgRGVmYXVsdFdvcmtzcGFjZVByb3BzIHwgb2JqZWN0ID0gRGVmYXVsdFdvcmtzcGFjZVByb3BzICYgeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbj4obmFtZTogc3RyaW5nLCBhZGRpdGlvbmFsUHJvcHM/OiBPbWl0PFQsIGtleW9mIERlZmF1bHRXb3Jrc3BhY2VQcm9wcz4gJiB7IHdvcmtzcGFjZVRpdGxlPzogc3RyaW5nIH0pIHtcbiAgY29uc3Qgc3RvcmUgPSBnZXRXb3Jrc3BhY2VTdG9yZSgpO1xuICBjb25zdCB3b3Jrc3BhY2UgPSBnZXRXb3Jrc3BhY2VSZWdpc3RyYXRpb24obmFtZSk7XG4gIGNvbnN0IG5ld1dvcmtzcGFjZSA9IHtcbiAgICAuLi53b3Jrc3BhY2UsXG4gICAgdGl0bGU6IGdldFdvcmtzcGFjZVRpdGxlKHdvcmtzcGFjZSwgYWRkaXRpb25hbFByb3BzKSxcbiAgICBjbG9zZVdvcmtzcGFjZTogKG9wdGlvbnM6IENsb3NlV29ya3NwYWNlT3B0aW9ucyA9IHt9KSA9PiBjbG9zZVdvcmtzcGFjZShuYW1lLCBvcHRpb25zKSxcbiAgICBjbG9zZVdvcmtzcGFjZVdpdGhTYXZlZENoYW5nZXM6IChvcHRpb25zOiBDbG9zZVdvcmtzcGFjZU9wdGlvbnMpID0+XG4gICAgICBjbG9zZVdvcmtzcGFjZShuYW1lLCB7IGlnbm9yZUNoYW5nZXM6IHRydWUsIC4uLm9wdGlvbnMgfSksXG4gICAgcHJvbXB0QmVmb3JlQ2xvc2luZzogKHRlc3RGY24pID0+IHByb21wdEJlZm9yZUNsb3NpbmcobmFtZSwgdGVzdEZjbiksXG4gICAgc2V0VGl0bGU6ICh0aXRsZTogc3RyaW5nLCB0aXRsZU5vZGU6IFJlYWN0Tm9kZSkgPT4ge1xuICAgICAgbmV3V29ya3NwYWNlLnRpdGxlID0gdGl0bGU7XG4gICAgICBuZXdXb3Jrc3BhY2UudGl0bGVOb2RlID0gdGl0bGVOb2RlO1xuICAgICAgc3RvcmUuc2V0U3RhdGUoKHN0YXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wZW5Xb3Jrc3BhY2VzID0gc3RhdGUub3BlbldvcmtzcGFjZXMubWFwKCh3KSA9PiAody5uYW1lID09PSBuYW1lID8gbmV3V29ya3NwYWNlIDogdykpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIG9wZW5Xb3Jrc3BhY2VzLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBhZGRpdGlvbmFsUHJvcHM6IGFkZGl0aW9uYWxQcm9wcyA/PyB7fSxcbiAgfTtcblxuICBmdW5jdGlvbiB1cGRhdGVTdG9yZVdpdGhOZXdXb3Jrc3BhY2Uod29ya3NwYWNlVG9CZUFkZGVkOiBPcGVuV29ya3NwYWNlLCByZXN0T2ZUaGVXb3Jrc3BhY2VzPzogQXJyYXk8T3BlbldvcmtzcGFjZT4pIHtcbiAgICBzdG9yZS5zZXRTdGF0ZSgoc3RhdGUpID0+IHtcbiAgICAgIGNvbnN0IG9wZW5Xb3Jrc3BhY2VzID0gW3dvcmtzcGFjZVRvQmVBZGRlZCwgLi4uKHJlc3RPZlRoZVdvcmtzcGFjZXMgPz8gc3RhdGUub3BlbldvcmtzcGFjZXMpXTtcbiAgICAgIGxldCB3b3Jrc3BhY2VXaW5kb3dTdGF0ZSA9IGdldFVwZGF0ZWRXb3Jrc3BhY2VXaW5kb3dTdGF0ZShvcGVuV29ya3NwYWNlc1swXSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBvcGVuV29ya3NwYWNlcyxcbiAgICAgICAgd29ya3NwYWNlV2luZG93U3RhdGUsXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3Qgb3BlbldvcmtzcGFjZXMgPSBzdG9yZS5nZXRTdGF0ZSgpLm9wZW5Xb3Jrc3BhY2VzO1xuICBjb25zdCB3b3Jrc3BhY2VJbmRleEluT3BlbldvcmtzcGFjZXMgPSBvcGVuV29ya3NwYWNlcy5maW5kSW5kZXgoKHcpID0+IHcubmFtZSA9PT0gbmFtZSk7XG4gIGNvbnN0IGlzV29ya3NwYWNlQWxyZWFkeU9wZW4gPSB3b3Jrc3BhY2VJbmRleEluT3BlbldvcmtzcGFjZXMgPj0gMDtcbiAgY29uc3Qgb3BlbmVkV29ya3NwYWNlV2l0aFNhbWVUeXBlID0gb3BlbldvcmtzcGFjZXMuZmluZCgodykgPT4gdy50eXBlID09IG5ld1dvcmtzcGFjZS50eXBlKTtcblxuICBpZiAob3BlbldvcmtzcGFjZXMubGVuZ3RoID09PSAwKSB7XG4gICAgdXBkYXRlU3RvcmVXaXRoTmV3V29ya3NwYWNlKG5ld1dvcmtzcGFjZSk7XG4gIH0gZWxzZSBpZiAoIW9wZW5Xb3Jrc3BhY2VzWzBdLmNhbkhpZGUgJiYgd29ya3NwYWNlSW5kZXhJbk9wZW5Xb3Jrc3BhY2VzICE9PSAwKSB7XG4gICAgcHJvbXB0QmVmb3JlTGF1bmNoaW5nV29ya3NwYWNlKG9wZW5Xb3Jrc3BhY2VzWzBdLCB7XG4gICAgICBuYW1lLFxuICAgICAgYWRkaXRpb25hbFByb3BzLFxuICAgIH0pO1xuICB9IGVsc2UgaWYgKGlzV29ya3NwYWNlQWxyZWFkeU9wZW4pIHtcbiAgICBjb25zdCBvcGVuV29ya3NwYWNlID0gb3BlbldvcmtzcGFjZXNbd29ya3NwYWNlSW5kZXhJbk9wZW5Xb3Jrc3BhY2VzXTtcbiAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgdGl0bGUgaWYgaXQgaGFzbid0IGJlZW4gc2V0IGJ5IGBzZXRUaXRsZWBcbiAgICBpZiAob3BlbldvcmtzcGFjZS50aXRsZSA9PSBnZXRXb3Jrc3BhY2VUaXRsZShvcGVuV29ya3NwYWNlLCBvcGVuV29ya3NwYWNlLmFkZGl0aW9uYWxQcm9wcykpIHtcbiAgICAgIG9wZW5Xb3Jrc3BhY2UudGl0bGUgPSBnZXRXb3Jrc3BhY2VUaXRsZShvcGVuV29ya3NwYWNlLCBuZXdXb3Jrc3BhY2UuYWRkaXRpb25hbFByb3BzKTtcbiAgICB9XG4gICAgb3BlbldvcmtzcGFjZS5hZGRpdGlvbmFsUHJvcHMgPSBuZXdXb3Jrc3BhY2UuYWRkaXRpb25hbFByb3BzO1xuICAgIGNvbnN0IHJlc3RPZlRoZVdvcmtzcGFjZXMgPSBvcGVuV29ya3NwYWNlcy5maWx0ZXIoKHcpID0+IHcubmFtZSAhPSBuYW1lKTtcbiAgICB1cGRhdGVTdG9yZVdpdGhOZXdXb3Jrc3BhY2Uob3BlbldvcmtzcGFjZXNbd29ya3NwYWNlSW5kZXhJbk9wZW5Xb3Jrc3BhY2VzXSwgcmVzdE9mVGhlV29ya3NwYWNlcyk7XG4gIH0gZWxzZSBpZiAob3BlbmVkV29ya3NwYWNlV2l0aFNhbWVUeXBlKSB7XG4gICAgY29uc3QgcmVzdE9mVGhlV29ya3NwYWNlcyA9IHN0b3JlLmdldFN0YXRlKCkub3BlbldvcmtzcGFjZXMuZmlsdGVyKCh3KSA9PiB3LnR5cGUgIT0gbmV3V29ya3NwYWNlLnR5cGUpO1xuICAgIHVwZGF0ZVN0b3JlV2l0aE5ld1dvcmtzcGFjZShvcGVuZWRXb3Jrc3BhY2VXaXRoU2FtZVR5cGUsIHJlc3RPZlRoZVdvcmtzcGFjZXMpO1xuICAgIHByb21wdEJlZm9yZUxhdW5jaGluZ1dvcmtzcGFjZShvcGVuZWRXb3Jrc3BhY2VXaXRoU2FtZVR5cGUsIHtcbiAgICAgIG5hbWUsXG4gICAgICBhZGRpdGlvbmFsUHJvcHMsXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdXBkYXRlU3RvcmVXaXRoTmV3V29ya3NwYWNlKG5ld1dvcmtzcGFjZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBVc2UgdGhpcyBmdW5jdGlvbiB0byBuYXZpZ2F0ZSB0byBhIG5ldyBwYWdlIGFuZCBsYXVuY2ggYSB3b3Jrc3BhY2Ugb24gdGhhdCBwYWdlLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zLnRhcmdldFVybDogVGhlIFVSTCB0byBuYXZpZ2F0ZSB0by4gV2lsbCBiZSBwYXNzZWQgdG8gW1tuYXZpZ2F0ZV1dLlxuICogQHBhcmFtIG9wdGlvbnMuY29udGV4dEtleTogVGhlIGNvbnRleHQga2V5IHVzZWQgYnkgdGhlIHRhcmdldCBwYWdlLlxuICogQHBhcmFtIG9wdGlvbnMud29ya3NwYWNlTmFtZTogVGhlIG5hbWUgb2YgdGhlIHdvcmtzcGFjZSB0byBsYXVuY2guXG4gKiBAcGFyYW0gb3B0aW9ucy5hZGRpdGlvbmFsUHJvcHM6IEFkZGl0aW9uYWwgcHJvcHMgdG8gcGFzcyB0byB0aGUgd29ya3NwYWNlIGNvbXBvbmVudCBiZWluZyBsYXVuY2hlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5hdmlnYXRlQW5kTGF1bmNoV29ya3NwYWNlKHtcbiAgdGFyZ2V0VXJsLFxuICBjb250ZXh0S2V5LFxuICB3b3Jrc3BhY2VOYW1lLFxuICBhZGRpdGlvbmFsUHJvcHMsXG59OiB7XG4gIHRhcmdldFVybDogc3RyaW5nO1xuICBjb250ZXh0S2V5OiBzdHJpbmc7XG4gIHdvcmtzcGFjZU5hbWU6IHN0cmluZztcbiAgYWRkaXRpb25hbFByb3BzPzogb2JqZWN0O1xufSkge1xuICBjaGFuZ2VXb3Jrc3BhY2VDb250ZXh0KGNvbnRleHRLZXkpO1xuICBsYXVuY2hXb3Jrc3BhY2Uod29ya3NwYWNlTmFtZSwgYWRkaXRpb25hbFByb3BzKTtcbiAgbmF2aWdhdGUoeyB0bzogdGFyZ2V0VXJsIH0pO1xufVxuXG5jb25zdCBwcm9tcHRCZWZvcmVDbG9zaW5nRmNucyA9IHt9O1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvbXB0QmVmb3JlQ2xvc2luZyh3b3Jrc3BhY2VOYW1lOiBzdHJpbmcsIHRlc3RGY246ICgpID0+IGJvb2xlYW4pIHtcbiAgcHJvbXB0QmVmb3JlQ2xvc2luZ0ZjbnNbd29ya3NwYWNlTmFtZV0gPSB0ZXN0RmNuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvbXB0QmVmb3JlQ2xvc2luZ0Zjbih3b3Jrc3BhY2VOYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHByb21wdEJlZm9yZUNsb3NpbmdGY25zW3dvcmtzcGFjZU5hbWVdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FuY2VsUHJvbXB0KCkge1xuICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG4gIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgc3RvcmUuc2V0U3RhdGUoeyAuLi5zdGF0ZSwgcHJvbXB0OiBudWxsIH0pO1xufVxuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIGNsb3NlIGFuIG9wZW5lZCB3b3Jrc3BhY2VcbiAqIEBwYXJhbSBuYW1lIFdvcmtzcGFjZSByZWdpc3RyYXRpb24gbmFtZVxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyB0byBjbG9zZSB3b3Jrc3BhY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsb3NlV29ya3NwYWNlKFxuICBuYW1lOiBzdHJpbmcsXG4gIG9wdGlvbnM6IENsb3NlV29ya3NwYWNlT3B0aW9ucyA9IHtcbiAgICBpZ25vcmVDaGFuZ2VzOiBmYWxzZSxcbiAgICBvbldvcmtzcGFjZUNsb3NlOiAoKSA9PiB7fSxcbiAgfSxcbik6IGJvb2xlYW4ge1xuICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG5cbiAgY29uc3QgdXBkYXRlU3RvcmVXaXRoQ2xvc2VkV29ya3NwYWNlID0gKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgICBjb25zdCBuZXdPcGVuV29ya3NwYWNlcyA9IHN0YXRlLm9wZW5Xb3Jrc3BhY2VzLmZpbHRlcigodykgPT4gdy5uYW1lICE9IG5hbWUpO1xuXG4gICAgLy8gZW5zdXJlIGNsb3NlZCB3b3Jrc3BhY2Ugd2lsbCBub3QgcHJvbXB0XG4gICAgcHJvbXB0QmVmb3JlQ2xvc2luZyhuYW1lLCAoKSA9PiBmYWxzZSk7XG4gICAgc3RvcmUuc2V0U3RhdGUoe1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBwcm9tcHQ6IG51bGwsXG4gICAgICBvcGVuV29ya3NwYWNlczogbmV3T3BlbldvcmtzcGFjZXMsXG4gICAgICB3b3Jrc3BhY2VXaW5kb3dTdGF0ZTogZ2V0VXBkYXRlZFdvcmtzcGFjZVdpbmRvd1N0YXRlKG5ld09wZW5Xb3Jrc3BhY2VzPy5bMF0pLFxuICAgIH0pO1xuXG4gICAgb3B0aW9ucz8ub25Xb3Jrc3BhY2VDbG9zZT8uKCk7XG4gIH07XG5cbiAgaWYgKCFjYW5DbG9zZVdvcmtzcGFjZVdpdGhvdXRQcm9tcHRpbmcobmFtZSwgb3B0aW9ucz8uaWdub3JlQ2hhbmdlcykpIHtcbiAgICBjb25zdCBjdXJyZW50TmFtZSA9IGdldFdvcmtzcGFjZVJlZ2lzdHJhdGlvbihuYW1lKS50aXRsZSA/PyBuYW1lO1xuICAgIHNob3dXb3Jrc3BhY2VQcm9tcHRzKCdjbG9zaW5nLXdvcmtzcGFjZScsIHVwZGF0ZVN0b3JlV2l0aENsb3NlZFdvcmtzcGFjZSwgY3VycmVudE5hbWUpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICB1cGRhdGVTdG9yZVdpdGhDbG9zZWRXb3Jrc3BhY2UoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBzZXQgb2Ygd29ya3NwYWNlcyBpcyBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgcGFnZS4gVGhpcyBmdW5jdGlvblxuICogc2hvdWxkIGJlIHVzZWQgd2hlbiB0cmFuc2l0aW9uaW5nIHRvIGEgbmV3IHBhZ2UuIElmIHRoZSBjdXJyZW50XG4gKiB3b3Jrc3BhY2UgZGF0YSBpcyBmb3IgYSBkaWZmZXJlbnQgcGFnZSwgdGhlIHdvcmtzcGFjZSBzdGF0ZSBpcyBjbGVhcmVkLlxuICpcbiAqIFRoaXMgaXMgY2FsbGVkIGJ5IHRoZSB3b3Jrc3BhY2UgY29tcG9uZW50cyB3aGVuIHRoZXkgbW91bnQuXG4gKiBAaW50ZXJuYWxcbiAqXG4gKiBAcGFyYW0gY29udGV4dEtleSBBbiBhcmJpdHJhcnkga2V5IHRvIGlkZW50aWZ5IHRoZSBjdXJyZW50IHBhZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoYW5nZVdvcmtzcGFjZUNvbnRleHQoY29udGV4dEtleTogc3RyaW5nIHwgbnVsbCkge1xuICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG4gIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgaWYgKHN0YXRlLmNvbnRleHQgIT0gY29udGV4dEtleSkge1xuICAgIHN0b3JlLnNldFN0YXRlKHsgY29udGV4dDogY29udGV4dEtleSwgb3BlbldvcmtzcGFjZXM6IFtdLCBwcm9tcHQ6IG51bGwgfSk7XG4gIH1cbn1cblxuY29uc3QgaW5pdGlhbFN0YXRlOiBXb3Jrc3BhY2VTdG9yZVN0YXRlID0ge1xuICBjb250ZXh0OiAnJyxcbiAgb3BlbldvcmtzcGFjZXM6IFtdLFxuICBwcm9tcHQ6IG51bGwsXG4gIHdvcmtzcGFjZVdpbmRvd1N0YXRlOiAnbm9ybWFsJyxcbn07XG5cbmV4cG9ydCBjb25zdCB3b3Jrc3BhY2VTdG9yZSA9IGNyZWF0ZUdsb2JhbFN0b3JlKCd3b3Jrc3BhY2UnLCBpbml0aWFsU3RhdGUpO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya3NwYWNlU3RvcmUoKSB7XG4gIHJldHVybiBnZXRHbG9iYWxTdG9yZTxXb3Jrc3BhY2VTdG9yZVN0YXRlPignd29ya3NwYWNlJywgaW5pdGlhbFN0YXRlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVdvcmtzcGFjZVdpbmRvd1N0YXRlKHZhbHVlOiBXb3Jrc3BhY2VXaW5kb3dTdGF0ZSkge1xuICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG4gIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgc3RvcmUuc2V0U3RhdGUoeyAuLi5zdGF0ZSwgd29ya3NwYWNlV2luZG93U3RhdGU6IHZhbHVlIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRVcGRhdGVkV29ya3NwYWNlV2luZG93U3RhdGUod29ya3NwYWNlQXRUb3A6IE9wZW5Xb3Jrc3BhY2UpIHtcbiAgcmV0dXJuIHdvcmtzcGFjZUF0VG9wPy5wcmVmZXJyZWRXaW5kb3dTaXplID8/ICdub3JtYWwnO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNsb3NlQWxsV29ya3NwYWNlcyhvbkNsb3NpbmdXb3Jrc3BhY2VzOiAoKSA9PiB2b2lkID0gKCkgPT4ge30pIHtcbiAgY29uc3Qgc3RvcmUgPSBnZXRXb3Jrc3BhY2VTdG9yZSgpO1xuXG4gIGNvbnN0IGNhbkNsb3NlQWxsV29ya3NwYWNlcyA9IHN0b3JlLmdldFN0YXRlKCkub3BlbldvcmtzcGFjZXMuZXZlcnkoKHsgbmFtZSB9KSA9PiB7XG4gICAgY29uc3QgY2FuQ2xvc2VXb3Jrc3BhY2UgPSBjYW5DbG9zZVdvcmtzcGFjZVdpdGhvdXRQcm9tcHRpbmcobmFtZSk7XG4gICAgcmV0dXJuIGNhbkNsb3NlV29ya3NwYWNlO1xuICB9KTtcblxuICBjb25zdCB1cGRhdGVXb3Jrc3BhY2VTdG9yZSA9ICgpID0+IHtcbiAgICByZXNldFdvcmtzcGFjZVN0b3JlKCk7XG4gICAgb25DbG9zaW5nV29ya3NwYWNlcz8uKCk7XG4gIH07XG5cbiAgaWYgKCFjYW5DbG9zZUFsbFdvcmtzcGFjZXMpIHtcbiAgICBzaG93V29ya3NwYWNlUHJvbXB0cygnY2xvc2luZy1hbGwtd29ya3NwYWNlcycsIHVwZGF0ZVdvcmtzcGFjZVN0b3JlKTtcbiAgfSBlbHNlIHtcbiAgICB1cGRhdGVXb3Jrc3BhY2VTdG9yZSgpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV29ya3NwYWNlc0luZm8ge1xuICBhY3RpdmU6IGJvb2xlYW47XG4gIHByb21wdDogUHJvbXB0IHwgbnVsbDtcbiAgd29ya3NwYWNlV2luZG93U3RhdGU6IFdvcmtzcGFjZVdpbmRvd1N0YXRlO1xuICB3b3Jrc3BhY2VzOiBBcnJheTxPcGVuV29ya3NwYWNlPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVdvcmtzcGFjZXMoKTogV29ya3NwYWNlc0luZm8ge1xuICBjb25zdCB7IHdvcmtzcGFjZVdpbmRvd1N0YXRlLCBvcGVuV29ya3NwYWNlcywgcHJvbXB0IH0gPSB1c2VTdG9yZSh3b3Jrc3BhY2VTdG9yZSk7XG5cbiAgY29uc3QgbWVtb2lzZWRSZXN1bHRzID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgYWN0aXZlOiBvcGVuV29ya3NwYWNlcy5sZW5ndGggPiAwLFxuICAgICAgcHJvbXB0LFxuICAgICAgd29ya3NwYWNlV2luZG93U3RhdGUsXG4gICAgICB3b3Jrc3BhY2VzOiBvcGVuV29ya3NwYWNlcyxcbiAgICB9KSxcbiAgICBbb3BlbldvcmtzcGFjZXMsIHdvcmtzcGFjZVdpbmRvd1N0YXRlLCBwcm9tcHRdLFxuICApO1xuXG4gIHJldHVybiBtZW1vaXNlZFJlc3VsdHM7XG59XG5cbnR5cGUgUHJvbXB0VHlwZSA9ICdjbG9zaW5nLXdvcmtzcGFjZScgfCAnY2xvc2luZy1hbGwtd29ya3NwYWNlcycgfCAnY2xvc2luZy13b3Jrc3BhY2UtbGF1bmNoaW5nLW5ldy13b3Jrc3BhY2UnO1xuXG4vKipcbiAqIFNldHMgdGhlIGN1cnJlbnQgcHJvbXB0IGFjY29yZGluZyB0byB0aGUgcHJvbXB0IHR5cGUuXG4gKiBAcGFyYW0gcHJvbXB0VHlwZSBEZXRlcm1pbmVzIHRoZSB0ZXh0IGFuZCBiZWhhdmlvciBvZiB0aGUgcHJvbXB0XG4gKiBAcGFyYW0gb25Db25maXJtYXRpb24gRnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFmdGVyIHRoZSB1c2VyIGNvbmZpcm1zIHRvIGNsb3NlIHRoZSB3b3Jrc3BhY2VcbiAqIEBwYXJhbSB3b3Jrc3BhY2VUaXRsZSBXb3Jrc3BhY2UgdGl0bGUgdG8gYmUgc2hvd24gaW4gdGhlIHByb21wdFxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3dXb3Jrc3BhY2VQcm9tcHRzKFxuICBwcm9tcHRUeXBlOiBQcm9tcHRUeXBlLFxuICBvbkNvbmZpcm1hdGlvbjogKCkgPT4gdm9pZCA9ICgpID0+IHt9LFxuICB3b3Jrc3BhY2VUaXRsZTogc3RyaW5nID0gJycsXG4pIHtcbiAgY29uc3Qgc3RvcmUgPSBnZXRXb3Jrc3BhY2VTdG9yZSgpO1xuXG4gIGxldCBwcm9tcHQ6IFByb21wdDtcbiAgc3dpdGNoIChwcm9tcHRUeXBlKSB7XG4gICAgY2FzZSAnY2xvc2luZy13b3Jrc3BhY2UnOiB7XG4gICAgICBwcm9tcHQgPSB7XG4gICAgICAgIHRpdGxlOiBnZXRDb3JlVHJhbnNsYXRpb24oJ3Vuc2F2ZWRDaGFuZ2VzVGl0bGVUZXh0JywgJ1Vuc2F2ZWQgQ2hhbmdlcycpLFxuICAgICAgICBib2R5OiBnZXRDb3JlVHJhbnNsYXRpb24oXG4gICAgICAgICAgJ3Vuc2F2ZWRDaGFuZ2VzSW5PcGVuZWRXb3Jrc3BhY2UnLFxuICAgICAgICAgIGBZb3UgaGF2ZSB1bnNhdmVkIGNoYW5nZXMgaW4gdGhlIG9wZW5lZCB3b3Jrc3BhY2UuIERvIHlvdSB3YW50IHRvIGRpc2NhcmQgdGhlc2UgY2hhbmdlcz9gLFxuICAgICAgICApLFxuICAgICAgICBvbkNvbmZpcm06ICgpID0+IHtcbiAgICAgICAgICBvbkNvbmZpcm1hdGlvbj8uKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZpcm1UZXh0OiBnZXRDb3JlVHJhbnNsYXRpb24oJ2Rpc2NhcmQnLCAnRGlzY2FyZCcpLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNhc2UgJ2Nsb3NpbmctYWxsLXdvcmtzcGFjZXMnOiB7XG4gICAgICBjb25zdCB3b3Jrc3BhY2VzTm90Q2xvc2VkID0gc3RvcmVcbiAgICAgICAgLmdldFN0YXRlKClcbiAgICAgICAgLm9wZW5Xb3Jrc3BhY2VzLmZpbHRlcigoeyBuYW1lIH0pID0+ICFjYW5DbG9zZVdvcmtzcGFjZVdpdGhvdXRQcm9tcHRpbmcobmFtZSkpXG4gICAgICAgIC5tYXAoKHsgdGl0bGUgfSwgaW5keCkgPT4gYCR7aW5keCArIDF9LiAke3RpdGxlfWApO1xuXG4gICAgICBwcm9tcHQgPSB7XG4gICAgICAgIHRpdGxlOiBnZXRDb3JlVHJhbnNsYXRpb24oJ2Nsb3NpbmdBbGxXb3Jrc3BhY2VzUHJvbXB0VGl0bGUnLCAnWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzJyksXG4gICAgICAgIGJvZHk6IGdldENvcmVUcmFuc2xhdGlvbihcbiAgICAgICAgICAnY2xvc2luZ0FsbFdvcmtzcGFjZXNQcm9tcHRCb2R5JyxcbiAgICAgICAgICAnVGhlcmUgYXJlIHVuc2F2ZWQgY2hhbmdlcyBpbiB0aGUgZm9sbG93aW5nIHdvcmtzcGFjZXMuIERvIHlvdSB3YW50IHRvIGRpc2NhcmQgY2hhbmdlcyBpbiB0aGUgZm9sbG93aW5nIHdvcmtzcGFjZXM/IHt7d29ya3NwYWNlTmFtZXN9fScsXG4gICAgICAgICAge1xuICAgICAgICAgICAgd29ya3NwYWNlTmFtZXM6IHdvcmtzcGFjZXNOb3RDbG9zZWQuam9pbignLCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgICksXG4gICAgICAgIG9uQ29uZmlybTogKCkgPT4ge1xuICAgICAgICAgIG9uQ29uZmlybWF0aW9uPy4oKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmlybVRleHQ6IGdldENvcmVUcmFuc2xhdGlvbignY2xvc2VBbGxPcGVuZWRXb3Jrc3BhY2VzJywgJ0Rpc2NhcmQgY2hhbmdlcyBpbiB7e2NvdW50fX0gd29ya3NwYWNlcycsIHtcbiAgICAgICAgICBjb3VudDogd29ya3NwYWNlc05vdENsb3NlZC5sZW5ndGgsXG4gICAgICAgIH0pLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlICdjbG9zaW5nLXdvcmtzcGFjZS1sYXVuY2hpbmctbmV3LXdvcmtzcGFjZSc6IHtcbiAgICAgIHByb21wdCA9IHtcbiAgICAgICAgdGl0bGU6IGdldENvcmVUcmFuc2xhdGlvbigndW5zYXZlZENoYW5nZXNUaXRsZVRleHQnLCAnVW5zYXZlZCBDaGFuZ2VzJyksXG4gICAgICAgIGJvZHk6IGdldENvcmVUcmFuc2xhdGlvbihcbiAgICAgICAgICAndW5zYXZlZENoYW5nZXNJbldvcmtzcGFjZScsXG4gICAgICAgICAgJ1RoZXJlIGFyZSB1bnNhdmVkIGNoYW5nZXMgaW4ge3t3b3Jrc3BhY2VOYW1lfX0uIFBsZWFzZSBzYXZlIHRoZW0gYmVmb3JlIG9wZW5pbmcgYW5vdGhlciB3b3Jrc3BhY2UuJyxcbiAgICAgICAgICB7IHdvcmtzcGFjZU5hbWU6IHdvcmtzcGFjZVRpdGxlIH0sXG4gICAgICAgICksXG4gICAgICAgIG9uQ29uZmlybTogKCkgPT4ge1xuICAgICAgICAgIHN0b3JlLnNldFN0YXRlKChzdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgcHJvbXB0OiBudWxsLFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgICBvbkNvbmZpcm1hdGlvbj8uKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZpcm1UZXh0OiBnZXRDb3JlVHJhbnNsYXRpb24oJ29wZW5Bbnl3YXknLCAnT3BlbiBhbnl3YXknKSxcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFdvcmtzcGFjZSBzeXN0ZW0gdHJ5aW5nIHRvIG9wZW4gdW5rbm93biBwcm9tcHQgdHlwZSBcIiR7cHJvbXB0VHlwZX1cIiBpbiBmdW5jdGlvbiBcInNob3dXb3Jrc3BhY2VQcm9tcHRzXCJgLFxuICAgICAgKTtcbiAgICAgIG9uQ29uZmlybWF0aW9uPy4oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgc3RvcmUuc2V0U3RhdGUoKHN0YXRlKSA9PiAoeyAuLi5zdGF0ZSwgcHJvbXB0IH0pKTtcbn1cblxuZnVuY3Rpb24gZ2V0V29ya3NwYWNlVGl0bGUod29ya3NwYWNlOiBXb3Jrc3BhY2VSZWdpc3RyYXRpb24sIGFkZGl0aW9uYWxQcm9wcz86IG9iamVjdCkge1xuICByZXR1cm4gYWRkaXRpb25hbFByb3BzPy5bJ3dvcmtzcGFjZVRpdGxlJ10gPz8gdHJhbnNsYXRlRnJvbSh3b3Jrc3BhY2UubW9kdWxlTmFtZSwgd29ya3NwYWNlLnRpdGxlLCB3b3Jrc3BhY2UudGl0bGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRXb3Jrc3BhY2VTdG9yZSgpIHtcbiAgZ2V0V29ya3NwYWNlU3RvcmUoKS5zZXRTdGF0ZShpbml0aWFsU3RhdGUpO1xufVxuIl0sIm5hbWVzIjpbInVzZU1lbW8iLCJnZXRFeHRlbnNpb25SZWdpc3RyYXRpb24iLCJ1c2VTdG9yZSIsIm5hdmlnYXRlIiwiZ2V0R2xvYmFsU3RvcmUiLCJjcmVhdGVHbG9iYWxTdG9yZSIsImdldENvcmVUcmFuc2xhdGlvbiIsInRyYW5zbGF0ZUZyb20iLCJ3b3Jrc3BhY2VSZWdpc3RyYXRpb25TdG9yZSIsIndvcmtzcGFjZXMiLCJyZWdpc3RlcldvcmtzcGFjZSIsIndvcmtzcGFjZSIsInNldFN0YXRlIiwic3RhdGUiLCJuYW1lIiwicHJlZmVycmVkV2luZG93U2l6ZSIsInR5cGUiLCJjYW5IaWRlIiwiY2FuTWF4aW1pemUiLCJ3aWR0aCIsImhhc093blNpZGViYXIiLCJzaWRlYmFyRmFtaWx5Iiwid29ya3NwYWNlRXh0ZW5zaW9uV2FybmluZ3NJc3N1ZWQiLCJTZXQiLCJnZXRXb3Jrc3BhY2VSZWdpc3RyYXRpb24iLCJyZWdpc3RlcmVkV29ya3NwYWNlcyIsImdldFN0YXRlIiwid29ya3NwYWNlRXh0ZW5zaW9uIiwiaGFzIiwiY29uc29sZSIsIndhcm4iLCJhZGQiLCJ0aXRsZSIsImdldFRpdGxlRnJvbUV4dGVuc2lvbiIsIm1vZHVsZU5hbWUiLCJtZXRhIiwic2NyZWVuU2l6ZSIsImxvYWQiLCJFcnJvciIsImV4dCIsImtleSIsImRlZmF1bHQiLCJjYW5DbG9zZVdvcmtzcGFjZVdpdGhvdXRQcm9tcHRpbmciLCJpZ25vcmVDaGFuZ2VzIiwicHJvbXB0QmVmb3JlRm4iLCJnZXRQcm9tcHRCZWZvcmVDbG9zaW5nRmNuIiwicHJvbXB0QmVmb3JlTGF1bmNoaW5nV29ya3NwYWNlIiwibmV3V29ya3NwYWNlRGV0YWlscyIsImFkZGl0aW9uYWxQcm9wcyIsInByb2NlZWQiLCJjbG9zZVdvcmtzcGFjZSIsIm9uV29ya3NwYWNlQ2xvc2UiLCJsYXVuY2hXb3Jrc3BhY2UiLCJzaG93V29ya3NwYWNlUHJvbXB0cyIsInVwZGF0ZVN0b3JlV2l0aE5ld1dvcmtzcGFjZSIsIndvcmtzcGFjZVRvQmVBZGRlZCIsInJlc3RPZlRoZVdvcmtzcGFjZXMiLCJzdG9yZSIsIm9wZW5Xb3Jrc3BhY2VzIiwid29ya3NwYWNlV2luZG93U3RhdGUiLCJnZXRVcGRhdGVkV29ya3NwYWNlV2luZG93U3RhdGUiLCJnZXRXb3Jrc3BhY2VTdG9yZSIsIm5ld1dvcmtzcGFjZSIsImdldFdvcmtzcGFjZVRpdGxlIiwib3B0aW9ucyIsImNsb3NlV29ya3NwYWNlV2l0aFNhdmVkQ2hhbmdlcyIsInByb21wdEJlZm9yZUNsb3NpbmciLCJ0ZXN0RmNuIiwic2V0VGl0bGUiLCJ0aXRsZU5vZGUiLCJtYXAiLCJ3Iiwid29ya3NwYWNlSW5kZXhJbk9wZW5Xb3Jrc3BhY2VzIiwiZmluZEluZGV4IiwiaXNXb3Jrc3BhY2VBbHJlYWR5T3BlbiIsIm9wZW5lZFdvcmtzcGFjZVdpdGhTYW1lVHlwZSIsImZpbmQiLCJsZW5ndGgiLCJvcGVuV29ya3NwYWNlIiwiZmlsdGVyIiwibmF2aWdhdGVBbmRMYXVuY2hXb3Jrc3BhY2UiLCJ0YXJnZXRVcmwiLCJjb250ZXh0S2V5Iiwid29ya3NwYWNlTmFtZSIsImNoYW5nZVdvcmtzcGFjZUNvbnRleHQiLCJ0byIsInByb21wdEJlZm9yZUNsb3NpbmdGY25zIiwiY2FuY2VsUHJvbXB0IiwicHJvbXB0IiwidXBkYXRlU3RvcmVXaXRoQ2xvc2VkV29ya3NwYWNlIiwibmV3T3BlbldvcmtzcGFjZXMiLCJjdXJyZW50TmFtZSIsImNvbnRleHQiLCJpbml0aWFsU3RhdGUiLCJ3b3Jrc3BhY2VTdG9yZSIsInVwZGF0ZVdvcmtzcGFjZVdpbmRvd1N0YXRlIiwidmFsdWUiLCJ3b3Jrc3BhY2VBdFRvcCIsImNsb3NlQWxsV29ya3NwYWNlcyIsIm9uQ2xvc2luZ1dvcmtzcGFjZXMiLCJjYW5DbG9zZUFsbFdvcmtzcGFjZXMiLCJldmVyeSIsImNhbkNsb3NlV29ya3NwYWNlIiwidXBkYXRlV29ya3NwYWNlU3RvcmUiLCJyZXNldFdvcmtzcGFjZVN0b3JlIiwidXNlV29ya3NwYWNlcyIsIm1lbW9pc2VkUmVzdWx0cyIsImFjdGl2ZSIsInByb21wdFR5cGUiLCJvbkNvbmZpcm1hdGlvbiIsIndvcmtzcGFjZVRpdGxlIiwiYm9keSIsIm9uQ29uZmlybSIsImNvbmZpcm1UZXh0Iiwid29ya3NwYWNlc05vdENsb3NlZCIsImluZHgiLCJ3b3Jrc3BhY2VOYW1lcyIsImpvaW4iLCJjb3VudCIsImVycm9yIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/src/workspaces/workspaces.ts\n");
|
|
8280
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ canCloseWorkspaceWithoutPrompting: () => (/* binding */ canCloseWorkspaceWithoutPrompting),\n/* harmony export */ cancelPrompt: () => (/* binding */ cancelPrompt),\n/* harmony export */ changeWorkspaceContext: () => (/* binding */ changeWorkspaceContext),\n/* harmony export */ closeAllWorkspaces: () => (/* binding */ closeAllWorkspaces),\n/* harmony export */ closeWorkspace: () => (/* binding */ closeWorkspace),\n/* harmony export */ getPromptBeforeClosingFcn: () => (/* binding */ getPromptBeforeClosingFcn),\n/* harmony export */ getWorkspaceStore: () => (/* binding */ getWorkspaceStore),\n/* harmony export */ launchWorkspace: () => (/* binding */ launchWorkspace),\n/* harmony export */ navigateAndLaunchWorkspace: () => (/* binding */ navigateAndLaunchWorkspace),\n/* harmony export */ promptBeforeClosing: () => (/* binding */ promptBeforeClosing),\n/* harmony export */ registerWorkspace: () => (/* binding */ registerWorkspace),\n/* harmony export */ resetWorkspaceStore: () => (/* binding */ resetWorkspaceStore),\n/* harmony export */ showWorkspacePrompts: () => (/* binding */ showWorkspacePrompts),\n/* harmony export */ updateWorkspaceWindowState: () => (/* binding */ updateWorkspaceWindowState),\n/* harmony export */ useWorkspaces: () => (/* binding */ useWorkspaces),\n/* harmony export */ workspaceStore: () => (/* binding */ workspaceStore)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-extensions */ \"../../framework/esm-extensions/src/index.ts\");\n/* harmony import */ var _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @openmrs/esm-react-utils */ \"../../framework/esm-react-utils/src/index.ts\");\n/* harmony import */ var _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @openmrs/esm-navigation */ \"../../framework/esm-navigation/src/index.ts\");\n/* harmony import */ var _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @openmrs/esm-state */ \"../../framework/esm-state/src/index.ts\");\n/* harmony import */ var _openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @openmrs/esm-translations */ \"../../framework/esm-translations/src/index.ts\");\n/** @module @category Workspace */ function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(arr);\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\n\n\n\n\n\n\nvar workspaceRegistrationStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_4__.createGlobalStore)(\"workspaceRegistrations\", {\n workspaces: {}\n});\n/**\n * Tells the workspace system about a workspace. This is used by the app shell\n * to register workspaces defined in the `routes.json` file.\n * @internal\n */ function registerWorkspace(workspace) {\n var _workspace_preferredWindowSize, _workspace_type, _workspace_canHide, _workspace_canMaximize, _workspace_width, _workspace_hasOwnSidebar, _workspace_sidebarFamily;\n workspaceRegistrationStore.setState(function(state) {\n return {\n workspaces: _object_spread_props(_object_spread({}, state.workspaces), _define_property({}, workspace.name, _object_spread_props(_object_spread({}, workspace), {\n preferredWindowSize: (_workspace_preferredWindowSize = workspace.preferredWindowSize) !== null && _workspace_preferredWindowSize !== void 0 ? _workspace_preferredWindowSize : \"normal\",\n type: (_workspace_type = workspace.type) !== null && _workspace_type !== void 0 ? _workspace_type : \"form\",\n canHide: (_workspace_canHide = workspace.canHide) !== null && _workspace_canHide !== void 0 ? _workspace_canHide : false,\n canMaximize: (_workspace_canMaximize = workspace.canMaximize) !== null && _workspace_canMaximize !== void 0 ? _workspace_canMaximize : false,\n width: (_workspace_width = workspace.width) !== null && _workspace_width !== void 0 ? _workspace_width : \"narrow\",\n hasOwnSidebar: (_workspace_hasOwnSidebar = workspace.hasOwnSidebar) !== null && _workspace_hasOwnSidebar !== void 0 ? _workspace_hasOwnSidebar : false,\n sidebarFamily: (_workspace_sidebarFamily = workspace.sidebarFamily) !== null && _workspace_sidebarFamily !== void 0 ? _workspace_sidebarFamily : \"default\"\n })))\n };\n });\n}\nvar workspaceExtensionWarningsIssued = new Set();\n/**\n * This exists for compatibility with the old way of registering\n * workspaces (as extensions).\n *\n * @param name of the workspace\n */ function getWorkspaceRegistration(name) {\n var registeredWorkspaces = workspaceRegistrationStore.getState().workspaces;\n if (registeredWorkspaces[name]) {\n return registeredWorkspaces[name];\n } else {\n var workspaceExtension = (0,_openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_1__.getExtensionRegistration)(name);\n if (workspaceExtension) {\n var _workspaceExtension_meta, _workspaceExtension_meta1, _workspaceExtension_meta2, _workspaceExtension_meta3, _workspaceExtension_meta4;\n if (!workspaceExtensionWarningsIssued.has(name)) {\n console.warn(\"The workspace '\".concat(name, '\\' is registered as an extension. This is deprecated. Please register it in the \"workspaces\" section of the routes.json file.'));\n workspaceExtensionWarningsIssued.add(name);\n }\n var _workspaceExtension_meta_screenSize, _workspaceExtension_meta_type, _workspaceExtension_meta_canHide, _workspaceExtension_meta_canMaximize, _workspaceExtension_meta_width;\n return {\n name: workspaceExtension.name,\n title: getTitleFromExtension(workspaceExtension),\n moduleName: workspaceExtension.moduleName,\n preferredWindowSize: (_workspaceExtension_meta_screenSize = (_workspaceExtension_meta = workspaceExtension.meta) === null || _workspaceExtension_meta === void 0 ? void 0 : _workspaceExtension_meta.screenSize) !== null && _workspaceExtension_meta_screenSize !== void 0 ? _workspaceExtension_meta_screenSize : \"normal\",\n load: workspaceExtension.load,\n type: (_workspaceExtension_meta_type = (_workspaceExtension_meta1 = workspaceExtension.meta) === null || _workspaceExtension_meta1 === void 0 ? void 0 : _workspaceExtension_meta1.type) !== null && _workspaceExtension_meta_type !== void 0 ? _workspaceExtension_meta_type : \"form\",\n canHide: (_workspaceExtension_meta_canHide = (_workspaceExtension_meta2 = workspaceExtension.meta) === null || _workspaceExtension_meta2 === void 0 ? void 0 : _workspaceExtension_meta2.canHide) !== null && _workspaceExtension_meta_canHide !== void 0 ? _workspaceExtension_meta_canHide : false,\n canMaximize: (_workspaceExtension_meta_canMaximize = (_workspaceExtension_meta3 = workspaceExtension.meta) === null || _workspaceExtension_meta3 === void 0 ? void 0 : _workspaceExtension_meta3.canMaximize) !== null && _workspaceExtension_meta_canMaximize !== void 0 ? _workspaceExtension_meta_canMaximize : false,\n width: (_workspaceExtension_meta_width = (_workspaceExtension_meta4 = workspaceExtension.meta) === null || _workspaceExtension_meta4 === void 0 ? void 0 : _workspaceExtension_meta4.width) !== null && _workspaceExtension_meta_width !== void 0 ? _workspaceExtension_meta_width : \"narrow\",\n sidebarFamily: \"default\",\n hasOwnSidebar: false\n };\n } else {\n throw new Error(\"No workspace named '\".concat(name, \"' has been registered.\"));\n }\n }\n}\nfunction getTitleFromExtension(ext) {\n var _ext_meta;\n var title = ext === null || ext === void 0 ? void 0 : (_ext_meta = ext.meta) === null || _ext_meta === void 0 ? void 0 : _ext_meta.title;\n if (typeof title === \"string\") {\n return title;\n } else if (title && typeof title === \"object\") {\n return (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.translateFrom)(ext.moduleName, title.key, title.default);\n }\n return ext.name;\n}\n/**\n *\n * @param name Name of the workspace\n * @param ignoreChanges If set to true, the \"unsaved changes\" modal will never be shown, even if the `promptBeforeClosing` function returns true. The user will not be prompted before closing.\n * @returns true if the workspace can be closed.\n */ function canCloseWorkspaceWithoutPrompting(name) {\n var ignoreChanges = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n if (ignoreChanges) {\n return true;\n }\n var promptBeforeFn = getPromptBeforeClosingFcn(name);\n return !promptBeforeFn || !promptBeforeFn();\n}\nfunction promptBeforeLaunchingWorkspace(workspace, newWorkspaceDetails) {\n var name = newWorkspaceDetails.name, additionalProps = newWorkspaceDetails.additionalProps;\n var proceed = function() {\n workspace.closeWorkspace({\n ignoreChanges: true,\n // Calling the launchWorkspace again, since one of the `if` case\n // might resolve, but we need to check all the cases before launching the form.\n onWorkspaceClose: function() {\n return launchWorkspace(name, additionalProps);\n }\n });\n };\n if (!canCloseWorkspaceWithoutPrompting(workspace.name)) {\n var _workspace_title;\n showWorkspacePrompts(\"closing-workspace-launching-new-workspace\", proceed, (_workspace_title = workspace.title) !== null && _workspace_title !== void 0 ? _workspace_title : workspace.name);\n } else {\n proceed();\n }\n}\n/**\n * This launches a workspace by its name. The workspace must have been registered.\n * Workspaces should be registered in the `routes.json` file.\n *\n * For the workspace to appear, there must be either a `<WorkspaceOverlay />` or\n * a `<WorkspaceWindow />` component rendered.\n *\n * The behavior of this function is as follows:\n *\n * - If no workspaces are open, or if no other workspaces with the same type are open,\n * it will be opened and focused.\n * - If a workspace with the same name is already open, it will be displayed/focused,\n * if it was not already.\n * - If a workspace is launched and a workspace which cannot be hidden is already open,\n * a confirmation modal will pop up warning about closing the currently open workspace.\n * - If another workspace with the same type is open, the workspace will be brought to\n * the front and then a confirmation modal will pop up warning about closing the opened\n * workspace\n *\n * Note that this function just manipulates the workspace store. The UI logic is handled\n * by the components that display workspaces.\n *\n * Additional props can be passed to the workspace component being launched. Passing a\n * prop named `workspaceTitle` will override the title of the workspace.\n *\n * @param name The name of the workspace to launch\n * @param additionalProps Props to pass to the workspace component being launched. Passing\n * a prop named `workspaceTitle` will override the title of the workspace.\n */ function launchWorkspace(name, additionalProps) {\n var updateStoreWithNewWorkspace = function updateStoreWithNewWorkspace(workspaceToBeAdded, restOfTheWorkspaces) {\n store.setState(function(state) {\n var openWorkspaces = [\n workspaceToBeAdded\n ].concat(_to_consumable_array(restOfTheWorkspaces !== null && restOfTheWorkspaces !== void 0 ? restOfTheWorkspaces : state.openWorkspaces));\n var workspaceWindowState = getUpdatedWorkspaceWindowState(openWorkspaces[0]);\n return _object_spread_props(_object_spread({}, state), {\n openWorkspaces: openWorkspaces,\n workspaceWindowState: workspaceWindowState\n });\n });\n };\n var store = getWorkspaceStore();\n var workspace = getWorkspaceRegistration(name);\n var newWorkspace = _object_spread_props(_object_spread({}, workspace), {\n title: getWorkspaceTitle(workspace, additionalProps),\n closeWorkspace: function() {\n var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n return closeWorkspace(name, options);\n },\n closeWorkspaceWithSavedChanges: function(options) {\n return closeWorkspace(name, _object_spread({\n ignoreChanges: true\n }, options));\n },\n promptBeforeClosing: function(testFcn) {\n return promptBeforeClosing(name, testFcn);\n },\n setTitle: function(title, titleNode) {\n newWorkspace.title = title;\n newWorkspace.titleNode = titleNode;\n store.setState(function(state) {\n var openWorkspaces = state.openWorkspaces.map(function(w) {\n return w.name === name ? newWorkspace : w;\n });\n return _object_spread_props(_object_spread({}, state), {\n openWorkspaces: openWorkspaces\n });\n });\n },\n additionalProps: additionalProps !== null && additionalProps !== void 0 ? additionalProps : {}\n });\n var openWorkspaces = store.getState().openWorkspaces;\n var workspaceIndexInOpenWorkspaces = openWorkspaces.findIndex(function(w) {\n return w.name === name;\n });\n var isWorkspaceAlreadyOpen = workspaceIndexInOpenWorkspaces >= 0;\n var openedWorkspaceWithSameType = openWorkspaces.find(function(w) {\n return w.type == newWorkspace.type;\n });\n if (openWorkspaces.length === 0) {\n updateStoreWithNewWorkspace(newWorkspace);\n } else if (!openWorkspaces[0].canHide && workspaceIndexInOpenWorkspaces !== 0) {\n promptBeforeLaunchingWorkspace(openWorkspaces[0], {\n name: name,\n additionalProps: additionalProps\n });\n } else if (isWorkspaceAlreadyOpen) {\n var openWorkspace = openWorkspaces[workspaceIndexInOpenWorkspaces];\n // Only update the title if it hasn't been set by `setTitle`\n if (openWorkspace.title == getWorkspaceTitle(openWorkspace, openWorkspace.additionalProps)) {\n openWorkspace.title = getWorkspaceTitle(openWorkspace, newWorkspace.additionalProps);\n }\n openWorkspace.additionalProps = newWorkspace.additionalProps;\n var restOfTheWorkspaces = openWorkspaces.filter(function(w) {\n return w.name != name;\n });\n updateStoreWithNewWorkspace(openWorkspaces[workspaceIndexInOpenWorkspaces], restOfTheWorkspaces);\n } else if (openedWorkspaceWithSameType) {\n var restOfTheWorkspaces1 = store.getState().openWorkspaces.filter(function(w) {\n return w.type != newWorkspace.type;\n });\n updateStoreWithNewWorkspace(openedWorkspaceWithSameType, restOfTheWorkspaces1);\n promptBeforeLaunchingWorkspace(openedWorkspaceWithSameType, {\n name: name,\n additionalProps: additionalProps\n });\n } else {\n updateStoreWithNewWorkspace(newWorkspace);\n }\n}\n/**\n * Use this function to navigate to a new page and launch a workspace on that page.\n *\n * @param options.targetUrl: The URL to navigate to. Will be passed to [[navigate]].\n * @param options.contextKey: The context key used by the target page.\n * @param options.workspaceName: The name of the workspace to launch.\n * @param options.additionalProps: Additional props to pass to the workspace component being launched.\n */ function navigateAndLaunchWorkspace(param) {\n var targetUrl = param.targetUrl, contextKey = param.contextKey, workspaceName = param.workspaceName, additionalProps = param.additionalProps;\n changeWorkspaceContext(contextKey);\n launchWorkspace(workspaceName, additionalProps);\n (0,_openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_3__.navigate)({\n to: targetUrl\n });\n}\nvar promptBeforeClosingFcns = {};\nfunction promptBeforeClosing(workspaceName, testFcn) {\n promptBeforeClosingFcns[workspaceName] = testFcn;\n}\nfunction getPromptBeforeClosingFcn(workspaceName) {\n return promptBeforeClosingFcns[workspaceName];\n}\nfunction cancelPrompt() {\n var store = getWorkspaceStore();\n var state = store.getState();\n store.setState(_object_spread_props(_object_spread({}, state), {\n prompt: null\n }));\n}\n/**\n * Function to close an opened workspace\n * @param name Workspace registration name\n * @param options Options to close workspace\n */ function closeWorkspace(name) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {\n ignoreChanges: false,\n onWorkspaceClose: function() {}\n };\n var store = getWorkspaceStore();\n var updateStoreWithClosedWorkspace = function() {\n var _options_onWorkspaceClose;\n var state = store.getState();\n var newOpenWorkspaces = state.openWorkspaces.filter(function(w) {\n return w.name != name;\n });\n // ensure closed workspace will not prompt\n promptBeforeClosing(name, function() {\n return false;\n });\n store.setState(_object_spread_props(_object_spread({}, state), {\n prompt: null,\n openWorkspaces: newOpenWorkspaces,\n workspaceWindowState: getUpdatedWorkspaceWindowState(newOpenWorkspaces === null || newOpenWorkspaces === void 0 ? void 0 : newOpenWorkspaces[0])\n }));\n options === null || options === void 0 ? void 0 : (_options_onWorkspaceClose = options.onWorkspaceClose) === null || _options_onWorkspaceClose === void 0 ? void 0 : _options_onWorkspaceClose.call(options);\n };\n if (!canCloseWorkspaceWithoutPrompting(name, options === null || options === void 0 ? void 0 : options.ignoreChanges)) {\n var _getWorkspaceRegistration_title;\n var currentName = (_getWorkspaceRegistration_title = getWorkspaceRegistration(name).title) !== null && _getWorkspaceRegistration_title !== void 0 ? _getWorkspaceRegistration_title : name;\n showWorkspacePrompts(\"closing-workspace\", updateStoreWithClosedWorkspace, currentName);\n return false;\n } else {\n updateStoreWithClosedWorkspace();\n return true;\n }\n}\n/**\n * The set of workspaces is specific to a particular page. This function\n * should be used when transitioning to a new page. If the current\n * workspace data is for a different page, the workspace state is cleared.\n *\n * This is called by the workspace components when they mount.\n * @internal\n *\n * @param contextKey An arbitrary key to identify the current page\n */ function changeWorkspaceContext(contextKey) {\n var store = getWorkspaceStore();\n var state = store.getState();\n if (state.context != contextKey) {\n store.setState({\n context: contextKey,\n openWorkspaces: [],\n prompt: null\n });\n }\n}\nvar initialState = {\n context: \"\",\n openWorkspaces: [],\n prompt: null,\n workspaceWindowState: \"normal\"\n};\nvar workspaceStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_4__.createGlobalStore)(\"workspace\", initialState);\nfunction getWorkspaceStore() {\n return (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_4__.getGlobalStore)(\"workspace\", initialState);\n}\nfunction updateWorkspaceWindowState(value) {\n var store = getWorkspaceStore();\n var state = store.getState();\n store.setState(_object_spread_props(_object_spread({}, state), {\n workspaceWindowState: value\n }));\n}\nfunction getUpdatedWorkspaceWindowState(workspaceAtTop) {\n var _workspaceAtTop_preferredWindowSize;\n return (_workspaceAtTop_preferredWindowSize = workspaceAtTop === null || workspaceAtTop === void 0 ? void 0 : workspaceAtTop.preferredWindowSize) !== null && _workspaceAtTop_preferredWindowSize !== void 0 ? _workspaceAtTop_preferredWindowSize : \"normal\";\n}\nfunction closeAllWorkspaces() {\n var onClosingWorkspaces = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : function() {};\n var store = getWorkspaceStore();\n var canCloseAllWorkspaces = store.getState().openWorkspaces.every(function(param) {\n var name = param.name;\n var canCloseWorkspace = canCloseWorkspaceWithoutPrompting(name);\n return canCloseWorkspace;\n });\n var updateWorkspaceStore = function() {\n resetWorkspaceStore();\n onClosingWorkspaces === null || onClosingWorkspaces === void 0 ? void 0 : onClosingWorkspaces();\n };\n if (!canCloseAllWorkspaces) {\n showWorkspacePrompts(\"closing-all-workspaces\", updateWorkspaceStore);\n } else {\n updateWorkspaceStore();\n }\n}\nfunction useWorkspaces() {\n var _useStore = (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_2__.useStore)(workspaceStore), workspaceWindowState = _useStore.workspaceWindowState, openWorkspaces = _useStore.openWorkspaces, prompt = _useStore.prompt;\n var memoisedResults = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return {\n active: openWorkspaces.length > 0,\n prompt: prompt,\n workspaceWindowState: workspaceWindowState,\n workspaces: openWorkspaces\n };\n }, [\n openWorkspaces,\n workspaceWindowState,\n prompt\n ]);\n return memoisedResults;\n}\n/**\n * Sets the current prompt according to the prompt type.\n * @param promptType Determines the text and behavior of the prompt\n * @param onConfirmation Function to be called after the user confirms to close the workspace\n * @param workspaceTitle Workspace title to be shown in the prompt\n * @returns\n */ function showWorkspacePrompts(promptType) {\n var onConfirmation = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : function() {}, workspaceTitle = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : \"\";\n var store = getWorkspaceStore();\n var prompt;\n switch(promptType){\n case \"closing-workspace\":\n {\n prompt = {\n title: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)(\"unsavedChangesTitleText\", \"Unsaved changes\"),\n body: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)(\"unsavedChangesInOpenedWorkspace\", \"You have unsaved changes in the opened workspace. Do you want to discard these changes?\"),\n onConfirm: function() {\n onConfirmation === null || onConfirmation === void 0 ? void 0 : onConfirmation();\n },\n confirmText: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)(\"discard\", \"Discard\")\n };\n break;\n }\n case \"closing-all-workspaces\":\n {\n var workspacesNotClosed = store.getState().openWorkspaces.filter(function(param) {\n var name = param.name;\n return !canCloseWorkspaceWithoutPrompting(name);\n }).map(function(param, indx) {\n var title = param.title;\n return \"\".concat(indx + 1, \". \").concat(title);\n });\n prompt = {\n title: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)(\"closingAllWorkspacesPromptTitle\", \"You have unsaved changes\"),\n body: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)(\"closingAllWorkspacesPromptBody\", \"There are unsaved changes in the following workspaces. Do you want to discard changes in the following workspaces? {{workspaceNames}}\", {\n workspaceNames: workspacesNotClosed.join(\",\")\n }),\n onConfirm: function() {\n onConfirmation === null || onConfirmation === void 0 ? void 0 : onConfirmation();\n },\n confirmText: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)(\"closeAllOpenedWorkspaces\", \"Discard changes in {{count}} workspaces\", {\n count: workspacesNotClosed.length\n })\n };\n break;\n }\n case \"closing-workspace-launching-new-workspace\":\n {\n prompt = {\n title: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)(\"unsavedChangesTitleText\", \"Unsaved changes\"),\n body: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)(\"unsavedChangesInWorkspace\", \"There are unsaved changes in {{workspaceName}}. Please save them before opening another workspace.\", {\n workspaceName: workspaceTitle\n }),\n onConfirm: function() {\n store.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n prompt: null\n });\n });\n onConfirmation === null || onConfirmation === void 0 ? void 0 : onConfirmation();\n },\n confirmText: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)(\"openAnyway\", \"Open anyway\")\n };\n break;\n }\n default:\n {\n console.error('Workspace system trying to open unknown prompt type \"'.concat(promptType, '\" in function \"showWorkspacePrompts\"'));\n onConfirmation === null || onConfirmation === void 0 ? void 0 : onConfirmation();\n return;\n }\n }\n store.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n prompt: prompt\n });\n });\n}\nfunction getWorkspaceTitle(workspace, additionalProps) {\n var _additionalProps_workspaceTitle;\n return (_additionalProps_workspaceTitle = additionalProps === null || additionalProps === void 0 ? void 0 : additionalProps[\"workspaceTitle\"]) !== null && _additionalProps_workspaceTitle !== void 0 ? _additionalProps_workspaceTitle : (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.translateFrom)(workspace.moduleName, workspace.title, workspace.title);\n}\nfunction resetWorkspaceStore() {\n getWorkspaceStore().setState(initialState);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy93b3Jrc3BhY2VzL3dvcmtzcGFjZXMudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnQ0FBZ0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ2dCO0FBRytDO0FBRTNDO0FBQ0Q7QUFDb0I7QUFDTztBQTRDOUUsSUFBTVEsNkJBQTZCSCxxRUFBaUJBLENBQTZCLDBCQUEwQjtJQUN6R0ksWUFBWSxDQUFDO0FBQ2Y7QUFpQkE7Ozs7Q0FJQyxHQUNNLFNBQVNDLGtCQUFrQkMsU0FBbUMsRUFBRTtRQU0xQ0EsZ0NBQ2ZBLGlCQUNHQSxvQkFDSUEsd0JBQ05BLGtCQUNRQSwwQkFDQUE7SUFYckJILDJCQUEyQkksUUFBUSxDQUFDLFNBQUNDO2VBQVc7WUFDOUNKLFlBQVksd0NBQ1BJLE1BQU1KLFVBQVUsR0FDbkIscUJBQUNFLFVBQVVHLElBQUksRUFBRyx3Q0FDYkg7Z0JBQ0hJLHFCQUFxQkosQ0FBQUEsaUNBQUFBLFVBQVVJLG1CQUFtQixjQUE3QkosNENBQUFBLGlDQUFpQyxRQUFRO2dCQUM5REssTUFBTUwsQ0FBQUEsa0JBQUFBLFVBQVVLLElBQUksY0FBZEwsNkJBQUFBLGtCQUFrQixNQUFNO2dCQUM5Qk0sU0FBU04sQ0FBQUEscUJBQUFBLFVBQVVNLE9BQU8sY0FBakJOLGdDQUFBQSxxQkFBcUIsS0FBSztnQkFDbkNPLGFBQWFQLENBQUFBLHlCQUFBQSxVQUFVTyxXQUFXLGNBQXJCUCxvQ0FBQUEseUJBQXlCLEtBQUs7Z0JBQzNDUSxPQUFPUixDQUFBQSxtQkFBQUEsVUFBVVEsS0FBSyxjQUFmUiw4QkFBQUEsbUJBQW1CLFFBQVE7Z0JBQ2xDUyxlQUFlVCxDQUFBQSwyQkFBQUEsVUFBVVMsYUFBYSxjQUF2QlQsc0NBQUFBLDJCQUEyQixLQUFLO2dCQUMvQ1UsZUFBZVYs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Q0FDWCx3REFBbUUsT0FBWFgsWUFBVztnQkFFckVDLDJCQUFBQSw0QkFBQUEsS0FBQUEsSUFBQUE7Z0JBQ0E7WUFDRjtJQUNGO0lBQ0FwRCxNQUFNN0MsUUFBUSxDQUFDLFNBQUNDO2VBQVcsd0NBQUtBO1lBQU8yRSxRQUFBQTs7O0FBQ3pDLENBQUM7QUFFRCxTQUFTekIsa0JBQWtCcEQsU0FBZ0MsRUFBRXFDLGVBQXdCLEVBQUU7UUFDOUVBO0lBQVAsT0FBT0EsQ0FBQUEsa0NBQUFBLDRCQUFBQSw2QkFBQUEsS0FBQUEsSUFBQUEsZUFBaUIsQ0FBQyxpQkFBaUIsY0FBbkNBLDZDQUFBQSxrQ0FBdUN6Qyx3RUFBYUEsQ0FBQ0ksVUFBVXVCLFVBQVUsRUFBRXZCLFVBQVVxQixLQUFLLEVBQUVyQixVQUFVcUIsS0FBSyxDQUFDO0FBQ3JIO0FBRU8sU0FBU3dFLHNCQUFzQjtJQUNwQzNDLG9CQUFvQmpELFFBQVEsQ0FBQ2lGO0FBQy9CLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tc3R5bGVndWlkZS9zcmMvd29ya3NwYWNlcy93b3Jrc3BhY2VzLnRzP2MxNWUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IFdvcmtzcGFjZSAqL1xuaW1wb3J0IHsgdHlwZSBSZWFjdE5vZGUsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0eXBlIExpZmVDeWNsZXMgfSBmcm9tICdzaW5nbGUtc3BhJztcbmltcG9ydCBfaTE4biBmcm9tICdpMThuZXh0JztcbmltcG9ydCB7IHR5cGUgRXh0ZW5zaW9uUmVnaXN0cmF0aW9uLCBnZXRFeHRlbnNpb25SZWdpc3RyYXRpb24gfSBmcm9tICdAb3Blbm1ycy9lc20tZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyB0eXBlIFdvcmtzcGFjZVdpbmRvd1N0YXRlIH0gZnJvbSAnQG9wZW5tcnMvZXNtLWdsb2JhbHMnO1xuaW1wb3J0IHsgdXNlU3RvcmUgfSBmcm9tICdAb3Blbm1ycy9lc20tcmVhY3QtdXRpbHMnO1xuaW1wb3J0IHsgbmF2aWdhdGUgfSBmcm9tICdAb3Blbm1ycy9lc20tbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBnZXRHbG9iYWxTdG9yZSwgY3JlYXRlR2xvYmFsU3RvcmUgfSBmcm9tICdAb3Blbm1ycy9lc20tc3RhdGUnO1xuaW1wb3J0IHsgZ2V0Q29yZVRyYW5zbGF0aW9uLCB0cmFuc2xhdGVGcm9tIH0gZnJvbSAnQG9wZW5tcnMvZXNtLXRyYW5zbGF0aW9ucyc7XG5pbXBvcnQgeyB0eXBlIERlZmF1bHRXb3Jrc3BhY2VQcm9wcywgdHlwZSBDbG9zZVdvcmtzcGFjZU9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBQcm9tcHQge1xuICB0aXRsZTogc3RyaW5nO1xuICBib2R5OiBzdHJpbmc7XG4gIC8qKiBEZWZhdWx0cyB0byBcIkNvbmZpcm1cIiAqL1xuICBjb25maXJtVGV4dD86IHN0cmluZztcbiAgb25Db25maXJtKCk6IHZvaWQ7XG4gIC8qKiBEZWZhdWx0cyB0byBcIkNhbmNlbFwiICovXG4gIGNhbmNlbFRleHQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV29ya3NwYWNlU3RvcmVTdGF0ZSB7XG4gIGNvbnRleHQ6IHN0cmluZyB8IG51bGw7XG4gIG9wZW5Xb3Jrc3BhY2VzOiBBcnJheTxPcGVuV29ya3NwYWNlPjtcbiAgcHJvbXB0OiBQcm9tcHQgfCBudWxsO1xuICB3b3Jrc3BhY2VXaW5kb3dTdGF0ZTogV29ya3NwYWNlV2luZG93U3RhdGU7XG59XG5cbi8qKiBTZWUgW1tXb3Jrc3BhY2VEZWZpbml0aW9uXV0gZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlc2UgcHJvcGVydGllcyAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VSZWdpc3RyYXRpb24ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHRpdGxlTm9kZT86IFJlYWN0Tm9kZTtcbiAgdHlwZTogc3RyaW5nO1xuICBjYW5IaWRlOiBib29sZWFuO1xuICBjYW5NYXhpbWl6ZTogYm9vbGVhbjtcbiAgd2lkdGg6ICduYXJyb3cnIHwgJ3dpZGVyJyB8ICdleHRyYS13aWRlJztcbiAgaGFzT3duU2lkZWJhcjogYm9vbGVhbjtcbiAgc2lkZWJhckZhbWlseTogc3RyaW5nO1xuICBwcmVmZXJyZWRXaW5kb3dTaXplOiBXb3Jrc3BhY2VXaW5kb3dTdGF0ZTtcbiAgbG9hZDogKCkgPT4gUHJvbWlzZTx7IGRlZmF1bHQ/OiBMaWZlQ3ljbGVzIH0gJiBMaWZlQ3ljbGVzPjtcbiAgbW9kdWxlTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5Xb3Jrc3BhY2UgZXh0ZW5kcyBXb3Jrc3BhY2VSZWdpc3RyYXRpb24sIERlZmF1bHRXb3Jrc3BhY2VQcm9wcyB7XG4gIGFkZGl0aW9uYWxQcm9wczogb2JqZWN0O1xufVxuXG5pbnRlcmZhY2UgV29ya3NwYWNlUmVnaXN0cmF0aW9uU3RvcmUge1xuICB3b3Jrc3BhY2VzOiBSZWNvcmQ8c3RyaW5nLCBXb3Jrc3BhY2VSZWdpc3RyYXRpb24+O1xufVxuXG5jb25zdCB3b3Jrc3BhY2VSZWdpc3RyYXRpb25TdG9yZSA9IGNyZWF0ZUdsb2JhbFN0b3JlPFdvcmtzcGFjZVJlZ2lzdHJhdGlvblN0b3JlPignd29ya3NwYWNlUmVnaXN0cmF0aW9ucycsIHtcbiAgd29ya3NwYWNlczoge30sXG59KTtcblxuLyoqIFNlZSBbW1dvcmtzcGFjZURlZmluaXRpb25dXSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGVzZSBwcm9wZXJ0aWVzICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdGVyV29ya3NwYWNlT3B0aW9ucyB7XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgdHlwZT86IHN0cmluZztcbiAgY2FuSGlkZT86IGJvb2xlYW47XG4gIGNhbk1heGltaXplPzogYm9vbGVhbjtcbiAgd2lkdGg/OiAnbmFycm93JyB8ICd3aWRlcicgfCAnZXh0cmEtd2lkZSc7XG4gIGhhc093blNpZGViYXI/OiBib29sZWFuO1xuICBzaWRlYmFyRmFtaWx5Pzogc3RyaW5nO1xuICBwcmVmZXJyZWRXaW5kb3dTaXplPzogV29ya3NwYWNlV2luZG93U3RhdGU7XG4gIGxvYWQ6ICgpID0+IFByb21pc2U8eyBkZWZhdWx0PzogTGlmZUN5Y2xlcyB9ICYgTGlmZUN5Y2xlcz47XG4gIG1vZHVsZU5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUZWxscyB0aGUgd29ya3NwYWNlIHN5c3RlbSBhYm91dCBhIHdvcmtzcGFjZS4gVGhpcyBpcyB1c2VkIGJ5IHRoZSBhcHAgc2hlbGxcbiAqIHRvIHJlZ2lzdGVyIHdvcmtzcGFjZXMgZGVmaW5lZCBpbiB0aGUgYHJvdXRlcy5qc29uYCBmaWxlLlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlcldvcmtzcGFjZSh3b3Jrc3BhY2U6IFJlZ2lzdGVyV29ya3NwYWNlT3B0aW9ucykge1xuICB3b3Jrc3BhY2VSZWdpc3RyYXRpb25TdG9yZS5zZXRTdGF0ZSgoc3RhdGUpID0+ICh7XG4gICAgd29ya3NwYWNlczoge1xuICAgICAgLi4uc3RhdGUud29ya3NwYWNlcyxcbiAgICAgIFt3b3Jrc3BhY2UubmFtZV06IHtcbiAgICAgICAgLi4ud29ya3NwYWNlLFxuICAgICAgICBwcmVmZXJyZWRXaW5kb3dTaXplOiB3b3Jrc3BhY2UucHJlZmVycmVkV2luZG93U2l6ZSA/PyAnbm9ybWFsJyxcbiAgICAgICAgdHlwZTogd29ya3NwYWNlLnR5cGUgPz8gJ2Zvcm0nLFxuICAgICAgICBjYW5IaWRlOiB3b3Jrc3BhY2UuY2FuSGlkZSA/PyBmYWxzZSxcbiAgICAgICAgY2FuTWF4aW1pemU6IHdvcmtzcGFjZS5jYW5NYXhpbWl6ZSA/PyBmYWxzZSxcbiAgICAgICAgd2lkdGg6IHdvcmtzcGFjZS53aWR0aCA/PyAnbmFycm93JyxcbiAgICAgICAgaGFzT3duU2lkZWJhcjogd29ya3NwYWNlLmhhc093blNpZGViYXIgPz8gZmFsc2UsXG4gICAgICAgIHNpZGViYXJGYW1pbHk6IHdvcmtzcGFjZS5zaWRlYmFyRmFtaWx5ID8/ICdkZWZhdWx0JyxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSkpO1xufVxuXG5jb25zdCB3b3Jrc3BhY2VFeHRlbnNpb25XYXJuaW5nc0lzc3VlZCA9IG5ldyBTZXQoKTtcbi8qKlxuICogVGhpcyBleGlzdHMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgb2xkIHdheSBvZiByZWdpc3RlcmluZ1xuICogd29ya3NwYWNlcyAoYXMgZXh0ZW5zaW9ucykuXG4gKlxuICogQHBhcmFtIG5hbWUgb2YgdGhlIHdvcmtzcGFjZVxuICovXG5mdW5jdGlvbiBnZXRXb3Jrc3BhY2VSZWdpc3RyYXRpb24obmFtZTogc3RyaW5nKTogV29ya3NwYWNlUmVnaXN0cmF0aW9uIHtcbiAgY29uc3QgcmVnaXN0ZXJlZFdvcmtzcGFjZXMgPSB3b3Jrc3BhY2VSZWdpc3RyYXRpb25TdG9yZS5nZXRTdGF0ZSgpLndvcmtzcGFjZXM7XG4gIGlmIChyZWdpc3RlcmVkV29ya3NwYWNlc1tuYW1lXSkge1xuICAgIHJldHVybiByZWdpc3RlcmVkV29ya3NwYWNlc1tuYW1lXTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB3b3Jrc3BhY2VFeHRlbnNpb24gPSBnZXRFeHRlbnNpb25SZWdpc3RyYXRpb24obmFtZSk7XG4gICAgaWYgKHdvcmtzcGFjZUV4dGVuc2lvbikge1xuICAgICAgaWYgKCF3b3Jrc3BhY2VFeHRlbnNpb25XYXJuaW5nc0lzc3VlZC5oYXMobmFtZSkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBUaGUgd29ya3NwYWNlICcke25hbWV9JyBpcyByZWdpc3RlcmVkIGFzIGFuIGV4dGVuc2lvbi4gVGhpcyBpcyBkZXByZWNhdGVkLiBQbGVhc2UgcmVnaXN0ZXIgaXQgaW4gdGhlIFwid29ya3NwYWNlc1wiIHNlY3Rpb24gb2YgdGhlIHJvdXRlcy5qc29uIGZpbGUuYCxcbiAgICAgICAgKTtcbiAgICAgICAgd29ya3NwYWNlRXh0ZW5zaW9uV2FybmluZ3NJc3N1ZWQuYWRkKG5hbWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogd29ya3NwYWNlRXh0ZW5zaW9uLm5hbWUsXG4gICAgICAgIHRpdGxlOiBnZXRUaXRsZUZyb21FeHRlbnNpb24od29ya3NwYWNlRXh0ZW5zaW9uKSxcbiAgICAgICAgbW9kdWxlTmFtZTogd29ya3NwYWNlRXh0ZW5zaW9uLm1vZHVsZU5hbWUsXG4gICAgICAgIHByZWZlcnJlZFdpbmRvd1NpemU6IHdvcmtzcGFjZUV4dGVuc2lvbi5tZXRhPy5zY3JlZW5TaXplID8/ICdub3JtYWwnLFxuICAgICAgICBsb2FkOiB3b3Jrc3BhY2VFeHRlbnNpb24ubG9hZCxcbiAgICAgICAgdHlwZTogd29ya3NwYWNlRXh0ZW5zaW9uLm1ldGE/LnR5cGUgPz8gJ2Zvcm0nLFxuICAgICAgICBjYW5IaWRlOiB3b3Jrc3BhY2VFeHRlbnNpb24ubWV0YT8uY2FuSGlkZSA/PyBmYWxzZSxcbiAgICAgICAgY2FuTWF4aW1pemU6IHdvcmtzcGFjZUV4dGVuc2lvbi5tZXRhPy5jYW5NYXhpbWl6ZSA/PyBmYWxzZSxcbiAgICAgICAgd2lkdGg6IHdvcmtzcGFjZUV4dGVuc2lvbi5tZXRhPy53aWR0aCA/PyAnbmFycm93JyxcbiAgICAgICAgc2lkZWJhckZhbWlseTogJ2RlZmF1bHQnLFxuICAgICAgICBoYXNPd25TaWRlYmFyOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gd29ya3NwYWNlIG5hbWVkICcke25hbWV9JyBoYXMgYmVlbiByZWdpc3RlcmVkLmApO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRUaXRsZUZyb21FeHRlbnNpb24oZXh0OiBFeHRlbnNpb25SZWdpc3RyYXRpb24pIHtcbiAgY29uc3QgdGl0bGUgPSBleHQ/Lm1ldGE/LnRpdGxlO1xuICBpZiAodHlwZW9mIHRpdGxlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB0aXRsZTtcbiAgfSBlbHNlIGlmICh0aXRsZSAmJiB0eXBlb2YgdGl0bGUgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIHRyYW5zbGF0ZUZyb20oZXh0Lm1vZHVsZU5hbWUsIHRpdGxlLmtleSwgdGl0bGUuZGVmYXVsdCk7XG4gIH1cbiAgcmV0dXJuIGV4dC5uYW1lO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSB3b3Jrc3BhY2VcbiAqIEBwYXJhbSBpZ25vcmVDaGFuZ2VzIElmIHNldCB0byB0cnVlLCB0aGUgXCJ1bnNhdmVkIGNoYW5nZXNcIiBtb2RhbCB3aWxsIG5ldmVyIGJlIHNob3duLCBldmVuIGlmIHRoZSBgcHJvbXB0QmVmb3JlQ2xvc2luZ2AgZnVuY3Rpb24gcmV0dXJucyB0cnVlLiBUaGUgdXNlciB3aWxsIG5vdCBiZSBwcm9tcHRlZCBiZWZvcmUgY2xvc2luZy5cbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIHdvcmtzcGFjZSBjYW4gYmUgY2xvc2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FuQ2xvc2VXb3Jrc3BhY2VXaXRob3V0UHJvbXB0aW5nKG5hbWU6IHN0cmluZywgaWdub3JlQ2hhbmdlczogYm9vbGVhbiA9IGZhbHNlKSB7XG4gIGlmIChpZ25vcmVDaGFuZ2VzKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgY29uc3QgcHJvbXB0QmVmb3JlRm4gPSBnZXRQcm9tcHRCZWZvcmVDbG9zaW5nRmNuKG5hbWUpO1xuICByZXR1cm4gIXByb21wdEJlZm9yZUZuIHx8ICFwcm9tcHRCZWZvcmVGbigpO1xufVxuXG5mdW5jdGlvbiBwcm9tcHRCZWZvcmVMYXVuY2hpbmdXb3Jrc3BhY2UoXG4gIHdvcmtzcGFjZTogT3BlbldvcmtzcGFjZSxcbiAgbmV3V29ya3NwYWNlRGV0YWlsczogeyBuYW1lOiBzdHJpbmc7IGFkZGl0aW9uYWxQcm9wcz86IG9iamVjdCB9LFxuKSB7XG4gIGNvbnN0IHsgbmFtZSwgYWRkaXRpb25hbFByb3BzIH0gPSBuZXdXb3Jrc3BhY2VEZXRhaWxzO1xuXG4gIGNvbnN0IHByb2NlZWQgPSAoKSA9PiB7XG4gICAgd29ya3NwYWNlLmNsb3NlV29ya3NwYWNlKHtcbiAgICAgIGlnbm9yZUNoYW5nZXM6IHRydWUsXG4gICAgICAvLyBDYWxsaW5nIHRoZSBsYXVuY2hXb3Jrc3BhY2UgYWdhaW4sIHNpbmNlIG9uZSBvZiB0aGUgYGlmYCBjYXNlXG4gICAgICAvLyBtaWdodCByZXNvbHZlLCBidXQgd2UgbmVlZCB0byBjaGVjayBhbGwgdGhlIGNhc2VzIGJlZm9yZSBsYXVuY2hpbmcgdGhlIGZvcm0uXG4gICAgICBvbldvcmtzcGFjZUNsb3NlOiAoKSA9PiBsYXVuY2hXb3Jrc3BhY2UobmFtZSwgYWRkaXRpb25hbFByb3BzKSxcbiAgICB9KTtcbiAgfTtcblxuICBpZiAoIWNhbkNsb3NlV29ya3NwYWNlV2l0aG91dFByb21wdGluZyh3b3Jrc3BhY2UubmFtZSkpIHtcbiAgICBzaG93V29ya3NwYWNlUHJvbXB0cygnY2xvc2luZy13b3Jrc3BhY2UtbGF1bmNoaW5nLW5ldy13b3Jrc3BhY2UnLCBwcm9jZWVkLCB3b3Jrc3BhY2UudGl0bGUgPz8gd29ya3NwYWNlLm5hbWUpO1xuICB9IGVsc2Uge1xuICAgIHByb2NlZWQoKTtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgbGF1bmNoZXMgYSB3b3Jrc3BhY2UgYnkgaXRzIG5hbWUuIFRoZSB3b3Jrc3BhY2UgbXVzdCBoYXZlIGJlZW4gcmVnaXN0ZXJlZC5cbiAqIFdvcmtzcGFjZXMgc2hvdWxkIGJlIHJlZ2lzdGVyZWQgaW4gdGhlIGByb3V0ZXMuanNvbmAgZmlsZS5cbiAqXG4gKiBGb3IgdGhlIHdvcmtzcGFjZSB0byBhcHBlYXIsIHRoZXJlIG11c3QgYmUgZWl0aGVyIGEgYDxXb3Jrc3BhY2VPdmVybGF5IC8+YCBvclxuICogYSBgPFdvcmtzcGFjZVdpbmRvdyAvPmAgY29tcG9uZW50IHJlbmRlcmVkLlxuICpcbiAqIFRoZSBiZWhhdmlvciBvZiB0aGlzIGZ1bmN0aW9uIGlzIGFzIGZvbGxvd3M6XG4gKlxuICogLSBJZiBubyB3b3Jrc3BhY2VzIGFyZSBvcGVuLCBvciBpZiBubyBvdGhlciB3b3Jrc3BhY2VzIHdpdGggdGhlIHNhbWUgdHlwZSBhcmUgb3BlbixcbiAqICAgaXQgd2lsbCBiZSBvcGVuZWQgYW5kIGZvY3VzZWQuXG4gKiAtIElmIGEgd29ya3NwYWNlIHdpdGggdGhlIHNhbWUgbmFtZSBpcyBhbHJlYWR5IG9wZW4sIGl0IHdpbGwgYmUgZGlzcGxheWVkL2ZvY3VzZWQsXG4gKiAgIGlmIGl0IHdhcyBub3QgYWxyZWFkeS5cbiAqIC0gSWYgYSB3b3Jrc3BhY2UgaXMgbGF1bmNoZWQgYW5kIGEgd29ya3NwYWNlIHdoaWNoIGNhbm5vdCBiZSBoaWRkZW4gaXMgYWxyZWFkeSBvcGVuLFxuICogIGEgY29uZmlybWF0aW9uIG1vZGFsIHdpbGwgcG9wIHVwIHdhcm5pbmcgYWJvdXQgY2xvc2luZyB0aGUgY3VycmVudGx5IG9wZW4gd29ya3NwYWNlLlxuICogLSBJZiBhbm90aGVyIHdvcmtzcGFjZSB3aXRoIHRoZSBzYW1lIHR5cGUgaXMgb3BlbiwgdGhlIHdvcmtzcGFjZSB3aWxsIGJlIGJyb3VnaHQgdG9cbiAqICAgdGhlIGZyb250IGFuZCB0aGVuIGEgY29uZmlybWF0aW9uIG1vZGFsIHdpbGwgcG9wIHVwIHdhcm5pbmcgYWJvdXQgY2xvc2luZyB0aGUgb3BlbmVkXG4gKiAgIHdvcmtzcGFjZVxuICpcbiAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGp1c3QgbWFuaXB1bGF0ZXMgdGhlIHdvcmtzcGFjZSBzdG9yZS4gVGhlIFVJIGxvZ2ljIGlzIGhhbmRsZWRcbiAqIGJ5IHRoZSBjb21wb25lbnRzIHRoYXQgZGlzcGxheSB3b3Jrc3BhY2VzLlxuICpcbiAqIEFkZGl0aW9uYWwgcHJvcHMgY2FuIGJlIHBhc3NlZCB0byB0aGUgd29ya3NwYWNlIGNvbXBvbmVudCBiZWluZyBsYXVuY2hlZC4gUGFzc2luZyBhXG4gKiBwcm9wIG5hbWVkIGB3b3Jrc3BhY2VUaXRsZWAgd2lsbCBvdmVycmlkZSB0aGUgdGl0bGUgb2YgdGhlIHdvcmtzcGFjZS5cbiAqXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgd29ya3NwYWNlIHRvIGxhdW5jaFxuICogQHBhcmFtIGFkZGl0aW9uYWxQcm9wcyBQcm9wcyB0byBwYXNzIHRvIHRoZSB3b3Jrc3BhY2UgY29tcG9uZW50IGJlaW5nIGxhdW5jaGVkLiBQYXNzaW5nXG4gKiAgICAgICAgICBhIHByb3AgbmFtZWQgYHdvcmtzcGFjZVRpdGxlYCB3aWxsIG92ZXJyaWRlIHRoZSB0aXRsZSBvZiB0aGUgd29ya3NwYWNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbGF1bmNoV29ya3NwYWNlPFxuICBUIGV4dGVuZHMgRGVmYXVsdFdvcmtzcGFjZVByb3BzIHwgb2JqZWN0ID0gRGVmYXVsdFdvcmtzcGFjZVByb3BzICYgeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbj4obmFtZTogc3RyaW5nLCBhZGRpdGlvbmFsUHJvcHM/OiBPbWl0PFQsIGtleW9mIERlZmF1bHRXb3Jrc3BhY2VQcm9wcz4gJiB7IHdvcmtzcGFjZVRpdGxlPzogc3RyaW5nIH0pIHtcbiAgY29uc3Qgc3RvcmUgPSBnZXRXb3Jrc3BhY2VTdG9yZSgpO1xuICBjb25zdCB3b3Jrc3BhY2UgPSBnZXRXb3Jrc3BhY2VSZWdpc3RyYXRpb24obmFtZSk7XG4gIGNvbnN0IG5ld1dvcmtzcGFjZSA9IHtcbiAgICAuLi53b3Jrc3BhY2UsXG4gICAgdGl0bGU6IGdldFdvcmtzcGFjZVRpdGxlKHdvcmtzcGFjZSwgYWRkaXRpb25hbFByb3BzKSxcbiAgICBjbG9zZVdvcmtzcGFjZTogKG9wdGlvbnM6IENsb3NlV29ya3NwYWNlT3B0aW9ucyA9IHt9KSA9PiBjbG9zZVdvcmtzcGFjZShuYW1lLCBvcHRpb25zKSxcbiAgICBjbG9zZVdvcmtzcGFjZVdpdGhTYXZlZENoYW5nZXM6IChvcHRpb25zOiBDbG9zZVdvcmtzcGFjZU9wdGlvbnMpID0+XG4gICAgICBjbG9zZVdvcmtzcGFjZShuYW1lLCB7IGlnbm9yZUNoYW5nZXM6IHRydWUsIC4uLm9wdGlvbnMgfSksXG4gICAgcHJvbXB0QmVmb3JlQ2xvc2luZzogKHRlc3RGY24pID0+IHByb21wdEJlZm9yZUNsb3NpbmcobmFtZSwgdGVzdEZjbiksXG4gICAgc2V0VGl0bGU6ICh0aXRsZTogc3RyaW5nLCB0aXRsZU5vZGU6IFJlYWN0Tm9kZSkgPT4ge1xuICAgICAgbmV3V29ya3NwYWNlLnRpdGxlID0gdGl0bGU7XG4gICAgICBuZXdXb3Jrc3BhY2UudGl0bGVOb2RlID0gdGl0bGVOb2RlO1xuICAgICAgc3RvcmUuc2V0U3RhdGUoKHN0YXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wZW5Xb3Jrc3BhY2VzID0gc3RhdGUub3BlbldvcmtzcGFjZXMubWFwKCh3KSA9PiAody5uYW1lID09PSBuYW1lID8gbmV3V29ya3NwYWNlIDogdykpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIG9wZW5Xb3Jrc3BhY2VzLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBhZGRpdGlvbmFsUHJvcHM6IGFkZGl0aW9uYWxQcm9wcyA/PyB7fSxcbiAgfTtcblxuICBmdW5jdGlvbiB1cGRhdGVTdG9yZVdpdGhOZXdXb3Jrc3BhY2Uod29ya3NwYWNlVG9CZUFkZGVkOiBPcGVuV29ya3NwYWNlLCByZXN0T2ZUaGVXb3Jrc3BhY2VzPzogQXJyYXk8T3BlbldvcmtzcGFjZT4pIHtcbiAgICBzdG9yZS5zZXRTdGF0ZSgoc3RhdGUpID0+IHtcbiAgICAgIGNvbnN0IG9wZW5Xb3Jrc3BhY2VzID0gW3dvcmtzcGFjZVRvQmVBZGRlZCwgLi4uKHJlc3RPZlRoZVdvcmtzcGFjZXMgPz8gc3RhdGUub3BlbldvcmtzcGFjZXMpXTtcbiAgICAgIGxldCB3b3Jrc3BhY2VXaW5kb3dTdGF0ZSA9IGdldFVwZGF0ZWRXb3Jrc3BhY2VXaW5kb3dTdGF0ZShvcGVuV29ya3NwYWNlc1swXSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBvcGVuV29ya3NwYWNlcyxcbiAgICAgICAgd29ya3NwYWNlV2luZG93U3RhdGUsXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3Qgb3BlbldvcmtzcGFjZXMgPSBzdG9yZS5nZXRTdGF0ZSgpLm9wZW5Xb3Jrc3BhY2VzO1xuICBjb25zdCB3b3Jrc3BhY2VJbmRleEluT3BlbldvcmtzcGFjZXMgPSBvcGVuV29ya3NwYWNlcy5maW5kSW5kZXgoKHcpID0+IHcubmFtZSA9PT0gbmFtZSk7XG4gIGNvbnN0IGlzV29ya3NwYWNlQWxyZWFkeU9wZW4gPSB3b3Jrc3BhY2VJbmRleEluT3BlbldvcmtzcGFjZXMgPj0gMDtcbiAgY29uc3Qgb3BlbmVkV29ya3NwYWNlV2l0aFNhbWVUeXBlID0gb3BlbldvcmtzcGFjZXMuZmluZCgodykgPT4gdy50eXBlID09IG5ld1dvcmtzcGFjZS50eXBlKTtcblxuICBpZiAob3BlbldvcmtzcGFjZXMubGVuZ3RoID09PSAwKSB7XG4gICAgdXBkYXRlU3RvcmVXaXRoTmV3V29ya3NwYWNlKG5ld1dvcmtzcGFjZSk7XG4gIH0gZWxzZSBpZiAoIW9wZW5Xb3Jrc3BhY2VzWzBdLmNhbkhpZGUgJiYgd29ya3NwYWNlSW5kZXhJbk9wZW5Xb3Jrc3BhY2VzICE9PSAwKSB7XG4gICAgcHJvbXB0QmVmb3JlTGF1bmNoaW5nV29ya3NwYWNlKG9wZW5Xb3Jrc3BhY2VzWzBdLCB7XG4gICAgICBuYW1lLFxuICAgICAgYWRkaXRpb25hbFByb3BzLFxuICAgIH0pO1xuICB9IGVsc2UgaWYgKGlzV29ya3NwYWNlQWxyZWFkeU9wZW4pIHtcbiAgICBjb25zdCBvcGVuV29ya3NwYWNlID0gb3BlbldvcmtzcGFjZXNbd29ya3NwYWNlSW5kZXhJbk9wZW5Xb3Jrc3BhY2VzXTtcbiAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgdGl0bGUgaWYgaXQgaGFzbid0IGJlZW4gc2V0IGJ5IGBzZXRUaXRsZWBcbiAgICBpZiAob3BlbldvcmtzcGFjZS50aXRsZSA9PSBnZXRXb3Jrc3BhY2VUaXRsZShvcGVuV29ya3NwYWNlLCBvcGVuV29ya3NwYWNlLmFkZGl0aW9uYWxQcm9wcykpIHtcbiAgICAgIG9wZW5Xb3Jrc3BhY2UudGl0bGUgPSBnZXRXb3Jrc3BhY2VUaXRsZShvcGVuV29ya3NwYWNlLCBuZXdXb3Jrc3BhY2UuYWRkaXRpb25hbFByb3BzKTtcbiAgICB9XG4gICAgb3BlbldvcmtzcGFjZS5hZGRpdGlvbmFsUHJvcHMgPSBuZXdXb3Jrc3BhY2UuYWRkaXRpb25hbFByb3BzO1xuICAgIGNvbnN0IHJlc3RPZlRoZVdvcmtzcGFjZXMgPSBvcGVuV29ya3NwYWNlcy5maWx0ZXIoKHcpID0+IHcubmFtZSAhPSBuYW1lKTtcbiAgICB1cGRhdGVTdG9yZVdpdGhOZXdXb3Jrc3BhY2Uob3BlbldvcmtzcGFjZXNbd29ya3NwYWNlSW5kZXhJbk9wZW5Xb3Jrc3BhY2VzXSwgcmVzdE9mVGhlV29ya3NwYWNlcyk7XG4gIH0gZWxzZSBpZiAob3BlbmVkV29ya3NwYWNlV2l0aFNhbWVUeXBlKSB7XG4gICAgY29uc3QgcmVzdE9mVGhlV29ya3NwYWNlcyA9IHN0b3JlLmdldFN0YXRlKCkub3BlbldvcmtzcGFjZXMuZmlsdGVyKCh3KSA9PiB3LnR5cGUgIT0gbmV3V29ya3NwYWNlLnR5cGUpO1xuICAgIHVwZGF0ZVN0b3JlV2l0aE5ld1dvcmtzcGFjZShvcGVuZWRXb3Jrc3BhY2VXaXRoU2FtZVR5cGUsIHJlc3RPZlRoZVdvcmtzcGFjZXMpO1xuICAgIHByb21wdEJlZm9yZUxhdW5jaGluZ1dvcmtzcGFjZShvcGVuZWRXb3Jrc3BhY2VXaXRoU2FtZVR5cGUsIHtcbiAgICAgIG5hbWUsXG4gICAgICBhZGRpdGlvbmFsUHJvcHMsXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdXBkYXRlU3RvcmVXaXRoTmV3V29ya3NwYWNlKG5ld1dvcmtzcGFjZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBVc2UgdGhpcyBmdW5jdGlvbiB0byBuYXZpZ2F0ZSB0byBhIG5ldyBwYWdlIGFuZCBsYXVuY2ggYSB3b3Jrc3BhY2Ugb24gdGhhdCBwYWdlLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zLnRhcmdldFVybDogVGhlIFVSTCB0byBuYXZpZ2F0ZSB0by4gV2lsbCBiZSBwYXNzZWQgdG8gW1tuYXZpZ2F0ZV1dLlxuICogQHBhcmFtIG9wdGlvbnMuY29udGV4dEtleTogVGhlIGNvbnRleHQga2V5IHVzZWQgYnkgdGhlIHRhcmdldCBwYWdlLlxuICogQHBhcmFtIG9wdGlvbnMud29ya3NwYWNlTmFtZTogVGhlIG5hbWUgb2YgdGhlIHdvcmtzcGFjZSB0byBsYXVuY2guXG4gKiBAcGFyYW0gb3B0aW9ucy5hZGRpdGlvbmFsUHJvcHM6IEFkZGl0aW9uYWwgcHJvcHMgdG8gcGFzcyB0byB0aGUgd29ya3NwYWNlIGNvbXBvbmVudCBiZWluZyBsYXVuY2hlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5hdmlnYXRlQW5kTGF1bmNoV29ya3NwYWNlKHtcbiAgdGFyZ2V0VXJsLFxuICBjb250ZXh0S2V5LFxuICB3b3Jrc3BhY2VOYW1lLFxuICBhZGRpdGlvbmFsUHJvcHMsXG59OiB7XG4gIHRhcmdldFVybDogc3RyaW5nO1xuICBjb250ZXh0S2V5OiBzdHJpbmc7XG4gIHdvcmtzcGFjZU5hbWU6IHN0cmluZztcbiAgYWRkaXRpb25hbFByb3BzPzogb2JqZWN0O1xufSkge1xuICBjaGFuZ2VXb3Jrc3BhY2VDb250ZXh0KGNvbnRleHRLZXkpO1xuICBsYXVuY2hXb3Jrc3BhY2Uod29ya3NwYWNlTmFtZSwgYWRkaXRpb25hbFByb3BzKTtcbiAgbmF2aWdhdGUoeyB0bzogdGFyZ2V0VXJsIH0pO1xufVxuXG5jb25zdCBwcm9tcHRCZWZvcmVDbG9zaW5nRmNucyA9IHt9O1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvbXB0QmVmb3JlQ2xvc2luZyh3b3Jrc3BhY2VOYW1lOiBzdHJpbmcsIHRlc3RGY246ICgpID0+IGJvb2xlYW4pIHtcbiAgcHJvbXB0QmVmb3JlQ2xvc2luZ0ZjbnNbd29ya3NwYWNlTmFtZV0gPSB0ZXN0RmNuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvbXB0QmVmb3JlQ2xvc2luZ0Zjbih3b3Jrc3BhY2VOYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHByb21wdEJlZm9yZUNsb3NpbmdGY25zW3dvcmtzcGFjZU5hbWVdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FuY2VsUHJvbXB0KCkge1xuICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG4gIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgc3RvcmUuc2V0U3RhdGUoeyAuLi5zdGF0ZSwgcHJvbXB0OiBudWxsIH0pO1xufVxuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIGNsb3NlIGFuIG9wZW5lZCB3b3Jrc3BhY2VcbiAqIEBwYXJhbSBuYW1lIFdvcmtzcGFjZSByZWdpc3RyYXRpb24gbmFtZVxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyB0byBjbG9zZSB3b3Jrc3BhY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsb3NlV29ya3NwYWNlKFxuICBuYW1lOiBzdHJpbmcsXG4gIG9wdGlvbnM6IENsb3NlV29ya3NwYWNlT3B0aW9ucyA9IHtcbiAgICBpZ25vcmVDaGFuZ2VzOiBmYWxzZSxcbiAgICBvbldvcmtzcGFjZUNsb3NlOiAoKSA9PiB7fSxcbiAgfSxcbik6IGJvb2xlYW4ge1xuICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG5cbiAgY29uc3QgdXBkYXRlU3RvcmVXaXRoQ2xvc2VkV29ya3NwYWNlID0gKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgICBjb25zdCBuZXdPcGVuV29ya3NwYWNlcyA9IHN0YXRlLm9wZW5Xb3Jrc3BhY2VzLmZpbHRlcigodykgPT4gdy5uYW1lICE9IG5hbWUpO1xuXG4gICAgLy8gZW5zdXJlIGNsb3NlZCB3b3Jrc3BhY2Ugd2lsbCBub3QgcHJvbXB0XG4gICAgcHJvbXB0QmVmb3JlQ2xvc2luZyhuYW1lLCAoKSA9PiBmYWxzZSk7XG4gICAgc3RvcmUuc2V0U3RhdGUoe1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBwcm9tcHQ6IG51bGwsXG4gICAgICBvcGVuV29ya3NwYWNlczogbmV3T3BlbldvcmtzcGFjZXMsXG4gICAgICB3b3Jrc3BhY2VXaW5kb3dTdGF0ZTogZ2V0VXBkYXRlZFdvcmtzcGFjZVdpbmRvd1N0YXRlKG5ld09wZW5Xb3Jrc3BhY2VzPy5bMF0pLFxuICAgIH0pO1xuXG4gICAgb3B0aW9ucz8ub25Xb3Jrc3BhY2VDbG9zZT8uKCk7XG4gIH07XG5cbiAgaWYgKCFjYW5DbG9zZVdvcmtzcGFjZVdpdGhvdXRQcm9tcHRpbmcobmFtZSwgb3B0aW9ucz8uaWdub3JlQ2hhbmdlcykpIHtcbiAgICBjb25zdCBjdXJyZW50TmFtZSA9IGdldFdvcmtzcGFjZVJlZ2lzdHJhdGlvbihuYW1lKS50aXRsZSA/PyBuYW1lO1xuICAgIHNob3dXb3Jrc3BhY2VQcm9tcHRzKCdjbG9zaW5nLXdvcmtzcGFjZScsIHVwZGF0ZVN0b3JlV2l0aENsb3NlZFdvcmtzcGFjZSwgY3VycmVudE5hbWUpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICB1cGRhdGVTdG9yZVdpdGhDbG9zZWRXb3Jrc3BhY2UoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBzZXQgb2Ygd29ya3NwYWNlcyBpcyBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgcGFnZS4gVGhpcyBmdW5jdGlvblxuICogc2hvdWxkIGJlIHVzZWQgd2hlbiB0cmFuc2l0aW9uaW5nIHRvIGEgbmV3IHBhZ2UuIElmIHRoZSBjdXJyZW50XG4gKiB3b3Jrc3BhY2UgZGF0YSBpcyBmb3IgYSBkaWZmZXJlbnQgcGFnZSwgdGhlIHdvcmtzcGFjZSBzdGF0ZSBpcyBjbGVhcmVkLlxuICpcbiAqIFRoaXMgaXMgY2FsbGVkIGJ5IHRoZSB3b3Jrc3BhY2UgY29tcG9uZW50cyB3aGVuIHRoZXkgbW91bnQuXG4gKiBAaW50ZXJuYWxcbiAqXG4gKiBAcGFyYW0gY29udGV4dEtleSBBbiBhcmJpdHJhcnkga2V5IHRvIGlkZW50aWZ5IHRoZSBjdXJyZW50IHBhZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoYW5nZVdvcmtzcGFjZUNvbnRleHQoY29udGV4dEtleTogc3RyaW5nIHwgbnVsbCkge1xuICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG4gIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgaWYgKHN0YXRlLmNvbnRleHQgIT0gY29udGV4dEtleSkge1xuICAgIHN0b3JlLnNldFN0YXRlKHsgY29udGV4dDogY29udGV4dEtleSwgb3BlbldvcmtzcGFjZXM6IFtdLCBwcm9tcHQ6IG51bGwgfSk7XG4gIH1cbn1cblxuY29uc3QgaW5pdGlhbFN0YXRlOiBXb3Jrc3BhY2VTdG9yZVN0YXRlID0ge1xuICBjb250ZXh0OiAnJyxcbiAgb3BlbldvcmtzcGFjZXM6IFtdLFxuICBwcm9tcHQ6IG51bGwsXG4gIHdvcmtzcGFjZVdpbmRvd1N0YXRlOiAnbm9ybWFsJyxcbn07XG5cbmV4cG9ydCBjb25zdCB3b3Jrc3BhY2VTdG9yZSA9IGNyZWF0ZUdsb2JhbFN0b3JlKCd3b3Jrc3BhY2UnLCBpbml0aWFsU3RhdGUpO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya3NwYWNlU3RvcmUoKSB7XG4gIHJldHVybiBnZXRHbG9iYWxTdG9yZTxXb3Jrc3BhY2VTdG9yZVN0YXRlPignd29ya3NwYWNlJywgaW5pdGlhbFN0YXRlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVdvcmtzcGFjZVdpbmRvd1N0YXRlKHZhbHVlOiBXb3Jrc3BhY2VXaW5kb3dTdGF0ZSkge1xuICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG4gIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgc3RvcmUuc2V0U3RhdGUoeyAuLi5zdGF0ZSwgd29ya3NwYWNlV2luZG93U3RhdGU6IHZhbHVlIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRVcGRhdGVkV29ya3NwYWNlV2luZG93U3RhdGUod29ya3NwYWNlQXRUb3A6IE9wZW5Xb3Jrc3BhY2UpIHtcbiAgcmV0dXJuIHdvcmtzcGFjZUF0VG9wPy5wcmVmZXJyZWRXaW5kb3dTaXplID8/ICdub3JtYWwnO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNsb3NlQWxsV29ya3NwYWNlcyhvbkNsb3NpbmdXb3Jrc3BhY2VzOiAoKSA9PiB2b2lkID0gKCkgPT4ge30pIHtcbiAgY29uc3Qgc3RvcmUgPSBnZXRXb3Jrc3BhY2VTdG9yZSgpO1xuXG4gIGNvbnN0IGNhbkNsb3NlQWxsV29ya3NwYWNlcyA9IHN0b3JlLmdldFN0YXRlKCkub3BlbldvcmtzcGFjZXMuZXZlcnkoKHsgbmFtZSB9KSA9PiB7XG4gICAgY29uc3QgY2FuQ2xvc2VXb3Jrc3BhY2UgPSBjYW5DbG9zZVdvcmtzcGFjZVdpdGhvdXRQcm9tcHRpbmcobmFtZSk7XG4gICAgcmV0dXJuIGNhbkNsb3NlV29ya3NwYWNlO1xuICB9KTtcblxuICBjb25zdCB1cGRhdGVXb3Jrc3BhY2VTdG9yZSA9ICgpID0+IHtcbiAgICByZXNldFdvcmtzcGFjZVN0b3JlKCk7XG4gICAgb25DbG9zaW5nV29ya3NwYWNlcz8uKCk7XG4gIH07XG5cbiAgaWYgKCFjYW5DbG9zZUFsbFdvcmtzcGFjZXMpIHtcbiAgICBzaG93V29ya3NwYWNlUHJvbXB0cygnY2xvc2luZy1hbGwtd29ya3NwYWNlcycsIHVwZGF0ZVdvcmtzcGFjZVN0b3JlKTtcbiAgfSBlbHNlIHtcbiAgICB1cGRhdGVXb3Jrc3BhY2VTdG9yZSgpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV29ya3NwYWNlc0luZm8ge1xuICBhY3RpdmU6IGJvb2xlYW47XG4gIHByb21wdDogUHJvbXB0IHwgbnVsbDtcbiAgd29ya3NwYWNlV2luZG93U3RhdGU6IFdvcmtzcGFjZVdpbmRvd1N0YXRlO1xuICB3b3Jrc3BhY2VzOiBBcnJheTxPcGVuV29ya3NwYWNlPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVdvcmtzcGFjZXMoKTogV29ya3NwYWNlc0luZm8ge1xuICBjb25zdCB7IHdvcmtzcGFjZVdpbmRvd1N0YXRlLCBvcGVuV29ya3NwYWNlcywgcHJvbXB0IH0gPSB1c2VTdG9yZSh3b3Jrc3BhY2VTdG9yZSk7XG5cbiAgY29uc3QgbWVtb2lzZWRSZXN1bHRzID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgYWN0aXZlOiBvcGVuV29ya3NwYWNlcy5sZW5ndGggPiAwLFxuICAgICAgcHJvbXB0LFxuICAgICAgd29ya3NwYWNlV2luZG93U3RhdGUsXG4gICAgICB3b3Jrc3BhY2VzOiBvcGVuV29ya3NwYWNlcyxcbiAgICB9KSxcbiAgICBbb3BlbldvcmtzcGFjZXMsIHdvcmtzcGFjZVdpbmRvd1N0YXRlLCBwcm9tcHRdLFxuICApO1xuXG4gIHJldHVybiBtZW1vaXNlZFJlc3VsdHM7XG59XG5cbnR5cGUgUHJvbXB0VHlwZSA9ICdjbG9zaW5nLXdvcmtzcGFjZScgfCAnY2xvc2luZy1hbGwtd29ya3NwYWNlcycgfCAnY2xvc2luZy13b3Jrc3BhY2UtbGF1bmNoaW5nLW5ldy13b3Jrc3BhY2UnO1xuXG4vKipcbiAqIFNldHMgdGhlIGN1cnJlbnQgcHJvbXB0IGFjY29yZGluZyB0byB0aGUgcHJvbXB0IHR5cGUuXG4gKiBAcGFyYW0gcHJvbXB0VHlwZSBEZXRlcm1pbmVzIHRoZSB0ZXh0IGFuZCBiZWhhdmlvciBvZiB0aGUgcHJvbXB0XG4gKiBAcGFyYW0gb25Db25maXJtYXRpb24gRnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFmdGVyIHRoZSB1c2VyIGNvbmZpcm1zIHRvIGNsb3NlIHRoZSB3b3Jrc3BhY2VcbiAqIEBwYXJhbSB3b3Jrc3BhY2VUaXRsZSBXb3Jrc3BhY2UgdGl0bGUgdG8gYmUgc2hvd24gaW4gdGhlIHByb21wdFxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3dXb3Jrc3BhY2VQcm9tcHRzKFxuICBwcm9tcHRUeXBlOiBQcm9tcHRUeXBlLFxuICBvbkNvbmZpcm1hdGlvbjogKCkgPT4gdm9pZCA9ICgpID0+IHt9LFxuICB3b3Jrc3BhY2VUaXRsZTogc3RyaW5nID0gJycsXG4pIHtcbiAgY29uc3Qgc3RvcmUgPSBnZXRXb3Jrc3BhY2VTdG9yZSgpO1xuXG4gIGxldCBwcm9tcHQ6IFByb21wdDtcbiAgc3dpdGNoIChwcm9tcHRUeXBlKSB7XG4gICAgY2FzZSAnY2xvc2luZy13b3Jrc3BhY2UnOiB7XG4gICAgICBwcm9tcHQgPSB7XG4gICAgICAgIHRpdGxlOiBnZXRDb3JlVHJhbnNsYXRpb24oJ3Vuc2F2ZWRDaGFuZ2VzVGl0bGVUZXh0JywgJ1Vuc2F2ZWQgY2hhbmdlcycpLFxuICAgICAgICBib2R5OiBnZXRDb3JlVHJhbnNsYXRpb24oXG4gICAgICAgICAgJ3Vuc2F2ZWRDaGFuZ2VzSW5PcGVuZWRXb3Jrc3BhY2UnLFxuICAgICAgICAgIGBZb3UgaGF2ZSB1bnNhdmVkIGNoYW5nZXMgaW4gdGhlIG9wZW5lZCB3b3Jrc3BhY2UuIERvIHlvdSB3YW50IHRvIGRpc2NhcmQgdGhlc2UgY2hhbmdlcz9gLFxuICAgICAgICApLFxuICAgICAgICBvbkNvbmZpcm06ICgpID0+IHtcbiAgICAgICAgICBvbkNvbmZpcm1hdGlvbj8uKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZpcm1UZXh0OiBnZXRDb3JlVHJhbnNsYXRpb24oJ2Rpc2NhcmQnLCAnRGlzY2FyZCcpLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNhc2UgJ2Nsb3NpbmctYWxsLXdvcmtzcGFjZXMnOiB7XG4gICAgICBjb25zdCB3b3Jrc3BhY2VzTm90Q2xvc2VkID0gc3RvcmVcbiAgICAgICAgLmdldFN0YXRlKClcbiAgICAgICAgLm9wZW5Xb3Jrc3BhY2VzLmZpbHRlcigoeyBuYW1lIH0pID0+ICFjYW5DbG9zZVdvcmtzcGFjZVdpdGhvdXRQcm9tcHRpbmcobmFtZSkpXG4gICAgICAgIC5tYXAoKHsgdGl0bGUgfSwgaW5keCkgPT4gYCR7aW5keCArIDF9LiAke3RpdGxlfWApO1xuXG4gICAgICBwcm9tcHQgPSB7XG4gICAgICAgIHRpdGxlOiBnZXRDb3JlVHJhbnNsYXRpb24oJ2Nsb3NpbmdBbGxXb3Jrc3BhY2VzUHJvbXB0VGl0bGUnLCAnWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzJyksXG4gICAgICAgIGJvZHk6IGdldENvcmVUcmFuc2xhdGlvbihcbiAgICAgICAgICAnY2xvc2luZ0FsbFdvcmtzcGFjZXNQcm9tcHRCb2R5JyxcbiAgICAgICAgICAnVGhlcmUgYXJlIHVuc2F2ZWQgY2hhbmdlcyBpbiB0aGUgZm9sbG93aW5nIHdvcmtzcGFjZXMuIERvIHlvdSB3YW50IHRvIGRpc2NhcmQgY2hhbmdlcyBpbiB0aGUgZm9sbG93aW5nIHdvcmtzcGFjZXM/IHt7d29ya3NwYWNlTmFtZXN9fScsXG4gICAgICAgICAge1xuICAgICAgICAgICAgd29ya3NwYWNlTmFtZXM6IHdvcmtzcGFjZXNOb3RDbG9zZWQuam9pbignLCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgICksXG4gICAgICAgIG9uQ29uZmlybTogKCkgPT4ge1xuICAgICAgICAgIG9uQ29uZmlybWF0aW9uPy4oKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmlybVRleHQ6IGdldENvcmVUcmFuc2xhdGlvbignY2xvc2VBbGxPcGVuZWRXb3Jrc3BhY2VzJywgJ0Rpc2NhcmQgY2hhbmdlcyBpbiB7e2NvdW50fX0gd29ya3NwYWNlcycsIHtcbiAgICAgICAgICBjb3VudDogd29ya3NwYWNlc05vdENsb3NlZC5sZW5ndGgsXG4gICAgICAgIH0pLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlICdjbG9zaW5nLXdvcmtzcGFjZS1sYXVuY2hpbmctbmV3LXdvcmtzcGFjZSc6IHtcbiAgICAgIHByb21wdCA9IHtcbiAgICAgICAgdGl0bGU6IGdldENvcmVUcmFuc2xhdGlvbigndW5zYXZlZENoYW5nZXNUaXRsZVRleHQnLCAnVW5zYXZlZCBjaGFuZ2VzJyksXG4gICAgICAgIGJvZHk6IGdldENvcmVUcmFuc2xhdGlvbihcbiAgICAgICAgICAndW5zYXZlZENoYW5nZXNJbldvcmtzcGFjZScsXG4gICAgICAgICAgJ1RoZXJlIGFyZSB1bnNhdmVkIGNoYW5nZXMgaW4ge3t3b3Jrc3BhY2VOYW1lfX0uIFBsZWFzZSBzYXZlIHRoZW0gYmVmb3JlIG9wZW5pbmcgYW5vdGhlciB3b3Jrc3BhY2UuJyxcbiAgICAgICAgICB7IHdvcmtzcGFjZU5hbWU6IHdvcmtzcGFjZVRpdGxlIH0sXG4gICAgICAgICksXG4gICAgICAgIG9uQ29uZmlybTogKCkgPT4ge1xuICAgICAgICAgIHN0b3JlLnNldFN0YXRlKChzdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgcHJvbXB0OiBudWxsLFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgICBvbkNvbmZpcm1hdGlvbj8uKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZpcm1UZXh0OiBnZXRDb3JlVHJhbnNsYXRpb24oJ29wZW5Bbnl3YXknLCAnT3BlbiBhbnl3YXknKSxcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFdvcmtzcGFjZSBzeXN0ZW0gdHJ5aW5nIHRvIG9wZW4gdW5rbm93biBwcm9tcHQgdHlwZSBcIiR7cHJvbXB0VHlwZX1cIiBpbiBmdW5jdGlvbiBcInNob3dXb3Jrc3BhY2VQcm9tcHRzXCJgLFxuICAgICAgKTtcbiAgICAgIG9uQ29uZmlybWF0aW9uPy4oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgc3RvcmUuc2V0U3RhdGUoKHN0YXRlKSA9PiAoeyAuLi5zdGF0ZSwgcHJvbXB0IH0pKTtcbn1cblxuZnVuY3Rpb24gZ2V0V29ya3NwYWNlVGl0bGUod29ya3NwYWNlOiBXb3Jrc3BhY2VSZWdpc3RyYXRpb24sIGFkZGl0aW9uYWxQcm9wcz86IG9iamVjdCkge1xuICByZXR1cm4gYWRkaXRpb25hbFByb3BzPy5bJ3dvcmtzcGFjZVRpdGxlJ10gPz8gdHJhbnNsYXRlRnJvbSh3b3Jrc3BhY2UubW9kdWxlTmFtZSwgd29ya3NwYWNlLnRpdGxlLCB3b3Jrc3BhY2UudGl0bGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRXb3Jrc3BhY2VTdG9yZSgpIHtcbiAgZ2V0V29ya3NwYWNlU3RvcmUoKS5zZXRTdGF0ZShpbml0aWFsU3RhdGUpO1xufVxuIl0sIm5hbWVzIjpbInVzZU1lbW8iLCJnZXRFeHRlbnNpb25SZWdpc3RyYXRpb24iLCJ1c2VTdG9yZSIsIm5hdmlnYXRlIiwiZ2V0R2xvYmFsU3RvcmUiLCJjcmVhdGVHbG9iYWxTdG9yZSIsImdldENvcmVUcmFuc2xhdGlvbiIsInRyYW5zbGF0ZUZyb20iLCJ3b3Jrc3BhY2VSZWdpc3RyYXRpb25TdG9yZSIsIndvcmtzcGFjZXMiLCJyZWdpc3RlcldvcmtzcGFjZSIsIndvcmtzcGFjZSIsInNldFN0YXRlIiwic3RhdGUiLCJuYW1lIiwicHJlZmVycmVkV2luZG93U2l6ZSIsInR5cGUiLCJjYW5IaWRlIiwiY2FuTWF4aW1pemUiLCJ3aWR0aCIsImhhc093blNpZGViYXIiLCJzaWRlYmFyRmFtaWx5Iiwid29ya3NwYWNlRXh0ZW5zaW9uV2FybmluZ3NJc3N1ZWQiLCJTZXQiLCJnZXRXb3Jrc3BhY2VSZWdpc3RyYXRpb24iLCJyZWdpc3RlcmVkV29ya3NwYWNlcyIsImdldFN0YXRlIiwid29ya3NwYWNlRXh0ZW5zaW9uIiwiaGFzIiwiY29uc29sZSIsIndhcm4iLCJhZGQiLCJ0aXRsZSIsImdldFRpdGxlRnJvbUV4dGVuc2lvbiIsIm1vZHVsZU5hbWUiLCJtZXRhIiwic2NyZWVuU2l6ZSIsImxvYWQiLCJFcnJvciIsImV4dCIsImtleSIsImRlZmF1bHQiLCJjYW5DbG9zZVdvcmtzcGFjZVdpdGhvdXRQcm9tcHRpbmciLCJpZ25vcmVDaGFuZ2VzIiwicHJvbXB0QmVmb3JlRm4iLCJnZXRQcm9tcHRCZWZvcmVDbG9zaW5nRmNuIiwicHJvbXB0QmVmb3JlTGF1bmNoaW5nV29ya3NwYWNlIiwibmV3V29ya3NwYWNlRGV0YWlscyIsImFkZGl0aW9uYWxQcm9wcyIsInByb2NlZWQiLCJjbG9zZVdvcmtzcGFjZSIsIm9uV29ya3NwYWNlQ2xvc2UiLCJsYXVuY2hXb3Jrc3BhY2UiLCJzaG93V29ya3NwYWNlUHJvbXB0cyIsInVwZGF0ZVN0b3JlV2l0aE5ld1dvcmtzcGFjZSIsIndvcmtzcGFjZVRvQmVBZGRlZCIsInJlc3RPZlRoZVdvcmtzcGFjZXMiLCJzdG9yZSIsIm9wZW5Xb3Jrc3BhY2VzIiwid29ya3NwYWNlV2luZG93U3RhdGUiLCJnZXRVcGRhdGVkV29ya3NwYWNlV2luZG93U3RhdGUiLCJnZXRXb3Jrc3BhY2VTdG9yZSIsIm5ld1dvcmtzcGFjZSIsImdldFdvcmtzcGFjZVRpdGxlIiwib3B0aW9ucyIsImNsb3NlV29ya3NwYWNlV2l0aFNhdmVkQ2hhbmdlcyIsInByb21wdEJlZm9yZUNsb3NpbmciLCJ0ZXN0RmNuIiwic2V0VGl0bGUiLCJ0aXRsZU5vZGUiLCJtYXAiLCJ3Iiwid29ya3NwYWNlSW5kZXhJbk9wZW5Xb3Jrc3BhY2VzIiwiZmluZEluZGV4IiwiaXNXb3Jrc3BhY2VBbHJlYWR5T3BlbiIsIm9wZW5lZFdvcmtzcGFjZVdpdGhTYW1lVHlwZSIsImZpbmQiLCJsZW5ndGgiLCJvcGVuV29ya3NwYWNlIiwiZmlsdGVyIiwibmF2aWdhdGVBbmRMYXVuY2hXb3Jrc3BhY2UiLCJ0YXJnZXRVcmwiLCJjb250ZXh0S2V5Iiwid29ya3NwYWNlTmFtZSIsImNoYW5nZVdvcmtzcGFjZUNvbnRleHQiLCJ0byIsInByb21wdEJlZm9yZUNsb3NpbmdGY25zIiwiY2FuY2VsUHJvbXB0IiwicHJvbXB0IiwidXBkYXRlU3RvcmVXaXRoQ2xvc2VkV29ya3NwYWNlIiwibmV3T3BlbldvcmtzcGFjZXMiLCJjdXJyZW50TmFtZSIsImNvbnRleHQiLCJpbml0aWFsU3RhdGUiLCJ3b3Jrc3BhY2VTdG9yZSIsInVwZGF0ZVdvcmtzcGFjZVdpbmRvd1N0YXRlIiwidmFsdWUiLCJ3b3Jrc3BhY2VBdFRvcCIsImNsb3NlQWxsV29ya3NwYWNlcyIsIm9uQ2xvc2luZ1dvcmtzcGFjZXMiLCJjYW5DbG9zZUFsbFdvcmtzcGFjZXMiLCJldmVyeSIsImNhbkNsb3NlV29ya3NwYWNlIiwidXBkYXRlV29ya3NwYWNlU3RvcmUiLCJyZXNldFdvcmtzcGFjZVN0b3JlIiwidXNlV29ya3NwYWNlcyIsIm1lbW9pc2VkUmVzdWx0cyIsImFjdGl2ZSIsInByb21wdFR5cGUiLCJvbkNvbmZpcm1hdGlvbiIsIndvcmtzcGFjZVRpdGxlIiwiYm9keSIsIm9uQ29uZmlybSIsImNvbmZpcm1UZXh0Iiwid29ya3NwYWNlc05vdENsb3NlZCIsImluZHgiLCJ3b3Jrc3BhY2VOYW1lcyIsImpvaW4iLCJjb3VudCIsImVycm9yIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/src/workspaces/workspaces.ts\n");
|
|
8281
8281
|
|
|
8282
8282
|
/***/ }),
|
|
8283
8283
|
|
|
@@ -8310,7 +8310,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
8310
8310
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8311
8311
|
|
|
8312
8312
|
"use strict";
|
|
8313
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ coreTranslations: () => (/* binding */ coreTranslations)\n/* harmony export */ });\n/** Please keep these alphebetized */ function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nvar addressFields = {\n address1: \"Address line 1\",\n address2: \"Address line 2\",\n address3: \"Address line 3\",\n address4: \"Address line 4\",\n address5: \"Address line 5\",\n address6: \"Address line 6\",\n city: \"City\",\n cityVillage: \"City\",\n country: \"Country\",\n countyDistrict: \"District\",\n postalCode: \"Postal code\",\n state: \"State\",\n stateProvince: \"State\"\n};\nvar workspaceTranslations = {\n closeAllOpenedWorkspaces: \"Discard changes in {{count}} workspaces\",\n closingAllWorkspacesPromptBody: \"There are unsaved changes in the following workspaces. Do you want to discard changes in the following workspaces? {{workspaceNames}}\",\n closingAllWorkspacesPromptTitle: \"You have unsaved changes\",\n discard: \"Discard\",\n hide: \"Hide\",\n maximize: \"Maximize\",\n minimize: \"Minimize\",\n openAnyway: \"Open Anyway\",\n unsavedChangesInOpenedWorkspace: \"You have unsaved changes in the opened workspace. Do you want to discard these changes?\",\n unsavedChangesInWorkspace: \"There are unsaved changes in {{workspaceName}}. Please save them before opening another workspace.\",\n unsavedChangesTitleText: \"Unsaved Changes\",\n workspaceHeader: \"Workspace Header\"\n};\nvar coreTranslations = _object_spread_props(_object_spread({}, addressFields, workspaceTranslations), {\n actions: \"Actions\",\n address: \"Address\",\n cancel: \"Cancel\",\n change: \"Change\",\n close: \"Close\",\n confirm: \"Confirm\",\n contactAdministratorIfIssuePersists: \"Contact your system administrator if the problem persists.\",\n contactDetails: \"Contact Details\",\n error: \"Error\",\n errorCopy: \"Sorry, there was a problem displaying this information. You can try to reload this page, or contact the site administrator and quote the error code above.\",\n female: \"Female\",\n hideDetails: \"Hide details\",\n loading: \"Loading\",\n male: \"Male\",\n other: \"Other\",\n patientLists: \"Patient Lists\",\n relationships: \"Relationships\",\n resetOverrides: \"Reset overrides\",\n scriptLoadingFailed: \"Error: Script failed to load\",\n scriptLoadingError: \"Failed to load overridden script from {{url}}. Please check that the bundled script is available at the expected URL. Click the button below to reset all import map overrides.\",\n seeMoreLists: \"See {{count}} more lists\",\n showDetails: \"Show details\",\n unknown: \"Unknown\"\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS10cmFuc2xhdGlvbnMvc3JjL3RyYW5zbGF0aW9ucy50cyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsbUNBQW1DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRW5DLElBQU1BLGdCQUFnQjtJQUNwQkMsVUFBVTtJQUNWQyxVQUFVO0lBQ1ZDLFVBQVU7SUFDVkMsVUFBVTtJQUNWQyxVQUFVO0lBQ1ZDLFVBQVU7SUFDVkMsTUFBTTtJQUNOQyxhQUFhO0lBQ2JDLFNBQVM7SUFDVEMsZ0JBQWdCO0lBQ2hCQyxZQUFZO0lBQ1pDLE9BQU87SUFDUEMsZUFBZTtBQUNqQjtBQUVBLElBQU1DLHdCQUF3QjtJQUM1QkMsMEJBQTBCO0lBQzFCQyxnQ0FDRTtJQUNGQyxpQ0FBaUM7SUFDakNDLFNBQVM7SUFDVEMsTUFBTTtJQUNOQyxVQUFVO0lBQ1ZDLFVBQVU7SUFDVkMsWUFBWTtJQUNaQyxpQ0FBa0M7SUFDbENDLDJCQUNFO0lBQ0ZDLHlCQUF5QjtJQUN6QkMsaUJBQWlCO0FBQ25CO0FBRU8sSUFBTUMsbUJBQW1CLHdDQUMzQjNCLGVBQ0FjO0lBQ0hjLFNBQVM7SUFDVEMsU0FBUztJQUNUQyxRQUFRO0lBQ1JDLFFBQVE7SUFDUkMsT0FBTztJQUNQQyxTQUFTO0lBQ1RDLHFDQUFxQztJQUNyQ0MsZ0JBQWdCO0lBQ2hCQyxPQUFPO0lBQ1BDLFdBQ0U7SUFDRkMsUUFBUTtJQUNSQyxhQUFhO0lBQ2JDLFNBQVM7SUFDVEMsTUFBTTtJQUNOQyxPQUFPO0lBQ1BDLGNBQWM7SUFDZEMsZUFBZTtJQUNmQyxnQkFBZ0I7SUFDaEJDLHFCQUFxQjtJQUNyQkMsb0JBQ0U7SUFDRkMsY0FBYztJQUNkQyxhQUFhO0lBQ2JDLFNBQVM7R0FDVCIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS10cmFuc2xhdGlvbnMvc3JjL3RyYW5zbGF0aW9ucy50cz9mMzYxIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBQbGVhc2Uga2VlcCB0aGVzZSBhbHBoZWJldGl6ZWQgKi9cblxuY29uc3QgYWRkcmVzc0ZpZWxkcyA9IHtcbiAgYWRkcmVzczE6ICdBZGRyZXNzIGxpbmUgMScsXG4gIGFkZHJlc3MyOiAnQWRkcmVzcyBsaW5lIDInLFxuICBhZGRyZXNzMzogJ0FkZHJlc3MgbGluZSAzJyxcbiAgYWRkcmVzczQ6ICdBZGRyZXNzIGxpbmUgNCcsXG4gIGFkZHJlc3M1OiAnQWRkcmVzcyBsaW5lIDUnLFxuICBhZGRyZXNzNjogJ0FkZHJlc3MgbGluZSA2JyxcbiAgY2l0eTogJ0NpdHknLFxuICBjaXR5VmlsbGFnZTogJ0NpdHknLFxuICBjb3VudHJ5OiAnQ291bnRyeScsXG4gIGNvdW50eURpc3RyaWN0OiAnRGlzdHJpY3QnLFxuICBwb3N0YWxDb2RlOiAnUG9zdGFsIGNvZGUnLFxuICBzdGF0ZTogJ1N0YXRlJyxcbiAgc3RhdGVQcm92aW5jZTogJ1N0YXRlJyxcbn07XG5cbmNvbnN0IHdvcmtzcGFjZVRyYW5zbGF0aW9ucyA9IHtcbiAgY2xvc2VBbGxPcGVuZWRXb3Jrc3BhY2VzOiAnRGlzY2FyZCBjaGFuZ2VzIGluIHt7Y291bnR9fSB3b3Jrc3BhY2VzJyxcbiAgY2xvc2luZ0FsbFdvcmtzcGFjZXNQcm9tcHRCb2R5OlxuICAgICdUaGVyZSBhcmUgdW5zYXZlZCBjaGFuZ2VzIGluIHRoZSBmb2xsb3dpbmcgd29ya3NwYWNlcy4gRG8geW91IHdhbnQgdG8gZGlzY2FyZCBjaGFuZ2VzIGluIHRoZSBmb2xsb3dpbmcgd29ya3NwYWNlcz8ge3t3b3Jrc3BhY2VOYW1lc319JyxcbiAgY2xvc2luZ0FsbFdvcmtzcGFjZXNQcm9tcHRUaXRsZTogJ1lvdSBoYXZlIHVuc2F2ZWQgY2hhbmdlcycsXG4gIGRpc2NhcmQ6ICdEaXNjYXJkJyxcbiAgaGlkZTogJ0hpZGUnLFxuICBtYXhpbWl6ZTogJ01heGltaXplJyxcbiAgbWluaW1pemU6ICdNaW5pbWl6ZScsXG4gIG9wZW5Bbnl3YXk6ICdPcGVuIEFueXdheScsXG4gIHVuc2F2ZWRDaGFuZ2VzSW5PcGVuZWRXb3Jrc3BhY2U6IGBZb3UgaGF2ZSB1bnNhdmVkIGNoYW5nZXMgaW4gdGhlIG9wZW5lZCB3b3Jrc3BhY2UuIERvIHlvdSB3YW50IHRvIGRpc2NhcmQgdGhlc2UgY2hhbmdlcz9gLFxuICB1bnNhdmVkQ2hhbmdlc0luV29ya3NwYWNlOlxuICAgICdUaGVyZSBhcmUgdW5zYXZlZCBjaGFuZ2VzIGluIHt7d29ya3NwYWNlTmFtZX19LiBQbGVhc2Ugc2F2ZSB0aGVtIGJlZm9yZSBvcGVuaW5nIGFub3RoZXIgd29ya3NwYWNlLicsXG4gIHVuc2F2ZWRDaGFuZ2VzVGl0bGVUZXh0OiAnVW5zYXZlZCBDaGFuZ2VzJyxcbiAgd29ya3NwYWNlSGVhZGVyOiAnV29ya3NwYWNlIEhlYWRlcicsXG59O1xuXG5leHBvcnQgY29uc3QgY29yZVRyYW5zbGF0aW9ucyA9IHtcbiAgLi4uYWRkcmVzc0ZpZWxkcyxcbiAgLi4ud29ya3NwYWNlVHJhbnNsYXRpb25zLFxuICBhY3Rpb25zOiAnQWN0aW9ucycsXG4gIGFkZHJlc3M6ICdBZGRyZXNzJyxcbiAgY2FuY2VsOiAnQ2FuY2VsJyxcbiAgY2hhbmdlOiAnQ2hhbmdlJyxcbiAgY2xvc2U6ICdDbG9zZScsXG4gIGNvbmZpcm06ICdDb25maXJtJyxcbiAgY29udGFjdEFkbWluaXN0cmF0b3JJZklzc3VlUGVyc2lzdHM6ICdDb250YWN0IHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgaWYgdGhlIHByb2JsZW0gcGVyc2lzdHMuJyxcbiAgY29udGFjdERldGFpbHM6ICdDb250YWN0IERldGFpbHMnLFxuICBlcnJvcjogJ0Vycm9yJyxcbiAgZXJyb3JDb3B5OlxuICAgICdTb3JyeSwgdGhlcmUgd2FzIGEgcHJvYmxlbSBkaXNwbGF5aW5nIHRoaXMgaW5mb3JtYXRpb24uIFlvdSBjYW4gdHJ5IHRvIHJlbG9hZCB0aGlzIHBhZ2UsIG9yIGNvbnRhY3QgdGhlIHNpdGUgYWRtaW5pc3RyYXRvciBhbmQgcXVvdGUgdGhlIGVycm9yIGNvZGUgYWJvdmUuJyxcbiAgZmVtYWxlOiAnRmVtYWxlJyxcbiAgaGlkZURldGFpbHM6ICdIaWRlIGRldGFpbHMnLFxuICBsb2FkaW5nOiAnTG9hZGluZycsXG4gIG1hbGU6ICdNYWxlJyxcbiAgb3RoZXI6ICdPdGhlcicsXG4gIHBhdGllbnRMaXN0czogJ1BhdGllbnQgTGlzdHMnLFxuICByZWxhdGlvbnNoaXBzOiAnUmVsYXRpb25zaGlwcycsXG4gIHJlc2V0T3ZlcnJpZGVzOiAnUmVzZXQgb3ZlcnJpZGVzJyxcbiAgc2NyaXB0TG9hZGluZ0ZhaWxlZDogJ0Vycm9yOiBTY3JpcHQgZmFpbGVkIHRvIGxvYWQnLFxuICBzY3JpcHRMb2FkaW5nRXJyb3I6XG4gICAgJ0ZhaWxlZCB0byBsb2FkIG92ZXJyaWRkZW4gc2NyaXB0IGZyb20ge3t1cmx9fS4gUGxlYXNlIGNoZWNrIHRoYXQgdGhlIGJ1bmRsZWQgc2NyaXB0IGlzIGF2YWlsYWJsZSBhdCB0aGUgZXhwZWN0ZWQgVVJMLiBDbGljayB0aGUgYnV0dG9uIGJlbG93IHRvIHJlc2V0IGFsbCBpbXBvcnQgbWFwIG92ZXJyaWRlcy4nLFxuICBzZWVNb3JlTGlzdHM6ICdTZWUge3tjb3VudH19IG1vcmUgbGlzdHMnLFxuICBzaG93RGV0YWlsczogJ1Nob3cgZGV0YWlscycsXG4gIHVua25vd246ICdVbmtub3duJyxcbn07XG4iXSwibmFtZXMiOlsiYWRkcmVzc0ZpZWxkcyIsImFkZHJlc3MxIiwiYWRkcmVzczIiLCJhZGRyZXNzMyIsImFkZHJlc3M0IiwiYWRkcmVzczUiLCJhZGRyZXNzNiIsImNpdHkiLCJjaXR5VmlsbGFnZSIsImNvdW50cnkiLCJjb3VudHlEaXN0cmljdCIsInBvc3RhbENvZGUiLCJzdGF0ZSIsInN0YXRlUHJvdmluY2UiLCJ3b3Jrc3BhY2VUcmFuc2xhdGlvbnMiLCJjbG9zZUFsbE9wZW5lZFdvcmtzcGFjZXMiLCJjbG9zaW5nQWxsV29ya3NwYWNlc1Byb21wdEJvZHkiLCJjbG9zaW5nQWxsV29ya3NwYWNlc1Byb21wdFRpdGxlIiwiZGlzY2FyZCIsImhpZGUiLCJtYXhpbWl6ZSIsIm1pbmltaXplIiwib3BlbkFueXdheSIsInVuc2F2ZWRDaGFuZ2VzSW5PcGVuZWRXb3Jrc3BhY2UiLCJ1bnNhdmVkQ2hhbmdlc0luV29ya3NwYWNlIiwidW5zYXZlZENoYW5nZXNUaXRsZVRleHQiLCJ3b3Jrc3BhY2VIZWFkZXIiLCJjb3JlVHJhbnNsYXRpb25zIiwiYWN0aW9ucyIsImFkZHJlc3MiLCJjYW5jZWwiLCJjaGFuZ2UiLCJjbG9zZSIsImNvbmZpcm0iLCJjb250YWN0QWRtaW5pc3RyYXRvcklmSXNzdWVQZXJzaXN0cyIsImNvbnRhY3REZXRhaWxzIiwiZXJyb3IiLCJlcnJvckNvcHkiLCJmZW1hbGUiLCJoaWRlRGV0YWlscyIsImxvYWRpbmciLCJtYWxlIiwib3RoZXIiLCJwYXRpZW50TGlzdHMiLCJyZWxhdGlvbnNoaXBzIiwicmVzZXRPdmVycmlkZXMiLCJzY3JpcHRMb2FkaW5nRmFpbGVkIiwic2NyaXB0TG9hZGluZ0Vycm9yIiwic2VlTW9yZUxpc3RzIiwic2hvd0RldGFpbHMiLCJ1bmtub3duIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-translations/src/translations.ts\n");
|
|
8313
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ coreTranslations: () => (/* binding */ coreTranslations)\n/* harmony export */ });\n/** Please keep these alphabetized */ function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nvar addressFields = {\n address1: \"Address line 1\",\n address2: \"Address line 2\",\n address3: \"Address line 3\",\n address4: \"Address line 4\",\n address5: \"Address line 5\",\n address6: \"Address line 6\",\n city: \"City\",\n cityVillage: \"City\",\n country: \"Country\",\n countyDistrict: \"District\",\n postalCode: \"Postal code\",\n state: \"State\",\n stateProvince: \"State\"\n};\nvar workspaceTranslations = {\n closeAllOpenedWorkspaces: \"Discard changes in {{count}} workspaces\",\n closingAllWorkspacesPromptBody: \"There are unsaved changes in the following workspaces. Do you want to discard changes in the following workspaces? {{workspaceNames}}\",\n closingAllWorkspacesPromptTitle: \"You have unsaved changes\",\n discard: \"Discard\",\n hide: \"Hide\",\n maximize: \"Maximize\",\n minimize: \"Minimize\",\n openAnyway: \"Open anyway\",\n unsavedChangesInOpenedWorkspace: \"You have unsaved changes in the opened workspace. Do you want to discard these changes?\",\n unsavedChangesInWorkspace: \"There are unsaved changes in {{workspaceName}}. Please save them before opening another workspace.\",\n unsavedChangesTitleText: \"Unsaved changes\",\n workspaceHeader: \"Workspace header\"\n};\nvar coreTranslations = _object_spread_props(_object_spread({}, addressFields, workspaceTranslations), {\n actions: \"Actions\",\n address: \"Address\",\n cancel: \"Cancel\",\n change: \"Change\",\n close: \"Close\",\n confirm: \"Confirm\",\n contactAdministratorIfIssuePersists: \"Contact your system administrator if the problem persists.\",\n contactDetails: \"Contact details\",\n error: \"Error\",\n errorCopy: \"Sorry, there was a problem displaying this information. You can try to reload this page, or contact the site administrator and quote the error code above.\",\n female: \"Female\",\n hideDetails: \"Hide details\",\n loading: \"Loading\",\n male: \"Male\",\n other: \"Other\",\n patientLists: \"Patient lists\",\n relationships: \"Relationships\",\n resetOverrides: \"Reset overrides\",\n scriptLoadingFailed: \"Error: Script failed to load\",\n scriptLoadingError: \"Failed to load overridden script from {{url}}. Please check that the bundled script is available at the expected URL. Click the button below to reset all import map overrides.\",\n seeMoreLists: \"See {{count}} more lists\",\n showDetails: \"Show details\",\n unknown: \"Unknown\"\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS10cmFuc2xhdGlvbnMvc3JjL3RyYW5zbGF0aW9ucy50cyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsbUNBQW1DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRW5DLElBQU1BLGdCQUFnQjtJQUNwQkMsVUFBVTtJQUNWQyxVQUFVO0lBQ1ZDLFVBQVU7SUFDVkMsVUFBVTtJQUNWQyxVQUFVO0lBQ1ZDLFVBQVU7SUFDVkMsTUFBTTtJQUNOQyxhQUFhO0lBQ2JDLFNBQVM7SUFDVEMsZ0JBQWdCO0lBQ2hCQyxZQUFZO0lBQ1pDLE9BQU87SUFDUEMsZUFBZTtBQUNqQjtBQUVBLElBQU1DLHdCQUF3QjtJQUM1QkMsMEJBQTBCO0lBQzFCQyxnQ0FDRTtJQUNGQyxpQ0FBaUM7SUFDakNDLFNBQVM7SUFDVEMsTUFBTTtJQUNOQyxVQUFVO0lBQ1ZDLFVBQVU7SUFDVkMsWUFBWTtJQUNaQyxpQ0FBa0M7SUFDbENDLDJCQUNFO0lBQ0ZDLHlCQUF5QjtJQUN6QkMsaUJBQWlCO0FBQ25CO0FBRU8sSUFBTUMsbUJBQW1CLHdDQUMzQjNCLGVBQ0FjO0lBQ0hjLFNBQVM7SUFDVEMsU0FBUztJQUNUQyxRQUFRO0lBQ1JDLFFBQVE7SUFDUkMsT0FBTztJQUNQQyxTQUFTO0lBQ1RDLHFDQUFxQztJQUNyQ0MsZ0JBQWdCO0lBQ2hCQyxPQUFPO0lBQ1BDLFdBQ0U7SUFDRkMsUUFBUTtJQUNSQyxhQUFhO0lBQ2JDLFNBQVM7SUFDVEMsTUFBTTtJQUNOQyxPQUFPO0lBQ1BDLGNBQWM7SUFDZEMsZUFBZTtJQUNmQyxnQkFBZ0I7SUFDaEJDLHFCQUFxQjtJQUNyQkMsb0JBQ0U7SUFDRkMsY0FBYztJQUNkQyxhQUFhO0lBQ2JDLFNBQVM7R0FDVCIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS10cmFuc2xhdGlvbnMvc3JjL3RyYW5zbGF0aW9ucy50cz9mMzYxIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBQbGVhc2Uga2VlcCB0aGVzZSBhbHBoYWJldGl6ZWQgKi9cblxuY29uc3QgYWRkcmVzc0ZpZWxkcyA9IHtcbiAgYWRkcmVzczE6ICdBZGRyZXNzIGxpbmUgMScsXG4gIGFkZHJlc3MyOiAnQWRkcmVzcyBsaW5lIDInLFxuICBhZGRyZXNzMzogJ0FkZHJlc3MgbGluZSAzJyxcbiAgYWRkcmVzczQ6ICdBZGRyZXNzIGxpbmUgNCcsXG4gIGFkZHJlc3M1OiAnQWRkcmVzcyBsaW5lIDUnLFxuICBhZGRyZXNzNjogJ0FkZHJlc3MgbGluZSA2JyxcbiAgY2l0eTogJ0NpdHknLFxuICBjaXR5VmlsbGFnZTogJ0NpdHknLFxuICBjb3VudHJ5OiAnQ291bnRyeScsXG4gIGNvdW50eURpc3RyaWN0OiAnRGlzdHJpY3QnLFxuICBwb3N0YWxDb2RlOiAnUG9zdGFsIGNvZGUnLFxuICBzdGF0ZTogJ1N0YXRlJyxcbiAgc3RhdGVQcm92aW5jZTogJ1N0YXRlJyxcbn07XG5cbmNvbnN0IHdvcmtzcGFjZVRyYW5zbGF0aW9ucyA9IHtcbiAgY2xvc2VBbGxPcGVuZWRXb3Jrc3BhY2VzOiAnRGlzY2FyZCBjaGFuZ2VzIGluIHt7Y291bnR9fSB3b3Jrc3BhY2VzJyxcbiAgY2xvc2luZ0FsbFdvcmtzcGFjZXNQcm9tcHRCb2R5OlxuICAgICdUaGVyZSBhcmUgdW5zYXZlZCBjaGFuZ2VzIGluIHRoZSBmb2xsb3dpbmcgd29ya3NwYWNlcy4gRG8geW91IHdhbnQgdG8gZGlzY2FyZCBjaGFuZ2VzIGluIHRoZSBmb2xsb3dpbmcgd29ya3NwYWNlcz8ge3t3b3Jrc3BhY2VOYW1lc319JyxcbiAgY2xvc2luZ0FsbFdvcmtzcGFjZXNQcm9tcHRUaXRsZTogJ1lvdSBoYXZlIHVuc2F2ZWQgY2hhbmdlcycsXG4gIGRpc2NhcmQ6ICdEaXNjYXJkJyxcbiAgaGlkZTogJ0hpZGUnLFxuICBtYXhpbWl6ZTogJ01heGltaXplJyxcbiAgbWluaW1pemU6ICdNaW5pbWl6ZScsXG4gIG9wZW5Bbnl3YXk6ICdPcGVuIGFueXdheScsXG4gIHVuc2F2ZWRDaGFuZ2VzSW5PcGVuZWRXb3Jrc3BhY2U6IGBZb3UgaGF2ZSB1bnNhdmVkIGNoYW5nZXMgaW4gdGhlIG9wZW5lZCB3b3Jrc3BhY2UuIERvIHlvdSB3YW50IHRvIGRpc2NhcmQgdGhlc2UgY2hhbmdlcz9gLFxuICB1bnNhdmVkQ2hhbmdlc0luV29ya3NwYWNlOlxuICAgICdUaGVyZSBhcmUgdW5zYXZlZCBjaGFuZ2VzIGluIHt7d29ya3NwYWNlTmFtZX19LiBQbGVhc2Ugc2F2ZSB0aGVtIGJlZm9yZSBvcGVuaW5nIGFub3RoZXIgd29ya3NwYWNlLicsXG4gIHVuc2F2ZWRDaGFuZ2VzVGl0bGVUZXh0OiAnVW5zYXZlZCBjaGFuZ2VzJyxcbiAgd29ya3NwYWNlSGVhZGVyOiAnV29ya3NwYWNlIGhlYWRlcicsXG59O1xuXG5leHBvcnQgY29uc3QgY29yZVRyYW5zbGF0aW9ucyA9IHtcbiAgLi4uYWRkcmVzc0ZpZWxkcyxcbiAgLi4ud29ya3NwYWNlVHJhbnNsYXRpb25zLFxuICBhY3Rpb25zOiAnQWN0aW9ucycsXG4gIGFkZHJlc3M6ICdBZGRyZXNzJyxcbiAgY2FuY2VsOiAnQ2FuY2VsJyxcbiAgY2hhbmdlOiAnQ2hhbmdlJyxcbiAgY2xvc2U6ICdDbG9zZScsXG4gIGNvbmZpcm06ICdDb25maXJtJyxcbiAgY29udGFjdEFkbWluaXN0cmF0b3JJZklzc3VlUGVyc2lzdHM6ICdDb250YWN0IHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgaWYgdGhlIHByb2JsZW0gcGVyc2lzdHMuJyxcbiAgY29udGFjdERldGFpbHM6ICdDb250YWN0IGRldGFpbHMnLFxuICBlcnJvcjogJ0Vycm9yJyxcbiAgZXJyb3JDb3B5OlxuICAgICdTb3JyeSwgdGhlcmUgd2FzIGEgcHJvYmxlbSBkaXNwbGF5aW5nIHRoaXMgaW5mb3JtYXRpb24uIFlvdSBjYW4gdHJ5IHRvIHJlbG9hZCB0aGlzIHBhZ2UsIG9yIGNvbnRhY3QgdGhlIHNpdGUgYWRtaW5pc3RyYXRvciBhbmQgcXVvdGUgdGhlIGVycm9yIGNvZGUgYWJvdmUuJyxcbiAgZmVtYWxlOiAnRmVtYWxlJyxcbiAgaGlkZURldGFpbHM6ICdIaWRlIGRldGFpbHMnLFxuICBsb2FkaW5nOiAnTG9hZGluZycsXG4gIG1hbGU6ICdNYWxlJyxcbiAgb3RoZXI6ICdPdGhlcicsXG4gIHBhdGllbnRMaXN0czogJ1BhdGllbnQgbGlzdHMnLFxuICByZWxhdGlvbnNoaXBzOiAnUmVsYXRpb25zaGlwcycsXG4gIHJlc2V0T3ZlcnJpZGVzOiAnUmVzZXQgb3ZlcnJpZGVzJyxcbiAgc2NyaXB0TG9hZGluZ0ZhaWxlZDogJ0Vycm9yOiBTY3JpcHQgZmFpbGVkIHRvIGxvYWQnLFxuICBzY3JpcHRMb2FkaW5nRXJyb3I6XG4gICAgJ0ZhaWxlZCB0byBsb2FkIG92ZXJyaWRkZW4gc2NyaXB0IGZyb20ge3t1cmx9fS4gUGxlYXNlIGNoZWNrIHRoYXQgdGhlIGJ1bmRsZWQgc2NyaXB0IGlzIGF2YWlsYWJsZSBhdCB0aGUgZXhwZWN0ZWQgVVJMLiBDbGljayB0aGUgYnV0dG9uIGJlbG93IHRvIHJlc2V0IGFsbCBpbXBvcnQgbWFwIG92ZXJyaWRlcy4nLFxuICBzZWVNb3JlTGlzdHM6ICdTZWUge3tjb3VudH19IG1vcmUgbGlzdHMnLFxuICBzaG93RGV0YWlsczogJ1Nob3cgZGV0YWlscycsXG4gIHVua25vd246ICdVbmtub3duJyxcbn07XG4iXSwibmFtZXMiOlsiYWRkcmVzc0ZpZWxkcyIsImFkZHJlc3MxIiwiYWRkcmVzczIiLCJhZGRyZXNzMyIsImFkZHJlc3M0IiwiYWRkcmVzczUiLCJhZGRyZXNzNiIsImNpdHkiLCJjaXR5VmlsbGFnZSIsImNvdW50cnkiLCJjb3VudHlEaXN0cmljdCIsInBvc3RhbENvZGUiLCJzdGF0ZSIsInN0YXRlUHJvdmluY2UiLCJ3b3Jrc3BhY2VUcmFuc2xhdGlvbnMiLCJjbG9zZUFsbE9wZW5lZFdvcmtzcGFjZXMiLCJjbG9zaW5nQWxsV29ya3NwYWNlc1Byb21wdEJvZHkiLCJjbG9zaW5nQWxsV29ya3NwYWNlc1Byb21wdFRpdGxlIiwiZGlzY2FyZCIsImhpZGUiLCJtYXhpbWl6ZSIsIm1pbmltaXplIiwib3BlbkFueXdheSIsInVuc2F2ZWRDaGFuZ2VzSW5PcGVuZWRXb3Jrc3BhY2UiLCJ1bnNhdmVkQ2hhbmdlc0luV29ya3NwYWNlIiwidW5zYXZlZENoYW5nZXNUaXRsZVRleHQiLCJ3b3Jrc3BhY2VIZWFkZXIiLCJjb3JlVHJhbnNsYXRpb25zIiwiYWN0aW9ucyIsImFkZHJlc3MiLCJjYW5jZWwiLCJjaGFuZ2UiLCJjbG9zZSIsImNvbmZpcm0iLCJjb250YWN0QWRtaW5pc3RyYXRvcklmSXNzdWVQZXJzaXN0cyIsImNvbnRhY3REZXRhaWxzIiwiZXJyb3IiLCJlcnJvckNvcHkiLCJmZW1hbGUiLCJoaWRlRGV0YWlscyIsImxvYWRpbmciLCJtYWxlIiwib3RoZXIiLCJwYXRpZW50TGlzdHMiLCJyZWxhdGlvbnNoaXBzIiwicmVzZXRPdmVycmlkZXMiLCJzY3JpcHRMb2FkaW5nRmFpbGVkIiwic2NyaXB0TG9hZGluZ0Vycm9yIiwic2VlTW9yZUxpc3RzIiwic2hvd0RldGFpbHMiLCJ1bmtub3duIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-translations/src/translations.ts\n");
|
|
8314
8314
|
|
|
8315
8315
|
/***/ }),
|
|
8316
8316
|
|
|
@@ -8861,7 +8861,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
8861
8861
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8862
8862
|
|
|
8863
8863
|
"use strict";
|
|
8864
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ setupUtils: () => (/* binding */ setupUtils)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_styleguide_dist_openmrs_esm_styleguide_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-styleguide/dist/openmrs-esm-styleguide.css */ \"../../framework/esm-styleguide/dist/openmrs-esm-styleguide.css\");\n/* harmony import */ var import_map_overrides__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! import-map-overrides */ \"../../../node_modules/import-map-overrides/dist/import-map-overrides.js\");\n/* harmony import */ var _openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @openmrs/esm-framework */ \"webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework\");\n/* harmony import */ var _openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_2__);\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, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\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(_)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\n\n\nfunction _createSpaBase(baseUrl) {\n return function() {\n return baseUrl;\n };\n}\nfunction setupPaths(config) {\n var error = false;\n if (!config.apiUrl) {\n console.error(\"initializeSpa() was called without supplying an apiUrl. This means that the application cannot communicate with the backend.\");\n error = true;\n }\n if (!config.spaPath) {\n console.error(\"initializeSpa() was called without supplying a spaPath. This means that the application cannot properly generate urls.\");\n error = true;\n }\n if (error) {\n throw new Error(\"One or more required properties in the basic configuration of the application was missing and the application cannot be rendered. Please see the browser console for details.\");\n }\n window.openmrsBase = config.apiUrl;\n window.spaBase = config.spaPath;\n window.spaEnv = config.env || \"production\";\n var _process_env_BUILD_VERSION;\n window.spaVersion = (_process_env_BUILD_VERSION = \"5.6.1-pre.2043-20240705\") !== null && _process_env_BUILD_VERSION !== void 0 ? _process_env_BUILD_VERSION : \"local\";\n var spaBaseWithSlash = window.spaBase.endsWith(\"/\") ? window.spaBase : window.spaBase + \"/\";\n window.getOpenmrsSpaBase = _createSpaBase(spaBaseWithSlash);\n}\nfunction setupUtils() {\n window.copyText = function(source) {\n var sel = window.getSelection();\n if (sel) {\n var r = document.createRange();\n r.selectNode(source);\n sel.removeAllRanges();\n sel.addRange(r);\n document.execCommand(\"copy\");\n sel.removeAllRanges();\n }\n };\n}\nfunction wireSpaPaths() {\n var baseElement = document.createElement(\"base\");\n var baseHref = window.getOpenmrsSpaBase();\n baseElement.href = baseHref;\n document.head.appendChild(baseElement);\n __webpack_require__.p = baseHref;\n}\n/**\n * Initializes the OpenMRS Frontend App Shell.\n * @param config The global configuration to apply.\n */ function initializeSpa(config) {\n setupUtils();\n setupPaths(config);\n wireSpaPaths();\n return Promise.resolve(__webpack_require__.I(\"default\")).then(/*#__PURE__*/ _async_to_generator(function() {\n var _config_configUrls, configUrls, _config_offline, offline, run;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _config_configUrls = config.configUrls, configUrls = _config_configUrls === void 0 ? [] : _config_configUrls, _config_offline = config.offline, offline = _config_offline === void 0 ? false : _config_offline;\n window.offlineEnabled = offline;\n return [\n 4,\n Promise.all(/*! import() */[__webpack_require__.e(\"vendors-node_modules_i18next-browser-languagedetector_dist_esm_i18nextBrowserLanguageDetector-28480d\"), __webpack_require__.e(\"src_run_ts\")]).then(__webpack_require__.bind(__webpack_require__, /*! ./run */ \"./src/run.ts\"))\n ];\n case 1:\n run = _state.sent().run;\n return [\n 2,\n run(configUrls)\n ];\n }\n });\n }));\n}\nwindow.initializeSpa = initializeSpa;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvaW5kZXgudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQWlFO0FBQ25DO0FBQ0U7QUFHaEMsU0FBU0EsZUFBZUMsT0FBZSxFQUFFO0lBQ3ZDLE9BQU87ZUFBTUE7O0FBQ2Y7QUFFQSxTQUFTQyxXQUFXQyxNQUFpQixFQUFFO0lBQ3JDLElBQUlDLFFBQVEsS0FBSztJQUNqQixJQUFJLENBQUNELE9BQU9FLE1BQU0sRUFBRTtRQUNsQkMsUUFBUUYsS0FBSyxDQUNYO1FBRUZBLFFBQVEsSUFBSTtJQUNkLENBQUM7SUFFRCxJQUFJLENBQUNELE9BQU9JLE9BQU8sRUFBRTtRQUNuQkQsUUFBUUYsS0FBSyxDQUNYO1FBRUZBLFFBQVEsSUFBSTtJQUNkLENBQUM7SUFFRCxJQUFJQSxPQUFPO1FBQ1QsTUFBTSxJQUFJSSxNQUNSLGlMQUNBO0lBQ0osQ0FBQztJQUVEQyxPQUFPQyxXQUFXLEdBQUdQLE9BQU9FLE1BQU07SUFDbENJLE9BQU9FLE9BQU8sR0FBR1IsT0FBT0ksT0FBTztJQUMvQkUsT0FBT0csTUFBTSxHQUFHVCxPQUFPVSxHQUFHLElBQUk7UUFDVkM7SUFBcEJMLE9BQU9NLFVBQVUsR0FBR0QsQ0FBQUEsNkJBQUFBLHlCQUF5QixjQUF6QkEsd0NBQUFBLDZCQUE2QixPQUFPO0lBQ3hELElBQU1HLG1CQUFtQlIsT0FBT0UsT0FBTyxDQUFDTyxRQUFRLENBQUMsT0FBT1QsT0FBT0UsT0FBTyxHQUFHRixPQUFPRSxPQUFPLEdBQUcsR0FBRztJQUM3RkYsT0FBT1UsaUJBQWlCLEdBQUduQixlQUFlaUI7QUFDNUM7QUFFTyxTQUFTRyxhQUFhO0lBQzNCWCxPQUFPWSxRQUFRLEdBQUcsU0FBQ0MsUUFBd0I7UUFDekMsSUFBTUMsTUFBTWQsT0FBT2UsWUFBWTtRQUUvQixJQUFJRCxLQUFLO1lBQ1AsSUFBTUUsSUFBSUMsU0FBU0MsV0FBVztZQUM5QkYsRUFBRUcsVUFBVSxDQUFDTjtZQUNiQyxJQUFJTSxlQUFlO1lBQ25CTixJQUFJTyxRQUFRLENBQUNMO1lBQ2JDLFNBQVNLLFdBQVcsQ0FBQztZQUNyQlIsSUFBSU0sZUFBZTtRQUNyQixDQUFDO0lBQ0g7QUFDRixDQUFDO0FBRUQsU0FBU0csZUFBZTtJQUN0QixJQUFNQyxjQUFjUCxTQUFTUSxhQUFhLENBQUM7SUFDM0MsSUFBTUMsV0FBVzFCLE9BQU9VLGlCQUFpQjtJQUN6Q2MsWUFBWUcsSUFBSSxHQUFHRDtJQUNuQlQsU0FBU1csSUFBSSxDQUFDQyxXQUFXLENBQUNMO0lBQzFCTSxxQkFBdUJBLEdBQUdKO0FBQzVCO0FBRUE7OztDQUdDLEdBQ0QsU0FBU0ssY0FBY3JDLE1BQWlCLEVBQUU7SUFDeENpQjtJQUNBbEIsV0FBV0M7SUFDWDZCO0lBQ0EsT0FBT1MsUUFBUUMsT0FBTyxDQUFDQyxxQkFBd0JBLENBQUMsWUFBWUMsSUFBSSxlQUFDLCtCQUFZO2dDQUNuRUMsNkJBQWlCQyxTQUdqQkM7Ozs7eUNBSHFDNUMsT0FBckMwQyxZQUFBQSx3RkFBcUMxQyxPQUFwQjJDLFNBQUFBLHVDQUFVLEtBQUs7b0JBQ3hDckMsT0FBT3VDLGNBQWMsR0FBR0Y7b0JBRVI7O3dCQUFNLGlSQUFrQzs7O29CQUFoREMsTUFBUSxjQUFSQTtvQkFDUjs7d0JBQU9BLElBQUlGOzs7O0lBQ2I7QUFDRjtBQUVBcEMsT0FBTytCLGFBQWEsR0FBR0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4vc3JjL2luZGV4LnRzP2FkYTIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdAb3Blbm1ycy9lc20tc3R5bGVndWlkZS9kaXN0L29wZW5tcnMtZXNtLXN0eWxlZ3VpZGUuY3NzJztcbmltcG9ydCAnaW1wb3J0LW1hcC1vdmVycmlkZXMnO1xuaW1wb3J0ICdAb3Blbm1ycy9lc20tZnJhbWV3b3JrJztcbmltcG9ydCB0eXBlIHsgU3BhQ29uZmlnIH0gZnJvbSAnQG9wZW5tcnMvZXNtLWZyYW1ld29yay9zcmMvaW50ZXJuYWwnO1xuXG5mdW5jdGlvbiBfY3JlYXRlU3BhQmFzZShiYXNlVXJsOiBzdHJpbmcpIHtcbiAgcmV0dXJuICgpID0+IGJhc2VVcmw7XG59XG5cbmZ1bmN0aW9uIHNldHVwUGF0aHMoY29uZmlnOiBTcGFDb25maWcpIHtcbiAgbGV0IGVycm9yID0gZmFsc2U7XG4gIGlmICghY29uZmlnLmFwaVVybCkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAnaW5pdGlhbGl6ZVNwYSgpIHdhcyBjYWxsZWQgd2l0aG91dCBzdXBwbHlpbmcgYW4gYXBpVXJsLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGNhbm5vdCBjb21tdW5pY2F0ZSB3aXRoIHRoZSBiYWNrZW5kLicsXG4gICAgKTtcbiAgICBlcnJvciA9IHRydWU7XG4gIH1cblxuICBpZiAoIWNvbmZpZy5zcGFQYXRoKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgICdpbml0aWFsaXplU3BhKCkgd2FzIGNhbGxlZCB3aXRob3V0IHN1cHBseWluZyBhIHNwYVBhdGguIFRoaXMgbWVhbnMgdGhhdCB0aGUgYXBwbGljYXRpb24gY2Fubm90IHByb3Blcmx5IGdlbmVyYXRlIHVybHMuJyxcbiAgICApO1xuICAgIGVycm9yID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChlcnJvcikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdPbmUgb3IgbW9yZSByZXF1aXJlZCBwcm9wZXJ0aWVzIGluIHRoZSBiYXNpYyBjb25maWd1cmF0aW9uIG9mIHRoZSBhcHBsaWNhdGlvbiB3YXMgbWlzc2luZyBhbmQgdGhlIGFwcGxpY2F0aW9uIGNhbm5vdCBiZSByZW5kZXJlZC4gUGxlYXNlIHNlZSB0aGUgYnJvd3NlciBjb25zb2xlIGZvciBkZXRhaWxzLicsXG4gICAgKTtcbiAgfVxuXG4gIHdpbmRvdy5vcGVubXJzQmFzZSA9IGNvbmZpZy5hcGlVcmw7XG4gIHdpbmRvdy5zcGFCYXNlID0gY29uZmlnLnNwYVBhdGg7XG4gIHdpbmRvdy5zcGFFbnYgPSBjb25maWcuZW52IHx8ICdwcm9kdWN0aW9uJztcbiAgd2luZG93LnNwYVZlcnNpb24gPSBwcm9jZXNzLmVudi5CVUlMRF9WRVJTSU9OID8/ICdsb2NhbCc7XG4gIGNvbnN0IHNwYUJhc2VXaXRoU2xhc2ggPSB3aW5kb3cuc3BhQmFzZS5lbmRzV2l0aCgnLycpID8gd2luZG93LnNwYUJhc2UgOiB3aW5kb3cuc3BhQmFzZSArICcvJztcbiAgd2luZG93LmdldE9wZW5tcnNTcGFCYXNlID0gX2NyZWF0ZVNwYUJhc2Uoc3BhQmFzZVdpdGhTbGFzaCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cFV0aWxzKCkge1xuICB3aW5kb3cuY29weVRleHQgPSAoc291cmNlOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcblxuICAgIGlmIChzZWwpIHtcbiAgICAgIGNvbnN0IHIgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgICAgci5zZWxlY3ROb2RlKHNvdXJjZSk7XG4gICAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICBzZWwuYWRkUmFuZ2Uocik7XG4gICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gd2lyZVNwYVBhdGhzKCkge1xuICBjb25zdCBiYXNlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Jhc2UnKTtcbiAgY29uc3QgYmFzZUhyZWYgPSB3aW5kb3cuZ2V0T3Blbm1yc1NwYUJhc2UoKTtcbiAgYmFzZUVsZW1lbnQuaHJlZiA9IGJhc2VIcmVmO1xuICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGJhc2VFbGVtZW50KTtcbiAgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gPSBiYXNlSHJlZjtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplcyB0aGUgT3Blbk1SUyBGcm9udGVuZCBBcHAgU2hlbGwuXG4gKiBAcGFyYW0gY29uZmlnIFRoZSBnbG9iYWwgY29uZmlndXJhdGlvbiB0byBhcHBseS5cbiAqL1xuZnVuY3Rpb24gaW5pdGlhbGl6ZVNwYShjb25maWc6IFNwYUNvbmZpZykge1xuICBzZXR1cFV0aWxzKCk7XG4gIHNldHVwUGF0aHMoY29uZmlnKTtcbiAgd2lyZVNwYVBhdGhzKCk7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoX193ZWJwYWNrX2luaXRfc2hhcmluZ19fKCdkZWZhdWx0JykpLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29uZmlnVXJscyA9IFtdLCBvZmZsaW5lID0gZmFsc2UgfSA9IGNvbmZpZztcbiAgICB3aW5kb3cub2ZmbGluZUVuYWJsZWQgPSBvZmZsaW5lO1xuXG4gICAgY29uc3QgeyBydW4gfSA9IGF3YWl0IGltcG9ydCgvKiB3ZWJwYWNrUHJlbG9hZDogdHJ1ZSAqLyAnLi9ydW4nKTtcbiAgICByZXR1cm4gcnVuKGNvbmZpZ1VybHMpO1xuICB9KTtcbn1cblxud2luZG93LmluaXRpYWxpemVTcGEgPSBpbml0aWFsaXplU3BhO1xuIl0sIm5hbWVzIjpbIl9jcmVhdGVTcGFCYXNlIiwiYmFzZVVybCIsInNldHVwUGF0aHMiLCJjb25maWciLCJlcnJvciIsImFwaVVybCIsImNvbnNvbGUiLCJzcGFQYXRoIiwiRXJyb3IiLCJ3aW5kb3ciLCJvcGVubXJzQmFzZSIsInNwYUJhc2UiLCJzcGFFbnYiLCJlbnYiLCJwcm9jZXNzIiwic3BhVmVyc2lvbiIsIkJVSUxEX1ZFUlNJT04iLCJzcGFCYXNlV2l0aFNsYXNoIiwiZW5kc1dpdGgiLCJnZXRPcGVubXJzU3BhQmFzZSIsInNldHVwVXRpbHMiLCJjb3B5VGV4dCIsInNvdXJjZSIsInNlbCIsImdldFNlbGVjdGlvbiIsInIiLCJkb2N1bWVudCIsImNyZWF0ZVJhbmdlIiwic2VsZWN0Tm9kZSIsInJlbW92ZUFsbFJhbmdlcyIsImFkZFJhbmdlIiwiZXhlY0NvbW1hbmQiLCJ3aXJlU3BhUGF0aHMiLCJiYXNlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJiYXNlSHJlZiIsImhyZWYiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJfX3dlYnBhY2tfcHVibGljX3BhdGhfXyIsImluaXRpYWxpemVTcGEiLCJQcm9taXNlIiwicmVzb2x2ZSIsIl9fd2VicGFja19pbml0X3NoYXJpbmdfXyIsInRoZW4iLCJjb25maWdVcmxzIiwib2ZmbGluZSIsInJ1biIsIm9mZmxpbmVFbmFibGVkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/index.ts\n");
|
|
8864
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ setupUtils: () => (/* binding */ setupUtils)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_styleguide_dist_openmrs_esm_styleguide_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-styleguide/dist/openmrs-esm-styleguide.css */ \"../../framework/esm-styleguide/dist/openmrs-esm-styleguide.css\");\n/* harmony import */ var import_map_overrides__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! import-map-overrides */ \"../../../node_modules/import-map-overrides/dist/import-map-overrides.js\");\n/* harmony import */ var _openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @openmrs/esm-framework */ \"webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework\");\n/* harmony import */ var _openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_2__);\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, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\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(_)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\n\n\nfunction _createSpaBase(baseUrl) {\n return function() {\n return baseUrl;\n };\n}\nfunction setupPaths(config) {\n var error = false;\n if (!config.apiUrl) {\n console.error(\"initializeSpa() was called without supplying an apiUrl. This means that the application cannot communicate with the backend.\");\n error = true;\n }\n if (!config.spaPath) {\n console.error(\"initializeSpa() was called without supplying a spaPath. This means that the application cannot properly generate urls.\");\n error = true;\n }\n if (error) {\n throw new Error(\"One or more required properties in the basic configuration of the application was missing and the application cannot be rendered. Please see the browser console for details.\");\n }\n window.openmrsBase = config.apiUrl;\n window.spaBase = config.spaPath;\n window.spaEnv = config.env || \"production\";\n var _process_env_BUILD_VERSION;\n window.spaVersion = (_process_env_BUILD_VERSION = \"5.6.1-pre.2049-20240708\") !== null && _process_env_BUILD_VERSION !== void 0 ? _process_env_BUILD_VERSION : \"local\";\n var spaBaseWithSlash = window.spaBase.endsWith(\"/\") ? window.spaBase : window.spaBase + \"/\";\n window.getOpenmrsSpaBase = _createSpaBase(spaBaseWithSlash);\n}\nfunction setupUtils() {\n window.copyText = function(source) {\n var sel = window.getSelection();\n if (sel) {\n var r = document.createRange();\n r.selectNode(source);\n sel.removeAllRanges();\n sel.addRange(r);\n document.execCommand(\"copy\");\n sel.removeAllRanges();\n }\n };\n}\nfunction wireSpaPaths() {\n var baseElement = document.createElement(\"base\");\n var baseHref = window.getOpenmrsSpaBase();\n baseElement.href = baseHref;\n document.head.appendChild(baseElement);\n __webpack_require__.p = baseHref;\n}\n/**\n * Initializes the OpenMRS Frontend App Shell.\n * @param config The global configuration to apply.\n */ function initializeSpa(config) {\n setupUtils();\n setupPaths(config);\n wireSpaPaths();\n return Promise.resolve(__webpack_require__.I(\"default\")).then(/*#__PURE__*/ _async_to_generator(function() {\n var _config_configUrls, configUrls, _config_offline, offline, run;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _config_configUrls = config.configUrls, configUrls = _config_configUrls === void 0 ? [] : _config_configUrls, _config_offline = config.offline, offline = _config_offline === void 0 ? false : _config_offline;\n window.offlineEnabled = offline;\n return [\n 4,\n Promise.all(/*! import() */[__webpack_require__.e(\"vendors-node_modules_i18next-browser-languagedetector_dist_esm_i18nextBrowserLanguageDetector-28480d\"), __webpack_require__.e(\"src_run_ts\")]).then(__webpack_require__.bind(__webpack_require__, /*! ./run */ \"./src/run.ts\"))\n ];\n case 1:\n run = _state.sent().run;\n return [\n 2,\n run(configUrls)\n ];\n }\n });\n }));\n}\nwindow.initializeSpa = initializeSpa;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvaW5kZXgudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQWlFO0FBQ25DO0FBQ0U7QUFHaEMsU0FBU0EsZUFBZUMsT0FBZSxFQUFFO0lBQ3ZDLE9BQU87ZUFBTUE7O0FBQ2Y7QUFFQSxTQUFTQyxXQUFXQyxNQUFpQixFQUFFO0lBQ3JDLElBQUlDLFFBQVEsS0FBSztJQUNqQixJQUFJLENBQUNELE9BQU9FLE1BQU0sRUFBRTtRQUNsQkMsUUFBUUYsS0FBSyxDQUNYO1FBRUZBLFFBQVEsSUFBSTtJQUNkLENBQUM7SUFFRCxJQUFJLENBQUNELE9BQU9JLE9BQU8sRUFBRTtRQUNuQkQsUUFBUUYsS0FBSyxDQUNYO1FBRUZBLFFBQVEsSUFBSTtJQUNkLENBQUM7SUFFRCxJQUFJQSxPQUFPO1FBQ1QsTUFBTSxJQUFJSSxNQUNSLGlMQUNBO0lBQ0osQ0FBQztJQUVEQyxPQUFPQyxXQUFXLEdBQUdQLE9BQU9FLE1BQU07SUFDbENJLE9BQU9FLE9BQU8sR0FBR1IsT0FBT0ksT0FBTztJQUMvQkUsT0FBT0csTUFBTSxHQUFHVCxPQUFPVSxHQUFHLElBQUk7UUFDVkM7SUFBcEJMLE9BQU9NLFVBQVUsR0FBR0QsQ0FBQUEsNkJBQUFBLHlCQUF5QixjQUF6QkEsd0NBQUFBLDZCQUE2QixPQUFPO0lBQ3hELElBQU1HLG1CQUFtQlIsT0FBT0UsT0FBTyxDQUFDTyxRQUFRLENBQUMsT0FBT1QsT0FBT0UsT0FBTyxHQUFHRixPQUFPRSxPQUFPLEdBQUcsR0FBRztJQUM3RkYsT0FBT1UsaUJBQWlCLEdBQUduQixlQUFlaUI7QUFDNUM7QUFFTyxTQUFTRyxhQUFhO0lBQzNCWCxPQUFPWSxRQUFRLEdBQUcsU0FBQ0MsUUFBd0I7UUFDekMsSUFBTUMsTUFBTWQsT0FBT2UsWUFBWTtRQUUvQixJQUFJRCxLQUFLO1lBQ1AsSUFBTUUsSUFBSUMsU0FBU0MsV0FBVztZQUM5QkYsRUFBRUcsVUFBVSxDQUFDTjtZQUNiQyxJQUFJTSxlQUFlO1lBQ25CTixJQUFJTyxRQUFRLENBQUNMO1lBQ2JDLFNBQVNLLFdBQVcsQ0FBQztZQUNyQlIsSUFBSU0sZUFBZTtRQUNyQixDQUFDO0lBQ0g7QUFDRixDQUFDO0FBRUQsU0FBU0csZUFBZTtJQUN0QixJQUFNQyxjQUFjUCxTQUFTUSxhQUFhLENBQUM7SUFDM0MsSUFBTUMsV0FBVzFCLE9BQU9VLGlCQUFpQjtJQUN6Q2MsWUFBWUcsSUFBSSxHQUFHRDtJQUNuQlQsU0FBU1csSUFBSSxDQUFDQyxXQUFXLENBQUNMO0lBQzFCTSxxQkFBdUJBLEdBQUdKO0FBQzVCO0FBRUE7OztDQUdDLEdBQ0QsU0FBU0ssY0FBY3JDLE1BQWlCLEVBQUU7SUFDeENpQjtJQUNBbEIsV0FBV0M7SUFDWDZCO0lBQ0EsT0FBT1MsUUFBUUMsT0FBTyxDQUFDQyxxQkFBd0JBLENBQUMsWUFBWUMsSUFBSSxlQUFDLCtCQUFZO2dDQUNuRUMsNkJBQWlCQyxTQUdqQkM7Ozs7eUNBSHFDNUMsT0FBckMwQyxZQUFBQSx3RkFBcUMxQyxPQUFwQjJDLFNBQUFBLHVDQUFVLEtBQUs7b0JBQ3hDckMsT0FBT3VDLGNBQWMsR0FBR0Y7b0JBRVI7O3dCQUFNLGlSQUFrQzs7O29CQUFoREMsTUFBUSxjQUFSQTtvQkFDUjs7d0JBQU9BLElBQUlGOzs7O0lBQ2I7QUFDRjtBQUVBcEMsT0FBTytCLGFBQWEsR0FBR0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4vc3JjL2luZGV4LnRzP2FkYTIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdAb3Blbm1ycy9lc20tc3R5bGVndWlkZS9kaXN0L29wZW5tcnMtZXNtLXN0eWxlZ3VpZGUuY3NzJztcbmltcG9ydCAnaW1wb3J0LW1hcC1vdmVycmlkZXMnO1xuaW1wb3J0ICdAb3Blbm1ycy9lc20tZnJhbWV3b3JrJztcbmltcG9ydCB0eXBlIHsgU3BhQ29uZmlnIH0gZnJvbSAnQG9wZW5tcnMvZXNtLWZyYW1ld29yay9zcmMvaW50ZXJuYWwnO1xuXG5mdW5jdGlvbiBfY3JlYXRlU3BhQmFzZShiYXNlVXJsOiBzdHJpbmcpIHtcbiAgcmV0dXJuICgpID0+IGJhc2VVcmw7XG59XG5cbmZ1bmN0aW9uIHNldHVwUGF0aHMoY29uZmlnOiBTcGFDb25maWcpIHtcbiAgbGV0IGVycm9yID0gZmFsc2U7XG4gIGlmICghY29uZmlnLmFwaVVybCkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAnaW5pdGlhbGl6ZVNwYSgpIHdhcyBjYWxsZWQgd2l0aG91dCBzdXBwbHlpbmcgYW4gYXBpVXJsLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGNhbm5vdCBjb21tdW5pY2F0ZSB3aXRoIHRoZSBiYWNrZW5kLicsXG4gICAgKTtcbiAgICBlcnJvciA9IHRydWU7XG4gIH1cblxuICBpZiAoIWNvbmZpZy5zcGFQYXRoKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgICdpbml0aWFsaXplU3BhKCkgd2FzIGNhbGxlZCB3aXRob3V0IHN1cHBseWluZyBhIHNwYVBhdGguIFRoaXMgbWVhbnMgdGhhdCB0aGUgYXBwbGljYXRpb24gY2Fubm90IHByb3Blcmx5IGdlbmVyYXRlIHVybHMuJyxcbiAgICApO1xuICAgIGVycm9yID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChlcnJvcikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdPbmUgb3IgbW9yZSByZXF1aXJlZCBwcm9wZXJ0aWVzIGluIHRoZSBiYXNpYyBjb25maWd1cmF0aW9uIG9mIHRoZSBhcHBsaWNhdGlvbiB3YXMgbWlzc2luZyBhbmQgdGhlIGFwcGxpY2F0aW9uIGNhbm5vdCBiZSByZW5kZXJlZC4gUGxlYXNlIHNlZSB0aGUgYnJvd3NlciBjb25zb2xlIGZvciBkZXRhaWxzLicsXG4gICAgKTtcbiAgfVxuXG4gIHdpbmRvdy5vcGVubXJzQmFzZSA9IGNvbmZpZy5hcGlVcmw7XG4gIHdpbmRvdy5zcGFCYXNlID0gY29uZmlnLnNwYVBhdGg7XG4gIHdpbmRvdy5zcGFFbnYgPSBjb25maWcuZW52IHx8ICdwcm9kdWN0aW9uJztcbiAgd2luZG93LnNwYVZlcnNpb24gPSBwcm9jZXNzLmVudi5CVUlMRF9WRVJTSU9OID8/ICdsb2NhbCc7XG4gIGNvbnN0IHNwYUJhc2VXaXRoU2xhc2ggPSB3aW5kb3cuc3BhQmFzZS5lbmRzV2l0aCgnLycpID8gd2luZG93LnNwYUJhc2UgOiB3aW5kb3cuc3BhQmFzZSArICcvJztcbiAgd2luZG93LmdldE9wZW5tcnNTcGFCYXNlID0gX2NyZWF0ZVNwYUJhc2Uoc3BhQmFzZVdpdGhTbGFzaCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cFV0aWxzKCkge1xuICB3aW5kb3cuY29weVRleHQgPSAoc291cmNlOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcblxuICAgIGlmIChzZWwpIHtcbiAgICAgIGNvbnN0IHIgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgICAgci5zZWxlY3ROb2RlKHNvdXJjZSk7XG4gICAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICBzZWwuYWRkUmFuZ2Uocik7XG4gICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gd2lyZVNwYVBhdGhzKCkge1xuICBjb25zdCBiYXNlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Jhc2UnKTtcbiAgY29uc3QgYmFzZUhyZWYgPSB3aW5kb3cuZ2V0T3Blbm1yc1NwYUJhc2UoKTtcbiAgYmFzZUVsZW1lbnQuaHJlZiA9IGJhc2VIcmVmO1xuICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGJhc2VFbGVtZW50KTtcbiAgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gPSBiYXNlSHJlZjtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplcyB0aGUgT3Blbk1SUyBGcm9udGVuZCBBcHAgU2hlbGwuXG4gKiBAcGFyYW0gY29uZmlnIFRoZSBnbG9iYWwgY29uZmlndXJhdGlvbiB0byBhcHBseS5cbiAqL1xuZnVuY3Rpb24gaW5pdGlhbGl6ZVNwYShjb25maWc6IFNwYUNvbmZpZykge1xuICBzZXR1cFV0aWxzKCk7XG4gIHNldHVwUGF0aHMoY29uZmlnKTtcbiAgd2lyZVNwYVBhdGhzKCk7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoX193ZWJwYWNrX2luaXRfc2hhcmluZ19fKCdkZWZhdWx0JykpLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29uZmlnVXJscyA9IFtdLCBvZmZsaW5lID0gZmFsc2UgfSA9IGNvbmZpZztcbiAgICB3aW5kb3cub2ZmbGluZUVuYWJsZWQgPSBvZmZsaW5lO1xuXG4gICAgY29uc3QgeyBydW4gfSA9IGF3YWl0IGltcG9ydCgvKiB3ZWJwYWNrUHJlbG9hZDogdHJ1ZSAqLyAnLi9ydW4nKTtcbiAgICByZXR1cm4gcnVuKGNvbmZpZ1VybHMpO1xuICB9KTtcbn1cblxud2luZG93LmluaXRpYWxpemVTcGEgPSBpbml0aWFsaXplU3BhO1xuIl0sIm5hbWVzIjpbIl9jcmVhdGVTcGFCYXNlIiwiYmFzZVVybCIsInNldHVwUGF0aHMiLCJjb25maWciLCJlcnJvciIsImFwaVVybCIsImNvbnNvbGUiLCJzcGFQYXRoIiwiRXJyb3IiLCJ3aW5kb3ciLCJvcGVubXJzQmFzZSIsInNwYUJhc2UiLCJzcGFFbnYiLCJlbnYiLCJwcm9jZXNzIiwic3BhVmVyc2lvbiIsIkJVSUxEX1ZFUlNJT04iLCJzcGFCYXNlV2l0aFNsYXNoIiwiZW5kc1dpdGgiLCJnZXRPcGVubXJzU3BhQmFzZSIsInNldHVwVXRpbHMiLCJjb3B5VGV4dCIsInNvdXJjZSIsInNlbCIsImdldFNlbGVjdGlvbiIsInIiLCJkb2N1bWVudCIsImNyZWF0ZVJhbmdlIiwic2VsZWN0Tm9kZSIsInJlbW92ZUFsbFJhbmdlcyIsImFkZFJhbmdlIiwiZXhlY0NvbW1hbmQiLCJ3aXJlU3BhUGF0aHMiLCJiYXNlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJiYXNlSHJlZiIsImhyZWYiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJfX3dlYnBhY2tfcHVibGljX3BhdGhfXyIsImluaXRpYWxpemVTcGEiLCJQcm9taXNlIiwicmVzb2x2ZSIsIl9fd2VicGFja19pbml0X3NoYXJpbmdfXyIsInRoZW4iLCJjb25maWdVcmxzIiwib2ZmbGluZSIsInJ1biIsIm9mZmxpbmVFbmFibGVkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/index.ts\n");
|
|
8865
8865
|
|
|
8866
8866
|
/***/ }),
|
|
8867
8867
|
|
|
@@ -19324,7 +19324,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
19324
19324
|
/******/ // This function allow to reference async chunks
|
|
19325
19325
|
/******/ __webpack_require__.u = (chunkId) => {
|
|
19326
19326
|
/******/ // return url for filenames based on template
|
|
19327
|
-
/******/ return "" + {"vendors-node_modules_i18next-browser-languagedetector_dist_esm_i18nextBrowserLanguageDetector-28480d":"b068668f7d5d69f1","src_run_ts":"e076ae733dfb6da9","framework_esm-translations_translations_am_json":"04c477aac469b024","framework_esm-translations_translations_ar_json":"45c736ec32d7bb24","framework_esm-translations_translations_en_json":"
|
|
19327
|
+
/******/ return "" + {"vendors-node_modules_i18next-browser-languagedetector_dist_esm_i18nextBrowserLanguageDetector-28480d":"b068668f7d5d69f1","src_run_ts":"e076ae733dfb6da9","framework_esm-translations_translations_am_json":"04c477aac469b024","framework_esm-translations_translations_ar_json":"45c736ec32d7bb24","framework_esm-translations_translations_en_json":"440062c00b94bf59","framework_esm-translations_translations_es_json":"c8c84b99c278e4ed","framework_esm-translations_translations_fr_json":"c06dab895d0fee04","framework_esm-translations_translations_he_json":"f0318988bd4ec48f","framework_esm-translations_translations_km_json":"61f2bf4fd5296fad","framework_esm-translations_translations_zh_json":"e6482417a38e546b","framework_esm-translations_translations_zh_CN_json":"787134dd3c7b6f9a","src_ui_breadcrumbs_tsx":"a3d13dc3f29cc2c8"}[chunkId] + ".js";
|
|
19328
19328
|
/******/ };
|
|
19329
19329
|
/******/ })();
|
|
19330
19330
|
/******/
|
|
@@ -19452,8 +19452,8 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
19452
19452
|
/******/ var promises = [];
|
|
19453
19453
|
/******/ switch(name) {
|
|
19454
19454
|
/******/ case "default": {
|
|
19455
|
-
/******/ register("@openmrs/esm-framework/src/internal", "5.6.1-pre.
|
|
19456
|
-
/******/ register("@openmrs/esm-framework", "5.6.1-pre.
|
|
19455
|
+
/******/ register("@openmrs/esm-framework/src/internal", "5.6.1-pre.2049", () => (() => (__webpack_require__(/*! ../../framework/esm-framework/src/internal.ts */ "../../framework/esm-framework/src/internal.ts"))), 1);
|
|
19456
|
+
/******/ register("@openmrs/esm-framework", "5.6.1-pre.2049", () => (() => (__webpack_require__(/*! ../../framework/esm-framework/src/index.ts */ "../../framework/esm-framework/src/index.ts"))), 1);
|
|
19457
19457
|
/******/ register("dayjs", "1.11.5", () => (() => (__webpack_require__(/*! ../../../node_modules/dayjs/dayjs.min.js */ "../../../node_modules/dayjs/dayjs.min.js"))), 1);
|
|
19458
19458
|
/******/ register("i18next", "21.10.0", () => (() => (__webpack_require__(/*! ../../../node_modules/i18next/dist/esm/i18next.js */ "../../../node_modules/i18next/dist/esm/i18next.js"))), 1);
|
|
19459
19459
|
/******/ register("react-dom", "18.2.0", () => (() => (__webpack_require__(/*! ../../../node_modules/react-dom/index.js */ "../../../node_modules/react-dom/index.js"))), 1);
|