@openmrs/esm-app-shell 4.4.1-pre.693 → 4.4.2-pre.712

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 (100) hide show
  1. package/.turbo/turbo-build.log +106 -104
  2. package/dist/405dbd1a91a7bbc1.js +1 -0
  3. package/dist/{b479a07e6bd61faf.js.map → 405dbd1a91a7bbc1.js.map} +1 -1
  4. package/dist/index.html +1 -1
  5. package/dist/{openmrs.80f8f2e3e01a3925.js → openmrs.332a35f2802b80da.js} +2 -2
  6. package/dist/{openmrs.80f8f2e3e01a3925.js.map → openmrs.332a35f2802b80da.js.map} +1 -1
  7. package/dist/service-worker.js +1 -1
  8. package/lib/esm-devtools-app/988.js +1 -1
  9. package/lib/esm-devtools-app/main.js +1 -1
  10. package/lib/esm-devtools-app/openmrs-esm-devtools-app.js +1 -1
  11. package/lib/esm-devtools-app/openmrs-esm-devtools-app.js.buildmanifest.json +3 -3
  12. package/lib/esm-devtools-app/openmrs-esm-devtools-app.old +1 -1
  13. package/lib/esm-implementer-tools-app/807.js +1 -1
  14. package/lib/esm-implementer-tools-app/main.js +1 -1
  15. package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js +1 -1
  16. package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js.buildmanifest.json +3 -3
  17. package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.old +1 -1
  18. package/lib/esm-login-app/337.js +1 -1
  19. package/lib/esm-login-app/main.js +1 -1
  20. package/lib/esm-login-app/openmrs-esm-login-app.js +1 -1
  21. package/lib/esm-login-app/openmrs-esm-login-app.js.buildmanifest.json +3 -3
  22. package/lib/esm-login-app/openmrs-esm-login-app.old +1 -1
  23. package/lib/esm-offline-tools-app/1584c81d564cacde.svg +8 -0
  24. package/lib/esm-offline-tools-app/206.js +1 -0
  25. package/lib/esm-offline-tools-app/206.js.map +1 -0
  26. package/lib/esm-offline-tools-app/263.js +1 -0
  27. package/lib/esm-offline-tools-app/263.js.map +1 -0
  28. package/lib/esm-offline-tools-app/264.js +1 -0
  29. package/lib/esm-offline-tools-app/264.js.map +1 -0
  30. package/lib/esm-offline-tools-app/281.js +1 -0
  31. package/lib/esm-offline-tools-app/281.js.map +1 -0
  32. package/lib/esm-offline-tools-app/290.js +1 -0
  33. package/lib/esm-offline-tools-app/290.js.map +1 -0
  34. package/lib/esm-offline-tools-app/316.js +1 -0
  35. package/lib/esm-offline-tools-app/316.js.map +1 -0
  36. package/lib/esm-offline-tools-app/391.js +1 -0
  37. package/lib/esm-offline-tools-app/391.js.map +1 -0
  38. package/lib/esm-offline-tools-app/412.js +1 -0
  39. package/lib/esm-offline-tools-app/412.js.map +1 -0
  40. package/lib/esm-offline-tools-app/47.js +1 -0
  41. package/lib/esm-offline-tools-app/47.js.map +1 -0
  42. package/lib/esm-offline-tools-app/501.js +1 -0
  43. package/lib/esm-offline-tools-app/501.js.map +1 -0
  44. package/lib/esm-offline-tools-app/526.js +1 -0
  45. package/lib/esm-offline-tools-app/526.js.map +1 -0
  46. package/lib/esm-offline-tools-app/538.js +1 -0
  47. package/lib/esm-offline-tools-app/538.js.map +1 -0
  48. package/lib/esm-offline-tools-app/541.js +1 -0
  49. package/lib/esm-offline-tools-app/541.js.map +1 -0
  50. package/lib/esm-offline-tools-app/574.js +1 -0
  51. package/lib/esm-offline-tools-app/594.js +1 -0
  52. package/lib/esm-offline-tools-app/594.js.map +1 -0
  53. package/lib/esm-offline-tools-app/63.js +2 -0
  54. package/lib/esm-offline-tools-app/63.js.LICENSE.txt +32 -0
  55. package/lib/esm-offline-tools-app/63.js.map +1 -0
  56. package/lib/esm-offline-tools-app/697.js +2 -0
  57. package/lib/esm-offline-tools-app/697.js.LICENSE.txt +9 -0
  58. package/lib/esm-offline-tools-app/697.js.map +1 -0
  59. package/lib/esm-offline-tools-app/733.js +1 -0
  60. package/lib/esm-offline-tools-app/733.js.map +1 -0
  61. package/lib/esm-offline-tools-app/735.js +2 -0
  62. package/lib/esm-offline-tools-app/735.js.LICENSE.txt +9 -0
  63. package/lib/esm-offline-tools-app/735.js.map +1 -0
  64. package/lib/esm-offline-tools-app/752.js +1 -0
  65. package/lib/esm-offline-tools-app/752.js.map +1 -0
  66. package/lib/esm-offline-tools-app/757.js +1 -0
  67. package/lib/esm-offline-tools-app/78.js +1 -0
  68. package/lib/esm-offline-tools-app/78.js.map +1 -0
  69. package/lib/esm-offline-tools-app/788.js +2 -0
  70. package/lib/esm-offline-tools-app/788.js.LICENSE.txt +19 -0
  71. package/lib/esm-offline-tools-app/788.js.map +1 -0
  72. package/lib/esm-offline-tools-app/82.js +2 -0
  73. package/lib/esm-offline-tools-app/82.js.LICENSE.txt +5 -0
  74. package/lib/esm-offline-tools-app/82.js.map +1 -0
  75. package/lib/esm-offline-tools-app/889.js +2 -0
  76. package/lib/esm-offline-tools-app/889.js.LICENSE.txt +3 -0
  77. package/lib/esm-offline-tools-app/889.js.map +1 -0
  78. package/lib/esm-offline-tools-app/937.js +1 -0
  79. package/lib/esm-offline-tools-app/937.js.map +1 -0
  80. package/lib/esm-offline-tools-app/967.js +1 -0
  81. package/lib/esm-offline-tools-app/967.js.map +1 -0
  82. package/lib/esm-offline-tools-app/main.js +2 -0
  83. package/lib/esm-offline-tools-app/main.js.LICENSE.txt +5 -0
  84. package/lib/esm-offline-tools-app/main.js.map +1 -0
  85. package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js +1 -0
  86. package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js.buildmanifest.json +754 -0
  87. package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js.map +1 -0
  88. package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.old +1 -0
  89. package/lib/esm-primary-navigation-app/363.js +1 -1
  90. package/lib/esm-primary-navigation-app/main.js +1 -1
  91. package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js +1 -1
  92. package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js.buildmanifest.json +3 -3
  93. package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.old +1 -1
  94. package/lib/index.html +1 -1
  95. package/lib/openmrs.js +6 -6
  96. package/lib/service-worker.js +1 -1
  97. package/package.json +4 -4
  98. package/src/run.ts +16 -4
  99. package/dist/b479a07e6bd61faf.js +0 -1
  100. /package/dist/{openmrs.80f8f2e3e01a3925.js.LICENSE.txt → openmrs.332a35f2802b80da.js.LICENSE.txt} +0 -0
package/lib/openmrs.js CHANGED
@@ -2601,7 +2601,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2601
2601
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2602
2602
 
2603
2603
  "use strict";
2604
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ClickableTile\": () => (/* binding */ ClickableTile),\n/* harmony export */ \"ExpandableTile\": () => (/* binding */ ExpandableTile),\n/* harmony export */ \"SelectableTile\": () => (/* binding */ SelectableTile),\n/* harmony export */ \"Tile\": () => (/* binding */ Tile),\n/* harmony export */ \"TileAboveTheFoldContent\": () => (/* binding */ TileAboveTheFoldContent),\n/* harmony export */ \"TileBelowTheFoldContent\": () => (/* binding */ TileBelowTheFoldContent)\n/* harmony export */ });\n/* harmony import */ var _virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../_virtual/_rollupPluginBabelHelpers.js */ \"../../../node_modules/@carbon/react/es/_virtual/_rollupPluginBabelHelpers.js\");\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 prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ \"../../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\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 _Link_Link_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Link/Link.js */ \"../../../node_modules/@carbon/react/es/components/Link/Link.js\");\n/* harmony import */ var _carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @carbon/icons-react */ \"../../../node_modules/@carbon/icons-react/es/generated/bucket-2.js\");\n/* harmony import */ var _prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../prop-types/deprecate.js */ \"../../../node_modules/@carbon/react/es/prop-types/deprecate.js\");\n/* harmony import */ var _tools_events_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../tools/events.js */ \"../../../node_modules/@carbon/react/es/tools/events.js\");\n/* harmony import */ var _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../internal/usePrefix.js */ \"../../../node_modules/@carbon/react/es/internal/usePrefix.js\");\n/* harmony import */ var _internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../internal/keyboard/match.js */ \"../../../node_modules/@carbon/react/es/internal/keyboard/match.js\");\n/* harmony import */ var _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../internal/keyboard/keys.js */ \"../../../node_modules/@carbon/react/es/internal/keyboard/keys.js\");\n/**\n * Copyright IBM Corp. 2016, 2022\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */ \n\n\n\n\n\n\n\n\n\n\nvar _CheckboxCheckedFille, _Checkbox, _ChevronDown;\nvar _excluded = [\n \"children\",\n \"className\",\n \"light\"\n], _excluded2 = [\n \"children\",\n \"href\",\n \"className\",\n \"handleClick\",\n \"handleKeyDown\",\n \"onClick\",\n \"onKeyDown\",\n \"clicked\",\n \"light\"\n], _excluded3 = [\n \"children\",\n \"id\",\n \"tabIndex\",\n \"value\",\n \"name\",\n \"title\",\n \"iconDescription\",\n \"className\",\n \"handleClick\",\n \"handleKeyDown\",\n \"onClick\",\n \"onChange\",\n \"onKeyDown\",\n \"light\",\n \"disabled\",\n \"selected\"\n], _excluded4 = [\n \"tabIndex\",\n \"className\",\n \"expanded\",\n \"tileMaxHeight\",\n \"tilePadding\",\n \"handleClick\",\n \"onKeyUp\",\n \"tileCollapsedIconText\",\n \"tileExpandedIconText\",\n \"tileCollapsedLabel\",\n \"tileExpandedLabel\",\n \"onBeforeClick\",\n \"light\"\n];\nvar Tile = /*#__PURE__*/ function(_Component) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(Tile, _Component);\n var _super = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(Tile);\n function Tile() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, Tile);\n return _super.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(Tile, [\n {\n key: \"render\",\n value: function render() {\n var prefix = this.context;\n var _this$props = this.props, children = _this$props.children, className = _this$props.className, light = _this$props.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props, _excluded);\n var tileClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)({}, \"\".concat(prefix, \"--tile--light\"), light), className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n className: tileClasses\n }, rest), children);\n }\n }\n ]);\n return Tile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"defaultProps\", {\n light: false\n});\nvar ClickableTile = /*#__PURE__*/ function(_Component2) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(ClickableTile, _Component2);\n var _super2 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(ClickableTile);\n function ClickableTile() {\n var _this;\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, ClickableTile);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n _this = _super2.call.apply(_super2, [\n this\n ].concat(args));\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"state\", {});\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"handleClick\", function(evt) {\n evt.persist();\n _this.setState({\n clicked: !_this.state.clicked\n }, function() {\n var _this$props$handleCli, _this$props2, _this$props$onClick, _this$props3;\n // TODO: Remove handleClick prop when handleClick is deprecated\n ((_this$props$handleCli = (_this$props2 = _this.props).handleClick) === null || _this$props$handleCli === void 0 ? void 0 : _this$props$handleCli.call(_this$props2, evt)) || ((_this$props$onClick = (_this$props3 = _this.props).onClick) === null || _this$props$onClick === void 0 ? void 0 : _this$props$onClick.call(_this$props3, evt));\n });\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"handleKeyDown\", function(evt) {\n evt.persist();\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n _this.setState({\n clicked: !_this.state.clicked\n }, function() {\n var _this$props$handleKey, _this$props4;\n (// TODO: Remove handleKeyDown prop when handleKeyDown is deprecated\n (_this$props$handleKey = (_this$props4 = _this.props).handleKeyDown) === null || _this$props$handleKey === void 0 ? void 0 : _this$props$handleKey.call(_this$props4, evt)) || _this.props.onKeyDown(evt);\n });\n } else {\n var _this$props$handleKey2, _this$props5;\n // TODO: Remove handleKeyDown prop when handleKeyDown is deprecated\n ((_this$props$handleKey2 = (_this$props5 = _this.props).handleKeyDown) === null || _this$props$handleKey2 === void 0 ? void 0 : _this$props$handleKey2.call(_this$props5, evt)) || _this.props.onKeyDown(evt);\n }\n });\n return _this;\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(ClickableTile, [\n {\n key: \"render\",\n value: function render() {\n var _cx2;\n var prefix = this.context;\n var _this$props6 = this.props, children = _this$props6.children, href = _this$props6.href, className = _this$props6.className;\n _this$props6.handleClick;\n _this$props6.handleKeyDown;\n _this$props6.onClick;\n _this$props6.onKeyDown;\n _this$props6.clicked;\n var light = _this$props6.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props6, _excluded2);\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--clickable\"), (_cx2 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx2, \"\".concat(prefix, \"--tile--is-clicked\"), this.state.clicked), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx2, \"\".concat(prefix, \"--tile--light\"), light), _cx2), className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Link_Link_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"], (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n href: href,\n className: classes\n }, rest, {\n onClick: this.handleClick,\n onKeyDown: this.handleKeyDown\n }), children);\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref, state) {\n var clicked = _ref.clicked;\n var prevClicked = state.prevClicked;\n return prevClicked === clicked ? null : {\n clicked: clicked,\n prevClicked: clicked\n };\n }\n }\n ]);\n return ClickableTile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * Deprecated in v11. Use 'onClick' instead.\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleClick prop for ClickableTile has been deprecated in favor of onClick. It will be removed in the next major release.\"),\n /**\n * Specify the function to run when the ClickableTile is interacted with via a keyboard\n */ handleKeyDown: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleKeyDown prop for ClickableTile has been deprecated in favor of onKeyDown. It will be removed in the next major release.\"),\n /**\n * The href for the link.\n */ href: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the function to run when the ClickableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the ClickableTile is interacted with via a keyboard\n */ onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * The rel property for the link.\n */ rel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"defaultProps\", {\n clicked: false,\n onClick: function onClick() {},\n onKeyDown: function onKeyDown() {},\n light: false\n});\nfunction SelectableTile(props) {\n var handleOnClick = function handleOnClick(evt) {\n evt.preventDefault();\n evt.persist();\n setIsSelected(!isSelected);\n clickHandler(evt);\n onChange(evt);\n } // TODO: rename to handleKeyDown when handleKeyDown prop is deprecated\n ;\n var handleOnKeyDown = function handleOnKeyDown(evt) {\n evt.persist();\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n evt.preventDefault();\n setIsSelected(!isSelected);\n onChange(evt);\n }\n keyDownHandler(evt);\n };\n var handleChange = function handleChange(event) {\n setIsSelected(event.target.checked);\n onChange(event);\n };\n var _cx3;\n var children = props.children, id = props.id, tabIndex = props.tabIndex, value = props.value, name = props.name, title = props.title;\n props.iconDescription;\n var className = props.className, handleClick = props.handleClick, handleKeyDown = props.handleKeyDown, onClick = props.onClick, onChange = props.onChange, onKeyDown = props.onKeyDown, light = props.light, disabled = props.disabled, selected = props.selected, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(props, _excluded3);\n var prefix = (0,_internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.usePrefix)(); // TODO: replace with onClick when handleClick prop is deprecated\n var clickHandler = handleClick || onClick; // TODO: replace with onKeyDown when handleKeyDown prop is deprecated\n var keyDownHandler = handleKeyDown || onKeyDown;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(selected), _useState2 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.slicedToArray)(_useState, 2), isSelected = _useState2[0], setIsSelected = _useState2[1];\n var input = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--selectable\"), (_cx3 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--is-selected\"), isSelected), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--light\"), light), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--disabled\"), disabled), _cx3), className);\n var inputClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile-input\"), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)({}, \"\".concat(prefix, \"--tile-input--checked\"), isSelected)); // TODO: rename to handleClick when handleClick prop is deprecated\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n setIsSelected(selected);\n }, [\n selected\n ]);\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(\"input\", {\n ref: input,\n tabIndex: -1,\n id: id,\n className: inputClasses,\n value: value,\n onChange: !disabled ? handleChange : null,\n type: \"checkbox\",\n disabled: disabled,\n name: name,\n title: title,\n checked: isSelected\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n htmlFor: id,\n className: classes // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n ,\n tabIndex: !disabled ? tabIndex : null\n }, rest, {\n onClick: !disabled ? handleOnClick : null,\n onKeyDown: !disabled ? handleOnKeyDown : null\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile__checkmark \").concat(prefix, \"--tile__checkmark--persistent\")\n }, isSelected ? _CheckboxCheckedFille || (_CheckboxCheckedFille = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.CheckboxCheckedFilled, null)) : _Checkbox || (_Checkbox = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.Checkbox, null))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content\")\n }, children)));\n}\nSelectableTile.defaultProps = {\n value: \"value\",\n title: \"title\",\n selected: false,\n tabIndex: 0,\n light: false,\n onClick: function onClick() {},\n onChange: function onChange() {},\n onKeyDown: function onKeyDown() {}\n};\nSelectableTile.propTypes = {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * Specify whether the SelectableTile should be disabled\n */ disabled: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the function to run when the SelectableTile is clicked\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The `handleClick` prop for `SelectableTile` has been deprecated in favor of `onClick`. It will be removed in the next major release.\"),\n /**\n * Specify the function to run when the SelectableTile is interacted with via a keyboard\n */ handleKeyDown: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The `handleKeyDown` prop for `SelectableTile` has been deprecated in favor of `onKeyDown`. It will be removed in the next major release.\"),\n /**\n * The description of the checkmark icon.\n */ iconDescription: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().string), \"The `iconDescription` prop for `SelectableTile` is no longer needed and has \" + \"been deprecated. It will be removed in the next major release.\"),\n /**\n * The ID of the `<input>`.\n */ id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * The `name` of the `<input>`.\n */ name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The empty handler of the `<input>`.\n */ onChange: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the SelectableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the SelectableTile is interacted with via a keyboard\n */ onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * `true` to select this tile.\n */ selected: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the tab index of the wrapper element\n */ tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n /**\n * The `title` of the `<input>`.\n */ title: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The value of the `<input>`.\n */ value: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOfType([\n (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number)\n ]).isRequired\n};\nvar ExpandableTile = /*#__PURE__*/ function(_Component3) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(ExpandableTile, _Component3);\n var _super3 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(ExpandableTile);\n function ExpandableTile() {\n var _this2;\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, ExpandableTile);\n for(var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++){\n args[_key2] = arguments[_key2];\n }\n _this2 = _super3.call.apply(_super3, [\n this\n ].concat(args));\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"state\", {});\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"resizeObserver\", null);\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"componentDidMount\", function() {\n _this2.resizeObserver = new ResizeObserver(function(entries) {\n var _entries = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.slicedToArray)(entries, 1), aboveTheFold = _entries[0];\n _this2.setState({\n tileMaxHeight: aboveTheFold.contentRect.height\n });\n });\n if (_this2.tile) {\n var getStyle = window.getComputedStyle(_this2.tile, null);\n if (_this2.aboveTheFold) {\n _this2.resizeObserver.observe(_this2.aboveTheFold);\n _this2.setState({\n tileMaxHeight: _this2.aboveTheFold.getBoundingClientRect().height,\n tilePadding: parseInt(getStyle.getPropertyValue(\"padding-top\"), 10) + parseInt(getStyle.getPropertyValue(\"padding-bottom\"), 10)\n });\n }\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"componentDidUpdate\", function(prevProps) {\n if (prevProps.expanded !== _this2.props.expanded) {\n _this2.setMaxHeight();\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"setMaxHeight\", function() {\n if (_this2.state.expanded ? _this2.tileContent : _this2.aboveTheFold) {\n _this2.setState({\n tileMaxHeight: _this2.state.expanded ? _this2.tileContent.getBoundingClientRect().height : _this2.aboveTheFold.getBoundingClientRect().height\n });\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"handleClick\", function(evt) {\n if (!_this2.props.onBeforeClick(evt) || evt.target.tagName === \"INPUT\") {\n return;\n }\n evt.persist();\n _this2.setState({\n expanded: !_this2.state.expanded\n }, function() {\n var _this2$props$handleCl, _this2$props, _this2$props$onClick, _this2$props2;\n _this2.setMaxHeight(); // TODO: Remove handleClick prop when handleClick is deprecated\n ((_this2$props$handleCl = (_this2$props = _this2.props).handleClick) === null || _this2$props$handleCl === void 0 ? void 0 : _this2$props$handleCl.call(_this2$props, evt)) || ((_this2$props$onClick = (_this2$props2 = _this2.props).onClick) === null || _this2$props$onClick === void 0 ? void 0 : _this2$props$onClick.call(_this2$props2, evt));\n });\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"handleKeyUp\", function(evt) {\n if (evt.target !== _this2.tile) {\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n evt.preventDefault();\n }\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"getChildren\", function() {\n return react__WEBPACK_IMPORTED_MODULE_0___default().Children.toArray(_this2.props.children);\n });\n return _this2;\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(ExpandableTile, [\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _cx5, _this3 = this;\n var _this$props7 = this.props, tabIndex = _this$props7.tabIndex, className = _this$props7.className;\n _this$props7.expanded;\n _this$props7.tileMaxHeight;\n _this$props7.tilePadding;\n _this$props7.handleClick;\n var onKeyUp = _this$props7.onKeyUp, tileCollapsedIconText = _this$props7.tileCollapsedIconText, tileExpandedIconText = _this$props7.tileExpandedIconText, tileCollapsedLabel = _this$props7.tileCollapsedLabel, tileExpandedLabel = _this$props7.tileExpandedLabel;\n _this$props7.onBeforeClick;\n var light = _this$props7.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props7, _excluded4);\n var prefix = this.context;\n var isExpanded = this.state.expanded;\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--expandable\"), (_cx5 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx5, \"\".concat(prefix, \"--tile--is-expanded\"), isExpanded), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx5, \"\".concat(prefix, \"--tile--light\"), light), _cx5), className);\n var tileStyle = {\n maxHeight: isExpanded ? null : this.state.tileMaxHeight + this.state.tilePadding\n };\n var childrenAsArray = this.getChildren();\n return(/*#__PURE__*/ // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n type: \"button\",\n ref: function ref(tile) {\n _this3.tile = tile;\n },\n style: tileStyle,\n className: classes,\n \"aria-expanded\": isExpanded,\n title: isExpanded ? tileExpandedIconText : tileCollapsedIconText\n }, rest, {\n onKeyUp: (0,_tools_events_js__WEBPACK_IMPORTED_MODULE_10__.composeEventHandlers)([\n onKeyUp,\n this.handleKeyUp\n ]),\n onClick: this.handleClick,\n tabIndex: tabIndex\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: function ref(tileContent) {\n _this3.tileContent = tileContent;\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: function ref(aboveTheFold) {\n _this3.aboveTheFold = aboveTheFold;\n },\n className: \"\".concat(prefix, \"--tile-content\")\n }, childrenAsArray[0]), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(prefix, \"--tile__chevron\")\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, isExpanded ? tileExpandedLabel : tileCollapsedLabel), _ChevronDown || (_ChevronDown = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.ChevronDown, null))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(prefix, \"--tile-content\")\n }, childrenAsArray[1]))));\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref2, state) {\n var expanded = _ref2.expanded, tileMaxHeight = _ref2.tileMaxHeight, tilePadding = _ref2.tilePadding;\n var prevExpanded = state.prevExpanded, prevTileMaxHeight = state.prevTileMaxHeight, prevTilePadding = state.prevTilePadding, currentExpanded = state.expanded, currentTileMaxHeight = state.tileMaxHeight, currentTilePadding = state.tilePadding;\n var expandedChanged = prevExpanded !== expanded;\n var tileMaxHeightChanged = prevTileMaxHeight !== tileMaxHeight;\n var tilePaddingChanged = prevTilePadding !== tilePadding;\n return !expandedChanged && !tileMaxHeightChanged && !tilePaddingChanged ? null : {\n expanded: !expandedChanged ? currentExpanded : expanded,\n tileMaxHeight: !tileMaxHeightChanged ? currentTileMaxHeight : tileMaxHeight,\n tilePadding: !tilePaddingChanged ? currentTilePadding : tilePadding,\n prevExpanded: expanded,\n prevTileMaxHeight: tileMaxHeight,\n prevTilePadding: tilePadding\n };\n }\n }\n ]);\n return ExpandableTile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` if the tile is expanded.\n */ expanded: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Deprecated in v11. Use 'onClick' instead.\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleClick prop for ExpandableTile has been deprecated in favor of onClick. It will be removed in the next major release.\"),\n /**\n * An ID that can be provided to aria-labelledby\n */ id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * optional handler to decide whether to ignore a click. returns false if click should be ignored\n */ onBeforeClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the ExpandableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * optional handler to trigger a function when a key is pressed\n */ onKeyUp: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * The `tabindex` attribute.\n */ tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n /**\n * The description of the \"collapsed\" icon that can be read by screen readers.\n */ tileCollapsedIconText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * When \"collapsed\", a label to appear next to the chevron (e.g., \"View more\").\n */ tileCollapsedLabel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The description of the \"expanded\" icon that can be read by screen readers.\n */ tileExpandedIconText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * When \"expanded\", a label to appear next to the chevron (e.g., \"View less\").\n */ tileExpandedLabel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"defaultProps\", {\n tabIndex: 0,\n expanded: false,\n tileMaxHeight: 0,\n tilePadding: 0,\n onBeforeClick: function onBeforeClick() {\n return true;\n },\n onClick: function onClick() {},\n tileCollapsedIconText: \"Interact to expand Tile\",\n tileExpandedIconText: \"Interact to collapse Tile\",\n light: false\n});\nvar TileAboveTheFoldContent = /*#__PURE__*/ function(_Component4) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(TileAboveTheFoldContent, _Component4);\n var _super4 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(TileAboveTheFoldContent);\n function TileAboveTheFoldContent() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, TileAboveTheFoldContent);\n return _super4.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(TileAboveTheFoldContent, [\n {\n key: \"render\",\n value: function render() {\n var prefix = this.context;\n var children = this.props.children;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content__above-the-fold\")\n }, children);\n }\n }\n ]);\n return TileAboveTheFoldContent;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileAboveTheFoldContent, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileAboveTheFoldContent, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\nvar TileBelowTheFoldContent = /*#__PURE__*/ function(_Component5) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(TileBelowTheFoldContent, _Component5);\n var _super5 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(TileBelowTheFoldContent);\n function TileBelowTheFoldContent() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, TileBelowTheFoldContent);\n return _super5.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(TileBelowTheFoldContent, [\n {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n var prefix = this.context;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content__below-the-fold\")\n }, children);\n }\n }\n ]);\n return TileBelowTheFoldContent;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileBelowTheFoldContent, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileBelowTheFoldContent, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vcmVhY3QvZXMvY29tcG9uZW50cy9UaWxlL1RpbGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Q0FLQyxHQUUrVztBQUNqUztBQUM1QztBQUNQO0FBQ087QUFDZ0Q7QUFDN0I7QUFDTztBQUNVO0FBQ1o7QUFDSTtBQUUvRCxJQUFJb0MsdUJBQXVCQyxXQUFXQztBQUV0QyxJQUFJQyxZQUFZO0lBQUM7SUFBWTtJQUFhO0NBQVEsRUFDOUNDLGFBQWE7SUFBQztJQUFZO0lBQVE7SUFBYTtJQUFlO0lBQWlCO0lBQVc7SUFBYTtJQUFXO0NBQVEsRUFDMUhDLGFBQWE7SUFBQztJQUFZO0lBQU07SUFBWTtJQUFTO0lBQVE7SUFBUztJQUFtQjtJQUFhO0lBQWU7SUFBaUI7SUFBVztJQUFZO0lBQWE7SUFBUztJQUFZO0NBQVcsRUFDMU1DLGFBQWE7SUFBQztJQUFZO0lBQWE7SUFBWTtJQUFpQjtJQUFlO0lBQWU7SUFBVztJQUF5QjtJQUF3QjtJQUFzQjtJQUFxQjtJQUFpQjtDQUFRO0FBQ3RPLElBQUlDLE9BQU8sV0FBVyxHQUFFLFNBQVVDLFVBQVUsRUFBRTtJQUM1QzNDLDhFQUFTQSxDQUFDMEMsTUFBTUM7SUFFaEIsSUFBSUMsU0FBUzFDLGlGQUFZQSxDQUFDd0M7SUFFMUIsU0FBU0EsT0FBTztRQUNkdEMsb0ZBQWVBLENBQUMsSUFBSSxFQUFFc0M7UUFFdEIsT0FBT0UsT0FBT0MsS0FBSyxDQUFDLElBQUksRUFBRUM7SUFDNUI7SUFFQXhDLGlGQUFZQSxDQUFDb0MsTUFBTTtRQUFDO1lBQ2xCSyxLQUFLO1lBQ0xDLE9BQU8sU0FBU0MsU0FBUztnQkFDdkIsSUFBSUMsU0FBUyxJQUFJLENBQUNDLE9BQU87Z0JBRXpCLElBQUlDLGNBQWMsSUFBSSxDQUFDQyxLQUFLLEVBQ3hCQyxXQUFXRixZQUFZRSxRQUFRLEVBQy9CQyxZQUFZSCxZQUFZRyxTQUFTLEVBQ2pDQyxRQUFRSixZQUFZSSxLQUFLLEVBQ3pCQyxPQUFPakQsNkZBQXdCQSxDQUFDNEMsYUFBYWQ7Z0JBRWpELElBQUlvQixjQUFjbkMsaURBQUVBLENBQUMsR0FBR29DLE1BQU0sQ0FBQ1QsUUFBUSxXQUFXeEMsb0ZBQWVBLENBQUMsQ0FBQyxHQUFHLEdBQUdpRCxNQUFNLENBQUNULFFBQVEsa0JBQWtCTSxRQUFRRDtnQkFDbEgsT0FBTyxXQUFXLEdBQUV0QywwREFBNEIsQ0FBQyxPQUFPTCxnRkFBUUEsQ0FBQztvQkFDL0QyQyxXQUFXRztnQkFDYixHQUFHRCxPQUFPSDtZQUNaO1FBQ0Y7S0FBRTtJQUVGLE9BQU9aO0FBQ1QsRUFBRXhCLDRDQUFTQTtBQUVYUixvRkFBZUEsQ0FBQ2dDLE1BQU0sYUFBYTtJQUNqQzs7R0FFQyxHQUNEWSxVQUFVaEMsd0RBQWM7SUFFeEI7O0dBRUMsR0FDRGlDLFdBQVdqQywwREFBZ0I7SUFFM0I7OztHQUdDLEdBQ0RrQyxPQUFPbEMsd0RBQWM7QUFDdkI7QUFFQVosb0ZBQWVBLENBQUNnQyxNQUFNLGVBQWVaLGlFQUFhQTtBQUVsRHBCLG9GQUFlQSxDQUFDZ0MsTUFBTSxnQkFBZ0I7SUFDcENjLE9BQU8sS0FBSztBQUNkO0FBRUEsSUFBSVEsZ0JBQWdCLFdBQVcsR0FBRSxTQUFVQyxXQUFXLEVBQUU7SUFDdERqRSw4RUFBU0EsQ0FBQ2dFLGVBQWVDO0lBRXpCLElBQUlDLFVBQVVoRSxpRkFBWUEsQ0FBQzhEO0lBRTNCLFNBQVNBLGdCQUFnQjtRQUN2QixJQUFJRztRQUVKL0Qsb0ZBQWVBLENBQUMsSUFBSSxFQUFFNEQ7UUFFdEIsSUFBSyxJQUFJSSxPQUFPdEIsVUFBVXVCLE1BQU0sRUFBRUMsT0FBTyxJQUFJQyxNQUFNSCxPQUFPSSxPQUFPLEdBQUdBLE9BQU9KLE1BQU1JLE9BQVE7WUFDdkZGLElBQUksQ0FBQ0UsS0FBSyxHQUFHMUIsU0FBUyxDQUFDMEIsS0FBSztRQUM5QjtRQUVBTCxRQUFRRCxRQUFRTyxJQUFJLENBQUM1QixLQUFLLENBQUNxQixTQUFTO1lBQUMsSUFBSTtTQUFDLENBQUNQLE1BQU0sQ0FBQ1c7UUFFbEQ1RCxvRkFBZUEsQ0FBQ0ksMkZBQXNCQSxDQUFDcUQsUUFBUSxTQUFTLENBQUM7UUFFekR6RCxvRkFBZUEsQ0FBQ0ksMkZBQXNCQSxDQUFDcUQsUUFBUSxlQUFlLFNBQVVPLEdBQUcsRUFBRTtZQUMzRUEsSUFBSUMsT0FBTztZQUVYUixNQUFNUyxRQUFRLENBQUM7Z0JBQ2JDLFNBQVMsQ0FBQ1YsTUFBTVcsS0FBSyxDQUFDRCxPQUFPO1lBQy9CLEdBQUcsV0FBWTtnQkFDYixJQUFJRSx1QkFBdUJDLGNBQWNDLHFCQUFxQkM7Z0JBRTlELCtEQUErRDtnQkFDOUQsRUFBQ0gsd0JBQXdCLENBQUNDLGVBQWViLE1BQU1kLEtBQUssRUFBRThCLFdBQVcsTUFBTSxJQUFJLElBQUlKLDBCQUEwQixLQUFLLElBQUksS0FBSyxJQUFJQSxzQkFBc0JOLElBQUksQ0FBQ08sY0FBY04sSUFBSSxLQUFNLEVBQUNPLHNCQUFzQixDQUFDQyxlQUFlZixNQUFNZCxLQUFLLEVBQUUrQixPQUFPLE1BQU0sSUFBSSxJQUFJSCx3QkFBd0IsS0FBSyxJQUFJLEtBQUssSUFBSUEsb0JBQW9CUixJQUFJLENBQUNTLGNBQWNSLElBQUk7WUFDL1U7UUFDRjtRQUVBaEUsb0ZBQWVBLENBQUNJLDJGQUFzQkEsQ0FBQ3FELFFBQVEsaUJBQWlCLFNBQVVPLEdBQUcsRUFBRTtZQUM3RUEsSUFBSUMsT0FBTztZQUVYLElBQUkzQyxvRUFBT0EsQ0FBQzBDLEtBQUs7Z0JBQUN6Qyw2REFBS0E7Z0JBQUVDLDZEQUFLQTthQUFDLEdBQUc7Z0JBQ2hDaUMsTUFBTVMsUUFBUSxDQUFDO29CQUNiQyxTQUFTLENBQUNWLE1BQU1XLEtBQUssQ0FBQ0QsT0FBTztnQkFDL0IsR0FBRyxXQUFZO29CQUNiLElBQUlRLHVCQUF1QkM7b0JBRzFCLG9FQURrRTtvQkFDakVELENBQUFBLHdCQUF3QixDQUFDQyxlQUFlbkIsTUFBTWQsS0FBSyxFQUFFa0MsYUFBYSxNQUFNLElBQUksSUFBSUYsMEJBQTBCLEtBQUssSUFBSSxLQUFLLElBQUlBLHNCQUFzQlosSUFBSSxDQUFDYSxjQUFjWixJQUFJLEtBQUtQLE1BQU1kLEtBQUssQ0FBQ21DLFNBQVMsQ0FBQ2Q7Z0JBQ3hNO1lBQ0YsT0FBTztnQkFDTCxJQUFJZSx3QkFBd0JDO2dCQUU1QixtRUFBbUU7Z0JBQ2xFLEVBQUNELHlCQUF5QixDQUFDQyxlQUFldkIsTUFBTWQsS0FBSyxFQUFFa0MsYUFBYSxNQUFNLElBQUksSUFBSUUsMkJBQTJCLEtBQUssSUFBSSxLQUFLLElBQUlBLHVCQUF1QmhCLElBQUksQ0FBQ2lCLGNBQWNoQixJQUFJLEtBQUtQLE1BQU1kLEtBQUssQ0FBQ21DLFNBQVMsQ0FBQ2Q7WUFDM00sQ0FBQztRQUNIO1FBRUEsT0FBT1A7SUFDVDtJQUVBN0QsaUZBQVlBLENBQUMwRCxlQUFlO1FBQUM7WUFDM0JqQixLQUFLO1lBQ0xDLE9BQU8sU0FBU0MsU0FBUztnQkFDdkIsSUFBSTBDO2dCQUVKLElBQUl6QyxTQUFTLElBQUksQ0FBQ0MsT0FBTztnQkFFekIsSUFBSXlDLGVBQWUsSUFBSSxDQUFDdkMsS0FBSyxFQUN6QkMsV0FBV3NDLGFBQWF0QyxRQUFRLEVBQ2hDdUMsT0FBT0QsYUFBYUMsSUFBSSxFQUN4QnRDLFlBQVlxQyxhQUFhckMsU0FBUztnQkFDbENxQyxhQUFhVCxXQUFXO2dCQUN4QlMsYUFBYUwsYUFBYTtnQkFDMUJLLGFBQWFSLE9BQU87Z0JBQ3BCUSxhQUFhSixTQUFTO2dCQUN0QkksYUFBYWYsT0FBTztnQkFDcEIsSUFBSXJCLFFBQVFvQyxhQUFhcEMsS0FBSyxFQUM5QkMsT0FBT2pELDZGQUF3QkEsQ0FBQ29GLGNBQWNyRDtnQkFFbEQsSUFBSXVELFVBQVV2RSxpREFBRUEsQ0FBQyxHQUFHb0MsTUFBTSxDQUFDVCxRQUFRLFdBQVcsR0FBR1MsTUFBTSxDQUFDVCxRQUFRLHNCQUF1QnlDLENBQUFBLE9BQU8sQ0FBQyxHQUFHakYsb0ZBQWVBLENBQUNpRixNQUFNLEdBQUdoQyxNQUFNLENBQUNULFFBQVEsdUJBQXVCLElBQUksQ0FBQzRCLEtBQUssQ0FBQ0QsT0FBTyxHQUFHbkUsb0ZBQWVBLENBQUNpRixNQUFNLEdBQUdoQyxNQUFNLENBQUNULFFBQVEsa0JBQWtCTSxRQUFRbUMsSUFBSSxHQUFHcEM7Z0JBQy9QLE9BQU8sV0FBVyxHQUFFdEMsMERBQTRCLENBQUNPLHFEQUFJQSxFQUFFWixnRkFBUUEsQ0FBQztvQkFDOURpRixNQUFNQTtvQkFDTnRDLFdBQVd1QztnQkFDYixHQUFHckMsTUFBTTtvQkFDUDJCLFNBQVMsSUFBSSxDQUFDRCxXQUFXO29CQUN6QkssV0FBVyxJQUFJLENBQUNELGFBQWE7Z0JBQy9CLElBQUlqQztZQUNOO1FBQ0Y7S0FBRSxFQUFFO1FBQUM7WUFDSFAsS0FBSztZQUNMQyxPQUNBLFNBQVMrQyx5QkFBeUJDLElBQUksRUFBRWxCLEtBQUssRUFBRTtnQkFDN0MsSUFBSUQsVUFBVW1CLEtBQUtuQixPQUFPO2dCQUMxQixJQUFJb0IsY0FBY25CLE1BQU1tQixXQUFXO2dCQUNuQyxPQUFPQSxnQkFBZ0JwQixVQUFVLElBQUksR0FBRztvQkFDdENBLFNBQVNBO29CQUNUb0IsYUFBYXBCO2dCQUNmLENBQUM7WUFDSDtRQUNGO0tBQUU7SUFFRixPQUFPYjtBQUNULEVBQUU5Qyw0Q0FBU0E7QUFFWFIsb0ZBQWVBLENBQUNzRCxlQUFlLGFBQWE7SUFDMUM7O0dBRUMsR0FDRFYsVUFBVWhDLHdEQUFjO0lBRXhCOztHQUVDLEdBQ0RpQyxXQUFXakMsMERBQWdCO0lBRTNCOztHQUVDLEdBQ0Q2RCxhQUFhdkQsb0VBQVNBLENBQUNOLHdEQUFjLEVBQUU7SUFFdkM7O0dBRUMsR0FDRGlFLGVBQWUzRCxvRUFBU0EsQ0FBQ04sd0RBQWMsRUFBRTtJQUV6Qzs7R0FFQyxHQUNEdUUsTUFBTXZFLDBEQUFnQjtJQUV0Qjs7O0dBR0MsR0FDRGtDLE9BQU9sQyx3REFBYztJQUVyQjs7R0FFQyxHQUNEOEQsU0FBUzlELHdEQUFjO0lBRXZCOztHQUVDLEdBQ0RrRSxXQUFXbEUsd0RBQWM7SUFFekI7O0dBRUMsR0FDRDZFLEtBQUs3RSwwREFBZ0I7QUFDdkI7QUFFQVosb0ZBQWVBLENBQUNzRCxlQUFlLGVBQWVsQyxpRUFBYUE7QUFFM0RwQixvRkFBZUEsQ0FBQ3NELGVBQWUsZ0JBQWdCO0lBQzdDYSxTQUFTLEtBQUs7SUFDZE8sU0FBUyxTQUFTQSxVQUFVLENBQUM7SUFDN0JJLFdBQVcsU0FBU0EsWUFBWSxDQUFDO0lBQ2pDaEMsT0FBTyxLQUFLO0FBQ2Q7QUFFQSxTQUFTNEMsZUFBZS9DLEtBQUssRUFBRTtRQW9DcEJnRCxnQkFBVCxTQUFTQSxjQUFjM0IsR0FBRyxFQUFFO1FBQzFCQSxJQUFJNEIsY0FBYztRQUNsQjVCLElBQUlDLE9BQU87UUFDWDRCLGNBQWMsQ0FBQ0M7UUFDZkMsYUFBYS9CO1FBQ2JnQyxTQUFTaEM7SUFDWCxFQUFFLHNFQUFzRTs7UUFHL0RpQyxrQkFBVCxTQUFTQSxnQkFBZ0JqQyxHQUFHLEVBQUU7UUFDNUJBLElBQUlDLE9BQU87UUFFWCxJQUFJM0Msb0VBQU9BLENBQUMwQyxLQUFLO1lBQUN6Qyw2REFBS0E7WUFBRUMsNkRBQUtBO1NBQUMsR0FBRztZQUNoQ3dDLElBQUk0QixjQUFjO1lBQ2xCQyxjQUFjLENBQUNDO1lBQ2ZFLFNBQVNoQztRQUNYLENBQUM7UUFFRGtDLGVBQWVsQztJQUNqQjtRQUVTbUMsZUFBVCxTQUFTQSxhQUFhQyxLQUFLLEVBQUU7UUFDM0JQLGNBQWNPLE1BQU1DLE1BQU0sQ0FBQ0MsT0FBTztRQUNsQ04sU0FBU0k7SUFDWDtJQTNEQSxJQUFJRztJQUVKLElBQUkzRCxXQUFXRCxNQUFNQyxRQUFRLEVBQ3pCNEQsS0FBSzdELE1BQU02RCxFQUFFLEVBQ2JDLFdBQVc5RCxNQUFNOEQsUUFBUSxFQUN6Qm5FLFFBQVFLLE1BQU1MLEtBQUssRUFDbkJvRSxPQUFPL0QsTUFBTStELElBQUksRUFDakJDLFFBQVFoRSxNQUFNZ0UsS0FBSztJQUNuQmhFLE1BQU1pRSxlQUFlO0lBQ3JCLElBQUkvRCxZQUFZRixNQUFNRSxTQUFTLEVBQy9CNEIsY0FBYzlCLE1BQU04QixXQUFXLEVBQy9CSSxnQkFBZ0JsQyxNQUFNa0MsYUFBYSxFQUNuQ0gsVUFBVS9CLE1BQU0rQixPQUFPLEVBQ3ZCc0IsV0FBV3JELE1BQU1xRCxRQUFRLEVBQ3pCbEIsWUFBWW5DLE1BQU1tQyxTQUFTLEVBQzNCaEMsUUFBUUgsTUFBTUcsS0FBSyxFQUNuQitELFdBQVdsRSxNQUFNa0UsUUFBUSxFQUN6QkMsV0FBV25FLE1BQU1tRSxRQUFRLEVBQ3pCL0QsT0FBT2pELDZGQUF3QkEsQ0FBQzZDLE9BQU9iO0lBRTNDLElBQUlVLFNBQVNuQixpRUFBU0EsSUFBSSxpRUFBaUU7SUFFM0YsSUFBSTBFLGVBQWV0QixlQUFlQyxTQUFTLHFFQUFxRTtJQUVoSCxJQUFJd0IsaUJBQWlCckIsaUJBQWlCQztJQUV0QyxJQUFJaUMsWUFBWXRHLCtDQUFRQSxDQUFDcUcsV0FDckJFLGFBQWExRyxtRkFBY0EsQ0FBQ3lHLFdBQVcsSUFDdkNqQixhQUFha0IsVUFBVSxDQUFDLEVBQUUsRUFDMUJuQixnQkFBZ0JtQixVQUFVLENBQUMsRUFBRTtJQUVqQyxJQUFJQyxRQUFRdkcsNkNBQU1BLENBQUMsSUFBSTtJQUN2QixJQUFJMEUsVUFBVXZFLGlEQUFFQSxDQUFDLEdBQUdvQyxNQUFNLENBQUNULFFBQVEsV0FBVyxHQUFHUyxNQUFNLENBQUNULFFBQVEsdUJBQXdCK0QsQ0FBQUEsT0FBTyxDQUFDLEdBQUd2RyxvRkFBZUEsQ0FBQ3VHLE1BQU0sR0FBR3RELE1BQU0sQ0FBQ1QsUUFBUSx3QkFBd0JzRCxhQUFhOUYsb0ZBQWVBLENBQUN1RyxNQUFNLEdBQUd0RCxNQUFNLENBQUNULFFBQVEsa0JBQWtCTSxRQUFROUMsb0ZBQWVBLENBQUN1RyxNQUFNLEdBQUd0RCxNQUFNLENBQUNULFFBQVEscUJBQXFCcUUsV0FBV04sSUFBSSxHQUFHMUQ7SUFDalUsSUFBSXFFLGVBQWVyRyxpREFBRUEsQ0FBQyxHQUFHb0MsTUFBTSxDQUFDVCxRQUFRLGlCQUFpQnhDLG9GQUFlQSxDQUFDLENBQUMsR0FBRyxHQUFHaUQsTUFBTSxDQUFDVCxRQUFRLDBCQUEwQnNELGNBQWMsa0VBQWtFO0lBNEJ6TW5GLGdEQUFTQSxDQUFDLFdBQVk7UUFDcEJrRixjQUFjaUI7SUFDaEIsR0FBRztRQUFDQTtLQUFTO0lBQ2IsT0FBTyxXQUFXLEdBQUV2RywwREFBNEIsQ0FBQ0EsdURBQXVCLEVBQUUsSUFBSSxFQUFFLFdBQVcsR0FBRUEsMERBQTRCLENBQUMsU0FBUztRQUNqSTZHLEtBQUtIO1FBQ0xSLFVBQVUsQ0FBQztRQUNYRCxJQUFJQTtRQUNKM0QsV0FBV3FFO1FBQ1g1RSxPQUFPQTtRQUNQMEQsVUFBVSxDQUFDYSxXQUFXVixlQUFlLElBQUk7UUFDekNrQixNQUFNO1FBQ05SLFVBQVVBO1FBQ1ZILE1BQU1BO1FBQ05DLE9BQU9BO1FBQ1BMLFNBQVNSO0lBQ1gsSUFBSSxXQUFXLEdBQUV2RiwwREFBNEIsQ0FBQyxTQUFTTCxnRkFBUUEsQ0FBQztRQUM5RG9ILFNBQVNkO1FBQ1QzRCxXQUFXdUMsUUFBUSwrREFBK0Q7O1FBRWxGcUIsVUFBVSxDQUFDSSxXQUFXSixXQUFXLElBQUk7SUFDdkMsR0FBRzFELE1BQU07UUFDUDJCLFNBQVMsQ0FBQ21DLFdBQVdsQixnQkFBZ0IsSUFBSTtRQUN6Q2IsV0FBVyxDQUFDK0IsV0FBV1osa0JBQWtCLElBQUk7SUFDL0MsSUFBSSxXQUFXLEdBQUUxRiwwREFBNEIsQ0FBQyxRQUFRO1FBQ3BEc0MsV0FBVyxHQUFHSSxNQUFNLENBQUNULFFBQVEsc0JBQXNCUyxNQUFNLENBQUNULFFBQVE7SUFDcEUsR0FBR3NELGFBQWFyRSx5QkFBMEJBLENBQUFBLHdCQUF3QixXQUFXLEdBQUVsQiwwREFBNEIsQ0FBQ1Esc0VBQXFCQSxFQUFFLElBQUksS0FBS1csYUFBY0EsQ0FBQUEsWUFBWSxXQUFXLEdBQUVuQiwwREFBNEIsQ0FBQ1MseURBQVFBLEVBQUUsSUFBSSxFQUFFLEdBQUcsV0FBVyxHQUFFVCwwREFBNEIsQ0FBQyxRQUFRO1FBQ25Sc0MsV0FBVyxHQUFHSSxNQUFNLENBQUNULFFBQVE7SUFDL0IsR0FBR0k7QUFDTDtBQUNBOEMsZUFBZTZCLFlBQVksR0FBRztJQUM1QmpGLE9BQU87SUFDUHFFLE9BQU87SUFDUEcsVUFBVSxLQUFLO0lBQ2ZMLFVBQVU7SUFDVjNELE9BQU8sS0FBSztJQUNaNEIsU0FBUyxTQUFTQSxVQUFVLENBQUM7SUFDN0JzQixVQUFVLFNBQVNBLFdBQVcsQ0FBQztJQUMvQmxCLFdBQVcsU0FBU0EsWUFBWSxDQUFDO0FBQ25DO0FBQ0FZLGVBQWU4QixTQUFTLEdBQUc7SUFDekI7O0dBRUMsR0FDRDVFLFVBQVVoQyx3REFBYztJQUV4Qjs7R0FFQyxHQUNEaUMsV0FBV2pDLDBEQUFnQjtJQUUzQjs7R0FFQyxHQUNEaUcsVUFBVWpHLHdEQUFjO0lBRXhCOztHQUVDLEdBQ0Q2RCxhQUFhdkQsb0VBQVNBLENBQUNOLHdEQUFjLEVBQUU7SUFFdkM7O0dBRUMsR0FDRGlFLGVBQWUzRCxvRUFBU0EsQ0FBQ04sd0RBQWMsRUFBRTtJQUV6Qzs7R0FFQyxHQUNEZ0csaUJBQWlCMUYsb0VBQVNBLENBQUNOLDBEQUFnQixFQUFFLGlGQUFpRjtJQUU5SDs7R0FFQyxHQUNENEYsSUFBSTVGLDBEQUFnQjtJQUVwQjs7O0dBR0MsR0FDRGtDLE9BQU9sQyx3REFBYztJQUVyQjs7R0FFQyxHQUNEOEYsTUFBTTlGLDBEQUFnQjtJQUV0Qjs7R0FFQyxHQUNEb0YsVUFBVXBGLHdEQUFjO0lBRXhCOztHQUVDLEdBQ0Q4RCxTQUFTOUQsd0RBQWM7SUFFdkI7O0dBRUMsR0FDRGtFLFdBQVdsRSx3REFBYztJQUV6Qjs7R0FFQyxHQUNEa0csVUFBVWxHLHdEQUFjO0lBRXhCOztHQUVDLEdBQ0Q2RixVQUFVN0YsMERBQWdCO0lBRTFCOztHQUVDLEdBQ0QrRixPQUFPL0YsMERBQWdCO0lBRXZCOztHQUVDLEdBQ0QwQixPQUFPMUIsMkRBQW1CLENBQUM7UUFBQ0EsMERBQWdCO1FBQUVBLDBEQUFnQjtLQUFDLEVBQUUrRyxVQUFVO0FBQzdFO0FBQ0EsSUFBSUMsaUJBQWlCLFdBQVcsR0FBRSxTQUFVQyxXQUFXLEVBQUU7SUFDdkR2SSw4RUFBU0EsQ0FBQ3NJLGdCQUFnQkM7SUFFMUIsSUFBSUMsVUFBVXRJLGlGQUFZQSxDQUFDb0k7SUFFM0IsU0FBU0EsaUJBQWlCO1FBQ3hCLElBQUlHO1FBRUpySSxvRkFBZUEsQ0FBQyxJQUFJLEVBQUVrSTtRQUV0QixJQUFLLElBQUlJLFFBQVE1RixVQUFVdUIsTUFBTSxFQUFFQyxPQUFPLElBQUlDLE1BQU1tRSxRQUFRQyxRQUFRLEdBQUdBLFFBQVFELE9BQU9DLFFBQVM7WUFDN0ZyRSxJQUFJLENBQUNxRSxNQUFNLEdBQUc3RixTQUFTLENBQUM2RixNQUFNO1FBQ2hDO1FBRUFGLFNBQVNELFFBQVEvRCxJQUFJLENBQUM1QixLQUFLLENBQUMyRixTQUFTO1lBQUMsSUFBSTtTQUFDLENBQUM3RSxNQUFNLENBQUNXO1FBRW5ENUQsb0ZBQWVBLENBQUNJLDJGQUFzQkEsQ0FBQzJILFNBQVMsU0FBUyxDQUFDO1FBRTFEL0gsb0ZBQWVBLENBQUNJLDJGQUFzQkEsQ0FBQzJILFNBQVMsa0JBQWtCLElBQUk7UUFFdEUvSCxvRkFBZUEsQ0FBQ0ksMkZBQXNCQSxDQUFDMkgsU0FBUyxxQkFBcUIsV0FBWTtZQUMvRUEsT0FBT0csY0FBYyxHQUFHLElBQUlDLGVBQWUsU0FBVUMsT0FBTyxFQUFFO2dCQUM1RCxJQUFJQyxXQUFXL0gsbUZBQWNBLENBQUM4SCxTQUFTLElBQ25DRSxlQUFlRCxRQUFRLENBQUMsRUFBRTtnQkFFOUJOLE9BQU83RCxRQUFRLENBQUM7b0JBQ2RxRSxlQUFlRCxhQUFhRSxXQUFXLENBQUNDLE1BQU07Z0JBQ2hEO1lBQ0Y7WUFFQSxJQUFJVixPQUFPVyxJQUFJLEVBQUU7Z0JBQ2YsSUFBSUMsV0FBV0MsT0FBT0MsZ0JBQWdCLENBQUNkLE9BQU9XLElBQUksRUFBRSxJQUFJO2dCQUV4RCxJQUFJWCxPQUFPTyxZQUFZLEVBQUU7b0JBQ3ZCUCxPQUFPRyxjQUFjLENBQUNZLE9BQU8sQ0FBQ2YsT0FBT08sWUFBWTtvQkFFakRQLE9BQU83RCxRQUFRLENBQUM7d0JBQ2RxRSxlQUFlUixPQUFPTyxZQUFZLENBQUNTLHFCQUFxQixHQUFHTixNQUFNO3dCQUNqRU8sYUFBYUMsU0FBU04sU0FBU08sZ0JBQWdCLENBQUMsZ0JBQWdCLE1BQU1ELFNBQVNOLFNBQVNPLGdCQUFnQixDQUFDLG1CQUFtQjtvQkFDOUg7Z0JBQ0YsQ0FBQztZQUNILENBQUM7UUFDSDtRQUVBbEosb0ZBQWVBLENBQUNJLDJGQUFzQkEsQ0FBQzJILFNBQVMsc0JBQXNCLFNBQVVvQixTQUFTLEVBQUU7WUFDekYsSUFBSUEsVUFBVUMsUUFBUSxLQUFLckIsT0FBT3BGLEtBQUssQ0FBQ3lHLFFBQVEsRUFBRTtnQkFDaERyQixPQUFPc0IsWUFBWTtZQUNyQixDQUFDO1FBQ0g7UUFFQXJKLG9GQUFlQSxDQUFDSSwyRkFBc0JBLENBQUMySCxTQUFTLGdCQUFnQixXQUFZO1lBQzFFLElBQUlBLE9BQU8zRCxLQUFLLENBQUNnRixRQUFRLEdBQUdyQixPQUFPdUIsV0FBVyxHQUFHdkIsT0FBT08sWUFBWSxFQUFFO2dCQUNwRVAsT0FBTzdELFFBQVEsQ0FBQztvQkFDZHFFLGVBQWVSLE9BQU8zRCxLQUFLLENBQUNnRixRQUFRLEdBQUdyQixPQUFPdUIsV0FBVyxDQUFDUCxxQkFBcUIsR0FBR04sTUFBTSxHQUFHVixPQUFPTyxZQUFZLENBQUNTLHFCQUFxQixHQUFHTixNQUFNO2dCQUMvSTtZQUNGLENBQUM7UUFDSDtRQUVBekksb0ZBQWVBLENBQUNJLDJGQUFzQkEsQ0FBQzJILFNBQVMsZUFBZSxTQUFVL0QsR0FBRyxFQUFFO1lBQzVFLElBQUksQ0FBQytELE9BQU9wRixLQUFLLENBQUM0RyxhQUFhLENBQUN2RixRQUFRQSxJQUFJcUMsTUFBTSxDQUFDbUQsT0FBTyxLQUFLLFNBQVM7Z0JBQ3RFO1lBQ0YsQ0FBQztZQUVEeEYsSUFBSUMsT0FBTztZQUVYOEQsT0FBTzdELFFBQVEsQ0FBQztnQkFDZGtGLFVBQVUsQ0FBQ3JCLE9BQU8zRCxLQUFLLENBQUNnRixRQUFRO1lBQ2xDLEdBQUcsV0FBWTtnQkFDYixJQUFJSyx1QkFBdUJDLGNBQWNDLHNCQUFzQkM7Z0JBRS9EN0IsT0FBT3NCLFlBQVksSUFBSSwrREFBK0Q7Z0JBR3JGLEVBQUNJLHdCQUF3QixDQUFDQyxlQUFlM0IsT0FBT3BGLEtBQUssRUFBRThCLFdBQVcsTUFBTSxJQUFJLElBQUlnRiwwQkFBMEIsS0FBSyxJQUFJLEtBQUssSUFBSUEsc0JBQXNCMUYsSUFBSSxDQUFDMkYsY0FBYzFGLElBQUksS0FBTSxFQUFDMkYsdUJBQXVCLENBQUNDLGdCQUFnQjdCLE9BQU9wRixLQUFLLEVBQUUrQixPQUFPLE1BQU0sSUFBSSxJQUFJaUYseUJBQXlCLEtBQUssSUFBSSxLQUFLLElBQUlBLHFCQUFxQjVGLElBQUksQ0FBQzZGLGVBQWU1RixJQUFJO1lBQ3RWO1FBQ0Y7UUFFQWhFLG9GQUFlQSxDQUFDSSwyRkFBc0JBLENBQUMySCxTQUFTLGVBQWUsU0FBVS9ELEdBQUcsRUFBRTtZQUM1RSxJQUFJQSxJQUFJcUMsTUFBTSxLQUFLMEIsT0FBT1csSUFBSSxFQUFFO2dCQUM5QixJQUFJcEgsb0VBQU9BLENBQUMwQyxLQUFLO29CQUFDekMsNkRBQUtBO29CQUFFQyw2REFBS0E7aUJBQUMsR0FBRztvQkFDaEN3QyxJQUFJNEIsY0FBYztnQkFDcEIsQ0FBQztZQUNILENBQUM7UUFDSDtRQUVBNUYsb0ZBQWVBLENBQUNJLDJGQUFzQkEsQ0FBQzJILFNBQVMsZUFBZSxXQUFZO1lBQ3pFLE9BQU94SCw2REFBK0IsQ0FBQ3dILE9BQU9wRixLQUFLLENBQUNDLFFBQVE7UUFDOUQ7UUFFQSxPQUFPbUY7SUFDVDtJQUVBbkksaUZBQVlBLENBQUNnSSxnQkFBZ0I7UUFBQztZQUM1QnZGLEtBQUs7WUFDTEMsT0FBTyxTQUFTeUgsdUJBQXVCO2dCQUNyQyxJQUFJLElBQUksQ0FBQzdCLGNBQWMsRUFBRTtvQkFDdkIsSUFBSSxDQUFDQSxjQUFjLENBQUM4QixVQUFVO2dCQUNoQyxDQUFDO1lBQ0g7UUFDRjtRQUFHO1lBQ0QzSCxLQUFLO1lBQ0xDLE9BQU8sU0FBU0MsU0FBUztnQkFDdkIsSUFBSTBILE1BQ0FDLFNBQVMsSUFBSTtnQkFFakIsSUFBSUMsZUFBZSxJQUFJLENBQUN4SCxLQUFLLEVBQ3pCOEQsV0FBVzBELGFBQWExRCxRQUFRLEVBQ2hDNUQsWUFBWXNILGFBQWF0SCxTQUFTO2dCQUNsQ3NILGFBQWFmLFFBQVE7Z0JBQ3JCZSxhQUFhNUIsYUFBYTtnQkFDMUI0QixhQUFhbkIsV0FBVztnQkFDeEJtQixhQUFhMUYsV0FBVztnQkFDeEIsSUFBSTJGLFVBQVVELGFBQWFDLE9BQU8sRUFDbENDLHdCQUF3QkYsYUFBYUUscUJBQXFCLEVBQzFEQyx1QkFBdUJILGFBQWFHLG9CQUFvQixFQUN4REMscUJBQXFCSixhQUFhSSxrQkFBa0IsRUFDcERDLG9CQUFvQkwsYUFBYUssaUJBQWlCO2dCQUNsREwsYUFBYVosYUFBYTtnQkFDMUIsSUFBSXpHLFFBQVFxSCxhQUFhckgsS0FBSyxFQUM5QkMsT0FBT2pELDZGQUF3QkEsQ0FBQ3FLLGNBQWNwSTtnQkFFbEQsSUFBSVMsU0FBUyxJQUFJLENBQUNDLE9BQU87Z0JBQ3pCLElBQUlnSSxhQUFhLElBQUksQ0FBQ3JHLEtBQUssQ0FBQ2dGLFFBQVE7Z0JBQ3BDLElBQUloRSxVQUFVdkUsaURBQUVBLENBQUMsR0FBR29DLE1BQU0sQ0FBQ1QsUUFBUSxXQUFXLEdBQUdTLE1BQU0sQ0FBQ1QsUUFBUSx1QkFBd0J5SCxDQUFBQSxPQUFPLENBQUMsR0FBR2pLLG9GQUFlQSxDQUFDaUssTUFBTSxHQUFHaEgsTUFBTSxDQUFDVCxRQUFRLHdCQUF3QmlJLGFBQWF6SyxvRkFBZUEsQ0FBQ2lLLE1BQU0sR0FBR2hILE1BQU0sQ0FBQ1QsUUFBUSxrQkFBa0JNLFFBQVFtSCxJQUFJLEdBQUdwSDtnQkFDelAsSUFBSTZILFlBQVk7b0JBQ2RDLFdBQVdGLGFBQWEsSUFBSSxHQUFHLElBQUksQ0FBQ3JHLEtBQUssQ0FBQ21FLGFBQWEsR0FBRyxJQUFJLENBQUNuRSxLQUFLLENBQUM0RSxXQUFXO2dCQUNsRjtnQkFDQSxJQUFJNEIsa0JBQWtCLElBQUksQ0FBQ0MsV0FBVztnQkFDdEMsT0FDRSxXQUFXLEdBQ1gseUdBQXlHO2dCQUN6R3RLLDBEQUE0QixDQUFDLFVBQVVMLGdGQUFRQSxDQUFDO29CQUM5Q21ILE1BQU07b0JBQ05ELEtBQUssU0FBU0EsSUFBSXNCLElBQUksRUFBRTt3QkFDdEJ3QixPQUFPeEIsSUFBSSxHQUFHQTtvQkFDaEI7b0JBQ0FvQyxPQUFPSjtvQkFDUDdILFdBQVd1QztvQkFDWCxpQkFBaUJxRjtvQkFDakI5RCxPQUFPOEQsYUFBYUgsdUJBQXVCRCxxQkFBcUI7Z0JBQ2xFLEdBQUd0SCxNQUFNO29CQUNQcUgsU0FBU2pKLHVFQUFvQkEsQ0FBQzt3QkFBQ2lKO3dCQUFTLElBQUksQ0FBQ1csV0FBVztxQkFBQztvQkFDekRyRyxTQUFTLElBQUksQ0FBQ0QsV0FBVztvQkFDekJnQyxVQUFVQTtnQkFDWixJQUFJLFdBQVcsR0FBRWxHLDBEQUE0QixDQUFDLE9BQU87b0JBQ25ENkcsS0FBSyxTQUFTQSxJQUFJa0MsV0FBVyxFQUFFO3dCQUM3QlksT0FBT1osV0FBVyxHQUFHQTtvQkFDdkI7Z0JBQ0YsR0FBRyxXQUFXLEdBQUUvSSwwREFBNEIsQ0FBQyxPQUFPO29CQUNsRDZHLEtBQUssU0FBU0EsSUFBSWtCLFlBQVksRUFBRTt3QkFDOUI0QixPQUFPNUIsWUFBWSxHQUFHQTtvQkFDeEI7b0JBQ0F6RixXQUFXLEdBQUdJLE1BQU0sQ0FBQ1QsUUFBUTtnQkFDL0IsR0FBR29JLGVBQWUsQ0FBQyxFQUFFLEdBQUcsV0FBVyxHQUFFckssMERBQTRCLENBQUMsT0FBTztvQkFDdkVzQyxXQUFXLEdBQUdJLE1BQU0sQ0FBQ1QsUUFBUTtnQkFDL0IsR0FBRyxXQUFXLEdBQUVqQywwREFBNEIsQ0FBQyxRQUFRLElBQUksRUFBRWtLLGFBQWFELG9CQUFvQkQsa0JBQWtCLEdBQUc1SSxnQkFBaUJBLENBQUFBLGVBQWUsV0FBVyxHQUFFcEIsMERBQTRCLENBQUNVLDREQUFXQSxFQUFFLElBQUksS0FBSyxXQUFXLEdBQUVWLDBEQUE0QixDQUFDLE9BQU87b0JBQ2hRc0MsV0FBVyxHQUFHSSxNQUFNLENBQUNULFFBQVE7Z0JBQy9CLEdBQUdvSSxlQUFlLENBQUMsRUFBRTtZQUV6QjtRQUNGO0tBQUUsRUFBRTtRQUFDO1lBQ0h2SSxLQUFLO1lBQ0xDLE9BQU8sU0FBUytDLHlCQUNoQjJGLEtBQUssRUFBRTVHLEtBQUssRUFBRTtnQkFDWixJQUFJZ0YsV0FBVzRCLE1BQU01QixRQUFRLEVBQ3pCYixnQkFBZ0J5QyxNQUFNekMsYUFBYSxFQUNuQ1MsY0FBY2dDLE1BQU1oQyxXQUFXO2dCQUNuQyxJQUFJaUMsZUFBZTdHLE1BQU02RyxZQUFZLEVBQ2pDQyxvQkFBb0I5RyxNQUFNOEcsaUJBQWlCLEVBQzNDQyxrQkFBa0IvRyxNQUFNK0csZUFBZSxFQUN2Q0Msa0JBQWtCaEgsTUFBTWdGLFFBQVEsRUFDaENpQyx1QkFBdUJqSCxNQUFNbUUsYUFBYSxFQUMxQytDLHFCQUFxQmxILE1BQU00RSxXQUFXO2dCQUMxQyxJQUFJdUMsa0JBQWtCTixpQkFBaUI3QjtnQkFDdkMsSUFBSW9DLHVCQUF1Qk4sc0JBQXNCM0M7Z0JBQ2pELElBQUlrRCxxQkFBcUJOLG9CQUFvQm5DO2dCQUM3QyxPQUFPLENBQUN1QyxtQkFBbUIsQ0FBQ0Msd0JBQXdCLENBQUNDLHFCQUFxQixJQUFJLEdBQUc7b0JBQy9FckMsVUFBVSxDQUFDbUMsa0JBQWtCSCxrQkFBa0JoQyxRQUFRO29CQUN2RGIsZUFBZSxDQUFDaUQsdUJBQXVCSCx1QkFBdUI5QyxhQUFhO29CQUMzRVMsYUFBYSxDQUFDeUMscUJBQXFCSCxxQkFBcUJ0QyxXQUFXO29CQUNuRWlDLGNBQWM3QjtvQkFDZDhCLG1CQUFtQjNDO29CQUNuQjRDLGlCQUFpQm5DO2dCQUNuQixDQUFDO1lBQ0g7UUFDRjtLQUFFO0lBRUYsT0FBT3BCO0FBQ1QsRUFBRXBILDRDQUFTQTtBQUVYUixvRkFBZUEsQ0FBQzRILGdCQUFnQixhQUFhO0lBQzNDOztHQUVDLEdBQ0RoRixVQUFVaEMsd0RBQWM7SUFFeEI7O0dBRUMsR0FDRGlDLFdBQVdqQywwREFBZ0I7SUFFM0I7O0dBRUMsR0FDRHdJLFVBQVV4SSx3REFBYztJQUV4Qjs7R0FFQyxHQUNENkQsYUFBYXZELG9FQUFTQSxDQUFDTix3REFBYyxFQUFFO0lBRXZDOztHQUVDLEdBQ0Q0RixJQUFJNUYsMERBQWdCO0lBRXBCOzs7R0FHQyxHQUNEa0MsT0FBT2xDLHdEQUFjO0lBRXJCOztHQUVDLEdBQ0QySSxlQUFlM0ksd0RBQWM7SUFFN0I7O0lBRUUsR0FDRjhELFNBQVM5RCx3REFBYztJQUV2Qjs7R0FFQyxHQUNEd0osU0FBU3hKLHdEQUFjO0lBRXZCOztHQUVDLEdBQ0Q2RixVQUFVN0YsMERBQWdCO0lBRTFCOztHQUVDLEdBQ0R5Six1QkFBdUJ6SiwwREFBZ0I7SUFFdkM7O0dBRUMsR0FDRDJKLG9CQUFvQjNKLDBEQUFnQjtJQUVwQzs7R0FFQyxHQUNEMEosc0JBQXNCMUosMERBQWdCO0lBRXRDOztHQUVDLEdBQ0Q0SixtQkFBbUI1SiwwREFBZ0I7QUFDckM7QUFFQVosb0ZBQWVBLENBQUM0SCxnQkFBZ0IsZUFBZXhHLGlFQUFhQTtBQUU1RHBCLG9GQUFlQSxDQUFDNEgsZ0JBQWdCLGdCQUFnQjtJQUM5Q25CLFVBQVU7SUFDVjJDLFVBQVUsS0FBSztJQUNmYixlQUFlO0lBQ2ZTLGFBQWE7SUFDYk8sZUFBZSxTQUFTQSxnQkFBZ0I7UUFDdEMsT0FBTyxJQUFJO0lBQ2I7SUFDQTdFLFNBQVMsU0FBU0EsVUFBVSxDQUFDO0lBQzdCMkYsdUJBQXVCO0lBQ3ZCQyxzQkFBc0I7SUFDdEJ4SCxPQUFPLEtBQUs7QUFDZDtBQUVBLElBQUk0SSwwQkFBMEIsV0FBVyxHQUFFLFNBQVVDLFdBQVcsRUFBRTtJQUNoRXJNLDhFQUFTQSxDQUFDb00seUJBQXlCQztJQUVuQyxJQUFJQyxVQUFVcE0saUZBQVlBLENBQUNrTTtJQUUzQixTQUFTQSwwQkFBMEI7UUFDakNoTSxvRkFBZUEsQ0FBQyxJQUFJLEVBQUVnTTtRQUV0QixPQUFPRSxRQUFRekosS0FBSyxDQUFDLElBQUksRUFBRUM7SUFDN0I7SUFFQXhDLGlGQUFZQSxDQUFDOEwseUJBQXlCO1FBQUM7WUFDckNySixLQUFLO1lBQ0xDLE9BQU8sU0FBU0MsU0FBUztnQkFDdkIsSUFBSUMsU0FBUyxJQUFJLENBQUNDLE9BQU87Z0JBQ3pCLElBQUlHLFdBQVcsSUFBSSxDQUFDRCxLQUFLLENBQUNDLFFBQVE7Z0JBQ2xDLE9BQU8sV0FBVyxHQUFFckMsMERBQTRCLENBQUMsUUFBUTtvQkFDdkRzQyxXQUFXLEdBQUdJLE1BQU0sQ0FBQ1QsUUFBUTtnQkFDL0IsR0FBR0k7WUFDTDtRQUNGO0tBQUU7SUFFRixPQUFPOEk7QUFDVCxFQUFFbEwsNENBQVNBO0FBRVhSLG9GQUFlQSxDQUFDMEwseUJBQXlCLGFBQWE7SUFDcEQ7O0dBRUMsR0FDRDlJLFVBQVVoQyx3REFBYztBQUMxQjtBQUVBWixvRkFBZUEsQ0FBQzBMLHlCQUF5QixlQUFldEssaUVBQWFBO0FBRXJFLElBQUl5SywwQkFBMEIsV0FBVyxHQUFFLFNBQVVDLFdBQVcsRUFBRTtJQUNoRXhNLDhFQUFTQSxDQUFDdU0seUJBQXlCQztJQUVuQyxJQUFJQyxVQUFVdk0saUZBQVlBLENBQUNxTTtJQUUzQixTQUFTQSwwQkFBMEI7UUFDakNuTSxvRkFBZUEsQ0FBQyxJQUFJLEVBQUVtTTtRQUV0QixPQUFPRSxRQUFRNUosS0FBSyxDQUFDLElBQUksRUFBRUM7SUFDN0I7SUFFQXhDLGlGQUFZQSxDQUFDaU0seUJBQXlCO1FBQUM7WUFDckN4SixLQUFLO1lBQ0xDLE9BQU8sU0FBU0MsU0FBUztnQkFDdkIsSUFBSUssV0FBVyxJQUFJLENBQUNELEtBQUssQ0FBQ0MsUUFBUTtnQkFDbEMsSUFBSUosU0FBUyxJQUFJLENBQUNDLE9BQU87Z0JBQ3pCLE9BQU8sV0FBVyxHQUFFbEMsMERBQTRCLENBQUMsUUFBUTtvQkFDdkRzQyxXQUFXLEdBQUdJLE1BQU0sQ0FBQ1QsUUFBUTtnQkFDL0IsR0FBR0k7WUFDTDtRQUNGO0tBQUU7SUFFRixPQUFPaUo7QUFDVCxFQUFFckwsNENBQVNBO0FBRVhSLG9GQUFlQSxDQUFDNkwseUJBQXlCLGFBQWE7SUFDcEQ7O0dBRUMsR0FDRGpKLFVBQVVoQyx3REFBYztBQUMxQjtBQUVBWixvRkFBZUEsQ0FBQzZMLHlCQUF5QixlQUFlekssaUVBQWFBO0FBRTRDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGNhcmJvbi9yZWFjdC9lcy9jb21wb25lbnRzL1RpbGUvVGlsZS5qcz8wY2E2Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IElCTSBDb3JwLiAyMDE2LCAyMDIyXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlLTIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCB7IGluaGVyaXRzIGFzIF9pbmhlcml0cywgY3JlYXRlU3VwZXIgYXMgX2NyZWF0ZVN1cGVyLCBjbGFzc0NhbGxDaGVjayBhcyBfY2xhc3NDYWxsQ2hlY2ssIGNyZWF0ZUNsYXNzIGFzIF9jcmVhdGVDbGFzcywgb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgYXMgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLCBkZWZpbmVQcm9wZXJ0eSBhcyBfZGVmaW5lUHJvcGVydHksIGV4dGVuZHMgYXMgX2V4dGVuZHMsIGFzc2VydFRoaXNJbml0aWFsaXplZCBhcyBfYXNzZXJ0VGhpc0luaXRpYWxpemVkLCBzbGljZWRUb0FycmF5IGFzIF9zbGljZWRUb0FycmF5IH0gZnJvbSAnLi4vLi4vX3ZpcnR1YWwvX3JvbGx1cFBsdWdpbkJhYmVsSGVscGVycy5qcyc7XG5pbXBvcnQgUmVhY3RfX2RlZmF1bHQsIHsgQ29tcG9uZW50LCB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGN4IGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IExpbmsgZnJvbSAnLi4vTGluay9MaW5rLmpzJztcbmltcG9ydCB7IENoZWNrYm94Q2hlY2tlZEZpbGxlZCwgQ2hlY2tib3gsIENoZXZyb25Eb3duIH0gZnJvbSAnQGNhcmJvbi9pY29ucy1yZWFjdCc7XG5pbXBvcnQgZGVwcmVjYXRlIGZyb20gJy4uLy4uL3Byb3AtdHlwZXMvZGVwcmVjYXRlLmpzJztcbmltcG9ydCB7IGNvbXBvc2VFdmVudEhhbmRsZXJzIH0gZnJvbSAnLi4vLi4vdG9vbHMvZXZlbnRzLmpzJztcbmltcG9ydCB7IFByZWZpeENvbnRleHQsIHVzZVByZWZpeCB9IGZyb20gJy4uLy4uL2ludGVybmFsL3VzZVByZWZpeC5qcyc7XG5pbXBvcnQgeyBtYXRjaGVzIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwva2V5Ym9hcmQvbWF0Y2guanMnO1xuaW1wb3J0IHsgRW50ZXIsIFNwYWNlIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwva2V5Ym9hcmQva2V5cy5qcyc7XG5cbnZhciBfQ2hlY2tib3hDaGVja2VkRmlsbGUsIF9DaGVja2JveCwgX0NoZXZyb25Eb3duO1xuXG52YXIgX2V4Y2x1ZGVkID0gW1wiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJsaWdodFwiXSxcbiAgICBfZXhjbHVkZWQyID0gW1wiY2hpbGRyZW5cIiwgXCJocmVmXCIsIFwiY2xhc3NOYW1lXCIsIFwiaGFuZGxlQ2xpY2tcIiwgXCJoYW5kbGVLZXlEb3duXCIsIFwib25DbGlja1wiLCBcIm9uS2V5RG93blwiLCBcImNsaWNrZWRcIiwgXCJsaWdodFwiXSxcbiAgICBfZXhjbHVkZWQzID0gW1wiY2hpbGRyZW5cIiwgXCJpZFwiLCBcInRhYkluZGV4XCIsIFwidmFsdWVcIiwgXCJuYW1lXCIsIFwidGl0bGVcIiwgXCJpY29uRGVzY3JpcHRpb25cIiwgXCJjbGFzc05hbWVcIiwgXCJoYW5kbGVDbGlja1wiLCBcImhhbmRsZUtleURvd25cIiwgXCJvbkNsaWNrXCIsIFwib25DaGFuZ2VcIiwgXCJvbktleURvd25cIiwgXCJsaWdodFwiLCBcImRpc2FibGVkXCIsIFwic2VsZWN0ZWRcIl0sXG4gICAgX2V4Y2x1ZGVkNCA9IFtcInRhYkluZGV4XCIsIFwiY2xhc3NOYW1lXCIsIFwiZXhwYW5kZWRcIiwgXCJ0aWxlTWF4SGVpZ2h0XCIsIFwidGlsZVBhZGRpbmdcIiwgXCJoYW5kbGVDbGlja1wiLCBcIm9uS2V5VXBcIiwgXCJ0aWxlQ29sbGFwc2VkSWNvblRleHRcIiwgXCJ0aWxlRXhwYW5kZWRJY29uVGV4dFwiLCBcInRpbGVDb2xsYXBzZWRMYWJlbFwiLCBcInRpbGVFeHBhbmRlZExhYmVsXCIsIFwib25CZWZvcmVDbGlja1wiLCBcImxpZ2h0XCJdO1xudmFyIFRpbGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcbiAgX2luaGVyaXRzKFRpbGUsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoVGlsZSk7XG5cbiAgZnVuY3Rpb24gVGlsZSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVGlsZSk7XG5cbiAgICByZXR1cm4gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVGlsZSwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBwcmVmaXggPSB0aGlzLmNvbnRleHQ7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wcy5jaGlsZHJlbixcbiAgICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAgbGlnaHQgPSBfdGhpcyRwcm9wcy5saWdodCxcbiAgICAgICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF90aGlzJHByb3BzLCBfZXhjbHVkZWQpO1xuXG4gICAgICB2YXIgdGlsZUNsYXNzZXMgPSBjeChcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlXCIpLCBfZGVmaW5lUHJvcGVydHkoe30sIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWxpZ2h0XCIpLCBsaWdodCksIGNsYXNzTmFtZSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX2V4dGVuZHMoe1xuICAgICAgICBjbGFzc05hbWU6IHRpbGVDbGFzc2VzXG4gICAgICB9LCByZXN0KSwgY2hpbGRyZW4pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUaWxlO1xufShDb21wb25lbnQpO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZSwgXCJwcm9wVHlwZXNcIiwge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuXG4gIC8qKlxuICAgKiBUaGUgQ1NTIGNsYXNzIG5hbWVzLlxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgdG8gdXNlIHRoZSBsaWdodCB2ZXJzaW9uLiBGb3IgdXNlIG9uICR1aS0wMSBiYWNrZ3JvdW5kcyBvbmx5LlxuICAgKiBEb24ndCB1c2UgdGhpcyB0byBtYWtlIHRpbGUgYmFja2dyb3VuZCBjb2xvciBzYW1lIGFzIGNvbnRhaW5lciBiYWNrZ3JvdW5kIGNvbG9yLlxuICAgKi9cbiAgbGlnaHQ6IFByb3BUeXBlcy5ib29sXG59KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGUsIFwiY29udGV4dFR5cGVcIiwgUHJlZml4Q29udGV4dCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIGxpZ2h0OiBmYWxzZVxufSk7XG5cbnZhciBDbGlja2FibGVUaWxlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50Mikge1xuICBfaW5oZXJpdHMoQ2xpY2thYmxlVGlsZSwgX0NvbXBvbmVudDIpO1xuXG4gIHZhciBfc3VwZXIyID0gX2NyZWF0ZVN1cGVyKENsaWNrYWJsZVRpbGUpO1xuXG4gIGZ1bmN0aW9uIENsaWNrYWJsZVRpbGUoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIENsaWNrYWJsZVRpbGUpO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIF90aGlzID0gX3N1cGVyMi5jYWxsLmFwcGx5KF9zdXBlcjIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInN0YXRlXCIsIHt9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJoYW5kbGVDbGlja1wiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBldnQucGVyc2lzdCgpO1xuXG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGNsaWNrZWQ6ICFfdGhpcy5zdGF0ZS5jbGlja2VkXG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyRwcm9wcyRoYW5kbGVDbGksIF90aGlzJHByb3BzMiwgX3RoaXMkcHJvcHMkb25DbGljaywgX3RoaXMkcHJvcHMzO1xuXG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBoYW5kbGVDbGljayBwcm9wIHdoZW4gaGFuZGxlQ2xpY2sgaXMgZGVwcmVjYXRlZFxuICAgICAgICAoKF90aGlzJHByb3BzJGhhbmRsZUNsaSA9IChfdGhpcyRwcm9wczIgPSBfdGhpcy5wcm9wcykuaGFuZGxlQ2xpY2spID09PSBudWxsIHx8IF90aGlzJHByb3BzJGhhbmRsZUNsaSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkaGFuZGxlQ2xpLmNhbGwoX3RoaXMkcHJvcHMyLCBldnQpKSB8fCAoKF90aGlzJHByb3BzJG9uQ2xpY2sgPSAoX3RoaXMkcHJvcHMzID0gX3RoaXMucHJvcHMpLm9uQ2xpY2spID09PSBudWxsIHx8IF90aGlzJHByb3BzJG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJG9uQ2xpY2suY2FsbChfdGhpcyRwcm9wczMsIGV2dCkpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaGFuZGxlS2V5RG93blwiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBldnQucGVyc2lzdCgpO1xuXG4gICAgICBpZiAobWF0Y2hlcyhldnQsIFtFbnRlciwgU3BhY2VdKSkge1xuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgY2xpY2tlZDogIV90aGlzLnN0YXRlLmNsaWNrZWRcbiAgICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHZhciBfdGhpcyRwcm9wcyRoYW5kbGVLZXksIF90aGlzJHByb3BzNDtcblxuICAgICAgICAgIC8vIFRPRE86IFJlbW92ZSBoYW5kbGVLZXlEb3duIHByb3Agd2hlbiBoYW5kbGVLZXlEb3duIGlzIGRlcHJlY2F0ZWRcbiAgICAgICAgICAoKF90aGlzJHByb3BzJGhhbmRsZUtleSA9IChfdGhpcyRwcm9wczQgPSBfdGhpcy5wcm9wcykuaGFuZGxlS2V5RG93bikgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkaGFuZGxlS2V5ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRwcm9wcyRoYW5kbGVLZXkuY2FsbChfdGhpcyRwcm9wczQsIGV2dCkpIHx8IF90aGlzLnByb3BzLm9uS2V5RG93bihldnQpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBfdGhpcyRwcm9wcyRoYW5kbGVLZXkyLCBfdGhpcyRwcm9wczU7XG5cbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIGhhbmRsZUtleURvd24gcHJvcCB3aGVuIGhhbmRsZUtleURvd24gaXMgZGVwcmVjYXRlZFxuICAgICAgICAoKF90aGlzJHByb3BzJGhhbmRsZUtleTIgPSAoX3RoaXMkcHJvcHM1ID0gX3RoaXMucHJvcHMpLmhhbmRsZUtleURvd24pID09PSBudWxsIHx8IF90aGlzJHByb3BzJGhhbmRsZUtleTIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJGhhbmRsZUtleTIuY2FsbChfdGhpcyRwcm9wczUsIGV2dCkpIHx8IF90aGlzLnByb3BzLm9uS2V5RG93bihldnQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKENsaWNrYWJsZVRpbGUsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX2N4MjtcblxuICAgICAgdmFyIHByZWZpeCA9IHRoaXMuY29udGV4dDtcblxuICAgICAgdmFyIF90aGlzJHByb3BzNiA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wczYuY2hpbGRyZW4sXG4gICAgICAgICAgaHJlZiA9IF90aGlzJHByb3BzNi5ocmVmLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzNi5jbGFzc05hbWU7XG4gICAgICAgICAgX3RoaXMkcHJvcHM2LmhhbmRsZUNsaWNrO1xuICAgICAgICAgIF90aGlzJHByb3BzNi5oYW5kbGVLZXlEb3duO1xuICAgICAgICAgIF90aGlzJHByb3BzNi5vbkNsaWNrO1xuICAgICAgICAgIF90aGlzJHByb3BzNi5vbktleURvd247XG4gICAgICAgICAgX3RoaXMkcHJvcHM2LmNsaWNrZWQ7XG4gICAgICAgICAgdmFyIGxpZ2h0ID0gX3RoaXMkcHJvcHM2LmxpZ2h0LFxuICAgICAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3RoaXMkcHJvcHM2LCBfZXhjbHVkZWQyKTtcblxuICAgICAgdmFyIGNsYXNzZXMgPSBjeChcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlXCIpLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1jbGlja2FibGVcIiksIChfY3gyID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY3gyLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1pcy1jbGlja2VkXCIpLCB0aGlzLnN0YXRlLmNsaWNrZWQpLCBfZGVmaW5lUHJvcGVydHkoX2N4MiwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tbGlnaHRcIiksIGxpZ2h0KSwgX2N4MiksIGNsYXNzTmFtZSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoTGluaywgX2V4dGVuZHMoe1xuICAgICAgICBocmVmOiBocmVmLFxuICAgICAgICBjbGFzc05hbWU6IGNsYXNzZXNcbiAgICAgIH0sIHJlc3QsIHtcbiAgICAgICAgb25DbGljazogdGhpcy5oYW5kbGVDbGljayxcbiAgICAgICAgb25LZXlEb3duOiB0aGlzLmhhbmRsZUtleURvd25cbiAgICAgIH0pLCBjaGlsZHJlbik7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsXG4gICAgdmFsdWU6IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9wcm9wLXR5cGVzXG4gICAgZnVuY3Rpb24gZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKF9yZWYsIHN0YXRlKSB7XG4gICAgICB2YXIgY2xpY2tlZCA9IF9yZWYuY2xpY2tlZDtcbiAgICAgIHZhciBwcmV2Q2xpY2tlZCA9IHN0YXRlLnByZXZDbGlja2VkO1xuICAgICAgcmV0dXJuIHByZXZDbGlja2VkID09PSBjbGlja2VkID8gbnVsbCA6IHtcbiAgICAgICAgY2xpY2tlZDogY2xpY2tlZCxcbiAgICAgICAgcHJldkNsaWNrZWQ6IGNsaWNrZWRcbiAgICAgIH07XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIENsaWNrYWJsZVRpbGU7XG59KENvbXBvbmVudCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShDbGlja2FibGVUaWxlLCBcInByb3BUeXBlc1wiLCB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG5cbiAgLyoqXG4gICAqIFRoZSBDU1MgY2xhc3MgbmFtZXMuXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIERlcHJlY2F0ZWQgaW4gdjExLiBVc2UgJ29uQ2xpY2snIGluc3RlYWQuXG4gICAqL1xuICBoYW5kbGVDbGljazogZGVwcmVjYXRlKFByb3BUeXBlcy5mdW5jLCAnVGhlIGhhbmRsZUNsaWNrIHByb3AgZm9yIENsaWNrYWJsZVRpbGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBvbkNsaWNrLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIENsaWNrYWJsZVRpbGUgaXMgaW50ZXJhY3RlZCB3aXRoIHZpYSBhIGtleWJvYXJkXG4gICAqL1xuICBoYW5kbGVLZXlEb3duOiBkZXByZWNhdGUoUHJvcFR5cGVzLmZ1bmMsICdUaGUgaGFuZGxlS2V5RG93biBwcm9wIGZvciBDbGlja2FibGVUaWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Ygb25LZXlEb3duLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogVGhlIGhyZWYgZm9yIHRoZSBsaW5rLlxuICAgKi9cbiAgaHJlZjogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogYHRydWVgIHRvIHVzZSB0aGUgbGlnaHQgdmVyc2lvbi4gRm9yIHVzZSBvbiAkdWktMDEgYmFja2dyb3VuZHMgb25seS5cbiAgICogRG9uJ3QgdXNlIHRoaXMgdG8gbWFrZSB0aWxlIGJhY2tncm91bmQgY29sb3Igc2FtZSBhcyBjb250YWluZXIgYmFja2dyb3VuZCBjb2xvci5cbiAgICovXG4gIGxpZ2h0OiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIENsaWNrYWJsZVRpbGUgaXMgY2xpY2tlZFxuICAgKi9cbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBDbGlja2FibGVUaWxlIGlzIGludGVyYWN0ZWQgd2l0aCB2aWEgYSBrZXlib2FyZFxuICAgKi9cbiAgb25LZXlEb3duOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogVGhlIHJlbCBwcm9wZXJ0eSBmb3IgdGhlIGxpbmsuXG4gICAqL1xuICByZWw6IFByb3BUeXBlcy5zdHJpbmdcbn0pO1xuXG5fZGVmaW5lUHJvcGVydHkoQ2xpY2thYmxlVGlsZSwgXCJjb250ZXh0VHlwZVwiLCBQcmVmaXhDb250ZXh0KTtcblxuX2RlZmluZVByb3BlcnR5KENsaWNrYWJsZVRpbGUsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgY2xpY2tlZDogZmFsc2UsXG4gIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7fSxcbiAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oKSB7fSxcbiAgbGlnaHQ6IGZhbHNlXG59KTtcblxuZnVuY3Rpb24gU2VsZWN0YWJsZVRpbGUocHJvcHMpIHtcbiAgdmFyIF9jeDM7XG5cbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgICBpZCA9IHByb3BzLmlkLFxuICAgICAgdGFiSW5kZXggPSBwcm9wcy50YWJJbmRleCxcbiAgICAgIHZhbHVlID0gcHJvcHMudmFsdWUsXG4gICAgICBuYW1lID0gcHJvcHMubmFtZSxcbiAgICAgIHRpdGxlID0gcHJvcHMudGl0bGU7XG4gICAgICBwcm9wcy5pY29uRGVzY3JpcHRpb247XG4gICAgICB2YXIgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgaGFuZGxlQ2xpY2sgPSBwcm9wcy5oYW5kbGVDbGljayxcbiAgICAgIGhhbmRsZUtleURvd24gPSBwcm9wcy5oYW5kbGVLZXlEb3duLFxuICAgICAgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssXG4gICAgICBvbkNoYW5nZSA9IHByb3BzLm9uQ2hhbmdlLFxuICAgICAgb25LZXlEb3duID0gcHJvcHMub25LZXlEb3duLFxuICAgICAgbGlnaHQgPSBwcm9wcy5saWdodCxcbiAgICAgIGRpc2FibGVkID0gcHJvcHMuZGlzYWJsZWQsXG4gICAgICBzZWxlY3RlZCA9IHByb3BzLnNlbGVjdGVkLFxuICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhwcm9wcywgX2V4Y2x1ZGVkMyk7XG5cbiAgdmFyIHByZWZpeCA9IHVzZVByZWZpeCgpOyAvLyBUT0RPOiByZXBsYWNlIHdpdGggb25DbGljayB3aGVuIGhhbmRsZUNsaWNrIHByb3AgaXMgZGVwcmVjYXRlZFxuXG4gIHZhciBjbGlja0hhbmRsZXIgPSBoYW5kbGVDbGljayB8fCBvbkNsaWNrOyAvLyBUT0RPOiByZXBsYWNlIHdpdGggb25LZXlEb3duIHdoZW4gaGFuZGxlS2V5RG93biBwcm9wIGlzIGRlcHJlY2F0ZWRcblxuICB2YXIga2V5RG93bkhhbmRsZXIgPSBoYW5kbGVLZXlEb3duIHx8IG9uS2V5RG93bjtcblxuICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUoc2VsZWN0ZWQpLFxuICAgICAgX3VzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZSwgMiksXG4gICAgICBpc1NlbGVjdGVkID0gX3VzZVN0YXRlMlswXSxcbiAgICAgIHNldElzU2VsZWN0ZWQgPSBfdXNlU3RhdGUyWzFdO1xuXG4gIHZhciBpbnB1dCA9IHVzZVJlZihudWxsKTtcbiAgdmFyIGNsYXNzZXMgPSBjeChcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlXCIpLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1zZWxlY3RhYmxlXCIpLCAoX2N4MyA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2N4MywgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0taXMtc2VsZWN0ZWRcIiksIGlzU2VsZWN0ZWQpLCBfZGVmaW5lUHJvcGVydHkoX2N4MywgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tbGlnaHRcIiksIGxpZ2h0KSwgX2RlZmluZVByb3BlcnR5KF9jeDMsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWRpc2FibGVkXCIpLCBkaXNhYmxlZCksIF9jeDMpLCBjbGFzc05hbWUpO1xuICB2YXIgaW5wdXRDbGFzc2VzID0gY3goXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1pbnB1dFwiKSwgX2RlZmluZVByb3BlcnR5KHt9LCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWlucHV0LS1jaGVja2VkXCIpLCBpc1NlbGVjdGVkKSk7IC8vIFRPRE86IHJlbmFtZSB0byBoYW5kbGVDbGljayB3aGVuIGhhbmRsZUNsaWNrIHByb3AgaXMgZGVwcmVjYXRlZFxuXG4gIGZ1bmN0aW9uIGhhbmRsZU9uQ2xpY2soZXZ0KSB7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZ0LnBlcnNpc3QoKTtcbiAgICBzZXRJc1NlbGVjdGVkKCFpc1NlbGVjdGVkKTtcbiAgICBjbGlja0hhbmRsZXIoZXZ0KTtcbiAgICBvbkNoYW5nZShldnQpO1xuICB9IC8vIFRPRE86IHJlbmFtZSB0byBoYW5kbGVLZXlEb3duIHdoZW4gaGFuZGxlS2V5RG93biBwcm9wIGlzIGRlcHJlY2F0ZWRcblxuXG4gIGZ1bmN0aW9uIGhhbmRsZU9uS2V5RG93bihldnQpIHtcbiAgICBldnQucGVyc2lzdCgpO1xuXG4gICAgaWYgKG1hdGNoZXMoZXZ0LCBbRW50ZXIsIFNwYWNlXSkpIHtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgc2V0SXNTZWxlY3RlZCghaXNTZWxlY3RlZCk7XG4gICAgICBvbkNoYW5nZShldnQpO1xuICAgIH1cblxuICAgIGtleURvd25IYW5kbGVyKGV2dCk7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVDaGFuZ2UoZXZlbnQpIHtcbiAgICBzZXRJc1NlbGVjdGVkKGV2ZW50LnRhcmdldC5jaGVja2VkKTtcbiAgICBvbkNoYW5nZShldmVudCk7XG4gIH1cblxuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHNldElzU2VsZWN0ZWQoc2VsZWN0ZWQpO1xuICB9LCBbc2VsZWN0ZWRdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFJlYWN0X19kZWZhdWx0LkZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHtcbiAgICByZWY6IGlucHV0LFxuICAgIHRhYkluZGV4OiAtMSxcbiAgICBpZDogaWQsXG4gICAgY2xhc3NOYW1lOiBpbnB1dENsYXNzZXMsXG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIG9uQ2hhbmdlOiAhZGlzYWJsZWQgPyBoYW5kbGVDaGFuZ2UgOiBudWxsLFxuICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgbmFtZTogbmFtZSxcbiAgICB0aXRsZTogdGl0bGUsXG4gICAgY2hlY2tlZDogaXNTZWxlY3RlZFxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJsYWJlbFwiLCBfZXh0ZW5kcyh7XG4gICAgaHRtbEZvcjogaWQsXG4gICAgY2xhc3NOYW1lOiBjbGFzc2VzIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9uby1ub25pbnRlcmFjdGl2ZS10YWJpbmRleFxuICAgICxcbiAgICB0YWJJbmRleDogIWRpc2FibGVkID8gdGFiSW5kZXggOiBudWxsXG4gIH0sIHJlc3QsIHtcbiAgICBvbkNsaWNrOiAhZGlzYWJsZWQgPyBoYW5kbGVPbkNsaWNrIDogbnVsbCxcbiAgICBvbktleURvd246ICFkaXNhYmxlZCA/IGhhbmRsZU9uS2V5RG93biA6IG51bGxcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlX19jaGVja21hcmsgXCIpLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlX19jaGVja21hcmstLXBlcnNpc3RlbnRcIilcbiAgfSwgaXNTZWxlY3RlZCA/IF9DaGVja2JveENoZWNrZWRGaWxsZSB8fCAoX0NoZWNrYm94Q2hlY2tlZEZpbGxlID0gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tib3hDaGVja2VkRmlsbGVkLCBudWxsKSkgOiBfQ2hlY2tib3ggfHwgKF9DaGVja2JveCA9IC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KENoZWNrYm94LCBudWxsKSkpLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1jb250ZW50XCIpXG4gIH0sIGNoaWxkcmVuKSkpO1xufVxuU2VsZWN0YWJsZVRpbGUuZGVmYXVsdFByb3BzID0ge1xuICB2YWx1ZTogJ3ZhbHVlJyxcbiAgdGl0bGU6ICd0aXRsZScsXG4gIHNlbGVjdGVkOiBmYWxzZSxcbiAgdGFiSW5kZXg6IDAsXG4gIGxpZ2h0OiBmYWxzZSxcbiAgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHt9LFxuICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoKSB7fSxcbiAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oKSB7fVxufTtcblNlbGVjdGFibGVUaWxlLnByb3BUeXBlcyA9IHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcblxuICAvKipcbiAgICogVGhlIENTUyBjbGFzcyBuYW1lcy5cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogU3BlY2lmeSB3aGV0aGVyIHRoZSBTZWxlY3RhYmxlVGlsZSBzaG91bGQgYmUgZGlzYWJsZWRcbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIFNlbGVjdGFibGVUaWxlIGlzIGNsaWNrZWRcbiAgICovXG4gIGhhbmRsZUNsaWNrOiBkZXByZWNhdGUoUHJvcFR5cGVzLmZ1bmMsICdUaGUgYGhhbmRsZUNsaWNrYCBwcm9wIGZvciBgU2VsZWN0YWJsZVRpbGVgIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgYG9uQ2xpY2tgLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIFNlbGVjdGFibGVUaWxlIGlzIGludGVyYWN0ZWQgd2l0aCB2aWEgYSBrZXlib2FyZFxuICAgKi9cbiAgaGFuZGxlS2V5RG93bjogZGVwcmVjYXRlKFByb3BUeXBlcy5mdW5jLCAnVGhlIGBoYW5kbGVLZXlEb3duYCBwcm9wIGZvciBgU2VsZWN0YWJsZVRpbGVgIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgYG9uS2V5RG93bmAuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGNoZWNrbWFyayBpY29uLlxuICAgKi9cbiAgaWNvbkRlc2NyaXB0aW9uOiBkZXByZWNhdGUoUHJvcFR5cGVzLnN0cmluZywgJ1RoZSBgaWNvbkRlc2NyaXB0aW9uYCBwcm9wIGZvciBgU2VsZWN0YWJsZVRpbGVgIGlzIG5vIGxvbmdlciBuZWVkZWQgYW5kIGhhcyAnICsgJ2JlZW4gZGVwcmVjYXRlZC4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgYDxpbnB1dD5gLlxuICAgKi9cbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCB0byB1c2UgdGhlIGxpZ2h0IHZlcnNpb24uIEZvciB1c2Ugb24gJHVpLTAxIGJhY2tncm91bmRzIG9ubHkuXG4gICAqIERvbid0IHVzZSB0aGlzIHRvIG1ha2UgdGlsZSBiYWNrZ3JvdW5kIGNvbG9yIHNhbWUgYXMgY29udGFpbmVyIGJhY2tncm91bmQgY29sb3IuXG4gICAqL1xuICBsaWdodDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIFRoZSBgbmFtZWAgb2YgdGhlIGA8aW5wdXQ+YC5cbiAgICovXG4gIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFRoZSBlbXB0eSBoYW5kbGVyIG9mIHRoZSBgPGlucHV0PmAuXG4gICAqL1xuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBTZWxlY3RhYmxlVGlsZSBpcyBjbGlja2VkXG4gICAqL1xuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIFNlbGVjdGFibGVUaWxlIGlzIGludGVyYWN0ZWQgd2l0aCB2aWEgYSBrZXlib2FyZFxuICAgKi9cbiAgb25LZXlEb3duOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogYHRydWVgIHRvIHNlbGVjdCB0aGlzIHRpbGUuXG4gICAqL1xuICBzZWxlY3RlZDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIHRhYiBpbmRleCBvZiB0aGUgd3JhcHBlciBlbGVtZW50XG4gICAqL1xuICB0YWJJbmRleDogUHJvcFR5cGVzLm51bWJlcixcblxuICAvKipcbiAgICogVGhlIGB0aXRsZWAgb2YgdGhlIGA8aW5wdXQ+YC5cbiAgICovXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIGA8aW5wdXQ+YC5cbiAgICovXG4gIHZhbHVlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubnVtYmVyXSkuaXNSZXF1aXJlZFxufTtcbnZhciBFeHBhbmRhYmxlVGlsZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudDMpIHtcbiAgX2luaGVyaXRzKEV4cGFuZGFibGVUaWxlLCBfQ29tcG9uZW50Myk7XG5cbiAgdmFyIF9zdXBlcjMgPSBfY3JlYXRlU3VwZXIoRXhwYW5kYWJsZVRpbGUpO1xuXG4gIGZ1bmN0aW9uIEV4cGFuZGFibGVUaWxlKCkge1xuICAgIHZhciBfdGhpczI7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRXhwYW5kYWJsZVRpbGUpO1xuXG4gICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICBhcmdzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgfVxuXG4gICAgX3RoaXMyID0gX3N1cGVyMy5jYWxsLmFwcGx5KF9zdXBlcjMsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJzdGF0ZVwiLCB7fSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcInJlc2l6ZU9ic2VydmVyXCIsIG51bGwpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJjb21wb25lbnREaWRNb3VudFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpczIucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZnVuY3Rpb24gKGVudHJpZXMpIHtcbiAgICAgICAgdmFyIF9lbnRyaWVzID0gX3NsaWNlZFRvQXJyYXkoZW50cmllcywgMSksXG4gICAgICAgICAgICBhYm92ZVRoZUZvbGQgPSBfZW50cmllc1swXTtcblxuICAgICAgICBfdGhpczIuc2V0U3RhdGUoe1xuICAgICAgICAgIHRpbGVNYXhIZWlnaHQ6IGFib3ZlVGhlRm9sZC5jb250ZW50UmVjdC5oZWlnaHRcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKF90aGlzMi50aWxlKSB7XG4gICAgICAgIHZhciBnZXRTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKF90aGlzMi50aWxlLCBudWxsKTtcblxuICAgICAgICBpZiAoX3RoaXMyLmFib3ZlVGhlRm9sZCkge1xuICAgICAgICAgIF90aGlzMi5yZXNpemVPYnNlcnZlci5vYnNlcnZlKF90aGlzMi5hYm92ZVRoZUZvbGQpO1xuXG4gICAgICAgICAgX3RoaXMyLnNldFN0YXRlKHtcbiAgICAgICAgICAgIHRpbGVNYXhIZWlnaHQ6IF90aGlzMi5hYm92ZVRoZUZvbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0LFxuICAgICAgICAgICAgdGlsZVBhZGRpbmc6IHBhcnNlSW50KGdldFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctdG9wJyksIDEwKSArIHBhcnNlSW50KGdldFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctYm90dG9tJyksIDEwKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcImNvbXBvbmVudERpZFVwZGF0ZVwiLCBmdW5jdGlvbiAocHJldlByb3BzKSB7XG4gICAgICBpZiAocHJldlByb3BzLmV4cGFuZGVkICE9PSBfdGhpczIucHJvcHMuZXhwYW5kZWQpIHtcbiAgICAgICAgX3RoaXMyLnNldE1heEhlaWdodCgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJzZXRNYXhIZWlnaHRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKF90aGlzMi5zdGF0ZS5leHBhbmRlZCA/IF90aGlzMi50aWxlQ29udGVudCA6IF90aGlzMi5hYm92ZVRoZUZvbGQpIHtcbiAgICAgICAgX3RoaXMyLnNldFN0YXRlKHtcbiAgICAgICAgICB0aWxlTWF4SGVpZ2h0OiBfdGhpczIuc3RhdGUuZXhwYW5kZWQgPyBfdGhpczIudGlsZUNvbnRlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0IDogX3RoaXMyLmFib3ZlVGhlRm9sZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcImhhbmRsZUNsaWNrXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGlmICghX3RoaXMyLnByb3BzLm9uQmVmb3JlQ2xpY2soZXZ0KSB8fCBldnQudGFyZ2V0LnRhZ05hbWUgPT09ICdJTlBVVCcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBldnQucGVyc2lzdCgpO1xuXG4gICAgICBfdGhpczIuc2V0U3RhdGUoe1xuICAgICAgICBleHBhbmRlZDogIV90aGlzMi5zdGF0ZS5leHBhbmRlZFxuICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMyJHByb3BzJGhhbmRsZUNsLCBfdGhpczIkcHJvcHMsIF90aGlzMiRwcm9wcyRvbkNsaWNrLCBfdGhpczIkcHJvcHMyO1xuXG4gICAgICAgIF90aGlzMi5zZXRNYXhIZWlnaHQoKTsgLy8gVE9ETzogUmVtb3ZlIGhhbmRsZUNsaWNrIHByb3Agd2hlbiBoYW5kbGVDbGljayBpcyBkZXByZWNhdGVkXG5cblxuICAgICAgICAoKF90aGlzMiRwcm9wcyRoYW5kbGVDbCA9IChfdGhpczIkcHJvcHMgPSBfdGhpczIucHJvcHMpLmhhbmRsZUNsaWNrKSA9PT0gbnVsbCB8fCBfdGhpczIkcHJvcHMkaGFuZGxlQ2wgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzMiRwcm9wcyRoYW5kbGVDbC5jYWxsKF90aGlzMiRwcm9wcywgZXZ0KSkgfHwgKChfdGhpczIkcHJvcHMkb25DbGljayA9IChfdGhpczIkcHJvcHMyID0gX3RoaXMyLnByb3BzKS5vbkNsaWNrKSA9PT0gbnVsbCB8fCBfdGhpczIkcHJvcHMkb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMyJHByb3BzJG9uQ2xpY2suY2FsbChfdGhpczIkcHJvcHMyLCBldnQpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJoYW5kbGVLZXlVcFwiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBpZiAoZXZ0LnRhcmdldCAhPT0gX3RoaXMyLnRpbGUpIHtcbiAgICAgICAgaWYgKG1hdGNoZXMoZXZ0LCBbRW50ZXIsIFNwYWNlXSkpIHtcbiAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJnZXRDaGlsZHJlblwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gUmVhY3RfX2RlZmF1bHQuQ2hpbGRyZW4udG9BcnJheShfdGhpczIucHJvcHMuY2hpbGRyZW4pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIF90aGlzMjtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhFeHBhbmRhYmxlVGlsZSwgW3tcbiAgICBrZXk6IFwiY29tcG9uZW50V2lsbFVubW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICBpZiAodGhpcy5yZXNpemVPYnNlcnZlcikge1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfY3g1LFxuICAgICAgICAgIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9wczcgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIHRhYkluZGV4ID0gX3RoaXMkcHJvcHM3LnRhYkluZGV4LFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzNy5jbGFzc05hbWU7XG4gICAgICAgICAgX3RoaXMkcHJvcHM3LmV4cGFuZGVkO1xuICAgICAgICAgIF90aGlzJHByb3BzNy50aWxlTWF4SGVpZ2h0O1xuICAgICAgICAgIF90aGlzJHByb3BzNy50aWxlUGFkZGluZztcbiAgICAgICAgICBfdGhpcyRwcm9wczcuaGFuZGxlQ2xpY2s7XG4gICAgICAgICAgdmFyIG9uS2V5VXAgPSBfdGhpcyRwcm9wczcub25LZXlVcCxcbiAgICAgICAgICB0aWxlQ29sbGFwc2VkSWNvblRleHQgPSBfdGhpcyRwcm9wczcudGlsZUNvbGxhcHNlZEljb25UZXh0LFxuICAgICAgICAgIHRpbGVFeHBhbmRlZEljb25UZXh0ID0gX3RoaXMkcHJvcHM3LnRpbGVFeHBhbmRlZEljb25UZXh0LFxuICAgICAgICAgIHRpbGVDb2xsYXBzZWRMYWJlbCA9IF90aGlzJHByb3BzNy50aWxlQ29sbGFwc2VkTGFiZWwsXG4gICAgICAgICAgdGlsZUV4cGFuZGVkTGFiZWwgPSBfdGhpcyRwcm9wczcudGlsZUV4cGFuZGVkTGFiZWw7XG4gICAgICAgICAgX3RoaXMkcHJvcHM3Lm9uQmVmb3JlQ2xpY2s7XG4gICAgICAgICAgdmFyIGxpZ2h0ID0gX3RoaXMkcHJvcHM3LmxpZ2h0LFxuICAgICAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3RoaXMkcHJvcHM3LCBfZXhjbHVkZWQ0KTtcblxuICAgICAgdmFyIHByZWZpeCA9IHRoaXMuY29udGV4dDtcbiAgICAgIHZhciBpc0V4cGFuZGVkID0gdGhpcy5zdGF0ZS5leHBhbmRlZDtcbiAgICAgIHZhciBjbGFzc2VzID0gY3goXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZVwiKSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tZXhwYW5kYWJsZVwiKSwgKF9jeDUgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jeDUsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWlzLWV4cGFuZGVkXCIpLCBpc0V4cGFuZGVkKSwgX2RlZmluZVByb3BlcnR5KF9jeDUsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWxpZ2h0XCIpLCBsaWdodCksIF9jeDUpLCBjbGFzc05hbWUpO1xuICAgICAgdmFyIHRpbGVTdHlsZSA9IHtcbiAgICAgICAgbWF4SGVpZ2h0OiBpc0V4cGFuZGVkID8gbnVsbCA6IHRoaXMuc3RhdGUudGlsZU1heEhlaWdodCArIHRoaXMuc3RhdGUudGlsZVBhZGRpbmdcbiAgICAgIH07XG4gICAgICB2YXIgY2hpbGRyZW5Bc0FycmF5ID0gdGhpcy5nZXRDaGlsZHJlbigpO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgLyojX19QVVJFX18qL1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyxqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnNcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCBfZXh0ZW5kcyh7XG4gICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICByZWY6IGZ1bmN0aW9uIHJlZih0aWxlKSB7XG4gICAgICAgICAgICBfdGhpczMudGlsZSA9IHRpbGU7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdHlsZTogdGlsZVN0eWxlLFxuICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3NlcyxcbiAgICAgICAgICBcImFyaWEtZXhwYW5kZWRcIjogaXNFeHBhbmRlZCxcbiAgICAgICAgICB0aXRsZTogaXNFeHBhbmRlZCA/IHRpbGVFeHBhbmRlZEljb25UZXh0IDogdGlsZUNvbGxhcHNlZEljb25UZXh0XG4gICAgICAgIH0sIHJlc3QsIHtcbiAgICAgICAgICBvbktleVVwOiBjb21wb3NlRXZlbnRIYW5kbGVycyhbb25LZXlVcCwgdGhpcy5oYW5kbGVLZXlVcF0pLFxuICAgICAgICAgIG9uQ2xpY2s6IHRoaXMuaGFuZGxlQ2xpY2ssXG4gICAgICAgICAgdGFiSW5kZXg6IHRhYkluZGV4XG4gICAgICAgIH0pLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgcmVmOiBmdW5jdGlvbiByZWYodGlsZUNvbnRlbnQpIHtcbiAgICAgICAgICAgIF90aGlzMy50aWxlQ29udGVudCA9IHRpbGVDb250ZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgIHJlZjogZnVuY3Rpb24gcmVmKGFib3ZlVGhlRm9sZCkge1xuICAgICAgICAgICAgX3RoaXMzLmFib3ZlVGhlRm9sZCA9IGFib3ZlVGhlRm9sZDtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1jb250ZW50XCIpXG4gICAgICAgIH0sIGNoaWxkcmVuQXNBcnJheVswXSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVfX2NoZXZyb25cIilcbiAgICAgICAgfSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIG51bGwsIGlzRXhwYW5kZWQgPyB0aWxlRXhwYW5kZWRMYWJlbCA6IHRpbGVDb2xsYXBzZWRMYWJlbCksIF9DaGV2cm9uRG93biB8fCAoX0NoZXZyb25Eb3duID0gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoQ2hldnJvbkRvd24sIG51bGwpKSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtY29udGVudFwiKVxuICAgICAgICB9LCBjaGlsZHJlbkFzQXJyYXlbMV0pKSlcbiAgICAgICk7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyggLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L3Byb3AtdHlwZXNcbiAgICBfcmVmMiwgc3RhdGUpIHtcbiAgICAgIHZhciBleHBhbmRlZCA9IF9yZWYyLmV4cGFuZGVkLFxuICAgICAgICAgIHRpbGVNYXhIZWlnaHQgPSBfcmVmMi50aWxlTWF4SGVpZ2h0LFxuICAgICAgICAgIHRpbGVQYWRkaW5nID0gX3JlZjIudGlsZVBhZGRpbmc7XG4gICAgICB2YXIgcHJldkV4cGFuZGVkID0gc3RhdGUucHJldkV4cGFuZGVkLFxuICAgICAgICAgIHByZXZUaWxlTWF4SGVpZ2h0ID0gc3RhdGUucHJldlRpbGVNYXhIZWlnaHQsXG4gICAgICAgICAgcHJldlRpbGVQYWRkaW5nID0gc3RhdGUucHJldlRpbGVQYWRkaW5nLFxuICAgICAgICAgIGN1cnJlbnRFeHBhbmRlZCA9IHN0YXRlLmV4cGFuZGVkLFxuICAgICAgICAgIGN1cnJlbnRUaWxlTWF4SGVpZ2h0ID0gc3RhdGUudGlsZU1heEhlaWdodCxcbiAgICAgICAgICBjdXJyZW50VGlsZVBhZGRpbmcgPSBzdGF0ZS50aWxlUGFkZGluZztcbiAgICAgIHZhciBleHBhbmRlZENoYW5nZWQgPSBwcmV2RXhwYW5kZWQgIT09IGV4cGFuZGVkO1xuICAgICAgdmFyIHRpbGVNYXhIZWlnaHRDaGFuZ2VkID0gcHJldlRpbGVNYXhIZWlnaHQgIT09IHRpbGVNYXhIZWlnaHQ7XG4gICAgICB2YXIgdGlsZVBhZGRpbmdDaGFuZ2VkID0gcHJldlRpbGVQYWRkaW5nICE9PSB0aWxlUGFkZGluZztcbiAgICAgIHJldHVybiAhZXhwYW5kZWRDaGFuZ2VkICYmICF0aWxlTWF4SGVpZ2h0Q2hhbmdlZCAmJiAhdGlsZVBhZGRpbmdDaGFuZ2VkID8gbnVsbCA6IHtcbiAgICAgICAgZXhwYW5kZWQ6ICFleHBhbmRlZENoYW5nZWQgPyBjdXJyZW50RXhwYW5kZWQgOiBleHBhbmRlZCxcbiAgICAgICAgdGlsZU1heEhlaWdodDogIXRpbGVNYXhIZWlnaHRDaGFuZ2VkID8gY3VycmVudFRpbGVNYXhIZWlnaHQgOiB0aWxlTWF4SGVpZ2h0LFxuICAgICAgICB0aWxlUGFkZGluZzogIXRpbGVQYWRkaW5nQ2hhbmdlZCA/IGN1cnJlbnRUaWxlUGFkZGluZyA6IHRpbGVQYWRkaW5nLFxuICAgICAgICBwcmV2RXhwYW5kZWQ6IGV4cGFuZGVkLFxuICAgICAgICBwcmV2VGlsZU1heEhlaWdodDogdGlsZU1heEhlaWdodCxcbiAgICAgICAgcHJldlRpbGVQYWRkaW5nOiB0aWxlUGFkZGluZ1xuICAgICAgfTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRXhwYW5kYWJsZVRpbGU7XG59KENvbXBvbmVudCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShFeHBhbmRhYmxlVGlsZSwgXCJwcm9wVHlwZXNcIiwge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuXG4gIC8qKlxuICAgKiBUaGUgQ1NTIGNsYXNzIG5hbWVzLlxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgaWYgdGhlIHRpbGUgaXMgZXhwYW5kZWQuXG4gICAqL1xuICBleHBhbmRlZDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIERlcHJlY2F0ZWQgaW4gdjExLiBVc2UgJ29uQ2xpY2snIGluc3RlYWQuXG4gICAqL1xuICBoYW5kbGVDbGljazogZGVwcmVjYXRlKFByb3BUeXBlcy5mdW5jLCAnVGhlIGhhbmRsZUNsaWNrIHByb3AgZm9yIEV4cGFuZGFibGVUaWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Ygb25DbGljay4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIEFuIElEIHRoYXQgY2FuIGJlIHByb3ZpZGVkIHRvIGFyaWEtbGFiZWxsZWRieVxuICAgKi9cbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCB0byB1c2UgdGhlIGxpZ2h0IHZlcnNpb24uIEZvciB1c2Ugb24gJHVpLTAxIGJhY2tncm91bmRzIG9ubHkuXG4gICAqIERvbid0IHVzZSB0aGlzIHRvIG1ha2UgdGlsZSBiYWNrZ3JvdW5kIGNvbG9yIHNhbWUgYXMgY29udGFpbmVyIGJhY2tncm91bmQgY29sb3IuXG4gICAqL1xuICBsaWdodDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIG9wdGlvbmFsIGhhbmRsZXIgdG8gZGVjaWRlIHdoZXRoZXIgdG8gaWdub3JlIGEgY2xpY2suIHJldHVybnMgZmFsc2UgaWYgY2xpY2sgc2hvdWxkIGJlIGlnbm9yZWRcbiAgICovXG4gIG9uQmVmb3JlQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgRXhwYW5kYWJsZVRpbGUgaXMgY2xpY2tlZFxuICAgICovXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBvcHRpb25hbCBoYW5kbGVyIHRvIHRyaWdnZXIgYSBmdW5jdGlvbiB3aGVuIGEga2V5IGlzIHByZXNzZWRcbiAgICovXG4gIG9uS2V5VXA6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBUaGUgYHRhYmluZGV4YCBhdHRyaWJ1dGUuXG4gICAqL1xuICB0YWJJbmRleDogUHJvcFR5cGVzLm51bWJlcixcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBcImNvbGxhcHNlZFwiIGljb24gdGhhdCBjYW4gYmUgcmVhZCBieSBzY3JlZW4gcmVhZGVycy5cbiAgICovXG4gIHRpbGVDb2xsYXBzZWRJY29uVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogV2hlbiBcImNvbGxhcHNlZFwiLCBhIGxhYmVsIHRvIGFwcGVhciBuZXh0IHRvIHRoZSBjaGV2cm9uIChlLmcuLCBcIlZpZXcgbW9yZVwiKS5cbiAgICovXG4gIHRpbGVDb2xsYXBzZWRMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBcImV4cGFuZGVkXCIgaWNvbiB0aGF0IGNhbiBiZSByZWFkIGJ5IHNjcmVlbiByZWFkZXJzLlxuICAgKi9cbiAgdGlsZUV4cGFuZGVkSWNvblRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFdoZW4gXCJleHBhbmRlZFwiLCBhIGxhYmVsIHRvIGFwcGVhciBuZXh0IHRvIHRoZSBjaGV2cm9uIChlLmcuLCBcIlZpZXcgbGVzc1wiKS5cbiAgICovXG4gIHRpbGVFeHBhbmRlZExhYmVsOiBQcm9wVHlwZXMuc3RyaW5nXG59KTtcblxuX2RlZmluZVByb3BlcnR5KEV4cGFuZGFibGVUaWxlLCBcImNvbnRleHRUeXBlXCIsIFByZWZpeENvbnRleHQpO1xuXG5fZGVmaW5lUHJvcGVydHkoRXhwYW5kYWJsZVRpbGUsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgdGFiSW5kZXg6IDAsXG4gIGV4cGFuZGVkOiBmYWxzZSxcbiAgdGlsZU1heEhlaWdodDogMCxcbiAgdGlsZVBhZGRpbmc6IDAsXG4gIG9uQmVmb3JlQ2xpY2s6IGZ1bmN0aW9uIG9uQmVmb3JlQ2xpY2soKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7fSxcbiAgdGlsZUNvbGxhcHNlZEljb25UZXh0OiAnSW50ZXJhY3QgdG8gZXhwYW5kIFRpbGUnLFxuICB0aWxlRXhwYW5kZWRJY29uVGV4dDogJ0ludGVyYWN0IHRvIGNvbGxhcHNlIFRpbGUnLFxuICBsaWdodDogZmFsc2Vcbn0pO1xuXG52YXIgVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQ0KSB7XG4gIF9pbmhlcml0cyhUaWxlQWJvdmVUaGVGb2xkQ29udGVudCwgX0NvbXBvbmVudDQpO1xuXG4gIHZhciBfc3VwZXI0ID0gX2NyZWF0ZVN1cGVyKFRpbGVBYm92ZVRoZUZvbGRDb250ZW50KTtcblxuICBmdW5jdGlvbiBUaWxlQWJvdmVUaGVGb2xkQ29udGVudCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQpO1xuXG4gICAgcmV0dXJuIF9zdXBlcjQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhUaWxlQWJvdmVUaGVGb2xkQ29udGVudCwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBwcmVmaXggPSB0aGlzLmNvbnRleHQ7XG4gICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1jb250ZW50X19hYm92ZS10aGUtZm9sZFwiKVxuICAgICAgfSwgY2hpbGRyZW4pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUaWxlQWJvdmVUaGVGb2xkQ29udGVudDtcbn0oQ29tcG9uZW50KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGVBYm92ZVRoZUZvbGRDb250ZW50LCBcInByb3BUeXBlc1wiLCB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGVcbn0pO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQsIFwiY29udGV4dFR5cGVcIiwgUHJlZml4Q29udGV4dCk7XG5cbnZhciBUaWxlQmVsb3dUaGVGb2xkQ29udGVudCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudDUpIHtcbiAgX2luaGVyaXRzKFRpbGVCZWxvd1RoZUZvbGRDb250ZW50LCBfQ29tcG9uZW50NSk7XG5cbiAgdmFyIF9zdXBlcjUgPSBfY3JlYXRlU3VwZXIoVGlsZUJlbG93VGhlRm9sZENvbnRlbnQpO1xuXG4gIGZ1bmN0aW9uIFRpbGVCZWxvd1RoZUZvbGRDb250ZW50KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUaWxlQmVsb3dUaGVGb2xkQ29udGVudCk7XG5cbiAgICByZXR1cm4gX3N1cGVyNS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFRpbGVCZWxvd1RoZUZvbGRDb250ZW50LCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5wcm9wcy5jaGlsZHJlbjtcbiAgICAgIHZhciBwcmVmaXggPSB0aGlzLmNvbnRleHQ7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWNvbnRlbnRfX2JlbG93LXRoZS1mb2xkXCIpXG4gICAgICB9LCBjaGlsZHJlbik7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFRpbGVCZWxvd1RoZUZvbGRDb250ZW50O1xufShDb21wb25lbnQpO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZUJlbG93VGhlRm9sZENvbnRlbnQsIFwicHJvcFR5cGVzXCIsIHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZVxufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlQmVsb3dUaGVGb2xkQ29udGVudCwgXCJjb250ZXh0VHlwZVwiLCBQcmVmaXhDb250ZXh0KTtcblxuZXhwb3J0IHsgQ2xpY2thYmxlVGlsZSwgRXhwYW5kYWJsZVRpbGUsIFNlbGVjdGFibGVUaWxlLCBUaWxlLCBUaWxlQWJvdmVUaGVGb2xkQ29udGVudCwgVGlsZUJlbG93VGhlRm9sZENvbnRlbnQgfTtcbiJdLCJuYW1lcyI6WyJpbmhlcml0cyIsIl9pbmhlcml0cyIsImNyZWF0ZVN1cGVyIiwiX2NyZWF0ZVN1cGVyIiwiY2xhc3NDYWxsQ2hlY2siLCJfY2xhc3NDYWxsQ2hlY2siLCJjcmVhdGVDbGFzcyIsIl9jcmVhdGVDbGFzcyIsIm9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfZGVmaW5lUHJvcGVydHkiLCJleHRlbmRzIiwiX2V4dGVuZHMiLCJhc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwic2xpY2VkVG9BcnJheSIsIl9zbGljZWRUb0FycmF5IiwiUmVhY3RfX2RlZmF1bHQiLCJDb21wb25lbnQiLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsIlByb3BUeXBlcyIsImN4IiwiTGluayIsIkNoZWNrYm94Q2hlY2tlZEZpbGxlZCIsIkNoZWNrYm94IiwiQ2hldnJvbkRvd24iLCJkZXByZWNhdGUiLCJjb21wb3NlRXZlbnRIYW5kbGVycyIsIlByZWZpeENvbnRleHQiLCJ1c2VQcmVmaXgiLCJtYXRjaGVzIiwiRW50ZXIiLCJTcGFjZSIsIl9DaGVja2JveENoZWNrZWRGaWxsZSIsIl9DaGVja2JveCIsIl9DaGV2cm9uRG93biIsIl9leGNsdWRlZCIsIl9leGNsdWRlZDIiLCJfZXhjbHVkZWQzIiwiX2V4Y2x1ZGVkNCIsIlRpbGUiLCJfQ29tcG9uZW50IiwiX3N1cGVyIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJrZXkiLCJ2YWx1ZSIsInJlbmRlciIsInByZWZpeCIsImNvbnRleHQiLCJfdGhpcyRwcm9wcyIsInByb3BzIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJsaWdodCIsInJlc3QiLCJ0aWxlQ2xhc3NlcyIsImNvbmNhdCIsImNyZWF0ZUVsZW1lbnQiLCJub2RlIiwic3RyaW5nIiwiYm9vbCIsIkNsaWNrYWJsZVRpbGUiLCJfQ29tcG9uZW50MiIsIl9zdXBlcjIiLCJfdGhpcyIsIl9sZW4iLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY2FsbCIsImV2dCIsInBlcnNpc3QiLCJzZXRTdGF0ZSIsImNsaWNrZWQiLCJzdGF0ZSIsIl90aGlzJHByb3BzJGhhbmRsZUNsaSIsIl90aGlzJHByb3BzMiIsIl90aGlzJHByb3BzJG9uQ2xpY2siLCJfdGhpcyRwcm9wczMiLCJoYW5kbGVDbGljayIsIm9uQ2xpY2siLCJfdGhpcyRwcm9wcyRoYW5kbGVLZXkiLCJfdGhpcyRwcm9wczQiLCJoYW5kbGVLZXlEb3duIiwib25LZXlEb3duIiwiX3RoaXMkcHJvcHMkaGFuZGxlS2V5MiIsIl90aGlzJHByb3BzNSIsIl9jeDIiLCJfdGhpcyRwcm9wczYiLCJocmVmIiwiY2xhc3NlcyIsImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsIl9yZWYiLCJwcmV2Q2xpY2tlZCIsImZ1bmMiLCJyZWwiLCJTZWxlY3RhYmxlVGlsZSIsImhhbmRsZU9uQ2xpY2siLCJwcmV2ZW50RGVmYXVsdCIsInNldElzU2VsZWN0ZWQiLCJpc1NlbGVjdGVkIiwiY2xpY2tIYW5kbGVyIiwib25DaGFuZ2UiLCJoYW5kbGVPbktleURvd24iLCJrZXlEb3duSGFuZGxlciIsImhhbmRsZUNoYW5nZSIsImV2ZW50IiwidGFyZ2V0IiwiY2hlY2tlZCIsIl9jeDMiLCJpZCIsInRhYkluZGV4IiwibmFtZSIsInRpdGxlIiwiaWNvbkRlc2NyaXB0aW9uIiwiZGlzYWJsZWQiLCJzZWxlY3RlZCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJpbnB1dCIsImlucHV0Q2xhc3NlcyIsIkZyYWdtZW50IiwicmVmIiwidHlwZSIsImh0bWxGb3IiLCJkZWZhdWx0UHJvcHMiLCJwcm9wVHlwZXMiLCJudW1iZXIiLCJvbmVPZlR5cGUiLCJpc1JlcXVpcmVkIiwiRXhwYW5kYWJsZVRpbGUiLCJfQ29tcG9uZW50MyIsIl9zdXBlcjMiLCJfdGhpczIiLCJfbGVuMiIsIl9rZXkyIiwicmVzaXplT2JzZXJ2ZXIiLCJSZXNpemVPYnNlcnZlciIsImVudHJpZXMiLCJfZW50cmllcyIsImFib3ZlVGhlRm9sZCIsInRpbGVNYXhIZWlnaHQiLCJjb250ZW50UmVjdCIsImhlaWdodCIsInRpbGUiLCJnZXRTdHlsZSIsIndpbmRvdyIsImdldENvbXB1dGVkU3R5bGUiLCJvYnNlcnZlIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidGlsZVBhZGRpbmciLCJwYXJzZUludCIsImdldFByb3BlcnR5VmFsdWUiLCJwcmV2UHJvcHMiLCJleHBhbmRlZCIsInNldE1heEhlaWdodCIsInRpbGVDb250ZW50Iiwib25CZWZvcmVDbGljayIsInRhZ05hbWUiLCJfdGhpczIkcHJvcHMkaGFuZGxlQ2wiLCJfdGhpczIkcHJvcHMiLCJfdGhpczIkcHJvcHMkb25DbGljayIsIl90aGlzMiRwcm9wczIiLCJDaGlsZHJlbiIsInRvQXJyYXkiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsImRpc2Nvbm5lY3QiLCJfY3g1IiwiX3RoaXMzIiwiX3RoaXMkcHJvcHM3Iiwib25LZXlVcCIsInRpbGVDb2xsYXBzZWRJY29uVGV4dCIsInRpbGVFeHBhbmRlZEljb25UZXh0IiwidGlsZUNvbGxhcHNlZExhYmVsIiwidGlsZUV4cGFuZGVkTGFiZWwiLCJpc0V4cGFuZGVkIiwidGlsZVN0eWxlIiwibWF4SGVpZ2h0IiwiY2hpbGRyZW5Bc0FycmF5IiwiZ2V0Q2hpbGRyZW4iLCJzdHlsZSIsImhhbmRsZUtleVVwIiwiX3JlZjIiLCJwcmV2RXhwYW5kZWQiLCJwcmV2VGlsZU1heEhlaWdodCIsInByZXZUaWxlUGFkZGluZyIsImN1cnJlbnRFeHBhbmRlZCIsImN1cnJlbnRUaWxlTWF4SGVpZ2h0IiwiY3VycmVudFRpbGVQYWRkaW5nIiwiZXhwYW5kZWRDaGFuZ2VkIiwidGlsZU1heEhlaWdodENoYW5nZWQiLCJ0aWxlUGFkZGluZ0NoYW5nZWQiLCJUaWxlQWJvdmVUaGVGb2xkQ29udGVudCIsIl9Db21wb25lbnQ0IiwiX3N1cGVyNCIsIlRpbGVCZWxvd1RoZUZvbGRDb250ZW50IiwiX0NvbXBvbmVudDUiLCJfc3VwZXI1Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/@carbon/react/es/components/Tile/Tile.js\n");
2604
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ClickableTile\": () => (/* binding */ ClickableTile),\n/* harmony export */ \"ExpandableTile\": () => (/* binding */ ExpandableTile),\n/* harmony export */ \"SelectableTile\": () => (/* binding */ SelectableTile),\n/* harmony export */ \"Tile\": () => (/* binding */ Tile),\n/* harmony export */ \"TileAboveTheFoldContent\": () => (/* binding */ TileAboveTheFoldContent),\n/* harmony export */ \"TileBelowTheFoldContent\": () => (/* binding */ TileBelowTheFoldContent)\n/* harmony export */ });\n/* harmony import */ var _virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../_virtual/_rollupPluginBabelHelpers.js */ \"../../../node_modules/@carbon/react/es/_virtual/_rollupPluginBabelHelpers.js\");\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 prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ \"../../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\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 _Link_Link_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Link/Link.js */ \"../../../node_modules/@carbon/react/es/components/Link/Link.js\");\n/* harmony import */ var _carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @carbon/icons-react */ \"../../../node_modules/@carbon/icons-react/es/generated/bucket-2.js\");\n/* harmony import */ var _prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../prop-types/deprecate.js */ \"../../../node_modules/@carbon/react/es/prop-types/deprecate.js\");\n/* harmony import */ var _tools_events_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../tools/events.js */ \"../../../node_modules/@carbon/react/es/tools/events.js\");\n/* harmony import */ var _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../internal/usePrefix.js */ \"../../../node_modules/@carbon/react/es/internal/usePrefix.js\");\n/* harmony import */ var _internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../internal/keyboard/match.js */ \"../../../node_modules/@carbon/react/es/internal/keyboard/match.js\");\n/* harmony import */ var _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../internal/keyboard/keys.js */ \"../../../node_modules/@carbon/react/es/internal/keyboard/keys.js\");\n/**\n * Copyright IBM Corp. 2016, 2022\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */ \n\n\n\n\n\n\n\n\n\n\nvar _CheckboxCheckedFille, _Checkbox, _ChevronDown;\nvar _excluded = [\n \"children\",\n \"className\",\n \"light\"\n], _excluded2 = [\n \"children\",\n \"href\",\n \"className\",\n \"handleClick\",\n \"handleKeyDown\",\n \"onClick\",\n \"onKeyDown\",\n \"clicked\",\n \"light\"\n], _excluded3 = [\n \"children\",\n \"id\",\n \"tabIndex\",\n \"value\",\n \"name\",\n \"title\",\n \"iconDescription\",\n \"className\",\n \"handleClick\",\n \"handleKeyDown\",\n \"onClick\",\n \"onChange\",\n \"onKeyDown\",\n \"light\",\n \"disabled\",\n \"selected\"\n], _excluded4 = [\n \"tabIndex\",\n \"className\",\n \"expanded\",\n \"tileMaxHeight\",\n \"tilePadding\",\n \"handleClick\",\n \"onKeyUp\",\n \"tileCollapsedIconText\",\n \"tileExpandedIconText\",\n \"tileCollapsedLabel\",\n \"tileExpandedLabel\",\n \"onBeforeClick\",\n \"light\"\n];\nvar Tile = /*#__PURE__*/ function(_Component) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(Tile, _Component);\n var _super = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(Tile);\n function Tile() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, Tile);\n return _super.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(Tile, [\n {\n key: \"render\",\n value: function render() {\n var prefix = this.context;\n var _this$props = this.props, children = _this$props.children, className = _this$props.className, light = _this$props.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props, _excluded);\n var tileClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)({}, \"\".concat(prefix, \"--tile--light\"), light), className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n className: tileClasses\n }, rest), children);\n }\n }\n ]);\n return Tile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"defaultProps\", {\n light: false\n});\nvar ClickableTile = /*#__PURE__*/ function(_Component2) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(ClickableTile, _Component2);\n var _super2 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(ClickableTile);\n function ClickableTile() {\n var _this;\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, ClickableTile);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n _this = _super2.call.apply(_super2, [\n this\n ].concat(args));\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"state\", {});\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"handleClick\", function(evt) {\n evt.persist();\n _this.setState({\n clicked: !_this.state.clicked\n }, function() {\n var _this$props$handleCli, _this$props2, _this$props$onClick, _this$props3;\n (// TODO: Remove handleClick prop when handleClick is deprecated\n (_this$props$handleCli = (_this$props2 = _this.props).handleClick) === null || _this$props$handleCli === void 0 ? void 0 : _this$props$handleCli.call(_this$props2, evt)) || ((_this$props$onClick = (_this$props3 = _this.props).onClick) === null || _this$props$onClick === void 0 ? void 0 : _this$props$onClick.call(_this$props3, evt));\n });\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"handleKeyDown\", function(evt) {\n evt.persist();\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n _this.setState({\n clicked: !_this.state.clicked\n }, function() {\n var _this$props$handleKey, _this$props4;\n // TODO: Remove handleKeyDown prop when handleKeyDown is deprecated\n ((_this$props$handleKey = (_this$props4 = _this.props).handleKeyDown) === null || _this$props$handleKey === void 0 ? void 0 : _this$props$handleKey.call(_this$props4, evt)) || _this.props.onKeyDown(evt);\n });\n } else {\n var _this$props$handleKey2, _this$props5;\n // TODO: Remove handleKeyDown prop when handleKeyDown is deprecated\n ((_this$props$handleKey2 = (_this$props5 = _this.props).handleKeyDown) === null || _this$props$handleKey2 === void 0 ? void 0 : _this$props$handleKey2.call(_this$props5, evt)) || _this.props.onKeyDown(evt);\n }\n });\n return _this;\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(ClickableTile, [\n {\n key: \"render\",\n value: function render() {\n var _cx2;\n var prefix = this.context;\n var _this$props6 = this.props, children = _this$props6.children, href = _this$props6.href, className = _this$props6.className;\n _this$props6.handleClick;\n _this$props6.handleKeyDown;\n _this$props6.onClick;\n _this$props6.onKeyDown;\n _this$props6.clicked;\n var light = _this$props6.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props6, _excluded2);\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--clickable\"), (_cx2 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx2, \"\".concat(prefix, \"--tile--is-clicked\"), this.state.clicked), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx2, \"\".concat(prefix, \"--tile--light\"), light), _cx2), className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Link_Link_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"], (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n href: href,\n className: classes\n }, rest, {\n onClick: this.handleClick,\n onKeyDown: this.handleKeyDown\n }), children);\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref, state) {\n var clicked = _ref.clicked;\n var prevClicked = state.prevClicked;\n return prevClicked === clicked ? null : {\n clicked: clicked,\n prevClicked: clicked\n };\n }\n }\n ]);\n return ClickableTile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * Deprecated in v11. Use 'onClick' instead.\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleClick prop for ClickableTile has been deprecated in favor of onClick. It will be removed in the next major release.\"),\n /**\n * Specify the function to run when the ClickableTile is interacted with via a keyboard\n */ handleKeyDown: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleKeyDown prop for ClickableTile has been deprecated in favor of onKeyDown. It will be removed in the next major release.\"),\n /**\n * The href for the link.\n */ href: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the function to run when the ClickableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the ClickableTile is interacted with via a keyboard\n */ onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * The rel property for the link.\n */ rel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"defaultProps\", {\n clicked: false,\n onClick: function onClick() {},\n onKeyDown: function onKeyDown() {},\n light: false\n});\nfunction SelectableTile(props) {\n var handleOnClick = function handleOnClick(evt) {\n evt.preventDefault();\n evt.persist();\n setIsSelected(!isSelected);\n clickHandler(evt);\n onChange(evt);\n } // TODO: rename to handleKeyDown when handleKeyDown prop is deprecated\n ;\n var handleOnKeyDown = function handleOnKeyDown(evt) {\n evt.persist();\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n evt.preventDefault();\n setIsSelected(!isSelected);\n onChange(evt);\n }\n keyDownHandler(evt);\n };\n var handleChange = function handleChange(event) {\n setIsSelected(event.target.checked);\n onChange(event);\n };\n var _cx3;\n var children = props.children, id = props.id, tabIndex = props.tabIndex, value = props.value, name = props.name, title = props.title;\n props.iconDescription;\n var className = props.className, handleClick = props.handleClick, handleKeyDown = props.handleKeyDown, onClick = props.onClick, onChange = props.onChange, onKeyDown = props.onKeyDown, light = props.light, disabled = props.disabled, selected = props.selected, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(props, _excluded3);\n var prefix = (0,_internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.usePrefix)(); // TODO: replace with onClick when handleClick prop is deprecated\n var clickHandler = handleClick || onClick; // TODO: replace with onKeyDown when handleKeyDown prop is deprecated\n var keyDownHandler = handleKeyDown || onKeyDown;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(selected), _useState2 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.slicedToArray)(_useState, 2), isSelected = _useState2[0], setIsSelected = _useState2[1];\n var input = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--selectable\"), (_cx3 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--is-selected\"), isSelected), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--light\"), light), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--disabled\"), disabled), _cx3), className);\n var inputClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile-input\"), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)({}, \"\".concat(prefix, \"--tile-input--checked\"), isSelected)); // TODO: rename to handleClick when handleClick prop is deprecated\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n setIsSelected(selected);\n }, [\n selected\n ]);\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(\"input\", {\n ref: input,\n tabIndex: -1,\n id: id,\n className: inputClasses,\n value: value,\n onChange: !disabled ? handleChange : null,\n type: \"checkbox\",\n disabled: disabled,\n name: name,\n title: title,\n checked: isSelected\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n htmlFor: id,\n className: classes // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n ,\n tabIndex: !disabled ? tabIndex : null\n }, rest, {\n onClick: !disabled ? handleOnClick : null,\n onKeyDown: !disabled ? handleOnKeyDown : null\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile__checkmark \").concat(prefix, \"--tile__checkmark--persistent\")\n }, isSelected ? _CheckboxCheckedFille || (_CheckboxCheckedFille = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.CheckboxCheckedFilled, null)) : _Checkbox || (_Checkbox = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.Checkbox, null))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content\")\n }, children)));\n}\nSelectableTile.defaultProps = {\n value: \"value\",\n title: \"title\",\n selected: false,\n tabIndex: 0,\n light: false,\n onClick: function onClick() {},\n onChange: function onChange() {},\n onKeyDown: function onKeyDown() {}\n};\nSelectableTile.propTypes = {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * Specify whether the SelectableTile should be disabled\n */ disabled: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the function to run when the SelectableTile is clicked\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The `handleClick` prop for `SelectableTile` has been deprecated in favor of `onClick`. It will be removed in the next major release.\"),\n /**\n * Specify the function to run when the SelectableTile is interacted with via a keyboard\n */ handleKeyDown: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The `handleKeyDown` prop for `SelectableTile` has been deprecated in favor of `onKeyDown`. It will be removed in the next major release.\"),\n /**\n * The description of the checkmark icon.\n */ iconDescription: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().string), \"The `iconDescription` prop for `SelectableTile` is no longer needed and has \" + \"been deprecated. It will be removed in the next major release.\"),\n /**\n * The ID of the `<input>`.\n */ id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * The `name` of the `<input>`.\n */ name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The empty handler of the `<input>`.\n */ onChange: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the SelectableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the SelectableTile is interacted with via a keyboard\n */ onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * `true` to select this tile.\n */ selected: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the tab index of the wrapper element\n */ tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n /**\n * The `title` of the `<input>`.\n */ title: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The value of the `<input>`.\n */ value: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOfType([\n (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number)\n ]).isRequired\n};\nvar ExpandableTile = /*#__PURE__*/ function(_Component3) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(ExpandableTile, _Component3);\n var _super3 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(ExpandableTile);\n function ExpandableTile() {\n var _this2;\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, ExpandableTile);\n for(var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++){\n args[_key2] = arguments[_key2];\n }\n _this2 = _super3.call.apply(_super3, [\n this\n ].concat(args));\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"state\", {});\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"resizeObserver\", null);\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"componentDidMount\", function() {\n _this2.resizeObserver = new ResizeObserver(function(entries) {\n var _entries = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.slicedToArray)(entries, 1), aboveTheFold = _entries[0];\n _this2.setState({\n tileMaxHeight: aboveTheFold.contentRect.height\n });\n });\n if (_this2.tile) {\n var getStyle = window.getComputedStyle(_this2.tile, null);\n if (_this2.aboveTheFold) {\n _this2.resizeObserver.observe(_this2.aboveTheFold);\n _this2.setState({\n tileMaxHeight: _this2.aboveTheFold.getBoundingClientRect().height,\n tilePadding: parseInt(getStyle.getPropertyValue(\"padding-top\"), 10) + parseInt(getStyle.getPropertyValue(\"padding-bottom\"), 10)\n });\n }\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"componentDidUpdate\", function(prevProps) {\n if (prevProps.expanded !== _this2.props.expanded) {\n _this2.setMaxHeight();\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"setMaxHeight\", function() {\n if (_this2.state.expanded ? _this2.tileContent : _this2.aboveTheFold) {\n _this2.setState({\n tileMaxHeight: _this2.state.expanded ? _this2.tileContent.getBoundingClientRect().height : _this2.aboveTheFold.getBoundingClientRect().height\n });\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"handleClick\", function(evt) {\n if (!_this2.props.onBeforeClick(evt) || evt.target.tagName === \"INPUT\") {\n return;\n }\n evt.persist();\n _this2.setState({\n expanded: !_this2.state.expanded\n }, function() {\n var _this2$props$handleCl, _this2$props, _this2$props$onClick, _this2$props2;\n _this2.setMaxHeight(); // TODO: Remove handleClick prop when handleClick is deprecated\n ((_this2$props$handleCl = (_this2$props = _this2.props).handleClick) === null || _this2$props$handleCl === void 0 ? void 0 : _this2$props$handleCl.call(_this2$props, evt)) || ((_this2$props$onClick = (_this2$props2 = _this2.props).onClick) === null || _this2$props$onClick === void 0 ? void 0 : _this2$props$onClick.call(_this2$props2, evt));\n });\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"handleKeyUp\", function(evt) {\n if (evt.target !== _this2.tile) {\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n evt.preventDefault();\n }\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"getChildren\", function() {\n return react__WEBPACK_IMPORTED_MODULE_0___default().Children.toArray(_this2.props.children);\n });\n return _this2;\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(ExpandableTile, [\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _cx5, _this3 = this;\n var _this$props7 = this.props, tabIndex = _this$props7.tabIndex, className = _this$props7.className;\n _this$props7.expanded;\n _this$props7.tileMaxHeight;\n _this$props7.tilePadding;\n _this$props7.handleClick;\n var onKeyUp = _this$props7.onKeyUp, tileCollapsedIconText = _this$props7.tileCollapsedIconText, tileExpandedIconText = _this$props7.tileExpandedIconText, tileCollapsedLabel = _this$props7.tileCollapsedLabel, tileExpandedLabel = _this$props7.tileExpandedLabel;\n _this$props7.onBeforeClick;\n var light = _this$props7.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props7, _excluded4);\n var prefix = this.context;\n var isExpanded = this.state.expanded;\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--expandable\"), (_cx5 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx5, \"\".concat(prefix, \"--tile--is-expanded\"), isExpanded), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx5, \"\".concat(prefix, \"--tile--light\"), light), _cx5), className);\n var tileStyle = {\n maxHeight: isExpanded ? null : this.state.tileMaxHeight + this.state.tilePadding\n };\n var childrenAsArray = this.getChildren();\n return(/*#__PURE__*/ // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n type: \"button\",\n ref: function ref(tile) {\n _this3.tile = tile;\n },\n style: tileStyle,\n className: classes,\n \"aria-expanded\": isExpanded,\n title: isExpanded ? tileExpandedIconText : tileCollapsedIconText\n }, rest, {\n onKeyUp: (0,_tools_events_js__WEBPACK_IMPORTED_MODULE_10__.composeEventHandlers)([\n onKeyUp,\n this.handleKeyUp\n ]),\n onClick: this.handleClick,\n tabIndex: tabIndex\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: function ref(tileContent) {\n _this3.tileContent = tileContent;\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: function ref(aboveTheFold) {\n _this3.aboveTheFold = aboveTheFold;\n },\n className: \"\".concat(prefix, \"--tile-content\")\n }, childrenAsArray[0]), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(prefix, \"--tile__chevron\")\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, isExpanded ? tileExpandedLabel : tileCollapsedLabel), _ChevronDown || (_ChevronDown = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.ChevronDown, null))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(prefix, \"--tile-content\")\n }, childrenAsArray[1]))));\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref2, state) {\n var expanded = _ref2.expanded, tileMaxHeight = _ref2.tileMaxHeight, tilePadding = _ref2.tilePadding;\n var prevExpanded = state.prevExpanded, prevTileMaxHeight = state.prevTileMaxHeight, prevTilePadding = state.prevTilePadding, currentExpanded = state.expanded, currentTileMaxHeight = state.tileMaxHeight, currentTilePadding = state.tilePadding;\n var expandedChanged = prevExpanded !== expanded;\n var tileMaxHeightChanged = prevTileMaxHeight !== tileMaxHeight;\n var tilePaddingChanged = prevTilePadding !== tilePadding;\n return !expandedChanged && !tileMaxHeightChanged && !tilePaddingChanged ? null : {\n expanded: !expandedChanged ? currentExpanded : expanded,\n tileMaxHeight: !tileMaxHeightChanged ? currentTileMaxHeight : tileMaxHeight,\n tilePadding: !tilePaddingChanged ? currentTilePadding : tilePadding,\n prevExpanded: expanded,\n prevTileMaxHeight: tileMaxHeight,\n prevTilePadding: tilePadding\n };\n }\n }\n ]);\n return ExpandableTile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` if the tile is expanded.\n */ expanded: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Deprecated in v11. Use 'onClick' instead.\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleClick prop for ExpandableTile has been deprecated in favor of onClick. It will be removed in the next major release.\"),\n /**\n * An ID that can be provided to aria-labelledby\n */ id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * optional handler to decide whether to ignore a click. returns false if click should be ignored\n */ onBeforeClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the ExpandableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * optional handler to trigger a function when a key is pressed\n */ onKeyUp: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * The `tabindex` attribute.\n */ tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n /**\n * The description of the \"collapsed\" icon that can be read by screen readers.\n */ tileCollapsedIconText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * When \"collapsed\", a label to appear next to the chevron (e.g., \"View more\").\n */ tileCollapsedLabel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The description of the \"expanded\" icon that can be read by screen readers.\n */ tileExpandedIconText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * When \"expanded\", a label to appear next to the chevron (e.g., \"View less\").\n */ tileExpandedLabel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"defaultProps\", {\n tabIndex: 0,\n expanded: false,\n tileMaxHeight: 0,\n tilePadding: 0,\n onBeforeClick: function onBeforeClick() {\n return true;\n },\n onClick: function onClick() {},\n tileCollapsedIconText: \"Interact to expand Tile\",\n tileExpandedIconText: \"Interact to collapse Tile\",\n light: false\n});\nvar TileAboveTheFoldContent = /*#__PURE__*/ function(_Component4) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(TileAboveTheFoldContent, _Component4);\n var _super4 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(TileAboveTheFoldContent);\n function TileAboveTheFoldContent() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, TileAboveTheFoldContent);\n return _super4.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(TileAboveTheFoldContent, [\n {\n key: \"render\",\n value: function render() {\n var prefix = this.context;\n var children = this.props.children;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content__above-the-fold\")\n }, children);\n }\n }\n ]);\n return TileAboveTheFoldContent;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileAboveTheFoldContent, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileAboveTheFoldContent, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\nvar TileBelowTheFoldContent = /*#__PURE__*/ function(_Component5) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(TileBelowTheFoldContent, _Component5);\n var _super5 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(TileBelowTheFoldContent);\n function TileBelowTheFoldContent() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, TileBelowTheFoldContent);\n return _super5.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(TileBelowTheFoldContent, [\n {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n var prefix = this.context;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content__below-the-fold\")\n }, children);\n }\n }\n ]);\n return TileBelowTheFoldContent;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileBelowTheFoldContent, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileBelowTheFoldContent, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vcmVhY3QvZXMvY29tcG9uZW50cy9UaWxlL1RpbGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Q0FLQyxHQUUrVztBQUNqUztBQUM1QztBQUNQO0FBQ087QUFDZ0Q7QUFDN0I7QUFDTztBQUNVO0FBQ1o7QUFDSTtBQUUvRCxJQUFJb0MsdUJBQXVCQyxXQUFXQztBQUV0QyxJQUFJQyxZQUFZO0lBQUM7SUFBWTtJQUFhO0NBQVEsRUFDOUNDLGFBQWE7SUFBQztJQUFZO0lBQVE7SUFBYTtJQUFlO0lBQWlCO0lBQVc7SUFBYTtJQUFXO0NBQVEsRUFDMUhDLGFBQWE7SUFBQztJQUFZO0lBQU07SUFBWTtJQUFTO0lBQVE7SUFBUztJQUFtQjtJQUFhO0lBQWU7SUFBaUI7SUFBVztJQUFZO0lBQWE7SUFBUztJQUFZO0NBQVcsRUFDMU1DLGFBQWE7SUFBQztJQUFZO0lBQWE7SUFBWTtJQUFpQjtJQUFlO0lBQWU7SUFBVztJQUF5QjtJQUF3QjtJQUFzQjtJQUFxQjtJQUFpQjtDQUFRO0FBQ3RPLElBQUlDLE9BQU8sV0FBVyxHQUFFLFNBQVVDLFVBQVUsRUFBRTtJQUM1QzNDLDhFQUFTQSxDQUFDMEMsTUFBTUM7SUFFaEIsSUFBSUMsU0FBUzFDLGlGQUFZQSxDQUFDd0M7SUFFMUIsU0FBU0EsT0FBTztRQUNkdEMsb0ZBQWVBLENBQUMsSUFBSSxFQUFFc0M7UUFFdEIsT0FBT0UsT0FBT0MsS0FBSyxDQUFDLElBQUksRUFBRUM7SUFDNUI7SUFFQXhDLGlGQUFZQSxDQUFDb0MsTUFBTTtRQUFDO1lBQ2xCSyxLQUFLO1lBQ0xDLE9BQU8sU0FBU0MsU0FBUztnQkFDdkIsSUFBSUMsU0FBUyxJQUFJLENBQUNDLE9BQU87Z0JBRXpCLElBQUlDLGNBQWMsSUFBSSxDQUFDQyxLQUFLLEVBQ3hCQyxXQUFXRixZQUFZRSxRQUFRLEVBQy9CQyxZQUFZSCxZQUFZRyxTQUFTLEVBQ2pDQyxRQUFR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QzZMLHlCQUF5QixlQUFlekssaUVBQWFBO0FBRTRDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGNhcmJvbi9yZWFjdC9lcy9jb21wb25lbnRzL1RpbGUvVGlsZS5qcz8wY2E2Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IElCTSBDb3JwLiAyMDE2LCAyMDIyXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlLTIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCB7IGluaGVyaXRzIGFzIF9pbmhlcml0cywgY3JlYXRlU3VwZXIgYXMgX2NyZWF0ZVN1cGVyLCBjbGFzc0NhbGxDaGVjayBhcyBfY2xhc3NDYWxsQ2hlY2ssIGNyZWF0ZUNsYXNzIGFzIF9jcmVhdGVDbGFzcywgb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgYXMgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLCBkZWZpbmVQcm9wZXJ0eSBhcyBfZGVmaW5lUHJvcGVydHksIGV4dGVuZHMgYXMgX2V4dGVuZHMsIGFzc2VydFRoaXNJbml0aWFsaXplZCBhcyBfYXNzZXJ0VGhpc0luaXRpYWxpemVkLCBzbGljZWRUb0FycmF5IGFzIF9zbGljZWRUb0FycmF5IH0gZnJvbSAnLi4vLi4vX3ZpcnR1YWwvX3JvbGx1cFBsdWdpbkJhYmVsSGVscGVycy5qcyc7XG5pbXBvcnQgUmVhY3RfX2RlZmF1bHQsIHsgQ29tcG9uZW50LCB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGN4IGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IExpbmsgZnJvbSAnLi4vTGluay9MaW5rLmpzJztcbmltcG9ydCB7IENoZWNrYm94Q2hlY2tlZEZpbGxlZCwgQ2hlY2tib3gsIENoZXZyb25Eb3duIH0gZnJvbSAnQGNhcmJvbi9pY29ucy1yZWFjdCc7XG5pbXBvcnQgZGVwcmVjYXRlIGZyb20gJy4uLy4uL3Byb3AtdHlwZXMvZGVwcmVjYXRlLmpzJztcbmltcG9ydCB7IGNvbXBvc2VFdmVudEhhbmRsZXJzIH0gZnJvbSAnLi4vLi4vdG9vbHMvZXZlbnRzLmpzJztcbmltcG9ydCB7IFByZWZpeENvbnRleHQsIHVzZVByZWZpeCB9IGZyb20gJy4uLy4uL2ludGVybmFsL3VzZVByZWZpeC5qcyc7XG5pbXBvcnQgeyBtYXRjaGVzIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwva2V5Ym9hcmQvbWF0Y2guanMnO1xuaW1wb3J0IHsgRW50ZXIsIFNwYWNlIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwva2V5Ym9hcmQva2V5cy5qcyc7XG5cbnZhciBfQ2hlY2tib3hDaGVja2VkRmlsbGUsIF9DaGVja2JveCwgX0NoZXZyb25Eb3duO1xuXG52YXIgX2V4Y2x1ZGVkID0gW1wiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJsaWdodFwiXSxcbiAgICBfZXhjbHVkZWQyID0gW1wiY2hpbGRyZW5cIiwgXCJocmVmXCIsIFwiY2xhc3NOYW1lXCIsIFwiaGFuZGxlQ2xpY2tcIiwgXCJoYW5kbGVLZXlEb3duXCIsIFwib25DbGlja1wiLCBcIm9uS2V5RG93blwiLCBcImNsaWNrZWRcIiwgXCJsaWdodFwiXSxcbiAgICBfZXhjbHVkZWQzID0gW1wiY2hpbGRyZW5cIiwgXCJpZFwiLCBcInRhYkluZGV4XCIsIFwidmFsdWVcIiwgXCJuYW1lXCIsIFwidGl0bGVcIiwgXCJpY29uRGVzY3JpcHRpb25cIiwgXCJjbGFzc05hbWVcIiwgXCJoYW5kbGVDbGlja1wiLCBcImhhbmRsZUtleURvd25cIiwgXCJvbkNsaWNrXCIsIFwib25DaGFuZ2VcIiwgXCJvbktleURvd25cIiwgXCJsaWdodFwiLCBcImRpc2FibGVkXCIsIFwic2VsZWN0ZWRcIl0sXG4gICAgX2V4Y2x1ZGVkNCA9IFtcInRhYkluZGV4XCIsIFwiY2xhc3NOYW1lXCIsIFwiZXhwYW5kZWRcIiwgXCJ0aWxlTWF4SGVpZ2h0XCIsIFwidGlsZVBhZGRpbmdcIiwgXCJoYW5kbGVDbGlja1wiLCBcIm9uS2V5VXBcIiwgXCJ0aWxlQ29sbGFwc2VkSWNvblRleHRcIiwgXCJ0aWxlRXhwYW5kZWRJY29uVGV4dFwiLCBcInRpbGVDb2xsYXBzZWRMYWJlbFwiLCBcInRpbGVFeHBhbmRlZExhYmVsXCIsIFwib25CZWZvcmVDbGlja1wiLCBcImxpZ2h0XCJdO1xudmFyIFRpbGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcbiAgX2luaGVyaXRzKFRpbGUsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoVGlsZSk7XG5cbiAgZnVuY3Rpb24gVGlsZSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVGlsZSk7XG5cbiAgICByZXR1cm4gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVGlsZSwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBwcmVmaXggPSB0aGlzLmNvbnRleHQ7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wcy5jaGlsZHJlbixcbiAgICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAgbGlnaHQgPSBfdGhpcyRwcm9wcy5saWdodCxcbiAgICAgICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF90aGlzJHByb3BzLCBfZXhjbHVkZWQpO1xuXG4gICAgICB2YXIgdGlsZUNsYXNzZXMgPSBjeChcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlXCIpLCBfZGVmaW5lUHJvcGVydHkoe30sIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWxpZ2h0XCIpLCBsaWdodCksIGNsYXNzTmFtZSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX2V4dGVuZHMoe1xuICAgICAgICBjbGFzc05hbWU6IHRpbGVDbGFzc2VzXG4gICAgICB9LCByZXN0KSwgY2hpbGRyZW4pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUaWxlO1xufShDb21wb25lbnQpO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZSwgXCJwcm9wVHlwZXNcIiwge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuXG4gIC8qKlxuICAgKiBUaGUgQ1NTIGNsYXNzIG5hbWVzLlxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgdG8gdXNlIHRoZSBsaWdodCB2ZXJzaW9uLiBGb3IgdXNlIG9uICR1aS0wMSBiYWNrZ3JvdW5kcyBvbmx5LlxuICAgKiBEb24ndCB1c2UgdGhpcyB0byBtYWtlIHRpbGUgYmFja2dyb3VuZCBjb2xvciBzYW1lIGFzIGNvbnRhaW5lciBiYWNrZ3JvdW5kIGNvbG9yLlxuICAgKi9cbiAgbGlnaHQ6IFByb3BUeXBlcy5ib29sXG59KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGUsIFwiY29udGV4dFR5cGVcIiwgUHJlZml4Q29udGV4dCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIGxpZ2h0OiBmYWxzZVxufSk7XG5cbnZhciBDbGlja2FibGVUaWxlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50Mikge1xuICBfaW5oZXJpdHMoQ2xpY2thYmxlVGlsZSwgX0NvbXBvbmVudDIpO1xuXG4gIHZhciBfc3VwZXIyID0gX2NyZWF0ZVN1cGVyKENsaWNrYWJsZVRpbGUpO1xuXG4gIGZ1bmN0aW9uIENsaWNrYWJsZVRpbGUoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIENsaWNrYWJsZVRpbGUpO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIF90aGlzID0gX3N1cGVyMi5jYWxsLmFwcGx5KF9zdXBlcjIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInN0YXRlXCIsIHt9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJoYW5kbGVDbGlja1wiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBldnQucGVyc2lzdCgpO1xuXG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGNsaWNrZWQ6ICFfdGhpcy5zdGF0ZS5jbGlja2VkXG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyRwcm9wcyRoYW5kbGVDbGksIF90aGlzJHByb3BzMiwgX3RoaXMkcHJvcHMkb25DbGljaywgX3RoaXMkcHJvcHMzO1xuXG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBoYW5kbGVDbGljayBwcm9wIHdoZW4gaGFuZGxlQ2xpY2sgaXMgZGVwcmVjYXRlZFxuICAgICAgICAoKF90aGlzJHByb3BzJGhhbmRsZUNsaSA9IChfdGhpcyRwcm9wczIgPSBfdGhpcy5wcm9wcykuaGFuZGxlQ2xpY2spID09PSBudWxsIHx8IF90aGlzJHByb3BzJGhhbmRsZUNsaSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkaGFuZGxlQ2xpLmNhbGwoX3RoaXMkcHJvcHMyLCBldnQpKSB8fCAoKF90aGlzJHByb3BzJG9uQ2xpY2sgPSAoX3RoaXMkcHJvcHMzID0gX3RoaXMucHJvcHMpLm9uQ2xpY2spID09PSBudWxsIHx8IF90aGlzJHByb3BzJG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJG9uQ2xpY2suY2FsbChfdGhpcyRwcm9wczMsIGV2dCkpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaGFuZGxlS2V5RG93blwiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBldnQucGVyc2lzdCgpO1xuXG4gICAgICBpZiAobWF0Y2hlcyhldnQsIFtFbnRlciwgU3BhY2VdKSkge1xuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgY2xpY2tlZDogIV90aGlzLnN0YXRlLmNsaWNrZWRcbiAgICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHZhciBfdGhpcyRwcm9wcyRoYW5kbGVLZXksIF90aGlzJHByb3BzNDtcblxuICAgICAgICAgIC8vIFRPRE86IFJlbW92ZSBoYW5kbGVLZXlEb3duIHByb3Agd2hlbiBoYW5kbGVLZXlEb3duIGlzIGRlcHJlY2F0ZWRcbiAgICAgICAgICAoKF90aGlzJHByb3BzJGhhbmRsZUtleSA9IChfdGhpcyRwcm9wczQgPSBfdGhpcy5wcm9wcykuaGFuZGxlS2V5RG93bikgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkaGFuZGxlS2V5ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRwcm9wcyRoYW5kbGVLZXkuY2FsbChfdGhpcyRwcm9wczQsIGV2dCkpIHx8IF90aGlzLnByb3BzLm9uS2V5RG93bihldnQpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBfdGhpcyRwcm9wcyRoYW5kbGVLZXkyLCBfdGhpcyRwcm9wczU7XG5cbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIGhhbmRsZUtleURvd24gcHJvcCB3aGVuIGhhbmRsZUtleURvd24gaXMgZGVwcmVjYXRlZFxuICAgICAgICAoKF90aGlzJHByb3BzJGhhbmRsZUtleTIgPSAoX3RoaXMkcHJvcHM1ID0gX3RoaXMucHJvcHMpLmhhbmRsZUtleURvd24pID09PSBudWxsIHx8IF90aGlzJHByb3BzJGhhbmRsZUtleTIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJGhhbmRsZUtleTIuY2FsbChfdGhpcyRwcm9wczUsIGV2dCkpIHx8IF90aGlzLnByb3BzLm9uS2V5RG93bihldnQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKENsaWNrYWJsZVRpbGUsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX2N4MjtcblxuICAgICAgdmFyIHByZWZpeCA9IHRoaXMuY29udGV4dDtcblxuICAgICAgdmFyIF90aGlzJHByb3BzNiA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wczYuY2hpbGRyZW4sXG4gICAgICAgICAgaHJlZiA9IF90aGlzJHByb3BzNi5ocmVmLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzNi5jbGFzc05hbWU7XG4gICAgICAgICAgX3RoaXMkcHJvcHM2LmhhbmRsZUNsaWNrO1xuICAgICAgICAgIF90aGlzJHByb3BzNi5oYW5kbGVLZXlEb3duO1xuICAgICAgICAgIF90aGlzJHByb3BzNi5vbkNsaWNrO1xuICAgICAgICAgIF90aGlzJHByb3BzNi5vbktleURvd247XG4gICAgICAgICAgX3RoaXMkcHJvcHM2LmNsaWNrZWQ7XG4gICAgICAgICAgdmFyIGxpZ2h0ID0gX3RoaXMkcHJvcHM2LmxpZ2h0LFxuICAgICAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3RoaXMkcHJvcHM2LCBfZXhjbHVkZWQyKTtcblxuICAgICAgdmFyIGNsYXNzZXMgPSBjeChcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlXCIpLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1jbGlja2FibGVcIiksIChfY3gyID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY3gyLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1pcy1jbGlja2VkXCIpLCB0aGlzLnN0YXRlLmNsaWNrZWQpLCBfZGVmaW5lUHJvcGVydHkoX2N4MiwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tbGlnaHRcIiksIGxpZ2h0KSwgX2N4MiksIGNsYXNzTmFtZSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoTGluaywgX2V4dGVuZHMoe1xuICAgICAgICBocmVmOiBocmVmLFxuICAgICAgICBjbGFzc05hbWU6IGNsYXNzZXNcbiAgICAgIH0sIHJlc3QsIHtcbiAgICAgICAgb25DbGljazogdGhpcy5oYW5kbGVDbGljayxcbiAgICAgICAgb25LZXlEb3duOiB0aGlzLmhhbmRsZUtleURvd25cbiAgICAgIH0pLCBjaGlsZHJlbik7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsXG4gICAgdmFsdWU6IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9wcm9wLXR5cGVzXG4gICAgZnVuY3Rpb24gZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKF9yZWYsIHN0YXRlKSB7XG4gICAgICB2YXIgY2xpY2tlZCA9IF9yZWYuY2xpY2tlZDtcbiAgICAgIHZhciBwcmV2Q2xpY2tlZCA9IHN0YXRlLnByZXZDbGlja2VkO1xuICAgICAgcmV0dXJuIHByZXZDbGlja2VkID09PSBjbGlja2VkID8gbnVsbCA6IHtcbiAgICAgICAgY2xpY2tlZDogY2xpY2tlZCxcbiAgICAgICAgcHJldkNsaWNrZWQ6IGNsaWNrZWRcbiAgICAgIH07XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIENsaWNrYWJsZVRpbGU7XG59KENvbXBvbmVudCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShDbGlja2FibGVUaWxlLCBcInByb3BUeXBlc1wiLCB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG5cbiAgLyoqXG4gICAqIFRoZSBDU1MgY2xhc3MgbmFtZXMuXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIERlcHJlY2F0ZWQgaW4gdjExLiBVc2UgJ29uQ2xpY2snIGluc3RlYWQuXG4gICAqL1xuICBoYW5kbGVDbGljazogZGVwcmVjYXRlKFByb3BUeXBlcy5mdW5jLCAnVGhlIGhhbmRsZUNsaWNrIHByb3AgZm9yIENsaWNrYWJsZVRpbGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBvbkNsaWNrLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIENsaWNrYWJsZVRpbGUgaXMgaW50ZXJhY3RlZCB3aXRoIHZpYSBhIGtleWJvYXJkXG4gICAqL1xuICBoYW5kbGVLZXlEb3duOiBkZXByZWNhdGUoUHJvcFR5cGVzLmZ1bmMsICdUaGUgaGFuZGxlS2V5RG93biBwcm9wIGZvciBDbGlja2FibGVUaWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Ygb25LZXlEb3duLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogVGhlIGhyZWYgZm9yIHRoZSBsaW5rLlxuICAgKi9cbiAgaHJlZjogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogYHRydWVgIHRvIHVzZSB0aGUgbGlnaHQgdmVyc2lvbi4gRm9yIHVzZSBvbiAkdWktMDEgYmFja2dyb3VuZHMgb25seS5cbiAgICogRG9uJ3QgdXNlIHRoaXMgdG8gbWFrZSB0aWxlIGJhY2tncm91bmQgY29sb3Igc2FtZSBhcyBjb250YWluZXIgYmFja2dyb3VuZCBjb2xvci5cbiAgICovXG4gIGxpZ2h0OiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIENsaWNrYWJsZVRpbGUgaXMgY2xpY2tlZFxuICAgKi9cbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBDbGlja2FibGVUaWxlIGlzIGludGVyYWN0ZWQgd2l0aCB2aWEgYSBrZXlib2FyZFxuICAgKi9cbiAgb25LZXlEb3duOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogVGhlIHJlbCBwcm9wZXJ0eSBmb3IgdGhlIGxpbmsuXG4gICAqL1xuICByZWw6IFByb3BUeXBlcy5zdHJpbmdcbn0pO1xuXG5fZGVmaW5lUHJvcGVydHkoQ2xpY2thYmxlVGlsZSwgXCJjb250ZXh0VHlwZVwiLCBQcmVmaXhDb250ZXh0KTtcblxuX2RlZmluZVByb3BlcnR5KENsaWNrYWJsZVRpbGUsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgY2xpY2tlZDogZmFsc2UsXG4gIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7fSxcbiAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oKSB7fSxcbiAgbGlnaHQ6IGZhbHNlXG59KTtcblxuZnVuY3Rpb24gU2VsZWN0YWJsZVRpbGUocHJvcHMpIHtcbiAgdmFyIF9jeDM7XG5cbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgICBpZCA9IHByb3BzLmlkLFxuICAgICAgdGFiSW5kZXggPSBwcm9wcy50YWJJbmRleCxcbiAgICAgIHZhbHVlID0gcHJvcHMudmFsdWUsXG4gICAgICBuYW1lID0gcHJvcHMubmFtZSxcbiAgICAgIHRpdGxlID0gcHJvcHMudGl0bGU7XG4gICAgICBwcm9wcy5pY29uRGVzY3JpcHRpb247XG4gICAgICB2YXIgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgaGFuZGxlQ2xpY2sgPSBwcm9wcy5oYW5kbGVDbGljayxcbiAgICAgIGhhbmRsZUtleURvd24gPSBwcm9wcy5oYW5kbGVLZXlEb3duLFxuICAgICAgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssXG4gICAgICBvbkNoYW5nZSA9IHByb3BzLm9uQ2hhbmdlLFxuICAgICAgb25LZXlEb3duID0gcHJvcHMub25LZXlEb3duLFxuICAgICAgbGlnaHQgPSBwcm9wcy5saWdodCxcbiAgICAgIGRpc2FibGVkID0gcHJvcHMuZGlzYWJsZWQsXG4gICAgICBzZWxlY3RlZCA9IHByb3BzLnNlbGVjdGVkLFxuICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhwcm9wcywgX2V4Y2x1ZGVkMyk7XG5cbiAgdmFyIHByZWZpeCA9IHVzZVByZWZpeCgpOyAvLyBUT0RPOiByZXBsYWNlIHdpdGggb25DbGljayB3aGVuIGhhbmRsZUNsaWNrIHByb3AgaXMgZGVwcmVjYXRlZFxuXG4gIHZhciBjbGlja0hhbmRsZXIgPSBoYW5kbGVDbGljayB8fCBvbkNsaWNrOyAvLyBUT0RPOiByZXBsYWNlIHdpdGggb25LZXlEb3duIHdoZW4gaGFuZGxlS2V5RG93biBwcm9wIGlzIGRlcHJlY2F0ZWRcblxuICB2YXIga2V5RG93bkhhbmRsZXIgPSBoYW5kbGVLZXlEb3duIHx8IG9uS2V5RG93bjtcblxuICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUoc2VsZWN0ZWQpLFxuICAgICAgX3VzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZSwgMiksXG4gICAgICBpc1NlbGVjdGVkID0gX3VzZVN0YXRlMlswXSxcbiAgICAgIHNldElzU2VsZWN0ZWQgPSBfdXNlU3RhdGUyWzFdO1xuXG4gIHZhciBpbnB1dCA9IHVzZVJlZihudWxsKTtcbiAgdmFyIGNsYXNzZXMgPSBjeChcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlXCIpLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1zZWxlY3RhYmxlXCIpLCAoX2N4MyA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2N4MywgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0taXMtc2VsZWN0ZWRcIiksIGlzU2VsZWN0ZWQpLCBfZGVmaW5lUHJvcGVydHkoX2N4MywgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tbGlnaHRcIiksIGxpZ2h0KSwgX2RlZmluZVByb3BlcnR5KF9jeDMsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWRpc2FibGVkXCIpLCBkaXNhYmxlZCksIF9jeDMpLCBjbGFzc05hbWUpO1xuICB2YXIgaW5wdXRDbGFzc2VzID0gY3goXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1pbnB1dFwiKSwgX2RlZmluZVByb3BlcnR5KHt9LCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWlucHV0LS1jaGVja2VkXCIpLCBpc1NlbGVjdGVkKSk7IC8vIFRPRE86IHJlbmFtZSB0byBoYW5kbGVDbGljayB3aGVuIGhhbmRsZUNsaWNrIHByb3AgaXMgZGVwcmVjYXRlZFxuXG4gIGZ1bmN0aW9uIGhhbmRsZU9uQ2xpY2soZXZ0KSB7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZ0LnBlcnNpc3QoKTtcbiAgICBzZXRJc1NlbGVjdGVkKCFpc1NlbGVjdGVkKTtcbiAgICBjbGlja0hhbmRsZXIoZXZ0KTtcbiAgICBvbkNoYW5nZShldnQpO1xuICB9IC8vIFRPRE86IHJlbmFtZSB0byBoYW5kbGVLZXlEb3duIHdoZW4gaGFuZGxlS2V5RG93biBwcm9wIGlzIGRlcHJlY2F0ZWRcblxuXG4gIGZ1bmN0aW9uIGhhbmRsZU9uS2V5RG93bihldnQpIHtcbiAgICBldnQucGVyc2lzdCgpO1xuXG4gICAgaWYgKG1hdGNoZXMoZXZ0LCBbRW50ZXIsIFNwYWNlXSkpIHtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgc2V0SXNTZWxlY3RlZCghaXNTZWxlY3RlZCk7XG4gICAgICBvbkNoYW5nZShldnQpO1xuICAgIH1cblxuICAgIGtleURvd25IYW5kbGVyKGV2dCk7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVDaGFuZ2UoZXZlbnQpIHtcbiAgICBzZXRJc1NlbGVjdGVkKGV2ZW50LnRhcmdldC5jaGVja2VkKTtcbiAgICBvbkNoYW5nZShldmVudCk7XG4gIH1cblxuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHNldElzU2VsZWN0ZWQoc2VsZWN0ZWQpO1xuICB9LCBbc2VsZWN0ZWRdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFJlYWN0X19kZWZhdWx0LkZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHtcbiAgICByZWY6IGlucHV0LFxuICAgIHRhYkluZGV4OiAtMSxcbiAgICBpZDogaWQsXG4gICAgY2xhc3NOYW1lOiBpbnB1dENsYXNzZXMsXG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIG9uQ2hhbmdlOiAhZGlzYWJsZWQgPyBoYW5kbGVDaGFuZ2UgOiBudWxsLFxuICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgbmFtZTogbmFtZSxcbiAgICB0aXRsZTogdGl0bGUsXG4gICAgY2hlY2tlZDogaXNTZWxlY3RlZFxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJsYWJlbFwiLCBfZXh0ZW5kcyh7XG4gICAgaHRtbEZvcjogaWQsXG4gICAgY2xhc3NOYW1lOiBjbGFzc2VzIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9uby1ub25pbnRlcmFjdGl2ZS10YWJpbmRleFxuICAgICxcbiAgICB0YWJJbmRleDogIWRpc2FibGVkID8gdGFiSW5kZXggOiBudWxsXG4gIH0sIHJlc3QsIHtcbiAgICBvbkNsaWNrOiAhZGlzYWJsZWQgPyBoYW5kbGVPbkNsaWNrIDogbnVsbCxcbiAgICBvbktleURvd246ICFkaXNhYmxlZCA/IGhhbmRsZU9uS2V5RG93biA6IG51bGxcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlX19jaGVja21hcmsgXCIpLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlX19jaGVja21hcmstLXBlcnNpc3RlbnRcIilcbiAgfSwgaXNTZWxlY3RlZCA/IF9DaGVja2JveENoZWNrZWRGaWxsZSB8fCAoX0NoZWNrYm94Q2hlY2tlZEZpbGxlID0gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tib3hDaGVja2VkRmlsbGVkLCBudWxsKSkgOiBfQ2hlY2tib3ggfHwgKF9DaGVja2JveCA9IC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KENoZWNrYm94LCBudWxsKSkpLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1jb250ZW50XCIpXG4gIH0sIGNoaWxkcmVuKSkpO1xufVxuU2VsZWN0YWJsZVRpbGUuZGVmYXVsdFByb3BzID0ge1xuICB2YWx1ZTogJ3ZhbHVlJyxcbiAgdGl0bGU6ICd0aXRsZScsXG4gIHNlbGVjdGVkOiBmYWxzZSxcbiAgdGFiSW5kZXg6IDAsXG4gIGxpZ2h0OiBmYWxzZSxcbiAgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHt9LFxuICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoKSB7fSxcbiAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oKSB7fVxufTtcblNlbGVjdGFibGVUaWxlLnByb3BUeXBlcyA9IHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcblxuICAvKipcbiAgICogVGhlIENTUyBjbGFzcyBuYW1lcy5cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogU3BlY2lmeSB3aGV0aGVyIHRoZSBTZWxlY3RhYmxlVGlsZSBzaG91bGQgYmUgZGlzYWJsZWRcbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIFNlbGVjdGFibGVUaWxlIGlzIGNsaWNrZWRcbiAgICovXG4gIGhhbmRsZUNsaWNrOiBkZXByZWNhdGUoUHJvcFR5cGVzLmZ1bmMsICdUaGUgYGhhbmRsZUNsaWNrYCBwcm9wIGZvciBgU2VsZWN0YWJsZVRpbGVgIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgYG9uQ2xpY2tgLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIFNlbGVjdGFibGVUaWxlIGlzIGludGVyYWN0ZWQgd2l0aCB2aWEgYSBrZXlib2FyZFxuICAgKi9cbiAgaGFuZGxlS2V5RG93bjogZGVwcmVjYXRlKFByb3BUeXBlcy5mdW5jLCAnVGhlIGBoYW5kbGVLZXlEb3duYCBwcm9wIGZvciBgU2VsZWN0YWJsZVRpbGVgIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgYG9uS2V5RG93bmAuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGNoZWNrbWFyayBpY29uLlxuICAgKi9cbiAgaWNvbkRlc2NyaXB0aW9uOiBkZXByZWNhdGUoUHJvcFR5cGVzLnN0cmluZywgJ1RoZSBgaWNvbkRlc2NyaXB0aW9uYCBwcm9wIGZvciBgU2VsZWN0YWJsZVRpbGVgIGlzIG5vIGxvbmdlciBuZWVkZWQgYW5kIGhhcyAnICsgJ2JlZW4gZGVwcmVjYXRlZC4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgYDxpbnB1dD5gLlxuICAgKi9cbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCB0byB1c2UgdGhlIGxpZ2h0IHZlcnNpb24uIEZvciB1c2Ugb24gJHVpLTAxIGJhY2tncm91bmRzIG9ubHkuXG4gICAqIERvbid0IHVzZSB0aGlzIHRvIG1ha2UgdGlsZSBiYWNrZ3JvdW5kIGNvbG9yIHNhbWUgYXMgY29udGFpbmVyIGJhY2tncm91bmQgY29sb3IuXG4gICAqL1xuICBsaWdodDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIFRoZSBgbmFtZWAgb2YgdGhlIGA8aW5wdXQ+YC5cbiAgICovXG4gIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFRoZSBlbXB0eSBoYW5kbGVyIG9mIHRoZSBgPGlucHV0PmAuXG4gICAqL1xuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBTZWxlY3RhYmxlVGlsZSBpcyBjbGlja2VkXG4gICAqL1xuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIFNlbGVjdGFibGVUaWxlIGlzIGludGVyYWN0ZWQgd2l0aCB2aWEgYSBrZXlib2FyZFxuICAgKi9cbiAgb25LZXlEb3duOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogYHRydWVgIHRvIHNlbGVjdCB0aGlzIHRpbGUuXG4gICAqL1xuICBzZWxlY3RlZDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIHRhYiBpbmRleCBvZiB0aGUgd3JhcHBlciBlbGVtZW50XG4gICAqL1xuICB0YWJJbmRleDogUHJvcFR5cGVzLm51bWJlcixcblxuICAvKipcbiAgICogVGhlIGB0aXRsZWAgb2YgdGhlIGA8aW5wdXQ+YC5cbiAgICovXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIGA8aW5wdXQ+YC5cbiAgICovXG4gIHZhbHVlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubnVtYmVyXSkuaXNSZXF1aXJlZFxufTtcbnZhciBFeHBhbmRhYmxlVGlsZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudDMpIHtcbiAgX2luaGVyaXRzKEV4cGFuZGFibGVUaWxlLCBfQ29tcG9uZW50Myk7XG5cbiAgdmFyIF9zdXBlcjMgPSBfY3JlYXRlU3VwZXIoRXhwYW5kYWJsZVRpbGUpO1xuXG4gIGZ1bmN0aW9uIEV4cGFuZGFibGVUaWxlKCkge1xuICAgIHZhciBfdGhpczI7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRXhwYW5kYWJsZVRpbGUpO1xuXG4gICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICBhcmdzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgfVxuXG4gICAgX3RoaXMyID0gX3N1cGVyMy5jYWxsLmFwcGx5KF9zdXBlcjMsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJzdGF0ZVwiLCB7fSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcInJlc2l6ZU9ic2VydmVyXCIsIG51bGwpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJjb21wb25lbnREaWRNb3VudFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpczIucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZnVuY3Rpb24gKGVudHJpZXMpIHtcbiAgICAgICAgdmFyIF9lbnRyaWVzID0gX3NsaWNlZFRvQXJyYXkoZW50cmllcywgMSksXG4gICAgICAgICAgICBhYm92ZVRoZUZvbGQgPSBfZW50cmllc1swXTtcblxuICAgICAgICBfdGhpczIuc2V0U3RhdGUoe1xuICAgICAgICAgIHRpbGVNYXhIZWlnaHQ6IGFib3ZlVGhlRm9sZC5jb250ZW50UmVjdC5oZWlnaHRcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKF90aGlzMi50aWxlKSB7XG4gICAgICAgIHZhciBnZXRTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKF90aGlzMi50aWxlLCBudWxsKTtcblxuICAgICAgICBpZiAoX3RoaXMyLmFib3ZlVGhlRm9sZCkge1xuICAgICAgICAgIF90aGlzMi5yZXNpemVPYnNlcnZlci5vYnNlcnZlKF90aGlzMi5hYm92ZVRoZUZvbGQpO1xuXG4gICAgICAgICAgX3RoaXMyLnNldFN0YXRlKHtcbiAgICAgICAgICAgIHRpbGVNYXhIZWlnaHQ6IF90aGlzMi5hYm92ZVRoZUZvbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0LFxuICAgICAgICAgICAgdGlsZVBhZGRpbmc6IHBhcnNlSW50KGdldFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctdG9wJyksIDEwKSArIHBhcnNlSW50KGdldFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctYm90dG9tJyksIDEwKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcImNvbXBvbmVudERpZFVwZGF0ZVwiLCBmdW5jdGlvbiAocHJldlByb3BzKSB7XG4gICAgICBpZiAocHJldlByb3BzLmV4cGFuZGVkICE9PSBfdGhpczIucHJvcHMuZXhwYW5kZWQpIHtcbiAgICAgICAgX3RoaXMyLnNldE1heEhlaWdodCgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJzZXRNYXhIZWlnaHRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKF90aGlzMi5zdGF0ZS5leHBhbmRlZCA/IF90aGlzMi50aWxlQ29udGVudCA6IF90aGlzMi5hYm92ZVRoZUZvbGQpIHtcbiAgICAgICAgX3RoaXMyLnNldFN0YXRlKHtcbiAgICAgICAgICB0aWxlTWF4SGVpZ2h0OiBfdGhpczIuc3RhdGUuZXhwYW5kZWQgPyBfdGhpczIudGlsZUNvbnRlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0IDogX3RoaXMyLmFib3ZlVGhlRm9sZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcImhhbmRsZUNsaWNrXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGlmICghX3RoaXMyLnByb3BzLm9uQmVmb3JlQ2xpY2soZXZ0KSB8fCBldnQudGFyZ2V0LnRhZ05hbWUgPT09ICdJTlBVVCcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBldnQucGVyc2lzdCgpO1xuXG4gICAgICBfdGhpczIuc2V0U3RhdGUoe1xuICAgICAgICBleHBhbmRlZDogIV90aGlzMi5zdGF0ZS5leHBhbmRlZFxuICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMyJHByb3BzJGhhbmRsZUNsLCBfdGhpczIkcHJvcHMsIF90aGlzMiRwcm9wcyRvbkNsaWNrLCBfdGhpczIkcHJvcHMyO1xuXG4gICAgICAgIF90aGlzMi5zZXRNYXhIZWlnaHQoKTsgLy8gVE9ETzogUmVtb3ZlIGhhbmRsZUNsaWNrIHByb3Agd2hlbiBoYW5kbGVDbGljayBpcyBkZXByZWNhdGVkXG5cblxuICAgICAgICAoKF90aGlzMiRwcm9wcyRoYW5kbGVDbCA9IChfdGhpczIkcHJvcHMgPSBfdGhpczIucHJvcHMpLmhhbmRsZUNsaWNrKSA9PT0gbnVsbCB8fCBfdGhpczIkcHJvcHMkaGFuZGxlQ2wgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzMiRwcm9wcyRoYW5kbGVDbC5jYWxsKF90aGlzMiRwcm9wcywgZXZ0KSkgfHwgKChfdGhpczIkcHJvcHMkb25DbGljayA9IChfdGhpczIkcHJvcHMyID0gX3RoaXMyLnByb3BzKS5vbkNsaWNrKSA9PT0gbnVsbCB8fCBfdGhpczIkcHJvcHMkb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMyJHByb3BzJG9uQ2xpY2suY2FsbChfdGhpczIkcHJvcHMyLCBldnQpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJoYW5kbGVLZXlVcFwiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBpZiAoZXZ0LnRhcmdldCAhPT0gX3RoaXMyLnRpbGUpIHtcbiAgICAgICAgaWYgKG1hdGNoZXMoZXZ0LCBbRW50ZXIsIFNwYWNlXSkpIHtcbiAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJnZXRDaGlsZHJlblwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gUmVhY3RfX2RlZmF1bHQuQ2hpbGRyZW4udG9BcnJheShfdGhpczIucHJvcHMuY2hpbGRyZW4pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIF90aGlzMjtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhFeHBhbmRhYmxlVGlsZSwgW3tcbiAgICBrZXk6IFwiY29tcG9uZW50V2lsbFVubW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICBpZiAodGhpcy5yZXNpemVPYnNlcnZlcikge1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfY3g1LFxuICAgICAgICAgIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9wczcgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIHRhYkluZGV4ID0gX3RoaXMkcHJvcHM3LnRhYkluZGV4LFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzNy5jbGFzc05hbWU7XG4gICAgICAgICAgX3RoaXMkcHJvcHM3LmV4cGFuZGVkO1xuICAgICAgICAgIF90aGlzJHByb3BzNy50aWxlTWF4SGVpZ2h0O1xuICAgICAgICAgIF90aGlzJHByb3BzNy50aWxlUGFkZGluZztcbiAgICAgICAgICBfdGhpcyRwcm9wczcuaGFuZGxlQ2xpY2s7XG4gICAgICAgICAgdmFyIG9uS2V5VXAgPSBfdGhpcyRwcm9wczcub25LZXlVcCxcbiAgICAgICAgICB0aWxlQ29sbGFwc2VkSWNvblRleHQgPSBfdGhpcyRwcm9wczcudGlsZUNvbGxhcHNlZEljb25UZXh0LFxuICAgICAgICAgIHRpbGVFeHBhbmRlZEljb25UZXh0ID0gX3RoaXMkcHJvcHM3LnRpbGVFeHBhbmRlZEljb25UZXh0LFxuICAgICAgICAgIHRpbGVDb2xsYXBzZWRMYWJlbCA9IF90aGlzJHByb3BzNy50aWxlQ29sbGFwc2VkTGFiZWwsXG4gICAgICAgICAgdGlsZUV4cGFuZGVkTGFiZWwgPSBfdGhpcyRwcm9wczcudGlsZUV4cGFuZGVkTGFiZWw7XG4gICAgICAgICAgX3RoaXMkcHJvcHM3Lm9uQmVmb3JlQ2xpY2s7XG4gICAgICAgICAgdmFyIGxpZ2h0ID0gX3RoaXMkcHJvcHM3LmxpZ2h0LFxuICAgICAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3RoaXMkcHJvcHM3LCBfZXhjbHVkZWQ0KTtcblxuICAgICAgdmFyIHByZWZpeCA9IHRoaXMuY29udGV4dDtcbiAgICAgIHZhciBpc0V4cGFuZGVkID0gdGhpcy5zdGF0ZS5leHBhbmRlZDtcbiAgICAgIHZhciBjbGFzc2VzID0gY3goXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZVwiKSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tZXhwYW5kYWJsZVwiKSwgKF9jeDUgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jeDUsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWlzLWV4cGFuZGVkXCIpLCBpc0V4cGFuZGVkKSwgX2RlZmluZVByb3BlcnR5KF9jeDUsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWxpZ2h0XCIpLCBsaWdodCksIF9jeDUpLCBjbGFzc05hbWUpO1xuICAgICAgdmFyIHRpbGVTdHlsZSA9IHtcbiAgICAgICAgbWF4SGVpZ2h0OiBpc0V4cGFuZGVkID8gbnVsbCA6IHRoaXMuc3RhdGUudGlsZU1heEhlaWdodCArIHRoaXMuc3RhdGUudGlsZVBhZGRpbmdcbiAgICAgIH07XG4gICAgICB2YXIgY2hpbGRyZW5Bc0FycmF5ID0gdGhpcy5nZXRDaGlsZHJlbigpO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgLyojX19QVVJFX18qL1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyxqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnNcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCBfZXh0ZW5kcyh7XG4gICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICByZWY6IGZ1bmN0aW9uIHJlZih0aWxlKSB7XG4gICAgICAgICAgICBfdGhpczMudGlsZSA9IHRpbGU7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdHlsZTogdGlsZVN0eWxlLFxuICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3NlcyxcbiAgICAgICAgICBcImFyaWEtZXhwYW5kZWRcIjogaXNFeHBhbmRlZCxcbiAgICAgICAgICB0aXRsZTogaXNFeHBhbmRlZCA/IHRpbGVFeHBhbmRlZEljb25UZXh0IDogdGlsZUNvbGxhcHNlZEljb25UZXh0XG4gICAgICAgIH0sIHJlc3QsIHtcbiAgICAgICAgICBvbktleVVwOiBjb21wb3NlRXZlbnRIYW5kbGVycyhbb25LZXlVcCwgdGhpcy5oYW5kbGVLZXlVcF0pLFxuICAgICAgICAgIG9uQ2xpY2s6IHRoaXMuaGFuZGxlQ2xpY2ssXG4gICAgICAgICAgdGFiSW5kZXg6IHRhYkluZGV4XG4gICAgICAgIH0pLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgcmVmOiBmdW5jdGlvbiByZWYodGlsZUNvbnRlbnQpIHtcbiAgICAgICAgICAgIF90aGlzMy50aWxlQ29udGVudCA9IHRpbGVDb250ZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgIHJlZjogZnVuY3Rpb24gcmVmKGFib3ZlVGhlRm9sZCkge1xuICAgICAgICAgICAgX3RoaXMzLmFib3ZlVGhlRm9sZCA9IGFib3ZlVGhlRm9sZDtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1jb250ZW50XCIpXG4gICAgICAgIH0sIGNoaWxkcmVuQXNBcnJheVswXSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVfX2NoZXZyb25cIilcbiAgICAgICAgfSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIG51bGwsIGlzRXhwYW5kZWQgPyB0aWxlRXhwYW5kZWRMYWJlbCA6IHRpbGVDb2xsYXBzZWRMYWJlbCksIF9DaGV2cm9uRG93biB8fCAoX0NoZXZyb25Eb3duID0gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoQ2hldnJvbkRvd24sIG51bGwpKSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtY29udGVudFwiKVxuICAgICAgICB9LCBjaGlsZHJlbkFzQXJyYXlbMV0pKSlcbiAgICAgICk7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyggLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L3Byb3AtdHlwZXNcbiAgICBfcmVmMiwgc3RhdGUpIHtcbiAgICAgIHZhciBleHBhbmRlZCA9IF9yZWYyLmV4cGFuZGVkLFxuICAgICAgICAgIHRpbGVNYXhIZWlnaHQgPSBfcmVmMi50aWxlTWF4SGVpZ2h0LFxuICAgICAgICAgIHRpbGVQYWRkaW5nID0gX3JlZjIudGlsZVBhZGRpbmc7XG4gICAgICB2YXIgcHJldkV4cGFuZGVkID0gc3RhdGUucHJldkV4cGFuZGVkLFxuICAgICAgICAgIHByZXZUaWxlTWF4SGVpZ2h0ID0gc3RhdGUucHJldlRpbGVNYXhIZWlnaHQsXG4gICAgICAgICAgcHJldlRpbGVQYWRkaW5nID0gc3RhdGUucHJldlRpbGVQYWRkaW5nLFxuICAgICAgICAgIGN1cnJlbnRFeHBhbmRlZCA9IHN0YXRlLmV4cGFuZGVkLFxuICAgICAgICAgIGN1cnJlbnRUaWxlTWF4SGVpZ2h0ID0gc3RhdGUudGlsZU1heEhlaWdodCxcbiAgICAgICAgICBjdXJyZW50VGlsZVBhZGRpbmcgPSBzdGF0ZS50aWxlUGFkZGluZztcbiAgICAgIHZhciBleHBhbmRlZENoYW5nZWQgPSBwcmV2RXhwYW5kZWQgIT09IGV4cGFuZGVkO1xuICAgICAgdmFyIHRpbGVNYXhIZWlnaHRDaGFuZ2VkID0gcHJldlRpbGVNYXhIZWlnaHQgIT09IHRpbGVNYXhIZWlnaHQ7XG4gICAgICB2YXIgdGlsZVBhZGRpbmdDaGFuZ2VkID0gcHJldlRpbGVQYWRkaW5nICE9PSB0aWxlUGFkZGluZztcbiAgICAgIHJldHVybiAhZXhwYW5kZWRDaGFuZ2VkICYmICF0aWxlTWF4SGVpZ2h0Q2hhbmdlZCAmJiAhdGlsZVBhZGRpbmdDaGFuZ2VkID8gbnVsbCA6IHtcbiAgICAgICAgZXhwYW5kZWQ6ICFleHBhbmRlZENoYW5nZWQgPyBjdXJyZW50RXhwYW5kZWQgOiBleHBhbmRlZCxcbiAgICAgICAgdGlsZU1heEhlaWdodDogIXRpbGVNYXhIZWlnaHRDaGFuZ2VkID8gY3VycmVudFRpbGVNYXhIZWlnaHQgOiB0aWxlTWF4SGVpZ2h0LFxuICAgICAgICB0aWxlUGFkZGluZzogIXRpbGVQYWRkaW5nQ2hhbmdlZCA/IGN1cnJlbnRUaWxlUGFkZGluZyA6IHRpbGVQYWRkaW5nLFxuICAgICAgICBwcmV2RXhwYW5kZWQ6IGV4cGFuZGVkLFxuICAgICAgICBwcmV2VGlsZU1heEhlaWdodDogdGlsZU1heEhlaWdodCxcbiAgICAgICAgcHJldlRpbGVQYWRkaW5nOiB0aWxlUGFkZGluZ1xuICAgICAgfTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRXhwYW5kYWJsZVRpbGU7XG59KENvbXBvbmVudCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShFeHBhbmRhYmxlVGlsZSwgXCJwcm9wVHlwZXNcIiwge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuXG4gIC8qKlxuICAgKiBUaGUgQ1NTIGNsYXNzIG5hbWVzLlxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgaWYgdGhlIHRpbGUgaXMgZXhwYW5kZWQuXG4gICAqL1xuICBleHBhbmRlZDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIERlcHJlY2F0ZWQgaW4gdjExLiBVc2UgJ29uQ2xpY2snIGluc3RlYWQuXG4gICAqL1xuICBoYW5kbGVDbGljazogZGVwcmVjYXRlKFByb3BUeXBlcy5mdW5jLCAnVGhlIGhhbmRsZUNsaWNrIHByb3AgZm9yIEV4cGFuZGFibGVUaWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Ygb25DbGljay4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIEFuIElEIHRoYXQgY2FuIGJlIHByb3ZpZGVkIHRvIGFyaWEtbGFiZWxsZWRieVxuICAgKi9cbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCB0byB1c2UgdGhlIGxpZ2h0IHZlcnNpb24uIEZvciB1c2Ugb24gJHVpLTAxIGJhY2tncm91bmRzIG9ubHkuXG4gICAqIERvbid0IHVzZSB0aGlzIHRvIG1ha2UgdGlsZSBiYWNrZ3JvdW5kIGNvbG9yIHNhbWUgYXMgY29udGFpbmVyIGJhY2tncm91bmQgY29sb3IuXG4gICAqL1xuICBsaWdodDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIG9wdGlvbmFsIGhhbmRsZXIgdG8gZGVjaWRlIHdoZXRoZXIgdG8gaWdub3JlIGEgY2xpY2suIHJldHVybnMgZmFsc2UgaWYgY2xpY2sgc2hvdWxkIGJlIGlnbm9yZWRcbiAgICovXG4gIG9uQmVmb3JlQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgRXhwYW5kYWJsZVRpbGUgaXMgY2xpY2tlZFxuICAgICovXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBvcHRpb25hbCBoYW5kbGVyIHRvIHRyaWdnZXIgYSBmdW5jdGlvbiB3aGVuIGEga2V5IGlzIHByZXNzZWRcbiAgICovXG4gIG9uS2V5VXA6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBUaGUgYHRhYmluZGV4YCBhdHRyaWJ1dGUuXG4gICAqL1xuICB0YWJJbmRleDogUHJvcFR5cGVzLm51bWJlcixcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBcImNvbGxhcHNlZFwiIGljb24gdGhhdCBjYW4gYmUgcmVhZCBieSBzY3JlZW4gcmVhZGVycy5cbiAgICovXG4gIHRpbGVDb2xsYXBzZWRJY29uVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogV2hlbiBcImNvbGxhcHNlZFwiLCBhIGxhYmVsIHRvIGFwcGVhciBuZXh0IHRvIHRoZSBjaGV2cm9uIChlLmcuLCBcIlZpZXcgbW9yZVwiKS5cbiAgICovXG4gIHRpbGVDb2xsYXBzZWRMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBcImV4cGFuZGVkXCIgaWNvbiB0aGF0IGNhbiBiZSByZWFkIGJ5IHNjcmVlbiByZWFkZXJzLlxuICAgKi9cbiAgdGlsZUV4cGFuZGVkSWNvblRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFdoZW4gXCJleHBhbmRlZFwiLCBhIGxhYmVsIHRvIGFwcGVhciBuZXh0IHRvIHRoZSBjaGV2cm9uIChlLmcuLCBcIlZpZXcgbGVzc1wiKS5cbiAgICovXG4gIHRpbGVFeHBhbmRlZExhYmVsOiBQcm9wVHlwZXMuc3RyaW5nXG59KTtcblxuX2RlZmluZVByb3BlcnR5KEV4cGFuZGFibGVUaWxlLCBcImNvbnRleHRUeXBlXCIsIFByZWZpeENvbnRleHQpO1xuXG5fZGVmaW5lUHJvcGVydHkoRXhwYW5kYWJsZVRpbGUsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgdGFiSW5kZXg6IDAsXG4gIGV4cGFuZGVkOiBmYWxzZSxcbiAgdGlsZU1heEhlaWdodDogMCxcbiAgdGlsZVBhZGRpbmc6IDAsXG4gIG9uQmVmb3JlQ2xpY2s6IGZ1bmN0aW9uIG9uQmVmb3JlQ2xpY2soKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7fSxcbiAgdGlsZUNvbGxhcHNlZEljb25UZXh0OiAnSW50ZXJhY3QgdG8gZXhwYW5kIFRpbGUnLFxuICB0aWxlRXhwYW5kZWRJY29uVGV4dDogJ0ludGVyYWN0IHRvIGNvbGxhcHNlIFRpbGUnLFxuICBsaWdodDogZmFsc2Vcbn0pO1xuXG52YXIgVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQ0KSB7XG4gIF9pbmhlcml0cyhUaWxlQWJvdmVUaGVGb2xkQ29udGVudCwgX0NvbXBvbmVudDQpO1xuXG4gIHZhciBfc3VwZXI0ID0gX2NyZWF0ZVN1cGVyKFRpbGVBYm92ZVRoZUZvbGRDb250ZW50KTtcblxuICBmdW5jdGlvbiBUaWxlQWJvdmVUaGVGb2xkQ29udGVudCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQpO1xuXG4gICAgcmV0dXJuIF9zdXBlcjQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhUaWxlQWJvdmVUaGVGb2xkQ29udGVudCwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBwcmVmaXggPSB0aGlzLmNvbnRleHQ7XG4gICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1jb250ZW50X19hYm92ZS10aGUtZm9sZFwiKVxuICAgICAgfSwgY2hpbGRyZW4pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUaWxlQWJvdmVUaGVGb2xkQ29udGVudDtcbn0oQ29tcG9uZW50KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGVBYm92ZVRoZUZvbGRDb250ZW50LCBcInByb3BUeXBlc1wiLCB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGVcbn0pO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQsIFwiY29udGV4dFR5cGVcIiwgUHJlZml4Q29udGV4dCk7XG5cbnZhciBUaWxlQmVsb3dUaGVGb2xkQ29udGVudCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudDUpIHtcbiAgX2luaGVyaXRzKFRpbGVCZWxvd1RoZUZvbGRDb250ZW50LCBfQ29tcG9uZW50NSk7XG5cbiAgdmFyIF9zdXBlcjUgPSBfY3JlYXRlU3VwZXIoVGlsZUJlbG93VGhlRm9sZENvbnRlbnQpO1xuXG4gIGZ1bmN0aW9uIFRpbGVCZWxvd1RoZUZvbGRDb250ZW50KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUaWxlQmVsb3dUaGVGb2xkQ29udGVudCk7XG5cbiAgICByZXR1cm4gX3N1cGVyNS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFRpbGVCZWxvd1RoZUZvbGRDb250ZW50LCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5wcm9wcy5jaGlsZHJlbjtcbiAgICAgIHZhciBwcmVmaXggPSB0aGlzLmNvbnRleHQ7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWNvbnRlbnRfX2JlbG93LXRoZS1mb2xkXCIpXG4gICAgICB9LCBjaGlsZHJlbik7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFRpbGVCZWxvd1RoZUZvbGRDb250ZW50O1xufShDb21wb25lbnQpO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZUJlbG93VGhlRm9sZENvbnRlbnQsIFwicHJvcFR5cGVzXCIsIHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZVxufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlQmVsb3dUaGVGb2xkQ29udGVudCwgXCJjb250ZXh0VHlwZVwiLCBQcmVmaXhDb250ZXh0KTtcblxuZXhwb3J0IHsgQ2xpY2thYmxlVGlsZSwgRXhwYW5kYWJsZVRpbGUsIFNlbGVjdGFibGVUaWxlLCBUaWxlLCBUaWxlQWJvdmVUaGVGb2xkQ29udGVudCwgVGlsZUJlbG93VGhlRm9sZENvbnRlbnQgfTtcbiJdLCJuYW1lcyI6WyJpbmhlcml0cyIsIl9pbmhlcml0cyIsImNyZWF0ZVN1cGVyIiwiX2NyZWF0ZVN1cGVyIiwiY2xhc3NDYWxsQ2hlY2siLCJfY2xhc3NDYWxsQ2hlY2siLCJjcmVhdGVDbGFzcyIsIl9jcmVhdGVDbGFzcyIsIm9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfZGVmaW5lUHJvcGVydHkiLCJleHRlbmRzIiwiX2V4dGVuZHMiLCJhc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwic2xpY2VkVG9BcnJheSIsIl9zbGljZWRUb0FycmF5IiwiUmVhY3RfX2RlZmF1bHQiLCJDb21wb25lbnQiLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsIlByb3BUeXBlcyIsImN4IiwiTGluayIsIkNoZWNrYm94Q2hlY2tlZEZpbGxlZCIsIkNoZWNrYm94IiwiQ2hldnJvbkRvd24iLCJkZXByZWNhdGUiLCJjb21wb3NlRXZlbnRIYW5kbGVycyIsIlByZWZpeENvbnRleHQiLCJ1c2VQcmVmaXgiLCJtYXRjaGVzIiwiRW50ZXIiLCJTcGFjZSIsIl9DaGVja2JveENoZWNrZWRGaWxsZSIsIl9DaGVja2JveCIsIl9DaGV2cm9uRG93biIsIl9leGNsdWRlZCIsIl9leGNsdWRlZDIiLCJfZXhjbHVkZWQzIiwiX2V4Y2x1ZGVkNCIsIlRpbGUiLCJfQ29tcG9uZW50IiwiX3N1cGVyIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJrZXkiLCJ2YWx1ZSIsInJlbmRlciIsInByZWZpeCIsImNvbnRleHQiLCJfdGhpcyRwcm9wcyIsInByb3BzIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJsaWdodCIsInJlc3QiLCJ0aWxlQ2xhc3NlcyIsImNvbmNhdCIsImNyZWF0ZUVsZW1lbnQiLCJub2RlIiwic3RyaW5nIiwiYm9vbCIsIkNsaWNrYWJsZVRpbGUiLCJfQ29tcG9uZW50MiIsIl9zdXBlcjIiLCJfdGhpcyIsIl9sZW4iLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY2FsbCIsImV2dCIsInBlcnNpc3QiLCJzZXRTdGF0ZSIsImNsaWNrZWQiLCJzdGF0ZSIsIl90aGlzJHByb3BzJGhhbmRsZUNsaSIsIl90aGlzJHByb3BzMiIsIl90aGlzJHByb3BzJG9uQ2xpY2siLCJfdGhpcyRwcm9wczMiLCJoYW5kbGVDbGljayIsIm9uQ2xpY2siLCJfdGhpcyRwcm9wcyRoYW5kbGVLZXkiLCJfdGhpcyRwcm9wczQiLCJoYW5kbGVLZXlEb3duIiwib25LZXlEb3duIiwiX3RoaXMkcHJvcHMkaGFuZGxlS2V5MiIsIl90aGlzJHByb3BzNSIsIl9jeDIiLCJfdGhpcyRwcm9wczYiLCJocmVmIiwiY2xhc3NlcyIsImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsIl9yZWYiLCJwcmV2Q2xpY2tlZCIsImZ1bmMiLCJyZWwiLCJTZWxlY3RhYmxlVGlsZSIsImhhbmRsZU9uQ2xpY2siLCJwcmV2ZW50RGVmYXVsdCIsInNldElzU2VsZWN0ZWQiLCJpc1NlbGVjdGVkIiwiY2xpY2tIYW5kbGVyIiwib25DaGFuZ2UiLCJoYW5kbGVPbktleURvd24iLCJrZXlEb3duSGFuZGxlciIsImhhbmRsZUNoYW5nZSIsImV2ZW50IiwidGFyZ2V0IiwiY2hlY2tlZCIsIl9jeDMiLCJpZCIsInRhYkluZGV4IiwibmFtZSIsInRpdGxlIiwiaWNvbkRlc2NyaXB0aW9uIiwiZGlzYWJsZWQiLCJzZWxlY3RlZCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJpbnB1dCIsImlucHV0Q2xhc3NlcyIsIkZyYWdtZW50IiwicmVmIiwidHlwZSIsImh0bWxGb3IiLCJkZWZhdWx0UHJvcHMiLCJwcm9wVHlwZXMiLCJudW1iZXIiLCJvbmVPZlR5cGUiLCJpc1JlcXVpcmVkIiwiRXhwYW5kYWJsZVRpbGUiLCJfQ29tcG9uZW50MyIsIl9zdXBlcjMiLCJfdGhpczIiLCJfbGVuMiIsIl9rZXkyIiwicmVzaXplT2JzZXJ2ZXIiLCJSZXNpemVPYnNlcnZlciIsImVudHJpZXMiLCJfZW50cmllcyIsImFib3ZlVGhlRm9sZCIsInRpbGVNYXhIZWlnaHQiLCJjb250ZW50UmVjdCIsImhlaWdodCIsInRpbGUiLCJnZXRTdHlsZSIsIndpbmRvdyIsImdldENvbXB1dGVkU3R5bGUiLCJvYnNlcnZlIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidGlsZVBhZGRpbmciLCJwYXJzZUludCIsImdldFByb3BlcnR5VmFsdWUiLCJwcmV2UHJvcHMiLCJleHBhbmRlZCIsInNldE1heEhlaWdodCIsInRpbGVDb250ZW50Iiwib25CZWZvcmVDbGljayIsInRhZ05hbWUiLCJfdGhpczIkcHJvcHMkaGFuZGxlQ2wiLCJfdGhpczIkcHJvcHMiLCJfdGhpczIkcHJvcHMkb25DbGljayIsIl90aGlzMiRwcm9wczIiLCJDaGlsZHJlbiIsInRvQXJyYXkiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsImRpc2Nvbm5lY3QiLCJfY3g1IiwiX3RoaXMzIiwiX3RoaXMkcHJvcHM3Iiwib25LZXlVcCIsInRpbGVDb2xsYXBzZWRJY29uVGV4dCIsInRpbGVFeHBhbmRlZEljb25UZXh0IiwidGlsZUNvbGxhcHNlZExhYmVsIiwidGlsZUV4cGFuZGVkTGFiZWwiLCJpc0V4cGFuZGVkIiwidGlsZVN0eWxlIiwibWF4SGVpZ2h0IiwiY2hpbGRyZW5Bc0FycmF5IiwiZ2V0Q2hpbGRyZW4iLCJzdHlsZSIsImhhbmRsZUtleVVwIiwiX3JlZjIiLCJwcmV2RXhwYW5kZWQiLCJwcmV2VGlsZU1heEhlaWdodCIsInByZXZUaWxlUGFkZGluZyIsImN1cnJlbnRFeHBhbmRlZCIsImN1cnJlbnRUaWxlTWF4SGVpZ2h0IiwiY3VycmVudFRpbGVQYWRkaW5nIiwiZXhwYW5kZWRDaGFuZ2VkIiwidGlsZU1heEhlaWdodENoYW5nZWQiLCJ0aWxlUGFkZGluZ0NoYW5nZWQiLCJUaWxlQWJvdmVUaGVGb2xkQ29udGVudCIsIl9Db21wb25lbnQ0IiwiX3N1cGVyNCIsIlRpbGVCZWxvd1RoZUZvbGRDb250ZW50IiwiX0NvbXBvbmVudDUiLCJfc3VwZXI1Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/@carbon/react/es/components/Tile/Tile.js\n");
2605
2605
 
2606
2606
  /***/ }),
2607
2607
 
@@ -6895,7 +6895,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
6895
6895
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6896
6896
 
6897
6897
  "use strict";
6898
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"setupPaths\": () => (/* binding */ setupPaths),\n/* harmony export */ \"setupUtils\": () => (/* binding */ setupUtils)\n/* harmony export */ });\nfunction setupPaths(config) {\n window.openmrsBase = config.apiUrl;\n window.spaBase = config.spaPath;\n window.spaEnv = config.env || \"production\";\n window.spaVersion = \"4.4.1-pre.693-20230508\";\n window.getOpenmrsSpaBase = function() {\n return \"\".concat(window.spaBase, \"/\");\n };\n}\nfunction setupUtils() {\n window.copyText = function(source) {\n var sel = window.getSelection();\n if (sel) {\n var r = document.createRange();\n r.selectNode(source);\n sel.removeAllRanges();\n sel.addRange(r);\n document.execCommand(\"copy\");\n sel.removeAllRanges();\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1nbG9iYWxzL3NyYy9nbG9iYWxzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBRU8sU0FBU0EsV0FBV0MsTUFBaUIsRUFBRTtJQUM1Q0MsT0FBT0MsV0FBVyxHQUFHRixPQUFPRyxNQUFNO0lBQ2xDRixPQUFPRyxPQUFPLEdBQUdKLE9BQU9LLE9BQU87SUFDL0JKLE9BQU9LLE1BQU0sR0FBR04sT0FBT08sR0FBRyxJQUFJO0lBQzlCTixPQUFPTyxVQUFVLEdBQUdDLHdCQUF5QjtJQUM3Q1IsT0FBT1UsaUJBQWlCLEdBQUc7ZUFBTSxHQUFrQixPQUFmVixPQUFPRyxPQUFPLEVBQUM7O0FBQ3JELENBQUM7QUFFTSxTQUFTUSxhQUFhO0lBQzNCWCxPQUFPWSxRQUFRLEdBQUcsU0FBQ0MsUUFBd0I7UUFDekMsSUFBTUMsTUFBTWQsT0FBT2UsWUFBWTtRQUUvQixJQUFJRCxLQUFLO1lBQ1AsSUFBTUUsSUFBSUMsU0FBU0MsV0FBVztZQUM5QkYsRUFBRUcsVUFBVSxDQUFDTjtZQUNiQyxJQUFJTSxlQUFlO1lBQ25CTixJQUFJTyxRQUFRLENBQUNMO1lBQ2JDLFNBQVNLLFdBQVcsQ0FBQztZQUNyQlIsSUFBSU0sZUFBZTtRQUNyQixDQUFDO0lBQ0g7QUFDRixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWdsb2JhbHMvc3JjL2dsb2JhbHMudHM/NDFiMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNwYUNvbmZpZyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cFBhdGhzKGNvbmZpZzogU3BhQ29uZmlnKSB7XG4gIHdpbmRvdy5vcGVubXJzQmFzZSA9IGNvbmZpZy5hcGlVcmw7XG4gIHdpbmRvdy5zcGFCYXNlID0gY29uZmlnLnNwYVBhdGg7XG4gIHdpbmRvdy5zcGFFbnYgPSBjb25maWcuZW52IHx8IFwicHJvZHVjdGlvblwiO1xuICB3aW5kb3cuc3BhVmVyc2lvbiA9IHByb2Nlc3MuZW52LkJVSUxEX1ZFUlNJT047XG4gIHdpbmRvdy5nZXRPcGVubXJzU3BhQmFzZSA9ICgpID0+IGAke3dpbmRvdy5zcGFCYXNlfS9gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBVdGlscygpIHtcbiAgd2luZG93LmNvcHlUZXh0ID0gKHNvdXJjZTogSFRNTEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoc2VsKSB7XG4gICAgICBjb25zdCByID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICAgIHIuc2VsZWN0Tm9kZShzb3VyY2UpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgc2VsLmFkZFJhbmdlKHIpO1xuICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJjb3B5XCIpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJuYW1lcyI6WyJzZXR1cFBhdGhzIiwiY29uZmlnIiwid2luZG93Iiwib3Blbm1yc0Jhc2UiLCJhcGlVcmwiLCJzcGFCYXNlIiwic3BhUGF0aCIsInNwYUVudiIsImVudiIsInNwYVZlcnNpb24iLCJwcm9jZXNzIiwiQlVJTERfVkVSU0lPTiIsImdldE9wZW5tcnNTcGFCYXNlIiwic2V0dXBVdGlscyIsImNvcHlUZXh0Iiwic291cmNlIiwic2VsIiwiZ2V0U2VsZWN0aW9uIiwiciIsImRvY3VtZW50IiwiY3JlYXRlUmFuZ2UiLCJzZWxlY3ROb2RlIiwicmVtb3ZlQWxsUmFuZ2VzIiwiYWRkUmFuZ2UiLCJleGVjQ29tbWFuZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-globals/src/globals.ts\n");
6898
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"setupPaths\": () => (/* binding */ setupPaths),\n/* harmony export */ \"setupUtils\": () => (/* binding */ setupUtils)\n/* harmony export */ });\nfunction setupPaths(config) {\n window.openmrsBase = config.apiUrl;\n window.spaBase = config.spaPath;\n window.spaEnv = config.env || \"production\";\n window.spaVersion = \"4.4.2-pre.712-20230511\";\n window.getOpenmrsSpaBase = function() {\n return \"\".concat(window.spaBase, \"/\");\n };\n}\nfunction setupUtils() {\n window.copyText = function(source) {\n var sel = window.getSelection();\n if (sel) {\n var r = document.createRange();\n r.selectNode(source);\n sel.removeAllRanges();\n sel.addRange(r);\n document.execCommand(\"copy\");\n sel.removeAllRanges();\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1nbG9iYWxzL3NyYy9nbG9iYWxzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBRU8sU0FBU0EsV0FBV0MsTUFBaUIsRUFBRTtJQUM1Q0MsT0FBT0MsV0FBVyxHQUFHRixPQUFPRyxNQUFNO0lBQ2xDRixPQUFPRyxPQUFPLEdBQUdKLE9BQU9LLE9BQU87SUFDL0JKLE9BQU9LLE1BQU0sR0FBR04sT0FBT08sR0FBRyxJQUFJO0lBQzlCTixPQUFPTyxVQUFVLEdBQUdDLHdCQUF5QjtJQUM3Q1IsT0FBT1UsaUJBQWlCLEdBQUc7ZUFBTSxHQUFrQixPQUFmVixPQUFPRyxPQUFPLEVBQUM7O0FBQ3JELENBQUM7QUFFTSxTQUFTUSxhQUFhO0lBQzNCWCxPQUFPWSxRQUFRLEdBQUcsU0FBQ0MsUUFBd0I7UUFDekMsSUFBTUMsTUFBTWQsT0FBT2UsWUFBWTtRQUUvQixJQUFJRCxLQUFLO1lBQ1AsSUFBTUUsSUFBSUMsU0FBU0MsV0FBVztZQUM5QkYsRUFBRUcsVUFBVSxDQUFDTjtZQUNiQyxJQUFJTSxlQUFlO1lBQ25CTixJQUFJTyxRQUFRLENBQUNMO1lBQ2JDLFNBQVNLLFdBQVcsQ0FBQztZQUNyQlIsSUFBSU0sZUFBZTtRQUNyQixDQUFDO0lBQ0g7QUFDRixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWdsb2JhbHMvc3JjL2dsb2JhbHMudHM/NDFiMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNwYUNvbmZpZyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cFBhdGhzKGNvbmZpZzogU3BhQ29uZmlnKSB7XG4gIHdpbmRvdy5vcGVubXJzQmFzZSA9IGNvbmZpZy5hcGlVcmw7XG4gIHdpbmRvdy5zcGFCYXNlID0gY29uZmlnLnNwYVBhdGg7XG4gIHdpbmRvdy5zcGFFbnYgPSBjb25maWcuZW52IHx8IFwicHJvZHVjdGlvblwiO1xuICB3aW5kb3cuc3BhVmVyc2lvbiA9IHByb2Nlc3MuZW52LkJVSUxEX1ZFUlNJT047XG4gIHdpbmRvdy5nZXRPcGVubXJzU3BhQmFzZSA9ICgpID0+IGAke3dpbmRvdy5zcGFCYXNlfS9gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBVdGlscygpIHtcbiAgd2luZG93LmNvcHlUZXh0ID0gKHNvdXJjZTogSFRNTEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoc2VsKSB7XG4gICAgICBjb25zdCByID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICAgIHIuc2VsZWN0Tm9kZShzb3VyY2UpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgc2VsLmFkZFJhbmdlKHIpO1xuICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJjb3B5XCIpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJuYW1lcyI6WyJzZXR1cFBhdGhzIiwiY29uZmlnIiwid2luZG93Iiwib3Blbm1yc0Jhc2UiLCJhcGlVcmwiLCJzcGFCYXNlIiwic3BhUGF0aCIsInNwYUVudiIsImVudiIsInNwYVZlcnNpb24iLCJwcm9jZXNzIiwiQlVJTERfVkVSU0lPTiIsImdldE9wZW5tcnNTcGFCYXNlIiwic2V0dXBVdGlscyIsImNvcHlUZXh0Iiwic291cmNlIiwic2VsIiwiZ2V0U2VsZWN0aW9uIiwiciIsImRvY3VtZW50IiwiY3JlYXRlUmFuZ2UiLCJzZWxlY3ROb2RlIiwicmVtb3ZlQWxsUmFuZ2VzIiwiYWRkUmFuZ2UiLCJleGVjQ29tbWFuZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-globals/src/globals.ts\n");
6899
6899
 
6900
6900
  /***/ }),
6901
6901
 
@@ -7775,7 +7775,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
7775
7775
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7776
7776
 
7777
7777
  "use strict";
7778
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"run\": () => (/* binding */ run)\n/* harmony export */ });\n/* harmony import */ var import_map_overrides__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! import-map-overrides */ \"../../../node_modules/import-map-overrides/dist/import-map-overrides.js\");\n/* harmony import */ var systemjs_dist_system__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! systemjs/dist/system */ \"../../../node_modules/systemjs/dist/system.js\");\n/* harmony import */ var systemjs_dist_system__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(systemjs_dist_system__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var systemjs_dist_extras_amd__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! systemjs/dist/extras/amd */ \"../../../node_modules/systemjs/dist/extras/amd.js\");\n/* harmony import */ var systemjs_dist_extras_amd__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(systemjs_dist_extras_amd__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var systemjs_dist_extras_named_exports__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! systemjs/dist/extras/named-exports */ \"../../../node_modules/systemjs/dist/extras/named-exports.js\");\n/* harmony import */ var systemjs_dist_extras_named_exports__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(systemjs_dist_extras_named_exports__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var systemjs_dist_extras_named_register__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! systemjs/dist/extras/named-register */ \"../../../node_modules/systemjs/dist/extras/named-register.js\");\n/* harmony import */ var systemjs_dist_extras_named_register__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(systemjs_dist_extras_named_register__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var systemjs_dist_extras_use_default__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! systemjs/dist/extras/use-default */ \"../../../node_modules/systemjs/dist/extras/use-default.js\");\n/* harmony import */ var systemjs_dist_extras_use_default__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(systemjs_dist_extras_use_default__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var single_spa__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! single-spa */ \"../../../node_modules/single-spa/lib/esm/single-spa.min.js\");\n/* harmony import */ var _openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @openmrs/esm-framework/src/internal */ \"webpack/sharing/consume/default/@openmrs/esm-framework/src/internal/@openmrs/esm-framework/src/internal\");\n/* harmony import */ var _openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _apps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./apps */ \"./src/apps.ts\");\n/* harmony import */ var _locale__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./locale */ \"./src/locale.ts\");\n/* harmony import */ var _load_modules__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./load-modules */ \"./src/load-modules.ts\");\n/* harmony import */ var _ui__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ui */ \"./src/ui/index.ts\");\n/* harmony import */ var _dependencies__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./dependencies */ \"./src/dependencies.ts\");\nfunction _arrayLikeToArray(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 _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _iterableToArrayLimit(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 _nonIterableRest() {\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 _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(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 _arrayLikeToArray(o, minLen);\n}\nvar __generator = undefined && undefined.__generator || function(thisArg, body) {\n var f, y, t, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Loads the frontend modules (apps and widgets). Should be done *after*\n * the import maps initialized, i.e., after modules loaded.\n *\n * By convention we call frontend modules registering activation functions\n * apps, and all others widgets. This is not enforced technically.\n */ function loadApps() {\n return window.importMapOverrides.getCurrentPageMap().then(function(importMap) {\n return (0,_load_modules__WEBPACK_IMPORTED_MODULE_10__.loadModules)(importMap.imports);\n });\n}\n/**\n * Registers the extensions already coming from the app shell itself.\n */ function registerCoreExtensions() {\n var extensions = (0,_ui__WEBPACK_IMPORTED_MODULE_11__.getCoreExtensions)();\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = extensions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var extension = _step.value;\n (0,_apps__WEBPACK_IMPORTED_MODULE_8__.tryRegisterExtension)(_ui__WEBPACK_IMPORTED_MODULE_11__.appName, extension);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\nfunction setupApps(modules) {\n return _setupApps.apply(this, arguments);\n}\nfunction _setupApps() {\n _setupApps = /**\n * Sets up the frontend modules (apps). Uses the defined export\n * from the root modules of the apps, which should export a\n * special function called \"setupOpenMRS\".\n * That function returns an object that is used to feed Single\n * SPA.\n */ _asyncToGenerator(function(modules) {\n return __generator(this, function(_state) {\n modules.forEach(function(param) {\n var _param = _slicedToArray(param, 2), appName = _param[0], appExports = _param[1];\n return (0,_apps__WEBPACK_IMPORTED_MODULE_8__.registerApp)(appName, appExports);\n });\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribeConnectivity)(/*#__PURE__*/ _asyncToGenerator(function() {\n var appNames;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n appNames = (0,single_spa__WEBPACK_IMPORTED_MODULE_6__.getAppNames)();\n return [\n 4,\n Promise.all(appNames.map(single_spa__WEBPACK_IMPORTED_MODULE_6__.unregisterApplication))\n ];\n case 1:\n _state.sent();\n (0,_apps__WEBPACK_IMPORTED_MODULE_8__.finishRegisteringAllApps)();\n return [\n 2\n ];\n }\n });\n }));\n window.installedModules = modules;\n return [\n 2\n ];\n });\n });\n return _setupApps.apply(this, arguments);\n}\nfunction loadConfigs(configs) {\n return _loadConfigs.apply(this, arguments);\n}\nfunction _loadConfigs() {\n _loadConfigs = /**\n * Loads the provided configurations and sets them in the system.\n */ _asyncToGenerator(function(configs) {\n var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, config;\n return __generator(this, function(_state) {\n _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(_iterator = configs[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n config = _step.value;\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.provide)(config.value, config.name);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return [\n 2\n ];\n });\n });\n return _loadConfigs.apply(this, arguments);\n}\n/**\n * Invoked when the connectivity is changed.\n */ function connectivityChanged() {\n var online = navigator.onLine;\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.dispatchConnectivityChanged)(online);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.showToast)({\n critical: true,\n description: \"Connection: \".concat(online ? \"online\" : \"offline\"),\n title: \"App\",\n kind: online ? \"success\" : \"warning\"\n });\n}\n/**\n * Runs the shell by importing the translations and starting single SPA.\n */ function runShell() {\n window.addEventListener(\"offline\", connectivityChanged);\n window.addEventListener(\"online\", connectivityChanged);\n return (0,_locale__WEBPACK_IMPORTED_MODULE_9__.setupI18n)().catch(function(err) {\n return console.error(\"Failed to initialize translations\", err);\n }).then(function() {\n return (0,single_spa__WEBPACK_IMPORTED_MODULE_6__.start)();\n });\n}\nfunction handleInitFailure(e) {\n console.error(e);\n renderFatalErrorPage(e);\n}\nfunction renderFatalErrorPage(e) {\n var template = document.querySelector(\"#app-error\");\n if (template) {\n var fragment = template.content.cloneNode(true);\n var messageContainer = fragment.querySelector('[data-var=\"message\"]');\n if (messageContainer) {\n messageContainer.textContent = (e === null || e === void 0 ? void 0 : e.message) || \"No additional information available.\";\n }\n if (localStorage.getItem(\"openmrs:devtools\") && Object.keys(localStorage).some(function(k) {\n return k.startsWith(\"import-map-override:\");\n })) {\n var appErrorActionButtons = fragment === null || fragment === void 0 ? void 0 : fragment.querySelector(\"#buttons\");\n if (appErrorActionButtons) {\n var clearDevOverridesButton = document.createElement(\"button\");\n clearDevOverridesButton.className = \"cds--btn\";\n clearDevOverridesButton.innerHTML = \"Clear dev overrides\";\n clearDevOverridesButton.onclick = clearDevOverrides;\n appErrorActionButtons.appendChild(clearDevOverridesButton);\n }\n }\n document.body.appendChild(fragment);\n }\n}\nfunction clearDevOverrides() {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(localStorage)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var key = _step.value;\n if (key.startsWith(\"import-map-override:\") && ![\n \"import-map-override:react\",\n \"import-map-override:react-dom\"\n ].includes(key)) {\n localStorage.removeItem(key);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n location.reload();\n}\nfunction createConfigLoader(configUrls) {\n var loadingConfigs = Promise.all(configUrls.map(function(configUrl) {\n return fetch(configUrl).then(function(res) {\n return res.json();\n }).then(function(config) {\n return {\n name: configUrl,\n value: config\n };\n }).catch(function(err) {\n console.error('Loading the config from \"'.concat(configUrl, '\" failed.'), err);\n return {\n name: configUrl,\n value: {}\n };\n });\n }));\n return function() {\n return loadingConfigs.then(loadConfigs);\n };\n}\nfunction showNotifications() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.renderInlineNotifications)(document.querySelector(\".omrs-inline-notifications-container\"));\n return;\n}\nfunction showActionableNotifications() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.renderActionableNotifications)(document.querySelector(\".omrs-actionable-notifications-container\"));\n return;\n}\nfunction showToasts() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.renderToasts)(document.querySelector(\".omrs-toasts-container\"));\n return;\n}\nfunction showModals() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.renderModals)(document.querySelector(\".omrs-modals-container\"));\n return;\n}\nfunction showLoadingSpinner() {\n return (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.renderLoadingSpinner)(document.body);\n}\nfunction setupOffline() {\n return _setupOffline.apply(this, arguments);\n}\nfunction _setupOffline() {\n _setupOffline = _asyncToGenerator(function() {\n var error;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _state.trys.push([\n 0,\n 3,\n ,\n 4\n ]);\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.registerOmrsServiceWorker)(\"\".concat(window.getOpenmrsSpaBase(), \"service-worker.js\"))\n ];\n case 1:\n _state.sent();\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.activateOfflineCapability)()\n ];\n case 2:\n _state.sent();\n setupOfflineStaticDependencyPrecaching();\n return [\n 3,\n 4\n ];\n case 3:\n error = _state.sent();\n console.error(\"Error while setting up offline mode.\", error);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.showNotification)({\n kind: \"error\",\n title: \"Offline Setup Error\",\n description: error.message\n });\n return [\n 3,\n 4\n ];\n case 4:\n return [\n 2\n ];\n }\n });\n });\n return _setupOffline.apply(this, arguments);\n}\nfunction setupOfflineStaticDependencyPrecaching() {\n var precacheDelay = 1000 * 60 * 5;\n var lastPrecache = null;\n subscribeOnlineAndLoginChange(function(online, hasLoggedInUser) {\n var hasExceededPrecacheDelay = !lastPrecache || new Date().getTime() - lastPrecache.getTime() > precacheDelay;\n if (hasLoggedInUser && online && hasExceededPrecacheDelay) {\n lastPrecache = new Date();\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.dispatchPrecacheStaticDependencies)();\n }\n });\n}\nfunction subscribeOnlineAndLoginChange(cb) {\n var isOnline = false;\n var hasLoggedInUser = false;\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.getCurrentUser)({\n includeAuthStatus: false\n }).subscribe(function(user) {\n hasLoggedInUser = !!user;\n cb(isOnline, hasLoggedInUser);\n });\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribeConnectivity)(function(param) {\n var online = param.online;\n isOnline = online;\n cb(online, hasLoggedInUser);\n });\n}\nfunction precacheGlobalStaticDependencies() {\n return _precacheGlobalStaticDependencies.apply(this, arguments);\n}\nfunction _precacheGlobalStaticDependencies() {\n _precacheGlobalStaticDependencies = _asyncToGenerator(function() {\n var sessionPathUrl;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n precacheImportMap()\n ];\n case 1:\n _state.sent();\n sessionPathUrl = new URL(\"\".concat(window.openmrsBase, \"/ws/rest/v1/session\"), window.location.origin).href;\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.messageOmrsServiceWorker)({\n type: \"registerDynamicRoute\",\n url: sessionPathUrl,\n strategy: \"network-first\"\n })\n ];\n case 2:\n _state.sent();\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.openmrsFetch)(\"/ws/rest/v1/session\").catch(function(e) {\n return console.warn(\"Failed to precache the user session data from the app shell. MFs depending on this data may run into problems while offline.\", e);\n })\n ];\n case 3:\n _state.sent();\n return [\n 2\n ];\n }\n });\n });\n return _precacheGlobalStaticDependencies.apply(this, arguments);\n}\nfunction precacheImportMap() {\n return _precacheImportMap.apply(this, arguments);\n}\nfunction _precacheImportMap() {\n _precacheImportMap = _asyncToGenerator(function() {\n var importMap;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n window.importMapOverrides.getCurrentPageMap()\n ];\n case 1:\n importMap = _state.sent();\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.messageOmrsServiceWorker)({\n type: \"onImportMapChanged\",\n importMap: importMap\n })\n ];\n case 2:\n _state.sent();\n return [\n 2\n ];\n }\n });\n });\n return _precacheImportMap.apply(this, arguments);\n}\nfunction setupOfflineCssClasses() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribeConnectivity)(function(param) {\n var online = param.online;\n var body = document.querySelector(\"body\");\n if (online) {\n body.classList.remove(\"omrs-offline\");\n } else {\n body.classList.add(\"omrs-offline\");\n }\n });\n}\nfunction run(configUrls, offline) {\n var closeLoading = showLoadingSpinner();\n var provideConfigs = createConfigLoader(configUrls);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.integrateBreakpoints)();\n showToasts();\n showModals();\n showNotifications();\n showActionableNotifications();\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.createAppState)({});\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribeNotificationShown)(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.showNotification);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribeActionableNotificationShown)(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.showActionableNotification);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribeToastShown)(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.showToast);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribePrecacheStaticDependencies)(precacheGlobalStaticDependencies);\n // FIXME this is part of a hack to load esm-form-app which depends on the legacy loading for now\n // Once esm-form-app can be upgraded to Angular 12 and Module Federation, we should be able to ditch this\n (0,_dependencies__WEBPACK_IMPORTED_MODULE_12__.registerModules)(_dependencies__WEBPACK_IMPORTED_MODULE_12__.sharedDependencies);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.setupApiModule)();\n registerCoreExtensions();\n return loadApps().then(setupApps).then(setupOfflineCssClasses).then(provideConfigs).then(runShell).catch(handleInitFailure).then(closeLoading).then(function() {\n return offline ? setupOffline() : undefined;\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFJLENBQUNNLFdBQ0xOLElBQUksQ0FBQ3lHLHdCQUNMekcsSUFBSSxDQUFDZ0gsZ0JBQ0xoSCxJQUFJLENBQUM0QixVQUNMRSxLQUFLLENBQUNJLG1CQUNObEMsSUFBSSxDQUFDK0csY0FDTC9HLElBQUksQ0FBQztlQUFPOEcsVUFBVS9CLGlCQUFpQmtDLFNBQVM7O0FBQ3JELENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4vc3JjL3J1bi50cz9iYzI2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcImltcG9ydC1tYXAtb3ZlcnJpZGVzXCI7XG5pbXBvcnQgXCJzeXN0ZW1qcy9kaXN0L3N5c3RlbVwiO1xuaW1wb3J0IFwic3lzdGVtanMvZGlzdC9leHRyYXMvYW1kXCI7XG5pbXBvcnQgXCJzeXN0ZW1qcy9kaXN0L2V4dHJhcy9uYW1lZC1leHBvcnRzXCI7XG5pbXBvcnQgXCJzeXN0ZW1qcy9kaXN0L2V4dHJhcy9uYW1lZC1yZWdpc3RlclwiO1xuaW1wb3J0IFwic3lzdGVtanMvZGlzdC9leHRyYXMvdXNlLWRlZmF1bHRcIjtcbmltcG9ydCB7IHN0YXJ0LCB1bnJlZ2lzdGVyQXBwbGljYXRpb24sIGdldEFwcE5hbWVzIH0gZnJvbSBcInNpbmdsZS1zcGFcIjtcbmltcG9ydCB7XG4gIHNldHVwQXBpTW9kdWxlLFxuICByZW5kZXJMb2FkaW5nU3Bpbm5lcixcbiAgY3JlYXRlQXBwU3RhdGUsXG4gIENvbmZpZyxcbiAgcHJvdmlkZSxcbiAgc2hvd05vdGlmaWNhdGlvbixcbiAgc2hvd0FjdGlvbmFibGVOb3RpZmljYXRpb24sXG4gIHNob3dUb2FzdCxcbiAgcmVuZGVySW5saW5lTm90aWZpY2F0aW9ucyxcbiAgcmVuZGVyQWN0aW9uYWJsZU5vdGlmaWNhdGlvbnMsXG4gIHJlbmRlclRvYXN0cyxcbiAgaW50ZWdyYXRlQnJlYWtwb2ludHMsXG4gIGRpc3BhdGNoQ29ubmVjdGl2aXR5Q2hhbmdlZCxcbiAgc3Vic2NyaWJlTm90aWZpY2F0aW9uU2hvd24sXG4gIHN1YnNjcmliZUFjdGlvbmFibGVOb3RpZmljYXRpb25TaG93bixcbiAgc3Vic2NyaWJlVG9hc3RTaG93bixcbiAgcmVnaXN0ZXJPbXJzU2VydmljZVdvcmtlcixcbiAgbWVzc2FnZU9tcnNTZXJ2aWNlV29ya2VyLFxuICBzdWJzY3JpYmVDb25uZWN0aXZpdHksXG4gIGdldEN1cnJlbnRVc2VyLFxuICByZW5kZXJNb2RhbHMsXG4gIGRpc3BhdGNoUHJlY2FjaGVTdGF0aWNEZXBlbmRlbmNpZXMsXG4gIGFjdGl2YXRlT2ZmbGluZUNhcGFiaWxpdHksXG4gIHN1YnNjcmliZVByZWNhY2hlU3RhdGljRGVwZW5kZW5jaWVzLFxuICBvcGVubXJzRmV0Y2gsXG59IGZyb20gXCJAb3Blbm1ycy9lc20tZnJhbWV3b3JrL3NyYy9pbnRlcm5hbFwiO1xuaW1wb3J0IHtcbiAgZmluaXNoUmVnaXN0ZXJpbmdBbGxBcHBzLFxuICByZWdpc3RlckFwcCxcbiAgdHJ5UmVnaXN0ZXJFeHRlbnNpb24sXG59IGZyb20gXCIuL2FwcHNcIjtcbmltcG9ydCB7IHNldHVwSTE4biB9IGZyb20gXCIuL2xvY2FsZVwiO1xuaW1wb3J0IHsgbG9hZE1vZHVsZXMgfSBmcm9tIFwiLi9sb2FkLW1vZHVsZXNcIjtcbmltcG9ydCB7IGFwcE5hbWUsIGdldENvcmVFeHRlbnNpb25zIH0gZnJvbSBcIi4vdWlcIjtcbmltcG9ydCB7IHJlZ2lzdGVyTW9kdWxlcywgc2hhcmVkRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4vZGVwZW5kZW5jaWVzXCI7XG5cbi8qKlxuICogTG9hZHMgdGhlIGZyb250ZW5kIG1vZHVsZXMgKGFwcHMgYW5kIHdpZGdldHMpLiBTaG91bGQgYmUgZG9uZSAqYWZ0ZXIqXG4gKiB0aGUgaW1wb3J0IG1hcHMgaW5pdGlhbGl6ZWQsIGkuZS4sIGFmdGVyIG1vZHVsZXMgbG9hZGVkLlxuICpcbiAqIEJ5IGNvbnZlbnRpb24gd2UgY2FsbCBmcm9udGVuZCBtb2R1bGVzIHJlZ2lzdGVyaW5nIGFjdGl2YXRpb24gZnVuY3Rpb25zXG4gKiBhcHBzLCBhbmQgYWxsIG90aGVycyB3aWRnZXRzLiBUaGlzIGlzIG5vdCBlbmZvcmNlZCB0ZWNobmljYWxseS5cbiAqL1xuZnVuY3Rpb24gbG9hZEFwcHMoKSB7XG4gIHJldHVybiB3aW5kb3cuaW1wb3J0TWFwT3ZlcnJpZGVzXG4gICAgLmdldEN1cnJlbnRQYWdlTWFwKClcbiAgICAudGhlbigoaW1wb3J0TWFwKSA9PiBsb2FkTW9kdWxlcyhpbXBvcnRNYXAuaW1wb3J0cykpO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgZXh0ZW5zaW9ucyBhbHJlYWR5IGNvbWluZyBmcm9tIHRoZSBhcHAgc2hlbGwgaXRzZWxmLlxuICovXG5mdW5jdGlvbiByZWdpc3RlckNvcmVFeHRlbnNpb25zKCkge1xuICBjb25zdCBleHRlbnNpb25zID0gZ2V0Q29yZUV4dGVuc2lvbnMoKTtcblxuICBmb3IgKGNvbnN0IGV4dGVuc2lvbiBvZiBleHRlbnNpb25zKSB7XG4gICAgdHJ5UmVnaXN0ZXJFeHRlbnNpb24oYXBwTmFtZSwgZXh0ZW5zaW9uKTtcbiAgfVxufVxuXG4vKipcbiAqIFNldHMgdXAgdGhlIGZyb250ZW5kIG1vZHVsZXMgKGFwcHMpLiBVc2VzIHRoZSBkZWZpbmVkIGV4cG9ydFxuICogZnJvbSB0aGUgcm9vdCBtb2R1bGVzIG9mIHRoZSBhcHBzLCB3aGljaCBzaG91bGQgZXhwb3J0IGFcbiAqIHNwZWNpYWwgZnVuY3Rpb24gY2FsbGVkIFwic2V0dXBPcGVuTVJTXCIuXG4gKiBUaGF0IGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0IHRoYXQgaXMgdXNlZCB0byBmZWVkIFNpbmdsZVxuICogU1BBLlxuICovXG5hc3luYyBmdW5jdGlvbiBzZXR1cEFwcHMobW9kdWxlczogQXJyYXk8W3N0cmluZywgU3lzdGVtLk1vZHVsZV0+KSB7XG4gIG1vZHVsZXMuZm9yRWFjaCgoW2FwcE5hbWUsIGFwcEV4cG9ydHNdKSA9PiByZWdpc3RlckFwcChhcHBOYW1lLCBhcHBFeHBvcnRzKSk7XG4gIHN1YnNjcmliZUNvbm5lY3Rpdml0eShhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYXBwTmFtZXMgPSBnZXRBcHBOYW1lcygpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKGFwcE5hbWVzLm1hcCh1bnJlZ2lzdGVyQXBwbGljYXRpb24pKTtcbiAgICBmaW5pc2hSZWdpc3RlcmluZ0FsbEFwcHMoKTtcbiAgfSk7XG4gIHdpbmRvdy5pbnN0YWxsZWRNb2R1bGVzID0gbW9kdWxlcztcbn1cblxuLyoqXG4gKiBMb2FkcyB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbnMgYW5kIHNldHMgdGhlbSBpbiB0aGUgc3lzdGVtLlxuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkQ29uZmlncyhjb25maWdzOiBBcnJheTx7IG5hbWU6IHN0cmluZzsgdmFsdWU6IENvbmZpZyB9Pikge1xuICBmb3IgKGNvbnN0IGNvbmZpZyBvZiBjb25maWdzKSB7XG4gICAgcHJvdmlkZShjb25maWcudmFsdWUsIGNvbmZpZy5uYW1lKTtcbiAgfVxufVxuXG4vKipcbiAqIEludm9rZWQgd2hlbiB0aGUgY29ubmVjdGl2aXR5IGlzIGNoYW5nZWQuXG4gKi9cbmZ1bmN0aW9uIGNvbm5lY3Rpdml0eUNoYW5nZWQoKSB7XG4gIGNvbnN0IG9ubGluZSA9IG5hdmlnYXRvci5vbkxpbmU7XG4gIGRpc3BhdGNoQ29ubmVjdGl2aXR5Q2hhbmdlZChvbmxpbmUpO1xuICBzaG93VG9hc3Qoe1xuICAgIGNyaXRpY2FsOiB0cnVlLFxuICAgIGRlc2NyaXB0aW9uOiBgQ29ubmVjdGlvbjogJHtvbmxpbmUgPyBcIm9ubGluZVwiIDogXCJvZmZsaW5lXCJ9YCxcbiAgICB0aXRsZTogXCJBcHBcIixcbiAgICBraW5kOiBvbmxpbmUgPyBcInN1Y2Nlc3NcIiA6IFwid2FybmluZ1wiLFxuICB9KTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSBzaGVsbCBieSBpbXBvcnRpbmcgdGhlIHRyYW5zbGF0aW9ucyBhbmQgc3RhcnRpbmcgc2luZ2xlIFNQQS5cbiAqL1xuZnVuY3Rpb24gcnVuU2hlbGwoKSB7XG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwib2ZmbGluZVwiLCBjb25uZWN0aXZpdHlDaGFuZ2VkKTtcbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJvbmxpbmVcIiwgY29ubmVjdGl2aXR5Q2hhbmdlZCk7XG4gIHJldHVybiBzZXR1cEkxOG4oKVxuICAgIC5jYXRjaCgoZXJyKSA9PiBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0cmFuc2xhdGlvbnNgLCBlcnIpKVxuICAgIC50aGVuKCgpID0+IHN0YXJ0KCkpO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVJbml0RmFpbHVyZShlOiBFcnJvcikge1xuICBjb25zb2xlLmVycm9yKGUpO1xuICByZW5kZXJGYXRhbEVycm9yUGFnZShlKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyRmF0YWxFcnJvclBhZ2UoZT86IEVycm9yKSB7XG4gIGNvbnN0IHRlbXBsYXRlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MVGVtcGxhdGVFbGVtZW50PihcIiNhcHAtZXJyb3JcIik7XG5cbiAgaWYgKHRlbXBsYXRlKSB7XG4gICAgY29uc3QgZnJhZ21lbnQgPSB0ZW1wbGF0ZS5jb250ZW50LmNsb25lTm9kZSh0cnVlKSBhcyBEb2N1bWVudEZyYWdtZW50O1xuICAgIGNvbnN0IG1lc3NhZ2VDb250YWluZXIgPSBmcmFnbWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS12YXI9XCJtZXNzYWdlXCJdJyk7XG5cbiAgICBpZiAobWVzc2FnZUNvbnRhaW5lcikge1xuICAgICAgbWVzc2FnZUNvbnRhaW5lci50ZXh0Q29udGVudCA9XG4gICAgICAgIGU/Lm1lc3NhZ2UgfHwgXCJObyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGF2YWlsYWJsZS5cIjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIm9wZW5tcnM6ZGV2dG9vbHNcIikgJiZcbiAgICAgIE9iamVjdC5rZXlzKGxvY2FsU3RvcmFnZSkuc29tZSgoaykgPT5cbiAgICAgICAgay5zdGFydHNXaXRoKFwiaW1wb3J0LW1hcC1vdmVycmlkZTpcIilcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGNvbnN0IGFwcEVycm9yQWN0aW9uQnV0dG9ucyA9IGZyYWdtZW50Py5xdWVyeVNlbGVjdG9yKFwiI2J1dHRvbnNcIik7XG4gICAgICBpZiAoYXBwRXJyb3JBY3Rpb25CdXR0b25zKSB7XG4gICAgICAgIGNvbnN0IGNsZWFyRGV2T3ZlcnJpZGVzQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiKTtcbiAgICAgICAgY2xlYXJEZXZPdmVycmlkZXNCdXR0b24uY2xhc3NOYW1lID0gXCJjZHMtLWJ0blwiO1xuICAgICAgICBjbGVhckRldk92ZXJyaWRlc0J1dHRvbi5pbm5lckhUTUwgPSBcIkNsZWFyIGRldiBvdmVycmlkZXNcIjtcbiAgICAgICAgY2xlYXJEZXZPdmVycmlkZXNCdXR0b24ub25jbGljayA9IGNsZWFyRGV2T3ZlcnJpZGVzO1xuICAgICAgICBhcHBFcnJvckFjdGlvbkJ1dHRvbnMuYXBwZW5kQ2hpbGQoY2xlYXJEZXZPdmVycmlkZXNCdXR0b24pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhZ21lbnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNsZWFyRGV2T3ZlcnJpZGVzKCkge1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhsb2NhbFN0b3JhZ2UpKSB7XG4gICAgaWYgKFxuICAgICAga2V5LnN0YXJ0c1dpdGgoXCJpbXBvcnQtbWFwLW92ZXJyaWRlOlwiKSAmJlxuICAgICAgIVtcImltcG9ydC1tYXAtb3ZlcnJpZGU6cmVhY3RcIiwgXCJpbXBvcnQtbWFwLW92ZXJyaWRlOnJlYWN0LWRvbVwiXS5pbmNsdWRlcyhcbiAgICAgICAga2V5XG4gICAgICApXG4gICAgKSB7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICAgIH1cbiAgfVxuICBsb2NhdGlvbi5yZWxvYWQoKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29uZmlnTG9hZGVyKGNvbmZpZ1VybHM6IEFycmF5PHN0cmluZz4pIHtcbiAgY29uc3QgbG9hZGluZ0NvbmZpZ3MgPSBQcm9taXNlLmFsbChcbiAgICBjb25maWdVcmxzLm1hcCgoY29uZmlnVXJsKSA9PlxuICAgICAgZmV0Y2goY29uZmlnVXJsKVxuICAgICAgICAudGhlbigocmVzKSA9PiByZXMuanNvbigpKVxuICAgICAgICAudGhlbigoY29uZmlnKSA9PiAoe1xuICAgICAgICAgIG5hbWU6IGNvbmZpZ1VybCxcbiAgICAgICAgICB2YWx1ZTogY29uZmlnLFxuICAgICAgICB9KSlcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBMb2FkaW5nIHRoZSBjb25maWcgZnJvbSBcIiR7Y29uZmlnVXJsfVwiIGZhaWxlZC5gLCBlcnIpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lOiBjb25maWdVcmwsXG4gICAgICAgICAgICB2YWx1ZToge30sXG4gICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICApXG4gICk7XG4gIHJldHVybiAoKSA9PiBsb2FkaW5nQ29uZmlncy50aGVuKGxvYWRDb25maWdzKTtcbn1cblxuZnVuY3Rpb24gc2hvd05vdGlmaWNhdGlvbnMoKSB7XG4gIHJlbmRlcklubGluZU5vdGlmaWNhdGlvbnMoXG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5vbXJzLWlubGluZS1ub3RpZmljYXRpb25zLWNvbnRhaW5lclwiKVxuICApO1xuICByZXR1cm47XG59XG5cbmZ1bmN0aW9uIHNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9ucygpIHtcbiAgcmVuZGVyQWN0aW9uYWJsZU5vdGlmaWNhdGlvbnMoXG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5vbXJzLWFjdGlvbmFibGUtbm90aWZpY2F0aW9ucy1jb250YWluZXJcIilcbiAgKTtcbiAgcmV0dXJuO1xufVxuXG5mdW5jdGlvbiBzaG93VG9hc3RzKCkge1xuICByZW5kZXJUb2FzdHMoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5vbXJzLXRvYXN0cy1jb250YWluZXJcIikpO1xuICByZXR1cm47XG59XG5cbmZ1bmN0aW9uIHNob3dNb2RhbHMoKSB7XG4gIHJlbmRlck1vZGFscyhkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLm9tcnMtbW9kYWxzLWNvbnRhaW5lclwiKSk7XG4gIHJldHVybjtcbn1cblxuZnVuY3Rpb24gc2hvd0xvYWRpbmdTcGlubmVyKCkge1xuICByZXR1cm4gcmVuZGVyTG9hZGluZ1NwaW5uZXIoZG9jdW1lbnQuYm9keSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNldHVwT2ZmbGluZSgpIHtcbiAgdHJ5IHtcbiAgICBhd2FpdCByZWdpc3Rlck9tcnNTZXJ2aWNlV29ya2VyKFxuICAgICAgYCR7d2luZG93LmdldE9wZW5tcnNTcGFCYXNlKCl9c2VydmljZS13b3JrZXIuanNgXG4gICAgKTtcbiAgICBhd2FpdCBhY3RpdmF0ZU9mZmxpbmVDYXBhYmlsaXR5KCk7XG4gICAgc2V0dXBPZmZsaW5lU3RhdGljRGVwZW5kZW5jeVByZWNhY2hpbmcoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiRXJyb3Igd2hpbGUgc2V0dGluZyB1cCBvZmZsaW5lIG1vZGUuXCIsIGVycm9yKTtcbiAgICBzaG93Tm90aWZpY2F0aW9uKHtcbiAgICAgIGtpbmQ6IFwiZXJyb3JcIixcbiAgICAgIHRpdGxlOiBcIk9mZmxpbmUgU2V0dXAgRXJyb3JcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBlcnJvci5tZXNzYWdlLFxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNldHVwT2ZmbGluZVN0YXRpY0RlcGVuZGVuY3lQcmVjYWNoaW5nKCkge1xuICBjb25zdCBwcmVjYWNoZURlbGF5ID0gMTAwMCAqIDYwICogNTtcbiAgbGV0IGxhc3RQcmVjYWNoZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIHN1YnNjcmliZU9ubGluZUFuZExvZ2luQ2hhbmdlKChvbmxpbmUsIGhhc0xvZ2dlZEluVXNlcikgPT4ge1xuICAgIGNvbnN0IGhhc0V4Y2VlZGVkUHJlY2FjaGVEZWxheSA9XG4gICAgICAhbGFzdFByZWNhY2hlIHx8XG4gICAgICBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIGxhc3RQcmVjYWNoZS5nZXRUaW1lKCkgPiBwcmVjYWNoZURlbGF5O1xuXG4gICAgaWYgKGhhc0xvZ2dlZEluVXNlciAmJiBvbmxpbmUgJiYgaGFzRXhjZWVkZWRQcmVjYWNoZURlbGF5KSB7XG4gICAgICBsYXN0UHJlY2FjaGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgZGlzcGF0Y2hQcmVjYWNoZVN0YXRpY0RlcGVuZGVuY2llcygpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHN1YnNjcmliZU9ubGluZUFuZExvZ2luQ2hhbmdlKFxuICBjYjogKG9ubGluZTogYm9vbGVhbiwgaGFzTG9nZ2VkSW5Vc2VyOiBib29sZWFuKSA9PiB2b2lkXG4pIHtcbiAgbGV0IGlzT25saW5lID0gZmFsc2U7XG4gIGxldCBoYXNMb2dnZWRJblVzZXIgPSBmYWxzZTtcblxuICBnZXRDdXJyZW50VXNlcih7IGluY2x1ZGVBdXRoU3RhdHVzOiBmYWxzZSB9KS5zdWJzY3JpYmUoKHVzZXIpID0+IHtcbiAgICBoYXNMb2dnZWRJblVzZXIgPSAhIXVzZXI7XG4gICAgY2IoaXNPbmxpbmUsIGhhc0xvZ2dlZEluVXNlcik7XG4gIH0pO1xuXG4gIHN1YnNjcmliZUNvbm5lY3Rpdml0eSgoeyBvbmxpbmUgfSkgPT4ge1xuICAgIGlzT25saW5lID0gb25saW5lO1xuICAgIGNiKG9ubGluZSwgaGFzTG9nZ2VkSW5Vc2VyKTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHByZWNhY2hlR2xvYmFsU3RhdGljRGVwZW5kZW5jaWVzKCkge1xuICBhd2FpdCBwcmVjYWNoZUltcG9ydE1hcCgpO1xuXG4gIC8vIEJ5IGRlZmF1bHQsIGNhY2hlIHRoZSBzZXNzaW9uIGVuZHBvaW50LlxuICAvLyBUaGlzIGVuc3VyZXMgdGhhdCBhIGxvdCBvZiB1c2VyL3Nlc3Npb24gcmVsYXRlZCBmdW5jdGlvbnMgYWxzbyB3b3JrIG9mZmxpbmUuXG4gIGNvbnN0IHNlc3Npb25QYXRoVXJsID0gbmV3IFVSTChcbiAgICBgJHt3aW5kb3cub3Blbm1yc0Jhc2V9L3dzL3Jlc3QvdjEvc2Vzc2lvbmAsXG4gICAgd2luZG93LmxvY2F0aW9uLm9yaWdpblxuICApLmhyZWY7XG5cbiAgYXdhaXQgbWVzc2FnZU9tcnNTZXJ2aWNlV29ya2VyKHtcbiAgICB0eXBlOiBcInJlZ2lzdGVyRHluYW1pY1JvdXRlXCIsXG4gICAgdXJsOiBzZXNzaW9uUGF0aFVybCxcbiAgICBzdHJhdGVneTogXCJuZXR3b3JrLWZpcnN0XCIsXG4gIH0pO1xuXG4gIGF3YWl0IG9wZW5tcnNGZXRjaChcIi93cy9yZXN0L3YxL3Nlc3Npb25cIikuY2F0Y2goKGUpID0+XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgXCJGYWlsZWQgdG8gcHJlY2FjaGUgdGhlIHVzZXIgc2Vzc2lvbiBkYXRhIGZyb20gdGhlIGFwcCBzaGVsbC4gTUZzIGRlcGVuZGluZyBvbiB0aGlzIGRhdGEgbWF5IHJ1biBpbnRvIHByb2JsZW1zIHdoaWxlIG9mZmxpbmUuXCIsXG4gICAgICBlXG4gICAgKVxuICApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBwcmVjYWNoZUltcG9ydE1hcCgpIHtcbiAgY29uc3QgaW1wb3J0TWFwID0gYXdhaXQgd2luZG93LmltcG9ydE1hcE92ZXJyaWRlcy5nZXRDdXJyZW50UGFnZU1hcCgpO1xuICBhd2FpdCBtZXNzYWdlT21yc1NlcnZpY2VXb3JrZXIoe1xuICAgIHR5cGU6IFwib25JbXBvcnRNYXBDaGFuZ2VkXCIsXG4gICAgaW1wb3J0TWFwLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gc2V0dXBPZmZsaW5lQ3NzQ2xhc3NlcygpIHtcbiAgc3Vic2NyaWJlQ29ubmVjdGl2aXR5KCh7IG9ubGluZSB9KSA9PiB7XG4gICAgY29uc3QgYm9keSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJib2R5XCIpITtcbiAgICBpZiAob25saW5lKSB7XG4gICAgICBib2R5LmNsYXNzTGlzdC5yZW1vdmUoXCJvbXJzLW9mZmxpbmVcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJvZHkuY2xhc3NMaXN0LmFkZChcIm9tcnMtb2ZmbGluZVwiKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuKGNvbmZpZ1VybHM6IEFycmF5PHN0cmluZz4sIG9mZmxpbmU6IGJvb2xlYW4pIHtcbiAgY29uc3QgY2xvc2VMb2FkaW5nID0gc2hvd0xvYWRpbmdTcGlubmVyKCk7XG4gIGNvbnN0IHByb3ZpZGVDb25maWdzID0gY3JlYXRlQ29uZmlnTG9hZGVyKGNvbmZpZ1VybHMpO1xuXG4gIGludGVncmF0ZUJyZWFrcG9pbnRzKCk7XG4gIHNob3dUb2FzdHMoKTtcbiAgc2hvd01vZGFscygpO1xuICBzaG93Tm90aWZpY2F0aW9ucygpO1xuICBzaG93QWN0aW9uYWJsZU5vdGlmaWNhdGlvbnMoKTtcbiAgY3JlYXRlQXBwU3RhdGUoe30pO1xuICBzdWJzY3JpYmVOb3RpZmljYXRpb25TaG93bihzaG93Tm90aWZpY2F0aW9uKTtcbiAgc3Vic2NyaWJlQWN0aW9uYWJsZU5vdGlmaWNhdGlvblNob3duKHNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9uKTtcbiAgc3Vic2NyaWJlVG9hc3RTaG93bihzaG93VG9hc3QpO1xuICBzdWJzY3JpYmVQcmVjYWNoZVN0YXRpY0RlcGVuZGVuY2llcyhwcmVjYWNoZUdsb2JhbFN0YXRpY0RlcGVuZGVuY2llcyk7XG4gIC8vIEZJWE1FIHRoaXMgaXMgcGFydCBvZiBhIGhhY2sgdG8gbG9hZCBlc20tZm9ybS1hcHAgd2hpY2ggZGVwZW5kcyBvbiB0aGUgbGVnYWN5IGxvYWRpbmcgZm9yIG5vd1xuICAvLyBPbmNlIGVzbS1mb3JtLWFwcCBjYW4gYmUgdXBncmFkZWQgdG8gQW5ndWxhciAxMiBhbmQgTW9kdWxlIEZlZGVyYXRpb24sIHdlIHNob3VsZCBiZSBhYmxlIHRvIGRpdGNoIHRoaXNcbiAgcmVnaXN0ZXJNb2R1bGVzKHNoYXJlZERlcGVuZGVuY2llcyk7XG4gIHNldHVwQXBpTW9kdWxlKCk7XG4gIHJlZ2lzdGVyQ29yZUV4dGVuc2lvbnMoKTtcblxuICByZXR1cm4gbG9hZEFwcHMoKVxuICAgIC50aGVuKHNldHVwQXBwcylcbiAgICAudGhlbihzZXR1cE9mZmxpbmVDc3NDbGFzc2VzKVxuICAgIC50aGVuKHByb3ZpZGVDb25maWdzKVxuICAgIC50aGVuKHJ1blNoZWxsKVxuICAgIC5jYXRjaChoYW5kbGVJbml0RmFpbHVyZSlcbiAgICAudGhlbihjbG9zZUxvYWRpbmcpXG4gICAgLnRoZW4oKCkgPT4gKG9mZmxpbmUgPyBzZXR1cE9mZmxpbmUoKSA6IHVuZGVmaW5lZCkpO1xufVxuIl0sIm5hbWVzIjpbInN0YXJ0IiwidW5yZWdpc3RlckFwcGxpY2F0aW9uIiwiZ2V0QXBwTmFtZXMiLCJzZXR1cEFwaU1vZHVsZSIsInJlbmRlckxvYWRpbmdTcGlubmVyIiwiY3JlYXRlQXBwU3RhdGUiLCJwcm92aWRlIiwic2hvd05vdGlmaWNhdGlvbiIsInNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9uIiwic2hvd1RvYXN0IiwicmVuZGVySW5saW5lTm90aWZpY2F0aW9ucyIsInJlbmRlckFjdGlvbmFibGVOb3RpZmljYXRpb25zIiwicmVuZGVyVG9hc3RzIiwiaW50ZWdyYXRlQnJlYWtwb2ludHMiLCJkaXNwYXRjaENvbm5lY3Rpdml0eUNoYW5nZWQiLCJzdWJzY3JpYmVOb3RpZmljYXRpb25TaG93biIsInN1YnNjcmliZUFjdGlvbmFibGVOb3RpZmljYXRpb25TaG93biIsInN1YnNjcmliZVRvYXN0U2hvd24iLCJyZWdpc3Rlck9tcnNTZXJ2aWNlV29ya2VyIiwibWVzc2FnZU9tcnNTZXJ2aWNlV29ya2VyIiwic3Vic2NyaWJlQ29ubmVjdGl2aXR5IiwiZ2V0Q3VycmVudFVzZXIiLCJyZW5kZXJNb2RhbHMiLCJkaXNwYXRjaFByZWNhY2hlU3RhdGljRGVwZW5kZW5jaWVzIiwiYWN0aXZhdGVPZmZsaW5lQ2FwYWJpbGl0eSIsInN1YnNjcmliZVByZWNhY2hlU3RhdGljRGVwZW5kZW5jaWVzIiwib3Blbm1yc0ZldGNoIiwiZmluaXNoUmVnaXN0ZXJpbmdBbGxBcHBzIiwicmVnaXN0ZXJBcHAiLCJ0cnlSZWdpc3RlckV4dGVuc2lvbiIsInNldHVwSTE4biIsImxvYWRNb2R1bGVzIiwiYXBwTmFtZSIsImdldENvcmVFeHRlbnNpb25zIiwicmVnaXN0ZXJNb2R1bGVzIiwic2hhcmVkRGVwZW5kZW5jaWVzIiwibG9hZEFwcHMiLCJ3aW5kb3ciLCJpbXBvcnRNYXBPdmVycmlkZXMiLCJnZXRDdXJyZW50UGFnZU1hcCIsInRoZW4iLCJpbXBvcnRNYXAiLCJpbXBvcnRzIiwicmVnaXN0ZXJDb3JlRXh0ZW5zaW9ucyIsImV4dGVuc2lvbnMiLCJleHRlbnNpb24iLCJzZXR1cEFwcHMiLCJtb2R1bGVzIiwiZm9yRWFjaCIsImFwcEV4cG9ydHMiLCJhcHBOYW1lcyIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJpbnN0YWxsZWRNb2R1bGVzIiwibG9hZENvbmZpZ3MiLCJjb25maWdzIiwiY29uZmlnIiwidmFsdWUiLCJuYW1lIiwiY29ubmVjdGl2aXR5Q2hhbmdlZCIsIm9ubGluZSIsIm5hdmlnYXRvciIsIm9uTGluZSIsImNyaXRpY2FsIiwiZGVzY3JpcHRpb24iLCJ0aXRsZSIsImtpbmQiLCJydW5TaGVsbCIsImFkZEV2ZW50TGlzdGVuZXIiLCJjYXRjaCIsImVyciIsImNvbnNvbGUiLCJlcnJvciIsImhhbmRsZUluaXRGYWlsdXJlIiwiZSIsInJlbmRlckZhdGFsRXJyb3JQYWdlIiwidGVtcGxhdGUiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJmcmFnbWVudCIsImNvbnRlbnQiLCJjbG9uZU5vZGUiLCJtZXNzYWdlQ29udGFpbmVyIiwidGV4dENvbnRlbnQiLCJtZXNzYWdlIiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsIk9iamVjdCIsImtleXMiLCJzb21lIiwiayIsInN0YXJ0c1dpdGgiLCJhcHBFcnJvckFjdGlvbkJ1dHRvbnMiLCJjbGVhckRldk92ZXJyaWRlc0J1dHRvbiIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJpbm5lckhUTUwiLCJvbmNsaWNrIiwiY2xlYXJEZXZPdmVycmlkZXMiLCJhcHBlbmRDaGlsZCIsImJvZHkiLCJrZXkiLCJpbmNsdWRlcyIsInJlbW92ZUl0ZW0iLCJsb2NhdGlvbiIsInJlbG9hZCIsImNyZWF0ZUNvbmZpZ0xvYWRlciIsImNvbmZpZ1VybHMiLCJsb2FkaW5nQ29uZmlncyIsImNvbmZpZ1VybCIsImZldGNoIiwicmVzIiwianNvbiIsInNob3dOb3RpZmljYXRpb25zIiwic2hvd0FjdGlvbmFibGVOb3RpZmljYXRpb25zIiwic2hvd1RvYXN0cyIsInNob3dNb2RhbHMiLCJzaG93TG9hZGluZ1NwaW5uZXIiLCJzZXR1cE9mZmxpbmUiLCJnZXRPcGVubXJzU3BhQmFzZSIsInNldHVwT2ZmbGluZVN0YXRpY0RlcGVuZGVuY3lQcmVjYWNoaW5nIiwicHJlY2FjaGVEZWxheSIsImxhc3RQcmVjYWNoZSIsInN1YnNjcmliZU9ubGluZUFuZExvZ2luQ2hhbmdlIiwiaGFzTG9nZ2VkSW5Vc2VyIiwiaGFzRXhjZWVkZWRQcmVjYWNoZURlbGF5IiwiRGF0ZSIsImdldFRpbWUiLCJjYiIsImlzT25saW5lIiwiaW5jbHVkZUF1dGhTdGF0dXMiLCJzdWJzY3JpYmUiLCJ1c2VyIiwicHJlY2FjaGVHbG9iYWxTdGF0aWNEZXBlbmRlbmNpZXMiLCJzZXNzaW9uUGF0aFVybCIsInByZWNhY2hlSW1wb3J0TWFwIiwiVVJMIiwib3Blbm1yc0Jhc2UiLCJvcmlnaW4iLCJocmVmIiwidHlwZSIsInVybCIsInN0cmF0ZWd5Iiwid2FybiIsInNldHVwT2ZmbGluZUNzc0NsYXNzZXMiLCJjbGFzc0xpc3QiLCJyZW1vdmUiLCJhZGQiLCJydW4iLCJvZmZsaW5lIiwiY2xvc2VMb2FkaW5nIiwicHJvdmlkZUNvbmZpZ3MiLCJ1bmRlZmluZWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/run.ts\n");
7778
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"run\": () => (/* binding */ run)\n/* harmony export */ });\n/* harmony import */ var import_map_overrides__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! import-map-overrides */ \"../../../node_modules/import-map-overrides/dist/import-map-overrides.js\");\n/* harmony import */ var systemjs_dist_system__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! systemjs/dist/system */ \"../../../node_modules/systemjs/dist/system.js\");\n/* harmony import */ var systemjs_dist_system__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(systemjs_dist_system__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var systemjs_dist_extras_amd__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! systemjs/dist/extras/amd */ \"../../../node_modules/systemjs/dist/extras/amd.js\");\n/* harmony import */ var systemjs_dist_extras_amd__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(systemjs_dist_extras_amd__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var systemjs_dist_extras_named_exports__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! systemjs/dist/extras/named-exports */ \"../../../node_modules/systemjs/dist/extras/named-exports.js\");\n/* harmony import */ var systemjs_dist_extras_named_exports__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(systemjs_dist_extras_named_exports__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var systemjs_dist_extras_named_register__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! systemjs/dist/extras/named-register */ \"../../../node_modules/systemjs/dist/extras/named-register.js\");\n/* harmony import */ var systemjs_dist_extras_named_register__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(systemjs_dist_extras_named_register__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var systemjs_dist_extras_use_default__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! systemjs/dist/extras/use-default */ \"../../../node_modules/systemjs/dist/extras/use-default.js\");\n/* harmony import */ var systemjs_dist_extras_use_default__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(systemjs_dist_extras_use_default__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var single_spa__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! single-spa */ \"../../../node_modules/single-spa/lib/esm/single-spa.min.js\");\n/* harmony import */ var _openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @openmrs/esm-framework/src/internal */ \"webpack/sharing/consume/default/@openmrs/esm-framework/src/internal/@openmrs/esm-framework/src/internal\");\n/* harmony import */ var _openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _apps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./apps */ \"./src/apps.ts\");\n/* harmony import */ var _locale__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./locale */ \"./src/locale.ts\");\n/* harmony import */ var _load_modules__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./load-modules */ \"./src/load-modules.ts\");\n/* harmony import */ var _ui__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ui */ \"./src/ui/index.ts\");\n/* harmony import */ var _dependencies__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./dependencies */ \"./src/dependencies.ts\");\nfunction _arrayLikeToArray(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 _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _iterableToArrayLimit(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 _nonIterableRest() {\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 _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(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 _arrayLikeToArray(o, minLen);\n}\nvar __generator = undefined && undefined.__generator || function(thisArg, body) {\n var f, y, t, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Loads the frontend modules (apps and widgets). Should be done *after*\n * the import maps initialized, i.e., after modules loaded.\n *\n * By convention we call frontend modules registering activation functions\n * apps, and all others widgets. This is not enforced technically.\n */ function loadApps() {\n return window.importMapOverrides.getCurrentPageMap().then(function(importMap) {\n return (0,_load_modules__WEBPACK_IMPORTED_MODULE_10__.loadModules)(importMap.imports);\n });\n}\n/**\n * Registers the extensions already coming from the app shell itself.\n */ function registerCoreExtensions() {\n var extensions = (0,_ui__WEBPACK_IMPORTED_MODULE_11__.getCoreExtensions)();\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = extensions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var extension = _step.value;\n (0,_apps__WEBPACK_IMPORTED_MODULE_8__.tryRegisterExtension)(_ui__WEBPACK_IMPORTED_MODULE_11__.appName, extension);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\nfunction setupApps(modules) {\n return _setupApps.apply(this, arguments);\n}\nfunction _setupApps() {\n _setupApps = /**\n * Sets up the frontend modules (apps). Uses the defined export\n * from the root modules of the apps, which should export a\n * special function called \"setupOpenMRS\".\n * That function returns an object that is used to feed Single\n * SPA.\n */ _asyncToGenerator(function(modules) {\n return __generator(this, function(_state) {\n modules.forEach(function(param) {\n var _param = _slicedToArray(param, 2), appName = _param[0], appExports = _param[1];\n return (0,_apps__WEBPACK_IMPORTED_MODULE_8__.registerApp)(appName, appExports);\n });\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribeConnectivity)(/*#__PURE__*/ _asyncToGenerator(function() {\n var appNames;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n appNames = (0,single_spa__WEBPACK_IMPORTED_MODULE_6__.getAppNames)();\n return [\n 4,\n Promise.all(appNames.map(single_spa__WEBPACK_IMPORTED_MODULE_6__.unregisterApplication))\n ];\n case 1:\n _state.sent();\n (0,_apps__WEBPACK_IMPORTED_MODULE_8__.finishRegisteringAllApps)();\n return [\n 2\n ];\n }\n });\n }));\n window.installedModules = modules;\n return [\n 2\n ];\n });\n });\n return _setupApps.apply(this, arguments);\n}\nfunction loadConfigs(configs) {\n return _loadConfigs.apply(this, arguments);\n}\nfunction _loadConfigs() {\n _loadConfigs = /**\n * Loads the provided configurations and sets them in the system.\n */ _asyncToGenerator(function(configs) {\n var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, config;\n return __generator(this, function(_state) {\n _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(_iterator = configs[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n config = _step.value;\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.provide)(config.value, config.name);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return [\n 2\n ];\n });\n });\n return _loadConfigs.apply(this, arguments);\n}\n/**\n * Invoked when the connectivity is changed.\n */ function connectivityChanged() {\n var online = navigator.onLine;\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.dispatchConnectivityChanged)(online);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.showToast)({\n critical: true,\n description: \"Connection: \".concat(online ? \"online\" : \"offline\"),\n title: \"App\",\n kind: online ? \"success\" : \"warning\"\n });\n}\n/**\n * Runs the shell by importing the translations and starting single SPA.\n */ function runShell() {\n window.addEventListener(\"offline\", connectivityChanged);\n window.addEventListener(\"online\", connectivityChanged);\n return (0,_locale__WEBPACK_IMPORTED_MODULE_9__.setupI18n)().catch(function(err) {\n return console.error(\"Failed to initialize translations\", err);\n }).then(function() {\n return (0,single_spa__WEBPACK_IMPORTED_MODULE_6__.start)();\n });\n}\nfunction handleInitFailure(e) {\n console.error(e);\n renderFatalErrorPage(e);\n}\nfunction renderFatalErrorPage(e) {\n var template = document.querySelector(\"#app-error\");\n if (template) {\n var fragment = template.content.cloneNode(true);\n var messageContainer = fragment.querySelector('[data-var=\"message\"]');\n if (messageContainer) {\n messageContainer.textContent = (e === null || e === void 0 ? void 0 : e.message) || \"No additional information available.\";\n }\n if (localStorage.getItem(\"openmrs:devtools\") && Object.keys(localStorage).some(function(k) {\n return k.startsWith(\"import-map-override:\");\n })) {\n var appErrorActionButtons = fragment === null || fragment === void 0 ? void 0 : fragment.querySelector(\"#buttons\");\n if (appErrorActionButtons) {\n var clearDevOverridesButton = document.createElement(\"button\");\n clearDevOverridesButton.className = \"cds--btn\";\n clearDevOverridesButton.innerHTML = \"Clear dev overrides\";\n clearDevOverridesButton.onclick = clearDevOverrides;\n appErrorActionButtons.appendChild(clearDevOverridesButton);\n }\n }\n document.body.appendChild(fragment);\n }\n}\nfunction clearDevOverrides() {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(localStorage)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var key = _step.value;\n if (key.startsWith(\"import-map-override:\") && ![\n \"import-map-override:react\",\n \"import-map-override:react-dom\"\n ].includes(key)) {\n localStorage.removeItem(key);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n location.reload();\n}\nfunction isAbsoluteUrl(url) {\n var absoluteUrlPattern = /^https?:\\/\\//i;\n return absoluteUrlPattern.test(url);\n}\nfunction createConfigLoader(configUrls) {\n var loadingConfigs = Promise.all(configUrls.map(function(configUrl) {\n var interpolatedUrl = \"\".concat((0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.interpolateUrl)(\"${openmrsSpaBase}\".concat(configUrl)));\n var url = isAbsoluteUrl(configUrl) ? configUrl : \"\".concat(window.location.origin).concat(interpolatedUrl);\n return fetch(url).then(function(res) {\n return res.json();\n }).then(function(config) {\n return {\n name: configUrl,\n value: config\n };\n }).catch(function(err) {\n console.error('Loading the config from \"'.concat(configUrl, '\" failed.'), err);\n return {\n name: configUrl,\n value: {}\n };\n });\n }));\n return function() {\n return loadingConfigs.then(loadConfigs);\n };\n}\nfunction showNotifications() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.renderInlineNotifications)(document.querySelector(\".omrs-inline-notifications-container\"));\n return;\n}\nfunction showActionableNotifications() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.renderActionableNotifications)(document.querySelector(\".omrs-actionable-notifications-container\"));\n return;\n}\nfunction showToasts() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.renderToasts)(document.querySelector(\".omrs-toasts-container\"));\n return;\n}\nfunction showModals() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.renderModals)(document.querySelector(\".omrs-modals-container\"));\n return;\n}\nfunction showLoadingSpinner() {\n return (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.renderLoadingSpinner)(document.body);\n}\nfunction setupOffline() {\n return _setupOffline.apply(this, arguments);\n}\nfunction _setupOffline() {\n _setupOffline = _asyncToGenerator(function() {\n var error;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _state.trys.push([\n 0,\n 3,\n ,\n 4\n ]);\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.registerOmrsServiceWorker)(\"\".concat(window.getOpenmrsSpaBase(), \"service-worker.js\"))\n ];\n case 1:\n _state.sent();\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.activateOfflineCapability)()\n ];\n case 2:\n _state.sent();\n setupOfflineStaticDependencyPrecaching();\n return [\n 3,\n 4\n ];\n case 3:\n error = _state.sent();\n console.error(\"Error while setting up offline mode.\", error);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.showNotification)({\n kind: \"error\",\n title: \"Offline Setup Error\",\n description: error.message\n });\n return [\n 3,\n 4\n ];\n case 4:\n return [\n 2\n ];\n }\n });\n });\n return _setupOffline.apply(this, arguments);\n}\nfunction setupOfflineStaticDependencyPrecaching() {\n var precacheDelay = 1000 * 60 * 5;\n var lastPrecache = null;\n subscribeOnlineAndLoginChange(function(online, hasLoggedInUser) {\n var hasExceededPrecacheDelay = !lastPrecache || new Date().getTime() - lastPrecache.getTime() > precacheDelay;\n if (hasLoggedInUser && online && hasExceededPrecacheDelay) {\n lastPrecache = new Date();\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.dispatchPrecacheStaticDependencies)();\n }\n });\n}\nfunction subscribeOnlineAndLoginChange(cb) {\n var isOnline = false;\n var hasLoggedInUser = false;\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.getCurrentUser)({\n includeAuthStatus: false\n }).subscribe(function(user) {\n hasLoggedInUser = !!user;\n cb(isOnline, hasLoggedInUser);\n });\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribeConnectivity)(function(param) {\n var online = param.online;\n isOnline = online;\n cb(online, hasLoggedInUser);\n });\n}\nfunction precacheGlobalStaticDependencies() {\n return _precacheGlobalStaticDependencies.apply(this, arguments);\n}\nfunction _precacheGlobalStaticDependencies() {\n _precacheGlobalStaticDependencies = _asyncToGenerator(function() {\n var sessionPathUrl;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n precacheImportMap()\n ];\n case 1:\n _state.sent();\n sessionPathUrl = new URL(\"\".concat(window.openmrsBase, \"/ws/rest/v1/session\"), window.location.origin).href;\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.messageOmrsServiceWorker)({\n type: \"registerDynamicRoute\",\n url: sessionPathUrl,\n strategy: \"network-first\"\n })\n ];\n case 2:\n _state.sent();\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.openmrsFetch)(\"/ws/rest/v1/session\").catch(function(e) {\n return console.warn(\"Failed to precache the user session data from the app shell. MFs depending on this data may run into problems while offline.\", e);\n })\n ];\n case 3:\n _state.sent();\n return [\n 2\n ];\n }\n });\n });\n return _precacheGlobalStaticDependencies.apply(this, arguments);\n}\nfunction precacheImportMap() {\n return _precacheImportMap.apply(this, arguments);\n}\nfunction _precacheImportMap() {\n _precacheImportMap = _asyncToGenerator(function() {\n var importMap;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n window.importMapOverrides.getCurrentPageMap()\n ];\n case 1:\n importMap = _state.sent();\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.messageOmrsServiceWorker)({\n type: \"onImportMapChanged\",\n importMap: importMap\n })\n ];\n case 2:\n _state.sent();\n return [\n 2\n ];\n }\n });\n });\n return _precacheImportMap.apply(this, arguments);\n}\nfunction setupOfflineCssClasses() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribeConnectivity)(function(param) {\n var online = param.online;\n var body = document.querySelector(\"body\");\n if (online) {\n body.classList.remove(\"omrs-offline\");\n } else {\n body.classList.add(\"omrs-offline\");\n }\n });\n}\nfunction run(configUrls, offline) {\n var closeLoading = showLoadingSpinner();\n var provideConfigs = createConfigLoader(configUrls);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.integrateBreakpoints)();\n showToasts();\n showModals();\n showNotifications();\n showActionableNotifications();\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.createAppState)({});\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribeNotificationShown)(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.showNotification);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribeActionableNotificationShown)(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.showActionableNotification);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribeToastShown)(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.showToast);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribePrecacheStaticDependencies)(precacheGlobalStaticDependencies);\n // FIXME this is part of a hack to load esm-form-app which depends on the legacy loading for now\n // Once esm-form-app can be upgraded to Angular 12 and Module Federation, we should be able to ditch this\n (0,_dependencies__WEBPACK_IMPORTED_MODULE_12__.registerModules)(_dependencies__WEBPACK_IMPORTED_MODULE_12__.sharedDependencies);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.setupApiModule)();\n registerCoreExtensions();\n return loadApps().then(setupApps).then(setupOfflineCssClasses).then(provideConfigs).then(runShell).catch(handleInitFailure).then(closeLoading).then(function() {\n return offline ? setupOffline() : undefined;\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvcnVuLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQThCO0FBQ0E7QUFDSTtBQUNVO0FBQ0M7QUFDSDtBQUM2QjtBQTRCMUI7QUFLN0I7QUFDcUI7QUFDUTtBQUNLO0FBQ21CO0FBRXJFOzs7Ozs7Q0FNQyxHQUNELFNBQVNxQyxXQUFXO0lBQ2xCLE9BQU9DLE9BQU9DLGtCQUFrQixDQUM3QkMsaUJBQWlCLEdBQ2pCQyxJQUFJLENBQUMsU0FBQ0M7ZUFBY1YsMkRBQVdBLENBQUNVLFVBQVVDLE9BQU87O0FBQ3REO0FBRUE7O0NBRUMsR0FDRCxTQUFTQyx5QkFBeUI7SUFDaEMsSUFBTUMsYUFBYVgsdURBQWlCQTtRQUUvQjs7UUFBTCxRQUFLLFlBQW1CVywrQkFBbkIsd0dBQStCO1lBQS9CLElBQU1DLFlBQU47WUFDSGhCLDJEQUFvQkEsQ0FBQ0cseUNBQU9BLEVBQUVhO1FBQ2hDOztRQUZLO1FBQUE7OztpQkFBQTtnQkFBQTs7O2dCQUFBO3NCQUFBOzs7O0FBR1A7U0FTZUMsVUFBVUMsT0FBdUM7V0FBakREOztTQUFBQTtJQUFBQSxhQVBmOzs7Ozs7Q0FNQyxHQUNELDJCQUF5QkMsT0FBdUMsRUFBRTs7WUFDaEVBLFFBQVFDLE9BQU8sQ0FBQzt1REFBRWhCLHFCQUFTaUI7dUJBQWdCckIsa0RBQVdBLENBQUNJLFNBQVNpQjs7WUFDaEU5QiwwRkFBcUJBLGVBQUMsNkJBQVk7b0JBQzFCK0I7Ozs7NEJBQUFBLFdBQVdqRCx1REFBV0E7NEJBQzVCOztnQ0FBTWtELFFBQVFDLEdBQUcsQ0FBQ0YsU0FBU0csR0FBRyxDQUFDckQsNkRBQXFCQTs7OzRCQUFwRDs0QkFDQTJCLCtEQUF3QkE7Ozs7OztZQUMxQjtZQUNBVSxPQUFPaUIsZ0JBQWdCLEdBQUdQOzs7OztJQUM1QjtXQVJlRDs7U0FhQVMsWUFBWUMsT0FBK0M7V0FBM0REOztTQUFBQTtJQUFBQSxlQUhmOztDQUVDLEdBQ0QsMkJBQTJCQyxPQUErQyxFQUFFO1lBQ3JFLGdGQUFNQzs7WUFBTjs7Z0JBQUwsSUFBSyxZQUFnQkQsOEJBQWhCLCtGQUF5QjtvQkFBbkJDLFNBQU47b0JBQ0hwRCw0RUFBT0EsQ0FBQ29ELE9BQU9DLEtBQUssRUFBRUQsT0FBT0UsSUFBSTtnQkFDbkM7O2dCQUZLO2dCQUFBOzs7eUJBQUE7d0JBQUE7Ozt3QkFBQTs4QkFBQTs7Ozs7Ozs7SUFHUDtXQUplSjs7QUFNZjs7Q0FFQyxHQUNELFNBQVNLLHNCQUFzQjtJQUM3QixJQUFNQyxTQUFTQyxVQUFVQyxNQUFNO0lBQy9CbEQsZ0dBQTJCQSxDQUFDZ0Q7SUFDNUJyRCw4RUFBU0EsQ0FBQztRQUNSd0QsVUFBVSxJQUFJO1FBQ2RDLGFBQWEsZUFBNkMsT0FBOUJKLFNBQVMsV0FBVyxTQUFTO1FBQ3pESyxPQUFPO1FBQ1BDLE1BQU1OLFNBQVMsWUFBWSxTQUFTO0lBQ3RDO0FBQ0Y7QUFFQTs7Q0FFQyxHQUNELFNBQVNPLFdBQVc7SUFDbEIvQixPQUFPZ0MsZ0JBQWdCLENBQUMsV0FBV1Q7SUFDbkN2QixPQUFPZ0MsZ0JBQWdCLENBQUMsVUFBVVQ7SUFDbEMsT0FBTzlCLGtEQUFTQSxHQUNid0MsS0FBSyxDQUFDLFNBQUNDO2VBQVFDLFFBQVFDLEtBQUssQ0FBRSxxQ0FBb0NGO09BQ2xFL0IsSUFBSSxDQUFDO2VBQU16QyxpREFBS0E7O0FBQ3JCO0FBRUEsU0FBUzJFLGtCQUFrQkMsQ0FBUSxFQUFFO0lBQ25DSCxRQUFRQyxLQUFLLENBQUNFO0lBQ2RDLHFCQUFxQkQ7QUFDdkI7QUFFQSxTQUFTQyxxQkFBcUJELENBQVMsRUFBRTtJQUN2QyxJQUFNRSxXQUFXQyxTQUFTQyxhQUFhLENBQXNCO0lBRTdELElBQUlGLFVBQVU7UUFDWixJQUFNRyxXQUFXSCxTQUFTSSxPQUFPLENBQUNDLFNBQVMsQ0FBQyxJQUFJO1FBQ2hELElBQU1DLG1CQUFtQkgsU0FBU0QsYUFBYSxDQUFDO1FBRWhELElBQUlJLGtCQUFrQjtZQUNwQkEsaUJBQWlCQyxXQUFXLEdBQzFCVCxDQUFBQSxjQUFBQSxlQUFBQSxLQUFBQSxJQUFBQSxFQUFHVSxPQUFPLEtBQUk7UUFDbEIsQ0FBQztRQUVELElBQ0VDLGFBQWFDLE9BQU8sQ0FBQyx1QkFDckJDLE9BQU9DLElBQUksQ0FBQ0gsY0FBY0ksSUFBSSxDQUFDLFNBQUNDO21CQUM5QkEsRUFBRUMsVUFBVSxDQUFDO1lBRWY7WUFDQSxJQUFNQyx3QkFBd0JiLHFCQUFBQSxzQkFBQUEsS0FBQUEsSUFBQUEsU0FBVUQsYUFBYSxDQUFDO1lBQ3RELElBQUljLHVCQUF1QjtnQkFDekIsSUFBTUMsMEJBQTBCaEIsU0FBU2lCLGFBQWEsQ0FBQztnQkFDdkRELHdCQUF3QkUsU0FBUyxHQUFHO2dCQUNwQ0Ysd0JBQXdCRyxTQUFTLEdBQUc7Z0JBQ3BDSCx3QkFBd0JJLE9BQU8sR0FBR0M7Z0JBQ2xDTixzQkFBc0JPLFdBQVcsQ0FBQ047WUFDcEMsQ0FBQztRQUNILENBQUM7UUFFRGhCLFNBQVN1QixJQUFJLENBQUNELFdBQVcsQ0FBQ3BCO0lBQzVCLENBQUM7QUFDSDtBQUVBLFNBQVNtQixvQkFBb0I7UUFDdEI7O1FBQUwsUUFBSyxZQUFhWCxPQUFPQyxJQUFJLENBQUNILGtDQUF6Qix3R0FBd0M7WUFBeEMsSUFBTWdCLE1BQU47WUFDSCxJQUNFQSxJQUFJVixVQUFVLENBQUMsMkJBQ2YsQ0FBQztnQkFBQztnQkFBNkI7YUFBZ0MsQ0FBQ1csUUFBUSxDQUN0RUQsTUFFRjtnQkFDQWhCLGFBQWFrQixVQUFVLENBQUNGO1lBQzFCLENBQUM7UUFDSDs7UUFUSztRQUFBOzs7aUJBQUE7Z0JBQUE7OztnQkFBQTtzQkFBQTs7OztJQVVMRyxTQUFTQyxNQUFNO0FBQ2pCO0FBRUEsU0FBU0MsY0FBY0MsR0FBVyxFQUFXO0lBQzNDLElBQU1DLHFCQUFxQjtJQUMzQixPQUFPQSxtQkFBbUJDLElBQUksQ0FBQ0Y7QUFDakM7QUFFQSxTQUFTRyxtQkFBbUJDLFVBQXlCLEVBQUU7SUFDckQsSUFBTUMsaUJBQWlCOUQsUUFBUUMsR0FBRyxDQUNoQzRELFdBQVczRCxHQUFHLENBQUMsU0FBQzZELFdBQWM7UUFDNUIsSUFBTUMsa0JBQWtCLEdBRXRCLE9BRnlCekYsbUZBQWNBLENBQ3ZDLG9CQUErQixPQUFWd0Y7UUFFdkIsSUFBTU4sTUFBTUQsY0FBY08sYUFDdEJBLFlBQ0EsR0FBNEJDLE9BQXpCOUUsT0FBT29FLFFBQVEsQ0FBQ1csTUFBTSxFQUFtQixPQUFoQkQsZ0JBQWlCO1FBQ2pELE9BQU9FLE1BQU1ULEtBQ1ZwRSxJQUFJLENBQUMsU0FBQzhFO21CQUFRQSxJQUFJQyxJQUFJO1dBQ3RCL0UsSUFBSSxDQUFDLFNBQUNpQjttQkFBWTtnQkFDakJFLE1BQU11RDtnQkFDTnhELE9BQU9EO1lBQ1Q7V0FDQ2EsS0FBSyxDQUFDLFNBQUNDLEtBQVE7WUFDZEMsUUFBUUMsS0FBSyxDQUFDLDRCQUFzQyxPQUFWeUMsV0FBVSxjQUFZM0M7WUFDaEUsT0FBTztnQkFDTFosTUFBTXVEO2dCQUNOeEQsT0FBTyxDQUFDO1lBQ1Y7UUFDRjtJQUNKO0lBRUYsT0FBTztlQUFNdUQsZUFBZXpFLElBQUksQ0FBQ2U7O0FBQ25DO0FBRUEsU0FBU2lFLG9CQUFvQjtJQUMzQi9HLDhGQUF5QkEsQ0FDdkJxRSxTQUFTQyxhQUFhLENBQUM7SUFFekI7QUFDRjtBQUVBLFNBQVMwQyw4QkFBOEI7SUFDckMvRyxrR0FBNkJBLENBQzNCb0UsU0FBU0MsYUFBYSxDQUFDO0lBRXpCO0FBQ0Y7QUFFQSxTQUFTMkMsYUFBYTtJQUNwQi9HLGlGQUFZQSxDQUFDbUUsU0FBU0MsYUFBYSxDQUFDO0lBQ3BDO0FBQ0Y7QUFFQSxTQUFTNEMsYUFBYTtJQUNwQnRHLGlGQUFZQSxDQUFDeUQsU0FBU0MsYUFBYSxDQUFDO0lBQ3BDO0FBQ0Y7QUFFQSxTQUFTNkMscUJBQXFCO0lBQzVCLE9BQU96SCx5RkFBb0JBLENBQUMyRSxTQUFTdUIsSUFBSTtBQUMzQztTQUVld0I7V0FBQUE7O1NBQUFBO0lBQUFBLGdCQUFmLDZCQUE4QjtZQU9uQnBEOzs7Ozs7Ozs7O29CQUxQOzt3QkFBTXhELDhGQUF5QkEsQ0FDN0IsR0FBOEIsT0FBM0JvQixPQUFPeUYsaUJBQWlCLElBQUc7OztvQkFEaEM7b0JBR0E7O3dCQUFNdkcsOEZBQXlCQTs7O29CQUEvQjtvQkFDQXdHOzs7Ozs7b0JBQ090RDtvQkFDUEQsUUFBUUMsS0FBSyxDQUFDLHdDQUF3Q0E7b0JBQ3REbkUscUZBQWdCQSxDQUFDO3dCQUNmNkQsTUFBTTt3QkFDTkQsT0FBTzt3QkFDUEQsYUFBYVEsTUFBTVksT0FBTztvQkFDNUI7Ozs7Ozs7Ozs7O0lBRUo7V0FmZXdDOztBQWlCZixTQUFTRSx5Q0FBeUM7SUFDaEQsSUFBTUMsZ0JBQWdCLE9BQU8sS0FBSztJQUNsQyxJQUFJQyxlQUE0QixJQUFJO0lBRXBDQyw4QkFBOEIsU0FBQ3JFLFFBQVFzRSxpQkFBb0I7UUFDekQsSUFBTUMsMkJBQ0osQ0FBQ0gsZ0JBQ0QsSUFBSUksT0FBT0MsT0FBTyxLQUFLTCxhQUFhSyxPQUFPLEtBQUtOO1FBRWxELElBQUlHLG1CQUFtQnRFLFVBQVV1RSwwQkFBMEI7WUFDekRILGVBQWUsSUFBSUk7WUFDbkIvRyx1R0FBa0NBO1FBQ3BDLENBQUM7SUFDSDtBQUNGO0FBRUEsU0FBUzRHLDhCQUNQSyxFQUF1RCxFQUN2RDtJQUNBLElBQUlDLFdBQVcsS0FBSztJQUNwQixJQUFJTCxrQkFBa0IsS0FBSztJQUUzQi9HLG1GQUFjQSxDQUFDO1FBQUVxSCxtQkFBbUIsS0FBSztJQUFDLEdBQUdDLFNBQVMsQ0FBQyxTQUFDQyxNQUFTO1FBQy9EUixrQkFBa0IsQ0FBQyxDQUFDUTtRQUNwQkosR0FBR0MsVUFBVUw7SUFDZjtJQUVBaEgsMEZBQXFCQSxDQUFDLGdCQUFnQjtZQUFiMEMsZUFBQUE7UUFDdkIyRSxXQUFXM0U7UUFDWDBFLEdBQUcxRSxRQUFRc0U7SUFDYjtBQUNGO1NBRWVTO1dBQUFBOztTQUFBQTtJQUFBQSxvQ0FBZiw2QkFBa0Q7WUFLMUNDOzs7O29CQUpOOzt3QkFBTUM7OztvQkFBTjtvQkFJTUQsaUJBQWlCLElBQUlFLElBQ3pCLEdBQXNCLE9BQW5CMUcsT0FBTzJHLFdBQVcsRUFBQyx3QkFDdEIzRyxPQUFPb0UsUUFBUSxDQUFDVyxNQUFNLEVBQ3RCNkIsSUFBSTtvQkFFTjs7d0JBQU0vSCw2RkFBd0JBLENBQUM7NEJBQzdCZ0ksTUFBTTs0QkFDTnRDLEtBQUtpQzs0QkFDTE0sVUFBVTt3QkFDWjs7O29CQUpBO29CQU1BOzt3QkFBTTFILGlGQUFZQSxDQUFDLHVCQUF1QjZDLEtBQUssQ0FBQyxTQUFDSzttQ0FDL0NILFFBQVE0RSxJQUFJLENBQ1YsZ0lBQ0F6RTs7OztvQkFISjs7Ozs7O0lBTUY7V0F0QmVpRTs7U0F3QkFFO1dBQUFBOztTQUFBQTtJQUFBQSxxQkFBZiw2QkFBbUM7WUFDM0JyRzs7OztvQkFBWTs7d0JBQU1KLE9BQU9DLGtCQUFrQixDQUFDQyxpQkFBaUI7OztvQkFBN0RFLFlBQVk7b0JBQ2xCOzt3QkFBTXZCLDZGQUF3QkEsQ0FBQzs0QkFDN0JnSSxNQUFNOzRCQUNOekcsV0FBQUE7d0JBQ0Y7OztvQkFIQTs7Ozs7O0lBSUY7V0FOZXFHOztBQVFmLFNBQVNPLHlCQUF5QjtJQUNoQ2xJLDBGQUFxQkEsQ0FBQyxnQkFBZ0I7WUFBYjBDLGVBQUFBO1FBQ3ZCLElBQU13QyxPQUFPdkIsU0FBU0MsYUFBYSxDQUFDO1FBQ3BDLElBQUlsQixRQUFRO1lBQ1Z3QyxLQUFLaUQsU0FBUyxDQUFDQyxNQUFNLENBQUM7UUFDeEIsT0FBTztZQUNMbEQsS0FBS2lELFNBQVMsQ0FBQ0UsR0FBRyxDQUFDO1FBQ3JCLENBQUM7SUFDSDtBQUNGO0FBRU8sU0FBU0MsSUFBSXpDLFVBQXlCLEVBQUUwQyxPQUFnQixFQUFFO0lBQy9ELElBQU1DLGVBQWUvQjtJQUNyQixJQUFNZ0MsaUJBQWlCN0MsbUJBQW1CQztJQUUxQ3BHLHlGQUFvQkE7SUFDcEI4RztJQUNBQztJQUNBSDtJQUNBQztJQUNBckgsbUZBQWNBLENBQUMsQ0FBQztJQUNoQlUsK0ZBQTBCQSxDQUFDUixpRkFBZ0JBO0lBQzNDUyx5R0FBb0NBLENBQUNSLDJGQUEwQkE7SUFDL0RTLHdGQUFtQkEsQ0FBQ1IsMEVBQVNBO0lBQzdCZ0Isd0dBQW1DQSxDQUFDb0g7SUFDcEMsZ0dBQWdHO0lBQ2hHLHlHQUF5RztJQUN6RzFHLCtEQUFlQSxDQUFDQyw4REFBa0JBO0lBQ2xDakMsbUZBQWNBO0lBQ2R5QztJQUVBLE9BQU9QLFdBQ0pJLElBQUksQ0FBQ00sV0FDTE4sSUFBSSxDQUFDNkcsd0JBQ0w3RyxJQUFJLENBQUNvSCxnQkFDTHBILElBQUksQ0FBQzRCLFVBQ0xFLEtBQUssQ0FBQ0ksbUJBQ05sQyxJQUFJLENBQUNtSCxjQUNMbkgsSUFBSSxDQUFDO2VBQU9rSCxVQUFVN0IsaUJBQWlCZ0MsU0FBUzs7QUFDckQsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi9zcmMvcnVuLnRzP2JjMjYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwiaW1wb3J0LW1hcC1vdmVycmlkZXNcIjtcbmltcG9ydCBcInN5c3RlbWpzL2Rpc3Qvc3lzdGVtXCI7XG5pbXBvcnQgXCJzeXN0ZW1qcy9kaXN0L2V4dHJhcy9hbWRcIjtcbmltcG9ydCBcInN5c3RlbWpzL2Rpc3QvZXh0cmFzL25hbWVkLWV4cG9ydHNcIjtcbmltcG9ydCBcInN5c3RlbWpzL2Rpc3QvZXh0cmFzL25hbWVkLXJlZ2lzdGVyXCI7XG5pbXBvcnQgXCJzeXN0ZW1qcy9kaXN0L2V4dHJhcy91c2UtZGVmYXVsdFwiO1xuaW1wb3J0IHsgc3RhcnQsIHVucmVnaXN0ZXJBcHBsaWNhdGlvbiwgZ2V0QXBwTmFtZXMgfSBmcm9tIFwic2luZ2xlLXNwYVwiO1xuaW1wb3J0IHtcbiAgc2V0dXBBcGlNb2R1bGUsXG4gIHJlbmRlckxvYWRpbmdTcGlubmVyLFxuICBjcmVhdGVBcHBTdGF0ZSxcbiAgQ29uZmlnLFxuICBwcm92aWRlLFxuICBzaG93Tm90aWZpY2F0aW9uLFxuICBzaG93QWN0aW9uYWJsZU5vdGlmaWNhdGlvbixcbiAgc2hvd1RvYXN0LFxuICByZW5kZXJJbmxpbmVOb3RpZmljYXRpb25zLFxuICByZW5kZXJBY3Rpb25hYmxlTm90aWZpY2F0aW9ucyxcbiAgcmVuZGVyVG9hc3RzLFxuICBpbnRlZ3JhdGVCcmVha3BvaW50cyxcbiAgZGlzcGF0Y2hDb25uZWN0aXZpdHlDaGFuZ2VkLFxuICBzdWJzY3JpYmVOb3RpZmljYXRpb25TaG93bixcbiAgc3Vic2NyaWJlQWN0aW9uYWJsZU5vdGlmaWNhdGlvblNob3duLFxuICBzdWJzY3JpYmVUb2FzdFNob3duLFxuICByZWdpc3Rlck9tcnNTZXJ2aWNlV29ya2VyLFxuICBtZXNzYWdlT21yc1NlcnZpY2VXb3JrZXIsXG4gIHN1YnNjcmliZUNvbm5lY3Rpdml0eSxcbiAgZ2V0Q3VycmVudFVzZXIsXG4gIHJlbmRlck1vZGFscyxcbiAgZGlzcGF0Y2hQcmVjYWNoZVN0YXRpY0RlcGVuZGVuY2llcyxcbiAgYWN0aXZhdGVPZmZsaW5lQ2FwYWJpbGl0eSxcbiAgc3Vic2NyaWJlUHJlY2FjaGVTdGF0aWNEZXBlbmRlbmNpZXMsXG4gIG9wZW5tcnNGZXRjaCxcbiAgaW50ZXJwb2xhdGVVcmwsXG59IGZyb20gXCJAb3Blbm1ycy9lc20tZnJhbWV3b3JrL3NyYy9pbnRlcm5hbFwiO1xuaW1wb3J0IHtcbiAgZmluaXNoUmVnaXN0ZXJpbmdBbGxBcHBzLFxuICByZWdpc3RlckFwcCxcbiAgdHJ5UmVnaXN0ZXJFeHRlbnNpb24sXG59IGZyb20gXCIuL2FwcHNcIjtcbmltcG9ydCB7IHNldHVwSTE4biB9IGZyb20gXCIuL2xvY2FsZVwiO1xuaW1wb3J0IHsgbG9hZE1vZHVsZXMgfSBmcm9tIFwiLi9sb2FkLW1vZHVsZXNcIjtcbmltcG9ydCB7IGFwcE5hbWUsIGdldENvcmVFeHRlbnNpb25zIH0gZnJvbSBcIi4vdWlcIjtcbmltcG9ydCB7IHJlZ2lzdGVyTW9kdWxlcywgc2hhcmVkRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4vZGVwZW5kZW5jaWVzXCI7XG5cbi8qKlxuICogTG9hZHMgdGhlIGZyb250ZW5kIG1vZHVsZXMgKGFwcHMgYW5kIHdpZGdldHMpLiBTaG91bGQgYmUgZG9uZSAqYWZ0ZXIqXG4gKiB0aGUgaW1wb3J0IG1hcHMgaW5pdGlhbGl6ZWQsIGkuZS4sIGFmdGVyIG1vZHVsZXMgbG9hZGVkLlxuICpcbiAqIEJ5IGNvbnZlbnRpb24gd2UgY2FsbCBmcm9udGVuZCBtb2R1bGVzIHJlZ2lzdGVyaW5nIGFjdGl2YXRpb24gZnVuY3Rpb25zXG4gKiBhcHBzLCBhbmQgYWxsIG90aGVycyB3aWRnZXRzLiBUaGlzIGlzIG5vdCBlbmZvcmNlZCB0ZWNobmljYWxseS5cbiAqL1xuZnVuY3Rpb24gbG9hZEFwcHMoKSB7XG4gIHJldHVybiB3aW5kb3cuaW1wb3J0TWFwT3ZlcnJpZGVzXG4gICAgLmdldEN1cnJlbnRQYWdlTWFwKClcbiAgICAudGhlbigoaW1wb3J0TWFwKSA9PiBsb2FkTW9kdWxlcyhpbXBvcnRNYXAuaW1wb3J0cykpO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgZXh0ZW5zaW9ucyBhbHJlYWR5IGNvbWluZyBmcm9tIHRoZSBhcHAgc2hlbGwgaXRzZWxmLlxuICovXG5mdW5jdGlvbiByZWdpc3RlckNvcmVFeHRlbnNpb25zKCkge1xuICBjb25zdCBleHRlbnNpb25zID0gZ2V0Q29yZUV4dGVuc2lvbnMoKTtcblxuICBmb3IgKGNvbnN0IGV4dGVuc2lvbiBvZiBleHRlbnNpb25zKSB7XG4gICAgdHJ5UmVnaXN0ZXJFeHRlbnNpb24oYXBwTmFtZSwgZXh0ZW5zaW9uKTtcbiAgfVxufVxuXG4vKipcbiAqIFNldHMgdXAgdGhlIGZyb250ZW5kIG1vZHVsZXMgKGFwcHMpLiBVc2VzIHRoZSBkZWZpbmVkIGV4cG9ydFxuICogZnJvbSB0aGUgcm9vdCBtb2R1bGVzIG9mIHRoZSBhcHBzLCB3aGljaCBzaG91bGQgZXhwb3J0IGFcbiAqIHNwZWNpYWwgZnVuY3Rpb24gY2FsbGVkIFwic2V0dXBPcGVuTVJTXCIuXG4gKiBUaGF0IGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0IHRoYXQgaXMgdXNlZCB0byBmZWVkIFNpbmdsZVxuICogU1BBLlxuICovXG5hc3luYyBmdW5jdGlvbiBzZXR1cEFwcHMobW9kdWxlczogQXJyYXk8W3N0cmluZywgU3lzdGVtLk1vZHVsZV0+KSB7XG4gIG1vZHVsZXMuZm9yRWFjaCgoW2FwcE5hbWUsIGFwcEV4cG9ydHNdKSA9PiByZWdpc3RlckFwcChhcHBOYW1lLCBhcHBFeHBvcnRzKSk7XG4gIHN1YnNjcmliZUNvbm5lY3Rpdml0eShhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYXBwTmFtZXMgPSBnZXRBcHBOYW1lcygpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKGFwcE5hbWVzLm1hcCh1bnJlZ2lzdGVyQXBwbGljYXRpb24pKTtcbiAgICBmaW5pc2hSZWdpc3RlcmluZ0FsbEFwcHMoKTtcbiAgfSk7XG4gIHdpbmRvdy5pbnN0YWxsZWRNb2R1bGVzID0gbW9kdWxlcztcbn1cblxuLyoqXG4gKiBMb2FkcyB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbnMgYW5kIHNldHMgdGhlbSBpbiB0aGUgc3lzdGVtLlxuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkQ29uZmlncyhjb25maWdzOiBBcnJheTx7IG5hbWU6IHN0cmluZzsgdmFsdWU6IENvbmZpZyB9Pikge1xuICBmb3IgKGNvbnN0IGNvbmZpZyBvZiBjb25maWdzKSB7XG4gICAgcHJvdmlkZShjb25maWcudmFsdWUsIGNvbmZpZy5uYW1lKTtcbiAgfVxufVxuXG4vKipcbiAqIEludm9rZWQgd2hlbiB0aGUgY29ubmVjdGl2aXR5IGlzIGNoYW5nZWQuXG4gKi9cbmZ1bmN0aW9uIGNvbm5lY3Rpdml0eUNoYW5nZWQoKSB7XG4gIGNvbnN0IG9ubGluZSA9IG5hdmlnYXRvci5vbkxpbmU7XG4gIGRpc3BhdGNoQ29ubmVjdGl2aXR5Q2hhbmdlZChvbmxpbmUpO1xuICBzaG93VG9hc3Qoe1xuICAgIGNyaXRpY2FsOiB0cnVlLFxuICAgIGRlc2NyaXB0aW9uOiBgQ29ubmVjdGlvbjogJHtvbmxpbmUgPyBcIm9ubGluZVwiIDogXCJvZmZsaW5lXCJ9YCxcbiAgICB0aXRsZTogXCJBcHBcIixcbiAgICBraW5kOiBvbmxpbmUgPyBcInN1Y2Nlc3NcIiA6IFwid2FybmluZ1wiLFxuICB9KTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSBzaGVsbCBieSBpbXBvcnRpbmcgdGhlIHRyYW5zbGF0aW9ucyBhbmQgc3RhcnRpbmcgc2luZ2xlIFNQQS5cbiAqL1xuZnVuY3Rpb24gcnVuU2hlbGwoKSB7XG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwib2ZmbGluZVwiLCBjb25uZWN0aXZpdHlDaGFuZ2VkKTtcbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJvbmxpbmVcIiwgY29ubmVjdGl2aXR5Q2hhbmdlZCk7XG4gIHJldHVybiBzZXR1cEkxOG4oKVxuICAgIC5jYXRjaCgoZXJyKSA9PiBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0cmFuc2xhdGlvbnNgLCBlcnIpKVxuICAgIC50aGVuKCgpID0+IHN0YXJ0KCkpO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVJbml0RmFpbHVyZShlOiBFcnJvcikge1xuICBjb25zb2xlLmVycm9yKGUpO1xuICByZW5kZXJGYXRhbEVycm9yUGFnZShlKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyRmF0YWxFcnJvclBhZ2UoZT86IEVycm9yKSB7XG4gIGNvbnN0IHRlbXBsYXRlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MVGVtcGxhdGVFbGVtZW50PihcIiNhcHAtZXJyb3JcIik7XG5cbiAgaWYgKHRlbXBsYXRlKSB7XG4gICAgY29uc3QgZnJhZ21lbnQgPSB0ZW1wbGF0ZS5jb250ZW50LmNsb25lTm9kZSh0cnVlKSBhcyBEb2N1bWVudEZyYWdtZW50O1xuICAgIGNvbnN0IG1lc3NhZ2VDb250YWluZXIgPSBmcmFnbWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS12YXI9XCJtZXNzYWdlXCJdJyk7XG5cbiAgICBpZiAobWVzc2FnZUNvbnRhaW5lcikge1xuICAgICAgbWVzc2FnZUNvbnRhaW5lci50ZXh0Q29udGVudCA9XG4gICAgICAgIGU/Lm1lc3NhZ2UgfHwgXCJObyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGF2YWlsYWJsZS5cIjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIm9wZW5tcnM6ZGV2dG9vbHNcIikgJiZcbiAgICAgIE9iamVjdC5rZXlzKGxvY2FsU3RvcmFnZSkuc29tZSgoaykgPT5cbiAgICAgICAgay5zdGFydHNXaXRoKFwiaW1wb3J0LW1hcC1vdmVycmlkZTpcIilcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGNvbnN0IGFwcEVycm9yQWN0aW9uQnV0dG9ucyA9IGZyYWdtZW50Py5xdWVyeVNlbGVjdG9yKFwiI2J1dHRvbnNcIik7XG4gICAgICBpZiAoYXBwRXJyb3JBY3Rpb25CdXR0b25zKSB7XG4gICAgICAgIGNvbnN0IGNsZWFyRGV2T3ZlcnJpZGVzQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiKTtcbiAgICAgICAgY2xlYXJEZXZPdmVycmlkZXNCdXR0b24uY2xhc3NOYW1lID0gXCJjZHMtLWJ0blwiO1xuICAgICAgICBjbGVhckRldk92ZXJyaWRlc0J1dHRvbi5pbm5lckhUTUwgPSBcIkNsZWFyIGRldiBvdmVycmlkZXNcIjtcbiAgICAgICAgY2xlYXJEZXZPdmVycmlkZXNCdXR0b24ub25jbGljayA9IGNsZWFyRGV2T3ZlcnJpZGVzO1xuICAgICAgICBhcHBFcnJvckFjdGlvbkJ1dHRvbnMuYXBwZW5kQ2hpbGQoY2xlYXJEZXZPdmVycmlkZXNCdXR0b24pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhZ21lbnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNsZWFyRGV2T3ZlcnJpZGVzKCkge1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhsb2NhbFN0b3JhZ2UpKSB7XG4gICAgaWYgKFxuICAgICAga2V5LnN0YXJ0c1dpdGgoXCJpbXBvcnQtbWFwLW92ZXJyaWRlOlwiKSAmJlxuICAgICAgIVtcImltcG9ydC1tYXAtb3ZlcnJpZGU6cmVhY3RcIiwgXCJpbXBvcnQtbWFwLW92ZXJyaWRlOnJlYWN0LWRvbVwiXS5pbmNsdWRlcyhcbiAgICAgICAga2V5XG4gICAgICApXG4gICAgKSB7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICAgIH1cbiAgfVxuICBsb2NhdGlvbi5yZWxvYWQoKTtcbn1cblxuZnVuY3Rpb24gaXNBYnNvbHV0ZVVybCh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBhYnNvbHV0ZVVybFBhdHRlcm4gPSAvXmh0dHBzPzpcXC9cXC8vaTtcbiAgcmV0dXJuIGFic29sdXRlVXJsUGF0dGVybi50ZXN0KHVybCk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbmZpZ0xvYWRlcihjb25maWdVcmxzOiBBcnJheTxzdHJpbmc+KSB7XG4gIGNvbnN0IGxvYWRpbmdDb25maWdzID0gUHJvbWlzZS5hbGwoXG4gICAgY29uZmlnVXJscy5tYXAoKGNvbmZpZ1VybCkgPT4ge1xuICAgICAgY29uc3QgaW50ZXJwb2xhdGVkVXJsID0gYCR7aW50ZXJwb2xhdGVVcmwoXG4gICAgICAgIGBcXCR7b3Blbm1yc1NwYUJhc2V9JHtjb25maWdVcmx9YFxuICAgICAgKX1gO1xuICAgICAgY29uc3QgdXJsID0gaXNBYnNvbHV0ZVVybChjb25maWdVcmwpXG4gICAgICAgID8gY29uZmlnVXJsXG4gICAgICAgIDogYCR7d2luZG93LmxvY2F0aW9uLm9yaWdpbn0ke2ludGVycG9sYXRlZFVybH1gO1xuICAgICAgcmV0dXJuIGZldGNoKHVybClcbiAgICAgICAgLnRoZW4oKHJlcykgPT4gcmVzLmpzb24oKSlcbiAgICAgICAgLnRoZW4oKGNvbmZpZykgPT4gKHtcbiAgICAgICAgICBuYW1lOiBjb25maWdVcmwsXG4gICAgICAgICAgdmFsdWU6IGNvbmZpZyxcbiAgICAgICAgfSkpXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihgTG9hZGluZyB0aGUgY29uZmlnIGZyb20gXCIke2NvbmZpZ1VybH1cIiBmYWlsZWQuYCwgZXJyKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmFtZTogY29uZmlnVXJsLFxuICAgICAgICAgICAgdmFsdWU6IHt9LFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH0pXG4gICk7XG4gIHJldHVybiAoKSA9PiBsb2FkaW5nQ29uZmlncy50aGVuKGxvYWRDb25maWdzKTtcbn1cblxuZnVuY3Rpb24gc2hvd05vdGlmaWNhdGlvbnMoKSB7XG4gIHJlbmRlcklubGluZU5vdGlmaWNhdGlvbnMoXG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5vbXJzLWlubGluZS1ub3RpZmljYXRpb25zLWNvbnRhaW5lclwiKVxuICApO1xuICByZXR1cm47XG59XG5cbmZ1bmN0aW9uIHNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9ucygpIHtcbiAgcmVuZGVyQWN0aW9uYWJsZU5vdGlmaWNhdGlvbnMoXG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5vbXJzLWFjdGlvbmFibGUtbm90aWZpY2F0aW9ucy1jb250YWluZXJcIilcbiAgKTtcbiAgcmV0dXJuO1xufVxuXG5mdW5jdGlvbiBzaG93VG9hc3RzKCkge1xuICByZW5kZXJUb2FzdHMoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5vbXJzLXRvYXN0cy1jb250YWluZXJcIikpO1xuICByZXR1cm47XG59XG5cbmZ1bmN0aW9uIHNob3dNb2RhbHMoKSB7XG4gIHJlbmRlck1vZGFscyhkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLm9tcnMtbW9kYWxzLWNvbnRhaW5lclwiKSk7XG4gIHJldHVybjtcbn1cblxuZnVuY3Rpb24gc2hvd0xvYWRpbmdTcGlubmVyKCkge1xuICByZXR1cm4gcmVuZGVyTG9hZGluZ1NwaW5uZXIoZG9jdW1lbnQuYm9keSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNldHVwT2ZmbGluZSgpIHtcbiAgdHJ5IHtcbiAgICBhd2FpdCByZWdpc3Rlck9tcnNTZXJ2aWNlV29ya2VyKFxuICAgICAgYCR7d2luZG93LmdldE9wZW5tcnNTcGFCYXNlKCl9c2VydmljZS13b3JrZXIuanNgXG4gICAgKTtcbiAgICBhd2FpdCBhY3RpdmF0ZU9mZmxpbmVDYXBhYmlsaXR5KCk7XG4gICAgc2V0dXBPZmZsaW5lU3RhdGljRGVwZW5kZW5jeVByZWNhY2hpbmcoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiRXJyb3Igd2hpbGUgc2V0dGluZyB1cCBvZmZsaW5lIG1vZGUuXCIsIGVycm9yKTtcbiAgICBzaG93Tm90aWZpY2F0aW9uKHtcbiAgICAgIGtpbmQ6IFwiZXJyb3JcIixcbiAgICAgIHRpdGxlOiBcIk9mZmxpbmUgU2V0dXAgRXJyb3JcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBlcnJvci5tZXNzYWdlLFxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNldHVwT2ZmbGluZVN0YXRpY0RlcGVuZGVuY3lQcmVjYWNoaW5nKCkge1xuICBjb25zdCBwcmVjYWNoZURlbGF5ID0gMTAwMCAqIDYwICogNTtcbiAgbGV0IGxhc3RQcmVjYWNoZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIHN1YnNjcmliZU9ubGluZUFuZExvZ2luQ2hhbmdlKChvbmxpbmUsIGhhc0xvZ2dlZEluVXNlcikgPT4ge1xuICAgIGNvbnN0IGhhc0V4Y2VlZGVkUHJlY2FjaGVEZWxheSA9XG4gICAgICAhbGFzdFByZWNhY2hlIHx8XG4gICAgICBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIGxhc3RQcmVjYWNoZS5nZXRUaW1lKCkgPiBwcmVjYWNoZURlbGF5O1xuXG4gICAgaWYgKGhhc0xvZ2dlZEluVXNlciAmJiBvbmxpbmUgJiYgaGFzRXhjZWVkZWRQcmVjYWNoZURlbGF5KSB7XG4gICAgICBsYXN0UHJlY2FjaGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgZGlzcGF0Y2hQcmVjYWNoZVN0YXRpY0RlcGVuZGVuY2llcygpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHN1YnNjcmliZU9ubGluZUFuZExvZ2luQ2hhbmdlKFxuICBjYjogKG9ubGluZTogYm9vbGVhbiwgaGFzTG9nZ2VkSW5Vc2VyOiBib29sZWFuKSA9PiB2b2lkXG4pIHtcbiAgbGV0IGlzT25saW5lID0gZmFsc2U7XG4gIGxldCBoYXNMb2dnZWRJblVzZXIgPSBmYWxzZTtcblxuICBnZXRDdXJyZW50VXNlcih7IGluY2x1ZGVBdXRoU3RhdHVzOiBmYWxzZSB9KS5zdWJzY3JpYmUoKHVzZXIpID0+IHtcbiAgICBoYXNMb2dnZWRJblVzZXIgPSAhIXVzZXI7XG4gICAgY2IoaXNPbmxpbmUsIGhhc0xvZ2dlZEluVXNlcik7XG4gIH0pO1xuXG4gIHN1YnNjcmliZUNvbm5lY3Rpdml0eSgoeyBvbmxpbmUgfSkgPT4ge1xuICAgIGlzT25saW5lID0gb25saW5lO1xuICAgIGNiKG9ubGluZSwgaGFzTG9nZ2VkSW5Vc2VyKTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHByZWNhY2hlR2xvYmFsU3RhdGljRGVwZW5kZW5jaWVzKCkge1xuICBhd2FpdCBwcmVjYWNoZUltcG9ydE1hcCgpO1xuXG4gIC8vIEJ5IGRlZmF1bHQsIGNhY2hlIHRoZSBzZXNzaW9uIGVuZHBvaW50LlxuICAvLyBUaGlzIGVuc3VyZXMgdGhhdCBhIGxvdCBvZiB1c2VyL3Nlc3Npb24gcmVsYXRlZCBmdW5jdGlvbnMgYWxzbyB3b3JrIG9mZmxpbmUuXG4gIGNvbnN0IHNlc3Npb25QYXRoVXJsID0gbmV3IFVSTChcbiAgICBgJHt3aW5kb3cub3Blbm1yc0Jhc2V9L3dzL3Jlc3QvdjEvc2Vzc2lvbmAsXG4gICAgd2luZG93LmxvY2F0aW9uLm9yaWdpblxuICApLmhyZWY7XG5cbiAgYXdhaXQgbWVzc2FnZU9tcnNTZXJ2aWNlV29ya2VyKHtcbiAgICB0eXBlOiBcInJlZ2lzdGVyRHluYW1pY1JvdXRlXCIsXG4gICAgdXJsOiBzZXNzaW9uUGF0aFVybCxcbiAgICBzdHJhdGVneTogXCJuZXR3b3JrLWZpcnN0XCIsXG4gIH0pO1xuXG4gIGF3YWl0IG9wZW5tcnNGZXRjaChcIi93cy9yZXN0L3YxL3Nlc3Npb25cIikuY2F0Y2goKGUpID0+XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgXCJGYWlsZWQgdG8gcHJlY2FjaGUgdGhlIHVzZXIgc2Vzc2lvbiBkYXRhIGZyb20gdGhlIGFwcCBzaGVsbC4gTUZzIGRlcGVuZGluZyBvbiB0aGlzIGRhdGEgbWF5IHJ1biBpbnRvIHByb2JsZW1zIHdoaWxlIG9mZmxpbmUuXCIsXG4gICAgICBlXG4gICAgKVxuICApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBwcmVjYWNoZUltcG9ydE1hcCgpIHtcbiAgY29uc3QgaW1wb3J0TWFwID0gYXdhaXQgd2luZG93LmltcG9ydE1hcE92ZXJyaWRlcy5nZXRDdXJyZW50UGFnZU1hcCgpO1xuICBhd2FpdCBtZXNzYWdlT21yc1NlcnZpY2VXb3JrZXIoe1xuICAgIHR5cGU6IFwib25JbXBvcnRNYXBDaGFuZ2VkXCIsXG4gICAgaW1wb3J0TWFwLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gc2V0dXBPZmZsaW5lQ3NzQ2xhc3NlcygpIHtcbiAgc3Vic2NyaWJlQ29ubmVjdGl2aXR5KCh7IG9ubGluZSB9KSA9PiB7XG4gICAgY29uc3QgYm9keSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJib2R5XCIpITtcbiAgICBpZiAob25saW5lKSB7XG4gICAgICBib2R5LmNsYXNzTGlzdC5yZW1vdmUoXCJvbXJzLW9mZmxpbmVcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJvZHkuY2xhc3NMaXN0LmFkZChcIm9tcnMtb2ZmbGluZVwiKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuKGNvbmZpZ1VybHM6IEFycmF5PHN0cmluZz4sIG9mZmxpbmU6IGJvb2xlYW4pIHtcbiAgY29uc3QgY2xvc2VMb2FkaW5nID0gc2hvd0xvYWRpbmdTcGlubmVyKCk7XG4gIGNvbnN0IHByb3ZpZGVDb25maWdzID0gY3JlYXRlQ29uZmlnTG9hZGVyKGNvbmZpZ1VybHMpO1xuXG4gIGludGVncmF0ZUJyZWFrcG9pbnRzKCk7XG4gIHNob3dUb2FzdHMoKTtcbiAgc2hvd01vZGFscygpO1xuICBzaG93Tm90aWZpY2F0aW9ucygpO1xuICBzaG93QWN0aW9uYWJsZU5vdGlmaWNhdGlvbnMoKTtcbiAgY3JlYXRlQXBwU3RhdGUoe30pO1xuICBzdWJzY3JpYmVOb3RpZmljYXRpb25TaG93bihzaG93Tm90aWZpY2F0aW9uKTtcbiAgc3Vic2NyaWJlQWN0aW9uYWJsZU5vdGlmaWNhdGlvblNob3duKHNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9uKTtcbiAgc3Vic2NyaWJlVG9hc3RTaG93bihzaG93VG9hc3QpO1xuICBzdWJzY3JpYmVQcmVjYWNoZVN0YXRpY0RlcGVuZGVuY2llcyhwcmVjYWNoZUdsb2JhbFN0YXRpY0RlcGVuZGVuY2llcyk7XG4gIC8vIEZJWE1FIHRoaXMgaXMgcGFydCBvZiBhIGhhY2sgdG8gbG9hZCBlc20tZm9ybS1hcHAgd2hpY2ggZGVwZW5kcyBvbiB0aGUgbGVnYWN5IGxvYWRpbmcgZm9yIG5vd1xuICAvLyBPbmNlIGVzbS1mb3JtLWFwcCBjYW4gYmUgdXBncmFkZWQgdG8gQW5ndWxhciAxMiBhbmQgTW9kdWxlIEZlZGVyYXRpb24sIHdlIHNob3VsZCBiZSBhYmxlIHRvIGRpdGNoIHRoaXNcbiAgcmVnaXN0ZXJNb2R1bGVzKHNoYXJlZERlcGVuZGVuY2llcyk7XG4gIHNldHVwQXBpTW9kdWxlKCk7XG4gIHJlZ2lzdGVyQ29yZUV4dGVuc2lvbnMoKTtcblxuICByZXR1cm4gbG9hZEFwcHMoKVxuICAgIC50aGVuKHNldHVwQXBwcylcbiAgICAudGhlbihzZXR1cE9mZmxpbmVDc3NDbGFzc2VzKVxuICAgIC50aGVuKHByb3ZpZGVDb25maWdzKVxuICAgIC50aGVuKHJ1blNoZWxsKVxuICAgIC5jYXRjaChoYW5kbGVJbml0RmFpbHVyZSlcbiAgICAudGhlbihjbG9zZUxvYWRpbmcpXG4gICAgLnRoZW4oKCkgPT4gKG9mZmxpbmUgPyBzZXR1cE9mZmxpbmUoKSA6IHVuZGVmaW5lZCkpO1xufVxuIl0sIm5hbWVzIjpbInN0YXJ0IiwidW5yZWdpc3RlckFwcGxpY2F0aW9uIiwiZ2V0QXBwTmFtZXMiLCJzZXR1cEFwaU1vZHVsZSIsInJlbmRlckxvYWRpbmdTcGlubmVyIiwiY3JlYXRlQXBwU3RhdGUiLCJwcm92aWRlIiwic2hvd05vdGlmaWNhdGlvbiIsInNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9uIiwic2hvd1RvYXN0IiwicmVuZGVySW5saW5lTm90aWZpY2F0aW9ucyIsInJlbmRlckFjdGlvbmFibGVOb3RpZmljYXRpb25zIiwicmVuZGVyVG9hc3RzIiwiaW50ZWdyYXRlQnJlYWtwb2ludHMiLCJkaXNwYXRjaENvbm5lY3Rpdml0eUNoYW5nZWQiLCJzdWJzY3JpYmVOb3RpZmljYXRpb25TaG93biIsInN1YnNjcmliZUFjdGlvbmFibGVOb3RpZmljYXRpb25TaG93biIsInN1YnNjcmliZVRvYXN0U2hvd24iLCJyZWdpc3Rlck9tcnNTZXJ2aWNlV29ya2VyIiwibWVzc2FnZU9tcnNTZXJ2aWNlV29ya2VyIiwic3Vic2NyaWJlQ29ubmVjdGl2aXR5IiwiZ2V0Q3VycmVudFVzZXIiLCJyZW5kZXJNb2RhbHMiLCJkaXNwYXRjaFByZWNhY2hlU3RhdGljRGVwZW5kZW5jaWVzIiwiYWN0aXZhdGVPZmZsaW5lQ2FwYWJpbGl0eSIsInN1YnNjcmliZVByZWNhY2hlU3RhdGljRGVwZW5kZW5jaWVzIiwib3Blbm1yc0ZldGNoIiwiaW50ZXJwb2xhdGVVcmwiLCJmaW5pc2hSZWdpc3RlcmluZ0FsbEFwcHMiLCJyZWdpc3RlckFwcCIsInRyeVJlZ2lzdGVyRXh0ZW5zaW9uIiwic2V0dXBJMThuIiwibG9hZE1vZHVsZXMiLCJhcHBOYW1lIiwiZ2V0Q29yZUV4dGVuc2lvbnMiLCJyZWdpc3Rlck1vZHVsZXMiLCJzaGFyZWREZXBlbmRlbmNpZXMiLCJsb2FkQXBwcyIsIndpbmRvdyIsImltcG9ydE1hcE92ZXJyaWRlcyIsImdldEN1cnJlbnRQYWdlTWFwIiwidGhlbiIsImltcG9ydE1hcCIsImltcG9ydHMiLCJyZWdpc3RlckNvcmVFeHRlbnNpb25zIiwiZXh0ZW5zaW9ucyIsImV4dGVuc2lvbiIsInNldHVwQXBwcyIsIm1vZHVsZXMiLCJmb3JFYWNoIiwiYXBwRXhwb3J0cyIsImFwcE5hbWVzIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsImluc3RhbGxlZE1vZHVsZXMiLCJsb2FkQ29uZmlncyIsImNvbmZpZ3MiLCJjb25maWciLCJ2YWx1ZSIsIm5hbWUiLCJjb25uZWN0aXZpdHlDaGFuZ2VkIiwib25saW5lIiwibmF2aWdhdG9yIiwib25MaW5lIiwiY3JpdGljYWwiLCJkZXNjcmlwdGlvbiIsInRpdGxlIiwia2luZCIsInJ1blNoZWxsIiwiYWRkRXZlbnRMaXN0ZW5lciIsImNhdGNoIiwiZXJyIiwiY29uc29sZSIsImVycm9yIiwiaGFuZGxlSW5pdEZhaWx1cmUiLCJlIiwicmVuZGVyRmF0YWxFcnJvclBhZ2UiLCJ0ZW1wbGF0ZSIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsImZyYWdtZW50IiwiY29udGVudCIsImNsb25lTm9kZSIsIm1lc3NhZ2VDb250YWluZXIiLCJ0ZXh0Q29udGVudCIsIm1lc3NhZ2UiLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwiT2JqZWN0Iiwia2V5cyIsInNvbWUiLCJrIiwic3RhcnRzV2l0aCIsImFwcEVycm9yQWN0aW9uQnV0dG9ucyIsImNsZWFyRGV2T3ZlcnJpZGVzQnV0dG9uIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImlubmVySFRNTCIsIm9uY2xpY2siLCJjbGVhckRldk92ZXJyaWRlcyIsImFwcGVuZENoaWxkIiwiYm9keSIsImtleSIsImluY2x1ZGVzIiwicmVtb3ZlSXRlbSIsImxvY2F0aW9uIiwicmVsb2FkIiwiaXNBYnNvbHV0ZVVybCIsInVybCIsImFic29sdXRlVXJsUGF0dGVybiIsInRlc3QiLCJjcmVhdGVDb25maWdMb2FkZXIiLCJjb25maWdVcmxzIiwibG9hZGluZ0NvbmZpZ3MiLCJjb25maWdVcmwiLCJpbnRlcnBvbGF0ZWRVcmwiLCJvcmlnaW4iLCJmZXRjaCIsInJlcyIsImpzb24iLCJzaG93Tm90aWZpY2F0aW9ucyIsInNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9ucyIsInNob3dUb2FzdHMiLCJzaG93TW9kYWxzIiwic2hvd0xvYWRpbmdTcGlubmVyIiwic2V0dXBPZmZsaW5lIiwiZ2V0T3Blbm1yc1NwYUJhc2UiLCJzZXR1cE9mZmxpbmVTdGF0aWNEZXBlbmRlbmN5UHJlY2FjaGluZyIsInByZWNhY2hlRGVsYXkiLCJsYXN0UHJlY2FjaGUiLCJzdWJzY3JpYmVPbmxpbmVBbmRMb2dpbkNoYW5nZSIsImhhc0xvZ2dlZEluVXNlciIsImhhc0V4Y2VlZGVkUHJlY2FjaGVEZWxheSIsIkRhdGUiLCJnZXRUaW1lIiwiY2IiLCJpc09ubGluZSIsImluY2x1ZGVBdXRoU3RhdHVzIiwic3Vic2NyaWJlIiwidXNlciIsInByZWNhY2hlR2xvYmFsU3RhdGljRGVwZW5kZW5jaWVzIiwic2Vzc2lvblBhdGhVcmwiLCJwcmVjYWNoZUltcG9ydE1hcCIsIlVSTCIsIm9wZW5tcnNCYXNlIiwiaHJlZiIsInR5cGUiLCJzdHJhdGVneSIsIndhcm4iLCJzZXR1cE9mZmxpbmVDc3NDbGFzc2VzIiwiY2xhc3NMaXN0IiwicmVtb3ZlIiwiYWRkIiwicnVuIiwib2ZmbGluZSIsImNsb3NlTG9hZGluZyIsInByb3ZpZGVDb25maWdzIiwidW5kZWZpbmVkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/run.ts\n");
7779
7779
 
7780
7780
  /***/ }),
7781
7781
 
@@ -11952,8 +11952,8 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
11952
11952
  /******/ var promises = [];
11953
11953
  /******/ switch(name) {
11954
11954
  /******/ case "default": {
11955
- /******/ register("@openmrs/esm-framework/src/internal", "4.4.1-pre.693", () => (() => (__webpack_require__(/*! ../../framework/esm-framework/src/internal.ts */ "../../framework/esm-framework/src/internal.ts"))), 1);
11956
- /******/ register("@openmrs/esm-framework", "4.4.1-pre.693", () => (() => (__webpack_require__(/*! ../../framework/esm-framework/src/index.ts */ "../../framework/esm-framework/src/index.ts"))), 1);
11955
+ /******/ register("@openmrs/esm-framework/src/internal", "4.4.2-pre.712", () => (() => (__webpack_require__(/*! ../../framework/esm-framework/src/internal.ts */ "../../framework/esm-framework/src/internal.ts"))), 1);
11956
+ /******/ register("@openmrs/esm-framework", "4.4.2-pre.712", () => (() => (__webpack_require__(/*! ../../framework/esm-framework/src/index.ts */ "../../framework/esm-framework/src/index.ts"))), 1);
11957
11957
  /******/ register("dayjs", "1.11.5", () => (() => (__webpack_require__(/*! ../../../node_modules/dayjs/dayjs.min.js */ "../../../node_modules/dayjs/dayjs.min.js"))), 1);
11958
11958
  /******/ register("i18next", "19.9.2", () => (() => (__webpack_require__(/*! ../../../node_modules/i18next/dist/esm/i18next.js */ "../../../node_modules/i18next/dist/esm/i18next.js"))), 1);
11959
11959
  /******/ register("react-dom", "18.2.0", () => (() => (__webpack_require__(/*! ../../../node_modules/react-dom/index.js */ "../../../node_modules/react-dom/index.js"))), 1);
@@ -12115,7 +12115,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
12115
12115
  /******/ "webpack/sharing/consume/default/i18next/i18next": () => (loadSingletonVersionCheckFallback("default", "i18next", [1,19,6,0], () => (() => (__webpack_require__(/*! i18next */ "../../../node_modules/i18next/dist/esm/i18next.js"))))),
12116
12116
  /******/ "webpack/sharing/consume/default/react-i18next/react-i18next": () => (loadSingletonVersionCheckFallback("default", "react-i18next", [1,11,7,0], () => (() => (__webpack_require__(/*! react-i18next */ "../../../node_modules/react-i18next/dist/es/index.js"))))),
12117
12117
  /******/ "webpack/sharing/consume/default/dayjs/dayjs": () => (loadSingletonVersionCheckFallback("default", "dayjs", [1,1,10,4], () => (() => (__webpack_require__(/*! dayjs */ "../../../node_modules/dayjs/dayjs.min.js"))))),
12118
- /******/ "webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework": () => (loadSingletonVersionCheckFallback("default", "@openmrs/esm-framework", [7,4,4,1,,"pre",693], () => (() => (__webpack_require__(/*! @openmrs/esm-framework */ "../../framework/esm-framework/src/index.ts")))))
12118
+ /******/ "webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework": () => (loadSingletonVersionCheckFallback("default", "@openmrs/esm-framework", [7,4,4,2,,"pre",712], () => (() => (__webpack_require__(/*! @openmrs/esm-framework */ "../../framework/esm-framework/src/index.ts")))))
12119
12119
  /******/ };
12120
12120
  /******/ var initialConsumes = ["webpack/sharing/consume/default/@openmrs/esm-framework/src/internal/@openmrs/esm-framework/src/internal","webpack/sharing/consume/default/rxjs/rxjs","webpack/sharing/consume/default/react/react","webpack/sharing/consume/default/react-dom/react-dom","webpack/sharing/consume/default/i18next/i18next","webpack/sharing/consume/default/react-i18next/react-i18next","webpack/sharing/consume/default/dayjs/dayjs","webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework"];
12121
12121
  /******/ initialConsumes.forEach((id) => {