1/* 2 * ATTENTION: An "eval-source-map" devtool has been used. 3 * This devtool is neither made for production nor for readable output files. 4 * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. 5 * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) 6 * or disable the default devtool with "devtool: false". 7 * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). 8 */ 9/******/ (function() { // webpackBootstrap 10/******/ "use strict"; 11/******/ var __webpack_modules__ = ({ 12
13/***/ "./resources/css/frontend.scss": 14/*!*************************************!*\ 15 !*** ./resources/css/frontend.scss ***! 16 \*************************************/ 17/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 18 19eval("{__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvY3NzL2Zyb250ZW5kLnNjc3MiLCJtYXBwaW5ncyI6IjtBQUFBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vd3AtcGx1Z2luLWV4aXQtaW50ZW50Ly4vcmVzb3VyY2VzL2Nzcy9mcm9udGVuZC5zY3NzPzU1MGUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQge307Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/css/frontend.scss\n\n}"); 20 21/***/ }), 22
23/***/ "./resources/js/frontend.js": 24/*!**********************************!*\ 25 !*** ./resources/js/frontend.js ***! 26 \**********************************/ 27/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 28 29eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var css_frontend_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! css/frontend.scss */ \"./resources/css/frontend.scss\");\n/* harmony import */ var _modal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modal.js */ \"./resources/js/modal.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2)); }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n\n\nvar ExitIntentPopup = /*#__PURE__*/function () {\n function ExitIntentPopup() {\n _classCallCheck(this, ExitIntentPopup);\n this.hasTriggered = false;\n this.modal = null;\n this.cookieName = 'wp_exit_intent_shown';\n this.cookieHours = 0; // default to session cookie\n this.skipCookie = false; // whether to skip cookie check\n this.usePageLoadOnly = false; // whether to show only once per page load\n this.useSessionCookie = false; // whether to use session cookie\n\n this.init();\n }\n return _createClass(ExitIntentPopup, [{\n key: \"init\",\n value: function () {\n var _init = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {\n var _this = this;\n var shouldContinue, existingCookie;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n if (!(window.innerWidth < 1024)) {\n _context.n = 1;\n break;\n }\n return _context.a(2);\n case 1:\n _context.n = 2;\n return this.fetchSettings();\n case 2:\n shouldContinue = _context.v;\n if (shouldContinue) {\n _context.n = 3;\n break;\n }\n return _context.a(2);\n case 3:\n // Check if we should show the popup (cookie check)\n // Skip cookie check if duration is 1 (show every time) or 0 (page load only)\n existingCookie = this.getCookie(this.cookieName);\n if (!(!this.skipCookie && existingCookie)) {\n _context.n = 4;\n break;\n }\n console.log('Exit Intent: Cookie exists, not showing overlay');\n return _context.a(2);\n case 4:\n // Wait for DOM to be ready\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', function () {\n return _this.setupEventListeners();\n });\n } else {\n this.setupEventListeners();\n }\n case 5:\n return _context.a(2);\n }\n }, _callee, this);\n }));
29\n function init() {\n return _init.apply(this, arguments);\n }\n return init;\n }()\n }, {\n key: \"fetchSettings\",\n value: function () {\n var _fetchSettings = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {\n var response, data, cookieDuration, _t;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.p = _context2.n) {\n case 0:\n _context2.p = 0;\n _context2.n = 1;\n return fetch(\"\".concat(wpExitIntent.restUrl, \"settings\"), {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n case 1:\n response = _context2.v;\n if (!response.ok) {\n _context2.n = 4;\n break;\n }\n _context2.n = 2;\n return response.json();\n case 2:\n data = _context2.v;\n if (!(data.success && data.settings)) {\n _context2.n = 4;\n break;\n }\n if (!(data.settings.general && !data.settings.general.enabled)) {\n _context2.n = 3;\n break;\n }\n return _context2.a(2, false);\n case 3:\n if (data.settings.trigger) {\n cookieDuration = data.settings.trigger.cookie_duration;\n if (cookieDuration === 1) {\n // Show every time - skip cookie check\n this.skipCookie = true;\n } else if (cookieDuration === 0) {\n // Only once per page load - no cookie, just use JS flag\n this.skipCookie = true;\n this.usePageLoadOnly = true;\n } else if (cookieDuration === 2) {\n // Session cookie - expires when browser closes\n this.useSessionCookie = true;\n this.cookieHours = 0; // 0 means session cookie in setCookie\n } else {\n // This shouldn't happen with new settings, but handle it anyway\n this.cookieHours = cookieDuration;\n }\n }\n case 4:\n return _context2.a(2, true);\n case 5:\n _context2.p = 5;\n _t = _context2.v;\n console.error('Failed to fetch exit intent settings:', _t);\n return _context2.a(2, true);\n }\n }, _callee2, this, [[0, 5]]);\n }));\n function fetchSettings() {\n return _fetchSettings.apply(this, arguments);\n }\n return fetchSettings;\n }()\n }, {\n key: \"setupEventListeners\",\n value: function setupEventListeners() {\n var _this2 = this;\n // Exit intent detection - mouse leaving through top of viewport\n document.addEventListener('mouseout', function (e) {\n // Check if mouse is leaving the viewport through the top\n if (e.clientY <= 0 && e.movementY <= 0 && !_this2.hasTriggered) {\n _this2.triggerExitIntent();\n }\n });\n }\n }, {\n key: \"triggerExitIntent\",\n value: function () {\n var _triggerExitIntent = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {\n var _this3 = this;\n var endpoint, response, data, _t2;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.p = _context3.n) {\n case 0:\n if (!(this.usePageLoadOnly && this.hasTriggered)) {\n _context3.n = 1;\n break;\n }\n return _context3.a(2);\n case 1:\n if (!(this.hasTriggered || this.modal && this.modal.isOpen)) {\n _context3.n = 2;\n break;\n }\n return _context3.a(2);\n case 2:\n this.hasTriggered = true;\n _context3.p = 3;\n // Determine which endpoint to use based on whether we have a page ID\n endpoint = wpExitIntent.pageId > 0 ? \"\".concat(wpExitIntent.restUrl, \"exit-intent/for-page/\").concat(wpExitIntent.pageId) : \"\".concat(wpExitIntent.restUrl, \"exit-intent/random\"); // Fetch exit intent content from REST API\n _context3.n = 4;\n return fetch(endpoint, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n case 4:\n response = _context3.v;\n if (response.ok) {\n _context3.n = 5;\n break;\n }\n throw new Error('Failed to fetch exit intent content');\n case 5:\n _context3.n = 6;\n return response.json();\n case 6:\n data = _context3.v;\n if (!(data && data.no_overlay)) {\n _context3.n = 7;\n break;\n }\n // No overlay configured - this is normal, just return silently\n if (data.missing_overlays) {\n console.warn('Exit Intent: Some selected overlays are missing');\n }\n return _context3.a(2);\n case 7:\n if (data && data.content) {\n // Create modal if it doesn't exist\n if (!this.modal) {\n this.modal = new _modal_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]({\n closeOnOverlayClick: true,\n closeOnEscape: true,\n onClose: function onClose() {\n // Reset trigger state when modal is closed\n // Only reset if not using session cookies or page load only mode\n if (!_this3.usePageLoadOnly && !_this3.useSessionCookie) {\n _this3.hasTriggered = false;\n }\n }\n });\n }\n\n // Open the modal with the fetched content\n this.modal.open(data);\n\n // Track the view\n this.trackView(data.id);\n\n // Setup click tracking for links in the modal\n this.setupClickTracking(data.id);\n\n // Set cookie based on mode\n if (!this.skipCookie) {\n // For session mode or any other cookie-based mode\n this.setCookie(this.cookieName, '1', this.cookieHours);\n } else if (!this.usePageLoadOnly) {\n // For \"show every time\" mode - don't set cookie\n // (skipCookie is true but usePageLoadOnly is false)\n }\n // For \"page load only\" mode - don't set cookie\n // (both skipCookie and usePageLoadOnly are true)\n }\n _context3.n = 9;\n break;\n case 8:\n _context3.p = 8;\n _t2 = _context3.v;\n // Only log actual errors (not \"no overlay\" responses)\n console.error('Exit Intent Error:', _t2);\n case 9:\n return _context3.a(2);\n }\n }, _callee3, this, [[3, 8]]);\n }));
29\n function triggerExitIntent() {\n return _triggerExitIntent.apply(this, arguments);\n }\n return triggerExitIntent;\n }()\n }, {\n key: \"setCookie\",\n value: function setCookie(name, value, hours) {\n var expires = '';\n if (hours === 0) {\n // Session cookie - no expires means it expires when browser closes\n expires = '';\n } else if (hours > 0) {\n // Set expiration date\n var date = new Date();\n date.setTime(date.getTime() + hours * 60 * 60 * 1000);\n expires = \"expires=\".concat(date.toUTCString(), \";\");\n }\n document.cookie = \"\".concat(name, \"=\").concat(value, \";\").concat(expires, \"path=/;SameSite=Lax\");\n }\n }, {\n key: \"getCookie\",\n value: function getCookie(name) {\n var nameEQ = \"\".concat(name, \"=\");\n var ca = document.cookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) === ' ') {\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) === 0) {\n return c.substring(nameEQ.length, c.length);\n }\n }\n return null;\n }\n }, {\n key: \"trackView\",\n value: function () {\n var _trackView = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(overlayId) {\n var _t3;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.p = _context4.n) {\n case 0:\n _context4.p = 0;\n _context4.n = 1;\n return fetch(\"\".concat(wpExitIntent.restUrl, \"exit-intent/track/view\"), {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n overlay_id: overlayId,\n page_id: wpExitIntent.pageId > 0 ? wpExitIntent.pageId : null\n })\n });\n case 1:\n _context4.n = 3;\n break;\n case 2:\n _context4.p = 2;\n _t3 = _context4.v;\n console.error('Failed to track view:', _t3);\n case 3:\n return _context4.a(2);\n }\n }, _callee4, null, [[0, 2]]);\n }));\n function trackView(_x) {\n return _trackView.apply(this, arguments);\n }\n return trackView;\n }()\n }, {\n key: \"setupClickTracking\",\n value: function setupClickTracking(overlayId) {\n var _this4 = this;\n // Wait for modal to be in DOM\n setTimeout(function () {\n var modalElement = document.querySelector('.exit-intent-modal');\n if (!modalElement) return;\n\n // Track clicks on all links in the modal\n var links = modalElement.querySelectorAll('a');\n links.forEach(function (link) {\n link.addEventListener('click', function (e) {\n var _link$textContent, _link$innerText;\n var linkUrl = link.href || '';\n var linkText = ((_link$textContent = link.textContent) === null || _link$textContent === void 0 ? void 0 : _link$textContent.trim()) || ((_link$innerText = link.innerText) === null || _link$innerText === void 0 ? void 0 : _link$innerText.trim()) || '';\n\n // Use sendBeacon for reliable tracking before navigation\n _this4.trackClick(overlayId, linkUrl, linkText);\n });\n });\n }, 100);\n }\n }, {\n key: \"trackClick\",\n value: function trackClick(overlayId) {\n var linkUrl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var linkText = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var data = {\n overlay_id: overlayId,\n page_id: wpExitIntent.pageId > 0 ? wpExitIntent.pageId : null,\n link_url: linkUrl,\n link_text: linkText\n };\n\n // Use sendBeacon for reliable tracking even when page is unloading\n if (navigator.sendBeacon) {\n var blob = new Blob([JSON.stringify(data)], {\n type: 'application/json'\n });\n var sent = navigator.sendBeacon(\"\".concat(wpExitIntent.restUrl, \"exit-intent/track/click\"), blob);\n if (!sent) {\n console.warn('Failed to send beacon for click tracking');\n }\n } else {\n // Fallback for browsers that don't support sendBeacon\n try {\n fetch(\"\".concat(wpExitIntent.restUrl, \"exit-intent/track/click\"), {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(data),\n keepalive: true\n }).catch(function (error) {\n console.error('Failed to track click:', error);\n });\n } catch (error) {\n console.error('Failed to track click:', error);\n }\n }\n }\n }]);\n}(); // Initialize when DOM is ready\nif (typeof wpExitIntent !== 'undefined') {\n new ExitIntentPopup();\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvZnJvbnRlbmQuanMiLCJtYXBwaW5ncyI6Ijs7OzswQkFDQSx1S0FBQUEsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsd0JBQUFDLE1BQUEsR0FBQUEsTUFBQSxPQUFBQyxDQUFBLEdBQUFGLENBQUEsQ0FBQUcsUUFBQSxrQkFBQUMsQ0FBQSxHQUFBSixDQUFBLENBQUFLLFdBQUEsOEJBQUFDLEVBQUFOLENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsUUFBQUMsQ0FBQSxHQUFBTCxDQUFBLElBQUFBLENBQUEsQ0FBQU0sU0FBQSxZQUFBQyxTQUFBLEdBQUFQLENBQUEsR0FBQU8sU0FBQSxFQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsTUFBQSxDQUFBTCxDQUFBLENBQUFDLFNBQUEsVUFBQUssbUJBQUEsQ0FBQUgsQ0FBQSx1QkFBQVYsQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsUUFBQUUsQ0FBQSxFQUFBQyxDQUFBLEVBQUFHLENBQUEsRUFBQUksQ0FBQSxNQUFBQyxDQUFBLEdBQUFYLENBQUEsUUFBQVksQ0FBQSxPQUFBQyxDQUFBLEtBQUFGLENBQUEsS0FBQWIsQ0FBQSxLQUFBZ0IsQ0FBQSxFQUFBcEIsQ0FBQSxFQUFBcUIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFOLENBQUEsRUFBQU0sQ0FBQSxDQUFBQyxJQUFBLENBQUF2QixDQUFBLE1BQUFzQixDQUFBLFdBQUFBLEVBQUFyQixDQUFBLEVBQUFDLENBQUEsV0FBQU0sQ0FBQSxHQUFBUCxDQUFBLEVBQUFRLENBQUEsTUFBQUcsQ0FBQSxHQUFBWixDQUFBLEVBQUFtQixDQUFBLENBQUFmLENBQUEsR0FBQUYsQ0FBQSxFQUFBbUIsQ0FBQSxnQkFBQUMsRUFBQXBCLENBQUEsRUFBQUUsQ0FBQSxTQUFBSyxDQUFBLEdBQUFQLENBQUEsRUFBQVUsQ0FBQSxHQUFBUixDQUFBLEVBQUFILENBQUEsT0FBQWlCLENBQUEsSUFBQUYsQ0FBQSxLQUFBVixDQUFBLElBQUFMLENBQUEsR0FBQWdCLENBQUEsQ0FBQU8sTUFBQSxFQUFBdkIsQ0FBQSxVQUFBSyxDQUFBLEVBQUFFLENBQUEsR0FBQVMsQ0FBQSxDQUFBaEIsQ0FBQSxHQUFBcUIsQ0FBQSxHQUFBSCxDQUFBLENBQUFGLENBQUEsRUFBQVEsQ0FBQSxHQUFBakIsQ0FBQSxLQUFBTixDQUFBLFFBQUFJLENBQUEsR0FBQW1CLENBQUEsS0FBQXJCLENBQUEsTUFBQVEsQ0FBQSxHQUFBSixDQUFBLEVBQUFDLENBQUEsR0FBQUQsQ0FBQSxZQUFBQyxDQUFBLFdBQUFELENBQUEsTUFBQUEsQ0FBQSxNQUFBUixDQUFBLElBQUFRLENBQUEsT0FBQWMsQ0FBQSxNQUFBaEIsQ0FBQSxHQUFBSixDQUFBLFFBQUFvQixDQUFBLEdBQUFkLENBQUEsUUFBQUMsQ0FBQSxNQUFBVSxDQUFBLENBQUFDLENBQUEsR0FBQWhCLENBQUEsRUFBQWUsQ0FBQSxDQUFBZixDQUFBLEdBQUFJLENBQUEsT0FBQWMsQ0FBQSxHQUFBRyxDQUFBLEtBQUFuQixDQUFBLEdBQUFKLENBQUEsUUFBQU0sQ0FBQSxNQUFBSixDQUFBLElBQUFBLENBQUEsR0FBQXFCLENBQUEsTUFBQWpCLENBQUEsTUFBQU4sQ0FBQSxFQUFBTSxDQUFBLE1BQUFKLENBQUEsRUFBQWUsQ0FBQSxDQUFBZixDQUFBLEdBQUFxQixDQUFBLEVBQUFoQixDQUFBLGNBQUFILENBQUEsSUFBQUosQ0FBQSxhQUFBbUIsQ0FBQSxRQUFBSCxDQUFBLE9BQUFkLENBQUEscUJBQUFFLENBQUEsRUFBQVcsQ0FBQSxFQUFBUSxDQUFBLFFBQUFULENBQUEsWUFBQVUsU0FBQSx1Q0FBQVIsQ0FBQSxVQUFBRCxDQUFBLElBQUFLLENBQUEsQ0FBQUwsQ0FBQSxFQUFBUSxDQUFBLEdBQUFoQixDQUFBLEdBQUFRLENBQUEsRUFBQUwsQ0FBQSxHQUFBYSxDQUFBLEdBQUF4QixDQUFBLEdBQUFRLENBQUEsT0FBQVQsQ0FBQSxHQUFBWSxDQUFBLE1BQUFNLENBQUEsS0FBQVYsQ0FBQSxLQUFBQyxDQUFBLEdBQUFBLENBQUEsUUFBQUEsQ0FBQSxTQUFBVSxDQUFBLENBQUFmLENBQUEsUUFBQWtCLENBQUEsQ0FBQWIsQ0FBQSxFQUFBRyxDQUFBLEtBQUFPLENBQUEsQ0FBQWYsQ0FBQSxHQUFBUSxDQUFBLEdBQUFPLENBQUEsQ0FBQUMsQ0FBQSxHQUFBUixDQUFBLGFBQUFJLENBQUEsTUFBQVIsQ0FBQSxRQUFBQyxDQUFBLEtBQUFILENBQUEsWUFBQUwsQ0FBQSxHQUFBTyxDQUFBLENBQUFGLENBQUEsV0FBQUwsQ0FBQSxHQUFBQSxDQUFBLENBQUEwQixJQUFBLENBQUFuQixDQUFBLEVBQUFJLENBQUEsVUFBQWMsU0FBQSwyQ0FBQXpCLENBQUEsQ0FBQTJCLElBQUEsU0FBQTNCLENBQUEsRUFBQVcsQ0FBQSxHQUFBWCxDQUFBLENBQUE0QixLQUFBLEVBQUFwQixDQUFBLFNBQUFBLENBQUEsb0JBQUFBLENBQUEsS0FBQVIsQ0FBQSxHQUFBTyxDQUFBLENBQUFzQixNQUFBLEtBQUE3QixDQUFBLENBQUEwQixJQUFBLENBQUFuQixDQUFBLEdBQUFDLENBQUEsU0FBQUcsQ0FBQSxHQUFBYyxTQUFBLHVDQUFBcEIsQ0FBQSxnQkFBQUcsQ0FBQSxPQUFBRCxDQUFBLEdBQUFSLENBQUEsY0FBQUMsQ0FBQSxJQUFBaUIsQ0FBQSxHQUFBQyxDQUFBLENBQUFmLENBQUEsUUFBQVEsQ0FBQSxHQUFBVixDQUFBLENBQUF5QixJQUFBLENBQUF2QixDQUFBLEVBQUFlLENBQUEsT0FBQUUsQ0FBQSxrQkFBQXBCLENBQUEsSUFBQU8sQ0FBQSxHQUFBUixDQUFBLEVBQUFTLENBQUEsTUFBQUcsQ0FBQSxHQUFBWCxDQUFBLGNBQUFlLENBQUEsbUJBQUFhLEtB
29QUEsRUFBQTVCLENBQUEsRUFBQTJCLElBQUEsRUFBQVYsQ0FBQSxTQUFBaEIsQ0FBQSxFQUFBSSxDQUFBLEVBQUFFLENBQUEsUUFBQUksQ0FBQSxRQUFBUyxDQUFBLGdCQUFBVixVQUFBLGNBQUFvQixrQkFBQSxjQUFBQywyQkFBQSxLQUFBL0IsQ0FBQSxHQUFBWSxNQUFBLENBQUFvQixjQUFBLE1BQUF4QixDQUFBLE1BQUFMLENBQUEsSUFBQUgsQ0FBQSxDQUFBQSxDQUFBLElBQUFHLENBQUEsU0FBQVcsbUJBQUEsQ0FBQWQsQ0FBQSxPQUFBRyxDQUFBLGlDQUFBSCxDQUFBLEdBQUFXLENBQUEsR0FBQW9CLDBCQUFBLENBQUF0QixTQUFBLEdBQUFDLFNBQUEsQ0FBQUQsU0FBQSxHQUFBRyxNQUFBLENBQUFDLE1BQUEsQ0FBQUwsQ0FBQSxZQUFBTyxFQUFBaEIsQ0FBQSxXQUFBYSxNQUFBLENBQUFxQixjQUFBLEdBQUFyQixNQUFBLENBQUFxQixjQUFBLENBQUFsQyxDQUFBLEVBQUFnQywwQkFBQSxLQUFBaEMsQ0FBQSxDQUFBbUMsU0FBQSxHQUFBSCwwQkFBQSxFQUFBakIsbUJBQUEsQ0FBQWYsQ0FBQSxFQUFBTSxDQUFBLHlCQUFBTixDQUFBLENBQUFVLFNBQUEsR0FBQUcsTUFBQSxDQUFBQyxNQUFBLENBQUFGLENBQUEsR0FBQVosQ0FBQSxXQUFBK0IsaUJBQUEsQ0FBQXJCLFNBQUEsR0FBQXNCLDBCQUFBLEVBQUFqQixtQkFBQSxDQUFBSCxDQUFBLGlCQUFBb0IsMEJBQUEsR0FBQWpCLG1CQUFBLENBQUFpQiwwQkFBQSxpQkFBQUQsaUJBQUEsR0FBQUEsaUJBQUEsQ0FBQUssV0FBQSx3QkFBQXJCLG1CQUFBLENBQUFpQiwwQkFBQSxFQUFBMUIsQ0FBQSx3QkFBQVMsbUJBQUEsQ0FBQUgsQ0FBQSxHQUFBRyxtQkFBQSxDQUFBSCxDQUFBLEVBQUFOLENBQUEsZ0JBQUFTLG1CQUFBLENBQUFILENBQUEsRUFBQVIsQ0FBQSxpQ0FBQVcsbUJBQUEsQ0FBQUgsQ0FBQSw4REFBQXlCLFlBQUEsWUFBQU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O1FBQzNFLElBQU1DLElBQUksR0FBR0wsU0FBUyxDQUFDQyxVQUFVLElBQUF0RixNQUFBLENBQUlDLFlBQVksQ0FBQ0MsT0FBTyw4QkFBMkJxRixJQUFJLENBQUM7UUFFekYsSUFBSSxDQUFDRyxJQUFJLEVBQUU7VUFDUHhHLE9BQU8sQ0FBQzJDLElBQUksQ0FBQywwQ0FBMEMsQ0FBQztRQUM1RDtNQUNKLENBQUMsTUFBTTtRQUNIO1FBQ0EsSUFBSTtVQUNBOUIsS0FBSyxJQUFBQyxNQUFBLENBQUlDLFlBQVksQ0FBQ0MsT0FBTyw4QkFBMkI7WUFDcERDLE1BQU0sRUFBRSxNQUFNO1lBQ2RDLE9BQU8sRUFBRTtjQUNMLGNBQWMsRUFBRTtZQUNwQixDQUFDO1lBQ0R1RCxJQUFJLEVBQUVDLElBQUksQ0FBQ0MsU0FBUyxDQUFDbEUsSUFBSSxDQUFDO1lBQzFCZ0csU0FBUyxFQUFFO1VBQ2YsQ0FBQyxDQUFDLENBQUNDLEtBQUssQ0FBQyxVQUFBL0UsS0FBSyxFQUFJO1lBQ2QzQixPQUFPLENBQUMyQixLQUFLLENBQUMsd0JBQXdCLEVBQUVBLEtBQUssQ0FBQztVQUNsRCxDQUFDLENBQUM7UUFDTixDQUFDLENBQUMsT0FBT0EsS0FBSyxFQUFFO1VBQ1ozQixPQUFPLENBQUMyQixLQUFLLENBQUMsd0JBQXdCLEVBQUVBLEtBQUssQ0FBQztRQUNsRDtNQUNKO0lBQ0o7RUFBQztBQUFBLEtBR0w7QUFDQSxJQUFJLE9BQU9aLFlBQVksS0FBSyxXQUFXLEVBQUU7RUFDckMsSUFBSWxDLGVBQWUsQ0FBQyxDQUFDO0FBQ3pCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vd3AtcGx1Z2luLWV4aXQtaW50ZW50Ly4vcmVzb3VyY2VzL2pzL2Zyb250ZW5kLmpzP2ZhNTgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdjc3MvZnJvbnRlbmQuc2Nzcyc7XG5pbXBvcnQgTW9kYWwgZnJvbSAnLi9tb2RhbC5qcyc7XG5cbmNsYXNzIEV4aXRJbn
29RlbnRQb3B1cCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuaGFzVHJpZ2dlcmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMubW9kYWwgPSBudWxsO1xuICAgICAgICB0aGlzLmNvb2tpZU5hbWUgPSAnd3BfZXhpdF9pbnRlbnRfc2hvd24nO1xuICAgICAgICB0aGlzLmNvb2tpZUhvdXJzID0gMDsgLy8gZGVmYXVsdCB0byBzZXNzaW9uIGNvb2tpZVxuICAgICAgICB0aGlzLnNraXBDb29raWUgPSBmYWxzZTsgLy8gd2hldGhlciB0byBza2lwIGNvb2tpZSBjaGVja1xuICAgICAgICB0aGlzLnVzZVBhZ2VMb2FkT25seSA9IGZhbHNlOyAvLyB3aGV0aGVyIHRvIHNob3cgb25seSBvbmNlIHBlciBwYWdlIGxvYWRcbiAgICAgICAgdGhpcy51c2VTZXNzaW9uQ29va2llID0gZmFsc2U7IC8vIHdoZXRoZXIgdG8gdXNlIHNlc3Npb24gY29va2llXG5cbiAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgfVxuXG4gICAgYXN5bmMgaW5pdCgpIHtcbiAgICAgICAgLy8gT25seSBhY3RpdmF0ZSBvbiBkZXNrdG9wIGRldmljZXMgKOKJpSAxMDI0cHgpXG4gICAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDEwMjQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBGaXJzdCwgZmV0Y2ggc2V0dGluZ3MgdG8gZ2V0IGNvb2tpZSBkdXJhdGlvbiBhbmQgZW5hYmxlZCBzdGF0dXNcbiAgICAgICAgY29uc3Qgc2hvdWxkQ29udGludWUgPSBhd2FpdCB0aGlzLmZldGNoU2V0dGluZ3MoKTtcblxuICAgICAgICAvLyBFeGl0IGVhcmx5IGlmIHRoZSBvdmVybGF5IGlzIGRpc2FibGVkXG4gICAgICAgIGlmICghc2hvdWxkQ29udGludWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGlmIHdlIHNob3VsZCBzaG93IHRoZSBwb3B1cCAoY29va2llIGNoZWNrKVxuICAgICAgICAvLyBTa2lwIGNvb2tpZSBjaGVjayBpZiBkdXJhdGlvbiBpcyAxIChzaG93IGV2ZXJ5IHRpbWUpIG9yIDAgKHBhZ2UgbG9hZCBvbmx5KVxuICAgICAgICBjb25zdCBleGlzdGluZ0Nvb2tpZSA9IHRoaXMuZ2V0Q29va2llKHRoaXMuY29va2llTmFtZSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnNraXBDb29raWUgJiYgZXhpc3RpbmdDb29raWUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdFeGl0IEludGVudDogQ29va2llIGV4aXN0cywgbm90IHNob3dpbmcgb3ZlcmxheScpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2FpdCBmb3IgRE9NIHRvIGJlIHJlYWR5XG4gICAgICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCAoKSA9PiB0aGlzLnNldHVwRXZlbnRMaXN0ZW5lcnMoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldHVwRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGZldGNoU2V0dGluZ3MoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke3dwRXhpdEludGVudC5yZXN0VXJsfXNldHRpbmdzYCwge1xuICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEuc3VjY2VzcyAmJiBkYXRhLnNldHRpbmdzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBvdmVybGF5IGlzIGVuYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc2V0dGluZ3MuZ2VuZXJhbCAmJiAhZGF0YS5zZXR0aW5ncy5nZW5lcmFsLmVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEV4aXQgaW50ZW50IGlzIGRpc2FibGVkLCByZXR1cm4gZmFsc2UgdG8gcHJldmVudCBpbml0aWFsaXphdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc2V0dGluZ3MudHJpZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29va2llRHVyYXRpb24gPSBkYXRhLnNldHRpbmdzLnRyaWdnZXIuY29va2llX2R1cmF0aW9uO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29va2llRHVyYXRpb24gPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTaG93IGV2ZXJ5IHRpbWUgLSBza2lwIGNvb2tpZSBjaGVja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2tpcENvb2tpZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvb2tpZUR1cmF0aW9uID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25seSBvbmNlIHBlciBwYWdlIGxvYWQgLSBubyBjb29raWUsIGp1c3QgdXNlIEpTIGZsYWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNraXBDb29raWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXNlUGFnZUxvYWRPbmx5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29va2llRHVyYXRpb24gPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXNzaW9uIGNvb2tpZSAtIGV4cGlyZXMgd2hlbiBicm93c2VyIGNsb3Nlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXNlU2Vzc2lvbkNvb2tpZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb29raWVIb3VycyA9IDA7IC8vIDAgbWVhbnMgc2Vzc2lvbiBjb29raWUgaW4gc2V0Q29va2llXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkbid0IGhhcHBlbiB3aXRoIG5ldyBzZXR0aW5ncywgYnV0IGhhbmRsZSBpdCBhbnl3YXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvb2tpZUhvdXJzID0gY29va2llRHVyYXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgI
29H1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCBleGl0IGludGVudCBzZXR0aW5nczonLCBlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gQ29udGludWUgd2l0aCBkZWZhdWx0cyBpZiBmZXRjaCBmYWlsc1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0dXBFdmVudExpc3RlbmVycygpIHtcbiAgICAgICAgLy8gRXhpdCBpbnRlbnQgZGV0ZWN0aW9uIC0gbW91c2UgbGVhdmluZyB0aHJvdWdoIHRvcCBvZiB2aWV3cG9ydFxuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIChlKSA9PiB7XG4gICAgICAgICAgICAvLyBDaGVjayBpZiBtb3VzZSBpcyBsZWF2aW5nIHRoZSB2aWV3cG9ydCB0aHJvdWdoIHRoZSB0b3BcbiAgICAgICAgICAgIGlmIChlLmNsaWVudFkgPD0gMCAmJiBlLm1vdmVtZW50WSA8PSAwICYmICF0aGlzLmhhc1RyaWdnZXJlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlckV4aXRJbnRlbnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICBhc3luYyB0cmlnZ2VyRXhpdEludGVudCgpIHtcbiAgICAgICAgLy8gSWYgdXNpbmcgcGFnZSBsb2FkIG9ubHkgbW9kZSBhbmQgYWxyZWFkeSB0cmlnZ2VyZWQsIGRvbid0IHNob3cgYWdhaW5cbiAgICAgICAgaWYgKHRoaXMudXNlUGFnZUxvYWRPbmx5ICYmIHRoaXMuaGFzVHJpZ2dlcmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oYXNUcmlnZ2VyZWQgfHwgKHRoaXMubW9kYWwgJiYgdGhpcy5tb2RhbC5pc09wZW4pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhhc1RyaWdnZXJlZCA9IHRydWU7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIERldGVybWluZSB3aGljaCBlbmRwb2ludCB0byB1c2UgYmFzZWQgb24gd2hldGhlciB3ZSBoYXZlIGEgcGFnZSBJRFxuICAgICAgICAgICAgY29uc3QgZW5kcG9pbnQgPSB3cEV4aXRJbnRlbnQucGFnZUlkID4gMFxuICAgICAgICAgICAgICAgID8gYCR7d3BFeGl0SW50ZW50LnJlc3RVcmx9ZXhpdC1pbnRlbnQvZm9yLXBhZ2UvJHt3cEV4aXRJbnRlbnQucGFnZUlkfWBcbiAgICAgICAgICAgICAgICA6IGAke3dwRXhpdEludGVudC5yZXN0VXJsfWV4aXQtaW50ZW50L3JhbmRvbWA7XG5cbiAgICAgICAgICAgIC8vIEZldGNoIGV4aXQgaW50ZW50IGNvbnRlbnQgZnJvbSBSRVNUIEFQSVxuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChlbmRwb2ludCwge1xuICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCBleGl0IGludGVudCBjb250ZW50Jyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYSBcIm5vIG92ZXJsYXlcIiByZXNwb25zZSAoZXhwZWN0ZWQsIG5vdCBhbiBlcnJvcilcbiAgICAgICAgICAgIGlmIChkYXRhICYmIGRhdGEubm9fb3ZlcmxheSkge1xuICAgICAgICAgICAgICAgIC8vIE5vIG92ZXJsYXkgY29uZmlndXJlZCAtIHRoaXMgaXMgbm9ybWFsLCBqdXN0IHJldHVybiBzaWxlbnRseVxuICAgICAgICAgICAgICAgIGlmIChkYXRhLm1pc3Npbmdfb3ZlcmxheXMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdFeGl0IEludGVudDogU29tZSBzZWxlY3RlZCBvdmVybGF5cyBhcmUgbWlzc2luZycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChkYXRhICYmIGRhdGEuY29udGVudCkge1xuICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBtb2RhbCBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm1vZGFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9kYWwgPSBuZXcgTW9kYWwoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VPbk92ZXJsYXlDbGljazogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlT25Fc2NhcGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXQgdHJpZ2dlciBzdGF0ZSB3aGVuIG1vZGFsIGlzIGNsb3NlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgcmVzZXQgaWYgbm90IHVzaW5nIHNlc3Npb24gY29va2llcyBvciBwYWdlIGxvYWQgb25seSBtb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnVzZVBhZ2VMb2FkT25seSAmJiAhdGhpcy51c2VTZXNzaW9uQ29va2llKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzVHJpZ2dlcmVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBPcGVuIHRoZSBtb2RhbCB3aXRoIHRoZSBmZXRjaGVkIGNvbnRlbnRcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGFsLm9wZW4oZGF0YSk7XG5cbiAgICAgICAgICAgICAgICAvLyBUcmFjayB0aGUgdmlld1xuICAgICAgICAgICAgICAgIHRoaXMudHJhY2tWaWV3KGRhdGEuaWQpO1xuXG4gICAgICAgICAgICAgICAgLy8gU2V0dXAgY2xpY2sgdHJhY2tpbmcgZm9yIGxpbmtzIGluIHRoZSBtb2RhbFxuICAgICAgICAgICAgICAgI
29HRoaXMuc2V0dXBDbGlja1RyYWNraW5nKGRhdGEuaWQpO1xuXG4gICAgICAgICAgICAgICAgLy8gU2V0IGNvb2tpZSBiYXNlZCBvbiBtb2RlXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNraXBDb29raWUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gRm9yIHNlc3Npb24gbW9kZSBvciBhbnkgb3RoZXIgY29va2llLWJhc2VkIG1vZGVcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRDb29raWUodGhpcy5jb29raWVOYW1lLCAnMScsIHRoaXMuY29va2llSG91cnMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMudXNlUGFnZUxvYWRPbmx5KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEZvciBcInNob3cgZXZlcnkgdGltZVwiIG1vZGUgLSBkb24ndCBzZXQgY29va2llXG4gICAgICAgICAgICAgICAgICAgIC8vIChza2lwQ29va2llIGlzIHRydWUgYnV0IHVzZVBhZ2VMb2FkT25seSBpcyBmYWxzZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gRm9yIFwicGFnZSBsb2FkIG9ubHlcIiBtb2RlIC0gZG9uJ3Qgc2V0IGNvb2tpZVxuICAgICAgICAgICAgICAgIC8vIChib3RoIHNraXBDb29raWUgYW5kIHVzZVBhZ2VMb2FkT25seSBhcmUgdHJ1ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIE9ubHkgbG9nIGFjdHVhbCBlcnJvcnMgKG5vdCBcIm5vIG92ZXJsYXlcIiByZXNwb25zZXMpXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFeGl0IEludGVudCBFcnJvcjonLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIHNldENvb2tpZShuYW1lLCB2YWx1ZSwgaG91cnMpIHtcbiAgICAgICAgbGV0IGV4cGlyZXMgPSAnJztcblxuICAgICAgICBpZiAoaG91cnMgPT09IDApIHtcbiAgICAgICAgICAgIC8vIFNlc3Npb24gY29va2llIC0gbm8gZXhwaXJlcyBtZWFucyBpdCBleHBpcmVzIHdoZW4gYnJvd3NlciBjbG9zZXNcbiAgICAgICAgICAgIGV4cGlyZXMgPSAnJztcbiAgICAgICAgfSBlbHNlIGlmIChob3VycyA+IDApIHtcbiAgICAgICAgICAgIC8vIFNldCBleHBpcmF0aW9uIGRhdGVcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgZGF0ZS5zZXRUaW1lKGRhdGUuZ2V0VGltZSgpICsgKGhvdXJzICogNjAgKiA2MCAqIDEwMDApKTtcbiAgICAgICAgICAgIGV4cGlyZXMgPSBgZXhwaXJlcz0ke2RhdGUudG9VVENTdHJpbmcoKX07YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGAke25hbWV9PSR7dmFsdWV9OyR7ZXhwaXJlc31wYXRoPS87U2FtZVNpdGU9TGF4YDtcbiAgICB9XG5cbiAgICBnZXRDb29raWUobmFtZSkge1xuICAgICAgICBjb25zdCBuYW1lRVEgPSBgJHtuYW1lfT1gO1xuICAgICAgICBjb25zdCBjYSA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgYyA9IGNhW2ldO1xuICAgICAgICAgICAgd2hpbGUgKGMuY2hhckF0KDApID09PSAnICcpIHtcbiAgICAgICAgICAgICAgICBjID0gYy5zdWJzdHJpbmcoMSwgYy5sZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGMuaW5kZXhPZihuYW1lRVEpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGMuc3Vic3RyaW5nKG5hbWVFUS5sZW5ndGgsIGMubGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBhc3luYyB0cmFja1ZpZXcob3ZlcmxheUlkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBmZXRjaChgJHt3cEV4aXRJbnRlbnQucmVzdFVybH1leGl0LWludGVudC90cmFjay92aWV3YCwge1xuICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICBvdmVybGF5X2lkOiBvdmVybGF5SWQsXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VfaWQ6IHdwRXhpdEludGVudC5wYWdlSWQgPiAwID8gd3BFeGl0SW50ZW50LnBhZ2VJZCA6IG51bGxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gdHJhY2sgdmlldzonLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXR1cENsaWNrVHJhY2tpbmcob3ZlcmxheUlkKSB7XG4gICAgICAgIC8vIFdhaXQgZm9yIG1vZGFsIHRvIGJlIGluIERPTVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5leGl0LWludGVudC1tb2RhbCcpO1xuICAgICAgICAgICAgaWYgKCFtb2RhbEVsZW1lbnQpIHJldHVybjtcblxuICAgICAgICAgICAgLy8gVHJhY2sgY2xpY2tzIG9uIGFsbCBsaW5rcyBpbiB0aGUgbW9kYWxcbiAgICAgICAgICAgIGNvbnN0IGxpbmtzID0gbW9kYWxFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2EnKTtcbiAgICAgICAgICAgIGxpbmtzLmZvckVhY2gobGluayA9PiB7XG4gICAgICAgICAgICAgICAgbGluay5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbmtVcmwgPSBsaW5rLmhyZWYgfHwgJyc7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbmtUZXh0ID0gbGluay50ZXh0Q29udGVudD8udHJpbSgpIHx8IGxpbmsuaW5uZXJUZXh0Py50cmltKCkgfHwgJyc7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHNlbmRCZWFjb24gZm9yIHJlbGlhYmxlIHRyYWNraW5nIGJlZm9yZSBuYXZpZ2F0aW9uXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJhY2tDbGljayhvdmVybGF5SWQsIGxpbmtVcmwsIGxpbmtUZXh0KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgI
29H0pO1xuICAgICAgICB9LCAxMDApO1xuICAgIH1cblxuICAgIHRyYWNrQ2xpY2sob3ZlcmxheUlkLCBsaW5rVXJsID0gJycsIGxpbmtUZXh0ID0gJycpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgIG92ZXJsYXlfaWQ6IG92ZXJsYXlJZCxcbiAgICAgICAgICAgIHBhZ2VfaWQ6IHdwRXhpdEludGVudC5wYWdlSWQgPiAwID8gd3BFeGl0SW50ZW50LnBhZ2VJZCA6IG51bGwsXG4gICAgICAgICAgICBsaW5rX3VybDogbGlua1VybCxcbiAgICAgICAgICAgIGxpbmtfdGV4dDogbGlua1RleHRcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBVc2Ugc2VuZEJlYWNvbiBmb3IgcmVsaWFibGUgdHJhY2tpbmcgZXZlbiB3aGVuIHBhZ2UgaXMgdW5sb2FkaW5nXG4gICAgICAgIGlmIChuYXZpZ2F0b3Iuc2VuZEJlYWNvbikge1xuICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShkYXRhKV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nIH0pO1xuICAgICAgICAgICAgY29uc3Qgc2VudCA9IG5hdmlnYXRvci5zZW5kQmVhY29uKGAke3dwRXhpdEludGVudC5yZXN0VXJsfWV4aXQtaW50ZW50L3RyYWNrL2NsaWNrYCwgYmxvYik7XG5cbiAgICAgICAgICAgIGlmICghc2VudCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIHNlbmQgYmVhY29uIGZvciBjbGljayB0cmFja2luZycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gRmFsbGJhY2sgZm9yIGJyb3dzZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBzZW5kQmVhY29uXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZldGNoKGAke3dwRXhpdEludGVudC5yZXN0VXJsfWV4aXQtaW50ZW50L3RyYWNrL2NsaWNrYCwge1xuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShkYXRhKSxcbiAgICAgICAgICAgICAgICAgICAga2VlcGFsaXZlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gdHJhY2sgY2xpY2s6JywgZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gdHJhY2sgY2xpY2s6JywgZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBJbml0aWFsaXplIHdoZW4gRE9NIGlzIHJlYWR5XG5pZiAodHlwZW9mIHdwRXhpdEludGVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBuZXcgRXhpdEludGVudFBvcHVwKCk7XG59XG4iXSwibmFtZXMiOlsiZSIsInQiLCJyIiwiU3ltYm9sIiwibiIsIml0ZXJhdG9yIiwibyIsInRvU3RyaW5nVGFnIiwiaSIsImMiLCJwcm90b3R5cGUiLCJHZW5lcmF0b3IiLCJ1IiwiT2JqZWN0IiwiY3JlYXRlIiwiX3JlZ2VuZXJhdG9yRGVmaW5lMiIsImYiLCJwIiwieSIsIkciLCJ2IiwiYSIsImQiLCJiaW5kIiwibGVuZ3RoIiwibCIsIlR5cGVFcnJvciIsImNhbGwiLCJkb25lIiwidmFsdWUiLCJyZXR1cm4iLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwiZ2V0UHJvdG90eXBlT2YiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImRpc3BsYXlOYW1lIiwiX3JlZ2VuZXJhdG9yIiwidyIsIm0iLCJkZWZpbmVQcm9wZXJ0eSIsIl9yZWdlbmVyYXRvckRlZmluZSIsIl9pbnZva2UiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJfYXN5bmNUb0dlbmVyYXRvciIsImFyZ3VtZW50cyIsImFwcGx5IiwiX25leHQiLCJfdGhyb3ciLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydGllcyIsIl90b1Byb3BlcnR5S2V5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwiX3RvUHJpbWl0aXZlIiwiX3R5cGVvZiIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiTW9kYWwiLCJFeGl0SW50ZW50UG9wdXAiLCJoYXNUcmlnZ2VyZWQiLCJtb2RhbCIsImNvb2tpZU5hbWUiLCJjb29raWVIb3VycyIsInNraXBDb29raWUiLCJ1c2VQYWdlTG9hZE9ubHkiLCJ1c2VTZXNzaW9uQ29va2llIiwiaW5pdCIsIl9pbml0IiwiX2NhbGxlZSIsIl90aGlzIiwic2hvdWxkQ29udGludWUiLCJleGlzdGluZ0Nvb2tpZSIsIl9jb250ZXh0Iiwid2luZG93IiwiaW5uZXJXaWR0aCIsImZldGNoU2V0dGluZ3MiLCJnZXRDb29raWUiLCJjb25zb2xlIiwibG9nIiwiZG9jdW1lbnQiLCJyZWFkeVN0YXRlIiwiYWRkRXZlbnRMaXN0ZW5lciIsInNldHVwRXZlbnRMaXN0ZW5lcnMiLCJfZmV0Y2hTZXR0aW5ncyIsIl9jYWxsZWUyIiwicmVzcG9uc2UiLCJkYXRhIiwiY29va2llRHVyYXRpb24iLCJfdCIsIl9jb250ZXh0MiIsImZldGNoIiwiY29uY2F0Iiwid3BFeGl0SW50ZW50IiwicmVzdFVybCIsIm1ldGhvZCIsImhlYWRlcnMiLCJvayIsImpzb24iLCJzdWNjZXNzIiwic2V0dGluZ3MiLCJnZW5lcmFsIiwiZW5hYmxlZCIsInRyaWdnZXIiLCJjb29raWVfZHVyYXRpb24iLCJlcnJvciIsIl90aGlzMiIsImNsaWVudFkiLCJtb3ZlbWVudFkiLCJ0cmlnZ2VyRXhpdEludGVudCIsIl90cmlnZ2VyRXhpdEludGVudCIsIl9jYWxsZWUzIiwiX3RoaXMzIiwiZW5kcG9pbnQiLCJfdDIiLCJfY29udGV4dDMiLCJpc09wZW4iLCJwYWdlSWQiLCJFcnJvciIsIm5vX292ZXJsYXkiLCJtaXNzaW5nX292ZXJsYXlzIiwid2FybiIsImNvbnRlbnQiLCJjbG9zZU9uT3ZlcmxheUNsaWNrIiwiY2xvc2VPbkVzY2FwZSIsIm9uQ2xvc2UiLCJvcGVuIiwidHJhY2tWaWV3IiwiaWQiLCJzZXR1cENsaWNrVHJhY2tpbmciLCJzZXRDb29raWUiLCJuYW1lIiwiaG91cnMiLCJleHBpcmVzIiwiZGF0ZSIsIkRhdGUiLCJzZXRUaW1lIiwiZ2V0VGltZSIsInRvVVRDU3RyaW5nIiwiY29va2llIiwibmFtZUVRIiwiY2EiLCJzcGxpdCIsImNoYXJBdCIsInN1YnN0cmluZyIsImluZGV4T2YiLCJfdHJhY2tWaWV3IiwiX2NhbGxlZTQiLCJvdmVybGF5SWQiLCJfdDMiLCJfY29udGV4dDQiLCJib2R5IiwiSlNPTiIsInN0cmluZ2lmeSIsIm92ZXJsYXlfaWQiLCJwYWdlX2lkIiwiX3giLCJfdGhpczQiLCJzZXRUaW1lb3V0IiwibW9kYWxFbGVtZW50IiwicXVlcnlTZWxlY3RvciIsImxpbmtzIiwicXVlcnlTZWxlY3RvckFsbCIsImZvckVhY2giLCJsaW5rIiwiX2xpbmskdGV4dENvbnRlbnQiLCJfbGluayRpbm5lclRleHQiLCJsaW5rVXJsIiwiaHJlZiIsImxpbmtUZXh0IiwidGV4dENvbnRlbnQiLCJ0cmltIiwiaW5uZXJUZXh0IiwidHJhY2tDbGljayIsInVuZGVmaW5lZCIsImxpbmtfdXJsIiwibGlua190ZXh0IiwibmF2aWdhdG9yIiwic2VuZEJlYWNvbiIsImJsb2IiLCJCbG9iIiwidHlwZSIsInNlbnQiLCJrZWVwYWxpdmUiLCJjYXRjaCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/frontend.js\n\n}"); 30 31/***/ }), 32
33/***/ "./resources/js/modal.js": 34/*!*******************************!*\ 35 !*** ./resources/js/modal.js ***! 36 \*******************************/ 37/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 38 39eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ Modal; }\n/* harmony export */ });\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * Modal Element - A reusable modal component\n */\nvar Modal = /*#__PURE__*/function () {\n function Modal() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _classCallCheck(this, Modal);\n this.options = _objectSpread({\n closeOnOverlayClick: true,\n closeOnEscape: true,\n focusManagement: true,\n animationDuration: 300\n }, options);\n this.isOpen = false;\n this.modal = null;\n this.overlay = null;\n this.escHandler = null;\n this.onClose = options.onClose || function () {};\n }\n\n /**\n * Open the modal with provided content\n * @param {Object} data - Modal data\n * @param {string} data.title - Modal title\n * @param {string} data.content - Modal HTML content\n * @param {string} data.className - Additional CSS classes for modal\n */\n return _createClass(Modal, [{\n key: \"open\",\n value: function open(data) {\n if (this.isOpen) {\n return;\n }\n this.isOpen = true;\n this.createModal(data);\n this.attachEventListeners();\n this.show();\n }\n\n /**\n * Create the modal DOM structure\n */\n }, {\n key: \"createModal\",\n value: function createModal(data) {\n var _this = this;\n // Create overlay\n this.overlay = document.createElement('div');\n this.overlay.className = 'exit-intent-tailwind exit-intent-overlay';
39\n if (this.options.closeOnOverlayClick) {\n this.overlay.addEventListener('click', function (e) {\n if (e.target === _this.overlay) {\n _this.close();\n }\n });\n }\n\n // Create modal container\n this.modal = document.createElement('div');\n this.modal.className = \"exit-intent-modal \".concat(data.className || '');\n this.modal.setAttribute('role', 'dialog');\n this.modal.setAttribute('aria-modal', 'true');\n if (data.title) {\n this.modal.setAttribute('aria-labelledby', 'exit-intent-title');\n }\n\n // Create modal content wrapper\n var modalContent = document.createElement('div');\n modalContent.className = 'exit-intent-modal-content';\n\n // Create close button\n var closeButton = document.createElement('button');\n closeButton.className = 'exit-intent-close';\n closeButton.innerHTML = '×';\n closeButton.setAttribute('aria-label', 'Close popup');\n closeButton.addEventListener('click', function () {\n return _this.close();\n });\n\n // Create title if provided\n if (data.title) {\n var title = document.createElement('h1');\n title.id = 'exit-intent-title';\n title.className = 'exit-intent-title';\n title.textContent = data.title;\n modalContent.appendChild(title);\n }\n\n // Create content container\n var content = document.createElement('div');\n content.className = 'exit-intent-body';\n content.innerHTML = data.content;\n modalContent.appendChild(content);\n\n // Assemble modal\n this.modal.appendChild(closeButton);\n this.modal.appendChild(modalContent);\n this.overlay.appendChild(this.modal);\n document.body.appendChild(this.overlay);\n }\n\n /**\n * Attach event listeners for modal interaction\n */\n }, {\n key: \"attachEventListeners\",\n value: function attachEventListeners() {\n var _this2 = this;\n // Handle ESC key press\n if (this.options.closeOnEscape) {\n this.escHandler = function (e) {\n if (e.key === 'Escape') {\n _this2.close();\n }\n };\n document.addEventListener('keydown', this.escHandler);\n }\n }\n\n /**\n * Show the modal with animation\n */\n }, {\n key: \"show\",\n value: function show() {\n var _this3 = this;\n // Prevent body scroll\n document.body.style.overflow = 'hidden';\n\n // Trigger animation\n requestAnimationFrame(function () {\n _this3.overlay.classList.add('active');\n _this3.modal.classList.add('active');\n });\n\n // Focus management\n if (this.options.focusManagement) {\n this.modal.focus();\n }\n }\n\n /**\n * Close the modal\n */\n }, {\n key: \"close\",\n value: function close() {\n var _this4 = this;\n if (!this.isOpen) {\n return;\n }\n this.isOpen = false;\n\n // Animate out\n this.overlay.classList.remove('active');\n this.modal.classList.remove('active');\n\n // Clean up after animation\n setTimeout(function () {\n _this4.cleanup();\n }, this.options.animationDuration);\n\n // Call onClose callback\n this.onClose();\n }\n\n /**\n * Clean up modal elements and event listeners\n */\n }, {\n key: \"cleanup\",\n value: function cleanup() {\n // Remove DOM elements\n if (this.overlay && this.overlay.parentNode) {\n this.overlay.parentNode.removeChild(this.overlay);\n }\n this.overlay = null;\n this.modal = null;\n\n // Restore body scroll\n document.body.style.overflow = '';\n\n // Remove event listeners\n if (this.escHandler) {\n document.removeEventListener('keydown', this.escHandler);\n this.escHandler = null;\n }\n }\n\n /**\n * Destroy the modal instance\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n if (this.isOpen) {\n this.close();\n } else {\n this.cleanup();\n }\n }\n }]);\n}();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvbW9kYWwuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUZBLElBR3FCQSxLQUFLO0VBQ3RCLFNBQUFBLE1BQUEsRUFBMEI7SUFBQSxJQUFkQyxPQUFPLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0
39FBQSxNQUFHLENBQUMsQ0FBQztJQUFBRyxlQUFBLE9BQUFMLEtBQUE7SUFDcEIsSUFBSSxDQUFDQyxPQUFPLEdBQUFLLGFBQUE7TUFDUkMsbUJBQW1CLEVBQUUsSUFBSTtNQUN6QkMsYUFBYSxFQUFFLElBQUk7TUFDbkJDLGVBQWUsRUFBRSxJQUFJO01BQ3JCQyxpQkFBaUIsRUFBRTtJQUFHLEdBQ25CVCxPQUFPLENBQ2I7SUFFRCxJQUFJLENBQUNVLE1BQU0sR0FBRyxLQUFLO0lBQ25CLElBQUksQ0FBQ0MsS0FBSyxHQUFHLElBQUk7SUFDakIsSUFBSSxDQUFDQyxPQUFPLEdBQUcsSUFBSTtJQUNuQixJQUFJLENBQUNDLFVBQVUsR0FBRyxJQUFJO0lBQ3RCLElBQUksQ0FBQ0MsT0FBTyxHQUFHZCxPQUFPLENBQUNjLE9BQU8sSUFBSyxZQUFNLENBQUMsQ0FBRTtFQUNoRDs7RUFFQTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQU5JLE9BQUFDLFlBQUEsQ0FBQWhCLEtBQUE7SUFBQWlCLEdBQUE7SUFBQUMsS0FBQSxFQU9BLFNBQUFDLElBQUlBLENBQUNDLElBQUksRUFBRTtNQUNQLElBQUksSUFBSSxDQUFDVCxNQUFNLEVBQUU7UUFDYjtNQUNKO01BRUEsSUFBSSxDQUFDQSxNQUFNLEdBQUcsSUFBSTtNQUNsQixJQUFJLENBQUNVLFdBQVcsQ0FBQ0QsSUFBSSxDQUFDO01BQ3RCLElBQUksQ0FBQ0Usb0JBQW9CLENBQUMsQ0FBQztNQUMzQixJQUFJLENBQUNDLElBQUksQ0FBQyxDQUFDO0lBQ2Y7O0lBRUE7QUFDSjtBQUNBO0VBRkk7SUFBQU4sR0FBQTtJQUFBQyxLQUFBLEVBR0EsU0FBQUcsV0FBV0EsQ0FBQ0QsSUFBSSxFQUFFO01BQUEsSUFBQUksS0FBQTtNQUNkO01BQ0EsSUFBSSxDQUFDWCxPQUFPLEdBQUdZLFFBQVEsQ0FBQ0MsYUFBYSxDQUFDLEtBQUssQ0FBQztNQUM1QyxJQUFJLENBQUNiLE9BQU8sQ0FBQ2MsU0FBUyxHQUFHLDBDQUEwQztNQUVuRSxJQUFJLElBQUksQ0FB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NBQUNELEtBQUssR0FBRyxJQUFJOztNQUVqQjtNQUNBYSxRQUFRLENBQUNpQixJQUFJLENBQUNHLEtBQUssQ0FBQ0MsUUFBUSxHQUFHLEVBQUU7O01BRWpDO01BQ0EsSUFBSSxJQUFJLENBQUNoQyxVQUFVLEVBQUU7UUFDakJXLFFBQVEsQ0FBQ2dDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMzQyxVQUFVLENBQUM7UUFDeEQsSUFBSSxDQUFDQSxVQUFVLEdBQUcsSUFBSTtNQUMxQjtJQUNKOztJQUVBO0FBQ0o7QUFDQTtFQUZJO0lBQUFHLEdBQUE7SUFBQUMsS0FBQSxFQUdBLFNBQUF3QyxPQUFPQSxDQUFBLEVBQUc7TUFDTixJQUFJLElBQUksQ0FBQy9DLE1BQU0sRUFBRTtRQUNiLElBQUksQ0FBQ29CLEtBQUssQ0FBQyxDQUFDO01BQ2hCLENBQUMsTUFBTTtRQUNILElBQUksQ0FBQ3VCLE9BQU8sQ0FBQyxDQUFDO01BQ2xCO0lBQ0o7RUFBQztBQUFBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vd3AtcGx1Z2luLWV4aXQtaW50ZW50Ly4vcmVzb3VyY2VzL2pzL21vZGFsLmpzPzczYWEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNb2RhbCBFbGVtZW50IC0gQSByZXVzYWJsZSBtb2RhbCBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTW9kYWwge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSB7fSkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICAgICAgICBjbG9zZU9uT3ZlcmxheUNsaWNrOiB0cnVlLFxuICAgICAgICAgICAgY2xvc2VPbkVzY2FwZTogdHJ1ZSxcbiAgICAgICAgICAgIGZvY3VzTWFuYWdlbWVudDogdHJ1ZSxcbiAgICAgICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uOiAzMDAsXG4gICAgICAgICAgICAuLi5vcHRpb25zXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tb2RhbCA9IG51bGw7XG4gICAgICAgIHRoaXMub3ZlcmxheSA9IG51bGw7XG4gICAgICAgIHRoaXMuZXNjSGFuZGxlciA9IG51bGw7XG4gICAgICAgIHRoaXMub25DbG9zZSA9IG9wdGlvbnMub25DbG9zZSB8fCAoKCkgPT4ge30pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW4gdGhlIG1vZGFsIHdpdGggcHJvdmlkZWQgY29udGVudFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhIC0gTW9kYWwgZGF0YVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhLnRpdGxlIC0gTW9kYWwgdGl0bGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YS5jb250ZW50IC0gTW9kYWwgSFRNTCBjb250ZW50XG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGEuY2xhc3NOYW1lIC0gQWRkaXRpb25hbCBDU1MgY2xhc3NlcyBmb3IgbW9kYWxcbiAgICAgKi9cbiAgICBvcGVuKGRhdGEpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgI
39H1cblxuICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICAgIHRoaXMuY3JlYXRlTW9kYWwoZGF0YSk7XG4gICAgICAgIHRoaXMuYXR0YWNoRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIHRoZSBtb2RhbCBET00gc3RydWN0dXJlXG4gICAgICovXG4gICAgY3JlYXRlTW9kYWwoZGF0YSkge1xuICAgICAgICAvLyBDcmVhdGUgb3ZlcmxheVxuICAgICAgICB0aGlzLm92ZXJsYXkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgdGhpcy5vdmVybGF5LmNsYXNzTmFtZSA9ICdleGl0LWludGVudC10YWlsd2luZCBleGl0LWludGVudC1vdmVybGF5JztcblxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmNsb3NlT25PdmVybGF5Q2xpY2spIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0ID09PSB0aGlzLm92ZXJsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIG1vZGFsIGNvbnRhaW5lclxuICAgICAgICB0aGlzLm1vZGFsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHRoaXMubW9kYWwuY2xhc3NOYW1lID0gYGV4aXQtaW50ZW50LW1vZGFsICR7ZGF0YS5jbGFzc05hbWUgfHwgJyd9YDtcbiAgICAgICAgdGhpcy5tb2RhbC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnZGlhbG9nJyk7XG4gICAgICAgIHRoaXMubW9kYWwuc2V0QXR0cmlidXRlKCdhcmlhLW1vZGFsJywgJ3RydWUnKTtcblxuICAgICAgICBpZiAoZGF0YS50aXRsZSkge1xuICAgICAgICAgICAgdGhpcy5tb2RhbC5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScsICdleGl0LWludGVudC10aXRsZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIG1vZGFsIGNvbnRlbnQgd3JhcHBlclxuICAgICAgICBjb25zdCBtb2RhbENvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgbW9kYWxDb250ZW50LmNsYXNzTmFtZSA9ICdleGl0LWludGVudC1tb2RhbC1jb250ZW50JztcblxuICAgICAgICAvLyBDcmVhdGUgY2xvc2UgYnV0dG9uXG4gICAgICAgIGNvbnN0IGNsb3NlQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG4gICAgICAgIGNsb3NlQnV0dG9uLmNsYXNzTmFtZSA9ICdleGl0LWludGVudC1jbG9zZSc7XG4gICAgICAgIGNsb3NlQnV0dG9uLmlubmVySFRNTCA9ICcmdGltZXM7JztcbiAgICAgICAgY2xvc2VCdXR0b24uc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgJ0Nsb3NlIHBvcHVwJyk7XG4gICAgICAgIGNsb3NlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5jbG9zZSgpKTtcblxuICAgICAgICAvLyBDcmVhdGUgdGl0bGUgaWYgcHJvdmlkZWRcbiAgICAgICAgaWYgKGRhdGEudGl0bGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaDEnKTtcbiAgICAgICAgICAgIHRpdGxlLmlkID0gJ2V4aXQtaW50ZW50LXRpdGxlJztcbiAgICAgICAgICAgIHRpdGxlLmNsYXNzTmFtZSA9ICdleGl0LWludGVudC10aXRsZSc7XG4gICAgICAgICAgICB0aXRsZS50ZXh0Q29udGVudCA9IGRhdGEudGl0bGU7XG4gICAgICAgICAgICBtb2RhbENvbnRlbnQuYXBwZW5kQ2hpbGQodGl0bGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIGNvbnRlbnQgY29udGFpbmVyXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgY29udGVudC5jbGFzc05hbWUgPSAnZXhpdC1pbnRlbnQtYm9keSc7XG4gICAgICAgIGNvbnRlbnQuaW5uZXJIVE1MID0gZGF0YS5jb250ZW50O1xuICAgICAgICBtb2RhbENvbnRlbnQuYXBwZW5kQ2hpbGQoY29udGVudCk7XG5cbiAgICAgICAgLy8gQXNzZW1ibGUgbW9kYWxcbiAgICAgICAgdGhpcy5tb2RhbC5hcHBlbmRDaGlsZChjbG9zZUJ1dHRvbik7XG4gICAgICAgIHRoaXMubW9kYWwuYXBwZW5kQ2hpbGQobW9kYWxDb250ZW50KTtcbiAgICAgICAgdGhpcy5vdmVybGF5LmFwcGVuZENoaWxkKHRoaXMubW9kYWwpO1xuICAgICAgICBkb2
39N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMub3ZlcmxheSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXR0YWNoIGV2ZW50IGxpc3RlbmVycyBmb3IgbW9kYWwgaW50ZXJhY3Rpb25cbiAgICAgKi9cbiAgICBhdHRhY2hFdmVudExpc3RlbmVycygpIHtcbiAgICAgICAgLy8gSGFuZGxlIEVTQyBrZXkgcHJlc3NcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5jbG9zZU9uRXNjYXBlKSB7XG4gICAgICAgICAgICB0aGlzLmVzY0hhbmRsZXIgPSAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5lc2NIYW5kbGVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3cgdGhlIG1vZGFsIHdpdGggYW5pbWF0aW9uXG4gICAgICovXG4gICAgc2hvdygpIHtcbiAgICAgICAgLy8gUHJldmVudCBib2R5IHNjcm9sbFxuICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG5cbiAgICAgICAgLy8gVHJpZ2dlciBhbmltYXRpb25cbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheS5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTtcbiAgICAgICAgICAgIHRoaXMubW9kYWwuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEZvY3VzIG1hbmFnZW1lbnRcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5mb2N1c01hbmFnZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMubW9kYWwuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIHRoZSBtb2RhbFxuICAgICAqL1xuICAgIGNsb3NlKCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuXG4gICAgICAgIC8vIEFuaW1hdGUgb3V0XG4gICAgICAgIHRoaXMub3ZlcmxheS5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTtcbiAgICAgICAgdGhpcy5tb2RhbC5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTtcblxuICAgICAgICAvLyBDbGVhbiB1cCBhZnRlciBhbmltYXRpb25cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNsZWFudXAoKTtcbiAgICAgICAgfSwgdGhpcy5vcHRpb25zLmFuaW1hdGlvbkR1cmF0aW9uKTtcblxuICAgICAgICAvLyBDYWxsIG9uQ2xvc2UgY2FsbGJhY2tcbiAgICAgICAgdGhpcy5vbkNsb3NlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xlYW4gdXAgbW9kYWwgZWxlbWVudHMgYW5kIGV2ZW50IGxpc3RlbmVyc1xuICAgICAqL1xuICAgIGNsZWFudXAoKSB7XG4gICAgICAgIC8vIFJlbW92ZSBET00gZWxlbWVudHNcbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheSAmJiB0aGlzLm92ZXJsYXkucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5vdmVybGF5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub3ZlcmxheSA9IG51bGw7XG4gICAgICAgIHRoaXMubW9kYWwgPSBudWxsO1xuXG4gICAgICAgIC8vIFJlc3RvcmUgYm9keSBzY3JvbGxcbiAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICcnO1xuXG4gICAgICAgIC8vIFJlbW92ZSBldmVudCBsaXN0ZW5lcnNcbiAgICAgICAgaWYgKHRoaXMuZXNjSGFuZGxlcikge1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuZXNjSGFuZGxlcik7XG4gICAgICAgICAgICB0aGlzLmVzY0hhbmRsZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVzdHJveSB0aGUgbW9kYWwgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBkZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYW51cCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbIk1vZGFsIiwib3B0aW9ucyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsIl9jbGFzc0NhbGxDaGVjayIsIl9vYmplY3RTcHJlYWQiLCJjbG9zZU9uT3ZlcmxheUNsaWNrIiwiY2xvc2VPbkVzY2FwZSIsImZvY3VzTWFuYWdlbWVudCIsImFuaW1hdGlvbkR1cmF0aW9uIiwiaXNPcGVuIiwibW9kYWwiLCJvdmVybGF5IiwiZXNjSGFuZGxlciIsIm9uQ2xvc2UiLCJfY3JlYXRlQ2xhc3MiLCJrZXkiLCJ2YWx1ZSIsIm9wZW4iLCJkYXRhIiwiY3JlYXRlTW9kYWwiLCJhdHRhY2hFdmVudExpc3RlbmVycyIsInNob3ciLCJfdGhpcyIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJlIiwidGFyZ2V0IiwiY2xvc2UiLCJjb25jYXQiLCJzZXRBdHRyaWJ1dGUiLCJ0aXRsZSIsIm1vZGFsQ29udGVudCIsImNsb3NlQnV0dG9uIiwiaW5uZXJIVE1MIiwiaWQiLCJ0ZXh0Q29udGVudCIsImFwcGVuZENoaWxkIiwiY29udGVudCIsImJvZHkiLCJfdGhpczIiLCJfdGhpczMiLCJzdHlsZSIsIm92ZXJmbG93IiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY2xhc3NMaXN0IiwiYWRkIiwiZm9jdXMiLCJfdGhpczQiLCJyZW1vdmUiLCJzZXRUaW1lb3V0IiwiY2xlYW51cCIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJkZXN0cm95IiwiZGVmYXVsdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/modal.js\n\n}"); 40 41/***/ })
vendor: 2,590 bytes, lines 41-106
41 42 43/******/ }); 44/************************************************************************/ 45/******/ // The module cache 46/******/ var __webpack_module_cache__ = {}; 47/******/ 48/******/ // The require function 49/******/ function __webpack_require__(moduleId) { 50/******/ // Check if module is in cache 51/******/ var cachedModule = __webpack_module_cache__[moduleId]; 52/******/ if (cachedModule !== undefined) { 53/******/ return cachedModule.exports; 54/******/ } 55/******/ // Create a new module (and put it into the cache) 56/******/ var module = __webpack_module_cache__[moduleId] = { 57/******/ // no module.id needed 58/******/ // no module.loaded needed 59/******/ exports: {} 60/******/ }; 61/******/ 62/******/ // Execute the module function 63/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); 64/******/ 65/******/ // Return the exports of the module 66/******/ return module.exports; 67/******/ } 68/******/ 69/************************************************************************/ 70/******/ /* webpack/runtime/define property getters */ 71/******/ !function() { 72/******/ // define getter functions for harmony exports 73/******/ __webpack_require__.d = function(exports, definition) { 74/******/ for(var key in definition) { 75/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { 76/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); 77/******/ } 78/******/ } 79/******/ }; 80/******/ }(); 81/******/ 82/******/ /* webpack/runtime/hasOwnProperty shorthand */ 83/******/ !function() { 84/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } 85/******/ }(); 86/******/ 87/******/ /* webpack/runtime/make namespace object */ 88/******/ !function() { 89/******/ // define __esModule on exports 90/******/ __webpack_require__.r = function(exports) { 91/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 92/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 93/******/ } 94/******/ Object.defineProperty(exports, '__esModule', { value: true }); 95/******/ }; 96/******/ }(); 97/******/ 98/************************************************************************/ 99/******/ 100/******/ // startup 101/******/ // Load entry module and return exports 102/******/ // This entry module can't be inlined because the eval-source-map devtool is used. 103/******/ var __webpack_exports__ = __webpack_require__("./resources/js/frontend.js"); 104/******/ 105/******/ })() 106;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.