@openmrs/esm-app-shell 6.3.1-pre.3105 → 6.3.1-pre.3119

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/.turbo/turbo-build.log +8 -8
  2. package/dist/1aeb256985e33864.js +1 -0
  3. package/dist/1aeb256985e33864.js.map +1 -0
  4. package/dist/f1bf92ff5d8517a7.js.map +1 -0
  5. package/dist/index.html +1 -1
  6. package/dist/{openmrs.10f6e2cb10b05c80.js → openmrs.e1b0b176bb0e5d2d.js} +1 -1
  7. package/dist/{openmrs.10f6e2cb10b05c80.js.map → openmrs.e1b0b176bb0e5d2d.js.map} +1 -1
  8. package/dist/service-worker.js +1 -1
  9. package/lib/{54e8981b7823f373.js → 0b8132da55d43cec.js} +8 -8
  10. package/lib/25718c5560d56ff1.js +112 -0
  11. package/lib/esm-devtools-app/180.js +2 -0
  12. package/lib/esm-devtools-app/180.js.LICENSE.txt +5 -0
  13. package/lib/esm-devtools-app/180.js.map +1 -0
  14. package/lib/esm-devtools-app/248.js +1 -0
  15. package/lib/esm-devtools-app/248.js.map +1 -0
  16. package/lib/esm-devtools-app/326.js +2 -0
  17. package/lib/esm-devtools-app/326.js.LICENSE.txt +9 -0
  18. package/lib/esm-devtools-app/326.js.map +1 -0
  19. package/lib/esm-devtools-app/623.js +2 -0
  20. package/lib/esm-devtools-app/623.js.LICENSE.txt +19 -0
  21. package/lib/esm-devtools-app/623.js.map +1 -0
  22. package/lib/esm-devtools-app/731.js +2 -0
  23. package/lib/esm-devtools-app/731.js.LICENSE.txt +24 -0
  24. package/lib/esm-devtools-app/731.js.map +1 -0
  25. package/lib/esm-devtools-app/769.js +2 -0
  26. package/lib/esm-devtools-app/769.js.LICENSE.txt +39 -0
  27. package/lib/esm-devtools-app/769.js.map +1 -0
  28. package/lib/esm-devtools-app/770.js +2 -0
  29. package/lib/esm-devtools-app/770.js.LICENSE.txt +14 -0
  30. package/lib/esm-devtools-app/770.js.map +1 -0
  31. package/lib/esm-devtools-app/810.js +1 -0
  32. package/lib/esm-devtools-app/810.js.map +1 -0
  33. package/lib/esm-devtools-app/907.js +1 -0
  34. package/lib/esm-devtools-app/907.js.map +1 -0
  35. package/lib/esm-devtools-app/929.js +1 -0
  36. package/lib/esm-devtools-app/929.js.map +1 -0
  37. package/lib/esm-devtools-app/932.js +2 -0
  38. package/lib/esm-devtools-app/932.js.LICENSE.txt +5 -0
  39. package/lib/esm-devtools-app/932.js.map +1 -0
  40. package/lib/esm-devtools-app/main.js +1 -0
  41. package/lib/esm-devtools-app/main.js.map +1 -0
  42. package/lib/esm-devtools-app/openmrs-esm-devtools-app.js +1 -0
  43. package/lib/esm-devtools-app/openmrs-esm-devtools-app.js.buildmanifest.json +447 -0
  44. package/lib/esm-devtools-app/openmrs-esm-devtools-app.js.map +1 -0
  45. package/lib/esm-devtools-app/routes.json +1 -0
  46. package/lib/esm-help-menu-app/810.js +1 -1
  47. package/lib/esm-help-menu-app/810.js.map +1 -1
  48. package/lib/esm-help-menu-app/main.js +1 -1
  49. package/lib/esm-help-menu-app/openmrs-esm-help-menu-app.js +1 -1
  50. package/lib/esm-help-menu-app/openmrs-esm-help-menu-app.js.buildmanifest.json +5 -5
  51. package/lib/esm-help-menu-app/routes.json +1 -1
  52. package/lib/esm-implementer-tools-app/3150.js.map +1 -1
  53. package/lib/esm-implementer-tools-app/4810.js +1 -1
  54. package/lib/esm-implementer-tools-app/4810.js.map +1 -1
  55. package/lib/esm-implementer-tools-app/main.js +1 -1
  56. package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js +1 -1
  57. package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js.buildmanifest.json +6 -6
  58. package/lib/esm-implementer-tools-app/routes.json +1 -1
  59. package/lib/esm-login-app/5906.js +2 -2
  60. package/lib/esm-login-app/5906.js.map +1 -1
  61. package/lib/esm-login-app/main.js +1 -1
  62. package/lib/esm-login-app/main.js.map +1 -1
  63. package/lib/esm-login-app/openmrs-esm-login-app.js +2 -2
  64. package/lib/esm-login-app/openmrs-esm-login-app.js.buildmanifest.json +5 -5
  65. package/lib/esm-login-app/openmrs-esm-login-app.js.map +1 -1
  66. package/lib/esm-login-app/routes.json +1 -1
  67. package/lib/esm-offline-tools-app/4810.js +1 -1
  68. package/lib/esm-offline-tools-app/4810.js.map +1 -1
  69. package/lib/esm-offline-tools-app/main.js +1 -1
  70. package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js +1 -1
  71. package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js.buildmanifest.json +5 -5
  72. package/lib/esm-offline-tools-app/routes.json +1 -1
  73. package/lib/esm-primary-navigation-app/1404.js.map +1 -1
  74. package/lib/esm-primary-navigation-app/2395.js +1 -1
  75. package/lib/esm-primary-navigation-app/2395.js.map +1 -1
  76. package/lib/esm-primary-navigation-app/3758.js.map +1 -1
  77. package/lib/esm-primary-navigation-app/8577.js.map +1 -1
  78. package/lib/esm-primary-navigation-app/main.js +1 -1
  79. package/lib/esm-primary-navigation-app/main.js.map +1 -1
  80. package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js +1 -1
  81. package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js.buildmanifest.json +12 -12
  82. package/lib/esm-primary-navigation-app/routes.json +1 -1
  83. package/lib/index.html +2 -2
  84. package/lib/openmrs.js +4 -4
  85. package/lib/service-worker.js +1 -1
  86. package/package.json +3 -3
  87. package/dist/1d86aa5e7b7a2d81.js +0 -1
  88. package/dist/1d86aa5e7b7a2d81.js.map +0 -1
  89. package/dist/6b8a9c458e21b16e.js.map +0 -1
  90. package/lib/db1303a22cb3a6d3.js +0 -112
  91. /package/dist/{6b8a9c458e21b16e.js → f1bf92ff5d8517a7.js} +0 -0
@@ -195,7 +195,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
195
195
  \****************************************************/
196
196
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
197
197
 
198
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ clearCurrentUser: () => (/* binding */ clearCurrentUser),\n/* harmony export */ getCurrentUser: () => (/* binding */ getCurrentUser),\n/* harmony export */ getLoggedInUser: () => (/* binding */ getLoggedInUser),\n/* harmony export */ getSessionLocation: () => (/* binding */ getSessionLocation),\n/* harmony export */ getSessionStore: () => (/* binding */ getSessionStore),\n/* harmony export */ refetchCurrentUser: () => (/* binding */ refetchCurrentUser),\n/* harmony export */ sessionStore: () => (/* binding */ sessionStore),\n/* harmony export */ setSessionLocation: () => (/* binding */ setSessionLocation),\n/* harmony export */ setUserLanguage: () => (/* binding */ setUserLanguage),\n/* harmony export */ setUserProperties: () => (/* binding */ setUserProperties),\n/* harmony export */ userHasAccess: () => (/* binding */ userHasAccess)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_error_handling__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-error-handling */ \"../../framework/esm-error-handling/dist/index.js\");\n/* harmony import */ var _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-state */ \"../../framework/esm-state/dist/index.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/isUndefined.js\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ \"webpack/sharing/consume/default/rxjs/rxjs\");\n/* harmony import */ var _openmrs_fetch_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./openmrs-fetch.js */ \"../../framework/esm-api/dist/openmrs-fetch.js\");\n/** @module @category API */ \n\n\n\n\n/** @internal */ const sessionStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__.createGlobalStore)('session', {\n loaded: false,\n session: null\n});\nlet lastFetchTimeMillis = 0;\nfunction getCurrentUser(opts = {\n includeAuthStatus: true\n}) {\n if (lastFetchTimeMillis < Date.now() - 1000 * 60 || !sessionStore.getState().loaded) {\n refetchCurrentUser();\n }\n return new rxjs__WEBPACK_IMPORTED_MODULE_2__.Observable((subscriber)=>{\n const handler = (state)=>{\n if (state.loaded) {\n if (opts.includeAuthStatus) {\n subscriber.next(state.session);\n } else {\n subscriber.next(state.session?.user);\n }\n }\n };\n handler(sessionStore.getState());\n // The observable subscribe function should return an unsubscribe function,\n // which happens to be exactly what `subscribe` returns.\n return sessionStore.subscribe(handler);\n });\n}\n\nfunction getSessionStore() {\n if (lastFetchTimeMillis < Date.now() - 1000 * 60 || !sessionStore.getState().loaded) {\n refetchCurrentUser();\n }\n return sessionStore;\n}\n// NB locale is string only if this returns true\nfunction isValidLocale(locale) {\n if (locale === undefined || typeof locale !== 'string') {\n return false;\n }\n try {\n new Intl.Locale(locale);\n } catch (e) {\n return false;\n }\n return true;\n}\nfunction setUserLanguage(data) {\n let locale = data.user?.userProperties?.defaultLocale ?? data.locale;\n if (locale && locale.includes('_')) {\n locale = locale.replaceAll('_', '-');\n }\n if (isValidLocale(locale) && locale !== document.documentElement.getAttribute('lang')) {\n document.documentElement.setAttribute('lang', locale);\n }\n}\nsessionStore.subscribe((state)=>{\n if (state.loaded && state.session) {\n setUserLanguage(state.session);\n }\n});\nfunction userHasPrivilege(requiredPrivilege, user) {\n if (typeof requiredPrivilege === 'string') {\n return !(0,lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(user.privileges.find((p)=>requiredPrivilege === p.display));\n } else if (Array.isArray(requiredPrivilege)) {\n return requiredPrivilege.every((rp)=>!(0,lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(user.privileges.find((p)=>rp === p.display)));\n } else if (!(0,lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(requiredPrivilege)) {\n console.error(`Could not understand privileges \"${requiredPrivilege}\"`);\n }\n return true;\n}\nfunction isSuperUser(user) {\n return !(0,lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(user.roles.find((role)=>role.display === 'System Developer'));\n}\n/**\n * The `refetchCurrentUser` function causes a network request to redownload\n * the user. All subscribers to the current user will be notified of the\n * new users once the new version of the user object is downloaded.\n *\n * @returns The same observable as returned by [[getCurrentUser]].\n *\n * #### Example\n * ```js\n * import { refetchCurrentUser } from '@openmrs/esm-api'\n * refetchCurrentUser()\n * ```\n */ function refetchCurrentUser(username, password) {\n lastFetchTimeMillis = Date.now();\n let headers = {};\n if (username && password) {\n headers['Authorization'] = `Basic ${window.btoa(`${username}:${password}`)}`;\n }\n return handleSessionResponse((0,_openmrs_fetch_js__WEBPACK_IMPORTED_MODULE_3__.openmrsFetch)(_openmrs_fetch_js__WEBPACK_IMPORTED_MODULE_3__.sessionEndpoint, {\n headers\n }));\n}\nfunction clearCurrentUser() {\n sessionStore.setState({\n loaded: true,\n session: {\n authenticated: false,\n sessionId: ''\n }\n });\n}\nfunction userHasAccess(requiredPrivilege, user) {\n if (user === undefined) {\n // if the user hasn't been loaded, then return false iff there is a required privilege\n return Boolean(requiredPrivilege);\n }\n if (!Boolean(requiredPrivilege)) {\n // if user exists but no requiredPrivilege is defined\n return true;\n }\n return userHasPrivilege(requiredPrivilege, user) || isSuperUser(user);\n}\nfunction getLoggedInUser() {\n let user;\n let unsubscribe;\n return new Promise((res)=>{\n const handler = (state)=>{\n if (state.loaded && state.session.user) {\n user = state.session.user;\n res(state.session.user);\n unsubscribe && unsubscribe();\n }\n };\n handler(sessionStore.getState());\n if (!user) {\n unsubscribe = sessionStore.subscribe(handler);\n }\n });\n}\nfunction getSessionLocation() {\n return new Promise((res, rej)=>{\n const sub = getCurrentUser().subscribe((session)=>{\n res(session.sessionLocation);\n }, rej);\n sub.unsubscribe();\n });\n}\nasync function setSessionLocation(locationUuid, abortController) {\n return handleSessionResponse((0,_openmrs_fetch_js__WEBPACK_IMPORTED_MODULE_3__.openmrsFetch)(_openmrs_fetch_js__WEBPACK_IMPORTED_MODULE_3__.sessionEndpoint, {\n method: 'POST',\n body: {\n sessionLocation: locationUuid\n },\n headers: {\n 'Content-Type': 'application/json'\n },\n signal: abortController.signal\n }));\n}\nasync function setUserProperties(userUuid, userProperties, abortController) {\n if (!abortController) {\n abortController = new AbortController();\n }\n await (0,_openmrs_fetch_js__WEBPACK_IMPORTED_MODULE_3__.openmrsFetch)(`${_openmrs_fetch_js__WEBPACK_IMPORTED_MODULE_3__.restBaseUrl}/user/${userUuid}`, {\n method: 'POST',\n body: {\n userProperties\n },\n headers: {\n 'Content-Type': 'application/json'\n },\n signal: abortController.signal\n });\n return refetchCurrentUser();\n}\nfunction handleSessionResponse(result) {\n return new Promise((resolve, reject)=>{\n result.then((res)=>{\n let nextState;\n if (typeof res?.data === 'object') {\n nextState = {\n loaded: true,\n session: res.data\n };\n sessionStore.setState(nextState);\n resolve(nextState);\n } else {\n nextState = {\n loaded: false,\n session: null\n };\n sessionStore.setState(nextState);\n reject(nextState);\n }\n }).catch((err)=>{\n (0,_openmrs_esm_error_handling__WEBPACK_IMPORTED_MODULE_0__.reportError)(`Failed to fetch new session information: ${err}`);\n const nextState = {\n loaded: false,\n session: null\n };\n sessionStore.setState(nextState);\n reject(nextState);\n });\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1hcGkvZGlzdC9jdXJyZW50LXVzZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDBCQUEwQixHQUE2RDtBQUNoQztBQUNmO0FBQ047QUFDOEM7QUFDaEYsY0FBYyxHQUFVLE1BQU1PLGVBQWVOLHFFQUFpQkEsQ0FBQyxXQUFXO0lBQ3RFTyxRQUFRO0lBQ1JDLFNBQVM7QUFDYixHQUFHO0FBQ0gsSUFBSUMsc0JBQXNCO0FBQzFCLFNBQVNDLGVBQWVDLE9BQU87SUFDM0JDLG1CQUFtQjtBQUN2QixDQUFDO0lBQ0csSUFBSUgsc0JBQXNCSSxLQUFLQyxHQUFHLEtBQUssT0FBTyxNQUFNLENBQUNSLGFBQWFTLFFBQVEsR0FBR1IsTUFBTSxFQUFFO1FBQ2pGUztJQUNKO0lBQ0EsT0FBTyxJQUFJZCw0Q0FBVUEsQ0FBQyxDQUFDZTtRQUNuQixNQUFNQyxVQUFVLENBQUNDO1lBQ2IsSUFBSUEsTUFBTVosTUFBTSxFQUFFO2dCQUNkLElBQUlJLEtBQUtDLGlCQUFpQixFQUFFO29CQUN4QkssV0FBV0csSUFBSSxDQUFDRCxNQUFNWCxPQUFPO2dCQUNqQyxPQUFPO29CQUNIUyxXQUFXRyxJQUFJLENBQUNELE1BQU1YLE9BQU8sRUFBRWE7Z0JBQ25DO1lBQ0o7UUFDSjtRQUNBSCxRQUFRWixhQUFhUyxRQUFRO1FBQzdCLDJFQUEyRTtRQUMzRSx3REFBd0Q7UUFDeEQsT0FBT1QsYUFBYWdCLFNBQVMsQ0FBQ0o7SUFDbEM7QUFDSjtBQUMwQjtBQUNuQixTQUFTSztJQUNaLElBQUlkLHNCQUFzQkksS0FBS0MsR0FBRyxLQUFLLE9BQU8sTUFBTSxDQUFDUixhQUFhUyxRQUFRLEdBQUdSLE1BQU0sRUFBRTtRQUNqRlM7SUFDSjtJQUNBLE9BQU9WO0FBQ1g7QUFDQSxnREFBZ0Q7QUFDaEQsU0FBU2tCLGNBQWNDLE1BQU07SUFDekIsSUFBSUEsV0FBV0MsYUFBYSxPQUFPRCxXQUFXLFVBQVU7UUFDcEQsT0FBTztJQUNYO0lB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SixJQUFJLE9BQU9sQixLQUFLdkMsU0FBUyxVQUFVO2dCQUMvQnlELFlBQVk7b0JBQ1JqRixRQUFRO29CQUNSQyxTQUFTOEQsSUFBSXZDLElBQUk7Z0JBQ3JCO2dCQUNBekIsYUFBYXdELFFBQVEsQ0FBQzBCO2dCQUN0QkgsUUFBUUc7WUFDWixPQUFPO2dCQUNIQSxZQUFZO29CQUNSakYsUUFBUTtvQkFDUkMsU0FBUztnQkFDYjtnQkFDQUYsYUFBYXdELFFBQVEsQ0FBQzBCO2dCQUN0QkYsT0FBT0U7WUFDWDtRQUNKLEdBQUdDLEtBQUssQ0FBQyxDQUFDQztZQUNOM0Ysd0VBQVdBLENBQUMsQ0FBQyx5Q0FBeUMsRUFBRTJGLEtBQUs7WUFDN0QsTUFBTUYsWUFBWTtnQkFDZGpGLFFBQVE7Z0JBQ1JDLFNBQVM7WUFDYjtZQUNBRixhQUFhd0QsUUFBUSxDQUFDMEI7WUFDdEJGLE9BQU9FO1FBQ1g7SUFDSjtBQUNKIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWFwaS9kaXN0L2N1cnJlbnQtdXNlci5qcz9jMDBmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBBUEkgKi8gaW1wb3J0IHsgcmVwb3J0RXJyb3IgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLWVycm9yLWhhbmRsaW5nXCI7XG5pbXBvcnQgeyBjcmVhdGVHbG9iYWxTdG9yZSB9IGZyb20gXCJAb3Blbm1ycy9lc20tc3RhdGVcIjtcbmltcG9ydCB7IGlzVW5kZWZpbmVkIH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBvcGVubXJzRmV0Y2gsIHJlc3RCYXNlVXJsLCBzZXNzaW9uRW5kcG9pbnQgfSBmcm9tIFwiLi9vcGVubXJzLWZldGNoLmpzXCI7XG4vKiogQGludGVybmFsICovIGV4cG9ydCBjb25zdCBzZXNzaW9uU3RvcmUgPSBjcmVhdGVHbG9iYWxTdG9yZSgnc2Vzc2lvbicsIHtcbiAgICBsb2FkZWQ6IGZhbHNlLFxuICAgIHNlc3Npb246IG51bGxcbn0pO1xubGV0IGxhc3RGZXRjaFRpbWVNaWxsaXMgPSAwO1xuZnVuY3Rpb24gZ2V0Q3VycmVudFVzZXIob3B0cyA9IHtcbiAgICBpbmNsdWRlQXV0aFN0YXR1czogdHJ1ZVxufSkge1xuICAgIGlmIChsYXN0RmV0Y2hUaW1lTWlsbGlzIDwgRGF0ZS5ub3coKSAtIDEwMDAgKiA2MCB8fCAhc2Vzc2lvblN0b3JlLmdldFN0YXRlKCkubG9hZGVkKSB7XG4gICAgICAgIHJlZmV0Y2hDdXJyZW50VXNlcigpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKHN1YnNjcmliZXIpPT57XG4gICAgICAgIGNvbnN0IGhhbmRsZXIgPSAoc3RhdGUpPT57XG4gICAgICAgICAgICBpZiAoc3RhdGUubG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9wdHMuaW5jbHVkZUF1dGhTdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHN0YXRlLnNlc3Npb24pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dChzdGF0ZS5zZXNzaW9uPy51c2VyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGhhbmRsZXIoc2Vzc2lvblN0b3JlLmdldFN0YXRlKCkpO1xuICAgICAgICAvLyBUaGUgb2JzZXJ2YWJsZSBzdWJzY3JpYmUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBhbiB1bnN1YnNjcmliZSBmdW5jdGlvbixcbiAgICAgICAgLy8gd2hpY2ggaGFwcGVucyB0byBiZSBleGFjdGx5IHdoYXQgYHN1YnNjcmliZWAgcmV0dXJucy5cbiAgICAgICAgcmV0dXJuIHNlc3Npb25TdG9yZS5zdWJzY3JpYmUoaGFuZGxlcik7XG4gICAgfSk7XG59XG5leHBvcnQgeyBnZXRDdXJyZW50VXNlciB9O1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlc3Npb25TdG9yZSgpIHtcbiAgICBpZiAobGFzdEZldGNoVGltZU1pbGxpcyA8IERhdGUubm93KCkgLSAxMDAwICogNjAgfHwgIXNlc3Npb25TdG9yZS5nZXRTdGF0ZSgpLmxvYWRlZCkge1xuICAgICAgICByZWZldGNoQ3VycmVudFVzZXIoKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlc3Npb25TdG9yZTtcbn1cbi8vIE5CIGxvY2FsZSBpcyBzdHJpbmcgb25seSBpZiB0aGlzIHJldHVybnMgdHJ1ZVxuZnVuY3Rpb24gaXNWYWxpZExvY2FsZShsb2NhbGUpIHtcbiAgICBpZiAobG9jYWxlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIGxvY2FsZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBuZXcgSW50bC5Mb2NhbGUobG9jYWxlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5leHBvcnQgZnVuY3Rpb24gc2V0VXNlckxhbmd1YWdlKGRhdGEpIHtcbiAgICBsZXQgbG9jYWxlID0gZGF0YS51c2VyPy51c2VyUHJvcGVydGllcz8uZGVmYXVsdExvY2FsZSA/PyBkYXRhLmxvY2FsZTtcbiAgICBpZiAobG9jYWxlICYmIGxvY2FsZS5pbmNsdWRlcygnXycpKSB7XG4gICAgICAgIGxvY2FsZSA9IGxvY2FsZS5yZXBsYWNlQWxsKCdfJywgJy0nKTtcbiAgICB9XG4gICAgaWYgKGlzVmFsaWRMb2NhbGUobG9jYWxlKSAmJiBsb2NhbGUgIT09IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2xhbmcnKSkge1xuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2V0QXR0cmlidXRlKCdsYW5nJywgbG9jYWxlKTtcbiAgICB9XG59XG5zZXNzaW9uU3RvcmUuc3Vic2NyaWJlKChzdGF0ZSk9PntcbiAgICBpZiAoc3RhdGUubG9hZGVkICYmIHN0YXRlLnNlc3Npb24pIHtcbiAgICAgICAgc2V0VXNlckxhbmd1YWdlKHN0YXRlLnNlc3Npb24pO1xuICAgIH1cbn0pO1xuZnVuY3Rpb24gdXNlckhhc1ByaXZpbGVnZShyZXF1aXJlZFByaXZpbGVnZSwgdXNlcikge1xuICAgIGlmICh0eXBlb2YgcmVxdWlyZWRQcml2aWxlZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiAhaXNVbmRlZmluZWQodXNlci5wcml2aWxlZ2VzLmZpbmQoKHApPT5yZXF1aXJlZFByaXZpbGVnZSA9PT0gcC5kaXNwbGF5KSk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHJlcXVpcmVkUHJpdmlsZWdlKSkge1xuICAgICAgICByZXR1cm4gcmVxdWlyZWRQcml2aWxlZ2UuZXZlcnkoKHJwKT0+IWlzVW5kZWZpbmVkKHVzZXIucHJpdmlsZWdlcy5maW5kKChwKT0+cnAgPT09IHAuZGlzcGxheSkpKTtcbiAgICB9IGVsc2UgaWYgKCFpc1VuZGVmaW5lZChyZXF1aXJlZFByaXZpbGVnZSkpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgQ291bGQgbm90IHVuZGVyc3RhbmQgcHJpdmlsZWdlcyBcIiR7cmVxdWlyZWRQcml2aWxlZ2V9XCJgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBpc1N1cGVyVXNlcih1c2VyKSB7XG4gICAgcmV0dXJuICFpc1VuZGVmaW5lZCh1c2VyLnJvbGVzLmZpbmQoKHJvbGUpPT5yb2xlLmRpc3BsYXkgPT09ICdTeXN0ZW0gRGV2ZWxvcGVyJykpO1xufVxuLyoqXG4gKiBUaGUgYHJlZmV0Y2hDdXJyZW50VXNlcmAgZnVuY3Rpb24gY2F1c2VzIGEgbmV0d29yayByZXF1ZXN0IHRvIHJlZG93bmxvYWRcbiAqIHRoZSB1c2VyLiBBbGwgc3Vic2NyaWJlcnMgdG8gdGhlIGN1cnJlbnQgdXNlciB3aWxsIGJlIG5vdGlmaWVkIG9mIHRoZVxuICogbmV3IHVzZXJzIG9uY2UgdGhlIG5ldyB2ZXJzaW9uIG9mIHRoZSB1c2VyIG9iamVjdCBpcyBkb3dubG9hZGVkLlxuICpcbiAqIEByZXR1cm5zIFRoZSBzYW1lIG9ic2VydmFibGUgYXMgcmV0dXJuZWQgYnkgW1tnZXRDdXJyZW50VXNlcl1dLlxuICpcbiAqICMjIyMgRXhhbXBsZVxuICogYGBganNcbiAqIGltcG9ydCB7IHJlZmV0Y2hDdXJyZW50VXNlciB9IGZyb20gJ0BvcGVubXJzL2VzbS1hcGknXG4gKiByZWZldGNoQ3VycmVudFVzZXIoKVxuICogYGBgXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHJlZmV0Y2hDdXJyZW50VXNlcih1c2VybmFtZSwgcGFzc3dvcmQpIHtcbiAgICBsYXN0RmV0Y2hUaW1lTWlsbGlzID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaGVhZGVycyA9IHt9O1xuICAgIGlmICh1c2VybmFtZSAmJiBwYXNzd29yZCkge1xuICAgICAgICBoZWFkZXJzWydBdXRob3JpemF0aW9uJ10gPSBgQmFzaWMgJHt3aW5kb3cuYnRvYShgJHt1c2VybmFtZX06JHtwYXNzd29yZH1gKX1gO1xuICAgIH1cbiAgICByZXR1cm4gaGFuZGxlU2Vzc2lvblJlc3BvbnNlKG9wZW5tcnNGZXRjaChzZXNzaW9uRW5kcG9pbnQsIHtcbiAgICAgICAgaGVhZGVyc1xuICAgIH0pKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjbGVhckN1cnJlbnRVc2VyKCkge1xuICAgIHNlc3Npb25TdG9yZS5zZXRTdGF0ZSh7XG4gICAgICAgIGxvYWRlZDogdHJ1ZSxcbiAgICAgICAgc2Vzc2lvbjoge1xuICAgICAgICAgICAgYXV0aGVudGljYXRlZDogZmFsc2UsXG4gICAgICAgICAgICBzZXNzaW9uSWQ6ICcnXG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB1c2VySGFzQWNjZXNzKHJlcXVpcmVkUHJpdmlsZWdlLCB1c2VyKSB7XG4gICAgaWYgKHVzZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBpZiB0aGUgdXNlciBoYXNuJ3QgYmVlbiBsb2FkZWQsIHRoZW4gcmV0dXJuIGZhbHNlIGlmZiB0aGVyZSBpcyBhIHJlcXVpcmVkIHByaXZpbGVnZVxuICAgICAgICByZXR1cm4gQm9vbGVhbihyZXF1aXJlZFByaXZpbGVnZSk7XG4gICAgfVxuICAgIGlmICghQm9vbGVhbihyZXF1aXJlZFByaXZpbGVnZSkpIHtcbiAgICAgICAgLy8gaWYgdXNlciBleGlzdHMgYnV0IG5vIHJlcXVpcmVkUHJpdmlsZWdlIGlzIGRlZmluZWRcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiB1c2VySGFzUHJpdmlsZWdlKHJlcXVpcmVkUHJpdmlsZWdlLCB1c2VyKSB8fCBpc1N1cGVyVXNlcih1c2VyKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2dnZWRJblVzZXIoKSB7XG4gICAgbGV0IHVzZXI7XG4gICAgbGV0IHVuc3Vic2NyaWJlO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzKT0+e1xuICAgICAgICBjb25zdCBoYW5kbGVyID0gKHN0YXRlKT0+e1xuICAgICAgICAgICAgaWYgKHN0YXRlLmxvYWRlZCAmJiBzdGF0ZS5zZXNzaW9uLnVzZXIpIHtcbiAgICAgICAgICAgICAgICB1c2VyID0gc3RhdGUuc2Vzc2lvbi51c2VyO1xuICAgICAgICAgICAgICAgIHJlcyhzdGF0ZS5zZXNzaW9uLnVzZXIpO1xuICAgICAgICAgICAgICAgIHVuc3Vic2NyaWJlICYmIHVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGhhbmRsZXIoc2Vzc2lvblN0b3JlLmdldFN0YXRlKCkpO1xuICAgICAgICBpZiAoIXVzZXIpIHtcbiAgICAgICAgICAgIHVuc3Vic2NyaWJlID0gc2Vzc2lvblN0b3JlLnN1YnNjcmliZShoYW5kbGVyKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlc3Npb25Mb2NhdGlvbigpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlcywgcmVqKT0+e1xuICAgICAgICBjb25zdCBzdWIgPSBnZXRDdXJyZW50VXNlcigpLnN1YnNjcmliZSgoc2Vzc2lvbik9PntcbiAgICAgICAgICAgIHJlcyhzZXNzaW9uLnNlc3Npb25Mb2NhdGlvbik7XG4gICAgICAgIH0sIHJlaik7XG4gICAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xufVxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNldFNlc3Npb25Mb2NhdGlvbihsb2NhdGlvblV1aWQsIGFib3J0Q29udHJvbGxlcikge1xuICAgIHJldHVybiBoYW5kbGVTZXNzaW9uUmVzcG9uc2Uob3Blbm1yc0ZldGNoKHNlc3Npb25FbmRwb2ludCwge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYm9keToge1xuICAgICAgICAgICAgc2Vzc2lvbkxvY2F0aW9uOiBsb2NhdGlvblV1aWRcbiAgICAgICAgfSxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICB9LFxuICAgICAgICBzaWduYWw6IGFib3J0Q29udHJvbGxlci5zaWduYWxcbiAgICB9KSk7XG59XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2V0VXNlclByb3BlcnRpZXModXNlclV1aWQsIHVzZXJQcm9wZXJ0aWVzLCBhYm9ydENvbnRyb2xsZXIpIHtcbiAgICBpZiAoIWFib3J0Q29udHJvbGxlcikge1xuICAgICAgICBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgfVxuICAgIGF3YWl0IG9wZW5tcnNGZXRjaChgJHtyZXN0QmFzZVVybH0vdXNlci8ke3VzZXJVdWlkfWAsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJvZHk6IHtcbiAgICAgICAgICAgIHVzZXJQcm9wZXJ0aWVzXG4gICAgICAgIH0sXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgfSxcbiAgICAgICAgc2lnbmFsOiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlZmV0Y2hDdXJyZW50VXNlcigpO1xufVxuZnVuY3Rpb24gaGFuZGxlU2Vzc2lvblJlc3BvbnNlKHJlc3VsdCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+e1xuICAgICAgICByZXN1bHQudGhlbigocmVzKT0+e1xuICAgICAgICAgICAgbGV0IG5leHRTdGF0ZTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcmVzPy5kYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIG5leHRTdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBzZXNzaW9uOiByZXMuZGF0YVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgc2Vzc2lvblN0b3JlLnNldFN0YXRlKG5leHRTdGF0ZSk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShuZXh0U3RhdGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXh0U3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHNlc3Npb246IG51bGxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yZS5zZXRTdGF0ZShuZXh0U3RhdGUpO1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXh0U3RhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICAgICAgcmVwb3J0RXJyb3IoYEZhaWxlZCB0byBmZXRjaCBuZXcgc2Vzc2lvbiBpbmZvcm1hdGlvbjogJHtlcnJ9YCk7XG4gICAgICAgICAgICBjb25zdCBuZXh0U3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgbG9hZGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzZXNzaW9uOiBudWxsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgc2Vzc2lvblN0b3JlLnNldFN0YXRlKG5leHRTdGF0ZSk7XG4gICAgICAgICAgICByZWplY3QobmV4dFN0YXRlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG4iXSwibmFtZXMiOlsicmVwb3J0RXJyb3IiLCJjcmVhdGVHbG9iYWxTdG9yZSIsImlzVW5kZWZpbmVkIiwiT2JzZXJ2YWJsZSIsIm9wZW5tcnNGZXRjaCIsInJlc3RCYXNlVXJsIiwic2Vzc2lvbkVuZHBvaW50Iiwic2Vzc2lvblN0b3JlIiwibG9hZGVkIiwic2Vzc2lvbiIsImxhc3RGZXRjaFRpbWVNaWxsaXMiLCJnZXRDdXJyZW50VXNlciIsIm9wdHMiLCJpbmNsdWRlQXV0aFN0YXR1cyIsIkRhdGUiLCJub3ciLCJnZXRTdGF0ZSIsInJlZmV0Y2hDdXJyZW50VXNlciIsInN1YnNjcmliZXIiLCJoYW5kbGVyIiwic3RhdGUiLCJuZXh0IiwidXNlciIsInN1YnNjcmliZSIsImdldFNlc3Npb25TdG9yZSIsImlzVmFsaWRMb2NhbGUiLCJsb2NhbGUiLCJ1bmRlZmluZWQiLCJJbnRsIiwiTG9jYWxlIiwiZSIsInNldFVzZXJMYW5ndWFnZSIsImRhdGEiLCJ1c2VyUHJvcGVydGllcyIsImRlZmF1bHRMb2NhbGUiLCJpbmNsdWRlcyIsInJlcGxhY2VBbGwiLCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIsImdldEF0dHJpYnV0ZSIsInNldEF0dHJpYnV0ZSIsInVzZXJIYXNQcml2aWxlZ2UiLCJyZXF1aXJlZFByaXZpbGVnZSIsInByaXZpbGVnZXMiLCJmaW5kIiwicCIsImRpc3BsYXkiLCJBcnJheSIsImlzQXJyYXkiLCJldmVyeSIsInJwIiwiY29uc29sZSIsImVycm9yIiwiaXNTdXBlclVzZXIiLCJyb2xlcyIsInJvbGUiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwiaGVhZGVycyIsIndpbmRvdyIsImJ0b2EiLCJoYW5kbGVTZXNzaW9uUmVzcG9uc2UiLCJjbGVhckN1cnJlbnRVc2VyIiwic2V0U3RhdGUiLCJhdXRoZW50aWNhdGVkIiwic2Vzc2lvbklkIiwidXNlckhhc0FjY2VzcyIsIkJvb2xlYW4iLCJnZXRMb2dnZWRJblVzZXIiLCJ1bnN1YnNjcmliZSIsIlByb21pc2UiLCJyZXMiLCJnZXRTZXNzaW9uTG9jYXRpb24iLCJyZWoiLCJzdWIiLCJzZXNzaW9uTG9jYXRpb24iLCJzZXRTZXNzaW9uTG9jYXRpb24iLCJsb2NhdGlvblV1aWQiLCJhYm9ydENvbnRyb2xsZXIiLCJtZXRob2QiLCJib2R5Iiwic2lnbmFsIiwic2V0VXNlclByb3BlcnRpZXMiLCJ1c2VyVXVpZCIsIkFib3J0Q29udHJvbGxlciIsInJlc3VsdCIsInJlc29sdmUiLCJyZWplY3QiLCJ0aGVuIiwibmV4dFN0YXRlIiwiY2F0Y2giLCJlcnIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-api/dist/current-user.js\n");
198
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ clearCurrentUser: () => (/* binding */ clearCurrentUser),\n/* harmony export */ getCurrentUser: () => (/* binding */ getCurrentUser),\n/* harmony export */ getLoggedInUser: () => (/* binding */ getLoggedInUser),\n/* harmony export */ getSessionLocation: () => (/* binding */ getSessionLocation),\n/* harmony export */ getSessionStore: () => (/* binding */ getSessionStore),\n/* harmony export */ refetchCurrentUser: () => (/* binding */ refetchCurrentUser),\n/* harmony export */ sessionStore: () => (/* binding */ sessionStore),\n/* harmony export */ setSessionLocation: () => (/* binding */ setSessionLocation),\n/* harmony export */ setUserLanguage: () => (/* binding */ setUserLanguage),\n/* harmony export */ setUserProperties: () => (/* binding */ setUserProperties),\n/* harmony export */ userHasAccess: () => (/* binding */ userHasAccess)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_error_handling__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-error-handling */ \"../../framework/esm-error-handling/dist/index.js\");\n/* harmony import */ var _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-state */ \"../../framework/esm-state/dist/index.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/isUndefined.js\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ \"webpack/sharing/consume/default/rxjs/rxjs\");\n/* harmony import */ var _openmrs_fetch_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./openmrs-fetch.js */ \"../../framework/esm-api/dist/openmrs-fetch.js\");\n/** @module @category API */ \n\n\n\n\n/** @internal */ const sessionStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__.createGlobalStore)('session', {\n loaded: false,\n session: null\n});\nlet lastFetchTimeMillis = 0;\nfunction getCurrentUser(opts = {\n includeAuthStatus: true\n}) {\n if (lastFetchTimeMillis < Date.now() - 1000 * 60 || !sessionStore.getState().loaded) {\n refetchCurrentUser();\n }\n return new rxjs__WEBPACK_IMPORTED_MODULE_2__.Observable((subscriber)=>{\n const handler = (state)=>{\n if (state.loaded) {\n if (opts.includeAuthStatus) {\n subscriber.next(state.session);\n } else {\n subscriber.next(state.session?.user);\n }\n }\n };\n handler(sessionStore.getState());\n // The observable subscribe function should return an unsubscribe function,\n // which happens to be exactly what `subscribe` returns.\n return sessionStore.subscribe(handler);\n });\n}\n\nfunction getSessionStore() {\n if (lastFetchTimeMillis < Date.now() - 1000 * 60 || !sessionStore.getState().loaded) {\n refetchCurrentUser();\n }\n return sessionStore;\n}\n// NB locale is string only if this returns true\nfunction isValidLocale(locale) {\n if (locale === undefined || typeof locale !== 'string') {\n return false;\n }\n try {\n new Intl.Locale(locale);\n } catch (e) {\n return false;\n }\n return true;\n}\nfunction setUserLanguage(data) {\n let locale = data.user?.userProperties?.defaultLocale ?? data.locale;\n if (locale && locale.includes('_')) {\n locale = locale.replaceAll('_', '-');\n }\n if (isValidLocale(locale) && locale !== document.documentElement.getAttribute('lang')) {\n document.documentElement.setAttribute('lang', locale);\n }\n}\nsessionStore.subscribe((state)=>{\n if (state.loaded && state.session) {\n setUserLanguage(state.session);\n }\n});\nfunction userHasPrivilege(requiredPrivilege, user) {\n if (typeof requiredPrivilege === 'string') {\n return !(0,lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(user.privileges.find((p)=>requiredPrivilege === p.display));\n } else if (Array.isArray(requiredPrivilege)) {\n return requiredPrivilege.every((rp)=>!(0,lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(user.privileges.find((p)=>rp === p.display)));\n } else if (!(0,lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(requiredPrivilege)) {\n console.error(`Could not understand privileges \"${requiredPrivilege}\"`);\n }\n return true;\n}\nfunction isSuperUser(user) {\n return !(0,lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(user.roles.find((role)=>role.display === 'System Developer'));\n}\n/**\n * The `refetchCurrentUser` function causes a network request to redownload\n * the user. All subscribers to the current user will be notified of the\n * new users once the new version of the user object is downloaded.\n *\n * @returns The same observable as returned by [[getCurrentUser]].\n *\n * #### Example\n * ```js\n * import { refetchCurrentUser } from '@openmrs/esm-api'\n * refetchCurrentUser()\n * ```\n */ function refetchCurrentUser(username, password) {\n lastFetchTimeMillis = Date.now();\n let headers = {};\n if (username && password) {\n headers['Authorization'] = `Basic ${window.btoa(`${username}:${password}`)}`;\n }\n return handleSessionResponse((0,_openmrs_fetch_js__WEBPACK_IMPORTED_MODULE_3__.openmrsFetch)(_openmrs_fetch_js__WEBPACK_IMPORTED_MODULE_3__.sessionEndpoint, {\n headers\n }));\n}\nfunction clearCurrentUser() {\n sessionStore.setState({\n loaded: true,\n session: {\n authenticated: false,\n sessionId: ''\n }\n });\n}\nfunction userHasAccess(requiredPrivilege, user) {\n if (user === undefined) {\n // if the user hasn't been loaded, then return false iff there is a required privilege\n return Boolean(requiredPrivilege);\n }\n if (!Boolean(requiredPrivilege)) {\n // if user exists but no requiredPrivilege is defined\n return true;\n }\n return userHasPrivilege(requiredPrivilege, user) || isSuperUser(user);\n}\nfunction getLoggedInUser() {\n let user;\n let unsubscribe;\n return new Promise((res)=>{\n const handler = (state)=>{\n if (state.loaded && state.session.user) {\n user = state.session.user;\n res(state.session.user);\n if (unsubscribe) {\n unsubscribe();\n }\n }\n };\n handler(sessionStore.getState());\n if (!user) {\n unsubscribe = sessionStore.subscribe(handler);\n }\n });\n}\nfunction getSessionLocation() {\n return new Promise((res, rej)=>{\n const sub = getCurrentUser().subscribe((session)=>{\n res(session.sessionLocation);\n }, rej);\n sub.unsubscribe();\n });\n}\nasync function setSessionLocation(locationUuid, abortController) {\n return handleSessionResponse((0,_openmrs_fetch_js__WEBPACK_IMPORTED_MODULE_3__.openmrsFetch)(_openmrs_fetch_js__WEBPACK_IMPORTED_MODULE_3__.sessionEndpoint, {\n method: 'POST',\n body: {\n sessionLocation: locationUuid\n },\n headers: {\n 'Content-Type': 'application/json'\n },\n signal: abortController.signal\n }));\n}\nasync function setUserProperties(userUuid, userProperties, abortController) {\n if (!abortController) {\n abortController = new AbortController();\n }\n await (0,_openmrs_fetch_js__WEBPACK_IMPORTED_MODULE_3__.openmrsFetch)(`${_openmrs_fetch_js__WEBPACK_IMPORTED_MODULE_3__.restBaseUrl}/user/${userUuid}`, {\n method: 'POST',\n body: {\n userProperties\n },\n headers: {\n 'Content-Type': 'application/json'\n },\n signal: abortController.signal\n });\n return refetchCurrentUser();\n}\nfunction handleSessionResponse(result) {\n return new Promise((resolve, reject)=>{\n result.then((res)=>{\n let nextState;\n if (typeof res?.data === 'object') {\n nextState = {\n loaded: true,\n session: res.data\n };\n sessionStore.setState(nextState);\n resolve(nextState);\n } else {\n nextState = {\n loaded: false,\n session: null\n };\n sessionStore.setState(nextState);\n reject(nextState);\n }\n }).catch((err)=>{\n (0,_openmrs_esm_error_handling__WEBPACK_IMPORTED_MODULE_0__.reportError)(`Failed to fetch new session information: ${err}`);\n const nextState = {\n loaded: false,\n session: null\n };\n sessionStore.setState(nextState);\n reject(nextState);\n });\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1hcGkvZGlzdC9jdXJyZW50LXVzZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDBCQUEwQixHQUE2RDtBQUNoQztBQUNmO0FBQ047QUFDOEM7QUFDaEYsY0FBYyxHQUFVLE1BQU1PLGVBQWVOLHFFQUFpQkEsQ0FBQyxXQUFXO0lBQ3RFTyxRQUFRO0lBQ1JDLFNBQVM7QUFDYixHQUFHO0FBQ0gsSUFBSUMsc0JBQXNCO0FBQzFCLFNBQVNDLGVBQWVDLE9BQU87SUFDM0JDLG1CQUFtQjtBQUN2QixDQUFDO0lBQ0csSUFBSUgsc0JBQXNCSSxLQUFLQyxHQUFHLEtBQUssT0FBTyxNQUFNLENBQUNSLGFBQWFTLFFBQVEsR0FBR1IsTUFBTSxFQUFFO1FBQ2pGUztJQUNKO0lBQ0EsT0FBTyxJQUFJZCw0Q0FBVUEsQ0FBQyxDQUFDZTtRQUNuQixNQUFNQyxVQUFVLENBQUNDO1lBQ2IsSUFBSUEsTUFBTVosTUFBTSxFQUFFO2dCQUNkLElBQUlJLEtBQUtDLGlCQUFpQixFQUFFO29CQUN4QkssV0FBV0csSUFBSSxDQUFDRCxNQUFNWCxPQUFPO2dCQUNqQyxPQUFPO29CQUNIUyxXQUFXRyxJQUFJLENBQUNELE1BQU1YLE9BQU8sRUFBRWE7Z0JBQ25DO1lBQ0o7UUFDSjtRQUNBSCxRQUFRWixhQUFhUyxRQUFRO1FBQzdCLDJFQUEyRTtRQUMzRSx3REFBd0Q7UUFDeEQsT0FBT1QsYUFBYWdCLFNBQVMsQ0FBQ0o7SUFDbEM7QUFDSjtBQUMwQjtBQUNuQixTQUFTSztJQUNaLElBQUlkLHNCQUFzQkksS0FBS0MsR0FBRyxLQUFLLE9BQU8sTUFBTSxDQUFDUixhQUFhUyxRQUFRLEdBQUdSLE1BQU0sRUFBRTtRQUNqRlM7SUFDSjtJQUNBLE9BQU9WO0FBQ1g7QUFDQSxnREFBZ0Q7QUFDaEQsU0FBU2tCLGNBQWNDLE1BQU07SUFDekIsSUFBSUEsV0FBV0MsYUFBYSxPQUFPRCxXQUFXLFVBQVU7UUFDcEQsT0FBTztJQUNYO0lBQ0EsSUFBSTtRQUNBLElBQUlFLEtBQUtDLE1BQU0sQ0FBQ0g7SUFDcEIsRUFBRSxPQUFPSSxHQUFHO1FBQ1IsT0FBTztJQUNYO0lBQ0EsT0FBTztBQUNYO0FBQ08sU0FBU0MsZ0JBQWdCQyxJQUFJO0lBQ2hDLElBQUlOLFNBQVNNLEtBQUtWLElBQUksRUFBRVcsZ0JBQWdCQyxpQkFBaUJGLEtBQUtOLE1BQU07SUFDcEUsSUFBSUEsVUFBVUEsT0FBT1MsUUFBUSxDQUFDLE1BQU07UUFDaENULFNBQVNBLE9BQU9VLFVBQVUsQ0FBQyxLQUFLO0lBQ3BDO0lBQ0EsSUFBSVgsY0FBY0MsV0FBV0EsV0FBV1csU0FBU0MsZUFBZSxDQUFDQyxZQUFZLENBQUMsU0FBUztRQUNuRkYsU0FBU0MsZUFBZSxDQUFDRSxZQUFZLENBQUMsUUFBUWQ7SUFDbEQ7QUFDSjtBQUNBbkIsYUFBYWdCLFNBQVMsQ0FBQyxDQUFDSDtJQUNwQixJQUFJQSxNQUFNWixNQUFNLElBQUlZLE1BQU1YLE9BQU8sRUFBRTtRQUMvQnNCLGdCQUFnQlgsTUFBTVgsT0FBTztJQUNqQztBQUNKO0FBQ0EsU0FBU2dDLGlCQUFpQkMsaUJBQWlCLEVBQUVwQixJQUFJO0lBQzdDLElBQUksT0FBT29CLHNCQUFzQixVQUFVO1FBQ3ZDLE9BQU8sQ0FBQ3hDLHFEQUFXQSxDQUFDb0IsS0FBS3FCLFVBQVUsQ0FBQ0MsSUFBSSxDQUFDLENBQUNDLElBQUlILHNCQUFzQkcsRUFBRUMsT0FBTztJQUNqRixPQUFPLElBQUlDLE1BQU1DLE9BQU8sQ0FBQ04sb0JBQW9CO1FBQ3pDLE9BQU9BLGtCQUFrQk8sS0FBSyxDQUFDLENBQUNDLEtBQUssQ0FBQ2hELHFEQUFXQSxDQUFDb0IsS0FBS3FCLFVBQVUsQ0FBQ0MsSUFBSSxDQUFDLENBQUNDLElBQUlLLE9BQU9MLEVBQUVDLE9BQU87SUFDaEcsT0FBTyxJQUFJLENBQUM1QyxxREFBV0EsQ0FBQ3dDLG9CQUFvQjtRQUN4Q1MsUUFBUUMsS0FBSyxDQUFDLENBQUMsaUNBQWlDLEVBQUVWLGtCQUFrQixDQUFDLENBQUM7SUFDMUU7SUFDQSxPQUFPO0FBQ1g7QUFDQSxTQUFTVyxZQUFZL0IsSUFBSTtJQUNyQixPQUFPLENBQUNwQixxREFBV0EsQ0FBQ29CLEtBQUtnQyxLQUFLLENBQUNWLElBQUksQ0FBQyxDQUFDVyxPQUFPQSxLQUFLVCxPQUFPLEtBQUs7QUFDakU7QUFDQTs7Ozs7Ozs7Ozs7O0NBWUMsR0FBVSxTQUFTN0IsbUJBQW1CdUMsUUFBUSxFQUFFQyxRQUFRO0lBQ3JEL0Msc0JBQXNCSSxLQUFLQyxHQUFHO0lBQzlCLElBQUkyQyxVQUFVLENBQUM7SUFDZixJQUFJRixZQUFZQyxVQUFVO1FBQ3RCQyxPQUFPLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxNQUFNLEVBQUVDLE9BQU9DLElBQUksQ0FBQyxHQUFHSixTQUFTLENBQUMsRUFBRUMsVUFBVSxHQUFHO0lBQ2hGO0lBQ0EsT0FBT0ksc0JBQXNCekQsK0RBQVlBLENBQUNFLDhEQUFlQSxFQUFFO1FBQ3ZEb0Q7SUFDSjtBQUNKO0FBQ08sU0FBU0k7SUFDWnZELGFBQWF3RCxRQUFRLENBQUM7UUFDbEJ2RCxRQUFRO1FBQ1JDLFNBQVM7WUFDTHVELGVBQWU7WUFDZkMsV0FBVztRQUNmO0lBQ0o7QUFDSjtBQUNPLFNBQVNDLGNBQWN4QixpQkFBaUIsRUFBRXBCLElBQUk7SUFDakQsSUFBSUEsU0FBU0ssV0FBVztRQUNwQixzRkFBc0Y7UUFDdEYsT0FBT3dDLFFBQVF6QjtJQUNuQjtJQUNBLElBQUksQ0FBQ3lCLFFBQVF6QixvQkFBb0I7UUFDN0IscURBQXFEO1FBQ3JELE9BQU87SUFDWDtJQUNBLE9BQU9ELGlCQUFpQkMsbUJBQW1CcEIsU0FBUytCLFlBQVkvQjtBQUNwRTtBQUNPLFNBQVM4QztJQUNaLElBQUk5QztJQUNKLElBQUkrQztJQUNKLE9BQU8sSUFBSUMsUUFBUSxDQUFDQztRQUNoQixNQUFNcEQsVUFBVSxDQUFDQztZQUNiLElBQUlBLE1BQU1aLE1BQU0sSUFBSVksTUFBTVgsT0FBTyxDQUFDYSxJQUFJLEVBQUU7Z0JBQ3BDQSxPQUFPRixNQUFNWCxPQUFPLENBQUNhLElBQUk7Z0JBQ3pCaUQsSUFBSW5ELE1BQU1YLE9BQU8sQ0FBQ2EsSUFBSTtnQkFDdEIsSUFBSStDLGFBQWE7b0JBQ2JBO2dCQUNKO1lBQ0o7UUFDSjtRQUNBbEQsUUFBUVosYUFBYVMsUUFBUTtRQUM3QixJQUFJLENBQUNNLE1BQU07WUFDUCtDLGNBQWM5RCxhQUFhZ0IsU0FBUyxDQUFDSjtRQUN6QztJQUNKO0FBQ0o7QUFDTyxTQUFTcUQ7SUFDWixPQUFPLElBQUlGLFFBQVEsQ0FBQ0MsS0FBS0U7UUFDckIsTUFBTUMsTUFBTS9ELGlCQUFpQlksU0FBUyxDQUFDLENBQUNkO1lBQ3BDOEQsSUFBSTlELFFBQVFrRSxlQUFlO1FBQy9CLEdBQUdGO1FBQ0hDLElBQUlMLFdBQVc7SUFDbkI7QUFDSjtBQUNPLGVBQWVPLG1CQUFtQkMsWUFBWSxFQUFFQyxlQUFlO0lBQ2xFLE9BQU9qQixzQkFBc0J6RCwrREFBWUEsQ0FBQ0UsOERBQWVBLEVBQUU7UUFDdkR5RSxRQUFRO1FBQ1JDLE1BQU07WUFDRkwsaUJBQWlCRTtRQUNyQjtRQUNBbkIsU0FBUztZQUNMLGdCQUFnQjtRQUNwQjtRQUNBdUIsUUFBUUgsZ0JBQWdCRyxNQUFNO0lBQ2xDO0FBQ0o7QUFDTyxlQUFlQyxrQkFBa0JDLFFBQVEsRUFBRWxELGNBQWMsRUFBRTZDLGVBQWU7SUFDN0UsSUFBSSxDQUFDQSxpQkFBaUI7UUFDbEJBLGtCQUFrQixJQUFJTTtJQUMxQjtJQUNBLE1BQU1oRiwrREFBWUEsQ0FBQyxHQUFHQywwREFBV0EsQ0FBQyxNQUFNLEVBQUU4RSxVQUFVLEVBQUU7UUFDbERKLFFBQVE7UUFDUkMsTUFBTTtZQUNGL0M7UUFDSjtRQUNBeUIsU0FBUztZQUNMLGdCQUFnQjtRQUNwQjtRQUNBdUIsUUFBUUgsZ0JBQWdCRyxNQUFNO0lBQ2xDO0lBQ0EsT0FBT2hFO0FBQ1g7QUFDQSxTQUFTNEMsc0JBQXNCd0IsTUFBTTtJQUNqQyxPQUFPLElBQUlmLFFBQVEsQ0FBQ2dCLFNBQVNDO1FBQ3pCRixPQUFPRyxJQUFJLENBQUMsQ0FBQ2pCO1lBQ1QsSUFBSWtCO1lBQ0osSUFBSSxPQUFPbEIsS0FBS3ZDLFNBQVMsVUFBVTtnQkFDL0J5RCxZQUFZO29CQUNSakYsUUFBUTtvQkFDUkMsU0FBUzhELElBQUl2QyxJQUFJO2dCQUNyQjtnQkFDQXpCLGFBQWF3RCxRQUFRLENBQUMwQjtnQkFDdEJILFFBQVFHO1lBQ1osT0FBTztnQkFDSEEsWUFBWTtvQkFDUmpGLFFBQVE7b0JBQ1JDLFNBQVM7Z0JBQ2I7Z0JBQ0FGLGFBQWF3RCxRQUFRLENBQUMwQjtnQkFDdEJGLE9BQU9FO1lBQ1g7UUFDSixHQUFHQyxLQUFLLENBQUMsQ0FBQ0M7WUFDTjNGLHdFQUFXQSxDQUFDLENBQUMseUNBQXlDLEVBQUUyRixLQUFLO1lBQzdELE1BQU1GLFlBQVk7Z0JBQ2RqRixRQUFRO2dCQUNSQyxTQUFTO1lBQ2I7WUFDQUYsYUFBYXdELFFBQVEsQ0FBQzBCO1lBQ3RCRixPQUFPRTtRQUNYO0lBQ0o7QUFDSiIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1hcGkvZGlzdC9jdXJyZW50LXVzZXIuanM/YzAwZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgQVBJICovIGltcG9ydCB7IHJlcG9ydEVycm9yIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1lcnJvci1oYW5kbGluZ1wiO1xuaW1wb3J0IHsgY3JlYXRlR2xvYmFsU3RvcmUgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLXN0YXRlXCI7XG5pbXBvcnQgeyBpc1VuZGVmaW5lZCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgb3Blbm1yc0ZldGNoLCByZXN0QmFzZVVybCwgc2Vzc2lvbkVuZHBvaW50IH0gZnJvbSBcIi4vb3Blbm1ycy1mZXRjaC5qc1wiO1xuLyoqIEBpbnRlcm5hbCAqLyBleHBvcnQgY29uc3Qgc2Vzc2lvblN0b3JlID0gY3JlYXRlR2xvYmFsU3RvcmUoJ3Nlc3Npb24nLCB7XG4gICAgbG9hZGVkOiBmYWxzZSxcbiAgICBzZXNzaW9uOiBudWxsXG59KTtcbmxldCBsYXN0RmV0Y2hUaW1lTWlsbGlzID0gMDtcbmZ1bmN0aW9uIGdldEN1cnJlbnRVc2VyKG9wdHMgPSB7XG4gICAgaW5jbHVkZUF1dGhTdGF0dXM6IHRydWVcbn0pIHtcbiAgICBpZiAobGFzdEZldGNoVGltZU1pbGxpcyA8IERhdGUubm93KCkgLSAxMDAwICogNjAgfHwgIXNlc3Npb25TdG9yZS5nZXRTdGF0ZSgpLmxvYWRlZCkge1xuICAgICAgICByZWZldGNoQ3VycmVudFVzZXIoKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChzdWJzY3JpYmVyKT0+e1xuICAgICAgICBjb25zdCBoYW5kbGVyID0gKHN0YXRlKT0+e1xuICAgICAgICAgICAgaWYgKHN0YXRlLmxvYWRlZCkge1xuICAgICAgICAgICAgICAgIGlmIChvcHRzLmluY2x1ZGVBdXRoU3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dChzdGF0ZS5zZXNzaW9uKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoc3RhdGUuc2Vzc2lvbj8udXNlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBoYW5kbGVyKHNlc3Npb25TdG9yZS5nZXRTdGF0ZSgpKTtcbiAgICAgICAgLy8gVGhlIG9ic2VydmFibGUgc3Vic2NyaWJlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gYW4gdW5zdWJzY3JpYmUgZnVuY3Rpb24sXG4gICAgICAgIC8vIHdoaWNoIGhhcHBlbnMgdG8gYmUgZXhhY3RseSB3aGF0IGBzdWJzY3JpYmVgIHJldHVybnMuXG4gICAgICAgIHJldHVybiBzZXNzaW9uU3RvcmUuc3Vic2NyaWJlKGhhbmRsZXIpO1xuICAgIH0pO1xufVxuZXhwb3J0IHsgZ2V0Q3VycmVudFVzZXIgfTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXNzaW9uU3RvcmUoKSB7XG4gICAgaWYgKGxhc3RGZXRjaFRpbWVNaWxsaXMgPCBEYXRlLm5vdygpIC0gMTAwMCAqIDYwIHx8ICFzZXNzaW9uU3RvcmUuZ2V0U3RhdGUoKS5sb2FkZWQpIHtcbiAgICAgICAgcmVmZXRjaEN1cnJlbnRVc2VyKCk7XG4gICAgfVxuICAgIHJldHVybiBzZXNzaW9uU3RvcmU7XG59XG4vLyBOQiBsb2NhbGUgaXMgc3RyaW5nIG9ubHkgaWYgdGhpcyByZXR1cm5zIHRydWVcbmZ1bmN0aW9uIGlzVmFsaWRMb2NhbGUobG9jYWxlKSB7XG4gICAgaWYgKGxvY2FsZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBsb2NhbGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgbmV3IEludGwuTG9jYWxlKGxvY2FsZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHNldFVzZXJMYW5ndWFnZShkYXRhKSB7XG4gICAgbGV0IGxvY2FsZSA9IGRhdGEudXNlcj8udXNlclByb3BlcnRpZXM/LmRlZmF1bHRMb2NhbGUgPz8gZGF0YS5sb2NhbGU7XG4gICAgaWYgKGxvY2FsZSAmJiBsb2NhbGUuaW5jbHVkZXMoJ18nKSkge1xuICAgICAgICBsb2NhbGUgPSBsb2NhbGUucmVwbGFjZUFsbCgnXycsICctJyk7XG4gICAgfVxuICAgIGlmIChpc1ZhbGlkTG9jYWxlKGxvY2FsZSkgJiYgbG9jYWxlICE9PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdsYW5nJykpIHtcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgnbGFuZycsIGxvY2FsZSk7XG4gICAgfVxufVxuc2Vzc2lvblN0b3JlLnN1YnNjcmliZSgoc3RhdGUpPT57XG4gICAgaWYgKHN0YXRlLmxvYWRlZCAmJiBzdGF0ZS5zZXNzaW9uKSB7XG4gICAgICAgIHNldFVzZXJMYW5ndWFnZShzdGF0ZS5zZXNzaW9uKTtcbiAgICB9XG59KTtcbmZ1bmN0aW9uIHVzZXJIYXNQcml2aWxlZ2UocmVxdWlyZWRQcml2aWxlZ2UsIHVzZXIpIHtcbiAgICBpZiAodHlwZW9mIHJlcXVpcmVkUHJpdmlsZWdlID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gIWlzVW5kZWZpbmVkKHVzZXIucHJpdmlsZWdlcy5maW5kKChwKT0+cmVxdWlyZWRQcml2aWxlZ2UgPT09IHAuZGlzcGxheSkpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyZXF1aXJlZFByaXZpbGVnZSkpIHtcbiAgICAgICAgcmV0dXJuIHJlcXVpcmVkUHJpdmlsZWdlLmV2ZXJ5KChycCk9PiFpc1VuZGVmaW5lZCh1c2VyLnByaXZpbGVnZXMuZmluZCgocCk9PnJwID09PSBwLmRpc3BsYXkpKSk7XG4gICAgfSBlbHNlIGlmICghaXNVbmRlZmluZWQocmVxdWlyZWRQcml2aWxlZ2UpKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYENvdWxkIG5vdCB1bmRlcnN0YW5kIHByaXZpbGVnZXMgXCIke3JlcXVpcmVkUHJpdmlsZWdlfVwiYCk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuZnVuY3Rpb24gaXNTdXBlclVzZXIodXNlcikge1xuICAgIHJldHVybiAhaXNVbmRlZmluZWQodXNlci5yb2xlcy5maW5kKChyb2xlKT0+cm9sZS5kaXNwbGF5ID09PSAnU3lzdGVtIERldmVsb3BlcicpKTtcbn1cbi8qKlxuICogVGhlIGByZWZldGNoQ3VycmVudFVzZXJgIGZ1bmN0aW9uIGNhdXNlcyBhIG5ldHdvcmsgcmVxdWVzdCB0byByZWRvd25sb2FkXG4gKiB0aGUgdXNlci4gQWxsIHN1YnNjcmliZXJzIHRvIHRoZSBjdXJyZW50IHVzZXIgd2lsbCBiZSBub3RpZmllZCBvZiB0aGVcbiAqIG5ldyB1c2VycyBvbmNlIHRoZSBuZXcgdmVyc2lvbiBvZiB0aGUgdXNlciBvYmplY3QgaXMgZG93bmxvYWRlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgc2FtZSBvYnNlcnZhYmxlIGFzIHJldHVybmVkIGJ5IFtbZ2V0Q3VycmVudFVzZXJdXS5cbiAqXG4gKiAjIyMjIEV4YW1wbGVcbiAqIGBgYGpzXG4gKiBpbXBvcnQgeyByZWZldGNoQ3VycmVudFVzZXIgfSBmcm9tICdAb3Blbm1ycy9lc20tYXBpJ1xuICogcmVmZXRjaEN1cnJlbnRVc2VyKClcbiAqIGBgYFxuICovIGV4cG9ydCBmdW5jdGlvbiByZWZldGNoQ3VycmVudFVzZXIodXNlcm5hbWUsIHBhc3N3b3JkKSB7XG4gICAgbGFzdEZldGNoVGltZU1pbGxpcyA9IERhdGUubm93KCk7XG4gICAgbGV0IGhlYWRlcnMgPSB7fTtcbiAgICBpZiAodXNlcm5hbWUgJiYgcGFzc3dvcmQpIHtcbiAgICAgICAgaGVhZGVyc1snQXV0aG9yaXphdGlvbiddID0gYEJhc2ljICR7d2luZG93LmJ0b2EoYCR7dXNlcm5hbWV9OiR7cGFzc3dvcmR9YCl9YDtcbiAgICB9XG4gICAgcmV0dXJuIGhhbmRsZVNlc3Npb25SZXNwb25zZShvcGVubXJzRmV0Y2goc2Vzc2lvbkVuZHBvaW50LCB7XG4gICAgICAgIGhlYWRlcnNcbiAgICB9KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gY2xlYXJDdXJyZW50VXNlcigpIHtcbiAgICBzZXNzaW9uU3RvcmUuc2V0U3RhdGUoe1xuICAgICAgICBsb2FkZWQ6IHRydWUsXG4gICAgICAgIHNlc3Npb246IHtcbiAgICAgICAgICAgIGF1dGhlbnRpY2F0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgc2Vzc2lvbklkOiAnJ1xuICAgICAgICB9XG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdXNlckhhc0FjY2VzcyhyZXF1aXJlZFByaXZpbGVnZSwgdXNlcikge1xuICAgIGlmICh1c2VyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gaWYgdGhlIHVzZXIgaGFzbid0IGJlZW4gbG9hZGVkLCB0aGVuIHJldHVybiBmYWxzZSBpZmYgdGhlcmUgaXMgYSByZXF1aXJlZCBwcml2aWxlZ2VcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4ocmVxdWlyZWRQcml2aWxlZ2UpO1xuICAgIH1cbiAgICBpZiAoIUJvb2xlYW4ocmVxdWlyZWRQcml2aWxlZ2UpKSB7XG4gICAgICAgIC8vIGlmIHVzZXIgZXhpc3RzIGJ1dCBubyByZXF1aXJlZFByaXZpbGVnZSBpcyBkZWZpbmVkXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdXNlckhhc1ByaXZpbGVnZShyZXF1aXJlZFByaXZpbGVnZSwgdXNlcikgfHwgaXNTdXBlclVzZXIodXNlcik7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9nZ2VkSW5Vc2VyKCkge1xuICAgIGxldCB1c2VyO1xuICAgIGxldCB1bnN1YnNjcmliZTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlcyk9PntcbiAgICAgICAgY29uc3QgaGFuZGxlciA9IChzdGF0ZSk9PntcbiAgICAgICAgICAgIGlmIChzdGF0ZS5sb2FkZWQgJiYgc3RhdGUuc2Vzc2lvbi51c2VyKSB7XG4gICAgICAgICAgICAgICAgdXNlciA9IHN0YXRlLnNlc3Npb24udXNlcjtcbiAgICAgICAgICAgICAgICByZXMoc3RhdGUuc2Vzc2lvbi51c2VyKTtcbiAgICAgICAgICAgICAgICBpZiAodW5zdWJzY3JpYmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGhhbmRsZXIoc2Vzc2lvblN0b3JlLmdldFN0YXRlKCkpO1xuICAgICAgICBpZiAoIXVzZXIpIHtcbiAgICAgICAgICAgIHVuc3Vic2NyaWJlID0gc2Vzc2lvblN0b3JlLnN1YnNjcmliZShoYW5kbGVyKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlc3Npb25Mb2NhdGlvbigpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlcywgcmVqKT0+e1xuICAgICAgICBjb25zdCBzdWIgPSBnZXRDdXJyZW50VXNlcigpLnN1YnNjcmliZSgoc2Vzc2lvbik9PntcbiAgICAgICAgICAgIHJlcyhzZXNzaW9uLnNlc3Npb25Mb2NhdGlvbik7XG4gICAgICAgIH0sIHJlaik7XG4gICAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xufVxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNldFNlc3Npb25Mb2NhdGlvbihsb2NhdGlvblV1aWQsIGFib3J0Q29udHJvbGxlcikge1xuICAgIHJldHVybiBoYW5kbGVTZXNzaW9uUmVzcG9uc2Uob3Blbm1yc0ZldGNoKHNlc3Npb25FbmRwb2ludCwge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYm9keToge1xuICAgICAgICAgICAgc2Vzc2lvbkxvY2F0aW9uOiBsb2NhdGlvblV1aWRcbiAgICAgICAgfSxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICB9LFxuICAgICAgICBzaWduYWw6IGFib3J0Q29udHJvbGxlci5zaWduYWxcbiAgICB9KSk7XG59XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2V0VXNlclByb3BlcnRpZXModXNlclV1aWQsIHVzZXJQcm9wZXJ0aWVzLCBhYm9ydENvbnRyb2xsZXIpIHtcbiAgICBpZiAoIWFib3J0Q29udHJvbGxlcikge1xuICAgICAgICBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgfVxuICAgIGF3YWl0IG9wZW5tcnNGZXRjaChgJHtyZXN0QmFzZVVybH0vdXNlci8ke3VzZXJVdWlkfWAsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJvZHk6IHtcbiAgICAgICAgICAgIHVzZXJQcm9wZXJ0aWVzXG4gICAgICAgIH0sXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgfSxcbiAgICAgICAgc2lnbmFsOiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlZmV0Y2hDdXJyZW50VXNlcigpO1xufVxuZnVuY3Rpb24gaGFuZGxlU2Vzc2lvblJlc3BvbnNlKHJlc3VsdCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+e1xuICAgICAgICByZXN1bHQudGhlbigocmVzKT0+e1xuICAgICAgICAgICAgbGV0IG5leHRTdGF0ZTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcmVzPy5kYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIG5leHRTdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBzZXNzaW9uOiByZXMuZGF0YVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgc2Vzc2lvblN0b3JlLnNldFN0YXRlKG5leHRTdGF0ZSk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShuZXh0U3RhdGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXh0U3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHNlc3Npb246IG51bGxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yZS5zZXRTdGF0ZShuZXh0U3RhdGUpO1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXh0U3RhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICAgICAgcmVwb3J0RXJyb3IoYEZhaWxlZCB0byBmZXRjaCBuZXcgc2Vzc2lvbiBpbmZvcm1hdGlvbjogJHtlcnJ9YCk7XG4gICAgICAgICAgICBjb25zdCBuZXh0U3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgbG9hZGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzZXNzaW9uOiBudWxsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgc2Vzc2lvblN0b3JlLnNldFN0YXRlKG5leHRTdGF0ZSk7XG4gICAgICAgICAgICByZWplY3QobmV4dFN0YXRlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG4iXSwibmFtZXMiOlsicmVwb3J0RXJyb3IiLCJjcmVhdGVHbG9iYWxTdG9yZSIsImlzVW5kZWZpbmVkIiwiT2JzZXJ2YWJsZSIsIm9wZW5tcnNGZXRjaCIsInJlc3RCYXNlVXJsIiwic2Vzc2lvbkVuZHBvaW50Iiwic2Vzc2lvblN0b3JlIiwibG9hZGVkIiwic2Vzc2lvbiIsImxhc3RGZXRjaFRpbWVNaWxsaXMiLCJnZXRDdXJyZW50VXNlciIsIm9wdHMiLCJpbmNsdWRlQXV0aFN0YXR1cyIsIkRhdGUiLCJub3ciLCJnZXRTdGF0ZSIsInJlZmV0Y2hDdXJyZW50VXNlciIsInN1YnNjcmliZXIiLCJoYW5kbGVyIiwic3RhdGUiLCJuZXh0IiwidXNlciIsInN1YnNjcmliZSIsImdldFNlc3Npb25TdG9yZSIsImlzVmFsaWRMb2NhbGUiLCJsb2NhbGUiLCJ1bmRlZmluZWQiLCJJbnRsIiwiTG9jYWxlIiwiZSIsInNldFVzZXJMYW5ndWFnZSIsImRhdGEiLCJ1c2VyUHJvcGVydGllcyIsImRlZmF1bHRMb2NhbGUiLCJpbmNsdWRlcyIsInJlcGxhY2VBbGwiLCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIsImdldEF0dHJpYnV0ZSIsInNldEF0dHJpYnV0ZSIsInVzZXJIYXNQcml2aWxlZ2UiLCJyZXF1aXJlZFByaXZpbGVnZSIsInByaXZpbGVnZXMiLCJmaW5kIiwicCIsImRpc3BsYXkiLCJBcnJheSIsImlzQXJyYXkiLCJldmVyeSIsInJwIiwiY29uc29sZSIsImVycm9yIiwiaXNTdXBlclVzZXIiLCJyb2xlcyIsInJvbGUiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwiaGVhZGVycyIsIndpbmRvdyIsImJ0b2EiLCJoYW5kbGVTZXNzaW9uUmVzcG9uc2UiLCJjbGVhckN1cnJlbnRVc2VyIiwic2V0U3RhdGUiLCJhdXRoZW50aWNhdGVkIiwic2Vzc2lvbklkIiwidXNlckhhc0FjY2VzcyIsIkJvb2xlYW4iLCJnZXRMb2dnZWRJblVzZXIiLCJ1bnN1YnNjcmliZSIsIlByb21pc2UiLCJyZXMiLCJnZXRTZXNzaW9uTG9jYXRpb24iLCJyZWoiLCJzdWIiLCJzZXNzaW9uTG9jYXRpb24iLCJzZXRTZXNzaW9uTG9jYXRpb24iLCJsb2NhdGlvblV1aWQiLCJhYm9ydENvbnRyb2xsZXIiLCJtZXRob2QiLCJib2R5Iiwic2lnbmFsIiwic2V0VXNlclByb3BlcnRpZXMiLCJ1c2VyVXVpZCIsIkFib3J0Q29udHJvbGxlciIsInJlc3VsdCIsInJlc29sdmUiLCJyZWplY3QiLCJ0aGVuIiwibmV4dFN0YXRlIiwiY2F0Y2giLCJlcnIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-api/dist/current-user.js\n");
199
199
 
200
200
  /***/ }),
201
201
 
@@ -305,7 +305,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n\n//# sourceURL=[module]\n//#
305
305
  \***********************************************************/
306
306
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
307
307
 
308
- eval("__webpack_require__.r(__webpack_exports__);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1hcGkvZGlzdC90eXBlcy91c2VyLXJlc291cmNlLmpzIiwibWFwcGluZ3MiOiI7QUFBVyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1hcGkvZGlzdC90eXBlcy91c2VyLXJlc291cmNlLmpzPzg3MjQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgfTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-api/dist/types/user-resource.js\n");
308
+ eval("__webpack_require__.r(__webpack_exports__);\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1hcGkvZGlzdC90eXBlcy91c2VyLXJlc291cmNlLmpzIiwibWFwcGluZ3MiOiI7QUFBQSxtRUFBbUU7QUFDeEQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tYXBpL2Rpc3QvdHlwZXMvdXNlci1yZXNvdXJjZS5qcz84NzI0Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbmV4cG9ydCB7IH07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-api/dist/types/user-resource.js\n");
309
309
 
310
310
  /***/ }),
311
311
 
@@ -325,7 +325,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
325
325
  \*******************************************************************/
326
326
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
327
327
 
328
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getCurrentImportMap: () => (/* binding */ getCurrentImportMap),\n/* harmony export */ importDynamic: () => (/* binding */ importDynamic),\n/* harmony export */ preloadImport: () => (/* binding */ preloadImport),\n/* harmony export */ slugify: () => (/* binding */ slugify)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-globals */ \"../../framework/esm-globals/dist/index.js\");\n/* harmony import */ var _openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-translations */ \"../../framework/esm-translations/dist/index.js\");\n/** @module @category Dynamic Loading */ \n// hack to make the types defined in esm-globals available here\n\n\n/**\n * @internal\n *\n * Transforms an ESM module name to a valid JS identifier\n *\n * @param name the name of a module\n * @returns An opaque, equivalent JS identifier for the module\n */ function slugify(name) {\n return name.replace(/[\\/\\-@]/g, '_');\n}\n/**\n * Loads the named export from a named package. This might be used like:\n *\n * ```js\n * const { someComponent } = importDynamic(\"@openmrs/esm-template-app\")\n * ```\n *\n * @param jsPackage The package to load the export from.\n * @param share Indicates the name of the shared module; this is an advanced feature if the package you are loading\n * doesn't use the default OpenMRS shared module name \"./start\".\n * @param options Additional options to control loading this script.\n * @param options.importMap The import map to use to load the script. This is useful for situations where you're\n * loading multiple scripts at a time, since it allows the calling code to supply an importMap, saving multiple\n * calls to `getCurrentImportMap()`.\n * @param options.maxLoadingTime A positive integer representing the maximum number of milliseconds to wait for the\n * script to load before the promise returned from this function will be rejected. Defaults to 600,000 milliseconds,\n * i.e., 10 minutes.\n */ async function importDynamic(jsPackage, share = './start', options) {\n // default to 10 minutes\n const maxLoadingTime = !options?.maxLoadingTime || options.maxLoadingTime <= 0 ? 600000 : options.maxLoadingTime;\n let timeout = undefined;\n await Promise.race([\n preloadImport(jsPackage, options?.importMap),\n new Promise((_, reject)=>{\n timeout = setTimeout(()=>{\n reject(new Error(`Could not resolve requested script, ${jsPackage}, within ${humanReadableMs(maxLoadingTime)}.`));\n }, maxLoadingTime);\n })\n ]);\n timeout && clearTimeout(timeout);\n const jsPackageSlug = slugify(jsPackage);\n const container = window[jsPackageSlug];\n if (!isFederatedModule(container)) {\n const error = `The global variable ${jsPackageSlug} does not refer to a federated module`;\n console.error(error);\n throw new Error(error);\n }\n container.init(__webpack_require__.S.default);\n const factory = await container.get(share);\n const module = factory();\n if (!(typeof module === 'object') || module === null) {\n const error = `Container for ${jsPackage} did not return an ESM module as expected`;\n console.error(error);\n throw new Error(error);\n }\n return module;\n}\n/**\n * Utility function to convert milliseconds into human-readable strings with rather absurd\n * levels of precision.\n *\n * @param ms Number of milliseconds\n * @returns A human-readable string useful only for error logging, where we can assume English\n */ function humanReadableMs(ms) {\n if (ms < 1000) {\n return `${ms} milliseconds`;\n } else if (ms < 60000) {\n return `${Math.floor(ms / 1000)} seconds`;\n } else if (ms < 3600000) {\n return `${Math.floor(ms / 60000)} minutes`;\n } else if (ms < 86400000) {\n return `${Math.floor(ms / 3600000)} hours`;\n } else {\n return `${Math.floor(ms / 86400000)} days`;\n }\n}\n/**\n * @internal\n *\n * This internal method is used to ensure that the script belonging\n * to the given package is loaded and added to the head.\n *\n * @param jsPackage The package to load\n * @param importMap The import map to use for loading this package.\n * The main reason for specifying this is to avoid needing to call\n * `getCurrentPageMap()` for every script when bulk loading.\n */ async function preloadImport(jsPackage, importMap) {\n if (typeof jsPackage !== 'string' || jsPackage.trim().length === 0) {\n const error = 'Attempted to call importDynamic() without supplying a package to load';\n console.error(error);\n throw new Error(error);\n }\n const jsPackageSlug = slugify(jsPackage);\n if (!window[jsPackageSlug]) {\n const activeImportMap = importMap ?? await getCurrentImportMap();\n if (!activeImportMap.imports.hasOwnProperty(jsPackage)) {\n const error = `Could not find the package ${jsPackage} defined in the current importmap`;\n console.error(error);\n throw new Error(error);\n }\n let url = activeImportMap.imports[jsPackage];\n if (url.startsWith('./')) {\n url = window.spaBase + url.substring(1);\n }\n const isOverridden = !!window.localStorage.getItem(`import-map-override:${jsPackage}`);\n try {\n return await new Promise((resolve, reject)=>{\n loadScript(url, resolve, reject);\n });\n } catch (err) {\n if (isOverridden) {\n (0,_openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_0__.dispatchToastShown)({\n kind: 'error',\n title: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_1__.getCoreTranslation)('scriptLoadingFailed', 'Error: Script failed to load'),\n description: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_1__.getCoreTranslation)('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 url\n }),\n actionButtonLabel: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_1__.getCoreTranslation)('resetOverrides', 'Reset overrides'),\n onActionButtonClick () {\n window.importMapOverrides.resetOverrides();\n window.location.reload();\n }\n });\n }\n return Promise.reject(err);\n }\n }\n return Promise.resolve();\n}\n/**\n * @internal\n *\n * Used to load the current import map\n *\n * @returns The current page map\n */ async function getCurrentImportMap() {\n return window.importMapOverrides.getCurrentPageMap();\n}\nfunction isFederatedModule(a) {\n return typeof a === 'object' && a !== null && 'init' in a && typeof a['init'] === 'function' && 'get' in a && typeof a['get'] === 'function';\n}\n// internals to track script loading\n// basically, if we're already loading a script, we should wait until the script is loaded\n// we use a global to track this\nconst OPENMRS_SCRIPT_LOADING = Symbol('__openmrs_script_loading');\n/**\n * Appends a `<script>` to the DOM with the given URL.\n */ function loadScript(url, resolve, reject) {\n const scriptElement = document.head.querySelector(`script[src=\"${url}\"]`);\n let scriptLoading = window[OPENMRS_SCRIPT_LOADING];\n if (!scriptLoading) {\n scriptLoading = window[OPENMRS_SCRIPT_LOADING] = new Set([]);\n }\n if (!scriptElement) {\n scriptLoading.add(url);\n const element = document.createElement('script');\n element.src = url;\n element.type = 'text/javascript';\n element.async = true;\n // loadTime() displays an error if a script takes more than 5 seconds to load\n const loadTimeout = setTimeout(()=>{\n console.error(`The script at ${url} did not load within 5 seconds. This may indicate an issue with the imports in the script's entry-point file or with the script's bundler configuration.`);\n }, 5000); // 5 seconds; this is arbitrary\n let loadFn, errFn, finishScriptLoading;\n finishScriptLoading = ()=>{\n clearTimeout(loadTimeout);\n scriptLoading.delete(url);\n loadFn && element.removeEventListener('load', loadFn);\n errFn && element.removeEventListener('error', errFn);\n };\n loadFn = ()=>{\n finishScriptLoading();\n resolve(null);\n };\n errFn = (ev)=>{\n finishScriptLoading();\n const msg = `Failed to load script from ${url}`;\n console.error(msg, ev);\n reject(ev.message ?? msg);\n };\n element.addEventListener('load', loadFn);\n element.addEventListener('error', errFn);\n document.head.appendChild(element);\n } else {\n if (scriptLoading.has(url)) {\n let loadFn, errFn, finishScriptLoading;\n finishScriptLoading = ()=>{\n loadFn && scriptElement.removeEventListener('load', loadFn);\n errFn && scriptElement.removeEventListener('error', errFn);\n };\n loadFn = ()=>{\n finishScriptLoading();\n resolve(null);\n };\n // this errFn does not log anything\n errFn = (ev)=>{\n finishScriptLoading();\n reject(ev.message);\n };\n scriptElement.addEventListener('load', loadFn);\n scriptElement.addEventListener('error', errFn);\n } else {\n console.warn(`Script at ${url} already loaded. Not loading it again.`);\n resolve(null);\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1keW5hbWljLWxvYWRpbmcvZGlzdC9keW5hbWljLWxvYWRpbmcuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsc0NBQXNDLEdBQWdCO0FBQ3RELCtEQUErRDtBQUNMO0FBQ0s7QUFDL0Q7Ozs7Ozs7Q0FPQyxHQUFVLFNBQVNFLFFBQVFDLElBQUk7SUFDNUIsT0FBT0EsS0FBS0MsT0FBTyxDQUFDLFlBQVk7QUFDcEM7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FpQkMsR0FBVSxlQUFlQyxjQUFjQyxTQUFTLEVBQUVDLFFBQVEsU0FBUyxFQUFFQyxPQUFPO0lBQ3pFLHdCQUF3QjtJQUN4QixNQUFNQyxpQkFBaUIsQ0FBQ0QsU0FBU0Msa0JBQWtCRCxRQUFRQyxjQUFjLElBQUksSUFBSSxTQUFTRCxRQUFRQyxjQUFjO0lBQ2hILElBQUlDLFVBQVVDO0lBQ2QsTUFBTUMsUUFBUUMsSUFBSSxDQUFDO1FBQ2ZDLGNBQWNSLFdBQVdFLFNBQVNPO1FBQ2xDLElBQUlILFFBQVEsQ0FBQ0ksR0FBR0M7WUFDWlAsVUFBVVEsV0FBVztnQkFDakJELE9BQU8sSUFBSUUsTUFBTSxDQUFDLG9DQUFvQyxFQUFFYixVQUFVLFNBQVMsRUFBRWMsZ0JBQWdCWCxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ25ILEdBQUdBO1FBQ1A7S0FDSDtJQUNEQyxXQUFXVyxhQUFhWDtJQUN4QixNQUFNWSxnQkFBZ0JwQixRQUFRSTtJQUM5QixNQUFNaUIsWUFBWUMsTUFBTSxDQUFDRixjQUFjO0lBQ3ZDLElBQUksQ0FBQ0csa0JBQWtCRixZQUFZO1FBQy9CLE1BQU1HLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRUosY0FBYyxxQ0FBcUMsQ0FBQztRQUN6RkssUUFBUUQsS0FBSyxDQUFDQTtRQUNkLE1BQU0sSUFBSVAsTUFBTU87SUFDcEI7SUFDQUgsVUFBVUssSUFBSSxDQUFDQyxxQkFBd0JBLENBQUNDLE9BQU87SUFDL0MsTUFBTUMsVUFBVSxNQUFNUixVQUFVUyxHQUFHLENB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QVE7UUFDWjtRQUNBOEIsUUFBUSxDQUFDSTtZQUNMSDtZQUNBLE1BQU1JLE1BQU0sQ0FBQywyQkFBMkIsRUFBRTFDLEtBQUs7WUFDL0NoQixRQUFRRCxLQUFLLENBQUMyRCxLQUFLRDtZQUNuQm5FLE9BQU9tRSxHQUFHRSxPQUFPLElBQUlEO1FBQ3pCO1FBQ0FaLFFBQVFjLGdCQUFnQixDQUFDLFFBQVFSO1FBQ2pDTixRQUFRYyxnQkFBZ0IsQ0FBQyxTQUFTUDtRQUNsQ2IsU0FBU0MsSUFBSSxDQUFDb0IsV0FBVyxDQUFDZjtJQUM5QixPQUFPO1FBQ0gsSUFBSUgsY0FBY21CLEdBQUcsQ0FBQzlDLE1BQU07WUFDeEIsSUFBSW9DLFFBQVFDLE9BQU9DO1lBQ25CQSxzQkFBc0I7Z0JBQ2xCRixVQUFVYixjQUFjaUIsbUJBQW1CLENBQUMsUUFBUUo7Z0JBQ3BEQyxTQUFTZCxjQUFjaUIsbUJBQW1CLENBQUMsU0FBU0g7WUFDeEQ7WUFDQUQsU0FBUztnQkFDTEU7Z0JBQ0EvQixRQUFRO1lBQ1o7WUFDQSxtQ0FBbUM7WUFDbkM4QixRQUFRLENBQUNJO2dCQUNMSDtnQkFDQWhFLE9BQU9tRSxHQUFHRSxPQUFPO1lBQ3JCO1lBQ0FwQixjQUFjcUIsZ0JBQWdCLENBQUMsUUFBUVI7WUFDdkNiLGNBQWNxQixnQkFBZ0IsQ0FBQyxTQUFTUDtRQUM1QyxPQUFPO1lBQ0hyRCxRQUFRK0QsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFL0MsSUFBSSxzQ0FBc0MsQ0FBQztZQUNyRU8sUUFBUTtRQUNaO0lBQ0o7QUFDSiIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1keW5hbWljLWxvYWRpbmcvZGlzdC9keW5hbWljLWxvYWRpbmcuanM/ZWNkZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgRHluYW1pYyBMb2FkaW5nICovICd1c2Ugc3RyaWN0Jztcbi8vIGhhY2sgdG8gbWFrZSB0aGUgdHlwZXMgZGVmaW5lZCBpbiBlc20tZ2xvYmFscyBhdmFpbGFibGUgaGVyZVxuaW1wb3J0IHsgZGlzcGF0Y2hUb2FzdFNob3duIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1nbG9iYWxzXCI7XG5pbXBvcnQgeyBnZXRDb3JlVHJhbnNsYXRpb24gfSBmcm9tIFwiQG9wZW5tcnMvZXNtLXRyYW5zbGF0aW9uc1wiO1xuLyoqXG4gKiBAaW50ZXJuYWxcbiAqXG4gKiBUcmFuc2Zvcm1zIGFuIEVTTSBtb2R1bGUgbmFtZSB0byBhIHZhbGlkIEpTIGlkZW50aWZpZXJcbiAqXG4gKiBAcGFyYW0gbmFtZSB0aGUgbmFtZSBvZiBhIG1vZHVsZVxuICogQHJldHVybnMgQW4gb3BhcXVlLCBlcXVpdmFsZW50IEpTIGlkZW50aWZpZXIgZm9yIHRoZSBtb2R1bGVcbiAqLyBleHBvcnQgZnVuY3Rpb24gc2x1Z2lmeShuYW1lKSB7XG4gICAgcmV0dXJuIG5hbWUucmVwbGFjZSgvW1xcL1xcLUBdL2csICdfJyk7XG59XG4vKipcbiAqIExvYWRzIHRoZSBuYW1lZCBleHBvcnQgZnJvbSBhIG5hbWVkIHBhY2thZ2UuIFRoaXMgbWlnaHQgYmUgdXNlZCBsaWtlOlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCB7IHNvbWVDb21wb25lbnQgfSA9IGltcG9ydER5bmFtaWMoXCJAb3Blbm1ycy9lc20tdGVtcGxhdGUtYXBwXCIpXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ganNQYWNrYWdlIFRoZSBwYWNrYWdlIHRvIGxvYWQgdGhlIGV4cG9ydCBmcm9tLlxuICogQHBhcmFtIHNoYXJlIEluZGljYXRlcyB0aGUgbmFtZSBvZiB0aGUgc2hhcmVkIG1vZHVsZTsgdGhpcyBpcyBhbiBhZHZhbmNlZCBmZWF0dXJlIGlmIHRoZSBwYWNrYWdlIHlvdSBhcmUgbG9hZGluZ1xuICogICBkb2Vzbid0IHVzZSB0aGUgZGVmYXVsdCBPcGVuTVJTIHNoYXJlZCBtb2R1bGUgbmFtZSBcIi4vc3RhcnRcIi5cbiAqIEBwYXJhbSBvcHRpb25zIEFkZGl0aW9uYWwgb3B0aW9ucyB0byBjb250cm9sIGxvYWRpbmcgdGhpcyBzY3JpcHQuXG4gKiBAcGFyYW0gb3B0aW9ucy5pbXBvcnRNYXAgVGhlIGltcG9ydCBtYXAgdG8gdXNlIHRvIGxvYWQgdGhlIHNjcmlwdC4gVGhpcyBpcyB1c2VmdWwgZm9yIHNpdHVhdGlvbnMgd2hlcmUgeW91J3JlXG4gKiAgIGxvYWRpbmcgbXVsdGlwbGUgc2NyaXB0cyBhdCBhIHRpbWUsIHNpbmNlIGl0IGFsbG93cyB0aGUgY2FsbGluZyBjb2RlIHRvIHN1cHBseSBhbiBpbXBvcnRNYXAsIHNhdmluZyBtdWx0aXBsZVxuICogICBjYWxscyB0byBgZ2V0Q3VycmVudEltcG9ydE1hcCgpYC5cbiAqIEBwYXJhbSBvcHRpb25zLm1heExvYWRpbmdUaW1lIEEgcG9zaXRpdmUgaW50ZWdlciByZXByZXNlbnRpbmcgdGhlIG1heGltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IGZvciB0aGVcbiAqICAgc2NyaXB0IHRvIGxvYWQgYmVmb3JlIHRoZSBwcm9taXNlIHJldHVybmVkIGZyb20gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlamVjdGVkLiBEZWZhdWx0cyB0byA2MDAsMDAwIG1pbGxpc2Vjb25kcyxcbiAqICAgaS5lLiwgMTAgbWludXRlcy5cbiAqLyBleHBvcnQgYXN5bmMgZnVuY3Rpb24gaW1wb3J0RHluYW1pYyhqc1BhY2thZ2UsIHNoYXJlID0gJy4vc3RhcnQnLCBvcHRpb25zKSB7XG4gICAgLy8gZGVmYXVsdCB0byAxMCBtaW51dGVzXG4gICAgY29uc3QgbWF4TG9hZGluZ1RpbWUgPSAhb3B0aW9ucz8ubWF4TG9hZGluZ1RpbWUgfHwgb3B0aW9ucy5tYXhMb2FkaW5nVGltZSA8PSAwID8gNjAwMDAwIDogb3B0aW9ucy5tYXhMb2FkaW5nVGltZTtcbiAgICBsZXQgdGltZW91dCA9IHVuZGVmaW5lZDtcbiAgICBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBwcmVsb2FkSW1wb3J0KGpzUGFja2FnZSwgb3B0aW9ucz8uaW1wb3J0TWFwKSxcbiAgICAgICAgbmV3IFByb21pc2UoKF8sIHJlamVjdCk9PntcbiAgICAgICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgQ291bGQgbm90IHJlc29sdmUgcmVxdWVzdGVkIHNjcmlwdCwgJHtqc1BhY2thZ2V9LCB3aXRoaW4gJHtodW1hblJlYWRhYmxlTXMobWF4TG9hZGluZ1RpbWUpfS5gKSk7XG4gICAgICAgICAgICB9LCBtYXhMb2FkaW5nVGltZSk7XG4gICAgICAgIH0pXG4gICAgXSk7XG4gICAgdGltZW91dCAmJiBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgY29uc3QganNQYWNrYWdlU2x1ZyA9IHNsdWdpZnkoanNQYWNrYWdlKTtcbiAgICBjb25zdCBjb250YWluZXIgPSB3aW5kb3dbanNQYWNrYWdlU2x1Z107XG4gICAgaWYgKCFpc0ZlZGVyYXRlZE1vZHVsZShjb250YWluZXIpKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gYFRoZSBnbG9iYWwgdmFyaWFibGUgJHtqc1BhY2thZ2VTbHVnfSBkb2VzIG5vdCByZWZlciB0byBhIGZlZGVyYXRlZCBtb2R1bGVgO1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcbiAgICB9XG4gICAgY29udGFpbmVyLmluaXQoX193ZWJwYWNrX3NoYXJlX3Njb3Blc19fLmRlZmF1bHQpO1xuICAgIGNvbnN0IGZhY3RvcnkgPSBhd2FpdCBjb250YWluZXIuZ2V0KHNoYXJlKTtcbiAgICBjb25zdCBtb2R1bGUgPSBmYWN0b3J5KCk7XG4gICAgaWYgKCEodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpIHx8IG1vZHVsZSA9PT0gbnVsbCkge1xuICAgICAgICBjb25zdCBlcnJvciA9IGBDb250YWluZXIgZm9yICR7anNQYWNrYWdlfSBkaWQgbm90IHJldHVybiBhbiBFU00gbW9kdWxlIGFzIGV4cGVjdGVkYDtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XG4gICAgfVxuICAgIHJldHVybiBtb2R1bGU7XG59XG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gdG8gY29udmVydCBtaWxsaXNlY29uZHMgaW50byBodW1hbi1yZWFkYWJsZSBzdHJpbmdzIHdpdGggcmF0aGVyIGFic3VyZFxuICogbGV2ZWxzIG9mIHByZWNpc2lvbi5cbiAqXG4gKiBAcGFyYW0gbXMgTnVtYmVyIG9mIG1pbGxpc2Vjb25kc1xuICogQHJldHVybnMgQSBodW1hbi1yZWFkYWJsZSBzdHJpbmcgdXNlZnVsIG9ubHkgZm9yIGVycm9yIGxvZ2dpbmcsIHdoZXJlIHdlIGNhbiBhc3N1bWUgRW5nbGlzaFxuICovIGZ1bmN0aW9uIGh1bWFuUmVhZGFibGVNcyhtcykge1xuICAgIGlmIChtcyA8IDEwMDApIHtcbiAgICAgICAgcmV0dXJuIGAke21zfSBtaWxsaXNlY29uZHNgO1xuICAgIH0gZWxzZSBpZiAobXMgPCA2MDAwMCkge1xuICAgICAgICByZXR1cm4gYCR7TWF0aC5mbG9vcihtcyAvIDEwMDApfSBzZWNvbmRzYDtcbiAgICB9IGVsc2UgaWYgKG1zIDwgMzYwMDAwMCkge1xuICAgICAgICByZXR1cm4gYCR7TWF0aC5mbG9vcihtcyAvIDYwMDAwKX0gbWludXRlc2A7XG4gICAgfSBlbHNlIGlmIChtcyA8IDg2NDAwMDAwKSB7XG4gICAgICAgIHJldHVybiBgJHtNYXRoLmZsb29yKG1zIC8gMzYwMDAwMCl9IGhvdXJzYDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYCR7TWF0aC5mbG9vcihtcyAvIDg2NDAwMDAwKX0gZGF5c2A7XG4gICAgfVxufVxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqXG4gKiBUaGlzIGludGVybmFsIG1ldGhvZCBpcyB1c2VkIHRvIGVuc3VyZSB0aGF0IHRoZSBzY3JpcHQgYmVsb25naW5nXG4gKiB0byB0aGUgZ2l2ZW4gcGFja2FnZSBpcyBsb2FkZWQgYW5kIGFkZGVkIHRvIHRoZSBoZWFkLlxuICpcbiAqIEBwYXJhbSBqc1BhY2thZ2UgVGhlIHBhY2thZ2UgdG8gbG9hZFxuICogQHBhcmFtIGltcG9ydE1hcCBUaGUgaW1wb3J0IG1hcCB0byB1c2UgZm9yIGxvYWRpbmcgdGhpcyBwYWNrYWdlLlxuICogIFRoZSBtYWluIHJlYXNvbiBmb3Igc3BlY2lmeWluZyB0aGlzIGlzIHRvIGF2b2lkIG5lZWRpbmcgdG8gY2FsbFxuICogIGBnZXRDdXJyZW50UGFnZU1hcCgpYCBmb3IgZXZlcnkgc2NyaXB0IHdoZW4gYnVsayBsb2FkaW5nLlxuICovIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcmVsb2FkSW1wb3J0KGpzUGFja2FnZSwgaW1wb3J0TWFwKSB7XG4gICAgaWYgKHR5cGVvZiBqc1BhY2thZ2UgIT09ICdzdHJpbmcnIHx8IGpzUGFja2FnZS50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gJ0F0dGVtcHRlZCB0byBjYWxsIGltcG9ydER5bmFtaWMoKSB3aXRob3V0IHN1cHBseWluZyBhIHBhY2thZ2UgdG8gbG9hZCc7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgICBjb25zdCBqc1BhY2thZ2VTbHVnID0gc2x1Z2lmeShqc1BhY2thZ2UpO1xuICAgIGlmICghd2luZG93W2pzUGFja2FnZVNsdWddKSB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUltcG9ydE1hcCA9IGltcG9ydE1hcCA/PyBhd2FpdCBnZXRDdXJyZW50SW1wb3J0TWFwKCk7XG4gICAgICAgIGlmICghYWN0aXZlSW1wb3J0TWFwLmltcG9ydHMuaGFzT3duUHJvcGVydHkoanNQYWNrYWdlKSkge1xuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBgQ291bGQgbm90IGZpbmQgdGhlIHBhY2thZ2UgJHtqc1BhY2thZ2V9IGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgaW1wb3J0bWFwYDtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdXJsID0gYWN0aXZlSW1wb3J0TWFwLmltcG9ydHNbanNQYWNrYWdlXTtcbiAgICAgICAgaWYgKHVybC5zdGFydHNXaXRoKCcuLycpKSB7XG4gICAgICAgICAgICB1cmwgPSB3aW5kb3cuc3BhQmFzZSArIHVybC5zdWJzdHJpbmcoMSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXNPdmVycmlkZGVuID0gISF3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oYGltcG9ydC1tYXAtb3ZlcnJpZGU6JHtqc1BhY2thZ2V9YCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk9PntcbiAgICAgICAgICAgICAgICBsb2FkU2NyaXB0KHVybCwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGlmIChpc092ZXJyaWRkZW4pIHtcbiAgICAgICAgICAgICAgICBkaXNwYXRjaFRvYXN0U2hvd24oe1xuICAgICAgICAgICAgICAgICAgICBraW5kOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogZ2V0Q29yZVRyYW5zbGF0aW9uKCdzY3JpcHRMb2FkaW5nRmFpbGVkJywgJ0Vycm9yOiBTY3JpcHQgZmFpbGVkIHRvIGxvYWQnKSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGdldENvcmVUcmFuc2xhdGlvbignc2NyaXB0TG9hZGluZ0Vycm9yJywgJ0ZhaWxlZCB0byBsb2FkIG92ZXJyaWRkZW4gc2NyaXB0IGZyb20ge3stIHVybH19LiBQbGVhc2UgY2hlY2sgdGhhdCB0aGUgYnVuZGxlZCBzY3JpcHQgaXMgYXZhaWxhYmxlIGF0IHRoZSBleHBlY3RlZCBVUkwuIENsaWNrIHRoZSBidXR0b24gYmVsb3cgdG8gcmVzZXQgYWxsIGltcG9ydCBtYXAgb3ZlcnJpZGVzLicsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybFxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uQnV0dG9uTGFiZWw6IGdldENvcmVUcmFuc2xhdGlvbigncmVzZXRPdmVycmlkZXMnLCAnUmVzZXQgb3ZlcnJpZGVzJyksXG4gICAgICAgICAgICAgICAgICAgIG9uQWN0aW9uQnV0dG9uQ2xpY2sgKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmltcG9ydE1hcE92ZXJyaWRlcy5yZXNldE92ZXJyaWRlcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG59XG4vKipcbiAqIEBpbnRlcm5hbFxuICpcbiAqIFVzZWQgdG8gbG9hZCB0aGUgY3VycmVudCBpbXBvcnQgbWFwXG4gKlxuICogQHJldHVybnMgVGhlIGN1cnJlbnQgcGFnZSBtYXBcbiAqLyBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q3VycmVudEltcG9ydE1hcCgpIHtcbiAgICByZXR1cm4gd2luZG93LmltcG9ydE1hcE92ZXJyaWRlcy5nZXRDdXJyZW50UGFnZU1hcCgpO1xufVxuZnVuY3Rpb24gaXNGZWRlcmF0ZWRNb2R1bGUoYSkge1xuICAgIHJldHVybiB0eXBlb2YgYSA9PT0gJ29iamVjdCcgJiYgYSAhPT0gbnVsbCAmJiAnaW5pdCcgaW4gYSAmJiB0eXBlb2YgYVsnaW5pdCddID09PSAnZnVuY3Rpb24nICYmICdnZXQnIGluIGEgJiYgdHlwZW9mIGFbJ2dldCddID09PSAnZnVuY3Rpb24nO1xufVxuLy8gaW50ZXJuYWxzIHRvIHRyYWNrIHNjcmlwdCBsb2FkaW5nXG4vLyBiYXNpY2FsbHksIGlmIHdlJ3JlIGFscmVhZHkgbG9hZGluZyBhIHNjcmlwdCwgd2Ugc2hvdWxkIHdhaXQgdW50aWwgdGhlIHNjcmlwdCBpcyBsb2FkZWRcbi8vIHdlIHVzZSBhIGdsb2JhbCB0byB0cmFjayB0aGlzXG5jb25zdCBPUEVOTVJTX1NDUklQVF9MT0FESU5HID0gU3ltYm9sKCdfX29wZW5tcnNfc2NyaXB0X2xvYWRpbmcnKTtcbi8qKlxuICogQXBwZW5kcyBhIGA8c2NyaXB0PmAgdG8gdGhlIERPTSB3aXRoIHRoZSBnaXZlbiBVUkwuXG4gKi8gZnVuY3Rpb24gbG9hZFNjcmlwdCh1cmwsIHJlc29sdmUsIHJlamVjdCkge1xuICAgIGNvbnN0IHNjcmlwdEVsZW1lbnQgPSBkb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3IoYHNjcmlwdFtzcmM9XCIke3VybH1cIl1gKTtcbiAgICBsZXQgc2NyaXB0TG9hZGluZyA9IHdpbmRvd1tPUEVOTVJTX1NDUklQVF9MT0FESU5HXTtcbiAgICBpZiAoIXNjcmlwdExvYWRpbmcpIHtcbiAgICAgICAgc2NyaXB0TG9hZGluZyA9IHdpbmRvd1tPUEVOTVJTX1NDUklQVF9MT0FESU5HXSA9IG5ldyBTZXQoW10pO1xuICAgIH1cbiAgICBpZiAoIXNjcmlwdEVsZW1lbnQpIHtcbiAgICAgICAgc2NyaXB0TG9hZGluZy5hZGQodXJsKTtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICBlbGVtZW50LnNyYyA9IHVybDtcbiAgICAgICAgZWxlbWVudC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XG4gICAgICAgIGVsZW1lbnQuYXN5bmMgPSB0cnVlO1xuICAgICAgICAvLyBsb2FkVGltZSgpIGRpc3BsYXlzIGFuIGVycm9yIGlmIGEgc2NyaXB0IHRha2VzIG1vcmUgdGhhbiA1IHNlY29uZHMgdG8gbG9hZFxuICAgICAgICBjb25zdCBsb2FkVGltZW91dCA9IHNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFRoZSBzY3JpcHQgYXQgJHt1cmx9IGRpZCBub3QgbG9hZCB3aXRoaW4gNSBzZWNvbmRzLiBUaGlzIG1heSBpbmRpY2F0ZSBhbiBpc3N1ZSB3aXRoIHRoZSBpbXBvcnRzIGluIHRoZSBzY3JpcHQncyBlbnRyeS1wb2ludCBmaWxlIG9yIHdpdGggdGhlIHNjcmlwdCdzIGJ1bmRsZXIgY29uZmlndXJhdGlvbi5gKTtcbiAgICAgICAgfSwgNTAwMCk7IC8vIDUgc2Vjb25kczsgdGhpcyBpcyBhcmJpdHJhcnlcbiAgICAgICAgbGV0IGxvYWRGbiwgZXJyRm4sIGZpbmlzaFNjcmlwdExvYWRpbmc7XG4gICAgICAgIGZpbmlzaFNjcmlwdExvYWRpbmcgPSAoKT0+e1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGxvYWRUaW1lb3V0KTtcbiAgICAgICAgICAgIHNjcmlwdExvYWRpbmcuZGVsZXRlKHVybCk7XG4gICAgICAgICAgICBsb2FkRm4gJiYgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkJywgbG9hZEZuKTtcbiAgICAgICAgICAgIGVyckZuICYmIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZXJyb3InLCBlcnJGbik7XG4gICAgICAgIH07XG4gICAgICAgIGxvYWRGbiA9ICgpPT57XG4gICAgICAgICAgICBmaW5pc2hTY3JpcHRMb2FkaW5nKCk7XG4gICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICB9O1xuICAgICAgICBlcnJGbiA9IChldik9PntcbiAgICAgICAgICAgIGZpbmlzaFNjcmlwdExvYWRpbmcoKTtcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGBGYWlsZWQgdG8gbG9hZCBzY3JpcHQgZnJvbSAke3VybH1gO1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihtc2csIGV2KTtcbiAgICAgICAgICAgIHJlamVjdChldi5tZXNzYWdlID8/IG1zZyk7XG4gICAgICAgIH07XG4gICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRGbik7XG4gICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBlcnJGbik7XG4gICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHNjcmlwdExvYWRpbmcuaGFzKHVybCkpIHtcbiAgICAgICAgICAgIGxldCBsb2FkRm4sIGVyckZuLCBmaW5pc2hTY3JpcHRMb2FkaW5nO1xuICAgICAgICAgICAgZmluaXNoU2NyaXB0TG9hZGluZyA9ICgpPT57XG4gICAgICAgICAgICAgICAgbG9hZEZuICYmIHNjcmlwdEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRGbik7XG4gICAgICAgICAgICAgICAgZXJyRm4gJiYgc2NyaXB0RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIGVyckZuKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBsb2FkRm4gPSAoKT0+e1xuICAgICAgICAgICAgICAgIGZpbmlzaFNjcmlwdExvYWRpbmcoKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8vIHRoaXMgZXJyRm4gZG9lcyBub3QgbG9nIGFueXRoaW5nXG4gICAgICAgICAgICBlcnJGbiA9IChldik9PntcbiAgICAgICAgICAgICAgICBmaW5pc2hTY3JpcHRMb2FkaW5nKCk7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGV2Lm1lc3NhZ2UpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHNjcmlwdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRGbik7XG4gICAgICAgICAgICBzY3JpcHRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyRm4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBTY3JpcHQgYXQgJHt1cmx9IGFscmVhZHkgbG9hZGVkLiBOb3QgbG9hZGluZyBpdCBhZ2Fpbi5gKTtcbiAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXSwibmFtZXMiOlsiZGlzcGF0Y2hUb2FzdFNob3duIiwiZ2V0Q29yZVRyYW5zbGF0aW9uIiwic2x1Z2lmeSIsIm5hbWUiLCJyZXBsYWNlIiwiaW1wb3J0RHluYW1pYyIsImpzUGFja2FnZSIsInNoYXJlIiwib3B0aW9ucyIsIm1heExvYWRpbmdUaW1lIiwidGltZW91dCIsInVuZGVmaW5lZCIsIlByb21pc2UiLCJyYWNlIiwicHJlbG9hZEltcG9ydCIsImltcG9ydE1hcCIsIl8iLCJyZWplY3QiLCJzZXRUaW1lb3V0IiwiRXJyb3IiLCJodW1hblJlYWRhYmxlTXMiLCJjbGVhclRpbWVvdXQiLCJqc1BhY2thZ2VTbHVnIiwiY29udGFpbmVyIiwid2luZG93IiwiaXNGZWRlcmF0ZWRNb2R1bGUiLCJlcnJvciIsImNvbnNvbGUiLCJpbml0IiwiX193ZWJwYWNrX3NoYXJlX3Njb3Blc19fIiwiZGVmYXVsdCIsImZhY3RvcnkiLCJnZXQiLCJtb2R1bGUiLCJtcyIsIk1hdGgiLCJmbG9vciIsInRyaW0iLCJsZW5ndGgiLCJhY3RpdmVJbXBvcnRNYXAiLCJnZXRDdXJyZW50SW1wb3J0TWFwIiwiaW1wb3J0cyIsImhhc093blByb3BlcnR5IiwidXJsIiwic3RhcnRzV2l0aCIsInNwYUJhc2UiLCJzdWJzdHJpbmciLCJpc092ZXJyaWRkZW4iLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwicmVzb2x2ZSIsImxvYWRTY3JpcHQiLCJlcnIiLCJraW5kIiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsImFjdGlvbkJ1dHRvbkxhYmVsIiwib25BY3Rpb25CdXR0b25DbGljayIsImltcG9ydE1hcE92ZXJyaWRlcyIsInJlc2V0T3ZlcnJpZGVzIiwibG9jYXRpb24iLCJyZWxvYWQiLCJnZXRDdXJyZW50UGFnZU1hcCIsImEiLCJPUEVOTVJTX1NDUklQVF9MT0FESU5HIiwiU3ltYm9sIiwic2NyaXB0RWxlbWVudCIsImRvY3VtZW50IiwiaGVhZCIsInF1ZXJ5U2VsZWN0b3IiLCJzY3JpcHRMb2FkaW5nIiwiU2V0IiwiYWRkIiwiZWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJzcmMiLCJ0eXBlIiwiYXN5bmMiLCJsb2FkVGltZW91dCIsImxvYWRGbiIsImVyckZuIiwiZmluaXNoU2NyaXB0TG9hZGluZyIsImRlbGV0ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJldiIsIm1zZyIsIm1lc3NhZ2UiLCJhZGRFdmVudExpc3RlbmVyIiwiYXBwZW5kQ2hpbGQiLCJoYXMiLCJ3YXJuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-dynamic-loading/dist/dynamic-loading.js\n");
328
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getCurrentImportMap: () => (/* binding */ getCurrentImportMap),\n/* harmony export */ importDynamic: () => (/* binding */ importDynamic),\n/* harmony export */ preloadImport: () => (/* binding */ preloadImport),\n/* harmony export */ slugify: () => (/* binding */ slugify)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-globals */ \"../../framework/esm-globals/dist/index.js\");\n/* harmony import */ var _openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-translations */ \"../../framework/esm-translations/dist/index.js\");\n/** @module @category Dynamic Loading */ \n// hack to make the types defined in esm-globals available here\n\n\n/**\n * @internal\n *\n * Transforms an ESM module name to a valid JS identifier\n *\n * @param name the name of a module\n * @returns An opaque, equivalent JS identifier for the module\n */ function slugify(name) {\n return name.replace(/[\\/\\-@]/g, '_');\n}\n/**\n * Loads the named export from a named package. This might be used like:\n *\n * ```js\n * const { someComponent } = importDynamic(\"@openmrs/esm-template-app\")\n * ```\n *\n * @param jsPackage The package to load the export from.\n * @param share Indicates the name of the shared module; this is an advanced feature if the package you are loading\n * doesn't use the default OpenMRS shared module name \"./start\".\n * @param options Additional options to control loading this script.\n * @param options.importMap The import map to use to load the script. This is useful for situations where you're\n * loading multiple scripts at a time, since it allows the calling code to supply an importMap, saving multiple\n * calls to `getCurrentImportMap()`.\n * @param options.maxLoadingTime A positive integer representing the maximum number of milliseconds to wait for the\n * script to load before the promise returned from this function will be rejected. Defaults to 600,000 milliseconds,\n * i.e., 10 minutes.\n */ async function importDynamic(jsPackage, share = './start', options) {\n // default to 10 minutes\n const maxLoadingTime = !options?.maxLoadingTime || options.maxLoadingTime <= 0 ? 600000 : options.maxLoadingTime;\n let timeout = undefined;\n await Promise.race([\n preloadImport(jsPackage, options?.importMap),\n new Promise((_, reject)=>{\n timeout = setTimeout(()=>{\n reject(new Error(`Could not resolve requested script, ${jsPackage}, within ${humanReadableMs(maxLoadingTime)}.`));\n }, maxLoadingTime);\n })\n ]);\n if (timeout) {\n clearTimeout(timeout);\n }\n const jsPackageSlug = slugify(jsPackage);\n const container = window[jsPackageSlug];\n if (!isFederatedModule(container)) {\n const error = `The global variable ${jsPackageSlug} does not refer to a federated module`;\n console.error(error);\n throw new Error(error);\n }\n container.init(__webpack_require__.S.default);\n const factory = await container.get(share);\n const module = factory();\n if (!(typeof module === 'object') || module === null) {\n const error = `Container for ${jsPackage} did not return an ESM module as expected`;\n console.error(error);\n throw new Error(error);\n }\n return module;\n}\n/**\n * Utility function to convert milliseconds into human-readable strings with rather absurd\n * levels of precision.\n *\n * @param ms Number of milliseconds\n * @returns A human-readable string useful only for error logging, where we can assume English\n */ function humanReadableMs(ms) {\n if (ms < 1000) {\n return `${ms} milliseconds`;\n } else if (ms < 60000) {\n return `${Math.floor(ms / 1000)} seconds`;\n } else if (ms < 3600000) {\n return `${Math.floor(ms / 60000)} minutes`;\n } else if (ms < 86400000) {\n return `${Math.floor(ms / 3600000)} hours`;\n } else {\n return `${Math.floor(ms / 86400000)} days`;\n }\n}\n/**\n * @internal\n *\n * This internal method is used to ensure that the script belonging\n * to the given package is loaded and added to the head.\n *\n * @param jsPackage The package to load\n * @param importMap The import map to use for loading this package.\n * The main reason for specifying this is to avoid needing to call\n * `getCurrentPageMap()` for every script when bulk loading.\n */ async function preloadImport(jsPackage, importMap) {\n if (typeof jsPackage !== 'string' || jsPackage.trim().length === 0) {\n const error = 'Attempted to call importDynamic() without supplying a package to load';\n console.error(error);\n throw new Error(error);\n }\n const jsPackageSlug = slugify(jsPackage);\n if (!window[jsPackageSlug]) {\n const activeImportMap = importMap ?? await getCurrentImportMap();\n if (!activeImportMap.imports.hasOwnProperty(jsPackage)) {\n const error = `Could not find the package ${jsPackage} defined in the current importmap`;\n console.error(error);\n throw new Error(error);\n }\n let url = activeImportMap.imports[jsPackage];\n if (url.startsWith('./')) {\n url = window.spaBase + url.substring(1);\n }\n const isOverridden = !!window.localStorage.getItem(`import-map-override:${jsPackage}`);\n try {\n return await new Promise((resolve, reject)=>{\n loadScript(url, resolve, reject);\n });\n } catch (err) {\n if (isOverridden) {\n (0,_openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_0__.dispatchToastShown)({\n kind: 'error',\n title: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_1__.getCoreTranslation)('scriptLoadingFailed', 'Error: Script failed to load'),\n description: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_1__.getCoreTranslation)('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 url\n }),\n actionButtonLabel: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_1__.getCoreTranslation)('resetOverrides', 'Reset overrides'),\n onActionButtonClick () {\n window.importMapOverrides.resetOverrides();\n window.location.reload();\n }\n });\n }\n return Promise.reject(err);\n }\n }\n return Promise.resolve();\n}\n/**\n * @internal\n *\n * Used to load the current import map\n *\n * @returns The current page map\n */ async function getCurrentImportMap() {\n return window.importMapOverrides.getCurrentPageMap();\n}\nfunction isFederatedModule(a) {\n return typeof a === 'object' && a !== null && 'init' in a && typeof a['init'] === 'function' && 'get' in a && typeof a['get'] === 'function';\n}\n// internals to track script loading\n// basically, if we're already loading a script, we should wait until the script is loaded\n// we use a global to track this\nconst OPENMRS_SCRIPT_LOADING = Symbol('__openmrs_script_loading');\n/**\n * Appends a `<script>` to the DOM with the given URL.\n */ function loadScript(url, resolve, reject) {\n const scriptElement = document.head.querySelector(`script[src=\"${url}\"]`);\n let scriptLoading = window[OPENMRS_SCRIPT_LOADING];\n if (!scriptLoading) {\n scriptLoading = window[OPENMRS_SCRIPT_LOADING] = new Set([]);\n }\n if (!scriptElement) {\n scriptLoading.add(url);\n const element = document.createElement('script');\n element.src = url;\n element.type = 'text/javascript';\n element.async = true;\n // loadTime() displays an error if a script takes more than 5 seconds to load\n const loadTimeout = setTimeout(()=>{\n console.error(`The script at ${url} did not load within 5 seconds. This may indicate an issue with the imports in the script's entry-point file or with the script's bundler configuration.`);\n }, 5000); // 5 seconds; this is arbitrary\n let loadFn, errFn, finishScriptLoading;\n finishScriptLoading = ()=>{\n clearTimeout(loadTimeout);\n scriptLoading.delete(url);\n if (loadFn) {\n element.removeEventListener('load', loadFn);\n }\n if (errFn) {\n element.removeEventListener('error', errFn);\n }\n };\n loadFn = ()=>{\n finishScriptLoading();\n resolve(null);\n };\n errFn = (ev)=>{\n finishScriptLoading();\n const msg = `Failed to load script from ${url}`;\n console.error(msg, ev);\n reject(ev.message ?? msg);\n };\n element.addEventListener('load', loadFn);\n element.addEventListener('error', errFn);\n document.head.appendChild(element);\n } else {\n if (scriptLoading.has(url)) {\n let loadFn, errFn, finishScriptLoading;\n finishScriptLoading = ()=>{\n if (loadFn) {\n scriptElement.removeEventListener('load', loadFn);\n }\n if (errFn) {\n scriptElement.removeEventListener('error', errFn);\n }\n };\n loadFn = ()=>{\n finishScriptLoading();\n resolve(null);\n };\n // this errFn does not log anything\n errFn = (ev)=>{\n finishScriptLoading();\n reject(ev.message);\n };\n scriptElement.addEventListener('load', loadFn);\n scriptElement.addEventListener('error', errFn);\n } else {\n console.warn(`Script at ${url} already loaded. Not loading it again.`);\n resolve(null);\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1keW5hbWljLWxvYWRpbmcvZGlzdC9keW5hbWljLWxvYWRpbmcuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsc0NBQXNDLEdBQWdCO0FBQ3RELCtEQUErRDtBQUNMO0FBQ0s7QUFDL0Q7Ozs7Ozs7Q0FPQyxHQUFVLFNBQVNFLFFBQVFDLElBQUk7SUFDNUIsT0FBT0EsS0FBS0MsT0FBTyxDQUFDLFlBQVk7QUFDcEM7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FpQkMsR0FBVSxlQUFlQyxjQUFjQyxTQUFTLEVBQUVDLFFBQVEsU0FBUyxFQUFFQyxPQUFPO0lBQ3pFLHdCQUF3QjtJQUN4QixNQUFNQyxpQkFBaUIsQ0FBQ0QsU0FBU0Msa0JBQWtCRCxRQUFRQyxjQUFjLElBQUksSUFBSSxTQUFTRCxRQUFRQyxjQUFjO0lBQ2hILElBQUlDLFVBQVVDO0lBQ2QsTUFBTUMsUUFBUUMsSUFBSSxDQUFDO1FBQ2ZDLGNBQWNSLFdBQVdFLFNBQVNPO1FBQ2xDLElBQUlILFFBQVEsQ0FBQ0ksR0FBR0M7WUFDWlAsVUFBVVEsV0FBVztnQkFDakJELE9BQU8sSUFBSUUsTUFBTSxDQUFDLG9DQUFvQyxFQUFFYixVQUFVLFNBQVMsRUFBRWMsZ0JBQWdCWCxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ25ILEdBQUdBO1FBQ1A7S0FDSDtJQUNELElBQUlDLFNBQVM7UUFDVFcsYUFBYVg7SUFDakI7SUFDQSxNQUFNWSxnQkFBZ0JwQixRQUFRSTtJQUM5QixNQUFNaUIsWUFBWUMsTUFBTSxDQUFDRixjQUFjO0lBQ3ZDLElBQUksQ0FBQ0csa0JBQWtCRixZQUFZO1FBQy9CLE1BQU1HLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRUosY0FBYyxxQ0FBcUMsQ0FBQztRQUN6RkssUUFBUUQsS0FBSyxDQUFDQTtRQUNkLE1BQU0sSUFBSVAsTUFBTU87SUFDcEI7SUFDQUgsVUFBVUssSUFBSSxDQUFDQyxxQkFBd0JBLENBQUNDLE9BQU87SUFDL0MsTUFBTUMsVUFBVSxNQUFNUixVQUFVUyxHQUFHLENBQUN6QjtJQUNwQyxNQUFNMEIsU0FBU0Y7SUFDZixJQUFJLENBQUUsUUFBT0UsV0FBVyxRQUFPLEtBQU1BLFdBQVcsTUFBTTtRQUNsRCxNQUFNUCxRQUFRLENBQUMsY0FBYyxFQUFFcEIsVUFBVSx5Q0FBeUMsQ0FBQztRQUNuRnFCLFFBQVFELEtBQUssQ0FBQ0E7UUFDZCxNQUFNLElBQUlQLE1BQU1PO0lBQ3BCO0lBQ0EsT0FBT087QUFDWDtBQUNBOzs7Ozs7Q0FNQyxHQUFHLFNBQVNiLGdCQUFnQmMsRUFBRTtJQUMzQixJQUFJQSxLQUFLLE1BQU07UUFDWCxPQUFPLEdBQUdBLEdBQUcsYUFBYSxDQUFDO0lBQy9CLE9BQU8sSUFBSUEsS0FBSyxPQUFPO1FBQ25CLE9BQU8sR0FBR0MsS0FBS0MsS0FBSyxDQUFDRixLQUFLLE1BQU0sUUFBUSxDQUFDO0lBQzdDLE9BQU8sSUFBSUEsS0FBSyxTQUFTO1FBQ3JCLE9BQU8sR0FBR0MsS0FBS0MsS0FBSyxDQUFDRixLQUFLLE9BQU8sUUFBUSxDQUFDO0lBQzlDLE9BQU8sSUFBSUEsS0FBSyxVQUFVO1FBQ3RCLE9BQU8sR0FBR0MsS0FBS0MsS0FBSyxDQUFDRixLQUFLLFNBQVMsTUFBTSxDQUFDO0lBQzlDLE9BQU87UUFDSCxPQUFPLEdBQUdDLEtBQUtDLEtBQUssQ0FBQ0YsS0FBSyxVQUFVLEtBQUssQ0FBQztJQUM5QztBQUNKO0FBQ0E7Ozs7Ozs7Ozs7Q0FVQyxHQUFVLGVBQWVwQixjQUFjUixTQUFTLEVBQUVTLFNBQVM7SUFDeEQsSUFBSSxPQUFPVCxjQUFjLFlBQVlBLFVBQVUrQixJQUFJLEdBQUdDLE1BQU0sS0FBSyxHQUFHO1FBQ2hFLE1BQU1aLFFBQVE7UUFDZEMsUUFBUUQsS0FBSyxDQUFDQTtRQUNkLE1BQU0sSUFBSVAsTUFBTU87SUFDcEI7SUFDQSxNQUFNSixnQkFBZ0JwQixRQUFRSTtJQUM5QixJQUFJLENBQUNrQixNQUFNLENBQUNGLGNBQWMsRUFBRTtRQUN4QixNQUFNaUIsa0JBQWtCeEIsYUFBYSxNQUFNeUI7UUFDM0MsSUFBSSxDQUFDRCxnQkFBZ0JFLE9BQU8sQ0FBQ0MsY0FBYyxDQUFDcEMsWUFBWTtZQUNwRCxNQUFNb0IsUUFBUSxDQUFDLDJCQUEyQixFQUFFcEIsVUFBVSxpQ0FBaUMsQ0FBQztZQUN4RnFCLFFBQVFELEtBQUssQ0FBQ0E7WUFDZCxNQUFNLElBQUlQLE1BQU1PO1FBQ3BCO1FBQ0EsSUFBSWlCLE1BQU1KLGdCQUFnQkUsT0FBTyxDQUFDbkMsVUFBVTtRQUM1QyxJQUFJcUMsSUFBSUMsVUFBVSxDQUFDLE9BQU87WUFDdEJELE1BQU1uQixPQUFPcUIsT0FBTyxHQUFHRixJQUFJRyxTQUFTLENBQUM7UUFDekM7UUFDQSxNQUFNQyxlQUFlLENBQUMsQ0FBQ3ZCLE9BQU93QixZQUFZLENBQUNDLE9BQU8sQ0FBQyxDQUFDLG9CQUFvQixFQUFFM0MsV0FBVztRQUNyRixJQUFJO1lBQ0EsT0FBTyxNQUFNLElBQUlNLFFBQVEsQ0FBQ3NDLFNBQVNqQztnQkFDL0JrQyxXQUFXUixLQUFLTyxTQUFTakM7WUFDN0I7UUFDSixFQUFFLE9BQU9tQyxLQUFLO1lBQ1YsSUFBSUwsY0FBYztnQkFDZC9DLHdFQUFrQkEsQ0FBQztvQkFDZnFELE1BQU07b0JBQ05DLE9BQU9yRCw2RUFBa0JBLENBQUMsdUJBQXVCO29CQUNqRHNELGFBQWF0RCw2RUFBa0JBLENBQUMsc0JBQXNCLHFMQUFxTDt3QkFDdk8wQztvQkFDSjtvQkFDQWEsbUJBQW1CdkQsNkVBQWtCQSxDQUFDLGtCQUFrQjtvQkFDeER3RDt3QkFDSWpDLE9BQU9rQyxrQkFBa0IsQ0FBQ0MsY0FBYzt3QkFDeENuQyxPQUFPb0MsUUFBUSxDQUFDQyxNQUFNO29CQUMxQjtnQkFDSjtZQUNKO1lBQ0EsT0FBT2pELFFBQVFLLE1BQU0sQ0FBQ21DO1FBQzFCO0lBQ0o7SUFDQSxPQUFPeEMsUUFBUXNDLE9BQU87QUFDMUI7QUFDQTs7Ozs7O0NBTUMsR0FBVSxlQUFlVjtJQUN0QixPQUFPaEIsT0FBT2tDLGtCQUFrQixDQUFDSSxpQkFBaUI7QUFDdEQ7QUFDQSxTQUFTckMsa0JBQWtCc0MsQ0FBQztJQUN4QixPQUFPLE9BQU9BLE1BQU0sWUFBWUEsTUFBTSxRQUFRLFVBQVVBLEtBQUssT0FBT0EsQ0FBQyxDQUFDLE9BQU8sS0FBSyxjQUFjLFNBQVNBLEtBQUssT0FBT0EsQ0FBQyxDQUFDLE1BQU0sS0FBSztBQUN0STtBQUNBLG9DQUFvQztBQUNwQywwRkFBMEY7QUFDMUYsZ0NBQWdDO0FBQ2hDLE1BQU1DLHlCQUF5QkMsT0FBTztBQUN0Qzs7Q0FFQyxHQUFHLFNBQVNkLFdBQVdSLEdBQUcsRUFBRU8sT0FBTyxFQUFFakMsTUFBTTtJQUN4QyxNQUFNaUQsZ0JBQWdCQyxTQUFTQyxJQUFJLENBQUNDLGFBQWEsQ0FBQyxDQUFDLFlBQVksRUFBRTFCLElBQUksRUFBRSxDQUFDO0lBQ3hFLElBQUkyQixnQkFBZ0I5QyxNQUFNLENBQUN3Qyx1QkFBdUI7SUFDbEQsSUFBSSxDQUFDTSxlQUFlO1FBQ2hCQSxnQkFBZ0I5QyxNQUFNLENBQUN3Qyx1QkFBdUIsR0FBRyxJQUFJTyxJQUFJLEVBQUU7SUFDL0Q7SUFDQSxJQUFJLENBQUNMLGVBQWU7UUFDaEJJLGNBQWNFLEdBQUcsQ0FBQzdCO1FBQ2xCLE1BQU04QixVQUFVTixTQUFTTyxhQUFhLENBQUM7UUFDdkNELFFBQVFFLEdBQUcsR0FBR2hDO1FBQ2Q4QixRQUFRRyxJQUFJLEdBQUc7UUFDZkgsUUFBUUksS0FBSyxHQUFHO1FBQ2hCLDZFQUE2RTtRQUM3RSxNQUFNQyxjQUFjNUQsV0FBVztZQUMzQlMsUUFBUUQsS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFaUIsSUFBSSx3SkFBd0osQ0FBQztRQUNoTSxHQUFHLE9BQU8sK0JBQStCO1FBQ3pDLElBQUlvQyxRQUFRQyxPQUFPQztRQUNuQkEsc0JBQXNCO1lBQ2xCNUQsYUFBYXlEO1lBQ2JSLGNBQWNZLE1BQU0sQ0FBQ3ZDO1lBQ3JCLElBQUlvQyxRQUFRO2dCQUNSTixRQUFRVSxtQkFBbUIsQ0FBQyxRQUFRSjtZQUN4QztZQUNBLElBQUlDLE9BQU87Z0JBQ1BQLFFBQVFVLG1CQUFtQixDQUFDLFNBQVNIO1lBQ3pDO1FBQ0o7UUFDQUQsU0FBUztZQUNMRTtZQUNBL0IsUUFBUTtRQUNaO1FBQ0E4QixRQUFRLENBQUNJO1lBQ0xIO1lBQ0EsTUFBTUksTUFBTSxDQUFDLDJCQUEyQixFQUFFMUMsS0FBSztZQUMvQ2hCLFFBQVFELEtBQUssQ0FBQzJELEtBQUtEO1lBQ25CbkUsT0FBT21FLEdBQUdFLE9BQU8sSUFBSUQ7UUFDekI7UUFDQVosUUFBUWMsZ0JBQWdCLENBQUMsUUFBUVI7UUFDakNOLFFBQVFjLGdCQUFnQixDQUFDLFNBQVNQO1FBQ2xDYixTQUFTQyxJQUFJLENBQUNvQixXQUFXLENBQUNmO0lBQzlCLE9BQU87UUFDSCxJQUFJSCxjQUFjbUIsR0FBRyxDQUFDOUMsTUFBTTtZQUN4QixJQUFJb0MsUUFBUUMsT0FBT0M7WUFDbkJBLHNCQUFzQjtnQkFDbEIsSUFBSUYsUUFBUTtvQkFDUmIsY0FBY2lCLG1CQUFtQixDQUFDLFFBQVFKO2dCQUM5QztnQkFDQSxJQUFJQyxPQUFPO29CQUNQZCxjQUFjaUIsbUJBQW1CLENBQUMsU0FBU0g7Z0JBQy9DO1lBQ0o7WUFDQUQsU0FBUztnQkFDTEU7Z0JBQ0EvQixRQUFRO1lBQ1o7WUFDQSxtQ0FBbUM7WUFDbkM4QixRQUFRLENBQUNJO2dCQUNMSDtnQkFDQWhFLE9BQU9tRSxHQUFHRSxPQUFPO1lBQ3JCO1lBQ0FwQixjQUFjcUIsZ0JBQWdCLENBQUMsUUFBUVI7WUFDdkNiLGNBQWNxQixnQkFBZ0IsQ0FBQyxTQUFTUDtRQUM1QyxPQUFPO1lBQ0hyRCxRQUFRK0QsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFL0MsSUFBSSxzQ0FBc0MsQ0FBQztZQUNyRU8sUUFBUTtRQUNaO0lBQ0o7QUFDSiIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1keW5hbWljLWxvYWRpbmcvZGlzdC9keW5hbWljLWxvYWRpbmcuanM/ZWNkZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgRHluYW1pYyBMb2FkaW5nICovICd1c2Ugc3RyaWN0Jztcbi8vIGhhY2sgdG8gbWFrZSB0aGUgdHlwZXMgZGVmaW5lZCBpbiBlc20tZ2xvYmFscyBhdmFpbGFibGUgaGVyZVxuaW1wb3J0IHsgZGlzcGF0Y2hUb2FzdFNob3duIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1nbG9iYWxzXCI7XG5pbXBvcnQgeyBnZXRDb3JlVHJhbnNsYXRpb24gfSBmcm9tIFwiQG9wZW5tcnMvZXNtLXRyYW5zbGF0aW9uc1wiO1xuLyoqXG4gKiBAaW50ZXJuYWxcbiAqXG4gKiBUcmFuc2Zvcm1zIGFuIEVTTSBtb2R1bGUgbmFtZSB0byBhIHZhbGlkIEpTIGlkZW50aWZpZXJcbiAqXG4gKiBAcGFyYW0gbmFtZSB0aGUgbmFtZSBvZiBhIG1vZHVsZVxuICogQHJldHVybnMgQW4gb3BhcXVlLCBlcXVpdmFsZW50IEpTIGlkZW50aWZpZXIgZm9yIHRoZSBtb2R1bGVcbiAqLyBleHBvcnQgZnVuY3Rpb24gc2x1Z2lmeShuYW1lKSB7XG4gICAgcmV0dXJuIG5hbWUucmVwbGFjZSgvW1xcL1xcLUBdL2csICdfJyk7XG59XG4vKipcbiAqIExvYWRzIHRoZSBuYW1lZCBleHBvcnQgZnJvbSBhIG5hbWVkIHBhY2thZ2UuIFRoaXMgbWlnaHQgYmUgdXNlZCBsaWtlOlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCB7IHNvbWVDb21wb25lbnQgfSA9IGltcG9ydER5bmFtaWMoXCJAb3Blbm1ycy9lc20tdGVtcGxhdGUtYXBwXCIpXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ganNQYWNrYWdlIFRoZSBwYWNrYWdlIHRvIGxvYWQgdGhlIGV4cG9ydCBmcm9tLlxuICogQHBhcmFtIHNoYXJlIEluZGljYXRlcyB0aGUgbmFtZSBvZiB0aGUgc2hhcmVkIG1vZHVsZTsgdGhpcyBpcyBhbiBhZHZhbmNlZCBmZWF0dXJlIGlmIHRoZSBwYWNrYWdlIHlvdSBhcmUgbG9hZGluZ1xuICogICBkb2Vzbid0IHVzZSB0aGUgZGVmYXVsdCBPcGVuTVJTIHNoYXJlZCBtb2R1bGUgbmFtZSBcIi4vc3RhcnRcIi5cbiAqIEBwYXJhbSBvcHRpb25zIEFkZGl0aW9uYWwgb3B0aW9ucyB0byBjb250cm9sIGxvYWRpbmcgdGhpcyBzY3JpcHQuXG4gKiBAcGFyYW0gb3B0aW9ucy5pbXBvcnRNYXAgVGhlIGltcG9ydCBtYXAgdG8gdXNlIHRvIGxvYWQgdGhlIHNjcmlwdC4gVGhpcyBpcyB1c2VmdWwgZm9yIHNpdHVhdGlvbnMgd2hlcmUgeW91J3JlXG4gKiAgIGxvYWRpbmcgbXVsdGlwbGUgc2NyaXB0cyBhdCBhIHRpbWUsIHNpbmNlIGl0IGFsbG93cyB0aGUgY2FsbGluZyBjb2RlIHRvIHN1cHBseSBhbiBpbXBvcnRNYXAsIHNhdmluZyBtdWx0aXBsZVxuICogICBjYWxscyB0byBgZ2V0Q3VycmVudEltcG9ydE1hcCgpYC5cbiAqIEBwYXJhbSBvcHRpb25zLm1heExvYWRpbmdUaW1lIEEgcG9zaXRpdmUgaW50ZWdlciByZXByZXNlbnRpbmcgdGhlIG1heGltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IGZvciB0aGVcbiAqICAgc2NyaXB0IHRvIGxvYWQgYmVmb3JlIHRoZSBwcm9taXNlIHJldHVybmVkIGZyb20gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlamVjdGVkLiBEZWZhdWx0cyB0byA2MDAsMDAwIG1pbGxpc2Vjb25kcyxcbiAqICAgaS5lLiwgMTAgbWludXRlcy5cbiAqLyBleHBvcnQgYXN5bmMgZnVuY3Rpb24gaW1wb3J0RHluYW1pYyhqc1BhY2thZ2UsIHNoYXJlID0gJy4vc3RhcnQnLCBvcHRpb25zKSB7XG4gICAgLy8gZGVmYXVsdCB0byAxMCBtaW51dGVzXG4gICAgY29uc3QgbWF4TG9hZGluZ1RpbWUgPSAhb3B0aW9ucz8ubWF4TG9hZGluZ1RpbWUgfHwgb3B0aW9ucy5tYXhMb2FkaW5nVGltZSA8PSAwID8gNjAwMDAwIDogb3B0aW9ucy5tYXhMb2FkaW5nVGltZTtcbiAgICBsZXQgdGltZW91dCA9IHVuZGVmaW5lZDtcbiAgICBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBwcmVsb2FkSW1wb3J0KGpzUGFja2FnZSwgb3B0aW9ucz8uaW1wb3J0TWFwKSxcbiAgICAgICAgbmV3IFByb21pc2UoKF8sIHJlamVjdCk9PntcbiAgICAgICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgQ291bGQgbm90IHJlc29sdmUgcmVxdWVzdGVkIHNjcmlwdCwgJHtqc1BhY2thZ2V9LCB3aXRoaW4gJHtodW1hblJlYWRhYmxlTXMobWF4TG9hZGluZ1RpbWUpfS5gKSk7XG4gICAgICAgICAgICB9LCBtYXhMb2FkaW5nVGltZSk7XG4gICAgICAgIH0pXG4gICAgXSk7XG4gICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgIH1cbiAgICBjb25zdCBqc1BhY2thZ2VTbHVnID0gc2x1Z2lmeShqc1BhY2thZ2UpO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHdpbmRvd1tqc1BhY2thZ2VTbHVnXTtcbiAgICBpZiAoIWlzRmVkZXJhdGVkTW9kdWxlKGNvbnRhaW5lcikpIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBgVGhlIGdsb2JhbCB2YXJpYWJsZSAke2pzUGFja2FnZVNsdWd9IGRvZXMgbm90IHJlZmVyIHRvIGEgZmVkZXJhdGVkIG1vZHVsZWA7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgICBjb250YWluZXIuaW5pdChfX3dlYnBhY2tfc2hhcmVfc2NvcGVzX18uZGVmYXVsdCk7XG4gICAgY29uc3QgZmFjdG9yeSA9IGF3YWl0IGNvbnRhaW5lci5nZXQoc2hhcmUpO1xuICAgIGNvbnN0IG1vZHVsZSA9IGZhY3RvcnkoKTtcbiAgICBpZiAoISh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JykgfHwgbW9kdWxlID09PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gYENvbnRhaW5lciBmb3IgJHtqc1BhY2thZ2V9IGRpZCBub3QgcmV0dXJuIGFuIEVTTSBtb2R1bGUgYXMgZXhwZWN0ZWRgO1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcbiAgICB9XG4gICAgcmV0dXJuIG1vZHVsZTtcbn1cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiB0byBjb252ZXJ0IG1pbGxpc2Vjb25kcyBpbnRvIGh1bWFuLXJlYWRhYmxlIHN0cmluZ3Mgd2l0aCByYXRoZXIgYWJzdXJkXG4gKiBsZXZlbHMgb2YgcHJlY2lzaW9uLlxuICpcbiAqIEBwYXJhbSBtcyBOdW1iZXIgb2YgbWlsbGlzZWNvbmRzXG4gKiBAcmV0dXJucyBBIGh1bWFuLXJlYWRhYmxlIHN0cmluZyB1c2VmdWwgb25seSBmb3IgZXJyb3IgbG9nZ2luZywgd2hlcmUgd2UgY2FuIGFzc3VtZSBFbmdsaXNoXG4gKi8gZnVuY3Rpb24gaHVtYW5SZWFkYWJsZU1zKG1zKSB7XG4gICAgaWYgKG1zIDwgMTAwMCkge1xuICAgICAgICByZXR1cm4gYCR7bXN9IG1pbGxpc2Vjb25kc2A7XG4gICAgfSBlbHNlIGlmIChtcyA8IDYwMDAwKSB7XG4gICAgICAgIHJldHVybiBgJHtNYXRoLmZsb29yKG1zIC8gMTAwMCl9IHNlY29uZHNgO1xuICAgIH0gZWxzZSBpZiAobXMgPCAzNjAwMDAwKSB7XG4gICAgICAgIHJldHVybiBgJHtNYXRoLmZsb29yKG1zIC8gNjAwMDApfSBtaW51dGVzYDtcbiAgICB9IGVsc2UgaWYgKG1zIDwgODY0MDAwMDApIHtcbiAgICAgICAgcmV0dXJuIGAke01hdGguZmxvb3IobXMgLyAzNjAwMDAwKX0gaG91cnNgO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBgJHtNYXRoLmZsb29yKG1zIC8gODY0MDAwMDApfSBkYXlzYDtcbiAgICB9XG59XG4vKipcbiAqIEBpbnRlcm5hbFxuICpcbiAqIFRoaXMgaW50ZXJuYWwgbWV0aG9kIGlzIHVzZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHNjcmlwdCBiZWxvbmdpbmdcbiAqIHRvIHRoZSBnaXZlbiBwYWNrYWdlIGlzIGxvYWRlZCBhbmQgYWRkZWQgdG8gdGhlIGhlYWQuXG4gKlxuICogQHBhcmFtIGpzUGFja2FnZSBUaGUgcGFja2FnZSB0byBsb2FkXG4gKiBAcGFyYW0gaW1wb3J0TWFwIFRoZSBpbXBvcnQgbWFwIHRvIHVzZSBmb3IgbG9hZGluZyB0aGlzIHBhY2thZ2UuXG4gKiAgVGhlIG1haW4gcmVhc29uIGZvciBzcGVjaWZ5aW5nIHRoaXMgaXMgdG8gYXZvaWQgbmVlZGluZyB0byBjYWxsXG4gKiAgYGdldEN1cnJlbnRQYWdlTWFwKClgIGZvciBldmVyeSBzY3JpcHQgd2hlbiBidWxrIGxvYWRpbmcuXG4gKi8gZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByZWxvYWRJbXBvcnQoanNQYWNrYWdlLCBpbXBvcnRNYXApIHtcbiAgICBpZiAodHlwZW9mIGpzUGFja2FnZSAhPT0gJ3N0cmluZycgfHwganNQYWNrYWdlLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSAnQXR0ZW1wdGVkIHRvIGNhbGwgaW1wb3J0RHluYW1pYygpIHdpdGhvdXQgc3VwcGx5aW5nIGEgcGFja2FnZSB0byBsb2FkJztcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XG4gICAgfVxuICAgIGNvbnN0IGpzUGFja2FnZVNsdWcgPSBzbHVnaWZ5KGpzUGFja2FnZSk7XG4gICAgaWYgKCF3aW5kb3dbanNQYWNrYWdlU2x1Z10pIHtcbiAgICAgICAgY29uc3QgYWN0aXZlSW1wb3J0TWFwID0gaW1wb3J0TWFwID8/IGF3YWl0IGdldEN1cnJlbnRJbXBvcnRNYXAoKTtcbiAgICAgICAgaWYgKCFhY3RpdmVJbXBvcnRNYXAuaW1wb3J0cy5oYXNPd25Qcm9wZXJ0eShqc1BhY2thZ2UpKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvciA9IGBDb3VsZCBub3QgZmluZCB0aGUgcGFja2FnZSAke2pzUGFja2FnZX0gZGVmaW5lZCBpbiB0aGUgY3VycmVudCBpbXBvcnRtYXBgO1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIGxldCB1cmwgPSBhY3RpdmVJbXBvcnRNYXAuaW1wb3J0c1tqc1BhY2thZ2VdO1xuICAgICAgICBpZiAodXJsLnN0YXJ0c1dpdGgoJy4vJykpIHtcbiAgICAgICAgICAgIHVybCA9IHdpbmRvdy5zcGFCYXNlICsgdXJsLnN1YnN0cmluZygxKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc092ZXJyaWRkZW4gPSAhIXdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShgaW1wb3J0LW1hcC1vdmVycmlkZToke2pzUGFja2FnZX1gKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+e1xuICAgICAgICAgICAgICAgIGxvYWRTY3JpcHQodXJsLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgaWYgKGlzT3ZlcnJpZGRlbikge1xuICAgICAgICAgICAgICAgIGRpc3BhdGNoVG9hc3RTaG93bih7XG4gICAgICAgICAgICAgICAgICAgIGtpbmQ6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBnZXRDb3JlVHJhbnNsYXRpb24oJ3NjcmlwdExvYWRpbmdGYWlsZWQnLCAnRXJyb3I6IFNjcmlwdCBmYWlsZWQgdG8gbG9hZCcpLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0Q29yZVRyYW5zbGF0aW9uKCdzY3JpcHRMb2FkaW5nRXJyb3InLCAnRmFpbGVkIHRvIGxvYWQgb3ZlcnJpZGRlbiBzY3JpcHQgZnJvbSB7ey0gdXJsfX0uIFBsZWFzZSBjaGVjayB0aGF0IHRoZSBidW5kbGVkIHNjcmlwdCBpcyBhdmFpbGFibGUgYXQgdGhlIGV4cGVjdGVkIFVSTC4gQ2xpY2sgdGhlIGJ1dHRvbiBiZWxvdyB0byByZXNldCBhbGwgaW1wb3J0IG1hcCBvdmVycmlkZXMuJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXJsXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBhY3Rpb25CdXR0b25MYWJlbDogZ2V0Q29yZVRyYW5zbGF0aW9uKCdyZXNldE92ZXJyaWRlcycsICdSZXNldCBvdmVycmlkZXMnKSxcbiAgICAgICAgICAgICAgICAgICAgb25BY3Rpb25CdXR0b25DbGljayAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuaW1wb3J0TWFwT3ZlcnJpZGVzLnJlc2V0T3ZlcnJpZGVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbn1cbi8qKlxuICogQGludGVybmFsXG4gKlxuICogVXNlZCB0byBsb2FkIHRoZSBjdXJyZW50IGltcG9ydCBtYXBcbiAqXG4gKiBAcmV0dXJucyBUaGUgY3VycmVudCBwYWdlIG1hcFxuICovIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDdXJyZW50SW1wb3J0TWFwKCkge1xuICAgIHJldHVybiB3aW5kb3cuaW1wb3J0TWFwT3ZlcnJpZGVzLmdldEN1cnJlbnRQYWdlTWFwKCk7XG59XG5mdW5jdGlvbiBpc0ZlZGVyYXRlZE1vZHVsZShhKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBhID09PSAnb2JqZWN0JyAmJiBhICE9PSBudWxsICYmICdpbml0JyBpbiBhICYmIHR5cGVvZiBhWydpbml0J10gPT09ICdmdW5jdGlvbicgJiYgJ2dldCcgaW4gYSAmJiB0eXBlb2YgYVsnZ2V0J10gPT09ICdmdW5jdGlvbic7XG59XG4vLyBpbnRlcm5hbHMgdG8gdHJhY2sgc2NyaXB0IGxvYWRpbmdcbi8vIGJhc2ljYWxseSwgaWYgd2UncmUgYWxyZWFkeSBsb2FkaW5nIGEgc2NyaXB0LCB3ZSBzaG91bGQgd2FpdCB1bnRpbCB0aGUgc2NyaXB0IGlzIGxvYWRlZFxuLy8gd2UgdXNlIGEgZ2xvYmFsIHRvIHRyYWNrIHRoaXNcbmNvbnN0IE9QRU5NUlNfU0NSSVBUX0xPQURJTkcgPSBTeW1ib2woJ19fb3Blbm1yc19zY3JpcHRfbG9hZGluZycpO1xuLyoqXG4gKiBBcHBlbmRzIGEgYDxzY3JpcHQ+YCB0byB0aGUgRE9NIHdpdGggdGhlIGdpdmVuIFVSTC5cbiAqLyBmdW5jdGlvbiBsb2FkU2NyaXB0KHVybCwgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgY29uc3Qgc2NyaXB0RWxlbWVudCA9IGRvY3VtZW50LmhlYWQucXVlcnlTZWxlY3Rvcihgc2NyaXB0W3NyYz1cIiR7dXJsfVwiXWApO1xuICAgIGxldCBzY3JpcHRMb2FkaW5nID0gd2luZG93W09QRU5NUlNfU0NSSVBUX0xPQURJTkddO1xuICAgIGlmICghc2NyaXB0TG9hZGluZykge1xuICAgICAgICBzY3JpcHRMb2FkaW5nID0gd2luZG93W09QRU5NUlNfU0NSSVBUX0xPQURJTkddID0gbmV3IFNldChbXSk7XG4gICAgfVxuICAgIGlmICghc2NyaXB0RWxlbWVudCkge1xuICAgICAgICBzY3JpcHRMb2FkaW5nLmFkZCh1cmwpO1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICAgIGVsZW1lbnQuc3JjID0gdXJsO1xuICAgICAgICBlbGVtZW50LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcbiAgICAgICAgZWxlbWVudC5hc3luYyA9IHRydWU7XG4gICAgICAgIC8vIGxvYWRUaW1lKCkgZGlzcGxheXMgYW4gZXJyb3IgaWYgYSBzY3JpcHQgdGFrZXMgbW9yZSB0aGFuIDUgc2Vjb25kcyB0byBsb2FkXG4gICAgICAgIGNvbnN0IGxvYWRUaW1lb3V0ID0gc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgVGhlIHNjcmlwdCBhdCAke3VybH0gZGlkIG5vdCBsb2FkIHdpdGhpbiA1IHNlY29uZHMuIFRoaXMgbWF5IGluZGljYXRlIGFuIGlzc3VlIHdpdGggdGhlIGltcG9ydHMgaW4gdGhlIHNjcmlwdCdzIGVudHJ5LXBvaW50IGZpbGUgb3Igd2l0aCB0aGUgc2NyaXB0J3MgYnVuZGxlciBjb25maWd1cmF0aW9uLmApO1xuICAgICAgICB9LCA1MDAwKTsgLy8gNSBzZWNvbmRzOyB0aGlzIGlzIGFyYml0cmFyeVxuICAgICAgICBsZXQgbG9hZEZuLCBlcnJGbiwgZmluaXNoU2NyaXB0TG9hZGluZztcbiAgICAgICAgZmluaXNoU2NyaXB0TG9hZGluZyA9ICgpPT57XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQobG9hZFRpbWVvdXQpO1xuICAgICAgICAgICAgc2NyaXB0TG9hZGluZy5kZWxldGUodXJsKTtcbiAgICAgICAgICAgIGlmIChsb2FkRm4pIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBsb2FkRm4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVyckZuKSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIGVyckZuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgbG9hZEZuID0gKCk9PntcbiAgICAgICAgICAgIGZpbmlzaFNjcmlwdExvYWRpbmcoKTtcbiAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgIH07XG4gICAgICAgIGVyckZuID0gKGV2KT0+e1xuICAgICAgICAgICAgZmluaXNoU2NyaXB0TG9hZGluZygpO1xuICAgICAgICAgICAgY29uc3QgbXNnID0gYEZhaWxlZCB0byBsb2FkIHNjcmlwdCBmcm9tICR7dXJsfWA7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKG1zZywgZXYpO1xuICAgICAgICAgICAgcmVqZWN0KGV2Lm1lc3NhZ2UgPz8gbXNnKTtcbiAgICAgICAgfTtcbiAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgbG9hZEZuKTtcbiAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGVyckZuKTtcbiAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc2NyaXB0TG9hZGluZy5oYXModXJsKSkge1xuICAgICAgICAgICAgbGV0IGxvYWRGbiwgZXJyRm4sIGZpbmlzaFNjcmlwdExvYWRpbmc7XG4gICAgICAgICAgICBmaW5pc2hTY3JpcHRMb2FkaW5nID0gKCk9PntcbiAgICAgICAgICAgICAgICBpZiAobG9hZEZuKSB7XG4gICAgICAgICAgICAgICAgICAgIHNjcmlwdEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRGbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChlcnJGbikge1xuICAgICAgICAgICAgICAgICAgICBzY3JpcHRFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyRm4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBsb2FkRm4gPSAoKT0+e1xuICAgICAgICAgICAgICAgIGZpbmlzaFNjcmlwdExvYWRpbmcoKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8vIHRoaXMgZXJyRm4gZG9lcyBub3QgbG9nIGFueXRoaW5nXG4gICAgICAgICAgICBlcnJGbiA9IChldik9PntcbiAgICAgICAgICAgICAgICBmaW5pc2hTY3JpcHRMb2FkaW5nKCk7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGV2Lm1lc3NhZ2UpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHNjcmlwdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRGbik7XG4gICAgICAgICAgICBzY3JpcHRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyRm4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBTY3JpcHQgYXQgJHt1cmx9IGFscmVhZHkgbG9hZGVkLiBOb3QgbG9hZGluZyBpdCBhZ2Fpbi5gKTtcbiAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXSwibmFtZXMiOlsiZGlzcGF0Y2hUb2FzdFNob3duIiwiZ2V0Q29yZVRyYW5zbGF0aW9uIiwic2x1Z2lmeSIsIm5hbWUiLCJyZXBsYWNlIiwiaW1wb3J0RHluYW1pYyIsImpzUGFja2FnZSIsInNoYXJlIiwib3B0aW9ucyIsIm1heExvYWRpbmdUaW1lIiwidGltZW91dCIsInVuZGVmaW5lZCIsIlByb21pc2UiLCJyYWNlIiwicHJlbG9hZEltcG9ydCIsImltcG9ydE1hcCIsIl8iLCJyZWplY3QiLCJzZXRUaW1lb3V0IiwiRXJyb3IiLCJodW1hblJlYWRhYmxlTXMiLCJjbGVhclRpbWVvdXQiLCJqc1BhY2thZ2VTbHVnIiwiY29udGFpbmVyIiwid2luZG93IiwiaXNGZWRlcmF0ZWRNb2R1bGUiLCJlcnJvciIsImNvbnNvbGUiLCJpbml0IiwiX193ZWJwYWNrX3NoYXJlX3Njb3Blc19fIiwiZGVmYXVsdCIsImZhY3RvcnkiLCJnZXQiLCJtb2R1bGUiLCJtcyIsIk1hdGgiLCJmbG9vciIsInRyaW0iLCJsZW5ndGgiLCJhY3RpdmVJbXBvcnRNYXAiLCJnZXRDdXJyZW50SW1wb3J0TWFwIiwiaW1wb3J0cyIsImhhc093blByb3BlcnR5IiwidXJsIiwic3RhcnRzV2l0aCIsInNwYUJhc2UiLCJzdWJzdHJpbmciLCJpc092ZXJyaWRkZW4iLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwicmVzb2x2ZSIsImxvYWRTY3JpcHQiLCJlcnIiLCJraW5kIiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsImFjdGlvbkJ1dHRvbkxhYmVsIiwib25BY3Rpb25CdXR0b25DbGljayIsImltcG9ydE1hcE92ZXJyaWRlcyIsInJlc2V0T3ZlcnJpZGVzIiwibG9jYXRpb24iLCJyZWxvYWQiLCJnZXRDdXJyZW50UGFnZU1hcCIsImEiLCJPUEVOTVJTX1NDUklQVF9MT0FESU5HIiwiU3ltYm9sIiwic2NyaXB0RWxlbWVudCIsImRvY3VtZW50IiwiaGVhZCIsInF1ZXJ5U2VsZWN0b3IiLCJzY3JpcHRMb2FkaW5nIiwiU2V0IiwiYWRkIiwiZWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJzcmMiLCJ0eXBlIiwiYXN5bmMiLCJsb2FkVGltZW91dCIsImxvYWRGbiIsImVyckZuIiwiZmluaXNoU2NyaXB0TG9hZGluZyIsImRlbGV0ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJldiIsIm1zZyIsIm1lc3NhZ2UiLCJhZGRFdmVudExpc3RlbmVyIiwiYXBwZW5kQ2hpbGQiLCJoYXMiLCJ3YXJuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-dynamic-loading/dist/dynamic-loading.js\n");
329
329
 
330
330
  /***/ }),
331
331
 
@@ -1305,7 +1305,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1305
1305
  \**********************************************************/
1306
1306
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
1307
1307
 
1308
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ __cleanup: () => (/* binding */ __cleanup),\n/* harmony export */ useSession: () => (/* binding */ useSession)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-api */ \"../../framework/esm-api/dist/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/** @module @category API */ \n\nlet promise;\n/**\n * Gets the current user session information. Returns an object with\n * property `authenticated` == `false` if the user is not logged in.\n *\n * Uses Suspense. This hook will always either return a Session object\n * or throw for Suspense. It will never return `null`/`undefined`.\n *\n * @returns Current user session information\n */ function useSession() {\n // We have two separate variables for the session.\n //\n // `session` is a temporary variable, which starts as `null` every time this\n // hook is executed. It is important that we can set and return this\n // variable synchronously, because every time we `throw` for Suspense, this\n // hook will unmount and a new instance will be created, destroying whatever\n // state existed. Thus, if this hook were to try to always set and return\n // `stateSession`, it would cause an infinite loop:\n // 1. instance A mounts\n // 2. instance A receives value, calls `setStateSession`\n // 3. instance A throws\n // 4. instance A unmounts\n // 5. instance B mounts\n // ...\n // What would happen if we moved `session` to the module scope, so that it\n // could be re-used across instances of this hook? Then we would have no way\n // to tell whether the session was fresh.\n //\n // `stateSession` is React state, which is needed to update components using\n // this hook when the session changes.\n const unsubscribe = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)();\n const [stateSession, setStateSession] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n let session = null;\n if (!stateSession) {\n if (!promise) {\n // If we haven't created a promise to throw yet, do that.\n // current-user.ts handles the initial session fetch as soon as `getSessionStore()`\n // is called. We just need to call it and set up a listener for when session data\n // is loaded. As soon as we have the initial session data, we remove this initial\n // store subscription so we can set up the \"ongoing\" one later.\n promise = new Promise((resolve)=>{\n const handleNewSession = ({ loaded, session: newSession })=>{\n if (loaded) {\n resolve(newSession);\n session = newSession;\n unsubscribe.current && unsubscribe.current();\n unsubscribe.current = undefined;\n }\n };\n handleNewSession((0,_openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getSessionStore)().getState());\n if (!session) {\n unsubscribe.current = (0,_openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getSessionStore)().subscribe(handleNewSession);\n }\n });\n } else {\n // However, if we have created a promise to throw, but there's no `stateSession`\n // yet, then it's probably just this hook's first render. Check to see if\n // there's already a session that we can return.\n const currentState = (0,_openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getSessionStore)().getState();\n if (currentState.loaded) {\n session = currentState.session;\n }\n }\n // If the session got set synchronously in the above block, then we can just\n // return it rather than throwing. Otherwise, throw for Suspense.\n if (session) {\n setStateSession(session);\n } else {\n throw promise;\n }\n }\n // Once this hook is established (no longer throwing and getting re-created)\n // we need to set up a subscription that will update its value the good\n // old-fashioned React way. We are re-using the `unsubscribe` ref from the\n // initial subscription, which should have been vacated by the first time we\n // get here.\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (!unsubscribe.current) {\n unsubscribe.current = (0,_openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getSessionStore)().subscribe(({ loaded, session: newSession })=>{\n if (loaded) {\n session = newSession;\n setStateSession(newSession);\n }\n });\n }\n return ()=>{\n unsubscribe.current && unsubscribe.current();\n unsubscribe.current = undefined;\n };\n }, []);\n const result = stateSession || session;\n if (!result) {\n if (promise) {\n console.warn('useSession is in an unexpected state. Attempting to recover.');\n throw promise;\n } else {\n throw Error('useSession is in an invalid state.');\n }\n }\n return result;\n}\n/**\n * For testing.\n */ function __cleanup() {\n promise = undefined;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9kaXN0L3VzZVNlc3Npb24uanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLDBCQUEwQixHQUFzRDtBQUM1QjtBQUNwRCxJQUFJSTtBQUNKOzs7Ozs7OztDQVFDLEdBQVUsU0FBU0M7SUFDaEIsa0RBQWtEO0lBQ2xELEVBQUU7SUFDRiw0RUFBNEU7SUFDNUUsb0VBQW9FO0lBQ3BFLDJFQUEyRTtJQUMzRSw0RUFBNEU7SUFDNUUseUVBQXlFO0lBQ3pFLG1EQUFtRDtJQUNuRCx5QkFBeUI7SUFDekIsMERBQTBEO0lBQzFELHlCQUF5QjtJQUN6QiwyQkFBMkI7SUFDM0IseUJBQXlCO0lBQ3pCLFFBQVE7SUFDUiwwRUFBMEU7SUFDMUUsNEVBQTRFO0lBQzVFLHlDQUF5QztJQUN6QyxFQUFFO0lBQ0YsNEVBQTRFO0lBQzVFLHNDQUFzQztJQUN0QyxNQUFNQyxjQUFjSCw2Q0FBTUE7SUFDMUIsTUFBTSxDQUFDSSxjQUFjQyxnQkFBZ0IsR0FBR1AsK0NBQVFBLENBQUM7SUFDakQsSUFBSVEsVUFBVTtJQUNkLElBQUksQ0FBQ0YsY0FBYztRQUNmLElBQUksQ0FBQ0gsU0FBUztZQUNWLHlEQUF5RDtZQUN6RCxtRkFBbUY7WUFDbkYsaUZBQWlGO1lBQ2pGLGlGQUFpRjtZQUNqRiwrREFBK0Q7WUFDL0RBLFVBQVUsSUFBSU0sUUFBUSxDQUFDQztnQkFDbkIsTUFBTUMsbUJBQW1CLENBQUMsRUFBRUMsTUFBTSxFQUFFSixTQUFTSyxVQUFVLEVBQUU7b0JBQ3JELElBQUlELFFBQVE7d0JBQ1JGLFFBQVFHO3dCQUNSTCxVQUFVSzt3QkFDVlIsWUFBWVMsT0FBTyxJQUFJVCxZQUFZUyxPQUFPO3dCQUMxQ1QsWUFBWVMsT0FBTyxHQUFHQztvQkFDMUI7Z0JBQ0o7Z0JBQ0FKLGlCQUFpQlosaUVBQWVBLEdBQUdpQixRQUFRO2dCQUMzQyxJQUFJLENBQUNSLFNBQVM7b0JBQ1ZILFlBQVlTLE9BQU8sR0FBR2YsaUVBQWVBLEdBQUdrQixTQUFTLENBQUNOO2dCQUN0RDtZQUNKO1FBQ0osT0FBTztZQUNILGdGQUFnRjtZQUNoRix5RUFBeUU7WUFDekUsZ0RBQWdEO1lBQ2hELE1BQU1PLGVBQWVuQixpRUFBZUEsR0FBR2lCLFFBQVE7WUFDL0MsSUFBSUUsYUFBYU4sTUFBTSxFQUFFO2dCQUNyQkosVUFBVVUsYUFBYVYsT0FBTztZQUNsQztRQUNKO1FBQ0EsNEVBQTRFO1FBQzVFLGlFQUFpRTtRQUNqRSxJQUFJQSxTQUFTO1lBQ1RELGdCQUFnQkM7UUFDcEIsT0FBTztZQUNILE1BQU1MO1FBQ1Y7SUFDSjtJQUNBLDRFQUE0RTtJQUM1RSx1RUFBdUU7SUFDdkUsMEVBQTBFO0lBQzFFLDRFQUE0RTtJQUM1RSxZQUFZO0lBQ1pGLGdEQUFTQSxDQUFDO1FBQ04sSUFBSSxDQUFDSSxZQUFZUyxPQUFPLEVBQUU7WUFDdEJULFlBQVlTLE9BQU8sR0FBR2YsaUVBQWVBLEdBQUdrQixTQUFTLENBQUMsQ0FBQyxFQUFFTCxNQUFNLEVBQUVKLFNBQVNLLFVBQVUsRUFBRTtnQkFDOUUsSUFBSUQsUUFBUTtvQkFDUkosVUFBVUs7b0JBQ1ZOLGdCQUFnQk07Z0JBQ3BCO1lBQ0o7UUFDSjtRQUNBLE9BQU87WUFDSFIsWUFBWVMsT0FBTyxJQUFJVCxZQUFZUyxPQUFPO1lBQzFDVCxZQUFZUyxPQUFPLEdBQUdDO1FBQzFCO0lBQ0osR0FBRyxFQUFFO0lBQ0wsTUFBTUksU0FBU2IsZ0JBQWdCRTtJQUMvQixJQUFJLENBQUNXLFFBQVE7UUFDVCxJQUFJaEIsU0FBUztZQUNUaUIsUUFBUUMsSUFBSSxDQUFDO1lBQ2IsTUFBTWxCO1FBQ1YsT0FBTztZQUNILE1BQU1tQixNQUFNO1FBQ2hCO0lBQ0o7SUFDQSxPQUFPSDtBQUNYO0FBQ0E7O0NBRUMsR0FBVSxTQUFTSTtJQUNoQnBCLFVBQVVZO0FBQ2QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tcmVhY3QtdXRpbHMvZGlzdC91c2VTZXNzaW9uLmpzPzQwMGQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IEFQSSAqLyBpbXBvcnQgeyBnZXRTZXNzaW9uU3RvcmUgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLWFwaVwiO1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5sZXQgcHJvbWlzZTtcbi8qKlxuICogR2V0cyB0aGUgY3VycmVudCB1c2VyIHNlc3Npb24gaW5mb3JtYXRpb24uIFJldHVybnMgYW4gb2JqZWN0IHdpdGhcbiAqIHByb3BlcnR5IGBhdXRoZW50aWNhdGVkYCA9PSBgZmFsc2VgIGlmIHRoZSB1c2VyIGlzIG5vdCBsb2dnZWQgaW4uXG4gKlxuICogVXNlcyBTdXNwZW5zZS4gVGhpcyBob29rIHdpbGwgYWx3YXlzIGVpdGhlciByZXR1cm4gYSBTZXNzaW9uIG9iamVjdFxuICogb3IgdGhyb3cgZm9yIFN1c3BlbnNlLiBJdCB3aWxsIG5ldmVyIHJldHVybiBgbnVsbGAvYHVuZGVmaW5lZGAuXG4gKlxuICogQHJldHVybnMgQ3VycmVudCB1c2VyIHNlc3Npb24gaW5mb3JtYXRpb25cbiAqLyBleHBvcnQgZnVuY3Rpb24gdXNlU2Vzc2lvbigpIHtcbiAgICAvLyBXZSBoYXZlIHR3byBzZXBhcmF0ZSB2YXJpYWJsZXMgZm9yIHRoZSBzZXNzaW9uLlxuICAgIC8vXG4gICAgLy8gYHNlc3Npb25gIGlzIGEgdGVtcG9yYXJ5IHZhcmlhYmxlLCB3aGljaCBzdGFydHMgYXMgYG51bGxgIGV2ZXJ5IHRpbWUgdGhpc1xuICAgIC8vIGhvb2sgaXMgZXhlY3V0ZWQuIEl0IGlzIGltcG9ydGFudCB0aGF0IHdlIGNhbiBzZXQgYW5kIHJldHVybiB0aGlzXG4gICAgLy8gdmFyaWFibGUgc3luY2hyb25vdXNseSwgYmVjYXVzZSBldmVyeSB0aW1lIHdlIGB0aHJvd2AgZm9yIFN1c3BlbnNlLCB0aGlzXG4gICAgLy8gaG9vayB3aWxsIHVubW91bnQgYW5kIGEgbmV3IGluc3RhbmNlIHdpbGwgYmUgY3JlYXRlZCwgZGVzdHJveWluZyB3aGF0ZXZlclxuICAgIC8vIHN0YXRlIGV4aXN0ZWQuIFRodXMsIGlmIHRoaXMgaG9vayB3ZXJlIHRvIHRyeSB0byBhbHdheXMgc2V0IGFuZCByZXR1cm5cbiAgICAvLyBgc3RhdGVTZXNzaW9uYCwgaXQgd291bGQgY2F1c2UgYW4gaW5maW5pdGUgbG9vcDpcbiAgICAvLyAgIDEuIGluc3RhbmNlIEEgbW91bnRzXG4gICAgLy8gICAyLiBpbnN0YW5jZSBBIHJlY2VpdmVzIHZhbHVlLCBjYWxscyBgc2V0U3RhdGVTZXNzaW9uYFxuICAgIC8vICAgMy4gaW5zdGFuY2UgQSB0aHJvd3NcbiAgICAvLyAgIDQuIGluc3RhbmNlIEEgdW5tb3VudHNcbiAgICAvLyAgIDUuIGluc3RhbmNlIEIgbW91bnRzXG4gICAgLy8gICAuLi5cbiAgICAvLyBXaGF0IHdvdWxkIGhhcHBlbiBpZiB3ZSBtb3ZlZCBgc2Vzc2lvbmAgdG8gdGhlIG1vZHVsZSBzY29wZSwgc28gdGhhdCBpdFxuICAgIC8vIGNvdWxkIGJlIHJlLXVzZWQgYWNyb3NzIGluc3RhbmNlcyBvZiB0aGlzIGhvb2s/IFRoZW4gd2Ugd291bGQgaGF2ZSBubyB3YXlcbiAgICAvLyB0byB0ZWxsIHdoZXRoZXIgdGhlIHNlc3Npb24gd2FzIGZyZXNoLlxuICAgIC8vXG4gICAgLy8gYHN0YXRlU2Vzc2lvbmAgaXMgUmVhY3Qgc3RhdGUsIHdoaWNoIGlzIG5lZWRlZCB0byB1cGRhdGUgY29tcG9uZW50cyB1c2luZ1xuICAgIC8vIHRoaXMgaG9vayB3aGVuIHRoZSBzZXNzaW9uIGNoYW5nZXMuXG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSB1c2VSZWYoKTtcbiAgICBjb25zdCBbc3RhdGVTZXNzaW9uLCBzZXRTdGF0ZVNlc3Npb25dID0gdXNlU3RhdGUobnVsbCk7XG4gICAgbGV0IHNlc3Npb24gPSBudWxsO1xuICAgIGlmICghc3RhdGVTZXNzaW9uKSB7XG4gICAgICAgIGlmICghcHJvbWlzZSkge1xuICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZW4ndCBjcmVhdGVkIGEgcHJvbWlzZSB0byB0aHJvdyB5ZXQsIGRvIHRoYXQuXG4gICAgICAgICAgICAvLyBjdXJyZW50LXVzZXIudHMgaGFuZGxlcyB0aGUgaW5pdGlhbCBzZXNzaW9uIGZldGNoIGFzIHNvb24gYXMgYGdldFNlc3Npb25TdG9yZSgpYFxuICAgICAgICAgICAgLy8gaXMgY2FsbGVkLiBXZSBqdXN0IG5lZWQgdG8gY2FsbCBpdCBhbmQgc2V0IHVwIGEgbGlzdGVuZXIgZm9yIHdoZW4gc2Vzc2lvbiBkYXRhXG4gICAgICAgICAgICAvLyBpcyBsb2FkZWQuIEFzIHNvb24gYXMgd2UgaGF2ZSB0aGUgaW5pdGlhbCBzZXNzaW9uIGRhdGEsIHdlIHJlbW92ZSB0aGlzIGluaXRpYWxcbiAgICAgICAgICAgIC8vIHN0b3JlIHN1YnNjcmlwdGlvbiBzbyB3ZSBjYW4gc2V0IHVwIHRoZSBcIm9uZ29pbmdcIiBvbmUgbGF0ZXIuXG4gICAgICAgICAgICBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpPT57XG4gICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlTmV3U2Vzc2lvbiA9ICh7IGxvYWRlZCwgc2Vzc2lvbjogbmV3U2Vzc2lvbiB9KT0+e1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG5ld1Nlc3Npb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbiA9IG5ld1Nlc3Npb247XG4gICAgICAgICAgICAgICAgICAgICAgICB1bnN1YnNjcmliZS5jdXJyZW50ICYmIHVuc3Vic2NyaWJlLmN1cnJlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuc3Vic2NyaWJlLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGhhbmRsZU5ld1Nlc3Npb24oZ2V0U2Vzc2lvblN0b3JlKCkuZ2V0U3RhdGUoKSk7XG4gICAgICAgICAgICAgICAgaWYgKCFzZXNzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHVuc3Vic2NyaWJlLmN1cnJlbnQgPSBnZXRTZXNzaW9uU3RvcmUoKS5zdWJzY3JpYmUoaGFuZGxlTmV3U2Vzc2lvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBIb3dldmVyLCBpZiB3ZSBoYXZlIGNyZWF0ZWQgYSBwcm9taXNlIHRvIHRocm93LCBidXQgdGhlcmUncyBubyBgc3RhdGVTZXNzaW9uYFxuICAgICAgICAgICAgLy8geWV0LCB0aGVuIGl0J3MgcHJvYmFibHkganVzdCB0aGlzIGhvb2sncyBmaXJzdCByZW5kZXIuIENoZWNrIHRvIHNlZSBpZlxuICAgICAgICAgICAgLy8gdGhlcmUncyBhbHJlYWR5IGEgc2Vzc2lvbiB0aGF0IHdlIGNhbiByZXR1cm4uXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U3RhdGUgPSBnZXRTZXNzaW9uU3RvcmUoKS5nZXRTdGF0ZSgpO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRTdGF0ZS5sb2FkZWQpIHtcbiAgICAgICAgICAgICAgICBzZXNzaW9uID0gY3VycmVudFN0YXRlLnNlc3Npb247XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgdGhlIHNlc3Npb24gZ290IHNldCBzeW5jaHJvbm91c2x5IGluIHRoZSBhYm92ZSBibG9jaywgdGhlbiB3ZSBjYW4ganVzdFxuICAgICAgICAvLyByZXR1cm4gaXQgcmF0aGVyIHRoYW4gdGhyb3dpbmcuIE90aGVyd2lzZSwgdGhyb3cgZm9yIFN1c3BlbnNlLlxuICAgICAgICBpZiAoc2Vzc2lvbikge1xuICAgICAgICAgICAgc2V0U3RhdGVTZXNzaW9uKHNlc3Npb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgcHJvbWlzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBPbmNlIHRoaXMgaG9vayBpcyBlc3RhYmxpc2hlZCAobm8gbG9uZ2VyIHRocm93aW5nIGFuZCBnZXR0aW5nIHJlLWNyZWF0ZWQpXG4gICAgLy8gd2UgbmVlZCB0byBzZXQgdXAgYSBzdWJzY3JpcHRpb24gdGhhdCB3aWxsIHVwZGF0ZSBpdHMgdmFsdWUgdGhlIGdvb2RcbiAgICAvLyBvbGQtZmFzaGlvbmVkIFJlYWN0IHdheS4gV2UgYXJlIHJlLXVzaW5nIHRoZSBgdW5zdWJzY3JpYmVgIHJlZiBmcm9tIHRoZVxuICAgIC8vIGluaXRpYWwgc3Vic2NyaXB0aW9uLCB3aGljaCBzaG91bGQgaGF2ZSBiZWVuIHZhY2F0ZWQgYnkgdGhlIGZpcnN0IHRpbWUgd2VcbiAgICAvLyBnZXQgaGVyZS5cbiAgICB1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKCF1bnN1YnNjcmliZS5jdXJyZW50KSB7XG4gICAgICAgICAgICB1bnN1YnNjcmliZS5jdXJyZW50ID0gZ2V0U2Vzc2lvblN0b3JlKCkuc3Vic2NyaWJlKCh7IGxvYWRlZCwgc2Vzc2lvbjogbmV3U2Vzc2lvbiB9KT0+e1xuICAgICAgICAgICAgICAgIGlmIChsb2FkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbiA9IG5ld1Nlc3Npb247XG4gICAgICAgICAgICAgICAgICAgIHNldFN0YXRlU2Vzc2lvbihuZXdTZXNzaW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgIHVuc3Vic2NyaWJlLmN1cnJlbnQgJiYgdW5zdWJzY3JpYmUuY3VycmVudCgpO1xuICAgICAgICAgICAgdW5zdWJzY3JpYmUuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfTtcbiAgICB9LCBbXSk7XG4gICAgY29uc3QgcmVzdWx0ID0gc3RhdGVTZXNzaW9uIHx8IHNlc3Npb247XG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgaWYgKHByb21pc2UpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybigndXNlU2Vzc2lvbiBpcyBpbiBhbiB1bmV4cGVjdGVkIHN0YXRlLiBBdHRlbXB0aW5nIHRvIHJlY292ZXIuJyk7XG4gICAgICAgICAgICB0aHJvdyBwcm9taXNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ3VzZVNlc3Npb24gaXMgaW4gYW4gaW52YWxpZCBzdGF0ZS4nKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLyoqXG4gKiBGb3IgdGVzdGluZy5cbiAqLyBleHBvcnQgZnVuY3Rpb24gX19jbGVhbnVwKCkge1xuICAgIHByb21pc2UgPSB1bmRlZmluZWQ7XG59XG4iXSwibmFtZXMiOlsiZ2V0U2Vzc2lvblN0b3JlIiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJwcm9taXNlIiwidXNlU2Vzc2lvbiIsInVuc3Vic2NyaWJlIiwic3RhdGVTZXNzaW9uIiwic2V0U3RhdGVTZXNzaW9uIiwic2Vzc2lvbiIsIlByb21pc2UiLCJyZXNvbHZlIiwiaGFuZGxlTmV3U2Vzc2lvbiIsImxvYWRlZCIsIm5ld1Nlc3Npb24iLCJjdXJyZW50IiwidW5kZWZpbmVkIiwiZ2V0U3RhdGUiLCJzdWJzY3JpYmUiLCJjdXJyZW50U3RhdGUiLCJyZXN1bHQiLCJjb25zb2xlIiwid2FybiIsIkVycm9yIiwiX19jbGVhbnVwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/dist/useSession.js\n");
1308
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ __cleanup: () => (/* binding */ __cleanup),\n/* harmony export */ useSession: () => (/* binding */ useSession)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-api */ \"../../framework/esm-api/dist/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/** @module @category API */ \n\nlet promise;\n/**\n * Gets the current user session information. Returns an object with\n * property `authenticated` == `false` if the user is not logged in.\n *\n * Uses Suspense. This hook will always either return a Session object\n * or throw for Suspense. It will never return `null`/`undefined`.\n *\n * @returns Current user session information\n */ function useSession() {\n // We have two separate variables for the session.\n //\n // `session` is a temporary variable, which starts as `null` every time this\n // hook is executed. It is important that we can set and return this\n // variable synchronously, because every time we `throw` for Suspense, this\n // hook will unmount and a new instance will be created, destroying whatever\n // state existed. Thus, if this hook were to try to always set and return\n // `stateSession`, it would cause an infinite loop:\n // 1. instance A mounts\n // 2. instance A receives value, calls `setStateSession`\n // 3. instance A throws\n // 4. instance A unmounts\n // 5. instance B mounts\n // ...\n // What would happen if we moved `session` to the module scope, so that it\n // could be re-used across instances of this hook? Then we would have no way\n // to tell whether the session was fresh.\n //\n // `stateSession` is React state, which is needed to update components using\n // this hook when the session changes.\n const unsubscribe = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)();\n const [stateSession, setStateSession] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n let session = null;\n if (!stateSession) {\n if (!promise) {\n // If we haven't created a promise to throw yet, do that.\n // current-user.ts handles the initial session fetch as soon as `getSessionStore()`\n // is called. We just need to call it and set up a listener for when session data\n // is loaded. As soon as we have the initial session data, we remove this initial\n // store subscription so we can set up the \"ongoing\" one later.\n promise = new Promise((resolve)=>{\n const handleNewSession = ({ loaded, session: newSession })=>{\n if (loaded) {\n resolve(newSession);\n session = newSession;\n if (unsubscribe.current) {\n unsubscribe.current();\n unsubscribe.current = undefined;\n }\n }\n };\n handleNewSession((0,_openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getSessionStore)().getState());\n if (!session) {\n unsubscribe.current = (0,_openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getSessionStore)().subscribe(handleNewSession);\n }\n });\n } else {\n // However, if we have created a promise to throw, but there's no `stateSession`\n // yet, then it's probably just this hook's first render. Check to see if\n // there's already a session that we can return.\n const currentState = (0,_openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getSessionStore)().getState();\n if (currentState.loaded) {\n session = currentState.session;\n }\n }\n // If the session got set synchronously in the above block, then we can just\n // return it rather than throwing. Otherwise, throw for Suspense.\n if (session) {\n setStateSession(session);\n } else {\n throw promise;\n }\n }\n // Once this hook is established (no longer throwing and getting re-created)\n // we need to set up a subscription that will update its value the good\n // old-fashioned React way. We are re-using the `unsubscribe` ref from the\n // initial subscription, which should have been vacated by the first time we\n // get here.\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (!unsubscribe.current) {\n unsubscribe.current = (0,_openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getSessionStore)().subscribe(({ loaded, session: newSession })=>{\n if (loaded) {\n session = newSession;\n setStateSession(newSession);\n }\n });\n }\n return ()=>{\n if (unsubscribe.current) {\n unsubscribe.current();\n unsubscribe.current = undefined;\n }\n };\n }, []);\n const result = stateSession || session;\n if (!result) {\n if (promise) {\n console.warn('useSession is in an unexpected state. Attempting to recover.');\n throw promise;\n } else {\n throw Error('useSession is in an invalid state.');\n }\n }\n return result;\n}\n/**\n * For testing.\n */ function __cleanup() {\n promise = undefined;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9kaXN0L3VzZVNlc3Npb24uanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLDBCQUEwQixHQUFzRDtBQUM1QjtBQUNwRCxJQUFJSTtBQUNKOzs7Ozs7OztDQVFDLEdBQVUsU0FBU0M7SUFDaEIsa0RBQWtEO0lBQ2xELEVBQUU7SUFDRiw0RUFBNEU7SUFDNUUsb0VBQW9FO0lBQ3BFLDJFQUEyRTtJQUMzRSw0RUFBNEU7SUFDNUUseUVBQXlFO0lBQ3pFLG1EQUFtRDtJQUNuRCx5QkFBeUI7SUFDekIsMERBQTBEO0lBQzFELHlCQUF5QjtJQUN6QiwyQkFBMkI7SUFDM0IseUJBQXlCO0lBQ3pCLFFBQVE7SUFDUiwwRUFBMEU7SUFDMUUsNEVBQTRFO0lBQzVFLHlDQUF5QztJQUN6QyxFQUFFO0lBQ0YsNEVBQTRFO0lBQzVFLHNDQUFzQztJQUN0QyxNQUFNQyxjQUFjSCw2Q0FBTUE7SUFDMUIsTUFBTSxDQUFDSSxjQUFjQyxnQkFBZ0IsR0FBR1AsK0NBQVFBLENBQUM7SUFDakQsSUFBSVEsVUFBVTtJQUNkLElBQUksQ0FBQ0YsY0FBYztRQUNmLElBQUksQ0FBQ0gsU0FBUztZQUNWLHlEQUF5RDtZQUN6RCxtRkFBbUY7WUFDbkYsaUZBQWlGO1lBQ2pGLGlGQUFpRjtZQUNqRiwrREFBK0Q7WUFDL0RBLFVBQVUsSUFBSU0sUUFBUSxDQUFDQztnQkFDbkIsTUFBTUMsbUJBQW1CLENBQUMsRUFBRUMsTUFBTSxFQUFFSixTQUFTSyxVQUFVLEVBQUU7b0JBQ3JELElBQUlELFFBQVE7d0JBQ1JGLFFBQVFHO3dCQUNSTCxVQUFVSzt3QkFDVixJQUFJUixZQUFZUyxPQUFPLEVBQUU7NEJBQ3JCVCxZQUFZUyxPQUFPOzRCQUNuQlQsWUFBWVMsT0FBTyxHQUFHQzt3QkFDMUI7b0JBQ0o7Z0JBQ0o7Z0JBQ0FKLGlCQUFpQlosaUVBQWVBLEdBQUdpQixRQUFRO2dCQUMzQyxJQUFJLENBQUNSLFNBQVM7b0JBQ1ZILFlBQVlTLE9BQU8sR0FBR2YsaUVBQWVBLEdBQUdrQixTQUFTLENBQUNOO2dCQUN0RDtZQUNKO1FBQ0osT0FBTztZQUNILGdGQUFnRjtZQUNoRix5RUFBeUU7WUFDekUsZ0RBQWdEO1lBQ2hELE1BQU1PLGVBQWVuQixpRUFBZUEsR0FBR2lCLFFBQVE7WUFDL0MsSUFBSUUsYUFBYU4sTUFBTSxFQUFFO2dCQUNyQkosVUFBVVUsYUFBYVYsT0FBTztZQUNsQztRQUNKO1FBQ0EsNEVBQTRFO1FBQzVFLGlFQUFpRTtRQUNqRSxJQUFJQSxTQUFTO1lBQ1RELGdCQUFnQkM7UUFDcEIsT0FBTztZQUNILE1BQU1MO1FBQ1Y7SUFDSjtJQUNBLDRFQUE0RTtJQUM1RSx1RUFBdUU7SUFDdkUsMEVBQTBFO0lBQzFFLDRFQUE0RTtJQUM1RSxZQUFZO0lBQ1pGLGdEQUFTQSxDQUFDO1FBQ04sSUFBSSxDQUFDSSxZQUFZUyxPQUFPLEVBQUU7WUFDdEJULFlBQVlTLE9BQU8sR0FBR2YsaUVBQWVBLEdBQUdrQixTQUFTLENBQUMsQ0FBQyxFQUFFTCxNQUFNLEVBQUVKLFNBQVNLLFVBQVUsRUFBRTtnQkFDOUUsSUFBSUQsUUFBUTtvQkFDUkosVUFBVUs7b0JBQ1ZOLGdCQUFnQk07Z0JBQ3BCO1lBQ0o7UUFDSjtRQUNBLE9BQU87WUFDSCxJQUFJUixZQUFZUyxPQUFPLEVBQUU7Z0JBQ3JCVCxZQUFZUyxPQUFPO2dCQUNuQlQsWUFBWVMsT0FBTyxHQUFHQztZQUMxQjtRQUNKO0lBQ0osR0FBRyxFQUFFO0lBQ0wsTUFBTUksU0FBU2IsZ0JBQWdCRTtJQUMvQixJQUFJLENBQUNXLFFBQVE7UUFDVCxJQUFJaEIsU0FBUztZQUNUaUIsUUFBUUMsSUFBSSxDQUFDO1lBQ2IsTUFBTWxCO1FBQ1YsT0FBTztZQUNILE1BQU1tQixNQUFNO1FBQ2hCO0lBQ0o7SUFDQSxPQUFPSDtBQUNYO0FBQ0E7O0NBRUMsR0FBVSxTQUFTSTtJQUNoQnBCLFVBQVVZO0FBQ2QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tcmVhY3QtdXRpbHMvZGlzdC91c2VTZXNzaW9uLmpzPzQwMGQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IEFQSSAqLyBpbXBvcnQgeyBnZXRTZXNzaW9uU3RvcmUgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLWFwaVwiO1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5sZXQgcHJvbWlzZTtcbi8qKlxuICogR2V0cyB0aGUgY3VycmVudCB1c2VyIHNlc3Npb24gaW5mb3JtYXRpb24uIFJldHVybnMgYW4gb2JqZWN0IHdpdGhcbiAqIHByb3BlcnR5IGBhdXRoZW50aWNhdGVkYCA9PSBgZmFsc2VgIGlmIHRoZSB1c2VyIGlzIG5vdCBsb2dnZWQgaW4uXG4gKlxuICogVXNlcyBTdXNwZW5zZS4gVGhpcyBob29rIHdpbGwgYWx3YXlzIGVpdGhlciByZXR1cm4gYSBTZXNzaW9uIG9iamVjdFxuICogb3IgdGhyb3cgZm9yIFN1c3BlbnNlLiBJdCB3aWxsIG5ldmVyIHJldHVybiBgbnVsbGAvYHVuZGVmaW5lZGAuXG4gKlxuICogQHJldHVybnMgQ3VycmVudCB1c2VyIHNlc3Npb24gaW5mb3JtYXRpb25cbiAqLyBleHBvcnQgZnVuY3Rpb24gdXNlU2Vzc2lvbigpIHtcbiAgICAvLyBXZSBoYXZlIHR3byBzZXBhcmF0ZSB2YXJpYWJsZXMgZm9yIHRoZSBzZXNzaW9uLlxuICAgIC8vXG4gICAgLy8gYHNlc3Npb25gIGlzIGEgdGVtcG9yYXJ5IHZhcmlhYmxlLCB3aGljaCBzdGFydHMgYXMgYG51bGxgIGV2ZXJ5IHRpbWUgdGhpc1xuICAgIC8vIGhvb2sgaXMgZXhlY3V0ZWQuIEl0IGlzIGltcG9ydGFudCB0aGF0IHdlIGNhbiBzZXQgYW5kIHJldHVybiB0aGlzXG4gICAgLy8gdmFyaWFibGUgc3luY2hyb25vdXNseSwgYmVjYXVzZSBldmVyeSB0aW1lIHdlIGB0aHJvd2AgZm9yIFN1c3BlbnNlLCB0aGlzXG4gICAgLy8gaG9vayB3aWxsIHVubW91bnQgYW5kIGEgbmV3IGluc3RhbmNlIHdpbGwgYmUgY3JlYXRlZCwgZGVzdHJveWluZyB3aGF0ZXZlclxuICAgIC8vIHN0YXRlIGV4aXN0ZWQuIFRodXMsIGlmIHRoaXMgaG9vayB3ZXJlIHRvIHRyeSB0byBhbHdheXMgc2V0IGFuZCByZXR1cm5cbiAgICAvLyBgc3RhdGVTZXNzaW9uYCwgaXQgd291bGQgY2F1c2UgYW4gaW5maW5pdGUgbG9vcDpcbiAgICAvLyAgIDEuIGluc3RhbmNlIEEgbW91bnRzXG4gICAgLy8gICAyLiBpbnN0YW5jZSBBIHJlY2VpdmVzIHZhbHVlLCBjYWxscyBgc2V0U3RhdGVTZXNzaW9uYFxuICAgIC8vICAgMy4gaW5zdGFuY2UgQSB0aHJvd3NcbiAgICAvLyAgIDQuIGluc3RhbmNlIEEgdW5tb3VudHNcbiAgICAvLyAgIDUuIGluc3RhbmNlIEIgbW91bnRzXG4gICAgLy8gICAuLi5cbiAgICAvLyBXaGF0IHdvdWxkIGhhcHBlbiBpZiB3ZSBtb3ZlZCBgc2Vzc2lvbmAgdG8gdGhlIG1vZHVsZSBzY29wZSwgc28gdGhhdCBpdFxuICAgIC8vIGNvdWxkIGJlIHJlLXVzZWQgYWNyb3NzIGluc3RhbmNlcyBvZiB0aGlzIGhvb2s/IFRoZW4gd2Ugd291bGQgaGF2ZSBubyB3YXlcbiAgICAvLyB0byB0ZWxsIHdoZXRoZXIgdGhlIHNlc3Npb24gd2FzIGZyZXNoLlxuICAgIC8vXG4gICAgLy8gYHN0YXRlU2Vzc2lvbmAgaXMgUmVhY3Qgc3RhdGUsIHdoaWNoIGlzIG5lZWRlZCB0byB1cGRhdGUgY29tcG9uZW50cyB1c2luZ1xuICAgIC8vIHRoaXMgaG9vayB3aGVuIHRoZSBzZXNzaW9uIGNoYW5nZXMuXG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSB1c2VSZWYoKTtcbiAgICBjb25zdCBbc3RhdGVTZXNzaW9uLCBzZXRTdGF0ZVNlc3Npb25dID0gdXNlU3RhdGUobnVsbCk7XG4gICAgbGV0IHNlc3Npb24gPSBudWxsO1xuICAgIGlmICghc3RhdGVTZXNzaW9uKSB7XG4gICAgICAgIGlmICghcHJvbWlzZSkge1xuICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZW4ndCBjcmVhdGVkIGEgcHJvbWlzZSB0byB0aHJvdyB5ZXQsIGRvIHRoYXQuXG4gICAgICAgICAgICAvLyBjdXJyZW50LXVzZXIudHMgaGFuZGxlcyB0aGUgaW5pdGlhbCBzZXNzaW9uIGZldGNoIGFzIHNvb24gYXMgYGdldFNlc3Npb25TdG9yZSgpYFxuICAgICAgICAgICAgLy8gaXMgY2FsbGVkLiBXZSBqdXN0IG5lZWQgdG8gY2FsbCBpdCBhbmQgc2V0IHVwIGEgbGlzdGVuZXIgZm9yIHdoZW4gc2Vzc2lvbiBkYXRhXG4gICAgICAgICAgICAvLyBpcyBsb2FkZWQuIEFzIHNvb24gYXMgd2UgaGF2ZSB0aGUgaW5pdGlhbCBzZXNzaW9uIGRhdGEsIHdlIHJlbW92ZSB0aGlzIGluaXRpYWxcbiAgICAgICAgICAgIC8vIHN0b3JlIHN1YnNjcmlwdGlvbiBzbyB3ZSBjYW4gc2V0IHVwIHRoZSBcIm9uZ29pbmdcIiBvbmUgbGF0ZXIuXG4gICAgICAgICAgICBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpPT57XG4gICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlTmV3U2Vzc2lvbiA9ICh7IGxvYWRlZCwgc2Vzc2lvbjogbmV3U2Vzc2lvbiB9KT0+e1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG5ld1Nlc3Npb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbiA9IG5ld1Nlc3Npb247XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5zdWJzY3JpYmUuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc3Vic2NyaWJlLmN1cnJlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnN1YnNjcmliZS5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBoYW5kbGVOZXdTZXNzaW9uKGdldFNlc3Npb25TdG9yZSgpLmdldFN0YXRlKCkpO1xuICAgICAgICAgICAgICAgIGlmICghc2Vzc2lvbikge1xuICAgICAgICAgICAgICAgICAgICB1bnN1YnNjcmliZS5jdXJyZW50ID0gZ2V0U2Vzc2lvblN0b3JlKCkuc3Vic2NyaWJlKGhhbmRsZU5ld1Nlc3Npb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSG93ZXZlciwgaWYgd2UgaGF2ZSBjcmVhdGVkIGEgcHJvbWlzZSB0byB0aHJvdywgYnV0IHRoZXJlJ3Mgbm8gYHN0YXRlU2Vzc2lvbmBcbiAgICAgICAgICAgIC8vIHlldCwgdGhlbiBpdCdzIHByb2JhYmx5IGp1c3QgdGhpcyBob29rJ3MgZmlyc3QgcmVuZGVyLiBDaGVjayB0byBzZWUgaWZcbiAgICAgICAgICAgIC8vIHRoZXJlJ3MgYWxyZWFkeSBhIHNlc3Npb24gdGhhdCB3ZSBjYW4gcmV0dXJuLlxuICAgICAgICAgICAgY29uc3QgY3VycmVudFN0YXRlID0gZ2V0U2Vzc2lvblN0b3JlKCkuZ2V0U3RhdGUoKTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50U3RhdGUubG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgc2Vzc2lvbiA9IGN1cnJlbnRTdGF0ZS5zZXNzaW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIElmIHRoZSBzZXNzaW9uIGdvdCBzZXQgc3luY2hyb25vdXNseSBpbiB0aGUgYWJvdmUgYmxvY2ssIHRoZW4gd2UgY2FuIGp1c3RcbiAgICAgICAgLy8gcmV0dXJuIGl0IHJhdGhlciB0aGFuIHRocm93aW5nLiBPdGhlcndpc2UsIHRocm93IGZvciBTdXNwZW5zZS5cbiAgICAgICAgaWYgKHNlc3Npb24pIHtcbiAgICAgICAgICAgIHNldFN0YXRlU2Vzc2lvbihzZXNzaW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IHByb21pc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gT25jZSB0aGlzIGhvb2sgaXMgZXN0YWJsaXNoZWQgKG5vIGxvbmdlciB0aHJvd2luZyBhbmQgZ2V0dGluZyByZS1jcmVhdGVkKVxuICAgIC8vIHdlIG5lZWQgdG8gc2V0IHVwIGEgc3Vic2NyaXB0aW9uIHRoYXQgd2lsbCB1cGRhdGUgaXRzIHZhbHVlIHRoZSBnb29kXG4gICAgLy8gb2xkLWZhc2hpb25lZCBSZWFjdCB3YXkuIFdlIGFyZSByZS11c2luZyB0aGUgYHVuc3Vic2NyaWJlYCByZWYgZnJvbSB0aGVcbiAgICAvLyBpbml0aWFsIHN1YnNjcmlwdGlvbiwgd2hpY2ggc2hvdWxkIGhhdmUgYmVlbiB2YWNhdGVkIGJ5IHRoZSBmaXJzdCB0aW1lIHdlXG4gICAgLy8gZ2V0IGhlcmUuXG4gICAgdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmICghdW5zdWJzY3JpYmUuY3VycmVudCkge1xuICAgICAgICAgICAgdW5zdWJzY3JpYmUuY3VycmVudCA9IGdldFNlc3Npb25TdG9yZSgpLnN1YnNjcmliZSgoeyBsb2FkZWQsIHNlc3Npb246IG5ld1Nlc3Npb24gfSk9PntcbiAgICAgICAgICAgICAgICBpZiAobG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlc3Npb24gPSBuZXdTZXNzaW9uO1xuICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZVNlc3Npb24obmV3U2Vzc2lvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICBpZiAodW5zdWJzY3JpYmUuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIHVuc3Vic2NyaWJlLmN1cnJlbnQoKTtcbiAgICAgICAgICAgICAgICB1bnN1YnNjcmliZS5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCByZXN1bHQgPSBzdGF0ZVNlc3Npb24gfHwgc2Vzc2lvbjtcbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICBpZiAocHJvbWlzZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCd1c2VTZXNzaW9uIGlzIGluIGFuIHVuZXhwZWN0ZWQgc3RhdGUuIEF0dGVtcHRpbmcgdG8gcmVjb3Zlci4nKTtcbiAgICAgICAgICAgIHRocm93IHByb21pc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcigndXNlU2Vzc2lvbiBpcyBpbiBhbiBpbnZhbGlkIHN0YXRlLicpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4vKipcbiAqIEZvciB0ZXN0aW5nLlxuICovIGV4cG9ydCBmdW5jdGlvbiBfX2NsZWFudXAoKSB7XG4gICAgcHJvbWlzZSA9IHVuZGVmaW5lZDtcbn1cbiJdLCJuYW1lcyI6WyJnZXRTZXNzaW9uU3RvcmUiLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInVzZVJlZiIsInByb21pc2UiLCJ1c2VTZXNzaW9uIiwidW5zdWJzY3JpYmUiLCJzdGF0ZVNlc3Npb24iLCJzZXRTdGF0ZVNlc3Npb24iLCJzZXNzaW9uIiwiUHJvbWlzZSIsInJlc29sdmUiLCJoYW5kbGVOZXdTZXNzaW9uIiwibG9hZGVkIiwibmV3U2Vzc2lvbiIsImN1cnJlbnQiLCJ1bmRlZmluZWQiLCJnZXRTdGF0ZSIsInN1YnNjcmliZSIsImN1cnJlbnRTdGF0ZSIsInJlc3VsdCIsImNvbnNvbGUiLCJ3YXJuIiwiRXJyb3IiLCJfX2NsZWFudXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/dist/useSession.js\n");
1309
1309
 
1310
1310
  /***/ }),
1311
1311
 
@@ -1665,7 +1665,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1665
1665
  \**********************************************************************************************/
1666
1666
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1667
1667
 
1668
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ActionableNotificationComponent: () => (/* binding */ ActionableNotificationComponent)\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 _carbon_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @carbon/react */ \"webpack/sharing/consume/default/@carbon/react/@carbon/react\");\n/* harmony import */ var _carbon_react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_carbon_react__WEBPACK_IMPORTED_MODULE_1__);\nfunction _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_with_holes(arr) {\n if (Array.isArray(arr)) return 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_limit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _non_iterable_rest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\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 _object_without_properties(source, excluded) {\n if (source == null) return {};\n var target = _object_without_properties_loose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _object_without_properties_loose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _sliced_to_array(arr, i) {\n return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();\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\nvar ActionableNotificationComponent = function(param) {\n var notification = param.notification;\n var actionButtonLabel = notification.actionButtonLabel, _notification_onActionButtonClick = notification.onActionButtonClick, onActionButtonClick = _notification_onActionButtonClick === void 0 ? function() {} : _notification_onActionButtonClick, subtitle = notification.subtitle, kind = notification.kind, title = notification.title, critical = notification.critical, progressActionLabel = notification.progressActionLabel, id = notification.id, props = _object_without_properties(notification, [\n \"actionButtonLabel\",\n \"onActionButtonClick\",\n \"subtitle\",\n \"kind\",\n \"title\",\n \"critical\",\n \"progressActionLabel\",\n \"id\"\n ]);\n var _useState = _sliced_to_array((0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(actionButtonLabel), 2), actionText = _useState[0], setActionText = _useState[1];\n var handleActionClick = function() {\n onActionButtonClick();\n progressActionLabel && setActionText(progressActionLabel);\n };\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.ActionableNotification, _object_spread({\n kind: kind || 'info',\n actionButtonLabel: actionText,\n ariaLabel: \"Closes actionable notification\",\n onActionButtonClick: handleActionClick,\n statusIconDescription: \"Actionable notification\",\n subtitle: subtitle,\n title: title,\n lowContrast: critical,\n inline: true\n }, props));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy9ub3RpZmljYXRpb25zL2FjdGlvbmFibGUtbm90aWZpY2F0aW9uLmNvbXBvbmVudC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUF3QztBQUNlO0FBd0JoRCxJQUFNRyxrQ0FBeUU7UUFBR0MscUJBQUFBO0lBQ3ZGLElBQ0VDLG9CQVNFRCxhQVRGQyx1REFTRUQsYUFSRkUscUJBQUFBLHFFQUFzQixZQUFPLHVDQUM3QkMsV0FPRUgsYUFQRkcsVUFDQUMsT0FNRUosYUFORkksTUFDQUMsUUFLRUwsYUFMRkssT0FDQUMsV0FJRU4sYUFKRk0sVUFDQUMsc0JBR0VQLGFBSEZPLHFCQUNBQyxLQUVFUixhQUZGUSxJQUNHQyxtQ0FDRFQ7UUFURkM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7O0lBSUYsSUFBb0NYLDZCQUFBQSwrQ0FBUUEsQ0FBQ0ksd0JBQXRDUyxhQUE2QmIsY0FBakJjLGdCQUFpQmQ7SUFFcEMsSUFBTWUsb0JBQW9CO1FBQ3hCVjtRQUNBSyx1QkFBdUJJLGNBQWNKO0lBQ3ZDO0lBRUEscUJBQ0UsMkRBQUNULGlFQUFzQkE7UUFDckJNLE1BQU0sUUFBd0M7UUFDOUNILG1CQUFtQlM7UUFDbkJHLFdBQVU7UUFDVlgscUJBQXFCVTtRQUNyQkUsdUJBQXNCO1FBQ3RCWCxVQUFVQTtRQUNWRSxPQUFPQTtRQUNQVSxhQUFhVDtRQUNiVSxRQUFBQTtPQUNJUDtBQUdWLEVBQUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tc3R5bGVndWlkZS9zcmMvbm90aWZpY2F0aW9ucy9hY3Rpb25hYmxlLW5vdGlmaWNhdGlvbi5jb21wb25lbnQudHN4PzcwZDYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQWN0aW9uYWJsZU5vdGlmaWNhdGlvbiB9IGZyb20gJ0BjYXJib24vcmVhY3QnO1xuLyoqIEBtb2R1bGUgQGNhdGVnb3J5IFVJICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uYWJsZU5vdGlmaWNhdGlvblByb3BzIHtcbiAgbm90aWZpY2F0aW9uOiBBY3Rpb25hYmxlTm90aWZpY2F0aW9uTWV0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25hYmxlTm90aWZpY2F0aW9uRGVzY3JpcHRvciB7XG4gIGFjdGlvbkJ1dHRvbkxhYmVsOiBzdHJpbmc7XG4gIG9uQWN0aW9uQnV0dG9uQ2xpY2s6ICgpID0+IHZvaWQ7XG4gIG9uQ2xvc2U/OiAoKSA9PiB2b2lkO1xuICBzdWJ0aXRsZTogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAga2luZD86IEFjdGlvbmFibGVOb3RpZmljYXRpb25UeXBlIHwgc3RyaW5nO1xuICBjcml0aWNhbD86IGJvb2xlYW47XG4gIHByb2dyZXNzQWN0aW9uTGFiZWw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uYWJsZU5vdGlmaWNhdGlvbk1ldGEgZXh0ZW5kcyBBY3Rpb25hYmxlTm90aWZpY2F0aW9uRGVzY3JpcHRvciB7XG4gIGlkOiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIEFjdGlvbmFibGVOb3RpZmljYXRpb25UeXBlID0gJ2Vycm9yJyB8ICdpbmZvJyB8ICdpbmZvLXNxdWFyZScgfCAnc3VjY2VzcycgfCAnd2FybmluZycgfCAnd2FybmluZy1hbHQnO1xuXG5leHBvcnQgY29uc3QgQWN0aW9uYWJsZU5vdGlmaWNhdGlvbkNvbXBvbmVudDogUmVhY3QuRkM8QWN0aW9uYWJsZU5vdGlmaWNhdGlvblByb3BzPiA9ICh7IG5vdGlmaWNhdGlvbiB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhY3Rpb25CdXR0b25MYWJlbCxcbiAgICBvbkFjdGlvbkJ1dHRvbkNsaWNrID0gKCkgPT4ge30sXG4gICAgc3VidGl0bGUsXG4gICAga2luZCxcbiAgICB0aXRsZSxcbiAgICBjcml0aWNhbCxcbiAgICBwcm9ncmVzc0FjdGlvbkxhYmVsLFxuICAgIGlkLFxuICAgIC4uLnByb3BzXG4gIH0gPSBub3RpZmljYXRpb247XG5cbiAgY29uc3QgW2FjdGlvblRleHQsIHNldEFjdGlvblRleHRdID0gdXNlU3RhdGUoYWN0aW9uQnV0dG9uTGFiZWwpO1xuXG4gIGNvbnN0IGhhbmRsZUFjdGlvbkNsaWNrID0gKCkgPT4ge1xuICAgIG9uQWN0aW9uQnV0dG9uQ2xpY2soKTtcbiAgICBwcm9ncmVzc0FjdGlvbkxhYmVsICYmIHNldEFjdGlvblRleHQocHJvZ3Jlc3NBY3Rpb25MYWJlbCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8QWN0aW9uYWJsZU5vdGlmaWNhdGlvblxuICAgICAga2luZD17KGtpbmQgYXMgQWN0aW9uYWJsZU5vdGlmaWNhdGlvblR5cGUpIHx8ICdpbmZvJ31cbiAgICAgIGFjdGlvbkJ1dHRvbkxhYmVsPXthY3Rpb25UZXh0fVxuICAgICAgYXJpYUxhYmVsPVwiQ2xvc2VzIGFjdGlvbmFibGUgbm90aWZpY2F0aW9uXCJcbiAgICAgIG9uQWN0aW9uQnV0dG9uQ2xpY2s9e2hhbmRsZUFjdGlvbkNsaWNrfVxuICAgICAgc3RhdHVzSWNvbkRlc2NyaXB0aW9uPVwiQWN0aW9uYWJsZSBub3RpZmljYXRpb25cIlxuICAgICAgc3VidGl0bGU9e3N1YnRpdGxlfVxuICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgbG93Q29udHJhc3Q9e2NyaXRpY2FsfVxuICAgICAgaW5saW5lXG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn07XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VTdGF0ZSIsIkFjdGlvbmFibGVOb3RpZmljYXRpb24iLCJBY3Rpb25hYmxlTm90aWZpY2F0aW9uQ29tcG9uZW50Iiwibm90aWZpY2F0aW9uIiwiYWN0aW9uQnV0dG9uTGFiZWwiLCJvbkFjdGlvbkJ1dHRvbkNsaWNrIiwic3VidGl0bGUiLCJraW5kIiwidGl0bGUiLCJjcml0aWNhbCIsInByb2dyZXNzQWN0aW9uTGFiZWwiLCJpZCIsInByb3BzIiwiYWN0aW9uVGV4dCIsInNldEFjdGlvblRleHQiLCJoYW5kbGVBY3Rpb25DbGljayIsImFyaWFMYWJlbCIsInN0YXR1c0ljb25EZXNjcmlwdGlvbiIsImxvd0NvbnRyYXN0IiwiaW5saW5lIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/src/notifications/actionable-notification.component.tsx\n");
1668
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ActionableNotificationComponent: () => (/* binding */ ActionableNotificationComponent)\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 _carbon_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @carbon/react */ \"webpack/sharing/consume/default/@carbon/react/@carbon/react\");\n/* harmony import */ var _carbon_react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_carbon_react__WEBPACK_IMPORTED_MODULE_1__);\nfunction _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_with_holes(arr) {\n if (Array.isArray(arr)) return 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_limit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _non_iterable_rest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\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 _object_without_properties(source, excluded) {\n if (source == null) return {};\n var target = _object_without_properties_loose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _object_without_properties_loose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _sliced_to_array(arr, i) {\n return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();\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\nvar ActionableNotificationComponent = function(param) {\n var notification = param.notification;\n var actionButtonLabel = notification.actionButtonLabel, _notification_onActionButtonClick = notification.onActionButtonClick, onActionButtonClick = _notification_onActionButtonClick === void 0 ? function() {} : _notification_onActionButtonClick, subtitle = notification.subtitle, kind = notification.kind, title = notification.title, critical = notification.critical, progressActionLabel = notification.progressActionLabel, id = notification.id, props = _object_without_properties(notification, [\n \"actionButtonLabel\",\n \"onActionButtonClick\",\n \"subtitle\",\n \"kind\",\n \"title\",\n \"critical\",\n \"progressActionLabel\",\n \"id\"\n ]);\n var _useState = _sliced_to_array((0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(actionButtonLabel), 2), actionText = _useState[0], setActionText = _useState[1];\n var handleActionClick = function() {\n onActionButtonClick();\n if (progressActionLabel) {\n setActionText(progressActionLabel);\n }\n };\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.ActionableNotification, _object_spread({\n kind: kind || 'info',\n actionButtonLabel: actionText,\n ariaLabel: \"Closes actionable notification\",\n onActionButtonClick: handleActionClick,\n statusIconDescription: \"Actionable notification\",\n subtitle: subtitle,\n title: title,\n lowContrast: critical,\n inline: true\n }, props));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy9ub3RpZmljYXRpb25zL2FjdGlvbmFibGUtbm90aWZpY2F0aW9uLmNvbXBvbmVudC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUF3QztBQUNlO0FBd0JoRCxJQUFNRyxrQ0FBeUU7UUFBR0MscUJBQUFBO0lBQ3ZGLElBQ0VDLG9CQVNFRCxhQVRGQyx1REFTRUQsYUFSRkUscUJBQUFBLHFFQUFzQixZQUFPLHVDQUM3QkMsV0FPRUgsYUFQRkcsVUFDQUMsT0FNRUosYUFORkksTUFDQUMsUUFLRUwsYUFMRkssT0FDQUMsV0FJRU4sYUFKRk0sVUFDQUMsc0JBR0VQLGFBSEZPLHFCQUNBQyxLQUVFUixhQUZGUSxJQUNHQyxtQ0FDRFQ7UUFURkM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7O0lBSUYsSUFBb0NYLDZCQUFBQSwrQ0FBUUEsQ0FBQ0ksd0JBQXRDUyxhQUE2QmIsY0FBakJjLGdCQUFpQmQ7SUFFcEMsSUFBTWUsb0JBQW9CO1FBQ3hCVjtRQUNBLElBQUlLLHFCQUFxQjtZQUN2QkksY0FBY0o7UUFDaEI7SUFDRjtJQUVBLHFCQUNFLDJEQUFDVCxpRUFBc0JBO1FBQ3JCTSxNQUFNLFFBQXdDO1FBQzlDSCxtQkFBbUJTO1FBQ25CRyxXQUFVO1FBQ1ZYLHFCQUFxQlU7UUFDckJFLHVCQUFzQjtRQUN0QlgsVUFBVUE7UUFDVkUsT0FBT0E7UUFDUFUsYUFBYVQ7UUFDYlUsUUFBQUE7T0FDSVA7QUFHVixFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLXN0eWxlZ3VpZGUvc3JjL25vdGlmaWNhdGlvbnMvYWN0aW9uYWJsZS1ub3RpZmljYXRpb24uY29tcG9uZW50LnRzeD83MGQ2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEFjdGlvbmFibGVOb3RpZmljYXRpb24gfSBmcm9tICdAY2FyYm9uL3JlYWN0Jztcbi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBVSSAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbmFibGVOb3RpZmljYXRpb25Qcm9wcyB7XG4gIG5vdGlmaWNhdGlvbjogQWN0aW9uYWJsZU5vdGlmaWNhdGlvbk1ldGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uYWJsZU5vdGlmaWNhdGlvbkRlc2NyaXB0b3Ige1xuICBhY3Rpb25CdXR0b25MYWJlbDogc3RyaW5nO1xuICBvbkFjdGlvbkJ1dHRvbkNsaWNrKCk6IHZvaWQ7XG4gIG9uQ2xvc2U/KCk6IHZvaWQ7XG4gIHN1YnRpdGxlOiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBraW5kPzogQWN0aW9uYWJsZU5vdGlmaWNhdGlvblR5cGUgfCBzdHJpbmc7XG4gIGNyaXRpY2FsPzogYm9vbGVhbjtcbiAgcHJvZ3Jlc3NBY3Rpb25MYWJlbD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25hYmxlTm90aWZpY2F0aW9uTWV0YSBleHRlbmRzIEFjdGlvbmFibGVOb3RpZmljYXRpb25EZXNjcmlwdG9yIHtcbiAgaWQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgQWN0aW9uYWJsZU5vdGlmaWNhdGlvblR5cGUgPSAnZXJyb3InIHwgJ2luZm8nIHwgJ2luZm8tc3F1YXJlJyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJyB8ICd3YXJuaW5nLWFsdCc7XG5cbmV4cG9ydCBjb25zdCBBY3Rpb25hYmxlTm90aWZpY2F0aW9uQ29tcG9uZW50OiBSZWFjdC5GQzxBY3Rpb25hYmxlTm90aWZpY2F0aW9uUHJvcHM+ID0gKHsgbm90aWZpY2F0aW9uIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGFjdGlvbkJ1dHRvbkxhYmVsLFxuICAgIG9uQWN0aW9uQnV0dG9uQ2xpY2sgPSAoKSA9PiB7fSxcbiAgICBzdWJ0aXRsZSxcbiAgICBraW5kLFxuICAgIHRpdGxlLFxuICAgIGNyaXRpY2FsLFxuICAgIHByb2dyZXNzQWN0aW9uTGFiZWwsXG4gICAgaWQsXG4gICAgLi4ucHJvcHNcbiAgfSA9IG5vdGlmaWNhdGlvbjtcblxuICBjb25zdCBbYWN0aW9uVGV4dCwgc2V0QWN0aW9uVGV4dF0gPSB1c2VTdGF0ZShhY3Rpb25CdXR0b25MYWJlbCk7XG5cbiAgY29uc3QgaGFuZGxlQWN0aW9uQ2xpY2sgPSAoKSA9PiB7XG4gICAgb25BY3Rpb25CdXR0b25DbGljaygpO1xuICAgIGlmIChwcm9ncmVzc0FjdGlvbkxhYmVsKSB7XG4gICAgICBzZXRBY3Rpb25UZXh0KHByb2dyZXNzQWN0aW9uTGFiZWwpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxBY3Rpb25hYmxlTm90aWZpY2F0aW9uXG4gICAgICBraW5kPXsoa2luZCBhcyBBY3Rpb25hYmxlTm90aWZpY2F0aW9uVHlwZSkgfHwgJ2luZm8nfVxuICAgICAgYWN0aW9uQnV0dG9uTGFiZWw9e2FjdGlvblRleHR9XG4gICAgICBhcmlhTGFiZWw9XCJDbG9zZXMgYWN0aW9uYWJsZSBub3RpZmljYXRpb25cIlxuICAgICAgb25BY3Rpb25CdXR0b25DbGljaz17aGFuZGxlQWN0aW9uQ2xpY2t9XG4gICAgICBzdGF0dXNJY29uRGVzY3JpcHRpb249XCJBY3Rpb25hYmxlIG5vdGlmaWNhdGlvblwiXG4gICAgICBzdWJ0aXRsZT17c3VidGl0bGV9XG4gICAgICB0aXRsZT17dGl0bGV9XG4gICAgICBsb3dDb250cmFzdD17Y3JpdGljYWx9XG4gICAgICBpbmxpbmVcbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufTtcbiJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwiQWN0aW9uYWJsZU5vdGlmaWNhdGlvbiIsIkFjdGlvbmFibGVOb3RpZmljYXRpb25Db21wb25lbnQiLCJub3RpZmljYXRpb24iLCJhY3Rpb25CdXR0b25MYWJlbCIsIm9uQWN0aW9uQnV0dG9uQ2xpY2siLCJzdWJ0aXRsZSIsImtpbmQiLCJ0aXRsZSIsImNyaXRpY2FsIiwicHJvZ3Jlc3NBY3Rpb25MYWJlbCIsImlkIiwicHJvcHMiLCJhY3Rpb25UZXh0Iiwic2V0QWN0aW9uVGV4dCIsImhhbmRsZUFjdGlvbkNsaWNrIiwiYXJpYUxhYmVsIiwic3RhdHVzSWNvbkRlc2NyaXB0aW9uIiwibG93Q29udHJhc3QiLCJpbmxpbmUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/src/notifications/actionable-notification.component.tsx\n");
1669
1669
 
1670
1670
  /***/ }),
1671
1671
 
@@ -1985,7 +1985,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1985
1985
  \***************************************************************************/
1986
1986
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1987
1987
 
1988
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Snackbar: () => (/* binding */ Snackbar)\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 classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ \"../../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _carbon_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @carbon/react */ \"webpack/sharing/consume/default/@carbon/react/@carbon/react\");\n/* harmony import */ var _carbon_react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_carbon_react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _snackbar_module_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./snackbar.module.scss */ \"../../framework/esm-styleguide/src/snackbars/snackbar.module.scss\");\n/** @module @category UI */ 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_with_holes(arr) {\n if (Array.isArray(arr)) return 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_limit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _non_iterable_rest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\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 _object_without_properties(source, excluded) {\n if (source == null) return {};\n var target = _object_without_properties_loose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _object_without_properties_loose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _sliced_to_array(arr, i) {\n return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();\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\nvar Snackbar = function(param) {\n var snackbar = param.snackbar, removeSnackBarFromDom = param.closeSnackbar;\n var _snackbar_actionButtonLabel = snackbar.actionButtonLabel, actionButtonLabel = _snackbar_actionButtonLabel === void 0 ? '' : _snackbar_actionButtonLabel, _snackbar_kind = snackbar.kind, kind = _snackbar_kind === void 0 ? 'success' : _snackbar_kind, _snackbar_onActionButtonClick = snackbar.onActionButtonClick, onActionButtonClick = _snackbar_onActionButtonClick === void 0 ? function() {} : _snackbar_onActionButtonClick, _snackbar_isLowContrast = snackbar.isLowContrast, isLowContrast = _snackbar_isLowContrast === void 0 ? kind !== 'error' : _snackbar_isLowContrast, progressActionLabel = snackbar.progressActionLabel, _snackbar_subtitle = snackbar.subtitle, subtitle = _snackbar_subtitle === void 0 ? '' : _snackbar_subtitle, _snackbar_timeoutInMs = snackbar.timeoutInMs, timeoutInMs = _snackbar_timeoutInMs === void 0 ? 5000 : _snackbar_timeoutInMs, _snackbar_autoClose = snackbar.autoClose, autoClose = _snackbar_autoClose === void 0 ? kind !== 'error' : _snackbar_autoClose, title = snackbar.title, id = snackbar.id, props = _object_without_properties(snackbar, [\n \"actionButtonLabel\",\n \"kind\",\n \"onActionButtonClick\",\n \"isLowContrast\",\n \"progressActionLabel\",\n \"subtitle\",\n \"timeoutInMs\",\n \"autoClose\",\n \"title\",\n \"id\"\n ]);\n var _useState = _sliced_to_array((0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(actionButtonLabel), 2), actionText = _useState[0], setActionText = _useState[1];\n var _useState1 = _sliced_to_array((0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true), 2), applyAnimation = _useState1[0], setApplyAnimation = _useState1[1];\n var _useState2 = _sliced_to_array((0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), 2), isClosing = _useState2[0], setIsClosing = _useState2[1];\n var closeSnackbar = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function() {\n // This is to add a slide out animation before closing the snackbar\n // The animation lasts for 250ms, thus the timeout\n setTimeout(removeSnackBarFromDom, 250);\n }, [\n removeSnackBarFromDom\n ]);\n var onCloseSnackbar = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function() {\n setIsClosing(true);\n closeSnackbar();\n }, [\n closeSnackbar\n ]);\n var handleActionClick = function() {\n onActionButtonClick();\n onCloseSnackbar();\n progressActionLabel && setActionText(progressActionLabel);\n };\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n if (autoClose) {\n var timeoutId = setTimeout(onCloseSnackbar, timeoutInMs);\n return function() {\n return clearTimeout(timeoutId);\n };\n }\n }, [\n timeoutInMs,\n autoClose,\n onCloseSnackbar\n ]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n setApplyAnimation(false);\n window.setTimeout(function() {\n setApplyAnimation(true);\n }, 0);\n }, []);\n var _obj;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_2__.ActionableNotification, _object_spread({\n actionButtonLabel: actionText,\n \"aria-label\": \"Close snackbar\",\n className: classnames__WEBPACK_IMPORTED_MODULE_1___default()(_snackbar_module_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].slideIn, (_obj = {}, _define_property(_obj, _snackbar_module_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].animated, applyAnimation), _define_property(_obj, _snackbar_module_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].slideOut, isClosing), _obj)),\n inline: true,\n kind: kind,\n lowContrast: isLowContrast,\n onActionButtonClick: handleActionClick,\n onClose: closeSnackbar,\n statusIconDescription: \"Snackbar notification\",\n subtitle: subtitle,\n title: title\n }, props));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy9zbmFja2JhcnMvc25hY2tiYXIuY29tcG9uZW50LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLHlCQUF5Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDdUM7QUFDNUI7QUFDbUI7QUFDWDtBQTBCckMsSUFBTU8sV0FBb0M7UUFBR0MsaUJBQUFBLFVBQVVDLDhCQUFBQTtJQUM1RCxrQ0FZSUQsU0FYRkcsbUJBQUFBLDZEQUFvQixtREFXbEJILFNBVkZJLE1BQUFBLG1DQUFPLDREQVVMSixTQVRGSyxxQkFBQUEsaUVBQXNCLFlBQU8sNkRBUzNCTCxTQVJGTSxlQUFBQSxxREFBZ0JGLFNBQVMsbUNBQ3pCRyxzQkFPRVAsU0FQRk8sMENBT0VQLFNBTkZRLFVBQUFBLDJDQUFXLGlEQU1UUixTQUxGUyxhQUFBQSxpREFBYyxvREFLWlQsU0FKRlUsV0FBQUEsNkNBQVlOLFNBQVMsK0JBQ3JCTyxRQUdFWCxTQUhGVyxPQUNBQyxLQUVFWixTQUZGWSxJQUNHQyxtQ0FDRGI7UUFYRkc7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7O0lBSUYsSUFBb0NsQiw2QkFBQUEsK0NBQVFBLENBQUNTLHdCQUF0Q1csYUFBNkJwQixjQUFqQnFCLGdCQUFpQnJCO0lBQ3BDLElBQTRDQSw4QkFBQUEsK0NBQVFBLENBQUMsV0FBOUNzQixpQkFBcUN0QixlQUFyQnVCLG9CQUFxQnZCO0lBQzVDLElBQWtDQSw4QkFBQUEsK0NBQVFBLENBQUMsWUFBcEN3QixZQUEyQnhCLGVBQWhCeUIsZUFBZ0J6QjtJQUVsQyxJQUFNTyxnQkFBZ0JSLGtEQUFXQSxDQUFDO1FBQ2hDLG1FQUFtRTtRQUNuRSxrREFBa0Q7UUFDbEQyQixXQUFXbEIsdUJBQXVCO0lBQ3BDLEdBQUc7UUFBQ0E7S0FBc0I7SUFFMUIsSUFBTW1CLGtCQUFrQjVCLGtEQUFXQSxDQUFDO1FBQ2xDMEIsYUFBYTtRQUNibEI7SUFDRixHQUFHO1FBQUNBO0tBQWM7SUFFbEIsSUFBTXFCLG9CQUFvQjtRQUN4QmpCO1FBQ0FnQjtRQUNBZCx1QkFBdUJRLGNBQWNSO0lBQ3ZDO0lBRUFaLGdEQUFTQSxDQUFDO1FBQ1IsSUFBSWUsV0FBVztZQUNiLElBQU1hLFlBQVlILFdBQVdDLGlCQUFpQlo7WUFDOUMsT0FBTzt1QkFBTWUsYUFBYUQ7O1FBQzVCO0lBQ0YsR0FBRztRQUFDZDtRQUFhQztRQUFXVztLQUFnQjtJQUU1QzFCLGdEQUFTQSxDQUFDO1FBQ1JzQixrQkFBa0I7UUFFbEJRLE9BQU9MLFVBQVUsQ0FBQztZQUNoQkgsa0JBQWtCO1FBQ3BCLEdBQUc7SUFDTCxHQUFHLEVBQUU7UUFNcUM7SUFKMUMscUJBQ0UsMkRBQUNwQixpRUFBc0JBO1FBQ3JCTSxtQkFBbUJXO1FBQ25CWSxjQUFXO1FBQ1hDLFdBQVcvQixpREFBVUEsQ0FBQ0UsNkRBQU1BLENBQUM4QixPQUFPLEdBQUUsV0FDcEMsaUJBRG9DLE1BQ25DOUIsNkRBQU1BLENBQUMrQixRQUFRLEVBQUdiLGlCQUNuQixpQkFGb0MsTUFFbkNsQiw2REFBTUEsQ0FBQ2dDLFFBQVEsRUFBR1osWUFGaUI7UUFJdENhLFFBQUFBO1FBQ0EzQixNQUFNQTtRQUNONEIsYUFBYTFCO1FBQ2JELHFCQUFxQmlCO1FBQ3JCVyxTQUFTaEM7UUFDVGlDLHVCQUFzQjtRQUN0QjFCLFVBQVVBO1FBQ1ZHLE9BQU9BO09BQ0hFO0FBR1YsRUFBRSIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy9zbmFja2JhcnMvc25hY2tiYXIuY29tcG9uZW50LnRzeD85NDJhIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBVSSAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBBY3Rpb25hYmxlTm90aWZpY2F0aW9uIH0gZnJvbSAnQGNhcmJvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc25hY2tiYXIubW9kdWxlLnNjc3MnO1xuXG4vLyBEZXNpZ24gZG9jdW1lbnRhdGlvbiBmb3IgU25hY2tiYXJzIGh0dHBzOi8vemVyb2hlaWdodC5jb20vMjNhMDgwZTM4L3AvNjgzNTgwLW5vdGlmaWNhdGlvbnMvdC80NjhiYWZcbmV4cG9ydCBpbnRlcmZhY2UgU25hY2tiYXJQcm9wcyB7XG4gIHNuYWNrYmFyOiBTbmFja2Jhck1ldGE7XG4gIGNsb3NlU25hY2tiYXIoKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTbmFja2JhckRlc2NyaXB0b3Ige1xuICBhY3Rpb25CdXR0b25MYWJlbD86IHN0cmluZztcbiAgaXNMb3dDb250cmFzdD86IGJvb2xlYW47XG4gIGtpbmQ/OiBTbmFja2JhclR5cGUgfCBzdHJpbmc7XG4gIG9uQWN0aW9uQnV0dG9uQ2xpY2s/OiAoKSA9PiB2b2lkO1xuICBwcm9ncmVzc0FjdGlvbkxhYmVsPzogc3RyaW5nO1xuICBzdWJ0aXRsZT86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgdGltZW91dEluTXM/OiBudW1iZXI7XG4gIGF1dG9DbG9zZT86IGJvb2xlYW47XG4gIHRpdGxlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU25hY2tiYXJNZXRhIGV4dGVuZHMgU25hY2tiYXJEZXNjcmlwdG9yIHtcbiAgaWQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgU25hY2tiYXJUeXBlID0gJ2Vycm9yJyB8ICdpbmZvJyB8ICdpbmZvLXNxdWFyZScgfCAnc3VjY2VzcycgfCAnd2FybmluZycgfCAnd2FybmluZy1hbHQnO1xuXG5leHBvcnQgY29uc3QgU25hY2tiYXI6IFJlYWN0LkZDPFNuYWNrYmFyUHJvcHM+ID0gKHsgc25hY2tiYXIsIGNsb3NlU25hY2tiYXI6IHJlbW92ZVNuYWNrQmFyRnJvbURvbSB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhY3Rpb25CdXR0b25MYWJlbCA9ICcnLFxuICAgIGtpbmQgPSAnc3VjY2VzcycsXG4gICAgb25BY3Rpb25CdXR0b25DbGljayA9ICgpID0+IHt9LFxuICAgIGlzTG93Q29udHJhc3QgPSBraW5kICE9PSAnZXJyb3InLFxuICAgIHByb2dyZXNzQWN0aW9uTGFiZWwsXG4gICAgc3VidGl0bGUgPSAnJyxcbiAgICB0aW1lb3V0SW5NcyA9IDUwMDAsXG4gICAgYXV0b0Nsb3NlID0ga2luZCAhPT0gJ2Vycm9yJyxcbiAgICB0aXRsZSxcbiAgICBpZCxcbiAgICAuLi5wcm9wc1xuICB9ID0gc25hY2tiYXI7XG5cbiAgY29uc3QgW2FjdGlvblRleHQsIHNldEFjdGlvblRleHRdID0gdXNlU3RhdGUoYWN0aW9uQnV0dG9uTGFiZWwpO1xuICBjb25zdCBbYXBwbHlBbmltYXRpb24sIHNldEFwcGx5QW5pbWF0aW9uXSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbaXNDbG9zaW5nLCBzZXRJc0Nsb3NpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGNsb3NlU25hY2tiYXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gVGhpcyBpcyB0byBhZGQgYSBzbGlkZSBvdXQgYW5pbWF0aW9uIGJlZm9yZSBjbG9zaW5nIHRoZSBzbmFja2JhclxuICAgIC8vIFRoZSBhbmltYXRpb24gbGFzdHMgZm9yIDI1MG1zLCB0aHVzIHRoZSB0aW1lb3V0XG4gICAgc2V0VGltZW91dChyZW1vdmVTbmFja0JhckZyb21Eb20sIDI1MCk7XG4gIH0sIFtyZW1vdmVTbmFja0JhckZyb21Eb21dKTtcblxuICBjb25zdCBvbkNsb3NlU25hY2tiYXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SXNDbG9zaW5nKHRydWUpO1xuICAgIGNsb3NlU25hY2tiYXIoKTtcbiAgfSwgW2Nsb3NlU25hY2tiYXJdKTtcblxuICBjb25zdCBoYW5kbGVBY3Rpb25DbGljayA9ICgpID0+IHtcbiAgICBvbkFjdGlvbkJ1dHRvbkNsaWNrKCk7XG4gICAgb25DbG9zZVNuYWNrYmFyKCk7XG4gICAgcHJvZ3Jlc3NBY3Rpb25MYWJlbCAmJiBzZXRBY3Rpb25UZXh0KHByb2dyZXNzQWN0aW9uTGFiZWwpO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGF1dG9DbG9zZSkge1xuICAgICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dChvbkNsb3NlU25hY2tiYXIsIHRpbWVvdXRJbk1zKTtcbiAgICAgIHJldHVybiAoKSA9PiBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICB9XG4gIH0sIFt0aW1lb3V0SW5NcywgYXV0b0Nsb3NlLCBvbkNsb3NlU25hY2tiYXJdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldEFwcGx5QW5pbWF0aW9uKGZhbHNlKTtcblxuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldEFwcGx5QW5pbWF0aW9uKHRydWUpO1xuICAgIH0sIDApO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8QWN0aW9uYWJsZU5vdGlmaWNhdGlvblxuICAgICAgYWN0aW9uQnV0dG9uTGFiZWw9e2FjdGlvblRleHR9XG4gICAgICBhcmlhLWxhYmVsPVwiQ2xvc2Ugc25hY2tiYXJcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKHN0eWxlcy5zbGlkZUluLCB7XG4gICAgICAgIFtzdHlsZXMuYW5pbWF0ZWRdOiBhcHBseUFuaW1hdGlvbixcbiAgICAgICAgW3N0eWxlcy5zbGlkZU91dF06IGlzQ2xvc2luZyxcbiAgICAgIH0pfVxuICAgICAgaW5saW5lXG4gICAgICBraW5kPXtraW5kIGFzIFNuYWNrYmFyVHlwZX1cbiAgICAgIGxvd0NvbnRyYXN0PXtpc0xvd0NvbnRyYXN0fVxuICAgICAgb25BY3Rpb25CdXR0b25DbGljaz17aGFuZGxlQWN0aW9uQ2xpY2t9XG4gICAgICBvbkNsb3NlPXtjbG9zZVNuYWNrYmFyfVxuICAgICAgc3RhdHVzSWNvbkRlc2NyaXB0aW9uPVwiU25hY2tiYXIgbm90aWZpY2F0aW9uXCJcbiAgICAgIHN1YnRpdGxlPXtzdWJ0aXRsZX1cbiAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufTtcbiJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJjbGFzc25hbWVzIiwiQWN0aW9uYWJsZU5vdGlmaWNhdGlvbiIsInN0eWxlcyIsIlNuYWNrYmFyIiwic25hY2tiYXIiLCJjbG9zZVNuYWNrYmFyIiwicmVtb3ZlU25hY2tCYXJGcm9tRG9tIiwiYWN0aW9uQnV0dG9uTGFiZWwiLCJraW5kIiwib25BY3Rpb25CdXR0b25DbGljayIsImlzTG93Q29udHJhc3QiLCJwcm9ncmVzc0FjdGlvbkxhYmVsIiwic3VidGl0bGUiLCJ0aW1lb3V0SW5NcyIsImF1dG9DbG9zZSIsInRpdGxlIiwiaWQiLCJwcm9wcyIsImFjdGlvblRleHQiLCJzZXRBY3Rpb25UZXh0IiwiYXBwbHlBbmltYXRpb24iLCJzZXRBcHBseUFuaW1hdGlvbiIsImlzQ2xvc2luZyIsInNldElzQ2xvc2luZyIsInNldFRpbWVvdXQiLCJvbkNsb3NlU25hY2tiYXIiLCJoYW5kbGVBY3Rpb25DbGljayIsInRpbWVvdXRJZCIsImNsZWFyVGltZW91dCIsIndpbmRvdyIsImFyaWEtbGFiZWwiLCJjbGFzc05hbWUiLCJzbGlkZUluIiwiYW5pbWF0ZWQiLCJzbGlkZU91dCIsImlubGluZSIsImxvd0NvbnRyYXN0Iiwib25DbG9zZSIsInN0YXR1c0ljb25EZXNjcmlwdGlvbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/src/snackbars/snackbar.component.tsx\n");
1988
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Snackbar: () => (/* binding */ Snackbar)\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 classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ \"../../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _carbon_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @carbon/react */ \"webpack/sharing/consume/default/@carbon/react/@carbon/react\");\n/* harmony import */ var _carbon_react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_carbon_react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _snackbar_module_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./snackbar.module.scss */ \"../../framework/esm-styleguide/src/snackbars/snackbar.module.scss\");\n/** @module @category UI */ 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_with_holes(arr) {\n if (Array.isArray(arr)) return 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_limit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _non_iterable_rest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\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 _object_without_properties(source, excluded) {\n if (source == null) return {};\n var target = _object_without_properties_loose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _object_without_properties_loose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _sliced_to_array(arr, i) {\n return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();\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\nvar Snackbar = function(param) {\n var snackbar = param.snackbar, removeSnackBarFromDom = param.closeSnackbar;\n var _snackbar_actionButtonLabel = snackbar.actionButtonLabel, actionButtonLabel = _snackbar_actionButtonLabel === void 0 ? '' : _snackbar_actionButtonLabel, _snackbar_kind = snackbar.kind, kind = _snackbar_kind === void 0 ? 'success' : _snackbar_kind, _snackbar_onActionButtonClick = snackbar.onActionButtonClick, onActionButtonClick = _snackbar_onActionButtonClick === void 0 ? function() {} : _snackbar_onActionButtonClick, _snackbar_isLowContrast = snackbar.isLowContrast, isLowContrast = _snackbar_isLowContrast === void 0 ? kind !== 'error' : _snackbar_isLowContrast, progressActionLabel = snackbar.progressActionLabel, _snackbar_subtitle = snackbar.subtitle, subtitle = _snackbar_subtitle === void 0 ? '' : _snackbar_subtitle, _snackbar_timeoutInMs = snackbar.timeoutInMs, timeoutInMs = _snackbar_timeoutInMs === void 0 ? 5000 : _snackbar_timeoutInMs, _snackbar_autoClose = snackbar.autoClose, autoClose = _snackbar_autoClose === void 0 ? kind !== 'error' : _snackbar_autoClose, title = snackbar.title, id = snackbar.id, props = _object_without_properties(snackbar, [\n \"actionButtonLabel\",\n \"kind\",\n \"onActionButtonClick\",\n \"isLowContrast\",\n \"progressActionLabel\",\n \"subtitle\",\n \"timeoutInMs\",\n \"autoClose\",\n \"title\",\n \"id\"\n ]);\n var _useState = _sliced_to_array((0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(actionButtonLabel), 2), actionText = _useState[0], setActionText = _useState[1];\n var _useState1 = _sliced_to_array((0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true), 2), applyAnimation = _useState1[0], setApplyAnimation = _useState1[1];\n var _useState2 = _sliced_to_array((0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), 2), isClosing = _useState2[0], setIsClosing = _useState2[1];\n var closeSnackbar = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function() {\n // This is to add a slide out animation before closing the snackbar\n // The animation lasts for 250ms, thus the timeout\n setTimeout(removeSnackBarFromDom, 250);\n }, [\n removeSnackBarFromDom\n ]);\n var onCloseSnackbar = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function() {\n setIsClosing(true);\n closeSnackbar();\n }, [\n closeSnackbar\n ]);\n var handleActionClick = function() {\n onActionButtonClick();\n onCloseSnackbar();\n if (progressActionLabel) {\n setActionText(progressActionLabel);\n }\n };\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n if (autoClose) {\n var timeoutId = setTimeout(onCloseSnackbar, timeoutInMs);\n return function() {\n return clearTimeout(timeoutId);\n };\n }\n }, [\n timeoutInMs,\n autoClose,\n onCloseSnackbar\n ]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n setApplyAnimation(false);\n window.setTimeout(function() {\n setApplyAnimation(true);\n }, 0);\n }, []);\n var _obj;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_2__.ActionableNotification, _object_spread({\n actionButtonLabel: actionText,\n \"aria-label\": \"Close snackbar\",\n className: classnames__WEBPACK_IMPORTED_MODULE_1___default()(_snackbar_module_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].slideIn, (_obj = {}, _define_property(_obj, _snackbar_module_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].animated, applyAnimation), _define_property(_obj, _snackbar_module_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].slideOut, isClosing), _obj)),\n inline: true,\n kind: kind,\n lowContrast: isLowContrast,\n onActionButtonClick: handleActionClick,\n onClose: closeSnackbar,\n statusIconDescription: \"Snackbar notification\",\n subtitle: subtitle,\n title: title\n }, props));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy9zbmFja2JhcnMvc25hY2tiYXIuY29tcG9uZW50LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLHlCQUF5Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDdUM7QUFDNUI7QUFDbUI7QUFDWDtBQTBCckMsSUFBTU8sV0FBb0M7UUFBR0MsaUJBQUFBLFVBQVVDLDhCQUFBQTtJQUM1RCxrQ0FZSUQsU0FYRkcsbUJBQUFBLDZEQUFvQixtREFXbEJILFNBVkZJLE1BQUFBLG1DQUFPLDREQVVMSixTQVRGSyxxQkFBQUEsaUVBQXNCLFlBQU8sNkRBUzNCTCxTQVJGTSxlQUFBQSxxREFBZ0JGLFNBQVMsbUNBQ3pCRyxzQkFPRVAsU0FQRk8sMENBT0VQLFNBTkZRLFVBQUFBLDJDQUFXLGlEQU1UUixTQUxGUyxhQUFBQSxpREFBYyxvREFLWlQsU0FKRlUsV0FBQUEsNkNBQVlOLFNBQVMsK0JBQ3JCTyxRQUdFWCxTQUhGVyxPQUNBQyxLQUVFWixTQUZGWSxJQUNHQyxtQ0FDRGI7UUFYRkc7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7O0lBSUYsSUFBb0NsQiw2QkFBQUEsK0NBQVFBLENBQUNTLHdCQUF0Q1csYUFBNkJwQixjQUFqQnFCLGdCQUFpQnJCO0lBQ3BDLElBQTRDQSw4QkFBQUEsK0NBQVFBLENBQUMsV0FBOUNzQixpQkFBcUN0QixlQUFyQnVCLG9CQUFxQnZCO0lBQzVDLElBQWtDQSw4QkFBQUEsK0NBQVFBLENBQUMsWUFBcEN3QixZQUEyQnhCLGVBQWhCeUIsZUFBZ0J6QjtJQUVsQyxJQUFNTyxnQkFBZ0JSLGtEQUFXQSxDQUFDO1FBQ2hDLG1FQUFtRTtRQUNuRSxrREFBa0Q7UUFDbEQyQixXQUFXbEIsdUJBQXVCO0lBQ3BDLEdBQUc7UUFBQ0E7S0FBc0I7SUFFMUIsSUFBTW1CLGtCQUFrQjVCLGtEQUFXQSxDQUFDO1FBQ2xDMEIsYUFBYTtRQUNibEI7SUFDRixHQUFHO1FBQUNBO0tBQWM7SUFFbEIsSUFBTXFCLG9CQUFvQjtRQUN4QmpCO1FBQ0FnQjtRQUNBLElBQUlkLHFCQUFxQjtZQUN2QlEsY0FBY1I7UUFDaEI7SUFDRjtJQUVBWixnREFBU0EsQ0FBQztRQUNSLElBQUllLFdBQVc7WUFDYixJQUFNYSxZQUFZSCxXQUFXQyxpQkFBaUJaO1lBQzlDLE9BQU87dUJBQU1lLGFBQWFEOztRQUM1QjtJQUNGLEdBQUc7UUFBQ2Q7UUFBYUM7UUFBV1c7S0FBZ0I7SUFFNUMxQixnREFBU0EsQ0FBQztRQUNSc0Isa0JBQWtCO1FBRWxCUSxPQUFPTCxVQUFVLENBQUM7WUFDaEJILGtCQUFrQjtRQUNwQixHQUFHO0lBQ0wsR0FBRyxFQUFFO1FBTXFDO0lBSjFDLHFCQUNFLDJEQUFDcEIsaUVBQXNCQTtRQUNyQk0sbUJBQW1CVztRQUNuQlksY0FBVztRQUNYQyxXQUFXL0IsaURBQVVBLENBQUNFLDZEQUFNQSxDQUFDOEIsT0FBTyxHQUFFLFdBQ3BDLGlCQURvQyxNQUNuQzlCLDZEQUFNQSxDQUFDK0IsUUFBUSxFQUFHYixpQkFDbkIsaUJBRm9DLE1BRW5DbEIsNkRBQU1BLENBQUNnQyxRQUFRLEVBQUdaLFlBRmlCO1FBSXRDYSxRQUFBQTtRQUNBM0IsTUFBTUE7UUFDTjRCLGFBQWExQjtRQUNiRCxxQkFBcUJpQjtRQUNyQlcsU0FBU2hDO1FBQ1RpQyx1QkFBc0I7UUFDdEIxQixVQUFVQTtRQUNWRyxPQUFPQTtPQUNIRTtBQUdWLEVBQUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tc3R5bGVndWlkZS9zcmMvc25hY2tiYXJzL3NuYWNrYmFyLmNvbXBvbmVudC50c3g/OTQyYSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgVUkgKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgQWN0aW9uYWJsZU5vdGlmaWNhdGlvbiB9IGZyb20gJ0BjYXJib24vcmVhY3QnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3NuYWNrYmFyLm1vZHVsZS5zY3NzJztcblxuLy8gRGVzaWduIGRvY3VtZW50YXRpb24gZm9yIFNuYWNrYmFycyBodHRwczovL3plcm9oZWlnaHQuY29tLzIzYTA4MGUzOC9wLzY4MzU4MC1ub3RpZmljYXRpb25zL3QvNDY4YmFmXG5leHBvcnQgaW50ZXJmYWNlIFNuYWNrYmFyUHJvcHMge1xuICBzbmFja2JhcjogU25hY2tiYXJNZXRhO1xuICBjbG9zZVNuYWNrYmFyKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU25hY2tiYXJEZXNjcmlwdG9yIHtcbiAgYWN0aW9uQnV0dG9uTGFiZWw/OiBzdHJpbmc7XG4gIGlzTG93Q29udHJhc3Q/OiBib29sZWFuO1xuICBraW5kPzogU25hY2tiYXJUeXBlIHwgc3RyaW5nO1xuICBvbkFjdGlvbkJ1dHRvbkNsaWNrPzogKCkgPT4gdm9pZDtcbiAgcHJvZ3Jlc3NBY3Rpb25MYWJlbD86IHN0cmluZztcbiAgc3VidGl0bGU/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIHRpbWVvdXRJbk1zPzogbnVtYmVyO1xuICBhdXRvQ2xvc2U/OiBib29sZWFuO1xuICB0aXRsZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNuYWNrYmFyTWV0YSBleHRlbmRzIFNuYWNrYmFyRGVzY3JpcHRvciB7XG4gIGlkOiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIFNuYWNrYmFyVHlwZSA9ICdlcnJvcicgfCAnaW5mbycgfCAnaW5mby1zcXVhcmUnIHwgJ3N1Y2Nlc3MnIHwgJ3dhcm5pbmcnIHwgJ3dhcm5pbmctYWx0JztcblxuZXhwb3J0IGNvbnN0IFNuYWNrYmFyOiBSZWFjdC5GQzxTbmFja2JhclByb3BzPiA9ICh7IHNuYWNrYmFyLCBjbG9zZVNuYWNrYmFyOiByZW1vdmVTbmFja0JhckZyb21Eb20gfSkgPT4ge1xuICBjb25zdCB7XG4gICAgYWN0aW9uQnV0dG9uTGFiZWwgPSAnJyxcbiAgICBraW5kID0gJ3N1Y2Nlc3MnLFxuICAgIG9uQWN0aW9uQnV0dG9uQ2xpY2sgPSAoKSA9PiB7fSxcbiAgICBpc0xvd0NvbnRyYXN0ID0ga2luZCAhPT0gJ2Vycm9yJyxcbiAgICBwcm9ncmVzc0FjdGlvbkxhYmVsLFxuICAgIHN1YnRpdGxlID0gJycsXG4gICAgdGltZW91dEluTXMgPSA1MDAwLFxuICAgIGF1dG9DbG9zZSA9IGtpbmQgIT09ICdlcnJvcicsXG4gICAgdGl0bGUsXG4gICAgaWQsXG4gICAgLi4ucHJvcHNcbiAgfSA9IHNuYWNrYmFyO1xuXG4gIGNvbnN0IFthY3Rpb25UZXh0LCBzZXRBY3Rpb25UZXh0XSA9IHVzZVN0YXRlKGFjdGlvbkJ1dHRvbkxhYmVsKTtcbiAgY29uc3QgW2FwcGx5QW5pbWF0aW9uLCBzZXRBcHBseUFuaW1hdGlvbl0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgY29uc3QgW2lzQ2xvc2luZywgc2V0SXNDbG9zaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBjbG9zZVNuYWNrYmFyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIC8vIFRoaXMgaXMgdG8gYWRkIGEgc2xpZGUgb3V0IGFuaW1hdGlvbiBiZWZvcmUgY2xvc2luZyB0aGUgc25hY2tiYXJcbiAgICAvLyBUaGUgYW5pbWF0aW9uIGxhc3RzIGZvciAyNTBtcywgdGh1cyB0aGUgdGltZW91dFxuICAgIHNldFRpbWVvdXQocmVtb3ZlU25hY2tCYXJGcm9tRG9tLCAyNTApO1xuICB9LCBbcmVtb3ZlU25hY2tCYXJGcm9tRG9tXSk7XG5cbiAgY29uc3Qgb25DbG9zZVNuYWNrYmFyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldElzQ2xvc2luZyh0cnVlKTtcbiAgICBjbG9zZVNuYWNrYmFyKCk7XG4gIH0sIFtjbG9zZVNuYWNrYmFyXSk7XG5cbiAgY29uc3QgaGFuZGxlQWN0aW9uQ2xpY2sgPSAoKSA9PiB7XG4gICAgb25BY3Rpb25CdXR0b25DbGljaygpO1xuICAgIG9uQ2xvc2VTbmFja2JhcigpO1xuICAgIGlmIChwcm9ncmVzc0FjdGlvbkxhYmVsKSB7XG4gICAgICBzZXRBY3Rpb25UZXh0KHByb2dyZXNzQWN0aW9uTGFiZWwpO1xuICAgIH1cbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhdXRvQ2xvc2UpIHtcbiAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQob25DbG9zZVNuYWNrYmFyLCB0aW1lb3V0SW5Ncyk7XG4gICAgICByZXR1cm4gKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgfVxuICB9LCBbdGltZW91dEluTXMsIGF1dG9DbG9zZSwgb25DbG9zZVNuYWNrYmFyXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRBcHBseUFuaW1hdGlvbihmYWxzZSk7XG5cbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZXRBcHBseUFuaW1hdGlvbih0cnVlKTtcbiAgICB9LCAwKTtcbiAgfSwgW10pO1xuXG4gIHJldHVybiAoXG4gICAgPEFjdGlvbmFibGVOb3RpZmljYXRpb25cbiAgICAgIGFjdGlvbkJ1dHRvbkxhYmVsPXthY3Rpb25UZXh0fVxuICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIHNuYWNrYmFyXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhzdHlsZXMuc2xpZGVJbiwge1xuICAgICAgICBbc3R5bGVzLmFuaW1hdGVkXTogYXBwbHlBbmltYXRpb24sXG4gICAgICAgIFtzdHlsZXMuc2xpZGVPdXRdOiBpc0Nsb3NpbmcsXG4gICAgICB9KX1cbiAgICAgIGlubGluZVxuICAgICAga2luZD17a2luZCBhcyBTbmFja2JhclR5cGV9XG4gICAgICBsb3dDb250cmFzdD17aXNMb3dDb250cmFzdH1cbiAgICAgIG9uQWN0aW9uQnV0dG9uQ2xpY2s9e2hhbmRsZUFjdGlvbkNsaWNrfVxuICAgICAgb25DbG9zZT17Y2xvc2VTbmFja2Jhcn1cbiAgICAgIHN0YXR1c0ljb25EZXNjcmlwdGlvbj1cIlNuYWNrYmFyIG5vdGlmaWNhdGlvblwiXG4gICAgICBzdWJ0aXRsZT17c3VidGl0bGV9XG4gICAgICB0aXRsZT17dGl0bGV9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn07XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VDYWxsYmFjayIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiY2xhc3NuYW1lcyIsIkFjdGlvbmFibGVOb3RpZmljYXRpb24iLCJzdHlsZXMiLCJTbmFja2JhciIsInNuYWNrYmFyIiwiY2xvc2VTbmFja2JhciIsInJlbW92ZVNuYWNrQmFyRnJvbURvbSIsImFjdGlvbkJ1dHRvbkxhYmVsIiwia2luZCIsIm9uQWN0aW9uQnV0dG9uQ2xpY2siLCJpc0xvd0NvbnRyYXN0IiwicHJvZ3Jlc3NBY3Rpb25MYWJlbCIsInN1YnRpdGxlIiwidGltZW91dEluTXMiLCJhdXRvQ2xvc2UiLCJ0aXRsZSIsImlkIiwicHJvcHMiLCJhY3Rpb25UZXh0Iiwic2V0QWN0aW9uVGV4dCIsImFwcGx5QW5pbWF0aW9uIiwic2V0QXBwbHlBbmltYXRpb24iLCJpc0Nsb3NpbmciLCJzZXRJc0Nsb3NpbmciLCJzZXRUaW1lb3V0Iiwib25DbG9zZVNuYWNrYmFyIiwiaGFuZGxlQWN0aW9uQ2xpY2siLCJ0aW1lb3V0SWQiLCJjbGVhclRpbWVvdXQiLCJ3aW5kb3ciLCJhcmlhLWxhYmVsIiwiY2xhc3NOYW1lIiwic2xpZGVJbiIsImFuaW1hdGVkIiwic2xpZGVPdXQiLCJpbmxpbmUiLCJsb3dDb250cmFzdCIsIm9uQ2xvc2UiLCJzdGF0dXNJY29uRGVzY3JpcHRpb24iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/src/snackbars/snackbar.component.tsx\n");
1989
1989
 
1990
1990
  /***/ }),
1991
1991
 
@@ -2075,7 +2075,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2075
2075
  \*************************************************************************************************/
2076
2076
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2077
2077
 
2078
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ WorkspaceContainer: () => (/* binding */ WorkspaceContainer)\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 react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"webpack/sharing/consume/default/react-i18next/react-i18next\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! classnames */ \"../../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _carbon_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @carbon/react */ \"webpack/sharing/consume/default/@carbon/react/@carbon/react\");\n/* harmony import */ var _carbon_react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_carbon_react__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _carbon_react_icons__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @carbon/react/icons */ \"../../../node_modules/@carbon/icons-react/es/generated/bucket-11.js\");\n/* harmony import */ var _carbon_react_icons__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @carbon/react/icons */ \"../../../node_modules/@carbon/icons-react/es/generated/bucket-5.js\");\n/* harmony import */ var _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @openmrs/esm-react-utils */ \"../../framework/esm-react-utils/dist/index.js\");\n/* harmony import */ var _openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @openmrs/esm-translations */ \"../../framework/esm-translations/dist/index.js\");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../icons */ \"../../framework/esm-styleguide/src/icons/index.ts\");\n/* harmony import */ var _notification_workspace_notification_component__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../notification/workspace-notification.component */ \"../../framework/esm-styleguide/src/workspaces/notification/workspace-notification.component.tsx\");\n/* harmony import */ var _workspaces__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../workspaces */ \"../../framework/esm-styleguide/src/workspaces/workspaces.ts\");\n/* harmony import */ var _workspace_renderer_component__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./workspace-renderer.component */ \"../../framework/esm-styleguide/src/workspaces/container/workspace-renderer.component.tsx\");\n/* harmony import */ var _action_menu_component__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./action-menu.component */ \"../../framework/esm-styleguide/src/workspaces/container/action-menu.component.tsx\");\n/* harmony import */ var _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./workspace.module.scss */ \"../../framework/esm-styleguide/src/workspaces/container/workspace.module.scss\");\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 _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}\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Use this component to render the [workspace window](https://zeroheight.com/23a080e38/p/483a22-workspace)\n * in an app such as the patient chart, or a workspace overlay in an app such as the clinic dashboard.\n * This allows workspaces to be opened on the page where this component is mounted. This component\n * must not be mounted multiple times on the same page. If there are multiple apps on a page, only\n * one of those apps should use this component—it \"hosts\" the workspaces.\n *\n * Workspaces may be opened with the [[launchWorkspace]] function from `@openmrs/esm-framework`\n * (among other options).\n *\n * The `overlay` prop determines whether the workspace is rendered as an overlay or a window.\n * When a workspace window is opened, the other content on the screen will be pushed to the left.\n * When an overlay is opened, it will cover other content on the screen.\n *\n * The context key is a string that appears in the URL, which defines the pages on which workspaces\n * are valid. If the URL changes in a way such that it no longer contains the context key, then\n * all workspaces will be closed. This ensures that, for example, workspaces on the home page do\n * not stay open when the user transitions to the patient dashboard; and also that workspaces do\n * not stay open when the user navigates to a different patient. The context key must be a valid\n * sub-path of the URL, with no initial or trailing slash. So if the URL is\n * `https://example.com/patient/123/foo`, then `patient` and `patient/123` and `123/foo` are valid\n * context keys, but `patient/12` and `pati` are not.\n *\n * An extension slot is provided in the workspace header. Its name is derived from the `featureName` of\n * the top-level component in which it is defined (feature names are generally provided in the lifecycle\n * functions in an app's `index.ts` file). The slot is named `workspace-header-${featureName}-slot`.\n * For the patient chart, this is `workspace-header-patient-chart-slot`.\n *\n * This component also provides the [Siderail and Bottom Nav](https://zeroheight.com/23a080e38/p/948cf1-siderail-and-bottom-nav/b/86907e).\n * To use this, pass the `showSiderailAndBottomNav` prop. The Siderail is rendered on the right side of the screen\n * on desktop, and the Bottom Nav is rendered at the bottom of the screen on tablet or mobile. The sidebar/bottom-nav\n * menu provides an extension slot, to which buttons are attached as extensions. The slot\n * derives its name from the `featureName` of the top-level component in which this `WorkspaceContainer`\n * appears (feature names are generally provided in the lifecycle functions in an app's `index.ts` file).\n * The slot is named `action-menu-${featureName}-items-slot`. For the patient chart, this is\n * `action-menu-patient-chart-items-slot`.\n *\n * This component also provides everything needed for workspace notifications to be rendered.\n *\n * @param props.contextKey The context key (explained above)\n * @param props.additionalWorkspaceProps Additional props to pass to the workspace. Using this is\n * unusual; you will generally want to pass props to the workspace when you open it, using\n * `launchWorkspace`. Use this only for props that will apply to every workspace launched\n * on the page where this component is mounted.\n */ function WorkspaceContainer(param) {\n var contextKey = param.contextKey, overlay = param.overlay, showSiderailAndBottomNav = param.showSiderailAndBottomNav, additionalWorkspaceProps = param.additionalWorkspaceProps, actionMenuProps = param.actionMenuProps;\n var layout = (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.useLayoutType)();\n var _useWorkspaces = (0,_workspaces__WEBPACK_IMPORTED_MODULE_8__.useWorkspaces)(), workspaces = _useWorkspaces.workspaces, workspaceWindowState = _useWorkspaces.workspaceWindowState, workspaceGroup = _useWorkspaces.workspaceGroup;\n var currentGroupName = workspaceGroup === null || workspaceGroup === void 0 ? void 0 : workspaceGroup.name;\n var activeWorkspace = workspaces[0];\n var isHidden = workspaceWindowState === 'hidden' || activeWorkspace == null;\n var isMaximized = workspaceWindowState === 'maximized';\n var _activeWorkspace_width;\n var width = (_activeWorkspace_width = activeWorkspace === null || activeWorkspace === void 0 ? void 0 : activeWorkspace.width) !== null && _activeWorkspace_width !== void 0 ? _activeWorkspace_width : overlay ? 'wider' : 'narrow';\n var showActionMenu = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return showSiderailAndBottomNav || currentGroupName && !isHidden;\n }, [\n currentGroupName,\n isHidden,\n showSiderailAndBottomNav\n ]);\n (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.useBodyScrollLock)(!isHidden && !(0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.isDesktop)(layout));\n var _obj, _obj1;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: showSiderailAndBottomNav ? _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceContainerWithActionMenu : _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceContainerWithoutActionMenu\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"aside\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_2___default()(overlay ? _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceOverlayOuterContainer : _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceWindowSpacer, (_obj = {}, _define_property(_obj, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].hiddenRelative, isHidden), _define_property(_obj, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].narrowWorkspace, width === 'narrow'), _define_property(_obj, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].widerWorkspace, width === 'wider'), _define_property(_obj, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].extraWideWorkspace, width === 'extra-wide'), _obj))\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_2___default()(_workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceFixedContainer, (_obj1 = {}, _define_property(_obj1, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].maximizedWindow, isMaximized), _define_property(_obj1, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].hiddenFixed, isHidden), _obj1))\n }, workspaces.map(function(workspace, i) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n key: \"workspace-container-\".concat(workspace ? workspace.name : \"empty-\".concat(i)),\n className: classnames__WEBPACK_IMPORTED_MODULE_2___default()(_workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceInnerContainer, _define_property({}, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].hiddenExtraWorkspace, i !== 0))\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react__WEBPACK_IMPORTED_MODULE_0__.Suspense, {\n fallback: null\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_i18next__WEBPACK_IMPORTED_MODULE_1__.I18nextProvider, {\n i18n: window.i18next,\n defaultNS: workspace.moduleName\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Workspace, {\n workspaceInstance: workspace,\n additionalWorkspaceProps: additionalWorkspaceProps\n }))));\n }))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_notification_workspace_notification_component__WEBPACK_IMPORTED_MODULE_7__.WorkspaceNotification, {\n contextKey: contextKey\n })), showActionMenu && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_action_menu_component__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n name: currentGroupName,\n isWithinWorkspace: !showSiderailAndBottomNav,\n actionMenuProps: actionMenuProps\n }));\n}\nfunction Workspace(param) {\n var workspaceInstance = param.workspaceInstance, additionalWorkspaceProps = param.additionalWorkspaceProps;\n var t = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)().t;\n var layout = (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.useLayoutType)();\n var _useWorkspaces = (0,_workspaces__WEBPACK_IMPORTED_MODULE_8__.useWorkspaces)(), workspaceWindowState = _useWorkspaces.workspaceWindowState, workspaceGroup = _useWorkspaces.workspaceGroup;\n var currentGroupName = workspaceGroup === null || workspaceGroup === void 0 ? void 0 : workspaceGroup.name;\n var isMaximized = workspaceWindowState === 'maximized';\n // Translate the workspace title\n // The workspace title is a translation key whose translation resides in the workspace module.\n // Since the workspace module is not loaded at the time of workspace registration, we need to translate it here\n // when the workspace is actually rendered and the workspace module along with its translations are loaded.\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n var translatedTitle = t(workspaceInstance.title);\n if (translatedTitle !== workspaceInstance.title) {\n workspaceInstance.setTitle(translatedTitle);\n }\n }, [\n workspaceInstance.title,\n t,\n workspaceInstance.setTitle\n ]);\n // We use the feature name of the app containing the workspace in order to set the extension\n // slot name. We can't use contextKey for this because we don't want the slot name to be\n // different for different patients, but we do want it to be different for different apps.\n var featureName = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.ComponentContext).featureName;\n var toggleWindowState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function() {\n isMaximized ? (0,_workspaces__WEBPACK_IMPORTED_MODULE_8__.updateWorkspaceWindowState)('normal') : (0,_workspaces__WEBPACK_IMPORTED_MODULE_8__.updateWorkspaceWindowState)('maximized');\n }, [\n isMaximized\n ]);\n var _useMemo = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return workspaceInstance !== null && workspaceInstance !== void 0 ? workspaceInstance : {};\n }, [\n workspaceInstance\n ]), _useMemo_canHide = _useMemo.canHide, canHide = _useMemo_canHide === void 0 ? false : _useMemo_canHide, _useMemo_canMaximize = _useMemo.canMaximize, canMaximize = _useMemo_canMaximize === void 0 ? false : _useMemo_canMaximize, _useMemo_currentWorkspaceGroup = _useMemo.currentWorkspaceGroup, currentWorkspaceGroup = _useMemo_currentWorkspaceGroup === void 0 ? '' : _useMemo_currentWorkspaceGroup, closeWorkspace = _useMemo.closeWorkspace;\n var workspaceProps = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return _object_spread({}, additionalWorkspaceProps, workspaceInstance === null || workspaceInstance === void 0 ? void 0 : workspaceInstance.additionalProps);\n }, [\n additionalWorkspaceProps,\n workspaceInstance\n ]);\n var _workspaceInstance_titleNode;\n return workspaceInstance && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.Header, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('workspaceHeader', 'Workspace Header'),\n className: _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].header\n }, !(0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.isDesktop)(layout) && !canHide && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderMenuButton, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('close', 'Close'),\n renderMenuIcon: /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowLeftIcon, null),\n onClick: function() {\n return closeWorkspace();\n }\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderName, {\n prefix: \"\"\n }, (_workspaceInstance_titleNode = workspaceInstance.titleNode) !== null && _workspaceInstance_titleNode !== void 0 ? _workspaceInstance_titleNode : t(workspaceInstance.title)), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].overlayHeaderSpacer\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderGlobalBar, {\n className: _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].headerButtons\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.ExtensionSlot, {\n name: \"workspace-header-group-\".concat(workspaceInstance.currentWorkspaceGroup, \"-slot\"),\n state: workspaceProps\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.ExtensionSlot, {\n name: \"workspace-header-type-\".concat(workspaceInstance.type, \"-slot\"),\n state: workspaceProps\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.ExtensionSlot, {\n name: \"workspace-header-\".concat(featureName, \"-slot\"),\n state: workspaceProps\n }), (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.isDesktop)(layout) && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, (canMaximize || isMaximized) && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderGlobalAction, {\n \"aria-label\": isMaximized ? (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('minimize', 'Minimize') : (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('maximize', 'Maximize'),\n onClick: toggleWindowState\n }, isMaximized ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react_icons__WEBPACK_IMPORTED_MODULE_12__.Minimize, null) : /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react_icons__WEBPACK_IMPORTED_MODULE_12__.Maximize, null)), canHide && !currentGroupName ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('hide', 'Hide'),\n onClick: function() {\n return (0,_workspaces__WEBPACK_IMPORTED_MODULE_8__.updateWorkspaceWindowState)('hidden');\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowRightIcon, null)) : /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('close', 'Close'),\n onClick: function() {\n return closeWorkspace === null || closeWorkspace === void 0 ? void 0 : closeWorkspace();\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons__WEBPACK_IMPORTED_MODULE_6__.CloseIcon, null))), layout === 'tablet' && canHide && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('close', 'Close'),\n onClick: function() {\n return closeWorkspace === null || closeWorkspace === void 0 ? void 0 : closeWorkspace();\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react_icons__WEBPACK_IMPORTED_MODULE_13__.DownToBottom, null)))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_2___default()(_workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceContent, _define_property({}, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].marginWorkspaceContent, Boolean(currentWorkspaceGroup)))\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_workspace_renderer_component__WEBPACK_IMPORTED_MODULE_9__.WorkspaceRenderer, {\n key: workspaceInstance.name,\n workspace: workspaceInstance,\n additionalPropsFromPage: additionalWorkspaceProps\n })));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy93b3Jrc3BhY2VzL2NvbnRhaW5lci93b3Jrc3BhY2UtY29udGFpbmVyLmNvbXBvbmVudC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBcUc7QUFDckM7QUFDNUI7QUFDc0U7QUFDbkM7QUFDaUQ7QUFDekQ7QUFDUTtBQUNrQjtBQUNLO0FBQzNCO0FBQ2xCO0FBQ0o7QUFVN0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBNENDLEdBQ00sU0FBU2dDLG1CQUFtQixLQU1UO1FBTHhCQyxhQURpQyxNQUNqQ0EsWUFDQUMsVUFGaUMsTUFFakNBLFNBQ0FDLDJCQUhpQyxNQUdqQ0EsMEJBQ0FDLDJCQUppQyxNQUlqQ0EsMEJBQ0FDLGtCQUxpQyxNQUtqQ0E7SUFFQSxJQUFNQyxTQUFTakIsdUVBQWFBO0lBQzVCLElBQTZETyxpQkFBQUEsMERBQWFBLElBQWxFVyxhQUFxRFgsZUFBckRXLFlBQVlDLHVCQUF5Q1osZUFBekNZLHNCQUFzQkMsaUJBQW1CYixlQUFuQmE7SUFDMUMsSUFBTUMsbUJBQW1CRCwyQkFBQUEscUNBQUFBLGVBQWdCRSxJQUFJO0lBQzdDLElBQU1DLGtCQUFrQkwsVUFBVSxDQUFDLEVBQUU7SUFDckMsSUFBTU0sV0FBV0wseUJBQXlCLFlBQVlJLG1CQUFtQjtJQUN6RSxJQUFNRSxjQUFjTix5QkFBeUI7UUFDL0JJO0lBQWQsSUFBTUcsUUFBUUgsQ0FBQUEseUJBQUFBLDRCQUFBQSxzQ0FBQUEsZ0JBQWlCRyxLQUFLLGNBQXRCSCxvQ0FBQUEseUJBQTJCVixVQUFVLFVBQVU7SUFDN0QsSUFBTWMsaUJBQWlCM0MsOENBQU9BLENBQzVCO2VBQU04Qiw0QkFBNkJPLG9CQUFvQixDQUFDRztPQUN4RDtRQUFDSDtRQUFrQkc7UUFBVVY7S0FBeUI7SUFHeERmLDJFQUFpQkEsQ0FBQyxD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ZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy93b3Jrc3BhY2VzL2NvbnRhaW5lci93b3Jrc3BhY2UtY29udGFpbmVyLmNvbXBvbmVudC50c3g/ZWEzZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdHlwZSBSZWFjdE5vZGUsIFN1c3BlbnNlLCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSTE4bmV4dFByb3ZpZGVyLCB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBIZWFkZXIsIEhlYWRlckdsb2JhbEFjdGlvbiwgSGVhZGVyR2xvYmFsQmFyLCBIZWFkZXJNZW51QnV0dG9uLCBIZWFkZXJOYW1lIH0gZnJvbSAnQGNhcmJvbi9yZWFjdCc7XG5pbXBvcnQgeyBEb3duVG9Cb3R0b20sIE1heGltaXplLCBNaW5pbWl6ZSB9IGZyb20gJ0BjYXJib24vcmVhY3QvaWNvbnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dCwgRXh0ZW5zaW9uU2xvdCwgaXNEZXNrdG9wLCB1c2VCb2R5U2Nyb2xsTG9jaywgdXNlTGF5b3V0VHlwZSB9IGZyb20gJ0BvcGVubXJzL2VzbS1yZWFjdC11dGlscyc7XG5pbXBvcnQgeyBnZXRDb3JlVHJhbnNsYXRpb24gfSBmcm9tICdAb3Blbm1ycy9lc20tdHJhbnNsYXRpb25zJztcbmltcG9ydCB7IEFycm93TGVmdEljb24sIEFycm93UmlnaHRJY29uLCBDbG9zZUljb24gfSBmcm9tICcuLi8uLi9pY29ucyc7XG5pbXBvcnQgeyBXb3Jrc3BhY2VOb3RpZmljYXRpb24gfSBmcm9tICcuLi9ub3RpZmljYXRpb24vd29ya3NwYWNlLW5vdGlmaWNhdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgdHlwZSBPcGVuV29ya3NwYWNlLCB1cGRhdGVXb3Jrc3BhY2VXaW5kb3dTdGF0ZSwgdXNlV29ya3NwYWNlcyB9IGZyb20gJy4uL3dvcmtzcGFjZXMnO1xuaW1wb3J0IHsgV29ya3NwYWNlUmVuZGVyZXIgfSBmcm9tICcuL3dvcmtzcGFjZS1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IEFjdGlvbk1lbnUgZnJvbSAnLi9hY3Rpb24tbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3dvcmtzcGFjZS5tb2R1bGUuc2Nzcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV29ya3NwYWNlQ29udGFpbmVyUHJvcHMge1xuICBjb250ZXh0S2V5OiBzdHJpbmc7XG4gIG92ZXJsYXk/OiBib29sZWFuO1xuICBzaG93U2lkZXJhaWxBbmRCb3R0b21OYXY/OiBib29sZWFuO1xuICBhZGRpdGlvbmFsV29ya3NwYWNlUHJvcHM/OiBvYmplY3Q7XG4gIGFjdGlvbk1lbnVQcm9wcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKipcbiAqIFVzZSB0aGlzIGNvbXBvbmVudCB0byByZW5kZXIgdGhlIFt3b3Jrc3BhY2Ugd2luZG93XShodHRwczovL3plcm9oZWlnaHQuY29tLzIzYTA4MGUzOC9wLzQ4M2EyMi13b3Jrc3BhY2UpXG4gKiBpbiBhbiBhcHAgc3VjaCBhcyB0aGUgcGF0aWVudCBjaGFydCwgb3IgYSB3b3Jrc3BhY2Ugb3ZlcmxheSBpbiBhbiBhcHAgc3VjaCBhcyB0aGUgY2xpbmljIGRhc2hib2FyZC5cbiAqIFRoaXMgYWxsb3dzIHdvcmtzcGFjZXMgdG8gYmUgb3BlbmVkIG9uIHRoZSBwYWdlIHdoZXJlIHRoaXMgY29tcG9uZW50IGlzIG1vdW50ZWQuIFRoaXMgY29tcG9uZW50XG4gKiBtdXN0IG5vdCBiZSBtb3VudGVkIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIHBhZ2UuIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBhcHBzIG9uIGEgcGFnZSwgb25seVxuICogb25lIG9mIHRob3NlIGFwcHMgc2hvdWxkIHVzZSB0aGlzIGNvbXBvbmVudOKAlGl0IFwiaG9zdHNcIiB0aGUgd29ya3NwYWNlcy5cbiAqXG4gKiBXb3Jrc3BhY2VzIG1heSBiZSBvcGVuZWQgd2l0aCB0aGUgW1tsYXVuY2hXb3Jrc3BhY2VdXSBmdW5jdGlvbiBmcm9tIGBAb3Blbm1ycy9lc20tZnJhbWV3b3JrYFxuICogKGFtb25nIG90aGVyIG9wdGlvbnMpLlxuICpcbiAqIFRoZSBgb3ZlcmxheWAgcHJvcCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHdvcmtzcGFjZSBpcyByZW5kZXJlZCBhcyBhbiBvdmVybGF5IG9yIGEgd2luZG93LlxuICogV2hlbiBhIHdvcmtzcGFjZSB3aW5kb3cgaXMgb3BlbmVkLCB0aGUgb3RoZXIgY29udGVudCBvbiB0aGUgc2NyZWVuIHdpbGwgYmUgcHVzaGVkIHRvIHRoZSBsZWZ0LlxuICogV2hlbiBhbiBvdmVybGF5IGlzIG9wZW5lZCwgaXQgd2lsbCBjb3ZlciBvdGhlciBjb250ZW50IG9uIHRoZSBzY3JlZW4uXG4gKlxuICogVGhlIGNvbnRleHQga2V5IGlzIGEgc3RyaW5nIHRoYXQgYXBwZWFycyBpbiB0aGUgVVJMLCB3aGljaCBkZWZpbmVzIHRoZSBwYWdlcyBvbiB3aGljaCB3b3Jrc3BhY2VzXG4gKiBhcmUgdmFsaWQuIElmIHRoZSBVUkwgY2hhbmdlcyBpbiBhIHdheSBzdWNoIHRoYXQgaXQgbm8gbG9uZ2VyIGNvbnRhaW5zIHRoZSBjb250ZXh0IGtleSwgdGhlblxuICogYWxsIHdvcmtzcGFjZXMgd2lsbCBiZSBjbG9zZWQuIFRoaXMgZW5zdXJlcyB0aGF0LCBmb3IgZXhhbXBsZSwgd29ya3NwYWNlcyBvbiB0aGUgaG9tZSBwYWdlIGRvXG4gKiBub3Qgc3RheSBvcGVuIHdoZW4gdGhlIHVzZXIgdHJhbnNpdGlvbnMgdG8gdGhlIHBhdGllbnQgZGFzaGJvYXJkOyBhbmQgYWxzbyB0aGF0IHdvcmtzcGFjZXMgZG9cbiAqIG5vdCBzdGF5IG9wZW4gd2hlbiB0aGUgdXNlciBuYXZpZ2F0ZXMgdG8gYSBkaWZmZXJlbnQgcGF0aWVudC4gVGhlIGNvbnRleHQga2V5IG11c3QgYmUgYSB2YWxpZFxuICogc3ViLXBhdGggb2YgdGhlIFVSTCwgd2l0aCBubyBpbml0aWFsIG9yIHRyYWlsaW5nIHNsYXNoLiBTbyBpZiB0aGUgVVJMIGlzXG4gKiBgaHR0cHM6Ly9leGFtcGxlLmNvbS9wYXRpZW50LzEyMy9mb29gLCB0aGVuIGBwYXRpZW50YCBhbmQgYHBhdGllbnQvMTIzYCBhbmQgYDEyMy9mb29gIGFyZSB2YWxpZFxuICogY29udGV4dCBrZXlzLCBidXQgYHBhdGllbnQvMTJgIGFuZCBgcGF0aWAgYXJlIG5vdC5cbiAqXG4gKiBBbiBleHRlbnNpb24gc2xvdCBpcyBwcm92aWRlZCBpbiB0aGUgd29ya3NwYWNlIGhlYWRlci4gSXRzIG5hbWUgaXMgZGVyaXZlZCBmcm9tIHRoZSBgZmVhdHVyZU5hbWVgIG9mXG4gKiB0aGUgdG9wLWxldmVsIGNvbXBvbmVudCBpbiB3aGljaCBpdCBpcyBkZWZpbmVkIChmZWF0dXJlIG5hbWVzIGFyZSBnZW5lcmFsbHkgcHJvdmlkZWQgaW4gdGhlIGxpZmVjeWNsZVxuICogZnVuY3Rpb25zIGluIGFuIGFwcCdzIGBpbmRleC50c2AgZmlsZSkuIFRoZSBzbG90IGlzIG5hbWVkIGB3b3Jrc3BhY2UtaGVhZGVyLSR7ZmVhdHVyZU5hbWV9LXNsb3RgLlxuICogRm9yIHRoZSBwYXRpZW50IGNoYXJ0LCB0aGlzIGlzIGB3b3Jrc3BhY2UtaGVhZGVyLXBhdGllbnQtY2hhcnQtc2xvdGAuXG4gKlxuICogVGhpcyBjb21wb25lbnQgYWxzbyBwcm92aWRlcyB0aGUgW1NpZGVyYWlsIGFuZCBCb3R0b20gTmF2XShodHRwczovL3plcm9oZWlnaHQuY29tLzIzYTA4MGUzOC9wLzk0OGNmMS1zaWRlcmFpbC1hbmQtYm90dG9tLW5hdi9iLzg2OTA3ZSkuXG4gKiBUbyB1c2UgdGhpcywgcGFzcyB0aGUgYHNob3dTaWRlcmFpbEFuZEJvdHRvbU5hdmAgcHJvcC4gVGhlIFNpZGVyYWlsIGlzIHJlbmRlcmVkIG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBzY3JlZW5cbiAqIG9uIGRlc2t0b3AsIGFuZCB0aGUgQm90dG9tIE5hdiBpcyByZW5kZXJlZCBhdCB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4gb24gdGFibGV0IG9yIG1vYmlsZS4gVGhlIHNpZGViYXIvYm90dG9tLW5hdlxuICogbWVudSBwcm92aWRlcyBhbiBleHRlbnNpb24gc2xvdCwgdG8gd2hpY2ggYnV0dG9ucyBhcmUgYXR0YWNoZWQgYXMgZXh0ZW5zaW9ucy4gVGhlIHNsb3RcbiAqIGRlcml2ZXMgaXRzIG5hbWUgZnJvbSB0aGUgYGZlYXR1cmVOYW1lYCBvZiB0aGUgdG9wLWxldmVsIGNvbXBvbmVudCBpbiB3aGljaCB0aGlzIGBXb3Jrc3BhY2VDb250YWluZXJgXG4gKiBhcHBlYXJzIChmZWF0dXJlIG5hbWVzIGFyZSBnZW5lcmFsbHkgcHJvdmlkZWQgaW4gdGhlIGxpZmVjeWNsZSBmdW5jdGlvbnMgaW4gYW4gYXBwJ3MgYGluZGV4LnRzYCBmaWxlKS5cbiAqIFRoZSBzbG90IGlzIG5hbWVkIGBhY3Rpb24tbWVudS0ke2ZlYXR1cmVOYW1lfS1pdGVtcy1zbG90YC4gRm9yIHRoZSBwYXRpZW50IGNoYXJ0LCB0aGlzIGlzXG4gKiBgYWN0aW9uLW1lbnUtcGF0aWVudC1jaGFydC1pdGVtcy1zbG90YC5cbiAqXG4gKiBUaGlzIGNvbXBvbmVudCBhbHNvIHByb3ZpZGVzIGV2ZXJ5dGhpbmcgbmVlZGVkIGZvciB3b3Jrc3BhY2Ugbm90aWZpY2F0aW9ucyB0byBiZSByZW5kZXJlZC5cbiAqXG4gKiBAcGFyYW0gcHJvcHMuY29udGV4dEtleSBUaGUgY29udGV4dCBrZXkgKGV4cGxhaW5lZCBhYm92ZSlcbiAqIEBwYXJhbSBwcm9wcy5hZGRpdGlvbmFsV29ya3NwYWNlUHJvcHMgQWRkaXRpb25hbCBwcm9wcyB0byBwYXNzIHRvIHRoZSB3b3Jrc3BhY2UuIFVzaW5nIHRoaXMgaXNcbiAqICAgICAgICAgIHVudXN1YWw7IHlvdSB3aWxsIGdlbmVyYWxseSB3YW50IHRvIHBhc3MgcHJvcHMgdG8gdGhlIHdvcmtzcGFjZSB3aGVuIHlvdSBvcGVuIGl0LCB1c2luZ1xuICogICAgICAgICAgYGxhdW5jaFdvcmtzcGFjZWAuIFVzZSB0aGlzIG9ubHkgZm9yIHByb3BzIHRoYXQgd2lsbCBhcHBseSB0byBldmVyeSB3b3Jrc3BhY2UgbGF1bmNoZWRcbiAqICAgICAgICAgIG9uIHRoZSBwYWdlIHdoZXJlIHRoaXMgY29tcG9uZW50IGlzIG1vdW50ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBXb3Jrc3BhY2VDb250YWluZXIoe1xuICBjb250ZXh0S2V5LFxuICBvdmVybGF5LFxuICBzaG93U2lkZXJhaWxBbmRCb3R0b21OYXYsXG4gIGFkZGl0aW9uYWxXb3Jrc3BhY2VQcm9wcyxcbiAgYWN0aW9uTWVudVByb3BzLFxufTogV29ya3NwYWNlQ29udGFpbmVyUHJvcHMpIHtcbiAgY29uc3QgbGF5b3V0ID0gdXNlTGF5b3V0VHlwZSgpO1xuICBjb25zdCB7IHdvcmtzcGFjZXMsIHdvcmtzcGFjZVdpbmRvd1N0YXRlLCB3b3Jrc3BhY2VHcm91cCB9ID0gdXNlV29ya3NwYWNlcygpO1xuICBjb25zdCBjdXJyZW50R3JvdXBOYW1lID0gd29ya3NwYWNlR3JvdXA/Lm5hbWU7XG4gIGNvbnN0IGFjdGl2ZVdvcmtzcGFjZSA9IHdvcmtzcGFjZXNbMF07XG4gIGNvbnN0IGlzSGlkZGVuID0gd29ya3NwYWNlV2luZG93U3RhdGUgPT09ICdoaWRkZW4nIHx8IGFjdGl2ZVdvcmtzcGFjZSA9PSBudWxsO1xuICBjb25zdCBpc01heGltaXplZCA9IHdvcmtzcGFjZVdpbmRvd1N0YXRlID09PSAnbWF4aW1pemVkJztcbiAgY29uc3Qgd2lkdGggPSBhY3RpdmVXb3Jrc3BhY2U/LndpZHRoID8/IChvdmVybGF5ID8gJ3dpZGVyJyA6ICduYXJyb3cnKTtcbiAgY29uc3Qgc2hvd0FjdGlvbk1lbnUgPSB1c2VNZW1vKFxuICAgICgpID0+IHNob3dTaWRlcmFpbEFuZEJvdHRvbU5hdiB8fCAoY3VycmVudEdyb3VwTmFtZSAmJiAhaXNIaWRkZW4pLFxuICAgIFtjdXJyZW50R3JvdXBOYW1lLCBpc0hpZGRlbiwgc2hvd1NpZGVyYWlsQW5kQm90dG9tTmF2XSxcbiAgKTtcblxuICB1c2VCb2R5U2Nyb2xsTG9jayghaXNIaWRkZW4gJiYgIWlzRGVza3RvcChsYXlvdXQpKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17XG4gICAgICAgICAgc2hvd1NpZGVyYWlsQW5kQm90dG9tTmF2XG4gICAgICAgICAgICA/IHN0eWxlcy53b3Jrc3BhY2VDb250YWluZXJXaXRoQWN0aW9uTWVudVxuICAgICAgICAgICAgOiBzdHlsZXMud29ya3NwYWNlQ29udGFpbmVyV2l0aG91dEFjdGlvbk1lbnVcbiAgICAgICAgfVxuICAgICAgPlxuICAgICAgICA8YXNpZGVcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMob3ZlcmxheSA/IHN0eWxlcy53b3Jrc3BhY2VPdmVybGF5T3V0ZXJDb250YWluZXIgOiBzdHlsZXMud29ya3NwYWNlV2luZG93U3BhY2VyLCB7XG4gICAgICAgICAgICBbc3R5bGVzLmhpZGRlblJlbGF0aXZlXTogaXNIaWRkZW4sXG4gICAgICAgICAgICBbc3R5bGVzLm5hcnJvd1dvcmtzcGFjZV06IHdpZHRoID09PSAnbmFycm93JyxcbiAgICAgICAgICAgIFtzdHlsZXMud2lkZXJXb3Jrc3BhY2VdOiB3aWR0aCA9PT0gJ3dpZGVyJyxcbiAgICAgICAgICAgIFtzdHlsZXMuZXh0cmFXaWRlV29ya3NwYWNlXTogd2lkdGggPT09ICdleHRyYS13aWRlJyxcbiAgICAgICAgICB9KX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhzdHlsZXMud29ya3NwYWNlRml4ZWRDb250YWluZXIsIHtcbiAgICAgICAgICAgICAgW3N0eWxlcy5tYXhpbWl6ZWRXaW5kb3ddOiBpc01heGltaXplZCxcbiAgICAgICAgICAgICAgW3N0eWxlcy5oaWRkZW5GaXhlZF06IGlzSGlkZGVuLFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3dvcmtzcGFjZXMubWFwKCh3b3Jrc3BhY2UsIGkpID0+IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGtleT17YHdvcmtzcGFjZS1jb250YWluZXItJHt3b3Jrc3BhY2UgPyB3b3Jrc3BhY2UubmFtZSA6IGBlbXB0eS0ke2l9YH1gfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhzdHlsZXMud29ya3NwYWNlSW5uZXJDb250YWluZXIsIHsgW3N0eWxlcy5oaWRkZW5FeHRyYVdvcmtzcGFjZV06IGkgIT09IDAgfSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U3VzcGVuc2UgZmFsbGJhY2s9e251bGx9PlxuICAgICAgICAgICAgICAgICAgPEkxOG5leHRQcm92aWRlciBpMThuPXt3aW5kb3cuaTE4bmV4dH0gZGVmYXVsdE5TPXt3b3Jrc3BhY2UubW9kdWxlTmFtZX0+XG4gICAgICAgICAgICAgICAgICAgIDxXb3Jrc3BhY2Ugd29ya3NwYWNlSW5zdGFuY2U9e3dvcmtzcGFjZX0gYWRkaXRpb25hbFdvcmtzcGFjZVByb3BzPXthZGRpdGlvbmFsV29ya3NwYWNlUHJvcHN9IC8+XG4gICAgICAgICAgICAgICAgICA8L0kxOG5leHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L1N1c3BlbnNlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FzaWRlPlxuICAgICAgICA8V29ya3NwYWNlTm90aWZpY2F0aW9uIGNvbnRleHRLZXk9e2NvbnRleHRLZXl9IC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIHtzaG93QWN0aW9uTWVudSAmJiAoXG4gICAgICAgIDxBY3Rpb25NZW51XG4gICAgICAgICAgbmFtZT17Y3VycmVudEdyb3VwTmFtZX1cbiAgICAgICAgICBpc1dpdGhpbldvcmtzcGFjZT17IXNob3dTaWRlcmFpbEFuZEJvdHRvbU5hdn1cbiAgICAgICAgICBhY3Rpb25NZW51UHJvcHM9e2FjdGlvbk1lbnVQcm9wc31cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59XG5cbmludGVyZmFjZSBXb3Jrc3BhY2VQcm9wcyB7XG4gIHdvcmtzcGFjZUluc3RhbmNlOiBPcGVuV29ya3NwYWNlO1xuICBhZGRpdGlvbmFsV29ya3NwYWNlUHJvcHM/OiBvYmplY3Q7XG59XG5cbmZ1bmN0aW9uIFdvcmtzcGFjZSh7IHdvcmtzcGFjZUluc3RhbmNlLCBhZGRpdGlvbmFsV29ya3NwYWNlUHJvcHMgfTogV29ya3NwYWNlUHJvcHMpIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBsYXlvdXQgPSB1c2VMYXlvdXRUeXBlKCk7XG4gIGNvbnN0IHsgd29ya3NwYWNlV2luZG93U3RhdGUsIHdvcmtzcGFjZUdyb3VwIH0gPSB1c2VXb3Jrc3BhY2VzKCk7XG4gIGNvbnN0IGN1cnJlbnRHcm91cE5hbWUgPSB3b3Jrc3BhY2VHcm91cD8ubmFtZTtcbiAgY29uc3QgaXNNYXhpbWl6ZWQgPSB3b3Jrc3BhY2VXaW5kb3dTdGF0ZSA9PT0gJ21heGltaXplZCc7XG5cbiAgLy8gVHJhbnNsYXRlIHRoZSB3b3Jrc3BhY2UgdGl0bGVcbiAgLy8gVGhlIHdvcmtzcGFjZSB0aXRsZSBpcyBhIHRyYW5zbGF0aW9uIGtleSB3aG9zZSB0cmFuc2xhdGlvbiByZXNpZGVzIGluIHRoZSB3b3Jrc3BhY2UgbW9kdWxlLlxuICAvLyBTaW5jZSB0aGUgd29ya3NwYWNlIG1vZHVsZSBpcyBub3QgbG9hZGVkIGF0IHRoZSB0aW1lIG9mIHdvcmtzcGFjZSByZWdpc3RyYXRpb24sIHdlIG5lZWQgdG8gdHJhbnNsYXRlIGl0IGhlcmVcbiAgLy8gd2hlbiB0aGUgd29ya3NwYWNlIGlzIGFjdHVhbGx5IHJlbmRlcmVkIGFuZCB0aGUgd29ya3NwYWNlIG1vZHVsZSBhbG9uZyB3aXRoIGl0cyB0cmFuc2xhdGlvbnMgYXJlIGxvYWRlZC5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB0cmFuc2xhdGVkVGl0bGUgPSB0KHdvcmtzcGFjZUluc3RhbmNlLnRpdGxlKTtcbiAgICBpZiAodHJhbnNsYXRlZFRpdGxlICE9PSB3b3Jrc3BhY2VJbnN0YW5jZS50aXRsZSkge1xuICAgICAgd29ya3NwYWNlSW5zdGFuY2Uuc2V0VGl0bGUodHJhbnNsYXRlZFRpdGxlKTtcbiAgICB9XG4gIH0sIFt3b3Jrc3BhY2VJbnN0YW5jZS50aXRsZSwgdCwgd29ya3NwYWNlSW5zdGFuY2Uuc2V0VGl0bGVdKTtcblxuICAvLyBXZSB1c2UgdGhlIGZlYXR1cmUgbmFtZSBvZiB0aGUgYXBwIGNvbnRhaW5pbmcgdGhlIHdvcmtzcGFjZSBpbiBvcmRlciB0byBzZXQgdGhlIGV4dGVuc2lvblxuICAvLyBzbG90IG5hbWUuIFdlIGNhbid0IHVzZSBjb250ZXh0S2V5IGZvciB0aGlzIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0aGUgc2xvdCBuYW1lIHRvIGJlXG4gIC8vIGRpZmZlcmVudCBmb3IgZGlmZmVyZW50IHBhdGllbnRzLCBidXQgd2UgZG8gd2FudCBpdCB0byBiZSBkaWZmZXJlbnQgZm9yIGRpZmZlcmVudCBhcHBzLlxuICBjb25zdCB7IGZlYXR1cmVOYW1lIH0gPSB1c2VDb250ZXh0KENvbXBvbmVudENvbnRleHQpO1xuXG4gIGNvbnN0IHRvZ2dsZVdpbmRvd1N0YXRlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlzTWF4aW1pemVkID8gdXBkYXRlV29ya3NwYWNlV2luZG93U3RhdGUoJ25vcm1hbCcpIDogdXBkYXRlV29ya3NwYWNlV2luZG93U3RhdGUoJ21heGltaXplZCcpO1xuICB9LCBbaXNNYXhpbWl6ZWRdKTtcblxuICBjb25zdCB7XG4gICAgY2FuSGlkZSA9IGZhbHNlLFxuICAgIGNhbk1heGltaXplID0gZmFsc2UsXG4gICAgY3VycmVudFdvcmtzcGFjZUdyb3VwID0gJycsXG4gICAgY2xvc2VXb3Jrc3BhY2UsXG4gIH0gPSB1c2VNZW1vKCgpID0+IHdvcmtzcGFjZUluc3RhbmNlID8/ICh7fSBhcyBPcGVuV29ya3NwYWNlKSwgW3dvcmtzcGFjZUluc3RhbmNlXSk7XG5cbiAgY29uc3Qgd29ya3NwYWNlUHJvcHMgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICAuLi5hZGRpdGlvbmFsV29ya3NwYWNlUHJvcHMsXG4gICAgICAuLi53b3Jrc3BhY2VJbnN0YW5jZT8uYWRkaXRpb25hbFByb3BzLFxuICAgIH0pLFxuICAgIFthZGRpdGlvbmFsV29ya3NwYWNlUHJvcHMsIHdvcmtzcGFjZUluc3RhbmNlXSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIHdvcmtzcGFjZUluc3RhbmNlICYmIChcbiAgICAgIDw+XG4gICAgICAgIDxIZWFkZXIgYXJpYS1sYWJlbD17Z2V0Q29yZVRyYW5zbGF0aW9uKCd3b3Jrc3BhY2VIZWFkZXInLCAnV29ya3NwYWNlIEhlYWRlcicpfSBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgICAgIHshaXNEZXNrdG9wKGxheW91dCkgJiYgIWNhbkhpZGUgJiYgKFxuICAgICAgICAgICAgPEhlYWRlck1lbnVCdXR0b25cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17Z2V0Q29yZVRyYW5zbGF0aW9uKCdjbG9zZScsICdDbG9zZScpfVxuICAgICAgICAgICAgICByZW5kZXJNZW51SWNvbj17PEFycm93TGVmdEljb24gLz59XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGNsb3NlV29ya3NwYWNlKCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPEhlYWRlck5hbWUgcHJlZml4PVwiXCI+e3dvcmtzcGFjZUluc3RhbmNlLnRpdGxlTm9kZSA/PyAodCh3b3Jrc3BhY2VJbnN0YW5jZS50aXRsZSkgYXMgUmVhY3ROb2RlKX08L0hlYWRlck5hbWU+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5vdmVybGF5SGVhZGVyU3BhY2VyfSAvPlxuICAgICAgICAgIDxIZWFkZXJHbG9iYWxCYXIgY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyQnV0dG9uc30+XG4gICAgICAgICAgICA8RXh0ZW5zaW9uU2xvdFxuICAgICAgICAgICAgICBuYW1lPXtgd29ya3NwYWNlLWhlYWRlci1ncm91cC0ke3dvcmtzcGFjZUluc3RhbmNlLmN1cnJlbnRXb3Jrc3BhY2VHcm91cH0tc2xvdGB9XG4gICAgICAgICAgICAgIHN0YXRlPXt3b3Jrc3BhY2VQcm9wc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8RXh0ZW5zaW9uU2xvdCBuYW1lPXtgd29ya3NwYWNlLWhlYWRlci10eXBlLSR7d29ya3NwYWNlSW5zdGFuY2UudHlwZX0tc2xvdGB9IHN0YXRlPXt3b3Jrc3BhY2VQcm9wc30gLz5cbiAgICAgICAgICAgIDxFeHRlbnNpb25TbG90IG5hbWU9e2B3b3Jrc3BhY2UtaGVhZGVyLSR7ZmVhdHVyZU5hbWV9LXNsb3RgfSBzdGF0ZT17d29ya3NwYWNlUHJvcHN9IC8+XG4gICAgICAgICAgICB7aXNEZXNrdG9wKGxheW91dCkgJiYgKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIHsoY2FuTWF4aW1pemUgfHwgaXNNYXhpbWl6ZWQpICYmIChcbiAgICAgICAgICAgICAgICAgIDxIZWFkZXJHbG9iYWxBY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17XG4gICAgICAgICAgICAgICAgICAgICAgaXNNYXhpbWl6ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0Q29yZVRyYW5zbGF0aW9uKCdtaW5pbWl6ZScsICdNaW5pbWl6ZScpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGdldENvcmVUcmFuc2xhdGlvbignbWF4aW1pemUnLCAnTWF4aW1pemUnKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RvZ2dsZVdpbmRvd1N0YXRlfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7aXNNYXhpbWl6ZWQgPyA8TWluaW1pemUgLz4gOiA8TWF4aW1pemUgLz59XG4gICAgICAgICAgICAgICAgICA8L0hlYWRlckdsb2JhbEFjdGlvbj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtjYW5IaWRlICYmICFjdXJyZW50R3JvdXBOYW1lID8gKFxuICAgICAgICAgICAgICAgICAgPEhlYWRlckdsb2JhbEFjdGlvblxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtnZXRDb3JlVHJhbnNsYXRpb24oJ2hpZGUnLCAnSGlkZScpfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB1cGRhdGVXb3Jrc3BhY2VXaW5kb3dTdGF0ZSgnaGlkZGVuJyl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxBcnJvd1JpZ2h0SWNvbiAvPlxuICAgICAgICAgICAgICAgICAgPC9IZWFkZXJHbG9iYWxBY3Rpb24+XG4gICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgIDxIZWFkZXJHbG9iYWxBY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17Z2V0Q29yZVRyYW5zbGF0aW9uKCdjbG9zZScsICdDbG9zZScpfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjbG9zZVdvcmtzcGFjZT8uKCl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICAgICAgICAgIDwvSGVhZGVyR2xvYmFsQWN0aW9uPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHtsYXlvdXQgPT09ICd0YWJsZXQnICYmIGNhbkhpZGUgJiYgKFxuICAgICAgICAgICAgICA8SGVhZGVyR2xvYmFsQWN0aW9uIGFyaWEtbGFiZWw9e2dldENvcmVUcmFuc2xhdGlvbignY2xvc2UnLCAnQ2xvc2UnKX0gb25DbGljaz17KCkgPT4gY2xvc2VXb3Jrc3BhY2U/LigpfT5cbiAgICAgICAgICAgICAgICA8RG93blRvQm90dG9tIC8+XG4gICAgICAgICAgICAgIDwvSGVhZGVyR2xvYmFsQWN0aW9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0hlYWRlckdsb2JhbEJhcj5cbiAgICAgICAgPC9IZWFkZXI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoc3R5bGVzLndvcmtzcGFjZUNvbnRlbnQsIHtcbiAgICAgICAgICAgIFtzdHlsZXMubWFyZ2luV29ya3NwYWNlQ29udGVudF06IEJvb2xlYW4oY3VycmVudFdvcmtzcGFjZUdyb3VwKSxcbiAgICAgICAgICB9KX1cbiAgICAgICAgPlxuICAgICAgICAgIDxXb3Jrc3BhY2VSZW5kZXJlclxuICAgICAgICAgICAga2V5PXt3b3Jrc3BhY2VJbnN0YW5jZS5uYW1lfVxuICAgICAgICAgICAgd29ya3NwYWNlPXt3b3Jrc3BhY2VJbnN0YW5jZX1cbiAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wc0Zyb21QYWdlPXthZGRpdGlvbmFsV29ya3NwYWNlUHJvcHN9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8Lz5cbiAgICApXG4gICk7XG59XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJTdXNwZW5zZSIsInVzZUNhbGxiYWNrIiwidXNlQ29udGV4dCIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJJMThuZXh0UHJvdmlkZXIiLCJ1c2VUcmFuc2xhdGlvbiIsImNsYXNzTmFtZXMiLCJIZWFkZXIiLCJIZWFkZXJHbG9iYWxBY3Rpb24iLCJIZWFkZXJHbG9iYWxCYXIiLCJIZWFkZXJNZW51QnV0dG9uIiwiSGVhZGVyTmFtZSIsIkRvd25Ub0JvdHRvbSIsIk1heGltaXplIiwiTWluaW1pemUiLCJDb21wb25lbnRDb250ZXh0IiwiRXh0ZW5zaW9uU2xvdCIsImlzRGVza3RvcCIsInVzZUJvZHlTY3JvbGxMb2NrIiwidXNlTGF5b3V0VHlwZSIsImdldENvcmVUcmFuc2xhdGlvbiIsIkFycm93TGVmdEljb24iLCJBcnJvd1JpZ2h0SWNvbiIsIkNsb3NlSWNvbiIsIldvcmtzcGFjZU5vdGlmaWNhdGlvbiIsInVwZGF0ZVdvcmtzcGFjZVdpbmRvd1N0YXRlIiwidXNlV29ya3NwYWNlcyIsIldvcmtzcGFjZVJlbmRlcmVyIiwiQWN0aW9uTWVudSIsInN0eWxlcyIsIldvcmtzcGFjZUNvbnRhaW5lciIsImNvbnRleHRLZXkiLCJvdmVybGF5Iiwic2hvd1NpZGVyYWlsQW5kQm90dG9tTmF2IiwiYWRkaXRpb25hbFdvcmtzcGFjZVByb3BzIiwiYWN0aW9uTWVudVByb3BzIiwibGF5b3V0Iiwid29ya3NwYWNlcyIsIndvcmtzcGFjZVdpbmRvd1N0YXRlIiwid29ya3NwYWNlR3JvdXAiLCJjdXJyZW50R3JvdXBOYW1lIiwibmFtZSIsImFjdGl2ZVdvcmtzcGFjZSIsImlzSGlkZGVuIiwiaXNNYXhpbWl6ZWQiLCJ3aWR0aCIsInNob3dBY3Rpb25NZW51IiwiZGl2IiwiY2xhc3NOYW1lIiwid29ya3NwYWNlQ29udGFpbmVyV2l0aEFjdGlvbk1lbnUiLCJ3b3Jrc3BhY2VDb250YWluZXJXaXRob3V0QWN0aW9uTWVudSIsImFzaWRlIiwid29ya3NwYWNlT3ZlcmxheU91dGVyQ29udGFpbmVyIiwid29ya3NwYWNlV2luZG93U3BhY2VyIiwiaGlkZGVuUmVsYXRpdmUiLCJuYXJyb3dXb3Jrc3BhY2UiLCJ3aWRlcldvcmtzcGFjZSIsImV4dHJhV2lkZVdvcmtzcGFjZSIsIndvcmtzcGFjZUZpeGVkQ29udGFpbmVyIiwibWF4aW1pemVkV2luZG93IiwiaGlkZGVuRml4ZWQiLCJtYXAiLCJ3b3Jrc3BhY2UiLCJpIiwia2V5Iiwid29ya3NwYWNlSW5uZXJDb250YWluZXIiLCJoaWRkZW5FeHRyYVdvcmtzcGFjZSIsImZhbGxiYWNrIiwiaTE4biIsIndpbmRvdyIsImkxOG5leHQiLCJkZWZhdWx0TlMiLCJtb2R1bGVOYW1lIiwiV29ya3NwYWNlIiwid29ya3NwYWNlSW5zdGFuY2UiLCJpc1dpdGhpbldvcmtzcGFjZSIsInQiLCJ0cmFuc2xhdGVkVGl0bGUiLCJ0aXRsZSIsInNldFRpdGxlIiwiZmVhdHVyZU5hbWUiLCJ0b2dnbGVXaW5kb3dTdGF0ZSIsImNhbkhpZGUiLCJjYW5NYXhpbWl6ZSIsImN1cnJlbnRXb3Jrc3BhY2VHcm91cCIsImNsb3NlV29ya3NwYWNlIiwid29ya3NwYWNlUHJvcHMiLCJhZGRpdGlvbmFsUHJvcHMiLCJhcmlhLWxhYmVsIiwiaGVhZGVyIiwicmVuZGVyTWVudUljb24iLCJvbkNsaWNrIiwicHJlZml4IiwidGl0bGVOb2RlIiwib3ZlcmxheUhlYWRlclNwYWNlciIsImhlYWRlckJ1dHRvbnMiLCJzdGF0ZSIsInR5cGUiLCJ3b3Jrc3BhY2VDb250ZW50IiwibWFyZ2luV29ya3NwYWNlQ29udGVudCIsIkJvb2xlYW4iLCJhZGRpdGlvbmFsUHJvcHNGcm9tUGFnZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx\n");
2078
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ WorkspaceContainer: () => (/* binding */ WorkspaceContainer)\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 react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"webpack/sharing/consume/default/react-i18next/react-i18next\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! classnames */ \"../../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _carbon_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @carbon/react */ \"webpack/sharing/consume/default/@carbon/react/@carbon/react\");\n/* harmony import */ var _carbon_react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_carbon_react__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _carbon_react_icons__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @carbon/react/icons */ \"../../../node_modules/@carbon/icons-react/es/generated/bucket-11.js\");\n/* harmony import */ var _carbon_react_icons__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @carbon/react/icons */ \"../../../node_modules/@carbon/icons-react/es/generated/bucket-5.js\");\n/* harmony import */ var _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @openmrs/esm-react-utils */ \"../../framework/esm-react-utils/dist/index.js\");\n/* harmony import */ var _openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @openmrs/esm-translations */ \"../../framework/esm-translations/dist/index.js\");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../icons */ \"../../framework/esm-styleguide/src/icons/index.ts\");\n/* harmony import */ var _notification_workspace_notification_component__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../notification/workspace-notification.component */ \"../../framework/esm-styleguide/src/workspaces/notification/workspace-notification.component.tsx\");\n/* harmony import */ var _workspaces__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../workspaces */ \"../../framework/esm-styleguide/src/workspaces/workspaces.ts\");\n/* harmony import */ var _workspace_renderer_component__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./workspace-renderer.component */ \"../../framework/esm-styleguide/src/workspaces/container/workspace-renderer.component.tsx\");\n/* harmony import */ var _action_menu_component__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./action-menu.component */ \"../../framework/esm-styleguide/src/workspaces/container/action-menu.component.tsx\");\n/* harmony import */ var _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./workspace.module.scss */ \"../../framework/esm-styleguide/src/workspaces/container/workspace.module.scss\");\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 _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}\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Use this component to render the [workspace window](https://zeroheight.com/23a080e38/p/483a22-workspace)\n * in an app such as the patient chart, or a workspace overlay in an app such as the clinic dashboard.\n * This allows workspaces to be opened on the page where this component is mounted. This component\n * must not be mounted multiple times on the same page. If there are multiple apps on a page, only\n * one of those apps should use this component—it \"hosts\" the workspaces.\n *\n * Workspaces may be opened with the [[launchWorkspace]] function from `@openmrs/esm-framework`\n * (among other options).\n *\n * The `overlay` prop determines whether the workspace is rendered as an overlay or a window.\n * When a workspace window is opened, the other content on the screen will be pushed to the left.\n * When an overlay is opened, it will cover other content on the screen.\n *\n * The context key is a string that appears in the URL, which defines the pages on which workspaces\n * are valid. If the URL changes in a way such that it no longer contains the context key, then\n * all workspaces will be closed. This ensures that, for example, workspaces on the home page do\n * not stay open when the user transitions to the patient dashboard; and also that workspaces do\n * not stay open when the user navigates to a different patient. The context key must be a valid\n * sub-path of the URL, with no initial or trailing slash. So if the URL is\n * `https://example.com/patient/123/foo`, then `patient` and `patient/123` and `123/foo` are valid\n * context keys, but `patient/12` and `pati` are not.\n *\n * An extension slot is provided in the workspace header. Its name is derived from the `featureName` of\n * the top-level component in which it is defined (feature names are generally provided in the lifecycle\n * functions in an app's `index.ts` file). The slot is named `workspace-header-${featureName}-slot`.\n * For the patient chart, this is `workspace-header-patient-chart-slot`.\n *\n * This component also provides the [Siderail and Bottom Nav](https://zeroheight.com/23a080e38/p/948cf1-siderail-and-bottom-nav/b/86907e).\n * To use this, pass the `showSiderailAndBottomNav` prop. The Siderail is rendered on the right side of the screen\n * on desktop, and the Bottom Nav is rendered at the bottom of the screen on tablet or mobile. The sidebar/bottom-nav\n * menu provides an extension slot, to which buttons are attached as extensions. The slot\n * derives its name from the `featureName` of the top-level component in which this `WorkspaceContainer`\n * appears (feature names are generally provided in the lifecycle functions in an app's `index.ts` file).\n * The slot is named `action-menu-${featureName}-items-slot`. For the patient chart, this is\n * `action-menu-patient-chart-items-slot`.\n *\n * This component also provides everything needed for workspace notifications to be rendered.\n *\n * @param props.contextKey The context key (explained above)\n * @param props.additionalWorkspaceProps Additional props to pass to the workspace. Using this is\n * unusual; you will generally want to pass props to the workspace when you open it, using\n * `launchWorkspace`. Use this only for props that will apply to every workspace launched\n * on the page where this component is mounted.\n */ function WorkspaceContainer(param) {\n var contextKey = param.contextKey, overlay = param.overlay, showSiderailAndBottomNav = param.showSiderailAndBottomNav, additionalWorkspaceProps = param.additionalWorkspaceProps, actionMenuProps = param.actionMenuProps;\n var layout = (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.useLayoutType)();\n var _useWorkspaces = (0,_workspaces__WEBPACK_IMPORTED_MODULE_8__.useWorkspaces)(), workspaces = _useWorkspaces.workspaces, workspaceWindowState = _useWorkspaces.workspaceWindowState, workspaceGroup = _useWorkspaces.workspaceGroup;\n var currentGroupName = workspaceGroup === null || workspaceGroup === void 0 ? void 0 : workspaceGroup.name;\n var activeWorkspace = workspaces[0];\n var isHidden = workspaceWindowState === 'hidden' || activeWorkspace == null;\n var isMaximized = workspaceWindowState === 'maximized';\n var _activeWorkspace_width;\n var width = (_activeWorkspace_width = activeWorkspace === null || activeWorkspace === void 0 ? void 0 : activeWorkspace.width) !== null && _activeWorkspace_width !== void 0 ? _activeWorkspace_width : overlay ? 'wider' : 'narrow';\n var showActionMenu = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return showSiderailAndBottomNav || currentGroupName && !isHidden;\n }, [\n currentGroupName,\n isHidden,\n showSiderailAndBottomNav\n ]);\n (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.useBodyScrollLock)(!isHidden && !(0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.isDesktop)(layout));\n var _obj, _obj1;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: showSiderailAndBottomNav ? _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceContainerWithActionMenu : _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceContainerWithoutActionMenu\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"aside\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_2___default()(overlay ? _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceOverlayOuterContainer : _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceWindowSpacer, (_obj = {}, _define_property(_obj, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].hiddenRelative, isHidden), _define_property(_obj, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].narrowWorkspace, width === 'narrow'), _define_property(_obj, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].widerWorkspace, width === 'wider'), _define_property(_obj, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].extraWideWorkspace, width === 'extra-wide'), _obj))\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_2___default()(_workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceFixedContainer, (_obj1 = {}, _define_property(_obj1, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].maximizedWindow, isMaximized), _define_property(_obj1, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].hiddenFixed, isHidden), _obj1))\n }, workspaces.map(function(workspace, i) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n key: \"workspace-container-\".concat(workspace ? workspace.name : \"empty-\".concat(i)),\n className: classnames__WEBPACK_IMPORTED_MODULE_2___default()(_workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceInnerContainer, _define_property({}, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].hiddenExtraWorkspace, i !== 0))\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react__WEBPACK_IMPORTED_MODULE_0__.Suspense, {\n fallback: null\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_i18next__WEBPACK_IMPORTED_MODULE_1__.I18nextProvider, {\n i18n: window.i18next,\n defaultNS: workspace.moduleName\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Workspace, {\n workspaceInstance: workspace,\n additionalWorkspaceProps: additionalWorkspaceProps\n }))));\n }))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_notification_workspace_notification_component__WEBPACK_IMPORTED_MODULE_7__.WorkspaceNotification, {\n contextKey: contextKey\n })), showActionMenu && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_action_menu_component__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n name: currentGroupName,\n isWithinWorkspace: !showSiderailAndBottomNav,\n actionMenuProps: actionMenuProps\n }));\n}\nfunction Workspace(param) {\n var workspaceInstance = param.workspaceInstance, additionalWorkspaceProps = param.additionalWorkspaceProps;\n var t = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)().t;\n var layout = (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.useLayoutType)();\n var _useWorkspaces = (0,_workspaces__WEBPACK_IMPORTED_MODULE_8__.useWorkspaces)(), workspaceWindowState = _useWorkspaces.workspaceWindowState, workspaceGroup = _useWorkspaces.workspaceGroup;\n var currentGroupName = workspaceGroup === null || workspaceGroup === void 0 ? void 0 : workspaceGroup.name;\n var isMaximized = workspaceWindowState === 'maximized';\n // Translate the workspace title\n // The workspace title is a translation key whose translation resides in the workspace module.\n // Since the workspace module is not loaded at the time of workspace registration, we need to translate it here\n // when the workspace is actually rendered and the workspace module along with its translations are loaded.\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n var translatedTitle = t(workspaceInstance.title);\n if (translatedTitle !== workspaceInstance.title) {\n workspaceInstance.setTitle(translatedTitle);\n }\n }, [\n workspaceInstance.title,\n t,\n workspaceInstance.setTitle\n ]);\n // We use the feature name of the app containing the workspace in order to set the extension\n // slot name. We can't use contextKey for this because we don't want the slot name to be\n // different for different patients, but we do want it to be different for different apps.\n var featureName = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.ComponentContext).featureName;\n var toggleWindowState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function() {\n (0,_workspaces__WEBPACK_IMPORTED_MODULE_8__.updateWorkspaceWindowState)(isMaximized ? 'normal' : 'maximized');\n }, [\n isMaximized\n ]);\n var _useMemo = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return workspaceInstance !== null && workspaceInstance !== void 0 ? workspaceInstance : {};\n }, [\n workspaceInstance\n ]), _useMemo_canHide = _useMemo.canHide, canHide = _useMemo_canHide === void 0 ? false : _useMemo_canHide, _useMemo_canMaximize = _useMemo.canMaximize, canMaximize = _useMemo_canMaximize === void 0 ? false : _useMemo_canMaximize, _useMemo_currentWorkspaceGroup = _useMemo.currentWorkspaceGroup, currentWorkspaceGroup = _useMemo_currentWorkspaceGroup === void 0 ? '' : _useMemo_currentWorkspaceGroup, closeWorkspace = _useMemo.closeWorkspace;\n var workspaceProps = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return _object_spread({}, additionalWorkspaceProps, workspaceInstance === null || workspaceInstance === void 0 ? void 0 : workspaceInstance.additionalProps);\n }, [\n additionalWorkspaceProps,\n workspaceInstance\n ]);\n var _workspaceInstance_titleNode;\n return workspaceInstance && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.Header, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('workspaceHeader', 'Workspace Header'),\n className: _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].header\n }, !(0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.isDesktop)(layout) && !canHide && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderMenuButton, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('close', 'Close'),\n renderMenuIcon: /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowLeftIcon, null),\n onClick: function() {\n return closeWorkspace();\n }\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderName, {\n prefix: \"\"\n }, (_workspaceInstance_titleNode = workspaceInstance.titleNode) !== null && _workspaceInstance_titleNode !== void 0 ? _workspaceInstance_titleNode : t(workspaceInstance.title)), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].overlayHeaderSpacer\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderGlobalBar, {\n className: _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].headerButtons\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.ExtensionSlot, {\n name: \"workspace-header-group-\".concat(workspaceInstance.currentWorkspaceGroup, \"-slot\"),\n state: workspaceProps\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.ExtensionSlot, {\n name: \"workspace-header-type-\".concat(workspaceInstance.type, \"-slot\"),\n state: workspaceProps\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.ExtensionSlot, {\n name: \"workspace-header-\".concat(featureName, \"-slot\"),\n state: workspaceProps\n }), (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.isDesktop)(layout) && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, (canMaximize || isMaximized) && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderGlobalAction, {\n \"aria-label\": isMaximized ? (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('minimize', 'Minimize') : (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('maximize', 'Maximize'),\n onClick: toggleWindowState\n }, isMaximized ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react_icons__WEBPACK_IMPORTED_MODULE_12__.Minimize, null) : /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react_icons__WEBPACK_IMPORTED_MODULE_12__.Maximize, null)), canHide && !currentGroupName ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('hide', 'Hide'),\n onClick: function() {\n return (0,_workspaces__WEBPACK_IMPORTED_MODULE_8__.updateWorkspaceWindowState)('hidden');\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowRightIcon, null)) : /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('close', 'Close'),\n onClick: function() {\n return closeWorkspace === null || closeWorkspace === void 0 ? void 0 : closeWorkspace();\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons__WEBPACK_IMPORTED_MODULE_6__.CloseIcon, null))), layout === 'tablet' && canHide && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('close', 'Close'),\n onClick: function() {\n return closeWorkspace === null || closeWorkspace === void 0 ? void 0 : closeWorkspace();\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react_icons__WEBPACK_IMPORTED_MODULE_13__.DownToBottom, null)))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_2___default()(_workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceContent, _define_property({}, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].marginWorkspaceContent, Boolean(currentWorkspaceGroup)))\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_workspace_renderer_component__WEBPACK_IMPORTED_MODULE_9__.WorkspaceRenderer, {\n key: workspaceInstance.name,\n workspace: workspaceInstance,\n additionalPropsFromPage: additionalWorkspaceProps\n })));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy93b3Jrc3BhY2VzL2NvbnRhaW5lci93b3Jrc3BhY2UtY29udGFpbmVyLmNvbXBvbmVudC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBcUc7QUFDckM7QUFDNUI7QUFDc0U7QUFDbkM7QUFDaUQ7QUFDekQ7QUFDUTtBQUNrQjtBQUNLO0FBQzNCO0FBQ2xCO0FBQ0o7QUFVN0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBNENDLEdBQ00sU0FBU2dDLG1CQUFtQixLQU1UO1FBTHhCQyxhQURpQyxNQUNqQ0EsWUFDQUMsVUFGaUMsTUFFakNBLFNBQ0FDLDJCQUhpQyxNQUdqQ0EsMEJBQ0FDLDJCQUppQyxNQUlqQ0EsMEJBQ0FDLGtCQUxpQyxNQUtqQ0E7SUFFQSxJQUFNQyxTQUFTakIsdUVBQWFBO0lBQzVCLElBQTZETyxpQkFBQUEsMERBQWFBLElBQWxFVyxhQUFxRFgsZUFBckRXLFlBQVlDLHVCQUF5Q1osZUFBekNZLHNCQUFzQkMsaUJBQW1CYixlQUFuQmE7SUFDMUMsSUFBTUMsbUJBQW1CRCwyQkFBQUEscUNBQUFBLGVBQWdCRSxJQUFJO0lBQzdDLElBQU1DLGtCQUFrQkwsVUFBVSxDQUFDLEVBQUU7SUFDckMsSUFBTU0sV0FBV0wseUJBQXlCLFlBQVlJLG1CQUFtQjtJQUN6RSxJQUFNRSxjQUFjTix5QkFBeUI7UUFDL0JJO0lBQWQsSUFBTUcsUUFBUUgsQ0FBQUEseUJBQUFBLDRCQUFBQSxzQ0FBQUEsZ0JBQWlCRyxLQUFLLGNBQXRCSCxvQ0FBQUEseUJBQTJCVixVQUFVLFVBQVU7SUFDN0QsSUFBTWMsaUJBQWlCM0MsOENBQU9BLENBQzVCO2VBQU04Qiw0QkFBNkJPLG9CQUFvQixDQUFDRztPQUN4RDtRQUFDSDtRQUFrQkc7UUFBVVY7S0FBeUI7SUFHeERmLDJFQUFpQkEsQ0FBQyxD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dHlsZWd1aWRlL3NyYy93b3Jrc3BhY2VzL2NvbnRhaW5lci93b3Jrc3BhY2UtY29udGFpbmVyLmNvbXBvbmVudC50c3g/ZWEzZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdHlwZSBSZWFjdE5vZGUsIFN1c3BlbnNlLCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSTE4bmV4dFByb3ZpZGVyLCB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBIZWFkZXIsIEhlYWRlckdsb2JhbEFjdGlvbiwgSGVhZGVyR2xvYmFsQmFyLCBIZWFkZXJNZW51QnV0dG9uLCBIZWFkZXJOYW1lIH0gZnJvbSAnQGNhcmJvbi9yZWFjdCc7XG5pbXBvcnQgeyBEb3duVG9Cb3R0b20sIE1heGltaXplLCBNaW5pbWl6ZSB9IGZyb20gJ0BjYXJib24vcmVhY3QvaWNvbnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dCwgRXh0ZW5zaW9uU2xvdCwgaXNEZXNrdG9wLCB1c2VCb2R5U2Nyb2xsTG9jaywgdXNlTGF5b3V0VHlwZSB9IGZyb20gJ0BvcGVubXJzL2VzbS1yZWFjdC11dGlscyc7XG5pbXBvcnQgeyBnZXRDb3JlVHJhbnNsYXRpb24gfSBmcm9tICdAb3Blbm1ycy9lc20tdHJhbnNsYXRpb25zJztcbmltcG9ydCB7IEFycm93TGVmdEljb24sIEFycm93UmlnaHRJY29uLCBDbG9zZUljb24gfSBmcm9tICcuLi8uLi9pY29ucyc7XG5pbXBvcnQgeyBXb3Jrc3BhY2VOb3RpZmljYXRpb24gfSBmcm9tICcuLi9ub3RpZmljYXRpb24vd29ya3NwYWNlLW5vdGlmaWNhdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgdHlwZSBPcGVuV29ya3NwYWNlLCB1cGRhdGVXb3Jrc3BhY2VXaW5kb3dTdGF0ZSwgdXNlV29ya3NwYWNlcyB9IGZyb20gJy4uL3dvcmtzcGFjZXMnO1xuaW1wb3J0IHsgV29ya3NwYWNlUmVuZGVyZXIgfSBmcm9tICcuL3dvcmtzcGFjZS1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IEFjdGlvbk1lbnUgZnJvbSAnLi9hY3Rpb24tbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3dvcmtzcGFjZS5tb2R1bGUuc2Nzcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV29ya3NwYWNlQ29udGFpbmVyUHJvcHMge1xuICBjb250ZXh0S2V5OiBzdHJpbmc7XG4gIG92ZXJsYXk/OiBib29sZWFuO1xuICBzaG93U2lkZXJhaWxBbmRCb3R0b21OYXY/OiBib29sZWFuO1xuICBhZGRpdGlvbmFsV29ya3NwYWNlUHJvcHM/OiBvYmplY3Q7XG4gIGFjdGlvbk1lbnVQcm9wcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKipcbiAqIFVzZSB0aGlzIGNvbXBvbmVudCB0byByZW5kZXIgdGhlIFt3b3Jrc3BhY2Ugd2luZG93XShodHRwczovL3plcm9oZWlnaHQuY29tLzIzYTA4MGUzOC9wLzQ4M2EyMi13b3Jrc3BhY2UpXG4gKiBpbiBhbiBhcHAgc3VjaCBhcyB0aGUgcGF0aWVudCBjaGFydCwgb3IgYSB3b3Jrc3BhY2Ugb3ZlcmxheSBpbiBhbiBhcHAgc3VjaCBhcyB0aGUgY2xpbmljIGRhc2hib2FyZC5cbiAqIFRoaXMgYWxsb3dzIHdvcmtzcGFjZXMgdG8gYmUgb3BlbmVkIG9uIHRoZSBwYWdlIHdoZXJlIHRoaXMgY29tcG9uZW50IGlzIG1vdW50ZWQuIFRoaXMgY29tcG9uZW50XG4gKiBtdXN0IG5vdCBiZSBtb3VudGVkIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIHBhZ2UuIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBhcHBzIG9uIGEgcGFnZSwgb25seVxuICogb25lIG9mIHRob3NlIGFwcHMgc2hvdWxkIHVzZSB0aGlzIGNvbXBvbmVudOKAlGl0IFwiaG9zdHNcIiB0aGUgd29ya3NwYWNlcy5cbiAqXG4gKiBXb3Jrc3BhY2VzIG1heSBiZSBvcGVuZWQgd2l0aCB0aGUgW1tsYXVuY2hXb3Jrc3BhY2VdXSBmdW5jdGlvbiBmcm9tIGBAb3Blbm1ycy9lc20tZnJhbWV3b3JrYFxuICogKGFtb25nIG90aGVyIG9wdGlvbnMpLlxuICpcbiAqIFRoZSBgb3ZlcmxheWAgcHJvcCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHdvcmtzcGFjZSBpcyByZW5kZXJlZCBhcyBhbiBvdmVybGF5IG9yIGEgd2luZG93LlxuICogV2hlbiBhIHdvcmtzcGFjZSB3aW5kb3cgaXMgb3BlbmVkLCB0aGUgb3RoZXIgY29udGVudCBvbiB0aGUgc2NyZWVuIHdpbGwgYmUgcHVzaGVkIHRvIHRoZSBsZWZ0LlxuICogV2hlbiBhbiBvdmVybGF5IGlzIG9wZW5lZCwgaXQgd2lsbCBjb3ZlciBvdGhlciBjb250ZW50IG9uIHRoZSBzY3JlZW4uXG4gKlxuICogVGhlIGNvbnRleHQga2V5IGlzIGEgc3RyaW5nIHRoYXQgYXBwZWFycyBpbiB0aGUgVVJMLCB3aGljaCBkZWZpbmVzIHRoZSBwYWdlcyBvbiB3aGljaCB3b3Jrc3BhY2VzXG4gKiBhcmUgdmFsaWQuIElmIHRoZSBVUkwgY2hhbmdlcyBpbiBhIHdheSBzdWNoIHRoYXQgaXQgbm8gbG9uZ2VyIGNvbnRhaW5zIHRoZSBjb250ZXh0IGtleSwgdGhlblxuICogYWxsIHdvcmtzcGFjZXMgd2lsbCBiZSBjbG9zZWQuIFRoaXMgZW5zdXJlcyB0aGF0LCBmb3IgZXhhbXBsZSwgd29ya3NwYWNlcyBvbiB0aGUgaG9tZSBwYWdlIGRvXG4gKiBub3Qgc3RheSBvcGVuIHdoZW4gdGhlIHVzZXIgdHJhbnNpdGlvbnMgdG8gdGhlIHBhdGllbnQgZGFzaGJvYXJkOyBhbmQgYWxzbyB0aGF0IHdvcmtzcGFjZXMgZG9cbiAqIG5vdCBzdGF5IG9wZW4gd2hlbiB0aGUgdXNlciBuYXZpZ2F0ZXMgdG8gYSBkaWZmZXJlbnQgcGF0aWVudC4gVGhlIGNvbnRleHQga2V5IG11c3QgYmUgYSB2YWxpZFxuICogc3ViLXBhdGggb2YgdGhlIFVSTCwgd2l0aCBubyBpbml0aWFsIG9yIHRyYWlsaW5nIHNsYXNoLiBTbyBpZiB0aGUgVVJMIGlzXG4gKiBgaHR0cHM6Ly9leGFtcGxlLmNvbS9wYXRpZW50LzEyMy9mb29gLCB0aGVuIGBwYXRpZW50YCBhbmQgYHBhdGllbnQvMTIzYCBhbmQgYDEyMy9mb29gIGFyZSB2YWxpZFxuICogY29udGV4dCBrZXlzLCBidXQgYHBhdGllbnQvMTJgIGFuZCBgcGF0aWAgYXJlIG5vdC5cbiAqXG4gKiBBbiBleHRlbnNpb24gc2xvdCBpcyBwcm92aWRlZCBpbiB0aGUgd29ya3NwYWNlIGhlYWRlci4gSXRzIG5hbWUgaXMgZGVyaXZlZCBmcm9tIHRoZSBgZmVhdHVyZU5hbWVgIG9mXG4gKiB0aGUgdG9wLWxldmVsIGNvbXBvbmVudCBpbiB3aGljaCBpdCBpcyBkZWZpbmVkIChmZWF0dXJlIG5hbWVzIGFyZSBnZW5lcmFsbHkgcHJvdmlkZWQgaW4gdGhlIGxpZmVjeWNsZVxuICogZnVuY3Rpb25zIGluIGFuIGFwcCdzIGBpbmRleC50c2AgZmlsZSkuIFRoZSBzbG90IGlzIG5hbWVkIGB3b3Jrc3BhY2UtaGVhZGVyLSR7ZmVhdHVyZU5hbWV9LXNsb3RgLlxuICogRm9yIHRoZSBwYXRpZW50IGNoYXJ0LCB0aGlzIGlzIGB3b3Jrc3BhY2UtaGVhZGVyLXBhdGllbnQtY2hhcnQtc2xvdGAuXG4gKlxuICogVGhpcyBjb21wb25lbnQgYWxzbyBwcm92aWRlcyB0aGUgW1NpZGVyYWlsIGFuZCBCb3R0b20gTmF2XShodHRwczovL3plcm9oZWlnaHQuY29tLzIzYTA4MGUzOC9wLzk0OGNmMS1zaWRlcmFpbC1hbmQtYm90dG9tLW5hdi9iLzg2OTA3ZSkuXG4gKiBUbyB1c2UgdGhpcywgcGFzcyB0aGUgYHNob3dTaWRlcmFpbEFuZEJvdHRvbU5hdmAgcHJvcC4gVGhlIFNpZGVyYWlsIGlzIHJlbmRlcmVkIG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBzY3JlZW5cbiAqIG9uIGRlc2t0b3AsIGFuZCB0aGUgQm90dG9tIE5hdiBpcyByZW5kZXJlZCBhdCB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4gb24gdGFibGV0IG9yIG1vYmlsZS4gVGhlIHNpZGViYXIvYm90dG9tLW5hdlxuICogbWVudSBwcm92aWRlcyBhbiBleHRlbnNpb24gc2xvdCwgdG8gd2hpY2ggYnV0dG9ucyBhcmUgYXR0YWNoZWQgYXMgZXh0ZW5zaW9ucy4gVGhlIHNsb3RcbiAqIGRlcml2ZXMgaXRzIG5hbWUgZnJvbSB0aGUgYGZlYXR1cmVOYW1lYCBvZiB0aGUgdG9wLWxldmVsIGNvbXBvbmVudCBpbiB3aGljaCB0aGlzIGBXb3Jrc3BhY2VDb250YWluZXJgXG4gKiBhcHBlYXJzIChmZWF0dXJlIG5hbWVzIGFyZSBnZW5lcmFsbHkgcHJvdmlkZWQgaW4gdGhlIGxpZmVjeWNsZSBmdW5jdGlvbnMgaW4gYW4gYXBwJ3MgYGluZGV4LnRzYCBmaWxlKS5cbiAqIFRoZSBzbG90IGlzIG5hbWVkIGBhY3Rpb24tbWVudS0ke2ZlYXR1cmVOYW1lfS1pdGVtcy1zbG90YC4gRm9yIHRoZSBwYXRpZW50IGNoYXJ0LCB0aGlzIGlzXG4gKiBgYWN0aW9uLW1lbnUtcGF0aWVudC1jaGFydC1pdGVtcy1zbG90YC5cbiAqXG4gKiBUaGlzIGNvbXBvbmVudCBhbHNvIHByb3ZpZGVzIGV2ZXJ5dGhpbmcgbmVlZGVkIGZvciB3b3Jrc3BhY2Ugbm90aWZpY2F0aW9ucyB0byBiZSByZW5kZXJlZC5cbiAqXG4gKiBAcGFyYW0gcHJvcHMuY29udGV4dEtleSBUaGUgY29udGV4dCBrZXkgKGV4cGxhaW5lZCBhYm92ZSlcbiAqIEBwYXJhbSBwcm9wcy5hZGRpdGlvbmFsV29ya3NwYWNlUHJvcHMgQWRkaXRpb25hbCBwcm9wcyB0byBwYXNzIHRvIHRoZSB3b3Jrc3BhY2UuIFVzaW5nIHRoaXMgaXNcbiAqICAgICAgICAgIHVudXN1YWw7IHlvdSB3aWxsIGdlbmVyYWxseSB3YW50IHRvIHBhc3MgcHJvcHMgdG8gdGhlIHdvcmtzcGFjZSB3aGVuIHlvdSBvcGVuIGl0LCB1c2luZ1xuICogICAgICAgICAgYGxhdW5jaFdvcmtzcGFjZWAuIFVzZSB0aGlzIG9ubHkgZm9yIHByb3BzIHRoYXQgd2lsbCBhcHBseSB0byBldmVyeSB3b3Jrc3BhY2UgbGF1bmNoZWRcbiAqICAgICAgICAgIG9uIHRoZSBwYWdlIHdoZXJlIHRoaXMgY29tcG9uZW50IGlzIG1vdW50ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBXb3Jrc3BhY2VDb250YWluZXIoe1xuICBjb250ZXh0S2V5LFxuICBvdmVybGF5LFxuICBzaG93U2lkZXJhaWxBbmRCb3R0b21OYXYsXG4gIGFkZGl0aW9uYWxXb3Jrc3BhY2VQcm9wcyxcbiAgYWN0aW9uTWVudVByb3BzLFxufTogV29ya3NwYWNlQ29udGFpbmVyUHJvcHMpIHtcbiAgY29uc3QgbGF5b3V0ID0gdXNlTGF5b3V0VHlwZSgpO1xuICBjb25zdCB7IHdvcmtzcGFjZXMsIHdvcmtzcGFjZVdpbmRvd1N0YXRlLCB3b3Jrc3BhY2VHcm91cCB9ID0gdXNlV29ya3NwYWNlcygpO1xuICBjb25zdCBjdXJyZW50R3JvdXBOYW1lID0gd29ya3NwYWNlR3JvdXA/Lm5hbWU7XG4gIGNvbnN0IGFjdGl2ZVdvcmtzcGFjZSA9IHdvcmtzcGFjZXNbMF07XG4gIGNvbnN0IGlzSGlkZGVuID0gd29ya3NwYWNlV2luZG93U3RhdGUgPT09ICdoaWRkZW4nIHx8IGFjdGl2ZVdvcmtzcGFjZSA9PSBudWxsO1xuICBjb25zdCBpc01heGltaXplZCA9IHdvcmtzcGFjZVdpbmRvd1N0YXRlID09PSAnbWF4aW1pemVkJztcbiAgY29uc3Qgd2lkdGggPSBhY3RpdmVXb3Jrc3BhY2U/LndpZHRoID8/IChvdmVybGF5ID8gJ3dpZGVyJyA6ICduYXJyb3cnKTtcbiAgY29uc3Qgc2hvd0FjdGlvbk1lbnUgPSB1c2VNZW1vKFxuICAgICgpID0+IHNob3dTaWRlcmFpbEFuZEJvdHRvbU5hdiB8fCAoY3VycmVudEdyb3VwTmFtZSAmJiAhaXNIaWRkZW4pLFxuICAgIFtjdXJyZW50R3JvdXBOYW1lLCBpc0hpZGRlbiwgc2hvd1NpZGVyYWlsQW5kQm90dG9tTmF2XSxcbiAgKTtcblxuICB1c2VCb2R5U2Nyb2xsTG9jayghaXNIaWRkZW4gJiYgIWlzRGVza3RvcChsYXlvdXQpKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17XG4gICAgICAgICAgc2hvd1NpZGVyYWlsQW5kQm90dG9tTmF2XG4gICAgICAgICAgICA/IHN0eWxlcy53b3Jrc3BhY2VDb250YWluZXJXaXRoQWN0aW9uTWVudVxuICAgICAgICAgICAgOiBzdHlsZXMud29ya3NwYWNlQ29udGFpbmVyV2l0aG91dEFjdGlvbk1lbnVcbiAgICAgICAgfVxuICAgICAgPlxuICAgICAgICA8YXNpZGVcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMob3ZlcmxheSA/IHN0eWxlcy53b3Jrc3BhY2VPdmVybGF5T3V0ZXJDb250YWluZXIgOiBzdHlsZXMud29ya3NwYWNlV2luZG93U3BhY2VyLCB7XG4gICAgICAgICAgICBbc3R5bGVzLmhpZGRlblJlbGF0aXZlXTogaXNIaWRkZW4sXG4gICAgICAgICAgICBbc3R5bGVzLm5hcnJvd1dvcmtzcGFjZV06IHdpZHRoID09PSAnbmFycm93JyxcbiAgICAgICAgICAgIFtzdHlsZXMud2lkZXJXb3Jrc3BhY2VdOiB3aWR0aCA9PT0gJ3dpZGVyJyxcbiAgICAgICAgICAgIFtzdHlsZXMuZXh0cmFXaWRlV29ya3NwYWNlXTogd2lkdGggPT09ICdleHRyYS13aWRlJyxcbiAgICAgICAgICB9KX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhzdHlsZXMud29ya3NwYWNlRml4ZWRDb250YWluZXIsIHtcbiAgICAgICAgICAgICAgW3N0eWxlcy5tYXhpbWl6ZWRXaW5kb3ddOiBpc01heGltaXplZCxcbiAgICAgICAgICAgICAgW3N0eWxlcy5oaWRkZW5GaXhlZF06IGlzSGlkZGVuLFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3dvcmtzcGFjZXMubWFwKCh3b3Jrc3BhY2UsIGkpID0+IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGtleT17YHdvcmtzcGFjZS1jb250YWluZXItJHt3b3Jrc3BhY2UgPyB3b3Jrc3BhY2UubmFtZSA6IGBlbXB0eS0ke2l9YH1gfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhzdHlsZXMud29ya3NwYWNlSW5uZXJDb250YWluZXIsIHsgW3N0eWxlcy5oaWRkZW5FeHRyYVdvcmtzcGFjZV06IGkgIT09IDAgfSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U3VzcGVuc2UgZmFsbGJhY2s9e251bGx9PlxuICAgICAgICAgICAgICAgICAgPEkxOG5leHRQcm92aWRlciBpMThuPXt3aW5kb3cuaTE4bmV4dH0gZGVmYXVsdE5TPXt3b3Jrc3BhY2UubW9kdWxlTmFtZX0+XG4gICAgICAgICAgICAgICAgICAgIDxXb3Jrc3BhY2Ugd29ya3NwYWNlSW5zdGFuY2U9e3dvcmtzcGFjZX0gYWRkaXRpb25hbFdvcmtzcGFjZVByb3BzPXthZGRpdGlvbmFsV29ya3NwYWNlUHJvcHN9IC8+XG4gICAgICAgICAgICAgICAgICA8L0kxOG5leHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L1N1c3BlbnNlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FzaWRlPlxuICAgICAgICA8V29ya3NwYWNlTm90aWZpY2F0aW9uIGNvbnRleHRLZXk9e2NvbnRleHRLZXl9IC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIHtzaG93QWN0aW9uTWVudSAmJiAoXG4gICAgICAgIDxBY3Rpb25NZW51XG4gICAgICAgICAgbmFtZT17Y3VycmVudEdyb3VwTmFtZX1cbiAgICAgICAgICBpc1dpdGhpbldvcmtzcGFjZT17IXNob3dTaWRlcmFpbEFuZEJvdHRvbU5hdn1cbiAgICAgICAgICBhY3Rpb25NZW51UHJvcHM9e2FjdGlvbk1lbnVQcm9wc31cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59XG5cbmludGVyZmFjZSBXb3Jrc3BhY2VQcm9wcyB7XG4gIHdvcmtzcGFjZUluc3RhbmNlOiBPcGVuV29ya3NwYWNlO1xuICBhZGRpdGlvbmFsV29ya3NwYWNlUHJvcHM/OiBvYmplY3Q7XG59XG5cbmZ1bmN0aW9uIFdvcmtzcGFjZSh7IHdvcmtzcGFjZUluc3RhbmNlLCBhZGRpdGlvbmFsV29ya3NwYWNlUHJvcHMgfTogV29ya3NwYWNlUHJvcHMpIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBsYXlvdXQgPSB1c2VMYXlvdXRUeXBlKCk7XG4gIGNvbnN0IHsgd29ya3NwYWNlV2luZG93U3RhdGUsIHdvcmtzcGFjZUdyb3VwIH0gPSB1c2VXb3Jrc3BhY2VzKCk7XG4gIGNvbnN0IGN1cnJlbnRHcm91cE5hbWUgPSB3b3Jrc3BhY2VHcm91cD8ubmFtZTtcbiAgY29uc3QgaXNNYXhpbWl6ZWQgPSB3b3Jrc3BhY2VXaW5kb3dTdGF0ZSA9PT0gJ21heGltaXplZCc7XG5cbiAgLy8gVHJhbnNsYXRlIHRoZSB3b3Jrc3BhY2UgdGl0bGVcbiAgLy8gVGhlIHdvcmtzcGFjZSB0aXRsZSBpcyBhIHRyYW5zbGF0aW9uIGtleSB3aG9zZSB0cmFuc2xhdGlvbiByZXNpZGVzIGluIHRoZSB3b3Jrc3BhY2UgbW9kdWxlLlxuICAvLyBTaW5jZSB0aGUgd29ya3NwYWNlIG1vZHVsZSBpcyBub3QgbG9hZGVkIGF0IHRoZSB0aW1lIG9mIHdvcmtzcGFjZSByZWdpc3RyYXRpb24sIHdlIG5lZWQgdG8gdHJhbnNsYXRlIGl0IGhlcmVcbiAgLy8gd2hlbiB0aGUgd29ya3NwYWNlIGlzIGFjdHVhbGx5IHJlbmRlcmVkIGFuZCB0aGUgd29ya3NwYWNlIG1vZHVsZSBhbG9uZyB3aXRoIGl0cyB0cmFuc2xhdGlvbnMgYXJlIGxvYWRlZC5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB0cmFuc2xhdGVkVGl0bGUgPSB0KHdvcmtzcGFjZUluc3RhbmNlLnRpdGxlKTtcbiAgICBpZiAodHJhbnNsYXRlZFRpdGxlICE9PSB3b3Jrc3BhY2VJbnN0YW5jZS50aXRsZSkge1xuICAgICAgd29ya3NwYWNlSW5zdGFuY2Uuc2V0VGl0bGUodHJhbnNsYXRlZFRpdGxlKTtcbiAgICB9XG4gIH0sIFt3b3Jrc3BhY2VJbnN0YW5jZS50aXRsZSwgdCwgd29ya3NwYWNlSW5zdGFuY2Uuc2V0VGl0bGVdKTtcblxuICAvLyBXZSB1c2UgdGhlIGZlYXR1cmUgbmFtZSBvZiB0aGUgYXBwIGNvbnRhaW5pbmcgdGhlIHdvcmtzcGFjZSBpbiBvcmRlciB0byBzZXQgdGhlIGV4dGVuc2lvblxuICAvLyBzbG90IG5hbWUuIFdlIGNhbid0IHVzZSBjb250ZXh0S2V5IGZvciB0aGlzIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0aGUgc2xvdCBuYW1lIHRvIGJlXG4gIC8vIGRpZmZlcmVudCBmb3IgZGlmZmVyZW50IHBhdGllbnRzLCBidXQgd2UgZG8gd2FudCBpdCB0byBiZSBkaWZmZXJlbnQgZm9yIGRpZmZlcmVudCBhcHBzLlxuICBjb25zdCB7IGZlYXR1cmVOYW1lIH0gPSB1c2VDb250ZXh0KENvbXBvbmVudENvbnRleHQpO1xuXG4gIGNvbnN0IHRvZ2dsZVdpbmRvd1N0YXRlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHVwZGF0ZVdvcmtzcGFjZVdpbmRvd1N0YXRlKGlzTWF4aW1pemVkID8gJ25vcm1hbCcgOiAnbWF4aW1pemVkJyk7XG4gIH0sIFtpc01heGltaXplZF0pO1xuXG4gIGNvbnN0IHtcbiAgICBjYW5IaWRlID0gZmFsc2UsXG4gICAgY2FuTWF4aW1pemUgPSBmYWxzZSxcbiAgICBjdXJyZW50V29ya3NwYWNlR3JvdXAgPSAnJyxcbiAgICBjbG9zZVdvcmtzcGFjZSxcbiAgfSA9IHVzZU1lbW8oKCkgPT4gd29ya3NwYWNlSW5zdGFuY2UgPz8gKHt9IGFzIE9wZW5Xb3Jrc3BhY2UpLCBbd29ya3NwYWNlSW5zdGFuY2VdKTtcblxuICBjb25zdCB3b3Jrc3BhY2VQcm9wcyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIC4uLmFkZGl0aW9uYWxXb3Jrc3BhY2VQcm9wcyxcbiAgICAgIC4uLndvcmtzcGFjZUluc3RhbmNlPy5hZGRpdGlvbmFsUHJvcHMsXG4gICAgfSksXG4gICAgW2FkZGl0aW9uYWxXb3Jrc3BhY2VQcm9wcywgd29ya3NwYWNlSW5zdGFuY2VdLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgd29ya3NwYWNlSW5zdGFuY2UgJiYgKFxuICAgICAgPD5cbiAgICAgICAgPEhlYWRlciBhcmlhLWxhYmVsPXtnZXRDb3JlVHJhbnNsYXRpb24oJ3dvcmtzcGFjZUhlYWRlcicsICdXb3Jrc3BhY2UgSGVhZGVyJyl9IGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+XG4gICAgICAgICAgeyFpc0Rlc2t0b3AobGF5b3V0KSAmJiAhY2FuSGlkZSAmJiAoXG4gICAgICAgICAgICA8SGVhZGVyTWVudUJ1dHRvblxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtnZXRDb3JlVHJhbnNsYXRpb24oJ2Nsb3NlJywgJ0Nsb3NlJyl9XG4gICAgICAgICAgICAgIHJlbmRlck1lbnVJY29uPXs8QXJyb3dMZWZ0SWNvbiAvPn1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gY2xvc2VXb3Jrc3BhY2UoKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8SGVhZGVyTmFtZSBwcmVmaXg9XCJcIj57d29ya3NwYWNlSW5zdGFuY2UudGl0bGVOb2RlID8/ICh0KHdvcmtzcGFjZUluc3RhbmNlLnRpdGxlKSBhcyBSZWFjdE5vZGUpfTwvSGVhZGVyTmFtZT5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm92ZXJsYXlIZWFkZXJTcGFjZXJ9IC8+XG4gICAgICAgICAgPEhlYWRlckdsb2JhbEJhciBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJCdXR0b25zfT5cbiAgICAgICAgICAgIDxFeHRlbnNpb25TbG90XG4gICAgICAgICAgICAgIG5hbWU9e2B3b3Jrc3BhY2UtaGVhZGVyLWdyb3VwLSR7d29ya3NwYWNlSW5zdGFuY2UuY3VycmVudFdvcmtzcGFjZUdyb3VwfS1zbG90YH1cbiAgICAgICAgICAgICAgc3RhdGU9e3dvcmtzcGFjZVByb3BzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxFeHRlbnNpb25TbG90IG5hbWU9e2B3b3Jrc3BhY2UtaGVhZGVyLXR5cGUtJHt3b3Jrc3BhY2VJbnN0YW5jZS50eXBlfS1zbG90YH0gc3RhdGU9e3dvcmtzcGFjZVByb3BzfSAvPlxuICAgICAgICAgICAgPEV4dGVuc2lvblNsb3QgbmFtZT17YHdvcmtzcGFjZS1oZWFkZXItJHtmZWF0dXJlTmFtZX0tc2xvdGB9IHN0YXRlPXt3b3Jrc3BhY2VQcm9wc30gLz5cbiAgICAgICAgICAgIHtpc0Rlc2t0b3AobGF5b3V0KSAmJiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgeyhjYW5NYXhpbWl6ZSB8fCBpc01heGltaXplZCkgJiYgKFxuICAgICAgICAgICAgICAgICAgPEhlYWRlckdsb2JhbEFjdGlvblxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtcbiAgICAgICAgICAgICAgICAgICAgICBpc01heGltaXplZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBnZXRDb3JlVHJhbnNsYXRpb24oJ21pbmltaXplJywgJ01pbmltaXplJylcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZ2V0Q29yZVRyYW5zbGF0aW9uKCdtYXhpbWl6ZScsICdNYXhpbWl6ZScpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dG9nZ2xlV2luZG93U3RhdGV9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtpc01heGltaXplZCA/IDxNaW5pbWl6ZSAvPiA6IDxNYXhpbWl6ZSAvPn1cbiAgICAgICAgICAgICAgICAgIDwvSGVhZGVyR2xvYmFsQWN0aW9uPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge2NhbkhpZGUgJiYgIWN1cnJlbnRHcm91cE5hbWUgPyAoXG4gICAgICAgICAgICAgICAgICA8SGVhZGVyR2xvYmFsQWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2dldENvcmVUcmFuc2xhdGlvbignaGlkZScsICdIaWRlJyl9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHVwZGF0ZVdvcmtzcGFjZVdpbmRvd1N0YXRlKCdoaWRkZW4nKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFycm93UmlnaHRJY29uIC8+XG4gICAgICAgICAgICAgICAgICA8L0hlYWRlckdsb2JhbEFjdGlvbj5cbiAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgPEhlYWRlckdsb2JhbEFjdGlvblxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtnZXRDb3JlVHJhbnNsYXRpb24oJ2Nsb3NlJywgJ0Nsb3NlJyl9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGNsb3NlV29ya3NwYWNlPy4oKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgICAgICAgICAgPC9IZWFkZXJHbG9iYWxBY3Rpb24+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2xheW91dCA9PT0gJ3RhYmxldCcgJiYgY2FuSGlkZSAmJiAoXG4gICAgICAgICAgICAgIDxIZWFkZXJHbG9iYWxBY3Rpb24gYXJpYS1sYWJlbD17Z2V0Q29yZVRyYW5zbGF0aW9uKCdjbG9zZScsICdDbG9zZScpfSBvbkNsaWNrPXsoKSA9PiBjbG9zZVdvcmtzcGFjZT8uKCl9PlxuICAgICAgICAgICAgICAgIDxEb3duVG9Cb3R0b20gLz5cbiAgICAgICAgICAgICAgPC9IZWFkZXJHbG9iYWxBY3Rpb24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvSGVhZGVyR2xvYmFsQmFyPlxuICAgICAgICA8L0hlYWRlcj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhzdHlsZXMud29ya3NwYWNlQ29udGVudCwge1xuICAgICAgICAgICAgW3N0eWxlcy5tYXJnaW5Xb3Jrc3BhY2VDb250ZW50XTogQm9vbGVhbihjdXJyZW50V29ya3NwYWNlR3JvdXApLFxuICAgICAgICAgIH0pfVxuICAgICAgICA+XG4gICAgICAgICAgPFdvcmtzcGFjZVJlbmRlcmVyXG4gICAgICAgICAgICBrZXk9e3dvcmtzcGFjZUluc3RhbmNlLm5hbWV9XG4gICAgICAgICAgICB3b3Jrc3BhY2U9e3dvcmtzcGFjZUluc3RhbmNlfVxuICAgICAgICAgICAgYWRkaXRpb25hbFByb3BzRnJvbVBhZ2U9e2FkZGl0aW9uYWxXb3Jrc3BhY2VQcm9wc31cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvPlxuICAgIClcbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJSZWFjdCIsIlN1c3BlbnNlIiwidXNlQ2FsbGJhY2siLCJ1c2VDb250ZXh0IiwidXNlRWZmZWN0IiwidXNlTWVtbyIsIkkxOG5leHRQcm92aWRlciIsInVzZVRyYW5zbGF0aW9uIiwiY2xhc3NOYW1lcyIsIkhlYWRlciIsIkhlYWRlckdsb2JhbEFjdGlvbiIsIkhlYWRlckdsb2JhbEJhciIsIkhlYWRlck1lbnVCdXR0b24iLCJIZWFkZXJOYW1lIiwiRG93blRvQm90dG9tIiwiTWF4aW1pemUiLCJNaW5pbWl6ZSIsIkNvbXBvbmVudENvbnRleHQiLCJFeHRlbnNpb25TbG90IiwiaXNEZXNrdG9wIiwidXNlQm9keVNjcm9sbExvY2siLCJ1c2VMYXlvdXRUeXBlIiwiZ2V0Q29yZVRyYW5zbGF0aW9uIiwiQXJyb3dMZWZ0SWNvbiIsIkFycm93UmlnaHRJY29uIiwiQ2xvc2VJY29uIiwiV29ya3NwYWNlTm90aWZpY2F0aW9uIiwidXBkYXRlV29ya3NwYWNlV2luZG93U3RhdGUiLCJ1c2VXb3Jrc3BhY2VzIiwiV29ya3NwYWNlUmVuZGVyZXIiLCJBY3Rpb25NZW51Iiwic3R5bGVzIiwiV29ya3NwYWNlQ29udGFpbmVyIiwiY29udGV4dEtleSIsIm92ZXJsYXkiLCJzaG93U2lkZXJhaWxBbmRCb3R0b21OYXYiLCJhZGRpdGlvbmFsV29ya3NwYWNlUHJvcHMiLCJhY3Rpb25NZW51UHJvcHMiLCJsYXlvdXQiLCJ3b3Jrc3BhY2VzIiwid29ya3NwYWNlV2luZG93U3RhdGUiLCJ3b3Jrc3BhY2VHcm91cCIsImN1cnJlbnRHcm91cE5hbWUiLCJuYW1lIiwiYWN0aXZlV29ya3NwYWNlIiwiaXNIaWRkZW4iLCJpc01heGltaXplZCIsIndpZHRoIiwic2hvd0FjdGlvbk1lbnUiLCJkaXYiLCJjbGFzc05hbWUiLCJ3b3Jrc3BhY2VDb250YWluZXJXaXRoQWN0aW9uTWVudSIsIndvcmtzcGFjZUNvbnRhaW5lcldpdGhvdXRBY3Rpb25NZW51IiwiYXNpZGUiLCJ3b3Jrc3BhY2VPdmVybGF5T3V0ZXJDb250YWluZXIiLCJ3b3Jrc3BhY2VXaW5kb3dTcGFjZXIiLCJoaWRkZW5SZWxhdGl2ZSIsIm5hcnJvd1dvcmtzcGFjZSIsIndpZGVyV29ya3NwYWNlIiwiZXh0cmFXaWRlV29ya3NwYWNlIiwid29ya3NwYWNlRml4ZWRDb250YWluZXIiLCJtYXhpbWl6ZWRXaW5kb3ciLCJoaWRkZW5GaXhlZCIsIm1hcCIsIndvcmtzcGFjZSIsImkiLCJrZXkiLCJ3b3Jrc3BhY2VJbm5lckNvbnRhaW5lciIsImhpZGRlbkV4dHJhV29ya3NwYWNlIiwiZmFsbGJhY2siLCJpMThuIiwid2luZG93IiwiaTE4bmV4dCIsImRlZmF1bHROUyIsIm1vZHVsZU5hbWUiLCJXb3Jrc3BhY2UiLCJ3b3Jrc3BhY2VJbnN0YW5jZSIsImlzV2l0aGluV29ya3NwYWNlIiwidCIsInRyYW5zbGF0ZWRUaXRsZSIsInRpdGxlIiwic2V0VGl0bGUiLCJmZWF0dXJlTmFtZSIsInRvZ2dsZVdpbmRvd1N0YXRlIiwiY2FuSGlkZSIsImNhbk1heGltaXplIiwiY3VycmVudFdvcmtzcGFjZUdyb3VwIiwiY2xvc2VXb3Jrc3BhY2UiLCJ3b3Jrc3BhY2VQcm9wcyIsImFkZGl0aW9uYWxQcm9wcyIsImFyaWEtbGFiZWwiLCJoZWFkZXIiLCJyZW5kZXJNZW51SWNvbiIsIm9uQ2xpY2siLCJwcmVmaXgiLCJ0aXRsZU5vZGUiLCJvdmVybGF5SGVhZGVyU3BhY2VyIiwiaGVhZGVyQnV0dG9ucyIsInN0YXRlIiwidHlwZSIsIndvcmtzcGFjZUNvbnRlbnQiLCJtYXJnaW5Xb3Jrc3BhY2VDb250ZW50IiwiQm9vbGVhbiIsImFkZGl0aW9uYWxQcm9wc0Zyb21QYWdlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx\n");
2079
2079
 
2080
2080
  /***/ }),
2081
2081
 
@@ -2145,7 +2145,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2145
2145
  \*******************************************************************/
2146
2146
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2147
2147
 
2148
- 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 */ getWorkspaceGroupStore: () => (/* binding */ getWorkspaceGroupStore),\n/* harmony export */ getWorkspaceStore: () => (/* binding */ getWorkspaceStore),\n/* harmony export */ launchWorkspace: () => (/* binding */ launchWorkspace),\n/* harmony export */ launchWorkspaceGroup: () => (/* binding */ launchWorkspaceGroup),\n/* harmony export */ navigateAndLaunchWorkspace: () => (/* binding */ navigateAndLaunchWorkspace),\n/* harmony export */ promptBeforeClosing: () => (/* binding */ promptBeforeClosing),\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/dist/index.js\");\n/* harmony import */ var _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @openmrs/esm-navigation */ \"../../framework/esm-navigation/dist/index.js\");\n/* harmony import */ var _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @openmrs/esm-state */ \"../../framework/esm-state/dist/index.js\");\n/* harmony import */ var _openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @openmrs/esm-translations */ \"../../framework/esm-translations/dist/index.js\");\n/* harmony import */ var _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @openmrs/esm-react-utils */ \"../../framework/esm-react-utils/dist/index.js\");\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\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}\n/**\n * Closes a workspace group and performs cleanup operations.\n *\n * @param groupName - The name of the workspace group to close\n * @param onWorkspaceCloseup - Optional callback function to execute after closing the workspace group\n * @returns void, or exits early if the current workspace group name doesn't match the provided group name\n *\n * @remarks\n * This function performs the following operations:\n * - Validates if the provided group name matches the current workspace group\n * - Closes all workspaces associated with the group\n * - Clears the workspace group store state\n * - Executes cleanup function if defined in the workspace group\n * - Updates the main workspace store to remove the workspace group\n * - Calls the optional closeup callback if provided\n */ function closeWorkspaceGroup(groupName, onWorkspaceCloseup) {\n var _store_getState;\n var store = getWorkspaceStore();\n var currentWorkspaceGroup = (_store_getState = store.getState()) === null || _store_getState === void 0 ? void 0 : _store_getState.workspaceGroup;\n var currentGroupName = currentWorkspaceGroup === null || currentWorkspaceGroup === void 0 ? void 0 : currentWorkspaceGroup.name;\n if (!currentGroupName || groupName !== currentGroupName) {\n return;\n }\n var filter = currentGroupName ? function(workspace) {\n return workspace.currentWorkspaceGroup === currentGroupName;\n } : function() {\n return true;\n };\n closeAllWorkspaces(function() {\n // Clearing the workspace group and respective store if the new workspace is not part of the current group, which is handled in the `launchWorkspace` function.\n var workspaceGroupStore = getWorkspaceGroupStore(groupName);\n if (workspaceGroupStore) {\n workspaceGroupStore.setState({}, true);\n var unsubscribe = workspaceGroupStore.subscribe(function() {});\n unsubscribe();\n }\n if (typeof (currentWorkspaceGroup === null || currentWorkspaceGroup === void 0 ? void 0 : currentWorkspaceGroup.cleanup) === 'function') {\n currentWorkspaceGroup.cleanup();\n }\n store.setState(function(prev) {\n return _object_spread_props(_object_spread({}, prev), {\n workspaceGroup: undefined\n });\n });\n if (typeof onWorkspaceCloseup === 'function') {\n onWorkspaceCloseup();\n }\n }, filter);\n}\n/**\n * Launches a workspace group with the specified name and configuration.\n * If there are any open workspaces, it will first close them before launching the new workspace group.\n *\n * @param groupName - The name of the workspace group to launch\n * @param args - Configuration object for launching the workspace group\n * @param args.state - The initial state for the workspace group\n * @param args.onWorkspaceGroupLaunch - Optional callback function to be executed after the workspace group is launched\n * @param args.workspaceGroupCleanup - Optional cleanup function to be executed when the workspace group is closed\n *\n * @example\n * launchWorkspaceGroup(\"myGroup\", {\n * state: initialState,\n * onWorkspaceGroupLaunch: () => console.log(\"Workspace group launched\"),\n * workspaceGroupCleanup: () => console.log(\"Cleaning up workspace group\")\n * });\n */ function launchWorkspaceGroup(groupName, args) {\n var workspaceGroupRegistration = (0,_openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_1__.getWorkspaceGroupRegistration)(groupName);\n var state = args.state, onWorkspaceGroupLaunch = args.onWorkspaceGroupLaunch, workspaceGroupCleanup = args.workspaceGroupCleanup, workspaceToLaunch = args.workspaceToLaunch;\n var store = getWorkspaceStore();\n if (store.getState().openWorkspaces.length) {\n var workspaceGroup = store.getState().workspaceGroup;\n if (workspaceGroup) {\n closeWorkspaceGroup(workspaceGroup === null || workspaceGroup === void 0 ? void 0 : workspaceGroup.name, function() {\n launchWorkspaceGroup(groupName, args);\n });\n } else {\n closeAllWorkspaces(function() {\n launchWorkspaceGroup(groupName, args);\n });\n }\n } else {\n store.setState(function(prev) {\n return _object_spread_props(_object_spread({}, prev), {\n workspaceGroup: {\n name: groupName,\n members: workspaceGroupRegistration.members,\n cleanup: workspaceGroupCleanup\n }\n });\n });\n getWorkspaceGroupStore(groupName, state);\n onWorkspaceGroupLaunch === null || onWorkspaceGroupLaunch === void 0 ? void 0 : onWorkspaceGroupLaunch();\n if (workspaceToLaunch) {\n var _workspaceToLaunch_additionalProps;\n launchWorkspace(workspaceToLaunch.name, (_workspaceToLaunch_additionalProps = workspaceToLaunch.additionalProps) !== null && _workspaceToLaunch_additionalProps !== void 0 ? _workspaceToLaunch_additionalProps : {});\n }\n }\n}\nfunction promptBeforeLaunchingWorkspace(workspace, newWorkspaceDetails) {\n var name = newWorkspaceDetails.name, additionalProps = newWorkspaceDetails.additionalProps;\n var newWorkspaceRegistration = (0,_openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_1__.getWorkspaceRegistration)(name);\n var proceed = function() {\n closeWorkspace(workspace.name, {\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 // If the new workspace is of the same sidebar group, then we don't need to clear the workspace group store.\n closeWorkspaceGroup: false\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 _currentWorkspaceGroup_members, _store_getState_workspaceGroup;\n var store = getWorkspaceStore();\n var workspace = (0,_openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_1__.getWorkspaceRegistration)(name);\n var currentWorkspaceGroup = store.getState().workspaceGroup;\n if (currentWorkspaceGroup && !((_currentWorkspaceGroup_members = currentWorkspaceGroup.members) === null || _currentWorkspaceGroup_members === void 0 ? void 0 : _currentWorkspaceGroup_members.includes(name))) {\n closeWorkspaceGroup(currentWorkspaceGroup.name, function() {\n launchWorkspace(name, additionalProps);\n });\n return;\n }\n var currentGroupName = (_store_getState_workspaceGroup = store.getState().workspaceGroup) === null || _store_getState_workspaceGroup === void 0 ? void 0 : _store_getState_workspaceGroup.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 currentWorkspaceGroup: currentGroupName,\n additionalProps: additionalProps !== null && additionalProps !== void 0 ? additionalProps : {}\n });\n if (currentGroupName) {\n getWorkspaceGroupStore(currentGroupName, additionalProps);\n }\n 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(workspaceToBeAdded);\n return _object_spread_props(_object_spread({}, state), {\n openWorkspaces: openWorkspaces,\n workspaceWindowState: workspaceWindowState\n });\n });\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(newWorkspace, 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_2__.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}\nvar defaultOptions = {\n ignoreChanges: false,\n onWorkspaceClose: function() {},\n closeWorkspaceGroup: true\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 options = _object_spread({}, defaultOptions, options);\n var store = getWorkspaceStore();\n var updateStoreWithClosedWorkspace = function() {\n var _store_getState_workspaceGroup, _options_onWorkspaceClose;\n var state = store.getState();\n var workspaceToBeClosed = state.openWorkspaces.find(function(w) {\n return w.name === name;\n });\n var newOpenWorkspaces = state.openWorkspaces.filter(function(w) {\n return w.name != name;\n });\n var workspaceGroupName = (_store_getState_workspaceGroup = store.getState().workspaceGroup) === null || _store_getState_workspaceGroup === void 0 ? void 0 : _store_getState_workspaceGroup.name;\n if (workspaceGroupName && options.closeWorkspaceGroup) {\n closeWorkspaceGroup(workspaceGroupName);\n }\n // ensure closed workspace will not prompt\n promptBeforeClosing(name, function() {\n return false;\n });\n store.setState(function(prev) {\n return _object_spread_props(_object_spread({}, prev), {\n prompt: null,\n openWorkspaces: newOpenWorkspaces,\n workspaceWindowState: getUpdatedWorkspaceWindowState(newOpenWorkspaces === null || newOpenWorkspaces === void 0 ? void 0 : newOpenWorkspaces[0])\n });\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 = (0,_openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_1__.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 workspaceGroup: undefined\n};\nvar workspaceStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_3__.createGlobalStore)('workspace', initialState);\nfunction getWorkspaceStore() {\n return workspaceStore;\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() {}, filter = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : function() {\n return true;\n };\n var store = getWorkspaceStore();\n var canCloseAllWorkspaces = store.getState().openWorkspaces.filter(filter).every(function(param) {\n var name = param.name;\n return canCloseWorkspaceWithoutPrompting(name);\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_5__.useStore)(workspaceStore), workspaceWindowState = _useStore.workspaceWindowState, openWorkspaces = _useStore.openWorkspaces, prompt = _useStore.prompt, workspaceGroup = _useStore.workspaceGroup;\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 workspaceGroup: workspaceGroup\n };\n }, [\n openWorkspaces,\n workspaceWindowState,\n prompt,\n workspaceGroup\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_4__.getCoreTranslation)('unsavedChangesTitleText', 'Unsaved changes'),\n body: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('unsavedChangesInOpenedWorkspace', \"You may 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_4__.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_4__.getCoreTranslation)('closingAllWorkspacesPromptTitle', 'You have unsaved changes'),\n body: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('closingAllWorkspacesPromptBody', 'There may be 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_4__.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_4__.getCoreTranslation)('unsavedChangesTitleText', 'Unsaved changes'),\n body: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('unsavedChangesInWorkspace', 'There may be 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_4__.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 : workspace.title;\n}\nfunction resetWorkspaceStore() {\n getWorkspaceStore().setState(initialState);\n}\n/**\n * The workspace group store is a store that is specific to the workspace group.\n * If the workspace has its own sidebar, the store will be created.\n * This store can be used to store data that is specific to the workspace group.\n * The store will be same for all the workspaces with same group name.\n *\n * For workspaces launched without a group, the store will be undefined.\n *\n * The store will be cleared when all the workspaces with the store's group name are closed.\n */ function getWorkspaceGroupStore(workspaceGroupName) {\n var additionalProps = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!workspaceGroupName || workspaceGroupName === 'default') {\n return undefined;\n }\n var store = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_3__.getGlobalStore)(workspaceGroupName, {});\n if (additionalProps) {\n store.setState(function(prev) {\n return _object_spread({}, prev, additionalProps);\n });\n }\n return store;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy93b3Jrc3BhY2VzL3dvcmtzcGFjZXMudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0NBQWdDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNnQjtBQUtmO0FBRWtCO0FBQ29CO0FBQ1I7QUFDWDtBQTBHcEQ7Ozs7O0NBS0MsR0FDTSxTQUFTUSxrQ0FBa0NDLElBQVk7UUFBRUMsZ0JBQUFBLGlFQUF5QjtJQUN2RixJQUFJQSxlQUFlO1FBQ2pCLE9BQU87SUFDVDtJQUNBLElBQU1DLGlCQUFpQkMsMEJBQTBCSDtJQUNqRCxPQUFPLENBQUNFLGtCQUFrQixDQUFDQTtBQUM3QjtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Q0FlQyxHQUNELFNBQVNFLG9CQUFvQkMsU0FBaUIsRUFBRUMsa0JBQStCO1FBRS9DQztJQUQ5QixJQUFNQSxRQUFRQztJQUNkLElBQU1DLHlCQUF3QkYsa0JBQUFBLE1BQU1HLFFBQVEsZ0JBQWRILHNDQUFBQSxnQkFBa0JJLGNBQWM7SUFDOUQsSUFBTUMsbUJBQW1CSCxrQ0FBQUEsNENBQUFBLHNCQUF1QlQsSUFBSTtJQUNwRCxJQUFJLENBQUNZLG9CQUFvQlAsY0FBY08sa0JBQWtCO1FBQ3ZEO0lBQ0Y7SUFDQSxJQUFNQyxTQUFnREQsbUJBQ2xELFNBQUNFO2VBQWNBLFVBQVVMLHFCQUFxQixLQUFLRztRQUNuRDtlQUFNOztJQUVWRyxtQkFBbUI7UUFDakIsK0pBQStKO1FBQy9KLElBQU1DLHNCQUFzQkMsdUJBQXVCWjtRQUNuRCxJQUFJVyxxQkFBcUI7WUFDdkJBLG9CQUFvQkUsUUFBUSxDQUFDLENBQUMsR0FBRztZQUNqQyxJQUFNQyxjQUFjSCxvQkFBb0JJLFNBQVMsQ0FBQyxZQUFPO1lBQ3pERDtRQUNGO1FBRUEsSUFBSSxRQUFPVixrQ0FBQUEsNENB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ZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLXN0eWxlZ3VpZGUvc3JjL3dvcmtzcGFjZXMvd29ya3NwYWNlcy50cz9jMTVlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBXb3Jrc3BhY2UgKi9cbmltcG9ydCB7IHVzZU1lbW8sIHR5cGUgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtcbiAgZ2V0V29ya3NwYWNlR3JvdXBSZWdpc3RyYXRpb24sXG4gIGdldFdvcmtzcGFjZVJlZ2lzdHJhdGlvbixcbiAgdHlwZSBXb3Jrc3BhY2VSZWdpc3RyYXRpb24sXG59IGZyb20gJ0BvcGVubXJzL2VzbS1leHRlbnNpb25zJztcbmltcG9ydCB7IHR5cGUgV29ya3NwYWNlV2luZG93U3RhdGUgfSBmcm9tICdAb3Blbm1ycy9lc20tZ2xvYmFscyc7XG5pbXBvcnQgeyBuYXZpZ2F0ZSB9IGZyb20gJ0BvcGVubXJzL2VzbS1uYXZpZ2F0aW9uJztcbmltcG9ydCB7IGdldEdsb2JhbFN0b3JlLCBjcmVhdGVHbG9iYWxTdG9yZSB9IGZyb20gJ0BvcGVubXJzL2VzbS1zdGF0ZSc7XG5pbXBvcnQgeyBnZXRDb3JlVHJhbnNsYXRpb24gfSBmcm9tICdAb3Blbm1ycy9lc20tdHJhbnNsYXRpb25zJztcbmltcG9ydCB7IHVzZVN0b3JlIH0gZnJvbSAnQG9wZW5tcnMvZXNtLXJlYWN0LXV0aWxzJztcbmltcG9ydCB0eXBlIHsgU3RvcmVBcGkgfSBmcm9tICd6dXN0YW5kL3ZhbmlsbGEnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENsb3NlV29ya3NwYWNlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGNsb3NlIHRoZSB3b3Jrc3BhY2UgaWdub3JpbmcgYWxsIHRoZSBjaGFuZ2VzIHByZXNlbnQgaW4gdGhlIHdvcmtzcGFjZS5cbiAgICpcbiAgICogSWYgaWdub3JlQ2hhbmdlcyBpcyB0cnVlLCB0aGUgdXNlciB3aWxsIG5vdCBiZSBwcm9tcHRlZCB0byBzYXZlIGNoYW5nZXMgYmVmb3JlIGNsb3NpbmdcbiAgICogZXZlbiBpZiB0aGUgYHRlc3RGY25gIHBhc3NlZCB0byBgcHJvbXB0QmVmb3JlQ2xvc2luZ2AgcmV0dXJucyBgdHJ1ZWAuXG4gICAqL1xuICBpZ25vcmVDaGFuZ2VzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIElmIHlvdSB3YW50IHRvIHRha2UgYW4gYWN0aW9uIGFmdGVyIHRoZSB3b3Jrc3BhY2UgaXMgY2xvc2VkLCB5b3UgY2FuIHBhc3MgeW91ciBmdW5jdGlvbiBhc1xuICAgKiBgb25Xb3Jrc3BhY2VDbG9zZWAuIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgb25seSBhZnRlciB0aGUgd29ya3NwYWNlIGlzIGNsb3NlZCwgZ2l2ZW5cbiAgICogdGhhdCB0aGUgdXNlciBtaWdodCBiZSBzaG93biBhIHByb21wdC5cbiAgICogQHJldHVybnMgdm9pZFxuICAgKi9cbiAgb25Xb3Jrc3BhY2VDbG9zZT86ICgpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBDb250cm9scyB3aGV0aGVyIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgc2hvdWxkIGJlIGNsb3NlZCBhbmQgc3RvcmUgdG8gYmVcbiAgICogY2xlYXJlZCB3aGVuIHRoaXMgd29ya3NwYWNlIGlzIGNsb3NlZC5cbiAgICogRGVmYXVsdHMgdG8gdHJ1ZSBleGNlcHQgd2hlbiBvcGVuaW5nIGEgbmV3IHdvcmtzcGFjZSBvZiB0aGUgc2FtZSBncm91cC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgY2xvc2VXb3Jrc3BhY2VHcm91cD86IGJvb2xlYW47XG59XG5cbi8qKiBUaGUgZGVmYXVsdCBwYXJhbWV0ZXJzIHJlY2VpdmVkIGJ5IGFsbCB3b3Jrc3BhY2VzICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmF1bHRXb3Jrc3BhY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBDYWxsIHRoaXMgZnVuY3Rpb24gdG8gY2xvc2UgdGhlIHdvcmtzcGFjZS4gVGhpcyBmdW5jdGlvbiB3aWxsIHByb21wdCB0aGUgdXNlclxuICAgKiBpZiB0aGVyZSBhcmUgYW55IHVuc2F2ZWQgY2hhbmdlcyB0byB3b3Jrc3BhY2UuXG4gICAqXG4gICAqIFlvdSBjYW4gcGFzcyBgb25Xb3Jrc3BhY2VDbG9zZWAgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHdvcmtzcGFjZSBpcyBmaW5hbGx5XG4gICAqIGNsb3NlZCwgZ2l2ZW4gdGhlIHVzZXIgZm9yY2VmdWxseSBjbG9zZXMgdGhlIHdvcmtzcGFjZS5cbiAgICovXG4gIGNsb3NlV29ya3NwYWNlKGNsb3NlV29ya3NwYWNlT3B0aW9ucz86IENsb3NlV29ya3NwYWNlT3B0aW9ucyk6IHZvaWQ7XG4gIC8qKlxuICAgKiBDYWxsIHRoaXMgd2l0aCBhIG5vLWFyZ3MgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRydWUgaWYgdGhlIHVzZXIgc2hvdWxkIGJlIHByb21wdGVkIGJlZm9yZVxuICAgKiB0aGlzIHdvcmtzcGFjZSBpcyBjbG9zZWQ7IGUuZy4gaWYgdGhlcmUgaXMgdW5zYXZlZCBkYXRhLlxuICAgKi9cbiAgcHJvbXB0QmVmb3JlQ2xvc2luZyh0ZXN0RmNuOiAoKSA9PiBib29sZWFuKTogdm9pZDtcbiAgLyoqXG4gICAqIENhbGwgdGhpcyBmdW5jdGlvbiB0byBjbG9zZSB0aGUgd29ya3NwYWNlIGFmdGVyIHRoZSBmb3JtIGlzIHNhdmVkLiBUaGlzIGZ1bmN0aW9uXG4gICAqIHdpbGwgZGlyZWN0bHkgY2xvc2UgdGhlIHdvcmtzcGFjZSB3aXRob3V0IGFueSBwcm9tcHRcbiAgICovXG4gIGNsb3NlV29ya3NwYWNlV2l0aFNhdmVkQ2hhbmdlcyhjbG9zZVdvcmtzcGFjZU9wdGlvbnM/OiBDbG9zZVdvcmtzcGFjZU9wdGlvbnMpOiB2b2lkO1xuICAvKipcbiAgICogVXNlIHRoaXMgdG8gc2V0IHRoZSB3b3Jrc3BhY2UgdGl0bGUgaWYgaXQgbmVlZHMgdG8gYmUgc2V0IGR5bmFtaWNhbGx5LlxuICAgKlxuICAgKiBXb3Jrc3BhY2UgdGl0bGVzIGdlbmVyYWxseSBhcmUgc2V0IGluIHRoZSB3b3Jrc3BhY2UgZGVjbGFyYXRpb24gaW4gdGhlIHJvdXRlcy5qc29uIGZpbGUuIFRoZXkgY2FuIGFsc29cbiAgICogYmUgc2V0IGJ5IHRoZSB3b3Jrc3BhY2UgbGF1bmNoZXIgYnkgcGFzc2luZyBgd29ya3NwYWNlVGl0bGVgIGluIHRoZSBgYWRkaXRpb25hbFByb3BzYFxuICAgKiBwYXJhbWV0ZXIgb2YgdGhlIGBsYXVuY2hXb3Jrc3BhY2VgIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCB3aGVuIHRoZSB3b3Jrc3BhY2VcbiAgICogdGl0bGUgbmVlZHMgdG8gYmUgc2V0IGR5bmFtaWNhbGx5LlxuICAgKlxuICAgKiBAcGFyYW0gdGl0bGUgVGhlIHRpdGxlIHRvIHNldC4gSWYgdXNpbmcgdGl0bGVOb2RlLCBzZXQgdGhpcyB0byBhIGh1bWFuLXJlYWRhYmxlIHN0cmluZ1xuICAgKiAgICAgICAgd2hpY2ggd2lsbCBpZGVudGlmeSB0aGUgd29ya3NwYWNlIGluIG5vdGlmaWNhdGlvbnMgYW5kIG90aGVyIHBsYWNlcy5cbiAgICogQHBhcmFtIHRpdGxlTm9kZSBBIFJlYWN0IG9iamVjdCB0byBwdXQgaW4gdGhlIHdvcmtzcGFjZSBoZWFkZXIgaW4gcGxhY2Ugb2YgdGhlIHRpdGxlLiBUaGlzXG4gICAqICAgICAgICBpcyB1c2VmdWwgZm9yIGRpc3BsYXlpbmcgY3VzdG9tIGVsZW1lbnRzIGluIHRoZSBoZWFkZXIuIE5vdGUgdGhhdCBjdXN0b20gaGVhZGVyXG4gICAqICAgICAgICBlbGVtZW50cyBjYW4gYWxzbyBiZSBhdHRhY2hlZCB0byB0aGUgd29ya3NwYWNlIGhlYWRlciBleHRlbnNpb24gc2xvdHMuXG4gICAqL1xuICBzZXRUaXRsZSh0aXRsZTogc3RyaW5nLCB0aXRsZU5vZGU/OiBSZWFjdE5vZGUpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZVdpbmRvd1NpemUge1xuICBzaXplOiBXb3Jrc3BhY2VXaW5kb3dTdGF0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VXaW5kb3dTaXplUHJvdmlkZXJQcm9wcyB7XG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZVdpbmRvd1NpemVDb250ZXh0IHtcbiAgd2luZG93U2l6ZTogV29ya3NwYWNlV2luZG93U2l6ZTtcbiAgdXBkYXRlV2luZG93U2l6ZT8odmFsdWU6IFdvcmtzcGFjZVdpbmRvd1N0YXRlKTogYW55O1xuICBhY3RpdmU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvbXB0IHtcbiAgdGl0bGU6IHN0cmluZztcbiAgYm9keTogc3RyaW5nO1xuICAvKiogRGVmYXVsdHMgdG8gXCJDb25maXJtXCIgKi9cbiAgY29uZmlybVRleHQ/OiBzdHJpbmc7XG4gIG9uQ29uZmlybSgpOiB2b2lkO1xuICAvKiogRGVmYXVsdHMgdG8gXCJDYW5jZWxcIiAqL1xuICBjYW5jZWxUZXh0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZVN0b3JlU3RhdGUge1xuICBjb250ZXh0OiBzdHJpbmcgfCBudWxsO1xuICBvcGVuV29ya3NwYWNlczogQXJyYXk8T3BlbldvcmtzcGFjZT47XG4gIHByb21wdDogUHJvbXB0IHwgbnVsbDtcbiAgd29ya3NwYWNlV2luZG93U3RhdGU6IFdvcmtzcGFjZVdpbmRvd1N0YXRlO1xuICB3b3Jrc3BhY2VHcm91cD86IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbWVtYmVyczogQXJyYXk8c3RyaW5nPjtcbiAgICBjbGVhbnVwPzogRnVuY3Rpb247XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3BlbldvcmtzcGFjZSBleHRlbmRzIFdvcmtzcGFjZVJlZ2lzdHJhdGlvbiwgRGVmYXVsdFdvcmtzcGFjZVByb3BzIHtcbiAgYWRkaXRpb25hbFByb3BzOiBvYmplY3Q7XG4gIGN1cnJlbnRXb3Jrc3BhY2VHcm91cD86IHN0cmluZztcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgd29ya3NwYWNlXG4gKiBAcGFyYW0gaWdub3JlQ2hhbmdlcyBJZiBzZXQgdG8gdHJ1ZSwgdGhlIFwidW5zYXZlZCBjaGFuZ2VzXCIgbW9kYWwgd2lsbCBuZXZlciBiZSBzaG93biwgZXZlbiBpZiB0aGUgYHByb21wdEJlZm9yZUNsb3NpbmdgIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZS4gVGhlIHVzZXIgd2lsbCBub3QgYmUgcHJvbXB0ZWQgYmVmb3JlIGNsb3NpbmcuXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSB3b3Jrc3BhY2UgY2FuIGJlIGNsb3NlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbkNsb3NlV29ya3NwYWNlV2l0aG91dFByb21wdGluZyhuYW1lOiBzdHJpbmcsIGlnbm9yZUNoYW5nZXM6IGJvb2xlYW4gPSBmYWxzZSkge1xuICBpZiAoaWdub3JlQ2hhbmdlcykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGNvbnN0IHByb21wdEJlZm9yZUZuID0gZ2V0UHJvbXB0QmVmb3JlQ2xvc2luZ0ZjbihuYW1lKTtcbiAgcmV0dXJuICFwcm9tcHRCZWZvcmVGbiB8fCAhcHJvbXB0QmVmb3JlRm4oKTtcbn1cblxuLyoqXG4gKiBDbG9zZXMgYSB3b3Jrc3BhY2UgZ3JvdXAgYW5kIHBlcmZvcm1zIGNsZWFudXAgb3BlcmF0aW9ucy5cbiAqXG4gKiBAcGFyYW0gZ3JvdXBOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHdvcmtzcGFjZSBncm91cCB0byBjbG9zZVxuICogQHBhcmFtIG9uV29ya3NwYWNlQ2xvc2V1cCAtIE9wdGlvbmFsIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgYWZ0ZXIgY2xvc2luZyB0aGUgd29ya3NwYWNlIGdyb3VwXG4gKiBAcmV0dXJucyB2b2lkLCBvciBleGl0cyBlYXJseSBpZiB0aGUgY3VycmVudCB3b3Jrc3BhY2UgZ3JvdXAgbmFtZSBkb2Vzbid0IG1hdGNoIHRoZSBwcm92aWRlZCBncm91cCBuYW1lXG4gKlxuICogQHJlbWFya3NcbiAqIFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgdGhlIGZvbGxvd2luZyBvcGVyYXRpb25zOlxuICogLSBWYWxpZGF0ZXMgaWYgdGhlIHByb3ZpZGVkIGdyb3VwIG5hbWUgbWF0Y2hlcyB0aGUgY3VycmVudCB3b3Jrc3BhY2UgZ3JvdXBcbiAqIC0gQ2xvc2VzIGFsbCB3b3Jrc3BhY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ3JvdXBcbiAqIC0gQ2xlYXJzIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgc3RvcmUgc3RhdGVcbiAqIC0gRXhlY3V0ZXMgY2xlYW51cCBmdW5jdGlvbiBpZiBkZWZpbmVkIGluIHRoZSB3b3Jrc3BhY2UgZ3JvdXBcbiAqIC0gVXBkYXRlcyB0aGUgbWFpbiB3b3Jrc3BhY2Ugc3RvcmUgdG8gcmVtb3ZlIHRoZSB3b3Jrc3BhY2UgZ3JvdXBcbiAqIC0gQ2FsbHMgdGhlIG9wdGlvbmFsIGNsb3NldXAgY2FsbGJhY2sgaWYgcHJvdmlkZWRcbiAqL1xuZnVuY3Rpb24gY2xvc2VXb3Jrc3BhY2VHcm91cChncm91cE5hbWU6IHN0cmluZywgb25Xb3Jrc3BhY2VDbG9zZXVwPzogKCkgPT4gdm9pZCkge1xuICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG4gIGNvbnN0IGN1cnJlbnRXb3Jrc3BhY2VHcm91cCA9IHN0b3JlLmdldFN0YXRlKCk/LndvcmtzcGFjZUdyb3VwO1xuICBjb25zdCBjdXJyZW50R3JvdXBOYW1lID0gY3VycmVudFdvcmtzcGFjZUdyb3VwPy5uYW1lO1xuICBpZiAoIWN1cnJlbnRHcm91cE5hbWUgfHwgZ3JvdXBOYW1lICE9PSBjdXJyZW50R3JvdXBOYW1lKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGZpbHRlcjogKHdvcmtzcGFjZTogT3BlbldvcmtzcGFjZSkgPT4gYm9vbGVhbiA9IGN1cnJlbnRHcm91cE5hbWVcbiAgICA/ICh3b3Jrc3BhY2UpID0+IHdvcmtzcGFjZS5jdXJyZW50V29ya3NwYWNlR3JvdXAgPT09IGN1cnJlbnRHcm91cE5hbWVcbiAgICA6ICgpID0+IHRydWU7XG5cbiAgY2xvc2VBbGxXb3Jrc3BhY2VzKCgpID0+IHtcbiAgICAvLyBDbGVhcmluZyB0aGUgd29ya3NwYWNlIGdyb3VwIGFuZCByZXNwZWN0aXZlIHN0b3JlIGlmIHRoZSBuZXcgd29ya3NwYWNlIGlzIG5vdCBwYXJ0IG9mIHRoZSBjdXJyZW50IGdyb3VwLCB3aGljaCBpcyBoYW5kbGVkIGluIHRoZSBgbGF1bmNoV29ya3NwYWNlYCBmdW5jdGlvbi5cbiAgICBjb25zdCB3b3Jrc3BhY2VHcm91cFN0b3JlID0gZ2V0V29ya3NwYWNlR3JvdXBTdG9yZShncm91cE5hbWUpO1xuICAgIGlmICh3b3Jrc3BhY2VHcm91cFN0b3JlKSB7XG4gICAgICB3b3Jrc3BhY2VHcm91cFN0b3JlLnNldFN0YXRlKHt9LCB0cnVlKTtcbiAgICAgIGNvbnN0IHVuc3Vic2NyaWJlID0gd29ya3NwYWNlR3JvdXBTdG9yZS5zdWJzY3JpYmUoKCkgPT4ge30pO1xuICAgICAgdW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGN1cnJlbnRXb3Jrc3BhY2VHcm91cD8uY2xlYW51cCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY3VycmVudFdvcmtzcGFjZUdyb3VwLmNsZWFudXAoKTtcbiAgICB9XG5cbiAgICBzdG9yZS5zZXRTdGF0ZSgocHJldikgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICB3b3Jrc3BhY2VHcm91cDogdW5kZWZpbmVkLFxuICAgIH0pKTtcblxuICAgIGlmICh0eXBlb2Ygb25Xb3Jrc3BhY2VDbG9zZXVwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBvbldvcmtzcGFjZUNsb3NldXAoKTtcbiAgICB9XG4gIH0sIGZpbHRlcik7XG59XG5cbmludGVyZmFjZSBMYXVuY2hXb3Jrc3BhY2VHcm91cEFyZyB7XG4gIHN0YXRlOiBvYmplY3Q7XG4gIG9uV29ya3NwYWNlR3JvdXBMYXVuY2g/OiBGdW5jdGlvbjtcbiAgd29ya3NwYWNlR3JvdXBDbGVhbnVwPzogRnVuY3Rpb247XG4gIHdvcmtzcGFjZVRvTGF1bmNoPzoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBhZGRpdGlvbmFsUHJvcHM/OiBvYmplY3Q7XG4gIH07XG59XG5cbi8qKlxuICogTGF1bmNoZXMgYSB3b3Jrc3BhY2UgZ3JvdXAgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgYW5kIGNvbmZpZ3VyYXRpb24uXG4gKiBJZiB0aGVyZSBhcmUgYW55IG9wZW4gd29ya3NwYWNlcywgaXQgd2lsbCBmaXJzdCBjbG9zZSB0aGVtIGJlZm9yZSBsYXVuY2hpbmcgdGhlIG5ldyB3b3Jrc3BhY2UgZ3JvdXAuXG4gKlxuICogQHBhcmFtIGdyb3VwTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgdG8gbGF1bmNoXG4gKiBAcGFyYW0gYXJncyAtIENvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciBsYXVuY2hpbmcgdGhlIHdvcmtzcGFjZSBncm91cFxuICogQHBhcmFtIGFyZ3Muc3RhdGUgLSBUaGUgaW5pdGlhbCBzdGF0ZSBmb3IgdGhlIHdvcmtzcGFjZSBncm91cFxuICogQHBhcmFtIGFyZ3Mub25Xb3Jrc3BhY2VHcm91cExhdW5jaCAtIE9wdGlvbmFsIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkIGFmdGVyIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgaXMgbGF1bmNoZWRcbiAqIEBwYXJhbSBhcmdzLndvcmtzcGFjZUdyb3VwQ2xlYW51cCAtIE9wdGlvbmFsIGNsZWFudXAgZnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQgd2hlbiB0aGUgd29ya3NwYWNlIGdyb3VwIGlzIGNsb3NlZFxuICpcbiAqIEBleGFtcGxlXG4gKiBsYXVuY2hXb3Jrc3BhY2VHcm91cChcIm15R3JvdXBcIiwge1xuICogICBzdGF0ZTogaW5pdGlhbFN0YXRlLFxuICogICBvbldvcmtzcGFjZUdyb3VwTGF1bmNoOiAoKSA9PiBjb25zb2xlLmxvZyhcIldvcmtzcGFjZSBncm91cCBsYXVuY2hlZFwiKSxcbiAqICAgd29ya3NwYWNlR3JvdXBDbGVhbnVwOiAoKSA9PiBjb25zb2xlLmxvZyhcIkNsZWFuaW5nIHVwIHdvcmtzcGFjZSBncm91cFwiKVxuICogfSk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsYXVuY2hXb3Jrc3BhY2VHcm91cChncm91cE5hbWU6IHN0cmluZywgYXJnczogTGF1bmNoV29ya3NwYWNlR3JvdXBBcmcpIHtcbiAgY29uc3Qgd29ya3NwYWNlR3JvdXBSZWdpc3RyYXRpb24gPSBnZXRXb3Jrc3BhY2VHcm91cFJlZ2lzdHJhdGlvbihncm91cE5hbWUpO1xuICBjb25zdCB7IHN0YXRlLCBvbldvcmtzcGFjZUdyb3VwTGF1bmNoLCB3b3Jrc3BhY2VHcm91cENsZWFudXAsIHdvcmtzcGFjZVRvTGF1bmNoIH0gPSBhcmdzO1xuICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG4gIGlmIChzdG9yZS5nZXRTdGF0ZSgpLm9wZW5Xb3Jrc3BhY2VzLmxlbmd0aCkge1xuICAgIGNvbnN0IHdvcmtzcGFjZUdyb3VwID0gc3RvcmUuZ2V0U3RhdGUoKS53b3Jrc3BhY2VHcm91cDtcbiAgICBpZiAod29ya3NwYWNlR3JvdXApIHtcbiAgICAgIGNsb3NlV29ya3NwYWNlR3JvdXAod29ya3NwYWNlR3JvdXA/Lm5hbWUsICgpID0+IHtcbiAgICAgICAgbGF1bmNoV29ya3NwYWNlR3JvdXAoZ3JvdXBOYW1lLCBhcmdzKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjbG9zZUFsbFdvcmtzcGFjZXMoKCkgPT4ge1xuICAgICAgICBsYXVuY2hXb3Jrc3BhY2VHcm91cChncm91cE5hbWUsIGFyZ3MpO1xuICAgICAgfSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHN0b3JlLnNldFN0YXRlKChwcmV2KSA9PiAoe1xuICAgICAgLi4ucHJldixcbiAgICAgIHdvcmtzcGFjZUdyb3VwOiB7XG4gICAgICAgIG5hbWU6IGdyb3VwTmFtZSxcbiAgICAgICAgbWVtYmVyczogd29ya3NwYWNlR3JvdXBSZWdpc3RyYXRpb24ubWVtYmVycyxcbiAgICAgICAgY2xlYW51cDogd29ya3NwYWNlR3JvdXBDbGVhbnVwLFxuICAgICAgfSxcbiAgICB9KSk7XG4gICAgZ2V0V29ya3NwYWNlR3JvdXBTdG9yZShncm91cE5hbWUsIHN0YXRlKTtcbiAgICBvbldvcmtzcGFjZUdyb3VwTGF1bmNoPy4oKTtcbiAgICBpZiAod29ya3NwYWNlVG9MYXVuY2gpIHtcbiAgICAgIGxhdW5jaFdvcmtzcGFjZSh3b3Jrc3BhY2VUb0xhdW5jaC5uYW1lLCB3b3Jrc3BhY2VUb0xhdW5jaC5hZGRpdGlvbmFsUHJvcHMgPz8ge30pO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9tcHRCZWZvcmVMYXVuY2hpbmdXb3Jrc3BhY2UoXG4gIHdvcmtzcGFjZTogT3BlbldvcmtzcGFjZSxcbiAgbmV3V29ya3NwYWNlRGV0YWlsczogeyBuYW1lOiBzdHJpbmc7IGFkZGl0aW9uYWxQcm9wcz86IG9iamVjdCB9LFxuKSB7XG4gIGNvbnN0IHsgbmFtZSwgYWRkaXRpb25hbFByb3BzIH0gPSBuZXdXb3Jrc3BhY2VEZXRhaWxzO1xuICBjb25zdCBuZXdXb3Jrc3BhY2VSZWdpc3RyYXRpb24gPSBnZXRXb3Jrc3BhY2VSZWdpc3RyYXRpb24obmFtZSk7XG5cbiAgY29uc3QgcHJvY2VlZCA9ICgpID0+IHtcbiAgICBjbG9zZVdvcmtzcGFjZSh3b3Jrc3BhY2UubmFtZSwge1xuICAgICAgaWdub3JlQ2hhbmdlczogdHJ1ZSxcbiAgICAgIC8vIENhbGxpbmcgdGhlIGxhdW5jaFdvcmtzcGFjZSBhZ2Fpbiwgc2luY2Ugb25lIG9mIHRoZSBgaWZgIGNhc2VcbiAgICAgIC8vIG1pZ2h0IHJlc29sdmUsIGJ1dCB3ZSBuZWVkIHRvIGNoZWNrIGFsbCB0aGUgY2FzZXMgYmVmb3JlIGxhdW5jaGluZyB0aGUgZm9ybS5cbiAgICAgIG9uV29ya3NwYWNlQ2xvc2U6ICgpID0+IGxhdW5jaFdvcmtzcGFjZShuYW1lLCBhZGRpdGlvbmFsUHJvcHMpLFxuICAgICAgLy8gSWYgdGhlIG5ldyB3b3Jrc3BhY2UgaXMgb2YgdGhlIHNhbWUgc2lkZWJhciBncm91cCwgdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGNsZWFyIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgc3RvcmUuXG4gICAgICBjbG9zZVdvcmtzcGFjZUdyb3VwOiBmYWxzZSxcbiAgICB9KTtcbiAgfTtcblxuICBpZiAoIWNhbkNsb3NlV29ya3NwYWNlV2l0aG91dFByb21wdGluZyh3b3Jrc3BhY2UubmFtZSkpIHtcbiAgICBzaG93V29ya3NwYWNlUHJvbXB0cygnY2xvc2luZy13b3Jrc3BhY2UtbGF1bmNoaW5nLW5ldy13b3Jrc3BhY2UnLCBwcm9jZWVkLCB3b3Jrc3BhY2UudGl0bGUgPz8gd29ya3NwYWNlLm5hbWUpO1xuICB9IGVsc2Uge1xuICAgIHByb2NlZWQoKTtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgbGF1bmNoZXMgYSB3b3Jrc3BhY2UgYnkgaXRzIG5hbWUuIFRoZSB3b3Jrc3BhY2UgbXVzdCBoYXZlIGJlZW4gcmVnaXN0ZXJlZC5cbiAqIFdvcmtzcGFjZXMgc2hvdWxkIGJlIHJlZ2lzdGVyZWQgaW4gdGhlIGByb3V0ZXMuanNvbmAgZmlsZS5cbiAqXG4gKiBGb3IgdGhlIHdvcmtzcGFjZSB0byBhcHBlYXIsIHRoZXJlIG11c3QgYmUgZWl0aGVyIGEgYDxXb3Jrc3BhY2VPdmVybGF5IC8+YCBvclxuICogYSBgPFdvcmtzcGFjZVdpbmRvdyAvPmAgY29tcG9uZW50IHJlbmRlcmVkLlxuICpcbiAqIFRoZSBiZWhhdmlvciBvZiB0aGlzIGZ1bmN0aW9uIGlzIGFzIGZvbGxvd3M6XG4gKlxuICogLSBJZiBubyB3b3Jrc3BhY2VzIGFyZSBvcGVuLCBvciBpZiBubyBvdGhlciB3b3Jrc3BhY2VzIHdpdGggdGhlIHNhbWUgdHlwZSBhcmUgb3BlbixcbiAqICAgaXQgd2lsbCBiZSBvcGVuZWQgYW5kIGZvY3VzZWQuXG4gKiAtIElmIGEgd29ya3NwYWNlIHdpdGggdGhlIHNhbWUgbmFtZSBpcyBhbHJlYWR5IG9wZW4sIGl0IHdpbGwgYmUgZGlzcGxheWVkL2ZvY3VzZWQsXG4gKiAgIGlmIGl0IHdhcyBub3QgYWxyZWFkeS5cbiAqIC0gSWYgYSB3b3Jrc3BhY2UgaXMgbGF1bmNoZWQgYW5kIGEgd29ya3NwYWNlIHdoaWNoIGNhbm5vdCBiZSBoaWRkZW4gaXMgYWxyZWFkeSBvcGVuLFxuICogIGEgY29uZmlybWF0aW9uIG1vZGFsIHdpbGwgcG9wIHVwIHdhcm5pbmcgYWJvdXQgY2xvc2luZyB0aGUgY3VycmVudGx5IG9wZW4gd29ya3NwYWNlLlxuICogLSBJZiBhbm90aGVyIHdvcmtzcGFjZSB3aXRoIHRoZSBzYW1lIHR5cGUgaXMgb3BlbiwgdGhlIHdvcmtzcGFjZSB3aWxsIGJlIGJyb3VnaHQgdG9cbiAqICAgdGhlIGZyb250IGFuZCB0aGVuIGEgY29uZmlybWF0aW9uIG1vZGFsIHdpbGwgcG9wIHVwIHdhcm5pbmcgYWJvdXQgY2xvc2luZyB0aGUgb3BlbmVkXG4gKiAgIHdvcmtzcGFjZVxuICpcbiAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGp1c3QgbWFuaXB1bGF0ZXMgdGhlIHdvcmtzcGFjZSBzdG9yZS4gVGhlIFVJIGxvZ2ljIGlzIGhhbmRsZWRcbiAqIGJ5IHRoZSBjb21wb25lbnRzIHRoYXQgZGlzcGxheSB3b3Jrc3BhY2VzLlxuICpcbiAqIEFkZGl0aW9uYWwgcHJvcHMgY2FuIGJlIHBhc3NlZCB0byB0aGUgd29ya3NwYWNlIGNvbXBvbmVudCBiZWluZyBsYXVuY2hlZC4gUGFzc2luZyBhXG4gKiBwcm9wIG5hbWVkIGB3b3Jrc3BhY2VUaXRsZWAgd2lsbCBvdmVycmlkZSB0aGUgdGl0bGUgb2YgdGhlIHdvcmtzcGFjZS5cbiAqXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgd29ya3NwYWNlIHRvIGxhdW5jaFxuICogQHBhcmFtIGFkZGl0aW9uYWxQcm9wcyBQcm9wcyB0byBwYXNzIHRvIHRoZSB3b3Jrc3BhY2UgY29tcG9uZW50IGJlaW5nIGxhdW5jaGVkLiBQYXNzaW5nXG4gKiAgICAgICAgICBhIHByb3AgbmFtZWQgYHdvcmtzcGFjZVRpdGxlYCB3aWxsIG92ZXJyaWRlIHRoZSB0aXRsZSBvZiB0aGUgd29ya3NwYWNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbGF1bmNoV29ya3NwYWNlPFxuICBUIGV4dGVuZHMgRGVmYXVsdFdvcmtzcGFjZVByb3BzIHwgb2JqZWN0ID0gRGVmYXVsdFdvcmtzcGFjZVByb3BzICYgeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbj4obmFtZTogc3RyaW5nLCBhZGRpdGlvbmFsUHJvcHM/OiBPbWl0PFQsIGtleW9mIERlZmF1bHRXb3Jrc3BhY2VQcm9wcz4gJiB7IHdvcmtzcGFjZVRpdGxlPzogc3RyaW5nIH0pIHtcbiAgY29uc3Qgc3RvcmUgPSBnZXRXb3Jrc3BhY2VTdG9yZSgpO1xuICBjb25zdCB3b3Jrc3BhY2UgPSBnZXRXb3Jrc3BhY2VSZWdpc3RyYXRpb24obmFtZSk7XG4gIGNvbnN0IGN1cnJlbnRXb3Jrc3BhY2VHcm91cCA9IHN0b3JlLmdldFN0YXRlKCkud29ya3NwYWNlR3JvdXA7XG5cbiAgaWYgKGN1cnJlbnRXb3Jrc3BhY2VHcm91cCAmJiAhY3VycmVudFdvcmtzcGFjZUdyb3VwLm1lbWJlcnM/LmluY2x1ZGVzKG5hbWUpKSB7XG4gICAgY2xvc2VXb3Jrc3BhY2VHcm91cChjdXJyZW50V29ya3NwYWNlR3JvdXAubmFtZSwgKCkgPT4ge1xuICAgICAgbGF1bmNoV29ya3NwYWNlKG5hbWUsIGFkZGl0aW9uYWxQcm9wcyk7XG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGN1cnJlbnRHcm91cE5hbWUgPSBzdG9yZS5nZXRTdGF0ZSgpLndvcmtzcGFjZUdyb3VwPy5uYW1lO1xuICBjb25zdCBuZXdXb3Jrc3BhY2U6IE9wZW5Xb3Jrc3BhY2UgPSB7XG4gICAgLi4ud29ya3NwYWNlLFxuICAgIHRpdGxlOiBnZXRXb3Jrc3BhY2VUaXRsZSh3b3Jrc3BhY2UsIGFkZGl0aW9uYWxQcm9wcyksXG4gICAgY2xvc2VXb3Jrc3BhY2U6IChvcHRpb25zOiBDbG9zZVdvcmtzcGFjZU9wdGlvbnMgPSB7fSkgPT4gY2xvc2VXb3Jrc3BhY2UobmFtZSwgb3B0aW9ucyksXG4gICAgY2xvc2VXb3Jrc3BhY2VXaXRoU2F2ZWRDaGFuZ2VzOiAob3B0aW9uczogQ2xvc2VXb3Jrc3BhY2VPcHRpb25zKSA9PlxuICAgICAgY2xvc2VXb3Jrc3BhY2UobmFtZSwgeyBpZ25vcmVDaGFuZ2VzOiB0cnVlLCAuLi5vcHRpb25zIH0pLFxuICAgIHByb21wdEJlZm9yZUNsb3Npbmc6ICh0ZXN0RmNuKSA9PiBwcm9tcHRCZWZvcmVDbG9zaW5nKG5hbWUsIHRlc3RGY24pLFxuICAgIHNldFRpdGxlOiAodGl0bGU6IHN0cmluZywgdGl0bGVOb2RlOiBSZWFjdE5vZGUpID0+IHtcbiAgICAgIG5ld1dvcmtzcGFjZS50aXRsZSA9IHRpdGxlO1xuICAgICAgbmV3V29ya3NwYWNlLnRpdGxlTm9kZSA9IHRpdGxlTm9kZTtcbiAgICAgIHN0b3JlLnNldFN0YXRlKChzdGF0ZSkgPT4ge1xuICAgICAgICBjb25zdCBvcGVuV29ya3NwYWNlcyA9IHN0YXRlLm9wZW5Xb3Jrc3BhY2VzLm1hcCgodykgPT4gKHcubmFtZSA9PT0gbmFtZSA/IG5ld1dvcmtzcGFjZSA6IHcpKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBvcGVuV29ya3NwYWNlcyxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgY3VycmVudFdvcmtzcGFjZUdyb3VwOiBjdXJyZW50R3JvdXBOYW1lLFxuICAgIGFkZGl0aW9uYWxQcm9wczogYWRkaXRpb25hbFByb3BzID8/IHt9LFxuICB9O1xuXG4gIGlmIChjdXJyZW50R3JvdXBOYW1lKSB7XG4gICAgZ2V0V29ya3NwYWNlR3JvdXBTdG9yZShjdXJyZW50R3JvdXBOYW1lLCBhZGRpdGlvbmFsUHJvcHMpO1xuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZVN0b3JlV2l0aE5ld1dvcmtzcGFjZSh3b3Jrc3BhY2VUb0JlQWRkZWQ6IE9wZW5Xb3Jrc3BhY2UsIHJlc3RPZlRoZVdvcmtzcGFjZXM/OiBBcnJheTxPcGVuV29ya3NwYWNlPikge1xuICAgIHN0b3JlLnNldFN0YXRlKChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3Qgb3BlbldvcmtzcGFjZXMgPSBbd29ya3NwYWNlVG9CZUFkZGVkLCAuLi4ocmVzdE9mVGhlV29ya3NwYWNlcyA/PyBzdGF0ZS5vcGVuV29ya3NwYWNlcyldO1xuICAgICAgbGV0IHdvcmtzcGFjZVdpbmRvd1N0YXRlID0gZ2V0VXBkYXRlZFdvcmtzcGFjZVdpbmRvd1N0YXRlKHdvcmtzcGFjZVRvQmVBZGRlZCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBvcGVuV29ya3NwYWNlcyxcbiAgICAgICAgd29ya3NwYWNlV2luZG93U3RhdGUsXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3Qgb3BlbldvcmtzcGFjZXMgPSBzdG9yZS5nZXRTdGF0ZSgpLm9wZW5Xb3Jrc3BhY2VzO1xuICBjb25zdCB3b3Jrc3BhY2VJbmRleEluT3BlbldvcmtzcGFjZXMgPSBvcGVuV29ya3NwYWNlcy5maW5kSW5kZXgoKHcpID0+IHcubmFtZSA9PT0gbmFtZSk7XG4gIGNvbnN0IGlzV29ya3NwYWNlQWxyZWFkeU9wZW4gPSB3b3Jrc3BhY2VJbmRleEluT3BlbldvcmtzcGFjZXMgPj0gMDtcbiAgY29uc3Qgb3BlbmVkV29ya3NwYWNlV2l0aFNhbWVUeXBlID0gb3BlbldvcmtzcGFjZXMuZmluZCgodykgPT4gdy50eXBlID09IG5ld1dvcmtzcGFjZS50eXBlKTtcblxuICBpZiAob3BlbldvcmtzcGFjZXMubGVuZ3RoID09PSAwKSB7XG4gICAgdXBkYXRlU3RvcmVXaXRoTmV3V29ya3NwYWNlKG5ld1dvcmtzcGFjZSk7XG4gIH0gZWxzZSBpZiAoIW9wZW5Xb3Jrc3BhY2VzWzBdLmNhbkhpZGUgJiYgd29ya3NwYWNlSW5kZXhJbk9wZW5Xb3Jrc3BhY2VzICE9PSAwKSB7XG4gICAgcHJvbXB0QmVmb3JlTGF1bmNoaW5nV29ya3NwYWNlKG9wZW5Xb3Jrc3BhY2VzWzBdLCB7XG4gICAgICBuYW1lLFxuICAgICAgYWRkaXRpb25hbFByb3BzLFxuICAgIH0pO1xuICB9IGVsc2UgaWYgKGlzV29ya3NwYWNlQWxyZWFkeU9wZW4pIHtcbiAgICBjb25zdCBvcGVuV29ya3NwYWNlID0gb3BlbldvcmtzcGFjZXNbd29ya3NwYWNlSW5kZXhJbk9wZW5Xb3Jrc3BhY2VzXTtcbiAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgdGl0bGUgaWYgaXQgaGFzbid0IGJlZW4gc2V0IGJ5IGBzZXRUaXRsZWBcbiAgICBpZiAob3BlbldvcmtzcGFjZS50aXRsZSA9PT0gZ2V0V29ya3NwYWNlVGl0bGUob3BlbldvcmtzcGFjZSwgb3BlbldvcmtzcGFjZS5hZGRpdGlvbmFsUHJvcHMpKSB7XG4gICAgICBvcGVuV29ya3NwYWNlLnRpdGxlID0gZ2V0V29ya3NwYWNlVGl0bGUobmV3V29ya3NwYWNlLCBuZXdXb3Jrc3BhY2UuYWRkaXRpb25hbFByb3BzKTtcbiAgICB9XG4gICAgb3BlbldvcmtzcGFjZS5hZGRpdGlvbmFsUHJvcHMgPSBuZXdXb3Jrc3BhY2UuYWRkaXRpb25hbFByb3BzO1xuICAgIGNvbnN0IHJlc3RPZlRoZVdvcmtzcGFjZXMgPSBvcGVuV29ya3NwYWNlcy5maWx0ZXIoKHcpID0+IHcubmFtZSAhPSBuYW1lKTtcbiAgICB1cGRhdGVTdG9yZVdpdGhOZXdXb3Jrc3BhY2Uob3BlbldvcmtzcGFjZXNbd29ya3NwYWNlSW5kZXhJbk9wZW5Xb3Jrc3BhY2VzXSwgcmVzdE9mVGhlV29ya3NwYWNlcyk7XG4gIH0gZWxzZSBpZiAob3BlbmVkV29ya3NwYWNlV2l0aFNhbWVUeXBlKSB7XG4gICAgY29uc3QgcmVzdE9mVGhlV29ya3NwYWNlcyA9IHN0b3JlLmdldFN0YXRlKCkub3BlbldvcmtzcGFjZXMuZmlsdGVyKCh3KSA9PiB3LnR5cGUgIT0gbmV3V29ya3NwYWNlLnR5cGUpO1xuICAgIHVwZGF0ZVN0b3JlV2l0aE5ld1dvcmtzcGFjZShvcGVuZWRXb3Jrc3BhY2VXaXRoU2FtZVR5cGUsIHJlc3RPZlRoZVdvcmtzcGFjZXMpO1xuICAgIHByb21wdEJlZm9yZUxhdW5jaGluZ1dvcmtzcGFjZShvcGVuZWRXb3Jrc3BhY2VXaXRoU2FtZVR5cGUsIHtcbiAgICAgIG5hbWUsXG4gICAgICBhZGRpdGlvbmFsUHJvcHMsXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdXBkYXRlU3RvcmVXaXRoTmV3V29ya3NwYWNlKG5ld1dvcmtzcGFjZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBVc2UgdGhpcyBmdW5jdGlvbiB0byBuYXZpZ2F0ZSB0byBhIG5ldyBwYWdlIGFuZCBsYXVuY2ggYSB3b3Jrc3BhY2Ugb24gdGhhdCBwYWdlLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zLnRhcmdldFVybDogVGhlIFVSTCB0byBuYXZpZ2F0ZSB0by4gV2lsbCBiZSBwYXNzZWQgdG8gW1tuYXZpZ2F0ZV1dLlxuICogQHBhcmFtIG9wdGlvbnMuY29udGV4dEtleTogVGhlIGNvbnRleHQga2V5IHVzZWQgYnkgdGhlIHRhcmdldCBwYWdlLlxuICogQHBhcmFtIG9wdGlvbnMud29ya3NwYWNlTmFtZTogVGhlIG5hbWUgb2YgdGhlIHdvcmtzcGFjZSB0byBsYXVuY2guXG4gKiBAcGFyYW0gb3B0aW9ucy5hZGRpdGlvbmFsUHJvcHM6IEFkZGl0aW9uYWwgcHJvcHMgdG8gcGFzcyB0byB0aGUgd29ya3NwYWNlIGNvbXBvbmVudCBiZWluZyBsYXVuY2hlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5hdmlnYXRlQW5kTGF1bmNoV29ya3NwYWNlKHtcbiAgdGFyZ2V0VXJsLFxuICBjb250ZXh0S2V5LFxuICB3b3Jrc3BhY2VOYW1lLFxuICBhZGRpdGlvbmFsUHJvcHMsXG59OiB7XG4gIHRhcmdldFVybDogc3RyaW5nO1xuICBjb250ZXh0S2V5OiBzdHJpbmc7XG4gIHdvcmtzcGFjZU5hbWU6IHN0cmluZztcbiAgYWRkaXRpb25hbFByb3BzPzogb2JqZWN0O1xufSkge1xuICBjaGFuZ2VXb3Jrc3BhY2VDb250ZXh0KGNvbnRleHRLZXkpO1xuICBsYXVuY2hXb3Jrc3BhY2Uod29ya3NwYWNlTmFtZSwgYWRkaXRpb25hbFByb3BzKTtcbiAgbmF2aWdhdGUoeyB0bzogdGFyZ2V0VXJsIH0pO1xufVxuXG5jb25zdCBwcm9tcHRCZWZvcmVDbG9zaW5nRmNucyA9IHt9O1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvbXB0QmVmb3JlQ2xvc2luZyh3b3Jrc3BhY2VOYW1lOiBzdHJpbmcsIHRlc3RGY246ICgpID0+IGJvb2xlYW4pIHtcbiAgcHJvbXB0QmVmb3JlQ2xvc2luZ0ZjbnNbd29ya3NwYWNlTmFtZV0gPSB0ZXN0RmNuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvbXB0QmVmb3JlQ2xvc2luZ0Zjbih3b3Jrc3BhY2VOYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHByb21wdEJlZm9yZUNsb3NpbmdGY25zW3dvcmtzcGFjZU5hbWVdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FuY2VsUHJvbXB0KCkge1xuICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG4gIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgc3RvcmUuc2V0U3RhdGUoeyAuLi5zdGF0ZSwgcHJvbXB0OiBudWxsIH0pO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogQ2xvc2VXb3Jrc3BhY2VPcHRpb25zID0ge1xuICBpZ25vcmVDaGFuZ2VzOiBmYWxzZSxcbiAgb25Xb3Jrc3BhY2VDbG9zZTogKCkgPT4ge30sXG4gIGNsb3NlV29ya3NwYWNlR3JvdXA6IHRydWUsXG59O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIGNsb3NlIGFuIG9wZW5lZCB3b3Jrc3BhY2VcbiAqIEBwYXJhbSBuYW1lIFdvcmtzcGFjZSByZWdpc3RyYXRpb24gbmFtZVxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyB0byBjbG9zZSB3b3Jrc3BhY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsb3NlV29ya3NwYWNlKG5hbWU6IHN0cmluZywgb3B0aW9uczogQ2xvc2VXb3Jrc3BhY2VPcHRpb25zID0ge30pOiBib29sZWFuIHtcbiAgb3B0aW9ucyA9IHsgLi4uZGVmYXVsdE9wdGlvbnMsIC4uLm9wdGlvbnMgfTtcbiAgY29uc3Qgc3RvcmUgPSBnZXRXb3Jrc3BhY2VTdG9yZSgpO1xuXG4gIGNvbnN0IHVwZGF0ZVN0b3JlV2l0aENsb3NlZFdvcmtzcGFjZSA9ICgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IHN0b3JlLmdldFN0YXRlKCk7XG4gICAgY29uc3Qgd29ya3NwYWNlVG9CZUNsb3NlZCA9IHN0YXRlLm9wZW5Xb3Jrc3BhY2VzLmZpbmQoKHcpID0+IHcubmFtZSA9PT0gbmFtZSk7XG4gICAgY29uc3QgbmV3T3BlbldvcmtzcGFjZXMgPSBzdGF0ZS5vcGVuV29ya3NwYWNlcy5maWx0ZXIoKHcpID0+IHcubmFtZSAhPSBuYW1lKTtcblxuICAgIGNvbnN0IHdvcmtzcGFjZUdyb3VwTmFtZSA9IHN0b3JlLmdldFN0YXRlKCkud29ya3NwYWNlR3JvdXA/Lm5hbWU7XG5cbiAgICBpZiAod29ya3NwYWNlR3JvdXBOYW1lICYmIG9wdGlvbnMuY2xvc2VXb3Jrc3BhY2VHcm91cCkge1xuICAgICAgY2xvc2VXb3Jrc3BhY2VHcm91cCh3b3Jrc3BhY2VHcm91cE5hbWUpO1xuICAgIH1cblxuICAgIC8vIGVuc3VyZSBjbG9zZWQgd29ya3NwYWNlIHdpbGwgbm90IHByb21wdFxuICAgIHByb21wdEJlZm9yZUNsb3NpbmcobmFtZSwgKCkgPT4gZmFsc2UpO1xuICAgIHN0b3JlLnNldFN0YXRlKChwcmV2KSA9PiAoe1xuICAgICAgLi4ucHJldixcbiAgICAgIHByb21wdDogbnVsbCxcbiAgICAgIG9wZW5Xb3Jrc3BhY2VzOiBuZXdPcGVuV29ya3NwYWNlcyxcbiAgICAgIHdvcmtzcGFjZVdpbmRvd1N0YXRlOiBnZXRVcGRhdGVkV29ya3NwYWNlV2luZG93U3RhdGUobmV3T3BlbldvcmtzcGFjZXM/LlswXSksXG4gICAgfSkpO1xuXG4gICAgb3B0aW9ucz8ub25Xb3Jrc3BhY2VDbG9zZT8uKCk7XG4gIH07XG5cbiAgaWYgKCFjYW5DbG9zZVdvcmtzcGFjZVdpdGhvdXRQcm9tcHRpbmcobmFtZSwgb3B0aW9ucz8uaWdub3JlQ2hhbmdlcykpIHtcbiAgICBjb25zdCBjdXJyZW50TmFtZSA9IGdldFdvcmtzcGFjZVJlZ2lzdHJhdGlvbihuYW1lKS50aXRsZSA/PyBuYW1lO1xuICAgIHNob3dXb3Jrc3BhY2VQcm9tcHRzKCdjbG9zaW5nLXdvcmtzcGFjZScsIHVwZGF0ZVN0b3JlV2l0aENsb3NlZFdvcmtzcGFjZSwgY3VycmVudE5hbWUpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICB1cGRhdGVTdG9yZVdpdGhDbG9zZWRXb3Jrc3BhY2UoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBzZXQgb2Ygd29ya3NwYWNlcyBpcyBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgcGFnZS4gVGhpcyBmdW5jdGlvblxuICogc2hvdWxkIGJlIHVzZWQgd2hlbiB0cmFuc2l0aW9uaW5nIHRvIGEgbmV3IHBhZ2UuIElmIHRoZSBjdXJyZW50XG4gKiB3b3Jrc3BhY2UgZGF0YSBpcyBmb3IgYSBkaWZmZXJlbnQgcGFnZSwgdGhlIHdvcmtzcGFjZSBzdGF0ZSBpcyBjbGVhcmVkLlxuICpcbiAqIFRoaXMgaXMgY2FsbGVkIGJ5IHRoZSB3b3Jrc3BhY2UgY29tcG9uZW50cyB3aGVuIHRoZXkgbW91bnQuXG4gKiBAaW50ZXJuYWxcbiAqXG4gKiBAcGFyYW0gY29udGV4dEtleSBBbiBhcmJpdHJhcnkga2V5IHRvIGlkZW50aWZ5IHRoZSBjdXJyZW50IHBhZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoYW5nZVdvcmtzcGFjZUNvbnRleHQoY29udGV4dEtleTogc3RyaW5nIHwgbnVsbCkge1xuICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG4gIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgaWYgKHN0YXRlLmNvbnRleHQgIT0gY29udGV4dEtleSkge1xuICAgIHN0b3JlLnNldFN0YXRlKHsgY29udGV4dDogY29udGV4dEtleSwgb3BlbldvcmtzcGFjZXM6IFtdLCBwcm9tcHQ6IG51bGwgfSk7XG4gIH1cbn1cblxuY29uc3QgaW5pdGlhbFN0YXRlOiBXb3Jrc3BhY2VTdG9yZVN0YXRlID0ge1xuICBjb250ZXh0OiAnJyxcbiAgb3BlbldvcmtzcGFjZXM6IFtdLFxuICBwcm9tcHQ6IG51bGwsXG4gIHdvcmtzcGFjZVdpbmRvd1N0YXRlOiAnbm9ybWFsJyxcbiAgd29ya3NwYWNlR3JvdXA6IHVuZGVmaW5lZCxcbn07XG5cbmV4cG9ydCBjb25zdCB3b3Jrc3BhY2VTdG9yZSA9IGNyZWF0ZUdsb2JhbFN0b3JlKCd3b3Jrc3BhY2UnLCBpbml0aWFsU3RhdGUpO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya3NwYWNlU3RvcmUoKSB7XG4gIHJldHVybiB3b3Jrc3BhY2VTdG9yZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVdvcmtzcGFjZVdpbmRvd1N0YXRlKHZhbHVlOiBXb3Jrc3BhY2VXaW5kb3dTdGF0ZSkge1xuICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG4gIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgc3RvcmUuc2V0U3RhdGUoeyAuLi5zdGF0ZSwgd29ya3NwYWNlV2luZG93U3RhdGU6IHZhbHVlIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRVcGRhdGVkV29ya3NwYWNlV2luZG93U3RhdGUod29ya3NwYWNlQXRUb3A6IE9wZW5Xb3Jrc3BhY2UpIHtcbiAgcmV0dXJuIHdvcmtzcGFjZUF0VG9wPy5wcmVmZXJyZWRXaW5kb3dTaXplID8/ICdub3JtYWwnO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNsb3NlQWxsV29ya3NwYWNlcyhcbiAgb25DbG9zaW5nV29ya3NwYWNlczogKCkgPT4gdm9pZCA9ICgpID0+IHt9LFxuICBmaWx0ZXI6ICh3b3Jrc3BhY2U6IE9wZW5Xb3Jrc3BhY2UpID0+IGJvb2xlYW4gPSAoKSA9PiB0cnVlLFxuKSB7XG4gIGNvbnN0IHN0b3JlID0gZ2V0V29ya3NwYWNlU3RvcmUoKTtcblxuICBjb25zdCBjYW5DbG9zZUFsbFdvcmtzcGFjZXMgPSBzdG9yZVxuICAgIC5nZXRTdGF0ZSgpXG4gICAgLm9wZW5Xb3Jrc3BhY2VzLmZpbHRlcihmaWx0ZXIpXG4gICAgLmV2ZXJ5KCh7IG5hbWUgfSkgPT4ge1xuICAgICAgcmV0dXJuIGNhbkNsb3NlV29ya3NwYWNlV2l0aG91dFByb21wdGluZyhuYW1lKTtcbiAgICB9KTtcblxuICBjb25zdCB1cGRhdGVXb3Jrc3BhY2VTdG9yZSA9ICgpID0+IHtcbiAgICByZXNldFdvcmtzcGFjZVN0b3JlKCk7XG4gICAgb25DbG9zaW5nV29ya3NwYWNlcz8uKCk7XG4gIH07XG5cbiAgaWYgKCFjYW5DbG9zZUFsbFdvcmtzcGFjZXMpIHtcbiAgICBzaG93V29ya3NwYWNlUHJvbXB0cygnY2xvc2luZy1hbGwtd29ya3NwYWNlcycsIHVwZGF0ZVdvcmtzcGFjZVN0b3JlKTtcbiAgfSBlbHNlIHtcbiAgICB1cGRhdGVXb3Jrc3BhY2VTdG9yZSgpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV29ya3NwYWNlc0luZm8ge1xuICBhY3RpdmU6IGJvb2xlYW47XG4gIHByb21wdDogUHJvbXB0IHwgbnVsbDtcbiAgd29ya3NwYWNlV2luZG93U3RhdGU6IFdvcmtzcGFjZVdpbmRvd1N0YXRlO1xuICB3b3Jrc3BhY2VzOiBBcnJheTxPcGVuV29ya3NwYWNlPjtcbiAgd29ya3NwYWNlR3JvdXA/OiBXb3Jrc3BhY2VTdG9yZVN0YXRlWyd3b3Jrc3BhY2VHcm91cCddO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlV29ya3NwYWNlcygpOiBXb3Jrc3BhY2VzSW5mbyB7XG4gIGNvbnN0IHsgd29ya3NwYWNlV2luZG93U3RhdGUsIG9wZW5Xb3Jrc3BhY2VzLCBwcm9tcHQsIHdvcmtzcGFjZUdyb3VwIH0gPSB1c2VTdG9yZSh3b3Jrc3BhY2VTdG9yZSk7XG4gIGNvbnN0IG1lbW9pc2VkUmVzdWx0czogV29ya3NwYWNlc0luZm8gPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0aXZlOiBvcGVuV29ya3NwYWNlcy5sZW5ndGggPiAwLFxuICAgICAgcHJvbXB0LFxuICAgICAgd29ya3NwYWNlV2luZG93U3RhdGUsXG4gICAgICB3b3Jrc3BhY2VzOiBvcGVuV29ya3NwYWNlcyxcbiAgICAgIHdvcmtzcGFjZUdyb3VwLFxuICAgIH07XG4gIH0sIFtvcGVuV29ya3NwYWNlcywgd29ya3NwYWNlV2luZG93U3RhdGUsIHByb21wdCwgd29ya3NwYWNlR3JvdXBdKTtcbiAgcmV0dXJuIG1lbW9pc2VkUmVzdWx0cztcbn1cblxudHlwZSBQcm9tcHRUeXBlID0gJ2Nsb3Npbmctd29ya3NwYWNlJyB8ICdjbG9zaW5nLWFsbC13b3Jrc3BhY2VzJyB8ICdjbG9zaW5nLXdvcmtzcGFjZS1sYXVuY2hpbmctbmV3LXdvcmtzcGFjZSc7XG5cbi8qKlxuICogU2V0cyB0aGUgY3VycmVudCBwcm9tcHQgYWNjb3JkaW5nIHRvIHRoZSBwcm9tcHQgdHlwZS5cbiAqIEBwYXJhbSBwcm9tcHRUeXBlIERldGVybWluZXMgdGhlIHRleHQgYW5kIGJlaGF2aW9yIG9mIHRoZSBwcm9tcHRcbiAqIEBwYXJhbSBvbkNvbmZpcm1hdGlvbiBGdW5jdGlvbiB0byBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHVzZXIgY29uZmlybXMgdG8gY2xvc2UgdGhlIHdvcmtzcGFjZVxuICogQHBhcmFtIHdvcmtzcGFjZVRpdGxlIFdvcmtzcGFjZSB0aXRsZSB0byBiZSBzaG93biBpbiB0aGUgcHJvbXB0XG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2hvd1dvcmtzcGFjZVByb21wdHMoXG4gIHByb21wdFR5cGU6IFByb21wdFR5cGUsXG4gIG9uQ29uZmlybWF0aW9uOiAoKSA9PiB2b2lkID0gKCkgPT4ge30sXG4gIHdvcmtzcGFjZVRpdGxlOiBzdHJpbmcgPSAnJyxcbikge1xuICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG5cbiAgbGV0IHByb21wdDogUHJvbXB0O1xuICBzd2l0Y2ggKHByb21wdFR5cGUpIHtcbiAgICBjYXNlICdjbG9zaW5nLXdvcmtzcGFjZSc6IHtcbiAgICAgIHByb21wdCA9IHtcbiAgICAgICAgdGl0bGU6IGdldENvcmVUcmFuc2xhdGlvbigndW5zYXZlZENoYW5nZXNUaXRsZVRleHQnLCAnVW5zYXZlZCBjaGFuZ2VzJyksXG4gICAgICAgIGJvZHk6IGdldENvcmVUcmFuc2xhdGlvbihcbiAgICAgICAgICAndW5zYXZlZENoYW5nZXNJbk9wZW5lZFdvcmtzcGFjZScsXG4gICAgICAgICAgYFlvdSBtYXkgaGF2ZSB1bnNhdmVkIGNoYW5nZXMgaW4gdGhlIG9wZW5lZCB3b3Jrc3BhY2UuIERvIHlvdSB3YW50IHRvIGRpc2NhcmQgdGhlc2UgY2hhbmdlcz9gLFxuICAgICAgICApLFxuICAgICAgICBvbkNvbmZpcm06ICgpID0+IHtcbiAgICAgICAgICBvbkNvbmZpcm1hdGlvbj8uKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZpcm1UZXh0OiBnZXRDb3JlVHJhbnNsYXRpb24oJ2Rpc2NhcmQnLCAnRGlzY2FyZCcpLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNhc2UgJ2Nsb3NpbmctYWxsLXdvcmtzcGFjZXMnOiB7XG4gICAgICBjb25zdCB3b3Jrc3BhY2VzTm90Q2xvc2VkID0gc3RvcmVcbiAgICAgICAgLmdldFN0YXRlKClcbiAgICAgICAgLm9wZW5Xb3Jrc3BhY2VzLmZpbHRlcigoeyBuYW1lIH0pID0+ICFjYW5DbG9zZVdvcmtzcGFjZVdpdGhvdXRQcm9tcHRpbmcobmFtZSkpXG4gICAgICAgIC5tYXAoKHsgdGl0bGUgfSwgaW5keCkgPT4gYCR7aW5keCArIDF9LiAke3RpdGxlfWApO1xuXG4gICAgICBwcm9tcHQgPSB7XG4gICAgICAgIHRpdGxlOiBnZXRDb3JlVHJhbnNsYXRpb24oJ2Nsb3NpbmdBbGxXb3Jrc3BhY2VzUHJvbXB0VGl0bGUnLCAnWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzJyksXG4gICAgICAgIGJvZHk6IGdldENvcmVUcmFuc2xhdGlvbihcbiAgICAgICAgICAnY2xvc2luZ0FsbFdvcmtzcGFjZXNQcm9tcHRCb2R5JyxcbiAgICAgICAgICAnVGhlcmUgbWF5IGJlIHVuc2F2ZWQgY2hhbmdlcyBpbiB0aGUgZm9sbG93aW5nIHdvcmtzcGFjZXMuIERvIHlvdSB3YW50IHRvIGRpc2NhcmQgY2hhbmdlcyBpbiB0aGUgZm9sbG93aW5nIHdvcmtzcGFjZXM/IHt7d29ya3NwYWNlTmFtZXN9fScsXG4gICAgICAgICAge1xuICAgICAgICAgICAgd29ya3NwYWNlTmFtZXM6IHdvcmtzcGFjZXNOb3RDbG9zZWQuam9pbignLCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgICksXG4gICAgICAgIG9uQ29uZmlybTogKCkgPT4ge1xuICAgICAgICAgIG9uQ29uZmlybWF0aW9uPy4oKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmlybVRleHQ6IGdldENvcmVUcmFuc2xhdGlvbignY2xvc2VBbGxPcGVuZWRXb3Jrc3BhY2VzJywgJ0Rpc2NhcmQgY2hhbmdlcyBpbiB7e2NvdW50fX0gd29ya3NwYWNlcycsIHtcbiAgICAgICAgICBjb3VudDogd29ya3NwYWNlc05vdENsb3NlZC5sZW5ndGgsXG4gICAgICAgIH0pLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlICdjbG9zaW5nLXdvcmtzcGFjZS1sYXVuY2hpbmctbmV3LXdvcmtzcGFjZSc6IHtcbiAgICAgIHByb21wdCA9IHtcbiAgICAgICAgdGl0bGU6IGdldENvcmVUcmFuc2xhdGlvbigndW5zYXZlZENoYW5nZXNUaXRsZVRleHQnLCAnVW5zYXZlZCBjaGFuZ2VzJyksXG4gICAgICAgIGJvZHk6IGdldENvcmVUcmFuc2xhdGlvbihcbiAgICAgICAgICAndW5zYXZlZENoYW5nZXNJbldvcmtzcGFjZScsXG4gICAgICAgICAgJ1RoZXJlIG1heSBiZSB1bnNhdmVkIGNoYW5nZXMgaW4gXCJ7e3dvcmtzcGFjZU5hbWV9fVwiLiBQbGVhc2Ugc2F2ZSB0aGVtIGJlZm9yZSBvcGVuaW5nIGFub3RoZXIgd29ya3NwYWNlLicsXG4gICAgICAgICAgeyB3b3Jrc3BhY2VOYW1lOiB3b3Jrc3BhY2VUaXRsZSB9LFxuICAgICAgICApLFxuICAgICAgICBvbkNvbmZpcm06ICgpID0+IHtcbiAgICAgICAgICBzdG9yZS5zZXRTdGF0ZSgoc3RhdGUpID0+ICh7XG4gICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgIHByb21wdDogbnVsbCxcbiAgICAgICAgICB9KSk7XG4gICAgICAgICAgb25Db25maXJtYXRpb24/LigpO1xuICAgICAgICB9LFxuICAgICAgICBjb25maXJtVGV4dDogZ2V0Q29yZVRyYW5zbGF0aW9uKCdvcGVuQW55d2F5JywgJ09wZW4gYW55d2F5JyksXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGBXb3Jrc3BhY2Ugc3lzdGVtIHRyeWluZyB0byBvcGVuIHVua25vd24gcHJvbXB0IHR5cGUgXCIke3Byb21wdFR5cGV9XCIgaW4gZnVuY3Rpb24gXCJzaG93V29ya3NwYWNlUHJvbXB0c1wiYCxcbiAgICAgICk7XG4gICAgICBvbkNvbmZpcm1hdGlvbj8uKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG4gIHN0b3JlLnNldFN0YXRlKChzdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIHByb21wdCB9KSk7XG59XG5cbmZ1bmN0aW9uIGdldFdvcmtzcGFjZVRpdGxlKHdvcmtzcGFjZTogV29ya3NwYWNlUmVnaXN0cmF0aW9uLCBhZGRpdGlvbmFsUHJvcHM/OiBvYmplY3QpIHtcbiAgcmV0dXJuIGFkZGl0aW9uYWxQcm9wcz8uWyd3b3Jrc3BhY2VUaXRsZSddID8/IHdvcmtzcGFjZS50aXRsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0V29ya3NwYWNlU3RvcmUoKSB7XG4gIGdldFdvcmtzcGFjZVN0b3JlKCkuc2V0U3RhdGUoaW5pdGlhbFN0YXRlKTtcbn1cblxuLyoqXG4gKiBUaGUgd29ya3NwYWNlIGdyb3VwIHN0b3JlIGlzIGEgc3RvcmUgdGhhdCBpcyBzcGVjaWZpYyB0byB0aGUgd29ya3NwYWNlIGdyb3VwLlxuICogSWYgdGhlIHdvcmtzcGFjZSBoYXMgaXRzIG93biBzaWRlYmFyLCB0aGUgc3RvcmUgd2lsbCBiZSBjcmVhdGVkLlxuICogVGhpcyBzdG9yZSBjYW4gYmUgdXNlZCB0byBzdG9yZSBkYXRhIHRoYXQgaXMgc3BlY2lmaWMgdG8gdGhlIHdvcmtzcGFjZSBncm91cC5cbiAqIFRoZSBzdG9yZSB3aWxsIGJlIHNhbWUgZm9yIGFsbCB0aGUgd29ya3NwYWNlcyB3aXRoIHNhbWUgZ3JvdXAgbmFtZS5cbiAqXG4gKiBGb3Igd29ya3NwYWNlcyBsYXVuY2hlZCB3aXRob3V0IGEgZ3JvdXAsIHRoZSBzdG9yZSB3aWxsIGJlIHVuZGVmaW5lZC5cbiAqXG4gKiBUaGUgc3RvcmUgd2lsbCBiZSBjbGVhcmVkIHdoZW4gYWxsIHRoZSB3b3Jrc3BhY2VzIHdpdGggdGhlIHN0b3JlJ3MgZ3JvdXAgbmFtZSBhcmUgY2xvc2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya3NwYWNlR3JvdXBTdG9yZShcbiAgd29ya3NwYWNlR3JvdXBOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGFkZGl0aW9uYWxQcm9wczogb2JqZWN0ID0ge30sXG4pOiBTdG9yZUFwaTxvYmplY3Q+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF3b3Jrc3BhY2VHcm91cE5hbWUgfHwgd29ya3NwYWNlR3JvdXBOYW1lID09PSAnZGVmYXVsdCcpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IHN0b3JlID0gZ2V0R2xvYmFsU3RvcmU8b2JqZWN0Pih3b3Jrc3BhY2VHcm91cE5hbWUsIHt9KTtcbiAgaWYgKGFkZGl0aW9uYWxQcm9wcykge1xuICAgIHN0b3JlLnNldFN0YXRlKChwcmV2KSA9PiAoe1xuICAgICAgLi4ucHJldixcbiAgICAgIC4uLmFkZGl0aW9uYWxQcm9wcyxcbiAgICB9KSk7XG4gIH1cbiAgcmV0dXJuIHN0b3JlO1xufVxuIl0sIm5hbWVzIjpbInVzZU1lbW8iLCJnZXRXb3Jrc3BhY2VHcm91cFJlZ2lzdHJhdGlvbiIsImdldFdvcmtzcGFjZVJlZ2lzdHJhdGlvbiIsIm5hdmlnYXRlIiwiZ2V0R2xvYmFsU3RvcmUiLCJjcmVhdGVHbG9iYWxTdG9yZSIsImdldENvcmVUcmFuc2xhdGlvbiIsInVzZVN0b3JlIiwiY2FuQ2xvc2VXb3Jrc3BhY2VXaXRob3V0UHJvbXB0aW5nIiwibmFtZSIsImlnbm9yZUNoYW5nZXMiLCJwcm9tcHRCZWZvcmVGbiIsImdldFByb21wdEJlZm9yZUNsb3NpbmdGY24iLCJjbG9zZVdvcmtzcGFjZUdyb3VwIiwiZ3JvdXBOYW1lIiwib25Xb3Jrc3BhY2VDbG9zZXVwIiwic3RvcmUiLCJnZXRXb3Jrc3BhY2VTdG9yZSIsImN1cnJlbnRXb3Jrc3BhY2VHcm91cCIsImdldFN0YXRlIiwid29ya3NwYWNlR3JvdXAiLCJjdXJyZW50R3JvdXBOYW1lIiwiZmlsdGVyIiwid29ya3NwYWNlIiwiY2xvc2VBbGxXb3Jrc3BhY2VzIiwid29ya3NwYWNlR3JvdXBTdG9yZSIsImdldFdvcmtzcGFjZUdyb3VwU3RvcmUiLCJzZXRTdGF0ZSIsInVuc3Vic2NyaWJlIiwic3Vic2NyaWJlIiwiY2xlYW51cCIsInByZXYiLCJ1bmRlZmluZWQiLCJsYXVuY2hXb3Jrc3BhY2VHcm91cCIsImFyZ3MiLCJ3b3Jrc3BhY2VHcm91cFJlZ2lzdHJhdGlvbiIsInN0YXRlIiwib25Xb3Jrc3BhY2VHcm91cExhdW5jaCIsIndvcmtzcGFjZUdyb3VwQ2xlYW51cCIsIndvcmtzcGFjZVRvTGF1bmNoIiwib3BlbldvcmtzcGFjZXMiLCJsZW5ndGgiLCJtZW1iZXJzIiwibGF1bmNoV29ya3NwYWNlIiwiYWRkaXRpb25hbFByb3BzIiwicHJvbXB0QmVmb3JlTGF1bmNoaW5nV29ya3NwYWNlIiwibmV3V29ya3NwYWNlRGV0YWlscyIsIm5ld1dvcmtzcGFjZVJlZ2lzdHJhdGlvbiIsInByb2NlZWQiLCJjbG9zZVdvcmtzcGFjZSIsIm9uV29ya3NwYWNlQ2xvc2UiLCJzaG93V29ya3NwYWNlUHJvbXB0cyIsInRpdGxlIiwiaW5jbHVkZXMiLCJuZXdXb3Jrc3BhY2UiLCJnZXRXb3Jrc3BhY2VUaXRsZSIsIm9wdGlvbnMiLCJjbG9zZVdvcmtzcGFjZVdpdGhTYXZlZENoYW5nZXMiLCJwcm9tcHRCZWZvcmVDbG9zaW5nIiwidGVzdEZjbiIsInNldFRpdGxlIiwidGl0bGVOb2RlIiwibWFwIiwidyIsInVwZGF0ZVN0b3JlV2l0aE5ld1dvcmtzcGFjZSIsIndvcmtzcGFjZVRvQmVBZGRlZCIsInJlc3RPZlRoZVdvcmtzcGFjZXMiLCJ3b3Jrc3BhY2VXaW5kb3dTdGF0ZSIsImdldFVwZGF0ZWRXb3Jrc3BhY2VXaW5kb3dTdGF0ZSIsIndvcmtzcGFjZUluZGV4SW5PcGVuV29ya3NwYWNlcyIsImZpbmRJbmRleCIsImlzV29ya3NwYWNlQWxyZWFkeU9wZW4iLCJvcGVuZWRXb3Jrc3BhY2VXaXRoU2FtZVR5cGUiLCJmaW5kIiwidHlwZSIsImNhbkhpZGUiLCJvcGVuV29ya3NwYWNlIiwibmF2aWdhdGVBbmRMYXVuY2hXb3Jrc3BhY2UiLCJ0YXJnZXRVcmwiLCJjb250ZXh0S2V5Iiwid29ya3NwYWNlTmFtZSIsImNoYW5nZVdvcmtzcGFjZUNvbnRleHQiLCJ0byIsInByb21wdEJlZm9yZUNsb3NpbmdGY25zIiwiY2FuY2VsUHJvbXB0IiwicHJvbXB0IiwiZGVmYXVsdE9wdGlvbnMiLCJ1cGRhdGVTdG9yZVdpdGhDbG9zZWRXb3Jrc3BhY2UiLCJ3b3Jrc3BhY2VUb0JlQ2xvc2VkIiwibmV3T3BlbldvcmtzcGFjZXMiLCJ3b3Jrc3BhY2VHcm91cE5hbWUiLCJjdXJyZW50TmFtZSIsImNvbnRleHQiLCJpbml0aWFsU3RhdGUiLCJ3b3Jrc3BhY2VTdG9yZSIsInVwZGF0ZVdvcmtzcGFjZVdpbmRvd1N0YXRlIiwidmFsdWUiLCJ3b3Jrc3BhY2VBdFRvcCIsInByZWZlcnJlZFdpbmRvd1NpemUiLCJvbkNsb3NpbmdXb3Jrc3BhY2VzIiwiY2FuQ2xvc2VBbGxXb3Jrc3BhY2VzIiwiZXZlcnkiLCJ1cGRhdGVXb3Jrc3BhY2VTdG9yZSIsInJlc2V0V29ya3NwYWNlU3RvcmUiLCJ1c2VXb3Jrc3BhY2VzIiwibWVtb2lzZWRSZXN1bHRzIiwiYWN0aXZlIiwid29ya3NwYWNlcyIsInByb21wdFR5cGUiLCJvbkNvbmZpcm1hdGlvbiIsIndvcmtzcGFjZVRpdGxlIiwiYm9keSIsIm9uQ29uZmlybSIsImNvbmZpcm1UZXh0Iiwid29ya3NwYWNlc05vdENsb3NlZCIsImluZHgiLCJ3b3Jrc3BhY2VOYW1lcyIsImpvaW4iLCJjb3VudCIsImNvbnNvbGUiLCJlcnJvciJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/src/workspaces/workspaces.ts\n");
2148
+ 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 */ getWorkspaceGroupStore: () => (/* binding */ getWorkspaceGroupStore),\n/* harmony export */ getWorkspaceStore: () => (/* binding */ getWorkspaceStore),\n/* harmony export */ launchWorkspace: () => (/* binding */ launchWorkspace),\n/* harmony export */ launchWorkspaceGroup: () => (/* binding */ launchWorkspaceGroup),\n/* harmony export */ navigateAndLaunchWorkspace: () => (/* binding */ navigateAndLaunchWorkspace),\n/* harmony export */ promptBeforeClosing: () => (/* binding */ promptBeforeClosing),\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/dist/index.js\");\n/* harmony import */ var _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @openmrs/esm-navigation */ \"../../framework/esm-navigation/dist/index.js\");\n/* harmony import */ var _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @openmrs/esm-state */ \"../../framework/esm-state/dist/index.js\");\n/* harmony import */ var _openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @openmrs/esm-translations */ \"../../framework/esm-translations/dist/index.js\");\n/* harmony import */ var _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @openmrs/esm-react-utils */ \"../../framework/esm-react-utils/dist/index.js\");\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\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}\n/**\n * Closes a workspace group and performs cleanup operations.\n *\n * @param groupName - The name of the workspace group to close\n * @param onWorkspaceCloseup - Optional callback function to execute after closing the workspace group\n * @returns void, or exits early if the current workspace group name doesn't match the provided group name\n *\n * @remarks\n * This function performs the following operations:\n * - Validates if the provided group name matches the current workspace group\n * - Closes all workspaces associated with the group\n * - Clears the workspace group store state\n * - Executes cleanup function if defined in the workspace group\n * - Updates the main workspace store to remove the workspace group\n * - Calls the optional closeup callback if provided\n */ function closeWorkspaceGroup(groupName, onWorkspaceCloseup) {\n var _store_getState;\n var store = getWorkspaceStore();\n var currentWorkspaceGroup = (_store_getState = store.getState()) === null || _store_getState === void 0 ? void 0 : _store_getState.workspaceGroup;\n var currentGroupName = currentWorkspaceGroup === null || currentWorkspaceGroup === void 0 ? void 0 : currentWorkspaceGroup.name;\n if (!currentGroupName || groupName !== currentGroupName) {\n return;\n }\n var filter = currentGroupName ? function(workspace) {\n return workspace.currentWorkspaceGroup === currentGroupName;\n } : function() {\n return true;\n };\n closeAllWorkspaces(function() {\n // Clearing the workspace group and respective store if the new workspace is not part of the current group, which is handled in the `launchWorkspace` function.\n var workspaceGroupStore = getWorkspaceGroupStore(groupName);\n if (workspaceGroupStore) {\n workspaceGroupStore.setState({}, true);\n var unsubscribe = workspaceGroupStore.subscribe(function() {});\n unsubscribe();\n }\n if (typeof (currentWorkspaceGroup === null || currentWorkspaceGroup === void 0 ? void 0 : currentWorkspaceGroup.cleanup) === 'function') {\n currentWorkspaceGroup.cleanup();\n }\n store.setState(function(prev) {\n return _object_spread_props(_object_spread({}, prev), {\n workspaceGroup: undefined\n });\n });\n if (typeof onWorkspaceCloseup === 'function') {\n onWorkspaceCloseup();\n }\n }, filter);\n}\n/**\n * Launches a workspace group with the specified name and configuration.\n * If there are any open workspaces, it will first close them before launching the new workspace group.\n *\n * @param groupName - The name of the workspace group to launch\n * @param args - Configuration object for launching the workspace group\n * @param args.state - The initial state for the workspace group\n * @param args.onWorkspaceGroupLaunch - Optional callback function to be executed after the workspace group is launched\n * @param args.workspaceGroupCleanup - Optional cleanup function to be executed when the workspace group is closed\n *\n * @example\n * launchWorkspaceGroup(\"myGroup\", {\n * state: initialState,\n * onWorkspaceGroupLaunch: () => console.log(\"Workspace group launched\"),\n * workspaceGroupCleanup: () => console.log(\"Cleaning up workspace group\")\n * });\n */ function launchWorkspaceGroup(groupName, args) {\n var workspaceGroupRegistration = (0,_openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_1__.getWorkspaceGroupRegistration)(groupName);\n var state = args.state, onWorkspaceGroupLaunch = args.onWorkspaceGroupLaunch, workspaceGroupCleanup = args.workspaceGroupCleanup, workspaceToLaunch = args.workspaceToLaunch;\n var store = getWorkspaceStore();\n if (store.getState().openWorkspaces.length) {\n var workspaceGroup = store.getState().workspaceGroup;\n if (workspaceGroup) {\n closeWorkspaceGroup(workspaceGroup === null || workspaceGroup === void 0 ? void 0 : workspaceGroup.name, function() {\n launchWorkspaceGroup(groupName, args);\n });\n } else {\n closeAllWorkspaces(function() {\n launchWorkspaceGroup(groupName, args);\n });\n }\n } else {\n store.setState(function(prev) {\n return _object_spread_props(_object_spread({}, prev), {\n workspaceGroup: {\n name: groupName,\n members: workspaceGroupRegistration.members,\n cleanup: workspaceGroupCleanup\n }\n });\n });\n getWorkspaceGroupStore(groupName, state);\n onWorkspaceGroupLaunch === null || onWorkspaceGroupLaunch === void 0 ? void 0 : onWorkspaceGroupLaunch();\n if (workspaceToLaunch) {\n var _workspaceToLaunch_additionalProps;\n launchWorkspace(workspaceToLaunch.name, (_workspaceToLaunch_additionalProps = workspaceToLaunch.additionalProps) !== null && _workspaceToLaunch_additionalProps !== void 0 ? _workspaceToLaunch_additionalProps : {});\n }\n }\n}\nfunction promptBeforeLaunchingWorkspace(workspace, newWorkspaceDetails) {\n var name = newWorkspaceDetails.name, additionalProps = newWorkspaceDetails.additionalProps;\n var newWorkspaceRegistration = (0,_openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_1__.getWorkspaceRegistration)(name);\n var proceed = function() {\n closeWorkspace(workspace.name, {\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 // If the new workspace is of the same sidebar group, then we don't need to clear the workspace group store.\n closeWorkspaceGroup: false\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 _currentWorkspaceGroup_members, _store_getState_workspaceGroup;\n var store = getWorkspaceStore();\n var workspace = (0,_openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_1__.getWorkspaceRegistration)(name);\n var currentWorkspaceGroup = store.getState().workspaceGroup;\n if (currentWorkspaceGroup && !((_currentWorkspaceGroup_members = currentWorkspaceGroup.members) === null || _currentWorkspaceGroup_members === void 0 ? void 0 : _currentWorkspaceGroup_members.includes(name))) {\n closeWorkspaceGroup(currentWorkspaceGroup.name, function() {\n launchWorkspace(name, additionalProps);\n });\n return;\n }\n var currentGroupName = (_store_getState_workspaceGroup = store.getState().workspaceGroup) === null || _store_getState_workspaceGroup === void 0 ? void 0 : _store_getState_workspaceGroup.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 currentWorkspaceGroup: currentGroupName,\n additionalProps: additionalProps !== null && additionalProps !== void 0 ? additionalProps : {}\n });\n if (currentGroupName) {\n getWorkspaceGroupStore(currentGroupName, additionalProps);\n }\n 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(workspaceToBeAdded);\n return _object_spread_props(_object_spread({}, state), {\n openWorkspaces: openWorkspaces,\n workspaceWindowState: workspaceWindowState\n });\n });\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(newWorkspace, 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_2__.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}\nvar defaultOptions = {\n ignoreChanges: false,\n onWorkspaceClose: function() {},\n closeWorkspaceGroup: true\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 options = _object_spread({}, defaultOptions, options);\n var store = getWorkspaceStore();\n var updateStoreWithClosedWorkspace = function() {\n var _store_getState_workspaceGroup, _options_onWorkspaceClose;\n var state = store.getState();\n var workspaceToBeClosed = state.openWorkspaces.find(function(w) {\n return w.name === name;\n });\n var newOpenWorkspaces = state.openWorkspaces.filter(function(w) {\n return w.name != name;\n });\n var workspaceGroupName = (_store_getState_workspaceGroup = store.getState().workspaceGroup) === null || _store_getState_workspaceGroup === void 0 ? void 0 : _store_getState_workspaceGroup.name;\n if (workspaceGroupName && options.closeWorkspaceGroup) {\n closeWorkspaceGroup(workspaceGroupName);\n }\n // ensure closed workspace will not prompt\n promptBeforeClosing(name, function() {\n return false;\n });\n store.setState(function(prev) {\n return _object_spread_props(_object_spread({}, prev), {\n prompt: null,\n openWorkspaces: newOpenWorkspaces,\n workspaceWindowState: getUpdatedWorkspaceWindowState(newOpenWorkspaces === null || newOpenWorkspaces === void 0 ? void 0 : newOpenWorkspaces[0])\n });\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 = (0,_openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_1__.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 workspaceGroup: undefined\n};\nvar workspaceStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_3__.createGlobalStore)('workspace', initialState);\nfunction getWorkspaceStore() {\n return workspaceStore;\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() {}, filter = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : function() {\n return true;\n };\n var store = getWorkspaceStore();\n var canCloseAllWorkspaces = store.getState().openWorkspaces.filter(filter).every(function(param) {\n var name = param.name;\n return canCloseWorkspaceWithoutPrompting(name);\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_5__.useStore)(workspaceStore), workspaceWindowState = _useStore.workspaceWindowState, openWorkspaces = _useStore.openWorkspaces, prompt = _useStore.prompt, workspaceGroup = _useStore.workspaceGroup;\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 workspaceGroup: workspaceGroup\n };\n }, [\n openWorkspaces,\n workspaceWindowState,\n prompt,\n workspaceGroup\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_4__.getCoreTranslation)('unsavedChangesTitleText', 'Unsaved changes'),\n body: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('unsavedChangesInOpenedWorkspace', \"You may 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_4__.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_4__.getCoreTranslation)('closingAllWorkspacesPromptTitle', 'You have unsaved changes'),\n body: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('closingAllWorkspacesPromptBody', 'There may be 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_4__.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_4__.getCoreTranslation)('unsavedChangesTitleText', 'Unsaved changes'),\n body: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('unsavedChangesInWorkspace', 'There may be 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_4__.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 : workspace.title;\n}\nfunction resetWorkspaceStore() {\n getWorkspaceStore().setState(initialState);\n}\n/**\n * The workspace group store is a store that is specific to the workspace group.\n * If the workspace has its own sidebar, the store will be created.\n * This store can be used to store data that is specific to the workspace group.\n * The store will be same for all the workspaces with same group name.\n *\n * For workspaces launched without a group, the store will be undefined.\n *\n * The store will be cleared when all the workspaces with the store's group name are closed.\n */ function getWorkspaceGroupStore(workspaceGroupName) {\n var additionalProps = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!workspaceGroupName || workspaceGroupName === 'default') {\n return undefined;\n }\n var store = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_3__.getGlobalStore)(workspaceGroupName, {});\n if (additionalProps) {\n store.setState(function(prev) {\n return _object_spread({}, prev, additionalProps);\n });\n }\n return store;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy93b3Jrc3BhY2VzL3dvcmtzcGFjZXMudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0NBQWdDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNnQjtBQUtmO0FBRWtCO0FBQ29CO0FBQ1I7QUFDWDtBQTBHcEQ7Ozs7O0NBS0MsR0FDTSxTQUFTUSxrQ0FBa0NDLElBQVk7UUFBRUMsZ0JBQUFBLGlFQUF5QjtJQUN2RixJQUFJQSxlQUFlO1FBQ2pCLE9BQU87SUFDVDtJQUNBLElBQU1DLGlCQUFpQkMsMEJBQTBCSDtJQUNqRCxPQUFPLENBQUNFLGtCQUFrQixDQUFDQTtBQUM3QjtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Q0FlQyxHQUNELFNBQVNFLG9CQUFvQkMsU0FBaUIsRUFBRUMsa0JBQStCO1FBRS9DQztJQUQ5QixJQUFNQSxRQUFRQztJQUNkLElBQU1DLHlCQUF3QkYsa0JBQUFBLE1BQU1HLFFBQVEsZ0JBQWRILHNDQUFBQSxnQkFBa0JJLGNBQWM7SUFDOUQsSUFBTUMsbUJBQW1CSCxrQ0FBQUEsNENBQUFBLHNCQUF1QlQsSUFBSTtJQUNwRCxJQUFJLENBQUNZLG9CQUFvQlAsY0FBY08sa0JBQWtCO1FBQ3ZEO0lBQ0Y7SUFDQSxJQUFNQyxTQUFnREQsbUJBQ2xELFNBQUNFO2VBQWNBLFVBQVVMLHFCQUFxQixLQUFLRztRQUNuRDtlQUFNOztJQUVWRyxtQkFBbUI7UUFDakIsK0pBQStKO1FBQy9KLElBQU1DLHNCQUFzQkMsdUJBQXVCWjtRQUNuRCxJQUFJVyxxQkFBcUI7WUFDdkJBLG9CQUFvQkUsUUFBUSxDQUFDLENBQUMsR0FBRztZQUNqQyxJQUFNQyxjQUFjSCxvQkFBb0JJLFNBQVMsQ0FBQyxZQUFPO1lBQ3pERDtRQUNGO1FBRUEsSUFBSSxRQUFPVixrQ0FBQUEsNENB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ZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLXN0eWxlZ3VpZGUvc3JjL3dvcmtzcGFjZXMvd29ya3NwYWNlcy50cz9jMTVlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBXb3Jrc3BhY2UgKi9cbmltcG9ydCB7IHVzZU1lbW8sIHR5cGUgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtcbiAgZ2V0V29ya3NwYWNlR3JvdXBSZWdpc3RyYXRpb24sXG4gIGdldFdvcmtzcGFjZVJlZ2lzdHJhdGlvbixcbiAgdHlwZSBXb3Jrc3BhY2VSZWdpc3RyYXRpb24sXG59IGZyb20gJ0BvcGVubXJzL2VzbS1leHRlbnNpb25zJztcbmltcG9ydCB7IHR5cGUgV29ya3NwYWNlV2luZG93U3RhdGUgfSBmcm9tICdAb3Blbm1ycy9lc20tZ2xvYmFscyc7XG5pbXBvcnQgeyBuYXZpZ2F0ZSB9IGZyb20gJ0BvcGVubXJzL2VzbS1uYXZpZ2F0aW9uJztcbmltcG9ydCB7IGdldEdsb2JhbFN0b3JlLCBjcmVhdGVHbG9iYWxTdG9yZSB9IGZyb20gJ0BvcGVubXJzL2VzbS1zdGF0ZSc7XG5pbXBvcnQgeyBnZXRDb3JlVHJhbnNsYXRpb24gfSBmcm9tICdAb3Blbm1ycy9lc20tdHJhbnNsYXRpb25zJztcbmltcG9ydCB7IHVzZVN0b3JlIH0gZnJvbSAnQG9wZW5tcnMvZXNtLXJlYWN0LXV0aWxzJztcbmltcG9ydCB0eXBlIHsgU3RvcmVBcGkgfSBmcm9tICd6dXN0YW5kL3ZhbmlsbGEnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENsb3NlV29ya3NwYWNlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGNsb3NlIHRoZSB3b3Jrc3BhY2UgaWdub3JpbmcgYWxsIHRoZSBjaGFuZ2VzIHByZXNlbnQgaW4gdGhlIHdvcmtzcGFjZS5cbiAgICpcbiAgICogSWYgaWdub3JlQ2hhbmdlcyBpcyB0cnVlLCB0aGUgdXNlciB3aWxsIG5vdCBiZSBwcm9tcHRlZCB0byBzYXZlIGNoYW5nZXMgYmVmb3JlIGNsb3NpbmdcbiAgICogZXZlbiBpZiB0aGUgYHRlc3RGY25gIHBhc3NlZCB0byBgcHJvbXB0QmVmb3JlQ2xvc2luZ2AgcmV0dXJucyBgdHJ1ZWAuXG4gICAqL1xuICBpZ25vcmVDaGFuZ2VzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIElmIHlvdSB3YW50IHRvIHRha2UgYW4gYWN0aW9uIGFmdGVyIHRoZSB3b3Jrc3BhY2UgaXMgY2xvc2VkLCB5b3UgY2FuIHBhc3MgeW91ciBmdW5jdGlvbiBhc1xuICAgKiBgb25Xb3Jrc3BhY2VDbG9zZWAuIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgb25seSBhZnRlciB0aGUgd29ya3NwYWNlIGlzIGNsb3NlZCwgZ2l2ZW5cbiAgICogdGhhdCB0aGUgdXNlciBtaWdodCBiZSBzaG93biBhIHByb21wdC5cbiAgICogQHJldHVybnMgdm9pZFxuICAgKi9cbiAgb25Xb3Jrc3BhY2VDbG9zZT86ICgpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBDb250cm9scyB3aGV0aGVyIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgc2hvdWxkIGJlIGNsb3NlZCBhbmQgc3RvcmUgdG8gYmVcbiAgICogY2xlYXJlZCB3aGVuIHRoaXMgd29ya3NwYWNlIGlzIGNsb3NlZC5cbiAgICogRGVmYXVsdHMgdG8gdHJ1ZSBleGNlcHQgd2hlbiBvcGVuaW5nIGEgbmV3IHdvcmtzcGFjZSBvZiB0aGUgc2FtZSBncm91cC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgY2xvc2VXb3Jrc3BhY2VHcm91cD86IGJvb2xlYW47XG59XG5cbi8qKiBUaGUgZGVmYXVsdCBwYXJhbWV0ZXJzIHJlY2VpdmVkIGJ5IGFsbCB3b3Jrc3BhY2VzICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmF1bHRXb3Jrc3BhY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBDYWxsIHRoaXMgZnVuY3Rpb24gdG8gY2xvc2UgdGhlIHdvcmtzcGFjZS4gVGhpcyBmdW5jdGlvbiB3aWxsIHByb21wdCB0aGUgdXNlclxuICAgKiBpZiB0aGVyZSBhcmUgYW55IHVuc2F2ZWQgY2hhbmdlcyB0byB3b3Jrc3BhY2UuXG4gICAqXG4gICAqIFlvdSBjYW4gcGFzcyBgb25Xb3Jrc3BhY2VDbG9zZWAgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHdvcmtzcGFjZSBpcyBmaW5hbGx5XG4gICAqIGNsb3NlZCwgZ2l2ZW4gdGhlIHVzZXIgZm9yY2VmdWxseSBjbG9zZXMgdGhlIHdvcmtzcGFjZS5cbiAgICovXG4gIGNsb3NlV29ya3NwYWNlKGNsb3NlV29ya3NwYWNlT3B0aW9ucz86IENsb3NlV29ya3NwYWNlT3B0aW9ucyk6IHZvaWQ7XG4gIC8qKlxuICAgKiBDYWxsIHRoaXMgd2l0aCBhIG5vLWFyZ3MgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRydWUgaWYgdGhlIHVzZXIgc2hvdWxkIGJlIHByb21wdGVkIGJlZm9yZVxuICAgKiB0aGlzIHdvcmtzcGFjZSBpcyBjbG9zZWQ7IGUuZy4gaWYgdGhlcmUgaXMgdW5zYXZlZCBkYXRhLlxuICAgKi9cbiAgcHJvbXB0QmVmb3JlQ2xvc2luZyh0ZXN0RmNuOiAoKSA9PiBib29sZWFuKTogdm9pZDtcbiAgLyoqXG4gICAqIENhbGwgdGhpcyBmdW5jdGlvbiB0byBjbG9zZSB0aGUgd29ya3NwYWNlIGFmdGVyIHRoZSBmb3JtIGlzIHNhdmVkLiBUaGlzIGZ1bmN0aW9uXG4gICAqIHdpbGwgZGlyZWN0bHkgY2xvc2UgdGhlIHdvcmtzcGFjZSB3aXRob3V0IGFueSBwcm9tcHRcbiAgICovXG4gIGNsb3NlV29ya3NwYWNlV2l0aFNhdmVkQ2hhbmdlcyhjbG9zZVdvcmtzcGFjZU9wdGlvbnM/OiBDbG9zZVdvcmtzcGFjZU9wdGlvbnMpOiB2b2lkO1xuICAvKipcbiAgICogVXNlIHRoaXMgdG8gc2V0IHRoZSB3b3Jrc3BhY2UgdGl0bGUgaWYgaXQgbmVlZHMgdG8gYmUgc2V0IGR5bmFtaWNhbGx5LlxuICAgKlxuICAgKiBXb3Jrc3BhY2UgdGl0bGVzIGdlbmVyYWxseSBhcmUgc2V0IGluIHRoZSB3b3Jrc3BhY2UgZGVjbGFyYXRpb24gaW4gdGhlIHJvdXRlcy5qc29uIGZpbGUuIFRoZXkgY2FuIGFsc29cbiAgICogYmUgc2V0IGJ5IHRoZSB3b3Jrc3BhY2UgbGF1bmNoZXIgYnkgcGFzc2luZyBgd29ya3NwYWNlVGl0bGVgIGluIHRoZSBgYWRkaXRpb25hbFByb3BzYFxuICAgKiBwYXJhbWV0ZXIgb2YgdGhlIGBsYXVuY2hXb3Jrc3BhY2VgIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCB3aGVuIHRoZSB3b3Jrc3BhY2VcbiAgICogdGl0bGUgbmVlZHMgdG8gYmUgc2V0IGR5bmFtaWNhbGx5LlxuICAgKlxuICAgKiBAcGFyYW0gdGl0bGUgVGhlIHRpdGxlIHRvIHNldC4gSWYgdXNpbmcgdGl0bGVOb2RlLCBzZXQgdGhpcyB0byBhIGh1bWFuLXJlYWRhYmxlIHN0cmluZ1xuICAgKiAgICAgICAgd2hpY2ggd2lsbCBpZGVudGlmeSB0aGUgd29ya3NwYWNlIGluIG5vdGlmaWNhdGlvbnMgYW5kIG90aGVyIHBsYWNlcy5cbiAgICogQHBhcmFtIHRpdGxlTm9kZSBBIFJlYWN0IG9iamVjdCB0byBwdXQgaW4gdGhlIHdvcmtzcGFjZSBoZWFkZXIgaW4gcGxhY2Ugb2YgdGhlIHRpdGxlLiBUaGlzXG4gICAqICAgICAgICBpcyB1c2VmdWwgZm9yIGRpc3BsYXlpbmcgY3VzdG9tIGVsZW1lbnRzIGluIHRoZSBoZWFkZXIuIE5vdGUgdGhhdCBjdXN0b20gaGVhZGVyXG4gICAqICAgICAgICBlbGVtZW50cyBjYW4gYWxzbyBiZSBhdHRhY2hlZCB0byB0aGUgd29ya3NwYWNlIGhlYWRlciBleHRlbnNpb24gc2xvdHMuXG4gICAqL1xuICBzZXRUaXRsZSh0aXRsZTogc3RyaW5nLCB0aXRsZU5vZGU/OiBSZWFjdE5vZGUpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZVdpbmRvd1NpemUge1xuICBzaXplOiBXb3Jrc3BhY2VXaW5kb3dTdGF0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VXaW5kb3dTaXplUHJvdmlkZXJQcm9wcyB7XG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZVdpbmRvd1NpemVDb250ZXh0IHtcbiAgd2luZG93U2l6ZTogV29ya3NwYWNlV2luZG93U2l6ZTtcbiAgdXBkYXRlV2luZG93U2l6ZT8odmFsdWU6IFdvcmtzcGFjZVdpbmRvd1N0YXRlKTogYW55O1xuICBhY3RpdmU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvbXB0IHtcbiAgdGl0bGU6IHN0cmluZztcbiAgYm9keTogc3RyaW5nO1xuICAvKiogRGVmYXVsdHMgdG8gXCJDb25maXJtXCIgKi9cbiAgY29uZmlybVRleHQ/OiBzdHJpbmc7XG4gIG9uQ29uZmlybSgpOiB2b2lkO1xuICAvKiogRGVmYXVsdHMgdG8gXCJDYW5jZWxcIiAqL1xuICBjYW5jZWxUZXh0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZVN0b3JlU3RhdGUge1xuICBjb250ZXh0OiBzdHJpbmcgfCBudWxsO1xuICBvcGVuV29ya3NwYWNlczogQXJyYXk8T3BlbldvcmtzcGFjZT47XG4gIHByb21wdDogUHJvbXB0IHwgbnVsbDtcbiAgd29ya3NwYWNlV2luZG93U3RhdGU6IFdvcmtzcGFjZVdpbmRvd1N0YXRlO1xuICB3b3Jrc3BhY2VHcm91cD86IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbWVtYmVyczogQXJyYXk8c3RyaW5nPjtcbiAgICBjbGVhbnVwPygpOiB2b2lkO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5Xb3Jrc3BhY2UgZXh0ZW5kcyBXb3Jrc3BhY2VSZWdpc3RyYXRpb24sIERlZmF1bHRXb3Jrc3BhY2VQcm9wcyB7XG4gIGFkZGl0aW9uYWxQcm9wczogb2JqZWN0O1xuICBjdXJyZW50V29ya3NwYWNlR3JvdXA/OiBzdHJpbmc7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgdGhlIHdvcmtzcGFjZVxuICogQHBhcmFtIGlnbm9yZUNoYW5nZXMgSWYgc2V0IHRvIHRydWUsIHRoZSBcInVuc2F2ZWQgY2hhbmdlc1wiIG1vZGFsIHdpbGwgbmV2ZXIgYmUgc2hvd24sIGV2ZW4gaWYgdGhlIGBwcm9tcHRCZWZvcmVDbG9zaW5nYCBmdW5jdGlvbiByZXR1cm5zIHRydWUuIFRoZSB1c2VyIHdpbGwgbm90IGJlIHByb21wdGVkIGJlZm9yZSBjbG9zaW5nLlxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgd29ya3NwYWNlIGNhbiBiZSBjbG9zZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYW5DbG9zZVdvcmtzcGFjZVdpdGhvdXRQcm9tcHRpbmcobmFtZTogc3RyaW5nLCBpZ25vcmVDaGFuZ2VzOiBib29sZWFuID0gZmFsc2UpIHtcbiAgaWYgKGlnbm9yZUNoYW5nZXMpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBjb25zdCBwcm9tcHRCZWZvcmVGbiA9IGdldFByb21wdEJlZm9yZUNsb3NpbmdGY24obmFtZSk7XG4gIHJldHVybiAhcHJvbXB0QmVmb3JlRm4gfHwgIXByb21wdEJlZm9yZUZuKCk7XG59XG5cbi8qKlxuICogQ2xvc2VzIGEgd29ya3NwYWNlIGdyb3VwIGFuZCBwZXJmb3JtcyBjbGVhbnVwIG9wZXJhdGlvbnMuXG4gKlxuICogQHBhcmFtIGdyb3VwTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgdG8gY2xvc2VcbiAqIEBwYXJhbSBvbldvcmtzcGFjZUNsb3NldXAgLSBPcHRpb25hbCBjYWxsYmFjayBmdW5jdGlvbiB0byBleGVjdXRlIGFmdGVyIGNsb3NpbmcgdGhlIHdvcmtzcGFjZSBncm91cFxuICogQHJldHVybnMgdm9pZCwgb3IgZXhpdHMgZWFybHkgaWYgdGhlIGN1cnJlbnQgd29ya3NwYWNlIGdyb3VwIG5hbWUgZG9lc24ndCBtYXRjaCB0aGUgcHJvdmlkZWQgZ3JvdXAgbmFtZVxuICpcbiAqIEByZW1hcmtzXG4gKiBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIHRoZSBmb2xsb3dpbmcgb3BlcmF0aW9uczpcbiAqIC0gVmFsaWRhdGVzIGlmIHRoZSBwcm92aWRlZCBncm91cCBuYW1lIG1hdGNoZXMgdGhlIGN1cnJlbnQgd29ya3NwYWNlIGdyb3VwXG4gKiAtIENsb3NlcyBhbGwgd29ya3NwYWNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGdyb3VwXG4gKiAtIENsZWFycyB0aGUgd29ya3NwYWNlIGdyb3VwIHN0b3JlIHN0YXRlXG4gKiAtIEV4ZWN1dGVzIGNsZWFudXAgZnVuY3Rpb24gaWYgZGVmaW5lZCBpbiB0aGUgd29ya3NwYWNlIGdyb3VwXG4gKiAtIFVwZGF0ZXMgdGhlIG1haW4gd29ya3NwYWNlIHN0b3JlIHRvIHJlbW92ZSB0aGUgd29ya3NwYWNlIGdyb3VwXG4gKiAtIENhbGxzIHRoZSBvcHRpb25hbCBjbG9zZXVwIGNhbGxiYWNrIGlmIHByb3ZpZGVkXG4gKi9cbmZ1bmN0aW9uIGNsb3NlV29ya3NwYWNlR3JvdXAoZ3JvdXBOYW1lOiBzdHJpbmcsIG9uV29ya3NwYWNlQ2xvc2V1cD86ICgpID0+IHZvaWQpIHtcbiAgY29uc3Qgc3RvcmUgPSBnZXRXb3Jrc3BhY2VTdG9yZSgpO1xuICBjb25zdCBjdXJyZW50V29ya3NwYWNlR3JvdXAgPSBzdG9yZS5nZXRTdGF0ZSgpPy53b3Jrc3BhY2VHcm91cDtcbiAgY29uc3QgY3VycmVudEdyb3VwTmFtZSA9IGN1cnJlbnRXb3Jrc3BhY2VHcm91cD8ubmFtZTtcbiAgaWYgKCFjdXJyZW50R3JvdXBOYW1lIHx8IGdyb3VwTmFtZSAhPT0gY3VycmVudEdyb3VwTmFtZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBmaWx0ZXI6ICh3b3Jrc3BhY2U6IE9wZW5Xb3Jrc3BhY2UpID0+IGJvb2xlYW4gPSBjdXJyZW50R3JvdXBOYW1lXG4gICAgPyAod29ya3NwYWNlKSA9PiB3b3Jrc3BhY2UuY3VycmVudFdvcmtzcGFjZUdyb3VwID09PSBjdXJyZW50R3JvdXBOYW1lXG4gICAgOiAoKSA9PiB0cnVlO1xuXG4gIGNsb3NlQWxsV29ya3NwYWNlcygoKSA9PiB7XG4gICAgLy8gQ2xlYXJpbmcgdGhlIHdvcmtzcGFjZSBncm91cCBhbmQgcmVzcGVjdGl2ZSBzdG9yZSBpZiB0aGUgbmV3IHdvcmtzcGFjZSBpcyBub3QgcGFydCBvZiB0aGUgY3VycmVudCBncm91cCwgd2hpY2ggaXMgaGFuZGxlZCBpbiB0aGUgYGxhdW5jaFdvcmtzcGFjZWAgZnVuY3Rpb24uXG4gICAgY29uc3Qgd29ya3NwYWNlR3JvdXBTdG9yZSA9IGdldFdvcmtzcGFjZUdyb3VwU3RvcmUoZ3JvdXBOYW1lKTtcbiAgICBpZiAod29ya3NwYWNlR3JvdXBTdG9yZSkge1xuICAgICAgd29ya3NwYWNlR3JvdXBTdG9yZS5zZXRTdGF0ZSh7fSwgdHJ1ZSk7XG4gICAgICBjb25zdCB1bnN1YnNjcmliZSA9IHdvcmtzcGFjZUdyb3VwU3RvcmUuc3Vic2NyaWJlKCgpID0+IHt9KTtcbiAgICAgIHVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjdXJyZW50V29ya3NwYWNlR3JvdXA/LmNsZWFudXAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGN1cnJlbnRXb3Jrc3BhY2VHcm91cC5jbGVhbnVwKCk7XG4gICAgfVxuXG4gICAgc3RvcmUuc2V0U3RhdGUoKHByZXYpID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgd29ya3NwYWNlR3JvdXA6IHVuZGVmaW5lZCxcbiAgICB9KSk7XG5cbiAgICBpZiAodHlwZW9mIG9uV29ya3NwYWNlQ2xvc2V1cCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgb25Xb3Jrc3BhY2VDbG9zZXVwKCk7XG4gICAgfVxuICB9LCBmaWx0ZXIpO1xufVxuXG5pbnRlcmZhY2UgTGF1bmNoV29ya3NwYWNlR3JvdXBBcmcge1xuICBzdGF0ZTogUmVjb3JkPHN0cmluZyB8IHN5bWJvbCB8IG51bWJlciwgYW55PjtcbiAgb25Xb3Jrc3BhY2VHcm91cExhdW5jaD8oKTogdm9pZDtcbiAgd29ya3NwYWNlR3JvdXBDbGVhbnVwPygpOiB2b2lkO1xuICB3b3Jrc3BhY2VUb0xhdW5jaD86IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgYWRkaXRpb25hbFByb3BzPzogUmVjb3JkPHN0cmluZyB8IHN5bWJvbCB8IG51bWJlciwgYW55PjtcbiAgfTtcbn1cblxuLyoqXG4gKiBMYXVuY2hlcyBhIHdvcmtzcGFjZSBncm91cCB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSBhbmQgY29uZmlndXJhdGlvbi5cbiAqIElmIHRoZXJlIGFyZSBhbnkgb3BlbiB3b3Jrc3BhY2VzLCBpdCB3aWxsIGZpcnN0IGNsb3NlIHRoZW0gYmVmb3JlIGxhdW5jaGluZyB0aGUgbmV3IHdvcmtzcGFjZSBncm91cC5cbiAqXG4gKiBAcGFyYW0gZ3JvdXBOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHdvcmtzcGFjZSBncm91cCB0byBsYXVuY2hcbiAqIEBwYXJhbSBhcmdzIC0gQ29uZmlndXJhdGlvbiBvYmplY3QgZm9yIGxhdW5jaGluZyB0aGUgd29ya3NwYWNlIGdyb3VwXG4gKiBAcGFyYW0gYXJncy5zdGF0ZSAtIFRoZSBpbml0aWFsIHN0YXRlIGZvciB0aGUgd29ya3NwYWNlIGdyb3VwXG4gKiBAcGFyYW0gYXJncy5vbldvcmtzcGFjZUdyb3VwTGF1bmNoIC0gT3B0aW9uYWwgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQgYWZ0ZXIgdGhlIHdvcmtzcGFjZSBncm91cCBpcyBsYXVuY2hlZFxuICogQHBhcmFtIGFyZ3Mud29ya3NwYWNlR3JvdXBDbGVhbnVwIC0gT3B0aW9uYWwgY2xlYW51cCBmdW5jdGlvbiB0byBiZSBleGVjdXRlZCB3aGVuIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgaXMgY2xvc2VkXG4gKlxuICogQGV4YW1wbGVcbiAqIGxhdW5jaFdvcmtzcGFjZUdyb3VwKFwibXlHcm91cFwiLCB7XG4gKiAgIHN0YXRlOiBpbml0aWFsU3RhdGUsXG4gKiAgIG9uV29ya3NwYWNlR3JvdXBMYXVuY2g6ICgpID0+IGNvbnNvbGUubG9nKFwiV29ya3NwYWNlIGdyb3VwIGxhdW5jaGVkXCIpLFxuICogICB3b3Jrc3BhY2VHcm91cENsZWFudXA6ICgpID0+IGNvbnNvbGUubG9nKFwiQ2xlYW5pbmcgdXAgd29ya3NwYWNlIGdyb3VwXCIpXG4gKiB9KTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxhdW5jaFdvcmtzcGFjZUdyb3VwKGdyb3VwTmFtZTogc3RyaW5nLCBhcmdzOiBMYXVuY2hXb3Jrc3BhY2VHcm91cEFyZykge1xuICBjb25zdCB3b3Jrc3BhY2VHcm91cFJlZ2lzdHJhdGlvbiA9IGdldFdvcmtzcGFjZUdyb3VwUmVnaXN0cmF0aW9uKGdyb3VwTmFtZSk7XG4gIGNvbnN0IHsgc3RhdGUsIG9uV29ya3NwYWNlR3JvdXBMYXVuY2gsIHdvcmtzcGFjZUdyb3VwQ2xlYW51cCwgd29ya3NwYWNlVG9MYXVuY2ggfSA9IGFyZ3M7XG4gIGNvbnN0IHN0b3JlID0gZ2V0V29ya3NwYWNlU3RvcmUoKTtcbiAgaWYgKHN0b3JlLmdldFN0YXRlKCkub3BlbldvcmtzcGFjZXMubGVuZ3RoKSB7XG4gICAgY29uc3Qgd29ya3NwYWNlR3JvdXAgPSBzdG9yZS5nZXRTdGF0ZSgpLndvcmtzcGFjZUdyb3VwO1xuICAgIGlmICh3b3Jrc3BhY2VHcm91cCkge1xuICAgICAgY2xvc2VXb3Jrc3BhY2VHcm91cCh3b3Jrc3BhY2VHcm91cD8ubmFtZSwgKCkgPT4ge1xuICAgICAgICBsYXVuY2hXb3Jrc3BhY2VHcm91cChncm91cE5hbWUsIGFyZ3MpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNsb3NlQWxsV29ya3NwYWNlcygoKSA9PiB7XG4gICAgICAgIGxhdW5jaFdvcmtzcGFjZUdyb3VwKGdyb3VwTmFtZSwgYXJncyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgc3RvcmUuc2V0U3RhdGUoKHByZXYpID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgd29ya3NwYWNlR3JvdXA6IHtcbiAgICAgICAgbmFtZTogZ3JvdXBOYW1lLFxuICAgICAgICBtZW1iZXJzOiB3b3Jrc3BhY2VHcm91cFJlZ2lzdHJhdGlvbi5tZW1iZXJzLFxuICAgICAgICBjbGVhbnVwOiB3b3Jrc3BhY2VHcm91cENsZWFudXAsXG4gICAgICB9LFxuICAgIH0pKTtcbiAgICBnZXRXb3Jrc3BhY2VHcm91cFN0b3JlKGdyb3VwTmFtZSwgc3RhdGUpO1xuICAgIG9uV29ya3NwYWNlR3JvdXBMYXVuY2g/LigpO1xuICAgIGlmICh3b3Jrc3BhY2VUb0xhdW5jaCkge1xuICAgICAgbGF1bmNoV29ya3NwYWNlKHdvcmtzcGFjZVRvTGF1bmNoLm5hbWUsIHdvcmtzcGFjZVRvTGF1bmNoLmFkZGl0aW9uYWxQcm9wcyA/PyB7fSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByb21wdEJlZm9yZUxhdW5jaGluZ1dvcmtzcGFjZShcbiAgd29ya3NwYWNlOiBPcGVuV29ya3NwYWNlLFxuICBuZXdXb3Jrc3BhY2VEZXRhaWxzOiB7IG5hbWU6IHN0cmluZzsgYWRkaXRpb25hbFByb3BzPzogb2JqZWN0IH0sXG4pIHtcbiAgY29uc3QgeyBuYW1lLCBhZGRpdGlvbmFsUHJvcHMgfSA9IG5ld1dvcmtzcGFjZURldGFpbHM7XG4gIGNvbnN0IG5ld1dvcmtzcGFjZVJlZ2lzdHJhdGlvbiA9IGdldFdvcmtzcGFjZVJlZ2lzdHJhdGlvbihuYW1lKTtcblxuICBjb25zdCBwcm9jZWVkID0gKCkgPT4ge1xuICAgIGNsb3NlV29ya3NwYWNlKHdvcmtzcGFjZS5uYW1lLCB7XG4gICAgICBpZ25vcmVDaGFuZ2VzOiB0cnVlLFxuICAgICAgLy8gQ2FsbGluZyB0aGUgbGF1bmNoV29ya3NwYWNlIGFnYWluLCBzaW5jZSBvbmUgb2YgdGhlIGBpZmAgY2FzZVxuICAgICAgLy8gbWlnaHQgcmVzb2x2ZSwgYnV0IHdlIG5lZWQgdG8gY2hlY2sgYWxsIHRoZSBjYXNlcyBiZWZvcmUgbGF1bmNoaW5nIHRoZSBmb3JtLlxuICAgICAgb25Xb3Jrc3BhY2VDbG9zZTogKCkgPT4gbGF1bmNoV29ya3NwYWNlKG5hbWUsIGFkZGl0aW9uYWxQcm9wcyksXG4gICAgICAvLyBJZiB0aGUgbmV3IHdvcmtzcGFjZSBpcyBvZiB0aGUgc2FtZSBzaWRlYmFyIGdyb3VwLCB0aGVuIHdlIGRvbid0IG5lZWQgdG8gY2xlYXIgdGhlIHdvcmtzcGFjZSBncm91cCBzdG9yZS5cbiAgICAgIGNsb3NlV29ya3NwYWNlR3JvdXA6IGZhbHNlLFxuICAgIH0pO1xuICB9O1xuXG4gIGlmICghY2FuQ2xvc2VXb3Jrc3BhY2VXaXRob3V0UHJvbXB0aW5nKHdvcmtzcGFjZS5uYW1lKSkge1xuICAgIHNob3dXb3Jrc3BhY2VQcm9tcHRzKCdjbG9zaW5nLXdvcmtzcGFjZS1sYXVuY2hpbmctbmV3LXdvcmtzcGFjZScsIHByb2NlZWQsIHdvcmtzcGFjZS50aXRsZSA/PyB3b3Jrc3BhY2UubmFtZSk7XG4gIH0gZWxzZSB7XG4gICAgcHJvY2VlZCgpO1xuICB9XG59XG5cbi8qKlxuICogVGhpcyBsYXVuY2hlcyBhIHdvcmtzcGFjZSBieSBpdHMgbmFtZS4gVGhlIHdvcmtzcGFjZSBtdXN0IGhhdmUgYmVlbiByZWdpc3RlcmVkLlxuICogV29ya3NwYWNlcyBzaG91bGQgYmUgcmVnaXN0ZXJlZCBpbiB0aGUgYHJvdXRlcy5qc29uYCBmaWxlLlxuICpcbiAqIEZvciB0aGUgd29ya3NwYWNlIHRvIGFwcGVhciwgdGhlcmUgbXVzdCBiZSBlaXRoZXIgYSBgPFdvcmtzcGFjZU92ZXJsYXkgLz5gIG9yXG4gKiBhIGA8V29ya3NwYWNlV2luZG93IC8+YCBjb21wb25lbnQgcmVuZGVyZWQuXG4gKlxuICogVGhlIGJlaGF2aW9yIG9mIHRoaXMgZnVuY3Rpb24gaXMgYXMgZm9sbG93czpcbiAqXG4gKiAtIElmIG5vIHdvcmtzcGFjZXMgYXJlIG9wZW4sIG9yIGlmIG5vIG90aGVyIHdvcmtzcGFjZXMgd2l0aCB0aGUgc2FtZSB0eXBlIGFyZSBvcGVuLFxuICogICBpdCB3aWxsIGJlIG9wZW5lZCBhbmQgZm9jdXNlZC5cbiAqIC0gSWYgYSB3b3Jrc3BhY2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGlzIGFscmVhZHkgb3BlbiwgaXQgd2lsbCBiZSBkaXNwbGF5ZWQvZm9jdXNlZCxcbiAqICAgaWYgaXQgd2FzIG5vdCBhbHJlYWR5LlxuICogLSBJZiBhIHdvcmtzcGFjZSBpcyBsYXVuY2hlZCBhbmQgYSB3b3Jrc3BhY2Ugd2hpY2ggY2Fubm90IGJlIGhpZGRlbiBpcyBhbHJlYWR5IG9wZW4sXG4gKiAgYSBjb25maXJtYXRpb24gbW9kYWwgd2lsbCBwb3AgdXAgd2FybmluZyBhYm91dCBjbG9zaW5nIHRoZSBjdXJyZW50bHkgb3BlbiB3b3Jrc3BhY2UuXG4gKiAtIElmIGFub3RoZXIgd29ya3NwYWNlIHdpdGggdGhlIHNhbWUgdHlwZSBpcyBvcGVuLCB0aGUgd29ya3NwYWNlIHdpbGwgYmUgYnJvdWdodCB0b1xuICogICB0aGUgZnJvbnQgYW5kIHRoZW4gYSBjb25maXJtYXRpb24gbW9kYWwgd2lsbCBwb3AgdXAgd2FybmluZyBhYm91dCBjbG9zaW5nIHRoZSBvcGVuZWRcbiAqICAgd29ya3NwYWNlXG4gKlxuICogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24ganVzdCBtYW5pcHVsYXRlcyB0aGUgd29ya3NwYWNlIHN0b3JlLiBUaGUgVUkgbG9naWMgaXMgaGFuZGxlZFxuICogYnkgdGhlIGNvbXBvbmVudHMgdGhhdCBkaXNwbGF5IHdvcmtzcGFjZXMuXG4gKlxuICogQWRkaXRpb25hbCBwcm9wcyBjYW4gYmUgcGFzc2VkIHRvIHRoZSB3b3Jrc3BhY2UgY29tcG9uZW50IGJlaW5nIGxhdW5jaGVkLiBQYXNzaW5nIGFcbiAqIHByb3AgbmFtZWQgYHdvcmtzcGFjZVRpdGxlYCB3aWxsIG92ZXJyaWRlIHRoZSB0aXRsZSBvZiB0aGUgd29ya3NwYWNlLlxuICpcbiAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSB3b3Jrc3BhY2UgdG8gbGF1bmNoXG4gKiBAcGFyYW0gYWRkaXRpb25hbFByb3BzIFByb3BzIHRvIHBhc3MgdG8gdGhlIHdvcmtzcGFjZSBjb21wb25lbnQgYmVpbmcgbGF1bmNoZWQuIFBhc3NpbmdcbiAqICAgICAgICAgIGEgcHJvcCBuYW1lZCBgd29ya3NwYWNlVGl0bGVgIHdpbGwgb3ZlcnJpZGUgdGhlIHRpdGxlIG9mIHRoZSB3b3Jrc3BhY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsYXVuY2hXb3Jrc3BhY2U8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0V29ya3NwYWNlUHJvcHMgfCBvYmplY3QgPSBEZWZhdWx0V29ya3NwYWNlUHJvcHMgJiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuPihuYW1lOiBzdHJpbmcsIGFkZGl0aW9uYWxQcm9wcz86IE9taXQ8VCwga2V5b2YgRGVmYXVsdFdvcmtzcGFjZVByb3BzPiAmIHsgd29ya3NwYWNlVGl0bGU/OiBzdHJpbmcgfSkge1xuICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG4gIGNvbnN0IHdvcmtzcGFjZSA9IGdldFdvcmtzcGFjZVJlZ2lzdHJhdGlvbihuYW1lKTtcbiAgY29uc3QgY3VycmVudFdvcmtzcGFjZUdyb3VwID0gc3RvcmUuZ2V0U3RhdGUoKS53b3Jrc3BhY2VHcm91cDtcblxuICBpZiAoY3VycmVudFdvcmtzcGFjZUdyb3VwICYmICFjdXJyZW50V29ya3NwYWNlR3JvdXAubWVtYmVycz8uaW5jbHVkZXMobmFtZSkpIHtcbiAgICBjbG9zZVdvcmtzcGFjZUdyb3VwKGN1cnJlbnRXb3Jrc3BhY2VHcm91cC5uYW1lLCAoKSA9PiB7XG4gICAgICBsYXVuY2hXb3Jrc3BhY2UobmFtZSwgYWRkaXRpb25hbFByb3BzKTtcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgY3VycmVudEdyb3VwTmFtZSA9IHN0b3JlLmdldFN0YXRlKCkud29ya3NwYWNlR3JvdXA/Lm5hbWU7XG4gIGNvbnN0IG5ld1dvcmtzcGFjZTogT3BlbldvcmtzcGFjZSA9IHtcbiAgICAuLi53b3Jrc3BhY2UsXG4gICAgdGl0bGU6IGdldFdvcmtzcGFjZVRpdGxlKHdvcmtzcGFjZSwgYWRkaXRpb25hbFByb3BzKSxcbiAgICBjbG9zZVdvcmtzcGFjZTogKG9wdGlvbnM6IENsb3NlV29ya3NwYWNlT3B0aW9ucyA9IHt9KSA9PiBjbG9zZVdvcmtzcGFjZShuYW1lLCBvcHRpb25zKSxcbiAgICBjbG9zZVdvcmtzcGFjZVdpdGhTYXZlZENoYW5nZXM6IChvcHRpb25zOiBDbG9zZVdvcmtzcGFjZU9wdGlvbnMpID0+XG4gICAgICBjbG9zZVdvcmtzcGFjZShuYW1lLCB7IGlnbm9yZUNoYW5nZXM6IHRydWUsIC4uLm9wdGlvbnMgfSksXG4gICAgcHJvbXB0QmVmb3JlQ2xvc2luZzogKHRlc3RGY24pID0+IHByb21wdEJlZm9yZUNsb3NpbmcobmFtZSwgdGVzdEZjbiksXG4gICAgc2V0VGl0bGU6ICh0aXRsZTogc3RyaW5nLCB0aXRsZU5vZGU6IFJlYWN0Tm9kZSkgPT4ge1xuICAgICAgbmV3V29ya3NwYWNlLnRpdGxlID0gdGl0bGU7XG4gICAgICBuZXdXb3Jrc3BhY2UudGl0bGVOb2RlID0gdGl0bGVOb2RlO1xuICAgICAgc3RvcmUuc2V0U3RhdGUoKHN0YXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wZW5Xb3Jrc3BhY2VzID0gc3RhdGUub3BlbldvcmtzcGFjZXMubWFwKCh3KSA9PiAody5uYW1lID09PSBuYW1lID8gbmV3V29ya3NwYWNlIDogdykpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIG9wZW5Xb3Jrc3BhY2VzLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBjdXJyZW50V29ya3NwYWNlR3JvdXA6IGN1cnJlbnRHcm91cE5hbWUsXG4gICAgYWRkaXRpb25hbFByb3BzOiBhZGRpdGlvbmFsUHJvcHMgPz8ge30sXG4gIH07XG5cbiAgaWYgKGN1cnJlbnRHcm91cE5hbWUpIHtcbiAgICBnZXRXb3Jrc3BhY2VHcm91cFN0b3JlKGN1cnJlbnRHcm91cE5hbWUsIGFkZGl0aW9uYWxQcm9wcyk7XG4gIH1cbiAgZnVuY3Rpb24gdXBkYXRlU3RvcmVXaXRoTmV3V29ya3NwYWNlKHdvcmtzcGFjZVRvQmVBZGRlZDogT3BlbldvcmtzcGFjZSwgcmVzdE9mVGhlV29ya3NwYWNlcz86IEFycmF5PE9wZW5Xb3Jrc3BhY2U+KSB7XG4gICAgc3RvcmUuc2V0U3RhdGUoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBvcGVuV29ya3NwYWNlcyA9IFt3b3Jrc3BhY2VUb0JlQWRkZWQsIC4uLihyZXN0T2ZUaGVXb3Jrc3BhY2VzID8/IHN0YXRlLm9wZW5Xb3Jrc3BhY2VzKV07XG4gICAgICBsZXQgd29ya3NwYWNlV2luZG93U3RhdGUgPSBnZXRVcGRhdGVkV29ya3NwYWNlV2luZG93U3RhdGUod29ya3NwYWNlVG9CZUFkZGVkKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG9wZW5Xb3Jrc3BhY2VzLFxuICAgICAgICB3b3Jrc3BhY2VXaW5kb3dTdGF0ZSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBvcGVuV29ya3NwYWNlcyA9IHN0b3JlLmdldFN0YXRlKCkub3BlbldvcmtzcGFjZXM7XG4gIGNvbnN0IHdvcmtzcGFjZUluZGV4SW5PcGVuV29ya3NwYWNlcyA9IG9wZW5Xb3Jrc3BhY2VzLmZpbmRJbmRleCgodykgPT4gdy5uYW1lID09PSBuYW1lKTtcbiAgY29uc3QgaXNXb3Jrc3BhY2VBbHJlYWR5T3BlbiA9IHdvcmtzcGFjZUluZGV4SW5PcGVuV29ya3NwYWNlcyA+PSAwO1xuICBjb25zdCBvcGVuZWRXb3Jrc3BhY2VXaXRoU2FtZVR5cGUgPSBvcGVuV29ya3NwYWNlcy5maW5kKCh3KSA9PiB3LnR5cGUgPT0gbmV3V29ya3NwYWNlLnR5cGUpO1xuXG4gIGlmIChvcGVuV29ya3NwYWNlcy5sZW5ndGggPT09IDApIHtcbiAgICB1cGRhdGVTdG9yZVdpdGhOZXdXb3Jrc3BhY2UobmV3V29ya3NwYWNlKTtcbiAgfSBlbHNlIGlmICghb3BlbldvcmtzcGFjZXNbMF0uY2FuSGlkZSAmJiB3b3Jrc3BhY2VJbmRleEluT3BlbldvcmtzcGFjZXMgIT09IDApIHtcbiAgICBwcm9tcHRCZWZvcmVMYXVuY2hpbmdXb3Jrc3BhY2Uob3BlbldvcmtzcGFjZXNbMF0sIHtcbiAgICAgIG5hbWUsXG4gICAgICBhZGRpdGlvbmFsUHJvcHMsXG4gICAgfSk7XG4gIH0gZWxzZSBpZiAoaXNXb3Jrc3BhY2VBbHJlYWR5T3Blbikge1xuICAgIGNvbnN0IG9wZW5Xb3Jrc3BhY2UgPSBvcGVuV29ya3NwYWNlc1t3b3Jrc3BhY2VJbmRleEluT3BlbldvcmtzcGFjZXNdO1xuICAgIC8vIE9ubHkgdXBkYXRlIHRoZSB0aXRsZSBpZiBpdCBoYXNuJ3QgYmVlbiBzZXQgYnkgYHNldFRpdGxlYFxuICAgIGlmIChvcGVuV29ya3NwYWNlLnRpdGxlID09PSBnZXRXb3Jrc3BhY2VUaXRsZShvcGVuV29ya3NwYWNlLCBvcGVuV29ya3NwYWNlLmFkZGl0aW9uYWxQcm9wcykpIHtcbiAgICAgIG9wZW5Xb3Jrc3BhY2UudGl0bGUgPSBnZXRXb3Jrc3BhY2VUaXRsZShuZXdXb3Jrc3BhY2UsIG5ld1dvcmtzcGFjZS5hZGRpdGlvbmFsUHJvcHMpO1xuICAgIH1cbiAgICBvcGVuV29ya3NwYWNlLmFkZGl0aW9uYWxQcm9wcyA9IG5ld1dvcmtzcGFjZS5hZGRpdGlvbmFsUHJvcHM7XG4gICAgY29uc3QgcmVzdE9mVGhlV29ya3NwYWNlcyA9IG9wZW5Xb3Jrc3BhY2VzLmZpbHRlcigodykgPT4gdy5uYW1lICE9IG5hbWUpO1xuICAgIHVwZGF0ZVN0b3JlV2l0aE5ld1dvcmtzcGFjZShvcGVuV29ya3NwYWNlc1t3b3Jrc3BhY2VJbmRleEluT3BlbldvcmtzcGFjZXNdLCByZXN0T2ZUaGVXb3Jrc3BhY2VzKTtcbiAgfSBlbHNlIGlmIChvcGVuZWRXb3Jrc3BhY2VXaXRoU2FtZVR5cGUpIHtcbiAgICBjb25zdCByZXN0T2ZUaGVXb3Jrc3BhY2VzID0gc3RvcmUuZ2V0U3RhdGUoKS5vcGVuV29ya3NwYWNlcy5maWx0ZXIoKHcpID0+IHcudHlwZSAhPSBuZXdXb3Jrc3BhY2UudHlwZSk7XG4gICAgdXBkYXRlU3RvcmVXaXRoTmV3V29ya3NwYWNlKG9wZW5lZFdvcmtzcGFjZVdpdGhTYW1lVHlwZSwgcmVzdE9mVGhlV29ya3NwYWNlcyk7XG4gICAgcHJvbXB0QmVmb3JlTGF1bmNoaW5nV29ya3NwYWNlKG9wZW5lZFdvcmtzcGFjZVdpdGhTYW1lVHlwZSwge1xuICAgICAgbmFtZSxcbiAgICAgIGFkZGl0aW9uYWxQcm9wcyxcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB1cGRhdGVTdG9yZVdpdGhOZXdXb3Jrc3BhY2UobmV3V29ya3NwYWNlKTtcbiAgfVxufVxuXG4vKipcbiAqIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIG5hdmlnYXRlIHRvIGEgbmV3IHBhZ2UgYW5kIGxhdW5jaCBhIHdvcmtzcGFjZSBvbiB0aGF0IHBhZ2UuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMudGFyZ2V0VXJsOiBUaGUgVVJMIHRvIG5hdmlnYXRlIHRvLiBXaWxsIGJlIHBhc3NlZCB0byBbW25hdmlnYXRlXV0uXG4gKiBAcGFyYW0gb3B0aW9ucy5jb250ZXh0S2V5OiBUaGUgY29udGV4dCBrZXkgdXNlZCBieSB0aGUgdGFyZ2V0IHBhZ2UuXG4gKiBAcGFyYW0gb3B0aW9ucy53b3Jrc3BhY2VOYW1lOiBUaGUgbmFtZSBvZiB0aGUgd29ya3NwYWNlIHRvIGxhdW5jaC5cbiAqIEBwYXJhbSBvcHRpb25zLmFkZGl0aW9uYWxQcm9wczogQWRkaXRpb25hbCBwcm9wcyB0byBwYXNzIHRvIHRoZSB3b3Jrc3BhY2UgY29tcG9uZW50IGJlaW5nIGxhdW5jaGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmF2aWdhdGVBbmRMYXVuY2hXb3Jrc3BhY2Uoe1xuICB0YXJnZXRVcmwsXG4gIGNvbnRleHRLZXksXG4gIHdvcmtzcGFjZU5hbWUsXG4gIGFkZGl0aW9uYWxQcm9wcyxcbn06IHtcbiAgdGFyZ2V0VXJsOiBzdHJpbmc7XG4gIGNvbnRleHRLZXk6IHN0cmluZztcbiAgd29ya3NwYWNlTmFtZTogc3RyaW5nO1xuICBhZGRpdGlvbmFsUHJvcHM/OiBvYmplY3Q7XG59KSB7XG4gIGNoYW5nZVdvcmtzcGFjZUNvbnRleHQoY29udGV4dEtleSk7XG4gIGxhdW5jaFdvcmtzcGFjZSh3b3Jrc3BhY2VOYW1lLCBhZGRpdGlvbmFsUHJvcHMpO1xuICBuYXZpZ2F0ZSh7IHRvOiB0YXJnZXRVcmwgfSk7XG59XG5cbmNvbnN0IHByb21wdEJlZm9yZUNsb3NpbmdGY25zID0ge307XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9tcHRCZWZvcmVDbG9zaW5nKHdvcmtzcGFjZU5hbWU6IHN0cmluZywgdGVzdEZjbjogKCkgPT4gYm9vbGVhbikge1xuICBwcm9tcHRCZWZvcmVDbG9zaW5nRmNuc1t3b3Jrc3BhY2VOYW1lXSA9IHRlc3RGY247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9tcHRCZWZvcmVDbG9zaW5nRmNuKHdvcmtzcGFjZU5hbWU6IHN0cmluZykge1xuICByZXR1cm4gcHJvbXB0QmVmb3JlQ2xvc2luZ0ZjbnNbd29ya3NwYWNlTmFtZV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYW5jZWxQcm9tcHQoKSB7XG4gIGNvbnN0IHN0b3JlID0gZ2V0V29ya3NwYWNlU3RvcmUoKTtcbiAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICBzdG9yZS5zZXRTdGF0ZSh7IC4uLnN0YXRlLCBwcm9tcHQ6IG51bGwgfSk7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBDbG9zZVdvcmtzcGFjZU9wdGlvbnMgPSB7XG4gIGlnbm9yZUNoYW5nZXM6IGZhbHNlLFxuICBvbldvcmtzcGFjZUNsb3NlOiAoKSA9PiB7fSxcbiAgY2xvc2VXb3Jrc3BhY2VHcm91cDogdHJ1ZSxcbn07XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gY2xvc2UgYW4gb3BlbmVkIHdvcmtzcGFjZVxuICogQHBhcmFtIG5hbWUgV29ya3NwYWNlIHJlZ2lzdHJhdGlvbiBuYW1lXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIHRvIGNsb3NlIHdvcmtzcGFjZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VXb3Jrc3BhY2UobmFtZTogc3RyaW5nLCBvcHRpb25zOiBDbG9zZVdvcmtzcGFjZU9wdGlvbnMgPSB7fSk6IGJvb2xlYW4ge1xuICBvcHRpb25zID0geyAuLi5kZWZhdWx0T3B0aW9ucywgLi4ub3B0aW9ucyB9O1xuICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG5cbiAgY29uc3QgdXBkYXRlU3RvcmVXaXRoQ2xvc2VkV29ya3NwYWNlID0gKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB3b3Jrc3BhY2VUb0JlQ2xvc2VkID0gc3RhdGUub3BlbldvcmtzcGFjZXMuZmluZCgodykgPT4gdy5uYW1lID09PSBuYW1lKTtcbiAgICBjb25zdCBuZXdPcGVuV29ya3NwYWNlcyA9IHN0YXRlLm9wZW5Xb3Jrc3BhY2VzLmZpbHRlcigodykgPT4gdy5uYW1lICE9IG5hbWUpO1xuXG4gICAgY29uc3Qgd29ya3NwYWNlR3JvdXBOYW1lID0gc3RvcmUuZ2V0U3RhdGUoKS53b3Jrc3BhY2VHcm91cD8ubmFtZTtcblxuICAgIGlmICh3b3Jrc3BhY2VHcm91cE5hbWUgJiYgb3B0aW9ucy5jbG9zZVdvcmtzcGFjZUdyb3VwKSB7XG4gICAgICBjbG9zZVdvcmtzcGFjZUdyb3VwKHdvcmtzcGFjZUdyb3VwTmFtZSk7XG4gICAgfVxuXG4gICAgLy8gZW5zdXJlIGNsb3NlZCB3b3Jrc3BhY2Ugd2lsbCBub3QgcHJvbXB0XG4gICAgcHJvbXB0QmVmb3JlQ2xvc2luZyhuYW1lLCAoKSA9PiBmYWxzZSk7XG4gICAgc3RvcmUuc2V0U3RhdGUoKHByZXYpID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgcHJvbXB0OiBudWxsLFxuICAgICAgb3BlbldvcmtzcGFjZXM6IG5ld09wZW5Xb3Jrc3BhY2VzLFxuICAgICAgd29ya3NwYWNlV2luZG93U3RhdGU6IGdldFVwZGF0ZWRXb3Jrc3BhY2VXaW5kb3dTdGF0ZShuZXdPcGVuV29ya3NwYWNlcz8uWzBdKSxcbiAgICB9KSk7XG5cbiAgICBvcHRpb25zPy5vbldvcmtzcGFjZUNsb3NlPy4oKTtcbiAgfTtcblxuICBpZiAoIWNhbkNsb3NlV29ya3NwYWNlV2l0aG91dFByb21wdGluZyhuYW1lLCBvcHRpb25zPy5pZ25vcmVDaGFuZ2VzKSkge1xuICAgIGNvbnN0IGN1cnJlbnROYW1lID0gZ2V0V29ya3NwYWNlUmVnaXN0cmF0aW9uKG5hbWUpLnRpdGxlID8/IG5hbWU7XG4gICAgc2hvd1dvcmtzcGFjZVByb21wdHMoJ2Nsb3Npbmctd29ya3NwYWNlJywgdXBkYXRlU3RvcmVXaXRoQ2xvc2VkV29ya3NwYWNlLCBjdXJyZW50TmFtZSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIHVwZGF0ZVN0b3JlV2l0aENsb3NlZFdvcmtzcGFjZSgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHNldCBvZiB3b3Jrc3BhY2VzIGlzIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBwYWdlLiBUaGlzIGZ1bmN0aW9uXG4gKiBzaG91bGQgYmUgdXNlZCB3aGVuIHRyYW5zaXRpb25pbmcgdG8gYSBuZXcgcGFnZS4gSWYgdGhlIGN1cnJlbnRcbiAqIHdvcmtzcGFjZSBkYXRhIGlzIGZvciBhIGRpZmZlcmVudCBwYWdlLCB0aGUgd29ya3NwYWNlIHN0YXRlIGlzIGNsZWFyZWQuXG4gKlxuICogVGhpcyBpcyBjYWxsZWQgYnkgdGhlIHdvcmtzcGFjZSBjb21wb25lbnRzIHdoZW4gdGhleSBtb3VudC5cbiAqIEBpbnRlcm5hbFxuICpcbiAqIEBwYXJhbSBjb250ZXh0S2V5IEFuIGFyYml0cmFyeSBrZXkgdG8gaWRlbnRpZnkgdGhlIGN1cnJlbnQgcGFnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hhbmdlV29ya3NwYWNlQ29udGV4dChjb250ZXh0S2V5OiBzdHJpbmcgfCBudWxsKSB7XG4gIGNvbnN0IHN0b3JlID0gZ2V0V29ya3NwYWNlU3RvcmUoKTtcbiAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICBpZiAoc3RhdGUuY29udGV4dCAhPSBjb250ZXh0S2V5KSB7XG4gICAgc3RvcmUuc2V0U3RhdGUoeyBjb250ZXh0OiBjb250ZXh0S2V5LCBvcGVuV29ya3NwYWNlczogW10sIHByb21wdDogbnVsbCB9KTtcbiAgfVxufVxuXG5jb25zdCBpbml0aWFsU3RhdGU6IFdvcmtzcGFjZVN0b3JlU3RhdGUgPSB7XG4gIGNvbnRleHQ6ICcnLFxuICBvcGVuV29ya3NwYWNlczogW10sXG4gIHByb21wdDogbnVsbCxcbiAgd29ya3NwYWNlV2luZG93U3RhdGU6ICdub3JtYWwnLFxuICB3b3Jrc3BhY2VHcm91cDogdW5kZWZpbmVkLFxufTtcblxuZXhwb3J0IGNvbnN0IHdvcmtzcGFjZVN0b3JlID0gY3JlYXRlR2xvYmFsU3RvcmUoJ3dvcmtzcGFjZScsIGluaXRpYWxTdGF0ZSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VTdG9yZSgpIHtcbiAgcmV0dXJuIHdvcmtzcGFjZVN0b3JlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlV29ya3NwYWNlV2luZG93U3RhdGUodmFsdWU6IFdvcmtzcGFjZVdpbmRvd1N0YXRlKSB7XG4gIGNvbnN0IHN0b3JlID0gZ2V0V29ya3NwYWNlU3RvcmUoKTtcbiAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICBzdG9yZS5zZXRTdGF0ZSh7IC4uLnN0YXRlLCB3b3Jrc3BhY2VXaW5kb3dTdGF0ZTogdmFsdWUgfSk7XG59XG5cbmZ1bmN0aW9uIGdldFVwZGF0ZWRXb3Jrc3BhY2VXaW5kb3dTdGF0ZSh3b3Jrc3BhY2VBdFRvcDogT3BlbldvcmtzcGFjZSkge1xuICByZXR1cm4gd29ya3NwYWNlQXRUb3A/LnByZWZlcnJlZFdpbmRvd1NpemUgPz8gJ25vcm1hbCc7XG59XG5leHBvcnQgZnVuY3Rpb24gY2xvc2VBbGxXb3Jrc3BhY2VzKFxuICBvbkNsb3NpbmdXb3Jrc3BhY2VzOiAoKSA9PiB2b2lkID0gKCkgPT4ge30sXG4gIGZpbHRlcjogKHdvcmtzcGFjZTogT3BlbldvcmtzcGFjZSkgPT4gYm9vbGVhbiA9ICgpID0+IHRydWUsXG4pIHtcbiAgY29uc3Qgc3RvcmUgPSBnZXRXb3Jrc3BhY2VTdG9yZSgpO1xuXG4gIGNvbnN0IGNhbkNsb3NlQWxsV29ya3NwYWNlcyA9IHN0b3JlXG4gICAgLmdldFN0YXRlKClcbiAgICAub3BlbldvcmtzcGFjZXMuZmlsdGVyKGZpbHRlcilcbiAgICAuZXZlcnkoKHsgbmFtZSB9KSA9PiB7XG4gICAgICByZXR1cm4gY2FuQ2xvc2VXb3Jrc3BhY2VXaXRob3V0UHJvbXB0aW5nKG5hbWUpO1xuICAgIH0pO1xuXG4gIGNvbnN0IHVwZGF0ZVdvcmtzcGFjZVN0b3JlID0gKCkgPT4ge1xuICAgIHJlc2V0V29ya3NwYWNlU3RvcmUoKTtcbiAgICBvbkNsb3NpbmdXb3Jrc3BhY2VzPy4oKTtcbiAgfTtcblxuICBpZiAoIWNhbkNsb3NlQWxsV29ya3NwYWNlcykge1xuICAgIHNob3dXb3Jrc3BhY2VQcm9tcHRzKCdjbG9zaW5nLWFsbC13b3Jrc3BhY2VzJywgdXBkYXRlV29ya3NwYWNlU3RvcmUpO1xuICB9IGVsc2Uge1xuICAgIHVwZGF0ZVdvcmtzcGFjZVN0b3JlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VzSW5mbyB7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbiAgcHJvbXB0OiBQcm9tcHQgfCBudWxsO1xuICB3b3Jrc3BhY2VXaW5kb3dTdGF0ZTogV29ya3NwYWNlV2luZG93U3RhdGU7XG4gIHdvcmtzcGFjZXM6IEFycmF5PE9wZW5Xb3Jrc3BhY2U+O1xuICB3b3Jrc3BhY2VHcm91cD86IFdvcmtzcGFjZVN0b3JlU3RhdGVbJ3dvcmtzcGFjZUdyb3VwJ107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VXb3Jrc3BhY2VzKCk6IFdvcmtzcGFjZXNJbmZvIHtcbiAgY29uc3QgeyB3b3Jrc3BhY2VXaW5kb3dTdGF0ZSwgb3BlbldvcmtzcGFjZXMsIHByb21wdCwgd29ya3NwYWNlR3JvdXAgfSA9IHVzZVN0b3JlKHdvcmtzcGFjZVN0b3JlKTtcbiAgY29uc3QgbWVtb2lzZWRSZXN1bHRzOiBXb3Jrc3BhY2VzSW5mbyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBhY3RpdmU6IG9wZW5Xb3Jrc3BhY2VzLmxlbmd0aCA+IDAsXG4gICAgICBwcm9tcHQsXG4gICAgICB3b3Jrc3BhY2VXaW5kb3dTdGF0ZSxcbiAgICAgIHdvcmtzcGFjZXM6IG9wZW5Xb3Jrc3BhY2VzLFxuICAgICAgd29ya3NwYWNlR3JvdXAsXG4gICAgfTtcbiAgfSwgW29wZW5Xb3Jrc3BhY2VzLCB3b3Jrc3BhY2VXaW5kb3dTdGF0ZSwgcHJvbXB0LCB3b3Jrc3BhY2VHcm91cF0pO1xuICByZXR1cm4gbWVtb2lzZWRSZXN1bHRzO1xufVxuXG50eXBlIFByb21wdFR5cGUgPSAnY2xvc2luZy13b3Jrc3BhY2UnIHwgJ2Nsb3NpbmctYWxsLXdvcmtzcGFjZXMnIHwgJ2Nsb3Npbmctd29ya3NwYWNlLWxhdW5jaGluZy1uZXctd29ya3NwYWNlJztcblxuLyoqXG4gKiBTZXRzIHRoZSBjdXJyZW50IHByb21wdCBhY2NvcmRpbmcgdG8gdGhlIHByb21wdCB0eXBlLlxuICogQHBhcmFtIHByb21wdFR5cGUgRGV0ZXJtaW5lcyB0aGUgdGV4dCBhbmQgYmVoYXZpb3Igb2YgdGhlIHByb21wdFxuICogQHBhcmFtIG9uQ29uZmlybWF0aW9uIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBhZnRlciB0aGUgdXNlciBjb25maXJtcyB0byBjbG9zZSB0aGUgd29ya3NwYWNlXG4gKiBAcGFyYW0gd29ya3NwYWNlVGl0bGUgV29ya3NwYWNlIHRpdGxlIHRvIGJlIHNob3duIGluIHRoZSBwcm9tcHRcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaG93V29ya3NwYWNlUHJvbXB0cyhcbiAgcHJvbXB0VHlwZTogUHJvbXB0VHlwZSxcbiAgb25Db25maXJtYXRpb246ICgpID0+IHZvaWQgPSAoKSA9PiB7fSxcbiAgd29ya3NwYWNlVGl0bGU6IHN0cmluZyA9ICcnLFxuKSB7XG4gIGNvbnN0IHN0b3JlID0gZ2V0V29ya3NwYWNlU3RvcmUoKTtcblxuICBsZXQgcHJvbXB0OiBQcm9tcHQ7XG4gIHN3aXRjaCAocHJvbXB0VHlwZSkge1xuICAgIGNhc2UgJ2Nsb3Npbmctd29ya3NwYWNlJzoge1xuICAgICAgcHJvbXB0ID0ge1xuICAgICAgICB0aXRsZTogZ2V0Q29yZVRyYW5zbGF0aW9uKCd1bnNhdmVkQ2hhbmdlc1RpdGxlVGV4dCcsICdVbnNhdmVkIGNoYW5nZXMnKSxcbiAgICAgICAgYm9keTogZ2V0Q29yZVRyYW5zbGF0aW9uKFxuICAgICAgICAgICd1bnNhdmVkQ2hhbmdlc0luT3BlbmVkV29ya3NwYWNlJyxcbiAgICAgICAgICBgWW91IG1heSBoYXZlIHVuc2F2ZWQgY2hhbmdlcyBpbiB0aGUgb3BlbmVkIHdvcmtzcGFjZS4gRG8geW91IHdhbnQgdG8gZGlzY2FyZCB0aGVzZSBjaGFuZ2VzP2AsXG4gICAgICAgICksXG4gICAgICAgIG9uQ29uZmlybTogKCkgPT4ge1xuICAgICAgICAgIG9uQ29uZmlybWF0aW9uPy4oKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmlybVRleHQ6IGdldENvcmVUcmFuc2xhdGlvbignZGlzY2FyZCcsICdEaXNjYXJkJyksXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2FzZSAnY2xvc2luZy1hbGwtd29ya3NwYWNlcyc6IHtcbiAgICAgIGNvbnN0IHdvcmtzcGFjZXNOb3RDbG9zZWQgPSBzdG9yZVxuICAgICAgICAuZ2V0U3RhdGUoKVxuICAgICAgICAub3BlbldvcmtzcGFjZXMuZmlsdGVyKCh7IG5hbWUgfSkgPT4gIWNhbkNsb3NlV29ya3NwYWNlV2l0aG91dFByb21wdGluZyhuYW1lKSlcbiAgICAgICAgLm1hcCgoeyB0aXRsZSB9LCBpbmR4KSA9PiBgJHtpbmR4ICsgMX0uICR7dGl0bGV9YCk7XG5cbiAgICAgIHByb21wdCA9IHtcbiAgICAgICAgdGl0bGU6IGdldENvcmVUcmFuc2xhdGlvbignY2xvc2luZ0FsbFdvcmtzcGFjZXNQcm9tcHRUaXRsZScsICdZb3UgaGF2ZSB1bnNhdmVkIGNoYW5nZXMnKSxcbiAgICAgICAgYm9keTogZ2V0Q29yZVRyYW5zbGF0aW9uKFxuICAgICAgICAgICdjbG9zaW5nQWxsV29ya3NwYWNlc1Byb21wdEJvZHknLFxuICAgICAgICAgICdUaGVyZSBtYXkgYmUgdW5zYXZlZCBjaGFuZ2VzIGluIHRoZSBmb2xsb3dpbmcgd29ya3NwYWNlcy4gRG8geW91IHdhbnQgdG8gZGlzY2FyZCBjaGFuZ2VzIGluIHRoZSBmb2xsb3dpbmcgd29ya3NwYWNlcz8ge3t3b3Jrc3BhY2VOYW1lc319JyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB3b3Jrc3BhY2VOYW1lczogd29ya3NwYWNlc05vdENsb3NlZC5qb2luKCcsJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgICAgb25Db25maXJtOiAoKSA9PiB7XG4gICAgICAgICAgb25Db25maXJtYXRpb24/LigpO1xuICAgICAgICB9LFxuICAgICAgICBjb25maXJtVGV4dDogZ2V0Q29yZVRyYW5zbGF0aW9uKCdjbG9zZUFsbE9wZW5lZFdvcmtzcGFjZXMnLCAnRGlzY2FyZCBjaGFuZ2VzIGluIHt7Y291bnR9fSB3b3Jrc3BhY2VzJywge1xuICAgICAgICAgIGNvdW50OiB3b3Jrc3BhY2VzTm90Q2xvc2VkLmxlbmd0aCxcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgJ2Nsb3Npbmctd29ya3NwYWNlLWxhdW5jaGluZy1uZXctd29ya3NwYWNlJzoge1xuICAgICAgcHJvbXB0ID0ge1xuICAgICAgICB0aXRsZTogZ2V0Q29yZVRyYW5zbGF0aW9uKCd1bnNhdmVkQ2hhbmdlc1RpdGxlVGV4dCcsICdVbnNhdmVkIGNoYW5nZXMnKSxcbiAgICAgICAgYm9keTogZ2V0Q29yZVRyYW5zbGF0aW9uKFxuICAgICAgICAgICd1bnNhdmVkQ2hhbmdlc0luV29ya3NwYWNlJyxcbiAgICAgICAgICAnVGhlcmUgbWF5IGJlIHVuc2F2ZWQgY2hhbmdlcyBpbiBcInt7d29ya3NwYWNlTmFtZX19XCIuIFBsZWFzZSBzYXZlIHRoZW0gYmVmb3JlIG9wZW5pbmcgYW5vdGhlciB3b3Jrc3BhY2UuJyxcbiAgICAgICAgICB7IHdvcmtzcGFjZU5hbWU6IHdvcmtzcGFjZVRpdGxlIH0sXG4gICAgICAgICksXG4gICAgICAgIG9uQ29uZmlybTogKCkgPT4ge1xuICAgICAgICAgIHN0b3JlLnNldFN0YXRlKChzdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgcHJvbXB0OiBudWxsLFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgICBvbkNvbmZpcm1hdGlvbj8uKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZpcm1UZXh0OiBnZXRDb3JlVHJhbnNsYXRpb24oJ29wZW5Bbnl3YXknLCAnT3BlbiBhbnl3YXknKSxcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFdvcmtzcGFjZSBzeXN0ZW0gdHJ5aW5nIHRvIG9wZW4gdW5rbm93biBwcm9tcHQgdHlwZSBcIiR7cHJvbXB0VHlwZX1cIiBpbiBmdW5jdGlvbiBcInNob3dXb3Jrc3BhY2VQcm9tcHRzXCJgLFxuICAgICAgKTtcbiAgICAgIG9uQ29uZmlybWF0aW9uPy4oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgc3RvcmUuc2V0U3RhdGUoKHN0YXRlKSA9PiAoeyAuLi5zdGF0ZSwgcHJvbXB0IH0pKTtcbn1cblxuZnVuY3Rpb24gZ2V0V29ya3NwYWNlVGl0bGUod29ya3NwYWNlOiBXb3Jrc3BhY2VSZWdpc3RyYXRpb24sIGFkZGl0aW9uYWxQcm9wcz86IG9iamVjdCkge1xuICByZXR1cm4gYWRkaXRpb25hbFByb3BzPy5bJ3dvcmtzcGFjZVRpdGxlJ10gPz8gd29ya3NwYWNlLnRpdGxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRXb3Jrc3BhY2VTdG9yZSgpIHtcbiAgZ2V0V29ya3NwYWNlU3RvcmUoKS5zZXRTdGF0ZShpbml0aWFsU3RhdGUpO1xufVxuXG4vKipcbiAqIFRoZSB3b3Jrc3BhY2UgZ3JvdXAgc3RvcmUgaXMgYSBzdG9yZSB0aGF0IGlzIHNwZWNpZmljIHRvIHRoZSB3b3Jrc3BhY2UgZ3JvdXAuXG4gKiBJZiB0aGUgd29ya3NwYWNlIGhhcyBpdHMgb3duIHNpZGViYXIsIHRoZSBzdG9yZSB3aWxsIGJlIGNyZWF0ZWQuXG4gKiBUaGlzIHN0b3JlIGNhbiBiZSB1c2VkIHRvIHN0b3JlIGRhdGEgdGhhdCBpcyBzcGVjaWZpYyB0byB0aGUgd29ya3NwYWNlIGdyb3VwLlxuICogVGhlIHN0b3JlIHdpbGwgYmUgc2FtZSBmb3IgYWxsIHRoZSB3b3Jrc3BhY2VzIHdpdGggc2FtZSBncm91cCBuYW1lLlxuICpcbiAqIEZvciB3b3Jrc3BhY2VzIGxhdW5jaGVkIHdpdGhvdXQgYSBncm91cCwgdGhlIHN0b3JlIHdpbGwgYmUgdW5kZWZpbmVkLlxuICpcbiAqIFRoZSBzdG9yZSB3aWxsIGJlIGNsZWFyZWQgd2hlbiBhbGwgdGhlIHdvcmtzcGFjZXMgd2l0aCB0aGUgc3RvcmUncyBncm91cCBuYW1lIGFyZSBjbG9zZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VHcm91cFN0b3JlKFxuICB3b3Jrc3BhY2VHcm91cE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgYWRkaXRpb25hbFByb3BzOiBvYmplY3QgPSB7fSxcbik6IFN0b3JlQXBpPG9iamVjdD4gfCB1bmRlZmluZWQge1xuICBpZiAoIXdvcmtzcGFjZUdyb3VwTmFtZSB8fCB3b3Jrc3BhY2VHcm91cE5hbWUgPT09ICdkZWZhdWx0Jykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3Qgc3RvcmUgPSBnZXRHbG9iYWxTdG9yZTxvYmplY3Q+KHdvcmtzcGFjZUdyb3VwTmFtZSwge30pO1xuICBpZiAoYWRkaXRpb25hbFByb3BzKSB7XG4gICAgc3RvcmUuc2V0U3RhdGUoKHByZXYpID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgLi4uYWRkaXRpb25hbFByb3BzLFxuICAgIH0pKTtcbiAgfVxuICByZXR1cm4gc3RvcmU7XG59XG4iXSwibmFtZXMiOlsidXNlTWVtbyIsImdldFdvcmtzcGFjZUdyb3VwUmVnaXN0cmF0aW9uIiwiZ2V0V29ya3NwYWNlUmVnaXN0cmF0aW9uIiwibmF2aWdhdGUiLCJnZXRHbG9iYWxTdG9yZSIsImNyZWF0ZUdsb2JhbFN0b3JlIiwiZ2V0Q29yZVRyYW5zbGF0aW9uIiwidXNlU3RvcmUiLCJjYW5DbG9zZVdvcmtzcGFjZVdpdGhvdXRQcm9tcHRpbmciLCJuYW1lIiwiaWdub3JlQ2hhbmdlcyIsInByb21wdEJlZm9yZUZuIiwiZ2V0UHJvbXB0QmVmb3JlQ2xvc2luZ0ZjbiIsImNsb3NlV29ya3NwYWNlR3JvdXAiLCJncm91cE5hbWUiLCJvbldvcmtzcGFjZUNsb3NldXAiLCJzdG9yZSIsImdldFdvcmtzcGFjZVN0b3JlIiwiY3VycmVudFdvcmtzcGFjZUdyb3VwIiwiZ2V0U3RhdGUiLCJ3b3Jrc3BhY2VHcm91cCIsImN1cnJlbnRHcm91cE5hbWUiLCJmaWx0ZXIiLCJ3b3Jrc3BhY2UiLCJjbG9zZUFsbFdvcmtzcGFjZXMiLCJ3b3Jrc3BhY2VHcm91cFN0b3JlIiwiZ2V0V29ya3NwYWNlR3JvdXBTdG9yZSIsInNldFN0YXRlIiwidW5zdWJzY3JpYmUiLCJzdWJzY3JpYmUiLCJjbGVhbnVwIiwicHJldiIsInVuZGVmaW5lZCIsImxhdW5jaFdvcmtzcGFjZUdyb3VwIiwiYXJncyIsIndvcmtzcGFjZUdyb3VwUmVnaXN0cmF0aW9uIiwic3RhdGUiLCJvbldvcmtzcGFjZUdyb3VwTGF1bmNoIiwid29ya3NwYWNlR3JvdXBDbGVhbnVwIiwid29ya3NwYWNlVG9MYXVuY2giLCJvcGVuV29ya3NwYWNlcyIsImxlbmd0aCIsIm1lbWJlcnMiLCJsYXVuY2hXb3Jrc3BhY2UiLCJhZGRpdGlvbmFsUHJvcHMiLCJwcm9tcHRCZWZvcmVMYXVuY2hpbmdXb3Jrc3BhY2UiLCJuZXdXb3Jrc3BhY2VEZXRhaWxzIiwibmV3V29ya3NwYWNlUmVnaXN0cmF0aW9uIiwicHJvY2VlZCIsImNsb3NlV29ya3NwYWNlIiwib25Xb3Jrc3BhY2VDbG9zZSIsInNob3dXb3Jrc3BhY2VQcm9tcHRzIiwidGl0bGUiLCJpbmNsdWRlcyIsIm5ld1dvcmtzcGFjZSIsImdldFdvcmtzcGFjZVRpdGxlIiwib3B0aW9ucyIsImNsb3NlV29ya3NwYWNlV2l0aFNhdmVkQ2hhbmdlcyIsInByb21wdEJlZm9yZUNsb3NpbmciLCJ0ZXN0RmNuIiwic2V0VGl0bGUiLCJ0aXRsZU5vZGUiLCJtYXAiLCJ3IiwidXBkYXRlU3RvcmVXaXRoTmV3V29ya3NwYWNlIiwid29ya3NwYWNlVG9CZUFkZGVkIiwicmVzdE9mVGhlV29ya3NwYWNlcyIsIndvcmtzcGFjZVdpbmRvd1N0YXRlIiwiZ2V0VXBkYXRlZFdvcmtzcGFjZVdpbmRvd1N0YXRlIiwid29ya3NwYWNlSW5kZXhJbk9wZW5Xb3Jrc3BhY2VzIiwiZmluZEluZGV4IiwiaXNXb3Jrc3BhY2VBbHJlYWR5T3BlbiIsIm9wZW5lZFdvcmtzcGFjZVdpdGhTYW1lVHlwZSIsImZpbmQiLCJ0eXBlIiwiY2FuSGlkZSIsIm9wZW5Xb3Jrc3BhY2UiLCJuYXZpZ2F0ZUFuZExhdW5jaFdvcmtzcGFjZSIsInRhcmdldFVybCIsImNvbnRleHRLZXkiLCJ3b3Jrc3BhY2VOYW1lIiwiY2hhbmdlV29ya3NwYWNlQ29udGV4dCIsInRvIiwicHJvbXB0QmVmb3JlQ2xvc2luZ0ZjbnMiLCJjYW5jZWxQcm9tcHQiLCJwcm9tcHQiLCJkZWZhdWx0T3B0aW9ucyIsInVwZGF0ZVN0b3JlV2l0aENsb3NlZFdvcmtzcGFjZSIsIndvcmtzcGFjZVRvQmVDbG9zZWQiLCJuZXdPcGVuV29ya3NwYWNlcyIsIndvcmtzcGFjZUdyb3VwTmFtZSIsImN1cnJlbnROYW1lIiwiY29udGV4dCIsImluaXRpYWxTdGF0ZSIsIndvcmtzcGFjZVN0b3JlIiwidXBkYXRlV29ya3NwYWNlV2luZG93U3RhdGUiLCJ2YWx1ZSIsIndvcmtzcGFjZUF0VG9wIiwicHJlZmVycmVkV2luZG93U2l6ZSIsIm9uQ2xvc2luZ1dvcmtzcGFjZXMiLCJjYW5DbG9zZUFsbFdvcmtzcGFjZXMiLCJldmVyeSIsInVwZGF0ZVdvcmtzcGFjZVN0b3JlIiwicmVzZXRXb3Jrc3BhY2VTdG9yZSIsInVzZVdvcmtzcGFjZXMiLCJtZW1vaXNlZFJlc3VsdHMiLCJhY3RpdmUiLCJ3b3Jrc3BhY2VzIiwicHJvbXB0VHlwZSIsIm9uQ29uZmlybWF0aW9uIiwid29ya3NwYWNlVGl0bGUiLCJib2R5Iiwib25Db25maXJtIiwiY29uZmlybVRleHQiLCJ3b3Jrc3BhY2VzTm90Q2xvc2VkIiwiaW5keCIsIndvcmtzcGFjZU5hbWVzIiwiam9pbiIsImNvdW50IiwiY29uc29sZSIsImVycm9yIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/src/workspaces/workspaces.ts\n");
2149
2149
 
2150
2150
  /***/ }),
2151
2151