"use strict";(globalThis.blocksyJsonP=globalThis.blocksyJsonP||[]).push([[831],{831:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval("// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"getCacheFor\": () => (/* binding */ getCacheFor),\n \"mount\": () => (/* binding */ mount)\n});\n\n// EXTERNAL MODULE: external \"ctEvents\"\nvar external_ctEvents_ = __webpack_require__(601);\nvar external_ctEvents_default = /*#__PURE__*/__webpack_require__.n(external_ctEvents_);\n;// CONCATENATED MODULE: ./static/js/frontend/header/get-items-distribution.js\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\nconst getItemWidthsFrom = container => [...container.querySelectorAll('[data-items] > [data-id]')].filter(el => el.dataset.id.indexOf('menu') === -1).reduce((sum, el) => {\n let style = window.getComputedStyle(el);\n return sum + el.getBoundingClientRect().width + parseInt(style.getPropertyValue('margin-left')) + parseInt(style.getPropertyValue('margin-right'));\n}, 0);\n\nconst getTotalItemsWidthFor = nav => {\n let navStyle = window.getComputedStyle(nav);\n return getCacheFor(nav.__id).itemsWidth.reduce((sum, n) => sum + n, 0) + (parseInt(navStyle.getPropertyValue('margin-left')) + parseInt(navStyle.getPropertyValue('margin-right')));\n};\n/**\n * 1. Nav is in side with NO items in middle\n * 2. Nav is in middle\n * 3. Nav is either:\n * a. Secondary\n * b. Side, but with middle\n */\n\n\nconst computeAvailableSpaceFor = nav => {\n let baseContainer = nav.closest('[class*=\"ct-container\"]');\n let baseWidth = baseContainer.getBoundingClientRect().width; // side | middle | secondary\n // TODO: compute sides\n\n let closestColumn = nav.closest('[data-column]').dataset.column;\n let navSide = closestColumn === 'start' || closestColumn === 'end' ? 'side' : closestColumn === 'middle' ? 'middle' : 'secondary';\n let hasMiddle = baseContainer.querySelector('[data-column=\"middle\"]'); // Case 1\n\n if (navSide === 'side' && !hasMiddle) {\n let allNavs = baseContainer.querySelectorAll('[data-id*=\"menu\"]');\n const totalItemsWidthFromAllNavs = [...allNavs].reduce((total, nav) => total + getTotalItemsWidthFor(nav), 0);\n const totalItemsWidth = getTotalItemsWidthFor(nav);\n let containerWidth = baseWidth - getItemWidthsFrom(baseContainer);\n\n if (allNavs.length > 1) {\n containerWidth *= 100 * totalItemsWidth / totalItemsWidthFromAllNavs / 100;\n }\n\n return containerWidth;\n }\n\n if (navSide === 'middle') {\n return baseWidth - Math.max(baseContainer.querySelector('[data-column=\"start\"]') ? getItemWidthsFrom(baseContainer.querySelector('[data-column=\"start\"]')) : 0, baseContainer.querySelector('[data-column=\"end\"]') ? getItemWidthsFrom(baseContainer.querySelector('[data-column=\"end\"]')) : 0) * 2;\n }\n\n return (baseWidth - (baseContainer.querySelector('[data-column=\"middle\"]') ? getItemWidthsFrom(baseContainer.querySelector('[data-column=\"middle\"]')) : 0)) / 2 - getItemWidthsFrom(nav.closest('[data-column]'));\n};\n\nconst getItemsDistribution = nav => {\n let containerWidth = computeAvailableSpaceFor(nav);\n let baseContainer = nav.closest('[class*=\"ct-container\"]');\n let navStyle = window.getComputedStyle(nav);\n const totalItemsWidth = getTotalItemsWidthFor(nav);\n const hasAnyOverlap = totalItemsWidth > containerWidth;\n\n if (!hasAnyOverlap) {\n return {\n fit: getCacheFor(nav.__id).children,\n notFit: []\n };\n }\n\n let allNavs = baseContainer.querySelectorAll('[data-id*=\"menu\"]');\n return getCacheFor(nav.__id).children.reduce((_ref, currentEl, currentIndex) => {\n let {\n fit,\n notFit\n } = _ref;\n return _objectSpread({}, getCacheFor(nav.__id).itemsWidth.slice(0, currentIndex + 1).reduce((sum, n) => sum + n, 0) < containerWidth - 100 / allNavs.length - (parseInt(navStyle.getPropertyValue('margin-left')) + parseInt(navStyle.getPropertyValue('margin-right'))) ? {\n fit: [...fit, currentEl],\n notFit\n } : {\n notFit: [...notFit, currentEl],\n fit\n });\n }, {\n fit: [],\n notFit: []\n });\n};\n;// CONCATENATED MODULE: ./static/js/frontend/header/responsive-desktop-menu.js\n\n\n\nconst isEligibleForSubmenu = el => el.classList.contains('animated-submenu') && (!el.parentNode.classList.contains('menu') || el.className.indexOf('ct-mega-menu') === -1 && el.parentNode.classList.contains('menu'));\n\nlet cacheInfo = {};\nconst getCacheFor = id => cacheInfo[id];\n\nconst maybeCreateMoreItemsFor = (nav, onDone) => {\n if (nav.querySelector('.more-items-container')) {\n onDone();\n return;\n }\n\n const moreContainer = document.createElement('li');\n moreContainer.classList.add('menu-item-has-children');\n moreContainer.classList.add('more-items-container');\n moreContainer.classList.add('animated-submenu');\n moreContainer.classList.add('menu-item');\n moreContainer.insertAdjacentHTML('afterbegin', `\n ${ct_localizations.more_text}\n \n \n \n \n \n \n \n `);\n nav.firstElementChild.appendChild(moreContainer);\n onDone && onDone();\n};\n\nconst computeItemsWidth = nav => Array.from(nav.firstElementChild.children).filter(el => !el.classList.contains('.more-items-container') && el.firstElementChild).map(el => {\n const a = el.firstElementChild;\n a.innerHTML = `${a.innerHTML}`;\n const props = window.getComputedStyle(a, null);\n let actualWidth = a.firstElementChild.getBoundingClientRect().width + parseInt(props.getPropertyValue('padding-left'), 10) + parseInt(props.getPropertyValue('padding-right'), 10) + (a.querySelector('.ct-toggle-dropdown-desktop') ? 13 : 0);\n a.innerHTML = a.firstElementChild.innerHTML;\n return actualWidth;\n});\n\nconst maybeMakeCacheForAllNavs = nav => {\n let baseContainer = nav.closest('[class*=\"ct-container\"]');\n let allNavs = baseContainer.querySelectorAll('[data-id*=\"menu\"]');\n [...allNavs].map(nav => {\n if (!nav.__id) {\n nav.__id = Math.random();\n }\n\n if (cacheInfo[nav.__id]) {\n return;\n }\n\n if (!nav.firstElementChild) {\n return;\n }\n\n cacheInfo[nav.__id] = {\n el: nav,\n previousRenderedWidth: null,\n children: [...Array.from(nav.firstElementChild.children).filter(el => !el.classList.contains('more-items-container')), ...(nav.firstElementChild.querySelector('.more-items-container') ? [...nav.firstElementChild.querySelector('.more-items-container .sub-menu').children] : [])],\n itemsWidth: computeItemsWidth(nav)\n };\n nav.dataset.responsive = 'yes';\n });\n};\n\nconst mount = nav => {\n if (!nav.firstElementChild) {\n return;\n }\n\n maybeMakeCacheForAllNavs(nav);\n\n if (cacheInfo[nav.__id].previousRenderedWidth && cacheInfo[nav.__id].previousRenderedWidth === window.innerWidth) {\n return;\n }\n\n cacheInfo[nav.__id].previousRenderedWidth = window.innerWidth;\n let {\n fit,\n notFit\n } = getItemsDistribution(nav);\n\n if (notFit.length === 0) {\n if (nav.querySelector('.more-items-container')) {\n fit.map(el => {\n nav.firstElementChild.insertBefore(el, nav.querySelector('.more-items-container'));\n Array.from(el.querySelectorAll('.menu-item-has-children, .page_item_has_children')).filter(el => !!el.closest('[class*=\"ct-mega-menu\"]')).map(el => el.classList.remove('animated-submenu'));\n });\n nav.querySelector('.more-items-container').remove();\n }\n\n resetSubmenus();\n external_ctEvents_default().trigger('ct:header:init-popper');\n return;\n }\n\n if (!document.querySelector('header [data-device=\"desktop\"]')) {\n return;\n }\n\n maybeCreateMoreItemsFor(nav, () => {\n notFit.map(el => {\n nav.querySelector('.more-items-container .sub-menu').appendChild(el);\n el.classList.add('animated-submenu');\n Array.from(el.querySelectorAll('.menu-item-has-children, .page_item_has_children')).map(el => el.classList.add('animated-submenu'));\n });\n fit.map(el => {\n nav.firstElementChild.insertBefore(el, nav.querySelector('.more-items-container'));\n Array.from(el.querySelectorAll('.menu-item-has-children, .page_item_has_children')).filter(el => !!el.closest('[class*=\"ct-mega-menu\"]')).map(el => el.classList.remove('animated-submenu'));\n });\n resetSubmenus();\n external_ctEvents_default().trigger('ct:header:init-popper');\n });\n};\n\nconst resetSubmenus = () => {\n ;\n [...document.querySelectorAll('header [data-device=\"desktop\"] [data-id*=\"menu\"] > .menu')].map(menu => {\n ;\n [...menu.children].filter(el => el.querySelector('.sub-menu')).filter(el => isEligibleForSubmenu(el)).map(el => el.querySelector('.sub-menu')).map(menu => {\n ;\n [...menu.querySelectorAll('[data-submenu]')].map(el => {\n el.removeAttribute('data-submenu');\n });\n\n if (menu._popper) {\n menu._popper.destroy();\n\n menu._popper = null;\n }\n });\n });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODMxLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdEZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vY3RGcm9udGVuZC8uL3N0YXRpYy9qcy9mcm9udGVuZC9oZWFkZXIvZ2V0LWl0ZW1zLWRpc3RyaWJ1dGlvbi5qcz9mM2I4Iiwid2VicGFjazovL2N0RnJvbnRlbmQvLi9zdGF0aWMvanMvZnJvbnRlbmQvaGVhZGVyL3Jlc3BvbnNpdmUtZGVza3RvcC1tZW51LmpzP2YzY2YiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGVudW1lcmFibGVPbmx5ICYmIChzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSkpLCBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IG51bGwgIT0gYXJndW1lbnRzW2ldID8gYXJndW1lbnRzW2ldIDoge307IGkgJSAyID8gb3duS2V5cyhPYmplY3Qoc291cmNlKSwgITApLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSkgOiBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IHsgZ2V0Q2FjaGVGb3IgfSBmcm9tICcuL3Jlc3BvbnNpdmUtZGVza3RvcC1tZW51JztcblxuY29uc3QgZ2V0SXRlbVdpZHRoc0Zyb20gPSBjb250YWluZXIgPT4gWy4uLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1pdGVtc10gPiBbZGF0YS1pZF0nKV0uZmlsdGVyKGVsID0+IGVsLmRhdGFzZXQuaWQuaW5kZXhPZignbWVudScpID09PSAtMSkucmVkdWNlKChzdW0sIGVsKSA9PiB7XG4gIGxldCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsKTtcbiAgcmV0dXJuIHN1bSArIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoICsgcGFyc2VJbnQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnbWFyZ2luLWxlZnQnKSkgKyBwYXJzZUludChzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdtYXJnaW4tcmlnaHQnKSk7XG59LCAwKTtcblxuY29uc3QgZ2V0VG90YWxJdGVtc1dpZHRoRm9yID0gbmF2ID0+IHtcbiAgbGV0IG5hdlN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUobmF2KTtcbiAgcmV0dXJuIGdldENhY2hlRm9yKG5hdi5fX2lkKS5pdGVtc1dpZHRoLnJlZHVjZSgoc3VtLCBuKSA9PiBzdW0gKyBuLCAwKSArIChwYXJzZUludChuYXZTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdtYXJnaW4tbGVmdCcpKSArIHBhcnNlSW50KG5hdlN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ21hcmdpbi1yaWdodCcpKSk7XG59O1xuLyoqXG4gKiAxLiBOYXYgaXMgaW4gc2lkZSB3aXRoIE5PIGl0ZW1zIGluIG1pZGRsZVxuICogMi4gTmF2IGlzIGluIG1pZGRsZVxuICogMy4gTmF2IGlzIGVpdGhlcjpcbiAqICAgYS4gU2Vjb25kYXJ5XG4gKiAgIGIuIFNpZGUsIGJ1dCB3aXRoIG1pZGRsZVxuICovXG5cblxuY29uc3QgY29tcHV0ZUF2YWlsYWJsZVNwYWNlRm9yID0gbmF2ID0+IHtcbiAgbGV0IGJhc2VDb250YWluZXIgPSBuYXYuY2xvc2VzdCgnW2NsYXNzKj1cImN0LWNvbnRhaW5lclwiXScpO1xuICBsZXQgYmFzZVdpZHRoID0gYmFzZUNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDsgLy8gc2lkZSB8IG1pZGRsZSB8IHNlY29uZGFyeVxuICAvLyBUT0RPOiBjb21wdXRlIHNpZGVzXG5cbiAgbGV0IGNsb3Nlc3RDb2x1bW4gPSBuYXYuY2xvc2VzdCgnW2RhdGEtY29sdW1uXScpLmRhdGFzZXQuY29sdW1uO1xuICBsZXQgbmF2U2lkZSA9IGNsb3Nlc3RDb2x1bW4gPT09ICdzdGFydCcgfHwgY2xvc2VzdENvbHVtbiA9PT0gJ2VuZCcgPyAnc2lkZScgOiBjbG9zZXN0Q29sdW1uID09PSAnbWlkZGxlJyA/ICdtaWRkbGUnIDogJ3NlY29uZGFyeSc7XG4gIGxldCBoYXNNaWRkbGUgPSBiYXNlQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWNvbHVtbj1cIm1pZGRsZVwiXScpOyAvLyBDYXNlIDFcblxuICBpZiAobmF2U2lkZSA9PT0gJ3NpZGUnICYmICFoYXNNaWRkbGUpIHtcbiAgICBsZXQgYWxsTmF2cyA9IGJhc2VDb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtaWQqPVwibWVudVwiXScpO1xuICAgIGNvbnN0IHRvdGFsSXRlbXNXaWR0aEZyb21BbGxOYXZzID0gWy4uLmFsbE5hdnNdLnJlZHVjZSgodG90YWwsIG5hdikgPT4gdG90YWwgKyBnZXRUb3RhbEl0ZW1zV2lkdGhGb3IobmF2KSwgMCk7XG4gICAgY29uc3QgdG90YWxJdGVtc1dpZHRoID0gZ2V0VG90YWxJdGVtc1dpZHRoRm9yKG5hdik7XG4gICAgbGV0IGNvbnRhaW5lcldpZHRoID0gYmFzZVdpZHRoIC0gZ2V0SXRlbVdpZHRoc0Zyb20oYmFzZUNvbnRhaW5lcik7XG5cbiAgICBpZiAoYWxsTmF2cy5sZW5ndGggPiAxKSB7XG4gICAgICBjb250YWluZXJXaWR0aCAqPSAxMDAgKiB0b3RhbEl0ZW1zV2lkdGggLyB0b3RhbEl0ZW1zV2lkdGhGcm9tQWxsTmF2cyAvIDEwMDtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGFpbmVyV2lkdGg7XG4gIH1cblxuICBpZiAobmF2U2lkZSA9PT0gJ21pZGRsZScpIHtcbiAgICByZXR1cm4gYmFzZVdpZHRoIC0gTWF0aC5tYXgoYmFzZUNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdbZGF0YS1jb2x1bW49XCJzdGFydFwiXScpID8gZ2V0SXRlbVdpZHRoc0Zyb20oYmFzZUNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdbZGF0YS1jb2x1bW49XCJzdGFydFwiXScpKSA6IDAsIGJhc2VDb250YWluZXIucXVlcnlTZWxlY3RvcignW2RhdGEtY29sdW1uPVwiZW5kXCJdJykgPyBnZXRJdGVtV2lkdGhzRnJvbShiYXNlQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWNvbHVtbj1cImVuZFwiXScpKSA6IDApICogMjtcbiAgfVxuXG4gIHJldHVybiAoYmFzZVdpZHRoIC0gKGJhc2VDb250YWluZXIucXVlcnlTZWxlY3RvcignW2RhdGEtY29sdW1uPVwibWlkZGxlXCJdJykgPyBnZXRJdGVtV2lkdGhzRnJvbShiYXNlQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWNvbHVtbj1cIm1pZGRsZVwiXScpKSA6IDApKSAvIDIgLSBnZXRJdGVtV2lkdGhzRnJvbShuYXYuY2xvc2VzdCgnW2RhdGEtY29sdW1uXScpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRJdGVtc0Rpc3RyaWJ1dGlvbiA9IG5hdiA9PiB7XG4gIGxldCBjb250YWluZXJXaWR0aCA9IGNvbXB1dGVBdmFpbGFibGVTcGFjZUZvcihuYXYpO1xuICBsZXQgYmFzZUNvbnRhaW5lciA9IG5hdi5jbG9zZXN0KCdbY2xhc3MqPVwiY3QtY29udGFpbmVyXCJdJyk7XG4gIGxldCBuYXZTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG5hdik7XG4gIGNvbnN0IHRvdGFsSXRlbXNXaWR0aCA9IGdldFRvdGFsSXRlbXNXaWR0aEZvcihuYXYpO1xuICBjb25zdCBoYXNBbnlPdmVybGFwID0gdG90YWxJdGVtc1dpZHRoID4gY29udGFpbmVyV2lkdGg7XG5cbiAgaWYgKCFoYXNBbnlPdmVybGFwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpdDogZ2V0Q2FjaGVGb3IobmF2Ll9faWQpLmNoaWxkcmVuLFxuICAgICAgbm90Rml0OiBbXVxuICAgIH07XG4gIH1cblxuICBsZXQgYWxsTmF2cyA9IGJhc2VDb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtaWQqPVwibWVudVwiXScpO1xuICByZXR1cm4gZ2V0Q2FjaGVGb3IobmF2Ll9faWQpLmNoaWxkcmVuLnJlZHVjZSgoX3JlZiwgY3VycmVudEVsLCBjdXJyZW50SW5kZXgpID0+IHtcbiAgICBsZXQge1xuICAgICAgZml0LFxuICAgICAgbm90Rml0XG4gICAgfSA9IF9yZWY7XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe30sIGdldENhY2hlRm9yKG5hdi5fX2lkKS5pdGVtc1dpZHRoLnNsaWNlKDAsIGN1cnJlbnRJbmRleCArIDEpLnJlZHVjZSgoc3VtLCBuKSA9PiBzdW0gKyBuLCAwKSA8IGNvbnRhaW5lcldpZHRoIC0gMTAwIC8gYWxsTmF2cy5sZW5ndGggLSAocGFyc2VJbnQobmF2U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnbWFyZ2luLWxlZnQnKSkgKyBwYXJzZUludChuYXZTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdtYXJnaW4tcmlnaHQnKSkpID8ge1xuICAgICAgZml0OiBbLi4uZml0LCBjdXJyZW50RWxdLFxuICAgICAgbm90Rml0XG4gICAgfSA6IHtcbiAgICAgIG5vdEZpdDogWy4uLm5vdEZpdCwgY3VycmVudEVsXSxcbiAgICAgIGZpdFxuICAgIH0pO1xuICB9LCB7XG4gICAgZml0OiBbXSxcbiAgICBub3RGaXQ6IFtdXG4gIH0pO1xufTsiLCJpbXBvcnQgY3RFdmVudHMgZnJvbSAnY3QtZXZlbnRzJztcbmltcG9ydCB7IGdldEl0ZW1zRGlzdHJpYnV0aW9uIH0gZnJvbSAnLi9nZXQtaXRlbXMtZGlzdHJpYnV0aW9uJztcblxuY29uc3QgaXNFbGlnaWJsZUZvclN1Ym1lbnUgPSBlbCA9PiBlbC5jbGFzc0xpc3QuY29udGFpbnMoJ2FuaW1hdGVkLXN1Ym1lbnUnKSAmJiAoIWVsLnBhcmVudE5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCdtZW51JykgfHwgZWwuY2xhc3NOYW1lLmluZGV4T2YoJ2N0LW1lZ2EtbWVudScpID09PSAtMSAmJiBlbC5wYXJlbnROb2RlLmNsYXNzTGlzdC5jb250YWlucygnbWVudScpKTtcblxubGV0IGNhY2hlSW5mbyA9IHt9O1xuZXhwb3J0IGNvbnN0IGdldENhY2hlRm9yID0gaWQgPT4gY2FjaGVJbmZvW2lkXTtcblxuY29uc3QgbWF5YmVDcmVhdGVNb3JlSXRlbXNGb3IgPSAobmF2LCBvbkRvbmUpID0+IHtcbiAgaWYgKG5hdi5xdWVyeVNlbGVjdG9yKCcubW9yZS1pdGVtcy1jb250YWluZXInKSkge1xuICAgIG9uRG9uZSgpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG1vcmVDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpO1xuICBtb3JlQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ21lbnUtaXRlbS1oYXMtY2hpbGRyZW4nKTtcbiAgbW9yZUNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdtb3JlLWl0ZW1zLWNvbnRhaW5lcicpO1xuICBtb3JlQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ2FuaW1hdGVkLXN1Ym1lbnUnKTtcbiAgbW9yZUNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdtZW51LWl0ZW0nKTtcbiAgbW9yZUNvbnRhaW5lci5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyYmVnaW4nLCBgPGEgaHJlZj1cIiNcIiBjbGFzcz1cImN0LW1lbnUtbGlua1wiPlxuICAgICAgJHtjdF9sb2NhbGl6YXRpb25zLm1vcmVfdGV4dH1cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3QtdG9nZ2xlLWRyb3Bkb3duLWRlc2t0b3BcIj5cbiAgICAgICAgPHN2ZyBjbGFzcz1cImN0LWljb25cIiB3aWR0aD1cIjhcIiBoZWlnaHQ9XCI4XCIgdmlld0JveD1cIjAgMCAxNSAxNVwiPlxuICAgICAgICAgICAgPHBhdGggZD1cIk0yLjEsMy4ybDUuNCw1LjRsNS40LTUuNEwxNSw0LjNsLTcuNSw3LjVMMCw0LjNMMi4xLDMuMnpcIj48L3BhdGg+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9zcGFuPlxuICAgIDwvYT5cbiAgICA8YnV0dG9uIGNsYXNzPVwiY3QtdG9nZ2xlLWRyb3Bkb3duLWRlc2t0b3AtZ2hvc3RcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIiBhcmlhLWxhYmVsPVwiJHtjdF9sb2NhbGl6YXRpb25zLmV4cGFuZF9zdWJtZW51fVwiPjwvYnV0dG9uPlxuICAgIDx1bCBjbGFzcz1cInN1Yi1tZW51XCI+PC91bD5gKTtcbiAgbmF2LmZpcnN0RWxlbWVudENoaWxkLmFwcGVuZENoaWxkKG1vcmVDb250YWluZXIpO1xuICBvbkRvbmUgJiYgb25Eb25lKCk7XG59O1xuXG5jb25zdCBjb21wdXRlSXRlbXNXaWR0aCA9IG5hdiA9PiBBcnJheS5mcm9tKG5hdi5maXJzdEVsZW1lbnRDaGlsZC5jaGlsZHJlbikuZmlsdGVyKGVsID0+ICFlbC5jbGFzc0xpc3QuY29udGFpbnMoJy5tb3JlLWl0ZW1zLWNvbnRhaW5lcicpICYmIGVsLmZpcnN0RWxlbWVudENoaWxkKS5tYXAoZWwgPT4ge1xuICBjb25zdCBhID0gZWwuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gIGEuaW5uZXJIVE1MID0gYDxzcGFuPiR7YS5pbm5lckhUTUx9PC9zcGFuPmA7XG4gIGNvbnN0IHByb3BzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoYSwgbnVsbCk7XG4gIGxldCBhY3R1YWxXaWR0aCA9IGEuZmlyc3RFbGVtZW50Q2hpbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggKyBwYXJzZUludChwcm9wcy5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLWxlZnQnKSwgMTApICsgcGFyc2VJbnQocHJvcHMuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy1yaWdodCcpLCAxMCkgKyAoYS5xdWVyeVNlbGVjdG9yKCcuY3QtdG9nZ2xlLWRyb3Bkb3duLWRlc2t0b3AnKSA/IDEzIDogMCk7XG4gIGEuaW5uZXJIVE1MID0gYS5maXJzdEVsZW1lbnRDaGlsZC5pbm5lckhUTUw7XG4gIHJldHVybiBhY3R1YWxXaWR0aDtcbn0pO1xuXG5jb25zdCBtYXliZU1ha2VDYWNoZUZvckFsbE5hdnMgPSBuYXYgPT4ge1xuICBsZXQgYmFzZUNvbnRhaW5lciA9IG5hdi5jbG9zZXN0KCdbY2xhc3MqPVwiY3QtY29udGFpbmVyXCJdJyk7XG4gIGxldCBhbGxOYXZzID0gYmFzZUNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1pZCo9XCJtZW51XCJdJyk7XG4gIFsuLi5hbGxOYXZzXS5tYXAobmF2ID0+IHtcbiAgICBpZiAoIW5hdi5fX2lkKSB7XG4gICAgICBuYXYuX19pZCA9IE1hdGgucmFuZG9tKCk7XG4gICAgfVxuXG4gICAgaWYgKGNhY2hlSW5mb1tuYXYuX19pZF0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIW5hdi5maXJzdEVsZW1lbnRDaGlsZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNhY2hlSW5mb1tuYXYuX19pZF0gPSB7XG4gICAgICBlbDogbmF2LFxuICAgICAgcHJldmlvdXNSZW5kZXJlZFdpZHRoOiBudWxsLFxuICAgICAgY2hpbGRyZW46IFsuLi5BcnJheS5mcm9tKG5hdi5maXJzdEVsZW1lbnRDaGlsZC5jaGlsZHJlbikuZmlsdGVyKGVsID0+ICFlbC5jbGFzc0xpc3QuY29udGFpbnMoJ21vcmUtaXRlbXMtY29udGFpbmVyJykpLCAuLi4obmF2LmZpcnN0RWxlbWVudENoaWxkLnF1ZXJ5U2VsZWN0b3IoJy5tb3JlLWl0ZW1zLWNvbnRhaW5lcicpID8gWy4uLm5hdi5maXJzdEVsZW1lbnRDaGlsZC5xdWVyeVNlbGVjdG9yKCcubW9yZS1pdGVtcy1jb250YWluZXIgLnN1Yi1tZW51JykuY2hpbGRyZW5dIDogW10pXSxcbiAgICAgIGl0ZW1zV2lkdGg6IGNvbXB1dGVJdGVtc1dpZHRoKG5hdilcbiAgICB9O1xuICAgIG5hdi5kYXRhc2V0LnJlc3BvbnNpdmUgPSAneWVzJztcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgbW91bnQgPSBuYXYgPT4ge1xuICBpZiAoIW5hdi5maXJzdEVsZW1lbnRDaGlsZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIG1heWJlTWFrZUNhY2hlRm9yQWxsTmF2cyhuYXYpO1xuXG4gIGlmIChjYWNoZUluZm9bbmF2Ll9faWRdLnByZXZpb3VzUmVuZGVyZWRXaWR0aCAmJiBjYWNoZUluZm9bbmF2Ll9faWRdLnByZXZpb3VzUmVuZGVyZWRXaWR0aCA9PT0gd2luZG93LmlubmVyV2lkdGgpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjYWNoZUluZm9bbmF2Ll9faWRdLnByZXZpb3VzUmVuZGVyZWRXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICBsZXQge1xuICAgIGZpdCxcbiAgICBub3RGaXRcbiAgfSA9IGdldEl0ZW1zRGlzdHJpYnV0aW9uKG5hdik7XG5cbiAgaWYgKG5vdEZpdC5sZW5ndGggPT09IDApIHtcbiAgICBpZiAobmF2LnF1ZXJ5U2VsZWN0b3IoJy5tb3JlLWl0ZW1zLWNvbnRhaW5lcicpKSB7XG4gICAgICBmaXQubWFwKGVsID0+IHtcbiAgICAgICAgbmF2LmZpcnN0RWxlbWVudENoaWxkLmluc2VydEJlZm9yZShlbCwgbmF2LnF1ZXJ5U2VsZWN0b3IoJy5tb3JlLWl0ZW1zLWNvbnRhaW5lcicpKTtcbiAgICAgICAgQXJyYXkuZnJvbShlbC5xdWVyeVNlbGVjdG9yQWxsKCcubWVudS1pdGVtLWhhcy1jaGlsZHJlbiwgLnBhZ2VfaXRlbV9oYXNfY2hpbGRyZW4nKSkuZmlsdGVyKGVsID0+ICEhZWwuY2xvc2VzdCgnW2NsYXNzKj1cImN0LW1lZ2EtbWVudVwiXScpKS5tYXAoZWwgPT4gZWwuY2xhc3NMaXN0LnJlbW92ZSgnYW5pbWF0ZWQtc3VibWVudScpKTtcbiAgICAgIH0pO1xuICAgICAgbmF2LnF1ZXJ5U2VsZWN0b3IoJy5tb3JlLWl0ZW1zLWNvbnRhaW5lcicpLnJlbW92ZSgpO1xuICAgIH1cblxuICAgIHJlc2V0U3VibWVudXMoKTtcbiAgICBjdEV2ZW50cy50cmlnZ2VyKCdjdDpoZWFkZXI6aW5pdC1wb3BwZXInKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWRlciBbZGF0YS1kZXZpY2U9XCJkZXNrdG9wXCJdJykpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBtYXliZUNyZWF0ZU1vcmVJdGVtc0ZvcihuYXYsICgpID0+IHtcbiAgICBub3RGaXQubWFwKGVsID0+IHtcbiAgICAgIG5hdi5xdWVyeVNlbGVjdG9yKCcubW9yZS1pdGVtcy1jb250YWluZXIgLnN1Yi1tZW51JykuYXBwZW5kQ2hpbGQoZWwpO1xuICAgICAgZWwuY2xhc3NMaXN0LmFkZCgnYW5pbWF0ZWQtc3VibWVudScpO1xuICAgICAgQXJyYXkuZnJvbShlbC5xdWVyeVNlbGVjdG9yQWxsKCcubWVudS1pdGVtLWhhcy1jaGlsZHJlbiwgLnBhZ2VfaXRlbV9oYXNfY2hpbGRyZW4nKSkubWFwKGVsID0+IGVsLmNsYXNzTGlzdC5hZGQoJ2FuaW1hdGVkLXN1Ym1lbnUnKSk7XG4gICAgfSk7XG4gICAgZml0Lm1hcChlbCA9PiB7XG4gICAgICBuYXYuZmlyc3RFbGVtZW50Q2hpbGQuaW5zZXJ0QmVmb3JlKGVsLCBuYXYucXVlcnlTZWxlY3RvcignLm1vcmUtaXRlbXMtY29udGFpbmVyJykpO1xuICAgICAgQXJyYXkuZnJvbShlbC5xdWVyeVNlbGVjdG9yQWxsKCcubWVudS1pdGVtLWhhcy1jaGlsZHJlbiwgLnBhZ2VfaXRlbV9oYXNfY2hpbGRyZW4nKSkuZmlsdGVyKGVsID0+ICEhZWwuY2xvc2VzdCgnW2NsYXNzKj1cImN0LW1lZ2EtbWVudVwiXScpKS5tYXAoZWwgPT4gZWwuY2xhc3NMaXN0LnJlbW92ZSgnYW5pbWF0ZWQtc3VibWVudScpKTtcbiAgICB9KTtcbiAgICByZXNldFN1Ym1lbnVzKCk7XG4gICAgY3RFdmVudHMudHJpZ2dlcignY3Q6aGVhZGVyOmluaXQtcG9wcGVyJyk7XG4gIH0pO1xufTtcblxuY29uc3QgcmVzZXRTdWJtZW51cyA9ICgpID0+IHtcbiAgO1xuICBbLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaGVhZGVyIFtkYXRhLWRldmljZT1cImRlc2t0b3BcIl0gW2RhdGEtaWQqPVwibWVudVwiXSA+IC5tZW51JyldLm1hcChtZW51ID0+IHtcbiAgICA7XG4gICAgWy4uLm1lbnUuY2hpbGRyZW5dLmZpbHRlcihlbCA9PiBlbC5xdWVyeVNlbGVjdG9yKCcuc3ViLW1lbnUnKSkuZmlsdGVyKGVsID0+IGlzRWxpZ2libGVGb3JTdWJtZW51KGVsKSkubWFwKGVsID0+IGVsLnF1ZXJ5U2VsZWN0b3IoJy5zdWItbWVudScpKS5tYXAobWVudSA9PiB7XG4gICAgICA7XG4gICAgICBbLi4ubWVudS5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1zdWJtZW51XScpXS5tYXAoZWwgPT4ge1xuICAgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtc3VibWVudScpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChtZW51Ll9wb3BwZXIpIHtcbiAgICAgICAgbWVudS5fcG9wcGVyLmRlc3Ryb3koKTtcblxuICAgICAgICBtZW51Ll9wb3BwZXIgPSBudWxsO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///831\n")}}]);