diff --git a/.gitignore b/.gitignore
index f464f94..347cbbc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,9 +4,10 @@ node_modules/*
coverage
coverage.json
typechain
+.DS_Store
#Hardhat files
cache
artifacts
-pinned
\ No newline at end of file
+pinned
diff --git a/frontend/.next/build-manifest.json b/frontend/.next/build-manifest.json
new file mode 100644
index 0000000..5de3f40
--- /dev/null
+++ b/frontend/.next/build-manifest.json
@@ -0,0 +1,35 @@
+{
+ "polyfillFiles": [
+ "static/chunks/polyfills.js"
+ ],
+ "devFiles": [
+ "static/chunks/react-refresh.js"
+ ],
+ "ampDevFiles": [
+ "static/chunks/webpack.js",
+ "static/chunks/amp.js"
+ ],
+ "lowPriorityFiles": [
+ "static/development/_buildManifest.js",
+ "static/development/_ssgManifest.js",
+ "static/development/_middlewareManifest.js"
+ ],
+ "pages": {
+ "/": [
+ "static/chunks/webpack.js",
+ "static/chunks/main.js",
+ "static/chunks/pages/index.js"
+ ],
+ "/_app": [
+ "static/chunks/webpack.js",
+ "static/chunks/main.js",
+ "static/chunks/pages/_app.js"
+ ],
+ "/_error": [
+ "static/chunks/webpack.js",
+ "static/chunks/main.js",
+ "static/chunks/pages/_error.js"
+ ]
+ },
+ "ampFirstPages": []
+}
\ No newline at end of file
diff --git a/frontend/.next/package.json b/frontend/.next/package.json
new file mode 100644
index 0000000..7156107
--- /dev/null
+++ b/frontend/.next/package.json
@@ -0,0 +1 @@
+{"type": "commonjs"}
\ No newline at end of file
diff --git a/frontend/.next/react-loadable-manifest.json b/frontend/.next/react-loadable-manifest.json
new file mode 100644
index 0000000..528d75a
--- /dev/null
+++ b/frontend/.next/react-loadable-manifest.json
@@ -0,0 +1,14 @@
+{
+ "../node_modules/@wagmi/core/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.esm.js -> @coinbase/wallet-sdk": {
+ "id": "../node_modules/@wagmi/core/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.esm.js -> @coinbase/wallet-sdk",
+ "files": [
+ "static/chunks/node_modules_coinbase_wallet-sdk_dist_index_js.js"
+ ]
+ },
+ "../node_modules/@wagmi/core/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.esm.js -> @walletconnect/ethereum-provider": {
+ "id": "../node_modules/@wagmi/core/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.esm.js -> @walletconnect/ethereum-provider",
+ "files": [
+ "static/chunks/node_modules_walletconnect_ethereum-provider_dist_esm_index_js.js"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/frontend/.next/server/middleware-build-manifest.js b/frontend/.next/server/middleware-build-manifest.js
new file mode 100644
index 0000000..5af7a24
--- /dev/null
+++ b/frontend/.next/server/middleware-build-manifest.js
@@ -0,0 +1 @@
+self.__BUILD_MANIFEST={"polyfillFiles":["static/chunks/polyfills.js"],"devFiles":["static/chunks/react-refresh.js"],"ampDevFiles":["static/chunks/webpack.js","static/chunks/amp.js"],"lowPriorityFiles":["static/development/_buildManifest.js","static/development/_ssgManifest.js","static/development/_middlewareManifest.js"],"pages":{"/":["static/chunks/webpack.js","static/chunks/main.js","static/chunks/pages/index.js"],"/_app":["static/chunks/webpack.js","static/chunks/main.js","static/chunks/pages/_app.js"],"/_error":["static/chunks/webpack.js","static/chunks/main.js","static/chunks/pages/_error.js"]},"ampFirstPages":[]}
\ No newline at end of file
diff --git a/frontend/.next/server/middleware-manifest.json b/frontend/.next/server/middleware-manifest.json
new file mode 100644
index 0000000..c5eb773
--- /dev/null
+++ b/frontend/.next/server/middleware-manifest.json
@@ -0,0 +1,6 @@
+{
+ "sortedMiddleware": [],
+ "clientInfo": [],
+ "middleware": {},
+ "version": 1
+}
\ No newline at end of file
diff --git a/frontend/.next/server/middleware-react-loadable-manifest.js b/frontend/.next/server/middleware-react-loadable-manifest.js
new file mode 100644
index 0000000..d562c11
--- /dev/null
+++ b/frontend/.next/server/middleware-react-loadable-manifest.js
@@ -0,0 +1 @@
+self.__REACT_LOADABLE_MANIFEST={"../node_modules/@wagmi/core/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.esm.js -> @coinbase/wallet-sdk":{"id":"../node_modules/@wagmi/core/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.esm.js -> @coinbase/wallet-sdk","files":["static/chunks/node_modules_coinbase_wallet-sdk_dist_index_js.js"]},"../node_modules/@wagmi/core/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.esm.js -> @walletconnect/ethereum-provider":{"id":"../node_modules/@wagmi/core/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.esm.js -> @walletconnect/ethereum-provider","files":["static/chunks/node_modules_walletconnect_ethereum-provider_dist_esm_index_js.js"]}}
\ No newline at end of file
diff --git a/frontend/.next/server/pages-manifest.json b/frontend/.next/server/pages-manifest.json
new file mode 100644
index 0000000..55d8ed9
--- /dev/null
+++ b/frontend/.next/server/pages-manifest.json
@@ -0,0 +1,6 @@
+{
+ "/_app": "pages/_app.js",
+ "/_error": "pages/_error.js",
+ "/_document": "pages/_document.js",
+ "/": "pages/index.js"
+}
\ No newline at end of file
diff --git a/frontend/.next/server/pages/_app.js b/frontend/.next/server/pages/_app.js
new file mode 100644
index 0000000..03d266d
--- /dev/null
+++ b/frontend/.next/server/pages/_app.js
@@ -0,0 +1,539 @@
+/*
+ * 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/).
+ */
+(() => {
+var exports = {};
+exports.id = "pages/_app";
+exports.ids = ["pages/_app"];
+exports.modules = {
+
+/***/ "./styles/Navbar.module.css":
+/*!**********************************!*\
+ !*** ./styles/Navbar.module.css ***!
+ \**********************************/
+/***/ ((module) => {
+
+eval("// Exports\nmodule.exports = {\n\t\"navbar\": \"Navbar_navbar__66x_3\",\n\t\"home\": \"Navbar_home__zMc_A\",\n\t\"right\": \"Navbar_right__NApFy\",\n\t\"modalBody\": \"Navbar_modalBody__m6rAM\",\n\t\"leftPartition\": \"Navbar_leftPartition__3Lp8N\",\n\t\"rightPartition\": \"Navbar_rightPartition__jWstN\",\n\t\"button\": \"Navbar_button__yvu3z\",\n\t\"disabledBtn\": \"Navbar_disabledBtn__Vp_Q7\",\n\t\"searchBar\": \"Navbar_searchBar__xcFj8\",\n\t\"searchBtn\": \"Navbar_searchBtn__AnJhY\"\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zdHlsZXMvTmF2YmFyLm1vZHVsZS5jc3MuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9idXJuLW15LXdhbGxldC8uL3N0eWxlcy9OYXZiYXIubW9kdWxlLmNzcz84MWVlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEV4cG9ydHNcbm1vZHVsZS5leHBvcnRzID0ge1xuXHRcIm5hdmJhclwiOiBcIk5hdmJhcl9uYXZiYXJfXzY2eF8zXCIsXG5cdFwiaG9tZVwiOiBcIk5hdmJhcl9ob21lX196TWNfQVwiLFxuXHRcInJpZ2h0XCI6IFwiTmF2YmFyX3JpZ2h0X19OQXBGeVwiLFxuXHRcIm1vZGFsQm9keVwiOiBcIk5hdmJhcl9tb2RhbEJvZHlfX202ckFNXCIsXG5cdFwibGVmdFBhcnRpdGlvblwiOiBcIk5hdmJhcl9sZWZ0UGFydGl0aW9uX18zTHA4TlwiLFxuXHRcInJpZ2h0UGFydGl0aW9uXCI6IFwiTmF2YmFyX3JpZ2h0UGFydGl0aW9uX19qV3N0TlwiLFxuXHRcImJ1dHRvblwiOiBcIk5hdmJhcl9idXR0b25fX3l2dTN6XCIsXG5cdFwiZGlzYWJsZWRCdG5cIjogXCJOYXZiYXJfZGlzYWJsZWRCdG5fX1ZwX1E3XCIsXG5cdFwic2VhcmNoQmFyXCI6IFwiTmF2YmFyX3NlYXJjaEJhcl9feGNGajhcIixcblx0XCJzZWFyY2hCdG5cIjogXCJOYXZiYXJfc2VhcmNoQnRuX19BbkpoWVwiXG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./styles/Navbar.module.css\n");
+
+/***/ }),
+
+/***/ "./components/NavBar.tsx":
+/*!*******************************!*\
+ !*** ./components/NavBar.tsx ***!
+ \*******************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _chakra_ui_icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @chakra-ui/icons */ \"@chakra-ui/icons\");\n/* harmony import */ var _chakra_ui_icons__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_chakra_ui_icons__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @chakra-ui/react */ \"@chakra-ui/react\");\n/* harmony import */ var _chakra_ui_react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var hooks_useChain__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! hooks/useChain */ \"./hooks/useChain.ts\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! next/link */ \"./node_modules/next/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! next/router */ \"next/router\");\n/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(next_router__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _styles_Navbar_module_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../styles/Navbar.module.css */ \"./styles/Navbar.module.css\");\n/* harmony import */ var _styles_Navbar_module_css__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_styles_Navbar_module_css__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\n\nconst Dropdown = (props)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.Button, {\n colorScheme: \"facebook\",\n width: \"100%\",\n ...props\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 27,\n columnNumber: 3\n }, undefined)\n;\nconst testnetMap = {\n rinkeby: \"Ethereum\",\n mumbai: \"Polygon\",\n optimism: \"Optimism\"\n};\nconst imagesMap = {\n mumbai: \"data:image/png;base64,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\",\n rinkeby: \"data:image/png;base64,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\",\n optimism: \"data:image/png;base64,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\"\n};\nconst NavBar = ()=>{\n const router = (0,next_router__WEBPACK_IMPORTED_MODULE_5__.useRouter)();\n const { isOpen , onOpen , onClose } = (0,_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.useDisclosure)();\n const { chain , switchChain } = (0,hooks_useChain__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n const handleSubmit = (e)=>{\n e.preventDefault();\n const value = e.target.elements.search.value;\n router.push(`search?address=${value}`);\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_styles_Navbar_module_css__WEBPACK_IMPORTED_MODULE_6___default().background),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_styles_Navbar_module_css__WEBPACK_IMPORTED_MODULE_6___default().navbar),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_styles_Navbar_module_css__WEBPACK_IMPORTED_MODULE_6___default().leftPartition),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.Tooltip, {\n label: \"Burn your hacked wallet\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n display: \"flex\"\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_4___default()), {\n href: \"/\",\n passHref: true,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: (_styles_Navbar_module_css__WEBPACK_IMPORTED_MODULE_6___default().home),\n children: \"\\uD83D\\uDD25\"\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 63,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 62,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 61,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 60,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.Tooltip, {\n label: \"Read our Documentation\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n display: \"flex\"\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_4___default()), {\n href: \"https://docs.burnmywallet.com\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: (_styles_Navbar_module_css__WEBPACK_IMPORTED_MODULE_6___default().home),\n children: \"Docs\"\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 70,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 69,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 68,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 67,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.Tooltip, {\n label: \"Join our community\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n display: \"flex\"\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_4___default()), {\n href: \"https://discord.gg/yMvQTNPPS9\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: (_styles_Navbar_module_css__WEBPACK_IMPORTED_MODULE_6___default().home),\n children: \"Discord\"\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 77,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 76,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 75,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 74,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.Tooltip, {\n label: \"Search if a wallet is marked as compromised\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"form\", {\n onSubmit: handleSubmit,\n className: (_styles_Navbar_module_css__WEBPACK_IMPORTED_MODULE_6___default().searchBar),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"search\",\n name: \"search\",\n pattern: \".*\\\\S.*\",\n required: true,\n id: \"search\",\n placeholder: \"Enter wallet address\"\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 83,\n columnNumber: 15\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: (_styles_Navbar_module_css__WEBPACK_IMPORTED_MODULE_6___default().searchBtn),\n type: \"submit\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"Search\"\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 92,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 91,\n columnNumber: 15\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 82,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 81,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 59,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.HStack, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.Tooltip, {\n label: \"Switch network\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n position: \"relative\",\n marginRight: \"20px\",\n width: \"200px\"\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.Menu, {\n colorScheme: \"facebook\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.MenuButton, {\n as: Dropdown,\n rightIcon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_icons__WEBPACK_IMPORTED_MODULE_1__.ChevronDownIcon, {}, void 0, false, void 0, void 0),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.HStack, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.Image, {\n boxSize: \"2rem\",\n borderRadius: \"full\",\n src: imagesMap[chain.name],\n mr: \"12px\"\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 110,\n columnNumber: 21\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: testnetMap[chain.name]\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 116,\n columnNumber: 21\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 109,\n columnNumber: 19\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 108,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.MenuList, {\n bgColor: \"facebook.900\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.MenuItem, {\n onClick: ()=>switchChain(\"rinkeby\")\n ,\n justifyContent: \"left\",\n paddingStart: 8,\n as: Dropdown,\n minH: \"48px\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.Image, {\n boxSize: \"2rem\",\n borderRadius: \"full\",\n src: imagesMap.rinkeby,\n justifyContent: \"left\",\n alt: \"Ethereum - Rinkeby\",\n mr: \"12px\"\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 127,\n columnNumber: 21\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.Tooltip, {\n label: \"Ethereum - Rinkeby\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"Ethereum\"\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 136,\n columnNumber: 23\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 135,\n columnNumber: 21\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 120,\n columnNumber: 19\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.MenuItem, {\n onClick: ()=>switchChain(\"mumbai\")\n ,\n paddingStart: 9,\n as: Dropdown,\n justifyContent: \"left\",\n minH: \"40px\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.Image, {\n boxSize: \"2rem\",\n borderRadius: \"full\",\n src: imagesMap.mumbai,\n alt: \"Polygon - Mumbai\",\n mr: \"12px\"\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 146,\n columnNumber: 21\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.Tooltip, {\n label: \"Polygon - Mumbai\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"Polygon\"\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 154,\n columnNumber: 23\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 153,\n columnNumber: 21\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 139,\n columnNumber: 19\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.MenuItem, {\n className: (_styles_Navbar_module_css__WEBPACK_IMPORTED_MODULE_6___default().disabledBtn),\n disabled: true,\n paddingStart: 10,\n justifyContent: \"left\",\n as: _chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.Button,\n minH: \"40px\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n marginRight: \"12px\"\n },\n children: \"\\uD83D\\uDD34\"\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 165,\n columnNumber: 21\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.Tooltip, {\n label: \"Coming soon ...\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"Optimism\"\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 167,\n columnNumber: 23\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 166,\n columnNumber: 21\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 157,\n columnNumber: 19\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 119,\n columnNumber: 17\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 107,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 100,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 99,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.Tooltip, {\n label: \"How can you keep yourself safe?\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n display: \"flex\"\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: (_styles_Navbar_module_css__WEBPACK_IMPORTED_MODULE_6___default().home),\n onClick: onOpen,\n children: [\n \"\\uD83E\\uDDD1\\u200D\\uD83D\\uDE92 \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_styles_Navbar_module_css__WEBPACK_IMPORTED_MODULE_6___default().right),\n children: \"Safety first\"\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 177,\n columnNumber: 21\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 176,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 175,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 174,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 98,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 58,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(AboutModal, {\n isOpen: isOpen,\n onClose: onClose\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 183,\n columnNumber: 7\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 57,\n columnNumber: 5\n }, undefined);\n};\nfunction AboutModal({ isOpen , onClose }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.Modal, {\n isOpen: isOpen,\n onClose: onClose,\n size: \"3xl\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.ModalOverlay, {}, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 198,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.ModalContent, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.ModalHeader, {\n style: {\n textAlign: \"center\"\n },\n children: \"\\uD83D\\uDC81\\uD83C\\uDFFD\\u200D\\u2642\\uFE0F So You've Been Hacked...\"\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 200,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.ModalCloseButton, {}, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 203,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.ModalBody, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n padding: \"0 30px\"\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: (_styles_Navbar_module_css__WEBPACK_IMPORTED_MODULE_6___default().modalBody),\n children: \"\\uD83E\\uDEA6 Sorry my friend, but it's gone.\"\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 206,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: (_styles_Navbar_module_css__WEBPACK_IMPORTED_MODULE_6___default().modalBody),\n children: \"\\uD83D\\uDD11 If you lost your seedphrase, you've lost your wallet and there's nothing you can do to make it safe again.\"\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 209,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: (_styles_Navbar_module_css__WEBPACK_IMPORTED_MODULE_6___default().modalBody),\n children: \"\\uD83D\\uDD11 Create a new wallet and new seed phrase. Transfer anything you have left into the new wallet.\"\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 213,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: (_styles_Navbar_module_css__WEBPACK_IMPORTED_MODULE_6___default().modalBody),\n children: \"\\uD83E\\uDDCA For the safest web3 experience: Get a cold wallet!\"\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 217,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: (_styles_Navbar_module_css__WEBPACK_IMPORTED_MODULE_6___default().modalBody),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"strong\", {\n children: \"Some tips for NFTs:\"\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 222,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"Keep 1 burner wallet for minting; never keep more than 0.2 eth or any NFTs you care about\"\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 224,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"Keep 1 trading wallet for mid-range NFTs that you might trade\"\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 228,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n \"Keep 1 cold wallet for your diamond handed NFTs; NEVER connect to internet \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"em\", {\n children: \"especially\"\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 234,\n columnNumber: 41\n }, this),\n \" public wifi\"\n ]\n }, void 0, true, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 232,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 223,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 221,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 205,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 204,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.ModalFooter, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.Button, {\n colorScheme: \"ghost\",\n onClick: onClose,\n children: \"Close\"\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 242,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 241,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 199,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/components/NavBar.tsx\",\n lineNumber: 197,\n columnNumber: 7\n }, this)\n }, void 0, false);\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (NavBar);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RTswRUFBQyxZQUFVOzs7OztvRUFBSzs0REFBQSxjQUN6Qzs7Ozs7OzREQUFLOzs7Ozs7b0RBQ0Y7Ozs7Ozs0Q0FDSDs7Ozs7O29DQUNBOzs7OztnQ0FDSTtzQ0FFWiw4REFBQ3pGLHlEQUFXO3NDQUNWLDRFQUFDSSxvREFBTTtnQ0FBQ2EsV0FBVyxFQUFDLE9BQU87Z0NBQUN1RCxPQUFPLEVBQUU1QyxPQUFPOzBDQUFFLE9BRTlDOzs7OztvQ0FBUzs7Ozs7Z0NBQ0c7Ozs7Ozt3QkFDRDs7Ozs7O2dCQUNUO3FCQUNQLENBQ0g7Q0FDSDtBQUNELGlFQUFlSixNQUFNLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9idXJuLW15LXdhbGxldC8uL2NvbXBvbmVudHMvTmF2QmFyLnRzeD8zMDIyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoZXZyb25Eb3duSWNvbiB9IGZyb20gXCJAY2hha3JhLXVpL2ljb25zXCI7XG5pbXBvcnQge1xuICBUb29sdGlwLFxuICBNb2RhbCxcbiAgTW9kYWxPdmVybGF5LFxuICBNb2RhbENvbnRlbnQsXG4gIE1vZGFsSGVhZGVyLFxuICBNb2RhbEZvb3RlcixcbiAgTW9kYWxCb2R5LFxuICBNb2RhbENsb3NlQnV0dG9uLFxuICB1c2VEaXNjbG9zdXJlLFxuICBCdXR0b24sXG4gIEhTdGFjayxcbiAgTWVudSxcbiAgTWVudUJ1dHRvbixcbiAgTWVudUl0ZW0sXG4gIE1lbnVMaXN0LFxuICBJbWFnZSxcbiAgQnV0dG9uUHJvcHMsXG59IGZyb20gXCJAY2hha3JhLXVpL3JlYWN0XCI7XG5pbXBvcnQgdXNlQ2hhaW4gZnJvbSBcImhvb2tzL3VzZUNoYWluXCI7XG5pbXBvcnQgTGluayBmcm9tIFwibmV4dC9saW5rXCI7XG5pbXBvcnQgeyB1c2VSb3V0ZXIgfSBmcm9tIFwibmV4dC9yb3V0ZXJcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4uL3N0eWxlcy9OYXZiYXIubW9kdWxlLmNzc1wiO1xuXG5jb25zdCBEcm9wZG93biA9IChwcm9wczogQnV0dG9uUHJvcHMpID0+IChcbiAgPEJ1dHRvbiBjb2xvclNjaGVtZT1cImZhY2Vib29rXCIgd2lkdGg9XCIxMDAlXCIgey4uLnByb3BzfSAvPlxuKTtcblxuY29uc3QgdGVzdG5ldE1hcCA9IHtcbiAgcmlua2VieTogXCJFdGhlcmV1bVwiLFxuICBtdW1iYWk6IFwiUG9seWdvblwiLFxuICBvcHRpbWlzbTogXCJPcHRpbWlzbVwiLFxufTtcblxuY29uc3QgaW1hZ2VzTWFwID0ge1xuICBtdW1iYWk6XG4gICAgXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUVBQUFBQkFDQVlBQUFDcWFYSGVBQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFIOEVsRVFWUjRuTzJhZTNCY2RSWEh2K2Z1YnBwSGFVcTFBZzB5ZzBvN01BN1dTbFVHaHhwSFNiSnBwb04wazkxTklxVGRoOWl4NzdSMjJtTEFSSkNLcWRoUzk5VmkyK3ptZ1RKT2t0MmtETFlkWkdUNnlDak1nREFpbzlNV2ExRVNXWm9tdWZkMy9DTXBwc205ZCs4K01odUgvZno1KzUzSDc1ejdPdWYzdTBDT0hEbHk1TWlSNCtNS1pjclFJVnZ2allxRlZndUJFVXYrU0ZmRHMvY1Bac3IyVEpKMkFqcHRuWG1EbHFLSGllbEhBSzZiR1A0M0V6OTI0VUxoL3FZVHBYSzZQbWFTdEJJUWRFU3JHTmdMNERQcUV2eG5GclRaMDJHTnBlTm5Ka2twQVlHYW50c2hTYTBBeWd3cE1Ib0VZNk8zdy9wMkt2NW1rcVFTRUxUMUxXQ0w4a013clFOZ1N0TFhHSWdQRkJEdHJtdXovaWRKM1JuRFVBSjhuak1XS1g2cEFjd3RBRDZacHMvM21MaDUvdGlIKzZxN3FwVTBiYVZOd2dRRW5ERXJtSDhHWUVrQzBZc0UvclVBVEFTeUFWaVF3UFZaa25pRHE4MzZzdUhWemdDYUNmRFg5QzZXVExTWEdSVUpiSXdBM0RvcUY3YXM2eXFOQThBenpwN3JMYUFtTUgwUGdGbEhsd25vWUFtTjdqYnJ1UlRXbnphcUNRamFvMTlrd2tzQWloTG9QMjhpc1hWTmVPVmYxU1lQMWtidmtCbXR4TGd2Z1oxTFJMemNGYTc4bTRFMVp4VFZxOE9FRGRBUC9qVmkydVJxcjNoUnovaWFOdXZyQU1xQ2ptZ1ZnS2NZdUUxRGRDRUw4Z0RZYVdUUm1VUlNINlliTk9UZlo5QzY4KzhXTEVzVS9HUmNFV3YzUERuK2VZQzJBWWlydThSTlJ1MWxFcjNuY3lxREpoSjNhZDN1aWFqdXFoNEZzQ2RVMDNkTVNPSVBBQXBTc1pOcE5PNEFGUWp0cVFZL21iVWQ1WDhDMEp1dW5VeGhQQUhnaXhuelNud2hZN2JTSkpsSFlJYmg5L1JtUS9aaml4UkpyaWNnanlRcDRqcGEvcGRNZUowTkNXQ0EyNFdjMTZJMmVlaWg0L255eVBBV0FYa0g4ZmlYaVJXeE8raUkvVUtSelk5NXU3NDFsSTd6YkNmZ0RFblk2R3FyVkswRy9ZN2VCK1FybC9lQTZOWXBVeFlHYjViTVkzVUJaMngzOGRnSG9WVEw2aVRlQVpsREtLWmZNYUh1L0pKVFgxRXJoUU9PMkoxK1IreDNCSHBPSmZqSmZBck12aUh6M0ROK1IzUkZLbXZKeWgzZzdTZ2ZBREF3ZGZ4LzNTYXZvK1M2emFVRW5BallvejJ3bU5hN2o1UzlZMVF4MjQ4QUFLRHA2OGZOSll1dXJHRVdMV0JLdmRza3JJU3MzQmR3OXY1U3lwZDNyVDI0Nm9ORUtsbDVCQ2JqZDhiS1NtNGFmaFhNUHVpMzJ1Y0Fmb0tJbXdIb2JhemtnV205R0xhODRYZEdheG1zMi9FYVRnQUwrb1JSV1NQNGEzb1hCK3pSYm1MdUEzQzdwaURoTW9nZkZYRmxpVHRTdWNNVnJ0eGRMTWZ2SUVZakEzb2JLeVhFT0JwMHhGNzIxZlF0MHphdlFzQVJpd0ZjUG1YNGtsbm1PeHU2S3YraEYxZ2lmTFlYaXNreXRvc1k2d0hrNllneUNKMWlUTm5tN2FyNnUvbzZmM3NEMk53Q29nYm9YOHhSU0ZqaGJyTytNblVpbVVkZ29XeW0wMEZuekphRXprYzBOVFZKUVVldlN6S1B2VW1NcmRBTG5qQWdRUGU2dzFhN1Z2QUE0STZzdXVodXIzUUpJUzBuNFBjNjd2TjRmRzlpR2hvSkVGcFYyYzNNM0Jsd1JFLzRuYjFMZFJ4ZWc4OFIrMXJKVzE4K3phQUFBSzFPRXhqZlZYS2ZYM3hxdVRkU29SZlFOWGc3eWdmV1JpcnVCY01PUUxYTUpzWkN0WEgxcjRCRSt5RlFEZTJydElLWXpnWWQwZENZMmJUcjRTTmwvMVFUOHRtNmI1RXNwaWZCWEEzVzNYNGJaY0xUUEdacFRyV3lJeENqSFIwaCs3R1hCTWwvQk5RRG5xNm5nYSttYjVra2lYMEE3azVnWTRnWXpmT1UrTk1UTFM5OFZkMkYwblhTTm9BYXdTalUxV2IwTVBNV1QwZmxXMFlXYklTQU03WVB6T3V1SGFVK2Q2UmkydmFlWmgzZzdTZ2ZZUEE5QVdmTVNZeWZBQ2pSRUMxbXdwNGg4OXp2Qmh6UmRtS1ltVkFMeHMwSjF2a0dFMjN5UkNyNkU4Z2xqOEFsb3h2K3VpOUJBckVuYkcwVGNXVXhpQjhGTUt3ai9sa0FPNW13SGRBTmZwQUpQeWlXNDBzOTRSa0lQa2tNVllMZTdxckxBSm9DdGRFZ00vMlltT3VRL0ttU1lLSTJ4U1J0MVhwblpJT2tTdUdKcmV2ditCM1JFSTJmQ1JyNkVqRG9PQUViUGVHS1Y2ZlBNUVVkZlhZaWV0c1ZMaitWekhveVFVcWxzQ2RpUFZrc3grOENrUmVBOXRWa2ZvZkJxejJSaW0rNEk5T0REOVJHdnhwMFJGOEJPTXdRRGFtc0pWMVNib1ltK20rL3ovWkNoOGtzUDhMZzd3T3dURXgvQ09CeGMzN2hVdzNQbGw2WnFudTBOanB2V1BCK0NOUUNsTEYvRkZJaDdXNXc0cnU5SlZqWGQwRElpbDBpR2xWTTBoSHYwZkozdFhTR0ZXd0hVVjI2dmpOQnh0cmhpVDI2WmtQQ0VoYUFNK1U1UGJMZURuK0VvSXdkakRBSnc3Wm1Ud0tJeXdQT25pK2xheVpZMS9jNUF0bU55cytLSGFFSjVvQ2xrd0ZIckhsNGtGdlh4NndqeVNoMzJqcE5RNWE1SGxaRUM0QmlvM3JadVFNRWFlMHBGQUg4ZU1GOHZPNjN4KzQzYWk3azdDa2RNczhkQU9NWkFOZXJTN0hxU3prcm42QUR0dTRTczlsMEZ2cXRNVUI0VVJCdjhyWlZ2cVkySGFqdnY1VmtaUThERHlSd0dRZm9IclZhSkd2ZjRKRDkyQ0pCOHBNQW5BbldJUlBZYjdITWVlVEJ3OS84RndBY3J1OHZHcEdWSFFDMkFNalg4ME9FbUZCNG8xYTNtZFVpQkFCQ2p0amRndm5uSUN4UElEb0kwSE1FTWNxZ2J3TzRNWUg4bXlEYTdBNVhSUFdFc3A0QVlMd2ZDRG43VmpQNHAyRGNrcWE1UVNZOGNlVjk3RFh5SXAwVkNiaks0ZnIrb2hGRmJnVFRkaVM0dFZVUVROUkdQTnJvanF3eWZKSTlxeEp3bFlQMi9rL0xrbWdoNW5xREtpY2xJVzJZK1BjZ0tXWmxBcTRTY3ZhVUtreXRCUHFDaHNnNUVIYTZ3aFZIQ0pSU2NUMTdLa0VWMW9aWEhyK3c1UFF5RUI3RTVMWjc0ckRFUEtmZ05uZlllampWNE1kTi9aOXc2S0huNXlzamVhc0ZwRHlMTEg2VDdnRk5qaHc1Y3VUSWtTUEhmd0dhdC95Yy9CUFBad0FBQUFCSlJVNUVya0pnZ2c9PVwiLFxuICByaW5rZWJ5OlxuICAgIFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFEQUFBQUF3Q0FZQUFBQlhBdm1IQUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBRmowbEVRVlJvZ2UxWlcyd1VWUmorenN6c2JQZlczUVdpUUFnQkF4Um9wSzBCNU1GRU1jYWdScEtHcEVBVkZHSkVhU1doYUVzcmtpRmVZR2xpSDdBRW9tMkJJb1UxRVJPVmFDUWhHcnpGaDVZU0xxVkV4UXFDcUxUZG5aM1puY3Z4b2F4Wmx4MTJkbVkySm9idmJjLzV6Ly85MzU3TGZHY0d1SVAvT2ZiM0RGUkgzdW5iVWF6OHBGaUpBZURnd2NGUzFVWFBYUHg1ZEhMSTU3M241ZnE1bDV6bVlKeE9tQW1GcFJGS01VWFRLQ09yeVUrTHdWRTBBVjJIQnhlQjRQbjBiekdobG0vZmMycTkwenhGRVJDTm51RUIycEdkWDRxcGJXMXR2U0VudVlvaVFOUzRGZ0J6czlzVlJlY2xsaHgxa3N0eEFSM1I4MlVncE1tb1B5NHFEN1cybjNyU0tUNUhCUWdDWlZpTmVROUFpVkVNcFVCY1ZnOEpBdVdjNEhSVXdOVFpGOWRSZ2dmeXhhV1N1cDhmMzMvQUNVN0hCSFIzbjUxRVFOOHlHeDlQS0N1MnQvY3VzTXZybUFDRjU5b0JtRDVocUVhSmtzSkhkbmtkRWJDL1o2Q2FVRlFYT2s2UzFNbDJiWVp0SzVHMkM1UmlpbEhNaFI5SERNZXpMTkh0MkF6Yk01QzJDMWJIMjdVWnRnUmsyd1dyc0dNekxBc3dzZ3RXWWRWbVdDWTNzZ3RwVUFyRVJBVkRWK0s0ZGwyR0tLcWcxRGlmVlp0aGFSTjNSTStYTVRyVGh4eFBYRTNUTVJKWE1EeWNncXJwQUlDaHl5SUFnR1VJdkQ0T0FaOExMSHNyTlNGQXVKUmYra3BkeGNkRkV5QUlsSmxXTnZobDloTlhUbW9ZSFUxaEpLNkFadjNWYVFHWnBDVWVEZ0VmQjdlYi9WY2Y3MmJpSkhaZldCQ0lhcWFlZ3YzSTFOa1gxMUdNRlU4cEVFOG9HQjVKUXBJMTB6a29BRWxTSVVrcWVKNkYzOHZCNitWQXlKak5DSXpaakZvenVRcWFnZTd1czVOVUYzZFcwL1JROWpLNUhiSm5JQmN5bHhmSE16VGdaKzl2cnF2NklkKzRnbVpnUkNQdmk4TlNLTmN5c1F0TnA0akZGTVJqQ2tvOEhORlNydU1BZ3ZuR0ZYUUt4VVhsczRTa3lrNFhud2tLUUZFMEtCcnRNeE5mK0NidU9sSGlqb2ZmRlJOcXJhWlJVMytBbVNVRUFBeERFQ3pscjQ4UGxzNFRHc3V2bWhsajJRdTE3am8vWGRYbFE3R0VzaWpmaE9RVFFBRDRmSzdVaEpDMytvMldxbU9GMUZHUWdLNmV3VlZnMWI0MU5YTk9wOXQydHZjOUtpZjFEa25XRFAzUTdRUzRlWlpPQ0xzamthMExtek56YWpxenBQbWxlUTM1YWlwSXdJRURwM3c2Ny9sT0I3NEJRN2FzclpsNVBkMjNvNzIvVVJLVmJTbFZ2K1hobGtzQXh4R01DN3UvZWx0WTlHQzZMVDJyVWtxdkNrL1VwMjljTmY4M1J3VUFRRmYwM0wzUTJlOEJ5S0FrNG1OVGJUVTE1U25BZUg5a0NzaTF6alBINlJwbFFrRyt0ckd1b3NkTVBaYjJRT2ZoZ1hvQ3N1dG1pZ3NBdHF4Wk1mT0RkSC8yL2hpNkxCcXU4eDN0L1kxU1F0bVdVc1ptTHVoM1JUZHZxRnh1dGhiTG03anp5SVVQTTI5aEJEaE9HYTBoYzMrMDdqMzlSRUpVdTM2OUxJNFBqM08vdnZQVkJjSS9oZS91Znl3cGEvdGtXYjByM2VaMXU2NXVhYWlZVEFneGZVNWJGdEIxOUtjUWtrb3ZnR2taeVZRZDZNemVINWt3T3IxWWptaWxwZXljeGhlcUJndXB3OWFWY245MFlLR3VrNU1BWEZsZE44enVqM1FWb2FEcnhhYjFsWHNLcmNIMm5ianp5RUF6b1NUbjZ4UUtuR05CTjEzN0kxRVZsK2hXUmRIY3VlSUNmdjd6bGcwVlM2encyNzVOL1hKdVZnUUVYK1RxSThBY0hlVFlqVkgxVGFQaVM5enNqZFJFYnFsVmZ0c0NCSUhvYkpKNUdnUjV6K3hzY0F6UlBReDVXTGk1ekt6QWtmdnM2dFV6Zm1mQVBBWEEvS1VBZ04vUHR6UnVyREpsMm96ZzJKdTVaNWJQT0FIUVZyUHhBUy8vYlZQOXZJaGRYa2RmN2w2Nis4cHJBUGs2WDV5TFo4U1VSM25FQ1U1blg2OHZYcXhTU2xhQzRrK2pHTUlTNnZXd1M0UjE4eE5PY0RyK2dXUHR5aGxEbE9CWmpOMU5ia0hReCszY1hGZDUwaW0rb254aVdydGkxaWNnWkhkMnU5L0w5VGZWVjI1MmtxdG9YeWxqQVd5aVFHLzZOODh4c3NmUEwzYWFwMmdDTmp3K002a3pUQTJBR0VNQW45ZTFyT0c1OHIrS3hWYzA3RHM4c0RxeXEzL3ZmMTNISFJRTGZ3Tmg3NEZtUGdUaE9nQUFBQUJKUlU1RXJrSmdnZz09XCIsXG4gIG9wdGltaXNtOlxuICAgIFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFEQUFBQUF3Q0FZQUFBQlhBdm1IQUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBRmowbEVRVlJvZ2UxWlcyd1VWUmorenN6c2JQZlczUVdpUUFnQkF4Um9wSzBCNU1GRU1jYWdScEtHcEVBVkZHSkVhU1doYUVzcmtpRmVZR2xpSDdBRW9tMkJJb1UxRVJPVmFDUWhHcnpGaDVZU0xxVkV4UXFDcUxUZG5aM1puY3Z4b2F4Wmx4MTJkbVkySm9idmJjLzV6Ly85MzU3TGZHY0d1SVAvT2ZiM0RGUkgzdW5iVWF6OHBGaUpBZURnd2NGUzFVWFBYUHg1ZEhMSTU3M241ZnE1bDV6bVlKeE9tQW1GcFJGS01VWFRLQ09yeVUrTHdWRTBBVjJIQnhlQjRQbjBiekdobG0vZmMycTkwenhGRVJDTm51RUIycEdkWDRxcGJXMXR2U0VudVlvaVFOUzRGZ0J6czlzVlJlY2xsaHgxa3N0eEFSM1I4MlVncE1tb1B5NHFEN1cybjNyU0tUNUhCUWdDWlZpTmVROUFpVkVNcFVCY1ZnOEpBdVdjNEhSVXdOVFpGOWRSZ2dmeXhhV1N1cDhmMzMvQUNVN0hCSFIzbjUxRVFOOHlHeDlQS0N1MnQvY3VzTXZybUFDRjU5b0JtRDVocUVhSmtzSkhkbmtkRWJDL1o2Q2FVRlFYT2s2UzFNbDJiWVp0SzVHMkM1UmlpbEhNaFI5SERNZXpMTkh0MkF6Yk01QzJDMWJIMjdVWnRnUmsyd1dyc0dNekxBc3dzZ3RXWWRWbVdDWTNzZ3RwVUFyRVJBVkRWK0s0ZGwyR0tLcWcxRGlmVlp0aGFSTjNSTStYTVRyVGh4eFBYRTNUTVJKWE1EeWNncXJwQUlDaHl5SUFnR1VJdkQ0T0FaOExMSHNyTlNGQXVKUmYra3BkeGNkRkV5QUlsSmxXTnZobDloTlhUbW9ZSFUxaEpLNkFadjNWYVFHWnBDVWVEZ0VmQjdlYi9WY2Y3MmJpSkhaZldCQ0lhcWFlZ3YzSTFOa1gxMUdNRlU4cEVFOG9HQjVKUXBJMTB6a29BRWxTSVVrcWVKNkYzOHZCNitWQXlKak5DSXpaakZvenVRcWFnZTd1czVOVUYzZFcwL1JROWpLNUhiSm5JQmN5bHhmSE16VGdaKzl2cnF2NklkKzRnbVpnUkNQdmk4TlNLTmN5c1F0TnA0akZGTVJqQ2tvOEhORlNydU1BZ3ZuR0ZYUUt4VVhsczRTa3lrNFhud2tLUUZFMEtCcnRNeE5mK0NidU9sSGlqb2ZmRlJOcXJhWlJVMytBbVNVRUFBeERFQ3pscjQ4UGxzNFRHc3V2bWhsajJRdTE3am8vWGRYbFE3R0VzaWpmaE9RVFFBRDRmSzdVaEpDMytvMldxbU9GMUZHUWdLNmV3VlZnMWI0MU5YTk9wOXQydHZjOUtpZjFEa25XRFAzUTdRUzRlWlpPQ0xzamthMExtek56YWpxenBQbWxlUTM1YWlwSXdJRURwM3c2Ny9sT0I3NEJRN2FzclpsNVBkMjNvNzIvVVJLVmJTbFZ2K1hobGtzQXh4R01DN3UvZWx0WTlHQzZMVDJyVWtxdkNrL1VwMjljTmY4M1J3VUFRRmYwM0wzUTJlOEJ5S0FrNG1OVGJUVTE1U25BZUg5a0NzaTF6alBINlJwbFFrRyt0ckd1b3NkTVBaYjJRT2ZoZ1hvQ3N1dG1pZ3NBdHF4Wk1mT0RkSC8yL2hpNkxCcXU4eDN0L1kxU1F0bVdVc1ptTHVoM1JUZHZxRnh1dGhiTG03anp5SVVQTTI5aEJEaE9HYTBoYzMrMDdqMzlSRUpVdTM2OUxJNFBqM08vdnZQVkJjSS9oZS91Znl3cGEvdGtXYjByM2VaMXU2NXVhYWlZVEFneGZVNWJGdEIxOUtjUWtrb3ZnR2taeVZRZDZNemVINWt3T3IxWWptaWxwZXljeGhlcUJndXB3OWFWY245MFlLR3VrNU1BWEZsZE44enVqM1FWb2FEcnhhYjFsWHNLcmNIMm5ianp5RUF6b1NUbjZ4UUtuR05CTjEzN0kxRVZsK2hXUmRIY3VlSUNmdjd6bGcwVlM2encyNzVOL1hKdVZnUUVYK1RxSThBY0hlVFlqVkgxVGFQaVM5enNqZFJFYnFsVmZ0c0NCSUhvYkpKNUdnUjV6K3hzY0F6UlBReDVXTGk1ekt6QWtmdnM2dFV6Zm1mQVBBWEEvS1VBZ04vUHR6UnVyREpsMm96ZzJKdTVaNWJQT0FIUVZyUHhBUy8vYlZQOXZJaGRYa2RmN2w2Nis4cHJBUGs2WDV5TFo4U1VSM25FQ1U1blg2OHZYcXhTU2xhQzRrK2pHTUlTNnZXd1M0UjE4eE5PY0RyK2dXUHR5aGxEbE9CWmpOMU5ia0hReCszY1hGZDUwaW0rb254aVdydGkxaWNnWkhkMnU5L0w5VGZWVjI1MmtxdG9YeWxqQVd5aVFHLzZOODh4c3NmUEwzYWFwMmdDTmp3K002a3pUQTJBR0VNQW45ZTFyT0c1OHIrS3hWYzA3RHM4c0RxeXEzL3ZmMTNISFJRTGZ3Tmg3NEZtUGdUaE9nQUFBQUJKUlU1RXJrSmdnZz09XCIsXG59O1xuXG5jb25zdCBOYXZCYXIgPSAoKSA9PiB7XG4gIGNvbnN0IHJvdXRlciA9IHVzZVJvdXRlcigpO1xuICBjb25zdCB7IGlzT3Blbiwgb25PcGVuLCBvbkNsb3NlIH0gPSB1c2VEaXNjbG9zdXJlKCk7XG4gIGNvbnN0IHsgY2hhaW4sIHN3aXRjaENoYWluIH0gPSB1c2VDaGFpbigpO1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IChlOiBhbnkpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgdmFsdWUgPSBlLnRhcmdldC5lbGVtZW50cy5zZWFyY2gudmFsdWU7XG4gICAgcm91dGVyLnB1c2goYHNlYXJjaD9hZGRyZXNzPSR7dmFsdWV9YCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmJhY2tncm91bmR9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5uYXZiYXJ9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmxlZnRQYXJ0aXRpb259PlxuICAgICAgICAgIDxUb29sdGlwIGxhYmVsPVwiQnVybiB5b3VyIGhhY2tlZCB3YWxsZXRcIj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogXCJmbGV4XCIgfX0+XG4gICAgICAgICAgICAgIDxMaW5rIGhyZWY9XCIvXCIgcGFzc0hyZWY+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy5ob21lfT7wn5SlPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICA8VG9vbHRpcCBsYWJlbD1cIlJlYWQgb3VyIERvY3VtZW50YXRpb25cIj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogXCJmbGV4XCIgfX0+XG4gICAgICAgICAgICAgIDxMaW5rIGhyZWY9XCJodHRwczovL2RvY3MuYnVybm15d2FsbGV0LmNvbVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPXtzdHlsZXMuaG9tZX0+RG9jczwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgPFRvb2x0aXAgbGFiZWw9XCJKb2luIG91ciBjb21tdW5pdHlcIj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogXCJmbGV4XCIgfX0+XG4gICAgICAgICAgICAgIDxMaW5rIGhyZWY9XCJodHRwczovL2Rpc2NvcmQuZ2cveU12UVROUFBTOVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPXtzdHlsZXMuaG9tZX0+RGlzY29yZDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgPFRvb2x0aXAgbGFiZWw9XCJTZWFyY2ggaWYgYSB3YWxsZXQgaXMgbWFya2VkIGFzIGNvbXByb21pc2VkXCI+XG4gICAgICAgICAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlU3VibWl0fSBjbGFzc05hbWU9e3N0eWxlcy5zZWFyY2hCYXJ9PlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICBwYXR0ZXJuPVwiLipcXFMuKlwiXG4gICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICBpZD1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciB3YWxsZXQgYWRkcmVzc1wiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPXtzdHlsZXMuc2VhcmNoQnRufSB0eXBlPVwic3VibWl0XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+U2VhcmNoPC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxIU3RhY2s+XG4gICAgICAgICAgPFRvb2x0aXAgbGFiZWw9XCJTd2l0Y2ggbmV0d29ya1wiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IFwiMjBweFwiLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBcIjIwMHB4XCIsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxNZW51IGNvbG9yU2NoZW1lPVwiZmFjZWJvb2tcIj5cbiAgICAgICAgICAgICAgICA8TWVudUJ1dHRvbiBhcz17RHJvcGRvd259IHJpZ2h0SWNvbj17PENoZXZyb25Eb3duSWNvbiAvPn0+XG4gICAgICAgICAgICAgICAgICA8SFN0YWNrPlxuICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICBib3hTaXplPVwiMnJlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPVwiZnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgc3JjPXtpbWFnZXNNYXBbY2hhaW4ubmFtZV19XG4gICAgICAgICAgICAgICAgICAgICAgbXI9XCIxMnB4XCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj57dGVzdG5ldE1hcFtjaGFpbi5uYW1lXX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvSFN0YWNrPlxuICAgICAgICAgICAgICAgIDwvTWVudUJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8TWVudUxpc3QgYmdDb2xvcj1cImZhY2Vib29rLjkwMFwiPlxuICAgICAgICAgICAgICAgICAgPE1lbnVJdGVtXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHN3aXRjaENoYWluKFwicmlua2VieVwiKX1cbiAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1N0YXJ0PXs4fVxuICAgICAgICAgICAgICAgICAgICBhcz17RHJvcGRvd259XG4gICAgICAgICAgICAgICAgICAgIG1pbkg9XCI0OHB4XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgYm94U2l6ZT1cIjJyZW1cIlxuICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cz1cImZ1bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIHNyYz17aW1hZ2VzTWFwLnJpbmtlYnl9XG4gICAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJFdGhlcmV1bSAtIFJpbmtlYnlcIlxuICAgICAgICAgICAgICAgICAgICAgIG1yPVwiMTJweFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxUb29sdGlwIGxhYmVsPVwiRXRoZXJldW0gLSBSaW5rZWJ5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+RXRoZXJldW08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgICA8TWVudUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc3dpdGNoQ2hhaW4oXCJtdW1iYWlcIil9XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmdTdGFydD17OX1cbiAgICAgICAgICAgICAgICAgICAgYXM9e0Ryb3Bkb3dufVxuICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICBtaW5IPVwiNDBweFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgIGJveFNpemU9XCIycmVtXCJcbiAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM9XCJmdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzcmM9e2ltYWdlc01hcC5tdW1iYWl9XG4gICAgICAgICAgICAgICAgICAgICAgYWx0PVwiUG9seWdvbiAtIE11bWJhaVwiXG4gICAgICAgICAgICAgICAgICAgICAgbXI9XCIxMnB4XCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXAgbGFiZWw9XCJQb2x5Z29uIC0gTXVtYmFpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+UG9seWdvbjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgPC9NZW51SXRlbT5cbiAgICAgICAgICAgICAgICAgIDxNZW51SXRlbVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kaXNhYmxlZEJ0bn1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1N0YXJ0PXsxMH1cbiAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgYXM9e0J1dHRvbn1cbiAgICAgICAgICAgICAgICAgICAgbWluSD1cIjQwcHhcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IG1hcmdpblJpZ2h0OiBcIjEycHhcIiB9fT7wn5S0PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxUb29sdGlwIGxhYmVsPVwiQ29taW5nIHNvb24gLi4uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+T3B0aW1pc208L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgPC9NZW51TGlzdD5cbiAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgIDxUb29sdGlwIGxhYmVsPVwiSG93IGNhbiB5b3Uga2VlcCB5b3Vyc2VsZiBzYWZlP1wiPlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiBcImZsZXhcIiB9fT5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy5ob21lfSBvbkNsaWNrPXtvbk9wZW59PlxuICAgICAgICAgICAgICAgIPCfp5HigI3wn5qSIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMucmlnaHR9PlNhZmV0eSBmaXJzdDwvZGl2PlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgPC9IU3RhY2s+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxBYm91dE1vZGFsIGlzT3Blbj17aXNPcGVufSBvbkNsb3NlPXtvbkNsb3NlfSAvPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZnVuY3Rpb24gQWJvdXRNb2RhbCh7XG4gIGlzT3BlbixcbiAgb25DbG9zZSxcbn06IHtcbiAgaXNPcGVuOiBib29sZWFuO1xuICBvbkNsb3NlOiAoKSA9PiB2b2lkO1xufSkge1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8TW9kYWwgaXNPcGVuPXtpc09wZW59IG9uQ2xvc2U9e29uQ2xvc2V9IHNpemU9XCIzeGxcIj5cbiAgICAgICAgPE1vZGFsT3ZlcmxheSAvPlxuICAgICAgICA8TW9kYWxDb250ZW50PlxuICAgICAgICAgIDxNb2RhbEhlYWRlciBzdHlsZT17eyB0ZXh0QWxpZ246IFwiY2VudGVyXCIgfX0+XG4gICAgICAgICAgICDwn5KB8J+PveKAjeKZgu+4jyBTbyBZb3UndmUgQmVlbiBIYWNrZWQuLi5cbiAgICAgICAgICA8L01vZGFsSGVhZGVyPlxuICAgICAgICAgIDxNb2RhbENsb3NlQnV0dG9uIC8+XG4gICAgICAgICAgPE1vZGFsQm9keT5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgcGFkZGluZzogXCIwIDMwcHhcIiB9fT5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXtzdHlsZXMubW9kYWxCb2R5fT5cbiAgICAgICAgICAgICAgICDwn6qmIFNvcnJ5IG15IGZyaWVuZCwgYnV0IGl0J3MgZ29uZS5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9e3N0eWxlcy5tb2RhbEJvZHl9PlxuICAgICAgICAgICAgICAgIPCflJEgSWYgeW91IGxvc3QgeW91ciBzZWVkcGhyYXNlLCB5b3UndmUgbG9zdCB5b3VyIHdhbGxldCBhbmRcbiAgICAgICAgICAgICAgICB0aGVyZSdzIG5vdGhpbmcgeW91IGNhbiBkbyB0byBtYWtlIGl0IHNhZmUgYWdhaW4uXG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXtzdHlsZXMubW9kYWxCb2R5fT5cbiAgICAgICAgICAgICAgICDwn5SRIENyZWF0ZSBhIG5ldyB3YWxsZXQgYW5kIG5ldyBzZWVkIHBocmFzZS4gVHJhbnNmZXIgYW55dGhpbmdcbiAgICAgICAgICAgICAgICB5b3UgaGF2ZSBsZWZ0IGludG8gdGhlIG5ldyB3YWxsZXQuXG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXtzdHlsZXMubW9kYWxCb2R5fT5cbiAgICAgICAgICAgICAgICDwn6eKIEZvciB0aGUgc2FmZXN0IHdlYjMgZXhwZXJpZW5jZTogR2V0IGEgY29sZCB3YWxsZXQhXG4gICAgICAgICAgICAgIDwvcD5cblxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9e3N0eWxlcy5tb2RhbEJvZHl9PlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+U29tZSB0aXBzIGZvciBORlRzOjwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgS2VlcCAxIGJ1cm5lciB3YWxsZXQgZm9yIG1pbnRpbmc7IG5ldmVyIGtlZXAgbW9yZSB0aGFuIDAuMlxuICAgICAgICAgICAgICAgICAgICBldGggb3IgYW55IE5GVHMgeW91IGNhcmUgYWJvdXRcbiAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgIEtlZXAgMSB0cmFkaW5nIHdhbGxldCBmb3IgbWlkLXJhbmdlIE5GVHMgdGhhdCB5b3UgbWlnaHRcbiAgICAgICAgICAgICAgICAgICAgdHJhZGVcbiAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgIEtlZXAgMSBjb2xkIHdhbGxldCBmb3IgeW91ciBkaWFtb25kIGhhbmRlZCBORlRzOyBORVZFUlxuICAgICAgICAgICAgICAgICAgICBjb25uZWN0IHRvIGludGVybmV0IDxlbT5lc3BlY2lhbGx5PC9lbT4gcHVibGljIHdpZmlcbiAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9Nb2RhbEJvZHk+XG5cbiAgICAgICAgICA8TW9kYWxGb290ZXI+XG4gICAgICAgICAgICA8QnV0dG9uIGNvbG9yU2NoZW1lPVwiZ2hvc3RcIiBvbkNsaWNrPXtvbkNsb3NlfT5cbiAgICAgICAgICAgICAgQ2xvc2VcbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvTW9kYWxGb290ZXI+XG4gICAgICAgIDwvTW9kYWxDb250ZW50PlxuICAgICAgPC9Nb2RhbD5cbiAgICA8Lz5cbiAgKTtcbn1cbmV4cG9ydCBkZWZhdWx0IE5hdkJhcjtcbiJdLCJuYW1lcyI6WyJDaGV2cm9uRG93bkljb24iLCJUb29sdGlwIiwiTW9kYWwiLCJNb2RhbE92ZXJsYXkiLCJNb2RhbENvbnRlbnQiLCJNb2RhbEhlYWRlciIsIk1vZGFsRm9vdGVyIiwiTW9kYWxCb2R5IiwiTW9kYWxDbG9zZUJ1dHRvbiIsInVzZURpc2Nsb3N1cmUiLCJCdXR0b24iLCJIU3RhY2siLCJNZW51IiwiTWVudUJ1dHRvbiIsIk1lbnVJdGVtIiwiTWVudUxpc3QiLCJJbWFnZSIsInVzZUNoYWluIiwiTGluayIsInVzZVJvdXRlciIsInN0eWxlcyIsIkRyb3Bkb3duIiwicHJvcHMiLCJjb2xvclNjaGVtZSIsIndpZHRoIiwidGVzdG5ldE1hcCIsInJpbmtlYnkiLCJtdW1iYWkiLCJvcHRpbWlzbSIsImltYWdlc01hcCIsIk5hdkJhciIsInJvdXRlciIsImlzT3BlbiIsIm9uT3BlbiIsIm9uQ2xvc2UiLCJjaGFpbiIsInN3aXRjaENoYWluIiwiaGFuZGxlU3VibWl0IiwiZSIsInByZXZlbnREZWZhdWx0IiwidmFsdWUiLCJ0YXJnZXQiLCJlbGVtZW50cyIsInNlYXJjaCIsInB1c2giLCJkaXYiLCJjbGFzc05hbWUiLCJiYWNrZ3JvdW5kIiwibmF2YmFyIiwibGVmdFBhcnRpdGlvbiIsImxhYmVsIiwic3R5bGUiLCJkaXNwbGF5IiwiaHJlZiIsInBhc3NIcmVmIiwiYnV0dG9uIiwiaG9tZSIsImZvcm0iLCJvblN1Ym1pdCIsInNlYXJjaEJhciIsImlucHV0IiwidHlwZSIsIm5hbWUiLCJwYXR0ZXJuIiwicmVxdWlyZWQiLCJpZCIsInBsYWNlaG9sZGVyIiwic2VhcmNoQnRuIiwic3BhbiIsInBvc2l0aW9uIiwibWFyZ2luUmlnaHQiLCJhcyIsInJpZ2h0SWNvbiIsImJveFNpemUiLCJib3JkZXJSYWRpdXMiLCJzcmMiLCJtciIsImJnQ29sb3IiLCJvbkNsaWNrIiwianVzdGlmeUNvbnRlbnQiLCJwYWRkaW5nU3RhcnQiLCJtaW5IIiwiYWx0IiwiZGlzYWJsZWRCdG4iLCJkaXNhYmxlZCIsInJpZ2h0IiwiQWJvdXRNb2RhbCIsInNpemUiLCJ0ZXh0QWxpZ24iLCJwYWRkaW5nIiwicCIsIm1vZGFsQm9keSIsInN0cm9uZyIsInVsIiwibGkiLCJlbSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/NavBar.tsx\n");
+
+/***/ }),
+
+/***/ "./contexts/ChainProvider.tsx":
+/*!************************************!*\
+ !*** ./contexts/ChainProvider.tsx ***!
+ \************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ChainProvider\": () => (/* binding */ ChainProvider)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _chain__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chain */ \"./contexts/chain.ts\");\n\n\n\nconst ChainProvider = ({ children })=>{\n const { 0: chain , 1: setChain } = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(_chain__WEBPACK_IMPORTED_MODULE_2__.chains.rinkeby);\n const switchChain = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(async (name)=>{\n setChain(_chain__WEBPACK_IMPORTED_MODULE_2__.chains[name]);\n }, []);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chain__WEBPACK_IMPORTED_MODULE_2__.ChainContext.Provider, {\n value: {\n chain,\n switchChain\n },\n children: children\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/contexts/ChainProvider.tsx\",\n lineNumber: 19,\n columnNumber: 5\n }, undefined);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb250ZXh0cy9DaGFpblByb3ZpZGVyLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUF5RDtBQUVIO0FBTS9DLE1BQU1JLGFBQWEsR0FBRyxDQUFDLEVBQzVCQyxRQUFRLEdBQ1csR0FBa0I7SUFDckMsTUFBTSxFQVhSLEdBV1NDLEtBQUssR0FYZCxHQVdnQkMsUUFBUSxNQUFJTiwrQ0FBUSxDQUFRQyxrREFBYyxDQUFDO0lBRXpELE1BQU1PLFdBQVcsR0FBR1Qsa0RBQVcsQ0FBQyxPQUFPVSxJQUFZLEdBQUs7UUFDdERILFFBQVEsQ0FBQ0wsMENBQU0sQ0FBQ1EsSUFBSSxDQUFDLENBQUMsQ0FBQztLQUN4QixFQUFFLEVBQUUsQ0FBQztJQUVOLHFCQUNFLDhEQUFDUCx5REFBcUI7UUFDcEJTLEtBQUssRUFBRTtZQUNMTixLQUFLO1lBQ0xHLFdBQVc7U0FDWjtrQkFFQUosUUFBUTs7Ozs7aUJBQ2EsQ0FDeEI7Q0FDSCxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYnVybi1teS13YWxsZXQvLi9jb250ZXh0cy9DaGFpblByb3ZpZGVyLnRzeD8zMmY3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBldGhlcnMsIFNpZ25lciB9IGZyb20gXCJldGhlcnNcIjtcbmltcG9ydCB7IENoYWluLCBjaGFpbnMsIENoYWluQ29udGV4dCB9IGZyb20gXCIuL2NoYWluXCI7XG5cbnR5cGUgQ2hhaW5Qcm92aWRlclByb3BzID0ge1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmV4cG9ydCBjb25zdCBDaGFpblByb3ZpZGVyID0gKHtcbiAgY2hpbGRyZW4sXG59OiBDaGFpblByb3ZpZGVyUHJvcHMpOiBKU1guRWxlbWVudCA9PiB7XG4gIGNvbnN0IFtjaGFpbiwgc2V0Q2hhaW5dID0gdXNlU3RhdGU8Q2hhaW4+KGNoYWlucy5yaW5rZWJ5KTtcblxuICBjb25zdCBzd2l0Y2hDaGFpbiA9IHVzZUNhbGxiYWNrKGFzeW5jIChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICBzZXRDaGFpbihjaGFpbnNbbmFtZV0pO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2hhaW5Db250ZXh0LlByb3ZpZGVyXG4gICAgICB2YWx1ZT17e1xuICAgICAgICBjaGFpbixcbiAgICAgICAgc3dpdGNoQ2hhaW4sXG4gICAgICB9fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0NoYWluQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn07XG4iXSwibmFtZXMiOlsidXNlQ2FsbGJhY2siLCJ1c2VTdGF0ZSIsImNoYWlucyIsIkNoYWluQ29udGV4dCIsIkNoYWluUHJvdmlkZXIiLCJjaGlsZHJlbiIsImNoYWluIiwic2V0Q2hhaW4iLCJyaW5rZWJ5Iiwic3dpdGNoQ2hhaW4iLCJuYW1lIiwiUHJvdmlkZXIiLCJ2YWx1ZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./contexts/ChainProvider.tsx\n");
+
+/***/ }),
+
+/***/ "./contexts/chain.ts":
+/*!***************************!*\
+ !*** ./contexts/chain.ts ***!
+ \***************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ChainContext\": () => (/* binding */ ChainContext),\n/* harmony export */ \"chains\": () => (/* binding */ chains)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\nconst chains = {\n rinkeby: {\n name: \"rinkeby\",\n chainId: 4,\n contractAddress: process.env.NEXT_PUBLIC_CONTRACT_ADDRESS\n },\n mumbai: {\n name: \"mumbai\",\n chainId: 80001,\n contractAddress: process.env.NEXT_PUBLIC_CONTRACT_ADDRESS_POLYGON_MUMBAI\n }\n};\nconst ChainContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)({\n chain: chains.rinkeby,\n switchChain: async ()=>undefined\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb250ZXh0cy9jaGFpbi50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXNDO0FBUS9CLE1BQU1DLE1BQU0sR0FBMEI7SUFDM0NDLE9BQU8sRUFBRTtRQUNQQyxJQUFJLEVBQUUsU0FBUztRQUNmQyxPQUFPLEVBQUUsQ0FBQztRQUNWQyxlQUFlLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQyw0QkFBNEI7S0FDMUQ7SUFDREMsTUFBTSxFQUFFO1FBQ05OLElBQUksRUFBRSxRQUFRO1FBQ2RDLE9BQU8sRUFBRSxLQUFLO1FBQ2RDLGVBQWUsRUFBRUMsT0FBTyxDQUFDQyxHQUFHLENBQUNHLDJDQUEyQztLQUN6RTtDQUNGLENBQUM7QUFPSyxNQUFNQyxZQUFZLEdBQUdYLG9EQUFhLENBQW1CO0lBQzFEWSxLQUFLLEVBQUVYLE1BQU0sQ0FBQ0MsT0FBTztJQUNyQlcsV0FBVyxFQUFFLFVBQVlDLFNBQVM7Q0FDbkMsQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYnVybi1teS13YWxsZXQvLi9jb250ZXh0cy9jaGFpbi50cz8wMGRlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IHR5cGUgQ2hhaW4gPSB7XG4gIG5hbWU6IFwicmlua2VieVwiIHwgXCJtdW1iYWlcIiB8IFwib3B0aW1pc21cIjtcbiAgY2hhaW5JZDogbnVtYmVyO1xuICBjb250cmFjdEFkZHJlc3M6IHN0cmluZztcbn07XG5cbmV4cG9ydCBjb25zdCBjaGFpbnM6IFJlY29yZDxzdHJpbmcsIENoYWluPiA9IHtcbiAgcmlua2VieToge1xuICAgIG5hbWU6IFwicmlua2VieVwiLFxuICAgIGNoYWluSWQ6IDQsXG4gICAgY29udHJhY3RBZGRyZXNzOiBwcm9jZXNzLmVudi5ORVhUX1BVQkxJQ19DT05UUkFDVF9BRERSRVNTISxcbiAgfSxcbiAgbXVtYmFpOiB7XG4gICAgbmFtZTogXCJtdW1iYWlcIixcbiAgICBjaGFpbklkOiA4MDAwMSxcbiAgICBjb250cmFjdEFkZHJlc3M6IHByb2Nlc3MuZW52Lk5FWFRfUFVCTElDX0NPTlRSQUNUX0FERFJFU1NfUE9MWUdPTl9NVU1CQUkhLFxuICB9LFxufTtcblxuZXhwb3J0IHR5cGUgQ2hhaW5Db250ZXh0VHlwZSA9IHtcbiAgY2hhaW46IENoYWluO1xuICBzd2l0Y2hDaGFpbjogKG5hbWU6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbn07XG5cbmV4cG9ydCBjb25zdCBDaGFpbkNvbnRleHQgPSBjcmVhdGVDb250ZXh0PENoYWluQ29udGV4dFR5cGU+KHtcbiAgY2hhaW46IGNoYWlucy5yaW5rZWJ5LFxuICBzd2l0Y2hDaGFpbjogYXN5bmMgKCkgPT4gdW5kZWZpbmVkLFxufSk7XG4iXSwibmFtZXMiOlsiY3JlYXRlQ29udGV4dCIsImNoYWlucyIsInJpbmtlYnkiLCJuYW1lIiwiY2hhaW5JZCIsImNvbnRyYWN0QWRkcmVzcyIsInByb2Nlc3MiLCJlbnYiLCJORVhUX1BVQkxJQ19DT05UUkFDVF9BRERSRVNTIiwibXVtYmFpIiwiTkVYVF9QVUJMSUNfQ09OVFJBQ1RfQUREUkVTU19QT0xZR09OX01VTUJBSSIsIkNoYWluQ29udGV4dCIsImNoYWluIiwic3dpdGNoQ2hhaW4iLCJ1bmRlZmluZWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./contexts/chain.ts\n");
+
+/***/ }),
+
+/***/ "./hooks/useChain.ts":
+/*!***************************!*\
+ !*** ./hooks/useChain.ts ***!
+ \***************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _contexts_chain__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../contexts/chain */ \"./contexts/chain.ts\");\n\n\nconst useChain = ()=>{\n const context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_contexts_chain__WEBPACK_IMPORTED_MODULE_1__.ChainContext);\n if (context === undefined) {\n throw new Error(\"useChain must be used within a ChainProvider\");\n }\n return context;\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useChain);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ob29rcy91c2VDaGFpbi50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQW1DO0FBQ2dDO0FBRW5FLE1BQU1FLFFBQVEsR0FBRyxJQUF3QjtJQUN2QyxNQUFNQyxPQUFPLEdBQUdILGlEQUFVLENBQUNDLHlEQUFZLENBQUM7SUFDeEMsSUFBSUUsT0FBTyxLQUFLQyxTQUFTLEVBQUU7UUFDekIsTUFBTSxJQUFJQyxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztLQUNqRTtJQUNELE9BQU9GLE9BQU8sQ0FBQztDQUNoQjtBQUVELGlFQUFlRCxRQUFRLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9idXJuLW15LXdhbGxldC8uL2hvb2tzL3VzZUNoYWluLnRzP2JhMjQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQ2hhaW5Db250ZXh0LCBDaGFpbkNvbnRleHRUeXBlIH0gZnJvbSBcIi4uL2NvbnRleHRzL2NoYWluXCI7XG5cbmNvbnN0IHVzZUNoYWluID0gKCk6IENoYWluQ29udGV4dFR5cGUgPT4ge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChDaGFpbkNvbnRleHQpO1xuICBpZiAoY29udGV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlQ2hhaW4gbXVzdCBiZSB1c2VkIHdpdGhpbiBhIENoYWluUHJvdmlkZXJcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1c2VDaGFpbjtcbiJdLCJuYW1lcyI6WyJ1c2VDb250ZXh0IiwiQ2hhaW5Db250ZXh0IiwidXNlQ2hhaW4iLCJjb250ZXh0IiwidW5kZWZpbmVkIiwiRXJyb3IiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./hooks/useChain.ts\n");
+
+/***/ }),
+
+/***/ "./node_modules/next/dist/client/head-manager.js":
+/*!*******************************************************!*\
+ !*** ./node_modules/next/dist/client/head-manager.js ***!
+ \*******************************************************/
+/***/ ((module, exports) => {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = initHeadManager;\nexports.isEqualNode = isEqualNode;\nexports.DOMAttributeNames = void 0;\nfunction initHeadManager() {\n let updatePromise = null;\n return {\n mountedInstances: new Set(),\n updateHead: (head)=>{\n const promise = updatePromise = Promise.resolve().then(()=>{\n if (promise !== updatePromise) return;\n updatePromise = null;\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=\"${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 };\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({ type , props }) {\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 || j === void 0 ? void 0 : j.previousElementSibling) || null){\n var ref;\n if ((j === null || j === void 0 ? void 0 : (ref = j.tagName) === null || ref === void 0 ? 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 || ref === void 0 ? void 0 : ref.removeChild(t);\n });\n newTags.forEach((t)=>headEl.insertBefore(t, headCountEl)\n );\n headCountEl.content = (headCount - oldTags.length + newTags.length).toString();\n}\nif (typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) {\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=head-manager.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9oZWFkLW1hbmFnZXIuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxLQUFLLEVBQUUsSUFBSTtDQUNkLEVBQUMsQ0FBQztBQUNIRCxrQkFBZSxHQUFHRyxlQUFlLENBQUM7QUFDbENILG1CQUFtQixHQUFHSSxXQUFXLENBQUM7QUFDbENKLHlCQUF5QixHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ25DLFNBQVNHLGVBQWUsR0FBRztJQUN2QixJQUFJRyxhQUFhLEdBQUcsSUFBSTtJQUN4QixPQUFPO1FBQ0hDLGdCQUFnQixFQUFFLElBQUlDLEdBQUcsRUFBRTtRQUMzQkMsVUFBVSxFQUFFLENBQUNDLElBQUksR0FBRztZQUNoQixNQUFNQyxPQUFPLEdBQUdMLGFBQWEsR0FBR00sT0FBTyxDQUFDQyxPQUFPLEVBQUUsQ0FBQ0MsSUFBSSxDQUFDLElBQUk7Z0JBQ3ZELElBQUlILE9BQU8sS0FBS0wsYUFBYSxFQUFFLE9BQU87Z0JBQ3RDQSxhQUFhLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixNQUFNUyxJQUFJLEdBQUcsRUFBRTtnQkFDZkwsSUFBSSxDQUFDTSxPQUFPLENBQUMsQ0FBQ0MsQ0FBQyxHQUFHO29CQUNkLElBQ0Esb0VBQW9FO29CQUNwRUEsQ0FBQyxDQUFDQyxJQUFJLEtBQUssTUFBTSxJQUFJRCxDQUFDLENBQUNFLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO3dCQUNsRCxJQUFJQyxRQUFRLENBQUNDLGFBQWEsQ0FBQyxDQUFDLGlCQUFpQixFQUFFSixDQUFDLENBQUNFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFOzRCQUN0RSxPQUFPO3lCQUNWLE1BQU07NEJBQ0hGLENBQUMsQ0FBQ0UsS0FBSyxDQUFDRyxJQUFJLEdBQUdMLENBQUMsQ0FBQ0UsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDOzRCQUNwQ0YsQ0FBQyxDQUFDRSxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUdJLFNBQVMsQ0FBQzt5QkFDcEM7cUJBQ0o7b0JBQ0QsTUFBTUMsVUFBVSxHQUFHVCxJQUFJLENBQUNFLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLElBQUksRUFBRTtvQkFDckNNLFVBQVUsQ0FBQ0MsSUFBSSxDQUFDUixDQUFDLENBQUMsQ0FBQztvQkFDbkJGLElBQUksQ0FBQ0UsQ0FBQyxDQUFDQyxJQUFJLENBQUMsR0FBR00sVUFBVSxDQUFDO2lCQUM3QixDQUFDLENBQUM7Z0JBQ0gsTUFBTUUsY0FBYyxHQUFHWCxJQUFJLENBQUNZLEtBQUssR0FBR1osSUFBSSxDQUFDWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSTtnQkFDeEQsSUFBSUEsS0FBSyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSUQsY0FBYyxFQUFFO29CQUNoQixNQUFNLEVBQUVFLFFBQVEsR0FBRyxHQUFHRixjQUFjLENBQUNQLEtBQUs7b0JBQzFDUSxLQUFLLEdBQUcsT0FBT0MsUUFBUSxLQUFLLFFBQVEsR0FBR0EsUUFBUSxHQUFHQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0YsUUFBUSxDQUFDLEdBQUdBLFFBQVEsQ0FBQ0csSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztpQkFDdEc7Z0JBQ0QsSUFBSUosS0FBSyxLQUFLUCxRQUFRLENBQUNPLEtBQUssRUFBRVAsUUFBUSxDQUFDTyxLQUFLLEdBQUdBLEtBQUssQ0FBQztnQkFDckQ7b0JBQ0ksTUFBTTtvQkFDTixNQUFNO29CQUNOLE1BQU07b0JBQ04sT0FBTztvQkFDUCxRQUFRO2lCQUNYLENBQUNYLE9BQU8sQ0FBQyxDQUFDRSxJQUFJLEdBQUc7b0JBQ2RjLGNBQWMsQ0FBQ2QsSUFBSSxFQUFFSCxJQUFJLENBQUNHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2lCQUMxQyxDQUFDLENBQUM7YUFDTixDQUFDO1NBQ0w7S0FDSixDQUFDO0NBQ0w7QUFDRCxNQUFNYixpQkFBaUIsR0FBRztJQUN0QjRCLGFBQWEsRUFBRSxnQkFBZ0I7SUFDL0JDLFNBQVMsRUFBRSxPQUFPO0lBQ2xCQyxPQUFPLEVBQUUsS0FBSztJQUNkQyxTQUFTLEVBQUUsWUFBWTtJQUN2QkMsUUFBUSxFQUFFLFVBQVU7Q0FDdkI7QUFDRHJDLHlCQUF5QixHQUFHSyxpQkFBaUIsQ0FBQztBQUM5QyxTQUFTaUMsaUJBQWlCLENBQUMsRUFBRXBCLElBQUksR0FBR0MsS0FBSyxHQUFHLEVBQUU7SUFDMUMsTUFBTW9CLEVBQUUsR0FBR25CLFFBQVEsQ0FBQ29CLGFBQWEsQ0FBQ3RCLElBQUksQ0FBQztJQUN2QyxJQUFJLE1BQU11QixDQUFDLElBQUl0QixLQUFLLENBQUM7UUFDakIsSUFBSSxDQUFDQSxLQUFLLENBQUN1QixjQUFjLENBQUNELENBQUMsQ0FBQyxFQUFFLFNBQVM7UUFDdkMsSUFBSUEsQ0FBQyxLQUFLLFVBQVUsSUFBSUEsQ0FBQyxLQUFLLHlCQUF5QixFQUFFLFNBQVM7UUFDbEUsNkNBQTZDO1FBQzdDLElBQUl0QixLQUFLLENBQUNzQixDQUFDLENBQUMsS0FBS2xCLFNBQVMsRUFBRSxTQUFTO1FBQ3JDLE1BQU1vQixJQUFJLEdBQUd0QyxpQkFBaUIsQ0FBQ29DLENBQUMsQ0FBQyxJQUFJQSxDQUFDLENBQUNHLFdBQVcsRUFBRTtRQUNwRCxJQUFJMUIsSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDeUIsSUFBSSxLQUFLLE9BQU8sSUFBSUEsSUFBSSxLQUFLLE9BQU8sSUFBSUEsSUFBSSxLQUFLLFVBQVUsQ0FBQyxFQUFFO1lBQ3BGSixFQUFFLENBQUNJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQ3hCLEtBQUssQ0FBQ3NCLENBQUMsQ0FBQyxDQUFDO1NBQ3pCLE1BQU07WUFDSEYsRUFBRSxDQUFDTSxZQUFZLENBQUNGLElBQUksRUFBRXhCLEtBQUssQ0FBQ3NCLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbkM7S0FDSjtJQUNELE1BQU0sRUFBRWIsUUFBUSxHQUFHa0IsdUJBQXVCLEdBQUcsR0FBRzNCLEtBQUs7SUFDckQsSUFBSTJCLHVCQUF1QixFQUFFO1FBQ3pCUCxFQUFFLENBQUNRLFNBQVMsR0FBR0QsdUJBQXVCLENBQUNFLE1BQU0sSUFBSSxFQUFFLENBQUM7S0FDdkQsTUFBTSxJQUFJcEIsUUFBUSxFQUFFO1FBQ2pCVyxFQUFFLENBQUNVLFdBQVcsR0FBRyxPQUFPckIsUUFBUSxLQUFLLFFBQVEsR0FBR0EsUUFBUSxHQUFHQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0YsUUFBUSxDQUFDLEdBQUdBLFFBQVEsQ0FBQ0csSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUMvRztJQUNELE9BQU9RLEVBQUUsQ0FBQztDQUNiO0FBQ0QsU0FBU25DLFdBQVcsQ0FBQzhDLE1BQU0sRUFBRUMsTUFBTSxFQUFFO0lBQ2pDLElBQUlELE1BQU0sWUFBWUUsV0FBVyxJQUFJRCxNQUFNLFlBQVlDLFdBQVcsRUFBRTtRQUNoRSxNQUFNQyxLQUFLLEdBQUdGLE1BQU0sQ0FBQ0csWUFBWSxDQUFDLE9BQU8sQ0FBQztRQUMxQyw4RkFBOEY7UUFDOUYsNEZBQTRGO1FBQzVGLElBQUlELEtBQUssSUFBSSxDQUFDSCxNQUFNLENBQUNJLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN4QyxNQUFNQyxRQUFRLEdBQUdKLE1BQU0sQ0FBQ0ssU0FBUyxDQUFDLElBQUksQ0FBQztZQUN2Q0QsUUFBUSxDQUFDVixZQUFZLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ25DVSxRQUFRLENBQUNGLEtBQUssR0FBR0EsS0FBSyxDQUFDO1lBQ3ZCLE9BQU9BLEtBQUssS0FBS0gsTUFBTSxDQUFDRyxLQUFLLElBQUlILE1BQU0sQ0FBQzlDLFdBQVcsQ0FBQ21ELFFBQVEsQ0FBQyxDQUFDO1NBQ2pFO0tBQ0o7SUFDRCxPQUFPTCxNQUFNLENBQUM5QyxXQUFXLENBQUMrQyxNQUFNLENBQUMsQ0FBQztDQUNyQztBQUNELFNBQVNuQixjQUFjLENBQUNkLElBQUksRUFBRU0sVUFBVSxFQUFFO0lBQ3RDLE1BQU1pQyxNQUFNLEdBQUdyQyxRQUFRLENBQUNzQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsTUFBTUMsV0FBVyxHQUFHRixNQUFNLENBQUNwQyxhQUFhLENBQUMsNEJBQTRCLENBQUM7SUFDdEUsSUFBSXVDLElBQXFDLEVBQUU7UUFDdkMsSUFBSSxDQUFDRCxXQUFXLEVBQUU7WUFDZEUsT0FBTyxDQUFDQyxLQUFLLENBQUMsK0ZBQStGLENBQUMsQ0FBQztZQUMvRyxPQUFPO1NBQ1Y7S0FDSjtJQUNELE1BQU1DLFNBQVMsR0FBR0MsTUFBTSxDQUFDTCxXQUFXLENBQUNNLE9BQU8sQ0FBQztJQUM3QyxNQUFNQyxPQUFPLEdBQUcsRUFBRTtJQUNsQixJQUFJLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVDLENBQUMsR0FBR1QsV0FBVyxDQUFDVSxzQkFBc0IsRUFBRUYsQ0FBQyxHQUFHSixTQUFTLEVBQUVJLENBQUMsRUFBRSxFQUFFQyxDQUFDLEdBQUcsQ0FBQ0EsQ0FBQyxLQUFLLElBQUksSUFBSUEsQ0FBQyxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHQSxDQUFDLENBQUNDLHNCQUFzQixDQUFDLElBQUksSUFBSSxDQUFDO1FBQ3BKLElBQUlDLEdBQUc7UUFDUCxJQUFJLENBQUNGLENBQUMsS0FBSyxJQUFJLElBQUlBLENBQUMsS0FBSyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDRSxHQUFHLEdBQUdGLENBQUMsQ0FBQ0csT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJRCxHQUFHLEtBQUssS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUdBLEdBQUcsQ0FBQzFCLFdBQVcsRUFBRSxDQUFDLEtBQUsxQixJQUFJLEVBQUU7WUFDNUhnRCxPQUFPLENBQUN6QyxJQUFJLENBQUMyQyxDQUFDLENBQUMsQ0FBQztTQUNuQjtLQUNKO0lBQ0QsTUFBTUksT0FBTyxHQUFHaEQsVUFBVSxDQUFDaUQsR0FBRyxDQUFDbkMsaUJBQWlCLENBQUMsQ0FBQ29DLE1BQU0sQ0FBQyxDQUFDdkIsTUFBTSxHQUFHO1FBQy9ELElBQUksSUFBSXdCLENBQUMsR0FBRyxDQUFDLEVBQUVDLEdBQUcsR0FBR1YsT0FBTyxDQUFDVyxNQUFNLEVBQUVGLENBQUMsR0FBR0MsR0FBRyxFQUFFRCxDQUFDLEVBQUUsQ0FBQztZQUM5QyxNQUFNekIsTUFBTSxHQUFHZ0IsT0FBTyxDQUFDUyxDQUFDLENBQUM7WUFDekIsSUFBSXZFLFdBQVcsQ0FBQzhDLE1BQU0sRUFBRUMsTUFBTSxDQUFDLEVBQUU7Z0JBQzdCZSxPQUFPLENBQUNZLE1BQU0sQ0FBQ0gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNyQixPQUFPLEtBQUssQ0FBQzthQUNoQjtTQUNKO1FBQ0QsT0FBTyxJQUFJLENBQUM7S0FDZixDQUFDO0lBQ0ZULE9BQU8sQ0FBQ2xELE9BQU8sQ0FBQyxDQUFDK0QsQ0FBQyxHQUFHO1FBQ2pCLElBQUlULEdBQUc7UUFDUCxPQUFPLENBQUNBLEdBQUcsR0FBR1MsQ0FBQyxDQUFDQyxVQUFVLENBQUMsS0FBSyxJQUFJLElBQUlWLEdBQUcsS0FBSyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBR0EsR0FBRyxDQUFDVyxXQUFXLENBQUNGLENBQUMsQ0FBQyxDQUFDO0tBQ3hGLENBQUMsQ0FBQztJQUNIUCxPQUFPLENBQUN4RCxPQUFPLENBQUMsQ0FBQytELENBQUMsR0FBR3RCLE1BQU0sQ0FBQ3lCLFlBQVksQ0FBQ0gsQ0FBQyxFQUFFcEIsV0FBVyxDQUFDO0lBQUEsQ0FDdkQsQ0FBQztJQUNGQSxXQUFXLENBQUNNLE9BQU8sR0FBRyxDQUFDRixTQUFTLEdBQUdHLE9BQU8sQ0FBQ1csTUFBTSxHQUFHTCxPQUFPLENBQUNLLE1BQU0sQ0FBQyxDQUFDTSxRQUFRLEVBQUUsQ0FBQztDQUNsRjtBQUVELElBQUksT0FBT25GLE9BQU8sQ0FBQ0UsT0FBTyxLQUFLLFVBQVUsSUFBSyxPQUFPRixPQUFPLENBQUNFLE9BQU8sS0FBSyxRQUFRLElBQUlGLE9BQU8sQ0FBQ0UsT0FBTyxLQUFLLElBQUksRUFBRztJQUM5R0osTUFBTSxDQUFDc0YsTUFBTSxDQUFDcEYsT0FBTyxDQUFDRSxPQUFPLEVBQUVGLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDcUYsTUFBTSxDQUFDckYsT0FBTyxHQUFHQSxPQUFPLENBQUNFLE9BQU8sQ0FBQztDQUNsQyxDQUVELHdDQUF3QyIsInNvdXJjZXMiOlsid2VicGFjazovL2J1cm4tbXktd2FsbGV0Ly4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvaGVhZC1tYW5hZ2VyLmpzP2NhNGEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpbml0SGVhZE1hbmFnZXI7XG5leHBvcnRzLmlzRXF1YWxOb2RlID0gaXNFcXVhbE5vZGU7XG5leHBvcnRzLkRPTUF0dHJpYnV0ZU5hbWVzID0gdm9pZCAwO1xuZnVuY3Rpb24gaW5pdEhlYWRNYW5hZ2VyKCkge1xuICAgIGxldCB1cGRhdGVQcm9taXNlID0gbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgICBtb3VudGVkSW5zdGFuY2VzOiBuZXcgU2V0KCksXG4gICAgICAgIHVwZGF0ZUhlYWQ6IChoZWFkKT0+e1xuICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHVwZGF0ZVByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT57XG4gICAgICAgICAgICAgICAgaWYgKHByb21pc2UgIT09IHVwZGF0ZVByb21pc2UpIHJldHVybjtcbiAgICAgICAgICAgICAgICB1cGRhdGVQcm9taXNlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBjb25zdCB0YWdzID0ge307XG4gICAgICAgICAgICAgICAgaGVhZC5mb3JFYWNoKChoKT0+e1xuICAgICAgICAgICAgICAgICAgICBpZiAoLy8gSWYgdGhlIGZvbnQgdGFnIGlzIGxvYWRlZCBvbmx5IG9uIGNsaWVudCBuYXZpZ2F0aW9uXG4gICAgICAgICAgICAgICAgICAgIC8vIGl0IHdvbid0IGJlIGlubGluZWQuIEluIHRoaXMgY2FzZSByZXZlcnQgdG8gdGhlIG9yaWdpbmFsIGJlaGF2aW9yXG4gICAgICAgICAgICAgICAgICAgIGgudHlwZSA9PT0gJ2xpbmsnICYmIGgucHJvcHNbJ2RhdGEtb3B0aW1pemVkLWZvbnRzJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBzdHlsZVtkYXRhLWhyZWY9XCIke2gucHJvcHNbJ2RhdGEtaHJlZiddfVwiXWApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLnByb3BzLmhyZWYgPSBoLnByb3BzWydkYXRhLWhyZWYnXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLnByb3BzWydkYXRhLWhyZWYnXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRzID0gdGFnc1toLnR5cGVdIHx8IFtdO1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzLnB1c2goaCk7XG4gICAgICAgICAgICAgICAgICAgIHRhZ3NbaC50eXBlXSA9IGNvbXBvbmVudHM7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGl0bGVDb21wb25lbnQgPSB0YWdzLnRpdGxlID8gdGFncy50aXRsZVswXSA6IG51bGw7XG4gICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gJyc7XG4gICAgICAgICAgICAgICAgaWYgKHRpdGxlQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgY2hpbGRyZW4gIH0gPSB0aXRsZUNvbXBvbmVudC5wcm9wcztcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB0eXBlb2YgY2hpbGRyZW4gPT09ICdzdHJpbmcnID8gY2hpbGRyZW4gOiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSA/IGNoaWxkcmVuLmpvaW4oJycpIDogJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aXRsZSAhPT0gZG9jdW1lbnQudGl0bGUpIGRvY3VtZW50LnRpdGxlID0gdGl0bGU7XG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAnbWV0YScsXG4gICAgICAgICAgICAgICAgICAgICdiYXNlJyxcbiAgICAgICAgICAgICAgICAgICAgJ2xpbmsnLFxuICAgICAgICAgICAgICAgICAgICAnc3R5bGUnLFxuICAgICAgICAgICAgICAgICAgICAnc2NyaXB0J1xuICAgICAgICAgICAgICAgIF0uZm9yRWFjaCgodHlwZSk9PntcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlRWxlbWVudHModHlwZSwgdGFnc1t0eXBlXSB8fCBbXSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG59XG5jb25zdCBET01BdHRyaWJ1dGVOYW1lcyA9IHtcbiAgICBhY2NlcHRDaGFyc2V0OiAnYWNjZXB0LWNoYXJzZXQnLFxuICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICBodG1sRm9yOiAnZm9yJyxcbiAgICBodHRwRXF1aXY6ICdodHRwLWVxdWl2JyxcbiAgICBub01vZHVsZTogJ25vTW9kdWxlJ1xufTtcbmV4cG9ydHMuRE9NQXR0cmlidXRlTmFtZXMgPSBET01BdHRyaWJ1dGVOYW1lcztcbmZ1bmN0aW9uIHJlYWN0RWxlbWVudFRvRE9NKHsgdHlwZSAsIHByb3BzICB9KSB7XG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHR5cGUpO1xuICAgIGZvcihjb25zdCBwIGluIHByb3BzKXtcbiAgICAgICAgaWYgKCFwcm9wcy5oYXNPd25Qcm9wZXJ0eShwKSkgY29udGludWU7XG4gICAgICAgIGlmIChwID09PSAnY2hpbGRyZW4nIHx8IHAgPT09ICdkYW5nZXJvdXNseVNldElubmVySFRNTCcpIGNvbnRpbnVlO1xuICAgICAgICAvLyB3ZSBkb24ndCByZW5kZXIgdW5kZWZpbmVkIHByb3BzIHRvIHRoZSBET01cbiAgICAgICAgaWYgKHByb3BzW3BdID09PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCBhdHRyID0gRE9NQXR0cmlidXRlTmFtZXNbcF0gfHwgcC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAodHlwZSA9PT0gJ3NjcmlwdCcgJiYgKGF0dHIgPT09ICdhc3luYycgfHwgYXR0ciA9PT0gJ2RlZmVyJyB8fCBhdHRyID09PSAnbm9Nb2R1bGUnKSkge1xuICAgICAgICAgICAgZWxbYXR0cl0gPSAhIXByb3BzW3BdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKGF0dHIsIHByb3BzW3BdKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB7IGNoaWxkcmVuICwgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgIH0gPSBwcm9wcztcbiAgICBpZiAoZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpIHtcbiAgICAgICAgZWwuaW5uZXJIVE1MID0gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sIHx8ICcnO1xuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcbiAgICAgICAgZWwudGV4dENvbnRlbnQgPSB0eXBlb2YgY2hpbGRyZW4gPT09ICdzdHJpbmcnID8gY2hpbGRyZW4gOiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSA/IGNoaWxkcmVuLmpvaW4oJycpIDogJyc7XG4gICAgfVxuICAgIHJldHVybiBlbDtcbn1cbmZ1bmN0aW9uIGlzRXF1YWxOb2RlKG9sZFRhZywgbmV3VGFnKSB7XG4gICAgaWYgKG9sZFRhZyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIG5ld1RhZyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IG5vbmNlID0gbmV3VGFnLmdldEF0dHJpYnV0ZSgnbm9uY2UnKTtcbiAgICAgICAgLy8gT25seSBzdHJpcCB0aGUgbm9uY2UgaWYgYG9sZFRhZ2AgaGFzIGhhZCBpdCBzdHJpcHBlZC4gQW4gZWxlbWVudCdzIG5vbmNlIGF0dHJpYnV0ZSB3aWxsIG5vdFxuICAgICAgICAvLyBiZSBzdHJpcHBlZCBpZiB0aGVyZSBpcyBubyBjb250ZW50IHNlY3VyaXR5IHBvbGljeSByZXNwb25zZSBoZWFkZXIgdGhhdCBpbmNsdWRlcyBhIG5vbmNlLlxuICAgICAgICBpZiAobm9uY2UgJiYgIW9sZFRhZy5nZXRBdHRyaWJ1dGUoJ25vbmNlJykpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsb25lVGFnID0gbmV3VGFnLmNsb25lTm9kZSh0cnVlKTtcbiAgICAgICAgICAgIGNsb25lVGFnLnNldEF0dHJpYnV0ZSgnbm9uY2UnLCAnJyk7XG4gICAgICAgICAgICBjbG9uZVRhZy5ub25jZSA9IG5vbmNlO1xuICAgICAgICAgICAgcmV0dXJuIG5vbmNlID09PSBvbGRUYWcubm9uY2UgJiYgb2xkVGFnLmlzRXF1YWxOb2RlKGNsb25lVGFnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2xkVGFnLmlzRXF1YWxOb2RlKG5ld1RhZyk7XG59XG5mdW5jdGlvbiB1cGRhdGVFbGVtZW50cyh0eXBlLCBjb21wb25lbnRzKSB7XG4gICAgY29uc3QgaGVhZEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiAgICBjb25zdCBoZWFkQ291bnRFbCA9IGhlYWRFbC5xdWVyeVNlbGVjdG9yKCdtZXRhW25hbWU9bmV4dC1oZWFkLWNvdW50XScpO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmICghaGVhZENvdW50RWwpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1dhcm5pbmc6IG5leHQtaGVhZC1jb3VudCBpcyBtaXNzaW5nLiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9uZXh0LWhlYWQtY291bnQtbWlzc2luZycpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGhlYWRDb3VudCA9IE51bWJlcihoZWFkQ291bnRFbC5jb250ZW50KTtcbiAgICBjb25zdCBvbGRUYWdzID0gW107XG4gICAgZm9yKGxldCBpID0gMCwgaiA9IGhlYWRDb3VudEVsLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7IGkgPCBoZWFkQ291bnQ7IGkrKywgaiA9IChqID09PSBudWxsIHx8IGogPT09IHZvaWQgMCA/IHZvaWQgMCA6IGoucHJldmlvdXNFbGVtZW50U2libGluZykgfHwgbnVsbCl7XG4gICAgICAgIHZhciByZWY7XG4gICAgICAgIGlmICgoaiA9PT0gbnVsbCB8fCBqID09PSB2b2lkIDAgPyB2b2lkIDAgOiAocmVmID0gai50YWdOYW1lKSA9PT0gbnVsbCB8fCByZWYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlZi50b0xvd2VyQ2FzZSgpKSA9PT0gdHlwZSkge1xuICAgICAgICAgICAgb2xkVGFncy5wdXNoKGopO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IG5ld1RhZ3MgPSBjb21wb25lbnRzLm1hcChyZWFjdEVsZW1lbnRUb0RPTSkuZmlsdGVyKChuZXdUYWcpPT57XG4gICAgICAgIGZvcihsZXQgayA9IDAsIGxlbiA9IG9sZFRhZ3MubGVuZ3RoOyBrIDwgbGVuOyBrKyspe1xuICAgICAgICAgICAgY29uc3Qgb2xkVGFnID0gb2xkVGFnc1trXTtcbiAgICAgICAgICAgIGlmIChpc0VxdWFsTm9kZShvbGRUYWcsIG5ld1RhZykpIHtcbiAgICAgICAgICAgICAgICBvbGRUYWdzLnNwbGljZShrLCAxKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gICAgb2xkVGFncy5mb3JFYWNoKCh0KT0+e1xuICAgICAgICB2YXIgcmVmO1xuICAgICAgICByZXR1cm4gKHJlZiA9IHQucGFyZW50Tm9kZSkgPT09IG51bGwgfHwgcmVmID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZWYucmVtb3ZlQ2hpbGQodCk7XG4gICAgfSk7XG4gICAgbmV3VGFncy5mb3JFYWNoKCh0KT0+aGVhZEVsLmluc2VydEJlZm9yZSh0LCBoZWFkQ291bnRFbClcbiAgICApO1xuICAgIGhlYWRDb3VudEVsLmNvbnRlbnQgPSAoaGVhZENvdW50IC0gb2xkVGFncy5sZW5ndGggKyBuZXdUYWdzLmxlbmd0aCkudG9TdHJpbmcoKTtcbn1cblxuaWYgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpIHtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGVhZC1tYW5hZ2VyLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImRlZmF1bHQiLCJpbml0SGVhZE1hbmFnZXIiLCJpc0VxdWFsTm9kZSIsIkRPTUF0dHJpYnV0ZU5hbWVzIiwidXBkYXRlUHJvbWlzZSIsIm1vdW50ZWRJbnN0YW5jZXMiLCJTZXQiLCJ1cGRhdGVIZWFkIiwiaGVhZCIsInByb21pc2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJ0YWdzIiwiZm9yRWFjaCIsImgiLCJ0eXBlIiwicHJvcHMiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJocmVmIiwidW5kZWZpbmVkIiwiY29tcG9uZW50cyIsInB1c2giLCJ0aXRsZUNvbXBvbmVudCIsInRpdGxlIiwiY2hpbGRyZW4iLCJBcnJheSIsImlzQXJyYXkiLCJqb2luIiwidXBkYXRlRWxlbWVudHMiLCJhY2NlcHRDaGFyc2V0IiwiY2xhc3NOYW1lIiwiaHRtbEZvciIsImh0dHBFcXVpdiIsIm5vTW9kdWxlIiwicmVhY3RFbGVtZW50VG9ET00iLCJlbCIsImNyZWF0ZUVsZW1lbnQiLCJwIiwiaGFzT3duUHJvcGVydHkiLCJhdHRyIiwidG9Mb3dlckNhc2UiLCJzZXRBdHRyaWJ1dGUiLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsImlubmVySFRNTCIsIl9faHRtbCIsInRleHRDb250ZW50Iiwib2xkVGFnIiwibmV3VGFnIiwiSFRNTEVsZW1lbnQiLCJub25jZSIsImdldEF0dHJpYnV0ZSIsImNsb25lVGFnIiwiY2xvbmVOb2RlIiwiaGVhZEVsIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJoZWFkQ291bnRFbCIsInByb2Nlc3MiLCJjb25zb2xlIiwiZXJyb3IiLCJoZWFkQ291bnQiLCJOdW1iZXIiLCJjb250ZW50Iiwib2xkVGFncyIsImkiLCJqIiwicHJldmlvdXNFbGVtZW50U2libGluZyIsInJlZiIsInRhZ05hbWUiLCJuZXdUYWdzIiwibWFwIiwiZmlsdGVyIiwiayIsImxlbiIsImxlbmd0aCIsInNwbGljZSIsInQiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJ0b1N0cmluZyIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/head-manager.js\n");
+
+/***/ }),
+
+/***/ "./node_modules/next/dist/client/link.js":
+/*!***********************************************!*\
+ !*** ./node_modules/next/dist/client/link.js ***!
+ \***********************************************/
+/***/ ((module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"react\"));\nvar _router = __webpack_require__(/*! ../shared/lib/router/router */ \"./node_modules/next/dist/shared/lib/router/router.js\");\nvar _router1 = __webpack_require__(/*! ./router */ \"./node_modules/next/dist/client/router.js\");\nvar _useIntersection = __webpack_require__(/*! ./use-intersection */ \"./node_modules/next/dist/client/use-intersection.js\");\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _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}\nconst prefetched = {};\nfunction prefetch(router, href, as, options) {\n if (true) return;\n if (!(0, _router).isLocalURL(href)) return;\n // Prefetch the JSON page if asked (only in the client)\n // We need to handle a prefetch error here since we may be\n // loading with priority which can reject but we don't\n // want to force navigation since this is only a prefetch\n router.prefetch(href, as, options).catch((err)=>{\n if (true) {\n // rethrow to show invalid URL errors\n throw err;\n }\n });\n const curLocale = options && typeof options.locale !== \"undefined\" ? options.locale : router && router.locale;\n // Join on an invalid URI character\n prefetched[href + \"%\" + as + (curLocale ? \"%\" + curLocale : \"\")] = true;\n}\nfunction isModifiedEvent(event) {\n const { target } = event.currentTarget;\n return target && target !== \"_self\" || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || event.nativeEvent && event.nativeEvent.which === 2;\n}\nfunction linkClicked(e, router, href, as, replace, shallow, scroll, locale) {\n const { nodeName } = e.currentTarget;\n // anchors inside an svg have a lowercase nodeName\n const isAnchorNodeName = nodeName.toUpperCase() === \"A\";\n if (isAnchorNodeName && (isModifiedEvent(e) || !(0, _router).isLocalURL(href))) {\n // ignore click for browser’s default behavior\n return;\n }\n e.preventDefault();\n // replace state instead of push if prop is present\n router[replace ? \"replace\" : \"push\"](href, as, {\n shallow,\n locale,\n scroll\n });\n}\nconst Link = /*#__PURE__*/ _react.default.forwardRef((props, forwardedRef)=>{\n const { legacyBehavior =Boolean(false) !== true , } = props;\n if (true) {\n function createPropError(args) {\n return new Error(`Failed prop type: The prop \\`${args.key}\\` expects a ${args.expected} in \\`\\`, but got \\`${args.actual}\\` instead.` + ( false ? 0 : \"\"));\n }\n // TypeScript trick for type-guarding:\n const requiredPropsGuard = {\n href: true\n };\n const requiredProps = Object.keys(requiredPropsGuard);\n requiredProps.forEach((key)=>{\n if (key === \"href\") {\n if (props[key] == null || typeof props[key] !== \"string\" && typeof props[key] !== \"object\") {\n throw createPropError({\n key,\n expected: \"`string` or `object`\",\n actual: props[key] === null ? \"null\" : typeof props[key]\n });\n }\n } else {\n // TypeScript trick for type-guarding:\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _ = key;\n }\n });\n // TypeScript trick for type-guarding:\n const optionalPropsGuard = {\n as: true,\n replace: true,\n scroll: true,\n shallow: true,\n passHref: true,\n prefetch: true,\n locale: true,\n onClick: true,\n onMouseEnter: true,\n legacyBehavior: true\n };\n const optionalProps = Object.keys(optionalPropsGuard);\n optionalProps.forEach((key)=>{\n const valType = typeof props[key];\n if (key === \"as\") {\n if (props[key] && valType !== \"string\" && valType !== \"object\") {\n throw createPropError({\n key,\n expected: \"`string` or `object`\",\n actual: valType\n });\n }\n } else if (key === \"locale\") {\n if (props[key] && valType !== \"string\") {\n throw createPropError({\n key,\n expected: \"`string`\",\n actual: valType\n });\n }\n } else if (key === \"onClick\" || key === \"onMouseEnter\") {\n if (props[key] && valType !== \"function\") {\n throw createPropError({\n key,\n expected: \"`function`\",\n actual: valType\n });\n }\n } else if (key === \"replace\" || key === \"scroll\" || key === \"shallow\" || key === \"passHref\" || key === \"prefetch\" || key === \"legacyBehavior\") {\n if (props[key] != null && valType !== \"boolean\") {\n throw createPropError({\n key,\n expected: \"`boolean`\",\n actual: valType\n });\n }\n } else {\n // TypeScript trick for type-guarding:\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _ = key;\n }\n });\n // This hook is in a conditional but that is ok because `process.env.NODE_ENV` never changes\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const hasWarned = _react.default.useRef(false);\n if (props.prefetch && !hasWarned.current) {\n hasWarned.current = true;\n console.warn(\"Next.js auto-prefetches automatically based on viewport. The prefetch attribute is no longer needed. More: https://nextjs.org/docs/messages/prefetch-true-deprecated\");\n }\n }\n let children;\n const { href: hrefProp , as: asProp , children: childrenProp , prefetch: prefetchProp , passHref , replace , shallow , scroll , locale , onClick , onMouseEnter } = props, restProps = _objectWithoutProperties(props, [\n \"href\",\n \"as\",\n \"children\",\n \"prefetch\",\n \"passHref\",\n \"replace\",\n \"shallow\",\n \"scroll\",\n \"locale\",\n \"onClick\",\n \"onMouseEnter\"\n ]);\n children = childrenProp;\n if (legacyBehavior && typeof children === \"string\") {\n children = /*#__PURE__*/ _react.default.createElement(\"a\", null, children);\n }\n const p = prefetchProp !== false;\n const router = (0, _router1).useRouter();\n const { href , as } = _react.default.useMemo(()=>{\n const [resolvedHref, resolvedAs] = (0, _router).resolveHref(router, hrefProp, true);\n return {\n href: resolvedHref,\n as: asProp ? (0, _router).resolveHref(router, asProp) : resolvedAs || resolvedHref\n };\n }, [\n router,\n hrefProp,\n asProp\n ]);\n const previousHref = _react.default.useRef(href);\n const previousAs = _react.default.useRef(as);\n // This will return the first child, if multiple are provided it will throw an error\n let child;\n if (legacyBehavior) {\n if (true) {\n if (onClick) {\n console.warn(`\"onClick\" was passed to with \\`href\\` of \\`${hrefProp}\\` but \"legacyBehavior\" was set. The legacy behavior requires onClick be set on the child of next/link`);\n }\n if (onMouseEnter) {\n console.warn(`\"onMouseEnter\" was passed to with \\`href\\` of \\`${hrefProp}\\` but \"legacyBehavior\" was set. The legacy behavior requires onMouseEnter be set on the child of next/link`);\n }\n try {\n child = _react.default.Children.only(children);\n } catch (err) {\n if (!children) {\n throw new Error(`No children were passed to with \\`href\\` of \\`${hrefProp}\\` but one child is required https://nextjs.org/docs/messages/link-no-children`);\n }\n throw new Error(`Multiple children were passed to with \\`href\\` of \\`${hrefProp}\\` but only one child is supported https://nextjs.org/docs/messages/link-multiple-children` + ( false ? 0 : \"\"));\n }\n } else {}\n }\n const childRef = legacyBehavior ? child && typeof child === \"object\" && child.ref : forwardedRef;\n const [setIntersectionRef, isVisible, resetVisible] = (0, _useIntersection).useIntersection({\n rootMargin: \"200px\"\n });\n const setRef = _react.default.useCallback((el)=>{\n // Before the link getting observed, check if visible state need to be reset\n if (previousAs.current !== as || previousHref.current !== href) {\n resetVisible();\n previousAs.current = as;\n previousHref.current = href;\n }\n setIntersectionRef(el);\n if (childRef) {\n if (typeof childRef === \"function\") childRef(el);\n else if (typeof childRef === \"object\") {\n childRef.current = el;\n }\n }\n }, [\n as,\n childRef,\n href,\n resetVisible,\n setIntersectionRef\n ]);\n _react.default.useEffect(()=>{\n const shouldPrefetch = isVisible && p && (0, _router).isLocalURL(href);\n const curLocale = typeof locale !== \"undefined\" ? locale : router && router.locale;\n const isPrefetched = prefetched[href + \"%\" + as + (curLocale ? \"%\" + curLocale : \"\")];\n if (shouldPrefetch && !isPrefetched) {\n prefetch(router, href, as, {\n locale: curLocale\n });\n }\n }, [\n as,\n href,\n isVisible,\n locale,\n p,\n router\n ]);\n const childProps = {\n ref: setRef,\n onClick: (e)=>{\n if (true) {\n if (!e) {\n throw new Error(`Component rendered inside next/link has to pass click event to \"onClick\" prop.`);\n }\n }\n if (!legacyBehavior && typeof onClick === \"function\") {\n onClick(e);\n }\n if (legacyBehavior && child.props && typeof child.props.onClick === \"function\") {\n child.props.onClick(e);\n }\n if (!e.defaultPrevented) {\n linkClicked(e, router, href, as, replace, shallow, scroll, locale);\n }\n },\n onMouseEnter: (e)=>{\n if (!legacyBehavior && typeof onMouseEnter === \"function\") {\n onMouseEnter(e);\n }\n if (legacyBehavior && child.props && typeof child.props.onMouseEnter === \"function\") {\n child.props.onMouseEnter(e);\n }\n if ((0, _router).isLocalURL(href)) {\n prefetch(router, href, as, {\n priority: true\n });\n }\n }\n };\n // If child is an tag and doesn't have a href attribute, or if the 'passHref' property is\n // defined, we specify the current 'href', so that repetition is not needed by the user\n if (!legacyBehavior || passHref || child.type === \"a\" && !(\"href\" in child.props)) {\n const curLocale = typeof locale !== \"undefined\" ? locale : router && router.locale;\n // we only render domain locales if we are currently on a domain locale\n // so that locale links are still visitable in development/preview envs\n const localeDomain = router && router.isLocaleDomain && (0, _router).getDomainLocale(as, curLocale, router && router.locales, router && router.domainLocales);\n childProps.href = localeDomain || (0, _router).addBasePath((0, _router).addLocale(as, curLocale, router && router.defaultLocale));\n }\n return legacyBehavior ? /*#__PURE__*/ _react.default.cloneElement(child, childProps) : /*#__PURE__*/ _react.default.createElement(\"a\", Object.assign({}, restProps, childProps), children);\n});\nvar _default = Link;\nexports[\"default\"] = _default;\nif (typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) {\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=link.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9saW5rLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csS0FBSyxFQUFFLElBQUk7Q0FDZCxFQUFDLENBQUM7QUFDSEQsa0JBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUN6QixJQUFJRyxNQUFNLEdBQUdDLHNCQUFzQixDQUFDQyxtQkFBTyxDQUFDLG9CQUFPLENBQUMsQ0FBQztBQUNyRCxJQUFJQyxPQUFPLEdBQUdELG1CQUFPLENBQUMseUZBQTZCLENBQUM7QUFDcEQsSUFBSUUsUUFBUSxHQUFHRixtQkFBTyxDQUFDLDJEQUFVLENBQUM7QUFDbEMsSUFBSUcsZ0JBQWdCLEdBQUdILG1CQUFPLENBQUMsK0VBQW9CLENBQUM7QUFDcEQsU0FBU0Qsc0JBQXNCLENBQUNLLEdBQUcsRUFBRTtJQUNqQyxPQUFPQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBVSxHQUFHRCxHQUFHLEdBQUc7UUFDakNQLE9BQU8sRUFBRU8sR0FBRztLQUNmLENBQUM7Q0FDTDtBQUNELFNBQVNFLHdCQUF3QixDQUFDQyxNQUFNLEVBQUVDLFFBQVEsRUFBRTtJQUNoRCxJQUFJRCxNQUFNLElBQUksSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzlCLElBQUlFLE1BQU0sR0FBR0MsNkJBQTZCLENBQUNILE1BQU0sRUFBRUMsUUFBUSxDQUFDO0lBQzVELElBQUlHLEdBQUcsRUFBRUMsQ0FBQztJQUNWLElBQUluQixNQUFNLENBQUNvQixxQkFBcUIsRUFBRTtRQUM5QixJQUFJQyxnQkFBZ0IsR0FBR3JCLE1BQU0sQ0FBQ29CLHFCQUFxQixDQUFDTixNQUFNLENBQUM7UUFDM0QsSUFBSUssQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHRSxnQkFBZ0IsQ0FBQ0MsTUFBTSxFQUFFSCxDQUFDLEVBQUUsQ0FBQztZQUN4Q0QsR0FBRyxHQUFHRyxnQkFBZ0IsQ0FBQ0YsQ0FBQyxDQUFDLENBQUM7WUFD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SSxDQUFDLENBQUMsRUFBRWxILE9BQU8sQ0FBQyxDQUFDdUgsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFdkgsT0FBTyxDQUFDLENBQUN3SCxTQUFTLENBQUMvRixFQUFFLEVBQUVNLFNBQVMsRUFBRVIsTUFBTSxJQUFJQSxNQUFNLENBQUNrRyxhQUFhLENBQUMsQ0FBQyxDQUFDO0tBQ3JJO0lBQ0QsT0FBT2xFLGNBQWMsR0FBRyxhQUFhLENBQUMxRCxNQUFNLENBQUNELE9BQU8sQ0FBQzhILFlBQVksQ0FBQzVCLEtBQUssRUFBRWdCLFVBQVUsQ0FBQyxHQUFHLGFBQWEsQ0FBQ2pILE1BQU0sQ0FBQ0QsT0FBTyxDQUFDeUYsYUFBYSxDQUFDLEdBQUcsRUFBRTdGLE1BQU0sQ0FBQ21JLE1BQU0sQ0FBQyxFQUFFLEVBQUV2QyxTQUFTLEVBQUUwQixVQUFVLENBQUMsRUFBRS9CLFFBQVEsQ0FBQyxDQUFDO0NBQzlMLENBQUM7QUFDRixJQUFJNkMsUUFBUSxHQUFHekUsSUFBSTtBQUNuQnpELGtCQUFlLEdBQUdrSSxRQUFRLENBQUM7QUFFM0IsSUFBSSxPQUFPbEksT0FBTyxDQUFDRSxPQUFPLEtBQUssVUFBVSxJQUFLLE9BQU9GLE9BQU8sQ0FBQ0UsT0FBTyxLQUFLLFFBQVEsSUFBSUYsT0FBTyxDQUFDRSxPQUFPLEtBQUssSUFBSSxFQUFHO0lBQzlHSixNQUFNLENBQUNtSSxNQUFNLENBQUNqSSxPQUFPLENBQUNFLE9BQU8sRUFBRUYsT0FBTyxDQUFDLENBQUM7SUFDeENtSSxNQUFNLENBQUNuSSxPQUFPLEdBQUdBLE9BQU8sQ0FBQ0UsT0FBTyxDQUFDO0NBQ2xDLENBRUQsZ0NBQWdDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYnVybi1teS13YWxsZXQvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9saW5rLmpzP2U0ZjkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG52YXIgX3JlYWN0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmVhY3RcIikpO1xudmFyIF9yb3V0ZXIgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvcm91dGVyXCIpO1xudmFyIF9yb3V0ZXIxID0gcmVxdWlyZShcIi4vcm91dGVyXCIpO1xudmFyIF91c2VJbnRlcnNlY3Rpb24gPSByZXF1aXJlKFwiLi91c2UtaW50ZXJzZWN0aW9uXCIpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHtcbiAgICByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDoge1xuICAgICAgICBkZWZhdWx0OiBvYmpcbiAgICB9O1xufVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgICBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTtcbiAgICB2YXIgdGFyZ2V0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7XG4gICAgdmFyIGtleSwgaTtcbiAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgICAgICB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTtcbiAgICAgICAgZm9yKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldO1xuICAgICAgICAgICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcbiAgICAgICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7XG4gICAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG59XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7XG4gICAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gICAgdmFyIHRhcmdldCA9IHt9O1xuICAgIHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgICB2YXIga2V5LCBpO1xuICAgIGZvcihpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspe1xuICAgICAgICBrZXkgPSBzb3VyY2VLZXlzW2ldO1xuICAgICAgICBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlO1xuICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xufVxuY29uc3QgcHJlZmV0Y2hlZCA9IHt9O1xuZnVuY3Rpb24gcHJlZmV0Y2gocm91dGVyLCBocmVmLCBhcywgb3B0aW9ucykge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCAhcm91dGVyKSByZXR1cm47XG4gICAgaWYgKCEoMCwgX3JvdXRlcikuaXNMb2NhbFVSTChocmVmKSkgcmV0dXJuO1xuICAgIC8vIFByZWZldGNoIHRoZSBKU09OIHBhZ2UgaWYgYXNrZWQgKG9ubHkgaW4gdGhlIGNsaWVudClcbiAgICAvLyBXZSBuZWVkIHRvIGhhbmRsZSBhIHByZWZldGNoIGVycm9yIGhlcmUgc2luY2Ugd2UgbWF5IGJlXG4gICAgLy8gbG9hZGluZyB3aXRoIHByaW9yaXR5IHdoaWNoIGNhbiByZWplY3QgYnV0IHdlIGRvbid0XG4gICAgLy8gd2FudCB0byBmb3JjZSBuYXZpZ2F0aW9uIHNpbmNlIHRoaXMgaXMgb25seSBhIHByZWZldGNoXG4gICAgcm91dGVyLnByZWZldGNoKGhyZWYsIGFzLCBvcHRpb25zKS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgLy8gcmV0aHJvdyB0byBzaG93IGludmFsaWQgVVJMIGVycm9yc1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgY3VyTG9jYWxlID0gb3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucy5sb2NhbGUgIT09ICd1bmRlZmluZWQnID8gb3B0aW9ucy5sb2NhbGUgOiByb3V0ZXIgJiYgcm91dGVyLmxvY2FsZTtcbiAgICAvLyBKb2luIG9uIGFuIGludmFsaWQgVVJJIGNoYXJhY3RlclxuICAgIHByZWZldGNoZWRbaHJlZiArICclJyArIGFzICsgKGN1ckxvY2FsZSA/ICclJyArIGN1ckxvY2FsZSA6ICcnKV0gPSB0cnVlO1xufVxuZnVuY3Rpb24gaXNNb2RpZmllZEV2ZW50KGV2ZW50KSB7XG4gICAgY29uc3QgeyB0YXJnZXQgIH0gPSBldmVudC5jdXJyZW50VGFyZ2V0O1xuICAgIHJldHVybiB0YXJnZXQgJiYgdGFyZ2V0ICE9PSAnX3NlbGYnIHx8IGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleSB8fCBldmVudC5zaGlmdEtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQubmF0aXZlRXZlbnQgJiYgZXZlbnQubmF0aXZlRXZlbnQud2hpY2ggPT09IDI7XG59XG5mdW5jdGlvbiBsaW5rQ2xpY2tlZChlLCByb3V0ZXIsIGhyZWYsIGFzLCByZXBsYWNlLCBzaGFsbG93LCBzY3JvbGwsIGxvY2FsZSkge1xuICAgIGNvbnN0IHsgbm9kZU5hbWUgIH0gPSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgLy8gYW5jaG9ycyBpbnNpZGUgYW4gc3ZnIGhhdmUgYSBsb3dlcmNhc2Ugbm9kZU5hbWVcbiAgICBjb25zdCBpc0FuY2hvck5vZGVOYW1lID0gbm9kZU5hbWUudG9VcHBlckNhc2UoKSA9PT0gJ0EnO1xuICAgIGlmIChpc0FuY2hvck5vZGVOYW1lICYmIChpc01vZGlmaWVkRXZlbnQoZSkgfHwgISgwLCBfcm91dGVyKS5pc0xvY2FsVVJMKGhyZWYpKSkge1xuICAgICAgICAvLyBpZ25vcmUgY2xpY2sgZm9yIGJyb3dzZXLigJlzIGRlZmF1bHQgYmVoYXZpb3JcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgLy8gcmVwbGFjZSBzdGF0ZSBpbnN0ZWFkIG9mIHB1c2ggaWYgcHJvcCBpcyBwcmVzZW50XG4gICAgcm91dGVyW3JlcGxhY2UgPyAncmVwbGFjZScgOiAncHVzaCddKGhyZWYsIGFzLCB7XG4gICAgICAgIHNoYWxsb3csXG4gICAgICAgIGxvY2FsZSxcbiAgICAgICAgc2Nyb2xsXG4gICAgfSk7XG59XG5jb25zdCBMaW5rID0gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgbGVnYWN5QmVoYXZpb3IgPUJvb2xlYW4ocHJvY2Vzcy5lbnYuX19ORVhUX05FV19MSU5LX0JFSEFWSU9SKSAhPT0gdHJ1ZSAsICB9ID0gcHJvcHM7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgZnVuY3Rpb24gY3JlYXRlUHJvcEVycm9yKGFyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRXJyb3IoYEZhaWxlZCBwcm9wIHR5cGU6IFRoZSBwcm9wIFxcYCR7YXJncy5rZXl9XFxgIGV4cGVjdHMgYSAke2FyZ3MuZXhwZWN0ZWR9IGluIFxcYDxMaW5rPlxcYCwgYnV0IGdvdCBcXGAke2FyZ3MuYWN0dWFsfVxcYCBpbnN0ZWFkLmAgKyAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyBcIlxcbk9wZW4geW91ciBicm93c2VyJ3MgY29uc29sZSB0byB2aWV3IHRoZSBDb21wb25lbnQgc3RhY2sgdHJhY2UuXCIgOiAnJykpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFR5cGVTY3JpcHQgdHJpY2sgZm9yIHR5cGUtZ3VhcmRpbmc6XG4gICAgICAgIGNvbnN0IHJlcXVpcmVkUHJvcHNHdWFyZCA9IHtcbiAgICAgICAgICAgIGhyZWY6IHRydWVcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVxdWlyZWRQcm9wcyA9IE9iamVjdC5rZXlzKHJlcXVpcmVkUHJvcHNHdWFyZCk7XG4gICAgICAgIHJlcXVpcmVkUHJvcHMuZm9yRWFjaCgoa2V5KT0+e1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ2hyZWYnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzW2tleV0gPT0gbnVsbCB8fCB0eXBlb2YgcHJvcHNba2V5XSAhPT0gJ3N0cmluZycgJiYgdHlwZW9mIHByb3BzW2tleV0gIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGNyZWF0ZVByb3BFcnJvcih7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogJ2BzdHJpbmdgIG9yIGBvYmplY3RgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbDogcHJvcHNba2V5XSA9PT0gbnVsbCA/ICdudWxsJyA6IHR5cGVvZiBwcm9wc1trZXldXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gVHlwZVNjcmlwdCB0cmljayBmb3IgdHlwZS1ndWFyZGluZzpcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgICAgICAgICAgY29uc3QgXyA9IGtleTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIFR5cGVTY3JpcHQgdHJpY2sgZm9yIHR5cGUtZ3VhcmRpbmc6XG4gICAgICAgIGNvbnN0IG9wdGlvbmFsUHJvcHNHdWFyZCA9IHtcbiAgICAgICAgICAgIGFzOiB0cnVlLFxuICAgICAgICAgICAgcmVwbGFjZTogdHJ1ZSxcbiAgICAgICAgICAgIHNjcm9sbDogdHJ1ZSxcbiAgICAgICAgICAgIHNoYWxsb3c6IHRydWUsXG4gICAgICAgICAgICBwYXNzSHJlZjogdHJ1ZSxcbiAgICAgICAgICAgIHByZWZldGNoOiB0cnVlLFxuICAgICAgICAgICAgbG9jYWxlOiB0cnVlLFxuICAgICAgICAgICAgb25DbGljazogdHJ1ZSxcbiAgICAgICAgICAgIG9uTW91c2VFbnRlcjogdHJ1ZSxcbiAgICAgICAgICAgIGxlZ2FjeUJlaGF2aW9yOiB0cnVlXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG9wdGlvbmFsUHJvcHMgPSBPYmplY3Qua2V5cyhvcHRpb25hbFByb3BzR3VhcmQpO1xuICAgICAgICBvcHRpb25hbFByb3BzLmZvckVhY2goKGtleSk9PntcbiAgICAgICAgICAgIGNvbnN0IHZhbFR5cGUgPSB0eXBlb2YgcHJvcHNba2V5XTtcbiAgICAgICAgICAgIGlmIChrZXkgPT09ICdhcycpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHNba2V5XSAmJiB2YWxUeXBlICE9PSAnc3RyaW5nJyAmJiB2YWxUeXBlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBjcmVhdGVQcm9wRXJyb3Ioe1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6ICdgc3RyaW5nYCBvciBgb2JqZWN0YCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWw6IHZhbFR5cGVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdsb2NhbGUnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzW2tleV0gJiYgdmFsVHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgY3JlYXRlUHJvcEVycm9yKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiAnYHN0cmluZ2AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsOiB2YWxUeXBlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnb25DbGljaycgfHwga2V5ID09PSAnb25Nb3VzZUVudGVyJykge1xuICAgICAgICAgICAgICAgIGlmIChwcm9wc1trZXldICYmIHZhbFR5cGUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgY3JlYXRlUHJvcEVycm9yKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiAnYGZ1bmN0aW9uYCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWw6IHZhbFR5cGVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdyZXBsYWNlJyB8fCBrZXkgPT09ICdzY3JvbGwnIHx8IGtleSA9PT0gJ3NoYWxsb3cnIHx8IGtleSA9PT0gJ3Bhc3NIcmVmJyB8fCBrZXkgPT09ICdwcmVmZXRjaCcgfHwga2V5ID09PSAnbGVnYWN5QmVoYXZpb3InKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzW2tleV0gIT0gbnVsbCAmJiB2YWxUeXBlICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgY3JlYXRlUHJvcEVycm9yKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiAnYGJvb2xlYW5gJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbDogdmFsVHlwZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFR5cGVTY3JpcHQgdHJpY2sgZm9yIHR5cGUtZ3VhcmRpbmc6XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAgICAgICAgIGNvbnN0IF8gPSBrZXk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBUaGlzIGhvb2sgaXMgaW4gYSBjb25kaXRpb25hbCBidXQgdGhhdCBpcyBvayBiZWNhdXNlIGBwcm9jZXNzLmVudi5OT0RFX0VOVmAgbmV2ZXIgY2hhbmdlc1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICAgICAgY29uc3QgaGFzV2FybmVkID0gX3JlYWN0LmRlZmF1bHQudXNlUmVmKGZhbHNlKTtcbiAgICAgICAgaWYgKHByb3BzLnByZWZldGNoICYmICFoYXNXYXJuZWQuY3VycmVudCkge1xuICAgICAgICAgICAgaGFzV2FybmVkLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdOZXh0LmpzIGF1dG8tcHJlZmV0Y2hlcyBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uIHZpZXdwb3J0LiBUaGUgcHJlZmV0Y2ggYXR0cmlidXRlIGlzIG5vIGxvbmdlciBuZWVkZWQuIE1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL3ByZWZldGNoLXRydWUtZGVwcmVjYXRlZCcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGxldCBjaGlsZHJlbjtcbiAgICBjb25zdCB7IGhyZWY6IGhyZWZQcm9wICwgYXM6IGFzUHJvcCAsIGNoaWxkcmVuOiBjaGlsZHJlblByb3AgLCBwcmVmZXRjaDogcHJlZmV0Y2hQcm9wICwgcGFzc0hyZWYgLCByZXBsYWNlICwgc2hhbGxvdyAsIHNjcm9sbCAsIGxvY2FsZSAsIG9uQ2xpY2sgLCBvbk1vdXNlRW50ZXIgIH0gPSBwcm9wcywgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHByb3BzLCBbXG4gICAgICAgIFwiaHJlZlwiLFxuICAgICAgICBcImFzXCIsXG4gICAgICAgIFwiY2hpbGRyZW5cIixcbiAgICAgICAgXCJwcmVmZXRjaFwiLFxuICAgICAgICBcInBhc3NIcmVmXCIsXG4gICAgICAgIFwicmVwbGFjZVwiLFxuICAgICAgICBcInNoYWxsb3dcIixcbiAgICAgICAgXCJzY3JvbGxcIixcbiAgICAgICAgXCJsb2NhbGVcIixcbiAgICAgICAgXCJvbkNsaWNrXCIsXG4gICAgICAgIFwib25Nb3VzZUVudGVyXCJcbiAgICBdKTtcbiAgICBjaGlsZHJlbiA9IGNoaWxkcmVuUHJvcDtcbiAgICBpZiAobGVnYWN5QmVoYXZpb3IgJiYgdHlwZW9mIGNoaWxkcmVuID09PSAnc3RyaW5nJykge1xuICAgICAgICBjaGlsZHJlbiA9IC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImFcIiwgbnVsbCwgY2hpbGRyZW4pO1xuICAgIH1cbiAgICBjb25zdCBwID0gcHJlZmV0Y2hQcm9wICE9PSBmYWxzZTtcbiAgICBjb25zdCByb3V0ZXIgPSAoMCwgX3JvdXRlcjEpLnVzZVJvdXRlcigpO1xuICAgIGNvbnN0IHsgaHJlZiAsIGFzICB9ID0gX3JlYWN0LmRlZmF1bHQudXNlTWVtbygoKT0+e1xuICAgICAgICBjb25zdCBbcmVzb2x2ZWRIcmVmLCByZXNvbHZlZEFzXSA9ICgwLCBfcm91dGVyKS5yZXNvbHZlSHJlZihyb3V0ZXIsIGhyZWZQcm9wLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhyZWY6IHJlc29sdmVkSHJlZixcbiAgICAgICAgICAgIGFzOiBhc1Byb3AgPyAoMCwgX3JvdXRlcikucmVzb2x2ZUhyZWYocm91dGVyLCBhc1Byb3ApIDogcmVzb2x2ZWRBcyB8fCByZXNvbHZlZEhyZWZcbiAgICAgICAgfTtcbiAgICB9LCBbXG4gICAgICAgIHJvdXRlcixcbiAgICAgICAgaHJlZlByb3AsXG4gICAgICAgIGFzUHJvcFxuICAgIF0pO1xuICAgIGNvbnN0IHByZXZpb3VzSHJlZiA9IF9yZWFjdC5kZWZhdWx0LnVzZVJlZihocmVmKTtcbiAgICBjb25zdCBwcmV2aW91c0FzID0gX3JlYWN0LmRlZmF1bHQudXNlUmVmKGFzKTtcbiAgICAvLyBUaGlzIHdpbGwgcmV0dXJuIHRoZSBmaXJzdCBjaGlsZCwgaWYgbXVsdGlwbGUgYXJlIHByb3ZpZGVkIGl0IHdpbGwgdGhyb3cgYW4gZXJyb3JcbiAgICBsZXQgY2hpbGQ7XG4gICAgaWYgKGxlZ2FjeUJlaGF2aW9yKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgaWYgKG9uQ2xpY2spIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFwib25DbGlja1wiIHdhcyBwYXNzZWQgdG8gPExpbms+IHdpdGggXFxgaHJlZlxcYCBvZiBcXGAke2hyZWZQcm9wfVxcYCBidXQgXCJsZWdhY3lCZWhhdmlvclwiIHdhcyBzZXQuIFRoZSBsZWdhY3kgYmVoYXZpb3IgcmVxdWlyZXMgb25DbGljayBiZSBzZXQgb24gdGhlIGNoaWxkIG9mIG5leHQvbGlua2ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9uTW91c2VFbnRlcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgXCJvbk1vdXNlRW50ZXJcIiB3YXMgcGFzc2VkIHRvIDxMaW5rPiB3aXRoIFxcYGhyZWZcXGAgb2YgXFxgJHtocmVmUHJvcH1cXGAgYnV0IFwibGVnYWN5QmVoYXZpb3JcIiB3YXMgc2V0LiBUaGUgbGVnYWN5IGJlaGF2aW9yIHJlcXVpcmVzIG9uTW91c2VFbnRlciBiZSBzZXQgb24gdGhlIGNoaWxkIG9mIG5leHQvbGlua2ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjaGlsZCA9IF9yZWFjdC5kZWZhdWx0LkNoaWxkcmVuLm9ubHkoY2hpbGRyZW4pO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFjaGlsZHJlbikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGNoaWxkcmVuIHdlcmUgcGFzc2VkIHRvIDxMaW5rPiB3aXRoIFxcYGhyZWZcXGAgb2YgXFxgJHtocmVmUHJvcH1cXGAgYnV0IG9uZSBjaGlsZCBpcyByZXF1aXJlZCBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9saW5rLW5vLWNoaWxkcmVuYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTXVsdGlwbGUgY2hpbGRyZW4gd2VyZSBwYXNzZWQgdG8gPExpbms+IHdpdGggXFxgaHJlZlxcYCBvZiBcXGAke2hyZWZQcm9wfVxcYCBidXQgb25seSBvbmUgY2hpbGQgaXMgc3VwcG9ydGVkIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2xpbmstbXVsdGlwbGUtY2hpbGRyZW5gICsgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gXCIgXFxuT3BlbiB5b3VyIGJyb3dzZXIncyBjb25zb2xlIHRvIHZpZXcgdGhlIENvbXBvbmVudCBzdGFjayB0cmFjZS5cIiA6ICcnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaGlsZCA9IF9yZWFjdC5kZWZhdWx0LkNoaWxkcmVuLm9ubHkoY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGNoaWxkUmVmID0gbGVnYWN5QmVoYXZpb3IgPyBjaGlsZCAmJiB0eXBlb2YgY2hpbGQgPT09ICdvYmplY3QnICYmIGNoaWxkLnJlZiA6IGZvcndhcmRlZFJlZjtcbiAgICBjb25zdCBbc2V0SW50ZXJzZWN0aW9uUmVmLCBpc1Zpc2libGUsIHJlc2V0VmlzaWJsZV0gPSAoMCwgX3VzZUludGVyc2VjdGlvbikudXNlSW50ZXJzZWN0aW9uKHtcbiAgICAgICAgcm9vdE1hcmdpbjogJzIwMHB4J1xuICAgIH0pO1xuICAgIGNvbnN0IHNldFJlZiA9IF9yZWFjdC5kZWZhdWx0LnVzZUNhbGxiYWNrKChlbCk9PntcbiAgICAgICAgLy8gQmVmb3JlIHRoZSBsaW5rIGdldHRpbmcgb2JzZXJ2ZWQsIGNoZWNrIGlmIHZpc2libGUgc3RhdGUgbmVlZCB0byBiZSByZXNldFxuICAgICAgICBpZiAocHJldmlvdXNBcy5jdXJyZW50ICE9PSBhcyB8fCBwcmV2aW91c0hyZWYuY3VycmVudCAhPT0gaHJlZikge1xuICAgICAgICAgICAgcmVzZXRWaXNpYmxlKCk7XG4gICAgICAgICAgICBwcmV2aW91c0FzLmN1cnJlbnQgPSBhcztcbiAgICAgICAgICAgIHByZXZpb3VzSHJlZi5jdXJyZW50ID0gaHJlZjtcbiAgICAgICAgfVxuICAgICAgICBzZXRJbnRlcnNlY3Rpb25SZWYoZWwpO1xuICAgICAgICBpZiAoY2hpbGRSZWYpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGRSZWYgPT09ICdmdW5jdGlvbicpIGNoaWxkUmVmKGVsKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBjaGlsZFJlZiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICBjaGlsZFJlZi5jdXJyZW50ID0gZWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGFzLFxuICAgICAgICBjaGlsZFJlZixcbiAgICAgICAgaHJlZixcbiAgICAgICAgcmVzZXRWaXNpYmxlLFxuICAgICAgICBzZXRJbnRlcnNlY3Rpb25SZWZcbiAgICBdKTtcbiAgICBfcmVhY3QuZGVmYXVsdC51c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3Qgc2hvdWxkUHJlZmV0Y2ggPSBpc1Zpc2libGUgJiYgcCAmJiAoMCwgX3JvdXRlcikuaXNMb2NhbFVSTChocmVmKTtcbiAgICAgICAgY29uc3QgY3VyTG9jYWxlID0gdHlwZW9mIGxvY2FsZSAhPT0gJ3VuZGVmaW5lZCcgPyBsb2NhbGUgOiByb3V0ZXIgJiYgcm91dGVyLmxvY2FsZTtcbiAgICAgICAgY29uc3QgaXNQcmVmZXRjaGVkID0gcHJlZmV0Y2hlZFtocmVmICsgJyUnICsgYXMgKyAoY3VyTG9jYWxlID8gJyUnICsgY3VyTG9jYWxlIDogJycpXTtcbiAgICAgICAgaWYgKHNob3VsZFByZWZldGNoICYmICFpc1ByZWZldGNoZWQpIHtcbiAgICAgICAgICAgIHByZWZldGNoKHJvdXRlciwgaHJlZiwgYXMsIHtcbiAgICAgICAgICAgICAgICBsb2NhbGU6IGN1ckxvY2FsZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGFzLFxuICAgICAgICBocmVmLFxuICAgICAgICBpc1Zpc2libGUsXG4gICAgICAgIGxvY2FsZSxcbiAgICAgICAgcCxcbiAgICAgICAgcm91dGVyXG4gICAgXSk7XG4gICAgY29uc3QgY2hpbGRQcm9wcyA9IHtcbiAgICAgICAgcmVmOiBzZXRSZWYsXG4gICAgICAgIG9uQ2xpY2s6IChlKT0+e1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgcmVuZGVyZWQgaW5zaWRlIG5leHQvbGluayBoYXMgdG8gcGFzcyBjbGljayBldmVudCB0byBcIm9uQ2xpY2tcIiBwcm9wLmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbGVnYWN5QmVoYXZpb3IgJiYgdHlwZW9mIG9uQ2xpY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBvbkNsaWNrKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxlZ2FjeUJlaGF2aW9yICYmIGNoaWxkLnByb3BzICYmIHR5cGVvZiBjaGlsZC5wcm9wcy5vbkNsaWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgY2hpbGQucHJvcHMub25DbGljayhlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghZS5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgICAgbGlua0NsaWNrZWQoZSwgcm91dGVyLCBocmVmLCBhcywgcmVwbGFjZSwgc2hhbGxvdywgc2Nyb2xsLCBsb2NhbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBvbk1vdXNlRW50ZXI6IChlKT0+e1xuICAgICAgICAgICAgaWYgKCFsZWdhY3lCZWhhdmlvciAmJiB0eXBlb2Ygb25Nb3VzZUVudGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxlZ2FjeUJlaGF2aW9yICYmIGNoaWxkLnByb3BzICYmIHR5cGVvZiBjaGlsZC5wcm9wcy5vbk1vdXNlRW50ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjaGlsZC5wcm9wcy5vbk1vdXNlRW50ZXIoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKDAsIF9yb3V0ZXIpLmlzTG9jYWxVUkwoaHJlZikpIHtcbiAgICAgICAgICAgICAgICBwcmVmZXRjaChyb3V0ZXIsIGhyZWYsIGFzLCB7XG4gICAgICAgICAgICAgICAgICAgIHByaW9yaXR5OiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIElmIGNoaWxkIGlzIGFuIDxhPiB0YWcgYW5kIGRvZXNuJ3QgaGF2ZSBhIGhyZWYgYXR0cmlidXRlLCBvciBpZiB0aGUgJ3Bhc3NIcmVmJyBwcm9wZXJ0eSBpc1xuICAgIC8vIGRlZmluZWQsIHdlIHNwZWNpZnkgdGhlIGN1cnJlbnQgJ2hyZWYnLCBzbyB0aGF0IHJlcGV0aXRpb24gaXMgbm90IG5lZWRlZCBieSB0aGUgdXNlclxuICAgIGlmICghbGVnYWN5QmVoYXZpb3IgfHwgcGFzc0hyZWYgfHwgY2hpbGQudHlwZSA9PT0gJ2EnICYmICEoJ2hyZWYnIGluIGNoaWxkLnByb3BzKSkge1xuICAgICAgICBjb25zdCBjdXJMb2NhbGUgPSB0eXBlb2YgbG9jYWxlICE9PSAndW5kZWZpbmVkJyA/IGxvY2FsZSA6IHJvdXRlciAmJiByb3V0ZXIubG9jYWxlO1xuICAgICAgICAvLyB3ZSBvbmx5IHJlbmRlciBkb21haW4gbG9jYWxlcyBpZiB3ZSBhcmUgY3VycmVudGx5IG9uIGEgZG9tYWluIGxvY2FsZVxuICAgICAgICAvLyBzbyB0aGF0IGxvY2FsZSBsaW5rcyBhcmUgc3RpbGwgdmlzaXRhYmxlIGluIGRldmVsb3BtZW50L3ByZXZpZXcgZW52c1xuICAgICAgICBjb25zdCBsb2NhbGVEb21haW4gPSByb3V0ZXIgJiYgcm91dGVyLmlzTG9jYWxlRG9tYWluICYmICgwLCBfcm91dGVyKS5nZXREb21haW5Mb2NhbGUoYXMsIGN1ckxvY2FsZSwgcm91dGVyICYmIHJvdXRlci5sb2NhbGVzLCByb3V0ZXIgJiYgcm91dGVyLmRvbWFpbkxvY2FsZXMpO1xuICAgICAgICBjaGlsZFByb3BzLmhyZWYgPSBsb2NhbGVEb21haW4gfHwgKDAsIF9yb3V0ZXIpLmFkZEJhc2VQYXRoKCgwLCBfcm91dGVyKS5hZGRMb2NhbGUoYXMsIGN1ckxvY2FsZSwgcm91dGVyICYmIHJvdXRlci5kZWZhdWx0TG9jYWxlKSk7XG4gICAgfVxuICAgIHJldHVybiBsZWdhY3lCZWhhdmlvciA/IC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY2xvbmVFbGVtZW50KGNoaWxkLCBjaGlsZFByb3BzKSA6IC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImFcIiwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdFByb3BzLCBjaGlsZFByb3BzKSwgY2hpbGRyZW4pO1xufSk7XG52YXIgX2RlZmF1bHQgPSBMaW5rO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7XG5cbmlmICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSB7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxpbmsuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZGVmYXVsdCIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3JvdXRlciIsIl9yb3V0ZXIxIiwiX3VzZUludGVyc2VjdGlvbiIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJzb3VyY2UiLCJleGNsdWRlZCIsInRhcmdldCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwia2V5IiwiaSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInNvdXJjZVN5bWJvbEtleXMiLCJsZW5ndGgiLCJpbmRleE9mIiwicHJvdG90eXBlIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjYWxsIiwic291cmNlS2V5cyIsImtleXMiLCJwcmVmZXRjaGVkIiwicHJlZmV0Y2giLCJyb3V0ZXIiLCJocmVmIiwiYXMiLCJvcHRpb25zIiwiaXNMb2NhbFVSTCIsImNhdGNoIiwiZXJyIiwicHJvY2VzcyIsImN1ckxvY2FsZSIsImxvY2FsZSIsImlzTW9kaWZpZWRFdmVudCIsImV2ZW50IiwiY3VycmVudFRhcmdldCIsIm1ldGFLZXkiLCJjdHJsS2V5Iiwic2hpZnRLZXkiLCJhbHRLZXkiLCJuYXRpdmVFdmVudCIsIndoaWNoIiwibGlua0NsaWNrZWQiLCJlIiwicmVwbGFjZSIsInNoYWxsb3ciLCJzY3JvbGwiLCJub2RlTmFtZSIsImlzQW5jaG9yTm9kZU5hbWUiLCJ0b1VwcGVyQ2FzZSIsInByZXZlbnREZWZhdWx0IiwiTGluayIsImZvcndhcmRSZWYiLCJwcm9wcyIsImZvcndhcmRlZFJlZiIsImxlZ2FjeUJlaGF2aW9yIiwiQm9vbGVhbiIsImVudiIsIl9fTkVYVF9ORVdfTElOS19CRUhBVklPUiIsImNyZWF0ZVByb3BFcnJvciIsImFyZ3MiLCJFcnJvciIsImV4cGVjdGVkIiwiYWN0dWFsIiwicmVxdWlyZWRQcm9wc0d1YXJkIiwicmVxdWlyZWRQcm9wcyIsImZvckVhY2giLCJfIiwib3B0aW9uYWxQcm9wc0d1YXJkIiwicGFzc0hyZWYiLCJvbkNsaWNrIiwib25Nb3VzZUVudGVyIiwib3B0aW9uYWxQcm9wcyIsInZhbFR5cGUiLCJoYXNXYXJuZWQiLCJ1c2VSZWYiLCJjdXJyZW50IiwiY29uc29sZSIsIndhcm4iLCJjaGlsZHJlbiIsImhyZWZQcm9wIiwiYXNQcm9wIiwiY2hpbGRyZW5Qcm9wIiwicHJlZmV0Y2hQcm9wIiwicmVzdFByb3BzIiwiY3JlYXRlRWxlbWVudCIsInAiLCJ1c2VSb3V0ZXIiLCJ1c2VNZW1vIiwicmVzb2x2ZWRIcmVmIiwicmVzb2x2ZWRBcyIsInJlc29sdmVIcmVmIiwicHJldmlvdXNIcmVmIiwicHJldmlvdXNBcyIsImNoaWxkIiwiQ2hpbGRyZW4iLCJvbmx5IiwiY2hpbGRSZWYiLCJyZWYiLCJzZXRJbnRlcnNlY3Rpb25SZWYiLCJpc1Zpc2libGUiLCJyZXNldFZpc2libGUiLCJ1c2VJbnRlcnNlY3Rpb24iLCJyb290TWFyZ2luIiwic2V0UmVmIiwidXNlQ2FsbGJhY2siLCJlbCIsInVzZUVmZmVjdCIsInNob3VsZFByZWZldGNoIiwiaXNQcmVmZXRjaGVkIiwiY2hpbGRQcm9wcyIsImRlZmF1bHRQcmV2ZW50ZWQiLCJwcmlvcml0eSIsInR5cGUiLCJsb2NhbGVEb21haW4iLCJpc0xvY2FsZURvbWFpbiIsImdldERvbWFpbkxvY2FsZSIsImxvY2FsZXMiLCJkb21haW5Mb2NhbGVzIiwiYWRkQmFzZVBhdGgiLCJhZGRMb2NhbGUiLCJkZWZhdWx0TG9jYWxlIiwiY2xvbmVFbGVtZW50IiwiYXNzaWduIiwiX2RlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/link.js\n");
+
+/***/ }),
+
+/***/ "./node_modules/next/dist/client/normalize-trailing-slash.js":
+/*!*******************************************************************!*\
+ !*** ./node_modules/next/dist/client/normalize-trailing-slash.js ***!
+ \*******************************************************************/
+/***/ ((module, exports) => {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.removePathTrailingSlash = removePathTrailingSlash;\nexports.normalizePathTrailingSlash = void 0;\nfunction removePathTrailingSlash(path) {\n return path.endsWith(\"/\") && path !== \"/\" ? path.slice(0, -1) : path;\n}\nconst normalizePathTrailingSlash = false ? 0 : removePathTrailingSlash;\nexports.normalizePathTrailingSlash = normalizePathTrailingSlash;\nif (typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) {\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=normalize-trailing-slash.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9ub3JtYWxpemUtdHJhaWxpbmctc2xhc2guanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxLQUFLLEVBQUUsSUFBSTtDQUNkLEVBQUMsQ0FBQztBQUNIRCwrQkFBK0IsR0FBR0UsdUJBQXVCLENBQUM7QUFDMURGLGtDQUFrQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQzVDLFNBQVNFLHVCQUF1QixDQUFDRSxJQUFJLEVBQUU7SUFDbkMsT0FBT0EsSUFBSSxDQUFDQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUlELElBQUksS0FBSyxHQUFHLEdBQUdBLElBQUksQ0FBQ0UsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHRixJQUFJLENBQUM7Q0FDeEU7QUFDRCxNQUFNRCwwQkFBMEIsR0FBR0ksTUFBaUMsR0FBRyxDQVF0RSxHQUFHTCx1QkFBdUI7QUFDM0JGLGtDQUFrQyxHQUFHRywwQkFBMEIsQ0FBQztBQUVoRSxJQUFJLE9BQU9ILE9BQU8sQ0FBQ1csT0FBTyxLQUFLLFVBQVUsSUFBSyxPQUFPWCxPQUFPLENBQUNXLE9BQU8sS0FBSyxRQUFRLElBQUlYLE9BQU8sQ0FBQ1csT0FBTyxLQUFLLElBQUksRUFBRztJQUM5R2IsTUFBTSxDQUFDYyxNQUFNLENBQUNaLE9BQU8sQ0FBQ1csT0FBTyxFQUFFWCxPQUFPLENBQUMsQ0FBQztJQUN4Q2EsTUFBTSxDQUFDYixPQUFPLEdBQUdBLE9BQU8sQ0FBQ1csT0FBTyxDQUFDO0NBQ2xDLENBRUQsb0RBQW9EIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYnVybi1teS13YWxsZXQvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9ub3JtYWxpemUtdHJhaWxpbmctc2xhc2guanM/NGMyZSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMucmVtb3ZlUGF0aFRyYWlsaW5nU2xhc2ggPSByZW1vdmVQYXRoVHJhaWxpbmdTbGFzaDtcbmV4cG9ydHMubm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2ggPSB2b2lkIDA7XG5mdW5jdGlvbiByZW1vdmVQYXRoVHJhaWxpbmdTbGFzaChwYXRoKSB7XG4gICAgcmV0dXJuIHBhdGguZW5kc1dpdGgoJy8nKSAmJiBwYXRoICE9PSAnLycgPyBwYXRoLnNsaWNlKDAsIC0xKSA6IHBhdGg7XG59XG5jb25zdCBub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaCA9IHByb2Nlc3MuZW52Ll9fTkVYVF9UUkFJTElOR19TTEFTSCA/IChwYXRoKT0+e1xuICAgIGlmICgvXFwuW14vXStcXC8/JC8udGVzdChwYXRoKSkge1xuICAgICAgICByZXR1cm4gcmVtb3ZlUGF0aFRyYWlsaW5nU2xhc2gocGF0aCk7XG4gICAgfSBlbHNlIGlmIChwYXRoLmVuZHNXaXRoKCcvJykpIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHBhdGggKyAnLyc7XG4gICAgfVxufSA6IHJlbW92ZVBhdGhUcmFpbGluZ1NsYXNoO1xuZXhwb3J0cy5ub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaCA9IG5vcm1hbGl6ZVBhdGhUcmFpbGluZ1NsYXNoO1xuXG5pZiAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkge1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1ub3JtYWxpemUtdHJhaWxpbmctc2xhc2guanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwicmVtb3ZlUGF0aFRyYWlsaW5nU2xhc2giLCJub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaCIsInBhdGgiLCJlbmRzV2l0aCIsInNsaWNlIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9UUkFJTElOR19TTEFTSCIsInRlc3QiLCJkZWZhdWx0IiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/normalize-trailing-slash.js\n");
+
+/***/ }),
+
+/***/ "./node_modules/next/dist/client/request-idle-callback.js":
+/*!****************************************************************!*\
+ !*** ./node_modules/next/dist/client/request-idle-callback.js ***!
+ \****************************************************************/
+/***/ ((module, exports) => {
+
+"use strict";
+eval("\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 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) {\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=request-idle-callback.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZXF1ZXN0LWlkbGUtY2FsbGJhY2suanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxLQUFLLEVBQUUsSUFBSTtDQUNkLEVBQUMsQ0FBQztBQUNIRCwwQkFBMEIsR0FBR0EsMkJBQTJCLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDbEUsTUFBTUcsbUJBQW1CLEdBQUcsT0FBT0MsSUFBSSxLQUFLLFdBQVcsSUFBSUEsSUFBSSxDQUFDRCxtQkFBbUIsSUFBSUMsSUFBSSxDQUFDRCxtQkFBbUIsQ0FBQ0UsSUFBSSxDQUFDQyxNQUFNLENBQUMsSUFBSSxTQUFTQyxFQUFFLEVBQUU7SUFDekksSUFBSUMsS0FBSyxHQUFHQyxJQUFJLENBQUNDLEdBQUcsRUFBRTtJQUN0QixPQUFPQyxVQUFVLENBQUMsV0FBVztRQUN6QkosRUFBRSxDQUFDO1lBQ0NLLFVBQVUsRUFBRSxLQUFLO1lBQ2pCQyxhQUFhLEVBQUUsV0FBVztnQkFDdEIsT0FBT0MsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDTixJQUFJLENBQUNDLEdBQUcsRUFBRSxHQUFHRixLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ2pEO1NBQ0osQ0FBQyxDQUFDO0tBQ04sRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNUO0FBQ0RSLDJCQUEyQixHQUFHRyxtQkFBbUIsQ0FBQztBQUNsRCxNQUFNRCxrQkFBa0IsR0FBRyxPQUFPRSxJQUFJLEtBQUssV0FBVyxJQUFJQSxJQUFJLENBQUNGLGtCQUFrQixJQUFJRSxJQUFJLENBQUNGLGtCQUFrQixDQUFDRyxJQUFJLENBQUNDLE1BQU0sQ0FBQyxJQUFJLFNBQVNVLEVBQUUsRUFBRTtJQUN0SSxPQUFPQyxZQUFZLENBQUNELEVBQUUsQ0FBQyxDQUFDO0NBQzNCO0FBQ0RoQiwwQkFBMEIsR0FBR0Usa0JBQWtCLENBQUM7QUFFaEQsSUFBSSxPQUFPRixPQUFPLENBQUNrQixPQUFPLEtBQUssVUFBVSxJQUFLLE9BQU9sQixPQUFPLENBQUNrQixPQUFPLEtBQUssUUFBUSxJQUFJbEIsT0FBTyxDQUFDa0IsT0FBTyxLQUFLLElBQUksRUFBRztJQUM5R3BCLE1BQU0sQ0FBQ3FCLE1BQU0sQ0FBQ25CLE9BQU8sQ0FBQ2tCLE9BQU8sRUFBRWxCLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDb0IsTUFBTSxDQUFDcEIsT0FBTyxHQUFHQSxPQUFPLENBQUNrQixPQUFPLENBQUM7Q0FDbEMsQ0FFRCxpREFBaUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9idXJuLW15LXdhbGxldC8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3JlcXVlc3QtaWRsZS1jYWxsYmFjay5qcz8xZTIwIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5jYW5jZWxJZGxlQ2FsbGJhY2sgPSBleHBvcnRzLnJlcXVlc3RJZGxlQ2FsbGJhY2sgPSB2b2lkIDA7XG5jb25zdCByZXF1ZXN0SWRsZUNhbGxiYWNrID0gdHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnICYmIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayAmJiBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2suYmluZCh3aW5kb3cpIHx8IGZ1bmN0aW9uKGNiKSB7XG4gICAgbGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICByZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgY2Ioe1xuICAgICAgICAgICAgZGlkVGltZW91dDogZmFsc2UsXG4gICAgICAgICAgICB0aW1lUmVtYWluaW5nOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoMCwgNTAgLSAoRGF0ZS5ub3coKSAtIHN0YXJ0KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0sIDEpO1xufTtcbmV4cG9ydHMucmVxdWVzdElkbGVDYWxsYmFjayA9IHJlcXVlc3RJZGxlQ2FsbGJhY2s7XG5jb25zdCBjYW5jZWxJZGxlQ2FsbGJhY2sgPSB0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5jYW5jZWxJZGxlQ2FsbGJhY2sgJiYgc2VsZi5jYW5jZWxJZGxlQ2FsbGJhY2suYmluZCh3aW5kb3cpIHx8IGZ1bmN0aW9uKGlkKSB7XG4gICAgcmV0dXJuIGNsZWFyVGltZW91dChpZCk7XG59O1xuZXhwb3J0cy5jYW5jZWxJZGxlQ2FsbGJhY2sgPSBjYW5jZWxJZGxlQ2FsbGJhY2s7XG5cbmlmICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSB7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlcXVlc3QtaWRsZS1jYWxsYmFjay5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJjYW5jZWxJZGxlQ2FsbGJhY2siLCJyZXF1ZXN0SWRsZUNhbGxiYWNrIiwic2VsZiIsImJpbmQiLCJ3aW5kb3ciLCJjYiIsInN0YXJ0IiwiRGF0ZSIsIm5vdyIsInNldFRpbWVvdXQiLCJkaWRUaW1lb3V0IiwidGltZVJlbWFpbmluZyIsIk1hdGgiLCJtYXgiLCJpZCIsImNsZWFyVGltZW91dCIsImRlZmF1bHQiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/request-idle-callback.js\n");
+
+/***/ }),
+
+/***/ "./node_modules/next/dist/client/route-loader.js":
+/*!*******************************************************!*\
+ !*** ./node_modules/next/dist/client/route-loader.js ***!
+ \*******************************************************/
+/***/ ((module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.markAssetError = markAssetError;\nexports.isAssetError = isAssetError;\nexports.getClientBuildManifest = getClientBuildManifest;\nexports.getMiddlewareManifest = getMiddlewareManifest;\nexports.createRouteLoader = createRouteLoader;\nvar _getAssetPathFromRoute = _interopRequireDefault(__webpack_require__(/*! ../shared/lib/router/utils/get-asset-path-from-route */ \"../shared/lib/router/utils/get-asset-path-from-route\"));\nvar _requestIdleCallback = __webpack_require__(/*! ./request-idle-callback */ \"./node_modules/next/dist/client/request-idle-callback.js\");\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\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)\n ).catch((err)=>{\n map.delete(key);\n throw err;\n }) : prom;\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((res, rej)=>{\n const selector = `\n link[rel=\"prefetch\"][href^=\"${href}\"],\n link[rel=\"preload\"][href^=\"${href}\"],\n script[src^=\"${href}\"]`;\n if (document.querySelector(selector)) {\n return res();\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 = res;\n link.onerror = rej;\n // `href` should always be last:\n link.href = href;\n document.head.appendChild(link);\n });\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 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: ${src}`)))\n ;\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 }\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 getMiddlewareManifest() {\n if (self.__MIDDLEWARE_MANIFEST) {\n return Promise.resolve(self.__MIDDLEWARE_MANIFEST);\n }\n const onMiddlewareManifest = new Promise((resolve)=>{\n const cb = self.__MIDDLEWARE_MANIFEST_CB;\n self.__MIDDLEWARE_MANIFEST_CB = ()=>{\n resolve(self.__MIDDLEWARE_MANIFEST);\n cb && cb();\n };\n });\n return resolvePromiseWithTimeout(onMiddlewareManifest, MS_MAX_IDLE_DELAY, markAssetError(new Error(\"Failed to load client middleware manifest\")));\n}\nfunction getFilesForRoute(assetPrefix, route) {\n if (true) {\n return Promise.resolve({\n scripts: [\n assetPrefix + \"/_next/static/chunks/pages\" + encodeURI((0, _getAssetPathFromRoute).default(route, \".js\")), \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: ${route}`));\n }\n const allFiles = manifest[route].map((entry)=>assetPrefix + \"/_next/\" + encodeURI(entry)\n );\n return {\n scripts: allFiles.filter((v)=>v.endsWith(\".js\")\n ),\n css: allFiles.filter((v)=>v.endsWith(\".css\")\n )\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: ${href}`);\n }\n return res.text().then((text)=>({\n href: href,\n content: text\n })\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()\n ).then((exports)=>({\n component: exports && exports.default || exports,\n exports: exports\n })\n , (err)=>({\n error: err\n })\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(({ scripts , css })=>{\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 );\n }), MS_MAX_IDLE_DELAY, markAssetError(new Error(`Route did not complete loading: ${route}`))).then(({ entrypoint , styles })=>{\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 || devBuildPromiseResolve === void 0 ? 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, \"script\")\n ) : [])\n ).then(()=>{\n (0, _requestIdleCallback).requestIdleCallback(()=>this.loadRoute(route, true).catch(()=>{})\n );\n }).catch(()=>{});\n }\n };\n}\nif (typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) {\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=route-loader.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yb3V0ZS1sb2FkZXIuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxLQUFLLEVBQUUsSUFBSTtDQUNkLEVBQUMsQ0FBQztBQUNIRCxzQkFBc0IsR0FBR0UsY0FBYyxDQUFDO0FBQ3hDRixvQkFBb0IsR0FBR0csWUFBWSxDQUFDO0FBQ3BDSCw4QkFBOEIsR0FBR0ksc0JBQXNCLENBQUM7QUFDeERKLDZCQUE2QixHQUFHSyxxQkFBcUIsQ0FBQztBQUN0REwseUJBQXlCLEdBQUdNLGlCQUFpQixDQUFDO0FBQzlDLElBQUlDLHNCQUFzQixHQUFHQyxzQkFBc0IsQ0FBQ0MsbUJBQU8sQ0FBQyxrSEFBc0QsQ0FBQyxDQUFDO0FBQ3BILElBQUlDLG9CQUFvQixHQUFHRCxtQkFBTyxDQUFDLHlGQUF5QixDQUFDO0FBQzdELFNBQVNELHNCQUFzQixDQUFDRyxHQUFHLEVBQUU7SUFDakMsT0FBT0EsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVUsR0FBR0QsR0FBRyxHQUFHO1FBQ2pDRSxPQUFPLEVBQUVGLEdBQUc7S0FDZixDQUFDO0NBQ0w7QUFDRCx1RUFBdUU7QUFDdkUseUVBQXlFO0FBQ3pFLDJFQUEyRTtBQUMzRSxvQ0FBb0M7QUFDcEMsTUFBTUcsaUJBQWlCLEdBQUcsSUFBSTtBQUM5QixTQUFTQyxVQUFVLENBQUNDLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxTQUFTLEVBQUU7SUFDckMsSUFBSUMsS0FBSyxHQUFHRixHQUFHLENBQUNHLEdBQUcsQ0FBQ0osR0FBRyxDQUFDO0lBQ3hCLElBQUlHLEtBQUssRUFBRTtRQUNQLElBQUksUUFBUSxJQUFJQSxLQUFLLEVBQUU7WUFDbkIsT0FBT0EsS0FBSyxDQUFDRSxNQUFNLENBQUM7U0FDdkI7UUFDRCxPQUFPQyxPQUFPLENBQUNDLE9BQU8sQ0FBQ0osS0FBSyxDQUFDLENBQUM7S0FDakM7SUFDRCxJQUFJSyxRQUFRO0lBQ1osTUFBTUMs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MUYsQ0FBQzthQUNMLENBQUMsQ0FBQ0EsS0FBSyxDQUNSLElBQUksRUFBRSxDQUFDLENBQUM7U0FDWDtLQUNKLENBQUM7Q0FDTDtBQUVELElBQUksT0FBTzVCLE9BQU8sQ0FBQ2EsT0FBTyxLQUFLLFVBQVUsSUFBSyxPQUFPYixPQUFPLENBQUNhLE9BQU8sS0FBSyxRQUFRLElBQUliLE9BQU8sQ0FBQ2EsT0FBTyxLQUFLLElBQUksRUFBRztJQUM5R2YsTUFBTSxDQUFDeUgsTUFBTSxDQUFDdkgsT0FBTyxDQUFDYSxPQUFPLEVBQUViLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDZ0ksTUFBTSxDQUFDaEksT0FBTyxHQUFHQSxPQUFPLENBQUNhLE9BQU8sQ0FBQztDQUNsQyxDQUVELHdDQUF3QyIsInNvdXJjZXMiOlsid2VicGFjazovL2J1cm4tbXktd2FsbGV0Ly4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcm91dGUtbG9hZGVyLmpzP2VhMzQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLm1hcmtBc3NldEVycm9yID0gbWFya0Fzc2V0RXJyb3I7XG5leHBvcnRzLmlzQXNzZXRFcnJvciA9IGlzQXNzZXRFcnJvcjtcbmV4cG9ydHMuZ2V0Q2xpZW50QnVpbGRNYW5pZmVzdCA9IGdldENsaWVudEJ1aWxkTWFuaWZlc3Q7XG5leHBvcnRzLmdldE1pZGRsZXdhcmVNYW5pZmVzdCA9IGdldE1pZGRsZXdhcmVNYW5pZmVzdDtcbmV4cG9ydHMuY3JlYXRlUm91dGVMb2FkZXIgPSBjcmVhdGVSb3V0ZUxvYWRlcjtcbnZhciBfZ2V0QXNzZXRQYXRoRnJvbVJvdXRlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvZ2V0LWFzc2V0LXBhdGgtZnJvbS1yb3V0ZVwiKSk7XG52YXIgX3JlcXVlc3RJZGxlQ2FsbGJhY2sgPSByZXF1aXJlKFwiLi9yZXF1ZXN0LWlkbGUtY2FsbGJhY2tcIik7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikge1xuICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgICAgIGRlZmF1bHQ6IG9ialxuICAgIH07XG59XG4vLyAzLjhzIHdhcyBhcmJpdHJhcmlseSBjaG9zZW4gYXMgaXQncyB3aGF0IGh0dHBzOi8vd2ViLmRldi9pbnRlcmFjdGl2ZVxuLy8gY29uc2lkZXJzIGFzIFwiR29vZFwiIHRpbWUtdG8taW50ZXJhY3RpdmUuIFdlIG11c3QgYXNzdW1lIHNvbWV0aGluZyB3ZW50XG4vLyB3cm9uZyBiZXlvbmQgdGhpcyBwb2ludCwgYW5kIHRoZW4gZmFsbC1iYWNrIHRvIGEgZnVsbCBwYWdlIHRyYW5zaXRpb24gdG9cbi8vIHNob3cgdGhlIHVzZXIgc29tZXRoaW5nIG9mIHZhbHVlLlxuY29uc3QgTVNfTUFYX0lETEVfREVMQVkgPSAzODAwO1xuZnVuY3Rpb24gd2l0aEZ1dHVyZShrZXksIG1hcCwgZ2VuZXJhdG9yKSB7XG4gICAgbGV0IGVudHJ5ID0gbWFwLmdldChrZXkpO1xuICAgIGlmIChlbnRyeSkge1xuICAgICAgICBpZiAoJ2Z1dHVyZScgaW4gZW50cnkpIHtcbiAgICAgICAgICAgIHJldHVybiBlbnRyeS5mdXR1cmU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShlbnRyeSk7XG4gICAgfVxuICAgIGxldCByZXNvbHZlcjtcbiAgICBjb25zdCBwcm9tID0gbmV3IFByb21pc2UoKHJlc29sdmUpPT57XG4gICAgICAgIHJlc29sdmVyID0gcmVzb2x2ZTtcbiAgICB9KTtcbiAgICBtYXAuc2V0KGtleSwgZW50cnkgPSB7XG4gICAgICAgIHJlc29sdmU6IHJlc29sdmVyLFxuICAgICAgICBmdXR1cmU6IHByb21cbiAgICB9KTtcbiAgICByZXR1cm4gZ2VuZXJhdG9yID8gZ2VuZXJhdG9yKCkvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VxdWVuY2VzXG4gICAgLnRoZW4oKHZhbHVlKT0+KHJlc29sdmVyKHZhbHVlKSwgdmFsdWUpXG4gICAgKS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICBtYXAuZGVsZXRlKGtleSk7XG4gICAgICAgIHRocm93IGVycjtcbiAgICB9KSA6IHByb207XG59XG5mdW5jdGlvbiBoYXNQcmVmZXRjaChsaW5rKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTtcbiAgICAgICAgcmV0dXJuKC8vIGRldGVjdCBJRTExIHNpbmNlIGl0IHN1cHBvcnRzIHByZWZldGNoIGJ1dCBpc24ndCBkZXRlY3RlZFxuICAgICAgICAvLyB3aXRoIHJlbExpc3Quc3VwcG9ydFxuICAgICAgICAoISF3aW5kb3cuTVNJbnB1dE1ldGhvZENvbnRleHQgJiYgISFkb2N1bWVudC5kb2N1bWVudE1vZGUpIHx8IGxpbmsucmVsTGlzdC5zdXBwb3J0cygncHJlZmV0Y2gnKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuY29uc3QgY2FuUHJlZmV0Y2ggPSBoYXNQcmVmZXRjaCgpO1xuZnVuY3Rpb24gcHJlZmV0Y2hWaWFEb20oaHJlZiwgYXMsIGxpbmspIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlcywgcmVqKT0+e1xuICAgICAgICBjb25zdCBzZWxlY3RvciA9IGBcbiAgICAgIGxpbmtbcmVsPVwicHJlZmV0Y2hcIl1baHJlZl49XCIke2hyZWZ9XCJdLFxuICAgICAgbGlua1tyZWw9XCJwcmVsb2FkXCJdW2hyZWZePVwiJHtocmVmfVwiXSxcbiAgICAgIHNjcmlwdFtzcmNePVwiJHtocmVmfVwiXWA7XG4gICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlcygpO1xuICAgICAgICB9XG4gICAgICAgIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7XG4gICAgICAgIC8vIFRoZSBvcmRlciBvZiBwcm9wZXJ0eSBhc3NpZ25tZW50IGhlcmUgaXMgaW50ZW50aW9uYWw6XG4gICAgICAgIGlmIChhcykgbGluay5hcyA9IGFzO1xuICAgICAgICBsaW5rLnJlbCA9IGBwcmVmZXRjaGA7XG4gICAgICAgIGxpbmsuY3Jvc3NPcmlnaW4gPSBwcm9jZXNzLmVudi5fX05FWFRfQ1JPU1NfT1JJR0lOO1xuICAgICAgICBsaW5rLm9ubG9hZCA9IHJlcztcbiAgICAgICAgbGluay5vbmVycm9yID0gcmVqO1xuICAgICAgICAvLyBgaHJlZmAgc2hvdWxkIGFsd2F5cyBiZSBsYXN0OlxuICAgICAgICBsaW5rLmhyZWYgPSBocmVmO1xuICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGxpbmspO1xuICAgIH0pO1xufVxuY29uc3QgQVNTRVRfTE9BRF9FUlJPUiA9IFN5bWJvbCgnQVNTRVRfTE9BRF9FUlJPUicpO1xuZnVuY3Rpb24gbWFya0Fzc2V0RXJyb3IoZXJyKSB7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlcnIsIEFTU0VUX0xPQURfRVJST1IsIHt9KTtcbn1cbmZ1bmN0aW9uIGlzQXNzZXRFcnJvcihlcnIpIHtcbiAgICByZXR1cm4gZXJyICYmIEFTU0VUX0xPQURfRVJST1IgaW4gZXJyO1xufVxuZnVuY3Rpb24gYXBwZW5kU2NyaXB0KHNyYywgc2NyaXB0KSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57XG4gICAgICAgIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICAvLyBUaGUgb3JkZXIgb2YgcHJvcGVydHkgYXNzaWdubWVudCBoZXJlIGlzIGludGVudGlvbmFsLlxuICAgICAgICAvLyAxLiBTZXR1cCBzdWNjZXNzL2ZhaWx1cmUgaG9va3MgaW4gY2FzZSB0aGUgYnJvd3NlciBzeW5jaHJvbm91c2x5XG4gICAgICAgIC8vICAgIGV4ZWN1dGVzIHdoZW4gYHNyY2AgaXMgc2V0LlxuICAgICAgICBzY3JpcHQub25sb2FkID0gcmVzb2x2ZTtcbiAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoKT0+cmVqZWN0KG1hcmtBc3NldEVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIGxvYWQgc2NyaXB0OiAke3NyY31gKSkpXG4gICAgICAgIDtcbiAgICAgICAgLy8gMi4gQ29uZmlndXJlIHRoZSBjcm9zcy1vcmlnaW4gYXR0cmlidXRlIGJlZm9yZSBzZXR0aW5nIGBzcmNgIGluIGNhc2UgdGhlXG4gICAgICAgIC8vICAgIGJyb3dzZXIgYmVnaW5zIHRvIGZldGNoLlxuICAgICAgICBzY3JpcHQuY3Jvc3NPcmlnaW4gPSBwcm9jZXNzLmVudi5fX05FWFRfQ1JPU1NfT1JJR0lOO1xuICAgICAgICAvLyAzLiBGaW5hbGx5LCBzZXQgdGhlIHNvdXJjZSBhbmQgaW5qZWN0IGludG8gdGhlIERPTSBpbiBjYXNlIHRoZSBjaGlsZFxuICAgICAgICAvLyAgICBtdXN0IGJlIGFwcGVuZGVkIGZvciBmZXRjaGluZyB0byBzdGFydC5cbiAgICAgICAgc2NyaXB0LnNyYyA9IHNyYztcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgIH0pO1xufVxuLy8gV2Ugd2FpdCBmb3IgcGFnZXMgdG8gYmUgYnVpbHQgaW4gZGV2IGJlZm9yZSB3ZSBzdGFydCB0aGUgcm91dGUgdHJhbnNpdGlvblxuLy8gdGltZW91dCB0byBwcmV2ZW50IGFuIHVuLW5lY2Vzc2FyeSBoYXJkIG5hdmlnYXRpb24gaW4gZGV2ZWxvcG1lbnQuXG5sZXQgZGV2QnVpbGRQcm9taXNlO1xuLy8gUmVzb2x2ZSBhIHByb21pc2UgdGhhdCB0aW1lcyBvdXQgYWZ0ZXIgZ2l2ZW4gYW1vdW50IG9mIG1pbGxpc2Vjb25kcy5cbmZ1bmN0aW9uIHJlc29sdmVQcm9taXNlV2l0aFRpbWVvdXQocCwgbXMsIGVycikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+e1xuICAgICAgICBsZXQgY2FuY2VsbGVkID0gZmFsc2U7XG4gICAgICAgIHAudGhlbigocik9PntcbiAgICAgICAgICAgIC8vIFJlc29sdmVkLCBjYW5jZWwgdGhlIHRpbWVvdXRcbiAgICAgICAgICAgIGNhbmNlbGxlZCA9IHRydWU7XG4gICAgICAgICAgICByZXNvbHZlKHIpO1xuICAgICAgICB9KS5jYXRjaChyZWplY3QpO1xuICAgICAgICAvLyBXZSB3cmFwIHRoZXNlIGNoZWNrcyBzZXBhcmF0ZWx5IGZvciBiZXR0ZXIgZGVhZC1jb2RlIGVsaW1pbmF0aW9uIGluXG4gICAgICAgIC8vIHByb2R1Y3Rpb24gYnVuZGxlcy5cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICAgICAgICAoZGV2QnVpbGRQcm9taXNlIHx8IFByb21pc2UucmVzb2x2ZSgpKS50aGVuKCgpPT57XG4gICAgICAgICAgICAgICAgKDAsIF9yZXF1ZXN0SWRsZUNhbGxiYWNrKS5yZXF1ZXN0SWRsZUNhbGxiYWNrKCgpPT5zZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbmNlbGxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCBtcylcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICAgICAgICAoMCwgX3JlcXVlc3RJZGxlQ2FsbGJhY2spLnJlcXVlc3RJZGxlQ2FsbGJhY2soKCk9PnNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjYW5jZWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgbXMpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5mdW5jdGlvbiBnZXRDbGllbnRCdWlsZE1hbmlmZXN0KCkge1xuICAgIGlmIChzZWxmLl9fQlVJTERfTUFOSUZFU1QpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShzZWxmLl9fQlVJTERfTUFOSUZFU1QpO1xuICAgIH1cbiAgICBjb25zdCBvbkJ1aWxkTWFuaWZlc3QgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSk9PntcbiAgICAgICAgLy8gTWFuZGF0b3J5IGJlY2F1c2UgdGhpcyBpcyBub3QgY29uY3VycmVudCBzYWZlOlxuICAgICAgICBjb25zdCBjYiA9IHNlbGYuX19CVUlMRF9NQU5JRkVTVF9DQjtcbiAgICAgICAgc2VsZi5fX0JVSUxEX01BTklGRVNUX0NCID0gKCk9PntcbiAgICAgICAgICAgIHJlc29sdmUoc2VsZi5fX0JVSUxEX01BTklGRVNUKTtcbiAgICAgICAgICAgIGNiICYmIGNiKCk7XG4gICAgICAgIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc29sdmVQcm9taXNlV2l0aFRpbWVvdXQob25CdWlsZE1hbmlmZXN0LCBNU19NQVhfSURMRV9ERUxBWSwgbWFya0Fzc2V0RXJyb3IobmV3IEVycm9yKCdGYWlsZWQgdG8gbG9hZCBjbGllbnQgYnVpbGQgbWFuaWZlc3QnKSkpO1xufVxuZnVuY3Rpb24gZ2V0TWlkZGxld2FyZU1hbmlmZXN0KCkge1xuICAgIGlmIChzZWxmLl9fTUlERExFV0FSRV9NQU5JRkVTVCkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHNlbGYuX19NSURETEVXQVJFX01BTklGRVNUKTtcbiAgICB9XG4gICAgY29uc3Qgb25NaWRkbGV3YXJlTWFuaWZlc3QgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSk9PntcbiAgICAgICAgY29uc3QgY2IgPSBzZWxmLl9fTUlERExFV0FSRV9NQU5JRkVTVF9DQjtcbiAgICAgICAgc2VsZi5fX01JRERMRVdBUkVfTUFOSUZFU1RfQ0IgPSAoKT0+e1xuICAgICAgICAgICAgcmVzb2x2ZShzZWxmLl9fTUlERExFV0FSRV9NQU5JRkVTVCk7XG4gICAgICAgICAgICBjYiAmJiBjYigpO1xuICAgICAgICB9O1xuICAgIH0pO1xuICAgIHJldHVybiByZXNvbHZlUHJvbWlzZVdpdGhUaW1lb3V0KG9uTWlkZGxld2FyZU1hbmlmZXN0LCBNU19NQVhfSURMRV9ERUxBWSwgbWFya0Fzc2V0RXJyb3IobmV3IEVycm9yKCdGYWlsZWQgdG8gbG9hZCBjbGllbnQgbWlkZGxld2FyZSBtYW5pZmVzdCcpKSk7XG59XG5mdW5jdGlvbiBnZXRGaWxlc0ZvclJvdXRlKGFzc2V0UHJlZml4LCByb3V0ZSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgICAgIHNjcmlwdHM6IFtcbiAgICAgICAgICAgICAgICBhc3NldFByZWZpeCArICcvX25leHQvc3RhdGljL2NodW5rcy9wYWdlcycgKyBlbmNvZGVVUkkoKDAsIF9nZXRBc3NldFBhdGhGcm9tUm91dGUpLmRlZmF1bHQocm91dGUsICcuanMnKSksIFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8vIFN0eWxlcyBhcmUgaGFuZGxlZCBieSBgc3R5bGUtbG9hZGVyYCBpbiBkZXZlbG9wbWVudDpcbiAgICAgICAgICAgIGNzczogW11cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBnZXRDbGllbnRCdWlsZE1hbmlmZXN0KCkudGhlbigobWFuaWZlc3QpPT57XG4gICAgICAgIGlmICghKHJvdXRlIGluIG1hbmlmZXN0KSkge1xuICAgICAgICAgICAgdGhyb3cgbWFya0Fzc2V0RXJyb3IobmV3IEVycm9yKGBGYWlsZWQgdG8gbG9va3VwIHJvdXRlOiAke3JvdXRlfWApKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbGxGaWxlcyA9IG1hbmlmZXN0W3JvdXRlXS5tYXAoKGVudHJ5KT0+YXNzZXRQcmVmaXggKyAnL19uZXh0LycgKyBlbmNvZGVVUkkoZW50cnkpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzY3JpcHRzOiBhbGxGaWxlcy5maWx0ZXIoKHYpPT52LmVuZHNXaXRoKCcuanMnKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNzczogYWxsRmlsZXMuZmlsdGVyKCh2KT0+di5lbmRzV2l0aCgnLmNzcycpXG4gICAgICAgICAgICApXG4gICAgICAgIH07XG4gICAgfSk7XG59XG5mdW5jdGlvbiBjcmVhdGVSb3V0ZUxvYWRlcihhc3NldFByZWZpeCkge1xuICAgIGNvbnN0IGVudHJ5cG9pbnRzID0gbmV3IE1hcCgpO1xuICAgIGNvbnN0IGxvYWRlZFNjcmlwdHMgPSBuZXcgTWFwKCk7XG4gICAgY29uc3Qgc3R5bGVTaGVldHMgPSBuZXcgTWFwKCk7XG4gICAgY29uc3Qgcm91dGVzID0gbmV3IE1hcCgpO1xuICAgIGZ1bmN0aW9uIG1heWJlRXhlY3V0ZVNjcmlwdChzcmMpIHtcbiAgICAgICAgLy8gV2l0aCBITVIgd2UgbWlnaHQgbmVlZCB0byBcInJlbG9hZFwiIHNjcmlwdHMgd2hlbiB0aGV5IGFyZVxuICAgICAgICAvLyBkaXNwb3NlZCBhbmQgcmVhZGRlZC4gRXhlY3V0aW5nIHNjcmlwdHMgdHdpY2UgaGFzIG5vIGZ1bmN0aW9uYWxcbiAgICAgICAgLy8gZGlmZmVyZW5jZXNcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICAgICAgICBsZXQgcHJvbSA9IGxvYWRlZFNjcmlwdHMuZ2V0KHNyYyk7XG4gICAgICAgICAgICBpZiAocHJvbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gU2tpcCBleGVjdXRpbmcgc2NyaXB0IGlmIGl0J3MgYWxyZWFkeSBpbiB0aGUgRE9NOlxuICAgICAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYHNjcmlwdFtzcmNePVwiJHtzcmN9XCJdYCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsb2FkZWRTY3JpcHRzLnNldChzcmMsIHByb20gPSBhcHBlbmRTY3JpcHQoc3JjKSk7XG4gICAgICAgICAgICByZXR1cm4gcHJvbTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhcHBlbmRTY3JpcHQoc3JjKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBmZXRjaFN0eWxlU2hlZXQoaHJlZikge1xuICAgICAgICBsZXQgcHJvbSA9IHN0eWxlU2hlZXRzLmdldChocmVmKTtcbiAgICAgICAgaWYgKHByb20pIHtcbiAgICAgICAgICAgIHJldHVybiBwcm9tO1xuICAgICAgICB9XG4gICAgICAgIHN0eWxlU2hlZXRzLnNldChocmVmLCBwcm9tID0gZmV0Y2goaHJlZikudGhlbigocmVzKT0+e1xuICAgICAgICAgICAgaWYgKCFyZXMub2spIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBsb2FkIHN0eWxlc2hlZXQ6ICR7aHJlZn1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXMudGV4dCgpLnRoZW4oKHRleHQpPT4oe1xuICAgICAgICAgICAgICAgICAgICBocmVmOiBocmVmLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiB0ZXh0XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pLmNhdGNoKChlcnIpPT57XG4gICAgICAgICAgICB0aHJvdyBtYXJrQXNzZXRFcnJvcihlcnIpO1xuICAgICAgICB9KSk7XG4gICAgICAgIHJldHVybiBwcm9tO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICB3aGVuRW50cnlwb2ludCAocm91dGUpIHtcbiAgICAgICAgICAgIHJldHVybiB3aXRoRnV0dXJlKHJvdXRlLCBlbnRyeXBvaW50cyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uRW50cnlwb2ludCAocm91dGUsIGV4ZWN1dGUpIHtcbiAgICAgICAgICAgIChleGVjdXRlID8gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+ZXhlY3V0ZSgpXG4gICAgICAgICAgICApLnRoZW4oKGV4cG9ydHMpPT4oe1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IGV4cG9ydHMgJiYgZXhwb3J0cy5kZWZhdWx0IHx8IGV4cG9ydHMsXG4gICAgICAgICAgICAgICAgICAgIGV4cG9ydHM6IGV4cG9ydHNcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgLCAoZXJyKT0+KHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVyclxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApIDogUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCkpLnRoZW4oKGlucHV0KT0+e1xuICAgICAgICAgICAgICAgIGNvbnN0IG9sZCA9IGVudHJ5cG9pbnRzLmdldChyb3V0ZSk7XG4gICAgICAgICAgICAgICAgaWYgKG9sZCAmJiAncmVzb2x2ZScgaW4gb2xkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludHMuc2V0KHJvdXRlLCBpbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbGQucmVzb2x2ZShpbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5cG9pbnRzLnNldChyb3V0ZSwgaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludHMuZGVsZXRlKHJvdXRlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHRoaXMgZW50cnlwb2ludCBoYXMgYmVlbiByZXNvbHZlZCBiZWZvcmVcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHJvdXRlIGlzIG91dGRhdGVkIGFuZCB3ZSB3YW50IHRvIGludmFsaWRhdGVcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBjYWNoZSBlbnRyeVxuICAgICAgICAgICAgICAgICAgICByb3V0ZXMuZGVsZXRlKHJvdXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgbG9hZFJvdXRlIChyb3V0ZSwgcHJlZmV0Y2gpIHtcbiAgICAgICAgICAgIHJldHVybiB3aXRoRnV0dXJlKHJvdXRlLCByb3V0ZXMsICgpPT57XG4gICAgICAgICAgICAgICAgbGV0IGRldkJ1aWxkUHJvbWlzZVJlc29sdmU7XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGRldkJ1aWxkUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgZGV2QnVpbGRQcm9taXNlUmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZVByb21pc2VXaXRoVGltZW91dChnZXRGaWxlc0ZvclJvdXRlKGFzc2V0UHJlZml4LCByb3V0ZSkudGhlbigoeyBzY3JpcHRzICwgY3NzICB9KT0+e1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludHMuaGFzKHJvdXRlKSA/IFtdIDogUHJvbWlzZS5hbGwoc2NyaXB0cy5tYXAobWF5YmVFeGVjdXRlU2NyaXB0KSksXG4gICAgICAgICAgICAgICAgICAgICAgICBQcm9taXNlLmFsbChjc3MubWFwKGZldGNoU3R5bGVTaGVldCkpLCBcbiAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgfSkudGhlbigocmVzKT0+e1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53aGVuRW50cnlwb2ludChyb3V0ZSkudGhlbigoZW50cnlwb2ludCk9Pih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM6IHJlc1sxXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KSwgTVNfTUFYX0lETEVfREVMQVksIG1hcmtBc3NldEVycm9yKG5ldyBFcnJvcihgUm91dGUgZGlkIG5vdCBjb21wbGV0ZSBsb2FkaW5nOiAke3JvdXRlfWApKSkudGhlbigoeyBlbnRyeXBvaW50ICwgc3R5bGVzICB9KT0+e1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlczogc3R5bGVzXG4gICAgICAgICAgICAgICAgICAgIH0sIGVudHJ5cG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2Vycm9yJyBpbiBlbnRyeXBvaW50ID8gZW50cnlwb2ludCA6IHJlcztcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJlZmV0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gY2FjaGUgZXJyb3JzIGR1cmluZyBwcmVmZXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSkuZmluYWxseSgoKT0+e1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGV2QnVpbGRQcm9taXNlUmVzb2x2ZSA9PT0gbnVsbCB8fCBkZXZCdWlsZFByb21pc2VSZXNvbHZlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZXZCdWlsZFByb21pc2VSZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcHJlZmV0Y2ggKHJvdXRlKSB7XG4gICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vR29vZ2xlQ2hyb21lTGFicy9xdWlja2xpbmsvYmxvYi80NTNhNjYxZmExZmE5NDBlMmQyZTA0NDQ1MjM5OGUzOGM2N2E5OGZiL3NyYy9pbmRleC5tanMjTDExNS1MMTE4XG4gICAgICAgICAgICAvLyBMaWNlbnNlOiBBcGFjaGUgMi4wXG4gICAgICAgICAgICBsZXQgY247XG4gICAgICAgICAgICBpZiAoY24gPSBuYXZpZ2F0b3IuY29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgIC8vIERvbid0IHByZWZldGNoIGlmIHVzaW5nIDJHIG9yIGlmIFNhdmUtRGF0YSBpcyBlbmFibGVkLlxuICAgICAgICAgICAgICAgIGlmIChjbi5zYXZlRGF0YSB8fCAvMmcvLnRlc3QoY24uZWZmZWN0aXZlVHlwZSkpIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBnZXRGaWxlc0ZvclJvdXRlKGFzc2V0UHJlZml4LCByb3V0ZSkudGhlbigob3V0cHV0KT0+UHJvbWlzZS5hbGwoY2FuUHJlZmV0Y2ggPyBvdXRwdXQuc2NyaXB0cy5tYXAoKHNjcmlwdCk9PnByZWZldGNoVmlhRG9tKHNjcmlwdCwgJ3NjcmlwdCcpXG4gICAgICAgICAgICAgICAgKSA6IFtdKVxuICAgICAgICAgICAgKS50aGVuKCgpPT57XG4gICAgICAgICAgICAgICAgKDAsIF9yZXF1ZXN0SWRsZUNhbGxiYWNrKS5yZXF1ZXN0SWRsZUNhbGxiYWNrKCgpPT50aGlzLmxvYWRSb3V0ZShyb3V0ZSwgdHJ1ZSkuY2F0Y2goKCk9Pnt9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KS5jYXRjaCgvLyBzd2FsbG93IHByZWZldGNoIGVycm9yc1xuICAgICAgICAgICAgKCk9Pnt9KTtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbmlmICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSB7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJvdXRlLWxvYWRlci5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJtYXJrQXNzZXRFcnJvciIsImlzQXNzZXRFcnJvciIsImdldENsaWVudEJ1aWxkTWFuaWZlc3QiLCJnZXRNaWRkbGV3YXJlTWFuaWZlc3QiLCJjcmVhdGVSb3V0ZUxvYWRlciIsIl9nZXRBc3NldFBhdGhGcm9tUm91dGUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZXF1ZXN0SWRsZUNhbGxiYWNrIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJNU19NQVhfSURMRV9ERUxBWSIsIndpdGhGdXR1cmUiLCJrZXkiLCJtYXAiLCJnZW5lcmF0b3IiLCJlbnRyeSIsImdldCIsImZ1dHVyZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVzb2x2ZXIiLCJwcm9tIiwic2V0IiwidGhlbiIsImNhdGNoIiwiZXJyIiwiZGVsZXRlIiwiaGFzUHJlZmV0Y2giLCJsaW5rIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwid2luZG93IiwiTVNJbnB1dE1ldGhvZENvbnRleHQiLCJkb2N1bWVudE1vZGUiLCJyZWxMaXN0Iiwic3VwcG9ydHMiLCJlIiwiY2FuUHJlZmV0Y2giLCJwcmVmZXRjaFZpYURvbSIsImhyZWYiLCJhcyIsInJlcyIsInJlaiIsInNlbGVjdG9yIiwicXVlcnlTZWxlY3RvciIsInJlbCIsImNyb3NzT3JpZ2luIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9DUk9TU19PUklHSU4iLCJvbmxvYWQiLCJvbmVycm9yIiwiaGVhZCIsImFwcGVuZENoaWxkIiwiQVNTRVRfTE9BRF9FUlJPUiIsIlN5bWJvbCIsImFwcGVuZFNjcmlwdCIsInNyYyIsInNjcmlwdCIsInJlamVjdCIsIkVycm9yIiwiYm9keSIsImRldkJ1aWxkUHJvbWlzZSIsInJlc29sdmVQcm9taXNlV2l0aFRpbWVvdXQiLCJwIiwibXMiLCJjYW5jZWxsZWQiLCJyIiwicmVxdWVzdElkbGVDYWxsYmFjayIsInNldFRpbWVvdXQiLCJzZWxmIiwiX19CVUlMRF9NQU5JRkVTVCIsIm9uQnVpbGRNYW5pZmVzdCIsImNiIiwiX19CVUlMRF9NQU5JRkVTVF9DQiIsIl9fTUlERExFV0FSRV9NQU5JRkVTVCIsIm9uTWlkZGxld2FyZU1hbmlmZXN0IiwiX19NSURETEVXQVJFX01BTklGRVNUX0NCIiwiZ2V0RmlsZXNGb3JSb3V0ZSIsImFzc2V0UHJlZml4Iiwicm91dGUiLCJzY3JpcHRzIiwiZW5jb2RlVVJJIiwiY3NzIiwibWFuaWZlc3QiLCJhbGxGaWxlcyIsImZpbHRlciIsInYiLCJlbmRzV2l0aCIsImVudHJ5cG9pbnRzIiwiTWFwIiwibG9hZGVkU2NyaXB0cyIsInN0eWxlU2hlZXRzIiwicm91dGVzIiwibWF5YmVFeGVjdXRlU2NyaXB0IiwiZmV0Y2hTdHlsZVNoZWV0IiwiZmV0Y2giLCJvayIsInRleHQiLCJjb250ZW50Iiwid2hlbkVudHJ5cG9pbnQiLCJvbkVudHJ5cG9pbnQiLCJleGVjdXRlIiwiY29tcG9uZW50IiwiZXJyb3IiLCJ1bmRlZmluZWQiLCJpbnB1dCIsIm9sZCIsImxvYWRSb3V0ZSIsInByZWZldGNoIiwiZGV2QnVpbGRQcm9taXNlUmVzb2x2ZSIsImFsbCIsImhhcyIsImVudHJ5cG9pbnQiLCJzdHlsZXMiLCJhc3NpZ24iLCJmaW5hbGx5IiwiY24iLCJuYXZpZ2F0b3IiLCJjb25uZWN0aW9uIiwic2F2ZURhdGEiLCJ0ZXN0IiwiZWZmZWN0aXZlVHlwZSIsIm91dHB1dCIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\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 ***!
+ \*************************************************/
+/***/ ((module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\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 _react = _interopRequireDefault(__webpack_require__(/*! react */ \"react\"));\nvar _router = _interopRequireDefault(__webpack_require__(/*! ../shared/lib/router/router */ \"./node_modules/next/dist/shared/lib/router/router.js\"));\nvar _routerContext = __webpack_require__(/*! ../shared/lib/router-context */ \"../shared/lib/router-context\");\nvar _isError = _interopRequireDefault(__webpack_require__(/*! ../lib/is-error */ \"./node_modules/next/dist/lib/is-error.js\"));\nvar _withRouter = _interopRequireDefault(__webpack_require__(/*! ./with-router */ \"./node_modules/next/dist/client/with-router.js\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nconst singletonRouter = {\n router: null,\n readyCallbacks: [],\n ready (cb) {\n if (this.router) return cb();\n if (false) {}\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});\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] = (...args)=>{\n const router = getRouter();\n return router[field](...args);\n };\n});\nrouterEvents.forEach((event)=>{\n singletonRouter.ready(()=>{\n _router.default.events.on(event, (...args)=>{\n const eventField = `on${event.charAt(0).toUpperCase()}${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: ${eventField}`);\n console.error((0, _isError).default(err) ? `${err.message}\\n${err.stack}` : err + \"\");\n }\n }\n });\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}\nvar _default = singletonRouter;\nexports[\"default\"] = _default;\nfunction useRouter() {\n return _react.default.useContext(_routerContext.RouterContext);\n}\nfunction createRouter(...args) {\n singletonRouter.router = new _router.default(...args);\n singletonRouter.readyCallbacks.forEach((cb)=>cb()\n );\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] = (...args)=>{\n return scopedRouter[field](...args);\n };\n });\n return instance;\n}\nif (typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) {\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=router.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yb3V0ZXIuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxLQUFLLEVBQUUsSUFBSTtDQUNkLEVBQUMsQ0FBQztBQUNISCwwQ0FBeUM7SUFDckNJLFVBQVUsRUFBRSxJQUFJO0lBQ2hCQyxHQUFHLEVBQUUsV0FBVztRQUNaLE9BQU9DLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDO0tBQzFCO0NBQ0osRUFBQyxDQUFDO0FBQ0hQLDhDQUE2QztJQUN6Q0ksVUFBVSxFQUFFLElBQUk7SUFDaEJDLEdBQUcsRUFBRSxXQUFXO1FBQ1osT0FBT0csV0FBVyxDQUFDRCxPQUFPLENBQUM7S0FDOUI7Q0FDSixFQUFDLENBQUM7QUFDSEwsaUJBQWlCLEdBQUdPLFNBQVMsQ0FBQztBQUM5QlAsb0JBQW9CLEdBQUdRLFlBQVksQ0FBQztBQUNwQ1IsZ0NBQWdDLEdBQUdTLHdCQUF3QixDQUFDO0FBQzVEVCxrQkFBZSxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLElBQUlVLE1BQU0sR0FBR0Msc0JBQXNCLENBQUNDLG1CQUFPLENBQUMsb0JBQU8sQ0FBQyxDQUFDO0FBQ3JELElBQUlSLE9BQU8sR0FBR08sc0JBQXNCLENBQUNDLG1CQUFPLENBQUMseUZBQTZCLENBQUMsQ0FBQztBQUM1RSxJQUFJQyxjQUFjLEdBQUdELG1CQUFPLENBQUMsa0VBQThCLENBQUM7QUFDNUQsSUFBSUUsUUFBUSxHQUFHSCxzQkFBc0IsQ0FBQ0MsbUJBQU8sQ0FBQyxpRUFBaUIsQ0FBQyxDQUFDO0FBQ2pFLElBQUlOLFdBQVcsR0FBR0ssc0JBQXNCLENBQUNDLG1CQUFPLENBQUMscUVBQWUsQ0FBQyxDQUFDO0FBQ2xFLFNBQVNELHNCQUFzQixDQUFDSSxHQUFHLEVBQUU7SUFDakMsT0FBT0EsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVUsR0FBR0QsR0FBRyxHQUFHO1FBQ2pDVixPQUFPLEVBQUVVLEdBQUc7S0FDZixDQUFD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Y2VzIjpbIndlYnBhY2s6Ly9idXJuLW15LXdhbGxldC8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3JvdXRlci5qcz8zMWZjIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUm91dGVyXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfcm91dGVyLmRlZmF1bHQ7XG4gICAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJ3aXRoUm91dGVyXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfd2l0aFJvdXRlci5kZWZhdWx0O1xuICAgIH1cbn0pO1xuZXhwb3J0cy51c2VSb3V0ZXIgPSB1c2VSb3V0ZXI7XG5leHBvcnRzLmNyZWF0ZVJvdXRlciA9IGNyZWF0ZVJvdXRlcjtcbmV4cG9ydHMubWFrZVB1YmxpY1JvdXRlckluc3RhbmNlID0gbWFrZVB1YmxpY1JvdXRlckluc3RhbmNlO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xudmFyIF9yZWFjdCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJlYWN0XCIpKTtcbnZhciBfcm91dGVyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvcm91dGVyXCIpKTtcbnZhciBfcm91dGVyQ29udGV4dCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci1jb250ZXh0XCIpO1xudmFyIF9pc0Vycm9yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vbGliL2lzLWVycm9yXCIpKTtcbnZhciBfd2l0aFJvdXRlciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vd2l0aC1yb3V0ZXJcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHtcbiAgICByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDoge1xuICAgICAgICBkZWZhdWx0OiBvYmpcbiAgICB9O1xufVxuY29uc3Qgc2luZ2xldG9uUm91dGVyID0ge1xuICAgIHJvdXRlcjogbnVsbCxcbiAgICByZWFkeUNhbGxiYWNrczogW10sXG4gICAgcmVhZHkgKGNiKSB7XG4gICAgICAgIGlmICh0aGlzLnJvdXRlcikgcmV0dXJuIGNiKCk7XG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5yZWFkeUNhbGxiYWNrcy5wdXNoKGNiKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG4vLyBDcmVhdGUgcHVibGljIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgb2YgdGhlIHJvdXRlciBpbiB0aGUgc2luZ2xldG9uUm91dGVyXG5jb25zdCB1cmxQcm9wZXJ0eUZpZWxkcyA9IFtcbiAgICAncGF0aG5hbWUnLFxuICAgICdyb3V0ZScsXG4gICAgJ3F1ZXJ5JyxcbiAgICAnYXNQYXRoJyxcbiAgICAnY29tcG9uZW50cycsXG4gICAgJ2lzRmFsbGJhY2snLFxuICAgICdiYXNlUGF0aCcsXG4gICAgJ2xvY2FsZScsXG4gICAgJ2xvY2FsZXMnLFxuICAgICdkZWZhdWx0TG9jYWxlJyxcbiAgICAnaXNSZWFkeScsXG4gICAgJ2lzUHJldmlldycsXG4gICAgJ2lzTG9jYWxlRG9tYWluJyxcbiAgICAnZG9tYWluTG9jYWxlcycsIFxuXTtcbmNvbnN0IHJvdXRlckV2ZW50cyA9IFtcbiAgICAncm91dGVDaGFuZ2VTdGFydCcsXG4gICAgJ2JlZm9yZUhpc3RvcnlDaGFuZ2UnLFxuICAgICdyb3V0ZUNoYW5nZUNvbXBsZXRlJyxcbiAgICAncm91dGVDaGFuZ2VFcnJvcicsXG4gICAgJ2hhc2hDaGFuZ2VTdGFydCcsXG4gICAgJ2hhc2hDaGFuZ2VDb21wbGV0ZScsIFxuXTtcbmNvbnN0IGNvcmVNZXRob2RGaWVsZHMgPSBbXG4gICAgJ3B1c2gnLFxuICAgICdyZXBsYWNlJyxcbiAgICAncmVsb2FkJyxcbiAgICAnYmFjaycsXG4gICAgJ3ByZWZldGNoJyxcbiAgICAnYmVmb3JlUG9wU3RhdGUnLCBcbl07XG4vLyBFdmVudHMgaXMgYSBzdGF0aWMgcHJvcGVydHkgb24gdGhlIHJvdXRlciwgdGhlIHJvdXRlciBkb2Vzbid0IGhhdmUgdG8gYmUgaW5pdGlhbGl6ZWQgdG8gdXNlIGl0XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoc2luZ2xldG9uUm91dGVyLCAnZXZlbnRzJywge1xuICAgIGdldCAoKSB7XG4gICAgICAgIHJldHVybiBfcm91dGVyLmRlZmF1bHQuZXZlbnRzO1xuICAgIH1cbn0pO1xudXJsUHJvcGVydHlGaWVsZHMuZm9yRWFjaCgoZmllbGQpPT57XG4gICAgLy8gSGVyZSB3ZSBuZWVkIHRvIHVzZSBPYmplY3QuZGVmaW5lUHJvcGVydHkgYmVjYXVzZSB3ZSBuZWVkIHRvIHJldHVyblxuICAgIC8vIHRoZSBwcm9wZXJ0eSBhc3NpZ25lZCB0byB0aGUgYWN0dWFsIHJvdXRlclxuICAgIC8vIFRoZSB2YWx1ZSBtaWdodCBnZXQgY2hhbmdlZCBhcyB3ZSBjaGFuZ2Ugcm91dGVzIGFuZCB0aGlzIGlzIHRoZVxuICAgIC8vIHByb3BlciB3YXkgdG8gYWNjZXNzIGl0XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHNpbmdsZXRvblJvdXRlciwgZmllbGQsIHtcbiAgICAgICAgZ2V0ICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHJvdXRlciA9IGdldFJvdXRlcigpO1xuICAgICAgICAgICAgcmV0dXJuIHJvdXRlcltmaWVsZF07XG4gICAgICAgIH1cbiAgICB9KTtcbn0pO1xuY29yZU1ldGhvZEZpZWxkcy5mb3JFYWNoKChmaWVsZCk9PntcbiAgICBzaW5nbGV0b25Sb3V0ZXJbZmllbGRdID0gKC4uLmFyZ3MpPT57XG4gICAgICAgIGNvbnN0IHJvdXRlciA9IGdldFJvdXRlcigpO1xuICAgICAgICByZXR1cm4gcm91dGVyW2ZpZWxkXSguLi5hcmdzKTtcbiAgICB9O1xufSk7XG5yb3V0ZXJFdmVudHMuZm9yRWFjaCgoZXZlbnQpPT57XG4gICAgc2luZ2xldG9uUm91dGVyLnJlYWR5KCgpPT57XG4gICAgICAgIF9yb3V0ZXIuZGVmYXVsdC5ldmVudHMub24oZXZlbnQsICguLi5hcmdzKT0+e1xuICAgICAgICAgICAgY29uc3QgZXZlbnRGaWVsZCA9IGBvbiR7ZXZlbnQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHtldmVudC5zdWJzdHJpbmcoMSl9YDtcbiAgICAgICAgICAgIGNvbnN0IF9zaW5nbGV0b25Sb3V0ZXIgPSBzaW5nbGV0b25Sb3V0ZXI7XG4gICAgICAgICAgICBpZiAoX3NpbmdsZXRvblJvdXRlcltldmVudEZpZWxkXSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIF9zaW5nbGV0b25Sb3V0ZXJbZXZlbnRGaWVsZF0oLi4uYXJncyk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIHdoZW4gcnVubmluZyB0aGUgUm91dGVyIGV2ZW50OiAke2V2ZW50RmllbGR9YCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoKDAsIF9pc0Vycm9yKS5kZWZhdWx0KGVycikgPyBgJHtlcnIubWVzc2FnZX1cXG4ke2Vyci5zdGFja31gIDogZXJyICsgJycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG59KTtcbmZ1bmN0aW9uIGdldFJvdXRlcigpIHtcbiAgICBpZiAoIXNpbmdsZXRvblJvdXRlci5yb3V0ZXIpIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9ICdObyByb3V0ZXIgaW5zdGFuY2UgZm91bmQuXFxuJyArICdZb3Ugc2hvdWxkIG9ubHkgdXNlIFwibmV4dC9yb3V0ZXJcIiBvbiB0aGUgY2xpZW50IHNpZGUgb2YgeW91ciBhcHAuXFxuJztcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICByZXR1cm4gc2luZ2xldG9uUm91dGVyLnJvdXRlcjtcbn1cbnZhciBfZGVmYXVsdCA9IHNpbmdsZXRvblJvdXRlcjtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0O1xuZnVuY3Rpb24gdXNlUm91dGVyKCkge1xuICAgIHJldHVybiBfcmVhY3QuZGVmYXVsdC51c2VDb250ZXh0KF9yb3V0ZXJDb250ZXh0LlJvdXRlckNvbnRleHQpO1xufVxuZnVuY3Rpb24gY3JlYXRlUm91dGVyKC4uLmFyZ3MpIHtcbiAgICBzaW5nbGV0b25Sb3V0ZXIucm91dGVyID0gbmV3IF9yb3V0ZXIuZGVmYXVsdCguLi5hcmdzKTtcbiAgICBzaW5nbGV0b25Sb3V0ZXIucmVhZHlDYWxsYmFja3MuZm9yRWFjaCgoY2IpPT5jYigpXG4gICAgKTtcbiAgICBzaW5nbGV0b25Sb3V0ZXIucmVhZHlDYWxsYmFja3MgPSBbXTtcbiAgICByZXR1cm4gc2luZ2xldG9uUm91dGVyLnJvdXRlcjtcbn1cbmZ1bmN0aW9uIG1ha2VQdWJsaWNSb3V0ZXJJbnN0YW5jZShyb3V0ZXIpIHtcbiAgICBjb25zdCBzY29wZWRSb3V0ZXIgPSByb3V0ZXI7XG4gICAgY29uc3QgaW5zdGFuY2UgPSB7fTtcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHVybFByb3BlcnR5RmllbGRzKXtcbiAgICAgICAgaWYgKHR5cGVvZiBzY29wZWRSb3V0ZXJbcHJvcGVydHldID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgaW5zdGFuY2VbcHJvcGVydHldID0gT2JqZWN0LmFzc2lnbihBcnJheS5pc0FycmF5KHNjb3BlZFJvdXRlcltwcm9wZXJ0eV0pID8gW10gOiB7fSwgc2NvcGVkUm91dGVyW3Byb3BlcnR5XSkgLy8gbWFrZXMgc3VyZSBxdWVyeSBpcyBub3Qgc3RhdGVmdWxcbiAgICAgICAgICAgIDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGluc3RhbmNlW3Byb3BlcnR5XSA9IHNjb3BlZFJvdXRlcltwcm9wZXJ0eV07XG4gICAgfVxuICAgIC8vIEV2ZW50cyBpcyBhIHN0YXRpYyBwcm9wZXJ0eSBvbiB0aGUgcm91dGVyLCB0aGUgcm91dGVyIGRvZXNuJ3QgaGF2ZSB0byBiZSBpbml0aWFsaXplZCB0byB1c2UgaXRcbiAgICBpbnN0YW5jZS5ldmVudHMgPSBfcm91dGVyLmRlZmF1bHQuZXZlbnRzO1xuICAgIGNvcmVNZXRob2RGaWVsZHMuZm9yRWFjaCgoZmllbGQpPT57XG4gICAgICAgIGluc3RhbmNlW2ZpZWxkXSA9ICguLi5hcmdzKT0+e1xuICAgICAgICAgICAgcmV0dXJuIHNjb3BlZFJvdXRlcltmaWVsZF0oLi4uYXJncyk7XG4gICAgICAgIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xufVxuXG5pZiAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkge1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yb3V0ZXIuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsIl9yb3V0ZXIiLCJkZWZhdWx0IiwiX3dpdGhSb3V0ZXIiLCJ1c2VSb3V0ZXIiLCJjcmVhdGVSb3V0ZXIiLCJtYWtlUHVibGljUm91dGVySW5zdGFuY2UiLCJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yb3V0ZXJDb250ZXh0IiwiX2lzRXJyb3IiLCJvYmoiLCJfX2VzTW9kdWxlIiwic2luZ2xldG9uUm91dGVyIiwicm91dGVyIiwicmVhZHlDYWxsYmFja3MiLCJyZWFkeSIsImNiIiwicHVzaCIsInVybFByb3BlcnR5RmllbGRzIiwicm91dGVyRXZlbnRzIiwiY29yZU1ldGhvZEZpZWxkcyIsImV2ZW50cyIsImZvckVhY2giLCJmaWVsZCIsImdldFJvdXRlciIsImFyZ3MiLCJldmVudCIsIm9uIiwiZXZlbnRGaWVsZCIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic3Vic3RyaW5nIiwiX3NpbmdsZXRvblJvdXRlciIsImVyciIsImNvbnNvbGUiLCJlcnJvciIsIm1lc3NhZ2UiLCJzdGFjayIsIkVycm9yIiwiX2RlZmF1bHQiLCJ1c2VDb250ZXh0IiwiUm91dGVyQ29udGV4dCIsInNjb3BlZFJvdXRlciIsImluc3RhbmNlIiwicHJvcGVydHkiLCJhc3NpZ24iLCJBcnJheSIsImlzQXJyYXkiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\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 ***!
+ \*************************************************/
+/***/ ((module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.handleClientScriptLoad = handleClientScriptLoad;\nexports.initScriptLoader = initScriptLoader;\nexports[\"default\"] = void 0;\nvar _react = _interopRequireWildcard(__webpack_require__(/*! react */ \"react\"));\nvar _headManagerContext = __webpack_require__(/*! ../shared/lib/head-manager-context */ \"../shared/lib/head-manager-context\");\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\");\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n if (obj != null) {\n for(var key in obj){\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n if (desc.get || desc.set) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n }\n newObj.default = obj;\n return newObj;\n }\n}\nfunction _objectSpread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _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}\nconst ScriptCache = new Map();\nconst LoadCache = new Set();\nconst ignoreProps = [\n \"onLoad\",\n \"dangerouslySetInnerHTML\",\n \"children\",\n \"onError\",\n \"strategy\", \n];\nconst loadScript = (props)=>{\n const { src , id , onLoad =()=>{} , 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 // Execute onLoad since the script loading has begun\n ScriptCache.get(src).then(onLoad, onError);\n return;\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 });\n el.addEventListener(\"error\", function(e) {\n reject(e);\n });\n }).catch(function(e) {\n if (onError) {\n onError(e);\n }\n });\n if (src) {\n ScriptCache.set(src, loadPromise);\n }\n LoadCache.add(cacheKey);\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 } else if (src) {\n el.src = src;\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 });\n } else {\n loadScript(props);\n }\n}\nfunction loadLazyScript(props) {\n if (document.readyState === \"complete\") {\n (0, _requestIdleCallback).requestIdleCallback(()=>loadScript(props)\n );\n } else {\n window.addEventListener(\"load\", ()=>{\n (0, _requestIdleCallback).requestIdleCallback(()=>loadScript(props)\n );\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 const { src =\"\" , onLoad =()=>{} , strategy =\"afterInteractive\" , onError } = props, restProps = _objectWithoutProperties(props, [\n \"src\",\n \"onLoad\",\n \"strategy\",\n \"onError\"\n ]);\n // Context is available only during SSR\n const { updateScripts , scripts , getIsSsr } = (0, _react).useContext(_headManagerContext.HeadManagerContext);\n (0, _react).useEffect(()=>{\n if (strategy === \"afterInteractive\") {\n loadScript(props);\n } else if (strategy === \"lazyOnload\") {\n loadLazyScript(props);\n }\n }, [\n props,\n strategy\n ]);\n if (strategy === \"beforeInteractive\" || strategy === \"worker\") {\n if (updateScripts) {\n scripts[strategy] = (scripts[strategy] || []).concat([\n _objectSpread({\n src,\n onLoad,\n onError\n }, restProps), \n ]);\n updateScripts(scripts);\n } else if (getIsSsr && getIsSsr()) {\n // Script has already loaded during SSR\n LoadCache.add(restProps.id || src);\n } else if (getIsSsr && !getIsSsr()) {\n loadScript(props);\n }\n }\n return null;\n}\nvar _default = Script;\nexports[\"default\"] = _default;\nif (typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) {\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=script.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9zY3JpcHQuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxLQUFLLEVBQUUsSUFBSTtDQUNkLEVBQUMsQ0FBQztBQUNIRCw4QkFBOEIsR0FBR0Usc0JBQXNCLENBQUM7QUFDeERGLHdCQUF3QixHQUFHRyxnQkFBZ0IsQ0FBQztBQUM1Q0gsa0JBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUN6QixJQUFJSyxNQUFNLEdBQUdDLHVCQUF1QixDQUFDQyxtQkFBTyxDQUFDLG9CQUFPLENBQUMsQ0FBQztBQUN0RCxJQUFJQyxtQkFBbUIsR0FBR0QsbUJBQU8sQ0FBQyw4RUFBb0MsQ0FBQztBQUN2RSxJQUFJRSxZQUFZLEdBQUdGLG1CQUFPLENBQUMsdUVBQWdCLENBQUM7QUFDNUMsSUFBSUcsb0JBQW9CLEdBQUdILG1CQUFPLENBQUMseUZBQXlCLENBQUM7QUFDN0QsU0FBU0ksZUFBZSxDQUFDQyxHQUFHLEVBQUVDLEdBQUcsRUFBRVosS0FBSyxFQUFFO0lBQ3RDLElBQUlZLEdBQUcsSUFBSUQsR0FBRyxFQUFFO1FBQ1pkLE1BQU0sQ0FBQ0MsY0FBYyxDQUFDYSxHQUFHLEVBQUVDLEdBQUcsRUFBRTtZQUM1QlosS0FBSyxFQUFFQSxLQUFLO1lBQ1phLFVBQVUsRUFBRSxJQUFJO1lBQ2hCQyxZQUFZLEVBQUUsSUFBSTtZQUNsQkMsUUFBUSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0tBQ04sTUFBTTtRQUNISixHQUFHLENBQUNDLEdBQUcsQ0FBQyxHQUFHWixLQUFLLENBQUM7S0FDcEI7SUFDRCxPQUFPVyxHQUFHLENBQUM7Q0FDZDtBQUNELFNBQVNOLHVCQUF1QixDQUFDTSxHQUFHLEVBQUU7SUFDbEMsSUFBSUEsR0FBRyxJQUFJQSxHQUFHLENBQUNLLFVBQVUsRUFBRTtRQUN2QixPQUFPTCxHQUFHLENBQUM7S0FDZCxNQUFNO1FBQ0gsSUFBSU0sTUFBTSxHQUFHLEVBQUU7UUFD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T0FBTyxDQUFDSSxPQUFPLENBQUM7Q0FDbEMsQ0FFRCxrQ0FBa0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9idXJuLW15LXdhbGxldC8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3NjcmlwdC5qcz9iZDZhIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5oYW5kbGVDbGllbnRTY3JpcHRMb2FkID0gaGFuZGxlQ2xpZW50U2NyaXB0TG9hZDtcbmV4cG9ydHMuaW5pdFNjcmlwdExvYWRlciA9IGluaXRTY3JpcHRMb2FkZXI7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG52YXIgX3JlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcbnZhciBfaGVhZE1hbmFnZXJDb250ZXh0ID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvaGVhZC1tYW5hZ2VyLWNvbnRleHRcIik7XG52YXIgX2hlYWRNYW5hZ2VyID0gcmVxdWlyZShcIi4vaGVhZC1tYW5hZ2VyXCIpO1xudmFyIF9yZXF1ZXN0SWRsZUNhbGxiYWNrID0gcmVxdWlyZShcIi4vcmVxdWVzdC1pZGxlLWNhbGxiYWNrXCIpO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkge1xuICAgIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG9ialtrZXldID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG59XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHtcbiAgICBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG5ld09iaiA9IHt9O1xuICAgICAgICBpZiAob2JqICE9IG51bGwpIHtcbiAgICAgICAgICAgIGZvcih2YXIga2V5IGluIG9iail7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDoge307XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZXNjLmdldCB8fCBkZXNjLnNldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld09ialtrZXldID0gb2JqW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbmV3T2JqLmRlZmF1bHQgPSBvYmo7XG4gICAgICAgIHJldHVybiBuZXdPYmo7XG4gICAgfVxufVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHtcbiAgICBmb3IodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307XG4gICAgICAgIHZhciBvd25LZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgICAgICAgaWYgKHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIG93bktleXMgPSBvd25LZXlzLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSkuZmlsdGVyKGZ1bmN0aW9uKHN5bSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwgc3ltKS5lbnVtZXJhYmxlO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIG93bktleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgICAgIF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbn1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7XG4gICAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gICAgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpO1xuICAgIHZhciBrZXksIGk7XG4gICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICAgICAgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7XG4gICAgICAgIGZvcihpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspe1xuICAgICAgICAgICAga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTtcbiAgICAgICAgICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7XG4gICAgICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlO1xuICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xufVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkge1xuICAgIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9O1xuICAgIHZhciB0YXJnZXQgPSB7fTtcbiAgICB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XG4gICAgdmFyIGtleSwgaTtcbiAgICBmb3IoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAga2V5ID0gc291cmNlS2V5c1tpXTtcbiAgICAgICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcbiAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbn1cbmNvbnN0IFNjcmlwdENhY2hlID0gbmV3IE1hcCgpO1xuY29uc3QgTG9hZENhY2hlID0gbmV3IFNldCgpO1xuY29uc3QgaWdub3JlUHJvcHMgPSBbXG4gICAgJ29uTG9hZCcsXG4gICAgJ2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MJyxcbiAgICAnY2hpbGRyZW4nLFxuICAgICdvbkVycm9yJyxcbiAgICAnc3RyYXRlZ3knLCBcbl07XG5jb25zdCBsb2FkU2NyaXB0ID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgc3JjICwgaWQgLCBvbkxvYWQgPSgpPT57fSAsIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MICwgY2hpbGRyZW4gPScnICwgc3RyYXRlZ3kgPSdhZnRlckludGVyYWN0aXZlJyAsIG9uRXJyb3IgLCAgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gaWQgfHwgc3JjO1xuICAgIC8vIFNjcmlwdCBoYXMgYWxyZWFkeSBsb2FkZWRcbiAgICBpZiAoY2FjaGVLZXkgJiYgTG9hZENhY2hlLmhhcyhjYWNoZUtleSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBDb250ZW50cyBvZiB0aGlzIHNjcmlwdCBhcmUgYWxyZWFkeSBsb2FkaW5nL2xvYWRlZFxuICAgIGlmIChTY3JpcHRDYWNoZS5oYXMoc3JjKSkge1xuICAgICAgICBMb2FkQ2FjaGUuYWRkKGNhY2hlS2V5KTtcbiAgICAgICAgLy8gRXhlY3V0ZSBvbkxvYWQgc2luY2UgdGhlIHNjcmlwdCBsb2FkaW5nIGhhcyBiZWd1blxuICAgICAgICBTY3JpcHRDYWNoZS5nZXQoc3JjKS50aGVuKG9uTG9hZCwgb25FcnJvcik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICBjb25zdCBsb2FkUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57XG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICBpZiAob25Mb2FkKSB7XG4gICAgICAgICAgICAgICAgb25Mb2FkLmNhbGwodGhpcywgZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgfSk7XG4gICAgfSkuY2F0Y2goZnVuY3Rpb24oZSkge1xuICAgICAgICBpZiAob25FcnJvcikge1xuICAgICAgICAgICAgb25FcnJvcihlKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChzcmMpIHtcbiAgICAgICAgU2NyaXB0Q2FjaGUuc2V0KHNyYywgbG9hZFByb21pc2UpO1xuICAgIH1cbiAgICBMb2FkQ2FjaGUuYWRkKGNhY2hlS2V5KTtcbiAgICBpZiAoZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpIHtcbiAgICAgICAgZWwuaW5uZXJIVE1MID0gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sIHx8ICcnO1xuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcbiAgICAgICAgZWwudGV4dENvbnRlbnQgPSB0eXBlb2YgY2hpbGRyZW4gPT09ICdzdHJpbmcnID8gY2hpbGRyZW4gOiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSA/IGNoaWxkcmVuLmpvaW4oJycpIDogJyc7XG4gICAgfSBlbHNlIGlmIChzcmMpIHtcbiAgICAgICAgZWwuc3JjID0gc3JjO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IFtrLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocHJvcHMpKXtcbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgaWdub3JlUHJvcHMuaW5jbHVkZXMoaykpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGF0dHIgPSBfaGVhZE1hbmFnZXIuRE9NQXR0cmlidXRlTmFtZXNba10gfHwgay50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoYXR0ciwgdmFsdWUpO1xuICAgIH1cbiAgICBpZiAoc3RyYXRlZ3kgPT09ICd3b3JrZXInKSB7XG4gICAgICAgIGVsLnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0L3BhcnR5dG93bicpO1xuICAgIH1cbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ2RhdGEtbnNjcmlwdCcsIHN0cmF0ZWd5KTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsKTtcbn07XG5mdW5jdGlvbiBoYW5kbGVDbGllbnRTY3JpcHRMb2FkKHByb3BzKSB7XG4gICAgY29uc3QgeyBzdHJhdGVneSA9J2FmdGVySW50ZXJhY3RpdmUnICB9ID0gcHJvcHM7XG4gICAgaWYgKHN0cmF0ZWd5ID09PSAnbGF6eU9ubG9hZCcpIHtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKT0+e1xuICAgICAgICAgICAgKDAsIF9yZXF1ZXN0SWRsZUNhbGxiYWNrKS5yZXF1ZXN0SWRsZUNhbGxiYWNrKCgpPT5sb2FkU2NyaXB0KHByb3BzKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbG9hZFNjcmlwdChwcm9wcyk7XG4gICAgfVxufVxuZnVuY3Rpb24gbG9hZExhenlTY3JpcHQocHJvcHMpIHtcbiAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJykge1xuICAgICAgICAoMCwgX3JlcXVlc3RJZGxlQ2FsbGJhY2spLnJlcXVlc3RJZGxlQ2FsbGJhY2soKCk9PmxvYWRTY3JpcHQocHJvcHMpXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKT0+e1xuICAgICAgICAgICAgKDAsIF9yZXF1ZXN0SWRsZUNhbGxiYWNrKS5yZXF1ZXN0SWRsZUNhbGxiYWNrKCgpPT5sb2FkU2NyaXB0KHByb3BzKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZnVuY3Rpb24gYWRkQmVmb3JlSW50ZXJhY3RpdmVUb0NhY2hlKCkge1xuICAgIGNvbnN0IHNjcmlwdHMgPSBbXG4gICAgICAgIC4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLW5zY3JpcHQ9XCJiZWZvcmVJbnRlcmFjdGl2ZVwiXScpLFxuICAgICAgICAuLi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1uc2NyaXB0PVwiYmVmb3JlUGFnZVJlbmRlclwiXScpLCBcbiAgICBdO1xuICAgIHNjcmlwdHMuZm9yRWFjaCgoc2NyaXB0KT0+e1xuICAgICAgICBjb25zdCBjYWNoZUtleSA9IHNjcmlwdC5pZCB8fCBzY3JpcHQuZ2V0QXR0cmlidXRlKCdzcmMnKTtcbiAgICAgICAgTG9hZENhY2hlLmFkZChjYWNoZUtleSk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBpbml0U2NyaXB0TG9hZGVyKHNjcmlwdExvYWRlckl0ZW1zKSB7XG4gICAgc2NyaXB0TG9hZGVySXRlbXMuZm9yRWFjaChoYW5kbGVDbGllbnRTY3JpcHRMb2FkKTtcbiAgICBhZGRCZWZvcmVJbnRlcmFjdGl2ZVRvQ2FjaGUoKTtcbn1cbmZ1bmN0aW9uIFNjcmlwdChwcm9wcykge1xuICAgIGNvbnN0IHsgc3JjID0nJyAsIG9uTG9hZCA9KCk9Pnt9ICwgc3RyYXRlZ3kgPSdhZnRlckludGVyYWN0aXZlJyAsIG9uRXJyb3IgIH0gPSBwcm9wcywgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHByb3BzLCBbXG4gICAgICAgIFwic3JjXCIsXG4gICAgICAgIFwib25Mb2FkXCIsXG4gICAgICAgIFwic3RyYXRlZ3lcIixcbiAgICAgICAgXCJvbkVycm9yXCJcbiAgICBdKTtcbiAgICAvLyBDb250ZXh0IGlzIGF2YWlsYWJsZSBvbmx5IGR1cmluZyBTU1JcbiAgICBjb25zdCB7IHVwZGF0ZVNjcmlwdHMgLCBzY3JpcHRzICwgZ2V0SXNTc3IgIH0gPSAoMCwgX3JlYWN0KS51c2VDb250ZXh0KF9oZWFkTWFuYWdlckNvbnRleHQuSGVhZE1hbmFnZXJDb250ZXh0KTtcbiAgICAoMCwgX3JlYWN0KS51c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKHN0cmF0ZWd5ID09PSAnYWZ0ZXJJbnRlcmFjdGl2ZScpIHtcbiAgICAgICAgICAgIGxvYWRTY3JpcHQocHJvcHMpO1xuICAgICAgICB9IGVsc2UgaWYgKHN0cmF0ZWd5ID09PSAnbGF6eU9ubG9hZCcpIHtcbiAgICAgICAgICAgIGxvYWRMYXp5U2NyaXB0KHByb3BzKTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgcHJvcHMsXG4gICAgICAgIHN0cmF0ZWd5XG4gICAgXSk7XG4gICAgaWYgKHN0cmF0ZWd5ID09PSAnYmVmb3JlSW50ZXJhY3RpdmUnIHx8IHN0cmF0ZWd5ID09PSAnd29ya2VyJykge1xuICAgICAgICBpZiAodXBkYXRlU2NyaXB0cykge1xuICAgICAgICAgICAgc2NyaXB0c1tzdHJhdGVneV0gPSAoc2NyaXB0c1tzdHJhdGVneV0gfHwgW10pLmNvbmNhdChbXG4gICAgICAgICAgICAgICAgX29iamVjdFNwcmVhZCh7XG4gICAgICAgICAgICAgICAgICAgIHNyYyxcbiAgICAgICAgICAgICAgICAgICAgb25Mb2FkLFxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yXG4gICAgICAgICAgICAgICAgfSwgcmVzdFByb3BzKSwgXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICAgIHVwZGF0ZVNjcmlwdHMoc2NyaXB0cyk7XG4gICAgICAgIH0gZWxzZSBpZiAoZ2V0SXNTc3IgJiYgZ2V0SXNTc3IoKSkge1xuICAgICAgICAgICAgLy8gU2NyaXB0IGhhcyBhbHJlYWR5IGxvYWRlZCBkdXJpbmcgU1NSXG4gICAgICAgICAgICBMb2FkQ2FjaGUuYWRkKHJlc3RQcm9wcy5pZCB8fCBzcmMpO1xuICAgICAgICB9IGVsc2UgaWYgKGdldElzU3NyICYmICFnZXRJc1NzcigpKSB7XG4gICAgICAgICAgICBsb2FkU2NyaXB0KHByb3BzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbnZhciBfZGVmYXVsdCA9IFNjcmlwdDtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0O1xuXG5pZiAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkge1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1zY3JpcHQuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiaGFuZGxlQ2xpZW50U2NyaXB0TG9hZCIsImluaXRTY3JpcHRMb2FkZXIiLCJkZWZhdWx0IiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX2hlYWRNYW5hZ2VyQ29udGV4dCIsIl9oZWFkTWFuYWdlciIsIl9yZXF1ZXN0SWRsZUNhbGxiYWNrIiwiX2RlZmluZVByb3BlcnR5Iiwib2JqIiwia2V5IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX19lc01vZHVsZSIsIm5ld09iaiIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJnZXQiLCJzZXQiLCJfb2JqZWN0U3ByZWFkIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiY29uY2F0IiwiZmlsdGVyIiwic3ltIiwiZm9yRWFjaCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsImV4Y2x1ZGVkIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJzb3VyY2VTeW1ib2xLZXlzIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwic291cmNlS2V5cyIsIlNjcmlwdENhY2hlIiwiTWFwIiwiTG9hZENhY2hlIiwiU2V0IiwiaWdub3JlUHJvcHMiLCJsb2FkU2NyaXB0IiwicHJvcHMiLCJzcmMiLCJpZCIsIm9uTG9hZCIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiY2hpbGRyZW4iLCJzdHJhdGVneSIsIm9uRXJyb3IiLCJjYWNoZUtleSIsImhhcyIsImFkZCIsInRoZW4iLCJlbCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImxvYWRQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJhZGRFdmVudExpc3RlbmVyIiwiZSIsImNhdGNoIiwiaW5uZXJIVE1MIiwiX19odG1sIiwidGV4dENvbnRlbnQiLCJBcnJheSIsImlzQXJyYXkiLCJqb2luIiwiayIsImVudHJpZXMiLCJ1bmRlZmluZWQiLCJpbmNsdWRlcyIsImF0dHIiLCJET01BdHRyaWJ1dGVOYW1lcyIsInRvTG93ZXJDYXNlIiwic2V0QXR0cmlidXRlIiwiYm9keSIsImFwcGVuZENoaWxkIiwid2luZG93IiwicmVxdWVzdElkbGVDYWxsYmFjayIsImxvYWRMYXp5U2NyaXB0IiwicmVhZHlTdGF0ZSIsImFkZEJlZm9yZUludGVyYWN0aXZlVG9DYWNoZSIsInNjcmlwdHMiLCJxdWVyeVNlbGVjdG9yQWxsIiwic2NyaXB0IiwiZ2V0QXR0cmlidXRlIiwic2NyaXB0TG9hZGVySXRlbXMiLCJTY3JpcHQiLCJyZXN0UHJvcHMiLCJ1cGRhdGVTY3JpcHRzIiwiZ2V0SXNTc3IiLCJ1c2VDb250ZXh0IiwiSGVhZE1hbmFnZXJDb250ZXh0IiwidXNlRWZmZWN0IiwiX2RlZmF1bHQiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/script.js\n");
+
+/***/ }),
+
+/***/ "./node_modules/next/dist/client/use-intersection.js":
+/*!***********************************************************!*\
+ !*** ./node_modules/next/dist/client/use-intersection.js ***!
+ \***********************************************************/
+/***/ ((module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.useIntersection = useIntersection;\nvar _react = __webpack_require__(/*! react */ \"react\");\nvar _requestIdleCallback = __webpack_require__(/*! ./request-idle-callback */ \"./node_modules/next/dist/client/request-idle-callback.js\");\nconst hasIntersectionObserver = typeof IntersectionObserver !== \"undefined\";\nfunction useIntersection({ rootRef , rootMargin , disabled }) {\n const isDisabled = disabled || !hasIntersectionObserver;\n const unobserve = (0, _react).useRef();\n const [visible, setVisible] = (0, _react).useState(false);\n const [root, setRoot] = (0, _react).useState(rootRef ? rootRef.current : null);\n const setRef = (0, _react).useCallback((el)=>{\n if (unobserve.current) {\n unobserve.current();\n unobserve.current = undefined;\n }\n if (isDisabled || visible) return;\n if (el && el.tagName) {\n unobserve.current = observe(el, (isVisible)=>isVisible && setVisible(isVisible)\n , {\n root,\n rootMargin\n });\n }\n }, [\n isDisabled,\n root,\n rootMargin,\n visible\n ]);\n const resetVisible = (0, _react).useCallback(()=>{\n setVisible(false);\n }, []);\n (0, _react).useEffect(()=>{\n if (!hasIntersectionObserver) {\n if (!visible) {\n const idleCallback = (0, _requestIdleCallback).requestIdleCallback(()=>setVisible(true)\n );\n return ()=>(0, _requestIdleCallback).cancelIdleCallback(idleCallback)\n ;\n }\n }\n }, [\n visible\n ]);\n (0, _react).useEffect(()=>{\n if (rootRef) setRoot(rootRef.current);\n }, [\n rootRef\n ]);\n return [\n setRef,\n visible,\n resetVisible\n ];\n}\nfunction observe(element, callback, options) {\n const { id , observer , elements } = createObserver(options);\n elements.set(element, callback);\n observer.observe(element);\n return function unobserve() {\n elements.delete(element);\n observer.unobserve(element);\n // Destroy observer when there's nothing left to watch:\n if (elements.size === 0) {\n observer.disconnect();\n observers.delete(id);\n let index = idList.findIndex((obj)=>obj.root === id.root && obj.margin === id.margin\n );\n if (index > -1) {\n idList.splice(index, 1);\n }\n }\n };\n}\nconst observers = new Map();\nconst idList = [];\nfunction createObserver(options) {\n const id = {\n root: options.root || null,\n margin: options.rootMargin || \"\"\n };\n let existing = idList.find((obj)=>obj.root === id.root && obj.margin === id.margin\n );\n let instance;\n if (existing) {\n instance = observers.get(existing);\n } else {\n instance = observers.get(id);\n idList.push(id);\n }\n if (instance) {\n return instance;\n }\n const elements = new Map();\n const observer = new IntersectionObserver((entries)=>{\n entries.forEach((entry)=>{\n const callback = elements.get(entry.target);\n const isVisible = entry.isIntersecting || entry.intersectionRatio > 0;\n if (callback && isVisible) {\n callback(isVisible);\n }\n });\n }, options);\n observers.set(id, instance = {\n id,\n observer,\n elements\n });\n return instance;\n}\nif (typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) {\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=use-intersection.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC91c2UtaW50ZXJzZWN0aW9uLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csS0FBSyxFQUFFLElBQUk7Q0FDZCxFQUFDLENBQUM7QUFDSEQsdUJBQXVCLEdBQUdFLGVBQWUsQ0FBQztBQUMxQyxJQUFJQyxNQUFNLEdBQUdDLG1CQUFPLENBQUMsb0JBQU8sQ0FBQztBQUM3QixJQUFJQyxvQkFBb0IsR0FBR0QsbUJBQU8sQ0FBQyx5RkFBeUIsQ0FBQztBQUM3RCxNQUFNRSx1QkFBdUIsR0FBRyxPQUFPQyxvQkFBb0IsS0FBSyxXQUFXO0FBQzNFLFNBQVNMLGVBQWUsQ0FBQyxFQUFFTSxPQUFPLEdBQUdDLFVBQVUsR0FBR0MsUUFBUSxHQUFHLEVBQUU7SUFDM0QsTUFBTUMsVUFBVSxHQUFHRCxRQUFRLElBQUksQ0FBQ0osdUJBQXVCO0lBQ3ZELE1BQU1NLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRVQsTUFBTSxDQUFDLENBQUNVLE1BQU0sRUFBRTtJQUN0QyxNQUFNLENBQUNDLE9BQU8sRUFBRUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUVaLE1BQU0sQ0FBQyxDQUFDYSxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQ3pELE1BQU0sQ0FBQ0MsSUFBSSxFQUFFQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRWYsTUFBTSxDQUFDLENBQUNhLFFBQVEsQ0FBQ1IsT0FBTyxHQUFHQSxPQUFPLENBQUNXLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDOUUsTUFBTUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFakIsTUFBTSxDQUFDLENBQUNrQixXQUFXLENBQUMsQ0FBQ0MsRUFBRSxHQUFHO1FBQ3pDLElBQUlWLFNBQVMsQ0FBQ08sT0FBTyxFQUFFO1lBQ25CUCxTQUFTLENBQUNPLE9BQU8sRUFBRSxDQUFDO1lBQ3BCUCxTQUFTLENBQUNPLE9BQU8sR0FBR0ksU0FBUyxDQUFDO1NBQ2pDO1FBQ0QsSUFBSVosVUFBVSxJQUFJRyxPQUFPLEVBQUUsT0FBTztRQUNsQyxJQUFJUSxFQUFFLElBQUlBLEVBQUUsQ0FBQ0UsT0FBTyxFQUFFO1lBQ2xCWixTQUFTLENBQUNPLE9BQU8sR0FBR00sT0FBTyxDQUFDSCxFQUFFLEVBQUUsQ0FBQ0ksU0FBUyxHQUFHQSxTQUFTLElBQUlYLFVBQVUsQ0FBQ1csU0FBUyxDQUFDO1lBQUEsRUFDN0U7Z0JBQ0VULElBQUk7Z0JBQ0pSLFVBQVU7YUFDYixDQUFDLENBQUM7U0FDTjtLQUNKLEVBQUU7UUFDQ0UsVUFBVTtRQUNWTSxJQUFJO1FBQ0pSLFVBQVU7UUFDVkssT0FBTztLQUNWLENBQUM7SUFDRixNQUFNYSxZQUFZLEdBQUcsQ0FBQyxDQUFDLEVBQUV4QixNQUFNLENBQUMsQ0FBQ2tCLFdBQVcsQ0FBQyxJQUFJO1FBQzdDTixVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDckIsRUFBRSxFQUFFLENBQUM7SUFDTixDQUFDLENBQUMsRUFBRVosTUFBTSxDQUFDLENBQUN5QixTQUFTLENBQUMsSUFBSTtRQUN0QixJQUFJLENBQUN0Qix1QkFBdUIsRUFBRTtZQUMxQixJQUFJLENBQUNRLE9BQU8sRUFBRTtnQkFDVixNQUFNZSxZQUFZLEdBQUcsQ0FBQyxDQUFDLEVBQUV4QixvQkFBb0IsQ0FBQyxDQUFDeUIsbUJBQW1CLENBQUMsSUFBSWYsVUFBVSxDQUFDLElBQUksQ0FBQztnQkFBQSxDQUN0RjtnQkFDRCxPQUFPLElBQUksQ0FBQyxDQUFDLEVBQUVWLG9CQUFvQixDQUFDLENBQUMwQixrQkFBa0IsQ0FBQ0YsWUFBWSxDQUFDO2dCQUFBLENBQ3BFO2FBQ0o7U0FDSjtLQUNKLEVBQUU7UUFDQ2YsT0FBTztLQUNWLENBQUMsQ0FBQztJQUNILENBQUMsQ0FBQyxFQUFFWCxNQUFNLENBQUMsQ0FBQ3lCLFNBQVMsQ0FBQyxJQUFJO1FBQ3RCLElBQUlwQixPQUFPLEVBQUVVLE9BQU8sQ0FBQ1YsT0FBTyxDQUFDVyxPQUFPLENBQUMsQ0FBQztLQUN6QyxFQUFFO1FBQ0NYLE9BQU87S0FDVixDQUFDLENBQUM7SUFDSCxPQUFPO1FBQ0hZLE1BQU07UUFDTk4sT0FBTztRQUNQYSxZQUFZO0tBQ2YsQ0FBQztDQUNMO0FBQ0QsU0FBU0YsT0FBTyxDQUFDTyxPQUFPLEVBQUVDLFFBQVEsRUFBRUMsT0FBTyxFQUFFO0lBQ3pDLE1BQU0sRUFBRUMsRUFBRSxHQUFHQyxRQUFRLEdBQUdDLFFBQVEsR0FBRyxHQUFHQyxjQUFjLENBQUNKLE9BQU8sQ0FBQztJQUM3REcsUUFBUSxDQUFDRSxHQUFHLENBQUNQLE9BQU8sRUFBRUMsUUFBUSxDQUFDLENBQUM7SUFDaENHLFFBQVEsQ0FBQ1gsT0FBTyxDQUFDTyxPQUFPLENBQUMsQ0FBQztJQUMxQixPQUFPLFNBQVNwQixTQUFTLEdBQUc7UUFDeEJ5QixRQUFRLENBQUNHLE1BQU0sQ0FBQ1IsT0FBTyxDQUFDLENBQUM7UUFDekJJLFFBQVEsQ0FBQ3hCLFNBQVMsQ0FBQ29CLE9BQU8sQ0FBQyxDQUFDO1FBQzVCLHVEQUF1RDtRQUN2RCxJQUFJSyxRQUFRLENBQUNJLElBQUksS0FBSyxDQUFDLEVBQUU7WUFDckJMLFFBQVEsQ0FBQ00sVUFBVSxFQUFFLENBQUM7WUFDdEJDLFNBQVMsQ0FBQ0gsTUFBTSxDQUFDTCxFQUFFLENBQUMsQ0FBQztZQUNyQixJQUFJUyxLQUFLLEdBQUdDLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDLENBQUNDLEdBQUcsR0FBR0EsR0FBRyxDQUFDOUIsSUFBSSxLQUFLa0IsRUFBRSxDQUFDbEIsSUFBSSxJQUFJOEIsR0FBRyxDQUFDQyxNQUFNLEtBQUtiLEVBQUUsQ0FBQ2EsTUFBTTtZQUFBLENBQ25GO1lBQ0QsSUFBSUosS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUNaQyxNQUFNLENBQUNJLE1BQU0sQ0FBQ0wsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQzNCO1NBQ0o7S0FDSixDQUFDO0NBQ0w7QUFDRCxNQUFNRCxTQUFTLEdBQUcsSUFBSU8sR0FBRyxFQUFFO0FBQzNCLE1BQU1MLE1BQU0sR0FBRyxFQUFFO0FBQ2pCLFNBQVNQLGNBQWMsQ0FBQ0osT0FBTyxFQUFFO0lBQzdCLE1BQU1DLEVBQUUsR0FBRztRQUNQbEIsSUFBSSxFQUFFaUIsT0FBTyxDQUFDakIsSUFBSSxJQUFJLElBQUk7UUFDMUIrQixNQUFNLEVBQUVkLE9BQU8sQ0FBQ3pCLFVBQVUsSUFBSSxFQUFFO0tBQ25DO0lBQ0QsSUFBSTBDLFFBQVEsR0FBR04sTUFBTSxDQUFDTyxJQUFJLENBQUMsQ0FBQ0wsR0FBRyxHQUFHQSxHQUFHLENBQUM5QixJQUFJLEtBQUtrQixFQUFFLENBQUNsQixJQUFJLElBQUk4QixHQUFHLENBQUNDLE1BQU0sS0FBS2IsRUFBRSxDQUFDYSxNQUFNO0lBQUEsQ0FDakY7SUFDRCxJQUFJSyxRQUFRO0lBQ1osSUFBSUYsUUFBUSxFQUFFO1FBQ1ZFLFFBQVEsR0FBR1YsU0FBUyxDQUFDVyxHQUFHLENBQUNILFFBQVEsQ0FBQyxDQUFDO0tBQ3RDLE1BQU07UUFDSEUsUUFBUSxHQUFHVixTQUFTLENBQUNXLEdBQUcsQ0FBQ25CLEVBQUUsQ0FBQyxDQUFDO1FBQzdCVSxNQUFNLENBQUNVLElBQUksQ0FBQ3BCLEVBQUUsQ0FBQyxDQUFDO0tBQ25CO0lBQ0QsSUFBSWtCLFFBQVEsRUFBRTtRQUNWLE9BQU9BLFFBQVEsQ0FBQztLQUNuQjtJQUNELE1BQU1oQixRQUFRLEdBQUcsSUFBSWEsR0FBRyxFQUFFO0lBQzFCLE1BQU1kLFFBQVEsR0FBRyxJQUFJN0Isb0JBQW9CLENBQUMsQ0FBQ2lELE9BQU8sR0FBRztRQUNqREEsT0FBTyxDQUFDQyxPQUFPLENBQUMsQ0FBQ0MsS0FBSyxHQUFHO1lBQ3JCLE1BQU16QixRQUFRLEdBQUdJLFFBQVEsQ0FBQ2lCLEdBQUcsQ0FBQ0ksS0FBSyxDQUFDQyxNQUFNLENBQUM7WUFDM0MsTUFBTWpDLFNBQVMsR0FBR2dDLEtBQUssQ0FBQ0UsY0FBYyxJQUFJRixLQUFLLENBQUNHLGlCQUFpQixHQUFHLENBQUM7WUFDckUsSUFBSTVCLFFBQVEsSUFBSVAsU0FBUyxFQUFFO2dCQUN2Qk8sUUFBUSxDQUFDUCxTQUFTLENBQUMsQ0FBQzthQUN2QjtTQUNKLENBQUMsQ0FBQztLQUNOLEVBQUVRLE9BQU8sQ0FBQztJQUNYUyxTQUFTLENBQUNKLEdBQUcsQ0FBQ0osRUFBRSxFQUFFa0IsUUFBUSxHQUFHO1FBQ3pCbEIsRUFBRTtRQUNGQyxRQUFRO1FBQ1JDLFFBQVE7S0FDWCxDQUFDLENBQUM7SUFDSCxPQUFPZ0IsUUFBUSxDQUFDO0NBQ25CO0FBRUQsSUFBSSxPQUFPckQsT0FBTyxDQUFDOEQsT0FBTyxLQUFLLFVBQVUsSUFBSyxPQUFPOUQsT0FBTyxDQUFDOEQsT0FBTyxLQUFLLFFBQVEsSUFBSTlELE9BQU8sQ0FBQzhELE9BQU8sS0FBSyxJQUFJLEVBQUc7SUFDOUdoRSxNQUFNLENBQUNpRSxNQUFNLENBQUMvRCxPQUFPLENBQUM4RCxPQUFPLEVBQUU5RCxPQUFPLENBQUMsQ0FBQztJQUN4Q2dFLE1BQU0sQ0FBQ2hFLE9BQU8sR0FBR0EsT0FBTyxDQUFDOEQsT0FBTyxDQUFDO0NBQ2xDLENBRUQsNENBQTRDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYnVybi1teS13YWxsZXQvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC91c2UtaW50ZXJzZWN0aW9uLmpzP2ZkOTQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLnVzZUludGVyc2VjdGlvbiA9IHVzZUludGVyc2VjdGlvbjtcbnZhciBfcmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgX3JlcXVlc3RJZGxlQ2FsbGJhY2sgPSByZXF1aXJlKFwiLi9yZXF1ZXN0LWlkbGUtY2FsbGJhY2tcIik7XG5jb25zdCBoYXNJbnRlcnNlY3Rpb25PYnNlcnZlciA9IHR5cGVvZiBJbnRlcnNlY3Rpb25PYnNlcnZlciAhPT0gJ3VuZGVmaW5lZCc7XG5mdW5jdGlvbiB1c2VJbnRlcnNlY3Rpb24oeyByb290UmVmICwgcm9vdE1hcmdpbiAsIGRpc2FibGVkICB9KSB7XG4gICAgY29uc3QgaXNEaXNhYmxlZCA9IGRpc2FibGVkIHx8ICFoYXNJbnRlcnNlY3Rpb25PYnNlcnZlcjtcbiAgICBjb25zdCB1bm9ic2VydmUgPSAoMCwgX3JlYWN0KS51c2VSZWYoKTtcbiAgICBjb25zdCBbdmlzaWJsZSwgc2V0VmlzaWJsZV0gPSAoMCwgX3JlYWN0KS51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3Jvb3QsIHNldFJvb3RdID0gKDAsIF9yZWFjdCkudXNlU3RhdGUocm9vdFJlZiA/IHJvb3RSZWYuY3VycmVudCA6IG51bGwpO1xuICAgIGNvbnN0IHNldFJlZiA9ICgwLCBfcmVhY3QpLnVzZUNhbGxiYWNrKChlbCk9PntcbiAgICAgICAgaWYgKHVub2JzZXJ2ZS5jdXJyZW50KSB7XG4gICAgICAgICAgICB1bm9ic2VydmUuY3VycmVudCgpO1xuICAgICAgICAgICAgdW5vYnNlcnZlLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRGlzYWJsZWQgfHwgdmlzaWJsZSkgcmV0dXJuO1xuICAgICAgICBpZiAoZWwgJiYgZWwudGFnTmFtZSkge1xuICAgICAgICAgICAgdW5vYnNlcnZlLmN1cnJlbnQgPSBvYnNlcnZlKGVsLCAoaXNWaXNpYmxlKT0+aXNWaXNpYmxlICYmIHNldFZpc2libGUoaXNWaXNpYmxlKVxuICAgICAgICAgICAgLCB7XG4gICAgICAgICAgICAgICAgcm9vdCxcbiAgICAgICAgICAgICAgICByb290TWFyZ2luXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgaXNEaXNhYmxlZCxcbiAgICAgICAgcm9vdCxcbiAgICAgICAgcm9vdE1hcmdpbixcbiAgICAgICAgdmlzaWJsZVxuICAgIF0pO1xuICAgIGNvbnN0IHJlc2V0VmlzaWJsZSA9ICgwLCBfcmVhY3QpLnVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgIHNldFZpc2libGUoZmFsc2UpO1xuICAgIH0sIFtdKTtcbiAgICAoMCwgX3JlYWN0KS51c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKCFoYXNJbnRlcnNlY3Rpb25PYnNlcnZlcikge1xuICAgICAgICAgICAgaWYgKCF2aXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWRsZUNhbGxiYWNrID0gKDAsIF9yZXF1ZXN0SWRsZUNhbGxiYWNrKS5yZXF1ZXN0SWRsZUNhbGxiYWNrKCgpPT5zZXRWaXNpYmxlKHRydWUpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKCk9PigwLCBfcmVxdWVzdElkbGVDYWxsYmFjaykuY2FuY2VsSWRsZUNhbGxiYWNrKGlkbGVDYWxsYmFjaylcbiAgICAgICAgICAgICAgICA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIHZpc2libGVcbiAgICBdKTtcbiAgICAoMCwgX3JlYWN0KS51c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKHJvb3RSZWYpIHNldFJvb3Qocm9vdFJlZi5jdXJyZW50KTtcbiAgICB9LCBbXG4gICAgICAgIHJvb3RSZWZcbiAgICBdKTtcbiAgICByZXR1cm4gW1xuICAgICAgICBzZXRSZWYsXG4gICAgICAgIHZpc2libGUsXG4gICAgICAgIHJlc2V0VmlzaWJsZVxuICAgIF07XG59XG5mdW5jdGlvbiBvYnNlcnZlKGVsZW1lbnQsIGNhbGxiYWNrLCBvcHRpb25zKSB7XG4gICAgY29uc3QgeyBpZCAsIG9ic2VydmVyICwgZWxlbWVudHMgIH0gPSBjcmVhdGVPYnNlcnZlcihvcHRpb25zKTtcbiAgICBlbGVtZW50cy5zZXQoZWxlbWVudCwgY2FsbGJhY2spO1xuICAgIG9ic2VydmVyLm9ic2VydmUoZWxlbWVudCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHVub2JzZXJ2ZSgpIHtcbiAgICAgICAgZWxlbWVudHMuZGVsZXRlKGVsZW1lbnQpO1xuICAgICAgICBvYnNlcnZlci51bm9ic2VydmUoZWxlbWVudCk7XG4gICAgICAgIC8vIERlc3Ryb3kgb2JzZXJ2ZXIgd2hlbiB0aGVyZSdzIG5vdGhpbmcgbGVmdCB0byB3YXRjaDpcbiAgICAgICAgaWYgKGVsZW1lbnRzLnNpemUgPT09IDApIHtcbiAgICAgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgIG9ic2VydmVycy5kZWxldGUoaWQpO1xuICAgICAgICAgICAgbGV0IGluZGV4ID0gaWRMaXN0LmZpbmRJbmRleCgob2JqKT0+b2JqLnJvb3QgPT09IGlkLnJvb3QgJiYgb2JqLm1hcmdpbiA9PT0gaWQubWFyZ2luXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICBpZExpc3Quc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG59XG5jb25zdCBvYnNlcnZlcnMgPSBuZXcgTWFwKCk7XG5jb25zdCBpZExpc3QgPSBbXTtcbmZ1bmN0aW9uIGNyZWF0ZU9ic2VydmVyKG9wdGlvbnMpIHtcbiAgICBjb25zdCBpZCA9IHtcbiAgICAgICAgcm9vdDogb3B0aW9ucy5yb290IHx8IG51bGwsXG4gICAgICAgIG1hcmdpbjogb3B0aW9ucy5yb290TWFyZ2luIHx8ICcnXG4gICAgfTtcbiAgICBsZXQgZXhpc3RpbmcgPSBpZExpc3QuZmluZCgob2JqKT0+b2JqLnJvb3QgPT09IGlkLnJvb3QgJiYgb2JqLm1hcmdpbiA9PT0gaWQubWFyZ2luXG4gICAgKTtcbiAgICBsZXQgaW5zdGFuY2U7XG4gICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICAgIGluc3RhbmNlID0gb2JzZXJ2ZXJzLmdldChleGlzdGluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaW5zdGFuY2UgPSBvYnNlcnZlcnMuZ2V0KGlkKTtcbiAgICAgICAgaWRMaXN0LnB1c2goaWQpO1xuICAgIH1cbiAgICBpZiAoaW5zdGFuY2UpIHtcbiAgICAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgIH1cbiAgICBjb25zdCBlbGVtZW50cyA9IG5ldyBNYXAoKTtcbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcyk9PntcbiAgICAgICAgZW50cmllcy5mb3JFYWNoKChlbnRyeSk9PntcbiAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrID0gZWxlbWVudHMuZ2V0KGVudHJ5LnRhcmdldCk7XG4gICAgICAgICAgICBjb25zdCBpc1Zpc2libGUgPSBlbnRyeS5pc0ludGVyc2VjdGluZyB8fCBlbnRyeS5pbnRlcnNlY3Rpb25SYXRpbyA+IDA7XG4gICAgICAgICAgICBpZiAoY2FsbGJhY2sgJiYgaXNWaXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soaXNWaXNpYmxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSwgb3B0aW9ucyk7XG4gICAgb2JzZXJ2ZXJzLnNldChpZCwgaW5zdGFuY2UgPSB7XG4gICAgICAgIGlkLFxuICAgICAgICBvYnNlcnZlcixcbiAgICAgICAgZWxlbWVudHNcbiAgICB9KTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG59XG5cbmlmICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSB7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVzZS1pbnRlcnNlY3Rpb24uanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwidXNlSW50ZXJzZWN0aW9uIiwiX3JlYWN0IiwicmVxdWlyZSIsIl9yZXF1ZXN0SWRsZUNhbGxiYWNrIiwiaGFzSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLCJJbnRlcnNlY3Rpb25PYnNlcnZlciIsInJvb3RSZWYiLCJyb290TWFyZ2luIiwiZGlzYWJsZWQiLCJpc0Rpc2FibGVkIiwidW5vYnNlcnZlIiwidXNlUmVmIiwidmlzaWJsZSIsInNldFZpc2libGUiLCJ1c2VTdGF0ZSIsInJvb3QiLCJzZXRSb290IiwiY3VycmVudCIsInNldFJlZiIsInVzZUNhbGxiYWNrIiwiZWwiLCJ1bmRlZmluZWQiLCJ0YWdOYW1lIiwib2JzZXJ2ZSIsImlzVmlzaWJsZSIsInJlc2V0VmlzaWJsZSIsInVzZUVmZmVjdCIsImlkbGVDYWxsYmFjayIsInJlcXVlc3RJZGxlQ2FsbGJhY2siLCJjYW5jZWxJZGxlQ2FsbGJhY2siLCJlbGVtZW50IiwiY2FsbGJhY2siLCJvcHRpb25zIiwiaWQiLCJvYnNlcnZlciIsImVsZW1lbnRzIiwiY3JlYXRlT2JzZXJ2ZXIiLCJzZXQiLCJkZWxldGUiLCJzaXplIiwiZGlzY29ubmVjdCIsIm9ic2VydmVycyIsImluZGV4IiwiaWRMaXN0IiwiZmluZEluZGV4Iiwib2JqIiwibWFyZ2luIiwic3BsaWNlIiwiTWFwIiwiZXhpc3RpbmciLCJmaW5kIiwiaW5zdGFuY2UiLCJnZXQiLCJwdXNoIiwiZW50cmllcyIsImZvckVhY2giLCJlbnRyeSIsInRhcmdldCIsImlzSW50ZXJzZWN0aW5nIiwiaW50ZXJzZWN0aW9uUmF0aW8iLCJkZWZhdWx0IiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/use-intersection.js\n");
+
+/***/ }),
+
+/***/ "./node_modules/next/dist/client/with-router.js":
+/*!******************************************************!*\
+ !*** ./node_modules/next/dist/client/with-router.js ***!
+ \******************************************************/
+/***/ ((module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = withRouter;\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"react\"));\nvar _router = __webpack_require__(/*! ./router */ \"./node_modules/next/dist/client/router.js\");\nfunction withRouter(ComposedComponent) {\n function WithRouterWrapper(props) {\n return /*#__PURE__*/ _react.default.createElement(ComposedComponent, Object.assign({\n router: (0, _router).useRouter()\n }, props));\n }\n WithRouterWrapper.getInitialProps = ComposedComponent.getInitialProps;\n WithRouterWrapper.origGetInitialProps = ComposedComponent.origGetInitialProps;\n if (true) {\n const name = ComposedComponent.displayName || ComposedComponent.name || \"Unknown\";\n WithRouterWrapper.displayName = `withRouter(${name})`;\n }\n return WithRouterWrapper;\n}\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nif (typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) {\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=with-router.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC93aXRoLXJvdXRlci5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLEtBQUssRUFBRSxJQUFJO0NBQ2QsRUFBQyxDQUFDO0FBQ0hELGtCQUFlLEdBQUdHLFVBQVUsQ0FBQztBQUM3QixJQUFJQyxNQUFNLEdBQUdDLHNCQUFzQixDQUFDQyxtQkFBTyxDQUFDLG9CQUFPLENBQUMsQ0FBQztBQUNyRCxJQUFJQyxPQUFPLEdBQUdELG1CQUFPLENBQUMsMkRBQVUsQ0FBQztBQUNqQyxTQUFTSCxVQUFVLENBQUNLLGlCQUFpQixFQUFFO0lBQ25DLFNBQVNDLGlCQUFpQixDQUFDQyxLQUFLLEVBQUU7UUFDOUIsT0FBTyxhQUFhLENBQUNOLE1BQU0sQ0FBQ0YsT0FBTyxDQUFDUyxhQUFhLENBQUNILGlCQUFpQixFQUFFVixNQUFNLENBQUNjLE1BQU0sQ0FBQztZQUMvRUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFTixPQUFPLENBQUMsQ0FBQ08sU0FBUyxFQUFFO1NBQ25DLEVBQUVKLEtBQUssQ0FBQyxDQUFDLENBQUU7S0FDZjtJQUNERCxpQkFBaUIsQ0FBQ00sZUFBZSxHQUFHUCxpQkFBaUIsQ0FBQ08sZUFBZSxDQUFDO0lBQ3RFTixpQkFBaUIsQ0FBQ08sbUJBQW1CLEdBQUdSLGlCQUFpQixDQUFDUSxtQkFBbUIsQ0FBQztJQUM5RSxJQUFJQyxJQUFxQyxFQUFFO1FBQ3ZDLE1BQU1DLElBQUksR0FBR1YsaUJBQWlCLENBQUNXLFdBQVcsSUFBSVgsaUJBQWlCLENBQUNVLElBQUksSUFBSSxTQUFTO1FBQ2pGVCxpQkFBaUIsQ0FBQ1UsV0FBVyxHQUFHLENBQUMsV0FBVyxFQUFFRCxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDekQ7SUFDRCxPQUFPVCxpQkFBaUIsQ0FBQztDQUM1QjtBQUNELFNBQVNKLHNCQUFzQixDQUFDZSxHQUFHLEVBQUU7SUFDakMsT0FBT0EsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVUsR0FBR0QsR0FBRyxHQUFHO1FBQ2pDbEIsT0FBTyxFQUFFa0IsR0FBRztLQUNmLENBQUM7Q0FDTDtBQUVELElBQUksT0FBT3BCLE9BQU8sQ0FBQ0UsT0FBTyxLQUFLLFVBQVUsSUFBSyxPQUFPRixPQUFPLENBQUNFLE9BQU8sS0FBSyxRQUFRLElBQUlGLE9BQU8sQ0FBQ0UsT0FBTyxLQUFLLElBQUksRUFBRztJQUM5R0osTUFBTSxDQUFDYyxNQUFNLENBQUNaLE9BQU8sQ0FBQ0UsT0FBTyxFQUFFRixPQUFPLENBQUMsQ0FBQztJQUN4Q3NCLE1BQU0sQ0FBQ3RCLE9BQU8sR0FBR0EsT0FBTyxDQUFDRSxPQUFPLENBQUM7Q0FDbEMsQ0FFRCx1Q0FBdUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9idXJuLW15LXdhbGxldC8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3dpdGgtcm91dGVyLmpzP2FjN2MiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB3aXRoUm91dGVyO1xudmFyIF9yZWFjdCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJlYWN0XCIpKTtcbnZhciBfcm91dGVyID0gcmVxdWlyZShcIi4vcm91dGVyXCIpO1xuZnVuY3Rpb24gd2l0aFJvdXRlcihDb21wb3NlZENvbXBvbmVudCkge1xuICAgIGZ1bmN0aW9uIFdpdGhSb3V0ZXJXcmFwcGVyKHByb3BzKSB7XG4gICAgICAgIHJldHVybigvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoQ29tcG9zZWRDb21wb25lbnQsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgICAgcm91dGVyOiAoMCwgX3JvdXRlcikudXNlUm91dGVyKClcbiAgICAgICAgfSwgcHJvcHMpKSk7XG4gICAgfVxuICAgIFdpdGhSb3V0ZXJXcmFwcGVyLmdldEluaXRpYWxQcm9wcyA9IENvbXBvc2VkQ29tcG9uZW50LmdldEluaXRpYWxQcm9wcztcbiAgICBXaXRoUm91dGVyV3JhcHBlci5vcmlnR2V0SW5pdGlhbFByb3BzID0gQ29tcG9zZWRDb21wb25lbnQub3JpZ0dldEluaXRpYWxQcm9wcztcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBjb25zdCBuYW1lID0gQ29tcG9zZWRDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9zZWRDb21wb25lbnQubmFtZSB8fCAnVW5rbm93bic7XG4gICAgICAgIFdpdGhSb3V0ZXJXcmFwcGVyLmRpc3BsYXlOYW1lID0gYHdpdGhSb3V0ZXIoJHtuYW1lfSlgO1xuICAgIH1cbiAgICByZXR1cm4gV2l0aFJvdXRlcldyYXBwZXI7XG59XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikge1xuICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgICAgIGRlZmF1bHQ6IG9ialxuICAgIH07XG59XG5cbmlmICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSB7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXdpdGgtcm91dGVyLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImRlZmF1bHQiLCJ3aXRoUm91dGVyIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcm91dGVyIiwiQ29tcG9zZWRDb21wb25lbnQiLCJXaXRoUm91dGVyV3JhcHBlciIsInByb3BzIiwiY3JlYXRlRWxlbWVudCIsImFzc2lnbiIsInJvdXRlciIsInVzZVJvdXRlciIsImdldEluaXRpYWxQcm9wcyIsIm9yaWdHZXRJbml0aWFsUHJvcHMiLCJwcm9jZXNzIiwibmFtZSIsImRpc3BsYXlOYW1lIiwib2JqIiwiX19lc01vZHVsZSIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/with-router.js\n");
+
+/***/ }),
+
+/***/ "./node_modules/next/dist/shared/lib/router/router.js":
+/*!************************************************************!*\
+ !*** ./node_modules/next/dist/shared/lib/router/router.js ***!
+ \************************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.getDomainLocale = getDomainLocale;\nexports.addLocale = addLocale;\nexports.delLocale = delLocale;\nexports.hasBasePath = hasBasePath;\nexports.addBasePath = addBasePath;\nexports.delBasePath = delBasePath;\nexports.isLocalURL = isLocalURL;\nexports.interpolateAs = interpolateAs;\nexports.resolveHref = resolveHref;\nexports[\"default\"] = void 0;\nvar _normalizeTrailingSlash = __webpack_require__(/*! ../../../client/normalize-trailing-slash */ \"./node_modules/next/dist/client/normalize-trailing-slash.js\");\nvar _routeLoader = __webpack_require__(/*! ../../../client/route-loader */ \"./node_modules/next/dist/client/route-loader.js\");\nvar _script = __webpack_require__(/*! ../../../client/script */ \"./node_modules/next/dist/client/script.js\");\nvar _isError = _interopRequireWildcard(__webpack_require__(/*! ../../../lib/is-error */ \"./node_modules/next/dist/lib/is-error.js\"));\nvar _denormalizePagePath = __webpack_require__(/*! ../page-path/denormalize-page-path */ \"../page-path/denormalize-page-path\");\nvar _normalizeLocalePath = __webpack_require__(/*! ../i18n/normalize-locale-path */ \"../i18n/normalize-locale-path\");\nvar _mitt = _interopRequireDefault(__webpack_require__(/*! ../mitt */ \"../mitt\"));\nvar _utils = __webpack_require__(/*! ../utils */ \"../utils\");\nvar _isDynamic = __webpack_require__(/*! ./utils/is-dynamic */ \"./utils/is-dynamic\");\nvar _parseRelativeUrl = __webpack_require__(/*! ./utils/parse-relative-url */ \"./utils/parse-relative-url\");\nvar _querystring = __webpack_require__(/*! ./utils/querystring */ \"./utils/querystring\");\nvar _resolveRewrites = _interopRequireDefault(__webpack_require__(/*! ./utils/resolve-rewrites */ \"./utils/resolve-rewrites\"));\nvar _routeMatcher = __webpack_require__(/*! ./utils/route-matcher */ \"./utils/route-matcher\");\nvar _routeRegex = __webpack_require__(/*! ./utils/route-regex */ \"./utils/route-regex\");\nvar _getMiddlewareRegex = __webpack_require__(/*! ./utils/get-middleware-regex */ \"./utils/get-middleware-regex\");\nvar _formatUrl = __webpack_require__(/*! ./utils/format-url */ \"./utils/format-url\");\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n if (obj != null) {\n for(var key in obj){\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n if (desc.get || desc.set) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n }\n newObj.default = obj;\n return newObj;\n }\n}\nlet detectDomainLocale;\nif (false) {}\nconst basePath = false || \"\";\nfunction buildCancellationError() {\n return Object.assign(new Error(\"Route Cancelled\"), {\n cancelled: true\n });\n}\nfunction addPathPrefix(path, prefix) {\n if (!path.startsWith(\"/\") || !prefix) {\n return path;\n }\n const pathname = pathNoQueryHash(path);\n return (0, _normalizeTrailingSlash).normalizePathTrailingSlash(`${prefix}${pathname}`) + path.slice(pathname.length);\n}\nfunction hasPathPrefix(path, prefix) {\n path = pathNoQueryHash(path);\n return path === prefix || path.startsWith(prefix + \"/\");\n}\nfunction getDomainLocale(path, locale, locales, domainLocales) {\n if (false) {} else {\n return false;\n }\n}\nfunction addLocale(path, locale, defaultLocale) {\n if (false) {}\n return path;\n}\nfunction delLocale(path, locale) {\n if (false) {}\n return path;\n}\nfunction pathNoQueryHash(path) {\n const queryIndex = path.indexOf(\"?\");\n const hashIndex = path.indexOf(\"#\");\n if (queryIndex > -1 || hashIndex > -1) {\n path = path.substring(0, queryIndex > -1 ? queryIndex : hashIndex);\n }\n return path;\n}\nfunction hasBasePath(path) {\n return hasPathPrefix(path, basePath);\n}\nfunction addBasePath(path) {\n // we only add the basepath on relative urls\n return addPathPrefix(path, basePath);\n}\nfunction delBasePath(path) {\n path = path.slice(basePath.length);\n if (!path.startsWith(\"/\")) path = `/${path}`;\n return path;\n}\nfunction isLocalURL(url) {\n // prevent a hydration mismatch on href for url with anchor refs\n if (url.startsWith(\"/\") || url.startsWith(\"#\") || url.startsWith(\"?\")) return true;\n try {\n // absolute urls can be local if they are on the same origin\n const locationOrigin = (0, _utils).getLocationOrigin();\n const resolved = new URL(url, locationOrigin);\n return resolved.origin === locationOrigin && hasBasePath(resolved.pathname);\n } catch (_) {\n return false;\n }\n}\nfunction interpolateAs(route, asPathname, query) {\n let interpolatedRoute = \"\";\n const dynamicRegex = (0, _routeRegex).getRouteRegex(route);\n const dynamicGroups = dynamicRegex.groups;\n const dynamicMatches = (asPathname !== route ? (0, _routeMatcher).getRouteMatcher(dynamicRegex)(asPathname) : \"\") || // TODO: should this take priority; also need to change in the router.\n query;\n interpolatedRoute = route;\n const params = Object.keys(dynamicGroups);\n if (!params.every((param)=>{\n let value = dynamicMatches[param] || \"\";\n const { repeat , optional } = dynamicGroups[param];\n // support single-level catch-all\n // TODO: more robust handling for user-error (passing `/`)\n let replaced = `[${repeat ? \"...\" : \"\"}${param}]`;\n if (optional) {\n replaced = `${!value ? \"/\" : \"\"}[${replaced}]`;\n }\n if (repeat && !Array.isArray(value)) value = [\n value\n ];\n return (optional || param in dynamicMatches) && (interpolatedRoute = interpolatedRoute.replace(replaced, repeat ? value.map(// path delimiter escaped since they are being inserted\n // into the URL and we expect URL encoded segments\n // when parsing dynamic route params\n (segment)=>encodeURIComponent(segment)\n ).join(\"/\") : encodeURIComponent(value)) || \"/\");\n })) {\n interpolatedRoute = \"\" // did not satisfy all requirements\n ;\n // n.b. We ignore this error because we handle warning for this case in\n // development in the `` component directly.\n }\n return {\n params,\n result: interpolatedRoute\n };\n}\nfunction omitParmsFromQuery(query, params) {\n const filteredQuery = {};\n Object.keys(query).forEach((key)=>{\n if (!params.includes(key)) {\n filteredQuery[key] = query[key];\n }\n });\n return filteredQuery;\n}\nfunction resolveHref(router, href, resolveAs) {\n // we use a dummy base url for relative urls\n let base;\n let urlAsString = typeof href === \"string\" ? href : (0, _formatUrl).formatWithValidation(href);\n // repeated slashes and backslashes in the URL are considered\n // invalid and will never match a Next.js page/file\n const urlProtoMatch = urlAsString.match(/^[a-zA-Z]{1,}:\\/\\//);\n const urlAsStringNoProto = urlProtoMatch ? urlAsString.slice(urlProtoMatch[0].length) : urlAsString;\n const urlParts = urlAsStringNoProto.split(\"?\");\n if ((urlParts[0] || \"\").match(/(\\/\\/|\\\\)/)) {\n console.error(`Invalid href passed to next/router: ${urlAsString}, repeated forward-slashes (//) or backslashes \\\\ are not valid in the href`);\n const normalizedUrl = (0, _utils).normalizeRepeatedSlashes(urlAsStringNoProto);\n urlAsString = (urlProtoMatch ? urlProtoMatch[0] : \"\") + normalizedUrl;\n }\n // Return because it cannot be routed by the Next.js router\n if (!isLocalURL(urlAsString)) {\n return resolveAs ? [\n urlAsString\n ] : urlAsString;\n }\n try {\n base = new URL(urlAsString.startsWith(\"#\") ? router.asPath : router.pathname, \"http://n\");\n } catch (_) {\n // fallback to / for invalid asPath values e.g. //\n base = new URL(\"/\", \"http://n\");\n }\n try {\n const finalUrl = new URL(urlAsString, base);\n finalUrl.pathname = (0, _normalizeTrailingSlash).normalizePathTrailingSlash(finalUrl.pathname);\n let interpolatedAs = \"\";\n if ((0, _isDynamic).isDynamicRoute(finalUrl.pathname) && finalUrl.searchParams && resolveAs) {\n const query = (0, _querystring).searchParamsToUrlQuery(finalUrl.searchParams);\n const { result , params } = interpolateAs(finalUrl.pathname, finalUrl.pathname, query);\n if (result) {\n interpolatedAs = (0, _formatUrl).formatWithValidation({\n pathname: result,\n hash: finalUrl.hash,\n query: omitParmsFromQuery(query, params)\n });\n }\n }\n // if the origin didn't change, it means we received a relative href\n const resolvedHref = finalUrl.origin === base.origin ? finalUrl.href.slice(finalUrl.origin.length) : finalUrl.href;\n return resolveAs ? [\n resolvedHref,\n interpolatedAs || resolvedHref\n ] : resolvedHref;\n } catch (_1) {\n return resolveAs ? [\n urlAsString\n ] : urlAsString;\n }\n}\nfunction stripOrigin(url) {\n const origin = (0, _utils).getLocationOrigin();\n return url.startsWith(origin) ? url.substring(origin.length) : url;\n}\nfunction prepareUrlAs(router, url, as) {\n // If url and as provided as an object representation,\n // we'll format them into the string version here.\n let [resolvedHref, resolvedAs] = resolveHref(router, url, true);\n const origin = (0, _utils).getLocationOrigin();\n const hrefHadOrigin = resolvedHref.startsWith(origin);\n const asHadOrigin = resolvedAs && resolvedAs.startsWith(origin);\n resolvedHref = stripOrigin(resolvedHref);\n resolvedAs = resolvedAs ? stripOrigin(resolvedAs) : resolvedAs;\n const preparedUrl = hrefHadOrigin ? resolvedHref : addBasePath(resolvedHref);\n const preparedAs = as ? stripOrigin(resolveHref(router, as)) : resolvedAs || resolvedHref;\n return {\n url: preparedUrl,\n as: asHadOrigin ? preparedAs : addBasePath(preparedAs)\n };\n}\nfunction resolveDynamicRoute(pathname, pages) {\n const cleanPathname = (0, _normalizeTrailingSlash).removePathTrailingSlash((0, _denormalizePagePath).denormalizePagePath(pathname));\n if (cleanPathname === \"/404\" || cleanPathname === \"/_error\") {\n return pathname;\n }\n // handle resolving href for dynamic routes\n if (!pages.includes(cleanPathname)) {\n // eslint-disable-next-line array-callback-return\n pages.some((page)=>{\n if ((0, _isDynamic).isDynamicRoute(page) && (0, _routeRegex).getRouteRegex(page).re.test(cleanPathname)) {\n pathname = page;\n return true;\n }\n });\n }\n return (0, _normalizeTrailingSlash).removePathTrailingSlash(pathname);\n}\nconst manualScrollRestoration = false && 0;\nconst SSG_DATA_NOT_FOUND = Symbol(\"SSG_DATA_NOT_FOUND\");\nfunction fetchRetry(url, attempts, opts) {\n return fetch(url, {\n // Cookies are required to be present for Next.js' SSG \"Preview Mode\".\n // Cookies may also be required for `getServerSideProps`.\n //\n // > `fetch` won’t send cookies, unless you set the credentials init\n // > option.\n // https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch\n //\n // > For maximum browser compatibility when it comes to sending &\n // > receiving cookies, always supply the `credentials: 'same-origin'`\n // > option instead of relying on the default.\n // https://github.com/github/fetch#caveats\n credentials: \"same-origin\"\n }).then((res)=>{\n if (!res.ok) {\n if (attempts > 1 && res.status >= 500) {\n return fetchRetry(url, attempts - 1, opts);\n }\n if (res.status === 404) {\n return res.json().then((data)=>{\n if (data.notFound) {\n return {\n notFound: SSG_DATA_NOT_FOUND\n };\n }\n throw new Error(`Failed to load static props`);\n });\n }\n throw new Error(`Failed to load static props`);\n }\n return opts.text ? res.text() : res.json();\n });\n}\nfunction fetchNextData(dataHref, isServerRender, text, inflightCache, persistCache) {\n const { href: cacheKey } = new URL(dataHref, window.location.href);\n if (inflightCache[cacheKey] !== undefined) {\n return inflightCache[cacheKey];\n }\n return inflightCache[cacheKey] = fetchRetry(dataHref, isServerRender ? 3 : 1, {\n text\n }).catch((err)=>{\n // We should only trigger a server-side transition if this was caused\n // on a client-side transition. Otherwise, we'd get into an infinite\n // loop.\n if (!isServerRender) {\n (0, _routeLoader).markAssetError(err);\n }\n throw err;\n }).then((data)=>{\n if (!persistCache || \"development\" !== \"production\") {\n delete inflightCache[cacheKey];\n }\n return data;\n }).catch((err)=>{\n delete inflightCache[cacheKey];\n throw err;\n });\n}\nclass Router {\n constructor(pathname1, query1, as1, { initialProps , pageLoader , App , wrapApp , Component , err , subscription , isFallback , locale , locales , defaultLocale , domainLocales , isPreview , isRsc }){\n // Static Data Cache\n this.sdc = {};\n // In-flight Server Data Requests, for deduping\n this.sdr = {};\n // In-flight middleware preflight requests\n this.sde = {};\n this._idx = 0;\n this.onPopState = (e)=>{\n const state = e.state;\n if (!state) {\n // We get state as undefined for two reasons.\n // 1. With older safari (< 8) and older chrome (< 34)\n // 2. When the URL changed with #\n //\n // In the both cases, we don't need to proceed and change the route.\n // (as it's already changed)\n // But we can simply replace the state with the new changes.\n // Actually, for (1) we don't need to nothing. But it's hard to detect that event.\n // So, doing the following for (1) does no harm.\n const { pathname , query } = this;\n this.changeState(\"replaceState\", (0, _formatUrl).formatWithValidation({\n pathname: addBasePath(pathname),\n query\n }), (0, _utils).getURL());\n return;\n }\n if (!state.__N) {\n return;\n }\n let forcedScroll;\n const { url , as , options , idx } = state;\n if (false) {}\n this._idx = idx;\n const { pathname } = (0, _parseRelativeUrl).parseRelativeUrl(url);\n // Make sure we don't re-render on initial load,\n // can be caused by navigating back from an external site\n if (this.isSsr && as === addBasePath(this.asPath) && pathname === addBasePath(this.pathname)) {\n return;\n }\n // If the downstream application returns falsy, return.\n // They will then be responsible for handling the event.\n if (this._bps && !this._bps(state)) {\n return;\n }\n this.change(\"replaceState\", url, as, Object.assign({}, options, {\n shallow: options.shallow && this._shallow,\n locale: options.locale || this.defaultLocale\n }), forcedScroll);\n };\n // represents the current component key\n const route = (0, _normalizeTrailingSlash).removePathTrailingSlash(pathname1);\n // set up the component cache (by route keys)\n this.components = {};\n // We should not keep the cache, if there's an error\n // Otherwise, this cause issues when when going back and\n // come again to the errored page.\n if (pathname1 !== \"/_error\") {\n this.components[route] = {\n Component,\n initial: true,\n props: initialProps,\n err,\n __N_SSG: initialProps && initialProps.__N_SSG,\n __N_SSP: initialProps && initialProps.__N_SSP,\n __N_RSC: !!isRsc\n };\n }\n this.components[\"/_app\"] = {\n Component: App,\n styleSheets: []\n };\n // Backwards compat for Router.router.events\n // TODO: Should be remove the following major version as it was never documented\n this.events = Router.events;\n this.pageLoader = pageLoader;\n // if auto prerendered and dynamic route wait to update asPath\n // until after mount to prevent hydration mismatch\n const autoExportDynamic = (0, _isDynamic).isDynamicRoute(pathname1) && self.__NEXT_DATA__.autoExport;\n this.basePath = basePath;\n this.sub = subscription;\n this.clc = null;\n this._wrapApp = wrapApp;\n // make sure to ignore extra popState in safari on navigating\n // back from external site\n this.isSsr = true;\n this.isLocaleDomain = false;\n this.isReady = !!(self.__NEXT_DATA__.gssp || self.__NEXT_DATA__.gip || self.__NEXT_DATA__.appGip && !self.__NEXT_DATA__.gsp || !autoExportDynamic && !self.location.search && !false);\n if (false) {}\n this.state = {\n route,\n pathname: pathname1,\n query: query1,\n asPath: autoExportDynamic ? pathname1 : as1,\n isPreview: !!isPreview,\n locale: false ? 0 : undefined,\n isFallback\n };\n if (false) {}\n }\n reload() {\n window.location.reload();\n }\n /**\n * Go back in history\n */ back() {\n window.history.back();\n }\n /**\n * Performs a `pushState` with arguments\n * @param url of the route\n * @param as masks `url` for the browser\n * @param options object you can define `shallow` and other options\n */ push(url, as, options = {}) {\n if (false) {}\n ({ url , as } = prepareUrlAs(this, url, as));\n return this.change(\"pushState\", url, as, options);\n }\n /**\n * Performs a `replaceState` with arguments\n * @param url of the route\n * @param as masks `url` for the browser\n * @param options object you can define `shallow` and other options\n */ replace(url, as, options = {}) {\n ({ url , as } = prepareUrlAs(this, url, as));\n return this.change(\"replaceState\", url, as, options);\n }\n async change(method, url, as, options, forcedScroll) {\n if (!isLocalURL(url)) {\n window.location.href = url;\n return false;\n }\n const shouldResolveHref = options._h || options._shouldResolveHref || pathNoQueryHash(url) === pathNoQueryHash(as);\n const nextState = {\n ...this.state\n };\n // for static pages with query params in the URL we delay\n // marking the router ready until after the query is updated\n if (options._h) {\n this.isReady = true;\n }\n const prevLocale = nextState.locale;\n if (false) { var ref; }\n if (!options._h) {\n this.isSsr = false;\n }\n // marking route changes as a navigation start entry\n if (_utils.ST) {\n performance.mark(\"routeChange\");\n }\n const { shallow =false , scroll =true } = options;\n const routeProps = {\n shallow\n };\n if (this._inFlightRoute) {\n this.abortComponentLoad(this._inFlightRoute, routeProps);\n }\n as = addBasePath(addLocale(hasBasePath(as) ? delBasePath(as) : as, options.locale, this.defaultLocale));\n const cleanedAs = delLocale(hasBasePath(as) ? delBasePath(as) : as, nextState.locale);\n this._inFlightRoute = as;\n let localeChange = prevLocale !== nextState.locale;\n // If the url change is only related to a hash change\n // We should not proceed. We should only change the state.\n // WARNING: `_h` is an internal option for handing Next.js client-side\n // hydration. Your app should _never_ use this property. It may change at\n // any time without notice.\n if (!options._h && this.onlyAHashChange(cleanedAs) && !localeChange) {\n nextState.asPath = cleanedAs;\n Router.events.emit(\"hashChangeStart\", as, routeProps);\n // TODO: do we need the resolved href when only a hash change?\n this.changeState(method, url, as, {\n ...options,\n scroll: false\n });\n if (scroll) {\n this.scrollToHash(cleanedAs);\n }\n this.set(nextState, this.components[nextState.route], null);\n Router.events.emit(\"hashChangeComplete\", as, routeProps);\n return true;\n }\n let parsed = (0, _parseRelativeUrl).parseRelativeUrl(url);\n let { pathname , query } = parsed;\n // The build manifest needs to be loaded before auto-static dynamic pages\n // get their query parameters to allow ensuring they can be parsed properly\n // when rewritten to\n let pages, rewrites;\n try {\n [pages, { __rewrites: rewrites }] = await Promise.all([\n this.pageLoader.getPageList(),\n (0, _routeLoader).getClientBuildManifest(),\n this.pageLoader.getMiddlewareList(), \n ]);\n } catch (err) {\n // If we fail to resolve the page list or client-build manifest, we must\n // do a server-side transition:\n window.location.href = as;\n return false;\n }\n // If asked to change the current URL we should reload the current page\n // (not location.reload() but reload getInitialProps and other Next.js stuffs)\n // We also need to set the method = replaceState always\n // as this should not go into the history (That's how browsers work)\n // We should compare the new asPath to the current asPath, not the url\n if (!this.urlIsNew(cleanedAs) && !localeChange) {\n method = \"replaceState\";\n }\n // we need to resolve the as value using rewrites for dynamic SSG\n // pages to allow building the data URL correctly\n let resolvedAs = as;\n // url and as should always be prefixed with basePath by this\n // point by either next/link or router.push/replace so strip the\n // basePath from the pathname to match the pages dir 1-to-1\n pathname = pathname ? (0, _normalizeTrailingSlash).removePathTrailingSlash(delBasePath(pathname)) : pathname;\n if (shouldResolveHref && pathname !== \"/_error\") {\n options._shouldResolveHref = true;\n if (false) {} else {\n parsed.pathname = resolveDynamicRoute(pathname, pages);\n if (parsed.pathname !== pathname) {\n pathname = parsed.pathname;\n parsed.pathname = addBasePath(pathname);\n url = (0, _formatUrl).formatWithValidation(parsed);\n }\n }\n }\n if (!isLocalURL(as)) {\n if (true) {\n throw new Error(`Invalid href: \"${url}\" and as: \"${as}\", received relative href and external as` + `\\nSee more info: https://nextjs.org/docs/messages/invalid-relative-url-external-as`);\n }\n window.location.href = as;\n return false;\n }\n resolvedAs = delLocale(delBasePath(resolvedAs), nextState.locale);\n /**\n * If the route update was triggered for client-side hydration and\n * the rendered route is not dynamic do not check the preflight\n * request as it is not necessary.\n */ if ((!options.shallow || options._h === 1) && (options._h !== 1 || (0, _isDynamic).isDynamicRoute((0, _normalizeTrailingSlash).removePathTrailingSlash(pathname)))) {\n const effect = await this._preflightRequest({\n as,\n cache: \"development\" === \"production\",\n pages,\n pathname,\n query,\n locale: nextState.locale,\n isPreview: nextState.isPreview\n });\n if (effect.type === \"rewrite\") {\n query = {\n ...query,\n ...effect.parsedAs.query\n };\n resolvedAs = effect.asPath;\n pathname = effect.resolvedHref;\n parsed.pathname = effect.resolvedHref;\n url = (0, _formatUrl).formatWithValidation(parsed);\n } else if (effect.type === \"redirect\" && effect.newAs) {\n return this.change(method, effect.newUrl, effect.newAs, options);\n } else if (effect.type === \"redirect\" && effect.destination) {\n window.location.href = effect.destination;\n return new Promise(()=>{});\n } else if (effect.type === \"refresh\" && as !== window.location.pathname) {\n window.location.href = as;\n return new Promise(()=>{});\n }\n }\n const route = (0, _normalizeTrailingSlash).removePathTrailingSlash(pathname);\n if ((0, _isDynamic).isDynamicRoute(route)) {\n const parsedAs = (0, _parseRelativeUrl).parseRelativeUrl(resolvedAs);\n const asPathname = parsedAs.pathname;\n const routeRegex = (0, _routeRegex).getRouteRegex(route);\n const routeMatch = (0, _routeMatcher).getRouteMatcher(routeRegex)(asPathname);\n const shouldInterpolate = route === asPathname;\n const interpolatedAs = shouldInterpolate ? interpolateAs(route, asPathname, query) : {};\n if (!routeMatch || shouldInterpolate && !interpolatedAs.result) {\n const missingParams = Object.keys(routeRegex.groups).filter((param)=>!query[param]\n );\n if (missingParams.length > 0) {\n if (true) {\n console.warn(`${shouldInterpolate ? `Interpolating href` : `Mismatching \\`as\\` and \\`href\\``} failed to manually provide ` + `the params: ${missingParams.join(\", \")} in the \\`href\\`'s \\`query\\``);\n }\n throw new Error((shouldInterpolate ? `The provided \\`href\\` (${url}) value is missing query values (${missingParams.join(\", \")}) to be interpolated properly. ` : `The provided \\`as\\` value (${asPathname}) is incompatible with the \\`href\\` value (${route}). `) + `Read more: https://nextjs.org/docs/messages/${shouldInterpolate ? \"href-interpolation-failed\" : \"incompatible-href-as\"}`);\n }\n } else if (shouldInterpolate) {\n as = (0, _formatUrl).formatWithValidation(Object.assign({}, parsedAs, {\n pathname: interpolatedAs.result,\n query: omitParmsFromQuery(query, interpolatedAs.params)\n }));\n } else {\n // Merge params into `query`, overwriting any specified in search\n Object.assign(query, routeMatch);\n }\n }\n Router.events.emit(\"routeChangeStart\", as, routeProps);\n try {\n var ref1, ref2;\n let routeInfo = await this.getRouteInfo(route, pathname, query, as, resolvedAs, routeProps, nextState.locale, nextState.isPreview);\n let { error , props , __N_SSG , __N_SSP } = routeInfo;\n const component = routeInfo.Component;\n if (component && component.unstable_scriptLoader) {\n const scripts = [].concat(component.unstable_scriptLoader());\n scripts.forEach((script)=>{\n (0, _script).handleClientScriptLoad(script.props);\n });\n }\n // handle redirect on client-transition\n if ((__N_SSG || __N_SSP) && props) {\n if (props.pageProps && props.pageProps.__N_REDIRECT) {\n const destination = props.pageProps.__N_REDIRECT;\n // check if destination is internal (resolves to a page) and attempt\n // client-navigation if it is falling back to hard navigation if\n // it's not\n if (destination.startsWith(\"/\") && props.pageProps.__N_REDIRECT_BASE_PATH !== false) {\n const parsedHref = (0, _parseRelativeUrl).parseRelativeUrl(destination);\n parsedHref.pathname = resolveDynamicRoute(parsedHref.pathname, pages);\n const { url: newUrl , as: newAs } = prepareUrlAs(this, destination, destination);\n return this.change(method, newUrl, newAs, options);\n }\n window.location.href = destination;\n return new Promise(()=>{});\n }\n nextState.isPreview = !!props.__N_PREVIEW;\n // handle SSG data 404\n if (props.notFound === SSG_DATA_NOT_FOUND) {\n let notFoundRoute;\n try {\n await this.fetchComponent(\"/404\");\n notFoundRoute = \"/404\";\n } catch (_) {\n notFoundRoute = \"/_error\";\n }\n routeInfo = await this.getRouteInfo(notFoundRoute, notFoundRoute, query, as, resolvedAs, {\n shallow: false\n }, nextState.locale, nextState.isPreview);\n }\n }\n Router.events.emit(\"beforeHistoryChange\", as, routeProps);\n this.changeState(method, url, as, options);\n if (options._h && pathname === \"/_error\" && ((ref1 = self.__NEXT_DATA__.props) === null || ref1 === void 0 ? void 0 : (ref2 = ref1.pageProps) === null || ref2 === void 0 ? void 0 : ref2.statusCode) === 500 && (props === null || props === void 0 ? void 0 : props.pageProps)) {\n // ensure statusCode is still correct for static 500 page\n // when updating query information\n props.pageProps.statusCode = 500;\n }\n // shallow routing is only allowed for same page URL changes.\n const isValidShallowRoute = options.shallow && nextState.route === route;\n var _scroll;\n const shouldScroll = (_scroll = options.scroll) !== null && _scroll !== void 0 ? _scroll : !isValidShallowRoute;\n const resetScroll = shouldScroll ? {\n x: 0,\n y: 0\n } : null;\n await this.set({\n ...nextState,\n route,\n pathname,\n query,\n asPath: cleanedAs,\n isFallback: false\n }, routeInfo, forcedScroll !== null && forcedScroll !== void 0 ? forcedScroll : resetScroll).catch((e)=>{\n if (e.cancelled) error = error || e;\n else throw e;\n });\n if (error) {\n Router.events.emit(\"routeChangeError\", error, cleanedAs, routeProps);\n throw error;\n }\n if (false) {}\n Router.events.emit(\"routeChangeComplete\", as, routeProps);\n return true;\n } catch (err1) {\n if ((0, _isError).default(err1) && err1.cancelled) {\n return false;\n }\n throw err1;\n }\n }\n changeState(method, url, as, options = {}) {\n if (true) {\n if (typeof window.history === \"undefined\") {\n console.error(`Warning: window.history is not available.`);\n return;\n }\n if (typeof window.history[method] === \"undefined\") {\n console.error(`Warning: window.history.${method} is not available`);\n return;\n }\n }\n if (method !== \"pushState\" || (0, _utils).getURL() !== as) {\n this._shallow = options.shallow;\n window.history[method]({\n url,\n as,\n options,\n __N: true,\n idx: this._idx = method !== \"pushState\" ? this._idx : this._idx + 1\n }, // Passing the empty string here should be safe against future changes to the method.\n // https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState\n \"\", as);\n }\n }\n async handleRouteInfoError(err, pathname, query, as, routeProps, loadErrorFail) {\n if (err.cancelled) {\n // bubble up cancellation errors\n throw err;\n }\n if ((0, _routeLoader).isAssetError(err) || loadErrorFail) {\n Router.events.emit(\"routeChangeError\", err, as, routeProps);\n // If we can't load the page it could be one of following reasons\n // 1. Page doesn't exists\n // 2. Page does exist in a different zone\n // 3. Internal error while loading the page\n // So, doing a hard reload is the proper way to deal with this.\n window.location.href = as;\n // Changing the URL doesn't block executing the current code path.\n // So let's throw a cancellation error stop the routing logic.\n throw buildCancellationError();\n }\n try {\n let Component;\n let styleSheets;\n let props;\n if (typeof Component === \"undefined\" || typeof styleSheets === \"undefined\") {\n ({ page: Component , styleSheets } = await this.fetchComponent(\"/_error\"));\n }\n const routeInfo = {\n props,\n Component,\n styleSheets,\n err,\n error: err\n };\n if (!routeInfo.props) {\n try {\n routeInfo.props = await this.getInitialProps(Component, {\n err,\n pathname,\n query\n });\n } catch (gipErr) {\n console.error(\"Error in error page `getInitialProps`: \", gipErr);\n routeInfo.props = {};\n }\n }\n return routeInfo;\n } catch (routeInfoErr) {\n return this.handleRouteInfoError((0, _isError).default(routeInfoErr) ? routeInfoErr : new Error(routeInfoErr + \"\"), pathname, query, as, routeProps, true);\n }\n }\n async getRouteInfo(route, pathname, query, as, resolvedAs, routeProps, locale, isPreview) {\n try {\n const existingRouteInfo = this.components[route];\n if (routeProps.shallow && existingRouteInfo && this.route === route) {\n return existingRouteInfo;\n }\n let cachedRouteInfo = undefined;\n // can only use non-initial route info\n // cannot reuse route info in development since it can change after HMR\n if (false) {}\n const routeInfo = cachedRouteInfo || await this.fetchComponent(route).then((res)=>({\n Component: res.page,\n styleSheets: res.styleSheets,\n __N_SSG: res.mod.__N_SSG,\n __N_SSP: res.mod.__N_SSP,\n __N_RSC: !!res.mod.__next_rsc__\n })\n );\n const { Component , __N_SSG , __N_SSP , __N_RSC } = routeInfo;\n if (true) {\n const { isValidElementType } = __webpack_require__(/*! next/dist/compiled/react-is */ \"next/dist/compiled/react-is\");\n if (!isValidElementType(Component)) {\n throw new Error(`The default export is not a React Component in page: \"${pathname}\"`);\n }\n }\n let dataHref;\n // For server components, non-SSR pages will have statically optimized\n // flight data in a production build.\n // So only development and SSR pages will always have the real-time\n // generated and streamed flight data.\n const useStreamedFlightData = ( true) && __N_RSC;\n if (__N_SSG || __N_SSP || __N_RSC) {\n dataHref = this.pageLoader.getDataHref({\n href: (0, _formatUrl).formatWithValidation({\n pathname,\n query\n }),\n asPath: resolvedAs,\n ssg: __N_SSG,\n flight: useStreamedFlightData,\n locale\n });\n }\n const props = await this._getData(()=>(__N_SSG || __N_SSP || __N_RSC) && !useStreamedFlightData ? fetchNextData(dataHref, this.isSsr, false, __N_SSG ? this.sdc : this.sdr, !!__N_SSG && !isPreview) : this.getInitialProps(Component, {\n pathname,\n query,\n asPath: as,\n locale,\n locales: this.locales,\n defaultLocale: this.defaultLocale\n })\n );\n if (__N_RSC) {\n if (useStreamedFlightData) {\n const { data } = await this._getData(()=>this._getFlightData(dataHref)\n );\n props.pageProps = Object.assign(props.pageProps, {\n __flight__: data\n });\n } else {\n const { __flight__ } = props;\n props.pageProps = Object.assign({}, props.pageProps, {\n __flight__\n });\n }\n }\n routeInfo.props = props;\n this.components[route] = routeInfo;\n return routeInfo;\n } catch (err) {\n return this.handleRouteInfoError((0, _isError).getProperError(err), pathname, query, as, routeProps);\n }\n }\n set(state, data, resetScroll) {\n this.state = state;\n return this.sub(data, this.components[\"/_app\"].Component, resetScroll);\n }\n /**\n * Callback to execute before replacing router state\n * @param cb callback to be executed\n */ beforePopState(cb) {\n this._bps = cb;\n }\n onlyAHashChange(as) {\n if (!this.asPath) return false;\n const [oldUrlNoHash, oldHash] = this.asPath.split(\"#\");\n const [newUrlNoHash, newHash] = as.split(\"#\");\n // Makes sure we scroll to the provided hash if the url/hash are the same\n if (newHash && oldUrlNoHash === newUrlNoHash && oldHash === newHash) {\n return true;\n }\n // If the urls are change, there's more than a hash change\n if (oldUrlNoHash !== newUrlNoHash) {\n return false;\n }\n // If the hash has changed, then it's a hash only change.\n // This check is necessary to handle both the enter and\n // leave hash === '' cases. The identity case falls through\n // and is treated as a next reload.\n return oldHash !== newHash;\n }\n scrollToHash(as) {\n const [, hash = \"\"] = as.split(\"#\");\n // Scroll to top if the hash is just `#` with no value or `#top`\n // To mirror browsers\n if (hash === \"\" || hash === \"top\") {\n window.scrollTo(0, 0);\n return;\n }\n // First we check if the element by id is found\n const idEl = document.getElementById(hash);\n if (idEl) {\n idEl.scrollIntoView();\n return;\n }\n // If there's no element with the id, we check the `name` property\n // To mirror browsers\n const nameEl = document.getElementsByName(hash)[0];\n if (nameEl) {\n nameEl.scrollIntoView();\n }\n }\n urlIsNew(asPath) {\n return this.asPath !== asPath;\n }\n /**\n * Prefetch page code, you may wait for the data during page rendering.\n * This feature only works in production!\n * @param url the href of prefetched page\n * @param asPath the as path of the prefetched page\n */ async prefetch(url, asPath = url, options = {}) {\n let parsed = (0, _parseRelativeUrl).parseRelativeUrl(url);\n let { pathname , query } = parsed;\n if (false) {}\n const pages = await this.pageLoader.getPageList();\n let resolvedAs = asPath;\n if (false) {} else {\n parsed.pathname = resolveDynamicRoute(parsed.pathname, pages);\n if (parsed.pathname !== pathname) {\n pathname = parsed.pathname;\n parsed.pathname = pathname;\n url = (0, _formatUrl).formatWithValidation(parsed);\n }\n }\n // Prefetch is not supported in development mode because it would trigger on-demand-entries\n if (true) {\n return;\n }\n const effects = await this._preflightRequest({\n as: addBasePath(asPath),\n cache: true,\n pages,\n pathname,\n query,\n locale: this.locale,\n isPreview: this.isPreview\n });\n if (effects.type === \"rewrite\") {\n parsed.pathname = effects.resolvedHref;\n pathname = effects.resolvedHref;\n query = {\n ...query,\n ...effects.parsedAs.query\n };\n resolvedAs = effects.asPath;\n url = (0, _formatUrl).formatWithValidation(parsed);\n }\n const route = (0, _normalizeTrailingSlash).removePathTrailingSlash(pathname);\n await Promise.all([\n this.pageLoader._isSsg(route).then((isSsg)=>{\n return isSsg ? fetchNextData(this.pageLoader.getDataHref({\n href: url,\n asPath: resolvedAs,\n ssg: true,\n locale: typeof options.locale !== \"undefined\" ? options.locale : this.locale\n }), false, false, this.sdc, true) : false;\n }),\n this.pageLoader[options.priority ? \"loadPage\" : \"prefetch\"](route), \n ]);\n }\n async fetchComponent(route) {\n let cancelled = false;\n const cancel = this.clc = ()=>{\n cancelled = true;\n };\n const handleCancelled = ()=>{\n if (cancelled) {\n const error = new Error(`Abort fetching component for route: \"${route}\"`);\n error.cancelled = true;\n throw error;\n }\n if (cancel === this.clc) {\n this.clc = null;\n }\n };\n try {\n const componentResult = await this.pageLoader.loadPage(route);\n handleCancelled();\n return componentResult;\n } catch (err) {\n handleCancelled();\n throw err;\n }\n }\n _getData(fn) {\n let cancelled = false;\n const cancel = ()=>{\n cancelled = true;\n };\n this.clc = cancel;\n return fn().then((data)=>{\n if (cancel === this.clc) {\n this.clc = null;\n }\n if (cancelled) {\n const err = new Error(\"Loading initial props cancelled\");\n err.cancelled = true;\n throw err;\n }\n return data;\n });\n }\n _getFlightData(dataHref) {\n // Do not cache RSC flight response since it's not a static resource\n return fetchNextData(dataHref, true, true, this.sdc, false).then((serialized)=>{\n return {\n data: serialized\n };\n });\n }\n async _preflightRequest(options) {\n const asPathname = pathNoQueryHash(options.as);\n const cleanedAs = delLocale(hasBasePath(asPathname) ? delBasePath(asPathname) : asPathname, options.locale);\n const fns = await this.pageLoader.getMiddlewareList();\n const requiresPreflight = fns.some(([middleware, isSSR])=>{\n return (0, _routeMatcher).getRouteMatcher((0, _getMiddlewareRegex).getMiddlewareRegex(middleware, !isSSR))(cleanedAs);\n });\n if (!requiresPreflight) {\n return {\n type: \"next\"\n };\n }\n const preflightHref = addLocale(options.as, options.locale);\n let preflight;\n try {\n preflight = await this._getPreflightData({\n preflightHref,\n shouldCache: options.cache,\n isPreview: options.isPreview\n });\n } catch (err) {\n // If preflight request fails, we need to do a hard-navigation.\n return {\n type: \"redirect\",\n destination: options.as\n };\n }\n if (preflight.rewrite) {\n // for external rewrites we need to do a hard navigation\n // to the resource\n if (!preflight.rewrite.startsWith(\"/\")) {\n return {\n type: \"redirect\",\n destination: options.as\n };\n }\n const parsed = (0, _parseRelativeUrl).parseRelativeUrl((0, _normalizeLocalePath).normalizeLocalePath(hasBasePath(preflight.rewrite) ? delBasePath(preflight.rewrite) : preflight.rewrite, this.locales).pathname);\n const fsPathname = (0, _normalizeTrailingSlash).removePathTrailingSlash(parsed.pathname);\n let matchedPage;\n let resolvedHref;\n if (options.pages.includes(fsPathname)) {\n matchedPage = true;\n resolvedHref = fsPathname;\n } else {\n resolvedHref = resolveDynamicRoute(fsPathname, options.pages);\n if (resolvedHref !== parsed.pathname && options.pages.includes(resolvedHref)) {\n matchedPage = true;\n }\n }\n return {\n type: \"rewrite\",\n asPath: parsed.pathname,\n parsedAs: parsed,\n matchedPage,\n resolvedHref\n };\n }\n if (preflight.redirect) {\n if (preflight.redirect.startsWith(\"/\")) {\n const cleanRedirect = (0, _normalizeTrailingSlash).removePathTrailingSlash((0, _normalizeLocalePath).normalizeLocalePath(hasBasePath(preflight.redirect) ? delBasePath(preflight.redirect) : preflight.redirect, this.locales).pathname);\n const { url: newUrl , as: newAs } = prepareUrlAs(this, cleanRedirect, cleanRedirect);\n return {\n type: \"redirect\",\n newUrl,\n newAs\n };\n }\n return {\n type: \"redirect\",\n destination: preflight.redirect\n };\n }\n // For SSR requests, they will be handled like normal pages.\n if (preflight.refresh && !preflight.ssr) {\n return {\n type: \"refresh\"\n };\n }\n return {\n type: \"next\"\n };\n }\n _getPreflightData(params) {\n const { preflightHref , shouldCache =false , isPreview } = params;\n const { href: cacheKey } = new URL(preflightHref, window.location.href);\n if (false) {}\n return fetch(preflightHref, {\n method: \"HEAD\",\n credentials: \"same-origin\",\n headers: {\n \"x-middleware-preflight\": \"1\"\n }\n }).then((res)=>{\n if (!res.ok) {\n throw new Error(`Failed to preflight request`);\n }\n return {\n cache: res.headers.get(\"x-middleware-cache\"),\n redirect: res.headers.get(\"Location\"),\n refresh: res.headers.has(\"x-middleware-refresh\"),\n rewrite: res.headers.get(\"x-middleware-rewrite\"),\n ssr: !!res.headers.get(\"x-middleware-ssr\")\n };\n }).then((data)=>{\n if (shouldCache && data.cache !== \"no-cache\") {\n this.sde[cacheKey] = data;\n }\n return data;\n }).catch((err)=>{\n delete this.sde[cacheKey];\n throw err;\n });\n }\n getInitialProps(Component, ctx) {\n const { Component: App } = this.components[\"/_app\"];\n const AppTree = this._wrapApp(App);\n ctx.AppTree = AppTree;\n return (0, _utils).loadGetInitialProps(App, {\n AppTree,\n Component,\n router: this,\n ctx\n });\n }\n abortComponentLoad(as, routeProps) {\n if (this.clc) {\n Router.events.emit(\"routeChangeError\", buildCancellationError(), as, routeProps);\n this.clc();\n this.clc = null;\n }\n }\n get route() {\n return this.state.route;\n }\n get pathname() {\n return this.state.pathname;\n }\n get query() {\n return this.state.query;\n }\n get asPath() {\n return this.state.asPath;\n }\n get locale() {\n return this.state.locale;\n }\n get isFallback() {\n return this.state.isFallback;\n }\n get isPreview() {\n return this.state.isPreview;\n }\n}\nexports[\"default\"] = Router;\nRouter.events = (0, _mitt).default(); //# sourceMappingURL=router.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3JvdXRlci5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLEtBQUssRUFBRSxJQUFJO0NBQ2QsRUFBQyxDQUFDO0FBQ0hELHVCQUF1QixHQUFHRSxlQUFlLENBQUM7QUFDMUNGLGlCQUFpQixHQUFHRyxTQUFTLENBQUM7QUFDOUJILGlCQUFpQixHQUFHSSxTQUFTLENBQUM7QUFDOUJKLG1CQUFtQixHQUFHSyxXQUFXLENBQUM7QUFDbENMLG1CQUFtQixHQUFHTSxXQUFXLENBQUM7QUFDbENOLG1CQUFtQixHQUFHTyxXQUFXLENBQUM7QUFDbENQLGtCQUFrQixHQUFHUSxVQUFVLENBQUM7QUFDaENSLHFCQUFxQixHQUFHUyxhQUFhLENBQUM7QUFDdENULG1CQUFtQixHQUFHVSxXQUFXLENBQUM7QUFDbENWLGtCQUFlLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDekIsSUFBSVksdUJBQXVCLEdBQUdDLG1CQUFPLENBQUMsNkdBQTBDLENBQUM7QUFDakYsSUFBSUMsWUFBWSxHQUFHRCxtQkFBTyxDQUFDLHFGQUE4QixDQUFDO0FBQzFELElBQUlFLE9BQU8sR0FBR0YsbUJBQU8sQ0FBQyx5RUFBd0IsQ0FBQztBQUMvQyxJQUFJRyxRQUFRLEdBQUdDLHVCQUF1QixDQUFDSixtQkFBTyxDQUFDLHVFQUF1QixDQUFDLENBQUM7QUFDeEUsSUFBSUssb0JBQW9CLEdBQUdMLG1CQUFPLENBQUMsOEVBQW9DLENBQUM7QUFDeEUsSUFBSU0sb0JBQW9CLEdBQUdOLG1CQUFPLENBQUMsb0VBQStCLENBQUM7QUFDbkUsSUFBSU8sS0FBSyxHQUFHQyxzQkFBc0IsQ0FBQ1IsbUJBQU8sQ0FBQyx3QkFBUyxDQUFDLENBQUM7QUFDdEQsSUFBSVMsTUFBTSxHQUFHVCxtQkFBTyxDQUFDLDBCQUFVLENBQUM7QUFDaEMsSUFBSVUsVUFBVSxHQUFHVixtQkFBTyxDQUFDLDhDQUFvQixDQUFD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NUgsS0FBSyxDQUFDO0tBQzNCO0lBQ0QsSUFBSTlCLFFBQVEsR0FBRztRQUNYLE9BQU8sSUFBSSxDQUFDMEosS0FBSyxDQUFDMUosUUFBUSxDQUFDO0tBQzlCO0lBQ0QsSUFBSWdDLEtBQUssR0FBRztRQUNSLE9BQU8sSUFBSSxDQUFDMEgsS0FBSyxDQUFDMUgsS0FBSyxDQUFDO0tBQzNCO0lBQ0QsSUFBSTBDLE1BQU0sR0FBRztRQUNULE9BQU8sSUFBSSxDQUFDZ0YsS0FBSyxDQUFDaEYsTUFBTSxDQUFDO0tBQzVCO0lBQ0QsSUFBSXBFLE1BQU0sR0FBRztRQUNULE9BQU8sSUFBSSxDQUFDb0osS0FBSyxDQUFDcEosTUFBTSxDQUFDO0tBQzVCO0lBQ0QsSUFBSTJJLFVBQVUsR0FBRztRQUNiLE9BQU8sSUFBSSxDQUFDUyxLQUFLLENBQUNULFVBQVUsQ0FBQztLQUNoQztJQUNELElBQUlDLFNBQVMsR0FBRztRQUNaLE9BQU8sSUFBSSxDQUFDUSxLQUFLLENBQUNSLFNBQVMsQ0FBQztLQUMvQjtDQUNKO0FBQ0QxTSxrQkFBZSxHQUFHOEwsTUFBTSxDQUFDO0FBQ3pCQSxNQUFNLENBQUNpRCxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUzTixLQUFLLENBQUMsQ0FBQ1QsT0FBTyxFQUFFLENBQUMsQ0FFckMsa0NBQWtDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYnVybi1teS13YWxsZXQvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3JvdXRlci5qcz84Njg0Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5nZXREb21haW5Mb2NhbGUgPSBnZXREb21haW5Mb2NhbGU7XG5leHBvcnRzLmFkZExvY2FsZSA9IGFkZExvY2FsZTtcbmV4cG9ydHMuZGVsTG9jYWxlID0gZGVsTG9jYWxlO1xuZXhwb3J0cy5oYXNCYXNlUGF0aCA9IGhhc0Jhc2VQYXRoO1xuZXhwb3J0cy5hZGRCYXNlUGF0aCA9IGFkZEJhc2VQYXRoO1xuZXhwb3J0cy5kZWxCYXNlUGF0aCA9IGRlbEJhc2VQYXRoO1xuZXhwb3J0cy5pc0xvY2FsVVJMID0gaXNMb2NhbFVSTDtcbmV4cG9ydHMuaW50ZXJwb2xhdGVBcyA9IGludGVycG9sYXRlQXM7XG5leHBvcnRzLnJlc29sdmVIcmVmID0gcmVzb2x2ZUhyZWY7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG52YXIgX25vcm1hbGl6ZVRyYWlsaW5nU2xhc2ggPSByZXF1aXJlKFwiLi4vLi4vLi4vY2xpZW50L25vcm1hbGl6ZS10cmFpbGluZy1zbGFzaFwiKTtcbnZhciBfcm91dGVMb2FkZXIgPSByZXF1aXJlKFwiLi4vLi4vLi4vY2xpZW50L3JvdXRlLWxvYWRlclwiKTtcbnZhciBfc2NyaXB0ID0gcmVxdWlyZShcIi4uLy4uLy4uL2NsaWVudC9zY3JpcHRcIik7XG52YXIgX2lzRXJyb3IgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwiLi4vLi4vLi4vbGliL2lzLWVycm9yXCIpKTtcbnZhciBfZGVub3JtYWxpemVQYWdlUGF0aCA9IHJlcXVpcmUoXCIuLi9wYWdlLXBhdGgvZGVub3JtYWxpemUtcGFnZS1wYXRoXCIpO1xudmFyIF9ub3JtYWxpemVMb2NhbGVQYXRoID0gcmVxdWlyZShcIi4uL2kxOG4vbm9ybWFsaXplLWxvY2FsZS1wYXRoXCIpO1xudmFyIF9taXR0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vbWl0dFwiKSk7XG52YXIgX3V0aWxzID0gcmVxdWlyZShcIi4uL3V0aWxzXCIpO1xudmFyIF9pc0R5bmFtaWMgPSByZXF1aXJlKFwiLi91dGlscy9pcy1keW5hbWljXCIpO1xudmFyIF9wYXJzZVJlbGF0aXZlVXJsID0gcmVxdWlyZShcIi4vdXRpbHMvcGFyc2UtcmVsYXRpdmUtdXJsXCIpO1xudmFyIF9xdWVyeXN0cmluZyA9IHJlcXVpcmUoXCIuL3V0aWxzL3F1ZXJ5c3RyaW5nXCIpO1xudmFyIF9yZXNvbHZlUmV3cml0ZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWxzL3Jlc29sdmUtcmV3cml0ZXNcIikpO1xudmFyIF9yb3V0ZU1hdGNoZXIgPSByZXF1aXJlKFwiLi91dGlscy9yb3V0ZS1tYXRjaGVyXCIpO1xudmFyIF9yb3V0ZVJlZ2V4ID0gcmVxdWlyZShcIi4vdXRpbHMvcm91dGUtcmVnZXhcIik7XG52YXIgX2dldE1pZGRsZXdhcmVSZWdleCA9IHJlcXVpcmUoXCIuL3V0aWxzL2dldC1taWRkbGV3YXJlLXJlZ2V4XCIpO1xudmFyIF9mb3JtYXRVcmwgPSByZXF1aXJlKFwiLi91dGlscy9mb3JtYXQtdXJsXCIpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHtcbiAgICByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDoge1xuICAgICAgICBkZWZhdWx0OiBvYmpcbiAgICB9O1xufVxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7XG4gICAgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkge1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBuZXdPYmogPSB7fTtcbiAgICAgICAgaWYgKG9iaiAhPSBudWxsKSB7XG4gICAgICAgICAgICBmb3IodmFyIGtleSBpbiBvYmope1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkZXNjID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IHt9O1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdPYmpba2V5XSA9IG9ialtrZXldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG5ld09iai5kZWZhdWx0ID0gb2JqO1xuICAgICAgICByZXR1cm4gbmV3T2JqO1xuICAgIH1cbn1cbmxldCBkZXRlY3REb21haW5Mb2NhbGU7XG5pZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgIGRldGVjdERvbWFpbkxvY2FsZSA9IHJlcXVpcmUoJy4uL2kxOG4vZGV0ZWN0LWRvbWFpbi1sb2NhbGUnKS5kZXRlY3REb21haW5Mb2NhbGU7XG59XG5jb25zdCBiYXNlUGF0aCA9IHByb2Nlc3MuZW52Ll9fTkVYVF9ST1VURVJfQkFTRVBBVEggfHwgJyc7XG5mdW5jdGlvbiBidWlsZENhbmNlbGxhdGlvbkVycm9yKCkge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBFcnJvcignUm91dGUgQ2FuY2VsbGVkJyksIHtcbiAgICAgICAgY2FuY2VsbGVkOiB0cnVlXG4gICAgfSk7XG59XG5mdW5jdGlvbiBhZGRQYXRoUHJlZml4KHBhdGgsIHByZWZpeCkge1xuICAgIGlmICghcGF0aC5zdGFydHNXaXRoKCcvJykgfHwgIXByZWZpeCkge1xuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICB9XG4gICAgY29uc3QgcGF0aG5hbWUgPSBwYXRoTm9RdWVyeUhhc2gocGF0aCk7XG4gICAgcmV0dXJuICgwLCBfbm9ybWFsaXplVHJhaWxpbmdTbGFzaCkubm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2goYCR7cHJlZml4fSR7cGF0aG5hbWV9YCkgKyBwYXRoLnNsaWNlKHBhdGhuYW1lLmxlbmd0aCk7XG59XG5mdW5jdGlvbiBoYXNQYXRoUHJlZml4KHBhdGgsIHByZWZpeCkge1xuICAgIHBhdGggPSBwYXRoTm9RdWVyeUhhc2gocGF0aCk7XG4gICAgcmV0dXJuIHBhdGggPT09IHByZWZpeCB8fCBwYXRoLnN0YXJ0c1dpdGgocHJlZml4ICsgJy8nKTtcbn1cbmZ1bmN0aW9uIGdldERvbWFpbkxvY2FsZShwYXRoLCBsb2NhbGUsIGxvY2FsZXMsIGRvbWFpbkxvY2FsZXMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICBsb2NhbGUgPSBsb2NhbGUgfHwgKDAsIF9ub3JtYWxpemVMb2NhbGVQYXRoKS5ub3JtYWxpemVMb2NhbGVQYXRoKHBhdGgsIGxvY2FsZXMpLmRldGVjdGVkTG9jYWxlO1xuICAgICAgICBjb25zdCBkZXRlY3RlZERvbWFpbiA9IGRldGVjdERvbWFpbkxvY2FsZShkb21haW5Mb2NhbGVzLCB1bmRlZmluZWQsIGxvY2FsZSk7XG4gICAgICAgIGlmIChkZXRlY3RlZERvbWFpbikge1xuICAgICAgICAgICAgcmV0dXJuIGBodHRwJHtkZXRlY3RlZERvbWFpbi5odHRwID8gJycgOiAncyd9Oi8vJHtkZXRlY3RlZERvbWFpbi5kb21haW59JHtiYXNlUGF0aCB8fCAnJ30ke2xvY2FsZSA9PT0gZGV0ZWN0ZWREb21haW4uZGVmYXVsdExvY2FsZSA/ICcnIDogYC8ke2xvY2FsZX1gfSR7cGF0aH1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuZnVuY3Rpb24gYWRkTG9jYWxlKHBhdGgsIGxvY2FsZSwgZGVmYXVsdExvY2FsZSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUKSB7XG4gICAgICAgIGlmIChsb2NhbGUgJiYgbG9jYWxlICE9PSBkZWZhdWx0TG9jYWxlKSB7XG4gICAgICAgICAgICBjb25zdCBwYXRobmFtZSA9IHBhdGhOb1F1ZXJ5SGFzaChwYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IHBhdGhMb3dlciA9IHBhdGhuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBjb25zdCBsb2NhbGVMb3dlciA9IGxvY2FsZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgaWYgKCFoYXNQYXRoUHJlZml4KHBhdGhMb3dlciwgJy8nICsgbG9jYWxlTG93ZXIpICYmICFoYXNQYXRoUHJlZml4KHBhdGhMb3dlciwgJy9hcGknKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhZGRQYXRoUHJlZml4KHBhdGgsICcvJyArIGxvY2FsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHBhdGg7XG59XG5mdW5jdGlvbiBkZWxMb2NhbGUocGF0aCwgbG9jYWxlKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9JMThOX1NVUFBPUlQpIHtcbiAgICAgICAgY29uc3QgcGF0aG5hbWUgPSBwYXRoTm9RdWVyeUhhc2gocGF0aCk7XG4gICAgICAgIGNvbnN0IHBhdGhMb3dlciA9IHBhdGhuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IGxvY2FsZUxvd2VyID0gbG9jYWxlICYmIGxvY2FsZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICByZXR1cm4gbG9jYWxlICYmIChwYXRoTG93ZXIuc3RhcnRzV2l0aCgnLycgKyBsb2NhbGVMb3dlciArICcvJykgfHwgcGF0aExvd2VyID09PSAnLycgKyBsb2NhbGVMb3dlcikgPyAocGF0aG5hbWUubGVuZ3RoID09PSBsb2NhbGUubGVuZ3RoICsgMSA/ICcvJyA6ICcnKSArIHBhdGguc2xpY2UobG9jYWxlLmxlbmd0aCArIDEpIDogcGF0aDtcbiAgICB9XG4gICAgcmV0dXJuIHBhdGg7XG59XG5mdW5jdGlvbiBwYXRoTm9RdWVyeUhhc2gocGF0aCkge1xuICAgIGNvbnN0IHF1ZXJ5SW5kZXggPSBwYXRoLmluZGV4T2YoJz8nKTtcbiAgICBjb25zdCBoYXNoSW5kZXggPSBwYXRoLmluZGV4T2YoJyMnKTtcbiAgICBpZiAocXVlcnlJbmRleCA+IC0xIHx8IGhhc2hJbmRleCA+IC0xKSB7XG4gICAgICAgIHBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBxdWVyeUluZGV4ID4gLTEgPyBxdWVyeUluZGV4IDogaGFzaEluZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIHBhdGg7XG59XG5mdW5jdGlvbiBoYXNCYXNlUGF0aChwYXRoKSB7XG4gICAgcmV0dXJuIGhhc1BhdGhQcmVmaXgocGF0aCwgYmFzZVBhdGgpO1xufVxuZnVuY3Rpb24gYWRkQmFzZVBhdGgocGF0aCkge1xuICAgIC8vIHdlIG9ubHkgYWRkIHRoZSBiYXNlcGF0aCBvbiByZWxhdGl2ZSB1cmxzXG4gICAgcmV0dXJuIGFkZFBhdGhQcmVmaXgocGF0aCwgYmFzZVBhdGgpO1xufVxuZnVuY3Rpb24gZGVsQmFzZVBhdGgocGF0aCkge1xuICAgIHBhdGggPSBwYXRoLnNsaWNlKGJhc2VQYXRoLmxlbmd0aCk7XG4gICAgaWYgKCFwYXRoLnN0YXJ0c1dpdGgoJy8nKSkgcGF0aCA9IGAvJHtwYXRofWA7XG4gICAgcmV0dXJuIHBhdGg7XG59XG5mdW5jdGlvbiBpc0xvY2FsVVJMKHVybCkge1xuICAgIC8vIHByZXZlbnQgYSBoeWRyYXRpb24gbWlzbWF0Y2ggb24gaHJlZiBmb3IgdXJsIHdpdGggYW5jaG9yIHJlZnNcbiAgICBpZiAodXJsLnN0YXJ0c1dpdGgoJy8nKSB8fCB1cmwuc3RhcnRzV2l0aCgnIycpIHx8IHVybC5zdGFydHNXaXRoKCc/JykpIHJldHVybiB0cnVlO1xuICAgIHRyeSB7XG4gICAgICAgIC8vIGFic29sdXRlIHVybHMgY2FuIGJlIGxvY2FsIGlmIHRoZXkgYXJlIG9uIHRoZSBzYW1lIG9yaWdpblxuICAgICAgICBjb25zdCBsb2NhdGlvbk9yaWdpbiA9ICgwLCBfdXRpbHMpLmdldExvY2F0aW9uT3JpZ2luKCk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkID0gbmV3IFVSTCh1cmwsIGxvY2F0aW9uT3JpZ2luKTtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVkLm9yaWdpbiA9PT0gbG9jYXRpb25PcmlnaW4gJiYgaGFzQmFzZVBhdGgocmVzb2x2ZWQucGF0aG5hbWUpO1xuICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGludGVycG9sYXRlQXMocm91dGUsIGFzUGF0aG5hbWUsIHF1ZXJ5KSB7XG4gICAgbGV0IGludGVycG9sYXRlZFJvdXRlID0gJyc7XG4gICAgY29uc3QgZHluYW1pY1JlZ2V4ID0gKDAsIF9yb3V0ZVJlZ2V4KS5nZXRSb3V0ZVJlZ2V4KHJvdXRlKTtcbiAgICBjb25zdCBkeW5hbWljR3JvdXBzID0gZHluYW1pY1JlZ2V4Lmdyb3VwcztcbiAgICBjb25zdCBkeW5hbWljTWF0Y2hlcyA9IC8vIFRyeSB0byBtYXRjaCB0aGUgZHluYW1pYyByb3V0ZSBhZ2FpbnN0IHRoZSBhc1BhdGhcbiAgICAoYXNQYXRobmFtZSAhPT0gcm91dGUgPyAoMCwgX3JvdXRlTWF0Y2hlcikuZ2V0Um91dGVNYXRjaGVyKGR5bmFtaWNSZWdleCkoYXNQYXRobmFtZSkgOiAnJykgfHwgLy8gRmFsbCBiYWNrIHRvIHJlYWRpbmcgdGhlIHZhbHVlcyBmcm9tIHRoZSBocmVmXG4gICAgLy8gVE9ETzogc2hvdWxkIHRoaXMgdGFrZSBwcmlvcml0eTsgYWxzbyBuZWVkIHRvIGNoYW5nZSBpbiB0aGUgcm91dGVyLlxuICAgIHF1ZXJ5O1xuICAgIGludGVycG9sYXRlZFJvdXRlID0gcm91dGU7XG4gICAgY29uc3QgcGFyYW1zID0gT2JqZWN0LmtleXMoZHluYW1pY0dyb3Vwcyk7XG4gICAgaWYgKCFwYXJhbXMuZXZlcnkoKHBhcmFtKT0+e1xuICAgICAgICBsZXQgdmFsdWUgPSBkeW5hbWljTWF0Y2hlc1twYXJhbV0gfHwgJyc7XG4gICAgICAgIGNvbnN0IHsgcmVwZWF0ICwgb3B0aW9uYWwgIH0gPSBkeW5hbWljR3JvdXBzW3BhcmFtXTtcbiAgICAgICAgLy8gc3VwcG9ydCBzaW5nbGUtbGV2ZWwgY2F0Y2gtYWxsXG4gICAgICAgIC8vIFRPRE86IG1vcmUgcm9idXN0IGhhbmRsaW5nIGZvciB1c2VyLWVycm9yIChwYXNzaW5nIGAvYClcbiAgICAgICAgbGV0IHJlcGxhY2VkID0gYFske3JlcGVhdCA/ICcuLi4nIDogJyd9JHtwYXJhbX1dYDtcbiAgICAgICAgaWYgKG9wdGlvbmFsKSB7XG4gICAgICAgICAgICByZXBsYWNlZCA9IGAkeyF2YWx1ZSA/ICcvJyA6ICcnfVske3JlcGxhY2VkfV1gO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXBlYXQgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB2YWx1ZSA9IFtcbiAgICAgICAgICAgIHZhbHVlXG4gICAgICAgIF07XG4gICAgICAgIHJldHVybiAob3B0aW9uYWwgfHwgcGFyYW0gaW4gZHluYW1pY01hdGNoZXMpICYmIC8vIEludGVycG9sYXRlIGdyb3VwIGludG8gZGF0YSBVUkwgaWYgcHJlc2VudFxuICAgICAgICAoaW50ZXJwb2xhdGVkUm91dGUgPSBpbnRlcnBvbGF0ZWRSb3V0ZS5yZXBsYWNlKHJlcGxhY2VkLCByZXBlYXQgPyB2YWx1ZS5tYXAoLy8gdGhlc2UgdmFsdWVzIHNob3VsZCBiZSBmdWxseSBlbmNvZGVkIGluc3RlYWQgb2YganVzdFxuICAgICAgICAvLyBwYXRoIGRlbGltaXRlciBlc2NhcGVkIHNpbmNlIHRoZXkgYXJlIGJlaW5nIGluc2VydGVkXG4gICAgICAgIC8vIGludG8gdGhlIFVSTCBhbmQgd2UgZXhwZWN0IFVSTCBlbmNvZGVkIHNlZ21lbnRzXG4gICAgICAgIC8vIHdoZW4gcGFyc2luZyBkeW5hbWljIHJvdXRlIHBhcmFtc1xuICAgICAgICAoc2VnbWVudCk9PmVuY29kZVVSSUNvbXBvbmVudChzZWdtZW50KVxuICAgICAgICApLmpvaW4oJy8nKSA6IGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpIHx8ICcvJyk7XG4gICAgfSkpIHtcbiAgICAgICAgaW50ZXJwb2xhdGVkUm91dGUgPSAnJyAvLyBkaWQgbm90IHNhdGlzZnkgYWxsIHJlcXVpcmVtZW50c1xuICAgICAgICA7XG4gICAgLy8gbi5iLiBXZSBpZ25vcmUgdGhpcyBlcnJvciBiZWNhdXNlIHdlIGhhbmRsZSB3YXJuaW5nIGZvciB0aGlzIGNhc2UgaW5cbiAgICAvLyBkZXZlbG9wbWVudCBpbiB0aGUgYDxMaW5rPmAgY29tcG9uZW50IGRpcmVjdGx5LlxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBwYXJhbXMsXG4gICAgICAgIHJlc3VsdDogaW50ZXJwb2xhdGVkUm91dGVcbiAgICB9O1xufVxuZnVuY3Rpb24gb21pdFBhcm1zRnJvbVF1ZXJ5KHF1ZXJ5LCBwYXJhbXMpIHtcbiAgICBjb25zdCBmaWx0ZXJlZFF1ZXJ5ID0ge307XG4gICAgT2JqZWN0LmtleXMocXVlcnkpLmZvckVhY2goKGtleSk9PntcbiAgICAgICAgaWYgKCFwYXJhbXMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgZmlsdGVyZWRRdWVyeVtrZXldID0gcXVlcnlba2V5XTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmaWx0ZXJlZFF1ZXJ5O1xufVxuZnVuY3Rpb24gcmVzb2x2ZUhyZWYocm91dGVyLCBocmVmLCByZXNvbHZlQXMpIHtcbiAgICAvLyB3ZSB1c2UgYSBkdW1teSBiYXNlIHVybCBmb3IgcmVsYXRpdmUgdXJsc1xuICAgIGxldCBiYXNlO1xuICAgIGxldCB1cmxBc1N0cmluZyA9IHR5cGVvZiBocmVmID09PSAnc3RyaW5nJyA/IGhyZWYgOiAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oaHJlZik7XG4gICAgLy8gcmVwZWF0ZWQgc2xhc2hlcyBhbmQgYmFja3NsYXNoZXMgaW4gdGhlIFVSTCBhcmUgY29uc2lkZXJlZFxuICAgIC8vIGludmFsaWQgYW5kIHdpbGwgbmV2ZXIgbWF0Y2ggYSBOZXh0LmpzIHBhZ2UvZmlsZVxuICAgIGNvbnN0IHVybFByb3RvTWF0Y2ggPSB1cmxBc1N0cmluZy5tYXRjaCgvXlthLXpBLVpdezEsfTpcXC9cXC8vKTtcbiAgICBjb25zdCB1cmxBc1N0cmluZ05vUHJvdG8gPSB1cmxQcm90b01hdGNoID8gdXJsQXNTdHJpbmcuc2xpY2UodXJsUHJvdG9NYXRjaFswXS5sZW5ndGgpIDogdXJsQXNTdHJpbmc7XG4gICAgY29uc3QgdXJsUGFydHMgPSB1cmxBc1N0cmluZ05vUHJvdG8uc3BsaXQoJz8nKTtcbiAgICBpZiAoKHVybFBhcnRzWzBdIHx8ICcnKS5tYXRjaCgvKFxcL1xcL3xcXFxcKS8pKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEludmFsaWQgaHJlZiBwYXNzZWQgdG8gbmV4dC9yb3V0ZXI6ICR7dXJsQXNTdHJpbmd9LCByZXBlYXRlZCBmb3J3YXJkLXNsYXNoZXMgKC8vKSBvciBiYWNrc2xhc2hlcyBcXFxcIGFyZSBub3QgdmFsaWQgaW4gdGhlIGhyZWZgKTtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFVybCA9ICgwLCBfdXRpbHMpLm5vcm1hbGl6ZVJlcGVhdGVkU2xhc2hlcyh1cmxBc1N0cmluZ05vUHJvdG8pO1xuICAgICAgICB1cmxBc1N0cmluZyA9ICh1cmxQcm90b01hdGNoID8gdXJsUHJvdG9NYXRjaFswXSA6ICcnKSArIG5vcm1hbGl6ZWRVcmw7XG4gICAgfVxuICAgIC8vIFJldHVybiBiZWNhdXNlIGl0IGNhbm5vdCBiZSByb3V0ZWQgYnkgdGhlIE5leHQuanMgcm91dGVyXG4gICAgaWYgKCFpc0xvY2FsVVJMKHVybEFzU3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZUFzID8gW1xuICAgICAgICAgICAgdXJsQXNTdHJpbmdcbiAgICAgICAgXSA6IHVybEFzU3RyaW5nO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBiYXNlID0gbmV3IFVSTCh1cmxBc1N0cmluZy5zdGFydHNXaXRoKCcjJykgPyByb3V0ZXIuYXNQYXRoIDogcm91dGVyLnBhdGhuYW1lLCAnaHR0cDovL24nKTtcbiAgICB9IGNhdGNoIChfKSB7XG4gICAgICAgIC8vIGZhbGxiYWNrIHRvIC8gZm9yIGludmFsaWQgYXNQYXRoIHZhbHVlcyBlLmcuIC8vXG4gICAgICAgIGJhc2UgPSBuZXcgVVJMKCcvJywgJ2h0dHA6Ly9uJyk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZpbmFsVXJsID0gbmV3IFVSTCh1cmxBc1N0cmluZywgYmFzZSk7XG4gICAgICAgIGZpbmFsVXJsLnBhdGhuYW1lID0gKDAsIF9ub3JtYWxpemVUcmFpbGluZ1NsYXNoKS5ub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaChmaW5hbFVybC5wYXRobmFtZSk7XG4gICAgICAgIGxldCBpbnRlcnBvbGF0ZWRBcyA9ICcnO1xuICAgICAgICBpZiAoKDAsIF9pc0R5bmFtaWMpLmlzRHluYW1pY1JvdXRlKGZpbmFsVXJsLnBhdGhuYW1lKSAmJiBmaW5hbFVybC5zZWFyY2hQYXJhbXMgJiYgcmVzb2x2ZUFzKSB7XG4gICAgICAgICAgICBjb25zdCBxdWVyeSA9ICgwLCBfcXVlcnlzdHJpbmcpLnNlYXJjaFBhcmFtc1RvVXJsUXVlcnkoZmluYWxVcmwuc2VhcmNoUGFyYW1zKTtcbiAgICAgICAgICAgIGNvbnN0IHsgcmVzdWx0ICwgcGFyYW1zICB9ID0gaW50ZXJwb2xhdGVBcyhmaW5hbFVybC5wYXRobmFtZSwgZmluYWxVcmwucGF0aG5hbWUsIHF1ZXJ5KTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBpbnRlcnBvbGF0ZWRBcyA9ICgwLCBfZm9ybWF0VXJsKS5mb3JtYXRXaXRoVmFsaWRhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lOiByZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgIGhhc2g6IGZpbmFsVXJsLmhhc2gsXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiBvbWl0UGFybXNGcm9tUXVlcnkocXVlcnksIHBhcmFtcylcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBpZiB0aGUgb3JpZ2luIGRpZG4ndCBjaGFuZ2UsIGl0IG1lYW5zIHdlIHJlY2VpdmVkIGEgcmVsYXRpdmUgaHJlZlxuICAgICAgICBjb25zdCByZXNvbHZlZEhyZWYgPSBmaW5hbFVybC5vcmlnaW4gPT09IGJhc2Uub3JpZ2luID8gZmluYWxVcmwuaHJlZi5zbGljZShmaW5hbFVybC5vcmlnaW4ubGVuZ3RoKSA6IGZpbmFsVXJsLmhyZWY7XG4gICAgICAgIHJldHVybiByZXNvbHZlQXMgPyBbXG4gICAgICAgICAgICByZXNvbHZlZEhyZWYsXG4gICAgICAgICAgICBpbnRlcnBvbGF0ZWRBcyB8fCByZXNvbHZlZEhyZWZcbiAgICAgICAgXSA6IHJlc29sdmVkSHJlZjtcbiAgICB9IGNhdGNoIChfMSkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZUFzID8gW1xuICAgICAgICAgICAgdXJsQXNTdHJpbmdcbiAgICAgICAgXSA6IHVybEFzU3RyaW5nO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHN0cmlwT3JpZ2luKHVybCkge1xuICAgIGNvbnN0IG9yaWdpbiA9ICgwLCBfdXRpbHMpLmdldExvY2F0aW9uT3JpZ2luKCk7XG4gICAgcmV0dXJuIHVybC5zdGFydHNXaXRoKG9yaWdpbikgPyB1cmwuc3Vic3RyaW5nKG9yaWdpbi5sZW5ndGgpIDogdXJsO1xufVxuZnVuY3Rpb24gcHJlcGFyZVVybEFzKHJvdXRlciwgdXJsLCBhcykge1xuICAgIC8vIElmIHVybCBhbmQgYXMgcHJvdmlkZWQgYXMgYW4gb2JqZWN0IHJlcHJlc2VudGF0aW9uLFxuICAgIC8vIHdlJ2xsIGZvcm1hdCB0aGVtIGludG8gdGhlIHN0cmluZyB2ZXJzaW9uIGhlcmUuXG4gICAgbGV0IFtyZXNvbHZlZEhyZWYsIHJlc29sdmVkQXNdID0gcmVzb2x2ZUhyZWYocm91dGVyLCB1cmwsIHRydWUpO1xuICAgIGNvbnN0IG9yaWdpbiA9ICgwLCBfdXRpbHMpLmdldExvY2F0aW9uT3JpZ2luKCk7XG4gICAgY29uc3QgaHJlZkhhZE9yaWdpbiA9IHJlc29sdmVkSHJlZi5zdGFydHNXaXRoKG9yaWdpbik7XG4gICAgY29uc3QgYXNIYWRPcmlnaW4gPSByZXNvbHZlZEFzICYmIHJlc29sdmVkQXMuc3RhcnRzV2l0aChvcmlnaW4pO1xuICAgIHJlc29sdmVkSHJlZiA9IHN0cmlwT3JpZ2luKHJlc29sdmVkSHJlZik7XG4gICAgcmVzb2x2ZWRBcyA9IHJlc29sdmVkQXMgPyBzdHJpcE9yaWdpbihyZXNvbHZlZEFzKSA6IHJlc29sdmVkQXM7XG4gICAgY29uc3QgcHJlcGFyZWRVcmwgPSBocmVmSGFkT3JpZ2luID8gcmVzb2x2ZWRIcmVmIDogYWRkQmFzZVBhdGgocmVzb2x2ZWRIcmVmKTtcbiAgICBjb25zdCBwcmVwYXJlZEFzID0gYXMgPyBzdHJpcE9yaWdpbihyZXNvbHZlSHJlZihyb3V0ZXIsIGFzKSkgOiByZXNvbHZlZEFzIHx8IHJlc29sdmVkSHJlZjtcbiAgICByZXR1cm4ge1xuICAgICAgICB1cmw6IHByZXBhcmVkVXJsLFxuICAgICAgICBhczogYXNIYWRPcmlnaW4gPyBwcmVwYXJlZEFzIDogYWRkQmFzZVBhdGgocHJlcGFyZWRBcylcbiAgICB9O1xufVxuZnVuY3Rpb24gcmVzb2x2ZUR5bmFtaWNSb3V0ZShwYXRobmFtZSwgcGFnZXMpIHtcbiAgICBjb25zdCBjbGVhblBhdGhuYW1lID0gKDAsIF9ub3JtYWxpemVUcmFpbGluZ1NsYXNoKS5yZW1vdmVQYXRoVHJhaWxpbmdTbGFzaCgoMCwgX2Rlbm9ybWFsaXplUGFnZVBhdGgpLmRlbm9ybWFsaXplUGFnZVBhdGgocGF0aG5hbWUpKTtcbiAgICBpZiAoY2xlYW5QYXRobmFtZSA9PT0gJy80MDQnIHx8IGNsZWFuUGF0aG5hbWUgPT09ICcvX2Vycm9yJykge1xuICAgICAgICByZXR1cm4gcGF0aG5hbWU7XG4gICAgfVxuICAgIC8vIGhhbmRsZSByZXNvbHZpbmcgaHJlZiBmb3IgZHluYW1pYyByb3V0ZXNcbiAgICBpZiAoIXBhZ2VzLmluY2x1ZGVzKGNsZWFuUGF0aG5hbWUpKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBhcnJheS1jYWxsYmFjay1yZXR1cm5cbiAgICAgICAgcGFnZXMuc29tZSgocGFnZSk9PntcbiAgICAgICAgICAgIGlmICgoMCwgX2lzRHluYW1pYykuaXNEeW5hbWljUm91dGUocGFnZSkgJiYgKDAsIF9yb3V0ZVJlZ2V4KS5nZXRSb3V0ZVJlZ2V4KHBhZ2UpLnJlLnRlc3QoY2xlYW5QYXRobmFtZSkpIHtcbiAgICAgICAgICAgICAgICBwYXRobmFtZSA9IHBhZ2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gKDAsIF9ub3JtYWxpemVUcmFpbGluZ1NsYXNoKS5yZW1vdmVQYXRoVHJhaWxpbmdTbGFzaChwYXRobmFtZSk7XG59XG5jb25zdCBtYW51YWxTY3JvbGxSZXN0b3JhdGlvbiA9IHByb2Nlc3MuZW52Ll9fTkVYVF9TQ1JPTExfUkVTVE9SQVRJT04gJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgJ3Njcm9sbFJlc3RvcmF0aW9uJyBpbiB3aW5kb3cuaGlzdG9yeSAmJiAhIWZ1bmN0aW9uKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGxldCB2ID0gJ19fbmV4dCc7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZXF1ZW5jZXNcbiAgICAgICAgcmV0dXJuIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odiwgdiksIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0odiksIHRydWU7XG4gICAgfSBjYXRjaCAobikge31cbn0oKTtcbmNvbnN0IFNTR19EQVRBX05PVF9GT1VORCA9IFN5bWJvbCgnU1NHX0RBVEFfTk9UX0ZPVU5EJyk7XG5mdW5jdGlvbiBmZXRjaFJldHJ5KHVybCwgYXR0ZW1wdHMsIG9wdHMpIHtcbiAgICByZXR1cm4gZmV0Y2godXJsLCB7XG4gICAgICAgIC8vIENvb2tpZXMgYXJlIHJlcXVpcmVkIHRvIGJlIHByZXNlbnQgZm9yIE5leHQuanMnIFNTRyBcIlByZXZpZXcgTW9kZVwiLlxuICAgICAgICAvLyBDb29raWVzIG1heSBhbHNvIGJlIHJlcXVpcmVkIGZvciBgZ2V0U2VydmVyU2lkZVByb3BzYC5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gPiBgZmV0Y2hgIHdvbuKAmXQgc2VuZCBjb29raWVzLCB1bmxlc3MgeW91IHNldCB0aGUgY3JlZGVudGlhbHMgaW5pdFxuICAgICAgICAvLyA+IG9wdGlvbi5cbiAgICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0ZldGNoX0FQSS9Vc2luZ19GZXRjaFxuICAgICAgICAvL1xuICAgICAgICAvLyA+IEZvciBtYXhpbXVtIGJyb3dzZXIgY29tcGF0aWJpbGl0eSB3aGVuIGl0IGNvbWVzIHRvIHNlbmRpbmcgJlxuICAgICAgICAvLyA+IHJlY2VpdmluZyBjb29raWVzLCBhbHdheXMgc3VwcGx5IHRoZSBgY3JlZGVudGlhbHM6ICdzYW1lLW9yaWdpbidgXG4gICAgICAgIC8vID4gb3B0aW9uIGluc3RlYWQgb2YgcmVseWluZyBvbiB0aGUgZGVmYXVsdC5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dpdGh1Yi9mZXRjaCNjYXZlYXRzXG4gICAgICAgIGNyZWRlbnRpYWxzOiAnc2FtZS1vcmlnaW4nXG4gICAgfSkudGhlbigocmVzKT0+e1xuICAgICAgICBpZiAoIXJlcy5vaykge1xuICAgICAgICAgICAgaWYgKGF0dGVtcHRzID4gMSAmJiByZXMuc3RhdHVzID49IDUwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmZXRjaFJldHJ5KHVybCwgYXR0ZW1wdHMgLSAxLCBvcHRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZXMuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzLmpzb24oKS50aGVuKChkYXRhKT0+e1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5ub3RGb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RGb3VuZDogU1NHX0RBVEFfTk9UX0ZPVU5EXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGxvYWQgc3RhdGljIHByb3BzYCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBsb2FkIHN0YXRpYyBwcm9wc2ApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvcHRzLnRleHQgPyByZXMudGV4dCgpIDogcmVzLmpzb24oKTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGZldGNoTmV4dERhdGEoZGF0YUhyZWYsIGlzU2VydmVyUmVuZGVyLCB0ZXh0LCBpbmZsaWdodENhY2hlLCBwZXJzaXN0Q2FjaGUpIHtcbiAgICBjb25zdCB7IGhyZWY6IGNhY2hlS2V5ICB9ID0gbmV3IFVSTChkYXRhSHJlZiwgd2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICAgIGlmIChpbmZsaWdodENhY2hlW2NhY2hlS2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBpbmZsaWdodENhY2hlW2NhY2hlS2V5XTtcbiAgICB9XG4gICAgcmV0dXJuIGluZmxpZ2h0Q2FjaGVbY2FjaGVLZXldID0gZmV0Y2hSZXRyeShkYXRhSHJlZiwgaXNTZXJ2ZXJSZW5kZXIgPyAzIDogMSwge1xuICAgICAgICB0ZXh0XG4gICAgfSkuY2F0Y2goKGVycik9PntcbiAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgdHJpZ2dlciBhIHNlcnZlci1zaWRlIHRyYW5zaXRpb24gaWYgdGhpcyB3YXMgY2F1c2VkXG4gICAgICAgIC8vIG9uIGEgY2xpZW50LXNpZGUgdHJhbnNpdGlvbi4gT3RoZXJ3aXNlLCB3ZSdkIGdldCBpbnRvIGFuIGluZmluaXRlXG4gICAgICAgIC8vIGxvb3AuXG4gICAgICAgIGlmICghaXNTZXJ2ZXJSZW5kZXIpIHtcbiAgICAgICAgICAgICgwLCBfcm91dGVMb2FkZXIpLm1hcmtBc3NldEVycm9yKGVycik7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyO1xuICAgIH0pLnRoZW4oKGRhdGEpPT57XG4gICAgICAgIGlmICghcGVyc2lzdENhY2hlIHx8IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBpbmZsaWdodENhY2hlW2NhY2hlS2V5XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9KS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICBkZWxldGUgaW5mbGlnaHRDYWNoZVtjYWNoZUtleV07XG4gICAgICAgIHRocm93IGVycjtcbiAgICB9KTtcbn1cbmNsYXNzIFJvdXRlciB7XG4gICAgY29uc3RydWN0b3IocGF0aG5hbWUxLCBxdWVyeTEsIGFzMSwgeyBpbml0aWFsUHJvcHMgLCBwYWdlTG9hZGVyICwgQXBwICwgd3JhcEFwcCAsIENvbXBvbmVudCAsIGVyciAsIHN1YnNjcmlwdGlvbiAsIGlzRmFsbGJhY2sgLCBsb2NhbGUgLCBsb2NhbGVzICwgZGVmYXVsdExvY2FsZSAsIGRvbWFpbkxvY2FsZXMgLCBpc1ByZXZpZXcgLCBpc1JzYyAgfSl7XG4gICAgICAgIC8vIFN0YXRpYyBEYXRhIENhY2hlXG4gICAgICAgIHRoaXMuc2RjID0ge307XG4gICAgICAgIC8vIEluLWZsaWdodCBTZXJ2ZXIgRGF0YSBSZXF1ZXN0cywgZm9yIGRlZHVwaW5nXG4gICAgICAgIHRoaXMuc2RyID0ge307XG4gICAgICAgIC8vIEluLWZsaWdodCBtaWRkbGV3YXJlIHByZWZsaWdodCByZXF1ZXN0c1xuICAgICAgICB0aGlzLnNkZSA9IHt9O1xuICAgICAgICB0aGlzLl9pZHggPSAwO1xuICAgICAgICB0aGlzLm9uUG9wU3RhdGUgPSAoZSk9PntcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gZS5zdGF0ZTtcbiAgICAgICAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgICAgICAgICAvLyBXZSBnZXQgc3RhdGUgYXMgdW5kZWZpbmVkIGZvciB0d28gcmVhc29ucy5cbiAgICAgICAgICAgICAgICAvLyAgMS4gV2l0aCBvbGRlciBzYWZhcmkgKDwgOCkgYW5kIG9sZGVyIGNocm9tZSAoPCAzNClcbiAgICAgICAgICAgICAgICAvLyAgMi4gV2hlbiB0aGUgVVJMIGNoYW5nZWQgd2l0aCAjXG4gICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAvLyBJbiB0aGUgYm90aCBjYXNlcywgd2UgZG9uJ3QgbmVlZCB0byBwcm9jZWVkIGFuZCBjaGFuZ2UgdGhlIHJvdXRlLlxuICAgICAgICAgICAgICAgIC8vIChhcyBpdCdzIGFscmVhZHkgY2hhbmdlZClcbiAgICAgICAgICAgICAgICAvLyBCdXQgd2UgY2FuIHNpbXBseSByZXBsYWNlIHRoZSBzdGF0ZSB3aXRoIHRoZSBuZXcgY2hhbmdlcy5cbiAgICAgICAgICAgICAgICAvLyBBY3R1YWxseSwgZm9yICgxKSB3ZSBkb24ndCBuZWVkIHRvIG5vdGhpbmcuIEJ1dCBpdCdzIGhhcmQgdG8gZGV0ZWN0IHRoYXQgZXZlbnQuXG4gICAgICAgICAgICAgICAgLy8gU28sIGRvaW5nIHRoZSBmb2xsb3dpbmcgZm9yICgxKSBkb2VzIG5vIGhhcm0uXG4gICAgICAgICAgICAgICAgY29uc3QgeyBwYXRobmFtZSAsIHF1ZXJ5ICB9ID0gdGhpcztcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVN0YXRlKCdyZXBsYWNlU3RhdGUnLCAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICBwYXRobmFtZTogYWRkQmFzZVBhdGgocGF0aG5hbWUpLFxuICAgICAgICAgICAgICAgICAgICBxdWVyeVxuICAgICAgICAgICAgICAgIH0pLCAoMCwgX3V0aWxzKS5nZXRVUkwoKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFzdGF0ZS5fX04pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgZm9yY2VkU2Nyb2xsO1xuICAgICAgICAgICAgY29uc3QgeyB1cmwgLCBhcyAsIG9wdGlvbnMgLCBpZHggIH0gPSBzdGF0ZTtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfU0NST0xMX1JFU1RPUkFUSU9OKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1hbnVhbFNjcm9sbFJlc3RvcmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9pZHggIT09IGlkeCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU25hcHNob3QgY3VycmVudCBzY3JvbGwgcG9zaXRpb246XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ19fbmV4dF9zY3JvbGxfJyArIHRoaXMuX2lkeCwgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBzZWxmLnBhZ2VYT2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBzZWxmLnBhZ2VZT2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAge31cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc3RvcmUgb2xkIHNjcm9sbCBwb3NpdGlvbjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ19fbmV4dF9zY3JvbGxfJyArIGlkeCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2VkU2Nyb2xsID0gSlNPTi5wYXJzZSh2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZWRTY3JvbGwgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5faWR4ID0gaWR4O1xuICAgICAgICAgICAgY29uc3QgeyBwYXRobmFtZSAgfSA9ICgwLCBfcGFyc2VSZWxhdGl2ZVVybCkucGFyc2VSZWxhdGl2ZVVybCh1cmwpO1xuICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IHJlLXJlbmRlciBvbiBpbml0aWFsIGxvYWQsXG4gICAgICAgICAgICAvLyBjYW4gYmUgY2F1c2VkIGJ5IG5hdmlnYXRpbmcgYmFjayBmcm9tIGFuIGV4dGVybmFsIHNpdGVcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU3NyICYmIGFzID09PSBhZGRCYXNlUGF0aCh0aGlzLmFzUGF0aCkgJiYgcGF0aG5hbWUgPT09IGFkZEJhc2VQYXRoKHRoaXMucGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSWYgdGhlIGRvd25zdHJlYW0gYXBwbGljYXRpb24gcmV0dXJucyBmYWxzeSwgcmV0dXJuLlxuICAgICAgICAgICAgLy8gVGhleSB3aWxsIHRoZW4gYmUgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIHRoZSBldmVudC5cbiAgICAgICAgICAgIGlmICh0aGlzLl9icHMgJiYgIXRoaXMuX2JwcyhzdGF0ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNoYW5nZSgncmVwbGFjZVN0YXRlJywgdXJsLCBhcywgT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucywge1xuICAgICAgICAgICAgICAgIHNoYWxsb3c6IG9wdGlvbnMuc2hhbGxvdyAmJiB0aGlzLl9zaGFsbG93LFxuICAgICAgICAgICAgICAgIGxvY2FsZTogb3B0aW9ucy5sb2NhbGUgfHwgdGhpcy5kZWZhdWx0TG9jYWxlXG4gICAgICAgICAgICB9KSwgZm9yY2VkU2Nyb2xsKTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gcmVwcmVzZW50cyB0aGUgY3VycmVudCBjb21wb25lbnQga2V5XG4gICAgICAgIGNvbnN0IHJvdXRlID0gKDAsIF9ub3JtYWxpemVUcmFpbGluZ1NsYXNoKS5yZW1vdmVQYXRoVHJhaWxpbmdTbGFzaChwYXRobmFtZTEpO1xuICAgICAgICAvLyBzZXQgdXAgdGhlIGNvbXBvbmVudCBjYWNoZSAoYnkgcm91dGUga2V5cylcbiAgICAgICAgdGhpcy5jb21wb25lbnRzID0ge307XG4gICAgICAgIC8vIFdlIHNob3VsZCBub3Qga2VlcCB0aGUgY2FjaGUsIGlmIHRoZXJlJ3MgYW4gZXJyb3JcbiAgICAgICAgLy8gT3RoZXJ3aXNlLCB0aGlzIGNhdXNlIGlzc3VlcyB3aGVuIHdoZW4gZ29pbmcgYmFjayBhbmRcbiAgICAgICAgLy8gY29tZSBhZ2FpbiB0byB0aGUgZXJyb3JlZCBwYWdlLlxuICAgICAgICBpZiAocGF0aG5hbWUxICE9PSAnL19lcnJvcicpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50c1tyb3V0ZV0gPSB7XG4gICAgICAgICAgICAgICAgQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGluaXRpYWw6IHRydWUsXG4gICAgICAgICAgICAgICAgcHJvcHM6IGluaXRpYWxQcm9wcyxcbiAgICAgICAgICAgICAgICBlcnIsXG4gICAgICAgICAgICAgICAgX19OX1NTRzogaW5pdGlhbFByb3BzICYmIGluaXRpYWxQcm9wcy5fX05fU1NHLFxuICAgICAgICAgICAgICAgIF9fTl9TU1A6IGluaXRpYWxQcm9wcyAmJiBpbml0aWFsUHJvcHMuX19OX1NTUCxcbiAgICAgICAgICAgICAgICBfX05fUlNDOiAhIWlzUnNjXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29tcG9uZW50c1snL19hcHAnXSA9IHtcbiAgICAgICAgICAgIENvbXBvbmVudDogQXBwLFxuICAgICAgICAgICAgc3R5bGVTaGVldHM6IFtdXG4gICAgICAgIH07XG4gICAgICAgIC8vIEJhY2t3YXJkcyBjb21wYXQgZm9yIFJvdXRlci5yb3V0ZXIuZXZlbnRzXG4gICAgICAgIC8vIFRPRE86IFNob3VsZCBiZSByZW1vdmUgdGhlIGZvbGxvd2luZyBtYWpvciB2ZXJzaW9uIGFzIGl0IHdhcyBuZXZlciBkb2N1bWVudGVkXG4gICAgICAgIHRoaXMuZXZlbnRzID0gUm91dGVyLmV2ZW50cztcbiAgICAgICAgdGhpcy5wYWdlTG9hZGVyID0gcGFnZUxvYWRlcjtcbiAgICAgICAgLy8gaWYgYXV0byBwcmVyZW5kZXJlZCBhbmQgZHluYW1pYyByb3V0ZSB3YWl0IHRvIHVwZGF0ZSBhc1BhdGhcbiAgICAgICAgLy8gdW50aWwgYWZ0ZXIgbW91bnQgdG8gcHJldmVudCBoeWRyYXRpb24gbWlzbWF0Y2hcbiAgICAgICAgY29uc3QgYXV0b0V4cG9ydER5bmFtaWMgPSAoMCwgX2lzRHluYW1pYykuaXNEeW5hbWljUm91dGUocGF0aG5hbWUxKSAmJiBzZWxmLl9fTkVYVF9EQVRBX18uYXV0b0V4cG9ydDtcbiAgICAgICAgdGhpcy5iYXNlUGF0aCA9IGJhc2VQYXRoO1xuICAgICAgICB0aGlzLnN1YiA9IHN1YnNjcmlwdGlvbjtcbiAgICAgICAgdGhpcy5jbGMgPSBudWxsO1xuICAgICAgICB0aGlzLl93cmFwQXBwID0gd3JhcEFwcDtcbiAgICAgICAgLy8gbWFrZSBzdXJlIHRvIGlnbm9yZSBleHRyYSBwb3BTdGF0ZSBpbiBzYWZhcmkgb24gbmF2aWdhdGluZ1xuICAgICAgICAvLyBiYWNrIGZyb20gZXh0ZXJuYWwgc2l0ZVxuICAgICAgICB0aGlzLmlzU3NyID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pc0xvY2FsZURvbWFpbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzUmVhZHkgPSAhIShzZWxmLl9fTkVYVF9EQVRBX18uZ3NzcCB8fCBzZWxmLl9fTkVYVF9EQVRBX18uZ2lwIHx8IHNlbGYuX19ORVhUX0RBVEFfXy5hcHBHaXAgJiYgIXNlbGYuX19ORVhUX0RBVEFfXy5nc3AgfHwgIWF1dG9FeHBvcnREeW5hbWljICYmICFzZWxmLmxvY2F0aW9uLnNlYXJjaCAmJiAhcHJvY2Vzcy5lbnYuX19ORVhUX0hBU19SRVdSSVRFUyk7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUKSB7XG4gICAgICAgICAgICB0aGlzLmxvY2FsZXMgPSBsb2NhbGVzO1xuICAgICAgICAgICAgdGhpcy5kZWZhdWx0TG9jYWxlID0gZGVmYXVsdExvY2FsZTtcbiAgICAgICAgICAgIHRoaXMuZG9tYWluTG9jYWxlcyA9IGRvbWFpbkxvY2FsZXM7XG4gICAgICAgICAgICB0aGlzLmlzTG9jYWxlRG9tYWluID0gISFkZXRlY3REb21haW5Mb2NhbGUoZG9tYWluTG9jYWxlcywgc2VsZi5sb2NhdGlvbi5ob3N0bmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIHJvdXRlLFxuICAgICAgICAgICAgcGF0aG5hbWU6IHBhdGhuYW1lMSxcbiAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeTEsXG4gICAgICAgICAgICBhc1BhdGg6IGF1dG9FeHBvcnREeW5hbWljID8gcGF0aG5hbWUxIDogYXMxLFxuICAgICAgICAgICAgaXNQcmV2aWV3OiAhIWlzUHJldmlldyxcbiAgICAgICAgICAgIGxvY2FsZTogcHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCA/IGxvY2FsZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGlzRmFsbGJhY2tcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAvLyBtYWtlIHN1cmUgXCJhc1wiIGRvZXNuJ3Qgc3RhcnQgd2l0aCBkb3VibGUgc2xhc2hlcyBvciBlbHNlIGl0IGNhblxuICAgICAgICAgICAgLy8gdGhyb3cgYW4gZXJyb3IgYXMgaXQncyBjb25zaWRlcmVkIGludmFsaWRcbiAgICAgICAgICAgIGlmICghYXMxLnN0YXJ0c1dpdGgoJy8vJykpIHtcbiAgICAgICAgICAgICAgICAvLyBpbiBvcmRlciBmb3IgYGUuc3RhdGVgIHRvIHdvcmsgb24gdGhlIGBvbnBvcHN0YXRlYCBldmVudFxuICAgICAgICAgICAgICAgIC8vIHdlIGhhdmUgdG8gcmVnaXN0ZXIgdGhlIGluaXRpYWwgcm91dGUgdXBvbiBpbml0aWFsaXphdGlvblxuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5fc2hvdWxkUmVzb2x2ZUhyZWYgPSBhczEgIT09IHBhdGhuYW1lMTtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVN0YXRlKCdyZXBsYWNlU3RhdGUnLCAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICBwYXRobmFtZTogYWRkQmFzZVBhdGgocGF0aG5hbWUxKSxcbiAgICAgICAgICAgICAgICAgICAgcXVlcnk6IHF1ZXJ5MVxuICAgICAgICAgICAgICAgIH0pLCAoMCwgX3V0aWxzKS5nZXRVUkwoKSwgb3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9wc3RhdGUnLCB0aGlzLm9uUG9wU3RhdGUpO1xuICAgICAgICAgICAgLy8gZW5hYmxlIGN1c3RvbSBzY3JvbGwgcmVzdG9yYXRpb24gaGFuZGxpbmcgd2hlbiBhdmFpbGFibGVcbiAgICAgICAgICAgIC8vIG90aGVyd2lzZSBmYWxsYmFjayB0byBicm93c2VyJ3MgZGVmYXVsdCBoYW5kbGluZ1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9TQ1JPTExfUkVTVE9SQVRJT04pIHtcbiAgICAgICAgICAgICAgICBpZiAobWFudWFsU2Nyb2xsUmVzdG9yYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93Lmhpc3Rvcnkuc2Nyb2xsUmVzdG9yYXRpb24gPSAnbWFudWFsJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVsb2FkKCkge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgfVxuICAgIC8qKlxuICAgKiBHbyBiYWNrIGluIGhpc3RvcnlcbiAgICovIGJhY2soKSB7XG4gICAgICAgIHdpbmRvdy5oaXN0b3J5LmJhY2soKTtcbiAgICB9XG4gICAgLyoqXG4gICAqIFBlcmZvcm1zIGEgYHB1c2hTdGF0ZWAgd2l0aCBhcmd1bWVudHNcbiAgICogQHBhcmFtIHVybCBvZiB0aGUgcm91dGVcbiAgICogQHBhcmFtIGFzIG1hc2tzIGB1cmxgIGZvciB0aGUgYnJvd3NlclxuICAgKiBAcGFyYW0gb3B0aW9ucyBvYmplY3QgeW91IGNhbiBkZWZpbmUgYHNoYWxsb3dgIGFuZCBvdGhlciBvcHRpb25zXG4gICAqLyBwdXNoKHVybCwgYXMsIG9wdGlvbnMgPSB7fSkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1NDUk9MTF9SRVNUT1JBVElPTikge1xuICAgICAgICAgICAgLy8gVE9ETzogcmVtb3ZlIGluIHRoZSBmdXR1cmUgd2hlbiB3ZSB1cGRhdGUgaGlzdG9yeSBiZWZvcmUgcm91dGUgY2hhbmdlXG4gICAgICAgICAgICAvLyBpcyBjb21wbGV0ZSwgYXMgdGhlIHBvcHN0YXRlIGV2ZW50IHNob3VsZCBoYW5kbGUgdGhpcyBjYXB0dXJlLlxuICAgICAgICAgICAgaWYgKG1hbnVhbFNjcm9sbFJlc3RvcmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU25hcHNob3Qgc2Nyb2xsIHBvc2l0aW9uIHJpZ2h0IGJlZm9yZSBuYXZpZ2F0aW5nIHRvIGEgbmV3IHBhZ2U6XG4gICAgICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ19fbmV4dF9zY3JvbGxfJyArIHRoaXMuX2lkeCwgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgeDogc2VsZi5wYWdlWE9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHk6IHNlbGYucGFnZVlPZmZzZXRcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggIHt9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgKHsgdXJsICwgYXMgIH0gPSBwcmVwYXJlVXJsQXModGhpcywgdXJsLCBhcykpO1xuICAgICAgICByZXR1cm4gdGhpcy5jaGFuZ2UoJ3B1c2hTdGF0ZScsIHVybCwgYXMsIG9wdGlvbnMpO1xuICAgIH1cbiAgICAvKipcbiAgICogUGVyZm9ybXMgYSBgcmVwbGFjZVN0YXRlYCB3aXRoIGFyZ3VtZW50c1xuICAgKiBAcGFyYW0gdXJsIG9mIHRoZSByb3V0ZVxuICAgKiBAcGFyYW0gYXMgbWFza3MgYHVybGAgZm9yIHRoZSBicm93c2VyXG4gICAqIEBwYXJhbSBvcHRpb25zIG9iamVjdCB5b3UgY2FuIGRlZmluZSBgc2hhbGxvd2AgYW5kIG90aGVyIG9wdGlvbnNcbiAgICovIHJlcGxhY2UodXJsLCBhcywgb3B0aW9ucyA9IHt9KSB7XG4gICAgICAgICh7IHVybCAsIGFzICB9ID0gcHJlcGFyZVVybEFzKHRoaXMsIHVybCwgYXMpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhbmdlKCdyZXBsYWNlU3RhdGUnLCB1cmwsIGFzLCBvcHRpb25zKTtcbiAgICB9XG4gICAgYXN5bmMgY2hhbmdlKG1ldGhvZCwgdXJsLCBhcywgb3B0aW9ucywgZm9yY2VkU2Nyb2xsKSB7XG4gICAgICAgIGlmICghaXNMb2NhbFVSTCh1cmwpKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzaG91bGRSZXNvbHZlSHJlZiA9IG9wdGlvbnMuX2ggfHwgb3B0aW9ucy5fc2hvdWxkUmVzb2x2ZUhyZWYgfHwgcGF0aE5vUXVlcnlIYXNoKHVybCkgPT09IHBhdGhOb1F1ZXJ5SGFzaChhcyk7XG4gICAgICAgIGNvbnN0IG5leHRTdGF0ZSA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuc3RhdGVcbiAgICAgICAgfTtcbiAgICAgICAgLy8gZm9yIHN0YXRpYyBwYWdlcyB3aXRoIHF1ZXJ5IHBhcmFtcyBpbiB0aGUgVVJMIHdlIGRlbGF5XG4gICAgICAgIC8vIG1hcmtpbmcgdGhlIHJvdXRlciByZWFkeSB1bnRpbCBhZnRlciB0aGUgcXVlcnkgaXMgdXBkYXRlZFxuICAgICAgICBpZiAob3B0aW9ucy5faCkge1xuICAgICAgICAgICAgdGhpcy5pc1JlYWR5ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcmV2TG9jYWxlID0gbmV4dFN0YXRlLmxvY2FsZTtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9JMThOX1NVUFBPUlQpIHtcbiAgICAgICAgICAgIG5leHRTdGF0ZS5sb2NhbGUgPSBvcHRpb25zLmxvY2FsZSA9PT0gZmFsc2UgPyB0aGlzLmRlZmF1bHRMb2NhbGUgOiBvcHRpb25zLmxvY2FsZSB8fCBuZXh0U3RhdGUubG9jYWxlO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmxvY2FsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLmxvY2FsZSA9IG5leHRTdGF0ZS5sb2NhbGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwYXJzZWRBcyA9ICgwLCBfcGFyc2VSZWxhdGl2ZVVybCkucGFyc2VSZWxhdGl2ZVVybChoYXNCYXNlUGF0aChhcykgPyBkZWxCYXNlUGF0aChhcykgOiBhcyk7XG4gICAgICAgICAgICBjb25zdCBsb2NhbGVQYXRoUmVzdWx0ID0gKDAsIF9ub3JtYWxpemVMb2NhbGVQYXRoKS5ub3JtYWxpemVMb2NhbGVQYXRoKHBhcnNlZEFzLnBhdGhuYW1lLCB0aGlzLmxvY2FsZXMpO1xuICAgICAgICAgICAgaWYgKGxvY2FsZVBhdGhSZXN1bHQuZGV0ZWN0ZWRMb2NhbGUpIHtcbiAgICAgICAgICAgICAgICBuZXh0U3RhdGUubG9jYWxlID0gbG9jYWxlUGF0aFJlc3VsdC5kZXRlY3RlZExvY2FsZTtcbiAgICAgICAgICAgICAgICBwYXJzZWRBcy5wYXRobmFtZSA9IGFkZEJhc2VQYXRoKHBhcnNlZEFzLnBhdGhuYW1lKTtcbiAgICAgICAgICAgICAgICBhcyA9ICgwLCBfZm9ybWF0VXJsKS5mb3JtYXRXaXRoVmFsaWRhdGlvbihwYXJzZWRBcyk7XG4gICAgICAgICAgICAgICAgdXJsID0gYWRkQmFzZVBhdGgoKDAsIF9ub3JtYWxpemVMb2NhbGVQYXRoKS5ub3JtYWxpemVMb2NhbGVQYXRoKGhhc0Jhc2VQYXRoKHVybCkgPyBkZWxCYXNlUGF0aCh1cmwpIDogdXJsLCB0aGlzLmxvY2FsZXMpLnBhdGhuYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBkaWROYXZpZ2F0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgLy8gd2UgbmVlZCB0byB3cmFwIHRoaXMgaW4gdGhlIGVudiBjaGVjayBhZ2FpbiBzaW5jZSByZWdlbmVyYXRvciBydW50aW1lXG4gICAgICAgICAgICAvLyBtb3ZlcyB0aGlzIG9uIGl0cyBvd24gZHVlIHRvIHRoZSByZXR1cm5cbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlZjtcbiAgICAgICAgICAgICAgICAvLyBpZiB0aGUgbG9jYWxlIGlzbid0IGNvbmZpZ3VyZWQgaGFyZCBuYXZpZ2F0ZSB0byBzaG93IDQwNCBwYWdlXG4gICAgICAgICAgICAgICAgaWYgKCEoKHJlZiA9IHRoaXMubG9jYWxlcykgPT09IG51bGwgfHwgcmVmID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZWYuaW5jbHVkZXMobmV4dFN0YXRlLmxvY2FsZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZEFzLnBhdGhuYW1lID0gYWRkTG9jYWxlKHBhcnNlZEFzLnBhdGhuYW1lLCBuZXh0U3RhdGUubG9jYWxlKTtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24ocGFyc2VkQXMpO1xuICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHdhcyBwcmV2aW91c2x5IGEgcmV0dXJuIGJ1dCB3YXMgcmVtb3ZlZCBpbiBmYXZvclxuICAgICAgICAgICAgICAgICAgICAvLyBvZiBiZXR0ZXIgZGVhZCBjb2RlIGVsaW1pbmF0aW9uIHdpdGggcmVnZW5lcmF0b3IgcnVudGltZVxuICAgICAgICAgICAgICAgICAgICBkaWROYXZpZ2F0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGV0ZWN0ZWREb21haW4gPSBkZXRlY3REb21haW5Mb2NhbGUodGhpcy5kb21haW5Mb2NhbGVzLCB1bmRlZmluZWQsIG5leHRTdGF0ZS5sb2NhbGUpO1xuICAgICAgICAgICAgLy8gd2UgbmVlZCB0byB3cmFwIHRoaXMgaW4gdGhlIGVudiBjaGVjayBhZ2FpbiBzaW5jZSByZWdlbmVyYXRvciBydW50aW1lXG4gICAgICAgICAgICAvLyBtb3ZlcyB0aGlzIG9uIGl0cyBvd24gZHVlIHRvIHRoZSByZXR1cm5cbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUKSB7XG4gICAgICAgICAgICAgICAgLy8gaWYgd2UgYXJlIG5hdmlnYXRpbmcgdG8gYSBkb21haW4gbG9jYWxlIGVuc3VyZSB3ZSByZWRpcmVjdCB0byB0aGVcbiAgICAgICAgICAgICAgICAvLyBjb3JyZWN0IGRvbWFpblxuICAgICAgICAgICAgICAgIGlmICghZGlkTmF2aWdhdGUgJiYgZGV0ZWN0ZWREb21haW4gJiYgdGhpcy5pc0xvY2FsZURvbWFpbiAmJiBzZWxmLmxvY2F0aW9uLmhvc3RuYW1lICE9PSBkZXRlY3RlZERvbWFpbi5kb21haW4pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXNOb0Jhc2VQYXRoID0gZGVsQmFzZVBhdGgoYXMpO1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGBodHRwJHtkZXRlY3RlZERvbWFpbi5odHRwID8gJycgOiAncyd9Oi8vJHtkZXRlY3RlZERvbWFpbi5kb21haW59JHthZGRCYXNlUGF0aChgJHtuZXh0U3RhdGUubG9jYWxlID09PSBkZXRlY3RlZERvbWFpbi5kZWZhdWx0TG9jYWxlID8gJycgOiBgLyR7bmV4dFN0YXRlLmxvY2FsZX1gfSR7YXNOb0Jhc2VQYXRoID09PSAnLycgPyAnJyA6IGFzTm9CYXNlUGF0aH1gIHx8ICcvJyl9YDtcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyB3YXMgcHJldmlvdXNseSBhIHJldHVybiBidXQgd2FzIHJlbW92ZWQgaW4gZmF2b3JcbiAgICAgICAgICAgICAgICAgICAgLy8gb2YgYmV0dGVyIGRlYWQgY29kZSBlbGltaW5hdGlvbiB3aXRoIHJlZ2VuZXJhdG9yIHJ1bnRpbWVcbiAgICAgICAgICAgICAgICAgICAgZGlkTmF2aWdhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkaWROYXZpZ2F0ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgoKT0+e30pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghb3B0aW9ucy5faCkge1xuICAgICAgICAgICAgdGhpcy5pc1NzciA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIG1hcmtpbmcgcm91dGUgY2hhbmdlcyBhcyBhIG5hdmlnYXRpb24gc3RhcnQgZW50cnlcbiAgICAgICAgaWYgKF91dGlscy5TVCkge1xuICAgICAgICAgICAgcGVyZm9ybWFuY2UubWFyaygncm91dGVDaGFuZ2UnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IHNoYWxsb3cgPWZhbHNlICwgc2Nyb2xsID10cnVlICB9ID0gb3B0aW9ucztcbiAgICAgICAgY29uc3Qgcm91dGVQcm9wcyA9IHtcbiAgICAgICAgICAgIHNoYWxsb3dcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMuX2luRmxpZ2h0Um91dGUpIHtcbiAgICAgICAgICAgIHRoaXMuYWJvcnRDb21wb25lbnRMb2FkKHRoaXMuX2luRmxpZ2h0Um91dGUsIHJvdXRlUHJvcHMpO1xuICAgICAgICB9XG4gICAgICAgIGFzID0gYWRkQmFzZVBhdGgoYWRkTG9jYWxlKGhhc0Jhc2VQYXRoKGFzKSA/IGRlbEJhc2VQYXRoKGFzKSA6IGFzLCBvcHRpb25zLmxvY2FsZSwgdGhpcy5kZWZhdWx0TG9jYWxlKSk7XG4gICAgICAgIGNvbnN0IGNsZWFuZWRBcyA9IGRlbExvY2FsZShoYXNCYXNlUGF0aChhcykgPyBkZWxCYXNlUGF0aChhcykgOiBhcywgbmV4dFN0YXRlLmxvY2FsZSk7XG4gICAgICAgIHRoaXMuX2luRmxpZ2h0Um91dGUgPSBhcztcbiAgICAgICAgbGV0IGxvY2FsZUNoYW5nZSA9IHByZXZMb2NhbGUgIT09IG5leHRTdGF0ZS5sb2NhbGU7XG4gICAgICAgIC8vIElmIHRoZSB1cmwgY2hhbmdlIGlzIG9ubHkgcmVsYXRlZCB0byBhIGhhc2ggY2hhbmdlXG4gICAgICAgIC8vIFdlIHNob3VsZCBub3QgcHJvY2VlZC4gV2Ugc2hvdWxkIG9ubHkgY2hhbmdlIHRoZSBzdGF0ZS5cbiAgICAgICAgLy8gV0FSTklORzogYF9oYCBpcyBhbiBpbnRlcm5hbCBvcHRpb24gZm9yIGhhbmRpbmcgTmV4dC5qcyBjbGllbnQtc2lkZVxuICAgICAgICAvLyBoeWRyYXRpb24uIFlvdXIgYXBwIHNob3VsZCBfbmV2ZXJfIHVzZSB0aGlzIHByb3BlcnR5LiBJdCBtYXkgY2hhbmdlIGF0XG4gICAgICAgIC8vIGFueSB0aW1lIHdpdGhvdXQgbm90aWNlLlxuICAgICAgICBpZiAoIW9wdGlvbnMuX2ggJiYgdGhpcy5vbmx5QUhhc2hDaGFuZ2UoY2xlYW5lZEFzKSAmJiAhbG9jYWxlQ2hhbmdlKSB7XG4gICAgICAgICAgICBuZXh0U3RhdGUuYXNQYXRoID0gY2xlYW5lZEFzO1xuICAgICAgICAgICAgUm91dGVyLmV2ZW50cy5lbWl0KCdoYXNoQ2hhbmdlU3RhcnQnLCBhcywgcm91dGVQcm9wcyk7XG4gICAgICAgICAgICAvLyBUT0RPOiBkbyB3ZSBuZWVkIHRoZSByZXNvbHZlZCBocmVmIHdoZW4gb25seSBhIGhhc2ggY2hhbmdlP1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VTdGF0ZShtZXRob2QsIHVybCwgYXMsIHtcbiAgICAgICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgICAgIHNjcm9sbDogZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHNjcm9sbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9IYXNoKGNsZWFuZWRBcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldChuZXh0U3RhdGUsIHRoaXMuY29tcG9uZW50c1tuZXh0U3RhdGUucm91dGVdLCBudWxsKTtcbiAgICAgICAgICAgIFJvdXRlci5ldmVudHMuZW1pdCgnaGFzaENoYW5nZUNvbXBsZXRlJywgYXMsIHJvdXRlUHJvcHMpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHBhcnNlZCA9ICgwLCBfcGFyc2VSZWxhdGl2ZVVybCkucGFyc2VSZWxhdGl2ZVVybCh1cmwpO1xuICAgICAgICBsZXQgeyBwYXRobmFtZSAsIHF1ZXJ5ICB9ID0gcGFyc2VkO1xuICAgICAgICAvLyBUaGUgYnVpbGQgbWFuaWZlc3QgbmVlZHMgdG8gYmUgbG9hZGVkIGJlZm9yZSBhdXRvLXN0YXRpYyBkeW5hbWljIHBhZ2VzXG4gICAgICAgIC8vIGdldCB0aGVpciBxdWVyeSBwYXJhbWV0ZXJzIHRvIGFsbG93IGVuc3VyaW5nIHRoZXkgY2FuIGJlIHBhcnNlZCBwcm9wZXJseVxuICAgICAgICAvLyB3aGVuIHJld3JpdHRlbiB0b1xuICAgICAgICBsZXQgcGFnZXMsIHJld3JpdGVzO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgW3BhZ2VzLCB7IF9fcmV3cml0ZXM6IHJld3JpdGVzICB9XSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2VMb2FkZXIuZ2V0UGFnZUxpc3QoKSxcbiAgICAgICAgICAgICAgICAoMCwgX3JvdXRlTG9hZGVyKS5nZXRDbGllbnRCdWlsZE1hbmlmZXN0KCksXG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlTG9hZGVyLmdldE1pZGRsZXdhcmVMaXN0KCksIFxuICAgICAgICAgICAgXSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgLy8gSWYgd2UgZmFpbCB0byByZXNvbHZlIHRoZSBwYWdlIGxpc3Qgb3IgY2xpZW50LWJ1aWxkIG1hbmlmZXN0LCB3ZSBtdXN0XG4gICAgICAgICAgICAvLyBkbyBhIHNlcnZlci1zaWRlIHRyYW5zaXRpb246XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGFzO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIGFza2VkIHRvIGNoYW5nZSB0aGUgY3VycmVudCBVUkwgd2Ugc2hvdWxkIHJlbG9hZCB0aGUgY3VycmVudCBwYWdlXG4gICAgICAgIC8vIChub3QgbG9jYXRpb24ucmVsb2FkKCkgYnV0IHJlbG9hZCBnZXRJbml0aWFsUHJvcHMgYW5kIG90aGVyIE5leHQuanMgc3R1ZmZzKVxuICAgICAgICAvLyBXZSBhbHNvIG5lZWQgdG8gc2V0IHRoZSBtZXRob2QgPSByZXBsYWNlU3RhdGUgYWx3YXlzXG4gICAgICAgIC8vIGFzIHRoaXMgc2hvdWxkIG5vdCBnbyBpbnRvIHRoZSBoaXN0b3J5IChUaGF0J3MgaG93IGJyb3dzZXJzIHdvcmspXG4gICAgICAgIC8vIFdlIHNob3VsZCBjb21wYXJlIHRoZSBuZXcgYXNQYXRoIHRvIHRoZSBjdXJyZW50IGFzUGF0aCwgbm90IHRoZSB1cmxcbiAgICAgICAgaWYgKCF0aGlzLnVybElzTmV3KGNsZWFuZWRBcykgJiYgIWxvY2FsZUNoYW5nZSkge1xuICAgICAgICAgICAgbWV0aG9kID0gJ3JlcGxhY2VTdGF0ZSc7XG4gICAgICAgIH1cbiAgICAgICAgLy8gd2UgbmVlZCB0byByZXNvbHZlIHRoZSBhcyB2YWx1ZSB1c2luZyByZXdyaXRlcyBmb3IgZHluYW1pYyBTU0dcbiAgICAgICAgLy8gcGFnZXMgdG8gYWxsb3cgYnVpbGRpbmcgdGhlIGRhdGEgVVJMIGNvcnJlY3RseVxuICAgICAgICBsZXQgcmVzb2x2ZWRBcyA9IGFzO1xuICAgICAgICAvLyB1cmwgYW5kIGFzIHNob3VsZCBhbHdheXMgYmUgcHJlZml4ZWQgd2l0aCBiYXNlUGF0aCBieSB0aGlzXG4gICAgICAgIC8vIHBvaW50IGJ5IGVpdGhlciBuZXh0L2xpbmsgb3Igcm91dGVyLnB1c2gvcmVwbGFjZSBzbyBzdHJpcCB0aGVcbiAgICAgICAgLy8gYmFzZVBhdGggZnJvbSB0aGUgcGF0aG5hbWUgdG8gbWF0Y2ggdGhlIHBhZ2VzIGRpciAxLXRvLTFcbiAgICAgICAgcGF0aG5hbWUgPSBwYXRobmFtZSA/ICgwLCBfbm9ybWFsaXplVHJhaWxpbmdTbGFzaCkucmVtb3ZlUGF0aFRyYWlsaW5nU2xhc2goZGVsQmFzZVBhdGgocGF0aG5hbWUpKSA6IHBhdGhuYW1lO1xuICAgICAgICBpZiAoc2hvdWxkUmVzb2x2ZUhyZWYgJiYgcGF0aG5hbWUgIT09ICcvX2Vycm9yJykge1xuICAgICAgICAgICAgb3B0aW9ucy5fc2hvdWxkUmVzb2x2ZUhyZWYgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9IQVNfUkVXUklURVMgJiYgYXMuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmV3cml0ZXNSZXN1bHQgPSAoMCwgX3Jlc29sdmVSZXdyaXRlcykuZGVmYXVsdChhZGRCYXNlUGF0aChhZGRMb2NhbGUoY2xlYW5lZEFzLCBuZXh0U3RhdGUubG9jYWxlKSksIHBhZ2VzLCByZXdyaXRlcywgcXVlcnksIChwKT0+cmVzb2x2ZUR5bmFtaWNSb3V0ZShwLCBwYWdlcylcbiAgICAgICAgICAgICAgICAsIHRoaXMubG9jYWxlcyk7XG4gICAgICAgICAgICAgICAgaWYgKHJld3JpdGVzUmVzdWx0LmV4dGVybmFsRGVzdCkge1xuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gYXM7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXNvbHZlZEFzID0gcmV3cml0ZXNSZXN1bHQuYXNQYXRoO1xuICAgICAgICAgICAgICAgIGlmIChyZXdyaXRlc1Jlc3VsdC5tYXRjaGVkUGFnZSAmJiByZXdyaXRlc1Jlc3VsdC5yZXNvbHZlZEhyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhpcyBkaXJlY3RseSBtYXRjaGVzIGEgcGFnZSB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgaHJlZiB0b1xuICAgICAgICAgICAgICAgICAgICAvLyBhbGxvdyB0aGUgY29ycmVjdCBwYWdlIGNodW5rIHRvIGJlIGxvYWRlZFxuICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSA9IHJld3JpdGVzUmVzdWx0LnJlc29sdmVkSHJlZjtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkLnBhdGhuYW1lID0gYWRkQmFzZVBhdGgocGF0aG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB1cmwgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24ocGFyc2VkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcnNlZC5wYXRobmFtZSA9IHJlc29sdmVEeW5hbWljUm91dGUocGF0aG5hbWUsIHBhZ2VzKTtcbiAgICAgICAgICAgICAgICBpZiAocGFyc2VkLnBhdGhuYW1lICE9PSBwYXRobmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSA9IHBhcnNlZC5wYXRobmFtZTtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkLnBhdGhuYW1lID0gYWRkQmFzZVBhdGgocGF0aG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB1cmwgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24ocGFyc2VkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0xvY2FsVVJMKGFzKSkge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgaHJlZjogXCIke3VybH1cIiBhbmQgYXM6IFwiJHthc31cIiwgcmVjZWl2ZWQgcmVsYXRpdmUgaHJlZiBhbmQgZXh0ZXJuYWwgYXNgICsgYFxcblNlZSBtb3JlIGluZm86IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2ludmFsaWQtcmVsYXRpdmUtdXJsLWV4dGVybmFsLWFzYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGFzO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJlc29sdmVkQXMgPSBkZWxMb2NhbGUoZGVsQmFzZVBhdGgocmVzb2x2ZWRBcyksIG5leHRTdGF0ZS5sb2NhbGUpO1xuICAgICAgICAvKipcbiAgICAgKiBJZiB0aGUgcm91dGUgdXBkYXRlIHdhcyB0cmlnZ2VyZWQgZm9yIGNsaWVudC1zaWRlIGh5ZHJhdGlvbiBhbmRcbiAgICAgKiB0aGUgcmVuZGVyZWQgcm91dGUgaXMgbm90IGR5bmFtaWMgZG8gbm90IGNoZWNrIHRoZSBwcmVmbGlnaHRcbiAgICAgKiByZXF1ZXN0IGFzIGl0IGlzIG5vdCBuZWNlc3NhcnkuXG4gICAgICovIGlmICgoIW9wdGlvbnMuc2hhbGxvdyB8fCBvcHRpb25zLl9oID09PSAxKSAmJiAob3B0aW9ucy5faCAhPT0gMSB8fCAoMCwgX2lzRHluYW1pYykuaXNEeW5hbWljUm91dGUoKDAsIF9ub3JtYWxpemVUcmFpbGluZ1NsYXNoKS5yZW1vdmVQYXRoVHJhaWxpbmdTbGFzaChwYXRobmFtZSkpKSkge1xuICAgICAgICAgICAgY29uc3QgZWZmZWN0ID0gYXdhaXQgdGhpcy5fcHJlZmxpZ2h0UmVxdWVzdCh7XG4gICAgICAgICAgICAgICAgYXMsXG4gICAgICAgICAgICAgICAgY2FjaGU6IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicsXG4gICAgICAgICAgICAgICAgcGFnZXMsXG4gICAgICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgcXVlcnksXG4gICAgICAgICAgICAgICAgbG9jYWxlOiBuZXh0U3RhdGUubG9jYWxlLFxuICAgICAgICAgICAgICAgIGlzUHJldmlldzogbmV4dFN0YXRlLmlzUHJldmlld1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoZWZmZWN0LnR5cGUgPT09ICdyZXdyaXRlJykge1xuICAgICAgICAgICAgICAgIHF1ZXJ5ID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5xdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgLi4uZWZmZWN0LnBhcnNlZEFzLnF1ZXJ5XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXNvbHZlZEFzID0gZWZmZWN0LmFzUGF0aDtcbiAgICAgICAgICAgICAgICBwYXRobmFtZSA9IGVmZmVjdC5yZXNvbHZlZEhyZWY7XG4gICAgICAgICAgICAgICAgcGFyc2VkLnBhdGhuYW1lID0gZWZmZWN0LnJlc29sdmVkSHJlZjtcbiAgICAgICAgICAgICAgICB1cmwgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24ocGFyc2VkKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZWZmZWN0LnR5cGUgPT09ICdyZWRpcmVjdCcgJiYgZWZmZWN0Lm5ld0FzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hhbmdlKG1ldGhvZCwgZWZmZWN0Lm5ld1VybCwgZWZmZWN0Lm5ld0FzLCBvcHRpb25zKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZWZmZWN0LnR5cGUgPT09ICdyZWRpcmVjdCcgJiYgZWZmZWN0LmRlc3RpbmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBlZmZlY3QuZGVzdGluYXRpb247XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCgpPT57fSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVmZmVjdC50eXBlID09PSAncmVmcmVzaCcgJiYgYXMgIT09IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYXM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCgpPT57fSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgcm91dGUgPSAoMCwgX25vcm1hbGl6ZVRyYWlsaW5nU2xhc2gpLnJlbW92ZVBhdGhUcmFpbGluZ1NsYXNoKHBhdGhuYW1lKTtcbiAgICAgICAgaWYgKCgwLCBfaXNEeW5hbWljKS5pc0R5bmFtaWNSb3V0ZShyb3V0ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZEFzID0gKDAsIF9wYXJzZVJlbGF0aXZlVXJsKS5wYXJzZVJlbGF0aXZlVXJsKHJlc29sdmVkQXMpO1xuICAgICAgICAgICAgY29uc3QgYXNQYXRobmFtZSA9IHBhcnNlZEFzLnBhdGhuYW1lO1xuICAgICAgICAgICAgY29uc3Qgcm91dGVSZWdleCA9ICgwLCBfcm91dGVSZWdleCkuZ2V0Um91dGVSZWdleChyb3V0ZSk7XG4gICAgICAgICAgICBjb25zdCByb3V0ZU1hdGNoID0gKDAsIF9yb3V0ZU1hdGNoZXIpLmdldFJvdXRlTWF0Y2hlcihyb3V0ZVJlZ2V4KShhc1BhdGhuYW1lKTtcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZEludGVycG9sYXRlID0gcm91dGUgPT09IGFzUGF0aG5hbWU7XG4gICAgICAgICAgICBjb25zdCBpbnRlcnBvbGF0ZWRBcyA9IHNob3VsZEludGVycG9sYXRlID8gaW50ZXJwb2xhdGVBcyhyb3V0ZSwgYXNQYXRobmFtZSwgcXVlcnkpIDoge307XG4gICAgICAgICAgICBpZiAoIXJvdXRlTWF0Y2ggfHwgc2hvdWxkSW50ZXJwb2xhdGUgJiYgIWludGVycG9sYXRlZEFzLnJlc3VsdCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pc3NpbmdQYXJhbXMgPSBPYmplY3Qua2V5cyhyb3V0ZVJlZ2V4Lmdyb3VwcykuZmlsdGVyKChwYXJhbSk9PiFxdWVyeVtwYXJhbV1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChtaXNzaW5nUGFyYW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgJHtzaG91bGRJbnRlcnBvbGF0ZSA/IGBJbnRlcnBvbGF0aW5nIGhyZWZgIDogYE1pc21hdGNoaW5nIFxcYGFzXFxgIGFuZCBcXGBocmVmXFxgYH0gZmFpbGVkIHRvIG1hbnVhbGx5IHByb3ZpZGUgYCArIGB0aGUgcGFyYW1zOiAke21pc3NpbmdQYXJhbXMuam9pbignLCAnKX0gaW4gdGhlIFxcYGhyZWZcXGAncyBcXGBxdWVyeVxcYGApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigoc2hvdWxkSW50ZXJwb2xhdGUgPyBgVGhlIHByb3ZpZGVkIFxcYGhyZWZcXGAgKCR7dXJsfSkgdmFsdWUgaXMgbWlzc2luZyBxdWVyeSB2YWx1ZXMgKCR7bWlzc2luZ1BhcmFtcy5qb2luKCcsICcpfSkgdG8gYmUgaW50ZXJwb2xhdGVkIHByb3Blcmx5LiBgIDogYFRoZSBwcm92aWRlZCBcXGBhc1xcYCB2YWx1ZSAoJHthc1BhdGhuYW1lfSkgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIFxcYGhyZWZcXGAgdmFsdWUgKCR7cm91dGV9KS4gYCkgKyBgUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy8ke3Nob3VsZEludGVycG9sYXRlID8gJ2hyZWYtaW50ZXJwb2xhdGlvbi1mYWlsZWQnIDogJ2luY29tcGF0aWJsZS1ocmVmLWFzJ31gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNob3VsZEludGVycG9sYXRlKSB7XG4gICAgICAgICAgICAgICAgYXMgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oT2JqZWN0LmFzc2lnbih7fSwgcGFyc2VkQXMsIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWU6IGludGVycG9sYXRlZEFzLnJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgcXVlcnk6IG9taXRQYXJtc0Zyb21RdWVyeShxdWVyeSwgaW50ZXJwb2xhdGVkQXMucGFyYW1zKVxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gTWVyZ2UgcGFyYW1zIGludG8gYHF1ZXJ5YCwgb3ZlcndyaXRpbmcgYW55IHNwZWNpZmllZCBpbiBzZWFyY2hcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHF1ZXJ5LCByb3V0ZU1hdGNoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBSb3V0ZXIuZXZlbnRzLmVtaXQoJ3JvdXRlQ2hhbmdlU3RhcnQnLCBhcywgcm91dGVQcm9wcyk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YXIgcmVmMSwgcmVmMjtcbiAgICAgICAgICAgIGxldCByb3V0ZUluZm8gPSBhd2FpdCB0aGlzLmdldFJvdXRlSW5mbyhyb3V0ZSwgcGF0aG5hbWUsIHF1ZXJ5LCBhcywgcmVzb2x2ZWRBcywgcm91dGVQcm9wcywgbmV4dFN0YXRlLmxvY2FsZSwgbmV4dFN0YXRlLmlzUHJldmlldyk7XG4gICAgICAgICAgICBsZXQgeyBlcnJvciAsIHByb3BzICwgX19OX1NTRyAsIF9fTl9TU1AgIH0gPSByb3V0ZUluZm87XG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnQgPSByb3V0ZUluZm8uQ29tcG9uZW50O1xuICAgICAgICAgICAgaWYgKGNvbXBvbmVudCAmJiBjb21wb25lbnQudW5zdGFibGVfc2NyaXB0TG9hZGVyKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2NyaXB0cyA9IFtdLmNvbmNhdChjb21wb25lbnQudW5zdGFibGVfc2NyaXB0TG9hZGVyKCkpO1xuICAgICAgICAgICAgICAgIHNjcmlwdHMuZm9yRWFjaCgoc2NyaXB0KT0+e1xuICAgICAgICAgICAgICAgICAgICAoMCwgX3NjcmlwdCkuaGFuZGxlQ2xpZW50U2NyaXB0TG9hZChzY3JpcHQucHJvcHMpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaGFuZGxlIHJlZGlyZWN0IG9uIGNsaWVudC10cmFuc2l0aW9uXG4gICAgICAgICAgICBpZiAoKF9fTl9TU0cgfHwgX19OX1NTUCkgJiYgcHJvcHMpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHMucGFnZVByb3BzICYmIHByb3BzLnBhZ2VQcm9wcy5fX05fUkVESVJFQ1QpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVzdGluYXRpb24gPSBwcm9wcy5wYWdlUHJvcHMuX19OX1JFRElSRUNUO1xuICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiBkZXN0aW5hdGlvbiBpcyBpbnRlcm5hbCAocmVzb2x2ZXMgdG8gYSBwYWdlKSBhbmQgYXR0ZW1wdFxuICAgICAgICAgICAgICAgICAgICAvLyBjbGllbnQtbmF2aWdhdGlvbiBpZiBpdCBpcyBmYWxsaW5nIGJhY2sgdG8gaGFyZCBuYXZpZ2F0aW9uIGlmXG4gICAgICAgICAgICAgICAgICAgIC8vIGl0J3Mgbm90XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZXN0aW5hdGlvbi5zdGFydHNXaXRoKCcvJykgJiYgcHJvcHMucGFnZVByb3BzLl9fTl9SRURJUkVDVF9CQVNFX1BBVEggIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWRIcmVmID0gKDAsIF9wYXJzZVJlbGF0aXZlVXJsKS5wYXJzZVJlbGF0aXZlVXJsKGRlc3RpbmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZEhyZWYucGF0aG5hbWUgPSByZXNvbHZlRHluYW1pY1JvdXRlKHBhcnNlZEhyZWYucGF0aG5hbWUsIHBhZ2VzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdXJsOiBuZXdVcmwgLCBhczogbmV3QXMgIH0gPSBwcmVwYXJlVXJsQXModGhpcywgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNoYW5nZShtZXRob2QsIG5ld1VybCwgbmV3QXMsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gZGVzdGluYXRpb247XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgoKT0+e30pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBuZXh0U3RhdGUuaXNQcmV2aWV3ID0gISFwcm9wcy5fX05fUFJFVklFVztcbiAgICAgICAgICAgICAgICAvLyBoYW5kbGUgU1NHIGRhdGEgNDA0XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLm5vdEZvdW5kID09PSBTU0dfREFUQV9OT1RfRk9VTkQpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5vdEZvdW5kUm91dGU7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmZldGNoQ29tcG9uZW50KCcvNDA0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBub3RGb3VuZFJvdXRlID0gJy80MDQnO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChfKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBub3RGb3VuZFJvdXRlID0gJy9fZXJyb3InO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJvdXRlSW5mbyA9IGF3YWl0IHRoaXMuZ2V0Um91dGVJbmZvKG5vdEZvdW5kUm91dGUsIG5vdEZvdW5kUm91dGUsIHF1ZXJ5LCBhcywgcmVzb2x2ZWRBcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hhbGxvdzogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSwgbmV4dFN0YXRlLmxvY2FsZSwgbmV4dFN0YXRlLmlzUHJldmlldyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgUm91dGVyLmV2ZW50cy5lbWl0KCdiZWZvcmVIaXN0b3J5Q2hhbmdlJywgYXMsIHJvdXRlUHJvcHMpO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VTdGF0ZShtZXRob2QsIHVybCwgYXMsIG9wdGlvbnMpO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuX2ggJiYgcGF0aG5hbWUgPT09ICcvX2Vycm9yJyAmJiAoKHJlZjEgPSBzZWxmLl9fTkVYVF9EQVRBX18ucHJvcHMpID09PSBudWxsIHx8IHJlZjEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChyZWYyID0gcmVmMS5wYWdlUHJvcHMpID09PSBudWxsIHx8IHJlZjIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlZjIuc3RhdHVzQ29kZSkgPT09IDUwMCAmJiAocHJvcHMgPT09IG51bGwgfHwgcHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHByb3BzLnBhZ2VQcm9wcykpIHtcbiAgICAgICAgICAgICAgICAvLyBlbnN1cmUgc3RhdHVzQ29kZSBpcyBzdGlsbCBjb3JyZWN0IGZvciBzdGF0aWMgNTAwIHBhZ2VcbiAgICAgICAgICAgICAgICAvLyB3aGVuIHVwZGF0aW5nIHF1ZXJ5IGluZm9ybWF0aW9uXG4gICAgICAgICAgICAgICAgcHJvcHMucGFnZVByb3BzLnN0YXR1c0NvZGUgPSA1MDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBzaGFsbG93IHJvdXRpbmcgaXMgb25seSBhbGxvd2VkIGZvciBzYW1lIHBhZ2UgVVJMIGNoYW5nZXMuXG4gICAgICAgICAgICBjb25zdCBpc1ZhbGlkU2hhbGxvd1JvdXRlID0gb3B0aW9ucy5zaGFsbG93ICYmIG5leHRTdGF0ZS5yb3V0ZSA9PT0gcm91dGU7XG4gICAgICAgICAgICB2YXIgX3Njcm9sbDtcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZFNjcm9sbCA9IChfc2Nyb2xsID0gb3B0aW9ucy5zY3JvbGwpICE9PSBudWxsICYmIF9zY3JvbGwgIT09IHZvaWQgMCA/IF9zY3JvbGwgOiAhaXNWYWxpZFNoYWxsb3dSb3V0ZTtcbiAgICAgICAgICAgIGNvbnN0IHJlc2V0U2Nyb2xsID0gc2hvdWxkU2Nyb2xsID8ge1xuICAgICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgICAgeTogMFxuICAgICAgICAgICAgfSA6IG51bGw7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldCh7XG4gICAgICAgICAgICAgICAgLi4ubmV4dFN0YXRlLFxuICAgICAgICAgICAgICAgIHJvdXRlLFxuICAgICAgICAgICAgICAgIHBhdGhuYW1lLFxuICAgICAgICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgICAgICAgIGFzUGF0aDogY2xlYW5lZEFzLFxuICAgICAgICAgICAgICAgIGlzRmFsbGJhY2s6IGZhbHNlXG4gICAgICAgICAgICB9LCByb3V0ZUluZm8sIGZvcmNlZFNjcm9sbCAhPT0gbnVsbCAmJiBmb3JjZWRTY3JvbGwgIT09IHZvaWQgMCA/IGZvcmNlZFNjcm9sbCA6IHJlc2V0U2Nyb2xsKS5jYXRjaCgoZSk9PntcbiAgICAgICAgICAgICAgICBpZiAoZS5jYW5jZWxsZWQpIGVycm9yID0gZXJyb3IgfHwgZTtcbiAgICAgICAgICAgICAgICBlbHNlIHRocm93IGU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIFJvdXRlci5ldmVudHMuZW1pdCgncm91dGVDaGFuZ2VFcnJvcicsIGVycm9yLCBjbGVhbmVkQXMsIHJvdXRlUHJvcHMpO1xuICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9JMThOX1NVUFBPUlQpIHtcbiAgICAgICAgICAgICAgICBpZiAobmV4dFN0YXRlLmxvY2FsZSkge1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubGFuZyA9IG5leHRTdGF0ZS5sb2NhbGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgUm91dGVyLmV2ZW50cy5lbWl0KCdyb3V0ZUNoYW5nZUNvbXBsZXRlJywgYXMsIHJvdXRlUHJvcHMpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gY2F0Y2ggKGVycjEpIHtcbiAgICAgICAgICAgIGlmICgoMCwgX2lzRXJyb3IpLmRlZmF1bHQoZXJyMSkgJiYgZXJyMS5jYW5jZWxsZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBlcnIxO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNoYW5nZVN0YXRlKG1ldGhvZCwgdXJsLCBhcywgb3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdy5oaXN0b3J5ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFdhcm5pbmc6IHdpbmRvdy5oaXN0b3J5IGlzIG5vdCBhdmFpbGFibGUuYCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cuaGlzdG9yeVttZXRob2RdID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFdhcm5pbmc6IHdpbmRvdy5oaXN0b3J5LiR7bWV0aG9kfSBpcyBub3QgYXZhaWxhYmxlYCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtZXRob2QgIT09ICdwdXNoU3RhdGUnIHx8ICgwLCBfdXRpbHMpLmdldFVSTCgpICE9PSBhcykge1xuICAgICAgICAgICAgdGhpcy5fc2hhbGxvdyA9IG9wdGlvbnMuc2hhbGxvdztcbiAgICAgICAgICAgIHdpbmRvdy5oaXN0b3J5W21ldGhvZF0oe1xuICAgICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgICAgICBhcyxcbiAgICAgICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgICAgIF9fTjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpZHg6IHRoaXMuX2lkeCA9IG1ldGhvZCAhPT0gJ3B1c2hTdGF0ZScgPyB0aGlzLl9pZHggOiB0aGlzLl9pZHggKyAxXG4gICAgICAgICAgICB9LCAvLyBNb3N0IGJyb3dzZXJzIGN1cnJlbnRseSBpZ25vcmVzIHRoaXMgcGFyYW1ldGVyLCBhbHRob3VnaCB0aGV5IG1heSB1c2UgaXQgaW4gdGhlIGZ1dHVyZS5cbiAgICAgICAgICAgIC8vIFBhc3NpbmcgdGhlIGVtcHR5IHN0cmluZyBoZXJlIHNob3VsZCBiZSBzYWZlIGFnYWluc3QgZnV0dXJlIGNoYW5nZXMgdG8gdGhlIG1ldGhvZC5cbiAgICAgICAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IaXN0b3J5L3JlcGxhY2VTdGF0ZVxuICAgICAgICAgICAgJycsIGFzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBoYW5kbGVSb3V0ZUluZm9FcnJvcihlcnIsIHBhdGhuYW1lLCBxdWVyeSwgYXMsIHJvdXRlUHJvcHMsIGxvYWRFcnJvckZhaWwpIHtcbiAgICAgICAgaWYgKGVyci5jYW5jZWxsZWQpIHtcbiAgICAgICAgICAgIC8vIGJ1YmJsZSB1cCBjYW5jZWxsYXRpb24gZXJyb3JzXG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCgwLCBfcm91dGVMb2FkZXIpLmlzQXNzZXRFcnJvcihlcnIpIHx8IGxvYWRFcnJvckZhaWwpIHtcbiAgICAgICAgICAgIFJvdXRlci5ldmVudHMuZW1pdCgncm91dGVDaGFuZ2VFcnJvcicsIGVyciwgYXMsIHJvdXRlUHJvcHMpO1xuICAgICAgICAgICAgLy8gSWYgd2UgY2FuJ3QgbG9hZCB0aGUgcGFnZSBpdCBjb3VsZCBiZSBvbmUgb2YgZm9sbG93aW5nIHJlYXNvbnNcbiAgICAgICAgICAgIC8vICAxLiBQYWdlIGRvZXNuJ3QgZXhpc3RzXG4gICAgICAgICAgICAvLyAgMi4gUGFnZSBkb2VzIGV4aXN0IGluIGEgZGlmZmVyZW50IHpvbmVcbiAgICAgICAgICAgIC8vICAzLiBJbnRlcm5hbCBlcnJvciB3aGlsZSBsb2FkaW5nIHRoZSBwYWdlXG4gICAgICAgICAgICAvLyBTbywgZG9pbmcgYSBoYXJkIHJlbG9hZCBpcyB0aGUgcHJvcGVyIHdheSB0byBkZWFsIHdpdGggdGhpcy5cbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYXM7XG4gICAgICAgICAgICAvLyBDaGFuZ2luZyB0aGUgVVJMIGRvZXNuJ3QgYmxvY2sgZXhlY3V0aW5nIHRoZSBjdXJyZW50IGNvZGUgcGF0aC5cbiAgICAgICAgICAgIC8vIFNvIGxldCdzIHRocm93IGEgY2FuY2VsbGF0aW9uIGVycm9yIHN0b3AgdGhlIHJvdXRpbmcgbG9naWMuXG4gICAgICAgICAgICB0aHJvdyBidWlsZENhbmNlbGxhdGlvbkVycm9yKCk7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCBDb21wb25lbnQ7XG4gICAgICAgICAgICBsZXQgc3R5bGVTaGVldHM7XG4gICAgICAgICAgICBsZXQgcHJvcHM7XG4gICAgICAgICAgICBpZiAodHlwZW9mIENvbXBvbmVudCA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHN0eWxlU2hlZXRzID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICh7IHBhZ2U6IENvbXBvbmVudCAsIHN0eWxlU2hlZXRzICB9ID0gYXdhaXQgdGhpcy5mZXRjaENvbXBvbmVudCgnL19lcnJvcicpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJvdXRlSW5mbyA9IHtcbiAgICAgICAgICAgICAgICBwcm9wcyxcbiAgICAgICAgICAgICAgICBDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgc3R5bGVTaGVldHMsXG4gICAgICAgICAgICAgICAgZXJyLFxuICAgICAgICAgICAgICAgIGVycm9yOiBlcnJcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoIXJvdXRlSW5mby5wcm9wcykge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdXRlSW5mby5wcm9wcyA9IGF3YWl0IHRoaXMuZ2V0SW5pdGlhbFByb3BzKENvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVyeVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChnaXBFcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gZXJyb3IgcGFnZSBgZ2V0SW5pdGlhbFByb3BzYDogJywgZ2lwRXJyKTtcbiAgICAgICAgICAgICAgICAgICAgcm91dGVJbmZvLnByb3BzID0ge307XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJvdXRlSW5mbztcbiAgICAgICAgfSBjYXRjaCAocm91dGVJbmZvRXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVSb3V0ZUluZm9FcnJvcigoMCwgX2lzRXJyb3IpLmRlZmF1bHQocm91dGVJbmZvRXJyKSA/IHJvdXRlSW5mb0VyciA6IG5ldyBFcnJvcihyb3V0ZUluZm9FcnIgKyAnJyksIHBhdGhuYW1lLCBxdWVyeSwgYXMsIHJvdXRlUHJvcHMsIHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGdldFJvdXRlSW5mbyhyb3V0ZSwgcGF0aG5hbWUsIHF1ZXJ5LCBhcywgcmVzb2x2ZWRBcywgcm91dGVQcm9wcywgbG9jYWxlLCBpc1ByZXZpZXcpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nUm91dGVJbmZvID0gdGhpcy5jb21wb25lbnRzW3JvdXRlXTtcbiAgICAgICAgICAgIGlmIChyb3V0ZVByb3BzLnNoYWxsb3cgJiYgZXhpc3RpbmdSb3V0ZUluZm8gJiYgdGhpcy5yb3V0ZSA9PT0gcm91dGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXhpc3RpbmdSb3V0ZUluZm87XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgY2FjaGVkUm91dGVJbmZvID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgLy8gY2FuIG9ubHkgdXNlIG5vbi1pbml0aWFsIHJvdXRlIGluZm9cbiAgICAgICAgICAgIC8vIGNhbm5vdCByZXVzZSByb3V0ZSBpbmZvIGluIGRldmVsb3BtZW50IHNpbmNlIGl0IGNhbiBjaGFuZ2UgYWZ0ZXIgSE1SXG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdkZXZlbG9wbWVudCcgJiYgZXhpc3RpbmdSb3V0ZUluZm8gJiYgISgnaW5pdGlhbCcgaW4gZXhpc3RpbmdSb3V0ZUluZm8pKSB7XG4gICAgICAgICAgICAgICAgY2FjaGVkUm91dGVJbmZvID0gZXhpc3RpbmdSb3V0ZUluZm87XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByb3V0ZUluZm8gPSBjYWNoZWRSb3V0ZUluZm8gfHwgYXdhaXQgdGhpcy5mZXRjaENvbXBvbmVudChyb3V0ZSkudGhlbigocmVzKT0+KHtcbiAgICAgICAgICAgICAgICAgICAgQ29tcG9uZW50OiByZXMucGFnZSxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVTaGVldHM6IHJlcy5zdHlsZVNoZWV0cyxcbiAgICAgICAgICAgICAgICAgICAgX19OX1NTRzogcmVzLm1vZC5fX05fU1NHLFxuICAgICAgICAgICAgICAgICAgICBfX05fU1NQOiByZXMubW9kLl9fTl9TU1AsXG4gICAgICAgICAgICAgICAgICAgIF9fTl9SU0M6ICEhcmVzLm1vZC5fX25leHRfcnNjX19cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IHsgQ29tcG9uZW50ICwgX19OX1NTRyAsIF9fTl9TU1AgLCBfX05fUlNDICB9ID0gcm91dGVJbmZvO1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGlzVmFsaWRFbGVtZW50VHlwZSAgfSA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9yZWFjdC1pcycpO1xuICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEVsZW1lbnRUeXBlKENvbXBvbmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZGVmYXVsdCBleHBvcnQgaXMgbm90IGEgUmVhY3QgQ29tcG9uZW50IGluIHBhZ2U6IFwiJHtwYXRobmFtZX1cImApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBkYXRhSHJlZjtcbiAgICAgICAgICAgIC8vIEZvciBzZXJ2ZXIgY29tcG9uZW50cywgbm9uLVNTUiBwYWdlcyB3aWxsIGhhdmUgc3RhdGljYWxseSBvcHRpbWl6ZWRcbiAgICAgICAgICAgIC8vIGZsaWdodCBkYXRhIGluIGEgcHJvZHVjdGlvbiBidWlsZC5cbiAgICAgICAgICAgIC8vIFNvIG9ubHkgZGV2ZWxvcG1lbnQgYW5kIFNTUiBwYWdlcyB3aWxsIGFsd2F5cyBoYXZlIHRoZSByZWFsLXRpbWVcbiAgICAgICAgICAgIC8vIGdlbmVyYXRlZCBhbmQgc3RyZWFtZWQgZmxpZ2h0IGRhdGEuXG4gICAgICAgICAgICBjb25zdCB1c2VTdHJlYW1lZEZsaWdodERhdGEgPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyB8fCBfX05fU1NQKSAmJiBfX05fUlNDO1xuICAgICAgICAgICAgaWYgKF9fTl9TU0cgfHwgX19OX1NTUCB8fCBfX05fUlNDKSB7XG4gICAgICAgICAgICAgICAgZGF0YUhyZWYgPSB0aGlzLnBhZ2VMb2FkZXIuZ2V0RGF0YUhyZWYoe1xuICAgICAgICAgICAgICAgICAgICBocmVmOiAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVyeVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgYXNQYXRoOiByZXNvbHZlZEFzLFxuICAgICAgICAgICAgICAgICAgICBzc2c6IF9fTl9TU0csXG4gICAgICAgICAgICAgICAgICAgIGZsaWdodDogdXNlU3RyZWFtZWRGbGlnaHREYXRhLFxuICAgICAgICAgICAgICAgICAgICBsb2NhbGVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHByb3BzID0gYXdhaXQgdGhpcy5fZ2V0RGF0YSgoKT0+KF9fTl9TU0cgfHwgX19OX1NTUCB8fCBfX05fUlNDKSAmJiAhdXNlU3RyZWFtZWRGbGlnaHREYXRhID8gZmV0Y2hOZXh0RGF0YShkYXRhSHJlZiwgdGhpcy5pc1NzciwgZmFsc2UsIF9fTl9TU0cgPyB0aGlzLnNkYyA6IHRoaXMuc2RyLCAhIV9fTl9TU0cgJiYgIWlzUHJldmlldykgOiB0aGlzLmdldEluaXRpYWxQcm9wcyhDb21wb25lbnQsIC8vIHdlIHByb3ZpZGUgQXBwVHJlZSBsYXRlciBzbyB0aGlzIG5lZWRzIHRvIGJlIGBhbnlgXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcXVlcnksXG4gICAgICAgICAgICAgICAgICAgIGFzUGF0aDogYXMsXG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlczogdGhpcy5sb2NhbGVzLFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TG9jYWxlOiB0aGlzLmRlZmF1bHRMb2NhbGVcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChfX05fUlNDKSB7XG4gICAgICAgICAgICAgICAgaWYgKHVzZVN0cmVhbWVkRmxpZ2h0RGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGEgIH0gPSBhd2FpdCB0aGlzLl9nZXREYXRhKCgpPT50aGlzLl9nZXRGbGlnaHREYXRhKGRhdGFIcmVmKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5wYWdlUHJvcHMgPSBPYmplY3QuYXNzaWduKHByb3BzLnBhZ2VQcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgX19mbGlnaHRfXzogZGF0YVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IF9fZmxpZ2h0X18gIH0gPSBwcm9wcztcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMucGFnZVByb3BzID0gT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMucGFnZVByb3BzLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfX2ZsaWdodF9fXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJvdXRlSW5mby5wcm9wcyA9IHByb3BzO1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRzW3JvdXRlXSA9IHJvdXRlSW5mbztcbiAgICAgICAgICAgIHJldHVybiByb3V0ZUluZm87XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlUm91dGVJbmZvRXJyb3IoKDAsIF9pc0Vycm9yKS5nZXRQcm9wZXJFcnJvcihlcnIpLCBwYXRobmFtZSwgcXVlcnksIGFzLCByb3V0ZVByb3BzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzZXQoc3RhdGUsIGRhdGEsIHJlc2V0U2Nyb2xsKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViKGRhdGEsIHRoaXMuY29tcG9uZW50c1snL19hcHAnXS5Db21wb25lbnQsIHJlc2V0U2Nyb2xsKTtcbiAgICB9XG4gICAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGV4ZWN1dGUgYmVmb3JlIHJlcGxhY2luZyByb3V0ZXIgc3RhdGVcbiAgICogQHBhcmFtIGNiIGNhbGxiYWNrIHRvIGJlIGV4ZWN1dGVkXG4gICAqLyBiZWZvcmVQb3BTdGF0ZShjYikge1xuICAgICAgICB0aGlzLl9icHMgPSBjYjtcbiAgICB9XG4gICAgb25seUFIYXNoQ2hhbmdlKGFzKSB7XG4gICAgICAgIGlmICghdGhpcy5hc1BhdGgpIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgW29sZFVybE5vSGFzaCwgb2xkSGFzaF0gPSB0aGlzLmFzUGF0aC5zcGxpdCgnIycpO1xuICAgICAgICBjb25zdCBbbmV3VXJsTm9IYXNoLCBuZXdIYXNoXSA9IGFzLnNwbGl0KCcjJyk7XG4gICAgICAgIC8vIE1ha2VzIHN1cmUgd2Ugc2Nyb2xsIHRvIHRoZSBwcm92aWRlZCBoYXNoIGlmIHRoZSB1cmwvaGFzaCBhcmUgdGhlIHNhbWVcbiAgICAgICAgaWYgKG5ld0hhc2ggJiYgb2xkVXJsTm9IYXNoID09PSBuZXdVcmxOb0hhc2ggJiYgb2xkSGFzaCA9PT0gbmV3SGFzaCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgdGhlIHVybHMgYXJlIGNoYW5nZSwgdGhlcmUncyBtb3JlIHRoYW4gYSBoYXNoIGNoYW5nZVxuICAgICAgICBpZiAob2xkVXJsTm9IYXNoICE9PSBuZXdVcmxOb0hhc2gpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB0aGUgaGFzaCBoYXMgY2hhbmdlZCwgdGhlbiBpdCdzIGEgaGFzaCBvbmx5IGNoYW5nZS5cbiAgICAgICAgLy8gVGhpcyBjaGVjayBpcyBuZWNlc3NhcnkgdG8gaGFuZGxlIGJvdGggdGhlIGVudGVyIGFuZFxuICAgICAgICAvLyBsZWF2ZSBoYXNoID09PSAnJyBjYXNlcy4gVGhlIGlkZW50aXR5IGNhc2UgZmFsbHMgdGhyb3VnaFxuICAgICAgICAvLyBhbmQgaXMgdHJlYXRlZCBhcyBhIG5leHQgcmVsb2FkLlxuICAgICAgICByZXR1cm4gb2xkSGFzaCAhPT0gbmV3SGFzaDtcbiAgICB9XG4gICAgc2Nyb2xsVG9IYXNoKGFzKSB7XG4gICAgICAgIGNvbnN0IFssIGhhc2ggPSAnJ10gPSBhcy5zcGxpdCgnIycpO1xuICAgICAgICAvLyBTY3JvbGwgdG8gdG9wIGlmIHRoZSBoYXNoIGlzIGp1c3QgYCNgIHdpdGggbm8gdmFsdWUgb3IgYCN0b3BgXG4gICAgICAgIC8vIFRvIG1pcnJvciBicm93c2Vyc1xuICAgICAgICBpZiAoaGFzaCA9PT0gJycgfHwgaGFzaCA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBGaXJzdCB3ZSBjaGVjayBpZiB0aGUgZWxlbWVudCBieSBpZCBpcyBmb3VuZFxuICAgICAgICBjb25zdCBpZEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaGFzaCk7XG4gICAgICAgIGlmIChpZEVsKSB7XG4gICAgICAgICAgICBpZEVsLnNjcm9sbEludG9WaWV3KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgdGhlcmUncyBubyBlbGVtZW50IHdpdGggdGhlIGlkLCB3ZSBjaGVjayB0aGUgYG5hbWVgIHByb3BlcnR5XG4gICAgICAgIC8vIFRvIG1pcnJvciBicm93c2Vyc1xuICAgICAgICBjb25zdCBuYW1lRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZShoYXNoKVswXTtcbiAgICAgICAgaWYgKG5hbWVFbCkge1xuICAgICAgICAgICAgbmFtZUVsLnNjcm9sbEludG9WaWV3KCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdXJsSXNOZXcoYXNQYXRoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFzUGF0aCAhPT0gYXNQYXRoO1xuICAgIH1cbiAgICAvKipcbiAgICogUHJlZmV0Y2ggcGFnZSBjb2RlLCB5b3UgbWF5IHdhaXQgZm9yIHRoZSBkYXRhIGR1cmluZyBwYWdlIHJlbmRlcmluZy5cbiAgICogVGhpcyBmZWF0dXJlIG9ubHkgd29ya3MgaW4gcHJvZHVjdGlvbiFcbiAgICogQHBhcmFtIHVybCB0aGUgaHJlZiBvZiBwcmVmZXRjaGVkIHBhZ2VcbiAgICogQHBhcmFtIGFzUGF0aCB0aGUgYXMgcGF0aCBvZiB0aGUgcHJlZmV0Y2hlZCBwYWdlXG4gICAqLyBhc3luYyBwcmVmZXRjaCh1cmwsIGFzUGF0aCA9IHVybCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIGxldCBwYXJzZWQgPSAoMCwgX3BhcnNlUmVsYXRpdmVVcmwpLnBhcnNlUmVsYXRpdmVVcmwodXJsKTtcbiAgICAgICAgbGV0IHsgcGF0aG5hbWUgLCBxdWVyeSAgfSA9IHBhcnNlZDtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9JMThOX1NVUFBPUlQpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxvY2FsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBwYXRobmFtZSA9ICgwLCBfbm9ybWFsaXplTG9jYWxlUGF0aCkubm9ybWFsaXplTG9jYWxlUGF0aChwYXRobmFtZSwgdGhpcy5sb2NhbGVzKS5wYXRobmFtZTtcbiAgICAgICAgICAgICAgICBwYXJzZWQucGF0aG5hbWUgPSBwYXRobmFtZTtcbiAgICAgICAgICAgICAgICB1cmwgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24ocGFyc2VkKTtcbiAgICAgICAgICAgICAgICBsZXQgcGFyc2VkQXMgPSAoMCwgX3BhcnNlUmVsYXRpdmVVcmwpLnBhcnNlUmVsYXRpdmVVcmwoYXNQYXRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGVQYXRoUmVzdWx0ID0gKDAsIF9ub3JtYWxpemVMb2NhbGVQYXRoKS5ub3JtYWxpemVMb2NhbGVQYXRoKHBhcnNlZEFzLnBhdGhuYW1lLCB0aGlzLmxvY2FsZXMpO1xuICAgICAgICAgICAgICAgIHBhcnNlZEFzLnBhdGhuYW1lID0gbG9jYWxlUGF0aFJlc3VsdC5wYXRobmFtZTtcbiAgICAgICAgICAgICAgICBvcHRpb25zLmxvY2FsZSA9IGxvY2FsZVBhdGhSZXN1bHQuZGV0ZWN0ZWRMb2NhbGUgfHwgdGhpcy5kZWZhdWx0TG9jYWxlO1xuICAgICAgICAgICAgICAgIGFzUGF0aCA9ICgwLCBfZm9ybWF0VXJsKS5mb3JtYXRXaXRoVmFsaWRhdGlvbihwYXJzZWRBcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFnZXMgPSBhd2FpdCB0aGlzLnBhZ2VMb2FkZXIuZ2V0UGFnZUxpc3QoKTtcbiAgICAgICAgbGV0IHJlc29sdmVkQXMgPSBhc1BhdGg7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSEFTX1JFV1JJVEVTICYmIGFzUGF0aC5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAgICAgICAgIGxldCByZXdyaXRlcztcbiAgICAgICAgICAgICh7IF9fcmV3cml0ZXM6IHJld3JpdGVzICB9ID0gYXdhaXQgKDAsIF9yb3V0ZUxvYWRlcikuZ2V0Q2xpZW50QnVpbGRNYW5pZmVzdCgpKTtcbiAgICAgICAgICAgIGNvbnN0IHJld3JpdGVzUmVzdWx0ID0gKDAsIF9yZXNvbHZlUmV3cml0ZXMpLmRlZmF1bHQoYWRkQmFzZVBhdGgoYWRkTG9jYWxlKGFzUGF0aCwgdGhpcy5sb2NhbGUpKSwgcGFnZXMsIHJld3JpdGVzLCBwYXJzZWQucXVlcnksIChwKT0+cmVzb2x2ZUR5bmFtaWNSb3V0ZShwLCBwYWdlcylcbiAgICAgICAgICAgICwgdGhpcy5sb2NhbGVzKTtcbiAgICAgICAgICAgIGlmIChyZXdyaXRlc1Jlc3VsdC5leHRlcm5hbERlc3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlZEFzID0gZGVsTG9jYWxlKGRlbEJhc2VQYXRoKHJld3JpdGVzUmVzdWx0LmFzUGF0aCksIHRoaXMubG9jYWxlKTtcbiAgICAgICAgICAgIGlmIChyZXdyaXRlc1Jlc3VsdC5tYXRjaGVkUGFnZSAmJiByZXdyaXRlc1Jlc3VsdC5yZXNvbHZlZEhyZWYpIHtcbiAgICAgICAgICAgICAgICAvLyBpZiB0aGlzIGRpcmVjdGx5IG1hdGNoZXMgYSBwYWdlIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBocmVmIHRvXG4gICAgICAgICAgICAgICAgLy8gYWxsb3cgdGhlIGNvcnJlY3QgcGFnZSBjaHVuayB0byBiZSBsb2FkZWRcbiAgICAgICAgICAgICAgICBwYXRobmFtZSA9IHJld3JpdGVzUmVzdWx0LnJlc29sdmVkSHJlZjtcbiAgICAgICAgICAgICAgICBwYXJzZWQucGF0aG5hbWUgPSBwYXRobmFtZTtcbiAgICAgICAgICAgICAgICB1cmwgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24ocGFyc2VkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhcnNlZC5wYXRobmFtZSA9IHJlc29sdmVEeW5hbWljUm91dGUocGFyc2VkLnBhdGhuYW1lLCBwYWdlcyk7XG4gICAgICAgICAgICBpZiAocGFyc2VkLnBhdGhuYW1lICE9PSBwYXRobmFtZSkge1xuICAgICAgICAgICAgICAgIHBhdGhuYW1lID0gcGFyc2VkLnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgIHBhcnNlZC5wYXRobmFtZSA9IHBhdGhuYW1lO1xuICAgICAgICAgICAgICAgIHVybCA9ICgwLCBfZm9ybWF0VXJsKS5mb3JtYXRXaXRoVmFsaWRhdGlvbihwYXJzZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIFByZWZldGNoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gZGV2ZWxvcG1lbnQgbW9kZSBiZWNhdXNlIGl0IHdvdWxkIHRyaWdnZXIgb24tZGVtYW5kLWVudHJpZXNcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlZmZlY3RzID0gYXdhaXQgdGhpcy5fcHJlZmxpZ2h0UmVxdWVzdCh7XG4gICAgICAgICAgICBhczogYWRkQmFzZVBhdGgoYXNQYXRoKSxcbiAgICAgICAgICAgIGNhY2hlOiB0cnVlLFxuICAgICAgICAgICAgcGFnZXMsXG4gICAgICAgICAgICBwYXRobmFtZSxcbiAgICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZSxcbiAgICAgICAgICAgIGlzUHJldmlldzogdGhpcy5pc1ByZXZpZXdcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChlZmZlY3RzLnR5cGUgPT09ICdyZXdyaXRlJykge1xuICAgICAgICAgICAgcGFyc2VkLnBhdGhuYW1lID0gZWZmZWN0cy5yZXNvbHZlZEhyZWY7XG4gICAgICAgICAgICBwYXRobmFtZSA9IGVmZmVjdHMucmVzb2x2ZWRIcmVmO1xuICAgICAgICAgICAgcXVlcnkgPSB7XG4gICAgICAgICAgICAgICAgLi4ucXVlcnksXG4gICAgICAgICAgICAgICAgLi4uZWZmZWN0cy5wYXJzZWRBcy5xdWVyeVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlc29sdmVkQXMgPSBlZmZlY3RzLmFzUGF0aDtcbiAgICAgICAgICAgIHVybCA9ICgwLCBfZm9ybWF0VXJsKS5mb3JtYXRXaXRoVmFsaWRhdGlvbihwYXJzZWQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJvdXRlID0gKDAsIF9ub3JtYWxpemVUcmFpbGluZ1NsYXNoKS5yZW1vdmVQYXRoVHJhaWxpbmdTbGFzaChwYXRobmFtZSk7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgIHRoaXMucGFnZUxvYWRlci5faXNTc2cocm91dGUpLnRoZW4oKGlzU3NnKT0+e1xuICAgICAgICAgICAgICAgIHJldHVybiBpc1NzZyA/IGZldGNoTmV4dERhdGEodGhpcy5wYWdlTG9hZGVyLmdldERhdGFIcmVmKHtcbiAgICAgICAgICAgICAgICAgICAgaHJlZjogdXJsLFxuICAgICAgICAgICAgICAgICAgICBhc1BhdGg6IHJlc29sdmVkQXMsXG4gICAgICAgICAgICAgICAgICAgIHNzZzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiB0eXBlb2Ygb3B0aW9ucy5sb2NhbGUgIT09ICd1bmRlZmluZWQnID8gb3B0aW9ucy5sb2NhbGUgOiB0aGlzLmxvY2FsZVxuICAgICAgICAgICAgICAgIH0pLCBmYWxzZSwgZmFsc2UsIHRoaXMuc2RjLCB0cnVlKSA6IGZhbHNlO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0aGlzLnBhZ2VMb2FkZXJbb3B0aW9ucy5wcmlvcml0eSA/ICdsb2FkUGFnZScgOiAncHJlZmV0Y2gnXShyb3V0ZSksIFxuICAgICAgICBdKTtcbiAgICB9XG4gICAgYXN5bmMgZmV0Y2hDb21wb25lbnQocm91dGUpIHtcbiAgICAgICAgbGV0IGNhbmNlbGxlZCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBjYW5jZWwgPSB0aGlzLmNsYyA9ICgpPT57XG4gICAgICAgICAgICBjYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBoYW5kbGVDYW5jZWxsZWQgPSAoKT0+e1xuICAgICAgICAgICAgaWYgKGNhbmNlbGxlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBBYm9ydCBmZXRjaGluZyBjb21wb25lbnQgZm9yIHJvdXRlOiBcIiR7cm91dGV9XCJgKTtcbiAgICAgICAgICAgICAgICBlcnJvci5jYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNhbmNlbCA9PT0gdGhpcy5jbGMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsYyA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZXN1bHQgPSBhd2FpdCB0aGlzLnBhZ2VMb2FkZXIubG9hZFBhZ2Uocm91dGUpO1xuICAgICAgICAgICAgaGFuZGxlQ2FuY2VsbGVkKCk7XG4gICAgICAgICAgICByZXR1cm4gY29tcG9uZW50UmVzdWx0O1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGhhbmRsZUNhbmNlbGxlZCgpO1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9nZXREYXRhKGZuKSB7XG4gICAgICAgIGxldCBjYW5jZWxsZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgY2FuY2VsID0gKCk9PntcbiAgICAgICAgICAgIGNhbmNlbGxlZCA9IHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuY2xjID0gY2FuY2VsO1xuICAgICAgICByZXR1cm4gZm4oKS50aGVuKChkYXRhKT0+e1xuICAgICAgICAgICAgaWYgKGNhbmNlbCA9PT0gdGhpcy5jbGMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsYyA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKCdMb2FkaW5nIGluaXRpYWwgcHJvcHMgY2FuY2VsbGVkJyk7XG4gICAgICAgICAgICAgICAgZXJyLmNhbmNlbGxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfZ2V0RmxpZ2h0RGF0YShkYXRhSHJlZikge1xuICAgICAgICAvLyBEbyBub3QgY2FjaGUgUlNDIGZsaWdodCByZXNwb25zZSBzaW5jZSBpdCdzIG5vdCBhIHN0YXRpYyByZXNvdXJjZVxuICAgICAgICByZXR1cm4gZmV0Y2hOZXh0RGF0YShkYXRhSHJlZiwgdHJ1ZSwgdHJ1ZSwgdGhpcy5zZGMsIGZhbHNlKS50aGVuKChzZXJpYWxpemVkKT0+e1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBkYXRhOiBzZXJpYWxpemVkXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgX3ByZWZsaWdodFJlcXVlc3Qob3B0aW9ucykge1xuICAgICAgICBjb25zdCBhc1BhdGhuYW1lID0gcGF0aE5vUXVlcnlIYXNoKG9wdGlvbnMuYXMpO1xuICAgICAgICBjb25zdCBjbGVhbmVkQXMgPSBkZWxMb2NhbGUoaGFzQmFzZVBhdGgoYXNQYXRobmFtZSkgPyBkZWxCYXNlUGF0aChhc1BhdGhuYW1lKSA6IGFzUGF0aG5hbWUsIG9wdGlvbnMubG9jYWxlKTtcbiAgICAgICAgY29uc3QgZm5zID0gYXdhaXQgdGhpcy5wYWdlTG9hZGVyLmdldE1pZGRsZXdhcmVMaXN0KCk7XG4gICAgICAgIGNvbnN0IHJlcXVpcmVzUHJlZmxpZ2h0ID0gZm5zLnNvbWUoKFttaWRkbGV3YXJlLCBpc1NTUl0pPT57XG4gICAgICAgICAgICByZXR1cm4gKDAsIF9yb3V0ZU1hdGNoZXIpLmdldFJvdXRlTWF0Y2hlcigoMCwgX2dldE1pZGRsZXdhcmVSZWdleCkuZ2V0TWlkZGxld2FyZVJlZ2V4KG1pZGRsZXdhcmUsICFpc1NTUikpKGNsZWFuZWRBcyk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIXJlcXVpcmVzUHJlZmxpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICduZXh0J1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcmVmbGlnaHRIcmVmID0gYWRkTG9jYWxlKG9wdGlvbnMuYXMsIG9wdGlvbnMubG9jYWxlKTtcbiAgICAgICAgbGV0IHByZWZsaWdodDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHByZWZsaWdodCA9IGF3YWl0IHRoaXMuX2dldFByZWZsaWdodERhdGEoe1xuICAgICAgICAgICAgICAgIHByZWZsaWdodEhyZWYsXG4gICAgICAgICAgICAgICAgc2hvdWxkQ2FjaGU6IG9wdGlvbnMuY2FjaGUsXG4gICAgICAgICAgICAgICAgaXNQcmV2aWV3OiBvcHRpb25zLmlzUHJldmlld1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgLy8gSWYgcHJlZmxpZ2h0IHJlcXVlc3QgZmFpbHMsIHdlIG5lZWQgdG8gZG8gYSBoYXJkLW5hdmlnYXRpb24uXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdyZWRpcmVjdCcsXG4gICAgICAgICAgICAgICAgZGVzdGluYXRpb246IG9wdGlvbnMuYXNcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByZWZsaWdodC5yZXdyaXRlKSB7XG4gICAgICAgICAgICAvLyBmb3IgZXh0ZXJuYWwgcmV3cml0ZXMgd2UgbmVlZCB0byBkbyBhIGhhcmQgbmF2aWdhdGlvblxuICAgICAgICAgICAgLy8gdG8gdGhlIHJlc291cmNlXG4gICAgICAgICAgICBpZiAoIXByZWZsaWdodC5yZXdyaXRlLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdyZWRpcmVjdCcsXG4gICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uOiBvcHRpb25zLmFzXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZCA9ICgwLCBfcGFyc2VSZWxhdGl2ZVVybCkucGFyc2VSZWxhdGl2ZVVybCgoMCwgX25vcm1hbGl6ZUxvY2FsZVBhdGgpLm5vcm1hbGl6ZUxvY2FsZVBhdGgoaGFzQmFzZVBhdGgocHJlZmxpZ2h0LnJld3JpdGUpID8gZGVsQmFzZVBhdGgocHJlZmxpZ2h0LnJld3JpdGUpIDogcHJlZmxpZ2h0LnJld3JpdGUsIHRoaXMubG9jYWxlcykucGF0aG5hbWUpO1xuICAgICAgICAgICAgY29uc3QgZnNQYXRobmFtZSA9ICgwLCBfbm9ybWFsaXplVHJhaWxpbmdTbGFzaCkucmVtb3ZlUGF0aFRyYWlsaW5nU2xhc2gocGFyc2VkLnBhdGhuYW1lKTtcbiAgICAgICAgICAgIGxldCBtYXRjaGVkUGFnZTtcbiAgICAgICAgICAgIGxldCByZXNvbHZlZEhyZWY7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5wYWdlcy5pbmNsdWRlcyhmc1BhdGhuYW1lKSkge1xuICAgICAgICAgICAgICAgIG1hdGNoZWRQYWdlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXNvbHZlZEhyZWYgPSBmc1BhdGhuYW1lO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlZEhyZWYgPSByZXNvbHZlRHluYW1pY1JvdXRlKGZzUGF0aG5hbWUsIG9wdGlvbnMucGFnZXMpO1xuICAgICAgICAgICAgICAgIGlmIChyZXNvbHZlZEhyZWYgIT09IHBhcnNlZC5wYXRobmFtZSAmJiBvcHRpb25zLnBhZ2VzLmluY2x1ZGVzKHJlc29sdmVkSHJlZikpIHtcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZFBhZ2UgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3Jld3JpdGUnLFxuICAgICAgICAgICAgICAgIGFzUGF0aDogcGFyc2VkLnBhdGhuYW1lLFxuICAgICAgICAgICAgICAgIHBhcnNlZEFzOiBwYXJzZWQsXG4gICAgICAgICAgICAgICAgbWF0Y2hlZFBhZ2UsXG4gICAgICAgICAgICAgICAgcmVzb2x2ZWRIcmVmXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcmVmbGlnaHQucmVkaXJlY3QpIHtcbiAgICAgICAgICAgIGlmIChwcmVmbGlnaHQucmVkaXJlY3Quc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xlYW5SZWRpcmVjdCA9ICgwLCBfbm9ybWFsaXplVHJhaWxpbmdTbGFzaCkucmVtb3ZlUGF0aFRyYWlsaW5nU2xhc2goKDAsIF9ub3JtYWxpemVMb2NhbGVQYXRoKS5ub3JtYWxpemVMb2NhbGVQYXRoKGhhc0Jhc2VQYXRoKHByZWZsaWdodC5yZWRpcmVjdCkgPyBkZWxCYXNlUGF0aChwcmVmbGlnaHQucmVkaXJlY3QpIDogcHJlZmxpZ2h0LnJlZGlyZWN0LCB0aGlzLmxvY2FsZXMpLnBhdGhuYW1lKTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHVybDogbmV3VXJsICwgYXM6IG5ld0FzICB9ID0gcHJlcGFyZVVybEFzKHRoaXMsIGNsZWFuUmVkaXJlY3QsIGNsZWFuUmVkaXJlY3QpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdyZWRpcmVjdCcsXG4gICAgICAgICAgICAgICAgICAgIG5ld1VybCxcbiAgICAgICAgICAgICAgICAgICAgbmV3QXNcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAncmVkaXJlY3QnLFxuICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uOiBwcmVmbGlnaHQucmVkaXJlY3RcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgLy8gRm9yIFNTUiByZXF1ZXN0cywgdGhleSB3aWxsIGJlIGhhbmRsZWQgbGlrZSBub3JtYWwgcGFnZXMuXG4gICAgICAgIGlmIChwcmVmbGlnaHQucmVmcmVzaCAmJiAhcHJlZmxpZ2h0LnNzcikge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAncmVmcmVzaCdcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICduZXh0J1xuICAgICAgICB9O1xuICAgIH1cbiAgICBfZ2V0UHJlZmxpZ2h0RGF0YShwYXJhbXMpIHtcbiAgICAgICAgY29uc3QgeyBwcmVmbGlnaHRIcmVmICwgc2hvdWxkQ2FjaGUgPWZhbHNlICwgaXNQcmV2aWV3ICB9ID0gcGFyYW1zO1xuICAgICAgICBjb25zdCB7IGhyZWY6IGNhY2hlS2V5ICB9ID0gbmV3IFVSTChwcmVmbGlnaHRIcmVmLCB3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nICYmICFpc1ByZXZpZXcgJiYgc2hvdWxkQ2FjaGUgJiYgdGhpcy5zZGVbY2FjaGVLZXldKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuc2RlW2NhY2hlS2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZldGNoKHByZWZsaWdodEhyZWYsIHtcbiAgICAgICAgICAgIG1ldGhvZDogJ0hFQUQnLFxuICAgICAgICAgICAgY3JlZGVudGlhbHM6ICdzYW1lLW9yaWdpbicsXG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgJ3gtbWlkZGxld2FyZS1wcmVmbGlnaHQnOiAnMSdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkudGhlbigocmVzKT0+e1xuICAgICAgICAgICAgaWYgKCFyZXMub2spIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBwcmVmbGlnaHQgcmVxdWVzdGApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBjYWNoZTogcmVzLmhlYWRlcnMuZ2V0KCd4LW1pZGRsZXdhcmUtY2FjaGUnKSxcbiAgICAgICAgICAgICAgICByZWRpcmVjdDogcmVzLmhlYWRlcnMuZ2V0KCdMb2NhdGlvbicpLFxuICAgICAgICAgICAgICAgIHJlZnJlc2g6IHJlcy5oZWFkZXJzLmhhcygneC1taWRkbGV3YXJlLXJlZnJlc2gnKSxcbiAgICAgICAgICAgICAgICByZXdyaXRlOiByZXMuaGVhZGVycy5nZXQoJ3gtbWlkZGxld2FyZS1yZXdyaXRlJyksXG4gICAgICAgICAgICAgICAgc3NyOiAhIXJlcy5oZWFkZXJzLmdldCgneC1taWRkbGV3YXJlLXNzcicpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KS50aGVuKChkYXRhKT0+e1xuICAgICAgICAgICAgaWYgKHNob3VsZENhY2hlICYmIGRhdGEuY2FjaGUgIT09ICduby1jYWNoZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNkZVtjYWNoZUtleV0gPSBkYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0pLmNhdGNoKChlcnIpPT57XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5zZGVbY2FjaGVLZXldO1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0SW5pdGlhbFByb3BzKENvbXBvbmVudCwgY3R4KSB7XG4gICAgICAgIGNvbnN0IHsgQ29tcG9uZW50OiBBcHAgIH0gPSB0aGlzLmNvbXBvbmVudHNbJy9fYXBwJ107XG4gICAgICAgIGNvbnN0IEFwcFRyZWUgPSB0aGlzLl93cmFwQXBwKEFwcCk7XG4gICAgICAgIGN0eC5BcHBUcmVlID0gQXBwVHJlZTtcbiAgICAgICAgcmV0dXJuICgwLCBfdXRpbHMpLmxvYWRHZXRJbml0aWFsUHJvcHMoQXBwLCB7XG4gICAgICAgICAgICBBcHBUcmVlLFxuICAgICAgICAgICAgQ29tcG9uZW50LFxuICAgICAgICAgICAgcm91dGVyOiB0aGlzLFxuICAgICAgICAgICAgY3R4XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhYm9ydENvbXBvbmVudExvYWQoYXMsIHJvdXRlUHJvcHMpIHtcbiAgICAgICAgaWYgKHRoaXMuY2xjKSB7XG4gICAgICAgICAgICBSb3V0ZXIuZXZlbnRzLmVtaXQoJ3JvdXRlQ2hhbmdlRXJyb3InLCBidWlsZENhbmNlbGxhdGlvbkVycm9yKCksIGFzLCByb3V0ZVByb3BzKTtcbiAgICAgICAgICAgIHRoaXMuY2xjKCk7XG4gICAgICAgICAgICB0aGlzLmNsYyA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IHJvdXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5yb3V0ZTtcbiAgICB9XG4gICAgZ2V0IHBhdGhuYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5wYXRobmFtZTtcbiAgICB9XG4gICAgZ2V0IHF1ZXJ5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5xdWVyeTtcbiAgICB9XG4gICAgZ2V0IGFzUGF0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUuYXNQYXRoO1xuICAgIH1cbiAgICBnZXQgbG9jYWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5sb2NhbGU7XG4gICAgfVxuICAgIGdldCBpc0ZhbGxiYWNrKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5pc0ZhbGxiYWNrO1xuICAgIH1cbiAgICBnZXQgaXNQcmV2aWV3KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5pc1ByZXZpZXc7XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0gUm91dGVyO1xuUm91dGVyLmV2ZW50cyA9ICgwLCBfbWl0dCkuZGVmYXVsdCgpO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yb3V0ZXIuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZ2V0RG9tYWluTG9jYWxlIiwiYWRkTG9jYWxlIiwiZGVsTG9jYWxlIiwiaGFzQmFzZVBhdGgiLCJhZGRCYXNlUGF0aCIsImRlbEJhc2VQYXRoIiwiaXNMb2NhbFVSTCIsImludGVycG9sYXRlQXMiLCJyZXNvbHZlSHJlZiIsImRlZmF1bHQiLCJfbm9ybWFsaXplVHJhaWxpbmdTbGFzaCIsInJlcXVpcmUiLCJfcm91dGVMb2FkZXIiLCJfc2NyaXB0IiwiX2lzRXJyb3IiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9kZW5vcm1hbGl6ZVBhZ2VQYXRoIiwiX25vcm1hbGl6ZUxvY2FsZVBhdGgiLCJfbWl0dCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXRpbHMiLCJfaXNEeW5hbWljIiwiX3BhcnNlUmVsYXRpdmVVcmwiLCJfcXVlcnlzdHJpbmciLCJfcmVzb2x2ZVJld3JpdGVzIiwiX3JvdXRlTWF0Y2hlciIsIl9yb3V0ZVJlZ2V4IiwiX2dldE1pZGRsZXdhcmVSZWdleCIsIl9mb3JtYXRVcmwiLCJvYmoiLCJfX2VzTW9kdWxlIiwibmV3T2JqIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdldCIsInNldCIsImRldGVjdERvbWFpbkxvY2FsZSIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfSTE4Tl9TVVBQT1JUIiwiYmFzZVBhdGgiLCJfX05FWFRfUk9VVEVSX0JBU0VQQVRIIiwiYnVpbGRDYW5jZWxsYXRpb25FcnJvciIsImFzc2lnbiIsIkVycm9yIiwiY2FuY2VsbGVkIiwiYWRkUGF0aFByZWZpeCIsInBhdGgiLCJwcmVmaXgiLCJzdGFydHNXaXRoIiwicGF0aG5hbWUiLCJwYXRoTm9RdWVyeUhhc2giLCJub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaCIsInNsaWNlIiwibGVuZ3RoIiwiaGFzUGF0aFByZWZpeCIsImxvY2FsZSIsImxvY2FsZXMiLCJkb21haW5Mb2NhbGVzIiwibm9ybWFsaXplTG9jYWxlUGF0aCIsImRldGVjdGVkTG9jYWxlIiwiZGV0ZWN0ZWREb21haW4iLCJ1bmRlZmluZWQiLCJodHRwIiwiZG9tYWluIiwiZGVmYXVsdExvY2FsZSIsInBhdGhMb3dlciIsInRvTG93ZXJDYXNlIiwibG9jYWxlTG93ZXIiLCJxdWVyeUluZGV4IiwiaW5kZXhPZiIsImhhc2hJbmRleCIsInN1YnN0cmluZyIsInVybCIsImxvY2F0aW9uT3JpZ2luIiwiZ2V0TG9jYXRpb25PcmlnaW4iLCJyZXNvbHZlZCIsIlVSTCIsIm9yaWdpbiIsIl8iLCJyb3V0ZSIsImFzUGF0aG5hbWUiLCJxdWVyeSIsImludGVycG9sYXRlZFJvdXRlIiwiZHluYW1pY1JlZ2V4IiwiZ2V0Um91dGVSZWdleCIsImR5bmFtaWNHcm91cHMiLCJncm91cHMiLCJkeW5hbWljTWF0Y2hlcyIsImdldFJvdXRlTWF0Y2hlciIsInBhcmFtcyIsImtleXMiLCJldmVyeSIsInBhcmFtIiwicmVwZWF0Iiwib3B0aW9uYWwiLCJyZXBsYWNlZCIsIkFycmF5IiwiaXNBcnJheSIsInJlcGxhY2UiLCJtYXAiLCJzZWdtZW50IiwiZW5jb2RlVVJJQ29tcG9uZW50Iiwiam9pbiIsInJlc3VsdCIsIm9taXRQYXJtc0Zyb21RdWVyeSIsImZpbHRlcmVkUXVlcnkiLCJmb3JFYWNoIiwiaW5jbHVkZXMiLCJyb3V0ZXIiLCJocmVmIiwicmVzb2x2ZUFzIiwiYmFzZSIsInVybEFzU3RyaW5nIiwiZm9ybWF0V2l0aFZhbGlkYXRpb24iLCJ1cmxQcm90b01hdGNoIiwibWF0Y2giLCJ1cmxBc1N0cmluZ05vUHJvdG8iLCJ1cmxQYXJ0cyIsInNwbGl0IiwiY29uc29sZSIsImVycm9yIiwibm9ybWFsaXplZFVybCIsIm5vcm1hbGl6ZVJlcGVhdGVkU2xhc2hlcyIsImFzUGF0aCIsImZpbmFsVXJsIiwiaW50ZXJwb2xhdGVkQXMiLCJpc0R5bmFtaWNSb3V0ZSIsInNlYXJjaFBhcmFtcyIsInNlYXJjaFBhcmFtc1RvVXJsUXVlcnkiLCJoYXNoIiwicmVzb2x2ZWRIcmVmIiwiXzEiLCJzdHJpcE9yaWdpbiIsInByZXBhcmVVcmxBcyIsImFzIiwicmVzb2x2ZWRBcyIsImhyZWZIYWRPcmlnaW4iLCJhc0hhZE9yaWdpbiIsInByZXBhcmVkVXJsIiwicHJlcGFyZWRBcyIsInJlc29sdmVEeW5hbWljUm91dGUiLCJwYWdlcyIsImNsZWFuUGF0aG5hbWUiLCJyZW1vdmVQYXRoVHJhaWxpbmdTbGFzaCIsImRlbm9ybWFsaXplUGFnZVBhdGgiLCJzb21lIiwicGFnZSIsInJlIiwidGVzdCIsIm1hbnVhbFNjcm9sbFJlc3RvcmF0aW9uIiwiX19ORVhUX1NDUk9MTF9SRVNUT1JBVElPTiIsIndpbmRvdyIsImhpc3RvcnkiLCJ2Iiwic2Vzc2lvblN0b3JhZ2UiLCJzZXRJdGVtIiwicmVtb3ZlSXRlbSIsIm4iLCJTU0dfREFUQV9OT1RfRk9VTkQiLCJTeW1ib2wiLCJmZXRjaFJldHJ5IiwiYXR0ZW1wdHMiLCJvcHRzIiwiZmV0Y2giLCJjcmVkZW50aWFscyIsInRoZW4iLCJyZXMiLCJvayIsInN0YXR1cyIsImpzb24iLCJkYXRhIiwibm90Rm91bmQiLCJ0ZXh0IiwiZmV0Y2hOZXh0RGF0YSIsImRhdGFIcmVmIiwiaXNTZXJ2ZXJSZW5kZXIiLCJpbmZsaWdodENhY2hlIiwicGVyc2lzdENhY2hlIiwiY2FjaGVLZXkiLCJsb2NhdGlvbiIsImNhdGNoIiwiZXJyIiwibWFya0Fzc2V0RXJyb3IiLCJSb3V0ZXIiLCJjb25zdHJ1Y3RvciIsInBhdGhuYW1lMSIsInF1ZXJ5MSIsImFzMSIsImluaXRpYWxQcm9wcyIsInBhZ2VMb2FkZXIiLCJBcHAiLCJ3cmFwQXBwIiwiQ29tcG9uZW50Iiwic3Vic2NyaXB0aW9uIiwiaXNGYWxsYmFjayIsImlzUHJldmlldyIsImlzUnNjIiwic2RjIiwic2RyIiwic2RlIiwiX2lkeCIsIm9uUG9wU3RhdGUiLCJlIiwic3RhdGUiLCJjaGFuZ2VTdGF0ZSIsImdldFVSTCIsIl9fTiIsImZvcmNlZFNjcm9sbCIsIm9wdGlvbnMiLCJpZHgiLCJKU09OIiwic3RyaW5naWZ5IiwieCIsInNlbGYiLCJwYWdlWE9mZnNldCIsInkiLCJwYWdlWU9mZnNldCIsImdldEl0ZW0iLCJwYXJzZSIsInBhcnNlUmVsYXRpdmVVcmwiLCJpc1NzciIsIl9icHMiLCJjaGFuZ2UiLCJzaGFsbG93IiwiX3NoYWxsb3ciLCJjb21wb25lbnRzIiwiaW5pdGlhbCIsInByb3BzIiwiX19OX1NTRyIsIl9fTl9TU1AiLCJfX05fUlNDIiwic3R5bGVTaGVldHMiLCJldmVudHMiLCJhdXRvRXhwb3J0RHluYW1pYyIsIl9fTkVYVF9EQVRBX18iLCJhdXRvRXhwb3J0Iiwic3ViIiwiY2xjIiwiX3dyYXBBcHAiLCJpc0xvY2FsZURvbWFpbiIsImlzUmVhZHkiLCJnc3NwIiwiZ2lwIiwiYXBwR2lwIiwiZ3NwIiwic2VhcmNoIiwiX19ORVhUX0hBU19SRVdSSVRFUyIsImhvc3RuYW1lIiwiX3Nob3VsZFJlc29sdmVIcmVmIiwiYWRkRXZlbnRMaXN0ZW5lciIsInNjcm9sbFJlc3RvcmF0aW9uIiwicmVsb2FkIiwiYmFjayIsInB1c2giLCJtZXRob2QiLCJzaG91bGRSZXNvbHZlSHJlZiIsIl9oIiwibmV4dFN0YXRlIiwicHJldkxvY2FsZSIsInBhcnNlZEFzIiwibG9jYWxlUGF0aFJlc3VsdCIsImRpZE5hdmlnYXRlIiwicmVmIiwiYXNOb0Jhc2VQYXRoIiwiUHJvbWlzZSIsIlNUIiwicGVyZm9ybWFuY2UiLCJtYXJrIiwic2Nyb2xsIiwicm91dGVQcm9wcyIsIl9pbkZsaWdodFJvdXRlIiwiYWJvcnRDb21wb25lbnRMb2FkIiwiY2xlYW5lZEFzIiwibG9jYWxlQ2hhbmdlIiwib25seUFIYXNoQ2hhbmdlIiwiZW1pdCIsInNjcm9sbFRvSGFzaCIsInBhcnNlZCIsInJld3JpdGVzIiwiX19yZXdyaXRlcyIsImFsbCIsImdldFBhZ2VMaXN0IiwiZ2V0Q2xpZW50QnVpbGRNYW5pZmVzdCIsImdldE1pZGRsZXdhcmVMaXN0IiwidXJsSXNOZXciLCJyZXdyaXRlc1Jlc3VsdCIsInAiLCJleHRlcm5hbERlc3QiLCJtYXRjaGVkUGFnZSIsImVmZmVjdCIsIl9wcmVmbGlnaHRSZXF1ZXN0IiwiY2FjaGUiLCJ0eXBlIiwibmV3QXMiLCJuZXdVcmwiLCJkZXN0aW5hdGlvbiIsInJvdXRlUmVnZXgiLCJyb3V0ZU1hdGNoIiwic2hvdWxkSW50ZXJwb2xhdGUiLCJtaXNzaW5nUGFyYW1zIiwiZmlsdGVyIiwid2FybiIsInJlZjEiLCJyZWYyIiwicm91dGVJbmZvIiwiZ2V0Um91dGVJbmZvIiwiY29tcG9uZW50IiwidW5zdGFibGVfc2NyaXB0TG9hZGVyIiwic2NyaXB0cyIsImNvbmNhdCIsInNjcmlwdCIsImhhbmRsZUNsaWVudFNjcmlwdExvYWQiLCJwYWdlUHJvcHMiLCJfX05fUkVESVJFQ1QiLCJfX05fUkVESVJFQ1RfQkFTRV9QQVRIIiwicGFyc2VkSHJlZiIsIl9fTl9QUkVWSUVXIiwibm90Rm91bmRSb3V0ZSIsImZldGNoQ29tcG9uZW50Iiwic3RhdHVzQ29kZSIsImlzVmFsaWRTaGFsbG93Um91dGUiLCJfc2Nyb2xsIiwic2hvdWxkU2Nyb2xsIiwicmVzZXRTY3JvbGwiLCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIsImxhbmciLCJlcnIxIiwiaGFuZGxlUm91dGVJbmZvRXJyb3IiLCJsb2FkRXJyb3JGYWlsIiwiaXNBc3NldEVycm9yIiwiZ2V0SW5pdGlhbFByb3BzIiwiZ2lwRXJyIiwicm91dGVJbmZvRXJyIiwiZXhpc3RpbmdSb3V0ZUluZm8iLCJjYWNoZWRSb3V0ZUluZm8iLCJtb2QiLCJfX25leHRfcnNjX18iLCJpc1ZhbGlkRWxlbWVudFR5cGUiLCJ1c2VTdHJlYW1lZEZsaWdodERhdGEiLCJnZXREYXRhSHJlZiIsInNzZyIsImZsaWdodCIsIl9nZXREYXRhIiwiX2dldEZsaWdodERhdGEiLCJfX2ZsaWdodF9fIiwiZ2V0UHJvcGVyRXJyb3IiLCJiZWZvcmVQb3BTdGF0ZSIsImNiIiwib2xkVXJsTm9IYXNoIiwib2xkSGFzaCIsIm5ld1VybE5vSGFzaCIsIm5ld0hhc2giLCJzY3JvbGxUbyIsImlkRWwiLCJnZXRFbGVtZW50QnlJZCIsInNjcm9sbEludG9WaWV3IiwibmFtZUVsIiwiZ2V0RWxlbWVudHNCeU5hbWUiLCJwcmVmZXRjaCIsImVmZmVjdHMiLCJfaXNTc2ciLCJpc1NzZyIsInByaW9yaXR5IiwiY2FuY2VsIiwiaGFuZGxlQ2FuY2VsbGVkIiwiY29tcG9uZW50UmVzdWx0IiwibG9hZFBhZ2UiLCJmbiIsInNlcmlhbGl6ZWQiLCJmbnMiLCJyZXF1aXJlc1ByZWZsaWdodCIsIm1pZGRsZXdhcmUiLCJpc1NTUiIsImdldE1pZGRsZXdhcmVSZWdleCIsInByZWZsaWdodEhyZWYiLCJwcmVmbGlnaHQiLCJfZ2V0UHJlZmxpZ2h0RGF0YSIsInNob3VsZENhY2hlIiwicmV3cml0ZSIsImZzUGF0aG5hbWUiLCJyZWRpcmVjdCIsImNsZWFuUmVkaXJlY3QiLCJyZWZyZXNoIiwic3NyIiwicmVzb2x2ZSIsImhlYWRlcnMiLCJoYXMiLCJjdHgiLCJBcHBUcmVlIiwibG9hZEdldEluaXRpYWxQcm9wcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/shared/lib/router/router.js\n");
+
+/***/ }),
+
+/***/ "./pages/_app.tsx":
+/*!************************!*\
+ !*** ./pages/_app.tsx ***!
+ \************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _styles_globals_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../styles/globals.css */ \"./styles/globals.css\");\n/* harmony import */ var _styles_globals_css__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_styles_globals_css__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @chakra-ui/react */ \"@chakra-ui/react\");\n/* harmony import */ var _chakra_ui_react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _chakra_ui_theme_tools__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @chakra-ui/theme-tools */ \"@chakra-ui/theme-tools\");\n/* harmony import */ var _chakra_ui_theme_tools__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_chakra_ui_theme_tools__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var wagmi__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! wagmi */ \"wagmi\");\n/* harmony import */ var wagmi__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(wagmi__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _utils_wagmiClient__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @utils/wagmiClient */ \"./utils/wagmiClient.tsx\");\n/* harmony import */ var _components_NavBar__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @components/NavBar */ \"./components/NavBar.tsx\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var contexts_ChainProvider__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! contexts/ChainProvider */ \"./contexts/ChainProvider.tsx\");\n\n\n\n\n\n\n\n\n\n\nfunction MyApp({ Component , pageProps }) {\n const { 0: mounted , 1: setMounted } = (0,react__WEBPACK_IMPORTED_MODULE_7__.useState)(false);\n // prevent hydration UI bug: https://blog.saeloun.com/2021/12/16/hydration.html\n (0,react__WEBPACK_IMPORTED_MODULE_7__.useEffect)(()=>setMounted(true)\n , []);\n if (!mounted) return null;\n // customize your chakra theme here\n const theme = (0,_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.extendTheme)({\n styles: {\n global: (props)=>({\n body: {\n fontFamily: \"Roboto\",\n color: (0,_chakra_ui_theme_tools__WEBPACK_IMPORTED_MODULE_3__.mode)(\"gray.800\", \"whiteAlpha.900\")(props),\n bg: (0,_chakra_ui_theme_tools__WEBPACK_IMPORTED_MODULE_3__.mode)(\"white\", \"gray.800\")(props),\n lineHeight: \"base\"\n }\n })\n },\n colors: {\n brand: {\n 100: \"#f7fafc\",\n 900: \"#1a202c\"\n }\n }\n });\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_2__.ChakraProvider, {\n theme: theme,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(wagmi__WEBPACK_IMPORTED_MODULE_4__.Provider, {\n client: _utils_wagmiClient__WEBPACK_IMPORTED_MODULE_5__.WagmiClient,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(contexts_ChainProvider__WEBPACK_IMPORTED_MODULE_8__.ChainProvider, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_NavBar__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {}, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/pages/_app.tsx\",\n lineNumber: 44,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Component, {\n ...pageProps\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/pages/_app.tsx\",\n lineNumber: 45,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/pages/_app.tsx\",\n lineNumber: 43,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/pages/_app.tsx\",\n lineNumber: 42,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/erinlee/Documents/GitHub/burnmywallet/frontend/pages/_app.tsx\",\n lineNumber: 41,\n columnNumber: 5\n }, this);\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MyApp);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wYWdlcy9fYXBwLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBK0I7QUFFZ0I7QUFDRztBQUNKO0FBQ0k7QUFDRDtBQUNUO0FBRUk7QUFDVztBQUV2RCxTQUFTVSxLQUFLLENBQUMsRUFBRUMsU0FBUyxHQUFFQyxTQUFTLEdBQVksRUFBRTtJQUNqRCxNQUFNLEVBYlIsR0FhU0MsT0FBTyxHQWJoQixHQWFrQkMsVUFBVSxNQUFJTiwrQ0FBUSxDQUFDLEtBQUssQ0FBQztJQUU3QywrRUFBK0U7SUFDL0VELGdEQUFTLENBQUMsSUFBTU8sVUFBVSxDQUFDLElBQUksQ0FBQztJQUFBLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEMsSUFBSSxDQUFDRCxPQUFPLEVBQUUsT0FBTyxJQUFJLENBQUM7SUFFMUIsbUNBQW1DO0lBQ25DLE1BQU1FLEtBQUssR0FBR2YsNkRBQVcsQ0FBQztRQUN4QmdCLE1BQU0sRUFBRTtZQUNOQyxNQUFNLEVBQUUsQ0FBQ0MsS0FBVSxHQUFLLENBQUM7b0JBQ3ZCQyxJQUFJLEVBQUU7d0JBQ0pDLFVBQVUsRUFBRSxRQUFRO3dCQUNwQkMsS0FBSyxFQUFFbkIsNERBQUksQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQ2dCLEtBQUssQ0FBQzt3QkFDaERJLEVBQUUsRUFBRXBCLDREQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDZ0IsS0FBSyxDQUFDO3dCQUNwQ0ssVUFBVSxFQUFFLE1BQU07cUJBQ25CO2lCQUNGLENBQUM7U0FDSDtRQUNEQyxNQUFNLEVBQUU7WUFDTkMsS0FBSyxFQUFFO0FBQ0wsbUJBQUcsRUFBRSxTQUFTO0FBQ2QsbUJBQUcsRUFBRSxTQUFTO2FBQ2Y7U0FDRjtLQUNGLENBQUM7SUFFRixxQkFDRSw4REFBQ3hCLDREQUFjO1FBQUNjLEtBQUssRUFBRUEsS0FBSztrQkFDMUIsNEVBQUNYLDJDQUFhO1lBQUNzQixNQUFNLEVBQUVyQiwyREFBVztzQkFDaEMsNEVBQUNJLGlFQUFhOztrQ0FDWiw4REFBQ0gsMERBQU07Ozs7NEJBQUc7a0NBQ1YsOERBQUNLLFNBQVM7d0JBQUUsR0FBR0MsU0FBUzs7Ozs7NEJBQUk7Ozs7OztvQkFDZDs7Ozs7Z0JBQ0Y7Ozs7O1lBQ0QsQ0FDakI7Q0FDSDtBQUVELGlFQUFlRixLQUFLLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9idXJuLW15LXdhbGxldC8uL3BhZ2VzL19hcHAudHN4PzJmYmUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwiLi4vc3R5bGVzL2dsb2JhbHMuY3NzXCI7XG5pbXBvcnQgdHlwZSB7IEFwcFByb3BzIH0gZnJvbSBcIm5leHQvYXBwXCI7XG5pbXBvcnQgeyBleHRlbmRUaGVtZSB9IGZyb20gXCJAY2hha3JhLXVpL3JlYWN0XCI7XG5pbXBvcnQgeyBDaGFrcmFQcm92aWRlciB9IGZyb20gXCJAY2hha3JhLXVpL3JlYWN0XCI7XG5pbXBvcnQgeyBtb2RlIH0gZnJvbSBcIkBjaGFrcmEtdWkvdGhlbWUtdG9vbHNcIjtcbmltcG9ydCB7IFByb3ZpZGVyIGFzIFdhZ21pUHJvdmlkZXIgfSBmcm9tIFwid2FnbWlcIjtcbmltcG9ydCB7IFdhZ21pQ2xpZW50IH0gZnJvbSBcIkB1dGlscy93YWdtaUNsaWVudFwiO1xuaW1wb3J0IE5hdkJhciBmcm9tIFwiQGNvbXBvbmVudHMvTmF2QmFyXCI7XG5pbXBvcnQgRm9vdGVyIGZyb20gXCJAY29tcG9uZW50cy9Gb290ZXJcIjtcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENoYWluUHJvdmlkZXIgfSBmcm9tIFwiY29udGV4dHMvQ2hhaW5Qcm92aWRlclwiO1xuXG5mdW5jdGlvbiBNeUFwcCh7IENvbXBvbmVudCwgcGFnZVByb3BzIH06IEFwcFByb3BzKSB7XG4gIGNvbnN0IFttb3VudGVkLCBzZXRNb3VudGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICAvLyBwcmV2ZW50IGh5ZHJhdGlvbiBVSSBidWc6IGh0dHBzOi8vYmxvZy5zYWVsb3VuLmNvbS8yMDIxLzEyLzE2L2h5ZHJhdGlvbi5odG1sXG4gIHVzZUVmZmVjdCgoKSA9PiBzZXRNb3VudGVkKHRydWUpLCBbXSk7XG4gIGlmICghbW91bnRlZCkgcmV0dXJuIG51bGw7XG5cbiAgLy8gY3VzdG9taXplIHlvdXIgY2hha3JhIHRoZW1lIGhlcmVcbiAgY29uc3QgdGhlbWUgPSBleHRlbmRUaGVtZSh7XG4gICAgc3R5bGVzOiB7XG4gICAgICBnbG9iYWw6IChwcm9wczogYW55KSA9PiAoe1xuICAgICAgICBib2R5OiB7XG4gICAgICAgICAgZm9udEZhbWlseTogXCJSb2JvdG9cIixcbiAgICAgICAgICBjb2xvcjogbW9kZShcImdyYXkuODAwXCIsIFwid2hpdGVBbHBoYS45MDBcIikocHJvcHMpLFxuICAgICAgICAgIGJnOiBtb2RlKFwid2hpdGVcIiwgXCJncmF5LjgwMFwiKShwcm9wcyksXG4gICAgICAgICAgbGluZUhlaWdodDogXCJiYXNlXCIsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICB9LFxuICAgIGNvbG9yczoge1xuICAgICAgYnJhbmQ6IHtcbiAgICAgICAgMTAwOiBcIiNmN2ZhZmNcIixcbiAgICAgICAgOTAwOiBcIiMxYTIwMmNcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2hha3JhUHJvdmlkZXIgdGhlbWU9e3RoZW1lfT5cbiAgICAgIDxXYWdtaVByb3ZpZGVyIGNsaWVudD17V2FnbWlDbGllbnR9PlxuICAgICAgICA8Q2hhaW5Qcm92aWRlcj5cbiAgICAgICAgICA8TmF2QmFyIC8+XG4gICAgICAgICAgPENvbXBvbmVudCB7Li4ucGFnZVByb3BzfSAvPlxuICAgICAgICA8L0NoYWluUHJvdmlkZXI+XG4gICAgICA8L1dhZ21pUHJvdmlkZXI+XG4gICAgPC9DaGFrcmFQcm92aWRlcj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTXlBcHA7XG4iXSwibmFtZXMiOlsiZXh0ZW5kVGhlbWUiLCJDaGFrcmFQcm92aWRlciIsIm1vZGUiLCJQcm92aWRlciIsIldhZ21pUHJvdmlkZXIiLCJXYWdtaUNsaWVudCIsIk5hdkJhciIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiQ2hhaW5Qcm92aWRlciIsIk15QXBwIiwiQ29tcG9uZW50IiwicGFnZVByb3BzIiwibW91bnRlZCIsInNldE1vdW50ZWQiLCJ0aGVtZSIsInN0eWxlcyIsImdsb2JhbCIsInByb3BzIiwiYm9keSIsImZvbnRGYW1pbHkiLCJjb2xvciIsImJnIiwibGluZUhlaWdodCIsImNvbG9ycyIsImJyYW5kIiwiY2xpZW50Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./pages/_app.tsx\n");
+
+/***/ }),
+
+/***/ "./utils/wagmiClient.tsx":
+/*!*******************************!*\
+ !*** ./utils/wagmiClient.tsx ***!
+ \*******************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"WagmiClient\": () => (/* binding */ WagmiClient)\n/* harmony export */ });\n/* harmony import */ var wagmi_connectors_coinbaseWallet__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! wagmi/connectors/coinbaseWallet */ \"wagmi/connectors/coinbaseWallet\");\n/* harmony import */ var wagmi_connectors_coinbaseWallet__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(wagmi_connectors_coinbaseWallet__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var wagmi_connectors_walletConnect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! wagmi/connectors/walletConnect */ \"wagmi/connectors/walletConnect\");\n/* harmony import */ var wagmi_connectors_walletConnect__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(wagmi_connectors_walletConnect__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var wagmi_connectors_metaMask__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! wagmi/connectors/metaMask */ \"wagmi/connectors/metaMask\");\n/* harmony import */ var wagmi_connectors_metaMask__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(wagmi_connectors_metaMask__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var wagmi__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! wagmi */ \"wagmi\");\n/* harmony import */ var wagmi__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(wagmi__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\nconst clientOptions = {\n autoConnect: true,\n connectors: [\n new wagmi_connectors_coinbaseWallet__WEBPACK_IMPORTED_MODULE_0__.CoinbaseWalletConnector({\n options: {\n appName: \"NFT Minting Starter Kit\",\n // jsonRpcUrl: alchemyRpcUrls.rinkeby,\n jsonRpcUrl: \"http://localhost:8545\"\n }\n }),\n new wagmi_connectors_metaMask__WEBPACK_IMPORTED_MODULE_2__.MetaMaskConnector(),\n new wagmi_connectors_walletConnect__WEBPACK_IMPORTED_MODULE_1__.WalletConnectConnector({\n options: {\n qrcode: true\n }\n }), \n ]\n};\nconst WagmiClient = (0,wagmi__WEBPACK_IMPORTED_MODULE_3__.createClient)(clientOptions);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi91dGlscy93YWdtaUNsaWVudC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQTBFO0FBQ0Y7QUFDVjtBQUNUO0FBRXJELE1BQU1JLGFBQWEsR0FBRztJQUNwQkMsV0FBVyxFQUFFLElBQUk7SUFDakJDLFVBQVUsRUFBRTtRQUNWLElBQUlOLG9GQUF1QixDQUFDO1lBQzFCTyxPQUFPLEVBQUU7Z0JBQ1BDLE9BQU8sRUFBRSx5QkFBeUI7Z0JBQ2xDLHNDQUFzQztnQkFDdENDLFVBQVUsRUFBRSx1QkFBdUI7YUFDcEM7U0FDRixDQUFDO1FBQ0YsSUFBSVAsd0VBQWlCLEVBQUU7UUFDdkIsSUFBSUQsa0ZBQXNCLENBQUM7WUFDekJNLE9BQU8sRUFBRTtnQkFDUEcsTUFBTSxFQUFFLElBQUk7YUFDYjtTQUNGLENBQUM7S0FDSDtDQUNGO0FBRU0sTUFBTUMsV0FBVyxHQUFHUixtREFBWSxDQUFDQyxhQUFhLENBQUMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL2J1cm4tbXktd2FsbGV0Ly4vdXRpbHMvd2FnbWlDbGllbnQudHN4PzQ3ODYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29pbmJhc2VXYWxsZXRDb25uZWN0b3IgfSBmcm9tIFwid2FnbWkvY29ubmVjdG9ycy9jb2luYmFzZVdhbGxldFwiO1xuaW1wb3J0IHsgV2FsbGV0Q29ubmVjdENvbm5lY3RvciB9IGZyb20gXCJ3YWdtaS9jb25uZWN0b3JzL3dhbGxldENvbm5lY3RcIjtcbmltcG9ydCB7IE1ldGFNYXNrQ29ubmVjdG9yIH0gZnJvbSBcIndhZ21pL2Nvbm5lY3RvcnMvbWV0YU1hc2tcIjtcbmltcG9ydCB7IGFsY2hlbXlScGNVcmxzLCBjcmVhdGVDbGllbnQgfSBmcm9tIFwid2FnbWlcIjtcblxuY29uc3QgY2xpZW50T3B0aW9ucyA9IHtcbiAgYXV0b0Nvbm5lY3Q6IHRydWUsXG4gIGNvbm5lY3RvcnM6IFtcbiAgICBuZXcgQ29pbmJhc2VXYWxsZXRDb25uZWN0b3Ioe1xuICAgICAgb3B0aW9uczoge1xuICAgICAgICBhcHBOYW1lOiBcIk5GVCBNaW50aW5nIFN0YXJ0ZXIgS2l0XCIsXG4gICAgICAgIC8vIGpzb25ScGNVcmw6IGFsY2hlbXlScGNVcmxzLnJpbmtlYnksXG4gICAgICAgIGpzb25ScGNVcmw6IFwiaHR0cDovL2xvY2FsaG9zdDo4NTQ1XCIsXG4gICAgICB9LFxuICAgIH0pLFxuICAgIG5ldyBNZXRhTWFza0Nvbm5lY3RvcigpLFxuICAgIG5ldyBXYWxsZXRDb25uZWN0Q29ubmVjdG9yKHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgcXJjb2RlOiB0cnVlLFxuICAgICAgfSxcbiAgICB9KSxcbiAgXSxcbn07XG5cbmV4cG9ydCBjb25zdCBXYWdtaUNsaWVudCA9IGNyZWF0ZUNsaWVudChjbGllbnRPcHRpb25zKTtcbiJdLCJuYW1lcyI6WyJDb2luYmFzZVdhbGxldENvbm5lY3RvciIsIldhbGxldENvbm5lY3RDb25uZWN0b3IiLCJNZXRhTWFza0Nvbm5lY3RvciIsImNyZWF0ZUNsaWVudCIsImNsaWVudE9wdGlvbnMiLCJhdXRvQ29ubmVjdCIsImNvbm5lY3RvcnMiLCJvcHRpb25zIiwiYXBwTmFtZSIsImpzb25ScGNVcmwiLCJxcmNvZGUiLCJXYWdtaUNsaWVudCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./utils/wagmiClient.tsx\n");
+
+/***/ }),
+
+/***/ "./styles/globals.css":
+/*!****************************!*\
+ !*** ./styles/globals.css ***!
+ \****************************/
+/***/ (() => {
+
+
+
+/***/ }),
+
+/***/ "./node_modules/next/dist/lib/is-error.js":
+/*!************************************************!*\
+ !*** ./node_modules/next/dist/lib/is-error.js ***!
+ \************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = isError;\nexports.getProperError = getProperError;\nvar _isPlainObject = __webpack_require__(/*! ../shared/lib/is-plain-object */ \"../shared/lib/is-plain-object\");\nfunction isError(err) {\n return typeof err === 'object' && err !== null && 'name' in err && 'message' in err;\n}\nfunction getProperError(err) {\n if (isError(err)) {\n return err;\n }\n if (true) {\n // provide better error for case where `throw undefined`\n // is called in development\n if (typeof err === 'undefined') {\n return new Error('An undefined error was thrown, ' + 'see here for more info: https://nextjs.org/docs/messages/threw-undefined');\n }\n if (err === null) {\n return new Error('A null error was thrown, ' + 'see here for more info: https://nextjs.org/docs/messages/threw-undefined');\n }\n }\n return new Error((0, _isPlainObject).isPlainObject(err) ? JSON.stringify(err) : err + '');\n}\n\n//# sourceMappingURL=is-error.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9pcy1lcnJvci5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLGtCQUFlO0FBQ2Ysc0JBQXNCO0FBQ3RCLHFCQUFxQixtQkFBTyxDQUFDLG9FQUErQjtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsSUFBc0M7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL2J1cm4tbXktd2FsbGV0Ly4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9saWIvaXMtZXJyb3IuanM/MTc4ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzRXJyb3I7XG5leHBvcnRzLmdldFByb3BlckVycm9yID0gZ2V0UHJvcGVyRXJyb3I7XG52YXIgX2lzUGxhaW5PYmplY3QgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9pcy1wbGFpbi1vYmplY3RcIik7XG5mdW5jdGlvbiBpc0Vycm9yKGVycikge1xuICAgIHJldHVybiB0eXBlb2YgZXJyID09PSAnb2JqZWN0JyAmJiBlcnIgIT09IG51bGwgJiYgJ25hbWUnIGluIGVyciAmJiAnbWVzc2FnZScgaW4gZXJyO1xufVxuZnVuY3Rpb24gZ2V0UHJvcGVyRXJyb3IoZXJyKSB7XG4gICAgaWYgKGlzRXJyb3IoZXJyKSkge1xuICAgICAgICByZXR1cm4gZXJyO1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgLy8gcHJvdmlkZSBiZXR0ZXIgZXJyb3IgZm9yIGNhc2Ugd2hlcmUgYHRocm93IHVuZGVmaW5lZGBcbiAgICAgICAgLy8gaXMgY2FsbGVkIGluIGRldmVsb3BtZW50XG4gICAgICAgIGlmICh0eXBlb2YgZXJyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBFcnJvcignQW4gdW5kZWZpbmVkIGVycm9yIHdhcyB0aHJvd24sICcgKyAnc2VlIGhlcmUgZm9yIG1vcmUgaW5mbzogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvdGhyZXctdW5kZWZpbmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVyciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBFcnJvcignQSBudWxsIGVycm9yIHdhcyB0aHJvd24sICcgKyAnc2VlIGhlcmUgZm9yIG1vcmUgaW5mbzogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvdGhyZXctdW5kZWZpbmVkJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBFcnJvcigoMCwgX2lzUGxhaW5PYmplY3QpLmlzUGxhaW5PYmplY3QoZXJyKSA/IEpTT04uc3RyaW5naWZ5KGVycikgOiBlcnIgKyAnJyk7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLWVycm9yLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/lib/is-error.js\n");
+
+/***/ }),
+
+/***/ "./node_modules/next/link.js":
+/*!***********************************!*\
+ !*** ./node_modules/next/link.js ***!
+ \***********************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! ./dist/client/link */ \"./node_modules/next/dist/client/link.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9saW5rLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFBLHlHQUE4QyIsInNvdXJjZXMiOlsid2VicGFjazovL2J1cm4tbXktd2FsbGV0Ly4vbm9kZV9tb2R1bGVzL25leHQvbGluay5qcz83NWIzIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9kaXN0L2NsaWVudC9saW5rJylcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/link.js\n");
+
+/***/ }),
+
+/***/ "@chakra-ui/icons":
+/*!***********************************!*\
+ !*** external "@chakra-ui/icons" ***!
+ \***********************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("@chakra-ui/icons");
+
+/***/ }),
+
+/***/ "@chakra-ui/react":
+/*!***********************************!*\
+ !*** external "@chakra-ui/react" ***!
+ \***********************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("@chakra-ui/react");
+
+/***/ }),
+
+/***/ "@chakra-ui/theme-tools":
+/*!*****************************************!*\
+ !*** external "@chakra-ui/theme-tools" ***!
+ \*****************************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("@chakra-ui/theme-tools");
+
+/***/ }),
+
+/***/ "next/dist/compiled/react-is":
+/*!**********************************************!*\
+ !*** external "next/dist/compiled/react-is" ***!
+ \**********************************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("next/dist/compiled/react-is");
+
+/***/ }),
+
+/***/ "../shared/lib/head-manager-context":
+/*!***************************************************************!*\
+ !*** external "next/dist/shared/lib/head-manager-context.js" ***!
+ \***************************************************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("next/dist/shared/lib/head-manager-context.js");
+
+/***/ }),
+
+/***/ "../i18n/normalize-locale-path":
+/*!*********************************************************************!*\
+ !*** external "next/dist/shared/lib/i18n/normalize-locale-path.js" ***!
+ \*********************************************************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("next/dist/shared/lib/i18n/normalize-locale-path.js");
+
+/***/ }),
+
+/***/ "../shared/lib/is-plain-object":
+/*!**********************************************************!*\
+ !*** external "next/dist/shared/lib/is-plain-object.js" ***!
+ \**********************************************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("next/dist/shared/lib/is-plain-object.js");
+
+/***/ }),
+
+/***/ "../mitt":
+/*!***********************************************!*\
+ !*** external "next/dist/shared/lib/mitt.js" ***!
+ \***********************************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("next/dist/shared/lib/mitt.js");
+
+/***/ }),
+
+/***/ "../page-path/denormalize-page-path":
+/*!**************************************************************************!*\
+ !*** external "next/dist/shared/lib/page-path/denormalize-page-path.js" ***!
+ \**************************************************************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("next/dist/shared/lib/page-path/denormalize-page-path.js");
+
+/***/ }),
+
+/***/ "../shared/lib/router-context":
+/*!*********************************************************!*\
+ !*** external "next/dist/shared/lib/router-context.js" ***!
+ \*********************************************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("next/dist/shared/lib/router-context.js");
+
+/***/ }),
+
+/***/ "./utils/format-url":
+/*!******************************************************************!*\
+ !*** external "next/dist/shared/lib/router/utils/format-url.js" ***!
+ \******************************************************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("next/dist/shared/lib/router/utils/format-url.js");
+
+/***/ }),
+
+/***/ "../shared/lib/router/utils/get-asset-path-from-route":
+/*!*********************************************************************************!*\
+ !*** external "next/dist/shared/lib/router/utils/get-asset-path-from-route.js" ***!
+ \*********************************************************************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("next/dist/shared/lib/router/utils/get-asset-path-from-route.js");
+
+/***/ }),
+
+/***/ "./utils/get-middleware-regex":
+/*!****************************************************************************!*\
+ !*** external "next/dist/shared/lib/router/utils/get-middleware-regex.js" ***!
+ \****************************************************************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("next/dist/shared/lib/router/utils/get-middleware-regex.js");
+
+/***/ }),
+
+/***/ "./utils/is-dynamic":
+/*!******************************************************************!*\
+ !*** external "next/dist/shared/lib/router/utils/is-dynamic.js" ***!
+ \******************************************************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("next/dist/shared/lib/router/utils/is-dynamic.js");
+
+/***/ }),
+
+/***/ "./utils/parse-relative-url":
+/*!**************************************************************************!*\
+ !*** external "next/dist/shared/lib/router/utils/parse-relative-url.js" ***!
+ \**************************************************************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("next/dist/shared/lib/router/utils/parse-relative-url.js");
+
+/***/ }),
+
+/***/ "./utils/querystring":
+/*!*******************************************************************!*\
+ !*** external "next/dist/shared/lib/router/utils/querystring.js" ***!
+ \*******************************************************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("next/dist/shared/lib/router/utils/querystring.js");
+
+/***/ }),
+
+/***/ "./utils/resolve-rewrites":
+/*!************************************************************************!*\
+ !*** external "next/dist/shared/lib/router/utils/resolve-rewrites.js" ***!
+ \************************************************************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("next/dist/shared/lib/router/utils/resolve-rewrites.js");
+
+/***/ }),
+
+/***/ "./utils/route-matcher":
+/*!*********************************************************************!*\
+ !*** external "next/dist/shared/lib/router/utils/route-matcher.js" ***!
+ \*********************************************************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("next/dist/shared/lib/router/utils/route-matcher.js");
+
+/***/ }),
+
+/***/ "./utils/route-regex":
+/*!*******************************************************************!*\
+ !*** external "next/dist/shared/lib/router/utils/route-regex.js" ***!
+ \*******************************************************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("next/dist/shared/lib/router/utils/route-regex.js");
+
+/***/ }),
+
+/***/ "../utils":
+/*!************************************************!*\
+ !*** external "next/dist/shared/lib/utils.js" ***!
+ \************************************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("next/dist/shared/lib/utils.js");
+
+/***/ }),
+
+/***/ "next/router":
+/*!******************************!*\
+ !*** external "next/router" ***!
+ \******************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("next/router");
+
+/***/ }),
+
+/***/ "react":
+/*!************************!*\
+ !*** external "react" ***!
+ \************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("react");
+
+/***/ }),
+
+/***/ "react/jsx-dev-runtime":
+/*!****************************************!*\
+ !*** external "react/jsx-dev-runtime" ***!
+ \****************************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("react/jsx-dev-runtime");
+
+/***/ }),
+
+/***/ "wagmi":
+/*!************************!*\
+ !*** external "wagmi" ***!
+ \************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("wagmi");
+
+/***/ }),
+
+/***/ "wagmi/connectors/coinbaseWallet":
+/*!**************************************************!*\
+ !*** external "wagmi/connectors/coinbaseWallet" ***!
+ \**************************************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("wagmi/connectors/coinbaseWallet");
+
+/***/ }),
+
+/***/ "wagmi/connectors/metaMask":
+/*!********************************************!*\
+ !*** external "wagmi/connectors/metaMask" ***!
+ \********************************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("wagmi/connectors/metaMask");
+
+/***/ }),
+
+/***/ "wagmi/connectors/walletConnect":
+/*!*************************************************!*\
+ !*** external "wagmi/connectors/walletConnect" ***!
+ \*************************************************/
+/***/ ((module) => {
+
+"use strict";
+module.exports = require("wagmi/connectors/walletConnect");
+
+/***/ })
+
+};
+;
+
+// load runtime
+var __webpack_require__ = require("../webpack-runtime.js");
+__webpack_require__.C(exports);
+var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
+var __webpack_exports__ = (__webpack_exec__("./pages/_app.tsx"));
+module.exports = __webpack_exports__;
+
+})();
\ No newline at end of file
diff --git a/frontend/.next/server/pages/_document.js b/frontend/.next/server/pages/_document.js
new file mode 100644
index 0000000..8477f5f
--- /dev/null
+++ b/frontend/.next/server/pages/_document.js
@@ -0,0 +1,166 @@
+"use strict";
+/*
+ * 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/).
+ */
+(() => {
+var exports = {};
+exports.id = "pages/_document";
+exports.ids = ["pages/_document"];
+exports.modules = {
+
+/***/ "./node_modules/next/dist/client/head-manager.js":
+/*!*******************************************************!*\
+ !*** ./node_modules/next/dist/client/head-manager.js ***!
+ \*******************************************************/
+/***/ ((module, exports) => {
+
+eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = initHeadManager;\nexports.isEqualNode = isEqualNode;\nexports.DOMAttributeNames = void 0;\nfunction initHeadManager() {\n let updatePromise = null;\n return {\n mountedInstances: new Set(),\n updateHead: (head)=>{\n const promise = updatePromise = Promise.resolve().then(()=>{\n if (promise !== updatePromise) return;\n updatePromise = null;\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=\"${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 };\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({ type , props }) {\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 || j === void 0 ? void 0 : j.previousElementSibling) || null){\n var ref;\n if ((j === null || j === void 0 ? void 0 : (ref = j.tagName) === null || ref === void 0 ? 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 || ref === void 0 ? void 0 : ref.removeChild(t);\n });\n newTags.forEach((t)=>headEl.insertBefore(t, headCountEl)\n );\n headCountEl.content = (headCount - oldTags.length + newTags.length).toString();\n}\nif (typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) {\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=head-manager.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9oZWFkLW1hbmFnZXIuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxLQUFLLEVBQUUsSUFBSTtDQUNkLEVBQUMsQ0FBQztBQUNIRCxrQkFBZSxHQUFHRyxlQUFlLENBQUM7QUFDbENILG1CQUFtQixHQUFHSSxXQUFXLENBQUM7QUFDbENKLHlCQUF5QixHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ25DLFNBQVNHLGVBQWUsR0FBRztJQUN2QixJQUFJRyxhQUFhLEdBQUcsSUFBSTtJQUN4QixPQUFPO1FBQ0hDLGdCQUFnQixFQUFFLElBQUlDLEdBQUcsRUFBRTtRQUMzQkMsVUFBVSxFQUFFLENBQUNDLElBQUksR0FBRztZQUNoQixNQUFNQyxPQUFPLEdBQUdMLGFBQWEsR0FBR00sT0FBTyxDQUFDQyxPQUFPLEVBQUUsQ0FBQ0MsSUFBSSxDQUFDLElBQUk7Z0JBQ3ZELElBQUlILE9BQU8sS0FBS0wsYUFBYSxFQUFFLE9BQU87Z0JBQ3RDQSxhQUFhLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixNQUFNUyxJQUFJLEdBQUcsRUFBRTtnQkFDZkwsSUFBSSxDQUFDTSxPQUFPLENBQUMsQ0FBQ0MsQ0FBQyxHQUFHO29CQUNkLElBQ0Esb0VBQW9FO29CQUNwRUEsQ0FBQyxDQUFDQyxJQUFJLEtBQUssTUFBTSxJQUFJRCxDQUFDLENBQUNFLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO3dCQUNsRCxJQUFJQyxRQUFRLENBQUNDLGFBQWEsQ0FBQyxDQUFDLGlCQUFpQixFQUFFSixDQUFDLENBQUNFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFOzRCQUN0RSxPQUFPO3lCQUNWLE1BQU07NEJBQ0hGLENBQUMsQ0FBQ0UsS0FBSyxDQUFDRyxJQUFJLEdBQUdMLENBQUMsQ0FBQ0UsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDOzRCQUNwQ0YsQ0FBQyxDQUFDRSxLQUFL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TUFBTSxDQUFDcEYsT0FBTyxDQUFDRSxPQUFPLEVBQUVGLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDcUYsTUFBTSxDQUFDckYsT0FBTyxHQUFHQSxPQUFPLENBQUNFLE9BQU8sQ0FBQztDQUNsQyxDQUVELHdDQUF3QyIsInNvdXJjZXMiOlsid2VicGFjazovL2J1cm4tbXktd2FsbGV0Ly4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvaGVhZC1tYW5hZ2VyLmpzP2NhNGEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpbml0SGVhZE1hbmFnZXI7XG5leHBvcnRzLmlzRXF1YWxOb2RlID0gaXNFcXVhbE5vZGU7XG5leHBvcnRzLkRPTUF0dHJpYnV0ZU5hbWVzID0gdm9pZCAwO1xuZnVuY3Rpb24gaW5pdEhlYWRNYW5hZ2VyKCkge1xuICAgIGxldCB1cGRhdGVQcm9taXNlID0gbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgICBtb3VudGVkSW5zdGFuY2VzOiBuZXcgU2V0KCksXG4gICAgICAgIHVwZGF0ZUhlYWQ6IChoZWFkKT0+e1xuICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHVwZGF0ZVByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT57XG4gICAgICAgICAgICAgICAgaWYgKHByb21pc2UgIT09IHVwZGF0ZVByb21pc2UpIHJldHVybjtcbiAgICAgICAgICAgICAgICB1cGRhdGVQcm9taXNlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBjb25zdCB0YWdzID0ge307XG4gICAgICAgICAgICAgICAgaGVhZC5mb3JFYWNoKChoKT0+e1xuICAgICAgICAgICAgICAgICAgICBpZiAoLy8gSWYgdGhlIGZvbnQgdGFnIGlzIGxvYWRlZCBvbmx5IG9uIGNsaWVudCBuYXZpZ2F0aW9uXG4gICAgICAgICAgICAgICAgICAgIC8vIGl0IHdvbid0IGJlIGlubGluZWQuIEluIHRoaXMgY2FzZSByZXZlcnQgdG8gdGhlIG9yaWdpbmFsIGJlaGF2aW9yXG4gICAgICAgICAgICAgICAgICAgIGgudHlwZSA9PT0gJ2xpbmsnICYmIGgucHJvcHNbJ2RhdGEtb3B0aW1pemVkLWZvbnRzJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBzdHlsZVtkYXRhLWhyZWY9XCIke2gucHJvcHNbJ2RhdGEtaHJlZiddfVwiXWApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLnByb3BzLmhyZWYgPSBoLnByb3BzWydkYXRhLWhyZWYnXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLnByb3BzWydkYXRhLWhyZWYnXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRzID0gdGFnc1toLnR5cGVdIHx8IFtdO1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzLnB1c2goaCk7XG4gICAgICAgICAgICAgICAgICAgIHRhZ3NbaC50eXBlXSA9IGNvbXBvbmVudHM7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGl0bGVDb21wb25lbnQgPSB0YWdzLnRpdGxlID8gdGFncy50aXRsZVswXSA6IG51bGw7XG4gICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gJyc7XG4gICAgICAgICAgICAgICAgaWYgKHRpdGxlQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgY2hpbGRyZW4gIH0gPSB0aXRsZUNvbXBvbmVudC5wcm9wcztcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB0eXBlb2YgY2hpbGRyZW4gPT09ICdzdHJpbmcnID8gY2hpbGRyZW4gOiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSA/IGNoaWxkcmVuLmpvaW4oJycpIDogJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aXRsZSAhPT0gZG9jdW1lbnQudGl0bGUpIGRvY3VtZW50LnRpdGxlID0gdGl0bGU7XG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAnbWV0YScsXG4gICAgICAgICAgICAgICAgICAgICdiYXNlJyxcbiAgICAgICAgICAgICAgICAgICAgJ2xpbmsnLFxuICAgICAgICAgICAgICAgICAgICAnc3R5bGUnLFxuICAgICAgICAgICAgICAgICAgICAnc2NyaXB0J1xuICAgICAgICAgICAgICAgIF0uZm9yRWFjaCgodHlwZSk9PntcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlRWxlbWVudHModHlwZSwgdGFnc1t0eXBlXSB8fCBbXSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG59XG5jb25zdCBET01BdHRyaWJ1dGVOYW1lcyA9IHtcbiAgICBhY2NlcHRDaGFyc2V0OiAnYWNjZXB0LWNoYXJzZXQnLFxuICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICBodG1sRm9yOiAnZm9yJyxcbiAgICBodHRwRXF1aXY6ICdodHRwLWVxdWl2JyxcbiAgICBub01vZHVsZTogJ25vTW9kdWxlJ1xufTtcbmV4cG9ydHMuRE9NQXR0cmlidXRlTmFtZXMgPSBET01BdHRyaWJ1dGVOYW1lcztcbmZ1bmN0aW9uIHJlYWN0RWxlbWVudFRvRE9NKHsgdHlwZSAsIHByb3BzICB9KSB7XG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHR5cGUpO1xuICAgIGZvcihjb25zdCBwIGluIHByb3BzKXtcbiAgICAgICAgaWYgKCFwcm9wcy5oYXNPd25Qcm9wZXJ0eShwKSkgY29udGludWU7XG4gICAgICAgIGlmIChwID09PSAnY2hpbGRyZW4nIHx8IHAgPT09ICdkYW5nZXJvdXNseVNldElubmVySFRNTCcpIGNvbnRpbnVlO1xuICAgICAgICAvLyB3ZSBkb24ndCByZW5kZXIgdW5kZWZpbmVkIHByb3BzIHRvIHRoZSBET01cbiAgICAgICAgaWYgKHByb3BzW3BdID09PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCBhdHRyID0gRE9NQXR0cmlidXRlTmFtZXNbcF0gfHwgcC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAodHlwZSA9PT0gJ3NjcmlwdCcgJiYgKGF0dHIgPT09ICdhc3luYycgfHwgYXR0ciA9PT0gJ2RlZmVyJyB8fCBhdHRyID09PSAnbm9Nb2R1bGUnKSkge1xuICAgICAgICAgICAgZWxbYXR0cl0gPSAhIXByb3BzW3BdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKGF0dHIsIHByb3BzW3BdKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB7IGNoaWxkcmVuICwgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgIH0gPSBwcm9wcztcbiAgICBpZiAoZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpIHtcbiAgICAgICAgZWwuaW5uZXJIVE1MID0gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sIHx8ICcnO1xuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcbiAgICAgICAgZWwudGV4dENvbnRlbnQgPSB0eXBlb2YgY2hpbGRyZW4gPT09ICdzdHJpbmcnID8gY2hpbGRyZW4gOiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSA/IGNoaWxkcmVuLmpvaW4oJycpIDogJyc7XG4gICAgfVxuICAgIHJldHVybiBlbDtcbn1cbmZ1bmN0aW9uIGlzRXF1YWxOb2RlKG9sZFRhZywgbmV3VGFnKSB7XG4gICAgaWYgKG9sZFRhZyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIG5ld1RhZyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IG5vbmNlID0gbmV3VGFnLmdldEF0dHJpYnV0ZSgnbm9uY2UnKTtcbiAgICAgICAgLy8gT25seSBzdHJpcCB0aGUgbm9uY2UgaWYgYG9sZFRhZ2AgaGFzIGhhZCBpdCBzdHJpcHBlZC4gQW4gZWxlbWVudCdzIG5vbmNlIGF0dHJpYnV0ZSB3aWxsIG5vdFxuICAgICAgICAvLyBiZSBzdHJpcHBlZCBpZiB0aGVyZSBpcyBubyBjb250ZW50IHNlY3VyaXR5IHBvbGljeSByZXNwb25zZSBoZWFkZXIgdGhhdCBpbmNsdWRlcyBhIG5vbmNlLlxuICAgICAgICBpZiAobm9uY2UgJiYgIW9sZFRhZy5nZXRBdHRyaWJ1dGUoJ25vbmNlJykpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsb25lVGFnID0gbmV3VGFnLmNsb25lTm9kZSh0cnVlKTtcbiAgICAgICAgICAgIGNsb25lVGFnLnNldEF0dHJpYnV0ZSgnbm9uY2UnLCAnJyk7XG4gICAgICAgICAgICBjbG9uZVRhZy5ub25jZSA9IG5vbmNlO1xuICAgICAgICAgICAgcmV0dXJuIG5vbmNlID09PSBvbGRUYWcubm9uY2UgJiYgb2xkVGFnLmlzRXF1YWxOb2RlKGNsb25lVGFnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2xkVGFnLmlzRXF1YWxOb2RlKG5ld1RhZyk7XG59XG5mdW5jdGlvbiB1cGRhdGVFbGVtZW50cyh0eXBlLCBjb21wb25lbnRzKSB7XG4gICAgY29uc3QgaGVhZEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiAgICBjb25zdCBoZWFkQ291bnRFbCA9IGhlYWRFbC5xdWVyeVNlbGVjdG9yKCdtZXRhW25hbWU9bmV4dC1oZWFkLWNvdW50XScpO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmICghaGVhZENvdW50RWwpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1dhcm5pbmc6IG5leHQtaGVhZC1jb3VudCBpcyBtaXNzaW5nLiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9uZXh0LWhlYWQtY291bnQtbWlzc2luZycpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGhlYWRDb3VudCA9IE51bWJlcihoZWFkQ291bnRFbC5jb250ZW50KTtcbiAgICBjb25zdCBvbGRUYWdzID0gW107XG4gICAgZm9yKGxldCBpID0gMCwgaiA9IGhlYWRDb3VudEVsLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7IGkgPCBoZWFkQ291bnQ7IGkrKywgaiA9IChqID09PSBudWxsIHx8IGogPT09IHZvaWQgMCA/IHZvaWQgMCA6IGoucHJldmlvdXNFbGVtZW50U2libGluZykgfHwgbnVsbCl7XG4gICAgICAgIHZhciByZWY7XG4gICAgICAgIGlmICgoaiA9PT0gbnVsbCB8fCBqID09PSB2b2lkIDAgPyB2b2lkIDAgOiAocmVmID0gai50YWdOYW1lKSA9PT0gbnVsbCB8fCByZWYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlZi50b0xvd2VyQ2FzZSgpKSA9PT0gdHlwZSkge1xuICAgICAgICAgICAgb2xkVGFncy5wdXNoKGopO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IG5ld1RhZ3MgPSBjb21wb25lbnRzLm1hcChyZWFjdEVsZW1lbnRUb0RPTSkuZmlsdGVyKChuZXdUYWcpPT57XG4gICAgICAgIGZvcihsZXQgayA9IDAsIGxlbiA9IG9sZFRhZ3MubGVuZ3RoOyBrIDwgbGVuOyBrKyspe1xuICAgICAgICAgICAgY29uc3Qgb2xkVGFnID0gb2xkVGFnc1trXTtcbiAgICAgICAgICAgIGlmIChpc0VxdWFsTm9kZShvbGRUYWcsIG5ld1RhZykpIHtcbiAgICAgICAgICAgICAgICBvbGRUYWdzLnNwbGljZShrLCAxKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gICAgb2xkVGFncy5mb3JFYWNoKCh0KT0+e1xuICAgICAgICB2YXIgcmVmO1xuICAgICAgICByZXR1cm4gKHJlZiA9IHQucGFyZW50Tm9kZSkgPT09IG51bGwgfHwgcmVmID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZWYucmVtb3ZlQ2hpbGQodCk7XG4gICAgfSk7XG4gICAgbmV3VGFncy5mb3JFYWNoKCh0KT0+aGVhZEVsLmluc2VydEJlZm9yZSh0LCBoZWFkQ291bnRFbClcbiAgICApO1xuICAgIGhlYWRDb3VudEVsLmNvbnRlbnQgPSAoaGVhZENvdW50IC0gb2xkVGFncy5sZW5ndGggKyBuZXdUYWdzLmxlbmd0aCkudG9TdHJpbmcoKTtcbn1cblxuaWYgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpIHtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGVhZC1tYW5hZ2VyLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImRlZmF1bHQiLCJpbml0SGVhZE1hbmFnZXIiLCJpc0VxdWFsTm9kZSIsIkRPTUF0dHJpYnV0ZU5hbWVzIiwidXBkYXRlUHJvbWlzZSIsIm1vdW50ZWRJbnN0YW5jZXMiLCJTZXQiLCJ1cGRhdGVIZWFkIiwiaGVhZCIsInByb21pc2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJ0YWdzIiwiZm9yRWFjaCIsImgiLCJ0eXBlIiwicHJvcHMiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJocmVmIiwidW5kZWZpbmVkIiwiY29tcG9uZW50cyIsInB1c2giLCJ0aXRsZUNvbXBvbmVudCIsInRpdGxlIiwiY2hpbGRyZW4iLCJBcnJheSIsImlzQXJyYXkiLCJqb2luIiwidXBkYXRlRWxlbWVudHMiLCJhY2NlcHRDaGFyc2V0IiwiY2xhc3NOYW1lIiwiaHRtbEZvciIsImh0dHBFcXVpdiIsIm5vTW9kdWxlIiwicmVhY3RFbGVtZW50VG9ET00iLCJlbCIsImNyZWF0ZUVsZW1lbnQiLCJwIiwiaGFzT3duUHJvcGVydHkiLCJhdHRyIiwidG9Mb3dlckNhc2UiLCJzZXRBdHRyaWJ1dGUiLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsImlubmVySFRNTCIsIl9faHRtbCIsInRleHRDb250ZW50Iiwib2xkVGFnIiwibmV3VGFnIiwiSFRNTEVsZW1lbnQiLCJub25jZSIsImdldEF0dHJpYnV0ZSIsImNsb25lVGFnIiwiY2xvbmVOb2RlIiwiaGVhZEVsIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJoZWFkQ291bnRFbCIsInByb2Nlc3MiLCJjb25zb2xlIiwiZXJyb3IiLCJoZWFkQ291bnQiLCJOdW1iZXIiLCJjb250ZW50Iiwib2xkVGFncyIsImkiLCJqIiwicHJldmlvdXNFbGVtZW50U2libGluZyIsInJlZiIsInRhZ05hbWUiLCJuZXdUYWdzIiwibWFwIiwiZmlsdGVyIiwiayIsImxlbiIsImxlbmd0aCIsInNwbGljZSIsInQiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJ0b1N0cmluZyIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/head-manager.js\n");
+
+/***/ }),
+
+/***/ "./node_modules/next/dist/client/request-idle-callback.js":
+/*!****************************************************************!*\
+ !*** ./node_modules/next/dist/client/request-idle-callback.js ***!
+ \****************************************************************/
+/***/ ((module, exports) => {
+
+eval("\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 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) {\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=request-idle-callback.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZXF1ZXN0LWlkbGUtY2FsbGJhY2suanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxLQUFLLEVBQUUsSUFBSTtDQUNkLEVBQUMsQ0FBQztBQUNIRCwwQkFBMEIsR0FBR0EsMkJBQTJCLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDbEUsTUFBTUcsbUJBQW1CLEdBQUcsT0FBT0MsSUFBSSxLQUFLLFdBQVcsSUFBSUEsSUFBSSxDQUFDRCxtQkFBbUIsSUFBSUMsSUFBSSxDQUFDRCxtQkFBbUIsQ0FBQ0UsSUFBSSxDQUFDQyxNQUFNLENBQUMsSUFBSSxTQUFTQyxFQUFFLEVBQUU7SUFDekksSUFBSUMsS0FBSyxHQUFHQyxJQUFJLENBQUNDLEdBQUcsRUFBRTtJQUN0QixPQUFPQyxVQUFVLENBQUMsV0FBVztRQUN6QkosRUFBRSxDQUFDO1lBQ0NLLFVBQVUsRUFBRSxLQUFLO1lBQ2pCQyxhQUFhLEVBQUUsV0FBVztnQkFDdEIsT0FBT0MsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDTixJQUFJLENBQUNDLEdBQUcsRUFBRSxHQUFHRixLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ2pEO1NBQ0osQ0FBQyxDQUFDO0tBQ04sRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNUO0FBQ0RSLDJCQUEyQixHQUFHRyxtQkFBbUIsQ0FBQztBQUNsRCxNQUFNRCxrQkFBa0IsR0FBRyxPQUFPRSxJQUFJLEtBQUssV0FBVyxJQUFJQSxJQUFJLENBQUNGLGtCQUFrQixJQUFJRSxJQUFJLENBQUNGLGtCQUFrQixDQUFDRyxJQUFJLENBQUNDLE1BQU0sQ0FBQyxJQUFJLFNBQVNVLEVBQUUsRUFBRTtJQUN0SSxPQUFPQyxZQUFZLENBQUNELEVBQUUsQ0FBQyxDQUFDO0NBQzNCO0FBQ0RoQiwwQkFBMEIsR0FBR0Usa0JBQWtCLENBQUM7QUFFaEQsSUFBSSxPQUFPRixPQUFPLENBQUNrQixPQUFPLEtBQUssVUFBVSxJQUFLLE9BQU9sQixPQUFPLENBQUNrQixPQUFPLEtBQUssUUFBUSxJQUFJbEIsT0FBTyxDQUFDa0IsT0FBTyxLQUFLLElBQUksRUFBRztJQUM5R3BCLE1BQU0sQ0FBQ3FCLE1BQU0sQ0FBQ25CLE9BQU8sQ0FBQ2tCLE9BQU8sRUFBRWxCLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDb0IsTUFBTSxDQUFDcEIsT0FBTyxHQUFHQSxPQUFPLENBQUNrQixPQUFPLENBQUM7Q0FDbEMsQ0FFRCxpREFBaUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9idXJuLW15LXdhbGxldC8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3JlcXVlc3QtaWRsZS1jYWxsYmFjay5qcz8xZTIwIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5jYW5jZWxJZGxlQ2FsbGJhY2sgPSBleHBvcnRzLnJlcXVlc3RJZGxlQ2FsbGJhY2sgPSB2b2lkIDA7XG5jb25zdCByZXF1ZXN0SWRsZUNhbGxiYWNrID0gdHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnICYmIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayAmJiBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2suYmluZCh3aW5kb3cpIHx8IGZ1bmN0aW9uKGNiKSB7XG4gICAgbGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICByZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgY2Ioe1xuICAgICAgICAgICAgZGlkVGltZW91dDogZmFsc2UsXG4gICAgICAgICAgICB0aW1lUmVtYWluaW5nOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoMCwgNTAgLSAoRGF0ZS5ub3coKSAtIHN0YXJ0KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0sIDEpO1xufTtcbmV4cG9ydHMucmVxdWVzdElkbGVDYWxsYmFjayA9IHJlcXVlc3RJZGxlQ2FsbGJhY2s7XG5jb25zdCBjYW5jZWxJZGxlQ2FsbGJhY2sgPSB0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5jYW5jZWxJZGxlQ2FsbGJhY2sgJiYgc2VsZi5jYW5jZWxJZGxlQ2FsbGJhY2suYmluZCh3aW5kb3cpIHx8IGZ1bmN0aW9uKGlkKSB7XG4gICAgcmV0dXJuIGNsZWFyVGltZW91dChpZCk7XG59O1xuZXhwb3J0cy5jYW5jZWxJZGxlQ2FsbGJhY2sgPSBjYW5jZWxJZGxlQ2FsbGJhY2s7XG5cbmlmICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSB7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlcXVlc3QtaWRsZS1jYWxsYmFjay5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJjYW5jZWxJZGxlQ2FsbGJhY2siLCJyZXF1ZXN0SWRsZUNhbGxiYWNrIiwic2VsZiIsImJpbmQiLCJ3aW5kb3ciLCJjYiIsInN0YXJ0IiwiRGF0ZSIsIm5vdyIsInNldFRpbWVvdXQiLCJkaWRUaW1lb3V0IiwidGltZVJlbWFpbmluZyIsIk1hdGgiLCJtYXgiLCJpZCIsImNsZWFyVGltZW91dCIsImRlZmF1bHQiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/request-idle-callback.js\n");
+
+/***/ }),
+
+/***/ "./node_modules/next/dist/client/script.js":
+/*!*************************************************!*\
+ !*** ./node_modules/next/dist/client/script.js ***!
+ \*************************************************/
+/***/ ((module, exports, __webpack_require__) => {
+
+eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.handleClientScriptLoad = handleClientScriptLoad;\nexports.initScriptLoader = initScriptLoader;\nexports[\"default\"] = void 0;\nvar _react = _interopRequireWildcard(__webpack_require__(/*! react */ \"react\"));\nvar _headManagerContext = __webpack_require__(/*! ../shared/lib/head-manager-context */ \"../shared/lib/head-manager-context\");\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\");\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n if (obj != null) {\n for(var key in obj){\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n if (desc.get || desc.set) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n }\n newObj.default = obj;\n return newObj;\n }\n}\nfunction _objectSpread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _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}\nconst ScriptCache = new Map();\nconst LoadCache = new Set();\nconst ignoreProps = [\n \"onLoad\",\n \"dangerouslySetInnerHTML\",\n \"children\",\n \"onError\",\n \"strategy\", \n];\nconst loadScript = (props)=>{\n const { src , id , onLoad =()=>{} , 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 // Execute onLoad since the script loading has begun\n ScriptCache.get(src).then(onLoad, onError);\n return;\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 });\n el.addEventListener(\"error\", function(e) {\n reject(e);\n });\n }).catch(function(e) {\n if (onError) {\n onError(e);\n }\n });\n if (src) {\n ScriptCache.set(src, loadPromise);\n }\n LoadCache.add(cacheKey);\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 } else if (src) {\n el.src = src;\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 });\n } else {\n loadScript(props);\n }\n}\nfunction loadLazyScript(props) {\n if (document.readyState === \"complete\") {\n (0, _requestIdleCallback).requestIdleCallback(()=>loadScript(props)\n );\n } else {\n window.addEventListener(\"load\", ()=>{\n (0, _requestIdleCallback).requestIdleCallback(()=>loadScript(props)\n );\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 const { src =\"\" , onLoad =()=>{} , strategy =\"afterInteractive\" , onError } = props, restProps = _objectWithoutProperties(props, [\n \"src\",\n \"onLoad\",\n \"strategy\",\n \"onError\"\n ]);\n // Context is available only during SSR\n const { updateScripts , scripts , getIsSsr } = (0, _react).useContext(_headManagerContext.HeadManagerContext);\n (0, _react).useEffect(()=>{\n if (strategy === \"afterInteractive\") {\n loadScript(props);\n } else if (strategy === \"lazyOnload\") {\n loadLazyScript(props);\n }\n }, [\n props,\n strategy\n ]);\n if (strategy === \"beforeInteractive\" || strategy === \"worker\") {\n if (updateScripts) {\n scripts[strategy] = (scripts[strategy] || []).concat([\n _objectSpread({\n src,\n onLoad,\n onError\n }, restProps), \n ]);\n updateScripts(scripts);\n } else if (getIsSsr && getIsSsr()) {\n // Script has already loaded during SSR\n LoadCache.add(restProps.id || src);\n } else if (getIsSsr && !getIsSsr()) {\n loadScript(props);\n }\n }\n return null;\n}\nvar _default = Script;\nexports[\"default\"] = _default;\nif (typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) {\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=script.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9zY3JpcHQuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxLQUFLLEVBQUUsSUFBSTtDQUNkLEVBQUMsQ0FBQztBQUNIRCw4QkFBOEIsR0FBR0Usc0JBQXNCLENBQUM7QUFDeERGLHdCQUF3QixHQUFHRyxnQkFBZ0IsQ0FBQztBQUM1Q0gsa0JBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUN6QixJQUFJSyxNQUFNLEdBQUdDLHVCQUF1QixDQUFDQyxtQkFBTyxDQUFDLG9CQUFPLENBQUMsQ0FBQztBQUN0RCxJQUFJQyxtQkFBbUIsR0FBR0QsbUJBQU8sQ0FBQyw4RUFBb0MsQ0FBQztBQUN2RSxJQUFJRSxZQUFZLEdBQUdGLG1CQUFPLENBQUMsdUVBQWdCLENBQUM7QUFDNUMsSUFBSUcsb0JBQW9CLEdBQUdILG1CQUFPLENBQUMseUZBQXlCLENBQUM7QUFDN0QsU0FBU0ksZUFBZSxDQUFDQyxHQUFHLEVBQUVDLEdBQUcsRUFBRVosS0FBSyxFQUFFO0lBQ3RDLElBQUlZLEdBQUcsSUFBSUQsR0FBRyxFQUFFO1FBQ1pkLE1BQU0sQ0FBQ0MsY0FBYyxDQUFDYSxHQUFHLEVBQUVDLEdBQUcsRUFBRTtZQUM1QlosS0FBSyxFQUFFQSxLQUFLO1lBQ1phLFVBQVUsRUFBRSxJQUFJO1lBQ2hCQyxZQUFZLEVBQUUsSUFBSTtZQUNsQkMsUUFBUSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0tBQ04sTUFBTTtRQUNISixHQUFHLENBQUNDLEdBQUcsQ0FBQyxHQUFHWixLQUFLLENBQUM7S0FDcEI7SUFDRCxPQUFPVyxHQUFHLENBQUM7Q0FDZDtBQUNELFNBQVNOLHVCQUF1QixDQUFDTSxHQUFHLEVBQUU7SUFDbEMsSUFBSUEsR0FBRyxJQUFJQSxHQUFHLENBQUNLLFVBQVUsRUFBRTtRQUN2QixPQUFPTCxHQUFHLENBQUM7S0FDZCxNQUFNO1FBQ0gsSUFBSU0sTUFBTSxHQUFHLEVBQUU7UUFD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T0FBTyxDQUFDSSxPQUFPLENBQUM7Q0FDbEMsQ0FFRCxrQ0FBa0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9idXJuLW15LXdhbGxldC8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3NjcmlwdC5qcz9iZDZhIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5oYW5kbGVDbGllbnRTY3JpcHRMb2FkID0gaGFuZGxlQ2xpZW50U2NyaXB0TG9hZDtcbmV4cG9ydHMuaW5pdFNjcmlwdExvYWRlciA9IGluaXRTY3JpcHRMb2FkZXI7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG52YXIgX3JlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcbnZhciBfaGVhZE1hbmFnZXJDb250ZXh0ID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvaGVhZC1tYW5hZ2VyLWNvbnRleHRcIik7XG52YXIgX2hlYWRNYW5hZ2VyID0gcmVxdWlyZShcIi4vaGVhZC1tYW5hZ2VyXCIpO1xudmFyIF9yZXF1ZXN0SWRsZUNhbGxiYWNrID0gcmVxdWlyZShcIi4vcmVxdWVzdC1pZGxlLWNhbGxiYWNrXCIpO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkge1xuICAgIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG9ialtrZXldID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG59XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHtcbiAgICBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG5ld09iaiA9IHt9O1xuICAgICAgICBpZiAob2JqICE9IG51bGwpIHtcbiAgICAgICAgICAgIGZvcih2YXIga2V5IGluIG9iail7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDoge307XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZXNjLmdldCB8fCBkZXNjLnNldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld09ialtrZXldID0gb2JqW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbmV3T2JqLmRlZmF1bHQgPSBvYmo7XG4gICAgICAgIHJldHVybiBuZXdPYmo7XG4gICAgfVxufVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHtcbiAgICBmb3IodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307XG4gICAgICAgIHZhciBvd25LZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgICAgICAgaWYgKHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIG93bktleXMgPSBvd25LZXlzLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSkuZmlsdGVyKGZ1bmN0aW9uKHN5bSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwgc3ltKS5lbnVtZXJhYmxlO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIG93bktleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgICAgIF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbn1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7XG4gICAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gICAgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpO1xuICAgIHZhciBrZXksIGk7XG4gICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICAgICAgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7XG4gICAgICAgIGZvcihpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspe1xuICAgICAgICAgICAga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTtcbiAgICAgICAgICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7XG4gICAgICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlO1xuICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xufVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkge1xuICAgIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9O1xuICAgIHZhciB0YXJnZXQgPSB7fTtcbiAgICB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XG4gICAgdmFyIGtleSwgaTtcbiAgICBmb3IoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAga2V5ID0gc291cmNlS2V5c1tpXTtcbiAgICAgICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcbiAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbn1cbmNvbnN0IFNjcmlwdENhY2hlID0gbmV3IE1hcCgpO1xuY29uc3QgTG9hZENhY2hlID0gbmV3IFNldCgpO1xuY29uc3QgaWdub3JlUHJvcHMgPSBbXG4gICAgJ29uTG9hZCcsXG4gICAgJ2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MJyxcbiAgICAnY2hpbGRyZW4nLFxuICAgICdvbkVycm9yJyxcbiAgICAnc3RyYXRlZ3knLCBcbl07XG5jb25zdCBsb2FkU2NyaXB0ID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgc3JjICwgaWQgLCBvbkxvYWQgPSgpPT57fSAsIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MICwgY2hpbGRyZW4gPScnICwgc3RyYXRlZ3kgPSdhZnRlckludGVyYWN0aXZlJyAsIG9uRXJyb3IgLCAgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gaWQgfHwgc3JjO1xuICAgIC8vIFNjcmlwdCBoYXMgYWxyZWFkeSBsb2FkZWRcbiAgICBpZiAoY2FjaGVLZXkgJiYgTG9hZENhY2hlLmhhcyhjYWNoZUtleSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBDb250ZW50cyBvZiB0aGlzIHNjcmlwdCBhcmUgYWxyZWFkeSBsb2FkaW5nL2xvYWRlZFxuICAgIGlmIChTY3JpcHRDYWNoZS5oYXMoc3JjKSkge1xuICAgICAgICBMb2FkQ2FjaGUuYWRkKGNhY2hlS2V5KTtcbiAgICAgICAgLy8gRXhlY3V0ZSBvbkxvYWQgc2luY2UgdGhlIHNjcmlwdCBsb2FkaW5nIGhhcyBiZWd1blxuICAgICAgICBTY3JpcHRDYWNoZS5nZXQoc3JjKS50aGVuKG9uTG9hZCwgb25FcnJvcik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICBjb25zdCBsb2FkUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57XG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICBpZiAob25Mb2FkKSB7XG4gICAgICAgICAgICAgICAgb25Mb2FkLmNhbGwodGhpcywgZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgfSk7XG4gICAgfSkuY2F0Y2goZnVuY3Rpb24oZSkge1xuICAgICAgICBpZiAob25FcnJvcikge1xuICAgICAgICAgICAgb25FcnJvcihlKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChzcmMpIHtcbiAgICAgICAgU2NyaXB0Q2FjaGUuc2V0KHNyYywgbG9hZFByb21pc2UpO1xuICAgIH1cbiAgICBMb2FkQ2FjaGUuYWRkKGNhY2hlS2V5KTtcbiAgICBpZiAoZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpIHtcbiAgICAgICAgZWwuaW5uZXJIVE1MID0gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sIHx8ICcnO1xuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcbiAgICAgICAgZWwudGV4dENvbnRlbnQgPSB0eXBlb2YgY2hpbGRyZW4gPT09ICdzdHJpbmcnID8gY2hpbGRyZW4gOiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSA/IGNoaWxkcmVuLmpvaW4oJycpIDogJyc7XG4gICAgfSBlbHNlIGlmIChzcmMpIHtcbiAgICAgICAgZWwuc3JjID0gc3JjO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IFtrLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocHJvcHMpKXtcbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgaWdub3JlUHJvcHMuaW5jbHVkZXMoaykpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGF0dHIgPSBfaGVhZE1hbmFnZXIuRE9NQXR0cmlidXRlTmFtZXNba10gfHwgay50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoYXR0ciwgdmFsdWUpO1xuICAgIH1cbiAgICBpZiAoc3RyYXRlZ3kgPT09ICd3b3JrZXInKSB7XG4gICAgICAgIGVsLnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0L3BhcnR5dG93bicpO1xuICAgIH1cbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ2RhdGEtbnNjcmlwdCcsIHN0cmF0ZWd5KTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsKTtcbn07XG5mdW5jdGlvbiBoYW5kbGVDbGllbnRTY3JpcHRMb2FkKHByb3BzKSB7XG4gICAgY29uc3QgeyBzdHJhdGVneSA9J2FmdGVySW50ZXJhY3RpdmUnICB9ID0gcHJvcHM7XG4gICAgaWYgKHN0cmF0ZWd5ID09PSAnbGF6eU9ubG9hZCcpIHtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKT0+e1xuICAgICAgICAgICAgKDAsIF9yZXF1ZXN0SWRsZUNhbGxiYWNrKS5yZXF1ZXN0SWRsZUNhbGxiYWNrKCgpPT5sb2FkU2NyaXB0KHByb3BzKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbG9hZFNjcmlwdChwcm9wcyk7XG4gICAgfVxufVxuZnVuY3Rpb24gbG9hZExhenlTY3JpcHQocHJvcHMpIHtcbiAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJykge1xuICAgICAgICAoMCwgX3JlcXVlc3RJZGxlQ2FsbGJhY2spLnJlcXVlc3RJZGxlQ2FsbGJhY2soKCk9PmxvYWRTY3JpcHQocHJvcHMpXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKT0+e1xuICAgICAgICAgICAgKDAsIF9yZXF1ZXN0SWRsZUNhbGxiYWNrKS5yZXF1ZXN0SWRsZUNhbGxiYWNrKCgpPT5sb2FkU2NyaXB0KHByb3BzKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZnVuY3Rpb24gYWRkQmVmb3JlSW50ZXJhY3RpdmVUb0NhY2hlKCkge1xuICAgIGNvbnN0IHNjcmlwdHMgPSBbXG4gICAgICAgIC4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLW5zY3JpcHQ9XCJiZWZvcmVJbnRlcmFjdGl2ZVwiXScpLFxuICAgICAgICAuLi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1uc2NyaXB0PVwiYmVmb3JlUGFnZVJlbmRlclwiXScpLCBcbiAgICBdO1xuICAgIHNjcmlwdHMuZm9yRWFjaCgoc2NyaXB0KT0+e1xuICAgICAgICBjb25zdCBjYWNoZUtleSA9IHNjcmlwdC5pZCB8fCBzY3JpcHQuZ2V0QXR0cmlidXRlKCdzcmMnKTtcbiAgICAgICAgTG9hZENhY2hlLmFkZChjYWNoZUtleSk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBpbml0U2NyaXB0TG9hZGVyKHNjcmlwdExvYWRlckl0ZW1zKSB7XG4gICAgc2NyaXB0TG9hZGVySXRlbXMuZm9yRWFjaChoYW5kbGVDbGllbnRTY3JpcHRMb2FkKTtcbiAgICBhZGRCZWZvcmVJbnRlcmFjdGl2ZVRvQ2FjaGUoKTtcbn1cbmZ1bmN0aW9uIFNjcmlwdChwcm9wcykge1xuICAgIGNvbnN0IHsgc3JjID0nJyAsIG9uTG9hZCA9KCk9Pnt9ICwgc3RyYXRlZ3kgPSdhZnRlckludGVyYWN0aXZlJyAsIG9uRXJyb3IgIH0gPSBwcm9wcywgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHByb3BzLCBbXG4gICAgICAgIFwic3JjXCIsXG4gICAgICAgIFwib25Mb2FkXCIsXG4gICAgICAgIFwic3RyYXRlZ3lcIixcbiAgICAgICAgXCJvbkVycm9yXCJcbiAgICBdKTtcbiAgICAvLyBDb250ZXh0IGlzIGF2YWlsYWJsZSBvbmx5IGR1cmluZyBTU1JcbiAgICBjb25zdCB7IHVwZGF0ZVNjcmlwdHMgLCBzY3JpcHRzICwgZ2V0SXNTc3IgIH0gPSAoMCwgX3JlYWN0KS51c2VDb250ZXh0KF9oZWFkTWFuYWdlckNvbnRleHQuSGVhZE1hbmFnZXJDb250ZXh0KTtcbiAgICAoMCwgX3JlYWN0KS51c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKHN0cmF0ZWd5ID09PSAnYWZ0ZXJJbnRlcmFjdGl2ZScpIHtcbiAgICAgICAgICAgIGxvYWRTY3JpcHQocHJvcHMpO1xuICAgICAgICB9IGVsc2UgaWYgKHN0cmF0ZWd5ID09PSAnbGF6eU9ubG9hZCcpIHtcbiAgICAgICAgICAgIGxvYWRMYXp5U2NyaXB0KHByb3BzKTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgcHJvcHMsXG4gICAgICAgIHN0cmF0ZWd5XG4gICAgXSk7XG4gICAgaWYgKHN0cmF0ZWd5ID09PSAnYmVmb3JlSW50ZXJhY3RpdmUnIHx8IHN0cmF0ZWd5ID09PSAnd29ya2VyJykge1xuICAgICAgICBpZiAodXBkYXRlU2NyaXB0cykge1xuICAgICAgICAgICAgc2NyaXB0c1tzdHJhdGVneV0gPSAoc2NyaXB0c1tzdHJhdGVneV0gfHwgW10pLmNvbmNhdChbXG4gICAgICAgICAgICAgICAgX29iamVjdFNwcmVhZCh7XG4gICAgICAgICAgICAgICAgICAgIHNyYyxcbiAgICAgICAgICAgICAgICAgICAgb25Mb2FkLFxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yXG4gICAgICAgICAgICAgICAgfSwgcmVzdFByb3BzKSwgXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICAgIHVwZGF0ZVNjcmlwdHMoc2NyaXB0cyk7XG4gICAgICAgIH0gZWxzZSBpZiAoZ2V0SXNTc3IgJiYgZ2V0SXNTc3IoKSkge1xuICAgICAgICAgICAgLy8gU2NyaXB0IGhhcyBhbHJlYWR5IGxvYWRlZCBkdXJpbmcgU1NSXG4gICAgICAgICAgICBMb2FkQ2FjaGUuYWRkKHJlc3RQcm9wcy5pZCB8fCBzcmMpO1xuICAgICAgICB9IGVsc2UgaWYgKGdldElzU3NyICYmICFnZXRJc1NzcigpKSB7XG4gICAgICAgICAgICBsb2FkU2NyaXB0KHByb3BzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbnZhciBfZGVmYXVsdCA9IFNjcmlwdDtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0O1xuXG5pZiAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkge1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1zY3JpcHQuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiaGFuZGxlQ2xpZW50U2NyaXB0TG9hZCIsImluaXRTY3JpcHRMb2FkZXIiLCJkZWZhdWx0IiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX2hlYWRNYW5hZ2VyQ29udGV4dCIsIl9oZWFkTWFuYWdlciIsIl9yZXF1ZXN0SWRsZUNhbGxiYWNrIiwiX2RlZmluZVByb3BlcnR5Iiwib2JqIiwia2V5IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX19lc01vZHVsZSIsIm5ld09iaiIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJnZXQiLCJzZXQiLCJfb2JqZWN0U3ByZWFkIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiY29uY2F0IiwiZmlsdGVyIiwic3ltIiwiZm9yRWFjaCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsImV4Y2x1ZGVkIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJzb3VyY2VTeW1ib2xLZXlzIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwic291cmNlS2V5cyIsIlNjcmlwdENhY2hlIiwiTWFwIiwiTG9hZENhY2hlIiwiU2V0IiwiaWdub3JlUHJvcHMiLCJsb2FkU2NyaXB0IiwicHJvcHMiLCJzcmMiLCJpZCIsIm9uTG9hZCIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiY2hpbGRyZW4iLCJzdHJhdGVneSIsIm9uRXJyb3IiLCJjYWNoZUtleSIsImhhcyIsImFkZCIsInRoZW4iLCJlbCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImxvYWRQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJhZGRFdmVudExpc3RlbmVyIiwiZSIsImNhdGNoIiwiaW5uZXJIVE1MIiwiX19odG1sIiwidGV4dENvbnRlbnQiLCJBcnJheSIsImlzQXJyYXkiLCJqb2luIiwiayIsImVudHJpZXMiLCJ1bmRlZmluZWQiLCJpbmNsdWRlcyIsImF0dHIiLCJET01BdHRyaWJ1dGVOYW1lcyIsInRvTG93ZXJDYXNlIiwic2V0QXR0cmlidXRlIiwiYm9keSIsImFwcGVuZENoaWxkIiwid2luZG93IiwicmVxdWVzdElkbGVDYWxsYmFjayIsImxvYWRMYXp5U2NyaXB0IiwicmVhZHlTdGF0ZSIsImFkZEJlZm9yZUludGVyYWN0aXZlVG9DYWNoZSIsInNjcmlwdHMiLCJxdWVyeVNlbGVjdG9yQWxsIiwic2NyaXB0IiwiZ2V0QXR0cmlidXRlIiwic2NyaXB0TG9hZGVySXRlbXMiLCJTY3JpcHQiLCJyZXN0UHJvcHMiLCJ1cGRhdGVTY3JpcHRzIiwiZ2V0SXNTc3IiLCJ1c2VDb250ZXh0IiwiSGVhZE1hbmFnZXJDb250ZXh0IiwidXNlRWZmZWN0IiwiX2RlZmF1bHQiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/script.js\n");
+
+/***/ }),
+
+/***/ "./node_modules/next/dist/pages/_document.js":
+/*!***************************************************!*\
+ !*** ./node_modules/next/dist/pages/_document.js ***!
+ \***************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Html = Html;\nexports.Main = Main;\nexports[\"default\"] = void 0;\nvar _react = _interopRequireWildcard(__webpack_require__(/*! react */ \"react\"));\nvar _constants = __webpack_require__(/*! ../shared/lib/constants */ \"../shared/lib/constants\");\nvar _getPageFiles = __webpack_require__(/*! ../server/get-page-files */ \"../server/get-page-files\");\nvar _utils = __webpack_require__(/*! ../server/utils */ \"../server/utils\");\nvar _htmlescape = __webpack_require__(/*! ../server/htmlescape */ \"../server/htmlescape\");\nvar _script = _interopRequireDefault(__webpack_require__(/*! ../client/script */ \"./node_modules/next/dist/client/script.js\"));\nvar _isError = _interopRequireDefault(__webpack_require__(/*! ../lib/is-error */ \"./node_modules/next/dist/lib/is-error.js\"));\nvar _htmlContext = __webpack_require__(/*! ../shared/lib/html-context */ \"../shared/lib/html-context\");\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n if (obj != null) {\n for(var key in obj){\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n if (desc.get || desc.set) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n }\n newObj.default = obj;\n return newObj;\n }\n}\nfunction getDocumentFiles(buildManifest, pathname, inAmpMode) {\n const sharedFiles = (0, _getPageFiles).getPageFiles(buildManifest, \"/_app\");\n const pageFiles = inAmpMode ? [] : (0, _getPageFiles).getPageFiles(buildManifest, pathname);\n return {\n sharedFiles,\n pageFiles,\n allFiles: [\n ...new Set([\n ...sharedFiles,\n ...pageFiles\n ])\n ]\n };\n}\nfunction getPolyfillScripts(context, props) {\n // polyfills.js has to be rendered as nomodule without async\n // It also has to be the first script to load\n const { assetPrefix , buildManifest , devOnlyCacheBusterQueryString , disableOptimizedLoading , crossOrigin , } = context;\n return buildManifest.polyfillFiles.filter((polyfill)=>polyfill.endsWith(\".js\") && !polyfill.endsWith(\".module.js\")\n ).map((polyfill)=>/*#__PURE__*/ _react.default.createElement(\"script\", {\n key: polyfill,\n defer: !disableOptimizedLoading,\n nonce: props.nonce,\n crossOrigin: props.crossOrigin || crossOrigin,\n noModule: true,\n src: `${assetPrefix}/_next/${polyfill}${devOnlyCacheBusterQueryString}`\n })\n );\n}\nfunction hasComponentProps(child) {\n return !!child && !!child.props;\n}\nfunction getPreNextWorkerScripts(context, props) {\n const { assetPrefix , scriptLoader , crossOrigin , nextScriptWorkers } = context;\n // disable `nextScriptWorkers` in edge runtime\n if (!nextScriptWorkers || \"nodejs\" === \"edge\") return null;\n try {\n let { partytownSnippet } = require(\"@builder.io/partytown/integration\");\n const children = Array.isArray(props.children) ? props.children : [\n props.children\n ];\n // Check to see if the user has defined their own Partytown configuration\n const userDefinedConfig = children.find((child)=>{\n var ref, ref1;\n return hasComponentProps(child) && (child === null || child === void 0 ? void 0 : (ref = child.props) === null || ref === void 0 ? void 0 : (ref1 = ref.dangerouslySetInnerHTML) === null || ref1 === void 0 ? void 0 : ref1.__html.length) && \"data-partytown-config\" in child.props;\n });\n return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, !userDefinedConfig && /*#__PURE__*/ _react.default.createElement(\"script\", {\n \"data-partytown-config\": \"\",\n dangerouslySetInnerHTML: {\n __html: `\n partytown = {\n lib: \"${assetPrefix}/_next/static/~partytown/\"\n };\n `\n }\n }), /*#__PURE__*/ _react.default.createElement(\"script\", {\n \"data-partytown\": \"\",\n dangerouslySetInnerHTML: {\n __html: partytownSnippet()\n }\n }), (scriptLoader.worker || []).map((file, index)=>{\n const { strategy , src , children: scriptChildren , dangerouslySetInnerHTML , ...scriptProps } = file;\n let srcProps = {};\n if (src) {\n // Use external src if provided\n srcProps.src = src;\n } else if (dangerouslySetInnerHTML && dangerouslySetInnerHTML.__html) {\n // Embed inline script if provided with dangerouslySetInnerHTML\n srcProps.dangerouslySetInnerHTML = {\n __html: dangerouslySetInnerHTML.__html\n };\n } else if (scriptChildren) {\n // Embed inline script if provided with children\n srcProps.dangerouslySetInnerHTML = {\n __html: typeof scriptChildren === \"string\" ? scriptChildren : Array.isArray(scriptChildren) ? scriptChildren.join(\"\") : \"\"\n };\n } else {\n throw new Error(\"Invalid usage of next/script. Did you forget to include a src attribute or an inline script? https://nextjs.org/docs/messages/invalid-script\");\n }\n return /*#__PURE__*/ _react.default.createElement(\"script\", Object.assign({}, srcProps, scriptProps, {\n type: \"text/partytown\",\n key: src || index,\n nonce: props.nonce,\n \"data-nscript\": \"worker\",\n crossOrigin: props.crossOrigin || crossOrigin\n }));\n }));\n } catch (err) {\n if ((0, _isError).default(err) && err.code !== \"MODULE_NOT_FOUND\") {\n console.warn(`Warning: ${err.message}`);\n }\n return null;\n }\n}\nfunction getPreNextScripts(context, props) {\n const { scriptLoader , disableOptimizedLoading , crossOrigin } = context;\n const webWorkerScripts = getPreNextWorkerScripts(context, props);\n const beforeInteractiveScripts = (scriptLoader.beforeInteractive || []).filter((script)=>script.src\n ).map((file, index)=>{\n const { strategy , ...scriptProps } = file;\n var _defer;\n return /*#__PURE__*/ _react.default.createElement(\"script\", Object.assign({}, scriptProps, {\n key: scriptProps.src || index,\n defer: (_defer = scriptProps.defer) !== null && _defer !== void 0 ? _defer : !disableOptimizedLoading,\n nonce: props.nonce,\n \"data-nscript\": \"beforeInteractive\",\n crossOrigin: props.crossOrigin || crossOrigin\n }));\n });\n return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, webWorkerScripts, beforeInteractiveScripts);\n}\nfunction getDynamicChunks(context, props, files) {\n const { dynamicImports , assetPrefix , isDevelopment , devOnlyCacheBusterQueryString , disableOptimizedLoading , crossOrigin , } = context;\n return dynamicImports.map((file)=>{\n if (!file.endsWith(\".js\") || files.allFiles.includes(file)) return null;\n return /*#__PURE__*/ _react.default.createElement(\"script\", {\n async: !isDevelopment && disableOptimizedLoading,\n defer: !disableOptimizedLoading,\n key: file,\n src: `${assetPrefix}/_next/${encodeURI(file)}${devOnlyCacheBusterQueryString}`,\n nonce: props.nonce,\n crossOrigin: props.crossOrigin || crossOrigin\n });\n });\n}\nfunction getScripts(context, props, files) {\n var ref;\n const { assetPrefix , buildManifest , isDevelopment , devOnlyCacheBusterQueryString , disableOptimizedLoading , crossOrigin , } = context;\n const normalScripts = files.allFiles.filter((file)=>file.endsWith(\".js\")\n );\n const lowPriorityScripts = (ref = buildManifest.lowPriorityFiles) === null || ref === void 0 ? void 0 : ref.filter((file)=>file.endsWith(\".js\")\n );\n return [\n ...normalScripts,\n ...lowPriorityScripts\n ].map((file)=>{\n return /*#__PURE__*/ _react.default.createElement(\"script\", {\n key: file,\n src: `${assetPrefix}/_next/${encodeURI(file)}${devOnlyCacheBusterQueryString}`,\n nonce: props.nonce,\n async: !isDevelopment && disableOptimizedLoading,\n defer: !disableOptimizedLoading,\n crossOrigin: props.crossOrigin || crossOrigin\n });\n });\n}\nclass Document extends _react.Component {\n /**\n * `getInitialProps` hook returns the context object with the addition of `renderPage`.\n * `renderPage` callback executes `React` rendering logic synchronously to support server-rendering wrappers\n */ static getInitialProps(ctx) {\n return ctx.defaultGetInitialProps(ctx);\n }\n render() {\n return /*#__PURE__*/ _react.default.createElement(Html, null, /*#__PURE__*/ _react.default.createElement(Head, null), /*#__PURE__*/ _react.default.createElement(\"body\", null, /*#__PURE__*/ _react.default.createElement(Main, null), /*#__PURE__*/ _react.default.createElement(NextScript, null)));\n }\n}\nexports[\"default\"] = Document;\nDocument.__next_internal_document = function InternalFunctionDocument() {\n return /*#__PURE__*/ _react.default.createElement(Html, null, /*#__PURE__*/ _react.default.createElement(Head, null), /*#__PURE__*/ _react.default.createElement(\"body\", null, /*#__PURE__*/ _react.default.createElement(Main, null), /*#__PURE__*/ _react.default.createElement(NextScript, null)));\n};\nfunction Html(props) {\n const { inAmpMode , docComponentsRendered , locale } = (0, _react).useContext(_htmlContext.HtmlContext);\n docComponentsRendered.Html = true;\n return /*#__PURE__*/ _react.default.createElement(\"html\", Object.assign({}, props, {\n lang: props.lang || locale || undefined,\n amp: inAmpMode ? \"\" : undefined,\n \"data-ampdevmode\": inAmpMode && \"development\" !== \"production\" ? \"\" : undefined\n }));\n}\nfunction AmpStyles({ styles }) {\n if (!styles) return null;\n // try to parse styles from fragment for backwards compat\n const curStyles = Array.isArray(styles) ? styles : [];\n if (styles.props && Array.isArray(styles.props.children)) {\n const hasStyles = (el)=>{\n var ref, ref2;\n return el === null || el === void 0 ? void 0 : (ref = el.props) === null || ref === void 0 ? void 0 : (ref2 = ref.dangerouslySetInnerHTML) === null || ref2 === void 0 ? void 0 : ref2.__html;\n };\n // @ts-ignore Property 'props' does not exist on type ReactElement\n styles.props.children.forEach((child)=>{\n if (Array.isArray(child)) {\n child.forEach((el)=>hasStyles(el) && curStyles.push(el)\n );\n } else if (hasStyles(child)) {\n curStyles.push(child);\n }\n });\n }\n /* Add custom styles before AMP styles to prevent accidental overrides */ return /*#__PURE__*/ _react.default.createElement(\"style\", {\n \"amp-custom\": \"\",\n dangerouslySetInnerHTML: {\n __html: curStyles.map((style)=>style.props.dangerouslySetInnerHTML.__html\n ).join(\"\").replace(/\\/\\*# sourceMappingURL=.*\\*\\//g, \"\").replace(/\\/\\*@ sourceURL=.*?\\*\\//g, \"\")\n }\n });\n}\nclass Head extends _react.Component {\n getCssLinks(files) {\n const { assetPrefix , devOnlyCacheBusterQueryString , dynamicImports , crossOrigin , optimizeCss , optimizeFonts , } = this.context;\n const cssFiles = files.allFiles.filter((f)=>f.endsWith(\".css\")\n );\n const sharedFiles = new Set(files.sharedFiles);\n // Unmanaged files are CSS files that will be handled directly by the\n // webpack runtime (`mini-css-extract-plugin`).\n let unmangedFiles = new Set([]);\n let dynamicCssFiles = Array.from(new Set(dynamicImports.filter((file)=>file.endsWith(\".css\")\n )));\n if (dynamicCssFiles.length) {\n const existing = new Set(cssFiles);\n dynamicCssFiles = dynamicCssFiles.filter((f)=>!(existing.has(f) || sharedFiles.has(f))\n );\n unmangedFiles = new Set(dynamicCssFiles);\n cssFiles.push(...dynamicCssFiles);\n }\n let cssLinkElements = [];\n cssFiles.forEach((file)=>{\n const isSharedFile = sharedFiles.has(file);\n if (!optimizeCss) {\n cssLinkElements.push(/*#__PURE__*/ _react.default.createElement(\"link\", {\n key: `${file}-preload`,\n nonce: this.props.nonce,\n rel: \"preload\",\n href: `${assetPrefix}/_next/${encodeURI(file)}${devOnlyCacheBusterQueryString}`,\n as: \"style\",\n crossOrigin: this.props.crossOrigin || crossOrigin\n }));\n }\n const isUnmanagedFile = unmangedFiles.has(file);\n cssLinkElements.push(/*#__PURE__*/ _react.default.createElement(\"link\", {\n key: file,\n nonce: this.props.nonce,\n rel: \"stylesheet\",\n href: `${assetPrefix}/_next/${encodeURI(file)}${devOnlyCacheBusterQueryString}`,\n crossOrigin: this.props.crossOrigin || crossOrigin,\n \"data-n-g\": isUnmanagedFile ? undefined : isSharedFile ? \"\" : undefined,\n \"data-n-p\": isUnmanagedFile ? undefined : isSharedFile ? undefined : \"\"\n }));\n });\n if (false) {}\n return cssLinkElements.length === 0 ? null : cssLinkElements;\n }\n getPreloadDynamicChunks() {\n const { dynamicImports , assetPrefix , devOnlyCacheBusterQueryString , crossOrigin , } = this.context;\n return dynamicImports.map((file)=>{\n if (!file.endsWith(\".js\")) {\n return null;\n }\n return /*#__PURE__*/ _react.default.createElement(\"link\", {\n rel: \"preload\",\n key: file,\n href: `${assetPrefix}/_next/${encodeURI(file)}${devOnlyCacheBusterQueryString}`,\n as: \"script\",\n nonce: this.props.nonce,\n crossOrigin: this.props.crossOrigin || crossOrigin\n });\n }) // Filter out nulled scripts\n .filter(Boolean);\n }\n getPreloadMainLinks(files) {\n const { assetPrefix , devOnlyCacheBusterQueryString , scriptLoader , crossOrigin , } = this.context;\n const preloadFiles = files.allFiles.filter((file)=>{\n return file.endsWith(\".js\");\n });\n return [\n ...(scriptLoader.beforeInteractive || []).map((file)=>/*#__PURE__*/ _react.default.createElement(\"link\", {\n key: file.src,\n nonce: this.props.nonce,\n rel: \"preload\",\n href: file.src,\n as: \"script\",\n crossOrigin: this.props.crossOrigin || crossOrigin\n })\n ),\n ...preloadFiles.map((file)=>/*#__PURE__*/ _react.default.createElement(\"link\", {\n key: file,\n nonce: this.props.nonce,\n rel: \"preload\",\n href: `${assetPrefix}/_next/${encodeURI(file)}${devOnlyCacheBusterQueryString}`,\n as: \"script\",\n crossOrigin: this.props.crossOrigin || crossOrigin\n })\n ), \n ];\n }\n getBeforeInteractiveInlineScripts() {\n const { scriptLoader } = this.context;\n const { nonce , crossOrigin } = this.props;\n return (scriptLoader.beforeInteractive || []).filter((script)=>!script.src && (script.dangerouslySetInnerHTML || script.children)\n ).map((file, index)=>{\n const { strategy , children , dangerouslySetInnerHTML , ...scriptProps } = file;\n let html = \"\";\n if (dangerouslySetInnerHTML && dangerouslySetInnerHTML.__html) {\n html = dangerouslySetInnerHTML.__html;\n } else if (children) {\n html = typeof children === \"string\" ? children : Array.isArray(children) ? children.join(\"\") : \"\";\n }\n return /*#__PURE__*/ _react.default.createElement(\"script\", Object.assign({}, scriptProps, {\n dangerouslySetInnerHTML: {\n __html: html\n },\n key: scriptProps.id || index,\n nonce: nonce,\n \"data-nscript\": \"beforeInteractive\",\n crossOrigin: crossOrigin || undefined\n }));\n });\n }\n getDynamicChunks(files) {\n return getDynamicChunks(this.context, this.props, files);\n }\n getPreNextScripts() {\n return getPreNextScripts(this.context, this.props);\n }\n getScripts(files) {\n return getScripts(this.context, this.props, files);\n }\n getPolyfillScripts() {\n return getPolyfillScripts(this.context, this.props);\n }\n handleDocumentScriptLoaderItems(children) {\n const { scriptLoader } = this.context;\n const scriptLoaderItems = [];\n const filteredChildren = [];\n _react.default.Children.forEach(children, (child)=>{\n if (child.type === _script.default) {\n if (child.props.strategy === \"beforeInteractive\") {\n scriptLoader.beforeInteractive = (scriptLoader.beforeInteractive || []).concat([\n {\n ...child.props\n }, \n ]);\n return;\n } else if ([\n \"lazyOnload\",\n \"afterInteractive\",\n \"worker\"\n ].includes(child.props.strategy)) {\n scriptLoaderItems.push(child.props);\n return;\n }\n }\n filteredChildren.push(child);\n });\n this.context.__NEXT_DATA__.scriptLoader = scriptLoaderItems;\n return filteredChildren;\n }\n makeStylesheetInert(node) {\n return _react.default.Children.map(node, (c)=>{\n var ref5, ref3;\n if ((c === null || c === void 0 ? void 0 : c.type) === \"link\" && (c === null || c === void 0 ? void 0 : (ref5 = c.props) === null || ref5 === void 0 ? void 0 : ref5.href) && _constants.OPTIMIZED_FONT_PROVIDERS.some(({ url })=>{\n var ref, ref4;\n return c === null || c === void 0 ? void 0 : (ref = c.props) === null || ref === void 0 ? void 0 : (ref4 = ref.href) === null || ref4 === void 0 ? void 0 : ref4.startsWith(url);\n })) {\n const newProps = {\n ...c.props || {},\n \"data-href\": c.props.href,\n href: undefined\n };\n return /*#__PURE__*/ _react.default.cloneElement(c, newProps);\n } else if (c === null || c === void 0 ? void 0 : (ref3 = c.props) === null || ref3 === void 0 ? void 0 : ref3.children) {\n const newProps = {\n ...c.props || {},\n children: this.makeStylesheetInert(c.props.children)\n };\n return /*#__PURE__*/ _react.default.cloneElement(c, newProps);\n }\n return c;\n }).filter(Boolean);\n }\n render() {\n const { styles , ampPath , inAmpMode , hybridAmp , canonicalBase , __NEXT_DATA__ , dangerousAsPath , headTags , unstable_runtimeJS , unstable_JsPreload , disableOptimizedLoading , optimizeCss , optimizeFonts , } = this.context;\n const disableRuntimeJS = unstable_runtimeJS === false;\n const disableJsPreload = unstable_JsPreload === false || !disableOptimizedLoading;\n this.context.docComponentsRendered.Head = true;\n let { head } = this.context;\n let cssPreloads = [];\n let otherHeadElements = [];\n if (head) {\n head.forEach((c)=>{\n if (c && c.type === \"link\" && c.props[\"rel\"] === \"preload\" && c.props[\"as\"] === \"style\") {\n cssPreloads.push(c);\n } else {\n c && otherHeadElements.push(c);\n }\n });\n head = cssPreloads.concat(otherHeadElements);\n }\n let children = _react.default.Children.toArray(this.props.children).filter(Boolean);\n // show a warning if Head contains (only in development)\n if (true) {\n children = _react.default.Children.map(children, (child)=>{\n var ref;\n const isReactHelmet = child === null || child === void 0 ? void 0 : (ref = child.props) === null || ref === void 0 ? void 0 : ref[\"data-react-helmet\"];\n if (!isReactHelmet) {\n var ref6;\n if ((child === null || child === void 0 ? void 0 : child.type) === \"title\") {\n console.warn(\"Warning: should not be used in _document.js's . https://nextjs.org/docs/messages/no-document-title\");\n } else if ((child === null || child === void 0 ? void 0 : child.type) === \"meta\" && (child === null || child === void 0 ? void 0 : (ref6 = child.props) === null || ref6 === void 0 ? void 0 : ref6.name) === \"viewport\") {\n console.warn(\"Warning: viewport meta tags should not be used in _document.js's . https://nextjs.org/docs/messages/no-document-viewport-meta\");\n }\n }\n return child;\n });\n if (this.props.crossOrigin) console.warn(\"Warning: `Head` attribute `crossOrigin` is deprecated. https://nextjs.org/docs/messages/doc-crossorigin-deprecated\");\n }\n if (false) {}\n children = this.handleDocumentScriptLoaderItems(children);\n let hasAmphtmlRel = false;\n let hasCanonicalRel = false;\n // show warning and remove conflicting amp head tags\n head = _react.default.Children.map(head || [], (child)=>{\n if (!child) return child;\n const { type , props } = child;\n if (inAmpMode) {\n let badProp = \"\";\n if (type === \"meta\" && props.name === \"viewport\") {\n badProp = 'name=\"viewport\"';\n } else if (type === \"link\" && props.rel === \"canonical\") {\n hasCanonicalRel = true;\n } else if (type === \"script\") {\n // only block if\n // 1. it has a src and isn't pointing to ampproject's CDN\n // 2. it is using dangerouslySetInnerHTML without a type or\n // a type of text/javascript\n if (props.src && props.src.indexOf(\"ampproject\") < -1 || props.dangerouslySetInnerHTML && (!props.type || props.type === \"text/javascript\")) {\n badProp = \"