/* * ATTENTION: An "eval-source-map" devtool has been used. * This devtool is neither made for production nor for readable output files. * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) * or disable the default devtool with "devtool: false". * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). */ (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([["main"],{ /***/ "../../node_modules/@swc/helpers/lib/_async_to_generator.js": /*!******************************************************************!*\ !*** ../../node_modules/@swc/helpers/lib/_async_to_generator.js ***! \******************************************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return _asyncToGenerator;\n }\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}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL0Bzd2MvaGVscGVycy9saWIvX2FzeW5jX3RvX2dlbmVyYXRvci5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLDJDQUEwQztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uLy4uL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvbGliL19hc3luY190b19nZW5lcmF0b3IuanM/M2JkZSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlZmF1bHRcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yO1xuICAgIH1cbn0pO1xuZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTtcbiAgICAgICAgdmFyIHZhbHVlID0gaW5mby52YWx1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKF9uZXh0LCBfdGhyb3cpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXMsIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHZhciBnZW4gPSBmbi5hcHBseShzZWxmLCBhcmdzKTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9uZXh0KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gX3Rocm93KGVycikge1xuICAgICAgICAgICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX25leHQodW5kZWZpbmVkKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../node_modules/@swc/helpers/lib/_async_to_generator.js\n")); /***/ }), /***/ "../../node_modules/@swc/helpers/lib/_extends.js": /*!*******************************************************!*\ !*** ../../node_modules/@swc/helpers/lib/_extends.js ***! \*******************************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return _extends;\n }\n}));\nfunction extends_() {\n extends_ = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return extends_.apply(this, arguments);\n}\nfunction _extends() {\n return extends_.apply(this, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL0Bzd2MvaGVscGVycy9saWIvX2V4dGVuZHMuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRiwyQ0FBMEM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRjtBQUNBO0FBQ0EsdUJBQXVCLHNCQUFzQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi8uLi9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2xpYi9fZXh0ZW5kcy5qcz80NTNkIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGVmYXVsdFwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2V4dGVuZHM7XG4gICAgfVxufSk7XG5mdW5jdGlvbiBleHRlbmRzXygpIHtcbiAgICBleHRlbmRzXyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odGFyZ2V0KSB7XG4gICAgICAgIGZvcih2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspe1xuICAgICAgICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvcih2YXIga2V5IGluIHNvdXJjZSl7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9O1xuICAgIHJldHVybiBleHRlbmRzXy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gICAgcmV0dXJuIGV4dGVuZHNfLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../node_modules/@swc/helpers/lib/_extends.js\n")); /***/ }), /***/ "../../node_modules/@swc/helpers/lib/_interop_require_default.js": /*!***********************************************************************!*\ !*** ../../node_modules/@swc/helpers/lib/_interop_require_default.js ***! \***********************************************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return _interopRequireDefault;\n }\n}));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL0Bzd2MvaGVscGVycy9saWIvX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0LmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsMkNBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi4vLi4vbm9kZV9tb2R1bGVzL0Bzd2MvaGVscGVycy9saWIvX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0LmpzPzk0YTgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkZWZhdWx0XCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0O1xuICAgIH1cbn0pO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHtcbiAgICByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDoge1xuICAgICAgICBkZWZhdWx0OiBvYmpcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../node_modules/@swc/helpers/lib/_interop_require_default.js\n")); /***/ }), /***/ "../../node_modules/@swc/helpers/lib/_interop_require_wildcard.js": /*!************************************************************************!*\ !*** ../../node_modules/@swc/helpers/lib/_interop_require_wildcard.js ***! \************************************************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return _interopRequireWildcard;\n }\n}));\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL0Bzd2MvaGVscGVycy9saWIvX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLDJDQUEwQztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uLy4uL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvbGliL19pbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmQuanM/Nzc3ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlZmF1bHRcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkO1xuICAgIH1cbn0pO1xuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7XG4gICAgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsO1xuICAgIHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7XG4gICAgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpO1xuICAgIHJldHVybiAoX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7XG4gICAgICAgIHJldHVybiBub2RlSW50ZXJvcCA/IGNhY2hlTm9kZUludGVyb3AgOiBjYWNoZUJhYmVsSW50ZXJvcDtcbiAgICB9KShub2RlSW50ZXJvcCk7XG59XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7XG4gICAgaWYgKCFub2RlSW50ZXJvcCAmJiBvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgICAgIH07XG4gICAgfVxuICAgIHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCk7XG4gICAgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7XG4gICAgICAgIHJldHVybiBjYWNoZS5nZXQob2JqKTtcbiAgICB9XG4gICAgdmFyIG5ld09iaiA9IHt9O1xuICAgIHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbiAgICBmb3IodmFyIGtleSBpbiBvYmope1xuICAgICAgICBpZiAoa2V5ICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgICAgICB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDtcbiAgICAgICAgICAgIGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdPYmpba2V5XSA9IG9ialtrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIG5ld09iai5kZWZhdWx0ID0gb2JqO1xuICAgIGlmIChjYWNoZSkge1xuICAgICAgICBjYWNoZS5zZXQob2JqLCBuZXdPYmopO1xuICAgIH1cbiAgICByZXR1cm4gbmV3T2JqO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../node_modules/@swc/helpers/lib/_interop_require_wildcard.js\n")); /***/ }), /***/ "../../node_modules/@swc/helpers/lib/_object_without_properties_loose.js": /*!*******************************************************************************!*\ !*** ../../node_modules/@swc/helpers/lib/_object_without_properties_loose.js ***! \*******************************************************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return _objectWithoutPropertiesLoose;\n }\n}));\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL0Bzd2MvaGVscGVycy9saWIvX29iamVjdF93aXRob3V0X3Byb3BlcnRpZXNfbG9vc2UuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRiwyQ0FBMEM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSx1QkFBdUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi8uLi9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2xpYi9fb2JqZWN0X3dpdGhvdXRfcHJvcGVydGllc19sb29zZS5qcz83N2Q0Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGVmYXVsdFwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2U7XG4gICAgfVxufSk7XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7XG4gICAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gICAgdmFyIHRhcmdldCA9IHt9O1xuICAgIHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgICB2YXIga2V5LCBpO1xuICAgIGZvcihpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspe1xuICAgICAgICBrZXkgPSBzb3VyY2VLZXlzW2ldO1xuICAgICAgICBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlO1xuICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../node_modules/@swc/helpers/lib/_object_without_properties_loose.js\n")); /***/ }), /***/ "../../node_modules/next/dist/build/polyfills/polyfill-module.js": /*!***********************************************************************!*\ !*** ../../node_modules/next/dist/build/polyfills/polyfill-module.js ***! \***********************************************************************/ /***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { eval(__webpack_require__.ts("\"trimStart\"in String.prototype||(String.prototype.trimStart=String.prototype.trimLeft),\"trimEnd\"in String.prototype||(String.prototype.trimEnd=String.prototype.trimRight),\"description\"in Symbol.prototype||Object.defineProperty(Symbol.prototype,\"description\",{configurable:!0,get:function(){var t=/\\((.*)\\)/.exec(this.toString());return t?t[1]:void 0}}),Array.prototype.flat||(Array.prototype.flat=function(t,r){return r=this.concat.apply([],this),t>1&&r.some(Array.isArray)?r.flat(t-1):r},Array.prototype.flatMap=function(t,r){return this.map(t,r).flat()}),Promise.prototype.finally||(Promise.prototype.finally=function(t){if(\"function\"!=typeof t)return this.then(t,t);var r=this.constructor||Promise;return this.then(function(o){return r.resolve(t()).then(function(){return o})},function(o){return r.resolve(t()).then(function(){throw o})})}),Object.fromEntries||(Object.fromEntries=function(t){return Array.from(t).reduce(function(t,r){return t[r[0]]=r[1],t},{})});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC9wb2x5ZmlsbHMvcG9seWZpbGwtbW9kdWxlLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFBLG1RQUFtUSwrQkFBK0IsdUNBQXVDLHNCQUFzQiw0REFBNEQsNkVBQTZFLHVDQUF1Qyw0QkFBNEIsb0VBQW9FLDhDQUE4QyxnQ0FBZ0MsNkJBQTZCLHNDQUFzQyxTQUFTLEVBQUUsYUFBYSxzQ0FBc0MsUUFBUSxFQUFFLEVBQUUsc0RBQXNELDBDQUEwQyxzQkFBc0IsR0FBRyxFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3BvbHlmaWxscy9wb2x5ZmlsbC1tb2R1bGUuanM/Y2UzYSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInRyaW1TdGFydFwiaW4gU3RyaW5nLnByb3RvdHlwZXx8KFN0cmluZy5wcm90b3R5cGUudHJpbVN0YXJ0PVN0cmluZy5wcm90b3R5cGUudHJpbUxlZnQpLFwidHJpbUVuZFwiaW4gU3RyaW5nLnByb3RvdHlwZXx8KFN0cmluZy5wcm90b3R5cGUudHJpbUVuZD1TdHJpbmcucHJvdG90eXBlLnRyaW1SaWdodCksXCJkZXNjcmlwdGlvblwiaW4gU3ltYm9sLnByb3RvdHlwZXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KFN5bWJvbC5wcm90b3R5cGUsXCJkZXNjcmlwdGlvblwiLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQ9L1xcKCguKilcXCkvLmV4ZWModGhpcy50b1N0cmluZygpKTtyZXR1cm4gdD90WzFdOnZvaWQgMH19KSxBcnJheS5wcm90b3R5cGUuZmxhdHx8KEFycmF5LnByb3RvdHlwZS5mbGF0PWZ1bmN0aW9uKHQscil7cmV0dXJuIHI9dGhpcy5jb25jYXQuYXBwbHkoW10sdGhpcyksdD4xJiZyLnNvbWUoQXJyYXkuaXNBcnJheSk/ci5mbGF0KHQtMSk6cn0sQXJyYXkucHJvdG90eXBlLmZsYXRNYXA9ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5tYXAodCxyKS5mbGF0KCl9KSxQcm9taXNlLnByb3RvdHlwZS5maW5hbGx5fHwoUHJvbWlzZS5wcm90b3R5cGUuZmluYWxseT1mdW5jdGlvbih0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0KXJldHVybiB0aGlzLnRoZW4odCx0KTt2YXIgcj10aGlzLmNvbnN0cnVjdG9yfHxQcm9taXNlO3JldHVybiB0aGlzLnRoZW4oZnVuY3Rpb24obyl7cmV0dXJuIHIucmVzb2x2ZSh0KCkpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gb30pfSxmdW5jdGlvbihvKXtyZXR1cm4gci5yZXNvbHZlKHQoKSkudGhlbihmdW5jdGlvbigpe3Rocm93IG99KX0pfSksT2JqZWN0LmZyb21FbnRyaWVzfHwoT2JqZWN0LmZyb21FbnRyaWVzPWZ1bmN0aW9uKHQpe3JldHVybiBBcnJheS5mcm9tKHQpLnJlZHVjZShmdW5jdGlvbih0LHIpe3JldHVybiB0W3JbMF1dPXJbMV0sdH0se30pfSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/build/polyfills/polyfill-module.js\n")); /***/ }), /***/ "../../node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js": /*!************************************************************************************!*\ !*** ../../node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js ***! \************************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { eval(__webpack_require__.ts("var __dirname = \"/\";\n(function(){\"use strict\";var e={876:function(e,t){Object.defineProperty(t,\"__esModule\",{value:true});t.patchConsoleError=patchConsoleError;t.hydrationErrorComponentStack=t.hydrationErrorWarning=void 0;let r;t.hydrationErrorWarning=r;let n;t.hydrationErrorComponentStack=n;const a=new Set(['Warning: Text content did not match. Server: \"%s\" Client: \"%s\"%s',\"Warning: Expected server HTML to contain a matching <%s> in <%s>.%s\",'Warning: Expected server HTML to contain a matching text node for \"%s\" in <%s>.%s',\"Warning: Did not expect server HTML to contain a <%s> in <%s>.%s\",'Warning: Did not expect server HTML to contain the text node \"%s\" in <%s>.%s']);function patchConsoleError(){const e=console.error;console.error=function(o,i,l,s){if(a.has(o)){t.hydrationErrorWarning=r=o.replace(\"%s\",i).replace(\"%s\",l).replace(\"%s\",\"\");t.hydrationErrorComponentStack=n=s}e.apply(console,arguments)}}if((typeof t.default===\"function\"||typeof t.default===\"object\"&&t.default!==null)&&typeof t.default.__esModule===\"undefined\"){Object.defineProperty(t.default,\"__esModule\",{value:true});Object.assign(t.default,t);e.exports=t.default}},659:function(e,t){Object.defineProperty(t,\"__esModule\",{value:true});t.parseComponentStack=parseComponentStack;function parseComponentStack(e){const t=[];for(const n of e.trim().split(\"\\n\")){const e=/at ([^ ]+)( \\((.*)\\))?/.exec(n);if(e==null?void 0:e[1]){const n=e[1];const a=e[3];if(a==null?void 0:a.includes(\"next/dist\")){break}const o=a==null?void 0:a.replace(/^(webpack-internal:\\/\\/\\/|file:\\/\\/)(\\(.*\\)\\/)?/,\"\");var r;const[i,l,s]=(r=o==null?void 0:o.split(\":\"))!=null?r:[];t.push({component:n,file:i,lineNumber:l?Number(l):undefined,column:s?Number(s):undefined})}}return t}if((typeof t.default===\"function\"||typeof t.default===\"object\"&&t.default!==null)&&typeof t.default.__esModule===\"undefined\"){Object.defineProperty(t.default,\"__esModule\",{value:true});Object.assign(t.default,t);e.exports=t.default}}};var t={};function __nccwpck_require__(r){var n=t[r];if(n!==undefined){return n.exports}var a=t[r]={exports:{}};var o=true;try{e[r](a,a.exports,__nccwpck_require__);o=false}finally{if(o)delete t[r]}return a.exports}!function(){__nccwpck_require__.n=function(e){var t=e&&e.__esModule?function(){return e[\"default\"]}:function(){return e};__nccwpck_require__.d(t,{a:t});return t}}();!function(){__nccwpck_require__.d=function(e,t){for(var r in t){if(__nccwpck_require__.o(t,r)&&!__nccwpck_require__.o(e,r)){Object.defineProperty(e,r,{enumerable:true,get:t[r]})}}}}();!function(){__nccwpck_require__.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}();!function(){__nccwpck_require__.r=function(e){if(typeof Symbol!==\"undefined\"&&Symbol.toStringTag){Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"})}Object.defineProperty(e,\"__esModule\",{value:true})}}();if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var r={};!function(){__nccwpck_require__.r(r);__nccwpck_require__.d(r,{ReactDevOverlay:function(){return Zt},getErrorByType:function(){return getErrorByType},getServerError:function(){return getServerError},onBeforeRefresh:function(){return onBeforeRefresh},onBuildError:function(){return onBuildError},onBuildOk:function(){return onBuildOk},onRefresh:function(){return onRefresh},register:function(){return register},unregister:function(){return unregister}});const e=\"build-ok\";const t=\"build-error\";const n=\"fast-refresh\";const a=\"before-fast-refresh\";const o=\"unhandled-error\";const i=\"unhandled-rejection\";let l=new Set;let s=[];function drain(){setTimeout((function(){while(Boolean(s.length)&&Boolean(l.size)){const e=s.shift();l.forEach((t=>t(e)))}}),1)}function emit(e){s.push(Object.freeze({...e}));drain()}function on(e){if(l.has(e)){return false}l.add(e);drain();return true}function off(e){if(l.has(e)){l.delete(e);return true}return false}var u=__webpack_require__(/*! next/dist/compiled/stacktrace-parser */ \"../../node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js\");const c=/\\/_next(\\/static\\/.+)/g;function parseStack(e){const t=(0,u.parse)(e);return t.map((e=>{try{const t=new URL(e.file);const r=c.exec(t.pathname);if(r){const t=\"/Users/alex/tldraw/tldraw/apps/docs/.next\"?.replace(/\\\\/g,\"/\")?.replace(/\\/$/,\"\");if(t){e.file=\"file://\"+t.concat(r.pop())}}}catch{}return e}))}var d=__nccwpck_require__(659);var f=__nccwpck_require__(876);function getFilesystemFrame(e){const t={...e};if(typeof t.file===\"string\"){if(t.file.startsWith(\"/\")||/^[a-z]:\\\\/i.test(t.file)||t.file.startsWith(\"\\\\\\\\\")){t.file=`file://${t.file}`}}return t}const m=Symbol(\"NextjsError\");function getErrorSource(e){return e[m]||null}function decorateServerError(e,t){Object.defineProperty(e,m,{writable:false,enumerable:false,configurable:false,value:t})}function getServerError(e,t){let r;try{throw new Error(e.message)}catch(e){r=e}r.name=e.name;try{r.stack=`${r.toString()}\\n${(0,u.parse)(e.stack).map(getFilesystemFrame).map((e=>{let t=` at ${e.methodName}`;if(e.file){let r=e.file;if(e.lineNumber){r+=`:${e.lineNumber}`;if(e.column){r+=`:${e.column}`}}t+=` (${r})`}return t})).join(\"\\n\")}`}catch{r.stack=e.stack}decorateServerError(r,t);return r}function getOriginalStackFrame(e,t,r){async function _getOriginalStackFrame(){const n=new URLSearchParams;n.append(\"isServer\",String(t===\"server\"));n.append(\"isEdgeServer\",String(t===\"edge-server\"));n.append(\"errorMessage\",r);for(const t in e){n.append(t,(e[t]??\"\").toString())}const a=new AbortController;const o=setTimeout((()=>a.abort()),3e3);const i=await self.fetch(`${ false||\"\"}/__nextjs_original-stack-frame?${n.toString()}`,{signal:a.signal}).finally((()=>{clearTimeout(o)}));if(!i.ok||i.status===204){return Promise.reject(new Error(await i.text()))}const l=await i.json();return{error:false,reason:null,external:false,expanded:!Boolean((e.file?.includes(\"node_modules\")||l.originalStackFrame?.file?.includes(\"node_modules\"))??true),sourceStackFrame:e,originalStackFrame:l.originalStackFrame,originalCodeFrame:l.originalCodeFrame||null}}if(!(e.file?.startsWith(\"webpack-internal:\")||e.file?.startsWith(\"file:\"))){return Promise.resolve({error:false,reason:null,external:true,expanded:false,sourceStackFrame:e,originalStackFrame:null,originalCodeFrame:null})}return _getOriginalStackFrame().catch((t=>({error:true,reason:t?.message??t?.toString()??\"Unknown Error\",external:false,expanded:false,sourceStackFrame:e,originalStackFrame:null,originalCodeFrame:null})))}function getOriginalStackFrames(e,t,r){return Promise.all(e.map((e=>getOriginalStackFrame(e,t,r))))}function getFrameSource(e){let t=\"\";try{const r=new URL(e.file);if(typeof globalThis!==\"undefined\"&&globalThis.location?.origin!==r.origin){if(r.origin===\"null\"){t+=r.protocol}else{t+=r.origin}}t+=r.pathname;t+=\" \"}catch{t+=(e.file||\"(unknown)\")+\" \"}if(e.lineNumber!=null){if(e.column!=null){t+=`(${e.lineNumber}:${e.column}) `}else{t+=`(${e.lineNumber}) `}}return t.slice(0,-1)}async function getErrorByType(e){const{id:t,event:r}=e;switch(r.type){case o:case i:{const e={id:t,runtime:true,error:r.reason,frames:await getOriginalStackFrames(r.frames,getErrorSource(r.reason),r.reason.toString())};if(r.type===o){e.componentStack=r.componentStack}return e}default:{break}}const n=r;throw new Error(\"type system invariant violation\")}var p=__webpack_require__(/*! react */ \"../../node_modules/react/index.js\");var b=__nccwpck_require__.n(p);var g=__webpack_require__(/*! react-dom */ \"../../node_modules/react-dom/index.js\");const v=function Portal({children:e,globalOverlay:t}){let r=p.useRef(null);let n=p.useRef(null);let a=p.useRef(null);let[,o]=p.useState();p.useLayoutEffect((()=>{const e=t?document:r.current.ownerDocument;n.current=e.createElement(\"nextjs-portal\");a.current=n.current.attachShadow({mode:\"open\"});e.body.appendChild(n.current);o({});return()=>{if(n.current&&n.current.ownerDocument){n.current.ownerDocument.body.removeChild(n.current)}}}),[t]);return a.current?(0,g.createPortal)(e,a.current):t?null:p.createElement(\"span\",{ref:r})};function useOnClickOutside(e,t){p.useEffect((()=>{if(e==null||t==null){return}const listener=r=>{if(!e||e.contains(r.target)){return}t(r)};const r=e.getRootNode();r.addEventListener(\"mousedown\",listener);r.addEventListener(\"touchstart\",listener);return function(){r.removeEventListener(\"mousedown\",listener);r.removeEventListener(\"touchstart\",listener)}}),[t,e])}const h=function Dialog({children:e,type:t,onClose:r,...n}){const[a,o]=p.useState(null);const i=p.useCallback((e=>{o(e)}),[]);useOnClickOutside(a,r);p.useEffect((()=>{if(a==null){return}const e=a.getRootNode();if(!(e instanceof ShadowRoot)){return}const t=e;function handler(e){const r=t.activeElement;if(e.key===\"Enter\"&&r instanceof HTMLElement&&r.getAttribute(\"role\")===\"link\"){e.preventDefault();e.stopPropagation();r.click()}}t.addEventListener(\"keydown\",handler);return()=>t.removeEventListener(\"keydown\",handler)}),[a]);return p.createElement(\"div\",{ref:i,\"data-nextjs-dialog\":true,tabIndex:-1,role:\"dialog\",\"aria-labelledby\":n[\"aria-labelledby\"],\"aria-describedby\":n[\"aria-describedby\"],\"aria-modal\":\"true\"},p.createElement(\"div\",{\"data-nextjs-dialog-banner\":true,className:`banner-${t}`}),e)};const x=function DialogBody({children:e,className:t}){return p.createElement(\"div\",{\"data-nextjs-dialog-body\":true,className:t},e)};const y=function DialogContent({children:e,className:t}){return p.createElement(\"div\",{\"data-nextjs-dialog-content\":true,className:t},e)};const E=function DialogHeader({children:e,className:t}){return p.createElement(\"div\",{\"data-nextjs-dialog-header\":true,className:t},e)};function noop(e,...t){const r=e.length-1;return e.slice(0,r).reduce(((e,r,n)=>e+r+t[n]),\"\")+e[r]}const w=noop`\n [data-nextjs-dialog] {\n display: flex;\n flex-direction: column;\n width: 100%;\n margin-right: auto;\n margin-left: auto;\n outline: none;\n background: white;\n border-radius: var(--size-gap);\n box-shadow: 0 var(--size-gap-half) var(--size-gap-double)\n rgba(0, 0, 0, 0.25);\n max-height: calc(100% - 56px);\n overflow-y: hidden;\n }\n\n @media (max-height: 812px) {\n [data-nextjs-dialog-overlay] {\n max-height: calc(100% - 15px);\n }\n }\n\n @media (min-width: 576px) {\n [data-nextjs-dialog] {\n max-width: 540px;\n box-shadow: 0 var(--size-gap) var(--size-gap-quad) rgba(0, 0, 0, 0.25);\n }\n }\n\n @media (min-width: 768px) {\n [data-nextjs-dialog] {\n max-width: 720px;\n }\n }\n\n @media (min-width: 992px) {\n [data-nextjs-dialog] {\n max-width: 960px;\n }\n }\n\n [data-nextjs-dialog-banner] {\n position: relative;\n }\n [data-nextjs-dialog-banner].banner-warning {\n border-color: var(--color-ansi-yellow);\n }\n [data-nextjs-dialog-banner].banner-error {\n border-color: var(--color-ansi-red);\n }\n\n [data-nextjs-dialog-banner]::after {\n z-index: 2;\n content: '';\n position: absolute;\n top: 0;\n right: 0;\n width: 100%;\n /* banner width: */\n border-top-width: var(--size-gap-half);\n border-bottom-width: 0;\n border-top-style: solid;\n border-bottom-style: solid;\n border-top-color: inherit;\n border-bottom-color: transparent;\n }\n\n [data-nextjs-dialog-content] {\n overflow-y: auto;\n border: none;\n margin: 0;\n /* calc(padding + banner width offset) */\n padding: calc(var(--size-gap-double) + var(--size-gap-half))\n var(--size-gap-double);\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n [data-nextjs-dialog-content] > [data-nextjs-dialog-header] {\n flex-shrink: 0;\n margin-bottom: var(--size-gap-double);\n }\n [data-nextjs-dialog-content] > [data-nextjs-dialog-body] {\n position: relative;\n flex: 1 1 auto;\n }\n`;var k=__webpack_require__(/*! next/dist/compiled/platform */ \"../../node_modules/next/dist/compiled/platform/platform.js\");var S=__nccwpck_require__.n(k);var _=__webpack_require__(/*! next/dist/compiled/css.escape */ \"../../node_modules/next/dist/compiled/css.escape/css.escape.js\");var T=__nccwpck_require__.n(_);function nodeArray(e){if(!e){return[]}if(Array.isArray(e)){return e}if(e.nodeType!==undefined){return[e]}if(typeof e===\"string\"){e=document.querySelectorAll(e)}if(e.length!==undefined){return[].slice.call(e,0)}throw new TypeError(\"unexpected input \"+String(e))}function contextToElement(e){var t=e.context,r=e.label,n=r===undefined?\"context-to-element\":r,a=e.resolveDocument,o=e.defaultToDocument;var i=nodeArray(t)[0];if(a&&i&&i.nodeType===Node.DOCUMENT_NODE){i=i.documentElement}if(!i&&o){return document.documentElement}if(!i){throw new TypeError(n+\" requires valid options.context\")}if(i.nodeType!==Node.ELEMENT_NODE&&i.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){throw new TypeError(n+\" requires options.context to be an Element\")}return i}function getShadowHost(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context;var r=contextToElement({label:\"get/shadow-host\",context:t});var n=null;while(r){n=r;r=r.parentNode}if(n.nodeType===n.DOCUMENT_FRAGMENT_NODE&&n.host){return n.host}return null}function getDocument(e){if(!e){return document}if(e.nodeType===Node.DOCUMENT_NODE){return e}return e.ownerDocument||document}function isActiveElement(e){var t=contextToElement({label:\"is/active-element\",resolveDocument:true,context:e});var r=getDocument(t);if(r.activeElement===t){return true}var n=getShadowHost({context:t});if(n&&n.shadowRoot.activeElement===t){return true}return false}function getParents(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context;var r=[];var n=contextToElement({label:\"get/parents\",context:t});while(n){r.push(n);n=n.parentNode;if(n&&n.nodeType!==Node.ELEMENT_NODE){n=null}}return r}var C=[\"matches\",\"webkitMatchesSelector\",\"mozMatchesSelector\",\"msMatchesSelector\"];var j=null;function findMethodName(e){C.some((function(t){if(!e[t]){return false}j=t;return true}))}function elementMatches(e,t){if(!j){findMethodName(e)}return e[j](t)}var A=JSON.parse(JSON.stringify(S()));var O=A.os.family||\"\";var N=O===\"Android\";var I=O.slice(0,7)===\"Windows\";var L=O===\"OS X\";var F=O===\"iOS\";var D=A.layout===\"Blink\";var M=A.layout===\"Gecko\";var R=A.layout===\"Trident\";var z=A.layout===\"EdgeHTML\";var B=A.layout===\"WebKit\";var H=parseFloat(A.version);var q=Math.floor(H);A.majorVersion=q;A.is={ANDROID:N,WINDOWS:I,OSX:L,IOS:F,BLINK:D,GECKO:M,TRIDENT:R,EDGE:z,WEBKIT:B,IE9:R&&q===9,IE10:R&&q===10,IE11:R&&q===11};function before(){var e={activeElement:document.activeElement,windowScrollTop:window.scrollTop,windowScrollLeft:window.scrollLeft,bodyScrollTop:document.body.scrollTop,bodyScrollLeft:document.body.scrollLeft};var t=document.createElement(\"iframe\");t.setAttribute(\"style\",\"position:absolute; position:fixed; top:0; left:-2px; width:1px; height:1px; overflow:hidden;\");t.setAttribute(\"aria-live\",\"off\");t.setAttribute(\"aria-busy\",\"true\");t.setAttribute(\"aria-hidden\",\"true\");document.body.appendChild(t);var r=t.contentWindow;var n=r.document;n.open();n.close();var a=n.createElement(\"div\");n.body.appendChild(a);e.iframe=t;e.wrapper=a;e.window=r;e.document=n;return e}function test(e,t){e.wrapper.innerHTML=\"\";var r=typeof t.element===\"string\"?e.document.createElement(t.element):t.element(e.wrapper,e.document);var n=t.mutate&&t.mutate(r,e.wrapper,e.document);if(!n&&n!==false){n=r}!r.parentNode&&e.wrapper.appendChild(r);n&&n.focus&&n.focus();return t.validate?t.validate(r,n,e.document):e.document.activeElement===n}function after(e){if(e.activeElement===document.body){document.activeElement&&document.activeElement.blur&&document.activeElement.blur();if(A.is.IE10){document.body.focus()}}else{e.activeElement&&e.activeElement.focus&&e.activeElement.focus()}document.body.removeChild(e.iframe);window.scrollTop=e.windowScrollTop;window.scrollLeft=e.windowScrollLeft;document.body.scrollTop=e.bodyScrollTop;document.body.scrollLeft=e.bodyScrollLeft}function detectFocus(e){var t=before();var r={};Object.keys(e).map((function(n){r[n]=test(t,e[n])}));after(t);return r}var P=\"1.4.1\";function readLocalStorage(e){var t=void 0;try{t=window.localStorage&&window.localStorage.getItem(e);t=t?JSON.parse(t):{}}catch(e){t={}}return t}function writeLocalStorage(e,t){if(!document.hasFocus()){try{window.localStorage&&window.localStorage.removeItem(e)}catch(e){}return}try{window.localStorage&&window.localStorage.setItem(e,JSON.stringify(t))}catch(e){}}var W=typeof window!==\"undefined\"&&window.navigator.userAgent||\"\";var V=\"ally-supports-cache\";var $=readLocalStorage(V);if($.userAgent!==W||$.version!==P){$={}}$.userAgent=W;$.version=P;var K={get:function get(){return $},set:function set(e){Object.keys(e).forEach((function(t){$[t]=e[t]}));$.time=(new Date).toISOString();writeLocalStorage(V,$)}};function cssShadowPiercingDeepCombinator(){var e=void 0;try{document.querySelector(\"html >>> :first-child\");e=\">>>\"}catch(t){try{document.querySelector(\"html /deep/ :first-child\");e=\"/deep/\"}catch(t){e=\"\"}}return e}var Z=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\";var U={element:\"div\",mutate:function mutate(e){e.innerHTML=''+''+'\"\"';return e.querySelector(\"area\")}};var G={element:\"div\",mutate:function mutate(e){e.innerHTML=''+''+'\"\"';return false},validate:function validate(e,t,r){if(A.is.GECKO){return true}var n=e.querySelector(\"area\");n.focus();return r.activeElement===n}};var X={element:\"div\",mutate:function mutate(e){e.innerHTML=''+''+'\"\"';return e.querySelector(\"area\")},validate:function validate(e,t,r){if(A.is.GECKO){return true}return r.activeElement===t}};var J={name:\"can-focus-audio-without-controls\",element:\"audio\",mutate:function mutate(e){try{e.setAttribute(\"src\",Z)}catch(e){}}};var Q=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\";var Y={element:\"div\",mutate:function mutate(e){e.innerHTML=''+'\"\"';return e.querySelector(\"area\")}};var ee={element:\"div\",mutate:function mutate(e){e.setAttribute(\"tabindex\",\"-1\");e.setAttribute(\"style\",\"display: -webkit-flex; display: -ms-flexbox; display: flex;\");e.innerHTML='hello';return e.querySelector(\"span\")}};var te={element:\"fieldset\",mutate:function mutate(e){e.setAttribute(\"tabindex\",0);e.setAttribute(\"disabled\",\"disabled\")}};var re={element:\"fieldset\",mutate:function mutate(e){e.innerHTML=\"legend

content

\"}};var ne={element:\"span\",mutate:function mutate(e){e.setAttribute(\"style\",\"display: -webkit-flex; display: -ms-flexbox; display: flex;\");e.innerHTML='hello'}};var ae={element:\"form\",mutate:function mutate(e){e.setAttribute(\"tabindex\",0);e.setAttribute(\"disabled\",\"disabled\")}};var oe={element:\"a\",mutate:function mutate(e){e.href=\"#void\";e.innerHTML='\"\"';return e.querySelector(\"img\")}};var ie={element:\"div\",mutate:function mutate(e){e.innerHTML=''+'\"\"';return e.querySelector(\"img\")}};var le={element:function element(e,t){var r=t.createElement(\"iframe\");e.appendChild(r);var n=r.contentWindow.document;n.open();n.close();return r},mutate:function mutate(e){e.style.visibility=\"hidden\";var t=e.contentWindow.document;var r=t.createElement(\"input\");t.body.appendChild(r);return r},validate:function validate(e){var t=e.contentWindow.document;var r=t.querySelector(\"input\");return t.activeElement===r}};var se=!A.is.WEBKIT;function focusInZeroDimensionObject(){return se}var ue={element:\"div\",mutate:function mutate(e){e.setAttribute(\"tabindex\",\"invalid-value\")}};var ce={element:\"label\",mutate:function mutate(e){e.setAttribute(\"tabindex\",\"-1\")},validate:function validate(e,t,r){var n=e.offsetHeight;e.focus();return r.activeElement===e}};var de=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtb\"+\"G5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBpZD0ic3ZnIj48dGV4dCB4PSIxMCIgeT0iMjAiIGlkPSJ\"+\"zdmctbGluay10ZXh0Ij50ZXh0PC90ZXh0Pjwvc3ZnPg==\";var fe={element:\"object\",mutate:function mutate(e){e.setAttribute(\"type\",\"image/svg+xml\");e.setAttribute(\"data\",de);e.setAttribute(\"width\",\"200\");e.setAttribute(\"height\",\"50\");e.style.visibility=\"hidden\"}};var me={name:\"can-focus-object-svg\",element:\"object\",mutate:function mutate(e){e.setAttribute(\"type\",\"image/svg+xml\");e.setAttribute(\"data\",de);e.setAttribute(\"width\",\"200\");e.setAttribute(\"height\",\"50\")},validate:function validate(e,t,r){if(A.is.GECKO){return true}return r.activeElement===e}};var pe=!A.is.IE9;function focusObjectSwf(){return pe}var be={element:\"div\",mutate:function mutate(e){e.innerHTML=''+'\"\"';return e.querySelector(\"img\")},validate:function validate(e,t,r){var n=e.querySelector(\"area\");return r.activeElement===n}};var ge={element:\"fieldset\",mutate:function mutate(e){e.innerHTML='legend';return false},validate:function validate(e,t,r){var n=e.querySelector('input[tabindex=\"-1\"]');var a=e.querySelector('input[tabindex=\"0\"]');e.focus();e.querySelector(\"legend\").focus();return r.activeElement===n&&\"focusable\"||r.activeElement===a&&\"tabbable\"||\"\"}};var ve={element:\"div\",mutate:function mutate(e){e.setAttribute(\"style\",\"width: 100px; height: 50px; overflow: auto;\");e.innerHTML='
scrollable content
';return e.querySelector(\"div\")}};var he={element:\"div\",mutate:function mutate(e){e.setAttribute(\"style\",\"width: 100px; height: 50px;\");e.innerHTML='
scrollable content
'}};var xe={element:\"div\",mutate:function mutate(e){e.setAttribute(\"style\",\"width: 100px; height: 50px; overflow: auto;\");e.innerHTML='
scrollable content
'}};var ye={element:\"details\",mutate:function mutate(e){e.innerHTML=\"foo

content

\";return e.firstElementChild}};function makeFocusableForeignObject(){var e=document.createElementNS(\"http://www.w3.org/2000/svg\",\"foreignObject\");e.width.baseVal.value=30;e.height.baseVal.value=30;e.appendChild(document.createElement(\"input\"));e.lastChild.type=\"text\";return e}function focusSvgForeignObjectHack(e){var t=e.ownerSVGElement||e.nodeName.toLowerCase()===\"svg\";if(!t){return false}var r=makeFocusableForeignObject();e.appendChild(r);var n=r.querySelector(\"input\");n.focus();n.disabled=true;e.removeChild(r);return true}function generate(e){return''+e+\"\"}function maintain_tab_focus_focus(e){if(e.focus){return}try{HTMLElement.prototype.focus.call(e)}catch(t){focusSvgForeignObjectHack(e)}}function validate(e,t,r){maintain_tab_focus_focus(t);return r.activeElement===t}var Ee={element:\"div\",mutate:function mutate(e){e.innerHTML=generate('a');return e.querySelector(\"text\")},validate:validate};var we={element:\"div\",mutate:function mutate(e){e.innerHTML=generate('a');return e.querySelector(\"text\")},validate:validate};var ke={element:\"div\",mutate:function mutate(e){e.innerHTML=generate('a');return e.querySelector(\"text\")},validate:validate};var Se={element:\"div\",mutate:function mutate(e){e.innerHTML=generate(['link',''].join(\"\"));return e.querySelector(\"use\")},validate:validate};var _e={element:\"div\",mutate:function mutate(e){e.innerHTML=generate('');return e.querySelector(\"foreignObject\")||e.getElementsByTagName(\"foreignObject\")[0]},validate:validate};var Te=Boolean(A.is.GECKO&&typeof SVGElement!==\"undefined\"&&SVGElement.prototype.focus);function focusSvgInIframe(){return Te}var Ce={element:\"div\",mutate:function mutate(e){e.innerHTML=generate(\"\");return e.firstChild},validate:validate};var je={element:\"div\",mutate:function mutate(e){e.setAttribute(\"tabindex\",\"3x\")}};var Ae={element:\"table\",mutate:function mutate(e,t,r){var n=r.createDocumentFragment();n.innerHTML=\"cell\";e.appendChild(n)}};var Oe={element:\"video\",mutate:function mutate(e){try{e.setAttribute(\"src\",Z)}catch(e){}}};var Ne=A.is.GECKO||A.is.TRIDENT||A.is.EDGE;function tabsequenceAreaAtImgPosition(){return Ne}var Ie={cssShadowPiercingDeepCombinator:cssShadowPiercingDeepCombinator,focusInZeroDimensionObject:focusInZeroDimensionObject,focusObjectSwf:focusObjectSwf,focusSvgInIframe:focusSvgInIframe,tabsequenceAreaAtImgPosition:tabsequenceAreaAtImgPosition};var Le={focusAreaImgTabindex:U,focusAreaTabindex:G,focusAreaWithoutHref:X,focusAudioWithoutControls:J,focusBrokenImageMap:Y,focusChildrenOfFocusableFlexbox:ee,focusFieldsetDisabled:te,focusFieldset:re,focusFlexboxContainer:ne,focusFormDisabled:ae,focusImgIsmap:oe,focusImgUsemapTabindex:ie,focusInHiddenIframe:le,focusInvalidTabindex:ue,focusLabelTabindex:ce,focusObjectSvg:me,focusObjectSvgHidden:fe,focusRedirectImgUsemap:be,focusRedirectLegend:ge,focusScrollBody:ve,focusScrollContainerWithoutOverflow:he,focusScrollContainer:xe,focusSummary:ye,focusSvgFocusableAttribute:Ee,focusSvgTabindexAttribute:we,focusSvgNegativeTabindexAttribute:ke,focusSvgUseTabindex:Se,focusSvgForeignobjectTabindex:_e,focusSvg:Ce,focusTabindexTrailingCharacters:je,focusTable:Ae,focusVideoWithoutControls:Oe};function executeTests(){var e=detectFocus(Le);Object.keys(Ie).forEach((function(t){e[t]=Ie[t]()}));return e}var Fe=null;function _supports(){if(Fe){return Fe}Fe=K.get();if(!Fe.time){K.set(executeTests());Fe=K.get()}return Fe}var De=void 0;var Me=/^\\s*(-|\\+)?[0-9]+\\s*$/;var Re=/^\\s*(-|\\+)?[0-9]+.*$/;function isValidTabindex(e){if(!De){De=_supports()}var t=De.focusTabindexTrailingCharacters?Re:Me;var r=contextToElement({label:\"is/valid-tabindex\",resolveDocument:true,context:e});var n=r.hasAttribute(\"tabindex\");var a=r.hasAttribute(\"tabIndex\");if(!n&&!a){return false}var o=r.ownerSVGElement||r.nodeName.toLowerCase()===\"svg\";if(o&&!De.focusSvgTabindexAttribute){return false}if(De.focusInvalidTabindex){return true}var i=r.getAttribute(n?\"tabindex\":\"tabIndex\");if(i===\"-32768\"){return false}return Boolean(i&&t.test(i))}function tabindexValue(e){if(!isValidTabindex(e)){return null}var t=e.hasAttribute(\"tabindex\");var r=t?\"tabindex\":\"tabIndex\";var n=parseInt(e.getAttribute(r),10);return isNaN(n)?-1:n}function isUserModifyWritable(e){var t=e.webkitUserModify||\"\";return Boolean(t&&t.indexOf(\"write\")!==-1)}function hasCssOverflowScroll(e){return[e.getPropertyValue(\"overflow\"),e.getPropertyValue(\"overflow-x\"),e.getPropertyValue(\"overflow-y\")].some((function(e){return e===\"auto\"||e===\"scroll\"}))}function hasCssDisplayFlex(e){return e.display.indexOf(\"flex\")>-1}function isScrollableContainer(e,t,r,n){if(t!==\"div\"&&t!==\"span\"){return false}if(r&&r!==\"div\"&&r!==\"span\"&&!hasCssOverflowScroll(n)){return false}return e.offsetHeight0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.except,n=r===undefined?{flexbox:false,scrollable:false,shadow:false}:r;if(!ze){ze=_supports()}var a=contextToElement({label:\"is/focus-relevant\",resolveDocument:true,context:t});if(!n.shadow&&a.shadowRoot){return true}var o=a.nodeName.toLowerCase();if(o===\"input\"&&a.type===\"hidden\"){return false}if(o===\"input\"||o===\"select\"||o===\"button\"||o===\"textarea\"){return true}if(o===\"legend\"&&ze.focusRedirectLegend){return true}if(o===\"label\"){return true}if(o===\"area\"){return true}if(o===\"a\"&&a.hasAttribute(\"href\")){return true}if(o===\"object\"&&a.hasAttribute(\"usemap\")){return false}if(o===\"object\"){var i=a.getAttribute(\"type\");if(!ze.focusObjectSvg&&i===\"image/svg+xml\"){return false}else if(!ze.focusObjectSwf&&i===\"application/x-shockwave-flash\"){return false}}if(o===\"iframe\"||o===\"object\"){return true}if(o===\"embed\"||o===\"keygen\"){return true}if(a.hasAttribute(\"contenteditable\")){return true}if(o===\"audio\"&&(ze.focusAudioWithoutControls||a.hasAttribute(\"controls\"))){return true}if(o===\"video\"&&(ze.focusVideoWithoutControls||a.hasAttribute(\"controls\"))){return true}if(ze.focusSummary&&o===\"summary\"){return true}var l=isValidTabindex(a);if(o===\"img\"&&a.hasAttribute(\"usemap\")){return l&&ze.focusImgUsemapTabindex||ze.focusRedirectImgUsemap}if(ze.focusTable&&(o===\"table\"||o===\"td\")){return true}if(ze.focusFieldset&&o===\"fieldset\"){return true}var s=o===\"svg\";var u=a.ownerSVGElement;var c=a.getAttribute(\"focusable\");var d=tabindexValue(a);if(o===\"use\"&&d!==null&&!ze.focusSvgUseTabindex){return false}if(o===\"foreignobject\"){return d!==null&&ze.focusSvgForeignobjectTabindex}if(elementMatches(a,\"svg a\")&&a.hasAttribute(\"xlink:href\")){return true}if((s||u)&&a.focus&&!ze.focusSvgNegativeTabindexAttribute&&d<0){return false}if(s){return l||ze.focusSvg||ze.focusSvgInIframe||Boolean(ze.focusSvgFocusableAttribute&&c&&c===\"true\")}if(u){if(ze.focusSvgTabindexAttribute&&l){return true}if(ze.focusSvgFocusableAttribute){return c===\"true\"}}if(l){return true}var f=window.getComputedStyle(a,null);if(isUserModifyWritable(f)){return true}if(ze.focusImgIsmap&&o===\"img\"&&a.hasAttribute(\"ismap\")){var m=getParents({context:a}).some((function(e){return e.nodeName.toLowerCase()===\"a\"&&e.hasAttribute(\"href\")}));if(m){return true}}if(!n.scrollable&&ze.focusScrollContainer){if(ze.focusScrollContainerWithoutOverflow){if(isScrollableContainer(a,o)){return true}}else if(hasCssOverflowScroll(f)){return true}}if(!n.flexbox&&ze.focusFlexboxContainer&&hasCssDisplayFlex(f)){return true}var p=a.parentElement;if(!n.scrollable&&p){var b=p.nodeName.toLowerCase();var g=window.getComputedStyle(p,null);if(ze.focusScrollBody&&isScrollableContainer(p,o,b,g)){return true}if(ze.focusChildrenOfFocusableFlexbox){if(hasCssDisplayFlex(g)){return true}}}return false}isFocusRelevantRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var t=function isFocusRelevant(t){return isFocusRelevantRules({context:t,except:e})};t.rules=isFocusRelevantRules;return t};var Be=isFocusRelevantRules.except({});function findIndex(e,t){if(e.findIndex){return e.findIndex(t)}var r=e.length;if(r===0){return-1}for(var n=0;n0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.except,n=r===undefined?{notRendered:false,cssDisplay:false,cssVisibility:false,detailsElement:false,browsingContext:false}:r;var a=contextToElement({label:\"is/visible\",resolveDocument:true,context:t});var o=a.nodeName.toLowerCase();if(!n.notRendered&&Pe.test(o)){return true}var i=getParents({context:a});var l=o===\"audio\"&&!a.hasAttribute(\"controls\");if(!n.cssDisplay&¬Displayed(l?i.slice(1):i)){return false}if(!n.cssVisibility&¬Visible(i)){return false}if(!n.detailsElement&&collapsedParent(i)){return false}if(!n.browsingContext){var s=getFrameElement(a);var u=isVisibleRules.except(n);if(s&&!u(s)){return false}}return true}isVisibleRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var t=function isVisible(t){return isVisibleRules({context:t,except:e})};t.rules=isVisibleRules;return t};var We=isVisibleRules.except({});function getMapByName(e,t){var r=t.querySelector('map[name=\"'+T()(e)+'\"]');return r||null}function getImageOfArea(e){var t=e.parentElement;if(!t.name||t.nodeName.toLowerCase()!==\"map\"){return null}var r=getDocument(e);return r.querySelector('img[usemap=\"#'+T()(t.name)+'\"]')||null}var Ve=void 0;function isValidArea(e){if(!Ve){Ve=_supports()}var t=contextToElement({label:\"is/valid-area\",context:e});var r=t.nodeName.toLowerCase();if(r!==\"area\"){return false}var n=t.hasAttribute(\"tabindex\");if(!Ve.focusAreaTabindex&&n){return false}var a=getImageOfArea(t);if(!a||!We(a)){return false}if(!Ve.focusBrokenImageMap&&(!a.complete||!a.naturalHeight||a.offsetWidth<=0||a.offsetHeight<=0)){return false}if(!Ve.focusAreaWithoutHref&&!t.href){return Ve.focusAreaTabindex&&n||Ve.focusAreaImgTabindex&&a.hasAttribute(\"tabindex\")}var o=getParents({context:a}).slice(1).some((function(e){var t=e.nodeName.toLowerCase();return t===\"button\"||t===\"a\"}));if(o){return false}return true}var $e=void 0;var Ke=void 0;var Ze={input:true,select:true,textarea:true,button:true,fieldset:true,form:true};function isNativeDisabledSupported(e){if(!$e){$e=_supports();if($e.focusFieldsetDisabled){delete Ze.fieldset}if($e.focusFormDisabled){delete Ze.form}Ke=new RegExp(\"^(\"+Object.keys(Ze).join(\"|\")+\")$\")}var t=contextToElement({label:\"is/native-disabled-supported\",context:e});var r=t.nodeName.toLowerCase();return Boolean(Ke.test(r))}var Ue=void 0;function isDisabledFieldset(e){var t=e.nodeName.toLowerCase();return t===\"fieldset\"&&e.disabled}function isDisabledForm(e){var t=e.nodeName.toLowerCase();return t===\"form\"&&e.disabled}function isDisabled(e){if(!Ue){Ue=_supports()}var t=contextToElement({label:\"is/disabled\",context:e});if(t.hasAttribute(\"data-ally-disabled\")){return true}if(!isNativeDisabledSupported(t)){return false}if(t.disabled){return true}var r=getParents({context:t});if(r.some(isDisabledFieldset)){return true}if(!Ue.focusFormDisabled&&r.some(isDisabledForm)){return true}return false}function isOnlyTabbableRules(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.except,n=r===undefined?{onlyFocusableBrowsingContext:false,visible:false}:r;var a=contextToElement({label:\"is/only-tabbable\",resolveDocument:true,context:t});if(!n.visible&&!We(a)){return false}if(!n.onlyFocusableBrowsingContext&&(A.is.GECKO||A.is.TRIDENT||A.is.EDGE)){var o=getFrameElement(a);if(o){if(tabindexValue(o)<0){return false}}}var i=a.nodeName.toLowerCase();var l=tabindexValue(a);if(i===\"label\"&&A.is.GECKO){return l!==null&&l>=0}if(A.is.GECKO&&a.ownerSVGElement&&!a.focus){if(i===\"a\"&&a.hasAttribute(\"xlink:href\")){if(A.is.GECKO){return true}}}return false}isOnlyTabbableRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var t=function isOnlyTabbable(t){return isOnlyTabbableRules({context:t,except:e})};t.rules=isOnlyTabbableRules;return t};var Ge=isOnlyTabbableRules.except({});var Xe=void 0;function isOnlyFocusRelevant(e){var t=e.nodeName.toLowerCase();if(t===\"embed\"||t===\"keygen\"){return true}var r=tabindexValue(e);if(e.shadowRoot&&r===null){return true}if(t===\"label\"){return!Xe.focusLabelTabindex||r===null}if(t===\"legend\"){return r===null}if(Xe.focusSvgFocusableAttribute&&(e.ownerSVGElement||t===\"svg\")){var n=e.getAttribute(\"focusable\");return n&&n===\"false\"}if(t===\"img\"&&e.hasAttribute(\"usemap\")){return r===null||!Xe.focusImgUsemapTabindex}if(t===\"area\"){return!isValidArea(e)}return false}function isFocusableRules(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.except,n=r===undefined?{disabled:false,visible:false,onlyTabbable:false}:r;if(!Xe){Xe=_supports()}var a=Ge.rules.except({onlyFocusableBrowsingContext:true,visible:n.visible});var o=contextToElement({label:\"is/focusable\",resolveDocument:true,context:t});var i=Be.rules({context:o,except:n});if(!i||isOnlyFocusRelevant(o)){return false}if(!n.disabled&&isDisabled(o)){return false}if(!n.onlyTabbable&&a(o)){return false}if(!n.visible){var l={context:o,except:{}};if(Xe.focusInHiddenIframe){l.except.browsingContext=true}if(Xe.focusObjectSvgHidden){var s=o.nodeName.toLowerCase();if(s===\"object\"){l.except.cssVisibility=true}}if(!We.rules(l)){return false}}var u=getFrameElement(o);if(u){var c=u.nodeName.toLowerCase();if(c===\"object\"&&!Xe.focusInZeroDimensionObject){if(!u.offsetWidth||!u.offsetHeight){return false}}}var d=o.nodeName.toLowerCase();if(d===\"svg\"&&Xe.focusSvgInIframe&&!u&&o.getAttribute(\"tabindex\")===null){return false}return true}isFocusableRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var t=function isFocusable(t){return isFocusableRules({context:t,except:e})};t.rules=isFocusableRules;return t};var Je=isFocusableRules.except({});function createFilter(e){var t=function filter(t){if(t.shadowRoot){return NodeFilter.FILTER_ACCEPT}if(e(t)){return NodeFilter.FILTER_ACCEPT}return NodeFilter.FILTER_SKIP};t.acceptNode=t;return t}var Qe=createFilter(Be);function queryFocusableStrict(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.includeContext,n=e.includeOnlyTabbable,a=e.strategy;if(!t){t=document.documentElement}var o=Je.rules.except({onlyTabbable:n});var i=getDocument(t);var l=i.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,a===\"all\"?Qe:createFilter(o),false);var s=[];while(l.nextNode()){if(l.currentNode.shadowRoot){if(o(l.currentNode)){s.push(l.currentNode)}s=s.concat(queryFocusableStrict({context:l.currentNode.shadowRoot,includeOnlyTabbable:n,strategy:a}))}else{s.push(l.currentNode)}}if(r){if(a===\"all\"){if(Be(t)){s.unshift(t)}}else if(o(t)){s.unshift(t)}}return s}var Ye=void 0;var et=void 0;function selector$2(){if(!Ye){Ye=_supports()}if(typeof et===\"string\"){return et}et=\"\"+(Ye.focusTable?\"table, td,\":\"\")+(Ye.focusFieldset?\"fieldset,\":\"\")+\"svg a,\"+\"a[href],\"+\"area[href],\"+\"input, select, textarea, button,\"+\"iframe, object, embed,\"+\"keygen,\"+(Ye.focusAudioWithoutControls?\"audio,\":\"audio[controls],\")+(Ye.focusVideoWithoutControls?\"video,\":\"video[controls],\")+(Ye.focusSummary?\"summary,\":\"\")+\"[tabindex],\"+\"[contenteditable]\";et=selectInShadows(et);return et}function queryFocusableQuick(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.includeContext,n=e.includeOnlyTabbable;var a=selector$2();var o=t.querySelectorAll(a);var i=Je.rules.except({onlyTabbable:n});var l=[].filter.call(o,i);if(r&&i(t)){l.unshift(t)}return l}function queryFocusable(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.includeContext,n=e.includeOnlyTabbable,a=e.strategy,o=a===undefined?\"quick\":a;var i=contextToElement({label:\"query/focusable\",resolveDocument:true,defaultToDocument:true,context:t});var l={context:i,includeContext:r,includeOnlyTabbable:n,strategy:o};if(o===\"quick\"){return queryFocusableQuick(l)}else if(o===\"strict\"||o===\"all\"){return queryFocusableStrict(l)}throw new TypeError('query/focusable requires option.strategy to be one of [\"quick\", \"strict\", \"all\"]')}var tt=void 0;var rt=/^(fieldset|table|td|body)$/;function isTabbableRules(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.except,n=r===undefined?{flexbox:false,scrollable:false,shadow:false,visible:false,onlyTabbable:false}:r;if(!tt){tt=_supports()}var a=contextToElement({label:\"is/tabbable\",resolveDocument:true,context:t});if(A.is.BLINK&&A.is.ANDROID&&A.majorVersion>42){return false}var o=getFrameElement(a);if(o){if(A.is.WEBKIT&&A.is.IOS){return false}if(tabindexValue(o)<0){return false}if(!n.visible&&(A.is.BLINK||A.is.WEBKIT)&&!We(o)){return false}var i=o.nodeName.toLowerCase();if(i===\"object\"){var l=A.name===\"Chrome\"&&A.majorVersion>=54||A.name===\"Opera\"&&A.majorVersion>=41;if(A.is.WEBKIT||A.is.BLINK&&!l){return false}}}var s=a.nodeName.toLowerCase();var u=tabindexValue(a);var c=u===null?null:u>=0;if(A.is.EDGE&&A.majorVersion>=14&&o&&a.ownerSVGElement&&u<0){return true}var d=c!==false;var f=u!==null&&u>=0;if(a.hasAttribute(\"contenteditable\")){return d}if(rt.test(s)&&c!==true){return false}if(A.is.WEBKIT&&A.is.IOS){var m=s===\"input\"&&a.type===\"text\"||a.type===\"password\"||s===\"select\"||s===\"textarea\"||a.hasAttribute(\"contenteditable\");if(!m){var p=window.getComputedStyle(a,null);m=isUserModifyWritable(p)}if(!m){return false}}if(s===\"use\"&&u!==null){if(A.is.BLINK||A.is.WEBKIT&&A.majorVersion===9){return true}}if(elementMatches(a,\"svg a\")&&a.hasAttribute(\"xlink:href\")){if(d){return true}if(a.focus&&!tt.focusSvgNegativeTabindexAttribute){return true}}if(s===\"svg\"&&tt.focusSvgInIframe&&d){return true}if(A.is.TRIDENT||A.is.EDGE){if(s===\"svg\"){if(tt.focusSvg){return true}return a.hasAttribute(\"focusable\")||f}if(a.ownerSVGElement){if(tt.focusSvgTabindexAttribute&&f){return true}return a.hasAttribute(\"focusable\")}}if(a.tabIndex===undefined){return Boolean(n.onlyTabbable)}if(s===\"audio\"){if(!a.hasAttribute(\"controls\")){return false}else if(A.is.BLINK){return true}}if(s===\"video\"){if(!a.hasAttribute(\"controls\")){if(A.is.TRIDENT||A.is.EDGE){return false}}else if(A.is.BLINK||A.is.GECKO){return true}}if(s===\"object\"){if(A.is.BLINK||A.is.WEBKIT){return false}}if(s===\"iframe\"){return false}if(!n.scrollable&&A.is.GECKO){var b=window.getComputedStyle(a,null);if(hasCssOverflowScroll(b)){return d}}if(A.is.TRIDENT||A.is.EDGE){if(s===\"area\"){var g=getImageOfArea(a);if(g&&tabindexValue(g)<0){return false}}var v=window.getComputedStyle(a,null);if(isUserModifyWritable(v)){return a.tabIndex>=0}if(!n.flexbox&&hasCssDisplayFlex(v)){if(u!==null){return f}return nt(a)&&at(a)}if(isScrollableContainer(a,s)){return false}var h=a.parentElement;if(h){var x=h.nodeName.toLowerCase();var y=window.getComputedStyle(h,null);if(isScrollableContainer(h,s,x,y)){return false}if(hasCssDisplayFlex(y)){return f}}}return a.tabIndex>=0}isTabbableRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var t=function isTabbable(t){return isTabbableRules({context:t,except:e})};t.rules=isTabbableRules;return t};var nt=Be.rules.except({flexbox:true});var at=isTabbableRules.except({flexbox:true});var ot=isTabbableRules.except({});function queryTabbable(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.includeContext,n=e.includeOnlyTabbable,a=e.strategy;var o=ot.rules.except({onlyTabbable:n});return queryFocusable({context:t,includeContext:r,includeOnlyTabbable:n,strategy:a}).filter(o)}function compareDomPosition(e,t){return e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING?-1:1}function sortDomOrder(e){return e.sort(compareDomPosition)}function getFirstSuccessorOffset(e,t){return findIndex(e,(function(e){return t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING}))}function findInsertionOffsets(e,t,r){var n=[];t.forEach((function(t){var a=true;var o=e.indexOf(t);if(o===-1){o=getFirstSuccessorOffset(e,t);a=false}if(o===-1){o=e.length}var i=nodeArray(r?r(t):t);if(!i.length){return}n.push({offset:o,replace:a,elements:i})}));return n}function insertElementsAtOffsets(e,t){var r=0;t.sort((function(e,t){return e.offset-t.offset}));t.forEach((function(t){var n=t.replace?1:0;var a=[t.offset+r,n].concat(t.elements);e.splice.apply(e,a);r+=t.elements.length-n}))}function mergeInDomOrder(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.list,r=e.elements,n=e.resolveElement;var a=t.slice(0);var o=nodeArray(r).slice(0);sortDomOrder(o);var i=findInsertionOffsets(a,o,n);insertElementsAtOffsets(a,i);return a}var it=function(){function defineProperties(e,t){for(var r=0;r-1){return[e].concat(t)}return t}},{key:\"_cleanup\",value:function _cleanup(){Object.keys(this.hosts).forEach((function(e){delete this.hosts[e]._sortingId}),this)}}]);return Shadows}();function sortShadowed(e,t,r){var n=new ut(t,r);var a=n.extractElements(e);if(a.length===e.length){return r(e)}return n.sort(a)}function sortTabindex(e){var t={};var r=[];var n=e.filter((function(e){var n=e.tabIndex;if(n===undefined){n=tabindexValue(e)}if(n<=0||n===null||n===undefined){return true}if(!t[n]){t[n]=[];r.push(n)}t[n].push(e);return false}));var a=r.sort().map((function(e){return t[e]})).reduceRight((function(e,t){return t.concat(e)}),n);return a}var ct=void 0;function moveContextToBeginning(e,t){var r=e.indexOf(t);if(r>0){var n=e.splice(r,1);return n.concat(e)}return e}function sortElements(e,t){if(ct.tabsequenceAreaAtImgPosition){e=sortArea(e,t)}e=sortTabindex(e);return e}function queryTabsequence(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.includeContext,n=e.includeOnlyTabbable,a=e.strategy;if(!ct){ct=_supports()}var o=nodeArray(t)[0]||document.documentElement;var i=queryTabbable({context:o,includeContext:r,includeOnlyTabbable:n,strategy:a});if(document.body.createShadowRoot&&A.is.BLINK){i=sortShadowed(i,o,sortElements)}else{i=sortElements(i,o)}if(r){i=moveContextToBeginning(i,o)}return i}var dt={tab:9,left:37,up:38,right:39,down:40,pageUp:33,\"page-up\":33,pageDown:34,\"page-down\":34,end:35,home:36,enter:13,escape:27,space:32,shift:16,capsLock:20,\"caps-lock\":20,ctrl:17,alt:18,meta:91,pause:19,insert:45,delete:46,backspace:8,_alias:{91:[92,93,224]}};for(var ft=1;ft<26;ft++){dt[\"f\"+ft]=ft+111}for(var mt=0;mt<10;mt++){var pt=mt+48;var bt=mt+96;dt[mt]=pt;dt[\"num-\"+mt]=bt;dt._alias[pt]=[bt]}for(var gt=0;gt<26;gt++){var vt=gt+65;var ht=String.fromCharCode(vt).toLowerCase();dt[ht]=vt}var xt={alt:\"altKey\",ctrl:\"ctrlKey\",meta:\"metaKey\",shift:\"shiftKey\"};var yt=Object.keys(xt).map((function(e){return xt[e]}));function createExpectedModifiers(e){var t=e?null:false;return{altKey:t,ctrlKey:t,metaKey:t,shiftKey:t}}function resolveModifiers(e){var t=e.indexOf(\"*\")!==-1;var r=createExpectedModifiers(t);e.forEach((function(e){if(e===\"*\"){return}var t=true;var n=e.slice(0,1);if(n===\"?\"){t=null}else if(n===\"!\"){t=false}if(t!==true){e=e.slice(1)}var a=xt[e];if(!a){throw new TypeError('Unknown modifier \"'+e+'\"')}r[a]=t}));return r}function resolveKey(e){var t=dt[e]||parseInt(e,10);if(!t||typeof t!==\"number\"||isNaN(t)){throw new TypeError('Unknown key \"'+e+'\"')}return[t].concat(dt._alias[t]||[])}function matchModifiers(e,t){return!yt.some((function(r){return typeof e[r]===\"boolean\"&&Boolean(t[r])!==e[r]}))}function keyBinding(e){return e.split(/\\s+/).map((function(e){var t=e.split(\"+\");var r=resolveModifiers(t.slice(0,-1));var n=resolveKey(t.slice(-1));return{keyCodes:n,modifiers:r,matchModifiers:matchModifiers.bind(null,r)}}))}function getParentComparator(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.parent,r=e.element,n=e.includeSelf;if(t){return function isChildOf(e){return Boolean(n&&e===t||t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_CONTAINED_BY)}}else if(r){return function isParentOf(e){return Boolean(n&&r===e||e.compareDocumentPosition(r)&Node.DOCUMENT_POSITION_CONTAINED_BY)}}throw new TypeError(\"util/compare-position#getParentComparator required either options.parent or options.element\")}function whenKey(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var t={};var r=nodeArray(e.context)[0]||document.documentElement;delete e.context;var n=nodeArray(e.filter);delete e.filter;var a=Object.keys(e);if(!a.length){throw new TypeError(\"when/key requires at least one option key\")}var o=function registerBinding(e){e.keyCodes.forEach((function(r){if(!t[r]){t[r]=[]}t[r].push(e)}))};a.forEach((function(t){if(typeof e[t]!==\"function\"){throw new TypeError('when/key requires option[\"'+t+'\"] to be a function')}var r=function addCallback(r){r.callback=e[t];return r};keyBinding(t).map(r).forEach(o)}));var i=function handleKeyDown(e){if(e.defaultPrevented){return}if(n.length){var a=getParentComparator({element:e.target,includeSelf:true});if(n.some(a)){return}}var o=e.keyCode||e.which;if(!t[o]){return}t[o].forEach((function(t){if(!t.matchModifiers(e)){return}t.callback.call(r,e,l)}))};r.addEventListener(\"keydown\",i,false);var l=function disengage(){r.removeEventListener(\"keydown\",i,false)};return{disengage:l}}function maintain_tab_focus({context:e}={}){if(!e){e=document.documentElement}queryTabsequence();return whenKey({\"?alt+?shift+tab\":function altShiftTab(t){t.preventDefault();var r=queryTabsequence({context:e});var n=t.shiftKey;var a=r[0];var o=r[r.length-1];var i=n?a:o;var l=n?o:a;if(isActiveElement(i)){l.focus();return}var s=void 0;var u=r.some((function(e,t){if(!isActiveElement(e)){return false}s=t;return true}));if(!u){a.focus();return}var c=n?-1:1;r[s+c].focus()}})}let Et;let wt;let kt=0;function lock(){setTimeout((()=>{if(kt++>0){return}const e=window.innerWidth-document.documentElement.clientWidth;if(e>0){Et=document.body.style.paddingRight;document.body.style.paddingRight=`${e}px`}wt=document.body.style.overflow;document.body.style.overflow=\"hidden\"}))}function unlock(){setTimeout((()=>{if(kt===0||--kt!==0){return}if(Et!==undefined){document.body.style.paddingRight=Et;Et=undefined}if(wt!==undefined){document.body.style.overflow=wt;wt=undefined}}))}const St=function Overlay({className:e,children:t,fixed:r}){p.useEffect((()=>{lock();return()=>{unlock()}}),[]);const[n,a]=p.useState(null);const o=p.useCallback((e=>{a(e)}),[]);p.useEffect((()=>{if(n==null){return}const e=maintain_tab_focus({context:n});return()=>{e.disengage()}}),[n]);return p.createElement(\"div\",{\"data-nextjs-dialog-overlay\":true,className:e,ref:o},p.createElement(\"div\",{\"data-nextjs-dialog-backdrop\":true,\"data-nextjs-dialog-backdrop-fixed\":r?true:undefined}),t)};var _t=__webpack_require__(/*! next/dist/compiled/anser */ \"../../node_modules/next/dist/compiled/anser/index.js\");var Tt=__nccwpck_require__.n(_t);const Ct=function Terminal({content:e}){const t=p.useMemo((()=>Tt().ansiToJson(e,{json:true,use_classes:true,remove_empty:true})),[e]);return p.createElement(\"div\",{\"data-nextjs-terminal\":true},p.createElement(\"pre\",null,t.map(((e,t)=>p.createElement(\"span\",{key:`terminal-entry-${t}`,style:{color:e.fg?`var(--color-${e.fg})`:undefined,...e.decoration===\"bold\"?{fontWeight:800}:e.decoration===\"italic\"?{fontStyle:\"italic\"}:undefined}},e.content)))))};const jt=function BuildError({message:e}){const t=p.useCallback((()=>{}),[]);return p.createElement(St,{fixed:true},p.createElement(h,{type:\"error\",\"aria-labelledby\":\"nextjs__container_build_error_label\",\"aria-describedby\":\"nextjs__container_build_error_desc\",onClose:t},p.createElement(y,null,p.createElement(E,{className:\"nextjs-container-build-error-header\"},p.createElement(\"h4\",{id:\"nextjs__container_build_error_label\"},\"Failed to compile\")),p.createElement(x,{className:\"nextjs-container-build-error-body\"},p.createElement(Ct,{content:e}),p.createElement(\"footer\",null,p.createElement(\"p\",{id:\"nextjs__container_build_error_desc\"},p.createElement(\"small\",null,\"This error occurred during the build process and can only be dismissed by fixing the error.\")))))))};const At=noop`\n .nextjs-container-build-error-header > h4 {\n line-height: 1.5;\n margin: 0;\n padding: 0;\n }\n\n .nextjs-container-build-error-body footer {\n margin-top: var(--size-gap);\n }\n .nextjs-container-build-error-body footer p {\n margin: 0;\n }\n\n .nextjs-container-build-error-body small {\n color: #757575;\n }\n`;const CloseIcon=()=>p.createElement(\"svg\",{width:\"24\",height:\"24\",viewBox:\"0 0 24 24\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\"},p.createElement(\"path\",{d:\"M18 6L6 18\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"}),p.createElement(\"path\",{d:\"M6 6L18 18\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"}));const Ot=function LeftRightDialogHeader({children:e,className:t,previous:r,next:n,close:a}){const o=p.useRef(null);const i=p.useRef(null);const l=p.useRef(null);const[s,u]=p.useState(null);const c=p.useCallback((e=>{u(e)}),[]);p.useEffect((()=>{if(s==null){return}const e=s.getRootNode();const t=self.document;function handler(t){if(t.key===\"ArrowLeft\"){t.stopPropagation();if(o.current){o.current.focus()}r&&r()}else if(t.key===\"ArrowRight\"){t.stopPropagation();if(i.current){i.current.focus()}n&&n()}else if(t.key===\"Escape\"){t.stopPropagation();if(e instanceof ShadowRoot){const t=e.activeElement;if(t&&t!==l.current&&t instanceof HTMLElement){t.blur();return}}if(a){a()}}}e.addEventListener(\"keydown\",handler);if(e!==t){t.addEventListener(\"keydown\",handler)}return function(){e.removeEventListener(\"keydown\",handler);if(e!==t){t.removeEventListener(\"keydown\",handler)}}}),[a,s,n,r]);p.useEffect((()=>{if(s==null){return}const e=s.getRootNode();if(e instanceof ShadowRoot){const t=e.activeElement;if(r==null){if(o.current&&t===o.current){o.current.blur()}}else if(n==null){if(i.current&&t===i.current){i.current.blur()}}}}),[s,n,r]);return p.createElement(\"div\",{\"data-nextjs-dialog-left-right\":true,className:t},p.createElement(\"nav\",{ref:c},p.createElement(\"button\",{ref:o,type:\"button\",disabled:r==null?true:undefined,\"aria-disabled\":r==null?true:undefined,onClick:r??undefined},p.createElement(\"svg\",{viewBox:\"0 0 14 14\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\"},p.createElement(\"path\",{d:\"M6.99996 1.16666L1.16663 6.99999L6.99996 12.8333M12.8333 6.99999H1.99996H12.8333Z\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"}))),p.createElement(\"button\",{ref:i,type:\"button\",disabled:n==null?true:undefined,\"aria-disabled\":n==null?true:undefined,onClick:n??undefined},p.createElement(\"svg\",{viewBox:\"0 0 14 14\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\"},p.createElement(\"path\",{d:\"M6.99996 1.16666L12.8333 6.99999L6.99996 12.8333M1.16663 6.99999H12H1.16663Z\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"}))),\" \",e),a?p.createElement(\"button\",{\"data-nextjs-errors-dialog-left-right-close-button\":true,ref:l,type:\"button\",onClick:a,\"aria-label\":\"Close\"},p.createElement(\"span\",{\"aria-hidden\":\"true\"},p.createElement(CloseIcon,null))):null)};const Nt=noop`\n [data-nextjs-dialog-left-right] {\n display: flex;\n flex-direction: row;\n align-content: center;\n align-items: center;\n justify-content: space-between;\n }\n [data-nextjs-dialog-left-right] > nav > button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n width: calc(var(--size-gap-double) + var(--size-gap));\n height: calc(var(--size-gap-double) + var(--size-gap));\n font-size: 0;\n border: none;\n background-color: rgba(255, 85, 85, 0.1);\n color: var(--color-ansi-red);\n cursor: pointer;\n transition: background-color 0.25s ease;\n }\n [data-nextjs-dialog-left-right] > nav > button > svg {\n width: auto;\n height: calc(var(--size-gap) + var(--size-gap-half));\n }\n [data-nextjs-dialog-left-right] > nav > button:hover {\n background-color: rgba(255, 85, 85, 0.2);\n }\n [data-nextjs-dialog-left-right] > nav > button:disabled {\n background-color: rgba(255, 85, 85, 0.1);\n color: rgba(255, 85, 85, 0.4);\n cursor: not-allowed;\n }\n\n [data-nextjs-dialog-left-right] > nav > button:first-of-type {\n border-radius: var(--size-gap-half) 0 0 var(--size-gap-half);\n margin-right: 1px;\n }\n [data-nextjs-dialog-left-right] > nav > button:last-of-type {\n border-radius: 0 var(--size-gap-half) var(--size-gap-half) 0;\n }\n\n [data-nextjs-dialog-left-right] > button:last-of-type {\n border: 0;\n padding: 0;\n\n background-color: transparent;\n appearance: none;\n\n opacity: 0.4;\n transition: opacity 0.25s ease;\n }\n [data-nextjs-dialog-left-right] > button:last-of-type:hover {\n opacity: 0.7;\n }\n`;const It=noop`\n [data-nextjs-toast] {\n position: fixed;\n bottom: var(--size-gap-double);\n left: var(--size-gap-double);\n max-width: 420px;\n z-index: 9000;\n }\n\n @media (max-width: 440px) {\n [data-nextjs-toast] {\n max-width: 90vw;\n left: 5vw;\n }\n }\n\n [data-nextjs-toast-wrapper] {\n padding: 16px;\n border-radius: var(--size-gap-half);\n font-weight: 500;\n color: var(--color-ansi-bright-white);\n background-color: var(--color-ansi-red);\n box-shadow: 0px var(--size-gap-double) var(--size-gap-quad)\n rgba(0, 0, 0, 0.25);\n }\n`;const Lt=function Toast({onClick:e,children:t,className:r}){return p.createElement(\"div\",{\"data-nextjs-toast\":true,onClick:e,className:r},p.createElement(\"div\",{\"data-nextjs-toast-wrapper\":true},t))};var Ft=__webpack_require__(/*! next/dist/compiled/strip-ansi */ \"../../node_modules/next/dist/compiled/strip-ansi/index.js\");var Dt=__nccwpck_require__.n(Ft);const Mt=function CodeFrame({stackFrame:e,codeFrame:t}){const r=p.useMemo((()=>{const e=t.split(/\\r?\\n/g);const r=e.map((e=>/^>? +\\d+ +\\| [ ]+/.exec(Dt()(e))===null?null:/^>? +\\d+ +\\| ( *)/.exec(Dt()(e)))).filter(Boolean).map((e=>e.pop())).reduce(((e,t)=>isNaN(e)?t.length:Math.min(e,t.length)),NaN);if(r>1){const t=\" \".repeat(r);return e.map(((e,r)=>~(r=e.indexOf(\"|\"))?e.substring(0,r)+e.substring(r).replace(t,\"\"):e)).join(\"\\n\")}return e.join(\"\\n\")}),[t]);const n=p.useMemo((()=>Tt().ansiToJson(r,{json:true,use_classes:true,remove_empty:true})),[r]);const a=p.useCallback((()=>{const t=new URLSearchParams;for(const r in e){t.append(r,(e[r]??\"\").toString())}self.fetch(`${ false||\"\"}/__nextjs_launch-editor?${t.toString()}`).then((()=>{}),(()=>{console.error(\"There was an issue opening this code in your editor.\")}))}),[e]);return p.createElement(\"div\",{\"data-nextjs-codeframe\":true},p.createElement(\"div\",null,p.createElement(\"p\",{role:\"link\",onClick:a,tabIndex:1,title:\"Click to open in your editor\"},p.createElement(\"span\",null,getFrameSource(e),\" @ \",e.methodName),p.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"},p.createElement(\"path\",{d:\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"}),p.createElement(\"polyline\",{points:\"15 3 21 3 21 9\"}),p.createElement(\"line\",{x1:\"10\",y1:\"14\",x2:\"21\",y2:\"3\"})))),p.createElement(\"pre\",null,n.map(((e,t)=>p.createElement(\"span\",{key:`frame-${t}`,style:{color:e.fg?`var(--color-${e.fg})`:undefined,...e.decoration===\"bold\"?{fontWeight:800}:e.decoration===\"italic\"?{fontStyle:\"italic\"}:undefined}},e.content)))))};const Rt=function CallStackFrame({frame:e}){const t=e.originalStackFrame??e.sourceStackFrame;const r=Boolean(e.originalCodeFrame);const n=p.useCallback((()=>{if(!r)return;const e=new URLSearchParams;for(const r in t){e.append(r,(t[r]??\"\").toString())}self.fetch(`${ false||\"\"}/__nextjs_launch-editor?${e.toString()}`).then((()=>{}),(()=>{console.error(\"There was an issue opening this code in your editor.\")}))}),[r,t]);return p.createElement(\"div\",{\"data-nextjs-call-stack-frame\":true},p.createElement(\"h6\",{\"data-nextjs-frame-expanded\":Boolean(e.expanded)},t.methodName),p.createElement(\"div\",{\"data-has-source\":r?\"true\":undefined,tabIndex:r?10:undefined,role:r?\"link\":undefined,onClick:n,title:r?\"Click to open in your editor\":undefined},p.createElement(\"span\",null,getFrameSource(t)),p.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"},p.createElement(\"path\",{d:\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"}),p.createElement(\"polyline\",{points:\"15 3 21 3 21 9\"}),p.createElement(\"line\",{x1:\"10\",y1:\"14\",x2:\"21\",y2:\"3\"}))))};const zt=function RuntimeError({error:e}){const t=p.useMemo((()=>e.frames.findIndex((e=>e.expanded&&Boolean(e.originalCodeFrame)&&Boolean(e.originalStackFrame)))),[e.frames]);const r=p.useMemo((()=>e.frames[t]??null),[e.frames,t]);const n=p.useMemo((()=>t<0?[]:e.frames.slice(0,t)),[e.frames,t]);const[a,o]=p.useState(r==null);const i=p.useCallback((()=>{o((e=>!e))}),[]);const l=p.useMemo((()=>n.filter((e=>e.expanded||a))),[a,n]);const s=p.useMemo((()=>e.frames.slice(t+1)),[e.frames,t]);const u=p.useMemo((()=>s.filter((e=>e.expanded||a))),[a,s]);const c=p.useMemo((()=>s.length!==u.length||a&&r!=null),[a,s.length,r,u.length]);return p.createElement(p.Fragment,null,r?p.createElement(p.Fragment,null,p.createElement(\"h5\",null,\"Source\"),l.map(((e,t)=>p.createElement(Rt,{key:`leading-frame-${t}-${a}`,frame:e}))),p.createElement(Mt,{stackFrame:r.originalStackFrame,codeFrame:r.originalCodeFrame})):undefined,e.componentStack?p.createElement(p.Fragment,null,p.createElement(\"h5\",null,\"Component Stack\"),e.componentStack.map(((e,t)=>p.createElement(\"div\",{key:t,\"data-nextjs-component-stack-frame\":true},p.createElement(\"h6\",null,e))))):null,u.length?p.createElement(p.Fragment,null,p.createElement(\"h5\",null,\"Call Stack\"),u.map(((e,t)=>p.createElement(Rt,{key:`call-stack-${t}-${a}`,frame:e})))):undefined,c?p.createElement(p.Fragment,null,p.createElement(\"button\",{tabIndex:10,\"data-nextjs-data-runtime-error-collapsed-action\":true,type:\"button\",onClick:i},a?\"Hide\":\"Show\",\" collapsed frames\")):undefined)};const Bt=noop`\n button[data-nextjs-data-runtime-error-collapsed-action] {\n background: none;\n border: none;\n padding: 0;\n font-size: var(--size-font-small);\n line-height: var(--size-font-bigger);\n color: var(--color-accents-3);\n }\n\n [data-nextjs-call-stack-frame]:not(:last-child),\n [data-nextjs-component-stack-frame]:not(:last-child) {\n margin-bottom: var(--size-gap-double);\n }\n\n [data-nextjs-call-stack-frame] > h6,\n [data-nextjs-component-stack-frame] > h6 {\n margin-top: 0;\n margin-bottom: var(--size-gap);\n font-family: var(--font-stack-monospace);\n color: #222;\n }\n [data-nextjs-call-stack-frame] > h6[data-nextjs-frame-expanded='false'] {\n color: #666;\n }\n [data-nextjs-call-stack-frame] > div {\n display: flex;\n align-items: center;\n padding-left: calc(var(--size-gap) + var(--size-gap-half));\n font-size: var(--size-font-small);\n color: #999;\n }\n [data-nextjs-call-stack-frame] > div > svg {\n width: auto;\n height: var(--size-font-small);\n margin-left: var(--size-gap);\n\n display: none;\n }\n\n [data-nextjs-call-stack-frame] > div[data-has-source] {\n cursor: pointer;\n }\n [data-nextjs-call-stack-frame] > div[data-has-source]:hover {\n text-decoration: underline dotted;\n }\n [data-nextjs-call-stack-frame] > div[data-has-source] > svg {\n display: unset;\n }\n`;function getErrorSignature(e){const{event:t}=e;switch(t.type){case o:case i:{return`${t.reason.name}::${t.reason.message}::${t.reason.stack}`}default:{}}const r=t;return\"\"}const Ht=function HotlinkedText(e){const{text:t}=e;const r=/https?:\\/\\/[^\\s/$.?#].[^\\s)'\"]*/i;return p.createElement(p.Fragment,null,r.test(t)?t.split(\" \").map(((e,t,n)=>{if(r.test(e)){const a=r.exec(e);return p.createElement(p.Fragment,{key:`link-${t}`},a&&p.createElement(\"a\",{href:a[0],target:\"_blank\",rel:\"noreferrer noopener\"},e),t===n.length-1?\"\":\" \")}return t===n.length-1?p.createElement(p.Fragment,{key:`text-${t}`},e):p.createElement(p.Fragment,{key:`text-${t}`},e,\" \")})):t)};const qt=function Errors({errors:e}){const[t,r]=p.useState({});const[n,a]=p.useMemo((()=>{let r=[];let n=null;for(let a=0;a0){const t=e[a-1];if(getErrorSignature(t)===getErrorSignature(o)){continue}}n=o;break}return[r,n]}),[e,t]);const o=p.useMemo((()=>n.length<1&&Boolean(e.length)),[e.length,n.length]);p.useEffect((()=>{if(a==null){return}let e=true;getErrorByType(a).then((t=>{if(e){r((e=>({...e,[t.id]:t})))}}),(()=>{}));return()=>{e=false}}),[a]);const[i,l]=p.useState(\"fullscreen\");const[s,u]=p.useState(0);const c=p.useCallback((e=>{e?.preventDefault();u((e=>Math.max(0,e-1)))}),[]);const d=p.useCallback((e=>{e?.preventDefault();u((e=>Math.max(0,Math.min(n.length-1,e+1))))}),[n.length]);const f=p.useMemo((()=>n[s]??null),[s,n]);p.useEffect((()=>{if(e.length<1){r({});l(\"hidden\");u(0)}}),[e.length]);const m=p.useCallback((e=>{e?.preventDefault();l(\"minimized\")}),[]);const b=p.useCallback((e=>{e?.preventDefault();l(\"hidden\")}),[]);const g=p.useCallback((e=>{e?.preventDefault();l(\"fullscreen\")}),[]);if(e.length<1||f==null){return null}if(o){return p.createElement(St,null)}if(i===\"hidden\"){return null}if(i===\"minimized\"){return p.createElement(Lt,{className:\"nextjs-toast-errors-parent\",onClick:g},p.createElement(\"div\",{className:\"nextjs-toast-errors\"},p.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"},p.createElement(\"circle\",{cx:\"12\",cy:\"12\",r:\"10\"}),p.createElement(\"line\",{x1:\"12\",y1:\"8\",x2:\"12\",y2:\"12\"}),p.createElement(\"line\",{x1:\"12\",y1:\"16\",x2:\"12.01\",y2:\"16\"})),p.createElement(\"span\",null,n.length,\" error\",n.length>1?\"s\":\"\"),p.createElement(\"button\",{\"data-nextjs-toast-errors-hide-button\":true,className:\"nextjs-toast-errors-hide-button\",type:\"button\",onClick:e=>{e.stopPropagation();b()},\"aria-label\":\"Hide Errors\"},p.createElement(CloseIcon,null))))}const v=[\"server\",\"edge-server\"].includes(getErrorSource(f.error)||\"\");return p.createElement(St,null,p.createElement(h,{type:\"error\",\"aria-labelledby\":\"nextjs__container_errors_label\",\"aria-describedby\":\"nextjs__container_errors_desc\",onClose:v?undefined:m},p.createElement(y,null,p.createElement(E,{className:\"nextjs-container-errors-header\"},p.createElement(Ot,{previous:s>0?c:null,next:s h1 {\n font-size: var(--size-font-big);\n line-height: var(--size-font-bigger);\n font-weight: bold;\n margin: 0;\n margin-top: calc(var(--size-gap-double) + var(--size-gap-half));\n }\n .nextjs-container-errors-header small {\n font-size: var(--size-font-small);\n color: var(--color-accents-1);\n margin-left: var(--size-gap-double);\n }\n .nextjs-container-errors-header small > span {\n font-family: var(--font-stack-monospace);\n }\n .nextjs-container-errors-header > p {\n font-family: var(--font-stack-monospace);\n font-size: var(--size-font-small);\n line-height: var(--size-font-big);\n font-weight: bold;\n margin: 0;\n margin-top: var(--size-gap-half);\n color: var(--color-ansi-red);\n white-space: pre-wrap;\n }\n .nextjs-container-errors-header > div > small {\n margin: 0;\n margin-top: var(--size-gap-half);\n }\n .nextjs-container-errors-header > p > a {\n color: var(--color-ansi-red);\n }\n\n .nextjs-container-errors-body > h5:not(:first-child) {\n margin-top: calc(var(--size-gap-double) + var(--size-gap));\n }\n .nextjs-container-errors-body > h5 {\n margin-bottom: var(--size-gap);\n }\n\n .nextjs-toast-errors-parent {\n cursor: pointer;\n transition: transform 0.2s ease;\n }\n .nextjs-toast-errors-parent:hover {\n transform: scale(1.1);\n }\n .nextjs-toast-errors {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n }\n .nextjs-toast-errors > svg {\n margin-right: var(--size-gap);\n }\n .nextjs-toast-errors-hide-button {\n margin-left: var(--size-gap-triple);\n border: none;\n background: none;\n color: var(--color-ansi-bright-white);\n padding: 0;\n transition: opacity 0.25s ease;\n opacity: 0.7;\n }\n .nextjs-toast-errors-hide-button:hover {\n opacity: 1;\n }\n`;class ErrorBoundary extends b().PureComponent{constructor(){super(...arguments);this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){this.props.onError(e,t?.componentStack||null);if(!this.props.globalOverlay){this.setState({error:e})}}render(){return this.state.error||this.props.globalOverlay&&this.props.isMounted?this.props.globalOverlay?b().createElement(\"html\",null,b().createElement(\"head\",null),b().createElement(\"body\",null)):null:this.props.children}}function Base(){return p.createElement(\"style\",null,noop`\n :host {\n --size-gap-half: 4px;\n --size-gap: 8px;\n --size-gap-double: 16px;\n --size-gap-triple: 24px;\n --size-gap-quad: 32px;\n\n --size-font-small: 14px;\n --size-font: 16px;\n --size-font-big: 20px;\n --size-font-bigger: 24px;\n\n --color-accents-1: #808080;\n --color-accents-2: #222222;\n --color-accents-3: #404040;\n\n --font-stack-monospace: 'SFMono-Regular', Consolas, 'Liberation Mono',\n Menlo, Courier, monospace;\n\n --color-ansi-selection: rgba(95, 126, 151, 0.48);\n --color-ansi-bg: #111111;\n --color-ansi-fg: #cccccc;\n\n --color-ansi-white: #777777;\n --color-ansi-black: #141414;\n --color-ansi-blue: #00aaff;\n --color-ansi-cyan: #88ddff;\n --color-ansi-green: #98ec65;\n --color-ansi-magenta: #aa88ff;\n --color-ansi-red: #ff5555;\n --color-ansi-yellow: #ffcc33;\n --color-ansi-bright-white: #ffffff;\n --color-ansi-bright-black: #777777;\n --color-ansi-bright-blue: #33bbff;\n --color-ansi-bright-cyan: #bbecff;\n --color-ansi-bright-green: #b6f292;\n --color-ansi-bright-magenta: #cebbff;\n --color-ansi-bright-red: #ff8888;\n --color-ansi-bright-yellow: #ffd966;\n }\n\n .mono {\n font-family: var(--font-stack-monospace);\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-bottom: var(--size-gap);\n font-weight: 500;\n line-height: 1.5;\n }\n\n h1 {\n font-size: 40px;\n }\n h2 {\n font-size: 32px;\n }\n h3 {\n font-size: 28px;\n }\n h4 {\n font-size: 24px;\n }\n h5 {\n font-size: 20px;\n }\n h6 {\n font-size: 16px;\n }\n `)}const Wt=noop`\n [data-nextjs-codeframe] {\n overflow: auto;\n border-radius: var(--size-gap-half);\n background-color: var(--color-ansi-bg);\n color: var(--color-ansi-fg);\n }\n [data-nextjs-codeframe]::selection,\n [data-nextjs-codeframe] *::selection {\n background-color: var(--color-ansi-selection);\n }\n [data-nextjs-codeframe] * {\n color: inherit;\n background-color: transparent;\n font-family: var(--font-stack-monospace);\n }\n\n [data-nextjs-codeframe] > * {\n margin: 0;\n padding: calc(var(--size-gap) + var(--size-gap-half))\n calc(var(--size-gap-double) + var(--size-gap-half));\n }\n [data-nextjs-codeframe] > div {\n display: inline-block;\n width: auto;\n min-width: 100%;\n border-bottom: 1px solid var(--color-ansi-bright-black);\n }\n [data-nextjs-codeframe] > div > p {\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n margin: 0;\n }\n [data-nextjs-codeframe] > div > p:hover {\n text-decoration: underline dotted;\n }\n [data-nextjs-codeframe] div > p > svg {\n width: auto;\n height: 1em;\n margin-left: 8px;\n }\n [data-nextjs-codeframe] div > pre {\n overflow: hidden;\n display: inline-block;\n }\n`;const Vt=noop`\n [data-nextjs-dialog-overlay] {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n overflow: auto;\n z-index: 9000;\n\n display: flex;\n align-content: center;\n align-items: center;\n flex-direction: column;\n padding: 10vh 15px 0;\n }\n\n @media (max-height: 812px) {\n [data-nextjs-dialog-overlay] {\n padding: 15px 15px 0;\n }\n }\n\n [data-nextjs-dialog-backdrop] {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: rgba(17, 17, 17, 0.2);\n pointer-events: all;\n z-index: -1;\n }\n\n [data-nextjs-dialog-backdrop-fixed] {\n cursor: not-allowed;\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n }\n`;const $t=noop`\n [data-nextjs-terminal] {\n border-radius: var(--size-gap-half);\n background-color: var(--color-ansi-bg);\n color: var(--color-ansi-fg);\n }\n [data-nextjs-terminal]::selection,\n [data-nextjs-terminal] *::selection {\n background-color: var(--color-ansi-selection);\n }\n [data-nextjs-terminal] * {\n color: inherit;\n background-color: transparent;\n font-family: var(--font-stack-monospace);\n }\n [data-nextjs-terminal] > * {\n margin: 0;\n padding: calc(var(--size-gap) + var(--size-gap-half))\n calc(var(--size-gap-double) + var(--size-gap-half));\n }\n\n [data-nextjs-terminal] pre {\n white-space: pre-wrap;\n word-break: break-word;\n }\n`;function ComponentStyles(){return p.createElement(\"style\",null,noop`\n ${Vt}\n ${It}\n ${w}\n ${Nt}\n ${Wt}\n ${$t}\n \n ${At}\n ${Pt}\n ${Bt}\n `)}function CssReset(){return p.createElement(\"style\",null,noop`\n :host {\n all: initial;\n\n /* the direction property is not reset by 'all' */\n direction: ltr;\n }\n\n /*!\n * Bootstrap Reboot v4.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n }\n\n article,\n aside,\n figcaption,\n figure,\n footer,\n header,\n hgroup,\n main,\n nav,\n section {\n display: block;\n }\n\n :host {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,\n 'Helvetica Neue', Arial, 'Noto Sans', sans-serif,\n 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',\n 'Noto Color Emoji';\n font-size: 16px;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff;\n }\n\n [tabindex='-1']:focus:not(:focus-visible) {\n outline: 0 !important;\n }\n\n hr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-top: 0;\n margin-bottom: 8px;\n }\n\n p {\n margin-top: 0;\n margin-bottom: 16px;\n }\n\n abbr[title],\n abbr[data-original-title] {\n text-decoration: underline;\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n -webkit-text-decoration-skip-ink: none;\n text-decoration-skip-ink: none;\n }\n\n address {\n margin-bottom: 16px;\n font-style: normal;\n line-height: inherit;\n }\n\n ol,\n ul,\n dl {\n margin-top: 0;\n margin-bottom: 16px;\n }\n\n ol ol,\n ul ul,\n ol ul,\n ul ol {\n margin-bottom: 0;\n }\n\n dt {\n font-weight: 700;\n }\n\n dd {\n margin-bottom: 8px;\n margin-left: 0;\n }\n\n blockquote {\n margin: 0 0 16px;\n }\n\n b,\n strong {\n font-weight: bolder;\n }\n\n small {\n font-size: 80%;\n }\n\n sub,\n sup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n }\n\n sub {\n bottom: -0.25em;\n }\n\n sup {\n top: -0.5em;\n }\n\n a {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n }\n\n a:hover {\n color: #0056b3;\n text-decoration: underline;\n }\n\n a:not([href]) {\n color: inherit;\n text-decoration: none;\n }\n\n a:not([href]):hover {\n color: inherit;\n text-decoration: none;\n }\n\n pre,\n code,\n kbd,\n samp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas,\n 'Liberation Mono', 'Courier New', monospace;\n font-size: 1em;\n }\n\n pre {\n margin-top: 0;\n margin-bottom: 16px;\n overflow: auto;\n }\n\n figure {\n margin: 0 0 16px;\n }\n\n img {\n vertical-align: middle;\n border-style: none;\n }\n\n svg {\n overflow: hidden;\n vertical-align: middle;\n }\n\n table {\n border-collapse: collapse;\n }\n\n caption {\n padding-top: 12px;\n padding-bottom: 12px;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n }\n\n th {\n text-align: inherit;\n }\n\n label {\n display: inline-block;\n margin-bottom: 8px;\n }\n\n button {\n border-radius: 0;\n }\n\n button:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n }\n\n input,\n button,\n select,\n optgroup,\n textarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n }\n\n button,\n input {\n overflow: visible;\n }\n\n button,\n select {\n text-transform: none;\n }\n\n select {\n word-wrap: normal;\n }\n\n button,\n [type='button'],\n [type='reset'],\n [type='submit'] {\n -webkit-appearance: button;\n }\n\n button:not(:disabled),\n [type='button']:not(:disabled),\n [type='reset']:not(:disabled),\n [type='submit']:not(:disabled) {\n cursor: pointer;\n }\n\n button::-moz-focus-inner,\n [type='button']::-moz-focus-inner,\n [type='reset']::-moz-focus-inner,\n [type='submit']::-moz-focus-inner {\n padding: 0;\n border-style: none;\n }\n\n input[type='radio'],\n input[type='checkbox'] {\n box-sizing: border-box;\n padding: 0;\n }\n\n input[type='date'],\n input[type='time'],\n input[type='datetime-local'],\n input[type='month'] {\n -webkit-appearance: listbox;\n }\n\n textarea {\n overflow: auto;\n resize: vertical;\n }\n\n fieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n }\n\n legend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: 8px;\n font-size: 24px;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n }\n\n progress {\n vertical-align: baseline;\n }\n\n [type='number']::-webkit-inner-spin-button,\n [type='number']::-webkit-outer-spin-button {\n height: auto;\n }\n\n [type='search'] {\n outline-offset: -2px;\n -webkit-appearance: none;\n }\n\n [type='search']::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n\n ::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n }\n\n output {\n display: inline-block;\n }\n\n summary {\n display: list-item;\n cursor: pointer;\n }\n\n template {\n display: none;\n }\n\n [hidden] {\n display: none !important;\n }\n `)}function pushErrorFilterDuplicates(e,t){return[...e.filter((e=>e.event.reason!==t.event.reason)),t]}function reducer(r,l){switch(l.type){case e:{return{...r,buildError:null}}case t:{return{...r,buildError:l.message}}case a:{return{...r,refreshState:{type:\"pending\",errors:[]}}}case n:{return{...r,buildError:null,errors:r.refreshState.type===\"pending\"?r.refreshState.errors:[],refreshState:{type:\"idle\"}}}case o:case i:{switch(r.refreshState.type){case\"idle\":{return{...r,nextId:r.nextId+1,errors:pushErrorFilterDuplicates(r.errors,{id:r.nextId,event:l})}}case\"pending\":{return{...r,nextId:r.nextId+1,refreshState:{...r.refreshState,errors:pushErrorFilterDuplicates(r.refreshState.errors,{id:r.nextId,event:l})}}}default:const e=r.refreshState;return r}}default:{const e=l;return r}}}const shouldPreventDisplay=(e,t)=>{if(!t||!e){return false}return t.includes(e)};const Kt=function ReactDevOverlay({children:e,preventDisplay:t,globalOverlay:r}){const[n,a]=p.useReducer(reducer,{nextId:1,buildError:null,errors:[],refreshState:{type:\"idle\"}});p.useEffect((()=>{on(a);return function(){off(a)}}),[a]);const o=p.useCallback(((e,t)=>{}),[]);const i=n.buildError!=null;const l=Boolean(n.errors.length);const s=i?\"build\":l?\"runtime\":null;const u=s!==null;return p.createElement(p.Fragment,null,p.createElement(ErrorBoundary,{globalOverlay:r,isMounted:u,onError:o},e??null),u?p.createElement(v,{globalOverlay:r},p.createElement(CssReset,null),p.createElement(Base,null),p.createElement(ComponentStyles,null),shouldPreventDisplay(s,t)?null:i?p.createElement(jt,{message:n.buildError}):l?p.createElement(qt,{errors:n.errors}):undefined):undefined)};var Zt=Kt;(0,f.patchConsoleError)();let Ut=false;let Gt=undefined;function onUnhandledError(e){const t=e?.error;if(!t||!(t instanceof Error)||typeof t.stack!==\"string\"){return}if(t.message.match(/(hydration|content does not match|did not match)/i)){if(f.hydrationErrorWarning){t.message+=\"\\n\\n\"+f.hydrationErrorWarning}t.message+=`\\n\\nSee more info here: https://nextjs.org/docs/messages/react-hydration-error`}const r=t;const n=typeof f.hydrationErrorComponentStack===\"string\"?(0,d.parseComponentStack)(f.hydrationErrorComponentStack).map((e=>e.component)):undefined;emit({type:o,reason:t,frames:parseStack(r.stack),componentStack:n})}function onUnhandledRejection(e){const t=e?.reason;if(!t||!(t instanceof Error)||typeof t.stack!==\"string\"){return}const r=t;emit({type:i,reason:t,frames:parseStack(r.stack)})}function register(){if(Ut){return}Ut=true;try{const e=Error.stackTraceLimit;Error.stackTraceLimit=50;Gt=e}catch{}window.addEventListener(\"error\",onUnhandledError);window.addEventListener(\"unhandledrejection\",onUnhandledRejection)}function unregister(){if(!Ut){return}Ut=false;if(Gt!==undefined){try{Error.stackTraceLimit=Gt}catch{}Gt=undefined}window.removeEventListener(\"error\",onUnhandledError);window.removeEventListener(\"unhandledrejection\",onUnhandledRejection)}function onBuildOk(){emit({type:e})}function onBuildError(e){emit({type:t,message:e})}function onRefresh(){emit({type:n})}function onBeforeRefresh(){emit({type:a})}}();module.exports=r})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jb21waWxlZC9AbmV4dC9yZWFjdC1kZXYtb3ZlcmxheS9kaXN0L2NsaWVudC5qcy5qcyIsIm1hcHBpbmdzIjoiO0FBQUEsWUFBWSxhQUFhLE9BQU8sa0JBQWtCLHNDQUFzQyxXQUFXLEVBQUUsc0NBQXNDLDhEQUE4RCxNQUFNLDBCQUEwQixNQUFNLGlDQUFpQyxrWUFBa1ksNkJBQTZCLHNCQUFzQixnQ0FBZ0MsYUFBYSw2RUFBNkUsbUNBQW1DLDRCQUE0Qiw4SEFBOEgsOENBQThDLFdBQVcsRUFBRSwyQkFBMkIscUJBQXFCLG1CQUFtQixzQ0FBc0MsV0FBVyxFQUFFLDBDQUEwQyxnQ0FBZ0MsV0FBVyxxQ0FBcUMseUNBQXlDLHdCQUF3QixhQUFhLGFBQWEsMkNBQTJDLE1BQU0sdUZBQXVGLE1BQU0sd0RBQXdELFFBQVEsaUZBQWlGLEdBQUcsU0FBUyw4SEFBOEgsOENBQThDLFdBQVcsRUFBRSwyQkFBMkIsdUJBQXVCLFNBQVMsZ0NBQWdDLFdBQVcsa0JBQWtCLGlCQUFpQixZQUFZLFlBQVksV0FBVyxJQUFJLHNDQUFzQyxRQUFRLFFBQVEsaUJBQWlCLGlCQUFpQixZQUFZLGtDQUFrQyxpQ0FBaUMsb0JBQW9CLFlBQVksVUFBVSx5QkFBeUIsSUFBSSxFQUFFLFVBQVUsR0FBRyxZQUFZLG9DQUFvQyxnQkFBZ0IsNERBQTRELDJCQUEyQix5QkFBeUIsS0FBSyxHQUFHLFlBQVksb0NBQW9DLGtEQUFrRCxHQUFHLFlBQVksa0NBQWtDLG9EQUFvRCw0Q0FBNEMsZUFBZSxFQUFFLHNDQUFzQyxXQUFXLEdBQUcsR0FBRyxtRUFBbUUsU0FBUyxLQUFLLFNBQVMsWUFBWSx5QkFBeUIseUJBQXlCLDJCQUEyQixVQUFVLDJCQUEyQixzQkFBc0IsMkJBQTJCLHNCQUFzQiw0QkFBNEIsdUJBQXVCLHlCQUF5QixvQkFBb0Isc0JBQXNCLGlCQUFpQixzQkFBc0IsaUJBQWlCLHFCQUFxQixnQkFBZ0IsdUJBQXVCLG1CQUFtQixFQUFF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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSwyQkFBMkI7QUFDN0IsVUFBVTtBQUNWLFVBQVU7QUFDVixVQUFVO0FBQ1YsVUFBVTtBQUNWLFVBQVU7QUFDVixVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1YsVUFBVTtBQUNWLFVBQVU7QUFDVixTQUFTLG9CQUFvQjtBQUM3QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLHdDQUF3Qyw0REFBNEQsc0JBQXNCLGVBQWUsUUFBUSxPQUFPLHNCQUFzQixRQUFRLE9BQU8sMkJBQTJCLFFBQVEsT0FBTyxtQkFBbUIsMkJBQTJCLFFBQVEsT0FBTyxtR0FBbUcsY0FBYyxlQUFlLDRCQUE0QixZQUFZLE9BQU8sa0VBQWtFLG9CQUFvQixHQUFHLGVBQWUsT0FBTyxxQ0FBcUMsMEVBQTBFLG9CQUFvQixJQUFJLCtCQUErQixVQUFVLFNBQVMsVUFBVSxXQUFXLG1DQUFtQyxXQUFXLGFBQWEsc0JBQXNCLG1DQUFtQyw0Q0FBNEMsRUFBRSxpQ0FBaUMsaURBQWlELGFBQWEsRUFBRSxrQkFBa0IsTUFBTSxrQkFBa0IsUUFBUSxPQUFPLGdDQUFnQyxNQUFNLDJCQUEyQixpQ0FBaUMsbUNBQW1DLGlCQUFpQixzRUFBc0Usc0NBQXNDLCtCQUErQixnQkFBZ0Isc0pBQXNKLHFCQUFxQix3QkFBd0IsZ0JBQWdCLHlCQUF5QixVQUFVLDBCQUEwQixhQUFhLGlCQUFpQiw2QkFBNkIsaUJBQWlCLHlEQUF5RCxPQUFPLHlFQUF5RSw0QkFBNEIsMENBQTBDLDRGQUE0RixVQUFVLG1KQUFtSixNQUFNLDREQUE0RCxFQUFFLGlDQUFpQyxrQkFBa0IseURBQXlELE9BQU8sVUFBVSxNQUFNLDJDQUEyQyxFQUFFLG9CQUFvQixPQUFPLE9BQU8sUUFBUSxJQUFJLDhCQUE4Qix5QkFBeUIsS0FBSyxPQUFPLGtEQUFrRCxtRUFBbUUsc0JBQXNCLFFBQVEsT0FBTyxTQUFTLG1CQUFtQixJQUFJLHlCQUF5QixPQUFPLGFBQWEscURBQXFELHNFQUFzRSxxQkFBcUIsTUFBTSxPQUFPLEVBQUUseUJBQXlCLE1BQU0saUJBQWlCLEVBQUUscUJBQXFCLE1BQU0sT0FBTyxFQUFFLDJCQUEyQixNQUFNLE9BQU8sR0FBRyxHQUFHLGlCQUFpQiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jb21waWxlZC9AbmV4dC9yZWFjdC1kZXYtb3ZlcmxheS9kaXN0L2NsaWVudC5qcz9hYjQ4Il0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO3ZhciBlPXs4NzY6ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QucGF0Y2hDb25zb2xlRXJyb3I9cGF0Y2hDb25zb2xlRXJyb3I7dC5oeWRyYXRpb25FcnJvckNvbXBvbmVudFN0YWNrPXQuaHlkcmF0aW9uRXJyb3JXYXJuaW5nPXZvaWQgMDtsZXQgcjt0Lmh5ZHJhdGlvbkVycm9yV2FybmluZz1yO2xldCBuO3QuaHlkcmF0aW9uRXJyb3JDb21wb25lbnRTdGFjaz1uO2NvbnN0IGE9bmV3IFNldChbJ1dhcm5pbmc6IFRleHQgY29udGVudCBkaWQgbm90IG1hdGNoLiBTZXJ2ZXI6IFwiJXNcIiBDbGllbnQ6IFwiJXNcIiVzJyxcIldhcm5pbmc6IEV4cGVjdGVkIHNlcnZlciBIVE1MIHRvIGNvbnRhaW4gYSBtYXRjaGluZyA8JXM+IGluIDwlcz4uJXNcIiwnV2FybmluZzogRXhwZWN0ZWQgc2VydmVyIEhUTUwgdG8gY29udGFpbiBhIG1hdGNoaW5nIHRleHQgbm9kZSBmb3IgXCIlc1wiIGluIDwlcz4uJXMnLFwiV2FybmluZzogRGlkIG5vdCBleHBlY3Qgc2VydmVyIEhUTUwgdG8gY29udGFpbiBhIDwlcz4gaW4gPCVzPi4lc1wiLCdXYXJuaW5nOiBEaWQgbm90IGV4cGVjdCBzZXJ2ZXIgSFRNTCB0byBjb250YWluIHRoZSB0ZXh0IG5vZGUgXCIlc1wiIGluIDwlcz4uJXMnXSk7ZnVuY3Rpb24gcGF0Y2hDb25zb2xlRXJyb3IoKXtjb25zdCBlPWNvbnNvbGUuZXJyb3I7Y29uc29sZS5lcnJvcj1mdW5jdGlvbihvLGksbCxzKXtpZihhLmhhcyhvKSl7dC5oeWRyYXRpb25FcnJvcldhcm5pbmc9cj1vLnJlcGxhY2UoXCIlc1wiLGkpLnJlcGxhY2UoXCIlc1wiLGwpLnJlcGxhY2UoXCIlc1wiLFwiXCIpO3QuaHlkcmF0aW9uRXJyb3JDb21wb25lbnRTdGFjaz1uPXN9ZS5hcHBseShjb25zb2xlLGFyZ3VtZW50cyl9fWlmKCh0eXBlb2YgdC5kZWZhdWx0PT09XCJmdW5jdGlvblwifHx0eXBlb2YgdC5kZWZhdWx0PT09XCJvYmplY3RcIiYmdC5kZWZhdWx0IT09bnVsbCkmJnR5cGVvZiB0LmRlZmF1bHQuX19lc01vZHVsZT09PVwidW5kZWZpbmVkXCIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTtPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KTtlLmV4cG9ydHM9dC5kZWZhdWx0fX0sNjU5OmZ1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LnBhcnNlQ29tcG9uZW50U3RhY2s9cGFyc2VDb21wb25lbnRTdGFjaztmdW5jdGlvbiBwYXJzZUNvbXBvbmVudFN0YWNrKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IG4gb2YgZS50cmltKCkuc3BsaXQoXCJcXG5cIikpe2NvbnN0IGU9L2F0IChbXiBdKykoIFxcKCguKilcXCkpPy8uZXhlYyhuKTtpZihlPT1udWxsP3ZvaWQgMDplWzFdKXtjb25zdCBuPWVbMV07Y29uc3QgYT1lWzNdO2lmKGE9PW51bGw/dm9pZCAwOmEuaW5jbHVkZXMoXCJuZXh0L2Rpc3RcIikpe2JyZWFrfWNvbnN0IG89YT09bnVsbD92b2lkIDA6YS5yZXBsYWNlKC9eKHdlYnBhY2staW50ZXJuYWw6XFwvXFwvXFwvfGZpbGU6XFwvXFwvKShcXCguKlxcKVxcLyk/LyxcIlwiKTt2YXIgcjtjb25zdFtpLGwsc109KHI9bz09bnVsbD92b2lkIDA6by5zcGxpdChcIjpcIikpIT1udWxsP3I6W107dC5wdXNoKHtjb21wb25lbnQ6bixmaWxlOmksbGluZU51bWJlcjpsP051bWJlcihsKTp1bmRlZmluZWQsY29sdW1uOnM/TnVtYmVyKHMpOnVuZGVmaW5lZH0pfX1yZXR1cm4gdH1pZigodHlwZW9mIHQuZGVmYXVsdD09PVwiZnVuY3Rpb25cInx8dHlwZW9mIHQuZGVmYXVsdD09PVwib2JqZWN0XCImJnQuZGVmYXVsdCE9PW51bGwpJiZ0eXBlb2YgdC5kZWZhdWx0Ll9fZXNNb2R1bGU9PT1cInVuZGVmaW5lZFwiKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7T2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCk7ZS5leHBvcnRzPXQuZGVmYXVsdH19fTt2YXIgdD17fTtmdW5jdGlvbiBfX25jY3dwY2tfcmVxdWlyZV9fKHIpe3ZhciBuPXRbcl07aWYobiE9PXVuZGVmaW5lZCl7cmV0dXJuIG4uZXhwb3J0c312YXIgYT10W3JdPXtleHBvcnRzOnt9fTt2YXIgbz10cnVlO3RyeXtlW3JdKGEsYS5leHBvcnRzLF9fbmNjd3Bja19yZXF1aXJlX18pO289ZmFsc2V9ZmluYWxseXtpZihvKWRlbGV0ZSB0W3JdfXJldHVybiBhLmV4cG9ydHN9IWZ1bmN0aW9uKCl7X19uY2N3cGNrX3JlcXVpcmVfXy5uPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlW1wiZGVmYXVsdFwiXX06ZnVuY3Rpb24oKXtyZXR1cm4gZX07X19uY2N3cGNrX3JlcXVpcmVfXy5kKHQse2E6dH0pO3JldHVybiB0fX0oKTshZnVuY3Rpb24oKXtfX25jY3dwY2tfcmVxdWlyZV9fLmQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdCl7aWYoX19uY2N3cGNrX3JlcXVpcmVfXy5vKHQscikmJiFfX25jY3dwY2tfcmVxdWlyZV9fLm8oZSxyKSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTp0cnVlLGdldDp0W3JdfSl9fX19KCk7IWZ1bmN0aW9uKCl7X19uY2N3cGNrX3JlcXVpcmVfXy5vPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfX0oKTshZnVuY3Rpb24oKXtfX25jY3dwY2tfcmVxdWlyZV9fLnI9ZnVuY3Rpb24oZSl7aWYodHlwZW9mIFN5bWJvbCE9PVwidW5kZWZpbmVkXCImJlN5bWJvbC50b1N0cmluZ1RhZyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZTpcIk1vZHVsZVwifSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KX19KCk7aWYodHlwZW9mIF9fbmNjd3Bja19yZXF1aXJlX18hPT1cInVuZGVmaW5lZFwiKV9fbmNjd3Bja19yZXF1aXJlX18uYWI9X19kaXJuYW1lK1wiL1wiO3ZhciByPXt9OyFmdW5jdGlvbigpe19fbmNjd3Bja19yZXF1aXJlX18ucihyKTtfX25jY3dwY2tfcmVxdWlyZV9fLmQocix7UmVhY3REZXZPdmVybGF5OmZ1bmN0aW9uKCl7cmV0dXJuIFp0fSxnZXRFcnJvckJ5VHlwZTpmdW5jdGlvbigpe3JldHVybiBnZXRFcnJvckJ5VHlwZX0sZ2V0U2VydmVyRXJyb3I6ZnVuY3Rpb24oKXtyZXR1cm4gZ2V0U2VydmVyRXJyb3J9LG9uQmVmb3JlUmVmcmVzaDpmdW5jdGlvbigpe3JldHVybiBvbkJlZm9yZVJlZnJlc2h9LG9uQnVpbGRFcnJvcjpmdW5jdGlvbigpe3JldHVybiBvbkJ1aWxkRXJyb3J9LG9uQnVpbGRPazpmdW5jdGlvbigpe3JldHVybiBvbkJ1aWxkT2t9LG9uUmVmcmVzaDpmdW5jdGlvbigpe3JldHVybiBvblJlZnJlc2h9LHJlZ2lzdGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHJlZ2lzdGVyfSx1bnJlZ2lzdGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHVucmVnaXN0ZXJ9fSk7Y29uc3QgZT1cImJ1aWxkLW9rXCI7Y29uc3QgdD1cImJ1aWxkLWVycm9yXCI7Y29uc3Qgbj1cImZhc3QtcmVmcmVzaFwiO2NvbnN0IGE9XCJiZWZvcmUtZmFzdC1yZWZyZXNoXCI7Y29uc3Qgbz1cInVuaGFuZGxlZC1lcnJvclwiO2NvbnN0IGk9XCJ1bmhhbmRsZWQtcmVqZWN0aW9uXCI7bGV0IGw9bmV3IFNldDtsZXQgcz1bXTtmdW5jdGlvbiBkcmFpbigpe3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7d2hpbGUoQm9vbGVhbihzLmxlbmd0aCkmJkJvb2xlYW4obC5zaXplKSl7Y29uc3QgZT1zLnNoaWZ0KCk7bC5mb3JFYWNoKCh0PT50KGUpKSl9fSksMSl9ZnVuY3Rpb24gZW1pdChlKXtzLnB1c2goT2JqZWN0LmZyZWV6ZSh7Li4uZX0pKTtkcmFpbigpfWZ1bmN0aW9uIG9uKGUpe2lmKGwuaGFzKGUpKXtyZXR1cm4gZmFsc2V9bC5hZGQoZSk7ZHJhaW4oKTtyZXR1cm4gdHJ1ZX1mdW5jdGlvbiBvZmYoZSl7aWYobC5oYXMoZSkpe2wuZGVsZXRlKGUpO3JldHVybiB0cnVlfXJldHVybiBmYWxzZX12YXIgdT1yZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3N0YWNrdHJhY2UtcGFyc2VyXCIpO2NvbnN0IGM9L1xcL19uZXh0KFxcL3N0YXRpY1xcLy4rKS9nO2Z1bmN0aW9uIHBhcnNlU3RhY2soZSl7Y29uc3QgdD0oMCx1LnBhcnNlKShlKTtyZXR1cm4gdC5tYXAoKGU9Pnt0cnl7Y29uc3QgdD1uZXcgVVJMKGUuZmlsZSk7Y29uc3Qgcj1jLmV4ZWModC5wYXRobmFtZSk7aWYocil7Y29uc3QgdD1wcm9jZXNzLmVudi5fX05FWFRfRElTVF9ESVI/LnJlcGxhY2UoL1xcXFwvZyxcIi9cIik/LnJlcGxhY2UoL1xcLyQvLFwiXCIpO2lmKHQpe2UuZmlsZT1cImZpbGU6Ly9cIit0LmNvbmNhdChyLnBvcCgpKX19fWNhdGNoe31yZXR1cm4gZX0pKX12YXIgZD1fX25jY3dwY2tfcmVxdWlyZV9fKDY1OSk7dmFyIGY9X19uY2N3cGNrX3JlcXVpcmVfXyg4NzYpO2Z1bmN0aW9uIGdldEZpbGVzeXN0ZW1GcmFtZShlKXtjb25zdCB0PXsuLi5lfTtpZih0eXBlb2YgdC5maWxlPT09XCJzdHJpbmdcIil7aWYodC5maWxlLnN0YXJ0c1dpdGgoXCIvXCIpfHwvXlthLXpdOlxcXFwvaS50ZXN0KHQuZmlsZSl8fHQuZmlsZS5zdGFydHNXaXRoKFwiXFxcXFxcXFxcIikpe3QuZmlsZT1gZmlsZTovLyR7dC5maWxlfWB9fXJldHVybiB0fWNvbnN0IG09U3ltYm9sKFwiTmV4dGpzRXJyb3JcIik7ZnVuY3Rpb24gZ2V0RXJyb3JTb3VyY2UoZSl7cmV0dXJuIGVbbV18fG51bGx9ZnVuY3Rpb24gZGVjb3JhdGVTZXJ2ZXJFcnJvcihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG0se3dyaXRhYmxlOmZhbHNlLGVudW1lcmFibGU6ZmFsc2UsY29uZmlndXJhYmxlOmZhbHNlLHZhbHVlOnR9KX1mdW5jdGlvbiBnZXRTZXJ2ZXJFcnJvcihlLHQpe2xldCByO3RyeXt0aHJvdyBuZXcgRXJyb3IoZS5tZXNzYWdlKX1jYXRjaChlKXtyPWV9ci5uYW1lPWUubmFtZTt0cnl7ci5zdGFjaz1gJHtyLnRvU3RyaW5nKCl9XFxuJHsoMCx1LnBhcnNlKShlLnN0YWNrKS5tYXAoZ2V0RmlsZXN5c3RlbUZyYW1lKS5tYXAoKGU9PntsZXQgdD1gICAgIGF0ICR7ZS5tZXRob2ROYW1lfWA7aWYoZS5maWxlKXtsZXQgcj1lLmZpbGU7aWYoZS5saW5lTnVtYmVyKXtyKz1gOiR7ZS5saW5lTnVtYmVyfWA7aWYoZS5jb2x1bW4pe3IrPWA6JHtlLmNvbHVtbn1gfX10Kz1gICgke3J9KWB9cmV0dXJuIHR9KSkuam9pbihcIlxcblwiKX1gfWNhdGNoe3Iuc3RhY2s9ZS5zdGFja31kZWNvcmF0ZVNlcnZlckVycm9yKHIsdCk7cmV0dXJuIHJ9ZnVuY3Rpb24gZ2V0T3JpZ2luYWxTdGFja0ZyYW1lKGUsdCxyKXthc3luYyBmdW5jdGlvbiBfZ2V0T3JpZ2luYWxTdGFja0ZyYW1lKCl7Y29uc3Qgbj1uZXcgVVJMU2VhcmNoUGFyYW1zO24uYXBwZW5kKFwiaXNTZXJ2ZXJcIixTdHJpbmcodD09PVwic2VydmVyXCIpKTtuLmFwcGVuZChcImlzRWRnZVNlcnZlclwiLFN0cmluZyh0PT09XCJlZGdlLXNlcnZlclwiKSk7bi5hcHBlbmQoXCJlcnJvck1lc3NhZ2VcIixyKTtmb3IoY29uc3QgdCBpbiBlKXtuLmFwcGVuZCh0LChlW3RdPz9cIlwiKS50b1N0cmluZygpKX1jb25zdCBhPW5ldyBBYm9ydENvbnRyb2xsZXI7Y29uc3Qgbz1zZXRUaW1lb3V0KCgoKT0+YS5hYm9ydCgpKSwzZTMpO2NvbnN0IGk9YXdhaXQgc2VsZi5mZXRjaChgJHtwcm9jZXNzLmVudi5fX05FWFRfUk9VVEVSX0JBU0VQQVRIfHxcIlwifS9fX25leHRqc19vcmlnaW5hbC1zdGFjay1mcmFtZT8ke24udG9TdHJpbmcoKX1gLHtzaWduYWw6YS5zaWduYWx9KS5maW5hbGx5KCgoKT0+e2NsZWFyVGltZW91dChvKX0pKTtpZighaS5va3x8aS5zdGF0dXM9PT0yMDQpe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoYXdhaXQgaS50ZXh0KCkpKX1jb25zdCBsPWF3YWl0IGkuanNvbigpO3JldHVybntlcnJvcjpmYWxzZSxyZWFzb246bnVsbCxleHRlcm5hbDpmYWxzZSxleHBhbmRlZDohQm9vbGVhbigoZS5maWxlPy5pbmNsdWRlcyhcIm5vZGVfbW9kdWxlc1wiKXx8bC5vcmlnaW5hbFN0YWNrRnJhbWU/LmZpbGU/LmluY2x1ZGVzKFwibm9kZV9tb2R1bGVzXCIpKT8/dHJ1ZSksc291cmNlU3RhY2tGcmFtZTplLG9yaWdpbmFsU3RhY2tGcmFtZTpsLm9yaWdpbmFsU3RhY2tGcmFtZSxvcmlnaW5hbENvZGVGcmFtZTpsLm9yaWdpbmFsQ29kZUZyYW1lfHxudWxsfX1pZighKGUuZmlsZT8uc3RhcnRzV2l0aChcIndlYnBhY2staW50ZXJuYWw6XCIpfHxlLmZpbGU/LnN0YXJ0c1dpdGgoXCJmaWxlOlwiKSkpe3JldHVybiBQcm9taXNlLnJlc29sdmUoe2Vycm9yOmZhbHNlLHJlYXNvbjpudWxsLGV4dGVybmFsOnRydWUsZXhwYW5kZWQ6ZmFsc2Usc291cmNlU3RhY2tGcmFtZTplLG9yaWdpbmFsU3RhY2tGcmFtZTpudWxsLG9yaWdpbmFsQ29kZUZyYW1lOm51bGx9KX1yZXR1cm4gX2dldE9yaWdpbmFsU3RhY2tGcmFtZSgpLmNhdGNoKCh0PT4oe2Vycm9yOnRydWUscmVhc29uOnQ/Lm1lc3NhZ2U/P3Q/LnRvU3RyaW5nKCk/P1wiVW5rbm93biBFcnJvclwiLGV4dGVybmFsOmZhbHNlLGV4cGFuZGVkOmZhbHNlLHNvdXJjZVN0YWNrRnJhbWU6ZSxvcmlnaW5hbFN0YWNrRnJhbWU6bnVsbCxvcmlnaW5hbENvZGVGcmFtZTpudWxsfSkpKX1mdW5jdGlvbiBnZXRPcmlnaW5hbFN0YWNrRnJhbWVzKGUsdCxyKXtyZXR1cm4gUHJvbWlzZS5hbGwoZS5tYXAoKGU9PmdldE9yaWdpbmFsU3RhY2tGcmFtZShlLHQscikpKSl9ZnVuY3Rpb24gZ2V0RnJhbWVTb3VyY2UoZSl7bGV0IHQ9XCJcIjt0cnl7Y29uc3Qgcj1uZXcgVVJMKGUuZmlsZSk7aWYodHlwZW9mIGdsb2JhbFRoaXMhPT1cInVuZGVmaW5lZFwiJiZnbG9iYWxUaGlzLmxvY2F0aW9uPy5vcmlnaW4hPT1yLm9yaWdpbil7aWYoci5vcmlnaW49PT1cIm51bGxcIil7dCs9ci5wcm90b2NvbH1lbHNle3QrPXIub3JpZ2lufX10Kz1yLnBhdGhuYW1lO3QrPVwiIFwifWNhdGNoe3QrPShlLmZpbGV8fFwiKHVua25vd24pXCIpK1wiIFwifWlmKGUubGluZU51bWJlciE9bnVsbCl7aWYoZS5jb2x1bW4hPW51bGwpe3QrPWAoJHtlLmxpbmVOdW1iZXJ9OiR7ZS5jb2x1bW59KSBgfWVsc2V7dCs9YCgke2UubGluZU51bWJlcn0pIGB9fXJldHVybiB0LnNsaWNlKDAsLTEpfWFzeW5jIGZ1bmN0aW9uIGdldEVycm9yQnlUeXBlKGUpe2NvbnN0e2lkOnQsZXZlbnQ6cn09ZTtzd2l0Y2goci50eXBlKXtjYXNlIG86Y2FzZSBpOntjb25zdCBlPXtpZDp0LHJ1bnRpbWU6dHJ1ZSxlcnJvcjpyLnJlYXNvbixmcmFtZXM6YXdhaXQgZ2V0T3JpZ2luYWxTdGFja0ZyYW1lcyhyLmZyYW1lcyxnZXRFcnJvclNvdXJjZShyLnJlYXNvbiksci5yZWFzb24udG9TdHJpbmcoKSl9O2lmKHIudHlwZT09PW8pe2UuY29tcG9uZW50U3RhY2s9ci5jb21wb25lbnRTdGFja31yZXR1cm4gZX1kZWZhdWx0OnticmVha319Y29uc3Qgbj1yO3Rocm93IG5ldyBFcnJvcihcInR5cGUgc3lzdGVtIGludmFyaWFudCB2aW9sYXRpb25cIil9dmFyIHA9cmVxdWlyZShcInJlYWN0XCIpO3ZhciBiPV9fbmNjd3Bja19yZXF1aXJlX18ubihwKTt2YXIgZz1yZXF1aXJlKFwicmVhY3QtZG9tXCIpO2NvbnN0IHY9ZnVuY3Rpb24gUG9ydGFsKHtjaGlsZHJlbjplLGdsb2JhbE92ZXJsYXk6dH0pe2xldCByPXAudXNlUmVmKG51bGwpO2xldCBuPXAudXNlUmVmKG51bGwpO2xldCBhPXAudXNlUmVmKG51bGwpO2xldFssb109cC51c2VTdGF0ZSgpO3AudXNlTGF5b3V0RWZmZWN0KCgoKT0+e2NvbnN0IGU9dD9kb2N1bWVudDpyLmN1cnJlbnQub3duZXJEb2N1bWVudDtuLmN1cnJlbnQ9ZS5jcmVhdGVFbGVtZW50KFwibmV4dGpzLXBvcnRhbFwiKTthLmN1cnJlbnQ9bi5jdXJyZW50LmF0dGFjaFNoYWRvdyh7bW9kZTpcIm9wZW5cIn0pO2UuYm9keS5hcHBlbmRDaGlsZChuLmN1cnJlbnQpO28oe30pO3JldHVybigpPT57aWYobi5jdXJyZW50JiZuLmN1cnJlbnQub3duZXJEb2N1bWVudCl7bi5jdXJyZW50Lm93bmVyRG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChuLmN1cnJlbnQpfX19KSxbdF0pO3JldHVybiBhLmN1cnJlbnQ/KDAsZy5jcmVhdGVQb3J0YWwpKGUsYS5jdXJyZW50KTp0P251bGw6cC5jcmVhdGVFbGVtZW50KFwic3BhblwiLHtyZWY6cn0pfTtmdW5jdGlvbiB1c2VPbkNsaWNrT3V0c2lkZShlLHQpe3AudXNlRWZmZWN0KCgoKT0+e2lmKGU9PW51bGx8fHQ9PW51bGwpe3JldHVybn1jb25zdCBsaXN0ZW5lcj1yPT57aWYoIWV8fGUuY29udGFpbnMoci50YXJnZXQpKXtyZXR1cm59dChyKX07Y29uc3Qgcj1lLmdldFJvb3ROb2RlKCk7ci5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsbGlzdGVuZXIpO3IuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoc3RhcnRcIixsaXN0ZW5lcik7cmV0dXJuIGZ1bmN0aW9uKCl7ci5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsbGlzdGVuZXIpO3IucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNoc3RhcnRcIixsaXN0ZW5lcil9fSksW3QsZV0pfWNvbnN0IGg9ZnVuY3Rpb24gRGlhbG9nKHtjaGlsZHJlbjplLHR5cGU6dCxvbkNsb3NlOnIsLi4ubn0pe2NvbnN0W2Esb109cC51c2VTdGF0ZShudWxsKTtjb25zdCBpPXAudXNlQ2FsbGJhY2soKGU9PntvKGUpfSksW10pO3VzZU9uQ2xpY2tPdXRzaWRlKGEscik7cC51c2VFZmZlY3QoKCgpPT57aWYoYT09bnVsbCl7cmV0dXJufWNvbnN0IGU9YS5nZXRSb290Tm9kZSgpO2lmKCEoZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QpKXtyZXR1cm59Y29uc3QgdD1lO2Z1bmN0aW9uIGhhbmRsZXIoZSl7Y29uc3Qgcj10LmFjdGl2ZUVsZW1lbnQ7aWYoZS5rZXk9PT1cIkVudGVyXCImJnIgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmci5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpPT09XCJsaW5rXCIpe2UucHJldmVudERlZmF1bHQoKTtlLnN0b3BQcm9wYWdhdGlvbigpO3IuY2xpY2soKX19dC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLGhhbmRsZXIpO3JldHVybigpPT50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsaGFuZGxlcil9KSxbYV0pO3JldHVybiBwLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7cmVmOmksXCJkYXRhLW5leHRqcy1kaWFsb2dcIjp0cnVlLHRhYkluZGV4Oi0xLHJvbGU6XCJkaWFsb2dcIixcImFyaWEtbGFiZWxsZWRieVwiOm5bXCJhcmlhLWxhYmVsbGVkYnlcIl0sXCJhcmlhLWRlc2NyaWJlZGJ5XCI6bltcImFyaWEtZGVzY3JpYmVkYnlcIl0sXCJhcmlhLW1vZGFsXCI6XCJ0cnVlXCJ9LHAuY3JlYXRlRWxlbWVudChcImRpdlwiLHtcImRhdGEtbmV4dGpzLWRpYWxvZy1iYW5uZXJcIjp0cnVlLGNsYXNzTmFtZTpgYmFubmVyLSR7dH1gfSksZSl9O2NvbnN0IHg9ZnVuY3Rpb24gRGlhbG9nQm9keSh7Y2hpbGRyZW46ZSxjbGFzc05hbWU6dH0pe3JldHVybiBwLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7XCJkYXRhLW5leHRqcy1kaWFsb2ctYm9keVwiOnRydWUsY2xhc3NOYW1lOnR9LGUpfTtjb25zdCB5PWZ1bmN0aW9uIERpYWxvZ0NvbnRlbnQoe2NoaWxkcmVuOmUsY2xhc3NOYW1lOnR9KXtyZXR1cm4gcC5jcmVhdGVFbGVtZW50KFwiZGl2XCIse1wiZGF0YS1uZXh0anMtZGlhbG9nLWNvbnRlbnRcIjp0cnVlLGNsYXNzTmFtZTp0fSxlKX07Y29uc3QgRT1mdW5jdGlvbiBEaWFsb2dIZWFkZXIoe2NoaWxkcmVuOmUsY2xhc3NOYW1lOnR9KXtyZXR1cm4gcC5jcmVhdGVFbGVtZW50KFwiZGl2XCIse1wiZGF0YS1uZXh0anMtZGlhbG9nLWhlYWRlclwiOnRydWUsY2xhc3NOYW1lOnR9LGUpfTtmdW5jdGlvbiBub29wKGUsLi4udCl7Y29uc3Qgcj1lLmxlbmd0aC0xO3JldHVybiBlLnNsaWNlKDAscikucmVkdWNlKCgoZSxyLG4pPT5lK3IrdFtuXSksXCJcIikrZVtyXX1jb25zdCB3PW5vb3BgXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ddIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2l6ZS1nYXApO1xuICAgIGJveC1zaGFkb3c6IDAgdmFyKC0tc2l6ZS1nYXAtaGFsZikgdmFyKC0tc2l6ZS1nYXAtZG91YmxlKVxuICAgICAgcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSA1NnB4KTtcbiAgICBvdmVyZmxvdy15OiBoaWRkZW47XG4gIH1cblxuICBAbWVkaWEgKG1heC1oZWlnaHQ6IDgxMnB4KSB7XG4gICAgW2RhdGEtbmV4dGpzLWRpYWxvZy1vdmVybGF5XSB7XG4gICAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSAxNXB4KTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgICBbZGF0YS1uZXh0anMtZGlhbG9nXSB7XG4gICAgICBtYXgtd2lkdGg6IDU0MHB4O1xuICAgICAgYm94LXNoYWRvdzogMCB2YXIoLS1zaXplLWdhcCkgdmFyKC0tc2l6ZS1nYXAtcXVhZCkgcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICBbZGF0YS1uZXh0anMtZGlhbG9nXSB7XG4gICAgICBtYXgtd2lkdGg6IDcyMHB4O1xuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAgIFtkYXRhLW5leHRqcy1kaWFsb2ddIHtcbiAgICAgIG1heC13aWR0aDogOTYwcHg7XG4gICAgfVxuICB9XG5cbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1iYW5uZXJdIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1iYW5uZXJdLmJhbm5lci13YXJuaW5nIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWFuc2kteWVsbG93KTtcbiAgfVxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWJhbm5lcl0uYmFubmVyLWVycm9yIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktcmVkKTtcbiAgfVxuXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctYmFubmVyXTo6YWZ0ZXIge1xuICAgIHotaW5kZXg6IDI7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICAvKiBiYW5uZXIgd2lkdGg6ICovXG4gICAgYm9yZGVyLXRvcC13aWR0aDogdmFyKC0tc2l6ZS1nYXAtaGFsZik7XG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbiAgICBib3JkZXItdG9wLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItdG9wLWNvbG9yOiBpbmhlcml0O1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xuICB9XG5cbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1jb250ZW50XSB7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgbWFyZ2luOiAwO1xuICAgIC8qIGNhbGMocGFkZGluZyArIGJhbm5lciB3aWR0aCBvZmZzZXQpICovXG4gICAgcGFkZGluZzogY2FsYyh2YXIoLS1zaXplLWdhcC1kb3VibGUpICsgdmFyKC0tc2l6ZS1nYXAtaGFsZikpXG4gICAgICB2YXIoLS1zaXplLWdhcC1kb3VibGUpO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1jb250ZW50XSA+IFtkYXRhLW5leHRqcy1kaWFsb2ctaGVhZGVyXSB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc2l6ZS1nYXAtZG91YmxlKTtcbiAgfVxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWNvbnRlbnRdID4gW2RhdGEtbmV4dGpzLWRpYWxvZy1ib2R5XSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICB9XG5gO3ZhciBrPXJlcXVpcmUoXCJuZXh0L2Rpc3QvY29tcGlsZWQvcGxhdGZvcm1cIik7dmFyIFM9X19uY2N3cGNrX3JlcXVpcmVfXy5uKGspO3ZhciBfPXJlcXVpcmUoXCJuZXh0L2Rpc3QvY29tcGlsZWQvY3NzLmVzY2FwZVwiKTt2YXIgVD1fX25jY3dwY2tfcmVxdWlyZV9fLm4oXyk7ZnVuY3Rpb24gbm9kZUFycmF5KGUpe2lmKCFlKXtyZXR1cm5bXX1pZihBcnJheS5pc0FycmF5KGUpKXtyZXR1cm4gZX1pZihlLm5vZGVUeXBlIT09dW5kZWZpbmVkKXtyZXR1cm5bZV19aWYodHlwZW9mIGU9PT1cInN0cmluZ1wiKXtlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoZSl9aWYoZS5sZW5ndGghPT11bmRlZmluZWQpe3JldHVybltdLnNsaWNlLmNhbGwoZSwwKX10aHJvdyBuZXcgVHlwZUVycm9yKFwidW5leHBlY3RlZCBpbnB1dCBcIitTdHJpbmcoZSkpfWZ1bmN0aW9uIGNvbnRleHRUb0VsZW1lbnQoZSl7dmFyIHQ9ZS5jb250ZXh0LHI9ZS5sYWJlbCxuPXI9PT11bmRlZmluZWQ/XCJjb250ZXh0LXRvLWVsZW1lbnRcIjpyLGE9ZS5yZXNvbHZlRG9jdW1lbnQsbz1lLmRlZmF1bHRUb0RvY3VtZW50O3ZhciBpPW5vZGVBcnJheSh0KVswXTtpZihhJiZpJiZpLm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9OT0RFKXtpPWkuZG9jdW1lbnRFbGVtZW50fWlmKCFpJiZvKXtyZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fWlmKCFpKXt0aHJvdyBuZXcgVHlwZUVycm9yKG4rXCIgcmVxdWlyZXMgdmFsaWQgb3B0aW9ucy5jb250ZXh0XCIpfWlmKGkubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERSYmaS5ub2RlVHlwZSE9PU5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSl7dGhyb3cgbmV3IFR5cGVFcnJvcihuK1wiIHJlcXVpcmVzIG9wdGlvbnMuY29udGV4dCB0byBiZSBhbiBFbGVtZW50XCIpfXJldHVybiBpfWZ1bmN0aW9uIGdldFNoYWRvd0hvc3QoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e30sdD1lLmNvbnRleHQ7dmFyIHI9Y29udGV4dFRvRWxlbWVudCh7bGFiZWw6XCJnZXQvc2hhZG93LWhvc3RcIixjb250ZXh0OnR9KTt2YXIgbj1udWxsO3doaWxlKHIpe249cjtyPXIucGFyZW50Tm9kZX1pZihuLm5vZGVUeXBlPT09bi5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFJiZuLmhvc3Qpe3JldHVybiBuLmhvc3R9cmV0dXJuIG51bGx9ZnVuY3Rpb24gZ2V0RG9jdW1lbnQoZSl7aWYoIWUpe3JldHVybiBkb2N1bWVudH1pZihlLm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9OT0RFKXtyZXR1cm4gZX1yZXR1cm4gZS5vd25lckRvY3VtZW50fHxkb2N1bWVudH1mdW5jdGlvbiBpc0FjdGl2ZUVsZW1lbnQoZSl7dmFyIHQ9Y29udGV4dFRvRWxlbWVudCh7bGFiZWw6XCJpcy9hY3RpdmUtZWxlbWVudFwiLHJlc29sdmVEb2N1bWVudDp0cnVlLGNvbnRleHQ6ZX0pO3ZhciByPWdldERvY3VtZW50KHQpO2lmKHIuYWN0aXZlRWxlbWVudD09PXQpe3JldHVybiB0cnVlfXZhciBuPWdldFNoYWRvd0hvc3Qoe2NvbnRleHQ6dH0pO2lmKG4mJm4uc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50PT09dCl7cmV0dXJuIHRydWV9cmV0dXJuIGZhbHNlfWZ1bmN0aW9uIGdldFBhcmVudHMoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e30sdD1lLmNvbnRleHQ7dmFyIHI9W107dmFyIG49Y29udGV4dFRvRWxlbWVudCh7bGFiZWw6XCJnZXQvcGFyZW50c1wiLGNvbnRleHQ6dH0pO3doaWxlKG4pe3IucHVzaChuKTtuPW4ucGFyZW50Tm9kZTtpZihuJiZuLm5vZGVUeXBlIT09Tm9kZS5FTEVNRU5UX05PREUpe249bnVsbH19cmV0dXJuIHJ9dmFyIEM9W1wibWF0Y2hlc1wiLFwid2Via2l0TWF0Y2hlc1NlbGVjdG9yXCIsXCJtb3pNYXRjaGVzU2VsZWN0b3JcIixcIm1zTWF0Y2hlc1NlbGVjdG9yXCJdO3ZhciBqPW51bGw7ZnVuY3Rpb24gZmluZE1ldGhvZE5hbWUoZSl7Qy5zb21lKChmdW5jdGlvbih0KXtpZighZVt0XSl7cmV0dXJuIGZhbHNlfWo9dDtyZXR1cm4gdHJ1ZX0pKX1mdW5jdGlvbiBlbGVtZW50TWF0Y2hlcyhlLHQpe2lmKCFqKXtmaW5kTWV0aG9kTmFtZShlKX1yZXR1cm4gZVtqXSh0KX12YXIgQT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KFMoKSkpO3ZhciBPPUEub3MuZmFtaWx5fHxcIlwiO3ZhciBOPU89PT1cIkFuZHJvaWRcIjt2YXIgST1PLnNsaWNlKDAsNyk9PT1cIldpbmRvd3NcIjt2YXIgTD1PPT09XCJPUyBYXCI7dmFyIEY9Tz09PVwiaU9TXCI7dmFyIEQ9QS5sYXlvdXQ9PT1cIkJsaW5rXCI7dmFyIE09QS5sYXlvdXQ9PT1cIkdlY2tvXCI7dmFyIFI9QS5sYXlvdXQ9PT1cIlRyaWRlbnRcIjt2YXIgej1BLmxheW91dD09PVwiRWRnZUhUTUxcIjt2YXIgQj1BLmxheW91dD09PVwiV2ViS2l0XCI7dmFyIEg9cGFyc2VGbG9hdChBLnZlcnNpb24pO3ZhciBxPU1hdGguZmxvb3IoSCk7QS5tYWpvclZlcnNpb249cTtBLmlzPXtBTkRST0lEOk4sV0lORE9XUzpJLE9TWDpMLElPUzpGLEJMSU5LOkQsR0VDS086TSxUUklERU5UOlIsRURHRTp6LFdFQktJVDpCLElFOTpSJiZxPT09OSxJRTEwOlImJnE9PT0xMCxJRTExOlImJnE9PT0xMX07ZnVuY3Rpb24gYmVmb3JlKCl7dmFyIGU9e2FjdGl2ZUVsZW1lbnQ6ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCx3aW5kb3dTY3JvbGxUb3A6d2luZG93LnNjcm9sbFRvcCx3aW5kb3dTY3JvbGxMZWZ0OndpbmRvdy5zY3JvbGxMZWZ0LGJvZHlTY3JvbGxUb3A6ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AsYm9keVNjcm9sbExlZnQ6ZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0fTt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaWZyYW1lXCIpO3Quc2V0QXR0cmlidXRlKFwic3R5bGVcIixcInBvc2l0aW9uOmFic29sdXRlOyBwb3NpdGlvbjpmaXhlZDsgdG9wOjA7IGxlZnQ6LTJweDsgd2lkdGg6MXB4OyBoZWlnaHQ6MXB4OyBvdmVyZmxvdzpoaWRkZW47XCIpO3Quc2V0QXR0cmlidXRlKFwiYXJpYS1saXZlXCIsXCJvZmZcIik7dC5zZXRBdHRyaWJ1dGUoXCJhcmlhLWJ1c3lcIixcInRydWVcIik7dC5zZXRBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiLFwidHJ1ZVwiKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHQpO3ZhciByPXQuY29udGVudFdpbmRvdzt2YXIgbj1yLmRvY3VtZW50O24ub3BlbigpO24uY2xvc2UoKTt2YXIgYT1uLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7bi5ib2R5LmFwcGVuZENoaWxkKGEpO2UuaWZyYW1lPXQ7ZS53cmFwcGVyPWE7ZS53aW5kb3c9cjtlLmRvY3VtZW50PW47cmV0dXJuIGV9ZnVuY3Rpb24gdGVzdChlLHQpe2Uud3JhcHBlci5pbm5lckhUTUw9XCJcIjt2YXIgcj10eXBlb2YgdC5lbGVtZW50PT09XCJzdHJpbmdcIj9lLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodC5lbGVtZW50KTp0LmVsZW1lbnQoZS53cmFwcGVyLGUuZG9jdW1lbnQpO3ZhciBuPXQubXV0YXRlJiZ0Lm11dGF0ZShyLGUud3JhcHBlcixlLmRvY3VtZW50KTtpZighbiYmbiE9PWZhbHNlKXtuPXJ9IXIucGFyZW50Tm9kZSYmZS53cmFwcGVyLmFwcGVuZENoaWxkKHIpO24mJm4uZm9jdXMmJm4uZm9jdXMoKTtyZXR1cm4gdC52YWxpZGF0ZT90LnZhbGlkYXRlKHIsbixlLmRvY3VtZW50KTplLmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT1ufWZ1bmN0aW9uIGFmdGVyKGUpe2lmKGUuYWN0aXZlRWxlbWVudD09PWRvY3VtZW50LmJvZHkpe2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQmJmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1ciYmZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5ibHVyKCk7aWYoQS5pcy5JRTEwKXtkb2N1bWVudC5ib2R5LmZvY3VzKCl9fWVsc2V7ZS5hY3RpdmVFbGVtZW50JiZlLmFjdGl2ZUVsZW1lbnQuZm9jdXMmJmUuYWN0aXZlRWxlbWVudC5mb2N1cygpfWRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZS5pZnJhbWUpO3dpbmRvdy5zY3JvbGxUb3A9ZS53aW5kb3dTY3JvbGxUb3A7d2luZG93LnNjcm9sbExlZnQ9ZS53aW5kb3dTY3JvbGxMZWZ0O2RvY3VtZW50LmJvZHkuc2Nyb2xsVG9wPWUuYm9keVNjcm9sbFRvcDtkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQ9ZS5ib2R5U2Nyb2xsTGVmdH1mdW5jdGlvbiBkZXRlY3RGb2N1cyhlKXt2YXIgdD1iZWZvcmUoKTt2YXIgcj17fTtPYmplY3Qua2V5cyhlKS5tYXAoKGZ1bmN0aW9uKG4pe3Jbbl09dGVzdCh0LGVbbl0pfSkpO2FmdGVyKHQpO3JldHVybiByfXZhciBQPVwiMS40LjFcIjtmdW5jdGlvbiByZWFkTG9jYWxTdG9yYWdlKGUpe3ZhciB0PXZvaWQgMDt0cnl7dD13aW5kb3cubG9jYWxTdG9yYWdlJiZ3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oZSk7dD10P0pTT04ucGFyc2UodCk6e319Y2F0Y2goZSl7dD17fX1yZXR1cm4gdH1mdW5jdGlvbiB3cml0ZUxvY2FsU3RvcmFnZShlLHQpe2lmKCFkb2N1bWVudC5oYXNGb2N1cygpKXt0cnl7d2luZG93LmxvY2FsU3RvcmFnZSYmd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGUpfWNhdGNoKGUpe31yZXR1cm59dHJ5e3dpbmRvdy5sb2NhbFN0b3JhZ2UmJndpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShlLEpTT04uc3RyaW5naWZ5KHQpKX1jYXRjaChlKXt9fXZhciBXPXR5cGVvZiB3aW5kb3chPT1cInVuZGVmaW5lZFwiJiZ3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudHx8XCJcIjt2YXIgVj1cImFsbHktc3VwcG9ydHMtY2FjaGVcIjt2YXIgJD1yZWFkTG9jYWxTdG9yYWdlKFYpO2lmKCQudXNlckFnZW50IT09V3x8JC52ZXJzaW9uIT09UCl7JD17fX0kLnVzZXJBZ2VudD1XOyQudmVyc2lvbj1QO3ZhciBLPXtnZXQ6ZnVuY3Rpb24gZ2V0KCl7cmV0dXJuICR9LHNldDpmdW5jdGlvbiBzZXQoZSl7T2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7JFt0XT1lW3RdfSkpOyQudGltZT0obmV3IERhdGUpLnRvSVNPU3RyaW5nKCk7d3JpdGVMb2NhbFN0b3JhZ2UoViwkKX19O2Z1bmN0aW9uIGNzc1NoYWRvd1BpZXJjaW5nRGVlcENvbWJpbmF0b3IoKXt2YXIgZT12b2lkIDA7dHJ5e2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJodG1sID4+PiA6Zmlyc3QtY2hpbGRcIik7ZT1cIj4+PlwifWNhdGNoKHQpe3RyeXtkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiaHRtbCAvZGVlcC8gOmZpcnN0LWNoaWxkXCIpO2U9XCIvZGVlcC9cIn1jYXRjaCh0KXtlPVwiXCJ9fXJldHVybiBlfXZhciBaPVwiZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFJQUFBQUFBQVAvLy95SDVCQUVBQUFBQUxBQUFBQUFCQUFFQUFBSUJSQUE3XCI7dmFyIFU9e2VsZW1lbnQ6XCJkaXZcIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2UuaW5uZXJIVE1MPSc8bWFwIG5hbWU9XCJpbWFnZS1tYXAtdGFiaW5kZXgtdGVzdFwiPicrJzxhcmVhIHNoYXBlPVwicmVjdFwiIGNvb3Jkcz1cIjYzLDE5LDE0NCw0NVwiPjwvbWFwPicrJzxpbWcgdXNlbWFwPVwiI2ltYWdlLW1hcC10YWJpbmRleC10ZXN0XCIgdGFiaW5kZXg9XCItMVwiIGFsdD1cIlwiIHNyYz1cIicrWisnXCI+JztyZXR1cm4gZS5xdWVyeVNlbGVjdG9yKFwiYXJlYVwiKX19O3ZhciBHPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLmlubmVySFRNTD0nPG1hcCBuYW1lPVwiaW1hZ2UtbWFwLXRhYmluZGV4LXRlc3RcIj4nKyc8YXJlYSBocmVmPVwiI3ZvaWRcIiB0YWJpbmRleD1cIi0xXCIgc2hhcGU9XCJyZWN0XCIgY29vcmRzPVwiNjMsMTksMTQ0LDQ1XCI+PC9tYXA+JysnPGltZyB1c2VtYXA9XCIjaW1hZ2UtbWFwLXRhYmluZGV4LXRlc3RcIiBhbHQ9XCJcIiBzcmM9XCInK1orJ1wiPic7cmV0dXJuIGZhbHNlfSx2YWxpZGF0ZTpmdW5jdGlvbiB2YWxpZGF0ZShlLHQscil7aWYoQS5pcy5HRUNLTyl7cmV0dXJuIHRydWV9dmFyIG49ZS5xdWVyeVNlbGVjdG9yKFwiYXJlYVwiKTtuLmZvY3VzKCk7cmV0dXJuIHIuYWN0aXZlRWxlbWVudD09PW59fTt2YXIgWD17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5pbm5lckhUTUw9JzxtYXAgbmFtZT1cImltYWdlLW1hcC1hcmVhLWhyZWYtdGVzdFwiPicrJzxhcmVhIHNoYXBlPVwicmVjdFwiIGNvb3Jkcz1cIjYzLDE5LDE0NCw0NVwiPjwvbWFwPicrJzxpbWcgdXNlbWFwPVwiI2ltYWdlLW1hcC1hcmVhLWhyZWYtdGVzdFwiIGFsdD1cIlwiIHNyYz1cIicrWisnXCI+JztyZXR1cm4gZS5xdWVyeVNlbGVjdG9yKFwiYXJlYVwiKX0sdmFsaWRhdGU6ZnVuY3Rpb24gdmFsaWRhdGUoZSx0LHIpe2lmKEEuaXMuR0VDS08pe3JldHVybiB0cnVlfXJldHVybiByLmFjdGl2ZUVsZW1lbnQ9PT10fX07dmFyIEo9e25hbWU6XCJjYW4tZm9jdXMtYXVkaW8td2l0aG91dC1jb250cm9sc1wiLGVsZW1lbnQ6XCJhdWRpb1wiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7dHJ5e2Uuc2V0QXR0cmlidXRlKFwic3JjXCIsWil9Y2F0Y2goZSl7fX19O3ZhciBRPVwiZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFJQUFBQUFBQVAvLy9aWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXCI7dmFyIFk9e2VsZW1lbnQ6XCJkaXZcIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2UuaW5uZXJIVE1MPSc8bWFwIG5hbWU9XCJicm9rZW4taW1hZ2UtbWFwLXRlc3RcIj48YXJlYSBocmVmPVwiI3ZvaWRcIiBzaGFwZT1cInJlY3RcIiBjb29yZHM9XCI2MywxOSwxNDQsNDVcIj48L21hcD4nKyc8aW1nIHVzZW1hcD1cIiNicm9rZW4taW1hZ2UtbWFwLXRlc3RcIiBhbHQ9XCJcIiBzcmM9XCInK1ErJ1wiPic7cmV0dXJuIGUucXVlcnlTZWxlY3RvcihcImFyZWFcIil9fTt2YXIgZWU9e2VsZW1lbnQ6XCJkaXZcIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2Uuc2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIixcIi0xXCIpO2Uuc2V0QXR0cmlidXRlKFwic3R5bGVcIixcImRpc3BsYXk6IC13ZWJraXQtZmxleDsgZGlzcGxheTogLW1zLWZsZXhib3g7IGRpc3BsYXk6IGZsZXg7XCIpO2UuaW5uZXJIVE1MPSc8c3BhbiBzdHlsZT1cImRpc3BsYXk6IGJsb2NrO1wiPmhlbGxvPC9zcGFuPic7cmV0dXJuIGUucXVlcnlTZWxlY3RvcihcInNwYW5cIil9fTt2YXIgdGU9e2VsZW1lbnQ6XCJmaWVsZHNldFwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5zZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiLDApO2Uuc2V0QXR0cmlidXRlKFwiZGlzYWJsZWRcIixcImRpc2FibGVkXCIpfX07dmFyIHJlPXtlbGVtZW50OlwiZmllbGRzZXRcIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2UuaW5uZXJIVE1MPVwiPGxlZ2VuZD5sZWdlbmQ8L2xlZ2VuZD48cD5jb250ZW50PC9wPlwifX07dmFyIG5lPXtlbGVtZW50Olwic3BhblwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5zZXRBdHRyaWJ1dGUoXCJzdHlsZVwiLFwiZGlzcGxheTogLXdlYmtpdC1mbGV4OyBkaXNwbGF5OiAtbXMtZmxleGJveDsgZGlzcGxheTogZmxleDtcIik7ZS5pbm5lckhUTUw9JzxzcGFuIHN0eWxlPVwiZGlzcGxheTogYmxvY2s7XCI+aGVsbG88L3NwYW4+J319O3ZhciBhZT17ZWxlbWVudDpcImZvcm1cIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2Uuc2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIiwwKTtlLnNldEF0dHJpYnV0ZShcImRpc2FibGVkXCIsXCJkaXNhYmxlZFwiKX19O3ZhciBvZT17ZWxlbWVudDpcImFcIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2UuaHJlZj1cIiN2b2lkXCI7ZS5pbm5lckhUTUw9JzxpbWcgaXNtYXAgc3JjPVwiJytaKydcIiBhbHQ9XCJcIj4nO3JldHVybiBlLnF1ZXJ5U2VsZWN0b3IoXCJpbWdcIil9fTt2YXIgaWU9e2VsZW1lbnQ6XCJkaXZcIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2UuaW5uZXJIVE1MPSc8bWFwIG5hbWU9XCJpbWFnZS1tYXAtdGFiaW5kZXgtdGVzdFwiPjxhcmVhIGhyZWY9XCIjdm9pZFwiIHNoYXBlPVwicmVjdFwiIGNvb3Jkcz1cIjYzLDE5LDE0NCw0NVwiPjwvbWFwPicrJzxpbWcgdXNlbWFwPVwiI2ltYWdlLW1hcC10YWJpbmRleC10ZXN0XCIgdGFiaW5kZXg9XCItMVwiIGFsdD1cIlwiICcrJ3NyYz1cIicrWisnXCI+JztyZXR1cm4gZS5xdWVyeVNlbGVjdG9yKFwiaW1nXCIpfX07dmFyIGxlPXtlbGVtZW50OmZ1bmN0aW9uIGVsZW1lbnQoZSx0KXt2YXIgcj10LmNyZWF0ZUVsZW1lbnQoXCJpZnJhbWVcIik7ZS5hcHBlbmRDaGlsZChyKTt2YXIgbj1yLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7bi5vcGVuKCk7bi5jbG9zZSgpO3JldHVybiByfSxtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2Uuc3R5bGUudmlzaWJpbGl0eT1cImhpZGRlblwiO3ZhciB0PWUuY29udGVudFdpbmRvdy5kb2N1bWVudDt2YXIgcj10LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTt0LmJvZHkuYXBwZW5kQ2hpbGQocik7cmV0dXJuIHJ9LHZhbGlkYXRlOmZ1bmN0aW9uIHZhbGlkYXRlKGUpe3ZhciB0PWUuY29udGVudFdpbmRvdy5kb2N1bWVudDt2YXIgcj10LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKTtyZXR1cm4gdC5hY3RpdmVFbGVtZW50PT09cn19O3ZhciBzZT0hQS5pcy5XRUJLSVQ7ZnVuY3Rpb24gZm9jdXNJblplcm9EaW1lbnNpb25PYmplY3QoKXtyZXR1cm4gc2V9dmFyIHVlPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsXCJpbnZhbGlkLXZhbHVlXCIpfX07dmFyIGNlPXtlbGVtZW50OlwibGFiZWxcIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2Uuc2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIixcIi0xXCIpfSx2YWxpZGF0ZTpmdW5jdGlvbiB2YWxpZGF0ZShlLHQscil7dmFyIG49ZS5vZmZzZXRIZWlnaHQ7ZS5mb2N1cygpO3JldHVybiByLmFjdGl2ZUVsZW1lbnQ9PT1lfX07dmFyIGRlPVwiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpSUhodGJcIitcIkc1ek9uaHNhVzVyUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMM2hzYVc1cklpQnBaRDBpYzNabklqNDhkR1Y0ZENCNFBTSXhNQ0lnZVQwaU1qQWlJR2xrUFNKXCIrXCJ6ZG1jdGJHbHVheTEwWlhoMElqNTBaWGgwUEM5MFpYaDBQand2YzNablBnPT1cIjt2YXIgZmU9e2VsZW1lbnQ6XCJvYmplY3RcIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2Uuc2V0QXR0cmlidXRlKFwidHlwZVwiLFwiaW1hZ2Uvc3ZnK3htbFwiKTtlLnNldEF0dHJpYnV0ZShcImRhdGFcIixkZSk7ZS5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLFwiMjAwXCIpO2Uuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsXCI1MFwiKTtlLnN0eWxlLnZpc2liaWxpdHk9XCJoaWRkZW5cIn19O3ZhciBtZT17bmFtZTpcImNhbi1mb2N1cy1vYmplY3Qtc3ZnXCIsZWxlbWVudDpcIm9iamVjdFwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsXCJpbWFnZS9zdmcreG1sXCIpO2Uuc2V0QXR0cmlidXRlKFwiZGF0YVwiLGRlKTtlLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsXCIyMDBcIik7ZS5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIixcIjUwXCIpfSx2YWxpZGF0ZTpmdW5jdGlvbiB2YWxpZGF0ZShlLHQscil7aWYoQS5pcy5HRUNLTyl7cmV0dXJuIHRydWV9cmV0dXJuIHIuYWN0aXZlRWxlbWVudD09PWV9fTt2YXIgcGU9IUEuaXMuSUU5O2Z1bmN0aW9uIGZvY3VzT2JqZWN0U3dmKCl7cmV0dXJuIHBlfXZhciBiZT17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5pbm5lckhUTUw9JzxtYXAgbmFtZT1cImZvY3VzLXJlZGlyZWN0LWltZy11c2VtYXBcIj48YXJlYSBocmVmPVwiI3ZvaWRcIiBzaGFwZT1cInJlY3RcIiBjb29yZHM9XCI2MywxOSwxNDQsNDVcIj48L21hcD4nKyc8aW1nIHVzZW1hcD1cIiNmb2N1cy1yZWRpcmVjdC1pbWctdXNlbWFwXCIgYWx0PVwiXCIgJysnc3JjPVwiJytaKydcIj4nO3JldHVybiBlLnF1ZXJ5U2VsZWN0b3IoXCJpbWdcIil9LHZhbGlkYXRlOmZ1bmN0aW9uIHZhbGlkYXRlKGUsdCxyKXt2YXIgbj1lLnF1ZXJ5U2VsZWN0b3IoXCJhcmVhXCIpO3JldHVybiByLmFjdGl2ZUVsZW1lbnQ9PT1ufX07dmFyIGdlPXtlbGVtZW50OlwiZmllbGRzZXRcIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2UuaW5uZXJIVE1MPSc8bGVnZW5kPmxlZ2VuZDwvbGVnZW5kPjxpbnB1dCB0YWJpbmRleD1cIi0xXCI+PGlucHV0IHRhYmluZGV4PVwiMFwiPic7cmV0dXJuIGZhbHNlfSx2YWxpZGF0ZTpmdW5jdGlvbiB2YWxpZGF0ZShlLHQscil7dmFyIG49ZS5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0YWJpbmRleD1cIi0xXCJdJyk7dmFyIGE9ZS5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0YWJpbmRleD1cIjBcIl0nKTtlLmZvY3VzKCk7ZS5xdWVyeVNlbGVjdG9yKFwibGVnZW5kXCIpLmZvY3VzKCk7cmV0dXJuIHIuYWN0aXZlRWxlbWVudD09PW4mJlwiZm9jdXNhYmxlXCJ8fHIuYWN0aXZlRWxlbWVudD09PWEmJlwidGFiYmFibGVcInx8XCJcIn19O3ZhciB2ZT17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5zZXRBdHRyaWJ1dGUoXCJzdHlsZVwiLFwid2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDUwcHg7IG92ZXJmbG93OiBhdXRvO1wiKTtlLmlubmVySFRNTD0nPGRpdiBzdHlsZT1cIndpZHRoOiA1MDBweDsgaGVpZ2h0OiA0MHB4O1wiPnNjcm9sbGFibGUgY29udGVudDwvZGl2Pic7cmV0dXJuIGUucXVlcnlTZWxlY3RvcihcImRpdlwiKX19O3ZhciBoZT17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5zZXRBdHRyaWJ1dGUoXCJzdHlsZVwiLFwid2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDUwcHg7XCIpO2UuaW5uZXJIVE1MPSc8ZGl2IHN0eWxlPVwid2lkdGg6IDUwMHB4OyBoZWlnaHQ6IDQwcHg7XCI+c2Nyb2xsYWJsZSBjb250ZW50PC9kaXY+J319O3ZhciB4ZT17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5zZXRBdHRyaWJ1dGUoXCJzdHlsZVwiLFwid2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDUwcHg7IG92ZXJmbG93OiBhdXRvO1wiKTtlLmlubmVySFRNTD0nPGRpdiBzdHlsZT1cIndpZHRoOiA1MDBweDsgaGVpZ2h0OiA0MHB4O1wiPnNjcm9sbGFibGUgY29udGVudDwvZGl2Pid9fTt2YXIgeWU9e2VsZW1lbnQ6XCJkZXRhaWxzXCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLmlubmVySFRNTD1cIjxzdW1tYXJ5PmZvbzwvc3VtbWFyeT48cD5jb250ZW50PC9wPlwiO3JldHVybiBlLmZpcnN0RWxlbWVudENoaWxkfX07ZnVuY3Rpb24gbWFrZUZvY3VzYWJsZUZvcmVpZ25PYmplY3QoKXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFwiZm9yZWlnbk9iamVjdFwiKTtlLndpZHRoLmJhc2VWYWwudmFsdWU9MzA7ZS5oZWlnaHQuYmFzZVZhbC52YWx1ZT0zMDtlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKSk7ZS5sYXN0Q2hpbGQudHlwZT1cInRleHRcIjtyZXR1cm4gZX1mdW5jdGlvbiBmb2N1c1N2Z0ZvcmVpZ25PYmplY3RIYWNrKGUpe3ZhciB0PWUub3duZXJTVkdFbGVtZW50fHxlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1cInN2Z1wiO2lmKCF0KXtyZXR1cm4gZmFsc2V9dmFyIHI9bWFrZUZvY3VzYWJsZUZvcmVpZ25PYmplY3QoKTtlLmFwcGVuZENoaWxkKHIpO3ZhciBuPXIucXVlcnlTZWxlY3RvcihcImlucHV0XCIpO24uZm9jdXMoKTtuLmRpc2FibGVkPXRydWU7ZS5yZW1vdmVDaGlsZChyKTtyZXR1cm4gdHJ1ZX1mdW5jdGlvbiBnZW5lcmF0ZShlKXtyZXR1cm4nPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCI+JytlK1wiPC9zdmc+XCJ9ZnVuY3Rpb24gbWFpbnRhaW5fdGFiX2ZvY3VzX2ZvY3VzKGUpe2lmKGUuZm9jdXMpe3JldHVybn10cnl7SFRNTEVsZW1lbnQucHJvdG90eXBlLmZvY3VzLmNhbGwoZSl9Y2F0Y2godCl7Zm9jdXNTdmdGb3JlaWduT2JqZWN0SGFjayhlKX19ZnVuY3Rpb24gdmFsaWRhdGUoZSx0LHIpe21haW50YWluX3RhYl9mb2N1c19mb2N1cyh0KTtyZXR1cm4gci5hY3RpdmVFbGVtZW50PT09dH12YXIgRWU9e2VsZW1lbnQ6XCJkaXZcIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2UuaW5uZXJIVE1MPWdlbmVyYXRlKCc8dGV4dCBmb2N1c2FibGU9XCJ0cnVlXCI+YTwvdGV4dD4nKTtyZXR1cm4gZS5xdWVyeVNlbGVjdG9yKFwidGV4dFwiKX0sdmFsaWRhdGU6dmFsaWRhdGV9O3ZhciB3ZT17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5pbm5lckhUTUw9Z2VuZXJhdGUoJzx0ZXh0IHRhYmluZGV4PVwiMFwiPmE8L3RleHQ+Jyk7cmV0dXJuIGUucXVlcnlTZWxlY3RvcihcInRleHRcIil9LHZhbGlkYXRlOnZhbGlkYXRlfTt2YXIga2U9e2VsZW1lbnQ6XCJkaXZcIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2UuaW5uZXJIVE1MPWdlbmVyYXRlKCc8dGV4dCB0YWJpbmRleD1cIi0xXCI+YTwvdGV4dD4nKTtyZXR1cm4gZS5xdWVyeVNlbGVjdG9yKFwidGV4dFwiKX0sdmFsaWRhdGU6dmFsaWRhdGV9O3ZhciBTZT17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5pbm5lckhUTUw9Z2VuZXJhdGUoWyc8ZyBpZD1cImFsbHktdGVzdC10YXJnZXRcIj48YSB4bGluazpocmVmPVwiI3ZvaWRcIj48dGV4dD5saW5rPC90ZXh0PjwvYT48L2c+JywnPHVzZSB4bGluazpocmVmPVwiI2FsbHktdGVzdC10YXJnZXRcIiB4PVwiMFwiIHk9XCIwXCIgdGFiaW5kZXg9XCItMVwiIC8+J10uam9pbihcIlwiKSk7cmV0dXJuIGUucXVlcnlTZWxlY3RvcihcInVzZVwiKX0sdmFsaWRhdGU6dmFsaWRhdGV9O3ZhciBfZT17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5pbm5lckhUTUw9Z2VuZXJhdGUoJzxmb3JlaWduT2JqZWN0IHRhYmluZGV4PVwiLTFcIj48aW5wdXQgdHlwZT1cInRleHRcIiAvPjwvZm9yZWlnbk9iamVjdD4nKTtyZXR1cm4gZS5xdWVyeVNlbGVjdG9yKFwiZm9yZWlnbk9iamVjdFwiKXx8ZS5nZXRFbGVtZW50c0J5VGFnTmFtZShcImZvcmVpZ25PYmplY3RcIilbMF19LHZhbGlkYXRlOnZhbGlkYXRlfTt2YXIgVGU9Qm9vbGVhbihBLmlzLkdFQ0tPJiZ0eXBlb2YgU1ZHRWxlbWVudCE9PVwidW5kZWZpbmVkXCImJlNWR0VsZW1lbnQucHJvdG90eXBlLmZvY3VzKTtmdW5jdGlvbiBmb2N1c1N2Z0luSWZyYW1lKCl7cmV0dXJuIFRlfXZhciBDZT17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5pbm5lckhUTUw9Z2VuZXJhdGUoXCJcIik7cmV0dXJuIGUuZmlyc3RDaGlsZH0sdmFsaWRhdGU6dmFsaWRhdGV9O3ZhciBqZT17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5zZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiLFwiM3hcIil9fTt2YXIgQWU9e2VsZW1lbnQ6XCJ0YWJsZVwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSx0LHIpe3ZhciBuPXIuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO24uaW5uZXJIVE1MPVwiPHRyPjx0ZD5jZWxsPC90ZD48L3RyPlwiO2UuYXBwZW5kQ2hpbGQobil9fTt2YXIgT2U9e2VsZW1lbnQ6XCJ2aWRlb1wiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7dHJ5e2Uuc2V0QXR0cmlidXRlKFwic3JjXCIsWil9Y2F0Y2goZSl7fX19O3ZhciBOZT1BLmlzLkdFQ0tPfHxBLmlzLlRSSURFTlR8fEEuaXMuRURHRTtmdW5jdGlvbiB0YWJzZXF1ZW5jZUFyZWFBdEltZ1Bvc2l0aW9uKCl7cmV0dXJuIE5lfXZhciBJZT17Y3NzU2hhZG93UGllcmNpbmdEZWVwQ29tYmluYXRvcjpjc3NTaGFkb3dQaWVyY2luZ0RlZXBDb21iaW5hdG9yLGZvY3VzSW5aZXJvRGltZW5zaW9uT2JqZWN0OmZvY3VzSW5aZXJvRGltZW5zaW9uT2JqZWN0LGZvY3VzT2JqZWN0U3dmOmZvY3VzT2JqZWN0U3dmLGZvY3VzU3ZnSW5JZnJhbWU6Zm9jdXNTdmdJbklmcmFtZSx0YWJzZXF1ZW5jZUFyZWFBdEltZ1Bvc2l0aW9uOnRhYnNlcXVlbmNlQXJlYUF0SW1nUG9zaXRpb259O3ZhciBMZT17Zm9jdXNBcmVhSW1nVGFiaW5kZXg6VSxmb2N1c0FyZWFUYWJpbmRleDpHLGZvY3VzQXJlYVdpdGhvdXRIcmVmOlgsZm9jdXNBdWRpb1dpdGhvdXRDb250cm9sczpKLGZvY3VzQnJva2VuSW1hZ2VNYXA6WSxmb2N1c0NoaWxkcmVuT2ZGb2N1c2FibGVGbGV4Ym94OmVlLGZvY3VzRmllbGRzZXREaXNhYmxlZDp0ZSxmb2N1c0ZpZWxkc2V0OnJlLGZvY3VzRmxleGJveENvbnRhaW5lcjpuZSxmb2N1c0Zvcm1EaXNhYmxlZDphZSxmb2N1c0ltZ0lzbWFwOm9lLGZvY3VzSW1nVXNlbWFwVGFiaW5kZXg6aWUsZm9jdXNJbkhpZGRlbklmcmFtZTpsZSxmb2N1c0ludmFsaWRUYWJpbmRleDp1ZSxmb2N1c0xhYmVsVGFiaW5kZXg6Y2UsZm9jdXNPYmplY3RTdmc6bWUsZm9jdXNPYmplY3RTdmdIaWRkZW46ZmUsZm9jdXNSZWRpcmVjdEltZ1VzZW1hcDpiZSxmb2N1c1JlZGlyZWN0TGVnZW5kOmdlLGZvY3VzU2Nyb2xsQm9keTp2ZSxmb2N1c1Njcm9sbENvbnRhaW5lcldpdGhvdXRPdmVyZmxvdzpoZSxmb2N1c1Njcm9sbENvbnRhaW5lcjp4ZSxmb2N1c1N1bW1hcnk6eWUsZm9jdXNTdmdGb2N1c2FibGVBdHRyaWJ1dGU6RWUsZm9jdXNTdmdUYWJpbmRleEF0dHJpYnV0ZTp3ZSxmb2N1c1N2Z05lZ2F0aXZlVGFiaW5kZXhBdHRyaWJ1dGU6a2UsZm9jdXNTdmdVc2VUYWJpbmRleDpTZSxmb2N1c1N2Z0ZvcmVpZ25vYmplY3RUYWJpbmRleDpfZSxmb2N1c1N2ZzpDZSxmb2N1c1RhYmluZGV4VHJhaWxpbmdDaGFyYWN0ZXJzOmplLGZvY3VzVGFibGU6QWUsZm9jdXNWaWRlb1dpdGhvdXRDb250cm9sczpPZX07ZnVuY3Rpb24gZXhlY3V0ZVRlc3RzKCl7dmFyIGU9ZGV0ZWN0Rm9jdXMoTGUpO09iamVjdC5rZXlzKEllKS5mb3JFYWNoKChmdW5jdGlvbih0KXtlW3RdPUllW3RdKCl9KSk7cmV0dXJuIGV9dmFyIEZlPW51bGw7ZnVuY3Rpb24gX3N1cHBvcnRzKCl7aWYoRmUpe3JldHVybiBGZX1GZT1LLmdldCgpO2lmKCFGZS50aW1lKXtLLnNldChleGVjdXRlVGVzdHMoKSk7RmU9Sy5nZXQoKX1yZXR1cm4gRmV9dmFyIERlPXZvaWQgMDt2YXIgTWU9L15cXHMqKC18XFwrKT9bMC05XStcXHMqJC87dmFyIFJlPS9eXFxzKigtfFxcKyk/WzAtOV0rLiokLztmdW5jdGlvbiBpc1ZhbGlkVGFiaW5kZXgoZSl7aWYoIURlKXtEZT1fc3VwcG9ydHMoKX12YXIgdD1EZS5mb2N1c1RhYmluZGV4VHJhaWxpbmdDaGFyYWN0ZXJzP1JlOk1lO3ZhciByPWNvbnRleHRUb0VsZW1lbnQoe2xhYmVsOlwiaXMvdmFsaWQtdGFiaW5kZXhcIixyZXNvbHZlRG9jdW1lbnQ6dHJ1ZSxjb250ZXh0OmV9KTt2YXIgbj1yLmhhc0F0dHJpYnV0ZShcInRhYmluZGV4XCIpO3ZhciBhPXIuaGFzQXR0cmlidXRlKFwidGFiSW5kZXhcIik7aWYoIW4mJiFhKXtyZXR1cm4gZmFsc2V9dmFyIG89ci5vd25lclNWR0VsZW1lbnR8fHIubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PVwic3ZnXCI7aWYobyYmIURlLmZvY3VzU3ZnVGFiaW5kZXhBdHRyaWJ1dGUpe3JldHVybiBmYWxzZX1pZihEZS5mb2N1c0ludmFsaWRUYWJpbmRleCl7cmV0dXJuIHRydWV9dmFyIGk9ci5nZXRBdHRyaWJ1dGUobj9cInRhYmluZGV4XCI6XCJ0YWJJbmRleFwiKTtpZihpPT09XCItMzI3NjhcIil7cmV0dXJuIGZhbHNlfXJldHVybiBCb29sZWFuKGkmJnQudGVzdChpKSl9ZnVuY3Rpb24gdGFiaW5kZXhWYWx1ZShlKXtpZighaXNWYWxpZFRhYmluZGV4KGUpKXtyZXR1cm4gbnVsbH12YXIgdD1lLmhhc0F0dHJpYnV0ZShcInRhYmluZGV4XCIpO3ZhciByPXQ/XCJ0YWJpbmRleFwiOlwidGFiSW5kZXhcIjt2YXIgbj1wYXJzZUludChlLmdldEF0dHJpYnV0ZShyKSwxMCk7cmV0dXJuIGlzTmFOKG4pPy0xOm59ZnVuY3Rpb24gaXNVc2VyTW9kaWZ5V3JpdGFibGUoZSl7dmFyIHQ9ZS53ZWJraXRVc2VyTW9kaWZ5fHxcIlwiO3JldHVybiBCb29sZWFuKHQmJnQuaW5kZXhPZihcIndyaXRlXCIpIT09LTEpfWZ1bmN0aW9uIGhhc0Nzc092ZXJmbG93U2Nyb2xsKGUpe3JldHVybltlLmdldFByb3BlcnR5VmFsdWUoXCJvdmVyZmxvd1wiKSxlLmdldFByb3BlcnR5VmFsdWUoXCJvdmVyZmxvdy14XCIpLGUuZ2V0UHJvcGVydHlWYWx1ZShcIm92ZXJmbG93LXlcIildLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlPT09XCJhdXRvXCJ8fGU9PT1cInNjcm9sbFwifSkpfWZ1bmN0aW9uIGhhc0Nzc0Rpc3BsYXlGbGV4KGUpe3JldHVybiBlLmRpc3BsYXkuaW5kZXhPZihcImZsZXhcIik+LTF9ZnVuY3Rpb24gaXNTY3JvbGxhYmxlQ29udGFpbmVyKGUsdCxyLG4pe2lmKHQhPT1cImRpdlwiJiZ0IT09XCJzcGFuXCIpe3JldHVybiBmYWxzZX1pZihyJiZyIT09XCJkaXZcIiYmciE9PVwic3BhblwiJiYhaGFzQ3NzT3ZlcmZsb3dTY3JvbGwobikpe3JldHVybiBmYWxzZX1yZXR1cm4gZS5vZmZzZXRIZWlnaHQ8ZS5zY3JvbGxIZWlnaHR8fGUub2Zmc2V0V2lkdGg8ZS5zY3JvbGxXaWR0aH12YXIgemU9dm9pZCAwO2Z1bmN0aW9uIGlzRm9jdXNSZWxldmFudFJ1bGVzKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT11bmRlZmluZWQ/YXJndW1lbnRzWzBdOnt9LHQ9ZS5jb250ZXh0LHI9ZS5leGNlcHQsbj1yPT09dW5kZWZpbmVkP3tmbGV4Ym94OmZhbHNlLHNjcm9sbGFibGU6ZmFsc2Usc2hhZG93OmZhbHNlfTpyO2lmKCF6ZSl7emU9X3N1cHBvcnRzKCl9dmFyIGE9Y29udGV4dFRvRWxlbWVudCh7bGFiZWw6XCJpcy9mb2N1cy1yZWxldmFudFwiLHJlc29sdmVEb2N1bWVudDp0cnVlLGNvbnRleHQ6dH0pO2lmKCFuLnNoYWRvdyYmYS5zaGFkb3dSb290KXtyZXR1cm4gdHJ1ZX12YXIgbz1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYobz09PVwiaW5wdXRcIiYmYS50eXBlPT09XCJoaWRkZW5cIil7cmV0dXJuIGZhbHNlfWlmKG89PT1cImlucHV0XCJ8fG89PT1cInNlbGVjdFwifHxvPT09XCJidXR0b25cInx8bz09PVwidGV4dGFyZWFcIil7cmV0dXJuIHRydWV9aWYobz09PVwibGVnZW5kXCImJnplLmZvY3VzUmVkaXJlY3RMZWdlbmQpe3JldHVybiB0cnVlfWlmKG89PT1cImxhYmVsXCIpe3JldHVybiB0cnVlfWlmKG89PT1cImFyZWFcIil7cmV0dXJuIHRydWV9aWYobz09PVwiYVwiJiZhLmhhc0F0dHJpYnV0ZShcImhyZWZcIikpe3JldHVybiB0cnVlfWlmKG89PT1cIm9iamVjdFwiJiZhLmhhc0F0dHJpYnV0ZShcInVzZW1hcFwiKSl7cmV0dXJuIGZhbHNlfWlmKG89PT1cIm9iamVjdFwiKXt2YXIgaT1hLmdldEF0dHJpYnV0ZShcInR5cGVcIik7aWYoIXplLmZvY3VzT2JqZWN0U3ZnJiZpPT09XCJpbWFnZS9zdmcreG1sXCIpe3JldHVybiBmYWxzZX1lbHNlIGlmKCF6ZS5mb2N1c09iamVjdFN3ZiYmaT09PVwiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2hcIil7cmV0dXJuIGZhbHNlfX1pZihvPT09XCJpZnJhbWVcInx8bz09PVwib2JqZWN0XCIpe3JldHVybiB0cnVlfWlmKG89PT1cImVtYmVkXCJ8fG89PT1cImtleWdlblwiKXtyZXR1cm4gdHJ1ZX1pZihhLmhhc0F0dHJpYnV0ZShcImNvbnRlbnRlZGl0YWJsZVwiKSl7cmV0dXJuIHRydWV9aWYobz09PVwiYXVkaW9cIiYmKHplLmZvY3VzQXVkaW9XaXRob3V0Q29udHJvbHN8fGEuaGFzQXR0cmlidXRlKFwiY29udHJvbHNcIikpKXtyZXR1cm4gdHJ1ZX1pZihvPT09XCJ2aWRlb1wiJiYoemUuZm9jdXNWaWRlb1dpdGhvdXRDb250cm9sc3x8YS5oYXNBdHRyaWJ1dGUoXCJjb250cm9sc1wiKSkpe3JldHVybiB0cnVlfWlmKHplLmZvY3VzU3VtbWFyeSYmbz09PVwic3VtbWFyeVwiKXtyZXR1cm4gdHJ1ZX12YXIgbD1pc1ZhbGlkVGFiaW5kZXgoYSk7aWYobz09PVwiaW1nXCImJmEuaGFzQXR0cmlidXRlKFwidXNlbWFwXCIpKXtyZXR1cm4gbCYmemUuZm9jdXNJbWdVc2VtYXBUYWJpbmRleHx8emUuZm9jdXNSZWRpcmVjdEltZ1VzZW1hcH1pZih6ZS5mb2N1c1RhYmxlJiYobz09PVwidGFibGVcInx8bz09PVwidGRcIikpe3JldHVybiB0cnVlfWlmKHplLmZvY3VzRmllbGRzZXQmJm89PT1cImZpZWxkc2V0XCIpe3JldHVybiB0cnVlfXZhciBzPW89PT1cInN2Z1wiO3ZhciB1PWEub3duZXJTVkdFbGVtZW50O3ZhciBjPWEuZ2V0QXR0cmlidXRlKFwiZm9jdXNhYmxlXCIpO3ZhciBkPXRhYmluZGV4VmFsdWUoYSk7aWYobz09PVwidXNlXCImJmQhPT1udWxsJiYhemUuZm9jdXNTdmdVc2VUYWJpbmRleCl7cmV0dXJuIGZhbHNlfWlmKG89PT1cImZvcmVpZ25vYmplY3RcIil7cmV0dXJuIGQhPT1udWxsJiZ6ZS5mb2N1c1N2Z0ZvcmVpZ25vYmplY3RUYWJpbmRleH1pZihlbGVtZW50TWF0Y2hlcyhhLFwic3ZnIGFcIikmJmEuaGFzQXR0cmlidXRlKFwieGxpbms6aHJlZlwiKSl7cmV0dXJuIHRydWV9aWYoKHN8fHUpJiZhLmZvY3VzJiYhemUuZm9jdXNTdmdOZWdhdGl2ZVRhYmluZGV4QXR0cmlidXRlJiZkPDApe3JldHVybiBmYWxzZX1pZihzKXtyZXR1cm4gbHx8emUuZm9jdXNTdmd8fHplLmZvY3VzU3ZnSW5JZnJhbWV8fEJvb2xlYW4oemUuZm9jdXNTdmdGb2N1c2FibGVBdHRyaWJ1dGUmJmMmJmM9PT1cInRydWVcIil9aWYodSl7aWYoemUuZm9jdXNTdmdUYWJpbmRleEF0dHJpYnV0ZSYmbCl7cmV0dXJuIHRydWV9aWYoemUuZm9jdXNTdmdGb2N1c2FibGVBdHRyaWJ1dGUpe3JldHVybiBjPT09XCJ0cnVlXCJ9fWlmKGwpe3JldHVybiB0cnVlfXZhciBmPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCk7aWYoaXNVc2VyTW9kaWZ5V3JpdGFibGUoZikpe3JldHVybiB0cnVlfWlmKHplLmZvY3VzSW1nSXNtYXAmJm89PT1cImltZ1wiJiZhLmhhc0F0dHJpYnV0ZShcImlzbWFwXCIpKXt2YXIgbT1nZXRQYXJlbnRzKHtjb250ZXh0OmF9KS5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4gZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09XCJhXCImJmUuaGFzQXR0cmlidXRlKFwiaHJlZlwiKX0pKTtpZihtKXtyZXR1cm4gdHJ1ZX19aWYoIW4uc2Nyb2xsYWJsZSYmemUuZm9jdXNTY3JvbGxDb250YWluZXIpe2lmKHplLmZvY3VzU2Nyb2xsQ29udGFpbmVyV2l0aG91dE92ZXJmbG93KXtpZihpc1Njcm9sbGFibGVDb250YWluZXIoYSxvKSl7cmV0dXJuIHRydWV9fWVsc2UgaWYoaGFzQ3NzT3ZlcmZsb3dTY3JvbGwoZikpe3JldHVybiB0cnVlfX1pZighbi5mbGV4Ym94JiZ6ZS5mb2N1c0ZsZXhib3hDb250YWluZXImJmhhc0Nzc0Rpc3BsYXlGbGV4KGYpKXtyZXR1cm4gdHJ1ZX12YXIgcD1hLnBhcmVudEVsZW1lbnQ7aWYoIW4uc2Nyb2xsYWJsZSYmcCl7dmFyIGI9cC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3ZhciBnPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHAsbnVsbCk7aWYoemUuZm9jdXNTY3JvbGxCb2R5JiZpc1Njcm9sbGFibGVDb250YWluZXIocCxvLGIsZykpe3JldHVybiB0cnVlfWlmKHplLmZvY3VzQ2hpbGRyZW5PZkZvY3VzYWJsZUZsZXhib3gpe2lmKGhhc0Nzc0Rpc3BsYXlGbGV4KGcpKXtyZXR1cm4gdHJ1ZX19fXJldHVybiBmYWxzZX1pc0ZvY3VzUmVsZXZhbnRSdWxlcy5leGNlcHQ9ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e307dmFyIHQ9ZnVuY3Rpb24gaXNGb2N1c1JlbGV2YW50KHQpe3JldHVybiBpc0ZvY3VzUmVsZXZhbnRSdWxlcyh7Y29udGV4dDp0LGV4Y2VwdDplfSl9O3QucnVsZXM9aXNGb2N1c1JlbGV2YW50UnVsZXM7cmV0dXJuIHR9O3ZhciBCZT1pc0ZvY3VzUmVsZXZhbnRSdWxlcy5leGNlcHQoe30pO2Z1bmN0aW9uIGZpbmRJbmRleChlLHQpe2lmKGUuZmluZEluZGV4KXtyZXR1cm4gZS5maW5kSW5kZXgodCl9dmFyIHI9ZS5sZW5ndGg7aWYocj09PTApe3JldHVybi0xfWZvcih2YXIgbj0wO248cjtuKyspe2lmKHQoZVtuXSxuLGUpKXtyZXR1cm4gbn19cmV0dXJuLTF9ZnVuY3Rpb24gZ2V0Q29udGVudERvY3VtZW50KGUpe3RyeXtyZXR1cm4gZS5jb250ZW50RG9jdW1lbnR8fGUuY29udGVudFdpbmRvdyYmZS5jb250ZW50V2luZG93LmRvY3VtZW50fHxlLmdldFNWR0RvY3VtZW50JiZlLmdldFNWR0RvY3VtZW50KCl8fG51bGx9Y2F0Y2goZSl7cmV0dXJuIG51bGx9fWZ1bmN0aW9uIGdldFdpbmRvdyhlKXt2YXIgdD1nZXREb2N1bWVudChlKTtyZXR1cm4gdC5kZWZhdWx0Vmlld3x8d2luZG93fXZhciBIZT12b2lkIDA7ZnVuY3Rpb24gc2VsZWN0SW5TaGFkb3dzKGUpe2lmKHR5cGVvZiBIZSE9PVwic3RyaW5nXCIpe3ZhciB0PWNzc1NoYWRvd1BpZXJjaW5nRGVlcENvbWJpbmF0b3IoKTtpZih0KXtIZT1cIiwgaHRtbCBcIit0K1wiIFwifX1pZighSGUpe3JldHVybiBlfXJldHVybiBlK0hlK2UucmVwbGFjZSgvXFxzKixcXHMqL2csXCIsXCIpLnNwbGl0KFwiLFwiKS5qb2luKEhlKX12YXIgcWU9dm9pZCAwO2Z1bmN0aW9uIGZpbmREb2N1bWVudEhvc3RFbGVtZW50KGUpe2lmKCFxZSl7cWU9c2VsZWN0SW5TaGFkb3dzKFwib2JqZWN0LCBpZnJhbWVcIil9aWYoZS5fZnJhbWVFbGVtZW50IT09dW5kZWZpbmVkKXtyZXR1cm4gZS5fZnJhbWVFbGVtZW50fWUuX2ZyYW1lRWxlbWVudD1udWxsO3ZhciB0PWUucGFyZW50LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwocWUpO1tdLnNvbWUuY2FsbCh0LChmdW5jdGlvbih0KXt2YXIgcj1nZXRDb250ZW50RG9jdW1lbnQodCk7aWYociE9PWUuZG9jdW1lbnQpe3JldHVybiBmYWxzZX1lLl9mcmFtZUVsZW1lbnQ9dDtyZXR1cm4gdHJ1ZX0pKTtyZXR1cm4gZS5fZnJhbWVFbGVtZW50fWZ1bmN0aW9uIGdldEZyYW1lRWxlbWVudChlKXt2YXIgdD1nZXRXaW5kb3coZSk7aWYoIXQucGFyZW50fHx0LnBhcmVudD09PXQpe3JldHVybiBudWxsfXRyeXtyZXR1cm4gdC5mcmFtZUVsZW1lbnR8fGZpbmREb2N1bWVudEhvc3RFbGVtZW50KHQpfWNhdGNoKGUpe3JldHVybiBudWxsfX12YXIgUGU9L14oYXJlYSkkLztmdW5jdGlvbiBjb21wdXRlZFN0eWxlKGUsdCl7cmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSh0KX1mdW5jdGlvbiBub3REaXNwbGF5ZWQoZSl7cmV0dXJuIGUuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGNvbXB1dGVkU3R5bGUoZSxcImRpc3BsYXlcIik9PT1cIm5vbmVcIn0pKX1mdW5jdGlvbiBub3RWaXNpYmxlKGUpe3ZhciB0PWZpbmRJbmRleChlLChmdW5jdGlvbihlKXt2YXIgdD1jb21wdXRlZFN0eWxlKGUsXCJ2aXNpYmlsaXR5XCIpO3JldHVybiB0PT09XCJoaWRkZW5cInx8dD09PVwiY29sbGFwc2VcIn0pKTtpZih0PT09LTEpe3JldHVybiBmYWxzZX12YXIgcj1maW5kSW5kZXgoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGNvbXB1dGVkU3R5bGUoZSxcInZpc2liaWxpdHlcIik9PT1cInZpc2libGVcIn0pKTtpZihyPT09LTEpe3JldHVybiB0cnVlfWlmKHQ8cil7cmV0dXJuIHRydWV9cmV0dXJuIGZhbHNlfWZ1bmN0aW9uIGNvbGxhcHNlZFBhcmVudChlKXt2YXIgdD0xO2lmKGVbMF0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PVwic3VtbWFyeVwiKXt0PTJ9cmV0dXJuIGUuc2xpY2UodCkuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PVwiZGV0YWlsc1wiJiZlLm9wZW49PT1mYWxzZX0pKX1mdW5jdGlvbiBpc1Zpc2libGVSdWxlcygpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fSx0PWUuY29udGV4dCxyPWUuZXhjZXB0LG49cj09PXVuZGVmaW5lZD97bm90UmVuZGVyZWQ6ZmFsc2UsY3NzRGlzcGxheTpmYWxzZSxjc3NWaXNpYmlsaXR5OmZhbHNlLGRldGFpbHNFbGVtZW50OmZhbHNlLGJyb3dzaW5nQ29udGV4dDpmYWxzZX06cjt2YXIgYT1jb250ZXh0VG9FbGVtZW50KHtsYWJlbDpcImlzL3Zpc2libGVcIixyZXNvbHZlRG9jdW1lbnQ6dHJ1ZSxjb250ZXh0OnR9KTt2YXIgbz1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoIW4ubm90UmVuZGVyZWQmJlBlLnRlc3Qobykpe3JldHVybiB0cnVlfXZhciBpPWdldFBhcmVudHMoe2NvbnRleHQ6YX0pO3ZhciBsPW89PT1cImF1ZGlvXCImJiFhLmhhc0F0dHJpYnV0ZShcImNvbnRyb2xzXCIpO2lmKCFuLmNzc0Rpc3BsYXkmJm5vdERpc3BsYXllZChsP2kuc2xpY2UoMSk6aSkpe3JldHVybiBmYWxzZX1pZighbi5jc3NWaXNpYmlsaXR5JiZub3RWaXNpYmxlKGkpKXtyZXR1cm4gZmFsc2V9aWYoIW4uZGV0YWlsc0VsZW1lbnQmJmNvbGxhcHNlZFBhcmVudChpKSl7cmV0dXJuIGZhbHNlfWlmKCFuLmJyb3dzaW5nQ29udGV4dCl7dmFyIHM9Z2V0RnJhbWVFbGVtZW50KGEpO3ZhciB1PWlzVmlzaWJsZVJ1bGVzLmV4Y2VwdChuKTtpZihzJiYhdShzKSl7cmV0dXJuIGZhbHNlfX1yZXR1cm4gdHJ1ZX1pc1Zpc2libGVSdWxlcy5leGNlcHQ9ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e307dmFyIHQ9ZnVuY3Rpb24gaXNWaXNpYmxlKHQpe3JldHVybiBpc1Zpc2libGVSdWxlcyh7Y29udGV4dDp0LGV4Y2VwdDplfSl9O3QucnVsZXM9aXNWaXNpYmxlUnVsZXM7cmV0dXJuIHR9O3ZhciBXZT1pc1Zpc2libGVSdWxlcy5leGNlcHQoe30pO2Z1bmN0aW9uIGdldE1hcEJ5TmFtZShlLHQpe3ZhciByPXQucXVlcnlTZWxlY3RvcignbWFwW25hbWU9XCInK1QoKShlKSsnXCJdJyk7cmV0dXJuIHJ8fG51bGx9ZnVuY3Rpb24gZ2V0SW1hZ2VPZkFyZWEoZSl7dmFyIHQ9ZS5wYXJlbnRFbGVtZW50O2lmKCF0Lm5hbWV8fHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9PVwibWFwXCIpe3JldHVybiBudWxsfXZhciByPWdldERvY3VtZW50KGUpO3JldHVybiByLnF1ZXJ5U2VsZWN0b3IoJ2ltZ1t1c2VtYXA9XCIjJytUKCkodC5uYW1lKSsnXCJdJyl8fG51bGx9dmFyIFZlPXZvaWQgMDtmdW5jdGlvbiBpc1ZhbGlkQXJlYShlKXtpZighVmUpe1ZlPV9zdXBwb3J0cygpfXZhciB0PWNvbnRleHRUb0VsZW1lbnQoe2xhYmVsOlwiaXMvdmFsaWQtYXJlYVwiLGNvbnRleHQ6ZX0pO3ZhciByPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihyIT09XCJhcmVhXCIpe3JldHVybiBmYWxzZX12YXIgbj10Lmhhc0F0dHJpYnV0ZShcInRhYmluZGV4XCIpO2lmKCFWZS5mb2N1c0FyZWFUYWJpbmRleCYmbil7cmV0dXJuIGZhbHNlfXZhciBhPWdldEltYWdlT2ZBcmVhKHQpO2lmKCFhfHwhV2UoYSkpe3JldHVybiBmYWxzZX1pZighVmUuZm9jdXNCcm9rZW5JbWFnZU1hcCYmKCFhLmNvbXBsZXRlfHwhYS5uYXR1cmFsSGVpZ2h0fHxhLm9mZnNldFdpZHRoPD0wfHxhLm9mZnNldEhlaWdodDw9MCkpe3JldHVybiBmYWxzZX1pZighVmUuZm9jdXNBcmVhV2l0aG91dEhyZWYmJiF0LmhyZWYpe3JldHVybiBWZS5mb2N1c0FyZWFUYWJpbmRleCYmbnx8VmUuZm9jdXNBcmVhSW1nVGFiaW5kZXgmJmEuaGFzQXR0cmlidXRlKFwidGFiaW5kZXhcIil9dmFyIG89Z2V0UGFyZW50cyh7Y29udGV4dDphfSkuc2xpY2UoMSkuc29tZSgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiB0PT09XCJidXR0b25cInx8dD09PVwiYVwifSkpO2lmKG8pe3JldHVybiBmYWxzZX1yZXR1cm4gdHJ1ZX12YXIgJGU9dm9pZCAwO3ZhciBLZT12b2lkIDA7dmFyIFplPXtpbnB1dDp0cnVlLHNlbGVjdDp0cnVlLHRleHRhcmVhOnRydWUsYnV0dG9uOnRydWUsZmllbGRzZXQ6dHJ1ZSxmb3JtOnRydWV9O2Z1bmN0aW9uIGlzTmF0aXZlRGlzYWJsZWRTdXBwb3J0ZWQoZSl7aWYoISRlKXskZT1fc3VwcG9ydHMoKTtpZigkZS5mb2N1c0ZpZWxkc2V0RGlzYWJsZWQpe2RlbGV0ZSBaZS5maWVsZHNldH1pZigkZS5mb2N1c0Zvcm1EaXNhYmxlZCl7ZGVsZXRlIFplLmZvcm19S2U9bmV3IFJlZ0V4cChcIl4oXCIrT2JqZWN0LmtleXMoWmUpLmpvaW4oXCJ8XCIpK1wiKSRcIil9dmFyIHQ9Y29udGV4dFRvRWxlbWVudCh7bGFiZWw6XCJpcy9uYXRpdmUtZGlzYWJsZWQtc3VwcG9ydGVkXCIsY29udGV4dDplfSk7dmFyIHI9dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiBCb29sZWFuKEtlLnRlc3QocikpfXZhciBVZT12b2lkIDA7ZnVuY3Rpb24gaXNEaXNhYmxlZEZpZWxkc2V0KGUpe3ZhciB0PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gdD09PVwiZmllbGRzZXRcIiYmZS5kaXNhYmxlZH1mdW5jdGlvbiBpc0Rpc2FibGVkRm9ybShlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHQ9PT1cImZvcm1cIiYmZS5kaXNhYmxlZH1mdW5jdGlvbiBpc0Rpc2FibGVkKGUpe2lmKCFVZSl7VWU9X3N1cHBvcnRzKCl9dmFyIHQ9Y29udGV4dFRvRWxlbWVudCh7bGFiZWw6XCJpcy9kaXNhYmxlZFwiLGNvbnRleHQ6ZX0pO2lmKHQuaGFzQXR0cmlidXRlKFwiZGF0YS1hbGx5LWRpc2FibGVkXCIpKXtyZXR1cm4gdHJ1ZX1pZighaXNOYXRpdmVEaXNhYmxlZFN1cHBvcnRlZCh0KSl7cmV0dXJuIGZhbHNlfWlmKHQuZGlzYWJsZWQpe3JldHVybiB0cnVlfXZhciByPWdldFBhcmVudHMoe2NvbnRleHQ6dH0pO2lmKHIuc29tZShpc0Rpc2FibGVkRmllbGRzZXQpKXtyZXR1cm4gdHJ1ZX1pZighVWUuZm9jdXNGb3JtRGlzYWJsZWQmJnIuc29tZShpc0Rpc2FibGVkRm9ybSkpe3JldHVybiB0cnVlfXJldHVybiBmYWxzZX1mdW5jdGlvbiBpc09ubHlUYWJiYWJsZVJ1bGVzKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT11bmRlZmluZWQ/YXJndW1lbnRzWzBdOnt9LHQ9ZS5jb250ZXh0LHI9ZS5leGNlcHQsbj1yPT09dW5kZWZpbmVkP3tvbmx5Rm9jdXNhYmxlQnJvd3NpbmdDb250ZXh0OmZhbHNlLHZpc2libGU6ZmFsc2V9OnI7dmFyIGE9Y29udGV4dFRvRWxlbWVudCh7bGFiZWw6XCJpcy9vbmx5LXRhYmJhYmxlXCIscmVzb2x2ZURvY3VtZW50OnRydWUsY29udGV4dDp0fSk7aWYoIW4udmlzaWJsZSYmIVdlKGEpKXtyZXR1cm4gZmFsc2V9aWYoIW4ub25seUZvY3VzYWJsZUJyb3dzaW5nQ29udGV4dCYmKEEuaXMuR0VDS098fEEuaXMuVFJJREVOVHx8QS5pcy5FREdFKSl7dmFyIG89Z2V0RnJhbWVFbGVtZW50KGEpO2lmKG8pe2lmKHRhYmluZGV4VmFsdWUobyk8MCl7cmV0dXJuIGZhbHNlfX19dmFyIGk9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3ZhciBsPXRhYmluZGV4VmFsdWUoYSk7aWYoaT09PVwibGFiZWxcIiYmQS5pcy5HRUNLTyl7cmV0dXJuIGwhPT1udWxsJiZsPj0wfWlmKEEuaXMuR0VDS08mJmEub3duZXJTVkdFbGVtZW50JiYhYS5mb2N1cyl7aWYoaT09PVwiYVwiJiZhLmhhc0F0dHJpYnV0ZShcInhsaW5rOmhyZWZcIikpe2lmKEEuaXMuR0VDS08pe3JldHVybiB0cnVlfX19cmV0dXJuIGZhbHNlfWlzT25seVRhYmJhYmxlUnVsZXMuZXhjZXB0PWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT11bmRlZmluZWQ/YXJndW1lbnRzWzBdOnt9O3ZhciB0PWZ1bmN0aW9uIGlzT25seVRhYmJhYmxlKHQpe3JldHVybiBpc09ubHlUYWJiYWJsZVJ1bGVzKHtjb250ZXh0OnQsZXhjZXB0OmV9KX07dC5ydWxlcz1pc09ubHlUYWJiYWJsZVJ1bGVzO3JldHVybiB0fTt2YXIgR2U9aXNPbmx5VGFiYmFibGVSdWxlcy5leGNlcHQoe30pO3ZhciBYZT12b2lkIDA7ZnVuY3Rpb24gaXNPbmx5Rm9jdXNSZWxldmFudChlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYodD09PVwiZW1iZWRcInx8dD09PVwia2V5Z2VuXCIpe3JldHVybiB0cnVlfXZhciByPXRhYmluZGV4VmFsdWUoZSk7aWYoZS5zaGFkb3dSb290JiZyPT09bnVsbCl7cmV0dXJuIHRydWV9aWYodD09PVwibGFiZWxcIil7cmV0dXJuIVhlLmZvY3VzTGFiZWxUYWJpbmRleHx8cj09PW51bGx9aWYodD09PVwibGVnZW5kXCIpe3JldHVybiByPT09bnVsbH1pZihYZS5mb2N1c1N2Z0ZvY3VzYWJsZUF0dHJpYnV0ZSYmKGUub3duZXJTVkdFbGVtZW50fHx0PT09XCJzdmdcIikpe3ZhciBuPWUuZ2V0QXR0cmlidXRlKFwiZm9jdXNhYmxlXCIpO3JldHVybiBuJiZuPT09XCJmYWxzZVwifWlmKHQ9PT1cImltZ1wiJiZlLmhhc0F0dHJpYnV0ZShcInVzZW1hcFwiKSl7cmV0dXJuIHI9PT1udWxsfHwhWGUuZm9jdXNJbWdVc2VtYXBUYWJpbmRleH1pZih0PT09XCJhcmVhXCIpe3JldHVybiFpc1ZhbGlkQXJlYShlKX1yZXR1cm4gZmFsc2V9ZnVuY3Rpb24gaXNGb2N1c2FibGVSdWxlcygpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fSx0PWUuY29udGV4dCxyPWUuZXhjZXB0LG49cj09PXVuZGVmaW5lZD97ZGlzYWJsZWQ6ZmFsc2UsdmlzaWJsZTpmYWxzZSxvbmx5VGFiYmFibGU6ZmFsc2V9OnI7aWYoIVhlKXtYZT1fc3VwcG9ydHMoKX12YXIgYT1HZS5ydWxlcy5leGNlcHQoe29ubHlGb2N1c2FibGVCcm93c2luZ0NvbnRleHQ6dHJ1ZSx2aXNpYmxlOm4udmlzaWJsZX0pO3ZhciBvPWNvbnRleHRUb0VsZW1lbnQoe2xhYmVsOlwiaXMvZm9jdXNhYmxlXCIscmVzb2x2ZURvY3VtZW50OnRydWUsY29udGV4dDp0fSk7dmFyIGk9QmUucnVsZXMoe2NvbnRleHQ6byxleGNlcHQ6bn0pO2lmKCFpfHxpc09ubHlGb2N1c1JlbGV2YW50KG8pKXtyZXR1cm4gZmFsc2V9aWYoIW4uZGlzYWJsZWQmJmlzRGlzYWJsZWQobykpe3JldHVybiBmYWxzZX1pZighbi5vbmx5VGFiYmFibGUmJmEobykpe3JldHVybiBmYWxzZX1pZighbi52aXNpYmxlKXt2YXIgbD17Y29udGV4dDpvLGV4Y2VwdDp7fX07aWYoWGUuZm9jdXNJbkhpZGRlbklmcmFtZSl7bC5leGNlcHQuYnJvd3NpbmdDb250ZXh0PXRydWV9aWYoWGUuZm9jdXNPYmplY3RTdmdIaWRkZW4pe3ZhciBzPW8ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihzPT09XCJvYmplY3RcIil7bC5leGNlcHQuY3NzVmlzaWJpbGl0eT10cnVlfX1pZighV2UucnVsZXMobCkpe3JldHVybiBmYWxzZX19dmFyIHU9Z2V0RnJhbWVFbGVtZW50KG8pO2lmKHUpe3ZhciBjPXUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihjPT09XCJvYmplY3RcIiYmIVhlLmZvY3VzSW5aZXJvRGltZW5zaW9uT2JqZWN0KXtpZighdS5vZmZzZXRXaWR0aHx8IXUub2Zmc2V0SGVpZ2h0KXtyZXR1cm4gZmFsc2V9fX12YXIgZD1vLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoZD09PVwic3ZnXCImJlhlLmZvY3VzU3ZnSW5JZnJhbWUmJiF1JiZvLmdldEF0dHJpYnV0ZShcInRhYmluZGV4XCIpPT09bnVsbCl7cmV0dXJuIGZhbHNlfXJldHVybiB0cnVlfWlzRm9jdXNhYmxlUnVsZXMuZXhjZXB0PWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT11bmRlZmluZWQ/YXJndW1lbnRzWzBdOnt9O3ZhciB0PWZ1bmN0aW9uIGlzRm9jdXNhYmxlKHQpe3JldHVybiBpc0ZvY3VzYWJsZVJ1bGVzKHtjb250ZXh0OnQsZXhjZXB0OmV9KX07dC5ydWxlcz1pc0ZvY3VzYWJsZVJ1bGVzO3JldHVybiB0fTt2YXIgSmU9aXNGb2N1c2FibGVSdWxlcy5leGNlcHQoe30pO2Z1bmN0aW9uIGNyZWF0ZUZpbHRlcihlKXt2YXIgdD1mdW5jdGlvbiBmaWx0ZXIodCl7aWYodC5zaGFkb3dSb290KXtyZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfQUNDRVBUfWlmKGUodCkpe3JldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFR9cmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1NLSVB9O3QuYWNjZXB0Tm9kZT10O3JldHVybiB0fXZhciBRZT1jcmVhdGVGaWx0ZXIoQmUpO2Z1bmN0aW9uIHF1ZXJ5Rm9jdXNhYmxlU3RyaWN0KCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT11bmRlZmluZWQ/YXJndW1lbnRzWzBdOnt9LHQ9ZS5jb250ZXh0LHI9ZS5pbmNsdWRlQ29udGV4dCxuPWUuaW5jbHVkZU9ubHlUYWJiYWJsZSxhPWUuc3RyYXRlZ3k7aWYoIXQpe3Q9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fXZhciBvPUplLnJ1bGVzLmV4Y2VwdCh7b25seVRhYmJhYmxlOm59KTt2YXIgaT1nZXREb2N1bWVudCh0KTt2YXIgbD1pLmNyZWF0ZVRyZWVXYWxrZXIodCxOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCxhPT09XCJhbGxcIj9RZTpjcmVhdGVGaWx0ZXIobyksZmFsc2UpO3ZhciBzPVtdO3doaWxlKGwubmV4dE5vZGUoKSl7aWYobC5jdXJyZW50Tm9kZS5zaGFkb3dSb290KXtpZihvKGwuY3VycmVudE5vZGUpKXtzLnB1c2gobC5jdXJyZW50Tm9kZSl9cz1zLmNvbmNhdChxdWVyeUZvY3VzYWJsZVN0cmljdCh7Y29udGV4dDpsLmN1cnJlbnROb2RlLnNoYWRvd1Jvb3QsaW5jbHVkZU9ubHlUYWJiYWJsZTpuLHN0cmF0ZWd5OmF9KSl9ZWxzZXtzLnB1c2gobC5jdXJyZW50Tm9kZSl9fWlmKHIpe2lmKGE9PT1cImFsbFwiKXtpZihCZSh0KSl7cy51bnNoaWZ0KHQpfX1lbHNlIGlmKG8odCkpe3MudW5zaGlmdCh0KX19cmV0dXJuIHN9dmFyIFllPXZvaWQgMDt2YXIgZXQ9dm9pZCAwO2Z1bmN0aW9uIHNlbGVjdG9yJDIoKXtpZighWWUpe1llPV9zdXBwb3J0cygpfWlmKHR5cGVvZiBldD09PVwic3RyaW5nXCIpe3JldHVybiBldH1ldD1cIlwiKyhZZS5mb2N1c1RhYmxlP1widGFibGUsIHRkLFwiOlwiXCIpKyhZZS5mb2N1c0ZpZWxkc2V0P1wiZmllbGRzZXQsXCI6XCJcIikrXCJzdmcgYSxcIitcImFbaHJlZl0sXCIrXCJhcmVhW2hyZWZdLFwiK1wiaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIGJ1dHRvbixcIitcImlmcmFtZSwgb2JqZWN0LCBlbWJlZCxcIitcImtleWdlbixcIisoWWUuZm9jdXNBdWRpb1dpdGhvdXRDb250cm9scz9cImF1ZGlvLFwiOlwiYXVkaW9bY29udHJvbHNdLFwiKSsoWWUuZm9jdXNWaWRlb1dpdGhvdXRDb250cm9scz9cInZpZGVvLFwiOlwidmlkZW9bY29udHJvbHNdLFwiKSsoWWUuZm9jdXNTdW1tYXJ5P1wic3VtbWFyeSxcIjpcIlwiKStcIlt0YWJpbmRleF0sXCIrXCJbY29udGVudGVkaXRhYmxlXVwiO2V0PXNlbGVjdEluU2hhZG93cyhldCk7cmV0dXJuIGV0fWZ1bmN0aW9uIHF1ZXJ5Rm9jdXNhYmxlUXVpY2soKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e30sdD1lLmNvbnRleHQscj1lLmluY2x1ZGVDb250ZXh0LG49ZS5pbmNsdWRlT25seVRhYmJhYmxlO3ZhciBhPXNlbGVjdG9yJDIoKTt2YXIgbz10LnF1ZXJ5U2VsZWN0b3JBbGwoYSk7dmFyIGk9SmUucnVsZXMuZXhjZXB0KHtvbmx5VGFiYmFibGU6bn0pO3ZhciBsPVtdLmZpbHRlci5jYWxsKG8saSk7aWYociYmaSh0KSl7bC51bnNoaWZ0KHQpfXJldHVybiBsfWZ1bmN0aW9uIHF1ZXJ5Rm9jdXNhYmxlKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT11bmRlZmluZWQ/YXJndW1lbnRzWzBdOnt9LHQ9ZS5jb250ZXh0LHI9ZS5pbmNsdWRlQ29udGV4dCxuPWUuaW5jbHVkZU9ubHlUYWJiYWJsZSxhPWUuc3RyYXRlZ3ksbz1hPT09dW5kZWZpbmVkP1wicXVpY2tcIjphO3ZhciBpPWNvbnRleHRUb0VsZW1lbnQoe2xhYmVsOlwicXVlcnkvZm9jdXNhYmxlXCIscmVzb2x2ZURvY3VtZW50OnRydWUsZGVmYXVsdFRvRG9jdW1lbnQ6dHJ1ZSxjb250ZXh0OnR9KTt2YXIgbD17Y29udGV4dDppLGluY2x1ZGVDb250ZXh0OnIsaW5jbHVkZU9ubHlUYWJiYWJsZTpuLHN0cmF0ZWd5Om99O2lmKG89PT1cInF1aWNrXCIpe3JldHVybiBxdWVyeUZvY3VzYWJsZVF1aWNrKGwpfWVsc2UgaWYobz09PVwic3RyaWN0XCJ8fG89PT1cImFsbFwiKXtyZXR1cm4gcXVlcnlGb2N1c2FibGVTdHJpY3QobCl9dGhyb3cgbmV3IFR5cGVFcnJvcigncXVlcnkvZm9jdXNhYmxlIHJlcXVpcmVzIG9wdGlvbi5zdHJhdGVneSB0byBiZSBvbmUgb2YgW1wicXVpY2tcIiwgXCJzdHJpY3RcIiwgXCJhbGxcIl0nKX12YXIgdHQ9dm9pZCAwO3ZhciBydD0vXihmaWVsZHNldHx0YWJsZXx0ZHxib2R5KSQvO2Z1bmN0aW9uIGlzVGFiYmFibGVSdWxlcygpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fSx0PWUuY29udGV4dCxyPWUuZXhjZXB0LG49cj09PXVuZGVmaW5lZD97ZmxleGJveDpmYWxzZSxzY3JvbGxhYmxlOmZhbHNlLHNoYWRvdzpmYWxzZSx2aXNpYmxlOmZhbHNlLG9ubHlUYWJiYWJsZTpmYWxzZX06cjtpZighdHQpe3R0PV9zdXBwb3J0cygpfXZhciBhPWNvbnRleHRUb0VsZW1lbnQoe2xhYmVsOlwiaXMvdGFiYmFibGVcIixyZXNvbHZlRG9jdW1lbnQ6dHJ1ZSxjb250ZXh0OnR9KTtpZihBLmlzLkJMSU5LJiZBLmlzLkFORFJPSUQmJkEubWFqb3JWZXJzaW9uPjQyKXtyZXR1cm4gZmFsc2V9dmFyIG89Z2V0RnJhbWVFbGVtZW50KGEpO2lmKG8pe2lmKEEuaXMuV0VCS0lUJiZBLmlzLklPUyl7cmV0dXJuIGZhbHNlfWlmKHRhYmluZGV4VmFsdWUobyk8MCl7cmV0dXJuIGZhbHNlfWlmKCFuLnZpc2libGUmJihBLmlzLkJMSU5LfHxBLmlzLldFQktJVCkmJiFXZShvKSl7cmV0dXJuIGZhbHNlfXZhciBpPW8ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihpPT09XCJvYmplY3RcIil7dmFyIGw9QS5uYW1lPT09XCJDaHJvbWVcIiYmQS5tYWpvclZlcnNpb24+PTU0fHxBLm5hbWU9PT1cIk9wZXJhXCImJkEubWFqb3JWZXJzaW9uPj00MTtpZihBLmlzLldFQktJVHx8QS5pcy5CTElOSyYmIWwpe3JldHVybiBmYWxzZX19fXZhciBzPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTt2YXIgdT10YWJpbmRleFZhbHVlKGEpO3ZhciBjPXU9PT1udWxsP251bGw6dT49MDtpZihBLmlzLkVER0UmJkEubWFqb3JWZXJzaW9uPj0xNCYmbyYmYS5vd25lclNWR0VsZW1lbnQmJnU8MCl7cmV0dXJuIHRydWV9dmFyIGQ9YyE9PWZhbHNlO3ZhciBmPXUhPT1udWxsJiZ1Pj0wO2lmKGEuaGFzQXR0cmlidXRlKFwiY29udGVudGVkaXRhYmxlXCIpKXtyZXR1cm4gZH1pZihydC50ZXN0KHMpJiZjIT09dHJ1ZSl7cmV0dXJuIGZhbHNlfWlmKEEuaXMuV0VCS0lUJiZBLmlzLklPUyl7dmFyIG09cz09PVwiaW5wdXRcIiYmYS50eXBlPT09XCJ0ZXh0XCJ8fGEudHlwZT09PVwicGFzc3dvcmRcInx8cz09PVwic2VsZWN0XCJ8fHM9PT1cInRleHRhcmVhXCJ8fGEuaGFzQXR0cmlidXRlKFwiY29udGVudGVkaXRhYmxlXCIpO2lmKCFtKXt2YXIgcD13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShhLG51bGwpO209aXNVc2VyTW9kaWZ5V3JpdGFibGUocCl9aWYoIW0pe3JldHVybiBmYWxzZX19aWYocz09PVwidXNlXCImJnUhPT1udWxsKXtpZihBLmlzLkJMSU5LfHxBLmlzLldFQktJVCYmQS5tYWpvclZlcnNpb249PT05KXtyZXR1cm4gdHJ1ZX19aWYoZWxlbWVudE1hdGNoZXMoYSxcInN2ZyBhXCIpJiZhLmhhc0F0dHJpYnV0ZShcInhsaW5rOmhyZWZcIikpe2lmKGQpe3JldHVybiB0cnVlfWlmKGEuZm9jdXMmJiF0dC5mb2N1c1N2Z05lZ2F0aXZlVGFiaW5kZXhBdHRyaWJ1dGUpe3JldHVybiB0cnVlfX1pZihzPT09XCJzdmdcIiYmdHQuZm9jdXNTdmdJbklmcmFtZSYmZCl7cmV0dXJuIHRydWV9aWYoQS5pcy5UUklERU5UfHxBLmlzLkVER0Upe2lmKHM9PT1cInN2Z1wiKXtpZih0dC5mb2N1c1N2Zyl7cmV0dXJuIHRydWV9cmV0dXJuIGEuaGFzQXR0cmlidXRlKFwiZm9jdXNhYmxlXCIpfHxmfWlmKGEub3duZXJTVkdFbGVtZW50KXtpZih0dC5mb2N1c1N2Z1RhYmluZGV4QXR0cmlidXRlJiZmKXtyZXR1cm4gdHJ1ZX1yZXR1cm4gYS5oYXNBdHRyaWJ1dGUoXCJmb2N1c2FibGVcIil9fWlmKGEudGFiSW5kZXg9PT11bmRlZmluZWQpe3JldHVybiBCb29sZWFuKG4ub25seVRhYmJhYmxlKX1pZihzPT09XCJhdWRpb1wiKXtpZighYS5oYXNBdHRyaWJ1dGUoXCJjb250cm9sc1wiKSl7cmV0dXJuIGZhbHNlfWVsc2UgaWYoQS5pcy5CTElOSyl7cmV0dXJuIHRydWV9fWlmKHM9PT1cInZpZGVvXCIpe2lmKCFhLmhhc0F0dHJpYnV0ZShcImNvbnRyb2xzXCIpKXtpZihBLmlzLlRSSURFTlR8fEEuaXMuRURHRSl7cmV0dXJuIGZhbHNlfX1lbHNlIGlmKEEuaXMuQkxJTkt8fEEuaXMuR0VDS08pe3JldHVybiB0cnVlfX1pZihzPT09XCJvYmplY3RcIil7aWYoQS5pcy5CTElOS3x8QS5pcy5XRUJLSVQpe3JldHVybiBmYWxzZX19aWYocz09PVwiaWZyYW1lXCIpe3JldHVybiBmYWxzZX1pZighbi5zY3JvbGxhYmxlJiZBLmlzLkdFQ0tPKXt2YXIgYj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShhLG51bGwpO2lmKGhhc0Nzc092ZXJmbG93U2Nyb2xsKGIpKXtyZXR1cm4gZH19aWYoQS5pcy5UUklERU5UfHxBLmlzLkVER0Upe2lmKHM9PT1cImFyZWFcIil7dmFyIGc9Z2V0SW1hZ2VPZkFyZWEoYSk7aWYoZyYmdGFiaW5kZXhWYWx1ZShnKTwwKXtyZXR1cm4gZmFsc2V9fXZhciB2PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCk7aWYoaXNVc2VyTW9kaWZ5V3JpdGFibGUodikpe3JldHVybiBhLnRhYkluZGV4Pj0wfWlmKCFuLmZsZXhib3gmJmhhc0Nzc0Rpc3BsYXlGbGV4KHYpKXtpZih1IT09bnVsbCl7cmV0dXJuIGZ9cmV0dXJuIG50KGEpJiZhdChhKX1pZihpc1Njcm9sbGFibGVDb250YWluZXIoYSxzKSl7cmV0dXJuIGZhbHNlfXZhciBoPWEucGFyZW50RWxlbWVudDtpZihoKXt2YXIgeD1oLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7dmFyIHk9d2luZG93LmdldENvbXB1dGVkU3R5bGUoaCxudWxsKTtpZihpc1Njcm9sbGFibGVDb250YWluZXIoaCxzLHgseSkpe3JldHVybiBmYWxzZX1pZihoYXNDc3NEaXNwbGF5RmxleCh5KSl7cmV0dXJuIGZ9fX1yZXR1cm4gYS50YWJJbmRleD49MH1pc1RhYmJhYmxlUnVsZXMuZXhjZXB0PWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT11bmRlZmluZWQ/YXJndW1lbnRzWzBdOnt9O3ZhciB0PWZ1bmN0aW9uIGlzVGFiYmFibGUodCl7cmV0dXJuIGlzVGFiYmFibGVSdWxlcyh7Y29udGV4dDp0LGV4Y2VwdDplfSl9O3QucnVsZXM9aXNUYWJiYWJsZVJ1bGVzO3JldHVybiB0fTt2YXIgbnQ9QmUucnVsZXMuZXhjZXB0KHtmbGV4Ym94OnRydWV9KTt2YXIgYXQ9aXNUYWJiYWJsZVJ1bGVzLmV4Y2VwdCh7ZmxleGJveDp0cnVlfSk7dmFyIG90PWlzVGFiYmFibGVSdWxlcy5leGNlcHQoe30pO2Z1bmN0aW9uIHF1ZXJ5VGFiYmFibGUoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e30sdD1lLmNvbnRleHQscj1lLmluY2x1ZGVDb250ZXh0LG49ZS5pbmNsdWRlT25seVRhYmJhYmxlLGE9ZS5zdHJhdGVneTt2YXIgbz1vdC5ydWxlcy5leGNlcHQoe29ubHlUYWJiYWJsZTpufSk7cmV0dXJuIHF1ZXJ5Rm9jdXNhYmxlKHtjb250ZXh0OnQsaW5jbHVkZUNvbnRleHQ6cixpbmNsdWRlT25seVRhYmJhYmxlOm4sc3RyYXRlZ3k6YX0pLmZpbHRlcihvKX1mdW5jdGlvbiBjb21wYXJlRG9tUG9zaXRpb24oZSx0KXtyZXR1cm4gZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KSZOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORz8tMToxfWZ1bmN0aW9uIHNvcnREb21PcmRlcihlKXtyZXR1cm4gZS5zb3J0KGNvbXBhcmVEb21Qb3NpdGlvbil9ZnVuY3Rpb24gZ2V0Rmlyc3RTdWNjZXNzb3JPZmZzZXQoZSx0KXtyZXR1cm4gZmluZEluZGV4KGUsKGZ1bmN0aW9uKGUpe3JldHVybiB0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGUpJk5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HfSkpfWZ1bmN0aW9uIGZpbmRJbnNlcnRpb25PZmZzZXRzKGUsdCxyKXt2YXIgbj1bXTt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBhPXRydWU7dmFyIG89ZS5pbmRleE9mKHQpO2lmKG89PT0tMSl7bz1nZXRGaXJzdFN1Y2Nlc3Nvck9mZnNldChlLHQpO2E9ZmFsc2V9aWYobz09PS0xKXtvPWUubGVuZ3RofXZhciBpPW5vZGVBcnJheShyP3IodCk6dCk7aWYoIWkubGVuZ3RoKXtyZXR1cm59bi5wdXNoKHtvZmZzZXQ6byxyZXBsYWNlOmEsZWxlbWVudHM6aX0pfSkpO3JldHVybiBufWZ1bmN0aW9uIGluc2VydEVsZW1lbnRzQXRPZmZzZXRzKGUsdCl7dmFyIHI9MDt0LnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUub2Zmc2V0LXQub2Zmc2V0fSkpO3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIG49dC5yZXBsYWNlPzE6MDt2YXIgYT1bdC5vZmZzZXQrcixuXS5jb25jYXQodC5lbGVtZW50cyk7ZS5zcGxpY2UuYXBwbHkoZSxhKTtyKz10LmVsZW1lbnRzLmxlbmd0aC1ufSkpfWZ1bmN0aW9uIG1lcmdlSW5Eb21PcmRlcigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fSx0PWUubGlzdCxyPWUuZWxlbWVudHMsbj1lLnJlc29sdmVFbGVtZW50O3ZhciBhPXQuc2xpY2UoMCk7dmFyIG89bm9kZUFycmF5KHIpLnNsaWNlKDApO3NvcnREb21PcmRlcihvKTt2YXIgaT1maW5kSW5zZXJ0aW9uT2Zmc2V0cyhhLG8sbik7aW5zZXJ0RWxlbWVudHNBdE9mZnNldHMoYSxpKTtyZXR1cm4gYX12YXIgaXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ZmFsc2U7bi5jb25maWd1cmFibGU9dHJ1ZTtpZihcInZhbHVlXCJpbiBuKW4ud3JpdGFibGU9dHJ1ZTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLmtleSxuKX19cmV0dXJuIGZ1bmN0aW9uKGUsdCxyKXtpZih0KWRlZmluZVByb3BlcnRpZXMoZS5wcm90b3R5cGUsdCk7aWYocilkZWZpbmVQcm9wZXJ0aWVzKGUscik7cmV0dXJuIGV9fSgpO2Z1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfX12YXIgbHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBNYXBzKGUpe19jbGFzc0NhbGxDaGVjayh0aGlzLE1hcHMpO3RoaXMuX2RvY3VtZW50PWdldERvY3VtZW50KGUpO3RoaXMubWFwcz17fX1pdChNYXBzLFt7a2V5OlwiZ2V0QXJlYXNGb3JcIix2YWx1ZTpmdW5jdGlvbiBnZXRBcmVhc0ZvcihlKXtpZighdGhpcy5tYXBzW2VdKXt0aGlzLmFkZE1hcEJ5TmFtZShlKX1yZXR1cm4gdGhpcy5tYXBzW2VdfX0se2tleTpcImFkZE1hcEJ5TmFtZVwiLHZhbHVlOmZ1bmN0aW9uIGFkZE1hcEJ5TmFtZShlKXt2YXIgdD1nZXRNYXBCeU5hbWUoZSx0aGlzLl9kb2N1bWVudCk7aWYoIXQpe3JldHVybn10aGlzLm1hcHNbdC5uYW1lXT1xdWVyeVRhYmJhYmxlKHtjb250ZXh0OnR9KX19LHtrZXk6XCJleHRyYWN0QXJlYXNGcm9tTGlzdFwiLHZhbHVlOmZ1bmN0aW9uIGV4dHJhY3RBcmVhc0Zyb21MaXN0KGUpe3JldHVybiBlLmZpbHRlcigoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKHQhPT1cImFyZWFcIil7cmV0dXJuIHRydWV9dmFyIHI9ZS5wYXJlbnROb2RlO2lmKCF0aGlzLm1hcHNbci5uYW1lXSl7dGhpcy5tYXBzW3IubmFtZV09W119dGhpcy5tYXBzW3IubmFtZV0ucHVzaChlKTtyZXR1cm4gZmFsc2V9KSx0aGlzKX19XSk7cmV0dXJuIE1hcHN9KCk7ZnVuY3Rpb24gc29ydEFyZWEoZSx0KXt2YXIgcj10LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdbdXNlbWFwXVwiKTt2YXIgbj1uZXcgbHQodCk7dmFyIGE9bi5leHRyYWN0QXJlYXNGcm9tTGlzdChlKTtpZighci5sZW5ndGgpe3JldHVybiBhfXJldHVybiBtZXJnZUluRG9tT3JkZXIoe2xpc3Q6YSxlbGVtZW50czpyLHJlc29sdmVFbGVtZW50OmZ1bmN0aW9uIHJlc29sdmVFbGVtZW50KGUpe3ZhciB0PWUuZ2V0QXR0cmlidXRlKFwidXNlbWFwXCIpLnNsaWNlKDEpO3JldHVybiBuLmdldEFyZWFzRm9yKHQpfX0pfXZhciBzdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHxmYWxzZTtuLmNvbmZpZ3VyYWJsZT10cnVlO2lmKFwidmFsdWVcImluIG4pbi53cml0YWJsZT10cnVlO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4ua2V5LG4pfX1yZXR1cm4gZnVuY3Rpb24oZSx0LHIpe2lmKHQpZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSx0KTtpZihyKWRlZmluZVByb3BlcnRpZXMoZSxyKTtyZXR1cm4gZX19KCk7ZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrJDEoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX19dmFyIHV0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gU2hhZG93cyhlLHQpe19jbGFzc0NhbGxDaGVjayQxKHRoaXMsU2hhZG93cyk7dGhpcy5jb250ZXh0PWU7dGhpcy5zb3J0RWxlbWVudHM9dDt0aGlzLmhvc3RDb3VudGVyPTE7dGhpcy5pbkhvc3Q9e307dGhpcy5pbkRvY3VtZW50PVtdO3RoaXMuaG9zdHM9e307dGhpcy5lbGVtZW50cz17fX1zdChTaGFkb3dzLFt7a2V5OlwiX3JlZ2lzdGVySG9zdFwiLHZhbHVlOmZ1bmN0aW9uIF9yZWdpc3Rlckhvc3QoZSl7aWYoZS5fc29ydGluZ0lkKXtyZXR1cm59ZS5fc29ydGluZ0lkPVwic2hhZG93LVwiK3RoaXMuaG9zdENvdW50ZXIrKzt0aGlzLmhvc3RzW2UuX3NvcnRpbmdJZF09ZTt2YXIgdD1nZXRTaGFkb3dIb3N0KHtjb250ZXh0OmV9KTtpZih0KXt0aGlzLl9yZWdpc3Rlckhvc3QodCk7dGhpcy5fcmVnaXN0ZXJIb3N0UGFyZW50KGUsdCl9ZWxzZXt0aGlzLmluRG9jdW1lbnQucHVzaChlKX19fSx7a2V5OlwiX3JlZ2lzdGVySG9zdFBhcmVudFwiLHZhbHVlOmZ1bmN0aW9uIF9yZWdpc3Rlckhvc3RQYXJlbnQoZSx0KXtpZighdGhpcy5pbkhvc3RbdC5fc29ydGluZ0lkXSl7dGhpcy5pbkhvc3RbdC5fc29ydGluZ0lkXT1bXX10aGlzLmluSG9zdFt0Ll9zb3J0aW5nSWRdLnB1c2goZSl9fSx7a2V5OlwiX3JlZ2lzdGVyRWxlbWVudFwiLHZhbHVlOmZ1bmN0aW9uIF9yZWdpc3RlckVsZW1lbnQoZSx0KXtpZighdGhpcy5lbGVtZW50c1t0Ll9zb3J0aW5nSWRdKXt0aGlzLmVsZW1lbnRzW3QuX3NvcnRpbmdJZF09W119dGhpcy5lbGVtZW50c1t0Ll9zb3J0aW5nSWRdLnB1c2goZSl9fSx7a2V5OlwiZXh0cmFjdEVsZW1lbnRzXCIsdmFsdWU6ZnVuY3Rpb24gZXh0cmFjdEVsZW1lbnRzKGUpe3JldHVybiBlLmZpbHRlcigoZnVuY3Rpb24oZSl7dmFyIHQ9Z2V0U2hhZG93SG9zdCh7Y29udGV4dDplfSk7aWYoIXQpe3JldHVybiB0cnVlfXRoaXMuX3JlZ2lzdGVySG9zdCh0KTt0aGlzLl9yZWdpc3RlckVsZW1lbnQoZSx0KTtyZXR1cm4gZmFsc2V9KSx0aGlzKX19LHtrZXk6XCJzb3J0XCIsdmFsdWU6ZnVuY3Rpb24gc29ydChlKXt2YXIgdD10aGlzLl9pbmplY3RIb3N0cyhlKTt0PXRoaXMuX3JlcGxhY2VIb3N0cyh0KTt0aGlzLl9jbGVhbnVwKCk7cmV0dXJuIHR9fSx7a2V5OlwiX2luamVjdEhvc3RzXCIsdmFsdWU6ZnVuY3Rpb24gX2luamVjdEhvc3RzKGUpe09iamVjdC5rZXlzKHRoaXMuaG9zdHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZWxlbWVudHNbZV07dmFyIHI9dGhpcy5pbkhvc3RbZV07dmFyIG49dGhpcy5ob3N0c1tlXS5zaGFkb3dSb290O3RoaXMuZWxlbWVudHNbZV09dGhpcy5fbWVyZ2UodCxyLG4pfSksdGhpcyk7cmV0dXJuIHRoaXMuX21lcmdlKGUsdGhpcy5pbkRvY3VtZW50LHRoaXMuY29udGV4dCl9fSx7a2V5OlwiX21lcmdlXCIsdmFsdWU6ZnVuY3Rpb24gX21lcmdlKGUsdCxyKXt2YXIgbj1tZXJnZUluRG9tT3JkZXIoe2xpc3Q6ZSxlbGVtZW50czp0fSk7cmV0dXJuIHRoaXMuc29ydEVsZW1lbnRzKG4scil9fSx7a2V5OlwiX3JlcGxhY2VIb3N0c1wiLHZhbHVlOmZ1bmN0aW9uIF9yZXBsYWNlSG9zdHMoZSl7cmV0dXJuIG1lcmdlSW5Eb21PcmRlcih7bGlzdDplLGVsZW1lbnRzOnRoaXMuaW5Eb2N1bWVudCxyZXNvbHZlRWxlbWVudDp0aGlzLl9yZXNvbHZlSG9zdEVsZW1lbnQuYmluZCh0aGlzKX0pfX0se2tleTpcIl9yZXNvbHZlSG9zdEVsZW1lbnRcIix2YWx1ZTpmdW5jdGlvbiBfcmVzb2x2ZUhvc3RFbGVtZW50KGUpe3ZhciB0PW1lcmdlSW5Eb21PcmRlcih7bGlzdDp0aGlzLmVsZW1lbnRzW2UuX3NvcnRpbmdJZF0sZWxlbWVudHM6dGhpcy5pbkhvc3RbZS5fc29ydGluZ0lkXSxyZXNvbHZlRWxlbWVudDp0aGlzLl9yZXNvbHZlSG9zdEVsZW1lbnQuYmluZCh0aGlzKX0pO3ZhciByPXRhYmluZGV4VmFsdWUoZSk7aWYociE9PW51bGwmJnI+LTEpe3JldHVybltlXS5jb25jYXQodCl9cmV0dXJuIHR9fSx7a2V5OlwiX2NsZWFudXBcIix2YWx1ZTpmdW5jdGlvbiBfY2xlYW51cCgpe09iamVjdC5rZXlzKHRoaXMuaG9zdHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2RlbGV0ZSB0aGlzLmhvc3RzW2VdLl9zb3J0aW5nSWR9KSx0aGlzKX19XSk7cmV0dXJuIFNoYWRvd3N9KCk7ZnVuY3Rpb24gc29ydFNoYWRvd2VkKGUsdCxyKXt2YXIgbj1uZXcgdXQodCxyKTt2YXIgYT1uLmV4dHJhY3RFbGVtZW50cyhlKTtpZihhLmxlbmd0aD09PWUubGVuZ3RoKXtyZXR1cm4gcihlKX1yZXR1cm4gbi5zb3J0KGEpfWZ1bmN0aW9uIHNvcnRUYWJpbmRleChlKXt2YXIgdD17fTt2YXIgcj1bXTt2YXIgbj1lLmZpbHRlcigoZnVuY3Rpb24oZSl7dmFyIG49ZS50YWJJbmRleDtpZihuPT09dW5kZWZpbmVkKXtuPXRhYmluZGV4VmFsdWUoZSl9aWYobjw9MHx8bj09PW51bGx8fG49PT11bmRlZmluZWQpe3JldHVybiB0cnVlfWlmKCF0W25dKXt0W25dPVtdO3IucHVzaChuKX10W25dLnB1c2goZSk7cmV0dXJuIGZhbHNlfSkpO3ZhciBhPXIuc29ydCgpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSkucmVkdWNlUmlnaHQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuY29uY2F0KGUpfSksbik7cmV0dXJuIGF9dmFyIGN0PXZvaWQgMDtmdW5jdGlvbiBtb3ZlQ29udGV4dFRvQmVnaW5uaW5nKGUsdCl7dmFyIHI9ZS5pbmRleE9mKHQpO2lmKHI+MCl7dmFyIG49ZS5zcGxpY2UociwxKTtyZXR1cm4gbi5jb25jYXQoZSl9cmV0dXJuIGV9ZnVuY3Rpb24gc29ydEVsZW1lbnRzKGUsdCl7aWYoY3QudGFic2VxdWVuY2VBcmVhQXRJbWdQb3NpdGlvbil7ZT1zb3J0QXJlYShlLHQpfWU9c29ydFRhYmluZGV4KGUpO3JldHVybiBlfWZ1bmN0aW9uIHF1ZXJ5VGFic2VxdWVuY2UoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e30sdD1lLmNvbnRleHQscj1lLmluY2x1ZGVDb250ZXh0LG49ZS5pbmNsdWRlT25seVRhYmJhYmxlLGE9ZS5zdHJhdGVneTtpZighY3Qpe2N0PV9zdXBwb3J0cygpfXZhciBvPW5vZGVBcnJheSh0KVswXXx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O3ZhciBpPXF1ZXJ5VGFiYmFibGUoe2NvbnRleHQ6byxpbmNsdWRlQ29udGV4dDpyLGluY2x1ZGVPbmx5VGFiYmFibGU6bixzdHJhdGVneTphfSk7aWYoZG9jdW1lbnQuYm9keS5jcmVhdGVTaGFkb3dSb290JiZBLmlzLkJMSU5LKXtpPXNvcnRTaGFkb3dlZChpLG8sc29ydEVsZW1lbnRzKX1lbHNle2k9c29ydEVsZW1lbnRzKGksbyl9aWYocil7aT1tb3ZlQ29udGV4dFRvQmVnaW5uaW5nKGksbyl9cmV0dXJuIGl9dmFyIGR0PXt0YWI6OSxsZWZ0OjM3LHVwOjM4LHJpZ2h0OjM5LGRvd246NDAscGFnZVVwOjMzLFwicGFnZS11cFwiOjMzLHBhZ2VEb3duOjM0LFwicGFnZS1kb3duXCI6MzQsZW5kOjM1LGhvbWU6MzYsZW50ZXI6MTMsZXNjYXBlOjI3LHNwYWNlOjMyLHNoaWZ0OjE2LGNhcHNMb2NrOjIwLFwiY2Fwcy1sb2NrXCI6MjAsY3RybDoxNyxhbHQ6MTgsbWV0YTo5MSxwYXVzZToxOSxpbnNlcnQ6NDUsZGVsZXRlOjQ2LGJhY2tzcGFjZTo4LF9hbGlhczp7OTE6WzkyLDkzLDIyNF19fTtmb3IodmFyIGZ0PTE7ZnQ8MjY7ZnQrKyl7ZHRbXCJmXCIrZnRdPWZ0KzExMX1mb3IodmFyIG10PTA7bXQ8MTA7bXQrKyl7dmFyIHB0PW10KzQ4O3ZhciBidD1tdCs5NjtkdFttdF09cHQ7ZHRbXCJudW0tXCIrbXRdPWJ0O2R0Ll9hbGlhc1twdF09W2J0XX1mb3IodmFyIGd0PTA7Z3Q8MjY7Z3QrKyl7dmFyIHZ0PWd0KzY1O3ZhciBodD1TdHJpbmcuZnJvbUNoYXJDb2RlKHZ0KS50b0xvd2VyQ2FzZSgpO2R0W2h0XT12dH12YXIgeHQ9e2FsdDpcImFsdEtleVwiLGN0cmw6XCJjdHJsS2V5XCIsbWV0YTpcIm1ldGFLZXlcIixzaGlmdDpcInNoaWZ0S2V5XCJ9O3ZhciB5dD1PYmplY3Qua2V5cyh4dCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4geHRbZV19KSk7ZnVuY3Rpb24gY3JlYXRlRXhwZWN0ZWRNb2RpZmllcnMoZSl7dmFyIHQ9ZT9udWxsOmZhbHNlO3JldHVybnthbHRLZXk6dCxjdHJsS2V5OnQsbWV0YUtleTp0LHNoaWZ0S2V5OnR9fWZ1bmN0aW9uIHJlc29sdmVNb2RpZmllcnMoZSl7dmFyIHQ9ZS5pbmRleE9mKFwiKlwiKSE9PS0xO3ZhciByPWNyZWF0ZUV4cGVjdGVkTW9kaWZpZXJzKHQpO2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aWYoZT09PVwiKlwiKXtyZXR1cm59dmFyIHQ9dHJ1ZTt2YXIgbj1lLnNsaWNlKDAsMSk7aWYobj09PVwiP1wiKXt0PW51bGx9ZWxzZSBpZihuPT09XCIhXCIpe3Q9ZmFsc2V9aWYodCE9PXRydWUpe2U9ZS5zbGljZSgxKX12YXIgYT14dFtlXTtpZighYSl7dGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBtb2RpZmllciBcIicrZSsnXCInKX1yW2FdPXR9KSk7cmV0dXJuIHJ9ZnVuY3Rpb24gcmVzb2x2ZUtleShlKXt2YXIgdD1kdFtlXXx8cGFyc2VJbnQoZSwxMCk7aWYoIXR8fHR5cGVvZiB0IT09XCJudW1iZXJcInx8aXNOYU4odCkpe3Rocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24ga2V5IFwiJytlKydcIicpfXJldHVyblt0XS5jb25jYXQoZHQuX2FsaWFzW3RdfHxbXSl9ZnVuY3Rpb24gbWF0Y2hNb2RpZmllcnMoZSx0KXtyZXR1cm4heXQuc29tZSgoZnVuY3Rpb24ocil7cmV0dXJuIHR5cGVvZiBlW3JdPT09XCJib29sZWFuXCImJkJvb2xlYW4odFtyXSkhPT1lW3JdfSkpfWZ1bmN0aW9uIGtleUJpbmRpbmcoZSl7cmV0dXJuIGUuc3BsaXQoL1xccysvKS5tYXAoKGZ1bmN0aW9uKGUpe3ZhciB0PWUuc3BsaXQoXCIrXCIpO3ZhciByPXJlc29sdmVNb2RpZmllcnModC5zbGljZSgwLC0xKSk7dmFyIG49cmVzb2x2ZUtleSh0LnNsaWNlKC0xKSk7cmV0dXJue2tleUNvZGVzOm4sbW9kaWZpZXJzOnIsbWF0Y2hNb2RpZmllcnM6bWF0Y2hNb2RpZmllcnMuYmluZChudWxsLHIpfX0pKX1mdW5jdGlvbiBnZXRQYXJlbnRDb21wYXJhdG9yKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT11bmRlZmluZWQ/YXJndW1lbnRzWzBdOnt9LHQ9ZS5wYXJlbnQscj1lLmVsZW1lbnQsbj1lLmluY2x1ZGVTZWxmO2lmKHQpe3JldHVybiBmdW5jdGlvbiBpc0NoaWxkT2YoZSl7cmV0dXJuIEJvb2xlYW4obiYmZT09PXR8fHQuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZSkmTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkpfX1lbHNlIGlmKHIpe3JldHVybiBmdW5jdGlvbiBpc1BhcmVudE9mKGUpe3JldHVybiBCb29sZWFuKG4mJnI9PT1lfHxlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHIpJk5vZGUuRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTkVEX0JZKX19dGhyb3cgbmV3IFR5cGVFcnJvcihcInV0aWwvY29tcGFyZS1wb3NpdGlvbiNnZXRQYXJlbnRDb21wYXJhdG9yIHJlcXVpcmVkIGVpdGhlciBvcHRpb25zLnBhcmVudCBvciBvcHRpb25zLmVsZW1lbnRcIil9ZnVuY3Rpb24gd2hlbktleSgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fTt2YXIgdD17fTt2YXIgcj1ub2RlQXJyYXkoZS5jb250ZXh0KVswXXx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O2RlbGV0ZSBlLmNvbnRleHQ7dmFyIG49bm9kZUFycmF5KGUuZmlsdGVyKTtkZWxldGUgZS5maWx0ZXI7dmFyIGE9T2JqZWN0LmtleXMoZSk7aWYoIWEubGVuZ3RoKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwid2hlbi9rZXkgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIG9wdGlvbiBrZXlcIil9dmFyIG89ZnVuY3Rpb24gcmVnaXN0ZXJCaW5kaW5nKGUpe2Uua2V5Q29kZXMuZm9yRWFjaCgoZnVuY3Rpb24ocil7aWYoIXRbcl0pe3Rbcl09W119dFtyXS5wdXNoKGUpfSkpfTthLmZvckVhY2goKGZ1bmN0aW9uKHQpe2lmKHR5cGVvZiBlW3RdIT09XCJmdW5jdGlvblwiKXt0aHJvdyBuZXcgVHlwZUVycm9yKCd3aGVuL2tleSByZXF1aXJlcyBvcHRpb25bXCInK3QrJ1wiXSB0byBiZSBhIGZ1bmN0aW9uJyl9dmFyIHI9ZnVuY3Rpb24gYWRkQ2FsbGJhY2socil7ci5jYWxsYmFjaz1lW3RdO3JldHVybiByfTtrZXlCaW5kaW5nKHQpLm1hcChyKS5mb3JFYWNoKG8pfSkpO3ZhciBpPWZ1bmN0aW9uIGhhbmRsZUtleURvd24oZSl7aWYoZS5kZWZhdWx0UHJldmVudGVkKXtyZXR1cm59aWYobi5sZW5ndGgpe3ZhciBhPWdldFBhcmVudENvbXBhcmF0b3Ioe2VsZW1lbnQ6ZS50YXJnZXQsaW5jbHVkZVNlbGY6dHJ1ZX0pO2lmKG4uc29tZShhKSl7cmV0dXJufX12YXIgbz1lLmtleUNvZGV8fGUud2hpY2g7aWYoIXRbb10pe3JldHVybn10W29dLmZvckVhY2goKGZ1bmN0aW9uKHQpe2lmKCF0Lm1hdGNoTW9kaWZpZXJzKGUpKXtyZXR1cm59dC5jYWxsYmFjay5jYWxsKHIsZSxsKX0pKX07ci5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLGksZmFsc2UpO3ZhciBsPWZ1bmN0aW9uIGRpc2VuZ2FnZSgpe3IucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixpLGZhbHNlKX07cmV0dXJue2Rpc2VuZ2FnZTpsfX1mdW5jdGlvbiBtYWludGFpbl90YWJfZm9jdXMoe2NvbnRleHQ6ZX09e30pe2lmKCFlKXtlPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudH1xdWVyeVRhYnNlcXVlbmNlKCk7cmV0dXJuIHdoZW5LZXkoe1wiP2FsdCs/c2hpZnQrdGFiXCI6ZnVuY3Rpb24gYWx0U2hpZnRUYWIodCl7dC5wcmV2ZW50RGVmYXVsdCgpO3ZhciByPXF1ZXJ5VGFic2VxdWVuY2Uoe2NvbnRleHQ6ZX0pO3ZhciBuPXQuc2hpZnRLZXk7dmFyIGE9clswXTt2YXIgbz1yW3IubGVuZ3RoLTFdO3ZhciBpPW4/YTpvO3ZhciBsPW4/bzphO2lmKGlzQWN0aXZlRWxlbWVudChpKSl7bC5mb2N1cygpO3JldHVybn12YXIgcz12b2lkIDA7dmFyIHU9ci5zb21lKChmdW5jdGlvbihlLHQpe2lmKCFpc0FjdGl2ZUVsZW1lbnQoZSkpe3JldHVybiBmYWxzZX1zPXQ7cmV0dXJuIHRydWV9KSk7aWYoIXUpe2EuZm9jdXMoKTtyZXR1cm59dmFyIGM9bj8tMToxO3JbcytjXS5mb2N1cygpfX0pfWxldCBFdDtsZXQgd3Q7bGV0IGt0PTA7ZnVuY3Rpb24gbG9jaygpe3NldFRpbWVvdXQoKCgpPT57aWYoa3QrKz4wKXtyZXR1cm59Y29uc3QgZT13aW5kb3cuaW5uZXJXaWR0aC1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7aWYoZT4wKXtFdD1kb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodDtkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodD1gJHtlfXB4YH13dD1kb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93O2RvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c9XCJoaWRkZW5cIn0pKX1mdW5jdGlvbiB1bmxvY2soKXtzZXRUaW1lb3V0KCgoKT0+e2lmKGt0PT09MHx8LS1rdCE9PTApe3JldHVybn1pZihFdCE9PXVuZGVmaW5lZCl7ZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQ9RXQ7RXQ9dW5kZWZpbmVkfWlmKHd0IT09dW5kZWZpbmVkKXtkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PXd0O3d0PXVuZGVmaW5lZH19KSl9Y29uc3QgU3Q9ZnVuY3Rpb24gT3ZlcmxheSh7Y2xhc3NOYW1lOmUsY2hpbGRyZW46dCxmaXhlZDpyfSl7cC51c2VFZmZlY3QoKCgpPT57bG9jaygpO3JldHVybigpPT57dW5sb2NrKCl9fSksW10pO2NvbnN0W24sYV09cC51c2VTdGF0ZShudWxsKTtjb25zdCBvPXAudXNlQ2FsbGJhY2soKGU9PnthKGUpfSksW10pO3AudXNlRWZmZWN0KCgoKT0+e2lmKG49PW51bGwpe3JldHVybn1jb25zdCBlPW1haW50YWluX3RhYl9mb2N1cyh7Y29udGV4dDpufSk7cmV0dXJuKCk9PntlLmRpc2VuZ2FnZSgpfX0pLFtuXSk7cmV0dXJuIHAuY3JlYXRlRWxlbWVudChcImRpdlwiLHtcImRhdGEtbmV4dGpzLWRpYWxvZy1vdmVybGF5XCI6dHJ1ZSxjbGFzc05hbWU6ZSxyZWY6b30scC5jcmVhdGVFbGVtZW50KFwiZGl2XCIse1wiZGF0YS1uZXh0anMtZGlhbG9nLWJhY2tkcm9wXCI6dHJ1ZSxcImRhdGEtbmV4dGpzLWRpYWxvZy1iYWNrZHJvcC1maXhlZFwiOnI/dHJ1ZTp1bmRlZmluZWR9KSx0KX07dmFyIF90PXJlcXVpcmUoXCJuZXh0L2Rpc3QvY29tcGlsZWQvYW5zZXJcIik7dmFyIFR0PV9fbmNjd3Bja19yZXF1aXJlX18ubihfdCk7Y29uc3QgQ3Q9ZnVuY3Rpb24gVGVybWluYWwoe2NvbnRlbnQ6ZX0pe2NvbnN0IHQ9cC51c2VNZW1vKCgoKT0+VHQoKS5hbnNpVG9Kc29uKGUse2pzb246dHJ1ZSx1c2VfY2xhc3Nlczp0cnVlLHJlbW92ZV9lbXB0eTp0cnVlfSkpLFtlXSk7cmV0dXJuIHAuY3JlYXRlRWxlbWVudChcImRpdlwiLHtcImRhdGEtbmV4dGpzLXRlcm1pbmFsXCI6dHJ1ZX0scC5jcmVhdGVFbGVtZW50KFwicHJlXCIsbnVsbCx0Lm1hcCgoKGUsdCk9PnAuY3JlYXRlRWxlbWVudChcInNwYW5cIix7a2V5OmB0ZXJtaW5hbC1lbnRyeS0ke3R9YCxzdHlsZTp7Y29sb3I6ZS5mZz9gdmFyKC0tY29sb3ItJHtlLmZnfSlgOnVuZGVmaW5lZCwuLi5lLmRlY29yYXRpb249PT1cImJvbGRcIj97Zm9udFdlaWdodDo4MDB9OmUuZGVjb3JhdGlvbj09PVwiaXRhbGljXCI/e2ZvbnRTdHlsZTpcIml0YWxpY1wifTp1bmRlZmluZWR9fSxlLmNvbnRlbnQpKSkpKX07Y29uc3QganQ9ZnVuY3Rpb24gQnVpbGRFcnJvcih7bWVzc2FnZTplfSl7Y29uc3QgdD1wLnVzZUNhbGxiYWNrKCgoKT0+e30pLFtdKTtyZXR1cm4gcC5jcmVhdGVFbGVtZW50KFN0LHtmaXhlZDp0cnVlfSxwLmNyZWF0ZUVsZW1lbnQoaCx7dHlwZTpcImVycm9yXCIsXCJhcmlhLWxhYmVsbGVkYnlcIjpcIm5leHRqc19fY29udGFpbmVyX2J1aWxkX2Vycm9yX2xhYmVsXCIsXCJhcmlhLWRlc2NyaWJlZGJ5XCI6XCJuZXh0anNfX2NvbnRhaW5lcl9idWlsZF9lcnJvcl9kZXNjXCIsb25DbG9zZTp0fSxwLmNyZWF0ZUVsZW1lbnQoeSxudWxsLHAuY3JlYXRlRWxlbWVudChFLHtjbGFzc05hbWU6XCJuZXh0anMtY29udGFpbmVyLWJ1aWxkLWVycm9yLWhlYWRlclwifSxwLmNyZWF0ZUVsZW1lbnQoXCJoNFwiLHtpZDpcIm5leHRqc19fY29udGFpbmVyX2J1aWxkX2Vycm9yX2xhYmVsXCJ9LFwiRmFpbGVkIHRvIGNvbXBpbGVcIikpLHAuY3JlYXRlRWxlbWVudCh4LHtjbGFzc05hbWU6XCJuZXh0anMtY29udGFpbmVyLWJ1aWxkLWVycm9yLWJvZHlcIn0scC5jcmVhdGVFbGVtZW50KEN0LHtjb250ZW50OmV9KSxwLmNyZWF0ZUVsZW1lbnQoXCJmb290ZXJcIixudWxsLHAuY3JlYXRlRWxlbWVudChcInBcIix7aWQ6XCJuZXh0anNfX2NvbnRhaW5lcl9idWlsZF9lcnJvcl9kZXNjXCJ9LHAuY3JlYXRlRWxlbWVudChcInNtYWxsXCIsbnVsbCxcIlRoaXMgZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzIGFuZCBjYW4gb25seSBiZSBkaXNtaXNzZWQgYnkgZml4aW5nIHRoZSBlcnJvci5cIikpKSkpKSl9O2NvbnN0IEF0PW5vb3BgXG4gIC5uZXh0anMtY29udGFpbmVyLWJ1aWxkLWVycm9yLWhlYWRlciA+IGg0IHtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgLm5leHRqcy1jb250YWluZXItYnVpbGQtZXJyb3ItYm9keSBmb290ZXIge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXNpemUtZ2FwKTtcbiAgfVxuICAubmV4dGpzLWNvbnRhaW5lci1idWlsZC1lcnJvci1ib2R5IGZvb3RlciBwIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICAubmV4dGpzLWNvbnRhaW5lci1idWlsZC1lcnJvci1ib2R5IHNtYWxsIHtcbiAgICBjb2xvcjogIzc1NzU3NTtcbiAgfVxuYDtjb25zdCBDbG9zZUljb249KCk9PnAuY3JlYXRlRWxlbWVudChcInN2Z1wiLHt3aWR0aDpcIjI0XCIsaGVpZ2h0OlwiMjRcIix2aWV3Qm94OlwiMCAwIDI0IDI0XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LHAuY3JlYXRlRWxlbWVudChcInBhdGhcIix7ZDpcIk0xOCA2TDYgMThcIixzdHJva2U6XCJjdXJyZW50Q29sb3JcIixzdHJva2VXaWR0aDpcIjJcIixzdHJva2VMaW5lY2FwOlwicm91bmRcIixzdHJva2VMaW5lam9pbjpcInJvdW5kXCJ9KSxwLmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIse2Q6XCJNNiA2TDE4IDE4XCIsc3Ryb2tlOlwiY3VycmVudENvbG9yXCIsc3Ryb2tlV2lkdGg6XCIyXCIsc3Ryb2tlTGluZWNhcDpcInJvdW5kXCIsc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwifSkpO2NvbnN0IE90PWZ1bmN0aW9uIExlZnRSaWdodERpYWxvZ0hlYWRlcih7Y2hpbGRyZW46ZSxjbGFzc05hbWU6dCxwcmV2aW91czpyLG5leHQ6bixjbG9zZTphfSl7Y29uc3Qgbz1wLnVzZVJlZihudWxsKTtjb25zdCBpPXAudXNlUmVmKG51bGwpO2NvbnN0IGw9cC51c2VSZWYobnVsbCk7Y29uc3Rbcyx1XT1wLnVzZVN0YXRlKG51bGwpO2NvbnN0IGM9cC51c2VDYWxsYmFjaygoZT0+e3UoZSl9KSxbXSk7cC51c2VFZmZlY3QoKCgpPT57aWYocz09bnVsbCl7cmV0dXJufWNvbnN0IGU9cy5nZXRSb290Tm9kZSgpO2NvbnN0IHQ9c2VsZi5kb2N1bWVudDtmdW5jdGlvbiBoYW5kbGVyKHQpe2lmKHQua2V5PT09XCJBcnJvd0xlZnRcIil7dC5zdG9wUHJvcGFnYXRpb24oKTtpZihvLmN1cnJlbnQpe28uY3VycmVudC5mb2N1cygpfXImJnIoKX1lbHNlIGlmKHQua2V5PT09XCJBcnJvd1JpZ2h0XCIpe3Quc3RvcFByb3BhZ2F0aW9uKCk7aWYoaS5jdXJyZW50KXtpLmN1cnJlbnQuZm9jdXMoKX1uJiZuKCl9ZWxzZSBpZih0LmtleT09PVwiRXNjYXBlXCIpe3Quc3RvcFByb3BhZ2F0aW9uKCk7aWYoZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3Qpe2NvbnN0IHQ9ZS5hY3RpdmVFbGVtZW50O2lmKHQmJnQhPT1sLmN1cnJlbnQmJnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCl7dC5ibHVyKCk7cmV0dXJufX1pZihhKXthKCl9fX1lLmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsaGFuZGxlcik7aWYoZSE9PXQpe3QuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixoYW5kbGVyKX1yZXR1cm4gZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsaGFuZGxlcik7aWYoZSE9PXQpe3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixoYW5kbGVyKX19fSksW2EscyxuLHJdKTtwLnVzZUVmZmVjdCgoKCk9PntpZihzPT1udWxsKXtyZXR1cm59Y29uc3QgZT1zLmdldFJvb3ROb2RlKCk7aWYoZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3Qpe2NvbnN0IHQ9ZS5hY3RpdmVFbGVtZW50O2lmKHI9PW51bGwpe2lmKG8uY3VycmVudCYmdD09PW8uY3VycmVudCl7by5jdXJyZW50LmJsdXIoKX19ZWxzZSBpZihuPT1udWxsKXtpZihpLmN1cnJlbnQmJnQ9PT1pLmN1cnJlbnQpe2kuY3VycmVudC5ibHVyKCl9fX19KSxbcyxuLHJdKTtyZXR1cm4gcC5jcmVhdGVFbGVtZW50KFwiZGl2XCIse1wiZGF0YS1uZXh0anMtZGlhbG9nLWxlZnQtcmlnaHRcIjp0cnVlLGNsYXNzTmFtZTp0fSxwLmNyZWF0ZUVsZW1lbnQoXCJuYXZcIix7cmVmOmN9LHAuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLHtyZWY6byx0eXBlOlwiYnV0dG9uXCIsZGlzYWJsZWQ6cj09bnVsbD90cnVlOnVuZGVmaW5lZCxcImFyaWEtZGlzYWJsZWRcIjpyPT1udWxsP3RydWU6dW5kZWZpbmVkLG9uQ2xpY2s6cj8/dW5kZWZpbmVkfSxwLmNyZWF0ZUVsZW1lbnQoXCJzdmdcIix7dmlld0JveDpcIjAgMCAxNCAxNFwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxwLmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIse2Q6XCJNNi45OTk5NiAxLjE2NjY2TDEuMTY2NjMgNi45OTk5OUw2Ljk5OTk2IDEyLjgzMzNNMTIuODMzMyA2Ljk5OTk5SDEuOTk5OTZIMTIuODMzM1pcIixzdHJva2U6XCJjdXJyZW50Q29sb3JcIixzdHJva2VXaWR0aDpcIjJcIixzdHJva2VMaW5lY2FwOlwicm91bmRcIixzdHJva2VMaW5lam9pbjpcInJvdW5kXCJ9KSkpLHAuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLHtyZWY6aSx0eXBlOlwiYnV0dG9uXCIsZGlzYWJsZWQ6bj09bnVsbD90cnVlOnVuZGVmaW5lZCxcImFyaWEtZGlzYWJsZWRcIjpuPT1udWxsP3RydWU6dW5kZWZpbmVkLG9uQ2xpY2s6bj8/dW5kZWZpbmVkfSxwLmNyZWF0ZUVsZW1lbnQoXCJzdmdcIix7dmlld0JveDpcIjAgMCAxNCAxNFwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxwLmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIse2Q6XCJNNi45OTk5NiAxLjE2NjY2TDEyLjgzMzMgNi45OTk5OUw2Ljk5OTk2IDEyLjgzMzNNMS4xNjY2MyA2Ljk5OTk5SDEySDEuMTY2NjNaXCIsc3Ryb2tlOlwiY3VycmVudENvbG9yXCIsc3Ryb2tlV2lkdGg6XCIyXCIsc3Ryb2tlTGluZWNhcDpcInJvdW5kXCIsc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwifSkpKSxcIsKgXCIsZSksYT9wLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix7XCJkYXRhLW5leHRqcy1lcnJvcnMtZGlhbG9nLWxlZnQtcmlnaHQtY2xvc2UtYnV0dG9uXCI6dHJ1ZSxyZWY6bCx0eXBlOlwiYnV0dG9uXCIsb25DbGljazphLFwiYXJpYS1sYWJlbFwiOlwiQ2xvc2VcIn0scC5jcmVhdGVFbGVtZW50KFwic3BhblwiLHtcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9LHAuY3JlYXRlRWxlbWVudChDbG9zZUljb24sbnVsbCkpKTpudWxsKX07Y29uc3QgTnQ9bm9vcGBcbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1sZWZ0LXJpZ2h0XSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgfVxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWxlZnQtcmlnaHRdID4gbmF2ID4gYnV0dG9uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgd2lkdGg6IGNhbGModmFyKC0tc2l6ZS1nYXAtZG91YmxlKSArIHZhcigtLXNpemUtZ2FwKSk7XG4gICAgaGVpZ2h0OiBjYWxjKHZhcigtLXNpemUtZ2FwLWRvdWJsZSkgKyB2YXIoLS1zaXplLWdhcCkpO1xuICAgIGZvbnQtc2l6ZTogMDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDg1LCA4NSwgMC4xKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItYW5zaS1yZWQpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMjVzIGVhc2U7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1sZWZ0LXJpZ2h0XSA+IG5hdiA+IGJ1dHRvbiA+IHN2ZyB7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgaGVpZ2h0OiBjYWxjKHZhcigtLXNpemUtZ2FwKSArIHZhcigtLXNpemUtZ2FwLWhhbGYpKTtcbiAgfVxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWxlZnQtcmlnaHRdID4gbmF2ID4gYnV0dG9uOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgODUsIDg1LCAwLjIpO1xuICB9XG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctbGVmdC1yaWdodF0gPiBuYXYgPiBidXR0b246ZGlzYWJsZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA4NSwgODUsIDAuMSk7XG4gICAgY29sb3I6IHJnYmEoMjU1LCA4NSwgODUsIDAuNCk7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgfVxuXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctbGVmdC1yaWdodF0gPiBuYXYgPiBidXR0b246Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2l6ZS1nYXAtaGFsZikgMCAwIHZhcigtLXNpemUtZ2FwLWhhbGYpO1xuICAgIG1hcmdpbi1yaWdodDogMXB4O1xuICB9XG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctbGVmdC1yaWdodF0gPiBuYXYgPiBidXR0b246bGFzdC1vZi10eXBlIHtcbiAgICBib3JkZXItcmFkaXVzOiAwIHZhcigtLXNpemUtZ2FwLWhhbGYpIHZhcigtLXNpemUtZ2FwLWhhbGYpIDA7XG4gIH1cblxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWxlZnQtcmlnaHRdID4gYnV0dG9uOmxhc3Qtb2YtdHlwZSB7XG4gICAgYm9yZGVyOiAwO1xuICAgIHBhZGRpbmc6IDA7XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuXG4gICAgb3BhY2l0eTogMC40O1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4yNXMgZWFzZTtcbiAgfVxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWxlZnQtcmlnaHRdID4gYnV0dG9uOmxhc3Qtb2YtdHlwZTpob3ZlciB7XG4gICAgb3BhY2l0eTogMC43O1xuICB9XG5gO2NvbnN0IEl0PW5vb3BgXG4gIFtkYXRhLW5leHRqcy10b2FzdF0ge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBib3R0b206IHZhcigtLXNpemUtZ2FwLWRvdWJsZSk7XG4gICAgbGVmdDogdmFyKC0tc2l6ZS1nYXAtZG91YmxlKTtcbiAgICBtYXgtd2lkdGg6IDQyMHB4O1xuICAgIHotaW5kZXg6IDkwMDA7XG4gIH1cblxuICBAbWVkaWEgKG1heC13aWR0aDogNDQwcHgpIHtcbiAgICBbZGF0YS1uZXh0anMtdG9hc3RdIHtcbiAgICAgIG1heC13aWR0aDogOTB2dztcbiAgICAgIGxlZnQ6IDV2dztcbiAgICB9XG4gIH1cblxuICBbZGF0YS1uZXh0anMtdG9hc3Qtd3JhcHBlcl0ge1xuICAgIHBhZGRpbmc6IDE2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2l6ZS1nYXAtaGFsZik7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItYW5zaS1icmlnaHQtd2hpdGUpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktcmVkKTtcbiAgICBib3gtc2hhZG93OiAwcHggdmFyKC0tc2l6ZS1nYXAtZG91YmxlKSB2YXIoLS1zaXplLWdhcC1xdWFkKVxuICAgICAgcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgfVxuYDtjb25zdCBMdD1mdW5jdGlvbiBUb2FzdCh7b25DbGljazplLGNoaWxkcmVuOnQsY2xhc3NOYW1lOnJ9KXtyZXR1cm4gcC5jcmVhdGVFbGVtZW50KFwiZGl2XCIse1wiZGF0YS1uZXh0anMtdG9hc3RcIjp0cnVlLG9uQ2xpY2s6ZSxjbGFzc05hbWU6cn0scC5jcmVhdGVFbGVtZW50KFwiZGl2XCIse1wiZGF0YS1uZXh0anMtdG9hc3Qtd3JhcHBlclwiOnRydWV9LHQpKX07dmFyIEZ0PXJlcXVpcmUoXCJuZXh0L2Rpc3QvY29tcGlsZWQvc3RyaXAtYW5zaVwiKTt2YXIgRHQ9X19uY2N3cGNrX3JlcXVpcmVfXy5uKEZ0KTtjb25zdCBNdD1mdW5jdGlvbiBDb2RlRnJhbWUoe3N0YWNrRnJhbWU6ZSxjb2RlRnJhbWU6dH0pe2NvbnN0IHI9cC51c2VNZW1vKCgoKT0+e2NvbnN0IGU9dC5zcGxpdCgvXFxyP1xcbi9nKTtjb25zdCByPWUubWFwKChlPT4vXj4/ICtcXGQrICtcXHwgWyBdKy8uZXhlYyhEdCgpKGUpKT09PW51bGw/bnVsbDovXj4/ICtcXGQrICtcXHwgKCAqKS8uZXhlYyhEdCgpKGUpKSkpLmZpbHRlcihCb29sZWFuKS5tYXAoKGU9PmUucG9wKCkpKS5yZWR1Y2UoKChlLHQpPT5pc05hTihlKT90Lmxlbmd0aDpNYXRoLm1pbihlLHQubGVuZ3RoKSksTmFOKTtpZihyPjEpe2NvbnN0IHQ9XCIgXCIucmVwZWF0KHIpO3JldHVybiBlLm1hcCgoKGUscik9Pn4ocj1lLmluZGV4T2YoXCJ8XCIpKT9lLnN1YnN0cmluZygwLHIpK2Uuc3Vic3RyaW5nKHIpLnJlcGxhY2UodCxcIlwiKTplKSkuam9pbihcIlxcblwiKX1yZXR1cm4gZS5qb2luKFwiXFxuXCIpfSksW3RdKTtjb25zdCBuPXAudXNlTWVtbygoKCk9PlR0KCkuYW5zaVRvSnNvbihyLHtqc29uOnRydWUsdXNlX2NsYXNzZXM6dHJ1ZSxyZW1vdmVfZW1wdHk6dHJ1ZX0pKSxbcl0pO2NvbnN0IGE9cC51c2VDYWxsYmFjaygoKCk9Pntjb25zdCB0PW5ldyBVUkxTZWFyY2hQYXJhbXM7Zm9yKGNvbnN0IHIgaW4gZSl7dC5hcHBlbmQociwoZVtyXT8/XCJcIikudG9TdHJpbmcoKSl9c2VsZi5mZXRjaChgJHtwcm9jZXNzLmVudi5fX05FWFRfUk9VVEVSX0JBU0VQQVRIfHxcIlwifS9fX25leHRqc19sYXVuY2gtZWRpdG9yPyR7dC50b1N0cmluZygpfWApLnRoZW4oKCgpPT57fSksKCgpPT57Y29uc29sZS5lcnJvcihcIlRoZXJlIHdhcyBhbiBpc3N1ZSBvcGVuaW5nIHRoaXMgY29kZSBpbiB5b3VyIGVkaXRvci5cIil9KSl9KSxbZV0pO3JldHVybiBwLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7XCJkYXRhLW5leHRqcy1jb2RlZnJhbWVcIjp0cnVlfSxwLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIixudWxsLHAuY3JlYXRlRWxlbWVudChcInBcIix7cm9sZTpcImxpbmtcIixvbkNsaWNrOmEsdGFiSW5kZXg6MSx0aXRsZTpcIkNsaWNrIHRvIG9wZW4gaW4geW91ciBlZGl0b3JcIn0scC5jcmVhdGVFbGVtZW50KFwic3BhblwiLG51bGwsZ2V0RnJhbWVTb3VyY2UoZSksXCIgQCBcIixlLm1ldGhvZE5hbWUpLHAuY3JlYXRlRWxlbWVudChcInN2Z1wiLHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsdmlld0JveDpcIjAgMCAyNCAyNFwiLGZpbGw6XCJub25lXCIsc3Ryb2tlOlwiY3VycmVudENvbG9yXCIsc3Ryb2tlV2lkdGg6XCIyXCIsc3Ryb2tlTGluZWNhcDpcInJvdW5kXCIsc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwifSxwLmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIse2Q6XCJNMTggMTN2NmEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMlY4YTIgMiAwIDAgMSAyLTJoNlwifSkscC5jcmVhdGVFbGVtZW50KFwicG9seWxpbmVcIix7cG9pbnRzOlwiMTUgMyAyMSAzIDIxIDlcIn0pLHAuY3JlYXRlRWxlbWVudChcImxpbmVcIix7eDE6XCIxMFwiLHkxOlwiMTRcIix4MjpcIjIxXCIseTI6XCIzXCJ9KSkpKSxwLmNyZWF0ZUVsZW1lbnQoXCJwcmVcIixudWxsLG4ubWFwKCgoZSx0KT0+cC5jcmVhdGVFbGVtZW50KFwic3BhblwiLHtrZXk6YGZyYW1lLSR7dH1gLHN0eWxlOntjb2xvcjplLmZnP2B2YXIoLS1jb2xvci0ke2UuZmd9KWA6dW5kZWZpbmVkLC4uLmUuZGVjb3JhdGlvbj09PVwiYm9sZFwiP3tmb250V2VpZ2h0OjgwMH06ZS5kZWNvcmF0aW9uPT09XCJpdGFsaWNcIj97Zm9udFN0eWxlOlwiaXRhbGljXCJ9OnVuZGVmaW5lZH19LGUuY29udGVudCkpKSkpfTtjb25zdCBSdD1mdW5jdGlvbiBDYWxsU3RhY2tGcmFtZSh7ZnJhbWU6ZX0pe2NvbnN0IHQ9ZS5vcmlnaW5hbFN0YWNrRnJhbWU/P2Uuc291cmNlU3RhY2tGcmFtZTtjb25zdCByPUJvb2xlYW4oZS5vcmlnaW5hbENvZGVGcmFtZSk7Y29uc3Qgbj1wLnVzZUNhbGxiYWNrKCgoKT0+e2lmKCFyKXJldHVybjtjb25zdCBlPW5ldyBVUkxTZWFyY2hQYXJhbXM7Zm9yKGNvbnN0IHIgaW4gdCl7ZS5hcHBlbmQociwodFtyXT8/XCJcIikudG9TdHJpbmcoKSl9c2VsZi5mZXRjaChgJHtwcm9jZXNzLmVudi5fX05FWFRfUk9VVEVSX0JBU0VQQVRIfHxcIlwifS9fX25leHRqc19sYXVuY2gtZWRpdG9yPyR7ZS50b1N0cmluZygpfWApLnRoZW4oKCgpPT57fSksKCgpPT57Y29uc29sZS5lcnJvcihcIlRoZXJlIHdhcyBhbiBpc3N1ZSBvcGVuaW5nIHRoaXMgY29kZSBpbiB5b3VyIGVkaXRvci5cIil9KSl9KSxbcix0XSk7cmV0dXJuIHAuY3JlYXRlRWxlbWVudChcImRpdlwiLHtcImRhdGEtbmV4dGpzLWNhbGwtc3RhY2stZnJhbWVcIjp0cnVlfSxwLmNyZWF0ZUVsZW1lbnQoXCJoNlwiLHtcImRhdGEtbmV4dGpzLWZyYW1lLWV4cGFuZGVkXCI6Qm9vbGVhbihlLmV4cGFuZGVkKX0sdC5tZXRob2ROYW1lKSxwLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7XCJkYXRhLWhhcy1zb3VyY2VcIjpyP1widHJ1ZVwiOnVuZGVmaW5lZCx0YWJJbmRleDpyPzEwOnVuZGVmaW5lZCxyb2xlOnI/XCJsaW5rXCI6dW5kZWZpbmVkLG9uQ2xpY2s6bix0aXRsZTpyP1wiQ2xpY2sgdG8gb3BlbiBpbiB5b3VyIGVkaXRvclwiOnVuZGVmaW5lZH0scC5jcmVhdGVFbGVtZW50KFwic3BhblwiLG51bGwsZ2V0RnJhbWVTb3VyY2UodCkpLHAuY3JlYXRlRWxlbWVudChcInN2Z1wiLHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsdmlld0JveDpcIjAgMCAyNCAyNFwiLGZpbGw6XCJub25lXCIsc3Ryb2tlOlwiY3VycmVudENvbG9yXCIsc3Ryb2tlV2lkdGg6XCIyXCIsc3Ryb2tlTGluZWNhcDpcInJvdW5kXCIsc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwifSxwLmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIse2Q6XCJNMTggMTN2NmEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMlY4YTIgMiAwIDAgMSAyLTJoNlwifSkscC5jcmVhdGVFbGVtZW50KFwicG9seWxpbmVcIix7cG9pbnRzOlwiMTUgMyAyMSAzIDIxIDlcIn0pLHAuY3JlYXRlRWxlbWVudChcImxpbmVcIix7eDE6XCIxMFwiLHkxOlwiMTRcIix4MjpcIjIxXCIseTI6XCIzXCJ9KSkpKX07Y29uc3QgenQ9ZnVuY3Rpb24gUnVudGltZUVycm9yKHtlcnJvcjplfSl7Y29uc3QgdD1wLnVzZU1lbW8oKCgpPT5lLmZyYW1lcy5maW5kSW5kZXgoKGU9PmUuZXhwYW5kZWQmJkJvb2xlYW4oZS5vcmlnaW5hbENvZGVGcmFtZSkmJkJvb2xlYW4oZS5vcmlnaW5hbFN0YWNrRnJhbWUpKSkpLFtlLmZyYW1lc10pO2NvbnN0IHI9cC51c2VNZW1vKCgoKT0+ZS5mcmFtZXNbdF0/P251bGwpLFtlLmZyYW1lcyx0XSk7Y29uc3Qgbj1wLnVzZU1lbW8oKCgpPT50PDA/W106ZS5mcmFtZXMuc2xpY2UoMCx0KSksW2UuZnJhbWVzLHRdKTtjb25zdFthLG9dPXAudXNlU3RhdGUocj09bnVsbCk7Y29uc3QgaT1wLnVzZUNhbGxiYWNrKCgoKT0+e28oKGU9PiFlKSl9KSxbXSk7Y29uc3QgbD1wLnVzZU1lbW8oKCgpPT5uLmZpbHRlcigoZT0+ZS5leHBhbmRlZHx8YSkpKSxbYSxuXSk7Y29uc3Qgcz1wLnVzZU1lbW8oKCgpPT5lLmZyYW1lcy5zbGljZSh0KzEpKSxbZS5mcmFtZXMsdF0pO2NvbnN0IHU9cC51c2VNZW1vKCgoKT0+cy5maWx0ZXIoKGU9PmUuZXhwYW5kZWR8fGEpKSksW2Esc10pO2NvbnN0IGM9cC51c2VNZW1vKCgoKT0+cy5sZW5ndGghPT11Lmxlbmd0aHx8YSYmciE9bnVsbCksW2Escy5sZW5ndGgscix1Lmxlbmd0aF0pO3JldHVybiBwLmNyZWF0ZUVsZW1lbnQocC5GcmFnbWVudCxudWxsLHI/cC5jcmVhdGVFbGVtZW50KHAuRnJhZ21lbnQsbnVsbCxwLmNyZWF0ZUVsZW1lbnQoXCJoNVwiLG51bGwsXCJTb3VyY2VcIiksbC5tYXAoKChlLHQpPT5wLmNyZWF0ZUVsZW1lbnQoUnQse2tleTpgbGVhZGluZy1mcmFtZS0ke3R9LSR7YX1gLGZyYW1lOmV9KSkpLHAuY3JlYXRlRWxlbWVudChNdCx7c3RhY2tGcmFtZTpyLm9yaWdpbmFsU3RhY2tGcmFtZSxjb2RlRnJhbWU6ci5vcmlnaW5hbENvZGVGcmFtZX0pKTp1bmRlZmluZWQsZS5jb21wb25lbnRTdGFjaz9wLmNyZWF0ZUVsZW1lbnQocC5GcmFnbWVudCxudWxsLHAuY3JlYXRlRWxlbWVudChcImg1XCIsbnVsbCxcIkNvbXBvbmVudCBTdGFja1wiKSxlLmNvbXBvbmVudFN0YWNrLm1hcCgoKGUsdCk9PnAuY3JlYXRlRWxlbWVudChcImRpdlwiLHtrZXk6dCxcImRhdGEtbmV4dGpzLWNvbXBvbmVudC1zdGFjay1mcmFtZVwiOnRydWV9LHAuY3JlYXRlRWxlbWVudChcImg2XCIsbnVsbCxlKSkpKSk6bnVsbCx1Lmxlbmd0aD9wLmNyZWF0ZUVsZW1lbnQocC5GcmFnbWVudCxudWxsLHAuY3JlYXRlRWxlbWVudChcImg1XCIsbnVsbCxcIkNhbGwgU3RhY2tcIiksdS5tYXAoKChlLHQpPT5wLmNyZWF0ZUVsZW1lbnQoUnQse2tleTpgY2FsbC1zdGFjay0ke3R9LSR7YX1gLGZyYW1lOmV9KSkpKTp1bmRlZmluZWQsYz9wLmNyZWF0ZUVsZW1lbnQocC5GcmFnbWVudCxudWxsLHAuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLHt0YWJJbmRleDoxMCxcImRhdGEtbmV4dGpzLWRhdGEtcnVudGltZS1lcnJvci1jb2xsYXBzZWQtYWN0aW9uXCI6dHJ1ZSx0eXBlOlwiYnV0dG9uXCIsb25DbGljazppfSxhP1wiSGlkZVwiOlwiU2hvd1wiLFwiIGNvbGxhcHNlZCBmcmFtZXNcIikpOnVuZGVmaW5lZCl9O2NvbnN0IEJ0PW5vb3BgXG4gIGJ1dHRvbltkYXRhLW5leHRqcy1kYXRhLXJ1bnRpbWUtZXJyb3ItY29sbGFwc2VkLWFjdGlvbl0ge1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLWZvbnQtc21hbGwpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zaXplLWZvbnQtYmlnZ2VyKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItYWNjZW50cy0zKTtcbiAgfVxuXG4gIFtkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWZyYW1lXTpub3QoOmxhc3QtY2hpbGQpLFxuICBbZGF0YS1uZXh0anMtY29tcG9uZW50LXN0YWNrLWZyYW1lXTpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zaXplLWdhcC1kb3VibGUpO1xuICB9XG5cbiAgW2RhdGEtbmV4dGpzLWNhbGwtc3RhY2stZnJhbWVdID4gaDYsXG4gIFtkYXRhLW5leHRqcy1jb21wb25lbnQtc3RhY2stZnJhbWVdID4gaDYge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc2l6ZS1nYXApO1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLW1vbm9zcGFjZSk7XG4gICAgY29sb3I6ICMyMjI7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWNhbGwtc3RhY2stZnJhbWVdID4gaDZbZGF0YS1uZXh0anMtZnJhbWUtZXhwYW5kZWQ9J2ZhbHNlJ10ge1xuICAgIGNvbG9yOiAjNjY2O1xuICB9XG4gIFtkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWZyYW1lXSA+IGRpdiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmctbGVmdDogY2FsYyh2YXIoLS1zaXplLWdhcCkgKyB2YXIoLS1zaXplLWdhcC1oYWxmKSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLWZvbnQtc21hbGwpO1xuICAgIGNvbG9yOiAjOTk5O1xuICB9XG4gIFtkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWZyYW1lXSA+IGRpdiA+IHN2ZyB7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgaGVpZ2h0OiB2YXIoLS1zaXplLWZvbnQtc21hbGwpO1xuICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1zaXplLWdhcCk7XG5cbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgW2RhdGEtbmV4dGpzLWNhbGwtc3RhY2stZnJhbWVdID4gZGl2W2RhdGEtaGFzLXNvdXJjZV0ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuICBbZGF0YS1uZXh0anMtY2FsbC1zdGFjay1mcmFtZV0gPiBkaXZbZGF0YS1oYXMtc291cmNlXTpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xuICB9XG4gIFtkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWZyYW1lXSA+IGRpdltkYXRhLWhhcy1zb3VyY2VdID4gc3ZnIHtcbiAgICBkaXNwbGF5OiB1bnNldDtcbiAgfVxuYDtmdW5jdGlvbiBnZXRFcnJvclNpZ25hdHVyZShlKXtjb25zdHtldmVudDp0fT1lO3N3aXRjaCh0LnR5cGUpe2Nhc2UgbzpjYXNlIGk6e3JldHVybmAke3QucmVhc29uLm5hbWV9Ojoke3QucmVhc29uLm1lc3NhZ2V9Ojoke3QucmVhc29uLnN0YWNrfWB9ZGVmYXVsdDp7fX1jb25zdCByPXQ7cmV0dXJuXCJcIn1jb25zdCBIdD1mdW5jdGlvbiBIb3RsaW5rZWRUZXh0KGUpe2NvbnN0e3RleHQ6dH09ZTtjb25zdCByPS9odHRwcz86XFwvXFwvW15cXHMvJC4/I10uW15cXHMpJ1wiXSovaTtyZXR1cm4gcC5jcmVhdGVFbGVtZW50KHAuRnJhZ21lbnQsbnVsbCxyLnRlc3QodCk/dC5zcGxpdChcIiBcIikubWFwKCgoZSx0LG4pPT57aWYoci50ZXN0KGUpKXtjb25zdCBhPXIuZXhlYyhlKTtyZXR1cm4gcC5jcmVhdGVFbGVtZW50KHAuRnJhZ21lbnQse2tleTpgbGluay0ke3R9YH0sYSYmcC5jcmVhdGVFbGVtZW50KFwiYVwiLHtocmVmOmFbMF0sdGFyZ2V0OlwiX2JsYW5rXCIscmVsOlwibm9yZWZlcnJlciBub29wZW5lclwifSxlKSx0PT09bi5sZW5ndGgtMT9cIlwiOlwiIFwiKX1yZXR1cm4gdD09PW4ubGVuZ3RoLTE/cC5jcmVhdGVFbGVtZW50KHAuRnJhZ21lbnQse2tleTpgdGV4dC0ke3R9YH0sZSk6cC5jcmVhdGVFbGVtZW50KHAuRnJhZ21lbnQse2tleTpgdGV4dC0ke3R9YH0sZSxcIiBcIil9KSk6dCl9O2NvbnN0IHF0PWZ1bmN0aW9uIEVycm9ycyh7ZXJyb3JzOmV9KXtjb25zdFt0LHJdPXAudXNlU3RhdGUoe30pO2NvbnN0W24sYV09cC51c2VNZW1vKCgoKT0+e2xldCByPVtdO2xldCBuPW51bGw7Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDsrK2Epe2NvbnN0IG89ZVthXTtjb25zdHtpZDppfT1vO2lmKGkgaW4gdCl7ci5wdXNoKHRbaV0pO2NvbnRpbnVlfWlmKGE+MCl7Y29uc3QgdD1lW2EtMV07aWYoZ2V0RXJyb3JTaWduYXR1cmUodCk9PT1nZXRFcnJvclNpZ25hdHVyZShvKSl7Y29udGludWV9fW49bzticmVha31yZXR1cm5bcixuXX0pLFtlLHRdKTtjb25zdCBvPXAudXNlTWVtbygoKCk9Pm4ubGVuZ3RoPDEmJkJvb2xlYW4oZS5sZW5ndGgpKSxbZS5sZW5ndGgsbi5sZW5ndGhdKTtwLnVzZUVmZmVjdCgoKCk9PntpZihhPT1udWxsKXtyZXR1cm59bGV0IGU9dHJ1ZTtnZXRFcnJvckJ5VHlwZShhKS50aGVuKCh0PT57aWYoZSl7cigoZT0+KHsuLi5lLFt0LmlkXTp0fSkpKX19KSwoKCk9Pnt9KSk7cmV0dXJuKCk9PntlPWZhbHNlfX0pLFthXSk7Y29uc3RbaSxsXT1wLnVzZVN0YXRlKFwiZnVsbHNjcmVlblwiKTtjb25zdFtzLHVdPXAudXNlU3RhdGUoMCk7Y29uc3QgYz1wLnVzZUNhbGxiYWNrKChlPT57ZT8ucHJldmVudERlZmF1bHQoKTt1KChlPT5NYXRoLm1heCgwLGUtMSkpKX0pLFtdKTtjb25zdCBkPXAudXNlQ2FsbGJhY2soKGU9PntlPy5wcmV2ZW50RGVmYXVsdCgpO3UoKGU9Pk1hdGgubWF4KDAsTWF0aC5taW4obi5sZW5ndGgtMSxlKzEpKSkpfSksW24ubGVuZ3RoXSk7Y29uc3QgZj1wLnVzZU1lbW8oKCgpPT5uW3NdPz9udWxsKSxbcyxuXSk7cC51c2VFZmZlY3QoKCgpPT57aWYoZS5sZW5ndGg8MSl7cih7fSk7bChcImhpZGRlblwiKTt1KDApfX0pLFtlLmxlbmd0aF0pO2NvbnN0IG09cC51c2VDYWxsYmFjaygoZT0+e2U/LnByZXZlbnREZWZhdWx0KCk7bChcIm1pbmltaXplZFwiKX0pLFtdKTtjb25zdCBiPXAudXNlQ2FsbGJhY2soKGU9PntlPy5wcmV2ZW50RGVmYXVsdCgpO2woXCJoaWRkZW5cIil9KSxbXSk7Y29uc3QgZz1wLnVzZUNhbGxiYWNrKChlPT57ZT8ucHJldmVudERlZmF1bHQoKTtsKFwiZnVsbHNjcmVlblwiKX0pLFtdKTtpZihlLmxlbmd0aDwxfHxmPT1udWxsKXtyZXR1cm4gbnVsbH1pZihvKXtyZXR1cm4gcC5jcmVhdGVFbGVtZW50KFN0LG51bGwpfWlmKGk9PT1cImhpZGRlblwiKXtyZXR1cm4gbnVsbH1pZihpPT09XCJtaW5pbWl6ZWRcIil7cmV0dXJuIHAuY3JlYXRlRWxlbWVudChMdCx7Y2xhc3NOYW1lOlwibmV4dGpzLXRvYXN0LWVycm9ycy1wYXJlbnRcIixvbkNsaWNrOmd9LHAuY3JlYXRlRWxlbWVudChcImRpdlwiLHtjbGFzc05hbWU6XCJuZXh0anMtdG9hc3QtZXJyb3JzXCJ9LHAuY3JlYXRlRWxlbWVudChcInN2Z1wiLHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsd2lkdGg6XCIyNFwiLGhlaWdodDpcIjI0XCIsdmlld0JveDpcIjAgMCAyNCAyNFwiLGZpbGw6XCJub25lXCIsc3Ryb2tlOlwiY3VycmVudENvbG9yXCIsc3Ryb2tlV2lkdGg6XCIyXCIsc3Ryb2tlTGluZWNhcDpcInJvdW5kXCIsc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwifSxwLmNyZWF0ZUVsZW1lbnQoXCJjaXJjbGVcIix7Y3g6XCIxMlwiLGN5OlwiMTJcIixyOlwiMTBcIn0pLHAuY3JlYXRlRWxlbWVudChcImxpbmVcIix7eDE6XCIxMlwiLHkxOlwiOFwiLHgyOlwiMTJcIix5MjpcIjEyXCJ9KSxwLmNyZWF0ZUVsZW1lbnQoXCJsaW5lXCIse3gxOlwiMTJcIix5MTpcIjE2XCIseDI6XCIxMi4wMVwiLHkyOlwiMTZcIn0pKSxwLmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsbnVsbCxuLmxlbmd0aCxcIiBlcnJvclwiLG4ubGVuZ3RoPjE/XCJzXCI6XCJcIikscC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIse1wiZGF0YS1uZXh0anMtdG9hc3QtZXJyb3JzLWhpZGUtYnV0dG9uXCI6dHJ1ZSxjbGFzc05hbWU6XCJuZXh0anMtdG9hc3QtZXJyb3JzLWhpZGUtYnV0dG9uXCIsdHlwZTpcImJ1dHRvblwiLG9uQ2xpY2s6ZT0+e2Uuc3RvcFByb3BhZ2F0aW9uKCk7YigpfSxcImFyaWEtbGFiZWxcIjpcIkhpZGUgRXJyb3JzXCJ9LHAuY3JlYXRlRWxlbWVudChDbG9zZUljb24sbnVsbCkpKSl9Y29uc3Qgdj1bXCJzZXJ2ZXJcIixcImVkZ2Utc2VydmVyXCJdLmluY2x1ZGVzKGdldEVycm9yU291cmNlKGYuZXJyb3IpfHxcIlwiKTtyZXR1cm4gcC5jcmVhdGVFbGVtZW50KFN0LG51bGwscC5jcmVhdGVFbGVtZW50KGgse3R5cGU6XCJlcnJvclwiLFwiYXJpYS1sYWJlbGxlZGJ5XCI6XCJuZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfbGFiZWxcIixcImFyaWEtZGVzY3JpYmVkYnlcIjpcIm5leHRqc19fY29udGFpbmVyX2Vycm9yc19kZXNjXCIsb25DbG9zZTp2P3VuZGVmaW5lZDptfSxwLmNyZWF0ZUVsZW1lbnQoeSxudWxsLHAuY3JlYXRlRWxlbWVudChFLHtjbGFzc05hbWU6XCJuZXh0anMtY29udGFpbmVyLWVycm9ycy1oZWFkZXJcIn0scC5jcmVhdGVFbGVtZW50KE90LHtwcmV2aW91czpzPjA/YzpudWxsLG5leHQ6czxuLmxlbmd0aC0xP2Q6bnVsbCxjbG9zZTp2P3VuZGVmaW5lZDptfSxwLmNyZWF0ZUVsZW1lbnQoXCJzbWFsbFwiLG51bGwscC5jcmVhdGVFbGVtZW50KFwic3BhblwiLG51bGwscysxKSxcIiBvZlwiLFwiIFwiLHAuY3JlYXRlRWxlbWVudChcInNwYW5cIixudWxsLG4ubGVuZ3RoKSxcIiB1bmhhbmRsZWQgZXJyb3JcIixuLmxlbmd0aDwyP1wiXCI6XCJzXCIpKSxwLmNyZWF0ZUVsZW1lbnQoXCJoMVwiLHtpZDpcIm5leHRqc19fY29udGFpbmVyX2Vycm9yc19sYWJlbFwifSx2P1wiU2VydmVyIEVycm9yXCI6XCJVbmhhbmRsZWQgUnVudGltZSBFcnJvclwiKSxwLmNyZWF0ZUVsZW1lbnQoXCJwXCIse2lkOlwibmV4dGpzX19jb250YWluZXJfZXJyb3JzX2Rlc2NcIn0sZi5lcnJvci5uYW1lLFwiOlwiLFwiIFwiLHAuY3JlYXRlRWxlbWVudChIdCx7dGV4dDpmLmVycm9yLm1lc3NhZ2V9KSksdj9wLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIixudWxsLHAuY3JlYXRlRWxlbWVudChcInNtYWxsXCIsbnVsbCxcIlRoaXMgZXJyb3IgaGFwcGVuZWQgd2hpbGUgZ2VuZXJhdGluZyB0aGUgcGFnZS4gQW55IGNvbnNvbGUgbG9ncyB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgdGVybWluYWwgd2luZG93LlwiKSk6dW5kZWZpbmVkKSxwLmNyZWF0ZUVsZW1lbnQoeCx7Y2xhc3NOYW1lOlwibmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtYm9keVwifSxwLmNyZWF0ZUVsZW1lbnQoenQse2tleTpmLmlkLnRvU3RyaW5nKCksZXJyb3I6Zn0pKSkpKX07Y29uc3QgUHQ9bm9vcGBcbiAgLm5leHRqcy1jb250YWluZXItZXJyb3JzLWhlYWRlciA+IGgxIHtcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtZm9udC1iaWcpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zaXplLWZvbnQtYmlnZ2VyKTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBtYXJnaW46IDA7XG4gICAgbWFyZ2luLXRvcDogY2FsYyh2YXIoLS1zaXplLWdhcC1kb3VibGUpICsgdmFyKC0tc2l6ZS1nYXAtaGFsZikpO1xuICB9XG4gIC5uZXh0anMtY29udGFpbmVyLWVycm9ycy1oZWFkZXIgc21hbGwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS1mb250LXNtYWxsKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItYWNjZW50cy0xKTtcbiAgICBtYXJnaW4tbGVmdDogdmFyKC0tc2l6ZS1nYXAtZG91YmxlKTtcbiAgfVxuICAubmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtaGVhZGVyIHNtYWxsID4gc3BhbiB7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3RhY2stbW9ub3NwYWNlKTtcbiAgfVxuICAubmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtaGVhZGVyID4gcCB7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3RhY2stbW9ub3NwYWNlKTtcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtZm9udC1zbWFsbCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXNpemUtZm9udC1iaWcpO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIG1hcmdpbjogMDtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zaXplLWdhcC1oYWxmKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItYW5zaS1yZWQpO1xuICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgfVxuICAubmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtaGVhZGVyID4gZGl2ID4gc21hbGwge1xuICAgIG1hcmdpbjogMDtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zaXplLWdhcC1oYWxmKTtcbiAgfVxuICAubmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtaGVhZGVyID4gcCA+IGEge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLXJlZCk7XG4gIH1cblxuICAubmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtYm9keSA+IGg1Om5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICBtYXJnaW4tdG9wOiBjYWxjKHZhcigtLXNpemUtZ2FwLWRvdWJsZSkgKyB2YXIoLS1zaXplLWdhcCkpO1xuICB9XG4gIC5uZXh0anMtY29udGFpbmVyLWVycm9ycy1ib2R5ID4gaDUge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNpemUtZ2FwKTtcbiAgfVxuXG4gIC5uZXh0anMtdG9hc3QtZXJyb3JzLXBhcmVudCB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2U7XG4gIH1cbiAgLm5leHRqcy10b2FzdC1lcnJvcnMtcGFyZW50OmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG4gIH1cbiAgLm5leHRqcy10b2FzdC1lcnJvcnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIH1cbiAgLm5leHRqcy10b2FzdC1lcnJvcnMgPiBzdmcge1xuICAgIG1hcmdpbi1yaWdodDogdmFyKC0tc2l6ZS1nYXApO1xuICB9XG4gIC5uZXh0anMtdG9hc3QtZXJyb3JzLWhpZGUtYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogdmFyKC0tc2l6ZS1nYXAtdHJpcGxlKTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItYW5zaS1icmlnaHQtd2hpdGUpO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjI1cyBlYXNlO1xuICAgIG9wYWNpdHk6IDAuNztcbiAgfVxuICAubmV4dGpzLXRvYXN0LWVycm9ycy1oaWRlLWJ1dHRvbjpob3ZlciB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuYDtjbGFzcyBFcnJvckJvdW5kYXJ5IGV4dGVuZHMgYigpLlB1cmVDb21wb25lbnR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpO3RoaXMuc3RhdGU9e2Vycm9yOm51bGx9fXN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IoZSl7cmV0dXJue2Vycm9yOmV9fWNvbXBvbmVudERpZENhdGNoKGUsdCl7dGhpcy5wcm9wcy5vbkVycm9yKGUsdD8uY29tcG9uZW50U3RhY2t8fG51bGwpO2lmKCF0aGlzLnByb3BzLmdsb2JhbE92ZXJsYXkpe3RoaXMuc2V0U3RhdGUoe2Vycm9yOmV9KX19cmVuZGVyKCl7cmV0dXJuIHRoaXMuc3RhdGUuZXJyb3J8fHRoaXMucHJvcHMuZ2xvYmFsT3ZlcmxheSYmdGhpcy5wcm9wcy5pc01vdW50ZWQ/dGhpcy5wcm9wcy5nbG9iYWxPdmVybGF5P2IoKS5jcmVhdGVFbGVtZW50KFwiaHRtbFwiLG51bGwsYigpLmNyZWF0ZUVsZW1lbnQoXCJoZWFkXCIsbnVsbCksYigpLmNyZWF0ZUVsZW1lbnQoXCJib2R5XCIsbnVsbCkpOm51bGw6dGhpcy5wcm9wcy5jaGlsZHJlbn19ZnVuY3Rpb24gQmFzZSgpe3JldHVybiBwLmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLG51bGwsbm9vcGBcbiAgICAgICAgOmhvc3Qge1xuICAgICAgICAgIC0tc2l6ZS1nYXAtaGFsZjogNHB4O1xuICAgICAgICAgIC0tc2l6ZS1nYXA6IDhweDtcbiAgICAgICAgICAtLXNpemUtZ2FwLWRvdWJsZTogMTZweDtcbiAgICAgICAgICAtLXNpemUtZ2FwLXRyaXBsZTogMjRweDtcbiAgICAgICAgICAtLXNpemUtZ2FwLXF1YWQ6IDMycHg7XG5cbiAgICAgICAgICAtLXNpemUtZm9udC1zbWFsbDogMTRweDtcbiAgICAgICAgICAtLXNpemUtZm9udDogMTZweDtcbiAgICAgICAgICAtLXNpemUtZm9udC1iaWc6IDIwcHg7XG4gICAgICAgICAgLS1zaXplLWZvbnQtYmlnZ2VyOiAyNHB4O1xuXG4gICAgICAgICAgLS1jb2xvci1hY2NlbnRzLTE6ICM4MDgwODA7XG4gICAgICAgICAgLS1jb2xvci1hY2NlbnRzLTI6ICMyMjIyMjI7XG4gICAgICAgICAgLS1jb2xvci1hY2NlbnRzLTM6ICM0MDQwNDA7XG5cbiAgICAgICAgICAtLWZvbnQtc3RhY2stbW9ub3NwYWNlOiAnU0ZNb25vLVJlZ3VsYXInLCBDb25zb2xhcywgJ0xpYmVyYXRpb24gTW9ubycsXG4gICAgICAgICAgICBNZW5sbywgQ291cmllciwgbW9ub3NwYWNlO1xuXG4gICAgICAgICAgLS1jb2xvci1hbnNpLXNlbGVjdGlvbjogcmdiYSg5NSwgMTI2LCAxNTEsIDAuNDgpO1xuICAgICAgICAgIC0tY29sb3ItYW5zaS1iZzogIzExMTExMTtcbiAgICAgICAgICAtLWNvbG9yLWFuc2ktZmc6ICNjY2NjY2M7XG5cbiAgICAgICAgICAtLWNvbG9yLWFuc2ktd2hpdGU6ICM3Nzc3Nzc7XG4gICAgICAgICAgLS1jb2xvci1hbnNpLWJsYWNrOiAjMTQxNDE0O1xuICAgICAgICAgIC0tY29sb3ItYW5zaS1ibHVlOiAjMDBhYWZmO1xuICAgICAgICAgIC0tY29sb3ItYW5zaS1jeWFuOiAjODhkZGZmO1xuICAgICAgICAgIC0tY29sb3ItYW5zaS1ncmVlbjogIzk4ZWM2NTtcbiAgICAgICAgICAtLWNvbG9yLWFuc2ktbWFnZW50YTogI2FhODhmZjtcbiAgICAgICAgICAtLWNvbG9yLWFuc2ktcmVkOiAjZmY1NTU1O1xuICAgICAgICAgIC0tY29sb3ItYW5zaS15ZWxsb3c6ICNmZmNjMzM7XG4gICAgICAgICAgLS1jb2xvci1hbnNpLWJyaWdodC13aGl0ZTogI2ZmZmZmZjtcbiAgICAgICAgICAtLWNvbG9yLWFuc2ktYnJpZ2h0LWJsYWNrOiAjNzc3Nzc3O1xuICAgICAgICAgIC0tY29sb3ItYW5zaS1icmlnaHQtYmx1ZTogIzMzYmJmZjtcbiAgICAgICAgICAtLWNvbG9yLWFuc2ktYnJpZ2h0LWN5YW46ICNiYmVjZmY7XG4gICAgICAgICAgLS1jb2xvci1hbnNpLWJyaWdodC1ncmVlbjogI2I2ZjI5MjtcbiAgICAgICAgICAtLWNvbG9yLWFuc2ktYnJpZ2h0LW1hZ2VudGE6ICNjZWJiZmY7XG4gICAgICAgICAgLS1jb2xvci1hbnNpLWJyaWdodC1yZWQ6ICNmZjg4ODg7XG4gICAgICAgICAgLS1jb2xvci1hbnNpLWJyaWdodC15ZWxsb3c6ICNmZmQ5NjY7XG4gICAgICAgIH1cblxuICAgICAgICAubW9ubyB7XG4gICAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3RhY2stbW9ub3NwYWNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGgxLFxuICAgICAgICBoMixcbiAgICAgICAgaDMsXG4gICAgICAgIGg0LFxuICAgICAgICBoNSxcbiAgICAgICAgaDYge1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNpemUtZ2FwKTtcbiAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICAgIH1cblxuICAgICAgICBoMSB7XG4gICAgICAgICAgZm9udC1zaXplOiA0MHB4O1xuICAgICAgICB9XG4gICAgICAgIGgyIHtcbiAgICAgICAgICBmb250LXNpemU6IDMycHg7XG4gICAgICAgIH1cbiAgICAgICAgaDMge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMjhweDtcbiAgICAgICAgfVxuICAgICAgICBoNCB7XG4gICAgICAgICAgZm9udC1zaXplOiAyNHB4O1xuICAgICAgICB9XG4gICAgICAgIGg1IHtcbiAgICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgIH1cbiAgICAgICAgaDYge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgfVxuICAgICAgYCl9Y29uc3QgV3Q9bm9vcGBcbiAgW2RhdGEtbmV4dGpzLWNvZGVmcmFtZV0ge1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNpemUtZ2FwLWhhbGYpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktYmcpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLWZnKTtcbiAgfVxuICBbZGF0YS1uZXh0anMtY29kZWZyYW1lXTo6c2VsZWN0aW9uLFxuICBbZGF0YS1uZXh0anMtY29kZWZyYW1lXSAqOjpzZWxlY3Rpb24ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktc2VsZWN0aW9uKTtcbiAgfVxuICBbZGF0YS1uZXh0anMtY29kZWZyYW1lXSAqIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1tb25vc3BhY2UpO1xuICB9XG5cbiAgW2RhdGEtbmV4dGpzLWNvZGVmcmFtZV0gPiAqIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogY2FsYyh2YXIoLS1zaXplLWdhcCkgKyB2YXIoLS1zaXplLWdhcC1oYWxmKSlcbiAgICAgIGNhbGModmFyKC0tc2l6ZS1nYXAtZG91YmxlKSArIHZhcigtLXNpemUtZ2FwLWhhbGYpKTtcbiAgfVxuICBbZGF0YS1uZXh0anMtY29kZWZyYW1lXSA+IGRpdiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIG1pbi13aWR0aDogMTAwJTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tY29sb3ItYW5zaS1icmlnaHQtYmxhY2spO1xuICB9XG4gIFtkYXRhLW5leHRqcy1jb2RlZnJhbWVdID4gZGl2ID4gcCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgbWFyZ2luOiAwO1xuICB9XG4gIFtkYXRhLW5leHRqcy1jb2RlZnJhbWVdID4gZGl2ID4gcDpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xuICB9XG4gIFtkYXRhLW5leHRqcy1jb2RlZnJhbWVdIGRpdiA+IHAgPiBzdmcge1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGhlaWdodDogMWVtO1xuICAgIG1hcmdpbi1sZWZ0OiA4cHg7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWNvZGVmcmFtZV0gZGl2ID4gcHJlIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxuYDtjb25zdCBWdD1ub29wYFxuICBbZGF0YS1uZXh0anMtZGlhbG9nLW92ZXJsYXldIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIHotaW5kZXg6IDkwMDA7XG5cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgcGFkZGluZzogMTB2aCAxNXB4IDA7XG4gIH1cblxuICBAbWVkaWEgKG1heC1oZWlnaHQ6IDgxMnB4KSB7XG4gICAgW2RhdGEtbmV4dGpzLWRpYWxvZy1vdmVybGF5XSB7XG4gICAgICBwYWRkaW5nOiAxNXB4IDE1cHggMDtcbiAgICB9XG4gIH1cblxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWJhY2tkcm9wXSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE3LCAxNywgMTcsIDAuMik7XG4gICAgcG9pbnRlci1ldmVudHM6IGFsbDtcbiAgICB6LWluZGV4OiAtMTtcbiAgfVxuXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctYmFja2Ryb3AtZml4ZWRdIHtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7XG4gIH1cbmA7Y29uc3QgJHQ9bm9vcGBcbiAgW2RhdGEtbmV4dGpzLXRlcm1pbmFsXSB7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2l6ZS1nYXAtaGFsZik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYW5zaS1iZyk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktZmcpO1xuICB9XG4gIFtkYXRhLW5leHRqcy10ZXJtaW5hbF06OnNlbGVjdGlvbixcbiAgW2RhdGEtbmV4dGpzLXRlcm1pbmFsXSAqOjpzZWxlY3Rpb24ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktc2VsZWN0aW9uKTtcbiAgfVxuICBbZGF0YS1uZXh0anMtdGVybWluYWxdICoge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLW1vbm9zcGFjZSk7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLXRlcm1pbmFsXSA+ICoge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiBjYWxjKHZhcigtLXNpemUtZ2FwKSArIHZhcigtLXNpemUtZ2FwLWhhbGYpKVxuICAgICAgY2FsYyh2YXIoLS1zaXplLWdhcC1kb3VibGUpICsgdmFyKC0tc2l6ZS1nYXAtaGFsZikpO1xuICB9XG5cbiAgW2RhdGEtbmV4dGpzLXRlcm1pbmFsXSBwcmUge1xuICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICB9XG5gO2Z1bmN0aW9uIENvbXBvbmVudFN0eWxlcygpe3JldHVybiBwLmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLG51bGwsbm9vcGBcbiAgICAgICAgJHtWdH1cbiAgICAgICAgJHtJdH1cbiAgICAgICAgJHt3fVxuICAgICAgICAke050fVxuICAgICAgICAke1d0fVxuICAgICAgICAkeyR0fVxuICAgICAgICBcbiAgICAgICAgJHtBdH1cbiAgICAgICAgJHtQdH1cbiAgICAgICAgJHtCdH1cbiAgICAgIGApfWZ1bmN0aW9uIENzc1Jlc2V0KCl7cmV0dXJuIHAuY3JlYXRlRWxlbWVudChcInN0eWxlXCIsbnVsbCxub29wYFxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgYWxsOiBpbml0aWFsO1xuXG4gICAgICAgICAgLyogdGhlIGRpcmVjdGlvbiBwcm9wZXJ0eSBpcyBub3QgcmVzZXQgYnkgJ2FsbCcgKi9cbiAgICAgICAgICBkaXJlY3Rpb246IGx0cjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIVxuICAgICAgICAgKiBCb290c3RyYXAgUmVib290IHY0LjQuMSAoaHR0cHM6Ly9nZXRib290c3RyYXAuY29tLylcbiAgICAgICAgICogQ29weXJpZ2h0IDIwMTEtMjAxOSBUaGUgQm9vdHN0cmFwIEF1dGhvcnNcbiAgICAgICAgICogQ29weXJpZ2h0IDIwMTEtMjAxOSBUd2l0dGVyLCBJbmMuXG4gICAgICAgICAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFzdGVyL0xJQ0VOU0UpXG4gICAgICAgICAqIEZvcmtlZCBmcm9tIE5vcm1hbGl6ZS5jc3MsIGxpY2Vuc2VkIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcy9ibG9iL21hc3Rlci9MSUNFTlNFLm1kKVxuICAgICAgICAgKi9cbiAgICAgICAgKixcbiAgICAgICAgKjo6YmVmb3JlLFxuICAgICAgICAqOjphZnRlciB7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0IHtcbiAgICAgICAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4xNTtcbiAgICAgICAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XG4gICAgICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApO1xuICAgICAgICB9XG5cbiAgICAgICAgYXJ0aWNsZSxcbiAgICAgICAgYXNpZGUsXG4gICAgICAgIGZpZ2NhcHRpb24sXG4gICAgICAgIGZpZ3VyZSxcbiAgICAgICAgZm9vdGVyLFxuICAgICAgICBoZWFkZXIsXG4gICAgICAgIGhncm91cCxcbiAgICAgICAgbWFpbixcbiAgICAgICAgbmF2LFxuICAgICAgICBzZWN0aW9uIHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0IHtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLFxuICAgICAgICAgICAgJ0hlbHZldGljYSBOZXVlJywgQXJpYWwsICdOb3RvIFNhbnMnLCBzYW5zLXNlcmlmLFxuICAgICAgICAgICAgJ0FwcGxlIENvbG9yIEVtb2ppJywgJ1NlZ29lIFVJIEVtb2ppJywgJ1NlZ29lIFVJIFN5bWJvbCcsXG4gICAgICAgICAgICAnTm90byBDb2xvciBFbW9qaSc7XG4gICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgICAgICBjb2xvcjogIzIxMjUyOTtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgICAgIH1cblxuICAgICAgICBbdGFiaW5kZXg9Jy0xJ106Zm9jdXM6bm90KDpmb2N1cy12aXNpYmxlKSB7XG4gICAgICAgICAgb3V0bGluZTogMCAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgaHIge1xuICAgICAgICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAgICAgICAgIGhlaWdodDogMDtcbiAgICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGgxLFxuICAgICAgICBoMixcbiAgICAgICAgaDMsXG4gICAgICAgIGg0LFxuICAgICAgICBoNSxcbiAgICAgICAgaDYge1xuICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgcCB7XG4gICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgYWJiclt0aXRsZV0sXG4gICAgICAgIGFiYnJbZGF0YS1vcmlnaW5hbC10aXRsZV0ge1xuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICAgIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDtcbiAgICAgICAgICBjdXJzb3I6IGhlbHA7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbTogMDtcbiAgICAgICAgICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwLWluazogbm9uZTtcbiAgICAgICAgICB0ZXh0LWRlY29yYXRpb24tc2tpcC1pbms6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICBhZGRyZXNzIHtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgICAgICAgfVxuXG4gICAgICAgIG9sLFxuICAgICAgICB1bCxcbiAgICAgICAgZGwge1xuICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgICAgfVxuXG4gICAgICAgIG9sIG9sLFxuICAgICAgICB1bCB1bCxcbiAgICAgICAgb2wgdWwsXG4gICAgICAgIHVsIG9sIHtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgZHQge1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIH1cblxuICAgICAgICBkZCB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgYmxvY2txdW90ZSB7XG4gICAgICAgICAgbWFyZ2luOiAwIDAgMTZweDtcbiAgICAgICAgfVxuXG4gICAgICAgIGIsXG4gICAgICAgIHN0cm9uZyB7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNtYWxsIHtcbiAgICAgICAgICBmb250LXNpemU6IDgwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1YixcbiAgICAgICAgc3VwIHtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgZm9udC1zaXplOiA3NSU7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgICAgICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICAgICAgICB9XG5cbiAgICAgICAgc3ViIHtcbiAgICAgICAgICBib3R0b206IC0wLjI1ZW07XG4gICAgICAgIH1cblxuICAgICAgICBzdXAge1xuICAgICAgICAgIHRvcDogLTAuNWVtO1xuICAgICAgICB9XG5cbiAgICAgICAgYSB7XG4gICAgICAgICAgY29sb3I6ICMwMDdiZmY7XG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgYTpob3ZlciB7XG4gICAgICAgICAgY29sb3I6ICMwMDU2YjM7XG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgIH1cblxuICAgICAgICBhOm5vdChbaHJlZl0pIHtcbiAgICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICBhOm5vdChbaHJlZl0pOmhvdmVyIHtcbiAgICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICBwcmUsXG4gICAgICAgIGNvZGUsXG4gICAgICAgIGtiZCxcbiAgICAgICAgc2FtcCB7XG4gICAgICAgICAgZm9udC1mYW1pbHk6IFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcyxcbiAgICAgICAgICAgICdMaWJlcmF0aW9uIE1vbm8nLCAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7XG4gICAgICAgICAgZm9udC1zaXplOiAxZW07XG4gICAgICAgIH1cblxuICAgICAgICBwcmUge1xuICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgICAgfVxuXG4gICAgICAgIGZpZ3VyZSB7XG4gICAgICAgICAgbWFyZ2luOiAwIDAgMTZweDtcbiAgICAgICAgfVxuXG4gICAgICAgIGltZyB7XG4gICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICBib3JkZXItc3R5bGU6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICBzdmcge1xuICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhYmxlIHtcbiAgICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FwdGlvbiB7XG4gICAgICAgICAgcGFkZGluZy10b3A6IDEycHg7XG4gICAgICAgICAgcGFkZGluZy1ib3R0b206IDEycHg7XG4gICAgICAgICAgY29sb3I6ICM2Yzc1N2Q7XG4gICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICBjYXB0aW9uLXNpZGU6IGJvdHRvbTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoIHtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBpbmhlcml0O1xuICAgICAgICB9XG5cbiAgICAgICAgbGFiZWwge1xuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgICAgIH1cblxuICAgICAgICBidXR0b24ge1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgIH1cblxuICAgICAgICBidXR0b246Zm9jdXMge1xuICAgICAgICAgIG91dGxpbmU6IDFweCBkb3R0ZWQ7XG4gICAgICAgICAgb3V0bGluZTogNXB4IGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5wdXQsXG4gICAgICAgIGJ1dHRvbixcbiAgICAgICAgc2VsZWN0LFxuICAgICAgICBvcHRncm91cCxcbiAgICAgICAgdGV4dGFyZWEge1xuICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgICAgICAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgICAgIH1cblxuICAgICAgICBidXR0b24sXG4gICAgICAgIGlucHV0IHtcbiAgICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJ1dHRvbixcbiAgICAgICAgc2VsZWN0IHtcbiAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGVjdCB7XG4gICAgICAgICAgd29yZC13cmFwOiBub3JtYWw7XG4gICAgICAgIH1cblxuICAgICAgICBidXR0b24sXG4gICAgICAgIFt0eXBlPSdidXR0b24nXSxcbiAgICAgICAgW3R5cGU9J3Jlc2V0J10sXG4gICAgICAgIFt0eXBlPSdzdWJtaXQnXSB7XG4gICAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247XG4gICAgICAgIH1cblxuICAgICAgICBidXR0b246bm90KDpkaXNhYmxlZCksXG4gICAgICAgIFt0eXBlPSdidXR0b24nXTpub3QoOmRpc2FibGVkKSxcbiAgICAgICAgW3R5cGU9J3Jlc2V0J106bm90KDpkaXNhYmxlZCksXG4gICAgICAgIFt0eXBlPSdzdWJtaXQnXTpub3QoOmRpc2FibGVkKSB7XG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuICAgICAgICBbdHlwZT0nYnV0dG9uJ106Oi1tb3otZm9jdXMtaW5uZXIsXG4gICAgICAgIFt0eXBlPSdyZXNldCddOjotbW96LWZvY3VzLWlubmVyLFxuICAgICAgICBbdHlwZT0nc3VibWl0J106Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgYm9yZGVyLXN0eWxlOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5wdXRbdHlwZT0ncmFkaW8nXSxcbiAgICAgICAgaW5wdXRbdHlwZT0nY2hlY2tib3gnXSB7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5wdXRbdHlwZT0nZGF0ZSddLFxuICAgICAgICBpbnB1dFt0eXBlPSd0aW1lJ10sXG4gICAgICAgIGlucHV0W3R5cGU9J2RhdGV0aW1lLWxvY2FsJ10sXG4gICAgICAgIGlucHV0W3R5cGU9J21vbnRoJ10ge1xuICAgICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbGlzdGJveDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRleHRhcmVhIHtcbiAgICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgICAgICByZXNpemU6IHZlcnRpY2FsO1xuICAgICAgICB9XG5cbiAgICAgICAgZmllbGRzZXQge1xuICAgICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIH1cblxuICAgICAgICBsZWdlbmQge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHByb2dyZXNzIHtcbiAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG4gICAgICAgIH1cblxuICAgICAgICBbdHlwZT0nbnVtYmVyJ106Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG4gICAgICAgIFt0eXBlPSdudW1iZXInXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgICAgW3R5cGU9J3NlYXJjaCddIHtcbiAgICAgICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICBbdHlwZT0nc2VhcmNoJ106Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAgICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIDo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24ge1xuICAgICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247XG4gICAgICAgIH1cblxuICAgICAgICBvdXRwdXQge1xuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIHN1bW1hcnkge1xuICAgICAgICAgIGRpc3BsYXk6IGxpc3QtaXRlbTtcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICB0ZW1wbGF0ZSB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIFtoaWRkZW5dIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgIGApfWZ1bmN0aW9uIHB1c2hFcnJvckZpbHRlckR1cGxpY2F0ZXMoZSx0KXtyZXR1cm5bLi4uZS5maWx0ZXIoKGU9PmUuZXZlbnQucmVhc29uIT09dC5ldmVudC5yZWFzb24pKSx0XX1mdW5jdGlvbiByZWR1Y2VyKHIsbCl7c3dpdGNoKGwudHlwZSl7Y2FzZSBlOntyZXR1cm57Li4ucixidWlsZEVycm9yOm51bGx9fWNhc2UgdDp7cmV0dXJuey4uLnIsYnVpbGRFcnJvcjpsLm1lc3NhZ2V9fWNhc2UgYTp7cmV0dXJuey4uLnIscmVmcmVzaFN0YXRlOnt0eXBlOlwicGVuZGluZ1wiLGVycm9yczpbXX19fWNhc2Ugbjp7cmV0dXJuey4uLnIsYnVpbGRFcnJvcjpudWxsLGVycm9yczpyLnJlZnJlc2hTdGF0ZS50eXBlPT09XCJwZW5kaW5nXCI/ci5yZWZyZXNoU3RhdGUuZXJyb3JzOltdLHJlZnJlc2hTdGF0ZTp7dHlwZTpcImlkbGVcIn19fWNhc2UgbzpjYXNlIGk6e3N3aXRjaChyLnJlZnJlc2hTdGF0ZS50eXBlKXtjYXNlXCJpZGxlXCI6e3JldHVybnsuLi5yLG5leHRJZDpyLm5leHRJZCsxLGVycm9yczpwdXNoRXJyb3JGaWx0ZXJEdXBsaWNhdGVzKHIuZXJyb3JzLHtpZDpyLm5leHRJZCxldmVudDpsfSl9fWNhc2VcInBlbmRpbmdcIjp7cmV0dXJuey4uLnIsbmV4dElkOnIubmV4dElkKzEscmVmcmVzaFN0YXRlOnsuLi5yLnJlZnJlc2hTdGF0ZSxlcnJvcnM6cHVzaEVycm9yRmlsdGVyRHVwbGljYXRlcyhyLnJlZnJlc2hTdGF0ZS5lcnJvcnMse2lkOnIubmV4dElkLGV2ZW50Omx9KX19fWRlZmF1bHQ6Y29uc3QgZT1yLnJlZnJlc2hTdGF0ZTtyZXR1cm4gcn19ZGVmYXVsdDp7Y29uc3QgZT1sO3JldHVybiByfX19Y29uc3Qgc2hvdWxkUHJldmVudERpc3BsYXk9KGUsdCk9PntpZighdHx8IWUpe3JldHVybiBmYWxzZX1yZXR1cm4gdC5pbmNsdWRlcyhlKX07Y29uc3QgS3Q9ZnVuY3Rpb24gUmVhY3REZXZPdmVybGF5KHtjaGlsZHJlbjplLHByZXZlbnREaXNwbGF5OnQsZ2xvYmFsT3ZlcmxheTpyfSl7Y29uc3RbbixhXT1wLnVzZVJlZHVjZXIocmVkdWNlcix7bmV4dElkOjEsYnVpbGRFcnJvcjpudWxsLGVycm9yczpbXSxyZWZyZXNoU3RhdGU6e3R5cGU6XCJpZGxlXCJ9fSk7cC51c2VFZmZlY3QoKCgpPT57b24oYSk7cmV0dXJuIGZ1bmN0aW9uKCl7b2ZmKGEpfX0pLFthXSk7Y29uc3Qgbz1wLnVzZUNhbGxiYWNrKCgoZSx0KT0+e30pLFtdKTtjb25zdCBpPW4uYnVpbGRFcnJvciE9bnVsbDtjb25zdCBsPUJvb2xlYW4obi5lcnJvcnMubGVuZ3RoKTtjb25zdCBzPWk/XCJidWlsZFwiOmw/XCJydW50aW1lXCI6bnVsbDtjb25zdCB1PXMhPT1udWxsO3JldHVybiBwLmNyZWF0ZUVsZW1lbnQocC5GcmFnbWVudCxudWxsLHAuY3JlYXRlRWxlbWVudChFcnJvckJvdW5kYXJ5LHtnbG9iYWxPdmVybGF5OnIsaXNNb3VudGVkOnUsb25FcnJvcjpvfSxlPz9udWxsKSx1P3AuY3JlYXRlRWxlbWVudCh2LHtnbG9iYWxPdmVybGF5OnJ9LHAuY3JlYXRlRWxlbWVudChDc3NSZXNldCxudWxsKSxwLmNyZWF0ZUVsZW1lbnQoQmFzZSxudWxsKSxwLmNyZWF0ZUVsZW1lbnQoQ29tcG9uZW50U3R5bGVzLG51bGwpLHNob3VsZFByZXZlbnREaXNwbGF5KHMsdCk/bnVsbDppP3AuY3JlYXRlRWxlbWVudChqdCx7bWVzc2FnZTpuLmJ1aWxkRXJyb3J9KTpsP3AuY3JlYXRlRWxlbWVudChxdCx7ZXJyb3JzOm4uZXJyb3JzfSk6dW5kZWZpbmVkKTp1bmRlZmluZWQpfTt2YXIgWnQ9S3Q7KDAsZi5wYXRjaENvbnNvbGVFcnJvcikoKTtsZXQgVXQ9ZmFsc2U7bGV0IEd0PXVuZGVmaW5lZDtmdW5jdGlvbiBvblVuaGFuZGxlZEVycm9yKGUpe2NvbnN0IHQ9ZT8uZXJyb3I7aWYoIXR8fCEodCBpbnN0YW5jZW9mIEVycm9yKXx8dHlwZW9mIHQuc3RhY2shPT1cInN0cmluZ1wiKXtyZXR1cm59aWYodC5tZXNzYWdlLm1hdGNoKC8oaHlkcmF0aW9ufGNvbnRlbnQgZG9lcyBub3QgbWF0Y2h8ZGlkIG5vdCBtYXRjaCkvaSkpe2lmKGYuaHlkcmF0aW9uRXJyb3JXYXJuaW5nKXt0Lm1lc3NhZ2UrPVwiXFxuXFxuXCIrZi5oeWRyYXRpb25FcnJvcldhcm5pbmd9dC5tZXNzYWdlKz1gXFxuXFxuU2VlIG1vcmUgaW5mbyBoZXJlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9yZWFjdC1oeWRyYXRpb24tZXJyb3JgfWNvbnN0IHI9dDtjb25zdCBuPXR5cGVvZiBmLmh5ZHJhdGlvbkVycm9yQ29tcG9uZW50U3RhY2s9PT1cInN0cmluZ1wiPygwLGQucGFyc2VDb21wb25lbnRTdGFjaykoZi5oeWRyYXRpb25FcnJvckNvbXBvbmVudFN0YWNrKS5tYXAoKGU9PmUuY29tcG9uZW50KSk6dW5kZWZpbmVkO2VtaXQoe3R5cGU6byxyZWFzb246dCxmcmFtZXM6cGFyc2VTdGFjayhyLnN0YWNrKSxjb21wb25lbnRTdGFjazpufSl9ZnVuY3Rpb24gb25VbmhhbmRsZWRSZWplY3Rpb24oZSl7Y29uc3QgdD1lPy5yZWFzb247aWYoIXR8fCEodCBpbnN0YW5jZW9mIEVycm9yKXx8dHlwZW9mIHQuc3RhY2shPT1cInN0cmluZ1wiKXtyZXR1cm59Y29uc3Qgcj10O2VtaXQoe3R5cGU6aSxyZWFzb246dCxmcmFtZXM6cGFyc2VTdGFjayhyLnN0YWNrKX0pfWZ1bmN0aW9uIHJlZ2lzdGVyKCl7aWYoVXQpe3JldHVybn1VdD10cnVlO3RyeXtjb25zdCBlPUVycm9yLnN0YWNrVHJhY2VMaW1pdDtFcnJvci5zdGFja1RyYWNlTGltaXQ9NTA7R3Q9ZX1jYXRjaHt9d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLG9uVW5oYW5kbGVkRXJyb3IpO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwidW5oYW5kbGVkcmVqZWN0aW9uXCIsb25VbmhhbmRsZWRSZWplY3Rpb24pfWZ1bmN0aW9uIHVucmVnaXN0ZXIoKXtpZighVXQpe3JldHVybn1VdD1mYWxzZTtpZihHdCE9PXVuZGVmaW5lZCl7dHJ5e0Vycm9yLnN0YWNrVHJhY2VMaW1pdD1HdH1jYXRjaHt9R3Q9dW5kZWZpbmVkfXdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiZXJyb3JcIixvblVuaGFuZGxlZEVycm9yKTt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInVuaGFuZGxlZHJlamVjdGlvblwiLG9uVW5oYW5kbGVkUmVqZWN0aW9uKX1mdW5jdGlvbiBvbkJ1aWxkT2soKXtlbWl0KHt0eXBlOmV9KX1mdW5jdGlvbiBvbkJ1aWxkRXJyb3IoZSl7ZW1pdCh7dHlwZTp0LG1lc3NhZ2U6ZX0pfWZ1bmN0aW9uIG9uUmVmcmVzaCgpe2VtaXQoe3R5cGU6bn0pfWZ1bmN0aW9uIG9uQmVmb3JlUmVmcmVzaCgpe2VtaXQoe3R5cGU6YX0pfX0oKTttb2R1bGUuZXhwb3J0cz1yfSkoKTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/add-base-path.js": /*!************************************************************!*\ !*** ../../node_modules/next/dist/client/add-base-path.js ***! \************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.addBasePath = addBasePath;\nvar _addPathPrefix = __webpack_require__(/*! ../shared/lib/router/utils/add-path-prefix */ \"../../node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js\");\nvar _normalizeTrailingSlash = __webpack_require__(/*! ./normalize-trailing-slash */ \"../../node_modules/next/dist/client/normalize-trailing-slash.js\");\nconst basePath = false || \"\";\nfunction addBasePath(path, required) {\n if (false) {}\n return (0, _normalizeTrailingSlash).normalizePathTrailingSlash((0, _addPathPrefix).addPathPrefix(path, basePath));\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=add-base-path.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvYWRkLWJhc2UtcGF0aC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU8sSUFBSTtBQUNmLENBQUMsRUFBQztBQUNGRCxtQkFBbUIsR0FBR0U7QUFDdEIsSUFBSUMsaUJBQWlCQyxtQkFBT0EsQ0FBQywySEFBNEM7QUFDekUsSUFBSUMsMEJBQTBCRCxtQkFBT0EsQ0FBQyxtR0FBNEI7QUFDbEUsTUFBTUUsV0FBV0MsTUFBa0MsSUFBSTtBQUN2RCxTQUFTTCxZQUFZUSxJQUFJLEVBQUVDLFFBQVEsRUFBRTtJQUNqQyxJQUFJSixLQUEwQyxFQUFFLEVBSS9DO0lBQ0QsT0FBTyxDQUFDLEdBQUdGLHVCQUF1QixFQUFFUSwwQkFBMEIsQ0FBQyxDQUFDLEdBQUdWLGNBQWMsRUFBRVcsYUFBYSxDQUFDSixNQUFNSjtBQUMzRztBQUVBLElBQUksQ0FBQyxPQUFPTixRQUFRZSxPQUFPLEtBQUssY0FBZSxPQUFPZixRQUFRZSxPQUFPLEtBQUssWUFBWWYsUUFBUWUsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPZixRQUFRZSxPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLbEIsT0FBT0MsY0FBYyxDQUFDQyxRQUFRZSxPQUFPLEVBQUUsY0FBYztRQUFFZCxPQUFPLElBQUk7SUFBQztJQUNuRUgsT0FBT21CLE1BQU0sQ0FBQ2pCLFFBQVFlLE9BQU8sRUFBRWY7SUFDL0JrQixPQUFPbEIsT0FBTyxHQUFHQSxRQUFRZSxPQUFPO0FBQ2xDLENBQUMsQ0FFRCx5Q0FBeUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FkZC1iYXNlLXBhdGguanM/YjczOSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuYWRkQmFzZVBhdGggPSBhZGRCYXNlUGF0aDtcbnZhciBfYWRkUGF0aFByZWZpeCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9hZGQtcGF0aC1wcmVmaXhcIik7XG52YXIgX25vcm1hbGl6ZVRyYWlsaW5nU2xhc2ggPSByZXF1aXJlKFwiLi9ub3JtYWxpemUtdHJhaWxpbmctc2xhc2hcIik7XG5jb25zdCBiYXNlUGF0aCA9IHByb2Nlc3MuZW52Ll9fTkVYVF9ST1VURVJfQkFTRVBBVEggfHwgJyc7XG5mdW5jdGlvbiBhZGRCYXNlUGF0aChwYXRoLCByZXF1aXJlZCkge1xuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfTUFOVUFMX0NMSUVOVF9CQVNFX1BBVEgpIHtcbiAgICAgICAgaWYgKCFyZXF1aXJlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICgwLCBfbm9ybWFsaXplVHJhaWxpbmdTbGFzaCkubm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2goKDAsIF9hZGRQYXRoUHJlZml4KS5hZGRQYXRoUHJlZml4KHBhdGgsIGJhc2VQYXRoKSk7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFkZC1iYXNlLXBhdGguanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiYWRkQmFzZVBhdGgiLCJfYWRkUGF0aFByZWZpeCIsInJlcXVpcmUiLCJfbm9ybWFsaXplVHJhaWxpbmdTbGFzaCIsImJhc2VQYXRoIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9ST1VURVJfQkFTRVBBVEgiLCJwYXRoIiwicmVxdWlyZWQiLCJfX05FWFRfTUFOVUFMX0NMSUVOVF9CQVNFX1BBVEgiLCJub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaCIsImFkZFBhdGhQcmVmaXgiLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/client/add-base-path.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/add-locale.js": /*!*********************************************************!*\ !*** ../../node_modules/next/dist/client/add-locale.js ***! \*********************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.addLocale = void 0;\nvar _normalizeTrailingSlash = __webpack_require__(/*! ./normalize-trailing-slash */ \"../../node_modules/next/dist/client/normalize-trailing-slash.js\");\nconst addLocale = function(path) {\n for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n args[_key - 1] = arguments[_key];\n }\n if (false) {}\n return path;\n};\nexports.addLocale = addLocale;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=add-locale.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvYWRkLWxvY2FsZS5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU8sSUFBSTtBQUNmLENBQUMsRUFBQztBQUNGRCxpQkFBaUIsR0FBRyxLQUFLO0FBQ3pCLElBQUlHLDBCQUEwQkMsbUJBQU9BLENBQUMsbUdBQTRCO0FBQ2xFLE1BQU1GLFlBQVksU0FBQ0csTUFBZ0I7cUNBQVBDO1FBQUFBOztJQUN4QixJQUFJQyxLQUErQixFQUFFLEVBRXBDO0lBQ0QsT0FBT0Y7QUFDWDtBQUNBTCxpQkFBaUIsR0FBR0U7QUFFcEIsSUFBSSxDQUFDLE9BQU9GLFFBQVFXLE9BQU8sS0FBSyxjQUFlLE9BQU9YLFFBQVFXLE9BQU8sS0FBSyxZQUFZWCxRQUFRVyxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9YLFFBQVFXLE9BQU8sQ0FBQ0MsVUFBVSxLQUFLLGFBQWE7SUFDcktkLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUVcsT0FBTyxFQUFFLGNBQWM7UUFBRVYsT0FBTyxJQUFJO0lBQUM7SUFDbkVILE9BQU9lLE1BQU0sQ0FBQ2IsUUFBUVcsT0FBTyxFQUFFWDtJQUMvQmMsT0FBT2QsT0FBTyxHQUFHQSxRQUFRVyxPQUFPO0FBQ2xDLENBQUMsQ0FFRCxzQ0FBc0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FkZC1sb2NhbGUuanM/NWJhYiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuYWRkTG9jYWxlID0gdm9pZCAwO1xudmFyIF9ub3JtYWxpemVUcmFpbGluZ1NsYXNoID0gcmVxdWlyZShcIi4vbm9ybWFsaXplLXRyYWlsaW5nLXNsYXNoXCIpO1xuY29uc3QgYWRkTG9jYWxlID0gKHBhdGgsIC4uLmFyZ3MpPT57XG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9JMThOX1NVUFBPUlQpIHtcbiAgICAgICAgcmV0dXJuICgwLCBfbm9ybWFsaXplVHJhaWxpbmdTbGFzaCkubm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2gocmVxdWlyZSgnLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvYWRkLWxvY2FsZScpLmFkZExvY2FsZShwYXRoLCAuLi5hcmdzKSk7XG4gICAgfVxuICAgIHJldHVybiBwYXRoO1xufTtcbmV4cG9ydHMuYWRkTG9jYWxlID0gYWRkTG9jYWxlO1xuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1hZGQtbG9jYWxlLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImFkZExvY2FsZSIsIl9ub3JtYWxpemVUcmFpbGluZ1NsYXNoIiwicmVxdWlyZSIsInBhdGgiLCJhcmdzIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9JMThOX1NVUFBPUlQiLCJub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaCIsImRlZmF1bHQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/client/add-locale.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/detect-domain-locale.js": /*!*******************************************************************!*\ !*** ../../node_modules/next/dist/client/detect-domain-locale.js ***! \*******************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.detectDomainLocale = void 0;\nconst detectDomainLocale = function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n if (false) {}\n};\nexports.detectDomainLocale = detectDomainLocale;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=detect-domain-locale.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV0ZWN0LWRvbWFpbi1sb2NhbGUuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPLElBQUk7QUFDZixDQUFDLEVBQUM7QUFDRkQsMEJBQTBCLEdBQUcsS0FBSztBQUNsQyxNQUFNRSxxQkFBcUIsV0FBVztxQ0FBUEM7UUFBQUE7O0lBQzNCLElBQUlDLEtBQStCLEVBQUUsRUFFcEM7QUFDTDtBQUNBSiwwQkFBMEIsR0FBR0U7QUFFN0IsSUFBSSxDQUFDLE9BQU9GLFFBQVFRLE9BQU8sS0FBSyxjQUFlLE9BQU9SLFFBQVFRLE9BQU8sS0FBSyxZQUFZUixRQUFRUSxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9SLFFBQVFRLE9BQU8sQ0FBQ0MsVUFBVSxLQUFLLGFBQWE7SUFDcktYLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUVEsT0FBTyxFQUFFLGNBQWM7UUFBRVAsT0FBTyxJQUFJO0lBQUM7SUFDbkVILE9BQU9ZLE1BQU0sQ0FBQ1YsUUFBUVEsT0FBTyxFQUFFUjtJQUMvQlcsT0FBT1gsT0FBTyxHQUFHQSxRQUFRUSxPQUFPO0FBQ2xDLENBQUMsQ0FFRCxnREFBZ0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2RldGVjdC1kb21haW4tbG9jYWxlLmpzP2MxZmYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRldGVjdERvbWFpbkxvY2FsZSA9IHZvaWQgMDtcbmNvbnN0IGRldGVjdERvbWFpbkxvY2FsZSA9ICguLi5hcmdzKT0+e1xuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUKSB7XG4gICAgICAgIHJldHVybiByZXF1aXJlKCcuLi9zaGFyZWQvbGliL2kxOG4vZGV0ZWN0LWRvbWFpbi1sb2NhbGUnKS5kZXRlY3REb21haW5Mb2NhbGUoLi4uYXJncyk7XG4gICAgfVxufTtcbmV4cG9ydHMuZGV0ZWN0RG9tYWluTG9jYWxlID0gZGV0ZWN0RG9tYWluTG9jYWxlO1xuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kZXRlY3QtZG9tYWluLWxvY2FsZS5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJkZXRlY3REb21haW5Mb2NhbGUiLCJhcmdzIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9JMThOX1NVUFBPUlQiLCJyZXF1aXJlIiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/client/detect-domain-locale.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/dev/dev-build-watcher.js": /*!********************************************************************!*\ !*** ../../node_modules/next/dist/client/dev/dev-build-watcher.js ***! \********************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = initializeBuildWatcher;\nvar _websocket = __webpack_require__(/*! ./error-overlay/websocket */ \"../../node_modules/next/dist/client/dev/error-overlay/websocket.js\");\nfunction initializeBuildWatcher(toggleCallback) {\n let position = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : \"bottom-right\";\n const shadowHost = document.createElement(\"div\");\n const [verticalProperty, horizontalProperty] = position.split(\"-\");\n shadowHost.id = \"__next-build-watcher\";\n // Make sure container is fixed and on a high zIndex so it shows\n shadowHost.style.position = \"fixed\";\n shadowHost.style[verticalProperty] = \"10px\";\n shadowHost.style[horizontalProperty] = \"20px\";\n shadowHost.style.width = 0;\n shadowHost.style.height = 0;\n shadowHost.style.zIndex = 99999;\n document.body.appendChild(shadowHost);\n let shadowRoot;\n let prefix = \"\";\n if (shadowHost.attachShadow) {\n shadowRoot = shadowHost.attachShadow({\n mode: \"open\"\n });\n } else {\n // If attachShadow is undefined then the browser does not support\n // the Shadow DOM, we need to prefix all the names so there\n // will be no conflicts\n shadowRoot = shadowHost;\n prefix = \"__next-build-watcher-\";\n }\n // Container\n const container = createContainer(prefix);\n shadowRoot.appendChild(container);\n // CSS\n const css = createCss(prefix, {\n horizontalProperty,\n verticalProperty\n });\n shadowRoot.appendChild(css);\n // State\n let isVisible = false;\n let isBuilding = false;\n let timeoutId = null;\n // Handle events\n (0, _websocket).addMessageListener((event)=>{\n // This is the heartbeat event\n if (event.data === \"\\uD83D\\uDC93\") {\n return;\n }\n try {\n handleMessage(event);\n } catch (e) {}\n });\n function handleMessage(event) {\n const obj = typeof event === \"string\" ? {\n action: event\n } : JSON.parse(event.data);\n // eslint-disable-next-line default-case\n switch(obj.action){\n case \"building\":\n timeoutId && clearTimeout(timeoutId);\n isVisible = true;\n isBuilding = true;\n updateContainer();\n break;\n case \"built\":\n case \"sync\":\n isBuilding = false;\n // Wait for the fade out transition to complete\n timeoutId = setTimeout(()=>{\n isVisible = false;\n updateContainer();\n }, 100);\n updateContainer();\n break;\n }\n }\n toggleCallback(handleMessage);\n function updateContainer() {\n if (isBuilding) {\n container.classList.add(\"\".concat(prefix, \"building\"));\n } else {\n container.classList.remove(\"\".concat(prefix, \"building\"));\n }\n if (isVisible) {\n container.classList.add(\"\".concat(prefix, \"visible\"));\n } else {\n container.classList.remove(\"\".concat(prefix, \"visible\"));\n }\n }\n}\nfunction createContainer(prefix) {\n const container = document.createElement(\"div\");\n container.id = \"\".concat(prefix, \"container\");\n container.innerHTML = '\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n ');\n return container;\n}\nfunction createCss(prefix, param) {\n let { horizontalProperty , verticalProperty } = param;\n const css = document.createElement(\"style\");\n css.textContent = \"\\n #\".concat(prefix, \"container {\\n position: absolute;\\n \").concat(verticalProperty, \": 10px;\\n \").concat(horizontalProperty, \": 30px;\\n\\n border-radius: 3px;\\n background: #000;\\n color: #fff;\\n font: initial;\\n cursor: initial;\\n letter-spacing: initial;\\n text-shadow: initial;\\n text-transform: initial;\\n visibility: initial;\\n\\n padding: 7px 10px 8px 10px;\\n align-items: center;\\n box-shadow: 0 11px 40px 0 rgba(0, 0, 0, 0.25), 0 2px 10px 0 rgba(0, 0, 0, 0.12);\\n\\n display: none;\\n opacity: 0;\\n transition: opacity 0.1s ease, \").concat(verticalProperty, \" 0.1s ease;\\n animation: \").concat(prefix, \"fade-in 0.1s ease-in-out;\\n }\\n\\n #\").concat(prefix, \"container.\").concat(prefix, \"visible {\\n display: flex;\\n }\\n\\n #\").concat(prefix, \"container.\").concat(prefix, \"building {\\n \").concat(verticalProperty, \": 20px;\\n opacity: 1;\\n }\\n\\n #\").concat(prefix, \"icon-wrapper {\\n width: 16px;\\n height: 16px;\\n }\\n\\n #\").concat(prefix, \"icon-wrapper > svg {\\n width: 100%;\\n height: 100%;\\n }\\n\\n #\").concat(prefix, \"icon-group {\\n animation: \").concat(prefix, \"strokedash 1s ease-in-out both infinite;\\n }\\n\\n @keyframes \").concat(prefix, \"fade-in {\\n from {\\n \").concat(verticalProperty, \": 10px;\\n opacity: 0;\\n }\\n to {\\n \").concat(verticalProperty, \": 20px;\\n opacity: 1;\\n }\\n }\\n\\n @keyframes \").concat(prefix, \"strokedash {\\n 0% {\\n stroke-dasharray: 0 226;\\n }\\n 80%,\\n 100% {\\n stroke-dasharray: 659 226;\\n }\\n }\\n \");\n return css;\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=dev-build-watcher.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L2Rldi1idWlsZC13YXRjaGVyLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTyxJQUFJO0FBQ2YsQ0FBQyxFQUFDO0FBQ0ZELGtCQUFlLEdBQUdHO0FBQ2xCLElBQUlDLGFBQWFDLG1CQUFPQSxDQUFDLHFHQUEyQjtBQUNwRCxTQUFTRix1QkFBdUJHLGNBQWMsRUFBNkI7UUFBM0JDLFdBQUFBLGlFQUFXLGNBQWM7SUFDckUsTUFBTUMsYUFBYUMsU0FBU0MsYUFBYSxDQUFDO0lBQzFDLE1BQU0sQ0FBQ0Msa0JBQWtCQyxtQkFBbUIsR0FBR0wsU0FBU00sS0FBSyxDQUFDO0lBQzlETCxXQUFXTSxFQUFFLEdBQUc7SUFDaEIsZ0VBQWdFO0lBQ2hFTixXQUFXTyxLQUFLLENBQUNSLFFBQVEsR0FBRztJQUM1QkMsV0FBV08sS0FBSyxDQUFDSixpQkFBaUIsR0FBRztJQUNyQ0gsV0FBV08sS0FBSyxDQUFDSCxtQkFBbUIsR0FBRztJQUN2Q0osV0FBV08sS0FBSyxDQUFDQyxLQUFLLEdBQUc7SUFDekJSLFdBQVdPLEtBQUssQ0FBQ0UsTUFBTSxHQUFHO0lBQzFCVCxXQUFXTyxLQUFLLENBQUNHLE1BQU0sR0FBRztJQUMxQlQsU0FBU1UsSUFBSSxDQUFDQyxXQUFXLENBQUNaO0lBQzFCLElBQUlhO0lBQ0osSUFBSUMsU0FBUztJQUNiLElBQUlkLFdBQVdlLFlBQVksRUFBRTtRQUN6QkYsYUFBYWIsV0FBV2UsWUFBWSxDQUFDO1lBQ2pDQyxNQUFNO1FBQ1Y7SUFDSixPQUFPO1FBQ0gsaUVBQWlFO1FBQ2pFLDJEQUEyRDtRQUMzRCx1QkFBdUI7UUFDdkJILGFBQWFiO1FBQ2JjLFNBQVM7SUFDYixDQUFDO0lBQ0QsWUFBWTtJQUNaLE1BQU1HLFlBQVlDLGdCQUFnQko7SUFDbENELFdBQVdELFdBQVcsQ0FBQ0s7SUFDdkIsTUFBTTtJQUNOLE1BQU1FLE1BQU1DLFVBQVVO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UUUsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPRixRQUFRRSxPQUFPLENBQUMrQyxVQUFVLEtBQUssYUFBYTtJQUNyS25ELE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUUUsT0FBTyxFQUFFLGNBQWM7UUFBRUQsT0FBTyxJQUFJO0lBQUM7SUFDbkVILE9BQU9vRCxNQUFNLENBQUNsRCxRQUFRRSxPQUFPLEVBQUVGO0lBQy9CbUQsT0FBT25ELE9BQU8sR0FBR0EsUUFBUUUsT0FBTztBQUNsQyxDQUFDLENBRUQsNkNBQTZDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZGV2LWJ1aWxkLXdhdGNoZXIuanM/ODJlYSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGluaXRpYWxpemVCdWlsZFdhdGNoZXI7XG52YXIgX3dlYnNvY2tldCA9IHJlcXVpcmUoXCIuL2Vycm9yLW92ZXJsYXkvd2Vic29ja2V0XCIpO1xuZnVuY3Rpb24gaW5pdGlhbGl6ZUJ1aWxkV2F0Y2hlcih0b2dnbGVDYWxsYmFjaywgcG9zaXRpb24gPSAnYm90dG9tLXJpZ2h0Jykge1xuICAgIGNvbnN0IHNoYWRvd0hvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBjb25zdCBbdmVydGljYWxQcm9wZXJ0eSwgaG9yaXpvbnRhbFByb3BlcnR5XSA9IHBvc2l0aW9uLnNwbGl0KCctJyk7XG4gICAgc2hhZG93SG9zdC5pZCA9ICdfX25leHQtYnVpbGQtd2F0Y2hlcic7XG4gICAgLy8gTWFrZSBzdXJlIGNvbnRhaW5lciBpcyBmaXhlZCBhbmQgb24gYSBoaWdoIHpJbmRleCBzbyBpdCBzaG93c1xuICAgIHNoYWRvd0hvc3Quc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xuICAgIHNoYWRvd0hvc3Quc3R5bGVbdmVydGljYWxQcm9wZXJ0eV0gPSAnMTBweCc7XG4gICAgc2hhZG93SG9zdC5zdHlsZVtob3Jpem9udGFsUHJvcGVydHldID0gJzIwcHgnO1xuICAgIHNoYWRvd0hvc3Quc3R5bGUud2lkdGggPSAwO1xuICAgIHNoYWRvd0hvc3Quc3R5bGUuaGVpZ2h0ID0gMDtcbiAgICBzaGFkb3dIb3N0LnN0eWxlLnpJbmRleCA9IDk5OTk5O1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2hhZG93SG9zdCk7XG4gICAgbGV0IHNoYWRvd1Jvb3Q7XG4gICAgbGV0IHByZWZpeCA9ICcnO1xuICAgIGlmIChzaGFkb3dIb3N0LmF0dGFjaFNoYWRvdykge1xuICAgICAgICBzaGFkb3dSb290ID0gc2hhZG93SG9zdC5hdHRhY2hTaGFkb3coe1xuICAgICAgICAgICAgbW9kZTogJ29wZW4nXG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIGF0dGFjaFNoYWRvdyBpcyB1bmRlZmluZWQgdGhlbiB0aGUgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0XG4gICAgICAgIC8vIHRoZSBTaGFkb3cgRE9NLCB3ZSBuZWVkIHRvIHByZWZpeCBhbGwgdGhlIG5hbWVzIHNvIHRoZXJlXG4gICAgICAgIC8vIHdpbGwgYmUgbm8gY29uZmxpY3RzXG4gICAgICAgIHNoYWRvd1Jvb3QgPSBzaGFkb3dIb3N0O1xuICAgICAgICBwcmVmaXggPSAnX19uZXh0LWJ1aWxkLXdhdGNoZXItJztcbiAgICB9XG4gICAgLy8gQ29udGFpbmVyXG4gICAgY29uc3QgY29udGFpbmVyID0gY3JlYXRlQ29udGFpbmVyKHByZWZpeCk7XG4gICAgc2hhZG93Um9vdC5hcHBlbmRDaGlsZChjb250YWluZXIpO1xuICAgIC8vIENTU1xuICAgIGNvbnN0IGNzcyA9IGNyZWF0ZUNzcyhwcmVmaXgsIHtcbiAgICAgICAgaG9yaXpvbnRhbFByb3BlcnR5LFxuICAgICAgICB2ZXJ0aWNhbFByb3BlcnR5XG4gICAgfSk7XG4gICAgc2hhZG93Um9vdC5hcHBlbmRDaGlsZChjc3MpO1xuICAgIC8vIFN0YXRlXG4gICAgbGV0IGlzVmlzaWJsZSA9IGZhbHNlO1xuICAgIGxldCBpc0J1aWxkaW5nID0gZmFsc2U7XG4gICAgbGV0IHRpbWVvdXRJZCA9IG51bGw7XG4gICAgLy8gSGFuZGxlIGV2ZW50c1xuICAgICgwLCBfd2Vic29ja2V0KS5hZGRNZXNzYWdlTGlzdGVuZXIoKGV2ZW50KT0+e1xuICAgICAgICAvLyBUaGlzIGlzIHRoZSBoZWFydGJlYXQgZXZlbnRcbiAgICAgICAgaWYgKGV2ZW50LmRhdGEgPT09ICdcXHVEODNEXFx1REM5MycpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaGFuZGxlTWVzc2FnZShldmVudCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlTWVzc2FnZShldmVudCkge1xuICAgICAgICBjb25zdCBvYmogPSB0eXBlb2YgZXZlbnQgPT09ICdzdHJpbmcnID8ge1xuICAgICAgICAgICAgYWN0aW9uOiBldmVudFxuICAgICAgICB9IDogSlNPTi5wYXJzZShldmVudC5kYXRhKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlZmF1bHQtY2FzZVxuICAgICAgICBzd2l0Y2gob2JqLmFjdGlvbil7XG4gICAgICAgICAgICBjYXNlICdidWlsZGluZyc6XG4gICAgICAgICAgICAgICAgdGltZW91dElkICYmIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICAgICAgICAgIGlzVmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgaXNCdWlsZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdXBkYXRlQ29udGFpbmVyKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdidWlsdCc6XG4gICAgICAgICAgICBjYXNlICdzeW5jJzpcbiAgICAgICAgICAgICAgICBpc0J1aWxkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgLy8gV2FpdCBmb3IgdGhlIGZhZGUgb3V0IHRyYW5zaXRpb24gdG8gY29tcGxldGVcbiAgICAgICAgICAgICAgICB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICAgICAgICAgIGlzVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVDb250YWluZXIoKTtcbiAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgIHVwZGF0ZUNvbnRhaW5lcigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvZ2dsZUNhbGxiYWNrKGhhbmRsZU1lc3NhZ2UpO1xuICAgIGZ1bmN0aW9uIHVwZGF0ZUNvbnRhaW5lcigpIHtcbiAgICAgICAgaWYgKGlzQnVpbGRpbmcpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKGAke3ByZWZpeH1idWlsZGluZ2ApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoYCR7cHJlZml4fWJ1aWxkaW5nYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoYCR7cHJlZml4fXZpc2libGVgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKGAke3ByZWZpeH12aXNpYmxlYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBjcmVhdGVDb250YWluZXIocHJlZml4KSB7XG4gICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgY29udGFpbmVyLmlkID0gYCR7cHJlZml4fWNvbnRhaW5lcmA7XG4gICAgY29udGFpbmVyLmlubmVySFRNTCA9IGBcbiAgICA8ZGl2IGlkPVwiJHtwcmVmaXh9aWNvbi13cmFwcGVyXCI+XG4gICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjI2IDIwMFwiPlxuICAgICAgICA8ZGVmcz5cbiAgICAgICAgICA8bGluZWFyR3JhZGllbnRcbiAgICAgICAgICAgIHgxPVwiMTE0LjcyMDc3NSVcIlxuICAgICAgICAgICAgeTE9XCIxODEuMjgzMjQ1JVwiXG4gICAgICAgICAgICB4Mj1cIjM5LjUzOTkzMDYlXCJcbiAgICAgICAgICAgIHkyPVwiMTAwJVwiXG4gICAgICAgICAgICBpZD1cIiR7cHJlZml4fWxpbmVhci1ncmFkaWVudFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj1cIiMwMDAwMDBcIiBvZmZzZXQ9XCIwJVwiIC8+XG4gICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPVwiI0ZGRkZGRlwiIG9mZnNldD1cIjEwMCVcIiAvPlxuICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XG4gICAgICAgIDwvZGVmcz5cbiAgICAgICAgPGcgaWQ9XCIke3ByZWZpeH1pY29uLWdyb3VwXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJ1cmwoIyR7cHJlZml4fWxpbmVhci1ncmFkaWVudClcIiBzdHJva2Utd2lkdGg9XCIxOFwiPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMTEzLDUuMDgyMTkxMTcgTDQuMjgzOTM4MDEsMTk3LjUgTDIyMS43MTYwNjIsMTk3LjUgTDExMyw1LjA4MjE5MTE3IFpcIiAvPlxuICAgICAgICA8L2c+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgYDtcbiAgICByZXR1cm4gY29udGFpbmVyO1xufVxuZnVuY3Rpb24gY3JlYXRlQ3NzKHByZWZpeCwgeyBob3Jpem9udGFsUHJvcGVydHkgLCB2ZXJ0aWNhbFByb3BlcnR5ICB9KSB7XG4gICAgY29uc3QgY3NzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICBjc3MudGV4dENvbnRlbnQgPSBgXG4gICAgIyR7cHJlZml4fWNvbnRhaW5lciB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAke3ZlcnRpY2FsUHJvcGVydHl9OiAxMHB4O1xuICAgICAgJHtob3Jpem9udGFsUHJvcGVydHl9OiAzMHB4O1xuXG4gICAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgICBiYWNrZ3JvdW5kOiAjMDAwO1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgICBmb250OiBpbml0aWFsO1xuICAgICAgY3Vyc29yOiBpbml0aWFsO1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IGluaXRpYWw7XG4gICAgICB0ZXh0LXNoYWRvdzogaW5pdGlhbDtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiBpbml0aWFsO1xuICAgICAgdmlzaWJpbGl0eTogaW5pdGlhbDtcblxuICAgICAgcGFkZGluZzogN3B4IDEwcHggOHB4IDEwcHg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgYm94LXNoYWRvdzogMCAxMXB4IDQwcHggMCByZ2JhKDAsIDAsIDAsIDAuMjUpLCAwIDJweCAxMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTtcblxuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMXMgZWFzZSwgJHt2ZXJ0aWNhbFByb3BlcnR5fSAwLjFzIGVhc2U7XG4gICAgICBhbmltYXRpb246ICR7cHJlZml4fWZhZGUtaW4gMC4xcyBlYXNlLWluLW91dDtcbiAgICB9XG5cbiAgICAjJHtwcmVmaXh9Y29udGFpbmVyLiR7cHJlZml4fXZpc2libGUge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICB9XG5cbiAgICAjJHtwcmVmaXh9Y29udGFpbmVyLiR7cHJlZml4fWJ1aWxkaW5nIHtcbiAgICAgICR7dmVydGljYWxQcm9wZXJ0eX06IDIwcHg7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgICMke3ByZWZpeH1pY29uLXdyYXBwZXIge1xuICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgfVxuXG4gICAgIyR7cHJlZml4fWljb24td3JhcHBlciA+IHN2ZyB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICAjJHtwcmVmaXh9aWNvbi1ncm91cCB7XG4gICAgICBhbmltYXRpb246ICR7cHJlZml4fXN0cm9rZWRhc2ggMXMgZWFzZS1pbi1vdXQgYm90aCBpbmZpbml0ZTtcbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzICR7cHJlZml4fWZhZGUtaW4ge1xuICAgICAgZnJvbSB7XG4gICAgICAgICR7dmVydGljYWxQcm9wZXJ0eX06IDEwcHg7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB9XG4gICAgICB0byB7XG4gICAgICAgICR7dmVydGljYWxQcm9wZXJ0eX06IDIwcHg7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGtleWZyYW1lcyAke3ByZWZpeH1zdHJva2VkYXNoIHtcbiAgICAgIDAlIHtcbiAgICAgICAgc3Ryb2tlLWRhc2hhcnJheTogMCAyMjY7XG4gICAgICB9XG4gICAgICA4MCUsXG4gICAgICAxMDAlIHtcbiAgICAgICAgc3Ryb2tlLWRhc2hhcnJheTogNjU5IDIyNjtcbiAgICAgIH1cbiAgICB9XG4gIGA7XG4gICAgcmV0dXJuIGNzcztcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGV2LWJ1aWxkLXdhdGNoZXIuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZGVmYXVsdCIsImluaXRpYWxpemVCdWlsZFdhdGNoZXIiLCJfd2Vic29ja2V0IiwicmVxdWlyZSIsInRvZ2dsZUNhbGxiYWNrIiwicG9zaXRpb24iLCJzaGFkb3dIb3N0IiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwidmVydGljYWxQcm9wZXJ0eSIsImhvcml6b250YWxQcm9wZXJ0eSIsInNwbGl0IiwiaWQiLCJzdHlsZSIsIndpZHRoIiwiaGVpZ2h0IiwiekluZGV4IiwiYm9keSIsImFwcGVuZENoaWxkIiwic2hhZG93Um9vdCIsInByZWZpeCIsImF0dGFjaFNoYWRvdyIsIm1vZGUiLCJjb250YWluZXIiLCJjcmVhdGVDb250YWluZXIiLCJjc3MiLCJjcmVhdGVDc3MiLCJpc1Zpc2libGUiLCJpc0J1aWxkaW5nIiwidGltZW91dElkIiwiYWRkTWVzc2FnZUxpc3RlbmVyIiwiZXZlbnQiLCJkYXRhIiwiaGFuZGxlTWVzc2FnZSIsImUiLCJvYmoiLCJhY3Rpb24iLCJKU09OIiwicGFyc2UiLCJjbGVhclRpbWVvdXQiLCJ1cGRhdGVDb250YWluZXIiLCJzZXRUaW1lb3V0IiwiY2xhc3NMaXN0IiwiYWRkIiwicmVtb3ZlIiwiaW5uZXJIVE1MIiwidGV4dENvbnRlbnQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/client/dev/dev-build-watcher.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/dev/error-overlay/format-webpack-messages.js": /*!****************************************************************************************!*\ !*** ../../node_modules/next/dist/client/dev/error-overlay/format-webpack-messages.js ***! \****************************************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = formatWebpackMessages;\nvar _extends = (__webpack_require__(/*! @swc/helpers/lib/_extends.js */ \"../../node_modules/@swc/helpers/lib/_extends.js\")[\"default\"]);\nvar _interop_require_default = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _stripAnsi = _interop_require_default(__webpack_require__(/*! next/dist/compiled/strip-ansi */ \"../../node_modules/next/dist/compiled/strip-ansi/index.js\"));\nfunction formatWebpackMessages(json, verbose) {\n const formattedErrors = json.errors.map((message)=>{\n const isUnknownNextFontError = message.message.includes(\"An error occured in `next/font`.\");\n return formatMessage(message, isUnknownNextFontError || verbose);\n });\n const formattedWarnings = json.warnings.map((message)=>{\n return formatMessage(message, verbose);\n });\n // Reorder errors to put the most relevant ones first.\n let reactServerComponentsError = -1;\n for(let i = 0; i < formattedErrors.length; i++){\n const error = formattedErrors[i];\n if (error.includes(\"ReactServerComponentsError\")) {\n reactServerComponentsError = i;\n break;\n }\n }\n // Move the reactServerComponentsError to the top if it exists\n if (reactServerComponentsError !== -1) {\n const error = formattedErrors.splice(reactServerComponentsError, 1);\n formattedErrors.unshift(error[0]);\n }\n const result = _extends({}, json, {\n errors: formattedErrors,\n warnings: formattedWarnings\n });\n if (!verbose && result.errors.some(isLikelyASyntaxError)) {\n // If there are any syntax errors, show just them.\n result.errors = result.errors.filter(isLikelyASyntaxError);\n result.warnings = [];\n }\n return result;\n}\n// This file is based on https://github.com/facebook/create-react-app/blob/7b1a32be6ec9f99a6c9a3c66813f3ac09c4736b9/packages/react-dev-utils/formatWebpackMessages.js\n// It's been edited to remove chalk and CRA-specific logic\nconst friendlySyntaxErrorLabel = \"Syntax error:\";\nconst WEBPACK_BREAKING_CHANGE_POLYFILLS = \"\\n\\nBREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.\";\nfunction isLikelyASyntaxError(message) {\n return (0, _stripAnsi).default(message).indexOf(friendlySyntaxErrorLabel) !== -1;\n}\nlet hadMissingSassError = false;\n// Cleans up webpack error messages.\nfunction formatMessage(message, verbose, importTraceNote) {\n // TODO: Replace this once webpack 5 is stable\n if (typeof message === \"object\" && message.message) {\n const filteredModuleTrace = message.moduleTrace && message.moduleTrace.filter((trace)=>!/next-(middleware|client-pages|edge-function)-loader\\.js/.test(trace.originName));\n let body = message.message;\n const breakingChangeIndex = body.indexOf(WEBPACK_BREAKING_CHANGE_POLYFILLS);\n if (breakingChangeIndex >= 0) {\n body = body.slice(0, breakingChangeIndex);\n }\n message = (message.moduleName ? (0, _stripAnsi).default(message.moduleName) + \"\\n\" : \"\") + (message.file ? (0, _stripAnsi).default(message.file) + \"\\n\" : \"\") + body + (message.details && verbose ? \"\\n\" + message.details : \"\") + (filteredModuleTrace && filteredModuleTrace.length ? (importTraceNote || \"\\n\\nImport trace for requested module:\") + filteredModuleTrace.map((trace)=>\"\\n\".concat(trace.moduleName)).join(\"\") : \"\") + (message.stack && verbose ? \"\\n\" + message.stack : \"\");\n }\n let lines = message.split(\"\\n\");\n // Strip Webpack-added headers off errors/warnings\n // https://github.com/webpack/webpack/blob/master/lib/ModuleError.js\n lines = lines.filter((line)=>!/Module [A-z ]+\\(from/.test(line));\n // Transform parsing error into syntax error\n // TODO: move this to our ESLint formatter?\n lines = lines.map((line)=>{\n const parsingError = /Line (\\d+):(?:(\\d+):)?\\s*Parsing error: (.+)$/.exec(line);\n if (!parsingError) {\n return line;\n }\n const [, errorLine, errorColumn, errorMessage] = parsingError;\n return \"\".concat(friendlySyntaxErrorLabel, \" \").concat(errorMessage, \" (\").concat(errorLine, \":\").concat(errorColumn, \")\");\n });\n message = lines.join(\"\\n\");\n // Smoosh syntax errors (commonly found in CSS)\n message = message.replace(/SyntaxError\\s+\\((\\d+):(\\d+)\\)\\s*(.+?)\\n/g, \"\".concat(friendlySyntaxErrorLabel, \" $3 ($1:$2)\\n\"));\n // Clean up export errors\n message = message.replace(/^.*export '(.+?)' was not found in '(.+?)'.*$/gm, \"Attempted import error: '$1' is not exported from '$2'.\");\n message = message.replace(/^.*export 'default' \\(imported as '(.+?)'\\) was not found in '(.+?)'.*$/gm, \"Attempted import error: '$2' does not contain a default export (imported as '$1').\");\n message = message.replace(/^.*export '(.+?)' \\(imported as '(.+?)'\\) was not found in '(.+?)'.*$/gm, \"Attempted import error: '$1' is not exported from '$3' (imported as '$2').\");\n lines = message.split(\"\\n\");\n // Remove leading newline\n if (lines.length > 2 && lines[1].trim() === \"\") {\n lines.splice(1, 1);\n }\n // Cleans up verbose \"module not found\" messages for files and packages.\n if (lines[1] && lines[1].indexOf(\"Module not found: \") === 0) {\n lines = [\n lines[0],\n lines[1].replace(\"Error: \", \"\").replace(\"Module not found: Cannot find file:\", \"Cannot find file:\"),\n ...lines.slice(2)\n ];\n }\n // Add helpful message for users trying to use Sass for the first time\n if (lines[1] && lines[1].match(/Cannot find module.+sass/)) {\n // ./file.module.scss (<>) => ./file.module.scss\n const firstLine = lines[0].split(\"!\");\n lines[0] = firstLine[firstLine.length - 1];\n lines[1] = \"To use Next.js' built-in Sass support, you first need to install `sass`.\\n\";\n lines[1] += \"Run `npm i sass` or `yarn add sass` inside your workspace.\\n\";\n lines[1] += \"\\nLearn more: https://nextjs.org/docs/messages/install-sass\";\n // dispose of unhelpful stack trace\n lines = lines.slice(0, 2);\n hadMissingSassError = true;\n } else if (hadMissingSassError && message.match(/(sass-loader|resolve-url-loader: CSS error)/)) {\n // dispose of unhelpful stack trace following missing sass module\n lines = [];\n }\n if (!verbose) {\n message = lines.join(\"\\n\");\n // Internal stacks are generally useless so we strip them... with the\n // exception of stacks containing `webpack:` because they're normally\n // from user code generated by Webpack. For more information see\n // https://github.com/facebook/create-react-app/pull/1050\n message = message.replace(/^\\s*at\\s((?!webpack:).)*:\\d+:\\d+[\\s)]*(\\n|$)/gm, \"\") // at ... ...:x:y\n ;\n message = message.replace(/^\\s*at\\s(\\n|$)/gm, \"\") // at \n ;\n message = message.replace(/File was processed with these loaders:\\n(.+[\\\\/](next[\\\\/]dist[\\\\/].+|@next[\\\\/]react-refresh-utils[\\\\/]loader)\\.js\\n)*You may need an additional loader to handle the result of these loaders.\\n/g, \"\");\n lines = message.split(\"\\n\");\n }\n // Remove duplicated newlines\n lines = lines.filter((line, index, arr)=>index === 0 || line.trim() !== \"\" || line.trim() !== arr[index - 1].trim());\n // Reassemble the message\n message = lines.join(\"\\n\");\n return message.trim();\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=format-webpack-messages.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L2Vycm9yLW92ZXJsYXkvZm9ybWF0LXdlYnBhY2stbWVzc2FnZXMuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPLElBQUk7QUFDZixDQUFDLEVBQUM7QUFDRkQsa0JBQWUsR0FBR0c7QUFDbEIsSUFBSUMsV0FBV0MsdUhBQStDO0FBQzlELElBQUlDLDJCQUEyQkQsdUpBQStEO0FBQzlGLElBQUlFLGFBQWFELHlCQUF5QkQsbUJBQU9BLENBQUMsZ0dBQStCO0FBQ2pGLFNBQVNGLHNCQUFzQkssSUFBSSxFQUFFQyxPQUFPLEVBQUU7SUFDMUMsTUFBTUMsa0JBQWtCRixLQUFLRyxNQUFNLENBQUNDLEdBQUcsQ0FBQyxDQUFDQyxVQUFVO1FBQy9DLE1BQU1DLHlCQUF5QkQsUUFBUUEsT0FBTyxDQUFDRSxRQUFRLENBQUM7UUFDeEQsT0FBT0MsY0FBY0gsU0FBU0MsMEJBQTBCTDtJQUM1RDtJQUNBLE1BQU1RLG9CQUFvQlQsS0FBS1UsUUFBUSxDQUFDTixHQUFHLENBQUMsQ0FBQ0MsVUFBVTtRQUNuRCxPQUFPRyxjQUFjSCxTQUFTSjtJQUNsQztJQUNBLHNEQUFzRDtJQUN0RCxJQUFJVSw2QkFBNkIsQ0FBQztJQUNsQyxJQUFJLElBQUlDLElBQUksR0FBR0EsSUFBSVYsZ0JBQWdCVyxNQUFNLEVBQUVELElBQUk7UUFDM0MsTUFBTUUsUUFBUVosZUFBZSxDQUFDVSxFQUFFO1FBQ2hDLElBQUlFLE1BQU1QLFFBQVEsQ0FBQywrQkFBK0I7WUFDOUNJLDZCQUE2QkM7WUFDN0IsS0FBTTtRQUNWLENBQUM7SUFDTDtJQUNBLDhEQUE4RDtJQUM5RCxJQUFJRCwrQkFBK0IsQ0FBQyxHQUFHO1FBQ25DLE1BQU1HLFFBQVFaLGdCQUFnQmEsTUFBTSxDQUFDSiw0QkFBNEI7UUFDakVULGdCQUFnQmMsT0FBTyxDQUFDRixLQUFLLENBQUMsRUFBRTtJQUNwQyxDQUFDO0lBQ0Qs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Li4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L2Vycm9yLW92ZXJsYXkvZm9ybWF0LXdlYnBhY2stbWVzc2FnZXMuanM/MzE5OCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGZvcm1hdFdlYnBhY2tNZXNzYWdlcztcbnZhciBfZXh0ZW5kcyA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvbGliL19leHRlbmRzLmpzXCIpLmRlZmF1bHQ7XG52YXIgX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0ID0gcmVxdWlyZShcIkBzd2MvaGVscGVycy9saWIvX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0LmpzXCIpLmRlZmF1bHQ7XG52YXIgX3N0cmlwQW5zaSA9IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChyZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3N0cmlwLWFuc2lcIikpO1xuZnVuY3Rpb24gZm9ybWF0V2VicGFja01lc3NhZ2VzKGpzb24sIHZlcmJvc2UpIHtcbiAgICBjb25zdCBmb3JtYXR0ZWRFcnJvcnMgPSBqc29uLmVycm9ycy5tYXAoKG1lc3NhZ2UpPT57XG4gICAgICAgIGNvbnN0IGlzVW5rbm93bk5leHRGb250RXJyb3IgPSBtZXNzYWdlLm1lc3NhZ2UuaW5jbHVkZXMoJ0FuIGVycm9yIG9jY3VyZWQgaW4gYG5leHQvZm9udGAuJyk7XG4gICAgICAgIHJldHVybiBmb3JtYXRNZXNzYWdlKG1lc3NhZ2UsIGlzVW5rbm93bk5leHRGb250RXJyb3IgfHwgdmVyYm9zZSk7XG4gICAgfSk7XG4gICAgY29uc3QgZm9ybWF0dGVkV2FybmluZ3MgPSBqc29uLndhcm5pbmdzLm1hcCgobWVzc2FnZSk9PntcbiAgICAgICAgcmV0dXJuIGZvcm1hdE1lc3NhZ2UobWVzc2FnZSwgdmVyYm9zZSk7XG4gICAgfSk7XG4gICAgLy8gUmVvcmRlciBlcnJvcnMgdG8gcHV0IHRoZSBtb3N0IHJlbGV2YW50IG9uZXMgZmlyc3QuXG4gICAgbGV0IHJlYWN0U2VydmVyQ29tcG9uZW50c0Vycm9yID0gLTE7XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IGZvcm1hdHRlZEVycm9ycy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGNvbnN0IGVycm9yID0gZm9ybWF0dGVkRXJyb3JzW2ldO1xuICAgICAgICBpZiAoZXJyb3IuaW5jbHVkZXMoJ1JlYWN0U2VydmVyQ29tcG9uZW50c0Vycm9yJykpIHtcbiAgICAgICAgICAgIHJlYWN0U2VydmVyQ29tcG9uZW50c0Vycm9yID0gaTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIE1vdmUgdGhlIHJlYWN0U2VydmVyQ29tcG9uZW50c0Vycm9yIHRvIHRoZSB0b3AgaWYgaXQgZXhpc3RzXG4gICAgaWYgKHJlYWN0U2VydmVyQ29tcG9uZW50c0Vycm9yICE9PSAtMSkge1xuICAgICAgICBjb25zdCBlcnJvciA9IGZvcm1hdHRlZEVycm9ycy5zcGxpY2UocmVhY3RTZXJ2ZXJDb21wb25lbnRzRXJyb3IsIDEpO1xuICAgICAgICBmb3JtYXR0ZWRFcnJvcnMudW5zaGlmdChlcnJvclswXSk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IF9leHRlbmRzKHt9LCBqc29uLCB7XG4gICAgICAgIGVycm9yczogZm9ybWF0dGVkRXJyb3JzLFxuICAgICAgICB3YXJuaW5nczogZm9ybWF0dGVkV2FybmluZ3NcbiAgICB9KTtcbiAgICBpZiAoIXZlcmJvc2UgJiYgcmVzdWx0LmVycm9ycy5zb21lKGlzTGlrZWx5QVN5bnRheEVycm9yKSkge1xuICAgICAgICAvLyBJZiB0aGVyZSBhcmUgYW55IHN5bnRheCBlcnJvcnMsIHNob3cganVzdCB0aGVtLlxuICAgICAgICByZXN1bHQuZXJyb3JzID0gcmVzdWx0LmVycm9ycy5maWx0ZXIoaXNMaWtlbHlBU3ludGF4RXJyb3IpO1xuICAgICAgICByZXN1bHQud2FybmluZ3MgPSBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbi8vIFRoaXMgZmlsZSBpcyBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svY3JlYXRlLXJlYWN0LWFwcC9ibG9iLzdiMWEzMmJlNmVjOWY5OWE2YzlhM2M2NjgxM2YzYWMwOWM0NzM2YjkvcGFja2FnZXMvcmVhY3QtZGV2LXV0aWxzL2Zvcm1hdFdlYnBhY2tNZXNzYWdlcy5qc1xuLy8gSXQncyBiZWVuIGVkaXRlZCB0byByZW1vdmUgY2hhbGsgYW5kIENSQS1zcGVjaWZpYyBsb2dpY1xuY29uc3QgZnJpZW5kbHlTeW50YXhFcnJvckxhYmVsID0gJ1N5bnRheCBlcnJvcjonO1xuY29uc3QgV0VCUEFDS19CUkVBS0lOR19DSEFOR0VfUE9MWUZJTExTID0gJ1xcblxcbkJSRUFLSU5HIENIQU5HRTogd2VicGFjayA8IDUgdXNlZCB0byBpbmNsdWRlIHBvbHlmaWxscyBmb3Igbm9kZS5qcyBjb3JlIG1vZHVsZXMgYnkgZGVmYXVsdC4nO1xuZnVuY3Rpb24gaXNMaWtlbHlBU3ludGF4RXJyb3IobWVzc2FnZSkge1xuICAgIHJldHVybiAoMCwgX3N0cmlwQW5zaSkuZGVmYXVsdChtZXNzYWdlKS5pbmRleE9mKGZyaWVuZGx5U3ludGF4RXJyb3JMYWJlbCkgIT09IC0xO1xufVxubGV0IGhhZE1pc3NpbmdTYXNzRXJyb3IgPSBmYWxzZTtcbi8vIENsZWFucyB1cCB3ZWJwYWNrIGVycm9yIG1lc3NhZ2VzLlxuZnVuY3Rpb24gZm9ybWF0TWVzc2FnZShtZXNzYWdlLCB2ZXJib3NlLCBpbXBvcnRUcmFjZU5vdGUpIHtcbiAgICAvLyBUT0RPOiBSZXBsYWNlIHRoaXMgb25jZSB3ZWJwYWNrIDUgaXMgc3RhYmxlXG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSAnb2JqZWN0JyAmJiBtZXNzYWdlLm1lc3NhZ2UpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRNb2R1bGVUcmFjZSA9IG1lc3NhZ2UubW9kdWxlVHJhY2UgJiYgbWVzc2FnZS5tb2R1bGVUcmFjZS5maWx0ZXIoKHRyYWNlKT0+IS9uZXh0LShtaWRkbGV3YXJlfGNsaWVudC1wYWdlc3xlZGdlLWZ1bmN0aW9uKS1sb2FkZXJcXC5qcy8udGVzdCh0cmFjZS5vcmlnaW5OYW1lKSk7XG4gICAgICAgIGxldCBib2R5ID0gbWVzc2FnZS5tZXNzYWdlO1xuICAgICAgICBjb25zdCBicmVha2luZ0NoYW5nZUluZGV4ID0gYm9keS5pbmRleE9mKFdFQlBBQ0tfQlJFQUtJTkdfQ0hBTkdFX1BPTFlGSUxMUyk7XG4gICAgICAgIGlmIChicmVha2luZ0NoYW5nZUluZGV4ID49IDApIHtcbiAgICAgICAgICAgIGJvZHkgPSBib2R5LnNsaWNlKDAsIGJyZWFraW5nQ2hhbmdlSW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIG1lc3NhZ2UgPSAobWVzc2FnZS5tb2R1bGVOYW1lID8gKDAsIF9zdHJpcEFuc2kpLmRlZmF1bHQobWVzc2FnZS5tb2R1bGVOYW1lKSArICdcXG4nIDogJycpICsgKG1lc3NhZ2UuZmlsZSA/ICgwLCBfc3RyaXBBbnNpKS5kZWZhdWx0KG1lc3NhZ2UuZmlsZSkgKyAnXFxuJyA6ICcnKSArIGJvZHkgKyAobWVzc2FnZS5kZXRhaWxzICYmIHZlcmJvc2UgPyAnXFxuJyArIG1lc3NhZ2UuZGV0YWlscyA6ICcnKSArIChmaWx0ZXJlZE1vZHVsZVRyYWNlICYmIGZpbHRlcmVkTW9kdWxlVHJhY2UubGVuZ3RoID8gKGltcG9ydFRyYWNlTm90ZSB8fCAnXFxuXFxuSW1wb3J0IHRyYWNlIGZvciByZXF1ZXN0ZWQgbW9kdWxlOicpICsgZmlsdGVyZWRNb2R1bGVUcmFjZS5tYXAoKHRyYWNlKT0+YFxcbiR7dHJhY2UubW9kdWxlTmFtZX1gKS5qb2luKCcnKSA6ICcnKSArIChtZXNzYWdlLnN0YWNrICYmIHZlcmJvc2UgPyAnXFxuJyArIG1lc3NhZ2Uuc3RhY2sgOiAnJyk7XG4gICAgfVxuICAgIGxldCBsaW5lcyA9IG1lc3NhZ2Uuc3BsaXQoJ1xcbicpO1xuICAgIC8vIFN0cmlwIFdlYnBhY2stYWRkZWQgaGVhZGVycyBvZmYgZXJyb3JzL3dhcm5pbmdzXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2svd2VicGFjay9ibG9iL21hc3Rlci9saWIvTW9kdWxlRXJyb3IuanNcbiAgICBsaW5lcyA9IGxpbmVzLmZpbHRlcigobGluZSk9PiEvTW9kdWxlIFtBLXogXStcXChmcm9tLy50ZXN0KGxpbmUpKTtcbiAgICAvLyBUcmFuc2Zvcm0gcGFyc2luZyBlcnJvciBpbnRvIHN5bnRheCBlcnJvclxuICAgIC8vIFRPRE86IG1vdmUgdGhpcyB0byBvdXIgRVNMaW50IGZvcm1hdHRlcj9cbiAgICBsaW5lcyA9IGxpbmVzLm1hcCgobGluZSk9PntcbiAgICAgICAgY29uc3QgcGFyc2luZ0Vycm9yID0gL0xpbmUgKFxcZCspOig/OihcXGQrKTopP1xccypQYXJzaW5nIGVycm9yOiAoLispJC8uZXhlYyhsaW5lKTtcbiAgICAgICAgaWYgKCFwYXJzaW5nRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBsaW5lO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFssIGVycm9yTGluZSwgZXJyb3JDb2x1bW4sIGVycm9yTWVzc2FnZV0gPSBwYXJzaW5nRXJyb3I7XG4gICAgICAgIHJldHVybiBgJHtmcmllbmRseVN5bnRheEVycm9yTGFiZWx9ICR7ZXJyb3JNZXNzYWdlfSAoJHtlcnJvckxpbmV9OiR7ZXJyb3JDb2x1bW59KWA7XG4gICAgfSk7XG4gICAgbWVzc2FnZSA9IGxpbmVzLmpvaW4oJ1xcbicpO1xuICAgIC8vIFNtb29zaCBzeW50YXggZXJyb3JzIChjb21tb25seSBmb3VuZCBpbiBDU1MpXG4gICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgvU3ludGF4RXJyb3JcXHMrXFwoKFxcZCspOihcXGQrKVxcKVxccyooLis/KVxcbi9nLCBgJHtmcmllbmRseVN5bnRheEVycm9yTGFiZWx9ICQzICgkMTokMilcXG5gKTtcbiAgICAvLyBDbGVhbiB1cCBleHBvcnQgZXJyb3JzXG4gICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgvXi4qZXhwb3J0ICcoLis/KScgd2FzIG5vdCBmb3VuZCBpbiAnKC4rPyknLiokL2dtLCBgQXR0ZW1wdGVkIGltcG9ydCBlcnJvcjogJyQxJyBpcyBub3QgZXhwb3J0ZWQgZnJvbSAnJDInLmApO1xuICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoL14uKmV4cG9ydCAnZGVmYXVsdCcgXFwoaW1wb3J0ZWQgYXMgJyguKz8pJ1xcKSB3YXMgbm90IGZvdW5kIGluICcoLis/KScuKiQvZ20sIGBBdHRlbXB0ZWQgaW1wb3J0IGVycm9yOiAnJDInIGRvZXMgbm90IGNvbnRhaW4gYSBkZWZhdWx0IGV4cG9ydCAoaW1wb3J0ZWQgYXMgJyQxJykuYCk7XG4gICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgvXi4qZXhwb3J0ICcoLis/KScgXFwoaW1wb3J0ZWQgYXMgJyguKz8pJ1xcKSB3YXMgbm90IGZvdW5kIGluICcoLis/KScuKiQvZ20sIGBBdHRlbXB0ZWQgaW1wb3J0IGVycm9yOiAnJDEnIGlzIG5vdCBleHBvcnRlZCBmcm9tICckMycgKGltcG9ydGVkIGFzICckMicpLmApO1xuICAgIGxpbmVzID0gbWVzc2FnZS5zcGxpdCgnXFxuJyk7XG4gICAgLy8gUmVtb3ZlIGxlYWRpbmcgbmV3bGluZVxuICAgIGlmIChsaW5lcy5sZW5ndGggPiAyICYmIGxpbmVzWzFdLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgbGluZXMuc3BsaWNlKDEsIDEpO1xuICAgIH1cbiAgICAvLyBDbGVhbnMgdXAgdmVyYm9zZSBcIm1vZHVsZSBub3QgZm91bmRcIiBtZXNzYWdlcyBmb3IgZmlsZXMgYW5kIHBhY2thZ2VzLlxuICAgIGlmIChsaW5lc1sxXSAmJiBsaW5lc1sxXS5pbmRleE9mKCdNb2R1bGUgbm90IGZvdW5kOiAnKSA9PT0gMCkge1xuICAgICAgICBsaW5lcyA9IFtcbiAgICAgICAgICAgIGxpbmVzWzBdLFxuICAgICAgICAgICAgbGluZXNbMV0ucmVwbGFjZSgnRXJyb3I6ICcsICcnKS5yZXBsYWNlKCdNb2R1bGUgbm90IGZvdW5kOiBDYW5ub3QgZmluZCBmaWxlOicsICdDYW5ub3QgZmluZCBmaWxlOicpLFxuICAgICAgICAgICAgLi4ubGluZXMuc2xpY2UoMiksIFxuICAgICAgICBdO1xuICAgIH1cbiAgICAvLyBBZGQgaGVscGZ1bCBtZXNzYWdlIGZvciB1c2VycyB0cnlpbmcgdG8gdXNlIFNhc3MgZm9yIHRoZSBmaXJzdCB0aW1lXG4gICAgaWYgKGxpbmVzWzFdICYmIGxpbmVzWzFdLm1hdGNoKC9DYW5ub3QgZmluZCBtb2R1bGUuK3Nhc3MvKSkge1xuICAgICAgICAvLyAuL2ZpbGUubW9kdWxlLnNjc3MgKDw8bG9hZGVyIGluZm8+PikgPT4gLi9maWxlLm1vZHVsZS5zY3NzXG4gICAgICAgIGNvbnN0IGZpcnN0TGluZSA9IGxpbmVzWzBdLnNwbGl0KCchJyk7XG4gICAgICAgIGxpbmVzWzBdID0gZmlyc3RMaW5lW2ZpcnN0TGluZS5sZW5ndGggLSAxXTtcbiAgICAgICAgbGluZXNbMV0gPSBcIlRvIHVzZSBOZXh0LmpzJyBidWlsdC1pbiBTYXNzIHN1cHBvcnQsIHlvdSBmaXJzdCBuZWVkIHRvIGluc3RhbGwgYHNhc3NgLlxcblwiO1xuICAgICAgICBsaW5lc1sxXSArPSAnUnVuIGBucG0gaSBzYXNzYCBvciBgeWFybiBhZGQgc2Fzc2AgaW5zaWRlIHlvdXIgd29ya3NwYWNlLlxcbic7XG4gICAgICAgIGxpbmVzWzFdICs9ICdcXG5MZWFybiBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9pbnN0YWxsLXNhc3MnO1xuICAgICAgICAvLyBkaXNwb3NlIG9mIHVuaGVscGZ1bCBzdGFjayB0cmFjZVxuICAgICAgICBsaW5lcyA9IGxpbmVzLnNsaWNlKDAsIDIpO1xuICAgICAgICBoYWRNaXNzaW5nU2Fzc0Vycm9yID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGhhZE1pc3NpbmdTYXNzRXJyb3IgJiYgbWVzc2FnZS5tYXRjaCgvKHNhc3MtbG9hZGVyfHJlc29sdmUtdXJsLWxvYWRlcjogQ1NTIGVycm9yKS8pKSB7XG4gICAgICAgIC8vIGRpc3Bvc2Ugb2YgdW5oZWxwZnVsIHN0YWNrIHRyYWNlIGZvbGxvd2luZyBtaXNzaW5nIHNhc3MgbW9kdWxlXG4gICAgICAgIGxpbmVzID0gW107XG4gICAgfVxuICAgIGlmICghdmVyYm9zZSkge1xuICAgICAgICBtZXNzYWdlID0gbGluZXMuam9pbignXFxuJyk7XG4gICAgICAgIC8vIEludGVybmFsIHN0YWNrcyBhcmUgZ2VuZXJhbGx5IHVzZWxlc3Mgc28gd2Ugc3RyaXAgdGhlbS4uLiB3aXRoIHRoZVxuICAgICAgICAvLyBleGNlcHRpb24gb2Ygc3RhY2tzIGNvbnRhaW5pbmcgYHdlYnBhY2s6YCBiZWNhdXNlIHRoZXkncmUgbm9ybWFsbHlcbiAgICAgICAgLy8gZnJvbSB1c2VyIGNvZGUgZ2VuZXJhdGVkIGJ5IFdlYnBhY2suIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZVxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svY3JlYXRlLXJlYWN0LWFwcC9wdWxsLzEwNTBcbiAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgvXlxccyphdFxccygoPyF3ZWJwYWNrOikuKSo6XFxkKzpcXGQrW1xccyldKihcXG58JCkvZ20sICcnKSAvLyBhdCAuLi4gLi4uOng6eVxuICAgICAgICA7XG4gICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoL15cXHMqYXRcXHM8YW5vbnltb3VzPihcXG58JCkvZ20sICcnKSAvLyBhdCA8YW5vbnltb3VzPlxuICAgICAgICA7XG4gICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoL0ZpbGUgd2FzIHByb2Nlc3NlZCB3aXRoIHRoZXNlIGxvYWRlcnM6XFxuKC4rW1xcXFwvXShuZXh0W1xcXFwvXWRpc3RbXFxcXC9dLit8QG5leHRbXFxcXC9dcmVhY3QtcmVmcmVzaC11dGlsc1tcXFxcL11sb2FkZXIpXFwuanNcXG4pKllvdSBtYXkgbmVlZCBhbiBhZGRpdGlvbmFsIGxvYWRlciB0byBoYW5kbGUgdGhlIHJlc3VsdCBvZiB0aGVzZSBsb2FkZXJzLlxcbi9nLCAnJyk7XG4gICAgICAgIGxpbmVzID0gbWVzc2FnZS5zcGxpdCgnXFxuJyk7XG4gICAgfVxuICAgIC8vIFJlbW92ZSBkdXBsaWNhdGVkIG5ld2xpbmVzXG4gICAgbGluZXMgPSBsaW5lcy5maWx0ZXIoKGxpbmUsIGluZGV4LCBhcnIpPT5pbmRleCA9PT0gMCB8fCBsaW5lLnRyaW0oKSAhPT0gJycgfHwgbGluZS50cmltKCkgIT09IGFycltpbmRleCAtIDFdLnRyaW0oKSk7XG4gICAgLy8gUmVhc3NlbWJsZSB0aGUgbWVzc2FnZVxuICAgIG1lc3NhZ2UgPSBsaW5lcy5qb2luKCdcXG4nKTtcbiAgICByZXR1cm4gbWVzc2FnZS50cmltKCk7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZvcm1hdC13ZWJwYWNrLW1lc3NhZ2VzLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImRlZmF1bHQiLCJmb3JtYXRXZWJwYWNrTWVzc2FnZXMiLCJfZXh0ZW5kcyIsInJlcXVpcmUiLCJfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQiLCJfc3RyaXBBbnNpIiwianNvbiIsInZlcmJvc2UiLCJmb3JtYXR0ZWRFcnJvcnMiLCJlcnJvcnMiLCJtYXAiLCJtZXNzYWdlIiwiaXNVbmtub3duTmV4dEZvbnRFcnJvciIsImluY2x1ZGVzIiwiZm9ybWF0TWVzc2FnZSIsImZvcm1hdHRlZFdhcm5pbmdzIiwid2FybmluZ3MiLCJyZWFjdFNlcnZlckNvbXBvbmVudHNFcnJvciIsImkiLCJsZW5ndGgiLCJlcnJvciIsInNwbGljZSIsInVuc2hpZnQiLCJyZXN1bHQiLCJzb21lIiwiaXNMaWtlbHlBU3ludGF4RXJyb3IiLCJmaWx0ZXIiLCJmcmllbmRseVN5bnRheEVycm9yTGFiZWwiLCJXRUJQQUNLX0JSRUFLSU5HX0NIQU5HRV9QT0xZRklMTFMiLCJpbmRleE9mIiwiaGFkTWlzc2luZ1Nhc3NFcnJvciIsImltcG9ydFRyYWNlTm90ZSIsImZpbHRlcmVkTW9kdWxlVHJhY2UiLCJtb2R1bGVUcmFjZSIsInRyYWNlIiwidGVzdCIsIm9yaWdpbk5hbWUiLCJib2R5IiwiYnJlYWtpbmdDaGFuZ2VJbmRleCIsInNsaWNlIiwibW9kdWxlTmFtZSIsImZpbGUiLCJkZXRhaWxzIiwiam9pbiIsInN0YWNrIiwibGluZXMiLCJzcGxpdCIsImxpbmUiLCJwYXJzaW5nRXJyb3IiLCJleGVjIiwiZXJyb3JMaW5lIiwiZXJyb3JDb2x1bW4iLCJlcnJvck1lc3NhZ2UiLCJyZXBsYWNlIiwidHJpbSIsIm1hdGNoIiwiZmlyc3RMaW5lIiwiaW5kZXgiLCJhcnIiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/client/dev/error-overlay/format-webpack-messages.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/dev/error-overlay/hot-dev-client.js": /*!*******************************************************************************!*\ !*** ../../node_modules/next/dist/client/dev/error-overlay/hot-dev-client.js ***! \*******************************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = connect;\nvar _interop_require_default = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _client = __webpack_require__(/*! next/dist/compiled/@next/react-dev-overlay/dist/client */ \"../../node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js\");\nvar _stripAnsi = _interop_require_default(__webpack_require__(/*! next/dist/compiled/strip-ansi */ \"../../node_modules/next/dist/compiled/strip-ansi/index.js\"));\nvar _websocket = __webpack_require__(/*! ./websocket */ \"../../node_modules/next/dist/client/dev/error-overlay/websocket.js\");\nvar _formatWebpackMessages = _interop_require_default(__webpack_require__(/*! ./format-webpack-messages */ \"../../node_modules/next/dist/client/dev/error-overlay/format-webpack-messages.js\"));\nfunction connect() {\n (0, _client).register();\n (0, _websocket).addMessageListener((event)=>{\n if (event.data.indexOf(\"action\") === -1) return;\n try {\n processMessage(event);\n } catch (ex) {\n console.warn(\"Invalid HMR message: \" + event.data + \"\\n\", ex);\n }\n });\n return {\n subscribeToHmrEvent (handler) {\n customHmrEventHandler = handler;\n },\n onUnrecoverableError () {\n hadRuntimeError = true;\n }\n };\n}\nwindow.__nextDevClientId = Math.round(Math.random() * 100 + Date.now());\nlet hadRuntimeError = false;\nlet customHmrEventHandler;\n// Remember some state related to hot module replacement.\nvar isFirstCompilation = true;\nvar mostRecentCompilationHash = null;\nvar hasCompileErrors = false;\nfunction clearOutdatedErrors() {\n // Clean up outdated compile errors, if any.\n if (typeof console !== \"undefined\" && typeof console.clear === \"function\") {\n if (hasCompileErrors) {\n console.clear();\n }\n }\n}\n// Successful compilation.\nfunction handleSuccess() {\n clearOutdatedErrors();\n const isHotUpdate = !isFirstCompilation || window.__NEXT_DATA__.page !== \"/_error\" && isUpdateAvailable();\n isFirstCompilation = false;\n hasCompileErrors = false;\n // Attempt to apply hot updates or reload.\n if (isHotUpdate) {\n tryApplyUpdates(onBeforeFastRefresh, onFastRefresh);\n }\n}\n// Compilation with warnings (e.g. ESLint).\nfunction handleWarnings(warnings) {\n clearOutdatedErrors();\n const isHotUpdate = !isFirstCompilation;\n isFirstCompilation = false;\n hasCompileErrors = false;\n function printWarnings() {\n // Print warnings to the console.\n const formatted = (0, _formatWebpackMessages).default({\n warnings: warnings,\n errors: []\n });\n if (typeof console !== \"undefined\" && typeof console.warn === \"function\") {\n var ref;\n for(let i = 0; i < ((ref = formatted.warnings) == null ? void 0 : ref.length); i++){\n if (i === 5) {\n console.warn(\"There were more warnings in other files.\\n\" + \"You can find a complete log in the terminal.\");\n break;\n }\n console.warn((0, _stripAnsi).default(formatted.warnings[i]));\n }\n }\n }\n printWarnings();\n // Attempt to apply hot updates or reload.\n if (isHotUpdate) {\n tryApplyUpdates(onBeforeFastRefresh, onFastRefresh);\n }\n}\n// Compilation with errors (e.g. syntax error or missing modules).\nfunction handleErrors(errors) {\n clearOutdatedErrors();\n isFirstCompilation = false;\n hasCompileErrors = true;\n // \"Massage\" webpack messages.\n var formatted = (0, _formatWebpackMessages).default({\n errors: errors,\n warnings: []\n });\n // Only show the first error.\n (0, _client).onBuildError(formatted.errors[0]);\n // Also log them to the console.\n if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n for(var i = 0; i < formatted.errors.length; i++){\n console.error((0, _stripAnsi).default(formatted.errors[i]));\n }\n }\n // Do not attempt to reload now.\n // We will reload on next success instead.\n if (false) {}\n}\nlet startLatency = undefined;\nfunction onBeforeFastRefresh(hasUpdates) {\n if (hasUpdates) {\n // Only trigger a pending state if we have updates to apply\n // (cf. onFastRefresh)\n (0, _client).onBeforeRefresh();\n }\n}\nfunction onFastRefresh(hasUpdates) {\n (0, _client).onBuildOk();\n if (hasUpdates) {\n // Only complete a pending state if we applied updates\n // (cf. onBeforeFastRefresh)\n (0, _client).onRefresh();\n }\n if (startLatency) {\n const endLatency = Date.now();\n const latency = endLatency - startLatency;\n console.log(\"[Fast Refresh] done in \".concat(latency, \"ms\"));\n (0, _websocket).sendMessage(JSON.stringify({\n event: \"client-hmr-latency\",\n id: window.__nextDevClientId,\n startTime: startLatency,\n endTime: endLatency\n }));\n if (self.__NEXT_HMR_LATENCY_CB) {\n self.__NEXT_HMR_LATENCY_CB(latency);\n }\n }\n}\n// There is a newer version of the code available.\nfunction handleAvailableHash(hash) {\n // Update last known compilation hash.\n mostRecentCompilationHash = hash;\n}\n// Handle messages from the server.\nfunction processMessage(e) {\n const obj = JSON.parse(e.data);\n switch(obj.action){\n case \"building\":\n {\n startLatency = Date.now();\n console.log(\"[Fast Refresh] rebuilding\");\n break;\n }\n case \"built\":\n case \"sync\":\n {\n if (obj.hash) {\n handleAvailableHash(obj.hash);\n }\n const { errors , warnings } = obj;\n const hasErrors = Boolean(errors && errors.length);\n if (hasErrors) {\n (0, _websocket).sendMessage(JSON.stringify({\n event: \"client-error\",\n errorCount: errors.length,\n clientId: window.__nextDevClientId\n }));\n return handleErrors(errors);\n }\n const hasWarnings = Boolean(warnings && warnings.length);\n if (hasWarnings) {\n (0, _websocket).sendMessage(JSON.stringify({\n event: \"client-warning\",\n warningCount: warnings.length,\n clientId: window.__nextDevClientId\n }));\n return handleWarnings(warnings);\n }\n (0, _websocket).sendMessage(JSON.stringify({\n event: \"client-success\",\n clientId: window.__nextDevClientId\n }));\n return handleSuccess();\n }\n case \"serverComponentChanges\":\n {\n // Server component changes don't apply to `pages`.\n // TODO-APP: Remove reload once the correct overlay is rendered on initial page load in app dir\n window.location.reload();\n return;\n }\n default:\n {\n if (customHmrEventHandler) {\n customHmrEventHandler(obj);\n break;\n }\n break;\n }\n }\n}\n// Is there a newer version of this code available?\nfunction isUpdateAvailable() {\n /* globals __webpack_hash__ */ // __webpack_hash__ is the hash of the current compilation.\n // It's a global variable injected by Webpack.\n return mostRecentCompilationHash !== __webpack_require__.h();\n}\n// Webpack disallows updates in other states.\nfunction canApplyUpdates() {\n // @ts-expect-error TODO: module.hot exists but type needs to be added. Can't use `as any` here as webpack parses for `module.hot` calls.\n return module.hot.status() === \"idle\";\n}\nfunction afterApplyUpdates(fn) {\n if (canApplyUpdates()) {\n fn();\n } else {\n function handler(status) {\n if (status === \"idle\") {\n // @ts-expect-error TODO: module.hot exists but type needs to be added. Can't use `as any` here as webpack parses for `module.hot` calls.\n module.hot.removeStatusHandler(handler);\n fn();\n }\n }\n // @ts-expect-error TODO: module.hot exists but type needs to be added. Can't use `as any` here as webpack parses for `module.hot` calls.\n module.hot.addStatusHandler(handler);\n }\n}\n// Attempt to update code on the fly, fall back to a hard reload.\nfunction tryApplyUpdates(onBeforeHotUpdate, onHotUpdateSuccess) {\n // @ts-expect-error TODO: module.hot exists but type needs to be added. Can't use `as any` here as webpack parses for `module.hot` calls.\n if (false) {}\n if (!isUpdateAvailable() || !canApplyUpdates()) {\n (0, _client).onBuildOk();\n return;\n }\n function handleApplyUpdates(err, updatedModules) {\n if (err || hadRuntimeError || !updatedModules) {\n if (err) {\n console.warn(\"[Fast Refresh] performing full reload\\n\\n\" + \"Fast Refresh will perform a full reload when you edit a file that's imported by modules outside of the React rendering tree.\\n\" + \"You might have a file which exports a React component but also exports a value that is imported by a non-React component file.\\n\" + \"Consider migrating the non-React component export to a separate file and importing it into both files.\\n\\n\" + \"It is also possible the parent component of the component you edited is a class component, which disables Fast Refresh.\\n\" + \"Fast Refresh requires at least one parent function component in your React tree.\");\n } else if (hadRuntimeError) {\n console.warn(\"[Fast Refresh] performing full reload because your application had an unrecoverable error\");\n }\n performFullReload(err);\n return;\n }\n const hasUpdates = Boolean(updatedModules.length);\n if (typeof onHotUpdateSuccess === \"function\") {\n // Maybe we want to do something.\n onHotUpdateSuccess(hasUpdates);\n }\n if (isUpdateAvailable()) {\n // While we were updating, there was a new update! Do it again.\n // However, this time, don't trigger a pending refresh state.\n tryApplyUpdates(hasUpdates ? undefined : onBeforeHotUpdate, hasUpdates ? _client.onBuildOk : onHotUpdateSuccess);\n } else {\n (0, _client).onBuildOk();\n if (false) {}\n }\n }\n // https://webpack.js.org/api/hot-module-replacement/#check\n // @ts-expect-error TODO: module.hot exists but type needs to be added. Can't use `as any` here as webpack parses for `module.hot` calls.\n module.hot.check(/* autoApply */ false).then((updatedModules)=>{\n if (!updatedModules) {\n return null;\n }\n if (typeof onBeforeHotUpdate === \"function\") {\n const hasUpdates = Boolean(updatedModules.length);\n onBeforeHotUpdate(hasUpdates);\n }\n // @ts-expect-error TODO: module.hot exists but type needs to be added. Can't use `as any` here as webpack parses for `module.hot` calls.\n return module.hot.apply();\n }).then((updatedModules)=>{\n handleApplyUpdates(null, updatedModules);\n }, (err)=>{\n handleApplyUpdates(err, null);\n });\n}\nfunction performFullReload(err) {\n const stackTrace = err && (err.stack && err.stack.split(\"\\n\").slice(0, 5).join(\"\\n\") || err.message || err + \"\");\n (0, _websocket).sendMessage(JSON.stringify({\n event: \"client-full-reload\",\n stackTrace,\n hadRuntimeError: !!hadRuntimeError\n }));\n window.location.reload();\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=hot-dev-client.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L2Vycm9yLW92ZXJsYXkvaG90LWRldi1jbGllbnQuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPLElBQUk7QUFDZixDQUFDLEVBQUM7QUFDRkQsa0JBQWUsR0FBR0c7QUFDbEIsSUFBSUMsMkJBQTJCQyx1SkFBK0Q7QUFDOUYsSUFBSUMsVUFBVUQsbUJBQU9BLENBQUMsNElBQXdEO0FBQzlFLElBQUlFLGFBQWFILHlCQUF5QkMsbUJBQU9BLENBQUMsZ0dBQStCO0FBQ2pGLElBQUlHLGFBQWFILG1CQUFPQSxDQUFDLHVGQUFhO0FBQ3RDLElBQUlJLHlCQUF5QkwseUJBQXlCQyxtQkFBT0EsQ0FBQyxtSEFBMkI7QUFDekYsU0FBU0YsVUFBVTtJQUNkLElBQUdHLE9BQU8sRUFBRUksUUFBUTtJQUNwQixJQUFHRixVQUFVLEVBQUVHLGtCQUFrQixDQUFDLENBQUNDLFFBQVE7UUFDeEMsSUFBSUEsTUFBTUMsSUFBSSxDQUFDQyxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUc7UUFDekMsSUFBSTtZQUNBQyxlQUFlSDtRQUNuQixFQUFFLE9BQU9JLElBQUk7WUFDVEMsUUFBUUMsSUFBSSxDQUFDLDBCQUEwQk4sTUFBTUMsSUFBSSxHQUFHLE1BQU1HO1FBQzlEO0lBQ0o7SUFDQSxPQUFPO1FBQ0hHLHFCQUFxQkMsT0FBTyxFQUFFO1lBQzFCQyx3QkFBd0JEO1FBQzVCO1FBQ0FFLHdCQUF3QjtZQUNwQkMsa0JBQWtCLElBQUk7UUFDMUI7SUFDSjtBQUNKO0FBQ0FDLE9BQU9DLGlCQUFpQixHQUFHQyxLQUFLQyxLQUFLLENBQUNELEtBQUtFLE1BQU0sS0FBSyxNQUFNQyxLQUFLQyxHQUFHO0FBQ3BFLElBQUlQLGtCQUFrQixLQUFLO0FBQzNCLElBQUlGO0FBQ0oseURBQXlEO0FBQ3pELElBQUlVLHFCQUFxQixJQUFJO0FBQzdCLElBQUlDLDRCQUE0QixJQUFJO0FBQ3BD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LE9BQU8sSUFBSTtJQUFDO0lBQ25FSCxPQUFPcUgsTUFBTSxDQUFDbkgsUUFBUUUsT0FBTyxFQUFFRjtJQUMvQjRGLE9BQU81RixPQUFPLEdBQUdBLFFBQVFFLE9BQU87QUFDbEMsQ0FBQyxDQUVELDBDQUEwQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L2Vycm9yLW92ZXJsYXkvaG90LWRldi1jbGllbnQuanM/Yjk4MCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGNvbm5lY3Q7XG52YXIgX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0ID0gcmVxdWlyZShcIkBzd2MvaGVscGVycy9saWIvX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0LmpzXCIpLmRlZmF1bHQ7XG52YXIgX2NsaWVudCA9IHJlcXVpcmUoXCJuZXh0L2Rpc3QvY29tcGlsZWQvQG5leHQvcmVhY3QtZGV2LW92ZXJsYXkvZGlzdC9jbGllbnRcIik7XG52YXIgX3N0cmlwQW5zaSA9IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChyZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3N0cmlwLWFuc2lcIikpO1xudmFyIF93ZWJzb2NrZXQgPSByZXF1aXJlKFwiLi93ZWJzb2NrZXRcIik7XG52YXIgX2Zvcm1hdFdlYnBhY2tNZXNzYWdlcyA9IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChyZXF1aXJlKFwiLi9mb3JtYXQtd2VicGFjay1tZXNzYWdlc1wiKSk7XG5mdW5jdGlvbiBjb25uZWN0KCkge1xuICAgICgwLCBfY2xpZW50KS5yZWdpc3RlcigpO1xuICAgICgwLCBfd2Vic29ja2V0KS5hZGRNZXNzYWdlTGlzdGVuZXIoKGV2ZW50KT0+e1xuICAgICAgICBpZiAoZXZlbnQuZGF0YS5pbmRleE9mKCdhY3Rpb24nKSA9PT0gLTEpIHJldHVybjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHByb2Nlc3NNZXNzYWdlKGV2ZW50KTtcbiAgICAgICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignSW52YWxpZCBITVIgbWVzc2FnZTogJyArIGV2ZW50LmRhdGEgKyAnXFxuJywgZXgpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3Vic2NyaWJlVG9IbXJFdmVudCAoaGFuZGxlcikge1xuICAgICAgICAgICAgY3VzdG9tSG1yRXZlbnRIYW5kbGVyID0gaGFuZGxlcjtcbiAgICAgICAgfSxcbiAgICAgICAgb25VbnJlY292ZXJhYmxlRXJyb3IgKCkge1xuICAgICAgICAgICAgaGFkUnVudGltZUVycm9yID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH07XG59XG53aW5kb3cuX19uZXh0RGV2Q2xpZW50SWQgPSBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAxMDAgKyBEYXRlLm5vdygpKTtcbmxldCBoYWRSdW50aW1lRXJyb3IgPSBmYWxzZTtcbmxldCBjdXN0b21IbXJFdmVudEhhbmRsZXI7XG4vLyBSZW1lbWJlciBzb21lIHN0YXRlIHJlbGF0ZWQgdG8gaG90IG1vZHVsZSByZXBsYWNlbWVudC5cbnZhciBpc0ZpcnN0Q29tcGlsYXRpb24gPSB0cnVlO1xudmFyIG1vc3RSZWNlbnRDb21waWxhdGlvbkhhc2ggPSBudWxsO1xudmFyIGhhc0NvbXBpbGVFcnJvcnMgPSBmYWxzZTtcbmZ1bmN0aW9uIGNsZWFyT3V0ZGF0ZWRFcnJvcnMoKSB7XG4gICAgLy8gQ2xlYW4gdXAgb3V0ZGF0ZWQgY29tcGlsZSBlcnJvcnMsIGlmIGFueS5cbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb25zb2xlLmNsZWFyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGlmIChoYXNDb21waWxlRXJyb3JzKSB7XG4gICAgICAgICAgICBjb25zb2xlLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyBTdWNjZXNzZnVsIGNvbXBpbGF0aW9uLlxuZnVuY3Rpb24gaGFuZGxlU3VjY2VzcygpIHtcbiAgICBjbGVhck91dGRhdGVkRXJyb3JzKCk7XG4gICAgY29uc3QgaXNIb3RVcGRhdGUgPSAhaXNGaXJzdENvbXBpbGF0aW9uIHx8IHdpbmRvdy5fX05FWFRfREFUQV9fLnBhZ2UgIT09ICcvX2Vycm9yJyAmJiBpc1VwZGF0ZUF2YWlsYWJsZSgpO1xuICAgIGlzRmlyc3RDb21waWxhdGlvbiA9IGZhbHNlO1xuICAgIGhhc0NvbXBpbGVFcnJvcnMgPSBmYWxzZTtcbiAgICAvLyBBdHRlbXB0IHRvIGFwcGx5IGhvdCB1cGRhdGVzIG9yIHJlbG9hZC5cbiAgICBpZiAoaXNIb3RVcGRhdGUpIHtcbiAgICAgICAgdHJ5QXBwbHlVcGRhdGVzKG9uQmVmb3JlRmFzdFJlZnJlc2gsIG9uRmFzdFJlZnJlc2gpO1xuICAgIH1cbn1cbi8vIENvbXBpbGF0aW9uIHdpdGggd2FybmluZ3MgKGUuZy4gRVNMaW50KS5cbmZ1bmN0aW9uIGhhbmRsZVdhcm5pbmdzKHdhcm5pbmdzKSB7XG4gICAgY2xlYXJPdXRkYXRlZEVycm9ycygpO1xuICAgIGNvbnN0IGlzSG90VXBkYXRlID0gIWlzRmlyc3RDb21waWxhdGlvbjtcbiAgICBpc0ZpcnN0Q29tcGlsYXRpb24gPSBmYWxzZTtcbiAgICBoYXNDb21waWxlRXJyb3JzID0gZmFsc2U7XG4gICAgZnVuY3Rpb24gcHJpbnRXYXJuaW5ncygpIHtcbiAgICAgICAgLy8gUHJpbnQgd2FybmluZ3MgdG8gdGhlIGNvbnNvbGUuXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9ICgwLCBfZm9ybWF0V2VicGFja01lc3NhZ2VzKS5kZWZhdWx0KHtcbiAgICAgICAgICAgIHdhcm5pbmdzOiB3YXJuaW5ncyxcbiAgICAgICAgICAgIGVycm9yczogW11cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGNvbnNvbGUud2FybiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdmFyIHJlZjtcbiAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCAoKHJlZiA9IGZvcm1hdHRlZC53YXJuaW5ncykgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZi5sZW5ndGgpOyBpKyspe1xuICAgICAgICAgICAgICAgIGlmIChpID09PSA1KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignVGhlcmUgd2VyZSBtb3JlIHdhcm5pbmdzIGluIG90aGVyIGZpbGVzLlxcbicgKyAnWW91IGNhbiBmaW5kIGEgY29tcGxldGUgbG9nIGluIHRoZSB0ZXJtaW5hbC4nKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybigoMCwgX3N0cmlwQW5zaSkuZGVmYXVsdChmb3JtYXR0ZWQud2FybmluZ3NbaV0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBwcmludFdhcm5pbmdzKCk7XG4gICAgLy8gQXR0ZW1wdCB0byBhcHBseSBob3QgdXBkYXRlcyBvciByZWxvYWQuXG4gICAgaWYgKGlzSG90VXBkYXRlKSB7XG4gICAgICAgIHRyeUFwcGx5VXBkYXRlcyhvbkJlZm9yZUZhc3RSZWZyZXNoLCBvbkZhc3RSZWZyZXNoKTtcbiAgICB9XG59XG4vLyBDb21waWxhdGlvbiB3aXRoIGVycm9ycyAoZS5nLiBzeW50YXggZXJyb3Igb3IgbWlzc2luZyBtb2R1bGVzKS5cbmZ1bmN0aW9uIGhhbmRsZUVycm9ycyhlcnJvcnMpIHtcbiAgICBjbGVhck91dGRhdGVkRXJyb3JzKCk7XG4gICAgaXNGaXJzdENvbXBpbGF0aW9uID0gZmFsc2U7XG4gICAgaGFzQ29tcGlsZUVycm9ycyA9IHRydWU7XG4gICAgLy8gXCJNYXNzYWdlXCIgd2VicGFjayBtZXNzYWdlcy5cbiAgICB2YXIgZm9ybWF0dGVkID0gKDAsIF9mb3JtYXRXZWJwYWNrTWVzc2FnZXMpLmRlZmF1bHQoe1xuICAgICAgICBlcnJvcnM6IGVycm9ycyxcbiAgICAgICAgd2FybmluZ3M6IFtdXG4gICAgfSk7XG4gICAgLy8gT25seSBzaG93IHRoZSBmaXJzdCBlcnJvci5cbiAgICAoMCwgX2NsaWVudCkub25CdWlsZEVycm9yKGZvcm1hdHRlZC5lcnJvcnNbMF0pO1xuICAgIC8vIEFsc28gbG9nIHRoZW0gdG8gdGhlIGNvbnNvbGUuXG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29uc29sZS5lcnJvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgZm9ybWF0dGVkLmVycm9ycy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCgwLCBfc3RyaXBBbnNpKS5kZWZhdWx0KGZvcm1hdHRlZC5lcnJvcnNbaV0pKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBEbyBub3QgYXR0ZW1wdCB0byByZWxvYWQgbm93LlxuICAgIC8vIFdlIHdpbGwgcmVsb2FkIG9uIG5leHQgc3VjY2VzcyBpbnN0ZWFkLlxuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfVEVTVF9NT0RFKSB7XG4gICAgICAgIGlmIChzZWxmLl9fTkVYVF9ITVJfQ0IpIHtcbiAgICAgICAgICAgIHNlbGYuX19ORVhUX0hNUl9DQihmb3JtYXR0ZWQuZXJyb3JzWzBdKTtcbiAgICAgICAgICAgIHNlbGYuX19ORVhUX0hNUl9DQiA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG59XG5sZXQgc3RhcnRMYXRlbmN5ID0gdW5kZWZpbmVkO1xuZnVuY3Rpb24gb25CZWZvcmVGYXN0UmVmcmVzaChoYXNVcGRhdGVzKSB7XG4gICAgaWYgKGhhc1VwZGF0ZXMpIHtcbiAgICAgICAgLy8gT25seSB0cmlnZ2VyIGEgcGVuZGluZyBzdGF0ZSBpZiB3ZSBoYXZlIHVwZGF0ZXMgdG8gYXBwbHlcbiAgICAgICAgLy8gKGNmLiBvbkZhc3RSZWZyZXNoKVxuICAgICAgICAoMCwgX2NsaWVudCkub25CZWZvcmVSZWZyZXNoKCk7XG4gICAgfVxufVxuZnVuY3Rpb24gb25GYXN0UmVmcmVzaChoYXNVcGRhdGVzKSB7XG4gICAgKDAsIF9jbGllbnQpLm9uQnVpbGRPaygpO1xuICAgIGlmIChoYXNVcGRhdGVzKSB7XG4gICAgICAgIC8vIE9ubHkgY29tcGxldGUgYSBwZW5kaW5nIHN0YXRlIGlmIHdlIGFwcGxpZWQgdXBkYXRlc1xuICAgICAgICAvLyAoY2YuIG9uQmVmb3JlRmFzdFJlZnJlc2gpXG4gICAgICAgICgwLCBfY2xpZW50KS5vblJlZnJlc2goKTtcbiAgICB9XG4gICAgaWYgKHN0YXJ0TGF0ZW5jeSkge1xuICAgICAgICBjb25zdCBlbmRMYXRlbmN5ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgY29uc3QgbGF0ZW5jeSA9IGVuZExhdGVuY3kgLSBzdGFydExhdGVuY3k7XG4gICAgICAgIGNvbnNvbGUubG9nKGBbRmFzdCBSZWZyZXNoXSBkb25lIGluICR7bGF0ZW5jeX1tc2ApO1xuICAgICAgICAoMCwgX3dlYnNvY2tldCkuc2VuZE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgZXZlbnQ6ICdjbGllbnQtaG1yLWxhdGVuY3knLFxuICAgICAgICAgICAgaWQ6IHdpbmRvdy5fX25leHREZXZDbGllbnRJZCxcbiAgICAgICAgICAgIHN0YXJ0VGltZTogc3RhcnRMYXRlbmN5LFxuICAgICAgICAgICAgZW5kVGltZTogZW5kTGF0ZW5jeVxuICAgICAgICB9KSk7XG4gICAgICAgIGlmIChzZWxmLl9fTkVYVF9ITVJfTEFURU5DWV9DQikge1xuICAgICAgICAgICAgc2VsZi5fX05FWFRfSE1SX0xBVEVOQ1lfQ0IobGF0ZW5jeSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyBUaGVyZSBpcyBhIG5ld2VyIHZlcnNpb24gb2YgdGhlIGNvZGUgYXZhaWxhYmxlLlxuZnVuY3Rpb24gaGFuZGxlQXZhaWxhYmxlSGFzaChoYXNoKSB7XG4gICAgLy8gVXBkYXRlIGxhc3Qga25vd24gY29tcGlsYXRpb24gaGFzaC5cbiAgICBtb3N0UmVjZW50Q29tcGlsYXRpb25IYXNoID0gaGFzaDtcbn1cbi8vIEhhbmRsZSBtZXNzYWdlcyBmcm9tIHRoZSBzZXJ2ZXIuXG5mdW5jdGlvbiBwcm9jZXNzTWVzc2FnZShlKSB7XG4gICAgY29uc3Qgb2JqID0gSlNPTi5wYXJzZShlLmRhdGEpO1xuICAgIHN3aXRjaChvYmouYWN0aW9uKXtcbiAgICAgICAgY2FzZSAnYnVpbGRpbmcnOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0YXJ0TGF0ZW5jeSA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1tGYXN0IFJlZnJlc2hdIHJlYnVpbGRpbmcnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAnYnVpbHQnOlxuICAgICAgICBjYXNlICdzeW5jJzpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZiAob2JqLmhhc2gpIHtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQXZhaWxhYmxlSGFzaChvYmouaGFzaCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHsgZXJyb3JzICwgd2FybmluZ3MgIH0gPSBvYmo7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzRXJyb3JzID0gQm9vbGVhbihlcnJvcnMgJiYgZXJyb3JzLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgaWYgKGhhc0Vycm9ycykge1xuICAgICAgICAgICAgICAgICAgICAoMCwgX3dlYnNvY2tldCkuc2VuZE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ6ICdjbGllbnQtZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JDb3VudDogZXJyb3JzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudElkOiB3aW5kb3cuX19uZXh0RGV2Q2xpZW50SWRcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGhhc1dhcm5pbmdzID0gQm9vbGVhbih3YXJuaW5ncyAmJiB3YXJuaW5ncy5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIGlmIChoYXNXYXJuaW5ncykge1xuICAgICAgICAgICAgICAgICAgICAoMCwgX3dlYnNvY2tldCkuc2VuZE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ6ICdjbGllbnQtd2FybmluZycsXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nQ291bnQ6IHdhcm5pbmdzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudElkOiB3aW5kb3cuX19uZXh0RGV2Q2xpZW50SWRcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlV2FybmluZ3Mod2FybmluZ3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAoMCwgX3dlYnNvY2tldCkuc2VuZE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICBldmVudDogJ2NsaWVudC1zdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50SWQ6IHdpbmRvdy5fX25leHREZXZDbGllbnRJZFxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlU3VjY2VzcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICBjYXNlICdzZXJ2ZXJDb21wb25lbnRDaGFuZ2VzJzpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAvLyBTZXJ2ZXIgY29tcG9uZW50IGNoYW5nZXMgZG9uJ3QgYXBwbHkgdG8gYHBhZ2VzYC5cbiAgICAgICAgICAgICAgICAvLyBUT0RPLUFQUDogUmVtb3ZlIHJlbG9hZCBvbmNlIHRoZSBjb3JyZWN0IG92ZXJsYXkgaXMgcmVuZGVyZWQgb24gaW5pdGlhbCBwYWdlIGxvYWQgaW4gYXBwIGRpclxuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWYgKGN1c3RvbUhtckV2ZW50SGFuZGxlcikge1xuICAgICAgICAgICAgICAgICAgICBjdXN0b21IbXJFdmVudEhhbmRsZXIob2JqKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgIH1cbn1cbi8vIElzIHRoZXJlIGEgbmV3ZXIgdmVyc2lvbiBvZiB0aGlzIGNvZGUgYXZhaWxhYmxlP1xuZnVuY3Rpb24gaXNVcGRhdGVBdmFpbGFibGUoKSB7XG4gICAgLyogZ2xvYmFscyBfX3dlYnBhY2tfaGFzaF9fICovIC8vIF9fd2VicGFja19oYXNoX18gaXMgdGhlIGhhc2ggb2YgdGhlIGN1cnJlbnQgY29tcGlsYXRpb24uXG4gICAgLy8gSXQncyBhIGdsb2JhbCB2YXJpYWJsZSBpbmplY3RlZCBieSBXZWJwYWNrLlxuICAgIHJldHVybiBtb3N0UmVjZW50Q29tcGlsYXRpb25IYXNoICE9PSBfX3dlYnBhY2tfaGFzaF9fO1xufVxuLy8gV2VicGFjayBkaXNhbGxvd3MgdXBkYXRlcyBpbiBvdGhlciBzdGF0ZXMuXG5mdW5jdGlvbiBjYW5BcHBseVVwZGF0ZXMoKSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPOiBtb2R1bGUuaG90IGV4aXN0cyBidXQgdHlwZSBuZWVkcyB0byBiZSBhZGRlZC4gQ2FuJ3QgdXNlIGBhcyBhbnlgIGhlcmUgYXMgd2VicGFjayBwYXJzZXMgZm9yIGBtb2R1bGUuaG90YCBjYWxscy5cbiAgICByZXR1cm4gbW9kdWxlLmhvdC5zdGF0dXMoKSA9PT0gJ2lkbGUnO1xufVxuZnVuY3Rpb24gYWZ0ZXJBcHBseVVwZGF0ZXMoZm4pIHtcbiAgICBpZiAoY2FuQXBwbHlVcGRhdGVzKCkpIHtcbiAgICAgICAgZm4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmdW5jdGlvbiBoYW5kbGVyKHN0YXR1cykge1xuICAgICAgICAgICAgaWYgKHN0YXR1cyA9PT0gJ2lkbGUnKSB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPOiBtb2R1bGUuaG90IGV4aXN0cyBidXQgdHlwZSBuZWVkcyB0byBiZSBhZGRlZC4gQ2FuJ3QgdXNlIGBhcyBhbnlgIGhlcmUgYXMgd2VicGFjayBwYXJzZXMgZm9yIGBtb2R1bGUuaG90YCBjYWxscy5cbiAgICAgICAgICAgICAgICBtb2R1bGUuaG90LnJlbW92ZVN0YXR1c0hhbmRsZXIoaGFuZGxlcik7XG4gICAgICAgICAgICAgICAgZm4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE86IG1vZHVsZS5ob3QgZXhpc3RzIGJ1dCB0eXBlIG5lZWRzIHRvIGJlIGFkZGVkLiBDYW4ndCB1c2UgYGFzIGFueWAgaGVyZSBhcyB3ZWJwYWNrIHBhcnNlcyBmb3IgYG1vZHVsZS5ob3RgIGNhbGxzLlxuICAgICAgICBtb2R1bGUuaG90LmFkZFN0YXR1c0hhbmRsZXIoaGFuZGxlcik7XG4gICAgfVxufVxuLy8gQXR0ZW1wdCB0byB1cGRhdGUgY29kZSBvbiB0aGUgZmx5LCBmYWxsIGJhY2sgdG8gYSBoYXJkIHJlbG9hZC5cbmZ1bmN0aW9uIHRyeUFwcGx5VXBkYXRlcyhvbkJlZm9yZUhvdFVwZGF0ZSwgb25Ib3RVcGRhdGVTdWNjZXNzKSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPOiBtb2R1bGUuaG90IGV4aXN0cyBidXQgdHlwZSBuZWVkcyB0byBiZSBhZGRlZC4gQ2FuJ3QgdXNlIGBhcyBhbnlgIGhlcmUgYXMgd2VicGFjayBwYXJzZXMgZm9yIGBtb2R1bGUuaG90YCBjYWxscy5cbiAgICBpZiAoIW1vZHVsZS5ob3QpIHtcbiAgICAgICAgLy8gSG90TW9kdWxlUmVwbGFjZW1lbnRQbHVnaW4gaXMgbm90IGluIFdlYnBhY2sgY29uZmlndXJhdGlvbi5cbiAgICAgICAgY29uc29sZS5lcnJvcignSG90TW9kdWxlUmVwbGFjZW1lbnRQbHVnaW4gaXMgbm90IGluIFdlYnBhY2sgY29uZmlndXJhdGlvbi4nKTtcbiAgICAgICAgLy8gd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghaXNVcGRhdGVBdmFpbGFibGUoKSB8fCAhY2FuQXBwbHlVcGRhdGVzKCkpIHtcbiAgICAgICAgKDAsIF9jbGllbnQpLm9uQnVpbGRPaygpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUFwcGx5VXBkYXRlcyhlcnIsIHVwZGF0ZWRNb2R1bGVzKSB7XG4gICAgICAgIGlmIChlcnIgfHwgaGFkUnVudGltZUVycm9yIHx8ICF1cGRhdGVkTW9kdWxlcykge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignW0Zhc3QgUmVmcmVzaF0gcGVyZm9ybWluZyBmdWxsIHJlbG9hZFxcblxcbicgKyBcIkZhc3QgUmVmcmVzaCB3aWxsIHBlcmZvcm0gYSBmdWxsIHJlbG9hZCB3aGVuIHlvdSBlZGl0IGEgZmlsZSB0aGF0J3MgaW1wb3J0ZWQgYnkgbW9kdWxlcyBvdXRzaWRlIG9mIHRoZSBSZWFjdCByZW5kZXJpbmcgdHJlZS5cXG5cIiArICdZb3UgbWlnaHQgaGF2ZSBhIGZpbGUgd2hpY2ggZXhwb3J0cyBhIFJlYWN0IGNvbXBvbmVudCBidXQgYWxzbyBleHBvcnRzIGEgdmFsdWUgdGhhdCBpcyBpbXBvcnRlZCBieSBhIG5vbi1SZWFjdCBjb21wb25lbnQgZmlsZS5cXG4nICsgJ0NvbnNpZGVyIG1pZ3JhdGluZyB0aGUgbm9uLVJlYWN0IGNvbXBvbmVudCBleHBvcnQgdG8gYSBzZXBhcmF0ZSBmaWxlIGFuZCBpbXBvcnRpbmcgaXQgaW50byBib3RoIGZpbGVzLlxcblxcbicgKyAnSXQgaXMgYWxzbyBwb3NzaWJsZSB0aGUgcGFyZW50IGNvbXBvbmVudCBvZiB0aGUgY29tcG9uZW50IHlvdSBlZGl0ZWQgaXMgYSBjbGFzcyBjb21wb25lbnQsIHdoaWNoIGRpc2FibGVzIEZhc3QgUmVmcmVzaC5cXG4nICsgJ0Zhc3QgUmVmcmVzaCByZXF1aXJlcyBhdCBsZWFzdCBvbmUgcGFyZW50IGZ1bmN0aW9uIGNvbXBvbmVudCBpbiB5b3VyIFJlYWN0IHRyZWUuJyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhhZFJ1bnRpbWVFcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignW0Zhc3QgUmVmcmVzaF0gcGVyZm9ybWluZyBmdWxsIHJlbG9hZCBiZWNhdXNlIHlvdXIgYXBwbGljYXRpb24gaGFkIGFuIHVucmVjb3ZlcmFibGUgZXJyb3InKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBlcmZvcm1GdWxsUmVsb2FkKGVycik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaGFzVXBkYXRlcyA9IEJvb2xlYW4odXBkYXRlZE1vZHVsZXMubGVuZ3RoKTtcbiAgICAgICAgaWYgKHR5cGVvZiBvbkhvdFVwZGF0ZVN1Y2Nlc3MgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIC8vIE1heWJlIHdlIHdhbnQgdG8gZG8gc29tZXRoaW5nLlxuICAgICAgICAgICAgb25Ib3RVcGRhdGVTdWNjZXNzKGhhc1VwZGF0ZXMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1VwZGF0ZUF2YWlsYWJsZSgpKSB7XG4gICAgICAgICAgICAvLyBXaGlsZSB3ZSB3ZXJlIHVwZGF0aW5nLCB0aGVyZSB3YXMgYSBuZXcgdXBkYXRlISBEbyBpdCBhZ2Fpbi5cbiAgICAgICAgICAgIC8vIEhvd2V2ZXIsIHRoaXMgdGltZSwgZG9uJ3QgdHJpZ2dlciBhIHBlbmRpbmcgcmVmcmVzaCBzdGF0ZS5cbiAgICAgICAgICAgIHRyeUFwcGx5VXBkYXRlcyhoYXNVcGRhdGVzID8gdW5kZWZpbmVkIDogb25CZWZvcmVIb3RVcGRhdGUsIGhhc1VwZGF0ZXMgPyBfY2xpZW50Lm9uQnVpbGRPayA6IG9uSG90VXBkYXRlU3VjY2Vzcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAoMCwgX2NsaWVudCkub25CdWlsZE9rKCk7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1RFU1RfTU9ERSkge1xuICAgICAgICAgICAgICAgIGFmdGVyQXBwbHlVcGRhdGVzKCgpPT57XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLl9fTkVYVF9ITVJfQ0IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19ORVhUX0hNUl9DQigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX05FWFRfSE1SX0NCID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIGh0dHBzOi8vd2VicGFjay5qcy5vcmcvYXBpL2hvdC1tb2R1bGUtcmVwbGFjZW1lbnQvI2NoZWNrXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPOiBtb2R1bGUuaG90IGV4aXN0cyBidXQgdHlwZSBuZWVkcyB0byBiZSBhZGRlZC4gQ2FuJ3QgdXNlIGBhcyBhbnlgIGhlcmUgYXMgd2VicGFjayBwYXJzZXMgZm9yIGBtb2R1bGUuaG90YCBjYWxscy5cbiAgICBtb2R1bGUuaG90LmNoZWNrKC8qIGF1dG9BcHBseSAqLyBmYWxzZSkudGhlbigodXBkYXRlZE1vZHVsZXMpPT57XG4gICAgICAgIGlmICghdXBkYXRlZE1vZHVsZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2Ygb25CZWZvcmVIb3RVcGRhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VwZGF0ZXMgPSBCb29sZWFuKHVwZGF0ZWRNb2R1bGVzLmxlbmd0aCk7XG4gICAgICAgICAgICBvbkJlZm9yZUhvdFVwZGF0ZShoYXNVcGRhdGVzKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE86IG1vZHVsZS5ob3QgZXhpc3RzIGJ1dCB0eXBlIG5lZWRzIHRvIGJlIGFkZGVkLiBDYW4ndCB1c2UgYGFzIGFueWAgaGVyZSBhcyB3ZWJwYWNrIHBhcnNlcyBmb3IgYG1vZHVsZS5ob3RgIGNhbGxzLlxuICAgICAgICByZXR1cm4gbW9kdWxlLmhvdC5hcHBseSgpO1xuICAgIH0pLnRoZW4oKHVwZGF0ZWRNb2R1bGVzKT0+e1xuICAgICAgICBoYW5kbGVBcHBseVVwZGF0ZXMobnVsbCwgdXBkYXRlZE1vZHVsZXMpO1xuICAgIH0sIChlcnIpPT57XG4gICAgICAgIGhhbmRsZUFwcGx5VXBkYXRlcyhlcnIsIG51bGwpO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gcGVyZm9ybUZ1bGxSZWxvYWQoZXJyKSB7XG4gICAgY29uc3Qgc3RhY2tUcmFjZSA9IGVyciAmJiAoZXJyLnN0YWNrICYmIGVyci5zdGFjay5zcGxpdCgnXFxuJykuc2xpY2UoMCwgNSkuam9pbignXFxuJykgfHwgZXJyLm1lc3NhZ2UgfHwgZXJyICsgJycpO1xuICAgICgwLCBfd2Vic29ja2V0KS5zZW5kTWVzc2FnZShKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGV2ZW50OiAnY2xpZW50LWZ1bGwtcmVsb2FkJyxcbiAgICAgICAgc3RhY2tUcmFjZSxcbiAgICAgICAgaGFkUnVudGltZUVycm9yOiAhIWhhZFJ1bnRpbWVFcnJvclxuICAgIH0pKTtcbiAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWhvdC1kZXYtY2xpZW50LmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImRlZmF1bHQiLCJjb25uZWN0IiwiX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0IiwicmVxdWlyZSIsIl9jbGllbnQiLCJfc3RyaXBBbnNpIiwiX3dlYnNvY2tldCIsIl9mb3JtYXRXZWJwYWNrTWVzc2FnZXMiLCJyZWdpc3RlciIsImFkZE1lc3NhZ2VMaXN0ZW5lciIsImV2ZW50IiwiZGF0YSIsImluZGV4T2YiLCJwcm9jZXNzTWVzc2FnZSIsImV4IiwiY29uc29sZSIsIndhcm4iLCJzdWJzY3JpYmVUb0htckV2ZW50IiwiaGFuZGxlciIsImN1c3RvbUhtckV2ZW50SGFuZGxlciIsIm9uVW5yZWNvdmVyYWJsZUVycm9yIiwiaGFkUnVudGltZUVycm9yIiwid2luZG93IiwiX19uZXh0RGV2Q2xpZW50SWQiLCJNYXRoIiwicm91bmQiLCJyYW5kb20iLCJEYXRlIiwibm93IiwiaXNGaXJzdENvbXBpbGF0aW9uIiwibW9zdFJlY2VudENvbXBpbGF0aW9uSGFzaCIsImhhc0NvbXBpbGVFcnJvcnMiLCJjbGVhck91dGRhdGVkRXJyb3JzIiwiY2xlYXIiLCJoYW5kbGVTdWNjZXNzIiwiaXNIb3RVcGRhdGUiLCJfX05FWFRfREFUQV9fIiwicGFnZSIsImlzVXBkYXRlQXZhaWxhYmxlIiwidHJ5QXBwbHlVcGRhdGVzIiwib25CZWZvcmVGYXN0UmVmcmVzaCIsIm9uRmFzdFJlZnJlc2giLCJoYW5kbGVXYXJuaW5ncyIsIndhcm5pbmdzIiwicHJpbnRXYXJuaW5ncyIsImZvcm1hdHRlZCIsImVycm9ycyIsInJlZiIsImkiLCJsZW5ndGgiLCJoYW5kbGVFcnJvcnMiLCJvbkJ1aWxkRXJyb3IiLCJlcnJvciIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfVEVTVF9NT0RFIiwic2VsZiIsIl9fTkVYVF9ITVJfQ0IiLCJzdGFydExhdGVuY3kiLCJ1bmRlZmluZWQiLCJoYXNVcGRhdGVzIiwib25CZWZvcmVSZWZyZXNoIiwib25CdWlsZE9rIiwib25SZWZyZXNoIiwiZW5kTGF0ZW5jeSIsImxhdGVuY3kiLCJsb2ciLCJzZW5kTWVzc2FnZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJpZCIsInN0YXJ0VGltZSIsImVuZFRpbWUiLCJfX05FWFRfSE1SX0xBVEVOQ1lfQ0IiLCJoYW5kbGVBdmFpbGFibGVIYXNoIiwiaGFzaCIsImUiLCJvYmoiLCJwYXJzZSIsImFjdGlvbiIsImhhc0Vycm9ycyIsIkJvb2xlYW4iLCJlcnJvckNvdW50IiwiY2xpZW50SWQiLCJoYXNXYXJuaW5ncyIsIndhcm5pbmdDb3VudCIsImxvY2F0aW9uIiwicmVsb2FkIiwiX193ZWJwYWNrX2hhc2hfXyIsImNhbkFwcGx5VXBkYXRlcyIsIm1vZHVsZSIsImhvdCIsInN0YXR1cyIsImFmdGVyQXBwbHlVcGRhdGVzIiwiZm4iLCJyZW1vdmVTdGF0dXNIYW5kbGVyIiwiYWRkU3RhdHVzSGFuZGxlciIsIm9uQmVmb3JlSG90VXBkYXRlIiwib25Ib3RVcGRhdGVTdWNjZXNzIiwiaGFuZGxlQXBwbHlVcGRhdGVzIiwiZXJyIiwidXBkYXRlZE1vZHVsZXMiLCJwZXJmb3JtRnVsbFJlbG9hZCIsImNoZWNrIiwidGhlbiIsImFwcGx5Iiwic3RhY2tUcmFjZSIsInN0YWNrIiwic3BsaXQiLCJzbGljZSIsImpvaW4iLCJtZXNzYWdlIiwiX19lc01vZHVsZSIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/client/dev/error-overlay/hot-dev-client.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/dev/error-overlay/websocket.js": /*!**************************************************************************!*\ !*** ../../node_modules/next/dist/client/dev/error-overlay/websocket.js ***! \**************************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.addMessageListener = addMessageListener;\nexports.sendMessage = sendMessage;\nexports.connectHMR = connectHMR;\nlet source;\nconst eventCallbacks = [];\nlet lastActivity = Date.now();\nfunction getSocketProtocol(assetPrefix) {\n let protocol = location.protocol;\n try {\n // assetPrefix is a url\n protocol = new URL(assetPrefix).protocol;\n } catch (_) {}\n return protocol === \"http:\" ? \"ws\" : \"wss\";\n}\nfunction addMessageListener(cb) {\n eventCallbacks.push(cb);\n}\nfunction sendMessage(data) {\n if (!source || source.readyState !== source.OPEN) return;\n return source.send(data);\n}\nfunction connectHMR(options) {\n if (!options.timeout) {\n options.timeout = 5 * 1000;\n }\n function init() {\n if (source) source.close();\n function handleOnline() {\n if (options.log) console.log(\"[HMR] connected\");\n lastActivity = Date.now();\n }\n function handleMessage(event) {\n lastActivity = Date.now();\n eventCallbacks.forEach((cb)=>{\n cb(event);\n });\n }\n let timer;\n function handleDisconnect() {\n clearInterval(timer);\n source.close();\n setTimeout(init, options.timeout);\n }\n timer = setInterval(function() {\n if (Date.now() - lastActivity > options.timeout) {\n handleDisconnect();\n }\n }, options.timeout / 2);\n const { hostname , port } = location;\n const protocol = getSocketProtocol(options.assetPrefix || \"\");\n const assetPrefix = options.assetPrefix.replace(/^\\/+/, \"\");\n let url = \"\".concat(protocol, \"://\").concat(hostname, \":\").concat(port).concat(assetPrefix ? \"/\".concat(assetPrefix) : \"\");\n if (assetPrefix.startsWith(\"http\")) {\n url = \"\".concat(protocol, \"://\").concat(assetPrefix.split(\"://\")[1]);\n }\n source = new window.WebSocket(\"\".concat(url).concat(options.path));\n source.onopen = handleOnline;\n source.onerror = handleDisconnect;\n source.onmessage = handleMessage;\n }\n init();\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=websocket.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L2Vycm9yLW92ZXJsYXkvd2Vic29ja2V0LmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTyxJQUFJO0FBQ2YsQ0FBQyxFQUFDO0FBQ0ZELDBCQUEwQixHQUFHRTtBQUM3QkYsbUJBQW1CLEdBQUdHO0FBQ3RCSCxrQkFBa0IsR0FBR0k7QUFDckIsSUFBSUM7QUFDSixNQUFNQyxpQkFBaUIsRUFBRTtBQUN6QixJQUFJQyxlQUFlQyxLQUFLQyxHQUFHO0FBQzNCLFNBQVNDLGtCQUFrQkMsV0FBVyxFQUFFO0lBQ3BDLElBQUlDLFdBQVdDLFNBQVNELFFBQVE7SUFDaEMsSUFBSTtRQUNBLHVCQUF1QjtRQUN2QkEsV0FBVyxJQUFJRSxJQUFJSCxhQUFhQyxRQUFRO0lBQzVDLEVBQUUsT0FBT0csR0FBRyxDQUFDO0lBQ2IsT0FBT0gsYUFBYSxVQUFVLE9BQU8sS0FBSztBQUM5QztBQUNBLFNBQVNWLG1CQUFtQmMsRUFBRSxFQUFFO0lBQzVCVixlQUFlVyxJQUFJLENBQUNEO0FBQ3hCO0FBQ0EsU0FBU2IsWUFBWWUsSUFBSSxFQUFFO0lBQ3ZCLElBQUksQ0FBQ2IsVUFBVUEsT0FBT2MsVUFBVSxLQUFLZCxPQUFPZSxJQUFJLEVBQUU7SUFDbEQsT0FBT2YsT0FBT2dCLElBQUksQ0FBQ0g7QUFDdkI7QUFDQSxTQUFTZCxXQUFXa0IsT0FBTyxFQUFFO0lBQ3pCLElBQUksQ0FBQ0EsUUFBUUMsT0FBTyxFQUFFO1FBQ2xCRCxRQUFRQyxPQUFPLEdBQUcsSUFBSTtJQUMxQixDQUFDO0lBQ0QsU0FBU0MsT0FBTztRQUNaLElBQUluQixRQUFRQSxPQUFPb0IsS0FBSztRQUN4QixTQUFTQyxlQUFlO1lBQ3BCLElBQUlKLFFBQVFLLEdBQUcsRUFBRUMsUUFBUUQsR0FBRyxDQUFDO1lBQzdCcEIsZUFBZUMsS0FBS0MsR0FBRztRQUMzQjtRQUNBLFNBQVNvQixjQUFjQyxLQUFLLEVBQUU7WUFDMUJ2QixlQUFlQyxLQUFLQyxHQUFHO1lBQ3ZCSCxlQUFleUIsT0FBTyxDQUFDLENBQUNmLEtBQUs7Z0JBQ3pCQSxHQUFHYztZQUNQO1FBQ0o7UUFDQSxJQUFJRTtRQUNKLFNBQVNDLG1CQUFtQjtZQUN4QkMsY0FBY0Y7WUFDZDNCLE9BQU9vQixLQUFLO1lBQ1pVLFdBQVdYLE1BQU1GLFFBQVFDLE9BQU87UUFDcEM7UUFDQVMsUUFBUUksWUFBWSxXQUFXO1lBQzNCLElBQUk1QixLQUFLQyxHQUFHLEtBQUtGLGVBQWVlLFFBQVFDLE9BQU8sRUFBRTtnQkFDN0NVO1lBQ0osQ0FBQztRQUNMLEdBQUdYLFFBQVFDLE9BQU8sR0FBRztRQUNyQixNQUFNLEVBQUVjLFNBQVEsRUFBR0MsS0FBSSxFQUFHLEdBQUd6QjtRQUM3QixNQUFNRCxXQUFXRixrQkFBa0JZLFFBQVFYLFdBQVcsSUFBSTtRQUMxRCxNQUFNQSxjQUFjVyxRQUFRWCxXQUFXLENBQUM0QixPQUFPLENBQUMsUUFBUTtRQUN4RCxJQUFJQyxNQUFNLEdBQWlCSCxPQUFkekIsVUFBUyxPQUFpQjBCLE9BQVpELFVBQVMsS0FBVTFCLE9BQVAyQixNQUE0QyxPQUFyQzNCLGNBQWMsSUFBZ0IsT0FBWkEsZUFBZ0IsRUFBRTtRQUNsRixJQUFJQSxZQUFZOEIsVUFBVSxDQUFDLFNBQVM7WUFDaENELE1BQU0sR0FBaUI3QixPQUFkQyxVQUFTLE9BQWlDLE9BQTVCRCxZQUFZK0IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3RELENBQUM7UUFDRHJDLFNBQVMsSUFBSXNDLE9BQU9DLFNBQVMsQ0FBQyxHQUFTdEIsT0FBTmtCLEtBQW1CLE9BQWJsQixRQUFRdUIsSUFBSTtRQUNuRHhDLE9BQU95QyxNQUFNLEdBQUdwQjtRQUNoQnJCLE9BQU8wQyxPQUFPLEdBQUdkO1FBQ2pCNUIsT0FBTzJDLFNBQVMsR0FBR25CO0lBQ3ZCO0lBQ0FMO0FBQ0o7QUFFQSxJQUFJLENBQUMsT0FBT3hCLFFBQVFpRCxPQUFPLEtBQUssY0FBZSxPQUFPakQsUUFBUWlELE9BQU8sS0FBSyxZQUFZakQsUUFBUWlELE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT2pELFFBQVFpRCxPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLcEQsT0FBT0MsY0FBYyxDQUFDQyxRQUFRaUQsT0FBTyxFQUFFLGNBQWM7UUFBRWhELE9BQU8sSUFBSTtJQUFDO0lBQ25FSCxPQUFPcUQsTUFBTSxDQUFDbkQsUUFBUWlELE9BQU8sRUFBRWpEO0lBQy9Cb0QsT0FBT3BELE9BQU8sR0FBR0EsUUFBUWlELE9BQU87QUFDbEMsQ0FBQyxDQUVELHFDQUFxQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L2Vycm9yLW92ZXJsYXkvd2Vic29ja2V0LmpzP2EyMzQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmFkZE1lc3NhZ2VMaXN0ZW5lciA9IGFkZE1lc3NhZ2VMaXN0ZW5lcjtcbmV4cG9ydHMuc2VuZE1lc3NhZ2UgPSBzZW5kTWVzc2FnZTtcbmV4cG9ydHMuY29ubmVjdEhNUiA9IGNvbm5lY3RITVI7XG5sZXQgc291cmNlO1xuY29uc3QgZXZlbnRDYWxsYmFja3MgPSBbXTtcbmxldCBsYXN0QWN0aXZpdHkgPSBEYXRlLm5vdygpO1xuZnVuY3Rpb24gZ2V0U29ja2V0UHJvdG9jb2woYXNzZXRQcmVmaXgpIHtcbiAgICBsZXQgcHJvdG9jb2wgPSBsb2NhdGlvbi5wcm90b2NvbDtcbiAgICB0cnkge1xuICAgICAgICAvLyBhc3NldFByZWZpeCBpcyBhIHVybFxuICAgICAgICBwcm90b2NvbCA9IG5ldyBVUkwoYXNzZXRQcmVmaXgpLnByb3RvY29sO1xuICAgIH0gY2F0Y2ggKF8pIHt9XG4gICAgcmV0dXJuIHByb3RvY29sID09PSAnaHR0cDonID8gJ3dzJyA6ICd3c3MnO1xufVxuZnVuY3Rpb24gYWRkTWVzc2FnZUxpc3RlbmVyKGNiKSB7XG4gICAgZXZlbnRDYWxsYmFja3MucHVzaChjYik7XG59XG5mdW5jdGlvbiBzZW5kTWVzc2FnZShkYXRhKSB7XG4gICAgaWYgKCFzb3VyY2UgfHwgc291cmNlLnJlYWR5U3RhdGUgIT09IHNvdXJjZS5PUEVOKSByZXR1cm47XG4gICAgcmV0dXJuIHNvdXJjZS5zZW5kKGRhdGEpO1xufVxuZnVuY3Rpb24gY29ubmVjdEhNUihvcHRpb25zKSB7XG4gICAgaWYgKCFvcHRpb25zLnRpbWVvdXQpIHtcbiAgICAgICAgb3B0aW9ucy50aW1lb3V0ID0gNSAqIDEwMDA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgICAgIGlmIChzb3VyY2UpIHNvdXJjZS5jbG9zZSgpO1xuICAgICAgICBmdW5jdGlvbiBoYW5kbGVPbmxpbmUoKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5sb2cpIGNvbnNvbGUubG9nKCdbSE1SXSBjb25uZWN0ZWQnKTtcbiAgICAgICAgICAgIGxhc3RBY3Rpdml0eSA9IERhdGUubm93KCk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gaGFuZGxlTWVzc2FnZShldmVudCkge1xuICAgICAgICAgICAgbGFzdEFjdGl2aXR5ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIGV2ZW50Q2FsbGJhY2tzLmZvckVhY2goKGNiKT0+e1xuICAgICAgICAgICAgICAgIGNiKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGxldCB0aW1lcjtcbiAgICAgICAgZnVuY3Rpb24gaGFuZGxlRGlzY29ubmVjdCgpIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpO1xuICAgICAgICAgICAgc291cmNlLmNsb3NlKCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGluaXQsIG9wdGlvbnMudGltZW91dCk7XG4gICAgICAgIH1cbiAgICAgICAgdGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGlmIChEYXRlLm5vdygpIC0gbGFzdEFjdGl2aXR5ID4gb3B0aW9ucy50aW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlRGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBvcHRpb25zLnRpbWVvdXQgLyAyKTtcbiAgICAgICAgY29uc3QgeyBob3N0bmFtZSAsIHBvcnQgIH0gPSBsb2NhdGlvbjtcbiAgICAgICAgY29uc3QgcHJvdG9jb2wgPSBnZXRTb2NrZXRQcm90b2NvbChvcHRpb25zLmFzc2V0UHJlZml4IHx8ICcnKTtcbiAgICAgICAgY29uc3QgYXNzZXRQcmVmaXggPSBvcHRpb25zLmFzc2V0UHJlZml4LnJlcGxhY2UoL15cXC8rLywgJycpO1xuICAgICAgICBsZXQgdXJsID0gYCR7cHJvdG9jb2x9Oi8vJHtob3N0bmFtZX06JHtwb3J0fSR7YXNzZXRQcmVmaXggPyBgLyR7YXNzZXRQcmVmaXh9YCA6ICcnfWA7XG4gICAgICAgIGlmIChhc3NldFByZWZpeC5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgICAgICAgIHVybCA9IGAke3Byb3RvY29sfTovLyR7YXNzZXRQcmVmaXguc3BsaXQoJzovLycpWzFdfWA7XG4gICAgICAgIH1cbiAgICAgICAgc291cmNlID0gbmV3IHdpbmRvdy5XZWJTb2NrZXQoYCR7dXJsfSR7b3B0aW9ucy5wYXRofWApO1xuICAgICAgICBzb3VyY2Uub25vcGVuID0gaGFuZGxlT25saW5lO1xuICAgICAgICBzb3VyY2Uub25lcnJvciA9IGhhbmRsZURpc2Nvbm5lY3Q7XG4gICAgICAgIHNvdXJjZS5vbm1lc3NhZ2UgPSBoYW5kbGVNZXNzYWdlO1xuICAgIH1cbiAgICBpbml0KCk7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXdlYnNvY2tldC5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJhZGRNZXNzYWdlTGlzdGVuZXIiLCJzZW5kTWVzc2FnZSIsImNvbm5lY3RITVIiLCJzb3VyY2UiLCJldmVudENhbGxiYWNrcyIsImxhc3RBY3Rpdml0eSIsIkRhdGUiLCJub3ciLCJnZXRTb2NrZXRQcm90b2NvbCIsImFzc2V0UHJlZml4IiwicHJvdG9jb2wiLCJsb2NhdGlvbiIsIlVSTCIsIl8iLCJjYiIsInB1c2giLCJkYXRhIiwicmVhZHlTdGF0ZSIsIk9QRU4iLCJzZW5kIiwib3B0aW9ucyIsInRpbWVvdXQiLCJpbml0IiwiY2xvc2UiLCJoYW5kbGVPbmxpbmUiLCJsb2ciLCJjb25zb2xlIiwiaGFuZGxlTWVzc2FnZSIsImV2ZW50IiwiZm9yRWFjaCIsInRpbWVyIiwiaGFuZGxlRGlzY29ubmVjdCIsImNsZWFySW50ZXJ2YWwiLCJzZXRUaW1lb3V0Iiwic2V0SW50ZXJ2YWwiLCJob3N0bmFtZSIsInBvcnQiLCJyZXBsYWNlIiwidXJsIiwic3RhcnRzV2l0aCIsInNwbGl0Iiwid2luZG93IiwiV2ViU29ja2V0IiwicGF0aCIsIm9ub3BlbiIsIm9uZXJyb3IiLCJvbm1lc3NhZ2UiLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/client/dev/error-overlay/websocket.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/dev/fouc.js": /*!*******************************************************!*\ !*** ../../node_modules/next/dist/client/dev/fouc.js ***! \*******************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.displayContent = displayContent;\n// This wrapper function is used to safely select the best available function\n// to schedule removal of the no-FOUC styles workaround. requestAnimationFrame\n// is the ideal choice, but when used in iframes, there are no guarantees that\n// the callback will actually be called, which could stall the promise returned\n// from displayContent.\n//\n// See: https://www.vector-logic.com/blog/posts/on-request-animation-frame-and-embedded-iframes\nconst safeCallbackQueue = (callback)=>{\n if (window.requestAnimationFrame && window.self === window.top) {\n window.requestAnimationFrame(callback);\n } else {\n window.setTimeout(callback);\n }\n};\nfunction displayContent() {\n return new Promise((resolve)=>{\n safeCallbackQueue(function() {\n for(var x = document.querySelectorAll(\"[data-next-hide-fouc]\"), i = x.length; i--;){\n x[i].parentNode.removeChild(x[i]);\n }\n resolve();\n });\n });\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=fouc.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L2ZvdWMuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPLElBQUk7QUFDZixDQUFDLEVBQUM7QUFDRkQsc0JBQXNCLEdBQUdFO0FBQ3pCLDZFQUE2RTtBQUM3RSw4RUFBOEU7QUFDOUUsOEVBQThFO0FBQzlFLCtFQUErRTtBQUMvRSx1QkFBdUI7QUFDdkIsRUFBRTtBQUNGLCtGQUErRjtBQUMvRixNQUFNQyxvQkFBb0IsQ0FBQ0MsV0FBVztJQUNsQyxJQUFJQyxPQUFPQyxxQkFBcUIsSUFBSUQsT0FBT0UsSUFBSSxLQUFLRixPQUFPRyxHQUFHLEVBQUU7UUFDNURILE9BQU9DLHFCQUFxQixDQUFDRjtJQUNqQyxPQUFPO1FBQ0hDLE9BQU9JLFVBQVUsQ0FBQ0w7SUFDdEIsQ0FBQztBQUNMO0FBQ0EsU0FBU0YsaUJBQWlCO0lBQ3RCLE9BQU8sSUFBSVEsUUFBUSxDQUFDQyxVQUFVO1FBQzFCUixrQkFBa0IsV0FBVztZQUN6QixJQUFJLElBQUlTLElBQUlDLFNBQVNDLGdCQUFnQixDQUFDLDBCQUEwQkMsSUFBSUgsRUFBRUksTUFBTSxFQUFFRCxLQUFLO2dCQUMvRUgsQ0FBQyxDQUFDRyxFQUFFLENBQUNFLFVBQVUsQ0FBQ0MsV0FBVyxDQUFDTixDQUFDLENBQUNHLEVBQUU7WUFDcEM7WUFDQUo7UUFDSjtJQUNKO0FBQ0o7QUFFQSxJQUFJLENBQUMsT0FBT1gsUUFBUW1CLE9BQU8sS0FBSyxjQUFlLE9BQU9uQixRQUFRbUIsT0FBTyxLQUFLLFlBQVluQixRQUFRbUIsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPbkIsUUFBUW1CLE9BQU8sQ0FBQ0MsVUFBVSxLQUFLLGFBQWE7SUFDckt0QixPQUFPQyxjQUFjLENBQUNDLFFBQVFtQixPQUFPLEVBQUUsY0FBYztRQUFFbEIsT0FBTyxJQUFJO0lBQUM7SUFDbkVILE9BQU91QixNQUFNLENBQUNyQixRQUFRbUIsT0FBTyxFQUFFbkI7SUFDL0JzQixPQUFPdEIsT0FBTyxHQUFHQSxRQUFRbUIsT0FBTztBQUNsQyxDQUFDLENBRUQsZ0NBQWdDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZm91Yy5qcz9kMmQ4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kaXNwbGF5Q29udGVudCA9IGRpc3BsYXlDb250ZW50O1xuLy8gVGhpcyB3cmFwcGVyIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc2FmZWx5IHNlbGVjdCB0aGUgYmVzdCBhdmFpbGFibGUgZnVuY3Rpb25cbi8vIHRvIHNjaGVkdWxlIHJlbW92YWwgb2YgdGhlIG5vLUZPVUMgc3R5bGVzIHdvcmthcm91bmQuIHJlcXVlc3RBbmltYXRpb25GcmFtZVxuLy8gaXMgdGhlIGlkZWFsIGNob2ljZSwgYnV0IHdoZW4gdXNlZCBpbiBpZnJhbWVzLCB0aGVyZSBhcmUgbm8gZ3VhcmFudGVlcyB0aGF0XG4vLyB0aGUgY2FsbGJhY2sgd2lsbCBhY3R1YWxseSBiZSBjYWxsZWQsIHdoaWNoIGNvdWxkIHN0YWxsIHRoZSBwcm9taXNlIHJldHVybmVkXG4vLyBmcm9tIGRpc3BsYXlDb250ZW50LlxuLy9cbi8vIFNlZTogaHR0cHM6Ly93d3cudmVjdG9yLWxvZ2ljLmNvbS9ibG9nL3Bvc3RzL29uLXJlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLWFuZC1lbWJlZGRlZC1pZnJhbWVzXG5jb25zdCBzYWZlQ2FsbGJhY2tRdWV1ZSA9IChjYWxsYmFjayk9PntcbiAgICBpZiAod2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSAmJiB3aW5kb3cuc2VsZiA9PT0gd2luZG93LnRvcCkge1xuICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNhbGxiYWNrKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB3aW5kb3cuc2V0VGltZW91dChjYWxsYmFjayk7XG4gICAgfVxufTtcbmZ1bmN0aW9uIGRpc3BsYXlDb250ZW50KCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSk9PntcbiAgICAgICAgc2FmZUNhbGxiYWNrUXVldWUoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBmb3IodmFyIHggPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1uZXh0LWhpZGUtZm91Y10nKSwgaSA9IHgubGVuZ3RoOyBpLS07KXtcbiAgICAgICAgICAgICAgICB4W2ldLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoeFtpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1mb3VjLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImRpc3BsYXlDb250ZW50Iiwic2FmZUNhbGxiYWNrUXVldWUiLCJjYWxsYmFjayIsIndpbmRvdyIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsInNlbGYiLCJ0b3AiLCJzZXRUaW1lb3V0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJ4IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiaSIsImxlbmd0aCIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsImRlZmF1bHQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/client/dev/fouc.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/dev/on-demand-entries-client.js": /*!***************************************************************************!*\ !*** ../../node_modules/next/dist/client/dev/on-demand-entries-client.js ***! \***************************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\nvar _async_to_generator = (__webpack_require__(/*! @swc/helpers/lib/_async_to_generator.js */ \"../../node_modules/@swc/helpers/lib/_async_to_generator.js\")[\"default\"]);\nvar _interop_require_default = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _router = _interop_require_default(__webpack_require__(/*! ../router */ \"../../node_modules/next/dist/client/router.js\"));\nvar _websocket = __webpack_require__(/*! ./error-overlay/websocket */ \"../../node_modules/next/dist/client/dev/error-overlay/websocket.js\");\nvar _default = _async_to_generator(function*(page) {\n if (page) {\n // in AMP the router isn't initialized on the client and\n // client-transitions don't occur so ping initial page\n setInterval(()=>{\n (0, _websocket).sendMessage(JSON.stringify({\n event: \"ping\",\n page\n }));\n }, 2500);\n } else {\n _router.default.ready(()=>{\n setInterval(()=>{\n // when notFound: true is returned we should use the notFoundPage\n // as the Router.pathname will point to the 404 page but we want\n // to ping the source page that returned notFound: true instead\n const notFoundSrcPage = self.__NEXT_DATA__.notFoundSrcPage;\n const pathname = (_router.default.pathname === \"/404\" || _router.default.pathname === \"/_error\") && notFoundSrcPage ? notFoundSrcPage : _router.default.pathname;\n (0, _websocket).sendMessage(JSON.stringify({\n event: \"ping\",\n page: pathname\n }));\n }, 2500);\n });\n }\n (0, _websocket).addMessageListener((event)=>{\n if (event.data.indexOf(\"{\") === -1) return;\n try {\n const payload = JSON.parse(event.data);\n // don't attempt fetching the page if we're already showing\n // the dev overlay as this can cause the error to be triggered\n // repeatedly\n if (payload.event === \"pong\" && payload.invalid && !self.__NEXT_DATA__.err) {\n // Payload can be invalid even if the page does exist.\n // So, we check if it can be created.\n fetch(location.href, {\n credentials: \"same-origin\"\n }).then((pageRes)=>{\n if (pageRes.status === 200) {\n // Page exists now, reload\n location.reload();\n } else {\n // Page doesn't exist\n if (self.__NEXT_DATA__.page === _router.default.pathname && _router.default.pathname !== \"/_error\") {\n // We are still on the page,\n // reload to show 404 error page\n location.reload();\n }\n }\n });\n }\n } catch (err) {\n console.error(\"on-demand-entries failed to parse response\", err);\n }\n });\n});\nexports[\"default\"] = _default;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=on-demand-entries-client.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L29uLWRlbWFuZC1lbnRyaWVzLWNsaWVudC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU8sSUFBSTtBQUNmLENBQUMsRUFBQztBQUNGRCxrQkFBZSxHQUFHLEtBQUs7QUFDdkIsSUFBSUcsc0JBQXNCQyw2SUFBMEQ7QUFDcEYsSUFBSUMsMkJBQTJCRCx1SkFBK0Q7QUFDOUYsSUFBSUUsVUFBVUQseUJBQXlCRCxtQkFBT0EsQ0FBQyxnRUFBVztBQUMxRCxJQUFJRyxhQUFhSCxtQkFBT0EsQ0FBQyxxR0FBMkI7QUFDcEQsSUFBSUksV0FBV0wsb0JBQW9CLFVBQVVNLElBQUksRUFBRTtJQUMvQyxJQUFJQSxNQUFNO1FBQ04sd0RBQXdEO1FBQ3hELHNEQUFzRDtRQUN0REMsWUFBWSxJQUFJO1lBQ1gsSUFBR0gsVUFBVSxFQUFFSSxXQUFXLENBQUNDLEtBQUtDLFNBQVMsQ0FBQztnQkFDdkNDLE9BQU87Z0JBQ1BMO1lBQ0o7UUFDSixHQUFHO0lBQ1AsT0FBTztRQUNISCxRQUFRSixPQUFPLENBQUNhLEtBQUssQ0FBQyxJQUFJO1lBQ3RCTCxZQUFZLElBQUk7Z0JBQ1osaUVBQWlFO2dCQUNqRSxnRUFBZ0U7Z0JBQ2hFLCtEQUErRDtnQkFDL0QsTUFBTU0sa0JBQWtCQyxLQUFLQyxhQUFhLENBQUNGLGVBQWU7Z0JBQzFELE1BQU1HLFdBQVcsQ0FBQ2IsUUFBUUosT0FBTyxDQUFDaUIsUUFBUSxLQUFLLFVBQVViLFFBQVFKLE9BQU8sQ0FBQ2lCLFFBQVEsS0FBSyxTQUFRLEtBQU1ILGtCQUFrQkEsa0JBQWtCVixRQUFRSixPQUFPLENBQUNpQixRQUFRO2dCQUMvSixJQUFHWixVQUFVLEVBQUVJLFdBQVcsQ0FBQ0MsS0FBS0MsU0FBUyxDQUFDO29CQUN2Q0MsT0FBTztvQkFDUEwsTUFBTVU7Z0JBQ1Y7WUFDSixHQUFHO1FBQ1A7SUFDSixDQUFDO0lBQ0EsSUFBR1osVUFBVSxFQUFFYSxrQkFBa0IsQ0FBQyxDQUFDTixRQUFRO1FBQ3hDLElBQUlBLE1BQU1PLElBQUksQ0FBQ0MsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHO1FBQ3BDLElBQUk7WUFDQSxNQUFNQyxVQUFVWCxLQUFLWSxLQUFLLENBQUNWLE1BQU1PLElBQUk7WUFDckMsMkRBQTJEO1lBQzNELDhEQUE4RDtZQUM5RCxhQUFhO1lBQ2IsSUFBSUUsUUFBUVQsS0FBSyxLQUFLLFVBQVVTLFFBQVFFLE9BQU8sSUFBSSxDQUFDUixLQUFLQyxhQUFhLENBQUNRLEdBQUcsRUFBRTtnQkFDeEUsc0RBQXNEO2dCQUN0RCxxQ0FBcUM7Z0JBQ3JDQyxNQUFNQyxTQUFTQyxJQUFJLEVBQUU7b0JBQ2pCQyxhQUFhO2dCQUNqQixHQUFHQyxJQUFJLENBQUMsQ0FBQ0MsVUFBVTtvQkFDZixJQUFJQSxRQUFRQyxNQUFNLEtBQUssS0FBSzt3QkFDeEIsMEJBQTBCO3dCQUMxQkwsU0FBU00sTUFBTTtvQkFDbkIsT0FBTzt3QkFDSCxxQkFBcUI7d0JBQ3JCLElBQUlqQixLQUFLQyxhQUFhLENBQUNULElBQUksS0FBS0gsUUFBUUosT0FBTyxDQUFDaUIsUUFBUSxJQUFJYixRQUFRSixPQUFPLENBQUNpQixRQUFRLEtBQUssV0FBVzs0QkFDaEcsNEJBQTRCOzRCQUM1QixnQ0FBZ0M7NEJBQ2hDUyxTQUFTTSxNQUFNO3dCQUNuQixDQUFDO29CQUNMLENBQUM7Z0JBQ0w7WUFDSixDQUFDO1FBQ0wsRUFBRSxPQUFPUixLQUFLO1lBQ1ZTLFFBQVFDLEtBQUssQ0FBQyw4Q0FBOENWO1FBQ2hFO0lBQ0o7QUFDSjtBQUNBMUIsa0JBQWUsR0FBR1E7QUFFbEIsSUFBSSxDQUFDLE9BQU9SLFFBQVFFLE9BQU8sS0FBSyxjQUFlLE9BQU9GLFFBQVFFLE9BQU8sS0FBSyxZQUFZRixRQUFRRSxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9GLFFBQVFFLE9BQU8sQ0FBQ21DLFVBQVUsS0FBSyxhQUFhO0lBQ3JLdkMsT0FBT0MsY0FBYyxDQUFDQyxRQUFRRSxPQUFPLEVBQUUsY0FBYztRQUFFRCxPQUFPLElBQUk7SUFBQztJQUNuRUgsT0FBT3dDLE1BQU0sQ0FBQ3RDLFFBQVFFLE9BQU8sRUFBRUY7SUFDL0J1QyxPQUFPdkMsT0FBTyxHQUFHQSxRQUFRRSxPQUFPO0FBQ2xDLENBQUMsQ0FFRCxvREFBb0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9vbi1kZW1hbmQtZW50cmllcy1jbGllbnQuanM/ZWNkZSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcbnZhciBfYXN5bmNfdG9fZ2VuZXJhdG9yID0gcmVxdWlyZShcIkBzd2MvaGVscGVycy9saWIvX2FzeW5jX3RvX2dlbmVyYXRvci5qc1wiKS5kZWZhdWx0O1xudmFyIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvbGliL19pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5qc1wiKS5kZWZhdWx0O1xudmFyIF9yb3V0ZXIgPSBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQocmVxdWlyZShcIi4uL3JvdXRlclwiKSk7XG52YXIgX3dlYnNvY2tldCA9IHJlcXVpcmUoXCIuL2Vycm9yLW92ZXJsYXkvd2Vic29ja2V0XCIpO1xudmFyIF9kZWZhdWx0ID0gX2FzeW5jX3RvX2dlbmVyYXRvcihmdW5jdGlvbioocGFnZSkge1xuICAgIGlmIChwYWdlKSB7XG4gICAgICAgIC8vIGluIEFNUCB0aGUgcm91dGVyIGlzbid0IGluaXRpYWxpemVkIG9uIHRoZSBjbGllbnQgYW5kXG4gICAgICAgIC8vIGNsaWVudC10cmFuc2l0aW9ucyBkb24ndCBvY2N1ciBzbyBwaW5nIGluaXRpYWwgcGFnZVxuICAgICAgICBzZXRJbnRlcnZhbCgoKT0+e1xuICAgICAgICAgICAgKDAsIF93ZWJzb2NrZXQpLnNlbmRNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBldmVudDogJ3BpbmcnLFxuICAgICAgICAgICAgICAgIHBhZ2VcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfSwgMjUwMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgX3JvdXRlci5kZWZhdWx0LnJlYWR5KCgpPT57XG4gICAgICAgICAgICBzZXRJbnRlcnZhbCgoKT0+e1xuICAgICAgICAgICAgICAgIC8vIHdoZW4gbm90Rm91bmQ6IHRydWUgaXMgcmV0dXJuZWQgd2Ugc2hvdWxkIHVzZSB0aGUgbm90Rm91bmRQYWdlXG4gICAgICAgICAgICAgICAgLy8gYXMgdGhlIFJvdXRlci5wYXRobmFtZSB3aWxsIHBvaW50IHRvIHRoZSA0MDQgcGFnZSBidXQgd2Ugd2FudFxuICAgICAgICAgICAgICAgIC8vIHRvIHBpbmcgdGhlIHNvdXJjZSBwYWdlIHRoYXQgcmV0dXJuZWQgbm90Rm91bmQ6IHRydWUgaW5zdGVhZFxuICAgICAgICAgICAgICAgIGNvbnN0IG5vdEZvdW5kU3JjUGFnZSA9IHNlbGYuX19ORVhUX0RBVEFfXy5ub3RGb3VuZFNyY1BhZ2U7XG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aG5hbWUgPSAoX3JvdXRlci5kZWZhdWx0LnBhdGhuYW1lID09PSAnLzQwNCcgfHwgX3JvdXRlci5kZWZhdWx0LnBhdGhuYW1lID09PSAnL19lcnJvcicpICYmIG5vdEZvdW5kU3JjUGFnZSA/IG5vdEZvdW5kU3JjUGFnZSA6IF9yb3V0ZXIuZGVmYXVsdC5wYXRobmFtZTtcbiAgICAgICAgICAgICAgICAoMCwgX3dlYnNvY2tldCkuc2VuZE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICBldmVudDogJ3BpbmcnLFxuICAgICAgICAgICAgICAgICAgICBwYWdlOiBwYXRobmFtZVxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH0sIDI1MDApO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgKDAsIF93ZWJzb2NrZXQpLmFkZE1lc3NhZ2VMaXN0ZW5lcigoZXZlbnQpPT57XG4gICAgICAgIGlmIChldmVudC5kYXRhLmluZGV4T2YoJ3snKSA9PT0gLTEpIHJldHVybjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEpO1xuICAgICAgICAgICAgLy8gZG9uJ3QgYXR0ZW1wdCBmZXRjaGluZyB0aGUgcGFnZSBpZiB3ZSdyZSBhbHJlYWR5IHNob3dpbmdcbiAgICAgICAgICAgIC8vIHRoZSBkZXYgb3ZlcmxheSBhcyB0aGlzIGNhbiBjYXVzZSB0aGUgZXJyb3IgdG8gYmUgdHJpZ2dlcmVkXG4gICAgICAgICAgICAvLyByZXBlYXRlZGx5XG4gICAgICAgICAgICBpZiAocGF5bG9hZC5ldmVudCA9PT0gJ3BvbmcnICYmIHBheWxvYWQuaW52YWxpZCAmJiAhc2VsZi5fX05FWFRfREFUQV9fLmVycikge1xuICAgICAgICAgICAgICAgIC8vIFBheWxvYWQgY2FuIGJlIGludmFsaWQgZXZlbiBpZiB0aGUgcGFnZSBkb2VzIGV4aXN0LlxuICAgICAgICAgICAgICAgIC8vIFNvLCB3ZSBjaGVjayBpZiBpdCBjYW4gYmUgY3JlYXRlZC5cbiAgICAgICAgICAgICAgICBmZXRjaChsb2NhdGlvbi5ocmVmLCB7XG4gICAgICAgICAgICAgICAgICAgIGNyZWRlbnRpYWxzOiAnc2FtZS1vcmlnaW4nXG4gICAgICAgICAgICAgICAgfSkudGhlbigocGFnZVJlcyk9PntcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhZ2VSZXMuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBhZ2UgZXhpc3RzIG5vdywgcmVsb2FkXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBhZ2UgZG9lc24ndCBleGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuX19ORVhUX0RBVEFfXy5wYWdlID09PSBfcm91dGVyLmRlZmF1bHQucGF0aG5hbWUgJiYgX3JvdXRlci5kZWZhdWx0LnBhdGhuYW1lICE9PSAnL19lcnJvcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgc3RpbGwgb24gdGhlIHBhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVsb2FkIHRvIHNob3cgNDA0IGVycm9yIHBhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ29uLWRlbWFuZC1lbnRyaWVzIGZhaWxlZCB0byBwYXJzZSByZXNwb25zZScsIGVycik7XG4gICAgICAgIH1cbiAgICB9KTtcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW9uLWRlbWFuZC1lbnRyaWVzLWNsaWVudC5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJkZWZhdWx0IiwiX2FzeW5jX3RvX2dlbmVyYXRvciIsInJlcXVpcmUiLCJfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQiLCJfcm91dGVyIiwiX3dlYnNvY2tldCIsIl9kZWZhdWx0IiwicGFnZSIsInNldEludGVydmFsIiwic2VuZE1lc3NhZ2UiLCJKU09OIiwic3RyaW5naWZ5IiwiZXZlbnQiLCJyZWFkeSIsIm5vdEZvdW5kU3JjUGFnZSIsInNlbGYiLCJfX05FWFRfREFUQV9fIiwicGF0aG5hbWUiLCJhZGRNZXNzYWdlTGlzdGVuZXIiLCJkYXRhIiwiaW5kZXhPZiIsInBheWxvYWQiLCJwYXJzZSIsImludmFsaWQiLCJlcnIiLCJmZXRjaCIsImxvY2F0aW9uIiwiaHJlZiIsImNyZWRlbnRpYWxzIiwidGhlbiIsInBhZ2VSZXMiLCJzdGF0dXMiLCJyZWxvYWQiLCJjb25zb2xlIiwiZXJyb3IiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/client/dev/on-demand-entries-client.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/dev/webpack-hot-middleware-client.js": /*!********************************************************************************!*\ !*** ../../node_modules/next/dist/client/dev/webpack-hot-middleware-client.js ***! \********************************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\nvar _interop_require_default = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _hotDevClient = _interop_require_default(__webpack_require__(/*! ./error-overlay/hot-dev-client */ \"../../node_modules/next/dist/client/dev/error-overlay/hot-dev-client.js\"));\nvar _websocket = __webpack_require__(/*! ./error-overlay/websocket */ \"../../node_modules/next/dist/client/dev/error-overlay/websocket.js\");\nvar _default = ()=>{\n const devClient = (0, _hotDevClient).default();\n devClient.subscribeToHmrEvent((obj)=>{\n if (obj.action === \"reloadPage\") {\n (0, _websocket).sendMessage(JSON.stringify({\n event: \"client-reload-page\",\n clientId: window.__nextDevClientId\n }));\n return window.location.reload();\n }\n if (obj.action === \"removedPage\") {\n const [page] = obj.data;\n if (page === window.next.router.pathname) {\n (0, _websocket).sendMessage(JSON.stringify({\n event: \"client-removed-page\",\n clientId: window.__nextDevClientId,\n page\n }));\n return window.location.reload();\n }\n return;\n }\n if (obj.action === \"addedPage\") {\n const [page] = obj.data;\n if (page === window.next.router.pathname && typeof window.next.router.components[page] === \"undefined\") {\n (0, _websocket).sendMessage(JSON.stringify({\n event: \"client-added-page\",\n clientId: window.__nextDevClientId,\n page\n }));\n return window.location.reload();\n }\n return;\n }\n throw new Error(\"Unexpected action \" + obj.action);\n });\n return devClient;\n};\nexports[\"default\"] = _default;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=webpack-hot-middleware-client.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L3dlYnBhY2staG90LW1pZGRsZXdhcmUtY2xpZW50LmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTyxJQUFJO0FBQ2YsQ0FBQyxFQUFDO0FBQ0ZELGtCQUFlLEdBQUcsS0FBSztBQUN2QixJQUFJRywyQkFBMkJDLHVKQUErRDtBQUM5RixJQUFJQyxnQkFBZ0JGLHlCQUF5QkMsbUJBQU9BLENBQUMsK0dBQWdDO0FBQ3JGLElBQUlFLGFBQWFGLG1CQUFPQSxDQUFDLHFHQUEyQjtBQUNwRCxJQUFJRyxXQUFXLElBQUk7SUFDZixNQUFNQyxZQUFZLENBQUMsR0FBR0gsYUFBYSxFQUFFSCxPQUFPO0lBQzVDTSxVQUFVQyxtQkFBbUIsQ0FBQyxDQUFDQyxNQUFNO1FBQ2pDLElBQUlBLElBQUlDLE1BQU0sS0FBSyxjQUFjO1lBQzVCLElBQUdMLFVBQVUsRUFBRU0sV0FBVyxDQUFDQyxLQUFLQyxTQUFTLENBQUM7Z0JBQ3ZDQyxPQUFPO2dCQUNQQyxVQUFVQyxPQUFPQyxpQkFBaUI7WUFDdEM7WUFDQSxPQUFPRCxPQUFPRSxRQUFRLENBQUNDLE1BQU07UUFDakMsQ0FBQztRQUNELElBQUlWLElBQUlDLE1BQU0sS0FBSyxlQUFlO1lBQzlCLE1BQU0sQ0FBQ1UsS0FBSyxHQUFHWCxJQUFJWSxJQUFJO1lBQ3ZCLElBQUlELFNBQVNKLE9BQU9NLElBQUksQ0FBQ0MsTUFBTSxDQUFDQyxRQUFRLEVBQUU7Z0JBQ3JDLElBQUduQixVQUFVLEVBQUVNLFdBQVcsQ0FBQ0MsS0FBS0MsU0FBUyxDQUFDO29CQUN2Q0MsT0FBTztvQkFDUEMsVUFBVUMsT0FBT0MsaUJBQWlCO29CQUNsQ0c7Z0JBQ0o7Z0JBQ0EsT0FBT0osT0FBT0UsUUFBUSxDQUFDQyxNQUFNO1lBQ2pDLENBQUM7WUFDRDtRQUNKLENBQUM7UUFDRCxJQUFJVixJQUFJQyxNQUFNLEtBQUssYUFBYTtZQUM1QixNQUFNLENBQUNVLEtBQUssR0FBR1gsSUFBSVksSUFBSTtZQUN2QixJQUFJRCxTQUFTSixPQUFPTSxJQUFJLENBQUNDLE1BQU0sQ0FBQ0MsUUFBUSxJQUFJLE9BQU9SLE9BQU9NLElBQUksQ0FBQ0MsTUFBTSxDQUFDRSxVQUFVLENBQUNMLEtBQUssS0FBSyxhQUFhO2dCQUNuRyxJQUFHZixVQUFVLEVBQUVNLFdBQVcsQ0FBQ0MsS0FBS0MsU0FBUyxDQUFDO29CQUN2Q0MsT0FBTztvQkFDUEMsVUFBVUMsT0FBT0MsaUJBQWlCO29CQUNsQ0c7Z0JBQ0o7Z0JBQ0EsT0FBT0osT0FBT0UsUUFBUSxDQUFDQyxNQUFNO1lBQ2pDLENBQUM7WUFDRDtRQUNKLENBQUM7UUFDRCxNQUFNLElBQUlPLE1BQU0sdUJBQXVCakIsSUFBSUMsTUFBTSxFQUFFO0lBQ3ZEO0lBQ0EsT0FBT0g7QUFDWDtBQUNBUixrQkFBZSxHQUFHTztBQUVsQixJQUFJLENBQUMsT0FBT1AsUUFBUUUsT0FBTyxLQUFLLGNBQWUsT0FBT0YsUUFBUUUsT0FBTyxLQUFLLFlBQVlGLFFBQVFFLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT0YsUUFBUUUsT0FBTyxDQUFDMEIsVUFBVSxLQUFLLGFBQWE7SUFDcks5QixPQUFPQyxjQUFjLENBQUNDLFFBQVFFLE9BQU8sRUFBRSxjQUFjO1FBQUVELE9BQU8sSUFBSTtJQUFDO0lBQ25FSCxPQUFPK0IsTUFBTSxDQUFDN0IsUUFBUUUsT0FBTyxFQUFFRjtJQUMvQjhCLE9BQU85QixPQUFPLEdBQUdBLFFBQVFFLE9BQU87QUFDbEMsQ0FBQyxDQUVELHlEQUF5RCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L3dlYnBhY2staG90LW1pZGRsZXdhcmUtY2xpZW50LmpzPzIzYTMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG52YXIgX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0ID0gcmVxdWlyZShcIkBzd2MvaGVscGVycy9saWIvX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0LmpzXCIpLmRlZmF1bHQ7XG52YXIgX2hvdERldkNsaWVudCA9IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChyZXF1aXJlKFwiLi9lcnJvci1vdmVybGF5L2hvdC1kZXYtY2xpZW50XCIpKTtcbnZhciBfd2Vic29ja2V0ID0gcmVxdWlyZShcIi4vZXJyb3Itb3ZlcmxheS93ZWJzb2NrZXRcIik7XG52YXIgX2RlZmF1bHQgPSAoKT0+e1xuICAgIGNvbnN0IGRldkNsaWVudCA9ICgwLCBfaG90RGV2Q2xpZW50KS5kZWZhdWx0KCk7XG4gICAgZGV2Q2xpZW50LnN1YnNjcmliZVRvSG1yRXZlbnQoKG9iaik9PntcbiAgICAgICAgaWYgKG9iai5hY3Rpb24gPT09ICdyZWxvYWRQYWdlJykge1xuICAgICAgICAgICAgKDAsIF93ZWJzb2NrZXQpLnNlbmRNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBldmVudDogJ2NsaWVudC1yZWxvYWQtcGFnZScsXG4gICAgICAgICAgICAgICAgY2xpZW50SWQ6IHdpbmRvdy5fX25leHREZXZDbGllbnRJZFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob2JqLmFjdGlvbiA9PT0gJ3JlbW92ZWRQYWdlJykge1xuICAgICAgICAgICAgY29uc3QgW3BhZ2VdID0gb2JqLmRhdGE7XG4gICAgICAgICAgICBpZiAocGFnZSA9PT0gd2luZG93Lm5leHQucm91dGVyLnBhdGhuYW1lKSB7XG4gICAgICAgICAgICAgICAgKDAsIF93ZWJzb2NrZXQpLnNlbmRNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQ6ICdjbGllbnQtcmVtb3ZlZC1wYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50SWQ6IHdpbmRvdy5fX25leHREZXZDbGllbnRJZCxcbiAgICAgICAgICAgICAgICAgICAgcGFnZVxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvYmouYWN0aW9uID09PSAnYWRkZWRQYWdlJykge1xuICAgICAgICAgICAgY29uc3QgW3BhZ2VdID0gb2JqLmRhdGE7XG4gICAgICAgICAgICBpZiAocGFnZSA9PT0gd2luZG93Lm5leHQucm91dGVyLnBhdGhuYW1lICYmIHR5cGVvZiB3aW5kb3cubmV4dC5yb3V0ZXIuY29tcG9uZW50c1twYWdlXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAoMCwgX3dlYnNvY2tldCkuc2VuZE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICBldmVudDogJ2NsaWVudC1hZGRlZC1wYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50SWQ6IHdpbmRvdy5fX25leHREZXZDbGllbnRJZCxcbiAgICAgICAgICAgICAgICAgICAgcGFnZVxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCBhY3Rpb24gJyArIG9iai5hY3Rpb24pO1xuICAgIH0pO1xuICAgIHJldHVybiBkZXZDbGllbnQ7XG59O1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXdlYnBhY2staG90LW1pZGRsZXdhcmUtY2xpZW50LmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImRlZmF1bHQiLCJfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQiLCJyZXF1aXJlIiwiX2hvdERldkNsaWVudCIsIl93ZWJzb2NrZXQiLCJfZGVmYXVsdCIsImRldkNsaWVudCIsInN1YnNjcmliZVRvSG1yRXZlbnQiLCJvYmoiLCJhY3Rpb24iLCJzZW5kTWVzc2FnZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJldmVudCIsImNsaWVudElkIiwid2luZG93IiwiX19uZXh0RGV2Q2xpZW50SWQiLCJsb2NhdGlvbiIsInJlbG9hZCIsInBhZ2UiLCJkYXRhIiwibmV4dCIsInJvdXRlciIsInBhdGhuYW1lIiwiY29tcG9uZW50cyIsIkVycm9yIiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/client/dev/webpack-hot-middleware-client.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/has-base-path.js": /*!************************************************************!*\ !*** ../../node_modules/next/dist/client/has-base-path.js ***! \************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.hasBasePath = hasBasePath;\nvar _pathHasPrefix = __webpack_require__(/*! ../shared/lib/router/utils/path-has-prefix */ \"../../node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js\");\nconst basePath = false || \"\";\nfunction hasBasePath(path) {\n return (0, _pathHasPrefix).pathHasPrefix(path, basePath);\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=has-base-path.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvaGFzLWJhc2UtcGF0aC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU8sSUFBSTtBQUNmLENBQUMsRUFBQztBQUNGRCxtQkFBbUIsR0FBR0U7QUFDdEIsSUFBSUMsaUJBQWlCQyxtQkFBT0EsQ0FBQywySEFBNEM7QUFDekUsTUFBTUMsV0FBV0MsTUFBa0MsSUFBSTtBQUN2RCxTQUFTSixZQUFZTyxJQUFJLEVBQUU7SUFDdkIsT0FBTyxDQUFDLEdBQUdOLGNBQWMsRUFBRU8sYUFBYSxDQUFDRCxNQUFNSjtBQUNuRDtBQUVBLElBQUksQ0FBQyxPQUFPTCxRQUFRVyxPQUFPLEtBQUssY0FBZSxPQUFPWCxRQUFRVyxPQUFPLEtBQUssWUFBWVgsUUFBUVcsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPWCxRQUFRVyxPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLZCxPQUFPQyxjQUFjLENBQUNDLFFBQVFXLE9BQU8sRUFBRSxjQUFjO1FBQUVWLE9BQU8sSUFBSTtJQUFDO0lBQ25FSCxPQUFPZSxNQUFNLENBQUNiLFFBQVFXLE9BQU8sRUFBRVg7SUFDL0JjLE9BQU9kLE9BQU8sR0FBR0EsUUFBUVcsT0FBTztBQUNsQyxDQUFDLENBRUQseUNBQXlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9oYXMtYmFzZS1wYXRoLmpzP2UzZWMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmhhc0Jhc2VQYXRoID0gaGFzQmFzZVBhdGg7XG52YXIgX3BhdGhIYXNQcmVmaXggPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcGF0aC1oYXMtcHJlZml4XCIpO1xuY29uc3QgYmFzZVBhdGggPSBwcm9jZXNzLmVudi5fX05FWFRfUk9VVEVSX0JBU0VQQVRIIHx8ICcnO1xuZnVuY3Rpb24gaGFzQmFzZVBhdGgocGF0aCkge1xuICAgIHJldHVybiAoMCwgX3BhdGhIYXNQcmVmaXgpLnBhdGhIYXNQcmVmaXgocGF0aCwgYmFzZVBhdGgpO1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1oYXMtYmFzZS1wYXRoLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImhhc0Jhc2VQYXRoIiwiX3BhdGhIYXNQcmVmaXgiLCJyZXF1aXJlIiwiYmFzZVBhdGgiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1JPVVRFUl9CQVNFUEFUSCIsInBhdGgiLCJwYXRoSGFzUHJlZml4IiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/client/has-base-path.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/head-manager.js": /*!***********************************************************!*\ !*** ../../node_modules/next/dist/client/head-manager.js ***! \***********************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = initHeadManager;\nexports.isEqualNode = isEqualNode;\nexports.DOMAttributeNames = void 0;\nfunction initHeadManager() {\n return {\n mountedInstances: new Set(),\n updateHead: (head)=>{\n const tags = {};\n head.forEach((h)=>{\n if (// it won't be inlined. In this case revert to the original behavior\n h.type === \"link\" && h.props[\"data-optimized-fonts\"]) {\n if (document.querySelector('style[data-href=\"'.concat(h.props[\"data-href\"], '\"]'))) {\n return;\n } else {\n h.props.href = h.props[\"data-href\"];\n h.props[\"data-href\"] = undefined;\n }\n }\n const components = tags[h.type] || [];\n components.push(h);\n tags[h.type] = components;\n });\n const titleComponent = tags.title ? tags.title[0] : null;\n let title = \"\";\n if (titleComponent) {\n const { children } = titleComponent.props;\n title = typeof children === \"string\" ? children : Array.isArray(children) ? children.join(\"\") : \"\";\n }\n if (title !== document.title) document.title = title;\n [\n \"meta\",\n \"base\",\n \"link\",\n \"style\",\n \"script\"\n ].forEach((type)=>{\n updateElements(type, tags[type] || []);\n });\n }\n };\n}\nconst DOMAttributeNames = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\",\n noModule: \"noModule\"\n};\nexports.DOMAttributeNames = DOMAttributeNames;\nfunction reactElementToDOM(param) {\n let { type , props } = param;\n const el = document.createElement(type);\n for(const p in props){\n if (!props.hasOwnProperty(p)) continue;\n if (p === \"children\" || p === \"dangerouslySetInnerHTML\") continue;\n // we don't render undefined props to the DOM\n if (props[p] === undefined) continue;\n const attr = DOMAttributeNames[p] || p.toLowerCase();\n if (type === \"script\" && (attr === \"async\" || attr === \"defer\" || attr === \"noModule\")) {\n el[attr] = !!props[p];\n } else {\n el.setAttribute(attr, props[p]);\n }\n }\n const { children , dangerouslySetInnerHTML } = props;\n if (dangerouslySetInnerHTML) {\n el.innerHTML = dangerouslySetInnerHTML.__html || \"\";\n } else if (children) {\n el.textContent = typeof children === \"string\" ? children : Array.isArray(children) ? children.join(\"\") : \"\";\n }\n return el;\n}\nfunction isEqualNode(oldTag, newTag) {\n if (oldTag instanceof HTMLElement && newTag instanceof HTMLElement) {\n const nonce = newTag.getAttribute(\"nonce\");\n // Only strip the nonce if `oldTag` has had it stripped. An element's nonce attribute will not\n // be stripped if there is no content security policy response header that includes a nonce.\n if (nonce && !oldTag.getAttribute(\"nonce\")) {\n const cloneTag = newTag.cloneNode(true);\n cloneTag.setAttribute(\"nonce\", \"\");\n cloneTag.nonce = nonce;\n return nonce === oldTag.nonce && oldTag.isEqualNode(cloneTag);\n }\n }\n return oldTag.isEqualNode(newTag);\n}\nfunction updateElements(type, components) {\n const headEl = document.getElementsByTagName(\"head\")[0];\n const headCountEl = headEl.querySelector(\"meta[name=next-head-count]\");\n if (true) {\n if (!headCountEl) {\n console.error(\"Warning: next-head-count is missing. https://nextjs.org/docs/messages/next-head-count-missing\");\n return;\n }\n }\n const headCount = Number(headCountEl.content);\n const oldTags = [];\n for(let i = 0, j = headCountEl.previousElementSibling; i < headCount; i++, j = (j == null ? void 0 : j.previousElementSibling) || null){\n var ref;\n if ((j == null ? void 0 : (ref = j.tagName) == null ? void 0 : ref.toLowerCase()) === type) {\n oldTags.push(j);\n }\n }\n const newTags = components.map(reactElementToDOM).filter((newTag)=>{\n for(let k = 0, len = oldTags.length; k < len; k++){\n const oldTag = oldTags[k];\n if (isEqualNode(oldTag, newTag)) {\n oldTags.splice(k, 1);\n return false;\n }\n }\n return true;\n });\n oldTags.forEach((t)=>{\n var ref;\n return (ref = t.parentNode) == null ? void 0 : ref.removeChild(t);\n });\n newTags.forEach((t)=>headEl.insertBefore(t, headCountEl));\n headCountEl.content = (headCount - oldTags.length + newTags.length).toString();\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=head-manager.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvaGVhZC1tYW5hZ2VyLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTyxJQUFJO0FBQ2YsQ0FBQyxFQUFDO0FBQ0ZELGtCQUFlLEdBQUdHO0FBQ2xCSCxtQkFBbUIsR0FBR0k7QUFDdEJKLHlCQUF5QixHQUFHLEtBQUs7QUFDakMsU0FBU0csa0JBQWtCO0lBQ3ZCLE9BQU87UUFDSEcsa0JBQWtCLElBQUlDO1FBQ3RCQyxZQUFZLENBQUNDLE9BQU87WUFDaEIsTUFBTUMsT0FBTyxDQUFDO1lBQ2RELEtBQUtFLE9BQU8sQ0FBQyxDQUFDQyxJQUFJO2dCQUNkLElBQ0Esb0VBQW9FO2dCQUNwRUEsRUFBRUMsSUFBSSxLQUFLLFVBQVVELEVBQUVFLEtBQUssQ0FBQyx1QkFBdUIsRUFBRTtvQkFDbEQsSUFBSUMsU0FBU0MsYUFBYSxDQUFDLG9CQUF5QyxPQUFyQkosRUFBRUUsS0FBSyxDQUFDLFlBQVksRUFBQyxRQUFNO3dCQUN0RTtvQkFDSixPQUFPO3dCQUNIRixFQUFFRSxLQUFLLENBQUNHLElBQUksR0FBR0wsRUFBRUUsS0FBSyxDQUFDLFlBQVk7d0JBQ25DRixFQUFFRSxLQUFLLENBQUMsWUFBWSxHQUFHSTtvQkFDM0IsQ0FBQztnQkFDTCxDQUFDO2dCQUNELE1BQU1DLGFBQWFULElBQUksQ0FBQ0UsRUFBRUMsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDckNNLFdBQVdDLElBQUksQ0FBQ1I7Z0JBQ2hCRixJQUFJLENBQUNFLEVBQUVDLElBQUksQ0FBQyxHQUFHTTtZQUNuQjtZQUNBLE1BQU1FLGlCQUFpQlgsS0FBS1ksS0FBSyxHQUFHWixLQUFLWSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUk7WUFDeEQsSUFBSUEsUUFBUTtZQUNaLElBQUlELGdCQUFnQjtnQkFDaEIsTUFBTSxFQUFFRSxTQUFRLEVBQUcsR0FBR0YsZUFBZVAsS0FBSztnQkFDMUNRLFFBQVEsT0FB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SUFBSSxDQUFDLE9BQU85RSxRQUFRRSxPQUFPLEtBQUssY0FBZSxPQUFPRixRQUFRRSxPQUFPLEtBQUssWUFBWUYsUUFBUUUsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPRixRQUFRRSxPQUFPLENBQUM2RSxVQUFVLEtBQUssYUFBYTtJQUNyS2pGLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUUUsT0FBTyxFQUFFLGNBQWM7UUFBRUQsT0FBTyxJQUFJO0lBQUM7SUFDbkVILE9BQU9rRixNQUFNLENBQUNoRixRQUFRRSxPQUFPLEVBQUVGO0lBQy9CaUYsT0FBT2pGLE9BQU8sR0FBR0EsUUFBUUUsT0FBTztBQUNsQyxDQUFDLENBRUQsd0NBQXdDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9oZWFkLW1hbmFnZXIuanM/NzM2OSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGluaXRIZWFkTWFuYWdlcjtcbmV4cG9ydHMuaXNFcXVhbE5vZGUgPSBpc0VxdWFsTm9kZTtcbmV4cG9ydHMuRE9NQXR0cmlidXRlTmFtZXMgPSB2b2lkIDA7XG5mdW5jdGlvbiBpbml0SGVhZE1hbmFnZXIoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbW91bnRlZEluc3RhbmNlczogbmV3IFNldCgpLFxuICAgICAgICB1cGRhdGVIZWFkOiAoaGVhZCk9PntcbiAgICAgICAgICAgIGNvbnN0IHRhZ3MgPSB7fTtcbiAgICAgICAgICAgIGhlYWQuZm9yRWFjaCgoaCk9PntcbiAgICAgICAgICAgICAgICBpZiAoLy8gSWYgdGhlIGZvbnQgdGFnIGlzIGxvYWRlZCBvbmx5IG9uIGNsaWVudCBuYXZpZ2F0aW9uXG4gICAgICAgICAgICAgICAgLy8gaXQgd29uJ3QgYmUgaW5saW5lZC4gSW4gdGhpcyBjYXNlIHJldmVydCB0byB0aGUgb3JpZ2luYWwgYmVoYXZpb3JcbiAgICAgICAgICAgICAgICBoLnR5cGUgPT09ICdsaW5rJyAmJiBoLnByb3BzWydkYXRhLW9wdGltaXplZC1mb250cyddKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBzdHlsZVtkYXRhLWhyZWY9XCIke2gucHJvcHNbJ2RhdGEtaHJlZiddfVwiXWApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoLnByb3BzLmhyZWYgPSBoLnByb3BzWydkYXRhLWhyZWYnXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGgucHJvcHNbJ2RhdGEtaHJlZiddID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSB0YWdzW2gudHlwZV0gfHwgW107XG4gICAgICAgICAgICAgICAgY29tcG9uZW50cy5wdXNoKGgpO1xuICAgICAgICAgICAgICAgIHRhZ3NbaC50eXBlXSA9IGNvbXBvbmVudHM7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IHRpdGxlQ29tcG9uZW50ID0gdGFncy50aXRsZSA/IHRhZ3MudGl0bGVbMF0gOiBudWxsO1xuICAgICAgICAgICAgbGV0IHRpdGxlID0gJyc7XG4gICAgICAgICAgICBpZiAodGl0bGVDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGNoaWxkcmVuICB9ID0gdGl0bGVDb21wb25lbnQucHJvcHM7XG4gICAgICAgICAgICAgICAgdGl0bGUgPSB0eXBlb2YgY2hpbGRyZW4gPT09ICdzdHJpbmcnID8gY2hpbGRyZW4gOiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSA/IGNoaWxkcmVuLmpvaW4oJycpIDogJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGl0bGUgIT09IGRvY3VtZW50LnRpdGxlKSBkb2N1bWVudC50aXRsZSA9IHRpdGxlO1xuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICdtZXRhJyxcbiAgICAgICAgICAgICAgICAnYmFzZScsXG4gICAgICAgICAgICAgICAgJ2xpbmsnLFxuICAgICAgICAgICAgICAgICdzdHlsZScsXG4gICAgICAgICAgICAgICAgJ3NjcmlwdCdcbiAgICAgICAgICAgIF0uZm9yRWFjaCgodHlwZSk9PntcbiAgICAgICAgICAgICAgICB1cGRhdGVFbGVtZW50cyh0eXBlLCB0YWdzW3R5cGVdIHx8IFtdKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmNvbnN0IERPTUF0dHJpYnV0ZU5hbWVzID0ge1xuICAgIGFjY2VwdENoYXJzZXQ6ICdhY2NlcHQtY2hhcnNldCcsXG4gICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgIGh0bWxGb3I6ICdmb3InLFxuICAgIGh0dHBFcXVpdjogJ2h0dHAtZXF1aXYnLFxuICAgIG5vTW9kdWxlOiAnbm9Nb2R1bGUnXG59O1xuZXhwb3J0cy5ET01BdHRyaWJ1dGVOYW1lcyA9IERPTUF0dHJpYnV0ZU5hbWVzO1xuZnVuY3Rpb24gcmVhY3RFbGVtZW50VG9ET00oeyB0eXBlICwgcHJvcHMgIH0pIHtcbiAgICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodHlwZSk7XG4gICAgZm9yKGNvbnN0IHAgaW4gcHJvcHMpe1xuICAgICAgICBpZiAoIXByb3BzLmhhc093blByb3BlcnR5KHApKSBjb250aW51ZTtcbiAgICAgICAgaWYgKHAgPT09ICdjaGlsZHJlbicgfHwgcCA9PT0gJ2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MJykgY29udGludWU7XG4gICAgICAgIC8vIHdlIGRvbid0IHJlbmRlciB1bmRlZmluZWQgcHJvcHMgdG8gdGhlIERPTVxuICAgICAgICBpZiAocHJvcHNbcF0gPT09IHVuZGVmaW5lZCkgY29udGludWU7XG4gICAgICAgIGNvbnN0IGF0dHIgPSBET01BdHRyaWJ1dGVOYW1lc1twXSB8fCBwLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICh0eXBlID09PSAnc2NyaXB0JyAmJiAoYXR0ciA9PT0gJ2FzeW5jJyB8fCBhdHRyID09PSAnZGVmZXInIHx8IGF0dHIgPT09ICdub01vZHVsZScpKSB7XG4gICAgICAgICAgICBlbFthdHRyXSA9ICEhcHJvcHNbcF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoYXR0ciwgcHJvcHNbcF0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHsgY2hpbGRyZW4gLCBkYW5nZXJvdXNseVNldElubmVySFRNTCAgfSA9IHByb3BzO1xuICAgIGlmIChkYW5nZXJvdXNseVNldElubmVySFRNTCkge1xuICAgICAgICBlbC5pbm5lckhUTUwgPSBkYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWwgfHwgJyc7XG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xuICAgICAgICBlbC50ZXh0Q29udGVudCA9IHR5cGVvZiBjaGlsZHJlbiA9PT0gJ3N0cmluZycgPyBjaGlsZHJlbiA6IEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pID8gY2hpbGRyZW4uam9pbignJykgOiAnJztcbiAgICB9XG4gICAgcmV0dXJuIGVsO1xufVxuZnVuY3Rpb24gaXNFcXVhbE5vZGUob2xkVGFnLCBuZXdUYWcpIHtcbiAgICBpZiAob2xkVGFnIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgbmV3VGFnIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3Qgbm9uY2UgPSBuZXdUYWcuZ2V0QXR0cmlidXRlKCdub25jZScpO1xuICAgICAgICAvLyBPbmx5IHN0cmlwIHRoZSBub25jZSBpZiBgb2xkVGFnYCBoYXMgaGFkIGl0IHN0cmlwcGVkLiBBbiBlbGVtZW50J3Mgbm9uY2UgYXR0cmlidXRlIHdpbGwgbm90XG4gICAgICAgIC8vIGJlIHN0cmlwcGVkIGlmIHRoZXJlIGlzIG5vIGNvbnRlbnQgc2VjdXJpdHkgcG9saWN5IHJlc3BvbnNlIGhlYWRlciB0aGF0IGluY2x1ZGVzIGEgbm9uY2UuXG4gICAgICAgIGlmIChub25jZSAmJiAhb2xkVGFnLmdldEF0dHJpYnV0ZSgnbm9uY2UnKSkge1xuICAgICAgICAgICAgY29uc3QgY2xvbmVUYWcgPSBuZXdUYWcuY2xvbmVOb2RlKHRydWUpO1xuICAgICAgICAgICAgY2xvbmVUYWcuc2V0QXR0cmlidXRlKCdub25jZScsICcnKTtcbiAgICAgICAgICAgIGNsb25lVGFnLm5vbmNlID0gbm9uY2U7XG4gICAgICAgICAgICByZXR1cm4gbm9uY2UgPT09IG9sZFRhZy5ub25jZSAmJiBvbGRUYWcuaXNFcXVhbE5vZGUoY2xvbmVUYWcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvbGRUYWcuaXNFcXVhbE5vZGUobmV3VGFnKTtcbn1cbmZ1bmN0aW9uIHVwZGF0ZUVsZW1lbnRzKHR5cGUsIGNvbXBvbmVudHMpIHtcbiAgICBjb25zdCBoZWFkRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuICAgIGNvbnN0IGhlYWRDb3VudEVsID0gaGVhZEVsLnF1ZXJ5U2VsZWN0b3IoJ21ldGFbbmFtZT1uZXh0LWhlYWQtY291bnRdJyk7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgaWYgKCFoZWFkQ291bnRFbCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignV2FybmluZzogbmV4dC1oZWFkLWNvdW50IGlzIG1pc3NpbmcuIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL25leHQtaGVhZC1jb3VudC1taXNzaW5nJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgaGVhZENvdW50ID0gTnVtYmVyKGhlYWRDb3VudEVsLmNvbnRlbnQpO1xuICAgIGNvbnN0IG9sZFRhZ3MgPSBbXTtcbiAgICBmb3IobGV0IGkgPSAwLCBqID0gaGVhZENvdW50RWwucHJldmlvdXNFbGVtZW50U2libGluZzsgaSA8IGhlYWRDb3VudDsgaSsrLCBqID0gKGogPT0gbnVsbCA/IHZvaWQgMCA6IGoucHJldmlvdXNFbGVtZW50U2libGluZykgfHwgbnVsbCl7XG4gICAgICAgIHZhciByZWY7XG4gICAgICAgIGlmICgoaiA9PSBudWxsID8gdm9pZCAwIDogKHJlZiA9IGoudGFnTmFtZSkgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZi50b0xvd2VyQ2FzZSgpKSA9PT0gdHlwZSkge1xuICAgICAgICAgICAgb2xkVGFncy5wdXNoKGopO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IG5ld1RhZ3MgPSBjb21wb25lbnRzLm1hcChyZWFjdEVsZW1lbnRUb0RPTSkuZmlsdGVyKChuZXdUYWcpPT57XG4gICAgICAgIGZvcihsZXQgayA9IDAsIGxlbiA9IG9sZFRhZ3MubGVuZ3RoOyBrIDwgbGVuOyBrKyspe1xuICAgICAgICAgICAgY29uc3Qgb2xkVGFnID0gb2xkVGFnc1trXTtcbiAgICAgICAgICAgIGlmIChpc0VxdWFsTm9kZShvbGRUYWcsIG5ld1RhZykpIHtcbiAgICAgICAgICAgICAgICBvbGRUYWdzLnNwbGljZShrLCAxKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gICAgb2xkVGFncy5mb3JFYWNoKCh0KT0+e1xuICAgICAgICB2YXIgcmVmO1xuICAgICAgICByZXR1cm4gKHJlZiA9IHQucGFyZW50Tm9kZSkgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZi5yZW1vdmVDaGlsZCh0KTtcbiAgICB9KTtcbiAgICBuZXdUYWdzLmZvckVhY2goKHQpPT5oZWFkRWwuaW5zZXJ0QmVmb3JlKHQsIGhlYWRDb3VudEVsKSk7XG4gICAgaGVhZENvdW50RWwuY29udGVudCA9IChoZWFkQ291bnQgLSBvbGRUYWdzLmxlbmd0aCArIG5ld1RhZ3MubGVuZ3RoKS50b1N0cmluZygpO1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1oZWFkLW1hbmFnZXIuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZGVmYXVsdCIsImluaXRIZWFkTWFuYWdlciIsImlzRXF1YWxOb2RlIiwiRE9NQXR0cmlidXRlTmFtZXMiLCJtb3VudGVkSW5zdGFuY2VzIiwiU2V0IiwidXBkYXRlSGVhZCIsImhlYWQiLCJ0YWdzIiwiZm9yRWFjaCIsImgiLCJ0eXBlIiwicHJvcHMiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJocmVmIiwidW5kZWZpbmVkIiwiY29tcG9uZW50cyIsInB1c2giLCJ0aXRsZUNvbXBvbmVudCIsInRpdGxlIiwiY2hpbGRyZW4iLCJBcnJheSIsImlzQXJyYXkiLCJqb2luIiwidXBkYXRlRWxlbWVudHMiLCJhY2NlcHRDaGFyc2V0IiwiY2xhc3NOYW1lIiwiaHRtbEZvciIsImh0dHBFcXVpdiIsIm5vTW9kdWxlIiwicmVhY3RFbGVtZW50VG9ET00iLCJlbCIsImNyZWF0ZUVsZW1lbnQiLCJwIiwiaGFzT3duUHJvcGVydHkiLCJhdHRyIiwidG9Mb3dlckNhc2UiLCJzZXRBdHRyaWJ1dGUiLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsImlubmVySFRNTCIsIl9faHRtbCIsInRleHRDb250ZW50Iiwib2xkVGFnIiwibmV3VGFnIiwiSFRNTEVsZW1lbnQiLCJub25jZSIsImdldEF0dHJpYnV0ZSIsImNsb25lVGFnIiwiY2xvbmVOb2RlIiwiaGVhZEVsIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJoZWFkQ291bnRFbCIsInByb2Nlc3MiLCJjb25zb2xlIiwiZXJyb3IiLCJoZWFkQ291bnQiLCJOdW1iZXIiLCJjb250ZW50Iiwib2xkVGFncyIsImkiLCJqIiwicHJldmlvdXNFbGVtZW50U2libGluZyIsInJlZiIsInRhZ05hbWUiLCJuZXdUYWdzIiwibWFwIiwiZmlsdGVyIiwiayIsImxlbiIsImxlbmd0aCIsInNwbGljZSIsInQiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJ0b1N0cmluZyIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/client/head-manager.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/index.js": /*!****************************************************!*\ !*** ../../node_modules/next/dist/client/index.js ***! \****************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nconst _interopRequireWildcard = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_wildcard.js */ \"../../node_modules/@swc/helpers/lib/_interop_require_wildcard.js\")[\"default\"]);\nvar _s = $RefreshSig$(), _s1 = $RefreshSig$();\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.initialize = initialize;\nexports.hydrate = hydrate;\nexports.emitter = exports.router = exports.version = void 0;\nvar _async_to_generator = (__webpack_require__(/*! @swc/helpers/lib/_async_to_generator.js */ \"../../node_modules/@swc/helpers/lib/_async_to_generator.js\")[\"default\"]);\nvar _extends = (__webpack_require__(/*! @swc/helpers/lib/_extends.js */ \"../../node_modules/@swc/helpers/lib/_extends.js\")[\"default\"]);\nvar _interop_require_default = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _interop_require_wildcard = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_wildcard.js */ \"../../node_modules/@swc/helpers/lib/_interop_require_wildcard.js\")[\"default\"]);\n__webpack_require__(/*! ../build/polyfills/polyfill-module */ \"../../node_modules/next/dist/build/polyfills/polyfill-module.js\");\nvar _react = _interop_require_default(__webpack_require__(/*! react */ \"../../node_modules/react/index.js\"));\nvar _client = _interop_require_default(__webpack_require__(/*! react-dom/client */ \"../../node_modules/react-dom/client.js\"));\nvar _headManagerContext = __webpack_require__(/*! ../shared/lib/head-manager-context */ \"../../node_modules/next/dist/shared/lib/head-manager-context.js\");\nvar _mitt = _interop_require_default(__webpack_require__(/*! ../shared/lib/mitt */ \"../../node_modules/next/dist/shared/lib/mitt.js\"));\nvar _routerContext = __webpack_require__(/*! ../shared/lib/router-context */ \"../../node_modules/next/dist/shared/lib/router-context.js\");\nvar _handleSmoothScroll = __webpack_require__(/*! ../shared/lib/router/utils/handle-smooth-scroll */ \"../../node_modules/next/dist/shared/lib/router/utils/handle-smooth-scroll.js\");\nvar _isDynamic = __webpack_require__(/*! ../shared/lib/router/utils/is-dynamic */ \"../../node_modules/next/dist/shared/lib/router/utils/is-dynamic.js\");\nvar _querystring = __webpack_require__(/*! ../shared/lib/router/utils/querystring */ \"../../node_modules/next/dist/shared/lib/router/utils/querystring.js\");\nvar _runtimeConfig = __webpack_require__(/*! ../shared/lib/runtime-config */ \"../../node_modules/next/dist/shared/lib/runtime-config.js\");\nvar _utils = __webpack_require__(/*! ../shared/lib/utils */ \"../../node_modules/next/dist/shared/lib/utils.js\");\nvar _portal = __webpack_require__(/*! ./portal */ \"../../node_modules/next/dist/client/portal/index.js\");\nvar _headManager = _interop_require_default(__webpack_require__(/*! ./head-manager */ \"../../node_modules/next/dist/client/head-manager.js\"));\nvar _pageLoader = _interop_require_default(__webpack_require__(/*! ./page-loader */ \"../../node_modules/next/dist/client/page-loader.js\"));\nvar _performanceRelayer = _interop_require_default(__webpack_require__(/*! ./performance-relayer */ \"../../node_modules/next/dist/client/performance-relayer.js\"));\nvar _routeAnnouncer = __webpack_require__(/*! ./route-announcer */ \"../../node_modules/next/dist/client/route-announcer.js\");\nvar _router = __webpack_require__(/*! ./router */ \"../../node_modules/next/dist/client/router.js\");\nvar _isError = __webpack_require__(/*! ../lib/is-error */ \"../../node_modules/next/dist/lib/is-error.js\");\nvar _imageConfigContext = __webpack_require__(/*! ../shared/lib/image-config-context */ \"../../node_modules/next/dist/shared/lib/image-config-context.js\");\nvar _removeBasePath = __webpack_require__(/*! ./remove-base-path */ \"../../node_modules/next/dist/client/remove-base-path.js\");\nvar _hasBasePath = __webpack_require__(/*! ./has-base-path */ \"../../node_modules/next/dist/client/has-base-path.js\");\nvar _appRouterContext = __webpack_require__(/*! ../shared/lib/app-router-context */ \"../../node_modules/next/dist/shared/lib/app-router-context.js\");\nvar _adapters = __webpack_require__(/*! ../shared/lib/router/adapters */ \"../../node_modules/next/dist/shared/lib/router/adapters.js\");\nvar _hooksClientContext = __webpack_require__(/*! ../shared/lib/hooks-client-context */ \"../../node_modules/next/dist/shared/lib/hooks-client-context.js\");\nvar _onRecoverableError = _interop_require_default(__webpack_require__(/*! ./on-recoverable-error */ \"../../node_modules/next/dist/client/on-recoverable-error.js\"));\nconst version = \"13.2.4\";\nexports.version = version;\nlet router;\nexports.router = router;\nconst emitter = (0, _mitt).default();\nexports.emitter = emitter;\nconst looseToArray = (input)=>[].slice.call(input);\nlet initialData;\nlet defaultLocale = undefined;\nlet asPath;\nlet pageLoader;\nlet appElement;\nlet headManager;\nlet initialMatchesMiddleware = false;\nlet lastAppProps;\nlet lastRenderReject;\nlet webpackHMR;\nlet CachedApp, onPerfEntry;\nlet CachedComponent;\nself.__next_require__ = __webpack_require__;\nclass Container extends _react.default.Component {\n componentDidCatch(componentErr, info) {\n this.props.fn(componentErr, info);\n }\n componentDidMount() {\n this.scrollToHash();\n // We need to replace the router state if:\n // - the page was (auto) exported and has a query string or search (hash)\n // - it was auto exported and is a dynamic route (to provide params)\n // - if it is a client-side skeleton (fallback render)\n // - if middleware matches the current page (may have rewrite params)\n // - if rewrites in next.config.js match (may have rewrite params)\n if (router.isSsr && (initialData.isFallback || initialData.nextExport && ((0, _isDynamic).isDynamicRoute(router.pathname) || location.search || false || initialMatchesMiddleware) || initialData.props && initialData.props.__N_SSG && (location.search || false || initialMatchesMiddleware))) {\n // update query on mount for exported pages\n router.replace(router.pathname + \"?\" + String((0, _querystring).assign((0, _querystring).urlQueryToSearchParams(router.query), new URLSearchParams(location.search))), asPath, {\n // @ts-ignore\n // WARNING: `_h` is an internal option for handing Next.js\n // client-side hydration. Your app should _never_ use this property.\n // It may change at any time without notice.\n _h: 1,\n // Fallback pages must trigger the data fetch, so the transition is\n // not shallow.\n // Other pages (strictly updating query) happens shallowly, as data\n // requirements would already be present.\n shallow: !initialData.isFallback && !initialMatchesMiddleware\n }).catch((err)=>{\n if (!err.cancelled) throw err;\n });\n }\n }\n componentDidUpdate() {\n this.scrollToHash();\n }\n scrollToHash() {\n let { hash } = location;\n hash = hash && hash.substring(1);\n if (!hash) return;\n const el = document.getElementById(hash);\n if (!el) return;\n // If we call scrollIntoView() in here without a setTimeout\n // it won't scroll properly.\n setTimeout(()=>el.scrollIntoView(), 0);\n }\n render() {\n if (false) {} else {\n const { ReactDevOverlay } = __webpack_require__(/*! next/dist/compiled/@next/react-dev-overlay/dist/client */ \"../../node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js\");\n return /*#__PURE__*/ _react.default.createElement(ReactDevOverlay, null, this.props.children);\n }\n }\n}\nfunction initialize() {\n return _initialize.apply(this, arguments);\n}\nfunction _initialize() {\n _initialize = _async_to_generator(function*() {\n let opts = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n // This makes sure this specific lines are removed in production\n if (true) {\n webpackHMR = opts.webpackHMR;\n }\n initialData = JSON.parse(document.getElementById(\"__NEXT_DATA__\").textContent);\n window.__NEXT_DATA__ = initialData;\n defaultLocale = initialData.defaultLocale;\n const prefix = initialData.assetPrefix || \"\";\n // With dynamic assetPrefix it's no longer possible to set assetPrefix at the build time\n // So, this is how we do it in the client side at runtime\n __webpack_require__.p = \"\".concat(prefix, \"/_next/\") //eslint-disable-line\n ;\n // Initialize next/config with the environment configuration\n (0, _runtimeConfig).setConfig({\n serverRuntimeConfig: {},\n publicRuntimeConfig: initialData.runtimeConfig || {}\n });\n asPath = (0, _utils).getURL();\n // make sure not to attempt stripping basePath for 404s\n if ((0, _hasBasePath).hasBasePath(asPath)) {\n asPath = (0, _removeBasePath).removeBasePath(asPath);\n }\n if (false) {}\n if (initialData.scriptLoader) {\n const { initScriptLoader } = __webpack_require__(/*! ./script */ \"../../node_modules/next/dist/client/script.js\");\n initScriptLoader(initialData.scriptLoader);\n }\n pageLoader = new _pageLoader.default(initialData.buildId, prefix);\n const register = (param)=>{\n let [r, f] = param;\n return pageLoader.routeLoader.onEntrypoint(r, f);\n };\n if (window.__NEXT_P) {\n // Defer page registration for another tick. This will increase the overall\n // latency in hydrating the page, but reduce the total blocking time.\n window.__NEXT_P.map((p)=>setTimeout(()=>register(p), 0));\n }\n window.__NEXT_P = [];\n window.__NEXT_P.push = register;\n headManager = (0, _headManager).default();\n headManager.getIsSsr = ()=>{\n return router.isSsr;\n };\n appElement = document.getElementById(\"__next\");\n return {\n assetPrefix: prefix\n };\n });\n return _initialize.apply(this, arguments);\n}\nfunction renderApp(App, appProps) {\n return /*#__PURE__*/ _react.default.createElement(App, Object.assign({}, appProps));\n}\nfunction AppContainer(param) {\n let { children } = param;\n var _autoExport;\n return /*#__PURE__*/ _react.default.createElement(Container, {\n fn: (error)=>// eslint-disable-next-line @typescript-eslint/no-use-before-define\n renderError({\n App: CachedApp,\n err: error\n }).catch((err)=>console.error(\"Error rendering page: \", err))\n }, /*#__PURE__*/ _react.default.createElement(_appRouterContext.AppRouterContext.Provider, {\n value: (0, _adapters).adaptForAppRouterInstance(router)\n }, /*#__PURE__*/ _react.default.createElement(_hooksClientContext.SearchParamsContext.Provider, {\n value: (0, _adapters).adaptForSearchParams(router)\n }, /*#__PURE__*/ _react.default.createElement(_adapters.PathnameContextProviderAdapter, {\n router: router,\n isAutoExport: (_autoExport = self.__NEXT_DATA__.autoExport) != null ? _autoExport : false\n }, /*#__PURE__*/ _react.default.createElement(_routerContext.RouterContext.Provider, {\n value: (0, _router).makePublicRouterInstance(router)\n }, /*#__PURE__*/ _react.default.createElement(_headManagerContext.HeadManagerContext.Provider, {\n value: headManager\n }, /*#__PURE__*/ _react.default.createElement(_imageConfigContext.ImageConfigContext.Provider, {\n value: {\"deviceSizes\":[640,750,828,1080,1200,1920,2048,3840],\"imageSizes\":[16,32,48,64,96,128,256,384],\"path\":\"/_next/image\",\"loader\":\"default\",\"dangerouslyAllowSVG\":false,\"unoptimized\":false,\"domains\":[],\"remotePatterns\":[]}\n }, children)))))));\n}\n_c = AppContainer;\nconst wrapApp = (App)=>(wrappedAppProps)=>{\n const appProps = _extends({}, wrappedAppProps, {\n Component: CachedComponent,\n err: initialData.err,\n router\n });\n return /*#__PURE__*/ _react.default.createElement(AppContainer, null, renderApp(App, appProps));\n };\n// This method handles all runtime and debug errors.\n// 404 and 500 errors are special kind of errors\n// and they are still handle via the main render method.\nfunction renderError(renderErrorProps) {\n let { App , err } = renderErrorProps;\n // In development runtime errors are caught by our overlay\n // In production we catch runtime errors using componentDidCatch which will trigger renderError\n if (true) {\n // A Next.js rendering runtime error is always unrecoverable\n // FIXME: let's make this recoverable (error in GIP client-transition)\n webpackHMR.onUnrecoverableError();\n // We need to render an empty so that the `` can\n // render itself.\n // TODO: Fix disabled eslint rule\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return doRender({\n App: ()=>null,\n props: {},\n Component: ()=>null,\n styleSheets: []\n });\n }\n // Make sure we log the error to the console, otherwise users can't track down issues.\n console.error(err);\n console.error(\"A client-side exception has occurred, see here for more info: https://nextjs.org/docs/messages/client-side-exception-occurred\");\n return pageLoader.loadPage(\"/_error\").then((param)=>{\n let { page: ErrorComponent , styleSheets } = param;\n return (lastAppProps == null ? void 0 : lastAppProps.Component) === ErrorComponent ? Promise.resolve().then(()=>/*#__PURE__*/ _interopRequireWildcard(__webpack_require__(/*! ../pages/_error */ \"../../node_modules/next/dist/pages/_error.js\"))).then((errorModule)=>{\n return Promise.resolve().then(()=>/*#__PURE__*/ _interopRequireWildcard(__webpack_require__(/*! ../pages/_app */ \"../../node_modules/next/dist/pages/_app.js\"))).then((appModule)=>{\n App = appModule.default;\n renderErrorProps.App = App;\n return errorModule;\n });\n }).then((m)=>({\n ErrorComponent: m.default,\n styleSheets: []\n })) : {\n ErrorComponent,\n styleSheets\n };\n }).then((param)=>{\n let { ErrorComponent , styleSheets } = param;\n var ref;\n // In production we do a normal render with the `ErrorComponent` as component.\n // If we've gotten here upon initial render, we can use the props from the server.\n // Otherwise, we need to call `getInitialProps` on `App` before mounting.\n const AppTree = wrapApp(App);\n const appCtx = {\n Component: ErrorComponent,\n AppTree,\n router,\n ctx: {\n err,\n pathname: initialData.page,\n query: initialData.query,\n asPath,\n AppTree\n }\n };\n return Promise.resolve(((ref = renderErrorProps.props) == null ? void 0 : ref.err) ? renderErrorProps.props : (0, _utils).loadGetInitialProps(App, appCtx)).then((initProps)=>// eslint-disable-next-line @typescript-eslint/no-use-before-define\n doRender(_extends({}, renderErrorProps, {\n err,\n Component: ErrorComponent,\n styleSheets,\n props: initProps\n })));\n });\n}\n// Dummy component that we render as a child of Root so that we can\n// toggle the correct styles before the page is rendered.\nfunction Head(param) {\n let { callback } = param;\n _s();\n // We use `useLayoutEffect` to guarantee the callback is executed\n // as soon as React flushes the update.\n _react.default.useLayoutEffect(()=>callback(), [\n callback\n ]);\n return null;\n}\n_s(Head, \"n7/vCynhJvM+pLkyL2DMQUF0odM=\");\n_c1 = Head;\nlet reactRoot = null;\n// On initial render a hydrate should always happen\nlet shouldHydrate = true;\nfunction clearMarks() {\n [\n \"beforeRender\",\n \"afterHydrate\",\n \"afterRender\",\n \"routeChange\"\n ].forEach((mark)=>performance.clearMarks(mark));\n}\nfunction markHydrateComplete() {\n if (!_utils.ST) return;\n performance.mark(\"afterHydrate\") // mark end of hydration\n ;\n performance.measure(\"Next.js-before-hydration\", \"navigationStart\", \"beforeRender\");\n performance.measure(\"Next.js-hydration\", \"beforeRender\", \"afterHydrate\");\n if (onPerfEntry) {\n performance.getEntriesByName(\"Next.js-hydration\").forEach(onPerfEntry);\n }\n clearMarks();\n}\nfunction markRenderComplete() {\n if (!_utils.ST) return;\n performance.mark(\"afterRender\") // mark end of render\n ;\n const navStartEntries = performance.getEntriesByName(\"routeChange\", \"mark\");\n if (!navStartEntries.length) return;\n performance.measure(\"Next.js-route-change-to-render\", navStartEntries[0].name, \"beforeRender\");\n performance.measure(\"Next.js-render\", \"beforeRender\", \"afterRender\");\n if (onPerfEntry) {\n performance.getEntriesByName(\"Next.js-render\").forEach(onPerfEntry);\n performance.getEntriesByName(\"Next.js-route-change-to-render\").forEach(onPerfEntry);\n }\n clearMarks();\n [\n \"Next.js-route-change-to-render\",\n \"Next.js-render\"\n ].forEach((measure)=>performance.clearMeasures(measure));\n}\nfunction renderReactElement(domEl, fn) {\n // mark start of hydrate/render\n if (_utils.ST) {\n performance.mark(\"beforeRender\");\n }\n const reactEl = fn(shouldHydrate ? markHydrateComplete : markRenderComplete);\n if (!reactRoot) {\n // Unlike with createRoot, you don't need a separate root.render() call here\n reactRoot = _client.default.hydrateRoot(domEl, reactEl, {\n onRecoverableError: _onRecoverableError.default\n });\n // TODO: Remove shouldHydrate variable when React 18 is stable as it can depend on `reactRoot` existing\n shouldHydrate = false;\n } else {\n const startTransition = _react.default.startTransition;\n startTransition(()=>{\n reactRoot.render(reactEl);\n });\n }\n}\nfunction Root(param) {\n let { callbacks , children } = param;\n _s1();\n // We use `useLayoutEffect` to guarantee the callbacks are executed\n // as soon as React flushes the update\n _react.default.useLayoutEffect(()=>callbacks.forEach((callback)=>callback()), [\n callbacks\n ]);\n // We should ask to measure the Web Vitals after rendering completes so we\n // don't cause any hydration delay:\n _react.default.useEffect(()=>{\n (0, _performanceRelayer).default(onPerfEntry);\n }, []);\n if (false) {}\n return children;\n}\n_s1(Root, \"Gjgl5rfcc2T4sFnfEMfRvL6K4Q4=\");\n_c2 = Root;\nfunction doRender(input) {\n let { App , Component , props , err } = input;\n let styleSheets = \"initial\" in input ? undefined : input.styleSheets;\n Component = Component || lastAppProps.Component;\n props = props || lastAppProps.props;\n const appProps = _extends({}, props, {\n Component,\n err,\n router\n });\n // lastAppProps has to be set before ReactDom.render to account for ReactDom throwing an error.\n lastAppProps = appProps;\n let canceled = false;\n let resolvePromise;\n const renderPromise = new Promise((resolve, reject)=>{\n if (lastRenderReject) {\n lastRenderReject();\n }\n resolvePromise = ()=>{\n lastRenderReject = null;\n resolve();\n };\n lastRenderReject = ()=>{\n canceled = true;\n lastRenderReject = null;\n const error = new Error(\"Cancel rendering route\");\n error.cancelled = true;\n reject(error);\n };\n });\n // This function has a return type to ensure it doesn't start returning a\n // Promise. It should remain synchronous.\n function onStart() {\n if (!styleSheets || // We use `style-loader` in development, so we don't need to do anything\n // unless we're in production:\n \"development\" !== \"production\") {\n return false;\n }\n const currentStyleTags = looseToArray(document.querySelectorAll(\"style[data-n-href]\"));\n const currentHrefs = new Set(currentStyleTags.map((tag)=>tag.getAttribute(\"data-n-href\")));\n const noscript = document.querySelector(\"noscript[data-n-css]\");\n const nonce = noscript == null ? void 0 : noscript.getAttribute(\"data-n-css\");\n styleSheets.forEach((param)=>{\n let { href , text } = param;\n if (!currentHrefs.has(href)) {\n const styleTag = document.createElement(\"style\");\n styleTag.setAttribute(\"data-n-href\", href);\n styleTag.setAttribute(\"media\", \"x\");\n if (nonce) {\n styleTag.setAttribute(\"nonce\", nonce);\n }\n document.head.appendChild(styleTag);\n styleTag.appendChild(document.createTextNode(text));\n }\n });\n return true;\n }\n function onHeadCommit() {\n if (// unless we're in production:\n false) {}\n if (input.scroll) {\n const { x , y } = input.scroll;\n (0, _handleSmoothScroll).handleSmoothScroll(()=>{\n window.scrollTo(x, y);\n });\n }\n }\n function onRootCommit() {\n resolvePromise();\n }\n onStart();\n const elem = /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(Head, {\n callback: onHeadCommit\n }), /*#__PURE__*/ _react.default.createElement(AppContainer, null, renderApp(App, appProps), /*#__PURE__*/ _react.default.createElement(_portal.Portal, {\n type: \"next-route-announcer\"\n }, /*#__PURE__*/ _react.default.createElement(_routeAnnouncer.RouteAnnouncer, null))));\n // We catch runtime errors using componentDidCatch which will trigger renderError\n renderReactElement(appElement, (callback)=>/*#__PURE__*/ _react.default.createElement(Root, {\n callbacks: [\n callback,\n onRootCommit\n ]\n }, true ? /*#__PURE__*/ _react.default.createElement(_react.default.StrictMode, null, elem) : 0));\n return renderPromise;\n}\nfunction render(renderingProps) {\n return _render.apply(this, arguments);\n}\nfunction _render() {\n _render = _async_to_generator(function*(renderingProps) {\n if (renderingProps.err) {\n yield renderError(renderingProps);\n return;\n }\n try {\n yield doRender(renderingProps);\n } catch (err) {\n const renderErr = (0, _isError).getProperError(err);\n // bubble up cancelation errors\n if (renderErr.cancelled) {\n throw renderErr;\n }\n if (true) {\n // Ensure this error is displayed in the overlay in development\n setTimeout(()=>{\n throw renderErr;\n });\n }\n yield renderError(_extends({}, renderingProps, {\n err: renderErr\n }));\n }\n });\n return _render.apply(this, arguments);\n}\nfunction hydrate(opts) {\n return _hydrate.apply(this, arguments);\n}\nfunction _hydrate() {\n _hydrate = _async_to_generator(function*(opts) {\n let initialErr = initialData.err;\n try {\n const appEntrypoint = yield pageLoader.routeLoader.whenEntrypoint(\"/_app\");\n if (\"error\" in appEntrypoint) {\n throw appEntrypoint.error;\n }\n const { component: app , exports: mod } = appEntrypoint;\n CachedApp = app;\n if (mod && mod.reportWebVitals) {\n onPerfEntry = (param)=>{\n let { id , name , startTime , value , duration , entryType , entries , attribution } = param;\n // Combines timestamp with random number for unique ID\n const uniqueID = \"\".concat(Date.now(), \"-\").concat(Math.floor(Math.random() * (9e12 - 1)) + 1e12);\n let perfStartEntry;\n if (entries && entries.length) {\n perfStartEntry = entries[0].startTime;\n }\n const webVitals = {\n id: id || uniqueID,\n name,\n startTime: startTime || perfStartEntry,\n value: value == null ? duration : value,\n label: entryType === \"mark\" || entryType === \"measure\" ? \"custom\" : \"web-vital\"\n };\n if (attribution) {\n webVitals.attribution = attribution;\n }\n mod.reportWebVitals(webVitals);\n };\n }\n const pageEntrypoint = // error, so we need to skip waiting for the entrypoint.\n true && initialData.err ? {\n error: initialData.err\n } : yield pageLoader.routeLoader.whenEntrypoint(initialData.page);\n if (\"error\" in pageEntrypoint) {\n throw pageEntrypoint.error;\n }\n CachedComponent = pageEntrypoint.component;\n if (true) {\n const { isValidElementType } = __webpack_require__(/*! next/dist/compiled/react-is */ \"../../node_modules/next/dist/compiled/react-is/index.js\");\n if (!isValidElementType(CachedComponent)) {\n throw new Error('The default export is not a React Component in page: \"'.concat(initialData.page, '\"'));\n }\n }\n } catch (error1) {\n // This catches errors like throwing in the top level of a module\n initialErr = (0, _isError).getProperError(error1);\n }\n if (true) {\n const { getServerError } = __webpack_require__(/*! next/dist/compiled/@next/react-dev-overlay/dist/client */ \"../../node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js\");\n // Server-side runtime errors need to be re-thrown on the client-side so\n // that the overlay is rendered.\n if (initialErr) {\n if (initialErr === initialData.err) {\n setTimeout(()=>{\n let error;\n try {\n // Generate a new error object. We `throw` it because some browsers\n // will set the `stack` when thrown, and we want to ensure ours is\n // not overridden when we re-throw it below.\n throw new Error(initialErr.message);\n } catch (e) {\n error = e;\n }\n error.name = initialErr.name;\n error.stack = initialErr.stack;\n throw getServerError(error, initialErr.source);\n });\n } else {\n setTimeout(()=>{\n throw initialErr;\n });\n }\n }\n }\n if (window.__NEXT_PRELOADREADY) {\n yield window.__NEXT_PRELOADREADY(initialData.dynamicIds);\n }\n exports.router = router = (0, _router).createRouter(initialData.page, initialData.query, asPath, {\n initialProps: initialData.props,\n pageLoader,\n App: CachedApp,\n Component: CachedComponent,\n wrapApp,\n err: initialErr,\n isFallback: Boolean(initialData.isFallback),\n subscription: (info, App, scroll)=>render(Object.assign({}, info, {\n App,\n scroll\n })),\n locale: initialData.locale,\n locales: initialData.locales,\n defaultLocale,\n domainLocales: initialData.domainLocales,\n isPreview: initialData.isPreview\n });\n initialMatchesMiddleware = yield router._initialMatchesMiddlewarePromise;\n const renderCtx = {\n App: CachedApp,\n initial: true,\n Component: CachedComponent,\n props: initialData.props,\n err: initialErr\n };\n if (opts == null ? void 0 : opts.beforeRender) {\n yield opts.beforeRender();\n }\n render(renderCtx);\n });\n return _hydrate.apply(this, arguments);\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=index.js.map\nvar _c, _c1, _c2;\n$RefreshReg$(_c, \"AppContainer\");\n$RefreshReg$(_c1, \"Head\");\n$RefreshReg$(_c2, \"Root\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7Ozs7OztBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU8sSUFBSTtBQUNmLENBQUMsRUFBQztBQUNGRCxrQkFBa0IsR0FBR0U7QUFDckJGLGVBQWUsR0FBR0c7QUFDbEJILGVBQWUsR0FBR0EsY0FBYyxHQUFHQSxlQUFlLEdBQUcsS0FBSztBQUMxRCxJQUFJTyxzQkFBc0JDLDZJQUEwRDtBQUNwRixJQUFJRSxXQUFXRix1SEFBK0M7QUFDOUQsSUFBSUcsMkJBQTJCSCx1SkFBK0Q7QUFDOUYsSUFBSUksNEJBQTRCSix5SkFBZ0U7QUFDaEdBLG1CQUFPQSxDQUFDLDJHQUFvQztBQUM1QyxJQUFJSyxTQUFTRix5QkFBeUJILG1CQUFPQSxDQUFDLGdEQUFPO0FBQ3JELElBQUlNLFVBQVVILHlCQUF5QkgsbUJBQU9BLENBQUMsZ0VBQWtCO0FBQ2pFLElBQUlPLHNCQUFzQlAsbUJBQU9BLENBQUMsMkdBQW9DO0FBQ3RFLElBQUlRLFFBQVFMLHlCQUF5QkgsbUJBQU9BLENBQUMsMkVBQW9CO0FBQ2pFLElBQUlTLGlCQUFpQlQsbUJBQU9BLENBQUMsK0ZBQThCO0FBQzNELElBQUlVLHNCQUFzQlYsbUJBQU9BLENBQUMscUlBQWlEO0FBQ25GLElBQUlXLGFBQWFYLG1CQUFPQSxDQUFDLGlIQUF1QztBQUNoRSxJQUFJWSxlQUFlWixtQkFBT0EsQ0FBQyxtSEFBd0M7QUFDbkUsSUFBSWEsaUJBQWlCYixtQkFBT0EsQ0FBQywrRkFBOEI7QUFDM0QsSUFBSWMsU0FBU2QsbUJBQU9BLENBQUMsNkVBQXFCO0FBQzFDLElBQUllLFVBQVVmLG1CQUFPQSxDQUFDLHFFQUFVO0FBQ2hDLElBQUlnQixlQUFlYix5QkFBeUJILG1CQUFPQSxDQUFDLDJFQUFnQjtBQUNwRSxJQUFJaUIsY0FBY2QseUJBQXlCSCxtQkFBT0EsQ0FBQyx5RUFBZTtBQUNsRSxJQUFJa0Isc0JBQXNCZix5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TUFBTSxDQUFDaEYsUUFBUVMsT0FBTyxFQUFFVDtJQUMvQnlULE9BQU96VCxPQUFPLEdBQUdBLFFBQVFTLE9BQU87QUFDbEMsQ0FBQyxDQUVELGlDQUFpQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvaW5kZXguanM/NDc1NSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuaW5pdGlhbGl6ZSA9IGluaXRpYWxpemU7XG5leHBvcnRzLmh5ZHJhdGUgPSBoeWRyYXRlO1xuZXhwb3J0cy5lbWl0dGVyID0gZXhwb3J0cy5yb3V0ZXIgPSBleHBvcnRzLnZlcnNpb24gPSB2b2lkIDA7XG52YXIgX2FzeW5jX3RvX2dlbmVyYXRvciA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvbGliL19hc3luY190b19nZW5lcmF0b3IuanNcIikuZGVmYXVsdDtcbnZhciBfZXh0ZW5kcyA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvbGliL19leHRlbmRzLmpzXCIpLmRlZmF1bHQ7XG52YXIgX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0ID0gcmVxdWlyZShcIkBzd2MvaGVscGVycy9saWIvX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0LmpzXCIpLmRlZmF1bHQ7XG52YXIgX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvbGliL19pbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmQuanNcIikuZGVmYXVsdDtcbnJlcXVpcmUoXCIuLi9idWlsZC9wb2x5ZmlsbHMvcG9seWZpbGwtbW9kdWxlXCIpO1xudmFyIF9yZWFjdCA9IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChyZXF1aXJlKFwicmVhY3RcIikpO1xudmFyIF9jbGllbnQgPSBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQocmVxdWlyZShcInJlYWN0LWRvbS9jbGllbnRcIikpO1xudmFyIF9oZWFkTWFuYWdlckNvbnRleHQgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9oZWFkLW1hbmFnZXItY29udGV4dFwiKTtcbnZhciBfbWl0dCA9IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChyZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9taXR0XCIpKTtcbnZhciBfcm91dGVyQ29udGV4dCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci1jb250ZXh0XCIpO1xudmFyIF9oYW5kbGVTbW9vdGhTY3JvbGwgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaGFuZGxlLXNtb290aC1zY3JvbGxcIik7XG52YXIgX2lzRHluYW1pYyA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9pcy1keW5hbWljXCIpO1xudmFyIF9xdWVyeXN0cmluZyA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9xdWVyeXN0cmluZ1wiKTtcbnZhciBfcnVudGltZUNvbmZpZyA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3J1bnRpbWUtY29uZmlnXCIpO1xudmFyIF91dGlscyA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3V0aWxzXCIpO1xudmFyIF9wb3J0YWwgPSByZXF1aXJlKFwiLi9wb3J0YWxcIik7XG52YXIgX2hlYWRNYW5hZ2VyID0gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0KHJlcXVpcmUoXCIuL2hlYWQtbWFuYWdlclwiKSk7XG52YXIgX3BhZ2VMb2FkZXIgPSBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQocmVxdWlyZShcIi4vcGFnZS1sb2FkZXJcIikpO1xudmFyIF9wZXJmb3JtYW5jZVJlbGF5ZXIgPSBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQocmVxdWlyZShcIi4vcGVyZm9ybWFuY2UtcmVsYXllclwiKSk7XG52YXIgX3JvdXRlQW5ub3VuY2VyID0gcmVxdWlyZShcIi4vcm91dGUtYW5ub3VuY2VyXCIpO1xudmFyIF9yb3V0ZXIgPSByZXF1aXJlKFwiLi9yb3V0ZXJcIik7XG52YXIgX2lzRXJyb3IgPSByZXF1aXJlKFwiLi4vbGliL2lzLWVycm9yXCIpO1xudmFyIF9pbWFnZUNvbmZpZ0NvbnRleHQgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9pbWFnZS1jb25maWctY29udGV4dFwiKTtcbnZhciBfcmVtb3ZlQmFzZVBhdGggPSByZXF1aXJlKFwiLi9yZW1vdmUtYmFzZS1wYXRoXCIpO1xudmFyIF9oYXNCYXNlUGF0aCA9IHJlcXVpcmUoXCIuL2hhcy1iYXNlLXBhdGhcIik7XG52YXIgX2FwcFJvdXRlckNvbnRleHQgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHRcIik7XG52YXIgX2FkYXB0ZXJzID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL2FkYXB0ZXJzXCIpO1xudmFyIF9ob29rc0NsaWVudENvbnRleHQgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9ob29rcy1jbGllbnQtY29udGV4dFwiKTtcbnZhciBfb25SZWNvdmVyYWJsZUVycm9yID0gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0KHJlcXVpcmUoXCIuL29uLXJlY292ZXJhYmxlLWVycm9yXCIpKTtcbmNvbnN0IHZlcnNpb24gPSBcIjEzLjIuNFwiO1xuZXhwb3J0cy52ZXJzaW9uID0gdmVyc2lvbjtcbmxldCByb3V0ZXI7XG5leHBvcnRzLnJvdXRlciA9IHJvdXRlcjtcbmNvbnN0IGVtaXR0ZXIgPSAoMCwgX21pdHQpLmRlZmF1bHQoKTtcbmV4cG9ydHMuZW1pdHRlciA9IGVtaXR0ZXI7XG5jb25zdCBsb29zZVRvQXJyYXkgPSAoaW5wdXQpPT5bXS5zbGljZS5jYWxsKGlucHV0KTtcbmxldCBpbml0aWFsRGF0YTtcbmxldCBkZWZhdWx0TG9jYWxlID0gdW5kZWZpbmVkO1xubGV0IGFzUGF0aDtcbmxldCBwYWdlTG9hZGVyO1xubGV0IGFwcEVsZW1lbnQ7XG5sZXQgaGVhZE1hbmFnZXI7XG5sZXQgaW5pdGlhbE1hdGNoZXNNaWRkbGV3YXJlID0gZmFsc2U7XG5sZXQgbGFzdEFwcFByb3BzO1xubGV0IGxhc3RSZW5kZXJSZWplY3Q7XG5sZXQgd2VicGFja0hNUjtcbmxldCBDYWNoZWRBcHAsIG9uUGVyZkVudHJ5O1xubGV0IENhY2hlZENvbXBvbmVudDtcbnNlbGYuX19uZXh0X3JlcXVpcmVfXyA9IF9fd2VicGFja19yZXF1aXJlX187XG5jbGFzcyBDb250YWluZXIgZXh0ZW5kcyBfcmVhY3QuZGVmYXVsdC5Db21wb25lbnQge1xuICAgIGNvbXBvbmVudERpZENhdGNoKGNvbXBvbmVudEVyciwgaW5mbykge1xuICAgICAgICB0aGlzLnByb3BzLmZuKGNvbXBvbmVudEVyciwgaW5mbyk7XG4gICAgfVxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgICB0aGlzLnNjcm9sbFRvSGFzaCgpO1xuICAgICAgICAvLyBXZSBuZWVkIHRvIHJlcGxhY2UgdGhlIHJvdXRlciBzdGF0ZSBpZjpcbiAgICAgICAgLy8gLSB0aGUgcGFnZSB3YXMgKGF1dG8pIGV4cG9ydGVkIGFuZCBoYXMgYSBxdWVyeSBzdHJpbmcgb3Igc2VhcmNoIChoYXNoKVxuICAgICAgICAvLyAtIGl0IHdhcyBhdXRvIGV4cG9ydGVkIGFuZCBpcyBhIGR5bmFtaWMgcm91dGUgKHRvIHByb3ZpZGUgcGFyYW1zKVxuICAgICAgICAvLyAtIGlmIGl0IGlzIGEgY2xpZW50LXNpZGUgc2tlbGV0b24gKGZhbGxiYWNrIHJlbmRlcilcbiAgICAgICAgLy8gLSBpZiBtaWRkbGV3YXJlIG1hdGNoZXMgdGhlIGN1cnJlbnQgcGFnZSAobWF5IGhhdmUgcmV3cml0ZSBwYXJhbXMpXG4gICAgICAgIC8vIC0gaWYgcmV3cml0ZXMgaW4gbmV4dC5jb25maWcuanMgbWF0Y2ggKG1heSBoYXZlIHJld3JpdGUgcGFyYW1zKVxuICAgICAgICBpZiAocm91dGVyLmlzU3NyICYmIChpbml0aWFsRGF0YS5pc0ZhbGxiYWNrIHx8IGluaXRpYWxEYXRhLm5leHRFeHBvcnQgJiYgKCgwLCBfaXNEeW5hbWljKS5pc0R5bmFtaWNSb3V0ZShyb3V0ZXIucGF0aG5hbWUpIHx8IGxvY2F0aW9uLnNlYXJjaCB8fCBwcm9jZXNzLmVudi5fX05FWFRfSEFTX1JFV1JJVEVTIHx8IGluaXRpYWxNYXRjaGVzTWlkZGxld2FyZSkgfHwgaW5pdGlhbERhdGEucHJvcHMgJiYgaW5pdGlhbERhdGEucHJvcHMuX19OX1NTRyAmJiAobG9jYXRpb24uc2VhcmNoIHx8IHByb2Nlc3MuZW52Ll9fTkVYVF9IQVNfUkVXUklURVMgfHwgaW5pdGlhbE1hdGNoZXNNaWRkbGV3YXJlKSkpIHtcbiAgICAgICAgICAgIC8vIHVwZGF0ZSBxdWVyeSBvbiBtb3VudCBmb3IgZXhwb3J0ZWQgcGFnZXNcbiAgICAgICAgICAgIHJvdXRlci5yZXBsYWNlKHJvdXRlci5wYXRobmFtZSArICc/JyArIFN0cmluZygoMCwgX3F1ZXJ5c3RyaW5nKS5hc3NpZ24oKDAsIF9xdWVyeXN0cmluZykudXJsUXVlcnlUb1NlYXJjaFBhcmFtcyhyb3V0ZXIucXVlcnkpLCBuZXcgVVJMU2VhcmNoUGFyYW1zKGxvY2F0aW9uLnNlYXJjaCkpKSwgYXNQYXRoLCB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIC8vIFdBUk5JTkc6IGBfaGAgaXMgYW4gaW50ZXJuYWwgb3B0aW9uIGZvciBoYW5kaW5nIE5leHQuanNcbiAgICAgICAgICAgICAgICAvLyBjbGllbnQtc2lkZSBoeWRyYXRpb24uIFlvdXIgYXBwIHNob3VsZCBfbmV2ZXJfIHVzZSB0aGlzIHByb3BlcnR5LlxuICAgICAgICAgICAgICAgIC8vIEl0IG1heSBjaGFuZ2UgYXQgYW55IHRpbWUgd2l0aG91dCBub3RpY2UuXG4gICAgICAgICAgICAgICAgX2g6IDEsXG4gICAgICAgICAgICAgICAgLy8gRmFsbGJhY2sgcGFnZXMgbXVzdCB0cmlnZ2VyIHRoZSBkYXRhIGZldGNoLCBzbyB0aGUgdHJhbnNpdGlvbiBpc1xuICAgICAgICAgICAgICAgIC8vIG5vdCBzaGFsbG93LlxuICAgICAgICAgICAgICAgIC8vIE90aGVyIHBhZ2VzIChzdHJpY3RseSB1cGRhdGluZyBxdWVyeSkgaGFwcGVucyBzaGFsbG93bHksIGFzIGRhdGFcbiAgICAgICAgICAgICAgICAvLyByZXF1aXJlbWVudHMgd291bGQgYWxyZWFkeSBiZSBwcmVzZW50LlxuICAgICAgICAgICAgICAgIHNoYWxsb3c6ICFpbml0aWFsRGF0YS5pc0ZhbGxiYWNrICYmICFpbml0aWFsTWF0Y2hlc01pZGRsZXdhcmVcbiAgICAgICAgICAgIH0pLmNhdGNoKChlcnIpPT57XG4gICAgICAgICAgICAgICAgaWYgKCFlcnIuY2FuY2VsbGVkKSB0aHJvdyBlcnI7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9IYXNoKCk7XG4gICAgfVxuICAgIHNjcm9sbFRvSGFzaCgpIHtcbiAgICAgICAgbGV0IHsgaGFzaCAgfSA9IGxvY2F0aW9uO1xuICAgICAgICBoYXNoID0gaGFzaCAmJiBoYXNoLnN1YnN0cmluZygxKTtcbiAgICAgICAgaWYgKCFoYXNoKSByZXR1cm47XG4gICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaGFzaCk7XG4gICAgICAgIGlmICghZWwpIHJldHVybjtcbiAgICAgICAgLy8gSWYgd2UgY2FsbCBzY3JvbGxJbnRvVmlldygpIGluIGhlcmUgd2l0aG91dCBhIHNldFRpbWVvdXRcbiAgICAgICAgLy8gaXQgd29uJ3Qgc2Nyb2xsIHByb3Blcmx5LlxuICAgICAgICBzZXRUaW1lb3V0KCgpPT5lbC5zY3JvbGxJbnRvVmlldygpLCAwKTtcbiAgICB9XG4gICAgcmVuZGVyKCkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB7IFJlYWN0RGV2T3ZlcmxheSAsICB9ID0gcmVxdWlyZSgnbmV4dC9kaXN0L2NvbXBpbGVkL0BuZXh0L3JlYWN0LWRldi1vdmVybGF5L2Rpc3QvY2xpZW50Jyk7XG4gICAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFJlYWN0RGV2T3ZlcmxheSwgbnVsbCwgdGhpcy5wcm9wcy5jaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBpbml0aWFsaXplKCkge1xuICAgIHJldHVybiBfaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuZnVuY3Rpb24gX2luaXRpYWxpemUoKSB7XG4gICAgX2luaXRpYWxpemUgPSBfYXN5bmNfdG9fZ2VuZXJhdG9yKGZ1bmN0aW9uKihvcHRzID0ge30pIHtcbiAgICAgICAgLy8gVGhpcyBtYWtlcyBzdXJlIHRoaXMgc3BlY2lmaWMgbGluZXMgYXJlIHJlbW92ZWQgaW4gcHJvZHVjdGlvblxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgICAgIHdlYnBhY2tITVIgPSBvcHRzLndlYnBhY2tITVI7XG4gICAgICAgIH1cbiAgICAgICAgaW5pdGlhbERhdGEgPSBKU09OLnBhcnNlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdfX05FWFRfREFUQV9fJykudGV4dENvbnRlbnQpO1xuICAgICAgICB3aW5kb3cuX19ORVhUX0RBVEFfXyA9IGluaXRpYWxEYXRhO1xuICAgICAgICBkZWZhdWx0TG9jYWxlID0gaW5pdGlhbERhdGEuZGVmYXVsdExvY2FsZTtcbiAgICAgICAgY29uc3QgcHJlZml4ID0gaW5pdGlhbERhdGEuYXNzZXRQcmVmaXggfHwgJyc7XG4gICAgICAgIC8vIFdpdGggZHluYW1pYyBhc3NldFByZWZpeCBpdCdzIG5vIGxvbmdlciBwb3NzaWJsZSB0byBzZXQgYXNzZXRQcmVmaXggYXQgdGhlIGJ1aWxkIHRpbWVcbiAgICAgICAgLy8gU28sIHRoaXMgaXMgaG93IHdlIGRvIGl0IGluIHRoZSBjbGllbnQgc2lkZSBhdCBydW50aW1lXG4gICAgICAgIF9fd2VicGFja19wdWJsaWNfcGF0aF9fID0gYCR7cHJlZml4fS9fbmV4dC9gIC8vZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgICA7XG4gICAgICAgIC8vIEluaXRpYWxpemUgbmV4dC9jb25maWcgd2l0aCB0aGUgZW52aXJvbm1lbnQgY29uZmlndXJhdGlvblxuICAgICAgICAoMCwgX3J1bnRpbWVDb25maWcpLnNldENvbmZpZyh7XG4gICAgICAgICAgICBzZXJ2ZXJSdW50aW1lQ29uZmlnOiB7fSxcbiAgICAgICAgICAgIHB1YmxpY1J1bnRpbWVDb25maWc6IGluaXRpYWxEYXRhLnJ1bnRpbWVDb25maWcgfHwge31cbiAgICAgICAgfSk7XG4gICAgICAgIGFzUGF0aCA9ICgwLCBfdXRpbHMpLmdldFVSTCgpO1xuICAgICAgICAvLyBtYWtlIHN1cmUgbm90IHRvIGF0dGVtcHQgc3RyaXBwaW5nIGJhc2VQYXRoIGZvciA0MDRzXG4gICAgICAgIGlmICgoMCwgX2hhc0Jhc2VQYXRoKS5oYXNCYXNlUGF0aChhc1BhdGgpKSB7XG4gICAgICAgICAgICBhc1BhdGggPSAoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChhc1BhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUKSB7XG4gICAgICAgICAgICBjb25zdCB7IG5vcm1hbGl6ZUxvY2FsZVBhdGggIH0gPSByZXF1aXJlKCcuLi9zaGFyZWQvbGliL2kxOG4vbm9ybWFsaXplLWxvY2FsZS1wYXRoJyk7XG4gICAgICAgICAgICBjb25zdCB7IGRldGVjdERvbWFpbkxvY2FsZSAgfSA9IHJlcXVpcmUoJy4uL3NoYXJlZC9saWIvaTE4bi9kZXRlY3QtZG9tYWluLWxvY2FsZScpO1xuICAgICAgICAgICAgY29uc3QgeyBwYXJzZVJlbGF0aXZlVXJsICB9ID0gcmVxdWlyZSgnLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcGFyc2UtcmVsYXRpdmUtdXJsJyk7XG4gICAgICAgICAgICBjb25zdCB7IGZvcm1hdFVybCAgfSA9IHJlcXVpcmUoJy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2Zvcm1hdC11cmwnKTtcbiAgICAgICAgICAgIGlmIChpbml0aWFsRGF0YS5sb2NhbGVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkQXMgPSBwYXJzZVJlbGF0aXZlVXJsKGFzUGF0aCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbG9jYWxlUGF0aFJlc3VsdCA9IG5vcm1hbGl6ZUxvY2FsZVBhdGgocGFyc2VkQXMucGF0aG5hbWUsIGluaXRpYWxEYXRhLmxvY2FsZXMpO1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGVQYXRoUmVzdWx0LmRldGVjdGVkTG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZEFzLnBhdGhuYW1lID0gbG9jYWxlUGF0aFJlc3VsdC5wYXRobmFtZTtcbiAgICAgICAgICAgICAgICAgICAgYXNQYXRoID0gZm9ybWF0VXJsKHBhcnNlZEFzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBkZXJpdmUgdGhlIGRlZmF1bHQgbG9jYWxlIGlmIGl0IHdhc24ndCBkZXRlY3RlZCBpbiB0aGUgYXNQYXRoXG4gICAgICAgICAgICAgICAgICAgIC8vIHNpbmNlIHdlIGRvbid0IHByZXJlbmRlciBzdGF0aWMgcGFnZXMgd2l0aCBhbGwgcG9zc2libGUgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAvLyBsb2NhbGVzXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRMb2NhbGUgPSBpbml0aWFsRGF0YS5sb2NhbGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGF0dGVtcHQgZGV0ZWN0aW5nIGRlZmF1bHQgbG9jYWxlIGJhc2VkIG9uIGhvc3RuYW1lXG4gICAgICAgICAgICAgICAgY29uc3QgZGV0ZWN0ZWREb21haW4gPSBkZXRlY3REb21haW5Mb2NhbGUocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fRE9NQUlOUywgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lKTtcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBpbnZlc3RpZ2F0ZSBpZiBkZWZhdWx0TG9jYWxlIG5lZWRzIHRvIGJlIHBvcHVsYXRlZCBhZnRlclxuICAgICAgICAgICAgICAgIC8vIGh5ZHJhdGlvbiB0byBwcmV2ZW50IG1pc21hdGNoZWQgcmVuZGVyc1xuICAgICAgICAgICAgICAgIGlmIChkZXRlY3RlZERvbWFpbikge1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TG9jYWxlID0gZGV0ZWN0ZWREb21haW4uZGVmYXVsdExvY2FsZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluaXRpYWxEYXRhLnNjcmlwdExvYWRlcikge1xuICAgICAgICAgICAgY29uc3QgeyBpbml0U2NyaXB0TG9hZGVyICB9ID0gcmVxdWlyZSgnLi9zY3JpcHQnKTtcbiAgICAgICAgICAgIGluaXRTY3JpcHRMb2FkZXIoaW5pdGlhbERhdGEuc2NyaXB0TG9hZGVyKTtcbiAgICAgICAgfVxuICAgICAgICBwYWdlTG9hZGVyID0gbmV3IF9wYWdlTG9hZGVyLmRlZmF1bHQoaW5pdGlhbERhdGEuYnVpbGRJZCwgcHJlZml4KTtcbiAgICAgICAgY29uc3QgcmVnaXN0ZXIgPSAoW3IsIGZdKT0+cGFnZUxvYWRlci5yb3V0ZUxvYWRlci5vbkVudHJ5cG9pbnQociwgZik7XG4gICAgICAgIGlmICh3aW5kb3cuX19ORVhUX1ApIHtcbiAgICAgICAgICAgIC8vIERlZmVyIHBhZ2UgcmVnaXN0cmF0aW9uIGZvciBhbm90aGVyIHRpY2suIFRoaXMgd2lsbCBpbmNyZWFzZSB0aGUgb3ZlcmFsbFxuICAgICAgICAgICAgLy8gbGF0ZW5jeSBpbiBoeWRyYXRpbmcgdGhlIHBhZ2UsIGJ1dCByZWR1Y2UgdGhlIHRvdGFsIGJsb2NraW5nIHRpbWUuXG4gICAgICAgICAgICB3aW5kb3cuX19ORVhUX1AubWFwKChwKT0+c2V0VGltZW91dCgoKT0+cmVnaXN0ZXIocCksIDApKTtcbiAgICAgICAgfVxuICAgICAgICB3aW5kb3cuX19ORVhUX1AgPSBbXTtcbiAgICAgICAgd2luZG93Ll9fTkVYVF9QLnB1c2ggPSByZWdpc3RlcjtcbiAgICAgICAgaGVhZE1hbmFnZXIgPSAoMCwgX2hlYWRNYW5hZ2VyKS5kZWZhdWx0KCk7XG4gICAgICAgIGhlYWRNYW5hZ2VyLmdldElzU3NyID0gKCk9PntcbiAgICAgICAgICAgIHJldHVybiByb3V0ZXIuaXNTc3I7XG4gICAgICAgIH07XG4gICAgICAgIGFwcEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnX19uZXh0Jyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhc3NldFByZWZpeDogcHJlZml4XG4gICAgICAgIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIF9pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5mdW5jdGlvbiByZW5kZXJBcHAoQXBwLCBhcHBQcm9wcykge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoQXBwLCBPYmplY3QuYXNzaWduKHt9LCBhcHBQcm9wcykpO1xufVxuZnVuY3Rpb24gQXBwQ29udGFpbmVyKHsgY2hpbGRyZW4gIH0pIHtcbiAgICB2YXIgX2F1dG9FeHBvcnQ7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChDb250YWluZXIsIHtcbiAgICAgICAgZm46IChlcnJvcik9Pi8vIFRPRE86IEZpeCBkaXNhYmxlZCBlc2xpbnQgcnVsZVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgICAgICAgcmVuZGVyRXJyb3Ioe1xuICAgICAgICAgICAgICAgIEFwcDogQ2FjaGVkQXBwLFxuICAgICAgICAgICAgICAgIGVycjogZXJyb3JcbiAgICAgICAgICAgIH0pLmNhdGNoKChlcnIpPT5jb25zb2xlLmVycm9yKCdFcnJvciByZW5kZXJpbmcgcGFnZTogJywgZXJyKSlcbiAgICB9LCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX2FwcFJvdXRlckNvbnRleHQuQXBwUm91dGVyQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICB2YWx1ZTogKDAsIF9hZGFwdGVycykuYWRhcHRGb3JBcHBSb3V0ZXJJbnN0YW5jZShyb3V0ZXIpXG4gICAgfSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9ob29rc0NsaWVudENvbnRleHQuU2VhcmNoUGFyYW1zQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICB2YWx1ZTogKDAsIF9hZGFwdGVycykuYWRhcHRGb3JTZWFyY2hQYXJhbXMocm91dGVyKVxuICAgIH0sIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfYWRhcHRlcnMuUGF0aG5hbWVDb250ZXh0UHJvdmlkZXJBZGFwdGVyLCB7XG4gICAgICAgIHJvdXRlcjogcm91dGVyLFxuICAgICAgICBpc0F1dG9FeHBvcnQ6IChfYXV0b0V4cG9ydCA9IHNlbGYuX19ORVhUX0RBVEFfXy5hdXRvRXhwb3J0KSAhPSBudWxsID8gX2F1dG9FeHBvcnQgOiBmYWxzZVxuICAgIH0sIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfcm91dGVyQ29udGV4dC5Sb3V0ZXJDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICAgIHZhbHVlOiAoMCwgX3JvdXRlcikubWFrZVB1YmxpY1JvdXRlckluc3RhbmNlKHJvdXRlcilcbiAgICB9LCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX2hlYWRNYW5hZ2VyQ29udGV4dC5IZWFkTWFuYWdlckNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgdmFsdWU6IGhlYWRNYW5hZ2VyXG4gICAgfSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9pbWFnZUNvbmZpZ0NvbnRleHQuSW1hZ2VDb25maWdDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICAgIHZhbHVlOiBwcm9jZXNzLmVudi5fX05FWFRfSU1BR0VfT1BUU1xuICAgIH0sIGNoaWxkcmVuKSkpKSkpKTtcbn1cbmNvbnN0IHdyYXBBcHAgPSAoQXBwKT0+KHdyYXBwZWRBcHBQcm9wcyk9PntcbiAgICAgICAgY29uc3QgYXBwUHJvcHMgPSBfZXh0ZW5kcyh7fSwgd3JhcHBlZEFwcFByb3BzLCB7XG4gICAgICAgICAgICBDb21wb25lbnQ6IENhY2hlZENvbXBvbmVudCxcbiAgICAgICAgICAgIGVycjogaW5pdGlhbERhdGEuZXJyLFxuICAgICAgICAgICAgcm91dGVyXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KEFwcENvbnRhaW5lciwgbnVsbCwgcmVuZGVyQXBwKEFwcCwgYXBwUHJvcHMpKTtcbiAgICB9O1xuLy8gVGhpcyBtZXRob2QgaGFuZGxlcyBhbGwgcnVudGltZSBhbmQgZGVidWcgZXJyb3JzLlxuLy8gNDA0IGFuZCA1MDAgZXJyb3JzIGFyZSBzcGVjaWFsIGtpbmQgb2YgZXJyb3JzXG4vLyBhbmQgdGhleSBhcmUgc3RpbGwgaGFuZGxlIHZpYSB0aGUgbWFpbiByZW5kZXIgbWV0aG9kLlxuZnVuY3Rpb24gcmVuZGVyRXJyb3IocmVuZGVyRXJyb3JQcm9wcykge1xuICAgIGxldCB7IEFwcCAsIGVyciAgfSA9IHJlbmRlckVycm9yUHJvcHM7XG4gICAgLy8gSW4gZGV2ZWxvcG1lbnQgcnVudGltZSBlcnJvcnMgYXJlIGNhdWdodCBieSBvdXIgb3ZlcmxheVxuICAgIC8vIEluIHByb2R1Y3Rpb24gd2UgY2F0Y2ggcnVudGltZSBlcnJvcnMgdXNpbmcgY29tcG9uZW50RGlkQ2F0Y2ggd2hpY2ggd2lsbCB0cmlnZ2VyIHJlbmRlckVycm9yXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgLy8gQSBOZXh0LmpzIHJlbmRlcmluZyBydW50aW1lIGVycm9yIGlzIGFsd2F5cyB1bnJlY292ZXJhYmxlXG4gICAgICAgIC8vIEZJWE1FOiBsZXQncyBtYWtlIHRoaXMgcmVjb3ZlcmFibGUgKGVycm9yIGluIEdJUCBjbGllbnQtdHJhbnNpdGlvbilcbiAgICAgICAgd2VicGFja0hNUi5vblVucmVjb3ZlcmFibGVFcnJvcigpO1xuICAgICAgICAvLyBXZSBuZWVkIHRvIHJlbmRlciBhbiBlbXB0eSA8QXBwPiBzbyB0aGF0IHRoZSBgPFJlYWN0RGV2T3ZlcmxheT5gIGNhblxuICAgICAgICAvLyByZW5kZXIgaXRzZWxmLlxuICAgICAgICAvLyBUT0RPOiBGaXggZGlzYWJsZWQgZXNsaW50IHJ1bGVcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgICByZXR1cm4gZG9SZW5kZXIoe1xuICAgICAgICAgICAgQXBwOiAoKT0+bnVsbCxcbiAgICAgICAgICAgIHByb3BzOiB7fSxcbiAgICAgICAgICAgIENvbXBvbmVudDogKCk9Pm51bGwsXG4gICAgICAgICAgICBzdHlsZVNoZWV0czogW11cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8vIE1ha2Ugc3VyZSB3ZSBsb2cgdGhlIGVycm9yIHRvIHRoZSBjb25zb2xlLCBvdGhlcndpc2UgdXNlcnMgY2FuJ3QgdHJhY2sgZG93biBpc3N1ZXMuXG4gICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgIGNvbnNvbGUuZXJyb3IoYEEgY2xpZW50LXNpZGUgZXhjZXB0aW9uIGhhcyBvY2N1cnJlZCwgc2VlIGhlcmUgZm9yIG1vcmUgaW5mbzogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvY2xpZW50LXNpZGUtZXhjZXB0aW9uLW9jY3VycmVkYCk7XG4gICAgcmV0dXJuIHBhZ2VMb2FkZXIubG9hZFBhZ2UoJy9fZXJyb3InKS50aGVuKCh7IHBhZ2U6IEVycm9yQ29tcG9uZW50ICwgc3R5bGVTaGVldHMgIH0pPT57XG4gICAgICAgIHJldHVybiAobGFzdEFwcFByb3BzID09IG51bGwgPyB2b2lkIDAgOiBsYXN0QXBwUHJvcHMuQ29tcG9uZW50KSA9PT0gRXJyb3JDb21wb25lbnQgPyBpbXBvcnQoJy4uL3BhZ2VzL19lcnJvcicpLnRoZW4oKGVycm9yTW9kdWxlKT0+e1xuICAgICAgICAgICAgcmV0dXJuIGltcG9ydCgnLi4vcGFnZXMvX2FwcCcpLnRoZW4oKGFwcE1vZHVsZSk9PntcbiAgICAgICAgICAgICAgICBBcHAgPSBhcHBNb2R1bGUuZGVmYXVsdDtcbiAgICAgICAgICAgICAgICByZW5kZXJFcnJvclByb3BzLkFwcCA9IEFwcDtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JNb2R1bGU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkudGhlbigobSk9Pih7XG4gICAgICAgICAgICAgICAgRXJyb3JDb21wb25lbnQ6IG0uZGVmYXVsdCxcbiAgICAgICAgICAgICAgICBzdHlsZVNoZWV0czogW11cbiAgICAgICAgICAgIH0pKSA6IHtcbiAgICAgICAgICAgIEVycm9yQ29tcG9uZW50LFxuICAgICAgICAgICAgc3R5bGVTaGVldHNcbiAgICAgICAgfTtcbiAgICB9KS50aGVuKCh7IEVycm9yQ29tcG9uZW50ICwgc3R5bGVTaGVldHMgIH0pPT57XG4gICAgICAgIHZhciByZWY7XG4gICAgICAgIC8vIEluIHByb2R1Y3Rpb24gd2UgZG8gYSBub3JtYWwgcmVuZGVyIHdpdGggdGhlIGBFcnJvckNvbXBvbmVudGAgYXMgY29tcG9uZW50LlxuICAgICAgICAvLyBJZiB3ZSd2ZSBnb3R0ZW4gaGVyZSB1cG9uIGluaXRpYWwgcmVuZGVyLCB3ZSBjYW4gdXNlIHRoZSBwcm9wcyBmcm9tIHRoZSBzZXJ2ZXIuXG4gICAgICAgIC8vIE90aGVyd2lzZSwgd2UgbmVlZCB0byBjYWxsIGBnZXRJbml0aWFsUHJvcHNgIG9uIGBBcHBgIGJlZm9yZSBtb3VudGluZy5cbiAgICAgICAgY29uc3QgQXBwVHJlZSA9IHdyYXBBcHAoQXBwKTtcbiAgICAgICAgY29uc3QgYXBwQ3R4ID0ge1xuICAgICAgICAgICAgQ29tcG9uZW50OiBFcnJvckNvbXBvbmVudCxcbiAgICAgICAgICAgIEFwcFRyZWUsXG4gICAgICAgICAgICByb3V0ZXIsXG4gICAgICAgICAgICBjdHg6IHtcbiAgICAgICAgICAgICAgICBlcnIsXG4gICAgICAgICAgICAgICAgcGF0aG5hbWU6IGluaXRpYWxEYXRhLnBhZ2UsXG4gICAgICAgICAgICAgICAgcXVlcnk6IGluaXRpYWxEYXRhLnF1ZXJ5LFxuICAgICAgICAgICAgICAgIGFzUGF0aCxcbiAgICAgICAgICAgICAgICBBcHBUcmVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKChyZWYgPSByZW5kZXJFcnJvclByb3BzLnByb3BzKSA9PSBudWxsID8gdm9pZCAwIDogcmVmLmVycikgPyByZW5kZXJFcnJvclByb3BzLnByb3BzIDogKDAsIF91dGlscykubG9hZEdldEluaXRpYWxQcm9wcyhBcHAsIGFwcEN0eCkpLnRoZW4oKGluaXRQcm9wcyk9Pi8vIFRPRE86IEZpeCBkaXNhYmxlZCBlc2xpbnQgcnVsZVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgICAgICAgZG9SZW5kZXIoX2V4dGVuZHMoe30sIHJlbmRlckVycm9yUHJvcHMsIHtcbiAgICAgICAgICAgICAgICBlcnIsXG4gICAgICAgICAgICAgICAgQ29tcG9uZW50OiBFcnJvckNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICBzdHlsZVNoZWV0cyxcbiAgICAgICAgICAgICAgICBwcm9wczogaW5pdFByb3BzXG4gICAgICAgICAgICB9KSkpO1xuICAgIH0pO1xufVxuLy8gRHVtbXkgY29tcG9uZW50IHRoYXQgd2UgcmVuZGVyIGFzIGEgY2hpbGQgb2YgUm9vdCBzbyB0aGF0IHdlIGNhblxuLy8gdG9nZ2xlIHRoZSBjb3JyZWN0IHN0eWxlcyBiZWZvcmUgdGhlIHBhZ2UgaXMgcmVuZGVyZWQuXG5mdW5jdGlvbiBIZWFkKHsgY2FsbGJhY2sgIH0pIHtcbiAgICAvLyBXZSB1c2UgYHVzZUxheW91dEVmZmVjdGAgdG8gZ3VhcmFudGVlIHRoZSBjYWxsYmFjayBpcyBleGVjdXRlZFxuICAgIC8vIGFzIHNvb24gYXMgUmVhY3QgZmx1c2hlcyB0aGUgdXBkYXRlLlxuICAgIF9yZWFjdC5kZWZhdWx0LnVzZUxheW91dEVmZmVjdCgoKT0+Y2FsbGJhY2soKSwgW1xuICAgICAgICBjYWxsYmFja1xuICAgIF0pO1xuICAgIHJldHVybiBudWxsO1xufVxubGV0IHJlYWN0Um9vdCA9IG51bGw7XG4vLyBPbiBpbml0aWFsIHJlbmRlciBhIGh5ZHJhdGUgc2hvdWxkIGFsd2F5cyBoYXBwZW5cbmxldCBzaG91bGRIeWRyYXRlID0gdHJ1ZTtcbmZ1bmN0aW9uIGNsZWFyTWFya3MoKSB7XG4gICAgW1xuICAgICAgICAnYmVmb3JlUmVuZGVyJyxcbiAgICAgICAgJ2FmdGVySHlkcmF0ZScsXG4gICAgICAgICdhZnRlclJlbmRlcicsXG4gICAgICAgICdyb3V0ZUNoYW5nZSdcbiAgICBdLmZvckVhY2goKG1hcmspPT5wZXJmb3JtYW5jZS5jbGVhck1hcmtzKG1hcmspKTtcbn1cbmZ1bmN0aW9uIG1hcmtIeWRyYXRlQ29tcGxldGUoKSB7XG4gICAgaWYgKCFfdXRpbHMuU1QpIHJldHVybjtcbiAgICBwZXJmb3JtYW5jZS5tYXJrKCdhZnRlckh5ZHJhdGUnKSAvLyBtYXJrIGVuZCBvZiBoeWRyYXRpb25cbiAgICA7XG4gICAgcGVyZm9ybWFuY2UubWVhc3VyZSgnTmV4dC5qcy1iZWZvcmUtaHlkcmF0aW9uJywgJ25hdmlnYXRpb25TdGFydCcsICdiZWZvcmVSZW5kZXInKTtcbiAgICBwZXJmb3JtYW5jZS5tZWFzdXJlKCdOZXh0LmpzLWh5ZHJhdGlvbicsICdiZWZvcmVSZW5kZXInLCAnYWZ0ZXJIeWRyYXRlJyk7XG4gICAgaWYgKG9uUGVyZkVudHJ5KSB7XG4gICAgICAgIHBlcmZvcm1hbmNlLmdldEVudHJpZXNCeU5hbWUoJ05leHQuanMtaHlkcmF0aW9uJykuZm9yRWFjaChvblBlcmZFbnRyeSk7XG4gICAgfVxuICAgIGNsZWFyTWFya3MoKTtcbn1cbmZ1bmN0aW9uIG1hcmtSZW5kZXJDb21wbGV0ZSgpIHtcbiAgICBpZiAoIV91dGlscy5TVCkgcmV0dXJuO1xuICAgIHBlcmZvcm1hbmNlLm1hcmsoJ2FmdGVyUmVuZGVyJykgLy8gbWFyayBlbmQgb2YgcmVuZGVyXG4gICAgO1xuICAgIGNvbnN0IG5hdlN0YXJ0RW50cmllcyA9IHBlcmZvcm1hbmNlLmdldEVudHJpZXNCeU5hbWUoJ3JvdXRlQ2hhbmdlJywgJ21hcmsnKTtcbiAgICBpZiAoIW5hdlN0YXJ0RW50cmllcy5sZW5ndGgpIHJldHVybjtcbiAgICBwZXJmb3JtYW5jZS5tZWFzdXJlKCdOZXh0LmpzLXJvdXRlLWNoYW5nZS10by1yZW5kZXInLCBuYXZTdGFydEVudHJpZXNbMF0ubmFtZSwgJ2JlZm9yZVJlbmRlcicpO1xuICAgIHBlcmZvcm1hbmNlLm1lYXN1cmUoJ05leHQuanMtcmVuZGVyJywgJ2JlZm9yZVJlbmRlcicsICdhZnRlclJlbmRlcicpO1xuICAgIGlmIChvblBlcmZFbnRyeSkge1xuICAgICAgICBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lKCdOZXh0LmpzLXJlbmRlcicpLmZvckVhY2gob25QZXJmRW50cnkpO1xuICAgICAgICBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lKCdOZXh0LmpzLXJvdXRlLWNoYW5nZS10by1yZW5kZXInKS5mb3JFYWNoKG9uUGVyZkVudHJ5KTtcbiAgICB9XG4gICAgY2xlYXJNYXJrcygpO1xuICAgIFtcbiAgICAgICAgJ05leHQuanMtcm91dGUtY2hhbmdlLXRvLXJlbmRlcicsXG4gICAgICAgICdOZXh0LmpzLXJlbmRlcidcbiAgICBdLmZvckVhY2goKG1lYXN1cmUpPT5wZXJmb3JtYW5jZS5jbGVhck1lYXN1cmVzKG1lYXN1cmUpKTtcbn1cbmZ1bmN0aW9uIHJlbmRlclJlYWN0RWxlbWVudChkb21FbCwgZm4pIHtcbiAgICAvLyBtYXJrIHN0YXJ0IG9mIGh5ZHJhdGUvcmVuZGVyXG4gICAgaWYgKF91dGlscy5TVCkge1xuICAgICAgICBwZXJmb3JtYW5jZS5tYXJrKCdiZWZvcmVSZW5kZXInKTtcbiAgICB9XG4gICAgY29uc3QgcmVhY3RFbCA9IGZuKHNob3VsZEh5ZHJhdGUgPyBtYXJrSHlkcmF0ZUNvbXBsZXRlIDogbWFya1JlbmRlckNvbXBsZXRlKTtcbiAgICBpZiAoIXJlYWN0Um9vdCkge1xuICAgICAgICAvLyBVbmxpa2Ugd2l0aCBjcmVhdGVSb290LCB5b3UgZG9uJ3QgbmVlZCBhIHNlcGFyYXRlIHJvb3QucmVuZGVyKCkgY2FsbCBoZXJlXG4gICAgICAgIHJlYWN0Um9vdCA9IF9jbGllbnQuZGVmYXVsdC5oeWRyYXRlUm9vdChkb21FbCwgcmVhY3RFbCwge1xuICAgICAgICAgICAgb25SZWNvdmVyYWJsZUVycm9yOiBfb25SZWNvdmVyYWJsZUVycm9yLmRlZmF1bHRcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBzaG91bGRIeWRyYXRlIHZhcmlhYmxlIHdoZW4gUmVhY3QgMTggaXMgc3RhYmxlIGFzIGl0IGNhbiBkZXBlbmQgb24gYHJlYWN0Um9vdGAgZXhpc3RpbmdcbiAgICAgICAgc2hvdWxkSHlkcmF0ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0VHJhbnNpdGlvbiA9IF9yZWFjdC5kZWZhdWx0LnN0YXJ0VHJhbnNpdGlvbjtcbiAgICAgICAgc3RhcnRUcmFuc2l0aW9uKCgpPT57XG4gICAgICAgICAgICByZWFjdFJvb3QucmVuZGVyKHJlYWN0RWwpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5mdW5jdGlvbiBSb290KHsgY2FsbGJhY2tzICwgY2hpbGRyZW4gIH0pIHtcbiAgICAvLyBXZSB1c2UgYHVzZUxheW91dEVmZmVjdGAgdG8gZ3VhcmFudGVlIHRoZSBjYWxsYmFja3MgYXJlIGV4ZWN1dGVkXG4gICAgLy8gYXMgc29vbiBhcyBSZWFjdCBmbHVzaGVzIHRoZSB1cGRhdGVcbiAgICBfcmVhY3QuZGVmYXVsdC51c2VMYXlvdXRFZmZlY3QoKCk9PmNhbGxiYWNrcy5mb3JFYWNoKChjYWxsYmFjayk9PmNhbGxiYWNrKCkpLCBbXG4gICAgICAgIGNhbGxiYWNrc1xuICAgIF0pO1xuICAgIC8vIFdlIHNob3VsZCBhc2sgdG8gbWVhc3VyZSB0aGUgV2ViIFZpdGFscyBhZnRlciByZW5kZXJpbmcgY29tcGxldGVzIHNvIHdlXG4gICAgLy8gZG9uJ3QgY2F1c2UgYW55IGh5ZHJhdGlvbiBkZWxheTpcbiAgICBfcmVhY3QuZGVmYXVsdC51c2VFZmZlY3QoKCk9PntcbiAgICAgICAgKDAsIF9wZXJmb3JtYW5jZVJlbGF5ZXIpLmRlZmF1bHQob25QZXJmRW50cnkpO1xuICAgIH0sIFtdKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1RFU1RfTU9ERSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICAgICAgX3JlYWN0LmRlZmF1bHQudXNlRWZmZWN0KCgpPT57XG4gICAgICAgICAgICB3aW5kb3cuX19ORVhUX0hZRFJBVEVEID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmICh3aW5kb3cuX19ORVhUX0hZRFJBVEVEX0NCKSB7XG4gICAgICAgICAgICAgICAgd2luZG93Ll9fTkVYVF9IWURSQVRFRF9DQigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBbXSk7XG4gICAgfVxuICAgIHJldHVybiBjaGlsZHJlbjtcbn1cbmZ1bmN0aW9uIGRvUmVuZGVyKGlucHV0KSB7XG4gICAgbGV0IHsgQXBwICwgQ29tcG9uZW50ICwgcHJvcHMgLCBlcnIgIH0gPSBpbnB1dDtcbiAgICBsZXQgc3R5bGVTaGVldHMgPSAnaW5pdGlhbCcgaW4gaW5wdXQgPyB1bmRlZmluZWQgOiBpbnB1dC5zdHlsZVNoZWV0cztcbiAgICBDb21wb25lbnQgPSBDb21wb25lbnQgfHwgbGFzdEFwcFByb3BzLkNvbXBvbmVudDtcbiAgICBwcm9wcyA9IHByb3BzIHx8IGxhc3RBcHBQcm9wcy5wcm9wcztcbiAgICBjb25zdCBhcHBQcm9wcyA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICBDb21wb25lbnQsXG4gICAgICAgIGVycixcbiAgICAgICAgcm91dGVyXG4gICAgfSk7XG4gICAgLy8gbGFzdEFwcFByb3BzIGhhcyB0byBiZSBzZXQgYmVmb3JlIFJlYWN0RG9tLnJlbmRlciB0byBhY2NvdW50IGZvciBSZWFjdERvbSB0aHJvd2luZyBhbiBlcnJvci5cbiAgICBsYXN0QXBwUHJvcHMgPSBhcHBQcm9wcztcbiAgICBsZXQgY2FuY2VsZWQgPSBmYWxzZTtcbiAgICBsZXQgcmVzb2x2ZVByb21pc2U7XG4gICAgY29uc3QgcmVuZGVyUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57XG4gICAgICAgIGlmIChsYXN0UmVuZGVyUmVqZWN0KSB7XG4gICAgICAgICAgICBsYXN0UmVuZGVyUmVqZWN0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzb2x2ZVByb21pc2UgPSAoKT0+e1xuICAgICAgICAgICAgbGFzdFJlbmRlclJlamVjdCA9IG51bGw7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH07XG4gICAgICAgIGxhc3RSZW5kZXJSZWplY3QgPSAoKT0+e1xuICAgICAgICAgICAgY2FuY2VsZWQgPSB0cnVlO1xuICAgICAgICAgICAgbGFzdFJlbmRlclJlamVjdCA9IG51bGw7XG4gICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignQ2FuY2VsIHJlbmRlcmluZyByb3V0ZScpO1xuICAgICAgICAgICAgZXJyb3IuY2FuY2VsbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIH07XG4gICAgfSk7XG4gICAgLy8gVGhpcyBmdW5jdGlvbiBoYXMgYSByZXR1cm4gdHlwZSB0byBlbnN1cmUgaXQgZG9lc24ndCBzdGFydCByZXR1cm5pbmcgYVxuICAgIC8vIFByb21pc2UuIEl0IHNob3VsZCByZW1haW4gc3luY2hyb25vdXMuXG4gICAgZnVuY3Rpb24gb25TdGFydCgpIHtcbiAgICAgICAgaWYgKCFzdHlsZVNoZWV0cyB8fCAvLyBXZSB1c2UgYHN0eWxlLWxvYWRlcmAgaW4gZGV2ZWxvcG1lbnQsIHNvIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmdcbiAgICAgICAgLy8gdW5sZXNzIHdlJ3JlIGluIHByb2R1Y3Rpb246XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50U3R5bGVUYWdzID0gbG9vc2VUb0FycmF5KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3N0eWxlW2RhdGEtbi1ocmVmXScpKTtcbiAgICAgICAgY29uc3QgY3VycmVudEhyZWZzID0gbmV3IFNldChjdXJyZW50U3R5bGVUYWdzLm1hcCgodGFnKT0+dGFnLmdldEF0dHJpYnV0ZSgnZGF0YS1uLWhyZWYnKSkpO1xuICAgICAgICBjb25zdCBub3NjcmlwdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ25vc2NyaXB0W2RhdGEtbi1jc3NdJyk7XG4gICAgICAgIGNvbnN0IG5vbmNlID0gbm9zY3JpcHQgPT0gbnVsbCA/IHZvaWQgMCA6IG5vc2NyaXB0LmdldEF0dHJpYnV0ZSgnZGF0YS1uLWNzcycpO1xuICAgICAgICBzdHlsZVNoZWV0cy5mb3JFYWNoKCh7IGhyZWYgLCB0ZXh0ICB9KT0+e1xuICAgICAgICAgICAgaWYgKCFjdXJyZW50SHJlZnMuaGFzKGhyZWYpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3R5bGVUYWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgICAgICAgICAgIHN0eWxlVGFnLnNldEF0dHJpYnV0ZSgnZGF0YS1uLWhyZWYnLCBocmVmKTtcbiAgICAgICAgICAgICAgICBzdHlsZVRhZy5zZXRBdHRyaWJ1dGUoJ21lZGlhJywgJ3gnKTtcbiAgICAgICAgICAgICAgICBpZiAobm9uY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVUYWcuc2V0QXR0cmlidXRlKCdub25jZScsIG5vbmNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZVRhZyk7XG4gICAgICAgICAgICAgICAgc3R5bGVUYWcuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG9uSGVhZENvbW1pdCgpIHtcbiAgICAgICAgaWYgKC8vIFdlIHVzZSBgc3R5bGUtbG9hZGVyYCBpbiBkZXZlbG9wbWVudCwgc28gd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZ1xuICAgICAgICAvLyB1bmxlc3Mgd2UncmUgaW4gcHJvZHVjdGlvbjpcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJyAmJiAvLyBXZSBjYW4gc2tpcCB0aGlzIGR1cmluZyBoeWRyYXRpb24uIFJ1bm5pbmcgaXQgd29udCBjYXVzZSBhbnkgaGFybSwgYnV0XG4gICAgICAgIC8vIHdlIG1heSBhcyB3ZWxsIHNhdmUgdGhlIENQVSBjeWNsZXM6XG4gICAgICAgIHN0eWxlU2hlZXRzICYmIC8vIEVuc3VyZSB0aGlzIHJlbmRlciB3YXMgbm90IGNhbmNlbGVkXG4gICAgICAgICFjYW5jZWxlZCkge1xuICAgICAgICAgICAgY29uc3QgZGVzaXJlZEhyZWZzID0gbmV3IFNldChzdHlsZVNoZWV0cy5tYXAoKHMpPT5zLmhyZWYpKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdHlsZVRhZ3MgPSBsb29zZVRvQXJyYXkoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnc3R5bGVbZGF0YS1uLWhyZWZdJykpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudEhyZWZzID0gY3VycmVudFN0eWxlVGFncy5tYXAoKHRhZyk9PnRhZy5nZXRBdHRyaWJ1dGUoJ2RhdGEtbi1ocmVmJykpO1xuICAgICAgICAgICAgLy8gVG9nZ2xlIGA8c3R5bGU+YCB0YWdzIG9uIG9yIG9mZiBkZXBlbmRpbmcgb24gaWYgdGhleSdyZSBuZWVkZWQ6XG4gICAgICAgICAgICBmb3IobGV0IGlkeCA9IDA7IGlkeCA8IGN1cnJlbnRIcmVmcy5sZW5ndGg7ICsraWR4KXtcbiAgICAgICAgICAgICAgICBpZiAoZGVzaXJlZEhyZWZzLmhhcyhjdXJyZW50SHJlZnNbaWR4XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0eWxlVGFnc1tpZHhdLnJlbW92ZUF0dHJpYnV0ZSgnbWVkaWEnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3R5bGVUYWdzW2lkeF0uc2V0QXR0cmlidXRlKCdtZWRpYScsICd4Jyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUmVvcmRlciBzdHlsZXMgaW50byBpbnRlbmRlZCBvcmRlcjpcbiAgICAgICAgICAgIGxldCByZWZlcmVuY2VOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignbm9zY3JpcHRbZGF0YS1uLWNzc10nKTtcbiAgICAgICAgICAgIGlmICgvLyBUaGlzIHNob3VsZCBiZSBhbiBpbnZhcmlhbnQ6XG4gICAgICAgICAgICByZWZlcmVuY2VOb2RlKSB7XG4gICAgICAgICAgICAgICAgc3R5bGVTaGVldHMuZm9yRWFjaCgoeyBocmVmICB9KT0+e1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRUYWcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBzdHlsZVtkYXRhLW4taHJlZj1cIiR7aHJlZn1cIl1gKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKC8vIFRoaXMgc2hvdWxkIGJlIGFuIGludmFyaWFudDpcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VGFnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VOb2RlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRhcmdldFRhZywgcmVmZXJlbmNlTm9kZS5uZXh0U2libGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VOb2RlID0gdGFyZ2V0VGFnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGaW5hbGx5LCBjbGVhbiB1cCBzZXJ2ZXIgcmVuZGVyZWQgc3R5bGVzaGVldHM6XG4gICAgICAgICAgICBsb29zZVRvQXJyYXkoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbGlua1tkYXRhLW4tcF0nKSkuZm9yRWFjaCgoZWwpPT57XG4gICAgICAgICAgICAgICAgZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5wdXQuc2Nyb2xsKSB7XG4gICAgICAgICAgICBjb25zdCB7IHggLCB5ICB9ID0gaW5wdXQuc2Nyb2xsO1xuICAgICAgICAgICAgKDAsIF9oYW5kbGVTbW9vdGhTY3JvbGwpLmhhbmRsZVNtb290aFNjcm9sbCgoKT0+e1xuICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyh4LCB5KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIG9uUm9vdENvbW1pdCgpIHtcbiAgICAgICAgcmVzb2x2ZVByb21pc2UoKTtcbiAgICB9XG4gICAgb25TdGFydCgpO1xuICAgIGNvbnN0IGVsZW0gPSAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX3JlYWN0LmRlZmF1bHQuRnJhZ21lbnQsIG51bGwsIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChIZWFkLCB7XG4gICAgICAgIGNhbGxiYWNrOiBvbkhlYWRDb21taXRcbiAgICB9KSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KEFwcENvbnRhaW5lciwgbnVsbCwgcmVuZGVyQXBwKEFwcCwgYXBwUHJvcHMpLCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX3BvcnRhbC5Qb3J0YWwsIHtcbiAgICAgICAgdHlwZTogXCJuZXh0LXJvdXRlLWFubm91bmNlclwiXG4gICAgfSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9yb3V0ZUFubm91bmNlci5Sb3V0ZUFubm91bmNlciwgbnVsbCkpKSk7XG4gICAgLy8gV2UgY2F0Y2ggcnVudGltZSBlcnJvcnMgdXNpbmcgY29tcG9uZW50RGlkQ2F0Y2ggd2hpY2ggd2lsbCB0cmlnZ2VyIHJlbmRlckVycm9yXG4gICAgcmVuZGVyUmVhY3RFbGVtZW50KGFwcEVsZW1lbnQsIChjYWxsYmFjayk9Pi8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChSb290LCB7XG4gICAgICAgICAgICBjYWxsYmFja3M6IFtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayxcbiAgICAgICAgICAgICAgICBvblJvb3RDb21taXRcbiAgICAgICAgICAgIF1cbiAgICAgICAgfSwgcHJvY2Vzcy5lbnYuX19ORVhUX1NUUklDVF9NT0RFID8gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9yZWFjdC5kZWZhdWx0LlN0cmljdE1vZGUsIG51bGwsIGVsZW0pIDogZWxlbSkpO1xuICAgIHJldHVybiByZW5kZXJQcm9taXNlO1xufVxuZnVuY3Rpb24gcmVuZGVyKHJlbmRlcmluZ1Byb3BzKSB7XG4gICAgcmV0dXJuIF9yZW5kZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cbmZ1bmN0aW9uIF9yZW5kZXIoKSB7XG4gICAgX3JlbmRlciA9IF9hc3luY190b19nZW5lcmF0b3IoZnVuY3Rpb24qKHJlbmRlcmluZ1Byb3BzKSB7XG4gICAgICAgIGlmIChyZW5kZXJpbmdQcm9wcy5lcnIpIHtcbiAgICAgICAgICAgIHlpZWxkIHJlbmRlckVycm9yKHJlbmRlcmluZ1Byb3BzKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgeWllbGQgZG9SZW5kZXIocmVuZGVyaW5nUHJvcHMpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbmRlckVyciA9ICgwLCBfaXNFcnJvcikuZ2V0UHJvcGVyRXJyb3IoZXJyKTtcbiAgICAgICAgICAgIC8vIGJ1YmJsZSB1cCBjYW5jZWxhdGlvbiBlcnJvcnNcbiAgICAgICAgICAgIGlmIChyZW5kZXJFcnIuY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgcmVuZGVyRXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICAgICAgICAgICAgLy8gRW5zdXJlIHRoaXMgZXJyb3IgaXMgZGlzcGxheWVkIGluIHRoZSBvdmVybGF5IGluIGRldmVsb3BtZW50XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyByZW5kZXJFcnI7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB5aWVsZCByZW5kZXJFcnJvcihfZXh0ZW5kcyh7fSwgcmVuZGVyaW5nUHJvcHMsIHtcbiAgICAgICAgICAgICAgICBlcnI6IHJlbmRlckVyclxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIF9yZW5kZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cbmZ1bmN0aW9uIGh5ZHJhdGUob3B0cykge1xuICAgIHJldHVybiBfaHlkcmF0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuZnVuY3Rpb24gX2h5ZHJhdGUoKSB7XG4gICAgX2h5ZHJhdGUgPSBfYXN5bmNfdG9fZ2VuZXJhdG9yKGZ1bmN0aW9uKihvcHRzKSB7XG4gICAgICAgIGxldCBpbml0aWFsRXJyID0gaW5pdGlhbERhdGEuZXJyO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgYXBwRW50cnlwb2ludCA9IHlpZWxkIHBhZ2VMb2FkZXIucm91dGVMb2FkZXIud2hlbkVudHJ5cG9pbnQoJy9fYXBwJyk7XG4gICAgICAgICAgICBpZiAoJ2Vycm9yJyBpbiBhcHBFbnRyeXBvaW50KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgYXBwRW50cnlwb2ludC5lcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHsgY29tcG9uZW50OiBhcHAgLCBleHBvcnRzOiBtb2QgIH0gPSBhcHBFbnRyeXBvaW50O1xuICAgICAgICAgICAgQ2FjaGVkQXBwID0gYXBwO1xuICAgICAgICAgICAgaWYgKG1vZCAmJiBtb2QucmVwb3J0V2ViVml0YWxzKSB7XG4gICAgICAgICAgICAgICAgb25QZXJmRW50cnkgPSAoeyBpZCAsIG5hbWUgLCBzdGFydFRpbWUgLCB2YWx1ZSAsIGR1cmF0aW9uICwgZW50cnlUeXBlICwgZW50cmllcyAsIGF0dHJpYnV0aW9uICB9KT0+e1xuICAgICAgICAgICAgICAgICAgICAvLyBDb21iaW5lcyB0aW1lc3RhbXAgd2l0aCByYW5kb20gbnVtYmVyIGZvciB1bmlxdWUgSURcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5pcXVlSUQgPSBgJHtEYXRlLm5vdygpfS0ke01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqICg5ZTEyIC0gMSkpICsgMWUxMn1gO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGVyZlN0YXJ0RW50cnk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbnRyaWVzICYmIGVudHJpZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZXJmU3RhcnRFbnRyeSA9IGVudHJpZXNbMF0uc3RhcnRUaW1lO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdlYlZpdGFscyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpZCB8fCB1bmlxdWVJRCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydFRpbWU6IHN0YXJ0VGltZSB8fCBwZXJmU3RhcnRFbnRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSA9PSBudWxsID8gZHVyYXRpb24gOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBlbnRyeVR5cGUgPT09ICdtYXJrJyB8fCBlbnRyeVR5cGUgPT09ICdtZWFzdXJlJyA/ICdjdXN0b20nIDogJ3dlYi12aXRhbCdcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3ZWJWaXRhbHMuYXR0cmlidXRpb24gPSBhdHRyaWJ1dGlvbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBtb2QucmVwb3J0V2ViVml0YWxzKHdlYlZpdGFscyk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBhZ2VFbnRyeXBvaW50ID0gLy8gVGhlIGRldiBzZXJ2ZXIgZmFpbHMgdG8gc2VydmUgc2NyaXB0IGFzc2V0cyB3aGVuIHRoZXJlJ3MgYSBoeWRyYXRpb25cbiAgICAgICAgICAgIC8vIGVycm9yLCBzbyB3ZSBuZWVkIHRvIHNraXAgd2FpdGluZyBmb3IgdGhlIGVudHJ5cG9pbnQuXG4gICAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50JyAmJiBpbml0aWFsRGF0YS5lcnIgPyB7XG4gICAgICAgICAgICAgICAgZXJyb3I6IGluaXRpYWxEYXRhLmVyclxuICAgICAgICAgICAgfSA6IHlpZWxkIHBhZ2VMb2FkZXIucm91dGVMb2FkZXIud2hlbkVudHJ5cG9pbnQoaW5pdGlhbERhdGEucGFnZSk7XG4gICAgICAgICAgICBpZiAoJ2Vycm9yJyBpbiBwYWdlRW50cnlwb2ludCkge1xuICAgICAgICAgICAgICAgIHRocm93IHBhZ2VFbnRyeXBvaW50LmVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQ2FjaGVkQ29tcG9uZW50ID0gcGFnZUVudHJ5cG9pbnQuY29tcG9uZW50O1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGlzVmFsaWRFbGVtZW50VHlwZSAgfSA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9yZWFjdC1pcycpO1xuICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEVsZW1lbnRUeXBlKENhY2hlZENvbXBvbmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZGVmYXVsdCBleHBvcnQgaXMgbm90IGEgUmVhY3QgQ29tcG9uZW50IGluIHBhZ2U6IFwiJHtpbml0aWFsRGF0YS5wYWdlfVwiYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcjEpIHtcbiAgICAgICAgICAgIC8vIFRoaXMgY2F0Y2hlcyBlcnJvcnMgbGlrZSB0aHJvd2luZyBpbiB0aGUgdG9wIGxldmVsIG9mIGEgbW9kdWxlXG4gICAgICAgICAgICBpbml0aWFsRXJyID0gKDAsIF9pc0Vycm9yKS5nZXRQcm9wZXJFcnJvcihlcnJvcjEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgY29uc3QgeyBnZXRTZXJ2ZXJFcnJvciAsICB9ID0gcmVxdWlyZSgnbmV4dC9kaXN0L2NvbXBpbGVkL0BuZXh0L3JlYWN0LWRldi1vdmVybGF5L2Rpc3QvY2xpZW50Jyk7XG4gICAgICAgICAgICAvLyBTZXJ2ZXItc2lkZSBydW50aW1lIGVycm9ycyBuZWVkIHRvIGJlIHJlLXRocm93biBvbiB0aGUgY2xpZW50LXNpZGUgc29cbiAgICAgICAgICAgIC8vIHRoYXQgdGhlIG92ZXJsYXkgaXMgcmVuZGVyZWQuXG4gICAgICAgICAgICBpZiAoaW5pdGlhbEVycikge1xuICAgICAgICAgICAgICAgIGlmIChpbml0aWFsRXJyID09PSBpbml0aWFsRGF0YS5lcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHZW5lcmF0ZSBhIG5ldyBlcnJvciBvYmplY3QuIFdlIGB0aHJvd2AgaXQgYmVjYXVzZSBzb21lIGJyb3dzZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBzZXQgdGhlIGBzdGFja2Agd2hlbiB0aHJvd24sIGFuZCB3ZSB3YW50IHRvIGVuc3VyZSBvdXJzIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90IG92ZXJyaWRkZW4gd2hlbiB3ZSByZS10aHJvdyBpdCBiZWxvdy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoaW5pdGlhbEVyci5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvci5uYW1lID0gaW5pdGlhbEVyci5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Iuc3RhY2sgPSBpbml0aWFsRXJyLnN0YWNrO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZ2V0U2VydmVyRXJyb3IoZXJyb3IsIGluaXRpYWxFcnIuc291cmNlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgaW5pdGlhbEVycjtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh3aW5kb3cuX19ORVhUX1BSRUxPQURSRUFEWSkge1xuICAgICAgICAgICAgeWllbGQgd2luZG93Ll9fTkVYVF9QUkVMT0FEUkVBRFkoaW5pdGlhbERhdGEuZHluYW1pY0lkcyk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0cy5yb3V0ZXIgPSByb3V0ZXIgPSAoMCwgX3JvdXRlcikuY3JlYXRlUm91dGVyKGluaXRpYWxEYXRhLnBhZ2UsIGluaXRpYWxEYXRhLnF1ZXJ5LCBhc1BhdGgsIHtcbiAgICAgICAgICAgIGluaXRpYWxQcm9wczogaW5pdGlhbERhdGEucHJvcHMsXG4gICAgICAgICAgICBwYWdlTG9hZGVyLFxuICAgICAgICAgICAgQXBwOiBDYWNoZWRBcHAsXG4gICAgICAgICAgICBDb21wb25lbnQ6IENhY2hlZENvbXBvbmVudCxcbiAgICAgICAgICAgIHdyYXBBcHAsXG4gICAgICAgICAgICBlcnI6IGluaXRpYWxFcnIsXG4gICAgICAgICAgICBpc0ZhbGxiYWNrOiBCb29sZWFuKGluaXRpYWxEYXRhLmlzRmFsbGJhY2spLFxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uOiAoaW5mbywgQXBwLCBzY3JvbGwpPT5yZW5kZXIoT2JqZWN0LmFzc2lnbih7fSwgaW5mbywge1xuICAgICAgICAgICAgICAgICAgICBBcHAsXG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGxvY2FsZTogaW5pdGlhbERhdGEubG9jYWxlLFxuICAgICAgICAgICAgbG9jYWxlczogaW5pdGlhbERhdGEubG9jYWxlcyxcbiAgICAgICAgICAgIGRlZmF1bHRMb2NhbGUsXG4gICAgICAgICAgICBkb21haW5Mb2NhbGVzOiBpbml0aWFsRGF0YS5kb21haW5Mb2NhbGVzLFxuICAgICAgICAgICAgaXNQcmV2aWV3OiBpbml0aWFsRGF0YS5pc1ByZXZpZXdcbiAgICAgICAgfSk7XG4gICAgICAgIGluaXRpYWxNYXRjaGVzTWlkZGxld2FyZSA9IHlpZWxkIHJvdXRlci5faW5pdGlhbE1hdGNoZXNNaWRkbGV3YXJlUHJvbWlzZTtcbiAgICAgICAgY29uc3QgcmVuZGVyQ3R4ID0ge1xuICAgICAgICAgICAgQXBwOiBDYWNoZWRBcHAsXG4gICAgICAgICAgICBpbml0aWFsOiB0cnVlLFxuICAgICAgICAgICAgQ29tcG9uZW50OiBDYWNoZWRDb21wb25lbnQsXG4gICAgICAgICAgICBwcm9wczogaW5pdGlhbERhdGEucHJvcHMsXG4gICAgICAgICAgICBlcnI6IGluaXRpYWxFcnJcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKG9wdHMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdHMuYmVmb3JlUmVuZGVyKSB7XG4gICAgICAgICAgICB5aWVsZCBvcHRzLmJlZm9yZVJlbmRlcigpO1xuICAgICAgICB9XG4gICAgICAgIHJlbmRlcihyZW5kZXJDdHgpO1xuICAgIH0pO1xuICAgIHJldHVybiBfaHlkcmF0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJpbml0aWFsaXplIiwiaHlkcmF0ZSIsImVtaXR0ZXIiLCJyb3V0ZXIiLCJ2ZXJzaW9uIiwiX2FzeW5jX3RvX2dlbmVyYXRvciIsInJlcXVpcmUiLCJkZWZhdWx0IiwiX2V4dGVuZHMiLCJfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQiLCJfaW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkIiwiX3JlYWN0IiwiX2NsaWVudCIsIl9oZWFkTWFuYWdlckNvbnRleHQiLCJfbWl0dCIsIl9yb3V0ZXJDb250ZXh0IiwiX2hhbmRsZVNtb290aFNjcm9sbCIsIl9pc0R5bmFtaWMiLCJfcXVlcnlzdHJpbmciLCJfcnVudGltZUNvbmZpZyIsIl91dGlscyIsIl9wb3J0YWwiLCJfaGVhZE1hbmFnZXIiLCJfcGFnZUxvYWRlciIsIl9wZXJmb3JtYW5jZVJlbGF5ZXIiLCJfcm91dGVBbm5vdW5jZXIiLCJfcm91dGVyIiwiX2lzRXJyb3IiLCJfaW1hZ2VDb25maWdDb250ZXh0IiwiX3JlbW92ZUJhc2VQYXRoIiwiX2hhc0Jhc2VQYXRoIiwiX2FwcFJvdXRlckNvbnRleHQiLCJfYWRhcHRlcnMiLCJfaG9va3NDbGllbnRDb250ZXh0IiwiX29uUmVjb3ZlcmFibGVFcnJvciIsImxvb3NlVG9BcnJheSIsImlucHV0Iiwic2xpY2UiLCJjYWxsIiwiaW5pdGlhbERhdGEiLCJkZWZhdWx0TG9jYWxlIiwidW5kZWZpbmVkIiwiYXNQYXRoIiwicGFnZUxvYWRlciIsImFwcEVsZW1lbnQiLCJoZWFkTWFuYWdlciIsImluaXRpYWxNYXRjaGVzTWlkZGxld2FyZSIsImxhc3RBcHBQcm9wcyIsImxhc3RSZW5kZXJSZWplY3QiLCJ3ZWJwYWNrSE1SIiwiQ2FjaGVkQXBwIiwib25QZXJmRW50cnkiLCJDYWNoZWRDb21wb25lbnQiLCJzZWxmIiwiX19uZXh0X3JlcXVpcmVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJDb250YWluZXIiLCJDb21wb25lbnQiLCJjb21wb25lbnREaWRDYXRjaCIsImNvbXBvbmVudEVyciIsImluZm8iLCJwcm9wcyIsImZuIiwiY29tcG9uZW50RGlkTW91bnQiLCJzY3JvbGxUb0hhc2giLCJpc1NzciIsImlzRmFsbGJhY2siLCJuZXh0RXhwb3J0IiwiaXNEeW5hbWljUm91dGUiLCJwYXRobmFtZSIsImxvY2F0aW9uIiwic2VhcmNoIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9IQVNfUkVXUklURVMiLCJfX05fU1NHIiwicmVwbGFjZSIsIlN0cmluZyIsImFzc2lnbiIsInVybFF1ZXJ5VG9TZWFyY2hQYXJhbXMiLCJxdWVyeSIsIlVSTFNlYXJjaFBhcmFtcyIsIl9oIiwic2hhbGxvdyIsImNhdGNoIiwiZXJyIiwiY2FuY2VsbGVkIiwiY29tcG9uZW50RGlkVXBkYXRlIiwiaGFzaCIsInN1YnN0cmluZyIsImVsIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsInNldFRpbWVvdXQiLCJzY3JvbGxJbnRvVmlldyIsInJlbmRlciIsImNoaWxkcmVuIiwiUmVhY3REZXZPdmVybGF5IiwiY3JlYXRlRWxlbWVudCIsIl9pbml0aWFsaXplIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJvcHRzIiwiSlNPTiIsInBhcnNlIiwidGV4dENvbnRlbnQiLCJ3aW5kb3ciLCJfX05FWFRfREFUQV9fIiwicHJlZml4IiwiYXNzZXRQcmVmaXgiLCJfX3dlYnBhY2tfcHVibGljX3BhdGhfXyIsInNldENvbmZpZyIsInNlcnZlclJ1bnRpbWVDb25maWciLCJwdWJsaWNSdW50aW1lQ29uZmlnIiwicnVudGltZUNvbmZpZyIsImdldFVSTCIsImhhc0Jhc2VQYXRoIiwicmVtb3ZlQmFzZVBhdGgiLCJfX05FWFRfSTE4Tl9TVVBQT1JUIiwibm9ybWFsaXplTG9jYWxlUGF0aCIsImRldGVjdERvbWFpbkxvY2FsZSIsInBhcnNlUmVsYXRpdmVVcmwiLCJmb3JtYXRVcmwiLCJsb2NhbGVzIiwicGFyc2VkQXMiLCJsb2NhbGVQYXRoUmVzdWx0IiwiZGV0ZWN0ZWRMb2NhbGUiLCJsb2NhbGUiLCJkZXRlY3RlZERvbWFpbiIsIl9fTkVYVF9JMThOX0RPTUFJTlMiLCJob3N0bmFtZSIsInNjcmlwdExvYWRlciIsImluaXRTY3JpcHRMb2FkZXIiLCJidWlsZElkIiwicmVnaXN0ZXIiLCJyIiwiZiIsInJvdXRlTG9hZGVyIiwib25FbnRyeXBvaW50IiwiX19ORVhUX1AiLCJtYXAiLCJwIiwicHVzaCIsImdldElzU3NyIiwicmVuZGVyQXBwIiwiQXBwIiwiYXBwUHJvcHMiLCJBcHBDb250YWluZXIiLCJfYXV0b0V4cG9ydCIsImVycm9yIiwicmVuZGVyRXJyb3IiLCJjb25zb2xlIiwiQXBwUm91dGVyQ29udGV4dCIsIlByb3ZpZGVyIiwiYWRhcHRGb3JBcHBSb3V0ZXJJbnN0YW5jZSIsIlNlYXJjaFBhcmFtc0NvbnRleHQiLCJhZGFwdEZvclNlYXJjaFBhcmFtcyIsIlBhdGhuYW1lQ29udGV4dFByb3ZpZGVyQWRhcHRlciIsImlzQXV0b0V4cG9ydCIsImF1dG9FeHBvcnQiLCJSb3V0ZXJDb250ZXh0IiwibWFrZVB1YmxpY1JvdXRlckluc3RhbmNlIiwiSGVhZE1hbmFnZXJDb250ZXh0IiwiSW1hZ2VDb25maWdDb250ZXh0IiwiX19ORVhUX0lNQUdFX09QVFMiLCJ3cmFwQXBwIiwid3JhcHBlZEFwcFByb3BzIiwicmVuZGVyRXJyb3JQcm9wcyIsIm9uVW5yZWNvdmVyYWJsZUVycm9yIiwiZG9SZW5kZXIiLCJzdHlsZVNoZWV0cyIsImxvYWRQYWdlIiwidGhlbiIsInBhZ2UiLCJFcnJvckNvbXBvbmVudCIsImVycm9yTW9kdWxlIiwiYXBwTW9kdWxlIiwibSIsInJlZiIsIkFwcFRyZWUiLCJhcHBDdHgiLCJjdHgiLCJQcm9taXNlIiwicmVzb2x2ZSIsImxvYWRHZXRJbml0aWFsUHJvcHMiLCJpbml0UHJvcHMiLCJIZWFkIiwiY2FsbGJhY2siLCJ1c2VMYXlvdXRFZmZlY3QiLCJyZWFjdFJvb3QiLCJzaG91bGRIeWRyYXRlIiwiY2xlYXJNYXJrcyIsImZvckVhY2giLCJtYXJrIiwicGVyZm9ybWFuY2UiLCJtYXJrSHlkcmF0ZUNvbXBsZXRlIiwiU1QiLCJtZWFzdXJlIiwiZ2V0RW50cmllc0J5TmFtZSIsIm1hcmtSZW5kZXJDb21wbGV0ZSIsIm5hdlN0YXJ0RW50cmllcyIsImxlbmd0aCIsIm5hbWUiLCJjbGVhck1lYXN1cmVzIiwicmVuZGVyUmVhY3RFbGVtZW50IiwiZG9tRWwiLCJyZWFjdEVsIiwiaHlkcmF0ZVJvb3QiLCJvblJlY292ZXJhYmxlRXJyb3IiLCJzdGFydFRyYW5zaXRpb24iLCJSb290IiwiY2FsbGJhY2tzIiwidXNlRWZmZWN0IiwiX19ORVhUX1RFU1RfTU9ERSIsIl9fTkVYVF9IWURSQVRFRCIsIl9fTkVYVF9IWURSQVRFRF9DQiIsImNhbmNlbGVkIiwicmVzb2x2ZVByb21pc2UiLCJyZW5kZXJQcm9taXNlIiwicmVqZWN0IiwiRXJyb3IiLCJvblN0YXJ0IiwiY3VycmVudFN0eWxlVGFncyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJjdXJyZW50SHJlZnMiLCJTZXQiLCJ0YWciLCJnZXRBdHRyaWJ1dGUiLCJub3NjcmlwdCIsInF1ZXJ5U2VsZWN0b3IiLCJub25jZSIsImhyZWYiLCJ0ZXh0IiwiaGFzIiwic3R5bGVUYWciLCJzZXRBdHRyaWJ1dGUiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJjcmVhdGVUZXh0Tm9kZSIsIm9uSGVhZENvbW1pdCIsImRlc2lyZWRIcmVmcyIsInMiLCJpZHgiLCJyZW1vdmVBdHRyaWJ1dGUiLCJyZWZlcmVuY2VOb2RlIiwidGFyZ2V0VGFnIiwicGFyZW50Tm9kZSIsImluc2VydEJlZm9yZSIsIm5leHRTaWJsaW5nIiwicmVtb3ZlQ2hpbGQiLCJzY3JvbGwiLCJ4IiwieSIsImhhbmRsZVNtb290aFNjcm9sbCIsInNjcm9sbFRvIiwib25Sb290Q29tbWl0IiwiZWxlbSIsIkZyYWdtZW50IiwiUG9ydGFsIiwidHlwZSIsIlJvdXRlQW5ub3VuY2VyIiwiX19ORVhUX1NUUklDVF9NT0RFIiwiU3RyaWN0TW9kZSIsInJlbmRlcmluZ1Byb3BzIiwiX3JlbmRlciIsInJlbmRlckVyciIsImdldFByb3BlckVycm9yIiwiX2h5ZHJhdGUiLCJpbml0aWFsRXJyIiwiYXBwRW50cnlwb2ludCIsIndoZW5FbnRyeXBvaW50IiwiY29tcG9uZW50IiwiYXBwIiwibW9kIiwicmVwb3J0V2ViVml0YWxzIiwiaWQiLCJzdGFydFRpbWUiLCJkdXJhdGlvbiIsImVudHJ5VHlwZSIsImVudHJpZXMiLCJhdHRyaWJ1dGlvbiIsInVuaXF1ZUlEIiwiTWF0aCIsIkRhdGUiLCJub3ciLCJmbG9vciIsInJhbmRvbSIsInBlcmZTdGFydEVudHJ5Iiwid2ViVml0YWxzIiwibGFiZWwiLCJwYWdlRW50cnlwb2ludCIsImlzVmFsaWRFbGVtZW50VHlwZSIsImVycm9yMSIsImdldFNlcnZlckVycm9yIiwibWVzc2FnZSIsImUiLCJzdGFjayIsInNvdXJjZSIsIl9fTkVYVF9QUkVMT0FEUkVBRFkiLCJkeW5hbWljSWRzIiwiY3JlYXRlUm91dGVyIiwiaW5pdGlhbFByb3BzIiwiQm9vbGVhbiIsInN1YnNjcmlwdGlvbiIsImRvbWFpbkxvY2FsZXMiLCJpc1ByZXZpZXciLCJfaW5pdGlhbE1hdGNoZXNNaWRkbGV3YXJlUHJvbWlzZSIsInJlbmRlckN0eCIsImluaXRpYWwiLCJiZWZvcmVSZW5kZXIiLCJfX2VzTW9kdWxlIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/client/index.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/next-dev.js": /*!*******************************************************!*\ !*** ../../node_modules/next/dist/client/next-dev.js ***! \*******************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nvar _interop_require_default = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _ = __webpack_require__(/*! ./ */ \"../../node_modules/next/dist/client/index.js\");\nvar _onDemandEntriesClient = _interop_require_default(__webpack_require__(/*! ./dev/on-demand-entries-client */ \"../../node_modules/next/dist/client/dev/on-demand-entries-client.js\"));\nvar _webpackHotMiddlewareClient = _interop_require_default(__webpack_require__(/*! ./dev/webpack-hot-middleware-client */ \"../../node_modules/next/dist/client/dev/webpack-hot-middleware-client.js\"));\nvar _devBuildWatcher = _interop_require_default(__webpack_require__(/*! ./dev/dev-build-watcher */ \"../../node_modules/next/dist/client/dev/dev-build-watcher.js\"));\nvar _fouc = __webpack_require__(/*! ./dev/fouc */ \"../../node_modules/next/dist/client/dev/fouc.js\");\nvar _websocket = __webpack_require__(/*! ./dev/error-overlay/websocket */ \"../../node_modules/next/dist/client/dev/error-overlay/websocket.js\");\nvar _querystring = __webpack_require__(/*! ../shared/lib/router/utils/querystring */ \"../../node_modules/next/dist/shared/lib/router/utils/querystring.js\");\nif (!window._nextSetupHydrationWarning) {\n const origConsoleError = window.console.error;\n window.console.error = function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n const isHydrateError = args.some((arg)=>typeof arg === \"string\" && arg.match(/(hydration|content does not match|did not match)/i));\n if (isHydrateError) {\n args = [\n ...args,\n \"\\n\\nSee more info here: https://nextjs.org/docs/messages/react-hydration-error\"\n ];\n }\n origConsoleError.apply(window.console, args);\n };\n window._nextSetupHydrationWarning = true;\n}\nwindow.next = {\n version: _.version,\n // router is initialized later so it has to be live-binded\n get router () {\n return _.router;\n },\n emitter: _.emitter\n};\nconst webpackHMR = (0, _webpackHotMiddlewareClient).default();\n(0, _).initialize({\n webpackHMR\n}).then((param)=>{\n let { assetPrefix } = param;\n (0, _websocket).connectHMR({\n assetPrefix,\n path: \"/_next/webpack-hmr\"\n });\n return (0, _).hydrate({\n beforeRender: _fouc.displayContent\n }).then(()=>{\n (0, _onDemandEntriesClient).default();\n let buildIndicatorHandler = ()=>{};\n function devPagesManifestListener(event) {\n if (event.data.indexOf(\"devPagesManifest\") !== -1) {\n fetch(\"\".concat(assetPrefix, \"/_next/static/development/_devPagesManifest.json\")).then((res)=>res.json()).then((manifest)=>{\n window.__DEV_PAGES_MANIFEST = manifest;\n }).catch((err)=>{\n console.log(\"Failed to fetch devPagesManifest\", err);\n });\n } else if (event.data.indexOf(\"middlewareChanges\") !== -1) {\n return window.location.reload();\n } else if (event.data.indexOf(\"serverOnlyChanges\") !== -1) {\n const { pages } = JSON.parse(event.data);\n // Make sure to reload when the dev-overlay is showing for an\n // API route\n if (pages.includes(_.router.query.__NEXT_PAGE)) {\n return window.location.reload();\n }\n if (!_.router.clc && pages.includes(_.router.pathname)) {\n console.log(\"Refreshing page data due to server-side change\");\n buildIndicatorHandler(\"building\");\n const clearIndicator = ()=>buildIndicatorHandler(\"built\");\n _.router.replace(_.router.pathname + \"?\" + String((0, _querystring).assign((0, _querystring).urlQueryToSearchParams(_.router.query), new URLSearchParams(location.search))), _.router.asPath, {\n scroll: false\n }).catch(()=>{\n // trigger hard reload when failing to refresh data\n // to show error overlay properly\n location.reload();\n }).finally(clearIndicator);\n }\n }\n }\n (0, _websocket).addMessageListener(devPagesManifestListener);\n if (true) {\n (0, _devBuildWatcher).default((handler)=>{\n buildIndicatorHandler = handler;\n }, \"bottom-right\");\n }\n });\n}).catch((err)=>{\n console.error(\"Error was not caught\", err);\n});\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=next-dev.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvbmV4dC1kZXYuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYixJQUFJQSwyQkFBMkJDLHVKQUErRDtBQUM5RixJQUFJRSxJQUFJRixtQkFBT0EsQ0FBQyx3REFBSTtBQUNwQixJQUFJRyx5QkFBeUJKLHlCQUF5QkMsbUJBQU9BLENBQUMsMkdBQWdDO0FBQzlGLElBQUlJLDhCQUE4QkwseUJBQXlCQyxtQkFBT0EsQ0FBQyxxSEFBcUM7QUFDeEcsSUFBSUssbUJBQW1CTix5QkFBeUJDLG1CQUFPQSxDQUFDLDZGQUF5QjtBQUNqRixJQUFJTSxRQUFRTixtQkFBT0EsQ0FBQyxtRUFBWTtBQUNoQyxJQUFJTyxhQUFhUCxtQkFBT0EsQ0FBQyx5R0FBK0I7QUFDeEQsSUFBSVEsZUFBZVIsbUJBQU9BLENBQUMsbUhBQXdDO0FBQ25FLElBQUksQ0FBQ1MsT0FBT0MsMEJBQTBCLEVBQUU7SUFDcEMsTUFBTUMsbUJBQW1CRixPQUFPRyxPQUFPLENBQUNDLEtBQUs7SUFDN0NKLE9BQU9HLE9BQU8sQ0FBQ0MsS0FBSyxHQUFHLFdBQVc7eUNBQVBDO1lBQUFBOztRQUN2QixNQUFNQyxpQkFBaUJELEtBQUtFLElBQUksQ0FBQyxDQUFDQyxNQUFNLE9BQU9BLFFBQVEsWUFBWUEsSUFBSUMsS0FBSyxDQUFDO1FBQzdFLElBQUlILGdCQUFnQjtZQUNoQkQsT0FBTzttQkFDQUE7Z0JBQ0Y7YUFDSjtRQUNMLENBQUM7UUFDREgsaUJBQWlCUSxLQUFLLENBQUNWLE9BQU9HLE9BQU8sRUFBRUU7SUFDM0M7SUFDQUwsT0FBT0MsMEJBQTBCLEdBQUcsSUFBSTtBQUM1QyxDQUFDO0FBQ0RELE9BQU9XLElBQUksR0FBRztJQUNWQyxTQUFTbkIsRUFBRW1CLE9BQU87SUFDbEIsMERBQTBEO0lBQzFELElBQUlDLFVBQVU7UUFDVixPQUFPcEIsRUFBRW9CLE1BQU07SUFDbkI7SUFDQUMsU0FBU3JCLEVBQUVxQixPQUFPO0FBQ3RCO0FB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QUFDLE9BQU80QixRQUFRdkUsT0FBTyxLQUFLLGNBQWUsT0FBT3VFLFFBQVF2RSxPQUFPLEtBQUssWUFBWXVFLFFBQVF2RSxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU91RSxRQUFRdkUsT0FBTyxDQUFDd0UsVUFBVSxLQUFLLGFBQWE7SUFDcktDLE9BQU9DLGNBQWMsQ0FBQ0gsUUFBUXZFLE9BQU8sRUFBRSxjQUFjO1FBQUUyRSxPQUFPLElBQUk7SUFBQztJQUNuRUYsT0FBT2YsTUFBTSxDQUFDYSxRQUFRdkUsT0FBTyxFQUFFdUU7SUFDL0JLLE9BQU9MLE9BQU8sR0FBR0EsUUFBUXZFLE9BQU87QUFDbEMsQ0FBQyxDQUVELG9DQUFvQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvbmV4dC1kZXYuanM/MzZkZCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQgPSByZXF1aXJlKFwiQHN3Yy9oZWxwZXJzL2xpYi9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuanNcIikuZGVmYXVsdDtcbnZhciBfID0gcmVxdWlyZShcIi4vXCIpO1xudmFyIF9vbkRlbWFuZEVudHJpZXNDbGllbnQgPSBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQocmVxdWlyZShcIi4vZGV2L29uLWRlbWFuZC1lbnRyaWVzLWNsaWVudFwiKSk7XG52YXIgX3dlYnBhY2tIb3RNaWRkbGV3YXJlQ2xpZW50ID0gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0KHJlcXVpcmUoXCIuL2Rldi93ZWJwYWNrLWhvdC1taWRkbGV3YXJlLWNsaWVudFwiKSk7XG52YXIgX2RldkJ1aWxkV2F0Y2hlciA9IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChyZXF1aXJlKFwiLi9kZXYvZGV2LWJ1aWxkLXdhdGNoZXJcIikpO1xudmFyIF9mb3VjID0gcmVxdWlyZShcIi4vZGV2L2ZvdWNcIik7XG52YXIgX3dlYnNvY2tldCA9IHJlcXVpcmUoXCIuL2Rldi9lcnJvci1vdmVybGF5L3dlYnNvY2tldFwiKTtcbnZhciBfcXVlcnlzdHJpbmcgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcXVlcnlzdHJpbmdcIik7XG5pZiAoIXdpbmRvdy5fbmV4dFNldHVwSHlkcmF0aW9uV2FybmluZykge1xuICAgIGNvbnN0IG9yaWdDb25zb2xlRXJyb3IgPSB3aW5kb3cuY29uc29sZS5lcnJvcjtcbiAgICB3aW5kb3cuY29uc29sZS5lcnJvciA9ICguLi5hcmdzKT0+e1xuICAgICAgICBjb25zdCBpc0h5ZHJhdGVFcnJvciA9IGFyZ3Muc29tZSgoYXJnKT0+dHlwZW9mIGFyZyA9PT0gJ3N0cmluZycgJiYgYXJnLm1hdGNoKC8oaHlkcmF0aW9ufGNvbnRlbnQgZG9lcyBub3QgbWF0Y2h8ZGlkIG5vdCBtYXRjaCkvaSkpO1xuICAgICAgICBpZiAoaXNIeWRyYXRlRXJyb3IpIHtcbiAgICAgICAgICAgIGFyZ3MgPSBbXG4gICAgICAgICAgICAgICAgLi4uYXJncyxcbiAgICAgICAgICAgICAgICBgXFxuXFxuU2VlIG1vcmUgaW5mbyBoZXJlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9yZWFjdC1oeWRyYXRpb24tZXJyb3JgLCBcbiAgICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgICAgb3JpZ0NvbnNvbGVFcnJvci5hcHBseSh3aW5kb3cuY29uc29sZSwgYXJncyk7XG4gICAgfTtcbiAgICB3aW5kb3cuX25leHRTZXR1cEh5ZHJhdGlvbldhcm5pbmcgPSB0cnVlO1xufVxud2luZG93Lm5leHQgPSB7XG4gICAgdmVyc2lvbjogXy52ZXJzaW9uLFxuICAgIC8vIHJvdXRlciBpcyBpbml0aWFsaXplZCBsYXRlciBzbyBpdCBoYXMgdG8gYmUgbGl2ZS1iaW5kZWRcbiAgICBnZXQgcm91dGVyICgpIHtcbiAgICAgICAgcmV0dXJuIF8ucm91dGVyO1xuICAgIH0sXG4gICAgZW1pdHRlcjogXy5lbWl0dGVyXG59O1xuY29uc3Qgd2VicGFja0hNUiA9ICgwLCBfd2VicGFja0hvdE1pZGRsZXdhcmVDbGllbnQpLmRlZmF1bHQoKTtcbigwLCBfKS5pbml0aWFsaXplKHtcbiAgICB3ZWJwYWNrSE1SXG59KS50aGVuKCh7IGFzc2V0UHJlZml4ICB9KT0+e1xuICAgICgwLCBfd2Vic29ja2V0KS5jb25uZWN0SE1SKHtcbiAgICAgICAgYXNzZXRQcmVmaXgsXG4gICAgICAgIHBhdGg6ICcvX25leHQvd2VicGFjay1obXInXG4gICAgfSk7XG4gICAgcmV0dXJuICgwLCBfKS5oeWRyYXRlKHtcbiAgICAgICAgYmVmb3JlUmVuZGVyOiBfZm91Yy5kaXNwbGF5Q29udGVudFxuICAgIH0pLnRoZW4oKCk9PntcbiAgICAgICAgKDAsIF9vbkRlbWFuZEVudHJpZXNDbGllbnQpLmRlZmF1bHQoKTtcbiAgICAgICAgbGV0IGJ1aWxkSW5kaWNhdG9ySGFuZGxlciA9ICgpPT57fTtcbiAgICAgICAgZnVuY3Rpb24gZGV2UGFnZXNNYW5pZmVzdExpc3RlbmVyKGV2ZW50KSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5pbmRleE9mKCdkZXZQYWdlc01hbmlmZXN0JykgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgZmV0Y2goYCR7YXNzZXRQcmVmaXh9L19uZXh0L3N0YXRpYy9kZXZlbG9wbWVudC9fZGV2UGFnZXNNYW5pZmVzdC5qc29uYCkudGhlbigocmVzKT0+cmVzLmpzb24oKSkudGhlbigobWFuaWZlc3QpPT57XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fX0RFVl9QQUdFU19NQU5JRkVTVCA9IG1hbmlmZXN0O1xuICAgICAgICAgICAgICAgIH0pLmNhdGNoKChlcnIpPT57XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGYWlsZWQgdG8gZmV0Y2ggZGV2UGFnZXNNYW5pZmVzdGAsIGVycik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZignbWlkZGxld2FyZUNoYW5nZXMnKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5kYXRhLmluZGV4T2YoJ3NlcnZlck9ubHlDaGFuZ2VzJykgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBwYWdlcyAgfSA9IEpTT04ucGFyc2UoZXZlbnQuZGF0YSk7XG4gICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRvIHJlbG9hZCB3aGVuIHRoZSBkZXYtb3ZlcmxheSBpcyBzaG93aW5nIGZvciBhblxuICAgICAgICAgICAgICAgIC8vIEFQSSByb3V0ZVxuICAgICAgICAgICAgICAgIGlmIChwYWdlcy5pbmNsdWRlcyhfLnJvdXRlci5xdWVyeS5fX05FWFRfUEFHRSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFfLnJvdXRlci5jbGMgJiYgcGFnZXMuaW5jbHVkZXMoXy5yb3V0ZXIucGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdSZWZyZXNoaW5nIHBhZ2UgZGF0YSBkdWUgdG8gc2VydmVyLXNpZGUgY2hhbmdlJyk7XG4gICAgICAgICAgICAgICAgICAgIGJ1aWxkSW5kaWNhdG9ySGFuZGxlcignYnVpbGRpbmcnKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xlYXJJbmRpY2F0b3IgPSAoKT0+YnVpbGRJbmRpY2F0b3JIYW5kbGVyKCdidWlsdCcpO1xuICAgICAgICAgICAgICAgICAgICBfLnJvdXRlci5yZXBsYWNlKF8ucm91dGVyLnBhdGhuYW1lICsgJz8nICsgU3RyaW5nKCgwLCBfcXVlcnlzdHJpbmcpLmFzc2lnbigoMCwgX3F1ZXJ5c3RyaW5nKS51cmxRdWVyeVRvU2VhcmNoUGFyYW1zKF8ucm91dGVyLnF1ZXJ5KSwgbmV3IFVSTFNlYXJjaFBhcmFtcyhsb2NhdGlvbi5zZWFyY2gpKSksIF8ucm91dGVyLmFzUGF0aCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaCgoKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpZ2dlciBoYXJkIHJlbG9hZCB3aGVuIGZhaWxpbmcgdG8gcmVmcmVzaCBkYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBzaG93IGVycm9yIG92ZXJsYXkgcHJvcGVybHlcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgICAgICB9KS5maW5hbGx5KGNsZWFySW5kaWNhdG9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgKDAsIF93ZWJzb2NrZXQpLmFkZE1lc3NhZ2VMaXN0ZW5lcihkZXZQYWdlc01hbmlmZXN0TGlzdGVuZXIpO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0JVSUxEX0lORElDQVRPUikge1xuICAgICAgICAgICAgKDAsIF9kZXZCdWlsZFdhdGNoZXIpLmRlZmF1bHQoKGhhbmRsZXIpPT57XG4gICAgICAgICAgICAgICAgYnVpbGRJbmRpY2F0b3JIYW5kbGVyID0gaGFuZGxlcjtcbiAgICAgICAgICAgIH0sIHByb2Nlc3MuZW52Ll9fTkVYVF9CVUlMRF9JTkRJQ0FUT1JfUE9TSVRJT04pO1xuICAgICAgICB9XG4gICAgfSk7XG59KS5jYXRjaCgoZXJyKT0+e1xuICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHdhcyBub3QgY2F1Z2h0JywgZXJyKTtcbn0pO1xuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1uZXh0LWRldi5qcy5tYXAiXSwibmFtZXMiOlsiX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0IiwicmVxdWlyZSIsImRlZmF1bHQiLCJfIiwiX29uRGVtYW5kRW50cmllc0NsaWVudCIsIl93ZWJwYWNrSG90TWlkZGxld2FyZUNsaWVudCIsIl9kZXZCdWlsZFdhdGNoZXIiLCJfZm91YyIsIl93ZWJzb2NrZXQiLCJfcXVlcnlzdHJpbmciLCJ3aW5kb3ciLCJfbmV4dFNldHVwSHlkcmF0aW9uV2FybmluZyIsIm9yaWdDb25zb2xlRXJyb3IiLCJjb25zb2xlIiwiZXJyb3IiLCJhcmdzIiwiaXNIeWRyYXRlRXJyb3IiLCJzb21lIiwiYXJnIiwibWF0Y2giLCJhcHBseSIsIm5leHQiLCJ2ZXJzaW9uIiwicm91dGVyIiwiZW1pdHRlciIsIndlYnBhY2tITVIiLCJpbml0aWFsaXplIiwidGhlbiIsImFzc2V0UHJlZml4IiwiY29ubmVjdEhNUiIsInBhdGgiLCJoeWRyYXRlIiwiYmVmb3JlUmVuZGVyIiwiZGlzcGxheUNvbnRlbnQiLCJidWlsZEluZGljYXRvckhhbmRsZXIiLCJkZXZQYWdlc01hbmlmZXN0TGlzdGVuZXIiLCJldmVudCIsImRhdGEiLCJpbmRleE9mIiwiZmV0Y2giLCJyZXMiLCJqc29uIiwibWFuaWZlc3QiLCJfX0RFVl9QQUdFU19NQU5JRkVTVCIsImNhdGNoIiwiZXJyIiwibG9nIiwibG9jYXRpb24iLCJyZWxvYWQiLCJwYWdlcyIsIkpTT04iLCJwYXJzZSIsImluY2x1ZGVzIiwicXVlcnkiLCJfX05FWFRfUEFHRSIsImNsYyIsInBhdGhuYW1lIiwiY2xlYXJJbmRpY2F0b3IiLCJyZXBsYWNlIiwiU3RyaW5nIiwiYXNzaWduIiwidXJsUXVlcnlUb1NlYXJjaFBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsInNlYXJjaCIsImFzUGF0aCIsInNjcm9sbCIsImZpbmFsbHkiLCJhZGRNZXNzYWdlTGlzdGVuZXIiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX0JVSUxEX0lORElDQVRPUiIsImhhbmRsZXIiLCJfX05FWFRfQlVJTERfSU5ESUNBVE9SX1BPU0lUSU9OIiwiZXhwb3J0cyIsIl9fZXNNb2R1bGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/client/next-dev.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/normalize-trailing-slash.js": /*!***********************************************************************!*\ !*** ../../node_modules/next/dist/client/normalize-trailing-slash.js ***! \***********************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.normalizePathTrailingSlash = void 0;\nvar _removeTrailingSlash = __webpack_require__(/*! ../shared/lib/router/utils/remove-trailing-slash */ \"../../node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js\");\nvar _parsePath = __webpack_require__(/*! ../shared/lib/router/utils/parse-path */ \"../../node_modules/next/dist/shared/lib/router/utils/parse-path.js\");\nconst normalizePathTrailingSlash = (path)=>{\n if (!path.startsWith(\"/\") || undefined) {\n return path;\n }\n const { pathname , query , hash } = (0, _parsePath).parsePath(path);\n if (false) {}\n return \"\".concat((0, _removeTrailingSlash).removeTrailingSlash(pathname)).concat(query).concat(hash);\n};\nexports.normalizePathTrailingSlash = normalizePathTrailingSlash;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=normalize-trailing-slash.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvbm9ybWFsaXplLXRyYWlsaW5nLXNsYXNoLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTyxJQUFJO0FBQ2YsQ0FBQyxFQUFDO0FBQ0ZELGtDQUFrQyxHQUFHLEtBQUs7QUFDMUMsSUFBSUcsdUJBQXVCQyxtQkFBT0EsQ0FBQyx1SUFBa0Q7QUFDckYsSUFBSUMsYUFBYUQsbUJBQU9BLENBQUMsaUhBQXVDO0FBQ2hFLE1BQU1GLDZCQUE2QixDQUFDSSxPQUFPO0lBQ3ZDLElBQUksQ0FBQ0EsS0FBS0MsVUFBVSxDQUFDLFFBQVFDLFNBQXdDLEVBQUU7UUFDbkUsT0FBT0Y7SUFDWCxDQUFDO0lBQ0QsTUFBTSxFQUFFSyxTQUFRLEVBQUdDLE1BQUssRUFBR0MsS0FBSSxFQUFHLEdBQUcsQ0FBQyxHQUFHUixVQUFVLEVBQUVTLFNBQVMsQ0FBQ1I7SUFDL0QsSUFBSUUsS0FBaUMsRUFBRSxFQVF0QztJQUNELE9BQU8sR0FBNkRJLE9BQTFELENBQUMsR0FBR1Qsb0JBQW9CLEVBQUVjLG1CQUFtQixDQUFDTixXQUFvQkUsT0FBUkQsT0FBYSxPQUFMQztBQUNoRjtBQUNBYixrQ0FBa0MsR0FBR0U7QUFFckMsSUFBSSxDQUFDLE9BQU9GLFFBQVFtQixPQUFPLEtBQUssY0FBZSxPQUFPbkIsUUFBUW1CLE9BQU8sS0FBSyxZQUFZbkIsUUFBUW1CLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT25CLFFBQVFtQixPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLdEIsT0FBT0MsY0FBYyxDQUFDQyxRQUFRbUIsT0FBTyxFQUFFLGNBQWM7UUFBRWxCLE9BQU8sSUFBSTtJQUFDO0lBQ25FSCxPQUFPdUIsTUFBTSxDQUFDckIsUUFBUW1CLE9BQU8sRUFBRW5CO0lBQy9Cc0IsT0FBT3RCLE9BQU8sR0FBR0EsUUFBUW1CLE9BQU87QUFDbEMsQ0FBQyxDQUVELG9EQUFvRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvbm9ybWFsaXplLXRyYWlsaW5nLXNsYXNoLmpzP2VkMDUiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLm5vcm1hbGl6ZVBhdGhUcmFpbGluZ1NsYXNoID0gdm9pZCAwO1xudmFyIF9yZW1vdmVUcmFpbGluZ1NsYXNoID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3JlbW92ZS10cmFpbGluZy1zbGFzaFwiKTtcbnZhciBfcGFyc2VQYXRoID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhcnNlLXBhdGhcIik7XG5jb25zdCBub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaCA9IChwYXRoKT0+e1xuICAgIGlmICghcGF0aC5zdGFydHNXaXRoKCcvJykgfHwgcHJvY2Vzcy5lbnYuX19ORVhUX01BTlVBTF9UUkFJTElOR19TTEFTSCkge1xuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICB9XG4gICAgY29uc3QgeyBwYXRobmFtZSAsIHF1ZXJ5ICwgaGFzaCAgfSA9ICgwLCBfcGFyc2VQYXRoKS5wYXJzZVBhdGgocGF0aCk7XG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9UUkFJTElOR19TTEFTSCkge1xuICAgICAgICBpZiAoL1xcLlteL10rXFwvPyQvLnRlc3QocGF0aG5hbWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7KDAsIF9yZW1vdmVUcmFpbGluZ1NsYXNoKS5yZW1vdmVUcmFpbGluZ1NsYXNoKHBhdGhuYW1lKX0ke3F1ZXJ5fSR7aGFzaH1gO1xuICAgICAgICB9IGVsc2UgaWYgKHBhdGhuYW1lLmVuZHNXaXRoKCcvJykpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtwYXRobmFtZX0ke3F1ZXJ5fSR7aGFzaH1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGAke3BhdGhuYW1lfS8ke3F1ZXJ5fSR7aGFzaH1gO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBgJHsoMCwgX3JlbW92ZVRyYWlsaW5nU2xhc2gpLnJlbW92ZVRyYWlsaW5nU2xhc2gocGF0aG5hbWUpfSR7cXVlcnl9JHtoYXNofWA7XG59O1xuZXhwb3J0cy5ub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaCA9IG5vcm1hbGl6ZVBhdGhUcmFpbGluZ1NsYXNoO1xuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1ub3JtYWxpemUtdHJhaWxpbmctc2xhc2guanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwibm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2giLCJfcmVtb3ZlVHJhaWxpbmdTbGFzaCIsInJlcXVpcmUiLCJfcGFyc2VQYXRoIiwicGF0aCIsInN0YXJ0c1dpdGgiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX01BTlVBTF9UUkFJTElOR19TTEFTSCIsInBhdGhuYW1lIiwicXVlcnkiLCJoYXNoIiwicGFyc2VQYXRoIiwiX19ORVhUX1RSQUlMSU5HX1NMQVNIIiwidGVzdCIsInJlbW92ZVRyYWlsaW5nU2xhc2giLCJlbmRzV2l0aCIsImRlZmF1bHQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/client/normalize-trailing-slash.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/on-recoverable-error.js": /*!*******************************************************************!*\ !*** ../../node_modules/next/dist/client/on-recoverable-error.js ***! \*******************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = onRecoverableError;\nvar _noSsrError = __webpack_require__(/*! ../shared/lib/lazy-dynamic/no-ssr-error */ \"../../node_modules/next/dist/shared/lib/lazy-dynamic/no-ssr-error.js\");\nfunction onRecoverableError(err, errorInfo) {\n const digest = err.digest || errorInfo.digest;\n // Using default react onRecoverableError\n // x-ref: https://github.com/facebook/react/blob/d4bc16a7d69eb2ea38a88c8ac0b461d5f72cdcab/packages/react-dom/src/client/ReactDOMRoot.js#L83\n const defaultOnRecoverableError = typeof reportError === \"function\" ? reportError : (error)=>{\n window.console.error(error);\n };\n // Skip certain custom errors which are not expected to be reported on client\n if (digest === _noSsrError.NEXT_DYNAMIC_NO_SSR_CODE) return;\n defaultOnRecoverableError(err);\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=on-recoverable-error.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvb24tcmVjb3ZlcmFibGUtZXJyb3IuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPLElBQUk7QUFDZixDQUFDLEVBQUM7QUFDRkQsa0JBQWUsR0FBR0c7QUFDbEIsSUFBSUMsY0FBY0MsbUJBQU9BLENBQUMscUhBQXlDO0FBQ25FLFNBQVNGLG1CQUFtQkcsR0FBRyxFQUFFQyxTQUFTLEVBQUU7SUFDeEMsTUFBTUMsU0FBU0YsSUFBSUUsTUFBTSxJQUFJRCxVQUFVQyxNQUFNO0lBQzdDLHlDQUF5QztJQUN6QywySUFBMkk7SUFDM0ksTUFBTUMsNEJBQTRCLE9BQU9DLGdCQUFnQixhQUN6REEsY0FBYyxDQUFDQyxRQUFRO1FBQ25CQyxPQUFPQyxPQUFPLENBQUNGLEtBQUssQ0FBQ0E7SUFDekIsQ0FBQztJQUNELDZFQUE2RTtJQUM3RSxJQUFJSCxXQUFXSixZQUFZVSx3QkFBd0IsRUFBRTtJQUNyREwsMEJBQTBCSDtBQUM5QjtBQUVBLElBQUksQ0FBQyxPQUFPTixRQUFRRSxPQUFPLEtBQUssY0FBZSxPQUFPRixRQUFRRSxPQUFPLEtBQUssWUFBWUYsUUFBUUUsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPRixRQUFRRSxPQUFPLENBQUNhLFVBQVUsS0FBSyxhQUFhO0lBQ3JLakIsT0FBT0MsY0FBYyxDQUFDQyxRQUFRRSxPQUFPLEVBQUUsY0FBYztRQUFFRCxPQUFPLElBQUk7SUFBQztJQUNuRUgsT0FBT2tCLE1BQU0sQ0FBQ2hCLFFBQVFFLE9BQU8sRUFBRUY7SUFDL0JpQixPQUFPakIsT0FBTyxHQUFHQSxRQUFRRSxPQUFPO0FBQ2xDLENBQUMsQ0FFRCxnREFBZ0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L29uLXJlY292ZXJhYmxlLWVycm9yLmpzPzJjYmQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBvblJlY292ZXJhYmxlRXJyb3I7XG52YXIgX25vU3NyRXJyb3IgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9sYXp5LWR5bmFtaWMvbm8tc3NyLWVycm9yXCIpO1xuZnVuY3Rpb24gb25SZWNvdmVyYWJsZUVycm9yKGVyciwgZXJyb3JJbmZvKSB7XG4gICAgY29uc3QgZGlnZXN0ID0gZXJyLmRpZ2VzdCB8fCBlcnJvckluZm8uZGlnZXN0O1xuICAgIC8vIFVzaW5nIGRlZmF1bHQgcmVhY3Qgb25SZWNvdmVyYWJsZUVycm9yXG4gICAgLy8geC1yZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9ibG9iL2Q0YmMxNmE3ZDY5ZWIyZWEzOGE4OGM4YWMwYjQ2MWQ1ZjcyY2RjYWIvcGFja2FnZXMvcmVhY3QtZG9tL3NyYy9jbGllbnQvUmVhY3RET01Sb290LmpzI0w4M1xuICAgIGNvbnN0IGRlZmF1bHRPblJlY292ZXJhYmxlRXJyb3IgPSB0eXBlb2YgcmVwb3J0RXJyb3IgPT09ICdmdW5jdGlvbicgPyAvLyBlbXVsYXRpbmcgYW4gdW5jYXVnaHQgSmF2YVNjcmlwdCBlcnJvci5cbiAgICByZXBvcnRFcnJvciA6IChlcnJvcik9PntcbiAgICAgICAgd2luZG93LmNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH07XG4gICAgLy8gU2tpcCBjZXJ0YWluIGN1c3RvbSBlcnJvcnMgd2hpY2ggYXJlIG5vdCBleHBlY3RlZCB0byBiZSByZXBvcnRlZCBvbiBjbGllbnRcbiAgICBpZiAoZGlnZXN0ID09PSBfbm9Tc3JFcnJvci5ORVhUX0RZTkFNSUNfTk9fU1NSX0NPREUpIHJldHVybjtcbiAgICBkZWZhdWx0T25SZWNvdmVyYWJsZUVycm9yKGVycik7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW9uLXJlY292ZXJhYmxlLWVycm9yLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImRlZmF1bHQiLCJvblJlY292ZXJhYmxlRXJyb3IiLCJfbm9Tc3JFcnJvciIsInJlcXVpcmUiLCJlcnIiLCJlcnJvckluZm8iLCJkaWdlc3QiLCJkZWZhdWx0T25SZWNvdmVyYWJsZUVycm9yIiwicmVwb3J0RXJyb3IiLCJlcnJvciIsIndpbmRvdyIsImNvbnNvbGUiLCJORVhUX0RZTkFNSUNfTk9fU1NSX0NPREUiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/client/on-recoverable-error.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/page-loader.js": /*!**********************************************************!*\ !*** ../../node_modules/next/dist/client/page-loader.js ***! \**********************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\nvar _interop_require_default = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _addBasePath = __webpack_require__(/*! ./add-base-path */ \"../../node_modules/next/dist/client/add-base-path.js\");\nvar _interpolateAs = __webpack_require__(/*! ../shared/lib/router/utils/interpolate-as */ \"../../node_modules/next/dist/shared/lib/router/utils/interpolate-as.js\");\nvar _getAssetPathFromRoute = _interop_require_default(__webpack_require__(/*! ../shared/lib/router/utils/get-asset-path-from-route */ \"../../node_modules/next/dist/shared/lib/router/utils/get-asset-path-from-route.js\"));\nvar _addLocale = __webpack_require__(/*! ./add-locale */ \"../../node_modules/next/dist/client/add-locale.js\");\nvar _isDynamic = __webpack_require__(/*! ../shared/lib/router/utils/is-dynamic */ \"../../node_modules/next/dist/shared/lib/router/utils/is-dynamic.js\");\nvar _parseRelativeUrl = __webpack_require__(/*! ../shared/lib/router/utils/parse-relative-url */ \"../../node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js\");\nvar _removeTrailingSlash = __webpack_require__(/*! ../shared/lib/router/utils/remove-trailing-slash */ \"../../node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js\");\nvar _routeLoader = __webpack_require__(/*! ./route-loader */ \"../../node_modules/next/dist/client/route-loader.js\");\nclass PageLoader {\n getPageList() {\n if (false) {} else {\n if (window.__DEV_PAGES_MANIFEST) {\n return window.__DEV_PAGES_MANIFEST.pages;\n } else {\n this.promisedDevPagesManifest || (this.promisedDevPagesManifest = fetch(\"\".concat(this.assetPrefix, \"/_next/static/development/_devPagesManifest.json\")).then((res)=>res.json()).then((manifest)=>{\n window.__DEV_PAGES_MANIFEST = manifest;\n return manifest.pages;\n }).catch((err)=>{\n console.log(\"Failed to fetch devPagesManifest:\", err);\n throw new Error(\"Failed to fetch _devPagesManifest.json. Is something blocking that network request?\\n\" + \"Read more: https://nextjs.org/docs/messages/failed-to-fetch-devpagesmanifest\");\n }));\n return this.promisedDevPagesManifest;\n }\n }\n }\n getMiddleware() {\n if (false) {} else {\n if (window.__DEV_MIDDLEWARE_MATCHERS) {\n return window.__DEV_MIDDLEWARE_MATCHERS;\n } else {\n if (!this.promisedMiddlewareMatchers) {\n // TODO: Decide what should happen when fetching fails instead of asserting\n // @ts-ignore\n this.promisedMiddlewareMatchers = fetch(\"\".concat(this.assetPrefix, \"/_next/static/\").concat(this.buildId, \"/_devMiddlewareManifest.json\")).then((res)=>res.json()).then((matchers)=>{\n window.__DEV_MIDDLEWARE_MATCHERS = matchers;\n return matchers;\n }).catch((err)=>{\n console.log(\"Failed to fetch _devMiddlewareManifest\", err);\n });\n }\n // TODO Remove this assertion as this could be undefined\n return this.promisedMiddlewareMatchers;\n }\n }\n }\n getDataHref(params) {\n const { asPath , href , locale } = params;\n const { pathname: hrefPathname , query , search } = (0, _parseRelativeUrl).parseRelativeUrl(href);\n const { pathname: asPathname } = (0, _parseRelativeUrl).parseRelativeUrl(asPath);\n const route = (0, _removeTrailingSlash).removeTrailingSlash(hrefPathname);\n if (route[0] !== \"/\") {\n throw new Error('Route name should start with a \"/\", got \"'.concat(route, '\"'));\n }\n const getHrefForSlug = (path)=>{\n const dataRoute = (0, _getAssetPathFromRoute).default((0, _removeTrailingSlash).removeTrailingSlash((0, _addLocale).addLocale(path, locale)), \".json\");\n return (0, _addBasePath).addBasePath(\"/_next/data/\".concat(this.buildId).concat(dataRoute).concat(search), true);\n };\n return getHrefForSlug(params.skipInterpolation ? asPathname : (0, _isDynamic).isDynamicRoute(route) ? (0, _interpolateAs).interpolateAs(hrefPathname, asPathname, query).result : route);\n }\n _isSsg(/** the route (file-system path) */ route) {\n return this.promisedSsgManifest.then((manifest)=>manifest.has(route));\n }\n loadPage(route) {\n return this.routeLoader.loadRoute(route).then((res)=>{\n if (\"component\" in res) {\n return {\n page: res.component,\n mod: res.exports,\n styleSheets: res.styles.map((o)=>({\n href: o.href,\n text: o.content\n }))\n };\n }\n throw res.error;\n });\n }\n prefetch(route) {\n return this.routeLoader.prefetch(route);\n }\n constructor(buildId, assetPrefix){\n this.routeLoader = (0, _routeLoader).createRouteLoader(assetPrefix);\n this.buildId = buildId;\n this.assetPrefix = assetPrefix;\n this.promisedSsgManifest = new Promise((resolve)=>{\n if (window.__SSG_MANIFEST) {\n resolve(window.__SSG_MANIFEST);\n } else {\n window.__SSG_MANIFEST_CB = ()=>{\n resolve(window.__SSG_MANIFEST);\n };\n }\n });\n }\n}\nexports[\"default\"] = PageLoader;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=page-loader.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcGFnZS1sb2FkZXIuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPLElBQUk7QUFDZixDQUFDLEVBQUM7QUFDRkQsa0JBQWUsR0FBRyxLQUFLO0FBQ3ZCLElBQUlHLDJCQUEyQkMsdUpBQStEO0FBQzlGLElBQUlDLGVBQWVELG1CQUFPQSxDQUFDLDZFQUFpQjtBQUM1QyxJQUFJRSxpQkFBaUJGLG1CQUFPQSxDQUFDLHlIQUEyQztBQUN4RSxJQUFJRyx5QkFBeUJKLHlCQUF5QkMsbUJBQU9BLENBQUMsK0lBQXNEO0FBQ3BILElBQUlJLGFBQWFKLG1CQUFPQSxDQUFDLHVFQUFjO0FBQ3ZDLElBQUlLLGFBQWFMLG1CQUFPQSxDQUFDLGlIQUF1QztBQUNoRSxJQUFJTSxvQkFBb0JOLG1CQUFPQSxDQUFDLGlJQUErQztBQUMvRSxJQUFJTyx1QkFBdUJQLG1CQUFPQSxDQUFDLHVJQUFrRDtBQUNyRixJQUFJUSxlQUFlUixtQkFBT0EsQ0FBQywyRUFBZ0I7QUFDM0MsTUFBTVM7SUFDRkMsY0FBYztRQUNWLElBQUlDLEtBQXlCLEVBQWMsRUFFMUMsTUFBTTtZQUNILElBQUlLLE9BQU9DLG9CQUFvQixFQUFFO2dCQUM3QixPQUFPRCxPQUFPQyxvQkFBb0IsQ0FBQ0MsS0FBSztZQUM1QyxPQUFPO2dCQUNILElBQUksQ0FBQ0Msd0JBQXdCLElBQUssS0FBSSxDQUFDQSx3QkFBd0IsR0FBR0MsTUFBTSxHQUFvQixPQUFqQixJQUFJLENBQUNDLFdBQVcsRUFBQyxxREFBbURSLElBQUksQ0FBQyxDQUFDUyxNQUFNQSxJQUFJQyxJQUFJLElBQUlWLElBQUksQ0FBQyxDQUFDQyxXQUFXO29CQUNwTEUsT0FBT0Msb0JBQW9CLEdBQUdIO29CQUM5QixPQUFPQSxTQUFTSSxLQUFLO2dCQUN6QixHQUFHTSxLQUFLLENBQUMsQ0FBQ0MsTUFBTTtvQkFDWkMsUUFBUUMsR0FBRyxDQUFFLHFD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UUFBUUUsT0FBTztBQUNsQyxDQUFDLENBRUQsdUNBQXVDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9wYWdlLWxvYWRlci5qcz9mYWU2Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xudmFyIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvbGliL19pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5qc1wiKS5kZWZhdWx0O1xudmFyIF9hZGRCYXNlUGF0aCA9IHJlcXVpcmUoXCIuL2FkZC1iYXNlLXBhdGhcIik7XG52YXIgX2ludGVycG9sYXRlQXMgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaW50ZXJwb2xhdGUtYXNcIik7XG52YXIgX2dldEFzc2V0UGF0aEZyb21Sb3V0ZSA9IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChyZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvZ2V0LWFzc2V0LXBhdGgtZnJvbS1yb3V0ZVwiKSk7XG52YXIgX2FkZExvY2FsZSA9IHJlcXVpcmUoXCIuL2FkZC1sb2NhbGVcIik7XG52YXIgX2lzRHluYW1pYyA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9pcy1keW5hbWljXCIpO1xudmFyIF9wYXJzZVJlbGF0aXZlVXJsID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhcnNlLXJlbGF0aXZlLXVybFwiKTtcbnZhciBfcmVtb3ZlVHJhaWxpbmdTbGFzaCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9yZW1vdmUtdHJhaWxpbmctc2xhc2hcIik7XG52YXIgX3JvdXRlTG9hZGVyID0gcmVxdWlyZShcIi4vcm91dGUtbG9hZGVyXCIpO1xuY2xhc3MgUGFnZUxvYWRlciB7XG4gICAgZ2V0UGFnZUxpc3QoKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIF9yb3V0ZUxvYWRlcikuZ2V0Q2xpZW50QnVpbGRNYW5pZmVzdCgpLnRoZW4oKG1hbmlmZXN0KT0+bWFuaWZlc3Quc29ydGVkUGFnZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHdpbmRvdy5fX0RFVl9QQUdFU19NQU5JRkVTVCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB3aW5kb3cuX19ERVZfUEFHRVNfTUFOSUZFU1QucGFnZXM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvbWlzZWREZXZQYWdlc01hbmlmZXN0IHx8ICh0aGlzLnByb21pc2VkRGV2UGFnZXNNYW5pZmVzdCA9IGZldGNoKGAke3RoaXMuYXNzZXRQcmVmaXh9L19uZXh0L3N0YXRpYy9kZXZlbG9wbWVudC9fZGV2UGFnZXNNYW5pZmVzdC5qc29uYCkudGhlbigocmVzKT0+cmVzLmpzb24oKSkudGhlbigobWFuaWZlc3QpPT57XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fX0RFVl9QQUdFU19NQU5JRkVTVCA9IG1hbmlmZXN0O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFuaWZlc3QucGFnZXM7XG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycik9PntcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYEZhaWxlZCB0byBmZXRjaCBkZXZQYWdlc01hbmlmZXN0OmAsIGVycik7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGZldGNoIF9kZXZQYWdlc01hbmlmZXN0Lmpzb24uIElzIHNvbWV0aGluZyBibG9ja2luZyB0aGF0IG5ldHdvcmsgcmVxdWVzdD9cXG5gICsgJ1JlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZmFpbGVkLXRvLWZldGNoLWRldnBhZ2VzbWFuaWZlc3QnKTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvbWlzZWREZXZQYWdlc01hbmlmZXN0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGdldE1pZGRsZXdhcmUoKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICBjb25zdCBtaWRkbGV3YXJlTWF0Y2hlcnMgPSBwcm9jZXNzLmVudi5fX05FWFRfTUlERExFV0FSRV9NQVRDSEVSUztcbiAgICAgICAgICAgIHdpbmRvdy5fX01JRERMRVdBUkVfTUFUQ0hFUlMgPSBtaWRkbGV3YXJlTWF0Y2hlcnMgPyBtaWRkbGV3YXJlTWF0Y2hlcnMgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICByZXR1cm4gd2luZG93Ll9fTUlERExFV0FSRV9NQVRDSEVSUztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh3aW5kb3cuX19ERVZfTUlERExFV0FSRV9NQVRDSEVSUykge1xuICAgICAgICAgICAgICAgIHJldHVybiB3aW5kb3cuX19ERVZfTUlERExFV0FSRV9NQVRDSEVSUztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnByb21pc2VkTWlkZGxld2FyZU1hdGNoZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IERlY2lkZSB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBmZXRjaGluZyBmYWlscyBpbnN0ZWFkIG9mIGFzc2VydGluZ1xuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvbWlzZWRNaWRkbGV3YXJlTWF0Y2hlcnMgPSBmZXRjaChgJHt0aGlzLmFzc2V0UHJlZml4fS9fbmV4dC9zdGF0aWMvJHt0aGlzLmJ1aWxkSWR9L19kZXZNaWRkbGV3YXJlTWFuaWZlc3QuanNvbmApLnRoZW4oKHJlcyk9PnJlcy5qc29uKCkpLnRoZW4oKG1hdGNoZXJzKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9fREVWX01JRERMRVdBUkVfTUFUQ0hFUlMgPSBtYXRjaGVycztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaGVycztcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycik9PntcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGYWlsZWQgdG8gZmV0Y2ggX2Rldk1pZGRsZXdhcmVNYW5pZmVzdGAsIGVycik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBUT0RPIFJlbW92ZSB0aGlzIGFzc2VydGlvbiBhcyB0aGlzIGNvdWxkIGJlIHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb21pc2VkTWlkZGxld2FyZU1hdGNoZXJzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGdldERhdGFIcmVmKHBhcmFtcykge1xuICAgICAgICBjb25zdCB7IGFzUGF0aCAsIGhyZWYgLCBsb2NhbGUgIH0gPSBwYXJhbXM7XG4gICAgICAgIGNvbnN0IHsgcGF0aG5hbWU6IGhyZWZQYXRobmFtZSAsIHF1ZXJ5ICwgc2VhcmNoICB9ID0gKDAsIF9wYXJzZVJlbGF0aXZlVXJsKS5wYXJzZVJlbGF0aXZlVXJsKGhyZWYpO1xuICAgICAgICBjb25zdCB7IHBhdGhuYW1lOiBhc1BhdGhuYW1lICB9ID0gKDAsIF9wYXJzZVJlbGF0aXZlVXJsKS5wYXJzZVJlbGF0aXZlVXJsKGFzUGF0aCk7XG4gICAgICAgIGNvbnN0IHJvdXRlID0gKDAsIF9yZW1vdmVUcmFpbGluZ1NsYXNoKS5yZW1vdmVUcmFpbGluZ1NsYXNoKGhyZWZQYXRobmFtZSk7XG4gICAgICAgIGlmIChyb3V0ZVswXSAhPT0gJy8nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJvdXRlIG5hbWUgc2hvdWxkIHN0YXJ0IHdpdGggYSBcIi9cIiwgZ290IFwiJHtyb3V0ZX1cImApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGdldEhyZWZGb3JTbHVnID0gKHBhdGgpPT57XG4gICAgICAgICAgICBjb25zdCBkYXRhUm91dGUgPSAoMCwgX2dldEFzc2V0UGF0aEZyb21Sb3V0ZSkuZGVmYXVsdCgoMCwgX3JlbW92ZVRyYWlsaW5nU2xhc2gpLnJlbW92ZVRyYWlsaW5nU2xhc2goKDAsIF9hZGRMb2NhbGUpLmFkZExvY2FsZShwYXRoLCBsb2NhbGUpKSwgJy5qc29uJyk7XG4gICAgICAgICAgICByZXR1cm4gKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgoYC9fbmV4dC9kYXRhLyR7dGhpcy5idWlsZElkfSR7ZGF0YVJvdXRlfSR7c2VhcmNofWAsIHRydWUpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gZ2V0SHJlZkZvclNsdWcocGFyYW1zLnNraXBJbnRlcnBvbGF0aW9uID8gYXNQYXRobmFtZSA6ICgwLCBfaXNEeW5hbWljKS5pc0R5bmFtaWNSb3V0ZShyb3V0ZSkgPyAoMCwgX2ludGVycG9sYXRlQXMpLmludGVycG9sYXRlQXMoaHJlZlBhdGhuYW1lLCBhc1BhdGhuYW1lLCBxdWVyeSkucmVzdWx0IDogcm91dGUpO1xuICAgIH1cbiAgICBfaXNTc2coLyoqIHRoZSByb3V0ZSAoZmlsZS1zeXN0ZW0gcGF0aCkgKi8gcm91dGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvbWlzZWRTc2dNYW5pZmVzdC50aGVuKChtYW5pZmVzdCk9Pm1hbmlmZXN0Lmhhcyhyb3V0ZSkpO1xuICAgIH1cbiAgICBsb2FkUGFnZShyb3V0ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZUxvYWRlci5sb2FkUm91dGUocm91dGUpLnRoZW4oKHJlcyk9PntcbiAgICAgICAgICAgIGlmICgnY29tcG9uZW50JyBpbiByZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBwYWdlOiByZXMuY29tcG9uZW50LFxuICAgICAgICAgICAgICAgICAgICBtb2Q6IHJlcy5leHBvcnRzLFxuICAgICAgICAgICAgICAgICAgICBzdHlsZVNoZWV0czogcmVzLnN0eWxlcy5tYXAoKG8pPT4oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY6IG8uaHJlZixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBvLmNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyByZXMuZXJyb3I7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcmVmZXRjaChyb3V0ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZUxvYWRlci5wcmVmZXRjaChyb3V0ZSk7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKGJ1aWxkSWQsIGFzc2V0UHJlZml4KXtcbiAgICAgICAgdGhpcy5yb3V0ZUxvYWRlciA9ICgwLCBfcm91dGVMb2FkZXIpLmNyZWF0ZVJvdXRlTG9hZGVyKGFzc2V0UHJlZml4KTtcbiAgICAgICAgdGhpcy5idWlsZElkID0gYnVpbGRJZDtcbiAgICAgICAgdGhpcy5hc3NldFByZWZpeCA9IGFzc2V0UHJlZml4O1xuICAgICAgICB0aGlzLnByb21pc2VkU3NnTWFuaWZlc3QgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSk9PntcbiAgICAgICAgICAgIGlmICh3aW5kb3cuX19TU0dfTUFOSUZFU1QpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHdpbmRvdy5fX1NTR19NQU5JRkVTVCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5fX1NTR19NQU5JRkVTVF9DQiA9ICgpPT57XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUod2luZG93Ll9fU1NHX01BTklGRVNUKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG5leHBvcnRzLmRlZmF1bHQgPSBQYWdlTG9hZGVyO1xuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYWdlLWxvYWRlci5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJkZWZhdWx0IiwiX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0IiwicmVxdWlyZSIsIl9hZGRCYXNlUGF0aCIsIl9pbnRlcnBvbGF0ZUFzIiwiX2dldEFzc2V0UGF0aEZyb21Sb3V0ZSIsIl9hZGRMb2NhbGUiLCJfaXNEeW5hbWljIiwiX3BhcnNlUmVsYXRpdmVVcmwiLCJfcmVtb3ZlVHJhaWxpbmdTbGFzaCIsIl9yb3V0ZUxvYWRlciIsIlBhZ2VMb2FkZXIiLCJnZXRQYWdlTGlzdCIsInByb2Nlc3MiLCJnZXRDbGllbnRCdWlsZE1hbmlmZXN0IiwidGhlbiIsIm1hbmlmZXN0Iiwic29ydGVkUGFnZXMiLCJ3aW5kb3ciLCJfX0RFVl9QQUdFU19NQU5JRkVTVCIsInBhZ2VzIiwicHJvbWlzZWREZXZQYWdlc01hbmlmZXN0IiwiZmV0Y2giLCJhc3NldFByZWZpeCIsInJlcyIsImpzb24iLCJjYXRjaCIsImVyciIsImNvbnNvbGUiLCJsb2ciLCJFcnJvciIsImdldE1pZGRsZXdhcmUiLCJtaWRkbGV3YXJlTWF0Y2hlcnMiLCJlbnYiLCJfX05FWFRfTUlERExFV0FSRV9NQVRDSEVSUyIsIl9fTUlERExFV0FSRV9NQVRDSEVSUyIsInVuZGVmaW5lZCIsIl9fREVWX01JRERMRVdBUkVfTUFUQ0hFUlMiLCJwcm9taXNlZE1pZGRsZXdhcmVNYXRjaGVycyIsImJ1aWxkSWQiLCJtYXRjaGVycyIsImdldERhdGFIcmVmIiwicGFyYW1zIiwiYXNQYXRoIiwiaHJlZiIsImxvY2FsZSIsInBhdGhuYW1lIiwiaHJlZlBhdGhuYW1lIiwicXVlcnkiLCJzZWFyY2giLCJwYXJzZVJlbGF0aXZlVXJsIiwiYXNQYXRobmFtZSIsInJvdXRlIiwicmVtb3ZlVHJhaWxpbmdTbGFzaCIsImdldEhyZWZGb3JTbHVnIiwicGF0aCIsImRhdGFSb3V0ZSIsImFkZExvY2FsZSIsImFkZEJhc2VQYXRoIiwic2tpcEludGVycG9sYXRpb24iLCJpc0R5bmFtaWNSb3V0ZSIsImludGVycG9sYXRlQXMiLCJyZXN1bHQiLCJfaXNTc2ciLCJwcm9taXNlZFNzZ01hbmlmZXN0IiwiaGFzIiwibG9hZFBhZ2UiLCJyb3V0ZUxvYWRlciIsImxvYWRSb3V0ZSIsInBhZ2UiLCJjb21wb25lbnQiLCJtb2QiLCJzdHlsZVNoZWV0cyIsInN0eWxlcyIsIm1hcCIsIm8iLCJ0ZXh0IiwiY29udGVudCIsImVycm9yIiwicHJlZmV0Y2giLCJjb25zdHJ1Y3RvciIsImNyZWF0ZVJvdXRlTG9hZGVyIiwiUHJvbWlzZSIsInJlc29sdmUiLCJfX1NTR19NQU5JRkVTVCIsIl9fU1NHX01BTklGRVNUX0NCIiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/client/page-loader.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/performance-relayer.js": /*!******************************************************************!*\ !*** ../../node_modules/next/dist/client/performance-relayer.js ***! \******************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\n// copied to prevent pulling in un-necessary utils\nconst WEB_VITALS = [\n \"CLS\",\n \"FCP\",\n \"FID\",\n \"INP\",\n \"LCP\",\n \"TTFB\"\n];\nconst initialHref = location.href;\nlet isRegistered = false;\nlet userReportHandler;\nfunction onReport(metric) {\n if (userReportHandler) {\n userReportHandler(metric);\n }\n // This code is not shipped, executed, or present in the client-side\n // JavaScript bundle unless explicitly enabled in your application.\n //\n // When this feature is enabled, we'll make it very clear by printing a\n // message during the build (`next build`).\n if (false) { var ref; }\n}\nvar _default = (onPerfEntry)=>{\n // Update function if it changes:\n userReportHandler = onPerfEntry;\n // Only register listeners once:\n if (isRegistered) {\n return;\n }\n isRegistered = true;\n const attributions = undefined;\n for (const webVital of WEB_VITALS){\n try {\n let mod;\n if (false) {}\n if (!mod) {\n mod = __webpack_require__(/*! next/dist/compiled/web-vitals */ \"../../node_modules/next/dist/compiled/web-vitals/web-vitals.js\");\n }\n mod[\"on\".concat(webVital)](onReport);\n } catch (err) {\n // Do nothing if the module fails to load\n console.warn(\"Failed to track \".concat(webVital, \" web-vital\"), err);\n }\n }\n};\nexports[\"default\"] = _default;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=performance-relayer.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcGVyZm9ybWFuY2UtcmVsYXllci5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU8sSUFBSTtBQUNmLENBQUMsRUFBQztBQUNGRCxrQkFBZSxHQUFHLEtBQUs7QUFDdkIsa0RBQWtEO0FBQ2xELE1BQU1HLGFBQWE7SUFDZjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7Q0FDSDtBQUNELE1BQU1DLGNBQWNDLFNBQVNDLElBQUk7QUFDakMsSUFBSUMsZUFBZSxLQUFLO0FBQ3hCLElBQUlDO0FBQ0osU0FBU0MsU0FBU0MsTUFBTSxFQUFFO0lBQ3RCLElBQUlGLG1CQUFtQjtRQUNuQkEsa0JBQWtCRTtJQUN0QixDQUFDO0lBQ0Qsb0VBQW9FO0lBQ3BFLG1FQUFtRTtJQUNuRSxFQUFFO0lBQ0YsdUVBQXVFO0lBQ3ZFLDJDQUEyQztJQUMzQyxJQUFJQyxLQUMyQixFQUFFLFlBbUNoQztBQUNMO0FBQ0EsSUFBSWdDLFdBQVcsQ0FBQ0MsY0FBYztJQUMxQixpQ0FBaUM7SUFDakNwQyxvQkFBb0JvQztJQUNwQixnQ0FBZ0M7SUFDaEMsSUFBSXJDLGNBQWM7UUFDZDtJQUNKLENBQUM7SUFDREEsZUFBZSxJQUFJO0lBQ25CLE1BQU1zQyxlQUFlbEMsU0FBeUM7SUFDOUQsS0FBSyxNQUFNb0MsWUFBWTVDLFdBQVc7UUFDOUIsSUFBSTtZQUNBLElBQUk2QztZQUNKLElBQUlyQyxLQUE2QyxFQUFFLEVBSWxEO1lBQ0QsSUFBSSxDQUFDcUMsS0FBSztnQkFDTkEsTUFBTUcsbUJBQU9BLENBQUM7WUFDbEIsQ0FBQztZQUNESCxHQUFHLENBQUMsS0FBYyxPQUFURCxVQUFXLENBQUN0QztRQUN6QixFQUFFLE9BQU9pQyxLQUFLO1lBQ1YseUNBQXlDO1lBQ3pDRixRQUFRWSxJQUFJLENBQUMsbUJBQTRCLE9BQVRMLFVBQVMsZUFBYUw7UUFDMUQ7SUFDSjtBQUNKO0FBQ0ExQyxrQkFBZSxHQUFHMkM7QUFFbEIsSUFBSSxDQUFDLE9BQU8zQyxRQUFRRSxPQUFPLEtBQUssY0FBZSxPQUFPRixRQUFRRSxPQUFPLEtBQUssWUFBWUYsUUFBUUUsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPRixRQUFRRSxPQUFPLENBQUNtRCxVQUFVLEtBQUssYUFBYTtJQUNyS3ZELE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUUUsT0FBTyxFQUFFLGNBQWM7UUFBRUQsT0FBTyxJQUFJO0lBQUM7SUFDbkVILE9BQU93RCxNQUFNLENBQUN0RCxRQUFRRSxPQUFPLEVBQUVGO0lBQy9CdUQsT0FBT3ZELE9BQU8sR0FBR0EsUUFBUUUsT0FBTztBQUNsQyxDQUFDLENBRUQsK0NBQStDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9wZXJmb3JtYW5jZS1yZWxheWVyLmpzPzIzNGMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG4vLyBjb3BpZWQgdG8gcHJldmVudCBwdWxsaW5nIGluIHVuLW5lY2Vzc2FyeSB1dGlsc1xuY29uc3QgV0VCX1ZJVEFMUyA9IFtcbiAgICAnQ0xTJyxcbiAgICAnRkNQJyxcbiAgICAnRklEJyxcbiAgICAnSU5QJyxcbiAgICAnTENQJyxcbiAgICAnVFRGQidcbl07XG5jb25zdCBpbml0aWFsSHJlZiA9IGxvY2F0aW9uLmhyZWY7XG5sZXQgaXNSZWdpc3RlcmVkID0gZmFsc2U7XG5sZXQgdXNlclJlcG9ydEhhbmRsZXI7XG5mdW5jdGlvbiBvblJlcG9ydChtZXRyaWMpIHtcbiAgICBpZiAodXNlclJlcG9ydEhhbmRsZXIpIHtcbiAgICAgICAgdXNlclJlcG9ydEhhbmRsZXIobWV0cmljKTtcbiAgICB9XG4gICAgLy8gVGhpcyBjb2RlIGlzIG5vdCBzaGlwcGVkLCBleGVjdXRlZCwgb3IgcHJlc2VudCBpbiB0aGUgY2xpZW50LXNpZGVcbiAgICAvLyBKYXZhU2NyaXB0IGJ1bmRsZSB1bmxlc3MgZXhwbGljaXRseSBlbmFibGVkIGluIHlvdXIgYXBwbGljYXRpb24uXG4gICAgLy9cbiAgICAvLyBXaGVuIHRoaXMgZmVhdHVyZSBpcyBlbmFibGVkLCB3ZSdsbCBtYWtlIGl0IHZlcnkgY2xlYXIgYnkgcHJpbnRpbmcgYVxuICAgIC8vIG1lc3NhZ2UgZHVyaW5nIHRoZSBidWlsZCAoYG5leHQgYnVpbGRgKS5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJyAmJiAvLyBUaGlzIGZpZWxkIGlzIGVtcHR5IHVubGVzcyB5b3UgZXhwbGljaXRseSBjb25maWd1cmUgaXQ6XG4gICAgcHJvY2Vzcy5lbnYuX19ORVhUX0FOQUxZVElDU19JRCkge1xuICAgICAgICB2YXIgcmVmO1xuICAgICAgICBjb25zdCBib2R5ID0ge1xuICAgICAgICAgICAgZHNuOiBwcm9jZXNzLmVudi5fX05FWFRfQU5BTFlUSUNTX0lELFxuICAgICAgICAgICAgaWQ6IG1ldHJpYy5pZCxcbiAgICAgICAgICAgIHBhZ2U6IChyZWYgPSB3aW5kb3cuX19ORVhUX0RBVEFfXykgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZi5wYWdlLFxuICAgICAgICAgICAgaHJlZjogaW5pdGlhbEhyZWYsXG4gICAgICAgICAgICBldmVudF9uYW1lOiBtZXRyaWMubmFtZSxcbiAgICAgICAgICAgIHZhbHVlOiBtZXRyaWMudmFsdWUudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHNwZWVkOiAnY29ubmVjdGlvbicgaW4gbmF2aWdhdG9yICYmIG5hdmlnYXRvclsnY29ubmVjdGlvbiddICYmICdlZmZlY3RpdmVUeXBlJyBpbiBuYXZpZ2F0b3JbJ2Nvbm5lY3Rpb24nXSA/IG5hdmlnYXRvclsnY29ubmVjdGlvbiddWydlZmZlY3RpdmVUeXBlJ10gOiAnJ1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW1xuICAgICAgICAgICAgbmV3IFVSTFNlYXJjaFBhcmFtcyhib2R5KS50b1N0cmluZygpXG4gICAgICAgIF0sIHtcbiAgICAgICAgICAgIC8vIFRoaXMgY29udGVudCB0eXBlIGlzIG5lY2Vzc2FyeSBmb3IgYHNlbmRCZWFjb25gOlxuICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHZpdGFsc1VybCA9ICdodHRwczovL3ZpdGFscy52ZXJjZWwtaW5zaWdodHMuY29tL3YxL3ZpdGFscyc7XG4gICAgICAgIC8vIE5hdmlnYXRvciBoYXMgdG8gYmUgYm91bmQgdG8gZW5zdXJlIGl0IGRvZXMgbm90IGVycm9yIGluIHNvbWUgYnJvd3NlcnNcbiAgICAgICAgLy8gaHR0cHM6Ly94Z3dhbmcubWUvcG9zdHMveW91LW1heS1ub3Qta25vdy1iZWFjb24vI2l0LW1heS10aHJvdy1lcnJvciUyQy1iZS1zdXJlLXRvLWNhdGNoXG4gICAgICAgIGNvbnN0IHNlbmQgPSBuYXZpZ2F0b3Iuc2VuZEJlYWNvbiAmJiBuYXZpZ2F0b3Iuc2VuZEJlYWNvbi5iaW5kKG5hdmlnYXRvcik7XG4gICAgICAgIGZ1bmN0aW9uIGZhbGxiYWNrU2VuZCgpIHtcbiAgICAgICAgICAgIGZldGNoKHZpdGFsc1VybCwge1xuICAgICAgICAgICAgICAgIGJvZHk6IGJsb2IsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICAgICAgY3JlZGVudGlhbHM6ICdvbWl0JyxcbiAgICAgICAgICAgICAgICBrZWVwYWxpdmU6IHRydWVcbiAgICAgICAgICAgIH0pLmNhdGNoKGNvbnNvbGUuZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBJZiBzZW5kIGlzIHVuZGVmaW5lZCBpdCdsbCB0aHJvdyBhcyB3ZWxsLiBUaGlzIHJlZHVjZXMgb3V0cHV0IGNvZGUgc2l6ZS5cbiAgICAgICAgICAgIHNlbmQodml0YWxzVXJsLCBibG9iKSB8fCBmYWxsYmFja1NlbmQoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBmYWxsYmFja1NlbmQoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbnZhciBfZGVmYXVsdCA9IChvblBlcmZFbnRyeSk9PntcbiAgICAvLyBVcGRhdGUgZnVuY3Rpb24gaWYgaXQgY2hhbmdlczpcbiAgICB1c2VyUmVwb3J0SGFuZGxlciA9IG9uUGVyZkVudHJ5O1xuICAgIC8vIE9ubHkgcmVnaXN0ZXIgbGlzdGVuZXJzIG9uY2U6XG4gICAgaWYgKGlzUmVnaXN0ZXJlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlzUmVnaXN0ZXJlZCA9IHRydWU7XG4gICAgY29uc3QgYXR0cmlidXRpb25zID0gcHJvY2Vzcy5lbnYuX19ORVhUX1dFQl9WSVRBTFNfQVRUUklCVVRJT047XG4gICAgZm9yIChjb25zdCB3ZWJWaXRhbCBvZiBXRUJfVklUQUxTKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCBtb2Q7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0hBU19XRUJfVklUQUxTX0FUVFJJQlVUSU9OKSB7XG4gICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogYXR0cmlidXRpb25zLmluY2x1ZGVzKHdlYlZpdGFsKSkge1xuICAgICAgICAgICAgICAgICAgICBtb2QgPSByZXF1aXJlKCduZXh0L2Rpc3QvY29tcGlsZWQvd2ViLXZpdGFscy1hdHRyaWJ1dGlvbicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbW9kKSB7XG4gICAgICAgICAgICAgICAgbW9kID0gcmVxdWlyZSgnbmV4dC9kaXN0L2NvbXBpbGVkL3dlYi12aXRhbHMnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1vZFtgb24ke3dlYlZpdGFsfWBdKG9uUmVwb3J0KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAvLyBEbyBub3RoaW5nIGlmIHRoZSBtb2R1bGUgZmFpbHMgdG8gbG9hZFxuICAgICAgICAgICAgY29uc29sZS53YXJuKGBGYWlsZWQgdG8gdHJhY2sgJHt3ZWJWaXRhbH0gd2ViLXZpdGFsYCwgZXJyKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDtcblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGVyZm9ybWFuY2UtcmVsYXllci5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJkZWZhdWx0IiwiV0VCX1ZJVEFMUyIsImluaXRpYWxIcmVmIiwibG9jYXRpb24iLCJocmVmIiwiaXNSZWdpc3RlcmVkIiwidXNlclJlcG9ydEhhbmRsZXIiLCJvblJlcG9ydCIsIm1ldHJpYyIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfQU5BTFlUSUNTX0lEIiwicmVmIiwiYm9keSIsImRzbiIsImlkIiwicGFnZSIsIndpbmRvdyIsIl9fTkVYVF9EQVRBX18iLCJldmVudF9uYW1lIiwibmFtZSIsInRvU3RyaW5nIiwic3BlZWQiLCJuYXZpZ2F0b3IiLCJibG9iIiwiQmxvYiIsIlVSTFNlYXJjaFBhcmFtcyIsInR5cGUiLCJ2aXRhbHNVcmwiLCJzZW5kIiwic2VuZEJlYWNvbiIsImJpbmQiLCJmYWxsYmFja1NlbmQiLCJmZXRjaCIsIm1ldGhvZCIsImNyZWRlbnRpYWxzIiwia2VlcGFsaXZlIiwiY2F0Y2giLCJjb25zb2xlIiwiZXJyb3IiLCJlcnIiLCJfZGVmYXVsdCIsIm9uUGVyZkVudHJ5IiwiYXR0cmlidXRpb25zIiwiX19ORVhUX1dFQl9WSVRBTFNfQVRUUklCVVRJT04iLCJ3ZWJWaXRhbCIsIm1vZCIsIl9fTkVYVF9IQVNfV0VCX1ZJVEFMU19BVFRSSUJVVElPTiIsImluY2x1ZGVzIiwicmVxdWlyZSIsIndhcm4iLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/client/performance-relayer.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/portal/index.js": /*!***********************************************************!*\ !*** ../../node_modules/next/dist/client/portal/index.js ***! \***********************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nvar _s = $RefreshSig$();\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Portal = void 0;\nvar _react = __webpack_require__(/*! react */ \"../../node_modules/react/index.js\");\nvar _reactDom = __webpack_require__(/*! react-dom */ \"../../node_modules/react-dom/index.js\");\nconst Portal = (param)=>{\n let { children , type } = param;\n _s();\n const [portalNode, setPortalNode] = (0, _react).useState(null);\n (0, _react).useEffect(()=>{\n const element = document.createElement(type);\n document.body.appendChild(element);\n setPortalNode(element);\n return ()=>{\n document.body.removeChild(element);\n };\n }, [\n type\n ]);\n return portalNode ? /*#__PURE__*/ (0, _reactDom).createPortal(children, portalNode) : null;\n};\n_s(Portal, \"RFImm+EuWCdF9gTeRNMrIZMTdTE=\");\n_c = Portal;\nexports.Portal = Portal;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=index.js.map\nvar _c;\n$RefreshReg$(_c, \"Portal\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcG9ydGFsL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU8sSUFBSTtBQUNmLENBQUMsRUFBQztBQUNGRCxjQUFjLEdBQUcsS0FBSztBQUN0QixJQUFJRyxTQUFTQyxtQkFBT0EsQ0FBQyxnREFBTztBQUM1QixJQUFJQyxZQUFZRCxtQkFBT0EsQ0FBQyx3REFBVztBQUNuQyxNQUFNRixTQUFTLFNBQXdCO1FBQXZCLEVBQUVJLFNBQVEsRUFBR0MsS0FBSSxFQUFHOztJQUNoQyxNQUFNLENBQUNDLFlBQVlDLGNBQWMsR0FBRyxDQUFDLEdBQUdOLE1BQU0sRUFBRU8sUUFBUSxDQUFDLElBQUk7SUFDNUQsSUFBR1AsTUFBTSxFQUFFUSxTQUFTLENBQUMsSUFBSTtRQUN0QixNQUFNQyxVQUFVQyxTQUFTQyxhQUFhLENBQUNQO1FBQ3ZDTSxTQUFTRSxJQUFJLENBQUNDLFdBQVcsQ0FBQ0o7UUFDMUJILGNBQWNHO1FBQ2QsT0FBTyxJQUFJO1lBQ1BDLFNBQVNFLElBQUksQ0FBQ0UsV0FBVyxDQUFDTDtRQUM5QjtJQUNKLEdBQUc7UUFDQ0w7S0FDSDtJQUNELE9BQU9DLGFBQTJCLFdBQUgsR0FBSSxJQUFHSCxTQUFTLEVBQUVhLFlBQVksQ0FBQ1osVUFBVUUsY0FBYyxJQUFJO0FBQzlGO0dBYk1OO0tBQUFBO0FBY05GLGNBQWMsR0FBR0U7QUFFakIsSUFBSSxDQUFDLE9BQU9GLFFBQVFtQixPQUFPLEtBQUssY0FBZSxPQUFPbkIsUUFBUW1CLE9BQU8sS0FBSyxZQUFZbkIsUUFBUW1CLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT25CLFFBQVFtQixPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLdEIsT0FBT0MsY0FBYyxDQUFDQyxRQUFRbUIsT0FBTyxFQUFFLGNBQWM7UUFBRWxCLE9BQU8sSUFBSTtJQUFDO0lBQ25FSCxPQUFPdUIsTUFBTSxDQUFDckIsUUFBUW1CLE9BQU8sRUFBRW5CO0lBQy9Cc0IsT0FBT3RCLE9BQU8sR0FBR0EsUUFBUW1CLE9BQU87QUFDbEMsQ0FBQyxDQUVELGlDQUFpQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcG9ydGFsL2luZGV4LmpzPzQ3MmMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLlBvcnRhbCA9IHZvaWQgMDtcbnZhciBfcmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgX3JlYWN0RG9tID0gcmVxdWlyZShcInJlYWN0LWRvbVwiKTtcbmNvbnN0IFBvcnRhbCA9ICh7IGNoaWxkcmVuICwgdHlwZSAgfSk9PntcbiAgICBjb25zdCBbcG9ydGFsTm9kZSwgc2V0UG9ydGFsTm9kZV0gPSAoMCwgX3JlYWN0KS51c2VTdGF0ZShudWxsKTtcbiAgICAoMCwgX3JlYWN0KS51c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodHlwZSk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgIHNldFBvcnRhbE5vZGUoZWxlbWVudCk7XG4gICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbGVtZW50KTtcbiAgICAgICAgfTtcbiAgICB9LCBbXG4gICAgICAgIHR5cGVcbiAgICBdKTtcbiAgICByZXR1cm4gcG9ydGFsTm9kZSA/IC8qI19fUFVSRV9fKi8gKDAsIF9yZWFjdERvbSkuY3JlYXRlUG9ydGFsKGNoaWxkcmVuLCBwb3J0YWxOb2RlKSA6IG51bGw7XG59O1xuZXhwb3J0cy5Qb3J0YWwgPSBQb3J0YWw7XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsIlBvcnRhbCIsIl9yZWFjdCIsInJlcXVpcmUiLCJfcmVhY3REb20iLCJjaGlsZHJlbiIsInR5cGUiLCJwb3J0YWxOb2RlIiwic2V0UG9ydGFsTm9kZSIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiZWxlbWVudCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwiY3JlYXRlUG9ydGFsIiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/client/portal/index.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/remove-base-path.js": /*!***************************************************************!*\ !*** ../../node_modules/next/dist/client/remove-base-path.js ***! \***************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.removeBasePath = removeBasePath;\nvar _hasBasePath = __webpack_require__(/*! ./has-base-path */ \"../../node_modules/next/dist/client/has-base-path.js\");\nconst basePath = false || \"\";\nfunction removeBasePath(path) {\n if (false) {}\n path = path.slice(basePath.length);\n if (!path.startsWith(\"/\")) path = \"/\".concat(path);\n return path;\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=remove-base-path.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcmVtb3ZlLWJhc2UtcGF0aC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU8sSUFBSTtBQUNmLENBQUMsRUFBQztBQUNGRCxzQkFBc0IsR0FBR0U7QUFDekIsSUFBSUMsZUFBZUMsbUJBQU9BLENBQUMsNkVBQWlCO0FBQzVDLE1BQU1DLFdBQVdDLE1BQWtDLElBQUk7QUFDdkQsU0FBU0osZUFBZU8sSUFBSSxFQUFFO0lBQzFCLElBQUlILEtBQTBDLEVBQUUsRUFJL0M7SUFDREcsT0FBT0EsS0FBS0csS0FBSyxDQUFDUCxTQUFTUSxNQUFNO0lBQ2pDLElBQUksQ0FBQ0osS0FBS0ssVUFBVSxDQUFDLE1BQU1MLE9BQU8sSUFBUyxPQUFMQTtJQUN0QyxPQUFPQTtBQUNYO0FBRUEsSUFBSSxDQUFDLE9BQU9ULFFBQVFlLE9BQU8sS0FBSyxjQUFlLE9BQU9mLFFBQVFlLE9BQU8sS0FBSyxZQUFZZixRQUFRZSxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9mLFFBQVFlLE9BQU8sQ0FBQ0MsVUFBVSxLQUFLLGFBQWE7SUFDcktsQixPQUFPQyxjQUFjLENBQUNDLFFBQVFlLE9BQU8sRUFBRSxjQUFjO1FBQUVkLE9BQU8sSUFBSTtJQUFDO0lBQ25FSCxPQUFPbUIsTUFBTSxDQUFDakIsUUFBUWUsT0FBTyxFQUFFZjtJQUMvQmtCLE9BQU9sQixPQUFPLEdBQUdBLFFBQVFlLE9BQU87QUFDbEMsQ0FBQyxDQUVELDRDQUE0QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcmVtb3ZlLWJhc2UtcGF0aC5qcz8yYTIxIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5yZW1vdmVCYXNlUGF0aCA9IHJlbW92ZUJhc2VQYXRoO1xudmFyIF9oYXNCYXNlUGF0aCA9IHJlcXVpcmUoXCIuL2hhcy1iYXNlLXBhdGhcIik7XG5jb25zdCBiYXNlUGF0aCA9IHByb2Nlc3MuZW52Ll9fTkVYVF9ST1VURVJfQkFTRVBBVEggfHwgJyc7XG5mdW5jdGlvbiByZW1vdmVCYXNlUGF0aChwYXRoKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9NQU5VQUxfQ0xJRU5UX0JBU0VfUEFUSCkge1xuICAgICAgICBpZiAoISgwLCBfaGFzQmFzZVBhdGgpLmhhc0Jhc2VQYXRoKHBhdGgpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGF0aDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwYXRoID0gcGF0aC5zbGljZShiYXNlUGF0aC5sZW5ndGgpO1xuICAgIGlmICghcGF0aC5zdGFydHNXaXRoKCcvJykpIHBhdGggPSBgLyR7cGF0aH1gO1xuICAgIHJldHVybiBwYXRoO1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZW1vdmUtYmFzZS1wYXRoLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsInJlbW92ZUJhc2VQYXRoIiwiX2hhc0Jhc2VQYXRoIiwicmVxdWlyZSIsImJhc2VQYXRoIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9ST1VURVJfQkFTRVBBVEgiLCJwYXRoIiwiX19ORVhUX01BTlVBTF9DTElFTlRfQkFTRV9QQVRIIiwiaGFzQmFzZVBhdGgiLCJzbGljZSIsImxlbmd0aCIsInN0YXJ0c1dpdGgiLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/client/remove-base-path.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/remove-locale.js": /*!************************************************************!*\ !*** ../../node_modules/next/dist/client/remove-locale.js ***! \************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.removeLocale = removeLocale;\nvar _parsePath = __webpack_require__(/*! ../shared/lib/router/utils/parse-path */ \"../../node_modules/next/dist/shared/lib/router/utils/parse-path.js\");\nfunction removeLocale(path, locale) {\n if (false) {}\n return path;\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=remove-locale.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcmVtb3ZlLWxvY2FsZS5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU8sSUFBSTtBQUNmLENBQUMsRUFBQztBQUNGRCxvQkFBb0IsR0FBR0U7QUFDdkIsSUFBSUMsYUFBYUMsbUJBQU9BLENBQUMsaUhBQXVDO0FBQ2hFLFNBQVNGLGFBQWFHLElBQUksRUFBRUMsTUFBTSxFQUFFO0lBQ2hDLElBQUlDLEtBQStCLEVBQUUsRUFLcEM7SUFDRCxPQUFPRjtBQUNYO0FBRUEsSUFBSSxDQUFDLE9BQU9MLFFBQVFrQixPQUFPLEtBQUssY0FBZSxPQUFPbEIsUUFBUWtCLE9BQU8sS0FBSyxZQUFZbEIsUUFBUWtCLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT2xCLFFBQVFrQixPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLckIsT0FBT0MsY0FBYyxDQUFDQyxRQUFRa0IsT0FBTyxFQUFFLGNBQWM7UUFBRWpCLE9BQU8sSUFBSTtJQUFDO0lBQ25FSCxPQUFPc0IsTUFBTSxDQUFDcEIsUUFBUWtCLE9BQU8sRUFBRWxCO0lBQy9CcUIsT0FBT3JCLE9BQU8sR0FBR0EsUUFBUWtCLE9BQU87QUFDbEMsQ0FBQyxDQUVELHlDQUF5QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcmVtb3ZlLWxvY2FsZS5qcz80ZjllIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5yZW1vdmVMb2NhbGUgPSByZW1vdmVMb2NhbGU7XG52YXIgX3BhcnNlUGF0aCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9wYXJzZS1wYXRoXCIpO1xuZnVuY3Rpb24gcmVtb3ZlTG9jYWxlKHBhdGgsIGxvY2FsZSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUKSB7XG4gICAgICAgIGNvbnN0IHsgcGF0aG5hbWUgIH0gPSAoMCwgX3BhcnNlUGF0aCkucGFyc2VQYXRoKHBhdGgpO1xuICAgICAgICBjb25zdCBwYXRoTG93ZXIgPSBwYXRobmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBjb25zdCBsb2NhbGVMb3dlciA9IGxvY2FsZSA9PSBudWxsID8gdm9pZCAwIDogbG9jYWxlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHVybiBsb2NhbGUgJiYgKHBhdGhMb3dlci5zdGFydHNXaXRoKGAvJHtsb2NhbGVMb3dlcn0vYCkgfHwgcGF0aExvd2VyID09PSBgLyR7bG9jYWxlTG93ZXJ9YCkgPyBgJHtwYXRobmFtZS5sZW5ndGggPT09IGxvY2FsZS5sZW5ndGggKyAxID8gYC9gIDogYGB9JHtwYXRoLnNsaWNlKGxvY2FsZS5sZW5ndGggKyAxKX1gIDogcGF0aDtcbiAgICB9XG4gICAgcmV0dXJuIHBhdGg7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlbW92ZS1sb2NhbGUuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwicmVtb3ZlTG9jYWxlIiwiX3BhcnNlUGF0aCIsInJlcXVpcmUiLCJwYXRoIiwibG9jYWxlIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9JMThOX1NVUFBPUlQiLCJwYXRobmFtZSIsInBhcnNlUGF0aCIsInBhdGhMb3dlciIsInRvTG93ZXJDYXNlIiwibG9jYWxlTG93ZXIiLCJzdGFydHNXaXRoIiwibGVuZ3RoIiwic2xpY2UiLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/client/remove-locale.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/request-idle-callback.js": /*!********************************************************************!*\ !*** ../../node_modules/next/dist/client/request-idle-callback.js ***! \********************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.cancelIdleCallback = exports.requestIdleCallback = void 0;\nconst requestIdleCallback = typeof self !== \"undefined\" && self.requestIdleCallback && self.requestIdleCallback.bind(window) || function(cb) {\n let start = Date.now();\n return self.setTimeout(function() {\n cb({\n didTimeout: false,\n timeRemaining: function() {\n return Math.max(0, 50 - (Date.now() - start));\n }\n });\n }, 1);\n};\nexports.requestIdleCallback = requestIdleCallback;\nconst cancelIdleCallback = typeof self !== \"undefined\" && self.cancelIdleCallback && self.cancelIdleCallback.bind(window) || function(id) {\n return clearTimeout(id);\n};\nexports.cancelIdleCallback = cancelIdleCallback;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=request-idle-callback.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcmVxdWVzdC1pZGxlLWNhbGxiYWNrLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTyxJQUFJO0FBQ2YsQ0FBQyxFQUFDO0FBQ0ZELDBCQUEwQixHQUFHQSwyQkFBMkIsR0FBRyxLQUFLO0FBQ2hFLE1BQU1HLHNCQUFzQixPQUFPQyxTQUFTLGVBQWVBLEtBQUtELG1CQUFtQixJQUFJQyxLQUFLRCxtQkFBbUIsQ0FBQ0UsSUFBSSxDQUFDQyxXQUFXLFNBQVNDLEVBQUUsRUFBRTtJQUN6SSxJQUFJQyxRQUFRQyxLQUFLQyxHQUFHO0lBQ3BCLE9BQU9OLEtBQUtPLFVBQVUsQ0FBQyxXQUFXO1FBQzlCSixHQUFHO1lBQ0NLLFlBQVksS0FBSztZQUNqQkMsZUFBZSxXQUFXO2dCQUN0QixPQUFPQyxLQUFLQyxHQUFHLENBQUMsR0FBRyxLQUFNTixDQUFBQSxLQUFLQyxHQUFHLEtBQUtGLEtBQUk7WUFDOUM7UUFDSjtJQUNKLEdBQUc7QUFDUDtBQUNBUiwyQkFBMkIsR0FBR0c7QUFDOUIsTUFBTUQscUJBQXFCLE9BQU9FLFNBQVMsZUFBZUEsS0FBS0Ysa0JBQWtCLElBQUlFLEtBQUtGLGtCQUFrQixDQUFDRyxJQUFJLENBQUNDLFdBQVcsU0FBU1UsRUFBRSxFQUFFO0lBQ3RJLE9BQU9DLGFBQWFEO0FBQ3hCO0FBQ0FoQiwwQkFBMEIsR0FBR0U7QUFFN0IsSUFBSSxDQUFDLE9BQU9GLFFBQVFrQixPQUFPLEtBQUssY0FBZSxPQUFPbEIsUUFBUWtCLE9BQU8sS0FBSyxZQUFZbEIsUUFBUWtCLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT2xCLFFBQVFrQixPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLckIsT0FBT0MsY0FBYyxDQUFDQyxRQUFRa0IsT0FBTyxFQUFFLGNBQWM7UUFBRWpCLE9BQU8sSUFBSTtJQUFDO0lBQ25FSCxPQUFPc0IsTUFBTSxDQUFDcEIsUUFBUWtCLE9BQU8sRUFBRWxCO0lBQy9CcUIsT0FBT3JCLE9BQU8sR0FBR0EsUUFBUWtCLE9BQU87QUFDbEMsQ0FBQyxDQUVELGlEQUFpRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcmVxdWVzdC1pZGxlLWNhbGxiYWNrLmpzP2U5NzAiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmNhbmNlbElkbGVDYWxsYmFjayA9IGV4cG9ydHMucmVxdWVzdElkbGVDYWxsYmFjayA9IHZvaWQgMDtcbmNvbnN0IHJlcXVlc3RJZGxlQ2FsbGJhY2sgPSB0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrICYmIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjay5iaW5kKHdpbmRvdykgfHwgZnVuY3Rpb24oY2IpIHtcbiAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIHJldHVybiBzZWxmLnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIGNiKHtcbiAgICAgICAgICAgIGRpZFRpbWVvdXQ6IGZhbHNlLFxuICAgICAgICAgICAgdGltZVJlbWFpbmluZzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIDUwIC0gKERhdGUubm93KCkgLSBzdGFydCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9LCAxKTtcbn07XG5leHBvcnRzLnJlcXVlc3RJZGxlQ2FsbGJhY2sgPSByZXF1ZXN0SWRsZUNhbGxiYWNrO1xuY29uc3QgY2FuY2VsSWRsZUNhbGxiYWNrID0gdHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnICYmIHNlbGYuY2FuY2VsSWRsZUNhbGxiYWNrICYmIHNlbGYuY2FuY2VsSWRsZUNhbGxiYWNrLmJpbmQod2luZG93KSB8fCBmdW5jdGlvbihpZCkge1xuICAgIHJldHVybiBjbGVhclRpbWVvdXQoaWQpO1xufTtcbmV4cG9ydHMuY2FuY2VsSWRsZUNhbGxiYWNrID0gY2FuY2VsSWRsZUNhbGxiYWNrO1xuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXF1ZXN0LWlkbGUtY2FsbGJhY2suanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiY2FuY2VsSWRsZUNhbGxiYWNrIiwicmVxdWVzdElkbGVDYWxsYmFjayIsInNlbGYiLCJiaW5kIiwid2luZG93IiwiY2IiLCJzdGFydCIsIkRhdGUiLCJub3ciLCJzZXRUaW1lb3V0IiwiZGlkVGltZW91dCIsInRpbWVSZW1haW5pbmciLCJNYXRoIiwibWF4IiwiaWQiLCJjbGVhclRpbWVvdXQiLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/client/request-idle-callback.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/route-announcer.js": /*!**************************************************************!*\ !*** ../../node_modules/next/dist/client/route-announcer.js ***! \**************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nvar _s = $RefreshSig$();\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = exports.RouteAnnouncer = void 0;\nvar _interop_require_default = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _react = _interop_require_default(__webpack_require__(/*! react */ \"../../node_modules/react/index.js\"));\nvar _router = __webpack_require__(/*! ./router */ \"../../node_modules/next/dist/client/router.js\");\nconst nextjsRouteAnnouncerStyles = {\n border: 0,\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n width: \"1px\",\n // https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n};\nconst RouteAnnouncer = ()=>{\n _s();\n const { asPath } = (0, _router).useRouter();\n const [routeAnnouncement, setRouteAnnouncement] = _react.default.useState(\"\");\n // Only announce the path change, but not for the first load because screen\n // reader will do that automatically.\n const previouslyLoadedPath = _react.default.useRef(asPath);\n // Every time the path changes, announce the new page’s title following this\n // priority: first the document title (from head), otherwise the first h1, or\n // if none of these exist, then the pathname from the URL. This methodology is\n // inspired by Marcy Sutton’s accessible client routing user testing. More\n // information can be found here:\n // https://www.gatsbyjs.com/blog/2019-07-11-user-testing-accessible-client-routing/\n _react.default.useEffect(()=>{\n // If the path hasn't change, we do nothing.\n if (previouslyLoadedPath.current === asPath) return;\n previouslyLoadedPath.current = asPath;\n if (document.title) {\n setRouteAnnouncement(document.title);\n } else {\n const pageHeader = document.querySelector(\"h1\");\n var ref;\n const content = (ref = pageHeader == null ? void 0 : pageHeader.innerText) != null ? ref : pageHeader == null ? void 0 : pageHeader.textContent;\n setRouteAnnouncement(content || asPath);\n }\n }, [\n asPath\n ]);\n return /*#__PURE__*/ _react.default.createElement(\"p\", {\n \"aria-live\": \"assertive\" // Make the announcement immediately.\n ,\n id: \"__next-route-announcer__\",\n role: \"alert\",\n style: nextjsRouteAnnouncerStyles\n }, routeAnnouncement);\n};\n_s(RouteAnnouncer, \"XmDOMcfEgRlT21GulgLTmCStecg=\");\n_c = RouteAnnouncer;\nexports.RouteAnnouncer = RouteAnnouncer;\nvar _default = RouteAnnouncer;\nexports[\"default\"] = _default;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=route-announcer.js.map\nvar _c;\n$RefreshReg$(_c, \"RouteAnnouncer\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcm91dGUtYW5ub3VuY2VyLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU8sSUFBSTtBQUNmLENBQUMsRUFBQztBQUNGRCxrQkFBZSxHQUFHQSxzQkFBc0IsR0FBRyxLQUFLO0FBQ2hELElBQUlJLDJCQUEyQkMsdUpBQStEO0FBQzlGLElBQUlDLFNBQVNGLHlCQUF5QkMsbUJBQU9BLENBQUMsZ0RBQU87QUFDckQsSUFBSUUsVUFBVUYsbUJBQU9BLENBQUMsK0RBQVU7QUFDaEMsTUFBTUcsNkJBQTZCO0lBQy9CQyxRQUFRO0lBQ1JDLE1BQU07SUFDTkMsUUFBUTtJQUNSQyxRQUFRO0lBQ1JDLFVBQVU7SUFDVkMsU0FBUztJQUNUQyxVQUFVO0lBQ1ZDLE9BQU87SUFDUCx3RkFBd0Y7SUFDeEZDLFlBQVk7SUFDWkMsVUFBVTtBQUNkO0FBQ0EsTUFBTWYsaUJBQWlCLElBQUk7O0lBQ3ZCLE1BQU0sRUFBRWdCLE9BQU0sRUFBRyxHQUFHLENBQUMsR0FBR1osT0FBTyxFQUFFYSxTQUFTO0lBQzFDLE1BQU0sQ0FBQ0MsbUJBQW1CQyxxQkFBcUIsR0FBR2hCLE9BQU9KLE9BQU8sQ0FBQ3FCLFFBQVEsQ0FBQztJQUMxRSwyRUFBMkU7SUFDM0UscUNBQXFDO0lBQ3JDLE1BQU1DLHVCQUF1QmxCLE9BQU9KLE9BQU8sQ0FBQ3VCLE1BQU0sQ0FBQ047SUFDbkQsNEVBQTRFO0lBQzVFLDZFQUE2RTtJQUM3RSw4RUFBOEU7SUFDOUUsMEVBQTBFO0lBQzFFLGlDQUFpQztJQUNqQyxtRkFBbUY7SUFDbkZiLE9BQU9KLE9BQU8sQ0FBQ3dCLFNBQVMsQ0FBQyxJQUFJO1FBQ3pCLDRDQUE0QztRQUM1QyxJQUFJRixxQkFBcUJHLE9BQU8sS0FBS1IsUUFBUTtRQUM3Q0sscUJBQXFCRyxPQUFPLEdBQUdSO1FBQy9CLElBQUlTLFNBQVNDLEtBQUssRUFBRTtZQUNoQlAscUJBQXFCTSxTQUFTQyxLQUFLO1FBQ3ZDLE9BQU87WUFDSCxNQUFNQyxhQUFhRixTQUFTRyxhQUFhLENBQUM7WUFDMUMsSUFBSUM7WUFDSixNQUFNQyxVQUFVLENBQUNELE1BQU1GLGNBQWMsSUFBSSxHQUFHLEtBQUssSUFBSUEsV0FBV0ksU0FBUyxLQUFLLElBQUksR0FBR0YsTUFBTUYsY0FBYyxJQUFJLEdBQUcsS0FBSyxJQUFJQSxXQUFXSyxXQUFXO1lBQy9JYixxQkFBcUJXLFdBQVdkO1FBQ3BDLENBQUM7SUFDTCxHQUNBO1FBQ0lBO0tBQ0g7SUFDRCxPQUFPLFdBQVcsR0FBR2IsT0FBT0osT0FBTyxDQUFDa0MsYUFBYSxDQUFDLEtBQUs7UUFDbkQsYUFBYSxZQUFZLHFDQUFxQzs7UUFFOURDLElBQUk7UUFDSkMsTUFBTTtRQUNOQyxPQUFPL0I7SUFDWCxHQUFHYTtBQUNQO0dBbkNNbEI7S0FBQUE7QUFvQ05ILHNCQUFzQixHQUFHRztBQUN6QixJQUFJcUMsV0FBV3JDO0FBQ2ZILGtCQUFlLEdBQUd3QztBQUVsQixJQUFJLENBQUMsT0FBT3hDLFFBQVFFLE9BQU8sS0FBSyxjQUFlLE9BQU9GLFFBQVFFLE9BQU8sS0FBSyxZQUFZRixRQUFRRSxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9GLFFBQVFFLE9BQU8sQ0FBQ3VDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLM0MsT0FBT0MsY0FBYyxDQUFDQyxRQUFRRSxPQUFPLEVBQUUsY0FBYztRQUFFRCxPQUFPLElBQUk7SUFBQztJQUNuRUgsT0FBTzRDLE1BQU0sQ0FBQzFDLFFBQVFFLE9BQU8sRUFBRUY7SUFDL0IyQyxPQUFPM0MsT0FBTyxHQUFHQSxRQUFRRSxPQUFPO0FBQ2xDLENBQUMsQ0FFRCwyQ0FBMkMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3JvdXRlLWFubm91bmNlci5qcz80ZjJiIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5Sb3V0ZUFubm91bmNlciA9IHZvaWQgMDtcbnZhciBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQgPSByZXF1aXJlKFwiQHN3Yy9oZWxwZXJzL2xpYi9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuanNcIikuZGVmYXVsdDtcbnZhciBfcmVhY3QgPSBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQocmVxdWlyZShcInJlYWN0XCIpKTtcbnZhciBfcm91dGVyID0gcmVxdWlyZShcIi4vcm91dGVyXCIpO1xuY29uc3QgbmV4dGpzUm91dGVBbm5vdW5jZXJTdHlsZXMgPSB7XG4gICAgYm9yZGVyOiAwLFxuICAgIGNsaXA6ICdyZWN0KDAgMCAwIDApJyxcbiAgICBoZWlnaHQ6ICcxcHgnLFxuICAgIG1hcmdpbjogJy0xcHgnLFxuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICBwYWRkaW5nOiAwLFxuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIHdpZHRoOiAnMXB4JyxcbiAgICAvLyBodHRwczovL21lZGl1bS5jb20vQGplc3NlYmVhY2gvYmV3YXJlLXNtdXNoZWQtb2ZmLXNjcmVlbi1hY2Nlc3NpYmxlLXRleHQtNTk1MmE0YzJjYmZlXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgd29yZFdyYXA6ICdub3JtYWwnXG59O1xuY29uc3QgUm91dGVBbm5vdW5jZXIgPSAoKT0+e1xuICAgIGNvbnN0IHsgYXNQYXRoICB9ID0gKDAsIF9yb3V0ZXIpLnVzZVJvdXRlcigpO1xuICAgIGNvbnN0IFtyb3V0ZUFubm91bmNlbWVudCwgc2V0Um91dGVBbm5vdW5jZW1lbnRdID0gX3JlYWN0LmRlZmF1bHQudXNlU3RhdGUoJycpO1xuICAgIC8vIE9ubHkgYW5ub3VuY2UgdGhlIHBhdGggY2hhbmdlLCBidXQgbm90IGZvciB0aGUgZmlyc3QgbG9hZCBiZWNhdXNlIHNjcmVlblxuICAgIC8vIHJlYWRlciB3aWxsIGRvIHRoYXQgYXV0b21hdGljYWxseS5cbiAgICBjb25zdCBwcmV2aW91c2x5TG9hZGVkUGF0aCA9IF9yZWFjdC5kZWZhdWx0LnVzZVJlZihhc1BhdGgpO1xuICAgIC8vIEV2ZXJ5IHRpbWUgdGhlIHBhdGggY2hhbmdlcywgYW5ub3VuY2UgdGhlIG5ldyBwYWdl4oCZcyB0aXRsZSBmb2xsb3dpbmcgdGhpc1xuICAgIC8vIHByaW9yaXR5OiBmaXJzdCB0aGUgZG9jdW1lbnQgdGl0bGUgKGZyb20gaGVhZCksIG90aGVyd2lzZSB0aGUgZmlyc3QgaDEsIG9yXG4gICAgLy8gaWYgbm9uZSBvZiB0aGVzZSBleGlzdCwgdGhlbiB0aGUgcGF0aG5hbWUgZnJvbSB0aGUgVVJMLiBUaGlzIG1ldGhvZG9sb2d5IGlzXG4gICAgLy8gaW5zcGlyZWQgYnkgTWFyY3kgU3V0dG9u4oCZcyBhY2Nlc3NpYmxlIGNsaWVudCByb3V0aW5nIHVzZXIgdGVzdGluZy4gTW9yZVxuICAgIC8vIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBoZXJlOlxuICAgIC8vIGh0dHBzOi8vd3d3LmdhdHNieWpzLmNvbS9ibG9nLzIwMTktMDctMTEtdXNlci10ZXN0aW5nLWFjY2Vzc2libGUtY2xpZW50LXJvdXRpbmcvXG4gICAgX3JlYWN0LmRlZmF1bHQudXNlRWZmZWN0KCgpPT57XG4gICAgICAgIC8vIElmIHRoZSBwYXRoIGhhc24ndCBjaGFuZ2UsIHdlIGRvIG5vdGhpbmcuXG4gICAgICAgIGlmIChwcmV2aW91c2x5TG9hZGVkUGF0aC5jdXJyZW50ID09PSBhc1BhdGgpIHJldHVybjtcbiAgICAgICAgcHJldmlvdXNseUxvYWRlZFBhdGguY3VycmVudCA9IGFzUGF0aDtcbiAgICAgICAgaWYgKGRvY3VtZW50LnRpdGxlKSB7XG4gICAgICAgICAgICBzZXRSb3V0ZUFubm91bmNlbWVudChkb2N1bWVudC50aXRsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwYWdlSGVhZGVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaDEnKTtcbiAgICAgICAgICAgIHZhciByZWY7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gKHJlZiA9IHBhZ2VIZWFkZXIgPT0gbnVsbCA/IHZvaWQgMCA6IHBhZ2VIZWFkZXIuaW5uZXJUZXh0KSAhPSBudWxsID8gcmVmIDogcGFnZUhlYWRlciA9PSBudWxsID8gdm9pZCAwIDogcGFnZUhlYWRlci50ZXh0Q29udGVudDtcbiAgICAgICAgICAgIHNldFJvdXRlQW5ub3VuY2VtZW50KGNvbnRlbnQgfHwgYXNQYXRoKTtcbiAgICAgICAgfVxuICAgIH0sIC8vIFRPRE86IHN3aXRjaCB0byBwYXRobmFtZSArIHF1ZXJ5IG9iamVjdCBvZiBkeW5hbWljIHJvdXRlIHJlcXVpcmVtZW50c1xuICAgIFtcbiAgICAgICAgYXNQYXRoXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInBcIiwge1xuICAgICAgICBcImFyaWEtbGl2ZVwiOiBcImFzc2VydGl2ZVwiIC8vIE1ha2UgdGhlIGFubm91bmNlbWVudCBpbW1lZGlhdGVseS5cbiAgICAgICAgLFxuICAgICAgICBpZDogXCJfX25leHQtcm91dGUtYW5ub3VuY2VyX19cIixcbiAgICAgICAgcm9sZTogXCJhbGVydFwiLFxuICAgICAgICBzdHlsZTogbmV4dGpzUm91dGVBbm5vdW5jZXJTdHlsZXNcbiAgICB9LCByb3V0ZUFubm91bmNlbWVudCk7XG59O1xuZXhwb3J0cy5Sb3V0ZUFubm91bmNlciA9IFJvdXRlQW5ub3VuY2VyO1xudmFyIF9kZWZhdWx0ID0gUm91dGVBbm5vdW5jZXI7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDtcblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cm91dGUtYW5ub3VuY2VyLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImRlZmF1bHQiLCJSb3V0ZUFubm91bmNlciIsIl9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCIsInJlcXVpcmUiLCJfcmVhY3QiLCJfcm91dGVyIiwibmV4dGpzUm91dGVBbm5vdW5jZXJTdHlsZXMiLCJib3JkZXIiLCJjbGlwIiwiaGVpZ2h0IiwibWFyZ2luIiwib3ZlcmZsb3ciLCJwYWRkaW5nIiwicG9zaXRpb24iLCJ3aWR0aCIsIndoaXRlU3BhY2UiLCJ3b3JkV3JhcCIsImFzUGF0aCIsInVzZVJvdXRlciIsInJvdXRlQW5ub3VuY2VtZW50Iiwic2V0Um91dGVBbm5vdW5jZW1lbnQiLCJ1c2VTdGF0ZSIsInByZXZpb3VzbHlMb2FkZWRQYXRoIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiY3VycmVudCIsImRvY3VtZW50IiwidGl0bGUiLCJwYWdlSGVhZGVyIiwicXVlcnlTZWxlY3RvciIsInJlZiIsImNvbnRlbnQiLCJpbm5lclRleHQiLCJ0ZXh0Q29udGVudCIsImNyZWF0ZUVsZW1lbnQiLCJpZCIsInJvbGUiLCJzdHlsZSIsIl9kZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/client/route-announcer.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/route-loader.js": /*!***********************************************************!*\ !*** ../../node_modules/next/dist/client/route-loader.js ***! \***********************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.markAssetError = markAssetError;\nexports.isAssetError = isAssetError;\nexports.getClientBuildManifest = getClientBuildManifest;\nexports.createRouteLoader = createRouteLoader;\nvar _interop_require_default = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _getAssetPathFromRoute = _interop_require_default(__webpack_require__(/*! ../shared/lib/router/utils/get-asset-path-from-route */ \"../../node_modules/next/dist/shared/lib/router/utils/get-asset-path-from-route.js\"));\nvar _trustedTypes = __webpack_require__(/*! ./trusted-types */ \"../../node_modules/next/dist/client/trusted-types.js\");\nvar _requestIdleCallback = __webpack_require__(/*! ./request-idle-callback */ \"../../node_modules/next/dist/client/request-idle-callback.js\");\n// 3.8s was arbitrarily chosen as it's what https://web.dev/interactive\n// considers as \"Good\" time-to-interactive. We must assume something went\n// wrong beyond this point, and then fall-back to a full page transition to\n// show the user something of value.\nconst MS_MAX_IDLE_DELAY = 3800;\nfunction withFuture(key, map, generator) {\n let entry = map.get(key);\n if (entry) {\n if (\"future\" in entry) {\n return entry.future;\n }\n return Promise.resolve(entry);\n }\n let resolver;\n const prom = new Promise((resolve)=>{\n resolver = resolve;\n });\n map.set(key, entry = {\n resolve: resolver,\n future: prom\n });\n return generator ? generator() // eslint-disable-next-line no-sequences\n .then((value)=>(resolver(value), value)).catch((err)=>{\n map.delete(key);\n throw err;\n }) : prom;\n}\nconst ASSET_LOAD_ERROR = Symbol(\"ASSET_LOAD_ERROR\");\nfunction markAssetError(err) {\n return Object.defineProperty(err, ASSET_LOAD_ERROR, {});\n}\nfunction isAssetError(err) {\n return err && ASSET_LOAD_ERROR in err;\n}\nfunction hasPrefetch(link) {\n try {\n link = document.createElement(\"link\");\n return(// with relList.support\n !!window.MSInputMethodContext && !!document.documentMode || link.relList.supports(\"prefetch\"));\n } catch (e) {\n return false;\n }\n}\nconst canPrefetch = hasPrefetch();\nfunction prefetchViaDom(href, as, link) {\n return new Promise((resolve, reject)=>{\n const selector = '\\n link[rel=\"prefetch\"][href^=\"'.concat(href, '\"],\\n link[rel=\"preload\"][href^=\"').concat(href, '\"],\\n script[src^=\"').concat(href, '\"]');\n if (document.querySelector(selector)) {\n return resolve();\n }\n link = document.createElement(\"link\");\n // The order of property assignment here is intentional:\n if (as) link.as = as;\n link.rel = \"prefetch\";\n link.crossOrigin = undefined;\n link.onload = resolve;\n link.onerror = ()=>reject(markAssetError(new Error(\"Failed to prefetch: \".concat(href))));\n // `href` should always be last:\n link.href = href;\n document.head.appendChild(link);\n });\n}\nfunction appendScript(src, script) {\n return new Promise((resolve, reject)=>{\n script = document.createElement(\"script\");\n // The order of property assignment here is intentional.\n // 1. Setup success/failure hooks in case the browser synchronously\n // executes when `src` is set.\n script.onload = resolve;\n script.onerror = ()=>reject(markAssetError(new Error(\"Failed to load script: \".concat(src))));\n // 2. Configure the cross-origin attribute before setting `src` in case the\n // browser begins to fetch.\n script.crossOrigin = undefined;\n // 3. Finally, set the source and inject into the DOM in case the child\n // must be appended for fetching to start.\n script.src = src;\n document.body.appendChild(script);\n });\n}\n// We wait for pages to be built in dev before we start the route transition\n// timeout to prevent an un-necessary hard navigation in development.\nlet devBuildPromise;\n// Resolve a promise that times out after given amount of milliseconds.\nfunction resolvePromiseWithTimeout(p, ms, err) {\n return new Promise((resolve, reject)=>{\n let cancelled = false;\n p.then((r)=>{\n // Resolved, cancel the timeout\n cancelled = true;\n resolve(r);\n }).catch(reject);\n // We wrap these checks separately for better dead-code elimination in\n // production bundles.\n if (true) {\n (devBuildPromise || Promise.resolve()).then(()=>{\n (0, _requestIdleCallback).requestIdleCallback(()=>setTimeout(()=>{\n if (!cancelled) {\n reject(err);\n }\n }, ms));\n });\n }\n if (false) {}\n });\n}\nfunction getClientBuildManifest() {\n if (self.__BUILD_MANIFEST) {\n return Promise.resolve(self.__BUILD_MANIFEST);\n }\n const onBuildManifest = new Promise((resolve)=>{\n // Mandatory because this is not concurrent safe:\n const cb = self.__BUILD_MANIFEST_CB;\n self.__BUILD_MANIFEST_CB = ()=>{\n resolve(self.__BUILD_MANIFEST);\n cb && cb();\n };\n });\n return resolvePromiseWithTimeout(onBuildManifest, MS_MAX_IDLE_DELAY, markAssetError(new Error(\"Failed to load client build manifest\")));\n}\nfunction getFilesForRoute(assetPrefix, route) {\n if (true) {\n const scriptUrl = assetPrefix + \"/_next/static/chunks/pages\" + encodeURI((0, _getAssetPathFromRoute).default(route, \".js\"));\n return Promise.resolve({\n scripts: [\n (0, _trustedTypes).__unsafeCreateTrustedScriptURL(scriptUrl)\n ],\n // Styles are handled by `style-loader` in development:\n css: []\n });\n }\n return getClientBuildManifest().then((manifest)=>{\n if (!(route in manifest)) {\n throw markAssetError(new Error(\"Failed to lookup route: \".concat(route)));\n }\n const allFiles = manifest[route].map((entry)=>assetPrefix + \"/_next/\" + encodeURI(entry));\n return {\n scripts: allFiles.filter((v)=>v.endsWith(\".js\")).map((v)=>(0, _trustedTypes).__unsafeCreateTrustedScriptURL(v)),\n css: allFiles.filter((v)=>v.endsWith(\".css\"))\n };\n });\n}\nfunction createRouteLoader(assetPrefix) {\n const entrypoints = new Map();\n const loadedScripts = new Map();\n const styleSheets = new Map();\n const routes = new Map();\n function maybeExecuteScript(src) {\n // With HMR we might need to \"reload\" scripts when they are\n // disposed and readded. Executing scripts twice has no functional\n // differences\n if (false) {} else {\n return appendScript(src);\n }\n }\n function fetchStyleSheet(href) {\n let prom = styleSheets.get(href);\n if (prom) {\n return prom;\n }\n styleSheets.set(href, prom = fetch(href).then((res)=>{\n if (!res.ok) {\n throw new Error(\"Failed to load stylesheet: \".concat(href));\n }\n return res.text().then((text)=>({\n href: href,\n content: text\n }));\n }).catch((err)=>{\n throw markAssetError(err);\n }));\n return prom;\n }\n return {\n whenEntrypoint (route) {\n return withFuture(route, entrypoints);\n },\n onEntrypoint (route, execute) {\n (execute ? Promise.resolve().then(()=>execute()).then((exports1)=>({\n component: exports1 && exports1.default || exports1,\n exports: exports1\n }), (err)=>({\n error: err\n })) : Promise.resolve(undefined)).then((input)=>{\n const old = entrypoints.get(route);\n if (old && \"resolve\" in old) {\n if (input) {\n entrypoints.set(route, input);\n old.resolve(input);\n }\n } else {\n if (input) {\n entrypoints.set(route, input);\n } else {\n entrypoints.delete(route);\n }\n // when this entrypoint has been resolved before\n // the route is outdated and we want to invalidate\n // this cache entry\n routes.delete(route);\n }\n });\n },\n loadRoute (route, prefetch) {\n return withFuture(route, routes, ()=>{\n let devBuildPromiseResolve;\n if (true) {\n devBuildPromise = new Promise((resolve)=>{\n devBuildPromiseResolve = resolve;\n });\n }\n return resolvePromiseWithTimeout(getFilesForRoute(assetPrefix, route).then((param)=>{\n let { scripts , css } = param;\n return Promise.all([\n entrypoints.has(route) ? [] : Promise.all(scripts.map(maybeExecuteScript)),\n Promise.all(css.map(fetchStyleSheet))\n ]);\n }).then((res)=>{\n return this.whenEntrypoint(route).then((entrypoint)=>({\n entrypoint,\n styles: res[1]\n }));\n }), MS_MAX_IDLE_DELAY, markAssetError(new Error(\"Route did not complete loading: \".concat(route)))).then((param)=>{\n let { entrypoint , styles } = param;\n const res = Object.assign({\n styles: styles\n }, entrypoint);\n return \"error\" in entrypoint ? entrypoint : res;\n }).catch((err)=>{\n if (prefetch) {\n // we don't want to cache errors during prefetch\n throw err;\n }\n return {\n error: err\n };\n }).finally(()=>{\n return devBuildPromiseResolve == null ? void 0 : devBuildPromiseResolve();\n });\n });\n },\n prefetch (route) {\n // https://github.com/GoogleChromeLabs/quicklink/blob/453a661fa1fa940e2d2e044452398e38c67a98fb/src/index.mjs#L115-L118\n // License: Apache 2.0\n let cn;\n if (cn = navigator.connection) {\n // Don't prefetch if using 2G or if Save-Data is enabled.\n if (cn.saveData || /2g/.test(cn.effectiveType)) return Promise.resolve();\n }\n return getFilesForRoute(assetPrefix, route).then((output)=>Promise.all(canPrefetch ? output.scripts.map((script)=>prefetchViaDom(script.toString(), \"script\")) : [])).then(()=>{\n (0, _requestIdleCallback).requestIdleCallback(()=>this.loadRoute(route, true).catch(()=>{}));\n }).catch(()=>{});\n }\n };\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=route-loader.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcm91dGUtbG9hZGVyLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTyxJQUFJO0FBQ2YsQ0FBQyxFQUFDO0FBQ0ZELHNCQUFzQixHQUFHRTtBQUN6QkYsb0JBQW9CLEdBQUdHO0FBQ3ZCSCw4QkFBOEIsR0FBR0k7QUFDakNKLHlCQUF5QixHQUFHSztBQUM1QixJQUFJQywyQkFBMkJDLHVKQUErRDtBQUM5RixJQUFJRSx5QkFBeUJILHlCQUF5QkMsbUJBQU9BLENBQUMsK0lBQXNEO0FBQ3BILElBQUlHLGdCQUFnQkgsbUJBQU9BLENBQUMsNkVBQWlCO0FBQzdDLElBQUlJLHVCQUF1QkosbUJBQU9BLENBQUMsNkZBQXlCO0FBQzVELHVFQUF1RTtBQUN2RSx5RUFBeUU7QUFDekUsMkVBQTJFO0FBQzNFLG9DQUFvQztBQUNwQyxNQUFNSyxvQkFBb0I7QUFDMUIsU0FBU0MsV0FBV0MsR0FBRyxFQUFFQyxHQUFHLEVBQUVDLFNBQVMsRUFBRTtJQUNyQyxJQUFJQyxRQUFRRixJQUFJRyxHQUFHLENBQUNKO0lBQ3BCLElBQUlHLE9BQU87UUFDUCxJQUFJLFlBQVlBLE9BQU87WUFDbkIsT0FBT0EsTUFBTUUsTUFBTTtRQUN2QixDQUFDO1FBQ0QsT0FBT0MsUUFBUUMsT0FBTyxDQUFDSjtJQUMzQixDQUFDO0lBQ0QsSUFBSUs7SUFDSixNQUFNQyxPQUFPLElBQUlILFFBQVEsQ0FBQ0MsVUFBVTtRQUNoQ0MsV0FBV0Q7SUFDZjtJQUNBTixJQUFJUyxHQUFHLENBQUNWLEtBQUtHLFFBQVE7UUFDakJJLFNBQVNDO1FBQ1RILFFBQVFJO0lBQ1o7SUFDQSxPQUFPUCxZQUFZQSxZQUFXLHdDQUF3QztLQUNyRVMsSUFBSSxDQUFDLENBQUN4QixRQUFTcUIsQ0FBQUEsU0FBU3JCLFFBQVFBLEtBQUssR0FBR3lCLEtBQUssQ0FBQyxDQUFDQyxNQUFNO1FBQ2xEWixJQUFJYSxNQUFNLENB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LHNIQUFzSDtZQUN0SCxzQkFBc0I7WUFDdEIsSUFBSXlDO1lBQ0osSUFBSUEsS0FBS0MsVUFBVUMsVUFBVSxFQUFFO2dCQUMzQix5REFBeUQ7Z0JBQ3pELElBQUlGLEdBQUdHLFFBQVEsSUFBSSxLQUFLQyxJQUFJLENBQUNKLEdBQUdLLGFBQWEsR0FBRyxPQUFPdkcsUUFBUUMsT0FBTztZQUMxRSxDQUFDO1lBQ0QsT0FBT3NELGlCQUFpQkMsYUFBYUMsT0FBT3BELElBQUksQ0FBQyxDQUFDbUcsU0FBU3hHLFFBQVE0RixHQUFHLENBQUN2RSxjQUFjbUYsT0FBTzVDLE9BQU8sQ0FBQ2pFLEdBQUcsQ0FBQyxDQUFDNkMsU0FBU2xCLGVBQWVrQixPQUFPa0MsUUFBUSxJQUFJLGFBQWEsRUFBRSxHQUFHckUsSUFBSSxDQUFDLElBQUk7Z0JBQzFLLElBQUdkLG9CQUFvQixFQUFFeUQsbUJBQW1CLENBQUMsSUFBSSxJQUFJLENBQUN5QyxTQUFTLENBQUNoQyxPQUFPLElBQUksRUFBRW5ELEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDN0YsR0FBR0EsS0FBSyxDQUNSLElBQUksQ0FBQztRQUNUO0lBQ0o7QUFDSjtBQUVBLElBQUksQ0FBQyxPQUFPMUIsUUFBUVEsT0FBTyxLQUFLLGNBQWUsT0FBT1IsUUFBUVEsT0FBTyxLQUFLLFlBQVlSLFFBQVFRLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT1IsUUFBUVEsT0FBTyxDQUFDcUgsVUFBVSxLQUFLLGFBQWE7SUFDcksvSCxPQUFPQyxjQUFjLENBQUNDLFFBQVFRLE9BQU8sRUFBRSxjQUFjO1FBQUVQLE9BQU8sSUFBSTtJQUFDO0lBQ25FSCxPQUFPc0gsTUFBTSxDQUFDcEgsUUFBUVEsT0FBTyxFQUFFUjtJQUMvQjhILE9BQU85SCxPQUFPLEdBQUdBLFFBQVFRLE9BQU87QUFDbEMsQ0FBQyxDQUVELHdDQUF3QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcm91dGUtbG9hZGVyLmpzPzdkOTQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLm1hcmtBc3NldEVycm9yID0gbWFya0Fzc2V0RXJyb3I7XG5leHBvcnRzLmlzQXNzZXRFcnJvciA9IGlzQXNzZXRFcnJvcjtcbmV4cG9ydHMuZ2V0Q2xpZW50QnVpbGRNYW5pZmVzdCA9IGdldENsaWVudEJ1aWxkTWFuaWZlc3Q7XG5leHBvcnRzLmNyZWF0ZVJvdXRlTG9hZGVyID0gY3JlYXRlUm91dGVMb2FkZXI7XG52YXIgX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0ID0gcmVxdWlyZShcIkBzd2MvaGVscGVycy9saWIvX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0LmpzXCIpLmRlZmF1bHQ7XG52YXIgX2dldEFzc2V0UGF0aEZyb21Sb3V0ZSA9IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChyZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvZ2V0LWFzc2V0LXBhdGgtZnJvbS1yb3V0ZVwiKSk7XG52YXIgX3RydXN0ZWRUeXBlcyA9IHJlcXVpcmUoXCIuL3RydXN0ZWQtdHlwZXNcIik7XG52YXIgX3JlcXVlc3RJZGxlQ2FsbGJhY2sgPSByZXF1aXJlKFwiLi9yZXF1ZXN0LWlkbGUtY2FsbGJhY2tcIik7XG4vLyAzLjhzIHdhcyBhcmJpdHJhcmlseSBjaG9zZW4gYXMgaXQncyB3aGF0IGh0dHBzOi8vd2ViLmRldi9pbnRlcmFjdGl2ZVxuLy8gY29uc2lkZXJzIGFzIFwiR29vZFwiIHRpbWUtdG8taW50ZXJhY3RpdmUuIFdlIG11c3QgYXNzdW1lIHNvbWV0aGluZyB3ZW50XG4vLyB3cm9uZyBiZXlvbmQgdGhpcyBwb2ludCwgYW5kIHRoZW4gZmFsbC1iYWNrIHRvIGEgZnVsbCBwYWdlIHRyYW5zaXRpb24gdG9cbi8vIHNob3cgdGhlIHVzZXIgc29tZXRoaW5nIG9mIHZhbHVlLlxuY29uc3QgTVNfTUFYX0lETEVfREVMQVkgPSAzODAwO1xuZnVuY3Rpb24gd2l0aEZ1dHVyZShrZXksIG1hcCwgZ2VuZXJhdG9yKSB7XG4gICAgbGV0IGVudHJ5ID0gbWFwLmdldChrZXkpO1xuICAgIGlmIChlbnRyeSkge1xuICAgICAgICBpZiAoJ2Z1dHVyZScgaW4gZW50cnkpIHtcbiAgICAgICAgICAgIHJldHVybiBlbnRyeS5mdXR1cmU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShlbnRyeSk7XG4gICAgfVxuICAgIGxldCByZXNvbHZlcjtcbiAgICBjb25zdCBwcm9tID0gbmV3IFByb21pc2UoKHJlc29sdmUpPT57XG4gICAgICAgIHJlc29sdmVyID0gcmVzb2x2ZTtcbiAgICB9KTtcbiAgICBtYXAuc2V0KGtleSwgZW50cnkgPSB7XG4gICAgICAgIHJlc29sdmU6IHJlc29sdmVyLFxuICAgICAgICBmdXR1cmU6IHByb21cbiAgICB9KTtcbiAgICByZXR1cm4gZ2VuZXJhdG9yID8gZ2VuZXJhdG9yKCkvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VxdWVuY2VzXG4gICAgLnRoZW4oKHZhbHVlKT0+KHJlc29sdmVyKHZhbHVlKSwgdmFsdWUpKS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICBtYXAuZGVsZXRlKGtleSk7XG4gICAgICAgIHRocm93IGVycjtcbiAgICB9KSA6IHByb207XG59XG5jb25zdCBBU1NFVF9MT0FEX0VSUk9SID0gU3ltYm9sKCdBU1NFVF9MT0FEX0VSUk9SJyk7XG5mdW5jdGlvbiBtYXJrQXNzZXRFcnJvcihlcnIpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGVyciwgQVNTRVRfTE9BRF9FUlJPUiwge30pO1xufVxuZnVuY3Rpb24gaXNBc3NldEVycm9yKGVycikge1xuICAgIHJldHVybiBlcnIgJiYgQVNTRVRfTE9BRF9FUlJPUiBpbiBlcnI7XG59XG5mdW5jdGlvbiBoYXNQcmVmZXRjaChsaW5rKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTtcbiAgICAgICAgcmV0dXJuKC8vIGRldGVjdCBJRTExIHNpbmNlIGl0IHN1cHBvcnRzIHByZWZldGNoIGJ1dCBpc24ndCBkZXRlY3RlZFxuICAgICAgICAvLyB3aXRoIHJlbExpc3Quc3VwcG9ydFxuICAgICAgICAoISF3aW5kb3cuTVNJbnB1dE1ldGhvZENvbnRleHQgJiYgISFkb2N1bWVudC5kb2N1bWVudE1vZGUpIHx8IGxpbmsucmVsTGlzdC5zdXBwb3J0cygncHJlZmV0Y2gnKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuY29uc3QgY2FuUHJlZmV0Y2ggPSBoYXNQcmVmZXRjaCgpO1xuZnVuY3Rpb24gcHJlZmV0Y2hWaWFEb20oaHJlZiwgYXMsIGxpbmspIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk9PntcbiAgICAgICAgY29uc3Qgc2VsZWN0b3IgPSBgXG4gICAgICBsaW5rW3JlbD1cInByZWZldGNoXCJdW2hyZWZePVwiJHtocmVmfVwiXSxcbiAgICAgIGxpbmtbcmVsPVwicHJlbG9hZFwiXVtocmVmXj1cIiR7aHJlZn1cIl0sXG4gICAgICBzY3JpcHRbc3JjXj1cIiR7aHJlZn1cIl1gO1xuICAgICAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3RvcikpIHtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgIH1cbiAgICAgICAgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTtcbiAgICAgICAgLy8gVGhlIG9yZGVyIG9mIHByb3BlcnR5IGFzc2lnbm1lbnQgaGVyZSBpcyBpbnRlbnRpb25hbDpcbiAgICAgICAgaWYgKGFzKSBsaW5rLmFzID0gYXM7XG4gICAgICAgIGxpbmsucmVsID0gYHByZWZldGNoYDtcbiAgICAgICAgbGluay5jcm9zc09yaWdpbiA9IHByb2Nlc3MuZW52Ll9fTkVYVF9DUk9TU19PUklHSU47XG4gICAgICAgIGxpbmsub25sb2FkID0gcmVzb2x2ZTtcbiAgICAgICAgbGluay5vbmVycm9yID0gKCk9PnJlamVjdChtYXJrQXNzZXRFcnJvcihuZXcgRXJyb3IoYEZhaWxlZCB0byBwcmVmZXRjaDogJHtocmVmfWApKSk7XG4gICAgICAgIC8vIGBocmVmYCBzaG91bGQgYWx3YXlzIGJlIGxhc3Q6XG4gICAgICAgIGxpbmsuaHJlZiA9IGhyZWY7XG4gICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBhcHBlbmRTY3JpcHQoc3JjLCBzY3JpcHQpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk9PntcbiAgICAgICAgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICAgIC8vIFRoZSBvcmRlciBvZiBwcm9wZXJ0eSBhc3NpZ25tZW50IGhlcmUgaXMgaW50ZW50aW9uYWwuXG4gICAgICAgIC8vIDEuIFNldHVwIHN1Y2Nlc3MvZmFpbHVyZSBob29rcyBpbiBjYXNlIHRoZSBicm93c2VyIHN5bmNocm9ub3VzbHlcbiAgICAgICAgLy8gICAgZXhlY3V0ZXMgd2hlbiBgc3JjYCBpcyBzZXQuXG4gICAgICAgIHNjcmlwdC5vbmxvYWQgPSByZXNvbHZlO1xuICAgICAgICBzY3JpcHQub25lcnJvciA9ICgpPT5yZWplY3QobWFya0Fzc2V0RXJyb3IobmV3IEVycm9yKGBGYWlsZWQgdG8gbG9hZCBzY3JpcHQ6ICR7c3JjfWApKSk7XG4gICAgICAgIC8vIDIuIENvbmZpZ3VyZSB0aGUgY3Jvc3Mtb3JpZ2luIGF0dHJpYnV0ZSBiZWZvcmUgc2V0dGluZyBgc3JjYCBpbiBjYXNlIHRoZVxuICAgICAgICAvLyAgICBicm93c2VyIGJlZ2lucyB0byBmZXRjaC5cbiAgICAgICAgc2NyaXB0LmNyb3NzT3JpZ2luID0gcHJvY2Vzcy5lbnYuX19ORVhUX0NST1NTX09SSUdJTjtcbiAgICAgICAgLy8gMy4gRmluYWxseSwgc2V0IHRoZSBzb3VyY2UgYW5kIGluamVjdCBpbnRvIHRoZSBET00gaW4gY2FzZSB0aGUgY2hpbGRcbiAgICAgICAgLy8gICAgbXVzdCBiZSBhcHBlbmRlZCBmb3IgZmV0Y2hpbmcgdG8gc3RhcnQuXG4gICAgICAgIHNjcmlwdC5zcmMgPSBzcmM7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgICB9KTtcbn1cbi8vIFdlIHdhaXQgZm9yIHBhZ2VzIHRvIGJlIGJ1aWx0IGluIGRldiBiZWZvcmUgd2Ugc3RhcnQgdGhlIHJvdXRlIHRyYW5zaXRpb25cbi8vIHRpbWVvdXQgdG8gcHJldmVudCBhbiB1bi1uZWNlc3NhcnkgaGFyZCBuYXZpZ2F0aW9uIGluIGRldmVsb3BtZW50LlxubGV0IGRldkJ1aWxkUHJvbWlzZTtcbi8vIFJlc29sdmUgYSBwcm9taXNlIHRoYXQgdGltZXMgb3V0IGFmdGVyIGdpdmVuIGFtb3VudCBvZiBtaWxsaXNlY29uZHMuXG5mdW5jdGlvbiByZXNvbHZlUHJvbWlzZVdpdGhUaW1lb3V0KHAsIG1zLCBlcnIpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk9PntcbiAgICAgICAgbGV0IGNhbmNlbGxlZCA9IGZhbHNlO1xuICAgICAgICBwLnRoZW4oKHIpPT57XG4gICAgICAgICAgICAvLyBSZXNvbHZlZCwgY2FuY2VsIHRoZSB0aW1lb3V0XG4gICAgICAgICAgICBjYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmVzb2x2ZShyKTtcbiAgICAgICAgfSkuY2F0Y2gocmVqZWN0KTtcbiAgICAgICAgLy8gV2Ugd3JhcCB0aGVzZSBjaGVja3Mgc2VwYXJhdGVseSBmb3IgYmV0dGVyIGRlYWQtY29kZSBlbGltaW5hdGlvbiBpblxuICAgICAgICAvLyBwcm9kdWN0aW9uIGJ1bmRsZXMuXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgKGRldkJ1aWxkUHJvbWlzZSB8fCBQcm9taXNlLnJlc29sdmUoKSkudGhlbigoKT0+e1xuICAgICAgICAgICAgICAgICgwLCBfcmVxdWVzdElkbGVDYWxsYmFjaykucmVxdWVzdElkbGVDYWxsYmFjaygoKT0+c2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjYW5jZWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgbXMpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgKDAsIF9yZXF1ZXN0SWRsZUNhbGxiYWNrKS5yZXF1ZXN0SWRsZUNhbGxiYWNrKCgpPT5zZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICAgICAgICAgIGlmICghY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIG1zKSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGdldENsaWVudEJ1aWxkTWFuaWZlc3QoKSB7XG4gICAgaWYgKHNlbGYuX19CVUlMRF9NQU5JRkVTVCkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHNlbGYuX19CVUlMRF9NQU5JRkVTVCk7XG4gICAgfVxuICAgIGNvbnN0IG9uQnVpbGRNYW5pZmVzdCA9IG5ldyBQcm9taXNlKChyZXNvbHZlKT0+e1xuICAgICAgICAvLyBNYW5kYXRvcnkgYmVjYXVzZSB0aGlzIGlzIG5vdCBjb25jdXJyZW50IHNhZmU6XG4gICAgICAgIGNvbnN0IGNiID0gc2VsZi5fX0JVSUxEX01BTklGRVNUX0NCO1xuICAgICAgICBzZWxmLl9fQlVJTERfTUFOSUZFU1RfQ0IgPSAoKT0+e1xuICAgICAgICAgICAgcmVzb2x2ZShzZWxmLl9fQlVJTERfTUFOSUZFU1QpO1xuICAgICAgICAgICAgY2IgJiYgY2IoKTtcbiAgICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzb2x2ZVByb21pc2VXaXRoVGltZW91dChvbkJ1aWxkTWFuaWZlc3QsIE1TX01BWF9JRExFX0RFTEFZLCBtYXJrQXNzZXRFcnJvcihuZXcgRXJyb3IoJ0ZhaWxlZCB0byBsb2FkIGNsaWVudCBidWlsZCBtYW5pZmVzdCcpKSk7XG59XG5mdW5jdGlvbiBnZXRGaWxlc0ZvclJvdXRlKGFzc2V0UHJlZml4LCByb3V0ZSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICBjb25zdCBzY3JpcHRVcmwgPSBhc3NldFByZWZpeCArICcvX25leHQvc3RhdGljL2NodW5rcy9wYWdlcycgKyBlbmNvZGVVUkkoKDAsIF9nZXRBc3NldFBhdGhGcm9tUm91dGUpLmRlZmF1bHQocm91dGUsICcuanMnKSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICAgICAgc2NyaXB0czogW1xuICAgICAgICAgICAgICAgICgwLCBfdHJ1c3RlZFR5cGVzKS5fX3Vuc2FmZUNyZWF0ZVRydXN0ZWRTY3JpcHRVUkwoc2NyaXB0VXJsKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8vIFN0eWxlcyBhcmUgaGFuZGxlZCBieSBgc3R5bGUtbG9hZGVyYCBpbiBkZXZlbG9wbWVudDpcbiAgICAgICAgICAgIGNzczogW11cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBnZXRDbGllbnRCdWlsZE1hbmlmZXN0KCkudGhlbigobWFuaWZlc3QpPT57XG4gICAgICAgIGlmICghKHJvdXRlIGluIG1hbmlmZXN0KSkge1xuICAgICAgICAgICAgdGhyb3cgbWFya0Fzc2V0RXJyb3IobmV3IEVycm9yKGBGYWlsZWQgdG8gbG9va3VwIHJvdXRlOiAke3JvdXRlfWApKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbGxGaWxlcyA9IG1hbmlmZXN0W3JvdXRlXS5tYXAoKGVudHJ5KT0+YXNzZXRQcmVmaXggKyAnL19uZXh0LycgKyBlbmNvZGVVUkkoZW50cnkpKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNjcmlwdHM6IGFsbEZpbGVzLmZpbHRlcigodik9PnYuZW5kc1dpdGgoJy5qcycpKS5tYXAoKHYpPT4oMCwgX3RydXN0ZWRUeXBlcykuX191bnNhZmVDcmVhdGVUcnVzdGVkU2NyaXB0VVJMKHYpKSxcbiAgICAgICAgICAgIGNzczogYWxsRmlsZXMuZmlsdGVyKCh2KT0+di5lbmRzV2l0aCgnLmNzcycpKVxuICAgICAgICB9O1xuICAgIH0pO1xufVxuZnVuY3Rpb24gY3JlYXRlUm91dGVMb2FkZXIoYXNzZXRQcmVmaXgpIHtcbiAgICBjb25zdCBlbnRyeXBvaW50cyA9IG5ldyBNYXAoKTtcbiAgICBjb25zdCBsb2FkZWRTY3JpcHRzID0gbmV3IE1hcCgpO1xuICAgIGNvbnN0IHN0eWxlU2hlZXRzID0gbmV3IE1hcCgpO1xuICAgIGNvbnN0IHJvdXRlcyA9IG5ldyBNYXAoKTtcbiAgICBmdW5jdGlvbiBtYXliZUV4ZWN1dGVTY3JpcHQoc3JjKSB7XG4gICAgICAgIC8vIFdpdGggSE1SIHdlIG1pZ2h0IG5lZWQgdG8gXCJyZWxvYWRcIiBzY3JpcHRzIHdoZW4gdGhleSBhcmVcbiAgICAgICAgLy8gZGlzcG9zZWQgYW5kIHJlYWRkZWQuIEV4ZWN1dGluZyBzY3JpcHRzIHR3aWNlIGhhcyBubyBmdW5jdGlvbmFsXG4gICAgICAgIC8vIGRpZmZlcmVuY2VzXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgbGV0IHByb20gPSBsb2FkZWRTY3JpcHRzLmdldChzcmMudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICBpZiAocHJvbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gU2tpcCBleGVjdXRpbmcgc2NyaXB0IGlmIGl0J3MgYWxyZWFkeSBpbiB0aGUgRE9NOlxuICAgICAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYHNjcmlwdFtzcmNePVwiJHtzcmN9XCJdYCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsb2FkZWRTY3JpcHRzLnNldChzcmMudG9TdHJpbmcoKSwgcHJvbSA9IGFwcGVuZFNjcmlwdChzcmMpKTtcbiAgICAgICAgICAgIHJldHVybiBwcm9tO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFNjcmlwdChzcmMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZldGNoU3R5bGVTaGVldChocmVmKSB7XG4gICAgICAgIGxldCBwcm9tID0gc3R5bGVTaGVldHMuZ2V0KGhyZWYpO1xuICAgICAgICBpZiAocHJvbSkge1xuICAgICAgICAgICAgcmV0dXJuIHByb207XG4gICAgICAgIH1cbiAgICAgICAgc3R5bGVTaGVldHMuc2V0KGhyZWYsIHByb20gPSBmZXRjaChocmVmKS50aGVuKChyZXMpPT57XG4gICAgICAgICAgICBpZiAoIXJlcy5vaykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGxvYWQgc3R5bGVzaGVldDogJHtocmVmfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlcy50ZXh0KCkudGhlbigodGV4dCk9Pih7XG4gICAgICAgICAgICAgICAgICAgIGhyZWY6IGhyZWYsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHRleHRcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgIH0pLmNhdGNoKChlcnIpPT57XG4gICAgICAgICAgICB0aHJvdyBtYXJrQXNzZXRFcnJvcihlcnIpO1xuICAgICAgICB9KSk7XG4gICAgICAgIHJldHVybiBwcm9tO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICB3aGVuRW50cnlwb2ludCAocm91dGUpIHtcbiAgICAgICAgICAgIHJldHVybiB3aXRoRnV0dXJlKHJvdXRlLCBlbnRyeXBvaW50cyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uRW50cnlwb2ludCAocm91dGUsIGV4ZWN1dGUpIHtcbiAgICAgICAgICAgIChleGVjdXRlID8gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+ZXhlY3V0ZSgpKS50aGVuKChleHBvcnRzKT0+KHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiBleHBvcnRzICYmIGV4cG9ydHMuZGVmYXVsdCB8fCBleHBvcnRzLFxuICAgICAgICAgICAgICAgICAgICBleHBvcnRzOiBleHBvcnRzXG4gICAgICAgICAgICAgICAgfSksIChlcnIpPT4oe1xuICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyXG4gICAgICAgICAgICAgICAgfSkpIDogUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCkpLnRoZW4oKGlucHV0KT0+e1xuICAgICAgICAgICAgICAgIGNvbnN0IG9sZCA9IGVudHJ5cG9pbnRzLmdldChyb3V0ZSk7XG4gICAgICAgICAgICAgICAgaWYgKG9sZCAmJiAncmVzb2x2ZScgaW4gb2xkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludHMuc2V0KHJvdXRlLCBpbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbGQucmVzb2x2ZShpbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5cG9pbnRzLnNldChyb3V0ZSwgaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludHMuZGVsZXRlKHJvdXRlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHRoaXMgZW50cnlwb2ludCBoYXMgYmVlbiByZXNvbHZlZCBiZWZvcmVcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHJvdXRlIGlzIG91dGRhdGVkIGFuZCB3ZSB3YW50IHRvIGludmFsaWRhdGVcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBjYWNoZSBlbnRyeVxuICAgICAgICAgICAgICAgICAgICByb3V0ZXMuZGVsZXRlKHJvdXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgbG9hZFJvdXRlIChyb3V0ZSwgcHJlZmV0Y2gpIHtcbiAgICAgICAgICAgIHJldHVybiB3aXRoRnV0dXJlKHJvdXRlLCByb3V0ZXMsICgpPT57XG4gICAgICAgICAgICAgICAgbGV0IGRldkJ1aWxkUHJvbWlzZVJlc29sdmU7XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGRldkJ1aWxkUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgZGV2QnVpbGRQcm9taXNlUmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZVByb21pc2VXaXRoVGltZW91dChnZXRGaWxlc0ZvclJvdXRlKGFzc2V0UHJlZml4LCByb3V0ZSkudGhlbigoeyBzY3JpcHRzICwgY3NzICB9KT0+e1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludHMuaGFzKHJvdXRlKSA/IFtdIDogUHJvbWlzZS5hbGwoc2NyaXB0cy5tYXAobWF5YmVFeGVjdXRlU2NyaXB0KSksXG4gICAgICAgICAgICAgICAgICAgICAgICBQcm9taXNlLmFsbChjc3MubWFwKGZldGNoU3R5bGVTaGVldCkpLCBcbiAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgfSkudGhlbigocmVzKT0+e1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53aGVuRW50cnlwb2ludChyb3V0ZSkudGhlbigoZW50cnlwb2ludCk9Pih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM6IHJlc1sxXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIH0pLCBNU19NQVhfSURMRV9ERUxBWSwgbWFya0Fzc2V0RXJyb3IobmV3IEVycm9yKGBSb3V0ZSBkaWQgbm90IGNvbXBsZXRlIGxvYWRpbmc6ICR7cm91dGV9YCkpKS50aGVuKCh7IGVudHJ5cG9pbnQgLCBzdHlsZXMgIH0pPT57XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzOiBzdHlsZXNcbiAgICAgICAgICAgICAgICAgICAgfSwgZW50cnlwb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnZXJyb3InIGluIGVudHJ5cG9pbnQgPyBlbnRyeXBvaW50IDogcmVzO1xuICAgICAgICAgICAgICAgIH0pLmNhdGNoKChlcnIpPT57XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcmVmZXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0byBjYWNoZSBlcnJvcnMgZHVyaW5nIHByZWZldGNoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnJcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KS5maW5hbGx5KCgpPT57XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXZCdWlsZFByb21pc2VSZXNvbHZlID09IG51bGwgPyB2b2lkIDAgOiBkZXZCdWlsZFByb21pc2VSZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcHJlZmV0Y2ggKHJvdXRlKSB7XG4gICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vR29vZ2xlQ2hyb21lTGFicy9xdWlja2xpbmsvYmxvYi80NTNhNjYxZmExZmE5NDBlMmQyZTA0NDQ1MjM5OGUzOGM2N2E5OGZiL3NyYy9pbmRleC5tanMjTDExNS1MMTE4XG4gICAgICAgICAgICAvLyBMaWNlbnNlOiBBcGFjaGUgMi4wXG4gICAgICAgICAgICBsZXQgY247XG4gICAgICAgICAgICBpZiAoY24gPSBuYXZpZ2F0b3IuY29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgIC8vIERvbid0IHByZWZldGNoIGlmIHVzaW5nIDJHIG9yIGlmIFNhdmUtRGF0YSBpcyBlbmFibGVkLlxuICAgICAgICAgICAgICAgIGlmIChjbi5zYXZlRGF0YSB8fCAvMmcvLnRlc3QoY24uZWZmZWN0aXZlVHlwZSkpIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBnZXRGaWxlc0ZvclJvdXRlKGFzc2V0UHJlZml4LCByb3V0ZSkudGhlbigob3V0cHV0KT0+UHJvbWlzZS5hbGwoY2FuUHJlZmV0Y2ggPyBvdXRwdXQuc2NyaXB0cy5tYXAoKHNjcmlwdCk9PnByZWZldGNoVmlhRG9tKHNjcmlwdC50b1N0cmluZygpLCAnc2NyaXB0JykpIDogW10pKS50aGVuKCgpPT57XG4gICAgICAgICAgICAgICAgKDAsIF9yZXF1ZXN0SWRsZUNhbGxiYWNrKS5yZXF1ZXN0SWRsZUNhbGxiYWNrKCgpPT50aGlzLmxvYWRSb3V0ZShyb3V0ZSwgdHJ1ZSkuY2F0Y2goKCk9Pnt9KSk7XG4gICAgICAgICAgICB9KS5jYXRjaCgvLyBzd2FsbG93IHByZWZldGNoIGVycm9yc1xuICAgICAgICAgICAgKCk9Pnt9KTtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJvdXRlLWxvYWRlci5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJtYXJrQXNzZXRFcnJvciIsImlzQXNzZXRFcnJvciIsImdldENsaWVudEJ1aWxkTWFuaWZlc3QiLCJjcmVhdGVSb3V0ZUxvYWRlciIsIl9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCIsInJlcXVpcmUiLCJkZWZhdWx0IiwiX2dldEFzc2V0UGF0aEZyb21Sb3V0ZSIsIl90cnVzdGVkVHlwZXMiLCJfcmVxdWVzdElkbGVDYWxsYmFjayIsIk1TX01BWF9JRExFX0RFTEFZIiwid2l0aEZ1dHVyZSIsImtleSIsIm1hcCIsImdlbmVyYXRvciIsImVudHJ5IiwiZ2V0IiwiZnV0dXJlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZXNvbHZlciIsInByb20iLCJzZXQiLCJ0aGVuIiwiY2F0Y2giLCJlcnIiLCJkZWxldGUiLCJBU1NFVF9MT0FEX0VSUk9SIiwiU3ltYm9sIiwiaGFzUHJlZmV0Y2giLCJsaW5rIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwid2luZG93IiwiTVNJbnB1dE1ldGhvZENvbnRleHQiLCJkb2N1bWVudE1vZGUiLCJyZWxMaXN0Iiwic3VwcG9ydHMiLCJlIiwiY2FuUHJlZmV0Y2giLCJwcmVmZXRjaFZpYURvbSIsImhyZWYiLCJhcyIsInJlamVjdCIsInNlbGVjdG9yIiwicXVlcnlTZWxlY3RvciIsInJlbCIsImNyb3NzT3JpZ2luIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9DUk9TU19PUklHSU4iLCJvbmxvYWQiLCJvbmVycm9yIiwiRXJyb3IiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJhcHBlbmRTY3JpcHQiLCJzcmMiLCJzY3JpcHQiLCJib2R5IiwiZGV2QnVpbGRQcm9taXNlIiwicmVzb2x2ZVByb21pc2VXaXRoVGltZW91dCIsInAiLCJtcyIsImNhbmNlbGxlZCIsInIiLCJyZXF1ZXN0SWRsZUNhbGxiYWNrIiwic2V0VGltZW91dCIsInNlbGYiLCJfX0JVSUxEX01BTklGRVNUIiwib25CdWlsZE1hbmlmZXN0IiwiY2IiLCJfX0JVSUxEX01BTklGRVNUX0NCIiwiZ2V0RmlsZXNGb3JSb3V0ZSIsImFzc2V0UHJlZml4Iiwicm91dGUiLCJzY3JpcHRVcmwiLCJlbmNvZGVVUkkiLCJzY3JpcHRzIiwiX191bnNhZmVDcmVhdGVUcnVzdGVkU2NyaXB0VVJMIiwiY3NzIiwibWFuaWZlc3QiLCJhbGxGaWxlcyIsImZpbHRlciIsInYiLCJlbmRzV2l0aCIsImVudHJ5cG9pbnRzIiwiTWFwIiwibG9hZGVkU2NyaXB0cyIsInN0eWxlU2hlZXRzIiwicm91dGVzIiwibWF5YmVFeGVjdXRlU2NyaXB0IiwidG9TdHJpbmciLCJmZXRjaFN0eWxlU2hlZXQiLCJmZXRjaCIsInJlcyIsIm9rIiwidGV4dCIsImNvbnRlbnQiLCJ3aGVuRW50cnlwb2ludCIsIm9uRW50cnlwb2ludCIsImV4ZWN1dGUiLCJjb21wb25lbnQiLCJlcnJvciIsInVuZGVmaW5lZCIsImlucHV0Iiwib2xkIiwibG9hZFJvdXRlIiwicHJlZmV0Y2giLCJkZXZCdWlsZFByb21pc2VSZXNvbHZlIiwiYWxsIiwiaGFzIiwiZW50cnlwb2ludCIsInN0eWxlcyIsImFzc2lnbiIsImZpbmFsbHkiLCJjbiIsIm5hdmlnYXRvciIsImNvbm5lY3Rpb24iLCJzYXZlRGF0YSIsInRlc3QiLCJlZmZlY3RpdmVUeXBlIiwib3V0cHV0IiwiX19lc01vZHVsZSIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/client/route-loader.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/router.js": /*!*****************************************************!*\ !*** ../../node_modules/next/dist/client/router.js ***! \*****************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nvar _s = $RefreshSig$();\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"Router\", ({\n enumerable: true,\n get: function() {\n return _router.default;\n }\n}));\nObject.defineProperty(exports, \"withRouter\", ({\n enumerable: true,\n get: function() {\n return _withRouter.default;\n }\n}));\nexports.useRouter = useRouter;\nexports.createRouter = createRouter;\nexports.makePublicRouterInstance = makePublicRouterInstance;\nexports[\"default\"] = void 0;\nvar _interop_require_default = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _react = _interop_require_default(__webpack_require__(/*! react */ \"../../node_modules/react/index.js\"));\nvar _router = _interop_require_default(__webpack_require__(/*! ../shared/lib/router/router */ \"../../node_modules/next/dist/shared/lib/router/router.js\"));\nvar _routerContext = __webpack_require__(/*! ../shared/lib/router-context */ \"../../node_modules/next/dist/shared/lib/router-context.js\");\nvar _isError = _interop_require_default(__webpack_require__(/*! ../lib/is-error */ \"../../node_modules/next/dist/lib/is-error.js\"));\nvar _withRouter = _interop_require_default(__webpack_require__(/*! ./with-router */ \"../../node_modules/next/dist/client/with-router.js\"));\nconst singletonRouter = {\n router: null,\n readyCallbacks: [],\n ready (cb) {\n if (this.router) return cb();\n if (true) {\n this.readyCallbacks.push(cb);\n }\n }\n};\n// Create public properties and methods of the router in the singletonRouter\nconst urlPropertyFields = [\n \"pathname\",\n \"route\",\n \"query\",\n \"asPath\",\n \"components\",\n \"isFallback\",\n \"basePath\",\n \"locale\",\n \"locales\",\n \"defaultLocale\",\n \"isReady\",\n \"isPreview\",\n \"isLocaleDomain\",\n \"domainLocales\"\n];\nconst routerEvents = [\n \"routeChangeStart\",\n \"beforeHistoryChange\",\n \"routeChangeComplete\",\n \"routeChangeError\",\n \"hashChangeStart\",\n \"hashChangeComplete\"\n];\nconst coreMethodFields = [\n \"push\",\n \"replace\",\n \"reload\",\n \"back\",\n \"prefetch\",\n \"beforePopState\"\n];\n// Events is a static property on the router, the router doesn't have to be initialized to use it\nObject.defineProperty(singletonRouter, \"events\", {\n get () {\n return _router.default.events;\n }\n});\nfunction getRouter() {\n if (!singletonRouter.router) {\n const message = \"No router instance found.\\n\" + 'You should only use \"next/router\" on the client side of your app.\\n';\n throw new Error(message);\n }\n return singletonRouter.router;\n}\nurlPropertyFields.forEach((field)=>{\n // Here we need to use Object.defineProperty because we need to return\n // the property assigned to the actual router\n // The value might get changed as we change routes and this is the\n // proper way to access it\n Object.defineProperty(singletonRouter, field, {\n get () {\n const router = getRouter();\n return router[field];\n }\n });\n});\ncoreMethodFields.forEach((field)=>{\n singletonRouter[field] = function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n const router = getRouter();\n return router[field](...args);\n };\n});\nrouterEvents.forEach((event)=>{\n singletonRouter.ready(()=>{\n _router.default.events.on(event, function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n const eventField = \"on\".concat(event.charAt(0).toUpperCase()).concat(event.substring(1));\n const _singletonRouter = singletonRouter;\n if (_singletonRouter[eventField]) {\n try {\n _singletonRouter[eventField](...args);\n } catch (err) {\n console.error(\"Error when running the Router event: \".concat(eventField));\n console.error((0, _isError).default(err) ? \"\".concat(err.message, \"\\n\").concat(err.stack) : err + \"\");\n }\n }\n });\n });\n});\nvar _default = singletonRouter;\nexports[\"default\"] = _default;\nfunction useRouter() {\n _s();\n const router = _react.default.useContext(_routerContext.RouterContext);\n if (!router) {\n throw new Error(\"NextRouter was not mounted. https://nextjs.org/docs/messages/next-router-not-mounted\");\n }\n return router;\n}\n_s(useRouter, \"rbAhEc3dLGnVlsHWaSDsgP4MZS0=\");\nfunction createRouter() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n singletonRouter.router = new _router.default(...args);\n singletonRouter.readyCallbacks.forEach((cb)=>cb());\n singletonRouter.readyCallbacks = [];\n return singletonRouter.router;\n}\nfunction makePublicRouterInstance(router) {\n const scopedRouter = router;\n const instance = {};\n for (const property of urlPropertyFields){\n if (typeof scopedRouter[property] === \"object\") {\n instance[property] = Object.assign(Array.isArray(scopedRouter[property]) ? [] : {}, scopedRouter[property]) // makes sure query is not stateful\n ;\n continue;\n }\n instance[property] = scopedRouter[property];\n }\n // Events is a static property on the router, the router doesn't have to be initialized to use it\n instance.events = _router.default.events;\n coreMethodFields.forEach((field)=>{\n instance[field] = function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n return scopedRouter[field](...args);\n };\n });\n return instance;\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=router.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcm91dGVyLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU8sSUFBSTtBQUNmLENBQUMsRUFBQztBQUNGSCwwQ0FBeUM7SUFDckNJLFlBQVksSUFBSTtJQUNoQkMsS0FBSyxXQUFXO1FBQ1osT0FBT0MsUUFBUUMsT0FBTztJQUMxQjtBQUNKLENBQUMsRUFBQztBQUNGUCw4Q0FBNkM7SUFDekNJLFlBQVksSUFBSTtJQUNoQkMsS0FBSyxXQUFXO1FBQ1osT0FBT0csWUFBWUQsT0FBTztJQUM5QjtBQUNKLENBQUMsRUFBQztBQUNGTCxpQkFBaUIsR0FBR087QUFDcEJQLG9CQUFvQixHQUFHUTtBQUN2QlIsZ0NBQWdDLEdBQUdTO0FBQ25DVCxrQkFBZSxHQUFHLEtBQUs7QUFDdkIsSUFBSVUsMkJBQTJCQyx1SkFBK0Q7QUFDOUYsSUFBSUMsU0FBU0YseUJBQXlCQyxtQkFBT0EsQ0FBQyxnREFBTztBQUNyRCxJQUFJUCxVQUFVTSx5QkFBeUJDLG1CQUFPQSxDQUFDLDZGQUE2QjtBQUM1RSxJQUFJRSxpQkFBaUJGLG1CQUFPQSxDQUFDLCtGQUE4QjtBQUMzRCxJQUFJRyxXQUFXSix5QkFBeUJDLG1CQUFPQSxDQUFDLHFFQUFpQjtBQUNqRSxJQUFJTCxjQUFjSSx5QkFBeUJDLG1CQUFPQSxDQUFDLHlFQUFlO0FBQ2xFLE1BQU1JLGtCQUFrQjtJQUNwQkMsUUFBUSxJQUFJO0lBQ1pDLGdCQUFnQixFQUFFO0lBQ2xCQyxPQUFPQyxFQUFFLEVBQUU7UUFDUCxJQUFJLElBQUksQ0FBQ0gsTUFBTSxFQUFFLE9BQU9HO1FBQ3hCLElBQUksSUFBa0IsRUFBYTtZQUMvQixJQUFJLENBQUNGLGNBQWMsQ0FBQ0csSUFBSSxDQUFDRDtRQUM3QixDQUFDO0lBQ0w7QUFDSjtBQUNBLDRFQUE0RTtBQUM1RSxNQUFNRSxvQkFBb0I7SUFDdEI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lB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LElBQUksT0FBT3dCLFlBQVksQ0FBQ0UsU0FBUyxLQUFLLFVBQVU7WUFDNUNELFFBQVEsQ0FBQ0MsU0FBUyxHQUFHakQsT0FBT2tELE1BQU0sQ0FBQ0MsTUFBTUMsT0FBTyxDQUFDTCxZQUFZLENBQUNFLFNBQVMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUVGLFlBQVksQ0FBQ0UsU0FBUyxFQUFFLG1DQUFtQzs7WUFFL0ksUUFBUztRQUNiLENBQUM7UUFDREQsUUFBUSxDQUFDQyxTQUFTLEdBQUdGLFlBQVksQ0FBQ0UsU0FBUztJQUMvQztJQUNBLGlHQUFpRztJQUNqR0QsU0FBU3RCLE1BQU0sR0FBR3BCLFFBQVFDLE9BQU8sQ0FBQ21CLE1BQU07SUFDeENELGlCQUFpQkssT0FBTyxDQUFDLENBQUNDLFFBQVE7UUFDOUJpQixRQUFRLENBQUNqQixNQUFNLEdBQUcsV0FBVzs2Q0FBUEM7Z0JBQUFBOztZQUNsQixPQUFPZSxZQUFZLENBQUNoQixNQUFNLElBQUlDO1FBQ2xDO0lBQ0o7SUFDQSxPQUFPZ0I7QUFDWDtBQUVBLElBQUksQ0FBQyxPQUFPOUMsUUFBUUssT0FBTyxLQUFLLGNBQWUsT0FBT0wsUUFBUUssT0FBTyxLQUFLLFlBQVlMLFFBQVFLLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT0wsUUFBUUssT0FBTyxDQUFDOEMsVUFBVSxLQUFLLGFBQWE7SUFDcktyRCxPQUFPQyxjQUFjLENBQUNDLFFBQVFLLE9BQU8sRUFBRSxjQUFjO1FBQUVKLE9BQU8sSUFBSTtJQUFDO0lBQ25FSCxPQUFPa0QsTUFBTSxDQUFDaEQsUUFBUUssT0FBTyxFQUFFTDtJQUMvQm9ELE9BQU9wRCxPQUFPLEdBQUdBLFFBQVFLLE9BQU87QUFDbEMsQ0FBQyxDQUVELGtDQUFrQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcm91dGVyLmpzPzk2NmQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSb3V0ZXJcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9yb3V0ZXIuZGVmYXVsdDtcbiAgICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIndpdGhSb3V0ZXJcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF93aXRoUm91dGVyLmRlZmF1bHQ7XG4gICAgfVxufSk7XG5leHBvcnRzLnVzZVJvdXRlciA9IHVzZVJvdXRlcjtcbmV4cG9ydHMuY3JlYXRlUm91dGVyID0gY3JlYXRlUm91dGVyO1xuZXhwb3J0cy5tYWtlUHVibGljUm91dGVySW5zdGFuY2UgPSBtYWtlUHVibGljUm91dGVySW5zdGFuY2U7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG52YXIgX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0ID0gcmVxdWlyZShcIkBzd2MvaGVscGVycy9saWIvX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0LmpzXCIpLmRlZmF1bHQ7XG52YXIgX3JlYWN0ID0gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG52YXIgX3JvdXRlciA9IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChyZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvcm91dGVyXCIpKTtcbnZhciBfcm91dGVyQ29udGV4dCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci1jb250ZXh0XCIpO1xudmFyIF9pc0Vycm9yID0gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0KHJlcXVpcmUoXCIuLi9saWIvaXMtZXJyb3JcIikpO1xudmFyIF93aXRoUm91dGVyID0gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0KHJlcXVpcmUoXCIuL3dpdGgtcm91dGVyXCIpKTtcbmNvbnN0IHNpbmdsZXRvblJvdXRlciA9IHtcbiAgICByb3V0ZXI6IG51bGwsXG4gICAgcmVhZHlDYWxsYmFja3M6IFtdLFxuICAgIHJlYWR5IChjYikge1xuICAgICAgICBpZiAodGhpcy5yb3V0ZXIpIHJldHVybiBjYigpO1xuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMucmVhZHlDYWxsYmFja3MucHVzaChjYik7XG4gICAgICAgIH1cbiAgICB9XG59O1xuLy8gQ3JlYXRlIHB1YmxpYyBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIG9mIHRoZSByb3V0ZXIgaW4gdGhlIHNpbmdsZXRvblJvdXRlclxuY29uc3QgdXJsUHJvcGVydHlGaWVsZHMgPSBbXG4gICAgJ3BhdGhuYW1lJyxcbiAgICAncm91dGUnLFxuICAgICdxdWVyeScsXG4gICAgJ2FzUGF0aCcsXG4gICAgJ2NvbXBvbmVudHMnLFxuICAgICdpc0ZhbGxiYWNrJyxcbiAgICAnYmFzZVBhdGgnLFxuICAgICdsb2NhbGUnLFxuICAgICdsb2NhbGVzJyxcbiAgICAnZGVmYXVsdExvY2FsZScsXG4gICAgJ2lzUmVhZHknLFxuICAgICdpc1ByZXZpZXcnLFxuICAgICdpc0xvY2FsZURvbWFpbicsXG4gICAgJ2RvbWFpbkxvY2FsZXMnLCBcbl07XG5jb25zdCByb3V0ZXJFdmVudHMgPSBbXG4gICAgJ3JvdXRlQ2hhbmdlU3RhcnQnLFxuICAgICdiZWZvcmVIaXN0b3J5Q2hhbmdlJyxcbiAgICAncm91dGVDaGFuZ2VDb21wbGV0ZScsXG4gICAgJ3JvdXRlQ2hhbmdlRXJyb3InLFxuICAgICdoYXNoQ2hhbmdlU3RhcnQnLFxuICAgICdoYXNoQ2hhbmdlQ29tcGxldGUnLCBcbl07XG5jb25zdCBjb3JlTWV0aG9kRmllbGRzID0gW1xuICAgICdwdXNoJyxcbiAgICAncmVwbGFjZScsXG4gICAgJ3JlbG9hZCcsXG4gICAgJ2JhY2snLFxuICAgICdwcmVmZXRjaCcsXG4gICAgJ2JlZm9yZVBvcFN0YXRlJywgXG5dO1xuLy8gRXZlbnRzIGlzIGEgc3RhdGljIHByb3BlcnR5IG9uIHRoZSByb3V0ZXIsIHRoZSByb3V0ZXIgZG9lc24ndCBoYXZlIHRvIGJlIGluaXRpYWxpemVkIHRvIHVzZSBpdFxuT2JqZWN0LmRlZmluZVByb3BlcnR5KHNpbmdsZXRvblJvdXRlciwgJ2V2ZW50cycsIHtcbiAgICBnZXQgKCkge1xuICAgICAgICByZXR1cm4gX3JvdXRlci5kZWZhdWx0LmV2ZW50cztcbiAgICB9XG59KTtcbmZ1bmN0aW9uIGdldFJvdXRlcigpIHtcbiAgICBpZiAoIXNpbmdsZXRvblJvdXRlci5yb3V0ZXIpIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9ICdObyByb3V0ZXIgaW5zdGFuY2UgZm91bmQuXFxuJyArICdZb3Ugc2hvdWxkIG9ubHkgdXNlIFwibmV4dC9yb3V0ZXJcIiBvbiB0aGUgY2xpZW50IHNpZGUgb2YgeW91ciBhcHAuXFxuJztcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICByZXR1cm4gc2luZ2xldG9uUm91dGVyLnJvdXRlcjtcbn1cbnVybFByb3BlcnR5RmllbGRzLmZvckVhY2goKGZpZWxkKT0+e1xuICAgIC8vIEhlcmUgd2UgbmVlZCB0byB1c2UgT2JqZWN0LmRlZmluZVByb3BlcnR5IGJlY2F1c2Ugd2UgbmVlZCB0byByZXR1cm5cbiAgICAvLyB0aGUgcHJvcGVydHkgYXNzaWduZWQgdG8gdGhlIGFjdHVhbCByb3V0ZXJcbiAgICAvLyBUaGUgdmFsdWUgbWlnaHQgZ2V0IGNoYW5nZWQgYXMgd2UgY2hhbmdlIHJvdXRlcyBhbmQgdGhpcyBpcyB0aGVcbiAgICAvLyBwcm9wZXIgd2F5IHRvIGFjY2VzcyBpdFxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzaW5nbGV0b25Sb3V0ZXIsIGZpZWxkLCB7XG4gICAgICAgIGdldCAoKSB7XG4gICAgICAgICAgICBjb25zdCByb3V0ZXIgPSBnZXRSb3V0ZXIoKTtcbiAgICAgICAgICAgIHJldHVybiByb3V0ZXJbZmllbGRdO1xuICAgICAgICB9XG4gICAgfSk7XG59KTtcbmNvcmVNZXRob2RGaWVsZHMuZm9yRWFjaCgoZmllbGQpPT57XG4gICAgc2luZ2xldG9uUm91dGVyW2ZpZWxkXSA9ICguLi5hcmdzKT0+e1xuICAgICAgICBjb25zdCByb3V0ZXIgPSBnZXRSb3V0ZXIoKTtcbiAgICAgICAgcmV0dXJuIHJvdXRlcltmaWVsZF0oLi4uYXJncyk7XG4gICAgfTtcbn0pO1xucm91dGVyRXZlbnRzLmZvckVhY2goKGV2ZW50KT0+e1xuICAgIHNpbmdsZXRvblJvdXRlci5yZWFkeSgoKT0+e1xuICAgICAgICBfcm91dGVyLmRlZmF1bHQuZXZlbnRzLm9uKGV2ZW50LCAoLi4uYXJncyk9PntcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50RmllbGQgPSBgb24ke2V2ZW50LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7ZXZlbnQuc3Vic3RyaW5nKDEpfWA7XG4gICAgICAgICAgICBjb25zdCBfc2luZ2xldG9uUm91dGVyID0gc2luZ2xldG9uUm91dGVyO1xuICAgICAgICAgICAgaWYgKF9zaW5nbGV0b25Sb3V0ZXJbZXZlbnRGaWVsZF0pIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBfc2luZ2xldG9uUm91dGVyW2V2ZW50RmllbGRdKC4uLmFyZ3MpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciB3aGVuIHJ1bm5pbmcgdGhlIFJvdXRlciBldmVudDogJHtldmVudEZpZWxkfWApO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCgwLCBfaXNFcnJvcikuZGVmYXVsdChlcnIpID8gYCR7ZXJyLm1lc3NhZ2V9XFxuJHtlcnIuc3RhY2t9YCA6IGVyciArICcnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xufSk7XG52YXIgX2RlZmF1bHQgPSBzaW5nbGV0b25Sb3V0ZXI7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDtcbmZ1bmN0aW9uIHVzZVJvdXRlcigpIHtcbiAgICBjb25zdCByb3V0ZXIgPSBfcmVhY3QuZGVmYXVsdC51c2VDb250ZXh0KF9yb3V0ZXJDb250ZXh0LlJvdXRlckNvbnRleHQpO1xuICAgIGlmICghcm91dGVyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTmV4dFJvdXRlciB3YXMgbm90IG1vdW50ZWQuIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL25leHQtcm91dGVyLW5vdC1tb3VudGVkJyk7XG4gICAgfVxuICAgIHJldHVybiByb3V0ZXI7XG59XG5mdW5jdGlvbiBjcmVhdGVSb3V0ZXIoLi4uYXJncykge1xuICAgIHNpbmdsZXRvblJvdXRlci5yb3V0ZXIgPSBuZXcgX3JvdXRlci5kZWZhdWx0KC4uLmFyZ3MpO1xuICAgIHNpbmdsZXRvblJvdXRlci5yZWFkeUNhbGxiYWNrcy5mb3JFYWNoKChjYik9PmNiKCkpO1xuICAgIHNpbmdsZXRvblJvdXRlci5yZWFkeUNhbGxiYWNrcyA9IFtdO1xuICAgIHJldHVybiBzaW5nbGV0b25Sb3V0ZXIucm91dGVyO1xufVxuZnVuY3Rpb24gbWFrZVB1YmxpY1JvdXRlckluc3RhbmNlKHJvdXRlcikge1xuICAgIGNvbnN0IHNjb3BlZFJvdXRlciA9IHJvdXRlcjtcbiAgICBjb25zdCBpbnN0YW5jZSA9IHt9O1xuICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgdXJsUHJvcGVydHlGaWVsZHMpe1xuICAgICAgICBpZiAodHlwZW9mIHNjb3BlZFJvdXRlcltwcm9wZXJ0eV0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBpbnN0YW5jZVtwcm9wZXJ0eV0gPSBPYmplY3QuYXNzaWduKEFycmF5LmlzQXJyYXkoc2NvcGVkUm91dGVyW3Byb3BlcnR5XSkgPyBbXSA6IHt9LCBzY29wZWRSb3V0ZXJbcHJvcGVydHldKSAvLyBtYWtlcyBzdXJlIHF1ZXJ5IGlzIG5vdCBzdGF0ZWZ1bFxuICAgICAgICAgICAgO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaW5zdGFuY2VbcHJvcGVydHldID0gc2NvcGVkUm91dGVyW3Byb3BlcnR5XTtcbiAgICB9XG4gICAgLy8gRXZlbnRzIGlzIGEgc3RhdGljIHByb3BlcnR5IG9uIHRoZSByb3V0ZXIsIHRoZSByb3V0ZXIgZG9lc24ndCBoYXZlIHRvIGJlIGluaXRpYWxpemVkIHRvIHVzZSBpdFxuICAgIGluc3RhbmNlLmV2ZW50cyA9IF9yb3V0ZXIuZGVmYXVsdC5ldmVudHM7XG4gICAgY29yZU1ldGhvZEZpZWxkcy5mb3JFYWNoKChmaWVsZCk9PntcbiAgICAgICAgaW5zdGFuY2VbZmllbGRdID0gKC4uLmFyZ3MpPT57XG4gICAgICAgICAgICByZXR1cm4gc2NvcGVkUm91dGVyW2ZpZWxkXSguLi5hcmdzKTtcbiAgICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJvdXRlci5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiX3JvdXRlciIsImRlZmF1bHQiLCJfd2l0aFJvdXRlciIsInVzZVJvdXRlciIsImNyZWF0ZVJvdXRlciIsIm1ha2VQdWJsaWNSb3V0ZXJJbnN0YW5jZSIsIl9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCIsInJlcXVpcmUiLCJfcmVhY3QiLCJfcm91dGVyQ29udGV4dCIsIl9pc0Vycm9yIiwic2luZ2xldG9uUm91dGVyIiwicm91dGVyIiwicmVhZHlDYWxsYmFja3MiLCJyZWFkeSIsImNiIiwicHVzaCIsInVybFByb3BlcnR5RmllbGRzIiwicm91dGVyRXZlbnRzIiwiY29yZU1ldGhvZEZpZWxkcyIsImV2ZW50cyIsImdldFJvdXRlciIsIm1lc3NhZ2UiLCJFcnJvciIsImZvckVhY2giLCJmaWVsZCIsImFyZ3MiLCJldmVudCIsIm9uIiwiZXZlbnRGaWVsZCIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic3Vic3RyaW5nIiwiX3NpbmdsZXRvblJvdXRlciIsImVyciIsImNvbnNvbGUiLCJlcnJvciIsInN0YWNrIiwiX2RlZmF1bHQiLCJ1c2VDb250ZXh0IiwiUm91dGVyQ29udGV4dCIsInNjb3BlZFJvdXRlciIsImluc3RhbmNlIiwicHJvcGVydHkiLCJhc3NpZ24iLCJBcnJheSIsImlzQXJyYXkiLCJfX2VzTW9kdWxlIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../node_modules/next/dist/client/router.js\n")); /***/ }), /***/ "../../node_modules/next/dist/client/script.js": /*!*****************************************************!*\ !*** ../../node_modules/next/dist/client/script.js ***! \*****************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nvar _s = $RefreshSig$();\n\"use client\";\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.handleClientScriptLoad = handleClientScriptLoad;\nexports.initScriptLoader = initScriptLoader;\nexports[\"default\"] = void 0;\nvar _extends = (__webpack_require__(/*! @swc/helpers/lib/_extends.js */ \"../../node_modules/@swc/helpers/lib/_extends.js\")[\"default\"]);\nvar _interop_require_default = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _interop_require_wildcard = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_wildcard.js */ \"../../node_modules/@swc/helpers/lib/_interop_require_wildcard.js\")[\"default\"]);\nvar _object_without_properties_loose = (__webpack_require__(/*! @swc/helpers/lib/_object_without_properties_loose.js */ \"../../node_modules/@swc/helpers/lib/_object_without_properties_loose.js\")[\"default\"]);\nvar _reactDom = _interop_require_default(__webpack_require__(/*! react-dom */ \"../../node_modules/react-dom/index.js\"));\nvar _react = _interop_require_wildcard(__webpack_require__(/*! react */ \"../../node_modules/react/index.js\"));\nvar _headManagerContext = __webpack_require__(/*! ../shared/lib/head-manager-context */ \"../../node_modules/next/dist/shared/lib/head-manager-context.js\");\nvar _headManager = __webpack_require__(/*! ./head-manager */ \"../../node_modules/next/dist/client/head-manager.js\");\nvar _requestIdleCallback = __webpack_require__(/*! ./request-idle-callback */ \"../../node_modules/next/dist/client/request-idle-callback.js\");\nconst ScriptCache = new Map();\nconst LoadCache = new Set();\nconst ignoreProps = [\n \"onLoad\",\n \"onReady\",\n \"dangerouslySetInnerHTML\",\n \"children\",\n \"onError\",\n \"strategy\"\n];\nconst loadScript = (props)=>{\n const { src , id , onLoad =()=>{} , onReady =null , dangerouslySetInnerHTML , children =\"\" , strategy =\"afterInteractive\" , onError } = props;\n const cacheKey = id || src;\n // Script has already loaded\n if (cacheKey && LoadCache.has(cacheKey)) {\n return;\n }\n // Contents of this script are already loading/loaded\n if (ScriptCache.has(src)) {\n LoadCache.add(cacheKey);\n // It is possible that multiple `next/script` components all have same \"src\", but has different \"onLoad\"\n // This is to make sure the same remote script will only load once, but \"onLoad\" are executed in order\n ScriptCache.get(src).then(onLoad, onError);\n return;\n }\n /** Execute after the script first loaded */ const afterLoad = ()=>{\n // Run onReady for the first time after load event\n if (onReady) {\n onReady();\n }\n // add cacheKey to LoadCache when load successfully\n LoadCache.add(cacheKey);\n };\n const el = document.createElement(\"script\");\n const loadPromise = new Promise((resolve, reject)=>{\n el.addEventListener(\"load\", function(e) {\n resolve();\n if (onLoad) {\n onLoad.call(this, e);\n }\n afterLoad();\n });\n el.addEventListener(\"error\", function(e) {\n reject(e);\n });\n }).catch(function(e) {\n if (onError) {\n onError(e);\n }\n });\n if (dangerouslySetInnerHTML) {\n el.innerHTML = dangerouslySetInnerHTML.__html || \"\";\n afterLoad();\n } else if (children) {\n el.textContent = typeof children === \"string\" ? children : Array.isArray(children) ? children.join(\"\") : \"\";\n afterLoad();\n } else if (src) {\n el.src = src;\n // do not add cacheKey into LoadCache for remote script here\n // cacheKey will be added to LoadCache when it is actually loaded (see loadPromise above)\n ScriptCache.set(src, loadPromise);\n }\n for (const [k, value] of Object.entries(props)){\n if (value === undefined || ignoreProps.includes(k)) {\n continue;\n }\n const attr = _headManager.DOMAttributeNames[k] || k.toLowerCase();\n el.setAttribute(attr, value);\n }\n if (strategy === \"worker\") {\n el.setAttribute(\"type\", \"text/partytown\");\n }\n el.setAttribute(\"data-nscript\", strategy);\n document.body.appendChild(el);\n};\nfunction handleClientScriptLoad(props) {\n const { strategy =\"afterInteractive\" } = props;\n if (strategy === \"lazyOnload\") {\n window.addEventListener(\"load\", ()=>{\n (0, _requestIdleCallback).requestIdleCallback(()=>loadScript(props));\n });\n } else {\n loadScript(props);\n }\n}\nfunction loadLazyScript(props) {\n if (document.readyState === \"complete\") {\n (0, _requestIdleCallback).requestIdleCallback(()=>loadScript(props));\n } else {\n window.addEventListener(\"load\", ()=>{\n (0, _requestIdleCallback).requestIdleCallback(()=>loadScript(props));\n });\n }\n}\nfunction addBeforeInteractiveToCache() {\n const scripts = [\n ...document.querySelectorAll('[data-nscript=\"beforeInteractive\"]'),\n ...document.querySelectorAll('[data-nscript=\"beforePageRender\"]')\n ];\n scripts.forEach((script)=>{\n const cacheKey = script.id || script.getAttribute(\"src\");\n LoadCache.add(cacheKey);\n });\n}\nfunction initScriptLoader(scriptLoaderItems) {\n scriptLoaderItems.forEach(handleClientScriptLoad);\n addBeforeInteractiveToCache();\n}\nfunction Script(props) {\n _s();\n const { id , src =\"\" , onLoad =()=>{} , onReady =null , strategy =\"afterInteractive\" , onError } = props, restProps = _object_without_properties_loose(props, [\n \"id\",\n \"src\",\n \"onLoad\",\n \"onReady\",\n \"strategy\",\n \"onError\"\n ]);\n // Context is available only during SSR\n const { updateScripts , scripts , getIsSsr , appDir , nonce } = (0, _react).useContext(_headManagerContext.HeadManagerContext);\n /**\n * - First mount:\n * 1. The useEffect for onReady executes\n * 2. hasOnReadyEffectCalled.current is false, but the script hasn't loaded yet (not in LoadCache)\n * onReady is skipped, set hasOnReadyEffectCalled.current to true\n * 3. The useEffect for loadScript executes\n * 4. hasLoadScriptEffectCalled.current is false, loadScript executes\n * Once the script is loaded, the onLoad and onReady will be called by then\n * [If strict mode is enabled / is wrapped in component]\n * 5. The useEffect for onReady executes again\n * 6. hasOnReadyEffectCalled.current is true, so entire effect is skipped\n * 7. The useEffect for loadScript executes again\n * 8. hasLoadScriptEffectCalled.current is true, so entire effect is skipped\n *\n * - Second mount:\n * 1. The useEffect for onReady executes\n * 2. hasOnReadyEffectCalled.current is false, but the script has already loaded (found in LoadCache)\n * onReady is called, set hasOnReadyEffectCalled.current to true\n * 3. The useEffect for loadScript executes\n * 4. The script is already loaded, loadScript bails out\n * [If strict mode is enabled / is wrapped in component]\n * 5. The useEffect for onReady executes again\n * 6. hasOnReadyEffectCalled.current is true, so entire effect is skipped\n * 7. The useEffect for loadScript executes again\n * 8. hasLoadScriptEffectCalled.current is true, so entire effect is skipped\n */ const hasOnReadyEffectCalled = (0, _react).useRef(false);\n (0, _react).useEffect(()=>{\n const cacheKey = id || src;\n if (!hasOnReadyEffectCalled.current) {\n // Run onReady if script has loaded before but component is re-mounted\n if (onReady && cacheKey && LoadCache.has(cacheKey)) {\n onReady();\n }\n hasOnReadyEffectCalled.current = true;\n }\n }, [\n onReady,\n id,\n src\n ]);\n const hasLoadScriptEffectCalled = (0, _react).useRef(false);\n (0, _react).useEffect(()=>{\n if (!hasLoadScriptEffectCalled.current) {\n if (strategy === \"afterInteractive\") {\n loadScript(props);\n } else if (strategy === \"lazyOnload\") {\n loadLazyScript(props);\n }\n hasLoadScriptEffectCalled.current = true;\n }\n }, [\n props,\n strategy\n ]);\n if (strategy === \"beforeInteractive\" || strategy === \"worker\") {\n if (updateScripts) {\n scripts[strategy] = (scripts[strategy] || []).concat([\n _extends({\n id,\n src,\n onLoad,\n onReady,\n onError\n }, restProps)\n ]);\n updateScripts(scripts);\n } else if (getIsSsr && getIsSsr()) {\n // Script has already loaded during SSR\n LoadCache.add(id || src);\n } else if (getIsSsr && !getIsSsr()) {\n loadScript(props);\n }\n }\n // For the app directory, we need React Float to preload these scripts.\n if (appDir) {\n // Before interactive scripts need to be loaded by Next.js' runtime instead\n // of native