diff --git a/electron-src/index.ts b/electron-src/index.ts
index 424360a..8f24276 100644
--- a/electron-src/index.ts
+++ b/electron-src/index.ts
@@ -6,6 +6,7 @@ import { format } from 'url'
import { BrowserWindow, app, ipcMain, IpcMainEvent } from 'electron'
import isDev from 'electron-is-dev'
import prepareNext from 'electron-next'
+const { dialog } = require('electron')
// Prepare the renderer once the app is ready
app.on('ready', async () => {
@@ -36,7 +37,15 @@ app.on('ready', async () => {
app.on('window-all-closed', app.quit)
// listen the channel `message` and resend the received message to the renderer process
-ipcMain.on('message', (event: IpcMainEvent, message: any) => {
- console.log(message)
- setTimeout(() => event.sender.send('message', 'hi from electron'), 500)
+ipcMain.on('file', async (event: IpcMainEvent) => {
+ const {canceled, filePaths} = await dialog.showOpenDialog({ properties: ['openFile', 'multiSelections'] })
+ if (canceled) {
+ console.log('operation cancelled')
+ setTimeout(() => event.sender.send('filename', 'operation cancelled'), 500)
+ }
+ else {
+ console.log(filePaths[0])
+ setTimeout(() => event.sender.send('filename', filePaths[0]), 500)
+ }
+
})
diff --git a/main/index.js b/main/index.js
index ac42673..d012527 100644
--- a/main/index.js
+++ b/main/index.js
@@ -10,6 +10,7 @@ const url_1 = require("url");
const electron_1 = require("electron");
const electron_is_dev_1 = __importDefault(require("electron-is-dev"));
const electron_next_1 = __importDefault(require("electron-next"));
+const { dialog } = require('electron');
// Prepare the renderer once the app is ready
electron_1.app.on('ready', async () => {
await (0, electron_next_1.default)('./renderer');
@@ -34,7 +35,14 @@ electron_1.app.on('ready', async () => {
// Quit the app once all windows are closed
electron_1.app.on('window-all-closed', electron_1.app.quit);
// listen the channel `message` and resend the received message to the renderer process
-electron_1.ipcMain.on('message', (event, message) => {
- console.log(message);
- setTimeout(() => event.sender.send('message', 'hi from electron'), 500);
+electron_1.ipcMain.on('file', async (event) => {
+ const { canceled, filePaths } = await dialog.showOpenDialog({ properties: ['openFile', 'multiSelections'] });
+ if (canceled) {
+ console.log('operation cancelled');
+ setTimeout(() => event.sender.send('filename', 'operation cancelled'), 500);
+ }
+ else {
+ console.log(filePaths[0]);
+ setTimeout(() => event.sender.send('filename', filePaths[0]), 500);
+ }
});
diff --git a/renderer/.next/build-manifest.json b/renderer/.next/build-manifest.json
index 42a790c..d8a0652 100644
--- a/renderer/.next/build-manifest.json
+++ b/renderer/.next/build-manifest.json
@@ -29,11 +29,6 @@
"static/chunks/webpack.js",
"static/chunks/main.js",
"static/chunks/pages/_error.js"
- ],
- "/initial-props": [
- "static/chunks/webpack.js",
- "static/chunks/main.js",
- "static/chunks/pages/initial-props.js"
]
},
"ampFirstPages": []
diff --git a/renderer/.next/cache/webpack/client-development/0.pack b/renderer/.next/cache/webpack/client-development/0.pack
index 4143973..3fcc5b9 100644
Binary files a/renderer/.next/cache/webpack/client-development/0.pack and b/renderer/.next/cache/webpack/client-development/0.pack differ
diff --git a/renderer/.next/cache/webpack/client-development/index.pack b/renderer/.next/cache/webpack/client-development/index.pack
index 16c2870..d3eb9a6 100644
Binary files a/renderer/.next/cache/webpack/client-development/index.pack and b/renderer/.next/cache/webpack/client-development/index.pack differ
diff --git a/renderer/.next/cache/webpack/client-development/index.pack.old b/renderer/.next/cache/webpack/client-development/index.pack.old
new file mode 100644
index 0000000..16c2870
Binary files /dev/null and b/renderer/.next/cache/webpack/client-development/index.pack.old differ
diff --git a/renderer/.next/cache/webpack/server-development/0.pack b/renderer/.next/cache/webpack/server-development/0.pack
index 10166d9..bc1d46a 100644
Binary files a/renderer/.next/cache/webpack/server-development/0.pack and b/renderer/.next/cache/webpack/server-development/0.pack differ
diff --git a/renderer/.next/cache/webpack/server-development/index.pack b/renderer/.next/cache/webpack/server-development/index.pack
index d43ffcd..6406e1e 100644
Binary files a/renderer/.next/cache/webpack/server-development/index.pack and b/renderer/.next/cache/webpack/server-development/index.pack differ
diff --git a/renderer/.next/cache/webpack/server-development/index.pack.old b/renderer/.next/cache/webpack/server-development/index.pack.old
new file mode 100644
index 0000000..d43ffcd
Binary files /dev/null and b/renderer/.next/cache/webpack/server-development/index.pack.old differ
diff --git a/renderer/.next/server/pages-manifest.json b/renderer/.next/server/pages-manifest.json
index f3ac7d4..55d8ed9 100644
--- a/renderer/.next/server/pages-manifest.json
+++ b/renderer/.next/server/pages-manifest.json
@@ -2,6 +2,5 @@
"/_app": "pages/_app.js",
"/_error": "pages/_error.js",
"/_document": "pages/_document.js",
- "/": "pages/index.js",
- "/initial-props": "pages/initial-props.js"
+ "/": "pages/index.js"
}
\ No newline at end of file
diff --git a/renderer/.next/server/pages/index.js b/renderer/.next/server/pages/index.js
index 9eee6c9..db11c96 100644
--- a/renderer/.next/server/pages/index.js
+++ b/renderer/.next/server/pages/index.js
@@ -195,7 +195,7 @@ eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));
/***/ ((__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 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 next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"../node_modules/next/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/head */ \"next/head\");\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_head__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\nconst Layout = ({ children , title =\"This is the default title\" })=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_head__WEBPACK_IMPORTED_MODULE_3___default()), {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"title\", {\n children: title\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 13,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n charSet: \"utf-8\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 14,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n name: \"viewport\",\n content: \"initial-scale=1.0, width=device-width\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 15,\n columnNumber: 7\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 12,\n columnNumber: 5\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: \"Home\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 20,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 19,\n columnNumber: 9\n }, undefined),\n \" \",\n \"|\",\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/about\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: \"About\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 24,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 23,\n columnNumber: 9\n }, undefined),\n \" \",\n \"|\",\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/initial-props\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: \"With Initial Props\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 28,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 27,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 18,\n columnNumber: 7\n }, undefined)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 17,\n columnNumber: 5\n }, undefined),\n children,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"footer\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"hr\", {}, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 34,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"I'm here to stay (Footer)\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 35,\n columnNumber: 7\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 33,\n columnNumber: 5\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 11,\n columnNumber: 3\n }, undefined);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Layout);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0xheW91dC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7QUFBd0M7QUFDWjtBQUNBO0FBTzVCLE1BQU1HLE1BQU0sR0FBRyxDQUFDLEVBQUVDLFFBQVEsR0FBRUMsS0FBSyxFQUFHLDJCQUEyQixHQUFTLGlCQUN0RSw4REFBQ0MsS0FBRzs7MEJBQ0YsOERBQUNKLGtEQUFJOztrQ0FDSCw4REFBQ0csT0FBSztrQ0FBRUEsS0FBSzs7Ozs7aUNBQVM7a0NBQ3RCLDhEQUFDRSxNQUFJO3dCQUFDQyxPQUFPLEVBQUMsT0FBTzs7Ozs7aUNBQUc7a0NBQ3hCLDhEQUFDRCxNQUFJO3dCQUFDRSxJQUFJLEVBQUMsVUFBVTt3QkFBQ0MsT0FBTyxFQUFDLHVDQUF1Qzs7Ozs7aUNBQUc7Ozs7Ozt5QkFDbkU7MEJBQ1AsOERBQUNDLFFBQU07MEJBQ0wsNEVBQUNDLEtBQUc7O3NDQUNGLDhEQUFDWCxrREFBSTs0QkFBQ1ksSUFBSSxFQUFDLEdBQUc7c0NBQ1osNEVBQUNDLEdBQUM7MENBQUMsTUFBSTs7Ozs7eUNBQUk7Ozs7O3FDQUNOO3dCQUFDLEdBQUc7d0JBQUMsR0FDWDt3QkFBQyxHQUFHO3NDQUNMLDhEQUFDYixrREFBSTs0QkFBQ1ksSUFBSSxFQUFDLFFBQVE7c0NBQ2pCLDRFQUFDQyxHQUFDOzBDQUFDLE9BQUs7Ozs7O3lDQUFJOzs7OztxQ0FDUDt3QkFBQyxHQUFHO3dCQUFDLEdBQ1g7d0JBQUMsR0FBRztzQ0FDTCw4REFBQ2Isa0RBQUk7NEJBQUNZLElBQUksRUFBQyxnQkFBZ0I7c0NBQ3pCLDRFQUFDQyxHQUFDOzBDQUFDLG9CQUFrQjs7Ozs7eUNBQUk7Ozs7O3FDQUNwQjs7Ozs7OzZCQUNIOzs7Ozt5QkFDQztZQUNSVixRQUFROzBCQUNULDhEQUFDVyxRQUFNOztrQ0FDTCw4REFBQ0MsSUFBRTs7OztpQ0FBRztrQ0FDTiw4REFBQ0MsTUFBSTtrQ0FBQywyQkFBeUI7Ozs7O2lDQUFPOzs7Ozs7eUJBQy9COzs7Ozs7aUJBQ0w7QUFHUixpRUFBZWQsTUFBTSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2NvbXBvbmVudHMvTGF5b3V0LnRzeD8zYzhmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBMaW5rIGZyb20gJ25leHQvbGluaydcbmltcG9ydCBIZWFkIGZyb20gJ25leHQvaGVhZCdcblxudHlwZSBQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZVxuICB0aXRsZT86IHN0cmluZ1xufVxuXG5jb25zdCBMYXlvdXQgPSAoeyBjaGlsZHJlbiwgdGl0bGUgPSAnVGhpcyBpcyB0aGUgZGVmYXVsdCB0aXRsZScgfTogUHJvcHMpID0+IChcbiAgPGRpdj5cbiAgICA8SGVhZD5cbiAgICAgIDx0aXRsZT57dGl0bGV9PC90aXRsZT5cbiAgICAgIDxtZXRhIGNoYXJTZXQ9XCJ1dGYtOFwiIC8+XG4gICAgICA8bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwiaW5pdGlhbC1zY2FsZT0xLjAsIHdpZHRoPWRldmljZS13aWR0aFwiIC8+XG4gICAgPC9IZWFkPlxuICAgIDxoZWFkZXI+XG4gICAgICA8bmF2PlxuICAgICAgICA8TGluayBocmVmPVwiL1wiPlxuICAgICAgICAgIDxhPkhvbWU8L2E+XG4gICAgICAgIDwvTGluaz57JyAnfVxuICAgICAgICB8eycgJ31cbiAgICAgICAgPExpbmsgaHJlZj1cIi9hYm91dFwiPlxuICAgICAgICAgIDxhPkFib3V0PC9hPlxuICAgICAgICA8L0xpbms+eycgJ31cbiAgICAgICAgfHsnICd9XG4gICAgICAgIDxMaW5rIGhyZWY9XCIvaW5pdGlhbC1wcm9wc1wiPlxuICAgICAgICAgIDxhPldpdGggSW5pdGlhbCBQcm9wczwvYT5cbiAgICAgICAgPC9MaW5rPlxuICAgICAgPC9uYXY+XG4gICAgPC9oZWFkZXI+XG4gICAge2NoaWxkcmVufVxuICAgIDxmb290ZXI+XG4gICAgICA8aHIgLz5cbiAgICAgIDxzcGFuPkknbSBoZXJlIHRvIHN0YXkgKEZvb3Rlcik8L3NwYW4+XG4gICAgPC9mb290ZXI+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgZGVmYXVsdCBMYXlvdXRcbiJdLCJuYW1lcyI6WyJSZWFjdCIsIkxpbmsiLCJIZWFkIiwiTGF5b3V0IiwiY2hpbGRyZW4iLCJ0aXRsZSIsImRpdiIsIm1ldGEiLCJjaGFyU2V0IiwibmFtZSIsImNvbnRlbnQiLCJoZWFkZXIiLCJuYXYiLCJocmVmIiwiYSIsImZvb3RlciIsImhyIiwic3BhbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/Layout.tsx\n");
+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 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 next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"../node_modules/next/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/head */ \"next/head\");\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_head__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\nconst Layout = ({ children , title =\"This is the default title\" })=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_head__WEBPACK_IMPORTED_MODULE_3___default()), {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"title\", {\n children: title\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 13,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n charSet: \"utf-8\"\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 14,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n name: \"viewport\",\n content: \"initial-scale=1.0, width=device-width\"\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 15,\n columnNumber: 7\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 12,\n columnNumber: 5\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: \"Home\"\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 20,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 19,\n columnNumber: 9\n }, undefined),\n \" \",\n \"|\",\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/about\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: \"About\"\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 24,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 23,\n columnNumber: 9\n }, undefined),\n \" \",\n \"|\",\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/initial-props\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: \"With Initial Props\"\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 28,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 27,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 18,\n columnNumber: 7\n }, undefined)\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 17,\n columnNumber: 5\n }, undefined),\n children,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"footer\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"hr\", {}, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 34,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"I'm here to stay (Footer)\"\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 35,\n columnNumber: 7\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 33,\n columnNumber: 5\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 11,\n columnNumber: 3\n }, undefined);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Layout);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0xheW91dC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7QUFBd0M7QUFDWjtBQUNBO0FBTzVCLE1BQU1HLE1BQU0sR0FBRyxDQUFDLEVBQUVDLFFBQVEsR0FBRUMsS0FBSyxFQUFHLDJCQUEyQixHQUFTLGlCQUN0RSw4REFBQ0MsS0FBRzs7MEJBQ0YsOERBQUNKLGtEQUFJOztrQ0FDSCw4REFBQ0csT0FBSztrQ0FBRUEsS0FBSzs7Ozs7aUNBQVM7a0NBQ3RCLDhEQUFDRSxNQUFJO3dCQUFDQyxPQUFPLEVBQUMsT0FBTzs7Ozs7aUNBQUc7a0NBQ3hCLDhEQUFDRCxNQUFJO3dCQUFDRSxJQUFJLEVBQUMsVUFBVTt3QkFBQ0MsT0FBTyxFQUFDLHVDQUF1Qzs7Ozs7aUNBQUc7Ozs7Ozt5QkFDbkU7MEJBQ1AsOERBQUNDLFFBQU07MEJBQ0wsNEVBQUNDLEtBQUc7O3NDQUNGLDhEQUFDWCxrREFBSTs0QkFBQ1ksSUFBSSxFQUFDLEdBQUc7c0NBQ1osNEVBQUNDLEdBQUM7MENBQUMsTUFBSTs7Ozs7eUNBQUk7Ozs7O3FDQUNOO3dCQUFDLEdBQUc7d0JBQUMsR0FDWDt3QkFBQyxHQUFHO3NDQUNMLDhEQUFDYixrREFBSTs0QkFBQ1ksSUFBSSxFQUFDLFFBQVE7c0NBQ2pCLDRFQUFDQyxHQUFDOzBDQUFDLE9BQUs7Ozs7O3lDQUFJOzs7OztxQ0FDUDt3QkFBQyxHQUFHO3dCQUFDLEdBQ1g7d0JBQUMsR0FBRztzQ0FDTCw4REFBQ2Isa0RBQUk7NEJBQUNZLElBQUksRUFBQyxnQkFBZ0I7c0NBQ3pCLDRFQUFDQyxHQUFDOzBDQUFDLG9CQUFrQjs7Ozs7eUNBQUk7Ozs7O3FDQUNwQjs7Ozs7OzZCQUNIOzs7Ozt5QkFDQztZQUNSVixRQUFROzBCQUNULDhEQUFDVyxRQUFNOztrQ0FDTCw4REFBQ0MsSUFBRTs7OztpQ0FBRztrQ0FDTiw4REFBQ0MsTUFBSTtrQ0FBQywyQkFBeUI7Ozs7O2lDQUFPOzs7Ozs7eUJBQy9COzs7Ozs7aUJBQ0w7QUFHUixpRUFBZWQsTUFBTSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2NvbXBvbmVudHMvTGF5b3V0LnRzeD8zYzhmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCdcclxuaW1wb3J0IExpbmsgZnJvbSAnbmV4dC9saW5rJ1xyXG5pbXBvcnQgSGVhZCBmcm9tICduZXh0L2hlYWQnXHJcblxyXG50eXBlIFByb3BzID0ge1xyXG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcclxuICB0aXRsZT86IHN0cmluZ1xyXG59XHJcblxyXG5jb25zdCBMYXlvdXQgPSAoeyBjaGlsZHJlbiwgdGl0bGUgPSAnVGhpcyBpcyB0aGUgZGVmYXVsdCB0aXRsZScgfTogUHJvcHMpID0+IChcclxuICA8ZGl2PlxyXG4gICAgPEhlYWQ+XHJcbiAgICAgIDx0aXRsZT57dGl0bGV9PC90aXRsZT5cclxuICAgICAgPG1ldGEgY2hhclNldD1cInV0Zi04XCIgLz5cclxuICAgICAgPG1ldGEgbmFtZT1cInZpZXdwb3J0XCIgY29udGVudD1cImluaXRpYWwtc2NhbGU9MS4wLCB3aWR0aD1kZXZpY2Utd2lkdGhcIiAvPlxyXG4gICAgPC9IZWFkPlxyXG4gICAgPGhlYWRlcj5cclxuICAgICAgPG5hdj5cclxuICAgICAgICA8TGluayBocmVmPVwiL1wiPlxyXG4gICAgICAgICAgPGE+SG9tZTwvYT5cclxuICAgICAgICA8L0xpbms+eycgJ31cclxuICAgICAgICB8eycgJ31cclxuICAgICAgICA8TGluayBocmVmPVwiL2Fib3V0XCI+XHJcbiAgICAgICAgICA8YT5BYm91dDwvYT5cclxuICAgICAgICA8L0xpbms+eycgJ31cclxuICAgICAgICB8eycgJ31cclxuICAgICAgICA8TGluayBocmVmPVwiL2luaXRpYWwtcHJvcHNcIj5cclxuICAgICAgICAgIDxhPldpdGggSW5pdGlhbCBQcm9wczwvYT5cclxuICAgICAgICA8L0xpbms+XHJcbiAgICAgIDwvbmF2PlxyXG4gICAgPC9oZWFkZXI+XHJcbiAgICB7Y2hpbGRyZW59XHJcbiAgICA8Zm9vdGVyPlxyXG4gICAgICA8aHIgLz5cclxuICAgICAgPHNwYW4+SSdtIGhlcmUgdG8gc3RheSAoRm9vdGVyKTwvc3Bhbj5cclxuICAgIDwvZm9vdGVyPlxyXG4gIDwvZGl2PlxyXG4pXHJcblxyXG5leHBvcnQgZGVmYXVsdCBMYXlvdXRcclxuIl0sIm5hbWVzIjpbIlJlYWN0IiwiTGluayIsIkhlYWQiLCJMYXlvdXQiLCJjaGlsZHJlbiIsInRpdGxlIiwiZGl2IiwibWV0YSIsImNoYXJTZXQiLCJuYW1lIiwiY29udGVudCIsImhlYWRlciIsIm5hdiIsImhyZWYiLCJhIiwiZm9vdGVyIiwiaHIiLCJzcGFuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./components/Layout.tsx\n");
/***/ }),
@@ -206,7 +206,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__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 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 next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"../node_modules/next/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_Layout__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/Layout */ \"./components/Layout.tsx\");\n\n\n\n\nconst IndexPage = ()=>{\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const handleMessage = (_event, args)=>alert(args);\n // add a listener to 'message' channel\n global.ipcRenderer.addListener(\"message\", handleMessage);\n return ()=>{\n global.ipcRenderer.removeListener(\"message\", handleMessage);\n };\n }, []);\n const onSayHiClick = ()=>{\n global.ipcRenderer.send(\"message\", \"hi from next\");\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Layout__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: \"Home | Next.js + TypeScript + Electron Example\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n children: \"Hello Next.js \\uD83D\\uDC4B\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/index.tsx\",\n lineNumber: 23,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: onSayHiClick,\n children: \"Say hi to electron\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/index.tsx\",\n lineNumber: 24,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/about\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: \"About\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/index.tsx\",\n lineNumber: 27,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/index.tsx\",\n lineNumber: 26,\n columnNumber: 9\n }, undefined)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/index.tsx\",\n lineNumber: 25,\n columnNumber: 7\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/index.tsx\",\n lineNumber: 22,\n columnNumber: 5\n }, undefined);\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (IndexPage);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wYWdlcy9pbmRleC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUFpQztBQUNMO0FBQ2E7QUFFekMsTUFBTUcsU0FBUyxHQUFHLElBQU07SUFDdEJILGdEQUFTLENBQUMsSUFBTTtRQUNkLE1BQU1JLGFBQWEsR0FBRyxDQUFDQyxNQUFNLEVBQUVDLElBQUksR0FBS0MsS0FBSyxDQUFDRCxJQUFJLENBQUM7UUFFbkQsc0NBQXNDO1FBQ3RDRSxNQUFNLENBQUNDLFdBQVcsQ0FBQ0MsV0FBVyxDQUFDLFNBQVMsRUFBRU4sYUFBYSxDQUFDO1FBRXhELE9BQU8sSUFBTTtZQUNYSSxNQUFNLENBQUNDLFdBQVcsQ0FBQ0UsY0FBYyxDQUFDLFNBQVMsRUFBRVAsYUFBYSxDQUFDO1NBQzVEO0tBQ0YsRUFBRSxFQUFFLENBQUM7SUFFTixNQUFNUSxZQUFZLEdBQUcsSUFBTTtRQUN6QkosTUFBTSxDQUFDQyxXQUFXLENBQUNJLElBQUksQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDO0tBQ25EO0lBRUQscUJBQ0UsOERBQUNYLDBEQUFNO1FBQUNZLEtBQUssRUFBQyxnREFBZ0Q7OzBCQUM1RCw4REFBQ0MsSUFBRTswQkFBQyw0QkFBZTs7Ozs7eUJBQUs7MEJBQ3hCLDhEQUFDQyxRQUFNO2dCQUFDQyxPQUFPLEVBQUVMLFlBQVk7MEJBQUUsb0JBQWtCOzs7Ozt5QkFBUzswQkFDMUQsOERBQUNNLEdBQUM7MEJBQ0EsNEVBQUNqQixrREFBSTtvQkFBQ2tCLElBQUksRUFBQyxRQUFROzhCQUNqQiw0RUFBQ0MsR0FBQztrQ0FBQyxPQUFLOzs7OztpQ0FBSTs7Ozs7NkJBQ1A7Ozs7O3lCQUNMOzs7Ozs7aUJBQ0csQ0FDVjtDQUNGO0FBRUQsaUVBQWVqQixTQUFTIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcGFnZXMvaW5kZXgudHN4PzA3ZmYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgTGluayBmcm9tICduZXh0L2xpbmsnXG5pbXBvcnQgTGF5b3V0IGZyb20gJy4uL2NvbXBvbmVudHMvTGF5b3V0J1xuXG5jb25zdCBJbmRleFBhZ2UgPSAoKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlTWVzc2FnZSA9IChfZXZlbnQsIGFyZ3MpID0+IGFsZXJ0KGFyZ3MpXG5cbiAgICAvLyBhZGQgYSBsaXN0ZW5lciB0byAnbWVzc2FnZScgY2hhbm5lbFxuICAgIGdsb2JhbC5pcGNSZW5kZXJlci5hZGRMaXN0ZW5lcignbWVzc2FnZScsIGhhbmRsZU1lc3NhZ2UpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZ2xvYmFsLmlwY1JlbmRlcmVyLnJlbW92ZUxpc3RlbmVyKCdtZXNzYWdlJywgaGFuZGxlTWVzc2FnZSlcbiAgICB9XG4gIH0sIFtdKVxuXG4gIGNvbnN0IG9uU2F5SGlDbGljayA9ICgpID0+IHtcbiAgICBnbG9iYWwuaXBjUmVuZGVyZXIuc2VuZCgnbWVzc2FnZScsICdoaSBmcm9tIG5leHQnKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8TGF5b3V0IHRpdGxlPVwiSG9tZSB8IE5leHQuanMgKyBUeXBlU2NyaXB0ICsgRWxlY3Ryb24gRXhhbXBsZVwiPlxuICAgICAgPGgxPkhlbGxvIE5leHQuanMg8J+RizwvaDE+XG4gICAgICA8YnV0dG9uIG9uQ2xpY2s9e29uU2F5SGlDbGlja30+U2F5IGhpIHRvIGVsZWN0cm9uPC9idXR0b24+XG4gICAgICA8cD5cbiAgICAgICAgPExpbmsgaHJlZj1cIi9hYm91dFwiPlxuICAgICAgICAgIDxhPkFib3V0PC9hPlxuICAgICAgICA8L0xpbms+XG4gICAgICA8L3A+XG4gICAgPC9MYXlvdXQ+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgSW5kZXhQYWdlXG4iXSwibmFtZXMiOlsidXNlRWZmZWN0IiwiTGluayIsIkxheW91dCIsIkluZGV4UGFnZSIsImhhbmRsZU1lc3NhZ2UiLCJfZXZlbnQiLCJhcmdzIiwiYWxlcnQiLCJnbG9iYWwiLCJpcGNSZW5kZXJlciIsImFkZExpc3RlbmVyIiwicmVtb3ZlTGlzdGVuZXIiLCJvblNheUhpQ2xpY2siLCJzZW5kIiwidGl0bGUiLCJoMSIsImJ1dHRvbiIsIm9uQ2xpY2siLCJwIiwiaHJlZiIsImEiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./pages/index.tsx\n");
+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 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 next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"../node_modules/next/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_Layout__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/Layout */ \"./components/Layout.tsx\");\n\n\n\n\nconst IndexPage = ()=>{\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const handleMessage = (_event, args)=>console.log(args);\n // add a listener to 'message' channel\n global.ipcRenderer.addListener(\"filename\", handleMessage);\n return ()=>{\n global.ipcRenderer.removeListener(\"filename\", handleMessage);\n };\n }, []);\n const filePick = ()=>{\n global.ipcRenderer.send(\"file\");\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Layout__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: \"Home | Next.js + TypeScript + Electron Example\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n children: \"Hello Next.js \\uD83D\\uDC4B\"\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\pages\\\\index.tsx\",\n lineNumber: 23,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: filePick,\n children: \"Choose File\"\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\pages\\\\index.tsx\",\n lineNumber: 24,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/about\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: \"About\"\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\pages\\\\index.tsx\",\n lineNumber: 27,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\pages\\\\index.tsx\",\n lineNumber: 26,\n columnNumber: 9\n }, undefined)\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\pages\\\\index.tsx\",\n lineNumber: 25,\n columnNumber: 7\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\pages\\\\index.tsx\",\n lineNumber: 22,\n columnNumber: 5\n }, undefined);\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (IndexPage);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wYWdlcy9pbmRleC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUFpQztBQUNMO0FBQ2E7QUFFekMsTUFBTUcsU0FBUyxHQUFHLElBQU07SUFDdEJILGdEQUFTLENBQUMsSUFBTTtRQUNkLE1BQU1JLGFBQWEsR0FBRyxDQUFDQyxNQUFVLEVBQUVDLElBQVEsR0FBS0MsT0FBTyxDQUFDQyxHQUFHLENBQUNGLElBQUksQ0FBQztRQUVqRSxzQ0FBc0M7UUFDdENHLE1BQU0sQ0FBQ0MsV0FBVyxDQUFDQyxXQUFXLENBQUMsVUFBVSxFQUFFUCxhQUFhLENBQUM7UUFFekQsT0FBTyxJQUFNO1lBQ1hLLE1BQU0sQ0FBQ0MsV0FBVyxDQUFDRSxjQUFjLENBQUMsVUFBVSxFQUFFUixhQUFhLENBQUM7U0FDN0Q7S0FDRixFQUFFLEVBQUUsQ0FBQztJQUVOLE1BQU1TLFFBQVEsR0FBRyxJQUFNO1FBQ3JCSixNQUFNLENBQUNDLFdBQVcsQ0FBQ0ksSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNoQztJQUVELHFCQUNFLDhEQUFDWiwwREFBTTtRQUFDYSxLQUFLLEVBQUMsZ0RBQWdEOzswQkFDNUQsOERBQUNDLElBQUU7MEJBQUMsNEJBQWU7Ozs7O3lCQUFLOzBCQUN4Qiw4REFBQ0MsUUFBTTtnQkFBQ0MsT0FBTyxFQUFFTCxRQUFROzBCQUFFLGFBQVc7Ozs7O3lCQUFTOzBCQUMvQyw4REFBQ00sR0FBQzswQkFDQSw0RUFBQ2xCLGtEQUFJO29CQUFDbUIsSUFBSSxFQUFDLFFBQVE7OEJBQ2pCLDRFQUFDQyxHQUFDO2tDQUFDLE9BQUs7Ozs7O2lDQUFJOzs7Ozs2QkFDUDs7Ozs7eUJBQ0w7Ozs7OztpQkFDRyxDQUNWO0NBQ0Y7QUFFRCxpRUFBZWxCLFNBQVMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9wYWdlcy9pbmRleC50c3g/MDdmZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcclxuaW1wb3J0IExpbmsgZnJvbSAnbmV4dC9saW5rJ1xyXG5pbXBvcnQgTGF5b3V0IGZyb20gJy4uL2NvbXBvbmVudHMvTGF5b3V0J1xyXG5cclxuY29uc3QgSW5kZXhQYWdlID0gKCkgPT4ge1xyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zdCBoYW5kbGVNZXNzYWdlID0gKF9ldmVudDphbnksIGFyZ3M6YW55KSA9PiBjb25zb2xlLmxvZyhhcmdzKVxyXG5cclxuICAgIC8vIGFkZCBhIGxpc3RlbmVyIHRvICdtZXNzYWdlJyBjaGFubmVsXHJcbiAgICBnbG9iYWwuaXBjUmVuZGVyZXIuYWRkTGlzdGVuZXIoJ2ZpbGVuYW1lJywgaGFuZGxlTWVzc2FnZSlcclxuXHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICBnbG9iYWwuaXBjUmVuZGVyZXIucmVtb3ZlTGlzdGVuZXIoJ2ZpbGVuYW1lJywgaGFuZGxlTWVzc2FnZSlcclxuICAgIH1cclxuICB9LCBbXSlcclxuXHJcbiAgY29uc3QgZmlsZVBpY2sgPSAoKSA9PiB7XHJcbiAgICBnbG9iYWwuaXBjUmVuZGVyZXIuc2VuZCgnZmlsZScpXHJcbiAgfVxyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPExheW91dCB0aXRsZT1cIkhvbWUgfCBOZXh0LmpzICsgVHlwZVNjcmlwdCArIEVsZWN0cm9uIEV4YW1wbGVcIj5cclxuICAgICAgPGgxPkhlbGxvIE5leHQuanMg8J+RizwvaDE+XHJcbiAgICAgIDxidXR0b24gb25DbGljaz17ZmlsZVBpY2t9PkNob29zZSBGaWxlPC9idXR0b24+XHJcbiAgICAgIDxwPlxyXG4gICAgICAgIDxMaW5rIGhyZWY9XCIvYWJvdXRcIj5cclxuICAgICAgICAgIDxhPkFib3V0PC9hPlxyXG4gICAgICAgIDwvTGluaz5cclxuICAgICAgPC9wPlxyXG4gICAgPC9MYXlvdXQ+XHJcbiAgKVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBJbmRleFBhZ2VcclxuIl0sIm5hbWVzIjpbInVzZUVmZmVjdCIsIkxpbmsiLCJMYXlvdXQiLCJJbmRleFBhZ2UiLCJoYW5kbGVNZXNzYWdlIiwiX2V2ZW50IiwiYXJncyIsImNvbnNvbGUiLCJsb2ciLCJnbG9iYWwiLCJpcGNSZW5kZXJlciIsImFkZExpc3RlbmVyIiwicmVtb3ZlTGlzdGVuZXIiLCJmaWxlUGljayIsInNlbmQiLCJ0aXRsZSIsImgxIiwiYnV0dG9uIiwib25DbGljayIsInAiLCJocmVmIiwiYSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./pages/index.tsx\n");
/***/ }),
diff --git a/renderer/.next/server/pages/initial-props.js b/renderer/.next/server/pages/initial-props.js
deleted file mode 100644
index 5da9e71..0000000
--- a/renderer/.next/server/pages/initial-props.js
+++ /dev/null
@@ -1,574 +0,0 @@
-/*
- * 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/initial-props";
-exports.ids = ["pages/initial-props"];
-exports.modules = {
-
-/***/ "../node_modules/next/dist/client/add-base-path.js":
-/*!*********************************************************!*\
- !*** ../node_modules/next/dist/client/add-base-path.js ***!
- \*********************************************************/
-/***/ ((module, exports, __webpack_require__) => {
-
-"use strict";
-eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.addBasePath = addBasePath;\nvar _addPathPrefix = __webpack_require__(/*! ../shared/lib/router/utils/add-path-prefix */ \"../shared/lib/router/utils/add-path-prefix\");\nvar _normalizeTrailingSlash = __webpack_require__(/*! ./normalize-trailing-slash */ \"../node_modules/next/dist/client/normalize-trailing-slash.js\");\nconst basePath = false || \"\";\nfunction addBasePath(path, required) {\n if (false) {}\n return (0, _normalizeTrailingSlash).normalizePathTrailingSlash((0, _addPathPrefix).addPathPrefix(path, basePath));\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=add-base-path.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvYWRkLWJhc2UtcGF0aC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLEtBQUssRUFBRSxJQUFJO0NBQ2QsRUFBQyxDQUFDO0FBQ0hELG1CQUFtQixHQUFHRSxXQUFXLENBQUM7QUFDbEMsSUFBSUMsY0FBYyxHQUFHQyxtQkFBTyxDQUFDLDhGQUE0QyxDQUFDO0FBQzFFLElBQUlDLHVCQUF1QixHQUFHRCxtQkFBTyxDQUFDLGdHQUE0QixDQUFDO0FBQ25FLE1BQU1FLFFBQVEsR0FBR0MsTUFBa0MsSUFBSSxFQUFFO0FBQ3pELFNBQVNMLFdBQVcsQ0FBQ1EsSUFBSSxFQUFFQyxRQUFRLEVBQUU7SUFDakMsSUFBSUosS0FBMEMsRUFBRSxFQUkvQztJQUNELE9BQU8sQ0FBQyxDQUFDLEVBQUVGLHVCQUF1QixDQUFDLENBQUNRLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxFQUFFVixjQUFjLENBQUMsQ0FBQ1csYUFBYSxDQUFDSixJQUFJLEVBQUVKLFFBQVEsQ0FBQyxDQUFDLENBQUM7Q0FDckg7QUFFRCxJQUFJLENBQUMsT0FBT04sT0FBTyxDQUFDZSxPQUFPLEtBQUssVUFBVSxJQUFLLE9BQU9mLE9BQU8sQ0FBQ2UsT0FBTyxLQUFLLFFBQVEsSUFBSWYsT0FBTyxDQUFDZSxPQUFPLEtBQUssSUFBSSxDQUFFLElBQUksT0FBT2YsT0FBTyxDQUFDZSxPQUFPLENBQUNDLFVBQVUsS0FBSyxXQUFXLEVBQUU7SUFDcktsQixNQUFNLENBQUNDLGNBQWMsQ0FBQ0MsT0FBTyxDQUFDZSxPQUFPLEVBQUUsWUFBWSxFQUFFO1FBQUVkLEtBQUssRUFBRSxJQUFJO0tBQUUsQ0FBQyxDQUFDO0lBQ3RFSCxNQUFNLENBQUNtQixNQUFNLENBQUNqQixPQUFPLENBQUNlLE9BQU8sRUFBRWYsT0FBTyxDQUFDLENBQUM7SUFDeENrQixNQUFNLENBQUNsQixPQUFPLEdBQUdBLE9BQU8sQ0FBQ2UsT0FBTyxDQUFDO0NBQ2xDLENBRUQseUNBQXlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FkZC1iYXNlLXBhdGguanM/ZDEyMyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuYWRkQmFzZVBhdGggPSBhZGRCYXNlUGF0aDtcbnZhciBfYWRkUGF0aFByZWZpeCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9hZGQtcGF0aC1wcmVmaXhcIik7XG52YXIgX25vcm1hbGl6ZVRyYWlsaW5nU2xhc2ggPSByZXF1aXJlKFwiLi9ub3JtYWxpemUtdHJhaWxpbmctc2xhc2hcIik7XG5jb25zdCBiYXNlUGF0aCA9IHByb2Nlc3MuZW52Ll9fTkVYVF9ST1VURVJfQkFTRVBBVEggfHwgJyc7XG5mdW5jdGlvbiBhZGRCYXNlUGF0aChwYXRoLCByZXF1aXJlZCkge1xuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfTUFOVUFMX0NMSUVOVF9CQVNFX1BBVEgpIHtcbiAgICAgICAgaWYgKCFyZXF1aXJlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICgwLCBfbm9ybWFsaXplVHJhaWxpbmdTbGFzaCkubm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2goKDAsIF9hZGRQYXRoUHJlZml4KS5hZGRQYXRoUHJlZml4KHBhdGgsIGJhc2VQYXRoKSk7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFkZC1iYXNlLXBhdGguanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiYWRkQmFzZVBhdGgiLCJfYWRkUGF0aFByZWZpeCIsInJlcXVpcmUiLCJfbm9ybWFsaXplVHJhaWxpbmdTbGFzaCIsImJhc2VQYXRoIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9ST1VURVJfQkFTRVBBVEgiLCJwYXRoIiwicmVxdWlyZWQiLCJfX05FWFRfTUFOVUFMX0NMSUVOVF9CQVNFX1BBVEgiLCJub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaCIsImFkZFBhdGhQcmVmaXgiLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../node_modules/next/dist/client/add-base-path.js\n");
-
-/***/ }),
-
-/***/ "../node_modules/next/dist/client/add-locale.js":
-/*!******************************************************!*\
- !*** ../node_modules/next/dist/client/add-locale.js ***!
- \******************************************************/
-/***/ ((module, exports, __webpack_require__) => {
-
-"use strict";
-eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.addLocale = void 0;\nvar _normalizeTrailingSlash = __webpack_require__(/*! ./normalize-trailing-slash */ \"../node_modules/next/dist/client/normalize-trailing-slash.js\");\nconst addLocale = (path, ...args)=>{\n if (false) {}\n return path;\n};\nexports.addLocale = addLocale;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=add-locale.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvYWRkLWxvY2FsZS5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLEtBQUssRUFBRSxJQUFJO0NBQ2QsRUFBQyxDQUFDO0FBQ0hELGlCQUFpQixHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQzNCLElBQUlHLHVCQUF1QixHQUFHQyxtQkFBTyxDQUFDLGdHQUE0QixDQUFDO0FBQ25FLE1BQU1GLFNBQVMsR0FBRyxDQUFDRyxJQUFJLEVBQUtDLEdBQUFBLElBQUksR0FBRztJQUMvQixJQUFJQyxLQUErQixFQUFFLEVBRXBDO0lBQ0QsT0FBT0YsSUFBSSxDQUFDO0NBQ2Y7QUFDREwsaUJBQWlCLEdBQUdFLFNBQVMsQ0FBQztBQUU5QixJQUFJLENBQUMsT0FBT0YsT0FBTyxDQUFDVyxPQUFPLEtBQUssVUFBVSxJQUFLLE9BQU9YLE9BQU8sQ0FBQ1csT0FBTyxLQUFLLFFBQVEsSUFBSVgsT0FBTyxDQUFDVyxPQUFPLEtBQUssSUFBSSxDQUFFLElBQUksT0FBT1gsT0FBTyxDQUFDVyxPQUFPLENBQUNDLFVBQVUsS0FBSyxXQUFXLEVBQUU7SUFDcktkLE1BQU0sQ0FBQ0MsY0FBYyxDQUFDQyxPQUFPLENBQUNXLE9BQU8sRUFBRSxZQUFZLEVBQUU7UUFBRVYsS0FBSyxFQUFFLElBQUk7S0FBRSxDQUFDLENBQUM7SUFDdEVILE1BQU0sQ0FBQ2UsTUFBTSxDQUFDYixPQUFPLENBQUNXLE9BQU8sRUFBRVgsT0FBTyxDQUFDLENBQUM7SUFDeENjLE1BQU0sQ0FBQ2QsT0FBTyxHQUFHQSxPQUFPLENBQUNXLE9BQU8sQ0FBQztDQUNsQyxDQUVELHNDQUFzQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9hZGQtbG9jYWxlLmpzP2QxMGQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmFkZExvY2FsZSA9IHZvaWQgMDtcbnZhciBfbm9ybWFsaXplVHJhaWxpbmdTbGFzaCA9IHJlcXVpcmUoXCIuL25vcm1hbGl6ZS10cmFpbGluZy1zbGFzaFwiKTtcbmNvbnN0IGFkZExvY2FsZSA9IChwYXRoLCAuLi5hcmdzKT0+e1xuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUKSB7XG4gICAgICAgIHJldHVybiAoMCwgX25vcm1hbGl6ZVRyYWlsaW5nU2xhc2gpLm5vcm1hbGl6ZVBhdGhUcmFpbGluZ1NsYXNoKHJlcXVpcmUoJy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2FkZC1sb2NhbGUnKS5hZGRMb2NhbGUocGF0aCwgLi4uYXJncykpO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aDtcbn07XG5leHBvcnRzLmFkZExvY2FsZSA9IGFkZExvY2FsZTtcblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YWRkLWxvY2FsZS5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJhZGRMb2NhbGUiLCJfbm9ybWFsaXplVHJhaWxpbmdTbGFzaCIsInJlcXVpcmUiLCJwYXRoIiwiYXJncyIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfSTE4Tl9TVVBQT1JUIiwibm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2giLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../node_modules/next/dist/client/add-locale.js\n");
-
-/***/ }),
-
-/***/ "../node_modules/next/dist/client/detect-domain-locale.js":
-/*!****************************************************************!*\
- !*** ../node_modules/next/dist/client/detect-domain-locale.js ***!
- \****************************************************************/
-/***/ ((module, exports) => {
-
-"use strict";
-eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.detectDomainLocale = void 0;\nconst detectDomainLocale = (...args)=>{\n if (false) {}\n};\nexports.detectDomainLocale = detectDomainLocale;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=detect-domain-locale.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV0ZWN0LWRvbWFpbi1sb2NhbGUuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxLQUFLLEVBQUUsSUFBSTtDQUNkLEVBQUMsQ0FBQztBQUNIRCwwQkFBMEIsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUNwQyxNQUFNRSxrQkFBa0IsR0FBRyxDQUFJQyxHQUFBQSxJQUFJLEdBQUc7SUFDbEMsSUFBSUMsS0FBK0IsRUFBRSxFQUVwQztDQUNKO0FBQ0RKLDBCQUEwQixHQUFHRSxrQkFBa0IsQ0FBQztBQUVoRCxJQUFJLENBQUMsT0FBT0YsT0FBTyxDQUFDUSxPQUFPLEtBQUssVUFBVSxJQUFLLE9BQU9SLE9BQU8sQ0FBQ1EsT0FBTyxLQUFLLFFBQVEsSUFBSVIsT0FBTyxDQUFDUSxPQUFPLEtBQUssSUFBSSxDQUFFLElBQUksT0FBT1IsT0FBTyxDQUFDUSxPQUFPLENBQUNDLFVBQVUsS0FBSyxXQUFXLEVBQUU7SUFDcktYLE1BQU0sQ0FBQ0MsY0FBYyxDQUFDQyxPQUFPLENBQUNRLE9BQU8sRUFBRSxZQUFZLEVBQUU7UUFBRVAsS0FBSyxFQUFFLElBQUk7S0FBRSxDQUFDLENBQUM7SUFDdEVILE1BQU0sQ0FBQ1ksTUFBTSxDQUFDVixPQUFPLENBQUNRLE9BQU8sRUFBRVIsT0FBTyxDQUFDLENBQUM7SUFDeENXLE1BQU0sQ0FBQ1gsT0FBTyxHQUFHQSxPQUFPLENBQUNRLE9BQU8sQ0FBQztDQUNsQyxDQUVELGdEQUFnRCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXRlY3QtZG9tYWluLWxvY2FsZS5qcz9hMDEyIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZXRlY3REb21haW5Mb2NhbGUgPSB2b2lkIDA7XG5jb25zdCBkZXRlY3REb21haW5Mb2NhbGUgPSAoLi4uYXJncyk9PntcbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICByZXR1cm4gcmVxdWlyZSgnLi4vc2hhcmVkL2xpYi9pMThuL2RldGVjdC1kb21haW4tbG9jYWxlJykuZGV0ZWN0RG9tYWluTG9jYWxlKC4uLmFyZ3MpO1xuICAgIH1cbn07XG5leHBvcnRzLmRldGVjdERvbWFpbkxvY2FsZSA9IGRldGVjdERvbWFpbkxvY2FsZTtcblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGV0ZWN0LWRvbWFpbi1sb2NhbGUuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZGV0ZWN0RG9tYWluTG9jYWxlIiwiYXJncyIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfSTE4Tl9TVVBQT1JUIiwicmVxdWlyZSIsImRlZmF1bHQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../node_modules/next/dist/client/detect-domain-locale.js\n");
-
-/***/ }),
-
-/***/ "../node_modules/next/dist/client/get-domain-locale.js":
-/*!*************************************************************!*\
- !*** ../node_modules/next/dist/client/get-domain-locale.js ***!
- \*************************************************************/
-/***/ ((module, exports) => {
-
-"use strict";
-eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.getDomainLocale = getDomainLocale;\nconst basePath = false || \"\";\nfunction getDomainLocale(path, locale, locales, domainLocales) {\n if (false) {} else {\n return false;\n }\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=get-domain-locale.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZ2V0LWRvbWFpbi1sb2NhbGUuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxLQUFLLEVBQUUsSUFBSTtDQUNkLEVBQUMsQ0FBQztBQUNIRCx1QkFBdUIsR0FBR0UsZUFBZSxDQUFDO0FBQzFDLE1BQU1DLFFBQVEsR0FBR0MsTUFBa0MsSUFBSSxFQUFFO0FBQ3pELFNBQVNGLGVBQWUsQ0FBQ0ssSUFBSSxFQUFFQyxNQUFNLEVBQUVDLE9BQU8sRUFBRUMsYUFBYSxFQUFFO0lBQzNELElBQUlOLEtBQStCLEVBQUUsRUFXcEMsTUFBTTtRQUNILE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0NBQ0o7QUFFRCxJQUFJLENBQUMsT0FBT0osT0FBTyxDQUFDdUIsT0FBTyxLQUFLLFVBQVUsSUFBSyxPQUFPdkIsT0FBTyxDQUFDdUIsT0FBTyxLQUFLLFFBQVEsSUFBSXZCLE9BQU8sQ0FBQ3VCLE9BQU8sS0FBSyxJQUFJLENBQUUsSUFBSSxPQUFPdkIsT0FBTyxDQUFDdUIsT0FBTyxDQUFDQyxVQUFVLEtBQUssV0FBVyxFQUFFO0lBQ3JLMUIsTUFBTSxDQUFDQyxjQUFjLENBQUNDLE9BQU8sQ0FBQ3VCLE9BQU8sRUFBRSxZQUFZLEVBQUU7UUFBRXRCLEtBQUssRUFBRSxJQUFJO0tBQUUsQ0FBQyxDQUFDO0lBQ3RFSCxNQUFNLENBQUMyQixNQUFNLENBQUN6QixPQUFPLENBQUN1QixPQUFPLEVBQUV2QixPQUFPLENBQUMsQ0FBQztJQUN4QzBCLE1BQU0sQ0FBQzFCLE9BQU8sR0FBR0EsT0FBTyxDQUFDdUIsT0FBTyxDQUFDO0NBQ2xDLENBRUQsNkNBQTZDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2dldC1kb21haW4tbG9jYWxlLmpzP2RiM2IiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmdldERvbWFpbkxvY2FsZSA9IGdldERvbWFpbkxvY2FsZTtcbmNvbnN0IGJhc2VQYXRoID0gcHJvY2Vzcy5lbnYuX19ORVhUX1JPVVRFUl9CQVNFUEFUSCB8fCAnJztcbmZ1bmN0aW9uIGdldERvbWFpbkxvY2FsZShwYXRoLCBsb2NhbGUsIGxvY2FsZXMsIGRvbWFpbkxvY2FsZXMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICBjb25zdCBub3JtYWxpemVMb2NhbGVQYXRoID0gcmVxdWlyZSgnLi9ub3JtYWxpemUtbG9jYWxlLXBhdGgnKS5ub3JtYWxpemVMb2NhbGVQYXRoO1xuICAgICAgICBjb25zdCBkZXRlY3REb21haW5Mb2NhbGUgPSByZXF1aXJlKCcuL2RldGVjdC1kb21haW4tbG9jYWxlJykuZGV0ZWN0RG9tYWluTG9jYWxlO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBsb2NhbGUgfHwgbm9ybWFsaXplTG9jYWxlUGF0aChwYXRoLCBsb2NhbGVzKS5kZXRlY3RlZExvY2FsZTtcbiAgICAgICAgY29uc3QgZG9tYWluID0gZGV0ZWN0RG9tYWluTG9jYWxlKGRvbWFpbkxvY2FsZXMsIHVuZGVmaW5lZCwgdGFyZ2V0KTtcbiAgICAgICAgaWYgKGRvbWFpbikge1xuICAgICAgICAgICAgY29uc3QgcHJvdG8gPSBgaHR0cCR7ZG9tYWluLmh0dHAgPyAnJyA6ICdzJ306Ly9gO1xuICAgICAgICAgICAgY29uc3QgZmluYWxMb2NhbGUgPSB0YXJnZXQgPT09IGRvbWFpbi5kZWZhdWx0TG9jYWxlID8gJycgOiBgLyR7dGFyZ2V0fWA7XG4gICAgICAgICAgICByZXR1cm4gYCR7cHJvdG99JHtkb21haW4uZG9tYWlufSR7YmFzZVBhdGh9JHtmaW5hbExvY2FsZX0ke3BhdGh9YDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0LWRvbWFpbi1sb2NhbGUuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZ2V0RG9tYWluTG9jYWxlIiwiYmFzZVBhdGgiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1JPVVRFUl9CQVNFUEFUSCIsInBhdGgiLCJsb2NhbGUiLCJsb2NhbGVzIiwiZG9tYWluTG9jYWxlcyIsIl9fTkVYVF9JMThOX1NVUFBPUlQiLCJub3JtYWxpemVMb2NhbGVQYXRoIiwicmVxdWlyZSIsImRldGVjdERvbWFpbkxvY2FsZSIsInRhcmdldCIsImRldGVjdGVkTG9jYWxlIiwiZG9tYWluIiwidW5kZWZpbmVkIiwicHJvdG8iLCJodHRwIiwiZmluYWxMb2NhbGUiLCJkZWZhdWx0TG9jYWxlIiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../node_modules/next/dist/client/get-domain-locale.js\n");
-
-/***/ }),
-
-/***/ "../node_modules/next/dist/client/has-base-path.js":
-/*!*********************************************************!*\
- !*** ../node_modules/next/dist/client/has-base-path.js ***!
- \*********************************************************/
-/***/ ((module, exports, __webpack_require__) => {
-
-"use strict";
-eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.hasBasePath = hasBasePath;\nvar _pathHasPrefix = __webpack_require__(/*! ../shared/lib/router/utils/path-has-prefix */ \"../shared/lib/router/utils/path-has-prefix\");\nconst basePath = false || \"\";\nfunction hasBasePath(path) {\n return (0, _pathHasPrefix).pathHasPrefix(path, basePath);\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=has-base-path.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvaGFzLWJhc2UtcGF0aC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLEtBQUssRUFBRSxJQUFJO0NBQ2QsRUFBQyxDQUFDO0FBQ0hELG1CQUFtQixHQUFHRSxXQUFXLENBQUM7QUFDbEMsSUFBSUMsY0FBYyxHQUFHQyxtQkFBTyxDQUFDLDhGQUE0QyxDQUFDO0FBQzFFLE1BQU1DLFFBQVEsR0FBR0MsTUFBa0MsSUFBSSxFQUFFO0FBQ3pELFNBQVNKLFdBQVcsQ0FBQ08sSUFBSSxFQUFFO0lBQ3ZCLE9BQU8sQ0FBQyxDQUFDLEVBQUVOLGNBQWMsQ0FBQyxDQUFDTyxhQUFhLENBQUNELElBQUksRUFBRUosUUFBUSxDQUFDLENBQUM7Q0FDNUQ7QUFFRCxJQUFJLENBQUMsT0FBT0wsT0FBTyxDQUFDVyxPQUFPLEtBQUssVUFBVSxJQUFLLE9BQU9YLE9BQU8sQ0FBQ1csT0FBTyxLQUFLLFFBQVEsSUFBSVgsT0FBTyxDQUFDVyxPQUFPLEtBQUssSUFBSSxDQUFFLElBQUksT0FBT1gsT0FBTyxDQUFDVyxPQUFPLENBQUNDLFVBQVUsS0FBSyxXQUFXLEVBQUU7SUFDcktkLE1BQU0sQ0FBQ0MsY0FBYyxDQUFDQyxPQUFPLENBQUNXLE9BQU8sRUFBRSxZQUFZLEVBQUU7UUFBRVYsS0FBSyxFQUFFLElBQUk7S0FBRSxDQUFDLENBQUM7SUFDdEVILE1BQU0sQ0FBQ2UsTUFBTSxDQUFDYixPQUFPLENBQUNXLE9BQU8sRUFBRVgsT0FBTyxDQUFDLENBQUM7SUFDeENjLE1BQU0sQ0FBQ2QsT0FBTyxHQUFHQSxPQUFPLENBQUNXLE9BQU8sQ0FBQztDQUNsQyxDQUVELHlDQUF5QyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9oYXMtYmFzZS1wYXRoLmpzP2UxYzUiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmhhc0Jhc2VQYXRoID0gaGFzQmFzZVBhdGg7XG52YXIgX3BhdGhIYXNQcmVmaXggPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcGF0aC1oYXMtcHJlZml4XCIpO1xuY29uc3QgYmFzZVBhdGggPSBwcm9jZXNzLmVudi5fX05FWFRfUk9VVEVSX0JBU0VQQVRIIHx8ICcnO1xuZnVuY3Rpb24gaGFzQmFzZVBhdGgocGF0aCkge1xuICAgIHJldHVybiAoMCwgX3BhdGhIYXNQcmVmaXgpLnBhdGhIYXNQcmVmaXgocGF0aCwgYmFzZVBhdGgpO1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1oYXMtYmFzZS1wYXRoLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImhhc0Jhc2VQYXRoIiwiX3BhdGhIYXNQcmVmaXgiLCJyZXF1aXJlIiwiYmFzZVBhdGgiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1JPVVRFUl9CQVNFUEFUSCIsInBhdGgiLCJwYXRoSGFzUHJlZml4IiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../node_modules/next/dist/client/has-base-path.js\n");
-
-/***/ }),
-
-/***/ "../node_modules/next/dist/client/head-manager.js":
-/*!********************************************************!*\
- !*** ../node_modules/next/dist/client/head-manager.js ***!
- \********************************************************/
-/***/ ((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 return {\n mountedInstances: new Set(),\n updateHead: (head)=>{\n const tags = {};\n head.forEach((h)=>{\n if (// it won't be inlined. In this case revert to the original behavior\n h.type === \"link\" && h.props[\"data-optimized-fonts\"]) {\n if (document.querySelector(`style[data-href=\"${h.props[\"data-href\"]}\"]`)) {\n return;\n } else {\n h.props.href = h.props[\"data-href\"];\n h.props[\"data-href\"] = undefined;\n }\n }\n const components = tags[h.type] || [];\n components.push(h);\n tags[h.type] = components;\n });\n const titleComponent = tags.title ? tags.title[0] : null;\n let title = \"\";\n if (titleComponent) {\n const { children } = titleComponent.props;\n title = typeof children === \"string\" ? children : Array.isArray(children) ? children.join(\"\") : \"\";\n }\n if (title !== document.title) document.title = title;\n [\n \"meta\",\n \"base\",\n \"link\",\n \"style\",\n \"script\"\n ].forEach((type)=>{\n updateElements(type, tags[type] || []);\n });\n }\n };\n}\nconst DOMAttributeNames = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\",\n noModule: \"noModule\"\n};\nexports.DOMAttributeNames = DOMAttributeNames;\nfunction reactElementToDOM({ 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 ? void 0 : j.previousElementSibling) || null){\n var ref;\n if ((j == null ? void 0 : (ref = j.tagName) == null ? void 0 : ref.toLowerCase()) === type) {\n oldTags.push(j);\n }\n }\n const newTags = components.map(reactElementToDOM).filter((newTag)=>{\n for(let k = 0, len = oldTags.length; k < len; k++){\n const oldTag = oldTags[k];\n if (isEqualNode(oldTag, newTag)) {\n oldTags.splice(k, 1);\n return false;\n }\n }\n return true;\n });\n oldTags.forEach((t)=>{\n var ref;\n return (ref = t.parentNode) == null ? void 0 : ref.removeChild(t);\n });\n newTags.forEach((t)=>headEl.insertBefore(t, headCountEl));\n headCountEl.content = (headCount - oldTags.length + newTags.length).toString();\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=head-manager.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvaGVhZC1tYW5hZ2VyLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csS0FBSyxFQUFFLElBQUk7Q0FDZCxFQUFDLENBQUM7QUFDSEQsa0JBQWUsR0FBR0csZUFBZSxDQUFDO0FBQ2xDSCxtQkFBbUIsR0FBR0ksV0FBVyxDQUFDO0FBQ2xDSix5QkFBeUIsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUNuQyxTQUFTRyxlQUFlLEdBQUc7SUFDdkIsT0FBTztRQUNIRyxnQkFBZ0IsRUFBRSxJQUFJQyxHQUFHLEVBQUU7UUFDM0JDLFVBQVUsRUFBRSxDQUFDQyxJQUFJLEdBQUc7WUFDaEIsTUFBTUMsSUFBSSxHQUFHLEVBQUU7WUFDZkQsSUFBSSxDQUFDRSxPQUFPLENBQUMsQ0FBQ0MsQ0FBQyxHQUFHO2dCQUNkLElBQ0Esb0VBQW9FO2dCQUNwRUEsQ0FBQyxDQUFDQyxJQUFJLEtBQUssTUFBTSxJQUFJRCxDQUFDLENBQUNFLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO29CQUNsRCxJQUFJQyxRQUFRLENBQUNDLGFBQWEsQ0FBQyxDQUFDLGlCQUFpQixFQUFFSixDQUFDLENBQUNFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO3dCQUN0RSxPQUFPO3FCQUNWLE1BQU07d0JBQ0hGLENBQUMsQ0FBQ0UsS0FBSyxDQUFDRyxJQUFJLEdBQUdMLENBQUMsQ0FBQ0UsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO3dCQUNwQ0YsQ0FBQyxDQUFDRSxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUdJLFNBQVMsQ0FBQztxQkFDcEM7aUJBQ0o7Z0JBQ0QsTUFBTUMsVUFBVSxHQUFHVCxJQUFJLENBQUNFLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDckNNLFVBQVUsQ0FBQ0MsSUFBSSxDQUFDUixDQUFDLENBQUMsQ0FBQztnQkFDbkJGLElBQUksQ0FB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Li4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvaGVhZC1tYW5hZ2VyLmpzP2I2MDgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpbml0SGVhZE1hbmFnZXI7XG5leHBvcnRzLmlzRXF1YWxOb2RlID0gaXNFcXVhbE5vZGU7XG5leHBvcnRzLkRPTUF0dHJpYnV0ZU5hbWVzID0gdm9pZCAwO1xuZnVuY3Rpb24gaW5pdEhlYWRNYW5hZ2VyKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIG1vdW50ZWRJbnN0YW5jZXM6IG5ldyBTZXQoKSxcbiAgICAgICAgdXBkYXRlSGVhZDogKGhlYWQpPT57XG4gICAgICAgICAgICBjb25zdCB0YWdzID0ge307XG4gICAgICAgICAgICBoZWFkLmZvckVhY2goKGgpPT57XG4gICAgICAgICAgICAgICAgaWYgKC8vIElmIHRoZSBmb250IHRhZyBpcyBsb2FkZWQgb25seSBvbiBjbGllbnQgbmF2aWdhdGlvblxuICAgICAgICAgICAgICAgIC8vIGl0IHdvbid0IGJlIGlubGluZWQuIEluIHRoaXMgY2FzZSByZXZlcnQgdG8gdGhlIG9yaWdpbmFsIGJlaGF2aW9yXG4gICAgICAgICAgICAgICAgaC50eXBlID09PSAnbGluaycgJiYgaC5wcm9wc1snZGF0YS1vcHRpbWl6ZWQtZm9udHMnXSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihgc3R5bGVbZGF0YS1ocmVmPVwiJHtoLnByb3BzWydkYXRhLWhyZWYnXX1cIl1gKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaC5wcm9wcy5ocmVmID0gaC5wcm9wc1snZGF0YS1ocmVmJ107XG4gICAgICAgICAgICAgICAgICAgICAgICBoLnByb3BzWydkYXRhLWhyZWYnXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRzID0gdGFnc1toLnR5cGVdIHx8IFtdO1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudHMucHVzaChoKTtcbiAgICAgICAgICAgICAgICB0YWdzW2gudHlwZV0gPSBjb21wb25lbnRzO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCB0aXRsZUNvbXBvbmVudCA9IHRhZ3MudGl0bGUgPyB0YWdzLnRpdGxlWzBdIDogbnVsbDtcbiAgICAgICAgICAgIGxldCB0aXRsZSA9ICcnO1xuICAgICAgICAgICAgaWYgKHRpdGxlQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBjaGlsZHJlbiAgfSA9IHRpdGxlQ29tcG9uZW50LnByb3BzO1xuICAgICAgICAgICAgICAgIHRpdGxlID0gdHlwZW9mIGNoaWxkcmVuID09PSAnc3RyaW5nJyA/IGNoaWxkcmVuIDogQXJyYXkuaXNBcnJheShjaGlsZHJlbikgPyBjaGlsZHJlbi5qb2luKCcnKSA6ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRpdGxlICE9PSBkb2N1bWVudC50aXRsZSkgZG9jdW1lbnQudGl0bGUgPSB0aXRsZTtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAnbWV0YScsXG4gICAgICAgICAgICAgICAgJ2Jhc2UnLFxuICAgICAgICAgICAgICAgICdsaW5rJyxcbiAgICAgICAgICAgICAgICAnc3R5bGUnLFxuICAgICAgICAgICAgICAgICdzY3JpcHQnXG4gICAgICAgICAgICBdLmZvckVhY2goKHR5cGUpPT57XG4gICAgICAgICAgICAgICAgdXBkYXRlRWxlbWVudHModHlwZSwgdGFnc1t0eXBlXSB8fCBbXSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG59XG5jb25zdCBET01BdHRyaWJ1dGVOYW1lcyA9IHtcbiAgICBhY2NlcHRDaGFyc2V0OiAnYWNjZXB0LWNoYXJzZXQnLFxuICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICBodG1sRm9yOiAnZm9yJyxcbiAgICBodHRwRXF1aXY6ICdodHRwLWVxdWl2JyxcbiAgICBub01vZHVsZTogJ25vTW9kdWxlJ1xufTtcbmV4cG9ydHMuRE9NQXR0cmlidXRlTmFtZXMgPSBET01BdHRyaWJ1dGVOYW1lcztcbmZ1bmN0aW9uIHJlYWN0RWxlbWVudFRvRE9NKHsgdHlwZSAsIHByb3BzICB9KSB7XG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHR5cGUpO1xuICAgIGZvcihjb25zdCBwIGluIHByb3BzKXtcbiAgICAgICAgaWYgKCFwcm9wcy5oYXNPd25Qcm9wZXJ0eShwKSkgY29udGludWU7XG4gICAgICAgIGlmIChwID09PSAnY2hpbGRyZW4nIHx8IHAgPT09ICdkYW5nZXJvdXNseVNldElubmVySFRNTCcpIGNvbnRpbnVlO1xuICAgICAgICAvLyB3ZSBkb24ndCByZW5kZXIgdW5kZWZpbmVkIHByb3BzIHRvIHRoZSBET01cbiAgICAgICAgaWYgKHByb3BzW3BdID09PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCBhdHRyID0gRE9NQXR0cmlidXRlTmFtZXNbcF0gfHwgcC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAodHlwZSA9PT0gJ3NjcmlwdCcgJiYgKGF0dHIgPT09ICdhc3luYycgfHwgYXR0ciA9PT0gJ2RlZmVyJyB8fCBhdHRyID09PSAnbm9Nb2R1bGUnKSkge1xuICAgICAgICAgICAgZWxbYXR0cl0gPSAhIXByb3BzW3BdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKGF0dHIsIHByb3BzW3BdKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB7IGNoaWxkcmVuICwgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgIH0gPSBwcm9wcztcbiAgICBpZiAoZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpIHtcbiAgICAgICAgZWwuaW5uZXJIVE1MID0gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sIHx8ICcnO1xuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcbiAgICAgICAgZWwudGV4dENvbnRlbnQgPSB0eXBlb2YgY2hpbGRyZW4gPT09ICdzdHJpbmcnID8gY2hpbGRyZW4gOiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSA/IGNoaWxkcmVuLmpvaW4oJycpIDogJyc7XG4gICAgfVxuICAgIHJldHVybiBlbDtcbn1cbmZ1bmN0aW9uIGlzRXF1YWxOb2RlKG9sZFRhZywgbmV3VGFnKSB7XG4gICAgaWYgKG9sZFRhZyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIG5ld1RhZyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IG5vbmNlID0gbmV3VGFnLmdldEF0dHJpYnV0ZSgnbm9uY2UnKTtcbiAgICAgICAgLy8gT25seSBzdHJpcCB0aGUgbm9uY2UgaWYgYG9sZFRhZ2AgaGFzIGhhZCBpdCBzdHJpcHBlZC4gQW4gZWxlbWVudCdzIG5vbmNlIGF0dHJpYnV0ZSB3aWxsIG5vdFxuICAgICAgICAvLyBiZSBzdHJpcHBlZCBpZiB0aGVyZSBpcyBubyBjb250ZW50IHNlY3VyaXR5IHBvbGljeSByZXNwb25zZSBoZWFkZXIgdGhhdCBpbmNsdWRlcyBhIG5vbmNlLlxuICAgICAgICBpZiAobm9uY2UgJiYgIW9sZFRhZy5nZXRBdHRyaWJ1dGUoJ25vbmNlJykpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsb25lVGFnID0gbmV3VGFnLmNsb25lTm9kZSh0cnVlKTtcbiAgICAgICAgICAgIGNsb25lVGFnLnNldEF0dHJpYnV0ZSgnbm9uY2UnLCAnJyk7XG4gICAgICAgICAgICBjbG9uZVRhZy5ub25jZSA9IG5vbmNlO1xuICAgICAgICAgICAgcmV0dXJuIG5vbmNlID09PSBvbGRUYWcubm9uY2UgJiYgb2xkVGFnLmlzRXF1YWxOb2RlKGNsb25lVGFnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2xkVGFnLmlzRXF1YWxOb2RlKG5ld1RhZyk7XG59XG5mdW5jdGlvbiB1cGRhdGVFbGVtZW50cyh0eXBlLCBjb21wb25lbnRzKSB7XG4gICAgY29uc3QgaGVhZEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiAgICBjb25zdCBoZWFkQ291bnRFbCA9IGhlYWRFbC5xdWVyeVNlbGVjdG9yKCdtZXRhW25hbWU9bmV4dC1oZWFkLWNvdW50XScpO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmICghaGVhZENvdW50RWwpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1dhcm5pbmc6IG5leHQtaGVhZC1jb3VudCBpcyBtaXNzaW5nLiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9uZXh0LWhlYWQtY291bnQtbWlzc2luZycpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGhlYWRDb3VudCA9IE51bWJlcihoZWFkQ291bnRFbC5jb250ZW50KTtcbiAgICBjb25zdCBvbGRUYWdzID0gW107XG4gICAgZm9yKGxldCBpID0gMCwgaiA9IGhlYWRDb3VudEVsLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7IGkgPCBoZWFkQ291bnQ7IGkrKywgaiA9IChqID09IG51bGwgPyB2b2lkIDAgOiBqLnByZXZpb3VzRWxlbWVudFNpYmxpbmcpIHx8IG51bGwpe1xuICAgICAgICB2YXIgcmVmO1xuICAgICAgICBpZiAoKGogPT0gbnVsbCA/IHZvaWQgMCA6IChyZWYgPSBqLnRhZ05hbWUpID09IG51bGwgPyB2b2lkIDAgOiByZWYudG9Mb3dlckNhc2UoKSkgPT09IHR5cGUpIHtcbiAgICAgICAgICAgIG9sZFRhZ3MucHVzaChqKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBuZXdUYWdzID0gY29tcG9uZW50cy5tYXAocmVhY3RFbGVtZW50VG9ET00pLmZpbHRlcigobmV3VGFnKT0+e1xuICAgICAgICBmb3IobGV0IGsgPSAwLCBsZW4gPSBvbGRUYWdzLmxlbmd0aDsgayA8IGxlbjsgaysrKXtcbiAgICAgICAgICAgIGNvbnN0IG9sZFRhZyA9IG9sZFRhZ3Nba107XG4gICAgICAgICAgICBpZiAoaXNFcXVhbE5vZGUob2xkVGFnLCBuZXdUYWcpKSB7XG4gICAgICAgICAgICAgICAgb2xkVGFncy5zcGxpY2UoaywgMSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICAgIG9sZFRhZ3MuZm9yRWFjaCgodCk9PntcbiAgICAgICAgdmFyIHJlZjtcbiAgICAgICAgcmV0dXJuIChyZWYgPSB0LnBhcmVudE5vZGUpID09IG51bGwgPyB2b2lkIDAgOiByZWYucmVtb3ZlQ2hpbGQodCk7XG4gICAgfSk7XG4gICAgbmV3VGFncy5mb3JFYWNoKCh0KT0+aGVhZEVsLmluc2VydEJlZm9yZSh0LCBoZWFkQ291bnRFbCkpO1xuICAgIGhlYWRDb3VudEVsLmNvbnRlbnQgPSAoaGVhZENvdW50IC0gb2xkVGFncy5sZW5ndGggKyBuZXdUYWdzLmxlbmd0aCkudG9TdHJpbmcoKTtcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGVhZC1tYW5hZ2VyLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImRlZmF1bHQiLCJpbml0SGVhZE1hbmFnZXIiLCJpc0VxdWFsTm9kZSIsIkRPTUF0dHJpYnV0ZU5hbWVzIiwibW91bnRlZEluc3RhbmNlcyIsIlNldCIsInVwZGF0ZUhlYWQiLCJoZWFkIiwidGFncyIsImZvckVhY2giLCJoIiwidHlwZSIsInByb3BzIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiaHJlZiIsInVuZGVmaW5lZCIsImNvbXBvbmVudHMiLCJwdXNoIiwidGl0bGVDb21wb25lbnQiLCJ0aXRsZSIsImNoaWxkcmVuIiwiQXJyYXkiLCJpc0FycmF5Iiwiam9pbiIsInVwZGF0ZUVsZW1lbnRzIiwiYWNjZXB0Q2hhcnNldCIsImNsYXNzTmFtZSIsImh0bWxGb3IiLCJodHRwRXF1aXYiLCJub01vZHVsZSIsInJlYWN0RWxlbWVudFRvRE9NIiwiZWwiLCJjcmVhdGVFbGVtZW50IiwicCIsImhhc093blByb3BlcnR5IiwiYXR0ciIsInRvTG93ZXJDYXNlIiwic2V0QXR0cmlidXRlIiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJpbm5lckhUTUwiLCJfX2h0bWwiLCJ0ZXh0Q29udGVudCIsIm9sZFRhZyIsIm5ld1RhZyIsIkhUTUxFbGVtZW50Iiwibm9uY2UiLCJnZXRBdHRyaWJ1dGUiLCJjbG9uZVRhZyIsImNsb25lTm9kZSIsImhlYWRFbCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiaGVhZENvdW50RWwiLCJwcm9jZXNzIiwiY29uc29sZSIsImVycm9yIiwiaGVhZENvdW50IiwiTnVtYmVyIiwiY29udGVudCIsIm9sZFRhZ3MiLCJpIiwiaiIsInByZXZpb3VzRWxlbWVudFNpYmxpbmciLCJyZWYiLCJ0YWdOYW1lIiwibmV3VGFncyIsIm1hcCIsImZpbHRlciIsImsiLCJsZW4iLCJsZW5ndGgiLCJzcGxpY2UiLCJ0IiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwiaW5zZXJ0QmVmb3JlIiwidG9TdHJpbmciLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\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 _addLocale = __webpack_require__(/*! ./add-locale */ \"../node_modules/next/dist/client/add-locale.js\");\nvar _routerContext = __webpack_require__(/*! ../shared/lib/router-context */ \"../shared/lib/router-context\");\nvar _appRouterContext = __webpack_require__(/*! ../shared/lib/app-router-context */ \"../shared/lib/app-router-context\");\nvar _useIntersection = __webpack_require__(/*! ./use-intersection */ \"../node_modules/next/dist/client/use-intersection.js\");\nvar _getDomainLocale = __webpack_require__(/*! ./get-domain-locale */ \"../node_modules/next/dist/client/get-domain-locale.js\");\nvar _addBasePath = __webpack_require__(/*! ./add-base-path */ \"../node_modules/next/dist/client/add-base-path.js\");\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n// @ts-ignore useTransition exist\nconst hasUseTransition = typeof _react.default.useTransition !== \"undefined\";\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, soft, shallow, scroll, locale, startTransition) {\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 const navigate = ()=>{\n // If the router is an AppRouterInstance, then it'll have `softPush` and\n // `softReplace`.\n if (\"softPush\" in router && \"softReplace\" in router) {\n // If we're doing a soft navigation, use the soft variants of\n // replace/push.\n const method = soft ? replace ? \"softReplace\" : \"softPush\" : replace ? \"replace\" : \"push\";\n router[method](href);\n } else {\n router[replace ? \"replace\" : \"push\"](href, as, {\n shallow,\n locale,\n scroll\n });\n }\n };\n if (startTransition) {\n startTransition(navigate);\n } else {\n navigate();\n }\n}\nconst Link = /*#__PURE__*/ _react.default.forwardRef(function LinkComponent(props, forwardedRef) {\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 soft: 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 === \"soft\" || 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 , soft , shallow , scroll , locale , onClick , onMouseEnter , legacyBehavior =Boolean(false) !== true } = props, restProps = _objectWithoutPropertiesLoose(props, [\n \"href\",\n \"as\",\n \"children\",\n \"prefetch\",\n \"passHref\",\n \"replace\",\n \"soft\",\n \"shallow\",\n \"scroll\",\n \"locale\",\n \"onClick\",\n \"onMouseEnter\",\n \"legacyBehavior\"\n ]);\n children = childrenProp;\n if (legacyBehavior && (typeof children === \"string\" || typeof children === \"number\")) {\n children = /*#__PURE__*/ _react.default.createElement(\"a\", null, children);\n }\n const p = prefetchProp !== false;\n const [, /* isPending */ startTransition] = hasUseTransition ? // @ts-ignore useTransition exists\n // eslint-disable-next-line react-hooks/rules-of-hooks\n _react.default.useTransition() : [];\n let router = _react.default.useContext(_routerContext.RouterContext);\n // TODO-APP: type error. Remove `as any`\n const appRouter = _react.default.useContext(_appRouterContext.AppRouterContext);\n if (appRouter) {\n router = appRouter;\n }\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, soft, shallow, scroll, locale, appRouter ? startTransition : undefined);\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, _getDomainLocale).getDomainLocale(as, curLocale, router.locales, router.domainLocales);\n childProps.href = localeDomain || (0, _addBasePath).addBasePath((0, _addLocale).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) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=link.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvbGluay5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLEtBQUssRUFBRSxJQUFJO0NBQ2QsRUFBQyxDQUFDO0FBQ0hELGtCQUFlLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDekIsSUFBSUcsTUFBTSxHQUFHQyxzQkFBc0IsQ0FBQ0MsbUJBQU8sQ0FBQyxvQkFBTyxDQUFDLENBQUM7QUFDckQsSUFBSUMsT0FBTyxHQUFHRCxtQkFBTyxDQUFDLDBGQUE2QixDQUFDO0FBQ3BELElBQUlFLFVBQVUsR0FBR0YsbUJBQU8sQ0FBQyxvRUFBYyxDQUFDO0FBQ3hDLElBQUlHLGNBQWMsR0FBR0gsbUJBQU8sQ0FBQyxrRUFBOEIsQ0FBQztBQUM1RCxJQUFJSSxpQkFBaUIsR0FBR0osbUJBQU8sQ0FBQywwRUFBa0MsQ0FBQztBQUNuRSxJQUFJSyxnQkFBZ0IsR0FBR0wsbUJBQU8sQ0FBQyxnRkFBb0IsQ0FBQztBQUNwRCxJQUFJTSxnQkFBZ0IsR0FBR04sbUJBQU8sQ0FBQyxrRkFBcUIsQ0FBQztBQUNyRCxJQUFJTyxZQUFZLEdBQUdQLG1CQUFPLENBQUMsMEVBQWlCLENBQUM7QUFDN0MsU0FBU0Qsc0JBQXNCLENBQUNTLEdBQUcsRUFBRTtJQUNqQyxPQUFPQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBVSxHQUFHRCxHQUFHLEdBQUc7UUFDakNYLE9BQU8sRUFBRVcsR0FBRztLQUNmLENBQUM7Q0FDTDtBQUNELFNBQVNFLDZCQUE2QixDQUFDQyxNQUFNLEVBQUVDLFFBQVEsRUFBRTtJQUNyRCxJQUFJRCxNQUFNLElBQUksSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzlCLElBQUlFLE1BQU0sR0FBRyxFQUFFO0lBQ2YsSUFBSUMsVUFBVSxHQUFHckIsTUFBTSxDQUFDc0IsSUFBSSxDQUFDSixNQUFNLENBQUM7SUFDcEMsSUFBSUssR0FBRyxFQUFFQyxDQUFDO0lBQ1YsSUFBSUEsQ0FB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RTNCLElBQUksQ0FBQyxPQUFPM0ksT0FBTyxDQUFDRSxPQUFPLEtBQUssVUFBVSxJQUFLLE9BQU9GLE9BQU8sQ0FBQ0UsT0FBTyxLQUFLLFFBQVEsSUFBSUYsT0FBTyxDQUFDRSxPQUFPLEtBQUssSUFBSSxDQUFFLElBQUksT0FBT0YsT0FBTyxDQUFDRSxPQUFPLENBQUNZLFVBQVUsS0FBSyxXQUFXLEVBQUU7SUFDcktoQixNQUFNLENBQUNDLGNBQWMsQ0FBQ0MsT0FBTyxDQUFDRSxPQUFPLEVBQUUsWUFBWSxFQUFFO1FBQUVELEtBQUssRUFBRSxJQUFJO0tBQUUsQ0FBQyxDQUFDO0lBQ3RFSCxNQUFNLENBQUM0SSxNQUFNLENBQUMxSSxPQUFPLENBQUNFLE9BQU8sRUFBRUYsT0FBTyxDQUFDLENBQUM7SUFDeEM0SSxNQUFNLENBQUM1SSxPQUFPLEdBQUdBLE9BQU8sQ0FBQ0UsT0FBTyxDQUFDO0NBQ2xDLENBRUQsZ0NBQWdDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2xpbmsuanM/Y2U0NCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcbnZhciBfcmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG52YXIgX3JvdXRlciA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci9yb3V0ZXJcIik7XG52YXIgX2FkZExvY2FsZSA9IHJlcXVpcmUoXCIuL2FkZC1sb2NhbGVcIik7XG52YXIgX3JvdXRlckNvbnRleHQgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXItY29udGV4dFwiKTtcbnZhciBfYXBwUm91dGVyQ29udGV4dCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dFwiKTtcbnZhciBfdXNlSW50ZXJzZWN0aW9uID0gcmVxdWlyZShcIi4vdXNlLWludGVyc2VjdGlvblwiKTtcbnZhciBfZ2V0RG9tYWluTG9jYWxlID0gcmVxdWlyZShcIi4vZ2V0LWRvbWFpbi1sb2NhbGVcIik7XG52YXIgX2FkZEJhc2VQYXRoID0gcmVxdWlyZShcIi4vYWRkLWJhc2UtcGF0aFwiKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHtcbiAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgfTtcbn1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgICBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTtcbiAgICB2YXIgdGFyZ2V0ID0ge307XG4gICAgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuICAgIHZhciBrZXksIGk7XG4gICAgZm9yKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGtleSA9IHNvdXJjZUtleXNbaV07XG4gICAgICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7XG4gICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG59XG4vLyBAdHMtaWdub3JlIHVzZVRyYW5zaXRpb24gZXhpc3RcbmNvbnN0IGhhc1VzZVRyYW5zaXRpb24gPSB0eXBlb2YgX3JlYWN0LmRlZmF1bHQudXNlVHJhbnNpdGlvbiAhPT0gJ3VuZGVmaW5lZCc7XG5jb25zdCBwcmVmZXRjaGVkID0ge307XG5mdW5jdGlvbiBwcmVmZXRjaChyb3V0ZXIsIGhyZWYsIGFzLCBvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8ICFyb3V0ZXIpIHJldHVybjtcbiAgICBpZiAoISgwLCBfcm91dGVyKS5pc0xvY2FsVVJMKGhyZWYpKSByZXR1cm47XG4gICAgLy8gUHJlZmV0Y2ggdGhlIEpTT04gcGFnZSBpZiBhc2tlZCAob25seSBpbiB0aGUgY2xpZW50KVxuICAgIC8vIFdlIG5lZWQgdG8gaGFuZGxlIGEgcHJlZmV0Y2ggZXJyb3IgaGVyZSBzaW5jZSB3ZSBtYXkgYmVcbiAgICAvLyBsb2FkaW5nIHdpdGggcHJpb3JpdHkgd2hpY2ggY2FuIHJlamVjdCBidXQgd2UgZG9uJ3RcbiAgICAvLyB3YW50IHRvIGZvcmNlIG5hdmlnYXRpb24gc2luY2UgdGhpcyBpcyBvbmx5IGEgcHJlZmV0Y2hcbiAgICByb3V0ZXIucHJlZmV0Y2goaHJlZiwgYXMsIG9wdGlvbnMpLmNhdGNoKChlcnIpPT57XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAvLyByZXRocm93IHRvIHNob3cgaW52YWxpZCBVUkwgZXJyb3JzXG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBjdXJMb2NhbGUgPSBvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zLmxvY2FsZSAhPT0gJ3VuZGVmaW5lZCcgPyBvcHRpb25zLmxvY2FsZSA6IHJvdXRlciAmJiByb3V0ZXIubG9jYWxlO1xuICAgIC8vIEpvaW4gb24gYW4gaW52YWxpZCBVUkkgY2hhcmFjdGVyXG4gICAgcHJlZmV0Y2hlZFtocmVmICsgJyUnICsgYXMgKyAoY3VyTG9jYWxlID8gJyUnICsgY3VyTG9jYWxlIDogJycpXSA9IHRydWU7XG59XG5mdW5jdGlvbiBpc01vZGlmaWVkRXZlbnQoZXZlbnQpIHtcbiAgICBjb25zdCB7IHRhcmdldCAgfSA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gICAgcmV0dXJuIHRhcmdldCAmJiB0YXJnZXQgIT09ICdfc2VsZicgfHwgZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5IHx8IGV2ZW50LnNoaWZ0S2V5IHx8IGV2ZW50LmFsdEtleSB8fCBldmVudC5uYXRpdmVFdmVudCAmJiBldmVudC5uYXRpdmVFdmVudC53aGljaCA9PT0gMjtcbn1cbmZ1bmN0aW9uIGxpbmtDbGlja2VkKGUsIHJvdXRlciwgaHJlZiwgYXMsIHJlcGxhY2UsIHNvZnQsIHNoYWxsb3csIHNjcm9sbCwgbG9jYWxlLCBzdGFydFRyYW5zaXRpb24pIHtcbiAgICBjb25zdCB7IG5vZGVOYW1lICB9ID0gZS5jdXJyZW50VGFyZ2V0O1xuICAgIC8vIGFuY2hvcnMgaW5zaWRlIGFuIHN2ZyBoYXZlIGEgbG93ZXJjYXNlIG5vZGVOYW1lXG4gICAgY29uc3QgaXNBbmNob3JOb2RlTmFtZSA9IG5vZGVOYW1lLnRvVXBwZXJDYXNlKCkgPT09ICdBJztcbiAgICBpZiAoaXNBbmNob3JOb2RlTmFtZSAmJiAoaXNNb2RpZmllZEV2ZW50KGUpIHx8ICEoMCwgX3JvdXRlcikuaXNMb2NhbFVSTChocmVmKSkpIHtcbiAgICAgICAgLy8gaWdub3JlIGNsaWNrIGZvciBicm93c2Vy4oCZcyBkZWZhdWx0IGJlaGF2aW9yXG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IG5hdmlnYXRlID0gKCk9PntcbiAgICAgICAgLy8gSWYgdGhlIHJvdXRlciBpcyBhbiBBcHBSb3V0ZXJJbnN0YW5jZSwgdGhlbiBpdCdsbCBoYXZlIGBzb2Z0UHVzaGAgYW5kXG4gICAgICAgIC8vIGBzb2Z0UmVwbGFjZWAuXG4gICAgICAgIGlmICgnc29mdFB1c2gnIGluIHJvdXRlciAmJiAnc29mdFJlcGxhY2UnIGluIHJvdXRlcikge1xuICAgICAgICAgICAgLy8gSWYgd2UncmUgZG9pbmcgYSBzb2Z0IG5hdmlnYXRpb24sIHVzZSB0aGUgc29mdCB2YXJpYW50cyBvZlxuICAgICAgICAgICAgLy8gcmVwbGFjZS9wdXNoLlxuICAgICAgICAgICAgY29uc3QgbWV0aG9kID0gc29mdCA/IHJlcGxhY2UgPyAnc29mdFJlcGxhY2UnIDogJ3NvZnRQdXNoJyA6IHJlcGxhY2UgPyAncmVwbGFjZScgOiAncHVzaCc7XG4gICAgICAgICAgICByb3V0ZXJbbWV0aG9kXShocmVmKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJvdXRlcltyZXBsYWNlID8gJ3JlcGxhY2UnIDogJ3B1c2gnXShocmVmLCBhcywge1xuICAgICAgICAgICAgICAgIHNoYWxsb3csXG4gICAgICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgICAgIHNjcm9sbFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGlmIChzdGFydFRyYW5zaXRpb24pIHtcbiAgICAgICAgc3RhcnRUcmFuc2l0aW9uKG5hdmlnYXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBuYXZpZ2F0ZSgpO1xuICAgIH1cbn1cbmNvbnN0IExpbmsgPSAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmZvcndhcmRSZWYoZnVuY3Rpb24gTGlua0NvbXBvbmVudChwcm9wcywgZm9yd2FyZGVkUmVmKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgZnVuY3Rpb24gY3JlYXRlUHJvcEVycm9yKGFyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRXJyb3IoYEZhaWxlZCBwcm9wIHR5cGU6IFRoZSBwcm9wIFxcYCR7YXJncy5rZXl9XFxgIGV4cGVjdHMgYSAke2FyZ3MuZXhwZWN0ZWR9IGluIFxcYDxMaW5rPlxcYCwgYnV0IGdvdCBcXGAke2FyZ3MuYWN0dWFsfVxcYCBpbnN0ZWFkLmAgKyAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyBcIlxcbk9wZW4geW91ciBicm93c2VyJ3MgY29uc29sZSB0byB2aWV3IHRoZSBDb21wb25lbnQgc3RhY2sgdHJhY2UuXCIgOiAnJykpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFR5cGVTY3JpcHQgdHJpY2sgZm9yIHR5cGUtZ3VhcmRpbmc6XG4gICAgICAgIGNvbnN0IHJlcXVpcmVkUHJvcHNHdWFyZCA9IHtcbiAgICAgICAgICAgIGhyZWY6IHRydWVcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVxdWlyZWRQcm9wcyA9IE9iamVjdC5rZXlzKHJlcXVpcmVkUHJvcHNHdWFyZCk7XG4gICAgICAgIHJlcXVpcmVkUHJvcHMuZm9yRWFjaCgoa2V5KT0+e1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ2hyZWYnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzW2tleV0gPT0gbnVsbCB8fCB0eXBlb2YgcHJvcHNba2V5XSAhPT0gJ3N0cmluZycgJiYgdHlwZW9mIHByb3BzW2tleV0gIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGNyZWF0ZVByb3BFcnJvcih7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogJ2BzdHJpbmdgIG9yIGBvYmplY3RgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbDogcHJvcHNba2V5XSA9PT0gbnVsbCA/ICdudWxsJyA6IHR5cGVvZiBwcm9wc1trZXldXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gVHlwZVNjcmlwdCB0cmljayBmb3IgdHlwZS1ndWFyZGluZzpcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgICAgICAgICAgY29uc3QgXyA9IGtleTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIFR5cGVTY3JpcHQgdHJpY2sgZm9yIHR5cGUtZ3VhcmRpbmc6XG4gICAgICAgIGNvbnN0IG9wdGlvbmFsUHJvcHNHdWFyZCA9IHtcbiAgICAgICAgICAgIGFzOiB0cnVlLFxuICAgICAgICAgICAgcmVwbGFjZTogdHJ1ZSxcbiAgICAgICAgICAgIHNvZnQ6IHRydWUsXG4gICAgICAgICAgICBzY3JvbGw6IHRydWUsXG4gICAgICAgICAgICBzaGFsbG93OiB0cnVlLFxuICAgICAgICAgICAgcGFzc0hyZWY6IHRydWUsXG4gICAgICAgICAgICBwcmVmZXRjaDogdHJ1ZSxcbiAgICAgICAgICAgIGxvY2FsZTogdHJ1ZSxcbiAgICAgICAgICAgIG9uQ2xpY2s6IHRydWUsXG4gICAgICAgICAgICBvbk1vdXNlRW50ZXI6IHRydWUsXG4gICAgICAgICAgICBsZWdhY3lCZWhhdmlvcjogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBvcHRpb25hbFByb3BzID0gT2JqZWN0LmtleXMob3B0aW9uYWxQcm9wc0d1YXJkKTtcbiAgICAgICAgb3B0aW9uYWxQcm9wcy5mb3JFYWNoKChrZXkpPT57XG4gICAgICAgICAgICBjb25zdCB2YWxUeXBlID0gdHlwZW9mIHByb3BzW2tleV07XG4gICAgICAgICAgICBpZiAoa2V5ID09PSAnYXMnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzW2tleV0gJiYgdmFsVHlwZSAhPT0gJ3N0cmluZycgJiYgdmFsVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgY3JlYXRlUHJvcEVycm9yKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiAnYHN0cmluZ2Agb3IgYG9iamVjdGAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsOiB2YWxUeXBlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnbG9jYWxlJykge1xuICAgICAgICAgICAgICAgIGlmIChwcm9wc1trZXldICYmIHZhbFR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGNyZWF0ZVByb3BFcnJvcih7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogJ2BzdHJpbmdgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbDogdmFsVHlwZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ29uQ2xpY2snIHx8IGtleSA9PT0gJ29uTW91c2VFbnRlcicpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHNba2V5XSAmJiB2YWxUeXBlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGNyZWF0ZVByb3BFcnJvcih7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogJ2BmdW5jdGlvbmAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsOiB2YWxUeXBlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAncmVwbGFjZScgfHwga2V5ID09PSAnc29mdCcgfHwga2V5ID09PSAnc2Nyb2xsJyB8fCBrZXkgPT09ICdzaGFsbG93JyB8fCBrZXkgPT09ICdwYXNzSHJlZicgfHwga2V5ID09PSAncHJlZmV0Y2gnIHx8IGtleSA9PT0gJ2xlZ2FjeUJlaGF2aW9yJykge1xuICAgICAgICAgICAgICAgIGlmIChwcm9wc1trZXldICE9IG51bGwgJiYgdmFsVHlwZSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGNyZWF0ZVByb3BFcnJvcih7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogJ2Bib29sZWFuYCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWw6IHZhbFR5cGVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBUeXBlU2NyaXB0IHRyaWNrIGZvciB0eXBlLWd1YXJkaW5nOlxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICAgICAgICBjb25zdCBfID0ga2V5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gVGhpcyBob29rIGlzIGluIGEgY29uZGl0aW9uYWwgYnV0IHRoYXQgaXMgb2sgYmVjYXVzZSBgcHJvY2Vzcy5lbnYuTk9ERV9FTlZgIG5ldmVyIGNoYW5nZXNcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgICAgIGNvbnN0IGhhc1dhcm5lZCA9IF9yZWFjdC5kZWZhdWx0LnVzZVJlZihmYWxzZSk7XG4gICAgICAgIGlmIChwcm9wcy5wcmVmZXRjaCAmJiAhaGFzV2FybmVkLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGhhc1dhcm5lZC5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignTmV4dC5qcyBhdXRvLXByZWZldGNoZXMgYXV0b21hdGljYWxseSBiYXNlZCBvbiB2aWV3cG9ydC4gVGhlIHByZWZldGNoIGF0dHJpYnV0ZSBpcyBubyBsb25nZXIgbmVlZGVkLiBNb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9wcmVmZXRjaC10cnVlLWRlcHJlY2F0ZWQnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBsZXQgY2hpbGRyZW47XG4gICAgY29uc3QgeyBocmVmOiBocmVmUHJvcCAsIGFzOiBhc1Byb3AgLCBjaGlsZHJlbjogY2hpbGRyZW5Qcm9wICwgcHJlZmV0Y2g6IHByZWZldGNoUHJvcCAsIHBhc3NIcmVmICwgcmVwbGFjZSAsIHNvZnQgLCBzaGFsbG93ICwgc2Nyb2xsICwgbG9jYWxlICwgb25DbGljayAsIG9uTW91c2VFbnRlciAsIGxlZ2FjeUJlaGF2aW9yID1Cb29sZWFuKHByb2Nlc3MuZW52Ll9fTkVYVF9ORVdfTElOS19CRUhBVklPUikgIT09IHRydWUgIH0gPSBwcm9wcywgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIFtcbiAgICAgICAgXCJocmVmXCIsXG4gICAgICAgIFwiYXNcIixcbiAgICAgICAgXCJjaGlsZHJlblwiLFxuICAgICAgICBcInByZWZldGNoXCIsXG4gICAgICAgIFwicGFzc0hyZWZcIixcbiAgICAgICAgXCJyZXBsYWNlXCIsXG4gICAgICAgIFwic29mdFwiLFxuICAgICAgICBcInNoYWxsb3dcIixcbiAgICAgICAgXCJzY3JvbGxcIixcbiAgICAgICAgXCJsb2NhbGVcIixcbiAgICAgICAgXCJvbkNsaWNrXCIsXG4gICAgICAgIFwib25Nb3VzZUVudGVyXCIsXG4gICAgICAgIFwibGVnYWN5QmVoYXZpb3JcIlxuICAgIF0pO1xuICAgIGNoaWxkcmVuID0gY2hpbGRyZW5Qcm9wO1xuICAgIGlmIChsZWdhY3lCZWhhdmlvciAmJiAodHlwZW9mIGNoaWxkcmVuID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgY2hpbGRyZW4gPT09ICdudW1iZXInKSkge1xuICAgICAgICBjaGlsZHJlbiA9IC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImFcIiwgbnVsbCwgY2hpbGRyZW4pO1xuICAgIH1cbiAgICBjb25zdCBwID0gcHJlZmV0Y2hQcm9wICE9PSBmYWxzZTtcbiAgICBjb25zdCBbLCAvKiBpc1BlbmRpbmcgKi8gc3RhcnRUcmFuc2l0aW9uXSA9IGhhc1VzZVRyYW5zaXRpb24gPyAvLyBUaGVyZSBpcyBubyBkaWZmZXJlbmNlIGJldHdlZW4gcmVuZGVycyBpbiB0aGlzIGNhc2UsIG9ubHkgYmV0d2VlbiB1c2luZyBSZWFjdCAxOCB2cyAxNy5cbiAgICAvLyBAdHMtaWdub3JlIHVzZVRyYW5zaXRpb24gZXhpc3RzXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgX3JlYWN0LmRlZmF1bHQudXNlVHJhbnNpdGlvbigpIDogW107XG4gICAgbGV0IHJvdXRlciA9IF9yZWFjdC5kZWZhdWx0LnVzZUNvbnRleHQoX3JvdXRlckNvbnRleHQuUm91dGVyQ29udGV4dCk7XG4gICAgLy8gVE9ETy1BUFA6IHR5cGUgZXJyb3IuIFJlbW92ZSBgYXMgYW55YFxuICAgIGNvbnN0IGFwcFJvdXRlciA9IF9yZWFjdC5kZWZhdWx0LnVzZUNvbnRleHQoX2FwcFJvdXRlckNvbnRleHQuQXBwUm91dGVyQ29udGV4dCk7XG4gICAgaWYgKGFwcFJvdXRlcikge1xuICAgICAgICByb3V0ZXIgPSBhcHBSb3V0ZXI7XG4gICAgfVxuICAgIGNvbnN0IHsgaHJlZiAsIGFzICB9ID0gX3JlYWN0LmRlZmF1bHQudXNlTWVtbygoKT0+e1xuICAgICAgICBjb25zdCBbcmVzb2x2ZWRIcmVmLCByZXNvbHZlZEFzXSA9ICgwLCBfcm91dGVyKS5yZXNvbHZlSHJlZihyb3V0ZXIsIGhyZWZQcm9wLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhyZWY6IHJlc29sdmVkSHJlZixcbiAgICAgICAgICAgIGFzOiBhc1Byb3AgPyAoMCwgX3JvdXRlcikucmVzb2x2ZUhyZWYocm91dGVyLCBhc1Byb3ApIDogcmVzb2x2ZWRBcyB8fCByZXNvbHZlZEhyZWZcbiAgICAgICAgfTtcbiAgICB9LCBbXG4gICAgICAgIHJvdXRlcixcbiAgICAgICAgaHJlZlByb3AsXG4gICAgICAgIGFzUHJvcFxuICAgIF0pO1xuICAgIGNvbnN0IHByZXZpb3VzSHJlZiA9IF9yZWFjdC5kZWZhdWx0LnVzZVJlZihocmVmKTtcbiAgICBjb25zdCBwcmV2aW91c0FzID0gX3JlYWN0LmRlZmF1bHQudXNlUmVmKGFzKTtcbiAgICAvLyBUaGlzIHdpbGwgcmV0dXJuIHRoZSBmaXJzdCBjaGlsZCwgaWYgbXVsdGlwbGUgYXJlIHByb3ZpZGVkIGl0IHdpbGwgdGhyb3cgYW4gZXJyb3JcbiAgICBsZXQgY2hpbGQ7XG4gICAgaWYgKGxlZ2FjeUJlaGF2aW9yKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgaWYgKG9uQ2xpY2spIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFwib25DbGlja1wiIHdhcyBwYXNzZWQgdG8gPExpbms+IHdpdGggXFxgaHJlZlxcYCBvZiBcXGAke2hyZWZQcm9wfVxcYCBidXQgXCJsZWdhY3lCZWhhdmlvclwiIHdhcyBzZXQuIFRoZSBsZWdhY3kgYmVoYXZpb3IgcmVxdWlyZXMgb25DbGljayBiZSBzZXQgb24gdGhlIGNoaWxkIG9mIG5leHQvbGlua2ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9uTW91c2VFbnRlcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgXCJvbk1vdXNlRW50ZXJcIiB3YXMgcGFzc2VkIHRvIDxMaW5rPiB3aXRoIFxcYGhyZWZcXGAgb2YgXFxgJHtocmVmUHJvcH1cXGAgYnV0IFwibGVnYWN5QmVoYXZpb3JcIiB3YXMgc2V0LiBUaGUgbGVnYWN5IGJlaGF2aW9yIHJlcXVpcmVzIG9uTW91c2VFbnRlciBiZSBzZXQgb24gdGhlIGNoaWxkIG9mIG5leHQvbGlua2ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjaGlsZCA9IF9yZWFjdC5kZWZhdWx0LkNoaWxkcmVuLm9ubHkoY2hpbGRyZW4pO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFjaGlsZHJlbikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGNoaWxkcmVuIHdlcmUgcGFzc2VkIHRvIDxMaW5rPiB3aXRoIFxcYGhyZWZcXGAgb2YgXFxgJHtocmVmUHJvcH1cXGAgYnV0IG9uZSBjaGlsZCBpcyByZXF1aXJlZCBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9saW5rLW5vLWNoaWxkcmVuYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTXVsdGlwbGUgY2hpbGRyZW4gd2VyZSBwYXNzZWQgdG8gPExpbms+IHdpdGggXFxgaHJlZlxcYCBvZiBcXGAke2hyZWZQcm9wfVxcYCBidXQgb25seSBvbmUgY2hpbGQgaXMgc3VwcG9ydGVkIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2xpbmstbXVsdGlwbGUtY2hpbGRyZW5gICsgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gXCIgXFxuT3BlbiB5b3VyIGJyb3dzZXIncyBjb25zb2xlIHRvIHZpZXcgdGhlIENvbXBvbmVudCBzdGFjayB0cmFjZS5cIiA6ICcnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaGlsZCA9IF9yZWFjdC5kZWZhdWx0LkNoaWxkcmVuLm9ubHkoY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGNoaWxkUmVmID0gbGVnYWN5QmVoYXZpb3IgPyBjaGlsZCAmJiB0eXBlb2YgY2hpbGQgPT09ICdvYmplY3QnICYmIGNoaWxkLnJlZiA6IGZvcndhcmRlZFJlZjtcbiAgICBjb25zdCBbc2V0SW50ZXJzZWN0aW9uUmVmLCBpc1Zpc2libGUsIHJlc2V0VmlzaWJsZV0gPSAoMCwgX3VzZUludGVyc2VjdGlvbikudXNlSW50ZXJzZWN0aW9uKHtcbiAgICAgICAgcm9vdE1hcmdpbjogJzIwMHB4J1xuICAgIH0pO1xuICAgIGNvbnN0IHNldFJlZiA9IF9yZWFjdC5kZWZhdWx0LnVzZUNhbGxiYWNrKChlbCk9PntcbiAgICAgICAgLy8gQmVmb3JlIHRoZSBsaW5rIGdldHRpbmcgb2JzZXJ2ZWQsIGNoZWNrIGlmIHZpc2libGUgc3RhdGUgbmVlZCB0byBiZSByZXNldFxuICAgICAgICBpZiAocHJldmlvdXNBcy5jdXJyZW50ICE9PSBhcyB8fCBwcmV2aW91c0hyZWYuY3VycmVudCAhPT0gaHJlZikge1xuICAgICAgICAgICAgcmVzZXRWaXNpYmxlKCk7XG4gICAgICAgICAgICBwcmV2aW91c0FzLmN1cnJlbnQgPSBhcztcbiAgICAgICAgICAgIHByZXZpb3VzSHJlZi5jdXJyZW50ID0gaHJlZjtcbiAgICAgICAgfVxuICAgICAgICBzZXRJbnRlcnNlY3Rpb25SZWYoZWwpO1xuICAgICAgICBpZiAoY2hpbGRSZWYpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGRSZWYgPT09ICdmdW5jdGlvbicpIGNoaWxkUmVmKGVsKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBjaGlsZFJlZiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICBjaGlsZFJlZi5jdXJyZW50ID0gZWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGFzLFxuICAgICAgICBjaGlsZFJlZixcbiAgICAgICAgaHJlZixcbiAgICAgICAgcmVzZXRWaXNpYmxlLFxuICAgICAgICBzZXRJbnRlcnNlY3Rpb25SZWZcbiAgICBdKTtcbiAgICBfcmVhY3QuZGVmYXVsdC51c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3Qgc2hvdWxkUHJlZmV0Y2ggPSBpc1Zpc2libGUgJiYgcCAmJiAoMCwgX3JvdXRlcikuaXNMb2NhbFVSTChocmVmKTtcbiAgICAgICAgY29uc3QgY3VyTG9jYWxlID0gdHlwZW9mIGxvY2FsZSAhPT0gJ3VuZGVmaW5lZCcgPyBsb2NhbGUgOiByb3V0ZXIgJiYgcm91dGVyLmxvY2FsZTtcbiAgICAgICAgY29uc3QgaXNQcmVmZXRjaGVkID0gcHJlZmV0Y2hlZFtocmVmICsgJyUnICsgYXMgKyAoY3VyTG9jYWxlID8gJyUnICsgY3VyTG9jYWxlIDogJycpXTtcbiAgICAgICAgaWYgKHNob3VsZFByZWZldGNoICYmICFpc1ByZWZldGNoZWQpIHtcbiAgICAgICAgICAgIHByZWZldGNoKHJvdXRlciwgaHJlZiwgYXMsIHtcbiAgICAgICAgICAgICAgICBsb2NhbGU6IGN1ckxvY2FsZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGFzLFxuICAgICAgICBocmVmLFxuICAgICAgICBpc1Zpc2libGUsXG4gICAgICAgIGxvY2FsZSxcbiAgICAgICAgcCxcbiAgICAgICAgcm91dGVyXG4gICAgXSk7XG4gICAgY29uc3QgY2hpbGRQcm9wcyA9IHtcbiAgICAgICAgcmVmOiBzZXRSZWYsXG4gICAgICAgIG9uQ2xpY2s6IChlKT0+e1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgcmVuZGVyZWQgaW5zaWRlIG5leHQvbGluayBoYXMgdG8gcGFzcyBjbGljayBldmVudCB0byBcIm9uQ2xpY2tcIiBwcm9wLmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbGVnYWN5QmVoYXZpb3IgJiYgdHlwZW9mIG9uQ2xpY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBvbkNsaWNrKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxlZ2FjeUJlaGF2aW9yICYmIGNoaWxkLnByb3BzICYmIHR5cGVvZiBjaGlsZC5wcm9wcy5vbkNsaWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgY2hpbGQucHJvcHMub25DbGljayhlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghZS5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgICAgbGlua0NsaWNrZWQoZSwgcm91dGVyLCBocmVmLCBhcywgcmVwbGFjZSwgc29mdCwgc2hhbGxvdywgc2Nyb2xsLCBsb2NhbGUsIGFwcFJvdXRlciA/IHN0YXJ0VHJhbnNpdGlvbiA6IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9uTW91c2VFbnRlcjogKGUpPT57XG4gICAgICAgICAgICBpZiAoIWxlZ2FjeUJlaGF2aW9yICYmIHR5cGVvZiBvbk1vdXNlRW50ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXIoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGVnYWN5QmVoYXZpb3IgJiYgY2hpbGQucHJvcHMgJiYgdHlwZW9mIGNoaWxkLnByb3BzLm9uTW91c2VFbnRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGNoaWxkLnByb3BzLm9uTW91c2VFbnRlcihlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgoMCwgX3JvdXRlcikuaXNMb2NhbFVSTChocmVmKSkge1xuICAgICAgICAgICAgICAgIHByZWZldGNoKHJvdXRlciwgaHJlZiwgYXMsIHtcbiAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8gSWYgY2hpbGQgaXMgYW4gPGE+IHRhZyBhbmQgZG9lc24ndCBoYXZlIGEgaHJlZiBhdHRyaWJ1dGUsIG9yIGlmIHRoZSAncGFzc0hyZWYnIHByb3BlcnR5IGlzXG4gICAgLy8gZGVmaW5lZCwgd2Ugc3BlY2lmeSB0aGUgY3VycmVudCAnaHJlZicsIHNvIHRoYXQgcmVwZXRpdGlvbiBpcyBub3QgbmVlZGVkIGJ5IHRoZSB1c2VyXG4gICAgaWYgKCFsZWdhY3lCZWhhdmlvciB8fCBwYXNzSHJlZiB8fCBjaGlsZC50eXBlID09PSAnYScgJiYgISgnaHJlZicgaW4gY2hpbGQucHJvcHMpKSB7XG4gICAgICAgIGNvbnN0IGN1ckxvY2FsZSA9IHR5cGVvZiBsb2NhbGUgIT09ICd1bmRlZmluZWQnID8gbG9jYWxlIDogcm91dGVyICYmIHJvdXRlci5sb2NhbGU7XG4gICAgICAgIC8vIHdlIG9ubHkgcmVuZGVyIGRvbWFpbiBsb2NhbGVzIGlmIHdlIGFyZSBjdXJyZW50bHkgb24gYSBkb21haW4gbG9jYWxlXG4gICAgICAgIC8vIHNvIHRoYXQgbG9jYWxlIGxpbmtzIGFyZSBzdGlsbCB2aXNpdGFibGUgaW4gZGV2ZWxvcG1lbnQvcHJldmlldyBlbnZzXG4gICAgICAgIGNvbnN0IGxvY2FsZURvbWFpbiA9IHJvdXRlciAmJiByb3V0ZXIuaXNMb2NhbGVEb21haW4gJiYgKDAsIF9nZXREb21haW5Mb2NhbGUpLmdldERvbWFpbkxvY2FsZShhcywgY3VyTG9jYWxlLCByb3V0ZXIubG9jYWxlcywgcm91dGVyLmRvbWFpbkxvY2FsZXMpO1xuICAgICAgICBjaGlsZFByb3BzLmhyZWYgPSBsb2NhbGVEb21haW4gfHwgKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgoKDAsIF9hZGRMb2NhbGUpLmFkZExvY2FsZShhcywgY3VyTG9jYWxlLCByb3V0ZXIgJiYgcm91dGVyLmRlZmF1bHRMb2NhbGUpKTtcbiAgICB9XG4gICAgcmV0dXJuIGxlZ2FjeUJlaGF2aW9yID8gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jbG9uZUVsZW1lbnQoY2hpbGQsIGNoaWxkUHJvcHMpIDogLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiYVwiLCBPYmplY3QuYXNzaWduKHt9LCByZXN0UHJvcHMsIGNoaWxkUHJvcHMpLCBjaGlsZHJlbik7XG59KTtcbnZhciBfZGVmYXVsdCA9IExpbms7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDtcblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bGluay5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJkZWZhdWx0IiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcm91dGVyIiwiX2FkZExvY2FsZSIsIl9yb3V0ZXJDb250ZXh0IiwiX2FwcFJvdXRlckNvbnRleHQiLCJfdXNlSW50ZXJzZWN0aW9uIiwiX2dldERvbWFpbkxvY2FsZSIsIl9hZGRCYXNlUGF0aCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsInNvdXJjZSIsImV4Y2x1ZGVkIiwidGFyZ2V0Iiwic291cmNlS2V5cyIsImtleXMiLCJrZXkiLCJpIiwibGVuZ3RoIiwiaW5kZXhPZiIsImhhc1VzZVRyYW5zaXRpb24iLCJ1c2VUcmFuc2l0aW9uIiwicHJlZmV0Y2hlZCIsInByZWZldGNoIiwicm91dGVyIiwiaHJlZiIsImFzIiwib3B0aW9ucyIsImlzTG9jYWxVUkwiLCJjYXRjaCIsImVyciIsInByb2Nlc3MiLCJjdXJMb2NhbGUiLCJsb2NhbGUiLCJpc01vZGlmaWVkRXZlbnQiLCJldmVudCIsImN1cnJlbnRUYXJnZXQiLCJtZXRhS2V5IiwiY3RybEtleSIsInNoaWZ0S2V5IiwiYWx0S2V5IiwibmF0aXZlRXZlbnQiLCJ3aGljaCIsImxpbmtDbGlja2VkIiwiZSIsInJlcGxhY2UiLCJzb2Z0Iiwic2hhbGxvdyIsInNjcm9sbCIsInN0YXJ0VHJhbnNpdGlvbiIsIm5vZGVOYW1lIiwiaXNBbmNob3JOb2RlTmFtZSIsInRvVXBwZXJDYXNlIiwicHJldmVudERlZmF1bHQiLCJuYXZpZ2F0ZSIsIm1ldGhvZCIsIkxpbmsiLCJmb3J3YXJkUmVmIiwiTGlua0NvbXBvbmVudCIsInByb3BzIiwiZm9yd2FyZGVkUmVmIiwiY3JlYXRlUHJvcEVycm9yIiwiYXJncyIsIkVycm9yIiwiZXhwZWN0ZWQiLCJhY3R1YWwiLCJyZXF1aXJlZFByb3BzR3VhcmQiLCJyZXF1aXJlZFByb3BzIiwiZm9yRWFjaCIsIl8iLCJvcHRpb25hbFByb3BzR3VhcmQiLCJwYXNzSHJlZiIsIm9uQ2xpY2siLCJvbk1vdXNlRW50ZXIiLCJsZWdhY3lCZWhhdmlvciIsIm9wdGlvbmFsUHJvcHMiLCJ2YWxUeXBlIiwiaGFzV2FybmVkIiwidXNlUmVmIiwiY3VycmVudCIsImNvbnNvbGUiLCJ3YXJuIiwiY2hpbGRyZW4iLCJocmVmUHJvcCIsImFzUHJvcCIsImNoaWxkcmVuUHJvcCIsInByZWZldGNoUHJvcCIsIkJvb2xlYW4iLCJlbnYiLCJfX05FWFRfTkVXX0xJTktfQkVIQVZJT1IiLCJyZXN0UHJvcHMiLCJjcmVhdGVFbGVtZW50IiwicCIsInVzZUNvbnRleHQiLCJSb3V0ZXJDb250ZXh0IiwiYXBwUm91dGVyIiwiQXBwUm91dGVyQ29udGV4dCIsInVzZU1lbW8iLCJyZXNvbHZlZEhyZWYiLCJyZXNvbHZlZEFzIiwicmVzb2x2ZUhyZWYiLCJwcmV2aW91c0hyZWYiLCJwcmV2aW91c0FzIiwiY2hpbGQiLCJDaGlsZHJlbiIsIm9ubHkiLCJjaGlsZFJlZiIsInJlZiIsInNldEludGVyc2VjdGlvblJlZiIsImlzVmlzaWJsZSIsInJlc2V0VmlzaWJsZSIsInVzZUludGVyc2VjdGlvbiIsInJvb3RNYXJnaW4iLCJzZXRSZWYiLCJ1c2VDYWxsYmFjayIsImVsIiwidXNlRWZmZWN0Iiwic2hvdWxkUHJlZmV0Y2giLCJpc1ByZWZldGNoZWQiLCJjaGlsZFByb3BzIiwiZGVmYXVsdFByZXZlbnRlZCIsInVuZGVmaW5lZCIsInByaW9yaXR5IiwidHlwZSIsImxvY2FsZURvbWFpbiIsImlzTG9jYWxlRG9tYWluIiwiZ2V0RG9tYWluTG9jYWxlIiwibG9jYWxlcyIsImRvbWFpbkxvY2FsZXMiLCJhZGRCYXNlUGF0aCIsImFkZExvY2FsZSIsImRlZmF1bHRMb2NhbGUiLCJjbG9uZUVsZW1lbnQiLCJhc3NpZ24iLCJfZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\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, __webpack_require__) => {
-
-"use strict";
-eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.normalizePathTrailingSlash = void 0;\nvar _removeTrailingSlash = __webpack_require__(/*! ../shared/lib/router/utils/remove-trailing-slash */ \"../shared/lib/router/utils/remove-trailing-slash\");\nvar _parsePath = __webpack_require__(/*! ../shared/lib/router/utils/parse-path */ \"../shared/lib/router/utils/parse-path\");\nconst normalizePathTrailingSlash = (path)=>{\n if (!path.startsWith(\"/\")) {\n return path;\n }\n const { pathname , query , hash } = (0, _parsePath).parsePath(path);\n if (false) {}\n return `${(0, _removeTrailingSlash).removeTrailingSlash(pathname)}${query}${hash}`;\n};\nexports.normalizePathTrailingSlash = normalizePathTrailingSlash;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=normalize-trailing-slash.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvbm9ybWFsaXplLXRyYWlsaW5nLXNsYXNoLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csS0FBSyxFQUFFLElBQUk7Q0FDZCxFQUFDLENBQUM7QUFDSEQsa0NBQWtDLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDNUMsSUFBSUcsb0JBQW9CLEdBQUdDLG1CQUFPLENBQUMsMEdBQWtELENBQUM7QUFDdEYsSUFBSUMsVUFBVSxHQUFHRCxtQkFBTyxDQUFDLG9GQUF1QyxDQUFDO0FBQ2pFLE1BQU1GLDBCQUEwQixHQUFHLENBQUNJLElBQUksR0FBRztJQUN2QyxJQUFJLENBQUNBLElBQUksQ0FBQ0MsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3ZCLE9BQU9ELElBQUksQ0FBQztLQUNmO0lBQ0QsTUFBTSxFQUFFRSxRQUFRLEdBQUdDLEtBQUssR0FBR0MsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUVMLFVBQVUsQ0FBQyxDQUFDTSxTQUFTLENBQUNMLElBQUksQ0FBQztJQUNwRSxJQUFJTSxLQUFpQyxFQUFFLEVBUXRDO0lBQ0QsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUVULG9CQUFvQixDQUFDLENBQUNhLG1CQUFtQixDQUFDUixRQUFRLENBQUMsQ0FBQyxFQUFFQyxLQUFLLENBQUMsRUFBRUMsSUFBSSxDQUFDLENBQUMsQ0FBQztDQUN0RjtBQUNEVixrQ0FBa0MsR0FBR0UsMEJBQTBCLENBQUM7QUFFaEUsSUFBSSxDQUFDLE9BQU9GLE9BQU8sQ0FBQ2tCLE9BQU8sS0FBSyxVQUFVLElBQUssT0FBT2xCLE9BQU8sQ0FBQ2tCLE9BQU8sS0FBSyxRQUFRLElBQUlsQixPQUFPLENBQUNrQixPQUFPLEtBQUssSUFBSSxDQUFFLElBQUksT0FBT2xCLE9BQU8sQ0FBQ2tCLE9BQU8sQ0FBQ0MsVUFBVSxLQUFLLFdBQVcsRUFBRTtJQUNyS3JCLE1BQU0sQ0FBQ0MsY0FBYyxDQUFDQyxPQUFPLENBQUNrQixPQUFPLEVBQUUsWUFBWSxFQUFFO1FBQUVqQixLQUFLLEVBQUUsSUFBSTtLQUFFLENBQUMsQ0FBQztJQUN0RUgsTUFBTSxDQUFDc0IsTUFBTSxDQUFDcEIsT0FBTyxDQUFDa0IsT0FBTyxFQUFFbEIsT0FBTyxDQUFDLENBQUM7SUFDeENxQixNQUFNLENBQUNyQixPQUFPLEdBQUdBLE9BQU8sQ0FBQ2tCLE9BQU8sQ0FBQztDQUNsQyxDQUVELG9EQUFvRCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9ub3JtYWxpemUtdHJhaWxpbmctc2xhc2guanM/NTRjMyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMubm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2ggPSB2b2lkIDA7XG52YXIgX3JlbW92ZVRyYWlsaW5nU2xhc2ggPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcmVtb3ZlLXRyYWlsaW5nLXNsYXNoXCIpO1xudmFyIF9wYXJzZVBhdGggPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcGFyc2UtcGF0aFwiKTtcbmNvbnN0IG5vcm1hbGl6ZVBhdGhUcmFpbGluZ1NsYXNoID0gKHBhdGgpPT57XG4gICAgaWYgKCFwYXRoLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICB9XG4gICAgY29uc3QgeyBwYXRobmFtZSAsIHF1ZXJ5ICwgaGFzaCAgfSA9ICgwLCBfcGFyc2VQYXRoKS5wYXJzZVBhdGgocGF0aCk7XG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9UUkFJTElOR19TTEFTSCkge1xuICAgICAgICBpZiAoL1xcLlteL10rXFwvPyQvLnRlc3QocGF0aG5hbWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7KDAsIF9yZW1vdmVUcmFpbGluZ1NsYXNoKS5yZW1vdmVUcmFpbGluZ1NsYXNoKHBhdGhuYW1lKX0ke3F1ZXJ5fSR7aGFzaH1gO1xuICAgICAgICB9IGVsc2UgaWYgKHBhdGhuYW1lLmVuZHNXaXRoKCcvJykpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtwYXRobmFtZX0ke3F1ZXJ5fSR7aGFzaH1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGAke3BhdGhuYW1lfS8ke3F1ZXJ5fSR7aGFzaH1gO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBgJHsoMCwgX3JlbW92ZVRyYWlsaW5nU2xhc2gpLnJlbW92ZVRyYWlsaW5nU2xhc2gocGF0aG5hbWUpfSR7cXVlcnl9JHtoYXNofWA7XG59O1xuZXhwb3J0cy5ub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaCA9IG5vcm1hbGl6ZVBhdGhUcmFpbGluZ1NsYXNoO1xuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1ub3JtYWxpemUtdHJhaWxpbmctc2xhc2guanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwibm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2giLCJfcmVtb3ZlVHJhaWxpbmdTbGFzaCIsInJlcXVpcmUiLCJfcGFyc2VQYXRoIiwicGF0aCIsInN0YXJ0c1dpdGgiLCJwYXRobmFtZSIsInF1ZXJ5IiwiaGFzaCIsInBhcnNlUGF0aCIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfVFJBSUxJTkdfU0xBU0giLCJ0ZXN0IiwicmVtb3ZlVHJhaWxpbmdTbGFzaCIsImVuZHNXaXRoIiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../node_modules/next/dist/client/normalize-trailing-slash.js\n");
-
-/***/ }),
-
-/***/ "../node_modules/next/dist/client/remove-base-path.js":
-/*!************************************************************!*\
- !*** ../node_modules/next/dist/client/remove-base-path.js ***!
- \************************************************************/
-/***/ ((module, exports, __webpack_require__) => {
-
-"use strict";
-eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.removeBasePath = removeBasePath;\nvar _hasBasePath = __webpack_require__(/*! ./has-base-path */ \"../node_modules/next/dist/client/has-base-path.js\");\nconst basePath = false || \"\";\nfunction removeBasePath(path) {\n if (false) {}\n path = path.slice(basePath.length);\n if (!path.startsWith(\"/\")) path = `/${path}`;\n return path;\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=remove-base-path.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcmVtb3ZlLWJhc2UtcGF0aC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLEtBQUssRUFBRSxJQUFJO0NBQ2QsRUFBQyxDQUFDO0FBQ0hELHNCQUFzQixHQUFHRSxjQUFjLENBQUM7QUFDeEMsSUFBSUMsWUFBWSxHQUFHQyxtQkFBTyxDQUFDLDBFQUFpQixDQUFDO0FBQzdDLE1BQU1DLFFBQVEsR0FBR0MsTUFBa0MsSUFBSSxFQUFFO0FBQ3pELFNBQVNKLGNBQWMsQ0FBQ08sSUFBSSxFQUFFO0lBQzFCLElBQUlILEtBQTBDLEVBQUUsRUFJL0M7SUFDREcsSUFBSSxHQUFHQSxJQUFJLENBQUNHLEtBQUssQ0FBQ1AsUUFBUSxDQUFDUSxNQUFNLENBQUMsQ0FBQztJQUNuQyxJQUFJLENBQUNKLElBQUksQ0FBQ0ssVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFTCxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUVBLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0MsT0FBT0EsSUFBSSxDQUFDO0NBQ2Y7QUFFRCxJQUFJLENBQUMsT0FBT1QsT0FBTyxDQUFDZSxPQUFPLEtBQUssVUFBVSxJQUFLLE9BQU9mLE9BQU8sQ0FBQ2UsT0FBTyxLQUFLLFFBQVEsSUFBSWYsT0FBTyxDQUFDZSxPQUFPLEtBQUssSUFBSSxDQUFFLElBQUksT0FBT2YsT0FBTyxDQUFDZSxPQUFPLENBQUNDLFVBQVUsS0FBSyxXQUFXLEVBQUU7SUFDcktsQixNQUFNLENBQUNDLGNBQWMsQ0FBQ0MsT0FBTyxDQUFDZSxPQUFPLEVBQUUsWUFBWSxFQUFFO1FBQUVkLEtBQUssRUFBRSxJQUFJO0tBQUUsQ0FBQyxDQUFDO0lBQ3RFSCxNQUFNLENBQUNtQixNQUFNLENBQUNqQixPQUFPLENBQUNlLE9BQU8sRUFBRWYsT0FBTyxDQUFDLENBQUM7SUFDeENrQixNQUFNLENBQUNsQixPQUFPLEdBQUdBLE9BQU8sQ0FBQ2UsT0FBTyxDQUFDO0NBQ2xDLENBRUQsNENBQTRDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3JlbW92ZS1iYXNlLXBhdGguanM/N2EyMiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMucmVtb3ZlQmFzZVBhdGggPSByZW1vdmVCYXNlUGF0aDtcbnZhciBfaGFzQmFzZVBhdGggPSByZXF1aXJlKFwiLi9oYXMtYmFzZS1wYXRoXCIpO1xuY29uc3QgYmFzZVBhdGggPSBwcm9jZXNzLmVudi5fX05FWFRfUk9VVEVSX0JBU0VQQVRIIHx8ICcnO1xuZnVuY3Rpb24gcmVtb3ZlQmFzZVBhdGgocGF0aCkge1xuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfTUFOVUFMX0NMSUVOVF9CQVNFX1BBVEgpIHtcbiAgICAgICAgaWYgKCEoMCwgX2hhc0Jhc2VQYXRoKS5oYXNCYXNlUGF0aChwYXRoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcGF0aCA9IHBhdGguc2xpY2UoYmFzZVBhdGgubGVuZ3RoKTtcbiAgICBpZiAoIXBhdGguc3RhcnRzV2l0aCgnLycpKSBwYXRoID0gYC8ke3BhdGh9YDtcbiAgICByZXR1cm4gcGF0aDtcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVtb3ZlLWJhc2UtcGF0aC5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJyZW1vdmVCYXNlUGF0aCIsIl9oYXNCYXNlUGF0aCIsInJlcXVpcmUiLCJiYXNlUGF0aCIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfUk9VVEVSX0JBU0VQQVRIIiwicGF0aCIsIl9fTkVYVF9NQU5VQUxfQ0xJRU5UX0JBU0VfUEFUSCIsImhhc0Jhc2VQYXRoIiwic2xpY2UiLCJsZW5ndGgiLCJzdGFydHNXaXRoIiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../node_modules/next/dist/client/remove-base-path.js\n");
-
-/***/ }),
-
-/***/ "../node_modules/next/dist/client/remove-locale.js":
-/*!*********************************************************!*\
- !*** ../node_modules/next/dist/client/remove-locale.js ***!
- \*********************************************************/
-/***/ ((module, exports, __webpack_require__) => {
-
-"use strict";
-eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.removeLocale = removeLocale;\nvar _parsePath = __webpack_require__(/*! ../shared/lib/router/utils/parse-path */ \"../shared/lib/router/utils/parse-path\");\nfunction removeLocale(path, locale) {\n if (false) {}\n return path;\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=remove-locale.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcmVtb3ZlLWxvY2FsZS5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLEtBQUssRUFBRSxJQUFJO0NBQ2QsRUFBQyxDQUFDO0FBQ0hELG9CQUFvQixHQUFHRSxZQUFZLENBQUM7QUFDcEMsSUFBSUMsVUFBVSxHQUFHQyxtQkFBTyxDQUFDLG9GQUF1QyxDQUFDO0FBQ2pFLFNBQVNGLFlBQVksQ0FBQ0csSUFBSSxFQUFFQyxNQUFNLEVBQUU7SUFDaEMsSUFBSUMsS0FBK0IsRUFBRSxFQUtwQztJQUNELE9BQU9GLElBQUksQ0FBQztDQUNmO0FBRUQsSUFBSSxDQUFDLE9BQU9MLE9BQU8sQ0FBQ2tCLE9BQU8sS0FBSyxVQUFVLElBQUssT0FBT2xCLE9BQU8sQ0FBQ2tCLE9BQU8sS0FBSyxRQUFRLElBQUlsQixPQUFPLENBQUNrQixPQUFPLEtBQUssSUFBSSxDQUFFLElBQUksT0FBT2xCLE9BQU8sQ0FBQ2tCLE9BQU8sQ0FBQ0MsVUFBVSxLQUFLLFdBQVcsRUFBRTtJQUNyS3JCLE1BQU0sQ0FBQ0MsY0FBYyxDQUFDQyxPQUFPLENBQUNrQixPQUFPLEVBQUUsWUFBWSxFQUFFO1FBQUVqQixLQUFLLEVBQUUsSUFBSTtLQUFFLENBQUMsQ0FBQztJQUN0RUgsTUFBTSxDQUFDc0IsTUFBTSxDQUFDcEIsT0FBTyxDQUFDa0IsT0FBTyxFQUFFbEIsT0FBTyxDQUFDLENBQUM7SUFDeENxQixNQUFNLENBQUNyQixPQUFPLEdBQUdBLE9BQU8sQ0FBQ2tCLE9BQU8sQ0FBQztDQUNsQyxDQUVELHlDQUF5QyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZW1vdmUtbG9jYWxlLmpzP2MwYTciXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLnJlbW92ZUxvY2FsZSA9IHJlbW92ZUxvY2FsZTtcbnZhciBfcGFyc2VQYXRoID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhcnNlLXBhdGhcIik7XG5mdW5jdGlvbiByZW1vdmVMb2NhbGUocGF0aCwgbG9jYWxlKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9JMThOX1NVUFBPUlQpIHtcbiAgICAgICAgY29uc3QgeyBwYXRobmFtZSAgfSA9ICgwLCBfcGFyc2VQYXRoKS5wYXJzZVBhdGgocGF0aCk7XG4gICAgICAgIGNvbnN0IHBhdGhMb3dlciA9IHBhdGhuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IGxvY2FsZUxvd2VyID0gbG9jYWxlID09IG51bGwgPyB2b2lkIDAgOiBsb2NhbGUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0dXJuIGxvY2FsZSAmJiAocGF0aExvd2VyLnN0YXJ0c1dpdGgoYC8ke2xvY2FsZUxvd2VyfS9gKSB8fCBwYXRoTG93ZXIgPT09IGAvJHtsb2NhbGVMb3dlcn1gKSA/IGAke3BhdGhuYW1lLmxlbmd0aCA9PT0gbG9jYWxlLmxlbmd0aCArIDEgPyBgL2AgOiBgYH0ke3BhdGguc2xpY2UobG9jYWxlLmxlbmd0aCArIDEpfWAgOiBwYXRoO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aDtcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVtb3ZlLWxvY2FsZS5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJyZW1vdmVMb2NhbGUiLCJfcGFyc2VQYXRoIiwicmVxdWlyZSIsInBhdGgiLCJsb2NhbGUiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX0kxOE5fU1VQUE9SVCIsInBhdGhuYW1lIiwicGFyc2VQYXRoIiwicGF0aExvd2VyIiwidG9Mb3dlckNhc2UiLCJsb2NhbGVMb3dlciIsInN0YXJ0c1dpdGgiLCJsZW5ndGgiLCJzbGljZSIsImRlZmF1bHQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../node_modules/next/dist/client/remove-locale.js\n");
-
-/***/ }),
-
-/***/ "../node_modules/next/dist/client/request-idle-callback.js":
-/*!*****************************************************************!*\
- !*** ../node_modules/next/dist/client/request-idle-callback.js ***!
- \*****************************************************************/
-/***/ ((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) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=request-idle-callback.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcmVxdWVzdC1pZGxlLWNhbGxiYWNrLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csS0FBSyxFQUFFLElBQUk7Q0FDZCxFQUFDLENBQUM7QUFDSEQsMEJBQTBCLEdBQUdBLDJCQUEyQixHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ2xFLE1BQU1HLG1CQUFtQixHQUFHLE9BQU9DLElBQUksS0FBSyxXQUFXLElBQUlBLElBQUksQ0FBQ0QsbUJBQW1CLElBQUlDLElBQUksQ0FBQ0QsbUJBQW1CLENBQUNFLElBQUksQ0FBQ0MsTUFBTSxDQUFDLElBQUksU0FBU0MsRUFBRSxFQUFFO0lBQ3pJLElBQUlDLEtBQUssR0FBR0MsSUFBSSxDQUFDQyxHQUFHLEVBQUU7SUFDdEIsT0FBT0MsVUFBVSxDQUFDLFdBQVc7UUFDekJKLEVBQUUsQ0FBQztZQUNDSyxVQUFVLEVBQUUsS0FBSztZQUNqQkMsYUFBYSxFQUFFLFdBQVc7Z0JBQ3RCLE9BQU9DLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQ04sSUFBSSxDQUFDQyxHQUFHLEVBQUUsR0FBR0YsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNqRDtTQUNKLENBQUMsQ0FBQztLQUNOLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDVDtBQUNEUiwyQkFBMkIsR0FBR0csbUJBQW1CLENBQUM7QUFDbEQsTUFBTUQsa0JBQWtCLEdBQUcsT0FBT0UsSUFBSSxLQUFLLFdBQVcsSUFBSUEsSUFBSSxDQUFDRixrQkFBa0IsSUFBSUUsSUFBSSxDQUFDRixrQkFBa0IsQ0FBQ0csSUFBSSxDQUFDQyxNQUFNLENBQUMsSUFBSSxTQUFTVSxFQUFFLEVBQUU7SUFDdEksT0FBT0MsWUFBWSxDQUFDRCxFQUFFLENBQUMsQ0FBQztDQUMzQjtBQUNEaEIsMEJBQTBCLEdBQUdFLGtCQUFrQixDQUFDO0FBRWhELElBQUksQ0FBQyxPQUFPRixPQUFPLENBQUNrQixPQUFPLEtBQUssVUFBVSxJQUFLLE9BQU9sQixPQUFPLENBQUNrQixPQUFPLEtBQUssUUFBUSxJQUFJbEIsT0FBTyxDQUFDa0IsT0FBTyxLQUFLLElBQUksQ0FBRSxJQUFJLE9BQU9sQixPQUFPLENBQUNrQixPQUFPLENBQUNDLFVBQVUsS0FBSyxXQUFXLEVBQUU7SUFDcktyQixNQUFNLENBQUNDLGNBQWMsQ0FBQ0MsT0FBTyxDQUFDa0IsT0FBTyxFQUFFLFlBQVksRUFBRTtRQUFFakIsS0FBSyxFQUFFLElBQUk7S0FBRSxDQUFDLENBQUM7SUFDdEVILE1BQU0sQ0FBQ3NCLE1BQU0sQ0FBQ3BCLE9BQU8sQ0FBQ2tCLE9BQU8sRUFBRWxCLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDcUIsTUFBTSxDQUFDckIsT0FBTyxHQUFHQSxPQUFPLENBQUNrQixPQUFPLENBQUM7Q0FDbEMsQ0FFRCxpREFBaUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcmVxdWVzdC1pZGxlLWNhbGxiYWNrLmpzPzY5NTQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmNhbmNlbElkbGVDYWxsYmFjayA9IGV4cG9ydHMucmVxdWVzdElkbGVDYWxsYmFjayA9IHZvaWQgMDtcbmNvbnN0IHJlcXVlc3RJZGxlQ2FsbGJhY2sgPSB0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrICYmIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjay5iaW5kKHdpbmRvdykgfHwgZnVuY3Rpb24oY2IpIHtcbiAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICBjYih7XG4gICAgICAgICAgICBkaWRUaW1lb3V0OiBmYWxzZSxcbiAgICAgICAgICAgIHRpbWVSZW1haW5pbmc6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLm1heCgwLCA1MCAtIChEYXRlLm5vdygpIC0gc3RhcnQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSwgMSk7XG59O1xuZXhwb3J0cy5yZXF1ZXN0SWRsZUNhbGxiYWNrID0gcmVxdWVzdElkbGVDYWxsYmFjaztcbmNvbnN0IGNhbmNlbElkbGVDYWxsYmFjayA9IHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyAmJiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayAmJiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjay5iaW5kKHdpbmRvdykgfHwgZnVuY3Rpb24oaWQpIHtcbiAgICByZXR1cm4gY2xlYXJUaW1lb3V0KGlkKTtcbn07XG5leHBvcnRzLmNhbmNlbElkbGVDYWxsYmFjayA9IGNhbmNlbElkbGVDYWxsYmFjaztcblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVxdWVzdC1pZGxlLWNhbGxiYWNrLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImNhbmNlbElkbGVDYWxsYmFjayIsInJlcXVlc3RJZGxlQ2FsbGJhY2siLCJzZWxmIiwiYmluZCIsIndpbmRvdyIsImNiIiwic3RhcnQiLCJEYXRlIiwibm93Iiwic2V0VGltZW91dCIsImRpZFRpbWVvdXQiLCJ0aW1lUmVtYWluaW5nIiwiTWF0aCIsIm1heCIsImlkIiwiY2xlYXJUaW1lb3V0IiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\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.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 _trustedTypes = __webpack_require__(/*! ./trusted-types */ \"../node_modules/next/dist/client/trusted-types.js\");\nvar _requestIdleCallback = __webpack_require__(/*! ./request-idle-callback */ \"../node_modules/next/dist/client/request-idle-callback.js\");\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)).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 // 2. Configure the cross-origin attribute before setting `src` in case the\n // browser begins to fetch.\n script.crossOrigin = undefined;\n // 3. Finally, set the source and inject into the DOM in case the child\n // must be appended for fetching to start.\n script.src = src;\n document.body.appendChild(script);\n });\n}\n// We wait for pages to be built in dev before we start the route transition\n// timeout to prevent an un-necessary hard navigation in development.\nlet devBuildPromise;\n// Resolve a promise that times out after given amount of milliseconds.\nfunction resolvePromiseWithTimeout(p, ms, err) {\n return new Promise((resolve, reject)=>{\n let cancelled = false;\n p.then((r)=>{\n // Resolved, cancel the timeout\n cancelled = true;\n resolve(r);\n }).catch(reject);\n // We wrap these checks separately for better dead-code elimination in\n // production bundles.\n if (true) {\n (devBuildPromise || Promise.resolve()).then(()=>{\n (0, _requestIdleCallback).requestIdleCallback(()=>setTimeout(()=>{\n if (!cancelled) {\n reject(err);\n }\n }, ms));\n });\n }\n if (false) {}\n });\n}\nfunction getClientBuildManifest() {\n if (self.__BUILD_MANIFEST) {\n return Promise.resolve(self.__BUILD_MANIFEST);\n }\n const onBuildManifest = new Promise((resolve)=>{\n // Mandatory because this is not concurrent safe:\n const cb = self.__BUILD_MANIFEST_CB;\n self.__BUILD_MANIFEST_CB = ()=>{\n resolve(self.__BUILD_MANIFEST);\n cb && cb();\n };\n });\n return resolvePromiseWithTimeout(onBuildManifest, MS_MAX_IDLE_DELAY, markAssetError(new Error(\"Failed to load client build manifest\")));\n}\nfunction getFilesForRoute(assetPrefix, route) {\n if (true) {\n const scriptUrl = assetPrefix + \"/_next/static/chunks/pages\" + encodeURI((0, _getAssetPathFromRoute).default(route, \".js\"));\n return Promise.resolve({\n scripts: [\n (0, _trustedTypes).__unsafeCreateTrustedScriptURL(scriptUrl)\n ],\n // Styles are handled by `style-loader` in development:\n css: []\n });\n }\n return getClientBuildManifest().then((manifest)=>{\n if (!(route in manifest)) {\n throw markAssetError(new Error(`Failed to lookup route: ${route}`));\n }\n const allFiles = manifest[route].map((entry)=>assetPrefix + \"/_next/\" + encodeURI(entry));\n return {\n scripts: allFiles.filter((v)=>v.endsWith(\".js\")).map((v)=>(0, _trustedTypes).__unsafeCreateTrustedScriptURL(v)),\n css: allFiles.filter((v)=>v.endsWith(\".css\"))\n };\n });\n}\nfunction createRouteLoader(assetPrefix) {\n const entrypoints = new Map();\n const loadedScripts = new Map();\n const styleSheets = new Map();\n const routes = new Map();\n function maybeExecuteScript(src) {\n // With HMR we might need to \"reload\" scripts when they are\n // disposed and readded. Executing scripts twice has no functional\n // differences\n if (false) {} else {\n return appendScript(src);\n }\n }\n function fetchStyleSheet(href) {\n let prom = styleSheets.get(href);\n if (prom) {\n return prom;\n }\n styleSheets.set(href, prom = fetch(href).then((res)=>{\n if (!res.ok) {\n throw new Error(`Failed to load stylesheet: ${href}`);\n }\n return res.text().then((text)=>({\n href: href,\n content: text\n }));\n }).catch((err)=>{\n throw markAssetError(err);\n }));\n return prom;\n }\n return {\n whenEntrypoint (route) {\n return withFuture(route, entrypoints);\n },\n onEntrypoint (route, execute) {\n (execute ? Promise.resolve().then(()=>execute()).then((exports1)=>({\n component: exports1 && exports1.default || exports1,\n exports: exports1\n }), (err)=>({\n error: err\n })) : Promise.resolve(undefined)).then((input)=>{\n const old = entrypoints.get(route);\n if (old && \"resolve\" in old) {\n if (input) {\n entrypoints.set(route, input);\n old.resolve(input);\n }\n } else {\n if (input) {\n entrypoints.set(route, input);\n } else {\n entrypoints.delete(route);\n }\n // when this entrypoint has been resolved before\n // the route is outdated and we want to invalidate\n // this cache entry\n routes.delete(route);\n }\n });\n },\n loadRoute (route, prefetch) {\n return withFuture(route, routes, ()=>{\n let devBuildPromiseResolve;\n if (true) {\n devBuildPromise = new Promise((resolve)=>{\n devBuildPromiseResolve = resolve;\n });\n }\n return resolvePromiseWithTimeout(getFilesForRoute(assetPrefix, route).then(({ 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 }), 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 ? void 0 : devBuildPromiseResolve();\n });\n });\n },\n prefetch (route) {\n // https://github.com/GoogleChromeLabs/quicklink/blob/453a661fa1fa940e2d2e044452398e38c67a98fb/src/index.mjs#L115-L118\n // License: Apache 2.0\n let cn;\n if (cn = navigator.connection) {\n // Don't prefetch if using 2G or if Save-Data is enabled.\n if (cn.saveData || /2g/.test(cn.effectiveType)) return Promise.resolve();\n }\n return getFilesForRoute(assetPrefix, route).then((output)=>Promise.all(canPrefetch ? output.scripts.map((script)=>prefetchViaDom(script.toString(), \"script\")) : [])).then(()=>{\n (0, _requestIdleCallback).requestIdleCallback(()=>this.loadRoute(route, true).catch(()=>{}));\n }).catch(()=>{});\n }\n };\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=route-loader.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcm91dGUtbG9hZGVyLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csS0FBSyxFQUFFLElBQUk7Q0FDZCxFQUFDLENBQUM7QUFDSEQsc0JBQXNCLEdBQUdFLGNBQWMsQ0FBQztBQUN4Q0Ysb0JBQW9CLEdBQUdHLFlBQVksQ0FBQztBQUNwQ0gsOEJBQThCLEdBQUdJLHNCQUFzQixDQUFDO0FBQ3hESix5QkFBeUIsR0FBR0ssaUJBQWlCLENBQUM7QUFDOUMsSUFBSUMsc0JBQXNCLEdBQUdDLHNCQUFzQixDQUFDQyxtQkFBTyxDQUFDLGtIQUFzRCxDQUFDLENBQUM7QUFDcEgsSUFBSUMsYUFBYSxHQUFHRCxtQkFBTyxDQUFDLDBFQUFpQixDQUFDO0FBQzlDLElBQUlFLG9CQUFvQixHQUFHRixtQkFBTyxDQUFDLDBGQUF5QixDQUFDO0FBQzdELFNBQVNELHNCQUFzQixDQUFDSSxHQUFHLEVBQUU7SUFDakMsT0FBT0EsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVUsR0FBR0QsR0FBRyxHQUFHO1FBQ2pDRSxPQUFPLEVBQUVGLEdBQUc7S0FDZixDQUFDO0NBQ0w7QUFDRCx1RUFBdUU7QUFDdkUseUVBQXlFO0FBQ3pFLDJFQUEyRTtBQUMzRSxvQ0FBb0M7QUFDcEMsTUFBTUcsaUJBQWlCLEdBQUcsSUFBSTtBQUM5QixTQUFTQyxVQUFVLENBQUNDLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxTQUFTLEVBQUU7SUFDckMsSUFBSUMsS0FBSyxHQUFHRixHQUFHLENBQUNHLEdBQUcsQ0FBQ0osR0FBRyxDQUFDO0lBQ3hCLElBQUlHLEtBQUssRUFBRTtRQUNQLElBQUksUUFBUSxJQUFJQSxLQUFLLEVBQUU7WUFDbkIsT0FBT0EsS0FBSyxDQUFDRSxNQUFNLENBQUM7U0FDdkI7UUFDRCxPQUFPQyxPQUFPLENBQUNDLE9BQU8sQ0FBQ0osS0FBSyxDQUFDLENBQUM7S0FDakM7SUFDRCxJQUFJSyxR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QUFDdkgsT0FBTyxDQUFDYSxPQUFPLEVBQUViLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDZ0ksTUFBTSxDQUFDaEksT0FBTyxHQUFHQSxPQUFPLENBQUNhLE9BQU8sQ0FBQztDQUNsQyxDQUVELHdDQUF3QyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yb3V0ZS1sb2FkZXIuanM/ZGRjZiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMubWFya0Fzc2V0RXJyb3IgPSBtYXJrQXNzZXRFcnJvcjtcbmV4cG9ydHMuaXNBc3NldEVycm9yID0gaXNBc3NldEVycm9yO1xuZXhwb3J0cy5nZXRDbGllbnRCdWlsZE1hbmlmZXN0ID0gZ2V0Q2xpZW50QnVpbGRNYW5pZmVzdDtcbmV4cG9ydHMuY3JlYXRlUm91dGVMb2FkZXIgPSBjcmVhdGVSb3V0ZUxvYWRlcjtcbnZhciBfZ2V0QXNzZXRQYXRoRnJvbVJvdXRlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvZ2V0LWFzc2V0LXBhdGgtZnJvbS1yb3V0ZVwiKSk7XG52YXIgX3RydXN0ZWRUeXBlcyA9IHJlcXVpcmUoXCIuL3RydXN0ZWQtdHlwZXNcIik7XG52YXIgX3JlcXVlc3RJZGxlQ2FsbGJhY2sgPSByZXF1aXJlKFwiLi9yZXF1ZXN0LWlkbGUtY2FsbGJhY2tcIik7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikge1xuICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgICAgIGRlZmF1bHQ6IG9ialxuICAgIH07XG59XG4vLyAzLjhzIHdhcyBhcmJpdHJhcmlseSBjaG9zZW4gYXMgaXQncyB3aGF0IGh0dHBzOi8vd2ViLmRldi9pbnRlcmFjdGl2ZVxuLy8gY29uc2lkZXJzIGFzIFwiR29vZFwiIHRpbWUtdG8taW50ZXJhY3RpdmUuIFdlIG11c3QgYXNzdW1lIHNvbWV0aGluZyB3ZW50XG4vLyB3cm9uZyBiZXlvbmQgdGhpcyBwb2ludCwgYW5kIHRoZW4gZmFsbC1iYWNrIHRvIGEgZnVsbCBwYWdlIHRyYW5zaXRpb24gdG9cbi8vIHNob3cgdGhlIHVzZXIgc29tZXRoaW5nIG9mIHZhbHVlLlxuY29uc3QgTVNfTUFYX0lETEVfREVMQVkgPSAzODAwO1xuZnVuY3Rpb24gd2l0aEZ1dHVyZShrZXksIG1hcCwgZ2VuZXJhdG9yKSB7XG4gICAgbGV0IGVudHJ5ID0gbWFwLmdldChrZXkpO1xuICAgIGlmIChlbnRyeSkge1xuICAgICAgICBpZiAoJ2Z1dHVyZScgaW4gZW50cnkpIHtcbiAgICAgICAgICAgIHJldHVybiBlbnRyeS5mdXR1cmU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShlbnRyeSk7XG4gICAgfVxuICAgIGxldCByZXNvbHZlcjtcbiAgICBjb25zdCBwcm9tID0gbmV3IFByb21pc2UoKHJlc29sdmUpPT57XG4gICAgICAgIHJlc29sdmVyID0gcmVzb2x2ZTtcbiAgICB9KTtcbiAgICBtYXAuc2V0KGtleSwgZW50cnkgPSB7XG4gICAgICAgIHJlc29sdmU6IHJlc29sdmVyLFxuICAgICAgICBmdXR1cmU6IHByb21cbiAgICB9KTtcbiAgICByZXR1cm4gZ2VuZXJhdG9yID8gZ2VuZXJhdG9yKCkvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VxdWVuY2VzXG4gICAgLnRoZW4oKHZhbHVlKT0+KHJlc29sdmVyKHZhbHVlKSwgdmFsdWUpKS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICBtYXAuZGVsZXRlKGtleSk7XG4gICAgICAgIHRocm93IGVycjtcbiAgICB9KSA6IHByb207XG59XG5mdW5jdGlvbiBoYXNQcmVmZXRjaChsaW5rKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTtcbiAgICAgICAgcmV0dXJuKC8vIGRldGVjdCBJRTExIHNpbmNlIGl0IHN1cHBvcnRzIHByZWZldGNoIGJ1dCBpc24ndCBkZXRlY3RlZFxuICAgICAgICAvLyB3aXRoIHJlbExpc3Quc3VwcG9ydFxuICAgICAgICAoISF3aW5kb3cuTVNJbnB1dE1ldGhvZENvbnRleHQgJiYgISFkb2N1bWVudC5kb2N1bWVudE1vZGUpIHx8IGxpbmsucmVsTGlzdC5zdXBwb3J0cygncHJlZmV0Y2gnKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuY29uc3QgY2FuUHJlZmV0Y2ggPSBoYXNQcmVmZXRjaCgpO1xuZnVuY3Rpb24gcHJlZmV0Y2hWaWFEb20oaHJlZiwgYXMsIGxpbmspIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlcywgcmVqKT0+e1xuICAgICAgICBjb25zdCBzZWxlY3RvciA9IGBcbiAgICAgIGxpbmtbcmVsPVwicHJlZmV0Y2hcIl1baHJlZl49XCIke2hyZWZ9XCJdLFxuICAgICAgbGlua1tyZWw9XCJwcmVsb2FkXCJdW2hyZWZePVwiJHtocmVmfVwiXSxcbiAgICAgIHNjcmlwdFtzcmNePVwiJHtocmVmfVwiXWA7XG4gICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlcygpO1xuICAgICAgICB9XG4gICAgICAgIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7XG4gICAgICAgIC8vIFRoZSBvcmRlciBvZiBwcm9wZXJ0eSBhc3NpZ25tZW50IGhlcmUgaXMgaW50ZW50aW9uYWw6XG4gICAgICAgIGlmIChhcykgbGluay5hcyA9IGFzO1xuICAgICAgICBsaW5rLnJlbCA9IGBwcmVmZXRjaGA7XG4gICAgICAgIGxpbmsuY3Jvc3NPcmlnaW4gPSBwcm9jZXNzLmVudi5fX05FWFRfQ1JPU1NfT1JJR0lOO1xuICAgICAgICBsaW5rLm9ubG9hZCA9IHJlcztcbiAgICAgICAgbGluay5vbmVycm9yID0gcmVqO1xuICAgICAgICAvLyBgaHJlZmAgc2hvdWxkIGFsd2F5cyBiZSBsYXN0OlxuICAgICAgICBsaW5rLmhyZWYgPSBocmVmO1xuICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGxpbmspO1xuICAgIH0pO1xufVxuY29uc3QgQVNTRVRfTE9BRF9FUlJPUiA9IFN5bWJvbCgnQVNTRVRfTE9BRF9FUlJPUicpO1xuZnVuY3Rpb24gbWFya0Fzc2V0RXJyb3IoZXJyKSB7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlcnIsIEFTU0VUX0xPQURfRVJST1IsIHt9KTtcbn1cbmZ1bmN0aW9uIGlzQXNzZXRFcnJvcihlcnIpIHtcbiAgICByZXR1cm4gZXJyICYmIEFTU0VUX0xPQURfRVJST1IgaW4gZXJyO1xufVxuZnVuY3Rpb24gYXBwZW5kU2NyaXB0KHNyYywgc2NyaXB0KSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57XG4gICAgICAgIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICAvLyBUaGUgb3JkZXIgb2YgcHJvcGVydHkgYXNzaWdubWVudCBoZXJlIGlzIGludGVudGlvbmFsLlxuICAgICAgICAvLyAxLiBTZXR1cCBzdWNjZXNzL2ZhaWx1cmUgaG9va3MgaW4gY2FzZSB0aGUgYnJvd3NlciBzeW5jaHJvbm91c2x5XG4gICAgICAgIC8vICAgIGV4ZWN1dGVzIHdoZW4gYHNyY2AgaXMgc2V0LlxuICAgICAgICBzY3JpcHQub25sb2FkID0gcmVzb2x2ZTtcbiAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoKT0+cmVqZWN0KG1hcmtBc3NldEVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIGxvYWQgc2NyaXB0OiAke3NyY31gKSkpO1xuICAgICAgICAvLyAyLiBDb25maWd1cmUgdGhlIGNyb3NzLW9yaWdpbiBhdHRyaWJ1dGUgYmVmb3JlIHNldHRpbmcgYHNyY2AgaW4gY2FzZSB0aGVcbiAgICAgICAgLy8gICAgYnJvd3NlciBiZWdpbnMgdG8gZmV0Y2guXG4gICAgICAgIHNjcmlwdC5jcm9zc09yaWdpbiA9IHByb2Nlc3MuZW52Ll9fTkVYVF9DUk9TU19PUklHSU47XG4gICAgICAgIC8vIDMuIEZpbmFsbHksIHNldCB0aGUgc291cmNlIGFuZCBpbmplY3QgaW50byB0aGUgRE9NIGluIGNhc2UgdGhlIGNoaWxkXG4gICAgICAgIC8vICAgIG11c3QgYmUgYXBwZW5kZWQgZm9yIGZldGNoaW5nIHRvIHN0YXJ0LlxuICAgICAgICBzY3JpcHQuc3JjID0gc3JjO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgfSk7XG59XG4vLyBXZSB3YWl0IGZvciBwYWdlcyB0byBiZSBidWlsdCBpbiBkZXYgYmVmb3JlIHdlIHN0YXJ0IHRoZSByb3V0ZSB0cmFuc2l0aW9uXG4vLyB0aW1lb3V0IHRvIHByZXZlbnQgYW4gdW4tbmVjZXNzYXJ5IGhhcmQgbmF2aWdhdGlvbiBpbiBkZXZlbG9wbWVudC5cbmxldCBkZXZCdWlsZFByb21pc2U7XG4vLyBSZXNvbHZlIGEgcHJvbWlzZSB0aGF0IHRpbWVzIG91dCBhZnRlciBnaXZlbiBhbW91bnQgb2YgbWlsbGlzZWNvbmRzLlxuZnVuY3Rpb24gcmVzb2x2ZVByb21pc2VXaXRoVGltZW91dChwLCBtcywgZXJyKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57XG4gICAgICAgIGxldCBjYW5jZWxsZWQgPSBmYWxzZTtcbiAgICAgICAgcC50aGVuKChyKT0+e1xuICAgICAgICAgICAgLy8gUmVzb2x2ZWQsIGNhbmNlbCB0aGUgdGltZW91dFxuICAgICAgICAgICAgY2FuY2VsbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJlc29sdmUocik7XG4gICAgICAgIH0pLmNhdGNoKHJlamVjdCk7XG4gICAgICAgIC8vIFdlIHdyYXAgdGhlc2UgY2hlY2tzIHNlcGFyYXRlbHkgZm9yIGJldHRlciBkZWFkLWNvZGUgZWxpbWluYXRpb24gaW5cbiAgICAgICAgLy8gcHJvZHVjdGlvbiBidW5kbGVzLlxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgICAgIChkZXZCdWlsZFByb21pc2UgfHwgUHJvbWlzZS5yZXNvbHZlKCkpLnRoZW4oKCk9PntcbiAgICAgICAgICAgICAgICAoMCwgX3JlcXVlc3RJZGxlQ2FsbGJhY2spLnJlcXVlc3RJZGxlQ2FsbGJhY2soKCk9PnNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIG1zKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgICAgICgwLCBfcmVxdWVzdElkbGVDYWxsYmFjaykucmVxdWVzdElkbGVDYWxsYmFjaygoKT0+c2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbmNlbGxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCBtcykpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5mdW5jdGlvbiBnZXRDbGllbnRCdWlsZE1hbmlmZXN0KCkge1xuICAgIGlmIChzZWxmLl9fQlVJTERfTUFOSUZFU1QpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShzZWxmLl9fQlVJTERfTUFOSUZFU1QpO1xuICAgIH1cbiAgICBjb25zdCBvbkJ1aWxkTWFuaWZlc3QgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSk9PntcbiAgICAgICAgLy8gTWFuZGF0b3J5IGJlY2F1c2UgdGhpcyBpcyBub3QgY29uY3VycmVudCBzYWZlOlxuICAgICAgICBjb25zdCBjYiA9IHNlbGYuX19CVUlMRF9NQU5JRkVTVF9DQjtcbiAgICAgICAgc2VsZi5fX0JVSUxEX01BTklGRVNUX0NCID0gKCk9PntcbiAgICAgICAgICAgIHJlc29sdmUoc2VsZi5fX0JVSUxEX01BTklGRVNUKTtcbiAgICAgICAgICAgIGNiICYmIGNiKCk7XG4gICAgICAgIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc29sdmVQcm9taXNlV2l0aFRpbWVvdXQob25CdWlsZE1hbmlmZXN0LCBNU19NQVhfSURMRV9ERUxBWSwgbWFya0Fzc2V0RXJyb3IobmV3IEVycm9yKCdGYWlsZWQgdG8gbG9hZCBjbGllbnQgYnVpbGQgbWFuaWZlc3QnKSkpO1xufVxuZnVuY3Rpb24gZ2V0RmlsZXNGb3JSb3V0ZShhc3NldFByZWZpeCwgcm91dGUpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgY29uc3Qgc2NyaXB0VXJsID0gYXNzZXRQcmVmaXggKyAnL19uZXh0L3N0YXRpYy9jaHVua3MvcGFnZXMnICsgZW5jb2RlVVJJKCgwLCBfZ2V0QXNzZXRQYXRoRnJvbVJvdXRlKS5kZWZhdWx0KHJvdXRlLCAnLmpzJykpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgICAgIHNjcmlwdHM6IFtcbiAgICAgICAgICAgICAgICAoMCwgX3RydXN0ZWRUeXBlcykuX191bnNhZmVDcmVhdGVUcnVzdGVkU2NyaXB0VVJMKHNjcmlwdFVybClcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvLyBTdHlsZXMgYXJlIGhhbmRsZWQgYnkgYHN0eWxlLWxvYWRlcmAgaW4gZGV2ZWxvcG1lbnQ6XG4gICAgICAgICAgICBjc3M6IFtdXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0Q2xpZW50QnVpbGRNYW5pZmVzdCgpLnRoZW4oKG1hbmlmZXN0KT0+e1xuICAgICAgICBpZiAoIShyb3V0ZSBpbiBtYW5pZmVzdCkpIHtcbiAgICAgICAgICAgIHRocm93IG1hcmtBc3NldEVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIGxvb2t1cCByb3V0ZTogJHtyb3V0ZX1gKSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWxsRmlsZXMgPSBtYW5pZmVzdFtyb3V0ZV0ubWFwKChlbnRyeSk9PmFzc2V0UHJlZml4ICsgJy9fbmV4dC8nICsgZW5jb2RlVVJJKGVudHJ5KSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzY3JpcHRzOiBhbGxGaWxlcy5maWx0ZXIoKHYpPT52LmVuZHNXaXRoKCcuanMnKSkubWFwKCh2KT0+KDAsIF90cnVzdGVkVHlwZXMpLl9fdW5zYWZlQ3JlYXRlVHJ1c3RlZFNjcmlwdFVSTCh2KSksXG4gICAgICAgICAgICBjc3M6IGFsbEZpbGVzLmZpbHRlcigodik9PnYuZW5kc1dpdGgoJy5jc3MnKSlcbiAgICAgICAgfTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVJvdXRlTG9hZGVyKGFzc2V0UHJlZml4KSB7XG4gICAgY29uc3QgZW50cnlwb2ludHMgPSBuZXcgTWFwKCk7XG4gICAgY29uc3QgbG9hZGVkU2NyaXB0cyA9IG5ldyBNYXAoKTtcbiAgICBjb25zdCBzdHlsZVNoZWV0cyA9IG5ldyBNYXAoKTtcbiAgICBjb25zdCByb3V0ZXMgPSBuZXcgTWFwKCk7XG4gICAgZnVuY3Rpb24gbWF5YmVFeGVjdXRlU2NyaXB0KHNyYykge1xuICAgICAgICAvLyBXaXRoIEhNUiB3ZSBtaWdodCBuZWVkIHRvIFwicmVsb2FkXCIgc2NyaXB0cyB3aGVuIHRoZXkgYXJlXG4gICAgICAgIC8vIGRpc3Bvc2VkIGFuZCByZWFkZGVkLiBFeGVjdXRpbmcgc2NyaXB0cyB0d2ljZSBoYXMgbm8gZnVuY3Rpb25hbFxuICAgICAgICAvLyBkaWZmZXJlbmNlc1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgICAgIGxldCBwcm9tID0gbG9hZGVkU2NyaXB0cy5nZXQoc3JjLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgaWYgKHByb20pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFNraXAgZXhlY3V0aW5nIHNjcmlwdCBpZiBpdCdzIGFscmVhZHkgaW4gdGhlIERPTTpcbiAgICAgICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBzY3JpcHRbc3JjXj1cIiR7c3JjfVwiXWApKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbG9hZGVkU2NyaXB0cy5zZXQoc3JjLnRvU3RyaW5nKCksIHByb20gPSBhcHBlbmRTY3JpcHQoc3JjKSk7XG4gICAgICAgICAgICByZXR1cm4gcHJvbTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhcHBlbmRTY3JpcHQoc3JjKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBmZXRjaFN0eWxlU2hlZXQoaHJlZikge1xuICAgICAgICBsZXQgcHJvbSA9IHN0eWxlU2hlZXRzLmdldChocmVmKTtcbiAgICAgICAgaWYgKHByb20pIHtcbiAgICAgICAgICAgIHJldHVybiBwcm9tO1xuICAgICAgICB9XG4gICAgICAgIHN0eWxlU2hlZXRzLnNldChocmVmLCBwcm9tID0gZmV0Y2goaHJlZikudGhlbigocmVzKT0+e1xuICAgICAgICAgICAgaWYgKCFyZXMub2spIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBsb2FkIHN0eWxlc2hlZXQ6ICR7aHJlZn1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXMudGV4dCgpLnRoZW4oKHRleHQpPT4oe1xuICAgICAgICAgICAgICAgICAgICBocmVmOiBocmVmLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiB0ZXh0XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICB9KS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICAgICAgdGhyb3cgbWFya0Fzc2V0RXJyb3IoZXJyKTtcbiAgICAgICAgfSkpO1xuICAgICAgICByZXR1cm4gcHJvbTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgd2hlbkVudHJ5cG9pbnQgKHJvdXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gd2l0aEZ1dHVyZShyb3V0ZSwgZW50cnlwb2ludHMpO1xuICAgICAgICB9LFxuICAgICAgICBvbkVudHJ5cG9pbnQgKHJvdXRlLCBleGVjdXRlKSB7XG4gICAgICAgICAgICAoZXhlY3V0ZSA/IFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmV4ZWN1dGUoKSkudGhlbigoZXhwb3J0cyk9Pih7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogZXhwb3J0cyAmJiBleHBvcnRzLmRlZmF1bHQgfHwgZXhwb3J0cyxcbiAgICAgICAgICAgICAgICAgICAgZXhwb3J0czogZXhwb3J0c1xuICAgICAgICAgICAgICAgIH0pLCAoZXJyKT0+KHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVyclxuICAgICAgICAgICAgICAgIH0pKSA6IFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpKS50aGVuKChpbnB1dCk9PntcbiAgICAgICAgICAgICAgICBjb25zdCBvbGQgPSBlbnRyeXBvaW50cy5nZXQocm91dGUpO1xuICAgICAgICAgICAgICAgIGlmIChvbGQgJiYgJ3Jlc29sdmUnIGluIG9sZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5cG9pbnRzLnNldChyb3V0ZSwgaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb2xkLnJlc29sdmUoaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRyeXBvaW50cy5zZXQocm91dGUsIGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5cG9pbnRzLmRlbGV0ZShyb3V0ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiB0aGlzIGVudHJ5cG9pbnQgaGFzIGJlZW4gcmVzb2x2ZWQgYmVmb3JlXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSByb3V0ZSBpcyBvdXRkYXRlZCBhbmQgd2Ugd2FudCB0byBpbnZhbGlkYXRlXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgY2FjaGUgZW50cnlcbiAgICAgICAgICAgICAgICAgICAgcm91dGVzLmRlbGV0ZShyb3V0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGxvYWRSb3V0ZSAocm91dGUsIHByZWZldGNoKSB7XG4gICAgICAgICAgICByZXR1cm4gd2l0aEZ1dHVyZShyb3V0ZSwgcm91dGVzLCAoKT0+e1xuICAgICAgICAgICAgICAgIGxldCBkZXZCdWlsZFByb21pc2VSZXNvbHZlO1xuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgICAgICAgICBkZXZCdWlsZFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldkJ1aWxkUHJvbWlzZVJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVQcm9taXNlV2l0aFRpbWVvdXQoZ2V0RmlsZXNGb3JSb3V0ZShhc3NldFByZWZpeCwgcm91dGUpLnRoZW4oKHsgc2NyaXB0cyAsIGNzcyAgfSk9PntcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5cG9pbnRzLmhhcyhyb3V0ZSkgPyBbXSA6IFByb21pc2UuYWxsKHNjcmlwdHMubWFwKG1heWJlRXhlY3V0ZVNjcmlwdCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgUHJvbWlzZS5hbGwoY3NzLm1hcChmZXRjaFN0eWxlU2hlZXQpKSwgXG4gICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIH0pLnRoZW4oKHJlcyk9PntcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMud2hlbkVudHJ5cG9pbnQocm91dGUpLnRoZW4oKGVudHJ5cG9pbnQpPT4oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzOiByZXNbMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9KSwgTVNfTUFYX0lETEVfREVMQVksIG1hcmtBc3NldEVycm9yKG5ldyBFcnJvcihgUm91dGUgZGlkIG5vdCBjb21wbGV0ZSBsb2FkaW5nOiAke3JvdXRlfWApKSkudGhlbigoeyBlbnRyeXBvaW50ICwgc3R5bGVzICB9KT0+e1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlczogc3R5bGVzXG4gICAgICAgICAgICAgICAgICAgIH0sIGVudHJ5cG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2Vycm9yJyBpbiBlbnRyeXBvaW50ID8gZW50cnlwb2ludCA6IHJlcztcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJlZmV0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gY2FjaGUgZXJyb3JzIGR1cmluZyBwcmVmZXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSkuZmluYWxseSgoKT0+e1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGV2QnVpbGRQcm9taXNlUmVzb2x2ZSA9PSBudWxsID8gdm9pZCAwIDogZGV2QnVpbGRQcm9taXNlUmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHByZWZldGNoIChyb3V0ZSkge1xuICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0dvb2dsZUNocm9tZUxhYnMvcXVpY2tsaW5rL2Jsb2IvNDUzYTY2MWZhMWZhOTQwZTJkMmUwNDQ0NTIzOThlMzhjNjdhOThmYi9zcmMvaW5kZXgubWpzI0wxMTUtTDExOFxuICAgICAgICAgICAgLy8gTGljZW5zZTogQXBhY2hlIDIuMFxuICAgICAgICAgICAgbGV0IGNuO1xuICAgICAgICAgICAgaWYgKGNuID0gbmF2aWdhdG9yLmNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAvLyBEb24ndCBwcmVmZXRjaCBpZiB1c2luZyAyRyBvciBpZiBTYXZlLURhdGEgaXMgZW5hYmxlZC5cbiAgICAgICAgICAgICAgICBpZiAoY24uc2F2ZURhdGEgfHwgLzJnLy50ZXN0KGNuLmVmZmVjdGl2ZVR5cGUpKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZ2V0RmlsZXNGb3JSb3V0ZShhc3NldFByZWZpeCwgcm91dGUpLnRoZW4oKG91dHB1dCk9PlByb21pc2UuYWxsKGNhblByZWZldGNoID8gb3V0cHV0LnNjcmlwdHMubWFwKChzY3JpcHQpPT5wcmVmZXRjaFZpYURvbShzY3JpcHQudG9TdHJpbmcoKSwgJ3NjcmlwdCcpKSA6IFtdKSkudGhlbigoKT0+e1xuICAgICAgICAgICAgICAgICgwLCBfcmVxdWVzdElkbGVDYWxsYmFjaykucmVxdWVzdElkbGVDYWxsYmFjaygoKT0+dGhpcy5sb2FkUm91dGUocm91dGUsIHRydWUpLmNhdGNoKCgpPT57fSkpO1xuICAgICAgICAgICAgfSkuY2F0Y2goLy8gc3dhbGxvdyBwcmVmZXRjaCBlcnJvcnNcbiAgICAgICAgICAgICgpPT57fSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yb3V0ZS1sb2FkZXIuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwibWFya0Fzc2V0RXJyb3IiLCJpc0Fzc2V0RXJyb3IiLCJnZXRDbGllbnRCdWlsZE1hbmlmZXN0IiwiY3JlYXRlUm91dGVMb2FkZXIiLCJfZ2V0QXNzZXRQYXRoRnJvbVJvdXRlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfdHJ1c3RlZFR5cGVzIiwiX3JlcXVlc3RJZGxlQ2FsbGJhY2siLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIk1TX01BWF9JRExFX0RFTEFZIiwid2l0aEZ1dHVyZSIsImtleSIsIm1hcCIsImdlbmVyYXRvciIsImVudHJ5IiwiZ2V0IiwiZnV0dXJlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZXNvbHZlciIsInByb20iLCJzZXQiLCJ0aGVuIiwiY2F0Y2giLCJlcnIiLCJkZWxldGUiLCJoYXNQcmVmZXRjaCIsImxpbmsiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ3aW5kb3ciLCJNU0lucHV0TWV0aG9kQ29udGV4dCIsImRvY3VtZW50TW9kZSIsInJlbExpc3QiLCJzdXBwb3J0cyIsImUiLCJjYW5QcmVmZXRjaCIsInByZWZldGNoVmlhRG9tIiwiaHJlZiIsImFzIiwicmVzIiwicmVqIiwic2VsZWN0b3IiLCJxdWVyeVNlbGVjdG9yIiwicmVsIiwiY3Jvc3NPcmlnaW4iLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX0NST1NTX09SSUdJTiIsIm9ubG9hZCIsIm9uZXJyb3IiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJBU1NFVF9MT0FEX0VSUk9SIiwiU3ltYm9sIiwiYXBwZW5kU2NyaXB0Iiwic3JjIiwic2NyaXB0IiwicmVqZWN0IiwiRXJyb3IiLCJib2R5IiwiZGV2QnVpbGRQcm9taXNlIiwicmVzb2x2ZVByb21pc2VXaXRoVGltZW91dCIsInAiLCJtcyIsImNhbmNlbGxlZCIsInIiLCJyZXF1ZXN0SWRsZUNhbGxiYWNrIiwic2V0VGltZW91dCIsInNlbGYiLCJfX0JVSUxEX01BTklGRVNUIiwib25CdWlsZE1hbmlmZXN0IiwiY2IiLCJfX0JVSUxEX01BTklGRVNUX0NCIiwiZ2V0RmlsZXNGb3JSb3V0ZSIsImFzc2V0UHJlZml4Iiwicm91dGUiLCJzY3JpcHRVcmwiLCJlbmNvZGVVUkkiLCJzY3JpcHRzIiwiX191bnNhZmVDcmVhdGVUcnVzdGVkU2NyaXB0VVJMIiwiY3NzIiwibWFuaWZlc3QiLCJhbGxGaWxlcyIsImZpbHRlciIsInYiLCJlbmRzV2l0aCIsImVudHJ5cG9pbnRzIiwiTWFwIiwibG9hZGVkU2NyaXB0cyIsInN0eWxlU2hlZXRzIiwicm91dGVzIiwibWF5YmVFeGVjdXRlU2NyaXB0IiwidG9TdHJpbmciLCJmZXRjaFN0eWxlU2hlZXQiLCJmZXRjaCIsIm9rIiwidGV4dCIsImNvbnRlbnQiLCJ3aGVuRW50cnlwb2ludCIsIm9uRW50cnlwb2ludCIsImV4ZWN1dGUiLCJjb21wb25lbnQiLCJlcnJvciIsInVuZGVmaW5lZCIsImlucHV0Iiwib2xkIiwibG9hZFJvdXRlIiwicHJlZmV0Y2giLCJkZXZCdWlsZFByb21pc2VSZXNvbHZlIiwiYWxsIiwiaGFzIiwiZW50cnlwb2ludCIsInN0eWxlcyIsImFzc2lnbiIsImZpbmFsbHkiLCJjbiIsIm5hdmlnYXRvciIsImNvbm5lY3Rpb24iLCJzYXZlRGF0YSIsInRlc3QiLCJlZmZlY3RpdmVUeXBlIiwib3V0cHV0IiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../node_modules/next/dist/client/route-loader.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 _extends() {\n _extends = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n _getRequireWildcardCache = function() {\n return cache;\n };\n return cache;\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache();\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\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 } else {\n loadScript(props);\n }\n}\nfunction loadLazyScript(props) {\n if (document.readyState === \"complete\") {\n (0, _requestIdleCallback).requestIdleCallback(()=>loadScript(props));\n } else {\n window.addEventListener(\"load\", ()=>{\n (0, _requestIdleCallback).requestIdleCallback(()=>loadScript(props));\n });\n }\n}\nfunction addBeforeInteractiveToCache() {\n const scripts = [\n ...document.querySelectorAll('[data-nscript=\"beforeInteractive\"]'),\n ...document.querySelectorAll('[data-nscript=\"beforePageRender\"]'), \n ];\n scripts.forEach((script)=>{\n const cacheKey = script.id || script.getAttribute(\"src\");\n LoadCache.add(cacheKey);\n });\n}\nfunction initScriptLoader(scriptLoaderItems) {\n scriptLoaderItems.forEach(handleClientScriptLoad);\n addBeforeInteractiveToCache();\n}\nfunction Script(props) {\n const { src =\"\" , onLoad =()=>{} , strategy =\"afterInteractive\" , onError } = props, restProps = _objectWithoutPropertiesLoose(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 _extends({\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) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=script.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvc2NyaXB0LmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csS0FBSyxFQUFFLElBQUk7Q0FDZCxFQUFDLENBQUM7QUFDSEQsOEJBQThCLEdBQUdFLHNCQUFzQixDQUFDO0FBQ3hERix3QkFBd0IsR0FBR0csZ0JBQWdCLENBQUM7QUFDNUNILGtCQUFlLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDekIsSUFBSUssTUFBTSxHQUFHQyx1QkFBdUIsQ0FBQ0MsbUJBQU8sQ0FBQyxvQkFBTyxDQUFDLENBQUM7QUFDdEQsSUFBSUMsbUJBQW1CLEdBQUdELG1CQUFPLENBQUMsOEVBQW9DLENBQUM7QUFDdkUsSUFBSUUsWUFBWSxHQUFHRixtQkFBTyxDQUFDLHdFQUFnQixDQUFDO0FBQzVDLElBQUlHLG9CQUFvQixHQUFHSCxtQkFBTyxDQUFDLDBGQUF5QixDQUFDO0FBQzdELFNBQVNJLFFBQVEsR0FBRztJQUNoQkEsUUFBUSxHQUFHYixNQUFNLENBQUNjLE1BQU0sSUFBSSxTQUFTQyxNQUFNLEVBQUU7UUFDekMsSUFBSSxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdDLFNBQVMsQ0FBQ0MsTUFBTSxFQUFFRixDQUFDLEVBQUUsQ0FBQztZQUNyQyxJQUFJRyxNQUFNLEdBQUdGLFNBQVMsQ0FBQ0QsQ0FBQyxDQUFDO1lBQ3pCLElBQUksSUFBSUksR0FBRyxJQUFJRCxNQUFNLENBQUM7Z0JBQ2xCLElBQUluQixNQUFNLENBQUNxQixTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSixNQUFNLEVBQUVDLEdBQUcsQ0FBQyxFQUFFO29CQUNuREwsTUFBTSxDQUFDSyxHQUFHLENBQUMsR0FBR0QsTUFBTSxDQUFDQyxHQUFHLENBQUMsQ0FBQztpQkFDN0I7YUFDSjtTQUNKO1FBQ0QsT0FBT0wsTUFBTSxDQUFDO0tBQ2pCLENBQUM7SUFDRixPQUFPRixRQUFRLENBQUNXLEtB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RCxRQUFRLEdBQUdSLE1BQU07QUFDckI5RixrQkFBZSxHQUFHc0csUUFBUSxDQUFDO0FBRTNCLElBQUksQ0FBQyxPQUFPdEcsT0FBTyxDQUFDSSxPQUFPLEtBQUssVUFBVSxJQUFLLE9BQU9KLE9BQU8sQ0FBQ0ksT0FBTyxLQUFLLFFBQVEsSUFBSUosT0FBTyxDQUFDSSxPQUFPLEtBQUssSUFBSSxDQUFFLElBQUksT0FBT0osT0FBTyxDQUFDSSxPQUFPLENBQUN1QixVQUFVLEtBQUssV0FBVyxFQUFFO0lBQ3JLN0IsTUFBTSxDQUFDQyxjQUFjLENBQUNDLE9BQU8sQ0FBQ0ksT0FBTyxFQUFFLFlBQVksRUFBRTtRQUFFSCxLQUFLLEVBQUUsSUFBSTtLQUFFLENBQUMsQ0FBQztJQUN0RUgsTUFBTSxDQUFDYyxNQUFNLENBQUNaLE9BQU8sQ0FBQ0ksT0FBTyxFQUFFSixPQUFPLENBQUMsQ0FBQztJQUN4Q3VHLE1BQU0sQ0FBQ3ZHLE9BQU8sR0FBR0EsT0FBTyxDQUFDSSxPQUFPLENBQUM7Q0FDbEMsQ0FFRCxrQ0FBa0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvc2NyaXB0LmpzPzUwMTEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmhhbmRsZUNsaWVudFNjcmlwdExvYWQgPSBoYW5kbGVDbGllbnRTY3JpcHRMb2FkO1xuZXhwb3J0cy5pbml0U2NyaXB0TG9hZGVyID0gaW5pdFNjcmlwdExvYWRlcjtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcbnZhciBfcmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xudmFyIF9oZWFkTWFuYWdlckNvbnRleHQgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9oZWFkLW1hbmFnZXItY29udGV4dFwiKTtcbnZhciBfaGVhZE1hbmFnZXIgPSByZXF1aXJlKFwiLi9oZWFkLW1hbmFnZXJcIik7XG52YXIgX3JlcXVlc3RJZGxlQ2FsbGJhY2sgPSByZXF1aXJlKFwiLi9yZXF1ZXN0LWlkbGUtY2FsbGJhY2tcIik7XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHtcbiAgICBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odGFyZ2V0KSB7XG4gICAgICAgIGZvcih2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspe1xuICAgICAgICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvcih2YXIga2V5IGluIHNvdXJjZSl7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9O1xuICAgIHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkge1xuICAgIGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDtcbiAgICB2YXIgY2FjaGUgPSBuZXcgV2Vha01hcCgpO1xuICAgIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY2FjaGU7XG4gICAgfTtcbiAgICByZXR1cm4gY2FjaGU7XG59XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHtcbiAgICBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRlZmF1bHQ6IG9ialxuICAgICAgICB9O1xuICAgIH1cbiAgICB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKTtcbiAgICBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlLmdldChvYmopO1xuICAgIH1cbiAgICB2YXIgbmV3T2JqID0ge307XG4gICAgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuICAgIGZvcih2YXIga2V5IGluIG9iail7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgICAgICB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDtcbiAgICAgICAgICAgIGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdPYmpba2V5XSA9IG9ialtrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIG5ld09iai5kZWZhdWx0ID0gb2JqO1xuICAgIGlmIChjYWNoZSkge1xuICAgICAgICBjYWNoZS5zZXQob2JqLCBuZXdPYmopO1xuICAgIH1cbiAgICByZXR1cm4gbmV3T2JqO1xufVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkge1xuICAgIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9O1xuICAgIHZhciB0YXJnZXQgPSB7fTtcbiAgICB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XG4gICAgdmFyIGtleSwgaTtcbiAgICBmb3IoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAga2V5ID0gc291cmNlS2V5c1tpXTtcbiAgICAgICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcbiAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbn1cbmNvbnN0IFNjcmlwdENhY2hlID0gbmV3IE1hcCgpO1xuY29uc3QgTG9hZENhY2hlID0gbmV3IFNldCgpO1xuY29uc3QgaWdub3JlUHJvcHMgPSBbXG4gICAgJ29uTG9hZCcsXG4gICAgJ2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MJyxcbiAgICAnY2hpbGRyZW4nLFxuICAgICdvbkVycm9yJyxcbiAgICAnc3RyYXRlZ3knLCBcbl07XG5jb25zdCBsb2FkU2NyaXB0ID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgc3JjICwgaWQgLCBvbkxvYWQgPSgpPT57fSAsIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MICwgY2hpbGRyZW4gPScnICwgc3RyYXRlZ3kgPSdhZnRlckludGVyYWN0aXZlJyAsIG9uRXJyb3IgLCAgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gaWQgfHwgc3JjO1xuICAgIC8vIFNjcmlwdCBoYXMgYWxyZWFkeSBsb2FkZWRcbiAgICBpZiAoY2FjaGVLZXkgJiYgTG9hZENhY2hlLmhhcyhjYWNoZUtleSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBDb250ZW50cyBvZiB0aGlzIHNjcmlwdCBhcmUgYWxyZWFkeSBsb2FkaW5nL2xvYWRlZFxuICAgIGlmIChTY3JpcHRDYWNoZS5oYXMoc3JjKSkge1xuICAgICAgICBMb2FkQ2FjaGUuYWRkKGNhY2hlS2V5KTtcbiAgICAgICAgLy8gRXhlY3V0ZSBvbkxvYWQgc2luY2UgdGhlIHNjcmlwdCBsb2FkaW5nIGhhcyBiZWd1blxuICAgICAgICBTY3JpcHRDYWNoZS5nZXQoc3JjKS50aGVuKG9uTG9hZCwgb25FcnJvcik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICBjb25zdCBsb2FkUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57XG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICBpZiAob25Mb2FkKSB7XG4gICAgICAgICAgICAgICAgb25Mb2FkLmNhbGwodGhpcywgZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgfSk7XG4gICAgfSkuY2F0Y2goZnVuY3Rpb24oZSkge1xuICAgICAgICBpZiAob25FcnJvcikge1xuICAgICAgICAgICAgb25FcnJvcihlKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChzcmMpIHtcbiAgICAgICAgU2NyaXB0Q2FjaGUuc2V0KHNyYywgbG9hZFByb21pc2UpO1xuICAgIH1cbiAgICBMb2FkQ2FjaGUuYWRkKGNhY2hlS2V5KTtcbiAgICBpZiAoZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpIHtcbiAgICAgICAgZWwuaW5uZXJIVE1MID0gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sIHx8ICcnO1xuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcbiAgICAgICAgZWwudGV4dENvbnRlbnQgPSB0eXBlb2YgY2hpbGRyZW4gPT09ICdzdHJpbmcnID8gY2hpbGRyZW4gOiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSA/IGNoaWxkcmVuLmpvaW4oJycpIDogJyc7XG4gICAgfSBlbHNlIGlmIChzcmMpIHtcbiAgICAgICAgZWwuc3JjID0gc3JjO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IFtrLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocHJvcHMpKXtcbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgaWdub3JlUHJvcHMuaW5jbHVkZXMoaykpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGF0dHIgPSBfaGVhZE1hbmFnZXIuRE9NQXR0cmlidXRlTmFtZXNba10gfHwgay50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoYXR0ciwgdmFsdWUpO1xuICAgIH1cbiAgICBpZiAoc3RyYXRlZ3kgPT09ICd3b3JrZXInKSB7XG4gICAgICAgIGVsLnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0L3BhcnR5dG93bicpO1xuICAgIH1cbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ2RhdGEtbnNjcmlwdCcsIHN0cmF0ZWd5KTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsKTtcbn07XG5mdW5jdGlvbiBoYW5kbGVDbGllbnRTY3JpcHRMb2FkKHByb3BzKSB7XG4gICAgY29uc3QgeyBzdHJhdGVneSA9J2FmdGVySW50ZXJhY3RpdmUnICB9ID0gcHJvcHM7XG4gICAgaWYgKHN0cmF0ZWd5ID09PSAnbGF6eU9ubG9hZCcpIHtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKT0+e1xuICAgICAgICAgICAgKDAsIF9yZXF1ZXN0SWRsZUNhbGxiYWNrKS5yZXF1ZXN0SWRsZUNhbGxiYWNrKCgpPT5sb2FkU2NyaXB0KHByb3BzKSk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxvYWRTY3JpcHQocHJvcHMpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGxvYWRMYXp5U2NyaXB0KHByb3BzKSB7XG4gICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdjb21wbGV0ZScpIHtcbiAgICAgICAgKDAsIF9yZXF1ZXN0SWRsZUNhbGxiYWNrKS5yZXF1ZXN0SWRsZUNhbGxiYWNrKCgpPT5sb2FkU2NyaXB0KHByb3BzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKT0+e1xuICAgICAgICAgICAgKDAsIF9yZXF1ZXN0SWRsZUNhbGxiYWNrKS5yZXF1ZXN0SWRsZUNhbGxiYWNrKCgpPT5sb2FkU2NyaXB0KHByb3BzKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGFkZEJlZm9yZUludGVyYWN0aXZlVG9DYWNoZSgpIHtcbiAgICBjb25zdCBzY3JpcHRzID0gW1xuICAgICAgICAuLi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1uc2NyaXB0PVwiYmVmb3JlSW50ZXJhY3RpdmVcIl0nKSxcbiAgICAgICAgLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtbnNjcmlwdD1cImJlZm9yZVBhZ2VSZW5kZXJcIl0nKSwgXG4gICAgXTtcbiAgICBzY3JpcHRzLmZvckVhY2goKHNjcmlwdCk9PntcbiAgICAgICAgY29uc3QgY2FjaGVLZXkgPSBzY3JpcHQuaWQgfHwgc2NyaXB0LmdldEF0dHJpYnV0ZSgnc3JjJyk7XG4gICAgICAgIExvYWRDYWNoZS5hZGQoY2FjaGVLZXkpO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gaW5pdFNjcmlwdExvYWRlcihzY3JpcHRMb2FkZXJJdGVtcykge1xuICAgIHNjcmlwdExvYWRlckl0ZW1zLmZvckVhY2goaGFuZGxlQ2xpZW50U2NyaXB0TG9hZCk7XG4gICAgYWRkQmVmb3JlSW50ZXJhY3RpdmVUb0NhY2hlKCk7XG59XG5mdW5jdGlvbiBTY3JpcHQocHJvcHMpIHtcbiAgICBjb25zdCB7IHNyYyA9JycgLCBvbkxvYWQgPSgpPT57fSAsIHN0cmF0ZWd5ID0nYWZ0ZXJJbnRlcmFjdGl2ZScgLCBvbkVycm9yICB9ID0gcHJvcHMsIHJlc3RQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBbXG4gICAgICAgIFwic3JjXCIsXG4gICAgICAgIFwib25Mb2FkXCIsXG4gICAgICAgIFwic3RyYXRlZ3lcIixcbiAgICAgICAgXCJvbkVycm9yXCJcbiAgICBdKTtcbiAgICAvLyBDb250ZXh0IGlzIGF2YWlsYWJsZSBvbmx5IGR1cmluZyBTU1JcbiAgICBjb25zdCB7IHVwZGF0ZVNjcmlwdHMgLCBzY3JpcHRzICwgZ2V0SXNTc3IgIH0gPSAoMCwgX3JlYWN0KS51c2VDb250ZXh0KF9oZWFkTWFuYWdlckNvbnRleHQuSGVhZE1hbmFnZXJDb250ZXh0KTtcbiAgICAoMCwgX3JlYWN0KS51c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKHN0cmF0ZWd5ID09PSAnYWZ0ZXJJbnRlcmFjdGl2ZScpIHtcbiAgICAgICAgICAgIGxvYWRTY3JpcHQocHJvcHMpO1xuICAgICAgICB9IGVsc2UgaWYgKHN0cmF0ZWd5ID09PSAnbGF6eU9ubG9hZCcpIHtcbiAgICAgICAgICAgIGxvYWRMYXp5U2NyaXB0KHByb3BzKTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgcHJvcHMsXG4gICAgICAgIHN0cmF0ZWd5XG4gICAgXSk7XG4gICAgaWYgKHN0cmF0ZWd5ID09PSAnYmVmb3JlSW50ZXJhY3RpdmUnIHx8IHN0cmF0ZWd5ID09PSAnd29ya2VyJykge1xuICAgICAgICBpZiAodXBkYXRlU2NyaXB0cykge1xuICAgICAgICAgICAgc2NyaXB0c1tzdHJhdGVneV0gPSAoc2NyaXB0c1tzdHJhdGVneV0gfHwgW10pLmNvbmNhdChbXG4gICAgICAgICAgICAgICAgX2V4dGVuZHMoe1xuICAgICAgICAgICAgICAgICAgICBzcmMsXG4gICAgICAgICAgICAgICAgICAgIG9uTG9hZCxcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvclxuICAgICAgICAgICAgICAgIH0sIHJlc3RQcm9wcyksIFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICB1cGRhdGVTY3JpcHRzKHNjcmlwdHMpO1xuICAgICAgICB9IGVsc2UgaWYgKGdldElzU3NyICYmIGdldElzU3NyKCkpIHtcbiAgICAgICAgICAgIC8vIFNjcmlwdCBoYXMgYWxyZWFkeSBsb2FkZWQgZHVyaW5nIFNTUlxuICAgICAgICAgICAgTG9hZENhY2hlLmFkZChyZXN0UHJvcHMuaWQgfHwgc3JjKTtcbiAgICAgICAgfSBlbHNlIGlmIChnZXRJc1NzciAmJiAhZ2V0SXNTc3IoKSkge1xuICAgICAgICAgICAgbG9hZFNjcmlwdChwcm9wcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG52YXIgX2RlZmF1bHQgPSBTY3JpcHQ7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDtcblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2NyaXB0LmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImhhbmRsZUNsaWVudFNjcmlwdExvYWQiLCJpbml0U2NyaXB0TG9hZGVyIiwiZGVmYXVsdCIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9oZWFkTWFuYWdlckNvbnRleHQiLCJfaGVhZE1hbmFnZXIiLCJfcmVxdWVzdElkbGVDYWxsYmFjayIsIl9leHRlbmRzIiwiYXNzaWduIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiV2Vha01hcCIsImNhY2hlIiwib2JqIiwiX19lc01vZHVsZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImRlc2MiLCJzZXQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImV4Y2x1ZGVkIiwic291cmNlS2V5cyIsImtleXMiLCJpbmRleE9mIiwiU2NyaXB0Q2FjaGUiLCJNYXAiLCJMb2FkQ2FjaGUiLCJTZXQiLCJpZ25vcmVQcm9wcyIsImxvYWRTY3JpcHQiLCJwcm9wcyIsInNyYyIsImlkIiwib25Mb2FkIiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJjaGlsZHJlbiIsInN0cmF0ZWd5Iiwib25FcnJvciIsImNhY2hlS2V5IiwiYWRkIiwidGhlbiIsImVsIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwibG9hZFByb21pc2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImFkZEV2ZW50TGlzdGVuZXIiLCJlIiwiY2F0Y2giLCJpbm5lckhUTUwiLCJfX2h0bWwiLCJ0ZXh0Q29udGVudCIsIkFycmF5IiwiaXNBcnJheSIsImpvaW4iLCJrIiwiZW50cmllcyIsInVuZGVmaW5lZCIsImluY2x1ZGVzIiwiYXR0ciIsIkRPTUF0dHJpYnV0ZU5hbWVzIiwidG9Mb3dlckNhc2UiLCJzZXRBdHRyaWJ1dGUiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJ3aW5kb3ciLCJyZXF1ZXN0SWRsZUNhbGxiYWNrIiwibG9hZExhenlTY3JpcHQiLCJyZWFkeVN0YXRlIiwiYWRkQmVmb3JlSW50ZXJhY3RpdmVUb0NhY2hlIiwic2NyaXB0cyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmb3JFYWNoIiwic2NyaXB0IiwiZ2V0QXR0cmlidXRlIiwic2NyaXB0TG9hZGVySXRlbXMiLCJTY3JpcHQiLCJyZXN0UHJvcHMiLCJ1cGRhdGVTY3JpcHRzIiwiZ2V0SXNTc3IiLCJ1c2VDb250ZXh0IiwiSGVhZE1hbmFnZXJDb250ZXh0IiwidXNlRWZmZWN0IiwiY29uY2F0IiwiX2RlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../node_modules/next/dist/client/script.js\n");
-
-/***/ }),
-
-/***/ "../node_modules/next/dist/client/trusted-types.js":
-/*!*********************************************************!*\
- !*** ../node_modules/next/dist/client/trusted-types.js ***!
- \*********************************************************/
-/***/ ((module, exports) => {
-
-"use strict";
-eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.__unsafeCreateTrustedScriptURL = __unsafeCreateTrustedScriptURL;\n/**\n * Stores the Trusted Types Policy. Starts as undefined and can be set to null\n * if Trusted Types is not supported in the browser.\n */ let policy;\n/**\n * Getter for the Trusted Types Policy. If it is undefined, it is instantiated\n * here or set to null if Trusted Types is not supported in the browser.\n */ function getPolicy() {\n if (typeof policy === \"undefined\" && \"undefined\" !== \"undefined\") { var ref; }\n return policy;\n}\nfunction __unsafeCreateTrustedScriptURL(url) {\n var ref;\n return ((ref = getPolicy()) == null ? void 0 : ref.createScriptURL(url)) || url;\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=trusted-types.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvdHJ1c3RlZC10eXBlcy5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLEtBQUssRUFBRSxJQUFJO0NBQ2QsRUFBQyxDQUFDO0FBQ0hELHNDQUFzQyxHQUFHRSw4QkFBOEIsQ0FBQztBQUN4RTs7O0dBR0csQ0FBQyxJQUFJQyxNQUFNO0FBQ2Q7OztHQUdHLENBQUMsU0FBU0MsU0FBUyxHQUFHO0lBQ3JCLElBQUksT0FBT0QsTUFBTSxLQUFLLFdBQVcsSUFBSSxXQUFhLEtBQUssV0FBVyxFQUFFLFlBT25FO0lBQ0QsT0FBT0EsTUFBTSxDQUFDO0NBQ2pCO0FBQ0QsU0FBU0QsOEJBQThCLENBQUNXLEdBQUcsRUFBRTtJQUN6QyxJQUFJUixHQUFHO0lBQ1AsT0FBTyxDQUFDLENBQUNBLEdBQUcsR0FBR0QsU0FBUyxFQUFFLENBQUMsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUdDLEdBQUcsQ0FBQ08sZUFBZSxDQUFDQyxHQUFHLENBQUMsQ0FBQyxJQUFJQSxHQUFHLENBQUM7Q0FDbkY7QUFFRCxJQUFJLENBQUMsT0FBT2IsT0FBTyxDQUFDYyxPQUFPLEtBQUssVUFBVSxJQUFLLE9BQU9kLE9BQU8sQ0FBQ2MsT0FBTyxLQUFLLFFBQVEsSUFBSWQsT0FBTyxDQUFDYyxPQUFPLEtBQUssSUFBSSxDQUFFLElBQUksT0FBT2QsT0FBTyxDQUFDYyxPQUFPLENBQUNDLFVBQVUsS0FBSyxXQUFXLEVBQUU7SUFDcktqQixNQUFNLENBQUNDLGNBQWMsQ0FBQ0MsT0FBTyxDQUFDYyxPQUFPLEVBQUUsWUFBWSxFQUFFO1FBQUViLEtBQUssRUFBRSxJQUFJO0tBQUUsQ0FBQyxDQUFDO0lBQ3RFSCxNQUFNLENBQUNrQixNQUFNLENBQUNoQixPQUFPLENBQUNjLE9BQU8sRUFBRWQsT0FBTyxDQUFDLENBQUM7SUFDeENpQixNQUFNLENBQUNqQixPQUFPLEdBQUdBLE9BQU8sQ0FBQ2MsT0FBTyxDQUFDO0NBQ2xDLENBRUQseUNBQXlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3RydXN0ZWQtdHlwZXMuanM/YzAwZiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuX191bnNhZmVDcmVhdGVUcnVzdGVkU2NyaXB0VVJMID0gX191bnNhZmVDcmVhdGVUcnVzdGVkU2NyaXB0VVJMO1xuLyoqXG4gKiBTdG9yZXMgdGhlIFRydXN0ZWQgVHlwZXMgUG9saWN5LiBTdGFydHMgYXMgdW5kZWZpbmVkIGFuZCBjYW4gYmUgc2V0IHRvIG51bGxcbiAqIGlmIFRydXN0ZWQgVHlwZXMgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGUgYnJvd3Nlci5cbiAqLyBsZXQgcG9saWN5O1xuLyoqXG4gKiBHZXR0ZXIgZm9yIHRoZSBUcnVzdGVkIFR5cGVzIFBvbGljeS4gSWYgaXQgaXMgdW5kZWZpbmVkLCBpdCBpcyBpbnN0YW50aWF0ZWRcbiAqIGhlcmUgb3Igc2V0IHRvIG51bGwgaWYgVHJ1c3RlZCBUeXBlcyBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBicm93c2VyLlxuICovIGZ1bmN0aW9uIGdldFBvbGljeSgpIHtcbiAgICBpZiAodHlwZW9mIHBvbGljeSA9PT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdmFyIHJlZjtcbiAgICAgICAgcG9saWN5ID0gKChyZWYgPSB3aW5kb3cudHJ1c3RlZFR5cGVzKSA9PSBudWxsID8gdm9pZCAwIDogcmVmLmNyZWF0ZVBvbGljeSgnbmV4dGpzJywge1xuICAgICAgICAgICAgY3JlYXRlSFRNTDogKGlucHV0KT0+aW5wdXQsXG4gICAgICAgICAgICBjcmVhdGVTY3JpcHQ6IChpbnB1dCk9PmlucHV0LFxuICAgICAgICAgICAgY3JlYXRlU2NyaXB0VVJMOiAoaW5wdXQpPT5pbnB1dFxuICAgICAgICB9KSkgfHwgbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHBvbGljeTtcbn1cbmZ1bmN0aW9uIF9fdW5zYWZlQ3JlYXRlVHJ1c3RlZFNjcmlwdFVSTCh1cmwpIHtcbiAgICB2YXIgcmVmO1xuICAgIHJldHVybiAoKHJlZiA9IGdldFBvbGljeSgpKSA9PSBudWxsID8gdm9pZCAwIDogcmVmLmNyZWF0ZVNjcmlwdFVSTCh1cmwpKSB8fCB1cmw7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRydXN0ZWQtdHlwZXMuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiX191bnNhZmVDcmVhdGVUcnVzdGVkU2NyaXB0VVJMIiwicG9saWN5IiwiZ2V0UG9saWN5IiwicmVmIiwid2luZG93IiwidHJ1c3RlZFR5cGVzIiwiY3JlYXRlUG9saWN5IiwiY3JlYXRlSFRNTCIsImlucHV0IiwiY3JlYXRlU2NyaXB0IiwiY3JlYXRlU2NyaXB0VVJMIiwidXJsIiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../node_modules/next/dist/client/trusted-types.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 === \"function\";\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 [element, setElement] = (0, _react).useState(null);\n (0, _react).useEffect(()=>{\n if (hasIntersectionObserver) {\n if (unobserve.current) {\n unobserve.current();\n unobserve.current = undefined;\n }\n if (isDisabled || visible) return;\n if (element && element.tagName) {\n unobserve.current = observe(element, (isVisible)=>isVisible && setVisible(isVisible), {\n root: rootRef == null ? void 0 : rootRef.current,\n rootMargin\n });\n }\n return ()=>{\n unobserve.current == null ? void 0 : unobserve.current();\n unobserve.current = undefined;\n };\n } else {\n if (!visible) {\n const idleCallback = (0, _requestIdleCallback).requestIdleCallback(()=>setVisible(true));\n return ()=>(0, _requestIdleCallback).cancelIdleCallback(idleCallback);\n }\n }\n }, [\n element,\n isDisabled,\n rootMargin,\n rootRef,\n visible\n ]);\n const resetVisible = (0, _react).useCallback(()=>{\n setVisible(false);\n }, []);\n return [\n setElement,\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 const index = idList.findIndex((obj)=>obj.root === id.root && obj.margin === id.margin);\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 const existing = idList.find((obj)=>obj.root === id.root && obj.margin === id.margin);\n let instance;\n if (existing) {\n instance = observers.get(existing);\n if (instance) {\n return instance;\n }\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 instance = {\n id,\n observer,\n elements\n };\n idList.push(id);\n observers.set(id, instance);\n return instance;\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=use-intersection.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvdXNlLWludGVyc2VjdGlvbi5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLEtBQUssRUFBRSxJQUFJO0NBQ2QsRUFBQyxDQUFDO0FBQ0hELHVCQUF1QixHQUFHRSxlQUFlLENBQUM7QUFDMUMsSUFBSUMsTUFBTSxHQUFHQyxtQkFBTyxDQUFDLG9CQUFPLENBQUM7QUFDN0IsSUFBSUMsb0JBQW9CLEdBQUdELG1CQUFPLENBQUMsMEZBQXlCLENBQUM7QUFDN0QsTUFBTUUsdUJBQXVCLEdBQUcsT0FBT0Msb0JBQW9CLEtBQUssVUFBVTtBQUMxRSxTQUFTTCxlQUFlLENBQUMsRUFBRU0sT0FBTyxHQUFHQyxVQUFVLEdBQUdDLFFBQVEsR0FBRyxFQUFFO0lBQzNELE1BQU1DLFVBQVUsR0FBR0QsUUFBUSxJQUFJLENBQUNKLHVCQUF1QjtJQUN2RCxNQUFNTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUVULE1BQU0sQ0FBQyxDQUFDVSxNQUFNLEVBQUU7SUFDdEMsTUFBTSxDQUFDQyxPQUFPLEVBQUVDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFWixNQUFNLENBQUMsQ0FBQ2EsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUN6RCxNQUFNLENBQUNDLE9BQU8sRUFBRUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUVmLE1BQU0sQ0FBQyxDQUFDYSxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ3hELENBQUMsQ0FBQyxFQUFFYixNQUFNLENBQUMsQ0FBQ2dCLFNBQVMsQ0FBQyxJQUFJO1FBQ3RCLElBQUliLHVCQUF1QixFQUFFO1lBQ3pCLElBQUlNLFNBQVMsQ0FBQ1EsT0FBTyxFQUFFO2dCQUNuQlIsU0FBUyxDQUFDUSxPQUFPLEVBQUUsQ0FBQztnQkFDcEJSLFNBQVMsQ0FBQ1EsT0FBTyxHQUFHQyxTQUFTLENBQUM7YUFDakM7WUFDRCxJQUFJVixVQUFVLElBQUlHLE9BQU8sRUFB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USxDQUFDLENBQUM7SUFDNUIsT0FBT0EsUUFBUSxDQUFDO0NBQ25CO0FBRUQsSUFBSSxDQUFDLE9BQU9uRCxPQUFPLENBQUM0RCxPQUFPLEtBQUssVUFBVSxJQUFLLE9BQU81RCxPQUFPLENBQUM0RCxPQUFPLEtBQUssUUFBUSxJQUFJNUQsT0FBTyxDQUFDNEQsT0FBTyxLQUFLLElBQUksQ0FBRSxJQUFJLE9BQU81RCxPQUFPLENBQUM0RCxPQUFPLENBQUNDLFVBQVUsS0FBSyxXQUFXLEVBQUU7SUFDcksvRCxNQUFNLENBQUNDLGNBQWMsQ0FBQ0MsT0FBTyxDQUFDNEQsT0FBTyxFQUFFLFlBQVksRUFBRTtRQUFFM0QsS0FBSyxFQUFFLElBQUk7S0FBRSxDQUFDLENBQUM7SUFDdEVILE1BQU0sQ0FBQ2dFLE1BQU0sQ0FBQzlELE9BQU8sQ0FBQzRELE9BQU8sRUFBRTVELE9BQU8sQ0FBQyxDQUFDO0lBQ3hDK0QsTUFBTSxDQUFDL0QsT0FBTyxHQUFHQSxPQUFPLENBQUM0RCxPQUFPLENBQUM7Q0FDbEMsQ0FFRCw0Q0FBNEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvdXNlLWludGVyc2VjdGlvbi5qcz83YjI1Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy51c2VJbnRlcnNlY3Rpb24gPSB1c2VJbnRlcnNlY3Rpb247XG52YXIgX3JlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIF9yZXF1ZXN0SWRsZUNhbGxiYWNrID0gcmVxdWlyZShcIi4vcmVxdWVzdC1pZGxlLWNhbGxiYWNrXCIpO1xuY29uc3QgaGFzSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSB0eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbic7XG5mdW5jdGlvbiB1c2VJbnRlcnNlY3Rpb24oeyByb290UmVmICwgcm9vdE1hcmdpbiAsIGRpc2FibGVkICB9KSB7XG4gICAgY29uc3QgaXNEaXNhYmxlZCA9IGRpc2FibGVkIHx8ICFoYXNJbnRlcnNlY3Rpb25PYnNlcnZlcjtcbiAgICBjb25zdCB1bm9ic2VydmUgPSAoMCwgX3JlYWN0KS51c2VSZWYoKTtcbiAgICBjb25zdCBbdmlzaWJsZSwgc2V0VmlzaWJsZV0gPSAoMCwgX3JlYWN0KS51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2VsZW1lbnQsIHNldEVsZW1lbnRdID0gKDAsIF9yZWFjdCkudXNlU3RhdGUobnVsbCk7XG4gICAgKDAsIF9yZWFjdCkudXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChoYXNJbnRlcnNlY3Rpb25PYnNlcnZlcikge1xuICAgICAgICAgICAgaWYgKHVub2JzZXJ2ZS5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgdW5vYnNlcnZlLmN1cnJlbnQoKTtcbiAgICAgICAgICAgICAgICB1bm9ic2VydmUuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0Rpc2FibGVkIHx8IHZpc2libGUpIHJldHVybjtcbiAgICAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQudGFnTmFtZSkge1xuICAgICAgICAgICAgICAgIHVub2JzZXJ2ZS5jdXJyZW50ID0gb2JzZXJ2ZShlbGVtZW50LCAoaXNWaXNpYmxlKT0+aXNWaXNpYmxlICYmIHNldFZpc2libGUoaXNWaXNpYmxlKSwge1xuICAgICAgICAgICAgICAgICAgICByb290OiByb290UmVmID09IG51bGwgPyB2b2lkIDAgOiByb290UmVmLmN1cnJlbnQsXG4gICAgICAgICAgICAgICAgICAgIHJvb3RNYXJnaW5cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgICAgIHVub2JzZXJ2ZS5jdXJyZW50ID09IG51bGwgPyB2b2lkIDAgOiB1bm9ic2VydmUuY3VycmVudCgpO1xuICAgICAgICAgICAgICAgIHVub2JzZXJ2ZS5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghdmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkbGVDYWxsYmFjayA9ICgwLCBfcmVxdWVzdElkbGVDYWxsYmFjaykucmVxdWVzdElkbGVDYWxsYmFjaygoKT0+c2V0VmlzaWJsZSh0cnVlKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgpPT4oMCwgX3JlcXVlc3RJZGxlQ2FsbGJhY2spLmNhbmNlbElkbGVDYWxsYmFjayhpZGxlQ2FsbGJhY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBlbGVtZW50LFxuICAgICAgICBpc0Rpc2FibGVkLFxuICAgICAgICByb290TWFyZ2luLFxuICAgICAgICByb290UmVmLFxuICAgICAgICB2aXNpYmxlXG4gICAgXSk7XG4gICAgY29uc3QgcmVzZXRWaXNpYmxlID0gKDAsIF9yZWFjdCkudXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgc2V0VmlzaWJsZShmYWxzZSk7XG4gICAgfSwgW10pO1xuICAgIHJldHVybiBbXG4gICAgICAgIHNldEVsZW1lbnQsXG4gICAgICAgIHZpc2libGUsXG4gICAgICAgIHJlc2V0VmlzaWJsZVxuICAgIF07XG59XG5mdW5jdGlvbiBvYnNlcnZlKGVsZW1lbnQsIGNhbGxiYWNrLCBvcHRpb25zKSB7XG4gICAgY29uc3QgeyBpZCAsIG9ic2VydmVyICwgZWxlbWVudHMgIH0gPSBjcmVhdGVPYnNlcnZlcihvcHRpb25zKTtcbiAgICBlbGVtZW50cy5zZXQoZWxlbWVudCwgY2FsbGJhY2spO1xuICAgIG9ic2VydmVyLm9ic2VydmUoZWxlbWVudCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHVub2JzZXJ2ZSgpIHtcbiAgICAgICAgZWxlbWVudHMuZGVsZXRlKGVsZW1lbnQpO1xuICAgICAgICBvYnNlcnZlci51bm9ic2VydmUoZWxlbWVudCk7XG4gICAgICAgIC8vIERlc3Ryb3kgb2JzZXJ2ZXIgd2hlbiB0aGVyZSdzIG5vdGhpbmcgbGVmdCB0byB3YXRjaDpcbiAgICAgICAgaWYgKGVsZW1lbnRzLnNpemUgPT09IDApIHtcbiAgICAgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgIG9ic2VydmVycy5kZWxldGUoaWQpO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBpZExpc3QuZmluZEluZGV4KChvYmopPT5vYmoucm9vdCA9PT0gaWQucm9vdCAmJiBvYmoubWFyZ2luID09PSBpZC5tYXJnaW4pO1xuICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICBpZExpc3Quc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG59XG5jb25zdCBvYnNlcnZlcnMgPSBuZXcgTWFwKCk7XG5jb25zdCBpZExpc3QgPSBbXTtcbmZ1bmN0aW9uIGNyZWF0ZU9ic2VydmVyKG9wdGlvbnMpIHtcbiAgICBjb25zdCBpZCA9IHtcbiAgICAgICAgcm9vdDogb3B0aW9ucy5yb290IHx8IG51bGwsXG4gICAgICAgIG1hcmdpbjogb3B0aW9ucy5yb290TWFyZ2luIHx8ICcnXG4gICAgfTtcbiAgICBjb25zdCBleGlzdGluZyA9IGlkTGlzdC5maW5kKChvYmopPT5vYmoucm9vdCA9PT0gaWQucm9vdCAmJiBvYmoubWFyZ2luID09PSBpZC5tYXJnaW4pO1xuICAgIGxldCBpbnN0YW5jZTtcbiAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgICAgaW5zdGFuY2UgPSBvYnNlcnZlcnMuZ2V0KGV4aXN0aW5nKTtcbiAgICAgICAgaWYgKGluc3RhbmNlKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgZWxlbWVudHMgPSBuZXcgTWFwKCk7XG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXMpPT57XG4gICAgICAgIGVudHJpZXMuZm9yRWFjaCgoZW50cnkpPT57XG4gICAgICAgICAgICBjb25zdCBjYWxsYmFjayA9IGVsZW1lbnRzLmdldChlbnRyeS50YXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgaXNWaXNpYmxlID0gZW50cnkuaXNJbnRlcnNlY3RpbmcgfHwgZW50cnkuaW50ZXJzZWN0aW9uUmF0aW8gPiAwO1xuICAgICAgICAgICAgaWYgKGNhbGxiYWNrICYmIGlzVmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKGlzVmlzaWJsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0sIG9wdGlvbnMpO1xuICAgIGluc3RhbmNlID0ge1xuICAgICAgICBpZCxcbiAgICAgICAgb2JzZXJ2ZXIsXG4gICAgICAgIGVsZW1lbnRzXG4gICAgfTtcbiAgICBpZExpc3QucHVzaChpZCk7XG4gICAgb2JzZXJ2ZXJzLnNldChpZCwgaW5zdGFuY2UpO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXNlLWludGVyc2VjdGlvbi5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJ1c2VJbnRlcnNlY3Rpb24iLCJfcmVhY3QiLCJyZXF1aXJlIiwiX3JlcXVlc3RJZGxlQ2FsbGJhY2siLCJoYXNJbnRlcnNlY3Rpb25PYnNlcnZlciIsIkludGVyc2VjdGlvbk9ic2VydmVyIiwicm9vdFJlZiIsInJvb3RNYXJnaW4iLCJkaXNhYmxlZCIsImlzRGlzYWJsZWQiLCJ1bm9ic2VydmUiLCJ1c2VSZWYiLCJ2aXNpYmxlIiwic2V0VmlzaWJsZSIsInVzZVN0YXRlIiwiZWxlbWVudCIsInNldEVsZW1lbnQiLCJ1c2VFZmZlY3QiLCJjdXJyZW50IiwidW5kZWZpbmVkIiwidGFnTmFtZSIsIm9ic2VydmUiLCJpc1Zpc2libGUiLCJyb290IiwiaWRsZUNhbGxiYWNrIiwicmVxdWVzdElkbGVDYWxsYmFjayIsImNhbmNlbElkbGVDYWxsYmFjayIsInJlc2V0VmlzaWJsZSIsInVzZUNhbGxiYWNrIiwiY2FsbGJhY2siLCJvcHRpb25zIiwiaWQiLCJvYnNlcnZlciIsImVsZW1lbnRzIiwiY3JlYXRlT2JzZXJ2ZXIiLCJzZXQiLCJkZWxldGUiLCJzaXplIiwiZGlzY29ubmVjdCIsIm9ic2VydmVycyIsImluZGV4IiwiaWRMaXN0IiwiZmluZEluZGV4Iiwib2JqIiwibWFyZ2luIiwic3BsaWNlIiwiTWFwIiwiZXhpc3RpbmciLCJmaW5kIiwiaW5zdGFuY2UiLCJnZXQiLCJlbnRyaWVzIiwiZm9yRWFjaCIsImVudHJ5IiwidGFyZ2V0IiwiaXNJbnRlcnNlY3RpbmciLCJpbnRlcnNlY3Rpb25SYXRpbyIsInB1c2giLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../node_modules/next/dist/client/use-intersection.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.isLocalURL = isLocalURL;\nexports.interpolateAs = interpolateAs;\nexports.resolveHref = resolveHref;\nexports.createKey = createKey;\nexports[\"default\"] = void 0;\nvar _normalizeTrailingSlash = __webpack_require__(/*! ../../../client/normalize-trailing-slash */ \"../node_modules/next/dist/client/normalize-trailing-slash.js\");\nvar _removeTrailingSlash = __webpack_require__(/*! ./utils/remove-trailing-slash */ \"../shared/lib/router/utils/remove-trailing-slash\");\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 */ \"../shared/lib/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 _formatUrl = __webpack_require__(/*! ./utils/format-url */ \"./utils/format-url\");\nvar _detectDomainLocale = __webpack_require__(/*! ../../../client/detect-domain-locale */ \"../node_modules/next/dist/client/detect-domain-locale.js\");\nvar _parsePath = __webpack_require__(/*! ./utils/parse-path */ \"../shared/lib/router/utils/parse-path\");\nvar _addLocale = __webpack_require__(/*! ../../../client/add-locale */ \"../node_modules/next/dist/client/add-locale.js\");\nvar _removeLocale = __webpack_require__(/*! ../../../client/remove-locale */ \"../node_modules/next/dist/client/remove-locale.js\");\nvar _removeBasePath = __webpack_require__(/*! ../../../client/remove-base-path */ \"../node_modules/next/dist/client/remove-base-path.js\");\nvar _addBasePath = __webpack_require__(/*! ../../../client/add-base-path */ \"../node_modules/next/dist/client/add-base-path.js\");\nvar _hasBasePath = __webpack_require__(/*! ../../../client/has-base-path */ \"../node_modules/next/dist/client/has-base-path.js\");\nvar _getNextPathnameInfo = __webpack_require__(/*! ./utils/get-next-pathname-info */ \"./utils/get-next-pathname-info\");\nvar _formatNextPathnameInfo = __webpack_require__(/*! ./utils/format-next-pathname-info */ \"./utils/format-next-pathname-info\");\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self1 = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self1, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _extends() {\n _extends = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n _getRequireWildcardCache = function() {\n return cache;\n };\n return cache;\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache();\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction buildCancellationError() {\n return Object.assign(new Error(\"Route Cancelled\"), {\n cancelled: true\n });\n}\nfunction isLocalURL(url) {\n // prevent a hydration mismatch on href for url with anchor refs\n if (!(0, _utils).isAbsoluteUrl(url)) 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 && (0, _hasBasePath).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)).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 omit(object, keys) {\n const omitted = {};\n Object.keys(object).forEach((key)=>{\n if (!keys.includes(key)) {\n omitted[key] = object[key];\n }\n });\n return omitted;\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: omit(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 : (0, _addBasePath).addBasePath(resolvedHref);\n const preparedAs = as ? stripOrigin(resolveHref(router, as)) : resolvedAs || resolvedHref;\n return {\n url: preparedUrl,\n as: asHadOrigin ? preparedAs : (0, _addBasePath).addBasePath(preparedAs)\n };\n}\nfunction resolveDynamicRoute(pathname, pages) {\n const cleanPathname = (0, _removeTrailingSlash).removeTrailingSlash((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, _removeTrailingSlash).removeTrailingSlash(pathname);\n}\nconst manualScrollRestoration = false && 0;\nconst SSG_DATA_NOT_FOUND = Symbol(\"SSG_DATA_NOT_FOUND\");\nfunction fetchRetry(url, attempts, options) {\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 method: options.method || \"GET\",\n headers: Object.assign({}, options.headers, {\n \"x-nextjs-data\": \"1\"\n })\n }).then((response)=>{\n return !response.ok && attempts > 1 && response.status >= 500 ? fetchRetry(url, attempts - 1, options) : response;\n });\n}\nconst backgroundCache = {};\nfunction fetchNextData({ dataHref , inflightCache , isPrefetch , hasMiddleware , isServerRender , parseJSON , persistCache , isBackground , unstable_skipClientCache }) {\n const { href: cacheKey } = new URL(dataHref, window.location.href);\n var ref1;\n const getData = (params)=>{\n return fetchRetry(dataHref, isServerRender ? 3 : 1, {\n headers: isPrefetch ? {\n purpose: \"prefetch\"\n } : {},\n method: (ref1 = params == null ? void 0 : params.method) != null ? ref1 : \"GET\"\n }).then((response)=>{\n if (response.ok && (params == null ? void 0 : params.method) === \"HEAD\") {\n return {\n dataHref,\n response,\n text: \"\",\n json: {}\n };\n }\n return response.text().then((text)=>{\n if (!response.ok) {\n /**\n * When the data response is a redirect because of a middleware\n * we do not consider it an error. The headers must bring the\n * mapped location.\n * TODO: Change the status code in the handler.\n */ if (hasMiddleware && [\n 301,\n 302,\n 307,\n 308\n ].includes(response.status)) {\n return {\n dataHref,\n response,\n text,\n json: {}\n };\n }\n if (response.status === 404) {\n var ref;\n if ((ref = tryToParseAsJSON(text)) == null ? void 0 : ref.notFound) {\n return {\n dataHref,\n json: {\n notFound: SSG_DATA_NOT_FOUND\n },\n response,\n text\n };\n }\n /**\n * If there is a 404 that is not for SSG we used to fail but if\n * there is a middleware we must respond with an empty object.\n * For now we will return the data when there is a middleware.\n * TODO: Update the server to success on these requests.\n */ if (hasMiddleware) {\n return {\n dataHref,\n response,\n text,\n json: {}\n };\n }\n }\n const error = new Error(`Failed to load static props`);\n /**\n * We should only trigger a server-side transition if this was\n * caused on a client-side transition. Otherwise, we'd get into\n * an infinite loop.\n */ if (!isServerRender) {\n (0, _routeLoader).markAssetError(error);\n }\n throw error;\n }\n return {\n dataHref,\n json: parseJSON ? tryToParseAsJSON(text) : {},\n response,\n text\n };\n });\n }).then((data)=>{\n if (!persistCache || \"development\" !== \"production\" || 0) {\n delete inflightCache[cacheKey];\n }\n return data;\n }).catch((err)=>{\n delete inflightCache[cacheKey];\n throw err;\n });\n };\n // when skipping client cache we wait to update\n // inflight cache until successful data response\n // this allows racing click event with fetching newer data\n // without blocking navigation when stale data is available\n if (unstable_skipClientCache && persistCache) {\n return getData({}).then((data)=>{\n inflightCache[cacheKey] = Promise.resolve(data);\n return data;\n });\n }\n if (inflightCache[cacheKey] !== undefined) {\n return inflightCache[cacheKey];\n }\n return inflightCache[cacheKey] = getData(isBackground ? {\n method: \"HEAD\"\n } : {});\n}\nfunction tryToParseAsJSON(text) {\n try {\n return JSON.parse(text);\n } catch (error) {\n return {};\n }\n}\nfunction createKey() {\n return Math.random().toString(36).slice(2, 10);\n}\nfunction handleHardNavigation({ url , router }) {\n // ensure we don't trigger a hard navigation to the same\n // URL as this can end up with an infinite refresh\n if (url === (0, _addBasePath).addBasePath((0, _addLocale).addLocale(router.asPath, router.locale))) {\n throw new Error(`Invariant: attempted to hard navigate to the same URL ${url} ${location.href}`);\n }\n window.location.href = url;\n}\nconst getCancelledHandler = ({ route , router })=>{\n let cancelled = false;\n const cancel = router.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 === router.clc) {\n router.clc = null;\n }\n };\n return handleCancelled;\n};\nclass Router {\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 change(method, url, as, options, forcedScroll) {\n var _this = this;\n return _asyncToGenerator(function*() {\n if (!isLocalURL(url)) {\n handleHardNavigation({\n url,\n router: _this\n });\n return false;\n }\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 const isQueryUpdating = options._h;\n const shouldResolveHref = isQueryUpdating || options._shouldResolveHref || (0, _parsePath).parsePath(url).pathname === (0, _parsePath).parsePath(as).pathname;\n const nextState = _extends({}, _this.state);\n // for static pages with query params in the URL we delay\n // marking the router ready until after the query is updated\n // or a navigation has occurred\n _this.isReady = true;\n const isSsr = _this.isSsr;\n if (!isQueryUpdating) {\n _this.isSsr = false;\n }\n // if a route transition is already in progress before\n // the query updating is triggered ignore query updating\n if (isQueryUpdating && _this.clc) {\n return false;\n }\n const prevLocale = nextState.locale;\n if (false) { var ref; }\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 && _this.clc) {\n if (!isSsr) {\n Router.events.emit(\"routeChangeError\", buildCancellationError(), _this._inFlightRoute, routeProps);\n }\n _this.clc();\n _this.clc = null;\n }\n as = (0, _addBasePath).addBasePath((0, _addLocale).addLocale((0, _hasBasePath).hasBasePath(as) ? (0, _removeBasePath).removeBasePath(as) : as, options.locale, _this.defaultLocale));\n const cleanedAs = (0, _removeLocale).removeLocale((0, _hasBasePath).hasBasePath(as) ? (0, _removeBasePath).removeBasePath(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 if (!isQueryUpdating && _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, _extends({}, options, {\n scroll: false\n }));\n if (scroll) {\n _this.scrollToHash(cleanedAs);\n }\n try {\n yield _this.set(nextState, _this.components[nextState.route], null);\n } catch (err) {\n if ((0, _isError).default(err) && err.cancelled) {\n Router.events.emit(\"routeChangeError\", err, cleanedAs, routeProps);\n }\n throw err;\n }\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 }] = yield Promise.all([\n _this.pageLoader.getPageList(),\n (0, _routeLoader).getClientBuildManifest(),\n _this.pageLoader.getMiddlewareList(), \n ]);\n } catch (err1) {\n // If we fail to resolve the page list or client-build manifest, we must\n // do a server-side transition:\n handleHardNavigation({\n url: as,\n router: _this\n });\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, _removeTrailingSlash).removeTrailingSlash((0, _removeBasePath).removeBasePath(pathname)) : pathname;\n // we don't attempt resolve asPath when we need to execute\n // middleware as the resolving will occur server-side\n const isMiddlewareMatch = yield matchesMiddleware({\n asPath: as,\n locale: nextState.locale,\n router: _this\n });\n if (options.shallow && isMiddlewareMatch) {\n pathname = _this.pathname;\n }\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 = (0, _addBasePath).addBasePath(pathname);\n if (!isMiddlewareMatch) {\n url = (0, _formatUrl).formatWithValidation(parsed);\n }\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 handleHardNavigation({\n url: as,\n router: _this\n });\n return false;\n }\n resolvedAs = (0, _removeLocale).removeLocale((0, _removeBasePath).removeBasePath(resolvedAs), nextState.locale);\n let route = (0, _removeTrailingSlash).removeTrailingSlash(pathname);\n let routeMatch = false;\n if ((0, _isDynamic).isDynamicRoute(route)) {\n const parsedAs1 = (0, _parseRelativeUrl).parseRelativeUrl(resolvedAs);\n const asPathname = parsedAs1.pathname;\n const routeRegex = (0, _routeRegex).getRouteRegex(route);\n 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 if (missingParams.length > 0 && !isMiddlewareMatch) {\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({}, parsedAs1, {\n pathname: interpolatedAs.result,\n query: omit(query, interpolatedAs.params)\n }));\n } else {\n // Merge params into `query`, overwriting any specified in search\n Object.assign(query, routeMatch);\n }\n }\n if (!isQueryUpdating) {\n Router.events.emit(\"routeChangeStart\", as, routeProps);\n }\n try {\n var ref2, ref3;\n let routeInfo = yield _this.getRouteInfo({\n route,\n pathname,\n query,\n as,\n resolvedAs,\n routeProps,\n locale: nextState.locale,\n isPreview: nextState.isPreview,\n hasMiddleware: isMiddlewareMatch\n });\n if (\"route\" in routeInfo && isMiddlewareMatch) {\n pathname = routeInfo.route || route;\n route = pathname;\n query = Object.assign({}, routeInfo.query || {}, query);\n if (routeMatch && pathname !== parsed.pathname) {\n Object.keys(routeMatch).forEach((key)=>{\n if (routeMatch && query[key] === routeMatch[key]) {\n delete query[key];\n }\n });\n }\n if ((0, _isDynamic).isDynamicRoute(pathname)) {\n const prefixedAs = routeInfo.resolvedAs || (0, _addBasePath).addBasePath((0, _addLocale).addLocale(as, nextState.locale), true);\n let rewriteAs = prefixedAs;\n if ((0, _hasBasePath).hasBasePath(rewriteAs)) {\n rewriteAs = (0, _removeBasePath).removeBasePath(rewriteAs);\n }\n if (false) {}\n const routeRegex1 = (0, _routeRegex).getRouteRegex(pathname);\n const curRouteMatch = (0, _routeMatcher).getRouteMatcher(routeRegex1)(rewriteAs);\n if (curRouteMatch) {\n Object.assign(query, curRouteMatch);\n }\n }\n }\n // If the routeInfo brings a redirect we simply apply it.\n if (\"type\" in routeInfo) {\n if (routeInfo.type === \"redirect-internal\") {\n return _this.change(method, routeInfo.newUrl, routeInfo.newAs, options);\n } else {\n handleHardNavigation({\n url: routeInfo.destination,\n router: _this\n });\n return new Promise(()=>{});\n }\n }\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 // Use the destination from redirect without adding locale\n options.locale = false;\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 handleHardNavigation({\n url: destination,\n router: _this\n });\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 yield _this.fetchComponent(\"/404\");\n notFoundRoute = \"/404\";\n } catch (_) {\n notFoundRoute = \"/_error\";\n }\n routeInfo = yield _this.getRouteInfo({\n route: notFoundRoute,\n pathname: notFoundRoute,\n query,\n as,\n resolvedAs,\n routeProps: {\n shallow: false\n },\n locale: nextState.locale,\n isPreview: nextState.isPreview\n });\n if (\"type\" in routeInfo) {\n throw new Error(`Unexpected middleware effect on /404`);\n }\n }\n }\n Router.events.emit(\"beforeHistoryChange\", as, routeProps);\n _this.changeState(method, url, as, options);\n if (isQueryUpdating && pathname === \"/_error\" && ((ref2 = self.__NEXT_DATA__.props) == null ? void 0 : (ref3 = ref2.pageProps) == null ? void 0 : ref3.statusCode) === 500 && (props == null ? 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 var _route;\n // shallow routing is only allowed for same page URL changes.\n const isValidShallowRoute = options.shallow && nextState.route === ((_route = routeInfo.route) != null ? _route : route);\n var _scroll;\n const shouldScroll = (_scroll = options.scroll) != null ? _scroll : !isValidShallowRoute;\n const resetScroll = shouldScroll ? {\n x: 0,\n y: 0\n } : null;\n yield _this.set(_extends({}, nextState, {\n route,\n pathname,\n query,\n asPath: cleanedAs,\n isFallback: false\n }), routeInfo, forcedScroll != null ? forcedScroll : resetScroll).catch((e)=>{\n if (e.cancelled) error = error || e;\n else throw e;\n });\n if (error) {\n if (!isQueryUpdating) {\n Router.events.emit(\"routeChangeError\", error, cleanedAs, routeProps);\n }\n throw error;\n }\n if (false) {}\n if (!isQueryUpdating) {\n Router.events.emit(\"routeChangeComplete\", as, routeProps);\n }\n // A hash mark # is the optional last part of a URL\n const hashRegex = /#.+$/;\n if (shouldScroll && hashRegex.test(as)) {\n _this.scrollToHash(as);\n }\n return true;\n } catch (err11) {\n if ((0, _isError).default(err11) && err11.cancelled) {\n return false;\n }\n throw err11;\n }\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 key: this._key = method !== \"pushState\" ? this._key : createKey()\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 handleRouteInfoError(err, pathname, query, as, routeProps, loadErrorFail) {\n var _this = this;\n return _asyncToGenerator(function*() {\n console.error(err);\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 handleHardNavigation({\n url: as,\n router: _this\n });\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 } = yield _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 = yield _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 }\n getRouteInfo({ route: requestedRoute , pathname , query , as , resolvedAs , routeProps , locale , hasMiddleware , isPreview , unstable_skipClientCache }) {\n var _this = this;\n return _asyncToGenerator(function*() {\n /**\n * This `route` binding can change if there's a rewrite\n * so we keep a reference to the original requested route\n * so we can store the cache for it and avoid re-requesting every time\n * for shallow routing purposes.\n */ let route = requestedRoute;\n try {\n var ref, ref4, ref5;\n const handleCancelled = getCancelledHandler({\n route,\n router: _this\n });\n let existingInfo = _this.components[route];\n if (routeProps.shallow && existingInfo && _this.route === route) {\n return existingInfo;\n }\n let cachedRouteInfo = existingInfo && !(\"initial\" in existingInfo) && \"development\" !== \"development\" ? 0 : undefined;\n const fetchNextDataParams = {\n dataHref: _this.pageLoader.getDataHref({\n href: (0, _formatUrl).formatWithValidation({\n pathname,\n query\n }),\n skipInterpolation: true,\n asPath: resolvedAs,\n locale\n }),\n hasMiddleware: true,\n isServerRender: _this.isSsr,\n parseJSON: true,\n inflightCache: _this.sdc,\n persistCache: !isPreview,\n isPrefetch: false,\n unstable_skipClientCache\n };\n const data = yield withMiddlewareEffects({\n fetchData: ()=>fetchNextData(fetchNextDataParams),\n asPath: resolvedAs,\n locale: locale,\n router: _this\n });\n handleCancelled();\n if ((data == null ? void 0 : (ref = data.effect) == null ? void 0 : ref.type) === \"redirect-internal\" || (data == null ? void 0 : (ref4 = data.effect) == null ? void 0 : ref4.type) === \"redirect-external\") {\n return data.effect;\n }\n if ((data == null ? void 0 : (ref5 = data.effect) == null ? void 0 : ref5.type) === \"rewrite\") {\n route = (0, _removeTrailingSlash).removeTrailingSlash(data.effect.resolvedHref);\n pathname = data.effect.resolvedHref;\n query = _extends({}, query, data.effect.parsedAs.query);\n resolvedAs = data.effect.parsedAs.pathname;\n // Check again the cache with the new destination.\n existingInfo = _this.components[route];\n if (routeProps.shallow && existingInfo && _this.route === route && !hasMiddleware) {\n // If we have a match with the current route due to rewrite,\n // we can copy the existing information to the rewritten one.\n // Then, we return the information along with the matched route.\n _this.components[requestedRoute] = _extends({}, existingInfo, {\n route\n });\n return _extends({}, existingInfo, {\n route\n });\n }\n cachedRouteInfo = existingInfo && !(\"initial\" in existingInfo) && \"development\" !== \"development\" ? 0 : undefined;\n }\n if (route === \"/api\" || route.startsWith(\"/api/\")) {\n handleHardNavigation({\n url: as,\n router: _this\n });\n return new Promise(()=>{});\n }\n const routeInfo = cachedRouteInfo || (yield _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 if (true) {\n const { isValidElementType } = __webpack_require__(/*! next/dist/compiled/react-is */ \"next/dist/compiled/react-is\");\n if (!isValidElementType(routeInfo.Component)) {\n throw new Error(`The default export is not a React Component in page: \"${pathname}\"`);\n }\n }\n /**\n * For server components, non-SSR pages will have statically optimized\n * flight data in a production build. So only development and SSR pages\n * will always have the real-time generated and streamed flight data.\n */ const useStreamedFlightData = routeInfo.__N_RSC && ( true || 0);\n const shouldFetchData = routeInfo.__N_SSG || routeInfo.__N_SSP || routeInfo.__N_RSC;\n const { props } = yield _this._getData(_asyncToGenerator(function*() {\n if (shouldFetchData && !useStreamedFlightData) {\n const { json } = data || (yield fetchNextData({\n dataHref: _this.pageLoader.getDataHref({\n href: (0, _formatUrl).formatWithValidation({\n pathname,\n query\n }),\n asPath: resolvedAs,\n locale\n }),\n isServerRender: _this.isSsr,\n parseJSON: true,\n inflightCache: _this.sdc,\n persistCache: !isPreview,\n isPrefetch: false,\n unstable_skipClientCache\n }));\n return {\n props: json\n };\n }\n return {\n headers: {},\n props: yield _this.getInitialProps(routeInfo.Component, {\n pathname,\n query,\n asPath: as,\n locale,\n locales: _this.locales,\n defaultLocale: _this.defaultLocale\n })\n };\n }));\n // Only bust the data cache for SSP routes although\n // middleware can skip cache per request with\n // x-middleware-cache: no-cache as well\n if (routeInfo.__N_SSP && fetchNextDataParams.dataHref) {\n const cacheKey = new URL(fetchNextDataParams.dataHref, window.location.href).href;\n delete _this.sdc[cacheKey];\n }\n // we kick off a HEAD request in the background\n // when a non-prefetch request is made to signal revalidation\n if (!_this.isPreview && routeInfo.__N_SSG && \"development\" !== \"development\") {}\n let flightInfo;\n if (routeInfo.__N_RSC) {\n flightInfo = {\n __flight__: useStreamedFlightData ? (yield _this._getData(()=>_this._getFlightData((0, _formatUrl).formatWithValidation({\n query: _extends({}, query, {\n __flight__: \"1\"\n }),\n pathname: (0, _isDynamic).isDynamicRoute(route) ? interpolateAs(pathname, (0, _parseRelativeUrl).parseRelativeUrl(resolvedAs).pathname, query).result : pathname\n })))).data : props.__flight__\n };\n }\n props.pageProps = Object.assign({}, props.pageProps, flightInfo);\n routeInfo.props = props;\n routeInfo.route = route;\n routeInfo.query = query;\n routeInfo.resolvedAs = resolvedAs;\n _this.components[route] = routeInfo;\n // If the route was rewritten in the process of fetching data,\n // we update the cache to allow hitting the same data for shallow requests.\n if (route !== requestedRoute) {\n _this.components[requestedRoute] = _extends({}, routeInfo, {\n route\n });\n }\n return routeInfo;\n } catch (err) {\n return _this.handleRouteInfoError((0, _isError).getProperError(err), pathname, query, as, routeProps);\n }\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 // Decode hash to make non-latin anchor works.\n const rawHash = decodeURIComponent(hash);\n // First we check if the element by id is found\n const idEl = document.getElementById(rawHash);\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(rawHash)[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 */ prefetch(url, asPath = url, options = {}) {\n var _this = this;\n return _asyncToGenerator(function*() {\n let parsed = (0, _parseRelativeUrl).parseRelativeUrl(url);\n let { pathname , query } = parsed;\n if (false) {}\n const pages = yield _this.pageLoader.getPageList();\n let resolvedAs = asPath;\n const locale = typeof options.locale !== \"undefined\" ? options.locale || undefined : _this.locale;\n const isMiddlewareMatch = yield matchesMiddleware({\n asPath: asPath,\n locale: locale,\n router: _this\n });\n if (false) {}\n parsed.pathname = resolveDynamicRoute(parsed.pathname, pages);\n if ((0, _isDynamic).isDynamicRoute(parsed.pathname)) {\n pathname = parsed.pathname;\n parsed.pathname = pathname;\n Object.assign(query, (0, _routeMatcher).getRouteMatcher((0, _routeRegex).getRouteRegex(parsed.pathname))((0, _parsePath).parsePath(asPath).pathname) || {});\n if (!isMiddlewareMatch) {\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 // TODO: if the route middleware's data request\n // resolves to is not an SSG route we should bust the cache\n // but we shouldn't allow prefetch to keep triggering\n // requests for SSP pages\n const data = yield withMiddlewareEffects({\n fetchData: ()=>fetchNextData({\n dataHref: _this.pageLoader.getDataHref({\n href: (0, _formatUrl).formatWithValidation({\n pathname,\n query\n }),\n skipInterpolation: true,\n asPath: resolvedAs,\n locale\n }),\n hasMiddleware: true,\n isServerRender: _this.isSsr,\n parseJSON: true,\n inflightCache: _this.sdc,\n persistCache: !_this.isPreview,\n isPrefetch: true\n }),\n asPath: asPath,\n locale: locale,\n router: _this\n });\n /**\n * If there was a rewrite we apply the effects of the rewrite on the\n * current parameters for the prefetch.\n */ if ((data == null ? void 0 : data.effect.type) === \"rewrite\") {\n parsed.pathname = data.effect.resolvedHref;\n pathname = data.effect.resolvedHref;\n query = _extends({}, query, data.effect.parsedAs.query);\n resolvedAs = data.effect.parsedAs.pathname;\n url = (0, _formatUrl).formatWithValidation(parsed);\n }\n /**\n * If there is a redirect to an external destination then we don't have\n * to prefetch content as it will be unused.\n */ if ((data == null ? void 0 : data.effect.type) === \"redirect-external\") {\n return;\n }\n const route = (0, _removeTrailingSlash).removeTrailingSlash(pathname);\n yield Promise.all([\n _this.pageLoader._isSsg(route).then((isSsg)=>{\n return isSsg ? fetchNextData({\n dataHref: (data == null ? void 0 : data.dataHref) || _this.pageLoader.getDataHref({\n href: url,\n asPath: resolvedAs,\n locale: locale\n }),\n isServerRender: false,\n parseJSON: true,\n inflightCache: _this.sdc,\n persistCache: !_this.isPreview,\n isPrefetch: true,\n unstable_skipClientCache: options.unstable_skipClientCache || options.priority\n }).then(()=>false) : false;\n }),\n _this.pageLoader[options.priority ? \"loadPage\" : \"prefetch\"](route), \n ]);\n })();\n }\n fetchComponent(route) {\n var _this = this;\n return _asyncToGenerator(function*() {\n const handleCancelled = getCancelledHandler({\n route,\n router: _this\n });\n try {\n const componentResult = yield _this.pageLoader.loadPage(route);\n handleCancelled();\n return componentResult;\n } catch (err) {\n handleCancelled();\n throw err;\n }\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({\n dataHref,\n isServerRender: true,\n parseJSON: false,\n inflightCache: this.sdc,\n persistCache: false,\n isPrefetch: false\n }).then(({ text })=>({\n data: text\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 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 constructor(pathname1, query1, as1, { initialProps , pageLoader , App , wrapApp , Component , err , subscription , isFallback , locale , locales , defaultLocale , domainLocales , isPreview , isRsc }){\n // Server Data Cache\n this.sdc = {};\n this.isFirstPopStateEvent = true;\n this._key = createKey();\n this.onPopState = (e)=>{\n const { isFirstPopStateEvent } = this;\n this.isFirstPopStateEvent = false;\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: (0, _addBasePath).addBasePath(pathname),\n query\n }), (0, _utils).getURL());\n return;\n }\n // __NA is used to identify if the history entry can be handled by the app-router.\n if (state.__NA) {\n window.location.reload();\n return;\n }\n if (!state.__N) {\n return;\n }\n // Safari fires popstateevent when reopening the browser.\n if (isFirstPopStateEvent && this.locale === state.options.locale && state.as === this.asPath) {\n return;\n }\n let forcedScroll;\n const { url , as , options , key } = state;\n if (false) {}\n this._key = key;\n const { pathname: pathname1 } = (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 === (0, _addBasePath).addBasePath(this.asPath) && pathname1 === (0, _addBasePath).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 // @ts-ignore internal value not exposed on types\n _h: 0\n }), forcedScroll);\n };\n // represents the current component key\n const route = (0, _removeTrailingSlash).removeTrailingSlash(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 = false || \"\";\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 this._initialMatchesMiddlewarePromise = Promise.resolve(false);\n if (false) {}\n }\n}\nRouter.events = (0, _mitt).default();\nfunction matchesMiddleware(options) {\n return Promise.resolve(options.router.pageLoader.getMiddlewareList()).then((items)=>{\n const { pathname: asPathname } = (0, _parsePath).parsePath(options.asPath);\n const cleanedAs = (0, _hasBasePath).hasBasePath(asPathname) ? (0, _removeBasePath).removeBasePath(asPathname) : asPathname;\n return !!(items == null ? void 0 : items.some(([regex, ssr])=>{\n return !ssr && new RegExp(regex).test((0, _addLocale).addLocale(cleanedAs, options.locale));\n }));\n });\n}\nfunction withMiddlewareEffects(options) {\n return matchesMiddleware(options).then((matches)=>{\n if (matches && options.fetchData) {\n return options.fetchData().then((data)=>getMiddlewareData(data.dataHref, data.response, options).then((effect)=>({\n dataHref: data.dataHref,\n json: data.json,\n response: data.response,\n text: data.text,\n effect\n }))).catch((_err)=>{\n /**\n * TODO: Revisit this in the future.\n * For now we will not consider middleware data errors to be fatal.\n * maybe we should revisit in the future.\n */ return null;\n });\n }\n return null;\n });\n}\nfunction getMiddlewareData(source, response, options) {\n const nextConfig = {\n basePath: options.router.basePath,\n i18n: {\n locales: options.router.locales\n },\n trailingSlash: Boolean(false)\n };\n const rewriteHeader = response.headers.get(\"x-nextjs-rewrite\");\n let rewriteTarget = rewriteHeader || response.headers.get(\"x-nextjs-matched-path\");\n const matchedPath = response.headers.get(\"x-matched-path\");\n if (!rewriteTarget && !(matchedPath == null ? void 0 : matchedPath.includes(\"__next_data_catchall\"))) {\n rewriteTarget = matchedPath;\n }\n if (rewriteTarget) {\n if (rewriteTarget.startsWith(\"/\")) {\n const parsedRewriteTarget = (0, _parseRelativeUrl).parseRelativeUrl(rewriteTarget);\n const pathnameInfo = (0, _getNextPathnameInfo).getNextPathnameInfo(parsedRewriteTarget.pathname, {\n nextConfig,\n parseData: true\n });\n const fsPathname = (0, _removeTrailingSlash).removeTrailingSlash(pathnameInfo.pathname);\n return Promise.all([\n options.router.pageLoader.getPageList(),\n (0, _routeLoader).getClientBuildManifest(), \n ]).then(([pages, { __rewrites: rewrites }])=>{\n let as = (0, _addLocale).addLocale(pathnameInfo.pathname, pathnameInfo.locale);\n if ((0, _isDynamic).isDynamicRoute(as) || !rewriteHeader && pages.includes((0, _normalizeLocalePath).normalizeLocalePath((0, _removeBasePath).removeBasePath(as), options.router.locales).pathname)) {\n const parsedSource = (0, _getNextPathnameInfo).getNextPathnameInfo((0, _parseRelativeUrl).parseRelativeUrl(source).pathname, {\n parseData: true\n });\n as = (0, _addBasePath).addBasePath(parsedSource.pathname);\n parsedRewriteTarget.pathname = as;\n }\n if (false) {}\n const resolvedHref = !pages.includes(fsPathname) ? resolveDynamicRoute((0, _normalizeLocalePath).normalizeLocalePath((0, _removeBasePath).removeBasePath(parsedRewriteTarget.pathname), options.router.locales).pathname, pages) : fsPathname;\n if ((0, _isDynamic).isDynamicRoute(resolvedHref)) {\n const matches = (0, _routeMatcher).getRouteMatcher((0, _routeRegex).getRouteRegex(resolvedHref))(as);\n Object.assign(parsedRewriteTarget.query, matches || {});\n }\n return {\n type: \"rewrite\",\n parsedAs: parsedRewriteTarget,\n resolvedHref\n };\n });\n }\n const src = (0, _parsePath).parsePath(source);\n const pathname = (0, _formatNextPathnameInfo).formatNextPathnameInfo(_extends({}, (0, _getNextPathnameInfo).getNextPathnameInfo(src.pathname, {\n nextConfig,\n parseData: true\n }), {\n defaultLocale: options.router.defaultLocale,\n buildId: \"\"\n }));\n return Promise.resolve({\n type: \"redirect-external\",\n destination: `${pathname}${src.query}${src.hash}`\n });\n }\n const redirectTarget = response.headers.get(\"x-nextjs-redirect\");\n if (redirectTarget) {\n if (redirectTarget.startsWith(\"/\")) {\n const src1 = (0, _parsePath).parsePath(redirectTarget);\n const pathname1 = (0, _formatNextPathnameInfo).formatNextPathnameInfo(_extends({}, (0, _getNextPathnameInfo).getNextPathnameInfo(src1.pathname, {\n nextConfig,\n parseData: true\n }), {\n defaultLocale: options.router.defaultLocale,\n buildId: \"\"\n }));\n return Promise.resolve({\n type: \"redirect-internal\",\n newAs: `${pathname1}${src1.query}${src1.hash}`,\n newUrl: `${pathname1}${src1.query}${src1.hash}`\n });\n }\n return Promise.resolve({\n type: \"redirect-external\",\n destination: redirectTarget\n });\n }\n return Promise.resolve({\n type: \"next\"\n });\n}\nexports[\"default\"] = Router; //# sourceMappingURL=router.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zaGFyZWQvbGliL3JvdXRlci9yb3V0ZXIuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxLQUFLLEVBQUUsSUFBSTtDQUNkLEVBQUMsQ0FBQztBQUNIRCxrQkFBa0IsR0FBR0UsVUFBVSxDQUFDO0FBQ2hDRixxQkFBcUIsR0FBR0csYUFBYSxDQUFDO0FBQ3RDSCxtQkFBbUIsR0FBR0ksV0FBVyxDQUFDO0FBQ2xDSixpQkFBaUIsR0FBR0ssU0FBUyxDQUFDO0FBQzlCTCxrQkFBZSxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLElBQUlPLHVCQUF1QixHQUFHQyxtQkFBTyxDQUFDLDhHQUEwQyxDQUFDO0FBQ2pGLElBQUlDLG9CQUFvQixHQUFHRCxtQkFBTyxDQUFDLHVGQUErQixDQUFDO0FBQ25FLElBQUlFLFlBQVksR0FBR0YsbUJBQU8sQ0FBQyxzRkFBOEIsQ0FBQztBQUMxRCxJQUFJRyxPQUFPLEdBQUdILG1CQUFPLENBQUMsMEVBQXdCLENBQUM7QUFDL0MsSUFBSUksUUFBUSxHQUFHQyx1QkFBdUIsQ0FBQ0wsbUJBQU8sQ0FBQyx3RUFBdUIsQ0FBQyxDQUFDO0FBQ3hFLElBQUlNLG9CQUFvQixHQUFHTixtQkFBTyxDQUFDLDhFQUFvQyxDQUFDO0FBQ3hFLElBQUlPLG9CQUFvQixHQUFHUCxtQkFBTyxDQUFDLG9FQUErQixDQUFDO0FBQ25FLElBQUlRLEtBQUssR0FBR0Msc0JBQXNCLENBQUNULG1CQUFPLENBQUMsd0JBQVMsQ0FBQyxDQUFDO0FBQ3RELElBQUlVLE1BQU0sR0FBR1YsbUJBQU8sQ0FBQyxxQ0FBVSxDQUFDO0FBQ2hDLElBQUlXLFVBQVUsR0FBR1gsbUJBQU8sQ0FBQyw4Q0FBb0IsQ0FBQztBQUM5QyxJQUFJWSxpQkFBaUIsR0FBR1osbUJBQU8sQ0FBQyw4REFBNEIsQ0FBQztBQUM3RCxJQUFJYSxZQUFZLEdBQUdiLG1CQUFPLENBQUMsZ0RBQXFCLENBQUM7QUFDakQs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LElBQUksRUFBRSxNQUFNO0tBQ2YsQ0FBQyxDQUFDO0NBQ047QUFDRHpULGtCQUFlLEdBQUdnTyxNQUFNLENBQUMsQ0FFekIsa0NBQWtDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi9yb3V0ZXIvcm91dGVyLmpzPzEyODMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmlzTG9jYWxVUkwgPSBpc0xvY2FsVVJMO1xuZXhwb3J0cy5pbnRlcnBvbGF0ZUFzID0gaW50ZXJwb2xhdGVBcztcbmV4cG9ydHMucmVzb2x2ZUhyZWYgPSByZXNvbHZlSHJlZjtcbmV4cG9ydHMuY3JlYXRlS2V5ID0gY3JlYXRlS2V5O1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xudmFyIF9ub3JtYWxpemVUcmFpbGluZ1NsYXNoID0gcmVxdWlyZShcIi4uLy4uLy4uL2NsaWVudC9ub3JtYWxpemUtdHJhaWxpbmctc2xhc2hcIik7XG52YXIgX3JlbW92ZVRyYWlsaW5nU2xhc2ggPSByZXF1aXJlKFwiLi91dGlscy9yZW1vdmUtdHJhaWxpbmctc2xhc2hcIik7XG52YXIgX3JvdXRlTG9hZGVyID0gcmVxdWlyZShcIi4uLy4uLy4uL2NsaWVudC9yb3V0ZS1sb2FkZXJcIik7XG52YXIgX3NjcmlwdCA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jbGllbnQvc2NyaXB0XCIpO1xudmFyIF9pc0Vycm9yID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcIi4uLy4uLy4uL2xpYi9pcy1lcnJvclwiKSk7XG52YXIgX2Rlbm9ybWFsaXplUGFnZVBhdGggPSByZXF1aXJlKFwiLi4vcGFnZS1wYXRoL2Rlbm9ybWFsaXplLXBhZ2UtcGF0aFwiKTtcbnZhciBfbm9ybWFsaXplTG9jYWxlUGF0aCA9IHJlcXVpcmUoXCIuLi9pMThuL25vcm1hbGl6ZS1sb2NhbGUtcGF0aFwiKTtcbnZhciBfbWl0dCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL21pdHRcIikpO1xudmFyIF91dGlscyA9IHJlcXVpcmUoXCIuLi91dGlsc1wiKTtcbnZhciBfaXNEeW5hbWljID0gcmVxdWlyZShcIi4vdXRpbHMvaXMtZHluYW1pY1wiKTtcbnZhciBfcGFyc2VSZWxhdGl2ZVVybCA9IHJlcXVpcmUoXCIuL3V0aWxzL3BhcnNlLXJlbGF0aXZlLXVybFwiKTtcbnZhciBfcXVlcnlzdHJpbmcgPSByZXF1aXJlKFwiLi91dGlscy9xdWVyeXN0cmluZ1wiKTtcbnZhciBfcmVzb2x2ZVJld3JpdGVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlscy9yZXNvbHZlLXJld3JpdGVzXCIpKTtcbnZhciBfcm91dGVNYXRjaGVyID0gcmVxdWlyZShcIi4vdXRpbHMvcm91dGUtbWF0Y2hlclwiKTtcbnZhciBfcm91dGVSZWdleCA9IHJlcXVpcmUoXCIuL3V0aWxzL3JvdXRlLXJlZ2V4XCIpO1xudmFyIF9mb3JtYXRVcmwgPSByZXF1aXJlKFwiLi91dGlscy9mb3JtYXQtdXJsXCIpO1xudmFyIF9kZXRlY3REb21haW5Mb2NhbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vY2xpZW50L2RldGVjdC1kb21haW4tbG9jYWxlXCIpO1xudmFyIF9wYXJzZVBhdGggPSByZXF1aXJlKFwiLi91dGlscy9wYXJzZS1wYXRoXCIpO1xudmFyIF9hZGRMb2NhbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vY2xpZW50L2FkZC1sb2NhbGVcIik7XG52YXIgX3JlbW92ZUxvY2FsZSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jbGllbnQvcmVtb3ZlLWxvY2FsZVwiKTtcbnZhciBfcmVtb3ZlQmFzZVBhdGggPSByZXF1aXJlKFwiLi4vLi4vLi4vY2xpZW50L3JlbW92ZS1iYXNlLXBhdGhcIik7XG52YXIgX2FkZEJhc2VQYXRoID0gcmVxdWlyZShcIi4uLy4uLy4uL2NsaWVudC9hZGQtYmFzZS1wYXRoXCIpO1xudmFyIF9oYXNCYXNlUGF0aCA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jbGllbnQvaGFzLWJhc2UtcGF0aFwiKTtcbnZhciBfZ2V0TmV4dFBhdGhuYW1lSW5mbyA9IHJlcXVpcmUoXCIuL3V0aWxzL2dldC1uZXh0LXBhdGhuYW1lLWluZm9cIik7XG52YXIgX2Zvcm1hdE5leHRQYXRobmFtZUluZm8gPSByZXF1aXJlKFwiLi91dGlscy9mb3JtYXQtbmV4dC1wYXRobmFtZS1pbmZvXCIpO1xuZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTtcbiAgICAgICAgdmFyIHZhbHVlID0gaW5mby52YWx1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKF9uZXh0LCBfdGhyb3cpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXMsIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHZhciBnZW4gPSBmbi5hcHBseShzZWxmLCBhcmdzKTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9uZXh0KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gX3Rocm93KGVycikge1xuICAgICAgICAgICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX25leHQodW5kZWZpbmVkKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICAgIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0YXJnZXQpIHtcbiAgICAgICAgZm9yKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yKHZhciBrZXkgaW4gc291cmNlKXtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH07XG4gICAgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikge1xuICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgICAgIGRlZmF1bHQ6IG9ialxuICAgIH07XG59XG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7XG4gICAgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsO1xuICAgIHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7XG4gICAgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjYWNoZTtcbiAgICB9O1xuICAgIHJldHVybiBjYWNoZTtcbn1cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikge1xuICAgIGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgICAgIH07XG4gICAgfVxuICAgIHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpO1xuICAgIGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkge1xuICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KG9iaik7XG4gICAgfVxuICAgIHZhciBuZXdPYmogPSB7fTtcbiAgICB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICAgZm9yKHZhciBrZXkgaW4gb2JqKXtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgIHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsO1xuICAgICAgICAgICAgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld09ialtrZXldID0gb2JqW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgbmV3T2JqLmRlZmF1bHQgPSBvYmo7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIGNhY2hlLnNldChvYmosIG5ld09iaik7XG4gICAgfVxuICAgIHJldHVybiBuZXdPYmo7XG59XG5mdW5jdGlvbiBidWlsZENhbmNlbGxhdGlvbkVycm9yKCkge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBFcnJvcignUm91dGUgQ2FuY2VsbGVkJyksIHtcbiAgICAgICAgY2FuY2VsbGVkOiB0cnVlXG4gICAgfSk7XG59XG5mdW5jdGlvbiBpc0xvY2FsVVJMKHVybCkge1xuICAgIC8vIHByZXZlbnQgYSBoeWRyYXRpb24gbWlzbWF0Y2ggb24gaHJlZiBmb3IgdXJsIHdpdGggYW5jaG9yIHJlZnNcbiAgICBpZiAoISgwLCBfdXRpbHMpLmlzQWJzb2x1dGVVcmwodXJsKSkgcmV0dXJuIHRydWU7XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gYWJzb2x1dGUgdXJscyBjYW4gYmUgbG9jYWwgaWYgdGhleSBhcmUgb24gdGhlIHNhbWUgb3JpZ2luXG4gICAgICAgIGNvbnN0IGxvY2F0aW9uT3JpZ2luID0gKDAsIF91dGlscykuZ2V0TG9jYXRpb25PcmlnaW4oKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSBuZXcgVVJMKHVybCwgbG9jYXRpb25PcmlnaW4pO1xuICAgICAgICByZXR1cm4gcmVzb2x2ZWQub3JpZ2luID09PSBsb2NhdGlvbk9yaWdpbiAmJiAoMCwgX2hhc0Jhc2VQYXRoKS5oYXNCYXNlUGF0aChyZXNvbHZlZC5wYXRobmFtZSk7XG4gICAgfSBjYXRjaCAoXykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuZnVuY3Rpb24gaW50ZXJwb2xhdGVBcyhyb3V0ZSwgYXNQYXRobmFtZSwgcXVlcnkpIHtcbiAgICBsZXQgaW50ZXJwb2xhdGVkUm91dGUgPSAnJztcbiAgICBjb25zdCBkeW5hbWljUmVnZXggPSAoMCwgX3JvdXRlUmVnZXgpLmdldFJvdXRlUmVnZXgocm91dGUpO1xuICAgIGNvbnN0IGR5bmFtaWNHcm91cHMgPSBkeW5hbWljUmVnZXguZ3JvdXBzO1xuICAgIGNvbnN0IGR5bmFtaWNNYXRjaGVzID0gLy8gVHJ5IHRvIG1hdGNoIHRoZSBkeW5hbWljIHJvdXRlIGFnYWluc3QgdGhlIGFzUGF0aFxuICAgIChhc1BhdGhuYW1lICE9PSByb3V0ZSA/ICgwLCBfcm91dGVNYXRjaGVyKS5nZXRSb3V0ZU1hdGNoZXIoZHluYW1pY1JlZ2V4KShhc1BhdGhuYW1lKSA6ICcnKSB8fCAvLyBGYWxsIGJhY2sgdG8gcmVhZGluZyB0aGUgdmFsdWVzIGZyb20gdGhlIGhyZWZcbiAgICAvLyBUT0RPOiBzaG91bGQgdGhpcyB0YWtlIHByaW9yaXR5OyBhbHNvIG5lZWQgdG8gY2hhbmdlIGluIHRoZSByb3V0ZXIuXG4gICAgcXVlcnk7XG4gICAgaW50ZXJwb2xhdGVkUm91dGUgPSByb3V0ZTtcbiAgICBjb25zdCBwYXJhbXMgPSBPYmplY3Qua2V5cyhkeW5hbWljR3JvdXBzKTtcbiAgICBpZiAoIXBhcmFtcy5ldmVyeSgocGFyYW0pPT57XG4gICAgICAgIGxldCB2YWx1ZSA9IGR5bmFtaWNNYXRjaGVzW3BhcmFtXSB8fCAnJztcbiAgICAgICAgY29uc3QgeyByZXBlYXQgLCBvcHRpb25hbCAgfSA9IGR5bmFtaWNHcm91cHNbcGFyYW1dO1xuICAgICAgICAvLyBzdXBwb3J0IHNpbmdsZS1sZXZlbCBjYXRjaC1hbGxcbiAgICAgICAgLy8gVE9ETzogbW9yZSByb2J1c3QgaGFuZGxpbmcgZm9yIHVzZXItZXJyb3IgKHBhc3NpbmcgYC9gKVxuICAgICAgICBsZXQgcmVwbGFjZWQgPSBgWyR7cmVwZWF0ID8gJy4uLicgOiAnJ30ke3BhcmFtfV1gO1xuICAgICAgICBpZiAob3B0aW9uYWwpIHtcbiAgICAgICAgICAgIHJlcGxhY2VkID0gYCR7IXZhbHVlID8gJy8nIDogJyd9WyR7cmVwbGFjZWR9XWA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcGVhdCAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHZhbHVlID0gW1xuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgXTtcbiAgICAgICAgcmV0dXJuIChvcHRpb25hbCB8fCBwYXJhbSBpbiBkeW5hbWljTWF0Y2hlcykgJiYgLy8gSW50ZXJwb2xhdGUgZ3JvdXAgaW50byBkYXRhIFVSTCBpZiBwcmVzZW50XG4gICAgICAgIChpbnRlcnBvbGF0ZWRSb3V0ZSA9IGludGVycG9sYXRlZFJvdXRlLnJlcGxhY2UocmVwbGFjZWQsIHJlcGVhdCA/IHZhbHVlLm1hcCgvLyB0aGVzZSB2YWx1ZXMgc2hvdWxkIGJlIGZ1bGx5IGVuY29kZWQgaW5zdGVhZCBvZiBqdXN0XG4gICAgICAgIC8vIHBhdGggZGVsaW1pdGVyIGVzY2FwZWQgc2luY2UgdGhleSBhcmUgYmVpbmcgaW5zZXJ0ZWRcbiAgICAgICAgLy8gaW50byB0aGUgVVJMIGFuZCB3ZSBleHBlY3QgVVJMIGVuY29kZWQgc2VnbWVudHNcbiAgICAgICAgLy8gd2hlbiBwYXJzaW5nIGR5bmFtaWMgcm91dGUgcGFyYW1zXG4gICAgICAgIChzZWdtZW50KT0+ZW5jb2RlVVJJQ29tcG9uZW50KHNlZ21lbnQpKS5qb2luKCcvJykgOiBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpKSB8fCAnLycpO1xuICAgIH0pKSB7XG4gICAgICAgIGludGVycG9sYXRlZFJvdXRlID0gJycgLy8gZGlkIG5vdCBzYXRpc2Z5IGFsbCByZXF1aXJlbWVudHNcbiAgICAgICAgO1xuICAgIC8vIG4uYi4gV2UgaWdub3JlIHRoaXMgZXJyb3IgYmVjYXVzZSB3ZSBoYW5kbGUgd2FybmluZyBmb3IgdGhpcyBjYXNlIGluXG4gICAgLy8gZGV2ZWxvcG1lbnQgaW4gdGhlIGA8TGluaz5gIGNvbXBvbmVudCBkaXJlY3RseS5cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICByZXN1bHQ6IGludGVycG9sYXRlZFJvdXRlXG4gICAgfTtcbn1cbmZ1bmN0aW9uIG9taXQob2JqZWN0LCBrZXlzKSB7XG4gICAgY29uc3Qgb21pdHRlZCA9IHt9O1xuICAgIE9iamVjdC5rZXlzKG9iamVjdCkuZm9yRWFjaCgoa2V5KT0+e1xuICAgICAgICBpZiAoIWtleXMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgb21pdHRlZFtrZXldID0gb2JqZWN0W2tleV07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gb21pdHRlZDtcbn1cbmZ1bmN0aW9uIHJlc29sdmVIcmVmKHJvdXRlciwgaHJlZiwgcmVzb2x2ZUFzKSB7XG4gICAgLy8gd2UgdXNlIGEgZHVtbXkgYmFzZSB1cmwgZm9yIHJlbGF0aXZlIHVybHNcbiAgICBsZXQgYmFzZTtcbiAgICBsZXQgdXJsQXNTdHJpbmcgPSB0eXBlb2YgaHJlZiA9PT0gJ3N0cmluZycgPyBocmVmIDogKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKGhyZWYpO1xuICAgIC8vIHJlcGVhdGVkIHNsYXNoZXMgYW5kIGJhY2tzbGFzaGVzIGluIHRoZSBVUkwgYXJlIGNvbnNpZGVyZWRcbiAgICAvLyBpbnZhbGlkIGFuZCB3aWxsIG5ldmVyIG1hdGNoIGEgTmV4dC5qcyBwYWdlL2ZpbGVcbiAgICBjb25zdCB1cmxQcm90b01hdGNoID0gdXJsQXNTdHJpbmcubWF0Y2goL15bYS16QS1aXXsxLH06XFwvXFwvLyk7XG4gICAgY29uc3QgdXJsQXNTdHJpbmdOb1Byb3RvID0gdXJsUHJvdG9NYXRjaCA/IHVybEFzU3RyaW5nLnNsaWNlKHVybFByb3RvTWF0Y2hbMF0ubGVuZ3RoKSA6IHVybEFzU3RyaW5nO1xuICAgIGNvbnN0IHVybFBhcnRzID0gdXJsQXNTdHJpbmdOb1Byb3RvLnNwbGl0KCc/Jyk7XG4gICAgaWYgKCh1cmxQYXJ0c1swXSB8fCAnJykubWF0Y2goLyhcXC9cXC98XFxcXCkvKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBJbnZhbGlkIGhyZWYgcGFzc2VkIHRvIG5leHQvcm91dGVyOiAke3VybEFzU3RyaW5nfSwgcmVwZWF0ZWQgZm9yd2FyZC1zbGFzaGVzICgvLykgb3IgYmFja3NsYXNoZXMgXFxcXCBhcmUgbm90IHZhbGlkIGluIHRoZSBocmVmYCk7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRVcmwgPSAoMCwgX3V0aWxzKS5ub3JtYWxpemVSZXBlYXRlZFNsYXNoZXModXJsQXNTdHJpbmdOb1Byb3RvKTtcbiAgICAgICAgdXJsQXNTdHJpbmcgPSAodXJsUHJvdG9NYXRjaCA/IHVybFByb3RvTWF0Y2hbMF0gOiAnJykgKyBub3JtYWxpemVkVXJsO1xuICAgIH1cbiAgICAvLyBSZXR1cm4gYmVjYXVzZSBpdCBjYW5ub3QgYmUgcm91dGVkIGJ5IHRoZSBOZXh0LmpzIHJvdXRlclxuICAgIGlmICghaXNMb2NhbFVSTCh1cmxBc1N0cmluZykpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVBcyA/IFtcbiAgICAgICAgICAgIHVybEFzU3RyaW5nXG4gICAgICAgIF0gOiB1cmxBc1N0cmluZztcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgYmFzZSA9IG5ldyBVUkwodXJsQXNTdHJpbmcuc3RhcnRzV2l0aCgnIycpID8gcm91dGVyLmFzUGF0aCA6IHJvdXRlci5wYXRobmFtZSwgJ2h0dHA6Ly9uJyk7XG4gICAgfSBjYXRjaCAoXykge1xuICAgICAgICAvLyBmYWxsYmFjayB0byAvIGZvciBpbnZhbGlkIGFzUGF0aCB2YWx1ZXMgZS5nLiAvL1xuICAgICAgICBiYXNlID0gbmV3IFVSTCgnLycsICdodHRwOi8vbicpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBjb25zdCBmaW5hbFVybCA9IG5ldyBVUkwodXJsQXNTdHJpbmcsIGJhc2UpO1xuICAgICAgICBmaW5hbFVybC5wYXRobmFtZSA9ICgwLCBfbm9ybWFsaXplVHJhaWxpbmdTbGFzaCkubm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2goZmluYWxVcmwucGF0aG5hbWUpO1xuICAgICAgICBsZXQgaW50ZXJwb2xhdGVkQXMgPSAnJztcbiAgICAgICAgaWYgKCgwLCBfaXNEeW5hbWljKS5pc0R5bmFtaWNSb3V0ZShmaW5hbFVybC5wYXRobmFtZSkgJiYgZmluYWxVcmwuc2VhcmNoUGFyYW1zICYmIHJlc29sdmVBcykge1xuICAgICAgICAgICAgY29uc3QgcXVlcnkgPSAoMCwgX3F1ZXJ5c3RyaW5nKS5zZWFyY2hQYXJhbXNUb1VybFF1ZXJ5KGZpbmFsVXJsLnNlYXJjaFBhcmFtcyk7XG4gICAgICAgICAgICBjb25zdCB7IHJlc3VsdCAsIHBhcmFtcyAgfSA9IGludGVycG9sYXRlQXMoZmluYWxVcmwucGF0aG5hbWUsIGZpbmFsVXJsLnBhdGhuYW1lLCBxdWVyeSk7XG4gICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgaW50ZXJwb2xhdGVkQXMgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICBwYXRobmFtZTogcmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICBoYXNoOiBmaW5hbFVybC5oYXNoLFxuICAgICAgICAgICAgICAgICAgICBxdWVyeTogb21pdChxdWVyeSwgcGFyYW1zKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGlmIHRoZSBvcmlnaW4gZGlkbid0IGNoYW5nZSwgaXQgbWVhbnMgd2UgcmVjZWl2ZWQgYSByZWxhdGl2ZSBocmVmXG4gICAgICAgIGNvbnN0IHJlc29sdmVkSHJlZiA9IGZpbmFsVXJsLm9yaWdpbiA9PT0gYmFzZS5vcmlnaW4gPyBmaW5hbFVybC5ocmVmLnNsaWNlKGZpbmFsVXJsLm9yaWdpbi5sZW5ndGgpIDogZmluYWxVcmwuaHJlZjtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVBcyA/IFtcbiAgICAgICAgICAgIHJlc29sdmVkSHJlZixcbiAgICAgICAgICAgIGludGVycG9sYXRlZEFzIHx8IHJlc29sdmVkSHJlZlxuICAgICAgICBdIDogcmVzb2x2ZWRIcmVmO1xuICAgIH0gY2F0Y2ggKF8xKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlQXMgPyBbXG4gICAgICAgICAgICB1cmxBc1N0cmluZ1xuICAgICAgICBdIDogdXJsQXNTdHJpbmc7XG4gICAgfVxufVxuZnVuY3Rpb24gc3RyaXBPcmlnaW4odXJsKSB7XG4gICAgY29uc3Qgb3JpZ2luID0gKDAsIF91dGlscykuZ2V0TG9jYXRpb25PcmlnaW4oKTtcbiAgICByZXR1cm4gdXJsLnN0YXJ0c1dpdGgob3JpZ2luKSA/IHVybC5zdWJzdHJpbmcob3JpZ2luLmxlbmd0aCkgOiB1cmw7XG59XG5mdW5jdGlvbiBwcmVwYXJlVXJsQXMocm91dGVyLCB1cmwsIGFzKSB7XG4gICAgLy8gSWYgdXJsIGFuZCBhcyBwcm92aWRlZCBhcyBhbiBvYmplY3QgcmVwcmVzZW50YXRpb24sXG4gICAgLy8gd2UnbGwgZm9ybWF0IHRoZW0gaW50byB0aGUgc3RyaW5nIHZlcnNpb24gaGVyZS5cbiAgICBsZXQgW3Jlc29sdmVkSHJlZiwgcmVzb2x2ZWRBc10gPSByZXNvbHZlSHJlZihyb3V0ZXIsIHVybCwgdHJ1ZSk7XG4gICAgY29uc3Qgb3JpZ2luID0gKDAsIF91dGlscykuZ2V0TG9jYXRpb25PcmlnaW4oKTtcbiAgICBjb25zdCBocmVmSGFkT3JpZ2luID0gcmVzb2x2ZWRIcmVmLnN0YXJ0c1dpdGgob3JpZ2luKTtcbiAgICBjb25zdCBhc0hhZE9yaWdpbiA9IHJlc29sdmVkQXMgJiYgcmVzb2x2ZWRBcy5zdGFydHNXaXRoKG9yaWdpbik7XG4gICAgcmVzb2x2ZWRIcmVmID0gc3RyaXBPcmlnaW4ocmVzb2x2ZWRIcmVmKTtcbiAgICByZXNvbHZlZEFzID0gcmVzb2x2ZWRBcyA/IHN0cmlwT3JpZ2luKHJlc29sdmVkQXMpIDogcmVzb2x2ZWRBcztcbiAgICBjb25zdCBwcmVwYXJlZFVybCA9IGhyZWZIYWRPcmlnaW4gPyByZXNvbHZlZEhyZWYgOiAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aChyZXNvbHZlZEhyZWYpO1xuICAgIGNvbnN0IHByZXBhcmVkQXMgPSBhcyA/IHN0cmlwT3JpZ2luKHJlc29sdmVIcmVmKHJvdXRlciwgYXMpKSA6IHJlc29sdmVkQXMgfHwgcmVzb2x2ZWRIcmVmO1xuICAgIHJldHVybiB7XG4gICAgICAgIHVybDogcHJlcGFyZWRVcmwsXG4gICAgICAgIGFzOiBhc0hhZE9yaWdpbiA/IHByZXBhcmVkQXMgOiAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aChwcmVwYXJlZEFzKVxuICAgIH07XG59XG5mdW5jdGlvbiByZXNvbHZlRHluYW1pY1JvdXRlKHBhdGhuYW1lLCBwYWdlcykge1xuICAgIGNvbnN0IGNsZWFuUGF0aG5hbWUgPSAoMCwgX3JlbW92ZVRyYWlsaW5nU2xhc2gpLnJlbW92ZVRyYWlsaW5nU2xhc2goKDAsIF9kZW5vcm1hbGl6ZVBhZ2VQYXRoKS5kZW5vcm1hbGl6ZVBhZ2VQYXRoKHBhdGhuYW1lKSk7XG4gICAgaWYgKGNsZWFuUGF0aG5hbWUgPT09ICcvNDA0JyB8fCBjbGVhblBhdGhuYW1lID09PSAnL19lcnJvcicpIHtcbiAgICAgICAgcmV0dXJuIHBhdGhuYW1lO1xuICAgIH1cbiAgICAvLyBoYW5kbGUgcmVzb2x2aW5nIGhyZWYgZm9yIGR5bmFtaWMgcm91dGVzXG4gICAgaWYgKCFwYWdlcy5pbmNsdWRlcyhjbGVhblBhdGhuYW1lKSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYXJyYXktY2FsbGJhY2stcmV0dXJuXG4gICAgICAgIHBhZ2VzLnNvbWUoKHBhZ2UpPT57XG4gICAgICAgICAgICBpZiAoKDAsIF9pc0R5bmFtaWMpLmlzRHluYW1pY1JvdXRlKHBhZ2UpICYmICgwLCBfcm91dGVSZWdleCkuZ2V0Um91dGVSZWdleChwYWdlKS5yZS50ZXN0KGNsZWFuUGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcGF0aG5hbWUgPSBwYWdlO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuICgwLCBfcmVtb3ZlVHJhaWxpbmdTbGFzaCkucmVtb3ZlVHJhaWxpbmdTbGFzaChwYXRobmFtZSk7XG59XG5jb25zdCBtYW51YWxTY3JvbGxSZXN0b3JhdGlvbiA9IHByb2Nlc3MuZW52Ll9fTkVYVF9TQ1JPTExfUkVTVE9SQVRJT04gJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgJ3Njcm9sbFJlc3RvcmF0aW9uJyBpbiB3aW5kb3cuaGlzdG9yeSAmJiAhIWZ1bmN0aW9uKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGxldCB2ID0gJ19fbmV4dCc7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZXF1ZW5jZXNcbiAgICAgICAgcmV0dXJuIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odiwgdiksIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0odiksIHRydWU7XG4gICAgfSBjYXRjaCAobikge31cbn0oKTtcbmNvbnN0IFNTR19EQVRBX05PVF9GT1VORCA9IFN5bWJvbCgnU1NHX0RBVEFfTk9UX0ZPVU5EJyk7XG5mdW5jdGlvbiBmZXRjaFJldHJ5KHVybCwgYXR0ZW1wdHMsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gZmV0Y2godXJsLCB7XG4gICAgICAgIC8vIENvb2tpZXMgYXJlIHJlcXVpcmVkIHRvIGJlIHByZXNlbnQgZm9yIE5leHQuanMnIFNTRyBcIlByZXZpZXcgTW9kZVwiLlxuICAgICAgICAvLyBDb29raWVzIG1heSBhbHNvIGJlIHJlcXVpcmVkIGZvciBgZ2V0U2VydmVyU2lkZVByb3BzYC5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gPiBgZmV0Y2hgIHdvbuKAmXQgc2VuZCBjb29raWVzLCB1bmxlc3MgeW91IHNldCB0aGUgY3JlZGVudGlhbHMgaW5pdFxuICAgICAgICAvLyA+IG9wdGlvbi5cbiAgICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0ZldGNoX0FQSS9Vc2luZ19GZXRjaFxuICAgICAgICAvL1xuICAgICAgICAvLyA+IEZvciBtYXhpbXVtIGJyb3dzZXIgY29tcGF0aWJpbGl0eSB3aGVuIGl0IGNvbWVzIHRvIHNlbmRpbmcgJlxuICAgICAgICAvLyA+IHJlY2VpdmluZyBjb29raWVzLCBhbHdheXMgc3VwcGx5IHRoZSBgY3JlZGVudGlhbHM6ICdzYW1lLW9yaWdpbidgXG4gICAgICAgIC8vID4gb3B0aW9uIGluc3RlYWQgb2YgcmVseWluZyBvbiB0aGUgZGVmYXVsdC5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dpdGh1Yi9mZXRjaCNjYXZlYXRzXG4gICAgICAgIGNyZWRlbnRpYWxzOiAnc2FtZS1vcmlnaW4nLFxuICAgICAgICBtZXRob2Q6IG9wdGlvbnMubWV0aG9kIHx8ICdHRVQnLFxuICAgICAgICBoZWFkZXJzOiBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zLmhlYWRlcnMsIHtcbiAgICAgICAgICAgICd4LW5leHRqcy1kYXRhJzogJzEnXG4gICAgICAgIH0pXG4gICAgfSkudGhlbigocmVzcG9uc2UpPT57XG4gICAgICAgIHJldHVybiAhcmVzcG9uc2Uub2sgJiYgYXR0ZW1wdHMgPiAxICYmIHJlc3BvbnNlLnN0YXR1cyA+PSA1MDAgPyBmZXRjaFJldHJ5KHVybCwgYXR0ZW1wdHMgLSAxLCBvcHRpb25zKSA6IHJlc3BvbnNlO1xuICAgIH0pO1xufVxuY29uc3QgYmFja2dyb3VuZENhY2hlID0ge307XG5mdW5jdGlvbiBmZXRjaE5leHREYXRhKHsgZGF0YUhyZWYgLCBpbmZsaWdodENhY2hlICwgaXNQcmVmZXRjaCAsIGhhc01pZGRsZXdhcmUgLCBpc1NlcnZlclJlbmRlciAsIHBhcnNlSlNPTiAsIHBlcnNpc3RDYWNoZSAsIGlzQmFja2dyb3VuZCAsIHVuc3RhYmxlX3NraXBDbGllbnRDYWNoZSAgfSkge1xuICAgIGNvbnN0IHsgaHJlZjogY2FjaGVLZXkgIH0gPSBuZXcgVVJMKGRhdGFIcmVmLCB3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgdmFyIHJlZjE7XG4gICAgY29uc3QgZ2V0RGF0YSA9IChwYXJhbXMpPT57XG4gICAgICAgIHJldHVybiBmZXRjaFJldHJ5KGRhdGFIcmVmLCBpc1NlcnZlclJlbmRlciA/IDMgOiAxLCB7XG4gICAgICAgICAgICBoZWFkZXJzOiBpc1ByZWZldGNoID8ge1xuICAgICAgICAgICAgICAgIHB1cnBvc2U6ICdwcmVmZXRjaCdcbiAgICAgICAgICAgIH0gOiB7fSxcbiAgICAgICAgICAgIG1ldGhvZDogKHJlZjEgPSBwYXJhbXMgPT0gbnVsbCA/IHZvaWQgMCA6IHBhcmFtcy5tZXRob2QpICE9IG51bGwgPyByZWYxIDogJ0dFVCdcbiAgICAgICAgfSkudGhlbigocmVzcG9uc2UpPT57XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uub2sgJiYgKHBhcmFtcyA9PSBudWxsID8gdm9pZCAwIDogcGFyYW1zLm1ldGhvZCkgPT09ICdIRUFEJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFIcmVmLFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIGpzb246IHt9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS50ZXh0KCkudGhlbigodGV4dCk9PntcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2hlbiB0aGUgZGF0YSByZXNwb25zZSBpcyBhIHJlZGlyZWN0IGJlY2F1c2Ugb2YgYSBtaWRkbGV3YXJlXG4gICAgICAgICAgICAgKiB3ZSBkbyBub3QgY29uc2lkZXIgaXQgYW4gZXJyb3IuIFRoZSBoZWFkZXJzIG11c3QgYnJpbmcgdGhlXG4gICAgICAgICAgICAgKiBtYXBwZWQgbG9jYXRpb24uXG4gICAgICAgICAgICAgKiBUT0RPOiBDaGFuZ2UgdGhlIHN0YXR1cyBjb2RlIGluIHRoZSBoYW5kbGVyLlxuICAgICAgICAgICAgICovIGlmIChoYXNNaWRkbGV3YXJlICYmIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIDMwMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDMwMixcbiAgICAgICAgICAgICAgICAgICAgICAgIDMwNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIDMwOFxuICAgICAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKHJlc3BvbnNlLnN0YXR1cykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUhyZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uOiB7fVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWY7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHJlZiA9IHRyeVRvUGFyc2VBc0pTT04odGV4dCkpID09IG51bGwgPyB2b2lkIDAgOiByZWYubm90Rm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhSHJlZixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90Rm91bmQ6IFNTR19EQVRBX05PVF9GT1VORFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICogSWYgdGhlcmUgaXMgYSA0MDQgdGhhdCBpcyBub3QgZm9yIFNTRyB3ZSB1c2VkIHRvIGZhaWwgYnV0IGlmXG4gICAgICAgICAgICAgICAqIHRoZXJlIGlzIGEgbWlkZGxld2FyZSB3ZSBtdXN0IHJlc3BvbmQgd2l0aCBhbiBlbXB0eSBvYmplY3QuXG4gICAgICAgICAgICAgICAqIEZvciBub3cgd2Ugd2lsbCByZXR1cm4gdGhlIGRhdGEgd2hlbiB0aGVyZSBpcyBhIG1pZGRsZXdhcmUuXG4gICAgICAgICAgICAgICAqIFRPRE86IFVwZGF0ZSB0aGUgc2VydmVyIHRvIHN1Y2Nlc3Mgb24gdGhlc2UgcmVxdWVzdHMuXG4gICAgICAgICAgICAgICAqLyBpZiAoaGFzTWlkZGxld2FyZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFIcmVmLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbjoge31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBGYWlsZWQgdG8gbG9hZCBzdGF0aWMgcHJvcHNgKTtcbiAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXZSBzaG91bGQgb25seSB0cmlnZ2VyIGEgc2VydmVyLXNpZGUgdHJhbnNpdGlvbiBpZiB0aGlzIHdhc1xuICAgICAgICAgICAgICogY2F1c2VkIG9uIGEgY2xpZW50LXNpZGUgdHJhbnNpdGlvbi4gT3RoZXJ3aXNlLCB3ZSdkIGdldCBpbnRvXG4gICAgICAgICAgICAgKiBhbiBpbmZpbml0ZSBsb29wLlxuICAgICAgICAgICAgICovIGlmICghaXNTZXJ2ZXJSZW5kZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfcm91dGVMb2FkZXIpLm1hcmtBc3NldEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YUhyZWYsXG4gICAgICAgICAgICAgICAgICAgIGpzb246IHBhcnNlSlNPTiA/IHRyeVRvUGFyc2VBc0pTT04odGV4dCkgOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICAgIHRleHRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLnRoZW4oKGRhdGEpPT57XG4gICAgICAgICAgICBpZiAoIXBlcnNpc3RDYWNoZSB8fCBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nIHx8IGRhdGEucmVzcG9uc2UuaGVhZGVycy5nZXQoJ3gtbWlkZGxld2FyZS1jYWNoZScpID09PSAnbm8tY2FjaGUnKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGluZmxpZ2h0Q2FjaGVbY2FjaGVLZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0pLmNhdGNoKChlcnIpPT57XG4gICAgICAgICAgICBkZWxldGUgaW5mbGlnaHRDYWNoZVtjYWNoZUtleV07XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLy8gd2hlbiBza2lwcGluZyBjbGllbnQgY2FjaGUgd2Ugd2FpdCB0byB1cGRhdGVcbiAgICAvLyBpbmZsaWdodCBjYWNoZSB1bnRpbCBzdWNjZXNzZnVsIGRhdGEgcmVzcG9uc2VcbiAgICAvLyB0aGlzIGFsbG93cyByYWNpbmcgY2xpY2sgZXZlbnQgd2l0aCBmZXRjaGluZyBuZXdlciBkYXRhXG4gICAgLy8gd2l0aG91dCBibG9ja2luZyBuYXZpZ2F0aW9uIHdoZW4gc3RhbGUgZGF0YSBpcyBhdmFpbGFibGVcbiAgICBpZiAodW5zdGFibGVfc2tpcENsaWVudENhY2hlICYmIHBlcnNpc3RDYWNoZSkge1xuICAgICAgICByZXR1cm4gZ2V0RGF0YSh7fSkudGhlbigoZGF0YSk9PntcbiAgICAgICAgICAgIGluZmxpZ2h0Q2FjaGVbY2FjaGVLZXldID0gUHJvbWlzZS5yZXNvbHZlKGRhdGEpO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoaW5mbGlnaHRDYWNoZVtjYWNoZUtleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gaW5mbGlnaHRDYWNoZVtjYWNoZUtleV07XG4gICAgfVxuICAgIHJldHVybiBpbmZsaWdodENhY2hlW2NhY2hlS2V5XSA9IGdldERhdGEoaXNCYWNrZ3JvdW5kID8ge1xuICAgICAgICBtZXRob2Q6ICdIRUFEJ1xuICAgIH0gOiB7fSk7XG59XG5mdW5jdGlvbiB0cnlUb1BhcnNlQXNKU09OKHRleHQpIHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxufVxuZnVuY3Rpb24gY3JlYXRlS2V5KCkge1xuICAgIHJldHVybiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCAxMCk7XG59XG5mdW5jdGlvbiBoYW5kbGVIYXJkTmF2aWdhdGlvbih7IHVybCAsIHJvdXRlciAgfSkge1xuICAgIC8vIGVuc3VyZSB3ZSBkb24ndCB0cmlnZ2VyIGEgaGFyZCBuYXZpZ2F0aW9uIHRvIHRoZSBzYW1lXG4gICAgLy8gVVJMIGFzIHRoaXMgY2FuIGVuZCB1cCB3aXRoIGFuIGluZmluaXRlIHJlZnJlc2hcbiAgICBpZiAodXJsID09PSAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aCgoMCwgX2FkZExvY2FsZSkuYWRkTG9jYWxlKHJvdXRlci5hc1BhdGgsIHJvdXRlci5sb2NhbGUpKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFyaWFudDogYXR0ZW1wdGVkIHRvIGhhcmQgbmF2aWdhdGUgdG8gdGhlIHNhbWUgVVJMICR7dXJsfSAke2xvY2F0aW9uLmhyZWZ9YCk7XG4gICAgfVxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xufVxuY29uc3QgZ2V0Q2FuY2VsbGVkSGFuZGxlciA9ICh7IHJvdXRlICwgcm91dGVyICB9KT0+e1xuICAgIGxldCBjYW5jZWxsZWQgPSBmYWxzZTtcbiAgICBjb25zdCBjYW5jZWwgPSByb3V0ZXIuY2xjID0gKCk9PntcbiAgICAgICAgY2FuY2VsbGVkID0gdHJ1ZTtcbiAgICB9O1xuICAgIGNvbnN0IGhhbmRsZUNhbmNlbGxlZCA9ICgpPT57XG4gICAgICAgIGlmIChjYW5jZWxsZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBBYm9ydCBmZXRjaGluZyBjb21wb25lbnQgZm9yIHJvdXRlOiBcIiR7cm91dGV9XCJgKTtcbiAgICAgICAgICAgIGVycm9yLmNhbmNlbGxlZCA9IHRydWU7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FuY2VsID09PSByb3V0ZXIuY2xjKSB7XG4gICAgICAgICAgICByb3V0ZXIuY2xjID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIGhhbmRsZUNhbmNlbGxlZDtcbn07XG5jbGFzcyBSb3V0ZXIge1xuICAgIHJlbG9hZCgpIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgIH1cbiAgICAvKipcbiAgICogR28gYmFjayBpbiBoaXN0b3J5XG4gICAqLyBiYWNrKCkge1xuICAgICAgICB3aW5kb3cuaGlzdG9yeS5iYWNrKCk7XG4gICAgfVxuICAgIC8qKlxuICAgKiBQZXJmb3JtcyBhIGBwdXNoU3RhdGVgIHdpdGggYXJndW1lbnRzXG4gICAqIEBwYXJhbSB1cmwgb2YgdGhlIHJvdXRlXG4gICAqIEBwYXJhbSBhcyBtYXNrcyBgdXJsYCBmb3IgdGhlIGJyb3dzZXJcbiAgICogQHBhcmFtIG9wdGlvbnMgb2JqZWN0IHlvdSBjYW4gZGVmaW5lIGBzaGFsbG93YCBhbmQgb3RoZXIgb3B0aW9uc1xuICAgKi8gcHVzaCh1cmwsIGFzLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9TQ1JPTExfUkVTVE9SQVRJT04pIHtcbiAgICAgICAgICAgIC8vIFRPRE86IHJlbW92ZSBpbiB0aGUgZnV0dXJlIHdoZW4gd2UgdXBkYXRlIGhpc3RvcnkgYmVmb3JlIHJvdXRlIGNoYW5nZVxuICAgICAgICAgICAgLy8gaXMgY29tcGxldGUsIGFzIHRoZSBwb3BzdGF0ZSBldmVudCBzaG91bGQgaGFuZGxlIHRoaXMgY2FwdHVyZS5cbiAgICAgICAgICAgIGlmIChtYW51YWxTY3JvbGxSZXN0b3JhdGlvbikge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNuYXBzaG90IHNjcm9sbCBwb3NpdGlvbiByaWdodCBiZWZvcmUgbmF2aWdhdGluZyB0byBhIG5ldyBwYWdlOlxuICAgICAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdfX25leHRfc2Nyb2xsXycgKyB0aGlzLl9rZXksIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHg6IHNlbGYucGFnZVhPZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICB5OiBzZWxmLnBhZ2VZT2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICh7IHVybCAsIGFzICB9ID0gcHJlcGFyZVVybEFzKHRoaXMsIHVybCwgYXMpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhbmdlKCdwdXNoU3RhdGUnLCB1cmwsIGFzLCBvcHRpb25zKTtcbiAgICB9XG4gICAgLyoqXG4gICAqIFBlcmZvcm1zIGEgYHJlcGxhY2VTdGF0ZWAgd2l0aCBhcmd1bWVudHNcbiAgICogQHBhcmFtIHVybCBvZiB0aGUgcm91dGVcbiAgICogQHBhcmFtIGFzIG1hc2tzIGB1cmxgIGZvciB0aGUgYnJvd3NlclxuICAgKiBAcGFyYW0gb3B0aW9ucyBvYmplY3QgeW91IGNhbiBkZWZpbmUgYHNoYWxsb3dgIGFuZCBvdGhlciBvcHRpb25zXG4gICAqLyByZXBsYWNlKHVybCwgYXMsIG9wdGlvbnMgPSB7fSkge1xuICAgICAgICAoeyB1cmwgLCBhcyAgfSA9IHByZXBhcmVVcmxBcyh0aGlzLCB1cmwsIGFzKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmNoYW5nZSgncmVwbGFjZVN0YXRlJywgdXJsLCBhcywgb3B0aW9ucyk7XG4gICAgfVxuICAgIGNoYW5nZShtZXRob2QsIHVybCwgYXMsIG9wdGlvbnMsIGZvcmNlZFNjcm9sbCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qKCkge1xuICAgICAgICAgICAgaWYgKCFpc0xvY2FsVVJMKHVybCkpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFdBUk5JTkc6IGBfaGAgaXMgYW4gaW50ZXJuYWwgb3B0aW9uIGZvciBoYW5kaW5nIE5leHQuanMgY2xpZW50LXNpZGVcbiAgICAgICAgICAgIC8vIGh5ZHJhdGlvbi4gWW91ciBhcHAgc2hvdWxkIF9uZXZlcl8gdXNlIHRoaXMgcHJvcGVydHkuIEl0IG1heSBjaGFuZ2UgYXRcbiAgICAgICAgICAgIC8vIGFueSB0aW1lIHdpdGhvdXQgbm90aWNlLlxuICAgICAgICAgICAgY29uc3QgaXNRdWVyeVVwZGF0aW5nID0gb3B0aW9ucy5faDtcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZFJlc29sdmVIcmVmID0gaXNRdWVyeVVwZGF0aW5nIHx8IG9wdGlvbnMuX3Nob3VsZFJlc29sdmVIcmVmIHx8ICgwLCBfcGFyc2VQYXRoKS5wYXJzZVBhdGgodXJsKS5wYXRobmFtZSA9PT0gKDAsIF9wYXJzZVBhdGgpLnBhcnNlUGF0aChhcykucGF0aG5hbWU7XG4gICAgICAgICAgICBjb25zdCBuZXh0U3RhdGUgPSBfZXh0ZW5kcyh7fSwgX3RoaXMuc3RhdGUpO1xuICAgICAgICAgICAgLy8gZm9yIHN0YXRpYyBwYWdlcyB3aXRoIHF1ZXJ5IHBhcmFtcyBpbiB0aGUgVVJMIHdlIGRlbGF5XG4gICAgICAgICAgICAvLyBtYXJraW5nIHRoZSByb3V0ZXIgcmVhZHkgdW50aWwgYWZ0ZXIgdGhlIHF1ZXJ5IGlzIHVwZGF0ZWRcbiAgICAgICAgICAgIC8vIG9yIGEgbmF2aWdhdGlvbiBoYXMgb2NjdXJyZWRcbiAgICAgICAgICAgIF90aGlzLmlzUmVhZHkgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXNTc3IgPSBfdGhpcy5pc1NzcjtcbiAgICAgICAgICAgIGlmICghaXNRdWVyeVVwZGF0aW5nKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuaXNTc3IgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGlmIGEgcm91dGUgdHJhbnNpdGlvbiBpcyBhbHJlYWR5IGluIHByb2dyZXNzIGJlZm9yZVxuICAgICAgICAgICAgLy8gdGhlIHF1ZXJ5IHVwZGF0aW5nIGlzIHRyaWdnZXJlZCBpZ25vcmUgcXVlcnkgdXBkYXRpbmdcbiAgICAgICAgICAgIGlmIChpc1F1ZXJ5VXBkYXRpbmcgJiYgX3RoaXMuY2xjKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcHJldkxvY2FsZSA9IG5leHRTdGF0ZS5sb2NhbGU7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICAgICAgICAgIG5leHRTdGF0ZS5sb2NhbGUgPSBvcHRpb25zLmxvY2FsZSA9PT0gZmFsc2UgPyBfdGhpcy5kZWZhdWx0TG9jYWxlIDogb3B0aW9ucy5sb2NhbGUgfHwgbmV4dFN0YXRlLmxvY2FsZTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMubG9jYWxlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmxvY2FsZSA9IG5leHRTdGF0ZS5sb2NhbGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZEFzID0gKDAsIF9wYXJzZVJlbGF0aXZlVXJsKS5wYXJzZVJlbGF0aXZlVXJsKCgwLCBfaGFzQmFzZVBhdGgpLmhhc0Jhc2VQYXRoKGFzKSA/ICgwLCBfcmVtb3ZlQmFzZVBhdGgpLnJlbW92ZUJhc2VQYXRoKGFzKSA6IGFzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGVQYXRoUmVzdWx0ID0gKDAsIF9ub3JtYWxpemVMb2NhbGVQYXRoKS5ub3JtYWxpemVMb2NhbGVQYXRoKHBhcnNlZEFzLnBhdGhuYW1lLCBfdGhpcy5sb2NhbGVzKTtcbiAgICAgICAgICAgICAgICBpZiAobG9jYWxlUGF0aFJlc3VsdC5kZXRlY3RlZExvY2FsZSkge1xuICAgICAgICAgICAgICAgICAgICBuZXh0U3RhdGUubG9jYWxlID0gbG9jYWxlUGF0aFJlc3VsdC5kZXRlY3RlZExvY2FsZTtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkQXMucGF0aG5hbWUgPSAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aChwYXJzZWRBcy5wYXRobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGFzID0gKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHBhcnNlZEFzKTtcbiAgICAgICAgICAgICAgICAgICAgdXJsID0gKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgoKDAsIF9ub3JtYWxpemVMb2NhbGVQYXRoKS5ub3JtYWxpemVMb2NhbGVQYXRoKCgwLCBfaGFzQmFzZVBhdGgpLmhhc0Jhc2VQYXRoKHVybCkgPyAoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aCh1cmwpIDogdXJsLCBfdGhpcy5sb2NhbGVzKS5wYXRobmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBkaWROYXZpZ2F0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gd3JhcCB0aGlzIGluIHRoZSBlbnYgY2hlY2sgYWdhaW4gc2luY2UgcmVnZW5lcmF0b3IgcnVudGltZVxuICAgICAgICAgICAgICAgIC8vIG1vdmVzIHRoaXMgb24gaXRzIG93biBkdWUgdG8gdGhlIHJldHVyblxuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWY7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBsb2NhbGUgaXNuJ3QgY29uZmlndXJlZCBoYXJkIG5hdmlnYXRlIHRvIHNob3cgNDA0IHBhZ2VcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoKHJlZiA9IF90aGlzLmxvY2FsZXMpID09IG51bGwgPyB2b2lkIDAgOiByZWYuaW5jbHVkZXMobmV4dFN0YXRlLmxvY2FsZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRBcy5wYXRobmFtZSA9ICgwLCBfYWRkTG9jYWxlKS5hZGRMb2NhbGUocGFyc2VkQXMucGF0aG5hbWUsIG5leHRTdGF0ZS5sb2NhbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlSGFyZE5hdmlnYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHBhcnNlZEFzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXI6IF90aGlzXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgd2FzIHByZXZpb3VzbHkgYSByZXR1cm4gYnV0IHdhcyByZW1vdmVkIGluIGZhdm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiBiZXR0ZXIgZGVhZCBjb2RlIGVsaW1pbmF0aW9uIHdpdGggcmVnZW5lcmF0b3IgcnVudGltZVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlkTmF2aWdhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGRldGVjdGVkRG9tYWluID0gKDAsIF9kZXRlY3REb21haW5Mb2NhbGUpLmRldGVjdERvbWFpbkxvY2FsZShfdGhpcy5kb21haW5Mb2NhbGVzLCB1bmRlZmluZWQsIG5leHRTdGF0ZS5sb2NhbGUpO1xuICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gd3JhcCB0aGlzIGluIHRoZSBlbnYgY2hlY2sgYWdhaW4gc2luY2UgcmVnZW5lcmF0b3IgcnVudGltZVxuICAgICAgICAgICAgICAgIC8vIG1vdmVzIHRoaXMgb24gaXRzIG93biBkdWUgdG8gdGhlIHJldHVyblxuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHdlIGFyZSBuYXZpZ2F0aW5nIHRvIGEgZG9tYWluIGxvY2FsZSBlbnN1cmUgd2UgcmVkaXJlY3QgdG8gdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlY3QgZG9tYWluXG4gICAgICAgICAgICAgICAgICAgIGlmICghZGlkTmF2aWdhdGUgJiYgZGV0ZWN0ZWREb21haW4gJiYgX3RoaXMuaXNMb2NhbGVEb21haW4gJiYgc2VsZi5sb2NhdGlvbi5ob3N0bmFtZSAhPT0gZGV0ZWN0ZWREb21haW4uZG9tYWluKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhc05vQmFzZVBhdGggPSAoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChhcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgaHR0cCR7ZGV0ZWN0ZWREb21haW4uaHR0cCA/ICcnIDogJ3MnfTovLyR7ZGV0ZWN0ZWREb21haW4uZG9tYWlufSR7KDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgoYCR7bmV4dFN0YXRlLmxvY2FsZSA9PT0gZGV0ZWN0ZWREb21haW4uZGVmYXVsdExvY2FsZSA/ICcnIDogYC8ke25leHRTdGF0ZS5sb2NhbGV9YH0ke2FzTm9CYXNlUGF0aCA9PT0gJy8nID8gJycgOiBhc05vQmFzZVBhdGh9YCB8fCAnLycpfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHdhcyBwcmV2aW91c2x5IGEgcmV0dXJuIGJ1dCB3YXMgcmVtb3ZlZCBpbiBmYXZvclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgYmV0dGVyIGRlYWQgY29kZSBlbGltaW5hdGlvbiB3aXRoIHJlZ2VuZXJhdG9yIHJ1bnRpbWVcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpZE5hdmlnYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZGlkTmF2aWdhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCgpPT57fSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gbWFya2luZyByb3V0ZSBjaGFuZ2VzIGFzIGEgbmF2aWdhdGlvbiBzdGFydCBlbnRyeVxuICAgICAgICAgICAgaWYgKF91dGlscy5TVCkge1xuICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlLm1hcmsoJ3JvdXRlQ2hhbmdlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB7IHNoYWxsb3cgPWZhbHNlICwgc2Nyb2xsID10cnVlICB9ID0gb3B0aW9ucztcbiAgICAgICAgICAgIGNvbnN0IHJvdXRlUHJvcHMgPSB7XG4gICAgICAgICAgICAgICAgc2hhbGxvd1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChfdGhpcy5faW5GbGlnaHRSb3V0ZSAmJiBfdGhpcy5jbGMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzU3NyKSB7XG4gICAgICAgICAgICAgICAgICAgIFJvdXRlci5ldmVudHMuZW1pdCgncm91dGVDaGFuZ2VFcnJvcicsIGJ1aWxkQ2FuY2VsbGF0aW9uRXJyb3IoKSwgX3RoaXMuX2luRmxpZ2h0Um91dGUsIHJvdXRlUHJvcHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBfdGhpcy5jbGMoKTtcbiAgICAgICAgICAgICAgICBfdGhpcy5jbGMgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXMgPSAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aCgoMCwgX2FkZExvY2FsZSkuYWRkTG9jYWxlKCgwLCBfaGFzQmFzZVBhdGgpLmhhc0Jhc2VQYXRoKGFzKSA/ICgwLCBfcmVtb3ZlQmFzZVBhdGgpLnJlbW92ZUJhc2VQYXRoKGFzKSA6IGFzLCBvcHRpb25zLmxvY2FsZSwgX3RoaXMuZGVmYXVsdExvY2FsZSkpO1xuICAgICAgICAgICAgY29uc3QgY2xlYW5lZEFzID0gKDAsIF9yZW1vdmVMb2NhbGUpLnJlbW92ZUxvY2FsZSgoMCwgX2hhc0Jhc2VQYXRoKS5oYXNCYXNlUGF0aChhcykgPyAoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChhcykgOiBhcywgbmV4dFN0YXRlLmxvY2FsZSk7XG4gICAgICAgICAgICBfdGhpcy5faW5GbGlnaHRSb3V0ZSA9IGFzO1xuICAgICAgICAgICAgbGV0IGxvY2FsZUNoYW5nZSA9IHByZXZMb2NhbGUgIT09IG5leHRTdGF0ZS5sb2NhbGU7XG4gICAgICAgICAgICAvLyBJZiB0aGUgdXJsIGNoYW5nZSBpcyBvbmx5IHJlbGF0ZWQgdG8gYSBoYXNoIGNoYW5nZVxuICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBwcm9jZWVkLiBXZSBzaG91bGQgb25seSBjaGFuZ2UgdGhlIHN0YXRlLlxuICAgICAgICAgICAgaWYgKCFpc1F1ZXJ5VXBkYXRpbmcgJiYgX3RoaXMub25seUFIYXNoQ2hhbmdlKGNsZWFuZWRBcykgJiYgIWxvY2FsZUNoYW5nZSkge1xuICAgICAgICAgICAgICAgIG5leHRTdGF0ZS5hc1BhdGggPSBjbGVhbmVkQXM7XG4gICAgICAgICAgICAgICAgUm91dGVyLmV2ZW50cy5lbWl0KCdoYXNoQ2hhbmdlU3RhcnQnLCBhcywgcm91dGVQcm9wcyk7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogZG8gd2UgbmVlZCB0aGUgcmVzb2x2ZWQgaHJlZiB3aGVuIG9ubHkgYSBoYXNoIGNoYW5nZT9cbiAgICAgICAgICAgICAgICBfdGhpcy5jaGFuZ2VTdGF0ZShtZXRob2QsIHVybCwgYXMsIF9leHRlbmRzKHt9LCBvcHRpb25zLCB7XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbDogZmFsc2VcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgaWYgKHNjcm9sbCkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5zY3JvbGxUb0hhc2goY2xlYW5lZEFzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQgX3RoaXMuc2V0KG5leHRTdGF0ZSwgX3RoaXMuY29tcG9uZW50c1tuZXh0U3RhdGUucm91dGVdLCBudWxsKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCgwLCBfaXNFcnJvcikuZGVmYXVsdChlcnIpICYmIGVyci5jYW5jZWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFJvdXRlci5ldmVudHMuZW1pdCgncm91dGVDaGFuZ2VFcnJvcicsIGVyciwgY2xlYW5lZEFzLCByb3V0ZVByb3BzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFJvdXRlci5ldmVudHMuZW1pdCgnaGFzaENoYW5nZUNvbXBsZXRlJywgYXMsIHJvdXRlUHJvcHMpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHBhcnNlZCA9ICgwLCBfcGFyc2VSZWxhdGl2ZVVybCkucGFyc2VSZWxhdGl2ZVVybCh1cmwpO1xuICAgICAgICAgICAgbGV0IHsgcGF0aG5hbWUgLCBxdWVyeSAgfSA9IHBhcnNlZDtcbiAgICAgICAgICAgIC8vIFRoZSBidWlsZCBtYW5pZmVzdCBuZWVkcyB0byBiZSBsb2FkZWQgYmVmb3JlIGF1dG8tc3RhdGljIGR5bmFtaWMgcGFnZXNcbiAgICAgICAgICAgIC8vIGdldCB0aGVpciBxdWVyeSBwYXJhbWV0ZXJzIHRvIGFsbG93IGVuc3VyaW5nIHRoZXkgY2FuIGJlIHBhcnNlZCBwcm9wZXJseVxuICAgICAgICAgICAgLy8gd2hlbiByZXdyaXR0ZW4gdG9cbiAgICAgICAgICAgIGxldCBwYWdlcywgcmV3cml0ZXM7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIFtwYWdlcywgeyBfX3Jld3JpdGVzOiByZXdyaXRlcyAgfV0gPSB5aWVsZCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICAgICAgICAgIF90aGlzLnBhZ2VMb2FkZXIuZ2V0UGFnZUxpc3QoKSxcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9yb3V0ZUxvYWRlcikuZ2V0Q2xpZW50QnVpbGRNYW5pZmVzdCgpLFxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5wYWdlTG9hZGVyLmdldE1pZGRsZXdhcmVMaXN0KCksIFxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgd2UgZmFpbCB0byByZXNvbHZlIHRoZSBwYWdlIGxpc3Qgb3IgY2xpZW50LWJ1aWxkIG1hbmlmZXN0LCB3ZSBtdXN0XG4gICAgICAgICAgICAgICAgLy8gZG8gYSBzZXJ2ZXItc2lkZSB0cmFuc2l0aW9uOlxuICAgICAgICAgICAgICAgIGhhbmRsZUhhcmROYXZpZ2F0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBhcyxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElmIGFza2VkIHRvIGNoYW5nZSB0aGUgY3VycmVudCBVUkwgd2Ugc2hvdWxkIHJlbG9hZCB0aGUgY3VycmVudCBwYWdlXG4gICAgICAgICAgICAvLyAobm90IGxvY2F0aW9uLnJlbG9hZCgpIGJ1dCByZWxvYWQgZ2V0SW5pdGlhbFByb3BzIGFuZCBvdGhlciBOZXh0LmpzIHN0dWZmcylcbiAgICAgICAgICAgIC8vIFdlIGFsc28gbmVlZCB0byBzZXQgdGhlIG1ldGhvZCA9IHJlcGxhY2VTdGF0ZSBhbHdheXNcbiAgICAgICAgICAgIC8vIGFzIHRoaXMgc2hvdWxkIG5vdCBnbyBpbnRvIHRoZSBoaXN0b3J5IChUaGF0J3MgaG93IGJyb3dzZXJzIHdvcmspXG4gICAgICAgICAgICAvLyBXZSBzaG91bGQgY29tcGFyZSB0aGUgbmV3IGFzUGF0aCB0byB0aGUgY3VycmVudCBhc1BhdGgsIG5vdCB0aGUgdXJsXG4gICAgICAgICAgICBpZiAoIV90aGlzLnVybElzTmV3KGNsZWFuZWRBcykgJiYgIWxvY2FsZUNoYW5nZSkge1xuICAgICAgICAgICAgICAgIG1ldGhvZCA9ICdyZXBsYWNlU3RhdGUnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gd2UgbmVlZCB0byByZXNvbHZlIHRoZSBhcyB2YWx1ZSB1c2luZyByZXdyaXRlcyBmb3IgZHluYW1pYyBTU0dcbiAgICAgICAgICAgIC8vIHBhZ2VzIHRvIGFsbG93IGJ1aWxkaW5nIHRoZSBkYXRhIFVSTCBjb3JyZWN0bHlcbiAgICAgICAgICAgIGxldCByZXNvbHZlZEFzID0gYXM7XG4gICAgICAgICAgICAvLyB1cmwgYW5kIGFzIHNob3VsZCBhbHdheXMgYmUgcHJlZml4ZWQgd2l0aCBiYXNlUGF0aCBieSB0aGlzXG4gICAgICAgICAgICAvLyBwb2ludCBieSBlaXRoZXIgbmV4dC9saW5rIG9yIHJvdXRlci5wdXNoL3JlcGxhY2Ugc28gc3RyaXAgdGhlXG4gICAgICAgICAgICAvLyBiYXNlUGF0aCBmcm9tIHRoZSBwYXRobmFtZSB0byBtYXRjaCB0aGUgcGFnZXMgZGlyIDEtdG8tMVxuICAgICAgICAgICAgcGF0aG5hbWUgPSBwYXRobmFtZSA/ICgwLCBfcmVtb3ZlVHJhaWxpbmdTbGFzaCkucmVtb3ZlVHJhaWxpbmdTbGFzaCgoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChwYXRobmFtZSkpIDogcGF0aG5hbWU7XG4gICAgICAgICAgICAvLyB3ZSBkb24ndCBhdHRlbXB0IHJlc29sdmUgYXNQYXRoIHdoZW4gd2UgbmVlZCB0byBleGVjdXRlXG4gICAgICAgICAgICAvLyBtaWRkbGV3YXJlIGFzIHRoZSByZXNvbHZpbmcgd2lsbCBvY2N1ciBzZXJ2ZXItc2lkZVxuICAgICAgICAgICAgY29uc3QgaXNNaWRkbGV3YXJlTWF0Y2ggPSB5aWVsZCBtYXRjaGVzTWlkZGxld2FyZSh7XG4gICAgICAgICAgICAgICAgYXNQYXRoOiBhcyxcbiAgICAgICAgICAgICAgICBsb2NhbGU6IG5leHRTdGF0ZS5sb2NhbGUsXG4gICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zaGFsbG93ICYmIGlzTWlkZGxld2FyZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcGF0aG5hbWUgPSBfdGhpcy5wYXRobmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzaG91bGRSZXNvbHZlSHJlZiAmJiBwYXRobmFtZSAhPT0gJy9fZXJyb3InKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5fc2hvdWxkUmVzb2x2ZUhyZWYgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSEFTX1JFV1JJVEVTICYmIGFzLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXdyaXRlc1Jlc3VsdCA9ICgwLCBfcmVzb2x2ZVJld3JpdGVzKS5kZWZhdWx0KCgwLCBfYWRkQmFzZVBhdGgpLmFkZEJhc2VQYXRoKCgwLCBfYWRkTG9jYWxlKS5hZGRMb2NhbGUoY2xlYW5lZEFzLCBuZXh0U3RhdGUubG9jYWxlKSwgdHJ1ZSksIHBhZ2VzLCByZXdyaXRlcywgcXVlcnksIChwKT0+cmVzb2x2ZUR5bmFtaWNSb3V0ZShwLCBwYWdlcyksIF90aGlzLmxvY2FsZXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmV3cml0ZXNSZXN1bHQuZXh0ZXJuYWxEZXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXI6IF90aGlzXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNNaWRkbGV3YXJlTWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQXMgPSByZXdyaXRlc1Jlc3VsdC5hc1BhdGg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHJld3JpdGVzUmVzdWx0Lm1hdGNoZWRQYWdlICYmIHJld3JpdGVzUmVzdWx0LnJlc29sdmVkSHJlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhpcyBkaXJlY3RseSBtYXRjaGVzIGEgcGFnZSB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgaHJlZiB0b1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3cgdGhlIGNvcnJlY3QgcGFnZSBjaHVuayB0byBiZSBsb2FkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lID0gcmV3cml0ZXNSZXN1bHQucmVzb2x2ZWRIcmVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkLnBhdGhuYW1lID0gKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgocGF0aG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc01pZGRsZXdhcmVNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9ICgwLCBfZm9ybWF0VXJsKS5mb3JtYXRXaXRoVmFsaWRhdGlvbihwYXJzZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkLnBhdGhuYW1lID0gcmVzb2x2ZUR5bmFtaWNSb3V0ZShwYXRobmFtZSwgcGFnZXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VkLnBhdGhuYW1lICE9PSBwYXRobmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUgPSBwYXJzZWQucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWQucGF0aG5hbWUgPSAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aChwYXRobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTWlkZGxld2FyZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHBhcnNlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWlzTG9jYWxVUkwoYXMpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGhyZWY6IFwiJHt1cmx9XCIgYW5kIGFzOiBcIiR7YXN9XCIsIHJlY2VpdmVkIHJlbGF0aXZlIGhyZWYgYW5kIGV4dGVybmFsIGFzYCArIGBcXG5TZWUgbW9yZSBpbmZvOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9pbnZhbGlkLXJlbGF0aXZlLXVybC1leHRlcm5hbC1hc2ApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIHVybDogYXMsXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlcjogX3RoaXNcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlZEFzID0gKDAsIF9yZW1vdmVMb2NhbGUpLnJlbW92ZUxvY2FsZSgoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChyZXNvbHZlZEFzKSwgbmV4dFN0YXRlLmxvY2FsZSk7XG4gICAgICAgICAgICBsZXQgcm91dGUgPSAoMCwgX3JlbW92ZVRyYWlsaW5nU2xhc2gpLnJlbW92ZVRyYWlsaW5nU2xhc2gocGF0aG5hbWUpO1xuICAgICAgICAgICAgbGV0IHJvdXRlTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICgoMCwgX2lzRHluYW1pYykuaXNEeW5hbWljUm91dGUocm91dGUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkQXMgPSAoMCwgX3BhcnNlUmVsYXRpdmVVcmwpLnBhcnNlUmVsYXRpdmVVcmwocmVzb2x2ZWRBcyk7XG4gICAgICAgICAgICAgICAgY29uc3QgYXNQYXRobmFtZSA9IHBhcnNlZEFzLnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRlUmVnZXggPSAoMCwgX3JvdXRlUmVnZXgpLmdldFJvdXRlUmVnZXgocm91dGUpO1xuICAgICAgICAgICAgICAgIHJvdXRlTWF0Y2ggPSAoMCwgX3JvdXRlTWF0Y2hlcikuZ2V0Um91dGVNYXRjaGVyKHJvdXRlUmVnZXgpKGFzUGF0aG5hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNob3VsZEludGVycG9sYXRlID0gcm91dGUgPT09IGFzUGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgY29uc3QgaW50ZXJwb2xhdGVkQXMgPSBzaG91bGRJbnRlcnBvbGF0ZSA/IGludGVycG9sYXRlQXMocm91dGUsIGFzUGF0aG5hbWUsIHF1ZXJ5KSA6IHt9O1xuICAgICAgICAgICAgICAgIGlmICghcm91dGVNYXRjaCB8fCBzaG91bGRJbnRlcnBvbGF0ZSAmJiAhaW50ZXJwb2xhdGVkQXMucmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pc3NpbmdQYXJhbXMgPSBPYmplY3Qua2V5cyhyb3V0ZVJlZ2V4Lmdyb3VwcykuZmlsdGVyKChwYXJhbSk9PiFxdWVyeVtwYXJhbV0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWlzc2luZ1BhcmFtcy5sZW5ndGggPiAwICYmICFpc01pZGRsZXdhcmVNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYCR7c2hvdWxkSW50ZXJwb2xhdGUgPyBgSW50ZXJwb2xhdGluZyBocmVmYCA6IGBNaXNtYXRjaGluZyBcXGBhc1xcYCBhbmQgXFxgaHJlZlxcYGB9IGZhaWxlZCB0byBtYW51YWxseSBwcm92aWRlIGAgKyBgdGhlIHBhcmFtczogJHttaXNzaW5nUGFyYW1zLmpvaW4oJywgJyl9IGluIHRoZSBcXGBocmVmXFxgJ3MgXFxgcXVlcnlcXGBgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigoc2hvdWxkSW50ZXJwb2xhdGUgPyBgVGhlIHByb3ZpZGVkIFxcYGhyZWZcXGAgKCR7dXJsfSkgdmFsdWUgaXMgbWlzc2luZyBxdWVyeSB2YWx1ZXMgKCR7bWlzc2luZ1BhcmFtcy5qb2luKCcsICcpfSkgdG8gYmUgaW50ZXJwb2xhdGVkIHByb3Blcmx5LiBgIDogYFRoZSBwcm92aWRlZCBcXGBhc1xcYCB2YWx1ZSAoJHthc1BhdGhuYW1lfSkgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIFxcYGhyZWZcXGAgdmFsdWUgKCR7cm91dGV9KS4gYCkgKyBgUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy8ke3Nob3VsZEludGVycG9sYXRlID8gJ2hyZWYtaW50ZXJwb2xhdGlvbi1mYWlsZWQnIDogJ2luY29tcGF0aWJsZS1ocmVmLWFzJ31gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkSW50ZXJwb2xhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgYXMgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oT2JqZWN0LmFzc2lnbih7fSwgcGFyc2VkQXMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lOiBpbnRlcnBvbGF0ZWRBcy5yZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVyeTogb21pdChxdWVyeSwgaW50ZXJwb2xhdGVkQXMucGFyYW1zKVxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTWVyZ2UgcGFyYW1zIGludG8gYHF1ZXJ5YCwgb3ZlcndyaXRpbmcgYW55IHNwZWNpZmllZCBpbiBzZWFyY2hcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihxdWVyeSwgcm91dGVNYXRjaCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc1F1ZXJ5VXBkYXRpbmcpIHtcbiAgICAgICAgICAgICAgICBSb3V0ZXIuZXZlbnRzLmVtaXQoJ3JvdXRlQ2hhbmdlU3RhcnQnLCBhcywgcm91dGVQcm9wcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHZhciByZWYyLCByZWYzO1xuICAgICAgICAgICAgICAgIGxldCByb3V0ZUluZm8gPSB5aWVsZCBfdGhpcy5nZXRSb3V0ZUluZm8oe1xuICAgICAgICAgICAgICAgICAgICByb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICBhcyxcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRBcyxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVQcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBuZXh0U3RhdGUubG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICBpc1ByZXZpZXc6IG5leHRTdGF0ZS5pc1ByZXZpZXcsXG4gICAgICAgICAgICAgICAgICAgIGhhc01pZGRsZXdhcmU6IGlzTWlkZGxld2FyZU1hdGNoXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKCdyb3V0ZScgaW4gcm91dGVJbmZvICYmIGlzTWlkZGxld2FyZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lID0gcm91dGVJbmZvLnJvdXRlIHx8IHJvdXRlO1xuICAgICAgICAgICAgICAgICAgICByb3V0ZSA9IHBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICAgICBxdWVyeSA9IE9iamVjdC5hc3NpZ24oe30sIHJvdXRlSW5mby5xdWVyeSB8fCB7fSwgcXVlcnkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocm91dGVNYXRjaCAmJiBwYXRobmFtZSAhPT0gcGFyc2VkLnBhdGhuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhyb3V0ZU1hdGNoKS5mb3JFYWNoKChrZXkpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJvdXRlTWF0Y2ggJiYgcXVlcnlba2V5XSA9PT0gcm91dGVNYXRjaFtrZXldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBxdWVyeVtrZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICgoMCwgX2lzRHluYW1pYykuaXNEeW5hbWljUm91dGUocGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVmaXhlZEFzID0gcm91dGVJbmZvLnJlc29sdmVkQXMgfHwgKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgoKDAsIF9hZGRMb2NhbGUpLmFkZExvY2FsZShhcywgbmV4dFN0YXRlLmxvY2FsZSksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJld3JpdGVBcyA9IHByZWZpeGVkQXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKDAsIF9oYXNCYXNlUGF0aCkuaGFzQmFzZVBhdGgocmV3cml0ZUFzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld3JpdGVBcyA9ICgwLCBfcmVtb3ZlQmFzZVBhdGgpLnJlbW92ZUJhc2VQYXRoKHJld3JpdGVBcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsZVJlc3VsdCA9ICgwLCBfbm9ybWFsaXplTG9jYWxlUGF0aCkubm9ybWFsaXplTG9jYWxlUGF0aChyZXdyaXRlQXMsIF90aGlzLmxvY2FsZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRTdGF0ZS5sb2NhbGUgPSBsb2NhbGVSZXN1bHQuZGV0ZWN0ZWRMb2NhbGUgfHwgbmV4dFN0YXRlLmxvY2FsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXdyaXRlQXMgPSBsb2NhbGVSZXN1bHQucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByb3V0ZVJlZ2V4ID0gKDAsIF9yb3V0ZVJlZ2V4KS5nZXRSb3V0ZVJlZ2V4KHBhdGhuYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1clJvdXRlTWF0Y2ggPSAoMCwgX3JvdXRlTWF0Y2hlcikuZ2V0Um91dGVNYXRjaGVyKHJvdXRlUmVnZXgpKHJld3JpdGVBcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VyUm91dGVNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocXVlcnksIGN1clJvdXRlTWF0Y2gpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIElmIHRoZSByb3V0ZUluZm8gYnJpbmdzIGEgcmVkaXJlY3Qgd2Ugc2ltcGx5IGFwcGx5IGl0LlxuICAgICAgICAgICAgICAgIGlmICgndHlwZScgaW4gcm91dGVJbmZvKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyb3V0ZUluZm8udHlwZSA9PT0gJ3JlZGlyZWN0LWludGVybmFsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmNoYW5nZShtZXRob2QsIHJvdXRlSW5mby5uZXdVcmwsIHJvdXRlSW5mby5uZXdBcywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiByb3V0ZUluZm8uZGVzdGluYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKCk9Pnt9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgeyBlcnJvciAsIHByb3BzICwgX19OX1NTRyAsIF9fTl9TU1AgIH0gPSByb3V0ZUluZm87XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gcm91dGVJbmZvLkNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50ICYmIGNvbXBvbmVudC51bnN0YWJsZV9zY3JpcHRMb2FkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2NyaXB0cyA9IFtdLmNvbmNhdChjb21wb25lbnQudW5zdGFibGVfc2NyaXB0TG9hZGVyKCkpO1xuICAgICAgICAgICAgICAgICAgICBzY3JpcHRzLmZvckVhY2goKHNjcmlwdCk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfc2NyaXB0KS5oYW5kbGVDbGllbnRTY3JpcHRMb2FkKHNjcmlwdC5wcm9wcyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBoYW5kbGUgcmVkaXJlY3Qgb24gY2xpZW50LXRyYW5zaXRpb25cbiAgICAgICAgICAgICAgICBpZiAoKF9fTl9TU0cgfHwgX19OX1NTUCkgJiYgcHJvcHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BzLnBhZ2VQcm9wcyAmJiBwcm9wcy5wYWdlUHJvcHMuX19OX1JFRElSRUNUKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2UgdGhlIGRlc3RpbmF0aW9uIGZyb20gcmVkaXJlY3Qgd2l0aG91dCBhZGRpbmcgbG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmxvY2FsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVzdGluYXRpb24gPSBwcm9wcy5wYWdlUHJvcHMuX19OX1JFRElSRUNUO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgZGVzdGluYXRpb24gaXMgaW50ZXJuYWwgKHJlc29sdmVzIHRvIGEgcGFnZSkgYW5kIGF0dGVtcHRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsaWVudC1uYXZpZ2F0aW9uIGlmIGl0IGlzIGZhbGxpbmcgYmFjayB0byBoYXJkIG5hdmlnYXRpb24gaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0J3Mgbm90XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVzdGluYXRpb24uc3RhcnRzV2l0aCgnLycpICYmIHByb3BzLnBhZ2VQcm9wcy5fX05fUkVESVJFQ1RfQkFTRV9QQVRIICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZEhyZWYgPSAoMCwgX3BhcnNlUmVsYXRpdmVVcmwpLnBhcnNlUmVsYXRpdmVVcmwoZGVzdGluYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZEhyZWYucGF0aG5hbWUgPSByZXNvbHZlRHluYW1pY1JvdXRlKHBhcnNlZEhyZWYucGF0aG5hbWUsIHBhZ2VzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHVybDogbmV3VXJsICwgYXM6IG5ld0FzICB9ID0gcHJlcGFyZVVybEFzKF90aGlzLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5jaGFuZ2UobWV0aG9kLCBuZXdVcmwsIG5ld0FzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUhhcmROYXZpZ2F0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGRlc3RpbmF0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlcjogX3RoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCgpPT57fSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbmV4dFN0YXRlLmlzUHJldmlldyA9ICEhcHJvcHMuX19OX1BSRVZJRVc7XG4gICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBTU0cgZGF0YSA0MDRcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BzLm5vdEZvdW5kID09PSBTU0dfREFUQV9OT1RfRk9VTkQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub3RGb3VuZFJvdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBfdGhpcy5mZXRjaENvbXBvbmVudCgnLzQwNCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdEZvdW5kUm91dGUgPSAnLzQwNCc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChfKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90Rm91bmRSb3V0ZSA9ICcvX2Vycm9yJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlSW5mbyA9IHlpZWxkIF90aGlzLmdldFJvdXRlSW5mbyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGU6IG5vdEZvdW5kUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWU6IG5vdEZvdW5kUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRBcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZVByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWxsb3c6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IG5leHRTdGF0ZS5sb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmV2aWV3OiBuZXh0U3RhdGUuaXNQcmV2aWV3XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgndHlwZScgaW4gcm91dGVJbmZvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIG1pZGRsZXdhcmUgZWZmZWN0IG9uIC80MDRgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBSb3V0ZXIuZXZlbnRzLmVtaXQoJ2JlZm9yZUhpc3RvcnlDaGFuZ2UnLCBhcywgcm91dGVQcm9wcyk7XG4gICAgICAgICAgICAgICAgX3RoaXMuY2hhbmdlU3RhdGUobWV0aG9kLCB1cmwsIGFzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNRdWVyeVVwZGF0aW5nICYmIHBhdGhuYW1lID09PSAnL19lcnJvcicgJiYgKChyZWYyID0gc2VsZi5fX05FWFRfREFUQV9fLnByb3BzKSA9PSBudWxsID8gdm9pZCAwIDogKHJlZjMgPSByZWYyLnBhZ2VQcm9wcykgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZjMuc3RhdHVzQ29kZSkgPT09IDUwMCAmJiAocHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IHByb3BzLnBhZ2VQcm9wcykpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZW5zdXJlIHN0YXR1c0NvZGUgaXMgc3RpbGwgY29ycmVjdCBmb3Igc3RhdGljIDUwMCBwYWdlXG4gICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXBkYXRpbmcgcXVlcnkgaW5mb3JtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgcHJvcHMucGFnZVByb3BzLnN0YXR1c0NvZGUgPSA1MDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBfcm91dGU7XG4gICAgICAgICAgICAgICAgLy8gc2hhbGxvdyByb3V0aW5nIGlzIG9ubHkgYWxsb3dlZCBmb3Igc2FtZSBwYWdlIFVSTCBjaGFuZ2VzLlxuICAgICAgICAgICAgICAgIGNvbnN0IGlzVmFsaWRTaGFsbG93Um91dGUgPSBvcHRpb25zLnNoYWxsb3cgJiYgbmV4dFN0YXRlLnJvdXRlID09PSAoKF9yb3V0ZSA9IHJvdXRlSW5mby5yb3V0ZSkgIT0gbnVsbCA/IF9yb3V0ZSA6IHJvdXRlKTtcbiAgICAgICAgICAgICAgICB2YXIgX3Njcm9sbDtcbiAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRTY3JvbGwgPSAoX3Njcm9sbCA9IG9wdGlvbnMuc2Nyb2xsKSAhPSBudWxsID8gX3Njcm9sbCA6ICFpc1ZhbGlkU2hhbGxvd1JvdXRlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc2V0U2Nyb2xsID0gc2hvdWxkU2Nyb2xsID8ge1xuICAgICAgICAgICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgICAgICAgICB5OiAwXG4gICAgICAgICAgICAgICAgfSA6IG51bGw7XG4gICAgICAgICAgICAgICAgeWllbGQgX3RoaXMuc2V0KF9leHRlbmRzKHt9LCBuZXh0U3RhdGUsIHtcbiAgICAgICAgICAgICAgICAgICAgcm91dGUsXG4gICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lLFxuICAgICAgICAgICAgICAgICAgICBxdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgYXNQYXRoOiBjbGVhbmVkQXMsXG4gICAgICAgICAgICAgICAgICAgIGlzRmFsbGJhY2s6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSksIHJvdXRlSW5mbywgZm9yY2VkU2Nyb2xsICE9IG51bGwgPyBmb3JjZWRTY3JvbGwgOiByZXNldFNjcm9sbCkuY2F0Y2goKGUpPT57XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLmNhbmNlbGxlZCkgZXJyb3IgPSBlcnJvciB8fCBlO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNRdWVyeVVwZGF0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBSb3V0ZXIuZXZlbnRzLmVtaXQoJ3JvdXRlQ2hhbmdlRXJyb3InLCBlcnJvciwgY2xlYW5lZEFzLCByb3V0ZVByb3BzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9JMThOX1NVUFBPUlQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRTdGF0ZS5sb2NhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nID0gbmV4dFN0YXRlLmxvY2FsZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIWlzUXVlcnlVcGRhdGluZykge1xuICAgICAgICAgICAgICAgICAgICBSb3V0ZXIuZXZlbnRzLmVtaXQoJ3JvdXRlQ2hhbmdlQ29tcGxldGUnLCBhcywgcm91dGVQcm9wcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEEgaGFzaCBtYXJrICMgaXMgdGhlIG9wdGlvbmFsIGxhc3QgcGFydCBvZiBhIFVSTFxuICAgICAgICAgICAgICAgIGNvbnN0IGhhc2hSZWdleCA9IC8jLiskLztcbiAgICAgICAgICAgICAgICBpZiAoc2hvdWxkU2Nyb2xsICYmIGhhc2hSZWdleC50ZXN0KGFzKSkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5zY3JvbGxUb0hhc2goYXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycjEpIHtcbiAgICAgICAgICAgICAgICBpZiAoKDAsIF9pc0Vycm9yKS5kZWZhdWx0KGVycjEpICYmIGVycjEuY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkoKTtcbiAgICB9XG4gICAgY2hhbmdlU3RhdGUobWV0aG9kLCB1cmwsIGFzLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93Lmhpc3RvcnkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgV2FybmluZzogd2luZG93Lmhpc3RvcnkgaXMgbm90IGF2YWlsYWJsZS5gKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdy5oaXN0b3J5W21ldGhvZF0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgV2FybmluZzogd2luZG93Lmhpc3RvcnkuJHttZXRob2R9IGlzIG5vdCBhdmFpbGFibGVgKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1ldGhvZCAhPT0gJ3B1c2hTdGF0ZScgfHwgKDAsIF91dGlscykuZ2V0VVJMKCkgIT09IGFzKSB7XG4gICAgICAgICAgICB0aGlzLl9zaGFsbG93ID0gb3B0aW9ucy5zaGFsbG93O1xuICAgICAgICAgICAgd2luZG93Lmhpc3RvcnlbbWV0aG9kXSh7XG4gICAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgICAgIGFzLFxuICAgICAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICAgICAgX19OOiB0cnVlLFxuICAgICAgICAgICAgICAgIGtleTogdGhpcy5fa2V5ID0gbWV0aG9kICE9PSAncHVzaFN0YXRlJyA/IHRoaXMuX2tleSA6IGNyZWF0ZUtleSgpXG4gICAgICAgICAgICB9LCAvLyBNb3N0IGJyb3dzZXJzIGN1cnJlbnRseSBpZ25vcmVzIHRoaXMgcGFyYW1ldGVyLCBhbHRob3VnaCB0aGV5IG1heSB1c2UgaXQgaW4gdGhlIGZ1dHVyZS5cbiAgICAgICAgICAgIC8vIFBhc3NpbmcgdGhlIGVtcHR5IHN0cmluZyBoZXJlIHNob3VsZCBiZSBzYWZlIGFnYWluc3QgZnV0dXJlIGNoYW5nZXMgdG8gdGhlIG1ldGhvZC5cbiAgICAgICAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IaXN0b3J5L3JlcGxhY2VTdGF0ZVxuICAgICAgICAgICAgJycsIGFzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBoYW5kbGVSb3V0ZUluZm9FcnJvcihlcnIsIHBhdGhuYW1lLCBxdWVyeSwgYXMsIHJvdXRlUHJvcHMsIGxvYWRFcnJvckZhaWwpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKigpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgIGlmIChlcnIuY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICAgICAgLy8gYnViYmxlIHVwIGNhbmNlbGxhdGlvbiBlcnJvcnNcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKDAsIF9yb3V0ZUxvYWRlcikuaXNBc3NldEVycm9yKGVycikgfHwgbG9hZEVycm9yRmFpbCkge1xuICAgICAgICAgICAgICAgIFJvdXRlci5ldmVudHMuZW1pdCgncm91dGVDaGFuZ2VFcnJvcicsIGVyciwgYXMsIHJvdXRlUHJvcHMpO1xuICAgICAgICAgICAgICAgIC8vIElmIHdlIGNhbid0IGxvYWQgdGhlIHBhZ2UgaXQgY291bGQgYmUgb25lIG9mIGZvbGxvd2luZyByZWFzb25zXG4gICAgICAgICAgICAgICAgLy8gIDEuIFBhZ2UgZG9lc24ndCBleGlzdHNcbiAgICAgICAgICAgICAgICAvLyAgMi4gUGFnZSBkb2VzIGV4aXN0IGluIGEgZGlmZmVyZW50IHpvbmVcbiAgICAgICAgICAgICAgICAvLyAgMy4gSW50ZXJuYWwgZXJyb3Igd2hpbGUgbG9hZGluZyB0aGUgcGFnZVxuICAgICAgICAgICAgICAgIC8vIFNvLCBkb2luZyBhIGhhcmQgcmVsb2FkIGlzIHRoZSBwcm9wZXIgd2F5IHRvIGRlYWwgd2l0aCB0aGlzLlxuICAgICAgICAgICAgICAgIGhhbmRsZUhhcmROYXZpZ2F0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBhcyxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vIENoYW5naW5nIHRoZSBVUkwgZG9lc24ndCBibG9jayBleGVjdXRpbmcgdGhlIGN1cnJlbnQgY29kZSBwYXRoLlxuICAgICAgICAgICAgICAgIC8vIFNvIGxldCdzIHRocm93IGEgY2FuY2VsbGF0aW9uIGVycm9yIHN0b3AgdGhlIHJvdXRpbmcgbG9naWMuXG4gICAgICAgICAgICAgICAgdGhyb3cgYnVpbGRDYW5jZWxsYXRpb25FcnJvcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgQ29tcG9uZW50O1xuICAgICAgICAgICAgICAgIGxldCBzdHlsZVNoZWV0cztcbiAgICAgICAgICAgICAgICBsZXQgcHJvcHM7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBDb21wb25lbnQgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiBzdHlsZVNoZWV0cyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgKHsgcGFnZTogQ29tcG9uZW50ICwgc3R5bGVTaGVldHMgIH0gPSB5aWVsZCBfdGhpcy5mZXRjaENvbXBvbmVudCgnL19lcnJvcicpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgcm91dGVJbmZvID0ge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgICAgICBzdHlsZVNoZWV0cyxcbiAgICAgICAgICAgICAgICAgICAgZXJyLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAoIXJvdXRlSW5mby5wcm9wcykge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVJbmZvLnByb3BzID0geWllbGQgX3RoaXMuZ2V0SW5pdGlhbFByb3BzKENvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGdpcEVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gZXJyb3IgcGFnZSBgZ2V0SW5pdGlhbFByb3BzYDogJywgZ2lwRXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlSW5mby5wcm9wcyA9IHt9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByb3V0ZUluZm87XG4gICAgICAgICAgICB9IGNhdGNoIChyb3V0ZUluZm9FcnIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuaGFuZGxlUm91dGVJbmZvRXJyb3IoKDAsIF9pc0Vycm9yKS5kZWZhdWx0KHJvdXRlSW5mb0VycikgPyByb3V0ZUluZm9FcnIgOiBuZXcgRXJyb3Iocm91dGVJbmZvRXJyICsgJycpLCBwYXRobmFtZSwgcXVlcnksIGFzLCByb3V0ZVByb3BzLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkoKTtcbiAgICB9XG4gICAgZ2V0Um91dGVJbmZvKHsgcm91dGU6IHJlcXVlc3RlZFJvdXRlICwgcGF0aG5hbWUgLCBxdWVyeSAsIGFzICwgcmVzb2x2ZWRBcyAsIHJvdXRlUHJvcHMgLCBsb2NhbGUgLCBoYXNNaWRkbGV3YXJlICwgaXNQcmV2aWV3ICwgdW5zdGFibGVfc2tpcENsaWVudENhY2hlICB9KSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiooKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgKiBUaGlzIGByb3V0ZWAgYmluZGluZyBjYW4gY2hhbmdlIGlmIHRoZXJlJ3MgYSByZXdyaXRlXG4gICAgICogc28gd2Uga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYWwgcmVxdWVzdGVkIHJvdXRlXG4gICAgICogc28gd2UgY2FuIHN0b3JlIHRoZSBjYWNoZSBmb3IgaXQgYW5kIGF2b2lkIHJlLXJlcXVlc3RpbmcgZXZlcnkgdGltZVxuICAgICAqIGZvciBzaGFsbG93IHJvdXRpbmcgcHVycG9zZXMuXG4gICAgICovIGxldCByb3V0ZSA9IHJlcXVlc3RlZFJvdXRlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB2YXIgcmVmLCByZWY0LCByZWY1O1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZUNhbmNlbGxlZCA9IGdldENhbmNlbGxlZEhhbmRsZXIoe1xuICAgICAgICAgICAgICAgICAgICByb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGxldCBleGlzdGluZ0luZm8gPSBfdGhpcy5jb21wb25lbnRzW3JvdXRlXTtcbiAgICAgICAgICAgICAgICBpZiAocm91dGVQcm9wcy5zaGFsbG93ICYmIGV4aXN0aW5nSW5mbyAmJiBfdGhpcy5yb3V0ZSA9PT0gcm91dGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4aXN0aW5nSW5mbztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IGNhY2hlZFJvdXRlSW5mbyA9IGV4aXN0aW5nSW5mbyAmJiAhKCdpbml0aWFsJyBpbiBleGlzdGluZ0luZm8pICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAnZGV2ZWxvcG1lbnQnID8gZXhpc3RpbmdJbmZvIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZldGNoTmV4dERhdGFQYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFIcmVmOiBfdGhpcy5wYWdlTG9hZGVyLmdldERhdGFIcmVmKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY6ICgwLCBfZm9ybWF0VXJsKS5mb3JtYXRXaXRoVmFsaWRhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2tpcEludGVycG9sYXRpb246IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBhc1BhdGg6IHJlc29sdmVkQXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIGhhc01pZGRsZXdhcmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGlzU2VydmVyUmVuZGVyOiBfdGhpcy5pc1NzcixcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VKU09OOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBpbmZsaWdodENhY2hlOiBfdGhpcy5zZGMsXG4gICAgICAgICAgICAgICAgICAgIHBlcnNpc3RDYWNoZTogIWlzUHJldmlldyxcbiAgICAgICAgICAgICAgICAgICAgaXNQcmVmZXRjaDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHVuc3RhYmxlX3NraXBDbGllbnRDYWNoZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIHdpdGhNaWRkbGV3YXJlRWZmZWN0cyh7XG4gICAgICAgICAgICAgICAgICAgIGZldGNoRGF0YTogKCk9PmZldGNoTmV4dERhdGEoZmV0Y2hOZXh0RGF0YVBhcmFtcyksXG4gICAgICAgICAgICAgICAgICAgIGFzUGF0aDogcmVzb2x2ZWRBcyxcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBsb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlcjogX3RoaXNcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBoYW5kbGVDYW5jZWxsZWQoKTtcbiAgICAgICAgICAgICAgICBpZiAoKGRhdGEgPT0gbnVsbCA/IHZvaWQgMCA6IChyZWYgPSBkYXRhLmVmZmVjdCkgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZi50eXBlKSA9PT0gJ3JlZGlyZWN0LWludGVybmFsJyB8fCAoZGF0YSA9PSBudWxsID8gdm9pZCAwIDogKHJlZjQgPSBkYXRhLmVmZmVjdCkgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZjQudHlwZSkgPT09ICdyZWRpcmVjdC1leHRlcm5hbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEuZWZmZWN0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoKGRhdGEgPT0gbnVsbCA/IHZvaWQgMCA6IChyZWY1ID0gZGF0YS5lZmZlY3QpID09IG51bGwgPyB2b2lkIDAgOiByZWY1LnR5cGUpID09PSAncmV3cml0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgcm91dGUgPSAoMCwgX3JlbW92ZVRyYWlsaW5nU2xhc2gpLnJlbW92ZVRyYWlsaW5nU2xhc2goZGF0YS5lZmZlY3QucmVzb2x2ZWRIcmVmKTtcbiAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUgPSBkYXRhLmVmZmVjdC5yZXNvbHZlZEhyZWY7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5ID0gX2V4dGVuZHMoe30sIHF1ZXJ5LCBkYXRhLmVmZmVjdC5wYXJzZWRBcy5xdWVyeSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQXMgPSBkYXRhLmVmZmVjdC5wYXJzZWRBcy5wYXRobmFtZTtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgYWdhaW4gdGhlIGNhY2hlIHdpdGggdGhlIG5ldyBkZXN0aW5hdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdJbmZvID0gX3RoaXMuY29tcG9uZW50c1tyb3V0ZV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChyb3V0ZVByb3BzLnNoYWxsb3cgJiYgZXhpc3RpbmdJbmZvICYmIF90aGlzLnJvdXRlID09PSByb3V0ZSAmJiAhaGFzTWlkZGxld2FyZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIG1hdGNoIHdpdGggdGhlIGN1cnJlbnQgcm91dGUgZHVlIHRvIHJld3JpdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBjYW4gY29weSB0aGUgZXhpc3RpbmcgaW5mb3JtYXRpb24gdG8gdGhlIHJld3JpdHRlbiBvbmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGVuLCB3ZSByZXR1cm4gdGhlIGluZm9ybWF0aW9uIGFsb25nIHdpdGggdGhlIG1hdGNoZWQgcm91dGUuXG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5jb21wb25lbnRzW3JlcXVlc3RlZFJvdXRlXSA9IF9leHRlbmRzKHt9LCBleGlzdGluZ0luZm8sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2V4dGVuZHMoe30sIGV4aXN0aW5nSW5mbywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYWNoZWRSb3V0ZUluZm8gPSBleGlzdGluZ0luZm8gJiYgISgnaW5pdGlhbCcgaW4gZXhpc3RpbmdJbmZvKSAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50JyA/IGV4aXN0aW5nSW5mbyA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJvdXRlID09PSAnL2FwaScgfHwgcm91dGUuc3RhcnRzV2l0aCgnL2FwaS8nKSkge1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFzLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCgpPT57fSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRlSW5mbyA9IGNhY2hlZFJvdXRlSW5mbyB8fCAoeWllbGQgX3RoaXMuZmV0Y2hDb21wb25lbnQocm91dGUpLnRoZW4oKHJlcyk9Pih7XG4gICAgICAgICAgICAgICAgICAgICAgICBDb21wb25lbnQ6IHJlcy5wYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVTaGVldHM6IHJlcy5zdHlsZVNoZWV0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9fTl9TU0c6IHJlcy5tb2QuX19OX1NTRyxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9fTl9TU1A6IHJlcy5tb2QuX19OX1NTUCxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9fTl9SU0M6ICEhcmVzLm1vZC5fX25leHRfcnNjX19cbiAgICAgICAgICAgICAgICAgICAgfSkpKTtcbiAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGlzVmFsaWRFbGVtZW50VHlwZSAgfSA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9yZWFjdC1pcycpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRFbGVtZW50VHlwZShyb3V0ZUluZm8uQ29tcG9uZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZGVmYXVsdCBleHBvcnQgaXMgbm90IGEgUmVhY3QgQ29tcG9uZW50IGluIHBhZ2U6IFwiJHtwYXRobmFtZX1cImApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICogRm9yIHNlcnZlciBjb21wb25lbnRzLCBub24tU1NSIHBhZ2VzIHdpbGwgaGF2ZSBzdGF0aWNhbGx5IG9wdGltaXplZFxuICAgICAgICogZmxpZ2h0IGRhdGEgaW4gYSBwcm9kdWN0aW9uIGJ1aWxkLiBTbyBvbmx5IGRldmVsb3BtZW50IGFuZCBTU1IgcGFnZXNcbiAgICAgICAqIHdpbGwgYWx3YXlzIGhhdmUgdGhlIHJlYWwtdGltZSBnZW5lcmF0ZWQgYW5kIHN0cmVhbWVkIGZsaWdodCBkYXRhLlxuICAgICAgICovIGNvbnN0IHVzZVN0cmVhbWVkRmxpZ2h0RGF0YSA9IHJvdXRlSW5mby5fX05fUlNDICYmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nIHx8IHJvdXRlSW5mby5fX05fU1NQKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRGZXRjaERhdGEgPSByb3V0ZUluZm8uX19OX1NTRyB8fCByb3V0ZUluZm8uX19OX1NTUCB8fCByb3V0ZUluZm8uX19OX1JTQztcbiAgICAgICAgICAgICAgICBjb25zdCB7IHByb3BzICB9ID0geWllbGQgX3RoaXMuX2dldERhdGEoX2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkRmV0Y2hEYXRhICYmICF1c2VTdHJlYW1lZEZsaWdodERhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsganNvbiAgfSA9IGRhdGEgfHwgKHlpZWxkIGZldGNoTmV4dERhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFIcmVmOiBfdGhpcy5wYWdlTG9hZGVyLmdldERhdGFIcmVmKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZjogKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzUGF0aDogcmVzb2x2ZWRBcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTZXJ2ZXJSZW5kZXI6IF90aGlzLmlzU3NyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSlNPTjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZsaWdodENhY2hlOiBfdGhpcy5zZGMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc2lzdENhY2hlOiAhaXNQcmV2aWV3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUHJlZmV0Y2g6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc3RhYmxlX3NraXBDbGllbnRDYWNoZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wczoganNvblxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge30sXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogeWllbGQgX3RoaXMuZ2V0SW5pdGlhbFByb3BzKHJvdXRlSW5mby5Db21wb25lbnQsIC8vIHdlIHByb3ZpZGUgQXBwVHJlZSBsYXRlciBzbyB0aGlzIG5lZWRzIHRvIGJlIGBhbnlgXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNQYXRoOiBhcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlczogX3RoaXMubG9jYWxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TG9jYWxlOiBfdGhpcy5kZWZhdWx0TG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAvLyBPbmx5IGJ1c3QgdGhlIGRhdGEgY2FjaGUgZm9yIFNTUCByb3V0ZXMgYWx0aG91Z2hcbiAgICAgICAgICAgICAgICAvLyBtaWRkbGV3YXJlIGNhbiBza2lwIGNhY2hlIHBlciByZXF1ZXN0IHdpdGhcbiAgICAgICAgICAgICAgICAvLyB4LW1pZGRsZXdhcmUtY2FjaGU6IG5vLWNhY2hlIGFzIHdlbGxcbiAgICAgICAgICAgICAgICBpZiAocm91dGVJbmZvLl9fTl9TU1AgJiYgZmV0Y2hOZXh0RGF0YVBhcmFtcy5kYXRhSHJlZikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYWNoZUtleSA9IG5ldyBVUkwoZmV0Y2hOZXh0RGF0YVBhcmFtcy5kYXRhSHJlZiwgd2luZG93LmxvY2F0aW9uLmhyZWYpLmhyZWY7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBfdGhpcy5zZGNbY2FjaGVLZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyB3ZSBraWNrIG9mZiBhIEhFQUQgcmVxdWVzdCBpbiB0aGUgYmFja2dyb3VuZFxuICAgICAgICAgICAgICAgIC8vIHdoZW4gYSBub24tcHJlZmV0Y2ggcmVxdWVzdCBpcyBtYWRlIHRvIHNpZ25hbCByZXZhbGlkYXRpb25cbiAgICAgICAgICAgICAgICBpZiAoIV90aGlzLmlzUHJldmlldyAmJiByb3V0ZUluZm8uX19OX1NTRyAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgICAgICAgICBmZXRjaE5leHREYXRhKE9iamVjdC5hc3NpZ24oe30sIGZldGNoTmV4dERhdGFQYXJhbXMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQmFja2dyb3VuZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNpc3RDYWNoZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmZsaWdodENhY2hlOiBiYWNrZ3JvdW5kQ2FjaGVcbiAgICAgICAgICAgICAgICAgICAgfSkpLmNhdGNoKCgpPT57fSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBmbGlnaHRJbmZvO1xuICAgICAgICAgICAgICAgIGlmIChyb3V0ZUluZm8uX19OX1JTQykge1xuICAgICAgICAgICAgICAgICAgICBmbGlnaHRJbmZvID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgX19mbGlnaHRfXzogdXNlU3RyZWFtZWRGbGlnaHREYXRhID8gKHlpZWxkIF90aGlzLl9nZXREYXRhKCgpPT5fdGhpcy5fZ2V0RmxpZ2h0RGF0YSgoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeTogX2V4dGVuZHMoe30sIHF1ZXJ5LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2ZsaWdodF9fOiAnMSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lOiAoMCwgX2lzRHluYW1pYykuaXNEeW5hbWljUm91dGUocm91dGUpID8gaW50ZXJwb2xhdGVBcyhwYXRobmFtZSwgKDAsIF9wYXJzZVJlbGF0aXZlVXJsKS5wYXJzZVJlbGF0aXZlVXJsKHJlc29sdmVkQXMpLnBhdGhuYW1lLCBxdWVyeSkucmVzdWx0IDogcGF0aG5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpKS5kYXRhIDogcHJvcHMuX19mbGlnaHRfX1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwcm9wcy5wYWdlUHJvcHMgPSBPYmplY3QuYXNzaWduKHt9LCBwcm9wcy5wYWdlUHJvcHMsIGZsaWdodEluZm8pO1xuICAgICAgICAgICAgICAgIHJvdXRlSW5mby5wcm9wcyA9IHByb3BzO1xuICAgICAgICAgICAgICAgIHJvdXRlSW5mby5yb3V0ZSA9IHJvdXRlO1xuICAgICAgICAgICAgICAgIHJvdXRlSW5mby5xdWVyeSA9IHF1ZXJ5O1xuICAgICAgICAgICAgICAgIHJvdXRlSW5mby5yZXNvbHZlZEFzID0gcmVzb2x2ZWRBcztcbiAgICAgICAgICAgICAgICBfdGhpcy5jb21wb25lbnRzW3JvdXRlXSA9IHJvdXRlSW5mbztcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcm91dGUgd2FzIHJld3JpdHRlbiBpbiB0aGUgcHJvY2VzcyBvZiBmZXRjaGluZyBkYXRhLFxuICAgICAgICAgICAgICAgIC8vIHdlIHVwZGF0ZSB0aGUgY2FjaGUgdG8gYWxsb3cgaGl0dGluZyB0aGUgc2FtZSBkYXRhIGZvciBzaGFsbG93IHJlcXVlc3RzLlxuICAgICAgICAgICAgICAgIGlmIChyb3V0ZSAhPT0gcmVxdWVzdGVkUm91dGUpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuY29tcG9uZW50c1tyZXF1ZXN0ZWRSb3V0ZV0gPSBfZXh0ZW5kcyh7fSwgcm91dGVJbmZvLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3V0ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvdXRlSW5mbztcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5oYW5kbGVSb3V0ZUluZm9FcnJvcigoMCwgX2lzRXJyb3IpLmdldFByb3BlckVycm9yKGVyciksIHBhdGhuYW1lLCBxdWVyeSwgYXMsIHJvdXRlUHJvcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSgpO1xuICAgIH1cbiAgICBzZXQoc3RhdGUsIGRhdGEsIHJlc2V0U2Nyb2xsKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViKGRhdGEsIHRoaXMuY29tcG9uZW50c1snL19hcHAnXS5Db21wb25lbnQsIHJlc2V0U2Nyb2xsKTtcbiAgICB9XG4gICAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGV4ZWN1dGUgYmVmb3JlIHJlcGxhY2luZyByb3V0ZXIgc3RhdGVcbiAgICogQHBhcmFtIGNiIGNhbGxiYWNrIHRvIGJlIGV4ZWN1dGVkXG4gICAqLyBiZWZvcmVQb3BTdGF0ZShjYikge1xuICAgICAgICB0aGlzLl9icHMgPSBjYjtcbiAgICB9XG4gICAgb25seUFIYXNoQ2hhbmdlKGFzKSB7XG4gICAgICAgIGlmICghdGhpcy5hc1BhdGgpIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgW29sZFVybE5vSGFzaCwgb2xkSGFzaF0gPSB0aGlzLmFzUGF0aC5zcGxpdCgnIycpO1xuICAgICAgICBjb25zdCBbbmV3VXJsTm9IYXNoLCBuZXdIYXNoXSA9IGFzLnNwbGl0KCcjJyk7XG4gICAgICAgIC8vIE1ha2VzIHN1cmUgd2Ugc2Nyb2xsIHRvIHRoZSBwcm92aWRlZCBoYXNoIGlmIHRoZSB1cmwvaGFzaCBhcmUgdGhlIHNhbWVcbiAgICAgICAgaWYgKG5ld0hhc2ggJiYgb2xkVXJsTm9IYXNoID09PSBuZXdVcmxOb0hhc2ggJiYgb2xkSGFzaCA9PT0gbmV3SGFzaCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgdGhlIHVybHMgYXJlIGNoYW5nZSwgdGhlcmUncyBtb3JlIHRoYW4gYSBoYXNoIGNoYW5nZVxuICAgICAgICBpZiAob2xkVXJsTm9IYXNoICE9PSBuZXdVcmxOb0hhc2gpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB0aGUgaGFzaCBoYXMgY2hhbmdlZCwgdGhlbiBpdCdzIGEgaGFzaCBvbmx5IGNoYW5nZS5cbiAgICAgICAgLy8gVGhpcyBjaGVjayBpcyBuZWNlc3NhcnkgdG8gaGFuZGxlIGJvdGggdGhlIGVudGVyIGFuZFxuICAgICAgICAvLyBsZWF2ZSBoYXNoID09PSAnJyBjYXNlcy4gVGhlIGlkZW50aXR5IGNhc2UgZmFsbHMgdGhyb3VnaFxuICAgICAgICAvLyBhbmQgaXMgdHJlYXRlZCBhcyBhIG5leHQgcmVsb2FkLlxuICAgICAgICByZXR1cm4gb2xkSGFzaCAhPT0gbmV3SGFzaDtcbiAgICB9XG4gICAgc2Nyb2xsVG9IYXNoKGFzKSB7XG4gICAgICAgIGNvbnN0IFssIGhhc2ggPSAnJ10gPSBhcy5zcGxpdCgnIycpO1xuICAgICAgICAvLyBTY3JvbGwgdG8gdG9wIGlmIHRoZSBoYXNoIGlzIGp1c3QgYCNgIHdpdGggbm8gdmFsdWUgb3IgYCN0b3BgXG4gICAgICAgIC8vIFRvIG1pcnJvciBicm93c2Vyc1xuICAgICAgICBpZiAoaGFzaCA9PT0gJycgfHwgaGFzaCA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBEZWNvZGUgaGFzaCB0byBtYWtlIG5vbi1sYXRpbiBhbmNob3Igd29ya3MuXG4gICAgICAgIGNvbnN0IHJhd0hhc2ggPSBkZWNvZGVVUklDb21wb25lbnQoaGFzaCk7XG4gICAgICAgIC8vIEZpcnN0IHdlIGNoZWNrIGlmIHRoZSBlbGVtZW50IGJ5IGlkIGlzIGZvdW5kXG4gICAgICAgIGNvbnN0IGlkRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChyYXdIYXNoKTtcbiAgICAgICAgaWYgKGlkRWwpIHtcbiAgICAgICAgICAgIGlkRWwuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB0aGVyZSdzIG5vIGVsZW1lbnQgd2l0aCB0aGUgaWQsIHdlIGNoZWNrIHRoZSBgbmFtZWAgcHJvcGVydHlcbiAgICAgICAgLy8gVG8gbWlycm9yIGJyb3dzZXJzXG4gICAgICAgIGNvbnN0IG5hbWVFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKHJhd0hhc2gpWzBdO1xuICAgICAgICBpZiAobmFtZUVsKSB7XG4gICAgICAgICAgICBuYW1lRWwuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB1cmxJc05ldyhhc1BhdGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXNQYXRoICE9PSBhc1BhdGg7XG4gICAgfVxuICAgIC8qKlxuICAgKiBQcmVmZXRjaCBwYWdlIGNvZGUsIHlvdSBtYXkgd2FpdCBmb3IgdGhlIGRhdGEgZHVyaW5nIHBhZ2UgcmVuZGVyaW5nLlxuICAgKiBUaGlzIGZlYXR1cmUgb25seSB3b3JrcyBpbiBwcm9kdWN0aW9uIVxuICAgKiBAcGFyYW0gdXJsIHRoZSBocmVmIG9mIHByZWZldGNoZWQgcGFnZVxuICAgKiBAcGFyYW0gYXNQYXRoIHRoZSBhcyBwYXRoIG9mIHRoZSBwcmVmZXRjaGVkIHBhZ2VcbiAgICovIHByZWZldGNoKHVybCwgYXNQYXRoID0gdXJsLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKigpIHtcbiAgICAgICAgICAgIGxldCBwYXJzZWQgPSAoMCwgX3BhcnNlUmVsYXRpdmVVcmwpLnBhcnNlUmVsYXRpdmVVcmwodXJsKTtcbiAgICAgICAgICAgIGxldCB7IHBhdGhuYW1lICwgcXVlcnkgIH0gPSBwYXJzZWQ7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmxvY2FsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUgPSAoMCwgX25vcm1hbGl6ZUxvY2FsZVBhdGgpLm5vcm1hbGl6ZUxvY2FsZVBhdGgocGF0aG5hbWUsIF90aGlzLmxvY2FsZXMpLnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICAgICBwYXJzZWQucGF0aG5hbWUgPSBwYXRobmFtZTtcbiAgICAgICAgICAgICAgICAgICAgdXJsID0gKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHBhcnNlZCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJzZWRBcyA9ICgwLCBfcGFyc2VSZWxhdGl2ZVVybCkucGFyc2VSZWxhdGl2ZVVybChhc1BhdGgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGVQYXRoUmVzdWx0ID0gKDAsIF9ub3JtYWxpemVMb2NhbGVQYXRoKS5ub3JtYWxpemVMb2NhbGVQYXRoKHBhcnNlZEFzLnBhdGhuYW1lLCBfdGhpcy5sb2NhbGVzKTtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkQXMucGF0aG5hbWUgPSBsb2NhbGVQYXRoUmVzdWx0LnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmxvY2FsZSA9IGxvY2FsZVBhdGhSZXN1bHQuZGV0ZWN0ZWRMb2NhbGUgfHwgX3RoaXMuZGVmYXVsdExvY2FsZTtcbiAgICAgICAgICAgICAgICAgICAgYXNQYXRoID0gKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHBhcnNlZEFzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwYWdlcyA9IHlpZWxkIF90aGlzLnBhZ2VMb2FkZXIuZ2V0UGFnZUxpc3QoKTtcbiAgICAgICAgICAgIGxldCByZXNvbHZlZEFzID0gYXNQYXRoO1xuICAgICAgICAgICAgY29uc3QgbG9jYWxlID0gdHlwZW9mIG9wdGlvbnMubG9jYWxlICE9PSAndW5kZWZpbmVkJyA/IG9wdGlvbnMubG9jYWxlIHx8IHVuZGVmaW5lZCA6IF90aGlzLmxvY2FsZTtcbiAgICAgICAgICAgIGNvbnN0IGlzTWlkZGxld2FyZU1hdGNoID0geWllbGQgbWF0Y2hlc01pZGRsZXdhcmUoe1xuICAgICAgICAgICAgICAgIGFzUGF0aDogYXNQYXRoLFxuICAgICAgICAgICAgICAgIGxvY2FsZTogbG9jYWxlLFxuICAgICAgICAgICAgICAgIHJvdXRlcjogX3RoaXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9IQVNfUkVXUklURVMgJiYgYXNQYXRoLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICAgICAgICAgIGxldCByZXdyaXRlcztcbiAgICAgICAgICAgICAgICAoeyBfX3Jld3JpdGVzOiByZXdyaXRlcyAgfSA9IHlpZWxkICgwLCBfcm91dGVMb2FkZXIpLmdldENsaWVudEJ1aWxkTWFuaWZlc3QoKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmV3cml0ZXNSZXN1bHQgPSAoMCwgX3Jlc29sdmVSZXdyaXRlcykuZGVmYXVsdCgoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aCgoMCwgX2FkZExvY2FsZSkuYWRkTG9jYWxlKGFzUGF0aCwgX3RoaXMubG9jYWxlKSwgdHJ1ZSksIHBhZ2VzLCByZXdyaXRlcywgcGFyc2VkLnF1ZXJ5LCAocCk9PnJlc29sdmVEeW5hbWljUm91dGUocCwgcGFnZXMpLCBfdGhpcy5sb2NhbGVzKTtcbiAgICAgICAgICAgICAgICBpZiAocmV3cml0ZXNSZXN1bHQuZXh0ZXJuYWxEZXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzb2x2ZWRBcyA9ICgwLCBfcmVtb3ZlTG9jYWxlKS5yZW1vdmVMb2NhbGUoKDAsIF9yZW1vdmVCYXNlUGF0aCkucmVtb3ZlQmFzZVBhdGgocmV3cml0ZXNSZXN1bHQuYXNQYXRoKSwgX3RoaXMubG9jYWxlKTtcbiAgICAgICAgICAgICAgICBpZiAocmV3cml0ZXNSZXN1bHQubWF0Y2hlZFBhZ2UgJiYgcmV3cml0ZXNSZXN1bHQucmVzb2x2ZWRIcmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoaXMgZGlyZWN0bHkgbWF0Y2hlcyBhIHBhZ2Ugd2UgbmVlZCB0byB1cGRhdGUgdGhlIGhyZWYgdG9cbiAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3cgdGhlIGNvcnJlY3QgcGFnZSBjaHVuayB0byBiZSBsb2FkZWRcbiAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUgPSByZXdyaXRlc1Jlc3VsdC5yZXNvbHZlZEhyZWY7XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZC5wYXRobmFtZSA9IHBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTWlkZGxld2FyZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24ocGFyc2VkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcnNlZC5wYXRobmFtZSA9IHJlc29sdmVEeW5hbWljUm91dGUocGFyc2VkLnBhdGhuYW1lLCBwYWdlcyk7XG4gICAgICAgICAgICBpZiAoKDAsIF9pc0R5bmFtaWMpLmlzRHluYW1pY1JvdXRlKHBhcnNlZC5wYXRobmFtZSkpIHtcbiAgICAgICAgICAgICAgICBwYXRobmFtZSA9IHBhcnNlZC5wYXRobmFtZTtcbiAgICAgICAgICAgICAgICBwYXJzZWQucGF0aG5hbWUgPSBwYXRobmFtZTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHF1ZXJ5LCAoMCwgX3JvdXRlTWF0Y2hlcikuZ2V0Um91dGVNYXRjaGVyKCgwLCBfcm91dGVSZWdleCkuZ2V0Um91dGVSZWdleChwYXJzZWQucGF0aG5hbWUpKSgoMCwgX3BhcnNlUGF0aCkucGFyc2VQYXRoKGFzUGF0aCkucGF0aG5hbWUpIHx8IHt9KTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzTWlkZGxld2FyZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHVybCA9ICgwLCBfZm9ybWF0VXJsKS5mb3JtYXRXaXRoVmFsaWRhdGlvbihwYXJzZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFByZWZldGNoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gZGV2ZWxvcG1lbnQgbW9kZSBiZWNhdXNlIGl0IHdvdWxkIHRyaWdnZXIgb24tZGVtYW5kLWVudHJpZXNcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVE9ETzogaWYgdGhlIHJvdXRlIG1pZGRsZXdhcmUncyBkYXRhIHJlcXVlc3RcbiAgICAgICAgICAgIC8vIHJlc29sdmVzIHRvIGlzIG5vdCBhbiBTU0cgcm91dGUgd2Ugc2hvdWxkIGJ1c3QgdGhlIGNhY2hlXG4gICAgICAgICAgICAvLyBidXQgd2Ugc2hvdWxkbid0IGFsbG93IHByZWZldGNoIHRvIGtlZXAgdHJpZ2dlcmluZ1xuICAgICAgICAgICAgLy8gcmVxdWVzdHMgZm9yIFNTUCBwYWdlc1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIHdpdGhNaWRkbGV3YXJlRWZmZWN0cyh7XG4gICAgICAgICAgICAgICAgZmV0Y2hEYXRhOiAoKT0+ZmV0Y2hOZXh0RGF0YSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhSHJlZjogX3RoaXMucGFnZUxvYWRlci5nZXREYXRhSHJlZih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZjogKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcEludGVycG9sYXRpb246IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNQYXRoOiByZXNvbHZlZEFzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNNaWRkbGV3YXJlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNTZXJ2ZXJSZW5kZXI6IF90aGlzLmlzU3NyLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VKU09OOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5mbGlnaHRDYWNoZTogX3RoaXMuc2RjLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGVyc2lzdENhY2hlOiAhX3RoaXMuaXNQcmV2aWV3LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmVmZXRjaDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBhc1BhdGg6IGFzUGF0aCxcbiAgICAgICAgICAgICAgICBsb2NhbGU6IGxvY2FsZSxcbiAgICAgICAgICAgICAgICByb3V0ZXI6IF90aGlzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8qKlxuICAgICAqIElmIHRoZXJlIHdhcyBhIHJld3JpdGUgd2UgYXBwbHkgdGhlIGVmZmVjdHMgb2YgdGhlIHJld3JpdGUgb24gdGhlXG4gICAgICogY3VycmVudCBwYXJhbWV0ZXJzIGZvciB0aGUgcHJlZmV0Y2guXG4gICAgICovIGlmICgoZGF0YSA9PSBudWxsID8gdm9pZCAwIDogZGF0YS5lZmZlY3QudHlwZSkgPT09ICdyZXdyaXRlJykge1xuICAgICAgICAgICAgICAgIHBhcnNlZC5wYXRobmFtZSA9IGRhdGEuZWZmZWN0LnJlc29sdmVkSHJlZjtcbiAgICAgICAgICAgICAgICBwYXRobmFtZSA9IGRhdGEuZWZmZWN0LnJlc29sdmVkSHJlZjtcbiAgICAgICAgICAgICAgICBxdWVyeSA9IF9leHRlbmRzKHt9LCBxdWVyeSwgZGF0YS5lZmZlY3QucGFyc2VkQXMucXVlcnkpO1xuICAgICAgICAgICAgICAgIHJlc29sdmVkQXMgPSBkYXRhLmVmZmVjdC5wYXJzZWRBcy5wYXRobmFtZTtcbiAgICAgICAgICAgICAgICB1cmwgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24ocGFyc2VkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qKlxuICAgICAqIElmIHRoZXJlIGlzIGEgcmVkaXJlY3QgdG8gYW4gZXh0ZXJuYWwgZGVzdGluYXRpb24gdGhlbiB3ZSBkb24ndCBoYXZlXG4gICAgICogdG8gcHJlZmV0Y2ggY29udGVudCBhcyBpdCB3aWxsIGJlIHVudXNlZC5cbiAgICAgKi8gaWYgKChkYXRhID09IG51bGwgPyB2b2lkIDAgOiBkYXRhLmVmZmVjdC50eXBlKSA9PT0gJ3JlZGlyZWN0LWV4dGVybmFsJykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJvdXRlID0gKDAsIF9yZW1vdmVUcmFpbGluZ1NsYXNoKS5yZW1vdmVUcmFpbGluZ1NsYXNoKHBhdGhuYW1lKTtcbiAgICAgICAgICAgIHlpZWxkIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICBfdGhpcy5wYWdlTG9hZGVyLl9pc1NzZyhyb3V0ZSkudGhlbigoaXNTc2cpPT57XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpc1NzZyA/IGZldGNoTmV4dERhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUhyZWY6IChkYXRhID09IG51bGwgPyB2b2lkIDAgOiBkYXRhLmRhdGFIcmVmKSB8fCBfdGhpcy5wYWdlTG9hZGVyLmdldERhdGFIcmVmKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmOiB1cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNQYXRoOiByZXNvbHZlZEFzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZTogbG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VydmVyUmVuZGVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSlNPTjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZmxpZ2h0Q2FjaGU6IF90aGlzLnNkYyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNpc3RDYWNoZTogIV90aGlzLmlzUHJldmlldyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUHJlZmV0Y2g6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB1bnN0YWJsZV9za2lwQ2xpZW50Q2FjaGU6IG9wdGlvbnMudW5zdGFibGVfc2tpcENsaWVudENhY2hlIHx8IG9wdGlvbnMucHJpb3JpdHlcbiAgICAgICAgICAgICAgICAgICAgfSkudGhlbigoKT0+ZmFsc2UpIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgX3RoaXMucGFnZUxvYWRlcltvcHRpb25zLnByaW9yaXR5ID8gJ2xvYWRQYWdlJyA6ICdwcmVmZXRjaCddKHJvdXRlKSwgXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfSkoKTtcbiAgICB9XG4gICAgZmV0Y2hDb21wb25lbnQocm91dGUpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKigpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZUNhbmNlbGxlZCA9IGdldENhbmNlbGxlZEhhbmRsZXIoe1xuICAgICAgICAgICAgICAgIHJvdXRlLFxuICAgICAgICAgICAgICAgIHJvdXRlcjogX3RoaXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZXN1bHQgPSB5aWVsZCBfdGhpcy5wYWdlTG9hZGVyLmxvYWRQYWdlKHJvdXRlKTtcbiAgICAgICAgICAgICAgICBoYW5kbGVDYW5jZWxsZWQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9uZW50UmVzdWx0O1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlQ2FuY2VsbGVkKCk7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSgpO1xuICAgIH1cbiAgICBfZ2V0RGF0YShmbikge1xuICAgICAgICBsZXQgY2FuY2VsbGVkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGNhbmNlbCA9ICgpPT57XG4gICAgICAgICAgICBjYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNsYyA9IGNhbmNlbDtcbiAgICAgICAgcmV0dXJuIGZuKCkudGhlbigoZGF0YSk9PntcbiAgICAgICAgICAgIGlmIChjYW5jZWwgPT09IHRoaXMuY2xjKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGMgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNhbmNlbGxlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcignTG9hZGluZyBpbml0aWFsIHByb3BzIGNhbmNlbGxlZCcpO1xuICAgICAgICAgICAgICAgIGVyci5jYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX2dldEZsaWdodERhdGEoZGF0YUhyZWYpIHtcbiAgICAgICAgLy8gRG8gbm90IGNhY2hlIFJTQyBmbGlnaHQgcmVzcG9uc2Ugc2luY2UgaXQncyBub3QgYSBzdGF0aWMgcmVzb3VyY2VcbiAgICAgICAgcmV0dXJuIGZldGNoTmV4dERhdGEoe1xuICAgICAgICAgICAgZGF0YUhyZWYsXG4gICAgICAgICAgICBpc1NlcnZlclJlbmRlcjogdHJ1ZSxcbiAgICAgICAgICAgIHBhcnNlSlNPTjogZmFsc2UsXG4gICAgICAgICAgICBpbmZsaWdodENhY2hlOiB0aGlzLnNkYyxcbiAgICAgICAgICAgIHBlcnNpc3RDYWNoZTogZmFsc2UsXG4gICAgICAgICAgICBpc1ByZWZldGNoOiBmYWxzZVxuICAgICAgICB9KS50aGVuKCh7IHRleHQgIH0pPT4oe1xuICAgICAgICAgICAgICAgIGRhdGE6IHRleHRcbiAgICAgICAgICAgIH0pKTtcbiAgICB9XG4gICAgZ2V0SW5pdGlhbFByb3BzKENvbXBvbmVudCwgY3R4KSB7XG4gICAgICAgIGNvbnN0IHsgQ29tcG9uZW50OiBBcHAgIH0gPSB0aGlzLmNvbXBvbmVudHNbJy9fYXBwJ107XG4gICAgICAgIGNvbnN0IEFwcFRyZWUgPSB0aGlzLl93cmFwQXBwKEFwcCk7XG4gICAgICAgIGN0eC5BcHBUcmVlID0gQXBwVHJlZTtcbiAgICAgICAgcmV0dXJuICgwLCBfdXRpbHMpLmxvYWRHZXRJbml0aWFsUHJvcHMoQXBwLCB7XG4gICAgICAgICAgICBBcHBUcmVlLFxuICAgICAgICAgICAgQ29tcG9uZW50LFxuICAgICAgICAgICAgcm91dGVyOiB0aGlzLFxuICAgICAgICAgICAgY3R4XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXQgcm91dGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLnJvdXRlO1xuICAgIH1cbiAgICBnZXQgcGF0aG5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLnBhdGhuYW1lO1xuICAgIH1cbiAgICBnZXQgcXVlcnkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLnF1ZXJ5O1xuICAgIH1cbiAgICBnZXQgYXNQYXRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5hc1BhdGg7XG4gICAgfVxuICAgIGdldCBsb2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLmxvY2FsZTtcbiAgICB9XG4gICAgZ2V0IGlzRmFsbGJhY2soKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLmlzRmFsbGJhY2s7XG4gICAgfVxuICAgIGdldCBpc1ByZXZpZXcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLmlzUHJldmlldztcbiAgICB9XG4gICAgY29uc3RydWN0b3IocGF0aG5hbWUxLCBxdWVyeTEsIGFzMSwgeyBpbml0aWFsUHJvcHMgLCBwYWdlTG9hZGVyICwgQXBwICwgd3JhcEFwcCAsIENvbXBvbmVudCAsIGVyciAsIHN1YnNjcmlwdGlvbiAsIGlzRmFsbGJhY2sgLCBsb2NhbGUgLCBsb2NhbGVzICwgZGVmYXVsdExvY2FsZSAsIGRvbWFpbkxvY2FsZXMgLCBpc1ByZXZpZXcgLCBpc1JzYyAgfSl7XG4gICAgICAgIC8vIFNlcnZlciBEYXRhIENhY2hlXG4gICAgICAgIHRoaXMuc2RjID0ge307XG4gICAgICAgIHRoaXMuaXNGaXJzdFBvcFN0YXRlRXZlbnQgPSB0cnVlO1xuICAgICAgICB0aGlzLl9rZXkgPSBjcmVhdGVLZXkoKTtcbiAgICAgICAgdGhpcy5vblBvcFN0YXRlID0gKGUpPT57XG4gICAgICAgICAgICBjb25zdCB7IGlzRmlyc3RQb3BTdGF0ZUV2ZW50ICB9ID0gdGhpcztcbiAgICAgICAgICAgIHRoaXMuaXNGaXJzdFBvcFN0YXRlRXZlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gZS5zdGF0ZTtcbiAgICAgICAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgICAgICAgICAvLyBXZSBnZXQgc3RhdGUgYXMgdW5kZWZpbmVkIGZvciB0d28gcmVhc29ucy5cbiAgICAgICAgICAgICAgICAvLyAgMS4gV2l0aCBvbGRlciBzYWZhcmkgKDwgOCkgYW5kIG9sZGVyIGNocm9tZSAoPCAzNClcbiAgICAgICAgICAgICAgICAvLyAgMi4gV2hlbiB0aGUgVVJMIGNoYW5nZWQgd2l0aCAjXG4gICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAvLyBJbiB0aGUgYm90aCBjYXNlcywgd2UgZG9uJ3QgbmVlZCB0byBwcm9jZWVkIGFuZCBjaGFuZ2UgdGhlIHJvdXRlLlxuICAgICAgICAgICAgICAgIC8vIChhcyBpdCdzIGFscmVhZHkgY2hhbmdlZClcbiAgICAgICAgICAgICAgICAvLyBCdXQgd2UgY2FuIHNpbXBseSByZXBsYWNlIHRoZSBzdGF0ZSB3aXRoIHRoZSBuZXcgY2hhbmdlcy5cbiAgICAgICAgICAgICAgICAvLyBBY3R1YWxseSwgZm9yICgxKSB3ZSBkb24ndCBuZWVkIHRvIG5vdGhpbmcuIEJ1dCBpdCdzIGhhcmQgdG8gZGV0ZWN0IHRoYXQgZXZlbnQuXG4gICAgICAgICAgICAgICAgLy8gU28sIGRvaW5nIHRoZSBmb2xsb3dpbmcgZm9yICgxKSBkb2VzIG5vIGhhcm0uXG4gICAgICAgICAgICAgICAgY29uc3QgeyBwYXRobmFtZSAsIHF1ZXJ5ICB9ID0gdGhpcztcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVN0YXRlKCdyZXBsYWNlU3RhdGUnLCAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICBwYXRobmFtZTogKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgocGF0aG5hbWUpLFxuICAgICAgICAgICAgICAgICAgICBxdWVyeVxuICAgICAgICAgICAgICAgIH0pLCAoMCwgX3V0aWxzKS5nZXRVUkwoKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gX19OQSBpcyB1c2VkIHRvIGlkZW50aWZ5IGlmIHRoZSBoaXN0b3J5IGVudHJ5IGNhbiBiZSBoYW5kbGVkIGJ5IHRoZSBhcHAtcm91dGVyLlxuICAgICAgICAgICAgaWYgKHN0YXRlLl9fTkEpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFzdGF0ZS5fX04pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBTYWZhcmkgZmlyZXMgcG9wc3RhdGVldmVudCB3aGVuIHJlb3BlbmluZyB0aGUgYnJvd3Nlci5cbiAgICAgICAgICAgIGlmIChpc0ZpcnN0UG9wU3RhdGVFdmVudCAmJiB0aGlzLmxvY2FsZSA9PT0gc3RhdGUub3B0aW9ucy5sb2NhbGUgJiYgc3RhdGUuYXMgPT09IHRoaXMuYXNQYXRoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGZvcmNlZFNjcm9sbDtcbiAgICAgICAgICAgIGNvbnN0IHsgdXJsICwgYXMgLCBvcHRpb25zICwga2V5ICB9ID0gc3RhdGU7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1NDUk9MTF9SRVNUT1JBVElPTikge1xuICAgICAgICAgICAgICAgIGlmIChtYW51YWxTY3JvbGxSZXN0b3JhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fa2V5ICE9PSBrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNuYXBzaG90IGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uOlxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdfX25leHRfc2Nyb2xsXycgKyB0aGlzLl9rZXksIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogc2VsZi5wYWdlWE9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogc2VsZi5wYWdlWU9mZnNldFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXN0b3JlIG9sZCBzY3JvbGwgcG9zaXRpb246XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHYgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdfX25leHRfc2Nyb2xsXycgKyBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlZFNjcm9sbCA9IEpTT04ucGFyc2Uodik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlZFNjcm9sbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9rZXkgPSBrZXk7XG4gICAgICAgICAgICBjb25zdCB7IHBhdGhuYW1lICB9ID0gKDAsIF9wYXJzZVJlbGF0aXZlVXJsKS5wYXJzZVJlbGF0aXZlVXJsKHVybCk7XG4gICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgcmUtcmVuZGVyIG9uIGluaXRpYWwgbG9hZCxcbiAgICAgICAgICAgIC8vIGNhbiBiZSBjYXVzZWQgYnkgbmF2aWdhdGluZyBiYWNrIGZyb20gYW4gZXh0ZXJuYWwgc2l0ZVxuICAgICAgICAgICAgaWYgKHRoaXMuaXNTc3IgJiYgYXMgPT09ICgwLCBfYWRkQmFzZVBhdGgpLmFkZEJhc2VQYXRoKHRoaXMuYXNQYXRoKSAmJiBwYXRobmFtZSA9PT0gKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgodGhpcy5wYXRobmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJZiB0aGUgZG93bnN0cmVhbSBhcHBsaWNhdGlvbiByZXR1cm5zIGZhbHN5LCByZXR1cm4uXG4gICAgICAgICAgICAvLyBUaGV5IHdpbGwgdGhlbiBiZSByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhlIGV2ZW50LlxuICAgICAgICAgICAgaWYgKHRoaXMuX2JwcyAmJiAhdGhpcy5fYnBzKHN0YXRlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlKCdyZXBsYWNlU3RhdGUnLCB1cmwsIGFzLCBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zLCB7XG4gICAgICAgICAgICAgICAgc2hhbGxvdzogb3B0aW9ucy5zaGFsbG93ICYmIHRoaXMuX3NoYWxsb3csXG4gICAgICAgICAgICAgICAgbG9jYWxlOiBvcHRpb25zLmxvY2FsZSB8fCB0aGlzLmRlZmF1bHRMb2NhbGUsXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBpbnRlcm5hbCB2YWx1ZSBub3QgZXhwb3NlZCBvbiB0eXBlc1xuICAgICAgICAgICAgICAgIF9oOiAwXG4gICAgICAgICAgICB9KSwgZm9yY2VkU2Nyb2xsKTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gcmVwcmVzZW50cyB0aGUgY3VycmVudCBjb21wb25lbnQga2V5XG4gICAgICAgIGNvbnN0IHJvdXRlID0gKDAsIF9yZW1vdmVUcmFpbGluZ1NsYXNoKS5yZW1vdmVUcmFpbGluZ1NsYXNoKHBhdGhuYW1lMSk7XG4gICAgICAgIC8vIHNldCB1cCB0aGUgY29tcG9uZW50IGNhY2hlIChieSByb3V0ZSBrZXlzKVxuICAgICAgICB0aGlzLmNvbXBvbmVudHMgPSB7fTtcbiAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBrZWVwIHRoZSBjYWNoZSwgaWYgdGhlcmUncyBhbiBlcnJvclxuICAgICAgICAvLyBPdGhlcndpc2UsIHRoaXMgY2F1c2UgaXNzdWVzIHdoZW4gd2hlbiBnb2luZyBiYWNrIGFuZFxuICAgICAgICAvLyBjb21lIGFnYWluIHRvIHRoZSBlcnJvcmVkIHBhZ2UuXG4gICAgICAgIGlmIChwYXRobmFtZTEgIT09ICcvX2Vycm9yJykge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRzW3JvdXRlXSA9IHtcbiAgICAgICAgICAgICAgICBDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgaW5pdGlhbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBwcm9wczogaW5pdGlhbFByb3BzLFxuICAgICAgICAgICAgICAgIGVycixcbiAgICAgICAgICAgICAgICBfX05fU1NHOiBpbml0aWFsUHJvcHMgJiYgaW5pdGlhbFByb3BzLl9fTl9TU0csXG4gICAgICAgICAgICAgICAgX19OX1NTUDogaW5pdGlhbFByb3BzICYmIGluaXRpYWxQcm9wcy5fX05fU1NQLFxuICAgICAgICAgICAgICAgIF9fTl9SU0M6ICEhaXNSc2NcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb21wb25lbnRzWycvX2FwcCddID0ge1xuICAgICAgICAgICAgQ29tcG9uZW50OiBBcHAsXG4gICAgICAgICAgICBzdHlsZVNoZWV0czogW11cbiAgICAgICAgfTtcbiAgICAgICAgLy8gQmFja3dhcmRzIGNvbXBhdCBmb3IgUm91dGVyLnJvdXRlci5ldmVudHNcbiAgICAgICAgLy8gVE9ETzogU2hvdWxkIGJlIHJlbW92ZSB0aGUgZm9sbG93aW5nIG1ham9yIHZlcnNpb24gYXMgaXQgd2FzIG5ldmVyIGRvY3VtZW50ZWRcbiAgICAgICAgdGhpcy5ldmVudHMgPSBSb3V0ZXIuZXZlbnRzO1xuICAgICAgICB0aGlzLnBhZ2VMb2FkZXIgPSBwYWdlTG9hZGVyO1xuICAgICAgICAvLyBpZiBhdXRvIHByZXJlbmRlcmVkIGFuZCBkeW5hbWljIHJvdXRlIHdhaXQgdG8gdXBkYXRlIGFzUGF0aFxuICAgICAgICAvLyB1bnRpbCBhZnRlciBtb3VudCB0byBwcmV2ZW50IGh5ZHJhdGlvbiBtaXNtYXRjaFxuICAgICAgICBjb25zdCBhdXRvRXhwb3J0RHluYW1pYyA9ICgwLCBfaXNEeW5hbWljKS5pc0R5bmFtaWNSb3V0ZShwYXRobmFtZTEpICYmIHNlbGYuX19ORVhUX0RBVEFfXy5hdXRvRXhwb3J0O1xuICAgICAgICB0aGlzLmJhc2VQYXRoID0gcHJvY2Vzcy5lbnYuX19ORVhUX1JPVVRFUl9CQVNFUEFUSCB8fCAnJztcbiAgICAgICAgdGhpcy5zdWIgPSBzdWJzY3JpcHRpb247XG4gICAgICAgIHRoaXMuY2xjID0gbnVsbDtcbiAgICAgICAgdGhpcy5fd3JhcEFwcCA9IHdyYXBBcHA7XG4gICAgICAgIC8vIG1ha2Ugc3VyZSB0byBpZ25vcmUgZXh0cmEgcG9wU3RhdGUgaW4gc2FmYXJpIG9uIG5hdmlnYXRpbmdcbiAgICAgICAgLy8gYmFjayBmcm9tIGV4dGVybmFsIHNpdGVcbiAgICAgICAgdGhpcy5pc1NzciA9IHRydWU7XG4gICAgICAgIHRoaXMuaXNMb2NhbGVEb21haW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1JlYWR5ID0gISEoc2VsZi5fX05FWFRfREFUQV9fLmdzc3AgfHwgc2VsZi5fX05FWFRfREFUQV9fLmdpcCB8fCBzZWxmLl9fTkVYVF9EQVRBX18uYXBwR2lwICYmICFzZWxmLl9fTkVYVF9EQVRBX18uZ3NwIHx8ICFhdXRvRXhwb3J0RHluYW1pYyAmJiAhc2VsZi5sb2NhdGlvbi5zZWFyY2ggJiYgIXByb2Nlc3MuZW52Ll9fTkVYVF9IQVNfUkVXUklURVMpO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICAgICAgdGhpcy5sb2NhbGVzID0gbG9jYWxlcztcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdExvY2FsZSA9IGRlZmF1bHRMb2NhbGU7XG4gICAgICAgICAgICB0aGlzLmRvbWFpbkxvY2FsZXMgPSBkb21haW5Mb2NhbGVzO1xuICAgICAgICAgICAgdGhpcy5pc0xvY2FsZURvbWFpbiA9ICEhKDAsIF9kZXRlY3REb21haW5Mb2NhbGUpLmRldGVjdERvbWFpbkxvY2FsZShkb21haW5Mb2NhbGVzLCBzZWxmLmxvY2F0aW9uLmhvc3RuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgcm91dGUsXG4gICAgICAgICAgICBwYXRobmFtZTogcGF0aG5hbWUxLFxuICAgICAgICAgICAgcXVlcnk6IHF1ZXJ5MSxcbiAgICAgICAgICAgIGFzUGF0aDogYXV0b0V4cG9ydER5bmFtaWMgPyBwYXRobmFtZTEgOiBhczEsXG4gICAgICAgICAgICBpc1ByZXZpZXc6ICEhaXNQcmV2aWV3LFxuICAgICAgICAgICAgbG9jYWxlOiBwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUID8gbG9jYWxlIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgaXNGYWxsYmFja1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9pbml0aWFsTWF0Y2hlc01pZGRsZXdhcmVQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAvLyBtYWtlIHN1cmUgXCJhc1wiIGRvZXNuJ3Qgc3RhcnQgd2l0aCBkb3VibGUgc2xhc2hlcyBvciBlbHNlIGl0IGNhblxuICAgICAgICAgICAgLy8gdGhyb3cgYW4gZXJyb3IgYXMgaXQncyBjb25zaWRlcmVkIGludmFsaWRcbiAgICAgICAgICAgIGlmICghYXMxLnN0YXJ0c1dpdGgoJy8vJykpIHtcbiAgICAgICAgICAgICAgICAvLyBpbiBvcmRlciBmb3IgYGUuc3RhdGVgIHRvIHdvcmsgb24gdGhlIGBvbnBvcHN0YXRlYCBldmVudFxuICAgICAgICAgICAgICAgIC8vIHdlIGhhdmUgdG8gcmVnaXN0ZXIgdGhlIGluaXRpYWwgcm91dGUgdXBvbiBpbml0aWFsaXphdGlvblxuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgYXNQYXRoID0gKDAsIF91dGlscykuZ2V0VVJMKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5faW5pdGlhbE1hdGNoZXNNaWRkbGV3YXJlUHJvbWlzZSA9IG1hdGNoZXNNaWRkbGV3YXJlKHtcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiB0aGlzLFxuICAgICAgICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgIGFzUGF0aFxuICAgICAgICAgICAgICAgIH0pLnRoZW4oKG1hdGNoZXMpPT57XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuX3Nob3VsZFJlc29sdmVIcmVmID0gYXMxICE9PSBwYXRobmFtZTE7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlU3RhdGUoJ3JlcGxhY2VTdGF0ZScsIG1hdGNoZXMgPyBhc1BhdGggOiAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWU6ICgwLCBfYWRkQmFzZVBhdGgpLmFkZEJhc2VQYXRoKHBhdGhuYW1lMSksXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVyeTogcXVlcnkxXG4gICAgICAgICAgICAgICAgICAgIH0pLCBhc1BhdGgsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hlcztcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwb3BzdGF0ZScsIHRoaXMub25Qb3BTdGF0ZSk7XG4gICAgICAgICAgICAvLyBlbmFibGUgY3VzdG9tIHNjcm9sbCByZXN0b3JhdGlvbiBoYW5kbGluZyB3aGVuIGF2YWlsYWJsZVxuICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGZhbGxiYWNrIHRvIGJyb3dzZXIncyBkZWZhdWx0IGhhbmRsaW5nXG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1NDUk9MTF9SRVNUT1JBVElPTikge1xuICAgICAgICAgICAgICAgIGlmIChtYW51YWxTY3JvbGxSZXN0b3JhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuaGlzdG9yeS5zY3JvbGxSZXN0b3JhdGlvbiA9ICdtYW51YWwnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblJvdXRlci5ldmVudHMgPSAoMCwgX21pdHQpLmRlZmF1bHQoKTtcbmZ1bmN0aW9uIG1hdGNoZXNNaWRkbGV3YXJlKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG9wdGlvbnMucm91dGVyLnBhZ2VMb2FkZXIuZ2V0TWlkZGxld2FyZUxpc3QoKSkudGhlbigoaXRlbXMpPT57XG4gICAgICAgIGNvbnN0IHsgcGF0aG5hbWU6IGFzUGF0aG5hbWUgIH0gPSAoMCwgX3BhcnNlUGF0aCkucGFyc2VQYXRoKG9wdGlvbnMuYXNQYXRoKTtcbiAgICAgICAgY29uc3QgY2xlYW5lZEFzID0gKDAsIF9oYXNCYXNlUGF0aCkuaGFzQmFzZVBhdGgoYXNQYXRobmFtZSkgPyAoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChhc1BhdGhuYW1lKSA6IGFzUGF0aG5hbWU7XG4gICAgICAgIHJldHVybiAhIShpdGVtcyA9PSBudWxsID8gdm9pZCAwIDogaXRlbXMuc29tZSgoW3JlZ2V4LCBzc3JdKT0+e1xuICAgICAgICAgICAgcmV0dXJuICFzc3IgJiYgbmV3IFJlZ0V4cChyZWdleCkudGVzdCgoMCwgX2FkZExvY2FsZSkuYWRkTG9jYWxlKGNsZWFuZWRBcywgb3B0aW9ucy5sb2NhbGUpKTtcbiAgICAgICAgfSkpO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gd2l0aE1pZGRsZXdhcmVFZmZlY3RzKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbWF0Y2hlc01pZGRsZXdhcmUob3B0aW9ucykudGhlbigobWF0Y2hlcyk9PntcbiAgICAgICAgaWYgKG1hdGNoZXMgJiYgb3B0aW9ucy5mZXRjaERhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmZldGNoRGF0YSgpLnRoZW4oKGRhdGEpPT5nZXRNaWRkbGV3YXJlRGF0YShkYXRhLmRhdGFIcmVmLCBkYXRhLnJlc3BvbnNlLCBvcHRpb25zKS50aGVuKChlZmZlY3QpPT4oe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUhyZWY6IGRhdGEuZGF0YUhyZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uOiBkYXRhLmpzb24sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZTogZGF0YS5yZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGRhdGEudGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVmZmVjdFxuICAgICAgICAgICAgICAgICAgICB9KSkpLmNhdGNoKChfZXJyKT0+e1xuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIFRPRE86IFJldmlzaXQgdGhpcyBpbiB0aGUgZnV0dXJlLlxuICAgICAgICAgICAqIEZvciBub3cgd2Ugd2lsbCBub3QgY29uc2lkZXIgbWlkZGxld2FyZSBkYXRhIGVycm9ycyB0byBiZSBmYXRhbC5cbiAgICAgICAgICAgKiBtYXliZSB3ZSBzaG91bGQgcmV2aXNpdCBpbiB0aGUgZnV0dXJlLlxuICAgICAgICAgICAqLyByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZ2V0TWlkZGxld2FyZURhdGEoc291cmNlLCByZXNwb25zZSwgb3B0aW9ucykge1xuICAgIGNvbnN0IG5leHRDb25maWcgPSB7XG4gICAgICAgIGJhc2VQYXRoOiBvcHRpb25zLnJvdXRlci5iYXNlUGF0aCxcbiAgICAgICAgaTE4bjoge1xuICAgICAgICAgICAgbG9jYWxlczogb3B0aW9ucy5yb3V0ZXIubG9jYWxlc1xuICAgICAgICB9LFxuICAgICAgICB0cmFpbGluZ1NsYXNoOiBCb29sZWFuKHByb2Nlc3MuZW52Ll9fTkVYVF9UUkFJTElOR19TTEFTSClcbiAgICB9O1xuICAgIGNvbnN0IHJld3JpdGVIZWFkZXIgPSByZXNwb25zZS5oZWFkZXJzLmdldCgneC1uZXh0anMtcmV3cml0ZScpO1xuICAgIGxldCByZXdyaXRlVGFyZ2V0ID0gcmV3cml0ZUhlYWRlciB8fCByZXNwb25zZS5oZWFkZXJzLmdldCgneC1uZXh0anMtbWF0Y2hlZC1wYXRoJyk7XG4gICAgY29uc3QgbWF0Y2hlZFBhdGggPSByZXNwb25zZS5oZWFkZXJzLmdldCgneC1tYXRjaGVkLXBhdGgnKTtcbiAgICBpZiAoIXJld3JpdGVUYXJnZXQgJiYgIShtYXRjaGVkUGF0aCA9PSBudWxsID8gdm9pZCAwIDogbWF0Y2hlZFBhdGguaW5jbHVkZXMoJ19fbmV4dF9kYXRhX2NhdGNoYWxsJykpKSB7XG4gICAgICAgIHJld3JpdGVUYXJnZXQgPSBtYXRjaGVkUGF0aDtcbiAgICB9XG4gICAgaWYgKHJld3JpdGVUYXJnZXQpIHtcbiAgICAgICAgaWYgKHJld3JpdGVUYXJnZXQuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWRSZXdyaXRlVGFyZ2V0ID0gKDAsIF9wYXJzZVJlbGF0aXZlVXJsKS5wYXJzZVJlbGF0aXZlVXJsKHJld3JpdGVUYXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgcGF0aG5hbWVJbmZvID0gKDAsIF9nZXROZXh0UGF0aG5hbWVJbmZvKS5nZXROZXh0UGF0aG5hbWVJbmZvKHBhcnNlZFJld3JpdGVUYXJnZXQucGF0aG5hbWUsIHtcbiAgICAgICAgICAgICAgICBuZXh0Q29uZmlnLFxuICAgICAgICAgICAgICAgIHBhcnNlRGF0YTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBmc1BhdGhuYW1lID0gKDAsIF9yZW1vdmVUcmFpbGluZ1NsYXNoKS5yZW1vdmVUcmFpbGluZ1NsYXNoKHBhdGhuYW1lSW5mby5wYXRobmFtZSk7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgICAgIG9wdGlvbnMucm91dGVyLnBhZ2VMb2FkZXIuZ2V0UGFnZUxpc3QoKSxcbiAgICAgICAgICAgICAgICAoMCwgX3JvdXRlTG9hZGVyKS5nZXRDbGllbnRCdWlsZE1hbmlmZXN0KCksIFxuICAgICAgICAgICAgXSkudGhlbigoW3BhZ2VzLCB7IF9fcmV3cml0ZXM6IHJld3JpdGVzICB9XSk9PntcbiAgICAgICAgICAgICAgICBsZXQgYXMgPSAoMCwgX2FkZExvY2FsZSkuYWRkTG9jYWxlKHBhdGhuYW1lSW5mby5wYXRobmFtZSwgcGF0aG5hbWVJbmZvLmxvY2FsZSk7XG4gICAgICAgICAgICAgICAgaWYgKCgwLCBfaXNEeW5hbWljKS5pc0R5bmFtaWNSb3V0ZShhcykgfHwgIXJld3JpdGVIZWFkZXIgJiYgcGFnZXMuaW5jbHVkZXMoKDAsIF9ub3JtYWxpemVMb2NhbGVQYXRoKS5ub3JtYWxpemVMb2NhbGVQYXRoKCgwLCBfcmVtb3ZlQmFzZVBhdGgpLnJlbW92ZUJhc2VQYXRoKGFzKSwgb3B0aW9ucy5yb3V0ZXIubG9jYWxlcykucGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZFNvdXJjZSA9ICgwLCBfZ2V0TmV4dFBhdGhuYW1lSW5mbykuZ2V0TmV4dFBhdGhuYW1lSW5mbygoMCwgX3BhcnNlUmVsYXRpdmVVcmwpLnBhcnNlUmVsYXRpdmVVcmwoc291cmNlKS5wYXRobmFtZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VEYXRhOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBhcyA9ICgwLCBfYWRkQmFzZVBhdGgpLmFkZEJhc2VQYXRoKHBhcnNlZFNvdXJjZS5wYXRobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZFJld3JpdGVUYXJnZXQucGF0aG5hbWUgPSBhcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9IQVNfUkVXUklURVMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gKDAsIF9yZXNvbHZlUmV3cml0ZXMpLmRlZmF1bHQoYXMsIHBhZ2VzLCByZXdyaXRlcywgcGFyc2VkUmV3cml0ZVRhcmdldC5xdWVyeSwgKHBhdGgpPT5yZXNvbHZlRHluYW1pY1JvdXRlKHBhdGgsIHBhZ2VzKSwgb3B0aW9ucy5yb3V0ZXIubG9jYWxlcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubWF0Y2hlZFBhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFJld3JpdGVUYXJnZXQucGF0aG5hbWUgPSByZXN1bHQucGFyc2VkQXMucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcyA9IHBhcnNlZFJld3JpdGVUYXJnZXQucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHBhcnNlZFJld3JpdGVUYXJnZXQucXVlcnksIHJlc3VsdC5wYXJzZWRBcy5xdWVyeSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRIcmVmID0gIXBhZ2VzLmluY2x1ZGVzKGZzUGF0aG5hbWUpID8gcmVzb2x2ZUR5bmFtaWNSb3V0ZSgoMCwgX25vcm1hbGl6ZUxvY2FsZVBhdGgpLm5vcm1hbGl6ZUxvY2FsZVBhdGgoKDAsIF9yZW1vdmVCYXNlUGF0aCkucmVtb3ZlQmFzZVBhdGgocGFyc2VkUmV3cml0ZVRhcmdldC5wYXRobmFtZSksIG9wdGlvbnMucm91dGVyLmxvY2FsZXMpLnBhdGhuYW1lLCBwYWdlcykgOiBmc1BhdGhuYW1lO1xuICAgICAgICAgICAgICAgIGlmICgoMCwgX2lzRHluYW1pYykuaXNEeW5hbWljUm91dGUocmVzb2x2ZWRIcmVmKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGVzID0gKDAsIF9yb3V0ZU1hdGNoZXIpLmdldFJvdXRlTWF0Y2hlcigoMCwgX3JvdXRlUmVnZXgpLmdldFJvdXRlUmVnZXgocmVzb2x2ZWRIcmVmKSkoYXMpO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHBhcnNlZFJld3JpdGVUYXJnZXQucXVlcnksIG1hdGNoZXMgfHwge30pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAncmV3cml0ZScsXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZEFzOiBwYXJzZWRSZXdyaXRlVGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZEhyZWZcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3JjID0gKDAsIF9wYXJzZVBhdGgpLnBhcnNlUGF0aChzb3VyY2UpO1xuICAgICAgICBjb25zdCBwYXRobmFtZSA9ICgwLCBfZm9ybWF0TmV4dFBhdGhuYW1lSW5mbykuZm9ybWF0TmV4dFBhdGhuYW1lSW5mbyhfZXh0ZW5kcyh7fSwgKDAsIF9nZXROZXh0UGF0aG5hbWVJbmZvKS5nZXROZXh0UGF0aG5hbWVJbmZvKHNyYy5wYXRobmFtZSwge1xuICAgICAgICAgICAgbmV4dENvbmZpZyxcbiAgICAgICAgICAgIHBhcnNlRGF0YTogdHJ1ZVxuICAgICAgICB9KSwge1xuICAgICAgICAgICAgZGVmYXVsdExvY2FsZTogb3B0aW9ucy5yb3V0ZXIuZGVmYXVsdExvY2FsZSxcbiAgICAgICAgICAgIGJ1aWxkSWQ6ICcnXG4gICAgICAgIH0pKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgICB0eXBlOiAncmVkaXJlY3QtZXh0ZXJuYWwnLFxuICAgICAgICAgICAgZGVzdGluYXRpb246IGAke3BhdGhuYW1lfSR7c3JjLnF1ZXJ5fSR7c3JjLmhhc2h9YFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgcmVkaXJlY3RUYXJnZXQgPSByZXNwb25zZS5oZWFkZXJzLmdldCgneC1uZXh0anMtcmVkaXJlY3QnKTtcbiAgICBpZiAocmVkaXJlY3RUYXJnZXQpIHtcbiAgICAgICAgaWYgKHJlZGlyZWN0VGFyZ2V0LnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICAgICAgY29uc3Qgc3JjID0gKDAsIF9wYXJzZVBhdGgpLnBhcnNlUGF0aChyZWRpcmVjdFRhcmdldCk7XG4gICAgICAgICAgICBjb25zdCBwYXRobmFtZSA9ICgwLCBfZm9ybWF0TmV4dFBhdGhuYW1lSW5mbykuZm9ybWF0TmV4dFBhdGhuYW1lSW5mbyhfZXh0ZW5kcyh7fSwgKDAsIF9nZXROZXh0UGF0aG5hbWVJbmZvKS5nZXROZXh0UGF0aG5hbWVJbmZvKHNyYy5wYXRobmFtZSwge1xuICAgICAgICAgICAgICAgIG5leHRDb25maWcsXG4gICAgICAgICAgICAgICAgcGFyc2VEYXRhOiB0cnVlXG4gICAgICAgICAgICB9KSwge1xuICAgICAgICAgICAgICAgIGRlZmF1bHRMb2NhbGU6IG9wdGlvbnMucm91dGVyLmRlZmF1bHRMb2NhbGUsXG4gICAgICAgICAgICAgICAgYnVpbGRJZDogJydcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdyZWRpcmVjdC1pbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgbmV3QXM6IGAke3BhdGhuYW1lfSR7c3JjLnF1ZXJ5fSR7c3JjLmhhc2h9YCxcbiAgICAgICAgICAgICAgICBuZXdVcmw6IGAke3BhdGhuYW1lfSR7c3JjLnF1ZXJ5fSR7c3JjLmhhc2h9YFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgICB0eXBlOiAncmVkaXJlY3QtZXh0ZXJuYWwnLFxuICAgICAgICAgICAgZGVzdGluYXRpb246IHJlZGlyZWN0VGFyZ2V0XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgdHlwZTogJ25leHQnXG4gICAgfSk7XG59XG5leHBvcnRzLmRlZmF1bHQgPSBSb3V0ZXI7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJvdXRlci5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJpc0xvY2FsVVJMIiwiaW50ZXJwb2xhdGVBcyIsInJlc29sdmVIcmVmIiwiY3JlYXRlS2V5IiwiZGVmYXVsdCIsIl9ub3JtYWxpemVUcmFpbGluZ1NsYXNoIiwicmVxdWlyZSIsIl9yZW1vdmVUcmFpbGluZ1NsYXNoIiwiX3JvdXRlTG9hZGVyIiwiX3NjcmlwdCIsIl9pc0Vycm9yIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfZGVub3JtYWxpemVQYWdlUGF0aCIsIl9ub3JtYWxpemVMb2NhbGVQYXRoIiwiX21pdHQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3V0aWxzIiwiX2lzRHluYW1pYyIsIl9wYXJzZVJlbGF0aXZlVXJsIiwiX3F1ZXJ5c3RyaW5nIiwiX3Jlc29sdmVSZXdyaXRlcyIsIl9yb3V0ZU1hdGNoZXIiLCJfcm91dGVSZWdleCIsIl9mb3JtYXRVcmwiLCJfZGV0ZWN0RG9tYWluTG9jYWxlIiwiX3BhcnNlUGF0aCIsIl9hZGRMb2NhbGUiLCJfcmVtb3ZlTG9jYWxlIiwiX3JlbW92ZUJhc2VQYXRoIiwiX2FkZEJhc2VQYXRoIiwiX2hhc0Jhc2VQYXRoIiwiX2dldE5leHRQYXRobmFtZUluZm8iLCJfZm9ybWF0TmV4dFBhdGhuYW1lSW5mbyIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsInJlc29sdmUiLCJyZWplY3QiLCJfbmV4dCIsIl90aHJvdyIsImtleSIsImFyZyIsImluZm8iLCJlcnJvciIsImRvbmUiLCJQcm9taXNlIiwidGhlbiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiZm4iLCJzZWxmIiwiYXJncyIsImFyZ3VtZW50cyIsImFwcGx5IiwiZXJyIiwidW5kZWZpbmVkIiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJ0YXJnZXQiLCJpIiwibGVuZ3RoIiwic291cmNlIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwib2JqIiwiX19lc01vZHVsZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIldlYWtNYXAiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImRlc2MiLCJzZXQiLCJidWlsZENhbmNlbGxhdGlvbkVycm9yIiwiRXJyb3IiLCJjYW5jZWxsZWQiLCJ1cmwiLCJpc0Fic29sdXRlVXJsIiwibG9jYXRpb25PcmlnaW4iLCJnZXRMb2NhdGlvbk9yaWdpbiIsInJlc29sdmVkIiwiVVJMIiwib3JpZ2luIiwiaGFzQmFzZVBhdGgiLCJwYXRobmFtZSIsIl8iLCJyb3V0ZSIsImFzUGF0aG5hbWUiLCJxdWVyeSIsImludGVycG9sYXRlZFJvdXRlIiwiZHluYW1pY1JlZ2V4IiwiZ2V0Um91dGVSZWdleCIsImR5bmFtaWNHcm91cHMiLCJncm91cHMiLCJkeW5hbWljTWF0Y2hlcyIsImdldFJvdXRlTWF0Y2hlciIsInBhcmFtcyIsImtleXMiLCJldmVyeSIsInBhcmFtIiwicmVwZWF0Iiwib3B0aW9uYWwiLCJyZXBsYWNlZCIsIkFycmF5IiwiaXNBcnJheSIsInJlcGxhY2UiLCJtYXAiLCJzZWdtZW50IiwiZW5jb2RlVVJJQ29tcG9uZW50Iiwiam9pbiIsInJlc3VsdCIsIm9taXQiLCJvYmplY3QiLCJvbWl0dGVkIiwiZm9yRWFjaCIsImluY2x1ZGVzIiwicm91dGVyIiwiaHJlZiIsInJlc29sdmVBcyIsImJhc2UiLCJ1cmxBc1N0cmluZyIsImZvcm1hdFdpdGhWYWxpZGF0aW9uIiwidXJsUHJvdG9NYXRjaCIsIm1hdGNoIiwidXJsQXNTdHJpbmdOb1Byb3RvIiwic2xpY2UiLCJ1cmxQYXJ0cyIsInNwbGl0IiwiY29uc29sZSIsIm5vcm1hbGl6ZWRVcmwiLCJub3JtYWxpemVSZXBlYXRlZFNsYXNoZXMiLCJzdGFydHNXaXRoIiwiYXNQYXRoIiwiZmluYWxVcmwiLCJub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaCIsImludGVycG9sYXRlZEFzIiwiaXNEeW5hbWljUm91dGUiLCJzZWFyY2hQYXJhbXMiLCJzZWFyY2hQYXJhbXNUb1VybFF1ZXJ5IiwiaGFzaCIsInJlc29sdmVkSHJlZiIsIl8xIiwic3RyaXBPcmlnaW4iLCJzdWJzdHJpbmciLCJwcmVwYXJlVXJsQXMiLCJhcyIsInJlc29sdmVkQXMiLCJocmVmSGFkT3JpZ2luIiwiYXNIYWRPcmlnaW4iLCJwcmVwYXJlZFVybCIsImFkZEJhc2VQYXRoIiwicHJlcGFyZWRBcyIsInJlc29sdmVEeW5hbWljUm91dGUiLCJwYWdlcyIsImNsZWFuUGF0aG5hbWUiLCJyZW1vdmVUcmFpbGluZ1NsYXNoIiwiZGVub3JtYWxpemVQYWdlUGF0aCIsInNvbWUiLCJwYWdlIiwicmUiLCJ0ZXN0IiwibWFudWFsU2Nyb2xsUmVzdG9yYXRpb24iLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1NDUk9MTF9SRVNUT1JBVElPTiIsIndpbmRvdyIsImhpc3RvcnkiLCJ2Iiwic2Vzc2lvblN0b3JhZ2UiLCJzZXRJdGVtIiwicmVtb3ZlSXRlbSIsIm4iLCJTU0dfREFUQV9OT1RfRk9VTkQiLCJTeW1ib2wiLCJmZXRjaFJldHJ5IiwiYXR0ZW1wdHMiLCJvcHRpb25zIiwiZmV0Y2giLCJjcmVkZW50aWFscyIsIm1ldGhvZCIsImhlYWRlcnMiLCJyZXNwb25zZSIsIm9rIiwic3RhdHVzIiwiYmFja2dyb3VuZENhY2hlIiwiZmV0Y2hOZXh0RGF0YSIsImRhdGFIcmVmIiwiaW5mbGlnaHRDYWNoZSIsImlzUHJlZmV0Y2giLCJoYXNNaWRkbGV3YXJlIiwiaXNTZXJ2ZXJSZW5kZXIiLCJwYXJzZUpTT04iLCJwZXJzaXN0Q2FjaGUiLCJpc0JhY2tncm91bmQiLCJ1bnN0YWJsZV9za2lwQ2xpZW50Q2FjaGUiLCJjYWNoZUtleSIsImxvY2F0aW9uIiwicmVmMSIsImdldERhdGEiLCJwdXJwb3NlIiwidGV4dCIsImpzb24iLCJyZWYiLCJ0cnlUb1BhcnNlQXNKU09OIiwibm90Rm91bmQiLCJtYXJrQXNzZXRFcnJvciIsImRhdGEiLCJjYXRjaCIsIkpTT04iLCJwYXJzZSIsIk1hdGgiLCJyYW5kb20iLCJ0b1N0cmluZyIsImhhbmRsZUhhcmROYXZpZ2F0aW9uIiwiYWRkTG9jYWxlIiwibG9jYWxlIiwiZ2V0Q2FuY2VsbGVkSGFuZGxlciIsImNhbmNlbCIsImNsYyIsImhhbmRsZUNhbmNlbGxlZCIsIlJvdXRlciIsInJlbG9hZCIsImJhY2siLCJwdXNoIiwiX2tleSIsInN0cmluZ2lmeSIsIngiLCJwYWdlWE9mZnNldCIsInkiLCJwYWdlWU9mZnNldCIsImUiLCJjaGFuZ2UiLCJmb3JjZWRTY3JvbGwiLCJfdGhpcyIsImlzUXVlcnlVcGRhdGluZyIsIl9oIiwic2hvdWxkUmVzb2x2ZUhyZWYiLCJfc2hvdWxkUmVzb2x2ZUhyZWYiLCJwYXJzZVBhdGgiLCJuZXh0U3RhdGUiLCJzdGF0ZSIsImlzUmVhZHkiLCJpc1NzciIsInByZXZMb2NhbGUiLCJfX05FWFRfSTE4Tl9TVVBQT1JUIiwiZGVmYXVsdExvY2FsZSIsInBhcnNlZEFzIiwicGFyc2VSZWxhdGl2ZVVybCIsInJlbW92ZUJhc2VQYXRoIiwibG9jYWxlUGF0aFJlc3VsdCIsIm5vcm1hbGl6ZUxvY2FsZVBhdGgiLCJsb2NhbGVzIiwiZGV0ZWN0ZWRMb2NhbGUiLCJkaWROYXZpZ2F0ZSIsImRldGVjdGVkRG9tYWluIiwiZGV0ZWN0RG9tYWluTG9jYWxlIiwiZG9tYWluTG9jYWxlcyIsImlzTG9jYWxlRG9tYWluIiwiaG9zdG5hbWUiLCJkb21haW4iLCJhc05vQmFzZVBhdGgiLCJodHRwIiwiU1QiLCJwZXJmb3JtYW5jZSIsIm1hcmsiLCJzaGFsbG93Iiwic2Nyb2xsIiwicm91dGVQcm9wcyIsIl9pbkZsaWdodFJvdXRlIiwiZXZlbnRzIiwiZW1pdCIsImNsZWFuZWRBcyIsInJlbW92ZUxvY2FsZSIsImxvY2FsZUNoYW5nZSIsIm9ubHlBSGFzaENoYW5nZSIsImNoYW5nZVN0YXRlIiwic2Nyb2xsVG9IYXNoIiwiY29tcG9uZW50cyIsInBhcnNlZCIsInJld3JpdGVzIiwiX19yZXdyaXRlcyIsImFsbCIsInBhZ2VMb2FkZXIiLCJnZXRQYWdlTGlzdCIsImdldENsaWVudEJ1aWxkTWFuaWZlc3QiLCJnZXRNaWRkbGV3YXJlTGlzdCIsInVybElzTmV3IiwiaXNNaWRkbGV3YXJlTWF0Y2giLCJtYXRjaGVzTWlkZGxld2FyZSIsIl9fTkVYVF9IQVNfUkVXUklURVMiLCJyZXdyaXRlc1Jlc3VsdCIsInAiLCJleHRlcm5hbERlc3QiLCJtYXRjaGVkUGFnZSIsInJvdXRlTWF0Y2giLCJyb3V0ZVJlZ2V4Iiwic2hvdWxkSW50ZXJwb2xhdGUiLCJtaXNzaW5nUGFyYW1zIiwiZmlsdGVyIiwid2FybiIsInJlZjIiLCJyZWYzIiwicm91dGVJbmZvIiwiZ2V0Um91dGVJbmZvIiwiaXNQcmV2aWV3IiwicHJlZml4ZWRBcyIsInJld3JpdGVBcyIsImxvY2FsZVJlc3VsdCIsImN1clJvdXRlTWF0Y2giLCJ0eXBlIiwibmV3VXJsIiwibmV3QXMiLCJkZXN0aW5hdGlvbiIsInByb3BzIiwiX19OX1NTRyIsIl9fTl9TU1AiLCJjb21wb25lbnQiLCJDb21wb25lbnQiLCJ1bnN0YWJsZV9zY3JpcHRMb2FkZXIiLCJzY3JpcHRzIiwiY29uY2F0Iiwic2NyaXB0IiwiaGFuZGxlQ2xpZW50U2NyaXB0TG9hZCIsInBhZ2VQcm9wcyIsIl9fTl9SRURJUkVDVCIsIl9fTl9SRURJUkVDVF9CQVNFX1BBVEgiLCJwYXJzZWRIcmVmIiwiX19OX1BSRVZJRVciLCJub3RGb3VuZFJvdXRlIiwiZmV0Y2hDb21wb25lbnQiLCJfX05FWFRfREFUQV9fIiwic3RhdHVzQ29kZSIsIl9yb3V0ZSIsImlzVmFsaWRTaGFsbG93Um91dGUiLCJfc2Nyb2xsIiwic2hvdWxkU2Nyb2xsIiwicmVzZXRTY3JvbGwiLCJpc0ZhbGxiYWNrIiwiZG9jdW1lbnQiLCJkb2N1bWVudEVsZW1lbnQiLCJsYW5nIiwiaGFzaFJlZ2V4IiwiZXJyMSIsImdldFVSTCIsIl9zaGFsbG93IiwiX19OIiwiaGFuZGxlUm91dGVJbmZvRXJyb3IiLCJsb2FkRXJyb3JGYWlsIiwiaXNBc3NldEVycm9yIiwic3R5bGVTaGVldHMiLCJnZXRJbml0aWFsUHJvcHMiLCJnaXBFcnIiLCJyb3V0ZUluZm9FcnIiLCJyZXF1ZXN0ZWRSb3V0ZSIsInJlZjQiLCJyZWY1IiwiZXhpc3RpbmdJbmZvIiwiY2FjaGVkUm91dGVJbmZvIiwiZmV0Y2hOZXh0RGF0YVBhcmFtcyIsImdldERhdGFIcmVmIiwic2tpcEludGVycG9sYXRpb24iLCJzZGMiLCJ3aXRoTWlkZGxld2FyZUVmZmVjdHMiLCJmZXRjaERhdGEiLCJlZmZlY3QiLCJyZXMiLCJtb2QiLCJfX05fUlNDIiwiX19uZXh0X3JzY19fIiwiaXNWYWxpZEVsZW1lbnRUeXBlIiwidXNlU3RyZWFtZWRGbGlnaHREYXRhIiwic2hvdWxkRmV0Y2hEYXRhIiwiX2dldERhdGEiLCJmbGlnaHRJbmZvIiwiX19mbGlnaHRfXyIsIl9nZXRGbGlnaHREYXRhIiwiZ2V0UHJvcGVyRXJyb3IiLCJzdWIiLCJiZWZvcmVQb3BTdGF0ZSIsImNiIiwiX2JwcyIsIm9sZFVybE5vSGFzaCIsIm9sZEhhc2giLCJuZXdVcmxOb0hhc2giLCJuZXdIYXNoIiwic2Nyb2xsVG8iLCJyYXdIYXNoIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiaWRFbCIsImdldEVsZW1lbnRCeUlkIiwic2Nyb2xsSW50b1ZpZXciLCJuYW1lRWwiLCJnZXRFbGVtZW50c0J5TmFtZSIsInByZWZldGNoIiwiX2lzU3NnIiwiaXNTc2ciLCJwcmlvcml0eSIsImNvbXBvbmVudFJlc3VsdCIsImxvYWRQYWdlIiwiY3R4IiwiQXBwIiwiQXBwVHJlZSIsIl93cmFwQXBwIiwibG9hZEdldEluaXRpYWxQcm9wcyIsImNvbnN0cnVjdG9yIiwicGF0aG5hbWUxIiwicXVlcnkxIiwiYXMxIiwiaW5pdGlhbFByb3BzIiwid3JhcEFwcCIsInN1YnNjcmlwdGlvbiIsImlzUnNjIiwiaXNGaXJzdFBvcFN0YXRlRXZlbnQiLCJvblBvcFN0YXRlIiwiX19OQSIsImdldEl0ZW0iLCJlMSIsImluaXRpYWwiLCJhdXRvRXhwb3J0RHluYW1pYyIsImF1dG9FeHBvcnQiLCJiYXNlUGF0aCIsIl9fTkVYVF9ST1VURVJfQkFTRVBBVEgiLCJnc3NwIiwiZ2lwIiwiYXBwR2lwIiwiZ3NwIiwic2VhcmNoIiwiX2luaXRpYWxNYXRjaGVzTWlkZGxld2FyZVByb21pc2UiLCJtYXRjaGVzIiwiYWRkRXZlbnRMaXN0ZW5lciIsInNjcm9sbFJlc3RvcmF0aW9uIiwiaXRlbXMiLCJyZWdleCIsInNzciIsIlJlZ0V4cCIsImdldE1pZGRsZXdhcmVEYXRhIiwiX2VyciIsIm5leHRDb25maWciLCJpMThuIiwidHJhaWxpbmdTbGFzaCIsIkJvb2xlYW4iLCJfX05FWFRfVFJBSUxJTkdfU0xBU0giLCJyZXdyaXRlSGVhZGVyIiwicmV3cml0ZVRhcmdldCIsIm1hdGNoZWRQYXRoIiwicGFyc2VkUmV3cml0ZVRhcmdldCIsInBhdGhuYW1lSW5mbyIsImdldE5leHRQYXRobmFtZUluZm8iLCJwYXJzZURhdGEiLCJmc1BhdGhuYW1lIiwicGFyc2VkU291cmNlIiwicGF0aCIsInNyYyIsImZvcm1hdE5leHRQYXRobmFtZUluZm8iLCJidWlsZElkIiwicmVkaXJlY3RUYXJnZXQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../node_modules/next/dist/shared/lib/router/router.js\n");
-
-/***/ }),
-
-/***/ "./components/Layout.tsx":
-/*!*******************************!*\
- !*** ./components/Layout.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 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 next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"../node_modules/next/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/head */ \"next/head\");\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_head__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\nconst Layout = ({ children , title =\"This is the default title\" })=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_head__WEBPACK_IMPORTED_MODULE_3___default()), {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"title\", {\n children: title\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 13,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n charSet: \"utf-8\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 14,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n name: \"viewport\",\n content: \"initial-scale=1.0, width=device-width\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 15,\n columnNumber: 7\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 12,\n columnNumber: 5\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: \"Home\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 20,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 19,\n columnNumber: 9\n }, undefined),\n \" \",\n \"|\",\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/about\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: \"About\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 24,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 23,\n columnNumber: 9\n }, undefined),\n \" \",\n \"|\",\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/initial-props\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: \"With Initial Props\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 28,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 27,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 18,\n columnNumber: 7\n }, undefined)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 17,\n columnNumber: 5\n }, undefined),\n children,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"footer\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"hr\", {}, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 34,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"I'm here to stay (Footer)\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 35,\n columnNumber: 7\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 33,\n columnNumber: 5\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 11,\n columnNumber: 3\n }, undefined);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Layout);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0xheW91dC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7QUFBd0M7QUFDWjtBQUNBO0FBTzVCLE1BQU1HLE1BQU0sR0FBRyxDQUFDLEVBQUVDLFFBQVEsR0FBRUMsS0FBSyxFQUFHLDJCQUEyQixHQUFTLGlCQUN0RSw4REFBQ0MsS0FBRzs7MEJBQ0YsOERBQUNKLGtEQUFJOztrQ0FDSCw4REFBQ0csT0FBSztrQ0FBRUEsS0FBSzs7Ozs7aUNBQVM7a0NBQ3RCLDhEQUFDRSxNQUFJO3dCQUFDQyxPQUFPLEVBQUMsT0FBTzs7Ozs7aUNBQUc7a0NBQ3hCLDhEQUFDRCxNQUFJO3dCQUFDRSxJQUFJLEVBQUMsVUFBVTt3QkFBQ0MsT0FBTyxFQUFDLHVDQUF1Qzs7Ozs7aUNBQUc7Ozs7Ozt5QkFDbkU7MEJBQ1AsOERBQUNDLFFBQU07MEJBQ0wsNEVBQUNDLEtBQUc7O3NDQUNGLDhEQUFDWCxrREFBSTs0QkFBQ1ksSUFBSSxFQUFDLEdBQUc7c0NBQ1osNEVBQUNDLEdBQUM7MENBQUMsTUFBSTs7Ozs7eUNBQUk7Ozs7O3FDQUNOO3dCQUFDLEdBQUc7d0JBQUMsR0FDWDt3QkFBQyxHQUFHO3NDQUNMLDhEQUFDYixrREFBSTs0QkFBQ1ksSUFBSSxFQUFDLFFBQVE7c0NBQ2pCLDRFQUFDQyxHQUFDOzBDQUFDLE9BQUs7Ozs7O3lDQUFJOzs7OztxQ0FDUDt3QkFBQyxHQUFHO3dCQUFDLEdBQ1g7d0JBQUMsR0FBRztzQ0FDTCw4REFBQ2Isa0RBQUk7NEJBQUNZLElBQUksRUFBQyxnQkFBZ0I7c0NBQ3pCLDRFQUFDQyxHQUFDOzBDQUFDLG9CQUFrQjs7Ozs7eUNBQUk7Ozs7O3FDQUNwQjs7Ozs7OzZCQUNIOzs7Ozt5QkFDQztZQUNSVixRQUFROzBCQUNULDhEQUFDVyxRQUFNOztrQ0FDTCw4REFBQ0MsSUFBRTs7OztpQ0FBRztrQ0FDTiw4REFBQ0MsTUFBSTtrQ0FBQywyQkFBeUI7Ozs7O2lDQUFPOzs7Ozs7eUJBQy9COzs7Ozs7aUJBQ0w7QUFHUixpRUFBZWQsTUFBTSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2NvbXBvbmVudHMvTGF5b3V0LnRzeD8zYzhmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBMaW5rIGZyb20gJ25leHQvbGluaydcbmltcG9ydCBIZWFkIGZyb20gJ25leHQvaGVhZCdcblxudHlwZSBQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZVxuICB0aXRsZT86IHN0cmluZ1xufVxuXG5jb25zdCBMYXlvdXQgPSAoeyBjaGlsZHJlbiwgdGl0bGUgPSAnVGhpcyBpcyB0aGUgZGVmYXVsdCB0aXRsZScgfTogUHJvcHMpID0+IChcbiAgPGRpdj5cbiAgICA8SGVhZD5cbiAgICAgIDx0aXRsZT57dGl0bGV9PC90aXRsZT5cbiAgICAgIDxtZXRhIGNoYXJTZXQ9XCJ1dGYtOFwiIC8+XG4gICAgICA8bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwiaW5pdGlhbC1zY2FsZT0xLjAsIHdpZHRoPWRldmljZS13aWR0aFwiIC8+XG4gICAgPC9IZWFkPlxuICAgIDxoZWFkZXI+XG4gICAgICA8bmF2PlxuICAgICAgICA8TGluayBocmVmPVwiL1wiPlxuICAgICAgICAgIDxhPkhvbWU8L2E+XG4gICAgICAgIDwvTGluaz57JyAnfVxuICAgICAgICB8eycgJ31cbiAgICAgICAgPExpbmsgaHJlZj1cIi9hYm91dFwiPlxuICAgICAgICAgIDxhPkFib3V0PC9hPlxuICAgICAgICA8L0xpbms+eycgJ31cbiAgICAgICAgfHsnICd9XG4gICAgICAgIDxMaW5rIGhyZWY9XCIvaW5pdGlhbC1wcm9wc1wiPlxuICAgICAgICAgIDxhPldpdGggSW5pdGlhbCBQcm9wczwvYT5cbiAgICAgICAgPC9MaW5rPlxuICAgICAgPC9uYXY+XG4gICAgPC9oZWFkZXI+XG4gICAge2NoaWxkcmVufVxuICAgIDxmb290ZXI+XG4gICAgICA8aHIgLz5cbiAgICAgIDxzcGFuPkknbSBoZXJlIHRvIHN0YXkgKEZvb3Rlcik8L3NwYW4+XG4gICAgPC9mb290ZXI+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgZGVmYXVsdCBMYXlvdXRcbiJdLCJuYW1lcyI6WyJSZWFjdCIsIkxpbmsiLCJIZWFkIiwiTGF5b3V0IiwiY2hpbGRyZW4iLCJ0aXRsZSIsImRpdiIsIm1ldGEiLCJjaGFyU2V0IiwibmFtZSIsImNvbnRlbnQiLCJoZWFkZXIiLCJuYXYiLCJocmVmIiwiYSIsImZvb3RlciIsImhyIiwic3BhbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/Layout.tsx\n");
-
-/***/ }),
-
-/***/ "./components/List.tsx":
-/*!*****************************!*\
- !*** ./components/List.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 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 _ListItem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ListItem */ \"./components/ListItem.tsx\");\n\n\n\nconst List = ({ items })=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n children: items.map((item)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ListItem__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n data: item\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/List.tsx\",\n lineNumber: 13,\n columnNumber: 9\n }, undefined)\n }, item.id, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/List.tsx\",\n lineNumber: 12,\n columnNumber: 7\n }, undefined))\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/List.tsx\",\n lineNumber: 10,\n columnNumber: 3\n }, undefined);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (List);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0xpc3QudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQXlCO0FBQ1E7QUFPakMsTUFBTUUsSUFBSSxHQUFHLENBQUMsRUFBRUMsS0FBSyxHQUFTLGlCQUM1Qiw4REFBQ0MsSUFBRTtrQkFDQUQsS0FBSyxDQUFDRSxHQUFHLENBQUMsQ0FBQ0MsSUFBSSxpQkFDZCw4REFBQ0MsSUFBRTswQkFDRCw0RUFBQ04saURBQVE7b0JBQUNPLElBQUksRUFBRUYsSUFBSTs7Ozs7NkJBQUk7ZUFEakJBLElBQUksQ0FBQ0csRUFBRTs7Ozt5QkFFWCxDQUNMOzs7OztpQkFDQztBQUdQLGlFQUFlUCxJQUFJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vY29tcG9uZW50cy9MaXN0LnRzeD9kOWE5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBMaXN0SXRlbSBmcm9tICcuL0xpc3RJdGVtJ1xuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uL2ludGVyZmFjZXMnXG5cbnR5cGUgUHJvcHMgPSB7XG4gIGl0ZW1zOiBVc2VyW11cbn1cblxuY29uc3QgTGlzdCA9ICh7IGl0ZW1zIH06IFByb3BzKSA9PiAoXG4gIDx1bD5cbiAgICB7aXRlbXMubWFwKChpdGVtKSA9PiAoXG4gICAgICA8bGkga2V5PXtpdGVtLmlkfT5cbiAgICAgICAgPExpc3RJdGVtIGRhdGE9e2l0ZW19IC8+XG4gICAgICA8L2xpPlxuICAgICkpfVxuICA8L3VsPlxuKVxuXG5leHBvcnQgZGVmYXVsdCBMaXN0XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJMaXN0SXRlbSIsIkxpc3QiLCJpdGVtcyIsInVsIiwibWFwIiwiaXRlbSIsImxpIiwiZGF0YSIsImlkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./components/List.tsx\n");
-
-/***/ }),
-
-/***/ "./components/ListItem.tsx":
-/*!*********************************!*\
- !*** ./components/ListItem.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 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 next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"../node_modules/next/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nconst ListItem = ({ data })=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/detail/[id]\",\n as: `/detail/${data.id}`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: [\n data.id,\n \": \",\n data.name\n ]\n }, void 0, true, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/ListItem.tsx\",\n lineNumber: 12,\n columnNumber: 5\n }, undefined)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/ListItem.tsx\",\n lineNumber: 11,\n columnNumber: 3\n }, undefined);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ListItem);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0xpc3RJdGVtLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBeUI7QUFDRztBQVE1QixNQUFNRSxRQUFRLEdBQUcsQ0FBQyxFQUFFQyxJQUFJLEdBQVMsaUJBQy9CLDhEQUFDRixrREFBSTtRQUFDRyxJQUFJLEVBQUMsY0FBYztRQUFDQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLEVBQUVGLElBQUksQ0FBQ0csRUFBRSxDQUFDLENBQUM7a0JBQ2hELDRFQUFDQyxHQUFDOztnQkFDQ0osSUFBSSxDQUFDRyxFQUFFO2dCQUFDLElBQUU7Z0JBQUNILElBQUksQ0FBQ0ssSUFBSTs7Ozs7O3FCQUNuQjs7Ozs7aUJBQ0M7QUFHVCxpRUFBZU4sUUFBUSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2NvbXBvbmVudHMvTGlzdEl0ZW0udHN4PzM5ZjIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IExpbmsgZnJvbSAnbmV4dC9saW5rJ1xuXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcydcblxudHlwZSBQcm9wcyA9IHtcbiAgZGF0YTogVXNlclxufVxuXG5jb25zdCBMaXN0SXRlbSA9ICh7IGRhdGEgfTogUHJvcHMpID0+IChcbiAgPExpbmsgaHJlZj1cIi9kZXRhaWwvW2lkXVwiIGFzPXtgL2RldGFpbC8ke2RhdGEuaWR9YH0+XG4gICAgPGE+XG4gICAgICB7ZGF0YS5pZH06IHtkYXRhLm5hbWV9XG4gICAgPC9hPlxuICA8L0xpbms+XG4pXG5cbmV4cG9ydCBkZWZhdWx0IExpc3RJdGVtXG4iXSwibmFtZXMiOlsiUmVhY3QiLCJMaW5rIiwiTGlzdEl0ZW0iLCJkYXRhIiwiaHJlZiIsImFzIiwiaWQiLCJhIiwibmFtZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/ListItem.tsx\n");
-
-/***/ }),
-
-/***/ "./pages/initial-props.tsx":
-/*!*********************************!*\
- !*** ./pages/initial-props.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 */ \"getStaticProps\": () => (/* binding */ getStaticProps)\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 next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"../node_modules/next/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/router */ \"next/router\");\n/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_router__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_Layout__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/Layout */ \"./components/Layout.tsx\");\n/* harmony import */ var _components_List__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../components/List */ \"./components/List.tsx\");\n/* harmony import */ var _utils_sample_api__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/sample-api */ \"./utils/sample-api.ts\");\n\n\n\n\n\n\nconst WithInitialProps = ({ items })=>{\n const router = (0,next_router__WEBPACK_IMPORTED_MODULE_2__.useRouter)();\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Layout__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: \"List Example (as Function Component) | Next.js + TypeScript + Electron Example\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n children: \"List Example (as Function Component)\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/initial-props.tsx\",\n lineNumber: 17,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: [\n \"You are currently on: \",\n router.pathname\n ]\n }, void 0, true, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/initial-props.tsx\",\n lineNumber: 18,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_List__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n items: items\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/initial-props.tsx\",\n lineNumber: 19,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: \"Go home\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/initial-props.tsx\",\n lineNumber: 22,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/initial-props.tsx\",\n lineNumber: 21,\n columnNumber: 9\n }, undefined)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/initial-props.tsx\",\n lineNumber: 20,\n columnNumber: 7\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/initial-props.tsx\",\n lineNumber: 16,\n columnNumber: 5\n }, undefined);\n};\nasync function getStaticProps() {\n const items = await (0,_utils_sample_api__WEBPACK_IMPORTED_MODULE_5__.findAll)();\n return {\n props: {\n items\n }\n };\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (WithInitialProps);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wYWdlcy9pbml0aWFsLXByb3BzLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBO0FBQTRCO0FBQ1c7QUFDRTtBQUNKO0FBRVE7QUFPN0MsTUFBTUssZ0JBQWdCLEdBQUcsQ0FBQyxFQUFFQyxLQUFLLEdBQVMsR0FBSztJQUM3QyxNQUFNQyxNQUFNLEdBQUdOLHNEQUFTLEVBQUU7SUFDMUIscUJBQ0UsOERBQUNDLDBEQUFNO1FBQUNNLEtBQUssRUFBQyxnRkFBZ0Y7OzBCQUM1Riw4REFBQ0MsSUFBRTswQkFBQyxzQ0FBb0M7Ozs7O3lCQUFLOzBCQUM3Qyw4REFBQ0MsR0FBQzs7b0JBQUMsd0JBQXNCO29CQUFDSCxNQUFNLENBQUNJLFFBQVE7Ozs7Ozt5QkFBSzswQkFDOUMsOERBQUNSLHdEQUFJO2dCQUFDRyxLQUFLLEVBQUVBLEtBQUs7Ozs7O3lCQUFJOzBCQUN0Qiw4REFBQ0ksR0FBQzswQkFDQSw0RUFBQ1Ysa0RBQUk7b0JBQUNZLElBQUksRUFBQyxHQUFHOzhCQUNaLDRFQUFDQyxHQUFDO2tDQUFDLFNBQU87Ozs7O2lDQUFJOzs7Ozs2QkFDVDs7Ozs7eUJBQ0w7Ozs7OztpQkFDRyxDQUNWO0NBQ0Y7QUFFTSxlQUFlQyxjQUFjLEdBQUc7SUFDckMsTUFBTVIsS0FBSyxHQUFXLE1BQU1GLDBEQUFPLEVBQUU7SUFFckMsT0FBTztRQUFFVyxLQUFLLEVBQUU7WUFBRVQsS0FBSztTQUFFO0tBQUU7Q0FDNUI7QUFFRCxpRUFBZUQsZ0JBQWdCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcGFnZXMvaW5pdGlhbC1wcm9wcy50c3g/NjNmNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTGluayBmcm9tICduZXh0L2xpbmsnXG5pbXBvcnQgeyB1c2VSb3V0ZXIgfSBmcm9tICduZXh0L3JvdXRlcidcbmltcG9ydCBMYXlvdXQgZnJvbSAnLi4vY29tcG9uZW50cy9MYXlvdXQnXG5pbXBvcnQgTGlzdCBmcm9tICcuLi9jb21wb25lbnRzL0xpc3QnXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcydcbmltcG9ydCB7IGZpbmRBbGwgfSBmcm9tICcuLi91dGlscy9zYW1wbGUtYXBpJ1xuXG50eXBlIFByb3BzID0ge1xuICBpdGVtczogVXNlcltdXG4gIHBhdGhuYW1lOiBzdHJpbmdcbn1cblxuY29uc3QgV2l0aEluaXRpYWxQcm9wcyA9ICh7IGl0ZW1zIH06IFByb3BzKSA9PiB7XG4gIGNvbnN0IHJvdXRlciA9IHVzZVJvdXRlcigpXG4gIHJldHVybiAoXG4gICAgPExheW91dCB0aXRsZT1cIkxpc3QgRXhhbXBsZSAoYXMgRnVuY3Rpb24gQ29tcG9uZW50KSB8IE5leHQuanMgKyBUeXBlU2NyaXB0ICsgRWxlY3Ryb24gRXhhbXBsZVwiPlxuICAgICAgPGgxPkxpc3QgRXhhbXBsZSAoYXMgRnVuY3Rpb24gQ29tcG9uZW50KTwvaDE+XG4gICAgICA8cD5Zb3UgYXJlIGN1cnJlbnRseSBvbjoge3JvdXRlci5wYXRobmFtZX08L3A+XG4gICAgICA8TGlzdCBpdGVtcz17aXRlbXN9IC8+XG4gICAgICA8cD5cbiAgICAgICAgPExpbmsgaHJlZj1cIi9cIj5cbiAgICAgICAgICA8YT5HbyBob21lPC9hPlxuICAgICAgICA8L0xpbms+XG4gICAgICA8L3A+XG4gICAgPC9MYXlvdXQ+XG4gIClcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFN0YXRpY1Byb3BzKCkge1xuICBjb25zdCBpdGVtczogVXNlcltdID0gYXdhaXQgZmluZEFsbCgpXG5cbiAgcmV0dXJuIHsgcHJvcHM6IHsgaXRlbXMgfSB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFdpdGhJbml0aWFsUHJvcHNcbiJdLCJuYW1lcyI6WyJMaW5rIiwidXNlUm91dGVyIiwiTGF5b3V0IiwiTGlzdCIsImZpbmRBbGwiLCJXaXRoSW5pdGlhbFByb3BzIiwiaXRlbXMiLCJyb3V0ZXIiLCJ0aXRsZSIsImgxIiwicCIsInBhdGhuYW1lIiwiaHJlZiIsImEiLCJnZXRTdGF0aWNQcm9wcyIsInByb3BzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./pages/initial-props.tsx\n");
-
-/***/ }),
-
-/***/ "./utils/sample-api.ts":
-/*!*****************************!*\
- !*** ./utils/sample-api.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 */ \"dataArray\": () => (/* binding */ dataArray),\n/* harmony export */ \"findAll\": () => (/* binding */ findAll),\n/* harmony export */ \"findData\": () => (/* binding */ findData)\n/* harmony export */ });\n/** Dummy user data. */ const dataArray = [\n {\n id: 101,\n name: \"Alice\"\n },\n {\n id: 102,\n name: \"Bob\"\n },\n {\n id: 103,\n name: \"Caroline\"\n },\n {\n id: 104,\n name: \"Dave\"\n }, \n];\n/**\n * Calls a mock API which finds a user by ID from the list above.\n *\n * Throws an error if not found.\n */ async function findData(id) {\n const selected = dataArray.find((data)=>data.id === Number(id));\n if (!selected) {\n throw new Error(\"Cannot find user\");\n }\n return selected;\n}\n/** Calls a mock API which returns the above array to simulate \"get all\". */ async function findAll() {\n // Throw an error, just for example.\n if (!Array.isArray(dataArray)) {\n throw new Error(\"Cannot find users\");\n }\n return dataArray;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi91dGlscy9zYW1wbGUtYXBpLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLHVCQUF1QixDQUNoQixNQUFNQSxTQUFTLEdBQVc7SUFDL0I7UUFBRUMsRUFBRSxFQUFFLEdBQUc7UUFBRUMsSUFBSSxFQUFFLE9BQU87S0FBRTtJQUMxQjtRQUFFRCxFQUFFLEVBQUUsR0FBRztRQUFFQyxJQUFJLEVBQUUsS0FBSztLQUFFO0lBQ3hCO1FBQUVELEVBQUUsRUFBRSxHQUFHO1FBQUVDLElBQUksRUFBRSxVQUFVO0tBQUU7SUFDN0I7UUFBRUQsRUFBRSxFQUFFLEdBQUc7UUFBRUMsSUFBSSxFQUFFLE1BQU07S0FBRTtDQUMxQjtBQUVEOzs7O0dBSUcsQ0FDSSxlQUFlQyxRQUFRLENBQUNGLEVBQW1CLEVBQUU7SUFDbEQsTUFBTUcsUUFBUSxHQUFHSixTQUFTLENBQUNLLElBQUksQ0FBQyxDQUFDQyxJQUFJLEdBQUtBLElBQUksQ0FBQ0wsRUFBRSxLQUFLTSxNQUFNLENBQUNOLEVBQUUsQ0FBQyxDQUFDO0lBRWpFLElBQUksQ0FBQ0csUUFBUSxFQUFFO1FBQ2IsTUFBTSxJQUFJSSxLQUFLLENBQUMsa0JBQWtCLENBQUM7S0FDcEM7SUFFRCxPQUFPSixRQUFRO0NBQ2hCO0FBRUQsNEVBQTRFLENBQ3JFLGVBQWVLLE9BQU8sR0FBRztJQUM5QixvQ0FBb0M7SUFDcEMsSUFBSSxDQUFDQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ1gsU0FBUyxDQUFDLEVBQUU7UUFDN0IsTUFBTSxJQUFJUSxLQUFLLENBQUMsbUJBQW1CLENBQUM7S0FDckM7SUFFRCxPQUFPUixTQUFTO0NBQ2pCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vdXRpbHMvc2FtcGxlLWFwaS50cz9kODhhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzJ1xuXG4vKiogRHVtbXkgdXNlciBkYXRhLiAqL1xuZXhwb3J0IGNvbnN0IGRhdGFBcnJheTogVXNlcltdID0gW1xuICB7IGlkOiAxMDEsIG5hbWU6ICdBbGljZScgfSxcbiAgeyBpZDogMTAyLCBuYW1lOiAnQm9iJyB9LFxuICB7IGlkOiAxMDMsIG5hbWU6ICdDYXJvbGluZScgfSxcbiAgeyBpZDogMTA0LCBuYW1lOiAnRGF2ZScgfSxcbl1cblxuLyoqXG4gKiBDYWxscyBhIG1vY2sgQVBJIHdoaWNoIGZpbmRzIGEgdXNlciBieSBJRCBmcm9tIHRoZSBsaXN0IGFib3ZlLlxuICpcbiAqIFRocm93cyBhbiBlcnJvciBpZiBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaW5kRGF0YShpZDogbnVtYmVyIHwgc3RyaW5nKSB7XG4gIGNvbnN0IHNlbGVjdGVkID0gZGF0YUFycmF5LmZpbmQoKGRhdGEpID0+IGRhdGEuaWQgPT09IE51bWJlcihpZCkpXG5cbiAgaWYgKCFzZWxlY3RlZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGZpbmQgdXNlcicpXG4gIH1cblxuICByZXR1cm4gc2VsZWN0ZWRcbn1cblxuLyoqIENhbGxzIGEgbW9jayBBUEkgd2hpY2ggcmV0dXJucyB0aGUgYWJvdmUgYXJyYXkgdG8gc2ltdWxhdGUgXCJnZXQgYWxsXCIuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmluZEFsbCgpIHtcbiAgLy8gVGhyb3cgYW4gZXJyb3IsIGp1c3QgZm9yIGV4YW1wbGUuXG4gIGlmICghQXJyYXkuaXNBcnJheShkYXRhQXJyYXkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZmluZCB1c2VycycpXG4gIH1cblxuICByZXR1cm4gZGF0YUFycmF5XG59XG4iXSwibmFtZXMiOlsiZGF0YUFycmF5IiwiaWQiLCJuYW1lIiwiZmluZERhdGEiLCJzZWxlY3RlZCIsImZpbmQiLCJkYXRhIiwiTnVtYmVyIiwiRXJyb3IiLCJmaW5kQWxsIiwiQXJyYXkiLCJpc0FycmF5Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./utils/sample-api.ts\n");
-
-/***/ }),
-
-/***/ "../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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9saWIvaXMtZXJyb3IuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixrQkFBZTtBQUNmLHNCQUFzQjtBQUN0QixxQkFBcUIsbUJBQU8sQ0FBQyxvRUFBK0I7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLElBQXNDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9saWIvaXMtZXJyb3IuanM/NGZlYSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzRXJyb3I7XG5leHBvcnRzLmdldFByb3BlckVycm9yID0gZ2V0UHJvcGVyRXJyb3I7XG52YXIgX2lzUGxhaW5PYmplY3QgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9pcy1wbGFpbi1vYmplY3RcIik7XG5mdW5jdGlvbiBpc0Vycm9yKGVycikge1xuICAgIHJldHVybiB0eXBlb2YgZXJyID09PSBcIm9iamVjdFwiICYmIGVyciAhPT0gbnVsbCAmJiBcIm5hbWVcIiBpbiBlcnIgJiYgXCJtZXNzYWdlXCIgaW4gZXJyO1xufVxuZnVuY3Rpb24gZ2V0UHJvcGVyRXJyb3IoZXJyKSB7XG4gICAgaWYgKGlzRXJyb3IoZXJyKSkge1xuICAgICAgICByZXR1cm4gZXJyO1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIikge1xuICAgICAgICAvLyBwcm92aWRlIGJldHRlciBlcnJvciBmb3IgY2FzZSB3aGVyZSBgdGhyb3cgdW5kZWZpbmVkYFxuICAgICAgICAvLyBpcyBjYWxsZWQgaW4gZGV2ZWxvcG1lbnRcbiAgICAgICAgaWYgKHR5cGVvZiBlcnIgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRXJyb3IoXCJBbiB1bmRlZmluZWQgZXJyb3Igd2FzIHRocm93biwgXCIgKyBcInNlZSBoZXJlIGZvciBtb3JlIGluZm86IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL3RocmV3LXVuZGVmaW5lZFwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEVycm9yKFwiQSBudWxsIGVycm9yIHdhcyB0aHJvd24sIFwiICsgXCJzZWUgaGVyZSBmb3IgbW9yZSBpbmZvOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy90aHJldy11bmRlZmluZWRcIik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBFcnJvcigoMCwgX2lzUGxhaW5PYmplY3QpLmlzUGxhaW5PYmplY3QoZXJyKSA/IEpTT04uc3RyaW5naWZ5KGVycikgOiBlcnIgKyBcIlwiKTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtZXJyb3IuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvbGluay5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBQSwwR0FBOEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL25leHQvbGluay5qcz8xMzAzIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9kaXN0L2NsaWVudC9saW5rJylcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../node_modules/next/link.js\n");
-
-/***/ }),
-
-/***/ "next/dist/compiled/react-is":
-/*!**********************************************!*\
- !*** external "next/dist/compiled/react-is" ***!
- \**********************************************/
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("next/dist/compiled/react-is");
-
-/***/ }),
-
-/***/ "../shared/lib/app-router-context":
-/*!*************************************************************!*\
- !*** external "next/dist/shared/lib/app-router-context.js" ***!
- \*************************************************************/
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("next/dist/shared/lib/app-router-context.js");
-
-/***/ }),
-
-/***/ "../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");
-
-/***/ }),
-
-/***/ "../shared/lib/router/utils/add-path-prefix":
-/*!***********************************************************************!*\
- !*** external "next/dist/shared/lib/router/utils/add-path-prefix.js" ***!
- \***********************************************************************/
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("next/dist/shared/lib/router/utils/add-path-prefix.js");
-
-/***/ }),
-
-/***/ "./utils/format-next-pathname-info":
-/*!*********************************************************************************!*\
- !*** external "next/dist/shared/lib/router/utils/format-next-pathname-info.js" ***!
- \*********************************************************************************/
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("next/dist/shared/lib/router/utils/format-next-pathname-info.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-next-pathname-info":
-/*!******************************************************************************!*\
- !*** external "next/dist/shared/lib/router/utils/get-next-pathname-info.js" ***!
- \******************************************************************************/
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("next/dist/shared/lib/router/utils/get-next-pathname-info.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");
-
-/***/ }),
-
-/***/ "../shared/lib/router/utils/parse-path":
-/*!******************************************************************!*\
- !*** external "next/dist/shared/lib/router/utils/parse-path.js" ***!
- \******************************************************************/
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("next/dist/shared/lib/router/utils/parse-path.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");
-
-/***/ }),
-
-/***/ "../shared/lib/router/utils/path-has-prefix":
-/*!***********************************************************************!*\
- !*** external "next/dist/shared/lib/router/utils/path-has-prefix.js" ***!
- \***********************************************************************/
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("next/dist/shared/lib/router/utils/path-has-prefix.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");
-
-/***/ }),
-
-/***/ "../shared/lib/router/utils/remove-trailing-slash":
-/*!*****************************************************************************!*\
- !*** external "next/dist/shared/lib/router/utils/remove-trailing-slash.js" ***!
- \*****************************************************************************/
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("next/dist/shared/lib/router/utils/remove-trailing-slash.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");
-
-/***/ }),
-
-/***/ "../shared/lib/utils":
-/*!************************************************!*\
- !*** external "next/dist/shared/lib/utils.js" ***!
- \************************************************/
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("next/dist/shared/lib/utils.js");
-
-/***/ }),
-
-/***/ "next/head":
-/*!****************************!*\
- !*** external "next/head" ***!
- \****************************/
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("next/head");
-
-/***/ }),
-
-/***/ "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");
-
-/***/ })
-
-};
-;
-
-// 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/initial-props.tsx"));
-module.exports = __webpack_exports__;
-
-})();
\ No newline at end of file
diff --git a/renderer/.next/static/chunks/amp.js b/renderer/.next/static/chunks/amp.js
index 584e748..728ce29 100644
--- a/renderer/.next/static/chunks/amp.js
+++ b/renderer/.next/static/chunks/amp.js
@@ -323,7 +323,7 @@ eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar _interopRequireDefault = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _runtimeJs = /*#__PURE__*/ _interopRequireDefault(__webpack_require__(/*! ../node_modules/next/dist/compiled/regenerator-runtime/runtime.js */ \"../node_modules/next/dist/compiled/regenerator-runtime/runtime.js\"));\nvar _fouc = __webpack_require__(/*! ./fouc */ \"../node_modules/next/dist/client/dev/fouc.js\");\nvar _onDemandEntriesClient = _interopRequireDefault1(__webpack_require__(/*! ./on-demand-entries-client */ \"../node_modules/next/dist/client/dev/on-demand-entries-client.js\"));\nvar _websocket = __webpack_require__(/*! ./error-overlay/websocket */ \"../node_modules/next/dist/client/dev/error-overlay/websocket.js\");\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _interopRequireDefault1(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nvar data = JSON.parse(document.getElementById(\"__NEXT_DATA__\").textContent);\nwindow.__NEXT_DATA__ = data;\nvar assetPrefix = data.assetPrefix, page = data.page;\nassetPrefix = assetPrefix || \"\";\nvar mostRecentHash = null;\n/* eslint-disable-next-line */ var curHash = __webpack_require__.h();\nvar hotUpdatePath = assetPrefix + (assetPrefix.endsWith(\"/\") ? \"\" : \"/\") + \"_next/static/webpack/\";\n// Is there a newer version of this code available?\nfunction isUpdateAvailable() {\n // __webpack_hash__ is the hash of the current compilation.\n // It's a global variable injected by Webpack.\n /* eslint-disable-next-line */ return mostRecentHash !== __webpack_require__.h();\n}\n// Webpack disallows updates in other states.\nfunction canApplyUpdates() {\n return module.hot.status() === \"idle\";\n}\nfunction tryApplyUpdates() {\n return _tryApplyUpdates.apply(this, arguments);\n}\nfunction _tryApplyUpdates() {\n _tryApplyUpdates = // reloads the page when it has changed.\n _asyncToGenerator(_runtimeJs.default.mark(function _callee() {\n var res, jsonData, curPage, pageUpdated;\n return _runtimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n if (!(!isUpdateAvailable() || !canApplyUpdates())) {\n _ctx.next = 2;\n break;\n }\n return _ctx.abrupt(\"return\");\n case 2:\n _ctx.prev = 2;\n _ctx.next = 5;\n return fetch(typeof __webpack_require__.j !== \"undefined\" ? \"\".concat(hotUpdatePath).concat(curHash, \".\").concat(__webpack_require__.j, \".hot-update.json\") : \"\".concat(hotUpdatePath).concat(curHash, \".hot-update.json\"));\n case 5:\n res = _ctx.sent;\n _ctx.next = 8;\n return res.json();\n case 8:\n jsonData = _ctx.sent;\n curPage = page === \"/\" ? \"index\" : page;\n pageUpdated = (Array.isArray(jsonData.c) ? jsonData.c : Object.keys(jsonData.c)).some(function(mod) {\n return mod.indexOf(\"pages\".concat(curPage.startsWith(\"/\") ? curPage : \"/\".concat(curPage))) !== -1 || mod.indexOf(\"pages\".concat(curPage.startsWith(\"/\") ? curPage : \"/\".concat(curPage)).replace(/\\//g, \"\\\\\")) !== -1;\n });\n if (pageUpdated) {\n document.location.reload(true);\n } else {\n curHash = mostRecentHash;\n }\n _ctx.next = 18;\n break;\n case 14:\n _ctx.prev = 14;\n _ctx.t0 = _ctx[\"catch\"](2);\n console.error(\"Error occurred checking for update\", _ctx.t0);\n document.location.reload(true);\n case 18:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee, null, [\n [\n 2,\n 14\n ]\n ]);\n }));\n return _tryApplyUpdates.apply(this, arguments);\n}\n(0, _websocket).addMessageListener(function(event) {\n if (event.data === \"\\uD83D\\uDC93\") {\n return;\n }\n try {\n var message = JSON.parse(event.data);\n if (message.action === \"sync\" || message.action === \"built\") {\n if (!message.hash) {\n return;\n }\n mostRecentHash = message.hash;\n tryApplyUpdates();\n } else if (message.action === \"reloadPage\") {\n document.location.reload(true);\n }\n } catch (ex) {\n console.warn(\"Invalid HMR message: \" + event.data + \"\\n\" + ex);\n }\n});\n(0, _websocket).connectHMR({\n assetPrefix: assetPrefix,\n path: \"/_next/webpack-hmr\"\n});\n(0, _fouc).displayContent();\n(0, _onDemandEntriesClient).default(data.page);\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=amp-dev.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L2FtcC1kZXYuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7Ozs7OztBQUNiLElBQUlBLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyw0REFBUSxDQUFDO0FBQzdCLElBQUlDLHNCQUFzQixHQUFHQyx1QkFBc0IsQ0FBQ0YsbUJBQU8sQ0FBQyxvR0FBNEIsQ0FBQyxDQUFDO0FBQzFGLElBQUlHLFVBQVUsR0FBR0gsbUJBQU8sQ0FBQyxrR0FBMkIsQ0FBQztBQUNyRCxTQUFTSSxrQkFBa0IsQ0FBQ0MsR0FBRyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsS0FBSyxFQUFFQyxNQUFNLEVBQUVDLEdBQUcsRUFBRUMsR0FBRyxFQUFFO0lBQ3ZFLElBQUk7UUFDQSxJQUFJQyxJQUFJLEdBQUdQLEdBQUcsQ0FBQ0ssR0FBRyxDQUFDLENBQUNDLEdBQUcsQ0FBQztRQUN4QixJQUFJRSxLQUFLLEdBQUdELElBQUksQ0FBQ0MsS0FBSztLQUN6QixDQUFDLE9BQU9DLEtBQUssRUFBRTtRQUNaUCxNQUFNLENBQUNPLEtBQUssQ0FBQyxDQUFDO1FBQ2QsT0FBTztLQUNWO0lBQ0QsSUFBSUYsSUFBSSxDQUFDRyxJQUFJLEVBQUU7UUFDWFQsT0FBTyxDQUFDTyxLQUFLLENBQUMsQ0FBQztLQUNsQixNQUFNO1FBQ0hHLE9BQU8sQ0FBQ1YsT0FBTyxDQUFDTyxLQUFLLENBQUMsQ0FBQ0ksSUFBSSxDQUFDVCxLQUFLLEVBQUVDLE1BQU0sQ0FBQyxDQUFDO0tBQzlDO0NBQ0o7QUFDRCxTQUFTUyxpQkFBaUIsQ0FBQ0MsRUFBRSxFQUFFO0lBQzNCLE9BQU8sV0FBVztRQUNkLElBQUlDLElBQUksR0FBRyxJQUFJLEVBQUVDLElBQUksR0FBR0MsU0FBUztRQUNqQyxPQUFPLElBQUlOLE9BQU8sQ0FBQyxTQUFTVixPQUFPLEVBQUVDLE1BQU0sRUFBRTtZQUN6QyxJQUFJRixHQUFHLEdBQUdjLEVBQUUsQ0FBQ0ksS0FBSyxDQUFDSCxJ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T0FBTyxLQUFLLElBQUksQ0FBRSxJQUFJLE9BQU9xRCxPQUFPLENBQUNyRCxPQUFPLENBQUNELFVBQVUsS0FBSyxXQUFXLEVBQUU7SUFDcktrQyxNQUFNLENBQUNxQixjQUFjLENBQUNELE9BQU8sQ0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUU7UUFBRWYsS0FBSyxFQUFFLElBQUk7S0FBRSxDQUFDLENBQUM7SUFDdEVnRCxNQUFNLENBQUNzQixNQUFNLENBQUNGLE9BQU8sQ0FBQ3JELE9BQU8sRUFBRXFELE9BQU8sQ0FBQyxDQUFDO0lBQ3hDbkMsTUFBTSxDQUFDbUMsT0FBTyxHQUFHQSxPQUFPLENBQUNyRCxPQUFPLENBQUM7Q0FDbEMsQ0FFRCxtQ0FBbUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9hbXAtZGV2LmpzP2NjYTYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX2ZvdWMgPSByZXF1aXJlKFwiLi9mb3VjXCIpO1xudmFyIF9vbkRlbWFuZEVudHJpZXNDbGllbnQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL29uLWRlbWFuZC1lbnRyaWVzLWNsaWVudFwiKSk7XG52YXIgX3dlYnNvY2tldCA9IHJlcXVpcmUoXCIuL2Vycm9yLW92ZXJsYXkvd2Vic29ja2V0XCIpO1xuZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTtcbiAgICAgICAgdmFyIHZhbHVlID0gaW5mby52YWx1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKF9uZXh0LCBfdGhyb3cpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXMsIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHZhciBnZW4gPSBmbi5hcHBseShzZWxmLCBhcmdzKTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9uZXh0KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gX3Rocm93KGVycikge1xuICAgICAgICAgICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX25leHQodW5kZWZpbmVkKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHtcbiAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgfTtcbn1cbmNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdfX05FWFRfREFUQV9fJykudGV4dENvbnRlbnQpO1xud2luZG93Ll9fTkVYVF9EQVRBX18gPSBkYXRhO1xubGV0IHsgYXNzZXRQcmVmaXggLCBwYWdlICB9ID0gZGF0YTtcbmFzc2V0UHJlZml4ID0gYXNzZXRQcmVmaXggfHwgJyc7XG5sZXQgbW9zdFJlY2VudEhhc2ggPSBudWxsO1xuLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICovIGxldCBjdXJIYXNoID0gX193ZWJwYWNrX2hhc2hfXztcbmNvbnN0IGhvdFVwZGF0ZVBhdGggPSBhc3NldFByZWZpeCArIChhc3NldFByZWZpeC5lbmRzV2l0aCgnLycpID8gJycgOiAnLycpICsgJ19uZXh0L3N0YXRpYy93ZWJwYWNrLyc7XG4vLyBJcyB0aGVyZSBhIG5ld2VyIHZlcnNpb24gb2YgdGhpcyBjb2RlIGF2YWlsYWJsZT9cbmZ1bmN0aW9uIGlzVXBkYXRlQXZhaWxhYmxlKCkge1xuICAgIC8vIF9fd2VicGFja19oYXNoX18gaXMgdGhlIGhhc2ggb2YgdGhlIGN1cnJlbnQgY29tcGlsYXRpb24uXG4gICAgLy8gSXQncyBhIGdsb2JhbCB2YXJpYWJsZSBpbmplY3RlZCBieSBXZWJwYWNrLlxuICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSAqLyByZXR1cm4gbW9zdFJlY2VudEhhc2ggIT09IF9fd2VicGFja19oYXNoX187XG59XG4vLyBXZWJwYWNrIGRpc2FsbG93cyB1cGRhdGVzIGluIG90aGVyIHN0YXRlcy5cbmZ1bmN0aW9uIGNhbkFwcGx5VXBkYXRlcygpIHtcbiAgICByZXR1cm4gbW9kdWxlLmhvdC5zdGF0dXMoKSA9PT0gJ2lkbGUnO1xufVxuZnVuY3Rpb24gdHJ5QXBwbHlVcGRhdGVzKCkge1xuICAgIHJldHVybiBfdHJ5QXBwbHlVcGRhdGVzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5mdW5jdGlvbiBfdHJ5QXBwbHlVcGRhdGVzKCkge1xuICAgIF90cnlBcHBseVVwZGF0ZXMgPSAvLyBUaGlzIGZ1bmN0aW9uIHJlYWRzIGNvZGUgdXBkYXRlcyBvbiB0aGUgZmx5IGFuZCBoYXJkXG4gICAgLy8gcmVsb2FkcyB0aGUgcGFnZSB3aGVuIGl0IGhhcyBjaGFuZ2VkLlxuICAgIF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKigpIHtcbiAgICAgICAgaWYgKCFpc1VwZGF0ZUF2YWlsYWJsZSgpIHx8ICFjYW5BcHBseVVwZGF0ZXMoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSB5aWVsZCBmZXRjaCh0eXBlb2YgX193ZWJwYWNrX3J1bnRpbWVfaWRfXyAhPT0gJ3VuZGVmaW5lZCcgPyBgJHtob3RVcGRhdGVQYXRofSR7Y3VySGFzaH0uJHtfX3dlYnBhY2tfcnVudGltZV9pZF9ffS5ob3QtdXBkYXRlLmpzb25gIDogYCR7aG90VXBkYXRlUGF0aH0ke2N1ckhhc2h9LmhvdC11cGRhdGUuanNvbmApO1xuICAgICAgICAgICAgY29uc3QganNvbkRhdGEgPSB5aWVsZCByZXMuanNvbigpO1xuICAgICAgICAgICAgY29uc3QgY3VyUGFnZSA9IHBhZ2UgPT09ICcvJyA/ICdpbmRleCcgOiBwYWdlO1xuICAgICAgICAgICAgLy8gd2VicGFjayA1IHVzZXMgYW4gYXJyYXkgaW5zdGVhZFxuICAgICAgICAgICAgY29uc3QgcGFnZVVwZGF0ZWQgPSAoQXJyYXkuaXNBcnJheShqc29uRGF0YS5jKSA/IGpzb25EYXRhLmMgOiBPYmplY3Qua2V5cyhqc29uRGF0YS5jKSkuc29tZSgobW9kKT0+e1xuICAgICAgICAgICAgICAgIHJldHVybiBtb2QuaW5kZXhPZihgcGFnZXMke2N1clBhZ2Uuc3RhcnRzV2l0aCgnLycpID8gY3VyUGFnZSA6IGAvJHtjdXJQYWdlfWB9YCkgIT09IC0xIHx8IG1vZC5pbmRleE9mKGBwYWdlcyR7Y3VyUGFnZS5zdGFydHNXaXRoKCcvJykgPyBjdXJQYWdlIDogYC8ke2N1clBhZ2V9YH1gLnJlcGxhY2UoL1xcLy9nLCAnXFxcXCcpKSAhPT0gLTE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChwYWdlVXBkYXRlZCkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLnJlbG9hZCh0cnVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY3VySGFzaCA9IG1vc3RSZWNlbnRIYXNoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIG9jY3VycmVkIGNoZWNraW5nIGZvciB1cGRhdGUnLCBlcnIpO1xuICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24ucmVsb2FkKHRydWUpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIF90cnlBcHBseVVwZGF0ZXMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cbigwLCBfd2Vic29ja2V0KS5hZGRNZXNzYWdlTGlzdGVuZXIoKGV2ZW50KT0+e1xuICAgIGlmIChldmVudC5kYXRhID09PSAnXFx1RDgzRFxcdURDOTMnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IEpTT04ucGFyc2UoZXZlbnQuZGF0YSk7XG4gICAgICAgIGlmIChtZXNzYWdlLmFjdGlvbiA9PT0gJ3N5bmMnIHx8IG1lc3NhZ2UuYWN0aW9uID09PSAnYnVpbHQnKSB7XG4gICAgICAgICAgICBpZiAoIW1lc3NhZ2UuaGFzaCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1vc3RSZWNlbnRIYXNoID0gbWVzc2FnZS5oYXNoO1xuICAgICAgICAgICAgdHJ5QXBwbHlVcGRhdGVzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5hY3Rpb24gPT09ICdyZWxvYWRQYWdlJykge1xuICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24ucmVsb2FkKHRydWUpO1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdJbnZhbGlkIEhNUiBtZXNzYWdlOiAnICsgZXZlbnQuZGF0YSArICdcXG4nICsgZXgpO1xuICAgIH1cbn0pO1xuKDAsIF93ZWJzb2NrZXQpLmNvbm5lY3RITVIoe1xuICAgIGFzc2V0UHJlZml4LFxuICAgIHBhdGg6ICcvX25leHQvd2VicGFjay1obXInXG59KTtcbigwLCBfZm91YykuZGlzcGxheUNvbnRlbnQoKTtcbigwLCBfb25EZW1hbmRFbnRyaWVzQ2xpZW50KS5kZWZhdWx0KGRhdGEucGFnZSk7XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFtcC1kZXYuanMubWFwIl0sIm5hbWVzIjpbIl9mb3VjIiwicmVxdWlyZSIsIl9vbkRlbWFuZEVudHJpZXNDbGllbnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3dlYnNvY2tldCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsInJlc29sdmUiLCJyZWplY3QiLCJfbmV4dCIsIl90aHJvdyIsImtleSIsImFyZyIsImluZm8iLCJ2YWx1ZSIsImVycm9yIiwiZG9uZSIsIlByb21pc2UiLCJ0aGVuIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJmbiIsInNlbGYiLCJhcmdzIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJlcnIiLCJ1bmRlZmluZWQiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwidGV4dENvbnRlbnQiLCJ3aW5kb3ciLCJfX05FWFRfREFUQV9fIiwiYXNzZXRQcmVmaXgiLCJwYWdlIiwibW9zdFJlY2VudEhhc2giLCJjdXJIYXNoIiwiX193ZWJwYWNrX2hhc2hfXyIsImhvdFVwZGF0ZVBhdGgiLCJlbmRzV2l0aCIsImlzVXBkYXRlQXZhaWxhYmxlIiwiY2FuQXBwbHlVcGRhdGVzIiwibW9kdWxlIiwiaG90Iiwic3RhdHVzIiwidHJ5QXBwbHlVcGRhdGVzIiwiX3RyeUFwcGx5VXBkYXRlcyIsInJlcyIsImpzb25EYXRhIiwiY3VyUGFnZSIsInBhZ2VVcGRhdGVkIiwiZmV0Y2giLCJfX3dlYnBhY2tfcnVudGltZV9pZF9fIiwianNvbiIsIkFycmF5IiwiaXNBcnJheSIsImMiLCJPYmplY3QiLCJrZXlzIiwic29tZSIsIm1vZCIsImluZGV4T2YiLCJzdGFydHNXaXRoIiwicmVwbGFjZSIsImxvY2F0aW9uIiwicmVsb2FkIiwiY29uc29sZSIsImFkZE1lc3NhZ2VMaXN0ZW5lciIsImV2ZW50IiwibWVzc2FnZSIsImFjdGlvbiIsImhhc2giLCJleCIsIndhcm4iLCJjb25uZWN0SE1SIiwicGF0aCIsImRpc3BsYXlDb250ZW50IiwiZXhwb3J0cyIsImRlZmluZVByb3BlcnR5IiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../node_modules/next/dist/client/dev/amp-dev.js\n"));
+eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar _interopRequireDefault = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs = /*#__PURE__*/ _interopRequireDefault(__webpack_require__(/*! ../node_modules/next/dist/compiled/regenerator-runtime/runtime.js */ \"../node_modules/next/dist/compiled/regenerator-runtime/runtime.js\"));\nvar _fouc = __webpack_require__(/*! ./fouc */ \"../node_modules/next/dist/client/dev/fouc.js\");\nvar _onDemandEntriesClient = _interopRequireDefault1(__webpack_require__(/*! ./on-demand-entries-client */ \"../node_modules/next/dist/client/dev/on-demand-entries-client.js\"));\nvar _websocket = __webpack_require__(/*! ./error-overlay/websocket */ \"../node_modules/next/dist/client/dev/error-overlay/websocket.js\");\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _interopRequireDefault1(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nvar data = JSON.parse(document.getElementById(\"__NEXT_DATA__\").textContent);\nwindow.__NEXT_DATA__ = data;\nvar assetPrefix = data.assetPrefix, page = data.page;\nassetPrefix = assetPrefix || \"\";\nvar mostRecentHash = null;\n/* eslint-disable-next-line */ var curHash = __webpack_require__.h();\nvar hotUpdatePath = assetPrefix + (assetPrefix.endsWith(\"/\") ? \"\" : \"/\") + \"_next/static/webpack/\";\n// Is there a newer version of this code available?\nfunction isUpdateAvailable() {\n // __webpack_hash__ is the hash of the current compilation.\n // It's a global variable injected by Webpack.\n /* eslint-disable-next-line */ return mostRecentHash !== __webpack_require__.h();\n}\n// Webpack disallows updates in other states.\nfunction canApplyUpdates() {\n return module.hot.status() === \"idle\";\n}\nfunction tryApplyUpdates() {\n return _tryApplyUpdates.apply(this, arguments);\n}\nfunction _tryApplyUpdates() {\n _tryApplyUpdates = // reloads the page when it has changed.\n _asyncToGenerator(_cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.mark(function _callee() {\n var res, jsonData, curPage, pageUpdated;\n return _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n if (!(!isUpdateAvailable() || !canApplyUpdates())) {\n _ctx.next = 2;\n break;\n }\n return _ctx.abrupt(\"return\");\n case 2:\n _ctx.prev = 2;\n _ctx.next = 5;\n return fetch(typeof __webpack_require__.j !== \"undefined\" ? \"\".concat(hotUpdatePath).concat(curHash, \".\").concat(__webpack_require__.j, \".hot-update.json\") : \"\".concat(hotUpdatePath).concat(curHash, \".hot-update.json\"));\n case 5:\n res = _ctx.sent;\n _ctx.next = 8;\n return res.json();\n case 8:\n jsonData = _ctx.sent;\n curPage = page === \"/\" ? \"index\" : page;\n pageUpdated = (Array.isArray(jsonData.c) ? jsonData.c : Object.keys(jsonData.c)).some(function(mod) {\n return mod.indexOf(\"pages\".concat(curPage.startsWith(\"/\") ? curPage : \"/\".concat(curPage))) !== -1 || mod.indexOf(\"pages\".concat(curPage.startsWith(\"/\") ? curPage : \"/\".concat(curPage)).replace(/\\//g, \"\\\\\")) !== -1;\n });\n if (pageUpdated) {\n document.location.reload(true);\n } else {\n curHash = mostRecentHash;\n }\n _ctx.next = 18;\n break;\n case 14:\n _ctx.prev = 14;\n _ctx.t0 = _ctx[\"catch\"](2);\n console.error(\"Error occurred checking for update\", _ctx.t0);\n document.location.reload(true);\n case 18:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee, null, [\n [\n 2,\n 14\n ]\n ]);\n }));\n return _tryApplyUpdates.apply(this, arguments);\n}\n(0, _websocket).addMessageListener(function(event) {\n if (event.data === \"\\uD83D\\uDC93\") {\n return;\n }\n try {\n var message = JSON.parse(event.data);\n if (message.action === \"sync\" || message.action === \"built\") {\n if (!message.hash) {\n return;\n }\n mostRecentHash = message.hash;\n tryApplyUpdates();\n } else if (message.action === \"reloadPage\") {\n document.location.reload(true);\n }\n } catch (ex) {\n console.warn(\"Invalid HMR message: \" + event.data + \"\\n\" + ex);\n }\n});\n(0, _websocket).connectHMR({\n assetPrefix: assetPrefix,\n path: \"/_next/webpack-hmr\"\n});\n(0, _fouc).displayContent();\n(0, _onDemandEntriesClient).default(data.page);\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=amp-dev.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L2FtcC1kZXYuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7Ozs7OztBQUNiLElBQUlBLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyw0REFBUSxDQUFDO0FBQzdCLElBQUlDLHNCQUFzQixHQUFHQyx1QkFBc0IsQ0FBQ0YsbUJBQU8sQ0FBQyxvR0FBNEIsQ0FBQyxDQUFDO0FBQzFGLElBQUlHLFVBQVUsR0FBR0gsbUJBQU8sQ0FBQyxrR0FBMkIsQ0FBQztBQUNyRCxTQUFTSSxrQkFBa0IsQ0FBQ0MsR0FBRyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsS0FBSyxFQUFFQyxNQUFNLEVBQUVDLEdBQUcsRUFBRUMsR0FBRyxFQUFFO0lBQ3ZFLElBQUk7UUFDQSxJQUFJQyxJQUFJLEdBQUdQLEdBQUcsQ0FBQ0ssR0FBRyxDQUFDLENBQUNDLEdBQUcsQ0FBQztRQUN4QixJQUFJRSxLQUFLLEdBQUdELElBQUksQ0FBQ0MsS0FBSztLQUN6QixDQUFDLE9BQU9DLEtBQUssRUFBRTtRQUNaUCxNQUFNLENBQUNPLEtBQUssQ0FBQyxDQUFDO1FBQ2QsT0FBTztLQUNWO0lBQ0QsSUFBSUYsSUFBSSxDQUFDRyxJQUFJLEVBQUU7UUFDWFQsT0FBTyxDQUFDTyxLQUFLLENBQUMsQ0FBQztLQUNsQixNQUFNO1FBQ0hHLE9BQU8sQ0FBQ1YsT0FBTyxDQUFDTyxLQUFLLENBQUMsQ0FBQ0ksSUFBSSxDQUFDVCxLQUFLLEVBQUVDLE1BQU0sQ0FBQyxDQUFDO0tBQzlDO0NBQ0o7QUFDRCxTQUFTUyxpQkFBaUIsQ0FBQ0MsRUFBRSxFQUFFO0lBQzNCLE9BQU8sV0FBVztRQUNkLElBQUlDLElBQUksR0FBRyxJQUFJLEVBQUVDLElBQUksR0FBR0MsU0FBUztRQUNqQyxPQUFPLElBQUlOLE9BQU8sQ0FBQyxTQUFTVixPQUFPLEVBQUVDLE1BQU0sRUFBRTtZQUN6QyxJQUFJRixHQUFHLEdBQUdjLEVBQUUsQ0FBQ0ksS0FBSyxDQUFDSCxJ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T0FBTyxLQUFLLElBQUksQ0FBRSxJQUFJLE9BQU9xRCxPQUFPLENBQUNyRCxPQUFPLENBQUNELFVBQVUsS0FBSyxXQUFXLEVBQUU7SUFDcktrQyxNQUFNLENBQUNxQixjQUFjLENBQUNELE9BQU8sQ0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUU7UUFBRWYsS0FBSyxFQUFFLElBQUk7S0FBRSxDQUFDLENBQUM7SUFDdEVnRCxNQUFNLENBQUNzQixNQUFNLENBQUNGLE9BQU8sQ0FBQ3JELE9BQU8sRUFBRXFELE9BQU8sQ0FBQyxDQUFDO0lBQ3hDbkMsTUFBTSxDQUFDbUMsT0FBTyxHQUFHQSxPQUFPLENBQUNyRCxPQUFPLENBQUM7Q0FDbEMsQ0FFRCxtQ0FBbUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9hbXAtZGV2LmpzP2NjYTYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX2ZvdWMgPSByZXF1aXJlKFwiLi9mb3VjXCIpO1xudmFyIF9vbkRlbWFuZEVudHJpZXNDbGllbnQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL29uLWRlbWFuZC1lbnRyaWVzLWNsaWVudFwiKSk7XG52YXIgX3dlYnNvY2tldCA9IHJlcXVpcmUoXCIuL2Vycm9yLW92ZXJsYXkvd2Vic29ja2V0XCIpO1xuZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTtcbiAgICAgICAgdmFyIHZhbHVlID0gaW5mby52YWx1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKF9uZXh0LCBfdGhyb3cpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXMsIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHZhciBnZW4gPSBmbi5hcHBseShzZWxmLCBhcmdzKTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9uZXh0KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gX3Rocm93KGVycikge1xuICAgICAgICAgICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX25leHQodW5kZWZpbmVkKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHtcbiAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgfTtcbn1cbmNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdfX05FWFRfREFUQV9fJykudGV4dENvbnRlbnQpO1xud2luZG93Ll9fTkVYVF9EQVRBX18gPSBkYXRhO1xubGV0IHsgYXNzZXRQcmVmaXggLCBwYWdlICB9ID0gZGF0YTtcbmFzc2V0UHJlZml4ID0gYXNzZXRQcmVmaXggfHwgJyc7XG5sZXQgbW9zdFJlY2VudEhhc2ggPSBudWxsO1xuLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICovIGxldCBjdXJIYXNoID0gX193ZWJwYWNrX2hhc2hfXztcbmNvbnN0IGhvdFVwZGF0ZVBhdGggPSBhc3NldFByZWZpeCArIChhc3NldFByZWZpeC5lbmRzV2l0aCgnLycpID8gJycgOiAnLycpICsgJ19uZXh0L3N0YXRpYy93ZWJwYWNrLyc7XG4vLyBJcyB0aGVyZSBhIG5ld2VyIHZlcnNpb24gb2YgdGhpcyBjb2RlIGF2YWlsYWJsZT9cbmZ1bmN0aW9uIGlzVXBkYXRlQXZhaWxhYmxlKCkge1xuICAgIC8vIF9fd2VicGFja19oYXNoX18gaXMgdGhlIGhhc2ggb2YgdGhlIGN1cnJlbnQgY29tcGlsYXRpb24uXG4gICAgLy8gSXQncyBhIGdsb2JhbCB2YXJpYWJsZSBpbmplY3RlZCBieSBXZWJwYWNrLlxuICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSAqLyByZXR1cm4gbW9zdFJlY2VudEhhc2ggIT09IF9fd2VicGFja19oYXNoX187XG59XG4vLyBXZWJwYWNrIGRpc2FsbG93cyB1cGRhdGVzIGluIG90aGVyIHN0YXRlcy5cbmZ1bmN0aW9uIGNhbkFwcGx5VXBkYXRlcygpIHtcbiAgICByZXR1cm4gbW9kdWxlLmhvdC5zdGF0dXMoKSA9PT0gJ2lkbGUnO1xufVxuZnVuY3Rpb24gdHJ5QXBwbHlVcGRhdGVzKCkge1xuICAgIHJldHVybiBfdHJ5QXBwbHlVcGRhdGVzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5mdW5jdGlvbiBfdHJ5QXBwbHlVcGRhdGVzKCkge1xuICAgIF90cnlBcHBseVVwZGF0ZXMgPSAvLyBUaGlzIGZ1bmN0aW9uIHJlYWRzIGNvZGUgdXBkYXRlcyBvbiB0aGUgZmx5IGFuZCBoYXJkXG4gICAgLy8gcmVsb2FkcyB0aGUgcGFnZSB3aGVuIGl0IGhhcyBjaGFuZ2VkLlxuICAgIF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKigpIHtcbiAgICAgICAgaWYgKCFpc1VwZGF0ZUF2YWlsYWJsZSgpIHx8ICFjYW5BcHBseVVwZGF0ZXMoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSB5aWVsZCBmZXRjaCh0eXBlb2YgX193ZWJwYWNrX3J1bnRpbWVfaWRfXyAhPT0gJ3VuZGVmaW5lZCcgPyBgJHtob3RVcGRhdGVQYXRofSR7Y3VySGFzaH0uJHtfX3dlYnBhY2tfcnVudGltZV9pZF9ffS5ob3QtdXBkYXRlLmpzb25gIDogYCR7aG90VXBkYXRlUGF0aH0ke2N1ckhhc2h9LmhvdC11cGRhdGUuanNvbmApO1xuICAgICAgICAgICAgY29uc3QganNvbkRhdGEgPSB5aWVsZCByZXMuanNvbigpO1xuICAgICAgICAgICAgY29uc3QgY3VyUGFnZSA9IHBhZ2UgPT09ICcvJyA/ICdpbmRleCcgOiBwYWdlO1xuICAgICAgICAgICAgLy8gd2VicGFjayA1IHVzZXMgYW4gYXJyYXkgaW5zdGVhZFxuICAgICAgICAgICAgY29uc3QgcGFnZVVwZGF0ZWQgPSAoQXJyYXkuaXNBcnJheShqc29uRGF0YS5jKSA/IGpzb25EYXRhLmMgOiBPYmplY3Qua2V5cyhqc29uRGF0YS5jKSkuc29tZSgobW9kKT0+e1xuICAgICAgICAgICAgICAgIHJldHVybiBtb2QuaW5kZXhPZihgcGFnZXMke2N1clBhZ2Uuc3RhcnRzV2l0aCgnLycpID8gY3VyUGFnZSA6IGAvJHtjdXJQYWdlfWB9YCkgIT09IC0xIHx8IG1vZC5pbmRleE9mKGBwYWdlcyR7Y3VyUGFnZS5zdGFydHNXaXRoKCcvJykgPyBjdXJQYWdlIDogYC8ke2N1clBhZ2V9YH1gLnJlcGxhY2UoL1xcLy9nLCAnXFxcXCcpKSAhPT0gLTE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChwYWdlVXBkYXRlZCkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLnJlbG9hZCh0cnVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY3VySGFzaCA9IG1vc3RSZWNlbnRIYXNoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIG9jY3VycmVkIGNoZWNraW5nIGZvciB1cGRhdGUnLCBlcnIpO1xuICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24ucmVsb2FkKHRydWUpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIF90cnlBcHBseVVwZGF0ZXMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cbigwLCBfd2Vic29ja2V0KS5hZGRNZXNzYWdlTGlzdGVuZXIoKGV2ZW50KT0+e1xuICAgIGlmIChldmVudC5kYXRhID09PSAnXFx1RDgzRFxcdURDOTMnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IEpTT04ucGFyc2UoZXZlbnQuZGF0YSk7XG4gICAgICAgIGlmIChtZXNzYWdlLmFjdGlvbiA9PT0gJ3N5bmMnIHx8IG1lc3NhZ2UuYWN0aW9uID09PSAnYnVpbHQnKSB7XG4gICAgICAgICAgICBpZiAoIW1lc3NhZ2UuaGFzaCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1vc3RSZWNlbnRIYXNoID0gbWVzc2FnZS5oYXNoO1xuICAgICAgICAgICAgdHJ5QXBwbHlVcGRhdGVzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5hY3Rpb24gPT09ICdyZWxvYWRQYWdlJykge1xuICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24ucmVsb2FkKHRydWUpO1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdJbnZhbGlkIEhNUiBtZXNzYWdlOiAnICsgZXZlbnQuZGF0YSArICdcXG4nICsgZXgpO1xuICAgIH1cbn0pO1xuKDAsIF93ZWJzb2NrZXQpLmNvbm5lY3RITVIoe1xuICAgIGFzc2V0UHJlZml4LFxuICAgIHBhdGg6ICcvX25leHQvd2VicGFjay1obXInXG59KTtcbigwLCBfZm91YykuZGlzcGxheUNvbnRlbnQoKTtcbigwLCBfb25EZW1hbmRFbnRyaWVzQ2xpZW50KS5kZWZhdWx0KGRhdGEucGFnZSk7XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFtcC1kZXYuanMubWFwIl0sIm5hbWVzIjpbIl9mb3VjIiwicmVxdWlyZSIsIl9vbkRlbWFuZEVudHJpZXNDbGllbnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3dlYnNvY2tldCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsInJlc29sdmUiLCJyZWplY3QiLCJfbmV4dCIsIl90aHJvdyIsImtleSIsImFyZyIsImluZm8iLCJ2YWx1ZSIsImVycm9yIiwiZG9uZSIsIlByb21pc2UiLCJ0aGVuIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJmbiIsInNlbGYiLCJhcmdzIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJlcnIiLCJ1bmRlZmluZWQiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwidGV4dENvbnRlbnQiLCJ3aW5kb3ciLCJfX05FWFRfREFUQV9fIiwiYXNzZXRQcmVmaXgiLCJwYWdlIiwibW9zdFJlY2VudEhhc2giLCJjdXJIYXNoIiwiX193ZWJwYWNrX2hhc2hfXyIsImhvdFVwZGF0ZVBhdGgiLCJlbmRzV2l0aCIsImlzVXBkYXRlQXZhaWxhYmxlIiwiY2FuQXBwbHlVcGRhdGVzIiwibW9kdWxlIiwiaG90Iiwic3RhdHVzIiwidHJ5QXBwbHlVcGRhdGVzIiwiX3RyeUFwcGx5VXBkYXRlcyIsInJlcyIsImpzb25EYXRhIiwiY3VyUGFnZSIsInBhZ2VVcGRhdGVkIiwiZmV0Y2giLCJfX3dlYnBhY2tfcnVudGltZV9pZF9fIiwianNvbiIsIkFycmF5IiwiaXNBcnJheSIsImMiLCJPYmplY3QiLCJrZXlzIiwic29tZSIsIm1vZCIsImluZGV4T2YiLCJzdGFydHNXaXRoIiwicmVwbGFjZSIsImxvY2F0aW9uIiwicmVsb2FkIiwiY29uc29sZSIsImFkZE1lc3NhZ2VMaXN0ZW5lciIsImV2ZW50IiwibWVzc2FnZSIsImFjdGlvbiIsImhhc2giLCJleCIsIndhcm4iLCJjb25uZWN0SE1SIiwicGF0aCIsImRpc3BsYXlDb250ZW50IiwiZXhwb3J0cyIsImRlZmluZVByb3BlcnR5IiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../node_modules/next/dist/client/dev/amp-dev.js\n"));
/***/ }),
@@ -356,7 +356,7 @@ eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar _interopRequireDefault = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _runtimeJs = /*#__PURE__*/ _interopRequireDefault(__webpack_require__(/*! ../node_modules/next/dist/compiled/regenerator-runtime/runtime.js */ \"../node_modules/next/dist/compiled/regenerator-runtime/runtime.js\"));\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\nvar _router = _interopRequireDefault1(__webpack_require__(/*! next/router */ \"../node_modules/next/router.js\"));\nvar _websocket = __webpack_require__(/*! ./error-overlay/websocket */ \"../node_modules/next/dist/client/dev/error-overlay/websocket.js\");\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self1 = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self1, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _interopRequireDefault1(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nvar _default = _asyncToGenerator(_runtimeJs.default.mark(function _callee(page) {\n return _runtimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n if (page) {\n // in AMP the router isn't initialized on the client and\n // client-transitions don't occur so ping initial page\n setInterval(function() {\n (0, _websocket).sendMessage(JSON.stringify({\n event: \"ping\",\n page: page\n }));\n }, 2500);\n } else {\n _router.default.ready(function() {\n setInterval(function() {\n // when notFound: true is returned we should use the notFoundPage\n // as the Router.pathname will point to the 404 page but we want\n // to ping the source page that returned notFound: true instead\n var notFoundSrcPage = self.__NEXT_DATA__.notFoundSrcPage;\n var pathname = (_router.default.pathname === \"/404\" || _router.default.pathname === \"/_error\") && notFoundSrcPage ? notFoundSrcPage : _router.default.pathname;\n (0, _websocket).sendMessage(JSON.stringify({\n event: \"ping\",\n page: pathname\n }));\n }, 2500);\n });\n }\n (0, _websocket).addMessageListener(function(event) {\n if (event.data.indexOf(\"{\") === -1) return;\n try {\n var payload = JSON.parse(event.data);\n // don't attempt fetching the page if we're already showing\n // the dev overlay as this can cause the error to be triggered\n // repeatedly\n if (payload.event === \"pong\" && payload.invalid && !self.__NEXT_DATA__.err) {\n // Payload can be invalid even if the page does exist.\n // So, we check if it can be created.\n fetch(location.href, {\n credentials: \"same-origin\"\n }).then(function(pageRes) {\n if (pageRes.status === 200) {\n // Page exists now, reload\n location.reload();\n } else {\n // Page doesn't exist\n if (self.__NEXT_DATA__.page === _router.default.pathname && _router.default.pathname !== \"/_error\") {\n // We are still on the page,\n // reload to show 404 error page\n location.reload();\n }\n }\n });\n }\n } catch (err) {\n console.error(\"on-demand-entries failed to parse response\", err);\n }\n });\n case 2:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee);\n}));\nexports[\"default\"] = _default;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=on-demand-entries-client.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L29uLWRlbWFuZC1lbnRyaWVzLWNsaWVudC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7Ozs7O0FBQ2JBLDhDQUE2QztJQUN6Q0csS0FBSyxFQUFFLElBQUk7Q0FDZCxFQUFDLENBQUM7QUFDSEQsa0JBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUN6QixJQUFJRyxPQUFPLEdBQUdDLHVCQUFzQixDQUFDQyxtQkFBTyxDQUFDLG1EQUFhLENBQUMsQ0FBQztBQUM1RCxJQUFJQyxVQUFVLEdBQUdELG1CQUFPLENBQUMsa0dBQTJCLENBQUM7QUFDckQsU0FBU0Usa0JBQWtCLENBQUNDLEdBQUcsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLEtBQUssRUFBRUMsTUFBTSxFQUFFQyxHQUFHLEVBQUVDLEdBQUcsRUFBRTtJQUN2RSxJQUFJO1FBQ0EsSUFBSUMsSUFBSSxHQUFHUCxHQUFHLENBQUNLLEdBQUcsQ0FBQyxDQUFDQyxHQUFHLENBQUM7UUFDeEIsSUFBSWIsS0FBSyxHQUFHYyxJQUFJLENBQUNkLEtBQUs7S0FDekIsQ0FBQyxPQUFPZSxLQUFLLEVBQUU7UUFDWk4sTUFBTSxDQUFDTSxLQUFLLENBQUMsQ0FBQztRQUNkLE9BQU87S0FDVjtJQUNELElBQUlELElBQUksQ0FBQ0UsSUFBSSxFQUFFO1FBQ1hSLE9BQU8sQ0FBQ1IsS0FBSyxDQUFDLENBQUM7S0FDbEIsTUFBTTtRQUNIaUIsT0FBTyxDQUFDVCxPQUFPLENBQUNSLEtBQUssQ0FBQyxDQUFDa0IsSUFBSSxDQUFDUixLQUFLLEVBQUVDLE1BQU0sQ0FBQyxDQUFDO0tBQzlDO0NBQ0o7QUFDRCxTQUFTUSxpQkFBaUIsQ0FBQ0MsRUFBRSxFQUFFO0lBQzNCLE9BQU8sV0FBVztRQUNkLElBQUlDLEtBQUksR0FBRyxJQUFJLEVBQUVDLElBQUksR0FBR0MsU0FBUztRQUNqQyxPQUFPLElBQUlOLE9BQU8sQ0FBQyxTQUFTVCxPQUFPLEVBQUVDLE1B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QUFPLEVBQUVGLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDd0QsTUFBTSxDQUFDeEQsT0FBTyxHQUFHQSxPQUFPLENBQUNFLE9BQU8sQ0FBQztDQUNsQyxDQUVELG9EQUFvRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L29uLWRlbWFuZC1lbnRyaWVzLWNsaWVudC5qcz8wMTQ4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xudmFyIF9yb3V0ZXIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJuZXh0L3JvdXRlclwiKSk7XG52YXIgX3dlYnNvY2tldCA9IHJlcXVpcmUoXCIuL2Vycm9yLW92ZXJsYXkvd2Vic29ja2V0XCIpO1xuZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTtcbiAgICAgICAgdmFyIHZhbHVlID0gaW5mby52YWx1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKF9uZXh0LCBfdGhyb3cpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXMsIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHZhciBnZW4gPSBmbi5hcHBseShzZWxmLCBhcmdzKTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9uZXh0KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gX3Rocm93KGVycikge1xuICAgICAgICAgICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX25leHQodW5kZWZpbmVkKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHtcbiAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgfTtcbn1cbnZhciBfZGVmYXVsdCA9IF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKihwYWdlKSB7XG4gICAgaWYgKHBhZ2UpIHtcbiAgICAgICAgLy8gaW4gQU1QIHRoZSByb3V0ZXIgaXNuJ3QgaW5pdGlhbGl6ZWQgb24gdGhlIGNsaWVudCBhbmRcbiAgICAgICAgLy8gY2xpZW50LXRyYW5zaXRpb25zIGRvbid0IG9jY3VyIHNvIHBpbmcgaW5pdGlhbCBwYWdlXG4gICAgICAgIHNldEludGVydmFsKCgpPT57XG4gICAgICAgICAgICAoMCwgX3dlYnNvY2tldCkuc2VuZE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGV2ZW50OiAncGluZycsXG4gICAgICAgICAgICAgICAgcGFnZVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9LCAyNTAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBfcm91dGVyLmRlZmF1bHQucmVhZHkoKCk9PntcbiAgICAgICAgICAgIHNldEludGVydmFsKCgpPT57XG4gICAgICAgICAgICAgICAgLy8gd2hlbiBub3RGb3VuZDogdHJ1ZSBpcyByZXR1cm5lZCB3ZSBzaG91bGQgdXNlIHRoZSBub3RGb3VuZFBhZ2VcbiAgICAgICAgICAgICAgICAvLyBhcyB0aGUgUm91dGVyLnBhdGhuYW1lIHdpbGwgcG9pbnQgdG8gdGhlIDQwNCBwYWdlIGJ1dCB3ZSB3YW50XG4gICAgICAgICAgICAgICAgLy8gdG8gcGluZyB0aGUgc291cmNlIHBhZ2UgdGhhdCByZXR1cm5lZCBub3RGb3VuZDogdHJ1ZSBpbnN0ZWFkXG4gICAgICAgICAgICAgICAgY29uc3Qgbm90Rm91bmRTcmNQYWdlID0gc2VsZi5fX05FWFRfREFUQV9fLm5vdEZvdW5kU3JjUGFnZTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRobmFtZSA9IChfcm91dGVyLmRlZmF1bHQucGF0aG5hbWUgPT09ICcvNDA0JyB8fCBfcm91dGVyLmRlZmF1bHQucGF0aG5hbWUgPT09ICcvX2Vycm9yJykgJiYgbm90Rm91bmRTcmNQYWdlID8gbm90Rm91bmRTcmNQYWdlIDogX3JvdXRlci5kZWZhdWx0LnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICgwLCBfd2Vic29ja2V0KS5zZW5kTWVzc2FnZShKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50OiAncGluZycsXG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IHBhdGhuYW1lXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfSwgMjUwMCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAoMCwgX3dlYnNvY2tldCkuYWRkTWVzc2FnZUxpc3RlbmVyKChldmVudCk9PntcbiAgICAgICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZigneycpID09PSAtMSkgcmV0dXJuO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IEpTT04ucGFyc2UoZXZlbnQuZGF0YSk7XG4gICAgICAgICAgICAvLyBkb24ndCBhdHRlbXB0IGZldGNoaW5nIHRoZSBwYWdlIGlmIHdlJ3JlIGFscmVhZHkgc2hvd2luZ1xuICAgICAgICAgICAgLy8gdGhlIGRldiBvdmVybGF5IGFzIHRoaXMgY2FuIGNhdXNlIHRoZSBlcnJvciB0byBiZSB0cmlnZ2VyZWRcbiAgICAgICAgICAgIC8vIHJlcGVhdGVkbHlcbiAgICAgICAgICAgIGlmIChwYXlsb2FkLmV2ZW50ID09PSAncG9uZycgJiYgcGF5bG9hZC5pbnZhbGlkICYmICFzZWxmLl9fTkVYVF9EQVRBX18uZXJyKSB7XG4gICAgICAgICAgICAgICAgLy8gUGF5bG9hZCBjYW4gYmUgaW52YWxpZCBldmVuIGlmIHRoZSBwYWdlIGRvZXMgZXhpc3QuXG4gICAgICAgICAgICAgICAgLy8gU28sIHdlIGNoZWNrIGlmIGl0IGNhbiBiZSBjcmVhdGVkLlxuICAgICAgICAgICAgICAgIGZldGNoKGxvY2F0aW9uLmhyZWYsIHtcbiAgICAgICAgICAgICAgICAgICAgY3JlZGVudGlhbHM6ICdzYW1lLW9yaWdpbidcbiAgICAgICAgICAgICAgICB9KS50aGVuKChwYWdlUmVzKT0+e1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFnZVJlcy5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFnZSBleGlzdHMgbm93LCByZWxvYWRcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFnZSBkb2Vzbid0IGV4aXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5fX05FWFRfREFUQV9fLnBhZ2UgPT09IF9yb3V0ZXIuZGVmYXVsdC5wYXRobmFtZSAmJiBfcm91dGVyLmRlZmF1bHQucGF0aG5hbWUgIT09ICcvX2Vycm9yJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBzdGlsbCBvbiB0aGUgcGFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWxvYWQgdG8gc2hvdyA0MDQgZXJyb3IgcGFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignb24tZGVtYW5kLWVudHJpZXMgZmFpbGVkIHRvIHBhcnNlIHJlc3BvbnNlJywgZXJyKTtcbiAgICAgICAgfVxuICAgIH0pO1xufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDtcblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9b24tZGVtYW5kLWVudHJpZXMtY2xpZW50LmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImRlZmF1bHQiLCJfcm91dGVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfd2Vic29ja2V0IiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVzb2x2ZSIsInJlamVjdCIsIl9uZXh0IiwiX3Rocm93Iiwia2V5IiwiYXJnIiwiaW5mbyIsImVycm9yIiwiZG9uZSIsIlByb21pc2UiLCJ0aGVuIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJmbiIsInNlbGYiLCJhcmdzIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJlcnIiLCJ1bmRlZmluZWQiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX2RlZmF1bHQiLCJwYWdlIiwic2V0SW50ZXJ2YWwiLCJzZW5kTWVzc2FnZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJldmVudCIsInJlYWR5Iiwibm90Rm91bmRTcmNQYWdlIiwiX19ORVhUX0RBVEFfXyIsInBhdGhuYW1lIiwiYWRkTWVzc2FnZUxpc3RlbmVyIiwiZGF0YSIsImluZGV4T2YiLCJwYXlsb2FkIiwicGFyc2UiLCJpbnZhbGlkIiwiZmV0Y2giLCJsb2NhdGlvbiIsImhyZWYiLCJjcmVkZW50aWFscyIsInBhZ2VSZXMiLCJzdGF0dXMiLCJyZWxvYWQiLCJjb25zb2xlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../node_modules/next/dist/client/dev/on-demand-entries-client.js\n"));
+eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar _interopRequireDefault = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs = /*#__PURE__*/ _interopRequireDefault(__webpack_require__(/*! ../node_modules/next/dist/compiled/regenerator-runtime/runtime.js */ \"../node_modules/next/dist/compiled/regenerator-runtime/runtime.js\"));\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\nvar _router = _interopRequireDefault1(__webpack_require__(/*! next/router */ \"../node_modules/next/router.js\"));\nvar _websocket = __webpack_require__(/*! ./error-overlay/websocket */ \"../node_modules/next/dist/client/dev/error-overlay/websocket.js\");\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self1 = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self1, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _interopRequireDefault1(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nvar _default = _asyncToGenerator(_cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.mark(function _callee(page) {\n return _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n if (page) {\n // in AMP the router isn't initialized on the client and\n // client-transitions don't occur so ping initial page\n setInterval(function() {\n (0, _websocket).sendMessage(JSON.stringify({\n event: \"ping\",\n page: page\n }));\n }, 2500);\n } else {\n _router.default.ready(function() {\n setInterval(function() {\n // when notFound: true is returned we should use the notFoundPage\n // as the Router.pathname will point to the 404 page but we want\n // to ping the source page that returned notFound: true instead\n var notFoundSrcPage = self.__NEXT_DATA__.notFoundSrcPage;\n var pathname = (_router.default.pathname === \"/404\" || _router.default.pathname === \"/_error\") && notFoundSrcPage ? notFoundSrcPage : _router.default.pathname;\n (0, _websocket).sendMessage(JSON.stringify({\n event: \"ping\",\n page: pathname\n }));\n }, 2500);\n });\n }\n (0, _websocket).addMessageListener(function(event) {\n if (event.data.indexOf(\"{\") === -1) return;\n try {\n var payload = JSON.parse(event.data);\n // don't attempt fetching the page if we're already showing\n // the dev overlay as this can cause the error to be triggered\n // repeatedly\n if (payload.event === \"pong\" && payload.invalid && !self.__NEXT_DATA__.err) {\n // Payload can be invalid even if the page does exist.\n // So, we check if it can be created.\n fetch(location.href, {\n credentials: \"same-origin\"\n }).then(function(pageRes) {\n if (pageRes.status === 200) {\n // Page exists now, reload\n location.reload();\n } else {\n // Page doesn't exist\n if (self.__NEXT_DATA__.page === _router.default.pathname && _router.default.pathname !== \"/_error\") {\n // We are still on the page,\n // reload to show 404 error page\n location.reload();\n }\n }\n });\n }\n } catch (err) {\n console.error(\"on-demand-entries failed to parse response\", err);\n }\n });\n case 2:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee);\n}));\nexports[\"default\"] = _default;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=on-demand-entries-client.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L29uLWRlbWFuZC1lbnRyaWVzLWNsaWVudC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7Ozs7O0FBQ2JBLDhDQUE2QztJQUN6Q0csS0FBSyxFQUFFLElBQUk7Q0FDZCxFQUFDLENBQUM7QUFDSEQsa0JBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUN6QixJQUFJRyxPQUFPLEdBQUdDLHVCQUFzQixDQUFDQyxtQkFBTyxDQUFDLG1EQUFhLENBQUMsQ0FBQztBQUM1RCxJQUFJQyxVQUFVLEdBQUdELG1CQUFPLENBQUMsa0dBQTJCLENBQUM7QUFDckQsU0FBU0Usa0JBQWtCLENBQUNDLEdBQUcsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLEtBQUssRUFBRUMsTUFBTSxFQUFFQyxHQUFHLEVBQUVDLEdBQUcsRUFBRTtJQUN2RSxJQUFJO1FBQ0EsSUFBSUMsSUFBSSxHQUFHUCxHQUFHLENBQUNLLEdBQUcsQ0FBQyxDQUFDQyxHQUFHLENBQUM7UUFDeEIsSUFBSWIsS0FBSyxHQUFHYyxJQUFJLENBQUNkLEtBQUs7S0FDekIsQ0FBQyxPQUFPZSxLQUFLLEVBQUU7UUFDWk4sTUFBTSxDQUFDTSxLQUFLLENBQUMsQ0FBQztRQUNkLE9BQU87S0FDVjtJQUNELElBQUlELElBQUksQ0FBQ0UsSUFBSSxFQUFFO1FBQ1hSLE9BQU8sQ0FBQ1IsS0FBSyxDQUFDLENBQUM7S0FDbEIsTUFBTTtRQUNIaUIsT0FBTyxDQUFDVCxPQUFPLENBQUNSLEtBQUssQ0FBQyxDQUFDa0IsSUFBSSxDQUFDUixLQUFLLEVBQUVDLE1BQU0sQ0FBQyxDQUFDO0tBQzlDO0NBQ0o7QUFDRCxTQUFTUSxpQkFBaUIsQ0FBQ0MsRUFBRSxFQUFFO0lBQzNCLE9BQU8sV0FBVztRQUNkLElBQUlDLEtBQUksR0FBRyxJQUFJLEVBQUVDLElBQUksR0FBR0MsU0FBUztRQUNqQyxPQUFPLElBQUlOLE9BQU8sQ0FBQyxTQUFTVCxPQUFPLEVBQUVDLE1B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QUFPLEVBQUVGLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDd0QsTUFBTSxDQUFDeEQsT0FBTyxHQUFHQSxPQUFPLENBQUNFLE9BQU8sQ0FBQztDQUNsQyxDQUVELG9EQUFvRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L29uLWRlbWFuZC1lbnRyaWVzLWNsaWVudC5qcz8wMTQ4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xudmFyIF9yb3V0ZXIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJuZXh0L3JvdXRlclwiKSk7XG52YXIgX3dlYnNvY2tldCA9IHJlcXVpcmUoXCIuL2Vycm9yLW92ZXJsYXkvd2Vic29ja2V0XCIpO1xuZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTtcbiAgICAgICAgdmFyIHZhbHVlID0gaW5mby52YWx1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKF9uZXh0LCBfdGhyb3cpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXMsIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHZhciBnZW4gPSBmbi5hcHBseShzZWxmLCBhcmdzKTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9uZXh0KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gX3Rocm93KGVycikge1xuICAgICAgICAgICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX25leHQodW5kZWZpbmVkKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHtcbiAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgfTtcbn1cbnZhciBfZGVmYXVsdCA9IF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKihwYWdlKSB7XG4gICAgaWYgKHBhZ2UpIHtcbiAgICAgICAgLy8gaW4gQU1QIHRoZSByb3V0ZXIgaXNuJ3QgaW5pdGlhbGl6ZWQgb24gdGhlIGNsaWVudCBhbmRcbiAgICAgICAgLy8gY2xpZW50LXRyYW5zaXRpb25zIGRvbid0IG9jY3VyIHNvIHBpbmcgaW5pdGlhbCBwYWdlXG4gICAgICAgIHNldEludGVydmFsKCgpPT57XG4gICAgICAgICAgICAoMCwgX3dlYnNvY2tldCkuc2VuZE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGV2ZW50OiAncGluZycsXG4gICAgICAgICAgICAgICAgcGFnZVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9LCAyNTAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBfcm91dGVyLmRlZmF1bHQucmVhZHkoKCk9PntcbiAgICAgICAgICAgIHNldEludGVydmFsKCgpPT57XG4gICAgICAgICAgICAgICAgLy8gd2hlbiBub3RGb3VuZDogdHJ1ZSBpcyByZXR1cm5lZCB3ZSBzaG91bGQgdXNlIHRoZSBub3RGb3VuZFBhZ2VcbiAgICAgICAgICAgICAgICAvLyBhcyB0aGUgUm91dGVyLnBhdGhuYW1lIHdpbGwgcG9pbnQgdG8gdGhlIDQwNCBwYWdlIGJ1dCB3ZSB3YW50XG4gICAgICAgICAgICAgICAgLy8gdG8gcGluZyB0aGUgc291cmNlIHBhZ2UgdGhhdCByZXR1cm5lZCBub3RGb3VuZDogdHJ1ZSBpbnN0ZWFkXG4gICAgICAgICAgICAgICAgY29uc3Qgbm90Rm91bmRTcmNQYWdlID0gc2VsZi5fX05FWFRfREFUQV9fLm5vdEZvdW5kU3JjUGFnZTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRobmFtZSA9IChfcm91dGVyLmRlZmF1bHQucGF0aG5hbWUgPT09ICcvNDA0JyB8fCBfcm91dGVyLmRlZmF1bHQucGF0aG5hbWUgPT09ICcvX2Vycm9yJykgJiYgbm90Rm91bmRTcmNQYWdlID8gbm90Rm91bmRTcmNQYWdlIDogX3JvdXRlci5kZWZhdWx0LnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICgwLCBfd2Vic29ja2V0KS5zZW5kTWVzc2FnZShKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50OiAncGluZycsXG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IHBhdGhuYW1lXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfSwgMjUwMCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAoMCwgX3dlYnNvY2tldCkuYWRkTWVzc2FnZUxpc3RlbmVyKChldmVudCk9PntcbiAgICAgICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZigneycpID09PSAtMSkgcmV0dXJuO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IEpTT04ucGFyc2UoZXZlbnQuZGF0YSk7XG4gICAgICAgICAgICAvLyBkb24ndCBhdHRlbXB0IGZldGNoaW5nIHRoZSBwYWdlIGlmIHdlJ3JlIGFscmVhZHkgc2hvd2luZ1xuICAgICAgICAgICAgLy8gdGhlIGRldiBvdmVybGF5IGFzIHRoaXMgY2FuIGNhdXNlIHRoZSBlcnJvciB0byBiZSB0cmlnZ2VyZWRcbiAgICAgICAgICAgIC8vIHJlcGVhdGVkbHlcbiAgICAgICAgICAgIGlmIChwYXlsb2FkLmV2ZW50ID09PSAncG9uZycgJiYgcGF5bG9hZC5pbnZhbGlkICYmICFzZWxmLl9fTkVYVF9EQVRBX18uZXJyKSB7XG4gICAgICAgICAgICAgICAgLy8gUGF5bG9hZCBjYW4gYmUgaW52YWxpZCBldmVuIGlmIHRoZSBwYWdlIGRvZXMgZXhpc3QuXG4gICAgICAgICAgICAgICAgLy8gU28sIHdlIGNoZWNrIGlmIGl0IGNhbiBiZSBjcmVhdGVkLlxuICAgICAgICAgICAgICAgIGZldGNoKGxvY2F0aW9uLmhyZWYsIHtcbiAgICAgICAgICAgICAgICAgICAgY3JlZGVudGlhbHM6ICdzYW1lLW9yaWdpbidcbiAgICAgICAgICAgICAgICB9KS50aGVuKChwYWdlUmVzKT0+e1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFnZVJlcy5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFnZSBleGlzdHMgbm93LCByZWxvYWRcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFnZSBkb2Vzbid0IGV4aXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5fX05FWFRfREFUQV9fLnBhZ2UgPT09IF9yb3V0ZXIuZGVmYXVsdC5wYXRobmFtZSAmJiBfcm91dGVyLmRlZmF1bHQucGF0aG5hbWUgIT09ICcvX2Vycm9yJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBzdGlsbCBvbiB0aGUgcGFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWxvYWQgdG8gc2hvdyA0MDQgZXJyb3IgcGFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignb24tZGVtYW5kLWVudHJpZXMgZmFpbGVkIHRvIHBhcnNlIHJlc3BvbnNlJywgZXJyKTtcbiAgICAgICAgfVxuICAgIH0pO1xufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDtcblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9b24tZGVtYW5kLWVudHJpZXMtY2xpZW50LmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImRlZmF1bHQiLCJfcm91dGVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfd2Vic29ja2V0IiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVzb2x2ZSIsInJlamVjdCIsIl9uZXh0IiwiX3Rocm93Iiwia2V5IiwiYXJnIiwiaW5mbyIsImVycm9yIiwiZG9uZSIsIlByb21pc2UiLCJ0aGVuIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJmbiIsInNlbGYiLCJhcmdzIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJlcnIiLCJ1bmRlZmluZWQiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX2RlZmF1bHQiLCJwYWdlIiwic2V0SW50ZXJ2YWwiLCJzZW5kTWVzc2FnZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJldmVudCIsInJlYWR5Iiwibm90Rm91bmRTcmNQYWdlIiwiX19ORVhUX0RBVEFfXyIsInBhdGhuYW1lIiwiYWRkTWVzc2FnZUxpc3RlbmVyIiwiZGF0YSIsImluZGV4T2YiLCJwYXlsb2FkIiwicGFyc2UiLCJpbnZhbGlkIiwiZmV0Y2giLCJsb2NhdGlvbiIsImhyZWYiLCJjcmVkZW50aWFscyIsInBhZ2VSZXMiLCJzdGF0dXMiLCJyZWxvYWQiLCJjb25zb2xlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../node_modules/next/dist/client/dev/on-demand-entries-client.js\n"));
/***/ }),
@@ -576,7 +576,7 @@ eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar _classCallCheck = (__webpack_require__(/*! @swc/helpers/lib/_class_call_check.js */ \"../node_modules/@swc/helpers/lib/_class_call_check.js\")[\"default\"]);\nvar _createClass = (__webpack_require__(/*! @swc/helpers/lib/_create_class.js */ \"../node_modules/@swc/helpers/lib/_create_class.js\")[\"default\"]);\nvar _interopRequireDefault = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _slicedToArray = (__webpack_require__(/*! @swc/helpers/lib/_sliced_to_array.js */ \"../node_modules/@swc/helpers/lib/_sliced_to_array.js\")[\"default\"]);\nvar _runtimeJs = /*#__PURE__*/ _interopRequireDefault(__webpack_require__(/*! ../node_modules/next/dist/compiled/regenerator-runtime/runtime.js */ \"../node_modules/next/dist/compiled/regenerator-runtime/runtime.js\"));\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.isLocalURL = isLocalURL;\nexports.interpolateAs = interpolateAs;\nexports.resolveHref = resolveHref;\nexports.createKey = createKey;\nexports[\"default\"] = void 0;\nvar _normalizeTrailingSlash = __webpack_require__(/*! ../../../client/normalize-trailing-slash */ \"../node_modules/next/dist/client/normalize-trailing-slash.js\");\nvar _removeTrailingSlash = __webpack_require__(/*! ./utils/remove-trailing-slash */ \"../node_modules/next/dist/shared/lib/router/utils/remove-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 */ \"../node_modules/next/dist/shared/lib/page-path/denormalize-page-path.js\");\nvar _normalizeLocalePath = __webpack_require__(/*! ../i18n/normalize-locale-path */ \"../node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js\");\nvar _mitt = _interopRequireDefault1(__webpack_require__(/*! ../mitt */ \"../node_modules/next/dist/shared/lib/mitt.js\"));\nvar _utils = __webpack_require__(/*! ../utils */ \"../node_modules/next/dist/shared/lib/utils.js\");\nvar _isDynamic = __webpack_require__(/*! ./utils/is-dynamic */ \"../node_modules/next/dist/shared/lib/router/utils/is-dynamic.js\");\nvar _parseRelativeUrl = __webpack_require__(/*! ./utils/parse-relative-url */ \"../node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js\");\nvar _querystring = __webpack_require__(/*! ./utils/querystring */ \"../node_modules/next/dist/shared/lib/router/utils/querystring.js\");\nvar _resolveRewrites = _interopRequireDefault1(__webpack_require__(/*! ./utils/resolve-rewrites */ \"?36cb\"));\nvar _routeMatcher = __webpack_require__(/*! ./utils/route-matcher */ \"../node_modules/next/dist/shared/lib/router/utils/route-matcher.js\");\nvar _routeRegex = __webpack_require__(/*! ./utils/route-regex */ \"../node_modules/next/dist/shared/lib/router/utils/route-regex.js\");\nvar _formatUrl = __webpack_require__(/*! ./utils/format-url */ \"../node_modules/next/dist/shared/lib/router/utils/format-url.js\");\nvar _detectDomainLocale = __webpack_require__(/*! ../../../client/detect-domain-locale */ \"../node_modules/next/dist/client/detect-domain-locale.js\");\nvar _parsePath = __webpack_require__(/*! ./utils/parse-path */ \"../node_modules/next/dist/shared/lib/router/utils/parse-path.js\");\nvar _addLocale = __webpack_require__(/*! ../../../client/add-locale */ \"../node_modules/next/dist/client/add-locale.js\");\nvar _removeLocale = __webpack_require__(/*! ../../../client/remove-locale */ \"../node_modules/next/dist/client/remove-locale.js\");\nvar _removeBasePath = __webpack_require__(/*! ../../../client/remove-base-path */ \"../node_modules/next/dist/client/remove-base-path.js\");\nvar _addBasePath = __webpack_require__(/*! ../../../client/add-base-path */ \"../node_modules/next/dist/client/add-base-path.js\");\nvar _hasBasePath = __webpack_require__(/*! ../../../client/has-base-path */ \"../node_modules/next/dist/client/has-base-path.js\");\nvar _getNextPathnameInfo = __webpack_require__(/*! ./utils/get-next-pathname-info */ \"../node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js\");\nvar _formatNextPathnameInfo = __webpack_require__(/*! ./utils/format-next-pathname-info */ \"../node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js\");\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self1 = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self1, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _extends() {\n _extends = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _interopRequireDefault1(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n return cache;\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache();\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction buildCancellationError() {\n return Object.assign(new Error(\"Route Cancelled\"), {\n cancelled: true\n });\n}\nfunction isLocalURL(url) {\n // prevent a hydration mismatch on href for url with anchor refs\n if (!(0, _utils).isAbsoluteUrl(url)) return true;\n try {\n // absolute urls can be local if they are on the same origin\n var locationOrigin = (0, _utils).getLocationOrigin();\n var resolved = new URL(url, locationOrigin);\n return resolved.origin === locationOrigin && (0, _hasBasePath).hasBasePath(resolved.pathname);\n } catch (_) {\n return false;\n }\n}\nfunction interpolateAs(route, asPathname, query) {\n var interpolatedRoute = \"\";\n var dynamicRegex = (0, _routeRegex).getRouteRegex(route);\n var dynamicGroups = dynamicRegex.groups;\n var 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 var params = Object.keys(dynamicGroups);\n if (!params.every(function(param) {\n var value = dynamicMatches[param] || \"\";\n var _param = dynamicGroups[param], repeat = _param.repeat, optional = _param.optional;\n // support single-level catch-all\n // TODO: more robust handling for user-error (passing `/`)\n var replaced = \"[\".concat(repeat ? \"...\" : \"\").concat(param, \"]\");\n if (optional) {\n replaced = \"\".concat(!value ? \"/\" : \"\", \"[\").concat(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 function(segment) {\n return 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: params,\n result: interpolatedRoute\n };\n}\nfunction omit(object, keys) {\n var omitted = {};\n Object.keys(object).forEach(function(key) {\n if (!keys.includes(key)) {\n omitted[key] = object[key];\n }\n });\n return omitted;\n}\nfunction resolveHref(router, href, resolveAs) {\n // we use a dummy base url for relative urls\n var base;\n var 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 var urlProtoMatch = urlAsString.match(/^[a-zA-Z]{1,}:\\/\\//);\n var urlAsStringNoProto = urlProtoMatch ? urlAsString.slice(urlProtoMatch[0].length) : urlAsString;\n var urlParts = urlAsStringNoProto.split(\"?\");\n if ((urlParts[0] || \"\").match(/(\\/\\/|\\\\)/)) {\n console.error(\"Invalid href passed to next/router: \".concat(urlAsString, \", repeated forward-slashes (//) or backslashes \\\\ are not valid in the href\"));\n var 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 var finalUrl = new URL(urlAsString, base);\n finalUrl.pathname = (0, _normalizeTrailingSlash).normalizePathTrailingSlash(finalUrl.pathname);\n var interpolatedAs = \"\";\n if ((0, _isDynamic).isDynamicRoute(finalUrl.pathname) && finalUrl.searchParams && resolveAs) {\n var query = (0, _querystring).searchParamsToUrlQuery(finalUrl.searchParams);\n var ref = interpolateAs(finalUrl.pathname, finalUrl.pathname, query), result = ref.result, params = ref.params;\n if (result) {\n interpolatedAs = (0, _formatUrl).formatWithValidation({\n pathname: result,\n hash: finalUrl.hash,\n query: omit(query, params)\n });\n }\n }\n // if the origin didn't change, it means we received a relative href\n var 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 var 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 var ref = _slicedToArray(resolveHref(router, url, true), 2), resolvedHref = ref[0], resolvedAs = ref[1];\n var origin = (0, _utils).getLocationOrigin();\n var hrefHadOrigin = resolvedHref.startsWith(origin);\n var asHadOrigin = resolvedAs && resolvedAs.startsWith(origin);\n resolvedHref = stripOrigin(resolvedHref);\n resolvedAs = resolvedAs ? stripOrigin(resolvedAs) : resolvedAs;\n var preparedUrl = hrefHadOrigin ? resolvedHref : (0, _addBasePath).addBasePath(resolvedHref);\n var preparedAs = as ? stripOrigin(resolveHref(router, as)) : resolvedAs || resolvedHref;\n return {\n url: preparedUrl,\n as: asHadOrigin ? preparedAs : (0, _addBasePath).addBasePath(preparedAs)\n };\n}\nfunction resolveDynamicRoute(pathname, pages) {\n var cleanPathname = (0, _removeTrailingSlash).removeTrailingSlash((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(function(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, _removeTrailingSlash).removeTrailingSlash(pathname);\n}\nvar manualScrollRestoration = false && 0;\nvar SSG_DATA_NOT_FOUND = Symbol(\"SSG_DATA_NOT_FOUND\");\nfunction fetchRetry(url, attempts, options) {\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 method: options.method || \"GET\",\n headers: Object.assign({}, options.headers, {\n \"x-nextjs-data\": \"1\"\n })\n }).then(function(response) {\n return !response.ok && attempts > 1 && response.status >= 500 ? fetchRetry(url, attempts - 1, options) : response;\n });\n}\nvar backgroundCache = {};\nfunction fetchNextData(param) {\n var dataHref = param.dataHref, inflightCache = param.inflightCache, isPrefetch = param.isPrefetch, hasMiddleware = param.hasMiddleware, isServerRender = param.isServerRender, parseJSON = param.parseJSON, persistCache = param.persistCache, isBackground = param.isBackground, unstable_skipClientCache = param.unstable_skipClientCache;\n var ref = new URL(dataHref, window.location.href), cacheKey = ref.href;\n var ref1;\n var getData = function(params) {\n return fetchRetry(dataHref, isServerRender ? 3 : 1, {\n headers: isPrefetch ? {\n purpose: \"prefetch\"\n } : {},\n method: (ref1 = params == null ? void 0 : params.method) != null ? ref1 : \"GET\"\n }).then(function(response) {\n if (response.ok && (params == null ? void 0 : params.method) === \"HEAD\") {\n return {\n dataHref: dataHref,\n response: response,\n text: \"\",\n json: {}\n };\n }\n return response.text().then(function(text) {\n if (!response.ok) {\n /**\n * When the data response is a redirect because of a middleware\n * we do not consider it an error. The headers must bring the\n * mapped location.\n * TODO: Change the status code in the handler.\n */ if (hasMiddleware && [\n 301,\n 302,\n 307,\n 308\n ].includes(response.status)) {\n return {\n dataHref: dataHref,\n response: response,\n text: text,\n json: {}\n };\n }\n if (response.status === 404) {\n var ref;\n if ((ref = tryToParseAsJSON(text)) == null ? void 0 : ref.notFound) {\n return {\n dataHref: dataHref,\n json: {\n notFound: SSG_DATA_NOT_FOUND\n },\n response: response,\n text: text\n };\n }\n /**\n * If there is a 404 that is not for SSG we used to fail but if\n * there is a middleware we must respond with an empty object.\n * For now we will return the data when there is a middleware.\n * TODO: Update the server to success on these requests.\n */ if (hasMiddleware) {\n return {\n dataHref: dataHref,\n response: response,\n text: text,\n json: {}\n };\n }\n }\n var error = new Error(\"Failed to load static props\");\n /**\n * We should only trigger a server-side transition if this was\n * caused on a client-side transition. Otherwise, we'd get into\n * an infinite loop.\n */ if (!isServerRender) {\n (0, _routeLoader).markAssetError(error);\n }\n throw error;\n }\n return {\n dataHref: dataHref,\n json: parseJSON ? tryToParseAsJSON(text) : {},\n response: response,\n text: text\n };\n });\n }).then(function(data) {\n if (!persistCache || \"development\" !== \"production\" || 0) {\n delete inflightCache[cacheKey];\n }\n return data;\n }).catch(function(err) {\n delete inflightCache[cacheKey];\n throw err;\n });\n };\n // when skipping client cache we wait to update\n // inflight cache until successful data response\n // this allows racing click event with fetching newer data\n // without blocking navigation when stale data is available\n if (unstable_skipClientCache && persistCache) {\n return getData({}).then(function(data) {\n inflightCache[cacheKey] = Promise.resolve(data);\n return data;\n });\n }\n if (inflightCache[cacheKey] !== undefined) {\n return inflightCache[cacheKey];\n }\n return inflightCache[cacheKey] = getData(isBackground ? {\n method: \"HEAD\"\n } : {});\n}\nfunction tryToParseAsJSON(text) {\n try {\n return JSON.parse(text);\n } catch (error) {\n return {};\n }\n}\nfunction createKey() {\n return Math.random().toString(36).slice(2, 10);\n}\nfunction handleHardNavigation(param) {\n var url = param.url, router = param.router;\n // ensure we don't trigger a hard navigation to the same\n // URL as this can end up with an infinite refresh\n if (url === (0, _addBasePath).addBasePath((0, _addLocale).addLocale(router.asPath, router.locale))) {\n throw new Error(\"Invariant: attempted to hard navigate to the same URL \".concat(url, \" \").concat(location.href));\n }\n window.location.href = url;\n}\nvar getCancelledHandler = function(param) {\n var route = param.route, router = param.router;\n var cancelled = false;\n var cancel = router.clc = function() {\n cancelled = true;\n };\n var handleCancelled = function() {\n if (cancelled) {\n var error = new Error('Abort fetching component for route: \"'.concat(route, '\"'));\n error.cancelled = true;\n throw error;\n }\n if (cancel === router.clc) {\n router.clc = null;\n }\n };\n return handleCancelled;\n};\nvar Router = /*#__PURE__*/ function() {\n function Router(pathname1, query1, as1, param) {\n var initialProps = param.initialProps, pageLoader = param.pageLoader, App = param.App, wrapApp = param.wrapApp, Component = param.Component, err = param.err, subscription = param.subscription, isFallback = param.isFallback, locale = param.locale, locales = param.locales, defaultLocale = param.defaultLocale, domainLocales = param.domainLocales, isPreview = param.isPreview, isRsc = param.isRsc;\n var _this = this;\n _classCallCheck(this, Router);\n // Server Data Cache\n this.sdc = {};\n this.isFirstPopStateEvent = true;\n this._key = createKey();\n this.onPopState = function(e) {\n var isFirstPopStateEvent = _this.isFirstPopStateEvent;\n _this.isFirstPopStateEvent = false;\n var 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 var pathname = _this.pathname, query = _this.query;\n _this.changeState(\"replaceState\", (0, _formatUrl).formatWithValidation({\n pathname: (0, _addBasePath).addBasePath(pathname),\n query: query\n }), (0, _utils).getURL());\n return;\n }\n // __NA is used to identify if the history entry can be handled by the app-router.\n if (state.__NA) {\n window.location.reload();\n return;\n }\n if (!state.__N) {\n return;\n }\n // Safari fires popstateevent when reopening the browser.\n if (isFirstPopStateEvent && _this.locale === state.options.locale && state.as === _this.asPath) {\n return;\n }\n var forcedScroll;\n var url = state.url, as = state.as, options = state.options, key = state.key;\n if (false) { var v; }\n _this._key = key;\n var pathname1 = (0, _parseRelativeUrl).parseRelativeUrl(url).pathname;\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 === (0, _addBasePath).addBasePath(_this.asPath) && pathname1 === (0, _addBasePath).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 // @ts-ignore internal value not exposed on types\n _h: 0\n }), forcedScroll);\n };\n // represents the current component key\n var route = (0, _removeTrailingSlash).removeTrailingSlash(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: Component,\n initial: true,\n props: initialProps,\n err: 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 var autoExportDynamic = (0, _isDynamic).isDynamicRoute(pathname1) && self.__NEXT_DATA__.autoExport;\n this.basePath = false || \"\";\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: route,\n pathname: pathname1,\n query: query1,\n asPath: autoExportDynamic ? pathname1 : as1,\n isPreview: !!isPreview,\n locale: false ? 0 : undefined,\n isFallback: isFallback\n };\n this._initialMatchesMiddlewarePromise = Promise.resolve(false);\n if (true) {\n // make sure \"as\" doesn't start with double slashes or else it can\n // throw an error as it's considered invalid\n if (!as1.startsWith(\"//\")) {\n // in order for `e.state` to work on the `onpopstate` event\n // we have to register the initial route upon initialization\n var options = {\n locale: locale\n };\n var asPath = (0, _utils).getURL();\n this._initialMatchesMiddlewarePromise = matchesMiddleware({\n router: this,\n locale: locale,\n asPath: asPath\n }).then(function(matches) {\n options._shouldResolveHref = as1 !== pathname1;\n _this.changeState(\"replaceState\", matches ? asPath : (0, _formatUrl).formatWithValidation({\n pathname: (0, _addBasePath).addBasePath(pathname1),\n query: query1\n }), asPath, options);\n return matches;\n });\n }\n window.addEventListener(\"popstate\", this.onPopState);\n // enable custom scroll restoration handling when available\n // otherwise fallback to browser's default handling\n if (false) {}\n }\n }\n _createClass(Router, [\n {\n key: \"reload\",\n value: function reload() {\n window.location.reload();\n }\n },\n {\n /**\n * Go back in history\n */ key: \"back\",\n value: function back() {\n window.history.back();\n }\n },\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 */ key: \"push\",\n value: function push(url, as) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n if (false) {}\n var ref;\n ref = prepareUrlAs(this, url, as), url = ref.url, as = ref.as, ref;\n return this.change(\"pushState\", url, as, options);\n }\n },\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 */ key: \"replace\",\n value: function replace(url, as) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var ref;\n ref = prepareUrlAs(this, url, as), url = ref.url, as = ref.as, ref;\n return this.change(\"replaceState\", url, as, options);\n }\n },\n {\n key: \"change\",\n value: function change(method, url, as, options, forcedScroll) {\n var _this = this;\n return _asyncToGenerator(_runtimeJs.default.mark(function _callee() {\n var isQueryUpdating, shouldResolveHref, nextState, isSsr, prevLocale, parsedAs, localePathResult, didNavigate, ref, detectedDomain, asNoBasePath, _shallow, shallow, _scroll, scroll, routeProps, cleanedAs, localeChange, parsed, pathname, query, pages, rewrites, ref1, ref2, resolvedAs, isMiddlewareMatch, rewritesResult, route, routeMatch, parsedAs1, asPathname, routeRegex, shouldInterpolate, interpolatedAs, missingParams, ref21, ref3, routeInfo, prefixedAs, rewriteAs, localeResult, routeRegex1, curRouteMatch, error, props, __N_SSG, __N_SSP, component, scripts, destination, parsedHref, ref4, newUrl, newAs, notFoundRoute, _route, isValidShallowRoute, _scroll1, shouldScroll, resetScroll, hashRegex;\n return _runtimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n if (isLocalURL(url)) {\n _ctx.next = 3;\n break;\n }\n handleHardNavigation({\n url: url,\n router: _this\n });\n return _ctx.abrupt(\"return\", false);\n case 3:\n isQueryUpdating = options._h;\n shouldResolveHref = isQueryUpdating || options._shouldResolveHref || (0, _parsePath).parsePath(url).pathname === (0, _parsePath).parsePath(as).pathname;\n nextState = _extends({}, _this.state);\n // for static pages with query params in the URL we delay\n // marking the router ready until after the query is updated\n // or a navigation has occurred\n _this.isReady = true;\n isSsr = _this.isSsr;\n if (!isQueryUpdating) {\n _this.isSsr = false;\n }\n if (!(isQueryUpdating && _this.clc)) {\n _ctx.next = 11;\n break;\n }\n return _ctx.abrupt(\"return\", false);\n case 11:\n prevLocale = nextState.locale;\n if (true) {\n _ctx.next = 24;\n break;\n }\n nextState.locale = options.locale === false ? _this.defaultLocale : options.locale || nextState.locale;\n if (typeof options.locale === \"undefined\") {\n options.locale = nextState.locale;\n }\n parsedAs = (0, _parseRelativeUrl).parseRelativeUrl((0, _hasBasePath).hasBasePath(as) ? (0, _removeBasePath).removeBasePath(as) : as);\n localePathResult = (0, _normalizeLocalePath).normalizeLocalePath(parsedAs.pathname, _this.locales);\n if (localePathResult.detectedLocale) {\n nextState.locale = localePathResult.detectedLocale;\n parsedAs.pathname = (0, _addBasePath).addBasePath(parsedAs.pathname);\n as = (0, _formatUrl).formatWithValidation(parsedAs);\n url = (0, _addBasePath).addBasePath((0, _normalizeLocalePath).normalizeLocalePath((0, _hasBasePath).hasBasePath(url) ? (0, _removeBasePath).removeBasePath(url) : url, _this.locales).pathname);\n }\n didNavigate = false;\n // we need to wrap this in the env check again since regenerator runtime\n // moves this on its own due to the return\n if (false) {}\n detectedDomain = (0, _detectDomainLocale).detectDomainLocale(_this.domainLocales, undefined, nextState.locale);\n // we need to wrap this in the env check again since regenerator runtime\n // moves this on its own due to the return\n if (false) {}\n if (!didNavigate) {\n _ctx.next = 24;\n break;\n }\n return _ctx.abrupt(\"return\", new Promise(function() {}));\n case 24:\n // marking route changes as a navigation start entry\n if (_utils.ST) {\n performance.mark(\"routeChange\");\n }\n _shallow = options.shallow, shallow = _shallow === void 0 ? false : _shallow, _scroll = options.scroll, scroll = _scroll === void 0 ? true : _scroll;\n routeProps = {\n shallow: shallow\n };\n if (_this._inFlightRoute && _this.clc) {\n if (!isSsr) {\n Router.events.emit(\"routeChangeError\", buildCancellationError(), _this._inFlightRoute, routeProps);\n }\n _this.clc();\n _this.clc = null;\n }\n as = (0, _addBasePath).addBasePath((0, _addLocale).addLocale((0, _hasBasePath).hasBasePath(as) ? (0, _removeBasePath).removeBasePath(as) : as, options.locale, _this.defaultLocale));\n cleanedAs = (0, _removeLocale).removeLocale((0, _hasBasePath).hasBasePath(as) ? (0, _removeBasePath).removeBasePath(as) : as, nextState.locale);\n _this._inFlightRoute = as;\n localeChange = prevLocale !== nextState.locale;\n if (!(!isQueryUpdating && _this.onlyAHashChange(cleanedAs) && !localeChange)) {\n _ctx.next = 48;\n break;\n }\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, _extends({}, options, {\n scroll: false\n }));\n if (scroll) {\n _this.scrollToHash(cleanedAs);\n }\n _ctx.prev = 37;\n _ctx.next = 40;\n return _this.set(nextState, _this.components[nextState.route], null);\n case 40:\n _ctx.next = 46;\n break;\n case 42:\n _ctx.prev = 42;\n _ctx.t0 = _ctx[\"catch\"](37);\n if ((0, _isError).default(_ctx.t0) && _ctx.t0.cancelled) {\n Router.events.emit(\"routeChangeError\", _ctx.t0, cleanedAs, routeProps);\n }\n throw _ctx.t0;\n case 46:\n Router.events.emit(\"hashChangeComplete\", as, routeProps);\n return _ctx.abrupt(\"return\", true);\n case 48:\n parsed = (0, _parseRelativeUrl).parseRelativeUrl(url);\n pathname = parsed.pathname, query = parsed.query;\n ;\n _ctx.prev = 51;\n ;\n _ctx.t1 = _slicedToArray;\n _ctx.next = 56;\n return Promise.all([\n _this.pageLoader.getPageList(),\n (0, _routeLoader).getClientBuildManifest(),\n _this.pageLoader.getMiddlewareList(), \n ]);\n case 56:\n _ctx.t2 = _ctx.sent;\n ref1 = (0, _ctx.t1)(_ctx.t2, 2);\n pages = ref1[0];\n ref2 = ref1[1], rewrites = ref2.__rewrites, ref2;\n ref1;\n _ctx.next = 67;\n break;\n case 63:\n _ctx.prev = 63;\n _ctx.t3 = _ctx[\"catch\"](51);\n // If we fail to resolve the page list or client-build manifest, we must\n // do a server-side transition:\n handleHardNavigation({\n url: as,\n router: _this\n });\n return _ctx.abrupt(\"return\", false);\n case 67:\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 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, _removeTrailingSlash).removeTrailingSlash((0, _removeBasePath).removeBasePath(pathname)) : pathname;\n _ctx.next = 72;\n return matchesMiddleware({\n asPath: as,\n locale: nextState.locale,\n router: _this\n });\n case 72:\n isMiddlewareMatch = _ctx.sent;\n if (options.shallow && isMiddlewareMatch) {\n pathname = _this.pathname;\n }\n if (!(shouldResolveHref && pathname !== \"/_error\")) {\n _ctx.next = 86;\n break;\n }\n options._shouldResolveHref = true;\n if (true) {\n _ctx.next = 85;\n break;\n }\n rewritesResult = (0, _resolveRewrites).default((0, _addBasePath).addBasePath((0, _addLocale).addLocale(cleanedAs, nextState.locale), true), pages, rewrites, query, function(p) {\n return resolveDynamicRoute(p, pages);\n }, _this.locales);\n if (!rewritesResult.externalDest) {\n _ctx.next = 81;\n break;\n }\n handleHardNavigation({\n url: as,\n router: _this\n });\n return _ctx.abrupt(\"return\", true);\n case 81:\n if (!isMiddlewareMatch) {\n resolvedAs = rewritesResult.asPath;\n }\n if (rewritesResult.matchedPage && rewritesResult.resolvedHref) {\n // if this directly matches a page we need to update the href to\n // allow the correct page chunk to be loaded\n pathname = rewritesResult.resolvedHref;\n parsed.pathname = (0, _addBasePath).addBasePath(pathname);\n if (!isMiddlewareMatch) {\n url = (0, _formatUrl).formatWithValidation(parsed);\n }\n }\n _ctx.next = 86;\n break;\n case 85:\n {\n parsed.pathname = resolveDynamicRoute(pathname, pages);\n if (parsed.pathname !== pathname) {\n pathname = parsed.pathname;\n parsed.pathname = (0, _addBasePath).addBasePath(pathname);\n if (!isMiddlewareMatch) {\n url = (0, _formatUrl).formatWithValidation(parsed);\n }\n }\n }\n case 86:\n if (isLocalURL(as)) {\n _ctx.next = 91;\n break;\n }\n if (false) {}\n throw new Error('Invalid href: \"'.concat(url, '\" and as: \"').concat(as, '\", received relative href and external as') + \"\\nSee more info: https://nextjs.org/docs/messages/invalid-relative-url-external-as\");\n case 89:\n handleHardNavigation({\n url: as,\n router: _this\n });\n return _ctx.abrupt(\"return\", false);\n case 91:\n resolvedAs = (0, _removeLocale).removeLocale((0, _removeBasePath).removeBasePath(resolvedAs), nextState.locale);\n route = (0, _removeTrailingSlash).removeTrailingSlash(pathname);\n routeMatch = false;\n if (!(0, _isDynamic).isDynamicRoute(route)) {\n _ctx.next = 109;\n break;\n }\n parsedAs1 = (0, _parseRelativeUrl).parseRelativeUrl(resolvedAs);\n asPathname = parsedAs1.pathname;\n routeRegex = (0, _routeRegex).getRouteRegex(route);\n routeMatch = (0, _routeMatcher).getRouteMatcher(routeRegex)(asPathname);\n shouldInterpolate = route === asPathname;\n interpolatedAs = shouldInterpolate ? interpolateAs(route, asPathname, query) : {};\n if (!(!routeMatch || shouldInterpolate && !interpolatedAs.result)) {\n _ctx.next = 108;\n break;\n }\n missingParams = Object.keys(routeRegex.groups).filter(function(param) {\n return !query[param];\n });\n if (!(missingParams.length > 0 && !isMiddlewareMatch)) {\n _ctx.next = 106;\n break;\n }\n if (true) {\n console.warn(\"\".concat(shouldInterpolate ? \"Interpolating href\" : \"Mismatching `as` and `href`\", \" failed to manually provide \") + \"the params: \".concat(missingParams.join(\", \"), \" in the `href`'s `query`\"));\n }\n throw new Error((shouldInterpolate ? \"The provided `href` (\".concat(url, \") value is missing query values (\").concat(missingParams.join(\", \"), \") to be interpolated properly. \") : \"The provided `as` value (\".concat(asPathname, \") is incompatible with the `href` value (\").concat(route, \"). \")) + \"Read more: https://nextjs.org/docs/messages/\".concat(shouldInterpolate ? \"href-interpolation-failed\" : \"incompatible-href-as\"));\n case 106:\n _ctx.next = 109;\n break;\n case 108:\n if (shouldInterpolate) {\n as = (0, _formatUrl).formatWithValidation(Object.assign({}, parsedAs1, {\n pathname: interpolatedAs.result,\n query: omit(query, interpolatedAs.params)\n }));\n } else {\n // Merge params into `query`, overwriting any specified in search\n Object.assign(query, routeMatch);\n }\n case 109:\n if (!isQueryUpdating) {\n Router.events.emit(\"routeChangeStart\", as, routeProps);\n }\n _ctx.prev = 110;\n ;\n _ctx.next = 114;\n return _this.getRouteInfo({\n route: route,\n pathname: pathname,\n query: query,\n as: as,\n resolvedAs: resolvedAs,\n routeProps: routeProps,\n locale: nextState.locale,\n isPreview: nextState.isPreview,\n hasMiddleware: isMiddlewareMatch\n });\n case 114:\n routeInfo = _ctx.sent;\n if (\"route\" in routeInfo && isMiddlewareMatch) {\n pathname = routeInfo.route || route;\n route = pathname;\n query = Object.assign({}, routeInfo.query || {}, query);\n if (routeMatch && pathname !== parsed.pathname) {\n Object.keys(routeMatch).forEach(function(key) {\n if (routeMatch && query[key] === routeMatch[key]) {\n delete query[key];\n }\n });\n }\n if ((0, _isDynamic).isDynamicRoute(pathname)) {\n prefixedAs = routeInfo.resolvedAs || (0, _addBasePath).addBasePath((0, _addLocale).addLocale(as, nextState.locale), true);\n rewriteAs = prefixedAs;\n if ((0, _hasBasePath).hasBasePath(rewriteAs)) {\n rewriteAs = (0, _removeBasePath).removeBasePath(rewriteAs);\n }\n if (false) {}\n routeRegex1 = (0, _routeRegex).getRouteRegex(pathname);\n curRouteMatch = (0, _routeMatcher).getRouteMatcher(routeRegex1)(rewriteAs);\n if (curRouteMatch) {\n Object.assign(query, curRouteMatch);\n }\n }\n }\n if (!(\"type\" in routeInfo)) {\n _ctx.next = 123;\n break;\n }\n if (!(routeInfo.type === \"redirect-internal\")) {\n _ctx.next = 121;\n break;\n }\n return _ctx.abrupt(\"return\", _this.change(method, routeInfo.newUrl, routeInfo.newAs, options));\n case 121:\n handleHardNavigation({\n url: routeInfo.destination,\n router: _this\n });\n return _ctx.abrupt(\"return\", new Promise(function() {}));\n case 123:\n error = routeInfo.error, props = routeInfo.props, __N_SSG = routeInfo.__N_SSG, __N_SSP = routeInfo.__N_SSP;\n component = routeInfo.Component;\n if (component && component.unstable_scriptLoader) {\n scripts = [].concat(component.unstable_scriptLoader());\n scripts.forEach(function(script) {\n (0, _script).handleClientScriptLoad(script.props);\n });\n }\n if (!((__N_SSG || __N_SSP) && props)) {\n _ctx.next = 154;\n break;\n }\n if (!(props.pageProps && props.pageProps.__N_REDIRECT)) {\n _ctx.next = 137;\n break;\n }\n // Use the destination from redirect without adding locale\n options.locale = false;\n destination = props.pageProps.__N_REDIRECT;\n if (!(destination.startsWith(\"/\") && props.pageProps.__N_REDIRECT_BASE_PATH !== false)) {\n _ctx.next = 135;\n break;\n }\n parsedHref = (0, _parseRelativeUrl).parseRelativeUrl(destination);\n parsedHref.pathname = resolveDynamicRoute(parsedHref.pathname, pages);\n ref4 = prepareUrlAs(_this, destination, destination), newUrl = ref4.url, newAs = ref4.as;\n return _ctx.abrupt(\"return\", _this.change(method, newUrl, newAs, options));\n case 135:\n handleHardNavigation({\n url: destination,\n router: _this\n });\n return _ctx.abrupt(\"return\", new Promise(function() {}));\n case 137:\n nextState.isPreview = !!props.__N_PREVIEW;\n if (!(props.notFound === SSG_DATA_NOT_FOUND)) {\n _ctx.next = 154;\n break;\n }\n ;\n _ctx.prev = 140;\n _ctx.next = 143;\n return _this.fetchComponent(\"/404\");\n case 143:\n notFoundRoute = \"/404\";\n _ctx.next = 149;\n break;\n case 146:\n _ctx.prev = 146;\n _ctx.t4 = _ctx[\"catch\"](140);\n notFoundRoute = \"/_error\";\n case 149:\n _ctx.next = 151;\n return _this.getRouteInfo({\n route: notFoundRoute,\n pathname: notFoundRoute,\n query: query,\n as: as,\n resolvedAs: resolvedAs,\n routeProps: {\n shallow: false\n },\n locale: nextState.locale,\n isPreview: nextState.isPreview\n });\n case 151:\n routeInfo = _ctx.sent;\n if (!(\"type\" in routeInfo)) {\n _ctx.next = 154;\n break;\n }\n throw new Error(\"Unexpected middleware effect on /404\");\n case 154:\n Router.events.emit(\"beforeHistoryChange\", as, routeProps);\n _this.changeState(method, url, as, options);\n if (isQueryUpdating && pathname === \"/_error\" && ((ref21 = self.__NEXT_DATA__.props) == null ? void 0 : (ref3 = ref21.pageProps) == null ? void 0 : ref3.statusCode) === 500 && (props == null ? 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 ;\n isValidShallowRoute = options.shallow && nextState.route === ((_route = routeInfo.route) != null ? _route : route);\n ;\n shouldScroll = (_scroll1 = options.scroll) != null ? _scroll1 : !isValidShallowRoute;\n resetScroll = shouldScroll ? {\n x: 0,\n y: 0\n } : null;\n _ctx.next = 164;\n return _this.set(_extends({}, nextState, {\n route: route,\n pathname: pathname,\n query: query,\n asPath: cleanedAs,\n isFallback: false\n }), routeInfo, forcedScroll != null ? forcedScroll : resetScroll).catch(function(e) {\n if (e.cancelled) error = error || e;\n else throw e;\n });\n case 164:\n if (!error) {\n _ctx.next = 167;\n break;\n }\n if (!isQueryUpdating) {\n Router.events.emit(\"routeChangeError\", error, cleanedAs, routeProps);\n }\n throw error;\n case 167:\n if (false) {}\n if (!isQueryUpdating) {\n Router.events.emit(\"routeChangeComplete\", as, routeProps);\n }\n hashRegex = /#.+$/;\n if (shouldScroll && hashRegex.test(as)) {\n _this.scrollToHash(as);\n }\n return _ctx.abrupt(\"return\", true);\n case 174:\n _ctx.prev = 174;\n _ctx.t5 = _ctx[\"catch\"](110);\n if (!((0, _isError).default(_ctx.t5) && _ctx.t5.cancelled)) {\n _ctx.next = 178;\n break;\n }\n return _ctx.abrupt(\"return\", false);\n case 178:\n throw _ctx.t5;\n case 179:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee, null, [\n [\n 37,\n 42\n ],\n [\n 51,\n 63\n ],\n [\n 110,\n 174\n ],\n [\n 140,\n 146\n ]\n ]);\n }))();\n }\n },\n {\n key: \"changeState\",\n value: function changeState(method, url, as) {\n var options = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};\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.\".concat(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: url,\n as: as,\n options: options,\n __N: true,\n key: this._key = method !== \"pushState\" ? this._key : createKey()\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 },\n {\n key: \"handleRouteInfoError\",\n value: function handleRouteInfoError(err, pathname, query, as, routeProps, loadErrorFail) {\n var _this = this;\n return _asyncToGenerator(_runtimeJs.default.mark(function _callee() {\n var Component, styleSheets, props, ref, routeInfo;\n return _runtimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n console.error(err);\n if (!err.cancelled) {\n _ctx.next = 3;\n break;\n }\n // bubble up cancellation errors\n throw err;\n case 3:\n if (!((0, _routeLoader).isAssetError(err) || loadErrorFail)) {\n _ctx.next = 7;\n break;\n }\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 handleHardNavigation({\n url: as,\n router: _this\n });\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 case 7:\n _ctx.prev = 7;\n ;\n ;\n ;\n if (!(typeof Component === \"undefined\" || typeof styleSheets === \"undefined\")) {\n _ctx.next = 19;\n break;\n }\n ;\n _ctx.next = 15;\n return _this.fetchComponent(\"/_error\");\n case 15:\n ref = _ctx.sent;\n Component = ref.page;\n styleSheets = ref.styleSheets;\n ref;\n case 19:\n routeInfo = {\n props: props,\n Component: Component,\n styleSheets: styleSheets,\n err: err,\n error: err\n };\n if (routeInfo.props) {\n _ctx.next = 31;\n break;\n }\n _ctx.prev = 21;\n _ctx.next = 24;\n return _this.getInitialProps(Component, {\n err: err,\n pathname: pathname,\n query: query\n });\n case 24:\n routeInfo.props = _ctx.sent;\n _ctx.next = 31;\n break;\n case 27:\n _ctx.prev = 27;\n _ctx.t0 = _ctx[\"catch\"](21);\n console.error(\"Error in error page `getInitialProps`: \", _ctx.t0);\n routeInfo.props = {};\n case 31:\n return _ctx.abrupt(\"return\", routeInfo);\n case 34:\n _ctx.prev = 34;\n _ctx.t1 = _ctx[\"catch\"](7);\n return _ctx.abrupt(\"return\", _this.handleRouteInfoError((0, _isError).default(_ctx.t1) ? _ctx.t1 : new Error(_ctx.t1 + \"\"), pathname, query, as, routeProps, true));\n case 37:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee, null, [\n [\n 7,\n 34\n ],\n [\n 21,\n 27\n ]\n ]);\n }))();\n }\n },\n {\n key: \"getRouteInfo\",\n value: function getRouteInfo(param) {\n var requestedRoute = param.route, pathname = param.pathname, query = param.query, as = param.as, resolvedAs = param.resolvedAs, routeProps = param.routeProps, locale = param.locale, hasMiddleware = param.hasMiddleware, isPreview = param.isPreview, unstable_skipClientCache = param.unstable_skipClientCache;\n var _this = this;\n return _asyncToGenerator(_runtimeJs.default.mark(function _callee() {\n var route, ref, ref4, ref5, handleCancelled, existingInfo, cachedRouteInfo, fetchNextDataParams, data, routeInfo, isValidElementType, useStreamedFlightData, shouldFetchData, props, cacheKey, flightInfo;\n return _runtimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n route = requestedRoute;\n _ctx.prev = 1;\n ;\n handleCancelled = getCancelledHandler({\n route: route,\n router: _this\n });\n existingInfo = _this.components[route];\n if (!(routeProps.shallow && existingInfo && _this.route === route)) {\n _ctx.next = 7;\n break;\n }\n return _ctx.abrupt(\"return\", existingInfo);\n case 7:\n cachedRouteInfo = existingInfo && !(\"initial\" in existingInfo) && \"development\" !== \"development\" ? 0 : undefined;\n fetchNextDataParams = {\n dataHref: _this.pageLoader.getDataHref({\n href: (0, _formatUrl).formatWithValidation({\n pathname: pathname,\n query: query\n }),\n skipInterpolation: true,\n asPath: resolvedAs,\n locale: locale\n }),\n hasMiddleware: true,\n isServerRender: _this.isSsr,\n parseJSON: true,\n inflightCache: _this.sdc,\n persistCache: !isPreview,\n isPrefetch: false,\n unstable_skipClientCache: unstable_skipClientCache\n };\n _ctx.next = 11;\n return withMiddlewareEffects({\n fetchData: function() {\n return fetchNextData(fetchNextDataParams);\n },\n asPath: resolvedAs,\n locale: locale,\n router: _this\n });\n case 11:\n data = _ctx.sent;\n handleCancelled();\n if (!((data == null ? void 0 : (ref = data.effect) == null ? void 0 : ref.type) === \"redirect-internal\" || (data == null ? void 0 : (ref4 = data.effect) == null ? void 0 : ref4.type) === \"redirect-external\")) {\n _ctx.next = 15;\n break;\n }\n return _ctx.abrupt(\"return\", data.effect);\n case 15:\n if (!((data == null ? void 0 : (ref5 = data.effect) == null ? void 0 : ref5.type) === \"rewrite\")) {\n _ctx.next = 25;\n break;\n }\n route = (0, _removeTrailingSlash).removeTrailingSlash(data.effect.resolvedHref);\n pathname = data.effect.resolvedHref;\n query = _extends({}, query, data.effect.parsedAs.query);\n resolvedAs = data.effect.parsedAs.pathname;\n // Check again the cache with the new destination.\n existingInfo = _this.components[route];\n if (!(routeProps.shallow && existingInfo && _this.route === route && !hasMiddleware)) {\n _ctx.next = 24;\n break;\n }\n // If we have a match with the current route due to rewrite,\n // we can copy the existing information to the rewritten one.\n // Then, we return the information along with the matched route.\n _this.components[requestedRoute] = _extends({}, existingInfo, {\n route: route\n });\n return _ctx.abrupt(\"return\", _extends({}, existingInfo, {\n route: route\n }));\n case 24:\n cachedRouteInfo = existingInfo && !(\"initial\" in existingInfo) && \"development\" !== \"development\" ? 0 : undefined;\n case 25:\n if (!(route === \"/api\" || route.startsWith(\"/api/\"))) {\n _ctx.next = 28;\n break;\n }\n handleHardNavigation({\n url: as,\n router: _this\n });\n return _ctx.abrupt(\"return\", new Promise(function() {}));\n case 28:\n _ctx.t0 = cachedRouteInfo;\n if (_ctx.t0) {\n _ctx.next = 33;\n break;\n }\n _ctx.next = 32;\n return _this.fetchComponent(route).then(function(res) {\n return {\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 case 32:\n _ctx.t0 = _ctx.sent;\n case 33:\n routeInfo = _ctx.t0;\n if (false) {}\n isValidElementType = (__webpack_require__(/*! next/dist/compiled/react-is */ \"../node_modules/next/dist/compiled/react-is/index.js\").isValidElementType);\n if (isValidElementType(routeInfo.Component)) {\n _ctx.next = 38;\n break;\n }\n throw new Error('The default export is not a React Component in page: \"'.concat(pathname, '\"'));\n case 38:\n useStreamedFlightData = routeInfo.__N_RSC && ( true || 0);\n shouldFetchData = routeInfo.__N_SSG || routeInfo.__N_SSP || routeInfo.__N_RSC;\n _ctx.next = 42;\n return _this._getData(_asyncToGenerator(_runtimeJs.default.mark(function _callee() {\n var json;\n return _runtimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n if (!(shouldFetchData && !useStreamedFlightData)) {\n _ctx.next = 8;\n break;\n }\n _ctx.t0 = data;\n if (_ctx.t0) {\n _ctx.next = 6;\n break;\n }\n _ctx.next = 5;\n return fetchNextData({\n dataHref: _this.pageLoader.getDataHref({\n href: (0, _formatUrl).formatWithValidation({\n pathname: pathname,\n query: query\n }),\n asPath: resolvedAs,\n locale: locale\n }),\n isServerRender: _this.isSsr,\n parseJSON: true,\n inflightCache: _this.sdc,\n persistCache: !isPreview,\n isPrefetch: false,\n unstable_skipClientCache: unstable_skipClientCache\n });\n case 5:\n _ctx.t0 = _ctx.sent;\n case 6:\n json = _ctx.t0.json;\n return _ctx.abrupt(\"return\", {\n props: json\n });\n case 8:\n _ctx.t1 = {};\n _ctx.next = 11;\n return _this.getInitialProps(routeInfo.Component, {\n pathname: pathname,\n query: query,\n asPath: as,\n locale: locale,\n locales: _this.locales,\n defaultLocale: _this.defaultLocale\n });\n case 11:\n _ctx.t2 = _ctx.sent;\n return _ctx.abrupt(\"return\", {\n headers: _ctx.t1,\n props: _ctx.t2\n });\n case 13:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee);\n })));\n case 42:\n props = _ctx.sent.props;\n // Only bust the data cache for SSP routes although\n // middleware can skip cache per request with\n // x-middleware-cache: no-cache as well\n if (routeInfo.__N_SSP && fetchNextDataParams.dataHref) {\n cacheKey = new URL(fetchNextDataParams.dataHref, window.location.href).href;\n delete _this.sdc[cacheKey];\n }\n // we kick off a HEAD request in the background\n // when a non-prefetch request is made to signal revalidation\n if (!_this.isPreview && routeInfo.__N_SSG && \"development\" !== \"development\") {}\n ;\n if (!routeInfo.__N_RSC) {\n _ctx.next = 56;\n break;\n }\n if (!useStreamedFlightData) {\n _ctx.next = 53;\n break;\n }\n _ctx.next = 50;\n return _this._getData(function() {\n return _this._getFlightData((0, _formatUrl).formatWithValidation({\n query: _extends({}, query, {\n __flight__: \"1\"\n }),\n pathname: (0, _isDynamic).isDynamicRoute(route) ? interpolateAs(pathname, (0, _parseRelativeUrl).parseRelativeUrl(resolvedAs).pathname, query).result : pathname\n }));\n });\n case 50:\n _ctx.t1 = _ctx.sent.data;\n _ctx.next = 54;\n break;\n case 53:\n _ctx.t1 = props.__flight__;\n case 54:\n _ctx.t2 = _ctx.t1;\n flightInfo = {\n __flight__: _ctx.t2\n };\n case 56:\n props.pageProps = Object.assign({}, props.pageProps, flightInfo);\n routeInfo.props = props;\n routeInfo.route = route;\n routeInfo.query = query;\n routeInfo.resolvedAs = resolvedAs;\n _this.components[route] = routeInfo;\n // If the route was rewritten in the process of fetching data,\n // we update the cache to allow hitting the same data for shallow requests.\n if (route !== requestedRoute) {\n _this.components[requestedRoute] = _extends({}, routeInfo, {\n route: route\n });\n }\n return _ctx.abrupt(\"return\", routeInfo);\n case 66:\n _ctx.prev = 66;\n _ctx.t3 = _ctx[\"catch\"](1);\n return _ctx.abrupt(\"return\", _this.handleRouteInfoError((0, _isError).getProperError(_ctx.t3), pathname, query, as, routeProps));\n case 69:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee, null, [\n [\n 1,\n 66\n ]\n ]);\n }))();\n }\n },\n {\n key: \"set\",\n value: function set(state, data, resetScroll) {\n this.state = state;\n return this.sub(data, this.components[\"/_app\"].Component, resetScroll);\n }\n },\n {\n /**\n * Callback to execute before replacing router state\n * @param cb callback to be executed\n */ key: \"beforePopState\",\n value: function beforePopState(cb) {\n this._bps = cb;\n }\n },\n {\n key: \"onlyAHashChange\",\n value: function onlyAHashChange(as) {\n if (!this.asPath) return false;\n var ref = _slicedToArray(this.asPath.split(\"#\"), 2), oldUrlNoHash = ref[0], oldHash = ref[1];\n var ref1 = _slicedToArray(as.split(\"#\"), 2), newUrlNoHash = ref1[0], newHash = ref1[1];\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 },\n {\n key: \"scrollToHash\",\n value: function scrollToHash(as) {\n var ref = _slicedToArray(as.split(\"#\"), 2), tmp = ref[1], hash = tmp === void 0 ? \"\" : tmp;\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 // Decode hash to make non-latin anchor works.\n var rawHash = decodeURIComponent(hash);\n // First we check if the element by id is found\n var idEl = document.getElementById(rawHash);\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 var nameEl = document.getElementsByName(rawHash)[0];\n if (nameEl) {\n nameEl.scrollIntoView();\n }\n }\n },\n {\n key: \"urlIsNew\",\n value: function urlIsNew(asPath) {\n return this.asPath !== asPath;\n }\n },\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 */ key: \"prefetch\",\n value: function prefetch(url) {\n var asPath = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : url, options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var _this = this;\n return _asyncToGenerator(_runtimeJs.default.mark(function _callee() {\n var parsed, pathname, query, parsedAs, localePathResult, pages, resolvedAs, locale, isMiddlewareMatch, rewrites, ref, rewritesResult, data, route;\n return _runtimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n parsed = (0, _parseRelativeUrl).parseRelativeUrl(url);\n pathname = parsed.pathname, query = parsed.query;\n if (false) {}\n _ctx.next = 5;\n return _this.pageLoader.getPageList();\n case 5:\n pages = _ctx.sent;\n resolvedAs = asPath;\n locale = typeof options.locale !== \"undefined\" ? options.locale || undefined : _this.locale;\n _ctx.next = 10;\n return matchesMiddleware({\n asPath: asPath,\n locale: locale,\n router: _this\n });\n case 10:\n isMiddlewareMatch = _ctx.sent;\n if (true) {\n _ctx.next = 24;\n break;\n }\n ;\n ;\n _ctx.next = 16;\n return (0, _routeLoader).getClientBuildManifest();\n case 16:\n ref = _ctx.sent;\n rewrites = ref.__rewrites;\n ref;\n rewritesResult = (0, _resolveRewrites).default((0, _addBasePath).addBasePath((0, _addLocale).addLocale(asPath, _this.locale), true), pages, rewrites, parsed.query, function(p) {\n return resolveDynamicRoute(p, pages);\n }, _this.locales);\n if (!rewritesResult.externalDest) {\n _ctx.next = 22;\n break;\n }\n return _ctx.abrupt(\"return\");\n case 22:\n resolvedAs = (0, _removeLocale).removeLocale((0, _removeBasePath).removeBasePath(rewritesResult.asPath), _this.locale);\n if (rewritesResult.matchedPage && rewritesResult.resolvedHref) {\n // if this directly matches a page we need to update the href to\n // allow the correct page chunk to be loaded\n pathname = rewritesResult.resolvedHref;\n parsed.pathname = pathname;\n if (!isMiddlewareMatch) {\n url = (0, _formatUrl).formatWithValidation(parsed);\n }\n }\n case 24:\n parsed.pathname = resolveDynamicRoute(parsed.pathname, pages);\n if ((0, _isDynamic).isDynamicRoute(parsed.pathname)) {\n pathname = parsed.pathname;\n parsed.pathname = pathname;\n Object.assign(query, (0, _routeMatcher).getRouteMatcher((0, _routeRegex).getRouteRegex(parsed.pathname))((0, _parsePath).parsePath(asPath).pathname) || {});\n if (!isMiddlewareMatch) {\n url = (0, _formatUrl).formatWithValidation(parsed);\n }\n }\n if (false) {}\n return _ctx.abrupt(\"return\");\n case 28:\n _ctx.next = 30;\n return withMiddlewareEffects({\n fetchData: function() {\n return fetchNextData({\n dataHref: _this.pageLoader.getDataHref({\n href: (0, _formatUrl).formatWithValidation({\n pathname: pathname,\n query: query\n }),\n skipInterpolation: true,\n asPath: resolvedAs,\n locale: locale\n }),\n hasMiddleware: true,\n isServerRender: _this.isSsr,\n parseJSON: true,\n inflightCache: _this.sdc,\n persistCache: !_this.isPreview,\n isPrefetch: true\n });\n },\n asPath: asPath,\n locale: locale,\n router: _this\n });\n case 30:\n data = _ctx.sent;\n /**\n * If there was a rewrite we apply the effects of the rewrite on the\n * current parameters for the prefetch.\n */ if ((data == null ? void 0 : data.effect.type) === \"rewrite\") {\n parsed.pathname = data.effect.resolvedHref;\n pathname = data.effect.resolvedHref;\n query = _extends({}, query, data.effect.parsedAs.query);\n resolvedAs = data.effect.parsedAs.pathname;\n url = (0, _formatUrl).formatWithValidation(parsed);\n }\n if (!((data == null ? void 0 : data.effect.type) === \"redirect-external\")) {\n _ctx.next = 34;\n break;\n }\n return _ctx.abrupt(\"return\");\n case 34:\n route = (0, _removeTrailingSlash).removeTrailingSlash(pathname);\n _ctx.next = 37;\n return Promise.all([\n _this.pageLoader._isSsg(route).then(function(isSsg) {\n return isSsg ? fetchNextData({\n dataHref: (data == null ? void 0 : data.dataHref) || _this.pageLoader.getDataHref({\n href: url,\n asPath: resolvedAs,\n locale: locale\n }),\n isServerRender: false,\n parseJSON: true,\n inflightCache: _this.sdc,\n persistCache: !_this.isPreview,\n isPrefetch: true,\n unstable_skipClientCache: options.unstable_skipClientCache || options.priority\n }).then(function() {\n return false;\n }) : false;\n }),\n _this.pageLoader[options.priority ? \"loadPage\" : \"prefetch\"](route), \n ]);\n case 37:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee);\n }))();\n }\n },\n {\n key: \"fetchComponent\",\n value: function fetchComponent(route) {\n var _this = this;\n return _asyncToGenerator(_runtimeJs.default.mark(function _callee() {\n var handleCancelled, componentResult;\n return _runtimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n handleCancelled = getCancelledHandler({\n route: route,\n router: _this\n });\n _ctx.prev = 1;\n _ctx.next = 4;\n return _this.pageLoader.loadPage(route);\n case 4:\n componentResult = _ctx.sent;\n handleCancelled();\n return _ctx.abrupt(\"return\", componentResult);\n case 9:\n _ctx.prev = 9;\n _ctx.t0 = _ctx[\"catch\"](1);\n handleCancelled();\n throw _ctx.t0;\n case 13:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee, null, [\n [\n 1,\n 9\n ]\n ]);\n }))();\n }\n },\n {\n key: \"_getData\",\n value: function _getData(fn) {\n var _this = this;\n var cancelled = false;\n var cancel = function() {\n cancelled = true;\n };\n this.clc = cancel;\n return fn().then(function(data) {\n if (cancel === _this.clc) {\n _this.clc = null;\n }\n if (cancelled) {\n var err = new Error(\"Loading initial props cancelled\");\n err.cancelled = true;\n throw err;\n }\n return data;\n });\n }\n },\n {\n key: \"_getFlightData\",\n value: function _getFlightData(dataHref) {\n // Do not cache RSC flight response since it's not a static resource\n return fetchNextData({\n dataHref: dataHref,\n isServerRender: true,\n parseJSON: false,\n inflightCache: this.sdc,\n persistCache: false,\n isPrefetch: false\n }).then(function(param) {\n var text = param.text;\n return {\n data: text\n };\n });\n }\n },\n {\n key: \"getInitialProps\",\n value: function getInitialProps(Component, ctx) {\n var ref = this.components[\"/_app\"], App = ref.Component;\n var AppTree = this._wrapApp(App);\n ctx.AppTree = AppTree;\n return (0, _utils).loadGetInitialProps(App, {\n AppTree: AppTree,\n Component: Component,\n router: this,\n ctx: ctx\n });\n }\n },\n {\n key: \"route\",\n get: function get() {\n return this.state.route;\n }\n },\n {\n key: \"pathname\",\n get: function get() {\n return this.state.pathname;\n }\n },\n {\n key: \"query\",\n get: function get() {\n return this.state.query;\n }\n },\n {\n key: \"asPath\",\n get: function get() {\n return this.state.asPath;\n }\n },\n {\n key: \"locale\",\n get: function get() {\n return this.state.locale;\n }\n },\n {\n key: \"isFallback\",\n get: function get() {\n return this.state.isFallback;\n }\n },\n {\n key: \"isPreview\",\n get: function get() {\n return this.state.isPreview;\n }\n }\n ]);\n return Router;\n}();\nRouter.events = (0, _mitt).default();\nfunction matchesMiddleware(options) {\n return Promise.resolve(options.router.pageLoader.getMiddlewareList()).then(function(items) {\n var ref = (0, _parsePath).parsePath(options.asPath), asPathname = ref.pathname;\n var cleanedAs = (0, _hasBasePath).hasBasePath(asPathname) ? (0, _removeBasePath).removeBasePath(asPathname) : asPathname;\n return !!(items == null ? void 0 : items.some(function(param) {\n var _param = _slicedToArray(param, 2), regex = _param[0], ssr = _param[1];\n return !ssr && new RegExp(regex).test((0, _addLocale).addLocale(cleanedAs, options.locale));\n }));\n });\n}\nfunction withMiddlewareEffects(options) {\n return matchesMiddleware(options).then(function(matches) {\n if (matches && options.fetchData) {\n return options.fetchData().then(function(data) {\n return getMiddlewareData(data.dataHref, data.response, options).then(function(effect) {\n return {\n dataHref: data.dataHref,\n json: data.json,\n response: data.response,\n text: data.text,\n effect: effect\n };\n });\n }).catch(function(_err) {\n /**\n * TODO: Revisit this in the future.\n * For now we will not consider middleware data errors to be fatal.\n * maybe we should revisit in the future.\n */ return null;\n });\n }\n return null;\n });\n}\nfunction getMiddlewareData(source, response, options) {\n var nextConfig = {\n basePath: options.router.basePath,\n i18n: {\n locales: options.router.locales\n },\n trailingSlash: Boolean(false)\n };\n var rewriteHeader = response.headers.get(\"x-nextjs-rewrite\");\n var rewriteTarget = rewriteHeader || response.headers.get(\"x-nextjs-matched-path\");\n var matchedPath = response.headers.get(\"x-matched-path\");\n if (!rewriteTarget && !(matchedPath == null ? void 0 : matchedPath.includes(\"__next_data_catchall\"))) {\n rewriteTarget = matchedPath;\n }\n if (rewriteTarget) {\n if (rewriteTarget.startsWith(\"/\")) {\n var parsedRewriteTarget = (0, _parseRelativeUrl).parseRelativeUrl(rewriteTarget);\n var pathnameInfo = (0, _getNextPathnameInfo).getNextPathnameInfo(parsedRewriteTarget.pathname, {\n nextConfig: nextConfig,\n parseData: true\n });\n var fsPathname = (0, _removeTrailingSlash).removeTrailingSlash(pathnameInfo.pathname);\n return Promise.all([\n options.router.pageLoader.getPageList(),\n (0, _routeLoader).getClientBuildManifest(), \n ]).then(function(param) {\n var _param = _slicedToArray(param, 2), pages = _param[0], ref = _param[1], rewrites = ref.__rewrites;\n var as = (0, _addLocale).addLocale(pathnameInfo.pathname, pathnameInfo.locale);\n if ((0, _isDynamic).isDynamicRoute(as) || !rewriteHeader && pages.includes((0, _normalizeLocalePath).normalizeLocalePath((0, _removeBasePath).removeBasePath(as), options.router.locales).pathname)) {\n var parsedSource = (0, _getNextPathnameInfo).getNextPathnameInfo((0, _parseRelativeUrl).parseRelativeUrl(source).pathname, {\n parseData: true\n });\n as = (0, _addBasePath).addBasePath(parsedSource.pathname);\n parsedRewriteTarget.pathname = as;\n }\n if (false) { var result; }\n var resolvedHref = !pages.includes(fsPathname) ? resolveDynamicRoute((0, _normalizeLocalePath).normalizeLocalePath((0, _removeBasePath).removeBasePath(parsedRewriteTarget.pathname), options.router.locales).pathname, pages) : fsPathname;\n if ((0, _isDynamic).isDynamicRoute(resolvedHref)) {\n var matches = (0, _routeMatcher).getRouteMatcher((0, _routeRegex).getRouteRegex(resolvedHref))(as);\n Object.assign(parsedRewriteTarget.query, matches || {});\n }\n return {\n type: \"rewrite\",\n parsedAs: parsedRewriteTarget,\n resolvedHref: resolvedHref\n };\n });\n }\n var src = (0, _parsePath).parsePath(source);\n var pathname = (0, _formatNextPathnameInfo).formatNextPathnameInfo(_extends({}, (0, _getNextPathnameInfo).getNextPathnameInfo(src.pathname, {\n nextConfig: nextConfig,\n parseData: true\n }), {\n defaultLocale: options.router.defaultLocale,\n buildId: \"\"\n }));\n return Promise.resolve({\n type: \"redirect-external\",\n destination: \"\".concat(pathname).concat(src.query).concat(src.hash)\n });\n }\n var redirectTarget = response.headers.get(\"x-nextjs-redirect\");\n if (redirectTarget) {\n if (redirectTarget.startsWith(\"/\")) {\n var src1 = (0, _parsePath).parsePath(redirectTarget);\n var pathname1 = (0, _formatNextPathnameInfo).formatNextPathnameInfo(_extends({}, (0, _getNextPathnameInfo).getNextPathnameInfo(src1.pathname, {\n nextConfig: nextConfig,\n parseData: true\n }), {\n defaultLocale: options.router.defaultLocale,\n buildId: \"\"\n }));\n return Promise.resolve({\n type: \"redirect-internal\",\n newAs: \"\".concat(pathname1).concat(src1.query).concat(src1.hash),\n newUrl: \"\".concat(pathname1).concat(src1.query).concat(src1.hash)\n });\n }\n return Promise.resolve({\n type: \"redirect-external\",\n destination: redirectTarget\n });\n }\n return Promise.resolve({\n type: \"next\"\n });\n}\nexports[\"default\"] = Router; //# sourceMappingURL=router.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zaGFyZWQvbGliL3JvdXRlci9yb3V0ZXIuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7Ozs7Ozs7OztBQUNiQSw4Q0FBNkM7SUFDekNHLEtBQUssRUFBRSxJQUFJO0NBQ2QsRUFBQyxDQUFDO0FBQ0hELGtCQUFrQixHQUFHRSxVQUFVLENBQUM7QUFDaENGLHFCQUFxQixHQUFHRyxhQUFhLENBQUM7QUFDdENILG1CQUFtQixHQUFHSSxXQUFXLENBQUM7QUFDbENKLGlCQUFpQixHQUFHSyxTQUFTLENBQUM7QUFDOUJMLGtCQUFlLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDekIsSUFBSU8sdUJBQXVCLEdBQUdDLG1CQUFPLENBQUMsOEdBQTBDLENBQUM7QUFDakYsSUFBSUMsb0JBQW9CLEdBQUdELG1CQUFPLENBQUMsaUhBQStCLENBQUM7QUFDbkUsSUFBSUUsWUFBWSxHQUFHRixtQkFBTyxDQUFDLHNGQUE4QixDQUFDO0FBQzFELElBQUlHLE9BQU8sR0FBR0gsbUJBQU8sQ0FBQywwRUFBd0IsQ0FBQztBQUMvQyxJQUFJSSxRQUFRLEdBQUdDLHVCQUF1QixDQUFDTCxtQkFBTyxDQUFDLHdFQUF1QixDQUFDLENBQUM7QUFDeEUsSUFBSU0sb0JBQW9CLEdBQUdOLG1CQUFPLENBQUMsbUhBQW9DLENBQUM7QUFDeEUsSUFBSU8sb0JBQW9CLEdBQUdQLG1CQUFPLENBQUMseUdBQStCLENBQUM7QUFDbkUsSUFBSVEsS0FBSyxHQUFHQyx1QkFBc0IsQ0FBQ1QsbUJBQU8sQ0FBQyw2REFBUyxDQUFDLENBQUM7QUFDdEQsSUFBSVUsTUFBTSxHQUFHVixtQkFBTyxDQUFDLCtEQUFVLENBQUM7QUFDaEMsSUFBSVcsVUFBVSxHQUFHWCxtQkFBTyxDQUFDLDJGQUFvQixDQUFDO0FBQzlDLElBQUlZLGlCQUFpQixHQUFHWixtQkFBTyxDQUFDLDJHQUE0QixDQUFDO0FBQzdELElBQUlhLFlBQVksR0FBR2IsbUJBQU8sQ0FBQyw2RkFBcUIsQ0FB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QzlCLENBQUMsQ0FBQztLQUNOO0lBQ0QsT0FBTzNaLE9BQU8sQ0FBQ1QsT0FBTyxDQUFDO1FBQ25CMlUsSUFBSSxFQUFFLE1BQU07S0FDZixDQUFDLENBQUM7Q0FDTjtBQUNEaFgsa0JBQWUsR0FBR2dPLE1BQU0sQ0FBQyxDQUV6QixrQ0FBa0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi9yb3V0ZXIvcm91dGVyLmpzPzEyODMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmlzTG9jYWxVUkwgPSBpc0xvY2FsVVJMO1xuZXhwb3J0cy5pbnRlcnBvbGF0ZUFzID0gaW50ZXJwb2xhdGVBcztcbmV4cG9ydHMucmVzb2x2ZUhyZWYgPSByZXNvbHZlSHJlZjtcbmV4cG9ydHMuY3JlYXRlS2V5ID0gY3JlYXRlS2V5O1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xudmFyIF9ub3JtYWxpemVUcmFpbGluZ1NsYXNoID0gcmVxdWlyZShcIi4uLy4uLy4uL2NsaWVudC9ub3JtYWxpemUtdHJhaWxpbmctc2xhc2hcIik7XG52YXIgX3JlbW92ZVRyYWlsaW5nU2xhc2ggPSByZXF1aXJlKFwiLi91dGlscy9yZW1vdmUtdHJhaWxpbmctc2xhc2hcIik7XG52YXIgX3JvdXRlTG9hZGVyID0gcmVxdWlyZShcIi4uLy4uLy4uL2NsaWVudC9yb3V0ZS1sb2FkZXJcIik7XG52YXIgX3NjcmlwdCA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jbGllbnQvc2NyaXB0XCIpO1xudmFyIF9pc0Vycm9yID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcIi4uLy4uLy4uL2xpYi9pcy1lcnJvclwiKSk7XG52YXIgX2Rlbm9ybWFsaXplUGFnZVBhdGggPSByZXF1aXJlKFwiLi4vcGFnZS1wYXRoL2Rlbm9ybWFsaXplLXBhZ2UtcGF0aFwiKTtcbnZhciBfbm9ybWFsaXplTG9jYWxlUGF0aCA9IHJlcXVpcmUoXCIuLi9pMThuL25vcm1hbGl6ZS1sb2NhbGUtcGF0aFwiKTtcbnZhciBfbWl0dCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL21pdHRcIikpO1xudmFyIF91dGlscyA9IHJlcXVpcmUoXCIuLi91dGlsc1wiKTtcbnZhciBfaXNEeW5hbWljID0gcmVxdWlyZShcIi4vdXRpbHMvaXMtZHluYW1pY1wiKTtcbnZhciBfcGFyc2VSZWxhdGl2ZVVybCA9IHJlcXVpcmUoXCIuL3V0aWxzL3BhcnNlLXJlbGF0aXZlLXVybFwiKTtcbnZhciBfcXVlcnlzdHJpbmcgPSByZXF1aXJlKFwiLi91dGlscy9xdWVyeXN0cmluZ1wiKTtcbnZhciBfcmVzb2x2ZVJld3JpdGVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlscy9yZXNvbHZlLXJld3JpdGVzXCIpKTtcbnZhciBfcm91dGVNYXRjaGVyID0gcmVxdWlyZShcIi4vdXRpbHMvcm91dGUtbWF0Y2hlclwiKTtcbnZhciBfcm91dGVSZWdleCA9IHJlcXVpcmUoXCIuL3V0aWxzL3JvdXRlLXJlZ2V4XCIpO1xudmFyIF9mb3JtYXRVcmwgPSByZXF1aXJlKFwiLi91dGlscy9mb3JtYXQtdXJsXCIpO1xudmFyIF9kZXRlY3REb21haW5Mb2NhbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vY2xpZW50L2RldGVjdC1kb21haW4tbG9jYWxlXCIpO1xudmFyIF9wYXJzZVBhdGggPSByZXF1aXJlKFwiLi91dGlscy9wYXJzZS1wYXRoXCIpO1xudmFyIF9hZGRMb2NhbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vY2xpZW50L2FkZC1sb2NhbGVcIik7XG52YXIgX3JlbW92ZUxvY2FsZSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jbGllbnQvcmVtb3ZlLWxvY2FsZVwiKTtcbnZhciBfcmVtb3ZlQmFzZVBhdGggPSByZXF1aXJlKFwiLi4vLi4vLi4vY2xpZW50L3JlbW92ZS1iYXNlLXBhdGhcIik7XG52YXIgX2FkZEJhc2VQYXRoID0gcmVxdWlyZShcIi4uLy4uLy4uL2NsaWVudC9hZGQtYmFzZS1wYXRoXCIpO1xudmFyIF9oYXNCYXNlUGF0aCA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jbGllbnQvaGFzLWJhc2UtcGF0aFwiKTtcbnZhciBfZ2V0TmV4dFBhdGhuYW1lSW5mbyA9IHJlcXVpcmUoXCIuL3V0aWxzL2dldC1uZXh0LXBhdGhuYW1lLWluZm9cIik7XG52YXIgX2Zvcm1hdE5leHRQYXRobmFtZUluZm8gPSByZXF1aXJlKFwiLi91dGlscy9mb3JtYXQtbmV4dC1wYXRobmFtZS1pbmZvXCIpO1xuZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTtcbiAgICAgICAgdmFyIHZhbHVlID0gaW5mby52YWx1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKF9uZXh0LCBfdGhyb3cpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXMsIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHZhciBnZW4gPSBmbi5hcHBseShzZWxmLCBhcmdzKTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9uZXh0KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gX3Rocm93KGVycikge1xuICAgICAgICAgICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX25leHQodW5kZWZpbmVkKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICAgIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0YXJnZXQpIHtcbiAgICAgICAgZm9yKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yKHZhciBrZXkgaW4gc291cmNlKXtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH07XG4gICAgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikge1xuICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgICAgIGRlZmF1bHQ6IG9ialxuICAgIH07XG59XG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7XG4gICAgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsO1xuICAgIHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7XG4gICAgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjYWNoZTtcbiAgICB9O1xuICAgIHJldHVybiBjYWNoZTtcbn1cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikge1xuICAgIGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgICAgIH07XG4gICAgfVxuICAgIHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpO1xuICAgIGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkge1xuICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KG9iaik7XG4gICAgfVxuICAgIHZhciBuZXdPYmogPSB7fTtcbiAgICB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICAgZm9yKHZhciBrZXkgaW4gb2JqKXtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgIHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsO1xuICAgICAgICAgICAgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld09ialtrZXldID0gb2JqW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgbmV3T2JqLmRlZmF1bHQgPSBvYmo7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIGNhY2hlLnNldChvYmosIG5ld09iaik7XG4gICAgfVxuICAgIHJldHVybiBuZXdPYmo7XG59XG5mdW5jdGlvbiBidWlsZENhbmNlbGxhdGlvbkVycm9yKCkge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBFcnJvcignUm91dGUgQ2FuY2VsbGVkJyksIHtcbiAgICAgICAgY2FuY2VsbGVkOiB0cnVlXG4gICAgfSk7XG59XG5mdW5jdGlvbiBpc0xvY2FsVVJMKHVybCkge1xuICAgIC8vIHByZXZlbnQgYSBoeWRyYXRpb24gbWlzbWF0Y2ggb24gaHJlZiBmb3IgdXJsIHdpdGggYW5jaG9yIHJlZnNcbiAgICBpZiAoISgwLCBfdXRpbHMpLmlzQWJzb2x1dGVVcmwodXJsKSkgcmV0dXJuIHRydWU7XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gYWJzb2x1dGUgdXJscyBjYW4gYmUgbG9jYWwgaWYgdGhleSBhcmUgb24gdGhlIHNhbWUgb3JpZ2luXG4gICAgICAgIGNvbnN0IGxvY2F0aW9uT3JpZ2luID0gKDAsIF91dGlscykuZ2V0TG9jYXRpb25PcmlnaW4oKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSBuZXcgVVJMKHVybCwgbG9jYXRpb25PcmlnaW4pO1xuICAgICAgICByZXR1cm4gcmVzb2x2ZWQub3JpZ2luID09PSBsb2NhdGlvbk9yaWdpbiAmJiAoMCwgX2hhc0Jhc2VQYXRoKS5oYXNCYXNlUGF0aChyZXNvbHZlZC5wYXRobmFtZSk7XG4gICAgfSBjYXRjaCAoXykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuZnVuY3Rpb24gaW50ZXJwb2xhdGVBcyhyb3V0ZSwgYXNQYXRobmFtZSwgcXVlcnkpIHtcbiAgICBsZXQgaW50ZXJwb2xhdGVkUm91dGUgPSAnJztcbiAgICBjb25zdCBkeW5hbWljUmVnZXggPSAoMCwgX3JvdXRlUmVnZXgpLmdldFJvdXRlUmVnZXgocm91dGUpO1xuICAgIGNvbnN0IGR5bmFtaWNHcm91cHMgPSBkeW5hbWljUmVnZXguZ3JvdXBzO1xuICAgIGNvbnN0IGR5bmFtaWNNYXRjaGVzID0gLy8gVHJ5IHRvIG1hdGNoIHRoZSBkeW5hbWljIHJvdXRlIGFnYWluc3QgdGhlIGFzUGF0aFxuICAgIChhc1BhdGhuYW1lICE9PSByb3V0ZSA/ICgwLCBfcm91dGVNYXRjaGVyKS5nZXRSb3V0ZU1hdGNoZXIoZHluYW1pY1JlZ2V4KShhc1BhdGhuYW1lKSA6ICcnKSB8fCAvLyBGYWxsIGJhY2sgdG8gcmVhZGluZyB0aGUgdmFsdWVzIGZyb20gdGhlIGhyZWZcbiAgICAvLyBUT0RPOiBzaG91bGQgdGhpcyB0YWtlIHByaW9yaXR5OyBhbHNvIG5lZWQgdG8gY2hhbmdlIGluIHRoZSByb3V0ZXIuXG4gICAgcXVlcnk7XG4gICAgaW50ZXJwb2xhdGVkUm91dGUgPSByb3V0ZTtcbiAgICBjb25zdCBwYXJhbXMgPSBPYmplY3Qua2V5cyhkeW5hbWljR3JvdXBzKTtcbiAgICBpZiAoIXBhcmFtcy5ldmVyeSgocGFyYW0pPT57XG4gICAgICAgIGxldCB2YWx1ZSA9IGR5bmFtaWNNYXRjaGVzW3BhcmFtXSB8fCAnJztcbiAgICAgICAgY29uc3QgeyByZXBlYXQgLCBvcHRpb25hbCAgfSA9IGR5bmFtaWNHcm91cHNbcGFyYW1dO1xuICAgICAgICAvLyBzdXBwb3J0IHNpbmdsZS1sZXZlbCBjYXRjaC1hbGxcbiAgICAgICAgLy8gVE9ETzogbW9yZSByb2J1c3QgaGFuZGxpbmcgZm9yIHVzZXItZXJyb3IgKHBhc3NpbmcgYC9gKVxuICAgICAgICBsZXQgcmVwbGFjZWQgPSBgWyR7cmVwZWF0ID8gJy4uLicgOiAnJ30ke3BhcmFtfV1gO1xuICAgICAgICBpZiAob3B0aW9uYWwpIHtcbiAgICAgICAgICAgIHJlcGxhY2VkID0gYCR7IXZhbHVlID8gJy8nIDogJyd9WyR7cmVwbGFjZWR9XWA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcGVhdCAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHZhbHVlID0gW1xuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgXTtcbiAgICAgICAgcmV0dXJuIChvcHRpb25hbCB8fCBwYXJhbSBpbiBkeW5hbWljTWF0Y2hlcykgJiYgLy8gSW50ZXJwb2xhdGUgZ3JvdXAgaW50byBkYXRhIFVSTCBpZiBwcmVzZW50XG4gICAgICAgIChpbnRlcnBvbGF0ZWRSb3V0ZSA9IGludGVycG9sYXRlZFJvdXRlLnJlcGxhY2UocmVwbGFjZWQsIHJlcGVhdCA/IHZhbHVlLm1hcCgvLyB0aGVzZSB2YWx1ZXMgc2hvdWxkIGJlIGZ1bGx5IGVuY29kZWQgaW5zdGVhZCBvZiBqdXN0XG4gICAgICAgIC8vIHBhdGggZGVsaW1pdGVyIGVzY2FwZWQgc2luY2UgdGhleSBhcmUgYmVpbmcgaW5zZXJ0ZWRcbiAgICAgICAgLy8gaW50byB0aGUgVVJMIGFuZCB3ZSBleHBlY3QgVVJMIGVuY29kZWQgc2VnbWVudHNcbiAgICAgICAgLy8gd2hlbiBwYXJzaW5nIGR5bmFtaWMgcm91dGUgcGFyYW1zXG4gICAgICAgIChzZWdtZW50KT0+ZW5jb2RlVVJJQ29tcG9uZW50KHNlZ21lbnQpKS5qb2luKCcvJykgOiBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpKSB8fCAnLycpO1xuICAgIH0pKSB7XG4gICAgICAgIGludGVycG9sYXRlZFJvdXRlID0gJycgLy8gZGlkIG5vdCBzYXRpc2Z5IGFsbCByZXF1aXJlbWVudHNcbiAgICAgICAgO1xuICAgIC8vIG4uYi4gV2UgaWdub3JlIHRoaXMgZXJyb3IgYmVjYXVzZSB3ZSBoYW5kbGUgd2FybmluZyBmb3IgdGhpcyBjYXNlIGluXG4gICAgLy8gZGV2ZWxvcG1lbnQgaW4gdGhlIGA8TGluaz5gIGNvbXBvbmVudCBkaXJlY3RseS5cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICByZXN1bHQ6IGludGVycG9sYXRlZFJvdXRlXG4gICAgfTtcbn1cbmZ1bmN0aW9uIG9taXQob2JqZWN0LCBrZXlzKSB7XG4gICAgY29uc3Qgb21pdHRlZCA9IHt9O1xuICAgIE9iamVjdC5rZXlzKG9iamVjdCkuZm9yRWFjaCgoa2V5KT0+e1xuICAgICAgICBpZiAoIWtleXMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgb21pdHRlZFtrZXldID0gb2JqZWN0W2tleV07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gb21pdHRlZDtcbn1cbmZ1bmN0aW9uIHJlc29sdmVIcmVmKHJvdXRlciwgaHJlZiwgcmVzb2x2ZUFzKSB7XG4gICAgLy8gd2UgdXNlIGEgZHVtbXkgYmFzZSB1cmwgZm9yIHJlbGF0aXZlIHVybHNcbiAgICBsZXQgYmFzZTtcbiAgICBsZXQgdXJsQXNTdHJpbmcgPSB0eXBlb2YgaHJlZiA9PT0gJ3N0cmluZycgPyBocmVmIDogKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKGhyZWYpO1xuICAgIC8vIHJlcGVhdGVkIHNsYXNoZXMgYW5kIGJhY2tzbGFzaGVzIGluIHRoZSBVUkwgYXJlIGNvbnNpZGVyZWRcbiAgICAvLyBpbnZhbGlkIGFuZCB3aWxsIG5ldmVyIG1hdGNoIGEgTmV4dC5qcyBwYWdlL2ZpbGVcbiAgICBjb25zdCB1cmxQcm90b01hdGNoID0gdXJsQXNTdHJpbmcubWF0Y2goL15bYS16QS1aXXsxLH06XFwvXFwvLyk7XG4gICAgY29uc3QgdXJsQXNTdHJpbmdOb1Byb3RvID0gdXJsUHJvdG9NYXRjaCA/IHVybEFzU3RyaW5nLnNsaWNlKHVybFByb3RvTWF0Y2hbMF0ubGVuZ3RoKSA6IHVybEFzU3RyaW5nO1xuICAgIGNvbnN0IHVybFBhcnRzID0gdXJsQXNTdHJpbmdOb1Byb3RvLnNwbGl0KCc/Jyk7XG4gICAgaWYgKCh1cmxQYXJ0c1swXSB8fCAnJykubWF0Y2goLyhcXC9cXC98XFxcXCkvKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBJbnZhbGlkIGhyZWYgcGFzc2VkIHRvIG5leHQvcm91dGVyOiAke3VybEFzU3RyaW5nfSwgcmVwZWF0ZWQgZm9yd2FyZC1zbGFzaGVzICgvLykgb3IgYmFja3NsYXNoZXMgXFxcXCBhcmUgbm90IHZhbGlkIGluIHRoZSBocmVmYCk7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRVcmwgPSAoMCwgX3V0aWxzKS5ub3JtYWxpemVSZXBlYXRlZFNsYXNoZXModXJsQXNTdHJpbmdOb1Byb3RvKTtcbiAgICAgICAgdXJsQXNTdHJpbmcgPSAodXJsUHJvdG9NYXRjaCA/IHVybFByb3RvTWF0Y2hbMF0gOiAnJykgKyBub3JtYWxpemVkVXJsO1xuICAgIH1cbiAgICAvLyBSZXR1cm4gYmVjYXVzZSBpdCBjYW5ub3QgYmUgcm91dGVkIGJ5IHRoZSBOZXh0LmpzIHJvdXRlclxuICAgIGlmICghaXNMb2NhbFVSTCh1cmxBc1N0cmluZykpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVBcyA/IFtcbiAgICAgICAgICAgIHVybEFzU3RyaW5nXG4gICAgICAgIF0gOiB1cmxBc1N0cmluZztcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgYmFzZSA9IG5ldyBVUkwodXJsQXNTdHJpbmcuc3RhcnRzV2l0aCgnIycpID8gcm91dGVyLmFzUGF0aCA6IHJvdXRlci5wYXRobmFtZSwgJ2h0dHA6Ly9uJyk7XG4gICAgfSBjYXRjaCAoXykge1xuICAgICAgICAvLyBmYWxsYmFjayB0byAvIGZvciBpbnZhbGlkIGFzUGF0aCB2YWx1ZXMgZS5nLiAvL1xuICAgICAgICBiYXNlID0gbmV3IFVSTCgnLycsICdodHRwOi8vbicpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBjb25zdCBmaW5hbFVybCA9IG5ldyBVUkwodXJsQXNTdHJpbmcsIGJhc2UpO1xuICAgICAgICBmaW5hbFVybC5wYXRobmFtZSA9ICgwLCBfbm9ybWFsaXplVHJhaWxpbmdTbGFzaCkubm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2goZmluYWxVcmwucGF0aG5hbWUpO1xuICAgICAgICBsZXQgaW50ZXJwb2xhdGVkQXMgPSAnJztcbiAgICAgICAgaWYgKCgwLCBfaXNEeW5hbWljKS5pc0R5bmFtaWNSb3V0ZShmaW5hbFVybC5wYXRobmFtZSkgJiYgZmluYWxVcmwuc2VhcmNoUGFyYW1zICYmIHJlc29sdmVBcykge1xuICAgICAgICAgICAgY29uc3QgcXVlcnkgPSAoMCwgX3F1ZXJ5c3RyaW5nKS5zZWFyY2hQYXJhbXNUb1VybFF1ZXJ5KGZpbmFsVXJsLnNlYXJjaFBhcmFtcyk7XG4gICAgICAgICAgICBjb25zdCB7IHJlc3VsdCAsIHBhcmFtcyAgfSA9IGludGVycG9sYXRlQXMoZmluYWxVcmwucGF0aG5hbWUsIGZpbmFsVXJsLnBhdGhuYW1lLCBxdWVyeSk7XG4gICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgaW50ZXJwb2xhdGVkQXMgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICBwYXRobmFtZTogcmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICBoYXNoOiBmaW5hbFVybC5oYXNoLFxuICAgICAgICAgICAgICAgICAgICBxdWVyeTogb21pdChxdWVyeSwgcGFyYW1zKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGlmIHRoZSBvcmlnaW4gZGlkbid0IGNoYW5nZSwgaXQgbWVhbnMgd2UgcmVjZWl2ZWQgYSByZWxhdGl2ZSBocmVmXG4gICAgICAgIGNvbnN0IHJlc29sdmVkSHJlZiA9IGZpbmFsVXJsLm9yaWdpbiA9PT0gYmFzZS5vcmlnaW4gPyBmaW5hbFVybC5ocmVmLnNsaWNlKGZpbmFsVXJsLm9yaWdpbi5sZW5ndGgpIDogZmluYWxVcmwuaHJlZjtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVBcyA/IFtcbiAgICAgICAgICAgIHJlc29sdmVkSHJlZixcbiAgICAgICAgICAgIGludGVycG9sYXRlZEFzIHx8IHJlc29sdmVkSHJlZlxuICAgICAgICBdIDogcmVzb2x2ZWRIcmVmO1xuICAgIH0gY2F0Y2ggKF8xKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlQXMgPyBbXG4gICAgICAgICAgICB1cmxBc1N0cmluZ1xuICAgICAgICBdIDogdXJsQXNTdHJpbmc7XG4gICAgfVxufVxuZnVuY3Rpb24gc3RyaXBPcmlnaW4odXJsKSB7XG4gICAgY29uc3Qgb3JpZ2luID0gKDAsIF91dGlscykuZ2V0TG9jYXRpb25PcmlnaW4oKTtcbiAgICByZXR1cm4gdXJsLnN0YXJ0c1dpdGgob3JpZ2luKSA/IHVybC5zdWJzdHJpbmcob3JpZ2luLmxlbmd0aCkgOiB1cmw7XG59XG5mdW5jdGlvbiBwcmVwYXJlVXJsQXMocm91dGVyLCB1cmwsIGFzKSB7XG4gICAgLy8gSWYgdXJsIGFuZCBhcyBwcm92aWRlZCBhcyBhbiBvYmplY3QgcmVwcmVzZW50YXRpb24sXG4gICAgLy8gd2UnbGwgZm9ybWF0IHRoZW0gaW50byB0aGUgc3RyaW5nIHZlcnNpb24gaGVyZS5cbiAgICBsZXQgW3Jlc29sdmVkSHJlZiwgcmVzb2x2ZWRBc10gPSByZXNvbHZlSHJlZihyb3V0ZXIsIHVybCwgdHJ1ZSk7XG4gICAgY29uc3Qgb3JpZ2luID0gKDAsIF91dGlscykuZ2V0TG9jYXRpb25PcmlnaW4oKTtcbiAgICBjb25zdCBocmVmSGFkT3JpZ2luID0gcmVzb2x2ZWRIcmVmLnN0YXJ0c1dpdGgob3JpZ2luKTtcbiAgICBjb25zdCBhc0hhZE9yaWdpbiA9IHJlc29sdmVkQXMgJiYgcmVzb2x2ZWRBcy5zdGFydHNXaXRoKG9yaWdpbik7XG4gICAgcmVzb2x2ZWRIcmVmID0gc3RyaXBPcmlnaW4ocmVzb2x2ZWRIcmVmKTtcbiAgICByZXNvbHZlZEFzID0gcmVzb2x2ZWRBcyA/IHN0cmlwT3JpZ2luKHJlc29sdmVkQXMpIDogcmVzb2x2ZWRBcztcbiAgICBjb25zdCBwcmVwYXJlZFVybCA9IGhyZWZIYWRPcmlnaW4gPyByZXNvbHZlZEhyZWYgOiAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aChyZXNvbHZlZEhyZWYpO1xuICAgIGNvbnN0IHByZXBhcmVkQXMgPSBhcyA/IHN0cmlwT3JpZ2luKHJlc29sdmVIcmVmKHJvdXRlciwgYXMpKSA6IHJlc29sdmVkQXMgfHwgcmVzb2x2ZWRIcmVmO1xuICAgIHJldHVybiB7XG4gICAgICAgIHVybDogcHJlcGFyZWRVcmwsXG4gICAgICAgIGFzOiBhc0hhZE9yaWdpbiA/IHByZXBhcmVkQXMgOiAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aChwcmVwYXJlZEFzKVxuICAgIH07XG59XG5mdW5jdGlvbiByZXNvbHZlRHluYW1pY1JvdXRlKHBhdGhuYW1lLCBwYWdlcykge1xuICAgIGNvbnN0IGNsZWFuUGF0aG5hbWUgPSAoMCwgX3JlbW92ZVRyYWlsaW5nU2xhc2gpLnJlbW92ZVRyYWlsaW5nU2xhc2goKDAsIF9kZW5vcm1hbGl6ZVBhZ2VQYXRoKS5kZW5vcm1hbGl6ZVBhZ2VQYXRoKHBhdGhuYW1lKSk7XG4gICAgaWYgKGNsZWFuUGF0aG5hbWUgPT09ICcvNDA0JyB8fCBjbGVhblBhdGhuYW1lID09PSAnL19lcnJvcicpIHtcbiAgICAgICAgcmV0dXJuIHBhdGhuYW1lO1xuICAgIH1cbiAgICAvLyBoYW5kbGUgcmVzb2x2aW5nIGhyZWYgZm9yIGR5bmFtaWMgcm91dGVzXG4gICAgaWYgKCFwYWdlcy5pbmNsdWRlcyhjbGVhblBhdGhuYW1lKSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYXJyYXktY2FsbGJhY2stcmV0dXJuXG4gICAgICAgIHBhZ2VzLnNvbWUoKHBhZ2UpPT57XG4gICAgICAgICAgICBpZiAoKDAsIF9pc0R5bmFtaWMpLmlzRHluYW1pY1JvdXRlKHBhZ2UpICYmICgwLCBfcm91dGVSZWdleCkuZ2V0Um91dGVSZWdleChwYWdlKS5yZS50ZXN0KGNsZWFuUGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcGF0aG5hbWUgPSBwYWdlO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuICgwLCBfcmVtb3ZlVHJhaWxpbmdTbGFzaCkucmVtb3ZlVHJhaWxpbmdTbGFzaChwYXRobmFtZSk7XG59XG5jb25zdCBtYW51YWxTY3JvbGxSZXN0b3JhdGlvbiA9IHByb2Nlc3MuZW52Ll9fTkVYVF9TQ1JPTExfUkVTVE9SQVRJT04gJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgJ3Njcm9sbFJlc3RvcmF0aW9uJyBpbiB3aW5kb3cuaGlzdG9yeSAmJiAhIWZ1bmN0aW9uKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGxldCB2ID0gJ19fbmV4dCc7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZXF1ZW5jZXNcbiAgICAgICAgcmV0dXJuIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odiwgdiksIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0odiksIHRydWU7XG4gICAgfSBjYXRjaCAobikge31cbn0oKTtcbmNvbnN0IFNTR19EQVRBX05PVF9GT1VORCA9IFN5bWJvbCgnU1NHX0RBVEFfTk9UX0ZPVU5EJyk7XG5mdW5jdGlvbiBmZXRjaFJldHJ5KHVybCwgYXR0ZW1wdHMsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gZmV0Y2godXJsLCB7XG4gICAgICAgIC8vIENvb2tpZXMgYXJlIHJlcXVpcmVkIHRvIGJlIHByZXNlbnQgZm9yIE5leHQuanMnIFNTRyBcIlByZXZpZXcgTW9kZVwiLlxuICAgICAgICAvLyBDb29raWVzIG1heSBhbHNvIGJlIHJlcXVpcmVkIGZvciBgZ2V0U2VydmVyU2lkZVByb3BzYC5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gPiBgZmV0Y2hgIHdvbuKAmXQgc2VuZCBjb29raWVzLCB1bmxlc3MgeW91IHNldCB0aGUgY3JlZGVudGlhbHMgaW5pdFxuICAgICAgICAvLyA+IG9wdGlvbi5cbiAgICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0ZldGNoX0FQSS9Vc2luZ19GZXRjaFxuICAgICAgICAvL1xuICAgICAgICAvLyA+IEZvciBtYXhpbXVtIGJyb3dzZXIgY29tcGF0aWJpbGl0eSB3aGVuIGl0IGNvbWVzIHRvIHNlbmRpbmcgJlxuICAgICAgICAvLyA+IHJlY2VpdmluZyBjb29raWVzLCBhbHdheXMgc3VwcGx5IHRoZSBgY3JlZGVudGlhbHM6ICdzYW1lLW9yaWdpbidgXG4gICAgICAgIC8vID4gb3B0aW9uIGluc3RlYWQgb2YgcmVseWluZyBvbiB0aGUgZGVmYXVsdC5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dpdGh1Yi9mZXRjaCNjYXZlYXRzXG4gICAgICAgIGNyZWRlbnRpYWxzOiAnc2FtZS1vcmlnaW4nLFxuICAgICAgICBtZXRob2Q6IG9wdGlvbnMubWV0aG9kIHx8ICdHRVQnLFxuICAgICAgICBoZWFkZXJzOiBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zLmhlYWRlcnMsIHtcbiAgICAgICAgICAgICd4LW5leHRqcy1kYXRhJzogJzEnXG4gICAgICAgIH0pXG4gICAgfSkudGhlbigocmVzcG9uc2UpPT57XG4gICAgICAgIHJldHVybiAhcmVzcG9uc2Uub2sgJiYgYXR0ZW1wdHMgPiAxICYmIHJlc3BvbnNlLnN0YXR1cyA+PSA1MDAgPyBmZXRjaFJldHJ5KHVybCwgYXR0ZW1wdHMgLSAxLCBvcHRpb25zKSA6IHJlc3BvbnNlO1xuICAgIH0pO1xufVxuY29uc3QgYmFja2dyb3VuZENhY2hlID0ge307XG5mdW5jdGlvbiBmZXRjaE5leHREYXRhKHsgZGF0YUhyZWYgLCBpbmZsaWdodENhY2hlICwgaXNQcmVmZXRjaCAsIGhhc01pZGRsZXdhcmUgLCBpc1NlcnZlclJlbmRlciAsIHBhcnNlSlNPTiAsIHBlcnNpc3RDYWNoZSAsIGlzQmFja2dyb3VuZCAsIHVuc3RhYmxlX3NraXBDbGllbnRDYWNoZSAgfSkge1xuICAgIGNvbnN0IHsgaHJlZjogY2FjaGVLZXkgIH0gPSBuZXcgVVJMKGRhdGFIcmVmLCB3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgdmFyIHJlZjE7XG4gICAgY29uc3QgZ2V0RGF0YSA9IChwYXJhbXMpPT57XG4gICAgICAgIHJldHVybiBmZXRjaFJldHJ5KGRhdGFIcmVmLCBpc1NlcnZlclJlbmRlciA/IDMgOiAxLCB7XG4gICAgICAgICAgICBoZWFkZXJzOiBpc1ByZWZldGNoID8ge1xuICAgICAgICAgICAgICAgIHB1cnBvc2U6ICdwcmVmZXRjaCdcbiAgICAgICAgICAgIH0gOiB7fSxcbiAgICAgICAgICAgIG1ldGhvZDogKHJlZjEgPSBwYXJhbXMgPT0gbnVsbCA/IHZvaWQgMCA6IHBhcmFtcy5tZXRob2QpICE9IG51bGwgPyByZWYxIDogJ0dFVCdcbiAgICAgICAgfSkudGhlbigocmVzcG9uc2UpPT57XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uub2sgJiYgKHBhcmFtcyA9PSBudWxsID8gdm9pZCAwIDogcGFyYW1zLm1ldGhvZCkgPT09ICdIRUFEJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFIcmVmLFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIGpzb246IHt9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS50ZXh0KCkudGhlbigodGV4dCk9PntcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2hlbiB0aGUgZGF0YSByZXNwb25zZSBpcyBhIHJlZGlyZWN0IGJlY2F1c2Ugb2YgYSBtaWRkbGV3YXJlXG4gICAgICAgICAgICAgKiB3ZSBkbyBub3QgY29uc2lkZXIgaXQgYW4gZXJyb3IuIFRoZSBoZWFkZXJzIG11c3QgYnJpbmcgdGhlXG4gICAgICAgICAgICAgKiBtYXBwZWQgbG9jYXRpb24uXG4gICAgICAgICAgICAgKiBUT0RPOiBDaGFuZ2UgdGhlIHN0YXR1cyBjb2RlIGluIHRoZSBoYW5kbGVyLlxuICAgICAgICAgICAgICovIGlmIChoYXNNaWRkbGV3YXJlICYmIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIDMwMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDMwMixcbiAgICAgICAgICAgICAgICAgICAgICAgIDMwNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIDMwOFxuICAgICAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKHJlc3BvbnNlLnN0YXR1cykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUhyZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uOiB7fVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWY7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHJlZiA9IHRyeVRvUGFyc2VBc0pTT04odGV4dCkpID09IG51bGwgPyB2b2lkIDAgOiByZWYubm90Rm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhSHJlZixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90Rm91bmQ6IFNTR19EQVRBX05PVF9GT1VORFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICogSWYgdGhlcmUgaXMgYSA0MDQgdGhhdCBpcyBub3QgZm9yIFNTRyB3ZSB1c2VkIHRvIGZhaWwgYnV0IGlmXG4gICAgICAgICAgICAgICAqIHRoZXJlIGlzIGEgbWlkZGxld2FyZSB3ZSBtdXN0IHJlc3BvbmQgd2l0aCBhbiBlbXB0eSBvYmplY3QuXG4gICAgICAgICAgICAgICAqIEZvciBub3cgd2Ugd2lsbCByZXR1cm4gdGhlIGRhdGEgd2hlbiB0aGVyZSBpcyBhIG1pZGRsZXdhcmUuXG4gICAgICAgICAgICAgICAqIFRPRE86IFVwZGF0ZSB0aGUgc2VydmVyIHRvIHN1Y2Nlc3Mgb24gdGhlc2UgcmVxdWVzdHMuXG4gICAgICAgICAgICAgICAqLyBpZiAoaGFzTWlkZGxld2FyZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFIcmVmLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbjoge31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBGYWlsZWQgdG8gbG9hZCBzdGF0aWMgcHJvcHNgKTtcbiAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXZSBzaG91bGQgb25seSB0cmlnZ2VyIGEgc2VydmVyLXNpZGUgdHJhbnNpdGlvbiBpZiB0aGlzIHdhc1xuICAgICAgICAgICAgICogY2F1c2VkIG9uIGEgY2xpZW50LXNpZGUgdHJhbnNpdGlvbi4gT3RoZXJ3aXNlLCB3ZSdkIGdldCBpbnRvXG4gICAgICAgICAgICAgKiBhbiBpbmZpbml0ZSBsb29wLlxuICAgICAgICAgICAgICovIGlmICghaXNTZXJ2ZXJSZW5kZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfcm91dGVMb2FkZXIpLm1hcmtBc3NldEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YUhyZWYsXG4gICAgICAgICAgICAgICAgICAgIGpzb246IHBhcnNlSlNPTiA/IHRyeVRvUGFyc2VBc0pTT04odGV4dCkgOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICAgIHRleHRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLnRoZW4oKGRhdGEpPT57XG4gICAgICAgICAgICBpZiAoIXBlcnNpc3RDYWNoZSB8fCBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nIHx8IGRhdGEucmVzcG9uc2UuaGVhZGVycy5nZXQoJ3gtbWlkZGxld2FyZS1jYWNoZScpID09PSAnbm8tY2FjaGUnKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGluZmxpZ2h0Q2FjaGVbY2FjaGVLZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0pLmNhdGNoKChlcnIpPT57XG4gICAgICAgICAgICBkZWxldGUgaW5mbGlnaHRDYWNoZVtjYWNoZUtleV07XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLy8gd2hlbiBza2lwcGluZyBjbGllbnQgY2FjaGUgd2Ugd2FpdCB0byB1cGRhdGVcbiAgICAvLyBpbmZsaWdodCBjYWNoZSB1bnRpbCBzdWNjZXNzZnVsIGRhdGEgcmVzcG9uc2VcbiAgICAvLyB0aGlzIGFsbG93cyByYWNpbmcgY2xpY2sgZXZlbnQgd2l0aCBmZXRjaGluZyBuZXdlciBkYXRhXG4gICAgLy8gd2l0aG91dCBibG9ja2luZyBuYXZpZ2F0aW9uIHdoZW4gc3RhbGUgZGF0YSBpcyBhdmFpbGFibGVcbiAgICBpZiAodW5zdGFibGVfc2tpcENsaWVudENhY2hlICYmIHBlcnNpc3RDYWNoZSkge1xuICAgICAgICByZXR1cm4gZ2V0RGF0YSh7fSkudGhlbigoZGF0YSk9PntcbiAgICAgICAgICAgIGluZmxpZ2h0Q2FjaGVbY2FjaGVLZXldID0gUHJvbWlzZS5yZXNvbHZlKGRhdGEpO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoaW5mbGlnaHRDYWNoZVtjYWNoZUtleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gaW5mbGlnaHRDYWNoZVtjYWNoZUtleV07XG4gICAgfVxuICAgIHJldHVybiBpbmZsaWdodENhY2hlW2NhY2hlS2V5XSA9IGdldERhdGEoaXNCYWNrZ3JvdW5kID8ge1xuICAgICAgICBtZXRob2Q6ICdIRUFEJ1xuICAgIH0gOiB7fSk7XG59XG5mdW5jdGlvbiB0cnlUb1BhcnNlQXNKU09OKHRleHQpIHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxufVxuZnVuY3Rpb24gY3JlYXRlS2V5KCkge1xuICAgIHJldHVybiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCAxMCk7XG59XG5mdW5jdGlvbiBoYW5kbGVIYXJkTmF2aWdhdGlvbih7IHVybCAsIHJvdXRlciAgfSkge1xuICAgIC8vIGVuc3VyZSB3ZSBkb24ndCB0cmlnZ2VyIGEgaGFyZCBuYXZpZ2F0aW9uIHRvIHRoZSBzYW1lXG4gICAgLy8gVVJMIGFzIHRoaXMgY2FuIGVuZCB1cCB3aXRoIGFuIGluZmluaXRlIHJlZnJlc2hcbiAgICBpZiAodXJsID09PSAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aCgoMCwgX2FkZExvY2FsZSkuYWRkTG9jYWxlKHJvdXRlci5hc1BhdGgsIHJvdXRlci5sb2NhbGUpKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFyaWFudDogYXR0ZW1wdGVkIHRvIGhhcmQgbmF2aWdhdGUgdG8gdGhlIHNhbWUgVVJMICR7dXJsfSAke2xvY2F0aW9uLmhyZWZ9YCk7XG4gICAgfVxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xufVxuY29uc3QgZ2V0Q2FuY2VsbGVkSGFuZGxlciA9ICh7IHJvdXRlICwgcm91dGVyICB9KT0+e1xuICAgIGxldCBjYW5jZWxsZWQgPSBmYWxzZTtcbiAgICBjb25zdCBjYW5jZWwgPSByb3V0ZXIuY2xjID0gKCk9PntcbiAgICAgICAgY2FuY2VsbGVkID0gdHJ1ZTtcbiAgICB9O1xuICAgIGNvbnN0IGhhbmRsZUNhbmNlbGxlZCA9ICgpPT57XG4gICAgICAgIGlmIChjYW5jZWxsZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBBYm9ydCBmZXRjaGluZyBjb21wb25lbnQgZm9yIHJvdXRlOiBcIiR7cm91dGV9XCJgKTtcbiAgICAgICAgICAgIGVycm9yLmNhbmNlbGxlZCA9IHRydWU7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FuY2VsID09PSByb3V0ZXIuY2xjKSB7XG4gICAgICAgICAgICByb3V0ZXIuY2xjID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIGhhbmRsZUNhbmNlbGxlZDtcbn07XG5jbGFzcyBSb3V0ZXIge1xuICAgIHJlbG9hZCgpIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgIH1cbiAgICAvKipcbiAgICogR28gYmFjayBpbiBoaXN0b3J5XG4gICAqLyBiYWNrKCkge1xuICAgICAgICB3aW5kb3cuaGlzdG9yeS5iYWNrKCk7XG4gICAgfVxuICAgIC8qKlxuICAgKiBQZXJmb3JtcyBhIGBwdXNoU3RhdGVgIHdpdGggYXJndW1lbnRzXG4gICAqIEBwYXJhbSB1cmwgb2YgdGhlIHJvdXRlXG4gICAqIEBwYXJhbSBhcyBtYXNrcyBgdXJsYCBmb3IgdGhlIGJyb3dzZXJcbiAgICogQHBhcmFtIG9wdGlvbnMgb2JqZWN0IHlvdSBjYW4gZGVmaW5lIGBzaGFsbG93YCBhbmQgb3RoZXIgb3B0aW9uc1xuICAgKi8gcHVzaCh1cmwsIGFzLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9TQ1JPTExfUkVTVE9SQVRJT04pIHtcbiAgICAgICAgICAgIC8vIFRPRE86IHJlbW92ZSBpbiB0aGUgZnV0dXJlIHdoZW4gd2UgdXBkYXRlIGhpc3RvcnkgYmVmb3JlIHJvdXRlIGNoYW5nZVxuICAgICAgICAgICAgLy8gaXMgY29tcGxldGUsIGFzIHRoZSBwb3BzdGF0ZSBldmVudCBzaG91bGQgaGFuZGxlIHRoaXMgY2FwdHVyZS5cbiAgICAgICAgICAgIGlmIChtYW51YWxTY3JvbGxSZXN0b3JhdGlvbikge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNuYXBzaG90IHNjcm9sbCBwb3NpdGlvbiByaWdodCBiZWZvcmUgbmF2aWdhdGluZyB0byBhIG5ldyBwYWdlOlxuICAgICAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdfX25leHRfc2Nyb2xsXycgKyB0aGlzLl9rZXksIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHg6IHNlbGYucGFnZVhPZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICB5OiBzZWxmLnBhZ2VZT2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICh7IHVybCAsIGFzICB9ID0gcHJlcGFyZVVybEFzKHRoaXMsIHVybCwgYXMpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhbmdlKCdwdXNoU3RhdGUnLCB1cmwsIGFzLCBvcHRpb25zKTtcbiAgICB9XG4gICAgLyoqXG4gICAqIFBlcmZvcm1zIGEgYHJlcGxhY2VTdGF0ZWAgd2l0aCBhcmd1bWVudHNcbiAgICogQHBhcmFtIHVybCBvZiB0aGUgcm91dGVcbiAgICogQHBhcmFtIGFzIG1hc2tzIGB1cmxgIGZvciB0aGUgYnJvd3NlclxuICAgKiBAcGFyYW0gb3B0aW9ucyBvYmplY3QgeW91IGNhbiBkZWZpbmUgYHNoYWxsb3dgIGFuZCBvdGhlciBvcHRpb25zXG4gICAqLyByZXBsYWNlKHVybCwgYXMsIG9wdGlvbnMgPSB7fSkge1xuICAgICAgICAoeyB1cmwgLCBhcyAgfSA9IHByZXBhcmVVcmxBcyh0aGlzLCB1cmwsIGFzKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmNoYW5nZSgncmVwbGFjZVN0YXRlJywgdXJsLCBhcywgb3B0aW9ucyk7XG4gICAgfVxuICAgIGNoYW5nZShtZXRob2QsIHVybCwgYXMsIG9wdGlvbnMsIGZvcmNlZFNjcm9sbCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qKCkge1xuICAgICAgICAgICAgaWYgKCFpc0xvY2FsVVJMKHVybCkpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFdBUk5JTkc6IGBfaGAgaXMgYW4gaW50ZXJuYWwgb3B0aW9uIGZvciBoYW5kaW5nIE5leHQuanMgY2xpZW50LXNpZGVcbiAgICAgICAgICAgIC8vIGh5ZHJhdGlvbi4gWW91ciBhcHAgc2hvdWxkIF9uZXZlcl8gdXNlIHRoaXMgcHJvcGVydHkuIEl0IG1heSBjaGFuZ2UgYXRcbiAgICAgICAgICAgIC8vIGFueSB0aW1lIHdpdGhvdXQgbm90aWNlLlxuICAgICAgICAgICAgY29uc3QgaXNRdWVyeVVwZGF0aW5nID0gb3B0aW9ucy5faDtcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZFJlc29sdmVIcmVmID0gaXNRdWVyeVVwZGF0aW5nIHx8IG9wdGlvbnMuX3Nob3VsZFJlc29sdmVIcmVmIHx8ICgwLCBfcGFyc2VQYXRoKS5wYXJzZVBhdGgodXJsKS5wYXRobmFtZSA9PT0gKDAsIF9wYXJzZVBhdGgpLnBhcnNlUGF0aChhcykucGF0aG5hbWU7XG4gICAgICAgICAgICBjb25zdCBuZXh0U3RhdGUgPSBfZXh0ZW5kcyh7fSwgX3RoaXMuc3RhdGUpO1xuICAgICAgICAgICAgLy8gZm9yIHN0YXRpYyBwYWdlcyB3aXRoIHF1ZXJ5IHBhcmFtcyBpbiB0aGUgVVJMIHdlIGRlbGF5XG4gICAgICAgICAgICAvLyBtYXJraW5nIHRoZSByb3V0ZXIgcmVhZHkgdW50aWwgYWZ0ZXIgdGhlIHF1ZXJ5IGlzIHVwZGF0ZWRcbiAgICAgICAgICAgIC8vIG9yIGEgbmF2aWdhdGlvbiBoYXMgb2NjdXJyZWRcbiAgICAgICAgICAgIF90aGlzLmlzUmVhZHkgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXNTc3IgPSBfdGhpcy5pc1NzcjtcbiAgICAgICAgICAgIGlmICghaXNRdWVyeVVwZGF0aW5nKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuaXNTc3IgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGlmIGEgcm91dGUgdHJhbnNpdGlvbiBpcyBhbHJlYWR5IGluIHByb2dyZXNzIGJlZm9yZVxuICAgICAgICAgICAgLy8gdGhlIHF1ZXJ5IHVwZGF0aW5nIGlzIHRyaWdnZXJlZCBpZ25vcmUgcXVlcnkgdXBkYXRpbmdcbiAgICAgICAgICAgIGlmIChpc1F1ZXJ5VXBkYXRpbmcgJiYgX3RoaXMuY2xjKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcHJldkxvY2FsZSA9IG5leHRTdGF0ZS5sb2NhbGU7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICAgICAgICAgIG5leHRTdGF0ZS5sb2NhbGUgPSBvcHRpb25zLmxvY2FsZSA9PT0gZmFsc2UgPyBfdGhpcy5kZWZhdWx0TG9jYWxlIDogb3B0aW9ucy5sb2NhbGUgfHwgbmV4dFN0YXRlLmxvY2FsZTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMubG9jYWxlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmxvY2FsZSA9IG5leHRTdGF0ZS5sb2NhbGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZEFzID0gKDAsIF9wYXJzZVJlbGF0aXZlVXJsKS5wYXJzZVJlbGF0aXZlVXJsKCgwLCBfaGFzQmFzZVBhdGgpLmhhc0Jhc2VQYXRoKGFzKSA/ICgwLCBfcmVtb3ZlQmFzZVBhdGgpLnJlbW92ZUJhc2VQYXRoKGFzKSA6IGFzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGVQYXRoUmVzdWx0ID0gKDAsIF9ub3JtYWxpemVMb2NhbGVQYXRoKS5ub3JtYWxpemVMb2NhbGVQYXRoKHBhcnNlZEFzLnBhdGhuYW1lLCBfdGhpcy5sb2NhbGVzKTtcbiAgICAgICAgICAgICAgICBpZiAobG9jYWxlUGF0aFJlc3VsdC5kZXRlY3RlZExvY2FsZSkge1xuICAgICAgICAgICAgICAgICAgICBuZXh0U3RhdGUubG9jYWxlID0gbG9jYWxlUGF0aFJlc3VsdC5kZXRlY3RlZExvY2FsZTtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkQXMucGF0aG5hbWUgPSAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aChwYXJzZWRBcy5wYXRobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGFzID0gKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHBhcnNlZEFzKTtcbiAgICAgICAgICAgICAgICAgICAgdXJsID0gKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgoKDAsIF9ub3JtYWxpemVMb2NhbGVQYXRoKS5ub3JtYWxpemVMb2NhbGVQYXRoKCgwLCBfaGFzQmFzZVBhdGgpLmhhc0Jhc2VQYXRoKHVybCkgPyAoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aCh1cmwpIDogdXJsLCBfdGhpcy5sb2NhbGVzKS5wYXRobmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBkaWROYXZpZ2F0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gd3JhcCB0aGlzIGluIHRoZSBlbnYgY2hlY2sgYWdhaW4gc2luY2UgcmVnZW5lcmF0b3IgcnVudGltZVxuICAgICAgICAgICAgICAgIC8vIG1vdmVzIHRoaXMgb24gaXRzIG93biBkdWUgdG8gdGhlIHJldHVyblxuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWY7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBsb2NhbGUgaXNuJ3QgY29uZmlndXJlZCBoYXJkIG5hdmlnYXRlIHRvIHNob3cgNDA0IHBhZ2VcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoKHJlZiA9IF90aGlzLmxvY2FsZXMpID09IG51bGwgPyB2b2lkIDAgOiByZWYuaW5jbHVkZXMobmV4dFN0YXRlLmxvY2FsZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRBcy5wYXRobmFtZSA9ICgwLCBfYWRkTG9jYWxlKS5hZGRMb2NhbGUocGFyc2VkQXMucGF0aG5hbWUsIG5leHRTdGF0ZS5sb2NhbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlSGFyZE5hdmlnYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHBhcnNlZEFzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXI6IF90aGlzXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgd2FzIHByZXZpb3VzbHkgYSByZXR1cm4gYnV0IHdhcyByZW1vdmVkIGluIGZhdm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiBiZXR0ZXIgZGVhZCBjb2RlIGVsaW1pbmF0aW9uIHdpdGggcmVnZW5lcmF0b3IgcnVudGltZVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlkTmF2aWdhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGRldGVjdGVkRG9tYWluID0gKDAsIF9kZXRlY3REb21haW5Mb2NhbGUpLmRldGVjdERvbWFpbkxvY2FsZShfdGhpcy5kb21haW5Mb2NhbGVzLCB1bmRlZmluZWQsIG5leHRTdGF0ZS5sb2NhbGUpO1xuICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gd3JhcCB0aGlzIGluIHRoZSBlbnYgY2hlY2sgYWdhaW4gc2luY2UgcmVnZW5lcmF0b3IgcnVudGltZVxuICAgICAgICAgICAgICAgIC8vIG1vdmVzIHRoaXMgb24gaXRzIG93biBkdWUgdG8gdGhlIHJldHVyblxuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHdlIGFyZSBuYXZpZ2F0aW5nIHRvIGEgZG9tYWluIGxvY2FsZSBlbnN1cmUgd2UgcmVkaXJlY3QgdG8gdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlY3QgZG9tYWluXG4gICAgICAgICAgICAgICAgICAgIGlmICghZGlkTmF2aWdhdGUgJiYgZGV0ZWN0ZWREb21haW4gJiYgX3RoaXMuaXNMb2NhbGVEb21haW4gJiYgc2VsZi5sb2NhdGlvbi5ob3N0bmFtZSAhPT0gZGV0ZWN0ZWREb21haW4uZG9tYWluKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhc05vQmFzZVBhdGggPSAoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChhcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgaHR0cCR7ZGV0ZWN0ZWREb21haW4uaHR0cCA/ICcnIDogJ3MnfTovLyR7ZGV0ZWN0ZWREb21haW4uZG9tYWlufSR7KDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgoYCR7bmV4dFN0YXRlLmxvY2FsZSA9PT0gZGV0ZWN0ZWREb21haW4uZGVmYXVsdExvY2FsZSA/ICcnIDogYC8ke25leHRTdGF0ZS5sb2NhbGV9YH0ke2FzTm9CYXNlUGF0aCA9PT0gJy8nID8gJycgOiBhc05vQmFzZVBhdGh9YCB8fCAnLycpfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHdhcyBwcmV2aW91c2x5IGEgcmV0dXJuIGJ1dCB3YXMgcmVtb3ZlZCBpbiBmYXZvclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgYmV0dGVyIGRlYWQgY29kZSBlbGltaW5hdGlvbiB3aXRoIHJlZ2VuZXJhdG9yIHJ1bnRpbWVcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpZE5hdmlnYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZGlkTmF2aWdhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCgpPT57fSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gbWFya2luZyByb3V0ZSBjaGFuZ2VzIGFzIGEgbmF2aWdhdGlvbiBzdGFydCBlbnRyeVxuICAgICAgICAgICAgaWYgKF91dGlscy5TVCkge1xuICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlLm1hcmsoJ3JvdXRlQ2hhbmdlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB7IHNoYWxsb3cgPWZhbHNlICwgc2Nyb2xsID10cnVlICB9ID0gb3B0aW9ucztcbiAgICAgICAgICAgIGNvbnN0IHJvdXRlUHJvcHMgPSB7XG4gICAgICAgICAgICAgICAgc2hhbGxvd1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChfdGhpcy5faW5GbGlnaHRSb3V0ZSAmJiBfdGhpcy5jbGMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzU3NyKSB7XG4gICAgICAgICAgICAgICAgICAgIFJvdXRlci5ldmVudHMuZW1pdCgncm91dGVDaGFuZ2VFcnJvcicsIGJ1aWxkQ2FuY2VsbGF0aW9uRXJyb3IoKSwgX3RoaXMuX2luRmxpZ2h0Um91dGUsIHJvdXRlUHJvcHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBfdGhpcy5jbGMoKTtcbiAgICAgICAgICAgICAgICBfdGhpcy5jbGMgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXMgPSAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aCgoMCwgX2FkZExvY2FsZSkuYWRkTG9jYWxlKCgwLCBfaGFzQmFzZVBhdGgpLmhhc0Jhc2VQYXRoKGFzKSA/ICgwLCBfcmVtb3ZlQmFzZVBhdGgpLnJlbW92ZUJhc2VQYXRoKGFzKSA6IGFzLCBvcHRpb25zLmxvY2FsZSwgX3RoaXMuZGVmYXVsdExvY2FsZSkpO1xuICAgICAgICAgICAgY29uc3QgY2xlYW5lZEFzID0gKDAsIF9yZW1vdmVMb2NhbGUpLnJlbW92ZUxvY2FsZSgoMCwgX2hhc0Jhc2VQYXRoKS5oYXNCYXNlUGF0aChhcykgPyAoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChhcykgOiBhcywgbmV4dFN0YXRlLmxvY2FsZSk7XG4gICAgICAgICAgICBfdGhpcy5faW5GbGlnaHRSb3V0ZSA9IGFzO1xuICAgICAgICAgICAgbGV0IGxvY2FsZUNoYW5nZSA9IHByZXZMb2NhbGUgIT09IG5leHRTdGF0ZS5sb2NhbGU7XG4gICAgICAgICAgICAvLyBJZiB0aGUgdXJsIGNoYW5nZSBpcyBvbmx5IHJlbGF0ZWQgdG8gYSBoYXNoIGNoYW5nZVxuICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBwcm9jZWVkLiBXZSBzaG91bGQgb25seSBjaGFuZ2UgdGhlIHN0YXRlLlxuICAgICAgICAgICAgaWYgKCFpc1F1ZXJ5VXBkYXRpbmcgJiYgX3RoaXMub25seUFIYXNoQ2hhbmdlKGNsZWFuZWRBcykgJiYgIWxvY2FsZUNoYW5nZSkge1xuICAgICAgICAgICAgICAgIG5leHRTdGF0ZS5hc1BhdGggPSBjbGVhbmVkQXM7XG4gICAgICAgICAgICAgICAgUm91dGVyLmV2ZW50cy5lbWl0KCdoYXNoQ2hhbmdlU3RhcnQnLCBhcywgcm91dGVQcm9wcyk7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogZG8gd2UgbmVlZCB0aGUgcmVzb2x2ZWQgaHJlZiB3aGVuIG9ubHkgYSBoYXNoIGNoYW5nZT9cbiAgICAgICAgICAgICAgICBfdGhpcy5jaGFuZ2VTdGF0ZShtZXRob2QsIHVybCwgYXMsIF9leHRlbmRzKHt9LCBvcHRpb25zLCB7XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbDogZmFsc2VcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgaWYgKHNjcm9sbCkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5zY3JvbGxUb0hhc2goY2xlYW5lZEFzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQgX3RoaXMuc2V0KG5leHRTdGF0ZSwgX3RoaXMuY29tcG9uZW50c1tuZXh0U3RhdGUucm91dGVdLCBudWxsKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCgwLCBfaXNFcnJvcikuZGVmYXVsdChlcnIpICYmIGVyci5jYW5jZWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFJvdXRlci5ldmVudHMuZW1pdCgncm91dGVDaGFuZ2VFcnJvcicsIGVyciwgY2xlYW5lZEFzLCByb3V0ZVByb3BzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFJvdXRlci5ldmVudHMuZW1pdCgnaGFzaENoYW5nZUNvbXBsZXRlJywgYXMsIHJvdXRlUHJvcHMpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHBhcnNlZCA9ICgwLCBfcGFyc2VSZWxhdGl2ZVVybCkucGFyc2VSZWxhdGl2ZVVybCh1cmwpO1xuICAgICAgICAgICAgbGV0IHsgcGF0aG5hbWUgLCBxdWVyeSAgfSA9IHBhcnNlZDtcbiAgICAgICAgICAgIC8vIFRoZSBidWlsZCBtYW5pZmVzdCBuZWVkcyB0byBiZSBsb2FkZWQgYmVmb3JlIGF1dG8tc3RhdGljIGR5bmFtaWMgcGFnZXNcbiAgICAgICAgICAgIC8vIGdldCB0aGVpciBxdWVyeSBwYXJhbWV0ZXJzIHRvIGFsbG93IGVuc3VyaW5nIHRoZXkgY2FuIGJlIHBhcnNlZCBwcm9wZXJseVxuICAgICAgICAgICAgLy8gd2hlbiByZXdyaXR0ZW4gdG9cbiAgICAgICAgICAgIGxldCBwYWdlcywgcmV3cml0ZXM7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIFtwYWdlcywgeyBfX3Jld3JpdGVzOiByZXdyaXRlcyAgfV0gPSB5aWVsZCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICAgICAgICAgIF90aGlzLnBhZ2VMb2FkZXIuZ2V0UGFnZUxpc3QoKSxcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9yb3V0ZUxvYWRlcikuZ2V0Q2xpZW50QnVpbGRNYW5pZmVzdCgpLFxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5wYWdlTG9hZGVyLmdldE1pZGRsZXdhcmVMaXN0KCksIFxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgd2UgZmFpbCB0byByZXNvbHZlIHRoZSBwYWdlIGxpc3Qgb3IgY2xpZW50LWJ1aWxkIG1hbmlmZXN0LCB3ZSBtdXN0XG4gICAgICAgICAgICAgICAgLy8gZG8gYSBzZXJ2ZXItc2lkZSB0cmFuc2l0aW9uOlxuICAgICAgICAgICAgICAgIGhhbmRsZUhhcmROYXZpZ2F0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBhcyxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElmIGFza2VkIHRvIGNoYW5nZSB0aGUgY3VycmVudCBVUkwgd2Ugc2hvdWxkIHJlbG9hZCB0aGUgY3VycmVudCBwYWdlXG4gICAgICAgICAgICAvLyAobm90IGxvY2F0aW9uLnJlbG9hZCgpIGJ1dCByZWxvYWQgZ2V0SW5pdGlhbFByb3BzIGFuZCBvdGhlciBOZXh0LmpzIHN0dWZmcylcbiAgICAgICAgICAgIC8vIFdlIGFsc28gbmVlZCB0byBzZXQgdGhlIG1ldGhvZCA9IHJlcGxhY2VTdGF0ZSBhbHdheXNcbiAgICAgICAgICAgIC8vIGFzIHRoaXMgc2hvdWxkIG5vdCBnbyBpbnRvIHRoZSBoaXN0b3J5IChUaGF0J3MgaG93IGJyb3dzZXJzIHdvcmspXG4gICAgICAgICAgICAvLyBXZSBzaG91bGQgY29tcGFyZSB0aGUgbmV3IGFzUGF0aCB0byB0aGUgY3VycmVudCBhc1BhdGgsIG5vdCB0aGUgdXJsXG4gICAgICAgICAgICBpZiAoIV90aGlzLnVybElzTmV3KGNsZWFuZWRBcykgJiYgIWxvY2FsZUNoYW5nZSkge1xuICAgICAgICAgICAgICAgIG1ldGhvZCA9ICdyZXBsYWNlU3RhdGUnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gd2UgbmVlZCB0byByZXNvbHZlIHRoZSBhcyB2YWx1ZSB1c2luZyByZXdyaXRlcyBmb3IgZHluYW1pYyBTU0dcbiAgICAgICAgICAgIC8vIHBhZ2VzIHRvIGFsbG93IGJ1aWxkaW5nIHRoZSBkYXRhIFVSTCBjb3JyZWN0bHlcbiAgICAgICAgICAgIGxldCByZXNvbHZlZEFzID0gYXM7XG4gICAgICAgICAgICAvLyB1cmwgYW5kIGFzIHNob3VsZCBhbHdheXMgYmUgcHJlZml4ZWQgd2l0aCBiYXNlUGF0aCBieSB0aGlzXG4gICAgICAgICAgICAvLyBwb2ludCBieSBlaXRoZXIgbmV4dC9saW5rIG9yIHJvdXRlci5wdXNoL3JlcGxhY2Ugc28gc3RyaXAgdGhlXG4gICAgICAgICAgICAvLyBiYXNlUGF0aCBmcm9tIHRoZSBwYXRobmFtZSB0byBtYXRjaCB0aGUgcGFnZXMgZGlyIDEtdG8tMVxuICAgICAgICAgICAgcGF0aG5hbWUgPSBwYXRobmFtZSA/ICgwLCBfcmVtb3ZlVHJhaWxpbmdTbGFzaCkucmVtb3ZlVHJhaWxpbmdTbGFzaCgoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChwYXRobmFtZSkpIDogcGF0aG5hbWU7XG4gICAgICAgICAgICAvLyB3ZSBkb24ndCBhdHRlbXB0IHJlc29sdmUgYXNQYXRoIHdoZW4gd2UgbmVlZCB0byBleGVjdXRlXG4gICAgICAgICAgICAvLyBtaWRkbGV3YXJlIGFzIHRoZSByZXNvbHZpbmcgd2lsbCBvY2N1ciBzZXJ2ZXItc2lkZVxuICAgICAgICAgICAgY29uc3QgaXNNaWRkbGV3YXJlTWF0Y2ggPSB5aWVsZCBtYXRjaGVzTWlkZGxld2FyZSh7XG4gICAgICAgICAgICAgICAgYXNQYXRoOiBhcyxcbiAgICAgICAgICAgICAgICBsb2NhbGU6IG5leHRTdGF0ZS5sb2NhbGUsXG4gICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zaGFsbG93ICYmIGlzTWlkZGxld2FyZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcGF0aG5hbWUgPSBfdGhpcy5wYXRobmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzaG91bGRSZXNvbHZlSHJlZiAmJiBwYXRobmFtZSAhPT0gJy9fZXJyb3InKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5fc2hvdWxkUmVzb2x2ZUhyZWYgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSEFTX1JFV1JJVEVTICYmIGFzLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXdyaXRlc1Jlc3VsdCA9ICgwLCBfcmVzb2x2ZVJld3JpdGVzKS5kZWZhdWx0KCgwLCBfYWRkQmFzZVBhdGgpLmFkZEJhc2VQYXRoKCgwLCBfYWRkTG9jYWxlKS5hZGRMb2NhbGUoY2xlYW5lZEFzLCBuZXh0U3RhdGUubG9jYWxlKSwgdHJ1ZSksIHBhZ2VzLCByZXdyaXRlcywgcXVlcnksIChwKT0+cmVzb2x2ZUR5bmFtaWNSb3V0ZShwLCBwYWdlcyksIF90aGlzLmxvY2FsZXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmV3cml0ZXNSZXN1bHQuZXh0ZXJuYWxEZXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXI6IF90aGlzXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNNaWRkbGV3YXJlTWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQXMgPSByZXdyaXRlc1Jlc3VsdC5hc1BhdGg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHJld3JpdGVzUmVzdWx0Lm1hdGNoZWRQYWdlICYmIHJld3JpdGVzUmVzdWx0LnJlc29sdmVkSHJlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhpcyBkaXJlY3RseSBtYXRjaGVzIGEgcGFnZSB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgaHJlZiB0b1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3cgdGhlIGNvcnJlY3QgcGFnZSBjaHVuayB0byBiZSBsb2FkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lID0gcmV3cml0ZXNSZXN1bHQucmVzb2x2ZWRIcmVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkLnBhdGhuYW1lID0gKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgocGF0aG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc01pZGRsZXdhcmVNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9ICgwLCBfZm9ybWF0VXJsKS5mb3JtYXRXaXRoVmFsaWRhdGlvbihwYXJzZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkLnBhdGhuYW1lID0gcmVzb2x2ZUR5bmFtaWNSb3V0ZShwYXRobmFtZSwgcGFnZXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VkLnBhdGhuYW1lICE9PSBwYXRobmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUgPSBwYXJzZWQucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWQucGF0aG5hbWUgPSAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aChwYXRobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTWlkZGxld2FyZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHBhcnNlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWlzTG9jYWxVUkwoYXMpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGhyZWY6IFwiJHt1cmx9XCIgYW5kIGFzOiBcIiR7YXN9XCIsIHJlY2VpdmVkIHJlbGF0aXZlIGhyZWYgYW5kIGV4dGVybmFsIGFzYCArIGBcXG5TZWUgbW9yZSBpbmZvOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9pbnZhbGlkLXJlbGF0aXZlLXVybC1leHRlcm5hbC1hc2ApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIHVybDogYXMsXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlcjogX3RoaXNcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlZEFzID0gKDAsIF9yZW1vdmVMb2NhbGUpLnJlbW92ZUxvY2FsZSgoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChyZXNvbHZlZEFzKSwgbmV4dFN0YXRlLmxvY2FsZSk7XG4gICAgICAgICAgICBsZXQgcm91dGUgPSAoMCwgX3JlbW92ZVRyYWlsaW5nU2xhc2gpLnJlbW92ZVRyYWlsaW5nU2xhc2gocGF0aG5hbWUpO1xuICAgICAgICAgICAgbGV0IHJvdXRlTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICgoMCwgX2lzRHluYW1pYykuaXNEeW5hbWljUm91dGUocm91dGUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkQXMgPSAoMCwgX3BhcnNlUmVsYXRpdmVVcmwpLnBhcnNlUmVsYXRpdmVVcmwocmVzb2x2ZWRBcyk7XG4gICAgICAgICAgICAgICAgY29uc3QgYXNQYXRobmFtZSA9IHBhcnNlZEFzLnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRlUmVnZXggPSAoMCwgX3JvdXRlUmVnZXgpLmdldFJvdXRlUmVnZXgocm91dGUpO1xuICAgICAgICAgICAgICAgIHJvdXRlTWF0Y2ggPSAoMCwgX3JvdXRlTWF0Y2hlcikuZ2V0Um91dGVNYXRjaGVyKHJvdXRlUmVnZXgpKGFzUGF0aG5hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNob3VsZEludGVycG9sYXRlID0gcm91dGUgPT09IGFzUGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgY29uc3QgaW50ZXJwb2xhdGVkQXMgPSBzaG91bGRJbnRlcnBvbGF0ZSA/IGludGVycG9sYXRlQXMocm91dGUsIGFzUGF0aG5hbWUsIHF1ZXJ5KSA6IHt9O1xuICAgICAgICAgICAgICAgIGlmICghcm91dGVNYXRjaCB8fCBzaG91bGRJbnRlcnBvbGF0ZSAmJiAhaW50ZXJwb2xhdGVkQXMucmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pc3NpbmdQYXJhbXMgPSBPYmplY3Qua2V5cyhyb3V0ZVJlZ2V4Lmdyb3VwcykuZmlsdGVyKChwYXJhbSk9PiFxdWVyeVtwYXJhbV0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWlzc2luZ1BhcmFtcy5sZW5ndGggPiAwICYmICFpc01pZGRsZXdhcmVNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYCR7c2hvdWxkSW50ZXJwb2xhdGUgPyBgSW50ZXJwb2xhdGluZyBocmVmYCA6IGBNaXNtYXRjaGluZyBcXGBhc1xcYCBhbmQgXFxgaHJlZlxcYGB9IGZhaWxlZCB0byBtYW51YWxseSBwcm92aWRlIGAgKyBgdGhlIHBhcmFtczogJHttaXNzaW5nUGFyYW1zLmpvaW4oJywgJyl9IGluIHRoZSBcXGBocmVmXFxgJ3MgXFxgcXVlcnlcXGBgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigoc2hvdWxkSW50ZXJwb2xhdGUgPyBgVGhlIHByb3ZpZGVkIFxcYGhyZWZcXGAgKCR7dXJsfSkgdmFsdWUgaXMgbWlzc2luZyBxdWVyeSB2YWx1ZXMgKCR7bWlzc2luZ1BhcmFtcy5qb2luKCcsICcpfSkgdG8gYmUgaW50ZXJwb2xhdGVkIHByb3Blcmx5LiBgIDogYFRoZSBwcm92aWRlZCBcXGBhc1xcYCB2YWx1ZSAoJHthc1BhdGhuYW1lfSkgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIFxcYGhyZWZcXGAgdmFsdWUgKCR7cm91dGV9KS4gYCkgKyBgUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy8ke3Nob3VsZEludGVycG9sYXRlID8gJ2hyZWYtaW50ZXJwb2xhdGlvbi1mYWlsZWQnIDogJ2luY29tcGF0aWJsZS1ocmVmLWFzJ31gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkSW50ZXJwb2xhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgYXMgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oT2JqZWN0LmFzc2lnbih7fSwgcGFyc2VkQXMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lOiBpbnRlcnBvbGF0ZWRBcy5yZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVyeTogb21pdChxdWVyeSwgaW50ZXJwb2xhdGVkQXMucGFyYW1zKVxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTWVyZ2UgcGFyYW1zIGludG8gYHF1ZXJ5YCwgb3ZlcndyaXRpbmcgYW55IHNwZWNpZmllZCBpbiBzZWFyY2hcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihxdWVyeSwgcm91dGVNYXRjaCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc1F1ZXJ5VXBkYXRpbmcpIHtcbiAgICAgICAgICAgICAgICBSb3V0ZXIuZXZlbnRzLmVtaXQoJ3JvdXRlQ2hhbmdlU3RhcnQnLCBhcywgcm91dGVQcm9wcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHZhciByZWYyLCByZWYzO1xuICAgICAgICAgICAgICAgIGxldCByb3V0ZUluZm8gPSB5aWVsZCBfdGhpcy5nZXRSb3V0ZUluZm8oe1xuICAgICAgICAgICAgICAgICAgICByb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICBhcyxcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRBcyxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVQcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBuZXh0U3RhdGUubG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICBpc1ByZXZpZXc6IG5leHRTdGF0ZS5pc1ByZXZpZXcsXG4gICAgICAgICAgICAgICAgICAgIGhhc01pZGRsZXdhcmU6IGlzTWlkZGxld2FyZU1hdGNoXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKCdyb3V0ZScgaW4gcm91dGVJbmZvICYmIGlzTWlkZGxld2FyZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lID0gcm91dGVJbmZvLnJvdXRlIHx8IHJvdXRlO1xuICAgICAgICAgICAgICAgICAgICByb3V0ZSA9IHBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICAgICBxdWVyeSA9IE9iamVjdC5hc3NpZ24oe30sIHJvdXRlSW5mby5xdWVyeSB8fCB7fSwgcXVlcnkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocm91dGVNYXRjaCAmJiBwYXRobmFtZSAhPT0gcGFyc2VkLnBhdGhuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhyb3V0ZU1hdGNoKS5mb3JFYWNoKChrZXkpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJvdXRlTWF0Y2ggJiYgcXVlcnlba2V5XSA9PT0gcm91dGVNYXRjaFtrZXldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBxdWVyeVtrZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICgoMCwgX2lzRHluYW1pYykuaXNEeW5hbWljUm91dGUocGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVmaXhlZEFzID0gcm91dGVJbmZvLnJlc29sdmVkQXMgfHwgKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgoKDAsIF9hZGRMb2NhbGUpLmFkZExvY2FsZShhcywgbmV4dFN0YXRlLmxvY2FsZSksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJld3JpdGVBcyA9IHByZWZpeGVkQXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKDAsIF9oYXNCYXNlUGF0aCkuaGFzQmFzZVBhdGgocmV3cml0ZUFzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld3JpdGVBcyA9ICgwLCBfcmVtb3ZlQmFzZVBhdGgpLnJlbW92ZUJhc2VQYXRoKHJld3JpdGVBcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsZVJlc3VsdCA9ICgwLCBfbm9ybWFsaXplTG9jYWxlUGF0aCkubm9ybWFsaXplTG9jYWxlUGF0aChyZXdyaXRlQXMsIF90aGlzLmxvY2FsZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRTdGF0ZS5sb2NhbGUgPSBsb2NhbGVSZXN1bHQuZGV0ZWN0ZWRMb2NhbGUgfHwgbmV4dFN0YXRlLmxvY2FsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXdyaXRlQXMgPSBsb2NhbGVSZXN1bHQucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByb3V0ZVJlZ2V4ID0gKDAsIF9yb3V0ZVJlZ2V4KS5nZXRSb3V0ZVJlZ2V4KHBhdGhuYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1clJvdXRlTWF0Y2ggPSAoMCwgX3JvdXRlTWF0Y2hlcikuZ2V0Um91dGVNYXRjaGVyKHJvdXRlUmVnZXgpKHJld3JpdGVBcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VyUm91dGVNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocXVlcnksIGN1clJvdXRlTWF0Y2gpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIElmIHRoZSByb3V0ZUluZm8gYnJpbmdzIGEgcmVkaXJlY3Qgd2Ugc2ltcGx5IGFwcGx5IGl0LlxuICAgICAgICAgICAgICAgIGlmICgndHlwZScgaW4gcm91dGVJbmZvKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyb3V0ZUluZm8udHlwZSA9PT0gJ3JlZGlyZWN0LWludGVybmFsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmNoYW5nZShtZXRob2QsIHJvdXRlSW5mby5uZXdVcmwsIHJvdXRlSW5mby5uZXdBcywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiByb3V0ZUluZm8uZGVzdGluYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKCk9Pnt9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgeyBlcnJvciAsIHByb3BzICwgX19OX1NTRyAsIF9fTl9TU1AgIH0gPSByb3V0ZUluZm87XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gcm91dGVJbmZvLkNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50ICYmIGNvbXBvbmVudC51bnN0YWJsZV9zY3JpcHRMb2FkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2NyaXB0cyA9IFtdLmNvbmNhdChjb21wb25lbnQudW5zdGFibGVfc2NyaXB0TG9hZGVyKCkpO1xuICAgICAgICAgICAgICAgICAgICBzY3JpcHRzLmZvckVhY2goKHNjcmlwdCk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfc2NyaXB0KS5oYW5kbGVDbGllbnRTY3JpcHRMb2FkKHNjcmlwdC5wcm9wcyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBoYW5kbGUgcmVkaXJlY3Qgb24gY2xpZW50LXRyYW5zaXRpb25cbiAgICAgICAgICAgICAgICBpZiAoKF9fTl9TU0cgfHwgX19OX1NTUCkgJiYgcHJvcHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BzLnBhZ2VQcm9wcyAmJiBwcm9wcy5wYWdlUHJvcHMuX19OX1JFRElSRUNUKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2UgdGhlIGRlc3RpbmF0aW9uIGZyb20gcmVkaXJlY3Qgd2l0aG91dCBhZGRpbmcgbG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmxvY2FsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVzdGluYXRpb24gPSBwcm9wcy5wYWdlUHJvcHMuX19OX1JFRElSRUNUO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgZGVzdGluYXRpb24gaXMgaW50ZXJuYWwgKHJlc29sdmVzIHRvIGEgcGFnZSkgYW5kIGF0dGVtcHRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsaWVudC1uYXZpZ2F0aW9uIGlmIGl0IGlzIGZhbGxpbmcgYmFjayB0byBoYXJkIG5hdmlnYXRpb24gaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0J3Mgbm90XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVzdGluYXRpb24uc3RhcnRzV2l0aCgnLycpICYmIHByb3BzLnBhZ2VQcm9wcy5fX05fUkVESVJFQ1RfQkFTRV9QQVRIICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZEhyZWYgPSAoMCwgX3BhcnNlUmVsYXRpdmVVcmwpLnBhcnNlUmVsYXRpdmVVcmwoZGVzdGluYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZEhyZWYucGF0aG5hbWUgPSByZXNvbHZlRHluYW1pY1JvdXRlKHBhcnNlZEhyZWYucGF0aG5hbWUsIHBhZ2VzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHVybDogbmV3VXJsICwgYXM6IG5ld0FzICB9ID0gcHJlcGFyZVVybEFzKF90aGlzLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5jaGFuZ2UobWV0aG9kLCBuZXdVcmwsIG5ld0FzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUhhcmROYXZpZ2F0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGRlc3RpbmF0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlcjogX3RoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCgpPT57fSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbmV4dFN0YXRlLmlzUHJldmlldyA9ICEhcHJvcHMuX19OX1BSRVZJRVc7XG4gICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBTU0cgZGF0YSA0MDRcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BzLm5vdEZvdW5kID09PSBTU0dfREFUQV9OT1RfRk9VTkQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub3RGb3VuZFJvdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBfdGhpcy5mZXRjaENvbXBvbmVudCgnLzQwNCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdEZvdW5kUm91dGUgPSAnLzQwNCc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChfKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90Rm91bmRSb3V0ZSA9ICcvX2Vycm9yJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlSW5mbyA9IHlpZWxkIF90aGlzLmdldFJvdXRlSW5mbyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGU6IG5vdEZvdW5kUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWU6IG5vdEZvdW5kUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRBcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZVByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWxsb3c6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IG5leHRTdGF0ZS5sb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmV2aWV3OiBuZXh0U3RhdGUuaXNQcmV2aWV3XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgndHlwZScgaW4gcm91dGVJbmZvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIG1pZGRsZXdhcmUgZWZmZWN0IG9uIC80MDRgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBSb3V0ZXIuZXZlbnRzLmVtaXQoJ2JlZm9yZUhpc3RvcnlDaGFuZ2UnLCBhcywgcm91dGVQcm9wcyk7XG4gICAgICAgICAgICAgICAgX3RoaXMuY2hhbmdlU3RhdGUobWV0aG9kLCB1cmwsIGFzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNRdWVyeVVwZGF0aW5nICYmIHBhdGhuYW1lID09PSAnL19lcnJvcicgJiYgKChyZWYyID0gc2VsZi5fX05FWFRfREFUQV9fLnByb3BzKSA9PSBudWxsID8gdm9pZCAwIDogKHJlZjMgPSByZWYyLnBhZ2VQcm9wcykgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZjMuc3RhdHVzQ29kZSkgPT09IDUwMCAmJiAocHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IHByb3BzLnBhZ2VQcm9wcykpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZW5zdXJlIHN0YXR1c0NvZGUgaXMgc3RpbGwgY29ycmVjdCBmb3Igc3RhdGljIDUwMCBwYWdlXG4gICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXBkYXRpbmcgcXVlcnkgaW5mb3JtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgcHJvcHMucGFnZVByb3BzLnN0YXR1c0NvZGUgPSA1MDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBfcm91dGU7XG4gICAgICAgICAgICAgICAgLy8gc2hhbGxvdyByb3V0aW5nIGlzIG9ubHkgYWxsb3dlZCBmb3Igc2FtZSBwYWdlIFVSTCBjaGFuZ2VzLlxuICAgICAgICAgICAgICAgIGNvbnN0IGlzVmFsaWRTaGFsbG93Um91dGUgPSBvcHRpb25zLnNoYWxsb3cgJiYgbmV4dFN0YXRlLnJvdXRlID09PSAoKF9yb3V0ZSA9IHJvdXRlSW5mby5yb3V0ZSkgIT0gbnVsbCA/IF9yb3V0ZSA6IHJvdXRlKTtcbiAgICAgICAgICAgICAgICB2YXIgX3Njcm9sbDtcbiAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRTY3JvbGwgPSAoX3Njcm9sbCA9IG9wdGlvbnMuc2Nyb2xsKSAhPSBudWxsID8gX3Njcm9sbCA6ICFpc1ZhbGlkU2hhbGxvd1JvdXRlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc2V0U2Nyb2xsID0gc2hvdWxkU2Nyb2xsID8ge1xuICAgICAgICAgICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgICAgICAgICB5OiAwXG4gICAgICAgICAgICAgICAgfSA6IG51bGw7XG4gICAgICAgICAgICAgICAgeWllbGQgX3RoaXMuc2V0KF9leHRlbmRzKHt9LCBuZXh0U3RhdGUsIHtcbiAgICAgICAgICAgICAgICAgICAgcm91dGUsXG4gICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lLFxuICAgICAgICAgICAgICAgICAgICBxdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgYXNQYXRoOiBjbGVhbmVkQXMsXG4gICAgICAgICAgICAgICAgICAgIGlzRmFsbGJhY2s6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSksIHJvdXRlSW5mbywgZm9yY2VkU2Nyb2xsICE9IG51bGwgPyBmb3JjZWRTY3JvbGwgOiByZXNldFNjcm9sbCkuY2F0Y2goKGUpPT57XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLmNhbmNlbGxlZCkgZXJyb3IgPSBlcnJvciB8fCBlO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNRdWVyeVVwZGF0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBSb3V0ZXIuZXZlbnRzLmVtaXQoJ3JvdXRlQ2hhbmdlRXJyb3InLCBlcnJvciwgY2xlYW5lZEFzLCByb3V0ZVByb3BzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9JMThOX1NVUFBPUlQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRTdGF0ZS5sb2NhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nID0gbmV4dFN0YXRlLmxvY2FsZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIWlzUXVlcnlVcGRhdGluZykge1xuICAgICAgICAgICAgICAgICAgICBSb3V0ZXIuZXZlbnRzLmVtaXQoJ3JvdXRlQ2hhbmdlQ29tcGxldGUnLCBhcywgcm91dGVQcm9wcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEEgaGFzaCBtYXJrICMgaXMgdGhlIG9wdGlvbmFsIGxhc3QgcGFydCBvZiBhIFVSTFxuICAgICAgICAgICAgICAgIGNvbnN0IGhhc2hSZWdleCA9IC8jLiskLztcbiAgICAgICAgICAgICAgICBpZiAoc2hvdWxkU2Nyb2xsICYmIGhhc2hSZWdleC50ZXN0KGFzKSkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5zY3JvbGxUb0hhc2goYXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycjEpIHtcbiAgICAgICAgICAgICAgICBpZiAoKDAsIF9pc0Vycm9yKS5kZWZhdWx0KGVycjEpICYmIGVycjEuY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkoKTtcbiAgICB9XG4gICAgY2hhbmdlU3RhdGUobWV0aG9kLCB1cmwsIGFzLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93Lmhpc3RvcnkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgV2FybmluZzogd2luZG93Lmhpc3RvcnkgaXMgbm90IGF2YWlsYWJsZS5gKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdy5oaXN0b3J5W21ldGhvZF0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgV2FybmluZzogd2luZG93Lmhpc3RvcnkuJHttZXRob2R9IGlzIG5vdCBhdmFpbGFibGVgKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1ldGhvZCAhPT0gJ3B1c2hTdGF0ZScgfHwgKDAsIF91dGlscykuZ2V0VVJMKCkgIT09IGFzKSB7XG4gICAgICAgICAgICB0aGlzLl9zaGFsbG93ID0gb3B0aW9ucy5zaGFsbG93O1xuICAgICAgICAgICAgd2luZG93Lmhpc3RvcnlbbWV0aG9kXSh7XG4gICAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgICAgIGFzLFxuICAgICAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICAgICAgX19OOiB0cnVlLFxuICAgICAgICAgICAgICAgIGtleTogdGhpcy5fa2V5ID0gbWV0aG9kICE9PSAncHVzaFN0YXRlJyA/IHRoaXMuX2tleSA6IGNyZWF0ZUtleSgpXG4gICAgICAgICAgICB9LCAvLyBNb3N0IGJyb3dzZXJzIGN1cnJlbnRseSBpZ25vcmVzIHRoaXMgcGFyYW1ldGVyLCBhbHRob3VnaCB0aGV5IG1heSB1c2UgaXQgaW4gdGhlIGZ1dHVyZS5cbiAgICAgICAgICAgIC8vIFBhc3NpbmcgdGhlIGVtcHR5IHN0cmluZyBoZXJlIHNob3VsZCBiZSBzYWZlIGFnYWluc3QgZnV0dXJlIGNoYW5nZXMgdG8gdGhlIG1ldGhvZC5cbiAgICAgICAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IaXN0b3J5L3JlcGxhY2VTdGF0ZVxuICAgICAgICAgICAgJycsIGFzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBoYW5kbGVSb3V0ZUluZm9FcnJvcihlcnIsIHBhdGhuYW1lLCBxdWVyeSwgYXMsIHJvdXRlUHJvcHMsIGxvYWRFcnJvckZhaWwpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKigpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgIGlmIChlcnIuY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICAgICAgLy8gYnViYmxlIHVwIGNhbmNlbGxhdGlvbiBlcnJvcnNcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKDAsIF9yb3V0ZUxvYWRlcikuaXNBc3NldEVycm9yKGVycikgfHwgbG9hZEVycm9yRmFpbCkge1xuICAgICAgICAgICAgICAgIFJvdXRlci5ldmVudHMuZW1pdCgncm91dGVDaGFuZ2VFcnJvcicsIGVyciwgYXMsIHJvdXRlUHJvcHMpO1xuICAgICAgICAgICAgICAgIC8vIElmIHdlIGNhbid0IGxvYWQgdGhlIHBhZ2UgaXQgY291bGQgYmUgb25lIG9mIGZvbGxvd2luZyByZWFzb25zXG4gICAgICAgICAgICAgICAgLy8gIDEuIFBhZ2UgZG9lc24ndCBleGlzdHNcbiAgICAgICAgICAgICAgICAvLyAgMi4gUGFnZSBkb2VzIGV4aXN0IGluIGEgZGlmZmVyZW50IHpvbmVcbiAgICAgICAgICAgICAgICAvLyAgMy4gSW50ZXJuYWwgZXJyb3Igd2hpbGUgbG9hZGluZyB0aGUgcGFnZVxuICAgICAgICAgICAgICAgIC8vIFNvLCBkb2luZyBhIGhhcmQgcmVsb2FkIGlzIHRoZSBwcm9wZXIgd2F5IHRvIGRlYWwgd2l0aCB0aGlzLlxuICAgICAgICAgICAgICAgIGhhbmRsZUhhcmROYXZpZ2F0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBhcyxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vIENoYW5naW5nIHRoZSBVUkwgZG9lc24ndCBibG9jayBleGVjdXRpbmcgdGhlIGN1cnJlbnQgY29kZSBwYXRoLlxuICAgICAgICAgICAgICAgIC8vIFNvIGxldCdzIHRocm93IGEgY2FuY2VsbGF0aW9uIGVycm9yIHN0b3AgdGhlIHJvdXRpbmcgbG9naWMuXG4gICAgICAgICAgICAgICAgdGhyb3cgYnVpbGRDYW5jZWxsYXRpb25FcnJvcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgQ29tcG9uZW50O1xuICAgICAgICAgICAgICAgIGxldCBzdHlsZVNoZWV0cztcbiAgICAgICAgICAgICAgICBsZXQgcHJvcHM7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBDb21wb25lbnQgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiBzdHlsZVNoZWV0cyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgKHsgcGFnZTogQ29tcG9uZW50ICwgc3R5bGVTaGVldHMgIH0gPSB5aWVsZCBfdGhpcy5mZXRjaENvbXBvbmVudCgnL19lcnJvcicpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgcm91dGVJbmZvID0ge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgICAgICBzdHlsZVNoZWV0cyxcbiAgICAgICAgICAgICAgICAgICAgZXJyLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAoIXJvdXRlSW5mby5wcm9wcykge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVJbmZvLnByb3BzID0geWllbGQgX3RoaXMuZ2V0SW5pdGlhbFByb3BzKENvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGdpcEVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gZXJyb3IgcGFnZSBgZ2V0SW5pdGlhbFByb3BzYDogJywgZ2lwRXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlSW5mby5wcm9wcyA9IHt9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByb3V0ZUluZm87XG4gICAgICAgICAgICB9IGNhdGNoIChyb3V0ZUluZm9FcnIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuaGFuZGxlUm91dGVJbmZvRXJyb3IoKDAsIF9pc0Vycm9yKS5kZWZhdWx0KHJvdXRlSW5mb0VycikgPyByb3V0ZUluZm9FcnIgOiBuZXcgRXJyb3Iocm91dGVJbmZvRXJyICsgJycpLCBwYXRobmFtZSwgcXVlcnksIGFzLCByb3V0ZVByb3BzLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkoKTtcbiAgICB9XG4gICAgZ2V0Um91dGVJbmZvKHsgcm91dGU6IHJlcXVlc3RlZFJvdXRlICwgcGF0aG5hbWUgLCBxdWVyeSAsIGFzICwgcmVzb2x2ZWRBcyAsIHJvdXRlUHJvcHMgLCBsb2NhbGUgLCBoYXNNaWRkbGV3YXJlICwgaXNQcmV2aWV3ICwgdW5zdGFibGVfc2tpcENsaWVudENhY2hlICB9KSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiooKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgKiBUaGlzIGByb3V0ZWAgYmluZGluZyBjYW4gY2hhbmdlIGlmIHRoZXJlJ3MgYSByZXdyaXRlXG4gICAgICogc28gd2Uga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYWwgcmVxdWVzdGVkIHJvdXRlXG4gICAgICogc28gd2UgY2FuIHN0b3JlIHRoZSBjYWNoZSBmb3IgaXQgYW5kIGF2b2lkIHJlLXJlcXVlc3RpbmcgZXZlcnkgdGltZVxuICAgICAqIGZvciBzaGFsbG93IHJvdXRpbmcgcHVycG9zZXMuXG4gICAgICovIGxldCByb3V0ZSA9IHJlcXVlc3RlZFJvdXRlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB2YXIgcmVmLCByZWY0LCByZWY1O1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZUNhbmNlbGxlZCA9IGdldENhbmNlbGxlZEhhbmRsZXIoe1xuICAgICAgICAgICAgICAgICAgICByb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGxldCBleGlzdGluZ0luZm8gPSBfdGhpcy5jb21wb25lbnRzW3JvdXRlXTtcbiAgICAgICAgICAgICAgICBpZiAocm91dGVQcm9wcy5zaGFsbG93ICYmIGV4aXN0aW5nSW5mbyAmJiBfdGhpcy5yb3V0ZSA9PT0gcm91dGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4aXN0aW5nSW5mbztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IGNhY2hlZFJvdXRlSW5mbyA9IGV4aXN0aW5nSW5mbyAmJiAhKCdpbml0aWFsJyBpbiBleGlzdGluZ0luZm8pICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAnZGV2ZWxvcG1lbnQnID8gZXhpc3RpbmdJbmZvIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZldGNoTmV4dERhdGFQYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFIcmVmOiBfdGhpcy5wYWdlTG9hZGVyLmdldERhdGFIcmVmKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY6ICgwLCBfZm9ybWF0VXJsKS5mb3JtYXRXaXRoVmFsaWRhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2tpcEludGVycG9sYXRpb246IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBhc1BhdGg6IHJlc29sdmVkQXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIGhhc01pZGRsZXdhcmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGlzU2VydmVyUmVuZGVyOiBfdGhpcy5pc1NzcixcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VKU09OOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBpbmZsaWdodENhY2hlOiBfdGhpcy5zZGMsXG4gICAgICAgICAgICAgICAgICAgIHBlcnNpc3RDYWNoZTogIWlzUHJldmlldyxcbiAgICAgICAgICAgICAgICAgICAgaXNQcmVmZXRjaDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHVuc3RhYmxlX3NraXBDbGllbnRDYWNoZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIHdpdGhNaWRkbGV3YXJlRWZmZWN0cyh7XG4gICAgICAgICAgICAgICAgICAgIGZldGNoRGF0YTogKCk9PmZldGNoTmV4dERhdGEoZmV0Y2hOZXh0RGF0YVBhcmFtcyksXG4gICAgICAgICAgICAgICAgICAgIGFzUGF0aDogcmVzb2x2ZWRBcyxcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBsb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlcjogX3RoaXNcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBoYW5kbGVDYW5jZWxsZWQoKTtcbiAgICAgICAgICAgICAgICBpZiAoKGRhdGEgPT0gbnVsbCA/IHZvaWQgMCA6IChyZWYgPSBkYXRhLmVmZmVjdCkgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZi50eXBlKSA9PT0gJ3JlZGlyZWN0LWludGVybmFsJyB8fCAoZGF0YSA9PSBudWxsID8gdm9pZCAwIDogKHJlZjQgPSBkYXRhLmVmZmVjdCkgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZjQudHlwZSkgPT09ICdyZWRpcmVjdC1leHRlcm5hbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEuZWZmZWN0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoKGRhdGEgPT0gbnVsbCA/IHZvaWQgMCA6IChyZWY1ID0gZGF0YS5lZmZlY3QpID09IG51bGwgPyB2b2lkIDAgOiByZWY1LnR5cGUpID09PSAncmV3cml0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgcm91dGUgPSAoMCwgX3JlbW92ZVRyYWlsaW5nU2xhc2gpLnJlbW92ZVRyYWlsaW5nU2xhc2goZGF0YS5lZmZlY3QucmVzb2x2ZWRIcmVmKTtcbiAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUgPSBkYXRhLmVmZmVjdC5yZXNvbHZlZEhyZWY7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5ID0gX2V4dGVuZHMoe30sIHF1ZXJ5LCBkYXRhLmVmZmVjdC5wYXJzZWRBcy5xdWVyeSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQXMgPSBkYXRhLmVmZmVjdC5wYXJzZWRBcy5wYXRobmFtZTtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgYWdhaW4gdGhlIGNhY2hlIHdpdGggdGhlIG5ldyBkZXN0aW5hdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdJbmZvID0gX3RoaXMuY29tcG9uZW50c1tyb3V0ZV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChyb3V0ZVByb3BzLnNoYWxsb3cgJiYgZXhpc3RpbmdJbmZvICYmIF90aGlzLnJvdXRlID09PSByb3V0ZSAmJiAhaGFzTWlkZGxld2FyZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIG1hdGNoIHdpdGggdGhlIGN1cnJlbnQgcm91dGUgZHVlIHRvIHJld3JpdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBjYW4gY29weSB0aGUgZXhpc3RpbmcgaW5mb3JtYXRpb24gdG8gdGhlIHJld3JpdHRlbiBvbmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGVuLCB3ZSByZXR1cm4gdGhlIGluZm9ybWF0aW9uIGFsb25nIHdpdGggdGhlIG1hdGNoZWQgcm91dGUuXG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5jb21wb25lbnRzW3JlcXVlc3RlZFJvdXRlXSA9IF9leHRlbmRzKHt9LCBleGlzdGluZ0luZm8sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2V4dGVuZHMoe30sIGV4aXN0aW5nSW5mbywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYWNoZWRSb3V0ZUluZm8gPSBleGlzdGluZ0luZm8gJiYgISgnaW5pdGlhbCcgaW4gZXhpc3RpbmdJbmZvKSAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50JyA/IGV4aXN0aW5nSW5mbyA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJvdXRlID09PSAnL2FwaScgfHwgcm91dGUuc3RhcnRzV2l0aCgnL2FwaS8nKSkge1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFzLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCgpPT57fSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRlSW5mbyA9IGNhY2hlZFJvdXRlSW5mbyB8fCAoeWllbGQgX3RoaXMuZmV0Y2hDb21wb25lbnQocm91dGUpLnRoZW4oKHJlcyk9Pih7XG4gICAgICAgICAgICAgICAgICAgICAgICBDb21wb25lbnQ6IHJlcy5wYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVTaGVldHM6IHJlcy5zdHlsZVNoZWV0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9fTl9TU0c6IHJlcy5tb2QuX19OX1NTRyxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9fTl9TU1A6IHJlcy5tb2QuX19OX1NTUCxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9fTl9SU0M6ICEhcmVzLm1vZC5fX25leHRfcnNjX19cbiAgICAgICAgICAgICAgICAgICAgfSkpKTtcbiAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGlzVmFsaWRFbGVtZW50VHlwZSAgfSA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9yZWFjdC1pcycpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRFbGVtZW50VHlwZShyb3V0ZUluZm8uQ29tcG9uZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZGVmYXVsdCBleHBvcnQgaXMgbm90IGEgUmVhY3QgQ29tcG9uZW50IGluIHBhZ2U6IFwiJHtwYXRobmFtZX1cImApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICogRm9yIHNlcnZlciBjb21wb25lbnRzLCBub24tU1NSIHBhZ2VzIHdpbGwgaGF2ZSBzdGF0aWNhbGx5IG9wdGltaXplZFxuICAgICAgICogZmxpZ2h0IGRhdGEgaW4gYSBwcm9kdWN0aW9uIGJ1aWxkLiBTbyBvbmx5IGRldmVsb3BtZW50IGFuZCBTU1IgcGFnZXNcbiAgICAgICAqIHdpbGwgYWx3YXlzIGhhdmUgdGhlIHJlYWwtdGltZSBnZW5lcmF0ZWQgYW5kIHN0cmVhbWVkIGZsaWdodCBkYXRhLlxuICAgICAgICovIGNvbnN0IHVzZVN0cmVhbWVkRmxpZ2h0RGF0YSA9IHJvdXRlSW5mby5fX05fUlNDICYmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nIHx8IHJvdXRlSW5mby5fX05fU1NQKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRGZXRjaERhdGEgPSByb3V0ZUluZm8uX19OX1NTRyB8fCByb3V0ZUluZm8uX19OX1NTUCB8fCByb3V0ZUluZm8uX19OX1JTQztcbiAgICAgICAgICAgICAgICBjb25zdCB7IHByb3BzICB9ID0geWllbGQgX3RoaXMuX2dldERhdGEoX2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkRmV0Y2hEYXRhICYmICF1c2VTdHJlYW1lZEZsaWdodERhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsganNvbiAgfSA9IGRhdGEgfHwgKHlpZWxkIGZldGNoTmV4dERhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFIcmVmOiBfdGhpcy5wYWdlTG9hZGVyLmdldERhdGFIcmVmKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZjogKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzUGF0aDogcmVzb2x2ZWRBcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTZXJ2ZXJSZW5kZXI6IF90aGlzLmlzU3NyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSlNPTjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZsaWdodENhY2hlOiBfdGhpcy5zZGMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc2lzdENhY2hlOiAhaXNQcmV2aWV3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUHJlZmV0Y2g6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc3RhYmxlX3NraXBDbGllbnRDYWNoZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wczoganNvblxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge30sXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogeWllbGQgX3RoaXMuZ2V0SW5pdGlhbFByb3BzKHJvdXRlSW5mby5Db21wb25lbnQsIC8vIHdlIHByb3ZpZGUgQXBwVHJlZSBsYXRlciBzbyB0aGlzIG5lZWRzIHRvIGJlIGBhbnlgXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNQYXRoOiBhcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlczogX3RoaXMubG9jYWxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TG9jYWxlOiBfdGhpcy5kZWZhdWx0TG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAvLyBPbmx5IGJ1c3QgdGhlIGRhdGEgY2FjaGUgZm9yIFNTUCByb3V0ZXMgYWx0aG91Z2hcbiAgICAgICAgICAgICAgICAvLyBtaWRkbGV3YXJlIGNhbiBza2lwIGNhY2hlIHBlciByZXF1ZXN0IHdpdGhcbiAgICAgICAgICAgICAgICAvLyB4LW1pZGRsZXdhcmUtY2FjaGU6IG5vLWNhY2hlIGFzIHdlbGxcbiAgICAgICAgICAgICAgICBpZiAocm91dGVJbmZvLl9fTl9TU1AgJiYgZmV0Y2hOZXh0RGF0YVBhcmFtcy5kYXRhSHJlZikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYWNoZUtleSA9IG5ldyBVUkwoZmV0Y2hOZXh0RGF0YVBhcmFtcy5kYXRhSHJlZiwgd2luZG93LmxvY2F0aW9uLmhyZWYpLmhyZWY7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBfdGhpcy5zZGNbY2FjaGVLZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyB3ZSBraWNrIG9mZiBhIEhFQUQgcmVxdWVzdCBpbiB0aGUgYmFja2dyb3VuZFxuICAgICAgICAgICAgICAgIC8vIHdoZW4gYSBub24tcHJlZmV0Y2ggcmVxdWVzdCBpcyBtYWRlIHRvIHNpZ25hbCByZXZhbGlkYXRpb25cbiAgICAgICAgICAgICAgICBpZiAoIV90aGlzLmlzUHJldmlldyAmJiByb3V0ZUluZm8uX19OX1NTRyAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgICAgICAgICBmZXRjaE5leHREYXRhKE9iamVjdC5hc3NpZ24oe30sIGZldGNoTmV4dERhdGFQYXJhbXMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQmFja2dyb3VuZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNpc3RDYWNoZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmZsaWdodENhY2hlOiBiYWNrZ3JvdW5kQ2FjaGVcbiAgICAgICAgICAgICAgICAgICAgfSkpLmNhdGNoKCgpPT57fSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBmbGlnaHRJbmZvO1xuICAgICAgICAgICAgICAgIGlmIChyb3V0ZUluZm8uX19OX1JTQykge1xuICAgICAgICAgICAgICAgICAgICBmbGlnaHRJbmZvID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgX19mbGlnaHRfXzogdXNlU3RyZWFtZWRGbGlnaHREYXRhID8gKHlpZWxkIF90aGlzLl9nZXREYXRhKCgpPT5fdGhpcy5fZ2V0RmxpZ2h0RGF0YSgoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeTogX2V4dGVuZHMoe30sIHF1ZXJ5LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2ZsaWdodF9fOiAnMSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lOiAoMCwgX2lzRHluYW1pYykuaXNEeW5hbWljUm91dGUocm91dGUpID8gaW50ZXJwb2xhdGVBcyhwYXRobmFtZSwgKDAsIF9wYXJzZVJlbGF0aXZlVXJsKS5wYXJzZVJlbGF0aXZlVXJsKHJlc29sdmVkQXMpLnBhdGhuYW1lLCBxdWVyeSkucmVzdWx0IDogcGF0aG5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpKS5kYXRhIDogcHJvcHMuX19mbGlnaHRfX1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwcm9wcy5wYWdlUHJvcHMgPSBPYmplY3QuYXNzaWduKHt9LCBwcm9wcy5wYWdlUHJvcHMsIGZsaWdodEluZm8pO1xuICAgICAgICAgICAgICAgIHJvdXRlSW5mby5wcm9wcyA9IHByb3BzO1xuICAgICAgICAgICAgICAgIHJvdXRlSW5mby5yb3V0ZSA9IHJvdXRlO1xuICAgICAgICAgICAgICAgIHJvdXRlSW5mby5xdWVyeSA9IHF1ZXJ5O1xuICAgICAgICAgICAgICAgIHJvdXRlSW5mby5yZXNvbHZlZEFzID0gcmVzb2x2ZWRBcztcbiAgICAgICAgICAgICAgICBfdGhpcy5jb21wb25lbnRzW3JvdXRlXSA9IHJvdXRlSW5mbztcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcm91dGUgd2FzIHJld3JpdHRlbiBpbiB0aGUgcHJvY2VzcyBvZiBmZXRjaGluZyBkYXRhLFxuICAgICAgICAgICAgICAgIC8vIHdlIHVwZGF0ZSB0aGUgY2FjaGUgdG8gYWxsb3cgaGl0dGluZyB0aGUgc2FtZSBkYXRhIGZvciBzaGFsbG93IHJlcXVlc3RzLlxuICAgICAgICAgICAgICAgIGlmIChyb3V0ZSAhPT0gcmVxdWVzdGVkUm91dGUpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuY29tcG9uZW50c1tyZXF1ZXN0ZWRSb3V0ZV0gPSBfZXh0ZW5kcyh7fSwgcm91dGVJbmZvLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3V0ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvdXRlSW5mbztcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5oYW5kbGVSb3V0ZUluZm9FcnJvcigoMCwgX2lzRXJyb3IpLmdldFByb3BlckVycm9yKGVyciksIHBhdGhuYW1lLCBxdWVyeSwgYXMsIHJvdXRlUHJvcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSgpO1xuICAgIH1cbiAgICBzZXQoc3RhdGUsIGRhdGEsIHJlc2V0U2Nyb2xsKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViKGRhdGEsIHRoaXMuY29tcG9uZW50c1snL19hcHAnXS5Db21wb25lbnQsIHJlc2V0U2Nyb2xsKTtcbiAgICB9XG4gICAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGV4ZWN1dGUgYmVmb3JlIHJlcGxhY2luZyByb3V0ZXIgc3RhdGVcbiAgICogQHBhcmFtIGNiIGNhbGxiYWNrIHRvIGJlIGV4ZWN1dGVkXG4gICAqLyBiZWZvcmVQb3BTdGF0ZShjYikge1xuICAgICAgICB0aGlzLl9icHMgPSBjYjtcbiAgICB9XG4gICAgb25seUFIYXNoQ2hhbmdlKGFzKSB7XG4gICAgICAgIGlmICghdGhpcy5hc1BhdGgpIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgW29sZFVybE5vSGFzaCwgb2xkSGFzaF0gPSB0aGlzLmFzUGF0aC5zcGxpdCgnIycpO1xuICAgICAgICBjb25zdCBbbmV3VXJsTm9IYXNoLCBuZXdIYXNoXSA9IGFzLnNwbGl0KCcjJyk7XG4gICAgICAgIC8vIE1ha2VzIHN1cmUgd2Ugc2Nyb2xsIHRvIHRoZSBwcm92aWRlZCBoYXNoIGlmIHRoZSB1cmwvaGFzaCBhcmUgdGhlIHNhbWVcbiAgICAgICAgaWYgKG5ld0hhc2ggJiYgb2xkVXJsTm9IYXNoID09PSBuZXdVcmxOb0hhc2ggJiYgb2xkSGFzaCA9PT0gbmV3SGFzaCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgdGhlIHVybHMgYXJlIGNoYW5nZSwgdGhlcmUncyBtb3JlIHRoYW4gYSBoYXNoIGNoYW5nZVxuICAgICAgICBpZiAob2xkVXJsTm9IYXNoICE9PSBuZXdVcmxOb0hhc2gpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB0aGUgaGFzaCBoYXMgY2hhbmdlZCwgdGhlbiBpdCdzIGEgaGFzaCBvbmx5IGNoYW5nZS5cbiAgICAgICAgLy8gVGhpcyBjaGVjayBpcyBuZWNlc3NhcnkgdG8gaGFuZGxlIGJvdGggdGhlIGVudGVyIGFuZFxuICAgICAgICAvLyBsZWF2ZSBoYXNoID09PSAnJyBjYXNlcy4gVGhlIGlkZW50aXR5IGNhc2UgZmFsbHMgdGhyb3VnaFxuICAgICAgICAvLyBhbmQgaXMgdHJlYXRlZCBhcyBhIG5leHQgcmVsb2FkLlxuICAgICAgICByZXR1cm4gb2xkSGFzaCAhPT0gbmV3SGFzaDtcbiAgICB9XG4gICAgc2Nyb2xsVG9IYXNoKGFzKSB7XG4gICAgICAgIGNvbnN0IFssIGhhc2ggPSAnJ10gPSBhcy5zcGxpdCgnIycpO1xuICAgICAgICAvLyBTY3JvbGwgdG8gdG9wIGlmIHRoZSBoYXNoIGlzIGp1c3QgYCNgIHdpdGggbm8gdmFsdWUgb3IgYCN0b3BgXG4gICAgICAgIC8vIFRvIG1pcnJvciBicm93c2Vyc1xuICAgICAgICBpZiAoaGFzaCA9PT0gJycgfHwgaGFzaCA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBEZWNvZGUgaGFzaCB0byBtYWtlIG5vbi1sYXRpbiBhbmNob3Igd29ya3MuXG4gICAgICAgIGNvbnN0IHJhd0hhc2ggPSBkZWNvZGVVUklDb21wb25lbnQoaGFzaCk7XG4gICAgICAgIC8vIEZpcnN0IHdlIGNoZWNrIGlmIHRoZSBlbGVtZW50IGJ5IGlkIGlzIGZvdW5kXG4gICAgICAgIGNvbnN0IGlkRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChyYXdIYXNoKTtcbiAgICAgICAgaWYgKGlkRWwpIHtcbiAgICAgICAgICAgIGlkRWwuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB0aGVyZSdzIG5vIGVsZW1lbnQgd2l0aCB0aGUgaWQsIHdlIGNoZWNrIHRoZSBgbmFtZWAgcHJvcGVydHlcbiAgICAgICAgLy8gVG8gbWlycm9yIGJyb3dzZXJzXG4gICAgICAgIGNvbnN0IG5hbWVFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKHJhd0hhc2gpWzBdO1xuICAgICAgICBpZiAobmFtZUVsKSB7XG4gICAgICAgICAgICBuYW1lRWwuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB1cmxJc05ldyhhc1BhdGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXNQYXRoICE9PSBhc1BhdGg7XG4gICAgfVxuICAgIC8qKlxuICAgKiBQcmVmZXRjaCBwYWdlIGNvZGUsIHlvdSBtYXkgd2FpdCBmb3IgdGhlIGRhdGEgZHVyaW5nIHBhZ2UgcmVuZGVyaW5nLlxuICAgKiBUaGlzIGZlYXR1cmUgb25seSB3b3JrcyBpbiBwcm9kdWN0aW9uIVxuICAgKiBAcGFyYW0gdXJsIHRoZSBocmVmIG9mIHByZWZldGNoZWQgcGFnZVxuICAgKiBAcGFyYW0gYXNQYXRoIHRoZSBhcyBwYXRoIG9mIHRoZSBwcmVmZXRjaGVkIHBhZ2VcbiAgICovIHByZWZldGNoKHVybCwgYXNQYXRoID0gdXJsLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKigpIHtcbiAgICAgICAgICAgIGxldCBwYXJzZWQgPSAoMCwgX3BhcnNlUmVsYXRpdmVVcmwpLnBhcnNlUmVsYXRpdmVVcmwodXJsKTtcbiAgICAgICAgICAgIGxldCB7IHBhdGhuYW1lICwgcXVlcnkgIH0gPSBwYXJzZWQ7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmxvY2FsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUgPSAoMCwgX25vcm1hbGl6ZUxvY2FsZVBhdGgpLm5vcm1hbGl6ZUxvY2FsZVBhdGgocGF0aG5hbWUsIF90aGlzLmxvY2FsZXMpLnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICAgICBwYXJzZWQucGF0aG5hbWUgPSBwYXRobmFtZTtcbiAgICAgICAgICAgICAgICAgICAgdXJsID0gKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHBhcnNlZCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJzZWRBcyA9ICgwLCBfcGFyc2VSZWxhdGl2ZVVybCkucGFyc2VSZWxhdGl2ZVVybChhc1BhdGgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGVQYXRoUmVzdWx0ID0gKDAsIF9ub3JtYWxpemVMb2NhbGVQYXRoKS5ub3JtYWxpemVMb2NhbGVQYXRoKHBhcnNlZEFzLnBhdGhuYW1lLCBfdGhpcy5sb2NhbGVzKTtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkQXMucGF0aG5hbWUgPSBsb2NhbGVQYXRoUmVzdWx0LnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmxvY2FsZSA9IGxvY2FsZVBhdGhSZXN1bHQuZGV0ZWN0ZWRMb2NhbGUgfHwgX3RoaXMuZGVmYXVsdExvY2FsZTtcbiAgICAgICAgICAgICAgICAgICAgYXNQYXRoID0gKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHBhcnNlZEFzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwYWdlcyA9IHlpZWxkIF90aGlzLnBhZ2VMb2FkZXIuZ2V0UGFnZUxpc3QoKTtcbiAgICAgICAgICAgIGxldCByZXNvbHZlZEFzID0gYXNQYXRoO1xuICAgICAgICAgICAgY29uc3QgbG9jYWxlID0gdHlwZW9mIG9wdGlvbnMubG9jYWxlICE9PSAndW5kZWZpbmVkJyA/IG9wdGlvbnMubG9jYWxlIHx8IHVuZGVmaW5lZCA6IF90aGlzLmxvY2FsZTtcbiAgICAgICAgICAgIGNvbnN0IGlzTWlkZGxld2FyZU1hdGNoID0geWllbGQgbWF0Y2hlc01pZGRsZXdhcmUoe1xuICAgICAgICAgICAgICAgIGFzUGF0aDogYXNQYXRoLFxuICAgICAgICAgICAgICAgIGxvY2FsZTogbG9jYWxlLFxuICAgICAgICAgICAgICAgIHJvdXRlcjogX3RoaXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9IQVNfUkVXUklURVMgJiYgYXNQYXRoLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICAgICAgICAgIGxldCByZXdyaXRlcztcbiAgICAgICAgICAgICAgICAoeyBfX3Jld3JpdGVzOiByZXdyaXRlcyAgfSA9IHlpZWxkICgwLCBfcm91dGVMb2FkZXIpLmdldENsaWVudEJ1aWxkTWFuaWZlc3QoKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmV3cml0ZXNSZXN1bHQgPSAoMCwgX3Jlc29sdmVSZXdyaXRlcykuZGVmYXVsdCgoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aCgoMCwgX2FkZExvY2FsZSkuYWRkTG9jYWxlKGFzUGF0aCwgX3RoaXMubG9jYWxlKSwgdHJ1ZSksIHBhZ2VzLCByZXdyaXRlcywgcGFyc2VkLnF1ZXJ5LCAocCk9PnJlc29sdmVEeW5hbWljUm91dGUocCwgcGFnZXMpLCBfdGhpcy5sb2NhbGVzKTtcbiAgICAgICAgICAgICAgICBpZiAocmV3cml0ZXNSZXN1bHQuZXh0ZXJuYWxEZXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzb2x2ZWRBcyA9ICgwLCBfcmVtb3ZlTG9jYWxlKS5yZW1vdmVMb2NhbGUoKDAsIF9yZW1vdmVCYXNlUGF0aCkucmVtb3ZlQmFzZVBhdGgocmV3cml0ZXNSZXN1bHQuYXNQYXRoKSwgX3RoaXMubG9jYWxlKTtcbiAgICAgICAgICAgICAgICBpZiAocmV3cml0ZXNSZXN1bHQubWF0Y2hlZFBhZ2UgJiYgcmV3cml0ZXNSZXN1bHQucmVzb2x2ZWRIcmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoaXMgZGlyZWN0bHkgbWF0Y2hlcyBhIHBhZ2Ugd2UgbmVlZCB0byB1cGRhdGUgdGhlIGhyZWYgdG9cbiAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3cgdGhlIGNvcnJlY3QgcGFnZSBjaHVuayB0byBiZSBsb2FkZWRcbiAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUgPSByZXdyaXRlc1Jlc3VsdC5yZXNvbHZlZEhyZWY7XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZC5wYXRobmFtZSA9IHBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTWlkZGxld2FyZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24ocGFyc2VkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcnNlZC5wYXRobmFtZSA9IHJlc29sdmVEeW5hbWljUm91dGUocGFyc2VkLnBhdGhuYW1lLCBwYWdlcyk7XG4gICAgICAgICAgICBpZiAoKDAsIF9pc0R5bmFtaWMpLmlzRHluYW1pY1JvdXRlKHBhcnNlZC5wYXRobmFtZSkpIHtcbiAgICAgICAgICAgICAgICBwYXRobmFtZSA9IHBhcnNlZC5wYXRobmFtZTtcbiAgICAgICAgICAgICAgICBwYXJzZWQucGF0aG5hbWUgPSBwYXRobmFtZTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHF1ZXJ5LCAoMCwgX3JvdXRlTWF0Y2hlcikuZ2V0Um91dGVNYXRjaGVyKCgwLCBfcm91dGVSZWdleCkuZ2V0Um91dGVSZWdleChwYXJzZWQucGF0aG5hbWUpKSgoMCwgX3BhcnNlUGF0aCkucGFyc2VQYXRoKGFzUGF0aCkucGF0aG5hbWUpIHx8IHt9KTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzTWlkZGxld2FyZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHVybCA9ICgwLCBfZm9ybWF0VXJsKS5mb3JtYXRXaXRoVmFsaWRhdGlvbihwYXJzZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFByZWZldGNoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gZGV2ZWxvcG1lbnQgbW9kZSBiZWNhdXNlIGl0IHdvdWxkIHRyaWdnZXIgb24tZGVtYW5kLWVudHJpZXNcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVE9ETzogaWYgdGhlIHJvdXRlIG1pZGRsZXdhcmUncyBkYXRhIHJlcXVlc3RcbiAgICAgICAgICAgIC8vIHJlc29sdmVzIHRvIGlzIG5vdCBhbiBTU0cgcm91dGUgd2Ugc2hvdWxkIGJ1c3QgdGhlIGNhY2hlXG4gICAgICAgICAgICAvLyBidXQgd2Ugc2hvdWxkbid0IGFsbG93IHByZWZldGNoIHRvIGtlZXAgdHJpZ2dlcmluZ1xuICAgICAgICAgICAgLy8gcmVxdWVzdHMgZm9yIFNTUCBwYWdlc1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIHdpdGhNaWRkbGV3YXJlRWZmZWN0cyh7XG4gICAgICAgICAgICAgICAgZmV0Y2hEYXRhOiAoKT0+ZmV0Y2hOZXh0RGF0YSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhSHJlZjogX3RoaXMucGFnZUxvYWRlci5nZXREYXRhSHJlZih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZjogKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcEludGVycG9sYXRpb246IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNQYXRoOiByZXNvbHZlZEFzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNNaWRkbGV3YXJlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNTZXJ2ZXJSZW5kZXI6IF90aGlzLmlzU3NyLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VKU09OOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5mbGlnaHRDYWNoZTogX3RoaXMuc2RjLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGVyc2lzdENhY2hlOiAhX3RoaXMuaXNQcmV2aWV3LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmVmZXRjaDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBhc1BhdGg6IGFzUGF0aCxcbiAgICAgICAgICAgICAgICBsb2NhbGU6IGxvY2FsZSxcbiAgICAgICAgICAgICAgICByb3V0ZXI6IF90aGlzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8qKlxuICAgICAqIElmIHRoZXJlIHdhcyBhIHJld3JpdGUgd2UgYXBwbHkgdGhlIGVmZmVjdHMgb2YgdGhlIHJld3JpdGUgb24gdGhlXG4gICAgICogY3VycmVudCBwYXJhbWV0ZXJzIGZvciB0aGUgcHJlZmV0Y2guXG4gICAgICovIGlmICgoZGF0YSA9PSBudWxsID8gdm9pZCAwIDogZGF0YS5lZmZlY3QudHlwZSkgPT09ICdyZXdyaXRlJykge1xuICAgICAgICAgICAgICAgIHBhcnNlZC5wYXRobmFtZSA9IGRhdGEuZWZmZWN0LnJlc29sdmVkSHJlZjtcbiAgICAgICAgICAgICAgICBwYXRobmFtZSA9IGRhdGEuZWZmZWN0LnJlc29sdmVkSHJlZjtcbiAgICAgICAgICAgICAgICBxdWVyeSA9IF9leHRlbmRzKHt9LCBxdWVyeSwgZGF0YS5lZmZlY3QucGFyc2VkQXMucXVlcnkpO1xuICAgICAgICAgICAgICAgIHJlc29sdmVkQXMgPSBkYXRhLmVmZmVjdC5wYXJzZWRBcy5wYXRobmFtZTtcbiAgICAgICAgICAgICAgICB1cmwgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24ocGFyc2VkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qKlxuICAgICAqIElmIHRoZXJlIGlzIGEgcmVkaXJlY3QgdG8gYW4gZXh0ZXJuYWwgZGVzdGluYXRpb24gdGhlbiB3ZSBkb24ndCBoYXZlXG4gICAgICogdG8gcHJlZmV0Y2ggY29udGVudCBhcyBpdCB3aWxsIGJlIHVudXNlZC5cbiAgICAgKi8gaWYgKChkYXRhID09IG51bGwgPyB2b2lkIDAgOiBkYXRhLmVmZmVjdC50eXBlKSA9PT0gJ3JlZGlyZWN0LWV4dGVybmFsJykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJvdXRlID0gKDAsIF9yZW1vdmVUcmFpbGluZ1NsYXNoKS5yZW1vdmVUcmFpbGluZ1NsYXNoKHBhdGhuYW1lKTtcbiAgICAgICAgICAgIHlpZWxkIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICBfdGhpcy5wYWdlTG9hZGVyLl9pc1NzZyhyb3V0ZSkudGhlbigoaXNTc2cpPT57XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpc1NzZyA/IGZldGNoTmV4dERhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUhyZWY6IChkYXRhID09IG51bGwgPyB2b2lkIDAgOiBkYXRhLmRhdGFIcmVmKSB8fCBfdGhpcy5wYWdlTG9hZGVyLmdldERhdGFIcmVmKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmOiB1cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNQYXRoOiByZXNvbHZlZEFzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZTogbG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VydmVyUmVuZGVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSlNPTjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZmxpZ2h0Q2FjaGU6IF90aGlzLnNkYyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNpc3RDYWNoZTogIV90aGlzLmlzUHJldmlldyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUHJlZmV0Y2g6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB1bnN0YWJsZV9za2lwQ2xpZW50Q2FjaGU6IG9wdGlvbnMudW5zdGFibGVfc2tpcENsaWVudENhY2hlIHx8IG9wdGlvbnMucHJpb3JpdHlcbiAgICAgICAgICAgICAgICAgICAgfSkudGhlbigoKT0+ZmFsc2UpIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgX3RoaXMucGFnZUxvYWRlcltvcHRpb25zLnByaW9yaXR5ID8gJ2xvYWRQYWdlJyA6ICdwcmVmZXRjaCddKHJvdXRlKSwgXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfSkoKTtcbiAgICB9XG4gICAgZmV0Y2hDb21wb25lbnQocm91dGUpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKigpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZUNhbmNlbGxlZCA9IGdldENhbmNlbGxlZEhhbmRsZXIoe1xuICAgICAgICAgICAgICAgIHJvdXRlLFxuICAgICAgICAgICAgICAgIHJvdXRlcjogX3RoaXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZXN1bHQgPSB5aWVsZCBfdGhpcy5wYWdlTG9hZGVyLmxvYWRQYWdlKHJvdXRlKTtcbiAgICAgICAgICAgICAgICBoYW5kbGVDYW5jZWxsZWQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9uZW50UmVzdWx0O1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlQ2FuY2VsbGVkKCk7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSgpO1xuICAgIH1cbiAgICBfZ2V0RGF0YShmbikge1xuICAgICAgICBsZXQgY2FuY2VsbGVkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGNhbmNlbCA9ICgpPT57XG4gICAgICAgICAgICBjYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNsYyA9IGNhbmNlbDtcbiAgICAgICAgcmV0dXJuIGZuKCkudGhlbigoZGF0YSk9PntcbiAgICAgICAgICAgIGlmIChjYW5jZWwgPT09IHRoaXMuY2xjKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGMgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNhbmNlbGxlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcignTG9hZGluZyBpbml0aWFsIHByb3BzIGNhbmNlbGxlZCcpO1xuICAgICAgICAgICAgICAgIGVyci5jYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX2dldEZsaWdodERhdGEoZGF0YUhyZWYpIHtcbiAgICAgICAgLy8gRG8gbm90IGNhY2hlIFJTQyBmbGlnaHQgcmVzcG9uc2Ugc2luY2UgaXQncyBub3QgYSBzdGF0aWMgcmVzb3VyY2VcbiAgICAgICAgcmV0dXJuIGZldGNoTmV4dERhdGEoe1xuICAgICAgICAgICAgZGF0YUhyZWYsXG4gICAgICAgICAgICBpc1NlcnZlclJlbmRlcjogdHJ1ZSxcbiAgICAgICAgICAgIHBhcnNlSlNPTjogZmFsc2UsXG4gICAgICAgICAgICBpbmZsaWdodENhY2hlOiB0aGlzLnNkYyxcbiAgICAgICAgICAgIHBlcnNpc3RDYWNoZTogZmFsc2UsXG4gICAgICAgICAgICBpc1ByZWZldGNoOiBmYWxzZVxuICAgICAgICB9KS50aGVuKCh7IHRleHQgIH0pPT4oe1xuICAgICAgICAgICAgICAgIGRhdGE6IHRleHRcbiAgICAgICAgICAgIH0pKTtcbiAgICB9XG4gICAgZ2V0SW5pdGlhbFByb3BzKENvbXBvbmVudCwgY3R4KSB7XG4gICAgICAgIGNvbnN0IHsgQ29tcG9uZW50OiBBcHAgIH0gPSB0aGlzLmNvbXBvbmVudHNbJy9fYXBwJ107XG4gICAgICAgIGNvbnN0IEFwcFRyZWUgPSB0aGlzLl93cmFwQXBwKEFwcCk7XG4gICAgICAgIGN0eC5BcHBUcmVlID0gQXBwVHJlZTtcbiAgICAgICAgcmV0dXJuICgwLCBfdXRpbHMpLmxvYWRHZXRJbml0aWFsUHJvcHMoQXBwLCB7XG4gICAgICAgICAgICBBcHBUcmVlLFxuICAgICAgICAgICAgQ29tcG9uZW50LFxuICAgICAgICAgICAgcm91dGVyOiB0aGlzLFxuICAgICAgICAgICAgY3R4XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXQgcm91dGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLnJvdXRlO1xuICAgIH1cbiAgICBnZXQgcGF0aG5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLnBhdGhuYW1lO1xuICAgIH1cbiAgICBnZXQgcXVlcnkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLnF1ZXJ5O1xuICAgIH1cbiAgICBnZXQgYXNQYXRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5hc1BhdGg7XG4gICAgfVxuICAgIGdldCBsb2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLmxvY2FsZTtcbiAgICB9XG4gICAgZ2V0IGlzRmFsbGJhY2soKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLmlzRmFsbGJhY2s7XG4gICAgfVxuICAgIGdldCBpc1ByZXZpZXcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLmlzUHJldmlldztcbiAgICB9XG4gICAgY29uc3RydWN0b3IocGF0aG5hbWUxLCBxdWVyeTEsIGFzMSwgeyBpbml0aWFsUHJvcHMgLCBwYWdlTG9hZGVyICwgQXBwICwgd3JhcEFwcCAsIENvbXBvbmVudCAsIGVyciAsIHN1YnNjcmlwdGlvbiAsIGlzRmFsbGJhY2sgLCBsb2NhbGUgLCBsb2NhbGVzICwgZGVmYXVsdExvY2FsZSAsIGRvbWFpbkxvY2FsZXMgLCBpc1ByZXZpZXcgLCBpc1JzYyAgfSl7XG4gICAgICAgIC8vIFNlcnZlciBEYXRhIENhY2hlXG4gICAgICAgIHRoaXMuc2RjID0ge307XG4gICAgICAgIHRoaXMuaXNGaXJzdFBvcFN0YXRlRXZlbnQgPSB0cnVlO1xuICAgICAgICB0aGlzLl9rZXkgPSBjcmVhdGVLZXkoKTtcbiAgICAgICAgdGhpcy5vblBvcFN0YXRlID0gKGUpPT57XG4gICAgICAgICAgICBjb25zdCB7IGlzRmlyc3RQb3BTdGF0ZUV2ZW50ICB9ID0gdGhpcztcbiAgICAgICAgICAgIHRoaXMuaXNGaXJzdFBvcFN0YXRlRXZlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gZS5zdGF0ZTtcbiAgICAgICAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgICAgICAgICAvLyBXZSBnZXQgc3RhdGUgYXMgdW5kZWZpbmVkIGZvciB0d28gcmVhc29ucy5cbiAgICAgICAgICAgICAgICAvLyAgMS4gV2l0aCBvbGRlciBzYWZhcmkgKDwgOCkgYW5kIG9sZGVyIGNocm9tZSAoPCAzNClcbiAgICAgICAgICAgICAgICAvLyAgMi4gV2hlbiB0aGUgVVJMIGNoYW5nZWQgd2l0aCAjXG4gICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAvLyBJbiB0aGUgYm90aCBjYXNlcywgd2UgZG9uJ3QgbmVlZCB0byBwcm9jZWVkIGFuZCBjaGFuZ2UgdGhlIHJvdXRlLlxuICAgICAgICAgICAgICAgIC8vIChhcyBpdCdzIGFscmVhZHkgY2hhbmdlZClcbiAgICAgICAgICAgICAgICAvLyBCdXQgd2UgY2FuIHNpbXBseSByZXBsYWNlIHRoZSBzdGF0ZSB3aXRoIHRoZSBuZXcgY2hhbmdlcy5cbiAgICAgICAgICAgICAgICAvLyBBY3R1YWxseSwgZm9yICgxKSB3ZSBkb24ndCBuZWVkIHRvIG5vdGhpbmcuIEJ1dCBpdCdzIGhhcmQgdG8gZGV0ZWN0IHRoYXQgZXZlbnQuXG4gICAgICAgICAgICAgICAgLy8gU28sIGRvaW5nIHRoZSBmb2xsb3dpbmcgZm9yICgxKSBkb2VzIG5vIGhhcm0uXG4gICAgICAgICAgICAgICAgY29uc3QgeyBwYXRobmFtZSAsIHF1ZXJ5ICB9ID0gdGhpcztcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVN0YXRlKCdyZXBsYWNlU3RhdGUnLCAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICBwYXRobmFtZTogKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgocGF0aG5hbWUpLFxuICAgICAgICAgICAgICAgICAgICBxdWVyeVxuICAgICAgICAgICAgICAgIH0pLCAoMCwgX3V0aWxzKS5nZXRVUkwoKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gX19OQSBpcyB1c2VkIHRvIGlkZW50aWZ5IGlmIHRoZSBoaXN0b3J5IGVudHJ5IGNhbiBiZSBoYW5kbGVkIGJ5IHRoZSBhcHAtcm91dGVyLlxuICAgICAgICAgICAgaWYgKHN0YXRlLl9fTkEpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFzdGF0ZS5fX04pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBTYWZhcmkgZmlyZXMgcG9wc3RhdGVldmVudCB3aGVuIHJlb3BlbmluZyB0aGUgYnJvd3Nlci5cbiAgICAgICAgICAgIGlmIChpc0ZpcnN0UG9wU3RhdGVFdmVudCAmJiB0aGlzLmxvY2FsZSA9PT0gc3RhdGUub3B0aW9ucy5sb2NhbGUgJiYgc3RhdGUuYXMgPT09IHRoaXMuYXNQYXRoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGZvcmNlZFNjcm9sbDtcbiAgICAgICAgICAgIGNvbnN0IHsgdXJsICwgYXMgLCBvcHRpb25zICwga2V5ICB9ID0gc3RhdGU7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1NDUk9MTF9SRVNUT1JBVElPTikge1xuICAgICAgICAgICAgICAgIGlmIChtYW51YWxTY3JvbGxSZXN0b3JhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fa2V5ICE9PSBrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNuYXBzaG90IGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uOlxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdfX25leHRfc2Nyb2xsXycgKyB0aGlzLl9rZXksIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogc2VsZi5wYWdlWE9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogc2VsZi5wYWdlWU9mZnNldFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXN0b3JlIG9sZCBzY3JvbGwgcG9zaXRpb246XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHYgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdfX25leHRfc2Nyb2xsXycgKyBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlZFNjcm9sbCA9IEpTT04ucGFyc2Uodik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlZFNjcm9sbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9rZXkgPSBrZXk7XG4gICAgICAgICAgICBjb25zdCB7IHBhdGhuYW1lICB9ID0gKDAsIF9wYXJzZVJlbGF0aXZlVXJsKS5wYXJzZVJlbGF0aXZlVXJsKHVybCk7XG4gICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgcmUtcmVuZGVyIG9uIGluaXRpYWwgbG9hZCxcbiAgICAgICAgICAgIC8vIGNhbiBiZSBjYXVzZWQgYnkgbmF2aWdhdGluZyBiYWNrIGZyb20gYW4gZXh0ZXJuYWwgc2l0ZVxuICAgICAgICAgICAgaWYgKHRoaXMuaXNTc3IgJiYgYXMgPT09ICgwLCBfYWRkQmFzZVBhdGgpLmFkZEJhc2VQYXRoKHRoaXMuYXNQYXRoKSAmJiBwYXRobmFtZSA9PT0gKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgodGhpcy5wYXRobmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJZiB0aGUgZG93bnN0cmVhbSBhcHBsaWNhdGlvbiByZXR1cm5zIGZhbHN5LCByZXR1cm4uXG4gICAgICAgICAgICAvLyBUaGV5IHdpbGwgdGhlbiBiZSByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhlIGV2ZW50LlxuICAgICAgICAgICAgaWYgKHRoaXMuX2JwcyAmJiAhdGhpcy5fYnBzKHN0YXRlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlKCdyZXBsYWNlU3RhdGUnLCB1cmwsIGFzLCBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zLCB7XG4gICAgICAgICAgICAgICAgc2hhbGxvdzogb3B0aW9ucy5zaGFsbG93ICYmIHRoaXMuX3NoYWxsb3csXG4gICAgICAgICAgICAgICAgbG9jYWxlOiBvcHRpb25zLmxvY2FsZSB8fCB0aGlzLmRlZmF1bHRMb2NhbGUsXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBpbnRlcm5hbCB2YWx1ZSBub3QgZXhwb3NlZCBvbiB0eXBlc1xuICAgICAgICAgICAgICAgIF9oOiAwXG4gICAgICAgICAgICB9KSwgZm9yY2VkU2Nyb2xsKTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gcmVwcmVzZW50cyB0aGUgY3VycmVudCBjb21wb25lbnQga2V5XG4gICAgICAgIGNvbnN0IHJvdXRlID0gKDAsIF9yZW1vdmVUcmFpbGluZ1NsYXNoKS5yZW1vdmVUcmFpbGluZ1NsYXNoKHBhdGhuYW1lMSk7XG4gICAgICAgIC8vIHNldCB1cCB0aGUgY29tcG9uZW50IGNhY2hlIChieSByb3V0ZSBrZXlzKVxuICAgICAgICB0aGlzLmNvbXBvbmVudHMgPSB7fTtcbiAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBrZWVwIHRoZSBjYWNoZSwgaWYgdGhlcmUncyBhbiBlcnJvclxuICAgICAgICAvLyBPdGhlcndpc2UsIHRoaXMgY2F1c2UgaXNzdWVzIHdoZW4gd2hlbiBnb2luZyBiYWNrIGFuZFxuICAgICAgICAvLyBjb21lIGFnYWluIHRvIHRoZSBlcnJvcmVkIHBhZ2UuXG4gICAgICAgIGlmIChwYXRobmFtZTEgIT09ICcvX2Vycm9yJykge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRzW3JvdXRlXSA9IHtcbiAgICAgICAgICAgICAgICBDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgaW5pdGlhbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBwcm9wczogaW5pdGlhbFByb3BzLFxuICAgICAgICAgICAgICAgIGVycixcbiAgICAgICAgICAgICAgICBfX05fU1NHOiBpbml0aWFsUHJvcHMgJiYgaW5pdGlhbFByb3BzLl9fTl9TU0csXG4gICAgICAgICAgICAgICAgX19OX1NTUDogaW5pdGlhbFByb3BzICYmIGluaXRpYWxQcm9wcy5fX05fU1NQLFxuICAgICAgICAgICAgICAgIF9fTl9SU0M6ICEhaXNSc2NcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb21wb25lbnRzWycvX2FwcCddID0ge1xuICAgICAgICAgICAgQ29tcG9uZW50OiBBcHAsXG4gICAgICAgICAgICBzdHlsZVNoZWV0czogW11cbiAgICAgICAgfTtcbiAgICAgICAgLy8gQmFja3dhcmRzIGNvbXBhdCBmb3IgUm91dGVyLnJvdXRlci5ldmVudHNcbiAgICAgICAgLy8gVE9ETzogU2hvdWxkIGJlIHJlbW92ZSB0aGUgZm9sbG93aW5nIG1ham9yIHZlcnNpb24gYXMgaXQgd2FzIG5ldmVyIGRvY3VtZW50ZWRcbiAgICAgICAgdGhpcy5ldmVudHMgPSBSb3V0ZXIuZXZlbnRzO1xuICAgICAgICB0aGlzLnBhZ2VMb2FkZXIgPSBwYWdlTG9hZGVyO1xuICAgICAgICAvLyBpZiBhdXRvIHByZXJlbmRlcmVkIGFuZCBkeW5hbWljIHJvdXRlIHdhaXQgdG8gdXBkYXRlIGFzUGF0aFxuICAgICAgICAvLyB1bnRpbCBhZnRlciBtb3VudCB0byBwcmV2ZW50IGh5ZHJhdGlvbiBtaXNtYXRjaFxuICAgICAgICBjb25zdCBhdXRvRXhwb3J0RHluYW1pYyA9ICgwLCBfaXNEeW5hbWljKS5pc0R5bmFtaWNSb3V0ZShwYXRobmFtZTEpICYmIHNlbGYuX19ORVhUX0RBVEFfXy5hdXRvRXhwb3J0O1xuICAgICAgICB0aGlzLmJhc2VQYXRoID0gcHJvY2Vzcy5lbnYuX19ORVhUX1JPVVRFUl9CQVNFUEFUSCB8fCAnJztcbiAgICAgICAgdGhpcy5zdWIgPSBzdWJzY3JpcHRpb247XG4gICAgICAgIHRoaXMuY2xjID0gbnVsbDtcbiAgICAgICAgdGhpcy5fd3JhcEFwcCA9IHdyYXBBcHA7XG4gICAgICAgIC8vIG1ha2Ugc3VyZSB0byBpZ25vcmUgZXh0cmEgcG9wU3RhdGUgaW4gc2FmYXJpIG9uIG5hdmlnYXRpbmdcbiAgICAgICAgLy8gYmFjayBmcm9tIGV4dGVybmFsIHNpdGVcbiAgICAgICAgdGhpcy5pc1NzciA9IHRydWU7XG4gICAgICAgIHRoaXMuaXNMb2NhbGVEb21haW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1JlYWR5ID0gISEoc2VsZi5fX05FWFRfREFUQV9fLmdzc3AgfHwgc2VsZi5fX05FWFRfREFUQV9fLmdpcCB8fCBzZWxmLl9fTkVYVF9EQVRBX18uYXBwR2lwICYmICFzZWxmLl9fTkVYVF9EQVRBX18uZ3NwIHx8ICFhdXRvRXhwb3J0RHluYW1pYyAmJiAhc2VsZi5sb2NhdGlvbi5zZWFyY2ggJiYgIXByb2Nlc3MuZW52Ll9fTkVYVF9IQVNfUkVXUklURVMpO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICAgICAgdGhpcy5sb2NhbGVzID0gbG9jYWxlcztcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdExvY2FsZSA9IGRlZmF1bHRMb2NhbGU7XG4gICAgICAgICAgICB0aGlzLmRvbWFpbkxvY2FsZXMgPSBkb21haW5Mb2NhbGVzO1xuICAgICAgICAgICAgdGhpcy5pc0xvY2FsZURvbWFpbiA9ICEhKDAsIF9kZXRlY3REb21haW5Mb2NhbGUpLmRldGVjdERvbWFpbkxvY2FsZShkb21haW5Mb2NhbGVzLCBzZWxmLmxvY2F0aW9uLmhvc3RuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgcm91dGUsXG4gICAgICAgICAgICBwYXRobmFtZTogcGF0aG5hbWUxLFxuICAgICAgICAgICAgcXVlcnk6IHF1ZXJ5MSxcbiAgICAgICAgICAgIGFzUGF0aDogYXV0b0V4cG9ydER5bmFtaWMgPyBwYXRobmFtZTEgOiBhczEsXG4gICAgICAgICAgICBpc1ByZXZpZXc6ICEhaXNQcmV2aWV3LFxuICAgICAgICAgICAgbG9jYWxlOiBwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUID8gbG9jYWxlIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgaXNGYWxsYmFja1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9pbml0aWFsTWF0Y2hlc01pZGRsZXdhcmVQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAvLyBtYWtlIHN1cmUgXCJhc1wiIGRvZXNuJ3Qgc3RhcnQgd2l0aCBkb3VibGUgc2xhc2hlcyBvciBlbHNlIGl0IGNhblxuICAgICAgICAgICAgLy8gdGhyb3cgYW4gZXJyb3IgYXMgaXQncyBjb25zaWRlcmVkIGludmFsaWRcbiAgICAgICAgICAgIGlmICghYXMxLnN0YXJ0c1dpdGgoJy8vJykpIHtcbiAgICAgICAgICAgICAgICAvLyBpbiBvcmRlciBmb3IgYGUuc3RhdGVgIHRvIHdvcmsgb24gdGhlIGBvbnBvcHN0YXRlYCBldmVudFxuICAgICAgICAgICAgICAgIC8vIHdlIGhhdmUgdG8gcmVnaXN0ZXIgdGhlIGluaXRpYWwgcm91dGUgdXBvbiBpbml0aWFsaXphdGlvblxuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgYXNQYXRoID0gKDAsIF91dGlscykuZ2V0VVJMKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5faW5pdGlhbE1hdGNoZXNNaWRkbGV3YXJlUHJvbWlzZSA9IG1hdGNoZXNNaWRkbGV3YXJlKHtcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiB0aGlzLFxuICAgICAgICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgIGFzUGF0aFxuICAgICAgICAgICAgICAgIH0pLnRoZW4oKG1hdGNoZXMpPT57XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuX3Nob3VsZFJlc29sdmVIcmVmID0gYXMxICE9PSBwYXRobmFtZTE7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlU3RhdGUoJ3JlcGxhY2VTdGF0ZScsIG1hdGNoZXMgPyBhc1BhdGggOiAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWU6ICgwLCBfYWRkQmFzZVBhdGgpLmFkZEJhc2VQYXRoKHBhdGhuYW1lMSksXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVyeTogcXVlcnkxXG4gICAgICAgICAgICAgICAgICAgIH0pLCBhc1BhdGgsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hlcztcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwb3BzdGF0ZScsIHRoaXMub25Qb3BTdGF0ZSk7XG4gICAgICAgICAgICAvLyBlbmFibGUgY3VzdG9tIHNjcm9sbCByZXN0b3JhdGlvbiBoYW5kbGluZyB3aGVuIGF2YWlsYWJsZVxuICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGZhbGxiYWNrIHRvIGJyb3dzZXIncyBkZWZhdWx0IGhhbmRsaW5nXG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1NDUk9MTF9SRVNUT1JBVElPTikge1xuICAgICAgICAgICAgICAgIGlmIChtYW51YWxTY3JvbGxSZXN0b3JhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuaGlzdG9yeS5zY3JvbGxSZXN0b3JhdGlvbiA9ICdtYW51YWwnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblJvdXRlci5ldmVudHMgPSAoMCwgX21pdHQpLmRlZmF1bHQoKTtcbmZ1bmN0aW9uIG1hdGNoZXNNaWRkbGV3YXJlKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG9wdGlvbnMucm91dGVyLnBhZ2VMb2FkZXIuZ2V0TWlkZGxld2FyZUxpc3QoKSkudGhlbigoaXRlbXMpPT57XG4gICAgICAgIGNvbnN0IHsgcGF0aG5hbWU6IGFzUGF0aG5hbWUgIH0gPSAoMCwgX3BhcnNlUGF0aCkucGFyc2VQYXRoKG9wdGlvbnMuYXNQYXRoKTtcbiAgICAgICAgY29uc3QgY2xlYW5lZEFzID0gKDAsIF9oYXNCYXNlUGF0aCkuaGFzQmFzZVBhdGgoYXNQYXRobmFtZSkgPyAoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChhc1BhdGhuYW1lKSA6IGFzUGF0aG5hbWU7XG4gICAgICAgIHJldHVybiAhIShpdGVtcyA9PSBudWxsID8gdm9pZCAwIDogaXRlbXMuc29tZSgoW3JlZ2V4LCBzc3JdKT0+e1xuICAgICAgICAgICAgcmV0dXJuICFzc3IgJiYgbmV3IFJlZ0V4cChyZWdleCkudGVzdCgoMCwgX2FkZExvY2FsZSkuYWRkTG9jYWxlKGNsZWFuZWRBcywgb3B0aW9ucy5sb2NhbGUpKTtcbiAgICAgICAgfSkpO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gd2l0aE1pZGRsZXdhcmVFZmZlY3RzKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbWF0Y2hlc01pZGRsZXdhcmUob3B0aW9ucykudGhlbigobWF0Y2hlcyk9PntcbiAgICAgICAgaWYgKG1hdGNoZXMgJiYgb3B0aW9ucy5mZXRjaERhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmZldGNoRGF0YSgpLnRoZW4oKGRhdGEpPT5nZXRNaWRkbGV3YXJlRGF0YShkYXRhLmRhdGFIcmVmLCBkYXRhLnJlc3BvbnNlLCBvcHRpb25zKS50aGVuKChlZmZlY3QpPT4oe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUhyZWY6IGRhdGEuZGF0YUhyZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uOiBkYXRhLmpzb24sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZTogZGF0YS5yZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGRhdGEudGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVmZmVjdFxuICAgICAgICAgICAgICAgICAgICB9KSkpLmNhdGNoKChfZXJyKT0+e1xuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIFRPRE86IFJldmlzaXQgdGhpcyBpbiB0aGUgZnV0dXJlLlxuICAgICAgICAgICAqIEZvciBub3cgd2Ugd2lsbCBub3QgY29uc2lkZXIgbWlkZGxld2FyZSBkYXRhIGVycm9ycyB0byBiZSBmYXRhbC5cbiAgICAgICAgICAgKiBtYXliZSB3ZSBzaG91bGQgcmV2aXNpdCBpbiB0aGUgZnV0dXJlLlxuICAgICAgICAgICAqLyByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZ2V0TWlkZGxld2FyZURhdGEoc291cmNlLCByZXNwb25zZSwgb3B0aW9ucykge1xuICAgIGNvbnN0IG5leHRDb25maWcgPSB7XG4gICAgICAgIGJhc2VQYXRoOiBvcHRpb25zLnJvdXRlci5iYXNlUGF0aCxcbiAgICAgICAgaTE4bjoge1xuICAgICAgICAgICAgbG9jYWxlczogb3B0aW9ucy5yb3V0ZXIubG9jYWxlc1xuICAgICAgICB9LFxuICAgICAgICB0cmFpbGluZ1NsYXNoOiBCb29sZWFuKHByb2Nlc3MuZW52Ll9fTkVYVF9UUkFJTElOR19TTEFTSClcbiAgICB9O1xuICAgIGNvbnN0IHJld3JpdGVIZWFkZXIgPSByZXNwb25zZS5oZWFkZXJzLmdldCgneC1uZXh0anMtcmV3cml0ZScpO1xuICAgIGxldCByZXdyaXRlVGFyZ2V0ID0gcmV3cml0ZUhlYWRlciB8fCByZXNwb25zZS5oZWFkZXJzLmdldCgneC1uZXh0anMtbWF0Y2hlZC1wYXRoJyk7XG4gICAgY29uc3QgbWF0Y2hlZFBhdGggPSByZXNwb25zZS5oZWFkZXJzLmdldCgneC1tYXRjaGVkLXBhdGgnKTtcbiAgICBpZiAoIXJld3JpdGVUYXJnZXQgJiYgIShtYXRjaGVkUGF0aCA9PSBudWxsID8gdm9pZCAwIDogbWF0Y2hlZFBhdGguaW5jbHVkZXMoJ19fbmV4dF9kYXRhX2NhdGNoYWxsJykpKSB7XG4gICAgICAgIHJld3JpdGVUYXJnZXQgPSBtYXRjaGVkUGF0aDtcbiAgICB9XG4gICAgaWYgKHJld3JpdGVUYXJnZXQpIHtcbiAgICAgICAgaWYgKHJld3JpdGVUYXJnZXQuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWRSZXdyaXRlVGFyZ2V0ID0gKDAsIF9wYXJzZVJlbGF0aXZlVXJsKS5wYXJzZVJlbGF0aXZlVXJsKHJld3JpdGVUYXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgcGF0aG5hbWVJbmZvID0gKDAsIF9nZXROZXh0UGF0aG5hbWVJbmZvKS5nZXROZXh0UGF0aG5hbWVJbmZvKHBhcnNlZFJld3JpdGVUYXJnZXQucGF0aG5hbWUsIHtcbiAgICAgICAgICAgICAgICBuZXh0Q29uZmlnLFxuICAgICAgICAgICAgICAgIHBhcnNlRGF0YTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBmc1BhdGhuYW1lID0gKDAsIF9yZW1vdmVUcmFpbGluZ1NsYXNoKS5yZW1vdmVUcmFpbGluZ1NsYXNoKHBhdGhuYW1lSW5mby5wYXRobmFtZSk7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgICAgIG9wdGlvbnMucm91dGVyLnBhZ2VMb2FkZXIuZ2V0UGFnZUxpc3QoKSxcbiAgICAgICAgICAgICAgICAoMCwgX3JvdXRlTG9hZGVyKS5nZXRDbGllbnRCdWlsZE1hbmlmZXN0KCksIFxuICAgICAgICAgICAgXSkudGhlbigoW3BhZ2VzLCB7IF9fcmV3cml0ZXM6IHJld3JpdGVzICB9XSk9PntcbiAgICAgICAgICAgICAgICBsZXQgYXMgPSAoMCwgX2FkZExvY2FsZSkuYWRkTG9jYWxlKHBhdGhuYW1lSW5mby5wYXRobmFtZSwgcGF0aG5hbWVJbmZvLmxvY2FsZSk7XG4gICAgICAgICAgICAgICAgaWYgKCgwLCBfaXNEeW5hbWljKS5pc0R5bmFtaWNSb3V0ZShhcykgfHwgIXJld3JpdGVIZWFkZXIgJiYgcGFnZXMuaW5jbHVkZXMoKDAsIF9ub3JtYWxpemVMb2NhbGVQYXRoKS5ub3JtYWxpemVMb2NhbGVQYXRoKCgwLCBfcmVtb3ZlQmFzZVBhdGgpLnJlbW92ZUJhc2VQYXRoKGFzKSwgb3B0aW9ucy5yb3V0ZXIubG9jYWxlcykucGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZFNvdXJjZSA9ICgwLCBfZ2V0TmV4dFBhdGhuYW1lSW5mbykuZ2V0TmV4dFBhdGhuYW1lSW5mbygoMCwgX3BhcnNlUmVsYXRpdmVVcmwpLnBhcnNlUmVsYXRpdmVVcmwoc291cmNlKS5wYXRobmFtZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VEYXRhOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBhcyA9ICgwLCBfYWRkQmFzZVBhdGgpLmFkZEJhc2VQYXRoKHBhcnNlZFNvdXJjZS5wYXRobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZFJld3JpdGVUYXJnZXQucGF0aG5hbWUgPSBhcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9IQVNfUkVXUklURVMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gKDAsIF9yZXNvbHZlUmV3cml0ZXMpLmRlZmF1bHQoYXMsIHBhZ2VzLCByZXdyaXRlcywgcGFyc2VkUmV3cml0ZVRhcmdldC5xdWVyeSwgKHBhdGgpPT5yZXNvbHZlRHluYW1pY1JvdXRlKHBhdGgsIHBhZ2VzKSwgb3B0aW9ucy5yb3V0ZXIubG9jYWxlcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubWF0Y2hlZFBhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFJld3JpdGVUYXJnZXQucGF0aG5hbWUgPSByZXN1bHQucGFyc2VkQXMucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcyA9IHBhcnNlZFJld3JpdGVUYXJnZXQucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHBhcnNlZFJld3JpdGVUYXJnZXQucXVlcnksIHJlc3VsdC5wYXJzZWRBcy5xdWVyeSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRIcmVmID0gIXBhZ2VzLmluY2x1ZGVzKGZzUGF0aG5hbWUpID8gcmVzb2x2ZUR5bmFtaWNSb3V0ZSgoMCwgX25vcm1hbGl6ZUxvY2FsZVBhdGgpLm5vcm1hbGl6ZUxvY2FsZVBhdGgoKDAsIF9yZW1vdmVCYXNlUGF0aCkucmVtb3ZlQmFzZVBhdGgocGFyc2VkUmV3cml0ZVRhcmdldC5wYXRobmFtZSksIG9wdGlvbnMucm91dGVyLmxvY2FsZXMpLnBhdGhuYW1lLCBwYWdlcykgOiBmc1BhdGhuYW1lO1xuICAgICAgICAgICAgICAgIGlmICgoMCwgX2lzRHluYW1pYykuaXNEeW5hbWljUm91dGUocmVzb2x2ZWRIcmVmKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGVzID0gKDAsIF9yb3V0ZU1hdGNoZXIpLmdldFJvdXRlTWF0Y2hlcigoMCwgX3JvdXRlUmVnZXgpLmdldFJvdXRlUmVnZXgocmVzb2x2ZWRIcmVmKSkoYXMpO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHBhcnNlZFJld3JpdGVUYXJnZXQucXVlcnksIG1hdGNoZXMgfHwge30pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAncmV3cml0ZScsXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZEFzOiBwYXJzZWRSZXdyaXRlVGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZEhyZWZcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3JjID0gKDAsIF9wYXJzZVBhdGgpLnBhcnNlUGF0aChzb3VyY2UpO1xuICAgICAgICBjb25zdCBwYXRobmFtZSA9ICgwLCBfZm9ybWF0TmV4dFBhdGhuYW1lSW5mbykuZm9ybWF0TmV4dFBhdGhuYW1lSW5mbyhfZXh0ZW5kcyh7fSwgKDAsIF9nZXROZXh0UGF0aG5hbWVJbmZvKS5nZXROZXh0UGF0aG5hbWVJbmZvKHNyYy5wYXRobmFtZSwge1xuICAgICAgICAgICAgbmV4dENvbmZpZyxcbiAgICAgICAgICAgIHBhcnNlRGF0YTogdHJ1ZVxuICAgICAgICB9KSwge1xuICAgICAgICAgICAgZGVmYXVsdExvY2FsZTogb3B0aW9ucy5yb3V0ZXIuZGVmYXVsdExvY2FsZSxcbiAgICAgICAgICAgIGJ1aWxkSWQ6ICcnXG4gICAgICAgIH0pKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgICB0eXBlOiAncmVkaXJlY3QtZXh0ZXJuYWwnLFxuICAgICAgICAgICAgZGVzdGluYXRpb246IGAke3BhdGhuYW1lfSR7c3JjLnF1ZXJ5fSR7c3JjLmhhc2h9YFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgcmVkaXJlY3RUYXJnZXQgPSByZXNwb25zZS5oZWFkZXJzLmdldCgneC1uZXh0anMtcmVkaXJlY3QnKTtcbiAgICBpZiAocmVkaXJlY3RUYXJnZXQpIHtcbiAgICAgICAgaWYgKHJlZGlyZWN0VGFyZ2V0LnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICAgICAgY29uc3Qgc3JjID0gKDAsIF9wYXJzZVBhdGgpLnBhcnNlUGF0aChyZWRpcmVjdFRhcmdldCk7XG4gICAgICAgICAgICBjb25zdCBwYXRobmFtZSA9ICgwLCBfZm9ybWF0TmV4dFBhdGhuYW1lSW5mbykuZm9ybWF0TmV4dFBhdGhuYW1lSW5mbyhfZXh0ZW5kcyh7fSwgKDAsIF9nZXROZXh0UGF0aG5hbWVJbmZvKS5nZXROZXh0UGF0aG5hbWVJbmZvKHNyYy5wYXRobmFtZSwge1xuICAgICAgICAgICAgICAgIG5leHRDb25maWcsXG4gICAgICAgICAgICAgICAgcGFyc2VEYXRhOiB0cnVlXG4gICAgICAgICAgICB9KSwge1xuICAgICAgICAgICAgICAgIGRlZmF1bHRMb2NhbGU6IG9wdGlvbnMucm91dGVyLmRlZmF1bHRMb2NhbGUsXG4gICAgICAgICAgICAgICAgYnVpbGRJZDogJydcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdyZWRpcmVjdC1pbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgbmV3QXM6IGAke3BhdGhuYW1lfSR7c3JjLnF1ZXJ5fSR7c3JjLmhhc2h9YCxcbiAgICAgICAgICAgICAgICBuZXdVcmw6IGAke3BhdGhuYW1lfSR7c3JjLnF1ZXJ5fSR7c3JjLmhhc2h9YFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgICB0eXBlOiAncmVkaXJlY3QtZXh0ZXJuYWwnLFxuICAgICAgICAgICAgZGVzdGluYXRpb246IHJlZGlyZWN0VGFyZ2V0XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgdHlwZTogJ25leHQnXG4gICAgfSk7XG59XG5leHBvcnRzLmRlZmF1bHQgPSBSb3V0ZXI7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJvdXRlci5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJpc0xvY2FsVVJMIiwiaW50ZXJwb2xhdGVBcyIsInJlc29sdmVIcmVmIiwiY3JlYXRlS2V5IiwiZGVmYXVsdCIsIl9ub3JtYWxpemVUcmFpbGluZ1NsYXNoIiwicmVxdWlyZSIsIl9yZW1vdmVUcmFpbGluZ1NsYXNoIiwiX3JvdXRlTG9hZGVyIiwiX3NjcmlwdCIsIl9pc0Vycm9yIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfZGVub3JtYWxpemVQYWdlUGF0aCIsIl9ub3JtYWxpemVMb2NhbGVQYXRoIiwiX21pdHQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3V0aWxzIiwiX2lzRHluYW1pYyIsIl9wYXJzZVJlbGF0aXZlVXJsIiwiX3F1ZXJ5c3RyaW5nIiwiX3Jlc29sdmVSZXdyaXRlcyIsIl9yb3V0ZU1hdGNoZXIiLCJfcm91dGVSZWdleCIsIl9mb3JtYXRVcmwiLCJfZGV0ZWN0RG9tYWluTG9jYWxlIiwiX3BhcnNlUGF0aCIsIl9hZGRMb2NhbGUiLCJfcmVtb3ZlTG9jYWxlIiwiX3JlbW92ZUJhc2VQYXRoIiwiX2FkZEJhc2VQYXRoIiwiX2hhc0Jhc2VQYXRoIiwiX2dldE5leHRQYXRobmFtZUluZm8iLCJfZm9ybWF0TmV4dFBhdGhuYW1lSW5mbyIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsInJlc29sdmUiLCJyZWplY3QiLCJfbmV4dCIsIl90aHJvdyIsImtleSIsImFyZyIsImluZm8iLCJlcnJvciIsImRvbmUiLCJQcm9taXNlIiwidGhlbiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiZm4iLCJzZWxmIiwiYXJncyIsImFyZ3VtZW50cyIsImFwcGx5IiwiZXJyIiwidW5kZWZpbmVkIiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJ0YXJnZXQiLCJpIiwibGVuZ3RoIiwic291cmNlIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwib2JqIiwiX19lc01vZHVsZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIldlYWtNYXAiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImRlc2MiLCJzZXQiLCJidWlsZENhbmNlbGxhdGlvbkVycm9yIiwiRXJyb3IiLCJjYW5jZWxsZWQiLCJ1cmwiLCJpc0Fic29sdXRlVXJsIiwibG9jYXRpb25PcmlnaW4iLCJnZXRMb2NhdGlvbk9yaWdpbiIsInJlc29sdmVkIiwiVVJMIiwib3JpZ2luIiwiaGFzQmFzZVBhdGgiLCJwYXRobmFtZSIsIl8iLCJyb3V0ZSIsImFzUGF0aG5hbWUiLCJxdWVyeSIsImludGVycG9sYXRlZFJvdXRlIiwiZHluYW1pY1JlZ2V4IiwiZ2V0Um91dGVSZWdleCIsImR5bmFtaWNHcm91cHMiLCJncm91cHMiLCJkeW5hbWljTWF0Y2hlcyIsImdldFJvdXRlTWF0Y2hlciIsInBhcmFtcyIsImtleXMiLCJldmVyeSIsInBhcmFtIiwicmVwZWF0Iiwib3B0aW9uYWwiLCJyZXBsYWNlZCIsIkFycmF5IiwiaXNBcnJheSIsInJlcGxhY2UiLCJtYXAiLCJzZWdtZW50IiwiZW5jb2RlVVJJQ29tcG9uZW50Iiwiam9pbiIsInJlc3VsdCIsIm9taXQiLCJvYmplY3QiLCJvbWl0dGVkIiwiZm9yRWFjaCIsImluY2x1ZGVzIiwicm91dGVyIiwiaHJlZiIsInJlc29sdmVBcyIsImJhc2UiLCJ1cmxBc1N0cmluZyIsImZvcm1hdFdpdGhWYWxpZGF0aW9uIiwidXJsUHJvdG9NYXRjaCIsIm1hdGNoIiwidXJsQXNTdHJpbmdOb1Byb3RvIiwic2xpY2UiLCJ1cmxQYXJ0cyIsInNwbGl0IiwiY29uc29sZSIsIm5vcm1hbGl6ZWRVcmwiLCJub3JtYWxpemVSZXBlYXRlZFNsYXNoZXMiLCJzdGFydHNXaXRoIiwiYXNQYXRoIiwiZmluYWxVcmwiLCJub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaCIsImludGVycG9sYXRlZEFzIiwiaXNEeW5hbWljUm91dGUiLCJzZWFyY2hQYXJhbXMiLCJzZWFyY2hQYXJhbXNUb1VybFF1ZXJ5IiwiaGFzaCIsInJlc29sdmVkSHJlZiIsIl8xIiwic3RyaXBPcmlnaW4iLCJzdWJzdHJpbmciLCJwcmVwYXJlVXJsQXMiLCJhcyIsInJlc29sdmVkQXMiLCJocmVmSGFkT3JpZ2luIiwiYXNIYWRPcmlnaW4iLCJwcmVwYXJlZFVybCIsImFkZEJhc2VQYXRoIiwicHJlcGFyZWRBcyIsInJlc29sdmVEeW5hbWljUm91dGUiLCJwYWdlcyIsImNsZWFuUGF0aG5hbWUiLCJyZW1vdmVUcmFpbGluZ1NsYXNoIiwiZGVub3JtYWxpemVQYWdlUGF0aCIsInNvbWUiLCJwYWdlIiwicmUiLCJ0ZXN0IiwibWFudWFsU2Nyb2xsUmVzdG9yYXRpb24iLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1NDUk9MTF9SRVNUT1JBVElPTiIsIndpbmRvdyIsImhpc3RvcnkiLCJ2Iiwic2Vzc2lvblN0b3JhZ2UiLCJzZXRJdGVtIiwicmVtb3ZlSXRlbSIsIm4iLCJTU0dfREFUQV9OT1RfRk9VTkQiLCJTeW1ib2wiLCJmZXRjaFJldHJ5IiwiYXR0ZW1wdHMiLCJvcHRpb25zIiwiZmV0Y2giLCJjcmVkZW50aWFscyIsIm1ldGhvZCIsImhlYWRlcnMiLCJyZXNwb25zZSIsIm9rIiwic3RhdHVzIiwiYmFja2dyb3VuZENhY2hlIiwiZmV0Y2hOZXh0RGF0YSIsImRhdGFIcmVmIiwiaW5mbGlnaHRDYWNoZSIsImlzUHJlZmV0Y2giLCJoYXNNaWRkbGV3YXJlIiwiaXNTZXJ2ZXJSZW5kZXIiLCJwYXJzZUpTT04iLCJwZXJzaXN0Q2FjaGUiLCJpc0JhY2tncm91bmQiLCJ1bnN0YWJsZV9za2lwQ2xpZW50Q2FjaGUiLCJsb2NhdGlvbiIsImNhY2hlS2V5IiwicmVmMSIsImdldERhdGEiLCJwdXJwb3NlIiwidGV4dCIsImpzb24iLCJyZWYiLCJ0cnlUb1BhcnNlQXNKU09OIiwibm90Rm91bmQiLCJtYXJrQXNzZXRFcnJvciIsImRhdGEiLCJjYXRjaCIsIkpTT04iLCJwYXJzZSIsIk1hdGgiLCJyYW5kb20iLCJ0b1N0cmluZyIsImhhbmRsZUhhcmROYXZpZ2F0aW9uIiwiYWRkTG9jYWxlIiwibG9jYWxlIiwiZ2V0Q2FuY2VsbGVkSGFuZGxlciIsImNhbmNlbCIsImNsYyIsImhhbmRsZUNhbmNlbGxlZCIsIlJvdXRlciIsInBhdGhuYW1lMSIsInF1ZXJ5MSIsImFzMSIsImluaXRpYWxQcm9wcyIsInBhZ2VMb2FkZXIiLCJBcHAiLCJ3cmFwQXBwIiwiQ29tcG9uZW50Iiwic3Vic2NyaXB0aW9uIiwiaXNGYWxsYmFjayIsImxvY2FsZXMiLCJkZWZhdWx0TG9jYWxlIiwiZG9tYWluTG9jYWxlcyIsImlzUHJldmlldyIsImlzUnNjIiwic2RjIiwiaXNGaXJzdFBvcFN0YXRlRXZlbnQiLCJfa2V5Iiwib25Qb3BTdGF0ZSIsImUiLCJzdGF0ZSIsImNoYW5nZVN0YXRlIiwiZ2V0VVJMIiwiX19OQSIsInJlbG9hZCIsIl9fTiIsImZvcmNlZFNjcm9sbCIsInN0cmluZ2lmeSIsIngiLCJwYWdlWE9mZnNldCIsInkiLCJwYWdlWU9mZnNldCIsImdldEl0ZW0iLCJlMSIsInBhcnNlUmVsYXRpdmVVcmwiLCJpc1NzciIsIl9icHMiLCJjaGFuZ2UiLCJzaGFsbG93IiwiX3NoYWxsb3ciLCJfaCIsImNvbXBvbmVudHMiLCJpbml0aWFsIiwicHJvcHMiLCJfX05fU1NHIiwiX19OX1NTUCIsIl9fTl9SU0MiLCJzdHlsZVNoZWV0cyIsImV2ZW50cyIsImF1dG9FeHBvcnREeW5hbWljIiwiX19ORVhUX0RBVEFfXyIsImF1dG9FeHBvcnQiLCJiYXNlUGF0aCIsIl9fTkVYVF9ST1VURVJfQkFTRVBBVEgiLCJzdWIiLCJfd3JhcEFwcCIsImlzTG9jYWxlRG9tYWluIiwiaXNSZWFkeSIsImdzc3AiLCJnaXAiLCJhcHBHaXAiLCJnc3AiLCJzZWFyY2giLCJfX05FWFRfSEFTX1JFV1JJVEVTIiwiX19ORVhUX0kxOE5fU1VQUE9SVCIsImRldGVjdERvbWFpbkxvY2FsZSIsImhvc3RuYW1lIiwiX2luaXRpYWxNYXRjaGVzTWlkZGxld2FyZVByb21pc2UiLCJtYXRjaGVzTWlkZGxld2FyZSIsIm1hdGNoZXMiLCJfc2hvdWxkUmVzb2x2ZUhyZWYiLCJhZGRFdmVudExpc3RlbmVyIiwic2Nyb2xsUmVzdG9yYXRpb24iLCJiYWNrIiwicHVzaCIsIl90aGlzIiwiaXNRdWVyeVVwZGF0aW5nIiwic2hvdWxkUmVzb2x2ZUhyZWYiLCJuZXh0U3RhdGUiLCJwcmV2TG9jYWxlIiwicGFyc2VkQXMiLCJsb2NhbGVQYXRoUmVzdWx0IiwiZGlkTmF2aWdhdGUiLCJkZXRlY3RlZERvbWFpbiIsImFzTm9CYXNlUGF0aCIsInNjcm9sbCIsInJvdXRlUHJvcHMiLCJjbGVhbmVkQXMiLCJsb2NhbGVDaGFuZ2UiLCJwYXJzZWQiLCJyZXdyaXRlcyIsImlzTWlkZGxld2FyZU1hdGNoIiwicmV3cml0ZXNSZXN1bHQiLCJyb3V0ZU1hdGNoIiwicm91dGVSZWdleCIsInNob3VsZEludGVycG9sYXRlIiwibWlzc2luZ1BhcmFtcyIsInJlZjIiLCJyZWYzIiwicm91dGVJbmZvIiwicHJlZml4ZWRBcyIsInJld3JpdGVBcyIsImxvY2FsZVJlc3VsdCIsImN1clJvdXRlTWF0Y2giLCJjb21wb25lbnQiLCJzY3JpcHRzIiwiZGVzdGluYXRpb24iLCJwYXJzZWRIcmVmIiwibmV3VXJsIiwibmV3QXMiLCJub3RGb3VuZFJvdXRlIiwiX3JvdXRlIiwiaXNWYWxpZFNoYWxsb3dSb3V0ZSIsIl9zY3JvbGwiLCJzaG91bGRTY3JvbGwiLCJyZXNldFNjcm9sbCIsImhhc2hSZWdleCIsInBhcnNlUGF0aCIsInJlbW92ZUJhc2VQYXRoIiwibm9ybWFsaXplTG9jYWxlUGF0aCIsImRldGVjdGVkTG9jYWxlIiwiZG9tYWluIiwiaHR0cCIsIlNUIiwicGVyZm9ybWFuY2UiLCJtYXJrIiwiX2luRmxpZ2h0Um91dGUiLCJlbWl0IiwicmVtb3ZlTG9jYWxlIiwib25seUFIYXNoQ2hhbmdlIiwic2Nyb2xsVG9IYXNoIiwiYWxsIiwiZ2V0UGFnZUxpc3QiLCJnZXRDbGllbnRCdWlsZE1hbmlmZXN0IiwiZ2V0TWlkZGxld2FyZUxpc3QiLCJfX3Jld3JpdGVzIiwidXJsSXNOZXciLCJwIiwiZXh0ZXJuYWxEZXN0IiwibWF0Y2hlZFBhZ2UiLCJmaWx0ZXIiLCJ3YXJuIiwiZ2V0Um91dGVJbmZvIiwidHlwZSIsInVuc3RhYmxlX3NjcmlwdExvYWRlciIsImNvbmNhdCIsInNjcmlwdCIsImhhbmRsZUNsaWVudFNjcmlwdExvYWQiLCJwYWdlUHJvcHMiLCJfX05fUkVESVJFQ1QiLCJfX05fUkVESVJFQ1RfQkFTRV9QQVRIIiwiX19OX1BSRVZJRVciLCJmZXRjaENvbXBvbmVudCIsInN0YXR1c0NvZGUiLCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIsImxhbmciLCJlcnIxIiwiaGFuZGxlUm91dGVJbmZvRXJyb3IiLCJsb2FkRXJyb3JGYWlsIiwiaXNBc3NldEVycm9yIiwiZ2V0SW5pdGlhbFByb3BzIiwicm91dGVJbmZvRXJyIiwicmVxdWVzdGVkUm91dGUiLCJyZWY0IiwicmVmNSIsImV4aXN0aW5nSW5mbyIsImNhY2hlZFJvdXRlSW5mbyIsImZldGNoTmV4dERhdGFQYXJhbXMiLCJpc1ZhbGlkRWxlbWVudFR5cGUiLCJ1c2VTdHJlYW1lZEZsaWdodERhdGEiLCJzaG91bGRGZXRjaERhdGEiLCJmbGlnaHRJbmZvIiwiZ2V0RGF0YUhyZWYiLCJza2lwSW50ZXJwb2xhdGlvbiIsIndpdGhNaWRkbGV3YXJlRWZmZWN0cyIsImZldGNoRGF0YSIsImVmZmVjdCIsInJlcyIsIm1vZCIsIl9fbmV4dF9yc2NfXyIsIl9nZXREYXRhIiwiX2dldEZsaWdodERhdGEiLCJfX2ZsaWdodF9fIiwiZ2V0UHJvcGVyRXJyb3IiLCJiZWZvcmVQb3BTdGF0ZSIsImNiIiwib2xkVXJsTm9IYXNoIiwib2xkSGFzaCIsIm5ld1VybE5vSGFzaCIsIm5ld0hhc2giLCJzY3JvbGxUbyIsInJhd0hhc2giLCJkZWNvZGVVUklDb21wb25lbnQiLCJpZEVsIiwiZ2V0RWxlbWVudEJ5SWQiLCJzY3JvbGxJbnRvVmlldyIsIm5hbWVFbCIsImdldEVsZW1lbnRzQnlOYW1lIiwicHJlZmV0Y2giLCJfaXNTc2ciLCJpc1NzZyIsInByaW9yaXR5IiwiY29tcG9uZW50UmVzdWx0IiwibG9hZFBhZ2UiLCJjdHgiLCJBcHBUcmVlIiwibG9hZEdldEluaXRpYWxQcm9wcyIsIml0ZW1zIiwicmVnZXgiLCJzc3IiLCJSZWdFeHAiLCJnZXRNaWRkbGV3YXJlRGF0YSIsIl9lcnIiLCJuZXh0Q29uZmlnIiwiaTE4biIsInRyYWlsaW5nU2xhc2giLCJCb29sZWFuIiwiX19ORVhUX1RSQUlMSU5HX1NMQVNIIiwicmV3cml0ZUhlYWRlciIsInJld3JpdGVUYXJnZXQiLCJtYXRjaGVkUGF0aCIsInBhcnNlZFJld3JpdGVUYXJnZXQiLCJwYXRobmFtZUluZm8iLCJnZXROZXh0UGF0aG5hbWVJbmZvIiwicGFyc2VEYXRhIiwiZnNQYXRobmFtZSIsInBhcnNlZFNvdXJjZSIsInBhdGgiLCJzcmMiLCJmb3JtYXROZXh0UGF0aG5hbWVJbmZvIiwiYnVpbGRJZCIsInJlZGlyZWN0VGFyZ2V0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../node_modules/next/dist/shared/lib/router/router.js\n"));
+eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar _classCallCheck = (__webpack_require__(/*! @swc/helpers/lib/_class_call_check.js */ \"../node_modules/@swc/helpers/lib/_class_call_check.js\")[\"default\"]);\nvar _createClass = (__webpack_require__(/*! @swc/helpers/lib/_create_class.js */ \"../node_modules/@swc/helpers/lib/_create_class.js\")[\"default\"]);\nvar _interopRequireDefault = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _slicedToArray = (__webpack_require__(/*! @swc/helpers/lib/_sliced_to_array.js */ \"../node_modules/@swc/helpers/lib/_sliced_to_array.js\")[\"default\"]);\nvar _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs = /*#__PURE__*/ _interopRequireDefault(__webpack_require__(/*! ../node_modules/next/dist/compiled/regenerator-runtime/runtime.js */ \"../node_modules/next/dist/compiled/regenerator-runtime/runtime.js\"));\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.isLocalURL = isLocalURL;\nexports.interpolateAs = interpolateAs;\nexports.resolveHref = resolveHref;\nexports.createKey = createKey;\nexports[\"default\"] = void 0;\nvar _normalizeTrailingSlash = __webpack_require__(/*! ../../../client/normalize-trailing-slash */ \"../node_modules/next/dist/client/normalize-trailing-slash.js\");\nvar _removeTrailingSlash = __webpack_require__(/*! ./utils/remove-trailing-slash */ \"../node_modules/next/dist/shared/lib/router/utils/remove-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 */ \"../node_modules/next/dist/shared/lib/page-path/denormalize-page-path.js\");\nvar _normalizeLocalePath = __webpack_require__(/*! ../i18n/normalize-locale-path */ \"../node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js\");\nvar _mitt = _interopRequireDefault1(__webpack_require__(/*! ../mitt */ \"../node_modules/next/dist/shared/lib/mitt.js\"));\nvar _utils = __webpack_require__(/*! ../utils */ \"../node_modules/next/dist/shared/lib/utils.js\");\nvar _isDynamic = __webpack_require__(/*! ./utils/is-dynamic */ \"../node_modules/next/dist/shared/lib/router/utils/is-dynamic.js\");\nvar _parseRelativeUrl = __webpack_require__(/*! ./utils/parse-relative-url */ \"../node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js\");\nvar _querystring = __webpack_require__(/*! ./utils/querystring */ \"../node_modules/next/dist/shared/lib/router/utils/querystring.js\");\nvar _resolveRewrites = _interopRequireDefault1(__webpack_require__(/*! ./utils/resolve-rewrites */ \"?36cb\"));\nvar _routeMatcher = __webpack_require__(/*! ./utils/route-matcher */ \"../node_modules/next/dist/shared/lib/router/utils/route-matcher.js\");\nvar _routeRegex = __webpack_require__(/*! ./utils/route-regex */ \"../node_modules/next/dist/shared/lib/router/utils/route-regex.js\");\nvar _formatUrl = __webpack_require__(/*! ./utils/format-url */ \"../node_modules/next/dist/shared/lib/router/utils/format-url.js\");\nvar _detectDomainLocale = __webpack_require__(/*! ../../../client/detect-domain-locale */ \"../node_modules/next/dist/client/detect-domain-locale.js\");\nvar _parsePath = __webpack_require__(/*! ./utils/parse-path */ \"../node_modules/next/dist/shared/lib/router/utils/parse-path.js\");\nvar _addLocale = __webpack_require__(/*! ../../../client/add-locale */ \"../node_modules/next/dist/client/add-locale.js\");\nvar _removeLocale = __webpack_require__(/*! ../../../client/remove-locale */ \"../node_modules/next/dist/client/remove-locale.js\");\nvar _removeBasePath = __webpack_require__(/*! ../../../client/remove-base-path */ \"../node_modules/next/dist/client/remove-base-path.js\");\nvar _addBasePath = __webpack_require__(/*! ../../../client/add-base-path */ \"../node_modules/next/dist/client/add-base-path.js\");\nvar _hasBasePath = __webpack_require__(/*! ../../../client/has-base-path */ \"../node_modules/next/dist/client/has-base-path.js\");\nvar _getNextPathnameInfo = __webpack_require__(/*! ./utils/get-next-pathname-info */ \"../node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js\");\nvar _formatNextPathnameInfo = __webpack_require__(/*! ./utils/format-next-pathname-info */ \"../node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js\");\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self1 = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self1, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _extends() {\n _extends = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _interopRequireDefault1(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n return cache;\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache();\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction buildCancellationError() {\n return Object.assign(new Error(\"Route Cancelled\"), {\n cancelled: true\n });\n}\nfunction isLocalURL(url) {\n // prevent a hydration mismatch on href for url with anchor refs\n if (!(0, _utils).isAbsoluteUrl(url)) return true;\n try {\n // absolute urls can be local if they are on the same origin\n var locationOrigin = (0, _utils).getLocationOrigin();\n var resolved = new URL(url, locationOrigin);\n return resolved.origin === locationOrigin && (0, _hasBasePath).hasBasePath(resolved.pathname);\n } catch (_) {\n return false;\n }\n}\nfunction interpolateAs(route, asPathname, query) {\n var interpolatedRoute = \"\";\n var dynamicRegex = (0, _routeRegex).getRouteRegex(route);\n var dynamicGroups = dynamicRegex.groups;\n var 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 var params = Object.keys(dynamicGroups);\n if (!params.every(function(param) {\n var value = dynamicMatches[param] || \"\";\n var _param = dynamicGroups[param], repeat = _param.repeat, optional = _param.optional;\n // support single-level catch-all\n // TODO: more robust handling for user-error (passing `/`)\n var replaced = \"[\".concat(repeat ? \"...\" : \"\").concat(param, \"]\");\n if (optional) {\n replaced = \"\".concat(!value ? \"/\" : \"\", \"[\").concat(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 function(segment) {\n return 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: params,\n result: interpolatedRoute\n };\n}\nfunction omit(object, keys) {\n var omitted = {};\n Object.keys(object).forEach(function(key) {\n if (!keys.includes(key)) {\n omitted[key] = object[key];\n }\n });\n return omitted;\n}\nfunction resolveHref(router, href, resolveAs) {\n // we use a dummy base url for relative urls\n var base;\n var 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 var urlProtoMatch = urlAsString.match(/^[a-zA-Z]{1,}:\\/\\//);\n var urlAsStringNoProto = urlProtoMatch ? urlAsString.slice(urlProtoMatch[0].length) : urlAsString;\n var urlParts = urlAsStringNoProto.split(\"?\");\n if ((urlParts[0] || \"\").match(/(\\/\\/|\\\\)/)) {\n console.error(\"Invalid href passed to next/router: \".concat(urlAsString, \", repeated forward-slashes (//) or backslashes \\\\ are not valid in the href\"));\n var 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 var finalUrl = new URL(urlAsString, base);\n finalUrl.pathname = (0, _normalizeTrailingSlash).normalizePathTrailingSlash(finalUrl.pathname);\n var interpolatedAs = \"\";\n if ((0, _isDynamic).isDynamicRoute(finalUrl.pathname) && finalUrl.searchParams && resolveAs) {\n var query = (0, _querystring).searchParamsToUrlQuery(finalUrl.searchParams);\n var ref = interpolateAs(finalUrl.pathname, finalUrl.pathname, query), result = ref.result, params = ref.params;\n if (result) {\n interpolatedAs = (0, _formatUrl).formatWithValidation({\n pathname: result,\n hash: finalUrl.hash,\n query: omit(query, params)\n });\n }\n }\n // if the origin didn't change, it means we received a relative href\n var 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 var 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 var ref = _slicedToArray(resolveHref(router, url, true), 2), resolvedHref = ref[0], resolvedAs = ref[1];\n var origin = (0, _utils).getLocationOrigin();\n var hrefHadOrigin = resolvedHref.startsWith(origin);\n var asHadOrigin = resolvedAs && resolvedAs.startsWith(origin);\n resolvedHref = stripOrigin(resolvedHref);\n resolvedAs = resolvedAs ? stripOrigin(resolvedAs) : resolvedAs;\n var preparedUrl = hrefHadOrigin ? resolvedHref : (0, _addBasePath).addBasePath(resolvedHref);\n var preparedAs = as ? stripOrigin(resolveHref(router, as)) : resolvedAs || resolvedHref;\n return {\n url: preparedUrl,\n as: asHadOrigin ? preparedAs : (0, _addBasePath).addBasePath(preparedAs)\n };\n}\nfunction resolveDynamicRoute(pathname, pages) {\n var cleanPathname = (0, _removeTrailingSlash).removeTrailingSlash((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(function(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, _removeTrailingSlash).removeTrailingSlash(pathname);\n}\nvar manualScrollRestoration = false && 0;\nvar SSG_DATA_NOT_FOUND = Symbol(\"SSG_DATA_NOT_FOUND\");\nfunction fetchRetry(url, attempts, options) {\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 method: options.method || \"GET\",\n headers: Object.assign({}, options.headers, {\n \"x-nextjs-data\": \"1\"\n })\n }).then(function(response) {\n return !response.ok && attempts > 1 && response.status >= 500 ? fetchRetry(url, attempts - 1, options) : response;\n });\n}\nvar backgroundCache = {};\nfunction fetchNextData(param) {\n var dataHref = param.dataHref, inflightCache = param.inflightCache, isPrefetch = param.isPrefetch, hasMiddleware = param.hasMiddleware, isServerRender = param.isServerRender, parseJSON = param.parseJSON, persistCache = param.persistCache, isBackground = param.isBackground, unstable_skipClientCache = param.unstable_skipClientCache;\n var ref = new URL(dataHref, window.location.href), cacheKey = ref.href;\n var ref1;\n var getData = function(params) {\n return fetchRetry(dataHref, isServerRender ? 3 : 1, {\n headers: isPrefetch ? {\n purpose: \"prefetch\"\n } : {},\n method: (ref1 = params == null ? void 0 : params.method) != null ? ref1 : \"GET\"\n }).then(function(response) {\n if (response.ok && (params == null ? void 0 : params.method) === \"HEAD\") {\n return {\n dataHref: dataHref,\n response: response,\n text: \"\",\n json: {}\n };\n }\n return response.text().then(function(text) {\n if (!response.ok) {\n /**\n * When the data response is a redirect because of a middleware\n * we do not consider it an error. The headers must bring the\n * mapped location.\n * TODO: Change the status code in the handler.\n */ if (hasMiddleware && [\n 301,\n 302,\n 307,\n 308\n ].includes(response.status)) {\n return {\n dataHref: dataHref,\n response: response,\n text: text,\n json: {}\n };\n }\n if (response.status === 404) {\n var ref;\n if ((ref = tryToParseAsJSON(text)) == null ? void 0 : ref.notFound) {\n return {\n dataHref: dataHref,\n json: {\n notFound: SSG_DATA_NOT_FOUND\n },\n response: response,\n text: text\n };\n }\n /**\n * If there is a 404 that is not for SSG we used to fail but if\n * there is a middleware we must respond with an empty object.\n * For now we will return the data when there is a middleware.\n * TODO: Update the server to success on these requests.\n */ if (hasMiddleware) {\n return {\n dataHref: dataHref,\n response: response,\n text: text,\n json: {}\n };\n }\n }\n var error = new Error(\"Failed to load static props\");\n /**\n * We should only trigger a server-side transition if this was\n * caused on a client-side transition. Otherwise, we'd get into\n * an infinite loop.\n */ if (!isServerRender) {\n (0, _routeLoader).markAssetError(error);\n }\n throw error;\n }\n return {\n dataHref: dataHref,\n json: parseJSON ? tryToParseAsJSON(text) : {},\n response: response,\n text: text\n };\n });\n }).then(function(data) {\n if (!persistCache || \"development\" !== \"production\" || 0) {\n delete inflightCache[cacheKey];\n }\n return data;\n }).catch(function(err) {\n delete inflightCache[cacheKey];\n throw err;\n });\n };\n // when skipping client cache we wait to update\n // inflight cache until successful data response\n // this allows racing click event with fetching newer data\n // without blocking navigation when stale data is available\n if (unstable_skipClientCache && persistCache) {\n return getData({}).then(function(data) {\n inflightCache[cacheKey] = Promise.resolve(data);\n return data;\n });\n }\n if (inflightCache[cacheKey] !== undefined) {\n return inflightCache[cacheKey];\n }\n return inflightCache[cacheKey] = getData(isBackground ? {\n method: \"HEAD\"\n } : {});\n}\nfunction tryToParseAsJSON(text) {\n try {\n return JSON.parse(text);\n } catch (error) {\n return {};\n }\n}\nfunction createKey() {\n return Math.random().toString(36).slice(2, 10);\n}\nfunction handleHardNavigation(param) {\n var url = param.url, router = param.router;\n // ensure we don't trigger a hard navigation to the same\n // URL as this can end up with an infinite refresh\n if (url === (0, _addBasePath).addBasePath((0, _addLocale).addLocale(router.asPath, router.locale))) {\n throw new Error(\"Invariant: attempted to hard navigate to the same URL \".concat(url, \" \").concat(location.href));\n }\n window.location.href = url;\n}\nvar getCancelledHandler = function(param) {\n var route = param.route, router = param.router;\n var cancelled = false;\n var cancel = router.clc = function() {\n cancelled = true;\n };\n var handleCancelled = function() {\n if (cancelled) {\n var error = new Error('Abort fetching component for route: \"'.concat(route, '\"'));\n error.cancelled = true;\n throw error;\n }\n if (cancel === router.clc) {\n router.clc = null;\n }\n };\n return handleCancelled;\n};\nvar Router = /*#__PURE__*/ function() {\n function Router(pathname1, query1, as1, param) {\n var initialProps = param.initialProps, pageLoader = param.pageLoader, App = param.App, wrapApp = param.wrapApp, Component = param.Component, err = param.err, subscription = param.subscription, isFallback = param.isFallback, locale = param.locale, locales = param.locales, defaultLocale = param.defaultLocale, domainLocales = param.domainLocales, isPreview = param.isPreview, isRsc = param.isRsc;\n var _this = this;\n _classCallCheck(this, Router);\n // Server Data Cache\n this.sdc = {};\n this.isFirstPopStateEvent = true;\n this._key = createKey();\n this.onPopState = function(e) {\n var isFirstPopStateEvent = _this.isFirstPopStateEvent;\n _this.isFirstPopStateEvent = false;\n var 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 var pathname = _this.pathname, query = _this.query;\n _this.changeState(\"replaceState\", (0, _formatUrl).formatWithValidation({\n pathname: (0, _addBasePath).addBasePath(pathname),\n query: query\n }), (0, _utils).getURL());\n return;\n }\n // __NA is used to identify if the history entry can be handled by the app-router.\n if (state.__NA) {\n window.location.reload();\n return;\n }\n if (!state.__N) {\n return;\n }\n // Safari fires popstateevent when reopening the browser.\n if (isFirstPopStateEvent && _this.locale === state.options.locale && state.as === _this.asPath) {\n return;\n }\n var forcedScroll;\n var url = state.url, as = state.as, options = state.options, key = state.key;\n if (false) { var v; }\n _this._key = key;\n var pathname1 = (0, _parseRelativeUrl).parseRelativeUrl(url).pathname;\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 === (0, _addBasePath).addBasePath(_this.asPath) && pathname1 === (0, _addBasePath).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 // @ts-ignore internal value not exposed on types\n _h: 0\n }), forcedScroll);\n };\n // represents the current component key\n var route = (0, _removeTrailingSlash).removeTrailingSlash(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: Component,\n initial: true,\n props: initialProps,\n err: 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 var autoExportDynamic = (0, _isDynamic).isDynamicRoute(pathname1) && self.__NEXT_DATA__.autoExport;\n this.basePath = false || \"\";\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: route,\n pathname: pathname1,\n query: query1,\n asPath: autoExportDynamic ? pathname1 : as1,\n isPreview: !!isPreview,\n locale: false ? 0 : undefined,\n isFallback: isFallback\n };\n this._initialMatchesMiddlewarePromise = Promise.resolve(false);\n if (true) {\n // make sure \"as\" doesn't start with double slashes or else it can\n // throw an error as it's considered invalid\n if (!as1.startsWith(\"//\")) {\n // in order for `e.state` to work on the `onpopstate` event\n // we have to register the initial route upon initialization\n var options = {\n locale: locale\n };\n var asPath = (0, _utils).getURL();\n this._initialMatchesMiddlewarePromise = matchesMiddleware({\n router: this,\n locale: locale,\n asPath: asPath\n }).then(function(matches) {\n options._shouldResolveHref = as1 !== pathname1;\n _this.changeState(\"replaceState\", matches ? asPath : (0, _formatUrl).formatWithValidation({\n pathname: (0, _addBasePath).addBasePath(pathname1),\n query: query1\n }), asPath, options);\n return matches;\n });\n }\n window.addEventListener(\"popstate\", this.onPopState);\n // enable custom scroll restoration handling when available\n // otherwise fallback to browser's default handling\n if (false) {}\n }\n }\n _createClass(Router, [\n {\n key: \"reload\",\n value: function reload() {\n window.location.reload();\n }\n },\n {\n /**\n * Go back in history\n */ key: \"back\",\n value: function back() {\n window.history.back();\n }\n },\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 */ key: \"push\",\n value: function push(url, as) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n if (false) {}\n var ref;\n ref = prepareUrlAs(this, url, as), url = ref.url, as = ref.as, ref;\n return this.change(\"pushState\", url, as, options);\n }\n },\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 */ key: \"replace\",\n value: function replace(url, as) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var ref;\n ref = prepareUrlAs(this, url, as), url = ref.url, as = ref.as, ref;\n return this.change(\"replaceState\", url, as, options);\n }\n },\n {\n key: \"change\",\n value: function change(method, url, as, options, forcedScroll) {\n var _this = this;\n return _asyncToGenerator(_cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.mark(function _callee() {\n var isQueryUpdating, shouldResolveHref, nextState, isSsr, prevLocale, parsedAs, localePathResult, didNavigate, ref, detectedDomain, asNoBasePath, _shallow, shallow, _scroll, scroll, routeProps, cleanedAs, localeChange, parsed, pathname, query, pages, rewrites, ref1, ref2, resolvedAs, isMiddlewareMatch, rewritesResult, route, routeMatch, parsedAs1, asPathname, routeRegex, shouldInterpolate, interpolatedAs, missingParams, ref21, ref3, routeInfo, prefixedAs, rewriteAs, localeResult, routeRegex1, curRouteMatch, error, props, __N_SSG, __N_SSP, component, scripts, destination, parsedHref, ref4, newUrl, newAs, notFoundRoute, _route, isValidShallowRoute, _scroll1, shouldScroll, resetScroll, hashRegex;\n return _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n if (isLocalURL(url)) {\n _ctx.next = 3;\n break;\n }\n handleHardNavigation({\n url: url,\n router: _this\n });\n return _ctx.abrupt(\"return\", false);\n case 3:\n isQueryUpdating = options._h;\n shouldResolveHref = isQueryUpdating || options._shouldResolveHref || (0, _parsePath).parsePath(url).pathname === (0, _parsePath).parsePath(as).pathname;\n nextState = _extends({}, _this.state);\n // for static pages with query params in the URL we delay\n // marking the router ready until after the query is updated\n // or a navigation has occurred\n _this.isReady = true;\n isSsr = _this.isSsr;\n if (!isQueryUpdating) {\n _this.isSsr = false;\n }\n if (!(isQueryUpdating && _this.clc)) {\n _ctx.next = 11;\n break;\n }\n return _ctx.abrupt(\"return\", false);\n case 11:\n prevLocale = nextState.locale;\n if (true) {\n _ctx.next = 24;\n break;\n }\n nextState.locale = options.locale === false ? _this.defaultLocale : options.locale || nextState.locale;\n if (typeof options.locale === \"undefined\") {\n options.locale = nextState.locale;\n }\n parsedAs = (0, _parseRelativeUrl).parseRelativeUrl((0, _hasBasePath).hasBasePath(as) ? (0, _removeBasePath).removeBasePath(as) : as);\n localePathResult = (0, _normalizeLocalePath).normalizeLocalePath(parsedAs.pathname, _this.locales);\n if (localePathResult.detectedLocale) {\n nextState.locale = localePathResult.detectedLocale;\n parsedAs.pathname = (0, _addBasePath).addBasePath(parsedAs.pathname);\n as = (0, _formatUrl).formatWithValidation(parsedAs);\n url = (0, _addBasePath).addBasePath((0, _normalizeLocalePath).normalizeLocalePath((0, _hasBasePath).hasBasePath(url) ? (0, _removeBasePath).removeBasePath(url) : url, _this.locales).pathname);\n }\n didNavigate = false;\n // we need to wrap this in the env check again since regenerator runtime\n // moves this on its own due to the return\n if (false) {}\n detectedDomain = (0, _detectDomainLocale).detectDomainLocale(_this.domainLocales, undefined, nextState.locale);\n // we need to wrap this in the env check again since regenerator runtime\n // moves this on its own due to the return\n if (false) {}\n if (!didNavigate) {\n _ctx.next = 24;\n break;\n }\n return _ctx.abrupt(\"return\", new Promise(function() {}));\n case 24:\n // marking route changes as a navigation start entry\n if (_utils.ST) {\n performance.mark(\"routeChange\");\n }\n _shallow = options.shallow, shallow = _shallow === void 0 ? false : _shallow, _scroll = options.scroll, scroll = _scroll === void 0 ? true : _scroll;\n routeProps = {\n shallow: shallow\n };\n if (_this._inFlightRoute && _this.clc) {\n if (!isSsr) {\n Router.events.emit(\"routeChangeError\", buildCancellationError(), _this._inFlightRoute, routeProps);\n }\n _this.clc();\n _this.clc = null;\n }\n as = (0, _addBasePath).addBasePath((0, _addLocale).addLocale((0, _hasBasePath).hasBasePath(as) ? (0, _removeBasePath).removeBasePath(as) : as, options.locale, _this.defaultLocale));\n cleanedAs = (0, _removeLocale).removeLocale((0, _hasBasePath).hasBasePath(as) ? (0, _removeBasePath).removeBasePath(as) : as, nextState.locale);\n _this._inFlightRoute = as;\n localeChange = prevLocale !== nextState.locale;\n if (!(!isQueryUpdating && _this.onlyAHashChange(cleanedAs) && !localeChange)) {\n _ctx.next = 48;\n break;\n }\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, _extends({}, options, {\n scroll: false\n }));\n if (scroll) {\n _this.scrollToHash(cleanedAs);\n }\n _ctx.prev = 37;\n _ctx.next = 40;\n return _this.set(nextState, _this.components[nextState.route], null);\n case 40:\n _ctx.next = 46;\n break;\n case 42:\n _ctx.prev = 42;\n _ctx.t0 = _ctx[\"catch\"](37);\n if ((0, _isError).default(_ctx.t0) && _ctx.t0.cancelled) {\n Router.events.emit(\"routeChangeError\", _ctx.t0, cleanedAs, routeProps);\n }\n throw _ctx.t0;\n case 46:\n Router.events.emit(\"hashChangeComplete\", as, routeProps);\n return _ctx.abrupt(\"return\", true);\n case 48:\n parsed = (0, _parseRelativeUrl).parseRelativeUrl(url);\n pathname = parsed.pathname, query = parsed.query;\n ;\n _ctx.prev = 51;\n ;\n _ctx.t1 = _slicedToArray;\n _ctx.next = 56;\n return Promise.all([\n _this.pageLoader.getPageList(),\n (0, _routeLoader).getClientBuildManifest(),\n _this.pageLoader.getMiddlewareList(), \n ]);\n case 56:\n _ctx.t2 = _ctx.sent;\n ref1 = (0, _ctx.t1)(_ctx.t2, 2);\n pages = ref1[0];\n ref2 = ref1[1], rewrites = ref2.__rewrites, ref2;\n ref1;\n _ctx.next = 67;\n break;\n case 63:\n _ctx.prev = 63;\n _ctx.t3 = _ctx[\"catch\"](51);\n // If we fail to resolve the page list or client-build manifest, we must\n // do a server-side transition:\n handleHardNavigation({\n url: as,\n router: _this\n });\n return _ctx.abrupt(\"return\", false);\n case 67:\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 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, _removeTrailingSlash).removeTrailingSlash((0, _removeBasePath).removeBasePath(pathname)) : pathname;\n _ctx.next = 72;\n return matchesMiddleware({\n asPath: as,\n locale: nextState.locale,\n router: _this\n });\n case 72:\n isMiddlewareMatch = _ctx.sent;\n if (options.shallow && isMiddlewareMatch) {\n pathname = _this.pathname;\n }\n if (!(shouldResolveHref && pathname !== \"/_error\")) {\n _ctx.next = 86;\n break;\n }\n options._shouldResolveHref = true;\n if (true) {\n _ctx.next = 85;\n break;\n }\n rewritesResult = (0, _resolveRewrites).default((0, _addBasePath).addBasePath((0, _addLocale).addLocale(cleanedAs, nextState.locale), true), pages, rewrites, query, function(p) {\n return resolveDynamicRoute(p, pages);\n }, _this.locales);\n if (!rewritesResult.externalDest) {\n _ctx.next = 81;\n break;\n }\n handleHardNavigation({\n url: as,\n router: _this\n });\n return _ctx.abrupt(\"return\", true);\n case 81:\n if (!isMiddlewareMatch) {\n resolvedAs = rewritesResult.asPath;\n }\n if (rewritesResult.matchedPage && rewritesResult.resolvedHref) {\n // if this directly matches a page we need to update the href to\n // allow the correct page chunk to be loaded\n pathname = rewritesResult.resolvedHref;\n parsed.pathname = (0, _addBasePath).addBasePath(pathname);\n if (!isMiddlewareMatch) {\n url = (0, _formatUrl).formatWithValidation(parsed);\n }\n }\n _ctx.next = 86;\n break;\n case 85:\n {\n parsed.pathname = resolveDynamicRoute(pathname, pages);\n if (parsed.pathname !== pathname) {\n pathname = parsed.pathname;\n parsed.pathname = (0, _addBasePath).addBasePath(pathname);\n if (!isMiddlewareMatch) {\n url = (0, _formatUrl).formatWithValidation(parsed);\n }\n }\n }\n case 86:\n if (isLocalURL(as)) {\n _ctx.next = 91;\n break;\n }\n if (false) {}\n throw new Error('Invalid href: \"'.concat(url, '\" and as: \"').concat(as, '\", received relative href and external as') + \"\\nSee more info: https://nextjs.org/docs/messages/invalid-relative-url-external-as\");\n case 89:\n handleHardNavigation({\n url: as,\n router: _this\n });\n return _ctx.abrupt(\"return\", false);\n case 91:\n resolvedAs = (0, _removeLocale).removeLocale((0, _removeBasePath).removeBasePath(resolvedAs), nextState.locale);\n route = (0, _removeTrailingSlash).removeTrailingSlash(pathname);\n routeMatch = false;\n if (!(0, _isDynamic).isDynamicRoute(route)) {\n _ctx.next = 109;\n break;\n }\n parsedAs1 = (0, _parseRelativeUrl).parseRelativeUrl(resolvedAs);\n asPathname = parsedAs1.pathname;\n routeRegex = (0, _routeRegex).getRouteRegex(route);\n routeMatch = (0, _routeMatcher).getRouteMatcher(routeRegex)(asPathname);\n shouldInterpolate = route === asPathname;\n interpolatedAs = shouldInterpolate ? interpolateAs(route, asPathname, query) : {};\n if (!(!routeMatch || shouldInterpolate && !interpolatedAs.result)) {\n _ctx.next = 108;\n break;\n }\n missingParams = Object.keys(routeRegex.groups).filter(function(param) {\n return !query[param];\n });\n if (!(missingParams.length > 0 && !isMiddlewareMatch)) {\n _ctx.next = 106;\n break;\n }\n if (true) {\n console.warn(\"\".concat(shouldInterpolate ? \"Interpolating href\" : \"Mismatching `as` and `href`\", \" failed to manually provide \") + \"the params: \".concat(missingParams.join(\", \"), \" in the `href`'s `query`\"));\n }\n throw new Error((shouldInterpolate ? \"The provided `href` (\".concat(url, \") value is missing query values (\").concat(missingParams.join(\", \"), \") to be interpolated properly. \") : \"The provided `as` value (\".concat(asPathname, \") is incompatible with the `href` value (\").concat(route, \"). \")) + \"Read more: https://nextjs.org/docs/messages/\".concat(shouldInterpolate ? \"href-interpolation-failed\" : \"incompatible-href-as\"));\n case 106:\n _ctx.next = 109;\n break;\n case 108:\n if (shouldInterpolate) {\n as = (0, _formatUrl).formatWithValidation(Object.assign({}, parsedAs1, {\n pathname: interpolatedAs.result,\n query: omit(query, interpolatedAs.params)\n }));\n } else {\n // Merge params into `query`, overwriting any specified in search\n Object.assign(query, routeMatch);\n }\n case 109:\n if (!isQueryUpdating) {\n Router.events.emit(\"routeChangeStart\", as, routeProps);\n }\n _ctx.prev = 110;\n ;\n _ctx.next = 114;\n return _this.getRouteInfo({\n route: route,\n pathname: pathname,\n query: query,\n as: as,\n resolvedAs: resolvedAs,\n routeProps: routeProps,\n locale: nextState.locale,\n isPreview: nextState.isPreview,\n hasMiddleware: isMiddlewareMatch\n });\n case 114:\n routeInfo = _ctx.sent;\n if (\"route\" in routeInfo && isMiddlewareMatch) {\n pathname = routeInfo.route || route;\n route = pathname;\n query = Object.assign({}, routeInfo.query || {}, query);\n if (routeMatch && pathname !== parsed.pathname) {\n Object.keys(routeMatch).forEach(function(key) {\n if (routeMatch && query[key] === routeMatch[key]) {\n delete query[key];\n }\n });\n }\n if ((0, _isDynamic).isDynamicRoute(pathname)) {\n prefixedAs = routeInfo.resolvedAs || (0, _addBasePath).addBasePath((0, _addLocale).addLocale(as, nextState.locale), true);\n rewriteAs = prefixedAs;\n if ((0, _hasBasePath).hasBasePath(rewriteAs)) {\n rewriteAs = (0, _removeBasePath).removeBasePath(rewriteAs);\n }\n if (false) {}\n routeRegex1 = (0, _routeRegex).getRouteRegex(pathname);\n curRouteMatch = (0, _routeMatcher).getRouteMatcher(routeRegex1)(rewriteAs);\n if (curRouteMatch) {\n Object.assign(query, curRouteMatch);\n }\n }\n }\n if (!(\"type\" in routeInfo)) {\n _ctx.next = 123;\n break;\n }\n if (!(routeInfo.type === \"redirect-internal\")) {\n _ctx.next = 121;\n break;\n }\n return _ctx.abrupt(\"return\", _this.change(method, routeInfo.newUrl, routeInfo.newAs, options));\n case 121:\n handleHardNavigation({\n url: routeInfo.destination,\n router: _this\n });\n return _ctx.abrupt(\"return\", new Promise(function() {}));\n case 123:\n error = routeInfo.error, props = routeInfo.props, __N_SSG = routeInfo.__N_SSG, __N_SSP = routeInfo.__N_SSP;\n component = routeInfo.Component;\n if (component && component.unstable_scriptLoader) {\n scripts = [].concat(component.unstable_scriptLoader());\n scripts.forEach(function(script) {\n (0, _script).handleClientScriptLoad(script.props);\n });\n }\n if (!((__N_SSG || __N_SSP) && props)) {\n _ctx.next = 154;\n break;\n }\n if (!(props.pageProps && props.pageProps.__N_REDIRECT)) {\n _ctx.next = 137;\n break;\n }\n // Use the destination from redirect without adding locale\n options.locale = false;\n destination = props.pageProps.__N_REDIRECT;\n if (!(destination.startsWith(\"/\") && props.pageProps.__N_REDIRECT_BASE_PATH !== false)) {\n _ctx.next = 135;\n break;\n }\n parsedHref = (0, _parseRelativeUrl).parseRelativeUrl(destination);\n parsedHref.pathname = resolveDynamicRoute(parsedHref.pathname, pages);\n ref4 = prepareUrlAs(_this, destination, destination), newUrl = ref4.url, newAs = ref4.as;\n return _ctx.abrupt(\"return\", _this.change(method, newUrl, newAs, options));\n case 135:\n handleHardNavigation({\n url: destination,\n router: _this\n });\n return _ctx.abrupt(\"return\", new Promise(function() {}));\n case 137:\n nextState.isPreview = !!props.__N_PREVIEW;\n if (!(props.notFound === SSG_DATA_NOT_FOUND)) {\n _ctx.next = 154;\n break;\n }\n ;\n _ctx.prev = 140;\n _ctx.next = 143;\n return _this.fetchComponent(\"/404\");\n case 143:\n notFoundRoute = \"/404\";\n _ctx.next = 149;\n break;\n case 146:\n _ctx.prev = 146;\n _ctx.t4 = _ctx[\"catch\"](140);\n notFoundRoute = \"/_error\";\n case 149:\n _ctx.next = 151;\n return _this.getRouteInfo({\n route: notFoundRoute,\n pathname: notFoundRoute,\n query: query,\n as: as,\n resolvedAs: resolvedAs,\n routeProps: {\n shallow: false\n },\n locale: nextState.locale,\n isPreview: nextState.isPreview\n });\n case 151:\n routeInfo = _ctx.sent;\n if (!(\"type\" in routeInfo)) {\n _ctx.next = 154;\n break;\n }\n throw new Error(\"Unexpected middleware effect on /404\");\n case 154:\n Router.events.emit(\"beforeHistoryChange\", as, routeProps);\n _this.changeState(method, url, as, options);\n if (isQueryUpdating && pathname === \"/_error\" && ((ref21 = self.__NEXT_DATA__.props) == null ? void 0 : (ref3 = ref21.pageProps) == null ? void 0 : ref3.statusCode) === 500 && (props == null ? 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 ;\n isValidShallowRoute = options.shallow && nextState.route === ((_route = routeInfo.route) != null ? _route : route);\n ;\n shouldScroll = (_scroll1 = options.scroll) != null ? _scroll1 : !isValidShallowRoute;\n resetScroll = shouldScroll ? {\n x: 0,\n y: 0\n } : null;\n _ctx.next = 164;\n return _this.set(_extends({}, nextState, {\n route: route,\n pathname: pathname,\n query: query,\n asPath: cleanedAs,\n isFallback: false\n }), routeInfo, forcedScroll != null ? forcedScroll : resetScroll).catch(function(e) {\n if (e.cancelled) error = error || e;\n else throw e;\n });\n case 164:\n if (!error) {\n _ctx.next = 167;\n break;\n }\n if (!isQueryUpdating) {\n Router.events.emit(\"routeChangeError\", error, cleanedAs, routeProps);\n }\n throw error;\n case 167:\n if (false) {}\n if (!isQueryUpdating) {\n Router.events.emit(\"routeChangeComplete\", as, routeProps);\n }\n hashRegex = /#.+$/;\n if (shouldScroll && hashRegex.test(as)) {\n _this.scrollToHash(as);\n }\n return _ctx.abrupt(\"return\", true);\n case 174:\n _ctx.prev = 174;\n _ctx.t5 = _ctx[\"catch\"](110);\n if (!((0, _isError).default(_ctx.t5) && _ctx.t5.cancelled)) {\n _ctx.next = 178;\n break;\n }\n return _ctx.abrupt(\"return\", false);\n case 178:\n throw _ctx.t5;\n case 179:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee, null, [\n [\n 37,\n 42\n ],\n [\n 51,\n 63\n ],\n [\n 110,\n 174\n ],\n [\n 140,\n 146\n ]\n ]);\n }))();\n }\n },\n {\n key: \"changeState\",\n value: function changeState(method, url, as) {\n var options = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};\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.\".concat(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: url,\n as: as,\n options: options,\n __N: true,\n key: this._key = method !== \"pushState\" ? this._key : createKey()\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 },\n {\n key: \"handleRouteInfoError\",\n value: function handleRouteInfoError(err, pathname, query, as, routeProps, loadErrorFail) {\n var _this = this;\n return _asyncToGenerator(_cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.mark(function _callee() {\n var Component, styleSheets, props, ref, routeInfo;\n return _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n console.error(err);\n if (!err.cancelled) {\n _ctx.next = 3;\n break;\n }\n // bubble up cancellation errors\n throw err;\n case 3:\n if (!((0, _routeLoader).isAssetError(err) || loadErrorFail)) {\n _ctx.next = 7;\n break;\n }\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 handleHardNavigation({\n url: as,\n router: _this\n });\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 case 7:\n _ctx.prev = 7;\n ;\n ;\n ;\n if (!(typeof Component === \"undefined\" || typeof styleSheets === \"undefined\")) {\n _ctx.next = 19;\n break;\n }\n ;\n _ctx.next = 15;\n return _this.fetchComponent(\"/_error\");\n case 15:\n ref = _ctx.sent;\n Component = ref.page;\n styleSheets = ref.styleSheets;\n ref;\n case 19:\n routeInfo = {\n props: props,\n Component: Component,\n styleSheets: styleSheets,\n err: err,\n error: err\n };\n if (routeInfo.props) {\n _ctx.next = 31;\n break;\n }\n _ctx.prev = 21;\n _ctx.next = 24;\n return _this.getInitialProps(Component, {\n err: err,\n pathname: pathname,\n query: query\n });\n case 24:\n routeInfo.props = _ctx.sent;\n _ctx.next = 31;\n break;\n case 27:\n _ctx.prev = 27;\n _ctx.t0 = _ctx[\"catch\"](21);\n console.error(\"Error in error page `getInitialProps`: \", _ctx.t0);\n routeInfo.props = {};\n case 31:\n return _ctx.abrupt(\"return\", routeInfo);\n case 34:\n _ctx.prev = 34;\n _ctx.t1 = _ctx[\"catch\"](7);\n return _ctx.abrupt(\"return\", _this.handleRouteInfoError((0, _isError).default(_ctx.t1) ? _ctx.t1 : new Error(_ctx.t1 + \"\"), pathname, query, as, routeProps, true));\n case 37:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee, null, [\n [\n 7,\n 34\n ],\n [\n 21,\n 27\n ]\n ]);\n }))();\n }\n },\n {\n key: \"getRouteInfo\",\n value: function getRouteInfo(param) {\n var requestedRoute = param.route, pathname = param.pathname, query = param.query, as = param.as, resolvedAs = param.resolvedAs, routeProps = param.routeProps, locale = param.locale, hasMiddleware = param.hasMiddleware, isPreview = param.isPreview, unstable_skipClientCache = param.unstable_skipClientCache;\n var _this = this;\n return _asyncToGenerator(_cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.mark(function _callee() {\n var route, ref, ref4, ref5, handleCancelled, existingInfo, cachedRouteInfo, fetchNextDataParams, data, routeInfo, isValidElementType, useStreamedFlightData, shouldFetchData, props, cacheKey, flightInfo;\n return _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n route = requestedRoute;\n _ctx.prev = 1;\n ;\n handleCancelled = getCancelledHandler({\n route: route,\n router: _this\n });\n existingInfo = _this.components[route];\n if (!(routeProps.shallow && existingInfo && _this.route === route)) {\n _ctx.next = 7;\n break;\n }\n return _ctx.abrupt(\"return\", existingInfo);\n case 7:\n cachedRouteInfo = existingInfo && !(\"initial\" in existingInfo) && \"development\" !== \"development\" ? 0 : undefined;\n fetchNextDataParams = {\n dataHref: _this.pageLoader.getDataHref({\n href: (0, _formatUrl).formatWithValidation({\n pathname: pathname,\n query: query\n }),\n skipInterpolation: true,\n asPath: resolvedAs,\n locale: locale\n }),\n hasMiddleware: true,\n isServerRender: _this.isSsr,\n parseJSON: true,\n inflightCache: _this.sdc,\n persistCache: !isPreview,\n isPrefetch: false,\n unstable_skipClientCache: unstable_skipClientCache\n };\n _ctx.next = 11;\n return withMiddlewareEffects({\n fetchData: function() {\n return fetchNextData(fetchNextDataParams);\n },\n asPath: resolvedAs,\n locale: locale,\n router: _this\n });\n case 11:\n data = _ctx.sent;\n handleCancelled();\n if (!((data == null ? void 0 : (ref = data.effect) == null ? void 0 : ref.type) === \"redirect-internal\" || (data == null ? void 0 : (ref4 = data.effect) == null ? void 0 : ref4.type) === \"redirect-external\")) {\n _ctx.next = 15;\n break;\n }\n return _ctx.abrupt(\"return\", data.effect);\n case 15:\n if (!((data == null ? void 0 : (ref5 = data.effect) == null ? void 0 : ref5.type) === \"rewrite\")) {\n _ctx.next = 25;\n break;\n }\n route = (0, _removeTrailingSlash).removeTrailingSlash(data.effect.resolvedHref);\n pathname = data.effect.resolvedHref;\n query = _extends({}, query, data.effect.parsedAs.query);\n resolvedAs = data.effect.parsedAs.pathname;\n // Check again the cache with the new destination.\n existingInfo = _this.components[route];\n if (!(routeProps.shallow && existingInfo && _this.route === route && !hasMiddleware)) {\n _ctx.next = 24;\n break;\n }\n // If we have a match with the current route due to rewrite,\n // we can copy the existing information to the rewritten one.\n // Then, we return the information along with the matched route.\n _this.components[requestedRoute] = _extends({}, existingInfo, {\n route: route\n });\n return _ctx.abrupt(\"return\", _extends({}, existingInfo, {\n route: route\n }));\n case 24:\n cachedRouteInfo = existingInfo && !(\"initial\" in existingInfo) && \"development\" !== \"development\" ? 0 : undefined;\n case 25:\n if (!(route === \"/api\" || route.startsWith(\"/api/\"))) {\n _ctx.next = 28;\n break;\n }\n handleHardNavigation({\n url: as,\n router: _this\n });\n return _ctx.abrupt(\"return\", new Promise(function() {}));\n case 28:\n _ctx.t0 = cachedRouteInfo;\n if (_ctx.t0) {\n _ctx.next = 33;\n break;\n }\n _ctx.next = 32;\n return _this.fetchComponent(route).then(function(res) {\n return {\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 case 32:\n _ctx.t0 = _ctx.sent;\n case 33:\n routeInfo = _ctx.t0;\n if (false) {}\n isValidElementType = (__webpack_require__(/*! next/dist/compiled/react-is */ \"../node_modules/next/dist/compiled/react-is/index.js\").isValidElementType);\n if (isValidElementType(routeInfo.Component)) {\n _ctx.next = 38;\n break;\n }\n throw new Error('The default export is not a React Component in page: \"'.concat(pathname, '\"'));\n case 38:\n useStreamedFlightData = routeInfo.__N_RSC && ( true || 0);\n shouldFetchData = routeInfo.__N_SSG || routeInfo.__N_SSP || routeInfo.__N_RSC;\n _ctx.next = 42;\n return _this._getData(_asyncToGenerator(_cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.mark(function _callee() {\n var json;\n return _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n if (!(shouldFetchData && !useStreamedFlightData)) {\n _ctx.next = 8;\n break;\n }\n _ctx.t0 = data;\n if (_ctx.t0) {\n _ctx.next = 6;\n break;\n }\n _ctx.next = 5;\n return fetchNextData({\n dataHref: _this.pageLoader.getDataHref({\n href: (0, _formatUrl).formatWithValidation({\n pathname: pathname,\n query: query\n }),\n asPath: resolvedAs,\n locale: locale\n }),\n isServerRender: _this.isSsr,\n parseJSON: true,\n inflightCache: _this.sdc,\n persistCache: !isPreview,\n isPrefetch: false,\n unstable_skipClientCache: unstable_skipClientCache\n });\n case 5:\n _ctx.t0 = _ctx.sent;\n case 6:\n json = _ctx.t0.json;\n return _ctx.abrupt(\"return\", {\n props: json\n });\n case 8:\n _ctx.t1 = {};\n _ctx.next = 11;\n return _this.getInitialProps(routeInfo.Component, {\n pathname: pathname,\n query: query,\n asPath: as,\n locale: locale,\n locales: _this.locales,\n defaultLocale: _this.defaultLocale\n });\n case 11:\n _ctx.t2 = _ctx.sent;\n return _ctx.abrupt(\"return\", {\n headers: _ctx.t1,\n props: _ctx.t2\n });\n case 13:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee);\n })));\n case 42:\n props = _ctx.sent.props;\n // Only bust the data cache for SSP routes although\n // middleware can skip cache per request with\n // x-middleware-cache: no-cache as well\n if (routeInfo.__N_SSP && fetchNextDataParams.dataHref) {\n cacheKey = new URL(fetchNextDataParams.dataHref, window.location.href).href;\n delete _this.sdc[cacheKey];\n }\n // we kick off a HEAD request in the background\n // when a non-prefetch request is made to signal revalidation\n if (!_this.isPreview && routeInfo.__N_SSG && \"development\" !== \"development\") {}\n ;\n if (!routeInfo.__N_RSC) {\n _ctx.next = 56;\n break;\n }\n if (!useStreamedFlightData) {\n _ctx.next = 53;\n break;\n }\n _ctx.next = 50;\n return _this._getData(function() {\n return _this._getFlightData((0, _formatUrl).formatWithValidation({\n query: _extends({}, query, {\n __flight__: \"1\"\n }),\n pathname: (0, _isDynamic).isDynamicRoute(route) ? interpolateAs(pathname, (0, _parseRelativeUrl).parseRelativeUrl(resolvedAs).pathname, query).result : pathname\n }));\n });\n case 50:\n _ctx.t1 = _ctx.sent.data;\n _ctx.next = 54;\n break;\n case 53:\n _ctx.t1 = props.__flight__;\n case 54:\n _ctx.t2 = _ctx.t1;\n flightInfo = {\n __flight__: _ctx.t2\n };\n case 56:\n props.pageProps = Object.assign({}, props.pageProps, flightInfo);\n routeInfo.props = props;\n routeInfo.route = route;\n routeInfo.query = query;\n routeInfo.resolvedAs = resolvedAs;\n _this.components[route] = routeInfo;\n // If the route was rewritten in the process of fetching data,\n // we update the cache to allow hitting the same data for shallow requests.\n if (route !== requestedRoute) {\n _this.components[requestedRoute] = _extends({}, routeInfo, {\n route: route\n });\n }\n return _ctx.abrupt(\"return\", routeInfo);\n case 66:\n _ctx.prev = 66;\n _ctx.t3 = _ctx[\"catch\"](1);\n return _ctx.abrupt(\"return\", _this.handleRouteInfoError((0, _isError).getProperError(_ctx.t3), pathname, query, as, routeProps));\n case 69:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee, null, [\n [\n 1,\n 66\n ]\n ]);\n }))();\n }\n },\n {\n key: \"set\",\n value: function set(state, data, resetScroll) {\n this.state = state;\n return this.sub(data, this.components[\"/_app\"].Component, resetScroll);\n }\n },\n {\n /**\n * Callback to execute before replacing router state\n * @param cb callback to be executed\n */ key: \"beforePopState\",\n value: function beforePopState(cb) {\n this._bps = cb;\n }\n },\n {\n key: \"onlyAHashChange\",\n value: function onlyAHashChange(as) {\n if (!this.asPath) return false;\n var ref = _slicedToArray(this.asPath.split(\"#\"), 2), oldUrlNoHash = ref[0], oldHash = ref[1];\n var ref1 = _slicedToArray(as.split(\"#\"), 2), newUrlNoHash = ref1[0], newHash = ref1[1];\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 },\n {\n key: \"scrollToHash\",\n value: function scrollToHash(as) {\n var ref = _slicedToArray(as.split(\"#\"), 2), tmp = ref[1], hash = tmp === void 0 ? \"\" : tmp;\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 // Decode hash to make non-latin anchor works.\n var rawHash = decodeURIComponent(hash);\n // First we check if the element by id is found\n var idEl = document.getElementById(rawHash);\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 var nameEl = document.getElementsByName(rawHash)[0];\n if (nameEl) {\n nameEl.scrollIntoView();\n }\n }\n },\n {\n key: \"urlIsNew\",\n value: function urlIsNew(asPath) {\n return this.asPath !== asPath;\n }\n },\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 */ key: \"prefetch\",\n value: function prefetch(url) {\n var asPath = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : url, options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var _this = this;\n return _asyncToGenerator(_cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.mark(function _callee() {\n var parsed, pathname, query, parsedAs, localePathResult, pages, resolvedAs, locale, isMiddlewareMatch, rewrites, ref, rewritesResult, data, route;\n return _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n parsed = (0, _parseRelativeUrl).parseRelativeUrl(url);\n pathname = parsed.pathname, query = parsed.query;\n if (false) {}\n _ctx.next = 5;\n return _this.pageLoader.getPageList();\n case 5:\n pages = _ctx.sent;\n resolvedAs = asPath;\n locale = typeof options.locale !== \"undefined\" ? options.locale || undefined : _this.locale;\n _ctx.next = 10;\n return matchesMiddleware({\n asPath: asPath,\n locale: locale,\n router: _this\n });\n case 10:\n isMiddlewareMatch = _ctx.sent;\n if (true) {\n _ctx.next = 24;\n break;\n }\n ;\n ;\n _ctx.next = 16;\n return (0, _routeLoader).getClientBuildManifest();\n case 16:\n ref = _ctx.sent;\n rewrites = ref.__rewrites;\n ref;\n rewritesResult = (0, _resolveRewrites).default((0, _addBasePath).addBasePath((0, _addLocale).addLocale(asPath, _this.locale), true), pages, rewrites, parsed.query, function(p) {\n return resolveDynamicRoute(p, pages);\n }, _this.locales);\n if (!rewritesResult.externalDest) {\n _ctx.next = 22;\n break;\n }\n return _ctx.abrupt(\"return\");\n case 22:\n resolvedAs = (0, _removeLocale).removeLocale((0, _removeBasePath).removeBasePath(rewritesResult.asPath), _this.locale);\n if (rewritesResult.matchedPage && rewritesResult.resolvedHref) {\n // if this directly matches a page we need to update the href to\n // allow the correct page chunk to be loaded\n pathname = rewritesResult.resolvedHref;\n parsed.pathname = pathname;\n if (!isMiddlewareMatch) {\n url = (0, _formatUrl).formatWithValidation(parsed);\n }\n }\n case 24:\n parsed.pathname = resolveDynamicRoute(parsed.pathname, pages);\n if ((0, _isDynamic).isDynamicRoute(parsed.pathname)) {\n pathname = parsed.pathname;\n parsed.pathname = pathname;\n Object.assign(query, (0, _routeMatcher).getRouteMatcher((0, _routeRegex).getRouteRegex(parsed.pathname))((0, _parsePath).parsePath(asPath).pathname) || {});\n if (!isMiddlewareMatch) {\n url = (0, _formatUrl).formatWithValidation(parsed);\n }\n }\n if (false) {}\n return _ctx.abrupt(\"return\");\n case 28:\n _ctx.next = 30;\n return withMiddlewareEffects({\n fetchData: function() {\n return fetchNextData({\n dataHref: _this.pageLoader.getDataHref({\n href: (0, _formatUrl).formatWithValidation({\n pathname: pathname,\n query: query\n }),\n skipInterpolation: true,\n asPath: resolvedAs,\n locale: locale\n }),\n hasMiddleware: true,\n isServerRender: _this.isSsr,\n parseJSON: true,\n inflightCache: _this.sdc,\n persistCache: !_this.isPreview,\n isPrefetch: true\n });\n },\n asPath: asPath,\n locale: locale,\n router: _this\n });\n case 30:\n data = _ctx.sent;\n /**\n * If there was a rewrite we apply the effects of the rewrite on the\n * current parameters for the prefetch.\n */ if ((data == null ? void 0 : data.effect.type) === \"rewrite\") {\n parsed.pathname = data.effect.resolvedHref;\n pathname = data.effect.resolvedHref;\n query = _extends({}, query, data.effect.parsedAs.query);\n resolvedAs = data.effect.parsedAs.pathname;\n url = (0, _formatUrl).formatWithValidation(parsed);\n }\n if (!((data == null ? void 0 : data.effect.type) === \"redirect-external\")) {\n _ctx.next = 34;\n break;\n }\n return _ctx.abrupt(\"return\");\n case 34:\n route = (0, _removeTrailingSlash).removeTrailingSlash(pathname);\n _ctx.next = 37;\n return Promise.all([\n _this.pageLoader._isSsg(route).then(function(isSsg) {\n return isSsg ? fetchNextData({\n dataHref: (data == null ? void 0 : data.dataHref) || _this.pageLoader.getDataHref({\n href: url,\n asPath: resolvedAs,\n locale: locale\n }),\n isServerRender: false,\n parseJSON: true,\n inflightCache: _this.sdc,\n persistCache: !_this.isPreview,\n isPrefetch: true,\n unstable_skipClientCache: options.unstable_skipClientCache || options.priority\n }).then(function() {\n return false;\n }) : false;\n }),\n _this.pageLoader[options.priority ? \"loadPage\" : \"prefetch\"](route), \n ]);\n case 37:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee);\n }))();\n }\n },\n {\n key: \"fetchComponent\",\n value: function fetchComponent(route) {\n var _this = this;\n return _asyncToGenerator(_cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.mark(function _callee() {\n var handleCancelled, componentResult;\n return _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n handleCancelled = getCancelledHandler({\n route: route,\n router: _this\n });\n _ctx.prev = 1;\n _ctx.next = 4;\n return _this.pageLoader.loadPage(route);\n case 4:\n componentResult = _ctx.sent;\n handleCancelled();\n return _ctx.abrupt(\"return\", componentResult);\n case 9:\n _ctx.prev = 9;\n _ctx.t0 = _ctx[\"catch\"](1);\n handleCancelled();\n throw _ctx.t0;\n case 13:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee, null, [\n [\n 1,\n 9\n ]\n ]);\n }))();\n }\n },\n {\n key: \"_getData\",\n value: function _getData(fn) {\n var _this = this;\n var cancelled = false;\n var cancel = function() {\n cancelled = true;\n };\n this.clc = cancel;\n return fn().then(function(data) {\n if (cancel === _this.clc) {\n _this.clc = null;\n }\n if (cancelled) {\n var err = new Error(\"Loading initial props cancelled\");\n err.cancelled = true;\n throw err;\n }\n return data;\n });\n }\n },\n {\n key: \"_getFlightData\",\n value: function _getFlightData(dataHref) {\n // Do not cache RSC flight response since it's not a static resource\n return fetchNextData({\n dataHref: dataHref,\n isServerRender: true,\n parseJSON: false,\n inflightCache: this.sdc,\n persistCache: false,\n isPrefetch: false\n }).then(function(param) {\n var text = param.text;\n return {\n data: text\n };\n });\n }\n },\n {\n key: \"getInitialProps\",\n value: function getInitialProps(Component, ctx) {\n var ref = this.components[\"/_app\"], App = ref.Component;\n var AppTree = this._wrapApp(App);\n ctx.AppTree = AppTree;\n return (0, _utils).loadGetInitialProps(App, {\n AppTree: AppTree,\n Component: Component,\n router: this,\n ctx: ctx\n });\n }\n },\n {\n key: \"route\",\n get: function get() {\n return this.state.route;\n }\n },\n {\n key: \"pathname\",\n get: function get() {\n return this.state.pathname;\n }\n },\n {\n key: \"query\",\n get: function get() {\n return this.state.query;\n }\n },\n {\n key: \"asPath\",\n get: function get() {\n return this.state.asPath;\n }\n },\n {\n key: \"locale\",\n get: function get() {\n return this.state.locale;\n }\n },\n {\n key: \"isFallback\",\n get: function get() {\n return this.state.isFallback;\n }\n },\n {\n key: \"isPreview\",\n get: function get() {\n return this.state.isPreview;\n }\n }\n ]);\n return Router;\n}();\nRouter.events = (0, _mitt).default();\nfunction matchesMiddleware(options) {\n return Promise.resolve(options.router.pageLoader.getMiddlewareList()).then(function(items) {\n var ref = (0, _parsePath).parsePath(options.asPath), asPathname = ref.pathname;\n var cleanedAs = (0, _hasBasePath).hasBasePath(asPathname) ? (0, _removeBasePath).removeBasePath(asPathname) : asPathname;\n return !!(items == null ? void 0 : items.some(function(param) {\n var _param = _slicedToArray(param, 2), regex = _param[0], ssr = _param[1];\n return !ssr && new RegExp(regex).test((0, _addLocale).addLocale(cleanedAs, options.locale));\n }));\n });\n}\nfunction withMiddlewareEffects(options) {\n return matchesMiddleware(options).then(function(matches) {\n if (matches && options.fetchData) {\n return options.fetchData().then(function(data) {\n return getMiddlewareData(data.dataHref, data.response, options).then(function(effect) {\n return {\n dataHref: data.dataHref,\n json: data.json,\n response: data.response,\n text: data.text,\n effect: effect\n };\n });\n }).catch(function(_err) {\n /**\n * TODO: Revisit this in the future.\n * For now we will not consider middleware data errors to be fatal.\n * maybe we should revisit in the future.\n */ return null;\n });\n }\n return null;\n });\n}\nfunction getMiddlewareData(source, response, options) {\n var nextConfig = {\n basePath: options.router.basePath,\n i18n: {\n locales: options.router.locales\n },\n trailingSlash: Boolean(false)\n };\n var rewriteHeader = response.headers.get(\"x-nextjs-rewrite\");\n var rewriteTarget = rewriteHeader || response.headers.get(\"x-nextjs-matched-path\");\n var matchedPath = response.headers.get(\"x-matched-path\");\n if (!rewriteTarget && !(matchedPath == null ? void 0 : matchedPath.includes(\"__next_data_catchall\"))) {\n rewriteTarget = matchedPath;\n }\n if (rewriteTarget) {\n if (rewriteTarget.startsWith(\"/\")) {\n var parsedRewriteTarget = (0, _parseRelativeUrl).parseRelativeUrl(rewriteTarget);\n var pathnameInfo = (0, _getNextPathnameInfo).getNextPathnameInfo(parsedRewriteTarget.pathname, {\n nextConfig: nextConfig,\n parseData: true\n });\n var fsPathname = (0, _removeTrailingSlash).removeTrailingSlash(pathnameInfo.pathname);\n return Promise.all([\n options.router.pageLoader.getPageList(),\n (0, _routeLoader).getClientBuildManifest(), \n ]).then(function(param) {\n var _param = _slicedToArray(param, 2), pages = _param[0], ref = _param[1], rewrites = ref.__rewrites;\n var as = (0, _addLocale).addLocale(pathnameInfo.pathname, pathnameInfo.locale);\n if ((0, _isDynamic).isDynamicRoute(as) || !rewriteHeader && pages.includes((0, _normalizeLocalePath).normalizeLocalePath((0, _removeBasePath).removeBasePath(as), options.router.locales).pathname)) {\n var parsedSource = (0, _getNextPathnameInfo).getNextPathnameInfo((0, _parseRelativeUrl).parseRelativeUrl(source).pathname, {\n parseData: true\n });\n as = (0, _addBasePath).addBasePath(parsedSource.pathname);\n parsedRewriteTarget.pathname = as;\n }\n if (false) { var result; }\n var resolvedHref = !pages.includes(fsPathname) ? resolveDynamicRoute((0, _normalizeLocalePath).normalizeLocalePath((0, _removeBasePath).removeBasePath(parsedRewriteTarget.pathname), options.router.locales).pathname, pages) : fsPathname;\n if ((0, _isDynamic).isDynamicRoute(resolvedHref)) {\n var matches = (0, _routeMatcher).getRouteMatcher((0, _routeRegex).getRouteRegex(resolvedHref))(as);\n Object.assign(parsedRewriteTarget.query, matches || {});\n }\n return {\n type: \"rewrite\",\n parsedAs: parsedRewriteTarget,\n resolvedHref: resolvedHref\n };\n });\n }\n var src = (0, _parsePath).parsePath(source);\n var pathname = (0, _formatNextPathnameInfo).formatNextPathnameInfo(_extends({}, (0, _getNextPathnameInfo).getNextPathnameInfo(src.pathname, {\n nextConfig: nextConfig,\n parseData: true\n }), {\n defaultLocale: options.router.defaultLocale,\n buildId: \"\"\n }));\n return Promise.resolve({\n type: \"redirect-external\",\n destination: \"\".concat(pathname).concat(src.query).concat(src.hash)\n });\n }\n var redirectTarget = response.headers.get(\"x-nextjs-redirect\");\n if (redirectTarget) {\n if (redirectTarget.startsWith(\"/\")) {\n var src1 = (0, _parsePath).parsePath(redirectTarget);\n var pathname1 = (0, _formatNextPathnameInfo).formatNextPathnameInfo(_extends({}, (0, _getNextPathnameInfo).getNextPathnameInfo(src1.pathname, {\n nextConfig: nextConfig,\n parseData: true\n }), {\n defaultLocale: options.router.defaultLocale,\n buildId: \"\"\n }));\n return Promise.resolve({\n type: \"redirect-internal\",\n newAs: \"\".concat(pathname1).concat(src1.query).concat(src1.hash),\n newUrl: \"\".concat(pathname1).concat(src1.query).concat(src1.hash)\n });\n }\n return Promise.resolve({\n type: \"redirect-external\",\n destination: redirectTarget\n });\n }\n return Promise.resolve({\n type: \"next\"\n });\n}\nexports[\"default\"] = Router; //# sourceMappingURL=router.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zaGFyZWQvbGliL3JvdXRlci9yb3V0ZXIuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7Ozs7Ozs7OztBQUNiQSw4Q0FBNkM7SUFDekNHLEtBQUssRUFBRSxJQUFJO0NBQ2QsRUFBQyxDQUFDO0FBQ0hELGtCQUFrQixHQUFHRSxVQUFVLENBQUM7QUFDaENGLHFCQUFxQixHQUFHRyxhQUFhLENBQUM7QUFDdENILG1CQUFtQixHQUFHSSxXQUFXLENBQUM7QUFDbENKLGlCQUFpQixHQUFHSyxTQUFTLENBQUM7QUFDOUJMLGtCQUFlLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDekIsSUFBSU8sdUJBQXVCLEdBQUdDLG1CQUFPLENBQUMsOEdBQTBDLENBQUM7QUFDakYsSUFBSUMsb0JBQW9CLEdBQUdELG1CQUFPLENBQUMsaUhBQStCLENBQUM7QUFDbkUsSUFBSUUsWUFBWSxHQUFHRixtQkFBTyxDQUFDLHNGQUE4QixDQUFDO0FBQzFELElBQUlHLE9BQU8sR0FBR0gsbUJBQU8sQ0FBQywwRUFBd0IsQ0FBQztBQUMvQyxJQUFJSSxRQUFRLEdBQUdDLHVCQUF1QixDQUFDTCxtQkFBTyxDQUFDLHdFQUF1QixDQUFDLENBQUM7QUFDeEUsSUFBSU0sb0JBQW9CLEdBQUdOLG1CQUFPLENBQUMsbUhBQW9DLENBQUM7QUFDeEUsSUFBSU8sb0JBQW9CLEdBQUdQLG1CQUFPLENBQUMseUdBQStCLENBQUM7QUFDbkUsSUFBSVEsS0FBSyxHQUFHQyx1QkFBc0IsQ0FBQ1QsbUJBQU8sQ0FBQyw2REFBUyxDQUFDLENBQUM7QUFDdEQsSUFBSVUsTUFBTSxHQUFHVixtQkFBTyxDQUFDLCtEQUFVLENBQUM7QUFDaEMsSUFBSVcsVUFBVSxHQUFHWCxtQkFBTyxDQUFDLDJGQUFvQixDQUFDO0FBQzlDLElBQUlZLGlCQUFpQixHQUFHWixtQkFBTyxDQUFDLDJHQUE0QixDQUFDO0FBQzdELElBQUlhLFlBQVksR0FBR2IsbUJBQU8sQ0FBQyw2RkFBcUIsQ0FBQztBQUNqRCxJQUFJYyxnQkFBZ0IsR0FBR0wsdUJBQXNCLENBQUNULG1CQUFPLENBQUMsdUNBQTBCLENBQUMsQ0FBQztBQUNsRixJQUFJZSxhQUFhLEdBQUdmLG1CQUFPLENBQUMsaUdBQXVCLENBQUM7QUFDcEQsSUFBSWdCLFdBQVcsR0FBR2hCLG1CQUFPLENBQUMsNkZBQXFCLENBQUM7QUFDaEQsSUFBSWlCLFVBQVUsR0FBR2pCLG1CQUFPLENBQUMsMkZBQW9CLENBQUM7QUFDOUMsSUFBSWtCLG1CQUFtQixHQUFHbEIsbUJBQU8sQ0FBQyxzR0FBc0MsQ0FBQztBQUN6RSxJQUFJbUIsVUFBVSxHQUFHbkIsbUJBQU8sQ0FBQywyRkFBb0IsQ0FBQztBQUM5QyxJQUFJb0IsVUFBVSxHQUFHcEIsbUJBQU8sQ0FBQyxrRkFBNEIsQ0FBQztBQUN0RCxJQUFJcUIsYUFBYSxHQUFHckIsbUJBQU8sQ0FBQyx3RkFBK0IsQ0FBQztBQUM1RCxJQUFJc0IsZUFBZSxHQUFHdEIsbUJBQU8sQ0FBQyw4RkFBa0MsQ0FBQztBQUNqRSxJQUFJdUIsWUFBWSxHQUFHdkIsbUJBQU8sQ0FBQyx3RkFBK0IsQ0FBQztBQUMzRCxJQUFJd0IsWUFBWSxHQUFHeEIsbUJBQU8sQ0FBQyx3RkFBK0IsQ0FBQztBQUMzRCxJQUFJeUIsb0JBQW9CLEdBQUd6QixtQkFBTyxDQUFDLG1IQUFnQyxDQUFDO0FBQ3BFLElBQUkwQix1QkFBdUIsR0FBRzFCLG1CQUFPLENBQUMseUhBQW1DLENBQUM7QUFDMUUsU0FBUzJCLGtCQUFrQixDQUFDQyxHQUFHLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRUMsR0FBRyxFQUFFQyxHQUFHLEVBQUU7SUFDdkUsSUFBSTtRQUNBLElBQUlDLElBQUksR0FBR1AsR0FBRyxDQUFDSyxHQUFHLENBQUMsQ0FBQ0MsR0FBRyxDQUFDO1FBQ3hCLElBQUl6QyxLQUFLLEdBQUcwQyxJQUFJLENBQUMxQyxLQUFLO0tBQ3pCLENBQUMsT0FBTzJDLEtBQUssRUFBRTtRQUNaTixNQUFNLENBQUNNLEtBQUssQ0FBQyxDQUFDO1FBQ2QsT0FBTztLQUNWO0lBQ0QsSUFBSUQsSUFBSSxDQUFDRSxJQUFJLEVBQUU7UUFDWFIsT0FBTyxDQUFDcEMsS0FBSyxDQUFDLENBQUM7S0FDbEIsTUFBTTtRQUNINkMsT0FBTyxDQUFDVCxPQUFPLENBQUNwQyxLQUFLLENBQUMsQ0FBQzhDLElBQUksQ0FBQ1IsS0FBSyxFQUFFQyxNQUFNLENBQUMsQ0FBQztLQUM5QztDQUNKO0FBQ0QsU0FBU1EsaUJBQWlCLENBQUNDLEVBQUUsRUFBRTtJQUMzQixPQUFPLFdBQVc7UUFDZCxJQUFJQyxLQUFJLEdBQUcsSUFBSSxFQUFFQyxJQUFJLEdBQUdDLFNBQVM7UUFDakMsT0FBTyxJQUFJTixPQUFPLENBQUMsU0FBU1QsT0FBTyxFQUFFQyxNQUFNLEVBQUU7WUFDekMsSUFBSUYsR0FBRyxHQUFHYSxFQUFFLENBQUNJLEtBQUssQ0FBQ0gsS0FBSSxFQUFFQyxJQUFJLENBQUM7WUFDOUIsU0FBU1osS0FBSyxDQUFDdEMsS0FBSyxFQUFFO2dCQUNsQmtDLGtCQUFrQixDQUFDQyxHQUFHLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRSxNQUFNLEVBQUV2QyxLQUFLLENBQUMsQ0FBQzthQUMxRTtZQUNELFNBQVN1QyxNQUFNLENBQUNjLEdBQUcsRUFBRTtnQkFDakJuQixrQkFBa0IsQ0FBQ0MsR0FBRyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsS0FBSyxFQUFFQyxNQUFNLEVBQUUsT0FBTyxFQUFFYyxHQUFHLENBQUMsQ0FBQzthQUN6RTtZQUNEZixLQUFLLENBQUNnQixTQUFTLENBQUMsQ0FBQztTQUNwQixDQUFDLENBQUM7S0FDTixDQUFDO0NBQ0w7QUFDRCxTQUFTQyxRQUFRLEdBQUc7SUFDaEJBLFFBQVEsR0FBRzFELE1BQU0sQ0FBQzJELE1BQU0sSUFBSSxTQUFTQyxNQUFNLEVBQUU7UUFDekMsSUFBSSxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdQLFNBQVMsQ0FBQ1EsTUFBTSxFQUFFRCxDQUFDLEVBQUUsQ0FBQztZQUNyQyxJQUFJRSxNQUFNLEdBQUdULFNBQVMsQ0FBQ08sQ0FBQyxDQUFDO1lBQ3pCLElBQUksSUFBSWxCLEdBQUcsSUFBSW9CLE1BQU0sQ0FBQztnQkFDbEIsSUFBSS9ELE1BQU0sQ0FBQ2dFLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNILE1BQU0sRUFBRXBCLEdBQUcsQ0FBQyxFQUFFO29CQUNuRGlCLE1BQU0sQ0FBQ2pCLEdBQUcsQ0FBQyxHQUFHb0IsTUFBTSxDQUFDcEIsR0FBRyxDQUFDLENBQUM7aUJBQzdCO2FBQ0o7U0FDSjtRQUNELE9BQU9pQixNQUFNLENBQUM7S0FDakIsQ0FBQztJQUNGLE9BQU9GLFFBQVEsQ0FBQ0gsS0FBSyxDQUFDLElBQUksRUFBRUQsU0FBUyxDQUFDLENBQUM7Q0FDMUM7QUFDRCxTQUFTbkMsdUJBQXNCLENBQUNnRCxHQUFHLEVBQUU7SUFDakMsT0FBT0EsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVUsR0FBR0QsR0FBRyxHQUFHO1FBQ2pDM0QsT0FBTyxFQUFFMkQsR0FBRztLQUNmLENBQUM7Q0FDTDtBQUNELFNBQVNFLHdCQUF3QixHQUFHO0lBQ2hDLElBQUksT0FBT0MsT0FBTyxLQUFLLFVBQVUsRUFBRSxPQUFPLElBQUksQ0FBQztJQUMvQyxJQUFJQyxLQUFLLEdBQUcsSUFBSUQsT0FBTyxFQUFFO0lBQ3pCRCx3QkFBd0IsR0FBRyxTQUEzQkEsd0JBQXdCLEdBQWM7UUFDbEMsT0FBT0UsS0FBSyxDQUFDO0tBQ2hCLENBQUM7SUFDRixPQUFPQSxLQUFLLENBQUM7Q0FDaEI7QUFDRCxTQUFTeEQsdUJBQXVCLENBQUNvRCxHQUFHLEVBQUU7SUFDbEMsSUFBSUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVUsRUFBRTtRQUN2QixPQUFPRCxHQUFHLENBQUM7S0FDZDtJQUNELElBQUlBLEdBQUcsS0FBSyxJQUFJLElBQUksT0FBT0EsR0FBRyxLQUFLLFFBQVEsSUFBSSxPQUFPQSxHQUFHLEtBQUssVUFBVSxFQUFFO1FBQ3RFLE9BQU87WUFDSDNELE9BQU8sRUFBRTJELEdBQUc7U0FDZixDQUFDO0tBQ0w7SUFDRCxJQUFJSSxLQUFLLEdBQUdGLHdCQUF3QixFQUFFO0lBQ3RDLElBQUlFLEtBQUssSUFBSUEsS0FBSyxDQUFDQyxHQUFHLENBQUNMLEdBQUcsQ0FBQyxFQUFFO1FBQ3pCLE9BQU9JLEtBQUssQ0FBQ0UsR0FBRyxDQUFDTixHQUFHLENBQUMsQ0FBQztLQUN6QjtJQUNELElBQUlPLE1BQU0sR0FBRyxFQUFFO0lBQ2YsSUFBSUMscUJBQXFCLEdBQUczRSxNQUFNLENBQUNDLGNBQWMsSUFBSUQsTUFBTSxDQUFDNEUsd0JBQXdCO0lBQ3BGLElBQUksSUFBSWpDLEdBQUcsSUFBSXdCLEdBQUcsQ0FBQztRQUNmLElBQUluRSxNQUFNLENBQUNnRSxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDQyxHQUFHLEVBQUV4QixHQUFHLENBQUMsRUFBRTtZQUNoRCxJQUFJa0MsSUFBSSxHQUFHRixxQkFBcUIsR0FBRzNFLE1BQU0sQ0FBQzRFLHdCQUF3QixDQUFDVCxHQUFHLEVBQUV4QixHQUFHLENBQUMsR0FBRyxJQUFJO1lBQ25GLElBQUlrQyxJQUFJLElBQUksQ0FBQ0EsSUFBSSxDQUFDSixHQUFHLElBQUlJLElBQUksQ0FBQ0MsR0FBRyxDQUFDLEVBQUU7Z0JBQ2hDOUUsTUFBTSxDQUFDQyxjQUFjLENBQUN5RSxNQUFNLEVBQUUvQixHQUFHLEVBQUVrQyxJQUFJLENBQUMsQ0FBQzthQUM1QyxNQUFNO2dCQUNISCxNQUFNLENBQUMvQixHQUFHLENBQUMsR0FBR3dCLEdBQUcsQ0FBQ3hCLEdBQUcsQ0FBQyxDQUFDO2FBQzFCO1NBQ0o7S0FDSjtJQUNEK0IsTUFBTSxDQUFDbEUsT0FBTyxHQUFHMkQsR0FBRyxDQUFDO0lBQ3JCLElBQUlJLEtBQUssRUFBRTtRQUNQQSxLQUFLLENBQUNPLEdBQUcsQ0FBQ1gsR0FBRyxFQUFFTyxNQUFNLENBQUMsQ0FBQztLQUMxQjtJQUNELE9BQU9BLE1BQU0sQ0FBQztDQUNqQjtBQUNELFNBQVNLLHNCQUFzQixHQUFHO0lBQzlCLE9BQU8vRSxNQUFNLENBQUMyRCxNQUFNLENBQUMsSUFBSXFCLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1FBQy9DQyxTQUFTLEVBQUUsSUFBSTtLQUNsQixDQUFDLENBQUM7Q0FDTjtBQUNELFNBQVM3RSxVQUFVLENBQUM4RSxHQUFHLEVBQUU7SUFDckIsZ0VBQWdFO0lBQ2hFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTlELE1BQU0sQ0FBQyxDQUFDK0QsYUFBYSxDQUFDRCxHQUFHLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQztJQUNqRCxJQUFJO1FBQ0EsNERBQTREO1FBQzVELElBQU1FLGNBQWMsR0FBRyxDQUFDLENBQUMsRUFBRWhFLE1BQU0sQ0FBQyxDQUFDaUUsaUJBQWlCLEVBQUU7UUFDdEQsSUFBTUMsUUFBUSxHQUFHLElBQUlDLEdBQUcsQ0FBQ0wsR0FBRyxFQUFFRSxjQUFjLENBQUM7UUFDN0MsT0FBT0UsUUFBUSxDQUFDRSxNQUFNLEtBQUtKLGNBQWMsSUFBSSxDQUFDLENBQUMsRUFBRWxELFlBQVksQ0FBQyxDQUFDdUQsV0FBVyxDQUFDSCxRQUFRLENBQUNJLFFBQVEsQ0FBQyxDQUFDO0tBQ2pHLENBQUMsT0FBT0MsQ0FBQyxFQUFFO1FBQ1IsT0FBTyxLQUFLLENBQUM7S0FDaEI7Q0FDSjtBQUNELFNBQVN0RixhQUFhLENBQUN1RixLQUFLLEVBQUVDLFVBQVUsRUFBRUMsS0FBSyxFQUFFO0lBQzdDLElBQUlDLGlCQUFpQixHQUFHLEVBQUU7SUFDMUIsSUFBTUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxFQUFFdEUsV0FBVyxDQUFDLENBQUN1RSxhQUFhLENBQUNMLEtBQUssQ0FBQztJQUMxRCxJQUFNTSxhQUFhLEdBQUdGLFlBQVksQ0FBQ0csTUFBTTtJQUN6QyxJQUFNQyxjQUFjLEdBQ3BCLENBQUNQLFVBQVUsS0FBS0QsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFbkUsYUFBYSxDQUFDLENBQUM0RSxlQUFlLENBQUNMLFlBQVksQ0FBQyxDQUFDSCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFDMUYsc0VBQXNFO0lBQ3RFQyxLQUFLO0lBQ0xDLGlCQUFpQixHQUFHSCxLQUFLLENBQUM7SUFDMUIsSUFBTVUsTUFBTSxHQUFHdEcsTUFBTSxDQUFDdUcsSUFBSSxDQUFDTCxhQUFhLENBQUM7SUFDekMsSUFBSSxDQUFDSSxNQUFNLENBQUNFLEtBQUssQ0FBQyxTQUFDQyxLQUFLLEVBQUc7UUFDdkIsSUFBSXRHLEtBQUssR0FBR2lHLGNBQWMsQ0FBQ0ssS0FBSyxDQUFDLElBQUksRUFBRTtRQUN2QyxJQUErQlAsTUFBb0IsR0FBcEJBLGFBQWEsQ0FBQ08sS0FBSyxDQUFDLEVBQTNDQyxNQUFNLEdBQWlCUixNQUFvQixDQUEzQ1EsTUFBTSxFQUFHQyxRQUFRLEdBQU1ULE1BQW9CLENBQWxDUyxRQUFRO1FBQ3pCLGlDQUFpQztRQUNqQywwREFBMEQ7UUFDMUQsSUFBSUMsUUFBUSxHQUFHLEdBQUUsQ0FBd0JILE1BQUssQ0FBM0JDLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFTLE9BQUMsQ0FBUEQsS0FBSyxFQUFDLEdBQUMsQ0FBQztRQUNqRCxJQUFJRSxRQUFRLEVBQUU7WUFDVkMsUUFBUSxHQUFHLEVBQUMsQ0FBdUJBLE1BQVEsQ0FBN0IsQ0FBQ3pHLEtBQUssR0FBRyxHQUFHLEdBQUcsRUFBRSxFQUFDLEdBQUMsQ0FBVyxPQUFDLENBQVZ5RyxRQUFRLEVBQUMsR0FBQyxDQUFDLENBQUM7U0FDbEQ7UUFDRCxJQUFJRixNQUFNLElBQUksQ0FBQ0csS0FBSyxDQUFDQyxPQUFPLENBQUMzRyxLQUFLLENBQUMsRUFBRUEsS0FBSyxHQUFHO1lBQ3pDQSxLQUFLO1NBQ1IsQ0FBQztRQUNGLE9BQU8sQ0FBQ3dHLFFBQVEsSUFBSUYsS0FBSyxJQUFJTCxjQUFjLENBQUMsSUFDNUMsQ0FBQ0wsaUJBQWlCLEdBQUdBLGlCQUFpQixDQUFDZ0IsT0FBTyxDQUFDSCxRQUFRLEVBQUVGLE1BQU0sR0FBR3ZHLEtBQUssQ0FBQzZHLEdBQUcsQ0FDM0UsdURBQXVEO1FBQ3ZELGtEQUFrRDtRQUNsRCxvQ0FBb0M7UUFDcEMsU0FBQ0MsT0FBTzttQkFBR0Msa0JBQWtCLENBQUNELE9BQU8sQ0FBQztTQUFBLENBQUMsQ0FBQ0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHRCxrQkFBa0IsQ0FBQy9HLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7S0FDMUYsQ0FBQyxFQUFFO1FBQ0E0RixpQkFBaUIsR0FBRyxFQUFFLENBQUMsbUNBQW1DO1FBQXBDLENBQ3JCO0lBQ0wsdUVBQXVFO0lBQ3ZFLGtEQUFrRDtLQUNqRDtJQUNELE9BQU87UUFDSE8sTUFBTSxFQUFOQSxNQUFNO1FBQ05jLE1BQU0sRUFBRXJCLGlCQUFpQjtLQUM1QixDQUFDO0NBQ0w7QUFDRCxTQUFTc0IsSUFBSSxDQUFDQyxNQUFNLEVBQUVmLElBQUksRUFBRTtJQUN4QixJQUFNZ0IsT0FBTyxHQUFHLEVBQUU7SUFDbEJ2SCxNQUFNLENBQUN1RyxJQUFJLENBQUNlLE1BQU0sQ0FBQyxDQUFDRSxPQUFPLENBQUMsU0FBQzdFLEdBQUcsRUFBRztRQUMvQixJQUFJLENBQUM0RCxJQUFJLENBQUNrQixRQUFRLENBQUM5RSxHQUFHLENBQUMsRUFBRTtZQUNyQjRFLE9BQU8sQ0FBQzVFLEdBQUcsQ0FBQyxHQUFHMkUsTUFBTSxDQUFDM0UsR0FBRyxDQUFDLENBQUM7U0FDOUI7S0FDSixDQUFDLENBQUM7SUFDSCxPQUFPNEUsT0FBTyxDQUFDO0NBQ2xCO0FBQ0QsU0FBU2pILFdBQVcsQ0FBQ29ILE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxTQUFTLEVBQUU7SUFDMUMsNENBQTRDO0lBQzVDLElBQUlDLElBQUk7SUFDUixJQUFJQyxXQUFXLEdBQUcsT0FBT0gsSUFBSSxLQUFLLFFBQVEsR0FBR0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFaEcsVUFBVSxDQUFDLENBQUNvRyxvQkFBb0IsQ0FBQ0osSUFBSSxDQUFDO0lBQzlGLDZEQUE2RDtJQUM3RCxtREFBbUQ7SUFDbkQsSUFBTUssYUFBYSxHQUFHRixXQUFXLENBQUNHLEtBQUssc0JBQXNCO0lBQzdELElBQU1DLGtCQUFrQixHQUFHRixhQUFhLEdBQUdGLFdBQVcsQ0FBQ0ssS0FBSyxDQUFDSCxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUNsRSxNQUFNLENBQUMsR0FBR2dFLFdBQVc7SUFDbkcsSUFBTU0sUUFBUSxHQUFHRixrQkFBa0IsQ0FBQ0csS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUM5QyxJQUFJLENBQUNELFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQ0gsS0FBSyxhQUFhLEVBQUU7UUFDeENLLE9BQU8sQ0FBQ3hGLEtBQUssQ0FBQyxzQ0FBcUMsQ0FBYyxNQUEyRSxDQUF2RmdGLFdBQVcsRUFBQyw2RUFBMkUsQ0FBQyxDQUFDLENBQUM7UUFDL0ksSUFBTVMsYUFBYSxHQUFHLENBQUMsQ0FBQyxFQUFFbkgsTUFBTSxDQUFDLENBQUNvSCx3QkFBd0IsQ0FBQ04sa0JBQWtCLENBQUM7UUFDOUVKLFdBQVcsR0FBRyxDQUFDRSxhQUFhLEdBQUdBLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBR08sYUFBYSxDQUFDO0tBQ3pFO0lBQ0QsMkRBQTJEO0lBQzNELElBQUksQ0FBQ25JLFVBQVUsQ0FBQzBILFdBQVcsQ0FBQyxFQUFFO1FBQzFCLE9BQU9GLFNBQVMsR0FBRztZQUNmRSxXQUFXO1NBQ2QsR0FBR0EsV0FBVyxDQUFDO0tBQ25CO0lBQ0QsSUFBSTtRQUNBRCxJQUFJLEdBQUcsSUFBSXRDLEdBQUcsQ0FBQ3VDLFdBQVcsQ0FBQ1csVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHZixNQUFNLENBQUNnQixNQUFNLEdBQUdoQixNQUFNLENBQUNoQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FDN0YsQ0FBQyxPQUFPQyxDQUFDLEVBQUU7UUFDUixrREFBa0Q7UUFDbERrQyxJQUFJLEdBQUcsSUFBSXRDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FDbkM7SUFDRCxJQUFJO1FBQ0EsSUFBTW9ELFFBQVEsR0FBRyxJQUFJcEQsR0FBRyxDQUFDdUMsV0FBVyxFQUFFRCxJQUFJLENBQUM7UUFDM0NjLFFBQVEsQ0FBQ2pELFFBQVEsR0FBRyxDQUFDLENBQUMsRUFBRWpGLHVCQUF1QixDQUFDLENBQUNtSSwwQkFBMEIsQ0FBQ0QsUUFBUSxDQUFDakQsUUFBUSxDQUFDLENBQUM7UUFDL0YsSUFBSW1ELGNBQWMsR0FBRyxFQUFFO1FBQ3ZCLElBQUksQ0FBQyxDQUFDLEVBQUV4SCxVQUFVLENBQUMsQ0FBQ3lILGNBQWMsQ0FBQ0gsUUFBUSxDQUFDakQsUUFBUSxDQUFDLElBQUlpRCxRQUFRLENBQUNJLFlBQVksSUFBSW5CLFNBQVMsRUFBRTtZQUN6RixJQUFNOUIsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFdkUsWUFBWSxDQUFDLENBQUN5SCxzQkFBc0IsQ0FBQ0wsUUFBUSxDQUFDSSxZQUFZLENBQUM7WUFDN0UsSUFBNkIxSSxHQUEwRCxHQUExREEsYUFBYSxDQUFDc0ksUUFBUSxDQUFDakQsUUFBUSxFQUFFaUQsUUFBUSxDQUFDakQsUUFBUSxFQUFFSSxLQUFLLENBQUMsRUFBL0VzQixNQUFNLEdBQWUvRyxHQUEwRCxDQUEvRStHLE1BQU0sRUFBR2QsTUFBTSxHQUFNakcsR0FBMEQsQ0FBdEVpRyxNQUFNO1lBQ3ZCLElBQUljLE1BQU0sRUFBRTtnQkFDUnlCLGNBQWMsR0FBRyxDQUFDLENBQUMsRUFBRWxILFVBQVUsQ0FBQyxDQUFDb0csb0JBQW9CLENBQUM7b0JBQ2xEckMsUUFBUSxFQUFFMEIsTUFBTTtvQkFDaEI2QixJQUFJLEVBQUVOLFFBQVEsQ0FBQ00sSUFBSTtvQkFDbkJuRCxLQUFLLEVBQUV1QixJQUFJLENBQUN2QixLQUFLLEVBQUVRLE1BQU0sQ0FBQztpQkFDN0IsQ0FBQyxDQUFDO2FBQ047U0FDSjtRQUNELG9FQUFvRTtRQUNwRSxJQUFNNEMsWUFBWSxHQUFHUCxRQUFRLENBQUNuRCxNQUFNLEtBQUtxQyxJQUFJLENBQUNyQyxNQUFNLEdBQUdtRCxRQUFRLENBQUNoQixJQUFJLENBQUNRLEtBQUssQ0FBQ1EsUUFBUSxDQUFDbkQsTUFBTSxDQUFDMUIsTUFBTSxDQUFDLEdBQUc2RSxRQUFRLENBQUNoQixJQUFJO1FBQ2xILE9BQU9DLFNBQVMsR0FBRztZQUNmc0IsWUFBWTtZQUNaTCxjQUFjLElBQUlLLFlBQVk7U0FDakMsR0FBR0EsWUFBWSxDQUFDO0tBQ3BCLENBQUMsT0FBT0MsRUFBRSxFQUFFO1FBQ1QsT0FBT3ZCLFNBQVMsR0FBRztZQUNmRSxXQUFXO1NBQ2QsR0FBR0EsV0FBVyxDQUFDO0tBQ25CO0NBQ0o7QUFDRCxTQUFTc0IsV0FBVyxDQUFDbEUsR0FBRyxFQUFFO0lBQ3RCLElBQU1NLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRXBFLE1BQU0sQ0FBQyxDQUFDaUUsaUJBQWlCLEVBQUU7SUFDOUMsT0FBT0gsR0FBRyxDQUFDdUQsVUFBVSxDQUFDakQsTUFBTSxDQUFDLEdBQUdOLEdBQUcsQ0FBQ21FLFNBQVMsQ0FBQzdELE1BQU0sQ0FBQzFCLE1BQU0sQ0FBQyxHQUFHb0IsR0FBRyxDQUFDO0NBQ3RFO0FBQ0QsU0FBU29FLFlBQVksQ0FBQzVCLE1BQU0sRUFBRXhDLEdBQUcsRUFBRXFFLEVBQUUsRUFBRTtJQUNuQyxzREFBc0Q7SUFDdEQsa0RBQWtEO0lBQ2xELElBQWlDakosR0FBOEIsa0JBQTlCQSxXQUFXLENBQUNvSCxNQUFNLEVBQUV4QyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQTFEZ0UsWUFBWSxHQUFnQjVJLEdBQThCLEdBQTlDLEVBQUVrSixVQUFVLEdBQUlsSixHQUE4QixHQUFsQztJQUM3QixJQUFNa0YsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFcEUsTUFBTSxDQUFDLENBQUNpRSxpQkFBaUIsRUFBRTtJQUM5QyxJQUFNb0UsYUFBYSxHQUFHUCxZQUFZLENBQUNULFVBQVUsQ0FBQ2pELE1BQU0sQ0FBQztJQUNyRCxJQUFNa0UsV0FBVyxHQUFHRixVQUFVLElBQUlBLFVBQVUsQ0FBQ2YsVUFBVSxDQUFDakQsTUFBTSxDQUFDO0lBQy9EMEQsWUFBWSxHQUFHRSxXQUFXLENBQUNGLFlBQVksQ0FBQyxDQUFDO0lBQ3pDTSxVQUFVLEdBQUdBLFVBQVUsR0FBR0osV0FBVyxDQUFDSSxVQUFVLENBQUMsR0FBR0EsVUFBVSxDQUFDO0lBQy9ELElBQU1HLFdBQVcsR0FBR0YsYUFBYSxHQUFHUCxZQUFZLEdBQUcsQ0FBQyxDQUFDLEVBQUVqSCxZQUFZLENBQUMsQ0FBQzJILFdBQVcsQ0FBQ1YsWUFBWSxDQUFDO0lBQzlGLElBQU1XLFVBQVUsR0FBR04sRUFBRSxHQUFHSCxXQUFXLENBQUM5SSxXQUFXLENBQUNvSCxNQUFNLEVBQUU2QixFQUFFLENBQUMsQ0FBQyxHQUFHQyxVQUFVLElBQUlOLFlBQVk7SUFDekYsT0FBTztRQUNIaEUsR0FBRyxFQUFFeUUsV0FBVztRQUNoQkosRUFBRSxFQUFFRyxXQUFXLEdBQUdHLFVBQVUsR0FBRyxDQUFDLENBQUMsRUFBRTVILFlBQVksQ0FBQyxDQUFDMkgsV0FBVyxDQUFDQyxVQUFVLENBQUM7S0FDM0UsQ0FBQztDQUNMO0FBQ0QsU0FBU0MsbUJBQW1CLENBQUNwRSxRQUFRLEVBQUVxRSxLQUFLLEVBQUU7SUFDMUMsSUFBTUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxFQUFFckosb0JBQW9CLENBQUMsQ0FBQ3NKLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxFQUFFakosb0JBQW9CLENBQUMsQ0FBQ2tKLG1CQUFtQixDQUFDeEUsUUFBUSxDQUFDLENBQUM7SUFDNUgsSUFBSXNFLGFBQWEsS0FBSyxNQUFNLElBQUlBLGFBQWEsS0FBSyxTQUFTLEVBQUU7UUFDekQsT0FBT3RFLFFBQVEsQ0FBQztLQUNuQjtJQUNELDJDQUEyQztJQUMzQyxJQUFJLENBQUNxRSxLQUFLLENBQUN0QyxRQUFRLENBQUN1QyxhQUFhLENBQUMsRUFBRTtRQUNoQyxpREFBaUQ7UUFDakRELEtBQUssQ0FBQ0ksSUFBSSxDQUFDLFNBQUNDLElBQUksRUFBRztZQUNmLElBQUksQ0FBQyxDQUFDLEVBQUUvSSxVQUFVLENBQUMsQ0FBQ3lILGNBQWMsQ0FBQ3NCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFMUksV0FBVyxDQUFDLENBQUN1RSxhQUFhLENBQUNtRSxJQUFJLENBQUMsQ0FBQ0MsRUFBRSxDQUFDQyxJQUFJLENBQUNOLGFBQWEsQ0FBQyxFQUFFO2dCQUNyR3RFLFFBQVEsR0FBRzBFLElBQUksQ0FBQztnQkFDaEIsT0FBTyxJQUFJLENBQUM7YUFDZjtTQUNKLENBQUMsQ0FBQztLQUNOO0lBQ0QsT0FBTyxDQUFDLENBQUMsRUFBRXpKLG9CQUFvQixDQUFDLENBQUNzSixtQkFBbUIsQ0FBQ3ZFLFFBQVEsQ0FBQyxDQUFDO0NBQ2xFO0FBQ0QsSUFBTTZFLHVCQUF1QixHQUFHQyxNQUErRyxJQUFJLENBTWhKO0FBQ0gsSUFBTVUsa0JBQWtCLEdBQUdDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQztBQUN2RCxTQUFTQyxVQUFVLENBQUNsRyxHQUFHLEVBQUVtRyxRQUFRLEVBQUVDLE9BQU8sRUFBRTtJQUN4QyxPQUFPQyxLQUFLLENBQUNyRyxHQUFHLEVBQUU7UUFDZCxzRUFBc0U7UUFDdEUseURBQXlEO1FBQ3pELEVBQUU7UUFDRixvRUFBb0U7UUFDcEUsWUFBWTtRQUNaLHlFQUF5RTtRQUN6RSxFQUFFO1FBQ0YsaUVBQWlFO1FBQ2pFLHNFQUFzRTtRQUN0RSw4Q0FBOEM7UUFDOUMsMENBQTBDO1FBQzFDc0csV0FBVyxFQUFFLGFBQWE7UUFDMUJDLE1BQU0sRUFBRUgsT0FBTyxDQUFDRyxNQUFNLElBQUksS0FBSztRQUMvQkMsT0FBTyxFQUFFMUwsTUFBTSxDQUFDMkQsTUFBTSxDQUFDLEVBQUUsRUFBRTJILE9BQU8sQ0FBQ0ksT0FBTyxFQUFFO1lBQ3hDLGVBQWUsRUFBRSxHQUFHO1NBQ3ZCLENBQUM7S0FDTCxDQUFDLENBQUN6SSxJQUFJLENBQUMsU0FBQzBJLFFBQVEsRUFBRztRQUNoQixPQUFPLENBQUNBLFFBQVEsQ0FBQ0MsRUFBRSxJQUFJUCxRQUFRLEdBQUcsQ0FBQyxJQUFJTSxRQUFRLENBQUNFLE1BQU0sSUFBSSxHQUFHLEdBQUdULFVBQVUsQ0FBQ2xHLEdBQUcsRUFBRW1HLFFBQVEsR0FBRyxDQUFDLEVBQUVDLE9BQU8sQ0FBQyxHQUFHSyxRQUFRLENBQUM7S0FDckgsQ0FBQyxDQUFDO0NBQ047QUFDRCxJQUFNRyxlQUFlLEdBQUcsRUFBRTtBQUMxQixTQUFTQyxhQUFhLENBQUMsS0FBZ0osRUFBRTtRQUFoSkMsUUFBUSxHQUFWLEtBQWdKLENBQTlJQSxRQUFRLEVBQUdDLGFBQWEsR0FBMUIsS0FBZ0osQ0FBbklBLGFBQWEsRUFBR0MsVUFBVSxHQUF2QyxLQUFnSixDQUFuSEEsVUFBVSxFQUFHQyxhQUFhLEdBQXZELEtBQWdKLENBQXRHQSxhQUFhLEVBQUdDLGNBQWMsR0FBeEUsS0FBZ0osQ0FBdEZBLGNBQWMsRUFBR0MsU0FBUyxHQUFwRixLQUFnSixDQUFyRUEsU0FBUyxFQUFHQyxZQUFZLEdBQW5HLEtBQWdKLENBQXpEQSxZQUFZLEVBQUdDLFlBQVksR0FBbEgsS0FBZ0osQ0FBMUNBLFlBQVksRUFBR0Msd0JBQXdCLEdBQTdJLEtBQWdKLENBQTNCQSx3QkFBd0I7SUFDaEssSUFBNEIsR0FBdUMsR0FBdkMsSUFBSWpILEdBQUcsQ0FBQ3lHLFFBQVEsRUFBRXJCLE1BQU0sQ0FBQzhCLFFBQVEsQ0FBQzlFLElBQUksQ0FBQyxFQUEzREEsUUFBYyxHQUFNLEdBQXVDLENBQTNEQSxJQUFJO0lBQ1osSUFBSWdGLElBQUk7SUFDUixJQUFNQyxPQUFPLEdBQUcsU0FBQ3RHLE1BQU0sRUFBRztRQUN0QixPQUFPOEUsVUFBVSxDQUFDWSxRQUFRLEVBQUVJLGNBQWMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2hEVixPQUFPLEVBQUVRLFVBQVUsR0FBRztnQkFDbEJXLE9BQU8sRUFBRSxVQUFVO2FBQ3RCLEdBQUcsRUFBRTtZQUNOcEIsTUFBTSxFQUFFLENBQUNrQixJQUFJLEdBQUdyRyxNQUFNLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHQSxNQUFNLENBQUNtRixNQUFNLENBQUMsSUFBSSxJQUFJLEdBQUdrQixJQUFJLEdBQUcsS0FBSztTQUNsRixDQUFDLENBQUMxSixJQUFJLENBQUMsU0FBQzBJLFFBQVEsRUFBRztZQUNoQixJQUFJQSxRQUFRLENBQUNDLEVBQUUsSUFBSSxDQUFDdEYsTUFBTSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsR0FBR0EsTUFBTSxDQUFDbUYsTUFBTSxDQUFDLEtBQUssTUFBTSxFQUFFO2dCQUNyRSxPQUFPO29CQUNITyxRQUFRLEVBQVJBLFFBQVE7b0JBQ1JMLFFBQVEsRUFBUkEsUUFBUTtvQkFDUm1CLElBQUksRUFBRSxFQUFFO29CQUNSQyxJQUFJLEVBQUUsRUFBRTtpQkFDWCxDQUFDO2FBQ0w7WUFDRCxPQUFPcEIsUUFBUSxDQUFDbUIsSUFBSSxFQUFFLENBQUM3SixJQUFJLENBQUMsU0FBQzZKLElBQUksRUFBRztnQkFDaEMsSUFBSSxDQUFDbkIsUUFBUSxDQUFDQyxFQUFFLEVBQUU7b0JBQ2Q7Ozs7O2VBS0wsQ0FBQyxJQUFJTyxhQUFhLElBQUk7QUFDYiwyQkFBRztBQUNILDJCQUFHO0FBQ0gsMkJBQUc7QUFDSCwyQkFBRztxQkFDTixDQUFDMUUsUUFBUSxDQUFDa0UsUUFBUSxDQUFDRSxNQUFNLENBQUMsRUFBRTt3QkFDekIsT0FBTzs0QkFDSEcsUUFBUSxFQUFSQSxRQUFROzRCQUNSTCxRQUFRLEVBQVJBLFFBQVE7NEJBQ1JtQixJQUFJLEVBQUpBLElBQUk7NEJBQ0pDLElBQUksRUFBRSxFQUFFO3lCQUNYLENBQUM7cUJBQ0w7b0JBQ0QsSUFBSXBCLFFBQVEsQ0FBQ0UsTUFBTSxLQUFLLEdBQUcsRUFBRTt3QkFDekIsSUFBSW1CLEdBQUc7d0JBQ1AsSUFBSSxDQUFDQSxHQUFHLEdBQUdDLGdCQUFnQixDQUFDSCxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsR0FBR0UsR0FBRyxDQUFDRSxRQUFRLEVBQUU7NEJBQ2hFLE9BQU87Z0NBQ0hsQixRQUFRLEVBQVJBLFFBQVE7Z0NBQ1JlLElBQUksRUFBRTtvQ0FDRkcsUUFBUSxFQUFFaEMsa0JBQWtCO2lDQUMvQjtnQ0FDRFMsUUFBUSxFQUFSQSxRQUFRO2dDQUNSbUIsSUFBSSxFQUFKQSxJQUFJOzZCQUNQLENBQUM7eUJBQ0w7d0JBQ0Q7Ozs7O2lCQUtQLENBQUMsSUFBSVgsYUFBYSxFQUFFOzRCQUNULE9BQU87Z0NBQ0hILFFBQVEsRUFBUkEsUUFBUTtnQ0FDUkwsUUFBUSxFQUFSQSxRQUFRO2dDQUNSbUIsSUFBSSxFQUFKQSxJQUFJO2dDQUNKQyxJQUFJLEVBQUUsRUFBRTs2QkFDWCxDQUFDO3lCQUNMO3FCQUNKO29CQUNELElBQU1qSyxLQUFLLEdBQUcsSUFBSWtDLEtBQUssQ0FBRSw2QkFBMkIsQ0FBRTtvQkFDdEQ7Ozs7ZUFJTCxDQUFDLElBQUksQ0FBQ29ILGNBQWMsRUFBRTt3QkFDYixDQUFDLENBQUMsRUFBRXhMLFlBQVksQ0FBQyxDQUFDdU0sY0FBYyxDQUFDckssS0FBSyxDQUFDLENBQUM7cUJBQzNDO29CQUNELE1BQU1BLEtBQUssQ0FBQztpQkFDZjtnQkFDRCxPQUFPO29CQUNIa0osUUFBUSxFQUFSQSxRQUFRO29CQUNSZSxJQUFJLEVBQUVWLFNBQVMsR0FBR1ksZ0JBQWdCLENBQUNILElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQzdDbkIsUUFBUSxFQUFSQSxRQUFRO29CQUNSbUIsSUFBSSxFQUFKQSxJQUFJO2lCQUNQLENBQUM7YUFDTCxDQUFDLENBQUM7U0FDTixDQUFDLENBQUM3SixJQUFJLENBQUMsU0FBQ21LLElBQUksRUFBRztZQUNaLElBQUksQ0FBQ2QsWUFBWSxJQUFJOUIsYUFyWXBCLEtBcVk2QyxZQUFZLElBQUk0QyxDQUE4RCxFQUFFO2dCQUMxSCxPQUFPbkIsYUFBYSxDQUFDUyxRQUFRLENBQUMsQ0FBQzthQUNsQztZQUNELE9BQU9VLElBQUksQ0FBQztTQUNmLENBQUMsQ0FBQ0MsS0FBSyxDQUFDLFNBQUM3SixHQUFHLEVBQUc7WUFDWixPQUFPeUksYUFBYSxDQUFDUyxRQUFRLENBQUMsQ0FBQztZQUMvQixNQUFNbEosR0FBRyxDQUFDO1NBQ2IsQ0FBQyxDQUFDO0tBQ047SUFDRCwrQ0FBK0M7SUFDL0MsZ0RBQWdEO0lBQ2hELDBEQUEwRDtJQUMxRCwyREFBMkQ7SUFDM0QsSUFBSWdKLHdCQUF3QixJQUFJRixZQUFZLEVBQUU7UUFDMUMsT0FBT00sT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDM0osSUFBSSxDQUFDLFNBQUNtSyxJQUFJLEVBQUc7WUFDNUJuQixhQUFhLENBQUNTLFFBQVEsQ0FBQyxHQUFHMUosT0FBTyxDQUFDVCxPQUFPLENBQUM2SyxJQUFJLENBQUMsQ0FBQztZQUNoRCxPQUFPQSxJQUFJLENBQUM7U0FDZixDQUFDLENBQUM7S0FDTjtJQUNELElBQUluQixhQUFhLENBQUNTLFFBQVEsQ0FBQyxLQUFLakosU0FBUyxFQUFFO1FBQ3ZDLE9BQU93SSxhQUFhLENBQUNTLFFBQVEsQ0FBQyxDQUFDO0tBQ2xDO0lBQ0QsT0FBT1QsYUFBYSxDQUFDUyxRQUFRLENBQUMsR0FBR0UsT0FBTyxDQUFDTCxZQUFZLEdBQUc7UUFDcERkLE1BQU0sRUFBRSxNQUFNO0tBQ2pCLEdBQUcsRUFBRSxDQUFDLENBQUM7Q0FDWDtBQUNELFNBQVN3QixnQkFBZ0IsQ0FBQ0gsSUFBSSxFQUFFO0lBQzVCLElBQUk7UUFDQSxPQUFPUSxJQUFJLENBQUNDLEtBQUssQ0FBQ1QsSUFBSSxDQUFDLENBQUM7S0FDM0IsQ0FBQyxPQUFPaEssS0FBSyxFQUFFO1FBQ1osT0FBTyxFQUFFLENBQUM7S0FDYjtDQUNKO0FBQ0QsU0FBU3ZDLFNBQVMsR0FBRztJQUNqQixPQUFPaU4sSUFBSSxDQUFDQyxNQUFNLEVBQUUsQ0FBQ0MsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDdkYsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztDQUNsRDtBQUNELFNBQVN3RixvQkFBb0IsQ0FBQyxLQUFpQixFQUFFO1FBQWpCekksR0FBRyxHQUFMLEtBQWlCLENBQWZBLEdBQUcsRUFBR3dDLE1BQU0sR0FBZCxLQUFpQixDQUFUQSxNQUFNO0lBQ3hDLHdEQUF3RDtJQUN4RCxrREFBa0Q7SUFDbEQsSUFBSXhDLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRWpELFlBQVksQ0FBQyxDQUFDMkgsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFOUgsVUFBVSxDQUFDLENBQUM4TCxTQUFTLENBQUNsRyxNQUFNLENBQUNnQixNQUFNLEVBQUVoQixNQUFNLENBQUNtRyxNQUFNLENBQUMsQ0FBQyxFQUFFO1FBQ2hHLE1BQU0sSUFBSTdJLEtBQUssQ0FBQyx3REFBdUQsQ0FBU3lILE1BQWEsQ0FBcEJ2SCxHQUFHLEVBQUMsR0FBQyxDQUFnQixRQUFkdUgsUUFBUSxDQUFDOUUsSUFBSSxDQUFFLENBQUMsQ0FBQztLQUNwRztJQUNEZ0QsTUFBTSxDQUFDOEIsUUFBUSxDQUFDOUUsSUFBSSxHQUFHekMsR0FBRyxDQUFDO0NBQzlCO0FBQ0QsSUFBTTRJLG1CQUFtQixHQUFHLGdCQUF1QjtRQUFwQmxJLEtBQUssU0FBTEEsS0FBSyxFQUFHOEIsTUFBTSxTQUFOQSxNQUFNO0lBQ3pDLElBQUl6QyxTQUFTLEdBQUcsS0FBSztJQUNyQixJQUFNOEksTUFBTSxHQUFHckcsTUFBTSxDQUFDc0csR0FBRyxHQUFHLFdBQUk7UUFDNUIvSSxTQUFTLEdBQUcsSUFBSSxDQUFDO0tBQ3BCO0lBQ0QsSUFBTWdKLGVBQWUsR0FBRyxXQUFJO1FBQ3hCLElBQUloSixTQUFTLEVBQUU7WUFDWCxJQUFNbkMsS0FBSyxHQUFHLElBQUlrQyxLQUFLLENBQUMsdUNBQXNDLENBQVEsTUFBQyxDQUFQWSxLQUFLLEVBQUMsR0FBQyxDQUFDLENBQUM7WUFDekU5QyxLQUFLLENBQUNtQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLE1BQU1uQyxLQUFLLENBQUM7U0FDZjtRQUNELElBQUlpTCxNQUFNLEtBQUtyRyxNQUFNLENBQUNzRyxHQUFHLEVBQUU7WUFDdkJ0RyxNQUFNLENBQUNzRyxHQUFHLEdBQUcsSUFBSSxDQUFDO1NBQ3JCO0tBQ0o7SUFDRCxPQUFPQyxlQUFlLENBQUM7Q0FDMUI7QUFDRCxVQUFZLGlCQTJtQ1I7YUEzbUNFQyxNQUFNLENBaThCSUMsU0FBUyxFQUFFQyxNQUFNLEVBQUVDLEdBQUcsRUFBRSxLQUFtSztZQUFqS0MsWUFBWSxHQUFkLEtBQW1LLENBQWpLQSxZQUFZLEVBQUdDLFVBQVUsR0FBM0IsS0FBbUssQ0FBbEpBLFVBQVUsRUFBR0MsR0FBRyxHQUFqQyxLQUFtSyxDQUFySUEsR0FBRyxFQUFHQyxPQUFPLEdBQTNDLEtBQW1LLENBQS9IQSxPQUFPLEVBQUdDLFNBQVMsR0FBdkQsS0FBbUssQ0FBckhBLFNBQVMsRUFBR2xMLEdBQUcsR0FBN0QsS0FBbUssQ0FBekdBLEdBQUcsRUFBR21MLFlBQVksR0FBNUUsS0FBbUssQ0FBbkdBLFlBQVksRUFBR0MsVUFBVSxHQUF6RixLQUFtSyxDQUFwRkEsVUFBVSxFQUFHZixNQUFNLEdBQWxHLEtBQW1LLENBQXZFQSxNQUFNLEVBQUdnQixPQUFPLEdBQTVHLEtBQW1LLENBQTlEQSxPQUFPLEVBQUdDLGFBQWEsR0FBNUgsS0FBbUssQ0FBcERBLGFBQWEsRUFBR0MsYUFBYSxHQUE1SSxLQUFtSyxDQUFwQ0EsYUFBYSxFQUFHQyxTQUFTLEdBQXhKLEtBQW1LLENBQXBCQSxTQUFTLEVBQUdDLEtBQUssR0FBaEssS0FBbUssQ0FBUkEsS0FBSzs7O1FBQ2hNLG9CQUFvQjtRQUNwQixJQUFJLENBQUNDLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDZCxJQUFJLENBQUNDLG9CQUFvQixHQUFHLElBQUksQ0FBQztRQUNqQyxJQUFJLENBQUNDLElBQUksR0FBRzdPLFNBQVMsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQzhPLFVBQVUsR0FBRyxTQUFDQyxDQUFDLEVBQUc7WUFDbkIsSUFBTSxvQkFBc0IsU0FBcEJILG9CQUFvQjtZQUM1QixNQUFLQSxvQkFBb0IsR0FBRyxLQUFLLENBQUM7WUFDbEMsSUFBTUksS0FBSyxHQUFHRCxDQUFDLENBQUNDLEtBQUs7WUFDckIsSUFBSSxDQUFDQSxLQUFLLEVBQUU7Z0JBQ1IsNkNBQTZDO2dCQUM3QyxzREFBc0Q7Z0JBQ3RELGtDQUFrQztnQkFDbEMsRUFBRTtnQkFDRixvRUFBb0U7Z0JBQ3BFLDRCQUE0QjtnQkFDNUIsNERBQTREO2dCQUM1RCxrRkFBa0Y7Z0JBQ2xGLGdEQUFnRDtnQkFDaEQsSUFBUTdKLFFBQVEsU0FBUkEsUUFBUSxFQUFHSSxLQUFLLFNBQUxBLEtBQUs7Z0JBQ3hCLE1BQUswSixXQUFXLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFN04sVUFBVSxDQUFDLENBQUNvRyxvQkFBb0IsQ0FBQztvQkFDbEVyQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUV6RCxZQUFZLENBQUMsQ0FBQzJILFdBQVcsQ0FBQ2xFLFFBQVEsQ0FBQztvQkFDakRJLEtBQUssRUFBTEEsS0FBSztpQkFDUixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUxRSxNQUFNLENBQUMsQ0FBQ3FPLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQzFCLE9BQU87YUFDVjtZQUNELGtGQUFrRjtZQUNsRixJQUFJRixLQUFLLENBQUNHLElBQUksRUFBRTtnQkFDWi9FLE1BQU0sQ0FBQzhCLFFBQVEsQ0FBQ2tELE1BQU0sRUFBRSxDQUFDO2dCQUN6QixPQUFPO2FBQ1Y7WUFDRCxJQUFJLENBQUNKLEtBQUssQ0FBQ0ssR0FBRyxFQUFFO2dCQUNaLE9BQU87YUFDVjtZQUNELHlEQUF5RDtZQUN6RCxJQUFJVCxvQkFBb0IsSUFBSSxNQUFLdEIsTUFBTSxLQUFLMEIsS0FBSyxDQUFDakUsT0FBTyxDQUFDdUMsTUFBTSxJQUFJMEIsS0FBSyxDQUFDaEcsRUFBRSxLQUFLLE1BQUtiLE1BQU0sRUFBRTtnQkFDMUYsT0FBTzthQUNWO1lBQ0QsSUFBSW1ILFlBQVk7WUFDaEIsSUFBUTNLLEdBQUcsR0FBMkJxSyxLQUFLLENBQW5DckssR0FBRyxFQUFHcUUsRUFBRSxHQUFzQmdHLEtBQUssQ0FBN0JoRyxFQUFFLEVBQUcrQixPQUFPLEdBQVlpRSxLQUFLLENBQXhCakUsT0FBTyxFQUFHM0ksR0FBRyxHQUFNNE0sS0FBSyxDQUFkNU0sR0FBRztZQUNoQyxJQUFJNkgsS0FBcUMsRUFBRSxVQXNCMUM7WUFDRCxNQUFLNEUsSUFBSSxHQUFHek0sR0FBRyxDQUFDO1lBQ2hCLElBQU0sU0FBVSxHQUFNLENBQUMsQ0FBQyxFQUFFckIsaUJBQWlCLENBQUMsQ0FBQytPLGdCQUFnQixDQUFDbkwsR0FBRyxDQUFDLENBQTFEUSxRQUFRO1lBQ2hCLGdEQUFnRDtZQUNoRCx5REFBeUQ7WUFDekQsSUFBSSxNQUFLNEssS0FBSyxJQUFJL0csRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFdEgsWUFBWSxDQUFDLENBQUMySCxXQUFXLENBQUMsTUFBS2xCLE1BQU0sQ0FBQyxJQUFJaEQsU0FBUSxLQUFLLENBQUMsQ0FBQyxFQUFFekQsWUFBWSxDQUFDLENBQUMySCxXQUFXLENBQUMsTUFBS2xFLFFBQVEsQ0FBQyxFQUFFO2dCQUM5SCxPQUFPO2FBQ1Y7WUFDRCx1REFBdUQ7WUFDdkQsd0RBQXdEO1lBQ3hELElBQUksTUFBSzZLLElBQUksSUFBSSxDQUFDLE1BQUtBLElBQUksQ0FBQ2hCLEtBQUssQ0FBQyxFQUFFO2dCQUNoQyxPQUFPO2FBQ1Y7WUFDRCxNQUFLaUIsTUFBTSxDQUFDLGNBQWMsRUFBRXRMLEdBQUcsRUFBRXFFLEVBQUUsRUFBRXZKLE1BQU0sQ0FBQzJELE1BQU0sQ0FBQyxFQUFFLEVBQUUySCxPQUFPLEVBQUU7Z0JBQzVEbUYsT0FBTyxFQUFFbkYsT0FBTyxDQUFDbUYsT0FBTyxJQUFJLE1BQUtDLFFBQVE7Z0JBQ3pDN0MsTUFBTSxFQUFFdkMsT0FBTyxDQUFDdUMsTUFBTSxJQUFJLE1BQUtpQixhQUFhO2dCQUM1QyxpREFBaUQ7Z0JBQ2pENkIsRUFBRSxFQUFFLENBQUM7YUFDUixDQUFDLEVBQUVkLFlBQVksQ0FBQyxDQUFDO1NBQ3JCLENBQUM7UUFDRix1Q0FBdUM7UUFDdkMsSUFBTWpLLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRWpGLG9CQUFvQixDQUFDLENBQUNzSixtQkFBbUIsQ0FBQ2tFLFNBQVMsQ0FBQztRQUN0RSw2Q0FBNkM7UUFDN0MsSUFBSSxDQUFDeUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixvREFBb0Q7UUFDcEQsd0RBQXdEO1FBQ3hELGtDQUFrQztRQUNsQyxJQUFJekMsU0FBUyxLQUFLLFNBQVMsRUFBRTtZQUN6QixJQUFJLENBQUN5QyxVQUFVLENBQUNoTCxLQUFLLENBQUMsR0FBRztnQkFDckI4SSxTQUFTLEVBQVRBLFNBQVM7Z0JBQ1RtQyxPQUFPLEVBQUUsSUFBSTtnQkFDYkMsS0FBSyxFQUFFeEMsWUFBWTtnQkFDbkI5SyxHQUFHLEVBQUhBLEdBQUc7Z0JBQ0h1TixPQUFPLEVBQUV6QyxZQUFZLElBQUlBLFlBQVksQ0FBQ3lDLE9BQU87Z0JBQzdDQyxPQUFPLEVBQUUxQyxZQUFZLElBQUlBLFlBQVksQ0FBQzBDLE9BQU87Z0JBQzdDQyxPQUFPLEVBQUUsQ0FBQyxDQUFDaEMsS0FBSzthQUNuQixDQUFDO1NBQ0w7UUFDRCxJQUFJLENBQUMyQixVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUc7WUFDdkJsQyxTQUFTLEVBQUVGLEdBQUc7WUFDZDBDLFdBQVcsRUFBRSxFQUFFO1NBQ2xCLENBQUM7UUFDRiw0Q0FBNEM7UUFDNUMsZ0ZBQWdGO1FBQ2hGLElBQUksQ0FBQ0MsTUFBTSxHQUFHakQsTUFBTSxDQUFDaUQsTUFBTSxDQUFDO1FBQzVCLElBQUksQ0FBQzVDLFVBQVUsR0FBR0EsVUFBVSxDQUFDO1FBQzdCLDhEQUE4RDtRQUM5RCxrREFBa0Q7UUFDbEQsSUFBTTZDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxFQUFFL1AsVUFBVSxDQUFDLENBQUN5SCxjQUFjLENBQUNxRixTQUFTLENBQUMsSUFBSS9LLElBQUksQ0FBQ2lPLGFBQWEsQ0FBQ0MsVUFBVTtRQUNwRyxJQUFJLENBQUNDLFFBQVEsR0FBRy9HLE1BQWtDLElBQUksRUFBRSxDQUFDO1FBQ3pELElBQUksQ0FBQ2lILEdBQUcsR0FBRzlDLFlBQVksQ0FBQztRQUN4QixJQUFJLENBQUNYLEdBQUcsR0FBRyxJQUFJLENBQUM7UUFDaEIsSUFBSSxDQUFDMEQsUUFBUSxHQUFHakQsT0FBTyxDQUFDO1FBQ3hCLDZEQUE2RDtRQUM3RCwwQkFBMEI7UUFDMUIsSUFBSSxDQUFDNkIsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUNxQixjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQ0MsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDeE8sSUFBSSxDQUFDaU8sYUFBYSxDQUFDUSxJQUFJLElBQUl6TyxJQUFJLENBQUNpTyxhQUFhLENBQUNTLEdBQUcsSUFBSTFPLElBQUksQ0FBQ2lPLGFBQWEsQ0FBQ1UsTUFBTSxJQUFJLENBQUMzTyxJQUFJLENBQUNpTyxhQUFhLENBQUNXLEdBQUcsSUFBSSxDQUFDWixpQkFBaUIsSUFBSSxDQUFDaE8sSUFBSSxDQUFDcUosUUFBUSxDQUFDd0YsTUFBTSxJQUFJLENBQUN6SCxLQUErQixDQUFDLENBQUM7UUFDaE4sSUFBSUEsS0FBK0IsRUFBRSxFQUtwQztRQUNELElBQUksQ0FBQytFLEtBQUssR0FBRztZQUNUM0osS0FBSyxFQUFMQSxLQUFLO1lBQ0xGLFFBQVEsRUFBRXlJLFNBQVM7WUFDbkJySSxLQUFLLEVBQUVzSSxNQUFNO1lBQ2IxRixNQUFNLEVBQUUwSSxpQkFBaUIsR0FBR2pELFNBQVMsR0FBR0UsR0FBRztZQUMzQ1csU0FBUyxFQUFFLENBQUMsQ0FBQ0EsU0FBUztZQUN0Qm5CLE1BQU0sRUFBRXJELE1BQStCLEdBQUdxRCxDQUFNLEdBQUdwSyxTQUFTO1lBQzVEbUwsVUFBVSxFQUFWQSxVQUFVO1NBQ2IsQ0FBQztRQUNGLElBQUksQ0FBQzBELGdDQUFnQyxHQUFHdFAsT0FBTyxDQUFDVCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0QsSUFBSSxJQUE2QixFQUFFO1lBQy9CLGtFQUFrRTtZQUNsRSw0Q0FBNEM7WUFDNUMsSUFBSSxDQUFDOEwsR0FBRyxDQUFDNUYsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN2QiwyREFBMkQ7Z0JBQzNELDREQUE0RDtnQkFDNUQsSUFBTTZDLE9BQU8sR0FBRztvQkFDWnVDLE1BQU0sRUFBTkEsTUFBTTtpQkFDVDtnQkFDRCxJQUFNbkYsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFdEgsTUFBTSxDQUFDLENBQUNxTyxNQUFNLEVBQUU7Z0JBQ25DLElBQUksQ0FBQzZDLGdDQUFnQyxHQUFHQyxpQkFBaUIsQ0FBQztvQkFDdEQ3SyxNQUFNLEVBQUUsSUFBSTtvQkFDWm1HLE1BQU0sRUFBTkEsTUFBTTtvQkFDTm5GLE1BQU0sRUFBTkEsTUFBTTtpQkFDVCxDQUFDLENBQUN6RixJQUFJLENBQUMsU0FBQ3VQLE9BQU8sRUFBRztvQkFDZmxILE9BQU8sQ0FBQ21ILGtCQUFrQixHQUFHcEUsR0FBRyxLQUFLRixTQUFTLENBQUM7b0JBQy9DLE1BQUtxQixXQUFXLENBQUMsY0FBYyxFQUFFZ0QsT0FBTyxHQUFHOUosTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFL0csVUFBVSxDQUFDLENBQUNvRyxvQkFBb0IsQ0FBQzt3QkFDckZyQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUV6RCxZQUFZLENBQUMsQ0FBQzJILFdBQVcsQ0FBQ3VFLFNBQVMsQ0FBQzt3QkFDbERySSxLQUFLLEVBQUVzSSxNQUFNO3FCQUNoQixDQUFDLEVBQUUxRixNQUFNLEVBQUU0QyxPQUFPLENBQUMsQ0FBQztvQkFDckIsT0FBT2tILE9BQU8sQ0FBQztpQkFDbEIsQ0FBQyxDQUFDO2FBQ047WUFDRDdILE1BQU0sQ0FBQytILGdCQUFnQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUNyRCxVQUFVLENBQUMsQ0FBQztZQUNyRCwyREFBMkQ7WUFDM0QsbURBQW1EO1lBQ25ELElBQUk3RSxLQUFxQyxFQUFFLEVBSTFDO1NBQ0o7Ozs7WUF2bUNMbUYsR0FBTSxFQUFOQSxRQUFNO21CQUFOQSxTQUFBQSxNQUFNLEdBQUc7Z0JBQ0xoRixNQUFNLENBQUM4QixRQUFRLENBQUNrRCxNQUFNLEVBQUUsQ0FBQzthQUM1Qjs7O1lBQ0Q7O0tBRUMsQ0FBQ2lELEdBQUksRUFBSkEsTUFBSTttQkFBSkEsU0FBQUEsSUFBSSxHQUFHO2dCQUNMakksTUFBTSxDQUFDQyxPQUFPLENBQUNnSSxJQUFJLEVBQUUsQ0FBQzthQUN6Qjs7O1lBQ0Q7Ozs7O0tBS0MsQ0FBQ0MsR0FBSSxFQUFKQSxNQUFJO21CQUFKQSxTQUFBQSxJQUFJLENBQUMzTixHQUFHLEVBQUVxRSxFQUFFLEVBQWdCO29CQUFkK0IsT0FBTyxHQUFQQSwrQ0FBWSxrQkFBRixFQUFFO2dCQUN4QixJQUFJZCxLQUFxQyxFQUFFLEVBWTFDOztnQkFDQSxNQUFnQmxCLFlBQVksQ0FBQyxJQUFJLEVBQUVwRSxHQUFHLEVBQUVxRSxFQUFFLENBQUMsRUFBekNyRSxHQUFHLE9BQUhBLEdBQUcsRUFBR3FFLEVBQUUsT0FBRkEsRUFBRSxNQUFtQztnQkFDOUMsT0FBTyxJQUFJLENBQUNpSCxNQUFNLENBQUMsV0FBVyxFQUFFdEwsR0FBRyxFQUFFcUUsRUFBRSxFQUFFK0IsT0FBTyxDQUFDLENBQUM7YUFDckQ7OztZQUNEOzs7OztLQUtDLENBQUN2RSxHQUFPLEVBQVBBLFNBQU87bUJBQVBBLFNBQUFBLE9BQU8sQ0FBQzdCLEdBQUcsRUFBRXFFLEVBQUUsRUFBZ0I7b0JBQWQrQixPQUFPLEdBQVBBLCtDQUFZLGtCQUFGLEVBQUU7O2dCQUMxQixNQUFnQmhDLFlBQVksQ0FBQyxJQUFJLEVBQUVwRSxHQUFHLEVBQUVxRSxFQUFFLENBQUMsRUFBekNyRSxHQUFHLE9BQUhBLEdBQUcsRUFBR3FFLEVBQUUsT0FBRkEsRUFBRSxNQUFtQztnQkFDOUMsT0FBTyxJQUFJLENBQUNpSCxNQUFNLENBQUMsY0FBYyxFQUFFdEwsR0FBRyxFQUFFcUUsRUFBRSxFQUFFK0IsT0FBTyxDQUFDLENBQUM7YUFDeEQ7OztZQUNEa0YsR0FBTSxFQUFOQSxRQUFNO21CQUFOQSxTQUFBQSxNQUFNLENBQUMvRSxNQUFNLEVBQUV2RyxHQUFHLEVBQUVxRSxFQUFFLEVBQUUrQixPQUFPLEVBQUV1RSxZQUFZLEVBQUU7Z0JBQzNDLElBQUlpRCxLQUFLLEdBQUcsSUFBSTtnQkFDaEIsT0FBTzVQLGlCQUFpQixnSEFBQyxtQkFBWTt3QkFXM0I2UCxlQUFlLEVBQ2ZDLGlCQUFpQixFQUNqQkMsU0FBUyxFQUtUM0MsS0FBSyxFQVNMNEMsVUFBVSxFQU1OQyxRQUFRLEVBQ1JDLGdCQUFnQixFQU9sQkMsV0FBVyxFQUlQckcsR0FBRyxFQWFMc0csY0FBYyxFQU9OQyxZQUFZLFlBa0J0QjlDLE9BQU8sV0FBVStDLE1BQU0sRUFDekJDLFVBQVUsRUFXVkMsU0FBUyxFQUVYQyxZQUFZLEVBd0JaQyxNQUFNLEVBQ0psTyxRQUFRLEVBQUdJLEtBQUssRUFJbEJpRSxLQUFLLEVBQUU4SixRQUFRLGNBMEJmckssVUFBVSxFQU9Sc0ssaUJBQWlCLEVBV1RDLGNBQWMsRUEwQ3hCbk8sS0FBSyxFQUNMb08sVUFBVSxFQUVKYixTQUFRLEVBQ1J0TixVQUFVLEVBQ1ZvTyxVQUFVLEVBRVZDLGlCQUFpQixFQUNqQnJMLGNBQWMsRUFFVnNMLGFBQWEsRUFxQm5CQyxLQUFJLEVBQUVDLElBQUksRUFDVkMsU0FBUyxFQXVCQ0MsVUFBVSxFQUNaQyxTQUFTLEVBS0hDLFlBQVksRUFJaEJSLFdBQVUsRUFDVlMsYUFBYSxFQWtCckI1UixLQUFLLEVBQUdnTyxLQUFLLEVBQUdDLE9BQU8sRUFBR0MsT0FBTyxFQUNqQzJELFNBQVMsRUFFTEMsT0FBTyxFQVVIQyxXQUFXLEVBS1BDLFVBQVUsRUFFcUJ4TCxJQUE2QyxFQUFyRXlMLE1BQU0sRUFBT0MsS0FBSyxFQVkvQkMsYUFBYSxFQStCckJDLE1BQU0sRUFFSkMsbUJBQW1CLEVBQ3JCQyxRQUFPLEVBQ0xDLFlBQVksRUFDWkMsV0FBVyxFQTZCWEMsU0FBUzs7OztvQ0F4WWRuVixVQUFVLENBQUM4RSxHQUFHLENBQUM7Ozs7Z0NBQ2hCeUksb0JBQW9CLENBQUM7b0NBQ2pCekksR0FBRyxFQUFIQSxHQUFHO29DQUNId0MsTUFBTSxFQUFFb0wsS0FBSztpQ0FDaEIsQ0FBQyxDQUFDOzZEQUNJLEtBQUs7O2dDQUtWQyxlQUFlLEdBQUd6SCxPQUFPLENBQUNxRixFQUFFLENBQUM7Z0NBQzdCcUMsaUJBQWlCLEdBQUdELGVBQWUsSUFBSXpILE9BQU8sQ0FBQ21ILGtCQUFrQixJQUFJLENBQUMsQ0FBQyxFQUFFNVEsVUFBVSxDQUFDLENBQUMyVCxTQUFTLENBQUN0USxHQUFHLENBQUMsQ0FBQ1EsUUFBUSxLQUFLLENBQUMsQ0FBQyxFQUFFN0QsVUFBVSxDQUFDLENBQUMyVCxTQUFTLENBQUNqTSxFQUFFLENBQUMsQ0FBQzdELFFBQVEsQ0FBQztnQ0FDeEp1TixTQUFTLEdBQUd2UCxRQUFRLENBQUMsRUFBRSxFQUFFb1AsS0FBSyxDQUFDdkQsS0FBSyxDQUFDLENBQUM7Z0NBQzVDLHlEQUF5RDtnQ0FDekQsNERBQTREO2dDQUM1RCwrQkFBK0I7Z0NBQy9CdUQsS0FBSyxDQUFDbEIsT0FBTyxHQUFHLElBQUksQ0FBQztnQ0FDZnRCLEtBQUssR0FBR3dDLEtBQUssQ0FBQ3hDLEtBQUssQ0FBQztnQ0FDMUIsSUFBSSxDQUFDeUMsZUFBZSxFQUFFO29DQUNsQkQsS0FBSyxDQUFDeEMsS0FBSyxHQUFHLEtBQUssQ0FBQztpQ0FDdkI7b0NBR0d5QyxDQUFBQSxDQUFBQSxlQUFlLElBQUlELEtBQUssQ0FBQzlFLEdBQUc7Ozs7NkRBQ3JCLEtBQUs7O2dDQUVWa0YsVUFBVSxHQUFHRCxTQUFTLENBQUNwRixNQUFNLENBQUM7b0NBQ2hDckQsSUFBK0I7Ozs7Z0NBQy9CeUksU0FBUyxDQUFDcEYsTUFBTSxHQUFHdkMsT0FBTyxDQUFDdUMsTUFBTSxLQUFLLEtBQUssR0FBR2lGLEtBQUssQ0FBQ2hFLGFBQWEsR0FBR3hELE9BQU8sQ0FBQ3VDLE1BQU0sSUFBSW9GLFNBQVMsQ0FBQ3BGLE1BQU0sQ0FBQztnQ0FDdkcsSUFBSSxPQUFPdkMsT0FBTyxDQUFDdUMsTUFBTSxLQUFLLFdBQVcsRUFBRTtvQ0FDdkN2QyxPQUFPLENBQUN1QyxNQUFNLEdBQUdvRixTQUFTLENBQUNwRixNQUFNLENBQUM7aUNBQ3JDO2dDQUNLc0YsUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFN1IsaUJBQWlCLENBQUMsQ0FBQytPLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFbk8sWUFBWSxDQUFDLENBQUN1RCxXQUFXLENBQUM4RCxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRXZILGVBQWUsQ0FBQyxDQUFDeVQsY0FBYyxDQUFDbE0sRUFBRSxDQUFDLEdBQUdBLEVBQUUsQ0FBQyxDQUFDO2dDQUNySTZKLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxFQUFFblMsb0JBQW9CLENBQUMsQ0FBQ3lVLG1CQUFtQixDQUFDdkMsUUFBUSxDQUFDek4sUUFBUSxFQUFFb04sS0FBSyxDQUFDakUsT0FBTyxDQUFDLENBQUM7Z0NBQ3pHLElBQUl1RSxnQkFBZ0IsQ0FBQ3VDLGNBQWMsRUFBRTtvQ0FDakMxQyxTQUFTLENBQUNwRixNQUFNLEdBQUd1RixnQkFBZ0IsQ0FBQ3VDLGNBQWMsQ0FBQztvQ0FDbkR4QyxRQUFRLENBQUN6TixRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUV6RCxZQUFZLENBQUMsQ0FBQzJILFdBQVcsQ0FBQ3VKLFFBQVEsQ0FBQ3pOLFFBQVEsQ0FBQyxDQUFDO29DQUNyRTZELEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRTVILFVBQVUsQ0FBQyxDQUFDb0csb0JBQW9CLENBQUNvTCxRQUFRLENBQUMsQ0FBQztvQ0FDcERqTyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUVqRCxZQUFZLENBQUMsQ0FBQzJILFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRTNJLG9CQUFvQixDQUFDLENBQUN5VSxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRXhULFlBQVksQ0FBQyxDQUFDdUQsV0FBVyxDQUFDUCxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRWxELGVBQWUsQ0FBQyxDQUFDeVQsY0FBYyxDQUFDdlEsR0FBRyxDQUFDLEdBQUdBLEdBQUcsRUFBRTROLEtBQUssQ0FBQ2pFLE9BQU8sQ0FBQyxDQUFDbkosUUFBUSxDQUFDLENBQUM7aUNBQ25NO2dDQUNHMk4sV0FBVyxHQUFHLEtBQUssQ0FBQztnQ0FDeEIsd0VBQXdFO2dDQUN4RSwwQ0FBMEM7Z0NBQzFDLElBQUk3SSxLQUErQixFQUFFLEVBYXBDO2dDQUNLOEksY0FBYyxHQUFHLENBQUMsQ0FBQyxFQUFFMVIsbUJBQW1CLENBQUMsQ0FBQ3dRLGtCQUFrQixDQUFDVSxLQUFLLENBQUMvRCxhQUFhLEVBQUV0TCxTQUFTLEVBQUV3UCxTQUFTLENBQUNwRixNQUFNLENBQUMsQ0FBQztnQ0FDckgsd0VBQXdFO2dDQUN4RSwwQ0FBMEM7Z0NBQzFDLElBQUlyRCxLQUErQixFQUFFLEVBYXBDO29DQUNHNkksQ0FBQUEsV0FBVzs7Ozs2REFDSixJQUFJclEsT0FBTyxDQUFDLFdBQUksRUFBRSxDQUFDOztnQ0FHbEMsb0RBQW9EO2dDQUNwRCxJQUFJNUIsTUFBTSxDQUFDMFUsRUFBRSxFQUFFO29DQUNYQyxXQUFXLENBQUNDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztpQ0FDbkM7MkNBQzBDMUssT0FBTyxDQUExQ21GLE9BQU8sRUFBUEEsT0FBTyx5QkFBRSxLQUFLLHVCQUFxQm5GLE9BQU8sQ0FBekJrSSxNQUFNLEVBQU5BLE1BQU0sd0JBQUUsSUFBSSxXQUFjO2dDQUM3Q0MsVUFBVSxHQUFHO29DQUNmaEQsT0FBTyxFQUFQQSxPQUFPO2lDQUNWLENBQUM7Z0NBQ0YsSUFBSXFDLEtBQUssQ0FBQ21ELGNBQWMsSUFBSW5ELEtBQUssQ0FBQzlFLEdBQUcsRUFBRTtvQ0FDbkMsSUFBSSxDQUFDc0MsS0FBSyxFQUFFO3dDQUNScEMsTUFBTSxDQUFDaUQsTUFBTSxDQUFDK0UsSUFBSSxDQUFDLGtCQUFrQixFQUFFblIsc0JBQXNCLEVBQUUsRUFBRStOLEtBQUssQ0FBQ21ELGNBQWMsRUFBRXhDLFVBQVUsQ0FBQyxDQUFDO3FDQUN0RztvQ0FDRFgsS0FBSyxDQUFDOUUsR0FBRyxFQUFFLENBQUM7b0NBQ1o4RSxLQUFLLENBQUM5RSxHQUFHLEdBQUcsSUFBSSxDQUFDO2lDQUNwQjtnQ0FDRHpFLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRXRILFlBQVksQ0FBQyxDQUFDMkgsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFOUgsVUFBVSxDQUFDLENBQUM4TCxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUxTCxZQUFZLENBQUMsQ0FBQ3VELFdBQVcsQ0FBQzhELEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFdkgsZUFBZSxDQUFDLENBQUN5VCxjQUFjLENBQUNsTSxFQUFFLENBQUMsR0FBR0EsRUFBRSxFQUFFK0IsT0FBTyxDQUFDdUMsTUFBTSxFQUFFaUYsS0FBSyxDQUFDaEUsYUFBYSxDQUFDLENBQUMsQ0FBQztnQ0FDL0s0RSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUzUixhQUFhLENBQUMsQ0FBQ29VLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRWpVLFlBQVksQ0FBQyxDQUFDdUQsV0FBVyxDQUFDOEQsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUV2SCxlQUFlLENBQUMsQ0FBQ3lULGNBQWMsQ0FBQ2xNLEVBQUUsQ0FBQyxHQUFHQSxFQUFFLEVBQUUwSixTQUFTLENBQUNwRixNQUFNLENBQUMsQ0FBQztnQ0FDdEppRixLQUFLLENBQUNtRCxjQUFjLEdBQUcxTSxFQUFFLENBQUM7Z0NBQ3RCb0ssWUFBWSxHQUFHVCxVQUFVLEtBQUtELFNBQVMsQ0FBQ3BGLE1BQU0sQ0FBQztvQ0FHL0MsR0FBQ2tGLGVBQWUsSUFBSUQsS0FBSyxDQUFDc0QsZUFBZSxDQUFDMUMsU0FBUyxDQUFDLElBQUksQ0FBQ0MsWUFBWTs7OztnQ0FDckVWLFNBQVMsQ0FBQ3ZLLE1BQU0sR0FBR2dMLFNBQVMsQ0FBQztnQ0FDN0J4RixNQUFNLENBQUNpRCxNQUFNLENBQUMrRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUzTSxFQUFFLEVBQUVrSyxVQUFVLENBQUMsQ0FBQztnQ0FDdEQsOERBQThEO2dDQUM5RFgsS0FBSyxDQUFDdEQsV0FBVyxDQUFDL0QsTUFBTSxFQUFFdkcsR0FBRyxFQUFFcUUsRUFBRSxFQUFFN0YsUUFBUSxDQUFDLEVBQUUsRUFBRTRILE9BQU8sRUFBRTtvQ0FDckRrSSxNQUFNLEVBQUUsS0FBSztpQ0FDaEIsQ0FBQyxDQUFDLENBQUM7Z0NBQ0osSUFBSUEsTUFBTSxFQUFFO29DQUNSVixLQUFLLENBQUN1RCxZQUFZLENBQUMzQyxTQUFTLENBQUMsQ0FBQztpQ0FDakM7Ozt1Q0FFU1osS0FBSyxDQUFDaE8sR0FBRyxDQUFDbU8sU0FBUyxFQUFFSCxLQUFLLENBQUNsQyxVQUFVLENBQUNxQyxTQUFTLENBQUNyTixLQUFLLENBQUMsRUFBRSxJQUFJLENBQUM7Ozs7Ozs7Z0NBRW5FLElBQUksQ0FBQyxDQUFDLEVBQUU5RSxRQUFRLENBQUMsQ0FBQ04sT0FBTyxTQUFLLElBQUlnRCxRQUFJeUIsU0FBUyxFQUFFO29DQUM3Q2lKLE1BQU0sQ0FBQ2lELE1BQU0sQ0FBQytFLElBQUksQ0FBQyxrQkFBa0IsV0FBT3hDLFNBQVMsRUFBRUQsVUFBVSxDQUFDLENBQUM7aUNBQ3RFO2dDQUNELGNBQVU7O2dDQUVkdkYsTUFBTSxDQUFDaUQsTUFBTSxDQUFDK0UsSUFBSSxDQUFDLG9CQUFvQixFQUFFM00sRUFBRSxFQUFFa0ssVUFBVSxDQUFDLENBQUM7NkRBQ2xELElBQUk7O2dDQUVYRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUV0UyxpQkFBaUIsQ0FBQyxDQUFDK08sZ0JBQWdCLENBQUNuTCxHQUFHLENBQUMsQ0FBQztnQ0FDcERRLFFBQVEsR0FBY2tPLE1BQU0sQ0FBNUJsTyxRQUFRLEVBQUdJLEtBQUssR0FBTThOLE1BQU0sQ0FBakI5TixLQUFLLENBQWE7aUNBSWY7Ozs7O3VDQUUyQjlDLE9BQU8sQ0FBQ3NULEdBQUcsQ0FBQztvQ0FDbkR4RCxLQUFLLENBQUN2RSxVQUFVLENBQUNnSSxXQUFXLEVBQUU7b0NBQzlCLENBQUMsQ0FBQyxFQUFFM1YsWUFBWSxDQUFDLENBQUM0VixzQkFBc0IsRUFBRTtvQ0FDMUMxRCxLQUFLLENBQUN2RSxVQUFVLENBQUNrSSxpQkFBaUIsRUFBRTtpQ0FDdkMsQ0FBQzs7OztnQ0FKRDFNLEtBQUs7Z0NBQUUsY0FBeUIsRUFBdkIyTSxRQUFvQixRQUFwQkEsVUFBVTs7Ozs7OztnQ0FNcEIsd0VBQXdFO2dDQUN4RSwrQkFBK0I7Z0NBQy9CL0ksb0JBQW9CLENBQUM7b0NBQ2pCekksR0FBRyxFQUFFcUUsRUFBRTtvQ0FDUDdCLE1BQU0sRUFBRW9MLEtBQUs7aUNBQ2hCLENBQUMsQ0FBQzs2REFDSSxLQUFLOztnQ0FFaEIsdUVBQXVFO2dDQUN2RSw4RUFBOEU7Z0NBQzlFLHVEQUF1RDtnQ0FDdkQsb0VBQW9FO2dDQUNwRSxzRUFBc0U7Z0NBQ3RFLElBQUksQ0FBQ0EsS0FBSyxDQUFDNkQsUUFBUSxDQUFDakQsU0FBUyxDQUFDLElBQUksQ0FBQ0MsWUFBWSxFQUFFO29DQUM3Q2xJLE1BQU0sR0FBRyxjQUFjLENBQUM7aUNBQzNCO2dDQUdHakMsVUFBVSxHQUFHRCxFQUFFLENBQUM7Z0NBQ3BCLDZEQUE2RDtnQ0FDN0QsZ0VBQWdFO2dDQUNoRSwyREFBMkQ7Z0NBQzNEN0QsUUFBUSxHQUFHQSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUUvRSxvQkFBb0IsQ0FBQyxDQUFDc0osbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUVqSSxlQUFlLENBQUMsQ0FBQ3lULGNBQWMsQ0FBQy9QLFFBQVEsQ0FBQyxDQUFDLEdBQUdBLFFBQVEsQ0FBQzs7dUNBRzlGNk0saUJBQWlCLENBQUM7b0NBQzlDN0osTUFBTSxFQUFFYSxFQUFFO29DQUNWc0UsTUFBTSxFQUFFb0YsU0FBUyxDQUFDcEYsTUFBTTtvQ0FDeEJuRyxNQUFNLEVBQUVvTCxLQUFLO2lDQUNoQixDQUFDOztnQ0FKSWdCLGlCQUFpQixZQUlyQjtnQ0FDRixJQUFJeEksT0FBTyxDQUFDbUYsT0FBTyxJQUFJcUQsaUJBQWlCLEVBQUU7b0NBQ3RDcE8sUUFBUSxHQUFHb04sS0FBSyxDQUFDcE4sUUFBUSxDQUFDO2lDQUM3QjtvQ0FDR3NOLENBQUFBLENBQUFBLGlCQUFpQixJQUFJdE4sUUFBUSxLQUFLLFNBQVM7Ozs7Z0NBQzNDNEYsT0FBTyxDQUFDbUgsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO29DQUM5QmpJLElBQXFEOzs7O2dDQUMvQ3VKLGNBQWMsR0FBRyxDQUFDLENBQUMsRUFBRXZTLGdCQUFnQixDQUFDLENBQUNoQixPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUV5QixZQUFZLENBQUMsQ0FBQzJILFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRTlILFVBQVUsQ0FBQyxDQUFDOEwsU0FBUyxDQUFDOEYsU0FBUyxFQUFFVCxTQUFTLENBQUNwRixNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRTlELEtBQUssRUFBRThKLFFBQVEsRUFBRS9OLEtBQUssRUFBRSxTQUFDOFEsQ0FBQzsyQ0FBRzlNLG1CQUFtQixDQUFDOE0sQ0FBQyxFQUFFN00sS0FBSyxDQUFDO2lDQUFBLEVBQUUrSSxLQUFLLENBQUNqRSxPQUFPLENBQUMsQ0FBQztvQ0FDek5rRixDQUFBQSxjQUFjLENBQUM4QyxZQUFZOzs7O2dDQUMzQmxKLG9CQUFvQixDQUFDO29DQUNqQnpJLEdBQUcsRUFBRXFFLEVBQUU7b0NBQ1A3QixNQUFNLEVBQUVvTCxLQUFLO2lDQUNoQixDQUFDLENBQUM7NkRBQ0ksSUFBSTs7Z0NBRWYsSUFBSSxDQUFDZ0IsaUJBQWlCLEVBQUU7b0NBQ3BCdEssVUFBVSxHQUFHdUssY0FBYyxDQUFDckwsTUFBTSxDQUFDO2lDQUN0QztnQ0FDRCxJQUFJcUwsY0FBYyxDQUFDK0MsV0FBVyxJQUFJL0MsY0FBYyxDQUFDN0ssWUFBWSxFQUFFO29DQUMzRCxnRUFBZ0U7b0NBQ2hFLDRDQUE0QztvQ0FDNUN4RCxRQUFRLEdBQUdxTyxjQUFjLENBQUM3SyxZQUFZLENBQUM7b0NBQ3ZDMEssTUFBTSxDQUFDbE8sUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFekQsWUFBWSxDQUFDLENBQUMySCxXQUFXLENBQUNsRSxRQUFRLENBQUMsQ0FBQztvQ0FDMUQsSUFBSSxDQUFDb08saUJBQWlCLEVBQUU7d0NBQ3BCNU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFdkQsVUFBVSxDQUFDLENBQUNvRyxvQkFBb0IsQ0FBQzZMLE1BQU0sQ0FBQyxDQUFDO3FDQUN0RDtpQ0FDSjs7OztnQ0FDRTtvQ0FDSEEsTUFBTSxDQUFDbE8sUUFBUSxHQUFHb0UsbUJBQW1CLENBQUNwRSxRQUFRLEVBQUVxRSxLQUFLLENBQUMsQ0FBQztvQ0FDdkQsSUFBSTZKLE1BQU0sQ0FBQ2xPLFFBQVEsS0FBS0EsUUFBUSxFQUFFO3dDQUM5QkEsUUFBUSxHQUFHa08sTUFBTSxDQUFDbE8sUUFBUSxDQUFDO3dDQUMzQmtPLE1BQU0sQ0FBQ2xPLFFBQVEsR0FBRyxDQUFDLENBQUMsRUFBRXpELFlBQVksQ0FBQyxDQUFDMkgsV0FBVyxDQUFDbEUsUUFBUSxDQUFDLENBQUM7d0NBQzFELElBQUksQ0FBQ29PLGlCQUFpQixFQUFFOzRDQUNwQjVPLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRXZELFVBQVUsQ0FBQyxDQUFDb0csb0JBQW9CLENBQUM2TCxNQUFNLENBQUMsQ0FBQzt5Q0FDdEQ7cUNBQ0o7aUNBQ0o7O29DQUVBeFQsVUFBVSxDQUFDbUosRUFBRSxDQUFDOzs7O29DQUNYaUIsS0FBcUMsRUFBRSxFO2dDQUN2QyxNQUFNLElBQUl4RixLQUFLLENBQUMsaUJBQWdCLENBQW1CdUUsTUFBRSxDQUFuQnJFLEdBQUcsRUFBQyxhQUFXLENBQUssT0FBeUMsQ0FBNUNxRSxFQUFFLEVBQUMsMkNBQXlDLENBQUMsR0FBSSxvRkFBa0YsQ0FBRSxDQUFDOztnQ0FFN0xvRSxvQkFBb0IsQ0FBQztvQ0FDakJ6SSxHQUFHLEVBQUVxRSxFQUFFO29DQUNQN0IsTUFBTSxFQUFFb0wsS0FBSztpQ0FDaEIsQ0FBQyxDQUFDOzZEQUNJLEtBQUs7O2dDQUVoQnRKLFVBQVUsR0FBRyxDQUFDLENBQUMsRUFBRXpILGFBQWEsQ0FBQyxDQUFDb1UsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFblUsZUFBZSxDQUFDLENBQUN5VCxjQUFjLENBQUNqTSxVQUFVLENBQUMsRUFBRXlKLFNBQVMsQ0FBQ3BGLE1BQU0sQ0FBQyxDQUFDO2dDQUM1R2pJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRWpGLG9CQUFvQixDQUFDLENBQUNzSixtQkFBbUIsQ0FBQ3ZFLFFBQVEsQ0FBQyxDQUFDO2dDQUNoRXNPLFVBQVUsR0FBRyxLQUFLLENBQUM7b0NBQ25CLEVBQUMsQ0FBQyxFQUFFM1MsVUFBVSxDQUFDLENBQUN5SCxjQUFjLENBQUNsRCxLQUFLLENBQUM7Ozs7Z0NBQy9CdU4sU0FBUSxHQUFHLENBQUMsQ0FBQyxFQUFFN1IsaUJBQWlCLENBQUMsQ0FBQytPLGdCQUFnQixDQUFDN0csVUFBVSxDQUFDLENBQUM7Z0NBQy9EM0QsVUFBVSxHQUFHc04sU0FBUSxDQUFDek4sUUFBUSxDQUFDO2dDQUMvQnVPLFVBQVUsR0FBRyxDQUFDLENBQUMsRUFBRXZTLFdBQVcsQ0FBQyxDQUFDdUUsYUFBYSxDQUFDTCxLQUFLLENBQUMsQ0FBQztnQ0FDekRvTyxVQUFVLEdBQUcsQ0FBQyxDQUFDLEVBQUV2UyxhQUFhLENBQUMsQ0FBQzRFLGVBQWUsQ0FBQzROLFVBQVUsQ0FBQyxDQUFDcE8sVUFBVSxDQUFDLENBQUM7Z0NBQ2xFcU8saUJBQWlCLEdBQUd0TyxLQUFLLEtBQUtDLFVBQVUsQ0FBQztnQ0FDekNnRCxjQUFjLEdBQUdxTCxpQkFBaUIsR0FBRzdULGFBQWEsQ0FBQ3VGLEtBQUssRUFBRUMsVUFBVSxFQUFFQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7b0NBQ3BGLEdBQUNrTyxVQUFVLElBQUlFLGlCQUFpQixJQUFJLENBQUNyTCxjQUFjLENBQUN6QixNQUFNOzs7O2dDQUNwRCtNLGFBQWEsR0FBR25VLE1BQU0sQ0FBQ3VHLElBQUksQ0FBQzBOLFVBQVUsQ0FBQzlOLE1BQU0sQ0FBQyxDQUFDNFEsTUFBTSxDQUFDLFNBQUN0USxLQUFLOzJDQUFHLENBQUNYLEtBQUssQ0FBQ1csS0FBSyxDQUFDO2lDQUFBLENBQUMsQ0FBQztvQ0FDaEYwTixDQUFBQSxDQUFBQSxhQUFhLENBQUNyUSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUNnUSxpQkFBaUI7Ozs7Z0NBQzlDLElBQUl0SixJQUFxQyxFQUFFO29DQUN2Q2xDLE9BQU8sQ0FBQzBPLElBQUksQ0FBQyxFQUFDLENBQStFLE1BQTRCLENBQXpHOUMsaUJBQWlCLEdBQUksb0JBQWtCLEdBQUssNkJBQStCLEVBQUUsOEJBQTRCLENBQUMsR0FBRyxjQUFhLENBQTJCLE1BQTRCLENBQXJEQyxhQUFhLENBQUNoTixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUMsMEJBQTRCLENBQUMsQ0FBQyxDQUFDO2lDQUN2TTtnQ0FDRCxNQUFNLElBQUluQyxLQUFLLENBQUMsQ0FBQ2tQLGlCQUFpQixHQUFHLHVCQUF3QixDQUF5Q0MsTUFBd0IsQ0FBL0RqUCxHQUFHLEVBQUMsbUNBQWlDLENBQTJCLE9BQStCLENBQXhEaVAsYUFBYSxDQUFDaE4sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFDLGlDQUErQixDQUFDLEdBQUcsMkJBQTRCLENBQTBEdkIsTUFBSyxDQUE3REMsVUFBVSxFQUFDLDJDQUEyQyxDQUFRLE9BQUcsQ0FBVEQsS0FBSyxFQUFDLEtBQUcsQ0FBQyxDQUFDLEdBQUcsOENBQTZDLENBQTJFLE9BQXpFc08saUJBQWlCLEdBQUcsMkJBQTJCLEdBQUcsc0JBQXNCLENBQUUsQ0FBQyxDQUFDOzs7OztnQ0FFbFksSUFBSUEsaUJBQWlCLEVBQUU7b0NBQzFCM0ssRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFNUgsVUFBVSxDQUFDLENBQUNvRyxvQkFBb0IsQ0FBQy9ILE1BQU0sQ0FBQzJELE1BQU0sQ0FBQyxFQUFFLEVBQUV3UCxTQUFRLEVBQUU7d0NBQ2xFek4sUUFBUSxFQUFFbUQsY0FBYyxDQUFDekIsTUFBTTt3Q0FDL0J0QixLQUFLLEVBQUV1QixJQUFJLENBQUN2QixLQUFLLEVBQUUrQyxjQUFjLENBQUN2QyxNQUFNLENBQUM7cUNBQzVDLENBQUMsQ0FBQyxDQUFDO2lDQUNQLE1BQU07b0NBQ0gsaUVBQWlFO29DQUNqRXRHLE1BQU0sQ0FBQzJELE1BQU0sQ0FBQ21DLEtBQUssRUFBRWtPLFVBQVUsQ0FBQyxDQUFDO2lDQUNwQzs7Z0NBRUwsSUFBSSxDQUFDakIsZUFBZSxFQUFFO29DQUNsQjdFLE1BQU0sQ0FBQ2lELE1BQU0sQ0FBQytFLElBQUksQ0FBQyxrQkFBa0IsRUFBRTNNLEVBQUUsRUFBRWtLLFVBQVUsQ0FBQyxDQUFDO2lDQUMxRDs7aUNBRWtCOzt1Q0FDT1gsS0FBSyxDQUFDbUUsWUFBWSxDQUFDO29DQUNyQ3JSLEtBQUssRUFBTEEsS0FBSztvQ0FDTEYsUUFBUSxFQUFSQSxRQUFRO29DQUNSSSxLQUFLLEVBQUxBLEtBQUs7b0NBQ0x5RCxFQUFFLEVBQUZBLEVBQUU7b0NBQ0ZDLFVBQVUsRUFBVkEsVUFBVTtvQ0FDVmlLLFVBQVUsRUFBVkEsVUFBVTtvQ0FDVjVGLE1BQU0sRUFBRW9GLFNBQVMsQ0FBQ3BGLE1BQU07b0NBQ3hCbUIsU0FBUyxFQUFFaUUsU0FBUyxDQUFDakUsU0FBUztvQ0FDOUI3QyxhQUFhLEVBQUUySCxpQkFBaUI7aUNBQ25DLENBQUM7O2dDQVZFUSxTQUFTLFlBVVg7Z0NBQ0YsSUFBSSxPQUFPLElBQUlBLFNBQVMsSUFBSVIsaUJBQWlCLEVBQUU7b0NBQzNDcE8sUUFBUSxHQUFHNE8sU0FBUyxDQUFDMU8sS0FBSyxJQUFJQSxLQUFLLENBQUM7b0NBQ3BDQSxLQUFLLEdBQUdGLFFBQVEsQ0FBQztvQ0FDakJJLEtBQUssR0FBRzlGLE1BQU0sQ0FBQzJELE1BQU0sQ0FBQyxFQUFFLEVBQUUyUSxTQUFTLENBQUN4TyxLQUFLLElBQUksRUFBRSxFQUFFQSxLQUFLLENBQUMsQ0FBQztvQ0FDeEQsSUFBSWtPLFVBQVUsSUFBSXRPLFFBQVEsS0FBS2tPLE1BQU0sQ0FBQ2xPLFFBQVEsRUFBRTt3Q0FDNUMxRixNQUFNLENBQUN1RyxJQUFJLENBQUN5TixVQUFVLENBQUMsQ0FBQ3hNLE9BQU8sQ0FBQyxTQUFDN0UsR0FBRyxFQUFHOzRDQUNuQyxJQUFJcVIsVUFBVSxJQUFJbE8sS0FBSyxDQUFDbkQsR0FBRyxDQUFDLEtBQUtxUixVQUFVLENBQUNyUixHQUFHLENBQUMsRUFBRTtnREFDOUMsT0FBT21ELEtBQUssQ0FBQ25ELEdBQUcsQ0FBQyxDQUFDOzZDQUNyQjt5Q0FDSixDQUFDLENBQUM7cUNBQ047b0NBQ0QsSUFBSSxDQUFDLENBQUMsRUFBRXRCLFVBQVUsQ0FBQyxDQUFDeUgsY0FBYyxDQUFDcEQsUUFBUSxDQUFDLEVBQUU7d0NBQ3BDNk8sVUFBVSxHQUFHRCxTQUFTLENBQUM5SyxVQUFVLElBQUksQ0FBQyxDQUFDLEVBQUV2SCxZQUFZLENBQUMsQ0FBQzJILFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRTlILFVBQVUsQ0FBQyxDQUFDOEwsU0FBUyxDQUFDckUsRUFBRSxFQUFFMEosU0FBUyxDQUFDcEYsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7d0NBQzVIMkcsU0FBUyxHQUFHRCxVQUFVLENBQUM7d0NBQzNCLElBQUksQ0FBQyxDQUFDLEVBQUVyUyxZQUFZLENBQUMsQ0FBQ3VELFdBQVcsQ0FBQytPLFNBQVMsQ0FBQyxFQUFFOzRDQUMxQ0EsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFeFMsZUFBZSxDQUFDLENBQUN5VCxjQUFjLENBQUNqQixTQUFTLENBQUMsQ0FBQzt5Q0FDOUQ7d0NBQ0QsSUFBSWhLLEtBQStCLEVBQUUsRUFJcEM7d0NBQ0t5SixXQUFVLEdBQUcsQ0FBQyxDQUFDLEVBQUV2UyxXQUFXLENBQUMsQ0FBQ3VFLGFBQWEsQ0FBQ1AsUUFBUSxDQUFDLENBQUM7d0NBQ3REZ1AsYUFBYSxHQUFHLENBQUMsQ0FBQyxFQUFFalQsYUFBYSxDQUFDLENBQUM0RSxlQUFlLENBQUM0TixXQUFVLENBQUMsQ0FBQ08sU0FBUyxDQUFDLENBQUM7d0NBQ2hGLElBQUlFLGFBQWEsRUFBRTs0Q0FDZjFVLE1BQU0sQ0FBQzJELE1BQU0sQ0FBQ21DLEtBQUssRUFBRTRPLGFBQWEsQ0FBQyxDQUFDO3lDQUN2QztxQ0FDSjtpQ0FDSjtvQ0FFRyxRQUFNLElBQUlKLFNBQVM7Ozs7b0NBQ2ZBLENBQUFBLENBQUFBLFNBQVMsQ0FBQzRDLElBQUksS0FBSyxtQkFBbUI7Ozs7NkRBQy9CcEUsS0FBSyxDQUFDdEMsTUFBTSxDQUFDL0UsTUFBTSxFQUFFNkksU0FBUyxDQUFDUyxNQUFNLEVBQUVULFNBQVMsQ0FBQ1UsS0FBSyxFQUFFMUosT0FBTyxDQUFDOztnQ0FFdkVxQyxvQkFBb0IsQ0FBQztvQ0FDakJ6SSxHQUFHLEVBQUVvUCxTQUFTLENBQUNPLFdBQVc7b0NBQzFCbk4sTUFBTSxFQUFFb0wsS0FBSztpQ0FDaEIsQ0FBQyxDQUFDOzZEQUNJLElBQUk5UCxPQUFPLENBQUMsV0FBSSxFQUFFLENBQUM7O2dDQUc1QkYsS0FBSyxHQUFrQ3dSLFNBQVMsQ0FBaER4UixLQUFLLEVBQUdnTyxLQUFLLEdBQTBCd0QsU0FBUyxDQUF4Q3hELEtBQUssRUFBR0MsT0FBTyxHQUFnQnVELFNBQVMsQ0FBaEN2RCxPQUFPLEVBQUdDLE9BQU8sR0FBTXNELFNBQVMsQ0FBdEJ0RCxPQUFPLENBQWdCO2dDQUNqRDJELFNBQVMsR0FBR0wsU0FBUyxDQUFDNUYsU0FBUyxDQUFDO2dDQUN0QyxJQUFJaUcsU0FBUyxJQUFJQSxTQUFTLENBQUN3QyxxQkFBcUIsRUFBRTtvQ0FDeEN2QyxPQUFPLEdBQUcsRUFBRSxDQUFDd0MsTUFBTSxDQUFDekMsU0FBUyxDQUFDd0MscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO29DQUM3RHZDLE9BQU8sQ0FBQ3BOLE9BQU8sQ0FBQyxTQUFDNlAsTUFBTSxFQUFHO3dDQUN0QixDQUFDLENBQUMsRUFBRXhXLE9BQU8sQ0FBQyxDQUFDeVcsc0JBQXNCLENBQUNELE1BQU0sQ0FBQ3ZHLEtBQUssQ0FBQyxDQUFDO3FDQUNyRCxDQUFDLENBQUM7aUNBQ047b0NBRUcsR0FBQ0MsT0FBTyxJQUFJQyxPQUFPLENBQUMsSUFBSUYsS0FBSzs7OztvQ0FDekJBLENBQUFBLENBQUFBLEtBQUssQ0FBQ3lHLFNBQVMsSUFBSXpHLEtBQUssQ0FBQ3lHLFNBQVMsQ0FBQ0MsWUFBWTs7OztnQ0FDL0MsMERBQTBEO2dDQUMxRGxNLE9BQU8sQ0FBQ3VDLE1BQU0sR0FBRyxLQUFLLENBQUM7Z0NBQ2pCZ0gsV0FBVyxHQUFHL0QsS0FBSyxDQUFDeUcsU0FBUyxDQUFDQyxZQUFZLENBQUM7b0NBSTdDM0MsQ0FBQUEsQ0FBQUEsV0FBVyxDQUFDcE0sVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJcUksS0FBSyxDQUFDeUcsU0FBUyxDQUFDRSxzQkFBc0IsS0FBSyxLQUFLOzs7O2dDQUN6RTNDLFVBQVUsR0FBRyxDQUFDLENBQUMsRUFBRXhULGlCQUFpQixDQUFDLENBQUMrTyxnQkFBZ0IsQ0FBQ3dFLFdBQVcsQ0FBQyxDQUFDO2dDQUN4RUMsVUFBVSxDQUFDcFAsUUFBUSxHQUFHb0UsbUJBQW1CLENBQUNnTCxVQUFVLENBQUNwUCxRQUFRLEVBQUVxRSxLQUFLLENBQUMsQ0FBQztnQ0FDakNULElBQTZDLEdBQTdDQSxZQUFZLENBQUN3SixLQUFLLEVBQUUrQixXQUFXLEVBQUVBLFdBQVcsQ0FBQyxFQUExRTNQLE1BQVcsR0FBa0JvRSxJQUE2QyxDQUExRXBFLEdBQUcsRUFBV3FFLEtBQVMsR0FBTUQsSUFBNkMsQ0FBNURDLEVBQUUsQ0FBMkQ7NkRBQzVFdUosS0FBSyxDQUFDdEMsTUFBTSxDQUFDL0UsTUFBTSxFQUFFc0osTUFBTSxFQUFFQyxLQUFLLEVBQUUxSixPQUFPLENBQUM7O2dDQUV2RHFDLG9CQUFvQixDQUFDO29DQUNqQnpJLEdBQUcsRUFBRTJQLFdBQVc7b0NBQ2hCbk4sTUFBTSxFQUFFb0wsS0FBSztpQ0FDaEIsQ0FBQyxDQUFDOzZEQUNJLElBQUk5UCxPQUFPLENBQUMsV0FBSSxFQUFFLENBQUM7O2dDQUU5QmlRLFNBQVMsQ0FBQ2pFLFNBQVMsR0FBRyxDQUFDLENBQUM4QixLQUFLLENBQUM0RyxXQUFXLENBQUM7b0NBRXRDNUcsQ0FBQUEsQ0FBQUEsS0FBSyxDQUFDNUQsUUFBUSxLQUFLaEMsa0JBQWtCOzs7O2lDQUNuQjs7O3VDQUVSNEgsS0FBSyxDQUFDNkUsY0FBYyxDQUFDLE1BQU0sQ0FBQzs7Z0NBQ2xDMUMsYUFBYSxHQUFHLE1BQU0sQ0FBQzs7Ozs7O2dDQUV2QkEsYUFBYSxHQUFHLFNBQVMsQ0FBQzs7O3VDQUVabkMsS0FBSyxDQUFDbUUsWUFBWSxDQUFDO29DQUNqQ3JSLEtBQUssRUFBRXFQLGFBQWE7b0NBQ3BCdlAsUUFBUSxFQUFFdVAsYUFBYTtvQ0FDdkJuUCxLQUFLLEVBQUxBLEtBQUs7b0NBQ0x5RCxFQUFFLEVBQUZBLEVBQUU7b0NBQ0ZDLFVBQVUsRUFBVkEsVUFBVTtvQ0FDVmlLLFVBQVUsRUFBRTt3Q0FDUmhELE9BQU8sRUFBRSxLQUFLO3FDQUNqQjtvQ0FDRDVDLE1BQU0sRUFBRW9GLFNBQVMsQ0FBQ3BGLE1BQU07b0NBQ3hCbUIsU0FBUyxFQUFFaUUsU0FBUyxDQUFDakUsU0FBUztpQ0FDakMsQ0FBQzs7Z0NBWEZzRixTQUFTLFlBV1A7b0NBQ0UsUUFBTSxJQUFJQSxTQUFTOzs7O2dDQUNuQixNQUFNLElBQUl0UCxLQUFLLENBQUUsc0NBQW9DLENBQUUsQ0FBQzs7Z0NBSXBFa0osTUFBTSxDQUFDaUQsTUFBTSxDQUFDK0UsSUFBSSxDQUFDLHFCQUFxQixFQUFFM00sRUFBRSxFQUFFa0ssVUFBVSxDQUFDLENBQUM7Z0NBQzFEWCxLQUFLLENBQUN0RCxXQUFXLENBQUMvRCxNQUFNLEVBQUV2RyxHQUFHLEVBQUVxRSxFQUFFLEVBQUUrQixPQUFPLENBQUMsQ0FBQztnQ0FDNUMsSUFBSXlILGVBQWUsSUFBSXJOLFFBQVEsS0FBSyxTQUFTLElBQUksQ0FBQyxDQUFDME8sS0FBSSxHQUFHaFIsSUFBSSxDQUFDaU8sYUFBYSxDQUFDUCxLQUFLLENBQUMsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQ3VELElBQUksR0FBR0QsS0FBSSxDQUFDbUQsU0FBUyxDQUFDLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHbEQsSUFBSSxDQUFDdUQsVUFBVSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM5RyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHQSxLQUFLLENBQUN5RyxTQUFTLENBQUMsRUFBRTtvQ0FDdE4seURBQXlEO29DQUN6RCxrQ0FBa0M7b0NBQ2xDekcsS0FBSyxDQUFDeUcsU0FBUyxDQUFDSyxVQUFVLEdBQUcsR0FBRyxDQUFDO2lDQUNwQztpQ0FDVTtnQ0FFTHpDLG1CQUFtQixHQUFHN0osT0FBTyxDQUFDbUYsT0FBTyxJQUFJd0MsU0FBUyxDQUFDck4sS0FBSyxLQUFLLENBQUMsQ0FBQ3NQLE1BQU0sR0FBR1osU0FBUyxDQUFDMU8sS0FBSyxDQUFDLElBQUksSUFBSSxHQUFHc1AsTUFBTSxHQUFHdFAsS0FBSyxDQUFDLENBQUM7aUNBQzdHO2dDQUNOeVAsWUFBWSxHQUFHLENBQUNELFFBQU8sR0FBRzlKLE9BQU8sQ0FBQ2tJLE1BQU0sQ0FBQyxJQUFJLElBQUksR0FBRzRCLFFBQU8sR0FBRyxDQUFDRCxtQkFBbUIsQ0FBQztnQ0FDbkZHLFdBQVcsR0FBR0QsWUFBWSxHQUFHO29DQUMvQnRGLENBQUMsRUFBRSxDQUFDO29DQUNKRSxDQUFDLEVBQUUsQ0FBQztpQ0FDUCxHQUFHLElBQUksQ0FBQzs7dUNBQ0g2QyxLQUFLLENBQUNoTyxHQUFHLENBQUNwQixRQUFRLENBQUMsRUFBRSxFQUFFdVAsU0FBUyxFQUFFO29DQUNwQ3JOLEtBQUssRUFBTEEsS0FBSztvQ0FDTEYsUUFBUSxFQUFSQSxRQUFRO29DQUNSSSxLQUFLLEVBQUxBLEtBQUs7b0NBQ0w0QyxNQUFNLEVBQUVnTCxTQUFTO29DQUNqQjlFLFVBQVUsRUFBRSxLQUFLO2lDQUNwQixDQUFDLEVBQUUwRixTQUFTLEVBQUV6RSxZQUFZLElBQUksSUFBSSxHQUFHQSxZQUFZLEdBQUd5RixXQUFXLENBQUMsQ0FBQ2pJLEtBQUssQ0FBQyxTQUFDaUMsQ0FBQyxFQUFHO29DQUN6RSxJQUFJQSxDQUFDLENBQUNySyxTQUFTLEVBQUVuQyxLQUFLLEdBQUdBLEtBQUssSUFBSXdNLENBQUMsQ0FBQzt5Q0FDL0IsTUFBTUEsQ0FBQyxDQUFDO2lDQUNoQixDQUFDOztvQ0FDRXhNLENBQUFBLEtBQUs7Ozs7Z0NBQ0wsSUFBSSxDQUFDaVEsZUFBZSxFQUFFO29DQUNsQjdFLE1BQU0sQ0FBQ2lELE1BQU0sQ0FBQytFLElBQUksQ0FBQyxrQkFBa0IsRUFBRXBULEtBQUssRUFBRTRRLFNBQVMsRUFBRUQsVUFBVSxDQUFDLENBQUM7aUNBQ3hFO2dDQUNELE1BQU0zUSxLQUFLLENBQUM7O2dDQUVoQixJQUFJMEgsS0FBK0IsRUFBRSxFQUlwQztnQ0FDRCxJQUFJLENBQUN1SSxlQUFlLEVBQUU7b0NBQ2xCN0UsTUFBTSxDQUFDaUQsTUFBTSxDQUFDK0UsSUFBSSxDQUFDLHFCQUFxQixFQUFFM00sRUFBRSxFQUFFa0ssVUFBVSxDQUFDLENBQUM7aUNBQzdEO2dDQUVLOEIsU0FBUyxTQUFTLENBQUM7Z0NBQ3pCLElBQUlGLFlBQVksSUFBSUUsU0FBUyxDQUFDakwsSUFBSSxDQUFDZixFQUFFLENBQUMsRUFBRTtvQ0FDcEN1SixLQUFLLENBQUN1RCxZQUFZLENBQUM5TSxFQUFFLENBQUMsQ0FBQztpQ0FDMUI7NkRBQ00sSUFBSTs7OztvQ0FFUCxHQUFDLENBQUMsRUFBRXpJLFFBQVEsQ0FBQyxDQUFDTixPQUFPLFNBQU0sSUFBSXdYLFFBQUsvUyxTQUFTOzs7OzZEQUN0QyxLQUFLOztnQ0FFaEIsY0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBRWxCLEVBQUMsRUFBRSxDQUFDO2FBQ1I7OztZQUNEdUssR0FBVyxFQUFYQSxhQUFXO21CQUFYQSxTQUFBQSxXQUFXLENBQUMvRCxNQUFNLEVBQUV2RyxHQUFHLEVBQUVxRSxFQUFFLEVBQWdCO29CQUFkK0IsT0FBTyxHQUFQQSwrQ0FBWSxrQkFBRixFQUFFO2dCQUNyQyxJQUFJZCxJQUFxQyxFQUFFO29CQUN2QyxJQUFJLE9BQU9HLE1BQU0sQ0FBQ0MsT0FBTyxLQUFLLFdBQVcsRUFBRTt3QkFDdkN0QyxPQUFPLENBQUN4RixLQUFLLENBQUUsMkNBQXlDLENBQUUsQ0FBQzt3QkFDM0QsT0FBTztxQkFDVjtvQkFDRCxJQUFJLE9BQU82SCxNQUFNLENBQUNDLE9BQU8sQ0FBQ2EsTUFBTSxDQUFDLEtBQUssV0FBVyxFQUFFO3dCQUMvQ25ELE9BQU8sQ0FBQ3hGLEtBQUssQ0FBQywwQkFBeUIsQ0FBUyxNQUFpQixDQUF4QjJJLE1BQU0sRUFBQyxtQkFBaUIsQ0FBQyxDQUFDLENBQUM7d0JBQ3BFLE9BQU87cUJBQ1Y7aUJBQ0o7Z0JBQ0QsSUFBSUEsTUFBTSxLQUFLLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFBRXJLLE1BQU0sQ0FBQyxDQUFDcU8sTUFBTSxFQUFFLEtBQUtsRyxFQUFFLEVBQUU7b0JBQ3ZELElBQUksQ0FBQ21ILFFBQVEsR0FBR3BGLE9BQU8sQ0FBQ21GLE9BQU8sQ0FBQztvQkFDaEM5RixNQUFNLENBQUNDLE9BQU8sQ0FBQ2EsTUFBTSxDQUFDLENBQUM7d0JBQ25CdkcsR0FBRyxFQUFIQSxHQUFHO3dCQUNIcUUsRUFBRSxFQUFGQSxFQUFFO3dCQUNGK0IsT0FBTyxFQUFQQSxPQUFPO3dCQUNQc0UsR0FBRyxFQUFFLElBQUk7d0JBQ1RqTixHQUFHLEVBQUUsSUFBSSxDQUFDeU0sSUFBSSxHQUFHM0QsTUFBTSxLQUFLLFdBQVcsR0FBRyxJQUFJLENBQUMyRCxJQUFJLEdBQUc3TyxTQUFTLEVBQUU7cUJBQ3BFLEVBQ0QscUZBQXFGO29CQUNyRix3RUFBd0U7b0JBQ3hFLEVBQUUsRUFBRWdKLEVBQUUsQ0FBQyxDQUFDO2lCQUNYO2FBQ0o7OztZQUNEME8sR0FBb0IsRUFBcEJBLHNCQUFvQjttQkFBcEJBLFNBQUFBLG9CQUFvQixDQUFDelUsR0FBRyxFQUFFa0MsUUFBUSxFQUFFSSxLQUFLLEVBQUV5RCxFQUFFLEVBQUVrSyxVQUFVLEVBQUV5RSxhQUFhLEVBQUU7Z0JBQ3RFLElBQUlwRixLQUFLLEdBQUcsSUFBSTtnQkFDaEIsT0FBTzVQLGlCQUFpQixnSEFBQyxtQkFBWTt3QkFzQnpCd0wsU0FBUyxFQUNUd0MsV0FBVyxFQUNYSixLQUFLLE9BSUh3RCxTQUFTOzs7O2dDQTNCbkJoTSxPQUFPLENBQUN4RixLQUFLLENBQUNVLEdBQUcsQ0FBQyxDQUFDO29DQUNmQSxDQUFBQSxHQUFHLENBQUN5QixTQUFTOzs7O2dDQUNiLGdDQUFnQztnQ0FDaEMsTUFBTXpCLEdBQUcsQ0FBQzs7b0NBRVYsR0FBQyxDQUFDLEVBQUU1QyxZQUFZLENBQUMsQ0FBQ3VYLFlBQVksQ0FBQzNVLEdBQUcsQ0FBQyxJQUFJMFUsYUFBYTs7OztnQ0FDcERoSyxNQUFNLENBQUNpRCxNQUFNLENBQUMrRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUxUyxHQUFHLEVBQUUrRixFQUFFLEVBQUVrSyxVQUFVLENBQUMsQ0FBQztnQ0FDNUQsaUVBQWlFO2dDQUNqRSwwQkFBMEI7Z0NBQzFCLDBDQUEwQztnQ0FDMUMsNENBQTRDO2dDQUM1QywrREFBK0Q7Z0NBQy9EOUYsb0JBQW9CLENBQUM7b0NBQ2pCekksR0FBRyxFQUFFcUUsRUFBRTtvQ0FDUDdCLE1BQU0sRUFBRW9MLEtBQUs7aUNBQ2hCLENBQUMsQ0FBQztnQ0FDSCxrRUFBa0U7Z0NBQ2xFLDhEQUE4RDtnQ0FDOUQsTUFBTS9OLHNCQUFzQixFQUFFLENBQUM7OztpQ0FHakI7aUNBQ0U7aUNBQ047b0NBQ04sU0FBTzJKLFNBQVMsS0FBSyxXQUFXLElBQUksT0FBT3dDLFdBQVcsS0FBSyxXQUFXOzs7Ozs7dUNBQzFCNEIsS0FBSyxDQUFDNkUsY0FBYyxDQUFDLFNBQVMsQ0FBQzs7Z0NBQTFFLGVBQWtDO2dDQUFoQ3ZOLFNBQWUsT0FBZkEsSUFBSSxDQUFXO2dDQUFHOEcsV0FBVyxPQUFYQSxXQUFXOzs7Z0NBRTlCb0QsU0FBUyxHQUFHO29DQUNkeEQsS0FBSyxFQUFMQSxLQUFLO29DQUNMcEMsU0FBUyxFQUFUQSxTQUFTO29DQUNUd0MsV0FBVyxFQUFYQSxXQUFXO29DQUNYMU4sR0FBRyxFQUFIQSxHQUFHO29DQUNIVixLQUFLLEVBQUVVLEdBQUc7aUNBQ2IsQ0FBQztvQ0FDRzhRLFNBQVMsQ0FBQ3hELEtBQUs7Ozs7Ozt1Q0FFWWdDLEtBQUssQ0FBQ3NGLGVBQWUsQ0FBQzFKLFNBQVMsRUFBRTtvQ0FDckRsTCxHQUFHLEVBQUhBLEdBQUc7b0NBQ0hrQyxRQUFRLEVBQVJBLFFBQVE7b0NBQ1JJLEtBQUssRUFBTEEsS0FBSztpQ0FDUixDQUFDOztnQ0FKRndPLFNBQVMsQ0FBQ3hELEtBQUssWUFJYjs7Ozs7O2dDQUVGeEksT0FBTyxDQUFDeEYsS0FBSyxDQUFDLHlDQUF5QyxVQUFTLENBQUM7Z0NBQ2pFd1IsU0FBUyxDQUFDeEQsS0FBSyxHQUFHLEVBQUUsQ0FBQzs7NkRBR3RCd0QsU0FBUzs7Ozs2REFFVHhCLEtBQUssQ0FBQ21GLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFFblgsUUFBUSxDQUFDLENBQUNOLE9BQU8sU0FBYyxhQUFrQixJQUFJd0UsS0FBSyxDQUFDcVQsVUFBZSxFQUFFLENBQUMsRUFBRTNTLFFBQVEsRUFBRUksS0FBSyxFQUFFeUQsRUFBRSxFQUFFa0ssVUFBVSxFQUFFLElBQUksQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O2lCQUVsSyxFQUFDLEVBQUUsQ0FBQzthQUNSOzs7WUFDRHdELEdBQVksRUFBWkEsY0FBWTttQkFBWkEsU0FBQUEsWUFBWSxDQUFDLEtBQTRJLEVBQUU7b0JBQTVJclIsY0FBcUIsR0FBdkIsS0FBNEksQ0FBMUlBLEtBQUssRUFBbUJGLFFBQVEsR0FBbEMsS0FBNEksQ0FBbEhBLFFBQVEsRUFBR0ksS0FBSyxHQUExQyxLQUE0SSxDQUF2R0EsS0FBSyxFQUFHeUQsRUFBRSxHQUEvQyxLQUE0SSxDQUEvRkEsRUFBRSxFQUFHQyxVQUFVLEdBQTVELEtBQTRJLENBQTFGQSxVQUFVLEVBQUdpSyxVQUFVLEdBQXpFLEtBQTRJLENBQTdFQSxVQUFVLEVBQUc1RixNQUFNLEdBQWxGLEtBQTRJLENBQWhFQSxNQUFNLEVBQUcxQixhQUFhLEdBQWxHLEtBQTRJLENBQXZEQSxhQUFhLEVBQUc2QyxTQUFTLEdBQTlHLEtBQTRJLENBQXZDQSxTQUFTLEVBQUd4Qyx3QkFBd0IsR0FBekksS0FBNEksQ0FBM0JBLHdCQUF3QjtnQkFDbEosSUFBSXNHLEtBQUssR0FBRyxJQUFJO2dCQUNoQixPQUFPNVAsaUJBQWlCLGdIQUFDLG1CQUFZO3dCQU1qQzBDLEtBQUssRUFFR29ILEdBQUcsRUFBRXVMLElBQUksRUFBRUMsSUFBSSxFQUNidkssZUFBZSxFQUlqQndLLFlBQVksRUFJWkMsZUFBZSxFQUNiQyxtQkFBbUIsRUFrQm5CdkwsSUFBSSxFQXFDSmtILFNBQVMsRUFRSHNFLGtCQUFrQixFQVM5QkMscUJBQXFCLEVBQ2ZDLGVBQWUsRUFDYmhJLEtBQUssRUF1Q0hwRSxRQUFRLEVBWWRxTSxVQUFVOzs7O2dDQXpJbEJuVCxLQUFLLEdBQUcwUyxjQUFjLENBQUM7O2lDQUVDO2dDQUNkckssZUFBZSxHQUFHSCxtQkFBbUIsQ0FBQztvQ0FDeENsSSxLQUFLLEVBQUxBLEtBQUs7b0NBQ0w4QixNQUFNLEVBQUVvTCxLQUFLO2lDQUNoQixDQUFDLENBQUM7Z0NBQ0MyRixZQUFZLEdBQUczRixLQUFLLENBQUNsQyxVQUFVLENBQUNoTCxLQUFLLENBQUMsQ0FBQztvQ0FDdkM2TixDQUFBQSxDQUFBQSxVQUFVLENBQUNoRCxPQUFPLElBQUlnSSxZQUFZLElBQUkzRixLQUFLLENBQUNsTixLQUFLLEtBQUtBLEtBQUs7Ozs7NkRBQ3BENlMsWUFBWTs7Z0NBRW5CQyxlQUFlLEdBQUdELFlBQVksSUFBSSxDQUFDLENBQUMsU0FBUyxJQUFJQSxZQUFZLENBQUMsSUFBSWpPLGFBcitCekUsS0FxK0JrRyxhQUFhLEdBQUdpTyxDQUFZLEdBQUdoVixTQUFTLENBQUM7Z0NBQ2xJa1YsbUJBQW1CLEdBQUc7b0NBQ3hCM00sUUFBUSxFQUFFOEcsS0FBSyxDQUFDdkUsVUFBVSxDQUFDeUssV0FBVyxDQUFDO3dDQUNuQ3JSLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRWhHLFVBQVUsQ0FBQyxDQUFDb0csb0JBQW9CLENBQUM7NENBQ3ZDckMsUUFBUSxFQUFSQSxRQUFROzRDQUNSSSxLQUFLLEVBQUxBLEtBQUs7eUNBQ1IsQ0FBQzt3Q0FDRm1ULGlCQUFpQixFQUFFLElBQUk7d0NBQ3ZCdlEsTUFBTSxFQUFFYyxVQUFVO3dDQUNsQnFFLE1BQU0sRUFBTkEsTUFBTTtxQ0FDVCxDQUFDO29DQUNGMUIsYUFBYSxFQUFFLElBQUk7b0NBQ25CQyxjQUFjLEVBQUUwRyxLQUFLLENBQUN4QyxLQUFLO29DQUMzQmpFLFNBQVMsRUFBRSxJQUFJO29DQUNmSixhQUFhLEVBQUU2RyxLQUFLLENBQUM1RCxHQUFHO29DQUN4QjVDLFlBQVksRUFBRSxDQUFDMEMsU0FBUztvQ0FDeEI5QyxVQUFVLEVBQUUsS0FBSztvQ0FDakJNLHdCQUF3QixFQUF4QkEsd0JBQXdCO2lDQUMzQixDQUFDOzt1Q0FDaUIwTSxxQkFBcUIsQ0FBQztvQ0FDckNDLFNBQVMsRUFBRTsrQ0FBSXBOLGFBQWEsQ0FBQzRNLG1CQUFtQixDQUFDO3FDQUFBO29DQUNqRGpRLE1BQU0sRUFBRWMsVUFBVTtvQ0FDbEJxRSxNQUFNLEVBQUVBLE1BQU07b0NBQ2RuRyxNQUFNLEVBQUVvTCxLQUFLO2lDQUNoQixDQUFDOztnQ0FMSTFGLElBQUksWUFLUjtnQ0FDRmEsZUFBZSxFQUFFLENBQUM7b0NBQ2QsR0FBQ2IsSUFBSSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDSixHQUFHLEdBQUdJLElBQUksQ0FBQ2dNLE1BQU0sQ0FBQyxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsR0FBR3BNLEdBQUcsQ0FBQ2tLLElBQUksQ0FBQyxLQUFLLG1CQUFtQixJQUFJLENBQUM5SixJQUFJLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUNtTCxJQUFJLEdBQUduTCxJQUFJLENBQUNnTSxNQUFNLENBQUMsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUdiLElBQUksQ0FBQ3JCLElBQUksQ0FBQyxLQUFLLG1CQUFtQjs7Ozs2REFDak05SixJQUFJLENBQUNnTSxNQUFNOztvQ0FFbEIsR0FBQ2hNLElBQUksSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQ29MLElBQUksR0FBR3BMLElBQUksQ0FBQ2dNLE1BQU0sQ0FBQyxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsR0FBR1osSUFBSSxDQUFDdEIsSUFBSSxDQUFDLEtBQUssU0FBUzs7OztnQ0FDekZ0UixLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUVqRixvQkFBb0IsQ0FBQyxDQUFDc0osbUJBQW1CLENBQUNtRCxJQUFJLENBQUNnTSxNQUFNLENBQUNsUSxZQUFZLENBQUMsQ0FBQztnQ0FDaEZ4RCxRQUFRLEdBQUcwSCxJQUFJLENBQUNnTSxNQUFNLENBQUNsUSxZQUFZLENBQUM7Z0NBQ3BDcEQsS0FBSyxHQUFHcEMsUUFBUSxDQUFDLEVBQUUsRUFBRW9DLEtBQUssRUFBRXNILElBQUksQ0FBQ2dNLE1BQU0sQ0FBQ2pHLFFBQVEsQ0FBQ3JOLEtBQUssQ0FBQyxDQUFDO2dDQUN4RDBELFVBQVUsR0FBRzRELElBQUksQ0FBQ2dNLE1BQU0sQ0FBQ2pHLFFBQVEsQ0FBQ3pOLFFBQVEsQ0FBQztnQ0FDM0Msa0RBQWtEO2dDQUNsRCtTLFlBQVksR0FBRzNGLEtBQUssQ0FBQ2xDLFVBQVUsQ0FBQ2hMLEtBQUssQ0FBQyxDQUFDO29DQUNuQzZOLENBQUFBLENBQUFBLFVBQVUsQ0FBQ2hELE9BQU8sSUFBSWdJLFlBQVksSUFBSTNGLEtBQUssQ0FBQ2xOLEtBQUssS0FBS0EsS0FBSyxJQUFJLENBQUN1RyxhQUFhOzs7O2dDQUM3RSw0REFBNEQ7Z0NBQzVELDZEQUE2RDtnQ0FDN0QsZ0VBQWdFO2dDQUNoRTJHLEtBQUssQ0FBQ2xDLFVBQVUsQ0FBQzBILGNBQWMsQ0FBQyxHQUFHNVUsUUFBUSxDQUFDLEVBQUUsRUFBRStVLFlBQVksRUFBRTtvQ0FDMUQ3UyxLQUFLLEVBQUxBLEtBQUs7aUNBQ1IsQ0FBQyxDQUFDOzZEQUNJbEMsUUFBUSxDQUFDLEVBQUUsRUFBRStVLFlBQVksRUFBRTtvQ0FDOUI3UyxLQUFLLEVBQUxBLEtBQUs7aUNBQ1IsQ0FBQzs7Z0NBRU44UyxlQUFlLEdBQUdELFlBQVksSUFBSSxDQUFDLENBQUMsU0FBUyxJQUFJQSxZQUFZLENBQUMsSUFBSWpPLGFBcGhDekUsS0FvaENrRyxhQUFhLEdBQUdpTyxDQUFZLEdBQUdoVixTQUFTLENBQUM7O29DQUVwSW1DLENBQUFBLENBQUFBLEtBQUssS0FBSyxNQUFNLElBQUlBLEtBQUssQ0FBQzZDLFVBQVUsQ0FBQyxPQUFPLENBQUM7Ozs7Z0NBQzdDa0Ysb0JBQW9CLENBQUM7b0NBQ2pCekksR0FBRyxFQUFFcUUsRUFBRTtvQ0FDUDdCLE1BQU0sRUFBRW9MLEtBQUs7aUNBQ2hCLENBQUMsQ0FBQzs2REFDSSxJQUFJOVAsT0FBTyxDQUFDLFdBQUksRUFBRSxDQUFDOzswQ0FFWjBWLGVBQWU7Ozs7Ozt1Q0FBVzVGLEtBQUssQ0FBQzZFLGNBQWMsQ0FBQy9SLEtBQUssQ0FBQyxDQUFDM0MsSUFBSSxDQUFDLFNBQUNvVyxHQUFHOzJDQUFJO3dDQUM3RTNLLFNBQVMsRUFBRTJLLEdBQUcsQ0FBQ2pQLElBQUk7d0NBQ25COEcsV0FBVyxFQUFFbUksR0FBRyxDQUFDbkksV0FBVzt3Q0FDNUJILE9BQU8sRUFBRXNJLEdBQUcsQ0FBQ0MsR0FBRyxDQUFDdkksT0FBTzt3Q0FDeEJDLE9BQU8sRUFBRXFJLEdBQUcsQ0FBQ0MsR0FBRyxDQUFDdEksT0FBTzt3Q0FDeEJDLE9BQU8sRUFBRSxDQUFDLENBQUNvSSxHQUFHLENBQUNDLEdBQUcsQ0FBQ0MsWUFBWTtxQ0FDbEM7aUNBQUMsQ0FBQzs7OztnQ0FORGpGLFNBQVMsVUFNUDtvQ0FDSjlKLEtBQXFDLEVBQUUsRTtnQ0FDakMsa0JBQW9CLEdBQU05SixtSUFBTixDQUE2QztvQ0FDbEVrWSxrQkFBa0IsQ0FBQ3RFLFNBQVMsQ0FBQzVGLFNBQVMsQ0FBQzs7OztnQ0FDeEMsTUFBTSxJQUFJMUosS0FBSyxDQUFDLHdEQUF1RCxDQUFXLE1BQUMsQ0FBVlUsUUFBUSxFQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUM7O2dDQU85Rm1ULHFCQUFxQixHQUFHdkUsU0FBUyxDQUFDckQsT0FBTyxJQUFJLENBQUN6RyxLQUFxQyxJQUFJOEosQ0FBaUIsQ0FBQyxDQUFDO2dDQUNwR3dFLGVBQWUsR0FBR3hFLFNBQVMsQ0FBQ3ZELE9BQU8sSUFBSXVELFNBQVMsQ0FBQ3RELE9BQU8sSUFBSXNELFNBQVMsQ0FBQ3JELE9BQU8sQ0FBQzs7dUNBQzNENkIsS0FBSyxDQUFDMEcsUUFBUSxDQUFDdFcsaUJBQWlCLGdIQUFDLG1CQUFZO3dDQUV0RDZKLElBQUk7Ozs7b0RBRForTCxDQUFBQSxDQUFBQSxlQUFlLElBQUksQ0FBQ0QscUJBQXFCOzs7OzBEQUN2QnpMLElBQUk7Ozs7Ozt1REFBV3JCLGFBQWEsQ0FBQztvREFDM0NDLFFBQVEsRUFBRThHLEtBQUssQ0FBQ3ZFLFVBQVUsQ0FBQ3lLLFdBQVcsQ0FBQzt3REFDbkNyUixJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUVoRyxVQUFVLENBQUMsQ0FBQ29HLG9CQUFvQixDQUFDOzREQUN2Q3JDLFFBQVEsRUFBUkEsUUFBUTs0REFDUkksS0FBSyxFQUFMQSxLQUFLO3lEQUNSLENBQUM7d0RBQ0Y0QyxNQUFNLEVBQUVjLFVBQVU7d0RBQ2xCcUUsTUFBTSxFQUFOQSxNQUFNO3FEQUNULENBQUM7b0RBQ0Z6QixjQUFjLEVBQUUwRyxLQUFLLENBQUN4QyxLQUFLO29EQUMzQmpFLFNBQVMsRUFBRSxJQUFJO29EQUNmSixhQUFhLEVBQUU2RyxLQUFLLENBQUM1RCxHQUFHO29EQUN4QjVDLFlBQVksRUFBRSxDQUFDMEMsU0FBUztvREFDeEI5QyxVQUFVLEVBQUUsS0FBSztvREFDakJNLHdCQUF3QixFQUF4QkEsd0JBQXdCO2lEQUMzQixDQUFDOzs7O2dEQWZJLElBQU0sV0FBSk8sSUFBSSxDQWVUOzZFQUNJO29EQUNIK0QsS0FBSyxFQUFFL0QsSUFBSTtpREFDZDs7MERBR1EsRUFBRTs7dURBQ0UrRixLQUFLLENBQUNzRixlQUFlLENBQUM5RCxTQUFTLENBQUM1RixTQUFTLEVBQ3REO29EQUNJaEosUUFBUSxFQUFSQSxRQUFRO29EQUNSSSxLQUFLLEVBQUxBLEtBQUs7b0RBQ0w0QyxNQUFNLEVBQUVhLEVBQUU7b0RBQ1ZzRSxNQUFNLEVBQU5BLE1BQU07b0RBQ05nQixPQUFPLEVBQUVpRSxLQUFLLENBQUNqRSxPQUFPO29EQUN0QkMsYUFBYSxFQUFFZ0UsS0FBSyxDQUFDaEUsYUFBYTtpREFDckMsQ0FBQzs7OzZFQVZDO29EQUNIcEQsT0FBTztvREFDUG9GLEtBQUs7aURBU1I7Ozs7OztpQ0FDSixFQUFDLENBQUM7O2dDQWxDRyxLQUFPLGFBQUxBLEtBQUssQ0FrQ1Y7Z0NBQ0gsbURBQW1EO2dDQUNuRCw2Q0FBNkM7Z0NBQzdDLHVDQUF1QztnQ0FDdkMsSUFBSXdELFNBQVMsQ0FBQ3RELE9BQU8sSUFBSTJILG1CQUFtQixDQUFDM00sUUFBUSxFQUFFO29DQUM3Q1UsUUFBUSxHQUFHLElBQUluSCxHQUFHLENBQUNvVCxtQkFBbUIsQ0FBQzNNLFFBQVEsRUFBRXJCLE1BQU0sQ0FBQzhCLFFBQVEsQ0FBQzlFLElBQUksQ0FBQyxDQUFDQSxJQUFJLENBQUM7b0NBQ2xGLE9BQU9tTCxLQUFLLENBQUM1RCxHQUFHLENBQUN4QyxRQUFRLENBQUMsQ0FBQztpQ0FDOUI7Z0NBQ0QsK0NBQStDO2dDQUMvQyw2REFBNkQ7Z0NBQzdELElBQUksQ0FBQ29HLEtBQUssQ0FBQzlELFNBQVMsSUFBSXNGLFNBQVMsQ0FBQ3ZELE9BQU8sSUFBSXZHLGFBNWxDaEQsS0E0bEN5RSxhQUFhLEVBQUUsRUFNcEY7aUNBQ2M7b0NBQ1g4SixDQUFBQSxTQUFTLENBQUNyRCxPQUFPOzs7O29DQUVENEgsQ0FBQUEscUJBQXFCOzs7Ozt1Q0FBVS9GLEtBQUssQ0FBQzBHLFFBQVEsQ0FBQzsyQ0FBSTFHLEtBQUssQ0FBQzJHLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRTlYLFVBQVUsQ0FBQyxDQUFDb0csb0JBQW9CLENBQUM7d0NBQ2hIakMsS0FBSyxFQUFFcEMsUUFBUSxDQUFDLEVBQUUsRUFBRW9DLEtBQUssRUFBRTs0Q0FDdkI0VCxVQUFVLEVBQUUsR0FBRzt5Q0FDbEIsQ0FBQzt3Q0FDRmhVLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRXJFLFVBQVUsQ0FBQyxDQUFDeUgsY0FBYyxDQUFDbEQsS0FBSyxDQUFDLEdBQUd2RixhQUFhLENBQUNxRixRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUVwRSxpQkFBaUIsQ0FBQyxDQUFDK08sZ0JBQWdCLENBQUM3RyxVQUFVLENBQUMsQ0FBQzlELFFBQVEsRUFBRUksS0FBSyxDQUFDLENBQUNzQixNQUFNLEdBQUcxQixRQUFRO3FDQUNuSyxDQUFDLENBQUM7aUNBQUEsQ0FBQzs7MENBTDRCLFVBSzFCMEgsSUFBSTs7OzswQ0FBRzBELEtBQUssQ0FBQzRJLFVBQVU7OztnQ0FOckNYLFVBQVUsR0FBRztvQ0FDVFcsVUFBVTtpQ0FNYjs7Z0NBRUw1SSxLQUFLLENBQUN5RyxTQUFTLEdBQUd2WCxNQUFNLENBQUMyRCxNQUFNLENBQUMsRUFBRSxFQUFFbU4sS0FBSyxDQUFDeUcsU0FBUyxFQUFFd0IsVUFBVSxDQUFDLENBQUM7Z0NBQ2pFekUsU0FBUyxDQUFDeEQsS0FBSyxHQUFHQSxLQUFLLENBQUM7Z0NBQ3hCd0QsU0FBUyxDQUFDMU8sS0FBSyxHQUFHQSxLQUFLLENBQUM7Z0NBQ3hCME8sU0FBUyxDQUFDeE8sS0FBSyxHQUFHQSxLQUFLLENBQUM7Z0NBQ3hCd08sU0FBUyxDQUFDOUssVUFBVSxHQUFHQSxVQUFVLENBQUM7Z0NBQ2xDc0osS0FBSyxDQUFDbEMsVUFBVSxDQUFDaEwsS0FBSyxDQUFDLEdBQUcwTyxTQUFTLENBQUM7Z0NBQ3BDLDhEQUE4RDtnQ0FDOUQsMkVBQTJFO2dDQUMzRSxJQUFJMU8sS0FBSyxLQUFLMFMsY0FBYyxFQUFFO29DQUMxQnhGLEtBQUssQ0FBQ2xDLFVBQVUsQ0FBQzBILGNBQWMsQ0FBQyxHQUFHNVUsUUFBUSxDQUFDLEVBQUUsRUFBRTRRLFNBQVMsRUFBRTt3Q0FDdkQxTyxLQUFLLEVBQUxBLEtBQUs7cUNBQ1IsQ0FBQyxDQUFDO2lDQUNOOzZEQUNNME8sU0FBUzs7Ozs2REFFVHhCLEtBQUssQ0FBQ21GLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFFblgsUUFBUSxDQUFDLENBQUM2WSxjQUFjLFNBQUssRUFBRWpVLFFBQVEsRUFBRUksS0FBSyxFQUFFeUQsRUFBRSxFQUFFa0ssVUFBVSxDQUFDOzs7Ozs7Ozs7OztpQkFFNUcsRUFBQyxFQUFFLENBQUM7YUFDUjs7O1lBQ0QzTyxHQUFHLEVBQUhBLEtBQUc7bUJBQUhBLFNBQUFBLEdBQUcsQ0FBQ3lLLEtBQUssRUFBRW5DLElBQUksRUFBRWtJLFdBQVcsRUFBRTtnQkFDMUIsSUFBSSxDQUFDL0YsS0FBSyxHQUFHQSxLQUFLLENBQUM7Z0JBQ25CLE9BQU8sSUFBSSxDQUFDa0MsR0FBRyxDQUFDckUsSUFBSSxFQUFFLElBQUksQ0FBQ3dELFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQ2xDLFNBQVMsRUFBRTRHLFdBQVcsQ0FBQyxDQUFDO2FBQzFFOzs7WUFDRDs7O0tBR0MsQ0FBQ3NFLEdBQWMsRUFBZEEsZ0JBQWM7bUJBQWRBLFNBQUFBLGNBQWMsQ0FBQ0MsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUN0SixJQUFJLEdBQUdzSixFQUFFLENBQUM7YUFDbEI7OztZQUNEekQsR0FBZSxFQUFmQSxpQkFBZTttQkFBZkEsU0FBQUEsZUFBZSxDQUFDN00sRUFBRSxFQUFFO2dCQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDYixNQUFNLEVBQUUsT0FBTyxLQUFLLENBQUM7Z0JBQy9CLElBQWdDLEdBQXNCLGtCQUF0QixJQUFJLENBQUNBLE1BQU0sQ0FBQ0wsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUEvQ3lSLFlBQVksR0FBYSxHQUFzQixHQUFuQyxFQUFFQyxPQUFPLEdBQUksR0FBc0IsR0FBMUI7Z0JBQzVCLElBQWdDeFEsSUFBYSxrQkFBYkEsRUFBRSxDQUFDbEIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUF0QzJSLFlBQVksR0FBYXpRLElBQWEsR0FBMUIsRUFBRTBRLE9BQU8sR0FBSTFRLElBQWEsR0FBakI7Z0JBQzVCLHlFQUF5RTtnQkFDekUsSUFBSTBRLE9BQU8sSUFBSUgsWUFBWSxLQUFLRSxZQUFZLElBQUlELE9BQU8sS0FBS0UsT0FBTyxFQUFFO29CQUNqRSxPQUFPLElBQUksQ0FBQztpQkFDZjtnQkFDRCwwREFBMEQ7Z0JBQzFELElBQUlILFlBQVksS0FBS0UsWUFBWSxFQUFFO29CQUMvQixPQUFPLEtBQUssQ0FBQztpQkFDaEI7Z0JBQ0QseURBQXlEO2dCQUN6RCx1REFBdUQ7Z0JBQ3ZELDJEQUEyRDtnQkFDM0QsbUNBQW1DO2dCQUNuQyxPQUFPRCxPQUFPLEtBQUtFLE9BQU8sQ0FBQzthQUM5Qjs7O1lBQ0Q1RCxHQUFZLEVBQVpBLGNBQVk7bUJBQVpBLFNBQUFBLFlBQVksQ0FBQzlNLEVBQUUsRUFBRTtnQkFDYixJQUFzQkEsR0FBYSxrQkFBYkEsRUFBRSxDQUFDbEIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUExQlksR0FBUyxHQUFJTSxHQUFhLEtBQTFCTixJQUFJLEdBQUpBLEdBQVMsY0FBRixFQUFFLEdBQVRBLEdBQVM7Z0JBQ2xCLGdFQUFnRTtnQkFDaEUscUJBQXFCO2dCQUNyQixJQUFJQSxJQUFJLEtBQUssRUFBRSxJQUFJQSxJQUFJLEtBQUssS0FBSyxFQUFFO29CQUMvQjBCLE1BQU0sQ0FBQ3VQLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ3RCLE9BQU87aUJBQ1Y7Z0JBQ0QsOENBQThDO2dCQUM5QyxJQUFNQyxPQUFPLEdBQUdDLGtCQUFrQixDQUFDblIsSUFBSSxDQUFDO2dCQUN4QywrQ0FBK0M7Z0JBQy9DLElBQU1vUixJQUFJLEdBQUd4QyxRQUFRLENBQUN5QyxjQUFjLENBQUNILE9BQU8sQ0FBQztnQkFDN0MsSUFBSUUsSUFBSSxFQUFFO29CQUNOQSxJQUFJLENBQUNFLGNBQWMsRUFBRSxDQUFDO29CQUN0QixPQUFPO2lCQUNWO2dCQUNELGtFQUFrRTtnQkFDbEUscUJBQXFCO2dCQUNyQixJQUFNQyxNQUFNLEdBQUczQyxRQUFRLENBQUM0QyxpQkFBaUIsQ0FBQ04sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyRCxJQUFJSyxNQUFNLEVBQUU7b0JBQ1JBLE1BQU0sQ0FBQ0QsY0FBYyxFQUFFLENBQUM7aUJBQzNCO2FBQ0o7OztZQUNENUQsR0FBUSxFQUFSQSxVQUFRO21CQUFSQSxTQUFBQSxRQUFRLENBQUNqTyxNQUFNLEVBQUU7Z0JBQ2IsT0FBTyxJQUFJLENBQUNBLE1BQU0sS0FBS0EsTUFBTSxDQUFDO2FBQ2pDOzs7WUFDRDs7Ozs7S0FLQyxDQUFDZ1MsR0FBUSxFQUFSQSxVQUFRO21CQUFSQSxTQUFBQSxRQUFRLENBQUN4VixHQUFHLEVBQThCO29CQUE1QndELE1BQU0sR0FBTkEsK0NBQVksa0JBQUh4RCxHQUFHLEVBQUVvRyxPQUFPLEdBQVBBLCtDQUFZLGtCQUFGLEVBQUU7Z0JBQ3RDLElBQUl3SCxLQUFLLEdBQUcsSUFBSTtnQkFDaEIsT0FBTzVQLGlCQUFpQixnSEFBQyxtQkFBWTt3QkFDN0IwUSxNQUFNLEVBQ0psTyxRQUFRLEVBQUdJLEtBQUssRUFNVnFOLFFBQVEsRUFDTkMsZ0JBQWdCLEVBTXhCckosS0FBSyxFQUNQUCxVQUFVLEVBQ1JxRSxNQUFNLEVBQ05pRyxpQkFBaUIsRUFNZkQsUUFBUSxPQUVORSxjQUFjLEVBZ0NsQjNHLElBQUksRUFzQ0p4SCxLQUFLOzs7O2dDQS9GUGdPLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRXRTLGlCQUFpQixDQUFDLENBQUMrTyxnQkFBZ0IsQ0FBQ25MLEdBQUcsQ0FBQyxDQUFDO2dDQUNwRFEsUUFBUSxHQUFja08sTUFBTSxDQUE1QmxPLFFBQVEsRUFBR0ksS0FBSyxHQUFNOE4sTUFBTSxDQUFqQjlOLEtBQUssQ0FBYTtnQ0FDbkMsSUFBSTBFLEtBQStCLEVBQUUsRUFXcEM7O3VDQUNtQnNJLEtBQUssQ0FBQ3ZFLFVBQVUsQ0FBQ2dJLFdBQVcsRUFBRTs7Z0NBQTVDeE0sS0FBSyxZQUF1QztnQ0FDOUNQLFVBQVUsR0FBR2QsTUFBTSxDQUFDO2dDQUNsQm1GLE1BQU0sR0FBRyxPQUFPdkMsT0FBTyxDQUFDdUMsTUFBTSxLQUFLLFdBQVcsR0FBR3ZDLE9BQU8sQ0FBQ3VDLE1BQU0sSUFBSXBLLFNBQVMsR0FBR3FQLEtBQUssQ0FBQ2pGLE1BQU0sQ0FBQzs7dUNBQ2xFMEUsaUJBQWlCLENBQUM7b0NBQzlDN0osTUFBTSxFQUFFQSxNQUFNO29DQUNkbUYsTUFBTSxFQUFFQSxNQUFNO29DQUNkbkcsTUFBTSxFQUFFb0wsS0FBSztpQ0FDaEIsQ0FBQzs7Z0NBSklnQixpQkFBaUIsWUFJckI7b0NBQ0V0SixJQUF5RDs7OztpQ0FDNUM7Ozt1Q0FDc0IsQ0FBQyxDQUFDLEVBQUU1SixZQUFZLENBQUMsQ0FBQzRWLHNCQUFzQixFQUFFOztnQ0FBNUUsZUFBeUI7Z0NBQXZCRSxRQUFvQixPQUFwQkEsVUFBVSxDQUFVOztnQ0FDakIzQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLEVBQUV2UyxnQkFBZ0IsQ0FBQyxDQUFDaEIsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFeUIsWUFBWSxDQUFDLENBQUMySCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU5SCxVQUFVLENBQUMsQ0FBQzhMLFNBQVMsQ0FBQ2xGLE1BQU0sRUFBRW9LLEtBQUssQ0FBQ2pGLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFOUQsS0FBSyxFQUFFOEosUUFBUSxFQUFFRCxNQUFNLENBQUM5TixLQUFLLEVBQUUsU0FBQzhRLENBQUM7MkNBQUc5TSxtQkFBbUIsQ0FBQzhNLENBQUMsRUFBRTdNLEtBQUssQ0FBQztpQ0FBQSxFQUFFK0ksS0FBSyxDQUFDakUsT0FBTyxDQUFDLENBQUM7b0NBQ3pOa0YsQ0FBQUEsY0FBYyxDQUFDOEMsWUFBWTs7Ozs7O2dDQUcvQnJOLFVBQVUsR0FBRyxDQUFDLENBQUMsRUFBRXpILGFBQWEsQ0FBQyxDQUFDb1UsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFblUsZUFBZSxDQUFDLENBQUN5VCxjQUFjLENBQUMxQixjQUFjLENBQUNyTCxNQUFNLENBQUMsRUFBRW9LLEtBQUssQ0FBQ2pGLE1BQU0sQ0FBQyxDQUFDO2dDQUN2SCxJQUFJa0csY0FBYyxDQUFDK0MsV0FBVyxJQUFJL0MsY0FBYyxDQUFDN0ssWUFBWSxFQUFFO29DQUMzRCxnRUFBZ0U7b0NBQ2hFLDRDQUE0QztvQ0FDNUN4RCxRQUFRLEdBQUdxTyxjQUFjLENBQUM3SyxZQUFZLENBQUM7b0NBQ3ZDMEssTUFBTSxDQUFDbE8sUUFBUSxHQUFHQSxRQUFRLENBQUM7b0NBQzNCLElBQUksQ0FBQ29PLGlCQUFpQixFQUFFO3dDQUNwQjVPLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRXZELFVBQVUsQ0FBQyxDQUFDb0csb0JBQW9CLENBQUM2TCxNQUFNLENBQUMsQ0FBQztxQ0FDdEQ7aUNBQ0o7O2dDQUVMQSxNQUFNLENBQUNsTyxRQUFRLEdBQUdvRSxtQkFBbUIsQ0FBQzhKLE1BQU0sQ0FBQ2xPLFFBQVEsRUFBRXFFLEtBQUssQ0FBQyxDQUFDO2dDQUM5RCxJQUFJLENBQUMsQ0FBQyxFQUFFMUksVUFBVSxDQUFDLENBQUN5SCxjQUFjLENBQUM4SyxNQUFNLENBQUNsTyxRQUFRLENBQUMsRUFBRTtvQ0FDakRBLFFBQVEsR0FBR2tPLE1BQU0sQ0FBQ2xPLFFBQVEsQ0FBQztvQ0FDM0JrTyxNQUFNLENBQUNsTyxRQUFRLEdBQUdBLFFBQVEsQ0FBQztvQ0FDM0IxRixNQUFNLENBQUMyRCxNQUFNLENBQUNtQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUVyRSxhQUFhLENBQUMsQ0FBQzRFLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRTNFLFdBQVcsQ0FBQyxDQUFDdUUsYUFBYSxDQUFDMk4sTUFBTSxDQUFDbE8sUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTdELFVBQVUsQ0FBQyxDQUFDMlQsU0FBUyxDQUFDOU0sTUFBTSxDQUFDLENBQUNoRCxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztvQ0FDNUosSUFBSSxDQUFDb08saUJBQWlCLEVBQUU7d0NBQ3BCNU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFdkQsVUFBVSxDQUFDLENBQUNvRyxvQkFBb0IsQ0FBQzZMLE1BQU0sQ0FBQyxDQUFDO3FDQUN0RDtpQ0FDSjtvQ0FFR3BKLEtBQXFDLEVBQUUsRTs7Ozt1Q0FPeEIwTyxxQkFBcUIsQ0FBQztvQ0FDckNDLFNBQVMsRUFBRTsrQ0FBSXBOLGFBQWEsQ0FBQzs0Q0FDckJDLFFBQVEsRUFBRThHLEtBQUssQ0FBQ3ZFLFVBQVUsQ0FBQ3lLLFdBQVcsQ0FBQztnREFDbkNyUixJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUVoRyxVQUFVLENBQUMsQ0FBQ29HLG9CQUFvQixDQUFDO29EQUN2Q3JDLFFBQVEsRUFBUkEsUUFBUTtvREFDUkksS0FBSyxFQUFMQSxLQUFLO2lEQUNSLENBQUM7Z0RBQ0ZtVCxpQkFBaUIsRUFBRSxJQUFJO2dEQUN2QnZRLE1BQU0sRUFBRWMsVUFBVTtnREFDbEJxRSxNQUFNLEVBQU5BLE1BQU07NkNBQ1QsQ0FBQzs0Q0FDRjFCLGFBQWEsRUFBRSxJQUFJOzRDQUNuQkMsY0FBYyxFQUFFMEcsS0FBSyxDQUFDeEMsS0FBSzs0Q0FDM0JqRSxTQUFTLEVBQUUsSUFBSTs0Q0FDZkosYUFBYSxFQUFFNkcsS0FBSyxDQUFDNUQsR0FBRzs0Q0FDeEI1QyxZQUFZLEVBQUUsQ0FBQ3dHLEtBQUssQ0FBQzlELFNBQVM7NENBQzlCOUMsVUFBVSxFQUFFLElBQUk7eUNBQ25CLENBQUM7cUNBQUE7b0NBQ054RCxNQUFNLEVBQUVBLE1BQU07b0NBQ2RtRixNQUFNLEVBQUVBLE1BQU07b0NBQ2RuRyxNQUFNLEVBQUVvTCxLQUFLO2lDQUNoQixDQUFDOztnQ0FyQkkxRixJQUFJLFlBcUJSO2dDQUNGOzs7T0FHTCxDQUFDLElBQUksQ0FBQ0EsSUFBSSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsR0FBR0EsSUFBSSxDQUFDZ00sTUFBTSxDQUFDbEMsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFO29DQUN0RHRELE1BQU0sQ0FBQ2xPLFFBQVEsR0FBRzBILElBQUksQ0FBQ2dNLE1BQU0sQ0FBQ2xRLFlBQVksQ0FBQztvQ0FDM0N4RCxRQUFRLEdBQUcwSCxJQUFJLENBQUNnTSxNQUFNLENBQUNsUSxZQUFZLENBQUM7b0NBQ3BDcEQsS0FBSyxHQUFHcEMsUUFBUSxDQUFDLEVBQUUsRUFBRW9DLEtBQUssRUFBRXNILElBQUksQ0FBQ2dNLE1BQU0sQ0FBQ2pHLFFBQVEsQ0FBQ3JOLEtBQUssQ0FBQyxDQUFDO29DQUN4RDBELFVBQVUsR0FBRzRELElBQUksQ0FBQ2dNLE1BQU0sQ0FBQ2pHLFFBQVEsQ0FBQ3pOLFFBQVEsQ0FBQztvQ0FDM0NSLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRXZELFVBQVUsQ0FBQyxDQUFDb0csb0JBQW9CLENBQUM2TCxNQUFNLENBQUMsQ0FBQztpQ0FDdEQ7b0NBSUQsR0FBQ3hHLElBQUksSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUdBLElBQUksQ0FBQ2dNLE1BQU0sQ0FBQ2xDLElBQUksQ0FBQyxLQUFLLG1CQUFtQjs7Ozs7O2dDQUc1RHRSLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRWpGLG9CQUFvQixDQUFDLENBQUNzSixtQkFBbUIsQ0FBQ3ZFLFFBQVEsQ0FBQyxDQUFDOzt1Q0FDaEUxQyxPQUFPLENBQUNzVCxHQUFHLENBQUM7b0NBQ2R4RCxLQUFLLENBQUN2RSxVQUFVLENBQUNvTSxNQUFNLENBQUMvVSxLQUFLLENBQUMsQ0FBQzNDLElBQUksQ0FBQyxTQUFDMlgsS0FBSyxFQUFHO3dDQUN6QyxPQUFPQSxLQUFLLEdBQUc3TyxhQUFhLENBQUM7NENBQ3pCQyxRQUFRLEVBQUUsQ0FBQ29CLElBQUksSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUdBLElBQUksQ0FBQ3BCLFFBQVEsQ0FBQyxJQUFJOEcsS0FBSyxDQUFDdkUsVUFBVSxDQUFDeUssV0FBVyxDQUFDO2dEQUM5RXJSLElBQUksRUFBRXpDLEdBQUc7Z0RBQ1R3RCxNQUFNLEVBQUVjLFVBQVU7Z0RBQ2xCcUUsTUFBTSxFQUFFQSxNQUFNOzZDQUNqQixDQUFDOzRDQUNGekIsY0FBYyxFQUFFLEtBQUs7NENBQ3JCQyxTQUFTLEVBQUUsSUFBSTs0Q0FDZkosYUFBYSxFQUFFNkcsS0FBSyxDQUFDNUQsR0FBRzs0Q0FDeEI1QyxZQUFZLEVBQUUsQ0FBQ3dHLEtBQUssQ0FBQzlELFNBQVM7NENBQzlCOUMsVUFBVSxFQUFFLElBQUk7NENBQ2hCTSx3QkFBd0IsRUFBRWxCLE9BQU8sQ0FBQ2tCLHdCQUF3QixJQUFJbEIsT0FBTyxDQUFDdVAsUUFBUTt5Q0FDakYsQ0FBQyxDQUFDNVgsSUFBSSxDQUFDO21EQUFJLEtBQUs7eUNBQUEsQ0FBQyxHQUFHLEtBQUssQ0FBQztxQ0FDOUIsQ0FBQztvQ0FDRjZQLEtBQUssQ0FBQ3ZFLFVBQVUsQ0FBQ2pELE9BQU8sQ0FBQ3VQLFFBQVEsR0FBRyxVQUFVLEdBQUcsVUFBVSxDQUFDLENBQUNqVixLQUFLLENBQUM7aUNBQ3RFLENBQUM7Ozs7OztpQkFDTCxFQUFDLEVBQUUsQ0FBQzthQUNSOzs7WUFDRCtSLEdBQWMsRUFBZEEsZ0JBQWM7bUJBQWRBLFNBQUFBLGNBQWMsQ0FBQy9SLEtBQUssRUFBRTtnQkFDbEIsSUFBSWtOLEtBQUssR0FBRyxJQUFJO2dCQUNoQixPQUFPNVAsaUJBQWlCLGdIQUFDLG1CQUFZO3dCQUMzQitLLGVBQWUsRUFLWDZNLGVBQWU7Ozs7Z0NBTG5CN00sZUFBZSxHQUFHSCxtQkFBbUIsQ0FBQztvQ0FDeENsSSxLQUFLLEVBQUxBLEtBQUs7b0NBQ0w4QixNQUFNLEVBQUVvTCxLQUFLO2lDQUNoQixDQUFDLENBQUM7Ozt1Q0FFK0JBLEtBQUssQ0FBQ3ZFLFVBQVUsQ0FBQ3dNLFFBQVEsQ0FBQ25WLEtBQUssQ0FBQzs7Z0NBQXhEa1YsZUFBZSxZQUF5QztnQ0FDOUQ3TSxlQUFlLEVBQUUsQ0FBQzs2REFDWDZNLGVBQWU7Ozs7Z0NBRXRCN00sZUFBZSxFQUFFLENBQUM7Z0NBQ2xCLGNBQVU7Ozs7Ozs7Ozs7O2lCQUVqQixFQUFDLEVBQUUsQ0FBQzthQUNSOzs7WUFDRHVMLEdBQVEsRUFBUkEsVUFBUTttQkFBUkEsU0FBQUEsUUFBUSxDQUFDclcsRUFBRSxFQUFFOztnQkFDVCxJQUFJOEIsU0FBUyxHQUFHLEtBQUs7Z0JBQ3JCLElBQU04SSxNQUFNLEdBQUcsV0FBSTtvQkFDZjlJLFNBQVMsR0FBRyxJQUFJLENBQUM7aUJBQ3BCO2dCQUNELElBQUksQ0FBQytJLEdBQUcsR0FBR0QsTUFBTSxDQUFDO2dCQUNsQixPQUFPNUssRUFBRSxFQUFFLENBQUNGLElBQUksQ0FBQyxTQUFDbUssSUFBSSxFQUFHO29CQUNyQixJQUFJVyxNQUFNLEtBQUssTUFBS0MsR0FBRyxFQUFFO3dCQUNyQixNQUFLQSxHQUFHLEdBQUcsSUFBSSxDQUFDO3FCQUNuQjtvQkFDRCxJQUFJL0ksU0FBUyxFQUFFO3dCQUNYLElBQU16QixHQUFHLEdBQUcsSUFBSXdCLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQzt3QkFDeER4QixHQUFHLENBQUN5QixTQUFTLEdBQUcsSUFBSSxDQUFDO3dCQUNyQixNQUFNekIsR0FBRyxDQUFDO3FCQUNiO29CQUNELE9BQU80SixJQUFJLENBQUM7aUJBQ2YsQ0FBQyxDQUFDO2FBQ047OztZQUNEcU0sR0FBYyxFQUFkQSxnQkFBYzttQkFBZEEsU0FBQUEsY0FBYyxDQUFDek4sUUFBUSxFQUFFO2dCQUNyQixvRUFBb0U7Z0JBQ3BFLE9BQU9ELGFBQWEsQ0FBQztvQkFDakJDLFFBQVEsRUFBUkEsUUFBUTtvQkFDUkksY0FBYyxFQUFFLElBQUk7b0JBQ3BCQyxTQUFTLEVBQUUsS0FBSztvQkFDaEJKLGFBQWEsRUFBRSxJQUFJLENBQUNpRCxHQUFHO29CQUN2QjVDLFlBQVksRUFBRSxLQUFLO29CQUNuQkosVUFBVSxFQUFFLEtBQUs7aUJBQ3BCLENBQUMsQ0FBQ2pKLElBQUksQ0FBQzt3QkFBRzZKLElBQUksU0FBSkEsSUFBSTsyQkFBTzt3QkFDZE0sSUFBSSxFQUFFTixJQUFJO3FCQUNiO2lCQUFDLENBQUMsQ0FBQzthQUNYOzs7WUFDRHNMLEdBQWUsRUFBZkEsaUJBQWU7bUJBQWZBLFNBQUFBLGVBQWUsQ0FBQzFKLFNBQVMsRUFBRXNNLEdBQUcsRUFBRTtnQkFDNUIsSUFBNEIsR0FBd0IsR0FBeEIsSUFBSSxDQUFDcEssVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUE1Q2xDLEdBQWMsR0FBTSxHQUF3QixDQUE1Q0EsU0FBUztnQkFDakIsSUFBTXVNLE9BQU8sR0FBRyxJQUFJLENBQUN2SixRQUFRLENBQUNsRCxHQUFHLENBQUM7Z0JBQ2xDd00sR0FBRyxDQUFDQyxPQUFPLEdBQUdBLE9BQU8sQ0FBQztnQkFDdEIsT0FBTyxDQUFDLENBQUMsRUFBRTdaLE1BQU0sQ0FBQyxDQUFDOFosbUJBQW1CLENBQUMxTSxHQUFHLEVBQUU7b0JBQ3hDeU0sT0FBTyxFQUFQQSxPQUFPO29CQUNQdk0sU0FBUyxFQUFUQSxTQUFTO29CQUNUaEgsTUFBTSxFQUFFLElBQUk7b0JBQ1pzVCxHQUFHLEVBQUhBLEdBQUc7aUJBQ04sQ0FBQyxDQUFDO2FBQ047OztZQUNHcFYsR0FBSyxFQUFMQSxPQUFLO2lCQUFULGVBQVk7Z0JBQ1IsT0FBTyxJQUFJLENBQUMySixLQUFLLENBQUMzSixLQUFLLENBQUM7YUFDM0I7OztZQUNHRixHQUFRLEVBQVJBLFVBQVE7aUJBQVosZUFBZTtnQkFDWCxPQUFPLElBQUksQ0FBQzZKLEtBQUssQ0FBQzdKLFFBQVEsQ0FBQzthQUM5Qjs7O1lBQ0dJLEdBQUssRUFBTEEsT0FBSztpQkFBVCxlQUFZO2dCQUNSLE9BQU8sSUFBSSxDQUFDeUosS0FBSyxDQUFDekosS0FBSyxDQUFDO2FBQzNCOzs7WUFDRzRDLEdBQU0sRUFBTkEsUUFBTTtpQkFBVixlQUFhO2dCQUNULE9BQU8sSUFBSSxDQUFDNkcsS0FBSyxDQUFDN0csTUFBTSxDQUFDO2FBQzVCOzs7WUFDR21GLEdBQU0sRUFBTkEsUUFBTTtpQkFBVixlQUFhO2dCQUNULE9BQU8sSUFBSSxDQUFDMEIsS0FBSyxDQUFDMUIsTUFBTSxDQUFDO2FBQzVCOzs7WUFDR2UsR0FBVSxFQUFWQSxZQUFVO2lCQUFkLGVBQWlCO2dCQUNiLE9BQU8sSUFBSSxDQUFDVyxLQUFLLENBQUNYLFVBQVUsQ0FBQzthQUNoQzs7O1lBQ0dJLEdBQVMsRUFBVEEsV0FBUztpQkFBYixlQUFnQjtnQkFDWixPQUFPLElBQUksQ0FBQ08sS0FBSyxDQUFDUCxTQUFTLENBQUM7YUFDL0I7Ozs7Q0EwS0o7QUFDRGQsTUFBTSxDQUFDaUQsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFalEsS0FBSyxDQUFDLENBQUNWLE9BQU8sRUFBRSxDQUFDO0FBQ3JDLFNBQVMrUixpQkFBaUIsQ0FBQ2pILE9BQU8sRUFBRTtJQUNoQyxPQUFPdEksT0FBTyxDQUFDVCxPQUFPLENBQUMrSSxPQUFPLENBQUM1RCxNQUFNLENBQUM2RyxVQUFVLENBQUNrSSxpQkFBaUIsRUFBRSxDQUFDLENBQUN4VCxJQUFJLENBQUMsU0FBQ2tZLEtBQUssRUFBRztRQUNoRixJQUFrQyxHQUF5QyxHQUF6QyxDQUFDLENBQUMsRUFBRXRaLFVBQVUsQ0FBQyxDQUFDMlQsU0FBUyxDQUFDbEssT0FBTyxDQUFDNUMsTUFBTSxDQUFDLEVBQW5FaEQsVUFBb0IsR0FBTSxHQUF5QyxDQUFuRUEsUUFBUTtRQUNoQixJQUFNZ08sU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFeFIsWUFBWSxDQUFDLENBQUN1RCxXQUFXLENBQUNJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFN0QsZUFBZSxDQUFDLENBQUN5VCxjQUFjLENBQUM1UCxVQUFVLENBQUMsR0FBR0EsVUFBVTtRQUMxSCxPQUFPLENBQUMsQ0FBQyxDQUFDc1YsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsR0FBR0EsS0FBSyxDQUFDaFIsSUFBSSxDQUFDLGdCQUFnQjttREFBZGlSLEtBQUssY0FBRUMsR0FBRztZQUN0RCxPQUFPLENBQUNBLEdBQUcsSUFBSSxJQUFJQyxNQUFNLENBQUNGLEtBQUssQ0FBQyxDQUFDOVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFeEksVUFBVSxDQUFDLENBQUM4TCxTQUFTLENBQUM4RixTQUFTLEVBQUVwSSxPQUFPLENBQUN1QyxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQy9GLENBQUMsQ0FBQyxDQUFDO0tBQ1AsQ0FBQyxDQUFDO0NBQ047QUFDRCxTQUFTcUwscUJBQXFCLENBQUM1TixPQUFPLEVBQUU7SUFDcEMsT0FBT2lILGlCQUFpQixDQUFDakgsT0FBTyxDQUFDLENBQUNySSxJQUFJLENBQUMsU0FBQ3VQLE9BQU8sRUFBRztRQUM5QyxJQUFJQSxPQUFPLElBQUlsSCxPQUFPLENBQUM2TixTQUFTLEVBQUU7WUFDOUIsT0FBTzdOLE9BQU8sQ0FBQzZOLFNBQVMsRUFBRSxDQUFDbFcsSUFBSSxDQUFDLFNBQUNtSyxJQUFJO3VCQUFHbU8saUJBQWlCLENBQUNuTyxJQUFJLENBQUNwQixRQUFRLEVBQUVvQixJQUFJLENBQUN6QixRQUFRLEVBQUVMLE9BQU8sQ0FBQyxDQUFDckksSUFBSSxDQUFDLFNBQUNtVyxNQUFNOzJCQUFJO3dCQUNyR3BOLFFBQVEsRUFBRW9CLElBQUksQ0FBQ3BCLFFBQVE7d0JBQ3ZCZSxJQUFJLEVBQUVLLElBQUksQ0FBQ0wsSUFBSTt3QkFDZnBCLFFBQVEsRUFBRXlCLElBQUksQ0FBQ3pCLFFBQVE7d0JBQ3ZCbUIsSUFBSSxFQUFFTSxJQUFJLENBQUNOLElBQUk7d0JBQ2ZzTSxNQUFNLEVBQU5BLE1BQU07cUJBQ1Q7aUJBQUMsQ0FBQzthQUFBLENBQUMsQ0FBQy9MLEtBQUssQ0FBQyxTQUFDbU8sSUFBSSxFQUFHO2dCQUN2Qjs7OzthQUlILENBQUMsT0FBTyxJQUFJLENBQUM7YUFDYixDQUFDLENBQUM7U0FDTjtRQUNELE9BQU8sSUFBSSxDQUFDO0tBQ2YsQ0FBQyxDQUFDO0NBQ047QUFDRCxTQUFTRCxpQkFBaUIsQ0FBQ3hYLE1BQU0sRUFBRTRILFFBQVEsRUFBRUwsT0FBTyxFQUFFO0lBQ2xELElBQU1tUSxVQUFVLEdBQUc7UUFDZmxLLFFBQVEsRUFBRWpHLE9BQU8sQ0FBQzVELE1BQU0sQ0FBQzZKLFFBQVE7UUFDakNtSyxJQUFJLEVBQUU7WUFDRjdNLE9BQU8sRUFBRXZELE9BQU8sQ0FBQzVELE1BQU0sQ0FBQ21ILE9BQU87U0FDbEM7UUFDRDhNLGFBQWEsRUFBRUMsT0FBTyxDQUFDcFIsS0FBaUMsQ0FBQztLQUM1RDtJQUNELElBQU1zUixhQUFhLEdBQUduUSxRQUFRLENBQUNELE9BQU8sQ0FBQ2pILEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztJQUM5RCxJQUFJc1gsYUFBYSxHQUFHRCxhQUFhLElBQUluUSxRQUFRLENBQUNELE9BQU8sQ0FBQ2pILEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQztJQUNsRixJQUFNdVgsV0FBVyxHQUFHclEsUUFBUSxDQUFDRCxPQUFPLENBQUNqSCxHQUFHLENBQUMsZ0JBQWdCLENBQUM7SUFDMUQsSUFBSSxDQUFDc1gsYUFBYSxJQUFJLENBQUMsQ0FBQ0MsV0FBVyxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsR0FBR0EsV0FBVyxDQUFDdlUsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUMsRUFBRTtRQUNsR3NVLGFBQWEsR0FBR0MsV0FBVyxDQUFDO0tBQy9CO0lBQ0QsSUFBSUQsYUFBYSxFQUFFO1FBQ2YsSUFBSUEsYUFBYSxDQUFDdFQsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQy9CLElBQU13VCxtQkFBbUIsR0FBRyxDQUFDLENBQUMsRUFBRTNhLGlCQUFpQixDQUFDLENBQUMrTyxnQkFBZ0IsQ0FBQzBMLGFBQWEsQ0FBQztZQUNsRixJQUFNRyxZQUFZLEdBQUcsQ0FBQyxDQUFDLEVBQUUvWixvQkFBb0IsQ0FBQyxDQUFDZ2EsbUJBQW1CLENBQUNGLG1CQUFtQixDQUFDdlcsUUFBUSxFQUFFO2dCQUM3RitWLFVBQVUsRUFBVkEsVUFBVTtnQkFDVlcsU0FBUyxFQUFFLElBQUk7YUFDbEIsQ0FBQztZQUNGLElBQU1DLFVBQVUsR0FBRyxDQUFDLENBQUMsRUFBRTFiLG9CQUFvQixDQUFDLENBQUNzSixtQkFBbUIsQ0FBQ2lTLFlBQVksQ0FBQ3hXLFFBQVEsQ0FBQztZQUN2RixPQUFPMUMsT0FBTyxDQUFDc1QsR0FBRyxDQUFDO2dCQUNmaEwsT0FBTyxDQUFDNUQsTUFBTSxDQUFDNkcsVUFBVSxDQUFDZ0ksV0FBVyxFQUFFO2dCQUN2QyxDQUFDLENBQUMsRUFBRTNWLFlBQVksQ0FBQyxDQUFDNFYsc0JBQXNCLEVBQUU7YUFDN0MsQ0FBQyxDQUFDdlQsSUFBSSxDQUFDLGdCQUFzQzt1REFBcEM4RyxLQUFLLCtCQUFJMk0sUUFBb0IsT0FBcEJBLFVBQVU7Z0JBQ3pCLElBQUluTixFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUV6SCxVQUFVLENBQUMsQ0FBQzhMLFNBQVMsQ0FBQ3NPLFlBQVksQ0FBQ3hXLFFBQVEsRUFBRXdXLFlBQVksQ0FBQ3JPLE1BQU0sQ0FBQztnQkFDOUUsSUFBSSxDQUFDLENBQUMsRUFBRXhNLFVBQVUsQ0FBQyxDQUFDeUgsY0FBYyxDQUFDUyxFQUFFLENBQUMsSUFBSSxDQUFDdVMsYUFBYSxJQUFJL1IsS0FBSyxDQUFDdEMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFeEcsb0JBQW9CLENBQUMsQ0FBQ3lVLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxFQUFFMVQsZUFBZSxDQUFDLENBQUN5VCxjQUFjLENBQUNsTSxFQUFFLENBQUMsRUFBRStCLE9BQU8sQ0FBQzVELE1BQU0sQ0FBQ21ILE9BQU8sQ0FBQyxDQUFDbkosUUFBUSxDQUFDLEVBQUU7b0JBQ2pNLElBQU00VyxZQUFZLEdBQUcsQ0FBQyxDQUFDLEVBQUVuYSxvQkFBb0IsQ0FBQyxDQUFDZ2EsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUU3YSxpQkFBaUIsQ0FBQyxDQUFDK08sZ0JBQWdCLENBQUN0TSxNQUFNLENBQUMsQ0FBQzJCLFFBQVEsRUFBRTt3QkFDekgwVyxTQUFTLEVBQUUsSUFBSTtxQkFDbEIsQ0FBQztvQkFDRjdTLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRXRILFlBQVksQ0FBQyxDQUFDMkgsV0FBVyxDQUFDMFMsWUFBWSxDQUFDNVcsUUFBUSxDQUFDLENBQUM7b0JBQzFEdVcsbUJBQW1CLENBQUN2VyxRQUFRLEdBQUc2RCxFQUFFLENBQUM7aUJBQ3JDO2dCQUNELElBQUlpQixLQUErQixFQUFFLGVBT3BDO2dCQUNELElBQU10QixZQUFZLEdBQUcsQ0FBQ2EsS0FBSyxDQUFDdEMsUUFBUSxDQUFDNFUsVUFBVSxDQUFDLEdBQUd2UyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRTdJLG9CQUFvQixDQUFDLENBQUN5VSxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRTFULGVBQWUsQ0FBQyxDQUFDeVQsY0FBYyxDQUFDd0csbUJBQW1CLENBQUN2VyxRQUFRLENBQUMsRUFBRTRGLE9BQU8sQ0FBQzVELE1BQU0sQ0FBQ21ILE9BQU8sQ0FBQyxDQUFDbkosUUFBUSxFQUFFcUUsS0FBSyxDQUFDLEdBQUdzUyxVQUFVO2dCQUM3TyxJQUFJLENBQUMsQ0FBQyxFQUFFaGIsVUFBVSxDQUFDLENBQUN5SCxjQUFjLENBQUNJLFlBQVksQ0FBQyxFQUFFO29CQUM5QyxJQUFNc0osT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFL1EsYUFBYSxDQUFDLENBQUM0RSxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUzRSxXQUFXLENBQUMsQ0FBQ3VFLGFBQWEsQ0FBQ2lELFlBQVksQ0FBQyxDQUFDLENBQUNLLEVBQUUsQ0FBQztvQkFDcEd2SixNQUFNLENBQUMyRCxNQUFNLENBQUNzWSxtQkFBbUIsQ0FBQ25XLEtBQUssRUFBRTBNLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQztpQkFDM0Q7Z0JBQ0QsT0FBTztvQkFDSDBFLElBQUksRUFBRSxTQUFTO29CQUNmL0QsUUFBUSxFQUFFOEksbUJBQW1CO29CQUM3Qi9TLFlBQVksRUFBWkEsWUFBWTtpQkFDZixDQUFDO2FBQ0wsQ0FBQyxDQUFDO1NBQ047UUFDRCxJQUFNc1QsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFM2EsVUFBVSxDQUFDLENBQUMyVCxTQUFTLENBQUN6UixNQUFNLENBQUM7UUFDN0MsSUFBTTJCLFFBQVEsR0FBRyxDQUFDLENBQUMsRUFBRXRELHVCQUF1QixDQUFDLENBQUNxYSxzQkFBc0IsQ0FBQy9ZLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUV2QixvQkFBb0IsQ0FBQyxDQUFDZ2EsbUJBQW1CLENBQUNLLEdBQUcsQ0FBQzlXLFFBQVEsRUFBRTtZQUMxSStWLFVBQVUsRUFBVkEsVUFBVTtZQUNWVyxTQUFTLEVBQUUsSUFBSTtTQUNsQixDQUFDLEVBQUU7WUFDQXROLGFBQWEsRUFBRXhELE9BQU8sQ0FBQzVELE1BQU0sQ0FBQ29ILGFBQWE7WUFDM0M0TixPQUFPLEVBQUUsRUFBRTtTQUNkLENBQUMsQ0FBQztRQUNILE9BQU8xWixPQUFPLENBQUNULE9BQU8sQ0FBQztZQUNuQjJVLElBQUksRUFBRSxtQkFBbUI7WUFDekJyQyxXQUFXLEVBQUUsRUFBQyxDQUFhMkgsTUFBUyxDQUFwQjlXLFFBQVEsQ0FBYSxDQUFFOFcsTUFBUSxDQUFwQkEsR0FBRyxDQUFDMVcsS0FBSyxDQUFZLFFBQVQwVyxHQUFHLENBQUN2VCxJQUFJLENBQUU7U0FDcEQsQ0FBQyxDQUFDO0tBQ047SUFDRCxJQUFNMFQsY0FBYyxHQUFHaFIsUUFBUSxDQUFDRCxPQUFPLENBQUNqSCxHQUFHLENBQUMsbUJBQW1CLENBQUM7SUFDaEUsSUFBSWtZLGNBQWMsRUFBRTtRQUNoQixJQUFJQSxjQUFjLENBQUNsVSxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDaEMsSUFBTStULElBQUcsR0FBRyxDQUFDLENBQUMsRUFBRTNhLFVBQVUsQ0FBQyxDQUFDMlQsU0FBUyxDQUFDbUgsY0FBYyxDQUFDO1lBQ3JELElBQU1qWCxTQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUV0RCx1QkFBdUIsQ0FBQyxDQUFDcWEsc0JBQXNCLENBQUMvWSxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFdkIsb0JBQW9CLENBQUMsQ0FBQ2dhLG1CQUFtQixDQUFDSyxJQUFHLENBQUM5VyxRQUFRLEVBQUU7Z0JBQzFJK1YsVUFBVSxFQUFWQSxVQUFVO2dCQUNWVyxTQUFTLEVBQUUsSUFBSTthQUNsQixDQUFDLEVBQUU7Z0JBQ0F0TixhQUFhLEVBQUV4RCxPQUFPLENBQUM1RCxNQUFNLENBQUNvSCxhQUFhO2dCQUMzQzROLE9BQU8sRUFBRSxFQUFFO2FBQ2QsQ0FBQyxDQUFDO1lBQ0gsT0FBTzFaLE9BQU8sQ0FBQ1QsT0FBTyxDQUFDO2dCQUNuQjJVLElBQUksRUFBRSxtQkFBbUI7Z0JBQ3pCbEMsS0FBSyxFQUFFLEVBQUMsQ0FBYXdILE1BQVMsQ0FBcEI5VyxTQUFRLENBQWEsQ0FBRThXLE1BQVEsQ0FBcEJBLElBQUcsQ0FBQzFXLEtBQUssQ0FBWSxRQUFUMFcsSUFBRyxDQUFDdlQsSUFBSSxDQUFFO2dCQUMzQzhMLE1BQU0sRUFBRSxFQUFDLENBQWF5SCxNQUFTLENBQXBCOVcsU0FBUSxDQUFhLENBQUU4VyxNQUFRLENBQXBCQSxJQUFHLENBQUMxVyxLQUFLLENBQVksUUFBVDBXLElBQUcsQ0FBQ3ZULElBQUksQ0FBRTthQUMvQyxDQUFDLENBQUM7U0FDTjtRQUNELE9BQU9qRyxPQUFPLENBQUNULE9BQU8sQ0FBQztZQUNuQjJVLElBQUksRUFBRSxtQkFBbUI7WUFDekJyQyxXQUFXLEVBQUU4SCxjQUFjO1NBQzlCLENBQUMsQ0FBQztLQUNOO0lBQ0QsT0FBTzNaLE9BQU8sQ0FBQ1QsT0FBTyxDQUFDO1FBQ25CMlUsSUFBSSxFQUFFLE1BQU07S0FDZixDQUFDLENBQUM7Q0FDTjtBQUNEaFgsa0JBQWUsR0FBR2dPLE1BQU0sQ0FBQyxDQUV6QixrQ0FBa0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi9yb3V0ZXIvcm91dGVyLmpzPzEyODMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmlzTG9jYWxVUkwgPSBpc0xvY2FsVVJMO1xuZXhwb3J0cy5pbnRlcnBvbGF0ZUFzID0gaW50ZXJwb2xhdGVBcztcbmV4cG9ydHMucmVzb2x2ZUhyZWYgPSByZXNvbHZlSHJlZjtcbmV4cG9ydHMuY3JlYXRlS2V5ID0gY3JlYXRlS2V5O1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xudmFyIF9ub3JtYWxpemVUcmFpbGluZ1NsYXNoID0gcmVxdWlyZShcIi4uLy4uLy4uL2NsaWVudC9ub3JtYWxpemUtdHJhaWxpbmctc2xhc2hcIik7XG52YXIgX3JlbW92ZVRyYWlsaW5nU2xhc2ggPSByZXF1aXJlKFwiLi91dGlscy9yZW1vdmUtdHJhaWxpbmctc2xhc2hcIik7XG52YXIgX3JvdXRlTG9hZGVyID0gcmVxdWlyZShcIi4uLy4uLy4uL2NsaWVudC9yb3V0ZS1sb2FkZXJcIik7XG52YXIgX3NjcmlwdCA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jbGllbnQvc2NyaXB0XCIpO1xudmFyIF9pc0Vycm9yID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcIi4uLy4uLy4uL2xpYi9pcy1lcnJvclwiKSk7XG52YXIgX2Rlbm9ybWFsaXplUGFnZVBhdGggPSByZXF1aXJlKFwiLi4vcGFnZS1wYXRoL2Rlbm9ybWFsaXplLXBhZ2UtcGF0aFwiKTtcbnZhciBfbm9ybWFsaXplTG9jYWxlUGF0aCA9IHJlcXVpcmUoXCIuLi9pMThuL25vcm1hbGl6ZS1sb2NhbGUtcGF0aFwiKTtcbnZhciBfbWl0dCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL21pdHRcIikpO1xudmFyIF91dGlscyA9IHJlcXVpcmUoXCIuLi91dGlsc1wiKTtcbnZhciBfaXNEeW5hbWljID0gcmVxdWlyZShcIi4vdXRpbHMvaXMtZHluYW1pY1wiKTtcbnZhciBfcGFyc2VSZWxhdGl2ZVVybCA9IHJlcXVpcmUoXCIuL3V0aWxzL3BhcnNlLXJlbGF0aXZlLXVybFwiKTtcbnZhciBfcXVlcnlzdHJpbmcgPSByZXF1aXJlKFwiLi91dGlscy9xdWVyeXN0cmluZ1wiKTtcbnZhciBfcmVzb2x2ZVJld3JpdGVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlscy9yZXNvbHZlLXJld3JpdGVzXCIpKTtcbnZhciBfcm91dGVNYXRjaGVyID0gcmVxdWlyZShcIi4vdXRpbHMvcm91dGUtbWF0Y2hlclwiKTtcbnZhciBfcm91dGVSZWdleCA9IHJlcXVpcmUoXCIuL3V0aWxzL3JvdXRlLXJlZ2V4XCIpO1xudmFyIF9mb3JtYXRVcmwgPSByZXF1aXJlKFwiLi91dGlscy9mb3JtYXQtdXJsXCIpO1xudmFyIF9kZXRlY3REb21haW5Mb2NhbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vY2xpZW50L2RldGVjdC1kb21haW4tbG9jYWxlXCIpO1xudmFyIF9wYXJzZVBhdGggPSByZXF1aXJlKFwiLi91dGlscy9wYXJzZS1wYXRoXCIpO1xudmFyIF9hZGRMb2NhbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vY2xpZW50L2FkZC1sb2NhbGVcIik7XG52YXIgX3JlbW92ZUxvY2FsZSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jbGllbnQvcmVtb3ZlLWxvY2FsZVwiKTtcbnZhciBfcmVtb3ZlQmFzZVBhdGggPSByZXF1aXJlKFwiLi4vLi4vLi4vY2xpZW50L3JlbW92ZS1iYXNlLXBhdGhcIik7XG52YXIgX2FkZEJhc2VQYXRoID0gcmVxdWlyZShcIi4uLy4uLy4uL2NsaWVudC9hZGQtYmFzZS1wYXRoXCIpO1xudmFyIF9oYXNCYXNlUGF0aCA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jbGllbnQvaGFzLWJhc2UtcGF0aFwiKTtcbnZhciBfZ2V0TmV4dFBhdGhuYW1lSW5mbyA9IHJlcXVpcmUoXCIuL3V0aWxzL2dldC1uZXh0LXBhdGhuYW1lLWluZm9cIik7XG52YXIgX2Zvcm1hdE5leHRQYXRobmFtZUluZm8gPSByZXF1aXJlKFwiLi91dGlscy9mb3JtYXQtbmV4dC1wYXRobmFtZS1pbmZvXCIpO1xuZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTtcbiAgICAgICAgdmFyIHZhbHVlID0gaW5mby52YWx1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKF9uZXh0LCBfdGhyb3cpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXMsIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHZhciBnZW4gPSBmbi5hcHBseShzZWxmLCBhcmdzKTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9uZXh0KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gX3Rocm93KGVycikge1xuICAgICAgICAgICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX25leHQodW5kZWZpbmVkKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICAgIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0YXJnZXQpIHtcbiAgICAgICAgZm9yKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yKHZhciBrZXkgaW4gc291cmNlKXtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH07XG4gICAgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikge1xuICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgICAgIGRlZmF1bHQ6IG9ialxuICAgIH07XG59XG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7XG4gICAgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsO1xuICAgIHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7XG4gICAgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjYWNoZTtcbiAgICB9O1xuICAgIHJldHVybiBjYWNoZTtcbn1cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikge1xuICAgIGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgICAgIH07XG4gICAgfVxuICAgIHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpO1xuICAgIGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkge1xuICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KG9iaik7XG4gICAgfVxuICAgIHZhciBuZXdPYmogPSB7fTtcbiAgICB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICAgZm9yKHZhciBrZXkgaW4gb2JqKXtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgIHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsO1xuICAgICAgICAgICAgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld09ialtrZXldID0gb2JqW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgbmV3T2JqLmRlZmF1bHQgPSBvYmo7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIGNhY2hlLnNldChvYmosIG5ld09iaik7XG4gICAgfVxuICAgIHJldHVybiBuZXdPYmo7XG59XG5mdW5jdGlvbiBidWlsZENhbmNlbGxhdGlvbkVycm9yKCkge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBFcnJvcignUm91dGUgQ2FuY2VsbGVkJyksIHtcbiAgICAgICAgY2FuY2VsbGVkOiB0cnVlXG4gICAgfSk7XG59XG5mdW5jdGlvbiBpc0xvY2FsVVJMKHVybCkge1xuICAgIC8vIHByZXZlbnQgYSBoeWRyYXRpb24gbWlzbWF0Y2ggb24gaHJlZiBmb3IgdXJsIHdpdGggYW5jaG9yIHJlZnNcbiAgICBpZiAoISgwLCBfdXRpbHMpLmlzQWJzb2x1dGVVcmwodXJsKSkgcmV0dXJuIHRydWU7XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gYWJzb2x1dGUgdXJscyBjYW4gYmUgbG9jYWwgaWYgdGhleSBhcmUgb24gdGhlIHNhbWUgb3JpZ2luXG4gICAgICAgIGNvbnN0IGxvY2F0aW9uT3JpZ2luID0gKDAsIF91dGlscykuZ2V0TG9jYXRpb25PcmlnaW4oKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSBuZXcgVVJMKHVybCwgbG9jYXRpb25PcmlnaW4pO1xuICAgICAgICByZXR1cm4gcmVzb2x2ZWQub3JpZ2luID09PSBsb2NhdGlvbk9yaWdpbiAmJiAoMCwgX2hhc0Jhc2VQYXRoKS5oYXNCYXNlUGF0aChyZXNvbHZlZC5wYXRobmFtZSk7XG4gICAgfSBjYXRjaCAoXykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuZnVuY3Rpb24gaW50ZXJwb2xhdGVBcyhyb3V0ZSwgYXNQYXRobmFtZSwgcXVlcnkpIHtcbiAgICBsZXQgaW50ZXJwb2xhdGVkUm91dGUgPSAnJztcbiAgICBjb25zdCBkeW5hbWljUmVnZXggPSAoMCwgX3JvdXRlUmVnZXgpLmdldFJvdXRlUmVnZXgocm91dGUpO1xuICAgIGNvbnN0IGR5bmFtaWNHcm91cHMgPSBkeW5hbWljUmVnZXguZ3JvdXBzO1xuICAgIGNvbnN0IGR5bmFtaWNNYXRjaGVzID0gLy8gVHJ5IHRvIG1hdGNoIHRoZSBkeW5hbWljIHJvdXRlIGFnYWluc3QgdGhlIGFzUGF0aFxuICAgIChhc1BhdGhuYW1lICE9PSByb3V0ZSA/ICgwLCBfcm91dGVNYXRjaGVyKS5nZXRSb3V0ZU1hdGNoZXIoZHluYW1pY1JlZ2V4KShhc1BhdGhuYW1lKSA6ICcnKSB8fCAvLyBGYWxsIGJhY2sgdG8gcmVhZGluZyB0aGUgdmFsdWVzIGZyb20gdGhlIGhyZWZcbiAgICAvLyBUT0RPOiBzaG91bGQgdGhpcyB0YWtlIHByaW9yaXR5OyBhbHNvIG5lZWQgdG8gY2hhbmdlIGluIHRoZSByb3V0ZXIuXG4gICAgcXVlcnk7XG4gICAgaW50ZXJwb2xhdGVkUm91dGUgPSByb3V0ZTtcbiAgICBjb25zdCBwYXJhbXMgPSBPYmplY3Qua2V5cyhkeW5hbWljR3JvdXBzKTtcbiAgICBpZiAoIXBhcmFtcy5ldmVyeSgocGFyYW0pPT57XG4gICAgICAgIGxldCB2YWx1ZSA9IGR5bmFtaWNNYXRjaGVzW3BhcmFtXSB8fCAnJztcbiAgICAgICAgY29uc3QgeyByZXBlYXQgLCBvcHRpb25hbCAgfSA9IGR5bmFtaWNHcm91cHNbcGFyYW1dO1xuICAgICAgICAvLyBzdXBwb3J0IHNpbmdsZS1sZXZlbCBjYXRjaC1hbGxcbiAgICAgICAgLy8gVE9ETzogbW9yZSByb2J1c3QgaGFuZGxpbmcgZm9yIHVzZXItZXJyb3IgKHBhc3NpbmcgYC9gKVxuICAgICAgICBsZXQgcmVwbGFjZWQgPSBgWyR7cmVwZWF0ID8gJy4uLicgOiAnJ30ke3BhcmFtfV1gO1xuICAgICAgICBpZiAob3B0aW9uYWwpIHtcbiAgICAgICAgICAgIHJlcGxhY2VkID0gYCR7IXZhbHVlID8gJy8nIDogJyd9WyR7cmVwbGFjZWR9XWA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcGVhdCAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHZhbHVlID0gW1xuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgXTtcbiAgICAgICAgcmV0dXJuIChvcHRpb25hbCB8fCBwYXJhbSBpbiBkeW5hbWljTWF0Y2hlcykgJiYgLy8gSW50ZXJwb2xhdGUgZ3JvdXAgaW50byBkYXRhIFVSTCBpZiBwcmVzZW50XG4gICAgICAgIChpbnRlcnBvbGF0ZWRSb3V0ZSA9IGludGVycG9sYXRlZFJvdXRlLnJlcGxhY2UocmVwbGFjZWQsIHJlcGVhdCA/IHZhbHVlLm1hcCgvLyB0aGVzZSB2YWx1ZXMgc2hvdWxkIGJlIGZ1bGx5IGVuY29kZWQgaW5zdGVhZCBvZiBqdXN0XG4gICAgICAgIC8vIHBhdGggZGVsaW1pdGVyIGVzY2FwZWQgc2luY2UgdGhleSBhcmUgYmVpbmcgaW5zZXJ0ZWRcbiAgICAgICAgLy8gaW50byB0aGUgVVJMIGFuZCB3ZSBleHBlY3QgVVJMIGVuY29kZWQgc2VnbWVudHNcbiAgICAgICAgLy8gd2hlbiBwYXJzaW5nIGR5bmFtaWMgcm91dGUgcGFyYW1zXG4gICAgICAgIChzZWdtZW50KT0+ZW5jb2RlVVJJQ29tcG9uZW50KHNlZ21lbnQpKS5qb2luKCcvJykgOiBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpKSB8fCAnLycpO1xuICAgIH0pKSB7XG4gICAgICAgIGludGVycG9sYXRlZFJvdXRlID0gJycgLy8gZGlkIG5vdCBzYXRpc2Z5IGFsbCByZXF1aXJlbWVudHNcbiAgICAgICAgO1xuICAgIC8vIG4uYi4gV2UgaWdub3JlIHRoaXMgZXJyb3IgYmVjYXVzZSB3ZSBoYW5kbGUgd2FybmluZyBmb3IgdGhpcyBjYXNlIGluXG4gICAgLy8gZGV2ZWxvcG1lbnQgaW4gdGhlIGA8TGluaz5gIGNvbXBvbmVudCBkaXJlY3RseS5cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICByZXN1bHQ6IGludGVycG9sYXRlZFJvdXRlXG4gICAgfTtcbn1cbmZ1bmN0aW9uIG9taXQob2JqZWN0LCBrZXlzKSB7XG4gICAgY29uc3Qgb21pdHRlZCA9IHt9O1xuICAgIE9iamVjdC5rZXlzKG9iamVjdCkuZm9yRWFjaCgoa2V5KT0+e1xuICAgICAgICBpZiAoIWtleXMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgb21pdHRlZFtrZXldID0gb2JqZWN0W2tleV07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gb21pdHRlZDtcbn1cbmZ1bmN0aW9uIHJlc29sdmVIcmVmKHJvdXRlciwgaHJlZiwgcmVzb2x2ZUFzKSB7XG4gICAgLy8gd2UgdXNlIGEgZHVtbXkgYmFzZSB1cmwgZm9yIHJlbGF0aXZlIHVybHNcbiAgICBsZXQgYmFzZTtcbiAgICBsZXQgdXJsQXNTdHJpbmcgPSB0eXBlb2YgaHJlZiA9PT0gJ3N0cmluZycgPyBocmVmIDogKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKGhyZWYpO1xuICAgIC8vIHJlcGVhdGVkIHNsYXNoZXMgYW5kIGJhY2tzbGFzaGVzIGluIHRoZSBVUkwgYXJlIGNvbnNpZGVyZWRcbiAgICAvLyBpbnZhbGlkIGFuZCB3aWxsIG5ldmVyIG1hdGNoIGEgTmV4dC5qcyBwYWdlL2ZpbGVcbiAgICBjb25zdCB1cmxQcm90b01hdGNoID0gdXJsQXNTdHJpbmcubWF0Y2goL15bYS16QS1aXXsxLH06XFwvXFwvLyk7XG4gICAgY29uc3QgdXJsQXNTdHJpbmdOb1Byb3RvID0gdXJsUHJvdG9NYXRjaCA/IHVybEFzU3RyaW5nLnNsaWNlKHVybFByb3RvTWF0Y2hbMF0ubGVuZ3RoKSA6IHVybEFzU3RyaW5nO1xuICAgIGNvbnN0IHVybFBhcnRzID0gdXJsQXNTdHJpbmdOb1Byb3RvLnNwbGl0KCc/Jyk7XG4gICAgaWYgKCh1cmxQYXJ0c1swXSB8fCAnJykubWF0Y2goLyhcXC9cXC98XFxcXCkvKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBJbnZhbGlkIGhyZWYgcGFzc2VkIHRvIG5leHQvcm91dGVyOiAke3VybEFzU3RyaW5nfSwgcmVwZWF0ZWQgZm9yd2FyZC1zbGFzaGVzICgvLykgb3IgYmFja3NsYXNoZXMgXFxcXCBhcmUgbm90IHZhbGlkIGluIHRoZSBocmVmYCk7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRVcmwgPSAoMCwgX3V0aWxzKS5ub3JtYWxpemVSZXBlYXRlZFNsYXNoZXModXJsQXNTdHJpbmdOb1Byb3RvKTtcbiAgICAgICAgdXJsQXNTdHJpbmcgPSAodXJsUHJvdG9NYXRjaCA/IHVybFByb3RvTWF0Y2hbMF0gOiAnJykgKyBub3JtYWxpemVkVXJsO1xuICAgIH1cbiAgICAvLyBSZXR1cm4gYmVjYXVzZSBpdCBjYW5ub3QgYmUgcm91dGVkIGJ5IHRoZSBOZXh0LmpzIHJvdXRlclxuICAgIGlmICghaXNMb2NhbFVSTCh1cmxBc1N0cmluZykpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVBcyA/IFtcbiAgICAgICAgICAgIHVybEFzU3RyaW5nXG4gICAgICAgIF0gOiB1cmxBc1N0cmluZztcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgYmFzZSA9IG5ldyBVUkwodXJsQXNTdHJpbmcuc3RhcnRzV2l0aCgnIycpID8gcm91dGVyLmFzUGF0aCA6IHJvdXRlci5wYXRobmFtZSwgJ2h0dHA6Ly9uJyk7XG4gICAgfSBjYXRjaCAoXykge1xuICAgICAgICAvLyBmYWxsYmFjayB0byAvIGZvciBpbnZhbGlkIGFzUGF0aCB2YWx1ZXMgZS5nLiAvL1xuICAgICAgICBiYXNlID0gbmV3IFVSTCgnLycsICdodHRwOi8vbicpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBjb25zdCBmaW5hbFVybCA9IG5ldyBVUkwodXJsQXNTdHJpbmcsIGJhc2UpO1xuICAgICAgICBmaW5hbFVybC5wYXRobmFtZSA9ICgwLCBfbm9ybWFsaXplVHJhaWxpbmdTbGFzaCkubm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2goZmluYWxVcmwucGF0aG5hbWUpO1xuICAgICAgICBsZXQgaW50ZXJwb2xhdGVkQXMgPSAnJztcbiAgICAgICAgaWYgKCgwLCBfaXNEeW5hbWljKS5pc0R5bmFtaWNSb3V0ZShmaW5hbFVybC5wYXRobmFtZSkgJiYgZmluYWxVcmwuc2VhcmNoUGFyYW1zICYmIHJlc29sdmVBcykge1xuICAgICAgICAgICAgY29uc3QgcXVlcnkgPSAoMCwgX3F1ZXJ5c3RyaW5nKS5zZWFyY2hQYXJhbXNUb1VybFF1ZXJ5KGZpbmFsVXJsLnNlYXJjaFBhcmFtcyk7XG4gICAgICAgICAgICBjb25zdCB7IHJlc3VsdCAsIHBhcmFtcyAgfSA9IGludGVycG9sYXRlQXMoZmluYWxVcmwucGF0aG5hbWUsIGZpbmFsVXJsLnBhdGhuYW1lLCBxdWVyeSk7XG4gICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgaW50ZXJwb2xhdGVkQXMgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICBwYXRobmFtZTogcmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICBoYXNoOiBmaW5hbFVybC5oYXNoLFxuICAgICAgICAgICAgICAgICAgICBxdWVyeTogb21pdChxdWVyeSwgcGFyYW1zKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGlmIHRoZSBvcmlnaW4gZGlkbid0IGNoYW5nZSwgaXQgbWVhbnMgd2UgcmVjZWl2ZWQgYSByZWxhdGl2ZSBocmVmXG4gICAgICAgIGNvbnN0IHJlc29sdmVkSHJlZiA9IGZpbmFsVXJsLm9yaWdpbiA9PT0gYmFzZS5vcmlnaW4gPyBmaW5hbFVybC5ocmVmLnNsaWNlKGZpbmFsVXJsLm9yaWdpbi5sZW5ndGgpIDogZmluYWxVcmwuaHJlZjtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVBcyA/IFtcbiAgICAgICAgICAgIHJlc29sdmVkSHJlZixcbiAgICAgICAgICAgIGludGVycG9sYXRlZEFzIHx8IHJlc29sdmVkSHJlZlxuICAgICAgICBdIDogcmVzb2x2ZWRIcmVmO1xuICAgIH0gY2F0Y2ggKF8xKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlQXMgPyBbXG4gICAgICAgICAgICB1cmxBc1N0cmluZ1xuICAgICAgICBdIDogdXJsQXNTdHJpbmc7XG4gICAgfVxufVxuZnVuY3Rpb24gc3RyaXBPcmlnaW4odXJsKSB7XG4gICAgY29uc3Qgb3JpZ2luID0gKDAsIF91dGlscykuZ2V0TG9jYXRpb25PcmlnaW4oKTtcbiAgICByZXR1cm4gdXJsLnN0YXJ0c1dpdGgob3JpZ2luKSA/IHVybC5zdWJzdHJpbmcob3JpZ2luLmxlbmd0aCkgOiB1cmw7XG59XG5mdW5jdGlvbiBwcmVwYXJlVXJsQXMocm91dGVyLCB1cmwsIGFzKSB7XG4gICAgLy8gSWYgdXJsIGFuZCBhcyBwcm92aWRlZCBhcyBhbiBvYmplY3QgcmVwcmVzZW50YXRpb24sXG4gICAgLy8gd2UnbGwgZm9ybWF0IHRoZW0gaW50byB0aGUgc3RyaW5nIHZlcnNpb24gaGVyZS5cbiAgICBsZXQgW3Jlc29sdmVkSHJlZiwgcmVzb2x2ZWRBc10gPSByZXNvbHZlSHJlZihyb3V0ZXIsIHVybCwgdHJ1ZSk7XG4gICAgY29uc3Qgb3JpZ2luID0gKDAsIF91dGlscykuZ2V0TG9jYXRpb25PcmlnaW4oKTtcbiAgICBjb25zdCBocmVmSGFkT3JpZ2luID0gcmVzb2x2ZWRIcmVmLnN0YXJ0c1dpdGgob3JpZ2luKTtcbiAgICBjb25zdCBhc0hhZE9yaWdpbiA9IHJlc29sdmVkQXMgJiYgcmVzb2x2ZWRBcy5zdGFydHNXaXRoKG9yaWdpbik7XG4gICAgcmVzb2x2ZWRIcmVmID0gc3RyaXBPcmlnaW4ocmVzb2x2ZWRIcmVmKTtcbiAgICByZXNvbHZlZEFzID0gcmVzb2x2ZWRBcyA/IHN0cmlwT3JpZ2luKHJlc29sdmVkQXMpIDogcmVzb2x2ZWRBcztcbiAgICBjb25zdCBwcmVwYXJlZFVybCA9IGhyZWZIYWRPcmlnaW4gPyByZXNvbHZlZEhyZWYgOiAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aChyZXNvbHZlZEhyZWYpO1xuICAgIGNvbnN0IHByZXBhcmVkQXMgPSBhcyA/IHN0cmlwT3JpZ2luKHJlc29sdmVIcmVmKHJvdXRlciwgYXMpKSA6IHJlc29sdmVkQXMgfHwgcmVzb2x2ZWRIcmVmO1xuICAgIHJldHVybiB7XG4gICAgICAgIHVybDogcHJlcGFyZWRVcmwsXG4gICAgICAgIGFzOiBhc0hhZE9yaWdpbiA/IHByZXBhcmVkQXMgOiAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aChwcmVwYXJlZEFzKVxuICAgIH07XG59XG5mdW5jdGlvbiByZXNvbHZlRHluYW1pY1JvdXRlKHBhdGhuYW1lLCBwYWdlcykge1xuICAgIGNvbnN0IGNsZWFuUGF0aG5hbWUgPSAoMCwgX3JlbW92ZVRyYWlsaW5nU2xhc2gpLnJlbW92ZVRyYWlsaW5nU2xhc2goKDAsIF9kZW5vcm1hbGl6ZVBhZ2VQYXRoKS5kZW5vcm1hbGl6ZVBhZ2VQYXRoKHBhdGhuYW1lKSk7XG4gICAgaWYgKGNsZWFuUGF0aG5hbWUgPT09ICcvNDA0JyB8fCBjbGVhblBhdGhuYW1lID09PSAnL19lcnJvcicpIHtcbiAgICAgICAgcmV0dXJuIHBhdGhuYW1lO1xuICAgIH1cbiAgICAvLyBoYW5kbGUgcmVzb2x2aW5nIGhyZWYgZm9yIGR5bmFtaWMgcm91dGVzXG4gICAgaWYgKCFwYWdlcy5pbmNsdWRlcyhjbGVhblBhdGhuYW1lKSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYXJyYXktY2FsbGJhY2stcmV0dXJuXG4gICAgICAgIHBhZ2VzLnNvbWUoKHBhZ2UpPT57XG4gICAgICAgICAgICBpZiAoKDAsIF9pc0R5bmFtaWMpLmlzRHluYW1pY1JvdXRlKHBhZ2UpICYmICgwLCBfcm91dGVSZWdleCkuZ2V0Um91dGVSZWdleChwYWdlKS5yZS50ZXN0KGNsZWFuUGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcGF0aG5hbWUgPSBwYWdlO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuICgwLCBfcmVtb3ZlVHJhaWxpbmdTbGFzaCkucmVtb3ZlVHJhaWxpbmdTbGFzaChwYXRobmFtZSk7XG59XG5jb25zdCBtYW51YWxTY3JvbGxSZXN0b3JhdGlvbiA9IHByb2Nlc3MuZW52Ll9fTkVYVF9TQ1JPTExfUkVTVE9SQVRJT04gJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgJ3Njcm9sbFJlc3RvcmF0aW9uJyBpbiB3aW5kb3cuaGlzdG9yeSAmJiAhIWZ1bmN0aW9uKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGxldCB2ID0gJ19fbmV4dCc7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZXF1ZW5jZXNcbiAgICAgICAgcmV0dXJuIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odiwgdiksIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0odiksIHRydWU7XG4gICAgfSBjYXRjaCAobikge31cbn0oKTtcbmNvbnN0IFNTR19EQVRBX05PVF9GT1VORCA9IFN5bWJvbCgnU1NHX0RBVEFfTk9UX0ZPVU5EJyk7XG5mdW5jdGlvbiBmZXRjaFJldHJ5KHVybCwgYXR0ZW1wdHMsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gZmV0Y2godXJsLCB7XG4gICAgICAgIC8vIENvb2tpZXMgYXJlIHJlcXVpcmVkIHRvIGJlIHByZXNlbnQgZm9yIE5leHQuanMnIFNTRyBcIlByZXZpZXcgTW9kZVwiLlxuICAgICAgICAvLyBDb29raWVzIG1heSBhbHNvIGJlIHJlcXVpcmVkIGZvciBgZ2V0U2VydmVyU2lkZVByb3BzYC5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gPiBgZmV0Y2hgIHdvbuKAmXQgc2VuZCBjb29raWVzLCB1bmxlc3MgeW91IHNldCB0aGUgY3JlZGVudGlhbHMgaW5pdFxuICAgICAgICAvLyA+IG9wdGlvbi5cbiAgICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0ZldGNoX0FQSS9Vc2luZ19GZXRjaFxuICAgICAgICAvL1xuICAgICAgICAvLyA+IEZvciBtYXhpbXVtIGJyb3dzZXIgY29tcGF0aWJpbGl0eSB3aGVuIGl0IGNvbWVzIHRvIHNlbmRpbmcgJlxuICAgICAgICAvLyA+IHJlY2VpdmluZyBjb29raWVzLCBhbHdheXMgc3VwcGx5IHRoZSBgY3JlZGVudGlhbHM6ICdzYW1lLW9yaWdpbidgXG4gICAgICAgIC8vID4gb3B0aW9uIGluc3RlYWQgb2YgcmVseWluZyBvbiB0aGUgZGVmYXVsdC5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dpdGh1Yi9mZXRjaCNjYXZlYXRzXG4gICAgICAgIGNyZWRlbnRpYWxzOiAnc2FtZS1vcmlnaW4nLFxuICAgICAgICBtZXRob2Q6IG9wdGlvbnMubWV0aG9kIHx8ICdHRVQnLFxuICAgICAgICBoZWFkZXJzOiBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zLmhlYWRlcnMsIHtcbiAgICAgICAgICAgICd4LW5leHRqcy1kYXRhJzogJzEnXG4gICAgICAgIH0pXG4gICAgfSkudGhlbigocmVzcG9uc2UpPT57XG4gICAgICAgIHJldHVybiAhcmVzcG9uc2Uub2sgJiYgYXR0ZW1wdHMgPiAxICYmIHJlc3BvbnNlLnN0YXR1cyA+PSA1MDAgPyBmZXRjaFJldHJ5KHVybCwgYXR0ZW1wdHMgLSAxLCBvcHRpb25zKSA6IHJlc3BvbnNlO1xuICAgIH0pO1xufVxuY29uc3QgYmFja2dyb3VuZENhY2hlID0ge307XG5mdW5jdGlvbiBmZXRjaE5leHREYXRhKHsgZGF0YUhyZWYgLCBpbmZsaWdodENhY2hlICwgaXNQcmVmZXRjaCAsIGhhc01pZGRsZXdhcmUgLCBpc1NlcnZlclJlbmRlciAsIHBhcnNlSlNPTiAsIHBlcnNpc3RDYWNoZSAsIGlzQmFja2dyb3VuZCAsIHVuc3RhYmxlX3NraXBDbGllbnRDYWNoZSAgfSkge1xuICAgIGNvbnN0IHsgaHJlZjogY2FjaGVLZXkgIH0gPSBuZXcgVVJMKGRhdGFIcmVmLCB3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgdmFyIHJlZjE7XG4gICAgY29uc3QgZ2V0RGF0YSA9IChwYXJhbXMpPT57XG4gICAgICAgIHJldHVybiBmZXRjaFJldHJ5KGRhdGFIcmVmLCBpc1NlcnZlclJlbmRlciA/IDMgOiAxLCB7XG4gICAgICAgICAgICBoZWFkZXJzOiBpc1ByZWZldGNoID8ge1xuICAgICAgICAgICAgICAgIHB1cnBvc2U6ICdwcmVmZXRjaCdcbiAgICAgICAgICAgIH0gOiB7fSxcbiAgICAgICAgICAgIG1ldGhvZDogKHJlZjEgPSBwYXJhbXMgPT0gbnVsbCA/IHZvaWQgMCA6IHBhcmFtcy5tZXRob2QpICE9IG51bGwgPyByZWYxIDogJ0dFVCdcbiAgICAgICAgfSkudGhlbigocmVzcG9uc2UpPT57XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uub2sgJiYgKHBhcmFtcyA9PSBudWxsID8gdm9pZCAwIDogcGFyYW1zLm1ldGhvZCkgPT09ICdIRUFEJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFIcmVmLFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIGpzb246IHt9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS50ZXh0KCkudGhlbigodGV4dCk9PntcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2hlbiB0aGUgZGF0YSByZXNwb25zZSBpcyBhIHJlZGlyZWN0IGJlY2F1c2Ugb2YgYSBtaWRkbGV3YXJlXG4gICAgICAgICAgICAgKiB3ZSBkbyBub3QgY29uc2lkZXIgaXQgYW4gZXJyb3IuIFRoZSBoZWFkZXJzIG11c3QgYnJpbmcgdGhlXG4gICAgICAgICAgICAgKiBtYXBwZWQgbG9jYXRpb24uXG4gICAgICAgICAgICAgKiBUT0RPOiBDaGFuZ2UgdGhlIHN0YXR1cyBjb2RlIGluIHRoZSBoYW5kbGVyLlxuICAgICAgICAgICAgICovIGlmIChoYXNNaWRkbGV3YXJlICYmIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIDMwMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDMwMixcbiAgICAgICAgICAgICAgICAgICAgICAgIDMwNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIDMwOFxuICAgICAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKHJlc3BvbnNlLnN0YXR1cykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUhyZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uOiB7fVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWY7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHJlZiA9IHRyeVRvUGFyc2VBc0pTT04odGV4dCkpID09IG51bGwgPyB2b2lkIDAgOiByZWYubm90Rm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhSHJlZixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90Rm91bmQ6IFNTR19EQVRBX05PVF9GT1VORFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICogSWYgdGhlcmUgaXMgYSA0MDQgdGhhdCBpcyBub3QgZm9yIFNTRyB3ZSB1c2VkIHRvIGZhaWwgYnV0IGlmXG4gICAgICAgICAgICAgICAqIHRoZXJlIGlzIGEgbWlkZGxld2FyZSB3ZSBtdXN0IHJlc3BvbmQgd2l0aCBhbiBlbXB0eSBvYmplY3QuXG4gICAgICAgICAgICAgICAqIEZvciBub3cgd2Ugd2lsbCByZXR1cm4gdGhlIGRhdGEgd2hlbiB0aGVyZSBpcyBhIG1pZGRsZXdhcmUuXG4gICAgICAgICAgICAgICAqIFRPRE86IFVwZGF0ZSB0aGUgc2VydmVyIHRvIHN1Y2Nlc3Mgb24gdGhlc2UgcmVxdWVzdHMuXG4gICAgICAgICAgICAgICAqLyBpZiAoaGFzTWlkZGxld2FyZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFIcmVmLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbjoge31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBGYWlsZWQgdG8gbG9hZCBzdGF0aWMgcHJvcHNgKTtcbiAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXZSBzaG91bGQgb25seSB0cmlnZ2VyIGEgc2VydmVyLXNpZGUgdHJhbnNpdGlvbiBpZiB0aGlzIHdhc1xuICAgICAgICAgICAgICogY2F1c2VkIG9uIGEgY2xpZW50LXNpZGUgdHJhbnNpdGlvbi4gT3RoZXJ3aXNlLCB3ZSdkIGdldCBpbnRvXG4gICAgICAgICAgICAgKiBhbiBpbmZpbml0ZSBsb29wLlxuICAgICAgICAgICAgICovIGlmICghaXNTZXJ2ZXJSZW5kZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfcm91dGVMb2FkZXIpLm1hcmtBc3NldEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YUhyZWYsXG4gICAgICAgICAgICAgICAgICAgIGpzb246IHBhcnNlSlNPTiA/IHRyeVRvUGFyc2VBc0pTT04odGV4dCkgOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICAgIHRleHRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLnRoZW4oKGRhdGEpPT57XG4gICAgICAgICAgICBpZiAoIXBlcnNpc3RDYWNoZSB8fCBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nIHx8IGRhdGEucmVzcG9uc2UuaGVhZGVycy5nZXQoJ3gtbWlkZGxld2FyZS1jYWNoZScpID09PSAnbm8tY2FjaGUnKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGluZmxpZ2h0Q2FjaGVbY2FjaGVLZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0pLmNhdGNoKChlcnIpPT57XG4gICAgICAgICAgICBkZWxldGUgaW5mbGlnaHRDYWNoZVtjYWNoZUtleV07XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLy8gd2hlbiBza2lwcGluZyBjbGllbnQgY2FjaGUgd2Ugd2FpdCB0byB1cGRhdGVcbiAgICAvLyBpbmZsaWdodCBjYWNoZSB1bnRpbCBzdWNjZXNzZnVsIGRhdGEgcmVzcG9uc2VcbiAgICAvLyB0aGlzIGFsbG93cyByYWNpbmcgY2xpY2sgZXZlbnQgd2l0aCBmZXRjaGluZyBuZXdlciBkYXRhXG4gICAgLy8gd2l0aG91dCBibG9ja2luZyBuYXZpZ2F0aW9uIHdoZW4gc3RhbGUgZGF0YSBpcyBhdmFpbGFibGVcbiAgICBpZiAodW5zdGFibGVfc2tpcENsaWVudENhY2hlICYmIHBlcnNpc3RDYWNoZSkge1xuICAgICAgICByZXR1cm4gZ2V0RGF0YSh7fSkudGhlbigoZGF0YSk9PntcbiAgICAgICAgICAgIGluZmxpZ2h0Q2FjaGVbY2FjaGVLZXldID0gUHJvbWlzZS5yZXNvbHZlKGRhdGEpO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoaW5mbGlnaHRDYWNoZVtjYWNoZUtleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gaW5mbGlnaHRDYWNoZVtjYWNoZUtleV07XG4gICAgfVxuICAgIHJldHVybiBpbmZsaWdodENhY2hlW2NhY2hlS2V5XSA9IGdldERhdGEoaXNCYWNrZ3JvdW5kID8ge1xuICAgICAgICBtZXRob2Q6ICdIRUFEJ1xuICAgIH0gOiB7fSk7XG59XG5mdW5jdGlvbiB0cnlUb1BhcnNlQXNKU09OKHRleHQpIHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxufVxuZnVuY3Rpb24gY3JlYXRlS2V5KCkge1xuICAgIHJldHVybiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCAxMCk7XG59XG5mdW5jdGlvbiBoYW5kbGVIYXJkTmF2aWdhdGlvbih7IHVybCAsIHJvdXRlciAgfSkge1xuICAgIC8vIGVuc3VyZSB3ZSBkb24ndCB0cmlnZ2VyIGEgaGFyZCBuYXZpZ2F0aW9uIHRvIHRoZSBzYW1lXG4gICAgLy8gVVJMIGFzIHRoaXMgY2FuIGVuZCB1cCB3aXRoIGFuIGluZmluaXRlIHJlZnJlc2hcbiAgICBpZiAodXJsID09PSAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aCgoMCwgX2FkZExvY2FsZSkuYWRkTG9jYWxlKHJvdXRlci5hc1BhdGgsIHJvdXRlci5sb2NhbGUpKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFyaWFudDogYXR0ZW1wdGVkIHRvIGhhcmQgbmF2aWdhdGUgdG8gdGhlIHNhbWUgVVJMICR7dXJsfSAke2xvY2F0aW9uLmhyZWZ9YCk7XG4gICAgfVxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xufVxuY29uc3QgZ2V0Q2FuY2VsbGVkSGFuZGxlciA9ICh7IHJvdXRlICwgcm91dGVyICB9KT0+e1xuICAgIGxldCBjYW5jZWxsZWQgPSBmYWxzZTtcbiAgICBjb25zdCBjYW5jZWwgPSByb3V0ZXIuY2xjID0gKCk9PntcbiAgICAgICAgY2FuY2VsbGVkID0gdHJ1ZTtcbiAgICB9O1xuICAgIGNvbnN0IGhhbmRsZUNhbmNlbGxlZCA9ICgpPT57XG4gICAgICAgIGlmIChjYW5jZWxsZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBBYm9ydCBmZXRjaGluZyBjb21wb25lbnQgZm9yIHJvdXRlOiBcIiR7cm91dGV9XCJgKTtcbiAgICAgICAgICAgIGVycm9yLmNhbmNlbGxlZCA9IHRydWU7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FuY2VsID09PSByb3V0ZXIuY2xjKSB7XG4gICAgICAgICAgICByb3V0ZXIuY2xjID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIGhhbmRsZUNhbmNlbGxlZDtcbn07XG5jbGFzcyBSb3V0ZXIge1xuICAgIHJlbG9hZCgpIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgIH1cbiAgICAvKipcbiAgICogR28gYmFjayBpbiBoaXN0b3J5XG4gICAqLyBiYWNrKCkge1xuICAgICAgICB3aW5kb3cuaGlzdG9yeS5iYWNrKCk7XG4gICAgfVxuICAgIC8qKlxuICAgKiBQZXJmb3JtcyBhIGBwdXNoU3RhdGVgIHdpdGggYXJndW1lbnRzXG4gICAqIEBwYXJhbSB1cmwgb2YgdGhlIHJvdXRlXG4gICAqIEBwYXJhbSBhcyBtYXNrcyBgdXJsYCBmb3IgdGhlIGJyb3dzZXJcbiAgICogQHBhcmFtIG9wdGlvbnMgb2JqZWN0IHlvdSBjYW4gZGVmaW5lIGBzaGFsbG93YCBhbmQgb3RoZXIgb3B0aW9uc1xuICAgKi8gcHVzaCh1cmwsIGFzLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9TQ1JPTExfUkVTVE9SQVRJT04pIHtcbiAgICAgICAgICAgIC8vIFRPRE86IHJlbW92ZSBpbiB0aGUgZnV0dXJlIHdoZW4gd2UgdXBkYXRlIGhpc3RvcnkgYmVmb3JlIHJvdXRlIGNoYW5nZVxuICAgICAgICAgICAgLy8gaXMgY29tcGxldGUsIGFzIHRoZSBwb3BzdGF0ZSBldmVudCBzaG91bGQgaGFuZGxlIHRoaXMgY2FwdHVyZS5cbiAgICAgICAgICAgIGlmIChtYW51YWxTY3JvbGxSZXN0b3JhdGlvbikge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNuYXBzaG90IHNjcm9sbCBwb3NpdGlvbiByaWdodCBiZWZvcmUgbmF2aWdhdGluZyB0byBhIG5ldyBwYWdlOlxuICAgICAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdfX25leHRfc2Nyb2xsXycgKyB0aGlzLl9rZXksIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHg6IHNlbGYucGFnZVhPZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICB5OiBzZWxmLnBhZ2VZT2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICh7IHVybCAsIGFzICB9ID0gcHJlcGFyZVVybEFzKHRoaXMsIHVybCwgYXMpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhbmdlKCdwdXNoU3RhdGUnLCB1cmwsIGFzLCBvcHRpb25zKTtcbiAgICB9XG4gICAgLyoqXG4gICAqIFBlcmZvcm1zIGEgYHJlcGxhY2VTdGF0ZWAgd2l0aCBhcmd1bWVudHNcbiAgICogQHBhcmFtIHVybCBvZiB0aGUgcm91dGVcbiAgICogQHBhcmFtIGFzIG1hc2tzIGB1cmxgIGZvciB0aGUgYnJvd3NlclxuICAgKiBAcGFyYW0gb3B0aW9ucyBvYmplY3QgeW91IGNhbiBkZWZpbmUgYHNoYWxsb3dgIGFuZCBvdGhlciBvcHRpb25zXG4gICAqLyByZXBsYWNlKHVybCwgYXMsIG9wdGlvbnMgPSB7fSkge1xuICAgICAgICAoeyB1cmwgLCBhcyAgfSA9IHByZXBhcmVVcmxBcyh0aGlzLCB1cmwsIGFzKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmNoYW5nZSgncmVwbGFjZVN0YXRlJywgdXJsLCBhcywgb3B0aW9ucyk7XG4gICAgfVxuICAgIGNoYW5nZShtZXRob2QsIHVybCwgYXMsIG9wdGlvbnMsIGZvcmNlZFNjcm9sbCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qKCkge1xuICAgICAgICAgICAgaWYgKCFpc0xvY2FsVVJMKHVybCkpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFdBUk5JTkc6IGBfaGAgaXMgYW4gaW50ZXJuYWwgb3B0aW9uIGZvciBoYW5kaW5nIE5leHQuanMgY2xpZW50LXNpZGVcbiAgICAgICAgICAgIC8vIGh5ZHJhdGlvbi4gWW91ciBhcHAgc2hvdWxkIF9uZXZlcl8gdXNlIHRoaXMgcHJvcGVydHkuIEl0IG1heSBjaGFuZ2UgYXRcbiAgICAgICAgICAgIC8vIGFueSB0aW1lIHdpdGhvdXQgbm90aWNlLlxuICAgICAgICAgICAgY29uc3QgaXNRdWVyeVVwZGF0aW5nID0gb3B0aW9ucy5faDtcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZFJlc29sdmVIcmVmID0gaXNRdWVyeVVwZGF0aW5nIHx8IG9wdGlvbnMuX3Nob3VsZFJlc29sdmVIcmVmIHx8ICgwLCBfcGFyc2VQYXRoKS5wYXJzZVBhdGgodXJsKS5wYXRobmFtZSA9PT0gKDAsIF9wYXJzZVBhdGgpLnBhcnNlUGF0aChhcykucGF0aG5hbWU7XG4gICAgICAgICAgICBjb25zdCBuZXh0U3RhdGUgPSBfZXh0ZW5kcyh7fSwgX3RoaXMuc3RhdGUpO1xuICAgICAgICAgICAgLy8gZm9yIHN0YXRpYyBwYWdlcyB3aXRoIHF1ZXJ5IHBhcmFtcyBpbiB0aGUgVVJMIHdlIGRlbGF5XG4gICAgICAgICAgICAvLyBtYXJraW5nIHRoZSByb3V0ZXIgcmVhZHkgdW50aWwgYWZ0ZXIgdGhlIHF1ZXJ5IGlzIHVwZGF0ZWRcbiAgICAgICAgICAgIC8vIG9yIGEgbmF2aWdhdGlvbiBoYXMgb2NjdXJyZWRcbiAgICAgICAgICAgIF90aGlzLmlzUmVhZHkgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXNTc3IgPSBfdGhpcy5pc1NzcjtcbiAgICAgICAgICAgIGlmICghaXNRdWVyeVVwZGF0aW5nKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuaXNTc3IgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGlmIGEgcm91dGUgdHJhbnNpdGlvbiBpcyBhbHJlYWR5IGluIHByb2dyZXNzIGJlZm9yZVxuICAgICAgICAgICAgLy8gdGhlIHF1ZXJ5IHVwZGF0aW5nIGlzIHRyaWdnZXJlZCBpZ25vcmUgcXVlcnkgdXBkYXRpbmdcbiAgICAgICAgICAgIGlmIChpc1F1ZXJ5VXBkYXRpbmcgJiYgX3RoaXMuY2xjKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcHJldkxvY2FsZSA9IG5leHRTdGF0ZS5sb2NhbGU7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICAgICAgICAgIG5leHRTdGF0ZS5sb2NhbGUgPSBvcHRpb25zLmxvY2FsZSA9PT0gZmFsc2UgPyBfdGhpcy5kZWZhdWx0TG9jYWxlIDogb3B0aW9ucy5sb2NhbGUgfHwgbmV4dFN0YXRlLmxvY2FsZTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMubG9jYWxlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmxvY2FsZSA9IG5leHRTdGF0ZS5sb2NhbGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZEFzID0gKDAsIF9wYXJzZVJlbGF0aXZlVXJsKS5wYXJzZVJlbGF0aXZlVXJsKCgwLCBfaGFzQmFzZVBhdGgpLmhhc0Jhc2VQYXRoKGFzKSA/ICgwLCBfcmVtb3ZlQmFzZVBhdGgpLnJlbW92ZUJhc2VQYXRoKGFzKSA6IGFzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGVQYXRoUmVzdWx0ID0gKDAsIF9ub3JtYWxpemVMb2NhbGVQYXRoKS5ub3JtYWxpemVMb2NhbGVQYXRoKHBhcnNlZEFzLnBhdGhuYW1lLCBfdGhpcy5sb2NhbGVzKTtcbiAgICAgICAgICAgICAgICBpZiAobG9jYWxlUGF0aFJlc3VsdC5kZXRlY3RlZExvY2FsZSkge1xuICAgICAgICAgICAgICAgICAgICBuZXh0U3RhdGUubG9jYWxlID0gbG9jYWxlUGF0aFJlc3VsdC5kZXRlY3RlZExvY2FsZTtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkQXMucGF0aG5hbWUgPSAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aChwYXJzZWRBcy5wYXRobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGFzID0gKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHBhcnNlZEFzKTtcbiAgICAgICAgICAgICAgICAgICAgdXJsID0gKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgoKDAsIF9ub3JtYWxpemVMb2NhbGVQYXRoKS5ub3JtYWxpemVMb2NhbGVQYXRoKCgwLCBfaGFzQmFzZVBhdGgpLmhhc0Jhc2VQYXRoKHVybCkgPyAoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aCh1cmwpIDogdXJsLCBfdGhpcy5sb2NhbGVzKS5wYXRobmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBkaWROYXZpZ2F0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gd3JhcCB0aGlzIGluIHRoZSBlbnYgY2hlY2sgYWdhaW4gc2luY2UgcmVnZW5lcmF0b3IgcnVudGltZVxuICAgICAgICAgICAgICAgIC8vIG1vdmVzIHRoaXMgb24gaXRzIG93biBkdWUgdG8gdGhlIHJldHVyblxuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWY7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBsb2NhbGUgaXNuJ3QgY29uZmlndXJlZCBoYXJkIG5hdmlnYXRlIHRvIHNob3cgNDA0IHBhZ2VcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoKHJlZiA9IF90aGlzLmxvY2FsZXMpID09IG51bGwgPyB2b2lkIDAgOiByZWYuaW5jbHVkZXMobmV4dFN0YXRlLmxvY2FsZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRBcy5wYXRobmFtZSA9ICgwLCBfYWRkTG9jYWxlKS5hZGRMb2NhbGUocGFyc2VkQXMucGF0aG5hbWUsIG5leHRTdGF0ZS5sb2NhbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlSGFyZE5hdmlnYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHBhcnNlZEFzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXI6IF90aGlzXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgd2FzIHByZXZpb3VzbHkgYSByZXR1cm4gYnV0IHdhcyByZW1vdmVkIGluIGZhdm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiBiZXR0ZXIgZGVhZCBjb2RlIGVsaW1pbmF0aW9uIHdpdGggcmVnZW5lcmF0b3IgcnVudGltZVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlkTmF2aWdhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGRldGVjdGVkRG9tYWluID0gKDAsIF9kZXRlY3REb21haW5Mb2NhbGUpLmRldGVjdERvbWFpbkxvY2FsZShfdGhpcy5kb21haW5Mb2NhbGVzLCB1bmRlZmluZWQsIG5leHRTdGF0ZS5sb2NhbGUpO1xuICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gd3JhcCB0aGlzIGluIHRoZSBlbnYgY2hlY2sgYWdhaW4gc2luY2UgcmVnZW5lcmF0b3IgcnVudGltZVxuICAgICAgICAgICAgICAgIC8vIG1vdmVzIHRoaXMgb24gaXRzIG93biBkdWUgdG8gdGhlIHJldHVyblxuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHdlIGFyZSBuYXZpZ2F0aW5nIHRvIGEgZG9tYWluIGxvY2FsZSBlbnN1cmUgd2UgcmVkaXJlY3QgdG8gdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlY3QgZG9tYWluXG4gICAgICAgICAgICAgICAgICAgIGlmICghZGlkTmF2aWdhdGUgJiYgZGV0ZWN0ZWREb21haW4gJiYgX3RoaXMuaXNMb2NhbGVEb21haW4gJiYgc2VsZi5sb2NhdGlvbi5ob3N0bmFtZSAhPT0gZGV0ZWN0ZWREb21haW4uZG9tYWluKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhc05vQmFzZVBhdGggPSAoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChhcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgaHR0cCR7ZGV0ZWN0ZWREb21haW4uaHR0cCA/ICcnIDogJ3MnfTovLyR7ZGV0ZWN0ZWREb21haW4uZG9tYWlufSR7KDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgoYCR7bmV4dFN0YXRlLmxvY2FsZSA9PT0gZGV0ZWN0ZWREb21haW4uZGVmYXVsdExvY2FsZSA/ICcnIDogYC8ke25leHRTdGF0ZS5sb2NhbGV9YH0ke2FzTm9CYXNlUGF0aCA9PT0gJy8nID8gJycgOiBhc05vQmFzZVBhdGh9YCB8fCAnLycpfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHdhcyBwcmV2aW91c2x5IGEgcmV0dXJuIGJ1dCB3YXMgcmVtb3ZlZCBpbiBmYXZvclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgYmV0dGVyIGRlYWQgY29kZSBlbGltaW5hdGlvbiB3aXRoIHJlZ2VuZXJhdG9yIHJ1bnRpbWVcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpZE5hdmlnYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZGlkTmF2aWdhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCgpPT57fSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gbWFya2luZyByb3V0ZSBjaGFuZ2VzIGFzIGEgbmF2aWdhdGlvbiBzdGFydCBlbnRyeVxuICAgICAgICAgICAgaWYgKF91dGlscy5TVCkge1xuICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlLm1hcmsoJ3JvdXRlQ2hhbmdlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB7IHNoYWxsb3cgPWZhbHNlICwgc2Nyb2xsID10cnVlICB9ID0gb3B0aW9ucztcbiAgICAgICAgICAgIGNvbnN0IHJvdXRlUHJvcHMgPSB7XG4gICAgICAgICAgICAgICAgc2hhbGxvd1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChfdGhpcy5faW5GbGlnaHRSb3V0ZSAmJiBfdGhpcy5jbGMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzU3NyKSB7XG4gICAgICAgICAgICAgICAgICAgIFJvdXRlci5ldmVudHMuZW1pdCgncm91dGVDaGFuZ2VFcnJvcicsIGJ1aWxkQ2FuY2VsbGF0aW9uRXJyb3IoKSwgX3RoaXMuX2luRmxpZ2h0Um91dGUsIHJvdXRlUHJvcHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBfdGhpcy5jbGMoKTtcbiAgICAgICAgICAgICAgICBfdGhpcy5jbGMgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXMgPSAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aCgoMCwgX2FkZExvY2FsZSkuYWRkTG9jYWxlKCgwLCBfaGFzQmFzZVBhdGgpLmhhc0Jhc2VQYXRoKGFzKSA/ICgwLCBfcmVtb3ZlQmFzZVBhdGgpLnJlbW92ZUJhc2VQYXRoKGFzKSA6IGFzLCBvcHRpb25zLmxvY2FsZSwgX3RoaXMuZGVmYXVsdExvY2FsZSkpO1xuICAgICAgICAgICAgY29uc3QgY2xlYW5lZEFzID0gKDAsIF9yZW1vdmVMb2NhbGUpLnJlbW92ZUxvY2FsZSgoMCwgX2hhc0Jhc2VQYXRoKS5oYXNCYXNlUGF0aChhcykgPyAoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChhcykgOiBhcywgbmV4dFN0YXRlLmxvY2FsZSk7XG4gICAgICAgICAgICBfdGhpcy5faW5GbGlnaHRSb3V0ZSA9IGFzO1xuICAgICAgICAgICAgbGV0IGxvY2FsZUNoYW5nZSA9IHByZXZMb2NhbGUgIT09IG5leHRTdGF0ZS5sb2NhbGU7XG4gICAgICAgICAgICAvLyBJZiB0aGUgdXJsIGNoYW5nZSBpcyBvbmx5IHJlbGF0ZWQgdG8gYSBoYXNoIGNoYW5nZVxuICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBwcm9jZWVkLiBXZSBzaG91bGQgb25seSBjaGFuZ2UgdGhlIHN0YXRlLlxuICAgICAgICAgICAgaWYgKCFpc1F1ZXJ5VXBkYXRpbmcgJiYgX3RoaXMub25seUFIYXNoQ2hhbmdlKGNsZWFuZWRBcykgJiYgIWxvY2FsZUNoYW5nZSkge1xuICAgICAgICAgICAgICAgIG5leHRTdGF0ZS5hc1BhdGggPSBjbGVhbmVkQXM7XG4gICAgICAgICAgICAgICAgUm91dGVyLmV2ZW50cy5lbWl0KCdoYXNoQ2hhbmdlU3RhcnQnLCBhcywgcm91dGVQcm9wcyk7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogZG8gd2UgbmVlZCB0aGUgcmVzb2x2ZWQgaHJlZiB3aGVuIG9ubHkgYSBoYXNoIGNoYW5nZT9cbiAgICAgICAgICAgICAgICBfdGhpcy5jaGFuZ2VTdGF0ZShtZXRob2QsIHVybCwgYXMsIF9leHRlbmRzKHt9LCBvcHRpb25zLCB7XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbDogZmFsc2VcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgaWYgKHNjcm9sbCkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5zY3JvbGxUb0hhc2goY2xlYW5lZEFzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQgX3RoaXMuc2V0KG5leHRTdGF0ZSwgX3RoaXMuY29tcG9uZW50c1tuZXh0U3RhdGUucm91dGVdLCBudWxsKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCgwLCBfaXNFcnJvcikuZGVmYXVsdChlcnIpICYmIGVyci5jYW5jZWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFJvdXRlci5ldmVudHMuZW1pdCgncm91dGVDaGFuZ2VFcnJvcicsIGVyciwgY2xlYW5lZEFzLCByb3V0ZVByb3BzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFJvdXRlci5ldmVudHMuZW1pdCgnaGFzaENoYW5nZUNvbXBsZXRlJywgYXMsIHJvdXRlUHJvcHMpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHBhcnNlZCA9ICgwLCBfcGFyc2VSZWxhdGl2ZVVybCkucGFyc2VSZWxhdGl2ZVVybCh1cmwpO1xuICAgICAgICAgICAgbGV0IHsgcGF0aG5hbWUgLCBxdWVyeSAgfSA9IHBhcnNlZDtcbiAgICAgICAgICAgIC8vIFRoZSBidWlsZCBtYW5pZmVzdCBuZWVkcyB0byBiZSBsb2FkZWQgYmVmb3JlIGF1dG8tc3RhdGljIGR5bmFtaWMgcGFnZXNcbiAgICAgICAgICAgIC8vIGdldCB0aGVpciBxdWVyeSBwYXJhbWV0ZXJzIHRvIGFsbG93IGVuc3VyaW5nIHRoZXkgY2FuIGJlIHBhcnNlZCBwcm9wZXJseVxuICAgICAgICAgICAgLy8gd2hlbiByZXdyaXR0ZW4gdG9cbiAgICAgICAgICAgIGxldCBwYWdlcywgcmV3cml0ZXM7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIFtwYWdlcywgeyBfX3Jld3JpdGVzOiByZXdyaXRlcyAgfV0gPSB5aWVsZCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICAgICAgICAgIF90aGlzLnBhZ2VMb2FkZXIuZ2V0UGFnZUxpc3QoKSxcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9yb3V0ZUxvYWRlcikuZ2V0Q2xpZW50QnVpbGRNYW5pZmVzdCgpLFxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5wYWdlTG9hZGVyLmdldE1pZGRsZXdhcmVMaXN0KCksIFxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgd2UgZmFpbCB0byByZXNvbHZlIHRoZSBwYWdlIGxpc3Qgb3IgY2xpZW50LWJ1aWxkIG1hbmlmZXN0LCB3ZSBtdXN0XG4gICAgICAgICAgICAgICAgLy8gZG8gYSBzZXJ2ZXItc2lkZSB0cmFuc2l0aW9uOlxuICAgICAgICAgICAgICAgIGhhbmRsZUhhcmROYXZpZ2F0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBhcyxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElmIGFza2VkIHRvIGNoYW5nZSB0aGUgY3VycmVudCBVUkwgd2Ugc2hvdWxkIHJlbG9hZCB0aGUgY3VycmVudCBwYWdlXG4gICAgICAgICAgICAvLyAobm90IGxvY2F0aW9uLnJlbG9hZCgpIGJ1dCByZWxvYWQgZ2V0SW5pdGlhbFByb3BzIGFuZCBvdGhlciBOZXh0LmpzIHN0dWZmcylcbiAgICAgICAgICAgIC8vIFdlIGFsc28gbmVlZCB0byBzZXQgdGhlIG1ldGhvZCA9IHJlcGxhY2VTdGF0ZSBhbHdheXNcbiAgICAgICAgICAgIC8vIGFzIHRoaXMgc2hvdWxkIG5vdCBnbyBpbnRvIHRoZSBoaXN0b3J5IChUaGF0J3MgaG93IGJyb3dzZXJzIHdvcmspXG4gICAgICAgICAgICAvLyBXZSBzaG91bGQgY29tcGFyZSB0aGUgbmV3IGFzUGF0aCB0byB0aGUgY3VycmVudCBhc1BhdGgsIG5vdCB0aGUgdXJsXG4gICAgICAgICAgICBpZiAoIV90aGlzLnVybElzTmV3KGNsZWFuZWRBcykgJiYgIWxvY2FsZUNoYW5nZSkge1xuICAgICAgICAgICAgICAgIG1ldGhvZCA9ICdyZXBsYWNlU3RhdGUnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gd2UgbmVlZCB0byByZXNvbHZlIHRoZSBhcyB2YWx1ZSB1c2luZyByZXdyaXRlcyBmb3IgZHluYW1pYyBTU0dcbiAgICAgICAgICAgIC8vIHBhZ2VzIHRvIGFsbG93IGJ1aWxkaW5nIHRoZSBkYXRhIFVSTCBjb3JyZWN0bHlcbiAgICAgICAgICAgIGxldCByZXNvbHZlZEFzID0gYXM7XG4gICAgICAgICAgICAvLyB1cmwgYW5kIGFzIHNob3VsZCBhbHdheXMgYmUgcHJlZml4ZWQgd2l0aCBiYXNlUGF0aCBieSB0aGlzXG4gICAgICAgICAgICAvLyBwb2ludCBieSBlaXRoZXIgbmV4dC9saW5rIG9yIHJvdXRlci5wdXNoL3JlcGxhY2Ugc28gc3RyaXAgdGhlXG4gICAgICAgICAgICAvLyBiYXNlUGF0aCBmcm9tIHRoZSBwYXRobmFtZSB0byBtYXRjaCB0aGUgcGFnZXMgZGlyIDEtdG8tMVxuICAgICAgICAgICAgcGF0aG5hbWUgPSBwYXRobmFtZSA/ICgwLCBfcmVtb3ZlVHJhaWxpbmdTbGFzaCkucmVtb3ZlVHJhaWxpbmdTbGFzaCgoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChwYXRobmFtZSkpIDogcGF0aG5hbWU7XG4gICAgICAgICAgICAvLyB3ZSBkb24ndCBhdHRlbXB0IHJlc29sdmUgYXNQYXRoIHdoZW4gd2UgbmVlZCB0byBleGVjdXRlXG4gICAgICAgICAgICAvLyBtaWRkbGV3YXJlIGFzIHRoZSByZXNvbHZpbmcgd2lsbCBvY2N1ciBzZXJ2ZXItc2lkZVxuICAgICAgICAgICAgY29uc3QgaXNNaWRkbGV3YXJlTWF0Y2ggPSB5aWVsZCBtYXRjaGVzTWlkZGxld2FyZSh7XG4gICAgICAgICAgICAgICAgYXNQYXRoOiBhcyxcbiAgICAgICAgICAgICAgICBsb2NhbGU6IG5leHRTdGF0ZS5sb2NhbGUsXG4gICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zaGFsbG93ICYmIGlzTWlkZGxld2FyZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcGF0aG5hbWUgPSBfdGhpcy5wYXRobmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzaG91bGRSZXNvbHZlSHJlZiAmJiBwYXRobmFtZSAhPT0gJy9fZXJyb3InKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5fc2hvdWxkUmVzb2x2ZUhyZWYgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSEFTX1JFV1JJVEVTICYmIGFzLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXdyaXRlc1Jlc3VsdCA9ICgwLCBfcmVzb2x2ZVJld3JpdGVzKS5kZWZhdWx0KCgwLCBfYWRkQmFzZVBhdGgpLmFkZEJhc2VQYXRoKCgwLCBfYWRkTG9jYWxlKS5hZGRMb2NhbGUoY2xlYW5lZEFzLCBuZXh0U3RhdGUubG9jYWxlKSwgdHJ1ZSksIHBhZ2VzLCByZXdyaXRlcywgcXVlcnksIChwKT0+cmVzb2x2ZUR5bmFtaWNSb3V0ZShwLCBwYWdlcyksIF90aGlzLmxvY2FsZXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmV3cml0ZXNSZXN1bHQuZXh0ZXJuYWxEZXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXI6IF90aGlzXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNNaWRkbGV3YXJlTWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQXMgPSByZXdyaXRlc1Jlc3VsdC5hc1BhdGg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHJld3JpdGVzUmVzdWx0Lm1hdGNoZWRQYWdlICYmIHJld3JpdGVzUmVzdWx0LnJlc29sdmVkSHJlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhpcyBkaXJlY3RseSBtYXRjaGVzIGEgcGFnZSB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgaHJlZiB0b1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3cgdGhlIGNvcnJlY3QgcGFnZSBjaHVuayB0byBiZSBsb2FkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lID0gcmV3cml0ZXNSZXN1bHQucmVzb2x2ZWRIcmVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkLnBhdGhuYW1lID0gKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgocGF0aG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc01pZGRsZXdhcmVNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9ICgwLCBfZm9ybWF0VXJsKS5mb3JtYXRXaXRoVmFsaWRhdGlvbihwYXJzZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkLnBhdGhuYW1lID0gcmVzb2x2ZUR5bmFtaWNSb3V0ZShwYXRobmFtZSwgcGFnZXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VkLnBhdGhuYW1lICE9PSBwYXRobmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUgPSBwYXJzZWQucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWQucGF0aG5hbWUgPSAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aChwYXRobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTWlkZGxld2FyZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHBhcnNlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWlzTG9jYWxVUkwoYXMpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGhyZWY6IFwiJHt1cmx9XCIgYW5kIGFzOiBcIiR7YXN9XCIsIHJlY2VpdmVkIHJlbGF0aXZlIGhyZWYgYW5kIGV4dGVybmFsIGFzYCArIGBcXG5TZWUgbW9yZSBpbmZvOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9pbnZhbGlkLXJlbGF0aXZlLXVybC1leHRlcm5hbC1hc2ApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIHVybDogYXMsXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlcjogX3RoaXNcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlZEFzID0gKDAsIF9yZW1vdmVMb2NhbGUpLnJlbW92ZUxvY2FsZSgoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChyZXNvbHZlZEFzKSwgbmV4dFN0YXRlLmxvY2FsZSk7XG4gICAgICAgICAgICBsZXQgcm91dGUgPSAoMCwgX3JlbW92ZVRyYWlsaW5nU2xhc2gpLnJlbW92ZVRyYWlsaW5nU2xhc2gocGF0aG5hbWUpO1xuICAgICAgICAgICAgbGV0IHJvdXRlTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICgoMCwgX2lzRHluYW1pYykuaXNEeW5hbWljUm91dGUocm91dGUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkQXMgPSAoMCwgX3BhcnNlUmVsYXRpdmVVcmwpLnBhcnNlUmVsYXRpdmVVcmwocmVzb2x2ZWRBcyk7XG4gICAgICAgICAgICAgICAgY29uc3QgYXNQYXRobmFtZSA9IHBhcnNlZEFzLnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRlUmVnZXggPSAoMCwgX3JvdXRlUmVnZXgpLmdldFJvdXRlUmVnZXgocm91dGUpO1xuICAgICAgICAgICAgICAgIHJvdXRlTWF0Y2ggPSAoMCwgX3JvdXRlTWF0Y2hlcikuZ2V0Um91dGVNYXRjaGVyKHJvdXRlUmVnZXgpKGFzUGF0aG5hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNob3VsZEludGVycG9sYXRlID0gcm91dGUgPT09IGFzUGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgY29uc3QgaW50ZXJwb2xhdGVkQXMgPSBzaG91bGRJbnRlcnBvbGF0ZSA/IGludGVycG9sYXRlQXMocm91dGUsIGFzUGF0aG5hbWUsIHF1ZXJ5KSA6IHt9O1xuICAgICAgICAgICAgICAgIGlmICghcm91dGVNYXRjaCB8fCBzaG91bGRJbnRlcnBvbGF0ZSAmJiAhaW50ZXJwb2xhdGVkQXMucmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pc3NpbmdQYXJhbXMgPSBPYmplY3Qua2V5cyhyb3V0ZVJlZ2V4Lmdyb3VwcykuZmlsdGVyKChwYXJhbSk9PiFxdWVyeVtwYXJhbV0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWlzc2luZ1BhcmFtcy5sZW5ndGggPiAwICYmICFpc01pZGRsZXdhcmVNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYCR7c2hvdWxkSW50ZXJwb2xhdGUgPyBgSW50ZXJwb2xhdGluZyBocmVmYCA6IGBNaXNtYXRjaGluZyBcXGBhc1xcYCBhbmQgXFxgaHJlZlxcYGB9IGZhaWxlZCB0byBtYW51YWxseSBwcm92aWRlIGAgKyBgdGhlIHBhcmFtczogJHttaXNzaW5nUGFyYW1zLmpvaW4oJywgJyl9IGluIHRoZSBcXGBocmVmXFxgJ3MgXFxgcXVlcnlcXGBgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigoc2hvdWxkSW50ZXJwb2xhdGUgPyBgVGhlIHByb3ZpZGVkIFxcYGhyZWZcXGAgKCR7dXJsfSkgdmFsdWUgaXMgbWlzc2luZyBxdWVyeSB2YWx1ZXMgKCR7bWlzc2luZ1BhcmFtcy5qb2luKCcsICcpfSkgdG8gYmUgaW50ZXJwb2xhdGVkIHByb3Blcmx5LiBgIDogYFRoZSBwcm92aWRlZCBcXGBhc1xcYCB2YWx1ZSAoJHthc1BhdGhuYW1lfSkgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIFxcYGhyZWZcXGAgdmFsdWUgKCR7cm91dGV9KS4gYCkgKyBgUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy8ke3Nob3VsZEludGVycG9sYXRlID8gJ2hyZWYtaW50ZXJwb2xhdGlvbi1mYWlsZWQnIDogJ2luY29tcGF0aWJsZS1ocmVmLWFzJ31gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkSW50ZXJwb2xhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgYXMgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oT2JqZWN0LmFzc2lnbih7fSwgcGFyc2VkQXMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lOiBpbnRlcnBvbGF0ZWRBcy5yZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVyeTogb21pdChxdWVyeSwgaW50ZXJwb2xhdGVkQXMucGFyYW1zKVxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTWVyZ2UgcGFyYW1zIGludG8gYHF1ZXJ5YCwgb3ZlcndyaXRpbmcgYW55IHNwZWNpZmllZCBpbiBzZWFyY2hcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihxdWVyeSwgcm91dGVNYXRjaCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc1F1ZXJ5VXBkYXRpbmcpIHtcbiAgICAgICAgICAgICAgICBSb3V0ZXIuZXZlbnRzLmVtaXQoJ3JvdXRlQ2hhbmdlU3RhcnQnLCBhcywgcm91dGVQcm9wcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHZhciByZWYyLCByZWYzO1xuICAgICAgICAgICAgICAgIGxldCByb3V0ZUluZm8gPSB5aWVsZCBfdGhpcy5nZXRSb3V0ZUluZm8oe1xuICAgICAgICAgICAgICAgICAgICByb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICBhcyxcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRBcyxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVQcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBuZXh0U3RhdGUubG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICBpc1ByZXZpZXc6IG5leHRTdGF0ZS5pc1ByZXZpZXcsXG4gICAgICAgICAgICAgICAgICAgIGhhc01pZGRsZXdhcmU6IGlzTWlkZGxld2FyZU1hdGNoXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKCdyb3V0ZScgaW4gcm91dGVJbmZvICYmIGlzTWlkZGxld2FyZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lID0gcm91dGVJbmZvLnJvdXRlIHx8IHJvdXRlO1xuICAgICAgICAgICAgICAgICAgICByb3V0ZSA9IHBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICAgICBxdWVyeSA9IE9iamVjdC5hc3NpZ24oe30sIHJvdXRlSW5mby5xdWVyeSB8fCB7fSwgcXVlcnkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocm91dGVNYXRjaCAmJiBwYXRobmFtZSAhPT0gcGFyc2VkLnBhdGhuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhyb3V0ZU1hdGNoKS5mb3JFYWNoKChrZXkpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJvdXRlTWF0Y2ggJiYgcXVlcnlba2V5XSA9PT0gcm91dGVNYXRjaFtrZXldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBxdWVyeVtrZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICgoMCwgX2lzRHluYW1pYykuaXNEeW5hbWljUm91dGUocGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVmaXhlZEFzID0gcm91dGVJbmZvLnJlc29sdmVkQXMgfHwgKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgoKDAsIF9hZGRMb2NhbGUpLmFkZExvY2FsZShhcywgbmV4dFN0YXRlLmxvY2FsZSksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJld3JpdGVBcyA9IHByZWZpeGVkQXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKDAsIF9oYXNCYXNlUGF0aCkuaGFzQmFzZVBhdGgocmV3cml0ZUFzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld3JpdGVBcyA9ICgwLCBfcmVtb3ZlQmFzZVBhdGgpLnJlbW92ZUJhc2VQYXRoKHJld3JpdGVBcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsZVJlc3VsdCA9ICgwLCBfbm9ybWFsaXplTG9jYWxlUGF0aCkubm9ybWFsaXplTG9jYWxlUGF0aChyZXdyaXRlQXMsIF90aGlzLmxvY2FsZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRTdGF0ZS5sb2NhbGUgPSBsb2NhbGVSZXN1bHQuZGV0ZWN0ZWRMb2NhbGUgfHwgbmV4dFN0YXRlLmxvY2FsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXdyaXRlQXMgPSBsb2NhbGVSZXN1bHQucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByb3V0ZVJlZ2V4ID0gKDAsIF9yb3V0ZVJlZ2V4KS5nZXRSb3V0ZVJlZ2V4KHBhdGhuYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1clJvdXRlTWF0Y2ggPSAoMCwgX3JvdXRlTWF0Y2hlcikuZ2V0Um91dGVNYXRjaGVyKHJvdXRlUmVnZXgpKHJld3JpdGVBcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VyUm91dGVNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocXVlcnksIGN1clJvdXRlTWF0Y2gpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIElmIHRoZSByb3V0ZUluZm8gYnJpbmdzIGEgcmVkaXJlY3Qgd2Ugc2ltcGx5IGFwcGx5IGl0LlxuICAgICAgICAgICAgICAgIGlmICgndHlwZScgaW4gcm91dGVJbmZvKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyb3V0ZUluZm8udHlwZSA9PT0gJ3JlZGlyZWN0LWludGVybmFsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmNoYW5nZShtZXRob2QsIHJvdXRlSW5mby5uZXdVcmwsIHJvdXRlSW5mby5uZXdBcywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiByb3V0ZUluZm8uZGVzdGluYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKCk9Pnt9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgeyBlcnJvciAsIHByb3BzICwgX19OX1NTRyAsIF9fTl9TU1AgIH0gPSByb3V0ZUluZm87XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gcm91dGVJbmZvLkNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50ICYmIGNvbXBvbmVudC51bnN0YWJsZV9zY3JpcHRMb2FkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2NyaXB0cyA9IFtdLmNvbmNhdChjb21wb25lbnQudW5zdGFibGVfc2NyaXB0TG9hZGVyKCkpO1xuICAgICAgICAgICAgICAgICAgICBzY3JpcHRzLmZvckVhY2goKHNjcmlwdCk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfc2NyaXB0KS5oYW5kbGVDbGllbnRTY3JpcHRMb2FkKHNjcmlwdC5wcm9wcyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBoYW5kbGUgcmVkaXJlY3Qgb24gY2xpZW50LXRyYW5zaXRpb25cbiAgICAgICAgICAgICAgICBpZiAoKF9fTl9TU0cgfHwgX19OX1NTUCkgJiYgcHJvcHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BzLnBhZ2VQcm9wcyAmJiBwcm9wcy5wYWdlUHJvcHMuX19OX1JFRElSRUNUKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2UgdGhlIGRlc3RpbmF0aW9uIGZyb20gcmVkaXJlY3Qgd2l0aG91dCBhZGRpbmcgbG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmxvY2FsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVzdGluYXRpb24gPSBwcm9wcy5wYWdlUHJvcHMuX19OX1JFRElSRUNUO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgZGVzdGluYXRpb24gaXMgaW50ZXJuYWwgKHJlc29sdmVzIHRvIGEgcGFnZSkgYW5kIGF0dGVtcHRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsaWVudC1uYXZpZ2F0aW9uIGlmIGl0IGlzIGZhbGxpbmcgYmFjayB0byBoYXJkIG5hdmlnYXRpb24gaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0J3Mgbm90XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVzdGluYXRpb24uc3RhcnRzV2l0aCgnLycpICYmIHByb3BzLnBhZ2VQcm9wcy5fX05fUkVESVJFQ1RfQkFTRV9QQVRIICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZEhyZWYgPSAoMCwgX3BhcnNlUmVsYXRpdmVVcmwpLnBhcnNlUmVsYXRpdmVVcmwoZGVzdGluYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZEhyZWYucGF0aG5hbWUgPSByZXNvbHZlRHluYW1pY1JvdXRlKHBhcnNlZEhyZWYucGF0aG5hbWUsIHBhZ2VzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHVybDogbmV3VXJsICwgYXM6IG5ld0FzICB9ID0gcHJlcGFyZVVybEFzKF90aGlzLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5jaGFuZ2UobWV0aG9kLCBuZXdVcmwsIG5ld0FzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUhhcmROYXZpZ2F0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGRlc3RpbmF0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlcjogX3RoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCgpPT57fSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbmV4dFN0YXRlLmlzUHJldmlldyA9ICEhcHJvcHMuX19OX1BSRVZJRVc7XG4gICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBTU0cgZGF0YSA0MDRcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BzLm5vdEZvdW5kID09PSBTU0dfREFUQV9OT1RfRk9VTkQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub3RGb3VuZFJvdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBfdGhpcy5mZXRjaENvbXBvbmVudCgnLzQwNCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdEZvdW5kUm91dGUgPSAnLzQwNCc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChfKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90Rm91bmRSb3V0ZSA9ICcvX2Vycm9yJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlSW5mbyA9IHlpZWxkIF90aGlzLmdldFJvdXRlSW5mbyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGU6IG5vdEZvdW5kUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWU6IG5vdEZvdW5kUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRBcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZVByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWxsb3c6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IG5leHRTdGF0ZS5sb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmV2aWV3OiBuZXh0U3RhdGUuaXNQcmV2aWV3XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgndHlwZScgaW4gcm91dGVJbmZvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIG1pZGRsZXdhcmUgZWZmZWN0IG9uIC80MDRgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBSb3V0ZXIuZXZlbnRzLmVtaXQoJ2JlZm9yZUhpc3RvcnlDaGFuZ2UnLCBhcywgcm91dGVQcm9wcyk7XG4gICAgICAgICAgICAgICAgX3RoaXMuY2hhbmdlU3RhdGUobWV0aG9kLCB1cmwsIGFzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNRdWVyeVVwZGF0aW5nICYmIHBhdGhuYW1lID09PSAnL19lcnJvcicgJiYgKChyZWYyID0gc2VsZi5fX05FWFRfREFUQV9fLnByb3BzKSA9PSBudWxsID8gdm9pZCAwIDogKHJlZjMgPSByZWYyLnBhZ2VQcm9wcykgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZjMuc3RhdHVzQ29kZSkgPT09IDUwMCAmJiAocHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IHByb3BzLnBhZ2VQcm9wcykpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZW5zdXJlIHN0YXR1c0NvZGUgaXMgc3RpbGwgY29ycmVjdCBmb3Igc3RhdGljIDUwMCBwYWdlXG4gICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXBkYXRpbmcgcXVlcnkgaW5mb3JtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgcHJvcHMucGFnZVByb3BzLnN0YXR1c0NvZGUgPSA1MDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBfcm91dGU7XG4gICAgICAgICAgICAgICAgLy8gc2hhbGxvdyByb3V0aW5nIGlzIG9ubHkgYWxsb3dlZCBmb3Igc2FtZSBwYWdlIFVSTCBjaGFuZ2VzLlxuICAgICAgICAgICAgICAgIGNvbnN0IGlzVmFsaWRTaGFsbG93Um91dGUgPSBvcHRpb25zLnNoYWxsb3cgJiYgbmV4dFN0YXRlLnJvdXRlID09PSAoKF9yb3V0ZSA9IHJvdXRlSW5mby5yb3V0ZSkgIT0gbnVsbCA/IF9yb3V0ZSA6IHJvdXRlKTtcbiAgICAgICAgICAgICAgICB2YXIgX3Njcm9sbDtcbiAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRTY3JvbGwgPSAoX3Njcm9sbCA9IG9wdGlvbnMuc2Nyb2xsKSAhPSBudWxsID8gX3Njcm9sbCA6ICFpc1ZhbGlkU2hhbGxvd1JvdXRlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc2V0U2Nyb2xsID0gc2hvdWxkU2Nyb2xsID8ge1xuICAgICAgICAgICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgICAgICAgICB5OiAwXG4gICAgICAgICAgICAgICAgfSA6IG51bGw7XG4gICAgICAgICAgICAgICAgeWllbGQgX3RoaXMuc2V0KF9leHRlbmRzKHt9LCBuZXh0U3RhdGUsIHtcbiAgICAgICAgICAgICAgICAgICAgcm91dGUsXG4gICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lLFxuICAgICAgICAgICAgICAgICAgICBxdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgYXNQYXRoOiBjbGVhbmVkQXMsXG4gICAgICAgICAgICAgICAgICAgIGlzRmFsbGJhY2s6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSksIHJvdXRlSW5mbywgZm9yY2VkU2Nyb2xsICE9IG51bGwgPyBmb3JjZWRTY3JvbGwgOiByZXNldFNjcm9sbCkuY2F0Y2goKGUpPT57XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLmNhbmNlbGxlZCkgZXJyb3IgPSBlcnJvciB8fCBlO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNRdWVyeVVwZGF0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBSb3V0ZXIuZXZlbnRzLmVtaXQoJ3JvdXRlQ2hhbmdlRXJyb3InLCBlcnJvciwgY2xlYW5lZEFzLCByb3V0ZVByb3BzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9JMThOX1NVUFBPUlQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRTdGF0ZS5sb2NhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nID0gbmV4dFN0YXRlLmxvY2FsZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIWlzUXVlcnlVcGRhdGluZykge1xuICAgICAgICAgICAgICAgICAgICBSb3V0ZXIuZXZlbnRzLmVtaXQoJ3JvdXRlQ2hhbmdlQ29tcGxldGUnLCBhcywgcm91dGVQcm9wcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEEgaGFzaCBtYXJrICMgaXMgdGhlIG9wdGlvbmFsIGxhc3QgcGFydCBvZiBhIFVSTFxuICAgICAgICAgICAgICAgIGNvbnN0IGhhc2hSZWdleCA9IC8jLiskLztcbiAgICAgICAgICAgICAgICBpZiAoc2hvdWxkU2Nyb2xsICYmIGhhc2hSZWdleC50ZXN0KGFzKSkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5zY3JvbGxUb0hhc2goYXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycjEpIHtcbiAgICAgICAgICAgICAgICBpZiAoKDAsIF9pc0Vycm9yKS5kZWZhdWx0KGVycjEpICYmIGVycjEuY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkoKTtcbiAgICB9XG4gICAgY2hhbmdlU3RhdGUobWV0aG9kLCB1cmwsIGFzLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93Lmhpc3RvcnkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgV2FybmluZzogd2luZG93Lmhpc3RvcnkgaXMgbm90IGF2YWlsYWJsZS5gKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdy5oaXN0b3J5W21ldGhvZF0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgV2FybmluZzogd2luZG93Lmhpc3RvcnkuJHttZXRob2R9IGlzIG5vdCBhdmFpbGFibGVgKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1ldGhvZCAhPT0gJ3B1c2hTdGF0ZScgfHwgKDAsIF91dGlscykuZ2V0VVJMKCkgIT09IGFzKSB7XG4gICAgICAgICAgICB0aGlzLl9zaGFsbG93ID0gb3B0aW9ucy5zaGFsbG93O1xuICAgICAgICAgICAgd2luZG93Lmhpc3RvcnlbbWV0aG9kXSh7XG4gICAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgICAgIGFzLFxuICAgICAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICAgICAgX19OOiB0cnVlLFxuICAgICAgICAgICAgICAgIGtleTogdGhpcy5fa2V5ID0gbWV0aG9kICE9PSAncHVzaFN0YXRlJyA/IHRoaXMuX2tleSA6IGNyZWF0ZUtleSgpXG4gICAgICAgICAgICB9LCAvLyBNb3N0IGJyb3dzZXJzIGN1cnJlbnRseSBpZ25vcmVzIHRoaXMgcGFyYW1ldGVyLCBhbHRob3VnaCB0aGV5IG1heSB1c2UgaXQgaW4gdGhlIGZ1dHVyZS5cbiAgICAgICAgICAgIC8vIFBhc3NpbmcgdGhlIGVtcHR5IHN0cmluZyBoZXJlIHNob3VsZCBiZSBzYWZlIGFnYWluc3QgZnV0dXJlIGNoYW5nZXMgdG8gdGhlIG1ldGhvZC5cbiAgICAgICAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IaXN0b3J5L3JlcGxhY2VTdGF0ZVxuICAgICAgICAgICAgJycsIGFzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBoYW5kbGVSb3V0ZUluZm9FcnJvcihlcnIsIHBhdGhuYW1lLCBxdWVyeSwgYXMsIHJvdXRlUHJvcHMsIGxvYWRFcnJvckZhaWwpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKigpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgIGlmIChlcnIuY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICAgICAgLy8gYnViYmxlIHVwIGNhbmNlbGxhdGlvbiBlcnJvcnNcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKDAsIF9yb3V0ZUxvYWRlcikuaXNBc3NldEVycm9yKGVycikgfHwgbG9hZEVycm9yRmFpbCkge1xuICAgICAgICAgICAgICAgIFJvdXRlci5ldmVudHMuZW1pdCgncm91dGVDaGFuZ2VFcnJvcicsIGVyciwgYXMsIHJvdXRlUHJvcHMpO1xuICAgICAgICAgICAgICAgIC8vIElmIHdlIGNhbid0IGxvYWQgdGhlIHBhZ2UgaXQgY291bGQgYmUgb25lIG9mIGZvbGxvd2luZyByZWFzb25zXG4gICAgICAgICAgICAgICAgLy8gIDEuIFBhZ2UgZG9lc24ndCBleGlzdHNcbiAgICAgICAgICAgICAgICAvLyAgMi4gUGFnZSBkb2VzIGV4aXN0IGluIGEgZGlmZmVyZW50IHpvbmVcbiAgICAgICAgICAgICAgICAvLyAgMy4gSW50ZXJuYWwgZXJyb3Igd2hpbGUgbG9hZGluZyB0aGUgcGFnZVxuICAgICAgICAgICAgICAgIC8vIFNvLCBkb2luZyBhIGhhcmQgcmVsb2FkIGlzIHRoZSBwcm9wZXIgd2F5IHRvIGRlYWwgd2l0aCB0aGlzLlxuICAgICAgICAgICAgICAgIGhhbmRsZUhhcmROYXZpZ2F0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBhcyxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vIENoYW5naW5nIHRoZSBVUkwgZG9lc24ndCBibG9jayBleGVjdXRpbmcgdGhlIGN1cnJlbnQgY29kZSBwYXRoLlxuICAgICAgICAgICAgICAgIC8vIFNvIGxldCdzIHRocm93IGEgY2FuY2VsbGF0aW9uIGVycm9yIHN0b3AgdGhlIHJvdXRpbmcgbG9naWMuXG4gICAgICAgICAgICAgICAgdGhyb3cgYnVpbGRDYW5jZWxsYXRpb25FcnJvcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgQ29tcG9uZW50O1xuICAgICAgICAgICAgICAgIGxldCBzdHlsZVNoZWV0cztcbiAgICAgICAgICAgICAgICBsZXQgcHJvcHM7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBDb21wb25lbnQgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiBzdHlsZVNoZWV0cyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgKHsgcGFnZTogQ29tcG9uZW50ICwgc3R5bGVTaGVldHMgIH0gPSB5aWVsZCBfdGhpcy5mZXRjaENvbXBvbmVudCgnL19lcnJvcicpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgcm91dGVJbmZvID0ge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgICAgICBzdHlsZVNoZWV0cyxcbiAgICAgICAgICAgICAgICAgICAgZXJyLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAoIXJvdXRlSW5mby5wcm9wcykge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVJbmZvLnByb3BzID0geWllbGQgX3RoaXMuZ2V0SW5pdGlhbFByb3BzKENvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGdpcEVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gZXJyb3IgcGFnZSBgZ2V0SW5pdGlhbFByb3BzYDogJywgZ2lwRXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlSW5mby5wcm9wcyA9IHt9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByb3V0ZUluZm87XG4gICAgICAgICAgICB9IGNhdGNoIChyb3V0ZUluZm9FcnIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuaGFuZGxlUm91dGVJbmZvRXJyb3IoKDAsIF9pc0Vycm9yKS5kZWZhdWx0KHJvdXRlSW5mb0VycikgPyByb3V0ZUluZm9FcnIgOiBuZXcgRXJyb3Iocm91dGVJbmZvRXJyICsgJycpLCBwYXRobmFtZSwgcXVlcnksIGFzLCByb3V0ZVByb3BzLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkoKTtcbiAgICB9XG4gICAgZ2V0Um91dGVJbmZvKHsgcm91dGU6IHJlcXVlc3RlZFJvdXRlICwgcGF0aG5hbWUgLCBxdWVyeSAsIGFzICwgcmVzb2x2ZWRBcyAsIHJvdXRlUHJvcHMgLCBsb2NhbGUgLCBoYXNNaWRkbGV3YXJlICwgaXNQcmV2aWV3ICwgdW5zdGFibGVfc2tpcENsaWVudENhY2hlICB9KSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiooKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgKiBUaGlzIGByb3V0ZWAgYmluZGluZyBjYW4gY2hhbmdlIGlmIHRoZXJlJ3MgYSByZXdyaXRlXG4gICAgICogc28gd2Uga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYWwgcmVxdWVzdGVkIHJvdXRlXG4gICAgICogc28gd2UgY2FuIHN0b3JlIHRoZSBjYWNoZSBmb3IgaXQgYW5kIGF2b2lkIHJlLXJlcXVlc3RpbmcgZXZlcnkgdGltZVxuICAgICAqIGZvciBzaGFsbG93IHJvdXRpbmcgcHVycG9zZXMuXG4gICAgICovIGxldCByb3V0ZSA9IHJlcXVlc3RlZFJvdXRlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB2YXIgcmVmLCByZWY0LCByZWY1O1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZUNhbmNlbGxlZCA9IGdldENhbmNlbGxlZEhhbmRsZXIoe1xuICAgICAgICAgICAgICAgICAgICByb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGxldCBleGlzdGluZ0luZm8gPSBfdGhpcy5jb21wb25lbnRzW3JvdXRlXTtcbiAgICAgICAgICAgICAgICBpZiAocm91dGVQcm9wcy5zaGFsbG93ICYmIGV4aXN0aW5nSW5mbyAmJiBfdGhpcy5yb3V0ZSA9PT0gcm91dGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4aXN0aW5nSW5mbztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IGNhY2hlZFJvdXRlSW5mbyA9IGV4aXN0aW5nSW5mbyAmJiAhKCdpbml0aWFsJyBpbiBleGlzdGluZ0luZm8pICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAnZGV2ZWxvcG1lbnQnID8gZXhpc3RpbmdJbmZvIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZldGNoTmV4dERhdGFQYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFIcmVmOiBfdGhpcy5wYWdlTG9hZGVyLmdldERhdGFIcmVmKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY6ICgwLCBfZm9ybWF0VXJsKS5mb3JtYXRXaXRoVmFsaWRhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2tpcEludGVycG9sYXRpb246IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBhc1BhdGg6IHJlc29sdmVkQXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIGhhc01pZGRsZXdhcmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGlzU2VydmVyUmVuZGVyOiBfdGhpcy5pc1NzcixcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VKU09OOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBpbmZsaWdodENhY2hlOiBfdGhpcy5zZGMsXG4gICAgICAgICAgICAgICAgICAgIHBlcnNpc3RDYWNoZTogIWlzUHJldmlldyxcbiAgICAgICAgICAgICAgICAgICAgaXNQcmVmZXRjaDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHVuc3RhYmxlX3NraXBDbGllbnRDYWNoZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIHdpdGhNaWRkbGV3YXJlRWZmZWN0cyh7XG4gICAgICAgICAgICAgICAgICAgIGZldGNoRGF0YTogKCk9PmZldGNoTmV4dERhdGEoZmV0Y2hOZXh0RGF0YVBhcmFtcyksXG4gICAgICAgICAgICAgICAgICAgIGFzUGF0aDogcmVzb2x2ZWRBcyxcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBsb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlcjogX3RoaXNcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBoYW5kbGVDYW5jZWxsZWQoKTtcbiAgICAgICAgICAgICAgICBpZiAoKGRhdGEgPT0gbnVsbCA/IHZvaWQgMCA6IChyZWYgPSBkYXRhLmVmZmVjdCkgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZi50eXBlKSA9PT0gJ3JlZGlyZWN0LWludGVybmFsJyB8fCAoZGF0YSA9PSBudWxsID8gdm9pZCAwIDogKHJlZjQgPSBkYXRhLmVmZmVjdCkgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZjQudHlwZSkgPT09ICdyZWRpcmVjdC1leHRlcm5hbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEuZWZmZWN0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoKGRhdGEgPT0gbnVsbCA/IHZvaWQgMCA6IChyZWY1ID0gZGF0YS5lZmZlY3QpID09IG51bGwgPyB2b2lkIDAgOiByZWY1LnR5cGUpID09PSAncmV3cml0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgcm91dGUgPSAoMCwgX3JlbW92ZVRyYWlsaW5nU2xhc2gpLnJlbW92ZVRyYWlsaW5nU2xhc2goZGF0YS5lZmZlY3QucmVzb2x2ZWRIcmVmKTtcbiAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUgPSBkYXRhLmVmZmVjdC5yZXNvbHZlZEhyZWY7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5ID0gX2V4dGVuZHMoe30sIHF1ZXJ5LCBkYXRhLmVmZmVjdC5wYXJzZWRBcy5xdWVyeSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQXMgPSBkYXRhLmVmZmVjdC5wYXJzZWRBcy5wYXRobmFtZTtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgYWdhaW4gdGhlIGNhY2hlIHdpdGggdGhlIG5ldyBkZXN0aW5hdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdJbmZvID0gX3RoaXMuY29tcG9uZW50c1tyb3V0ZV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChyb3V0ZVByb3BzLnNoYWxsb3cgJiYgZXhpc3RpbmdJbmZvICYmIF90aGlzLnJvdXRlID09PSByb3V0ZSAmJiAhaGFzTWlkZGxld2FyZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIG1hdGNoIHdpdGggdGhlIGN1cnJlbnQgcm91dGUgZHVlIHRvIHJld3JpdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBjYW4gY29weSB0aGUgZXhpc3RpbmcgaW5mb3JtYXRpb24gdG8gdGhlIHJld3JpdHRlbiBvbmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGVuLCB3ZSByZXR1cm4gdGhlIGluZm9ybWF0aW9uIGFsb25nIHdpdGggdGhlIG1hdGNoZWQgcm91dGUuXG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5jb21wb25lbnRzW3JlcXVlc3RlZFJvdXRlXSA9IF9leHRlbmRzKHt9LCBleGlzdGluZ0luZm8sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2V4dGVuZHMoe30sIGV4aXN0aW5nSW5mbywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYWNoZWRSb3V0ZUluZm8gPSBleGlzdGluZ0luZm8gJiYgISgnaW5pdGlhbCcgaW4gZXhpc3RpbmdJbmZvKSAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50JyA/IGV4aXN0aW5nSW5mbyA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJvdXRlID09PSAnL2FwaScgfHwgcm91dGUuc3RhcnRzV2l0aCgnL2FwaS8nKSkge1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFzLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCgpPT57fSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRlSW5mbyA9IGNhY2hlZFJvdXRlSW5mbyB8fCAoeWllbGQgX3RoaXMuZmV0Y2hDb21wb25lbnQocm91dGUpLnRoZW4oKHJlcyk9Pih7XG4gICAgICAgICAgICAgICAgICAgICAgICBDb21wb25lbnQ6IHJlcy5wYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVTaGVldHM6IHJlcy5zdHlsZVNoZWV0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9fTl9TU0c6IHJlcy5tb2QuX19OX1NTRyxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9fTl9TU1A6IHJlcy5tb2QuX19OX1NTUCxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9fTl9SU0M6ICEhcmVzLm1vZC5fX25leHRfcnNjX19cbiAgICAgICAgICAgICAgICAgICAgfSkpKTtcbiAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGlzVmFsaWRFbGVtZW50VHlwZSAgfSA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9yZWFjdC1pcycpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRFbGVtZW50VHlwZShyb3V0ZUluZm8uQ29tcG9uZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZGVmYXVsdCBleHBvcnQgaXMgbm90IGEgUmVhY3QgQ29tcG9uZW50IGluIHBhZ2U6IFwiJHtwYXRobmFtZX1cImApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICogRm9yIHNlcnZlciBjb21wb25lbnRzLCBub24tU1NSIHBhZ2VzIHdpbGwgaGF2ZSBzdGF0aWNhbGx5IG9wdGltaXplZFxuICAgICAgICogZmxpZ2h0IGRhdGEgaW4gYSBwcm9kdWN0aW9uIGJ1aWxkLiBTbyBvbmx5IGRldmVsb3BtZW50IGFuZCBTU1IgcGFnZXNcbiAgICAgICAqIHdpbGwgYWx3YXlzIGhhdmUgdGhlIHJlYWwtdGltZSBnZW5lcmF0ZWQgYW5kIHN0cmVhbWVkIGZsaWdodCBkYXRhLlxuICAgICAgICovIGNvbnN0IHVzZVN0cmVhbWVkRmxpZ2h0RGF0YSA9IHJvdXRlSW5mby5fX05fUlNDICYmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nIHx8IHJvdXRlSW5mby5fX05fU1NQKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRGZXRjaERhdGEgPSByb3V0ZUluZm8uX19OX1NTRyB8fCByb3V0ZUluZm8uX19OX1NTUCB8fCByb3V0ZUluZm8uX19OX1JTQztcbiAgICAgICAgICAgICAgICBjb25zdCB7IHByb3BzICB9ID0geWllbGQgX3RoaXMuX2dldERhdGEoX2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkRmV0Y2hEYXRhICYmICF1c2VTdHJlYW1lZEZsaWdodERhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsganNvbiAgfSA9IGRhdGEgfHwgKHlpZWxkIGZldGNoTmV4dERhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFIcmVmOiBfdGhpcy5wYWdlTG9hZGVyLmdldERhdGFIcmVmKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZjogKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzUGF0aDogcmVzb2x2ZWRBcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTZXJ2ZXJSZW5kZXI6IF90aGlzLmlzU3NyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSlNPTjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZsaWdodENhY2hlOiBfdGhpcy5zZGMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc2lzdENhY2hlOiAhaXNQcmV2aWV3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUHJlZmV0Y2g6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc3RhYmxlX3NraXBDbGllbnRDYWNoZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wczoganNvblxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge30sXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogeWllbGQgX3RoaXMuZ2V0SW5pdGlhbFByb3BzKHJvdXRlSW5mby5Db21wb25lbnQsIC8vIHdlIHByb3ZpZGUgQXBwVHJlZSBsYXRlciBzbyB0aGlzIG5lZWRzIHRvIGJlIGBhbnlgXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNQYXRoOiBhcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlczogX3RoaXMubG9jYWxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TG9jYWxlOiBfdGhpcy5kZWZhdWx0TG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAvLyBPbmx5IGJ1c3QgdGhlIGRhdGEgY2FjaGUgZm9yIFNTUCByb3V0ZXMgYWx0aG91Z2hcbiAgICAgICAgICAgICAgICAvLyBtaWRkbGV3YXJlIGNhbiBza2lwIGNhY2hlIHBlciByZXF1ZXN0IHdpdGhcbiAgICAgICAgICAgICAgICAvLyB4LW1pZGRsZXdhcmUtY2FjaGU6IG5vLWNhY2hlIGFzIHdlbGxcbiAgICAgICAgICAgICAgICBpZiAocm91dGVJbmZvLl9fTl9TU1AgJiYgZmV0Y2hOZXh0RGF0YVBhcmFtcy5kYXRhSHJlZikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYWNoZUtleSA9IG5ldyBVUkwoZmV0Y2hOZXh0RGF0YVBhcmFtcy5kYXRhSHJlZiwgd2luZG93LmxvY2F0aW9uLmhyZWYpLmhyZWY7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBfdGhpcy5zZGNbY2FjaGVLZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyB3ZSBraWNrIG9mZiBhIEhFQUQgcmVxdWVzdCBpbiB0aGUgYmFja2dyb3VuZFxuICAgICAgICAgICAgICAgIC8vIHdoZW4gYSBub24tcHJlZmV0Y2ggcmVxdWVzdCBpcyBtYWRlIHRvIHNpZ25hbCByZXZhbGlkYXRpb25cbiAgICAgICAgICAgICAgICBpZiAoIV90aGlzLmlzUHJldmlldyAmJiByb3V0ZUluZm8uX19OX1NTRyAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgICAgICAgICBmZXRjaE5leHREYXRhKE9iamVjdC5hc3NpZ24oe30sIGZldGNoTmV4dERhdGFQYXJhbXMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQmFja2dyb3VuZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNpc3RDYWNoZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmZsaWdodENhY2hlOiBiYWNrZ3JvdW5kQ2FjaGVcbiAgICAgICAgICAgICAgICAgICAgfSkpLmNhdGNoKCgpPT57fSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBmbGlnaHRJbmZvO1xuICAgICAgICAgICAgICAgIGlmIChyb3V0ZUluZm8uX19OX1JTQykge1xuICAgICAgICAgICAgICAgICAgICBmbGlnaHRJbmZvID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgX19mbGlnaHRfXzogdXNlU3RyZWFtZWRGbGlnaHREYXRhID8gKHlpZWxkIF90aGlzLl9nZXREYXRhKCgpPT5fdGhpcy5fZ2V0RmxpZ2h0RGF0YSgoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeTogX2V4dGVuZHMoe30sIHF1ZXJ5LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2ZsaWdodF9fOiAnMSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lOiAoMCwgX2lzRHluYW1pYykuaXNEeW5hbWljUm91dGUocm91dGUpID8gaW50ZXJwb2xhdGVBcyhwYXRobmFtZSwgKDAsIF9wYXJzZVJlbGF0aXZlVXJsKS5wYXJzZVJlbGF0aXZlVXJsKHJlc29sdmVkQXMpLnBhdGhuYW1lLCBxdWVyeSkucmVzdWx0IDogcGF0aG5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpKS5kYXRhIDogcHJvcHMuX19mbGlnaHRfX1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwcm9wcy5wYWdlUHJvcHMgPSBPYmplY3QuYXNzaWduKHt9LCBwcm9wcy5wYWdlUHJvcHMsIGZsaWdodEluZm8pO1xuICAgICAgICAgICAgICAgIHJvdXRlSW5mby5wcm9wcyA9IHByb3BzO1xuICAgICAgICAgICAgICAgIHJvdXRlSW5mby5yb3V0ZSA9IHJvdXRlO1xuICAgICAgICAgICAgICAgIHJvdXRlSW5mby5xdWVyeSA9IHF1ZXJ5O1xuICAgICAgICAgICAgICAgIHJvdXRlSW5mby5yZXNvbHZlZEFzID0gcmVzb2x2ZWRBcztcbiAgICAgICAgICAgICAgICBfdGhpcy5jb21wb25lbnRzW3JvdXRlXSA9IHJvdXRlSW5mbztcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcm91dGUgd2FzIHJld3JpdHRlbiBpbiB0aGUgcHJvY2VzcyBvZiBmZXRjaGluZyBkYXRhLFxuICAgICAgICAgICAgICAgIC8vIHdlIHVwZGF0ZSB0aGUgY2FjaGUgdG8gYWxsb3cgaGl0dGluZyB0aGUgc2FtZSBkYXRhIGZvciBzaGFsbG93IHJlcXVlc3RzLlxuICAgICAgICAgICAgICAgIGlmIChyb3V0ZSAhPT0gcmVxdWVzdGVkUm91dGUpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuY29tcG9uZW50c1tyZXF1ZXN0ZWRSb3V0ZV0gPSBfZXh0ZW5kcyh7fSwgcm91dGVJbmZvLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3V0ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvdXRlSW5mbztcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5oYW5kbGVSb3V0ZUluZm9FcnJvcigoMCwgX2lzRXJyb3IpLmdldFByb3BlckVycm9yKGVyciksIHBhdGhuYW1lLCBxdWVyeSwgYXMsIHJvdXRlUHJvcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSgpO1xuICAgIH1cbiAgICBzZXQoc3RhdGUsIGRhdGEsIHJlc2V0U2Nyb2xsKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViKGRhdGEsIHRoaXMuY29tcG9uZW50c1snL19hcHAnXS5Db21wb25lbnQsIHJlc2V0U2Nyb2xsKTtcbiAgICB9XG4gICAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGV4ZWN1dGUgYmVmb3JlIHJlcGxhY2luZyByb3V0ZXIgc3RhdGVcbiAgICogQHBhcmFtIGNiIGNhbGxiYWNrIHRvIGJlIGV4ZWN1dGVkXG4gICAqLyBiZWZvcmVQb3BTdGF0ZShjYikge1xuICAgICAgICB0aGlzLl9icHMgPSBjYjtcbiAgICB9XG4gICAgb25seUFIYXNoQ2hhbmdlKGFzKSB7XG4gICAgICAgIGlmICghdGhpcy5hc1BhdGgpIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgW29sZFVybE5vSGFzaCwgb2xkSGFzaF0gPSB0aGlzLmFzUGF0aC5zcGxpdCgnIycpO1xuICAgICAgICBjb25zdCBbbmV3VXJsTm9IYXNoLCBuZXdIYXNoXSA9IGFzLnNwbGl0KCcjJyk7XG4gICAgICAgIC8vIE1ha2VzIHN1cmUgd2Ugc2Nyb2xsIHRvIHRoZSBwcm92aWRlZCBoYXNoIGlmIHRoZSB1cmwvaGFzaCBhcmUgdGhlIHNhbWVcbiAgICAgICAgaWYgKG5ld0hhc2ggJiYgb2xkVXJsTm9IYXNoID09PSBuZXdVcmxOb0hhc2ggJiYgb2xkSGFzaCA9PT0gbmV3SGFzaCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgdGhlIHVybHMgYXJlIGNoYW5nZSwgdGhlcmUncyBtb3JlIHRoYW4gYSBoYXNoIGNoYW5nZVxuICAgICAgICBpZiAob2xkVXJsTm9IYXNoICE9PSBuZXdVcmxOb0hhc2gpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB0aGUgaGFzaCBoYXMgY2hhbmdlZCwgdGhlbiBpdCdzIGEgaGFzaCBvbmx5IGNoYW5nZS5cbiAgICAgICAgLy8gVGhpcyBjaGVjayBpcyBuZWNlc3NhcnkgdG8gaGFuZGxlIGJvdGggdGhlIGVudGVyIGFuZFxuICAgICAgICAvLyBsZWF2ZSBoYXNoID09PSAnJyBjYXNlcy4gVGhlIGlkZW50aXR5IGNhc2UgZmFsbHMgdGhyb3VnaFxuICAgICAgICAvLyBhbmQgaXMgdHJlYXRlZCBhcyBhIG5leHQgcmVsb2FkLlxuICAgICAgICByZXR1cm4gb2xkSGFzaCAhPT0gbmV3SGFzaDtcbiAgICB9XG4gICAgc2Nyb2xsVG9IYXNoKGFzKSB7XG4gICAgICAgIGNvbnN0IFssIGhhc2ggPSAnJ10gPSBhcy5zcGxpdCgnIycpO1xuICAgICAgICAvLyBTY3JvbGwgdG8gdG9wIGlmIHRoZSBoYXNoIGlzIGp1c3QgYCNgIHdpdGggbm8gdmFsdWUgb3IgYCN0b3BgXG4gICAgICAgIC8vIFRvIG1pcnJvciBicm93c2Vyc1xuICAgICAgICBpZiAoaGFzaCA9PT0gJycgfHwgaGFzaCA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBEZWNvZGUgaGFzaCB0byBtYWtlIG5vbi1sYXRpbiBhbmNob3Igd29ya3MuXG4gICAgICAgIGNvbnN0IHJhd0hhc2ggPSBkZWNvZGVVUklDb21wb25lbnQoaGFzaCk7XG4gICAgICAgIC8vIEZpcnN0IHdlIGNoZWNrIGlmIHRoZSBlbGVtZW50IGJ5IGlkIGlzIGZvdW5kXG4gICAgICAgIGNvbnN0IGlkRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChyYXdIYXNoKTtcbiAgICAgICAgaWYgKGlkRWwpIHtcbiAgICAgICAgICAgIGlkRWwuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB0aGVyZSdzIG5vIGVsZW1lbnQgd2l0aCB0aGUgaWQsIHdlIGNoZWNrIHRoZSBgbmFtZWAgcHJvcGVydHlcbiAgICAgICAgLy8gVG8gbWlycm9yIGJyb3dzZXJzXG4gICAgICAgIGNvbnN0IG5hbWVFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKHJhd0hhc2gpWzBdO1xuICAgICAgICBpZiAobmFtZUVsKSB7XG4gICAgICAgICAgICBuYW1lRWwuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB1cmxJc05ldyhhc1BhdGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXNQYXRoICE9PSBhc1BhdGg7XG4gICAgfVxuICAgIC8qKlxuICAgKiBQcmVmZXRjaCBwYWdlIGNvZGUsIHlvdSBtYXkgd2FpdCBmb3IgdGhlIGRhdGEgZHVyaW5nIHBhZ2UgcmVuZGVyaW5nLlxuICAgKiBUaGlzIGZlYXR1cmUgb25seSB3b3JrcyBpbiBwcm9kdWN0aW9uIVxuICAgKiBAcGFyYW0gdXJsIHRoZSBocmVmIG9mIHByZWZldGNoZWQgcGFnZVxuICAgKiBAcGFyYW0gYXNQYXRoIHRoZSBhcyBwYXRoIG9mIHRoZSBwcmVmZXRjaGVkIHBhZ2VcbiAgICovIHByZWZldGNoKHVybCwgYXNQYXRoID0gdXJsLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKigpIHtcbiAgICAgICAgICAgIGxldCBwYXJzZWQgPSAoMCwgX3BhcnNlUmVsYXRpdmVVcmwpLnBhcnNlUmVsYXRpdmVVcmwodXJsKTtcbiAgICAgICAgICAgIGxldCB7IHBhdGhuYW1lICwgcXVlcnkgIH0gPSBwYXJzZWQ7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmxvY2FsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUgPSAoMCwgX25vcm1hbGl6ZUxvY2FsZVBhdGgpLm5vcm1hbGl6ZUxvY2FsZVBhdGgocGF0aG5hbWUsIF90aGlzLmxvY2FsZXMpLnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICAgICBwYXJzZWQucGF0aG5hbWUgPSBwYXRobmFtZTtcbiAgICAgICAgICAgICAgICAgICAgdXJsID0gKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHBhcnNlZCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJzZWRBcyA9ICgwLCBfcGFyc2VSZWxhdGl2ZVVybCkucGFyc2VSZWxhdGl2ZVVybChhc1BhdGgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGVQYXRoUmVzdWx0ID0gKDAsIF9ub3JtYWxpemVMb2NhbGVQYXRoKS5ub3JtYWxpemVMb2NhbGVQYXRoKHBhcnNlZEFzLnBhdGhuYW1lLCBfdGhpcy5sb2NhbGVzKTtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkQXMucGF0aG5hbWUgPSBsb2NhbGVQYXRoUmVzdWx0LnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmxvY2FsZSA9IGxvY2FsZVBhdGhSZXN1bHQuZGV0ZWN0ZWRMb2NhbGUgfHwgX3RoaXMuZGVmYXVsdExvY2FsZTtcbiAgICAgICAgICAgICAgICAgICAgYXNQYXRoID0gKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHBhcnNlZEFzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwYWdlcyA9IHlpZWxkIF90aGlzLnBhZ2VMb2FkZXIuZ2V0UGFnZUxpc3QoKTtcbiAgICAgICAgICAgIGxldCByZXNvbHZlZEFzID0gYXNQYXRoO1xuICAgICAgICAgICAgY29uc3QgbG9jYWxlID0gdHlwZW9mIG9wdGlvbnMubG9jYWxlICE9PSAndW5kZWZpbmVkJyA/IG9wdGlvbnMubG9jYWxlIHx8IHVuZGVmaW5lZCA6IF90aGlzLmxvY2FsZTtcbiAgICAgICAgICAgIGNvbnN0IGlzTWlkZGxld2FyZU1hdGNoID0geWllbGQgbWF0Y2hlc01pZGRsZXdhcmUoe1xuICAgICAgICAgICAgICAgIGFzUGF0aDogYXNQYXRoLFxuICAgICAgICAgICAgICAgIGxvY2FsZTogbG9jYWxlLFxuICAgICAgICAgICAgICAgIHJvdXRlcjogX3RoaXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9IQVNfUkVXUklURVMgJiYgYXNQYXRoLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICAgICAgICAgIGxldCByZXdyaXRlcztcbiAgICAgICAgICAgICAgICAoeyBfX3Jld3JpdGVzOiByZXdyaXRlcyAgfSA9IHlpZWxkICgwLCBfcm91dGVMb2FkZXIpLmdldENsaWVudEJ1aWxkTWFuaWZlc3QoKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmV3cml0ZXNSZXN1bHQgPSAoMCwgX3Jlc29sdmVSZXdyaXRlcykuZGVmYXVsdCgoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aCgoMCwgX2FkZExvY2FsZSkuYWRkTG9jYWxlKGFzUGF0aCwgX3RoaXMubG9jYWxlKSwgdHJ1ZSksIHBhZ2VzLCByZXdyaXRlcywgcGFyc2VkLnF1ZXJ5LCAocCk9PnJlc29sdmVEeW5hbWljUm91dGUocCwgcGFnZXMpLCBfdGhpcy5sb2NhbGVzKTtcbiAgICAgICAgICAgICAgICBpZiAocmV3cml0ZXNSZXN1bHQuZXh0ZXJuYWxEZXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzb2x2ZWRBcyA9ICgwLCBfcmVtb3ZlTG9jYWxlKS5yZW1vdmVMb2NhbGUoKDAsIF9yZW1vdmVCYXNlUGF0aCkucmVtb3ZlQmFzZVBhdGgocmV3cml0ZXNSZXN1bHQuYXNQYXRoKSwgX3RoaXMubG9jYWxlKTtcbiAgICAgICAgICAgICAgICBpZiAocmV3cml0ZXNSZXN1bHQubWF0Y2hlZFBhZ2UgJiYgcmV3cml0ZXNSZXN1bHQucmVzb2x2ZWRIcmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoaXMgZGlyZWN0bHkgbWF0Y2hlcyBhIHBhZ2Ugd2UgbmVlZCB0byB1cGRhdGUgdGhlIGhyZWYgdG9cbiAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3cgdGhlIGNvcnJlY3QgcGFnZSBjaHVuayB0byBiZSBsb2FkZWRcbiAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUgPSByZXdyaXRlc1Jlc3VsdC5yZXNvbHZlZEhyZWY7XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZC5wYXRobmFtZSA9IHBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTWlkZGxld2FyZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24ocGFyc2VkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcnNlZC5wYXRobmFtZSA9IHJlc29sdmVEeW5hbWljUm91dGUocGFyc2VkLnBhdGhuYW1lLCBwYWdlcyk7XG4gICAgICAgICAgICBpZiAoKDAsIF9pc0R5bmFtaWMpLmlzRHluYW1pY1JvdXRlKHBhcnNlZC5wYXRobmFtZSkpIHtcbiAgICAgICAgICAgICAgICBwYXRobmFtZSA9IHBhcnNlZC5wYXRobmFtZTtcbiAgICAgICAgICAgICAgICBwYXJzZWQucGF0aG5hbWUgPSBwYXRobmFtZTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHF1ZXJ5LCAoMCwgX3JvdXRlTWF0Y2hlcikuZ2V0Um91dGVNYXRjaGVyKCgwLCBfcm91dGVSZWdleCkuZ2V0Um91dGVSZWdleChwYXJzZWQucGF0aG5hbWUpKSgoMCwgX3BhcnNlUGF0aCkucGFyc2VQYXRoKGFzUGF0aCkucGF0aG5hbWUpIHx8IHt9KTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzTWlkZGxld2FyZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHVybCA9ICgwLCBfZm9ybWF0VXJsKS5mb3JtYXRXaXRoVmFsaWRhdGlvbihwYXJzZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFByZWZldGNoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gZGV2ZWxvcG1lbnQgbW9kZSBiZWNhdXNlIGl0IHdvdWxkIHRyaWdnZXIgb24tZGVtYW5kLWVudHJpZXNcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVE9ETzogaWYgdGhlIHJvdXRlIG1pZGRsZXdhcmUncyBkYXRhIHJlcXVlc3RcbiAgICAgICAgICAgIC8vIHJlc29sdmVzIHRvIGlzIG5vdCBhbiBTU0cgcm91dGUgd2Ugc2hvdWxkIGJ1c3QgdGhlIGNhY2hlXG4gICAgICAgICAgICAvLyBidXQgd2Ugc2hvdWxkbid0IGFsbG93IHByZWZldGNoIHRvIGtlZXAgdHJpZ2dlcmluZ1xuICAgICAgICAgICAgLy8gcmVxdWVzdHMgZm9yIFNTUCBwYWdlc1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIHdpdGhNaWRkbGV3YXJlRWZmZWN0cyh7XG4gICAgICAgICAgICAgICAgZmV0Y2hEYXRhOiAoKT0+ZmV0Y2hOZXh0RGF0YSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhSHJlZjogX3RoaXMucGFnZUxvYWRlci5nZXREYXRhSHJlZih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZjogKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcEludGVycG9sYXRpb246IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNQYXRoOiByZXNvbHZlZEFzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNNaWRkbGV3YXJlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNTZXJ2ZXJSZW5kZXI6IF90aGlzLmlzU3NyLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VKU09OOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5mbGlnaHRDYWNoZTogX3RoaXMuc2RjLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGVyc2lzdENhY2hlOiAhX3RoaXMuaXNQcmV2aWV3LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmVmZXRjaDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBhc1BhdGg6IGFzUGF0aCxcbiAgICAgICAgICAgICAgICBsb2NhbGU6IGxvY2FsZSxcbiAgICAgICAgICAgICAgICByb3V0ZXI6IF90aGlzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8qKlxuICAgICAqIElmIHRoZXJlIHdhcyBhIHJld3JpdGUgd2UgYXBwbHkgdGhlIGVmZmVjdHMgb2YgdGhlIHJld3JpdGUgb24gdGhlXG4gICAgICogY3VycmVudCBwYXJhbWV0ZXJzIGZvciB0aGUgcHJlZmV0Y2guXG4gICAgICovIGlmICgoZGF0YSA9PSBudWxsID8gdm9pZCAwIDogZGF0YS5lZmZlY3QudHlwZSkgPT09ICdyZXdyaXRlJykge1xuICAgICAgICAgICAgICAgIHBhcnNlZC5wYXRobmFtZSA9IGRhdGEuZWZmZWN0LnJlc29sdmVkSHJlZjtcbiAgICAgICAgICAgICAgICBwYXRobmFtZSA9IGRhdGEuZWZmZWN0LnJlc29sdmVkSHJlZjtcbiAgICAgICAgICAgICAgICBxdWVyeSA9IF9leHRlbmRzKHt9LCBxdWVyeSwgZGF0YS5lZmZlY3QucGFyc2VkQXMucXVlcnkpO1xuICAgICAgICAgICAgICAgIHJlc29sdmVkQXMgPSBkYXRhLmVmZmVjdC5wYXJzZWRBcy5wYXRobmFtZTtcbiAgICAgICAgICAgICAgICB1cmwgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24ocGFyc2VkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qKlxuICAgICAqIElmIHRoZXJlIGlzIGEgcmVkaXJlY3QgdG8gYW4gZXh0ZXJuYWwgZGVzdGluYXRpb24gdGhlbiB3ZSBkb24ndCBoYXZlXG4gICAgICogdG8gcHJlZmV0Y2ggY29udGVudCBhcyBpdCB3aWxsIGJlIHVudXNlZC5cbiAgICAgKi8gaWYgKChkYXRhID09IG51bGwgPyB2b2lkIDAgOiBkYXRhLmVmZmVjdC50eXBlKSA9PT0gJ3JlZGlyZWN0LWV4dGVybmFsJykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJvdXRlID0gKDAsIF9yZW1vdmVUcmFpbGluZ1NsYXNoKS5yZW1vdmVUcmFpbGluZ1NsYXNoKHBhdGhuYW1lKTtcbiAgICAgICAgICAgIHlpZWxkIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICBfdGhpcy5wYWdlTG9hZGVyLl9pc1NzZyhyb3V0ZSkudGhlbigoaXNTc2cpPT57XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpc1NzZyA/IGZldGNoTmV4dERhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUhyZWY6IChkYXRhID09IG51bGwgPyB2b2lkIDAgOiBkYXRhLmRhdGFIcmVmKSB8fCBfdGhpcy5wYWdlTG9hZGVyLmdldERhdGFIcmVmKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmOiB1cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNQYXRoOiByZXNvbHZlZEFzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZTogbG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VydmVyUmVuZGVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSlNPTjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZmxpZ2h0Q2FjaGU6IF90aGlzLnNkYyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNpc3RDYWNoZTogIV90aGlzLmlzUHJldmlldyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUHJlZmV0Y2g6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB1bnN0YWJsZV9za2lwQ2xpZW50Q2FjaGU6IG9wdGlvbnMudW5zdGFibGVfc2tpcENsaWVudENhY2hlIHx8IG9wdGlvbnMucHJpb3JpdHlcbiAgICAgICAgICAgICAgICAgICAgfSkudGhlbigoKT0+ZmFsc2UpIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgX3RoaXMucGFnZUxvYWRlcltvcHRpb25zLnByaW9yaXR5ID8gJ2xvYWRQYWdlJyA6ICdwcmVmZXRjaCddKHJvdXRlKSwgXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfSkoKTtcbiAgICB9XG4gICAgZmV0Y2hDb21wb25lbnQocm91dGUpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKigpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZUNhbmNlbGxlZCA9IGdldENhbmNlbGxlZEhhbmRsZXIoe1xuICAgICAgICAgICAgICAgIHJvdXRlLFxuICAgICAgICAgICAgICAgIHJvdXRlcjogX3RoaXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZXN1bHQgPSB5aWVsZCBfdGhpcy5wYWdlTG9hZGVyLmxvYWRQYWdlKHJvdXRlKTtcbiAgICAgICAgICAgICAgICBoYW5kbGVDYW5jZWxsZWQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9uZW50UmVzdWx0O1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlQ2FuY2VsbGVkKCk7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSgpO1xuICAgIH1cbiAgICBfZ2V0RGF0YShmbikge1xuICAgICAgICBsZXQgY2FuY2VsbGVkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGNhbmNlbCA9ICgpPT57XG4gICAgICAgICAgICBjYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNsYyA9IGNhbmNlbDtcbiAgICAgICAgcmV0dXJuIGZuKCkudGhlbigoZGF0YSk9PntcbiAgICAgICAgICAgIGlmIChjYW5jZWwgPT09IHRoaXMuY2xjKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGMgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNhbmNlbGxlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcignTG9hZGluZyBpbml0aWFsIHByb3BzIGNhbmNlbGxlZCcpO1xuICAgICAgICAgICAgICAgIGVyci5jYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX2dldEZsaWdodERhdGEoZGF0YUhyZWYpIHtcbiAgICAgICAgLy8gRG8gbm90IGNhY2hlIFJTQyBmbGlnaHQgcmVzcG9uc2Ugc2luY2UgaXQncyBub3QgYSBzdGF0aWMgcmVzb3VyY2VcbiAgICAgICAgcmV0dXJuIGZldGNoTmV4dERhdGEoe1xuICAgICAgICAgICAgZGF0YUhyZWYsXG4gICAgICAgICAgICBpc1NlcnZlclJlbmRlcjogdHJ1ZSxcbiAgICAgICAgICAgIHBhcnNlSlNPTjogZmFsc2UsXG4gICAgICAgICAgICBpbmZsaWdodENhY2hlOiB0aGlzLnNkYyxcbiAgICAgICAgICAgIHBlcnNpc3RDYWNoZTogZmFsc2UsXG4gICAgICAgICAgICBpc1ByZWZldGNoOiBmYWxzZVxuICAgICAgICB9KS50aGVuKCh7IHRleHQgIH0pPT4oe1xuICAgICAgICAgICAgICAgIGRhdGE6IHRleHRcbiAgICAgICAgICAgIH0pKTtcbiAgICB9XG4gICAgZ2V0SW5pdGlhbFByb3BzKENvbXBvbmVudCwgY3R4KSB7XG4gICAgICAgIGNvbnN0IHsgQ29tcG9uZW50OiBBcHAgIH0gPSB0aGlzLmNvbXBvbmVudHNbJy9fYXBwJ107XG4gICAgICAgIGNvbnN0IEFwcFRyZWUgPSB0aGlzLl93cmFwQXBwKEFwcCk7XG4gICAgICAgIGN0eC5BcHBUcmVlID0gQXBwVHJlZTtcbiAgICAgICAgcmV0dXJuICgwLCBfdXRpbHMpLmxvYWRHZXRJbml0aWFsUHJvcHMoQXBwLCB7XG4gICAgICAgICAgICBBcHBUcmVlLFxuICAgICAgICAgICAgQ29tcG9uZW50LFxuICAgICAgICAgICAgcm91dGVyOiB0aGlzLFxuICAgICAgICAgICAgY3R4XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXQgcm91dGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLnJvdXRlO1xuICAgIH1cbiAgICBnZXQgcGF0aG5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLnBhdGhuYW1lO1xuICAgIH1cbiAgICBnZXQgcXVlcnkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLnF1ZXJ5O1xuICAgIH1cbiAgICBnZXQgYXNQYXRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5hc1BhdGg7XG4gICAgfVxuICAgIGdldCBsb2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLmxvY2FsZTtcbiAgICB9XG4gICAgZ2V0IGlzRmFsbGJhY2soKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLmlzRmFsbGJhY2s7XG4gICAgfVxuICAgIGdldCBpc1ByZXZpZXcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLmlzUHJldmlldztcbiAgICB9XG4gICAgY29uc3RydWN0b3IocGF0aG5hbWUxLCBxdWVyeTEsIGFzMSwgeyBpbml0aWFsUHJvcHMgLCBwYWdlTG9hZGVyICwgQXBwICwgd3JhcEFwcCAsIENvbXBvbmVudCAsIGVyciAsIHN1YnNjcmlwdGlvbiAsIGlzRmFsbGJhY2sgLCBsb2NhbGUgLCBsb2NhbGVzICwgZGVmYXVsdExvY2FsZSAsIGRvbWFpbkxvY2FsZXMgLCBpc1ByZXZpZXcgLCBpc1JzYyAgfSl7XG4gICAgICAgIC8vIFNlcnZlciBEYXRhIENhY2hlXG4gICAgICAgIHRoaXMuc2RjID0ge307XG4gICAgICAgIHRoaXMuaXNGaXJzdFBvcFN0YXRlRXZlbnQgPSB0cnVlO1xuICAgICAgICB0aGlzLl9rZXkgPSBjcmVhdGVLZXkoKTtcbiAgICAgICAgdGhpcy5vblBvcFN0YXRlID0gKGUpPT57XG4gICAgICAgICAgICBjb25zdCB7IGlzRmlyc3RQb3BTdGF0ZUV2ZW50ICB9ID0gdGhpcztcbiAgICAgICAgICAgIHRoaXMuaXNGaXJzdFBvcFN0YXRlRXZlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gZS5zdGF0ZTtcbiAgICAgICAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgICAgICAgICAvLyBXZSBnZXQgc3RhdGUgYXMgdW5kZWZpbmVkIGZvciB0d28gcmVhc29ucy5cbiAgICAgICAgICAgICAgICAvLyAgMS4gV2l0aCBvbGRlciBzYWZhcmkgKDwgOCkgYW5kIG9sZGVyIGNocm9tZSAoPCAzNClcbiAgICAgICAgICAgICAgICAvLyAgMi4gV2hlbiB0aGUgVVJMIGNoYW5nZWQgd2l0aCAjXG4gICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAvLyBJbiB0aGUgYm90aCBjYXNlcywgd2UgZG9uJ3QgbmVlZCB0byBwcm9jZWVkIGFuZCBjaGFuZ2UgdGhlIHJvdXRlLlxuICAgICAgICAgICAgICAgIC8vIChhcyBpdCdzIGFscmVhZHkgY2hhbmdlZClcbiAgICAgICAgICAgICAgICAvLyBCdXQgd2UgY2FuIHNpbXBseSByZXBsYWNlIHRoZSBzdGF0ZSB3aXRoIHRoZSBuZXcgY2hhbmdlcy5cbiAgICAgICAgICAgICAgICAvLyBBY3R1YWxseSwgZm9yICgxKSB3ZSBkb24ndCBuZWVkIHRvIG5vdGhpbmcuIEJ1dCBpdCdzIGhhcmQgdG8gZGV0ZWN0IHRoYXQgZXZlbnQuXG4gICAgICAgICAgICAgICAgLy8gU28sIGRvaW5nIHRoZSBmb2xsb3dpbmcgZm9yICgxKSBkb2VzIG5vIGhhcm0uXG4gICAgICAgICAgICAgICAgY29uc3QgeyBwYXRobmFtZSAsIHF1ZXJ5ICB9ID0gdGhpcztcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVN0YXRlKCdyZXBsYWNlU3RhdGUnLCAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICBwYXRobmFtZTogKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgocGF0aG5hbWUpLFxuICAgICAgICAgICAgICAgICAgICBxdWVyeVxuICAgICAgICAgICAgICAgIH0pLCAoMCwgX3V0aWxzKS5nZXRVUkwoKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gX19OQSBpcyB1c2VkIHRvIGlkZW50aWZ5IGlmIHRoZSBoaXN0b3J5IGVudHJ5IGNhbiBiZSBoYW5kbGVkIGJ5IHRoZSBhcHAtcm91dGVyLlxuICAgICAgICAgICAgaWYgKHN0YXRlLl9fTkEpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFzdGF0ZS5fX04pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBTYWZhcmkgZmlyZXMgcG9wc3RhdGVldmVudCB3aGVuIHJlb3BlbmluZyB0aGUgYnJvd3Nlci5cbiAgICAgICAgICAgIGlmIChpc0ZpcnN0UG9wU3RhdGVFdmVudCAmJiB0aGlzLmxvY2FsZSA9PT0gc3RhdGUub3B0aW9ucy5sb2NhbGUgJiYgc3RhdGUuYXMgPT09IHRoaXMuYXNQYXRoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGZvcmNlZFNjcm9sbDtcbiAgICAgICAgICAgIGNvbnN0IHsgdXJsICwgYXMgLCBvcHRpb25zICwga2V5ICB9ID0gc3RhdGU7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1NDUk9MTF9SRVNUT1JBVElPTikge1xuICAgICAgICAgICAgICAgIGlmIChtYW51YWxTY3JvbGxSZXN0b3JhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fa2V5ICE9PSBrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNuYXBzaG90IGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uOlxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdfX25leHRfc2Nyb2xsXycgKyB0aGlzLl9rZXksIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogc2VsZi5wYWdlWE9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogc2VsZi5wYWdlWU9mZnNldFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXN0b3JlIG9sZCBzY3JvbGwgcG9zaXRpb246XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHYgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdfX25leHRfc2Nyb2xsXycgKyBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlZFNjcm9sbCA9IEpTT04ucGFyc2Uodik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlZFNjcm9sbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9rZXkgPSBrZXk7XG4gICAgICAgICAgICBjb25zdCB7IHBhdGhuYW1lICB9ID0gKDAsIF9wYXJzZVJlbGF0aXZlVXJsKS5wYXJzZVJlbGF0aXZlVXJsKHVybCk7XG4gICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgcmUtcmVuZGVyIG9uIGluaXRpYWwgbG9hZCxcbiAgICAgICAgICAgIC8vIGNhbiBiZSBjYXVzZWQgYnkgbmF2aWdhdGluZyBiYWNrIGZyb20gYW4gZXh0ZXJuYWwgc2l0ZVxuICAgICAgICAgICAgaWYgKHRoaXMuaXNTc3IgJiYgYXMgPT09ICgwLCBfYWRkQmFzZVBhdGgpLmFkZEJhc2VQYXRoKHRoaXMuYXNQYXRoKSAmJiBwYXRobmFtZSA9PT0gKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgodGhpcy5wYXRobmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJZiB0aGUgZG93bnN0cmVhbSBhcHBsaWNhdGlvbiByZXR1cm5zIGZhbHN5LCByZXR1cm4uXG4gICAgICAgICAgICAvLyBUaGV5IHdpbGwgdGhlbiBiZSByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhlIGV2ZW50LlxuICAgICAgICAgICAgaWYgKHRoaXMuX2JwcyAmJiAhdGhpcy5fYnBzKHN0YXRlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlKCdyZXBsYWNlU3RhdGUnLCB1cmwsIGFzLCBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zLCB7XG4gICAgICAgICAgICAgICAgc2hhbGxvdzogb3B0aW9ucy5zaGFsbG93ICYmIHRoaXMuX3NoYWxsb3csXG4gICAgICAgICAgICAgICAgbG9jYWxlOiBvcHRpb25zLmxvY2FsZSB8fCB0aGlzLmRlZmF1bHRMb2NhbGUsXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBpbnRlcm5hbCB2YWx1ZSBub3QgZXhwb3NlZCBvbiB0eXBlc1xuICAgICAgICAgICAgICAgIF9oOiAwXG4gICAgICAgICAgICB9KSwgZm9yY2VkU2Nyb2xsKTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gcmVwcmVzZW50cyB0aGUgY3VycmVudCBjb21wb25lbnQga2V5XG4gICAgICAgIGNvbnN0IHJvdXRlID0gKDAsIF9yZW1vdmVUcmFpbGluZ1NsYXNoKS5yZW1vdmVUcmFpbGluZ1NsYXNoKHBhdGhuYW1lMSk7XG4gICAgICAgIC8vIHNldCB1cCB0aGUgY29tcG9uZW50IGNhY2hlIChieSByb3V0ZSBrZXlzKVxuICAgICAgICB0aGlzLmNvbXBvbmVudHMgPSB7fTtcbiAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBrZWVwIHRoZSBjYWNoZSwgaWYgdGhlcmUncyBhbiBlcnJvclxuICAgICAgICAvLyBPdGhlcndpc2UsIHRoaXMgY2F1c2UgaXNzdWVzIHdoZW4gd2hlbiBnb2luZyBiYWNrIGFuZFxuICAgICAgICAvLyBjb21lIGFnYWluIHRvIHRoZSBlcnJvcmVkIHBhZ2UuXG4gICAgICAgIGlmIChwYXRobmFtZTEgIT09ICcvX2Vycm9yJykge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRzW3JvdXRlXSA9IHtcbiAgICAgICAgICAgICAgICBDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgaW5pdGlhbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBwcm9wczogaW5pdGlhbFByb3BzLFxuICAgICAgICAgICAgICAgIGVycixcbiAgICAgICAgICAgICAgICBfX05fU1NHOiBpbml0aWFsUHJvcHMgJiYgaW5pdGlhbFByb3BzLl9fTl9TU0csXG4gICAgICAgICAgICAgICAgX19OX1NTUDogaW5pdGlhbFByb3BzICYmIGluaXRpYWxQcm9wcy5fX05fU1NQLFxuICAgICAgICAgICAgICAgIF9fTl9SU0M6ICEhaXNSc2NcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb21wb25lbnRzWycvX2FwcCddID0ge1xuICAgICAgICAgICAgQ29tcG9uZW50OiBBcHAsXG4gICAgICAgICAgICBzdHlsZVNoZWV0czogW11cbiAgICAgICAgfTtcbiAgICAgICAgLy8gQmFja3dhcmRzIGNvbXBhdCBmb3IgUm91dGVyLnJvdXRlci5ldmVudHNcbiAgICAgICAgLy8gVE9ETzogU2hvdWxkIGJlIHJlbW92ZSB0aGUgZm9sbG93aW5nIG1ham9yIHZlcnNpb24gYXMgaXQgd2FzIG5ldmVyIGRvY3VtZW50ZWRcbiAgICAgICAgdGhpcy5ldmVudHMgPSBSb3V0ZXIuZXZlbnRzO1xuICAgICAgICB0aGlzLnBhZ2VMb2FkZXIgPSBwYWdlTG9hZGVyO1xuICAgICAgICAvLyBpZiBhdXRvIHByZXJlbmRlcmVkIGFuZCBkeW5hbWljIHJvdXRlIHdhaXQgdG8gdXBkYXRlIGFzUGF0aFxuICAgICAgICAvLyB1bnRpbCBhZnRlciBtb3VudCB0byBwcmV2ZW50IGh5ZHJhdGlvbiBtaXNtYXRjaFxuICAgICAgICBjb25zdCBhdXRvRXhwb3J0RHluYW1pYyA9ICgwLCBfaXNEeW5hbWljKS5pc0R5bmFtaWNSb3V0ZShwYXRobmFtZTEpICYmIHNlbGYuX19ORVhUX0RBVEFfXy5hdXRvRXhwb3J0O1xuICAgICAgICB0aGlzLmJhc2VQYXRoID0gcHJvY2Vzcy5lbnYuX19ORVhUX1JPVVRFUl9CQVNFUEFUSCB8fCAnJztcbiAgICAgICAgdGhpcy5zdWIgPSBzdWJzY3JpcHRpb247XG4gICAgICAgIHRoaXMuY2xjID0gbnVsbDtcbiAgICAgICAgdGhpcy5fd3JhcEFwcCA9IHdyYXBBcHA7XG4gICAgICAgIC8vIG1ha2Ugc3VyZSB0byBpZ25vcmUgZXh0cmEgcG9wU3RhdGUgaW4gc2FmYXJpIG9uIG5hdmlnYXRpbmdcbiAgICAgICAgLy8gYmFjayBmcm9tIGV4dGVybmFsIHNpdGVcbiAgICAgICAgdGhpcy5pc1NzciA9IHRydWU7XG4gICAgICAgIHRoaXMuaXNMb2NhbGVEb21haW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1JlYWR5ID0gISEoc2VsZi5fX05FWFRfREFUQV9fLmdzc3AgfHwgc2VsZi5fX05FWFRfREFUQV9fLmdpcCB8fCBzZWxmLl9fTkVYVF9EQVRBX18uYXBwR2lwICYmICFzZWxmLl9fTkVYVF9EQVRBX18uZ3NwIHx8ICFhdXRvRXhwb3J0RHluYW1pYyAmJiAhc2VsZi5sb2NhdGlvbi5zZWFyY2ggJiYgIXByb2Nlc3MuZW52Ll9fTkVYVF9IQVNfUkVXUklURVMpO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICAgICAgdGhpcy5sb2NhbGVzID0gbG9jYWxlcztcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdExvY2FsZSA9IGRlZmF1bHRMb2NhbGU7XG4gICAgICAgICAgICB0aGlzLmRvbWFpbkxvY2FsZXMgPSBkb21haW5Mb2NhbGVzO1xuICAgICAgICAgICAgdGhpcy5pc0xvY2FsZURvbWFpbiA9ICEhKDAsIF9kZXRlY3REb21haW5Mb2NhbGUpLmRldGVjdERvbWFpbkxvY2FsZShkb21haW5Mb2NhbGVzLCBzZWxmLmxvY2F0aW9uLmhvc3RuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgcm91dGUsXG4gICAgICAgICAgICBwYXRobmFtZTogcGF0aG5hbWUxLFxuICAgICAgICAgICAgcXVlcnk6IHF1ZXJ5MSxcbiAgICAgICAgICAgIGFzUGF0aDogYXV0b0V4cG9ydER5bmFtaWMgPyBwYXRobmFtZTEgOiBhczEsXG4gICAgICAgICAgICBpc1ByZXZpZXc6ICEhaXNQcmV2aWV3LFxuICAgICAgICAgICAgbG9jYWxlOiBwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUID8gbG9jYWxlIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgaXNGYWxsYmFja1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9pbml0aWFsTWF0Y2hlc01pZGRsZXdhcmVQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAvLyBtYWtlIHN1cmUgXCJhc1wiIGRvZXNuJ3Qgc3RhcnQgd2l0aCBkb3VibGUgc2xhc2hlcyBvciBlbHNlIGl0IGNhblxuICAgICAgICAgICAgLy8gdGhyb3cgYW4gZXJyb3IgYXMgaXQncyBjb25zaWRlcmVkIGludmFsaWRcbiAgICAgICAgICAgIGlmICghYXMxLnN0YXJ0c1dpdGgoJy8vJykpIHtcbiAgICAgICAgICAgICAgICAvLyBpbiBvcmRlciBmb3IgYGUuc3RhdGVgIHRvIHdvcmsgb24gdGhlIGBvbnBvcHN0YXRlYCBldmVudFxuICAgICAgICAgICAgICAgIC8vIHdlIGhhdmUgdG8gcmVnaXN0ZXIgdGhlIGluaXRpYWwgcm91dGUgdXBvbiBpbml0aWFsaXphdGlvblxuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgYXNQYXRoID0gKDAsIF91dGlscykuZ2V0VVJMKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5faW5pdGlhbE1hdGNoZXNNaWRkbGV3YXJlUHJvbWlzZSA9IG1hdGNoZXNNaWRkbGV3YXJlKHtcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiB0aGlzLFxuICAgICAgICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgIGFzUGF0aFxuICAgICAgICAgICAgICAgIH0pLnRoZW4oKG1hdGNoZXMpPT57XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuX3Nob3VsZFJlc29sdmVIcmVmID0gYXMxICE9PSBwYXRobmFtZTE7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlU3RhdGUoJ3JlcGxhY2VTdGF0ZScsIG1hdGNoZXMgPyBhc1BhdGggOiAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWU6ICgwLCBfYWRkQmFzZVBhdGgpLmFkZEJhc2VQYXRoKHBhdGhuYW1lMSksXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVyeTogcXVlcnkxXG4gICAgICAgICAgICAgICAgICAgIH0pLCBhc1BhdGgsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hlcztcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwb3BzdGF0ZScsIHRoaXMub25Qb3BTdGF0ZSk7XG4gICAgICAgICAgICAvLyBlbmFibGUgY3VzdG9tIHNjcm9sbCByZXN0b3JhdGlvbiBoYW5kbGluZyB3aGVuIGF2YWlsYWJsZVxuICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGZhbGxiYWNrIHRvIGJyb3dzZXIncyBkZWZhdWx0IGhhbmRsaW5nXG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1NDUk9MTF9SRVNUT1JBVElPTikge1xuICAgICAgICAgICAgICAgIGlmIChtYW51YWxTY3JvbGxSZXN0b3JhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuaGlzdG9yeS5zY3JvbGxSZXN0b3JhdGlvbiA9ICdtYW51YWwnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblJvdXRlci5ldmVudHMgPSAoMCwgX21pdHQpLmRlZmF1bHQoKTtcbmZ1bmN0aW9uIG1hdGNoZXNNaWRkbGV3YXJlKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG9wdGlvbnMucm91dGVyLnBhZ2VMb2FkZXIuZ2V0TWlkZGxld2FyZUxpc3QoKSkudGhlbigoaXRlbXMpPT57XG4gICAgICAgIGNvbnN0IHsgcGF0aG5hbWU6IGFzUGF0aG5hbWUgIH0gPSAoMCwgX3BhcnNlUGF0aCkucGFyc2VQYXRoKG9wdGlvbnMuYXNQYXRoKTtcbiAgICAgICAgY29uc3QgY2xlYW5lZEFzID0gKDAsIF9oYXNCYXNlUGF0aCkuaGFzQmFzZVBhdGgoYXNQYXRobmFtZSkgPyAoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChhc1BhdGhuYW1lKSA6IGFzUGF0aG5hbWU7XG4gICAgICAgIHJldHVybiAhIShpdGVtcyA9PSBudWxsID8gdm9pZCAwIDogaXRlbXMuc29tZSgoW3JlZ2V4LCBzc3JdKT0+e1xuICAgICAgICAgICAgcmV0dXJuICFzc3IgJiYgbmV3IFJlZ0V4cChyZWdleCkudGVzdCgoMCwgX2FkZExvY2FsZSkuYWRkTG9jYWxlKGNsZWFuZWRBcywgb3B0aW9ucy5sb2NhbGUpKTtcbiAgICAgICAgfSkpO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gd2l0aE1pZGRsZXdhcmVFZmZlY3RzKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbWF0Y2hlc01pZGRsZXdhcmUob3B0aW9ucykudGhlbigobWF0Y2hlcyk9PntcbiAgICAgICAgaWYgKG1hdGNoZXMgJiYgb3B0aW9ucy5mZXRjaERhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmZldGNoRGF0YSgpLnRoZW4oKGRhdGEpPT5nZXRNaWRkbGV3YXJlRGF0YShkYXRhLmRhdGFIcmVmLCBkYXRhLnJlc3BvbnNlLCBvcHRpb25zKS50aGVuKChlZmZlY3QpPT4oe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUhyZWY6IGRhdGEuZGF0YUhyZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uOiBkYXRhLmpzb24sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZTogZGF0YS5yZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGRhdGEudGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVmZmVjdFxuICAgICAgICAgICAgICAgICAgICB9KSkpLmNhdGNoKChfZXJyKT0+e1xuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIFRPRE86IFJldmlzaXQgdGhpcyBpbiB0aGUgZnV0dXJlLlxuICAgICAgICAgICAqIEZvciBub3cgd2Ugd2lsbCBub3QgY29uc2lkZXIgbWlkZGxld2FyZSBkYXRhIGVycm9ycyB0byBiZSBmYXRhbC5cbiAgICAgICAgICAgKiBtYXliZSB3ZSBzaG91bGQgcmV2aXNpdCBpbiB0aGUgZnV0dXJlLlxuICAgICAgICAgICAqLyByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZ2V0TWlkZGxld2FyZURhdGEoc291cmNlLCByZXNwb25zZSwgb3B0aW9ucykge1xuICAgIGNvbnN0IG5leHRDb25maWcgPSB7XG4gICAgICAgIGJhc2VQYXRoOiBvcHRpb25zLnJvdXRlci5iYXNlUGF0aCxcbiAgICAgICAgaTE4bjoge1xuICAgICAgICAgICAgbG9jYWxlczogb3B0aW9ucy5yb3V0ZXIubG9jYWxlc1xuICAgICAgICB9LFxuICAgICAgICB0cmFpbGluZ1NsYXNoOiBCb29sZWFuKHByb2Nlc3MuZW52Ll9fTkVYVF9UUkFJTElOR19TTEFTSClcbiAgICB9O1xuICAgIGNvbnN0IHJld3JpdGVIZWFkZXIgPSByZXNwb25zZS5oZWFkZXJzLmdldCgneC1uZXh0anMtcmV3cml0ZScpO1xuICAgIGxldCByZXdyaXRlVGFyZ2V0ID0gcmV3cml0ZUhlYWRlciB8fCByZXNwb25zZS5oZWFkZXJzLmdldCgneC1uZXh0anMtbWF0Y2hlZC1wYXRoJyk7XG4gICAgY29uc3QgbWF0Y2hlZFBhdGggPSByZXNwb25zZS5oZWFkZXJzLmdldCgneC1tYXRjaGVkLXBhdGgnKTtcbiAgICBpZiAoIXJld3JpdGVUYXJnZXQgJiYgIShtYXRjaGVkUGF0aCA9PSBudWxsID8gdm9pZCAwIDogbWF0Y2hlZFBhdGguaW5jbHVkZXMoJ19fbmV4dF9kYXRhX2NhdGNoYWxsJykpKSB7XG4gICAgICAgIHJld3JpdGVUYXJnZXQgPSBtYXRjaGVkUGF0aDtcbiAgICB9XG4gICAgaWYgKHJld3JpdGVUYXJnZXQpIHtcbiAgICAgICAgaWYgKHJld3JpdGVUYXJnZXQuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWRSZXdyaXRlVGFyZ2V0ID0gKDAsIF9wYXJzZVJlbGF0aXZlVXJsKS5wYXJzZVJlbGF0aXZlVXJsKHJld3JpdGVUYXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgcGF0aG5hbWVJbmZvID0gKDAsIF9nZXROZXh0UGF0aG5hbWVJbmZvKS5nZXROZXh0UGF0aG5hbWVJbmZvKHBhcnNlZFJld3JpdGVUYXJnZXQucGF0aG5hbWUsIHtcbiAgICAgICAgICAgICAgICBuZXh0Q29uZmlnLFxuICAgICAgICAgICAgICAgIHBhcnNlRGF0YTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBmc1BhdGhuYW1lID0gKDAsIF9yZW1vdmVUcmFpbGluZ1NsYXNoKS5yZW1vdmVUcmFpbGluZ1NsYXNoKHBhdGhuYW1lSW5mby5wYXRobmFtZSk7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgICAgIG9wdGlvbnMucm91dGVyLnBhZ2VMb2FkZXIuZ2V0UGFnZUxpc3QoKSxcbiAgICAgICAgICAgICAgICAoMCwgX3JvdXRlTG9hZGVyKS5nZXRDbGllbnRCdWlsZE1hbmlmZXN0KCksIFxuICAgICAgICAgICAgXSkudGhlbigoW3BhZ2VzLCB7IF9fcmV3cml0ZXM6IHJld3JpdGVzICB9XSk9PntcbiAgICAgICAgICAgICAgICBsZXQgYXMgPSAoMCwgX2FkZExvY2FsZSkuYWRkTG9jYWxlKHBhdGhuYW1lSW5mby5wYXRobmFtZSwgcGF0aG5hbWVJbmZvLmxvY2FsZSk7XG4gICAgICAgICAgICAgICAgaWYgKCgwLCBfaXNEeW5hbWljKS5pc0R5bmFtaWNSb3V0ZShhcykgfHwgIXJld3JpdGVIZWFkZXIgJiYgcGFnZXMuaW5jbHVkZXMoKDAsIF9ub3JtYWxpemVMb2NhbGVQYXRoKS5ub3JtYWxpemVMb2NhbGVQYXRoKCgwLCBfcmVtb3ZlQmFzZVBhdGgpLnJlbW92ZUJhc2VQYXRoKGFzKSwgb3B0aW9ucy5yb3V0ZXIubG9jYWxlcykucGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZFNvdXJjZSA9ICgwLCBfZ2V0TmV4dFBhdGhuYW1lSW5mbykuZ2V0TmV4dFBhdGhuYW1lSW5mbygoMCwgX3BhcnNlUmVsYXRpdmVVcmwpLnBhcnNlUmVsYXRpdmVVcmwoc291cmNlKS5wYXRobmFtZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VEYXRhOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBhcyA9ICgwLCBfYWRkQmFzZVBhdGgpLmFkZEJhc2VQYXRoKHBhcnNlZFNvdXJjZS5wYXRobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZFJld3JpdGVUYXJnZXQucGF0aG5hbWUgPSBhcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9IQVNfUkVXUklURVMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gKDAsIF9yZXNvbHZlUmV3cml0ZXMpLmRlZmF1bHQoYXMsIHBhZ2VzLCByZXdyaXRlcywgcGFyc2VkUmV3cml0ZVRhcmdldC5xdWVyeSwgKHBhdGgpPT5yZXNvbHZlRHluYW1pY1JvdXRlKHBhdGgsIHBhZ2VzKSwgb3B0aW9ucy5yb3V0ZXIubG9jYWxlcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubWF0Y2hlZFBhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFJld3JpdGVUYXJnZXQucGF0aG5hbWUgPSByZXN1bHQucGFyc2VkQXMucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcyA9IHBhcnNlZFJld3JpdGVUYXJnZXQucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHBhcnNlZFJld3JpdGVUYXJnZXQucXVlcnksIHJlc3VsdC5wYXJzZWRBcy5xdWVyeSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRIcmVmID0gIXBhZ2VzLmluY2x1ZGVzKGZzUGF0aG5hbWUpID8gcmVzb2x2ZUR5bmFtaWNSb3V0ZSgoMCwgX25vcm1hbGl6ZUxvY2FsZVBhdGgpLm5vcm1hbGl6ZUxvY2FsZVBhdGgoKDAsIF9yZW1vdmVCYXNlUGF0aCkucmVtb3ZlQmFzZVBhdGgocGFyc2VkUmV3cml0ZVRhcmdldC5wYXRobmFtZSksIG9wdGlvbnMucm91dGVyLmxvY2FsZXMpLnBhdGhuYW1lLCBwYWdlcykgOiBmc1BhdGhuYW1lO1xuICAgICAgICAgICAgICAgIGlmICgoMCwgX2lzRHluYW1pYykuaXNEeW5hbWljUm91dGUocmVzb2x2ZWRIcmVmKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGVzID0gKDAsIF9yb3V0ZU1hdGNoZXIpLmdldFJvdXRlTWF0Y2hlcigoMCwgX3JvdXRlUmVnZXgpLmdldFJvdXRlUmVnZXgocmVzb2x2ZWRIcmVmKSkoYXMpO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHBhcnNlZFJld3JpdGVUYXJnZXQucXVlcnksIG1hdGNoZXMgfHwge30pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAncmV3cml0ZScsXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZEFzOiBwYXJzZWRSZXdyaXRlVGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZEhyZWZcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3JjID0gKDAsIF9wYXJzZVBhdGgpLnBhcnNlUGF0aChzb3VyY2UpO1xuICAgICAgICBjb25zdCBwYXRobmFtZSA9ICgwLCBfZm9ybWF0TmV4dFBhdGhuYW1lSW5mbykuZm9ybWF0TmV4dFBhdGhuYW1lSW5mbyhfZXh0ZW5kcyh7fSwgKDAsIF9nZXROZXh0UGF0aG5hbWVJbmZvKS5nZXROZXh0UGF0aG5hbWVJbmZvKHNyYy5wYXRobmFtZSwge1xuICAgICAgICAgICAgbmV4dENvbmZpZyxcbiAgICAgICAgICAgIHBhcnNlRGF0YTogdHJ1ZVxuICAgICAgICB9KSwge1xuICAgICAgICAgICAgZGVmYXVsdExvY2FsZTogb3B0aW9ucy5yb3V0ZXIuZGVmYXVsdExvY2FsZSxcbiAgICAgICAgICAgIGJ1aWxkSWQ6ICcnXG4gICAgICAgIH0pKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgICB0eXBlOiAncmVkaXJlY3QtZXh0ZXJuYWwnLFxuICAgICAgICAgICAgZGVzdGluYXRpb246IGAke3BhdGhuYW1lfSR7c3JjLnF1ZXJ5fSR7c3JjLmhhc2h9YFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgcmVkaXJlY3RUYXJnZXQgPSByZXNwb25zZS5oZWFkZXJzLmdldCgneC1uZXh0anMtcmVkaXJlY3QnKTtcbiAgICBpZiAocmVkaXJlY3RUYXJnZXQpIHtcbiAgICAgICAgaWYgKHJlZGlyZWN0VGFyZ2V0LnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICAgICAgY29uc3Qgc3JjID0gKDAsIF9wYXJzZVBhdGgpLnBhcnNlUGF0aChyZWRpcmVjdFRhcmdldCk7XG4gICAgICAgICAgICBjb25zdCBwYXRobmFtZSA9ICgwLCBfZm9ybWF0TmV4dFBhdGhuYW1lSW5mbykuZm9ybWF0TmV4dFBhdGhuYW1lSW5mbyhfZXh0ZW5kcyh7fSwgKDAsIF9nZXROZXh0UGF0aG5hbWVJbmZvKS5nZXROZXh0UGF0aG5hbWVJbmZvKHNyYy5wYXRobmFtZSwge1xuICAgICAgICAgICAgICAgIG5leHRDb25maWcsXG4gICAgICAgICAgICAgICAgcGFyc2VEYXRhOiB0cnVlXG4gICAgICAgICAgICB9KSwge1xuICAgICAgICAgICAgICAgIGRlZmF1bHRMb2NhbGU6IG9wdGlvbnMucm91dGVyLmRlZmF1bHRMb2NhbGUsXG4gICAgICAgICAgICAgICAgYnVpbGRJZDogJydcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdyZWRpcmVjdC1pbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgbmV3QXM6IGAke3BhdGhuYW1lfSR7c3JjLnF1ZXJ5fSR7c3JjLmhhc2h9YCxcbiAgICAgICAgICAgICAgICBuZXdVcmw6IGAke3BhdGhuYW1lfSR7c3JjLnF1ZXJ5fSR7c3JjLmhhc2h9YFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgICB0eXBlOiAncmVkaXJlY3QtZXh0ZXJuYWwnLFxuICAgICAgICAgICAgZGVzdGluYXRpb246IHJlZGlyZWN0VGFyZ2V0XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgdHlwZTogJ25leHQnXG4gICAgfSk7XG59XG5leHBvcnRzLmRlZmF1bHQgPSBSb3V0ZXI7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJvdXRlci5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJpc0xvY2FsVVJMIiwiaW50ZXJwb2xhdGVBcyIsInJlc29sdmVIcmVmIiwiY3JlYXRlS2V5IiwiZGVmYXVsdCIsIl9ub3JtYWxpemVUcmFpbGluZ1NsYXNoIiwicmVxdWlyZSIsIl9yZW1vdmVUcmFpbGluZ1NsYXNoIiwiX3JvdXRlTG9hZGVyIiwiX3NjcmlwdCIsIl9pc0Vycm9yIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfZGVub3JtYWxpemVQYWdlUGF0aCIsIl9ub3JtYWxpemVMb2NhbGVQYXRoIiwiX21pdHQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3V0aWxzIiwiX2lzRHluYW1pYyIsIl9wYXJzZVJlbGF0aXZlVXJsIiwiX3F1ZXJ5c3RyaW5nIiwiX3Jlc29sdmVSZXdyaXRlcyIsIl9yb3V0ZU1hdGNoZXIiLCJfcm91dGVSZWdleCIsIl9mb3JtYXRVcmwiLCJfZGV0ZWN0RG9tYWluTG9jYWxlIiwiX3BhcnNlUGF0aCIsIl9hZGRMb2NhbGUiLCJfcmVtb3ZlTG9jYWxlIiwiX3JlbW92ZUJhc2VQYXRoIiwiX2FkZEJhc2VQYXRoIiwiX2hhc0Jhc2VQYXRoIiwiX2dldE5leHRQYXRobmFtZUluZm8iLCJfZm9ybWF0TmV4dFBhdGhuYW1lSW5mbyIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsInJlc29sdmUiLCJyZWplY3QiLCJfbmV4dCIsIl90aHJvdyIsImtleSIsImFyZyIsImluZm8iLCJlcnJvciIsImRvbmUiLCJQcm9taXNlIiwidGhlbiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiZm4iLCJzZWxmIiwiYXJncyIsImFyZ3VtZW50cyIsImFwcGx5IiwiZXJyIiwidW5kZWZpbmVkIiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJ0YXJnZXQiLCJpIiwibGVuZ3RoIiwic291cmNlIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwib2JqIiwiX19lc01vZHVsZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIldlYWtNYXAiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImRlc2MiLCJzZXQiLCJidWlsZENhbmNlbGxhdGlvbkVycm9yIiwiRXJyb3IiLCJjYW5jZWxsZWQiLCJ1cmwiLCJpc0Fic29sdXRlVXJsIiwibG9jYXRpb25PcmlnaW4iLCJnZXRMb2NhdGlvbk9yaWdpbiIsInJlc29sdmVkIiwiVVJMIiwib3JpZ2luIiwiaGFzQmFzZVBhdGgiLCJwYXRobmFtZSIsIl8iLCJyb3V0ZSIsImFzUGF0aG5hbWUiLCJxdWVyeSIsImludGVycG9sYXRlZFJvdXRlIiwiZHluYW1pY1JlZ2V4IiwiZ2V0Um91dGVSZWdleCIsImR5bmFtaWNHcm91cHMiLCJncm91cHMiLCJkeW5hbWljTWF0Y2hlcyIsImdldFJvdXRlTWF0Y2hlciIsInBhcmFtcyIsImtleXMiLCJldmVyeSIsInBhcmFtIiwicmVwZWF0Iiwib3B0aW9uYWwiLCJyZXBsYWNlZCIsIkFycmF5IiwiaXNBcnJheSIsInJlcGxhY2UiLCJtYXAiLCJzZWdtZW50IiwiZW5jb2RlVVJJQ29tcG9uZW50Iiwiam9pbiIsInJlc3VsdCIsIm9taXQiLCJvYmplY3QiLCJvbWl0dGVkIiwiZm9yRWFjaCIsImluY2x1ZGVzIiwicm91dGVyIiwiaHJlZiIsInJlc29sdmVBcyIsImJhc2UiLCJ1cmxBc1N0cmluZyIsImZvcm1hdFdpdGhWYWxpZGF0aW9uIiwidXJsUHJvdG9NYXRjaCIsIm1hdGNoIiwidXJsQXNTdHJpbmdOb1Byb3RvIiwic2xpY2UiLCJ1cmxQYXJ0cyIsInNwbGl0IiwiY29uc29sZSIsIm5vcm1hbGl6ZWRVcmwiLCJub3JtYWxpemVSZXBlYXRlZFNsYXNoZXMiLCJzdGFydHNXaXRoIiwiYXNQYXRoIiwiZmluYWxVcmwiLCJub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaCIsImludGVycG9sYXRlZEFzIiwiaXNEeW5hbWljUm91dGUiLCJzZWFyY2hQYXJhbXMiLCJzZWFyY2hQYXJhbXNUb1VybFF1ZXJ5IiwiaGFzaCIsInJlc29sdmVkSHJlZiIsIl8xIiwic3RyaXBPcmlnaW4iLCJzdWJzdHJpbmciLCJwcmVwYXJlVXJsQXMiLCJhcyIsInJlc29sdmVkQXMiLCJocmVmSGFkT3JpZ2luIiwiYXNIYWRPcmlnaW4iLCJwcmVwYXJlZFVybCIsImFkZEJhc2VQYXRoIiwicHJlcGFyZWRBcyIsInJlc29sdmVEeW5hbWljUm91dGUiLCJwYWdlcyIsImNsZWFuUGF0aG5hbWUiLCJyZW1vdmVUcmFpbGluZ1NsYXNoIiwiZGVub3JtYWxpemVQYWdlUGF0aCIsInNvbWUiLCJwYWdlIiwicmUiLCJ0ZXN0IiwibWFudWFsU2Nyb2xsUmVzdG9yYXRpb24iLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1NDUk9MTF9SRVNUT1JBVElPTiIsIndpbmRvdyIsImhpc3RvcnkiLCJ2Iiwic2Vzc2lvblN0b3JhZ2UiLCJzZXRJdGVtIiwicmVtb3ZlSXRlbSIsIm4iLCJTU0dfREFUQV9OT1RfRk9VTkQiLCJTeW1ib2wiLCJmZXRjaFJldHJ5IiwiYXR0ZW1wdHMiLCJvcHRpb25zIiwiZmV0Y2giLCJjcmVkZW50aWFscyIsIm1ldGhvZCIsImhlYWRlcnMiLCJyZXNwb25zZSIsIm9rIiwic3RhdHVzIiwiYmFja2dyb3VuZENhY2hlIiwiZmV0Y2hOZXh0RGF0YSIsImRhdGFIcmVmIiwiaW5mbGlnaHRDYWNoZSIsImlzUHJlZmV0Y2giLCJoYXNNaWRkbGV3YXJlIiwiaXNTZXJ2ZXJSZW5kZXIiLCJwYXJzZUpTT04iLCJwZXJzaXN0Q2FjaGUiLCJpc0JhY2tncm91bmQiLCJ1bnN0YWJsZV9za2lwQ2xpZW50Q2FjaGUiLCJsb2NhdGlvbiIsImNhY2hlS2V5IiwicmVmMSIsImdldERhdGEiLCJwdXJwb3NlIiwidGV4dCIsImpzb24iLCJyZWYiLCJ0cnlUb1BhcnNlQXNKU09OIiwibm90Rm91bmQiLCJtYXJrQXNzZXRFcnJvciIsImRhdGEiLCJjYXRjaCIsIkpTT04iLCJwYXJzZSIsIk1hdGgiLCJyYW5kb20iLCJ0b1N0cmluZyIsImhhbmRsZUhhcmROYXZpZ2F0aW9uIiwiYWRkTG9jYWxlIiwibG9jYWxlIiwiZ2V0Q2FuY2VsbGVkSGFuZGxlciIsImNhbmNlbCIsImNsYyIsImhhbmRsZUNhbmNlbGxlZCIsIlJvdXRlciIsInBhdGhuYW1lMSIsInF1ZXJ5MSIsImFzMSIsImluaXRpYWxQcm9wcyIsInBhZ2VMb2FkZXIiLCJBcHAiLCJ3cmFwQXBwIiwiQ29tcG9uZW50Iiwic3Vic2NyaXB0aW9uIiwiaXNGYWxsYmFjayIsImxvY2FsZXMiLCJkZWZhdWx0TG9jYWxlIiwiZG9tYWluTG9jYWxlcyIsImlzUHJldmlldyIsImlzUnNjIiwic2RjIiwiaXNGaXJzdFBvcFN0YXRlRXZlbnQiLCJfa2V5Iiwib25Qb3BTdGF0ZSIsImUiLCJzdGF0ZSIsImNoYW5nZVN0YXRlIiwiZ2V0VVJMIiwiX19OQSIsInJlbG9hZCIsIl9fTiIsImZvcmNlZFNjcm9sbCIsInN0cmluZ2lmeSIsIngiLCJwYWdlWE9mZnNldCIsInkiLCJwYWdlWU9mZnNldCIsImdldEl0ZW0iLCJlMSIsInBhcnNlUmVsYXRpdmVVcmwiLCJpc1NzciIsIl9icHMiLCJjaGFuZ2UiLCJzaGFsbG93IiwiX3NoYWxsb3ciLCJfaCIsImNvbXBvbmVudHMiLCJpbml0aWFsIiwicHJvcHMiLCJfX05fU1NHIiwiX19OX1NTUCIsIl9fTl9SU0MiLCJzdHlsZVNoZWV0cyIsImV2ZW50cyIsImF1dG9FeHBvcnREeW5hbWljIiwiX19ORVhUX0RBVEFfXyIsImF1dG9FeHBvcnQiLCJiYXNlUGF0aCIsIl9fTkVYVF9ST1VURVJfQkFTRVBBVEgiLCJzdWIiLCJfd3JhcEFwcCIsImlzTG9jYWxlRG9tYWluIiwiaXNSZWFkeSIsImdzc3AiLCJnaXAiLCJhcHBHaXAiLCJnc3AiLCJzZWFyY2giLCJfX05FWFRfSEFTX1JFV1JJVEVTIiwiX19ORVhUX0kxOE5fU1VQUE9SVCIsImRldGVjdERvbWFpbkxvY2FsZSIsImhvc3RuYW1lIiwiX2luaXRpYWxNYXRjaGVzTWlkZGxld2FyZVByb21pc2UiLCJtYXRjaGVzTWlkZGxld2FyZSIsIm1hdGNoZXMiLCJfc2hvdWxkUmVzb2x2ZUhyZWYiLCJhZGRFdmVudExpc3RlbmVyIiwic2Nyb2xsUmVzdG9yYXRpb24iLCJiYWNrIiwicHVzaCIsIl90aGlzIiwiaXNRdWVyeVVwZGF0aW5nIiwic2hvdWxkUmVzb2x2ZUhyZWYiLCJuZXh0U3RhdGUiLCJwcmV2TG9jYWxlIiwicGFyc2VkQXMiLCJsb2NhbGVQYXRoUmVzdWx0IiwiZGlkTmF2aWdhdGUiLCJkZXRlY3RlZERvbWFpbiIsImFzTm9CYXNlUGF0aCIsInNjcm9sbCIsInJvdXRlUHJvcHMiLCJjbGVhbmVkQXMiLCJsb2NhbGVDaGFuZ2UiLCJwYXJzZWQiLCJyZXdyaXRlcyIsImlzTWlkZGxld2FyZU1hdGNoIiwicmV3cml0ZXNSZXN1bHQiLCJyb3V0ZU1hdGNoIiwicm91dGVSZWdleCIsInNob3VsZEludGVycG9sYXRlIiwibWlzc2luZ1BhcmFtcyIsInJlZjIiLCJyZWYzIiwicm91dGVJbmZvIiwicHJlZml4ZWRBcyIsInJld3JpdGVBcyIsImxvY2FsZVJlc3VsdCIsImN1clJvdXRlTWF0Y2giLCJjb21wb25lbnQiLCJzY3JpcHRzIiwiZGVzdGluYXRpb24iLCJwYXJzZWRIcmVmIiwibmV3VXJsIiwibmV3QXMiLCJub3RGb3VuZFJvdXRlIiwiX3JvdXRlIiwiaXNWYWxpZFNoYWxsb3dSb3V0ZSIsIl9zY3JvbGwiLCJzaG91bGRTY3JvbGwiLCJyZXNldFNjcm9sbCIsImhhc2hSZWdleCIsInBhcnNlUGF0aCIsInJlbW92ZUJhc2VQYXRoIiwibm9ybWFsaXplTG9jYWxlUGF0aCIsImRldGVjdGVkTG9jYWxlIiwiZG9tYWluIiwiaHR0cCIsIlNUIiwicGVyZm9ybWFuY2UiLCJtYXJrIiwiX2luRmxpZ2h0Um91dGUiLCJlbWl0IiwicmVtb3ZlTG9jYWxlIiwib25seUFIYXNoQ2hhbmdlIiwic2Nyb2xsVG9IYXNoIiwiYWxsIiwiZ2V0UGFnZUxpc3QiLCJnZXRDbGllbnRCdWlsZE1hbmlmZXN0IiwiZ2V0TWlkZGxld2FyZUxpc3QiLCJfX3Jld3JpdGVzIiwidXJsSXNOZXciLCJwIiwiZXh0ZXJuYWxEZXN0IiwibWF0Y2hlZFBhZ2UiLCJmaWx0ZXIiLCJ3YXJuIiwiZ2V0Um91dGVJbmZvIiwidHlwZSIsInVuc3RhYmxlX3NjcmlwdExvYWRlciIsImNvbmNhdCIsInNjcmlwdCIsImhhbmRsZUNsaWVudFNjcmlwdExvYWQiLCJwYWdlUHJvcHMiLCJfX05fUkVESVJFQ1QiLCJfX05fUkVESVJFQ1RfQkFTRV9QQVRIIiwiX19OX1BSRVZJRVciLCJmZXRjaENvbXBvbmVudCIsInN0YXR1c0NvZGUiLCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIsImxhbmciLCJlcnIxIiwiaGFuZGxlUm91dGVJbmZvRXJyb3IiLCJsb2FkRXJyb3JGYWlsIiwiaXNBc3NldEVycm9yIiwiZ2V0SW5pdGlhbFByb3BzIiwicm91dGVJbmZvRXJyIiwicmVxdWVzdGVkUm91dGUiLCJyZWY0IiwicmVmNSIsImV4aXN0aW5nSW5mbyIsImNhY2hlZFJvdXRlSW5mbyIsImZldGNoTmV4dERhdGFQYXJhbXMiLCJpc1ZhbGlkRWxlbWVudFR5cGUiLCJ1c2VTdHJlYW1lZEZsaWdodERhdGEiLCJzaG91bGRGZXRjaERhdGEiLCJmbGlnaHRJbmZvIiwiZ2V0RGF0YUhyZWYiLCJza2lwSW50ZXJwb2xhdGlvbiIsIndpdGhNaWRkbGV3YXJlRWZmZWN0cyIsImZldGNoRGF0YSIsImVmZmVjdCIsInJlcyIsIm1vZCIsIl9fbmV4dF9yc2NfXyIsIl9nZXREYXRhIiwiX2dldEZsaWdodERhdGEiLCJfX2ZsaWdodF9fIiwiZ2V0UHJvcGVyRXJyb3IiLCJiZWZvcmVQb3BTdGF0ZSIsImNiIiwib2xkVXJsTm9IYXNoIiwib2xkSGFzaCIsIm5ld1VybE5vSGFzaCIsIm5ld0hhc2giLCJzY3JvbGxUbyIsInJhd0hhc2giLCJkZWNvZGVVUklDb21wb25lbnQiLCJpZEVsIiwiZ2V0RWxlbWVudEJ5SWQiLCJzY3JvbGxJbnRvVmlldyIsIm5hbWVFbCIsImdldEVsZW1lbnRzQnlOYW1lIiwicHJlZmV0Y2giLCJfaXNTc2ciLCJpc1NzZyIsInByaW9yaXR5IiwiY29tcG9uZW50UmVzdWx0IiwibG9hZFBhZ2UiLCJjdHgiLCJBcHBUcmVlIiwibG9hZEdldEluaXRpYWxQcm9wcyIsIml0ZW1zIiwicmVnZXgiLCJzc3IiLCJSZWdFeHAiLCJnZXRNaWRkbGV3YXJlRGF0YSIsIl9lcnIiLCJuZXh0Q29uZmlnIiwiaTE4biIsInRyYWlsaW5nU2xhc2giLCJCb29sZWFuIiwiX19ORVhUX1RSQUlMSU5HX1NMQVNIIiwicmV3cml0ZUhlYWRlciIsInJld3JpdGVUYXJnZXQiLCJtYXRjaGVkUGF0aCIsInBhcnNlZFJld3JpdGVUYXJnZXQiLCJwYXRobmFtZUluZm8iLCJnZXROZXh0UGF0aG5hbWVJbmZvIiwicGFyc2VEYXRhIiwiZnNQYXRobmFtZSIsInBhcnNlZFNvdXJjZSIsInBhdGgiLCJzcmMiLCJmb3JtYXROZXh0UGF0aG5hbWVJbmZvIiwiYnVpbGRJZCIsInJlZGlyZWN0VGFyZ2V0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../node_modules/next/dist/shared/lib/router/router.js\n"));
/***/ }),
@@ -785,7 +785,7 @@ eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar _classCallCheck = (__webpack_require__(/*! @swc/helpers/lib/_class_call_check.js */ \"../node_modules/@swc/helpers/lib/_class_call_check.js\")[\"default\"]);\nvar _inherits = (__webpack_require__(/*! @swc/helpers/lib/_inherits.js */ \"../node_modules/@swc/helpers/lib/_inherits.js\")[\"default\"]);\nvar _interopRequireDefault = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _toConsumableArray = (__webpack_require__(/*! @swc/helpers/lib/_to_consumable_array.js */ \"../node_modules/@swc/helpers/lib/_to_consumable_array.js\")[\"default\"]);\nvar _wrapNativeSuper = (__webpack_require__(/*! @swc/helpers/lib/_wrap_native_super.js */ \"../node_modules/@swc/helpers/lib/_wrap_native_super.js\")[\"default\"]);\nvar _createSuper = (__webpack_require__(/*! @swc/helpers/lib/_create_super.js */ \"../node_modules/@swc/helpers/lib/_create_super.js\")[\"default\"]);\nvar _runtimeJs = /*#__PURE__*/ _interopRequireDefault(__webpack_require__(/*! ../node_modules/next/dist/compiled/regenerator-runtime/runtime.js */ \"../node_modules/next/dist/compiled/regenerator-runtime/runtime.js\"));\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.execOnce = execOnce;\nexports.getLocationOrigin = getLocationOrigin;\nexports.getURL = getURL;\nexports.getDisplayName = getDisplayName;\nexports.isResSent = isResSent;\nexports.normalizeRepeatedSlashes = normalizeRepeatedSlashes;\nexports.loadGetInitialProps = loadGetInitialProps;\nexports.ST = exports.SP = exports.warnOnce = exports.isAbsoluteUrl = void 0;\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction execOnce(fn) {\n var used = false;\n var result;\n return function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n if (!used) {\n used = true;\n result = fn.apply(void 0, _toConsumableArray(args));\n }\n return result;\n };\n}\n// Scheme: https://tools.ietf.org/html/rfc3986#section-3.1\n// Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\nvar ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/;\nvar isAbsoluteUrl = function(url) {\n return ABSOLUTE_URL_REGEX.test(url);\n};\nexports.isAbsoluteUrl = isAbsoluteUrl;\nfunction getLocationOrigin() {\n var _location = window.location, protocol = _location.protocol, hostname = _location.hostname, port = _location.port;\n return \"\".concat(protocol, \"//\").concat(hostname).concat(port ? \":\" + port : \"\");\n}\nfunction getURL() {\n var href = window.location.href;\n var origin = getLocationOrigin();\n return href.substring(origin.length);\n}\nfunction getDisplayName(Component) {\n return typeof Component === \"string\" ? Component : Component.displayName || Component.name || \"Unknown\";\n}\nfunction isResSent(res) {\n return res.finished || res.headersSent;\n}\nfunction normalizeRepeatedSlashes(url) {\n var urlParts = url.split(\"?\");\n var urlNoQuery = urlParts[0];\n return urlNoQuery // first we replace any non-encoded backslashes with forward\n // then normalize repeated forward slashes\n .replace(/\\\\/g, \"/\").replace(/\\/\\/+/g, \"/\") + (urlParts[1] ? \"?\".concat(urlParts.slice(1).join(\"?\")) : \"\");\n}\nfunction loadGetInitialProps(App, ctx) {\n return _loadGetInitialProps.apply(this, arguments);\n}\nfunction _loadGetInitialProps() {\n _loadGetInitialProps = _asyncToGenerator(_runtimeJs.default.mark(function _callee(App, ctx) {\n var ref, message, res, props, message1;\n return _runtimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n if (false) {}\n ;\n if (!((ref = App.prototype) == null ? void 0 : ref.getInitialProps)) {\n _ctx.next = 5;\n break;\n }\n message = '\"'.concat(getDisplayName(App), '.getInitialProps()\" is defined as an instance method - visit https://nextjs.org/docs/messages/get-initial-props-as-an-instance-method for more information.');\n throw new Error(message);\n case 5:\n res = ctx.res || ctx.ctx && ctx.ctx.res;\n if (App.getInitialProps) {\n _ctx.next = 13;\n break;\n }\n if (!(ctx.ctx && ctx.Component)) {\n _ctx.next = 12;\n break;\n }\n _ctx.next = 10;\n return loadGetInitialProps(ctx.Component, ctx.ctx);\n case 10:\n _ctx.t0 = _ctx.sent;\n return _ctx.abrupt(\"return\", {\n pageProps: _ctx.t0\n });\n case 12:\n return _ctx.abrupt(\"return\", {});\n case 13:\n _ctx.next = 15;\n return App.getInitialProps(ctx);\n case 15:\n props = _ctx.sent;\n if (!(res && isResSent(res))) {\n _ctx.next = 18;\n break;\n }\n return _ctx.abrupt(\"return\", props);\n case 18:\n if (props) {\n _ctx.next = 21;\n break;\n }\n message1 = '\"'.concat(getDisplayName(App), '.getInitialProps()\" should resolve to an object. But found \"').concat(props, '\" instead.');\n throw new Error(message1);\n case 21:\n if (true) {\n if (Object.keys(props).length === 0 && !ctx.ctx) {\n console.warn(\"\".concat(getDisplayName(App), \" returned an empty object from `getInitialProps`. This de-optimizes and prevents automatic static optimization. https://nextjs.org/docs/messages/empty-object-getInitialProps\"));\n }\n }\n return _ctx.abrupt(\"return\", props);\n case 23:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee);\n }));\n return _loadGetInitialProps.apply(this, arguments);\n}\nvar warnOnce = function(_) {};\nif (true) {\n var warnings = new Set();\n exports.warnOnce = warnOnce = function(msg) {\n if (!warnings.has(msg)) {\n console.warn(msg);\n }\n warnings.add(msg);\n };\n}\nvar SP = typeof performance !== \"undefined\";\nexports.SP = SP;\nvar ST = SP && [\n \"mark\",\n \"measure\",\n \"getEntriesByName\"\n].every(function(method) {\n return typeof performance[method] === \"function\";\n});\nexports.ST = ST;\nvar DecodeError = /*#__PURE__*/ function(Error1) {\n _inherits(DecodeError, Error1);\n var _super = _createSuper(DecodeError);\n function DecodeError() {\n _classCallCheck(this, DecodeError);\n return _super.apply(this, arguments);\n }\n return DecodeError;\n}(_wrapNativeSuper(Error));\nexports.DecodeError = DecodeError;\nvar NormalizeError = /*#__PURE__*/ function(Error1) {\n _inherits(NormalizeError, Error1);\n var _super = _createSuper(NormalizeError);\n function NormalizeError() {\n _classCallCheck(this, NormalizeError);\n return _super.apply(this, arguments);\n }\n return NormalizeError;\n}(_wrapNativeSuper(Error));\nexports.NormalizeError = NormalizeError;\nvar PageNotFoundError = /*#__PURE__*/ function(Error1) {\n _inherits(PageNotFoundError, Error1);\n var _super = _createSuper(PageNotFoundError);\n function PageNotFoundError(page) {\n _classCallCheck(this, PageNotFoundError);\n var _this;\n _this = _super.call(this);\n _this.code = \"ENOENT\";\n _this.message = \"Cannot find module for page: \".concat(page);\n return _this;\n }\n return PageNotFoundError;\n}(_wrapNativeSuper(Error));\nexports.PageNotFoundError = PageNotFoundError;\nvar MissingStaticPage = /*#__PURE__*/ function(Error1) {\n _inherits(MissingStaticPage, Error1);\n var _super = _createSuper(MissingStaticPage);\n function MissingStaticPage(page, message) {\n _classCallCheck(this, MissingStaticPage);\n var _this;\n _this = _super.call(this);\n _this.message = \"Failed to load static file for page: \".concat(page, \" \").concat(message);\n return _this;\n }\n return MissingStaticPage;\n}(_wrapNativeSuper(Error));\nexports.MissingStaticPage = MissingStaticPage;\nvar MiddlewareNotFoundError = /*#__PURE__*/ function(Error1) {\n _inherits(MiddlewareNotFoundError, Error1);\n var _super = _createSuper(MiddlewareNotFoundError);\n function MiddlewareNotFoundError() {\n _classCallCheck(this, MiddlewareNotFoundError);\n var _this;\n _this = _super.call(this);\n _this.code = \"ENOENT\";\n _this.message = \"Cannot find the middleware module\";\n return _this;\n }\n return MiddlewareNotFoundError;\n}(_wrapNativeSuper(Error));\nexports.MiddlewareNotFoundError = MiddlewareNotFoundError;\nexports.warnOnce = warnOnce; //# sourceMappingURL=utils.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zaGFyZWQvbGliL3V0aWxzLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhOzs7Ozs7Ozs7OztBQUNiQSw4Q0FBNkM7SUFDekNHLEtBQUssRUFBRSxJQUFJO0NBQ2QsRUFBQyxDQUFDO0FBQ0hELGdCQUFnQixHQUFHRSxRQUFRLENBQUM7QUFDNUJGLHlCQUF5QixHQUFHRyxpQkFBaUIsQ0FBQztBQUM5Q0gsY0FBYyxHQUFHSSxNQUFNLENBQUM7QUFDeEJKLHNCQUFzQixHQUFHSyxjQUFjLENBQUM7QUFDeENMLGlCQUFpQixHQUFHTSxTQUFTLENBQUM7QUFDOUJOLGdDQUFnQyxHQUFHTyx3QkFBd0IsQ0FBQztBQUM1RFAsMkJBQTJCLEdBQUdRLG1CQUFtQixDQUFDO0FBQ2xEUixVQUFVLEdBQUdBLFVBQVUsR0FBR0EsZ0JBQWdCLEdBQUdBLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQzVFLFNBQVNhLGtCQUFrQixDQUFDQyxHQUFHLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRUMsR0FBRyxFQUFFQyxHQUFHLEVBQUU7SUFDdkUsSUFBSTtRQUNBLElBQUlDLElBQUksR0FBR1AsR0FBRyxDQUFDSyxHQUFHLENBQUMsQ0FBQ0MsR0FBRyxDQUFDO1FBQ3hCLElBQUluQixLQUFLLEdBQUdvQixJQUFJLENBQUNwQixLQUFLO0tBQ3pCLENBQUMsT0FBT3FCLEtBQUssRUFBRTtRQUNaTixNQUFNLENBQUNNLEtBQUssQ0FBQyxDQUFDO1FBQ2QsT0FBTztLQUNWO0lBQ0QsSUFBSUQsSUFBSSxDQUFDRSxJQUFJLEVBQUU7UUFDWFIsT0FBTyxDQUFDZCxLQUFLLENBQUMsQ0FBQztLQUNsQixNQUFNO1FBQ0h1QixPQUFPLENBQUNULE9BQU8sQ0FBQ2QsS0FBSyxDQUFDLENBQUN3QixJQUFJLENBQUNSLEtBQUssRUFBRUMsTUFBTSxDQUFDLENBQUM7S0FDOUM7Q0FDSjtBQUNELFNBQVNRLGlC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QUFpQixDQUFDO0FBQzlDLHFCQUF1QixpQkFNbkI7OzthQU5FRyxpQkFBaUIsQ0FDUEYsSUFBSSxFQUFFdEIsT0FBTzs7O2tDQUNiO1FBQ1IsTUFBS0EsT0FBTyxHQUFHLHVDQUFzQyxDQUFVQSxNQUFPLENBQWZzQixJQUFJLEVBQUMsR0FBQyxDQUFVLFFBQVJ0QixPQUFPLENBQUUsQ0FBQzs7OztDQUVoRixrQkFMK0JLLEtBQUssRUFLcEM7QUFDRHJFLHlCQUF5QixHQUFHd0YsaUJBQWlCLENBQUM7QUFDOUMsMkJBQTZCLGlCQU96Qjs7O2FBUEVDLHVCQUF1Qjs7O2tDQUViO1FBQ1IsTUFBS0YsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUNyQixNQUFLdkIsT0FBTyxHQUFJLG1DQUFpQyxDQUFFOzs7O0NBRTFELGtCQU5xQ0ssS0FBSyxFQU0xQztBQUNEckUsK0JBQStCLEdBQUd5Rix1QkFBdUIsQ0FBQztBQUMxRHpGLGdCQUFnQixHQUFHVyxRQUFRLENBQUMsQ0FFNUIsaUNBQWlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvdXRpbHMuanM/OTJlYyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZXhlY09uY2UgPSBleGVjT25jZTtcbmV4cG9ydHMuZ2V0TG9jYXRpb25PcmlnaW4gPSBnZXRMb2NhdGlvbk9yaWdpbjtcbmV4cG9ydHMuZ2V0VVJMID0gZ2V0VVJMO1xuZXhwb3J0cy5nZXREaXNwbGF5TmFtZSA9IGdldERpc3BsYXlOYW1lO1xuZXhwb3J0cy5pc1Jlc1NlbnQgPSBpc1Jlc1NlbnQ7XG5leHBvcnRzLm5vcm1hbGl6ZVJlcGVhdGVkU2xhc2hlcyA9IG5vcm1hbGl6ZVJlcGVhdGVkU2xhc2hlcztcbmV4cG9ydHMubG9hZEdldEluaXRpYWxQcm9wcyA9IGxvYWRHZXRJbml0aWFsUHJvcHM7XG5leHBvcnRzLlNUID0gZXhwb3J0cy5TUCA9IGV4cG9ydHMud2Fybk9uY2UgPSBleHBvcnRzLmlzQWJzb2x1dGVVcmwgPSB2b2lkIDA7XG5mdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIGtleSwgYXJnKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgdmFyIGluZm8gPSBnZW5ba2V5XShhcmcpO1xuICAgICAgICB2YXIgdmFsdWUgPSBpbmZvLnZhbHVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGluZm8uZG9uZSkge1xuICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oX25leHQsIF90aHJvdyk7XG4gICAgfVxufVxuZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3IoZm4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBzZWxmID0gdGhpcywgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdmFyIGdlbiA9IGZuLmFwcGx5KHNlbGYsIGFyZ3MpO1xuICAgICAgICAgICAgZnVuY3Rpb24gX25leHQodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBfdGhyb3coZXJyKSB7XG4gICAgICAgICAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcInRocm93XCIsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfbmV4dCh1bmRlZmluZWQpO1xuICAgICAgICB9KTtcbiAgICB9O1xufVxuZnVuY3Rpb24gZXhlY09uY2UoZm4pIHtcbiAgICBsZXQgdXNlZCA9IGZhbHNlO1xuICAgIGxldCByZXN1bHQ7XG4gICAgcmV0dXJuICguLi5hcmdzKT0+e1xuICAgICAgICBpZiAoIXVzZWQpIHtcbiAgICAgICAgICAgIHVzZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmVzdWx0ID0gZm4oLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xufVxuLy8gU2NoZW1lOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTMuMVxuLy8gQWJzb2x1dGUgVVJMOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTQuM1xuY29uc3QgQUJTT0xVVEVfVVJMX1JFR0VYID0gL15bYS16QS1aXVthLXpBLVpcXGQrXFwtLl0qPzovO1xuY29uc3QgaXNBYnNvbHV0ZVVybCA9ICh1cmwpPT5BQlNPTFVURV9VUkxfUkVHRVgudGVzdCh1cmwpO1xuZXhwb3J0cy5pc0Fic29sdXRlVXJsID0gaXNBYnNvbHV0ZVVybDtcbmZ1bmN0aW9uIGdldExvY2F0aW9uT3JpZ2luKCkge1xuICAgIGNvbnN0IHsgcHJvdG9jb2wgLCBob3N0bmFtZSAsIHBvcnQgIH0gPSB3aW5kb3cubG9jYXRpb247XG4gICAgcmV0dXJuIGAke3Byb3RvY29sfS8vJHtob3N0bmFtZX0ke3BvcnQgPyAnOicgKyBwb3J0IDogJyd9YDtcbn1cbmZ1bmN0aW9uIGdldFVSTCgpIHtcbiAgICBjb25zdCB7IGhyZWYgIH0gPSB3aW5kb3cubG9jYXRpb247XG4gICAgY29uc3Qgb3JpZ2luID0gZ2V0TG9jYXRpb25PcmlnaW4oKTtcbiAgICByZXR1cm4gaHJlZi5zdWJzdHJpbmcob3JpZ2luLmxlbmd0aCk7XG59XG5mdW5jdGlvbiBnZXREaXNwbGF5TmFtZShDb21wb25lbnQpIHtcbiAgICByZXR1cm4gdHlwZW9mIENvbXBvbmVudCA9PT0gJ3N0cmluZycgPyBDb21wb25lbnQgOiBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ1Vua25vd24nO1xufVxuZnVuY3Rpb24gaXNSZXNTZW50KHJlcykge1xuICAgIHJldHVybiByZXMuZmluaXNoZWQgfHwgcmVzLmhlYWRlcnNTZW50O1xufVxuZnVuY3Rpb24gbm9ybWFsaXplUmVwZWF0ZWRTbGFzaGVzKHVybCkge1xuICAgIGNvbnN0IHVybFBhcnRzID0gdXJsLnNwbGl0KCc/Jyk7XG4gICAgY29uc3QgdXJsTm9RdWVyeSA9IHVybFBhcnRzWzBdO1xuICAgIHJldHVybiB1cmxOb1F1ZXJ5Ly8gZmlyc3Qgd2UgcmVwbGFjZSBhbnkgbm9uLWVuY29kZWQgYmFja3NsYXNoZXMgd2l0aCBmb3J3YXJkXG4gICAgLy8gdGhlbiBub3JtYWxpemUgcmVwZWF0ZWQgZm9yd2FyZCBzbGFzaGVzXG4gICAgLnJlcGxhY2UoL1xcXFwvZywgJy8nKS5yZXBsYWNlKC9cXC9cXC8rL2csICcvJykgKyAodXJsUGFydHNbMV0gPyBgPyR7dXJsUGFydHMuc2xpY2UoMSkuam9pbignPycpfWAgOiAnJyk7XG59XG5mdW5jdGlvbiBsb2FkR2V0SW5pdGlhbFByb3BzKEFwcCwgY3R4KSB7XG4gICAgcmV0dXJuIF9sb2FkR2V0SW5pdGlhbFByb3BzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5mdW5jdGlvbiBfbG9hZEdldEluaXRpYWxQcm9wcygpIHtcbiAgICBfbG9hZEdldEluaXRpYWxQcm9wcyA9IF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKihBcHAsIGN0eCkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgdmFyIHJlZjtcbiAgICAgICAgICAgIGlmICgocmVmID0gQXBwLnByb3RvdHlwZSkgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZi5nZXRJbml0aWFsUHJvcHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYFwiJHtnZXREaXNwbGF5TmFtZShBcHApfS5nZXRJbml0aWFsUHJvcHMoKVwiIGlzIGRlZmluZWQgYXMgYW4gaW5zdGFuY2UgbWV0aG9kIC0gdmlzaXQgaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZ2V0LWluaXRpYWwtcHJvcHMtYXMtYW4taW5zdGFuY2UtbWV0aG9kIGZvciBtb3JlIGluZm9ybWF0aW9uLmA7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIHdoZW4gY2FsbGVkIGZyb20gX2FwcCBgY3R4YCBpcyBuZXN0ZWQgaW4gYGN0eGBcbiAgICAgICAgY29uc3QgcmVzID0gY3R4LnJlcyB8fCBjdHguY3R4ICYmIGN0eC5jdHgucmVzO1xuICAgICAgICBpZiAoIUFwcC5nZXRJbml0aWFsUHJvcHMpIHtcbiAgICAgICAgICAgIGlmIChjdHguY3R4ICYmIGN0eC5Db21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIHBhZ2VQcm9wcyBkZWZhdWx0XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgcGFnZVByb3BzOiB5aWVsZCBsb2FkR2V0SW5pdGlhbFByb3BzKGN0eC5Db21wb25lbnQsIGN0eC5jdHgpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcm9wcyA9IHlpZWxkIEFwcC5nZXRJbml0aWFsUHJvcHMoY3R4KTtcbiAgICAgICAgaWYgKHJlcyAmJiBpc1Jlc1NlbnQocmVzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHByb3BzO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcHJvcHMpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgXCIke2dldERpc3BsYXlOYW1lKEFwcCl9LmdldEluaXRpYWxQcm9wcygpXCIgc2hvdWxkIHJlc29sdmUgdG8gYW4gb2JqZWN0LiBCdXQgZm91bmQgXCIke3Byb3BzfVwiIGluc3RlYWQuYDtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHByb3BzKS5sZW5ndGggPT09IDAgJiYgIWN0eC5jdHgpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYCR7Z2V0RGlzcGxheU5hbWUoQXBwKX0gcmV0dXJuZWQgYW4gZW1wdHkgb2JqZWN0IGZyb20gXFxgZ2V0SW5pdGlhbFByb3BzXFxgLiBUaGlzIGRlLW9wdGltaXplcyBhbmQgcHJldmVudHMgYXV0b21hdGljIHN0YXRpYyBvcHRpbWl6YXRpb24uIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2VtcHR5LW9iamVjdC1nZXRJbml0aWFsUHJvcHNgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvcHM7XG4gICAgfSk7XG4gICAgcmV0dXJuIF9sb2FkR2V0SW5pdGlhbFByb3BzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5sZXQgd2Fybk9uY2UgPSAoXyk9Pnt9O1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBjb25zdCB3YXJuaW5ncyA9IG5ldyBTZXQoKTtcbiAgICBleHBvcnRzLndhcm5PbmNlID0gd2Fybk9uY2UgPSAobXNnKT0+e1xuICAgICAgICBpZiAoIXdhcm5pbmdzLmhhcyhtc2cpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4obXNnKTtcbiAgICAgICAgfVxuICAgICAgICB3YXJuaW5ncy5hZGQobXNnKTtcbiAgICB9O1xufVxuY29uc3QgU1AgPSB0eXBlb2YgcGVyZm9ybWFuY2UgIT09ICd1bmRlZmluZWQnO1xuZXhwb3J0cy5TUCA9IFNQO1xuY29uc3QgU1QgPSBTUCAmJiBbXG4gICAgJ21hcmsnLFxuICAgICdtZWFzdXJlJyxcbiAgICAnZ2V0RW50cmllc0J5TmFtZSdcbl0uZXZlcnkoKG1ldGhvZCk9PnR5cGVvZiBwZXJmb3JtYW5jZVttZXRob2RdID09PSAnZnVuY3Rpb24nKTtcbmV4cG9ydHMuU1QgPSBTVDtcbmNsYXNzIERlY29kZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xufVxuZXhwb3J0cy5EZWNvZGVFcnJvciA9IERlY29kZUVycm9yO1xuY2xhc3MgTm9ybWFsaXplRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG59XG5leHBvcnRzLk5vcm1hbGl6ZUVycm9yID0gTm9ybWFsaXplRXJyb3I7XG5jbGFzcyBQYWdlTm90Rm91bmRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihwYWdlKXtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jb2RlID0gJ0VOT0VOVCc7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IGBDYW5ub3QgZmluZCBtb2R1bGUgZm9yIHBhZ2U6ICR7cGFnZX1gO1xuICAgIH1cbn1cbmV4cG9ydHMuUGFnZU5vdEZvdW5kRXJyb3IgPSBQYWdlTm90Rm91bmRFcnJvcjtcbmNsYXNzIE1pc3NpbmdTdGF0aWNQYWdlIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKHBhZ2UsIG1lc3NhZ2Upe1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBgRmFpbGVkIHRvIGxvYWQgc3RhdGljIGZpbGUgZm9yIHBhZ2U6ICR7cGFnZX0gJHttZXNzYWdlfWA7XG4gICAgfVxufVxuZXhwb3J0cy5NaXNzaW5nU3RhdGljUGFnZSA9IE1pc3NpbmdTdGF0aWNQYWdlO1xuY2xhc3MgTWlkZGxld2FyZU5vdEZvdW5kRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IoKXtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jb2RlID0gJ0VOT0VOVCc7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IGBDYW5ub3QgZmluZCB0aGUgbWlkZGxld2FyZSBtb2R1bGVgO1xuICAgIH1cbn1cbmV4cG9ydHMuTWlkZGxld2FyZU5vdEZvdW5kRXJyb3IgPSBNaWRkbGV3YXJlTm90Rm91bmRFcnJvcjtcbmV4cG9ydHMud2Fybk9uY2UgPSB3YXJuT25jZTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbHMuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZXhlY09uY2UiLCJnZXRMb2NhdGlvbk9yaWdpbiIsImdldFVSTCIsImdldERpc3BsYXlOYW1lIiwiaXNSZXNTZW50Iiwibm9ybWFsaXplUmVwZWF0ZWRTbGFzaGVzIiwibG9hZEdldEluaXRpYWxQcm9wcyIsIlNUIiwiU1AiLCJ3YXJuT25jZSIsImlzQWJzb2x1dGVVcmwiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJyZXNvbHZlIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJhcmciLCJpbmZvIiwiZXJyb3IiLCJkb25lIiwiUHJvbWlzZSIsInRoZW4iLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsInVzZWQiLCJyZXN1bHQiLCJBQlNPTFVURV9VUkxfUkVHRVgiLCJ1cmwiLCJ0ZXN0Iiwid2luZG93IiwibG9jYXRpb24iLCJwcm90b2NvbCIsImhvc3RuYW1lIiwicG9ydCIsImhyZWYiLCJvcmlnaW4iLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJDb21wb25lbnQiLCJkaXNwbGF5TmFtZSIsIm5hbWUiLCJyZXMiLCJmaW5pc2hlZCIsImhlYWRlcnNTZW50IiwidXJsUGFydHMiLCJzcGxpdCIsInVybE5vUXVlcnkiLCJyZXBsYWNlIiwic2xpY2UiLCJqb2luIiwiQXBwIiwiY3R4IiwiX2xvYWRHZXRJbml0aWFsUHJvcHMiLCJyZWYiLCJtZXNzYWdlIiwicHJvcHMiLCJwcm9jZXNzIiwicHJvdG90eXBlIiwiZ2V0SW5pdGlhbFByb3BzIiwiRXJyb3IiLCJwYWdlUHJvcHMiLCJrZXlzIiwiY29uc29sZSIsIndhcm4iLCJfIiwid2FybmluZ3MiLCJTZXQiLCJtc2ciLCJoYXMiLCJhZGQiLCJwZXJmb3JtYW5jZSIsImV2ZXJ5IiwibWV0aG9kIiwiRGVjb2RlRXJyb3IiLCJOb3JtYWxpemVFcnJvciIsIlBhZ2VOb3RGb3VuZEVycm9yIiwicGFnZSIsImNvZGUiLCJNaXNzaW5nU3RhdGljUGFnZSIsIk1pZGRsZXdhcmVOb3RGb3VuZEVycm9yIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../node_modules/next/dist/shared/lib/utils.js\n"));
+eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar _classCallCheck = (__webpack_require__(/*! @swc/helpers/lib/_class_call_check.js */ \"../node_modules/@swc/helpers/lib/_class_call_check.js\")[\"default\"]);\nvar _inherits = (__webpack_require__(/*! @swc/helpers/lib/_inherits.js */ \"../node_modules/@swc/helpers/lib/_inherits.js\")[\"default\"]);\nvar _interopRequireDefault = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _toConsumableArray = (__webpack_require__(/*! @swc/helpers/lib/_to_consumable_array.js */ \"../node_modules/@swc/helpers/lib/_to_consumable_array.js\")[\"default\"]);\nvar _wrapNativeSuper = (__webpack_require__(/*! @swc/helpers/lib/_wrap_native_super.js */ \"../node_modules/@swc/helpers/lib/_wrap_native_super.js\")[\"default\"]);\nvar _createSuper = (__webpack_require__(/*! @swc/helpers/lib/_create_super.js */ \"../node_modules/@swc/helpers/lib/_create_super.js\")[\"default\"]);\nvar _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs = /*#__PURE__*/ _interopRequireDefault(__webpack_require__(/*! ../node_modules/next/dist/compiled/regenerator-runtime/runtime.js */ \"../node_modules/next/dist/compiled/regenerator-runtime/runtime.js\"));\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.execOnce = execOnce;\nexports.getLocationOrigin = getLocationOrigin;\nexports.getURL = getURL;\nexports.getDisplayName = getDisplayName;\nexports.isResSent = isResSent;\nexports.normalizeRepeatedSlashes = normalizeRepeatedSlashes;\nexports.loadGetInitialProps = loadGetInitialProps;\nexports.ST = exports.SP = exports.warnOnce = exports.isAbsoluteUrl = void 0;\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction execOnce(fn) {\n var used = false;\n var result;\n return function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n if (!used) {\n used = true;\n result = fn.apply(void 0, _toConsumableArray(args));\n }\n return result;\n };\n}\n// Scheme: https://tools.ietf.org/html/rfc3986#section-3.1\n// Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\nvar ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/;\nvar isAbsoluteUrl = function(url) {\n return ABSOLUTE_URL_REGEX.test(url);\n};\nexports.isAbsoluteUrl = isAbsoluteUrl;\nfunction getLocationOrigin() {\n var _location = window.location, protocol = _location.protocol, hostname = _location.hostname, port = _location.port;\n return \"\".concat(protocol, \"//\").concat(hostname).concat(port ? \":\" + port : \"\");\n}\nfunction getURL() {\n var href = window.location.href;\n var origin = getLocationOrigin();\n return href.substring(origin.length);\n}\nfunction getDisplayName(Component) {\n return typeof Component === \"string\" ? Component : Component.displayName || Component.name || \"Unknown\";\n}\nfunction isResSent(res) {\n return res.finished || res.headersSent;\n}\nfunction normalizeRepeatedSlashes(url) {\n var urlParts = url.split(\"?\");\n var urlNoQuery = urlParts[0];\n return urlNoQuery // first we replace any non-encoded backslashes with forward\n // then normalize repeated forward slashes\n .replace(/\\\\/g, \"/\").replace(/\\/\\/+/g, \"/\") + (urlParts[1] ? \"?\".concat(urlParts.slice(1).join(\"?\")) : \"\");\n}\nfunction loadGetInitialProps(App, ctx) {\n return _loadGetInitialProps.apply(this, arguments);\n}\nfunction _loadGetInitialProps() {\n _loadGetInitialProps = _asyncToGenerator(_cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.mark(function _callee(App, ctx) {\n var ref, message, res, props, message1;\n return _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n if (false) {}\n ;\n if (!((ref = App.prototype) == null ? void 0 : ref.getInitialProps)) {\n _ctx.next = 5;\n break;\n }\n message = '\"'.concat(getDisplayName(App), '.getInitialProps()\" is defined as an instance method - visit https://nextjs.org/docs/messages/get-initial-props-as-an-instance-method for more information.');\n throw new Error(message);\n case 5:\n res = ctx.res || ctx.ctx && ctx.ctx.res;\n if (App.getInitialProps) {\n _ctx.next = 13;\n break;\n }\n if (!(ctx.ctx && ctx.Component)) {\n _ctx.next = 12;\n break;\n }\n _ctx.next = 10;\n return loadGetInitialProps(ctx.Component, ctx.ctx);\n case 10:\n _ctx.t0 = _ctx.sent;\n return _ctx.abrupt(\"return\", {\n pageProps: _ctx.t0\n });\n case 12:\n return _ctx.abrupt(\"return\", {});\n case 13:\n _ctx.next = 15;\n return App.getInitialProps(ctx);\n case 15:\n props = _ctx.sent;\n if (!(res && isResSent(res))) {\n _ctx.next = 18;\n break;\n }\n return _ctx.abrupt(\"return\", props);\n case 18:\n if (props) {\n _ctx.next = 21;\n break;\n }\n message1 = '\"'.concat(getDisplayName(App), '.getInitialProps()\" should resolve to an object. But found \"').concat(props, '\" instead.');\n throw new Error(message1);\n case 21:\n if (true) {\n if (Object.keys(props).length === 0 && !ctx.ctx) {\n console.warn(\"\".concat(getDisplayName(App), \" returned an empty object from `getInitialProps`. This de-optimizes and prevents automatic static optimization. https://nextjs.org/docs/messages/empty-object-getInitialProps\"));\n }\n }\n return _ctx.abrupt(\"return\", props);\n case 23:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee);\n }));\n return _loadGetInitialProps.apply(this, arguments);\n}\nvar warnOnce = function(_) {};\nif (true) {\n var warnings = new Set();\n exports.warnOnce = warnOnce = function(msg) {\n if (!warnings.has(msg)) {\n console.warn(msg);\n }\n warnings.add(msg);\n };\n}\nvar SP = typeof performance !== \"undefined\";\nexports.SP = SP;\nvar ST = SP && [\n \"mark\",\n \"measure\",\n \"getEntriesByName\"\n].every(function(method) {\n return typeof performance[method] === \"function\";\n});\nexports.ST = ST;\nvar DecodeError = /*#__PURE__*/ function(Error1) {\n _inherits(DecodeError, Error1);\n var _super = _createSuper(DecodeError);\n function DecodeError() {\n _classCallCheck(this, DecodeError);\n return _super.apply(this, arguments);\n }\n return DecodeError;\n}(_wrapNativeSuper(Error));\nexports.DecodeError = DecodeError;\nvar NormalizeError = /*#__PURE__*/ function(Error1) {\n _inherits(NormalizeError, Error1);\n var _super = _createSuper(NormalizeError);\n function NormalizeError() {\n _classCallCheck(this, NormalizeError);\n return _super.apply(this, arguments);\n }\n return NormalizeError;\n}(_wrapNativeSuper(Error));\nexports.NormalizeError = NormalizeError;\nvar PageNotFoundError = /*#__PURE__*/ function(Error1) {\n _inherits(PageNotFoundError, Error1);\n var _super = _createSuper(PageNotFoundError);\n function PageNotFoundError(page) {\n _classCallCheck(this, PageNotFoundError);\n var _this;\n _this = _super.call(this);\n _this.code = \"ENOENT\";\n _this.message = \"Cannot find module for page: \".concat(page);\n return _this;\n }\n return PageNotFoundError;\n}(_wrapNativeSuper(Error));\nexports.PageNotFoundError = PageNotFoundError;\nvar MissingStaticPage = /*#__PURE__*/ function(Error1) {\n _inherits(MissingStaticPage, Error1);\n var _super = _createSuper(MissingStaticPage);\n function MissingStaticPage(page, message) {\n _classCallCheck(this, MissingStaticPage);\n var _this;\n _this = _super.call(this);\n _this.message = \"Failed to load static file for page: \".concat(page, \" \").concat(message);\n return _this;\n }\n return MissingStaticPage;\n}(_wrapNativeSuper(Error));\nexports.MissingStaticPage = MissingStaticPage;\nvar MiddlewareNotFoundError = /*#__PURE__*/ function(Error1) {\n _inherits(MiddlewareNotFoundError, Error1);\n var _super = _createSuper(MiddlewareNotFoundError);\n function MiddlewareNotFoundError() {\n _classCallCheck(this, MiddlewareNotFoundError);\n var _this;\n _this = _super.call(this);\n _this.code = \"ENOENT\";\n _this.message = \"Cannot find the middleware module\";\n return _this;\n }\n return MiddlewareNotFoundError;\n}(_wrapNativeSuper(Error));\nexports.MiddlewareNotFoundError = MiddlewareNotFoundError;\nexports.warnOnce = warnOnce; //# sourceMappingURL=utils.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zaGFyZWQvbGliL3V0aWxzLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhOzs7Ozs7Ozs7OztBQUNiQSw4Q0FBNkM7SUFDekNHLEtBQUssRUFBRSxJQUFJO0NBQ2QsRUFBQyxDQUFDO0FBQ0hELGdCQUFnQixHQUFHRSxRQUFRLENBQUM7QUFDNUJGLHlCQUF5QixHQUFHRyxpQkFBaUIsQ0FBQztBQUM5Q0gsY0FBYyxHQUFHSSxNQUFNLENBQUM7QUFDeEJKLHNCQUFzQixHQUFHSyxjQUFjLENBQUM7QUFDeENMLGlCQUFpQixHQUFHTSxTQUFTLENBQUM7QUFDOUJOLGdDQUFnQyxHQUFHTyx3QkFBd0IsQ0FBQztBQUM1RFAsMkJBQTJCLEdBQUdRLG1CQUFtQixDQUFDO0FBQ2xEUixVQUFVLEdBQUdBLFVBQVUsR0FBR0EsZ0JBQWdCLEdBQUdBLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQzVFLFNBQVNhLGtCQUFrQixDQUFDQyxHQUFHLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRUMsR0FBRyxFQUFFQyxHQUFHLEVBQUU7SUFDdkUsSUFBSTtRQUNBLElBQUlDLElBQUksR0FBR1AsR0FBRyxDQUFDSyxHQUFHLENBQUMsQ0FBQ0MsR0FBRyxDQUFDO1FBQ3hCLElBQUluQixLQUFLLEdBQUdvQixJQUFJLENBQUNwQixLQUFLO0tBQ3pCLENBQUMsT0FBT3FCLEtBQUssRUFBRTtRQUNaTixNQUFNLENBQUNNLEtBQUssQ0FBQyxDQUFDO1FBQ2QsT0FBTztLQUNWO0lBQ0QsSUFBSUQsSUFBSSxDQUFDRSxJQUFJLEVBQUU7UUFDWFIsT0FBTyxDQUFDZCxLQUFLLENBQUMsQ0FBQztLQUNsQixNQUFNO1FBQ0h1QixPQUFPLENBQUNULE9BQU8sQ0FBQ2QsS0FBSyxDQUFDLENBQUN3QixJQUFJLENBQUNSLEtBQUssRUFBRUMsTUFBTSxDQUFDLENBQUM7S0FDOUM7Q0FDSjtBQUNELFNBQVNRLGlC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QUFpQixDQUFDO0FBQzlDLHFCQUF1QixpQkFNbkI7OzthQU5FRyxpQkFBaUIsQ0FDUEYsSUFBSSxFQUFFdEIsT0FBTzs7O2tDQUNiO1FBQ1IsTUFBS0EsT0FBTyxHQUFHLHVDQUFzQyxDQUFVQSxNQUFPLENBQWZzQixJQUFJLEVBQUMsR0FBQyxDQUFVLFFBQVJ0QixPQUFPLENBQUUsQ0FBQzs7OztDQUVoRixrQkFMK0JLLEtBQUssRUFLcEM7QUFDRHJFLHlCQUF5QixHQUFHd0YsaUJBQWlCLENBQUM7QUFDOUMsMkJBQTZCLGlCQU96Qjs7O2FBUEVDLHVCQUF1Qjs7O2tDQUViO1FBQ1IsTUFBS0YsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUNyQixNQUFLdkIsT0FBTyxHQUFJLG1DQUFpQyxDQUFFOzs7O0NBRTFELGtCQU5xQ0ssS0FBSyxFQU0xQztBQUNEckUsK0JBQStCLEdBQUd5Rix1QkFBdUIsQ0FBQztBQUMxRHpGLGdCQUFnQixHQUFHVyxRQUFRLENBQUMsQ0FFNUIsaUNBQWlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvdXRpbHMuanM/OTJlYyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZXhlY09uY2UgPSBleGVjT25jZTtcbmV4cG9ydHMuZ2V0TG9jYXRpb25PcmlnaW4gPSBnZXRMb2NhdGlvbk9yaWdpbjtcbmV4cG9ydHMuZ2V0VVJMID0gZ2V0VVJMO1xuZXhwb3J0cy5nZXREaXNwbGF5TmFtZSA9IGdldERpc3BsYXlOYW1lO1xuZXhwb3J0cy5pc1Jlc1NlbnQgPSBpc1Jlc1NlbnQ7XG5leHBvcnRzLm5vcm1hbGl6ZVJlcGVhdGVkU2xhc2hlcyA9IG5vcm1hbGl6ZVJlcGVhdGVkU2xhc2hlcztcbmV4cG9ydHMubG9hZEdldEluaXRpYWxQcm9wcyA9IGxvYWRHZXRJbml0aWFsUHJvcHM7XG5leHBvcnRzLlNUID0gZXhwb3J0cy5TUCA9IGV4cG9ydHMud2Fybk9uY2UgPSBleHBvcnRzLmlzQWJzb2x1dGVVcmwgPSB2b2lkIDA7XG5mdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIGtleSwgYXJnKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgdmFyIGluZm8gPSBnZW5ba2V5XShhcmcpO1xuICAgICAgICB2YXIgdmFsdWUgPSBpbmZvLnZhbHVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGluZm8uZG9uZSkge1xuICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oX25leHQsIF90aHJvdyk7XG4gICAgfVxufVxuZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3IoZm4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBzZWxmID0gdGhpcywgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdmFyIGdlbiA9IGZuLmFwcGx5KHNlbGYsIGFyZ3MpO1xuICAgICAgICAgICAgZnVuY3Rpb24gX25leHQodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBfdGhyb3coZXJyKSB7XG4gICAgICAgICAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcInRocm93XCIsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfbmV4dCh1bmRlZmluZWQpO1xuICAgICAgICB9KTtcbiAgICB9O1xufVxuZnVuY3Rpb24gZXhlY09uY2UoZm4pIHtcbiAgICBsZXQgdXNlZCA9IGZhbHNlO1xuICAgIGxldCByZXN1bHQ7XG4gICAgcmV0dXJuICguLi5hcmdzKT0+e1xuICAgICAgICBpZiAoIXVzZWQpIHtcbiAgICAgICAgICAgIHVzZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmVzdWx0ID0gZm4oLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xufVxuLy8gU2NoZW1lOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTMuMVxuLy8gQWJzb2x1dGUgVVJMOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTQuM1xuY29uc3QgQUJTT0xVVEVfVVJMX1JFR0VYID0gL15bYS16QS1aXVthLXpBLVpcXGQrXFwtLl0qPzovO1xuY29uc3QgaXNBYnNvbHV0ZVVybCA9ICh1cmwpPT5BQlNPTFVURV9VUkxfUkVHRVgudGVzdCh1cmwpO1xuZXhwb3J0cy5pc0Fic29sdXRlVXJsID0gaXNBYnNvbHV0ZVVybDtcbmZ1bmN0aW9uIGdldExvY2F0aW9uT3JpZ2luKCkge1xuICAgIGNvbnN0IHsgcHJvdG9jb2wgLCBob3N0bmFtZSAsIHBvcnQgIH0gPSB3aW5kb3cubG9jYXRpb247XG4gICAgcmV0dXJuIGAke3Byb3RvY29sfS8vJHtob3N0bmFtZX0ke3BvcnQgPyAnOicgKyBwb3J0IDogJyd9YDtcbn1cbmZ1bmN0aW9uIGdldFVSTCgpIHtcbiAgICBjb25zdCB7IGhyZWYgIH0gPSB3aW5kb3cubG9jYXRpb247XG4gICAgY29uc3Qgb3JpZ2luID0gZ2V0TG9jYXRpb25PcmlnaW4oKTtcbiAgICByZXR1cm4gaHJlZi5zdWJzdHJpbmcob3JpZ2luLmxlbmd0aCk7XG59XG5mdW5jdGlvbiBnZXREaXNwbGF5TmFtZShDb21wb25lbnQpIHtcbiAgICByZXR1cm4gdHlwZW9mIENvbXBvbmVudCA9PT0gJ3N0cmluZycgPyBDb21wb25lbnQgOiBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ1Vua25vd24nO1xufVxuZnVuY3Rpb24gaXNSZXNTZW50KHJlcykge1xuICAgIHJldHVybiByZXMuZmluaXNoZWQgfHwgcmVzLmhlYWRlcnNTZW50O1xufVxuZnVuY3Rpb24gbm9ybWFsaXplUmVwZWF0ZWRTbGFzaGVzKHVybCkge1xuICAgIGNvbnN0IHVybFBhcnRzID0gdXJsLnNwbGl0KCc/Jyk7XG4gICAgY29uc3QgdXJsTm9RdWVyeSA9IHVybFBhcnRzWzBdO1xuICAgIHJldHVybiB1cmxOb1F1ZXJ5Ly8gZmlyc3Qgd2UgcmVwbGFjZSBhbnkgbm9uLWVuY29kZWQgYmFja3NsYXNoZXMgd2l0aCBmb3J3YXJkXG4gICAgLy8gdGhlbiBub3JtYWxpemUgcmVwZWF0ZWQgZm9yd2FyZCBzbGFzaGVzXG4gICAgLnJlcGxhY2UoL1xcXFwvZywgJy8nKS5yZXBsYWNlKC9cXC9cXC8rL2csICcvJykgKyAodXJsUGFydHNbMV0gPyBgPyR7dXJsUGFydHMuc2xpY2UoMSkuam9pbignPycpfWAgOiAnJyk7XG59XG5mdW5jdGlvbiBsb2FkR2V0SW5pdGlhbFByb3BzKEFwcCwgY3R4KSB7XG4gICAgcmV0dXJuIF9sb2FkR2V0SW5pdGlhbFByb3BzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5mdW5jdGlvbiBfbG9hZEdldEluaXRpYWxQcm9wcygpIHtcbiAgICBfbG9hZEdldEluaXRpYWxQcm9wcyA9IF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKihBcHAsIGN0eCkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgdmFyIHJlZjtcbiAgICAgICAgICAgIGlmICgocmVmID0gQXBwLnByb3RvdHlwZSkgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZi5nZXRJbml0aWFsUHJvcHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYFwiJHtnZXREaXNwbGF5TmFtZShBcHApfS5nZXRJbml0aWFsUHJvcHMoKVwiIGlzIGRlZmluZWQgYXMgYW4gaW5zdGFuY2UgbWV0aG9kIC0gdmlzaXQgaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZ2V0LWluaXRpYWwtcHJvcHMtYXMtYW4taW5zdGFuY2UtbWV0aG9kIGZvciBtb3JlIGluZm9ybWF0aW9uLmA7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIHdoZW4gY2FsbGVkIGZyb20gX2FwcCBgY3R4YCBpcyBuZXN0ZWQgaW4gYGN0eGBcbiAgICAgICAgY29uc3QgcmVzID0gY3R4LnJlcyB8fCBjdHguY3R4ICYmIGN0eC5jdHgucmVzO1xuICAgICAgICBpZiAoIUFwcC5nZXRJbml0aWFsUHJvcHMpIHtcbiAgICAgICAgICAgIGlmIChjdHguY3R4ICYmIGN0eC5Db21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIHBhZ2VQcm9wcyBkZWZhdWx0XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgcGFnZVByb3BzOiB5aWVsZCBsb2FkR2V0SW5pdGlhbFByb3BzKGN0eC5Db21wb25lbnQsIGN0eC5jdHgpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcm9wcyA9IHlpZWxkIEFwcC5nZXRJbml0aWFsUHJvcHMoY3R4KTtcbiAgICAgICAgaWYgKHJlcyAmJiBpc1Jlc1NlbnQocmVzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHByb3BzO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcHJvcHMpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgXCIke2dldERpc3BsYXlOYW1lKEFwcCl9LmdldEluaXRpYWxQcm9wcygpXCIgc2hvdWxkIHJlc29sdmUgdG8gYW4gb2JqZWN0LiBCdXQgZm91bmQgXCIke3Byb3BzfVwiIGluc3RlYWQuYDtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHByb3BzKS5sZW5ndGggPT09IDAgJiYgIWN0eC5jdHgpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYCR7Z2V0RGlzcGxheU5hbWUoQXBwKX0gcmV0dXJuZWQgYW4gZW1wdHkgb2JqZWN0IGZyb20gXFxgZ2V0SW5pdGlhbFByb3BzXFxgLiBUaGlzIGRlLW9wdGltaXplcyBhbmQgcHJldmVudHMgYXV0b21hdGljIHN0YXRpYyBvcHRpbWl6YXRpb24uIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2VtcHR5LW9iamVjdC1nZXRJbml0aWFsUHJvcHNgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvcHM7XG4gICAgfSk7XG4gICAgcmV0dXJuIF9sb2FkR2V0SW5pdGlhbFByb3BzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5sZXQgd2Fybk9uY2UgPSAoXyk9Pnt9O1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBjb25zdCB3YXJuaW5ncyA9IG5ldyBTZXQoKTtcbiAgICBleHBvcnRzLndhcm5PbmNlID0gd2Fybk9uY2UgPSAobXNnKT0+e1xuICAgICAgICBpZiAoIXdhcm5pbmdzLmhhcyhtc2cpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4obXNnKTtcbiAgICAgICAgfVxuICAgICAgICB3YXJuaW5ncy5hZGQobXNnKTtcbiAgICB9O1xufVxuY29uc3QgU1AgPSB0eXBlb2YgcGVyZm9ybWFuY2UgIT09ICd1bmRlZmluZWQnO1xuZXhwb3J0cy5TUCA9IFNQO1xuY29uc3QgU1QgPSBTUCAmJiBbXG4gICAgJ21hcmsnLFxuICAgICdtZWFzdXJlJyxcbiAgICAnZ2V0RW50cmllc0J5TmFtZSdcbl0uZXZlcnkoKG1ldGhvZCk9PnR5cGVvZiBwZXJmb3JtYW5jZVttZXRob2RdID09PSAnZnVuY3Rpb24nKTtcbmV4cG9ydHMuU1QgPSBTVDtcbmNsYXNzIERlY29kZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xufVxuZXhwb3J0cy5EZWNvZGVFcnJvciA9IERlY29kZUVycm9yO1xuY2xhc3MgTm9ybWFsaXplRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG59XG5leHBvcnRzLk5vcm1hbGl6ZUVycm9yID0gTm9ybWFsaXplRXJyb3I7XG5jbGFzcyBQYWdlTm90Rm91bmRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihwYWdlKXtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jb2RlID0gJ0VOT0VOVCc7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IGBDYW5ub3QgZmluZCBtb2R1bGUgZm9yIHBhZ2U6ICR7cGFnZX1gO1xuICAgIH1cbn1cbmV4cG9ydHMuUGFnZU5vdEZvdW5kRXJyb3IgPSBQYWdlTm90Rm91bmRFcnJvcjtcbmNsYXNzIE1pc3NpbmdTdGF0aWNQYWdlIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKHBhZ2UsIG1lc3NhZ2Upe1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBgRmFpbGVkIHRvIGxvYWQgc3RhdGljIGZpbGUgZm9yIHBhZ2U6ICR7cGFnZX0gJHttZXNzYWdlfWA7XG4gICAgfVxufVxuZXhwb3J0cy5NaXNzaW5nU3RhdGljUGFnZSA9IE1pc3NpbmdTdGF0aWNQYWdlO1xuY2xhc3MgTWlkZGxld2FyZU5vdEZvdW5kRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IoKXtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jb2RlID0gJ0VOT0VOVCc7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IGBDYW5ub3QgZmluZCB0aGUgbWlkZGxld2FyZSBtb2R1bGVgO1xuICAgIH1cbn1cbmV4cG9ydHMuTWlkZGxld2FyZU5vdEZvdW5kRXJyb3IgPSBNaWRkbGV3YXJlTm90Rm91bmRFcnJvcjtcbmV4cG9ydHMud2Fybk9uY2UgPSB3YXJuT25jZTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbHMuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZXhlY09uY2UiLCJnZXRMb2NhdGlvbk9yaWdpbiIsImdldFVSTCIsImdldERpc3BsYXlOYW1lIiwiaXNSZXNTZW50Iiwibm9ybWFsaXplUmVwZWF0ZWRTbGFzaGVzIiwibG9hZEdldEluaXRpYWxQcm9wcyIsIlNUIiwiU1AiLCJ3YXJuT25jZSIsImlzQWJzb2x1dGVVcmwiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJyZXNvbHZlIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJhcmciLCJpbmZvIiwiZXJyb3IiLCJkb25lIiwiUHJvbWlzZSIsInRoZW4iLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsInVzZWQiLCJyZXN1bHQiLCJBQlNPTFVURV9VUkxfUkVHRVgiLCJ1cmwiLCJ0ZXN0Iiwid2luZG93IiwibG9jYXRpb24iLCJwcm90b2NvbCIsImhvc3RuYW1lIiwicG9ydCIsImhyZWYiLCJvcmlnaW4iLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJDb21wb25lbnQiLCJkaXNwbGF5TmFtZSIsIm5hbWUiLCJyZXMiLCJmaW5pc2hlZCIsImhlYWRlcnNTZW50IiwidXJsUGFydHMiLCJzcGxpdCIsInVybE5vUXVlcnkiLCJyZXBsYWNlIiwic2xpY2UiLCJqb2luIiwiQXBwIiwiY3R4IiwiX2xvYWRHZXRJbml0aWFsUHJvcHMiLCJyZWYiLCJtZXNzYWdlIiwicHJvcHMiLCJwcm9jZXNzIiwicHJvdG90eXBlIiwiZ2V0SW5pdGlhbFByb3BzIiwiRXJyb3IiLCJwYWdlUHJvcHMiLCJrZXlzIiwiY29uc29sZSIsIndhcm4iLCJfIiwid2FybmluZ3MiLCJTZXQiLCJtc2ciLCJoYXMiLCJhZGQiLCJwZXJmb3JtYW5jZSIsImV2ZXJ5IiwibWV0aG9kIiwiRGVjb2RlRXJyb3IiLCJOb3JtYWxpemVFcnJvciIsIlBhZ2VOb3RGb3VuZEVycm9yIiwicGFnZSIsImNvZGUiLCJNaXNzaW5nU3RhdGljUGFnZSIsIk1pZGRsZXdhcmVOb3RGb3VuZEVycm9yIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../node_modules/next/dist/shared/lib/utils.js\n"));
/***/ }),
diff --git a/renderer/.next/static/chunks/main.js b/renderer/.next/static/chunks/main.js
index 94db9a4..89801c8 100644
--- a/renderer/.next/static/chunks/main.js
+++ b/renderer/.next/static/chunks/main.js
@@ -310,7 +310,7 @@ eval(__webpack_require__.ts("\"trimStart\"in String.prototype||(String.prototype
\*********************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
-eval(__webpack_require__.ts("var __dirname = \"/\";\n(function(){var e={152:function(e){\"use strict\";var n=function(){function defineProperties(e,n){for(var t=0;t]/gm,(function(e){return e==\"&\"?\"&\":e==\"<\"?\"<\":e==\">\"?\">\":\"\"}))}},{key:\"linkify\",value:function linkify(e){return e.replace(/(https?:\\/\\/[^\\s]+)/gm,(function(e){return''+e+\"\"}))}},{key:\"ansiToHtml\",value:function ansiToHtml(e,n){return this.process(e,n,true)}},{key:\"ansiToJson\",value:function ansiToJson(e,n){n=n||{};n.json=true;n.clearLine=false;return this.process(e,n,true)}},{key:\"ansiToText\",value:function ansiToText(e){return this.process(e,{},false)}},{key:\"process\",value:function process(e,n,t){var r=this;var a=this;var i=e.split(/\\033\\[/);var o=i.shift();if(n===undefined||n===null){n={}}n.clearLine=/\\r/.test(e);var l=i.map((function(e){return r.processChunk(e,n,t)}));if(n&&n.json){var s=a.processChunkJson(\"\");s.content=o;s.clearLine=n.clearLine;l.unshift(s);if(n.remove_empty){l=l.filter((function(e){return!e.isEmpty()}))}return l}else{l.unshift(o)}return l.join(\"\")}},{key:\"processChunkJson\",value:function processChunkJson(e,n,r){n=typeof n==\"undefined\"?{}:n;var a=n.use_classes=typeof n.use_classes!=\"undefined\"&&n.use_classes;var i=n.key=a?\"class\":\"color\";var o={content:e,fg:null,bg:null,fg_truecolor:null,bg_truecolor:null,clearLine:n.clearLine,decoration:null,was_processed:false,isEmpty:function isEmpty(){return!o.content}};var l=e.match(/^([!\\x3c-\\x3f]*)([\\d;]*)([\\x20-\\x2c]*[\\x40-\\x7e])([\\s\\S]*)/m);if(!l)return o;var s=o.content=l[4];var u=l[2].split(\";\");if(l[1]!==\"\"||l[3]!==\"m\"){return o}if(!r){return o}var c=this;c.decoration=null;while(u.length>0){var f=u.shift();var d=parseInt(f);if(isNaN(d)||d===0){c.fg=c.bg=c.decoration=null}else if(d===1){c.decoration=\"bold\"}else if(d===2){c.decoration=\"dim\"}else if(d==3){c.decoration=\"italic\"}else if(d==4){c.decoration=\"underline\"}else if(d==5){c.decoration=\"blink\"}else if(d===7){c.decoration=\"reverse\"}else if(d===8){c.decoration=\"hidden\"}else if(d===9){c.decoration=\"strikethrough\"}else if(d==39){c.fg=null}else if(d==49){c.bg=null}else if(d>=30&&d<38){c.fg=t[0][d%10][i]}else if(d>=90&&d<98){c.fg=t[1][d%10][i]}else if(d>=40&&d<48){c.bg=t[0][d%10][i]}else if(d>=100&&d<108){c.bg=t[1][d%10][i]}else if(d===38||d===48){var p=d===38;if(u.length>=1){var b=u.shift();if(b===\"5\"&&u.length>=1){var v=parseInt(u.shift());if(v>=0&&v<=255){if(!a){if(!this.PALETTE_COLORS){c.setupPalette()}if(p){c.fg=this.PALETTE_COLORS[v]}else{c.bg=this.PALETTE_COLORS[v]}}else{var m=v>=16?\"ansi-palette-\"+v:t[v>7?1:0][v%8][\"class\"];if(p){c.fg=m}else{c.bg=m}}}}else if(b===\"2\"&&u.length>=3){var g=parseInt(u.shift());var h=parseInt(u.shift());var y=parseInt(u.shift());if(g>=0&&g<=255&&h>=0&&h<=255&&y>=0&&y<=255){var x=g+\", \"+h+\", \"+y;if(!a){if(p){c.fg=x}else{c.bg=x}}else{if(p){c.fg=\"ansi-truecolor\";c.fg_truecolor=x}else{c.bg=\"ansi-truecolor\";c.bg_truecolor=x}}}}}}}if(c.fg===null&&c.bg===null&&c.decoration===null){return o}else{var w=[];var _=[];var E={};o.fg=c.fg;o.bg=c.bg;o.fg_truecolor=c.fg_truecolor;o.bg_truecolor=c.bg_truecolor;o.decoration=c.decoration;o.was_processed=true;return o}}},{key:\"processChunk\",value:function processChunk(e,n,t){var r=this;var a=this;n=n||{};var i=this.processChunkJson(e,n,t);if(n.json){return i}if(i.isEmpty()){return\"\"}if(!i.was_processed){return i.content}var o=n.use_classes;var l=[];var s=[];var u={};var c=function render_data(e){var n=[];var t=void 0;for(t in e){if(e.hasOwnProperty(t)){n.push(\"data-\"+t+'=\"'+r.escapeForHtml(e[t])+'\"')}}return n.length>0?\" \"+n.join(\" \"):\"\"};if(i.fg){if(o){s.push(i.fg+\"-fg\");if(i.fg_truecolor!==null){u[\"ansi-truecolor-fg\"]=i.fg_truecolor;i.fg_truecolor=null}}else{l.push(\"color:rgb(\"+i.fg+\")\")}}if(i.bg){if(o){s.push(i.bg+\"-bg\");if(i.bg_truecolor!==null){u[\"ansi-truecolor-bg\"]=i.bg_truecolor;i.bg_truecolor=null}}else{l.push(\"background-color:rgb(\"+i.bg+\")\")}}if(i.decoration){if(o){s.push(\"ansi-\"+i.decoration)}else if(i.decoration===\"bold\"){l.push(\"font-weight:bold\")}else if(i.decoration===\"dim\"){l.push(\"opacity:0.5\")}else if(i.decoration===\"italic\"){l.push(\"font-style:italic\")}else if(i.decoration===\"reverse\"){l.push(\"filter:invert(100%)\")}else if(i.decoration===\"hidden\"){l.push(\"visibility:hidden\")}else if(i.decoration===\"strikethrough\"){l.push(\"text-decoration:line-through\")}else{l.push(\"text-decoration:\"+i.decoration)}}if(o){return'\"+i.content+\"\"}else{return'\"+i.content+\"\"}}}]);return Anser}();e.exports=r},848:function(e){(function(n,t){if(true){e.exports=t(n)}else{}})(typeof __webpack_require__.g!=\"undefined\"?__webpack_require__.g:this,(function(e){if(e.CSS&&e.CSS.escape){return e.CSS.escape}var cssEscape=function(e){if(arguments.length==0){throw new TypeError(\"`CSS.escape` requires an argument.\")}var n=String(e);var t=n.length;var r=-1;var a;var i=\"\";var o=n.charCodeAt(0);while(++r=1&&a<=31||a==127||r==0&&a>=48&&a<=57||r==1&&a>=48&&a<=57&&o==45){i+=\"\\\\\"+a.toString(16)+\" \";continue}if(r==0&&t==1&&a==45){i+=\"\\\\\"+n.charAt(r);continue}if(a>=128||a==45||a==95||a>=48&&a<=57||a>=65&&a<=90||a>=97&&a<=122){i+=n.charAt(r);continue}i+=\"\\\\\"+n.charAt(r)}return i};if(!e.CSS){e.CSS={}}e.CSS.escape=cssEscape;return cssEscape}))},962:function(e,n,t){e=t.nmd(e);\n/*!\n * Platform.js v1.3.6\n * Copyright 2014-2020 Benjamin Tan\n * Copyright 2011-2013 John-David Dalton\n * Available under MIT license\n */(function(){\"use strict\";var t={function:true,object:true};var r=t[typeof window]&&window||this;var a=r;var i=t[typeof n]&&n;var o=t[\"object\"]&&e&&!e.nodeType&&e;var l=i&&o&&typeof __webpack_require__.g==\"object\"&&__webpack_require__.g;if(l&&(l.global===l||l.window===l||l.self===l)){r=l}var s=Math.pow(2,53)-1;var u=/\\bOpera/;var c=this;var f=Object.prototype;var d=f.hasOwnProperty;var p=f.toString;function capitalize(e){e=String(e);return e.charAt(0).toUpperCase()+e.slice(1)}function cleanupOS(e,n,t){var r={\"10.0\":\"10\",6.4:\"10 Technical Preview\",6.3:\"8.1\",6.2:\"8\",6.1:\"Server 2008 R2 / 7\",\"6.0\":\"Server 2008 / Vista\",5.2:\"Server 2003 / XP 64-bit\",5.1:\"XP\",5.01:\"2000 SP1\",\"5.0\":\"2000\",\"4.0\":\"NT\",\"4.90\":\"ME\"};if(n&&t&&/^Win/i.test(e)&&!/^Windows Phone /i.test(e)&&(r=r[/[\\d.]+$/.exec(e)])){e=\"Windows \"+r}e=String(e);if(n&&t){e=e.replace(RegExp(n,\"i\"),t)}e=format(e.replace(/ ce$/i,\" CE\").replace(/\\bhpw/i,\"web\").replace(/\\bMacintosh\\b/,\"Mac OS\").replace(/_PowerPC\\b/i,\" OS\").replace(/\\b(OS X) [^ \\d]+/i,\"$1\").replace(/\\bMac (OS X)\\b/,\"$1\").replace(/\\/(\\d)/,\" $1\").replace(/_/g,\".\").replace(/(?: BePC|[ .]*fc[ \\d.]+)$/i,\"\").replace(/\\bx86\\.64\\b/gi,\"x86_64\").replace(/\\b(Windows Phone) OS\\b/,\"$1\").replace(/\\b(Chrome OS \\w+) [\\d.]+\\b/,\"$1\").split(\" on \")[0]);return e}function each(e,n){var t=-1,r=e?e.length:0;if(typeof r==\"number\"&&r>-1&&r<=s){while(++t3&&\"WebKit\"||/\\bOpera\\b/.test(A)&&(/\\bOPR\\b/.test(e)?\"Blink\":\"Presto\")||/\\b(?:Midori|Nook|Safari)\\b/i.test(e)&&!/^(?:Trident|EdgeHTML)$/.test(P)&&\"WebKit\"||!P&&/\\bMSIE\\b/i.test(e)&&(z==\"Mac OS\"?\"Tasman\":\"Trident\")||P==\"WebKit\"&&/\\bPlayStation\\b(?! Vita\\b)/i.test(A)&&\"NetFront\"){P=[O]}if(A==\"IE\"&&(O=(/; *(?:XBLWP|ZuneWP)(\\d+)/i.exec(e)||0)[1])){A+=\" Mobile\";z=\"Windows Phone \"+(/\\+$/.test(O)?O:O+\".x\");j.unshift(\"desktop mode\")}else if(/\\bWPDesktop\\b/i.test(e)){A=\"IE Mobile\";z=\"Windows Phone 8.x\";j.unshift(\"desktop mode\");C||(C=(/\\brv:([\\d.]+)/.exec(e)||0)[1])}else if(A!=\"IE\"&&P==\"Trident\"&&(O=/\\brv:([\\d.]+)/.exec(e))){if(A){j.push(\"identifying as \"+A+(C?\" \"+C:\"\"))}A=\"IE\";C=O[1]}if(T){if(isHostType(n,\"global\")){if(g){O=g.lang.System;S=O.getProperty(\"os.arch\");z=z||O.getProperty(\"os.name\")+\" \"+O.getProperty(\"os.version\")}if(h){try{C=n.require(\"ringo/engine\").version.join(\".\");A=\"RingoJS\"}catch(e){if((O=n.system)&&O.global.system==n.system){A=\"Narwhal\";z||(z=O[0].os||null)}}if(!A){A=\"Rhino\"}}else if(typeof n.process==\"object\"&&!n.process.browser&&(O=n.process)){if(typeof O.versions==\"object\"){if(typeof O.versions.electron==\"string\"){j.push(\"Node \"+O.versions.node);A=\"Electron\";C=O.versions.electron}else if(typeof O.versions.nw==\"string\"){j.push(\"Chromium \"+C,\"Node \"+O.versions.node);A=\"NW.js\";C=O.versions.nw}}if(!A){A=\"Node.js\";S=O.arch;z=O.platform;C=/[\\d.]+/.exec(O.version);C=C?C[0]:null}}}else if(getClassOf(O=n.runtime)==d){A=\"Adobe AIR\";z=O.flash.system.Capabilities.os}else if(getClassOf(O=n.phantom)==m){A=\"PhantomJS\";C=(O=O.version||null)&&O.major+\".\"+O.minor+\".\"+O.patch}else if(typeof w.documentMode==\"number\"&&(O=/\\bTrident\\/(\\d+)/i.exec(e))){C=[C,w.documentMode];if((O=+O[1]+4)!=C[1]){j.push(\"IE \"+C[1]+\" mode\");P&&(P[1]=\"\");C[1]=O}C=A==\"IE\"?String(C[1].toFixed(1)):C[0]}else if(typeof w.documentMode==\"number\"&&/^(?:Chrome|Firefox)\\b/.test(A)){j.push(\"masking as \"+A+\" \"+C);A=\"IE\";C=\"11.0\";P=[\"Trident\"];z=\"Windows\"}z=z&&format(z)}if(C&&(O=/(?:[ab]|dp|pre|[ab]\\d+pre)(?:\\d+\\+?)?$/i.exec(C)||/(?:alpha|beta)(?: ?\\d)?/i.exec(e+\";\"+(T&&i.appMinorVersion))||/\\bMinefield\\b/i.test(e)&&\"a\")){k=/b/i.test(O)?\"beta\":\"alpha\";C=C.replace(RegExp(O+\"\\\\+?$\"),\"\")+(k==\"beta\"?x:y)+(/\\d+\\+?/.exec(O)||\"\")}if(A==\"Fennec\"||A==\"Firefox\"&&/\\b(?:Android|Firefox OS|KaiOS)\\b/.test(z)){A=\"Firefox Mobile\"}else if(A==\"Maxthon\"&&C){C=C.replace(/\\.[\\d.]+/,\".x\")}else if(/\\bXbox\\b/i.test(D)){if(D==\"Xbox 360\"){z=null}if(D==\"Xbox 360\"&&/\\bIEMobile\\b/.test(e)){j.unshift(\"mobile mode\")}}else if((/^(?:Chrome|IE|Opera)$/.test(A)||A&&!D&&!/Browser|Mobi/.test(A))&&(z==\"Windows CE\"||/Mobi/i.test(e))){A+=\" Mobile\"}else if(A==\"IE\"&&T){try{if(n.external===null){j.unshift(\"platform preview\")}}catch(e){j.unshift(\"embedded\")}}else if((/\\bBlackBerry\\b/.test(D)||/\\bBB10\\b/.test(e))&&(O=(RegExp(D.replace(/ +/g,\" *\")+\"/([.\\\\d]+)\",\"i\").exec(e)||0)[1]||C)){O=[O,/BB10/.test(e)];z=(O[1]?(D=null,N=\"BlackBerry\"):\"Device Software\")+\" \"+O[0];C=null}else if(this!=forOwn&&D!=\"Wii\"&&(T&&_||/Opera/.test(A)&&/\\b(?:MSIE|Firefox)\\b/i.test(e)||A==\"Firefox\"&&/\\bOS X (?:\\d+\\.){2,}/.test(z)||A==\"IE\"&&(z&&!/^Win/.test(z)&&C>5.5||/\\bWindows XP\\b/.test(z)&&C>8||C==8&&!/\\bTrident\\b/.test(e)))&&!u.test(O=parse.call(forOwn,e.replace(u,\"\")+\";\"))&&O.name){O=\"ing as \"+O.name+((O=O.version)?\" \"+O:\"\");if(u.test(A)){if(/\\bIE\\b/.test(O)&&z==\"Mac OS\"){z=null}O=\"identify\"+O}else{O=\"mask\"+O;if(E){A=format(E.replace(/([a-z])([A-Z])/g,\"$1 $2\"))}else{A=\"Opera\"}if(/\\bIE\\b/.test(O)){z=null}if(!T){C=null}}P=[\"Presto\"];j.push(O)}if(O=(/\\bAppleWebKit\\/([\\d.]+\\+?)/i.exec(e)||0)[1]){O=[parseFloat(O.replace(/\\.(\\d)$/,\".0$1\")),O];if(A==\"Safari\"&&O[1].slice(-1)==\"+\"){A=\"WebKit Nightly\";k=\"alpha\";C=O[1].slice(0,-1)}else if(C==O[1]||C==(O[2]=(/\\bSafari\\/([\\d.]+\\+?)/i.exec(e)||0)[1])){C=null}O[1]=(/\\b(?:Headless)?Chrome\\/([\\d.]+)/i.exec(e)||0)[1];if(O[0]==537.36&&O[2]==537.36&&parseFloat(O[1])>=28&&P==\"WebKit\"){P=[\"Blink\"]}if(!T||!s&&!O[1]){P&&(P[1]=\"like Safari\");O=(O=O[0],O<400?1:O<500?2:O<526?3:O<533?4:O<534?\"4+\":O<535?5:O<537?6:O<538?7:O<601?8:O<602?9:O<604?10:O<606?11:O<608?12:\"12\")}else{P&&(P[1]=\"like Chrome\");O=O[1]||(O=O[0],O<530?1:O<532?2:O<532.05?3:O<533?4:O<534.03?5:O<534.07?6:O<534.1?7:O<534.13?8:O<534.16?9:O<534.24?10:O<534.3?11:O<535.01?12:O<535.02?\"13+\":O<535.07?15:O<535.11?16:O<535.19?17:O<536.05?18:O<536.1?19:O<537.01?20:O<537.11?\"21+\":O<537.13?23:O<537.18?24:O<537.24?25:O<537.36?26:P!=\"Blink\"?\"27\":\"28\")}P&&(P[1]+=\" \"+(O+=typeof O==\"number\"?\".x\":/[.+]/.test(O)?\"\":\"+\"));if(A==\"Safari\"&&(!C||parseInt(C)>45)){C=O}else if(A==\"Chrome\"&&/\\bHeadlessChrome/i.test(e)){j.unshift(\"headless\")}}if(A==\"Opera\"&&(O=/\\bzbov|zvav$/.exec(z))){A+=\" \";j.unshift(\"desktop mode\");if(O==\"zvav\"){A+=\"Mini\";C=null}else{A+=\"Mobile\"}z=z.replace(RegExp(\" *\"+O+\"$\"),\"\")}else if(A==\"Safari\"&&/\\bChrome\\b/.exec(P&&P[1])){j.unshift(\"desktop mode\");A=\"Chrome Mobile\";C=null;if(/\\bOS X\\b/.test(z)){N=\"Apple\";z=\"iOS 4.3+\"}else{z=null}}else if(/\\bSRWare Iron\\b/.test(A)&&!C){C=getVersion(\"Chrome\")}if(C&&C.indexOf(O=/[\\d.]+$/.exec(z))==0&&e.indexOf(\"/\"+O+\"-\")>-1){z=trim(z.replace(O,\"\"))}if(z&&z.indexOf(A)!=-1&&!RegExp(A+\" OS\").test(z)){z=z.replace(RegExp(\" *\"+qualify(A)+\" *\"),\"\")}if(P&&!/\\b(?:Avant|Nook)\\b/.test(A)&&(/Browser|Lunascape|Maxthon/.test(A)||A!=\"Safari\"&&/^iOS/.test(z)&&/\\bSafari\\b/.test(P[1])||/^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|SRWare Iron|Vivaldi|Web)/.test(A)&&P[1])){(O=P[P.length-1])&&j.push(O)}if(j.length){j=[\"(\"+j.join(\"; \")+\")\"]}if(N&&D&&D.indexOf(N)<0){j.push(\"on \"+N)}if(D){j.push((/^on /.test(j[j.length-1])?\"\":\"on \")+D)}if(z){O=/ ([\\d.+]+)$/.exec(z);M=O&&z.charAt(z.length-O[0].length-1)==\"/\";z={architecture:32,family:O&&!M?z.replace(O[0],\"\"):z,version:O?O[1]:null,toString:function(){var e=this.version;return this.family+(e&&!M?\" \"+e:\"\")+(this.architecture==64?\" 64-bit\":\"\")}}}if((O=/\\b(?:AMD|IA|Win|WOW|x86_|x)64\\b/i.exec(S))&&!/\\bi686\\b/i.test(S)){if(z){z.architecture=64;z.family=z.family.replace(RegExp(\" *\"+O),\"\")}if(A&&(/\\bWOW64\\b/i.test(e)||T&&/\\w(?:86|32)$/.test(i.cpuClass||i.platform)&&!/\\bWin64; x64\\b/i.test(e))){j.unshift(\"32-bit\")}}else if(z&&/^OS X/.test(z.family)&&A==\"Chrome\"&&parseFloat(C)>=39){z.architecture=64}e||(e=null);var I={};I.description=e;I.layout=P&&P[0];I.manufacturer=N;I.name=A;I.prerelease=k;I.product=D;I.ua=e;I.version=A&&C;I.os=z||{architecture:null,family:null,version:null,toString:function(){return\"null\"}};I.parse=parse;I.toString=toStringPlatform;if(I.version){j.unshift(C)}if(I.name){j.unshift(A)}if(z&&A&&!(z==String(z).split(\" \")[0]&&(z==A.split(\" \")[0]||D))){j.push(D?\"(\"+z+\")\":\"on \"+z)}if(j.length){I.description=j.join(\" \")}return I}var b=parse();if(i&&o){forOwn(b,(function(e,n){i[n]=e}))}else{r.platform=b}}).call(this)},116:function(e,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:true});var t=\"\";function parse(e){var n=e.split(\"\\n\");return n.reduce((function(e,n){var t=parseChrome(n)||parseWinjs(n)||parseGecko(n)||parseNode(n)||parseJSC(n);if(t){e.push(t)}return e}),[])}var r=/^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack||\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;var a=/\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;function parseChrome(e){var n=r.exec(e);if(!n){return null}var i=n[2]&&n[2].indexOf(\"native\")===0;var o=n[2]&&n[2].indexOf(\"eval\")===0;var l=a.exec(n[2]);if(o&&l!=null){n[2]=l[1];n[3]=l[2];n[4]=l[3]}return{file:!i?n[2]:null,methodName:n[1]||t,arguments:i?[n[2]]:[],lineNumber:n[3]?+n[3]:null,column:n[4]?+n[4]:null}}var i=/^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;function parseWinjs(e){var n=i.exec(e);if(!n){return null}return{file:n[2],methodName:n[1]||t,arguments:[],lineNumber:+n[3],column:n[4]?+n[4]:null}}var o=/^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;var l=/(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;function parseGecko(e){var n=o.exec(e);if(!n){return null}var r=n[3]&&n[3].indexOf(\" > eval\")>-1;var a=l.exec(n[3]);if(r&&a!=null){n[3]=a[1];n[4]=a[2];n[5]=null}return{file:n[3],methodName:n[1]||t,arguments:n[2]?n[2].split(\",\"):[],lineNumber:n[4]?+n[4]:null,column:n[5]?+n[5]:null}}var s=/^\\s*(?:([^@]*)(?:\\((.*?)\\))?@)?(\\S.*?):(\\d+)(?::(\\d+))?\\s*$/i;function parseJSC(e){var n=s.exec(e);if(!n){return null}return{file:n[3],methodName:n[1]||t,arguments:[],lineNumber:+n[4],column:n[5]?+n[5]:null}}var u=/^\\s*at (?:((?:\\[object object\\])?[^\\\\/]+(?: \\[as \\S+\\])?) )?\\(?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;function parseNode(e){var n=u.exec(e);if(!n){return null}return{file:n[2],methodName:n[1]||t,arguments:[],lineNumber:+n[3],column:n[4]?+n[4]:null}}n.parse=parse},388:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});var a=this&&this.__setModuleDefault||(Object.create?function(e,n){Object.defineProperty(e,\"default\",{enumerable:true,value:n})}:function(e,n){e[\"default\"]=n});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t in e)if(t!==\"default\"&&Object.prototype.hasOwnProperty.call(e,t))r(n,e,t);a(n,e);return n};n.__esModule=true;n.onRefresh=n.unregister=n.register=n.onBuildError=n.onBuildOk=n.ReactDevOverlay=n.getServerError=n.getErrorByType=void 0;var o=i(t(857));var l=t(51);var s=false;var u=undefined;function onUnhandledError(e){var n=e===null||e===void 0?void 0:e.error;if(!n||!(n instanceof Error)||typeof n.stack!==\"string\"){return}if(n.message.match(/(hydration|content does not match|did not match)/i)){n.message+=\"\\n\\nSee more info here: https://nextjs.org/docs/messages/react-hydration-error\"}var t=n;o.emit({type:o.TYPE_UNHANDLED_ERROR,reason:n,frames:(0,l.parseStack)(t.stack)})}function onUnhandledRejection(e){var n=e===null||e===void 0?void 0:e.reason;if(!n||!(n instanceof Error)||typeof n.stack!==\"string\"){return}var t=n;o.emit({type:o.TYPE_UNHANDLED_REJECTION,reason:n,frames:(0,l.parseStack)(t.stack)})}function register(){if(s){return}s=true;try{var e=Error.stackTraceLimit;Error.stackTraceLimit=50;u=e}catch(e){}window.addEventListener(\"error\",onUnhandledError);window.addEventListener(\"unhandledrejection\",onUnhandledRejection)}n.register=register;function unregister(){if(!s){return}s=false;if(u!==undefined){try{Error.stackTraceLimit=u}catch(e){}u=undefined}window.removeEventListener(\"error\",onUnhandledError);window.removeEventListener(\"unhandledrejection\",onUnhandledRejection)}n.unregister=unregister;function onBuildOk(){o.emit({type:o.TYPE_BUILD_OK})}n.onBuildOk=onBuildOk;function onBuildError(e){o.emit({type:o.TYPE_BUILD_ERROR,message:e})}n.onBuildError=onBuildError;function onRefresh(){o.emit({type:o.TYPE_REFRESH})}n.onRefresh=onRefresh;var c=t(88);r(n,c,\"getErrorByType\");var f=t(566);r(n,f,\"getServerError\");var d=t(282);r(n,d,\"default\",\"ReactDevOverlay\")},446:function(e,n,t){\"use strict\";var r=this&&this.__extends||function(){var extendStatics=function(e,n){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)if(Object.prototype.hasOwnProperty.call(n,t))e[t]=n[t]};return extendStatics(e,n)};return function(e,n){if(typeof n!==\"function\"&&n!==null)throw new TypeError(\"Class extends value \"+String(n)+\" is not a constructor or null\");extendStatics(e,n);function __(){this.constructor=e}e.prototype=n===null?Object.create(n):(__.prototype=n.prototype,new __)}}();var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};n.__esModule=true;n.ErrorBoundary=void 0;var i=a(t(522));var o=function(e){r(ErrorBoundary,e);function ErrorBoundary(){var n=e!==null&&e.apply(this,arguments)||this;n.state={error:null};return n}ErrorBoundary.getDerivedStateFromError=function(e){return{error:e}};ErrorBoundary.prototype.componentDidCatch=function(e,n){this.props.onError(e,(n===null||n===void 0?void 0:n.componentStack)||null);if(!this.props.globalOverlay){this.setState({error:e})}};ErrorBoundary.prototype.render=function(){return this.state.error||this.props.globalOverlay&&this.props.isMounted?this.props.globalOverlay?i[\"default\"].createElement(\"html\",null,i[\"default\"].createElement(\"head\",null),i[\"default\"].createElement(\"body\",null)):null:this.props.children};return ErrorBoundary}(i[\"default\"].PureComponent);n.ErrorBoundary=o},282:function(e,n,t){\"use strict\";var r=this&&this.__assign||function(){r=Object.assign||function(e){for(var n,t=1,r=arguments.length;t0)&&!(a=r.next()).done)i.push(a.value)}catch(e){o={error:e}}finally{try{if(a&&!a.done&&(t=r[\"return\"]))t.call(r)}finally{if(o)throw o.error}}return i};var s=this&&this.__spreadArray||function(e,n,t){if(t||arguments.length===2)for(var r=0,a=n.length,i;r? +\\d+ +\\| ( *)/.exec((0,c[\"default\"])(e))})).filter(Boolean).map((function(e){return e.pop()})).reduce((function(e,n){return isNaN(e)?n.length:Math.min(e,n.length)}),NaN);if(n>1){var r=\" \".repeat(n);return e.map((function(e,n){return~(n=e.indexOf(\"|\"))?e.substring(0,n)+e.substring(n).replace(r,\"\"):e})).join(\"\\n\")}return e.join(\"\\n\")}),[t]);var i=u.useMemo((function(){return s[\"default\"].ansiToJson(a,{json:true,use_classes:true,remove_empty:true})}),[a]);var o=u.useCallback((function(){var e;var t=new URLSearchParams;for(var r in n){t.append(r,((e=n[r])!==null&&e!==void 0?e:\"\").toString())}self.fetch(\"\".concat( false||\"\",\"/__nextjs_launch-editor?\").concat(t.toString())).then((function(){}),(function(){console.error(\"There was an issue opening this code in your editor.\")}))}),[n]);return u.createElement(\"div\",{\"data-nextjs-codeframe\":true},u.createElement(\"div\",null,u.createElement(\"p\",{role:\"link\",onClick:o,tabIndex:1,title:\"Click to open in your editor\"},u.createElement(\"span\",null,(0,f.getFrameSource)(n),\" @ \",n.methodName),u.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"},u.createElement(\"path\",{d:\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"}),u.createElement(\"polyline\",{points:\"15 3 21 3 21 9\"}),u.createElement(\"line\",{x1:\"10\",y1:\"14\",x2:\"21\",y2:\"3\"})))),u.createElement(\"pre\",null,i.map((function(e,n){return u.createElement(\"span\",{key:\"frame-\".concat(n),style:r({color:e.fg?\"var(--color-\".concat(e.fg,\")\"):undefined},e.decoration===\"bold\"?{fontWeight:800}:e.decoration===\"italic\"?{fontStyle:\"italic\"}:undefined)},e.content)}))))};n.CodeFrame=d},30:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});n.__esModule=true;n.CodeFrame=void 0;var a=t(154);r(n,a,\"CodeFrame\")},265:function(e,n,t){\"use strict\";var r=this&&this.__makeTemplateObject||function(e,n){if(Object.defineProperty){Object.defineProperty(e,\"raw\",{value:n})}else{e.raw=n}return e};n.__esModule=true;n.styles=void 0;var a=t(464);var i=(0,a.noop)(o||(o=r([\"\\n [data-nextjs-codeframe] {\\n overflow: auto;\\n border-radius: var(--size-gap-half);\\n background-color: var(--color-ansi-bg);\\n color: var(--color-ansi-fg);\\n }\\n [data-nextjs-codeframe]::selection,\\n [data-nextjs-codeframe] *::selection {\\n background-color: var(--color-ansi-selection);\\n }\\n [data-nextjs-codeframe] * {\\n color: inherit;\\n background-color: transparent;\\n font-family: var(--font-stack-monospace);\\n }\\n\\n [data-nextjs-codeframe] > * {\\n margin: 0;\\n padding: calc(var(--size-gap) + var(--size-gap-half))\\n calc(var(--size-gap-double) + var(--size-gap-half));\\n }\\n [data-nextjs-codeframe] > div {\\n display: inline-block;\\n width: auto;\\n min-width: 100%;\\n border-bottom: 1px solid var(--color-ansi-bright-black);\\n }\\n [data-nextjs-codeframe] > div > p {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n cursor: pointer;\\n margin: 0;\\n }\\n [data-nextjs-codeframe] > div > p:hover {\\n text-decoration: underline dotted;\\n }\\n [data-nextjs-codeframe] div > p > svg {\\n width: auto;\\n height: 1em;\\n margin-left: 8px;\\n }\\n [data-nextjs-codeframe] div > pre {\\n overflow: hidden;\\n display: inline-block;\\n }\\n\"],[\"\\n [data-nextjs-codeframe] {\\n overflow: auto;\\n border-radius: var(--size-gap-half);\\n background-color: var(--color-ansi-bg);\\n color: var(--color-ansi-fg);\\n }\\n [data-nextjs-codeframe]::selection,\\n [data-nextjs-codeframe] *::selection {\\n background-color: var(--color-ansi-selection);\\n }\\n [data-nextjs-codeframe] * {\\n color: inherit;\\n background-color: transparent;\\n font-family: var(--font-stack-monospace);\\n }\\n\\n [data-nextjs-codeframe] > * {\\n margin: 0;\\n padding: calc(var(--size-gap) + var(--size-gap-half))\\n calc(var(--size-gap-double) + var(--size-gap-half));\\n }\\n [data-nextjs-codeframe] > div {\\n display: inline-block;\\n width: auto;\\n min-width: 100%;\\n border-bottom: 1px solid var(--color-ansi-bright-black);\\n }\\n [data-nextjs-codeframe] > div > p {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n cursor: pointer;\\n margin: 0;\\n }\\n [data-nextjs-codeframe] > div > p:hover {\\n text-decoration: underline dotted;\\n }\\n [data-nextjs-codeframe] div > p > svg {\\n width: auto;\\n height: 1em;\\n margin-left: 8px;\\n }\\n [data-nextjs-codeframe] div > pre {\\n overflow: hidden;\\n display: inline-block;\\n }\\n\"])));n.styles=i;var o},438:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});var a=this&&this.__setModuleDefault||(Object.create?function(e,n){Object.defineProperty(e,\"default\",{enumerable:true,value:n})}:function(e,n){e[\"default\"]=n});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t in e)if(t!==\"default\"&&Object.prototype.hasOwnProperty.call(e,t))r(n,e,t);a(n,e);return n};var o=this&&this.__rest||function(e,n){var t={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)&&n.indexOf(r)<0)t[r]=e[r];if(e!=null&&typeof Object.getOwnPropertySymbols===\"function\")for(var a=0,r=Object.getOwnPropertySymbols(e);a0)&&!(a=r.next()).done)i.push(a.value)}catch(e){o={error:e}}finally{try{if(a&&!a.done&&(t=r[\"return\"]))t.call(r)}finally{if(o)throw o.error}}return i};n.__esModule=true;n.Dialog=void 0;var s=i(t(522));var u=t(196);var c=function Dialog(e){var n=e.children,t=e.type,r=e.onClose,a=o(e,[\"children\",\"type\",\"onClose\"]);var i=l(s.useState(null),2),c=i[0],f=i[1];var d=s.useCallback((function(e){f(e)}),[]);(0,u.useOnClickOutside)(c,r);s.useEffect((function(){if(c==null){return}var e=c.getRootNode();if(!(e instanceof ShadowRoot)){return}var n=e;function handler(e){var t=n.activeElement;if(e.key===\"Enter\"&&t instanceof HTMLElement&&t.getAttribute(\"role\")===\"link\"){e.preventDefault();e.stopPropagation();t.click()}}n.addEventListener(\"keydown\",handler);return function(){return n.removeEventListener(\"keydown\",handler)}}),[c]);return s.createElement(\"div\",{ref:d,\"data-nextjs-dialog\":true,tabIndex:-1,role:\"dialog\",\"aria-labelledby\":a[\"aria-labelledby\"],\"aria-describedby\":a[\"aria-describedby\"],\"aria-modal\":\"true\"},s.createElement(\"div\",{\"data-nextjs-dialog-banner\":true,className:\"banner-\".concat(t)}),n)};n.Dialog=c},593:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});var a=this&&this.__setModuleDefault||(Object.create?function(e,n){Object.defineProperty(e,\"default\",{enumerable:true,value:n})}:function(e,n){e[\"default\"]=n});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t in e)if(t!==\"default\"&&Object.prototype.hasOwnProperty.call(e,t))r(n,e,t);a(n,e);return n};n.__esModule=true;n.DialogBody=void 0;var o=i(t(522));var l=function DialogBody(e){var n=e.children,t=e.className;return o.createElement(\"div\",{\"data-nextjs-dialog-body\":true,className:t},n)};n.DialogBody=l},725:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});var a=this&&this.__setModuleDefault||(Object.create?function(e,n){Object.defineProperty(e,\"default\",{enumerable:true,value:n})}:function(e,n){e[\"default\"]=n});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t in e)if(t!==\"default\"&&Object.prototype.hasOwnProperty.call(e,t))r(n,e,t);a(n,e);return n};n.__esModule=true;n.DialogContent=void 0;var o=i(t(522));var l=function DialogContent(e){var n=e.children,t=e.className;return o.createElement(\"div\",{\"data-nextjs-dialog-content\":true,className:t},n)};n.DialogContent=l},289:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});var a=this&&this.__setModuleDefault||(Object.create?function(e,n){Object.defineProperty(e,\"default\",{enumerable:true,value:n})}:function(e,n){e[\"default\"]=n});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t in e)if(t!==\"default\"&&Object.prototype.hasOwnProperty.call(e,t))r(n,e,t);a(n,e);return n};n.__esModule=true;n.DialogHeader=void 0;var o=i(t(522));var l=function DialogHeader(e){var n=e.children,t=e.className;return o.createElement(\"div\",{\"data-nextjs-dialog-header\":true,className:t},n)};n.DialogHeader=l},931:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});n.__esModule=true;n.styles=n.DialogHeader=n.DialogContent=n.DialogBody=n.Dialog=void 0;var a=t(438);r(n,a,\"Dialog\");var i=t(593);r(n,i,\"DialogBody\");var o=t(725);r(n,o,\"DialogContent\");var l=t(289);r(n,l,\"DialogHeader\");var s=t(663);r(n,s,\"styles\")},663:function(e,n,t){\"use strict\";var r=this&&this.__makeTemplateObject||function(e,n){if(Object.defineProperty){Object.defineProperty(e,\"raw\",{value:n})}else{e.raw=n}return e};n.__esModule=true;n.styles=void 0;var a=t(464);var i=(0,a.noop)(o||(o=r([\"\\n [data-nextjs-dialog] {\\n display: flex;\\n flex-direction: column;\\n width: 100%;\\n margin-right: auto;\\n margin-left: auto;\\n outline: none;\\n background: white;\\n border-radius: var(--size-gap);\\n box-shadow: 0 var(--size-gap-half) var(--size-gap-double)\\n rgba(0, 0, 0, 0.25);\\n max-height: calc(100% - 56px);\\n overflow-y: hidden;\\n }\\n\\n @media (max-height: 812px) {\\n [data-nextjs-dialog-overlay] {\\n max-height: calc(100% - 15px);\\n }\\n }\\n\\n @media (min-width: 576px) {\\n [data-nextjs-dialog] {\\n max-width: 540px;\\n box-shadow: 0 var(--size-gap) var(--size-gap-quad) rgba(0, 0, 0, 0.25);\\n }\\n }\\n\\n @media (min-width: 768px) {\\n [data-nextjs-dialog] {\\n max-width: 720px;\\n }\\n }\\n\\n @media (min-width: 992px) {\\n [data-nextjs-dialog] {\\n max-width: 960px;\\n }\\n }\\n\\n [data-nextjs-dialog-banner] {\\n position: relative;\\n }\\n [data-nextjs-dialog-banner].banner-warning {\\n border-color: var(--color-ansi-yellow);\\n }\\n [data-nextjs-dialog-banner].banner-error {\\n border-color: var(--color-ansi-red);\\n }\\n\\n [data-nextjs-dialog-banner]::after {\\n z-index: 2;\\n content: '';\\n position: absolute;\\n top: 0;\\n right: 0;\\n width: 100%;\\n /* banner width: */\\n border-top-width: var(--size-gap-half);\\n border-bottom-width: 0;\\n border-top-style: solid;\\n border-bottom-style: solid;\\n border-top-color: inherit;\\n border-bottom-color: transparent;\\n }\\n\\n [data-nextjs-dialog-content] {\\n overflow-y: auto;\\n border: none;\\n margin: 0;\\n /* calc(padding + banner width offset) */\\n padding: calc(var(--size-gap-double) + var(--size-gap-half))\\n var(--size-gap-double);\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n }\\n [data-nextjs-dialog-content] > [data-nextjs-dialog-header] {\\n flex-shrink: 0;\\n margin-bottom: var(--size-gap-double);\\n }\\n [data-nextjs-dialog-content] > [data-nextjs-dialog-body] {\\n position: relative;\\n flex: 1 1 auto;\\n }\\n\"],[\"\\n [data-nextjs-dialog] {\\n display: flex;\\n flex-direction: column;\\n width: 100%;\\n margin-right: auto;\\n margin-left: auto;\\n outline: none;\\n background: white;\\n border-radius: var(--size-gap);\\n box-shadow: 0 var(--size-gap-half) var(--size-gap-double)\\n rgba(0, 0, 0, 0.25);\\n max-height: calc(100% - 56px);\\n overflow-y: hidden;\\n }\\n\\n @media (max-height: 812px) {\\n [data-nextjs-dialog-overlay] {\\n max-height: calc(100% - 15px);\\n }\\n }\\n\\n @media (min-width: 576px) {\\n [data-nextjs-dialog] {\\n max-width: 540px;\\n box-shadow: 0 var(--size-gap) var(--size-gap-quad) rgba(0, 0, 0, 0.25);\\n }\\n }\\n\\n @media (min-width: 768px) {\\n [data-nextjs-dialog] {\\n max-width: 720px;\\n }\\n }\\n\\n @media (min-width: 992px) {\\n [data-nextjs-dialog] {\\n max-width: 960px;\\n }\\n }\\n\\n [data-nextjs-dialog-banner] {\\n position: relative;\\n }\\n [data-nextjs-dialog-banner].banner-warning {\\n border-color: var(--color-ansi-yellow);\\n }\\n [data-nextjs-dialog-banner].banner-error {\\n border-color: var(--color-ansi-red);\\n }\\n\\n [data-nextjs-dialog-banner]::after {\\n z-index: 2;\\n content: '';\\n position: absolute;\\n top: 0;\\n right: 0;\\n width: 100%;\\n /* banner width: */\\n border-top-width: var(--size-gap-half);\\n border-bottom-width: 0;\\n border-top-style: solid;\\n border-bottom-style: solid;\\n border-top-color: inherit;\\n border-bottom-color: transparent;\\n }\\n\\n [data-nextjs-dialog-content] {\\n overflow-y: auto;\\n border: none;\\n margin: 0;\\n /* calc(padding + banner width offset) */\\n padding: calc(var(--size-gap-double) + var(--size-gap-half))\\n var(--size-gap-double);\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n }\\n [data-nextjs-dialog-content] > [data-nextjs-dialog-header] {\\n flex-shrink: 0;\\n margin-bottom: var(--size-gap-double);\\n }\\n [data-nextjs-dialog-content] > [data-nextjs-dialog-body] {\\n position: relative;\\n flex: 1 1 auto;\\n }\\n\"])));n.styles=i;var o},652:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});var a=this&&this.__setModuleDefault||(Object.create?function(e,n){Object.defineProperty(e,\"default\",{enumerable:true,value:n})}:function(e,n){e[\"default\"]=n});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t in e)if(t!==\"default\"&&Object.prototype.hasOwnProperty.call(e,t))r(n,e,t);a(n,e);return n};var o=this&&this.__read||function(e,n){var t=typeof Symbol===\"function\"&&e[Symbol.iterator];if(!t)return e;var r=t.call(e),a,i=[],o;try{while((n===void 0||n-- >0)&&!(a=r.next()).done)i.push(a.value)}catch(e){o={error:e}}finally{try{if(a&&!a.done&&(t=r[\"return\"]))t.call(r)}finally{if(o)throw o.error}}return i};n.__esModule=true;n.LeftRightDialogHeader=void 0;var l=i(t(522));var s=t(514);var u=function LeftRightDialogHeader(e){var n=e.children,t=e.className,r=e.previous,a=e.next,i=e.close;var u=l.useRef(null);var c=l.useRef(null);var f=l.useRef(null);var d=o(l.useState(null),2),p=d[0],b=d[1];var v=l.useCallback((function(e){b(e)}),[]);l.useEffect((function(){if(p==null){return}var e=p.getRootNode();var n=self.document;function handler(n){if(n.key===\"ArrowLeft\"){n.stopPropagation();if(u.current){u.current.focus()}r&&r()}else if(n.key===\"ArrowRight\"){n.stopPropagation();if(c.current){c.current.focus()}a&&a()}else if(n.key===\"Escape\"){n.stopPropagation();if(e instanceof ShadowRoot){var t=e.activeElement;if(t&&t!==f.current&&t instanceof HTMLElement){t.blur();return}}if(i){i()}}}e.addEventListener(\"keydown\",handler);if(e!==n){n.addEventListener(\"keydown\",handler)}return function(){e.removeEventListener(\"keydown\",handler);if(e!==n){n.removeEventListener(\"keydown\",handler)}}}),[i,p,a,r]);l.useEffect((function(){if(p==null){return}var e=p.getRootNode();if(e instanceof ShadowRoot){var n=e.activeElement;if(r==null){if(u.current&&n===u.current){u.current.blur()}}else if(a==null){if(c.current&&n===c.current){c.current.blur()}}}}),[p,a,r]);return l.createElement(\"div\",{\"data-nextjs-dialog-left-right\":true,className:t},l.createElement(\"nav\",{ref:v},l.createElement(\"button\",{ref:u,type:\"button\",disabled:r==null?true:undefined,\"aria-disabled\":r==null?true:undefined,onClick:r!==null&&r!==void 0?r:undefined},l.createElement(\"svg\",{viewBox:\"0 0 14 14\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\"},l.createElement(\"path\",{d:\"M6.99996 1.16666L1.16663 6.99999L6.99996 12.8333M12.8333 6.99999H1.99996H12.8333Z\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"}))),l.createElement(\"button\",{ref:c,type:\"button\",disabled:a==null?true:undefined,\"aria-disabled\":a==null?true:undefined,onClick:a!==null&&a!==void 0?a:undefined},l.createElement(\"svg\",{viewBox:\"0 0 14 14\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\"},l.createElement(\"path\",{d:\"M6.99996 1.16666L12.8333 6.99999L6.99996 12.8333M1.16663 6.99999H12H1.16663Z\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"}))),\"Â \",n),i?l.createElement(\"button\",{\"data-nextjs-errors-dialog-left-right-close-button\":true,ref:f,type:\"button\",onClick:i,\"aria-label\":\"Close\"},l.createElement(\"span\",{\"aria-hidden\":\"true\"},l.createElement(s.CloseIcon,null))):null)};n.LeftRightDialogHeader=u},16:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});n.__esModule=true;n.styles=n.LeftRightDialogHeader=void 0;var a=t(652);r(n,a,\"LeftRightDialogHeader\");var i=t(769);r(n,i,\"styles\")},769:function(e,n,t){\"use strict\";var r=this&&this.__makeTemplateObject||function(e,n){if(Object.defineProperty){Object.defineProperty(e,\"raw\",{value:n})}else{e.raw=n}return e};n.__esModule=true;n.styles=void 0;var a=t(464);var i=(0,a.noop)(o||(o=r([\"\\n [data-nextjs-dialog-left-right] {\\n display: flex;\\n flex-direction: row;\\n align-content: center;\\n align-items: center;\\n justify-content: space-between;\\n }\\n [data-nextjs-dialog-left-right] > nav > button {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n\\n width: calc(var(--size-gap-double) + var(--size-gap));\\n height: calc(var(--size-gap-double) + var(--size-gap));\\n font-size: 0;\\n border: none;\\n background-color: rgba(255, 85, 85, 0.1);\\n color: var(--color-ansi-red);\\n cursor: pointer;\\n transition: background-color 0.25s ease;\\n }\\n [data-nextjs-dialog-left-right] > nav > button > svg {\\n width: auto;\\n height: calc(var(--size-gap) + var(--size-gap-half));\\n }\\n [data-nextjs-dialog-left-right] > nav > button:hover {\\n background-color: rgba(255, 85, 85, 0.2);\\n }\\n [data-nextjs-dialog-left-right] > nav > button:disabled {\\n background-color: rgba(255, 85, 85, 0.1);\\n color: rgba(255, 85, 85, 0.4);\\n cursor: not-allowed;\\n }\\n\\n [data-nextjs-dialog-left-right] > nav > button:first-of-type {\\n border-radius: var(--size-gap-half) 0 0 var(--size-gap-half);\\n margin-right: 1px;\\n }\\n [data-nextjs-dialog-left-right] > nav > button:last-of-type {\\n border-radius: 0 var(--size-gap-half) var(--size-gap-half) 0;\\n }\\n\\n [data-nextjs-dialog-left-right] > button:last-of-type {\\n border: 0;\\n padding: 0;\\n\\n background-color: transparent;\\n appearance: none;\\n\\n opacity: 0.4;\\n transition: opacity 0.25s ease;\\n }\\n [data-nextjs-dialog-left-right] > button:last-of-type:hover {\\n opacity: 0.7;\\n }\\n\"],[\"\\n [data-nextjs-dialog-left-right] {\\n display: flex;\\n flex-direction: row;\\n align-content: center;\\n align-items: center;\\n justify-content: space-between;\\n }\\n [data-nextjs-dialog-left-right] > nav > button {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n\\n width: calc(var(--size-gap-double) + var(--size-gap));\\n height: calc(var(--size-gap-double) + var(--size-gap));\\n font-size: 0;\\n border: none;\\n background-color: rgba(255, 85, 85, 0.1);\\n color: var(--color-ansi-red);\\n cursor: pointer;\\n transition: background-color 0.25s ease;\\n }\\n [data-nextjs-dialog-left-right] > nav > button > svg {\\n width: auto;\\n height: calc(var(--size-gap) + var(--size-gap-half));\\n }\\n [data-nextjs-dialog-left-right] > nav > button:hover {\\n background-color: rgba(255, 85, 85, 0.2);\\n }\\n [data-nextjs-dialog-left-right] > nav > button:disabled {\\n background-color: rgba(255, 85, 85, 0.1);\\n color: rgba(255, 85, 85, 0.4);\\n cursor: not-allowed;\\n }\\n\\n [data-nextjs-dialog-left-right] > nav > button:first-of-type {\\n border-radius: var(--size-gap-half) 0 0 var(--size-gap-half);\\n margin-right: 1px;\\n }\\n [data-nextjs-dialog-left-right] > nav > button:last-of-type {\\n border-radius: 0 var(--size-gap-half) var(--size-gap-half) 0;\\n }\\n\\n [data-nextjs-dialog-left-right] > button:last-of-type {\\n border: 0;\\n padding: 0;\\n\\n background-color: transparent;\\n appearance: none;\\n\\n opacity: 0.4;\\n transition: opacity 0.25s ease;\\n }\\n [data-nextjs-dialog-left-right] > button:last-of-type:hover {\\n opacity: 0.7;\\n }\\n\"])));n.styles=i;var o},918:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});var a=this&&this.__setModuleDefault||(Object.create?function(e,n){Object.defineProperty(e,\"default\",{enumerable:true,value:n})}:function(e,n){e[\"default\"]=n});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t in e)if(t!==\"default\"&&Object.prototype.hasOwnProperty.call(e,t))r(n,e,t);a(n,e);return n};var o=this&&this.__read||function(e,n){var t=typeof Symbol===\"function\"&&e[Symbol.iterator];if(!t)return e;var r=t.call(e),a,i=[],o;try{while((n===void 0||n-- >0)&&!(a=r.next()).done)i.push(a.value)}catch(e){o={error:e}}finally{try{if(a&&!a.done&&(t=r[\"return\"]))t.call(r)}finally{if(o)throw o.error}}return i};var l=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};n.__esModule=true;n.Overlay=void 0;var s=l(t(890));var u=i(t(522));var c=t(644);var f=function Overlay(e){var n=e.className,t=e.children,r=e.fixed;u.useEffect((function(){(0,c.lock)();return function(){(0,c.unlock)()}}),[]);var a=o(u.useState(null),2),i=a[0],l=a[1];var f=u.useCallback((function(e){l(e)}),[]);u.useEffect((function(){if(i==null){return}var e=(0,s[\"default\"])({context:i});return function(){e.disengage()}}),[i]);return u.createElement(\"div\",{\"data-nextjs-dialog-overlay\":true,className:n,ref:f},u.createElement(\"div\",{\"data-nextjs-dialog-backdrop\":true,\"data-nextjs-dialog-backdrop-fixed\":r?true:undefined}),t)};n.Overlay=f},644:function(e,n){\"use strict\";n.__esModule=true;n.unlock=n.lock=void 0;var t;var r;var a=0;function lock(){setTimeout((function(){if(a++>0){return}var e=window.innerWidth-document.documentElement.clientWidth;if(e>0){t=document.body.style.paddingRight;document.body.style.paddingRight=\"\".concat(e,\"px\")}r=document.body.style.overflow;document.body.style.overflow=\"hidden\"}))}n.lock=lock;function unlock(){setTimeout((function(){if(a===0||--a!==0){return}if(t!==undefined){document.body.style.paddingRight=t;t=undefined}if(r!==undefined){document.body.style.overflow=r;r=undefined}}))}n.unlock=unlock},881:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});n.__esModule=true;n.Overlay=void 0;var a=t(918);r(n,a,\"Overlay\")},890:function(e,n,t){\"use strict\";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};n.__esModule=true;var a=r(t(962));var i=r(t(848));function nodeArray(e){if(!e){return[]}if(Array.isArray(e)){return e}if(e.nodeType!==undefined){return[e]}if(typeof e===\"string\"){e=document.querySelectorAll(e)}if(e.length!==undefined){return[].slice.call(e,0)}throw new TypeError(\"unexpected input \"+String(e))}function contextToElement(e){var n=e.context,t=e.label,r=t===undefined?\"context-to-element\":t,a=e.resolveDocument,i=e.defaultToDocument;var o=nodeArray(n)[0];if(a&&o&&o.nodeType===Node.DOCUMENT_NODE){o=o.documentElement}if(!o&&i){return document.documentElement}if(!o){throw new TypeError(r+\" requires valid options.context\")}if(o.nodeType!==Node.ELEMENT_NODE&&o.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){throw new TypeError(r+\" requires options.context to be an Element\")}return o}function getShadowHost(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},n=e.context;var t=contextToElement({label:\"get/shadow-host\",context:n});var r=null;while(t){r=t;t=t.parentNode}if(r.nodeType===r.DOCUMENT_FRAGMENT_NODE&&r.host){return r.host}return null}function getDocument(e){if(!e){return document}if(e.nodeType===Node.DOCUMENT_NODE){return e}return e.ownerDocument||document}function isActiveElement(e){var n=contextToElement({label:\"is/active-element\",resolveDocument:true,context:e});var t=getDocument(n);if(t.activeElement===n){return true}var r=getShadowHost({context:n});if(r&&r.shadowRoot.activeElement===n){return true}return false}function getParents(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},n=e.context;var t=[];var r=contextToElement({label:\"get/parents\",context:n});while(r){t.push(r);r=r.parentNode;if(r&&r.nodeType!==Node.ELEMENT_NODE){r=null}}return t}var o=[\"matches\",\"webkitMatchesSelector\",\"mozMatchesSelector\",\"msMatchesSelector\"];var l=null;function findMethodName(e){o.some((function(n){if(!e[n]){return false}l=n;return true}))}function elementMatches(e,n){if(!l){findMethodName(e)}return e[l](n)}var s=JSON.parse(JSON.stringify(a[\"default\"]));var u=s.os.family||\"\";var c=u===\"Android\";var f=u.slice(0,7)===\"Windows\";var d=u===\"OS X\";var p=u===\"iOS\";var b=s.layout===\"Blink\";var v=s.layout===\"Gecko\";var m=s.layout===\"Trident\";var g=s.layout===\"EdgeHTML\";var h=s.layout===\"WebKit\";var y=parseFloat(s.version);var x=Math.floor(y);s.majorVersion=x;s.is={ANDROID:c,WINDOWS:f,OSX:d,IOS:p,BLINK:b,GECKO:v,TRIDENT:m,EDGE:g,WEBKIT:h,IE9:m&&x===9,IE10:m&&x===10,IE11:m&&x===11};function before(){var e={activeElement:document.activeElement,windowScrollTop:window.scrollTop,windowScrollLeft:window.scrollLeft,bodyScrollTop:document.body.scrollTop,bodyScrollLeft:document.body.scrollLeft};var n=document.createElement(\"iframe\");n.setAttribute(\"style\",\"position:absolute; position:fixed; top:0; left:-2px; width:1px; height:1px; overflow:hidden;\");n.setAttribute(\"aria-live\",\"off\");n.setAttribute(\"aria-busy\",\"true\");n.setAttribute(\"aria-hidden\",\"true\");document.body.appendChild(n);var t=n.contentWindow;var r=t.document;r.open();r.close();var a=r.createElement(\"div\");r.body.appendChild(a);e.iframe=n;e.wrapper=a;e.window=t;e.document=r;return e}function test(e,n){e.wrapper.innerHTML=\"\";var t=typeof n.element===\"string\"?e.document.createElement(n.element):n.element(e.wrapper,e.document);var r=n.mutate&&n.mutate(t,e.wrapper,e.document);if(!r&&r!==false){r=t}!t.parentNode&&e.wrapper.appendChild(t);r&&r.focus&&r.focus();return n.validate?n.validate(t,r,e.document):e.document.activeElement===r}function after(e){if(e.activeElement===document.body){document.activeElement&&document.activeElement.blur&&document.activeElement.blur();if(s.is.IE10){document.body.focus()}}else{e.activeElement&&e.activeElement.focus&&e.activeElement.focus()}document.body.removeChild(e.iframe);window.scrollTop=e.windowScrollTop;window.scrollLeft=e.windowScrollLeft;document.body.scrollTop=e.bodyScrollTop;document.body.scrollLeft=e.bodyScrollLeft}function detectFocus(e){var n=before();var t={};Object.keys(e).map((function(r){t[r]=test(n,e[r])}));after(n);return t}var w=\"1.4.1\";function readLocalStorage(e){var n=void 0;try{n=window.localStorage&&window.localStorage.getItem(e);n=n?JSON.parse(n):{}}catch(e){n={}}return n}function writeLocalStorage(e,n){if(!document.hasFocus()){try{window.localStorage&&window.localStorage.removeItem(e)}catch(e){}return}try{window.localStorage&&window.localStorage.setItem(e,JSON.stringify(n))}catch(e){}}var _=typeof window!==\"undefined\"&&window.navigator.userAgent||\"\";var E=\"ally-supports-cache\";var O=readLocalStorage(E);if(O.userAgent!==_||O.version!==w){O={}}O.userAgent=_;O.version=w;var S={get:function get(){return O},set:function set(e){Object.keys(e).forEach((function(n){O[n]=e[n]}));O.time=(new Date).toISOString();writeLocalStorage(E,O)}};function cssShadowPiercingDeepCombinator(){var e=void 0;try{document.querySelector(\"html >>> :first-child\");e=\">>>\"}catch(n){try{document.querySelector(\"html /deep/ :first-child\");e=\"/deep/\"}catch(n){e=\"\"}}return e}var j=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\";var k={element:\"div\",mutate:function mutate(e){e.innerHTML=''+'
';return e.querySelector(\"area\")}};var T={element:\"div\",mutate:function mutate(e){e.innerHTML=''+'
';return false},validate:function validate(e,n,t){if(s.is.GECKO){return true}var r=e.querySelector(\"area\");r.focus();return t.activeElement===r}};var C={element:\"div\",mutate:function mutate(e){e.innerHTML=''+'
';return e.querySelector(\"area\")},validate:function validate(e,n,t){if(s.is.GECKO){return true}return t.activeElement===n}};var M={name:\"can-focus-audio-without-controls\",element:\"audio\",mutate:function mutate(e){try{e.setAttribute(\"src\",j)}catch(e){}}};var P=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\";var A={element:\"div\",mutate:function mutate(e){e.innerHTML=''+'
';return e.querySelector(\"area\")}};var D={element:\"div\",mutate:function mutate(e){e.setAttribute(\"tabindex\",\"-1\");e.setAttribute(\"style\",\"display: -webkit-flex; display: -ms-flexbox; display: flex;\");e.innerHTML='hello';return e.querySelector(\"span\")}};var N={element:\"fieldset\",mutate:function mutate(e){e.setAttribute(\"tabindex\",0);e.setAttribute(\"disabled\",\"disabled\")}};var z={element:\"fieldset\",mutate:function mutate(e){e.innerHTML=\"content
\"}};var I={element:\"span\",mutate:function mutate(e){e.setAttribute(\"style\",\"display: -webkit-flex; display: -ms-flexbox; display: flex;\");e.innerHTML='hello'}};var R={element:\"form\",mutate:function mutate(e){e.setAttribute(\"tabindex\",0);e.setAttribute(\"disabled\",\"disabled\")}};var F={element:\"a\",mutate:function mutate(e){e.href=\"#void\";e.innerHTML='
';return e.querySelector(\"img\")}};var L={element:\"div\",mutate:function mutate(e){e.innerHTML=''+'
';return e.querySelector(\"img\")}};var B={element:function element(e,n){var t=n.createElement(\"iframe\");e.appendChild(t);var r=t.contentWindow.document;r.open();r.close();return t},mutate:function mutate(e){e.style.visibility=\"hidden\";var n=e.contentWindow.document;var t=n.createElement(\"input\");n.body.appendChild(t);return t},validate:function validate(e){var n=e.contentWindow.document;var t=n.querySelector(\"input\");return n.activeElement===t}};var H=!s.is.WEBKIT;function focusInZeroDimensionObject(){return H}var W={element:\"div\",mutate:function mutate(e){e.setAttribute(\"tabindex\",\"invalid-value\")}};var q={element:\"label\",mutate:function mutate(e){e.setAttribute(\"tabindex\",\"-1\")},validate:function validate(e,n,t){var r=e.offsetHeight;e.focus();return t.activeElement===e}};var G=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtb\"+\"G5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBpZD0ic3ZnIj48dGV4dCB4PSIxMCIgeT0iMjAiIGlkPSJ\"+\"zdmctbGluay10ZXh0Ij50ZXh0PC90ZXh0Pjwvc3ZnPg==\";var U={element:\"object\",mutate:function mutate(e){e.setAttribute(\"type\",\"image/svg+xml\");e.setAttribute(\"data\",G);e.setAttribute(\"width\",\"200\");e.setAttribute(\"height\",\"50\");e.style.visibility=\"hidden\"}};var V={name:\"can-focus-object-svg\",element:\"object\",mutate:function mutate(e){e.setAttribute(\"type\",\"image/svg+xml\");e.setAttribute(\"data\",G);e.setAttribute(\"width\",\"200\");e.setAttribute(\"height\",\"50\")},validate:function validate(e,n,t){if(s.is.GECKO){return true}return t.activeElement===e}};var K=!s.is.IE9;function focusObjectSwf(){return K}var Z={element:\"div\",mutate:function mutate(e){e.innerHTML=''+'
';return e.querySelector(\"img\")},validate:function validate(e,n,t){var r=e.querySelector(\"area\");return t.activeElement===r}};var $={element:\"fieldset\",mutate:function mutate(e){e.innerHTML='';return false},validate:function validate(e,n,t){var r=e.querySelector('input[tabindex=\"-1\"]');var a=e.querySelector('input[tabindex=\"0\"]');e.focus();e.querySelector(\"legend\").focus();return t.activeElement===r&&\"focusable\"||t.activeElement===a&&\"tabbable\"||\"\"}};var X={element:\"div\",mutate:function mutate(e){e.setAttribute(\"style\",\"width: 100px; height: 50px; overflow: auto;\");e.innerHTML='scrollable content
';return e.querySelector(\"div\")}};var J={element:\"div\",mutate:function mutate(e){e.setAttribute(\"style\",\"width: 100px; height: 50px;\");e.innerHTML='scrollable content
'}};var Y={element:\"div\",mutate:function mutate(e){e.setAttribute(\"style\",\"width: 100px; height: 50px; overflow: auto;\");e.innerHTML='scrollable content
'}};var Q={element:\"details\",mutate:function mutate(e){e.innerHTML=\"foocontent
\";return e.firstElementChild}};function makeFocusableForeignObject(){var e=document.createElementNS(\"http://www.w3.org/2000/svg\",\"foreignObject\");e.width.baseVal.value=30;e.height.baseVal.value=30;e.appendChild(document.createElement(\"input\"));e.lastChild.type=\"text\";return e}function focusSvgForeignObjectHack(e){var n=e.ownerSVGElement||e.nodeName.toLowerCase()===\"svg\";if(!n){return false}var t=makeFocusableForeignObject();e.appendChild(t);var r=t.querySelector(\"input\");r.focus();r.disabled=true;e.removeChild(t);return true}function generate(e){return'\"}function focus(e){if(e.focus){return}try{HTMLElement.prototype.focus.call(e)}catch(n){focusSvgForeignObjectHack(e)}}function validate(e,n,t){focus(n);return t.activeElement===n}var ee={element:\"div\",mutate:function mutate(e){e.innerHTML=generate('a');return e.querySelector(\"text\")},validate:validate};var ne={element:\"div\",mutate:function mutate(e){e.innerHTML=generate('a');return e.querySelector(\"text\")},validate:validate};var te={element:\"div\",mutate:function mutate(e){e.innerHTML=generate('a');return e.querySelector(\"text\")},validate:validate};var re={element:\"div\",mutate:function mutate(e){e.innerHTML=generate(['link',''].join(\"\"));return e.querySelector(\"use\")},validate:validate};var ae={element:\"div\",mutate:function mutate(e){e.innerHTML=generate('');return e.querySelector(\"foreignObject\")||e.getElementsByTagName(\"foreignObject\")[0]},validate:validate};var ie=Boolean(s.is.GECKO&&typeof SVGElement!==\"undefined\"&&SVGElement.prototype.focus);function focusSvgInIframe(){return ie}var oe={element:\"div\",mutate:function mutate(e){e.innerHTML=generate(\"\");return e.firstChild},validate:validate};var le={element:\"div\",mutate:function mutate(e){e.setAttribute(\"tabindex\",\"3x\")}};var se={element:\"table\",mutate:function mutate(e,n,t){var r=t.createDocumentFragment();r.innerHTML=\"| cell |
\";e.appendChild(r)}};var ue={element:\"video\",mutate:function mutate(e){try{e.setAttribute(\"src\",j)}catch(e){}}};var ce=s.is.GECKO||s.is.TRIDENT||s.is.EDGE;function tabsequenceAreaAtImgPosition(){return ce}var fe={cssShadowPiercingDeepCombinator:cssShadowPiercingDeepCombinator,focusInZeroDimensionObject:focusInZeroDimensionObject,focusObjectSwf:focusObjectSwf,focusSvgInIframe:focusSvgInIframe,tabsequenceAreaAtImgPosition:tabsequenceAreaAtImgPosition};var de={focusAreaImgTabindex:k,focusAreaTabindex:T,focusAreaWithoutHref:C,focusAudioWithoutControls:M,focusBrokenImageMap:A,focusChildrenOfFocusableFlexbox:D,focusFieldsetDisabled:N,focusFieldset:z,focusFlexboxContainer:I,focusFormDisabled:R,focusImgIsmap:F,focusImgUsemapTabindex:L,focusInHiddenIframe:B,focusInvalidTabindex:W,focusLabelTabindex:q,focusObjectSvg:V,focusObjectSvgHidden:U,focusRedirectImgUsemap:Z,focusRedirectLegend:$,focusScrollBody:X,focusScrollContainerWithoutOverflow:J,focusScrollContainer:Y,focusSummary:Q,focusSvgFocusableAttribute:ee,focusSvgTabindexAttribute:ne,focusSvgNegativeTabindexAttribute:te,focusSvgUseTabindex:re,focusSvgForeignobjectTabindex:ae,focusSvg:oe,focusTabindexTrailingCharacters:le,focusTable:se,focusVideoWithoutControls:ue};function executeTests(){var e=detectFocus(de);Object.keys(fe).forEach((function(n){e[n]=fe[n]()}));return e}var pe=null;function _supports(){if(pe){return pe}pe=S.get();if(!pe.time){S.set(executeTests());pe=S.get()}return pe}var be=void 0;var ve=/^\\s*(-|\\+)?[0-9]+\\s*$/;var me=/^\\s*(-|\\+)?[0-9]+.*$/;function isValidTabindex(e){if(!be){be=_supports()}var n=be.focusTabindexTrailingCharacters?me:ve;var t=contextToElement({label:\"is/valid-tabindex\",resolveDocument:true,context:e});var r=t.hasAttribute(\"tabindex\");var a=t.hasAttribute(\"tabIndex\");if(!r&&!a){return false}var i=t.ownerSVGElement||t.nodeName.toLowerCase()===\"svg\";if(i&&!be.focusSvgTabindexAttribute){return false}if(be.focusInvalidTabindex){return true}var o=t.getAttribute(r?\"tabindex\":\"tabIndex\");if(o===\"-32768\"){return false}return Boolean(o&&n.test(o))}function tabindexValue(e){if(!isValidTabindex(e)){return null}var n=e.hasAttribute(\"tabindex\");var t=n?\"tabindex\":\"tabIndex\";var r=parseInt(e.getAttribute(t),10);return isNaN(r)?-1:r}function isUserModifyWritable(e){var n=e.webkitUserModify||\"\";return Boolean(n&&n.indexOf(\"write\")!==-1)}function hasCssOverflowScroll(e){return[e.getPropertyValue(\"overflow\"),e.getPropertyValue(\"overflow-x\"),e.getPropertyValue(\"overflow-y\")].some((function(e){return e===\"auto\"||e===\"scroll\"}))}function hasCssDisplayFlex(e){return e.display.indexOf(\"flex\")>-1}function isScrollableContainer(e,n,t,r){if(n!==\"div\"&&n!==\"span\"){return false}if(t&&t!==\"div\"&&t!==\"span\"&&!hasCssOverflowScroll(r)){return false}return e.offsetHeight0&&arguments[0]!==undefined?arguments[0]:{},n=e.context,t=e.except,r=t===undefined?{flexbox:false,scrollable:false,shadow:false}:t;if(!ge){ge=_supports()}var a=contextToElement({label:\"is/focus-relevant\",resolveDocument:true,context:n});if(!r.shadow&&a.shadowRoot){return true}var i=a.nodeName.toLowerCase();if(i===\"input\"&&a.type===\"hidden\"){return false}if(i===\"input\"||i===\"select\"||i===\"button\"||i===\"textarea\"){return true}if(i===\"legend\"&&ge.focusRedirectLegend){return true}if(i===\"label\"){return true}if(i===\"area\"){return true}if(i===\"a\"&&a.hasAttribute(\"href\")){return true}if(i===\"object\"&&a.hasAttribute(\"usemap\")){return false}if(i===\"object\"){var o=a.getAttribute(\"type\");if(!ge.focusObjectSvg&&o===\"image/svg+xml\"){return false}else if(!ge.focusObjectSwf&&o===\"application/x-shockwave-flash\"){return false}}if(i===\"iframe\"||i===\"object\"){return true}if(i===\"embed\"||i===\"keygen\"){return true}if(a.hasAttribute(\"contenteditable\")){return true}if(i===\"audio\"&&(ge.focusAudioWithoutControls||a.hasAttribute(\"controls\"))){return true}if(i===\"video\"&&(ge.focusVideoWithoutControls||a.hasAttribute(\"controls\"))){return true}if(ge.focusSummary&&i===\"summary\"){return true}var l=isValidTabindex(a);if(i===\"img\"&&a.hasAttribute(\"usemap\")){return l&&ge.focusImgUsemapTabindex||ge.focusRedirectImgUsemap}if(ge.focusTable&&(i===\"table\"||i===\"td\")){return true}if(ge.focusFieldset&&i===\"fieldset\"){return true}var s=i===\"svg\";var u=a.ownerSVGElement;var c=a.getAttribute(\"focusable\");var f=tabindexValue(a);if(i===\"use\"&&f!==null&&!ge.focusSvgUseTabindex){return false}if(i===\"foreignobject\"){return f!==null&&ge.focusSvgForeignobjectTabindex}if(elementMatches(a,\"svg a\")&&a.hasAttribute(\"xlink:href\")){return true}if((s||u)&&a.focus&&!ge.focusSvgNegativeTabindexAttribute&&f<0){return false}if(s){return l||ge.focusSvg||ge.focusSvgInIframe||Boolean(ge.focusSvgFocusableAttribute&&c&&c===\"true\")}if(u){if(ge.focusSvgTabindexAttribute&&l){return true}if(ge.focusSvgFocusableAttribute){return c===\"true\"}}if(l){return true}var d=window.getComputedStyle(a,null);if(isUserModifyWritable(d)){return true}if(ge.focusImgIsmap&&i===\"img\"&&a.hasAttribute(\"ismap\")){var p=getParents({context:a}).some((function(e){return e.nodeName.toLowerCase()===\"a\"&&e.hasAttribute(\"href\")}));if(p){return true}}if(!r.scrollable&&ge.focusScrollContainer){if(ge.focusScrollContainerWithoutOverflow){if(isScrollableContainer(a,i)){return true}}else if(hasCssOverflowScroll(d)){return true}}if(!r.flexbox&&ge.focusFlexboxContainer&&hasCssDisplayFlex(d)){return true}var b=a.parentElement;if(!r.scrollable&&b){var v=b.nodeName.toLowerCase();var m=window.getComputedStyle(b,null);if(ge.focusScrollBody&&isScrollableContainer(b,i,v,m)){return true}if(ge.focusChildrenOfFocusableFlexbox){if(hasCssDisplayFlex(m)){return true}}}return false}isFocusRelevantRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var n=function isFocusRelevant(n){return isFocusRelevantRules({context:n,except:e})};n.rules=isFocusRelevantRules;return n};var he=isFocusRelevantRules.except({});function findIndex(e,n){if(e.findIndex){return e.findIndex(n)}var t=e.length;if(t===0){return-1}for(var r=0;r0&&arguments[0]!==undefined?arguments[0]:{},n=e.context,t=e.except,r=t===undefined?{notRendered:false,cssDisplay:false,cssVisibility:false,detailsElement:false,browsingContext:false}:t;var a=contextToElement({label:\"is/visible\",resolveDocument:true,context:n});var i=a.nodeName.toLowerCase();if(!r.notRendered&&we.test(i)){return true}var o=getParents({context:a});var l=i===\"audio\"&&!a.hasAttribute(\"controls\");if(!r.cssDisplay&¬Displayed(l?o.slice(1):o)){return false}if(!r.cssVisibility&¬Visible(o)){return false}if(!r.detailsElement&&collapsedParent(o)){return false}if(!r.browsingContext){var s=getFrameElement(a);var u=isVisibleRules.except(r);if(s&&!u(s)){return false}}return true}isVisibleRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var n=function isVisible(n){return isVisibleRules({context:n,except:e})};n.rules=isVisibleRules;return n};var _e=isVisibleRules.except({});function getMapByName(e,n){var t=n.querySelector('map[name=\"'+(0,i[\"default\"])(e)+'\"]');return t||null}function getImageOfArea(e){var n=e.parentElement;if(!n.name||n.nodeName.toLowerCase()!==\"map\"){return null}var t=getDocument(e);return t.querySelector('img[usemap=\"#'+(0,i[\"default\"])(n.name)+'\"]')||null}var Ee=void 0;function isValidArea(e){if(!Ee){Ee=_supports()}var n=contextToElement({label:\"is/valid-area\",context:e});var t=n.nodeName.toLowerCase();if(t!==\"area\"){return false}var r=n.hasAttribute(\"tabindex\");if(!Ee.focusAreaTabindex&&r){return false}var a=getImageOfArea(n);if(!a||!_e(a)){return false}if(!Ee.focusBrokenImageMap&&(!a.complete||!a.naturalHeight||a.offsetWidth<=0||a.offsetHeight<=0)){return false}if(!Ee.focusAreaWithoutHref&&!n.href){return Ee.focusAreaTabindex&&r||Ee.focusAreaImgTabindex&&a.hasAttribute(\"tabindex\")}var i=getParents({context:a}).slice(1).some((function(e){var n=e.nodeName.toLowerCase();return n===\"button\"||n===\"a\"}));if(i){return false}return true}var Oe=void 0;var Se=void 0;var je={input:true,select:true,textarea:true,button:true,fieldset:true,form:true};function isNativeDisabledSupported(e){if(!Oe){Oe=_supports();if(Oe.focusFieldsetDisabled){delete je.fieldset}if(Oe.focusFormDisabled){delete je.form}Se=new RegExp(\"^(\"+Object.keys(je).join(\"|\")+\")$\")}var n=contextToElement({label:\"is/native-disabled-supported\",context:e});var t=n.nodeName.toLowerCase();return Boolean(Se.test(t))}var ke=void 0;function isDisabledFieldset(e){var n=e.nodeName.toLowerCase();return n===\"fieldset\"&&e.disabled}function isDisabledForm(e){var n=e.nodeName.toLowerCase();return n===\"form\"&&e.disabled}function isDisabled(e){if(!ke){ke=_supports()}var n=contextToElement({label:\"is/disabled\",context:e});if(n.hasAttribute(\"data-ally-disabled\")){return true}if(!isNativeDisabledSupported(n)){return false}if(n.disabled){return true}var t=getParents({context:n});if(t.some(isDisabledFieldset)){return true}if(!ke.focusFormDisabled&&t.some(isDisabledForm)){return true}return false}function isOnlyTabbableRules(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},n=e.context,t=e.except,r=t===undefined?{onlyFocusableBrowsingContext:false,visible:false}:t;var a=contextToElement({label:\"is/only-tabbable\",resolveDocument:true,context:n});if(!r.visible&&!_e(a)){return false}if(!r.onlyFocusableBrowsingContext&&(s.is.GECKO||s.is.TRIDENT||s.is.EDGE)){var i=getFrameElement(a);if(i){if(tabindexValue(i)<0){return false}}}var o=a.nodeName.toLowerCase();var l=tabindexValue(a);if(o===\"label\"&&s.is.GECKO){return l!==null&&l>=0}if(s.is.GECKO&&a.ownerSVGElement&&!a.focus){if(o===\"a\"&&a.hasAttribute(\"xlink:href\")){if(s.is.GECKO){return true}}}return false}isOnlyTabbableRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var n=function isOnlyTabbable(n){return isOnlyTabbableRules({context:n,except:e})};n.rules=isOnlyTabbableRules;return n};var Te=isOnlyTabbableRules.except({});var Ce=void 0;function isOnlyFocusRelevant(e){var n=e.nodeName.toLowerCase();if(n===\"embed\"||n===\"keygen\"){return true}var t=tabindexValue(e);if(e.shadowRoot&&t===null){return true}if(n===\"label\"){return!Ce.focusLabelTabindex||t===null}if(n===\"legend\"){return t===null}if(Ce.focusSvgFocusableAttribute&&(e.ownerSVGElement||n===\"svg\")){var r=e.getAttribute(\"focusable\");return r&&r===\"false\"}if(n===\"img\"&&e.hasAttribute(\"usemap\")){return t===null||!Ce.focusImgUsemapTabindex}if(n===\"area\"){return!isValidArea(e)}return false}function isFocusableRules(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},n=e.context,t=e.except,r=t===undefined?{disabled:false,visible:false,onlyTabbable:false}:t;if(!Ce){Ce=_supports()}var a=Te.rules.except({onlyFocusableBrowsingContext:true,visible:r.visible});var i=contextToElement({label:\"is/focusable\",resolveDocument:true,context:n});var o=he.rules({context:i,except:r});if(!o||isOnlyFocusRelevant(i)){return false}if(!r.disabled&&isDisabled(i)){return false}if(!r.onlyTabbable&&a(i)){return false}if(!r.visible){var l={context:i,except:{}};if(Ce.focusInHiddenIframe){l.except.browsingContext=true}if(Ce.focusObjectSvgHidden){var s=i.nodeName.toLowerCase();if(s===\"object\"){l.except.cssVisibility=true}}if(!_e.rules(l)){return false}}var u=getFrameElement(i);if(u){var c=u.nodeName.toLowerCase();if(c===\"object\"&&!Ce.focusInZeroDimensionObject){if(!u.offsetWidth||!u.offsetHeight){return false}}}var f=i.nodeName.toLowerCase();if(f===\"svg\"&&Ce.focusSvgInIframe&&!u&&i.getAttribute(\"tabindex\")===null){return false}return true}isFocusableRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var n=function isFocusable(n){return isFocusableRules({context:n,except:e})};n.rules=isFocusableRules;return n};var Me=isFocusableRules.except({});function createFilter(e){var n=function filter(n){if(n.shadowRoot){return NodeFilter.FILTER_ACCEPT}if(e(n)){return NodeFilter.FILTER_ACCEPT}return NodeFilter.FILTER_SKIP};n.acceptNode=n;return n}var Pe=createFilter(he);function queryFocusableStrict(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},n=e.context,t=e.includeContext,r=e.includeOnlyTabbable,a=e.strategy;if(!n){n=document.documentElement}var i=Me.rules.except({onlyTabbable:r});var o=getDocument(n);var l=o.createTreeWalker(n,NodeFilter.SHOW_ELEMENT,a===\"all\"?Pe:createFilter(i),false);var s=[];while(l.nextNode()){if(l.currentNode.shadowRoot){if(i(l.currentNode)){s.push(l.currentNode)}s=s.concat(queryFocusableStrict({context:l.currentNode.shadowRoot,includeOnlyTabbable:r,strategy:a}))}else{s.push(l.currentNode)}}if(t){if(a===\"all\"){if(he(n)){s.unshift(n)}}else if(i(n)){s.unshift(n)}}return s}var Ae=void 0;var De=void 0;function selector$2(){if(!Ae){Ae=_supports()}if(typeof De===\"string\"){return De}De=\"\"+(Ae.focusTable?\"table, td,\":\"\")+(Ae.focusFieldset?\"fieldset,\":\"\")+\"svg a,\"+\"a[href],\"+\"area[href],\"+\"input, select, textarea, button,\"+\"iframe, object, embed,\"+\"keygen,\"+(Ae.focusAudioWithoutControls?\"audio,\":\"audio[controls],\")+(Ae.focusVideoWithoutControls?\"video,\":\"video[controls],\")+(Ae.focusSummary?\"summary,\":\"\")+\"[tabindex],\"+\"[contenteditable]\";De=selectInShadows(De);return De}function queryFocusableQuick(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},n=e.context,t=e.includeContext,r=e.includeOnlyTabbable;var a=selector$2();var i=n.querySelectorAll(a);var o=Me.rules.except({onlyTabbable:r});var l=[].filter.call(i,o);if(t&&o(n)){l.unshift(n)}return l}function queryFocusable(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},n=e.context,t=e.includeContext,r=e.includeOnlyTabbable,a=e.strategy,i=a===undefined?\"quick\":a;var o=contextToElement({label:\"query/focusable\",resolveDocument:true,defaultToDocument:true,context:n});var l={context:o,includeContext:t,includeOnlyTabbable:r,strategy:i};if(i===\"quick\"){return queryFocusableQuick(l)}else if(i===\"strict\"||i===\"all\"){return queryFocusableStrict(l)}throw new TypeError('query/focusable requires option.strategy to be one of [\"quick\", \"strict\", \"all\"]')}var Ne=void 0;var ze=/^(fieldset|table|td|body)$/;function isTabbableRules(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},n=e.context,t=e.except,r=t===undefined?{flexbox:false,scrollable:false,shadow:false,visible:false,onlyTabbable:false}:t;if(!Ne){Ne=_supports()}var a=contextToElement({label:\"is/tabbable\",resolveDocument:true,context:n});if(s.is.BLINK&&s.is.ANDROID&&s.majorVersion>42){return false}var i=getFrameElement(a);if(i){if(s.is.WEBKIT&&s.is.IOS){return false}if(tabindexValue(i)<0){return false}if(!r.visible&&(s.is.BLINK||s.is.WEBKIT)&&!_e(i)){return false}var o=i.nodeName.toLowerCase();if(o===\"object\"){var l=s.name===\"Chrome\"&&s.majorVersion>=54||s.name===\"Opera\"&&s.majorVersion>=41;if(s.is.WEBKIT||s.is.BLINK&&!l){return false}}}var u=a.nodeName.toLowerCase();var c=tabindexValue(a);var f=c===null?null:c>=0;if(s.is.EDGE&&s.majorVersion>=14&&i&&a.ownerSVGElement&&c<0){return true}var d=f!==false;var p=c!==null&&c>=0;if(a.hasAttribute(\"contenteditable\")){return d}if(ze.test(u)&&f!==true){return false}if(s.is.WEBKIT&&s.is.IOS){var b=u===\"input\"&&a.type===\"text\"||a.type===\"password\"||u===\"select\"||u===\"textarea\"||a.hasAttribute(\"contenteditable\");if(!b){var v=window.getComputedStyle(a,null);b=isUserModifyWritable(v)}if(!b){return false}}if(u===\"use\"&&c!==null){if(s.is.BLINK||s.is.WEBKIT&&s.majorVersion===9){return true}}if(elementMatches(a,\"svg a\")&&a.hasAttribute(\"xlink:href\")){if(d){return true}if(a.focus&&!Ne.focusSvgNegativeTabindexAttribute){return true}}if(u===\"svg\"&&Ne.focusSvgInIframe&&d){return true}if(s.is.TRIDENT||s.is.EDGE){if(u===\"svg\"){if(Ne.focusSvg){return true}return a.hasAttribute(\"focusable\")||p}if(a.ownerSVGElement){if(Ne.focusSvgTabindexAttribute&&p){return true}return a.hasAttribute(\"focusable\")}}if(a.tabIndex===undefined){return Boolean(r.onlyTabbable)}if(u===\"audio\"){if(!a.hasAttribute(\"controls\")){return false}else if(s.is.BLINK){return true}}if(u===\"video\"){if(!a.hasAttribute(\"controls\")){if(s.is.TRIDENT||s.is.EDGE){return false}}else if(s.is.BLINK||s.is.GECKO){return true}}if(u===\"object\"){if(s.is.BLINK||s.is.WEBKIT){return false}}if(u===\"iframe\"){return false}if(!r.scrollable&&s.is.GECKO){var m=window.getComputedStyle(a,null);if(hasCssOverflowScroll(m)){return d}}if(s.is.TRIDENT||s.is.EDGE){if(u===\"area\"){var g=getImageOfArea(a);if(g&&tabindexValue(g)<0){return false}}var h=window.getComputedStyle(a,null);if(isUserModifyWritable(h)){return a.tabIndex>=0}if(!r.flexbox&&hasCssDisplayFlex(h)){if(c!==null){return p}return Ie(a)&&Re(a)}if(isScrollableContainer(a,u)){return false}var y=a.parentElement;if(y){var x=y.nodeName.toLowerCase();var w=window.getComputedStyle(y,null);if(isScrollableContainer(y,u,x,w)){return false}if(hasCssDisplayFlex(w)){return p}}}return a.tabIndex>=0}isTabbableRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var n=function isTabbable(n){return isTabbableRules({context:n,except:e})};n.rules=isTabbableRules;return n};var Ie=he.rules.except({flexbox:true});var Re=isTabbableRules.except({flexbox:true});var Fe=isTabbableRules.except({});function queryTabbable(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},n=e.context,t=e.includeContext,r=e.includeOnlyTabbable,a=e.strategy;var i=Fe.rules.except({onlyTabbable:r});return queryFocusable({context:n,includeContext:t,includeOnlyTabbable:r,strategy:a}).filter(i)}function compareDomPosition(e,n){return e.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING?-1:1}function sortDomOrder(e){return e.sort(compareDomPosition)}function getFirstSuccessorOffset(e,n){return findIndex(e,(function(e){return n.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING}))}function findInsertionOffsets(e,n,t){var r=[];n.forEach((function(n){var a=true;var i=e.indexOf(n);if(i===-1){i=getFirstSuccessorOffset(e,n);a=false}if(i===-1){i=e.length}var o=nodeArray(t?t(n):n);if(!o.length){return}r.push({offset:i,replace:a,elements:o})}));return r}function insertElementsAtOffsets(e,n){var t=0;n.sort((function(e,n){return e.offset-n.offset}));n.forEach((function(n){var r=n.replace?1:0;var a=[n.offset+t,r].concat(n.elements);e.splice.apply(e,a);t+=n.elements.length-r}))}function mergeInDomOrder(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},n=e.list,t=e.elements,r=e.resolveElement;var a=n.slice(0);var i=nodeArray(t).slice(0);sortDomOrder(i);var o=findInsertionOffsets(a,i,r);insertElementsAtOffsets(a,o);return a}var Le=function(){function defineProperties(e,n){for(var t=0;t-1){return[e].concat(n)}return n}},{key:\"_cleanup\",value:function _cleanup(){Object.keys(this.hosts).forEach((function(e){delete this.hosts[e]._sortingId}),this)}}]);return Shadows}();function sortShadowed(e,n,t){var r=new We(n,t);var a=r.extractElements(e);if(a.length===e.length){return t(e)}return r.sort(a)}function sortTabindex(e){var n={};var t=[];var r=e.filter((function(e){var r=e.tabIndex;if(r===undefined){r=tabindexValue(e)}if(r<=0||r===null||r===undefined){return true}if(!n[r]){n[r]=[];t.push(r)}n[r].push(e);return false}));var a=t.sort().map((function(e){return n[e]})).reduceRight((function(e,n){return n.concat(e)}),r);return a}var qe=void 0;function moveContextToBeginning(e,n){var t=e.indexOf(n);if(t>0){var r=e.splice(t,1);return r.concat(e)}return e}function sortElements(e,n){if(qe.tabsequenceAreaAtImgPosition){e=sortArea(e,n)}e=sortTabindex(e);return e}function queryTabsequence(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},n=e.context,t=e.includeContext,r=e.includeOnlyTabbable,a=e.strategy;if(!qe){qe=_supports()}var i=nodeArray(n)[0]||document.documentElement;var o=queryTabbable({context:i,includeContext:t,includeOnlyTabbable:r,strategy:a});if(document.body.createShadowRoot&&s.is.BLINK){o=sortShadowed(o,i,sortElements)}else{o=sortElements(o,i)}if(t){o=moveContextToBeginning(o,i)}return o}var Ge={tab:9,left:37,up:38,right:39,down:40,pageUp:33,\"page-up\":33,pageDown:34,\"page-down\":34,end:35,home:36,enter:13,escape:27,space:32,shift:16,capsLock:20,\"caps-lock\":20,ctrl:17,alt:18,meta:91,pause:19,insert:45,delete:46,backspace:8,_alias:{91:[92,93,224]}};for(var Ue=1;Ue<26;Ue++){Ge[\"f\"+Ue]=Ue+111}for(var Ve=0;Ve<10;Ve++){var Ke=Ve+48;var Ze=Ve+96;Ge[Ve]=Ke;Ge[\"num-\"+Ve]=Ze;Ge._alias[Ke]=[Ze]}for(var $e=0;$e<26;$e++){var Xe=$e+65;var Je=String.fromCharCode(Xe).toLowerCase();Ge[Je]=Xe}var Ye={alt:\"altKey\",ctrl:\"ctrlKey\",meta:\"metaKey\",shift:\"shiftKey\"};var Qe=Object.keys(Ye).map((function(e){return Ye[e]}));function createExpectedModifiers(e){var n=e?null:false;return{altKey:n,ctrlKey:n,metaKey:n,shiftKey:n}}function resolveModifiers(e){var n=e.indexOf(\"*\")!==-1;var t=createExpectedModifiers(n);e.forEach((function(e){if(e===\"*\"){return}var n=true;var r=e.slice(0,1);if(r===\"?\"){n=null}else if(r===\"!\"){n=false}if(n!==true){e=e.slice(1)}var a=Ye[e];if(!a){throw new TypeError('Unknown modifier \"'+e+'\"')}t[a]=n}));return t}function resolveKey(e){var n=Ge[e]||parseInt(e,10);if(!n||typeof n!==\"number\"||isNaN(n)){throw new TypeError('Unknown key \"'+e+'\"')}return[n].concat(Ge._alias[n]||[])}function matchModifiers(e,n){return!Qe.some((function(t){return typeof e[t]===\"boolean\"&&Boolean(n[t])!==e[t]}))}function keyBinding(e){return e.split(/\\s+/).map((function(e){var n=e.split(\"+\");var t=resolveModifiers(n.slice(0,-1));var r=resolveKey(n.slice(-1));return{keyCodes:r,modifiers:t,matchModifiers:matchModifiers.bind(null,t)}}))}function getParentComparator(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},n=e.parent,t=e.element,r=e.includeSelf;if(n){return function isChildOf(e){return Boolean(r&&e===n||n.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_CONTAINED_BY)}}else if(t){return function isParentOf(e){return Boolean(r&&t===e||e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_CONTAINED_BY)}}throw new TypeError(\"util/compare-position#getParentComparator required either options.parent or options.element\")}function whenKey(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var n={};var t=nodeArray(e.context)[0]||document.documentElement;delete e.context;var r=nodeArray(e.filter);delete e.filter;var a=Object.keys(e);if(!a.length){throw new TypeError(\"when/key requires at least one option key\")}var i=function registerBinding(e){e.keyCodes.forEach((function(t){if(!n[t]){n[t]=[]}n[t].push(e)}))};a.forEach((function(n){if(typeof e[n]!==\"function\"){throw new TypeError('when/key requires option[\"'+n+'\"] to be a function')}var t=function addCallback(t){t.callback=e[n];return t};keyBinding(n).map(t).forEach(i)}));var o=function handleKeyDown(e){if(e.defaultPrevented){return}if(r.length){var a=getParentComparator({element:e.target,includeSelf:true});if(r.some(a)){return}}var i=e.keyCode||e.which;if(!n[i]){return}n[i].forEach((function(n){if(!n.matchModifiers(e)){return}n.callback.call(t,e,l)}))};t.addEventListener(\"keydown\",o,false);var l=function disengage(){t.removeEventListener(\"keydown\",o,false)};return{disengage:l}}function default_1(e){var n=e===void 0?{}:e,t=n.context;if(!t){t=document.documentElement}queryTabsequence();return whenKey({\"?alt+?shift+tab\":function altShiftTab(e){e.preventDefault();var n=queryTabsequence({context:t});var r=e.shiftKey;var a=n[0];var i=n[n.length-1];var o=r?a:i;var l=r?i:a;if(isActiveElement(o)){l.focus();return}var s=void 0;var u=n.some((function(e,n){if(!isActiveElement(e)){return false}s=n;return true}));if(!u){a.focus();return}var c=r?-1:1;n[s+c].focus()}})}n[\"default\"]=default_1},541:function(e,n,t){\"use strict\";var r=this&&this.__makeTemplateObject||function(e,n){if(Object.defineProperty){Object.defineProperty(e,\"raw\",{value:n})}else{e.raw=n}return e};n.__esModule=true;n.styles=void 0;var a=t(464);var i=(0,a.noop)(o||(o=r([\"\\n [data-nextjs-dialog-overlay] {\\n position: fixed;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n overflow: auto;\\n z-index: 9000;\\n\\n display: flex;\\n align-content: center;\\n align-items: center;\\n flex-direction: column;\\n padding: 10vh 15px 0;\\n }\\n\\n @media (max-height: 812px) {\\n [data-nextjs-dialog-overlay] {\\n padding: 15px 15px 0;\\n }\\n }\\n\\n [data-nextjs-dialog-backdrop] {\\n position: fixed;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background-color: rgba(17, 17, 17, 0.2);\\n pointer-events: all;\\n z-index: -1;\\n }\\n\\n [data-nextjs-dialog-backdrop-fixed] {\\n cursor: not-allowed;\\n -webkit-backdrop-filter: blur(8px);\\n backdrop-filter: blur(8px);\\n }\\n\"],[\"\\n [data-nextjs-dialog-overlay] {\\n position: fixed;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n overflow: auto;\\n z-index: 9000;\\n\\n display: flex;\\n align-content: center;\\n align-items: center;\\n flex-direction: column;\\n padding: 10vh 15px 0;\\n }\\n\\n @media (max-height: 812px) {\\n [data-nextjs-dialog-overlay] {\\n padding: 15px 15px 0;\\n }\\n }\\n\\n [data-nextjs-dialog-backdrop] {\\n position: fixed;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background-color: rgba(17, 17, 17, 0.2);\\n pointer-events: all;\\n z-index: -1;\\n }\\n\\n [data-nextjs-dialog-backdrop-fixed] {\\n cursor: not-allowed;\\n -webkit-backdrop-filter: blur(8px);\\n backdrop-filter: blur(8px);\\n }\\n\"])));n.styles=i;var o},77:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});var a=this&&this.__setModuleDefault||(Object.create?function(e,n){Object.defineProperty(e,\"default\",{enumerable:true,value:n})}:function(e,n){e[\"default\"]=n});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t in e)if(t!==\"default\"&&Object.prototype.hasOwnProperty.call(e,t))r(n,e,t);a(n,e);return n};var o=this&&this.__read||function(e,n){var t=typeof Symbol===\"function\"&&e[Symbol.iterator];if(!t)return e;var r=t.call(e),a,i=[],o;try{while((n===void 0||n-- >0)&&!(a=r.next()).done)i.push(a.value)}catch(e){o={error:e}}finally{try{if(a&&!a.done&&(t=r[\"return\"]))t.call(r)}finally{if(o)throw o.error}}return i};n.__esModule=true;n.ShadowPortal=void 0;var l=i(t(522));var s=t(255);var u=function Portal(e){var n=e.children,t=e.globalOverlay;var r=l.useRef(null);var a=l.useRef(null);var i=l.useRef(null);var u=o(l.useState(),2),c=u[1];l.useLayoutEffect((function(){var e=t?document:r.current.ownerDocument;a.current=e.createElement(\"nextjs-portal\");i.current=a.current.attachShadow({mode:\"open\"});e.body.appendChild(a.current);c({});return function(){if(a.current&&a.current.ownerDocument){a.current.ownerDocument.body.removeChild(a.current)}}}),[t]);return i.current?(0,s.createPortal)(n,i.current):t?null:l.createElement(\"span\",{ref:r})};n.ShadowPortal=u},506:function(e,n,t){\"use strict\";var r=this&&this.__assign||function(){r=Object.assign||function(e){for(var n,t=1,r=arguments.length;t * {\\n margin: 0;\\n padding: calc(var(--size-gap) + var(--size-gap-half))\\n calc(var(--size-gap-double) + var(--size-gap-half));\\n }\\n\\n [data-nextjs-terminal] pre {\\n white-space: pre-wrap;\\n word-break: break-word;\\n }\\n\"],[\"\\n [data-nextjs-terminal] {\\n border-radius: var(--size-gap-half);\\n background-color: var(--color-ansi-bg);\\n color: var(--color-ansi-fg);\\n }\\n [data-nextjs-terminal]::selection,\\n [data-nextjs-terminal] *::selection {\\n background-color: var(--color-ansi-selection);\\n }\\n [data-nextjs-terminal] * {\\n color: inherit;\\n background-color: transparent;\\n font-family: var(--font-stack-monospace);\\n }\\n [data-nextjs-terminal] > * {\\n margin: 0;\\n padding: calc(var(--size-gap) + var(--size-gap-half))\\n calc(var(--size-gap-double) + var(--size-gap-half));\\n }\\n\\n [data-nextjs-terminal] pre {\\n white-space: pre-wrap;\\n word-break: break-word;\\n }\\n\"])));n.styles=i;var o},172:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});var a=this&&this.__setModuleDefault||(Object.create?function(e,n){Object.defineProperty(e,\"default\",{enumerable:true,value:n})}:function(e,n){e[\"default\"]=n});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t in e)if(t!==\"default\"&&Object.prototype.hasOwnProperty.call(e,t))r(n,e,t);a(n,e);return n};n.__esModule=true;n.Toast=void 0;var o=i(t(522));var l=function Toast(e){var n=e.onClick,t=e.children,r=e.className;return o.createElement(\"div\",{\"data-nextjs-toast\":true,onClick:n,className:r},o.createElement(\"div\",{\"data-nextjs-toast-wrapper\":true},t))};n.Toast=l},777:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});n.__esModule=true;n.Toast=n.styles=void 0;var a=t(48);r(n,a,\"styles\");var i=t(172);r(n,i,\"Toast\")},48:function(e,n,t){\"use strict\";var r=this&&this.__makeTemplateObject||function(e,n){if(Object.defineProperty){Object.defineProperty(e,\"raw\",{value:n})}else{e.raw=n}return e};n.__esModule=true;n.styles=void 0;var a=t(464);var i=(0,a.noop)(o||(o=r([\"\\n [data-nextjs-toast] {\\n position: fixed;\\n bottom: var(--size-gap-double);\\n left: var(--size-gap-double);\\n max-width: 420px;\\n z-index: 9000;\\n }\\n\\n @media (max-width: 440px) {\\n [data-nextjs-toast] {\\n max-width: 90vw;\\n left: 5vw;\\n }\\n }\\n\\n [data-nextjs-toast-wrapper] {\\n padding: 16px;\\n border-radius: var(--size-gap-half);\\n font-weight: 500;\\n color: var(--color-ansi-bright-white);\\n background-color: var(--color-ansi-red);\\n box-shadow: 0px var(--size-gap-double) var(--size-gap-quad)\\n rgba(0, 0, 0, 0.25);\\n }\\n\"],[\"\\n [data-nextjs-toast] {\\n position: fixed;\\n bottom: var(--size-gap-double);\\n left: var(--size-gap-double);\\n max-width: 420px;\\n z-index: 9000;\\n }\\n\\n @media (max-width: 440px) {\\n [data-nextjs-toast] {\\n max-width: 90vw;\\n left: 5vw;\\n }\\n }\\n\\n [data-nextjs-toast-wrapper] {\\n padding: 16px;\\n border-radius: var(--size-gap-half);\\n font-weight: 500;\\n color: var(--color-ansi-bright-white);\\n background-color: var(--color-ansi-red);\\n box-shadow: 0px var(--size-gap-double) var(--size-gap-quad)\\n rgba(0, 0, 0, 0.25);\\n }\\n\"])));n.styles=i;var o},561:function(e,n,t){\"use strict\";var r=this&&this.__makeTemplateObject||function(e,n){if(Object.defineProperty){Object.defineProperty(e,\"raw\",{value:n})}else{e.raw=n}return e};var a=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});var i=this&&this.__setModuleDefault||(Object.create?function(e,n){Object.defineProperty(e,\"default\",{enumerable:true,value:n})}:function(e,n){e[\"default\"]=n});var o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t in e)if(t!==\"default\"&&Object.prototype.hasOwnProperty.call(e,t))a(n,e,t);i(n,e);return n};n.__esModule=true;n.styles=n.BuildError=void 0;var l=o(t(522));var s=t(931);var u=t(881);var c=t(966);var f=t(464);var d=function BuildError(e){var n=e.message;var t=l.useCallback((function(){}),[]);return l.createElement(u.Overlay,{fixed:true},l.createElement(s.Dialog,{type:\"error\",\"aria-labelledby\":\"nextjs__container_build_error_label\",\"aria-describedby\":\"nextjs__container_build_error_desc\",onClose:t},l.createElement(s.DialogContent,null,l.createElement(s.DialogHeader,{className:\"nextjs-container-build-error-header\"},l.createElement(\"h4\",{id:\"nextjs__container_build_error_label\"},\"Failed to compile\")),l.createElement(s.DialogBody,{className:\"nextjs-container-build-error-body\"},l.createElement(c.Terminal,{content:n}),l.createElement(\"footer\",null,l.createElement(\"p\",{id:\"nextjs__container_build_error_desc\"},l.createElement(\"small\",null,\"This error occurred during the build process and can only be dismissed by fixing the error.\")))))))};n.BuildError=d;n.styles=(0,f.noop)(p||(p=r([\"\\n .nextjs-container-build-error-header > h4 {\\n line-height: 1.5;\\n margin: 0;\\n padding: 0;\\n }\\n\\n .nextjs-container-build-error-body footer {\\n margin-top: var(--size-gap);\\n }\\n .nextjs-container-build-error-body footer p {\\n margin: 0;\\n }\\n\\n .nextjs-container-build-error-body small {\\n color: #757575;\\n }\\n\"],[\"\\n .nextjs-container-build-error-header > h4 {\\n line-height: 1.5;\\n margin: 0;\\n padding: 0;\\n }\\n\\n .nextjs-container-build-error-body footer {\\n margin-top: var(--size-gap);\\n }\\n .nextjs-container-build-error-body footer p {\\n margin: 0;\\n }\\n\\n .nextjs-container-build-error-body small {\\n color: #757575;\\n }\\n\"])));var p},546:function(e,n,t){\"use strict\";var r=this&&this.__makeTemplateObject||function(e,n){if(Object.defineProperty){Object.defineProperty(e,\"raw\",{value:n})}else{e.raw=n}return e};var a=this&&this.__assign||function(){a=Object.assign||function(e){for(var n,t=1,r=arguments.length;t0)&&!(a=r.next()).done)i.push(a.value)}catch(e){o={error:e}}finally{try{if(a&&!a.done&&(t=r[\"return\"]))t.call(r)}finally{if(o)throw o.error}}return i};n.__esModule=true;n.styles=n.Errors=void 0;var u=l(t(522));var c=t(857);var f=t(931);var d=t(16);var p=t(881);var b=t(777);var v=t(88);var m=t(566);var g=t(464);var h=t(514);var y=t(972);function getErrorSignature(e){var n=e.event;switch(n.type){case c.TYPE_UNHANDLED_ERROR:case c.TYPE_UNHANDLED_REJECTION:{return\"\".concat(n.reason.name,\"::\").concat(n.reason.message,\"::\").concat(n.reason.stack)}default:{}}var t=n;return\"\"}var x=function HotlinkedText(e){var n=e.text;var t=/https?:\\/\\/[^\\s/$.?#].[^\\s\"]*/i;return u.createElement(u.Fragment,null,t.test(n)?n.split(\" \").map((function(e,n,r){if(t.test(e)){return u.createElement(u.Fragment,{key:\"link-\".concat(n)},u.createElement(\"a\",{href:e},e),n===r.length-1?\"\":\" \")}return n===r.length-1?u.createElement(u.Fragment,{key:\"text-\".concat(n)},e):u.createElement(u.Fragment,{key:\"text-\".concat(n)},e,\" \")})):n)};var w=function Errors(e){var n=e.errors;var t=s(u.useState({}),2),r=t[0],i=t[1];var o=s(u.useMemo((function(){var e=[];var t=null;for(var a=0;a0){var l=n[a-1];if(getErrorSignature(l)===getErrorSignature(i)){continue}}t=i;break}return[e,t]}),[n,r]),2),l=o[0],c=o[1];var g=u.useMemo((function(){return l.length<1&&Boolean(n.length)}),[n.length,l.length]);u.useEffect((function(){if(c==null){return}var e=true;(0,v.getErrorByType)(c).then((function(n){if(e){i((function(e){var t;return a(a({},e),(t={},t[n.id]=n,t))}))}}),(function(){}));return function(){e=false}}),[c]);var w=s(u.useState(\"fullscreen\"),2),_=w[0],E=w[1];var O=s(u.useState(0),2),S=O[0],j=O[1];var k=u.useCallback((function(e){e===null||e===void 0?void 0:e.preventDefault();j((function(e){return Math.max(0,e-1)}))}),[]);var T=u.useCallback((function(e){e===null||e===void 0?void 0:e.preventDefault();j((function(e){return Math.max(0,Math.min(l.length-1,e+1))}))}),[l.length]);var C=u.useMemo((function(){var e;return(e=l[S])!==null&&e!==void 0?e:null}),[S,l]);u.useEffect((function(){if(n.length<1){i({});E(\"hidden\");j(0)}}),[n.length]);var M=u.useCallback((function(e){e===null||e===void 0?void 0:e.preventDefault();E(\"minimized\")}),[]);var P=u.useCallback((function(e){e===null||e===void 0?void 0:e.preventDefault();E(\"hidden\")}),[]);var A=u.useCallback((function(e){e===null||e===void 0?void 0:e.preventDefault();E(\"fullscreen\")}),[]);if(n.length<1||C==null){return null}if(g){return u.createElement(p.Overlay,null)}if(_===\"hidden\"){return null}if(_===\"minimized\"){return u.createElement(b.Toast,{className:\"nextjs-toast-errors-parent\",onClick:A},u.createElement(\"div\",{className:\"nextjs-toast-errors\"},u.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"},u.createElement(\"circle\",{cx:\"12\",cy:\"12\",r:\"10\"}),u.createElement(\"line\",{x1:\"12\",y1:\"8\",x2:\"12\",y2:\"12\"}),u.createElement(\"line\",{x1:\"12\",y1:\"16\",x2:\"12.01\",y2:\"16\"})),u.createElement(\"span\",null,l.length,\" error\",l.length>1?\"s\":\"\"),u.createElement(\"button\",{\"data-nextjs-toast-errors-hide-button\":true,className:\"nextjs-toast-errors-hide-button\",type:\"button\",onClick:function(e){e.stopPropagation();P()},\"aria-label\":\"Hide Errors\"},u.createElement(h.CloseIcon,null))))}var D=[\"server\",\"edge-server\"].includes((0,m.getErrorSource)(C.error)||\"\");return u.createElement(p.Overlay,null,u.createElement(f.Dialog,{type:\"error\",\"aria-labelledby\":\"nextjs__container_errors_label\",\"aria-describedby\":\"nextjs__container_errors_desc\",onClose:D?undefined:M},u.createElement(f.DialogContent,null,u.createElement(f.DialogHeader,{className:\"nextjs-container-errors-header\"},u.createElement(d.LeftRightDialogHeader,{previous:S>0?k:null,next:S h1 {\\n font-size: var(--size-font-big);\\n line-height: var(--size-font-bigger);\\n font-weight: bold;\\n margin: 0;\\n margin-top: calc(var(--size-gap-double) + var(--size-gap-half));\\n }\\n .nextjs-container-errors-header small {\\n font-size: var(--size-font-small);\\n color: var(--color-accents-1);\\n margin-left: var(--size-gap-double);\\n }\\n .nextjs-container-errors-header small > span {\\n font-family: var(--font-stack-monospace);\\n }\\n .nextjs-container-errors-header > p {\\n font-family: var(--font-stack-monospace);\\n font-size: var(--size-font-small);\\n line-height: var(--size-font-big);\\n font-weight: bold;\\n margin: 0;\\n margin-top: var(--size-gap-half);\\n color: var(--color-ansi-red);\\n white-space: pre-wrap;\\n }\\n .nextjs-container-errors-header > div > small {\\n margin: 0;\\n margin-top: var(--size-gap-half);\\n }\\n .nextjs-container-errors-header > p > a {\\n color: var(--color-ansi-red);\\n }\\n\\n .nextjs-container-errors-body > h5:not(:first-child) {\\n margin-top: calc(var(--size-gap-double) + var(--size-gap));\\n }\\n .nextjs-container-errors-body > h5 {\\n margin-bottom: var(--size-gap);\\n }\\n\\n .nextjs-toast-errors-parent {\\n cursor: pointer;\\n transition: transform 0.2s ease;\\n }\\n .nextjs-toast-errors-parent:hover {\\n transform: scale(1.1);\\n }\\n .nextjs-toast-errors {\\n display: flex;\\n align-items: center;\\n justify-content: flex-start;\\n }\\n .nextjs-toast-errors > svg {\\n margin-right: var(--size-gap);\\n }\\n .nextjs-toast-errors-hide-button {\\n margin-left: var(--size-gap-triple);\\n border: none;\\n background: none;\\n color: var(--color-ansi-bright-white);\\n padding: 0;\\n transition: opacity 0.25s ease;\\n opacity: 0.7;\\n }\\n .nextjs-toast-errors-hide-button:hover {\\n opacity: 1;\\n }\\n\"],[\"\\n .nextjs-container-errors-header > h1 {\\n font-size: var(--size-font-big);\\n line-height: var(--size-font-bigger);\\n font-weight: bold;\\n margin: 0;\\n margin-top: calc(var(--size-gap-double) + var(--size-gap-half));\\n }\\n .nextjs-container-errors-header small {\\n font-size: var(--size-font-small);\\n color: var(--color-accents-1);\\n margin-left: var(--size-gap-double);\\n }\\n .nextjs-container-errors-header small > span {\\n font-family: var(--font-stack-monospace);\\n }\\n .nextjs-container-errors-header > p {\\n font-family: var(--font-stack-monospace);\\n font-size: var(--size-font-small);\\n line-height: var(--size-font-big);\\n font-weight: bold;\\n margin: 0;\\n margin-top: var(--size-gap-half);\\n color: var(--color-ansi-red);\\n white-space: pre-wrap;\\n }\\n .nextjs-container-errors-header > div > small {\\n margin: 0;\\n margin-top: var(--size-gap-half);\\n }\\n .nextjs-container-errors-header > p > a {\\n color: var(--color-ansi-red);\\n }\\n\\n .nextjs-container-errors-body > h5:not(:first-child) {\\n margin-top: calc(var(--size-gap-double) + var(--size-gap));\\n }\\n .nextjs-container-errors-body > h5 {\\n margin-bottom: var(--size-gap);\\n }\\n\\n .nextjs-toast-errors-parent {\\n cursor: pointer;\\n transition: transform 0.2s ease;\\n }\\n .nextjs-toast-errors-parent:hover {\\n transform: scale(1.1);\\n }\\n .nextjs-toast-errors {\\n display: flex;\\n align-items: center;\\n justify-content: flex-start;\\n }\\n .nextjs-toast-errors > svg {\\n margin-right: var(--size-gap);\\n }\\n .nextjs-toast-errors-hide-button {\\n margin-left: var(--size-gap-triple);\\n border: none;\\n background: none;\\n color: var(--color-ansi-bright-white);\\n padding: 0;\\n transition: opacity 0.25s ease;\\n opacity: 0.7;\\n }\\n .nextjs-toast-errors-hide-button:hover {\\n opacity: 1;\\n }\\n\"])));var _},972:function(e,n,t){\"use strict\";var r=this&&this.__makeTemplateObject||function(e,n){if(Object.defineProperty){Object.defineProperty(e,\"raw\",{value:n})}else{e.raw=n}return e};var a=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});var i=this&&this.__setModuleDefault||(Object.create?function(e,n){Object.defineProperty(e,\"default\",{enumerable:true,value:n})}:function(e,n){e[\"default\"]=n});var o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t in e)if(t!==\"default\"&&Object.prototype.hasOwnProperty.call(e,t))a(n,e,t);i(n,e);return n};var l=this&&this.__read||function(e,n){var t=typeof Symbol===\"function\"&&e[Symbol.iterator];if(!t)return e;var r=t.call(e),a,i=[],o;try{while((n===void 0||n-- >0)&&!(a=r.next()).done)i.push(a.value)}catch(e){o={error:e}}finally{try{if(a&&!a.done&&(t=r[\"return\"]))t.call(r)}finally{if(o)throw o.error}}return i};n.__esModule=true;n.RuntimeError=n.styles=void 0;var s=o(t(522));var u=t(30);var c=t(464);var f=t(205);var d=function CallStackFrame(e){var n;var t=e.frame;var r=(n=t.originalStackFrame)!==null&&n!==void 0?n:t.sourceStackFrame;var a=Boolean(t.originalCodeFrame);var i=s.useCallback((function(){var e;if(!a)return;var n=new URLSearchParams;for(var t in r){n.append(t,((e=r[t])!==null&&e!==void 0?e:\"\").toString())}self.fetch(\"\".concat( false||\"\",\"/__nextjs_launch-editor?\").concat(n.toString())).then((function(){}),(function(){console.error(\"There was an issue opening this code in your editor.\")}))}),[a,r]);return s.createElement(\"div\",{\"data-nextjs-call-stack-frame\":true},s.createElement(\"h6\",{\"data-nextjs-frame-expanded\":Boolean(t.expanded)},r.methodName),s.createElement(\"div\",{\"data-has-source\":a?\"true\":undefined,tabIndex:a?10:undefined,role:a?\"link\":undefined,onClick:i,title:a?\"Click to open in your editor\":undefined},s.createElement(\"span\",null,(0,f.getFrameSource)(r)),s.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"},s.createElement(\"path\",{d:\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"}),s.createElement(\"polyline\",{points:\"15 3 21 3 21 9\"}),s.createElement(\"line\",{x1:\"10\",y1:\"14\",x2:\"21\",y2:\"3\"}))))};var p=function RuntimeError(e){var n=e.error;var t=s.useMemo((function(){return n.frames.findIndex((function(e){return e.expanded&&Boolean(e.originalCodeFrame)&&Boolean(e.originalStackFrame)}))}),[n.frames]);var r=s.useMemo((function(){var e;return(e=n.frames[t])!==null&&e!==void 0?e:null}),[n.frames,t]);var a=s.useMemo((function(){return t<0?[]:n.frames.slice(0,t)}),[n.frames,t]);var i=l(s.useState(r==null),2),o=i[0],c=i[1];var f=s.useCallback((function(){c((function(e){return!e}))}),[]);var p=s.useMemo((function(){return a.filter((function(e){return e.expanded||o}))}),[o,a]);var b=s.useMemo((function(){return n.frames.slice(t+1)}),[n.frames,t]);var v=s.useMemo((function(){return b.filter((function(e){return e.expanded||o}))}),[o,b]);var m=s.useMemo((function(){return b.length!==v.length||o&&r!=null}),[o,b.length,r,v.length]);return s.createElement(s.Fragment,null,r?s.createElement(s.Fragment,null,s.createElement(\"h5\",null,\"Source\"),p.map((function(e,n){return s.createElement(d,{key:\"leading-frame-\".concat(n,\"-\").concat(o),frame:e})})),s.createElement(u.CodeFrame,{stackFrame:r.originalStackFrame,codeFrame:r.originalCodeFrame})):undefined,v.length?s.createElement(s.Fragment,null,s.createElement(\"h5\",null,\"Call Stack\"),v.map((function(e,n){return s.createElement(d,{key:\"call-stack-\".concat(n,\"-\").concat(o),frame:e})}))):undefined,m?s.createElement(s.Fragment,null,s.createElement(\"button\",{tabIndex:10,\"data-nextjs-data-runtime-error-collapsed-action\":true,type:\"button\",onClick:f},o?\"Hide\":\"Show\",\" collapsed frames\")):undefined)};n.RuntimeError=p;n.styles=(0,c.noop)(b||(b=r([\"\\n button[data-nextjs-data-runtime-error-collapsed-action] {\\n background: none;\\n border: none;\\n padding: 0;\\n font-size: var(--size-font-small);\\n line-height: var(--size-font-bigger);\\n color: var(--color-accents-3);\\n }\\n\\n [data-nextjs-call-stack-frame]:not(:last-child) {\\n margin-bottom: var(--size-gap-double);\\n }\\n\\n [data-nextjs-call-stack-frame] > h6 {\\n margin-top: 0;\\n margin-bottom: var(--size-gap);\\n font-family: var(--font-stack-monospace);\\n color: #222;\\n }\\n [data-nextjs-call-stack-frame] > h6[data-nextjs-frame-expanded='false'] {\\n color: #666;\\n }\\n [data-nextjs-call-stack-frame] > div {\\n display: flex;\\n align-items: center;\\n padding-left: calc(var(--size-gap) + var(--size-gap-half));\\n font-size: var(--size-font-small);\\n color: #999;\\n }\\n [data-nextjs-call-stack-frame] > div > svg {\\n width: auto;\\n height: var(--size-font-small);\\n margin-left: var(--size-gap);\\n\\n display: none;\\n }\\n\\n [data-nextjs-call-stack-frame] > div[data-has-source] {\\n cursor: pointer;\\n }\\n [data-nextjs-call-stack-frame] > div[data-has-source]:hover {\\n text-decoration: underline dotted;\\n }\\n [data-nextjs-call-stack-frame] > div[data-has-source] > svg {\\n display: unset;\\n }\\n\"],[\"\\n button[data-nextjs-data-runtime-error-collapsed-action] {\\n background: none;\\n border: none;\\n padding: 0;\\n font-size: var(--size-font-small);\\n line-height: var(--size-font-bigger);\\n color: var(--color-accents-3);\\n }\\n\\n [data-nextjs-call-stack-frame]:not(:last-child) {\\n margin-bottom: var(--size-gap-double);\\n }\\n\\n [data-nextjs-call-stack-frame] > h6 {\\n margin-top: 0;\\n margin-bottom: var(--size-gap);\\n font-family: var(--font-stack-monospace);\\n color: #222;\\n }\\n [data-nextjs-call-stack-frame] > h6[data-nextjs-frame-expanded='false'] {\\n color: #666;\\n }\\n [data-nextjs-call-stack-frame] > div {\\n display: flex;\\n align-items: center;\\n padding-left: calc(var(--size-gap) + var(--size-gap-half));\\n font-size: var(--size-font-small);\\n color: #999;\\n }\\n [data-nextjs-call-stack-frame] > div > svg {\\n width: auto;\\n height: var(--size-font-small);\\n margin-left: var(--size-gap);\\n\\n display: none;\\n }\\n\\n [data-nextjs-call-stack-frame] > div[data-has-source] {\\n cursor: pointer;\\n }\\n [data-nextjs-call-stack-frame] > div[data-has-source]:hover {\\n text-decoration: underline dotted;\\n }\\n [data-nextjs-call-stack-frame] > div[data-has-source] > svg {\\n display: unset;\\n }\\n\"])));var b},88:function(e,n,t){\"use strict\";var r=this&&this.__awaiter||function(e,n,t,r){function adopt(e){return e instanceof t?e:new t((function(n){n(e)}))}return new(t||(t=Promise))((function(t,a){function fulfilled(e){try{step(r.next(e))}catch(e){a(e)}}function rejected(e){try{step(r[\"throw\"](e))}catch(e){a(e)}}function step(e){e.done?t(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,n||[])).next())}))};var a=this&&this.__generator||function(e,n){var t={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},r,a,i,o;return o={next:verb(0),throw:verb(1),return:verb(2)},typeof Symbol===\"function\"&&(o[Symbol.iterator]=function(){return this}),o;function verb(e){return function(n){return step([e,n])}}function step(o){if(r)throw new TypeError(\"Generator is already executing.\");while(t)try{if(r=1,a&&(i=o[0]&2?a[\"return\"]:o[0]?a[\"throw\"]||((i=a[\"return\"])&&i.call(a),0):a.next)&&!(i=i.call(a,o[1])).done)return i;if(a=0,i)o=[o[0]&2,i.value];switch(o[0]){case 0:case 1:i=o;break;case 4:t.label++;return{value:o[1],done:false};case 5:t.label++;a=o[1];o=[0];continue;case 7:o=t.ops.pop();t.trys.pop();continue;default:if(!(i=t.trys,i=i.length>0&&i[i.length-1])&&(o[0]===6||o[0]===2)){t=0;continue}if(o[0]===3&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(o[0]===6||o[0]===2)){t=0;continue}if(o[0]===3&&(!i||o[1]>i[0]&&o[1]]/gm,(function(e){return e==\"&\"?\"&\":e==\"<\"?\"<\":e==\">\"?\">\":\"\"}))}},{key:\"linkify\",value:function linkify(e){return e.replace(/(https?:\\/\\/[^\\s]+)/gm,(function(e){return''+e+\"\"}))}},{key:\"ansiToHtml\",value:function ansiToHtml(e,n){return this.process(e,n,true)}},{key:\"ansiToJson\",value:function ansiToJson(e,n){n=n||{};n.json=true;n.clearLine=false;return this.process(e,n,true)}},{key:\"ansiToText\",value:function ansiToText(e){return this.process(e,{},false)}},{key:\"process\",value:function process(e,n,t){var r=this;var a=this;var i=e.split(/\\033\\[/);var o=i.shift();if(n===undefined||n===null){n={}}n.clearLine=/\\r/.test(e);var l=i.map((function(e){return r.processChunk(e,n,t)}));if(n&&n.json){var s=a.processChunkJson(\"\");s.content=o;s.clearLine=n.clearLine;l.unshift(s);if(n.remove_empty){l=l.filter((function(e){return!e.isEmpty()}))}return l}else{l.unshift(o)}return l.join(\"\")}},{key:\"processChunkJson\",value:function processChunkJson(e,n,r){n=typeof n==\"undefined\"?{}:n;var a=n.use_classes=typeof n.use_classes!=\"undefined\"&&n.use_classes;var i=n.key=a?\"class\":\"color\";var o={content:e,fg:null,bg:null,fg_truecolor:null,bg_truecolor:null,clearLine:n.clearLine,decoration:null,was_processed:false,isEmpty:function isEmpty(){return!o.content}};var l=e.match(/^([!\\x3c-\\x3f]*)([\\d;]*)([\\x20-\\x2c]*[\\x40-\\x7e])([\\s\\S]*)/m);if(!l)return o;var s=o.content=l[4];var u=l[2].split(\";\");if(l[1]!==\"\"||l[3]!==\"m\"){return o}if(!r){return o}var c=this;c.decoration=null;while(u.length>0){var f=u.shift();var d=parseInt(f);if(isNaN(d)||d===0){c.fg=c.bg=c.decoration=null}else if(d===1){c.decoration=\"bold\"}else if(d===2){c.decoration=\"dim\"}else if(d==3){c.decoration=\"italic\"}else if(d==4){c.decoration=\"underline\"}else if(d==5){c.decoration=\"blink\"}else if(d===7){c.decoration=\"reverse\"}else if(d===8){c.decoration=\"hidden\"}else if(d===9){c.decoration=\"strikethrough\"}else if(d==39){c.fg=null}else if(d==49){c.bg=null}else if(d>=30&&d<38){c.fg=t[0][d%10][i]}else if(d>=90&&d<98){c.fg=t[1][d%10][i]}else if(d>=40&&d<48){c.bg=t[0][d%10][i]}else if(d>=100&&d<108){c.bg=t[1][d%10][i]}else if(d===38||d===48){var p=d===38;if(u.length>=1){var b=u.shift();if(b===\"5\"&&u.length>=1){var v=parseInt(u.shift());if(v>=0&&v<=255){if(!a){if(!this.PALETTE_COLORS){c.setupPalette()}if(p){c.fg=this.PALETTE_COLORS[v]}else{c.bg=this.PALETTE_COLORS[v]}}else{var m=v>=16?\"ansi-palette-\"+v:t[v>7?1:0][v%8][\"class\"];if(p){c.fg=m}else{c.bg=m}}}}else if(b===\"2\"&&u.length>=3){var g=parseInt(u.shift());var h=parseInt(u.shift());var y=parseInt(u.shift());if(g>=0&&g<=255&&h>=0&&h<=255&&y>=0&&y<=255){var x=g+\", \"+h+\", \"+y;if(!a){if(p){c.fg=x}else{c.bg=x}}else{if(p){c.fg=\"ansi-truecolor\";c.fg_truecolor=x}else{c.bg=\"ansi-truecolor\";c.bg_truecolor=x}}}}}}}if(c.fg===null&&c.bg===null&&c.decoration===null){return o}else{var w=[];var _=[];var E={};o.fg=c.fg;o.bg=c.bg;o.fg_truecolor=c.fg_truecolor;o.bg_truecolor=c.bg_truecolor;o.decoration=c.decoration;o.was_processed=true;return o}}},{key:\"processChunk\",value:function processChunk(e,n,t){var r=this;var a=this;n=n||{};var i=this.processChunkJson(e,n,t);if(n.json){return i}if(i.isEmpty()){return\"\"}if(!i.was_processed){return i.content}var o=n.use_classes;var l=[];var s=[];var u={};var c=function render_data(e){var n=[];var t=void 0;for(t in e){if(e.hasOwnProperty(t)){n.push(\"data-\"+t+'=\"'+r.escapeForHtml(e[t])+'\"')}}return n.length>0?\" \"+n.join(\" \"):\"\"};if(i.fg){if(o){s.push(i.fg+\"-fg\");if(i.fg_truecolor!==null){u[\"ansi-truecolor-fg\"]=i.fg_truecolor;i.fg_truecolor=null}}else{l.push(\"color:rgb(\"+i.fg+\")\")}}if(i.bg){if(o){s.push(i.bg+\"-bg\");if(i.bg_truecolor!==null){u[\"ansi-truecolor-bg\"]=i.bg_truecolor;i.bg_truecolor=null}}else{l.push(\"background-color:rgb(\"+i.bg+\")\")}}if(i.decoration){if(o){s.push(\"ansi-\"+i.decoration)}else if(i.decoration===\"bold\"){l.push(\"font-weight:bold\")}else if(i.decoration===\"dim\"){l.push(\"opacity:0.5\")}else if(i.decoration===\"italic\"){l.push(\"font-style:italic\")}else if(i.decoration===\"reverse\"){l.push(\"filter:invert(100%)\")}else if(i.decoration===\"hidden\"){l.push(\"visibility:hidden\")}else if(i.decoration===\"strikethrough\"){l.push(\"text-decoration:line-through\")}else{l.push(\"text-decoration:\"+i.decoration)}}if(o){return'\"+i.content+\"\"}else{return'\"+i.content+\"\"}}}]);return Anser}();e.exports=r},848:function(e){(function(n,t){if(true){e.exports=t(n)}else{}})(typeof __webpack_require__.g!=\"undefined\"?__webpack_require__.g:this,(function(e){if(e.CSS&&e.CSS.escape){return e.CSS.escape}var cssEscape=function(e){if(arguments.length==0){throw new TypeError(\"`CSS.escape` requires an argument.\")}var n=String(e);var t=n.length;var r=-1;var a;var i=\"\";var o=n.charCodeAt(0);while(++r=1&&a<=31||a==127||r==0&&a>=48&&a<=57||r==1&&a>=48&&a<=57&&o==45){i+=\"\\\\\"+a.toString(16)+\" \";continue}if(r==0&&t==1&&a==45){i+=\"\\\\\"+n.charAt(r);continue}if(a>=128||a==45||a==95||a>=48&&a<=57||a>=65&&a<=90||a>=97&&a<=122){i+=n.charAt(r);continue}i+=\"\\\\\"+n.charAt(r)}return i};if(!e.CSS){e.CSS={}}e.CSS.escape=cssEscape;return cssEscape}))},962:function(e,n,t){e=t.nmd(e);\n/*!\n * Platform.js v1.3.6\n * Copyright 2014-2020 Benjamin Tan\n * Copyright 2011-2013 John-David Dalton\n * Available under MIT license\n */(function(){\"use strict\";var t={function:true,object:true};var r=t[typeof window]&&window||this;var a=r;var i=t[typeof n]&&n;var o=t[\"object\"]&&e&&!e.nodeType&&e;var l=i&&o&&typeof __webpack_require__.g==\"object\"&&__webpack_require__.g;if(l&&(l.global===l||l.window===l||l.self===l)){r=l}var s=Math.pow(2,53)-1;var u=/\\bOpera/;var c=this;var f=Object.prototype;var d=f.hasOwnProperty;var p=f.toString;function capitalize(e){e=String(e);return e.charAt(0).toUpperCase()+e.slice(1)}function cleanupOS(e,n,t){var r={\"10.0\":\"10\",6.4:\"10 Technical Preview\",6.3:\"8.1\",6.2:\"8\",6.1:\"Server 2008 R2 / 7\",\"6.0\":\"Server 2008 / Vista\",5.2:\"Server 2003 / XP 64-bit\",5.1:\"XP\",5.01:\"2000 SP1\",\"5.0\":\"2000\",\"4.0\":\"NT\",\"4.90\":\"ME\"};if(n&&t&&/^Win/i.test(e)&&!/^Windows Phone /i.test(e)&&(r=r[/[\\d.]+$/.exec(e)])){e=\"Windows \"+r}e=String(e);if(n&&t){e=e.replace(RegExp(n,\"i\"),t)}e=format(e.replace(/ ce$/i,\" CE\").replace(/\\bhpw/i,\"web\").replace(/\\bMacintosh\\b/,\"Mac OS\").replace(/_PowerPC\\b/i,\" OS\").replace(/\\b(OS X) [^ \\d]+/i,\"$1\").replace(/\\bMac (OS X)\\b/,\"$1\").replace(/\\/(\\d)/,\" $1\").replace(/_/g,\".\").replace(/(?: BePC|[ .]*fc[ \\d.]+)$/i,\"\").replace(/\\bx86\\.64\\b/gi,\"x86_64\").replace(/\\b(Windows Phone) OS\\b/,\"$1\").replace(/\\b(Chrome OS \\w+) [\\d.]+\\b/,\"$1\").split(\" on \")[0]);return e}function each(e,n){var t=-1,r=e?e.length:0;if(typeof r==\"number\"&&r>-1&&r<=s){while(++t3&&\"WebKit\"||/\\bOpera\\b/.test(A)&&(/\\bOPR\\b/.test(e)?\"Blink\":\"Presto\")||/\\b(?:Midori|Nook|Safari)\\b/i.test(e)&&!/^(?:Trident|EdgeHTML)$/.test(P)&&\"WebKit\"||!P&&/\\bMSIE\\b/i.test(e)&&(z==\"Mac OS\"?\"Tasman\":\"Trident\")||P==\"WebKit\"&&/\\bPlayStation\\b(?! Vita\\b)/i.test(A)&&\"NetFront\"){P=[O]}if(A==\"IE\"&&(O=(/; *(?:XBLWP|ZuneWP)(\\d+)/i.exec(e)||0)[1])){A+=\" Mobile\";z=\"Windows Phone \"+(/\\+$/.test(O)?O:O+\".x\");j.unshift(\"desktop mode\")}else if(/\\bWPDesktop\\b/i.test(e)){A=\"IE Mobile\";z=\"Windows Phone 8.x\";j.unshift(\"desktop mode\");C||(C=(/\\brv:([\\d.]+)/.exec(e)||0)[1])}else if(A!=\"IE\"&&P==\"Trident\"&&(O=/\\brv:([\\d.]+)/.exec(e))){if(A){j.push(\"identifying as \"+A+(C?\" \"+C:\"\"))}A=\"IE\";C=O[1]}if(T){if(isHostType(n,\"global\")){if(g){O=g.lang.System;S=O.getProperty(\"os.arch\");z=z||O.getProperty(\"os.name\")+\" \"+O.getProperty(\"os.version\")}if(h){try{C=n.require(\"ringo/engine\").version.join(\".\");A=\"RingoJS\"}catch(e){if((O=n.system)&&O.global.system==n.system){A=\"Narwhal\";z||(z=O[0].os||null)}}if(!A){A=\"Rhino\"}}else if(typeof n.process==\"object\"&&!n.process.browser&&(O=n.process)){if(typeof O.versions==\"object\"){if(typeof O.versions.electron==\"string\"){j.push(\"Node \"+O.versions.node);A=\"Electron\";C=O.versions.electron}else if(typeof O.versions.nw==\"string\"){j.push(\"Chromium \"+C,\"Node \"+O.versions.node);A=\"NW.js\";C=O.versions.nw}}if(!A){A=\"Node.js\";S=O.arch;z=O.platform;C=/[\\d.]+/.exec(O.version);C=C?C[0]:null}}}else if(getClassOf(O=n.runtime)==d){A=\"Adobe AIR\";z=O.flash.system.Capabilities.os}else if(getClassOf(O=n.phantom)==m){A=\"PhantomJS\";C=(O=O.version||null)&&O.major+\".\"+O.minor+\".\"+O.patch}else if(typeof w.documentMode==\"number\"&&(O=/\\bTrident\\/(\\d+)/i.exec(e))){C=[C,w.documentMode];if((O=+O[1]+4)!=C[1]){j.push(\"IE \"+C[1]+\" mode\");P&&(P[1]=\"\");C[1]=O}C=A==\"IE\"?String(C[1].toFixed(1)):C[0]}else if(typeof w.documentMode==\"number\"&&/^(?:Chrome|Firefox)\\b/.test(A)){j.push(\"masking as \"+A+\" \"+C);A=\"IE\";C=\"11.0\";P=[\"Trident\"];z=\"Windows\"}z=z&&format(z)}if(C&&(O=/(?:[ab]|dp|pre|[ab]\\d+pre)(?:\\d+\\+?)?$/i.exec(C)||/(?:alpha|beta)(?: ?\\d)?/i.exec(e+\";\"+(T&&i.appMinorVersion))||/\\bMinefield\\b/i.test(e)&&\"a\")){k=/b/i.test(O)?\"beta\":\"alpha\";C=C.replace(RegExp(O+\"\\\\+?$\"),\"\")+(k==\"beta\"?x:y)+(/\\d+\\+?/.exec(O)||\"\")}if(A==\"Fennec\"||A==\"Firefox\"&&/\\b(?:Android|Firefox OS|KaiOS)\\b/.test(z)){A=\"Firefox Mobile\"}else if(A==\"Maxthon\"&&C){C=C.replace(/\\.[\\d.]+/,\".x\")}else if(/\\bXbox\\b/i.test(D)){if(D==\"Xbox 360\"){z=null}if(D==\"Xbox 360\"&&/\\bIEMobile\\b/.test(e)){j.unshift(\"mobile mode\")}}else if((/^(?:Chrome|IE|Opera)$/.test(A)||A&&!D&&!/Browser|Mobi/.test(A))&&(z==\"Windows CE\"||/Mobi/i.test(e))){A+=\" Mobile\"}else if(A==\"IE\"&&T){try{if(n.external===null){j.unshift(\"platform preview\")}}catch(e){j.unshift(\"embedded\")}}else if((/\\bBlackBerry\\b/.test(D)||/\\bBB10\\b/.test(e))&&(O=(RegExp(D.replace(/ +/g,\" *\")+\"/([.\\\\d]+)\",\"i\").exec(e)||0)[1]||C)){O=[O,/BB10/.test(e)];z=(O[1]?(D=null,N=\"BlackBerry\"):\"Device Software\")+\" \"+O[0];C=null}else if(this!=forOwn&&D!=\"Wii\"&&(T&&_||/Opera/.test(A)&&/\\b(?:MSIE|Firefox)\\b/i.test(e)||A==\"Firefox\"&&/\\bOS X (?:\\d+\\.){2,}/.test(z)||A==\"IE\"&&(z&&!/^Win/.test(z)&&C>5.5||/\\bWindows XP\\b/.test(z)&&C>8||C==8&&!/\\bTrident\\b/.test(e)))&&!u.test(O=parse.call(forOwn,e.replace(u,\"\")+\";\"))&&O.name){O=\"ing as \"+O.name+((O=O.version)?\" \"+O:\"\");if(u.test(A)){if(/\\bIE\\b/.test(O)&&z==\"Mac OS\"){z=null}O=\"identify\"+O}else{O=\"mask\"+O;if(E){A=format(E.replace(/([a-z])([A-Z])/g,\"$1 $2\"))}else{A=\"Opera\"}if(/\\bIE\\b/.test(O)){z=null}if(!T){C=null}}P=[\"Presto\"];j.push(O)}if(O=(/\\bAppleWebKit\\/([\\d.]+\\+?)/i.exec(e)||0)[1]){O=[parseFloat(O.replace(/\\.(\\d)$/,\".0$1\")),O];if(A==\"Safari\"&&O[1].slice(-1)==\"+\"){A=\"WebKit Nightly\";k=\"alpha\";C=O[1].slice(0,-1)}else if(C==O[1]||C==(O[2]=(/\\bSafari\\/([\\d.]+\\+?)/i.exec(e)||0)[1])){C=null}O[1]=(/\\b(?:Headless)?Chrome\\/([\\d.]+)/i.exec(e)||0)[1];if(O[0]==537.36&&O[2]==537.36&&parseFloat(O[1])>=28&&P==\"WebKit\"){P=[\"Blink\"]}if(!T||!s&&!O[1]){P&&(P[1]=\"like Safari\");O=(O=O[0],O<400?1:O<500?2:O<526?3:O<533?4:O<534?\"4+\":O<535?5:O<537?6:O<538?7:O<601?8:O<602?9:O<604?10:O<606?11:O<608?12:\"12\")}else{P&&(P[1]=\"like Chrome\");O=O[1]||(O=O[0],O<530?1:O<532?2:O<532.05?3:O<533?4:O<534.03?5:O<534.07?6:O<534.1?7:O<534.13?8:O<534.16?9:O<534.24?10:O<534.3?11:O<535.01?12:O<535.02?\"13+\":O<535.07?15:O<535.11?16:O<535.19?17:O<536.05?18:O<536.1?19:O<537.01?20:O<537.11?\"21+\":O<537.13?23:O<537.18?24:O<537.24?25:O<537.36?26:P!=\"Blink\"?\"27\":\"28\")}P&&(P[1]+=\" \"+(O+=typeof O==\"number\"?\".x\":/[.+]/.test(O)?\"\":\"+\"));if(A==\"Safari\"&&(!C||parseInt(C)>45)){C=O}else if(A==\"Chrome\"&&/\\bHeadlessChrome/i.test(e)){j.unshift(\"headless\")}}if(A==\"Opera\"&&(O=/\\bzbov|zvav$/.exec(z))){A+=\" \";j.unshift(\"desktop mode\");if(O==\"zvav\"){A+=\"Mini\";C=null}else{A+=\"Mobile\"}z=z.replace(RegExp(\" *\"+O+\"$\"),\"\")}else if(A==\"Safari\"&&/\\bChrome\\b/.exec(P&&P[1])){j.unshift(\"desktop mode\");A=\"Chrome Mobile\";C=null;if(/\\bOS X\\b/.test(z)){N=\"Apple\";z=\"iOS 4.3+\"}else{z=null}}else if(/\\bSRWare Iron\\b/.test(A)&&!C){C=getVersion(\"Chrome\")}if(C&&C.indexOf(O=/[\\d.]+$/.exec(z))==0&&e.indexOf(\"/\"+O+\"-\")>-1){z=trim(z.replace(O,\"\"))}if(z&&z.indexOf(A)!=-1&&!RegExp(A+\" OS\").test(z)){z=z.replace(RegExp(\" *\"+qualify(A)+\" *\"),\"\")}if(P&&!/\\b(?:Avant|Nook)\\b/.test(A)&&(/Browser|Lunascape|Maxthon/.test(A)||A!=\"Safari\"&&/^iOS/.test(z)&&/\\bSafari\\b/.test(P[1])||/^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|SRWare Iron|Vivaldi|Web)/.test(A)&&P[1])){(O=P[P.length-1])&&j.push(O)}if(j.length){j=[\"(\"+j.join(\"; \")+\")\"]}if(N&&D&&D.indexOf(N)<0){j.push(\"on \"+N)}if(D){j.push((/^on /.test(j[j.length-1])?\"\":\"on \")+D)}if(z){O=/ ([\\d.+]+)$/.exec(z);M=O&&z.charAt(z.length-O[0].length-1)==\"/\";z={architecture:32,family:O&&!M?z.replace(O[0],\"\"):z,version:O?O[1]:null,toString:function(){var e=this.version;return this.family+(e&&!M?\" \"+e:\"\")+(this.architecture==64?\" 64-bit\":\"\")}}}if((O=/\\b(?:AMD|IA|Win|WOW|x86_|x)64\\b/i.exec(S))&&!/\\bi686\\b/i.test(S)){if(z){z.architecture=64;z.family=z.family.replace(RegExp(\" *\"+O),\"\")}if(A&&(/\\bWOW64\\b/i.test(e)||T&&/\\w(?:86|32)$/.test(i.cpuClass||i.platform)&&!/\\bWin64; x64\\b/i.test(e))){j.unshift(\"32-bit\")}}else if(z&&/^OS X/.test(z.family)&&A==\"Chrome\"&&parseFloat(C)>=39){z.architecture=64}e||(e=null);var I={};I.description=e;I.layout=P&&P[0];I.manufacturer=N;I.name=A;I.prerelease=k;I.product=D;I.ua=e;I.version=A&&C;I.os=z||{architecture:null,family:null,version:null,toString:function(){return\"null\"}};I.parse=parse;I.toString=toStringPlatform;if(I.version){j.unshift(C)}if(I.name){j.unshift(A)}if(z&&A&&!(z==String(z).split(\" \")[0]&&(z==A.split(\" \")[0]||D))){j.push(D?\"(\"+z+\")\":\"on \"+z)}if(j.length){I.description=j.join(\" \")}return I}var b=parse();if(i&&o){forOwn(b,(function(e,n){i[n]=e}))}else{r.platform=b}}).call(this)},116:function(e,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:true});var t=\"\";function parse(e){var n=e.split(\"\\n\");return n.reduce((function(e,n){var t=parseChrome(n)||parseWinjs(n)||parseGecko(n)||parseNode(n)||parseJSC(n);if(t){e.push(t)}return e}),[])}var r=/^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack||\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;var a=/\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;function parseChrome(e){var n=r.exec(e);if(!n){return null}var i=n[2]&&n[2].indexOf(\"native\")===0;var o=n[2]&&n[2].indexOf(\"eval\")===0;var l=a.exec(n[2]);if(o&&l!=null){n[2]=l[1];n[3]=l[2];n[4]=l[3]}return{file:!i?n[2]:null,methodName:n[1]||t,arguments:i?[n[2]]:[],lineNumber:n[3]?+n[3]:null,column:n[4]?+n[4]:null}}var i=/^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;function parseWinjs(e){var n=i.exec(e);if(!n){return null}return{file:n[2],methodName:n[1]||t,arguments:[],lineNumber:+n[3],column:n[4]?+n[4]:null}}var o=/^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;var l=/(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;function parseGecko(e){var n=o.exec(e);if(!n){return null}var r=n[3]&&n[3].indexOf(\" > eval\")>-1;var a=l.exec(n[3]);if(r&&a!=null){n[3]=a[1];n[4]=a[2];n[5]=null}return{file:n[3],methodName:n[1]||t,arguments:n[2]?n[2].split(\",\"):[],lineNumber:n[4]?+n[4]:null,column:n[5]?+n[5]:null}}var s=/^\\s*(?:([^@]*)(?:\\((.*?)\\))?@)?(\\S.*?):(\\d+)(?::(\\d+))?\\s*$/i;function parseJSC(e){var n=s.exec(e);if(!n){return null}return{file:n[3],methodName:n[1]||t,arguments:[],lineNumber:+n[4],column:n[5]?+n[5]:null}}var u=/^\\s*at (?:((?:\\[object object\\])?[^\\\\/]+(?: \\[as \\S+\\])?) )?\\(?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;function parseNode(e){var n=u.exec(e);if(!n){return null}return{file:n[2],methodName:n[1]||t,arguments:[],lineNumber:+n[3],column:n[4]?+n[4]:null}}n.parse=parse},388:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});var a=this&&this.__setModuleDefault||(Object.create?function(e,n){Object.defineProperty(e,\"default\",{enumerable:true,value:n})}:function(e,n){e[\"default\"]=n});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t in e)if(t!==\"default\"&&Object.prototype.hasOwnProperty.call(e,t))r(n,e,t);a(n,e);return n};n.__esModule=true;n.onRefresh=n.unregister=n.register=n.onBuildError=n.onBuildOk=n.ReactDevOverlay=n.getServerError=n.getErrorByType=void 0;var o=i(t(857));var l=t(51);var s=false;var u=undefined;function onUnhandledError(e){var n=e===null||e===void 0?void 0:e.error;if(!n||!(n instanceof Error)||typeof n.stack!==\"string\"){return}if(n.message.match(/(hydration|content does not match|did not match)/i)){n.message+=\"\\n\\nSee more info here: https://nextjs.org/docs/messages/react-hydration-error\"}var t=n;o.emit({type:o.TYPE_UNHANDLED_ERROR,reason:n,frames:(0,l.parseStack)(t.stack)})}function onUnhandledRejection(e){var n=e===null||e===void 0?void 0:e.reason;if(!n||!(n instanceof Error)||typeof n.stack!==\"string\"){return}var t=n;o.emit({type:o.TYPE_UNHANDLED_REJECTION,reason:n,frames:(0,l.parseStack)(t.stack)})}function register(){if(s){return}s=true;try{var e=Error.stackTraceLimit;Error.stackTraceLimit=50;u=e}catch(e){}window.addEventListener(\"error\",onUnhandledError);window.addEventListener(\"unhandledrejection\",onUnhandledRejection)}n.register=register;function unregister(){if(!s){return}s=false;if(u!==undefined){try{Error.stackTraceLimit=u}catch(e){}u=undefined}window.removeEventListener(\"error\",onUnhandledError);window.removeEventListener(\"unhandledrejection\",onUnhandledRejection)}n.unregister=unregister;function onBuildOk(){o.emit({type:o.TYPE_BUILD_OK})}n.onBuildOk=onBuildOk;function onBuildError(e){o.emit({type:o.TYPE_BUILD_ERROR,message:e})}n.onBuildError=onBuildError;function onRefresh(){o.emit({type:o.TYPE_REFRESH})}n.onRefresh=onRefresh;var c=t(88);r(n,c,\"getErrorByType\");var f=t(566);r(n,f,\"getServerError\");var d=t(282);r(n,d,\"default\",\"ReactDevOverlay\")},446:function(e,n,t){\"use strict\";var r=this&&this.__extends||function(){var extendStatics=function(e,n){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)if(Object.prototype.hasOwnProperty.call(n,t))e[t]=n[t]};return extendStatics(e,n)};return function(e,n){if(typeof n!==\"function\"&&n!==null)throw new TypeError(\"Class extends value \"+String(n)+\" is not a constructor or null\");extendStatics(e,n);function __(){this.constructor=e}e.prototype=n===null?Object.create(n):(__.prototype=n.prototype,new __)}}();var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};n.__esModule=true;n.ErrorBoundary=void 0;var i=a(t(522));var o=function(e){r(ErrorBoundary,e);function ErrorBoundary(){var n=e!==null&&e.apply(this,arguments)||this;n.state={error:null};return n}ErrorBoundary.getDerivedStateFromError=function(e){return{error:e}};ErrorBoundary.prototype.componentDidCatch=function(e,n){this.props.onError(e,(n===null||n===void 0?void 0:n.componentStack)||null);if(!this.props.globalOverlay){this.setState({error:e})}};ErrorBoundary.prototype.render=function(){return this.state.error||this.props.globalOverlay&&this.props.isMounted?this.props.globalOverlay?i[\"default\"].createElement(\"html\",null,i[\"default\"].createElement(\"head\",null),i[\"default\"].createElement(\"body\",null)):null:this.props.children};return ErrorBoundary}(i[\"default\"].PureComponent);n.ErrorBoundary=o},282:function(e,n,t){\"use strict\";var r=this&&this.__assign||function(){r=Object.assign||function(e){for(var n,t=1,r=arguments.length;t0)&&!(a=r.next()).done)i.push(a.value)}catch(e){o={error:e}}finally{try{if(a&&!a.done&&(t=r[\"return\"]))t.call(r)}finally{if(o)throw o.error}}return i};var s=this&&this.__spreadArray||function(e,n,t){if(t||arguments.length===2)for(var r=0,a=n.length,i;r? +\\d+ +\\| ( *)/.exec((0,c[\"default\"])(e))})).filter(Boolean).map((function(e){return e.pop()})).reduce((function(e,n){return isNaN(e)?n.length:Math.min(e,n.length)}),NaN);if(n>1){var r=\" \".repeat(n);return e.map((function(e,n){return~(n=e.indexOf(\"|\"))?e.substring(0,n)+e.substring(n).replace(r,\"\"):e})).join(\"\\n\")}return e.join(\"\\n\")}),[t]);var i=u.useMemo((function(){return s[\"default\"].ansiToJson(a,{json:true,use_classes:true,remove_empty:true})}),[a]);var o=u.useCallback((function(){var e;var t=new URLSearchParams;for(var r in n){t.append(r,((e=n[r])!==null&&e!==void 0?e:\"\").toString())}self.fetch(\"\".concat( false||\"\",\"/__nextjs_launch-editor?\").concat(t.toString())).then((function(){}),(function(){console.error(\"There was an issue opening this code in your editor.\")}))}),[n]);return u.createElement(\"div\",{\"data-nextjs-codeframe\":true},u.createElement(\"div\",null,u.createElement(\"p\",{role:\"link\",onClick:o,tabIndex:1,title:\"Click to open in your editor\"},u.createElement(\"span\",null,(0,f.getFrameSource)(n),\" @ \",n.methodName),u.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"},u.createElement(\"path\",{d:\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"}),u.createElement(\"polyline\",{points:\"15 3 21 3 21 9\"}),u.createElement(\"line\",{x1:\"10\",y1:\"14\",x2:\"21\",y2:\"3\"})))),u.createElement(\"pre\",null,i.map((function(e,n){return u.createElement(\"span\",{key:\"frame-\".concat(n),style:r({color:e.fg?\"var(--color-\".concat(e.fg,\")\"):undefined},e.decoration===\"bold\"?{fontWeight:800}:e.decoration===\"italic\"?{fontStyle:\"italic\"}:undefined)},e.content)}))))};n.CodeFrame=d},30:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});n.__esModule=true;n.CodeFrame=void 0;var a=t(154);r(n,a,\"CodeFrame\")},265:function(e,n,t){\"use strict\";var r=this&&this.__makeTemplateObject||function(e,n){if(Object.defineProperty){Object.defineProperty(e,\"raw\",{value:n})}else{e.raw=n}return e};n.__esModule=true;n.styles=void 0;var a=t(464);var i=(0,a.noop)(o||(o=r([\"\\n [data-nextjs-codeframe] {\\n overflow: auto;\\n border-radius: var(--size-gap-half);\\n background-color: var(--color-ansi-bg);\\n color: var(--color-ansi-fg);\\n }\\n [data-nextjs-codeframe]::selection,\\n [data-nextjs-codeframe] *::selection {\\n background-color: var(--color-ansi-selection);\\n }\\n [data-nextjs-codeframe] * {\\n color: inherit;\\n background-color: transparent;\\n font-family: var(--font-stack-monospace);\\n }\\n\\n [data-nextjs-codeframe] > * {\\n margin: 0;\\n padding: calc(var(--size-gap) + var(--size-gap-half))\\n calc(var(--size-gap-double) + var(--size-gap-half));\\n }\\n [data-nextjs-codeframe] > div {\\n display: inline-block;\\n width: auto;\\n min-width: 100%;\\n border-bottom: 1px solid var(--color-ansi-bright-black);\\n }\\n [data-nextjs-codeframe] > div > p {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n cursor: pointer;\\n margin: 0;\\n }\\n [data-nextjs-codeframe] > div > p:hover {\\n text-decoration: underline dotted;\\n }\\n [data-nextjs-codeframe] div > p > svg {\\n width: auto;\\n height: 1em;\\n margin-left: 8px;\\n }\\n [data-nextjs-codeframe] div > pre {\\n overflow: hidden;\\n display: inline-block;\\n }\\n\"],[\"\\n [data-nextjs-codeframe] {\\n overflow: auto;\\n border-radius: var(--size-gap-half);\\n background-color: var(--color-ansi-bg);\\n color: var(--color-ansi-fg);\\n }\\n [data-nextjs-codeframe]::selection,\\n [data-nextjs-codeframe] *::selection {\\n background-color: var(--color-ansi-selection);\\n }\\n [data-nextjs-codeframe] * {\\n color: inherit;\\n background-color: transparent;\\n font-family: var(--font-stack-monospace);\\n }\\n\\n [data-nextjs-codeframe] > * {\\n margin: 0;\\n padding: calc(var(--size-gap) + var(--size-gap-half))\\n calc(var(--size-gap-double) + var(--size-gap-half));\\n }\\n [data-nextjs-codeframe] > div {\\n display: inline-block;\\n width: auto;\\n min-width: 100%;\\n border-bottom: 1px solid var(--color-ansi-bright-black);\\n }\\n [data-nextjs-codeframe] > div > p {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n cursor: pointer;\\n margin: 0;\\n }\\n [data-nextjs-codeframe] > div > p:hover {\\n text-decoration: underline dotted;\\n }\\n [data-nextjs-codeframe] div > p > svg {\\n width: auto;\\n height: 1em;\\n margin-left: 8px;\\n }\\n [data-nextjs-codeframe] div > pre {\\n overflow: hidden;\\n display: inline-block;\\n }\\n\"])));n.styles=i;var o},438:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});var a=this&&this.__setModuleDefault||(Object.create?function(e,n){Object.defineProperty(e,\"default\",{enumerable:true,value:n})}:function(e,n){e[\"default\"]=n});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t in e)if(t!==\"default\"&&Object.prototype.hasOwnProperty.call(e,t))r(n,e,t);a(n,e);return n};var o=this&&this.__rest||function(e,n){var t={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)&&n.indexOf(r)<0)t[r]=e[r];if(e!=null&&typeof Object.getOwnPropertySymbols===\"function\")for(var a=0,r=Object.getOwnPropertySymbols(e);a0)&&!(a=r.next()).done)i.push(a.value)}catch(e){o={error:e}}finally{try{if(a&&!a.done&&(t=r[\"return\"]))t.call(r)}finally{if(o)throw o.error}}return i};n.__esModule=true;n.Dialog=void 0;var s=i(t(522));var u=t(196);var c=function Dialog(e){var n=e.children,t=e.type,r=e.onClose,a=o(e,[\"children\",\"type\",\"onClose\"]);var i=l(s.useState(null),2),c=i[0],f=i[1];var d=s.useCallback((function(e){f(e)}),[]);(0,u.useOnClickOutside)(c,r);s.useEffect((function(){if(c==null){return}var e=c.getRootNode();if(!(e instanceof ShadowRoot)){return}var n=e;function handler(e){var t=n.activeElement;if(e.key===\"Enter\"&&t instanceof HTMLElement&&t.getAttribute(\"role\")===\"link\"){e.preventDefault();e.stopPropagation();t.click()}}n.addEventListener(\"keydown\",handler);return function(){return n.removeEventListener(\"keydown\",handler)}}),[c]);return s.createElement(\"div\",{ref:d,\"data-nextjs-dialog\":true,tabIndex:-1,role:\"dialog\",\"aria-labelledby\":a[\"aria-labelledby\"],\"aria-describedby\":a[\"aria-describedby\"],\"aria-modal\":\"true\"},s.createElement(\"div\",{\"data-nextjs-dialog-banner\":true,className:\"banner-\".concat(t)}),n)};n.Dialog=c},593:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});var a=this&&this.__setModuleDefault||(Object.create?function(e,n){Object.defineProperty(e,\"default\",{enumerable:true,value:n})}:function(e,n){e[\"default\"]=n});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t in e)if(t!==\"default\"&&Object.prototype.hasOwnProperty.call(e,t))r(n,e,t);a(n,e);return n};n.__esModule=true;n.DialogBody=void 0;var o=i(t(522));var l=function DialogBody(e){var n=e.children,t=e.className;return o.createElement(\"div\",{\"data-nextjs-dialog-body\":true,className:t},n)};n.DialogBody=l},725:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});var a=this&&this.__setModuleDefault||(Object.create?function(e,n){Object.defineProperty(e,\"default\",{enumerable:true,value:n})}:function(e,n){e[\"default\"]=n});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t in e)if(t!==\"default\"&&Object.prototype.hasOwnProperty.call(e,t))r(n,e,t);a(n,e);return n};n.__esModule=true;n.DialogContent=void 0;var o=i(t(522));var l=function DialogContent(e){var n=e.children,t=e.className;return o.createElement(\"div\",{\"data-nextjs-dialog-content\":true,className:t},n)};n.DialogContent=l},289:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});var a=this&&this.__setModuleDefault||(Object.create?function(e,n){Object.defineProperty(e,\"default\",{enumerable:true,value:n})}:function(e,n){e[\"default\"]=n});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t in e)if(t!==\"default\"&&Object.prototype.hasOwnProperty.call(e,t))r(n,e,t);a(n,e);return n};n.__esModule=true;n.DialogHeader=void 0;var o=i(t(522));var l=function DialogHeader(e){var n=e.children,t=e.className;return o.createElement(\"div\",{\"data-nextjs-dialog-header\":true,className:t},n)};n.DialogHeader=l},931:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});n.__esModule=true;n.styles=n.DialogHeader=n.DialogContent=n.DialogBody=n.Dialog=void 0;var a=t(438);r(n,a,\"Dialog\");var i=t(593);r(n,i,\"DialogBody\");var o=t(725);r(n,o,\"DialogContent\");var l=t(289);r(n,l,\"DialogHeader\");var s=t(663);r(n,s,\"styles\")},663:function(e,n,t){\"use strict\";var r=this&&this.__makeTemplateObject||function(e,n){if(Object.defineProperty){Object.defineProperty(e,\"raw\",{value:n})}else{e.raw=n}return e};n.__esModule=true;n.styles=void 0;var a=t(464);var i=(0,a.noop)(o||(o=r([\"\\n [data-nextjs-dialog] {\\n display: flex;\\n flex-direction: column;\\n width: 100%;\\n margin-right: auto;\\n margin-left: auto;\\n outline: none;\\n background: white;\\n border-radius: var(--size-gap);\\n box-shadow: 0 var(--size-gap-half) var(--size-gap-double)\\n rgba(0, 0, 0, 0.25);\\n max-height: calc(100% - 56px);\\n overflow-y: hidden;\\n }\\n\\n @media (max-height: 812px) {\\n [data-nextjs-dialog-overlay] {\\n max-height: calc(100% - 15px);\\n }\\n }\\n\\n @media (min-width: 576px) {\\n [data-nextjs-dialog] {\\n max-width: 540px;\\n box-shadow: 0 var(--size-gap) var(--size-gap-quad) rgba(0, 0, 0, 0.25);\\n }\\n }\\n\\n @media (min-width: 768px) {\\n [data-nextjs-dialog] {\\n max-width: 720px;\\n }\\n }\\n\\n @media (min-width: 992px) {\\n [data-nextjs-dialog] {\\n max-width: 960px;\\n }\\n }\\n\\n [data-nextjs-dialog-banner] {\\n position: relative;\\n }\\n [data-nextjs-dialog-banner].banner-warning {\\n border-color: var(--color-ansi-yellow);\\n }\\n [data-nextjs-dialog-banner].banner-error {\\n border-color: var(--color-ansi-red);\\n }\\n\\n [data-nextjs-dialog-banner]::after {\\n z-index: 2;\\n content: '';\\n position: absolute;\\n top: 0;\\n right: 0;\\n width: 100%;\\n /* banner width: */\\n border-top-width: var(--size-gap-half);\\n border-bottom-width: 0;\\n border-top-style: solid;\\n border-bottom-style: solid;\\n border-top-color: inherit;\\n border-bottom-color: transparent;\\n }\\n\\n [data-nextjs-dialog-content] {\\n overflow-y: auto;\\n border: none;\\n margin: 0;\\n /* calc(padding + banner width offset) */\\n padding: calc(var(--size-gap-double) + var(--size-gap-half))\\n var(--size-gap-double);\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n }\\n [data-nextjs-dialog-content] > [data-nextjs-dialog-header] {\\n flex-shrink: 0;\\n margin-bottom: var(--size-gap-double);\\n }\\n [data-nextjs-dialog-content] > [data-nextjs-dialog-body] {\\n position: relative;\\n flex: 1 1 auto;\\n }\\n\"],[\"\\n [data-nextjs-dialog] {\\n display: flex;\\n flex-direction: column;\\n width: 100%;\\n margin-right: auto;\\n margin-left: auto;\\n outline: none;\\n background: white;\\n border-radius: var(--size-gap);\\n box-shadow: 0 var(--size-gap-half) var(--size-gap-double)\\n rgba(0, 0, 0, 0.25);\\n max-height: calc(100% - 56px);\\n overflow-y: hidden;\\n }\\n\\n @media (max-height: 812px) {\\n [data-nextjs-dialog-overlay] {\\n max-height: calc(100% - 15px);\\n }\\n }\\n\\n @media (min-width: 576px) {\\n [data-nextjs-dialog] {\\n max-width: 540px;\\n box-shadow: 0 var(--size-gap) var(--size-gap-quad) rgba(0, 0, 0, 0.25);\\n }\\n }\\n\\n @media (min-width: 768px) {\\n [data-nextjs-dialog] {\\n max-width: 720px;\\n }\\n }\\n\\n @media (min-width: 992px) {\\n [data-nextjs-dialog] {\\n max-width: 960px;\\n }\\n }\\n\\n [data-nextjs-dialog-banner] {\\n position: relative;\\n }\\n [data-nextjs-dialog-banner].banner-warning {\\n border-color: var(--color-ansi-yellow);\\n }\\n [data-nextjs-dialog-banner].banner-error {\\n border-color: var(--color-ansi-red);\\n }\\n\\n [data-nextjs-dialog-banner]::after {\\n z-index: 2;\\n content: '';\\n position: absolute;\\n top: 0;\\n right: 0;\\n width: 100%;\\n /* banner width: */\\n border-top-width: var(--size-gap-half);\\n border-bottom-width: 0;\\n border-top-style: solid;\\n border-bottom-style: solid;\\n border-top-color: inherit;\\n border-bottom-color: transparent;\\n }\\n\\n [data-nextjs-dialog-content] {\\n overflow-y: auto;\\n border: none;\\n margin: 0;\\n /* calc(padding + banner width offset) */\\n padding: calc(var(--size-gap-double) + var(--size-gap-half))\\n var(--size-gap-double);\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n }\\n [data-nextjs-dialog-content] > [data-nextjs-dialog-header] {\\n flex-shrink: 0;\\n margin-bottom: var(--size-gap-double);\\n }\\n [data-nextjs-dialog-content] > [data-nextjs-dialog-body] {\\n position: relative;\\n flex: 1 1 auto;\\n }\\n\"])));n.styles=i;var o},652:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});var a=this&&this.__setModuleDefault||(Object.create?function(e,n){Object.defineProperty(e,\"default\",{enumerable:true,value:n})}:function(e,n){e[\"default\"]=n});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t in e)if(t!==\"default\"&&Object.prototype.hasOwnProperty.call(e,t))r(n,e,t);a(n,e);return n};var o=this&&this.__read||function(e,n){var t=typeof Symbol===\"function\"&&e[Symbol.iterator];if(!t)return e;var r=t.call(e),a,i=[],o;try{while((n===void 0||n-- >0)&&!(a=r.next()).done)i.push(a.value)}catch(e){o={error:e}}finally{try{if(a&&!a.done&&(t=r[\"return\"]))t.call(r)}finally{if(o)throw o.error}}return i};n.__esModule=true;n.LeftRightDialogHeader=void 0;var l=i(t(522));var s=t(514);var u=function LeftRightDialogHeader(e){var n=e.children,t=e.className,r=e.previous,a=e.next,i=e.close;var u=l.useRef(null);var c=l.useRef(null);var f=l.useRef(null);var d=o(l.useState(null),2),p=d[0],b=d[1];var v=l.useCallback((function(e){b(e)}),[]);l.useEffect((function(){if(p==null){return}var e=p.getRootNode();var n=self.document;function handler(n){if(n.key===\"ArrowLeft\"){n.stopPropagation();if(u.current){u.current.focus()}r&&r()}else if(n.key===\"ArrowRight\"){n.stopPropagation();if(c.current){c.current.focus()}a&&a()}else if(n.key===\"Escape\"){n.stopPropagation();if(e instanceof ShadowRoot){var t=e.activeElement;if(t&&t!==f.current&&t instanceof HTMLElement){t.blur();return}}if(i){i()}}}e.addEventListener(\"keydown\",handler);if(e!==n){n.addEventListener(\"keydown\",handler)}return function(){e.removeEventListener(\"keydown\",handler);if(e!==n){n.removeEventListener(\"keydown\",handler)}}}),[i,p,a,r]);l.useEffect((function(){if(p==null){return}var e=p.getRootNode();if(e instanceof ShadowRoot){var n=e.activeElement;if(r==null){if(u.current&&n===u.current){u.current.blur()}}else if(a==null){if(c.current&&n===c.current){c.current.blur()}}}}),[p,a,r]);return l.createElement(\"div\",{\"data-nextjs-dialog-left-right\":true,className:t},l.createElement(\"nav\",{ref:v},l.createElement(\"button\",{ref:u,type:\"button\",disabled:r==null?true:undefined,\"aria-disabled\":r==null?true:undefined,onClick:r!==null&&r!==void 0?r:undefined},l.createElement(\"svg\",{viewBox:\"0 0 14 14\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\"},l.createElement(\"path\",{d:\"M6.99996 1.16666L1.16663 6.99999L6.99996 12.8333M12.8333 6.99999H1.99996H12.8333Z\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"}))),l.createElement(\"button\",{ref:c,type:\"button\",disabled:a==null?true:undefined,\"aria-disabled\":a==null?true:undefined,onClick:a!==null&&a!==void 0?a:undefined},l.createElement(\"svg\",{viewBox:\"0 0 14 14\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\"},l.createElement(\"path\",{d:\"M6.99996 1.16666L12.8333 6.99999L6.99996 12.8333M1.16663 6.99999H12H1.16663Z\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"}))),\"Â \",n),i?l.createElement(\"button\",{\"data-nextjs-errors-dialog-left-right-close-button\":true,ref:f,type:\"button\",onClick:i,\"aria-label\":\"Close\"},l.createElement(\"span\",{\"aria-hidden\":\"true\"},l.createElement(s.CloseIcon,null))):null)};n.LeftRightDialogHeader=u},16:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});n.__esModule=true;n.styles=n.LeftRightDialogHeader=void 0;var a=t(652);r(n,a,\"LeftRightDialogHeader\");var i=t(769);r(n,i,\"styles\")},769:function(e,n,t){\"use strict\";var r=this&&this.__makeTemplateObject||function(e,n){if(Object.defineProperty){Object.defineProperty(e,\"raw\",{value:n})}else{e.raw=n}return e};n.__esModule=true;n.styles=void 0;var a=t(464);var i=(0,a.noop)(o||(o=r([\"\\n [data-nextjs-dialog-left-right] {\\n display: flex;\\n flex-direction: row;\\n align-content: center;\\n align-items: center;\\n justify-content: space-between;\\n }\\n [data-nextjs-dialog-left-right] > nav > button {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n\\n width: calc(var(--size-gap-double) + var(--size-gap));\\n height: calc(var(--size-gap-double) + var(--size-gap));\\n font-size: 0;\\n border: none;\\n background-color: rgba(255, 85, 85, 0.1);\\n color: var(--color-ansi-red);\\n cursor: pointer;\\n transition: background-color 0.25s ease;\\n }\\n [data-nextjs-dialog-left-right] > nav > button > svg {\\n width: auto;\\n height: calc(var(--size-gap) + var(--size-gap-half));\\n }\\n [data-nextjs-dialog-left-right] > nav > button:hover {\\n background-color: rgba(255, 85, 85, 0.2);\\n }\\n [data-nextjs-dialog-left-right] > nav > button:disabled {\\n background-color: rgba(255, 85, 85, 0.1);\\n color: rgba(255, 85, 85, 0.4);\\n cursor: not-allowed;\\n }\\n\\n [data-nextjs-dialog-left-right] > nav > button:first-of-type {\\n border-radius: var(--size-gap-half) 0 0 var(--size-gap-half);\\n margin-right: 1px;\\n }\\n [data-nextjs-dialog-left-right] > nav > button:last-of-type {\\n border-radius: 0 var(--size-gap-half) var(--size-gap-half) 0;\\n }\\n\\n [data-nextjs-dialog-left-right] > button:last-of-type {\\n border: 0;\\n padding: 0;\\n\\n background-color: transparent;\\n appearance: none;\\n\\n opacity: 0.4;\\n transition: opacity 0.25s ease;\\n }\\n [data-nextjs-dialog-left-right] > button:last-of-type:hover {\\n opacity: 0.7;\\n }\\n\"],[\"\\n [data-nextjs-dialog-left-right] {\\n display: flex;\\n flex-direction: row;\\n align-content: center;\\n align-items: center;\\n justify-content: space-between;\\n }\\n [data-nextjs-dialog-left-right] > nav > button {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n\\n width: calc(var(--size-gap-double) + var(--size-gap));\\n height: calc(var(--size-gap-double) + var(--size-gap));\\n font-size: 0;\\n border: none;\\n background-color: rgba(255, 85, 85, 0.1);\\n color: var(--color-ansi-red);\\n cursor: pointer;\\n transition: background-color 0.25s ease;\\n }\\n [data-nextjs-dialog-left-right] > nav > button > svg {\\n width: auto;\\n height: calc(var(--size-gap) + var(--size-gap-half));\\n }\\n [data-nextjs-dialog-left-right] > nav > button:hover {\\n background-color: rgba(255, 85, 85, 0.2);\\n }\\n [data-nextjs-dialog-left-right] > nav > button:disabled {\\n background-color: rgba(255, 85, 85, 0.1);\\n color: rgba(255, 85, 85, 0.4);\\n cursor: not-allowed;\\n }\\n\\n [data-nextjs-dialog-left-right] > nav > button:first-of-type {\\n border-radius: var(--size-gap-half) 0 0 var(--size-gap-half);\\n margin-right: 1px;\\n }\\n [data-nextjs-dialog-left-right] > nav > button:last-of-type {\\n border-radius: 0 var(--size-gap-half) var(--size-gap-half) 0;\\n }\\n\\n [data-nextjs-dialog-left-right] > button:last-of-type {\\n border: 0;\\n padding: 0;\\n\\n background-color: transparent;\\n appearance: none;\\n\\n opacity: 0.4;\\n transition: opacity 0.25s ease;\\n }\\n [data-nextjs-dialog-left-right] > button:last-of-type:hover {\\n opacity: 0.7;\\n }\\n\"])));n.styles=i;var o},918:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});var a=this&&this.__setModuleDefault||(Object.create?function(e,n){Object.defineProperty(e,\"default\",{enumerable:true,value:n})}:function(e,n){e[\"default\"]=n});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t in e)if(t!==\"default\"&&Object.prototype.hasOwnProperty.call(e,t))r(n,e,t);a(n,e);return n};var o=this&&this.__read||function(e,n){var t=typeof Symbol===\"function\"&&e[Symbol.iterator];if(!t)return e;var r=t.call(e),a,i=[],o;try{while((n===void 0||n-- >0)&&!(a=r.next()).done)i.push(a.value)}catch(e){o={error:e}}finally{try{if(a&&!a.done&&(t=r[\"return\"]))t.call(r)}finally{if(o)throw o.error}}return i};var l=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};n.__esModule=true;n.Overlay=void 0;var s=l(t(890));var u=i(t(522));var c=t(644);var f=function Overlay(e){var n=e.className,t=e.children,r=e.fixed;u.useEffect((function(){(0,c.lock)();return function(){(0,c.unlock)()}}),[]);var a=o(u.useState(null),2),i=a[0],l=a[1];var f=u.useCallback((function(e){l(e)}),[]);u.useEffect((function(){if(i==null){return}var e=(0,s[\"default\"])({context:i});return function(){e.disengage()}}),[i]);return u.createElement(\"div\",{\"data-nextjs-dialog-overlay\":true,className:n,ref:f},u.createElement(\"div\",{\"data-nextjs-dialog-backdrop\":true,\"data-nextjs-dialog-backdrop-fixed\":r?true:undefined}),t)};n.Overlay=f},644:function(e,n){\"use strict\";n.__esModule=true;n.unlock=n.lock=void 0;var t;var r;var a=0;function lock(){setTimeout((function(){if(a++>0){return}var e=window.innerWidth-document.documentElement.clientWidth;if(e>0){t=document.body.style.paddingRight;document.body.style.paddingRight=\"\".concat(e,\"px\")}r=document.body.style.overflow;document.body.style.overflow=\"hidden\"}))}n.lock=lock;function unlock(){setTimeout((function(){if(a===0||--a!==0){return}if(t!==undefined){document.body.style.paddingRight=t;t=undefined}if(r!==undefined){document.body.style.overflow=r;r=undefined}}))}n.unlock=unlock},881:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});n.__esModule=true;n.Overlay=void 0;var a=t(918);r(n,a,\"Overlay\")},890:function(e,n,t){\"use strict\";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};n.__esModule=true;var a=r(t(962));var i=r(t(848));function nodeArray(e){if(!e){return[]}if(Array.isArray(e)){return e}if(e.nodeType!==undefined){return[e]}if(typeof e===\"string\"){e=document.querySelectorAll(e)}if(e.length!==undefined){return[].slice.call(e,0)}throw new TypeError(\"unexpected input \"+String(e))}function contextToElement(e){var n=e.context,t=e.label,r=t===undefined?\"context-to-element\":t,a=e.resolveDocument,i=e.defaultToDocument;var o=nodeArray(n)[0];if(a&&o&&o.nodeType===Node.DOCUMENT_NODE){o=o.documentElement}if(!o&&i){return document.documentElement}if(!o){throw new TypeError(r+\" requires valid options.context\")}if(o.nodeType!==Node.ELEMENT_NODE&&o.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){throw new TypeError(r+\" requires options.context to be an Element\")}return o}function getShadowHost(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},n=e.context;var t=contextToElement({label:\"get/shadow-host\",context:n});var r=null;while(t){r=t;t=t.parentNode}if(r.nodeType===r.DOCUMENT_FRAGMENT_NODE&&r.host){return r.host}return null}function getDocument(e){if(!e){return document}if(e.nodeType===Node.DOCUMENT_NODE){return e}return e.ownerDocument||document}function isActiveElement(e){var n=contextToElement({label:\"is/active-element\",resolveDocument:true,context:e});var t=getDocument(n);if(t.activeElement===n){return true}var r=getShadowHost({context:n});if(r&&r.shadowRoot.activeElement===n){return true}return false}function getParents(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},n=e.context;var t=[];var r=contextToElement({label:\"get/parents\",context:n});while(r){t.push(r);r=r.parentNode;if(r&&r.nodeType!==Node.ELEMENT_NODE){r=null}}return t}var o=[\"matches\",\"webkitMatchesSelector\",\"mozMatchesSelector\",\"msMatchesSelector\"];var l=null;function findMethodName(e){o.some((function(n){if(!e[n]){return false}l=n;return true}))}function elementMatches(e,n){if(!l){findMethodName(e)}return e[l](n)}var s=JSON.parse(JSON.stringify(a[\"default\"]));var u=s.os.family||\"\";var c=u===\"Android\";var f=u.slice(0,7)===\"Windows\";var d=u===\"OS X\";var p=u===\"iOS\";var b=s.layout===\"Blink\";var v=s.layout===\"Gecko\";var m=s.layout===\"Trident\";var g=s.layout===\"EdgeHTML\";var h=s.layout===\"WebKit\";var y=parseFloat(s.version);var x=Math.floor(y);s.majorVersion=x;s.is={ANDROID:c,WINDOWS:f,OSX:d,IOS:p,BLINK:b,GECKO:v,TRIDENT:m,EDGE:g,WEBKIT:h,IE9:m&&x===9,IE10:m&&x===10,IE11:m&&x===11};function before(){var e={activeElement:document.activeElement,windowScrollTop:window.scrollTop,windowScrollLeft:window.scrollLeft,bodyScrollTop:document.body.scrollTop,bodyScrollLeft:document.body.scrollLeft};var n=document.createElement(\"iframe\");n.setAttribute(\"style\",\"position:absolute; position:fixed; top:0; left:-2px; width:1px; height:1px; overflow:hidden;\");n.setAttribute(\"aria-live\",\"off\");n.setAttribute(\"aria-busy\",\"true\");n.setAttribute(\"aria-hidden\",\"true\");document.body.appendChild(n);var t=n.contentWindow;var r=t.document;r.open();r.close();var a=r.createElement(\"div\");r.body.appendChild(a);e.iframe=n;e.wrapper=a;e.window=t;e.document=r;return e}function test(e,n){e.wrapper.innerHTML=\"\";var t=typeof n.element===\"string\"?e.document.createElement(n.element):n.element(e.wrapper,e.document);var r=n.mutate&&n.mutate(t,e.wrapper,e.document);if(!r&&r!==false){r=t}!t.parentNode&&e.wrapper.appendChild(t);r&&r.focus&&r.focus();return n.validate?n.validate(t,r,e.document):e.document.activeElement===r}function after(e){if(e.activeElement===document.body){document.activeElement&&document.activeElement.blur&&document.activeElement.blur();if(s.is.IE10){document.body.focus()}}else{e.activeElement&&e.activeElement.focus&&e.activeElement.focus()}document.body.removeChild(e.iframe);window.scrollTop=e.windowScrollTop;window.scrollLeft=e.windowScrollLeft;document.body.scrollTop=e.bodyScrollTop;document.body.scrollLeft=e.bodyScrollLeft}function detectFocus(e){var n=before();var t={};Object.keys(e).map((function(r){t[r]=test(n,e[r])}));after(n);return t}var w=\"1.4.1\";function readLocalStorage(e){var n=void 0;try{n=window.localStorage&&window.localStorage.getItem(e);n=n?JSON.parse(n):{}}catch(e){n={}}return n}function writeLocalStorage(e,n){if(!document.hasFocus()){try{window.localStorage&&window.localStorage.removeItem(e)}catch(e){}return}try{window.localStorage&&window.localStorage.setItem(e,JSON.stringify(n))}catch(e){}}var _=typeof window!==\"undefined\"&&window.navigator.userAgent||\"\";var E=\"ally-supports-cache\";var O=readLocalStorage(E);if(O.userAgent!==_||O.version!==w){O={}}O.userAgent=_;O.version=w;var S={get:function get(){return O},set:function set(e){Object.keys(e).forEach((function(n){O[n]=e[n]}));O.time=(new Date).toISOString();writeLocalStorage(E,O)}};function cssShadowPiercingDeepCombinator(){var e=void 0;try{document.querySelector(\"html >>> :first-child\");e=\">>>\"}catch(n){try{document.querySelector(\"html /deep/ :first-child\");e=\"/deep/\"}catch(n){e=\"\"}}return e}var j=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\";var k={element:\"div\",mutate:function mutate(e){e.innerHTML=''+'
';return e.querySelector(\"area\")}};var T={element:\"div\",mutate:function mutate(e){e.innerHTML=''+'
';return false},validate:function validate(e,n,t){if(s.is.GECKO){return true}var r=e.querySelector(\"area\");r.focus();return t.activeElement===r}};var C={element:\"div\",mutate:function mutate(e){e.innerHTML=''+'
';return e.querySelector(\"area\")},validate:function validate(e,n,t){if(s.is.GECKO){return true}return t.activeElement===n}};var M={name:\"can-focus-audio-without-controls\",element:\"audio\",mutate:function mutate(e){try{e.setAttribute(\"src\",j)}catch(e){}}};var P=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\";var A={element:\"div\",mutate:function mutate(e){e.innerHTML=''+'
';return e.querySelector(\"area\")}};var D={element:\"div\",mutate:function mutate(e){e.setAttribute(\"tabindex\",\"-1\");e.setAttribute(\"style\",\"display: -webkit-flex; display: -ms-flexbox; display: flex;\");e.innerHTML='hello';return e.querySelector(\"span\")}};var N={element:\"fieldset\",mutate:function mutate(e){e.setAttribute(\"tabindex\",0);e.setAttribute(\"disabled\",\"disabled\")}};var z={element:\"fieldset\",mutate:function mutate(e){e.innerHTML=\"content
\"}};var I={element:\"span\",mutate:function mutate(e){e.setAttribute(\"style\",\"display: -webkit-flex; display: -ms-flexbox; display: flex;\");e.innerHTML='hello'}};var R={element:\"form\",mutate:function mutate(e){e.setAttribute(\"tabindex\",0);e.setAttribute(\"disabled\",\"disabled\")}};var F={element:\"a\",mutate:function mutate(e){e.href=\"#void\";e.innerHTML='
';return e.querySelector(\"img\")}};var L={element:\"div\",mutate:function mutate(e){e.innerHTML=''+'
';return e.querySelector(\"img\")}};var B={element:function element(e,n){var t=n.createElement(\"iframe\");e.appendChild(t);var r=t.contentWindow.document;r.open();r.close();return t},mutate:function mutate(e){e.style.visibility=\"hidden\";var n=e.contentWindow.document;var t=n.createElement(\"input\");n.body.appendChild(t);return t},validate:function validate(e){var n=e.contentWindow.document;var t=n.querySelector(\"input\");return n.activeElement===t}};var H=!s.is.WEBKIT;function focusInZeroDimensionObject(){return H}var W={element:\"div\",mutate:function mutate(e){e.setAttribute(\"tabindex\",\"invalid-value\")}};var q={element:\"label\",mutate:function mutate(e){e.setAttribute(\"tabindex\",\"-1\")},validate:function validate(e,n,t){var r=e.offsetHeight;e.focus();return t.activeElement===e}};var G=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtb\"+\"G5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBpZD0ic3ZnIj48dGV4dCB4PSIxMCIgeT0iMjAiIGlkPSJ\"+\"zdmctbGluay10ZXh0Ij50ZXh0PC90ZXh0Pjwvc3ZnPg==\";var U={element:\"object\",mutate:function mutate(e){e.setAttribute(\"type\",\"image/svg+xml\");e.setAttribute(\"data\",G);e.setAttribute(\"width\",\"200\");e.setAttribute(\"height\",\"50\");e.style.visibility=\"hidden\"}};var V={name:\"can-focus-object-svg\",element:\"object\",mutate:function mutate(e){e.setAttribute(\"type\",\"image/svg+xml\");e.setAttribute(\"data\",G);e.setAttribute(\"width\",\"200\");e.setAttribute(\"height\",\"50\")},validate:function validate(e,n,t){if(s.is.GECKO){return true}return t.activeElement===e}};var K=!s.is.IE9;function focusObjectSwf(){return K}var Z={element:\"div\",mutate:function mutate(e){e.innerHTML=''+'
';return e.querySelector(\"img\")},validate:function validate(e,n,t){var r=e.querySelector(\"area\");return t.activeElement===r}};var $={element:\"fieldset\",mutate:function mutate(e){e.innerHTML='';return false},validate:function validate(e,n,t){var r=e.querySelector('input[tabindex=\"-1\"]');var a=e.querySelector('input[tabindex=\"0\"]');e.focus();e.querySelector(\"legend\").focus();return t.activeElement===r&&\"focusable\"||t.activeElement===a&&\"tabbable\"||\"\"}};var X={element:\"div\",mutate:function mutate(e){e.setAttribute(\"style\",\"width: 100px; height: 50px; overflow: auto;\");e.innerHTML='scrollable content
';return e.querySelector(\"div\")}};var J={element:\"div\",mutate:function mutate(e){e.setAttribute(\"style\",\"width: 100px; height: 50px;\");e.innerHTML='scrollable content
'}};var Y={element:\"div\",mutate:function mutate(e){e.setAttribute(\"style\",\"width: 100px; height: 50px; overflow: auto;\");e.innerHTML='scrollable content
'}};var Q={element:\"details\",mutate:function mutate(e){e.innerHTML=\"foocontent
\";return e.firstElementChild}};function makeFocusableForeignObject(){var e=document.createElementNS(\"http://www.w3.org/2000/svg\",\"foreignObject\");e.width.baseVal.value=30;e.height.baseVal.value=30;e.appendChild(document.createElement(\"input\"));e.lastChild.type=\"text\";return e}function focusSvgForeignObjectHack(e){var n=e.ownerSVGElement||e.nodeName.toLowerCase()===\"svg\";if(!n){return false}var t=makeFocusableForeignObject();e.appendChild(t);var r=t.querySelector(\"input\");r.focus();r.disabled=true;e.removeChild(t);return true}function generate(e){return'\"}function focus(e){if(e.focus){return}try{HTMLElement.prototype.focus.call(e)}catch(n){focusSvgForeignObjectHack(e)}}function validate(e,n,t){focus(n);return t.activeElement===n}var ee={element:\"div\",mutate:function mutate(e){e.innerHTML=generate('a');return e.querySelector(\"text\")},validate:validate};var ne={element:\"div\",mutate:function mutate(e){e.innerHTML=generate('a');return e.querySelector(\"text\")},validate:validate};var te={element:\"div\",mutate:function mutate(e){e.innerHTML=generate('a');return e.querySelector(\"text\")},validate:validate};var re={element:\"div\",mutate:function mutate(e){e.innerHTML=generate(['link',''].join(\"\"));return e.querySelector(\"use\")},validate:validate};var ae={element:\"div\",mutate:function mutate(e){e.innerHTML=generate('');return e.querySelector(\"foreignObject\")||e.getElementsByTagName(\"foreignObject\")[0]},validate:validate};var ie=Boolean(s.is.GECKO&&typeof SVGElement!==\"undefined\"&&SVGElement.prototype.focus);function focusSvgInIframe(){return ie}var oe={element:\"div\",mutate:function mutate(e){e.innerHTML=generate(\"\");return e.firstChild},validate:validate};var le={element:\"div\",mutate:function mutate(e){e.setAttribute(\"tabindex\",\"3x\")}};var se={element:\"table\",mutate:function mutate(e,n,t){var r=t.createDocumentFragment();r.innerHTML=\"| cell |
\";e.appendChild(r)}};var ue={element:\"video\",mutate:function mutate(e){try{e.setAttribute(\"src\",j)}catch(e){}}};var ce=s.is.GECKO||s.is.TRIDENT||s.is.EDGE;function tabsequenceAreaAtImgPosition(){return ce}var fe={cssShadowPiercingDeepCombinator:cssShadowPiercingDeepCombinator,focusInZeroDimensionObject:focusInZeroDimensionObject,focusObjectSwf:focusObjectSwf,focusSvgInIframe:focusSvgInIframe,tabsequenceAreaAtImgPosition:tabsequenceAreaAtImgPosition};var de={focusAreaImgTabindex:k,focusAreaTabindex:T,focusAreaWithoutHref:C,focusAudioWithoutControls:M,focusBrokenImageMap:A,focusChildrenOfFocusableFlexbox:D,focusFieldsetDisabled:N,focusFieldset:z,focusFlexboxContainer:I,focusFormDisabled:R,focusImgIsmap:F,focusImgUsemapTabindex:L,focusInHiddenIframe:B,focusInvalidTabindex:W,focusLabelTabindex:q,focusObjectSvg:V,focusObjectSvgHidden:U,focusRedirectImgUsemap:Z,focusRedirectLegend:$,focusScrollBody:X,focusScrollContainerWithoutOverflow:J,focusScrollContainer:Y,focusSummary:Q,focusSvgFocusableAttribute:ee,focusSvgTabindexAttribute:ne,focusSvgNegativeTabindexAttribute:te,focusSvgUseTabindex:re,focusSvgForeignobjectTabindex:ae,focusSvg:oe,focusTabindexTrailingCharacters:le,focusTable:se,focusVideoWithoutControls:ue};function executeTests(){var e=detectFocus(de);Object.keys(fe).forEach((function(n){e[n]=fe[n]()}));return e}var pe=null;function _supports(){if(pe){return pe}pe=S.get();if(!pe.time){S.set(executeTests());pe=S.get()}return pe}var be=void 0;var ve=/^\\s*(-|\\+)?[0-9]+\\s*$/;var me=/^\\s*(-|\\+)?[0-9]+.*$/;function isValidTabindex(e){if(!be){be=_supports()}var n=be.focusTabindexTrailingCharacters?me:ve;var t=contextToElement({label:\"is/valid-tabindex\",resolveDocument:true,context:e});var r=t.hasAttribute(\"tabindex\");var a=t.hasAttribute(\"tabIndex\");if(!r&&!a){return false}var i=t.ownerSVGElement||t.nodeName.toLowerCase()===\"svg\";if(i&&!be.focusSvgTabindexAttribute){return false}if(be.focusInvalidTabindex){return true}var o=t.getAttribute(r?\"tabindex\":\"tabIndex\");if(o===\"-32768\"){return false}return Boolean(o&&n.test(o))}function tabindexValue(e){if(!isValidTabindex(e)){return null}var n=e.hasAttribute(\"tabindex\");var t=n?\"tabindex\":\"tabIndex\";var r=parseInt(e.getAttribute(t),10);return isNaN(r)?-1:r}function isUserModifyWritable(e){var n=e.webkitUserModify||\"\";return Boolean(n&&n.indexOf(\"write\")!==-1)}function hasCssOverflowScroll(e){return[e.getPropertyValue(\"overflow\"),e.getPropertyValue(\"overflow-x\"),e.getPropertyValue(\"overflow-y\")].some((function(e){return e===\"auto\"||e===\"scroll\"}))}function hasCssDisplayFlex(e){return e.display.indexOf(\"flex\")>-1}function isScrollableContainer(e,n,t,r){if(n!==\"div\"&&n!==\"span\"){return false}if(t&&t!==\"div\"&&t!==\"span\"&&!hasCssOverflowScroll(r)){return false}return e.offsetHeight0&&arguments[0]!==undefined?arguments[0]:{},n=e.context,t=e.except,r=t===undefined?{flexbox:false,scrollable:false,shadow:false}:t;if(!ge){ge=_supports()}var a=contextToElement({label:\"is/focus-relevant\",resolveDocument:true,context:n});if(!r.shadow&&a.shadowRoot){return true}var i=a.nodeName.toLowerCase();if(i===\"input\"&&a.type===\"hidden\"){return false}if(i===\"input\"||i===\"select\"||i===\"button\"||i===\"textarea\"){return true}if(i===\"legend\"&&ge.focusRedirectLegend){return true}if(i===\"label\"){return true}if(i===\"area\"){return true}if(i===\"a\"&&a.hasAttribute(\"href\")){return true}if(i===\"object\"&&a.hasAttribute(\"usemap\")){return false}if(i===\"object\"){var o=a.getAttribute(\"type\");if(!ge.focusObjectSvg&&o===\"image/svg+xml\"){return false}else if(!ge.focusObjectSwf&&o===\"application/x-shockwave-flash\"){return false}}if(i===\"iframe\"||i===\"object\"){return true}if(i===\"embed\"||i===\"keygen\"){return true}if(a.hasAttribute(\"contenteditable\")){return true}if(i===\"audio\"&&(ge.focusAudioWithoutControls||a.hasAttribute(\"controls\"))){return true}if(i===\"video\"&&(ge.focusVideoWithoutControls||a.hasAttribute(\"controls\"))){return true}if(ge.focusSummary&&i===\"summary\"){return true}var l=isValidTabindex(a);if(i===\"img\"&&a.hasAttribute(\"usemap\")){return l&&ge.focusImgUsemapTabindex||ge.focusRedirectImgUsemap}if(ge.focusTable&&(i===\"table\"||i===\"td\")){return true}if(ge.focusFieldset&&i===\"fieldset\"){return true}var s=i===\"svg\";var u=a.ownerSVGElement;var c=a.getAttribute(\"focusable\");var f=tabindexValue(a);if(i===\"use\"&&f!==null&&!ge.focusSvgUseTabindex){return false}if(i===\"foreignobject\"){return f!==null&&ge.focusSvgForeignobjectTabindex}if(elementMatches(a,\"svg a\")&&a.hasAttribute(\"xlink:href\")){return true}if((s||u)&&a.focus&&!ge.focusSvgNegativeTabindexAttribute&&f<0){return false}if(s){return l||ge.focusSvg||ge.focusSvgInIframe||Boolean(ge.focusSvgFocusableAttribute&&c&&c===\"true\")}if(u){if(ge.focusSvgTabindexAttribute&&l){return true}if(ge.focusSvgFocusableAttribute){return c===\"true\"}}if(l){return true}var d=window.getComputedStyle(a,null);if(isUserModifyWritable(d)){return true}if(ge.focusImgIsmap&&i===\"img\"&&a.hasAttribute(\"ismap\")){var p=getParents({context:a}).some((function(e){return e.nodeName.toLowerCase()===\"a\"&&e.hasAttribute(\"href\")}));if(p){return true}}if(!r.scrollable&&ge.focusScrollContainer){if(ge.focusScrollContainerWithoutOverflow){if(isScrollableContainer(a,i)){return true}}else if(hasCssOverflowScroll(d)){return true}}if(!r.flexbox&&ge.focusFlexboxContainer&&hasCssDisplayFlex(d)){return true}var b=a.parentElement;if(!r.scrollable&&b){var v=b.nodeName.toLowerCase();var m=window.getComputedStyle(b,null);if(ge.focusScrollBody&&isScrollableContainer(b,i,v,m)){return true}if(ge.focusChildrenOfFocusableFlexbox){if(hasCssDisplayFlex(m)){return true}}}return false}isFocusRelevantRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var n=function isFocusRelevant(n){return isFocusRelevantRules({context:n,except:e})};n.rules=isFocusRelevantRules;return n};var he=isFocusRelevantRules.except({});function findIndex(e,n){if(e.findIndex){return e.findIndex(n)}var t=e.length;if(t===0){return-1}for(var r=0;r0&&arguments[0]!==undefined?arguments[0]:{},n=e.context,t=e.except,r=t===undefined?{notRendered:false,cssDisplay:false,cssVisibility:false,detailsElement:false,browsingContext:false}:t;var a=contextToElement({label:\"is/visible\",resolveDocument:true,context:n});var i=a.nodeName.toLowerCase();if(!r.notRendered&&we.test(i)){return true}var o=getParents({context:a});var l=i===\"audio\"&&!a.hasAttribute(\"controls\");if(!r.cssDisplay&¬Displayed(l?o.slice(1):o)){return false}if(!r.cssVisibility&¬Visible(o)){return false}if(!r.detailsElement&&collapsedParent(o)){return false}if(!r.browsingContext){var s=getFrameElement(a);var u=isVisibleRules.except(r);if(s&&!u(s)){return false}}return true}isVisibleRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var n=function isVisible(n){return isVisibleRules({context:n,except:e})};n.rules=isVisibleRules;return n};var _e=isVisibleRules.except({});function getMapByName(e,n){var t=n.querySelector('map[name=\"'+(0,i[\"default\"])(e)+'\"]');return t||null}function getImageOfArea(e){var n=e.parentElement;if(!n.name||n.nodeName.toLowerCase()!==\"map\"){return null}var t=getDocument(e);return t.querySelector('img[usemap=\"#'+(0,i[\"default\"])(n.name)+'\"]')||null}var Ee=void 0;function isValidArea(e){if(!Ee){Ee=_supports()}var n=contextToElement({label:\"is/valid-area\",context:e});var t=n.nodeName.toLowerCase();if(t!==\"area\"){return false}var r=n.hasAttribute(\"tabindex\");if(!Ee.focusAreaTabindex&&r){return false}var a=getImageOfArea(n);if(!a||!_e(a)){return false}if(!Ee.focusBrokenImageMap&&(!a.complete||!a.naturalHeight||a.offsetWidth<=0||a.offsetHeight<=0)){return false}if(!Ee.focusAreaWithoutHref&&!n.href){return Ee.focusAreaTabindex&&r||Ee.focusAreaImgTabindex&&a.hasAttribute(\"tabindex\")}var i=getParents({context:a}).slice(1).some((function(e){var n=e.nodeName.toLowerCase();return n===\"button\"||n===\"a\"}));if(i){return false}return true}var Oe=void 0;var Se=void 0;var je={input:true,select:true,textarea:true,button:true,fieldset:true,form:true};function isNativeDisabledSupported(e){if(!Oe){Oe=_supports();if(Oe.focusFieldsetDisabled){delete je.fieldset}if(Oe.focusFormDisabled){delete je.form}Se=new RegExp(\"^(\"+Object.keys(je).join(\"|\")+\")$\")}var n=contextToElement({label:\"is/native-disabled-supported\",context:e});var t=n.nodeName.toLowerCase();return Boolean(Se.test(t))}var ke=void 0;function isDisabledFieldset(e){var n=e.nodeName.toLowerCase();return n===\"fieldset\"&&e.disabled}function isDisabledForm(e){var n=e.nodeName.toLowerCase();return n===\"form\"&&e.disabled}function isDisabled(e){if(!ke){ke=_supports()}var n=contextToElement({label:\"is/disabled\",context:e});if(n.hasAttribute(\"data-ally-disabled\")){return true}if(!isNativeDisabledSupported(n)){return false}if(n.disabled){return true}var t=getParents({context:n});if(t.some(isDisabledFieldset)){return true}if(!ke.focusFormDisabled&&t.some(isDisabledForm)){return true}return false}function isOnlyTabbableRules(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},n=e.context,t=e.except,r=t===undefined?{onlyFocusableBrowsingContext:false,visible:false}:t;var a=contextToElement({label:\"is/only-tabbable\",resolveDocument:true,context:n});if(!r.visible&&!_e(a)){return false}if(!r.onlyFocusableBrowsingContext&&(s.is.GECKO||s.is.TRIDENT||s.is.EDGE)){var i=getFrameElement(a);if(i){if(tabindexValue(i)<0){return false}}}var o=a.nodeName.toLowerCase();var l=tabindexValue(a);if(o===\"label\"&&s.is.GECKO){return l!==null&&l>=0}if(s.is.GECKO&&a.ownerSVGElement&&!a.focus){if(o===\"a\"&&a.hasAttribute(\"xlink:href\")){if(s.is.GECKO){return true}}}return false}isOnlyTabbableRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var n=function isOnlyTabbable(n){return isOnlyTabbableRules({context:n,except:e})};n.rules=isOnlyTabbableRules;return n};var Te=isOnlyTabbableRules.except({});var Ce=void 0;function isOnlyFocusRelevant(e){var n=e.nodeName.toLowerCase();if(n===\"embed\"||n===\"keygen\"){return true}var t=tabindexValue(e);if(e.shadowRoot&&t===null){return true}if(n===\"label\"){return!Ce.focusLabelTabindex||t===null}if(n===\"legend\"){return t===null}if(Ce.focusSvgFocusableAttribute&&(e.ownerSVGElement||n===\"svg\")){var r=e.getAttribute(\"focusable\");return r&&r===\"false\"}if(n===\"img\"&&e.hasAttribute(\"usemap\")){return t===null||!Ce.focusImgUsemapTabindex}if(n===\"area\"){return!isValidArea(e)}return false}function isFocusableRules(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},n=e.context,t=e.except,r=t===undefined?{disabled:false,visible:false,onlyTabbable:false}:t;if(!Ce){Ce=_supports()}var a=Te.rules.except({onlyFocusableBrowsingContext:true,visible:r.visible});var i=contextToElement({label:\"is/focusable\",resolveDocument:true,context:n});var o=he.rules({context:i,except:r});if(!o||isOnlyFocusRelevant(i)){return false}if(!r.disabled&&isDisabled(i)){return false}if(!r.onlyTabbable&&a(i)){return false}if(!r.visible){var l={context:i,except:{}};if(Ce.focusInHiddenIframe){l.except.browsingContext=true}if(Ce.focusObjectSvgHidden){var s=i.nodeName.toLowerCase();if(s===\"object\"){l.except.cssVisibility=true}}if(!_e.rules(l)){return false}}var u=getFrameElement(i);if(u){var c=u.nodeName.toLowerCase();if(c===\"object\"&&!Ce.focusInZeroDimensionObject){if(!u.offsetWidth||!u.offsetHeight){return false}}}var f=i.nodeName.toLowerCase();if(f===\"svg\"&&Ce.focusSvgInIframe&&!u&&i.getAttribute(\"tabindex\")===null){return false}return true}isFocusableRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var n=function isFocusable(n){return isFocusableRules({context:n,except:e})};n.rules=isFocusableRules;return n};var Me=isFocusableRules.except({});function createFilter(e){var n=function filter(n){if(n.shadowRoot){return NodeFilter.FILTER_ACCEPT}if(e(n)){return NodeFilter.FILTER_ACCEPT}return NodeFilter.FILTER_SKIP};n.acceptNode=n;return n}var Pe=createFilter(he);function queryFocusableStrict(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},n=e.context,t=e.includeContext,r=e.includeOnlyTabbable,a=e.strategy;if(!n){n=document.documentElement}var i=Me.rules.except({onlyTabbable:r});var o=getDocument(n);var l=o.createTreeWalker(n,NodeFilter.SHOW_ELEMENT,a===\"all\"?Pe:createFilter(i),false);var s=[];while(l.nextNode()){if(l.currentNode.shadowRoot){if(i(l.currentNode)){s.push(l.currentNode)}s=s.concat(queryFocusableStrict({context:l.currentNode.shadowRoot,includeOnlyTabbable:r,strategy:a}))}else{s.push(l.currentNode)}}if(t){if(a===\"all\"){if(he(n)){s.unshift(n)}}else if(i(n)){s.unshift(n)}}return s}var Ae=void 0;var De=void 0;function selector$2(){if(!Ae){Ae=_supports()}if(typeof De===\"string\"){return De}De=\"\"+(Ae.focusTable?\"table, td,\":\"\")+(Ae.focusFieldset?\"fieldset,\":\"\")+\"svg a,\"+\"a[href],\"+\"area[href],\"+\"input, select, textarea, button,\"+\"iframe, object, embed,\"+\"keygen,\"+(Ae.focusAudioWithoutControls?\"audio,\":\"audio[controls],\")+(Ae.focusVideoWithoutControls?\"video,\":\"video[controls],\")+(Ae.focusSummary?\"summary,\":\"\")+\"[tabindex],\"+\"[contenteditable]\";De=selectInShadows(De);return De}function queryFocusableQuick(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},n=e.context,t=e.includeContext,r=e.includeOnlyTabbable;var a=selector$2();var i=n.querySelectorAll(a);var o=Me.rules.except({onlyTabbable:r});var l=[].filter.call(i,o);if(t&&o(n)){l.unshift(n)}return l}function queryFocusable(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},n=e.context,t=e.includeContext,r=e.includeOnlyTabbable,a=e.strategy,i=a===undefined?\"quick\":a;var o=contextToElement({label:\"query/focusable\",resolveDocument:true,defaultToDocument:true,context:n});var l={context:o,includeContext:t,includeOnlyTabbable:r,strategy:i};if(i===\"quick\"){return queryFocusableQuick(l)}else if(i===\"strict\"||i===\"all\"){return queryFocusableStrict(l)}throw new TypeError('query/focusable requires option.strategy to be one of [\"quick\", \"strict\", \"all\"]')}var Ne=void 0;var ze=/^(fieldset|table|td|body)$/;function isTabbableRules(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},n=e.context,t=e.except,r=t===undefined?{flexbox:false,scrollable:false,shadow:false,visible:false,onlyTabbable:false}:t;if(!Ne){Ne=_supports()}var a=contextToElement({label:\"is/tabbable\",resolveDocument:true,context:n});if(s.is.BLINK&&s.is.ANDROID&&s.majorVersion>42){return false}var i=getFrameElement(a);if(i){if(s.is.WEBKIT&&s.is.IOS){return false}if(tabindexValue(i)<0){return false}if(!r.visible&&(s.is.BLINK||s.is.WEBKIT)&&!_e(i)){return false}var o=i.nodeName.toLowerCase();if(o===\"object\"){var l=s.name===\"Chrome\"&&s.majorVersion>=54||s.name===\"Opera\"&&s.majorVersion>=41;if(s.is.WEBKIT||s.is.BLINK&&!l){return false}}}var u=a.nodeName.toLowerCase();var c=tabindexValue(a);var f=c===null?null:c>=0;if(s.is.EDGE&&s.majorVersion>=14&&i&&a.ownerSVGElement&&c<0){return true}var d=f!==false;var p=c!==null&&c>=0;if(a.hasAttribute(\"contenteditable\")){return d}if(ze.test(u)&&f!==true){return false}if(s.is.WEBKIT&&s.is.IOS){var b=u===\"input\"&&a.type===\"text\"||a.type===\"password\"||u===\"select\"||u===\"textarea\"||a.hasAttribute(\"contenteditable\");if(!b){var v=window.getComputedStyle(a,null);b=isUserModifyWritable(v)}if(!b){return false}}if(u===\"use\"&&c!==null){if(s.is.BLINK||s.is.WEBKIT&&s.majorVersion===9){return true}}if(elementMatches(a,\"svg a\")&&a.hasAttribute(\"xlink:href\")){if(d){return true}if(a.focus&&!Ne.focusSvgNegativeTabindexAttribute){return true}}if(u===\"svg\"&&Ne.focusSvgInIframe&&d){return true}if(s.is.TRIDENT||s.is.EDGE){if(u===\"svg\"){if(Ne.focusSvg){return true}return a.hasAttribute(\"focusable\")||p}if(a.ownerSVGElement){if(Ne.focusSvgTabindexAttribute&&p){return true}return a.hasAttribute(\"focusable\")}}if(a.tabIndex===undefined){return Boolean(r.onlyTabbable)}if(u===\"audio\"){if(!a.hasAttribute(\"controls\")){return false}else if(s.is.BLINK){return true}}if(u===\"video\"){if(!a.hasAttribute(\"controls\")){if(s.is.TRIDENT||s.is.EDGE){return false}}else if(s.is.BLINK||s.is.GECKO){return true}}if(u===\"object\"){if(s.is.BLINK||s.is.WEBKIT){return false}}if(u===\"iframe\"){return false}if(!r.scrollable&&s.is.GECKO){var m=window.getComputedStyle(a,null);if(hasCssOverflowScroll(m)){return d}}if(s.is.TRIDENT||s.is.EDGE){if(u===\"area\"){var g=getImageOfArea(a);if(g&&tabindexValue(g)<0){return false}}var h=window.getComputedStyle(a,null);if(isUserModifyWritable(h)){return a.tabIndex>=0}if(!r.flexbox&&hasCssDisplayFlex(h)){if(c!==null){return p}return Ie(a)&&Re(a)}if(isScrollableContainer(a,u)){return false}var y=a.parentElement;if(y){var x=y.nodeName.toLowerCase();var w=window.getComputedStyle(y,null);if(isScrollableContainer(y,u,x,w)){return false}if(hasCssDisplayFlex(w)){return p}}}return a.tabIndex>=0}isTabbableRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var n=function isTabbable(n){return isTabbableRules({context:n,except:e})};n.rules=isTabbableRules;return n};var Ie=he.rules.except({flexbox:true});var Re=isTabbableRules.except({flexbox:true});var Fe=isTabbableRules.except({});function queryTabbable(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},n=e.context,t=e.includeContext,r=e.includeOnlyTabbable,a=e.strategy;var i=Fe.rules.except({onlyTabbable:r});return queryFocusable({context:n,includeContext:t,includeOnlyTabbable:r,strategy:a}).filter(i)}function compareDomPosition(e,n){return e.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING?-1:1}function sortDomOrder(e){return e.sort(compareDomPosition)}function getFirstSuccessorOffset(e,n){return findIndex(e,(function(e){return n.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING}))}function findInsertionOffsets(e,n,t){var r=[];n.forEach((function(n){var a=true;var i=e.indexOf(n);if(i===-1){i=getFirstSuccessorOffset(e,n);a=false}if(i===-1){i=e.length}var o=nodeArray(t?t(n):n);if(!o.length){return}r.push({offset:i,replace:a,elements:o})}));return r}function insertElementsAtOffsets(e,n){var t=0;n.sort((function(e,n){return e.offset-n.offset}));n.forEach((function(n){var r=n.replace?1:0;var a=[n.offset+t,r].concat(n.elements);e.splice.apply(e,a);t+=n.elements.length-r}))}function mergeInDomOrder(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},n=e.list,t=e.elements,r=e.resolveElement;var a=n.slice(0);var i=nodeArray(t).slice(0);sortDomOrder(i);var o=findInsertionOffsets(a,i,r);insertElementsAtOffsets(a,o);return a}var Le=function(){function defineProperties(e,n){for(var t=0;t-1){return[e].concat(n)}return n}},{key:\"_cleanup\",value:function _cleanup(){Object.keys(this.hosts).forEach((function(e){delete this.hosts[e]._sortingId}),this)}}]);return Shadows}();function sortShadowed(e,n,t){var r=new We(n,t);var a=r.extractElements(e);if(a.length===e.length){return t(e)}return r.sort(a)}function sortTabindex(e){var n={};var t=[];var r=e.filter((function(e){var r=e.tabIndex;if(r===undefined){r=tabindexValue(e)}if(r<=0||r===null||r===undefined){return true}if(!n[r]){n[r]=[];t.push(r)}n[r].push(e);return false}));var a=t.sort().map((function(e){return n[e]})).reduceRight((function(e,n){return n.concat(e)}),r);return a}var qe=void 0;function moveContextToBeginning(e,n){var t=e.indexOf(n);if(t>0){var r=e.splice(t,1);return r.concat(e)}return e}function sortElements(e,n){if(qe.tabsequenceAreaAtImgPosition){e=sortArea(e,n)}e=sortTabindex(e);return e}function queryTabsequence(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},n=e.context,t=e.includeContext,r=e.includeOnlyTabbable,a=e.strategy;if(!qe){qe=_supports()}var i=nodeArray(n)[0]||document.documentElement;var o=queryTabbable({context:i,includeContext:t,includeOnlyTabbable:r,strategy:a});if(document.body.createShadowRoot&&s.is.BLINK){o=sortShadowed(o,i,sortElements)}else{o=sortElements(o,i)}if(t){o=moveContextToBeginning(o,i)}return o}var Ge={tab:9,left:37,up:38,right:39,down:40,pageUp:33,\"page-up\":33,pageDown:34,\"page-down\":34,end:35,home:36,enter:13,escape:27,space:32,shift:16,capsLock:20,\"caps-lock\":20,ctrl:17,alt:18,meta:91,pause:19,insert:45,delete:46,backspace:8,_alias:{91:[92,93,224]}};for(var Ue=1;Ue<26;Ue++){Ge[\"f\"+Ue]=Ue+111}for(var Ve=0;Ve<10;Ve++){var Ke=Ve+48;var Ze=Ve+96;Ge[Ve]=Ke;Ge[\"num-\"+Ve]=Ze;Ge._alias[Ke]=[Ze]}for(var $e=0;$e<26;$e++){var Xe=$e+65;var Je=String.fromCharCode(Xe).toLowerCase();Ge[Je]=Xe}var Ye={alt:\"altKey\",ctrl:\"ctrlKey\",meta:\"metaKey\",shift:\"shiftKey\"};var Qe=Object.keys(Ye).map((function(e){return Ye[e]}));function createExpectedModifiers(e){var n=e?null:false;return{altKey:n,ctrlKey:n,metaKey:n,shiftKey:n}}function resolveModifiers(e){var n=e.indexOf(\"*\")!==-1;var t=createExpectedModifiers(n);e.forEach((function(e){if(e===\"*\"){return}var n=true;var r=e.slice(0,1);if(r===\"?\"){n=null}else if(r===\"!\"){n=false}if(n!==true){e=e.slice(1)}var a=Ye[e];if(!a){throw new TypeError('Unknown modifier \"'+e+'\"')}t[a]=n}));return t}function resolveKey(e){var n=Ge[e]||parseInt(e,10);if(!n||typeof n!==\"number\"||isNaN(n)){throw new TypeError('Unknown key \"'+e+'\"')}return[n].concat(Ge._alias[n]||[])}function matchModifiers(e,n){return!Qe.some((function(t){return typeof e[t]===\"boolean\"&&Boolean(n[t])!==e[t]}))}function keyBinding(e){return e.split(/\\s+/).map((function(e){var n=e.split(\"+\");var t=resolveModifiers(n.slice(0,-1));var r=resolveKey(n.slice(-1));return{keyCodes:r,modifiers:t,matchModifiers:matchModifiers.bind(null,t)}}))}function getParentComparator(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},n=e.parent,t=e.element,r=e.includeSelf;if(n){return function isChildOf(e){return Boolean(r&&e===n||n.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_CONTAINED_BY)}}else if(t){return function isParentOf(e){return Boolean(r&&t===e||e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_CONTAINED_BY)}}throw new TypeError(\"util/compare-position#getParentComparator required either options.parent or options.element\")}function whenKey(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var n={};var t=nodeArray(e.context)[0]||document.documentElement;delete e.context;var r=nodeArray(e.filter);delete e.filter;var a=Object.keys(e);if(!a.length){throw new TypeError(\"when/key requires at least one option key\")}var i=function registerBinding(e){e.keyCodes.forEach((function(t){if(!n[t]){n[t]=[]}n[t].push(e)}))};a.forEach((function(n){if(typeof e[n]!==\"function\"){throw new TypeError('when/key requires option[\"'+n+'\"] to be a function')}var t=function addCallback(t){t.callback=e[n];return t};keyBinding(n).map(t).forEach(i)}));var o=function handleKeyDown(e){if(e.defaultPrevented){return}if(r.length){var a=getParentComparator({element:e.target,includeSelf:true});if(r.some(a)){return}}var i=e.keyCode||e.which;if(!n[i]){return}n[i].forEach((function(n){if(!n.matchModifiers(e)){return}n.callback.call(t,e,l)}))};t.addEventListener(\"keydown\",o,false);var l=function disengage(){t.removeEventListener(\"keydown\",o,false)};return{disengage:l}}function default_1(e){var n=e===void 0?{}:e,t=n.context;if(!t){t=document.documentElement}queryTabsequence();return whenKey({\"?alt+?shift+tab\":function altShiftTab(e){e.preventDefault();var n=queryTabsequence({context:t});var r=e.shiftKey;var a=n[0];var i=n[n.length-1];var o=r?a:i;var l=r?i:a;if(isActiveElement(o)){l.focus();return}var s=void 0;var u=n.some((function(e,n){if(!isActiveElement(e)){return false}s=n;return true}));if(!u){a.focus();return}var c=r?-1:1;n[s+c].focus()}})}n[\"default\"]=default_1},541:function(e,n,t){\"use strict\";var r=this&&this.__makeTemplateObject||function(e,n){if(Object.defineProperty){Object.defineProperty(e,\"raw\",{value:n})}else{e.raw=n}return e};n.__esModule=true;n.styles=void 0;var a=t(464);var i=(0,a.noop)(o||(o=r([\"\\n [data-nextjs-dialog-overlay] {\\n position: fixed;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n overflow: auto;\\n z-index: 9000;\\n\\n display: flex;\\n align-content: center;\\n align-items: center;\\n flex-direction: column;\\n padding: 10vh 15px 0;\\n }\\n\\n @media (max-height: 812px) {\\n [data-nextjs-dialog-overlay] {\\n padding: 15px 15px 0;\\n }\\n }\\n\\n [data-nextjs-dialog-backdrop] {\\n position: fixed;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background-color: rgba(17, 17, 17, 0.2);\\n pointer-events: all;\\n z-index: -1;\\n }\\n\\n [data-nextjs-dialog-backdrop-fixed] {\\n cursor: not-allowed;\\n -webkit-backdrop-filter: blur(8px);\\n backdrop-filter: blur(8px);\\n }\\n\"],[\"\\n [data-nextjs-dialog-overlay] {\\n position: fixed;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n overflow: auto;\\n z-index: 9000;\\n\\n display: flex;\\n align-content: center;\\n align-items: center;\\n flex-direction: column;\\n padding: 10vh 15px 0;\\n }\\n\\n @media (max-height: 812px) {\\n [data-nextjs-dialog-overlay] {\\n padding: 15px 15px 0;\\n }\\n }\\n\\n [data-nextjs-dialog-backdrop] {\\n position: fixed;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background-color: rgba(17, 17, 17, 0.2);\\n pointer-events: all;\\n z-index: -1;\\n }\\n\\n [data-nextjs-dialog-backdrop-fixed] {\\n cursor: not-allowed;\\n -webkit-backdrop-filter: blur(8px);\\n backdrop-filter: blur(8px);\\n }\\n\"])));n.styles=i;var o},77:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});var a=this&&this.__setModuleDefault||(Object.create?function(e,n){Object.defineProperty(e,\"default\",{enumerable:true,value:n})}:function(e,n){e[\"default\"]=n});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t in e)if(t!==\"default\"&&Object.prototype.hasOwnProperty.call(e,t))r(n,e,t);a(n,e);return n};var o=this&&this.__read||function(e,n){var t=typeof Symbol===\"function\"&&e[Symbol.iterator];if(!t)return e;var r=t.call(e),a,i=[],o;try{while((n===void 0||n-- >0)&&!(a=r.next()).done)i.push(a.value)}catch(e){o={error:e}}finally{try{if(a&&!a.done&&(t=r[\"return\"]))t.call(r)}finally{if(o)throw o.error}}return i};n.__esModule=true;n.ShadowPortal=void 0;var l=i(t(522));var s=t(255);var u=function Portal(e){var n=e.children,t=e.globalOverlay;var r=l.useRef(null);var a=l.useRef(null);var i=l.useRef(null);var u=o(l.useState(),2),c=u[1];l.useLayoutEffect((function(){var e=t?document:r.current.ownerDocument;a.current=e.createElement(\"nextjs-portal\");i.current=a.current.attachShadow({mode:\"open\"});e.body.appendChild(a.current);c({});return function(){if(a.current&&a.current.ownerDocument){a.current.ownerDocument.body.removeChild(a.current)}}}),[t]);return i.current?(0,s.createPortal)(n,i.current):t?null:l.createElement(\"span\",{ref:r})};n.ShadowPortal=u},506:function(e,n,t){\"use strict\";var r=this&&this.__assign||function(){r=Object.assign||function(e){for(var n,t=1,r=arguments.length;t * {\\n margin: 0;\\n padding: calc(var(--size-gap) + var(--size-gap-half))\\n calc(var(--size-gap-double) + var(--size-gap-half));\\n }\\n\\n [data-nextjs-terminal] pre {\\n white-space: pre-wrap;\\n word-break: break-word;\\n }\\n\"],[\"\\n [data-nextjs-terminal] {\\n border-radius: var(--size-gap-half);\\n background-color: var(--color-ansi-bg);\\n color: var(--color-ansi-fg);\\n }\\n [data-nextjs-terminal]::selection,\\n [data-nextjs-terminal] *::selection {\\n background-color: var(--color-ansi-selection);\\n }\\n [data-nextjs-terminal] * {\\n color: inherit;\\n background-color: transparent;\\n font-family: var(--font-stack-monospace);\\n }\\n [data-nextjs-terminal] > * {\\n margin: 0;\\n padding: calc(var(--size-gap) + var(--size-gap-half))\\n calc(var(--size-gap-double) + var(--size-gap-half));\\n }\\n\\n [data-nextjs-terminal] pre {\\n white-space: pre-wrap;\\n word-break: break-word;\\n }\\n\"])));n.styles=i;var o},172:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});var a=this&&this.__setModuleDefault||(Object.create?function(e,n){Object.defineProperty(e,\"default\",{enumerable:true,value:n})}:function(e,n){e[\"default\"]=n});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t in e)if(t!==\"default\"&&Object.prototype.hasOwnProperty.call(e,t))r(n,e,t);a(n,e);return n};n.__esModule=true;n.Toast=void 0;var o=i(t(522));var l=function Toast(e){var n=e.onClick,t=e.children,r=e.className;return o.createElement(\"div\",{\"data-nextjs-toast\":true,onClick:n,className:r},o.createElement(\"div\",{\"data-nextjs-toast-wrapper\":true},t))};n.Toast=l},777:function(e,n,t){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});n.__esModule=true;n.Toast=n.styles=void 0;var a=t(48);r(n,a,\"styles\");var i=t(172);r(n,i,\"Toast\")},48:function(e,n,t){\"use strict\";var r=this&&this.__makeTemplateObject||function(e,n){if(Object.defineProperty){Object.defineProperty(e,\"raw\",{value:n})}else{e.raw=n}return e};n.__esModule=true;n.styles=void 0;var a=t(464);var i=(0,a.noop)(o||(o=r([\"\\n [data-nextjs-toast] {\\n position: fixed;\\n bottom: var(--size-gap-double);\\n left: var(--size-gap-double);\\n max-width: 420px;\\n z-index: 9000;\\n }\\n\\n @media (max-width: 440px) {\\n [data-nextjs-toast] {\\n max-width: 90vw;\\n left: 5vw;\\n }\\n }\\n\\n [data-nextjs-toast-wrapper] {\\n padding: 16px;\\n border-radius: var(--size-gap-half);\\n font-weight: 500;\\n color: var(--color-ansi-bright-white);\\n background-color: var(--color-ansi-red);\\n box-shadow: 0px var(--size-gap-double) var(--size-gap-quad)\\n rgba(0, 0, 0, 0.25);\\n }\\n\"],[\"\\n [data-nextjs-toast] {\\n position: fixed;\\n bottom: var(--size-gap-double);\\n left: var(--size-gap-double);\\n max-width: 420px;\\n z-index: 9000;\\n }\\n\\n @media (max-width: 440px) {\\n [data-nextjs-toast] {\\n max-width: 90vw;\\n left: 5vw;\\n }\\n }\\n\\n [data-nextjs-toast-wrapper] {\\n padding: 16px;\\n border-radius: var(--size-gap-half);\\n font-weight: 500;\\n color: var(--color-ansi-bright-white);\\n background-color: var(--color-ansi-red);\\n box-shadow: 0px var(--size-gap-double) var(--size-gap-quad)\\n rgba(0, 0, 0, 0.25);\\n }\\n\"])));n.styles=i;var o},561:function(e,n,t){\"use strict\";var r=this&&this.__makeTemplateObject||function(e,n){if(Object.defineProperty){Object.defineProperty(e,\"raw\",{value:n})}else{e.raw=n}return e};var a=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});var i=this&&this.__setModuleDefault||(Object.create?function(e,n){Object.defineProperty(e,\"default\",{enumerable:true,value:n})}:function(e,n){e[\"default\"]=n});var o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t in e)if(t!==\"default\"&&Object.prototype.hasOwnProperty.call(e,t))a(n,e,t);i(n,e);return n};n.__esModule=true;n.styles=n.BuildError=void 0;var l=o(t(522));var s=t(931);var u=t(881);var c=t(966);var f=t(464);var d=function BuildError(e){var n=e.message;var t=l.useCallback((function(){}),[]);return l.createElement(u.Overlay,{fixed:true},l.createElement(s.Dialog,{type:\"error\",\"aria-labelledby\":\"nextjs__container_build_error_label\",\"aria-describedby\":\"nextjs__container_build_error_desc\",onClose:t},l.createElement(s.DialogContent,null,l.createElement(s.DialogHeader,{className:\"nextjs-container-build-error-header\"},l.createElement(\"h4\",{id:\"nextjs__container_build_error_label\"},\"Failed to compile\")),l.createElement(s.DialogBody,{className:\"nextjs-container-build-error-body\"},l.createElement(c.Terminal,{content:n}),l.createElement(\"footer\",null,l.createElement(\"p\",{id:\"nextjs__container_build_error_desc\"},l.createElement(\"small\",null,\"This error occurred during the build process and can only be dismissed by fixing the error.\")))))))};n.BuildError=d;n.styles=(0,f.noop)(p||(p=r([\"\\n .nextjs-container-build-error-header > h4 {\\n line-height: 1.5;\\n margin: 0;\\n padding: 0;\\n }\\n\\n .nextjs-container-build-error-body footer {\\n margin-top: var(--size-gap);\\n }\\n .nextjs-container-build-error-body footer p {\\n margin: 0;\\n }\\n\\n .nextjs-container-build-error-body small {\\n color: #757575;\\n }\\n\"],[\"\\n .nextjs-container-build-error-header > h4 {\\n line-height: 1.5;\\n margin: 0;\\n padding: 0;\\n }\\n\\n .nextjs-container-build-error-body footer {\\n margin-top: var(--size-gap);\\n }\\n .nextjs-container-build-error-body footer p {\\n margin: 0;\\n }\\n\\n .nextjs-container-build-error-body small {\\n color: #757575;\\n }\\n\"])));var p},546:function(e,n,t){\"use strict\";var r=this&&this.__makeTemplateObject||function(e,n){if(Object.defineProperty){Object.defineProperty(e,\"raw\",{value:n})}else{e.raw=n}return e};var a=this&&this.__assign||function(){a=Object.assign||function(e){for(var n,t=1,r=arguments.length;t0)&&!(a=r.next()).done)i.push(a.value)}catch(e){o={error:e}}finally{try{if(a&&!a.done&&(t=r[\"return\"]))t.call(r)}finally{if(o)throw o.error}}return i};n.__esModule=true;n.styles=n.Errors=void 0;var u=l(t(522));var c=t(857);var f=t(931);var d=t(16);var p=t(881);var b=t(777);var v=t(88);var m=t(566);var g=t(464);var h=t(514);var y=t(972);function getErrorSignature(e){var n=e.event;switch(n.type){case c.TYPE_UNHANDLED_ERROR:case c.TYPE_UNHANDLED_REJECTION:{return\"\".concat(n.reason.name,\"::\").concat(n.reason.message,\"::\").concat(n.reason.stack)}default:{}}var t=n;return\"\"}var x=function HotlinkedText(e){var n=e.text;var t=/https?:\\/\\/[^\\s/$.?#].[^\\s\"]*/i;return u.createElement(u.Fragment,null,t.test(n)?n.split(\" \").map((function(e,n,r){if(t.test(e)){return u.createElement(u.Fragment,{key:\"link-\".concat(n)},u.createElement(\"a\",{href:e},e),n===r.length-1?\"\":\" \")}return n===r.length-1?u.createElement(u.Fragment,{key:\"text-\".concat(n)},e):u.createElement(u.Fragment,{key:\"text-\".concat(n)},e,\" \")})):n)};var w=function Errors(e){var n=e.errors;var t=s(u.useState({}),2),r=t[0],i=t[1];var o=s(u.useMemo((function(){var e=[];var t=null;for(var a=0;a0){var l=n[a-1];if(getErrorSignature(l)===getErrorSignature(i)){continue}}t=i;break}return[e,t]}),[n,r]),2),l=o[0],c=o[1];var g=u.useMemo((function(){return l.length<1&&Boolean(n.length)}),[n.length,l.length]);u.useEffect((function(){if(c==null){return}var e=true;(0,v.getErrorByType)(c).then((function(n){if(e){i((function(e){var t;return a(a({},e),(t={},t[n.id]=n,t))}))}}),(function(){}));return function(){e=false}}),[c]);var w=s(u.useState(\"fullscreen\"),2),_=w[0],E=w[1];var O=s(u.useState(0),2),S=O[0],j=O[1];var k=u.useCallback((function(e){e===null||e===void 0?void 0:e.preventDefault();j((function(e){return Math.max(0,e-1)}))}),[]);var T=u.useCallback((function(e){e===null||e===void 0?void 0:e.preventDefault();j((function(e){return Math.max(0,Math.min(l.length-1,e+1))}))}),[l.length]);var C=u.useMemo((function(){var e;return(e=l[S])!==null&&e!==void 0?e:null}),[S,l]);u.useEffect((function(){if(n.length<1){i({});E(\"hidden\");j(0)}}),[n.length]);var M=u.useCallback((function(e){e===null||e===void 0?void 0:e.preventDefault();E(\"minimized\")}),[]);var P=u.useCallback((function(e){e===null||e===void 0?void 0:e.preventDefault();E(\"hidden\")}),[]);var A=u.useCallback((function(e){e===null||e===void 0?void 0:e.preventDefault();E(\"fullscreen\")}),[]);if(n.length<1||C==null){return null}if(g){return u.createElement(p.Overlay,null)}if(_===\"hidden\"){return null}if(_===\"minimized\"){return u.createElement(b.Toast,{className:\"nextjs-toast-errors-parent\",onClick:A},u.createElement(\"div\",{className:\"nextjs-toast-errors\"},u.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"},u.createElement(\"circle\",{cx:\"12\",cy:\"12\",r:\"10\"}),u.createElement(\"line\",{x1:\"12\",y1:\"8\",x2:\"12\",y2:\"12\"}),u.createElement(\"line\",{x1:\"12\",y1:\"16\",x2:\"12.01\",y2:\"16\"})),u.createElement(\"span\",null,l.length,\" error\",l.length>1?\"s\":\"\"),u.createElement(\"button\",{\"data-nextjs-toast-errors-hide-button\":true,className:\"nextjs-toast-errors-hide-button\",type:\"button\",onClick:function(e){e.stopPropagation();P()},\"aria-label\":\"Hide Errors\"},u.createElement(h.CloseIcon,null))))}var D=[\"server\",\"edge-server\"].includes((0,m.getErrorSource)(C.error)||\"\");return u.createElement(p.Overlay,null,u.createElement(f.Dialog,{type:\"error\",\"aria-labelledby\":\"nextjs__container_errors_label\",\"aria-describedby\":\"nextjs__container_errors_desc\",onClose:D?undefined:M},u.createElement(f.DialogContent,null,u.createElement(f.DialogHeader,{className:\"nextjs-container-errors-header\"},u.createElement(d.LeftRightDialogHeader,{previous:S>0?k:null,next:S h1 {\\n font-size: var(--size-font-big);\\n line-height: var(--size-font-bigger);\\n font-weight: bold;\\n margin: 0;\\n margin-top: calc(var(--size-gap-double) + var(--size-gap-half));\\n }\\n .nextjs-container-errors-header small {\\n font-size: var(--size-font-small);\\n color: var(--color-accents-1);\\n margin-left: var(--size-gap-double);\\n }\\n .nextjs-container-errors-header small > span {\\n font-family: var(--font-stack-monospace);\\n }\\n .nextjs-container-errors-header > p {\\n font-family: var(--font-stack-monospace);\\n font-size: var(--size-font-small);\\n line-height: var(--size-font-big);\\n font-weight: bold;\\n margin: 0;\\n margin-top: var(--size-gap-half);\\n color: var(--color-ansi-red);\\n white-space: pre-wrap;\\n }\\n .nextjs-container-errors-header > div > small {\\n margin: 0;\\n margin-top: var(--size-gap-half);\\n }\\n .nextjs-container-errors-header > p > a {\\n color: var(--color-ansi-red);\\n }\\n\\n .nextjs-container-errors-body > h5:not(:first-child) {\\n margin-top: calc(var(--size-gap-double) + var(--size-gap));\\n }\\n .nextjs-container-errors-body > h5 {\\n margin-bottom: var(--size-gap);\\n }\\n\\n .nextjs-toast-errors-parent {\\n cursor: pointer;\\n transition: transform 0.2s ease;\\n }\\n .nextjs-toast-errors-parent:hover {\\n transform: scale(1.1);\\n }\\n .nextjs-toast-errors {\\n display: flex;\\n align-items: center;\\n justify-content: flex-start;\\n }\\n .nextjs-toast-errors > svg {\\n margin-right: var(--size-gap);\\n }\\n .nextjs-toast-errors-hide-button {\\n margin-left: var(--size-gap-triple);\\n border: none;\\n background: none;\\n color: var(--color-ansi-bright-white);\\n padding: 0;\\n transition: opacity 0.25s ease;\\n opacity: 0.7;\\n }\\n .nextjs-toast-errors-hide-button:hover {\\n opacity: 1;\\n }\\n\"],[\"\\n .nextjs-container-errors-header > h1 {\\n font-size: var(--size-font-big);\\n line-height: var(--size-font-bigger);\\n font-weight: bold;\\n margin: 0;\\n margin-top: calc(var(--size-gap-double) + var(--size-gap-half));\\n }\\n .nextjs-container-errors-header small {\\n font-size: var(--size-font-small);\\n color: var(--color-accents-1);\\n margin-left: var(--size-gap-double);\\n }\\n .nextjs-container-errors-header small > span {\\n font-family: var(--font-stack-monospace);\\n }\\n .nextjs-container-errors-header > p {\\n font-family: var(--font-stack-monospace);\\n font-size: var(--size-font-small);\\n line-height: var(--size-font-big);\\n font-weight: bold;\\n margin: 0;\\n margin-top: var(--size-gap-half);\\n color: var(--color-ansi-red);\\n white-space: pre-wrap;\\n }\\n .nextjs-container-errors-header > div > small {\\n margin: 0;\\n margin-top: var(--size-gap-half);\\n }\\n .nextjs-container-errors-header > p > a {\\n color: var(--color-ansi-red);\\n }\\n\\n .nextjs-container-errors-body > h5:not(:first-child) {\\n margin-top: calc(var(--size-gap-double) + var(--size-gap));\\n }\\n .nextjs-container-errors-body > h5 {\\n margin-bottom: var(--size-gap);\\n }\\n\\n .nextjs-toast-errors-parent {\\n cursor: pointer;\\n transition: transform 0.2s ease;\\n }\\n .nextjs-toast-errors-parent:hover {\\n transform: scale(1.1);\\n }\\n .nextjs-toast-errors {\\n display: flex;\\n align-items: center;\\n justify-content: flex-start;\\n }\\n .nextjs-toast-errors > svg {\\n margin-right: var(--size-gap);\\n }\\n .nextjs-toast-errors-hide-button {\\n margin-left: var(--size-gap-triple);\\n border: none;\\n background: none;\\n color: var(--color-ansi-bright-white);\\n padding: 0;\\n transition: opacity 0.25s ease;\\n opacity: 0.7;\\n }\\n .nextjs-toast-errors-hide-button:hover {\\n opacity: 1;\\n }\\n\"])));var _},972:function(e,n,t){\"use strict\";var r=this&&this.__makeTemplateObject||function(e,n){if(Object.defineProperty){Object.defineProperty(e,\"raw\",{value:n})}else{e.raw=n}return e};var a=this&&this.__createBinding||(Object.create?function(e,n,t,r){if(r===undefined)r=t;var a=Object.getOwnPropertyDescriptor(n,t);if(!a||(\"get\"in a?!n.__esModule:a.writable||a.configurable)){a={enumerable:true,get:function(){return n[t]}}}Object.defineProperty(e,r,a)}:function(e,n,t,r){if(r===undefined)r=t;e[r]=n[t]});var i=this&&this.__setModuleDefault||(Object.create?function(e,n){Object.defineProperty(e,\"default\",{enumerable:true,value:n})}:function(e,n){e[\"default\"]=n});var o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t in e)if(t!==\"default\"&&Object.prototype.hasOwnProperty.call(e,t))a(n,e,t);i(n,e);return n};var l=this&&this.__read||function(e,n){var t=typeof Symbol===\"function\"&&e[Symbol.iterator];if(!t)return e;var r=t.call(e),a,i=[],o;try{while((n===void 0||n-- >0)&&!(a=r.next()).done)i.push(a.value)}catch(e){o={error:e}}finally{try{if(a&&!a.done&&(t=r[\"return\"]))t.call(r)}finally{if(o)throw o.error}}return i};n.__esModule=true;n.RuntimeError=n.styles=void 0;var s=o(t(522));var u=t(30);var c=t(464);var f=t(205);var d=function CallStackFrame(e){var n;var t=e.frame;var r=(n=t.originalStackFrame)!==null&&n!==void 0?n:t.sourceStackFrame;var a=Boolean(t.originalCodeFrame);var i=s.useCallback((function(){var e;if(!a)return;var n=new URLSearchParams;for(var t in r){n.append(t,((e=r[t])!==null&&e!==void 0?e:\"\").toString())}self.fetch(\"\".concat( false||\"\",\"/__nextjs_launch-editor?\").concat(n.toString())).then((function(){}),(function(){console.error(\"There was an issue opening this code in your editor.\")}))}),[a,r]);return s.createElement(\"div\",{\"data-nextjs-call-stack-frame\":true},s.createElement(\"h6\",{\"data-nextjs-frame-expanded\":Boolean(t.expanded)},r.methodName),s.createElement(\"div\",{\"data-has-source\":a?\"true\":undefined,tabIndex:a?10:undefined,role:a?\"link\":undefined,onClick:i,title:a?\"Click to open in your editor\":undefined},s.createElement(\"span\",null,(0,f.getFrameSource)(r)),s.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"},s.createElement(\"path\",{d:\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"}),s.createElement(\"polyline\",{points:\"15 3 21 3 21 9\"}),s.createElement(\"line\",{x1:\"10\",y1:\"14\",x2:\"21\",y2:\"3\"}))))};var p=function RuntimeError(e){var n=e.error;var t=s.useMemo((function(){return n.frames.findIndex((function(e){return e.expanded&&Boolean(e.originalCodeFrame)&&Boolean(e.originalStackFrame)}))}),[n.frames]);var r=s.useMemo((function(){var e;return(e=n.frames[t])!==null&&e!==void 0?e:null}),[n.frames,t]);var a=s.useMemo((function(){return t<0?[]:n.frames.slice(0,t)}),[n.frames,t]);var i=l(s.useState(r==null),2),o=i[0],c=i[1];var f=s.useCallback((function(){c((function(e){return!e}))}),[]);var p=s.useMemo((function(){return a.filter((function(e){return e.expanded||o}))}),[o,a]);var b=s.useMemo((function(){return n.frames.slice(t+1)}),[n.frames,t]);var v=s.useMemo((function(){return b.filter((function(e){return e.expanded||o}))}),[o,b]);var m=s.useMemo((function(){return b.length!==v.length||o&&r!=null}),[o,b.length,r,v.length]);return s.createElement(s.Fragment,null,r?s.createElement(s.Fragment,null,s.createElement(\"h5\",null,\"Source\"),p.map((function(e,n){return s.createElement(d,{key:\"leading-frame-\".concat(n,\"-\").concat(o),frame:e})})),s.createElement(u.CodeFrame,{stackFrame:r.originalStackFrame,codeFrame:r.originalCodeFrame})):undefined,v.length?s.createElement(s.Fragment,null,s.createElement(\"h5\",null,\"Call Stack\"),v.map((function(e,n){return s.createElement(d,{key:\"call-stack-\".concat(n,\"-\").concat(o),frame:e})}))):undefined,m?s.createElement(s.Fragment,null,s.createElement(\"button\",{tabIndex:10,\"data-nextjs-data-runtime-error-collapsed-action\":true,type:\"button\",onClick:f},o?\"Hide\":\"Show\",\" collapsed frames\")):undefined)};n.RuntimeError=p;n.styles=(0,c.noop)(b||(b=r([\"\\n button[data-nextjs-data-runtime-error-collapsed-action] {\\n background: none;\\n border: none;\\n padding: 0;\\n font-size: var(--size-font-small);\\n line-height: var(--size-font-bigger);\\n color: var(--color-accents-3);\\n }\\n\\n [data-nextjs-call-stack-frame]:not(:last-child) {\\n margin-bottom: var(--size-gap-double);\\n }\\n\\n [data-nextjs-call-stack-frame] > h6 {\\n margin-top: 0;\\n margin-bottom: var(--size-gap);\\n font-family: var(--font-stack-monospace);\\n color: #222;\\n }\\n [data-nextjs-call-stack-frame] > h6[data-nextjs-frame-expanded='false'] {\\n color: #666;\\n }\\n [data-nextjs-call-stack-frame] > div {\\n display: flex;\\n align-items: center;\\n padding-left: calc(var(--size-gap) + var(--size-gap-half));\\n font-size: var(--size-font-small);\\n color: #999;\\n }\\n [data-nextjs-call-stack-frame] > div > svg {\\n width: auto;\\n height: var(--size-font-small);\\n margin-left: var(--size-gap);\\n\\n display: none;\\n }\\n\\n [data-nextjs-call-stack-frame] > div[data-has-source] {\\n cursor: pointer;\\n }\\n [data-nextjs-call-stack-frame] > div[data-has-source]:hover {\\n text-decoration: underline dotted;\\n }\\n [data-nextjs-call-stack-frame] > div[data-has-source] > svg {\\n display: unset;\\n }\\n\"],[\"\\n button[data-nextjs-data-runtime-error-collapsed-action] {\\n background: none;\\n border: none;\\n padding: 0;\\n font-size: var(--size-font-small);\\n line-height: var(--size-font-bigger);\\n color: var(--color-accents-3);\\n }\\n\\n [data-nextjs-call-stack-frame]:not(:last-child) {\\n margin-bottom: var(--size-gap-double);\\n }\\n\\n [data-nextjs-call-stack-frame] > h6 {\\n margin-top: 0;\\n margin-bottom: var(--size-gap);\\n font-family: var(--font-stack-monospace);\\n color: #222;\\n }\\n [data-nextjs-call-stack-frame] > h6[data-nextjs-frame-expanded='false'] {\\n color: #666;\\n }\\n [data-nextjs-call-stack-frame] > div {\\n display: flex;\\n align-items: center;\\n padding-left: calc(var(--size-gap) + var(--size-gap-half));\\n font-size: var(--size-font-small);\\n color: #999;\\n }\\n [data-nextjs-call-stack-frame] > div > svg {\\n width: auto;\\n height: var(--size-font-small);\\n margin-left: var(--size-gap);\\n\\n display: none;\\n }\\n\\n [data-nextjs-call-stack-frame] > div[data-has-source] {\\n cursor: pointer;\\n }\\n [data-nextjs-call-stack-frame] > div[data-has-source]:hover {\\n text-decoration: underline dotted;\\n }\\n [data-nextjs-call-stack-frame] > div[data-has-source] > svg {\\n display: unset;\\n }\\n\"])));var b},88:function(e,n,t){\"use strict\";var r=this&&this.__awaiter||function(e,n,t,r){function adopt(e){return e instanceof t?e:new t((function(n){n(e)}))}return new(t||(t=Promise))((function(t,a){function fulfilled(e){try{step(r.next(e))}catch(e){a(e)}}function rejected(e){try{step(r[\"throw\"](e))}catch(e){a(e)}}function step(e){e.done?t(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,n||[])).next())}))};var a=this&&this.__generator||function(e,n){var t={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},r,a,i,o;return o={next:verb(0),throw:verb(1),return:verb(2)},typeof Symbol===\"function\"&&(o[Symbol.iterator]=function(){return this}),o;function verb(e){return function(n){return step([e,n])}}function step(o){if(r)throw new TypeError(\"Generator is already executing.\");while(t)try{if(r=1,a&&(i=o[0]&2?a[\"return\"]:o[0]?a[\"throw\"]||((i=a[\"return\"])&&i.call(a),0):a.next)&&!(i=i.call(a,o[1])).done)return i;if(a=0,i)o=[o[0]&2,i.value];switch(o[0]){case 0:case 1:i=o;break;case 4:t.label++;return{value:o[1],done:false};case 5:t.label++;a=o[1];o=[0];continue;case 7:o=t.ops.pop();t.trys.pop();continue;default:if(!(i=t.trys,i=i.length>0&&i[i.length-1])&&(o[0]===6||o[0]===2)){t=0;continue}if(o[0]===3&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(o[0]===6||o[0]===2)){t=0;continue}if(o[0]===3&&(!i||o[1]>i[0]&&o[1] 0 && _args[0] !== void 0 ? _args[0] : {};\n // This makes sure this specific lines are removed in production\n if (true) {\n webpackHMR = opts.webpackHMR;\n }\n initialData = JSON.parse(document.getElementById(\"__NEXT_DATA__\").textContent);\n window.__NEXT_DATA__ = initialData;\n defaultLocale = initialData.defaultLocale;\n prefix = initialData.assetPrefix || \"\";\n // With dynamic assetPrefix it's no longer possible to set assetPrefix at the build time\n // So, this is how we do it in the client side at runtime\n __webpack_require__.p = \"\".concat(prefix, \"/_next/\") //eslint-disable-line\n ;\n // Initialize next/config with the environment configuration\n (0, _runtimeConfig).setConfig({\n serverRuntimeConfig: {},\n publicRuntimeConfig: initialData.runtimeConfig || {}\n });\n asPath = (0, _utils).getURL();\n // make sure not to attempt stripping basePath for 404s\n if ((0, _hasBasePath).hasBasePath(asPath)) {\n asPath = (0, _removeBasePath).removeBasePath(asPath);\n }\n if (false) {}\n if (initialData.scriptLoader) {\n initScriptLoader = (__webpack_require__(/*! ./script */ \"../node_modules/next/dist/client/script.js\").initScriptLoader);\n initScriptLoader(initialData.scriptLoader);\n }\n pageLoader = new _pageLoader.default(initialData.buildId, prefix);\n register = function(param) {\n var _param = _slicedToArray(param, 2), r = _param[0], f = _param[1];\n return pageLoader.routeLoader.onEntrypoint(r, f);\n };\n if (window.__NEXT_P) {\n // Defer page registration for another tick. This will increase the overall\n // latency in hydrating the page, but reduce the total blocking time.\n window.__NEXT_P.map(function(p) {\n return setTimeout(function() {\n return register(p);\n }, 0);\n });\n }\n window.__NEXT_P = [];\n window.__NEXT_P.push = register;\n headManager = (0, _headManager).default();\n headManager.getIsSsr = function() {\n return router.isSsr;\n };\n appElement = document.getElementById(\"__next\");\n return _ctx.abrupt(\"return\", {\n assetPrefix: prefix\n });\n case 21:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee);\n }));\n return _initialize.apply(this, arguments);\n}\nfunction hydrate(opts) {\n return _hydrate.apply(this, arguments);\n}\nfunction _hydrate() {\n _hydrate = _asyncToGenerator(_runtimeJs.default.mark(function _callee(opts) {\n var initialErr, appEntrypoint, app, mod, pageEntrypoint, isValidElementType, getServerError, renderCtx;\n return _runtimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n initialErr = initialData.err;\n _ctx.prev = 1;\n _ctx.next = 4;\n return pageLoader.routeLoader.whenEntrypoint(\"/_app\");\n case 4:\n appEntrypoint = _ctx.sent;\n if (!(\"error\" in appEntrypoint)) {\n _ctx.next = 7;\n break;\n }\n throw appEntrypoint.error;\n case 7:\n app = appEntrypoint.component, mod = appEntrypoint.exports;\n CachedApp = app;\n if (mod && mod.reportWebVitals) {\n onPerfEntry = function(param) {\n var id = param.id, name = param.name, startTime = param.startTime, value = param.value, duration = param.duration, entryType = param.entryType, entries = param.entries;\n // Combines timestamp with random number for unique ID\n var uniqueID = \"\".concat(Date.now(), \"-\").concat(Math.floor(Math.random() * (9e12 - 1)) + 1e12);\n var perfStartEntry;\n if (entries && entries.length) {\n perfStartEntry = entries[0].startTime;\n }\n var webVitals = {\n id: id || uniqueID,\n name: name,\n startTime: startTime || perfStartEntry,\n value: value == null ? duration : value,\n label: entryType === \"mark\" || entryType === \"measure\" ? \"custom\" : \"web-vital\"\n };\n mod.reportWebVitals(webVitals);\n };\n }\n if (// error, so we need to skip waiting for the entrypoint.\n !( true && initialData.err)) {\n _ctx.next = 14;\n break;\n }\n _ctx.t0 = {\n error: initialData.err\n };\n _ctx.next = 17;\n break;\n case 14:\n _ctx.next = 16;\n return pageLoader.routeLoader.whenEntrypoint(initialData.page);\n case 16:\n _ctx.t0 = _ctx.sent;\n case 17:\n pageEntrypoint = _ctx.t0;\n if (!(\"error\" in pageEntrypoint)) {\n _ctx.next = 20;\n break;\n }\n throw pageEntrypoint.error;\n case 20:\n CachedComponent = pageEntrypoint.component;\n if (false) {}\n isValidElementType = (__webpack_require__(/*! next/dist/compiled/react-is */ \"../node_modules/next/dist/compiled/react-is/index.js\").isValidElementType);\n if (isValidElementType(CachedComponent)) {\n _ctx.next = 25;\n break;\n }\n throw new Error('The default export is not a React Component in page: \"'.concat(initialData.page, '\"'));\n case 25:\n _ctx.next = 30;\n break;\n case 27:\n _ctx.prev = 27;\n _ctx.t1 = _ctx[\"catch\"](1);\n // This catches errors like throwing in the top level of a module\n initialErr = (0, _isError).getProperError(_ctx.t1);\n case 30:\n if (true) {\n getServerError = (__webpack_require__(/*! next/dist/compiled/@next/react-dev-overlay/dist/client */ \"../node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js\").getServerError);\n // Server-side runtime errors need to be re-thrown on the client-side so\n // that the overlay is rendered.\n if (initialErr) {\n if (initialErr === initialData.err) {\n setTimeout(function() {\n var error;\n try {\n // Generate a new error object. We `throw` it because some browsers\n // will set the `stack` when thrown, and we want to ensure ours is\n // not overridden when we re-throw it below.\n throw new Error(initialErr.message);\n } catch (e) {\n error = e;\n }\n error.name = initialErr.name;\n error.stack = initialErr.stack;\n throw getServerError(error, initialErr.source);\n });\n } else {\n setTimeout(function() {\n throw initialErr;\n });\n }\n }\n }\n if (!window.__NEXT_PRELOADREADY) {\n _ctx.next = 34;\n break;\n }\n _ctx.next = 34;\n return window.__NEXT_PRELOADREADY(initialData.dynamicIds);\n case 34:\n exports.router = router = (0, _router).createRouter(initialData.page, initialData.query, asPath, {\n initialProps: initialData.props,\n pageLoader: pageLoader,\n App: CachedApp,\n Component: CachedComponent,\n wrapApp: wrapApp,\n err: initialErr,\n isFallback: Boolean(initialData.isFallback),\n subscription: function(info, App, scroll) {\n return render(Object.assign({}, info, {\n App: App,\n scroll: scroll\n }));\n },\n locale: initialData.locale,\n locales: initialData.locales,\n defaultLocale: defaultLocale,\n domainLocales: initialData.domainLocales,\n isPreview: initialData.isPreview,\n isRsc: initialData.rsc\n });\n _ctx.next = 37;\n return router._initialMatchesMiddlewarePromise;\n case 37:\n initialMatchesMiddleware = _ctx.sent;\n renderCtx = {\n App: CachedApp,\n initial: true,\n Component: CachedComponent,\n props: initialData.props,\n err: initialErr\n };\n if (!(opts == null ? void 0 : opts.beforeRender)) {\n _ctx.next = 42;\n break;\n }\n _ctx.next = 42;\n return opts.beforeRender();\n case 42:\n render(renderCtx);\n case 43:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee, null, [\n [\n 1,\n 27\n ]\n ]);\n }));\n return _hydrate.apply(this, arguments);\n}\nfunction render(renderingProps) {\n return _render.apply(this, arguments);\n}\nfunction _render() {\n _render = _asyncToGenerator(_runtimeJs.default.mark(function _callee(renderingProps) {\n var renderErr;\n return _runtimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n if (!renderingProps.err) {\n _ctx.next = 4;\n break;\n }\n _ctx.next = 3;\n return renderError(renderingProps);\n case 3:\n return _ctx.abrupt(\"return\");\n case 4:\n _ctx.prev = 4;\n _ctx.next = 7;\n return doRender(renderingProps);\n case 7:\n _ctx.next = 17;\n break;\n case 9:\n _ctx.prev = 9;\n _ctx.t0 = _ctx[\"catch\"](4);\n renderErr = (0, _isError).getProperError(_ctx.t0);\n if (!renderErr.cancelled) {\n _ctx.next = 14;\n break;\n }\n throw renderErr;\n case 14:\n if (true) {\n // Ensure this error is displayed in the overlay in development\n setTimeout(function() {\n throw renderErr;\n });\n }\n _ctx.next = 17;\n return renderError(_extends({}, renderingProps, {\n err: renderErr\n }));\n case 17:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee, null, [\n [\n 4,\n 9\n ]\n ]);\n }));\n return _render.apply(this, arguments);\n}\n// This method handles all runtime and debug errors.\n// 404 and 500 errors are special kind of errors\n// and they are still handle via the main render method.\nfunction renderError(renderErrorProps) {\n var App = renderErrorProps.App, err = renderErrorProps.err;\n // In development runtime errors are caught by our overlay\n // In production we catch runtime errors using componentDidCatch which will trigger renderError\n if (true) {\n // A Next.js rendering runtime error is always unrecoverable\n // FIXME: let's make this recoverable (error in GIP client-transition)\n webpackHMR.onUnrecoverableError();\n // We need to render an empty so that the `` can\n // render itself.\n return doRender({\n App: function() {\n return null;\n },\n props: {},\n Component: function() {\n return null;\n },\n styleSheets: []\n });\n }\n // Make sure we log the error to the console, otherwise users can't track down issues.\n console.error(err);\n console.error(\"A client-side exception has occurred, see here for more info: https://nextjs.org/docs/messages/client-side-exception-occurred\");\n return pageLoader.loadPage(\"/_error\").then(function(param) {\n var ErrorComponent = param.page, styleSheets = param.styleSheets;\n return (lastAppProps == null ? void 0 : lastAppProps.Component) === ErrorComponent ? Promise.resolve().then(function() {\n return /*#__PURE__*/ _interopRequireWildcard(__webpack_require__(/*! ../pages/_error */ \"../node_modules/next/dist/pages/_error.js\"));\n }).then(function(m) {\n return {\n ErrorComponent: m.default,\n styleSheets: []\n };\n }) : {\n ErrorComponent: ErrorComponent,\n styleSheets: styleSheets\n };\n }).then(function(param) {\n var ErrorComponent = param.ErrorComponent, styleSheets = param.styleSheets;\n var ref;\n // In production we do a normal render with the `ErrorComponent` as component.\n // If we've gotten here upon initial render, we can use the props from the server.\n // Otherwise, we need to call `getInitialProps` on `App` before mounting.\n var AppTree = wrapApp(App);\n var appCtx = {\n Component: ErrorComponent,\n AppTree: AppTree,\n router: router,\n ctx: {\n err: err,\n pathname: initialData.page,\n query: initialData.query,\n asPath: asPath,\n AppTree: AppTree\n }\n };\n return Promise.resolve(((ref = renderErrorProps.props) == null ? void 0 : ref.err) ? renderErrorProps.props : (0, _utils).loadGetInitialProps(App, appCtx)).then(function(initProps) {\n return doRender(_extends({}, renderErrorProps, {\n err: err,\n Component: ErrorComponent,\n styleSheets: styleSheets,\n props: initProps\n }));\n });\n });\n}\nvar reactRoot = null;\n// On initial render a hydrate should always happen\nvar shouldHydrate = true;\nfunction renderReactElement(domEl, fn) {\n // mark start of hydrate/render\n if (_utils.ST) {\n performance.mark(\"beforeRender\");\n }\n var reactEl = fn(shouldHydrate ? markHydrateComplete : markRenderComplete);\n if (false) { var startTransition; } else {\n // The check for `.hydrate` is there to support React alternatives like preact\n if (shouldHydrate) {\n ReactDOM.hydrate(reactEl, domEl);\n shouldHydrate = false;\n } else {\n ReactDOM.render(reactEl, domEl);\n }\n }\n}\nfunction markHydrateComplete() {\n if (!_utils.ST) return;\n performance.mark(\"afterHydrate\") // mark end of hydration\n ;\n performance.measure(\"Next.js-before-hydration\", \"navigationStart\", \"beforeRender\");\n performance.measure(\"Next.js-hydration\", \"beforeRender\", \"afterHydrate\");\n if (onPerfEntry) {\n performance.getEntriesByName(\"Next.js-hydration\").forEach(onPerfEntry);\n }\n clearMarks();\n}\nfunction markRenderComplete() {\n if (!_utils.ST) return;\n performance.mark(\"afterRender\") // mark end of render\n ;\n var navStartEntries = performance.getEntriesByName(\"routeChange\", \"mark\");\n if (!navStartEntries.length) return;\n performance.measure(\"Next.js-route-change-to-render\", navStartEntries[0].name, \"beforeRender\");\n performance.measure(\"Next.js-render\", \"beforeRender\", \"afterRender\");\n if (onPerfEntry) {\n performance.getEntriesByName(\"Next.js-render\").forEach(onPerfEntry);\n performance.getEntriesByName(\"Next.js-route-change-to-render\").forEach(onPerfEntry);\n }\n clearMarks();\n [\n \"Next.js-route-change-to-render\",\n \"Next.js-render\"\n ].forEach(function(measure) {\n return performance.clearMeasures(measure);\n });\n}\nfunction clearMarks() {\n [\n \"beforeRender\",\n \"afterHydrate\",\n \"afterRender\",\n \"routeChange\"\n ].forEach(function(mark) {\n return performance.clearMarks(mark);\n });\n}\nfunction AppContainer(param) {\n var children = param.children;\n return /*#__PURE__*/ _react.default.createElement(Container, {\n fn: function(error) {\n return renderError({\n App: CachedApp,\n err: error\n }).catch(function(err) {\n return console.error(\"Error rendering page: \", err);\n });\n }\n }, /*#__PURE__*/ _react.default.createElement(_routerContext.RouterContext.Provider, {\n value: (0, _router).makePublicRouterInstance(router)\n }, /*#__PURE__*/ _react.default.createElement(_headManagerContext.HeadManagerContext.Provider, {\n value: headManager\n }, /*#__PURE__*/ _react.default.createElement(_imageConfigContext.ImageConfigContext.Provider, {\n value: {\"deviceSizes\":[640,750,828,1080,1200,1920,2048,3840],\"imageSizes\":[16,32,48,64,96,128,256,384],\"path\":\"/_next/image\",\"loader\":\"default\",\"domains\":[],\"experimentalRemotePatterns\":[]}\n }, children))));\n}\n_c = AppContainer;\nfunction renderApp(App, appProps) {\n return /*#__PURE__*/ _react.default.createElement(App, Object.assign({}, appProps));\n}\nvar wrapApp = function(App) {\n return function(wrappedAppProps) {\n var appProps = _extends({}, wrappedAppProps, {\n Component: CachedComponent,\n err: initialData.err,\n router: router\n });\n return /*#__PURE__*/ _react.default.createElement(AppContainer, null, renderApp(App, appProps));\n };\n};\nvar RSCComponent;\nif (false) { var ServerRoot, rscCache, nextServerDataLoadingGlobal, DOMContentLoaded, initialServerDataFlushed, initialServerDataLoaded, initialServerDataWriter, initialServerDataBuffer, encoder, ref, createFromFetch, createFromReadableStream, getCacheKey, _s2, useServerResponse, fetchFlight, createResponseCache, nextServerDataRegisterWriter, nextServerDataCallback; }\nvar lastAppProps;\nfunction doRender(input) {\n var onStart = // This function has a return type to ensure it doesn't start returning a\n // Promise. It should remain synchronous.\n function onStart() {\n if (!styleSheets || // unless we're in production:\n \"development\" !== \"production\") {\n return false;\n }\n var currentStyleTags = looseToArray(document.querySelectorAll(\"style[data-n-href]\"));\n var currentHrefs = new Set(currentStyleTags.map(function(tag) {\n return tag.getAttribute(\"data-n-href\");\n }));\n var noscript = document.querySelector(\"noscript[data-n-css]\");\n var nonce = noscript == null ? void 0 : noscript.getAttribute(\"data-n-css\");\n styleSheets.forEach(function(param) {\n var href = param.href, text = param.text;\n if (!currentHrefs.has(href)) {\n var styleTag = document.createElement(\"style\");\n styleTag.setAttribute(\"data-n-href\", href);\n styleTag.setAttribute(\"media\", \"x\");\n if (nonce) {\n styleTag.setAttribute(\"nonce\", nonce);\n }\n document.head.appendChild(styleTag);\n styleTag.appendChild(document.createTextNode(text));\n }\n });\n return true;\n };\n var onHeadCommit = function onHeadCommit() {\n if (// unless we're in production:\n false) { var referenceNode, idx, currentHrefs, currentStyleTags, desiredHrefs; }\n if (input.scroll) {\n window.scrollTo(input.scroll.x, input.scroll.y);\n }\n };\n var onRootCommit = function onRootCommit() {\n resolvePromise();\n };\n var App = input.App, Component = input.Component, props = input.props, err = input.err, __N_RSC = input.__N_RSC;\n var styleSheets = \"initial\" in input ? undefined : input.styleSheets;\n Component = Component || lastAppProps.Component;\n props = props || lastAppProps.props;\n var isRSC = false ? 0 : !!__N_RSC;\n var appProps = _extends({}, props, {\n Component: isRSC ? RSCComponent : Component,\n err: err,\n router: router\n });\n // lastAppProps has to be set before ReactDom.render to account for ReactDom throwing an error.\n lastAppProps = appProps;\n var canceled = false;\n var resolvePromise;\n var renderPromise = new Promise(function(resolve, reject) {\n if (lastRenderReject) {\n lastRenderReject();\n }\n resolvePromise = function() {\n lastRenderReject = null;\n resolve();\n };\n lastRenderReject = function() {\n canceled = true;\n lastRenderReject = null;\n var error = new Error(\"Cancel rendering route\");\n error.cancelled = true;\n reject(error);\n };\n });\n onStart();\n var elem = /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(Head, {\n callback: onHeadCommit\n }), /*#__PURE__*/ _react.default.createElement(AppContainer, null, renderApp(App, appProps), /*#__PURE__*/ _react.default.createElement(_portal.Portal, {\n type: \"next-route-announcer\"\n }, /*#__PURE__*/ _react.default.createElement(_routeAnnouncer.RouteAnnouncer, null))));\n // We catch runtime errors using componentDidCatch which will trigger renderError\n renderReactElement(appElement, function(callback) {\n return /*#__PURE__*/ _react.default.createElement(Root, {\n callbacks: [\n callback,\n onRootCommit\n ]\n }, false ? /*#__PURE__*/ 0 : elem);\n });\n return renderPromise;\n}\nfunction Root(param) {\n var callbacks = param.callbacks, children = param.children;\n _s();\n // We use `useLayoutEffect` to guarantee the callbacks are executed\n // as soon as React flushes the update\n _react.default.useLayoutEffect(function() {\n return callbacks.forEach(function(callback) {\n return callback();\n });\n }, [\n callbacks\n ]);\n // We should ask to measure the Web Vitals after rendering completes so we\n // don't cause any hydration delay:\n _react.default.useEffect(function() {\n (0, _performanceRelayer).default(onPerfEntry);\n }, []);\n if (false) {}\n return children;\n}\n_s(Root, \"Gjgl5rfcc2T4sFnfEMfRvL6K4Q4=\");\n_c1 = Root;\n// Dummy component that we render as a child of Root so that we can\n// toggle the correct styles before the page is rendered.\nfunction Head(param) {\n var callback = param.callback;\n _s1();\n // We use `useLayoutEffect` to guarantee the callback is executed\n // as soon as React flushes the update.\n _react.default.useLayoutEffect(function() {\n return callback();\n }, [\n callback\n ]);\n return null;\n}\n_s1(Head, \"n7/vCynhJvM+pLkyL2DMQUF0odM=\");\n_c2 = Head;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=index.js.map\nvar _c, _c1, _c2;\n$RefreshReg$(_c, \"AppContainer\");\n$RefreshReg$(_c1, \"Root\");\n$RefreshReg$(_c2, \"Head\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7Ozs7Ozs7Ozs7Ozs7QUFDYkEsOENBQTZDO0lBQ3pDRyxLQUFLLEVBQUUsSUFBSTtDQUNkLEVBQUMsQ0FBQztBQUNIRCxrQkFBa0IsR0FBR0UsVUFBVSxDQUFDO0FBQ2hDRixlQUFlLEdBQUdHLE9BQU8sQ0FBQztBQUMxQkgsZUFBZSxHQUFHQSxjQUFjLEdBQUdBLGVBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUM1RE8sbUJBQU8sQ0FBQyx3R0FBb0MsQ0FBQyxDQUFDO0FBQzlDLElBQUlDLE1BQU0sR0FBR0MsdUJBQXNCLENBQUNGLG1CQUFPLENBQUMsNkNBQU8sQ0FBQyxDQUFDO0FBQ3JELElBQUlHLG1CQUFtQixHQUFHSCxtQkFBTyxDQUFDLHdHQUFvQyxDQUFDO0FBQ3ZFLElBQUlJLEtBQUssR0FBR0YsdUJBQXNCLENBQUNGLG1CQUFPLENBQUMsd0VBQW9CLENBQUMsQ0FBQztBQUNqRSxJQUFJSyxjQUFjLEdBQUdMLG1CQUFPLENBQUMsNEZBQThCLENBQUM7QUFDNUQsSUFBSU0sVUFBVSxHQUFHTixtQkFBTyxDQUFDLDhHQUF1QyxDQUFDO0FBQ2pFLElBQUlPLFlBQVksR0FBR1AsbUJBQU8sQ0FBQyxnSEFBd0MsQ0FBQztBQUNwRSxJQUFJUSxjQUFjLEdBQUdSLG1CQUFPLENBQUMsNEZBQThCLENBQUM7QUFDNUQsSUFBSVMsTUFBTSxHQUFHVCxtQkFBTyxDQUFDLDBFQUFxQixDQUFDO0FBQzNDLElBQUlVLE9BQU8sR0FBR1YsbUJBQU8sQ0FBQyxrRUFBVSxDQUFDO0FBQ2pDLElBQUlXLFlBQVksR0FBR1QsdUJBQXNCLENBQUNGLG1CQUFPLENBQUMsd0VBQWdCLENBQUMsQ0FBQztBQUNwRSxJQUFJWSxXQUFXLEdBQUdWLHVCQUFzQixDQUFDRixtQkFBTyxDQUFDLHNFQUFlLENBQUMsQ0FBQztBQUNsRSxJQUFJYSxtQkFBbUIsR0FBR1gsdUJBQXNC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Q0FBQzJELE9BQU8sQ0FBQztDQUNsQyxDQUVELGlDQUFpQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvaW5kZXguanM/M2NhMSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuaW5pdGlhbGl6ZSA9IGluaXRpYWxpemU7XG5leHBvcnRzLmh5ZHJhdGUgPSBoeWRyYXRlO1xuZXhwb3J0cy5lbWl0dGVyID0gZXhwb3J0cy5yb3V0ZXIgPSBleHBvcnRzLnZlcnNpb24gPSB2b2lkIDA7XG5yZXF1aXJlKFwiLi4vYnVpbGQvcG9seWZpbGxzL3BvbHlmaWxsLW1vZHVsZVwiKTtcbnZhciBfcmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG52YXIgX2hlYWRNYW5hZ2VyQ29udGV4dCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL2hlYWQtbWFuYWdlci1jb250ZXh0XCIpO1xudmFyIF9taXR0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9taXR0XCIpKTtcbnZhciBfcm91dGVyQ29udGV4dCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci1jb250ZXh0XCIpO1xudmFyIF9pc0R5bmFtaWMgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaXMtZHluYW1pY1wiKTtcbnZhciBfcXVlcnlzdHJpbmcgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcXVlcnlzdHJpbmdcIik7XG52YXIgX3J1bnRpbWVDb25maWcgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9ydW50aW1lLWNvbmZpZ1wiKTtcbnZhciBfdXRpbHMgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi91dGlsc1wiKTtcbnZhciBfcG9ydGFsID0gcmVxdWlyZShcIi4vcG9ydGFsXCIpO1xudmFyIF9oZWFkTWFuYWdlciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vaGVhZC1tYW5hZ2VyXCIpKTtcbnZhciBfcGFnZUxvYWRlciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vcGFnZS1sb2FkZXJcIikpO1xudmFyIF9wZXJmb3JtYW5jZVJlbGF5ZXIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3BlcmZvcm1hbmNlLXJlbGF5ZXJcIikpO1xudmFyIF9yb3V0ZUFubm91bmNlciA9IHJlcXVpcmUoXCIuL3JvdXRlLWFubm91bmNlclwiKTtcbnZhciBfcm91dGVyID0gcmVxdWlyZShcIi4vcm91dGVyXCIpO1xudmFyIF9pc0Vycm9yID0gcmVxdWlyZShcIi4uL2xpYi9pcy1lcnJvclwiKTtcbnZhciBfaW1hZ2VDb25maWdDb250ZXh0ID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvaW1hZ2UtY29uZmlnLWNvbnRleHRcIik7XG52YXIgX3JlbW92ZUJhc2VQYXRoID0gcmVxdWlyZShcIi4vcmVtb3ZlLWJhc2UtcGF0aFwiKTtcbnZhciBfaGFzQmFzZVBhdGggPSByZXF1aXJlKFwiLi9oYXMtYmFzZS1wYXRoXCIpO1xuZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTtcbiAgICAgICAgdmFyIHZhbHVlID0gaW5mby52YWx1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKF9uZXh0LCBfdGhyb3cpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXMsIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHZhciBnZW4gPSBmbi5hcHBseShzZWxmLCBhcmdzKTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9uZXh0KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gX3Rocm93KGVycikge1xuICAgICAgICAgICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX25leHQodW5kZWZpbmVkKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICAgIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0YXJnZXQpIHtcbiAgICAgICAgZm9yKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yKHZhciBrZXkgaW4gc291cmNlKXtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH07XG4gICAgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikge1xuICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgICAgIGRlZmF1bHQ6IG9ialxuICAgIH07XG59XG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7XG4gICAgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsO1xuICAgIHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7XG4gICAgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjYWNoZTtcbiAgICB9O1xuICAgIHJldHVybiBjYWNoZTtcbn1cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikge1xuICAgIGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgICAgIH07XG4gICAgfVxuICAgIHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpO1xuICAgIGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkge1xuICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KG9iaik7XG4gICAgfVxuICAgIHZhciBuZXdPYmogPSB7fTtcbiAgICB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICAgZm9yKHZhciBrZXkgaW4gb2JqKXtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgIHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsO1xuICAgICAgICAgICAgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld09ialtrZXldID0gb2JqW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgbmV3T2JqLmRlZmF1bHQgPSBvYmo7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIGNhY2hlLnNldChvYmosIG5ld09iaik7XG4gICAgfVxuICAgIHJldHVybiBuZXdPYmo7XG59XG5jb25zdCBSZWFjdERPTSA9IHByb2Nlc3MuZW52Ll9fTkVYVF9SRUFDVF9ST09UID8gcmVxdWlyZSgncmVhY3QtZG9tL2NsaWVudCcpIDogcmVxdWlyZSgncmVhY3QtZG9tJyk7XG5jb25zdCB2ZXJzaW9uID0gXCIxMi4yLjNcIjtcbmV4cG9ydHMudmVyc2lvbiA9IHZlcnNpb247XG5sZXQgcm91dGVyO1xuZXhwb3J0cy5yb3V0ZXIgPSByb3V0ZXI7XG5jb25zdCBlbWl0dGVyID0gKDAsIF9taXR0KS5kZWZhdWx0KCk7XG5leHBvcnRzLmVtaXR0ZXIgPSBlbWl0dGVyO1xuY29uc3QgbG9vc2VUb0FycmF5ID0gKGlucHV0KT0+W10uc2xpY2UuY2FsbChpbnB1dCk7XG5sZXQgaW5pdGlhbERhdGE7XG5sZXQgZGVmYXVsdExvY2FsZSA9IHVuZGVmaW5lZDtcbmxldCBhc1BhdGg7XG5sZXQgcGFnZUxvYWRlcjtcbmxldCBhcHBFbGVtZW50O1xubGV0IGhlYWRNYW5hZ2VyO1xubGV0IGluaXRpYWxNYXRjaGVzTWlkZGxld2FyZSA9IGZhbHNlO1xubGV0IGxhc3RSZW5kZXJSZWplY3Q7XG5sZXQgd2VicGFja0hNUjtcbmxldCBDYWNoZWRBcHAsIG9uUGVyZkVudHJ5O1xubGV0IENhY2hlZENvbXBvbmVudDtcbnNlbGYuX19uZXh0X3JlcXVpcmVfXyA9IF9fd2VicGFja19yZXF1aXJlX187XG5jbGFzcyBDb250YWluZXIgZXh0ZW5kcyBfcmVhY3QuZGVmYXVsdC5Db21wb25lbnQge1xuICAgIGNvbXBvbmVudERpZENhdGNoKGNvbXBvbmVudEVyciwgaW5mbykge1xuICAgICAgICB0aGlzLnByb3BzLmZuKGNvbXBvbmVudEVyciwgaW5mbyk7XG4gICAgfVxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgICB0aGlzLnNjcm9sbFRvSGFzaCgpO1xuICAgICAgICAvLyBXZSBuZWVkIHRvIHJlcGxhY2UgdGhlIHJvdXRlciBzdGF0ZSBpZjpcbiAgICAgICAgLy8gLSB0aGUgcGFnZSB3YXMgKGF1dG8pIGV4cG9ydGVkIGFuZCBoYXMgYSBxdWVyeSBzdHJpbmcgb3Igc2VhcmNoIChoYXNoKVxuICAgICAgICAvLyAtIGl0IHdhcyBhdXRvIGV4cG9ydGVkIGFuZCBpcyBhIGR5bmFtaWMgcm91dGUgKHRvIHByb3ZpZGUgcGFyYW1zKVxuICAgICAgICAvLyAtIGlmIGl0IGlzIGEgY2xpZW50LXNpZGUgc2tlbGV0b24gKGZhbGxiYWNrIHJlbmRlcilcbiAgICAgICAgLy8gLSBpZiBtaWRkbGV3YXJlIG1hdGNoZXMgdGhlIGN1cnJlbnQgcGFnZSAobWF5IGhhdmUgcmV3cml0ZSBwYXJhbXMpXG4gICAgICAgIC8vIC0gaWYgcmV3cml0ZXMgaW4gbmV4dC5jb25maWcuanMgbWF0Y2ggKG1heSBoYXZlIHJld3JpdGUgcGFyYW1zKVxuICAgICAgICBpZiAocm91dGVyLmlzU3NyICYmIC8vIFdlIGRvbid0IHVwZGF0ZSBmb3IgNDA0IHJlcXVlc3RzIGFzIHRoaXMgY2FuIG1vZGlmeVxuICAgICAgICAvLyB0aGUgYXNQYXRoIHVuZXhwZWN0ZWRseSBlLmcuIGFkZGluZyBiYXNlUGF0aCB3aGVuXG4gICAgICAgIC8vIGl0IHdhc24ndCBvcmlnaW5hbGx5IHByZXNlbnRcbiAgICAgICAgaW5pdGlhbERhdGEucGFnZSAhPT0gJy80MDQnICYmIGluaXRpYWxEYXRhLnBhZ2UgIT09ICcvX2Vycm9yJyAmJiAoaW5pdGlhbERhdGEuaXNGYWxsYmFjayB8fCBpbml0aWFsRGF0YS5uZXh0RXhwb3J0ICYmICgoMCwgX2lzRHluYW1pYykuaXNEeW5hbWljUm91dGUocm91dGVyLnBhdGhuYW1lKSB8fCBsb2NhdGlvbi5zZWFyY2ggfHwgcHJvY2Vzcy5lbnYuX19ORVhUX0hBU19SRVdSSVRFUyB8fCBpbml0aWFsTWF0Y2hlc01pZGRsZXdhcmUpIHx8IGluaXRpYWxEYXRhLnByb3BzICYmIGluaXRpYWxEYXRhLnByb3BzLl9fTl9TU0cgJiYgKGxvY2F0aW9uLnNlYXJjaCB8fCBwcm9jZXNzLmVudi5fX05FWFRfSEFTX1JFV1JJVEVTIHx8IGluaXRpYWxNYXRjaGVzTWlkZGxld2FyZSkpKSB7XG4gICAgICAgICAgICAvLyB1cGRhdGUgcXVlcnkgb24gbW91bnQgZm9yIGV4cG9ydGVkIHBhZ2VzXG4gICAgICAgICAgICByb3V0ZXIucmVwbGFjZShyb3V0ZXIucGF0aG5hbWUgKyAnPycgKyBTdHJpbmcoKDAsIF9xdWVyeXN0cmluZykuYXNzaWduKCgwLCBfcXVlcnlzdHJpbmcpLnVybFF1ZXJ5VG9TZWFyY2hQYXJhbXMocm91dGVyLnF1ZXJ5KSwgbmV3IFVSTFNlYXJjaFBhcmFtcyhsb2NhdGlvbi5zZWFyY2gpKSksIGFzUGF0aCwge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAvLyBXQVJOSU5HOiBgX2hgIGlzIGFuIGludGVybmFsIG9wdGlvbiBmb3IgaGFuZGluZyBOZXh0LmpzXG4gICAgICAgICAgICAgICAgLy8gY2xpZW50LXNpZGUgaHlkcmF0aW9uLiBZb3VyIGFwcCBzaG91bGQgX25ldmVyXyB1c2UgdGhpcyBwcm9wZXJ0eS5cbiAgICAgICAgICAgICAgICAvLyBJdCBtYXkgY2hhbmdlIGF0IGFueSB0aW1lIHdpdGhvdXQgbm90aWNlLlxuICAgICAgICAgICAgICAgIF9oOiAxLFxuICAgICAgICAgICAgICAgIC8vIEZhbGxiYWNrIHBhZ2VzIG11c3QgdHJpZ2dlciB0aGUgZGF0YSBmZXRjaCwgc28gdGhlIHRyYW5zaXRpb24gaXNcbiAgICAgICAgICAgICAgICAvLyBub3Qgc2hhbGxvdy5cbiAgICAgICAgICAgICAgICAvLyBPdGhlciBwYWdlcyAoc3RyaWN0bHkgdXBkYXRpbmcgcXVlcnkpIGhhcHBlbnMgc2hhbGxvd2x5LCBhcyBkYXRhXG4gICAgICAgICAgICAgICAgLy8gcmVxdWlyZW1lbnRzIHdvdWxkIGFscmVhZHkgYmUgcHJlc2VudC5cbiAgICAgICAgICAgICAgICBzaGFsbG93OiAhaW5pdGlhbERhdGEuaXNGYWxsYmFjayAmJiAhaW5pdGlhbE1hdGNoZXNNaWRkbGV3YXJlXG4gICAgICAgICAgICB9KS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICAgICAgICAgIGlmICghZXJyLmNhbmNlbGxlZCkgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgICAgICB0aGlzLnNjcm9sbFRvSGFzaCgpO1xuICAgIH1cbiAgICBzY3JvbGxUb0hhc2goKSB7XG4gICAgICAgIGxldCB7IGhhc2ggIH0gPSBsb2NhdGlvbjtcbiAgICAgICAgaGFzaCA9IGhhc2ggJiYgaGFzaC5zdWJzdHJpbmcoMSk7XG4gICAgICAgIGlmICghaGFzaCkgcmV0dXJuO1xuICAgICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGhhc2gpO1xuICAgICAgICBpZiAoIWVsKSByZXR1cm47XG4gICAgICAgIC8vIElmIHdlIGNhbGwgc2Nyb2xsSW50b1ZpZXcoKSBpbiBoZXJlIHdpdGhvdXQgYSBzZXRUaW1lb3V0XG4gICAgICAgIC8vIGl0IHdvbid0IHNjcm9sbCBwcm9wZXJseS5cbiAgICAgICAgc2V0VGltZW91dCgoKT0+ZWwuc2Nyb2xsSW50b1ZpZXcoKSwgMCk7XG4gICAgfVxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgeyBSZWFjdERldk92ZXJsYXkgLCAgfSA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9AbmV4dC9yZWFjdC1kZXYtb3ZlcmxheS9kaXN0L2NsaWVudCcpO1xuICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChSZWFjdERldk92ZXJsYXksIG51bGwsIHRoaXMucHJvcHMuY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gaW5pdGlhbGl6ZSgpIHtcbiAgICByZXR1cm4gX2luaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cbmZ1bmN0aW9uIF9pbml0aWFsaXplKCkge1xuICAgIF9pbml0aWFsaXplID0gX2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qKG9wdHMgPSB7fSkge1xuICAgICAgICAvLyBUaGlzIG1ha2VzIHN1cmUgdGhpcyBzcGVjaWZpYyBsaW5lcyBhcmUgcmVtb3ZlZCBpbiBwcm9kdWN0aW9uXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgd2VicGFja0hNUiA9IG9wdHMud2VicGFja0hNUjtcbiAgICAgICAgfVxuICAgICAgICBpbml0aWFsRGF0YSA9IEpTT04ucGFyc2UoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ19fTkVYVF9EQVRBX18nKS50ZXh0Q29udGVudCk7XG4gICAgICAgIHdpbmRvdy5fX05FWFRfREFUQV9fID0gaW5pdGlhbERhdGE7XG4gICAgICAgIGRlZmF1bHRMb2NhbGUgPSBpbml0aWFsRGF0YS5kZWZhdWx0TG9jYWxlO1xuICAgICAgICBjb25zdCBwcmVmaXggPSBpbml0aWFsRGF0YS5hc3NldFByZWZpeCB8fCAnJztcbiAgICAgICAgLy8gV2l0aCBkeW5hbWljIGFzc2V0UHJlZml4IGl0J3Mgbm8gbG9uZ2VyIHBvc3NpYmxlIHRvIHNldCBhc3NldFByZWZpeCBhdCB0aGUgYnVpbGQgdGltZVxuICAgICAgICAvLyBTbywgdGhpcyBpcyBob3cgd2UgZG8gaXQgaW4gdGhlIGNsaWVudCBzaWRlIGF0IHJ1bnRpbWVcbiAgICAgICAgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gPSBgJHtwcmVmaXh9L19uZXh0L2AgLy9lc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICAgIDtcbiAgICAgICAgLy8gSW5pdGlhbGl6ZSBuZXh0L2NvbmZpZyB3aXRoIHRoZSBlbnZpcm9ubWVudCBjb25maWd1cmF0aW9uXG4gICAgICAgICgwLCBfcnVudGltZUNvbmZpZykuc2V0Q29uZmlnKHtcbiAgICAgICAgICAgIHNlcnZlclJ1bnRpbWVDb25maWc6IHt9LFxuICAgICAgICAgICAgcHVibGljUnVudGltZUNvbmZpZzogaW5pdGlhbERhdGEucnVudGltZUNvbmZpZyB8fCB7fVxuICAgICAgICB9KTtcbiAgICAgICAgYXNQYXRoID0gKDAsIF91dGlscykuZ2V0VVJMKCk7XG4gICAgICAgIC8vIG1ha2Ugc3VyZSBub3QgdG8gYXR0ZW1wdCBzdHJpcHBpbmcgYmFzZVBhdGggZm9yIDQwNHNcbiAgICAgICAgaWYgKCgwLCBfaGFzQmFzZVBhdGgpLmhhc0Jhc2VQYXRoKGFzUGF0aCkpIHtcbiAgICAgICAgICAgIGFzUGF0aCA9ICgwLCBfcmVtb3ZlQmFzZVBhdGgpLnJlbW92ZUJhc2VQYXRoKGFzUGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9JMThOX1NVUFBPUlQpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgbm9ybWFsaXplTG9jYWxlUGF0aCAgfSA9IHJlcXVpcmUoJy4uL3NoYXJlZC9saWIvaTE4bi9ub3JtYWxpemUtbG9jYWxlLXBhdGgnKTtcbiAgICAgICAgICAgIGNvbnN0IHsgZGV0ZWN0RG9tYWluTG9jYWxlICB9ID0gcmVxdWlyZSgnLi4vc2hhcmVkL2xpYi9pMThuL2RldGVjdC1kb21haW4tbG9jYWxlJyk7XG4gICAgICAgICAgICBjb25zdCB7IHBhcnNlUmVsYXRpdmVVcmwgIH0gPSByZXF1aXJlKCcuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9wYXJzZS1yZWxhdGl2ZS11cmwnKTtcbiAgICAgICAgICAgIGNvbnN0IHsgZm9ybWF0VXJsICB9ID0gcmVxdWlyZSgnLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvZm9ybWF0LXVybCcpO1xuICAgICAgICAgICAgaWYgKGluaXRpYWxEYXRhLmxvY2FsZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWRBcyA9IHBhcnNlUmVsYXRpdmVVcmwoYXNQYXRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGVQYXRoUmVzdWx0ID0gbm9ybWFsaXplTG9jYWxlUGF0aChwYXJzZWRBcy5wYXRobmFtZSwgaW5pdGlhbERhdGEubG9jYWxlcyk7XG4gICAgICAgICAgICAgICAgaWYgKGxvY2FsZVBhdGhSZXN1bHQuZGV0ZWN0ZWRMb2NhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkQXMucGF0aG5hbWUgPSBsb2NhbGVQYXRoUmVzdWx0LnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICAgICBhc1BhdGggPSBmb3JtYXRVcmwocGFyc2VkQXMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGRlcml2ZSB0aGUgZGVmYXVsdCBsb2NhbGUgaWYgaXQgd2Fzbid0IGRldGVjdGVkIGluIHRoZSBhc1BhdGhcbiAgICAgICAgICAgICAgICAgICAgLy8gc2luY2Ugd2UgZG9uJ3QgcHJlcmVuZGVyIHN0YXRpYyBwYWdlcyB3aXRoIGFsbCBwb3NzaWJsZSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIC8vIGxvY2FsZXNcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdExvY2FsZSA9IGluaXRpYWxEYXRhLmxvY2FsZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gYXR0ZW1wdCBkZXRlY3RpbmcgZGVmYXVsdCBsb2NhbGUgYmFzZWQgb24gaG9zdG5hbWVcbiAgICAgICAgICAgICAgICBjb25zdCBkZXRlY3RlZERvbWFpbiA9IGRldGVjdERvbWFpbkxvY2FsZShwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9ET01BSU5TLCB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUpO1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IGludmVzdGlnYXRlIGlmIGRlZmF1bHRMb2NhbGUgbmVlZHMgdG8gYmUgcG9wdWxhdGVkIGFmdGVyXG4gICAgICAgICAgICAgICAgLy8gaHlkcmF0aW9uIHRvIHByZXZlbnQgbWlzbWF0Y2hlZCByZW5kZXJzXG4gICAgICAgICAgICAgICAgaWYgKGRldGVjdGVkRG9tYWluKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRMb2NhbGUgPSBkZXRlY3RlZERvbWFpbi5kZWZhdWx0TG9jYWxlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5pdGlhbERhdGEuc2NyaXB0TG9hZGVyKSB7XG4gICAgICAgICAgICBjb25zdCB7IGluaXRTY3JpcHRMb2FkZXIgIH0gPSByZXF1aXJlKCcuL3NjcmlwdCcpO1xuICAgICAgICAgICAgaW5pdFNjcmlwdExvYWRlcihpbml0aWFsRGF0YS5zY3JpcHRMb2FkZXIpO1xuICAgICAgICB9XG4gICAgICAgIHBhZ2VMb2FkZXIgPSBuZXcgX3BhZ2VMb2FkZXIuZGVmYXVsdChpbml0aWFsRGF0YS5idWlsZElkLCBwcmVmaXgpO1xuICAgICAgICBjb25zdCByZWdpc3RlciA9IChbciwgZl0pPT5wYWdlTG9hZGVyLnJvdXRlTG9hZGVyLm9uRW50cnlwb2ludChyLCBmKTtcbiAgICAgICAgaWYgKHdpbmRvdy5fX05FWFRfUCkge1xuICAgICAgICAgICAgLy8gRGVmZXIgcGFnZSByZWdpc3RyYXRpb24gZm9yIGFub3RoZXIgdGljay4gVGhpcyB3aWxsIGluY3JlYXNlIHRoZSBvdmVyYWxsXG4gICAgICAgICAgICAvLyBsYXRlbmN5IGluIGh5ZHJhdGluZyB0aGUgcGFnZSwgYnV0IHJlZHVjZSB0aGUgdG90YWwgYmxvY2tpbmcgdGltZS5cbiAgICAgICAgICAgIHdpbmRvdy5fX05FWFRfUC5tYXAoKHApPT5zZXRUaW1lb3V0KCgpPT5yZWdpc3RlcihwKSwgMCkpO1xuICAgICAgICB9XG4gICAgICAgIHdpbmRvdy5fX05FWFRfUCA9IFtdO1xuICAgICAgICB3aW5kb3cuX19ORVhUX1AucHVzaCA9IHJlZ2lzdGVyO1xuICAgICAgICBoZWFkTWFuYWdlciA9ICgwLCBfaGVhZE1hbmFnZXIpLmRlZmF1bHQoKTtcbiAgICAgICAgaGVhZE1hbmFnZXIuZ2V0SXNTc3IgPSAoKT0+e1xuICAgICAgICAgICAgcmV0dXJuIHJvdXRlci5pc1NzcjtcbiAgICAgICAgfTtcbiAgICAgICAgYXBwRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdfX25leHQnKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFzc2V0UHJlZml4OiBwcmVmaXhcbiAgICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4gX2luaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cbmZ1bmN0aW9uIGh5ZHJhdGUob3B0cykge1xuICAgIHJldHVybiBfaHlkcmF0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuZnVuY3Rpb24gX2h5ZHJhdGUoKSB7XG4gICAgX2h5ZHJhdGUgPSBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbioob3B0cykge1xuICAgICAgICBsZXQgaW5pdGlhbEVyciA9IGluaXRpYWxEYXRhLmVycjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGFwcEVudHJ5cG9pbnQgPSB5aWVsZCBwYWdlTG9hZGVyLnJvdXRlTG9hZGVyLndoZW5FbnRyeXBvaW50KCcvX2FwcCcpO1xuICAgICAgICAgICAgaWYgKCdlcnJvcicgaW4gYXBwRW50cnlwb2ludCkge1xuICAgICAgICAgICAgICAgIHRocm93IGFwcEVudHJ5cG9pbnQuZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB7IGNvbXBvbmVudDogYXBwICwgZXhwb3J0czogbW9kICB9ID0gYXBwRW50cnlwb2ludDtcbiAgICAgICAgICAgIENhY2hlZEFwcCA9IGFwcDtcbiAgICAgICAgICAgIGlmIChtb2QgJiYgbW9kLnJlcG9ydFdlYlZpdGFscykge1xuICAgICAgICAgICAgICAgIG9uUGVyZkVudHJ5ID0gKHsgaWQgLCBuYW1lICwgc3RhcnRUaW1lICwgdmFsdWUgLCBkdXJhdGlvbiAsIGVudHJ5VHlwZSAsIGVudHJpZXMgIH0pPT57XG4gICAgICAgICAgICAgICAgICAgIC8vIENvbWJpbmVzIHRpbWVzdGFtcCB3aXRoIHJhbmRvbSBudW1iZXIgZm9yIHVuaXF1ZSBJRFxuICAgICAgICAgICAgICAgICAgICBjb25zdCB1bmlxdWVJRCA9IGAke0RhdGUubm93KCl9LSR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKDllMTIgLSAxKSkgKyAxZTEyfWA7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwZXJmU3RhcnRFbnRyeTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJpZXMgJiYgZW50cmllcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZTdGFydEVudHJ5ID0gZW50cmllc1swXS5zdGFydFRpbWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2ViVml0YWxzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGlkIHx8IHVuaXF1ZUlELFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZTogc3RhcnRUaW1lIHx8IHBlcmZTdGFydEVudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlID09IG51bGwgPyBkdXJhdGlvbiA6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGVudHJ5VHlwZSA9PT0gJ21hcmsnIHx8IGVudHJ5VHlwZSA9PT0gJ21lYXN1cmUnID8gJ2N1c3RvbScgOiAnd2ViLXZpdGFsJ1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBtb2QucmVwb3J0V2ViVml0YWxzKHdlYlZpdGFscyk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBhZ2VFbnRyeXBvaW50ID0gLy8gVGhlIGRldiBzZXJ2ZXIgZmFpbHMgdG8gc2VydmUgc2NyaXB0IGFzc2V0cyB3aGVuIHRoZXJlJ3MgYSBoeWRyYXRpb25cbiAgICAgICAgICAgIC8vIGVycm9yLCBzbyB3ZSBuZWVkIHRvIHNraXAgd2FpdGluZyBmb3IgdGhlIGVudHJ5cG9pbnQuXG4gICAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50JyAmJiBpbml0aWFsRGF0YS5lcnIgPyB7XG4gICAgICAgICAgICAgICAgZXJyb3I6IGluaXRpYWxEYXRhLmVyclxuICAgICAgICAgICAgfSA6IHlpZWxkIHBhZ2VMb2FkZXIucm91dGVMb2FkZXIud2hlbkVudHJ5cG9pbnQoaW5pdGlhbERhdGEucGFnZSk7XG4gICAgICAgICAgICBpZiAoJ2Vycm9yJyBpbiBwYWdlRW50cnlwb2ludCkge1xuICAgICAgICAgICAgICAgIHRocm93IHBhZ2VFbnRyeXBvaW50LmVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQ2FjaGVkQ29tcG9uZW50ID0gcGFnZUVudHJ5cG9pbnQuY29tcG9uZW50O1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGlzVmFsaWRFbGVtZW50VHlwZSAgfSA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9yZWFjdC1pcycpO1xuICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEVsZW1lbnRUeXBlKENhY2hlZENvbXBvbmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZGVmYXVsdCBleHBvcnQgaXMgbm90IGEgUmVhY3QgQ29tcG9uZW50IGluIHBhZ2U6IFwiJHtpbml0aWFsRGF0YS5wYWdlfVwiYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcjEpIHtcbiAgICAgICAgICAgIC8vIFRoaXMgY2F0Y2hlcyBlcnJvcnMgbGlrZSB0aHJvd2luZyBpbiB0aGUgdG9wIGxldmVsIG9mIGEgbW9kdWxlXG4gICAgICAgICAgICBpbml0aWFsRXJyID0gKDAsIF9pc0Vycm9yKS5nZXRQcm9wZXJFcnJvcihlcnJvcjEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgY29uc3QgeyBnZXRTZXJ2ZXJFcnJvciAsICB9ID0gcmVxdWlyZSgnbmV4dC9kaXN0L2NvbXBpbGVkL0BuZXh0L3JlYWN0LWRldi1vdmVybGF5L2Rpc3QvY2xpZW50Jyk7XG4gICAgICAgICAgICAvLyBTZXJ2ZXItc2lkZSBydW50aW1lIGVycm9ycyBuZWVkIHRvIGJlIHJlLXRocm93biBvbiB0aGUgY2xpZW50LXNpZGUgc29cbiAgICAgICAgICAgIC8vIHRoYXQgdGhlIG92ZXJsYXkgaXMgcmVuZGVyZWQuXG4gICAgICAgICAgICBpZiAoaW5pdGlhbEVycikge1xuICAgICAgICAgICAgICAgIGlmIChpbml0aWFsRXJyID09PSBpbml0aWFsRGF0YS5lcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHZW5lcmF0ZSBhIG5ldyBlcnJvciBvYmplY3QuIFdlIGB0aHJvd2AgaXQgYmVjYXVzZSBzb21lIGJyb3dzZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBzZXQgdGhlIGBzdGFja2Agd2hlbiB0aHJvd24sIGFuZCB3ZSB3YW50IHRvIGVuc3VyZSBvdXJzIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90IG92ZXJyaWRkZW4gd2hlbiB3ZSByZS10aHJvdyBpdCBiZWxvdy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoaW5pdGlhbEVyci5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvci5uYW1lID0gaW5pdGlhbEVyci5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Iuc3RhY2sgPSBpbml0aWFsRXJyLnN0YWNrO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZ2V0U2VydmVyRXJyb3IoZXJyb3IsIGluaXRpYWxFcnIuc291cmNlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgaW5pdGlhbEVycjtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh3aW5kb3cuX19ORVhUX1BSRUxPQURSRUFEWSkge1xuICAgICAgICAgICAgeWllbGQgd2luZG93Ll9fTkVYVF9QUkVMT0FEUkVBRFkoaW5pdGlhbERhdGEuZHluYW1pY0lkcyk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0cy5yb3V0ZXIgPSByb3V0ZXIgPSAoMCwgX3JvdXRlcikuY3JlYXRlUm91dGVyKGluaXRpYWxEYXRhLnBhZ2UsIGluaXRpYWxEYXRhLnF1ZXJ5LCBhc1BhdGgsIHtcbiAgICAgICAgICAgIGluaXRpYWxQcm9wczogaW5pdGlhbERhdGEucHJvcHMsXG4gICAgICAgICAgICBwYWdlTG9hZGVyLFxuICAgICAgICAgICAgQXBwOiBDYWNoZWRBcHAsXG4gICAgICAgICAgICBDb21wb25lbnQ6IENhY2hlZENvbXBvbmVudCxcbiAgICAgICAgICAgIHdyYXBBcHAsXG4gICAgICAgICAgICBlcnI6IGluaXRpYWxFcnIsXG4gICAgICAgICAgICBpc0ZhbGxiYWNrOiBCb29sZWFuKGluaXRpYWxEYXRhLmlzRmFsbGJhY2spLFxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uOiAoaW5mbywgQXBwLCBzY3JvbGwpPT5yZW5kZXIoT2JqZWN0LmFzc2lnbih7fSwgaW5mbywge1xuICAgICAgICAgICAgICAgICAgICBBcHAsXG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGxvY2FsZTogaW5pdGlhbERhdGEubG9jYWxlLFxuICAgICAgICAgICAgbG9jYWxlczogaW5pdGlhbERhdGEubG9jYWxlcyxcbiAgICAgICAgICAgIGRlZmF1bHRMb2NhbGUsXG4gICAgICAgICAgICBkb21haW5Mb2NhbGVzOiBpbml0aWFsRGF0YS5kb21haW5Mb2NhbGVzLFxuICAgICAgICAgICAgaXNQcmV2aWV3OiBpbml0aWFsRGF0YS5pc1ByZXZpZXcsXG4gICAgICAgICAgICBpc1JzYzogaW5pdGlhbERhdGEucnNjXG4gICAgICAgIH0pO1xuICAgICAgICBpbml0aWFsTWF0Y2hlc01pZGRsZXdhcmUgPSB5aWVsZCByb3V0ZXIuX2luaXRpYWxNYXRjaGVzTWlkZGxld2FyZVByb21pc2U7XG4gICAgICAgIGNvbnN0IHJlbmRlckN0eCA9IHtcbiAgICAgICAgICAgIEFwcDogQ2FjaGVkQXBwLFxuICAgICAgICAgICAgaW5pdGlhbDogdHJ1ZSxcbiAgICAgICAgICAgIENvbXBvbmVudDogQ2FjaGVkQ29tcG9uZW50LFxuICAgICAgICAgICAgcHJvcHM6IGluaXRpYWxEYXRhLnByb3BzLFxuICAgICAgICAgICAgZXJyOiBpbml0aWFsRXJyXG4gICAgICAgIH07XG4gICAgICAgIGlmIChvcHRzID09IG51bGwgPyB2b2lkIDAgOiBvcHRzLmJlZm9yZVJlbmRlcikge1xuICAgICAgICAgICAgeWllbGQgb3B0cy5iZWZvcmVSZW5kZXIoKTtcbiAgICAgICAgfVxuICAgICAgICByZW5kZXIocmVuZGVyQ3R4KTtcbiAgICB9KTtcbiAgICByZXR1cm4gX2h5ZHJhdGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cbmZ1bmN0aW9uIHJlbmRlcihyZW5kZXJpbmdQcm9wcykge1xuICAgIHJldHVybiBfcmVuZGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5mdW5jdGlvbiBfcmVuZGVyKCkge1xuICAgIF9yZW5kZXIgPSBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbioocmVuZGVyaW5nUHJvcHMpIHtcbiAgICAgICAgaWYgKHJlbmRlcmluZ1Byb3BzLmVycikge1xuICAgICAgICAgICAgeWllbGQgcmVuZGVyRXJyb3IocmVuZGVyaW5nUHJvcHMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB5aWVsZCBkb1JlbmRlcihyZW5kZXJpbmdQcm9wcyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc3QgcmVuZGVyRXJyID0gKDAsIF9pc0Vycm9yKS5nZXRQcm9wZXJFcnJvcihlcnIpO1xuICAgICAgICAgICAgLy8gYnViYmxlIHVwIGNhbmNlbGF0aW9uIGVycm9yc1xuICAgICAgICAgICAgaWYgKHJlbmRlckVyci5jYW5jZWxsZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyByZW5kZXJFcnI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgICAgICAgICAvLyBFbnN1cmUgdGhpcyBlcnJvciBpcyBkaXNwbGF5ZWQgaW4gdGhlIG92ZXJsYXkgaW4gZGV2ZWxvcG1lbnRcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICAgICAgICAgIHRocm93IHJlbmRlckVycjtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHlpZWxkIHJlbmRlckVycm9yKF9leHRlbmRzKHt9LCByZW5kZXJpbmdQcm9wcywge1xuICAgICAgICAgICAgICAgIGVycjogcmVuZGVyRXJyXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gX3JlbmRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuLy8gVGhpcyBtZXRob2QgaGFuZGxlcyBhbGwgcnVudGltZSBhbmQgZGVidWcgZXJyb3JzLlxuLy8gNDA0IGFuZCA1MDAgZXJyb3JzIGFyZSBzcGVjaWFsIGtpbmQgb2YgZXJyb3JzXG4vLyBhbmQgdGhleSBhcmUgc3RpbGwgaGFuZGxlIHZpYSB0aGUgbWFpbiByZW5kZXIgbWV0aG9kLlxuZnVuY3Rpb24gcmVuZGVyRXJyb3IocmVuZGVyRXJyb3JQcm9wcykge1xuICAgIGNvbnN0IHsgQXBwICwgZXJyICB9ID0gcmVuZGVyRXJyb3JQcm9wcztcbiAgICAvLyBJbiBkZXZlbG9wbWVudCBydW50aW1lIGVycm9ycyBhcmUgY2F1Z2h0IGJ5IG91ciBvdmVybGF5XG4gICAgLy8gSW4gcHJvZHVjdGlvbiB3ZSBjYXRjaCBydW50aW1lIGVycm9ycyB1c2luZyBjb21wb25lbnREaWRDYXRjaCB3aGljaCB3aWxsIHRyaWdnZXIgcmVuZGVyRXJyb3JcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAvLyBBIE5leHQuanMgcmVuZGVyaW5nIHJ1bnRpbWUgZXJyb3IgaXMgYWx3YXlzIHVucmVjb3ZlcmFibGVcbiAgICAgICAgLy8gRklYTUU6IGxldCdzIG1ha2UgdGhpcyByZWNvdmVyYWJsZSAoZXJyb3IgaW4gR0lQIGNsaWVudC10cmFuc2l0aW9uKVxuICAgICAgICB3ZWJwYWNrSE1SLm9uVW5yZWNvdmVyYWJsZUVycm9yKCk7XG4gICAgICAgIC8vIFdlIG5lZWQgdG8gcmVuZGVyIGFuIGVtcHR5IDxBcHA+IHNvIHRoYXQgdGhlIGA8UmVhY3REZXZPdmVybGF5PmAgY2FuXG4gICAgICAgIC8vIHJlbmRlciBpdHNlbGYuXG4gICAgICAgIHJldHVybiBkb1JlbmRlcih7XG4gICAgICAgICAgICBBcHA6ICgpPT5udWxsLFxuICAgICAgICAgICAgcHJvcHM6IHt9LFxuICAgICAgICAgICAgQ29tcG9uZW50OiAoKT0+bnVsbCxcbiAgICAgICAgICAgIHN0eWxlU2hlZXRzOiBbXVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gTWFrZSBzdXJlIHdlIGxvZyB0aGUgZXJyb3IgdG8gdGhlIGNvbnNvbGUsIG90aGVyd2lzZSB1c2VycyBjYW4ndCB0cmFjayBkb3duIGlzc3Vlcy5cbiAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgY29uc29sZS5lcnJvcihgQSBjbGllbnQtc2lkZSBleGNlcHRpb24gaGFzIG9jY3VycmVkLCBzZWUgaGVyZSBmb3IgbW9yZSBpbmZvOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9jbGllbnQtc2lkZS1leGNlcHRpb24tb2NjdXJyZWRgKTtcbiAgICByZXR1cm4gcGFnZUxvYWRlci5sb2FkUGFnZSgnL19lcnJvcicpLnRoZW4oKHsgcGFnZTogRXJyb3JDb21wb25lbnQgLCBzdHlsZVNoZWV0cyAgfSk9PntcbiAgICAgICAgcmV0dXJuIChsYXN0QXBwUHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IGxhc3RBcHBQcm9wcy5Db21wb25lbnQpID09PSBFcnJvckNvbXBvbmVudCA/IGltcG9ydCgnLi4vcGFnZXMvX2Vycm9yJykudGhlbigobSk9Pih7XG4gICAgICAgICAgICAgICAgRXJyb3JDb21wb25lbnQ6IG0uZGVmYXVsdCxcbiAgICAgICAgICAgICAgICBzdHlsZVNoZWV0czogW11cbiAgICAgICAgICAgIH0pKSA6IHtcbiAgICAgICAgICAgIEVycm9yQ29tcG9uZW50LFxuICAgICAgICAgICAgc3R5bGVTaGVldHNcbiAgICAgICAgfTtcbiAgICB9KS50aGVuKCh7IEVycm9yQ29tcG9uZW50ICwgc3R5bGVTaGVldHMgIH0pPT57XG4gICAgICAgIHZhciByZWY7XG4gICAgICAgIC8vIEluIHByb2R1Y3Rpb24gd2UgZG8gYSBub3JtYWwgcmVuZGVyIHdpdGggdGhlIGBFcnJvckNvbXBvbmVudGAgYXMgY29tcG9uZW50LlxuICAgICAgICAvLyBJZiB3ZSd2ZSBnb3R0ZW4gaGVyZSB1cG9uIGluaXRpYWwgcmVuZGVyLCB3ZSBjYW4gdXNlIHRoZSBwcm9wcyBmcm9tIHRoZSBzZXJ2ZXIuXG4gICAgICAgIC8vIE90aGVyd2lzZSwgd2UgbmVlZCB0byBjYWxsIGBnZXRJbml0aWFsUHJvcHNgIG9uIGBBcHBgIGJlZm9yZSBtb3VudGluZy5cbiAgICAgICAgY29uc3QgQXBwVHJlZSA9IHdyYXBBcHAoQXBwKTtcbiAgICAgICAgY29uc3QgYXBwQ3R4ID0ge1xuICAgICAgICAgICAgQ29tcG9uZW50OiBFcnJvckNvbXBvbmVudCxcbiAgICAgICAgICAgIEFwcFRyZWUsXG4gICAgICAgICAgICByb3V0ZXIsXG4gICAgICAgICAgICBjdHg6IHtcbiAgICAgICAgICAgICAgICBlcnIsXG4gICAgICAgICAgICAgICAgcGF0aG5hbWU6IGluaXRpYWxEYXRhLnBhZ2UsXG4gICAgICAgICAgICAgICAgcXVlcnk6IGluaXRpYWxEYXRhLnF1ZXJ5LFxuICAgICAgICAgICAgICAgIGFzUGF0aCxcbiAgICAgICAgICAgICAgICBBcHBUcmVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKChyZWYgPSByZW5kZXJFcnJvclByb3BzLnByb3BzKSA9PSBudWxsID8gdm9pZCAwIDogcmVmLmVycikgPyByZW5kZXJFcnJvclByb3BzLnByb3BzIDogKDAsIF91dGlscykubG9hZEdldEluaXRpYWxQcm9wcyhBcHAsIGFwcEN0eCkpLnRoZW4oKGluaXRQcm9wcyk9PmRvUmVuZGVyKF9leHRlbmRzKHt9LCByZW5kZXJFcnJvclByb3BzLCB7XG4gICAgICAgICAgICAgICAgZXJyLFxuICAgICAgICAgICAgICAgIENvbXBvbmVudDogRXJyb3JDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgc3R5bGVTaGVldHMsXG4gICAgICAgICAgICAgICAgcHJvcHM6IGluaXRQcm9wc1xuICAgICAgICAgICAgfSkpKTtcbiAgICB9KTtcbn1cbmxldCByZWFjdFJvb3QgPSBudWxsO1xuLy8gT24gaW5pdGlhbCByZW5kZXIgYSBoeWRyYXRlIHNob3VsZCBhbHdheXMgaGFwcGVuXG5sZXQgc2hvdWxkSHlkcmF0ZSA9IHRydWU7XG5mdW5jdGlvbiByZW5kZXJSZWFjdEVsZW1lbnQoZG9tRWwsIGZuKSB7XG4gICAgLy8gbWFyayBzdGFydCBvZiBoeWRyYXRlL3JlbmRlclxuICAgIGlmIChfdXRpbHMuU1QpIHtcbiAgICAgICAgcGVyZm9ybWFuY2UubWFyaygnYmVmb3JlUmVuZGVyJyk7XG4gICAgfVxuICAgIGNvbnN0IHJlYWN0RWwgPSBmbihzaG91bGRIeWRyYXRlID8gbWFya0h5ZHJhdGVDb21wbGV0ZSA6IG1hcmtSZW5kZXJDb21wbGV0ZSk7XG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9SRUFDVF9ST09UKSB7XG4gICAgICAgIGlmICghcmVhY3RSb290KSB7XG4gICAgICAgICAgICAvLyBVbmxpa2Ugd2l0aCBjcmVhdGVSb290LCB5b3UgZG9uJ3QgbmVlZCBhIHNlcGFyYXRlIHJvb3QucmVuZGVyKCkgY2FsbCBoZXJlXG4gICAgICAgICAgICByZWFjdFJvb3QgPSBSZWFjdERPTS5oeWRyYXRlUm9vdChkb21FbCwgcmVhY3RFbCk7XG4gICAgICAgICAgICAvLyBUT0RPOiBSZW1vdmUgc2hvdWxkSHlkcmF0ZSB2YXJpYWJsZSB3aGVuIFJlYWN0IDE4IGlzIHN0YWJsZSBhcyBpdCBjYW4gZGVwZW5kIG9uIGByZWFjdFJvb3RgIGV4aXN0aW5nXG4gICAgICAgICAgICBzaG91bGRIeWRyYXRlID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBzdGFydFRyYW5zaXRpb24gPSBfcmVhY3QuZGVmYXVsdC5zdGFydFRyYW5zaXRpb247XG4gICAgICAgICAgICBzdGFydFRyYW5zaXRpb24oKCk9PntcbiAgICAgICAgICAgICAgICByZWFjdFJvb3QucmVuZGVyKHJlYWN0RWwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBUaGUgY2hlY2sgZm9yIGAuaHlkcmF0ZWAgaXMgdGhlcmUgdG8gc3VwcG9ydCBSZWFjdCBhbHRlcm5hdGl2ZXMgbGlrZSBwcmVhY3RcbiAgICAgICAgaWYgKHNob3VsZEh5ZHJhdGUpIHtcbiAgICAgICAgICAgIFJlYWN0RE9NLmh5ZHJhdGUocmVhY3RFbCwgZG9tRWwpO1xuICAgICAgICAgICAgc2hvdWxkSHlkcmF0ZSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgUmVhY3RET00ucmVuZGVyKHJlYWN0RWwsIGRvbUVsKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIG1hcmtIeWRyYXRlQ29tcGxldGUoKSB7XG4gICAgaWYgKCFfdXRpbHMuU1QpIHJldHVybjtcbiAgICBwZXJmb3JtYW5jZS5tYXJrKCdhZnRlckh5ZHJhdGUnKSAvLyBtYXJrIGVuZCBvZiBoeWRyYXRpb25cbiAgICA7XG4gICAgcGVyZm9ybWFuY2UubWVhc3VyZSgnTmV4dC5qcy1iZWZvcmUtaHlkcmF0aW9uJywgJ25hdmlnYXRpb25TdGFydCcsICdiZWZvcmVSZW5kZXInKTtcbiAgICBwZXJmb3JtYW5jZS5tZWFzdXJlKCdOZXh0LmpzLWh5ZHJhdGlvbicsICdiZWZvcmVSZW5kZXInLCAnYWZ0ZXJIeWRyYXRlJyk7XG4gICAgaWYgKG9uUGVyZkVudHJ5KSB7XG4gICAgICAgIHBlcmZvcm1hbmNlLmdldEVudHJpZXNCeU5hbWUoJ05leHQuanMtaHlkcmF0aW9uJykuZm9yRWFjaChvblBlcmZFbnRyeSk7XG4gICAgfVxuICAgIGNsZWFyTWFya3MoKTtcbn1cbmZ1bmN0aW9uIG1hcmtSZW5kZXJDb21wbGV0ZSgpIHtcbiAgICBpZiAoIV91dGlscy5TVCkgcmV0dXJuO1xuICAgIHBlcmZvcm1hbmNlLm1hcmsoJ2FmdGVyUmVuZGVyJykgLy8gbWFyayBlbmQgb2YgcmVuZGVyXG4gICAgO1xuICAgIGNvbnN0IG5hdlN0YXJ0RW50cmllcyA9IHBlcmZvcm1hbmNlLmdldEVudHJpZXNCeU5hbWUoJ3JvdXRlQ2hhbmdlJywgJ21hcmsnKTtcbiAgICBpZiAoIW5hdlN0YXJ0RW50cmllcy5sZW5ndGgpIHJldHVybjtcbiAgICBwZXJmb3JtYW5jZS5tZWFzdXJlKCdOZXh0LmpzLXJvdXRlLWNoYW5nZS10by1yZW5kZXInLCBuYXZTdGFydEVudHJpZXNbMF0ubmFtZSwgJ2JlZm9yZVJlbmRlcicpO1xuICAgIHBlcmZvcm1hbmNlLm1lYXN1cmUoJ05leHQuanMtcmVuZGVyJywgJ2JlZm9yZVJlbmRlcicsICdhZnRlclJlbmRlcicpO1xuICAgIGlmIChvblBlcmZFbnRyeSkge1xuICAgICAgICBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lKCdOZXh0LmpzLXJlbmRlcicpLmZvckVhY2gob25QZXJmRW50cnkpO1xuICAgICAgICBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lKCdOZXh0LmpzLXJvdXRlLWNoYW5nZS10by1yZW5kZXInKS5mb3JFYWNoKG9uUGVyZkVudHJ5KTtcbiAgICB9XG4gICAgY2xlYXJNYXJrcygpO1xuICAgIFtcbiAgICAgICAgJ05leHQuanMtcm91dGUtY2hhbmdlLXRvLXJlbmRlcicsXG4gICAgICAgICdOZXh0LmpzLXJlbmRlcidcbiAgICBdLmZvckVhY2goKG1lYXN1cmUpPT5wZXJmb3JtYW5jZS5jbGVhck1lYXN1cmVzKG1lYXN1cmUpKTtcbn1cbmZ1bmN0aW9uIGNsZWFyTWFya3MoKSB7XG4gICAgW1xuICAgICAgICAnYmVmb3JlUmVuZGVyJyxcbiAgICAgICAgJ2FmdGVySHlkcmF0ZScsXG4gICAgICAgICdhZnRlclJlbmRlcicsXG4gICAgICAgICdyb3V0ZUNoYW5nZSdcbiAgICBdLmZvckVhY2goKG1hcmspPT5wZXJmb3JtYW5jZS5jbGVhck1hcmtzKG1hcmspKTtcbn1cbmZ1bmN0aW9uIEFwcENvbnRhaW5lcih7IGNoaWxkcmVuICB9KSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChDb250YWluZXIsIHtcbiAgICAgICAgZm46IChlcnJvcik9PnJlbmRlckVycm9yKHtcbiAgICAgICAgICAgICAgICBBcHA6IENhY2hlZEFwcCxcbiAgICAgICAgICAgICAgICBlcnI6IGVycm9yXG4gICAgICAgICAgICB9KS5jYXRjaCgoZXJyKT0+Y29uc29sZS5lcnJvcignRXJyb3IgcmVuZGVyaW5nIHBhZ2U6ICcsIGVycikpXG4gICAgfSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9yb3V0ZXJDb250ZXh0LlJvdXRlckNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgdmFsdWU6ICgwLCBfcm91dGVyKS5tYWtlUHVibGljUm91dGVySW5zdGFuY2Uocm91dGVyKVxuICAgIH0sIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfaGVhZE1hbmFnZXJDb250ZXh0LkhlYWRNYW5hZ2VyQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICB2YWx1ZTogaGVhZE1hbmFnZXJcbiAgICB9LCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX2ltYWdlQ29uZmlnQ29udGV4dC5JbWFnZUNvbmZpZ0NvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgdmFsdWU6IHByb2Nlc3MuZW52Ll9fTkVYVF9JTUFHRV9PUFRTXG4gICAgfSwgY2hpbGRyZW4pKSkpO1xufVxuZnVuY3Rpb24gcmVuZGVyQXBwKEFwcCwgYXBwUHJvcHMpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KEFwcCwgT2JqZWN0LmFzc2lnbih7fSwgYXBwUHJvcHMpKTtcbn1cbmNvbnN0IHdyYXBBcHAgPSAoQXBwKT0+KHdyYXBwZWRBcHBQcm9wcyk9PntcbiAgICAgICAgY29uc3QgYXBwUHJvcHMgPSBfZXh0ZW5kcyh7fSwgd3JhcHBlZEFwcFByb3BzLCB7XG4gICAgICAgICAgICBDb21wb25lbnQ6IENhY2hlZENvbXBvbmVudCxcbiAgICAgICAgICAgIGVycjogaW5pdGlhbERhdGEuZXJyLFxuICAgICAgICAgICAgcm91dGVyXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KEFwcENvbnRhaW5lciwgbnVsbCwgcmVuZGVyQXBwKEFwcCwgYXBwUHJvcHMpKTtcbiAgICB9O1xubGV0IFJTQ0NvbXBvbmVudDtcbmlmIChwcm9jZXNzLmVudi5fX05FWFRfUlNDKSB7XG4gICAgY29uc3QgZ2V0Q2FjaGVLZXkgPSAoKT0+e1xuICAgICAgICBjb25zdCB7IHBhdGhuYW1lICwgc2VhcmNoICB9ID0gbG9jYXRpb247XG4gICAgICAgIHJldHVybiBwYXRobmFtZSArIHNlYXJjaDtcbiAgICB9O1xuICAgIGNvbnN0IHsgY3JlYXRlRnJvbUZldGNoICwgY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtICwgIH0gPSByZXF1aXJlKCduZXh0L2Rpc3QvY29tcGlsZWQvcmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrJyk7XG4gICAgY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuICAgIGxldCBpbml0aWFsU2VydmVyRGF0YUJ1ZmZlciA9IHVuZGVmaW5lZDtcbiAgICBsZXQgaW5pdGlhbFNlcnZlckRhdGFXcml0ZXIgPSB1bmRlZmluZWQ7XG4gICAgbGV0IGluaXRpYWxTZXJ2ZXJEYXRhTG9hZGVkID0gZmFsc2U7XG4gICAgbGV0IGluaXRpYWxTZXJ2ZXJEYXRhRmx1c2hlZCA9IGZhbHNlO1xuICAgIGZ1bmN0aW9uIG5leHRTZXJ2ZXJEYXRhQ2FsbGJhY2soc2VnKSB7XG4gICAgICAgIGlmIChzZWdbMF0gPT09IDApIHtcbiAgICAgICAgICAgIGluaXRpYWxTZXJ2ZXJEYXRhQnVmZmVyID0gW107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWluaXRpYWxTZXJ2ZXJEYXRhQnVmZmVyKSB0aHJvdyBuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQgc2VydmVyIGRhdGE6IG1pc3NpbmcgYm9vdHN0cmFwIHNjcmlwdC4nKTtcbiAgICAgICAgICAgIGlmIChpbml0aWFsU2VydmVyRGF0YVdyaXRlcikge1xuICAgICAgICAgICAgICAgIGluaXRpYWxTZXJ2ZXJEYXRhV3JpdGVyLmVucXVldWUoZW5jb2Rlci5lbmNvZGUoc2VnWzJdKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGluaXRpYWxTZXJ2ZXJEYXRhQnVmZmVyLnB1c2goc2VnWzJdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBUaGVyZSBtaWdodCBiZSByYWNlIGNvbmRpdGlvbnMgYmV0d2VlbiBgbmV4dFNlcnZlckRhdGFSZWdpc3RlcldyaXRlcmAgYW5kXG4gICAgLy8gYERPTUNvbnRlbnRMb2FkZWRgLiBUaGUgZm9ybWVyIHdpbGwgYmUgY2FsbGVkIHdoZW4gUmVhY3Qgc3RhcnRzIHRvIGh5ZHJhdGVcbiAgICAvLyB0aGUgcm9vdCwgdGhlIGxhdHRlciB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBET00gaXMgZnVsbHkgbG9hZGVkLlxuICAgIC8vIEZvciBzdHJlYW1pbmcsIHRoZSBmb3JtZXIgaXMgY2FsbGVkIGZpcnN0IGR1ZSB0byBwYXJ0aWFsIGh5ZHJhdGlvbi5cbiAgICAvLyBGb3Igbm9uLXN0cmVhbWluZywgdGhlIGxhdHRlciBjYW4gYmUgY2FsbGVkIGZpcnN0LlxuICAgIC8vIEhlbmNlLCB3ZSB1c2UgdHdvIHZhcmlhYmxlcyBgaW5pdGlhbFNlcnZlckRhdGFMb2FkZWRgIGFuZFxuICAgIC8vIGBpbml0aWFsU2VydmVyRGF0YUZsdXNoZWRgIHRvIG1ha2Ugc3VyZSB0aGUgd3JpdGVyIHdpbGwgYmUgY2xvc2VkIGFuZFxuICAgIC8vIGBpbml0aWFsU2VydmVyRGF0YUJ1ZmZlcmAgd2lsbCBiZSBjbGVhcmVkIGluIHRoZSByaWdodCB0aW1lLlxuICAgIGZ1bmN0aW9uIG5leHRTZXJ2ZXJEYXRhUmVnaXN0ZXJXcml0ZXIoY3RyKSB7XG4gICAgICAgIGlmIChpbml0aWFsU2VydmVyRGF0YUJ1ZmZlcikge1xuICAgICAgICAgICAgaW5pdGlhbFNlcnZlckRhdGFCdWZmZXIuZm9yRWFjaCgodmFsKT0+e1xuICAgICAgICAgICAgICAgIGN0ci5lbnF1ZXVlKGVuY29kZXIuZW5jb2RlKHZhbCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoaW5pdGlhbFNlcnZlckRhdGFMb2FkZWQgJiYgIWluaXRpYWxTZXJ2ZXJEYXRhRmx1c2hlZCkge1xuICAgICAgICAgICAgICAgIGN0ci5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIGluaXRpYWxTZXJ2ZXJEYXRhRmx1c2hlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaW5pdGlhbFNlcnZlckRhdGFCdWZmZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaW5pdGlhbFNlcnZlckRhdGFXcml0ZXIgPSBjdHI7XG4gICAgfVxuICAgIC8vIFdoZW4gYERPTUNvbnRlbnRMb2FkZWRgLCB3ZSBjYW4gY2xvc2UgYWxsIHBlbmRpbmcgd3JpdGVycyB0byBmaW5pc2ggaHlkcmF0aW9uLlxuICAgIGNvbnN0IERPTUNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKGluaXRpYWxTZXJ2ZXJEYXRhV3JpdGVyICYmICFpbml0aWFsU2VydmVyRGF0YUZsdXNoZWQpIHtcbiAgICAgICAgICAgIGluaXRpYWxTZXJ2ZXJEYXRhV3JpdGVyLmNsb3NlKCk7XG4gICAgICAgICAgICBpbml0aWFsU2VydmVyRGF0YUZsdXNoZWQgPSB0cnVlO1xuICAgICAgICAgICAgaW5pdGlhbFNlcnZlckRhdGFCdWZmZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaW5pdGlhbFNlcnZlckRhdGFMb2FkZWQgPSB0cnVlO1xuICAgIH07XG4gICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSBET00gaXMgYWxyZWFkeSBsb2FkZWQuXG4gICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJykge1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgRE9NQ29udGVudExvYWRlZCwgZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIERPTUNvbnRlbnRMb2FkZWQoKTtcbiAgICB9XG4gICAgY29uc3QgbmV4dFNlcnZlckRhdGFMb2FkaW5nR2xvYmFsID0gc2VsZi5fX25leHRfcyA9IHNlbGYuX19uZXh0X3MgfHwgW107XG4gICAgbmV4dFNlcnZlckRhdGFMb2FkaW5nR2xvYmFsLmZvckVhY2gobmV4dFNlcnZlckRhdGFDYWxsYmFjayk7XG4gICAgbmV4dFNlcnZlckRhdGFMb2FkaW5nR2xvYmFsLnB1c2ggPSBuZXh0U2VydmVyRGF0YUNhbGxiYWNrO1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVJlc3BvbnNlQ2FjaGUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwKCk7XG4gICAgfVxuICAgIGNvbnN0IHJzY0NhY2hlID0gY3JlYXRlUmVzcG9uc2VDYWNoZSgpO1xuICAgIGZ1bmN0aW9uIGZldGNoRmxpZ2h0KGhyZWYsIHByb3BzKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwoaHJlZiwgbG9jYXRpb24ub3JpZ2luKTtcbiAgICAgICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gdXJsLnNlYXJjaFBhcmFtcztcbiAgICAgICAgc2VhcmNoUGFyYW1zLmFwcGVuZCgnX19mbGlnaHRfXycsICcxJyk7XG4gICAgICAgIGlmIChwcm9wcykge1xuICAgICAgICAgICAgc2VhcmNoUGFyYW1zLmFwcGVuZCgnX19wcm9wc19fJywgSlNPTi5zdHJpbmdpZnkocHJvcHMpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmV0Y2godXJsLnRvU3RyaW5nKCkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiB1c2VTZXJ2ZXJSZXNwb25zZShjYWNoZUtleSwgc2VyaWFsaXplZCkge1xuICAgICAgICBsZXQgcmVzcG9uc2UgPSByc2NDYWNoZS5nZXQoY2FjaGVLZXkpO1xuICAgICAgICBpZiAocmVzcG9uc2UpIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgaWYgKGluaXRpYWxTZXJ2ZXJEYXRhQnVmZmVyKSB7XG4gICAgICAgICAgICBjb25zdCByZWFkYWJsZSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgICAgICAgICAgICAgc3RhcnQgKGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dFNlcnZlckRhdGFSZWdpc3RlcldyaXRlcihjb250cm9sbGVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlc3BvbnNlID0gY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtKHJlYWRhYmxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzZXJpYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVhZGFibGUgPSBuZXcgUmVhZGFibGVTdHJlYW0oe1xuICAgICAgICAgICAgICAgICAgICBzdGFydCAoY29udHJvbGxlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGVuY29kZXIuZW5jb2RlKHNlcmlhbGl6ZWQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtKHJlYWRhYmxlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBjcmVhdGVGcm9tRmV0Y2goZmV0Y2hGbGlnaHQoZ2V0Q2FjaGVLZXkoKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJzY0NhY2hlLnNldChjYWNoZUtleSwgcmVzcG9uc2UpO1xuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuICAgIGNvbnN0IFNlcnZlclJvb3QgPSAoeyBjYWNoZUtleSAsIHNlcmlhbGl6ZWQgIH0pPT57XG4gICAgICAgIF9yZWFjdC5kZWZhdWx0LnVzZUVmZmVjdCgoKT0+e1xuICAgICAgICAgICAgcnNjQ2FjaGUuZGVsZXRlKGNhY2hlS2V5KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gdXNlU2VydmVyUmVzcG9uc2UoY2FjaGVLZXksIHNlcmlhbGl6ZWQpO1xuICAgICAgICByZXR1cm4gcmVzcG9uc2UucmVhZFJvb3QoKTtcbiAgICB9O1xuICAgIFJTQ0NvbXBvbmVudCA9IChwcm9wcyk9PntcbiAgICAgICAgY29uc3QgY2FjaGVLZXkgPSBnZXRDYWNoZUtleSgpO1xuICAgICAgICBjb25zdCB7IF9fZmxpZ2h0X18gIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChTZXJ2ZXJSb290LCB7XG4gICAgICAgICAgICBjYWNoZUtleTogY2FjaGVLZXksXG4gICAgICAgICAgICBzZXJpYWxpemVkOiBfX2ZsaWdodF9fXG4gICAgICAgIH0pO1xuICAgIH07XG59XG5sZXQgbGFzdEFwcFByb3BzO1xuZnVuY3Rpb24gZG9SZW5kZXIoaW5wdXQpIHtcbiAgICBsZXQgeyBBcHAgLCBDb21wb25lbnQgLCBwcm9wcyAsIGVyciAsIF9fTl9SU0MgIH0gPSBpbnB1dDtcbiAgICBsZXQgc3R5bGVTaGVldHMgPSAnaW5pdGlhbCcgaW4gaW5wdXQgPyB1bmRlZmluZWQgOiBpbnB1dC5zdHlsZVNoZWV0cztcbiAgICBDb21wb25lbnQgPSBDb21wb25lbnQgfHwgbGFzdEFwcFByb3BzLkNvbXBvbmVudDtcbiAgICBwcm9wcyA9IHByb3BzIHx8IGxhc3RBcHBQcm9wcy5wcm9wcztcbiAgICBjb25zdCBpc1JTQyA9IHByb2Nlc3MuZW52Ll9fTkVYVF9SU0MgJiYgJ2luaXRpYWwnIGluIGlucHV0ID8gISFpbml0aWFsRGF0YS5yc2MgOiAhIV9fTl9SU0M7XG4gICAgY29uc3QgYXBwUHJvcHMgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgQ29tcG9uZW50OiBpc1JTQyA/IFJTQ0NvbXBvbmVudCA6IENvbXBvbmVudCxcbiAgICAgICAgZXJyLFxuICAgICAgICByb3V0ZXJcbiAgICB9KTtcbiAgICAvLyBsYXN0QXBwUHJvcHMgaGFzIHRvIGJlIHNldCBiZWZvcmUgUmVhY3REb20ucmVuZGVyIHRvIGFjY291bnQgZm9yIFJlYWN0RG9tIHRocm93aW5nIGFuIGVycm9yLlxuICAgIGxhc3RBcHBQcm9wcyA9IGFwcFByb3BzO1xuICAgIGxldCBjYW5jZWxlZCA9IGZhbHNlO1xuICAgIGxldCByZXNvbHZlUHJvbWlzZTtcbiAgICBjb25zdCByZW5kZXJQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk9PntcbiAgICAgICAgaWYgKGxhc3RSZW5kZXJSZWplY3QpIHtcbiAgICAgICAgICAgIGxhc3RSZW5kZXJSZWplY3QoKTtcbiAgICAgICAgfVxuICAgICAgICByZXNvbHZlUHJvbWlzZSA9ICgpPT57XG4gICAgICAgICAgICBsYXN0UmVuZGVyUmVqZWN0ID0gbnVsbDtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfTtcbiAgICAgICAgbGFzdFJlbmRlclJlamVjdCA9ICgpPT57XG4gICAgICAgICAgICBjYW5jZWxlZCA9IHRydWU7XG4gICAgICAgICAgICBsYXN0UmVuZGVyUmVqZWN0ID0gbnVsbDtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCdDYW5jZWwgcmVuZGVyaW5nIHJvdXRlJyk7XG4gICAgICAgICAgICBlcnJvci5jYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfTtcbiAgICB9KTtcbiAgICAvLyBUaGlzIGZ1bmN0aW9uIGhhcyBhIHJldHVybiB0eXBlIHRvIGVuc3VyZSBpdCBkb2Vzbid0IHN0YXJ0IHJldHVybmluZyBhXG4gICAgLy8gUHJvbWlzZS4gSXQgc2hvdWxkIHJlbWFpbiBzeW5jaHJvbm91cy5cbiAgICBmdW5jdGlvbiBvblN0YXJ0KCkge1xuICAgICAgICBpZiAoIXN0eWxlU2hlZXRzIHx8IC8vIFdlIHVzZSBgc3R5bGUtbG9hZGVyYCBpbiBkZXZlbG9wbWVudCwgc28gd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZ1xuICAgICAgICAvLyB1bmxlc3Mgd2UncmUgaW4gcHJvZHVjdGlvbjpcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdHlsZVRhZ3MgPSBsb29zZVRvQXJyYXkoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnc3R5bGVbZGF0YS1uLWhyZWZdJykpO1xuICAgICAgICBjb25zdCBjdXJyZW50SHJlZnMgPSBuZXcgU2V0KGN1cnJlbnRTdHlsZVRhZ3MubWFwKCh0YWcpPT50YWcuZ2V0QXR0cmlidXRlKCdkYXRhLW4taHJlZicpKSk7XG4gICAgICAgIGNvbnN0IG5vc2NyaXB0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignbm9zY3JpcHRbZGF0YS1uLWNzc10nKTtcbiAgICAgICAgY29uc3Qgbm9uY2UgPSBub3NjcmlwdCA9PSBudWxsID8gdm9pZCAwIDogbm9zY3JpcHQuZ2V0QXR0cmlidXRlKCdkYXRhLW4tY3NzJyk7XG4gICAgICAgIHN0eWxlU2hlZXRzLmZvckVhY2goKHsgaHJlZiAsIHRleHQgIH0pPT57XG4gICAgICAgICAgICBpZiAoIWN1cnJlbnRIcmVmcy5oYXMoaHJlZikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdHlsZVRhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgICAgICAgICAgICAgc3R5bGVUYWcuc2V0QXR0cmlidXRlKCdkYXRhLW4taHJlZicsIGhyZWYpO1xuICAgICAgICAgICAgICAgIHN0eWxlVGFnLnNldEF0dHJpYnV0ZSgnbWVkaWEnLCAneCcpO1xuICAgICAgICAgICAgICAgIGlmIChub25jZSkge1xuICAgICAgICAgICAgICAgICAgICBzdHlsZVRhZy5zZXRBdHRyaWJ1dGUoJ25vbmNlJywgbm9uY2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlVGFnKTtcbiAgICAgICAgICAgICAgICBzdHlsZVRhZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gb25IZWFkQ29tbWl0KCkge1xuICAgICAgICBpZiAoLy8gV2UgdXNlIGBzdHlsZS1sb2FkZXJgIGluIGRldmVsb3BtZW50LCBzbyB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nXG4gICAgICAgIC8vIHVubGVzcyB3ZSdyZSBpbiBwcm9kdWN0aW9uOlxuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nICYmIC8vIFdlIGNhbiBza2lwIHRoaXMgZHVyaW5nIGh5ZHJhdGlvbi4gUnVubmluZyBpdCB3b250IGNhdXNlIGFueSBoYXJtLCBidXRcbiAgICAgICAgLy8gd2UgbWF5IGFzIHdlbGwgc2F2ZSB0aGUgQ1BVIGN5Y2xlczpcbiAgICAgICAgc3R5bGVTaGVldHMgJiYgLy8gRW5zdXJlIHRoaXMgcmVuZGVyIHdhcyBub3QgY2FuY2VsZWRcbiAgICAgICAgIWNhbmNlbGVkKSB7XG4gICAgICAgICAgICBjb25zdCBkZXNpcmVkSHJlZnMgPSBuZXcgU2V0KHN0eWxlU2hlZXRzLm1hcCgocyk9PnMuaHJlZikpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFN0eWxlVGFncyA9IGxvb3NlVG9BcnJheShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdzdHlsZVtkYXRhLW4taHJlZl0nKSk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50SHJlZnMgPSBjdXJyZW50U3R5bGVUYWdzLm1hcCgodGFnKT0+dGFnLmdldEF0dHJpYnV0ZSgnZGF0YS1uLWhyZWYnKSk7XG4gICAgICAgICAgICAvLyBUb2dnbGUgYDxzdHlsZT5gIHRhZ3Mgb24gb3Igb2ZmIGRlcGVuZGluZyBvbiBpZiB0aGV5J3JlIG5lZWRlZDpcbiAgICAgICAgICAgIGZvcihsZXQgaWR4ID0gMDsgaWR4IDwgY3VycmVudEhyZWZzLmxlbmd0aDsgKytpZHgpe1xuICAgICAgICAgICAgICAgIGlmIChkZXNpcmVkSHJlZnMuaGFzKGN1cnJlbnRIcmVmc1tpZHhdKSkge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3R5bGVUYWdzW2lkeF0ucmVtb3ZlQXR0cmlidXRlKCdtZWRpYScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHlsZVRhZ3NbaWR4XS5zZXRBdHRyaWJ1dGUoJ21lZGlhJywgJ3gnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBSZW9yZGVyIHN0eWxlcyBpbnRvIGludGVuZGVkIG9yZGVyOlxuICAgICAgICAgICAgbGV0IHJlZmVyZW5jZU5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdub3NjcmlwdFtkYXRhLW4tY3NzXScpO1xuICAgICAgICAgICAgaWYgKC8vIFRoaXMgc2hvdWxkIGJlIGFuIGludmFyaWFudDpcbiAgICAgICAgICAgIHJlZmVyZW5jZU5vZGUpIHtcbiAgICAgICAgICAgICAgICBzdHlsZVNoZWV0cy5mb3JFYWNoKCh7IGhyZWYgIH0pPT57XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldFRhZyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYHN0eWxlW2RhdGEtbi1ocmVmPVwiJHtocmVmfVwiXWApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoLy8gVGhpcyBzaG91bGQgYmUgYW4gaW52YXJpYW50OlxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRUYWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZU5vZGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGFyZ2V0VGFnLCByZWZlcmVuY2VOb2RlLm5leHRTaWJsaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZU5vZGUgPSB0YXJnZXRUYWc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEZpbmFsbHksIGNsZWFuIHVwIHNlcnZlciByZW5kZXJlZCBzdHlsZXNoZWV0czpcbiAgICAgICAgICAgIGxvb3NlVG9BcnJheShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdsaW5rW2RhdGEtbi1wXScpKS5mb3JFYWNoKChlbCk9PntcbiAgICAgICAgICAgICAgICBlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnB1dC5zY3JvbGwpIHtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhpbnB1dC5zY3JvbGwueCwgaW5wdXQuc2Nyb2xsLnkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIG9uUm9vdENvbW1pdCgpIHtcbiAgICAgICAgcmVzb2x2ZVByb21pc2UoKTtcbiAgICB9XG4gICAgb25TdGFydCgpO1xuICAgIGNvbnN0IGVsZW0gPSAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX3JlYWN0LmRlZmF1bHQuRnJhZ21lbnQsIG51bGwsIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChIZWFkLCB7XG4gICAgICAgIGNhbGxiYWNrOiBvbkhlYWRDb21taXRcbiAgICB9KSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KEFwcENvbnRhaW5lciwgbnVsbCwgcmVuZGVyQXBwKEFwcCwgYXBwUHJvcHMpLCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX3BvcnRhbC5Qb3J0YWwsIHtcbiAgICAgICAgdHlwZTogXCJuZXh0LXJvdXRlLWFubm91bmNlclwiXG4gICAgfSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9yb3V0ZUFubm91bmNlci5Sb3V0ZUFubm91bmNlciwgbnVsbCkpKSk7XG4gICAgLy8gV2UgY2F0Y2ggcnVudGltZSBlcnJvcnMgdXNpbmcgY29tcG9uZW50RGlkQ2F0Y2ggd2hpY2ggd2lsbCB0cmlnZ2VyIHJlbmRlckVycm9yXG4gICAgcmVuZGVyUmVhY3RFbGVtZW50KGFwcEVsZW1lbnQsIChjYWxsYmFjayk9Pi8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChSb290LCB7XG4gICAgICAgICAgICBjYWxsYmFja3M6IFtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayxcbiAgICAgICAgICAgICAgICBvblJvb3RDb21taXRcbiAgICAgICAgICAgIF1cbiAgICAgICAgfSwgcHJvY2Vzcy5lbnYuX19ORVhUX1NUUklDVF9NT0RFID8gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9yZWFjdC5kZWZhdWx0LlN0cmljdE1vZGUsIG51bGwsIGVsZW0pIDogZWxlbSkpO1xuICAgIHJldHVybiByZW5kZXJQcm9taXNlO1xufVxuZnVuY3Rpb24gUm9vdCh7IGNhbGxiYWNrcyAsIGNoaWxkcmVuICB9KSB7XG4gICAgLy8gV2UgdXNlIGB1c2VMYXlvdXRFZmZlY3RgIHRvIGd1YXJhbnRlZSB0aGUgY2FsbGJhY2tzIGFyZSBleGVjdXRlZFxuICAgIC8vIGFzIHNvb24gYXMgUmVhY3QgZmx1c2hlcyB0aGUgdXBkYXRlXG4gICAgX3JlYWN0LmRlZmF1bHQudXNlTGF5b3V0RWZmZWN0KCgpPT5jYWxsYmFja3MuZm9yRWFjaCgoY2FsbGJhY2spPT5jYWxsYmFjaygpKSwgW1xuICAgICAgICBjYWxsYmFja3NcbiAgICBdKTtcbiAgICAvLyBXZSBzaG91bGQgYXNrIHRvIG1lYXN1cmUgdGhlIFdlYiBWaXRhbHMgYWZ0ZXIgcmVuZGVyaW5nIGNvbXBsZXRlcyBzbyB3ZVxuICAgIC8vIGRvbid0IGNhdXNlIGFueSBoeWRyYXRpb24gZGVsYXk6XG4gICAgX3JlYWN0LmRlZmF1bHQudXNlRWZmZWN0KCgpPT57XG4gICAgICAgICgwLCBfcGVyZm9ybWFuY2VSZWxheWVyKS5kZWZhdWx0KG9uUGVyZkVudHJ5KTtcbiAgICB9LCBbXSk7XG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9URVNUX01PREUpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgICAgIF9yZWFjdC5kZWZhdWx0LnVzZUVmZmVjdCgoKT0+e1xuICAgICAgICAgICAgd2luZG93Ll9fTkVYVF9IWURSQVRFRCA9IHRydWU7XG4gICAgICAgICAgICBpZiAod2luZG93Ll9fTkVYVF9IWURSQVRFRF9DQikge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5fX05FWFRfSFlEUkFURURfQ0IoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgW10pO1xuICAgIH1cbiAgICByZXR1cm4gY2hpbGRyZW47XG59XG4vLyBEdW1teSBjb21wb25lbnQgdGhhdCB3ZSByZW5kZXIgYXMgYSBjaGlsZCBvZiBSb290IHNvIHRoYXQgd2UgY2FuXG4vLyB0b2dnbGUgdGhlIGNvcnJlY3Qgc3R5bGVzIGJlZm9yZSB0aGUgcGFnZSBpcyByZW5kZXJlZC5cbmZ1bmN0aW9uIEhlYWQoeyBjYWxsYmFjayAgfSkge1xuICAgIC8vIFdlIHVzZSBgdXNlTGF5b3V0RWZmZWN0YCB0byBndWFyYW50ZWUgdGhlIGNhbGxiYWNrIGlzIGV4ZWN1dGVkXG4gICAgLy8gYXMgc29vbiBhcyBSZWFjdCBmbHVzaGVzIHRoZSB1cGRhdGUuXG4gICAgX3JlYWN0LmRlZmF1bHQudXNlTGF5b3V0RWZmZWN0KCgpPT5jYWxsYmFjaygpLCBbXG4gICAgICAgIGNhbGxiYWNrXG4gICAgXSk7XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImluaXRpYWxpemUiLCJoeWRyYXRlIiwiZW1pdHRlciIsInJvdXRlciIsInZlcnNpb24iLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9oZWFkTWFuYWdlckNvbnRleHQiLCJfbWl0dCIsIl9yb3V0ZXJDb250ZXh0IiwiX2lzRHluYW1pYyIsIl9xdWVyeXN0cmluZyIsIl9ydW50aW1lQ29uZmlnIiwiX3V0aWxzIiwiX3BvcnRhbCIsIl9oZWFkTWFuYWdlciIsIl9wYWdlTG9hZGVyIiwiX3BlcmZvcm1hbmNlUmVsYXllciIsIl9yb3V0ZUFubm91bmNlciIsIl9yb3V0ZXIiLCJfaXNFcnJvciIsIl9pbWFnZUNvbmZpZ0NvbnRleHQiLCJfcmVtb3ZlQmFzZVBhdGgiLCJfaGFzQmFzZVBhdGgiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJyZXNvbHZlIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJhcmciLCJpbmZvIiwiZXJyb3IiLCJkb25lIiwiUHJvbWlzZSIsInRoZW4iLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIl9leHRlbmRzIiwiYXNzaWduIiwidGFyZ2V0IiwiaSIsImxlbmd0aCIsInNvdXJjZSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiV2Vha01hcCIsImNhY2hlIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJkZXNjIiwic2V0IiwiUmVhY3RET00iLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1JFQUNUX1JPT1QiLCJsb29zZVRvQXJyYXkiLCJpbnB1dCIsInNsaWNlIiwiaW5pdGlhbERhdGEiLCJkZWZhdWx0TG9jYWxlIiwiYXNQYXRoIiwicGFnZUxvYWRlciIsImFwcEVsZW1lbnQiLCJoZWFkTWFuYWdlciIsImluaXRpYWxNYXRjaGVzTWlkZGxld2FyZSIsImxhc3RSZW5kZXJSZWplY3QiLCJ3ZWJwYWNrSE1SIiwiQ2FjaGVkQXBwIiwib25QZXJmRW50cnkiLCJDYWNoZWRDb21wb25lbnQiLCJfX25leHRfcmVxdWlyZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIkNvbnRhaW5lciIsImNvbXBvbmVudERpZENhdGNoIiwiY29tcG9uZW50RXJyIiwicHJvcHMiLCJjb21wb25lbnREaWRNb3VudCIsInNjcm9sbFRvSGFzaCIsImlzU3NyIiwicGFnZSIsImlzRmFsbGJhY2siLCJuZXh0RXhwb3J0IiwiaXNEeW5hbWljUm91dGUiLCJwYXRobmFtZSIsImxvY2F0aW9uIiwic2VhcmNoIiwiX19ORVhUX0hBU19SRVdSSVRFUyIsIl9fTl9TU0ciLCJyZXBsYWNlIiwiU3RyaW5nIiwidXJsUXVlcnlUb1NlYXJjaFBhcmFtcyIsInF1ZXJ5IiwiVVJMU2VhcmNoUGFyYW1zIiwiX2giLCJzaGFsbG93IiwiY2F0Y2giLCJjYW5jZWxsZWQiLCJjb21wb25lbnREaWRVcGRhdGUiLCJoYXNoIiwic3Vic3RyaW5nIiwiZWwiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwic2V0VGltZW91dCIsInNjcm9sbEludG9WaWV3IiwicmVuZGVyIiwiY2hpbGRyZW4iLCJSZWFjdERldk92ZXJsYXkiLCJjcmVhdGVFbGVtZW50IiwiQ29tcG9uZW50IiwiX2luaXRpYWxpemUiLCJvcHRzIiwicHJlZml4Iiwibm9ybWFsaXplTG9jYWxlUGF0aCIsImRldGVjdERvbWFpbkxvY2FsZSIsInBhcnNlUmVsYXRpdmVVcmwiLCJmb3JtYXRVcmwiLCJwYXJzZWRBcyIsImxvY2FsZVBhdGhSZXN1bHQiLCJkZXRlY3RlZERvbWFpbiIsImluaXRTY3JpcHRMb2FkZXIiLCJyZWdpc3RlciIsIkpTT04iLCJwYXJzZSIsInRleHRDb250ZW50Iiwid2luZG93IiwiX19ORVhUX0RBVEFfXyIsImFzc2V0UHJlZml4IiwiX193ZWJwYWNrX3B1YmxpY19wYXRoX18iLCJzZXRDb25maWciLCJzZXJ2ZXJSdW50aW1lQ29uZmlnIiwicHVibGljUnVudGltZUNvbmZpZyIsInJ1bnRpbWVDb25maWciLCJnZXRVUkwiLCJoYXNCYXNlUGF0aCIsInJlbW92ZUJhc2VQYXRoIiwiX19ORVhUX0kxOE5fU1VQUE9SVCIsImxvY2FsZXMiLCJkZXRlY3RlZExvY2FsZSIsImxvY2FsZSIsIl9fTkVYVF9JMThOX0RPTUFJTlMiLCJob3N0bmFtZSIsInNjcmlwdExvYWRlciIsImJ1aWxkSWQiLCJyIiwiZiIsInJvdXRlTG9hZGVyIiwib25FbnRyeXBvaW50IiwiX19ORVhUX1AiLCJtYXAiLCJwIiwicHVzaCIsImdldElzU3NyIiwiX2h5ZHJhdGUiLCJpbml0aWFsRXJyIiwiYXBwRW50cnlwb2ludCIsImFwcCIsIm1vZCIsInBhZ2VFbnRyeXBvaW50IiwiaXNWYWxpZEVsZW1lbnRUeXBlIiwiZ2V0U2VydmVyRXJyb3IiLCJyZW5kZXJDdHgiLCJ3aGVuRW50cnlwb2ludCIsImNvbXBvbmVudCIsInJlcG9ydFdlYlZpdGFscyIsImlkIiwibmFtZSIsInN0YXJ0VGltZSIsImR1cmF0aW9uIiwiZW50cnlUeXBlIiwiZW50cmllcyIsInVuaXF1ZUlEIiwiTWF0aCIsIkRhdGUiLCJub3ciLCJmbG9vciIsInJhbmRvbSIsInBlcmZTdGFydEVudHJ5Iiwid2ViVml0YWxzIiwibGFiZWwiLCJFcnJvciIsImdldFByb3BlckVycm9yIiwibWVzc2FnZSIsImUiLCJzdGFjayIsIl9fTkVYVF9QUkVMT0FEUkVBRFkiLCJkeW5hbWljSWRzIiwiY3JlYXRlUm91dGVyIiwiaW5pdGlhbFByb3BzIiwiQXBwIiwid3JhcEFwcCIsIkJvb2xlYW4iLCJzdWJzY3JpcHRpb24iLCJzY3JvbGwiLCJkb21haW5Mb2NhbGVzIiwiaXNQcmV2aWV3IiwiaXNSc2MiLCJyc2MiLCJfaW5pdGlhbE1hdGNoZXNNaWRkbGV3YXJlUHJvbWlzZSIsImluaXRpYWwiLCJiZWZvcmVSZW5kZXIiLCJyZW5kZXJpbmdQcm9wcyIsIl9yZW5kZXIiLCJyZW5kZXJFcnIiLCJyZW5kZXJFcnJvciIsImRvUmVuZGVyIiwicmVuZGVyRXJyb3JQcm9wcyIsIm9uVW5yZWNvdmVyYWJsZUVycm9yIiwic3R5bGVTaGVldHMiLCJjb25zb2xlIiwibG9hZFBhZ2UiLCJFcnJvckNvbXBvbmVudCIsImxhc3RBcHBQcm9wcyIsIm0iLCJyZWYiLCJBcHBUcmVlIiwiYXBwQ3R4IiwiY3R4IiwibG9hZEdldEluaXRpYWxQcm9wcyIsImluaXRQcm9wcyIsInJlYWN0Um9vdCIsInNob3VsZEh5ZHJhdGUiLCJyZW5kZXJSZWFjdEVsZW1lbnQiLCJkb21FbCIsIlNUIiwicGVyZm9ybWFuY2UiLCJtYXJrIiwicmVhY3RFbCIsIm1hcmtIeWRyYXRlQ29tcGxldGUiLCJtYXJrUmVuZGVyQ29tcGxldGUiLCJoeWRyYXRlUm9vdCIsInN0YXJ0VHJhbnNpdGlvbiIsIm1lYXN1cmUiLCJnZXRFbnRyaWVzQnlOYW1lIiwiZm9yRWFjaCIsImNsZWFyTWFya3MiLCJuYXZTdGFydEVudHJpZXMiLCJjbGVhck1lYXN1cmVzIiwiQXBwQ29udGFpbmVyIiwiUm91dGVyQ29udGV4dCIsIlByb3ZpZGVyIiwibWFrZVB1YmxpY1JvdXRlckluc3RhbmNlIiwiSGVhZE1hbmFnZXJDb250ZXh0IiwiSW1hZ2VDb25maWdDb250ZXh0IiwiX19ORVhUX0lNQUdFX09QVFMiLCJyZW5kZXJBcHAiLCJhcHBQcm9wcyIsIndyYXBwZWRBcHBQcm9wcyIsIlJTQ0NvbXBvbmVudCIsIl9fTkVYVF9SU0MiLCJuZXh0U2VydmVyRGF0YUNhbGxiYWNrIiwic2VnIiwiaW5pdGlhbFNlcnZlckRhdGFCdWZmZXIiLCJpbml0aWFsU2VydmVyRGF0YVdyaXRlciIsImVucXVldWUiLCJlbmNvZGVyIiwiZW5jb2RlIiwibmV4dFNlcnZlckRhdGFSZWdpc3RlcldyaXRlciIsImN0ciIsInZhbCIsImluaXRpYWxTZXJ2ZXJEYXRhTG9hZGVkIiwiaW5pdGlhbFNlcnZlckRhdGFGbHVzaGVkIiwiY2xvc2UiLCJjcmVhdGVSZXNwb25zZUNhY2hlIiwiTWFwIiwiZmV0Y2hGbGlnaHQiLCJocmVmIiwidXJsIiwiVVJMIiwib3JpZ2luIiwic2VhcmNoUGFyYW1zIiwiYXBwZW5kIiwic3RyaW5naWZ5IiwiZmV0Y2giLCJ0b1N0cmluZyIsInVzZVNlcnZlclJlc3BvbnNlIiwiY2FjaGVLZXkiLCJzZXJpYWxpemVkIiwicmVzcG9uc2UiLCJyc2NDYWNoZSIsInJlYWRhYmxlIiwiUmVhZGFibGVTdHJlYW0iLCJzdGFydCIsImNvbnRyb2xsZXIiLCJjcmVhdGVGcm9tUmVhZGFibGVTdHJlYW0iLCJjcmVhdGVGcm9tRmV0Y2giLCJnZXRDYWNoZUtleSIsIlRleHRFbmNvZGVyIiwiRE9NQ29udGVudExvYWRlZCIsInJlYWR5U3RhdGUiLCJhZGRFdmVudExpc3RlbmVyIiwibmV4dFNlcnZlckRhdGFMb2FkaW5nR2xvYmFsIiwiX19uZXh0X3MiLCJTZXJ2ZXJSb290IiwidXNlRWZmZWN0IiwiZGVsZXRlIiwicmVhZFJvb3QiLCJfX2ZsaWdodF9fIiwib25TdGFydCIsImN1cnJlbnRTdHlsZVRhZ3MiLCJxdWVyeVNlbGVjdG9yQWxsIiwiY3VycmVudEhyZWZzIiwiU2V0IiwidGFnIiwiZ2V0QXR0cmlidXRlIiwibm9zY3JpcHQiLCJxdWVyeVNlbGVjdG9yIiwibm9uY2UiLCJ0ZXh0Iiwic3R5bGVUYWciLCJzZXRBdHRyaWJ1dGUiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJjcmVhdGVUZXh0Tm9kZSIsIm9uSGVhZENvbW1pdCIsImNhbmNlbGVkIiwiZGVzaXJlZEhyZWZzIiwicyIsImlkeCIsInJlbW92ZUF0dHJpYnV0ZSIsInJlZmVyZW5jZU5vZGUiLCJ0YXJnZXRUYWciLCJwYXJlbnROb2RlIiwiaW5zZXJ0QmVmb3JlIiwibmV4dFNpYmxpbmciLCJyZW1vdmVDaGlsZCIsInNjcm9sbFRvIiwieCIsInkiLCJvblJvb3RDb21taXQiLCJyZXNvbHZlUHJvbWlzZSIsIl9fTl9SU0MiLCJpc1JTQyIsInJlbmRlclByb21pc2UiLCJlbGVtIiwiRnJhZ21lbnQiLCJIZWFkIiwiY2FsbGJhY2siLCJQb3J0YWwiLCJ0eXBlIiwiUm91dGVBbm5vdW5jZXIiLCJSb290IiwiY2FsbGJhY2tzIiwiX19ORVhUX1NUUklDVF9NT0RFIiwiU3RyaWN0TW9kZSIsInVzZUxheW91dEVmZmVjdCIsIl9fTkVYVF9URVNUX01PREUiLCJfX05FWFRfSFlEUkFURUQiLCJfX05FWFRfSFlEUkFURURfQ0IiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../node_modules/next/dist/client/index.js\n"));
+eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar _classCallCheck = (__webpack_require__(/*! @swc/helpers/lib/_class_call_check.js */ \"../node_modules/@swc/helpers/lib/_class_call_check.js\")[\"default\"]);\nvar _createClass = (__webpack_require__(/*! @swc/helpers/lib/_create_class.js */ \"../node_modules/@swc/helpers/lib/_create_class.js\")[\"default\"]);\nvar _inherits = (__webpack_require__(/*! @swc/helpers/lib/_inherits.js */ \"../node_modules/@swc/helpers/lib/_inherits.js\")[\"default\"]);\nvar _interopRequireDefault = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _interopRequireWildcard = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_wildcard.js */ \"../node_modules/@swc/helpers/lib/_interop_require_wildcard.js\")[\"default\"]);\nvar _slicedToArray = (__webpack_require__(/*! @swc/helpers/lib/_sliced_to_array.js */ \"../node_modules/@swc/helpers/lib/_sliced_to_array.js\")[\"default\"]);\nvar _createSuper = (__webpack_require__(/*! @swc/helpers/lib/_create_super.js */ \"../node_modules/@swc/helpers/lib/_create_super.js\")[\"default\"]);\nvar _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs = /*#__PURE__*/ _interopRequireDefault(__webpack_require__(/*! ../node_modules/next/dist/compiled/regenerator-runtime/runtime.js */ \"../node_modules/next/dist/compiled/regenerator-runtime/runtime.js\"));\nvar _s = $RefreshSig$(), _s1 = $RefreshSig$();\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.initialize = initialize;\nexports.hydrate = hydrate;\nexports.emitter = exports.router = exports.version = void 0;\n__webpack_require__(/*! ../build/polyfills/polyfill-module */ \"../node_modules/next/dist/build/polyfills/polyfill-module.js\");\nvar _react = _interopRequireDefault1(__webpack_require__(/*! react */ \"../node_modules/react/index.js\"));\nvar _headManagerContext = __webpack_require__(/*! ../shared/lib/head-manager-context */ \"../node_modules/next/dist/shared/lib/head-manager-context.js\");\nvar _mitt = _interopRequireDefault1(__webpack_require__(/*! ../shared/lib/mitt */ \"../node_modules/next/dist/shared/lib/mitt.js\"));\nvar _routerContext = __webpack_require__(/*! ../shared/lib/router-context */ \"../node_modules/next/dist/shared/lib/router-context.js\");\nvar _isDynamic = __webpack_require__(/*! ../shared/lib/router/utils/is-dynamic */ \"../node_modules/next/dist/shared/lib/router/utils/is-dynamic.js\");\nvar _querystring = __webpack_require__(/*! ../shared/lib/router/utils/querystring */ \"../node_modules/next/dist/shared/lib/router/utils/querystring.js\");\nvar _runtimeConfig = __webpack_require__(/*! ../shared/lib/runtime-config */ \"../node_modules/next/dist/shared/lib/runtime-config.js\");\nvar _utils = __webpack_require__(/*! ../shared/lib/utils */ \"../node_modules/next/dist/shared/lib/utils.js\");\nvar _portal = __webpack_require__(/*! ./portal */ \"../node_modules/next/dist/client/portal/index.js\");\nvar _headManager = _interopRequireDefault1(__webpack_require__(/*! ./head-manager */ \"../node_modules/next/dist/client/head-manager.js\"));\nvar _pageLoader = _interopRequireDefault1(__webpack_require__(/*! ./page-loader */ \"../node_modules/next/dist/client/page-loader.js\"));\nvar _performanceRelayer = _interopRequireDefault1(__webpack_require__(/*! ./performance-relayer */ \"../node_modules/next/dist/client/performance-relayer.js\"));\nvar _routeAnnouncer = __webpack_require__(/*! ./route-announcer */ \"../node_modules/next/dist/client/route-announcer.js\");\nvar _router = __webpack_require__(/*! ./router */ \"../node_modules/next/dist/client/router.js\");\nvar _isError = __webpack_require__(/*! ../lib/is-error */ \"../node_modules/next/dist/lib/is-error.js\");\nvar _imageConfigContext = __webpack_require__(/*! ../shared/lib/image-config-context */ \"../node_modules/next/dist/shared/lib/image-config-context.js\");\nvar _removeBasePath = __webpack_require__(/*! ./remove-base-path */ \"../node_modules/next/dist/client/remove-base-path.js\");\nvar _hasBasePath = __webpack_require__(/*! ./has-base-path */ \"../node_modules/next/dist/client/has-base-path.js\");\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var _$self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(_$self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _extends() {\n _extends = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _interopRequireDefault1(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n return cache;\n}\nfunction _interopRequireWildcard1(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache();\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nvar ReactDOM = false ? 0 : __webpack_require__(/*! react-dom */ \"../node_modules/react-dom/index.js\");\nvar version = \"12.2.3\";\nexports.version = version;\nvar router;\nexports.router = router;\nvar emitter = (0, _mitt).default();\nexports.emitter = emitter;\nvar looseToArray = function(input) {\n return [].slice.call(input);\n};\nvar initialData;\nvar defaultLocale = undefined;\nvar asPath;\nvar pageLoader;\nvar appElement;\nvar headManager;\nvar initialMatchesMiddleware = false;\nvar lastRenderReject;\nvar webpackHMR;\nvar CachedApp, onPerfEntry;\nvar CachedComponent;\nself.__next_require__ = __webpack_require__;\nvar Container = /*#__PURE__*/ function(_Component) {\n _inherits(Container, _Component);\n var _super = _createSuper(Container);\n function Container() {\n _classCallCheck(this, Container);\n return _super.apply(this, arguments);\n }\n _createClass(Container, [\n {\n key: \"componentDidCatch\",\n value: function componentDidCatch(componentErr, info) {\n this.props.fn(componentErr, info);\n }\n },\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.scrollToHash();\n // We need to replace the router state if:\n // - the page was (auto) exported and has a query string or search (hash)\n // - it was auto exported and is a dynamic route (to provide params)\n // - if it is a client-side skeleton (fallback render)\n // - if middleware matches the current page (may have rewrite params)\n // - if rewrites in next.config.js match (may have rewrite params)\n if (router.isSsr && // the asPath unexpectedly e.g. adding basePath when\n // it wasn't originally present\n initialData.page !== \"/404\" && initialData.page !== \"/_error\" && (initialData.isFallback || initialData.nextExport && ((0, _isDynamic).isDynamicRoute(router.pathname) || location.search || false || initialMatchesMiddleware) || initialData.props && initialData.props.__N_SSG && (location.search || false || initialMatchesMiddleware))) {\n // update query on mount for exported pages\n router.replace(router.pathname + \"?\" + String((0, _querystring).assign((0, _querystring).urlQueryToSearchParams(router.query), new URLSearchParams(location.search))), asPath, {\n // @ts-ignore\n // WARNING: `_h` is an internal option for handing Next.js\n // client-side hydration. Your app should _never_ use this property.\n // It may change at any time without notice.\n _h: 1,\n // Fallback pages must trigger the data fetch, so the transition is\n // not shallow.\n // Other pages (strictly updating query) happens shallowly, as data\n // requirements would already be present.\n shallow: !initialData.isFallback && !initialMatchesMiddleware\n }).catch(function(err) {\n if (!err.cancelled) throw err;\n });\n }\n }\n },\n {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.scrollToHash();\n }\n },\n {\n key: \"scrollToHash\",\n value: function scrollToHash() {\n var hash = location.hash;\n hash = hash && hash.substring(1);\n if (!hash) return;\n var el = document.getElementById(hash);\n if (!el) return;\n // If we call scrollIntoView() in here without a setTimeout\n // it won't scroll properly.\n setTimeout(function() {\n return el.scrollIntoView();\n }, 0);\n }\n },\n {\n key: \"render\",\n value: function render() {\n if (false) {} else {\n var ReactDevOverlay = (__webpack_require__(/*! next/dist/compiled/@next/react-dev-overlay/dist/client */ \"../node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js\").ReactDevOverlay);\n return /*#__PURE__*/ _react.default.createElement(ReactDevOverlay, null, this.props.children);\n }\n }\n }\n ]);\n return Container;\n}(_react.default.Component);\nfunction initialize() {\n return _initialize.apply(this, arguments);\n}\nfunction _initialize() {\n _initialize = _asyncToGenerator(_cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.mark(function _callee() {\n var opts, prefix, normalizeLocalePath, detectDomainLocale, parseRelativeUrl, formatUrl, parsedAs, localePathResult, detectedDomain, initScriptLoader, register, _args = arguments;\n return _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n opts = _args.length > 0 && _args[0] !== void 0 ? _args[0] : {};\n // This makes sure this specific lines are removed in production\n if (true) {\n webpackHMR = opts.webpackHMR;\n }\n initialData = JSON.parse(document.getElementById(\"__NEXT_DATA__\").textContent);\n window.__NEXT_DATA__ = initialData;\n defaultLocale = initialData.defaultLocale;\n prefix = initialData.assetPrefix || \"\";\n // With dynamic assetPrefix it's no longer possible to set assetPrefix at the build time\n // So, this is how we do it in the client side at runtime\n __webpack_require__.p = \"\".concat(prefix, \"/_next/\") //eslint-disable-line\n ;\n // Initialize next/config with the environment configuration\n (0, _runtimeConfig).setConfig({\n serverRuntimeConfig: {},\n publicRuntimeConfig: initialData.runtimeConfig || {}\n });\n asPath = (0, _utils).getURL();\n // make sure not to attempt stripping basePath for 404s\n if ((0, _hasBasePath).hasBasePath(asPath)) {\n asPath = (0, _removeBasePath).removeBasePath(asPath);\n }\n if (false) {}\n if (initialData.scriptLoader) {\n initScriptLoader = (__webpack_require__(/*! ./script */ \"../node_modules/next/dist/client/script.js\").initScriptLoader);\n initScriptLoader(initialData.scriptLoader);\n }\n pageLoader = new _pageLoader.default(initialData.buildId, prefix);\n register = function(param) {\n var _param = _slicedToArray(param, 2), r = _param[0], f = _param[1];\n return pageLoader.routeLoader.onEntrypoint(r, f);\n };\n if (window.__NEXT_P) {\n // Defer page registration for another tick. This will increase the overall\n // latency in hydrating the page, but reduce the total blocking time.\n window.__NEXT_P.map(function(p) {\n return setTimeout(function() {\n return register(p);\n }, 0);\n });\n }\n window.__NEXT_P = [];\n window.__NEXT_P.push = register;\n headManager = (0, _headManager).default();\n headManager.getIsSsr = function() {\n return router.isSsr;\n };\n appElement = document.getElementById(\"__next\");\n return _ctx.abrupt(\"return\", {\n assetPrefix: prefix\n });\n case 21:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee);\n }));\n return _initialize.apply(this, arguments);\n}\nfunction hydrate(opts) {\n return _hydrate.apply(this, arguments);\n}\nfunction _hydrate() {\n _hydrate = _asyncToGenerator(_cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.mark(function _callee(opts) {\n var initialErr, appEntrypoint, app, mod, pageEntrypoint, isValidElementType, getServerError, renderCtx;\n return _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n initialErr = initialData.err;\n _ctx.prev = 1;\n _ctx.next = 4;\n return pageLoader.routeLoader.whenEntrypoint(\"/_app\");\n case 4:\n appEntrypoint = _ctx.sent;\n if (!(\"error\" in appEntrypoint)) {\n _ctx.next = 7;\n break;\n }\n throw appEntrypoint.error;\n case 7:\n app = appEntrypoint.component, mod = appEntrypoint.exports;\n CachedApp = app;\n if (mod && mod.reportWebVitals) {\n onPerfEntry = function(param) {\n var id = param.id, name = param.name, startTime = param.startTime, value = param.value, duration = param.duration, entryType = param.entryType, entries = param.entries;\n // Combines timestamp with random number for unique ID\n var uniqueID = \"\".concat(Date.now(), \"-\").concat(Math.floor(Math.random() * (9e12 - 1)) + 1e12);\n var perfStartEntry;\n if (entries && entries.length) {\n perfStartEntry = entries[0].startTime;\n }\n var webVitals = {\n id: id || uniqueID,\n name: name,\n startTime: startTime || perfStartEntry,\n value: value == null ? duration : value,\n label: entryType === \"mark\" || entryType === \"measure\" ? \"custom\" : \"web-vital\"\n };\n mod.reportWebVitals(webVitals);\n };\n }\n if (// error, so we need to skip waiting for the entrypoint.\n !( true && initialData.err)) {\n _ctx.next = 14;\n break;\n }\n _ctx.t0 = {\n error: initialData.err\n };\n _ctx.next = 17;\n break;\n case 14:\n _ctx.next = 16;\n return pageLoader.routeLoader.whenEntrypoint(initialData.page);\n case 16:\n _ctx.t0 = _ctx.sent;\n case 17:\n pageEntrypoint = _ctx.t0;\n if (!(\"error\" in pageEntrypoint)) {\n _ctx.next = 20;\n break;\n }\n throw pageEntrypoint.error;\n case 20:\n CachedComponent = pageEntrypoint.component;\n if (false) {}\n isValidElementType = (__webpack_require__(/*! next/dist/compiled/react-is */ \"../node_modules/next/dist/compiled/react-is/index.js\").isValidElementType);\n if (isValidElementType(CachedComponent)) {\n _ctx.next = 25;\n break;\n }\n throw new Error('The default export is not a React Component in page: \"'.concat(initialData.page, '\"'));\n case 25:\n _ctx.next = 30;\n break;\n case 27:\n _ctx.prev = 27;\n _ctx.t1 = _ctx[\"catch\"](1);\n // This catches errors like throwing in the top level of a module\n initialErr = (0, _isError).getProperError(_ctx.t1);\n case 30:\n if (true) {\n getServerError = (__webpack_require__(/*! next/dist/compiled/@next/react-dev-overlay/dist/client */ \"../node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js\").getServerError);\n // Server-side runtime errors need to be re-thrown on the client-side so\n // that the overlay is rendered.\n if (initialErr) {\n if (initialErr === initialData.err) {\n setTimeout(function() {\n var error;\n try {\n // Generate a new error object. We `throw` it because some browsers\n // will set the `stack` when thrown, and we want to ensure ours is\n // not overridden when we re-throw it below.\n throw new Error(initialErr.message);\n } catch (e) {\n error = e;\n }\n error.name = initialErr.name;\n error.stack = initialErr.stack;\n throw getServerError(error, initialErr.source);\n });\n } else {\n setTimeout(function() {\n throw initialErr;\n });\n }\n }\n }\n if (!window.__NEXT_PRELOADREADY) {\n _ctx.next = 34;\n break;\n }\n _ctx.next = 34;\n return window.__NEXT_PRELOADREADY(initialData.dynamicIds);\n case 34:\n exports.router = router = (0, _router).createRouter(initialData.page, initialData.query, asPath, {\n initialProps: initialData.props,\n pageLoader: pageLoader,\n App: CachedApp,\n Component: CachedComponent,\n wrapApp: wrapApp,\n err: initialErr,\n isFallback: Boolean(initialData.isFallback),\n subscription: function(info, App, scroll) {\n return render(Object.assign({}, info, {\n App: App,\n scroll: scroll\n }));\n },\n locale: initialData.locale,\n locales: initialData.locales,\n defaultLocale: defaultLocale,\n domainLocales: initialData.domainLocales,\n isPreview: initialData.isPreview,\n isRsc: initialData.rsc\n });\n _ctx.next = 37;\n return router._initialMatchesMiddlewarePromise;\n case 37:\n initialMatchesMiddleware = _ctx.sent;\n renderCtx = {\n App: CachedApp,\n initial: true,\n Component: CachedComponent,\n props: initialData.props,\n err: initialErr\n };\n if (!(opts == null ? void 0 : opts.beforeRender)) {\n _ctx.next = 42;\n break;\n }\n _ctx.next = 42;\n return opts.beforeRender();\n case 42:\n render(renderCtx);\n case 43:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee, null, [\n [\n 1,\n 27\n ]\n ]);\n }));\n return _hydrate.apply(this, arguments);\n}\nfunction render(renderingProps) {\n return _render.apply(this, arguments);\n}\nfunction _render() {\n _render = _asyncToGenerator(_cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.mark(function _callee(renderingProps) {\n var renderErr;\n return _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n if (!renderingProps.err) {\n _ctx.next = 4;\n break;\n }\n _ctx.next = 3;\n return renderError(renderingProps);\n case 3:\n return _ctx.abrupt(\"return\");\n case 4:\n _ctx.prev = 4;\n _ctx.next = 7;\n return doRender(renderingProps);\n case 7:\n _ctx.next = 17;\n break;\n case 9:\n _ctx.prev = 9;\n _ctx.t0 = _ctx[\"catch\"](4);\n renderErr = (0, _isError).getProperError(_ctx.t0);\n if (!renderErr.cancelled) {\n _ctx.next = 14;\n break;\n }\n throw renderErr;\n case 14:\n if (true) {\n // Ensure this error is displayed in the overlay in development\n setTimeout(function() {\n throw renderErr;\n });\n }\n _ctx.next = 17;\n return renderError(_extends({}, renderingProps, {\n err: renderErr\n }));\n case 17:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee, null, [\n [\n 4,\n 9\n ]\n ]);\n }));\n return _render.apply(this, arguments);\n}\n// This method handles all runtime and debug errors.\n// 404 and 500 errors are special kind of errors\n// and they are still handle via the main render method.\nfunction renderError(renderErrorProps) {\n var App = renderErrorProps.App, err = renderErrorProps.err;\n // In development runtime errors are caught by our overlay\n // In production we catch runtime errors using componentDidCatch which will trigger renderError\n if (true) {\n // A Next.js rendering runtime error is always unrecoverable\n // FIXME: let's make this recoverable (error in GIP client-transition)\n webpackHMR.onUnrecoverableError();\n // We need to render an empty so that the `` can\n // render itself.\n return doRender({\n App: function() {\n return null;\n },\n props: {},\n Component: function() {\n return null;\n },\n styleSheets: []\n });\n }\n // Make sure we log the error to the console, otherwise users can't track down issues.\n console.error(err);\n console.error(\"A client-side exception has occurred, see here for more info: https://nextjs.org/docs/messages/client-side-exception-occurred\");\n return pageLoader.loadPage(\"/_error\").then(function(param) {\n var ErrorComponent = param.page, styleSheets = param.styleSheets;\n return (lastAppProps == null ? void 0 : lastAppProps.Component) === ErrorComponent ? Promise.resolve().then(function() {\n return /*#__PURE__*/ _interopRequireWildcard(__webpack_require__(/*! ../pages/_error */ \"../node_modules/next/dist/pages/_error.js\"));\n }).then(function(m) {\n return {\n ErrorComponent: m.default,\n styleSheets: []\n };\n }) : {\n ErrorComponent: ErrorComponent,\n styleSheets: styleSheets\n };\n }).then(function(param) {\n var ErrorComponent = param.ErrorComponent, styleSheets = param.styleSheets;\n var ref;\n // In production we do a normal render with the `ErrorComponent` as component.\n // If we've gotten here upon initial render, we can use the props from the server.\n // Otherwise, we need to call `getInitialProps` on `App` before mounting.\n var AppTree = wrapApp(App);\n var appCtx = {\n Component: ErrorComponent,\n AppTree: AppTree,\n router: router,\n ctx: {\n err: err,\n pathname: initialData.page,\n query: initialData.query,\n asPath: asPath,\n AppTree: AppTree\n }\n };\n return Promise.resolve(((ref = renderErrorProps.props) == null ? void 0 : ref.err) ? renderErrorProps.props : (0, _utils).loadGetInitialProps(App, appCtx)).then(function(initProps) {\n return doRender(_extends({}, renderErrorProps, {\n err: err,\n Component: ErrorComponent,\n styleSheets: styleSheets,\n props: initProps\n }));\n });\n });\n}\nvar reactRoot = null;\n// On initial render a hydrate should always happen\nvar shouldHydrate = true;\nfunction renderReactElement(domEl, fn) {\n // mark start of hydrate/render\n if (_utils.ST) {\n performance.mark(\"beforeRender\");\n }\n var reactEl = fn(shouldHydrate ? markHydrateComplete : markRenderComplete);\n if (false) { var startTransition; } else {\n // The check for `.hydrate` is there to support React alternatives like preact\n if (shouldHydrate) {\n ReactDOM.hydrate(reactEl, domEl);\n shouldHydrate = false;\n } else {\n ReactDOM.render(reactEl, domEl);\n }\n }\n}\nfunction markHydrateComplete() {\n if (!_utils.ST) return;\n performance.mark(\"afterHydrate\") // mark end of hydration\n ;\n performance.measure(\"Next.js-before-hydration\", \"navigationStart\", \"beforeRender\");\n performance.measure(\"Next.js-hydration\", \"beforeRender\", \"afterHydrate\");\n if (onPerfEntry) {\n performance.getEntriesByName(\"Next.js-hydration\").forEach(onPerfEntry);\n }\n clearMarks();\n}\nfunction markRenderComplete() {\n if (!_utils.ST) return;\n performance.mark(\"afterRender\") // mark end of render\n ;\n var navStartEntries = performance.getEntriesByName(\"routeChange\", \"mark\");\n if (!navStartEntries.length) return;\n performance.measure(\"Next.js-route-change-to-render\", navStartEntries[0].name, \"beforeRender\");\n performance.measure(\"Next.js-render\", \"beforeRender\", \"afterRender\");\n if (onPerfEntry) {\n performance.getEntriesByName(\"Next.js-render\").forEach(onPerfEntry);\n performance.getEntriesByName(\"Next.js-route-change-to-render\").forEach(onPerfEntry);\n }\n clearMarks();\n [\n \"Next.js-route-change-to-render\",\n \"Next.js-render\"\n ].forEach(function(measure) {\n return performance.clearMeasures(measure);\n });\n}\nfunction clearMarks() {\n [\n \"beforeRender\",\n \"afterHydrate\",\n \"afterRender\",\n \"routeChange\"\n ].forEach(function(mark) {\n return performance.clearMarks(mark);\n });\n}\nfunction AppContainer(param) {\n var children = param.children;\n return /*#__PURE__*/ _react.default.createElement(Container, {\n fn: function(error) {\n return renderError({\n App: CachedApp,\n err: error\n }).catch(function(err) {\n return console.error(\"Error rendering page: \", err);\n });\n }\n }, /*#__PURE__*/ _react.default.createElement(_routerContext.RouterContext.Provider, {\n value: (0, _router).makePublicRouterInstance(router)\n }, /*#__PURE__*/ _react.default.createElement(_headManagerContext.HeadManagerContext.Provider, {\n value: headManager\n }, /*#__PURE__*/ _react.default.createElement(_imageConfigContext.ImageConfigContext.Provider, {\n value: {\"deviceSizes\":[640,750,828,1080,1200,1920,2048,3840],\"imageSizes\":[16,32,48,64,96,128,256,384],\"path\":\"/_next/image\",\"loader\":\"default\",\"domains\":[],\"experimentalRemotePatterns\":[]}\n }, children))));\n}\n_c = AppContainer;\nfunction renderApp(App, appProps) {\n return /*#__PURE__*/ _react.default.createElement(App, Object.assign({}, appProps));\n}\nvar wrapApp = function(App) {\n return function(wrappedAppProps) {\n var appProps = _extends({}, wrappedAppProps, {\n Component: CachedComponent,\n err: initialData.err,\n router: router\n });\n return /*#__PURE__*/ _react.default.createElement(AppContainer, null, renderApp(App, appProps));\n };\n};\nvar RSCComponent;\nif (false) { var ServerRoot, rscCache, nextServerDataLoadingGlobal, DOMContentLoaded, initialServerDataFlushed, initialServerDataLoaded, initialServerDataWriter, initialServerDataBuffer, encoder, ref, createFromFetch, createFromReadableStream, getCacheKey, _s2, useServerResponse, fetchFlight, createResponseCache, nextServerDataRegisterWriter, nextServerDataCallback; }\nvar lastAppProps;\nfunction doRender(input) {\n var onStart = // This function has a return type to ensure it doesn't start returning a\n // Promise. It should remain synchronous.\n function onStart() {\n if (!styleSheets || // unless we're in production:\n \"development\" !== \"production\") {\n return false;\n }\n var currentStyleTags = looseToArray(document.querySelectorAll(\"style[data-n-href]\"));\n var currentHrefs = new Set(currentStyleTags.map(function(tag) {\n return tag.getAttribute(\"data-n-href\");\n }));\n var noscript = document.querySelector(\"noscript[data-n-css]\");\n var nonce = noscript == null ? void 0 : noscript.getAttribute(\"data-n-css\");\n styleSheets.forEach(function(param) {\n var href = param.href, text = param.text;\n if (!currentHrefs.has(href)) {\n var styleTag = document.createElement(\"style\");\n styleTag.setAttribute(\"data-n-href\", href);\n styleTag.setAttribute(\"media\", \"x\");\n if (nonce) {\n styleTag.setAttribute(\"nonce\", nonce);\n }\n document.head.appendChild(styleTag);\n styleTag.appendChild(document.createTextNode(text));\n }\n });\n return true;\n };\n var onHeadCommit = function onHeadCommit() {\n if (// unless we're in production:\n false) { var referenceNode, idx, currentHrefs, currentStyleTags, desiredHrefs; }\n if (input.scroll) {\n window.scrollTo(input.scroll.x, input.scroll.y);\n }\n };\n var onRootCommit = function onRootCommit() {\n resolvePromise();\n };\n var App = input.App, Component = input.Component, props = input.props, err = input.err, __N_RSC = input.__N_RSC;\n var styleSheets = \"initial\" in input ? undefined : input.styleSheets;\n Component = Component || lastAppProps.Component;\n props = props || lastAppProps.props;\n var isRSC = false ? 0 : !!__N_RSC;\n var appProps = _extends({}, props, {\n Component: isRSC ? RSCComponent : Component,\n err: err,\n router: router\n });\n // lastAppProps has to be set before ReactDom.render to account for ReactDom throwing an error.\n lastAppProps = appProps;\n var canceled = false;\n var resolvePromise;\n var renderPromise = new Promise(function(resolve, reject) {\n if (lastRenderReject) {\n lastRenderReject();\n }\n resolvePromise = function() {\n lastRenderReject = null;\n resolve();\n };\n lastRenderReject = function() {\n canceled = true;\n lastRenderReject = null;\n var error = new Error(\"Cancel rendering route\");\n error.cancelled = true;\n reject(error);\n };\n });\n onStart();\n var elem = /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(Head, {\n callback: onHeadCommit\n }), /*#__PURE__*/ _react.default.createElement(AppContainer, null, renderApp(App, appProps), /*#__PURE__*/ _react.default.createElement(_portal.Portal, {\n type: \"next-route-announcer\"\n }, /*#__PURE__*/ _react.default.createElement(_routeAnnouncer.RouteAnnouncer, null))));\n // We catch runtime errors using componentDidCatch which will trigger renderError\n renderReactElement(appElement, function(callback) {\n return /*#__PURE__*/ _react.default.createElement(Root, {\n callbacks: [\n callback,\n onRootCommit\n ]\n }, false ? /*#__PURE__*/ 0 : elem);\n });\n return renderPromise;\n}\nfunction Root(param) {\n var callbacks = param.callbacks, children = param.children;\n _s();\n // We use `useLayoutEffect` to guarantee the callbacks are executed\n // as soon as React flushes the update\n _react.default.useLayoutEffect(function() {\n return callbacks.forEach(function(callback) {\n return callback();\n });\n }, [\n callbacks\n ]);\n // We should ask to measure the Web Vitals after rendering completes so we\n // don't cause any hydration delay:\n _react.default.useEffect(function() {\n (0, _performanceRelayer).default(onPerfEntry);\n }, []);\n if (false) {}\n return children;\n}\n_s(Root, \"Gjgl5rfcc2T4sFnfEMfRvL6K4Q4=\");\n_c1 = Root;\n// Dummy component that we render as a child of Root so that we can\n// toggle the correct styles before the page is rendered.\nfunction Head(param) {\n var callback = param.callback;\n _s1();\n // We use `useLayoutEffect` to guarantee the callback is executed\n // as soon as React flushes the update.\n _react.default.useLayoutEffect(function() {\n return callback();\n }, [\n callback\n ]);\n return null;\n}\n_s1(Head, \"n7/vCynhJvM+pLkyL2DMQUF0odM=\");\n_c2 = Head;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=index.js.map\nvar _c, _c1, _c2;\n$RefreshReg$(_c, \"AppContainer\");\n$RefreshReg$(_c1, \"Root\");\n$RefreshReg$(_c2, \"Head\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7Ozs7Ozs7Ozs7Ozs7QUFDYkEsOENBQTZDO0lBQ3pDRyxLQUFLLEVBQUUsSUFBSTtDQUNkLEVBQUMsQ0FBQztBQUNIRCxrQkFBa0IsR0FBR0UsVUFBVSxDQUFDO0FBQ2hDRixlQUFlLEdBQUdHLE9BQU8sQ0FBQztBQUMxQkgsZUFBZSxHQUFHQSxjQUFjLEdBQUdBLGVBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUM1RE8sbUJBQU8sQ0FBQyx3R0FBb0MsQ0FBQyxDQUFDO0FBQzlDLElBQUlDLE1BQU0sR0FBR0MsdUJBQXNCLENBQUNGLG1CQUFPLENBQUMsNkNBQU8sQ0FBQyxDQUFDO0FBQ3JELElBQUlHLG1CQUFtQixHQUFHSCxtQkFBTyxDQUFDLHdHQUFvQyxDQUFDO0FBQ3ZFLElBQUlJLEtBQUssR0FBR0YsdUJBQXNCLENBQUNGLG1CQUFPLENBQUMsd0VBQW9CLENBQUMsQ0FBQztBQUNqRSxJQUFJSyxjQUFjLEdBQUdMLG1CQUFPLENBQUMsNEZBQThCLENBQUM7QUFDNUQsSUFBSU0sVUFBVSxHQUFHTixtQkFBTyxDQUFDLDhHQUF1QyxDQUFDO0FBQ2pFLElBQUlPLFlBQVksR0FBR1AsbUJBQU8sQ0FBQyxnSEFBd0MsQ0FBQztBQUNwRSxJQUFJUSxjQUFjLEdBQUdSLG1CQUFPLENBQUMsNEZBQThCLENBQUM7QUFDNUQsSUFBSVMsTUFBTSxHQUFHVCxtQkFBTyxDQUFDLDBFQUFxQixDQUFDO0FBQzNDLElBQUlVLE9BQU8sR0FBR1YsbUJBQU8sQ0FBQyxrRUFBVSxDQUFDO0FBQ2pDLElBQUlXLFlBQVksR0FBR1QsdUJBQXNCLENBQUNGLG1CQUFPLENBQUMsd0VBQWdCLENBQUMsQ0FBQztBQUNwRSxJQUFJWSxXQUFXLEdBQUdWLHVCQUFzQixDQUFDRixtQkFBTyxDQUFDLHNFQUFlLENBQUMsQ0FBQztBQUNsRSxJQUFJYSxtQkFBbUIsR0FBR1gsdUJBQXNCLENBQUNGLG1CQUFPLENBQUMsc0ZBQXVCLENBQUMsQ0FBQztBQUNsRixJQUFJYyxlQUFlLEdBQUdkLG1CQUFPLENBQUMsOEVBQW1CLENBQUM7QUFDbEQsSUFBSWUsT0FBTyxHQUFHZixtQkFBTyxDQUFDLDREQUFVLENBQUM7QUFDakMsSUFBSWdCLFFBQVEsR0FBR2hCLG1CQUFPLENBQUMsa0VBQWlCLENBQUM7QUFDekMsSUFBSWlCLG1CQUFtQixHQUFHakIsbUJBQU8sQ0FBQyx3R0FBb0MsQ0FBQztBQUN2RSxJQUFJa0IsZUFBZSxHQUFHbEIsbUJBQU8sQ0FBQyxnRkFBb0IsQ0FBQztBQUNuRCxJQUFJbUIsWUFBWSxHQUFHbkIsbUJBQU8sQ0FBQywwRUFBaUIsQ0FBQztBQUM3QyxTQUFTb0Isa0JBQWtCLENBQUNDLEdBQUcsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLEtBQUssRUFBRUMsTUFBTSxFQUFFQyxHQUFHLEVBQUVDLEdBQUcsRUFBRTtJQUN2RSxJQUFJO1FBQ0EsSUFBSUMsSUFBSSxHQUFHUCxHQUFHLENBQUNLLEdBQUcsQ0FBQyxDQUFDQyxHQUFHLENBQUM7UUFDeEIsSUFBSWpDLEtBQUssR0FBR2tDLElBQUksQ0FBQ2xDLEtBQUs7S0FDekIsQ0FBQyxPQUFPbUMsS0FBSyxFQUFFO1FBQ1pOLE1BQU0sQ0FBQ00sS0FBSyxDQUFDLENBQUM7UUFDZCxPQUFPO0tBQ1Y7SUFDRCxJQUFJRCxJQUFJLENBQUNFLElBQUksRUFBRTtRQUNYUixPQUFPLENBQUM1QixLQUFLLENBQUMsQ0FBQztLQUNsQixNQUFNO1FBQ0hxQyxPQUFPLENBQUNULE9BQU8sQ0FBQzVCLEtBQUssQ0FBQyxDQUFDc0MsSUFBSSxDQUFDUixLQUFLLEVBQUVDLE1BQU0sQ0FBQyxDQUFDO0tBQzlDO0NBQ0o7QUFDRCxTQUFTUSxpQkFBaUIsQ0FBQ0MsRUFBRSxFQUFFO0lBQzNCLE9BQU8sV0FBVztRQUNkLElBQUlDLE1BQUksR0FBRyxJQUFJLEVBQUVDLElBQUksR0FBR0MsU0FBUztRQUNqQyxPQUFPLElBQUlOLE9BQU8sQ0FBQyxTQUFTVCxPQUFPLEVBQUVDLE1BQU0sRUFBRTtZQUN6QyxJQUFJRixHQUFHLEdBQUdhLEVBQUUsQ0FBQ0ksS0FBSyxDQUFDSCxNQUFJLEVBQUVDLElBQUksQ0FBQztZQUM5QixTQUFTWixLQUFLLENBQUM5QixLQUFLLEVBQUU7Z0JBQ2xCMEIsa0JBQWtCLENBQUNDLEdBQUcsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLEtBQUssRUFBRUMsTUFBTSxFQUFFLE1BQU0sRUFBRS9CLEtBQUssQ0FBQyxDQUFDO2FBQzFFO1lBQ0QsU0FBUytCLE1BQU0sQ0FBQ2MsR0FBRyxFQUFFO2dCQUNqQm5CLGtCQUFrQixDQUFDQyxHQUFHLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRSxPQUFPLEVBQUVjLEdBQUcsQ0FBQyxDQUFDO2FBQ3pFO1lBQ0RmLEtBQUssQ0FBQ2dCLFNBQVMsQ0FBQyxDQUFDO1NBQ3BCLENBQUMsQ0FBQztLQUNOLENBQUM7Q0FDTDtBQUNELFNBQVNDLFFBQVEsR0FBRztJQUNoQkEsUUFBUSxHQUFHbEQsTUFBTSxDQUFDbUQsTUFBTSxJQUFJLFNBQVNDLE1BQU0sRUFBRTtRQUN6QyxJQUFJLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR1AsU0FBUyxDQUFDUSxNQUFNLEVBQUVELENBQUMsRUFBRSxDQUFDO1lBQ3JDLElBQUlFLE1BQU0sR0FBR1QsU0FBUyxDQUFDTyxDQUFDLENBQUM7WUFDekIsSUFBSSxJQUFJbEIsR0FBRyxJQUFJb0IsTUFBTSxDQUFDO2dCQUNsQixJQUFJdkQsTUFBTSxDQUFDd0QsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ0gsTUFBTSxFQUFFcEIsR0FBRyxDQUFDLEVBQUU7b0JBQ25EaUIsTUFBTSxDQUFDakIsR0FBRyxDQUFDLEdBQUdvQixNQUFNLENBQUNwQixHQUFHLENBQUMsQ0FBQztpQkFDN0I7YUFDSjtTQUNKO1FBQ0QsT0FBT2lCLE1BQU0sQ0FBQztLQUNqQixDQUFDO0lBQ0YsT0FBT0YsUUFBUSxDQUFDSCxLQUFLLENBQUMsSUFBSSxFQUFFRCxTQUFTLENBQUMsQ0FBQztDQUMxQztBQUNELFNBQVNuQyx1QkFBc0IsQ0FBQ2dELEdBQUcsRUFBRTtJQUNqQyxPQUFPQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBVSxHQUFHRCxHQUFHLEdBQUc7UUFDakNFLE9BQU8sRUFBRUYsR0FBRztLQUNmLENBQUM7Q0FDTDtBQUNELFNBQVNHLHdCQUF3QixHQUFHO0lBQ2hDLElBQUksT0FBT0MsT0FBTyxLQUFLLFVBQVUsRUFBRSxPQUFPLElBQUksQ0FBQztJQUMvQyxJQUFJQyxLQUFLLEdBQUcsSUFBSUQsT0FBTyxFQUFFO0lBQ3pCRCx3QkFBd0IsR0FBRyxTQUEzQkEsd0JBQXdCLEdBQWM7UUFDbEMsT0FBT0UsS0FBSyxDQUFDO0tBQ2hCLENBQUM7SUFDRixPQUFPQSxLQUFLLENBQUM7Q0FDaEI7QUFDRCxTQUFTQyx3QkFBdUIsQ0FBQ04sR0FBRyxFQUFFO0lBQ2xDLElBQUlBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFVLEVBQUU7UUFDdkIsT0FBT0QsR0FBRyxDQUFDO0tBQ2Q7SUFDRCxJQUFJQSxHQUFHLEtBQUssSUFBSSxJQUFJLE9BQU9BLEdBQUcsS0FBSyxRQUFRLElBQUksT0FBT0EsR0FBRyxLQUFLLFVBQVUsRUFBRTtRQUN0RSxPQUFPO1lBQ0hFLE9BQU8sRUFBRUYsR0FBRztTQUNmLENBQUM7S0FDTDtJQUNELElBQUlLLEtBQUssR0FBR0Ysd0JBQXdCLEVBQUU7SUFDdEMsSUFBSUUsS0FBSyxJQUFJQSxLQUFLLENBQUNFLEdBQUcsQ0FBQ1AsR0FBRyxDQUFDLEVBQUU7UUFDekIsT0FBT0ssS0FBSyxDQUFDRyxHQUFHLENBQUNSLEdBQUcsQ0FBQyxDQUFDO0tBQ3pCO0lBQ0QsSUFBSVMsTUFBTSxHQUFHLEVBQUU7SUFDZixJQUFJQyxxQkFBcUIsR0FBR3JFLE1BQU0sQ0FBQ0MsY0FBYyxJQUFJRCxNQUFNLENBQUNzRSx3QkFBd0I7SUFDcEYsSUFBSSxJQUFJbkMsR0FBRyxJQUFJd0IsR0FBRyxDQUFDO1FBQ2YsSUFBSTNELE1BQU0sQ0FBQ3dELFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNDLEdBQUcsRUFBRXhCLEdBQUcsQ0FBQyxFQUFFO1lBQ2hELElBQUlvQyxJQUFJLEdBQUdGLHFCQUFxQixHQUFHckUsTUFBTSxDQUFDc0Usd0JBQXdCLENBQUNYLEdBQUcsRUFBRXhCLEdBQUcsQ0FBQyxHQUFHLElBQUk7WUFDbkYsSUFBSW9DLElBQUksSUFBSSxDQUFDQSxJQUFJLENBQUNKLEdBQUcsSUFBSUksSUFBSSxDQUFDQyxHQUFHLENBQUMsRUFBRTtnQkFDaEN4RSxNQUFNLENBQUNDLGNBQWMsQ0FBQ21FLE1BQU0sRUFBRWpDLEdBQUcsRUFBRW9DLElBQUksQ0FBQyxDQUFDO2FBQzVDLE1BQU07Z0JBQ0hILE1BQU0sQ0FBQ2pDLEdBQUcsQ0FBQyxHQUFHd0IsR0FBRyxDQUFDeEIsR0FBRyxDQUFDLENBQUM7YUFDMUI7U0FDSjtLQUNKO0lBQ0RpQyxNQUFNLENBQUNQLE9BQU8sR0FBR0YsR0FBRyxDQUFDO0lBQ3JCLElBQUlLLEtBQUssRUFBRTtRQUNQQSxLQUFLLENBQUNRLEdBQUcsQ0FBQ2IsR0FBRyxFQUFFUyxNQUFNLENBQUMsQ0FBQztLQUMxQjtJQUNELE9BQU9BLE1BQU0sQ0FBQztDQUNqQjtBQUNELElBQU1LLFFBQVEsR0FBR0MsTUFBNkIsR0FBR2pFLENBQTJCLEdBQUdBLG1CQUFPLENBQUMscURBQVcsQ0FBQztBQUNuRyxJQUFNRCxPQUFPLEdBQUcsUUFBUTtBQUN4Qk4sZUFBZSxHQUFHTSxPQUFPLENBQUM7QUFDMUIsSUFBSUQsTUFBTTtBQUNWTCxjQUFjLEdBQUdLLE1BQU0sQ0FBQztBQUN4QixJQUFNRCxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUVPLEtBQUssQ0FBQyxDQUFDZ0QsT0FBTyxFQUFFO0FBQ3BDM0QsZUFBZSxHQUFHSSxPQUFPLENBQUM7QUFDMUIsSUFBTXVFLFlBQVksR0FBRyxTQUFDQyxLQUFLO1dBQUcsRUFBRSxDQUFDQyxLQUFLLENBQUNyQixJQUFJLENBQUNvQixLQUFLLENBQUM7Q0FBQTtBQUNsRCxJQUFJRSxXQUFXO0FBQ2YsSUFBSUMsYUFBYSxHQUFHaEMsU0FBUztBQUM3QixJQUFJaUMsTUFBTTtBQUNWLElBQUlDLFVBQVU7QUFDZCxJQUFJQyxVQUFVO0FBQ2QsSUFBSUMsV0FBVztBQUNmLElBQUlDLHdCQUF3QixHQUFHLEtBQUs7QUFDcEMsSUFBSUMsZ0JBQWdCO0FBQ3BCLElBQUlDLFVBQVU7QUFDZCxJQUFJQyxTQUFTLEVBQUVDLFdBQVc7QUFDMUIsSUFBSUMsZUFBZTtBQUNuQi9DLElBQUksQ0FBQ2dELGdCQUFnQixHQUFHQyxtQkFBbUIsQ0FBQztBQUM1QyxhQUFlLGlCQXVEWDs7O2FBdkRFQyxTQUFTOzs7Ozs7WUFDWEMsR0FBaUIsRUFBakJBLG1CQUFpQjttQkFBakJBLFNBQUFBLGlCQUFpQixDQUFDQyxZQUFZLEVBQUUzRCxJQUFJLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQzRELEtBQUssQ0FBQ3RELEVBQUUsQ0FBQ3FELFlBQVksRUFBRTNELElBQUksQ0FBQyxDQUFDO2FBQ3JDOzs7WUFDRDZELEdBQWlCLEVBQWpCQSxtQkFBaUI7bUJBQWpCQSxTQUFBQSxpQkFBaUIsR0FBRztnQkFDaEIsSUFBSSxDQUFDQyxZQUFZLEVBQUUsQ0FBQztnQkFDcEIsMENBQTBDO2dCQUMxQyx5RUFBeUU7Z0JBQ3pFLG9FQUFvRTtnQkFDcEUsc0RBQXNEO2dCQUN0RCxxRUFBcUU7Z0JBQ3JFLGtFQUFrRTtnQkFDbEUsSUFBSTVGLE1BQU0sQ0FBQzZGLEtBQUssSUFDaEIsb0RBQW9EO2dCQUNwRCwrQkFBK0I7Z0JBQy9CcEIsV0FBVyxDQUFDcUIsSUFBSSxLQUFLLE1BQU0sSUFBSXJCLFdBQVcsQ0FBQ3FCLElBQUksS0FBSyxTQUFTLElBQUksQ0FBQ3JCLFdBQVcsQ0FBQ3NCLFVBQVUsSUFBSXRCLFdBQVcsQ0FBQ3VCLFVBQVUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFeEYsVUFBVSxDQUFDLENBQUN5RixjQUFjLENBQUNqRyxNQUFNLENBQUNrRyxRQUFRLENBQUMsSUFBSUMsUUFBUSxDQUFDQyxNQUFNLElBQUlqQyxLQUErQixJQUFJWSx3QkFBd0IsQ0FBQyxJQUFJTixXQUFXLENBQUNpQixLQUFLLElBQUlqQixXQUFXLENBQUNpQixLQUFLLENBQUNZLE9BQU8sSUFBSSxDQUFDSCxRQUFRLENBQUNDLE1BQU0sSUFBSWpDLEtBQStCLElBQUlZLHdCQUF3QixDQUFDLENBQUMsRUFBRTtvQkFDOVgsMkNBQTJDO29CQUMzQy9FLE1BQU0sQ0FBQ3VHLE9BQU8sQ0FBQ3ZHLE1BQU0sQ0FBQ2tHLFFBQVEsR0FBRyxHQUFHLEdBQUdNLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRS9GLFlBQVksQ0FBQyxDQUFDbUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFbkMsWUFBWSxDQUFDLENBQUNnRyxzQkFBc0IsQ0FBQ3pHLE1BQU0sQ0FBQzBHLEtBQUssQ0FBQyxFQUFFLElBQUlDLGVBQWUsQ0FBQ1IsUUFBUSxDQUFDQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUV6QixNQUFNLEVBQUU7d0JBQzNLLGFBQWE7d0JBQ2IsMERBQTBEO3dCQUMxRCxvRUFBb0U7d0JBQ3BFLDRDQUE0Qzt3QkFDNUNpQyxFQUFFLEVBQUUsQ0FBQzt3QkFDTCxtRUFBbUU7d0JBQ25FLGVBQWU7d0JBQ2YsbUVBQW1FO3dCQUNuRSx5Q0FBeUM7d0JBQ3pDQyxPQUFPLEVBQUUsQ0FBQ3BDLFdBQVcsQ0FBQ3NCLFVBQVUsSUFBSSxDQUFDaEIsd0JBQXdCO3FCQUNoRSxDQUFDLENBQUMrQixLQUFLLENBQUMsU0FBQ3JFLEdBQUcsRUFBRzt3QkFDWixJQUFJLENBQUNBLEdBQUcsQ0FBQ3NFLFNBQVMsRUFBRSxNQUFNdEUsR0FBRyxDQUFDO3FCQUNqQyxDQUFDLENBQUM7aUJBQ047YUFDSjs7O1lBQ0R1RSxHQUFrQixFQUFsQkEsb0JBQWtCO21CQUFsQkEsU0FBQUEsa0JBQWtCLEdBQUc7Z0JBQ2pCLElBQUksQ0FBQ3BCLFlBQVksRUFBRSxDQUFDO2FBQ3ZCOzs7WUFDREEsR0FBWSxFQUFaQSxjQUFZO21CQUFaQSxTQUFBQSxZQUFZLEdBQUc7Z0JBQ1gsSUFBSSxJQUFNLEdBQU1PLFFBQVEsQ0FBbEJjLElBQUk7Z0JBQ1ZBLElBQUksR0FBR0EsSUFBSSxJQUFJQSxJQUFJLENBQUNDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDakMsSUFBSSxDQUFDRCxJQUFJLEVBQUUsT0FBTztnQkFDbEIsSUFBTUUsRUFBRSxHQUFHQyxRQUFRLENBQUNDLGNBQWMsQ0FBQ0osSUFBSSxDQUFDO2dCQUN4QyxJQUFJLENBQUNFLEVBQUUsRUFBRSxPQUFPO2dCQUNoQiwyREFBMkQ7Z0JBQzNELDRCQUE0QjtnQkFDNUJHLFVBQVUsQ0FBQzsyQkFBSUgsRUFBRSxDQUFDSSxjQUFjLEVBQUU7aUJBQUEsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUMxQzs7O1lBQ0RDLEdBQU0sRUFBTkEsUUFBTTttQkFBTkEsU0FBQUEsTUFBTSxHQUFHO2dCQUNMLElBQUlyRCxLQUFxQyxFQUFFLEVBRTFDLE1BQU07b0JBQ0gsSUFBTSxlQUFpQixHQUFRakUsZ0xBQVI7b0JBQ3ZCLE9BQU8sYUFBYSxDQUFDQyxNQUFNLENBQUNtRCxPQUFPLENBQUNxRSxhQUFhLENBQUNELGVBQWUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDaEMsS0FBSyxDQUFDK0IsUUFBUSxDQUFDLENBQUM7aUJBQ2pHO2FBQ0o7Ozs7Q0FDSixDQXREdUJ0SCxNQUFNLENBQUNtRCxPQUFPLENBQUNzRSxTQUFTLENBc0QvQztBQUNELFNBQVMvSCxVQUFVLEdBQUc7SUFDbEIsT0FBT2dJLFdBQVcsQ0FBQ3JGLEtBQUssQ0FBQyxJQUFJLEVBQUVELFNBQVMsQ0FBQyxDQUFDO0NBQzdDO0FBQ0QsU0FBU3NGLFdBQVcsR0FBRztJQUNuQkEsV0FBVyxHQUFHMUYsaUJBQWlCLGdIQUFDLG1CQUFxQjtZQUFYMkYsSUFBSSxFQVFwQ0MsTUFBTSxFQWdCQUMsbUJBQW1CLEVBQ25CQyxrQkFBa0IsRUFDbEJDLGdCQUFnQixFQUNoQkMsU0FBUyxFQUVQQyxRQUFRLEVBQ1JDLGdCQUFnQixFQVdoQkMsY0FBYyxFQVNoQkMsZ0JBQWdCLEVBSXRCQyxRQUFROzs7O29CQXREd0JWLElBQUksR0FBSkEsdUNBQVMsY0FBRixFQUFFO29CQUMvQyxnRUFBZ0U7b0JBQ2hFLElBQUkzRCxJQUFzQyxFQUFFO3dCQUN4Q2MsVUFBVSxHQUFHNkMsSUFBSSxDQUFDN0MsVUFBVSxDQUFDO3FCQUNoQztvQkFDRFIsV0FBVyxHQUFHZ0UsSUFBSSxDQUFDQyxLQUFLLENBQUN0QixRQUFRLENBQUNDLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQ3NCLFdBQVcsQ0FBQyxDQUFDO29CQUMvRUMsTUFBTSxDQUFDQyxhQUFhLEdBQUdwRSxXQUFXLENBQUM7b0JBQ25DQyxhQUFhLEdBQUdELFdBQVcsQ0FBQ0MsYUFBYSxDQUFDO29CQUNwQ3FELE1BQU0sR0FBR3RELFdBQVcsQ0FBQ3FFLFdBQVcsSUFBSSxFQUFFLENBQUM7b0JBQzdDLHdGQUF3RjtvQkFDeEYseURBQXlEO29CQUN6REMscUJBQXVCLEdBQUcsRUFBQyxDQUFTLE1BQU8sQ0FBZGhCLE1BQU0sRUFBQyxTQUFPLENBQUMsQ0FBQyxxQkFBcUI7b0JBQXRCLENBQzNDO29CQUNELDREQUE0RDtvQkFDNUQsQ0FBQyxDQUFDLEVBQUVySCxjQUFjLENBQUMsQ0FBQ3NJLFNBQVMsQ0FBQzt3QkFDMUJDLG1CQUFtQixFQUFFLEVBQUU7d0JBQ3ZCQyxtQkFBbUIsRUFBRXpFLFdBQVcsQ0FBQzBFLGFBQWEsSUFBSSxFQUFFO3FCQUN2RCxDQUFDLENBQUM7b0JBQ0h4RSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUVoRSxNQUFNLENBQUMsQ0FBQ3lJLE1BQU0sRUFBRSxDQUFDO29CQUM5Qix1REFBdUQ7b0JBQ3ZELElBQUksQ0FBQyxDQUFDLEVBQUUvSCxZQUFZLENBQUMsQ0FBQ2dJLFdBQVcsQ0FBQzFFLE1BQU0sQ0FBQyxFQUFFO3dCQUN2Q0EsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFdkQsZUFBZSxDQUFDLENBQUNrSSxjQUFjLENBQUMzRSxNQUFNLENBQUMsQ0FBQztxQkFDeEQ7b0JBQ0QsSUFBSVIsS0FBK0IsRUFBRSxFQXlCcEM7b0JBQ0QsSUFBSU0sV0FBVyxDQUFDb0YsWUFBWSxFQUFFO3dCQUNwQixnQkFBa0IsR0FBTTNKLG9HQUFOLENBQTBCO3dCQUNsRHFJLGdCQUFnQixDQUFDOUQsV0FBVyxDQUFDb0YsWUFBWSxDQUFDLENBQUM7cUJBQzlDO29CQUNEakYsVUFBVSxHQUFHLElBQUk5RCxXQUFXLENBQUN3QyxPQUFPLENBQUNtQixXQUFXLENBQUNxRixPQUFPLEVBQUUvQixNQUFNLENBQUMsQ0FBQztvQkFDNURTLFFBQVEsR0FBRzsrREFBRXVCLENBQUMsY0FBRUMsQ0FBQzsrQkFBSXBGLFVBQVUsQ0FBQ3FGLFdBQVcsQ0FBQ0MsWUFBWSxDQUFDSCxDQUFDLEVBQUVDLENBQUMsQ0FBQztxQkFBQSxDQUFDO29CQUNyRSxJQUFJcEIsTUFBTSxDQUFDdUIsUUFBUSxFQUFFO3dCQUNqQiwyRUFBMkU7d0JBQzNFLHFFQUFxRTt3QkFDckV2QixNQUFNLENBQUN1QixRQUFRLENBQUNDLEdBQUcsQ0FBQyxTQUFDQyxDQUFDO21DQUFHL0MsVUFBVSxDQUFDO3VDQUFJa0IsUUFBUSxDQUFDNkIsQ0FBQyxDQUFDOzZCQUFBLEVBQUUsQ0FBQyxDQUFDO3lCQUFBLENBQUMsQ0FBQztxQkFDNUQ7b0JBQ0R6QixNQUFNLENBQUN1QixRQUFRLEdBQUcsRUFBRSxDQUFDO29CQUNyQnZCLE1BQU0sQ0FBQ3VCLFFBQVEsQ0FBQ0csSUFBSSxHQUFHOUIsUUFBUSxDQUFDO29CQUNoQzFELFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRWpFLFlBQVksQ0FBQyxDQUFDeUMsT0FBTyxFQUFFLENBQUM7b0JBQzFDd0IsV0FBVyxDQUFDeUYsUUFBUSxHQUFHLFdBQUk7d0JBQ3ZCLE9BQU92SyxNQUFNLENBQUM2RixLQUFLLENBQUM7cUJBQ3ZCLENBQUM7b0JBQ0ZoQixVQUFVLEdBQUd1QyxRQUFRLENBQUNDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztpREFDeEM7d0JBQ0h5QixXQUFXLEVBQUVmLE1BQU07cUJBQ3RCOzs7Ozs7S0FDSixFQUFDLENBQUM7SUFDSCxPQUFPRixXQUFXLENBQUNyRixLQUFLLENBQUMsSUFBSSxFQUFFRCxTQUFTLENBQUMsQ0FBQztDQUM3QztBQUNELFNBQVN6QyxPQUFPLENBQUNnSSxJQUFJLEVBQUU7SUFDbkIsT0FBTzBDLFFBQVEsQ0FBQ2hJLEtBQUssQ0FBQyxJQUFJLEVBQUVELFNBQVMsQ0FBQyxDQUFDO0NBQzFDO0FBQ0QsU0FBU2lJLFFBQVEsR0FBRztJQUNoQkEsUUFBUSxHQUFHckksaUJBQWlCLGdIQUFDLGlCQUFVMkYsSUFBSSxFQUFFO1lBQ3JDMkMsVUFBVSxFQUVKQyxhQUFhLEVBSUFDLEdBQUcsRUFBWUMsR0FBRyxFQW9CL0JDLGNBQWMsRUFVUkMsa0JBQWtCLEVBVXRCQyxjQUFjLEVBaURwQkMsU0FBUzs7OztvQkEvRlhQLFVBQVUsR0FBR2hHLFdBQVcsQ0FBQ2hDLEdBQUcsQ0FBQzs7OzJCQUVEbUMsVUFBVSxDQUFDcUYsV0FBVyxDQUFDZ0IsY0FBYyxDQUFDLE9BQU8sQ0FBQzs7b0JBQXBFUCxhQUFhLFlBQXVEO3dCQUN0RSxTQUFPLElBQUlBLGFBQWE7Ozs7b0JBQ3hCLE1BQU1BLGFBQWEsQ0FBQzNJLEtBQUssQ0FBQzs7b0JBRXRCbUosR0FBYyxHQUFxQlIsYUFBYSxDQUFoRFEsU0FBUyxFQUFRdkwsR0FBWSxHQUFNK0ssYUFBYSxDQUEvQi9LLE9BQU8sQ0FBeUI7b0JBQ3pEdUYsU0FBUyxHQUFHeUYsR0FBRyxDQUFDO29CQUNoQixJQUFJQyxHQUFHLElBQUlBLEdBQUcsQ0FBQ08sZUFBZSxFQUFFO3dCQUM1QmhHLFdBQVcsR0FBRyxnQkFBdUU7Z0NBQXBFaUcsRUFBRSxTQUFGQSxFQUFFLEVBQUdDLElBQUksU0FBSkEsSUFBSSxFQUFHQyxTQUFTLFNBQVRBLFNBQVMsRUFBRzFMLEtBQUssU0FBTEEsS0FBSyxFQUFHMkwsUUFBUSxTQUFSQSxRQUFRLEVBQUdDLFNBQVMsU0FBVEEsU0FBUyxFQUFHQyxPQUFPLFNBQVBBLE9BQU87NEJBQzNFLHNEQUFzRDs0QkFDdEQsSUFBTUMsUUFBUSxHQUFHLEVBQUMsQ0FBZ0JDLE1BQTZDLENBQTNEQyxJQUFJLENBQUNDLEdBQUcsRUFBRSxFQUFDLEdBQUMsQ0FBZ0QsUUFBOUNGLElBQUksQ0FBQ0csS0FBSyxDQUFDSCxJQUFJLENBQUNJLE1BQU0sRUFBRSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFFOzRCQUNqRixJQUFJQyxjQUFjOzRCQUNsQixJQUFJUCxPQUFPLElBQUlBLE9BQU8sQ0FBQzFJLE1BQU0sRUFBRTtnQ0FDM0JpSixjQUFjLEdBQUdQLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQ0gsU0FBUyxDQUFDOzZCQUN6Qzs0QkFDRCxJQUFNVyxTQUFTLEdBQUc7Z0NBQ2RiLEVBQUUsRUFBRUEsRUFBRSxJQUFJTSxRQUFRO2dDQUNsQkwsSUFBSSxFQUFKQSxJQUFJO2dDQUNKQyxTQUFTLEVBQUVBLFNBQVMsSUFBSVUsY0FBYztnQ0FDdENwTSxLQUFLLEVBQUVBLEtBQUssSUFBSSxJQUFJLEdBQUcyTCxRQUFRLEdBQUczTCxLQUFLO2dDQUN2Q3NNLEtBQUssRUFBRVYsU0FBUyxLQUFLLE1BQU0sSUFBSUEsU0FBUyxLQUFLLFNBQVMsR0FBRyxRQUFRLEdBQUcsV0FBVzs2QkFDbEY7NEJBQ0RaLEdBQUcsQ0FBQ08sZUFBZSxDQUFDYyxTQUFTLENBQUMsQ0FBQzt5QkFDbEMsQ0FBQztxQkFDTDt3QkFFRCx3REFBd0Q7b0JBQ3hEOUgsQ0FBQUEsQ0FBQUEsS0FBc0MsSUFBSU0sV0FBVyxDQUFDaEMsR0FBRzs7Ozs4QkFBRzt3QkFDeERWLEtBQUssRUFBRTBDLFdBQVcsQ0FBQ2hDLEdBQUc7cUJBQ3pCOzs7OzsyQkFBU21DLFVBQVUsQ0FBQ3FGLFdBQVcsQ0FBQ2dCLGNBQWMsQ0FBQ3hHLFdBQVcsQ0FBQ3FCLElBQUksQ0FBQzs7OztvQkFKM0QrRSxjQUFjLFVBSTZDO3dCQUM3RCxTQUFPLElBQUlBLGNBQWM7Ozs7b0JBQ3pCLE1BQU1BLGNBQWMsQ0FBQzlJLEtBQUssQ0FBQzs7b0JBRS9CcUQsZUFBZSxHQUFHeUYsY0FBYyxDQUFDSyxTQUFTLENBQUM7d0JBQ3ZDL0csS0FBcUMsRUFBRSxFO29CQUNqQyxrQkFBb0IsR0FBTWpFLG1JQUFOLENBQTZDO3dCQUNsRTRLLGtCQUFrQixDQUFDMUYsZUFBZSxDQUFDOzs7O29CQUNwQyxNQUFNLElBQUkrRyxLQUFLLENBQUMsd0RBQXVELENBQW1CLE1BQUMsQ0FBbEIxSCxXQUFXLENBQUNxQixJQUFJLEVBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQzs7Ozs7OztvQkFJdEcsaUVBQWlFO29CQUNqRTJFLFVBQVUsR0FBRyxDQUFDLENBQUMsRUFBRXZKLFFBQVEsQ0FBQyxDQUFDa0wsY0FBYyxTQUFRLENBQUM7O29CQUV0RCxJQUFJakksSUFBc0MsRUFBRTt3QkFDbEMsY0FBZ0IsR0FBUWpFLCtLQUFSLENBQTBFO3dCQUNoRyx3RUFBd0U7d0JBQ3hFLGdDQUFnQzt3QkFDaEMsSUFBSXVLLFVBQVUsRUFBRTs0QkFDWixJQUFJQSxVQUFVLEtBQUtoRyxXQUFXLENBQUNoQyxHQUFHLEVBQUU7Z0NBQ2hDNkUsVUFBVSxDQUFDLFdBQUk7b0NBQ1gsSUFBSXZGLEtBQUs7b0NBQ1QsSUFBSTt3Q0FDQSxtRUFBbUU7d0NBQ25FLGtFQUFrRTt3Q0FDbEUsNENBQTRDO3dDQUM1QyxNQUFNLElBQUlvSyxLQUFLLENBQUMxQixVQUFVLENBQUM0QixPQUFPLENBQUMsQ0FBQztxQ0FDdkMsQ0FBQyxPQUFPQyxDQUFDLEVBQUU7d0NBQ1J2SyxLQUFLLEdBQUd1SyxDQUFDLENBQUM7cUNBQ2I7b0NBQ0R2SyxLQUFLLENBQUNzSixJQUFJLEdBQUdaLFVBQVUsQ0FBQ1ksSUFBSSxDQUFDO29DQUM3QnRKLEtBQUssQ0FBQ3dLLEtBQUssR0FBRzlCLFVBQVUsQ0FBQzhCLEtBQUssQ0FBQztvQ0FDL0IsTUFBTXhCLGNBQWMsQ0FBQ2hKLEtBQUssRUFBRTBJLFVBQVUsQ0FBQ3pILE1BQU0sQ0FBQyxDQUFDO2lDQUNsRCxDQUFDLENBQUM7NkJBQ04sTUFBTTtnQ0FDSHNFLFVBQVUsQ0FBQyxXQUFJO29DQUNYLE1BQU1tRCxVQUFVLENBQUM7aUNBQ3BCLENBQUMsQ0FBQzs2QkFDTjt5QkFDSjtxQkFDSjt3QkFDRzdCLENBQUFBLE1BQU0sQ0FBQzRELG1CQUFtQjs7Ozs7MkJBQ3BCNUQsTUFBTSxDQUFDNEQsbUJBQW1CLENBQUMvSCxXQUFXLENBQUNnSSxVQUFVLENBQUM7O29CQUU1RDlNLGNBQWMsR0FBR0ssTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFaUIsT0FBTyxDQUFDLENBQUN5TCxZQUFZLENBQUNqSSxXQUFXLENBQUNxQixJQUFJLEVBQUVyQixXQUFXLENBQUNpQyxLQUFLLEVBQUUvQixNQUFNLEVBQUU7d0JBQzdGZ0ksWUFBWSxFQUFFbEksV0FBVyxDQUFDaUIsS0FBSzt3QkFDL0JkLFVBQVUsRUFBVkEsVUFBVTt3QkFDVmdJLEdBQUcsRUFBRTFILFNBQVM7d0JBQ2QwQyxTQUFTLEVBQUV4QyxlQUFlO3dCQUMxQnlILE9BQU8sRUFBUEEsT0FBTzt3QkFDUHBLLEdBQUcsRUFBRWdJLFVBQVU7d0JBQ2YxRSxVQUFVLEVBQUUrRyxPQUFPLENBQUNySSxXQUFXLENBQUNzQixVQUFVLENBQUM7d0JBQzNDZ0gsWUFBWSxFQUFFLFNBQUNqTCxJQUFJLEVBQUU4SyxHQUFHLEVBQUVJLE1BQU07bUNBQUd4RixNQUFNLENBQUMvSCxNQUFNLENBQUNtRCxNQUFNLENBQUMsRUFBRSxFQUFFZCxJQUFJLEVBQUU7Z0NBQzFEOEssR0FBRyxFQUFIQSxHQUFHO2dDQUNISSxNQUFNLEVBQU5BLE1BQU07NkJBQ1QsQ0FBQyxDQUFDO3lCQUFBO3dCQUNQdEQsTUFBTSxFQUFFakYsV0FBVyxDQUFDaUYsTUFBTTt3QkFDMUJGLE9BQU8sRUFBRS9FLFdBQVcsQ0FBQytFLE9BQU87d0JBQzVCOUUsYUFBYSxFQUFiQSxhQUFhO3dCQUNidUksYUFBYSxFQUFFeEksV0FBVyxDQUFDd0ksYUFBYTt3QkFDeENDLFNBQVMsRUFBRXpJLFdBQVcsQ0FBQ3lJLFNBQVM7d0JBQ2hDQyxLQUFLLEVBQUUxSSxXQUFXLENBQUMySSxHQUFHO3FCQUN6QixDQUFDLENBQUM7OzJCQUM4QnBOLE1BQU0sQ0FBQ3FOLGdDQUFnQzs7b0JBQXhFdEksd0JBQXdCLFlBQWdEO29CQUNsRWlHLFNBQVMsR0FBRzt3QkFDZDRCLEdBQUcsRUFBRTFILFNBQVM7d0JBQ2RvSSxPQUFPLEVBQUUsSUFBSTt3QkFDYjFGLFNBQVMsRUFBRXhDLGVBQWU7d0JBQzFCTSxLQUFLLEVBQUVqQixXQUFXLENBQUNpQixLQUFLO3dCQUN4QmpELEdBQUcsRUFBRWdJLFVBQVU7cUJBQ2xCLENBQUM7d0JBQ0UzQyxDQUFBQSxDQUFBQSxJQUFJLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHQSxJQUFJLENBQUN5RixZQUFZOzs7OzsyQkFDbkN6RixJQUFJLENBQUN5RixZQUFZLEVBQUU7O29CQUU3Qi9GLE1BQU0sQ0FBQ3dELFNBQVMsQ0FBQyxDQUFDOzs7Ozs7Ozs7OztLQUNyQixFQUFDLENBQUM7SUFDSCxPQUFPUixRQUFRLENBQUNoSSxLQUFLLENBQUMsSUFBSSxFQUFFRCxTQUFTLENBQUMsQ0FBQztDQUMxQztBQUNELFNBQVNpRixNQUFNLENBQUNnRyxjQUFjLEVBQUU7SUFDNUIsT0FBT0MsT0FBTyxDQUFDakwsS0FBSyxDQUFDLElBQUksRUFBRUQsU0FBUyxDQUFDLENBQUM7Q0FDekM7QUFDRCxTQUFTa0wsT0FBTyxHQUFHO0lBQ2ZBLE9BQU8sR0FBR3RMLGlCQUFpQixnSEFBQyxpQkFBVXFMLGNBQWMsRUFBRTtZQVF4Q0UsU0FBUzs7Ozt3QkFQZkYsQ0FBQUEsY0FBYyxDQUFDL0ssR0FBRzs7Ozs7MkJBQ1prTCxXQUFXLENBQUNILGNBQWMsQ0FBQzs7Ozs7OzJCQUkzQkksUUFBUSxDQUFDSixjQUFjLENBQUM7Ozs7Ozs7b0JBRXhCRSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUV4TSxRQUFRLENBQUMsQ0FBQ2tMLGNBQWMsU0FBSyxDQUFDO3dCQUVoRHNCLENBQUFBLFNBQVMsQ0FBQzNHLFNBQVM7Ozs7b0JBQ25CLE1BQU0yRyxTQUFTLENBQUM7O29CQUVwQixJQUFJdkosSUFBc0MsRUFBRTt3QkFDeEMsK0RBQStEO3dCQUMvRG1ELFVBQVUsQ0FBQyxXQUFJOzRCQUNYLE1BQU1vRyxTQUFTLENBQUM7eUJBQ25CLENBQUMsQ0FBQztxQkFDTjs7MkJBQ0tDLFdBQVcsQ0FBQ2hMLFFBQVEsQ0FBQyxFQUFFLEVBQUU2SyxjQUFjLEVBQUU7d0JBQzNDL0ssR0FBRyxFQUFFaUwsU0FBUztxQkFDakIsQ0FBQyxDQUFDOzs7Ozs7Ozs7OztLQUVWLEVBQUMsQ0FBQztJQUNILE9BQU9ELE9BQU8sQ0FBQ2pMLEtBQUssQ0FBQyxJQUFJLEVBQUVELFNBQVMsQ0FBQyxDQUFDO0NBQ3pDO0FBQ0Qsb0RBQW9EO0FBQ3BELGdEQUFnRDtBQUNoRCx3REFBd0Q7QUFDeEQsU0FBU29MLFdBQVcsQ0FBQ0UsZ0JBQWdCLEVBQUU7SUFDbkMsSUFBUWpCLEdBQUcsR0FBWWlCLGdCQUFnQixDQUEvQmpCLEdBQUcsRUFBR25LLEdBQUcsR0FBTW9MLGdCQUFnQixDQUF6QnBMLEdBQUc7SUFDakIsMERBQTBEO0lBQzFELCtGQUErRjtJQUMvRixJQUFJMEIsSUFBcUMsRUFBRTtRQUN2Qyw0REFBNEQ7UUFDNUQsc0VBQXNFO1FBQ3RFYyxVQUFVLENBQUM2SSxvQkFBb0IsRUFBRSxDQUFDO1FBQ2xDLHVFQUF1RTtRQUN2RSxpQkFBaUI7UUFDakIsT0FBT0YsUUFBUSxDQUFDO1lBQ1poQixHQUFHLEVBQUU7dUJBQUksSUFBSTthQUFBO1lBQ2JsSCxLQUFLLEVBQUUsRUFBRTtZQUNUa0MsU0FBUyxFQUFFO3VCQUFJLElBQUk7YUFBQTtZQUNuQm1HLFdBQVcsRUFBRSxFQUFFO1NBQ2xCLENBQUMsQ0FBQztLQUNOO0lBQ0Qsc0ZBQXNGO0lBQ3RGQyxPQUFPLENBQUNqTSxLQUFLLENBQUNVLEdBQUcsQ0FBQyxDQUFDO0lBQ25CdUwsT0FBTyxDQUFDak0sS0FBSyxDQUFFLCtIQUE2SCxDQUFFLENBQUM7SUFDL0ksT0FBTzZDLFVBQVUsQ0FBQ3FKLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQy9MLElBQUksQ0FBQyxnQkFBMkM7WUFBeEM0RCxjQUFvQixTQUFwQkEsSUFBSSxFQUFtQmlJLFdBQVcsU0FBWEEsV0FBVztRQUM1RSxPQUFPLENBQUNJLFlBQVksSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUdBLFlBQVksQ0FBQ3ZHLFNBQVMsQ0FBQyxLQUFLc0csY0FBYyxHQUFHO3lEQUFBLG1CQUFNLENBQUMsa0VBQWlCO1VBQUMsQ0FBQ2hNLElBQUksQ0FBQyxTQUFDa00sQ0FBQzttQkFBSTtnQkFDbEhGLGNBQWMsRUFBRUUsQ0FBQyxDQUFDOUssT0FBTztnQkFDekJ5SyxXQUFXLEVBQUUsRUFBRTthQUNsQjtTQUFDLENBQUMsR0FBRztZQUNORyxjQUFjLEVBQWRBLGNBQWM7WUFDZEgsV0FBVyxFQUFYQSxXQUFXO1NBQ2QsQ0FBQztLQUNMLENBQUMsQ0FBQzdMLElBQUksQ0FBQyxnQkFBcUM7WUFBbENnTSxjQUFjLFNBQWRBLGNBQWMsRUFBR0gsV0FBVyxTQUFYQSxXQUFXO1FBQ25DLElBQUlNLEdBQUc7UUFDUCw4RUFBOEU7UUFDOUUsa0ZBQWtGO1FBQ2xGLHlFQUF5RTtRQUN6RSxJQUFNQyxPQUFPLEdBQUd6QixPQUFPLENBQUNELEdBQUcsQ0FBQztRQUM1QixJQUFNMkIsTUFBTSxHQUFHO1lBQ1gzRyxTQUFTLEVBQUVzRyxjQUFjO1lBQ3pCSSxPQUFPLEVBQVBBLE9BQU87WUFDUHRPLE1BQU0sRUFBTkEsTUFBTTtZQUNOd08sR0FBRyxFQUFFO2dCQUNEL0wsR0FBRyxFQUFIQSxHQUFHO2dCQUNIeUQsUUFBUSxFQUFFekIsV0FBVyxDQUFDcUIsSUFBSTtnQkFDMUJZLEtBQUssRUFBRWpDLFdBQVcsQ0FBQ2lDLEtBQUs7Z0JBQ3hCL0IsTUFBTSxFQUFOQSxNQUFNO2dCQUNOMkosT0FBTyxFQUFQQSxPQUFPO2FBQ1Y7U0FDSjtRQUNELE9BQU9yTSxPQUFPLENBQUNULE9BQU8sQ0FBQyxDQUFDLENBQUM2TSxHQUFHLEdBQUdSLGdCQUFnQixDQUFDbkksS0FBSyxDQUFDLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHMkksR0FBRyxDQUFDNUwsR0FBRyxDQUFDLEdBQUdvTCxnQkFBZ0IsQ0FBQ25JLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRS9FLE1BQU0sQ0FBQyxDQUFDOE4sbUJBQW1CLENBQUM3QixHQUFHLEVBQUUyQixNQUFNLENBQUMsQ0FBQyxDQUFDck0sSUFBSSxDQUFDLFNBQUN3TSxTQUFTO21CQUFHZCxRQUFRLENBQUNqTCxRQUFRLENBQUMsRUFBRSxFQUFFa0wsZ0JBQWdCLEVBQUU7Z0JBQzlNcEwsR0FBRyxFQUFIQSxHQUFHO2dCQUNIbUYsU0FBUyxFQUFFc0csY0FBYztnQkFDekJILFdBQVcsRUFBWEEsV0FBVztnQkFDWHJJLEtBQUssRUFBRWdKLFNBQVM7YUFDbkIsQ0FBQyxDQUFDO1NBQUEsQ0FBQyxDQUFDO0tBQ1osQ0FBQyxDQUFDO0NBQ047QUFDRCxJQUFJQyxTQUFTLEdBQUcsSUFBSTtBQUNwQixtREFBbUQ7QUFDbkQsSUFBSUMsYUFBYSxHQUFHLElBQUk7QUFDeEIsU0FBU0Msa0JBQWtCLENBQUNDLEtBQUssRUFBRTFNLEVBQUUsRUFBRTtJQUNuQywrQkFBK0I7SUFDL0IsSUFBSXpCLE1BQU0sQ0FBQ29PLEVBQUUsRUFBRTtRQUNYQyxXQUFXLENBQUNDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztLQUNwQztJQUNELElBQU1DLE9BQU8sR0FBRzlNLEVBQUUsQ0FBQ3dNLGFBQWEsR0FBR08sbUJBQW1CLEdBQUdDLGtCQUFrQixDQUFDO0lBQzVFLElBQUlqTCxLQUE2QixFQUFFLHdCQVlsQyxNQUFNO1FBQ0gsOEVBQThFO1FBQzlFLElBQUl5SyxhQUFhLEVBQUU7WUFDZjFLLFFBQVEsQ0FBQ3BFLE9BQU8sQ0FBQ29QLE9BQU8sRUFBRUosS0FBSyxDQUFDLENBQUM7WUFDakNGLGFBQWEsR0FBRyxLQUFLLENBQUM7U0FDekIsTUFBTTtZQUNIMUssUUFBUSxDQUFDc0QsTUFBTSxDQUFDMEgsT0FBTyxFQUFFSixLQUFLLENBQUMsQ0FBQztTQUNuQztLQUNKO0NBQ0o7QUFDRCxTQUFTSyxtQkFBbUIsR0FBRztJQUMzQixJQUFJLENBQUN4TyxNQUFNLENBQUNvTyxFQUFFLEVBQUUsT0FBTztJQUN2QkMsV0FBVyxDQUFDQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsd0JBQXdCO0lBQXpCLENBQy9CO0lBQ0RELFdBQVcsQ0FBQ08sT0FBTyxDQUFDLDBCQUEwQixFQUFFLGlCQUFpQixFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ25GUCxXQUFXLENBQUNPLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDekUsSUFBSXBLLFdBQVcsRUFBRTtRQUNiNkosV0FBVyxDQUFDUSxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDQyxPQUFPLENBQUN0SyxXQUFXLENBQUMsQ0FBQztLQUMxRTtJQUNEdUssVUFBVSxFQUFFLENBQUM7Q0FDaEI7QUFDRCxTQUFTTixrQkFBa0IsR0FBRztJQUMxQixJQUFJLENBQUN6TyxNQUFNLENBQUNvTyxFQUFFLEVBQUUsT0FBTztJQUN2QkMsV0FBVyxDQUFDQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMscUJBQXFCO0lBQXRCLENBQzlCO0lBQ0QsSUFBTVUsZUFBZSxHQUFHWCxXQUFXLENBQUNRLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUM7SUFDM0UsSUFBSSxDQUFDRyxlQUFlLENBQUM1TSxNQUFNLEVBQUUsT0FBTztJQUNwQ2lNLFdBQVcsQ0FBQ08sT0FBTyxDQUFDLGdDQUFnQyxFQUFFSSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUN0RSxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDL0YyRCxXQUFXLENBQUNPLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDckUsSUFBSXBLLFdBQVcsRUFBRTtRQUNiNkosV0FBVyxDQUFDUSxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDQyxPQUFPLENBQUN0SyxXQUFXLENBQUMsQ0FBQztRQUNwRTZKLFdBQVcsQ0FBQ1EsZ0JBQWdCLENBQUMsZ0NBQWdDLENBQUMsQ0FBQ0MsT0FBTyxDQUFDdEssV0FBVyxDQUFDLENBQUM7S0FDdkY7SUFDRHVLLFVBQVUsRUFBRSxDQUFDO0lBQ2I7UUFDSSxnQ0FBZ0M7UUFDaEMsZ0JBQWdCO0tBQ25CLENBQUNELE9BQU8sQ0FBQyxTQUFDRixPQUFPO2VBQUdQLFdBQVcsQ0FBQ1ksYUFBYSxDQUFDTCxPQUFPLENBQUM7S0FBQSxDQUFDLENBQUM7Q0FDNUQ7QUFDRCxTQUFTRyxVQUFVLEdBQUc7SUFDbEI7UUFDSSxjQUFjO1FBQ2QsY0FBYztRQUNkLGFBQWE7UUFDYixhQUFhO0tBQ2hCLENBQUNELE9BQU8sQ0FBQyxTQUFDUixJQUFJO2VBQUdELFdBQVcsQ0FBQ1UsVUFBVSxDQUFDVCxJQUFJLENBQUM7S0FBQSxDQUFDLENBQUM7Q0FDbkQ7QUFDRCxTQUFTWSxZQUFZLENBQUMsS0FBYSxFQUFFO1FBQWYsUUFBVSxHQUFWLEtBQWEsQ0FBWHBJLFFBQVE7SUFDNUIsT0FBTyxhQUFhLENBQUN0SCxNQUFNLENBQUNtRCxPQUFPLENBQUNxRSxhQUFhLENBQUNwQyxTQUFTLEVBQUU7UUFDekRuRCxFQUFFLEVBQUUsU0FBQ0wsS0FBSzttQkFBRzRMLFdBQVcsQ0FBQztnQkFDakJmLEdBQUcsRUFBRTFILFNBQVM7Z0JBQ2R6QyxHQUFHLEVBQUVWLEtBQUs7YUFDYixDQUFDLENBQUMrRSxLQUFLLENBQUMsU0FBQ3JFLEdBQUc7dUJBQUd1TCxPQUFPLENBQUNqTSxLQUFLLENBQUMsd0JBQXdCLEVBQUVVLEdBQUcsQ0FBQzthQUFBLENBQUM7U0FBQTtLQUNwRSxFQUFFLGFBQWEsQ0FBQ3RDLE1BQU0sQ0FBQ21ELE9BQU8sQ0FBQ3FFLGFBQWEsQ0FBQ3BILGNBQWMsQ0FBQ3VQLGFBQWEsQ0FBQ0MsUUFBUSxFQUFFO1FBQ2pGblEsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFcUIsT0FBTyxDQUFDLENBQUMrTyx3QkFBd0IsQ0FBQ2hRLE1BQU0sQ0FBQztLQUN2RCxFQUFFLGFBQWEsQ0FBQ0csTUFBTSxDQUFDbUQsT0FBTyxDQUFDcUUsYUFBYSxDQUFDdEgsbUJBQW1CLENBQUM0UCxrQkFBa0IsQ0FBQ0YsUUFBUSxFQUFFO1FBQzNGblEsS0FBSyxFQUFFa0YsV0FBVztLQUNyQixFQUFFLGFBQWEsQ0FBQzNFLE1BQU0sQ0FBQ21ELE9BQU8sQ0FBQ3FFLGFBQWEsQ0FBQ3hHLG1CQUFtQixDQUFDK08sa0JBQWtCLENBQUNILFFBQVEsRUFBRTtRQUMzRm5RLEtBQUssRUFBRXVFLHNMQUE2QjtLQUN2QyxFQUFFc0QsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDbkI7QUFiUW9JLEtBQUFBLFlBQVk7QUFjckIsU0FBU08sU0FBUyxDQUFDeEQsR0FBRyxFQUFFeUQsUUFBUSxFQUFFO0lBQzlCLE9BQU8sYUFBYSxDQUFDbFEsTUFBTSxDQUFDbUQsT0FBTyxDQUFDcUUsYUFBYSxDQUFDaUYsR0FBRyxFQUFFbk4sTUFBTSxDQUFDbUQsTUFBTSxDQUFDLEVBQUUsRUFBRXlOLFFBQVEsQ0FBQyxDQUFDLENBQUM7Q0FDdkY7QUFDRCxJQUFNeEQsT0FBTyxHQUFHLFNBQUNELEdBQUc7V0FBRyxTQUFDMEQsZUFBZSxFQUFHO1FBQ2xDLElBQU1ELFFBQVEsR0FBRzFOLFFBQVEsQ0FBQyxFQUFFLEVBQUUyTixlQUFlLEVBQUU7WUFDM0MxSSxTQUFTLEVBQUV4QyxlQUFlO1lBQzFCM0MsR0FBRyxFQUFFZ0MsV0FBVyxDQUFDaEMsR0FBRztZQUNwQnpDLE1BQU0sRUFBTkEsTUFBTTtTQUNULENBQUM7UUFDRixPQUFPLGFBQWEsQ0FBQ0csTUFBTSxDQUFDbUQsT0FBTyxDQUFDcUUsYUFBYSxDQUFDa0ksWUFBWSxFQUFFLElBQUksRUFBRU8sU0FBUyxDQUFDeEQsR0FBRyxFQUFFeUQsUUFBUSxDQUFDLENBQUMsQ0FBQztLQUNuRztDQUFBO0FBQ0wsSUFBSUUsWUFBWTtBQUNoQixJQUFJcE0sS0FBc0IsRUFBRSx1V0FvSDNCO0FBQ0QsSUFBSWdLLFlBQVk7QUFDaEIsU0FBU1AsUUFBUSxDQUFDckosS0FBSyxFQUFFO1FBaUNaa1AsT0FBTyxHQUZoQix5RUFBeUU7SUFDekUseUNBQXlDO0lBQ3pDLFNBQVNBLE9BQU8sR0FBRztRQUNmLElBQUksQ0FBQzFGLFdBQVcsSUFDaEIsOEJBQThCO1FBenNCdEMsYUFBYSxLQTBzQm9CLFlBQVksRUFBRTtZQUNuQyxPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUNELElBQU0yRixnQkFBZ0IsR0FBR3BQLFlBQVksQ0FBQzhDLFFBQVEsQ0FBQ3VNLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDdEYsSUFBTUMsWUFBWSxHQUFHLElBQUlDLEdBQUcsQ0FBQ0gsZ0JBQWdCLENBQUN0SixHQUFHLENBQUMsU0FBQzBKLEdBQUc7bUJBQUdBLEdBQUcsQ0FBQ0MsWUFBWSxDQUFDLGFBQWEsQ0FBQztTQUFBLENBQUMsQ0FBQztRQUMxRixJQUFNQyxRQUFRLEdBQUc1TSxRQUFRLENBQUM2TSxhQUFhLENBQUMsc0JBQXNCLENBQUM7UUFDL0QsSUFBTUMsS0FBSyxHQUFHRixRQUFRLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHQSxRQUFRLENBQUNELFlBQVksQ0FBQyxZQUFZLENBQUM7UUFDN0VoRyxXQUFXLENBQUMwQixPQUFPLENBQUMsZ0JBQW9CO2dCQUFqQmdDLElBQUksU0FBSkEsSUFBSSxFQUFHMEMsSUFBSSxTQUFKQSxJQUFJO1lBQzlCLElBQUksQ0FBQ1AsWUFBWSxDQUFDalEsR0FBRyxDQUFDOE4sSUFBSSxDQUFDLEVBQUU7Z0JBQ3pCLElBQU0yQyxRQUFRLEdBQUdoTixRQUFRLENBQUNPLGFBQWEsQ0FBQyxPQUFPLENBQUM7Z0JBQ2hEeU0sUUFBUSxDQUFDQyxZQUFZLENBQUMsYUFBYSxFQUFFNUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNDMkMsUUFBUSxDQUFDQyxZQUFZLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQyxJQUFJSCxLQUFLLEVBQUU7b0JBQ1BFLFFBQVEsQ0FBQ0MsWUFBWSxDQUFDLE9BQU8sRUFBRUgsS0FBSyxDQUFDLENBQUM7aUJBQ3pDO2dCQUNEOU0sUUFBUSxDQUFDa04sSUFBSSxDQUFDQyxXQUFXLENBQUNILFFBQVEsQ0FBQyxDQUFDO2dCQUNwQ0EsUUFBUSxDQUFDRyxXQUFXLENBQUNuTixRQUFRLENBQUNvTixjQUFjLENBQUNMLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDdkQ7U0FDSixDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztLQUNmO1FBQ1FNLFlBQVksR0FBckIsU0FBU0EsWUFBWSxHQUFHO1FBQ3BCLElBQ0EsOEJBQThCO1FBanVCdEMsS0FxdUJpQixFQUFFLHlFQTZCVjtRQUNELElBQUlsUSxLQUFLLENBQUN5SSxNQUFNLEVBQUU7WUFDZHBFLE1BQU0sQ0FBQ3lNLFFBQVEsQ0FBQzlRLEtBQUssQ0FBQ3lJLE1BQU0sQ0FBQ3NJLENBQUMsRUFBRS9RLEtBQUssQ0FBQ3lJLE1BQU0sQ0FBQ3VJLENBQUMsQ0FBQyxDQUFDO1NBQ25EO0tBQ0o7UUFDUUMsWUFBWSxHQUFyQixTQUFTQSxZQUFZLEdBQUc7UUFDcEJDLGNBQWMsRUFBRSxDQUFDO0tBQ3BCO0lBbEdELElBQU03SSxHQUFHLEdBQTBDckksS0FBSyxDQUFsRHFJLEdBQUcsRUFBR2hGLFNBQVMsR0FBOEJyRCxLQUFLLENBQTVDcUQsU0FBUyxFQUFHbEMsS0FBSyxHQUFzQm5CLEtBQUssQ0FBaENtQixLQUFLLEVBQUdqRCxHQUFHLEdBQWdCOEIsS0FBSyxDQUF4QjlCLEdBQUcsRUFBR2lULE9BQU8sR0FBTW5SLEtBQUssQ0FBbEJtUixPQUFPO0lBQzdDLElBQUkzSCxXQUFXLEdBQUcsU0FBUyxJQUFJeEosS0FBSyxHQUFHN0IsU0FBUyxHQUFHNkIsS0FBSyxDQUFDd0osV0FBVztJQUNwRW5HLFNBQVMsR0FBR0EsU0FBUyxJQUFJdUcsWUFBWSxDQUFDdkcsU0FBUyxDQUFDO0lBQ2hEbEMsS0FBSyxHQUFHQSxLQUFLLElBQUl5SSxZQUFZLENBQUN6SSxLQUFLLENBQUM7SUFDcEMsSUFBTWlRLEtBQUssR0FBR3hSLE1BQTRDLEdBQUcsQ0FBaUIsR0FBRyxDQUFDLENBQUN1UixPQUFPO0lBQzFGLElBQU1yRixRQUFRLEdBQUcxTixRQUFRLENBQUMsRUFBRSxFQUFFK0MsS0FBSyxFQUFFO1FBQ2pDa0MsU0FBUyxFQUFFK04sS0FBSyxHQUFHcEYsWUFBWSxHQUFHM0ksU0FBUztRQUMzQ25GLEdBQUcsRUFBSEEsR0FBRztRQUNIekMsTUFBTSxFQUFOQSxNQUFNO0tBQ1QsQ0FBQztJQUNGLCtGQUErRjtJQUMvRm1PLFlBQVksR0FBR2tDLFFBQVEsQ0FBQztJQUN4QixJQUFJcUUsUUFBUSxHQUFHLEtBQUs7SUFDcEIsSUFBSWUsY0FBYztJQUNsQixJQUFNRyxhQUFhLEdBQUcsSUFBSTNULE9BQU8sQ0FBQyxTQUFDVCxPQUFPLEVBQUVDLE1BQU0sRUFBRztRQUNqRCxJQUFJdUQsZ0JBQWdCLEVBQUU7WUFDbEJBLGdCQUFnQixFQUFFLENBQUM7U0FDdEI7UUFDRHlRLGNBQWMsR0FBRyxXQUFJO1lBQ2pCelEsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQ3hCeEQsT0FBTyxFQUFFLENBQUM7U0FDYixDQUFDO1FBQ0Z3RCxnQkFBZ0IsR0FBRyxXQUFJO1lBQ25CMFAsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNoQjFQLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUN4QixJQUFNakQsS0FBSyxHQUFHLElBQUlvSyxLQUFLLENBQUMsd0JBQXdCLENBQUM7WUFDakRwSyxLQUFLLENBQUNnRixTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCdEYsTUFBTSxDQUFDTSxLQUFLLENBQUMsQ0FBQztTQUNqQixDQUFDO0tBQ0wsQ0FBQztJQXNFRjBSLE9BQU8sRUFBRSxDQUFDO0lBQ1YsSUFBTW9DLElBQUksR0FBRyxhQUFhLENBQUMxVixNQUFNLENBQUNtRCxPQUFPLENBQUNxRSxhQUFhLENBQUN4SCxNQUFNLENBQUNtRCxPQUFPLENBQUN3UyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQzNWLE1BQU0sQ0FBQ21ELE9BQU8sQ0FBQ3FFLGFBQWEsQ0FBQ29PLElBQUksRUFBRTtRQUNwSUMsUUFBUSxFQUFFdkIsWUFBWTtLQUN6QixDQUFDLEVBQUUsYUFBYSxDQUFDdFUsTUFBTSxDQUFDbUQsT0FBTyxDQUFDcUUsYUFBYSxDQUFDa0ksWUFBWSxFQUFFLElBQUksRUFBRU8sU0FBUyxDQUFDeEQsR0FBRyxFQUFFeUQsUUFBUSxDQUFDLEVBQUUsYUFBYSxDQUFDbFEsTUFBTSxDQUFDbUQsT0FBTyxDQUFDcUUsYUFBYSxDQUFDL0csT0FBTyxDQUFDcVYsTUFBTSxFQUFFO1FBQ3BKQyxJQUFJLEVBQUUsc0JBQXNCO0tBQy9CLEVBQUUsYUFBYSxDQUFDL1YsTUFBTSxDQUFDbUQsT0FBTyxDQUFDcUUsYUFBYSxDQUFDM0csZUFBZSxDQUFDbVYsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RixpRkFBaUY7SUFDakZ0SCxrQkFBa0IsQ0FBQ2hLLFVBQVUsRUFBRSxTQUFDbVIsUUFBUTtlQUFHLGFBQWEsQ0FBQzdWLE1BQU0sQ0FBQ21ELE9BQU8sQ0FBQ3FFLGFBQWEsQ0FBQ3lPLElBQUksRUFBRTtZQUNwRkMsU0FBUyxFQUFFO2dCQUNQTCxRQUFRO2dCQUNSUixZQUFZO2FBQ2Y7U0FDSixFQUFFclIsTUFBOEIsR0FBRyxhQUFhLENBQUNoRSxDQUFtRSxHQUFHMFYsSUFBSSxDQUFDO0tBQUEsQ0FBQyxDQUFDO0lBQ25JLE9BQU9ELGFBQWEsQ0FBQztDQUN4QjtBQUNELFNBQVNRLElBQUksQ0FBQyxLQUF5QixFQUFFO1FBQXpCQyxTQUFTLEdBQVgsS0FBeUIsQ0FBdkJBLFNBQVMsRUFBRzVPLFFBQVEsR0FBdEIsS0FBeUIsQ0FBWEEsUUFBUTs7SUFDaEMsbUVBQW1FO0lBQ25FLHNDQUFzQztJQUN0Q3RILE1BQU0sQ0FBQ21ELE9BQU8sQ0FBQ2tULGVBQWUsQ0FBQztlQUFJSCxTQUFTLENBQUM1RyxPQUFPLENBQUMsU0FBQ3VHLFFBQVE7bUJBQUdBLFFBQVEsRUFBRTtTQUFBLENBQUM7S0FBQSxFQUFFO1FBQzFFSyxTQUFTO0tBQ1osQ0FBQyxDQUFDO0lBQ0gsMEVBQTBFO0lBQzFFLG1DQUFtQztJQUNuQ2xXLE1BQU0sQ0FBQ21ELE9BQU8sQ0FBQytQLFNBQVMsQ0FBQyxXQUFJO1FBQ3pCLENBQUMsQ0FBQyxFQUFFdFMsbUJBQW1CLENBQUMsQ0FBQ3VDLE9BQU8sQ0FBQzZCLFdBQVcsQ0FBQyxDQUFDO0tBQ2pELEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDUCxJQUFJaEIsS0FBNEIsRUFBRSxFQVFqQztJQUNELE9BQU9zRCxRQUFRLENBQUM7Q0FDbkI7R0FyQlEyTyxJQUFJO0FBQUpBLE1BQUFBLElBQUk7QUFzQmIsbUVBQW1FO0FBQ25FLHlEQUF5RDtBQUN6RCxTQUFTTCxJQUFJLENBQUMsS0FBYSxFQUFFO1FBQWYsUUFBVSxHQUFWLEtBQWEsQ0FBWEMsUUFBUTs7SUFDcEIsaUVBQWlFO0lBQ2pFLHVDQUF1QztJQUN2QzdWLE1BQU0sQ0FBQ21ELE9BQU8sQ0FBQ2tULGVBQWUsQ0FBQztlQUFJUixRQUFRLEVBQUU7S0FBQSxFQUFFO1FBQzNDQSxRQUFRO0tBQ1gsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxJQUFJLENBQUM7Q0FDZjtJQVBRRCxJQUFJO0FBQUpBLE1BQUFBLElBQUk7QUFTYixJQUFJLENBQUMsT0FBT3BXLE9BQU8sQ0FBQzJELE9BQU8sS0FBSyxVQUFVLElBQUssT0FBTzNELE9BQU8sQ0FBQzJELE9BQU8sS0FBSyxRQUFRLElBQUkzRCxPQUFPLENBQUMyRCxPQUFPLEtBQUssSUFBSSxDQUFFLElBQUksT0FBTzNELE9BQU8sQ0FBQzJELE9BQU8sQ0FBQ0QsVUFBVSxLQUFLLFdBQVcsRUFBRTtJQUNySzVELE1BQU0sQ0FBQ0MsY0FBYyxDQUFDQyxPQUFPLENBQUMyRCxPQUFPLEVBQUUsWUFBWSxFQUFFO1FBQUUxRCxLQUFLLEVBQUUsSUFBSTtLQUFFLENBQUMsQ0FBQztJQUN0RUgsTUFBTSxDQUFDbUQsTUFBTSxDQUFDakQsT0FBTyxDQUFDMkQsT0FBTyxFQUFFM0QsT0FBTyxDQUFDLENBQUM7SUFDeENpWCxNQUFNLENBQUNqWCxPQUFPLEdBQUdBLE9BQU8sQ0FBQzJELE9BQU8sQ0FBQztDQUNsQyxDQUVELGlDQUFpQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvaW5kZXguanM/M2NhMSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuaW5pdGlhbGl6ZSA9IGluaXRpYWxpemU7XG5leHBvcnRzLmh5ZHJhdGUgPSBoeWRyYXRlO1xuZXhwb3J0cy5lbWl0dGVyID0gZXhwb3J0cy5yb3V0ZXIgPSBleHBvcnRzLnZlcnNpb24gPSB2b2lkIDA7XG5yZXF1aXJlKFwiLi4vYnVpbGQvcG9seWZpbGxzL3BvbHlmaWxsLW1vZHVsZVwiKTtcbnZhciBfcmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG52YXIgX2hlYWRNYW5hZ2VyQ29udGV4dCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL2hlYWQtbWFuYWdlci1jb250ZXh0XCIpO1xudmFyIF9taXR0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9taXR0XCIpKTtcbnZhciBfcm91dGVyQ29udGV4dCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci1jb250ZXh0XCIpO1xudmFyIF9pc0R5bmFtaWMgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaXMtZHluYW1pY1wiKTtcbnZhciBfcXVlcnlzdHJpbmcgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcXVlcnlzdHJpbmdcIik7XG52YXIgX3J1bnRpbWVDb25maWcgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9ydW50aW1lLWNvbmZpZ1wiKTtcbnZhciBfdXRpbHMgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi91dGlsc1wiKTtcbnZhciBfcG9ydGFsID0gcmVxdWlyZShcIi4vcG9ydGFsXCIpO1xudmFyIF9oZWFkTWFuYWdlciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vaGVhZC1tYW5hZ2VyXCIpKTtcbnZhciBfcGFnZUxvYWRlciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vcGFnZS1sb2FkZXJcIikpO1xudmFyIF9wZXJmb3JtYW5jZVJlbGF5ZXIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3BlcmZvcm1hbmNlLXJlbGF5ZXJcIikpO1xudmFyIF9yb3V0ZUFubm91bmNlciA9IHJlcXVpcmUoXCIuL3JvdXRlLWFubm91bmNlclwiKTtcbnZhciBfcm91dGVyID0gcmVxdWlyZShcIi4vcm91dGVyXCIpO1xudmFyIF9pc0Vycm9yID0gcmVxdWlyZShcIi4uL2xpYi9pcy1lcnJvclwiKTtcbnZhciBfaW1hZ2VDb25maWdDb250ZXh0ID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvaW1hZ2UtY29uZmlnLWNvbnRleHRcIik7XG52YXIgX3JlbW92ZUJhc2VQYXRoID0gcmVxdWlyZShcIi4vcmVtb3ZlLWJhc2UtcGF0aFwiKTtcbnZhciBfaGFzQmFzZVBhdGggPSByZXF1aXJlKFwiLi9oYXMtYmFzZS1wYXRoXCIpO1xuZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTtcbiAgICAgICAgdmFyIHZhbHVlID0gaW5mby52YWx1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKF9uZXh0LCBfdGhyb3cpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXMsIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHZhciBnZW4gPSBmbi5hcHBseShzZWxmLCBhcmdzKTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9uZXh0KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gX3Rocm93KGVycikge1xuICAgICAgICAgICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX25leHQodW5kZWZpbmVkKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICAgIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0YXJnZXQpIHtcbiAgICAgICAgZm9yKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yKHZhciBrZXkgaW4gc291cmNlKXtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH07XG4gICAgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikge1xuICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgICAgIGRlZmF1bHQ6IG9ialxuICAgIH07XG59XG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7XG4gICAgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsO1xuICAgIHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7XG4gICAgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjYWNoZTtcbiAgICB9O1xuICAgIHJldHVybiBjYWNoZTtcbn1cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikge1xuICAgIGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgICAgIH07XG4gICAgfVxuICAgIHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpO1xuICAgIGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkge1xuICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KG9iaik7XG4gICAgfVxuICAgIHZhciBuZXdPYmogPSB7fTtcbiAgICB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICAgZm9yKHZhciBrZXkgaW4gb2JqKXtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgIHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsO1xuICAgICAgICAgICAgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld09ialtrZXldID0gb2JqW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgbmV3T2JqLmRlZmF1bHQgPSBvYmo7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIGNhY2hlLnNldChvYmosIG5ld09iaik7XG4gICAgfVxuICAgIHJldHVybiBuZXdPYmo7XG59XG5jb25zdCBSZWFjdERPTSA9IHByb2Nlc3MuZW52Ll9fTkVYVF9SRUFDVF9ST09UID8gcmVxdWlyZSgncmVhY3QtZG9tL2NsaWVudCcpIDogcmVxdWlyZSgncmVhY3QtZG9tJyk7XG5jb25zdCB2ZXJzaW9uID0gXCIxMi4yLjNcIjtcbmV4cG9ydHMudmVyc2lvbiA9IHZlcnNpb247XG5sZXQgcm91dGVyO1xuZXhwb3J0cy5yb3V0ZXIgPSByb3V0ZXI7XG5jb25zdCBlbWl0dGVyID0gKDAsIF9taXR0KS5kZWZhdWx0KCk7XG5leHBvcnRzLmVtaXR0ZXIgPSBlbWl0dGVyO1xuY29uc3QgbG9vc2VUb0FycmF5ID0gKGlucHV0KT0+W10uc2xpY2UuY2FsbChpbnB1dCk7XG5sZXQgaW5pdGlhbERhdGE7XG5sZXQgZGVmYXVsdExvY2FsZSA9IHVuZGVmaW5lZDtcbmxldCBhc1BhdGg7XG5sZXQgcGFnZUxvYWRlcjtcbmxldCBhcHBFbGVtZW50O1xubGV0IGhlYWRNYW5hZ2VyO1xubGV0IGluaXRpYWxNYXRjaGVzTWlkZGxld2FyZSA9IGZhbHNlO1xubGV0IGxhc3RSZW5kZXJSZWplY3Q7XG5sZXQgd2VicGFja0hNUjtcbmxldCBDYWNoZWRBcHAsIG9uUGVyZkVudHJ5O1xubGV0IENhY2hlZENvbXBvbmVudDtcbnNlbGYuX19uZXh0X3JlcXVpcmVfXyA9IF9fd2VicGFja19yZXF1aXJlX187XG5jbGFzcyBDb250YWluZXIgZXh0ZW5kcyBfcmVhY3QuZGVmYXVsdC5Db21wb25lbnQge1xuICAgIGNvbXBvbmVudERpZENhdGNoKGNvbXBvbmVudEVyciwgaW5mbykge1xuICAgICAgICB0aGlzLnByb3BzLmZuKGNvbXBvbmVudEVyciwgaW5mbyk7XG4gICAgfVxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgICB0aGlzLnNjcm9sbFRvSGFzaCgpO1xuICAgICAgICAvLyBXZSBuZWVkIHRvIHJlcGxhY2UgdGhlIHJvdXRlciBzdGF0ZSBpZjpcbiAgICAgICAgLy8gLSB0aGUgcGFnZSB3YXMgKGF1dG8pIGV4cG9ydGVkIGFuZCBoYXMgYSBxdWVyeSBzdHJpbmcgb3Igc2VhcmNoIChoYXNoKVxuICAgICAgICAvLyAtIGl0IHdhcyBhdXRvIGV4cG9ydGVkIGFuZCBpcyBhIGR5bmFtaWMgcm91dGUgKHRvIHByb3ZpZGUgcGFyYW1zKVxuICAgICAgICAvLyAtIGlmIGl0IGlzIGEgY2xpZW50LXNpZGUgc2tlbGV0b24gKGZhbGxiYWNrIHJlbmRlcilcbiAgICAgICAgLy8gLSBpZiBtaWRkbGV3YXJlIG1hdGNoZXMgdGhlIGN1cnJlbnQgcGFnZSAobWF5IGhhdmUgcmV3cml0ZSBwYXJhbXMpXG4gICAgICAgIC8vIC0gaWYgcmV3cml0ZXMgaW4gbmV4dC5jb25maWcuanMgbWF0Y2ggKG1heSBoYXZlIHJld3JpdGUgcGFyYW1zKVxuICAgICAgICBpZiAocm91dGVyLmlzU3NyICYmIC8vIFdlIGRvbid0IHVwZGF0ZSBmb3IgNDA0IHJlcXVlc3RzIGFzIHRoaXMgY2FuIG1vZGlmeVxuICAgICAgICAvLyB0aGUgYXNQYXRoIHVuZXhwZWN0ZWRseSBlLmcuIGFkZGluZyBiYXNlUGF0aCB3aGVuXG4gICAgICAgIC8vIGl0IHdhc24ndCBvcmlnaW5hbGx5IHByZXNlbnRcbiAgICAgICAgaW5pdGlhbERhdGEucGFnZSAhPT0gJy80MDQnICYmIGluaXRpYWxEYXRhLnBhZ2UgIT09ICcvX2Vycm9yJyAmJiAoaW5pdGlhbERhdGEuaXNGYWxsYmFjayB8fCBpbml0aWFsRGF0YS5uZXh0RXhwb3J0ICYmICgoMCwgX2lzRHluYW1pYykuaXNEeW5hbWljUm91dGUocm91dGVyLnBhdGhuYW1lKSB8fCBsb2NhdGlvbi5zZWFyY2ggfHwgcHJvY2Vzcy5lbnYuX19ORVhUX0hBU19SRVdSSVRFUyB8fCBpbml0aWFsTWF0Y2hlc01pZGRsZXdhcmUpIHx8IGluaXRpYWxEYXRhLnByb3BzICYmIGluaXRpYWxEYXRhLnByb3BzLl9fTl9TU0cgJiYgKGxvY2F0aW9uLnNlYXJjaCB8fCBwcm9jZXNzLmVudi5fX05FWFRfSEFTX1JFV1JJVEVTIHx8IGluaXRpYWxNYXRjaGVzTWlkZGxld2FyZSkpKSB7XG4gICAgICAgICAgICAvLyB1cGRhdGUgcXVlcnkgb24gbW91bnQgZm9yIGV4cG9ydGVkIHBhZ2VzXG4gICAgICAgICAgICByb3V0ZXIucmVwbGFjZShyb3V0ZXIucGF0aG5hbWUgKyAnPycgKyBTdHJpbmcoKDAsIF9xdWVyeXN0cmluZykuYXNzaWduKCgwLCBfcXVlcnlzdHJpbmcpLnVybFF1ZXJ5VG9TZWFyY2hQYXJhbXMocm91dGVyLnF1ZXJ5KSwgbmV3IFVSTFNlYXJjaFBhcmFtcyhsb2NhdGlvbi5zZWFyY2gpKSksIGFzUGF0aCwge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAvLyBXQVJOSU5HOiBgX2hgIGlzIGFuIGludGVybmFsIG9wdGlvbiBmb3IgaGFuZGluZyBOZXh0LmpzXG4gICAgICAgICAgICAgICAgLy8gY2xpZW50LXNpZGUgaHlkcmF0aW9uLiBZb3VyIGFwcCBzaG91bGQgX25ldmVyXyB1c2UgdGhpcyBwcm9wZXJ0eS5cbiAgICAgICAgICAgICAgICAvLyBJdCBtYXkgY2hhbmdlIGF0IGFueSB0aW1lIHdpdGhvdXQgbm90aWNlLlxuICAgICAgICAgICAgICAgIF9oOiAxLFxuICAgICAgICAgICAgICAgIC8vIEZhbGxiYWNrIHBhZ2VzIG11c3QgdHJpZ2dlciB0aGUgZGF0YSBmZXRjaCwgc28gdGhlIHRyYW5zaXRpb24gaXNcbiAgICAgICAgICAgICAgICAvLyBub3Qgc2hhbGxvdy5cbiAgICAgICAgICAgICAgICAvLyBPdGhlciBwYWdlcyAoc3RyaWN0bHkgdXBkYXRpbmcgcXVlcnkpIGhhcHBlbnMgc2hhbGxvd2x5LCBhcyBkYXRhXG4gICAgICAgICAgICAgICAgLy8gcmVxdWlyZW1lbnRzIHdvdWxkIGFscmVhZHkgYmUgcHJlc2VudC5cbiAgICAgICAgICAgICAgICBzaGFsbG93OiAhaW5pdGlhbERhdGEuaXNGYWxsYmFjayAmJiAhaW5pdGlhbE1hdGNoZXNNaWRkbGV3YXJlXG4gICAgICAgICAgICB9KS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICAgICAgICAgIGlmICghZXJyLmNhbmNlbGxlZCkgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgICAgICB0aGlzLnNjcm9sbFRvSGFzaCgpO1xuICAgIH1cbiAgICBzY3JvbGxUb0hhc2goKSB7XG4gICAgICAgIGxldCB7IGhhc2ggIH0gPSBsb2NhdGlvbjtcbiAgICAgICAgaGFzaCA9IGhhc2ggJiYgaGFzaC5zdWJzdHJpbmcoMSk7XG4gICAgICAgIGlmICghaGFzaCkgcmV0dXJuO1xuICAgICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGhhc2gpO1xuICAgICAgICBpZiAoIWVsKSByZXR1cm47XG4gICAgICAgIC8vIElmIHdlIGNhbGwgc2Nyb2xsSW50b1ZpZXcoKSBpbiBoZXJlIHdpdGhvdXQgYSBzZXRUaW1lb3V0XG4gICAgICAgIC8vIGl0IHdvbid0IHNjcm9sbCBwcm9wZXJseS5cbiAgICAgICAgc2V0VGltZW91dCgoKT0+ZWwuc2Nyb2xsSW50b1ZpZXcoKSwgMCk7XG4gICAgfVxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgeyBSZWFjdERldk92ZXJsYXkgLCAgfSA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9AbmV4dC9yZWFjdC1kZXYtb3ZlcmxheS9kaXN0L2NsaWVudCcpO1xuICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChSZWFjdERldk92ZXJsYXksIG51bGwsIHRoaXMucHJvcHMuY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gaW5pdGlhbGl6ZSgpIHtcbiAgICByZXR1cm4gX2luaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cbmZ1bmN0aW9uIF9pbml0aWFsaXplKCkge1xuICAgIF9pbml0aWFsaXplID0gX2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qKG9wdHMgPSB7fSkge1xuICAgICAgICAvLyBUaGlzIG1ha2VzIHN1cmUgdGhpcyBzcGVjaWZpYyBsaW5lcyBhcmUgcmVtb3ZlZCBpbiBwcm9kdWN0aW9uXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgd2VicGFja0hNUiA9IG9wdHMud2VicGFja0hNUjtcbiAgICAgICAgfVxuICAgICAgICBpbml0aWFsRGF0YSA9IEpTT04ucGFyc2UoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ19fTkVYVF9EQVRBX18nKS50ZXh0Q29udGVudCk7XG4gICAgICAgIHdpbmRvdy5fX05FWFRfREFUQV9fID0gaW5pdGlhbERhdGE7XG4gICAgICAgIGRlZmF1bHRMb2NhbGUgPSBpbml0aWFsRGF0YS5kZWZhdWx0TG9jYWxlO1xuICAgICAgICBjb25zdCBwcmVmaXggPSBpbml0aWFsRGF0YS5hc3NldFByZWZpeCB8fCAnJztcbiAgICAgICAgLy8gV2l0aCBkeW5hbWljIGFzc2V0UHJlZml4IGl0J3Mgbm8gbG9uZ2VyIHBvc3NpYmxlIHRvIHNldCBhc3NldFByZWZpeCBhdCB0aGUgYnVpbGQgdGltZVxuICAgICAgICAvLyBTbywgdGhpcyBpcyBob3cgd2UgZG8gaXQgaW4gdGhlIGNsaWVudCBzaWRlIGF0IHJ1bnRpbWVcbiAgICAgICAgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gPSBgJHtwcmVmaXh9L19uZXh0L2AgLy9lc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICAgIDtcbiAgICAgICAgLy8gSW5pdGlhbGl6ZSBuZXh0L2NvbmZpZyB3aXRoIHRoZSBlbnZpcm9ubWVudCBjb25maWd1cmF0aW9uXG4gICAgICAgICgwLCBfcnVudGltZUNvbmZpZykuc2V0Q29uZmlnKHtcbiAgICAgICAgICAgIHNlcnZlclJ1bnRpbWVDb25maWc6IHt9LFxuICAgICAgICAgICAgcHVibGljUnVudGltZUNvbmZpZzogaW5pdGlhbERhdGEucnVudGltZUNvbmZpZyB8fCB7fVxuICAgICAgICB9KTtcbiAgICAgICAgYXNQYXRoID0gKDAsIF91dGlscykuZ2V0VVJMKCk7XG4gICAgICAgIC8vIG1ha2Ugc3VyZSBub3QgdG8gYXR0ZW1wdCBzdHJpcHBpbmcgYmFzZVBhdGggZm9yIDQwNHNcbiAgICAgICAgaWYgKCgwLCBfaGFzQmFzZVBhdGgpLmhhc0Jhc2VQYXRoKGFzUGF0aCkpIHtcbiAgICAgICAgICAgIGFzUGF0aCA9ICgwLCBfcmVtb3ZlQmFzZVBhdGgpLnJlbW92ZUJhc2VQYXRoKGFzUGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9JMThOX1NVUFBPUlQpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgbm9ybWFsaXplTG9jYWxlUGF0aCAgfSA9IHJlcXVpcmUoJy4uL3NoYXJlZC9saWIvaTE4bi9ub3JtYWxpemUtbG9jYWxlLXBhdGgnKTtcbiAgICAgICAgICAgIGNvbnN0IHsgZGV0ZWN0RG9tYWluTG9jYWxlICB9ID0gcmVxdWlyZSgnLi4vc2hhcmVkL2xpYi9pMThuL2RldGVjdC1kb21haW4tbG9jYWxlJyk7XG4gICAgICAgICAgICBjb25zdCB7IHBhcnNlUmVsYXRpdmVVcmwgIH0gPSByZXF1aXJlKCcuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9wYXJzZS1yZWxhdGl2ZS11cmwnKTtcbiAgICAgICAgICAgIGNvbnN0IHsgZm9ybWF0VXJsICB9ID0gcmVxdWlyZSgnLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvZm9ybWF0LXVybCcpO1xuICAgICAgICAgICAgaWYgKGluaXRpYWxEYXRhLmxvY2FsZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWRBcyA9IHBhcnNlUmVsYXRpdmVVcmwoYXNQYXRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGVQYXRoUmVzdWx0ID0gbm9ybWFsaXplTG9jYWxlUGF0aChwYXJzZWRBcy5wYXRobmFtZSwgaW5pdGlhbERhdGEubG9jYWxlcyk7XG4gICAgICAgICAgICAgICAgaWYgKGxvY2FsZVBhdGhSZXN1bHQuZGV0ZWN0ZWRMb2NhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkQXMucGF0aG5hbWUgPSBsb2NhbGVQYXRoUmVzdWx0LnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICAgICBhc1BhdGggPSBmb3JtYXRVcmwocGFyc2VkQXMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGRlcml2ZSB0aGUgZGVmYXVsdCBsb2NhbGUgaWYgaXQgd2Fzbid0IGRldGVjdGVkIGluIHRoZSBhc1BhdGhcbiAgICAgICAgICAgICAgICAgICAgLy8gc2luY2Ugd2UgZG9uJ3QgcHJlcmVuZGVyIHN0YXRpYyBwYWdlcyB3aXRoIGFsbCBwb3NzaWJsZSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIC8vIGxvY2FsZXNcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdExvY2FsZSA9IGluaXRpYWxEYXRhLmxvY2FsZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gYXR0ZW1wdCBkZXRlY3RpbmcgZGVmYXVsdCBsb2NhbGUgYmFzZWQgb24gaG9zdG5hbWVcbiAgICAgICAgICAgICAgICBjb25zdCBkZXRlY3RlZERvbWFpbiA9IGRldGVjdERvbWFpbkxvY2FsZShwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9ET01BSU5TLCB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUpO1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IGludmVzdGlnYXRlIGlmIGRlZmF1bHRMb2NhbGUgbmVlZHMgdG8gYmUgcG9wdWxhdGVkIGFmdGVyXG4gICAgICAgICAgICAgICAgLy8gaHlkcmF0aW9uIHRvIHByZXZlbnQgbWlzbWF0Y2hlZCByZW5kZXJzXG4gICAgICAgICAgICAgICAgaWYgKGRldGVjdGVkRG9tYWluKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRMb2NhbGUgPSBkZXRlY3RlZERvbWFpbi5kZWZhdWx0TG9jYWxlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5pdGlhbERhdGEuc2NyaXB0TG9hZGVyKSB7XG4gICAgICAgICAgICBjb25zdCB7IGluaXRTY3JpcHRMb2FkZXIgIH0gPSByZXF1aXJlKCcuL3NjcmlwdCcpO1xuICAgICAgICAgICAgaW5pdFNjcmlwdExvYWRlcihpbml0aWFsRGF0YS5zY3JpcHRMb2FkZXIpO1xuICAgICAgICB9XG4gICAgICAgIHBhZ2VMb2FkZXIgPSBuZXcgX3BhZ2VMb2FkZXIuZGVmYXVsdChpbml0aWFsRGF0YS5idWlsZElkLCBwcmVmaXgpO1xuICAgICAgICBjb25zdCByZWdpc3RlciA9IChbciwgZl0pPT5wYWdlTG9hZGVyLnJvdXRlTG9hZGVyLm9uRW50cnlwb2ludChyLCBmKTtcbiAgICAgICAgaWYgKHdpbmRvdy5fX05FWFRfUCkge1xuICAgICAgICAgICAgLy8gRGVmZXIgcGFnZSByZWdpc3RyYXRpb24gZm9yIGFub3RoZXIgdGljay4gVGhpcyB3aWxsIGluY3JlYXNlIHRoZSBvdmVyYWxsXG4gICAgICAgICAgICAvLyBsYXRlbmN5IGluIGh5ZHJhdGluZyB0aGUgcGFnZSwgYnV0IHJlZHVjZSB0aGUgdG90YWwgYmxvY2tpbmcgdGltZS5cbiAgICAgICAgICAgIHdpbmRvdy5fX05FWFRfUC5tYXAoKHApPT5zZXRUaW1lb3V0KCgpPT5yZWdpc3RlcihwKSwgMCkpO1xuICAgICAgICB9XG4gICAgICAgIHdpbmRvdy5fX05FWFRfUCA9IFtdO1xuICAgICAgICB3aW5kb3cuX19ORVhUX1AucHVzaCA9IHJlZ2lzdGVyO1xuICAgICAgICBoZWFkTWFuYWdlciA9ICgwLCBfaGVhZE1hbmFnZXIpLmRlZmF1bHQoKTtcbiAgICAgICAgaGVhZE1hbmFnZXIuZ2V0SXNTc3IgPSAoKT0+e1xuICAgICAgICAgICAgcmV0dXJuIHJvdXRlci5pc1NzcjtcbiAgICAgICAgfTtcbiAgICAgICAgYXBwRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdfX25leHQnKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFzc2V0UHJlZml4OiBwcmVmaXhcbiAgICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4gX2luaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cbmZ1bmN0aW9uIGh5ZHJhdGUob3B0cykge1xuICAgIHJldHVybiBfaHlkcmF0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuZnVuY3Rpb24gX2h5ZHJhdGUoKSB7XG4gICAgX2h5ZHJhdGUgPSBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbioob3B0cykge1xuICAgICAgICBsZXQgaW5pdGlhbEVyciA9IGluaXRpYWxEYXRhLmVycjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGFwcEVudHJ5cG9pbnQgPSB5aWVsZCBwYWdlTG9hZGVyLnJvdXRlTG9hZGVyLndoZW5FbnRyeXBvaW50KCcvX2FwcCcpO1xuICAgICAgICAgICAgaWYgKCdlcnJvcicgaW4gYXBwRW50cnlwb2ludCkge1xuICAgICAgICAgICAgICAgIHRocm93IGFwcEVudHJ5cG9pbnQuZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB7IGNvbXBvbmVudDogYXBwICwgZXhwb3J0czogbW9kICB9ID0gYXBwRW50cnlwb2ludDtcbiAgICAgICAgICAgIENhY2hlZEFwcCA9IGFwcDtcbiAgICAgICAgICAgIGlmIChtb2QgJiYgbW9kLnJlcG9ydFdlYlZpdGFscykge1xuICAgICAgICAgICAgICAgIG9uUGVyZkVudHJ5ID0gKHsgaWQgLCBuYW1lICwgc3RhcnRUaW1lICwgdmFsdWUgLCBkdXJhdGlvbiAsIGVudHJ5VHlwZSAsIGVudHJpZXMgIH0pPT57XG4gICAgICAgICAgICAgICAgICAgIC8vIENvbWJpbmVzIHRpbWVzdGFtcCB3aXRoIHJhbmRvbSBudW1iZXIgZm9yIHVuaXF1ZSBJRFxuICAgICAgICAgICAgICAgICAgICBjb25zdCB1bmlxdWVJRCA9IGAke0RhdGUubm93KCl9LSR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKDllMTIgLSAxKSkgKyAxZTEyfWA7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwZXJmU3RhcnRFbnRyeTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJpZXMgJiYgZW50cmllcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZTdGFydEVudHJ5ID0gZW50cmllc1swXS5zdGFydFRpbWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2ViVml0YWxzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGlkIHx8IHVuaXF1ZUlELFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZTogc3RhcnRUaW1lIHx8IHBlcmZTdGFydEVudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlID09IG51bGwgPyBkdXJhdGlvbiA6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGVudHJ5VHlwZSA9PT0gJ21hcmsnIHx8IGVudHJ5VHlwZSA9PT0gJ21lYXN1cmUnID8gJ2N1c3RvbScgOiAnd2ViLXZpdGFsJ1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBtb2QucmVwb3J0V2ViVml0YWxzKHdlYlZpdGFscyk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBhZ2VFbnRyeXBvaW50ID0gLy8gVGhlIGRldiBzZXJ2ZXIgZmFpbHMgdG8gc2VydmUgc2NyaXB0IGFzc2V0cyB3aGVuIHRoZXJlJ3MgYSBoeWRyYXRpb25cbiAgICAgICAgICAgIC8vIGVycm9yLCBzbyB3ZSBuZWVkIHRvIHNraXAgd2FpdGluZyBmb3IgdGhlIGVudHJ5cG9pbnQuXG4gICAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50JyAmJiBpbml0aWFsRGF0YS5lcnIgPyB7XG4gICAgICAgICAgICAgICAgZXJyb3I6IGluaXRpYWxEYXRhLmVyclxuICAgICAgICAgICAgfSA6IHlpZWxkIHBhZ2VMb2FkZXIucm91dGVMb2FkZXIud2hlbkVudHJ5cG9pbnQoaW5pdGlhbERhdGEucGFnZSk7XG4gICAgICAgICAgICBpZiAoJ2Vycm9yJyBpbiBwYWdlRW50cnlwb2ludCkge1xuICAgICAgICAgICAgICAgIHRocm93IHBhZ2VFbnRyeXBvaW50LmVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQ2FjaGVkQ29tcG9uZW50ID0gcGFnZUVudHJ5cG9pbnQuY29tcG9uZW50O1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGlzVmFsaWRFbGVtZW50VHlwZSAgfSA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9yZWFjdC1pcycpO1xuICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEVsZW1lbnRUeXBlKENhY2hlZENvbXBvbmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZGVmYXVsdCBleHBvcnQgaXMgbm90IGEgUmVhY3QgQ29tcG9uZW50IGluIHBhZ2U6IFwiJHtpbml0aWFsRGF0YS5wYWdlfVwiYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcjEpIHtcbiAgICAgICAgICAgIC8vIFRoaXMgY2F0Y2hlcyBlcnJvcnMgbGlrZSB0aHJvd2luZyBpbiB0aGUgdG9wIGxldmVsIG9mIGEgbW9kdWxlXG4gICAgICAgICAgICBpbml0aWFsRXJyID0gKDAsIF9pc0Vycm9yKS5nZXRQcm9wZXJFcnJvcihlcnJvcjEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgY29uc3QgeyBnZXRTZXJ2ZXJFcnJvciAsICB9ID0gcmVxdWlyZSgnbmV4dC9kaXN0L2NvbXBpbGVkL0BuZXh0L3JlYWN0LWRldi1vdmVybGF5L2Rpc3QvY2xpZW50Jyk7XG4gICAgICAgICAgICAvLyBTZXJ2ZXItc2lkZSBydW50aW1lIGVycm9ycyBuZWVkIHRvIGJlIHJlLXRocm93biBvbiB0aGUgY2xpZW50LXNpZGUgc29cbiAgICAgICAgICAgIC8vIHRoYXQgdGhlIG92ZXJsYXkgaXMgcmVuZGVyZWQuXG4gICAgICAgICAgICBpZiAoaW5pdGlhbEVycikge1xuICAgICAgICAgICAgICAgIGlmIChpbml0aWFsRXJyID09PSBpbml0aWFsRGF0YS5lcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHZW5lcmF0ZSBhIG5ldyBlcnJvciBvYmplY3QuIFdlIGB0aHJvd2AgaXQgYmVjYXVzZSBzb21lIGJyb3dzZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBzZXQgdGhlIGBzdGFja2Agd2hlbiB0aHJvd24sIGFuZCB3ZSB3YW50IHRvIGVuc3VyZSBvdXJzIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90IG92ZXJyaWRkZW4gd2hlbiB3ZSByZS10aHJvdyBpdCBiZWxvdy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoaW5pdGlhbEVyci5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvci5uYW1lID0gaW5pdGlhbEVyci5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Iuc3RhY2sgPSBpbml0aWFsRXJyLnN0YWNrO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZ2V0U2VydmVyRXJyb3IoZXJyb3IsIGluaXRpYWxFcnIuc291cmNlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgaW5pdGlhbEVycjtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh3aW5kb3cuX19ORVhUX1BSRUxPQURSRUFEWSkge1xuICAgICAgICAgICAgeWllbGQgd2luZG93Ll9fTkVYVF9QUkVMT0FEUkVBRFkoaW5pdGlhbERhdGEuZHluYW1pY0lkcyk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0cy5yb3V0ZXIgPSByb3V0ZXIgPSAoMCwgX3JvdXRlcikuY3JlYXRlUm91dGVyKGluaXRpYWxEYXRhLnBhZ2UsIGluaXRpYWxEYXRhLnF1ZXJ5LCBhc1BhdGgsIHtcbiAgICAgICAgICAgIGluaXRpYWxQcm9wczogaW5pdGlhbERhdGEucHJvcHMsXG4gICAgICAgICAgICBwYWdlTG9hZGVyLFxuICAgICAgICAgICAgQXBwOiBDYWNoZWRBcHAsXG4gICAgICAgICAgICBDb21wb25lbnQ6IENhY2hlZENvbXBvbmVudCxcbiAgICAgICAgICAgIHdyYXBBcHAsXG4gICAgICAgICAgICBlcnI6IGluaXRpYWxFcnIsXG4gICAgICAgICAgICBpc0ZhbGxiYWNrOiBCb29sZWFuKGluaXRpYWxEYXRhLmlzRmFsbGJhY2spLFxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uOiAoaW5mbywgQXBwLCBzY3JvbGwpPT5yZW5kZXIoT2JqZWN0LmFzc2lnbih7fSwgaW5mbywge1xuICAgICAgICAgICAgICAgICAgICBBcHAsXG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGxvY2FsZTogaW5pdGlhbERhdGEubG9jYWxlLFxuICAgICAgICAgICAgbG9jYWxlczogaW5pdGlhbERhdGEubG9jYWxlcyxcbiAgICAgICAgICAgIGRlZmF1bHRMb2NhbGUsXG4gICAgICAgICAgICBkb21haW5Mb2NhbGVzOiBpbml0aWFsRGF0YS5kb21haW5Mb2NhbGVzLFxuICAgICAgICAgICAgaXNQcmV2aWV3OiBpbml0aWFsRGF0YS5pc1ByZXZpZXcsXG4gICAgICAgICAgICBpc1JzYzogaW5pdGlhbERhdGEucnNjXG4gICAgICAgIH0pO1xuICAgICAgICBpbml0aWFsTWF0Y2hlc01pZGRsZXdhcmUgPSB5aWVsZCByb3V0ZXIuX2luaXRpYWxNYXRjaGVzTWlkZGxld2FyZVByb21pc2U7XG4gICAgICAgIGNvbnN0IHJlbmRlckN0eCA9IHtcbiAgICAgICAgICAgIEFwcDogQ2FjaGVkQXBwLFxuICAgICAgICAgICAgaW5pdGlhbDogdHJ1ZSxcbiAgICAgICAgICAgIENvbXBvbmVudDogQ2FjaGVkQ29tcG9uZW50LFxuICAgICAgICAgICAgcHJvcHM6IGluaXRpYWxEYXRhLnByb3BzLFxuICAgICAgICAgICAgZXJyOiBpbml0aWFsRXJyXG4gICAgICAgIH07XG4gICAgICAgIGlmIChvcHRzID09IG51bGwgPyB2b2lkIDAgOiBvcHRzLmJlZm9yZVJlbmRlcikge1xuICAgICAgICAgICAgeWllbGQgb3B0cy5iZWZvcmVSZW5kZXIoKTtcbiAgICAgICAgfVxuICAgICAgICByZW5kZXIocmVuZGVyQ3R4KTtcbiAgICB9KTtcbiAgICByZXR1cm4gX2h5ZHJhdGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cbmZ1bmN0aW9uIHJlbmRlcihyZW5kZXJpbmdQcm9wcykge1xuICAgIHJldHVybiBfcmVuZGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5mdW5jdGlvbiBfcmVuZGVyKCkge1xuICAgIF9yZW5kZXIgPSBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbioocmVuZGVyaW5nUHJvcHMpIHtcbiAgICAgICAgaWYgKHJlbmRlcmluZ1Byb3BzLmVycikge1xuICAgICAgICAgICAgeWllbGQgcmVuZGVyRXJyb3IocmVuZGVyaW5nUHJvcHMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB5aWVsZCBkb1JlbmRlcihyZW5kZXJpbmdQcm9wcyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc3QgcmVuZGVyRXJyID0gKDAsIF9pc0Vycm9yKS5nZXRQcm9wZXJFcnJvcihlcnIpO1xuICAgICAgICAgICAgLy8gYnViYmxlIHVwIGNhbmNlbGF0aW9uIGVycm9yc1xuICAgICAgICAgICAgaWYgKHJlbmRlckVyci5jYW5jZWxsZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyByZW5kZXJFcnI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgICAgICAgICAvLyBFbnN1cmUgdGhpcyBlcnJvciBpcyBkaXNwbGF5ZWQgaW4gdGhlIG92ZXJsYXkgaW4gZGV2ZWxvcG1lbnRcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICAgICAgICAgIHRocm93IHJlbmRlckVycjtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHlpZWxkIHJlbmRlckVycm9yKF9leHRlbmRzKHt9LCByZW5kZXJpbmdQcm9wcywge1xuICAgICAgICAgICAgICAgIGVycjogcmVuZGVyRXJyXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gX3JlbmRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuLy8gVGhpcyBtZXRob2QgaGFuZGxlcyBhbGwgcnVudGltZSBhbmQgZGVidWcgZXJyb3JzLlxuLy8gNDA0IGFuZCA1MDAgZXJyb3JzIGFyZSBzcGVjaWFsIGtpbmQgb2YgZXJyb3JzXG4vLyBhbmQgdGhleSBhcmUgc3RpbGwgaGFuZGxlIHZpYSB0aGUgbWFpbiByZW5kZXIgbWV0aG9kLlxuZnVuY3Rpb24gcmVuZGVyRXJyb3IocmVuZGVyRXJyb3JQcm9wcykge1xuICAgIGNvbnN0IHsgQXBwICwgZXJyICB9ID0gcmVuZGVyRXJyb3JQcm9wcztcbiAgICAvLyBJbiBkZXZlbG9wbWVudCBydW50aW1lIGVycm9ycyBhcmUgY2F1Z2h0IGJ5IG91ciBvdmVybGF5XG4gICAgLy8gSW4gcHJvZHVjdGlvbiB3ZSBjYXRjaCBydW50aW1lIGVycm9ycyB1c2luZyBjb21wb25lbnREaWRDYXRjaCB3aGljaCB3aWxsIHRyaWdnZXIgcmVuZGVyRXJyb3JcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAvLyBBIE5leHQuanMgcmVuZGVyaW5nIHJ1bnRpbWUgZXJyb3IgaXMgYWx3YXlzIHVucmVjb3ZlcmFibGVcbiAgICAgICAgLy8gRklYTUU6IGxldCdzIG1ha2UgdGhpcyByZWNvdmVyYWJsZSAoZXJyb3IgaW4gR0lQIGNsaWVudC10cmFuc2l0aW9uKVxuICAgICAgICB3ZWJwYWNrSE1SLm9uVW5yZWNvdmVyYWJsZUVycm9yKCk7XG4gICAgICAgIC8vIFdlIG5lZWQgdG8gcmVuZGVyIGFuIGVtcHR5IDxBcHA+IHNvIHRoYXQgdGhlIGA8UmVhY3REZXZPdmVybGF5PmAgY2FuXG4gICAgICAgIC8vIHJlbmRlciBpdHNlbGYuXG4gICAgICAgIHJldHVybiBkb1JlbmRlcih7XG4gICAgICAgICAgICBBcHA6ICgpPT5udWxsLFxuICAgICAgICAgICAgcHJvcHM6IHt9LFxuICAgICAgICAgICAgQ29tcG9uZW50OiAoKT0+bnVsbCxcbiAgICAgICAgICAgIHN0eWxlU2hlZXRzOiBbXVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gTWFrZSBzdXJlIHdlIGxvZyB0aGUgZXJyb3IgdG8gdGhlIGNvbnNvbGUsIG90aGVyd2lzZSB1c2VycyBjYW4ndCB0cmFjayBkb3duIGlzc3Vlcy5cbiAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgY29uc29sZS5lcnJvcihgQSBjbGllbnQtc2lkZSBleGNlcHRpb24gaGFzIG9jY3VycmVkLCBzZWUgaGVyZSBmb3IgbW9yZSBpbmZvOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9jbGllbnQtc2lkZS1leGNlcHRpb24tb2NjdXJyZWRgKTtcbiAgICByZXR1cm4gcGFnZUxvYWRlci5sb2FkUGFnZSgnL19lcnJvcicpLnRoZW4oKHsgcGFnZTogRXJyb3JDb21wb25lbnQgLCBzdHlsZVNoZWV0cyAgfSk9PntcbiAgICAgICAgcmV0dXJuIChsYXN0QXBwUHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IGxhc3RBcHBQcm9wcy5Db21wb25lbnQpID09PSBFcnJvckNvbXBvbmVudCA/IGltcG9ydCgnLi4vcGFnZXMvX2Vycm9yJykudGhlbigobSk9Pih7XG4gICAgICAgICAgICAgICAgRXJyb3JDb21wb25lbnQ6IG0uZGVmYXVsdCxcbiAgICAgICAgICAgICAgICBzdHlsZVNoZWV0czogW11cbiAgICAgICAgICAgIH0pKSA6IHtcbiAgICAgICAgICAgIEVycm9yQ29tcG9uZW50LFxuICAgICAgICAgICAgc3R5bGVTaGVldHNcbiAgICAgICAgfTtcbiAgICB9KS50aGVuKCh7IEVycm9yQ29tcG9uZW50ICwgc3R5bGVTaGVldHMgIH0pPT57XG4gICAgICAgIHZhciByZWY7XG4gICAgICAgIC8vIEluIHByb2R1Y3Rpb24gd2UgZG8gYSBub3JtYWwgcmVuZGVyIHdpdGggdGhlIGBFcnJvckNvbXBvbmVudGAgYXMgY29tcG9uZW50LlxuICAgICAgICAvLyBJZiB3ZSd2ZSBnb3R0ZW4gaGVyZSB1cG9uIGluaXRpYWwgcmVuZGVyLCB3ZSBjYW4gdXNlIHRoZSBwcm9wcyBmcm9tIHRoZSBzZXJ2ZXIuXG4gICAgICAgIC8vIE90aGVyd2lzZSwgd2UgbmVlZCB0byBjYWxsIGBnZXRJbml0aWFsUHJvcHNgIG9uIGBBcHBgIGJlZm9yZSBtb3VudGluZy5cbiAgICAgICAgY29uc3QgQXBwVHJlZSA9IHdyYXBBcHAoQXBwKTtcbiAgICAgICAgY29uc3QgYXBwQ3R4ID0ge1xuICAgICAgICAgICAgQ29tcG9uZW50OiBFcnJvckNvbXBvbmVudCxcbiAgICAgICAgICAgIEFwcFRyZWUsXG4gICAgICAgICAgICByb3V0ZXIsXG4gICAgICAgICAgICBjdHg6IHtcbiAgICAgICAgICAgICAgICBlcnIsXG4gICAgICAgICAgICAgICAgcGF0aG5hbWU6IGluaXRpYWxEYXRhLnBhZ2UsXG4gICAgICAgICAgICAgICAgcXVlcnk6IGluaXRpYWxEYXRhLnF1ZXJ5LFxuICAgICAgICAgICAgICAgIGFzUGF0aCxcbiAgICAgICAgICAgICAgICBBcHBUcmVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKChyZWYgPSByZW5kZXJFcnJvclByb3BzLnByb3BzKSA9PSBudWxsID8gdm9pZCAwIDogcmVmLmVycikgPyByZW5kZXJFcnJvclByb3BzLnByb3BzIDogKDAsIF91dGlscykubG9hZEdldEluaXRpYWxQcm9wcyhBcHAsIGFwcEN0eCkpLnRoZW4oKGluaXRQcm9wcyk9PmRvUmVuZGVyKF9leHRlbmRzKHt9LCByZW5kZXJFcnJvclByb3BzLCB7XG4gICAgICAgICAgICAgICAgZXJyLFxuICAgICAgICAgICAgICAgIENvbXBvbmVudDogRXJyb3JDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgc3R5bGVTaGVldHMsXG4gICAgICAgICAgICAgICAgcHJvcHM6IGluaXRQcm9wc1xuICAgICAgICAgICAgfSkpKTtcbiAgICB9KTtcbn1cbmxldCByZWFjdFJvb3QgPSBudWxsO1xuLy8gT24gaW5pdGlhbCByZW5kZXIgYSBoeWRyYXRlIHNob3VsZCBhbHdheXMgaGFwcGVuXG5sZXQgc2hvdWxkSHlkcmF0ZSA9IHRydWU7XG5mdW5jdGlvbiByZW5kZXJSZWFjdEVsZW1lbnQoZG9tRWwsIGZuKSB7XG4gICAgLy8gbWFyayBzdGFydCBvZiBoeWRyYXRlL3JlbmRlclxuICAgIGlmIChfdXRpbHMuU1QpIHtcbiAgICAgICAgcGVyZm9ybWFuY2UubWFyaygnYmVmb3JlUmVuZGVyJyk7XG4gICAgfVxuICAgIGNvbnN0IHJlYWN0RWwgPSBmbihzaG91bGRIeWRyYXRlID8gbWFya0h5ZHJhdGVDb21wbGV0ZSA6IG1hcmtSZW5kZXJDb21wbGV0ZSk7XG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9SRUFDVF9ST09UKSB7XG4gICAgICAgIGlmICghcmVhY3RSb290KSB7XG4gICAgICAgICAgICAvLyBVbmxpa2Ugd2l0aCBjcmVhdGVSb290LCB5b3UgZG9uJ3QgbmVlZCBhIHNlcGFyYXRlIHJvb3QucmVuZGVyKCkgY2FsbCBoZXJlXG4gICAgICAgICAgICByZWFjdFJvb3QgPSBSZWFjdERPTS5oeWRyYXRlUm9vdChkb21FbCwgcmVhY3RFbCk7XG4gICAgICAgICAgICAvLyBUT0RPOiBSZW1vdmUgc2hvdWxkSHlkcmF0ZSB2YXJpYWJsZSB3aGVuIFJlYWN0IDE4IGlzIHN0YWJsZSBhcyBpdCBjYW4gZGVwZW5kIG9uIGByZWFjdFJvb3RgIGV4aXN0aW5nXG4gICAgICAgICAgICBzaG91bGRIeWRyYXRlID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBzdGFydFRyYW5zaXRpb24gPSBfcmVhY3QuZGVmYXVsdC5zdGFydFRyYW5zaXRpb247XG4gICAgICAgICAgICBzdGFydFRyYW5zaXRpb24oKCk9PntcbiAgICAgICAgICAgICAgICByZWFjdFJvb3QucmVuZGVyKHJlYWN0RWwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBUaGUgY2hlY2sgZm9yIGAuaHlkcmF0ZWAgaXMgdGhlcmUgdG8gc3VwcG9ydCBSZWFjdCBhbHRlcm5hdGl2ZXMgbGlrZSBwcmVhY3RcbiAgICAgICAgaWYgKHNob3VsZEh5ZHJhdGUpIHtcbiAgICAgICAgICAgIFJlYWN0RE9NLmh5ZHJhdGUocmVhY3RFbCwgZG9tRWwpO1xuICAgICAgICAgICAgc2hvdWxkSHlkcmF0ZSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgUmVhY3RET00ucmVuZGVyKHJlYWN0RWwsIGRvbUVsKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIG1hcmtIeWRyYXRlQ29tcGxldGUoKSB7XG4gICAgaWYgKCFfdXRpbHMuU1QpIHJldHVybjtcbiAgICBwZXJmb3JtYW5jZS5tYXJrKCdhZnRlckh5ZHJhdGUnKSAvLyBtYXJrIGVuZCBvZiBoeWRyYXRpb25cbiAgICA7XG4gICAgcGVyZm9ybWFuY2UubWVhc3VyZSgnTmV4dC5qcy1iZWZvcmUtaHlkcmF0aW9uJywgJ25hdmlnYXRpb25TdGFydCcsICdiZWZvcmVSZW5kZXInKTtcbiAgICBwZXJmb3JtYW5jZS5tZWFzdXJlKCdOZXh0LmpzLWh5ZHJhdGlvbicsICdiZWZvcmVSZW5kZXInLCAnYWZ0ZXJIeWRyYXRlJyk7XG4gICAgaWYgKG9uUGVyZkVudHJ5KSB7XG4gICAgICAgIHBlcmZvcm1hbmNlLmdldEVudHJpZXNCeU5hbWUoJ05leHQuanMtaHlkcmF0aW9uJykuZm9yRWFjaChvblBlcmZFbnRyeSk7XG4gICAgfVxuICAgIGNsZWFyTWFya3MoKTtcbn1cbmZ1bmN0aW9uIG1hcmtSZW5kZXJDb21wbGV0ZSgpIHtcbiAgICBpZiAoIV91dGlscy5TVCkgcmV0dXJuO1xuICAgIHBlcmZvcm1hbmNlLm1hcmsoJ2FmdGVyUmVuZGVyJykgLy8gbWFyayBlbmQgb2YgcmVuZGVyXG4gICAgO1xuICAgIGNvbnN0IG5hdlN0YXJ0RW50cmllcyA9IHBlcmZvcm1hbmNlLmdldEVudHJpZXNCeU5hbWUoJ3JvdXRlQ2hhbmdlJywgJ21hcmsnKTtcbiAgICBpZiAoIW5hdlN0YXJ0RW50cmllcy5sZW5ndGgpIHJldHVybjtcbiAgICBwZXJmb3JtYW5jZS5tZWFzdXJlKCdOZXh0LmpzLXJvdXRlLWNoYW5nZS10by1yZW5kZXInLCBuYXZTdGFydEVudHJpZXNbMF0ubmFtZSwgJ2JlZm9yZVJlbmRlcicpO1xuICAgIHBlcmZvcm1hbmNlLm1lYXN1cmUoJ05leHQuanMtcmVuZGVyJywgJ2JlZm9yZVJlbmRlcicsICdhZnRlclJlbmRlcicpO1xuICAgIGlmIChvblBlcmZFbnRyeSkge1xuICAgICAgICBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lKCdOZXh0LmpzLXJlbmRlcicpLmZvckVhY2gob25QZXJmRW50cnkpO1xuICAgICAgICBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lKCdOZXh0LmpzLXJvdXRlLWNoYW5nZS10by1yZW5kZXInKS5mb3JFYWNoKG9uUGVyZkVudHJ5KTtcbiAgICB9XG4gICAgY2xlYXJNYXJrcygpO1xuICAgIFtcbiAgICAgICAgJ05leHQuanMtcm91dGUtY2hhbmdlLXRvLXJlbmRlcicsXG4gICAgICAgICdOZXh0LmpzLXJlbmRlcidcbiAgICBdLmZvckVhY2goKG1lYXN1cmUpPT5wZXJmb3JtYW5jZS5jbGVhck1lYXN1cmVzKG1lYXN1cmUpKTtcbn1cbmZ1bmN0aW9uIGNsZWFyTWFya3MoKSB7XG4gICAgW1xuICAgICAgICAnYmVmb3JlUmVuZGVyJyxcbiAgICAgICAgJ2FmdGVySHlkcmF0ZScsXG4gICAgICAgICdhZnRlclJlbmRlcicsXG4gICAgICAgICdyb3V0ZUNoYW5nZSdcbiAgICBdLmZvckVhY2goKG1hcmspPT5wZXJmb3JtYW5jZS5jbGVhck1hcmtzKG1hcmspKTtcbn1cbmZ1bmN0aW9uIEFwcENvbnRhaW5lcih7IGNoaWxkcmVuICB9KSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChDb250YWluZXIsIHtcbiAgICAgICAgZm46IChlcnJvcik9PnJlbmRlckVycm9yKHtcbiAgICAgICAgICAgICAgICBBcHA6IENhY2hlZEFwcCxcbiAgICAgICAgICAgICAgICBlcnI6IGVycm9yXG4gICAgICAgICAgICB9KS5jYXRjaCgoZXJyKT0+Y29uc29sZS5lcnJvcignRXJyb3IgcmVuZGVyaW5nIHBhZ2U6ICcsIGVycikpXG4gICAgfSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9yb3V0ZXJDb250ZXh0LlJvdXRlckNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgdmFsdWU6ICgwLCBfcm91dGVyKS5tYWtlUHVibGljUm91dGVySW5zdGFuY2Uocm91dGVyKVxuICAgIH0sIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfaGVhZE1hbmFnZXJDb250ZXh0LkhlYWRNYW5hZ2VyQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICB2YWx1ZTogaGVhZE1hbmFnZXJcbiAgICB9LCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX2ltYWdlQ29uZmlnQ29udGV4dC5JbWFnZUNvbmZpZ0NvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgdmFsdWU6IHByb2Nlc3MuZW52Ll9fTkVYVF9JTUFHRV9PUFRTXG4gICAgfSwgY2hpbGRyZW4pKSkpO1xufVxuZnVuY3Rpb24gcmVuZGVyQXBwKEFwcCwgYXBwUHJvcHMpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KEFwcCwgT2JqZWN0LmFzc2lnbih7fSwgYXBwUHJvcHMpKTtcbn1cbmNvbnN0IHdyYXBBcHAgPSAoQXBwKT0+KHdyYXBwZWRBcHBQcm9wcyk9PntcbiAgICAgICAgY29uc3QgYXBwUHJvcHMgPSBfZXh0ZW5kcyh7fSwgd3JhcHBlZEFwcFByb3BzLCB7XG4gICAgICAgICAgICBDb21wb25lbnQ6IENhY2hlZENvbXBvbmVudCxcbiAgICAgICAgICAgIGVycjogaW5pdGlhbERhdGEuZXJyLFxuICAgICAgICAgICAgcm91dGVyXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KEFwcENvbnRhaW5lciwgbnVsbCwgcmVuZGVyQXBwKEFwcCwgYXBwUHJvcHMpKTtcbiAgICB9O1xubGV0IFJTQ0NvbXBvbmVudDtcbmlmIChwcm9jZXNzLmVudi5fX05FWFRfUlNDKSB7XG4gICAgY29uc3QgZ2V0Q2FjaGVLZXkgPSAoKT0+e1xuICAgICAgICBjb25zdCB7IHBhdGhuYW1lICwgc2VhcmNoICB9ID0gbG9jYXRpb247XG4gICAgICAgIHJldHVybiBwYXRobmFtZSArIHNlYXJjaDtcbiAgICB9O1xuICAgIGNvbnN0IHsgY3JlYXRlRnJvbUZldGNoICwgY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtICwgIH0gPSByZXF1aXJlKCduZXh0L2Rpc3QvY29tcGlsZWQvcmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrJyk7XG4gICAgY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuICAgIGxldCBpbml0aWFsU2VydmVyRGF0YUJ1ZmZlciA9IHVuZGVmaW5lZDtcbiAgICBsZXQgaW5pdGlhbFNlcnZlckRhdGFXcml0ZXIgPSB1bmRlZmluZWQ7XG4gICAgbGV0IGluaXRpYWxTZXJ2ZXJEYXRhTG9hZGVkID0gZmFsc2U7XG4gICAgbGV0IGluaXRpYWxTZXJ2ZXJEYXRhRmx1c2hlZCA9IGZhbHNlO1xuICAgIGZ1bmN0aW9uIG5leHRTZXJ2ZXJEYXRhQ2FsbGJhY2soc2VnKSB7XG4gICAgICAgIGlmIChzZWdbMF0gPT09IDApIHtcbiAgICAgICAgICAgIGluaXRpYWxTZXJ2ZXJEYXRhQnVmZmVyID0gW107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWluaXRpYWxTZXJ2ZXJEYXRhQnVmZmVyKSB0aHJvdyBuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQgc2VydmVyIGRhdGE6IG1pc3NpbmcgYm9vdHN0cmFwIHNjcmlwdC4nKTtcbiAgICAgICAgICAgIGlmIChpbml0aWFsU2VydmVyRGF0YVdyaXRlcikge1xuICAgICAgICAgICAgICAgIGluaXRpYWxTZXJ2ZXJEYXRhV3JpdGVyLmVucXVldWUoZW5jb2Rlci5lbmNvZGUoc2VnWzJdKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGluaXRpYWxTZXJ2ZXJEYXRhQnVmZmVyLnB1c2goc2VnWzJdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBUaGVyZSBtaWdodCBiZSByYWNlIGNvbmRpdGlvbnMgYmV0d2VlbiBgbmV4dFNlcnZlckRhdGFSZWdpc3RlcldyaXRlcmAgYW5kXG4gICAgLy8gYERPTUNvbnRlbnRMb2FkZWRgLiBUaGUgZm9ybWVyIHdpbGwgYmUgY2FsbGVkIHdoZW4gUmVhY3Qgc3RhcnRzIHRvIGh5ZHJhdGVcbiAgICAvLyB0aGUgcm9vdCwgdGhlIGxhdHRlciB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBET00gaXMgZnVsbHkgbG9hZGVkLlxuICAgIC8vIEZvciBzdHJlYW1pbmcsIHRoZSBmb3JtZXIgaXMgY2FsbGVkIGZpcnN0IGR1ZSB0byBwYXJ0aWFsIGh5ZHJhdGlvbi5cbiAgICAvLyBGb3Igbm9uLXN0cmVhbWluZywgdGhlIGxhdHRlciBjYW4gYmUgY2FsbGVkIGZpcnN0LlxuICAgIC8vIEhlbmNlLCB3ZSB1c2UgdHdvIHZhcmlhYmxlcyBgaW5pdGlhbFNlcnZlckRhdGFMb2FkZWRgIGFuZFxuICAgIC8vIGBpbml0aWFsU2VydmVyRGF0YUZsdXNoZWRgIHRvIG1ha2Ugc3VyZSB0aGUgd3JpdGVyIHdpbGwgYmUgY2xvc2VkIGFuZFxuICAgIC8vIGBpbml0aWFsU2VydmVyRGF0YUJ1ZmZlcmAgd2lsbCBiZSBjbGVhcmVkIGluIHRoZSByaWdodCB0aW1lLlxuICAgIGZ1bmN0aW9uIG5leHRTZXJ2ZXJEYXRhUmVnaXN0ZXJXcml0ZXIoY3RyKSB7XG4gICAgICAgIGlmIChpbml0aWFsU2VydmVyRGF0YUJ1ZmZlcikge1xuICAgICAgICAgICAgaW5pdGlhbFNlcnZlckRhdGFCdWZmZXIuZm9yRWFjaCgodmFsKT0+e1xuICAgICAgICAgICAgICAgIGN0ci5lbnF1ZXVlKGVuY29kZXIuZW5jb2RlKHZhbCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoaW5pdGlhbFNlcnZlckRhdGFMb2FkZWQgJiYgIWluaXRpYWxTZXJ2ZXJEYXRhRmx1c2hlZCkge1xuICAgICAgICAgICAgICAgIGN0ci5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIGluaXRpYWxTZXJ2ZXJEYXRhRmx1c2hlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaW5pdGlhbFNlcnZlckRhdGFCdWZmZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaW5pdGlhbFNlcnZlckRhdGFXcml0ZXIgPSBjdHI7XG4gICAgfVxuICAgIC8vIFdoZW4gYERPTUNvbnRlbnRMb2FkZWRgLCB3ZSBjYW4gY2xvc2UgYWxsIHBlbmRpbmcgd3JpdGVycyB0byBmaW5pc2ggaHlkcmF0aW9uLlxuICAgIGNvbnN0IERPTUNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKGluaXRpYWxTZXJ2ZXJEYXRhV3JpdGVyICYmICFpbml0aWFsU2VydmVyRGF0YUZsdXNoZWQpIHtcbiAgICAgICAgICAgIGluaXRpYWxTZXJ2ZXJEYXRhV3JpdGVyLmNsb3NlKCk7XG4gICAgICAgICAgICBpbml0aWFsU2VydmVyRGF0YUZsdXNoZWQgPSB0cnVlO1xuICAgICAgICAgICAgaW5pdGlhbFNlcnZlckRhdGFCdWZmZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaW5pdGlhbFNlcnZlckRhdGFMb2FkZWQgPSB0cnVlO1xuICAgIH07XG4gICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSBET00gaXMgYWxyZWFkeSBsb2FkZWQuXG4gICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJykge1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgRE9NQ29udGVudExvYWRlZCwgZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIERPTUNvbnRlbnRMb2FkZWQoKTtcbiAgICB9XG4gICAgY29uc3QgbmV4dFNlcnZlckRhdGFMb2FkaW5nR2xvYmFsID0gc2VsZi5fX25leHRfcyA9IHNlbGYuX19uZXh0X3MgfHwgW107XG4gICAgbmV4dFNlcnZlckRhdGFMb2FkaW5nR2xvYmFsLmZvckVhY2gobmV4dFNlcnZlckRhdGFDYWxsYmFjayk7XG4gICAgbmV4dFNlcnZlckRhdGFMb2FkaW5nR2xvYmFsLnB1c2ggPSBuZXh0U2VydmVyRGF0YUNhbGxiYWNrO1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVJlc3BvbnNlQ2FjaGUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwKCk7XG4gICAgfVxuICAgIGNvbnN0IHJzY0NhY2hlID0gY3JlYXRlUmVzcG9uc2VDYWNoZSgpO1xuICAgIGZ1bmN0aW9uIGZldGNoRmxpZ2h0KGhyZWYsIHByb3BzKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwoaHJlZiwgbG9jYXRpb24ub3JpZ2luKTtcbiAgICAgICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gdXJsLnNlYXJjaFBhcmFtcztcbiAgICAgICAgc2VhcmNoUGFyYW1zLmFwcGVuZCgnX19mbGlnaHRfXycsICcxJyk7XG4gICAgICAgIGlmIChwcm9wcykge1xuICAgICAgICAgICAgc2VhcmNoUGFyYW1zLmFwcGVuZCgnX19wcm9wc19fJywgSlNPTi5zdHJpbmdpZnkocHJvcHMpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmV0Y2godXJsLnRvU3RyaW5nKCkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiB1c2VTZXJ2ZXJSZXNwb25zZShjYWNoZUtleSwgc2VyaWFsaXplZCkge1xuICAgICAgICBsZXQgcmVzcG9uc2UgPSByc2NDYWNoZS5nZXQoY2FjaGVLZXkpO1xuICAgICAgICBpZiAocmVzcG9uc2UpIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgaWYgKGluaXRpYWxTZXJ2ZXJEYXRhQnVmZmVyKSB7XG4gICAgICAgICAgICBjb25zdCByZWFkYWJsZSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgICAgICAgICAgICAgc3RhcnQgKGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dFNlcnZlckRhdGFSZWdpc3RlcldyaXRlcihjb250cm9sbGVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlc3BvbnNlID0gY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtKHJlYWRhYmxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzZXJpYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVhZGFibGUgPSBuZXcgUmVhZGFibGVTdHJlYW0oe1xuICAgICAgICAgICAgICAgICAgICBzdGFydCAoY29udHJvbGxlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGVuY29kZXIuZW5jb2RlKHNlcmlhbGl6ZWQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtKHJlYWRhYmxlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBjcmVhdGVGcm9tRmV0Y2goZmV0Y2hGbGlnaHQoZ2V0Q2FjaGVLZXkoKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJzY0NhY2hlLnNldChjYWNoZUtleSwgcmVzcG9uc2UpO1xuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuICAgIGNvbnN0IFNlcnZlclJvb3QgPSAoeyBjYWNoZUtleSAsIHNlcmlhbGl6ZWQgIH0pPT57XG4gICAgICAgIF9yZWFjdC5kZWZhdWx0LnVzZUVmZmVjdCgoKT0+e1xuICAgICAgICAgICAgcnNjQ2FjaGUuZGVsZXRlKGNhY2hlS2V5KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gdXNlU2VydmVyUmVzcG9uc2UoY2FjaGVLZXksIHNlcmlhbGl6ZWQpO1xuICAgICAgICByZXR1cm4gcmVzcG9uc2UucmVhZFJvb3QoKTtcbiAgICB9O1xuICAgIFJTQ0NvbXBvbmVudCA9IChwcm9wcyk9PntcbiAgICAgICAgY29uc3QgY2FjaGVLZXkgPSBnZXRDYWNoZUtleSgpO1xuICAgICAgICBjb25zdCB7IF9fZmxpZ2h0X18gIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChTZXJ2ZXJSb290LCB7XG4gICAgICAgICAgICBjYWNoZUtleTogY2FjaGVLZXksXG4gICAgICAgICAgICBzZXJpYWxpemVkOiBfX2ZsaWdodF9fXG4gICAgICAgIH0pO1xuICAgIH07XG59XG5sZXQgbGFzdEFwcFByb3BzO1xuZnVuY3Rpb24gZG9SZW5kZXIoaW5wdXQpIHtcbiAgICBsZXQgeyBBcHAgLCBDb21wb25lbnQgLCBwcm9wcyAsIGVyciAsIF9fTl9SU0MgIH0gPSBpbnB1dDtcbiAgICBsZXQgc3R5bGVTaGVldHMgPSAnaW5pdGlhbCcgaW4gaW5wdXQgPyB1bmRlZmluZWQgOiBpbnB1dC5zdHlsZVNoZWV0cztcbiAgICBDb21wb25lbnQgPSBDb21wb25lbnQgfHwgbGFzdEFwcFByb3BzLkNvbXBvbmVudDtcbiAgICBwcm9wcyA9IHByb3BzIHx8IGxhc3RBcHBQcm9wcy5wcm9wcztcbiAgICBjb25zdCBpc1JTQyA9IHByb2Nlc3MuZW52Ll9fTkVYVF9SU0MgJiYgJ2luaXRpYWwnIGluIGlucHV0ID8gISFpbml0aWFsRGF0YS5yc2MgOiAhIV9fTl9SU0M7XG4gICAgY29uc3QgYXBwUHJvcHMgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgQ29tcG9uZW50OiBpc1JTQyA/IFJTQ0NvbXBvbmVudCA6IENvbXBvbmVudCxcbiAgICAgICAgZXJyLFxuICAgICAgICByb3V0ZXJcbiAgICB9KTtcbiAgICAvLyBsYXN0QXBwUHJvcHMgaGFzIHRvIGJlIHNldCBiZWZvcmUgUmVhY3REb20ucmVuZGVyIHRvIGFjY291bnQgZm9yIFJlYWN0RG9tIHRocm93aW5nIGFuIGVycm9yLlxuICAgIGxhc3RBcHBQcm9wcyA9IGFwcFByb3BzO1xuICAgIGxldCBjYW5jZWxlZCA9IGZhbHNlO1xuICAgIGxldCByZXNvbHZlUHJvbWlzZTtcbiAgICBjb25zdCByZW5kZXJQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk9PntcbiAgICAgICAgaWYgKGxhc3RSZW5kZXJSZWplY3QpIHtcbiAgICAgICAgICAgIGxhc3RSZW5kZXJSZWplY3QoKTtcbiAgICAgICAgfVxuICAgICAgICByZXNvbHZlUHJvbWlzZSA9ICgpPT57XG4gICAgICAgICAgICBsYXN0UmVuZGVyUmVqZWN0ID0gbnVsbDtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfTtcbiAgICAgICAgbGFzdFJlbmRlclJlamVjdCA9ICgpPT57XG4gICAgICAgICAgICBjYW5jZWxlZCA9IHRydWU7XG4gICAgICAgICAgICBsYXN0UmVuZGVyUmVqZWN0ID0gbnVsbDtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCdDYW5jZWwgcmVuZGVyaW5nIHJvdXRlJyk7XG4gICAgICAgICAgICBlcnJvci5jYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfTtcbiAgICB9KTtcbiAgICAvLyBUaGlzIGZ1bmN0aW9uIGhhcyBhIHJldHVybiB0eXBlIHRvIGVuc3VyZSBpdCBkb2Vzbid0IHN0YXJ0IHJldHVybmluZyBhXG4gICAgLy8gUHJvbWlzZS4gSXQgc2hvdWxkIHJlbWFpbiBzeW5jaHJvbm91cy5cbiAgICBmdW5jdGlvbiBvblN0YXJ0KCkge1xuICAgICAgICBpZiAoIXN0eWxlU2hlZXRzIHx8IC8vIFdlIHVzZSBgc3R5bGUtbG9hZGVyYCBpbiBkZXZlbG9wbWVudCwgc28gd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZ1xuICAgICAgICAvLyB1bmxlc3Mgd2UncmUgaW4gcHJvZHVjdGlvbjpcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdHlsZVRhZ3MgPSBsb29zZVRvQXJyYXkoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnc3R5bGVbZGF0YS1uLWhyZWZdJykpO1xuICAgICAgICBjb25zdCBjdXJyZW50SHJlZnMgPSBuZXcgU2V0KGN1cnJlbnRTdHlsZVRhZ3MubWFwKCh0YWcpPT50YWcuZ2V0QXR0cmlidXRlKCdkYXRhLW4taHJlZicpKSk7XG4gICAgICAgIGNvbnN0IG5vc2NyaXB0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignbm9zY3JpcHRbZGF0YS1uLWNzc10nKTtcbiAgICAgICAgY29uc3Qgbm9uY2UgPSBub3NjcmlwdCA9PSBudWxsID8gdm9pZCAwIDogbm9zY3JpcHQuZ2V0QXR0cmlidXRlKCdkYXRhLW4tY3NzJyk7XG4gICAgICAgIHN0eWxlU2hlZXRzLmZvckVhY2goKHsgaHJlZiAsIHRleHQgIH0pPT57XG4gICAgICAgICAgICBpZiAoIWN1cnJlbnRIcmVmcy5oYXMoaHJlZikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdHlsZVRhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgICAgICAgICAgICAgc3R5bGVUYWcuc2V0QXR0cmlidXRlKCdkYXRhLW4taHJlZicsIGhyZWYpO1xuICAgICAgICAgICAgICAgIHN0eWxlVGFnLnNldEF0dHJpYnV0ZSgnbWVkaWEnLCAneCcpO1xuICAgICAgICAgICAgICAgIGlmIChub25jZSkge1xuICAgICAgICAgICAgICAgICAgICBzdHlsZVRhZy5zZXRBdHRyaWJ1dGUoJ25vbmNlJywgbm9uY2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlVGFnKTtcbiAgICAgICAgICAgICAgICBzdHlsZVRhZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gb25IZWFkQ29tbWl0KCkge1xuICAgICAgICBpZiAoLy8gV2UgdXNlIGBzdHlsZS1sb2FkZXJgIGluIGRldmVsb3BtZW50LCBzbyB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nXG4gICAgICAgIC8vIHVubGVzcyB3ZSdyZSBpbiBwcm9kdWN0aW9uOlxuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nICYmIC8vIFdlIGNhbiBza2lwIHRoaXMgZHVyaW5nIGh5ZHJhdGlvbi4gUnVubmluZyBpdCB3b250IGNhdXNlIGFueSBoYXJtLCBidXRcbiAgICAgICAgLy8gd2UgbWF5IGFzIHdlbGwgc2F2ZSB0aGUgQ1BVIGN5Y2xlczpcbiAgICAgICAgc3R5bGVTaGVldHMgJiYgLy8gRW5zdXJlIHRoaXMgcmVuZGVyIHdhcyBub3QgY2FuY2VsZWRcbiAgICAgICAgIWNhbmNlbGVkKSB7XG4gICAgICAgICAgICBjb25zdCBkZXNpcmVkSHJlZnMgPSBuZXcgU2V0KHN0eWxlU2hlZXRzLm1hcCgocyk9PnMuaHJlZikpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFN0eWxlVGFncyA9IGxvb3NlVG9BcnJheShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdzdHlsZVtkYXRhLW4taHJlZl0nKSk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50SHJlZnMgPSBjdXJyZW50U3R5bGVUYWdzLm1hcCgodGFnKT0+dGFnLmdldEF0dHJpYnV0ZSgnZGF0YS1uLWhyZWYnKSk7XG4gICAgICAgICAgICAvLyBUb2dnbGUgYDxzdHlsZT5gIHRhZ3Mgb24gb3Igb2ZmIGRlcGVuZGluZyBvbiBpZiB0aGV5J3JlIG5lZWRlZDpcbiAgICAgICAgICAgIGZvcihsZXQgaWR4ID0gMDsgaWR4IDwgY3VycmVudEhyZWZzLmxlbmd0aDsgKytpZHgpe1xuICAgICAgICAgICAgICAgIGlmIChkZXNpcmVkSHJlZnMuaGFzKGN1cnJlbnRIcmVmc1tpZHhdKSkge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3R5bGVUYWdzW2lkeF0ucmVtb3ZlQXR0cmlidXRlKCdtZWRpYScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHlsZVRhZ3NbaWR4XS5zZXRBdHRyaWJ1dGUoJ21lZGlhJywgJ3gnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBSZW9yZGVyIHN0eWxlcyBpbnRvIGludGVuZGVkIG9yZGVyOlxuICAgICAgICAgICAgbGV0IHJlZmVyZW5jZU5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdub3NjcmlwdFtkYXRhLW4tY3NzXScpO1xuICAgICAgICAgICAgaWYgKC8vIFRoaXMgc2hvdWxkIGJlIGFuIGludmFyaWFudDpcbiAgICAgICAgICAgIHJlZmVyZW5jZU5vZGUpIHtcbiAgICAgICAgICAgICAgICBzdHlsZVNoZWV0cy5mb3JFYWNoKCh7IGhyZWYgIH0pPT57XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldFRhZyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYHN0eWxlW2RhdGEtbi1ocmVmPVwiJHtocmVmfVwiXWApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoLy8gVGhpcyBzaG91bGQgYmUgYW4gaW52YXJpYW50OlxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRUYWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZU5vZGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGFyZ2V0VGFnLCByZWZlcmVuY2VOb2RlLm5leHRTaWJsaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZU5vZGUgPSB0YXJnZXRUYWc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEZpbmFsbHksIGNsZWFuIHVwIHNlcnZlciByZW5kZXJlZCBzdHlsZXNoZWV0czpcbiAgICAgICAgICAgIGxvb3NlVG9BcnJheShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdsaW5rW2RhdGEtbi1wXScpKS5mb3JFYWNoKChlbCk9PntcbiAgICAgICAgICAgICAgICBlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnB1dC5zY3JvbGwpIHtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhpbnB1dC5zY3JvbGwueCwgaW5wdXQuc2Nyb2xsLnkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIG9uUm9vdENvbW1pdCgpIHtcbiAgICAgICAgcmVzb2x2ZVByb21pc2UoKTtcbiAgICB9XG4gICAgb25TdGFydCgpO1xuICAgIGNvbnN0IGVsZW0gPSAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX3JlYWN0LmRlZmF1bHQuRnJhZ21lbnQsIG51bGwsIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChIZWFkLCB7XG4gICAgICAgIGNhbGxiYWNrOiBvbkhlYWRDb21taXRcbiAgICB9KSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KEFwcENvbnRhaW5lciwgbnVsbCwgcmVuZGVyQXBwKEFwcCwgYXBwUHJvcHMpLCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX3BvcnRhbC5Qb3J0YWwsIHtcbiAgICAgICAgdHlwZTogXCJuZXh0LXJvdXRlLWFubm91bmNlclwiXG4gICAgfSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9yb3V0ZUFubm91bmNlci5Sb3V0ZUFubm91bmNlciwgbnVsbCkpKSk7XG4gICAgLy8gV2UgY2F0Y2ggcnVudGltZSBlcnJvcnMgdXNpbmcgY29tcG9uZW50RGlkQ2F0Y2ggd2hpY2ggd2lsbCB0cmlnZ2VyIHJlbmRlckVycm9yXG4gICAgcmVuZGVyUmVhY3RFbGVtZW50KGFwcEVsZW1lbnQsIChjYWxsYmFjayk9Pi8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChSb290LCB7XG4gICAgICAgICAgICBjYWxsYmFja3M6IFtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayxcbiAgICAgICAgICAgICAgICBvblJvb3RDb21taXRcbiAgICAgICAgICAgIF1cbiAgICAgICAgfSwgcHJvY2Vzcy5lbnYuX19ORVhUX1NUUklDVF9NT0RFID8gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9yZWFjdC5kZWZhdWx0LlN0cmljdE1vZGUsIG51bGwsIGVsZW0pIDogZWxlbSkpO1xuICAgIHJldHVybiByZW5kZXJQcm9taXNlO1xufVxuZnVuY3Rpb24gUm9vdCh7IGNhbGxiYWNrcyAsIGNoaWxkcmVuICB9KSB7XG4gICAgLy8gV2UgdXNlIGB1c2VMYXlvdXRFZmZlY3RgIHRvIGd1YXJhbnRlZSB0aGUgY2FsbGJhY2tzIGFyZSBleGVjdXRlZFxuICAgIC8vIGFzIHNvb24gYXMgUmVhY3QgZmx1c2hlcyB0aGUgdXBkYXRlXG4gICAgX3JlYWN0LmRlZmF1bHQudXNlTGF5b3V0RWZmZWN0KCgpPT5jYWxsYmFja3MuZm9yRWFjaCgoY2FsbGJhY2spPT5jYWxsYmFjaygpKSwgW1xuICAgICAgICBjYWxsYmFja3NcbiAgICBdKTtcbiAgICAvLyBXZSBzaG91bGQgYXNrIHRvIG1lYXN1cmUgdGhlIFdlYiBWaXRhbHMgYWZ0ZXIgcmVuZGVyaW5nIGNvbXBsZXRlcyBzbyB3ZVxuICAgIC8vIGRvbid0IGNhdXNlIGFueSBoeWRyYXRpb24gZGVsYXk6XG4gICAgX3JlYWN0LmRlZmF1bHQudXNlRWZmZWN0KCgpPT57XG4gICAgICAgICgwLCBfcGVyZm9ybWFuY2VSZWxheWVyKS5kZWZhdWx0KG9uUGVyZkVudHJ5KTtcbiAgICB9LCBbXSk7XG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9URVNUX01PREUpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgICAgIF9yZWFjdC5kZWZhdWx0LnVzZUVmZmVjdCgoKT0+e1xuICAgICAgICAgICAgd2luZG93Ll9fTkVYVF9IWURSQVRFRCA9IHRydWU7XG4gICAgICAgICAgICBpZiAod2luZG93Ll9fTkVYVF9IWURSQVRFRF9DQikge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5fX05FWFRfSFlEUkFURURfQ0IoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgW10pO1xuICAgIH1cbiAgICByZXR1cm4gY2hpbGRyZW47XG59XG4vLyBEdW1teSBjb21wb25lbnQgdGhhdCB3ZSByZW5kZXIgYXMgYSBjaGlsZCBvZiBSb290IHNvIHRoYXQgd2UgY2FuXG4vLyB0b2dnbGUgdGhlIGNvcnJlY3Qgc3R5bGVzIGJlZm9yZSB0aGUgcGFnZSBpcyByZW5kZXJlZC5cbmZ1bmN0aW9uIEhlYWQoeyBjYWxsYmFjayAgfSkge1xuICAgIC8vIFdlIHVzZSBgdXNlTGF5b3V0RWZmZWN0YCB0byBndWFyYW50ZWUgdGhlIGNhbGxiYWNrIGlzIGV4ZWN1dGVkXG4gICAgLy8gYXMgc29vbiBhcyBSZWFjdCBmbHVzaGVzIHRoZSB1cGRhdGUuXG4gICAgX3JlYWN0LmRlZmF1bHQudXNlTGF5b3V0RWZmZWN0KCgpPT5jYWxsYmFjaygpLCBbXG4gICAgICAgIGNhbGxiYWNrXG4gICAgXSk7XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImluaXRpYWxpemUiLCJoeWRyYXRlIiwiZW1pdHRlciIsInJvdXRlciIsInZlcnNpb24iLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9oZWFkTWFuYWdlckNvbnRleHQiLCJfbWl0dCIsIl9yb3V0ZXJDb250ZXh0IiwiX2lzRHluYW1pYyIsIl9xdWVyeXN0cmluZyIsIl9ydW50aW1lQ29uZmlnIiwiX3V0aWxzIiwiX3BvcnRhbCIsIl9oZWFkTWFuYWdlciIsIl9wYWdlTG9hZGVyIiwiX3BlcmZvcm1hbmNlUmVsYXllciIsIl9yb3V0ZUFubm91bmNlciIsIl9yb3V0ZXIiLCJfaXNFcnJvciIsIl9pbWFnZUNvbmZpZ0NvbnRleHQiLCJfcmVtb3ZlQmFzZVBhdGgiLCJfaGFzQmFzZVBhdGgiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJyZXNvbHZlIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJhcmciLCJpbmZvIiwiZXJyb3IiLCJkb25lIiwiUHJvbWlzZSIsInRoZW4iLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIl9leHRlbmRzIiwiYXNzaWduIiwidGFyZ2V0IiwiaSIsImxlbmd0aCIsInNvdXJjZSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiV2Vha01hcCIsImNhY2hlIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJkZXNjIiwic2V0IiwiUmVhY3RET00iLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1JFQUNUX1JPT1QiLCJsb29zZVRvQXJyYXkiLCJpbnB1dCIsInNsaWNlIiwiaW5pdGlhbERhdGEiLCJkZWZhdWx0TG9jYWxlIiwiYXNQYXRoIiwicGFnZUxvYWRlciIsImFwcEVsZW1lbnQiLCJoZWFkTWFuYWdlciIsImluaXRpYWxNYXRjaGVzTWlkZGxld2FyZSIsImxhc3RSZW5kZXJSZWplY3QiLCJ3ZWJwYWNrSE1SIiwiQ2FjaGVkQXBwIiwib25QZXJmRW50cnkiLCJDYWNoZWRDb21wb25lbnQiLCJfX25leHRfcmVxdWlyZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIkNvbnRhaW5lciIsImNvbXBvbmVudERpZENhdGNoIiwiY29tcG9uZW50RXJyIiwicHJvcHMiLCJjb21wb25lbnREaWRNb3VudCIsInNjcm9sbFRvSGFzaCIsImlzU3NyIiwicGFnZSIsImlzRmFsbGJhY2siLCJuZXh0RXhwb3J0IiwiaXNEeW5hbWljUm91dGUiLCJwYXRobmFtZSIsImxvY2F0aW9uIiwic2VhcmNoIiwiX19ORVhUX0hBU19SRVdSSVRFUyIsIl9fTl9TU0ciLCJyZXBsYWNlIiwiU3RyaW5nIiwidXJsUXVlcnlUb1NlYXJjaFBhcmFtcyIsInF1ZXJ5IiwiVVJMU2VhcmNoUGFyYW1zIiwiX2giLCJzaGFsbG93IiwiY2F0Y2giLCJjYW5jZWxsZWQiLCJjb21wb25lbnREaWRVcGRhdGUiLCJoYXNoIiwic3Vic3RyaW5nIiwiZWwiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwic2V0VGltZW91dCIsInNjcm9sbEludG9WaWV3IiwicmVuZGVyIiwiY2hpbGRyZW4iLCJSZWFjdERldk92ZXJsYXkiLCJjcmVhdGVFbGVtZW50IiwiQ29tcG9uZW50IiwiX2luaXRpYWxpemUiLCJvcHRzIiwicHJlZml4Iiwibm9ybWFsaXplTG9jYWxlUGF0aCIsImRldGVjdERvbWFpbkxvY2FsZSIsInBhcnNlUmVsYXRpdmVVcmwiLCJmb3JtYXRVcmwiLCJwYXJzZWRBcyIsImxvY2FsZVBhdGhSZXN1bHQiLCJkZXRlY3RlZERvbWFpbiIsImluaXRTY3JpcHRMb2FkZXIiLCJyZWdpc3RlciIsIkpTT04iLCJwYXJzZSIsInRleHRDb250ZW50Iiwid2luZG93IiwiX19ORVhUX0RBVEFfXyIsImFzc2V0UHJlZml4IiwiX193ZWJwYWNrX3B1YmxpY19wYXRoX18iLCJzZXRDb25maWciLCJzZXJ2ZXJSdW50aW1lQ29uZmlnIiwicHVibGljUnVudGltZUNvbmZpZyIsInJ1bnRpbWVDb25maWciLCJnZXRVUkwiLCJoYXNCYXNlUGF0aCIsInJlbW92ZUJhc2VQYXRoIiwiX19ORVhUX0kxOE5fU1VQUE9SVCIsImxvY2FsZXMiLCJkZXRlY3RlZExvY2FsZSIsImxvY2FsZSIsIl9fTkVYVF9JMThOX0RPTUFJTlMiLCJob3N0bmFtZSIsInNjcmlwdExvYWRlciIsImJ1aWxkSWQiLCJyIiwiZiIsInJvdXRlTG9hZGVyIiwib25FbnRyeXBvaW50IiwiX19ORVhUX1AiLCJtYXAiLCJwIiwicHVzaCIsImdldElzU3NyIiwiX2h5ZHJhdGUiLCJpbml0aWFsRXJyIiwiYXBwRW50cnlwb2ludCIsImFwcCIsIm1vZCIsInBhZ2VFbnRyeXBvaW50IiwiaXNWYWxpZEVsZW1lbnRUeXBlIiwiZ2V0U2VydmVyRXJyb3IiLCJyZW5kZXJDdHgiLCJ3aGVuRW50cnlwb2ludCIsImNvbXBvbmVudCIsInJlcG9ydFdlYlZpdGFscyIsImlkIiwibmFtZSIsInN0YXJ0VGltZSIsImR1cmF0aW9uIiwiZW50cnlUeXBlIiwiZW50cmllcyIsInVuaXF1ZUlEIiwiTWF0aCIsIkRhdGUiLCJub3ciLCJmbG9vciIsInJhbmRvbSIsInBlcmZTdGFydEVudHJ5Iiwid2ViVml0YWxzIiwibGFiZWwiLCJFcnJvciIsImdldFByb3BlckVycm9yIiwibWVzc2FnZSIsImUiLCJzdGFjayIsIl9fTkVYVF9QUkVMT0FEUkVBRFkiLCJkeW5hbWljSWRzIiwiY3JlYXRlUm91dGVyIiwiaW5pdGlhbFByb3BzIiwiQXBwIiwid3JhcEFwcCIsIkJvb2xlYW4iLCJzdWJzY3JpcHRpb24iLCJzY3JvbGwiLCJkb21haW5Mb2NhbGVzIiwiaXNQcmV2aWV3IiwiaXNSc2MiLCJyc2MiLCJfaW5pdGlhbE1hdGNoZXNNaWRkbGV3YXJlUHJvbWlzZSIsImluaXRpYWwiLCJiZWZvcmVSZW5kZXIiLCJyZW5kZXJpbmdQcm9wcyIsIl9yZW5kZXIiLCJyZW5kZXJFcnIiLCJyZW5kZXJFcnJvciIsImRvUmVuZGVyIiwicmVuZGVyRXJyb3JQcm9wcyIsIm9uVW5yZWNvdmVyYWJsZUVycm9yIiwic3R5bGVTaGVldHMiLCJjb25zb2xlIiwibG9hZFBhZ2UiLCJFcnJvckNvbXBvbmVudCIsImxhc3RBcHBQcm9wcyIsIm0iLCJyZWYiLCJBcHBUcmVlIiwiYXBwQ3R4IiwiY3R4IiwibG9hZEdldEluaXRpYWxQcm9wcyIsImluaXRQcm9wcyIsInJlYWN0Um9vdCIsInNob3VsZEh5ZHJhdGUiLCJyZW5kZXJSZWFjdEVsZW1lbnQiLCJkb21FbCIsIlNUIiwicGVyZm9ybWFuY2UiLCJtYXJrIiwicmVhY3RFbCIsIm1hcmtIeWRyYXRlQ29tcGxldGUiLCJtYXJrUmVuZGVyQ29tcGxldGUiLCJoeWRyYXRlUm9vdCIsInN0YXJ0VHJhbnNpdGlvbiIsIm1lYXN1cmUiLCJnZXRFbnRyaWVzQnlOYW1lIiwiZm9yRWFjaCIsImNsZWFyTWFya3MiLCJuYXZTdGFydEVudHJpZXMiLCJjbGVhck1lYXN1cmVzIiwiQXBwQ29udGFpbmVyIiwiUm91dGVyQ29udGV4dCIsIlByb3ZpZGVyIiwibWFrZVB1YmxpY1JvdXRlckluc3RhbmNlIiwiSGVhZE1hbmFnZXJDb250ZXh0IiwiSW1hZ2VDb25maWdDb250ZXh0IiwiX19ORVhUX0lNQUdFX09QVFMiLCJyZW5kZXJBcHAiLCJhcHBQcm9wcyIsIndyYXBwZWRBcHBQcm9wcyIsIlJTQ0NvbXBvbmVudCIsIl9fTkVYVF9SU0MiLCJuZXh0U2VydmVyRGF0YUNhbGxiYWNrIiwic2VnIiwiaW5pdGlhbFNlcnZlckRhdGFCdWZmZXIiLCJpbml0aWFsU2VydmVyRGF0YVdyaXRlciIsImVucXVldWUiLCJlbmNvZGVyIiwiZW5jb2RlIiwibmV4dFNlcnZlckRhdGFSZWdpc3RlcldyaXRlciIsImN0ciIsInZhbCIsImluaXRpYWxTZXJ2ZXJEYXRhTG9hZGVkIiwiaW5pdGlhbFNlcnZlckRhdGFGbHVzaGVkIiwiY2xvc2UiLCJjcmVhdGVSZXNwb25zZUNhY2hlIiwiTWFwIiwiZmV0Y2hGbGlnaHQiLCJocmVmIiwidXJsIiwiVVJMIiwib3JpZ2luIiwic2VhcmNoUGFyYW1zIiwiYXBwZW5kIiwic3RyaW5naWZ5IiwiZmV0Y2giLCJ0b1N0cmluZyIsInVzZVNlcnZlclJlc3BvbnNlIiwiY2FjaGVLZXkiLCJzZXJpYWxpemVkIiwicmVzcG9uc2UiLCJyc2NDYWNoZSIsInJlYWRhYmxlIiwiUmVhZGFibGVTdHJlYW0iLCJzdGFydCIsImNvbnRyb2xsZXIiLCJjcmVhdGVGcm9tUmVhZGFibGVTdHJlYW0iLCJjcmVhdGVGcm9tRmV0Y2giLCJnZXRDYWNoZUtleSIsIlRleHRFbmNvZGVyIiwiRE9NQ29udGVudExvYWRlZCIsInJlYWR5U3RhdGUiLCJhZGRFdmVudExpc3RlbmVyIiwibmV4dFNlcnZlckRhdGFMb2FkaW5nR2xvYmFsIiwiX19uZXh0X3MiLCJTZXJ2ZXJSb290IiwidXNlRWZmZWN0IiwiZGVsZXRlIiwicmVhZFJvb3QiLCJfX2ZsaWdodF9fIiwib25TdGFydCIsImN1cnJlbnRTdHlsZVRhZ3MiLCJxdWVyeVNlbGVjdG9yQWxsIiwiY3VycmVudEhyZWZzIiwiU2V0IiwidGFnIiwiZ2V0QXR0cmlidXRlIiwibm9zY3JpcHQiLCJxdWVyeVNlbGVjdG9yIiwibm9uY2UiLCJ0ZXh0Iiwic3R5bGVUYWciLCJzZXRBdHRyaWJ1dGUiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJjcmVhdGVUZXh0Tm9kZSIsIm9uSGVhZENvbW1pdCIsImNhbmNlbGVkIiwiZGVzaXJlZEhyZWZzIiwicyIsImlkeCIsInJlbW92ZUF0dHJpYnV0ZSIsInJlZmVyZW5jZU5vZGUiLCJ0YXJnZXRUYWciLCJwYXJlbnROb2RlIiwiaW5zZXJ0QmVmb3JlIiwibmV4dFNpYmxpbmciLCJyZW1vdmVDaGlsZCIsInNjcm9sbFRvIiwieCIsInkiLCJvblJvb3RDb21taXQiLCJyZXNvbHZlUHJvbWlzZSIsIl9fTl9SU0MiLCJpc1JTQyIsInJlbmRlclByb21pc2UiLCJlbGVtIiwiRnJhZ21lbnQiLCJIZWFkIiwiY2FsbGJhY2siLCJQb3J0YWwiLCJ0eXBlIiwiUm91dGVBbm5vdW5jZXIiLCJSb290IiwiY2FsbGJhY2tzIiwiX19ORVhUX1NUUklDVF9NT0RFIiwiU3RyaWN0TW9kZSIsInVzZUxheW91dEVmZmVjdCIsIl9fTkVYVF9URVNUX01PREUiLCJfX05FWFRfSFlEUkFURUQiLCJfX05FWFRfSFlEUkFURURfQ0IiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../node_modules/next/dist/client/index.js\n"));
/***/ }),
@@ -783,7 +783,7 @@ eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar _classCallCheck = (__webpack_require__(/*! @swc/helpers/lib/_class_call_check.js */ \"../node_modules/@swc/helpers/lib/_class_call_check.js\")[\"default\"]);\nvar _createClass = (__webpack_require__(/*! @swc/helpers/lib/_create_class.js */ \"../node_modules/@swc/helpers/lib/_create_class.js\")[\"default\"]);\nvar _interopRequireDefault = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _slicedToArray = (__webpack_require__(/*! @swc/helpers/lib/_sliced_to_array.js */ \"../node_modules/@swc/helpers/lib/_sliced_to_array.js\")[\"default\"]);\nvar _runtimeJs = /*#__PURE__*/ _interopRequireDefault(__webpack_require__(/*! ../node_modules/next/dist/compiled/regenerator-runtime/runtime.js */ \"../node_modules/next/dist/compiled/regenerator-runtime/runtime.js\"));\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.isLocalURL = isLocalURL;\nexports.interpolateAs = interpolateAs;\nexports.resolveHref = resolveHref;\nexports.createKey = createKey;\nexports[\"default\"] = void 0;\nvar _normalizeTrailingSlash = __webpack_require__(/*! ../../../client/normalize-trailing-slash */ \"../node_modules/next/dist/client/normalize-trailing-slash.js\");\nvar _removeTrailingSlash = __webpack_require__(/*! ./utils/remove-trailing-slash */ \"../node_modules/next/dist/shared/lib/router/utils/remove-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 */ \"../node_modules/next/dist/shared/lib/page-path/denormalize-page-path.js\");\nvar _normalizeLocalePath = __webpack_require__(/*! ../i18n/normalize-locale-path */ \"../node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js\");\nvar _mitt = _interopRequireDefault1(__webpack_require__(/*! ../mitt */ \"../node_modules/next/dist/shared/lib/mitt.js\"));\nvar _utils = __webpack_require__(/*! ../utils */ \"../node_modules/next/dist/shared/lib/utils.js\");\nvar _isDynamic = __webpack_require__(/*! ./utils/is-dynamic */ \"../node_modules/next/dist/shared/lib/router/utils/is-dynamic.js\");\nvar _parseRelativeUrl = __webpack_require__(/*! ./utils/parse-relative-url */ \"../node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js\");\nvar _querystring = __webpack_require__(/*! ./utils/querystring */ \"../node_modules/next/dist/shared/lib/router/utils/querystring.js\");\nvar _resolveRewrites = _interopRequireDefault1(__webpack_require__(/*! ./utils/resolve-rewrites */ \"?36cb\"));\nvar _routeMatcher = __webpack_require__(/*! ./utils/route-matcher */ \"../node_modules/next/dist/shared/lib/router/utils/route-matcher.js\");\nvar _routeRegex = __webpack_require__(/*! ./utils/route-regex */ \"../node_modules/next/dist/shared/lib/router/utils/route-regex.js\");\nvar _formatUrl = __webpack_require__(/*! ./utils/format-url */ \"../node_modules/next/dist/shared/lib/router/utils/format-url.js\");\nvar _detectDomainLocale = __webpack_require__(/*! ../../../client/detect-domain-locale */ \"../node_modules/next/dist/client/detect-domain-locale.js\");\nvar _parsePath = __webpack_require__(/*! ./utils/parse-path */ \"../node_modules/next/dist/shared/lib/router/utils/parse-path.js\");\nvar _addLocale = __webpack_require__(/*! ../../../client/add-locale */ \"../node_modules/next/dist/client/add-locale.js\");\nvar _removeLocale = __webpack_require__(/*! ../../../client/remove-locale */ \"../node_modules/next/dist/client/remove-locale.js\");\nvar _removeBasePath = __webpack_require__(/*! ../../../client/remove-base-path */ \"../node_modules/next/dist/client/remove-base-path.js\");\nvar _addBasePath = __webpack_require__(/*! ../../../client/add-base-path */ \"../node_modules/next/dist/client/add-base-path.js\");\nvar _hasBasePath = __webpack_require__(/*! ../../../client/has-base-path */ \"../node_modules/next/dist/client/has-base-path.js\");\nvar _getNextPathnameInfo = __webpack_require__(/*! ./utils/get-next-pathname-info */ \"../node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js\");\nvar _formatNextPathnameInfo = __webpack_require__(/*! ./utils/format-next-pathname-info */ \"../node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js\");\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self1 = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self1, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _extends() {\n _extends = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _interopRequireDefault1(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n return cache;\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache();\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction buildCancellationError() {\n return Object.assign(new Error(\"Route Cancelled\"), {\n cancelled: true\n });\n}\nfunction isLocalURL(url) {\n // prevent a hydration mismatch on href for url with anchor refs\n if (!(0, _utils).isAbsoluteUrl(url)) return true;\n try {\n // absolute urls can be local if they are on the same origin\n var locationOrigin = (0, _utils).getLocationOrigin();\n var resolved = new URL(url, locationOrigin);\n return resolved.origin === locationOrigin && (0, _hasBasePath).hasBasePath(resolved.pathname);\n } catch (_) {\n return false;\n }\n}\nfunction interpolateAs(route, asPathname, query) {\n var interpolatedRoute = \"\";\n var dynamicRegex = (0, _routeRegex).getRouteRegex(route);\n var dynamicGroups = dynamicRegex.groups;\n var 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 var params = Object.keys(dynamicGroups);\n if (!params.every(function(param) {\n var value = dynamicMatches[param] || \"\";\n var _param = dynamicGroups[param], repeat = _param.repeat, optional = _param.optional;\n // support single-level catch-all\n // TODO: more robust handling for user-error (passing `/`)\n var replaced = \"[\".concat(repeat ? \"...\" : \"\").concat(param, \"]\");\n if (optional) {\n replaced = \"\".concat(!value ? \"/\" : \"\", \"[\").concat(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 function(segment) {\n return 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: params,\n result: interpolatedRoute\n };\n}\nfunction omit(object, keys) {\n var omitted = {};\n Object.keys(object).forEach(function(key) {\n if (!keys.includes(key)) {\n omitted[key] = object[key];\n }\n });\n return omitted;\n}\nfunction resolveHref(router, href, resolveAs) {\n // we use a dummy base url for relative urls\n var base;\n var 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 var urlProtoMatch = urlAsString.match(/^[a-zA-Z]{1,}:\\/\\//);\n var urlAsStringNoProto = urlProtoMatch ? urlAsString.slice(urlProtoMatch[0].length) : urlAsString;\n var urlParts = urlAsStringNoProto.split(\"?\");\n if ((urlParts[0] || \"\").match(/(\\/\\/|\\\\)/)) {\n console.error(\"Invalid href passed to next/router: \".concat(urlAsString, \", repeated forward-slashes (//) or backslashes \\\\ are not valid in the href\"));\n var 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 var finalUrl = new URL(urlAsString, base);\n finalUrl.pathname = (0, _normalizeTrailingSlash).normalizePathTrailingSlash(finalUrl.pathname);\n var interpolatedAs = \"\";\n if ((0, _isDynamic).isDynamicRoute(finalUrl.pathname) && finalUrl.searchParams && resolveAs) {\n var query = (0, _querystring).searchParamsToUrlQuery(finalUrl.searchParams);\n var ref = interpolateAs(finalUrl.pathname, finalUrl.pathname, query), result = ref.result, params = ref.params;\n if (result) {\n interpolatedAs = (0, _formatUrl).formatWithValidation({\n pathname: result,\n hash: finalUrl.hash,\n query: omit(query, params)\n });\n }\n }\n // if the origin didn't change, it means we received a relative href\n var 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 var 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 var ref = _slicedToArray(resolveHref(router, url, true), 2), resolvedHref = ref[0], resolvedAs = ref[1];\n var origin = (0, _utils).getLocationOrigin();\n var hrefHadOrigin = resolvedHref.startsWith(origin);\n var asHadOrigin = resolvedAs && resolvedAs.startsWith(origin);\n resolvedHref = stripOrigin(resolvedHref);\n resolvedAs = resolvedAs ? stripOrigin(resolvedAs) : resolvedAs;\n var preparedUrl = hrefHadOrigin ? resolvedHref : (0, _addBasePath).addBasePath(resolvedHref);\n var preparedAs = as ? stripOrigin(resolveHref(router, as)) : resolvedAs || resolvedHref;\n return {\n url: preparedUrl,\n as: asHadOrigin ? preparedAs : (0, _addBasePath).addBasePath(preparedAs)\n };\n}\nfunction resolveDynamicRoute(pathname, pages) {\n var cleanPathname = (0, _removeTrailingSlash).removeTrailingSlash((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(function(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, _removeTrailingSlash).removeTrailingSlash(pathname);\n}\nvar manualScrollRestoration = false && 0;\nvar SSG_DATA_NOT_FOUND = Symbol(\"SSG_DATA_NOT_FOUND\");\nfunction fetchRetry(url, attempts, options) {\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 method: options.method || \"GET\",\n headers: Object.assign({}, options.headers, {\n \"x-nextjs-data\": \"1\"\n })\n }).then(function(response) {\n return !response.ok && attempts > 1 && response.status >= 500 ? fetchRetry(url, attempts - 1, options) : response;\n });\n}\nvar backgroundCache = {};\nfunction fetchNextData(param) {\n var dataHref = param.dataHref, inflightCache = param.inflightCache, isPrefetch = param.isPrefetch, hasMiddleware = param.hasMiddleware, isServerRender = param.isServerRender, parseJSON = param.parseJSON, persistCache = param.persistCache, isBackground = param.isBackground, unstable_skipClientCache = param.unstable_skipClientCache;\n var ref = new URL(dataHref, window.location.href), cacheKey = ref.href;\n var ref1;\n var getData = function(params) {\n return fetchRetry(dataHref, isServerRender ? 3 : 1, {\n headers: isPrefetch ? {\n purpose: \"prefetch\"\n } : {},\n method: (ref1 = params == null ? void 0 : params.method) != null ? ref1 : \"GET\"\n }).then(function(response) {\n if (response.ok && (params == null ? void 0 : params.method) === \"HEAD\") {\n return {\n dataHref: dataHref,\n response: response,\n text: \"\",\n json: {}\n };\n }\n return response.text().then(function(text) {\n if (!response.ok) {\n /**\n * When the data response is a redirect because of a middleware\n * we do not consider it an error. The headers must bring the\n * mapped location.\n * TODO: Change the status code in the handler.\n */ if (hasMiddleware && [\n 301,\n 302,\n 307,\n 308\n ].includes(response.status)) {\n return {\n dataHref: dataHref,\n response: response,\n text: text,\n json: {}\n };\n }\n if (response.status === 404) {\n var ref;\n if ((ref = tryToParseAsJSON(text)) == null ? void 0 : ref.notFound) {\n return {\n dataHref: dataHref,\n json: {\n notFound: SSG_DATA_NOT_FOUND\n },\n response: response,\n text: text\n };\n }\n /**\n * If there is a 404 that is not for SSG we used to fail but if\n * there is a middleware we must respond with an empty object.\n * For now we will return the data when there is a middleware.\n * TODO: Update the server to success on these requests.\n */ if (hasMiddleware) {\n return {\n dataHref: dataHref,\n response: response,\n text: text,\n json: {}\n };\n }\n }\n var error = new Error(\"Failed to load static props\");\n /**\n * We should only trigger a server-side transition if this was\n * caused on a client-side transition. Otherwise, we'd get into\n * an infinite loop.\n */ if (!isServerRender) {\n (0, _routeLoader).markAssetError(error);\n }\n throw error;\n }\n return {\n dataHref: dataHref,\n json: parseJSON ? tryToParseAsJSON(text) : {},\n response: response,\n text: text\n };\n });\n }).then(function(data) {\n if (!persistCache || \"development\" !== \"production\" || 0) {\n delete inflightCache[cacheKey];\n }\n return data;\n }).catch(function(err) {\n delete inflightCache[cacheKey];\n throw err;\n });\n };\n // when skipping client cache we wait to update\n // inflight cache until successful data response\n // this allows racing click event with fetching newer data\n // without blocking navigation when stale data is available\n if (unstable_skipClientCache && persistCache) {\n return getData({}).then(function(data) {\n inflightCache[cacheKey] = Promise.resolve(data);\n return data;\n });\n }\n if (inflightCache[cacheKey] !== undefined) {\n return inflightCache[cacheKey];\n }\n return inflightCache[cacheKey] = getData(isBackground ? {\n method: \"HEAD\"\n } : {});\n}\nfunction tryToParseAsJSON(text) {\n try {\n return JSON.parse(text);\n } catch (error) {\n return {};\n }\n}\nfunction createKey() {\n return Math.random().toString(36).slice(2, 10);\n}\nfunction handleHardNavigation(param) {\n var url = param.url, router = param.router;\n // ensure we don't trigger a hard navigation to the same\n // URL as this can end up with an infinite refresh\n if (url === (0, _addBasePath).addBasePath((0, _addLocale).addLocale(router.asPath, router.locale))) {\n throw new Error(\"Invariant: attempted to hard navigate to the same URL \".concat(url, \" \").concat(location.href));\n }\n window.location.href = url;\n}\nvar getCancelledHandler = function(param) {\n var route = param.route, router = param.router;\n var cancelled = false;\n var cancel = router.clc = function() {\n cancelled = true;\n };\n var handleCancelled = function() {\n if (cancelled) {\n var error = new Error('Abort fetching component for route: \"'.concat(route, '\"'));\n error.cancelled = true;\n throw error;\n }\n if (cancel === router.clc) {\n router.clc = null;\n }\n };\n return handleCancelled;\n};\nvar Router = /*#__PURE__*/ function() {\n function Router(pathname1, query1, as1, param) {\n var initialProps = param.initialProps, pageLoader = param.pageLoader, App = param.App, wrapApp = param.wrapApp, Component = param.Component, err = param.err, subscription = param.subscription, isFallback = param.isFallback, locale = param.locale, locales = param.locales, defaultLocale = param.defaultLocale, domainLocales = param.domainLocales, isPreview = param.isPreview, isRsc = param.isRsc;\n var _this = this;\n _classCallCheck(this, Router);\n // Server Data Cache\n this.sdc = {};\n this.isFirstPopStateEvent = true;\n this._key = createKey();\n this.onPopState = function(e) {\n var isFirstPopStateEvent = _this.isFirstPopStateEvent;\n _this.isFirstPopStateEvent = false;\n var 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 var pathname = _this.pathname, query = _this.query;\n _this.changeState(\"replaceState\", (0, _formatUrl).formatWithValidation({\n pathname: (0, _addBasePath).addBasePath(pathname),\n query: query\n }), (0, _utils).getURL());\n return;\n }\n // __NA is used to identify if the history entry can be handled by the app-router.\n if (state.__NA) {\n window.location.reload();\n return;\n }\n if (!state.__N) {\n return;\n }\n // Safari fires popstateevent when reopening the browser.\n if (isFirstPopStateEvent && _this.locale === state.options.locale && state.as === _this.asPath) {\n return;\n }\n var forcedScroll;\n var url = state.url, as = state.as, options = state.options, key = state.key;\n if (false) { var v; }\n _this._key = key;\n var pathname1 = (0, _parseRelativeUrl).parseRelativeUrl(url).pathname;\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 === (0, _addBasePath).addBasePath(_this.asPath) && pathname1 === (0, _addBasePath).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 // @ts-ignore internal value not exposed on types\n _h: 0\n }), forcedScroll);\n };\n // represents the current component key\n var route = (0, _removeTrailingSlash).removeTrailingSlash(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: Component,\n initial: true,\n props: initialProps,\n err: 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 var autoExportDynamic = (0, _isDynamic).isDynamicRoute(pathname1) && self.__NEXT_DATA__.autoExport;\n this.basePath = false || \"\";\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: route,\n pathname: pathname1,\n query: query1,\n asPath: autoExportDynamic ? pathname1 : as1,\n isPreview: !!isPreview,\n locale: false ? 0 : undefined,\n isFallback: isFallback\n };\n this._initialMatchesMiddlewarePromise = Promise.resolve(false);\n if (true) {\n // make sure \"as\" doesn't start with double slashes or else it can\n // throw an error as it's considered invalid\n if (!as1.startsWith(\"//\")) {\n // in order for `e.state` to work on the `onpopstate` event\n // we have to register the initial route upon initialization\n var options = {\n locale: locale\n };\n var asPath = (0, _utils).getURL();\n this._initialMatchesMiddlewarePromise = matchesMiddleware({\n router: this,\n locale: locale,\n asPath: asPath\n }).then(function(matches) {\n options._shouldResolveHref = as1 !== pathname1;\n _this.changeState(\"replaceState\", matches ? asPath : (0, _formatUrl).formatWithValidation({\n pathname: (0, _addBasePath).addBasePath(pathname1),\n query: query1\n }), asPath, options);\n return matches;\n });\n }\n window.addEventListener(\"popstate\", this.onPopState);\n // enable custom scroll restoration handling when available\n // otherwise fallback to browser's default handling\n if (false) {}\n }\n }\n _createClass(Router, [\n {\n key: \"reload\",\n value: function reload() {\n window.location.reload();\n }\n },\n {\n /**\n * Go back in history\n */ key: \"back\",\n value: function back() {\n window.history.back();\n }\n },\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 */ key: \"push\",\n value: function push(url, as) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n if (false) {}\n var ref;\n ref = prepareUrlAs(this, url, as), url = ref.url, as = ref.as, ref;\n return this.change(\"pushState\", url, as, options);\n }\n },\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 */ key: \"replace\",\n value: function replace(url, as) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var ref;\n ref = prepareUrlAs(this, url, as), url = ref.url, as = ref.as, ref;\n return this.change(\"replaceState\", url, as, options);\n }\n },\n {\n key: \"change\",\n value: function change(method, url, as, options, forcedScroll) {\n var _this = this;\n return _asyncToGenerator(_runtimeJs.default.mark(function _callee() {\n var isQueryUpdating, shouldResolveHref, nextState, isSsr, prevLocale, parsedAs, localePathResult, didNavigate, ref, detectedDomain, asNoBasePath, _shallow, shallow, _scroll, scroll, routeProps, cleanedAs, localeChange, parsed, pathname, query, pages, rewrites, ref1, ref2, resolvedAs, isMiddlewareMatch, rewritesResult, route, routeMatch, parsedAs1, asPathname, routeRegex, shouldInterpolate, interpolatedAs, missingParams, ref21, ref3, routeInfo, prefixedAs, rewriteAs, localeResult, routeRegex1, curRouteMatch, error, props, __N_SSG, __N_SSP, component, scripts, destination, parsedHref, ref4, newUrl, newAs, notFoundRoute, _route, isValidShallowRoute, _scroll1, shouldScroll, resetScroll, hashRegex;\n return _runtimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n if (isLocalURL(url)) {\n _ctx.next = 3;\n break;\n }\n handleHardNavigation({\n url: url,\n router: _this\n });\n return _ctx.abrupt(\"return\", false);\n case 3:\n isQueryUpdating = options._h;\n shouldResolveHref = isQueryUpdating || options._shouldResolveHref || (0, _parsePath).parsePath(url).pathname === (0, _parsePath).parsePath(as).pathname;\n nextState = _extends({}, _this.state);\n // for static pages with query params in the URL we delay\n // marking the router ready until after the query is updated\n // or a navigation has occurred\n _this.isReady = true;\n isSsr = _this.isSsr;\n if (!isQueryUpdating) {\n _this.isSsr = false;\n }\n if (!(isQueryUpdating && _this.clc)) {\n _ctx.next = 11;\n break;\n }\n return _ctx.abrupt(\"return\", false);\n case 11:\n prevLocale = nextState.locale;\n if (true) {\n _ctx.next = 24;\n break;\n }\n nextState.locale = options.locale === false ? _this.defaultLocale : options.locale || nextState.locale;\n if (typeof options.locale === \"undefined\") {\n options.locale = nextState.locale;\n }\n parsedAs = (0, _parseRelativeUrl).parseRelativeUrl((0, _hasBasePath).hasBasePath(as) ? (0, _removeBasePath).removeBasePath(as) : as);\n localePathResult = (0, _normalizeLocalePath).normalizeLocalePath(parsedAs.pathname, _this.locales);\n if (localePathResult.detectedLocale) {\n nextState.locale = localePathResult.detectedLocale;\n parsedAs.pathname = (0, _addBasePath).addBasePath(parsedAs.pathname);\n as = (0, _formatUrl).formatWithValidation(parsedAs);\n url = (0, _addBasePath).addBasePath((0, _normalizeLocalePath).normalizeLocalePath((0, _hasBasePath).hasBasePath(url) ? (0, _removeBasePath).removeBasePath(url) : url, _this.locales).pathname);\n }\n didNavigate = false;\n // we need to wrap this in the env check again since regenerator runtime\n // moves this on its own due to the return\n if (false) {}\n detectedDomain = (0, _detectDomainLocale).detectDomainLocale(_this.domainLocales, undefined, nextState.locale);\n // we need to wrap this in the env check again since regenerator runtime\n // moves this on its own due to the return\n if (false) {}\n if (!didNavigate) {\n _ctx.next = 24;\n break;\n }\n return _ctx.abrupt(\"return\", new Promise(function() {}));\n case 24:\n // marking route changes as a navigation start entry\n if (_utils.ST) {\n performance.mark(\"routeChange\");\n }\n _shallow = options.shallow, shallow = _shallow === void 0 ? false : _shallow, _scroll = options.scroll, scroll = _scroll === void 0 ? true : _scroll;\n routeProps = {\n shallow: shallow\n };\n if (_this._inFlightRoute && _this.clc) {\n if (!isSsr) {\n Router.events.emit(\"routeChangeError\", buildCancellationError(), _this._inFlightRoute, routeProps);\n }\n _this.clc();\n _this.clc = null;\n }\n as = (0, _addBasePath).addBasePath((0, _addLocale).addLocale((0, _hasBasePath).hasBasePath(as) ? (0, _removeBasePath).removeBasePath(as) : as, options.locale, _this.defaultLocale));\n cleanedAs = (0, _removeLocale).removeLocale((0, _hasBasePath).hasBasePath(as) ? (0, _removeBasePath).removeBasePath(as) : as, nextState.locale);\n _this._inFlightRoute = as;\n localeChange = prevLocale !== nextState.locale;\n if (!(!isQueryUpdating && _this.onlyAHashChange(cleanedAs) && !localeChange)) {\n _ctx.next = 48;\n break;\n }\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, _extends({}, options, {\n scroll: false\n }));\n if (scroll) {\n _this.scrollToHash(cleanedAs);\n }\n _ctx.prev = 37;\n _ctx.next = 40;\n return _this.set(nextState, _this.components[nextState.route], null);\n case 40:\n _ctx.next = 46;\n break;\n case 42:\n _ctx.prev = 42;\n _ctx.t0 = _ctx[\"catch\"](37);\n if ((0, _isError).default(_ctx.t0) && _ctx.t0.cancelled) {\n Router.events.emit(\"routeChangeError\", _ctx.t0, cleanedAs, routeProps);\n }\n throw _ctx.t0;\n case 46:\n Router.events.emit(\"hashChangeComplete\", as, routeProps);\n return _ctx.abrupt(\"return\", true);\n case 48:\n parsed = (0, _parseRelativeUrl).parseRelativeUrl(url);\n pathname = parsed.pathname, query = parsed.query;\n ;\n _ctx.prev = 51;\n ;\n _ctx.t1 = _slicedToArray;\n _ctx.next = 56;\n return Promise.all([\n _this.pageLoader.getPageList(),\n (0, _routeLoader).getClientBuildManifest(),\n _this.pageLoader.getMiddlewareList(), \n ]);\n case 56:\n _ctx.t2 = _ctx.sent;\n ref1 = (0, _ctx.t1)(_ctx.t2, 2);\n pages = ref1[0];\n ref2 = ref1[1], rewrites = ref2.__rewrites, ref2;\n ref1;\n _ctx.next = 67;\n break;\n case 63:\n _ctx.prev = 63;\n _ctx.t3 = _ctx[\"catch\"](51);\n // If we fail to resolve the page list or client-build manifest, we must\n // do a server-side transition:\n handleHardNavigation({\n url: as,\n router: _this\n });\n return _ctx.abrupt(\"return\", false);\n case 67:\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 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, _removeTrailingSlash).removeTrailingSlash((0, _removeBasePath).removeBasePath(pathname)) : pathname;\n _ctx.next = 72;\n return matchesMiddleware({\n asPath: as,\n locale: nextState.locale,\n router: _this\n });\n case 72:\n isMiddlewareMatch = _ctx.sent;\n if (options.shallow && isMiddlewareMatch) {\n pathname = _this.pathname;\n }\n if (!(shouldResolveHref && pathname !== \"/_error\")) {\n _ctx.next = 86;\n break;\n }\n options._shouldResolveHref = true;\n if (true) {\n _ctx.next = 85;\n break;\n }\n rewritesResult = (0, _resolveRewrites).default((0, _addBasePath).addBasePath((0, _addLocale).addLocale(cleanedAs, nextState.locale), true), pages, rewrites, query, function(p) {\n return resolveDynamicRoute(p, pages);\n }, _this.locales);\n if (!rewritesResult.externalDest) {\n _ctx.next = 81;\n break;\n }\n handleHardNavigation({\n url: as,\n router: _this\n });\n return _ctx.abrupt(\"return\", true);\n case 81:\n if (!isMiddlewareMatch) {\n resolvedAs = rewritesResult.asPath;\n }\n if (rewritesResult.matchedPage && rewritesResult.resolvedHref) {\n // if this directly matches a page we need to update the href to\n // allow the correct page chunk to be loaded\n pathname = rewritesResult.resolvedHref;\n parsed.pathname = (0, _addBasePath).addBasePath(pathname);\n if (!isMiddlewareMatch) {\n url = (0, _formatUrl).formatWithValidation(parsed);\n }\n }\n _ctx.next = 86;\n break;\n case 85:\n {\n parsed.pathname = resolveDynamicRoute(pathname, pages);\n if (parsed.pathname !== pathname) {\n pathname = parsed.pathname;\n parsed.pathname = (0, _addBasePath).addBasePath(pathname);\n if (!isMiddlewareMatch) {\n url = (0, _formatUrl).formatWithValidation(parsed);\n }\n }\n }\n case 86:\n if (isLocalURL(as)) {\n _ctx.next = 91;\n break;\n }\n if (false) {}\n throw new Error('Invalid href: \"'.concat(url, '\" and as: \"').concat(as, '\", received relative href and external as') + \"\\nSee more info: https://nextjs.org/docs/messages/invalid-relative-url-external-as\");\n case 89:\n handleHardNavigation({\n url: as,\n router: _this\n });\n return _ctx.abrupt(\"return\", false);\n case 91:\n resolvedAs = (0, _removeLocale).removeLocale((0, _removeBasePath).removeBasePath(resolvedAs), nextState.locale);\n route = (0, _removeTrailingSlash).removeTrailingSlash(pathname);\n routeMatch = false;\n if (!(0, _isDynamic).isDynamicRoute(route)) {\n _ctx.next = 109;\n break;\n }\n parsedAs1 = (0, _parseRelativeUrl).parseRelativeUrl(resolvedAs);\n asPathname = parsedAs1.pathname;\n routeRegex = (0, _routeRegex).getRouteRegex(route);\n routeMatch = (0, _routeMatcher).getRouteMatcher(routeRegex)(asPathname);\n shouldInterpolate = route === asPathname;\n interpolatedAs = shouldInterpolate ? interpolateAs(route, asPathname, query) : {};\n if (!(!routeMatch || shouldInterpolate && !interpolatedAs.result)) {\n _ctx.next = 108;\n break;\n }\n missingParams = Object.keys(routeRegex.groups).filter(function(param) {\n return !query[param];\n });\n if (!(missingParams.length > 0 && !isMiddlewareMatch)) {\n _ctx.next = 106;\n break;\n }\n if (true) {\n console.warn(\"\".concat(shouldInterpolate ? \"Interpolating href\" : \"Mismatching `as` and `href`\", \" failed to manually provide \") + \"the params: \".concat(missingParams.join(\", \"), \" in the `href`'s `query`\"));\n }\n throw new Error((shouldInterpolate ? \"The provided `href` (\".concat(url, \") value is missing query values (\").concat(missingParams.join(\", \"), \") to be interpolated properly. \") : \"The provided `as` value (\".concat(asPathname, \") is incompatible with the `href` value (\").concat(route, \"). \")) + \"Read more: https://nextjs.org/docs/messages/\".concat(shouldInterpolate ? \"href-interpolation-failed\" : \"incompatible-href-as\"));\n case 106:\n _ctx.next = 109;\n break;\n case 108:\n if (shouldInterpolate) {\n as = (0, _formatUrl).formatWithValidation(Object.assign({}, parsedAs1, {\n pathname: interpolatedAs.result,\n query: omit(query, interpolatedAs.params)\n }));\n } else {\n // Merge params into `query`, overwriting any specified in search\n Object.assign(query, routeMatch);\n }\n case 109:\n if (!isQueryUpdating) {\n Router.events.emit(\"routeChangeStart\", as, routeProps);\n }\n _ctx.prev = 110;\n ;\n _ctx.next = 114;\n return _this.getRouteInfo({\n route: route,\n pathname: pathname,\n query: query,\n as: as,\n resolvedAs: resolvedAs,\n routeProps: routeProps,\n locale: nextState.locale,\n isPreview: nextState.isPreview,\n hasMiddleware: isMiddlewareMatch\n });\n case 114:\n routeInfo = _ctx.sent;\n if (\"route\" in routeInfo && isMiddlewareMatch) {\n pathname = routeInfo.route || route;\n route = pathname;\n query = Object.assign({}, routeInfo.query || {}, query);\n if (routeMatch && pathname !== parsed.pathname) {\n Object.keys(routeMatch).forEach(function(key) {\n if (routeMatch && query[key] === routeMatch[key]) {\n delete query[key];\n }\n });\n }\n if ((0, _isDynamic).isDynamicRoute(pathname)) {\n prefixedAs = routeInfo.resolvedAs || (0, _addBasePath).addBasePath((0, _addLocale).addLocale(as, nextState.locale), true);\n rewriteAs = prefixedAs;\n if ((0, _hasBasePath).hasBasePath(rewriteAs)) {\n rewriteAs = (0, _removeBasePath).removeBasePath(rewriteAs);\n }\n if (false) {}\n routeRegex1 = (0, _routeRegex).getRouteRegex(pathname);\n curRouteMatch = (0, _routeMatcher).getRouteMatcher(routeRegex1)(rewriteAs);\n if (curRouteMatch) {\n Object.assign(query, curRouteMatch);\n }\n }\n }\n if (!(\"type\" in routeInfo)) {\n _ctx.next = 123;\n break;\n }\n if (!(routeInfo.type === \"redirect-internal\")) {\n _ctx.next = 121;\n break;\n }\n return _ctx.abrupt(\"return\", _this.change(method, routeInfo.newUrl, routeInfo.newAs, options));\n case 121:\n handleHardNavigation({\n url: routeInfo.destination,\n router: _this\n });\n return _ctx.abrupt(\"return\", new Promise(function() {}));\n case 123:\n error = routeInfo.error, props = routeInfo.props, __N_SSG = routeInfo.__N_SSG, __N_SSP = routeInfo.__N_SSP;\n component = routeInfo.Component;\n if (component && component.unstable_scriptLoader) {\n scripts = [].concat(component.unstable_scriptLoader());\n scripts.forEach(function(script) {\n (0, _script).handleClientScriptLoad(script.props);\n });\n }\n if (!((__N_SSG || __N_SSP) && props)) {\n _ctx.next = 154;\n break;\n }\n if (!(props.pageProps && props.pageProps.__N_REDIRECT)) {\n _ctx.next = 137;\n break;\n }\n // Use the destination from redirect without adding locale\n options.locale = false;\n destination = props.pageProps.__N_REDIRECT;\n if (!(destination.startsWith(\"/\") && props.pageProps.__N_REDIRECT_BASE_PATH !== false)) {\n _ctx.next = 135;\n break;\n }\n parsedHref = (0, _parseRelativeUrl).parseRelativeUrl(destination);\n parsedHref.pathname = resolveDynamicRoute(parsedHref.pathname, pages);\n ref4 = prepareUrlAs(_this, destination, destination), newUrl = ref4.url, newAs = ref4.as;\n return _ctx.abrupt(\"return\", _this.change(method, newUrl, newAs, options));\n case 135:\n handleHardNavigation({\n url: destination,\n router: _this\n });\n return _ctx.abrupt(\"return\", new Promise(function() {}));\n case 137:\n nextState.isPreview = !!props.__N_PREVIEW;\n if (!(props.notFound === SSG_DATA_NOT_FOUND)) {\n _ctx.next = 154;\n break;\n }\n ;\n _ctx.prev = 140;\n _ctx.next = 143;\n return _this.fetchComponent(\"/404\");\n case 143:\n notFoundRoute = \"/404\";\n _ctx.next = 149;\n break;\n case 146:\n _ctx.prev = 146;\n _ctx.t4 = _ctx[\"catch\"](140);\n notFoundRoute = \"/_error\";\n case 149:\n _ctx.next = 151;\n return _this.getRouteInfo({\n route: notFoundRoute,\n pathname: notFoundRoute,\n query: query,\n as: as,\n resolvedAs: resolvedAs,\n routeProps: {\n shallow: false\n },\n locale: nextState.locale,\n isPreview: nextState.isPreview\n });\n case 151:\n routeInfo = _ctx.sent;\n if (!(\"type\" in routeInfo)) {\n _ctx.next = 154;\n break;\n }\n throw new Error(\"Unexpected middleware effect on /404\");\n case 154:\n Router.events.emit(\"beforeHistoryChange\", as, routeProps);\n _this.changeState(method, url, as, options);\n if (isQueryUpdating && pathname === \"/_error\" && ((ref21 = self.__NEXT_DATA__.props) == null ? void 0 : (ref3 = ref21.pageProps) == null ? void 0 : ref3.statusCode) === 500 && (props == null ? 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 ;\n isValidShallowRoute = options.shallow && nextState.route === ((_route = routeInfo.route) != null ? _route : route);\n ;\n shouldScroll = (_scroll1 = options.scroll) != null ? _scroll1 : !isValidShallowRoute;\n resetScroll = shouldScroll ? {\n x: 0,\n y: 0\n } : null;\n _ctx.next = 164;\n return _this.set(_extends({}, nextState, {\n route: route,\n pathname: pathname,\n query: query,\n asPath: cleanedAs,\n isFallback: false\n }), routeInfo, forcedScroll != null ? forcedScroll : resetScroll).catch(function(e) {\n if (e.cancelled) error = error || e;\n else throw e;\n });\n case 164:\n if (!error) {\n _ctx.next = 167;\n break;\n }\n if (!isQueryUpdating) {\n Router.events.emit(\"routeChangeError\", error, cleanedAs, routeProps);\n }\n throw error;\n case 167:\n if (false) {}\n if (!isQueryUpdating) {\n Router.events.emit(\"routeChangeComplete\", as, routeProps);\n }\n hashRegex = /#.+$/;\n if (shouldScroll && hashRegex.test(as)) {\n _this.scrollToHash(as);\n }\n return _ctx.abrupt(\"return\", true);\n case 174:\n _ctx.prev = 174;\n _ctx.t5 = _ctx[\"catch\"](110);\n if (!((0, _isError).default(_ctx.t5) && _ctx.t5.cancelled)) {\n _ctx.next = 178;\n break;\n }\n return _ctx.abrupt(\"return\", false);\n case 178:\n throw _ctx.t5;\n case 179:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee, null, [\n [\n 37,\n 42\n ],\n [\n 51,\n 63\n ],\n [\n 110,\n 174\n ],\n [\n 140,\n 146\n ]\n ]);\n }))();\n }\n },\n {\n key: \"changeState\",\n value: function changeState(method, url, as) {\n var options = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};\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.\".concat(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: url,\n as: as,\n options: options,\n __N: true,\n key: this._key = method !== \"pushState\" ? this._key : createKey()\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 },\n {\n key: \"handleRouteInfoError\",\n value: function handleRouteInfoError(err, pathname, query, as, routeProps, loadErrorFail) {\n var _this = this;\n return _asyncToGenerator(_runtimeJs.default.mark(function _callee() {\n var Component, styleSheets, props, ref, routeInfo;\n return _runtimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n console.error(err);\n if (!err.cancelled) {\n _ctx.next = 3;\n break;\n }\n // bubble up cancellation errors\n throw err;\n case 3:\n if (!((0, _routeLoader).isAssetError(err) || loadErrorFail)) {\n _ctx.next = 7;\n break;\n }\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 handleHardNavigation({\n url: as,\n router: _this\n });\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 case 7:\n _ctx.prev = 7;\n ;\n ;\n ;\n if (!(typeof Component === \"undefined\" || typeof styleSheets === \"undefined\")) {\n _ctx.next = 19;\n break;\n }\n ;\n _ctx.next = 15;\n return _this.fetchComponent(\"/_error\");\n case 15:\n ref = _ctx.sent;\n Component = ref.page;\n styleSheets = ref.styleSheets;\n ref;\n case 19:\n routeInfo = {\n props: props,\n Component: Component,\n styleSheets: styleSheets,\n err: err,\n error: err\n };\n if (routeInfo.props) {\n _ctx.next = 31;\n break;\n }\n _ctx.prev = 21;\n _ctx.next = 24;\n return _this.getInitialProps(Component, {\n err: err,\n pathname: pathname,\n query: query\n });\n case 24:\n routeInfo.props = _ctx.sent;\n _ctx.next = 31;\n break;\n case 27:\n _ctx.prev = 27;\n _ctx.t0 = _ctx[\"catch\"](21);\n console.error(\"Error in error page `getInitialProps`: \", _ctx.t0);\n routeInfo.props = {};\n case 31:\n return _ctx.abrupt(\"return\", routeInfo);\n case 34:\n _ctx.prev = 34;\n _ctx.t1 = _ctx[\"catch\"](7);\n return _ctx.abrupt(\"return\", _this.handleRouteInfoError((0, _isError).default(_ctx.t1) ? _ctx.t1 : new Error(_ctx.t1 + \"\"), pathname, query, as, routeProps, true));\n case 37:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee, null, [\n [\n 7,\n 34\n ],\n [\n 21,\n 27\n ]\n ]);\n }))();\n }\n },\n {\n key: \"getRouteInfo\",\n value: function getRouteInfo(param) {\n var requestedRoute = param.route, pathname = param.pathname, query = param.query, as = param.as, resolvedAs = param.resolvedAs, routeProps = param.routeProps, locale = param.locale, hasMiddleware = param.hasMiddleware, isPreview = param.isPreview, unstable_skipClientCache = param.unstable_skipClientCache;\n var _this = this;\n return _asyncToGenerator(_runtimeJs.default.mark(function _callee() {\n var route, ref, ref4, ref5, handleCancelled, existingInfo, cachedRouteInfo, fetchNextDataParams, data, routeInfo, isValidElementType, useStreamedFlightData, shouldFetchData, props, cacheKey, flightInfo;\n return _runtimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n route = requestedRoute;\n _ctx.prev = 1;\n ;\n handleCancelled = getCancelledHandler({\n route: route,\n router: _this\n });\n existingInfo = _this.components[route];\n if (!(routeProps.shallow && existingInfo && _this.route === route)) {\n _ctx.next = 7;\n break;\n }\n return _ctx.abrupt(\"return\", existingInfo);\n case 7:\n cachedRouteInfo = existingInfo && !(\"initial\" in existingInfo) && \"development\" !== \"development\" ? 0 : undefined;\n fetchNextDataParams = {\n dataHref: _this.pageLoader.getDataHref({\n href: (0, _formatUrl).formatWithValidation({\n pathname: pathname,\n query: query\n }),\n skipInterpolation: true,\n asPath: resolvedAs,\n locale: locale\n }),\n hasMiddleware: true,\n isServerRender: _this.isSsr,\n parseJSON: true,\n inflightCache: _this.sdc,\n persistCache: !isPreview,\n isPrefetch: false,\n unstable_skipClientCache: unstable_skipClientCache\n };\n _ctx.next = 11;\n return withMiddlewareEffects({\n fetchData: function() {\n return fetchNextData(fetchNextDataParams);\n },\n asPath: resolvedAs,\n locale: locale,\n router: _this\n });\n case 11:\n data = _ctx.sent;\n handleCancelled();\n if (!((data == null ? void 0 : (ref = data.effect) == null ? void 0 : ref.type) === \"redirect-internal\" || (data == null ? void 0 : (ref4 = data.effect) == null ? void 0 : ref4.type) === \"redirect-external\")) {\n _ctx.next = 15;\n break;\n }\n return _ctx.abrupt(\"return\", data.effect);\n case 15:\n if (!((data == null ? void 0 : (ref5 = data.effect) == null ? void 0 : ref5.type) === \"rewrite\")) {\n _ctx.next = 25;\n break;\n }\n route = (0, _removeTrailingSlash).removeTrailingSlash(data.effect.resolvedHref);\n pathname = data.effect.resolvedHref;\n query = _extends({}, query, data.effect.parsedAs.query);\n resolvedAs = data.effect.parsedAs.pathname;\n // Check again the cache with the new destination.\n existingInfo = _this.components[route];\n if (!(routeProps.shallow && existingInfo && _this.route === route && !hasMiddleware)) {\n _ctx.next = 24;\n break;\n }\n // If we have a match with the current route due to rewrite,\n // we can copy the existing information to the rewritten one.\n // Then, we return the information along with the matched route.\n _this.components[requestedRoute] = _extends({}, existingInfo, {\n route: route\n });\n return _ctx.abrupt(\"return\", _extends({}, existingInfo, {\n route: route\n }));\n case 24:\n cachedRouteInfo = existingInfo && !(\"initial\" in existingInfo) && \"development\" !== \"development\" ? 0 : undefined;\n case 25:\n if (!(route === \"/api\" || route.startsWith(\"/api/\"))) {\n _ctx.next = 28;\n break;\n }\n handleHardNavigation({\n url: as,\n router: _this\n });\n return _ctx.abrupt(\"return\", new Promise(function() {}));\n case 28:\n _ctx.t0 = cachedRouteInfo;\n if (_ctx.t0) {\n _ctx.next = 33;\n break;\n }\n _ctx.next = 32;\n return _this.fetchComponent(route).then(function(res) {\n return {\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 case 32:\n _ctx.t0 = _ctx.sent;\n case 33:\n routeInfo = _ctx.t0;\n if (false) {}\n isValidElementType = (__webpack_require__(/*! next/dist/compiled/react-is */ \"../node_modules/next/dist/compiled/react-is/index.js\").isValidElementType);\n if (isValidElementType(routeInfo.Component)) {\n _ctx.next = 38;\n break;\n }\n throw new Error('The default export is not a React Component in page: \"'.concat(pathname, '\"'));\n case 38:\n useStreamedFlightData = routeInfo.__N_RSC && ( true || 0);\n shouldFetchData = routeInfo.__N_SSG || routeInfo.__N_SSP || routeInfo.__N_RSC;\n _ctx.next = 42;\n return _this._getData(_asyncToGenerator(_runtimeJs.default.mark(function _callee() {\n var json;\n return _runtimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n if (!(shouldFetchData && !useStreamedFlightData)) {\n _ctx.next = 8;\n break;\n }\n _ctx.t0 = data;\n if (_ctx.t0) {\n _ctx.next = 6;\n break;\n }\n _ctx.next = 5;\n return fetchNextData({\n dataHref: _this.pageLoader.getDataHref({\n href: (0, _formatUrl).formatWithValidation({\n pathname: pathname,\n query: query\n }),\n asPath: resolvedAs,\n locale: locale\n }),\n isServerRender: _this.isSsr,\n parseJSON: true,\n inflightCache: _this.sdc,\n persistCache: !isPreview,\n isPrefetch: false,\n unstable_skipClientCache: unstable_skipClientCache\n });\n case 5:\n _ctx.t0 = _ctx.sent;\n case 6:\n json = _ctx.t0.json;\n return _ctx.abrupt(\"return\", {\n props: json\n });\n case 8:\n _ctx.t1 = {};\n _ctx.next = 11;\n return _this.getInitialProps(routeInfo.Component, {\n pathname: pathname,\n query: query,\n asPath: as,\n locale: locale,\n locales: _this.locales,\n defaultLocale: _this.defaultLocale\n });\n case 11:\n _ctx.t2 = _ctx.sent;\n return _ctx.abrupt(\"return\", {\n headers: _ctx.t1,\n props: _ctx.t2\n });\n case 13:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee);\n })));\n case 42:\n props = _ctx.sent.props;\n // Only bust the data cache for SSP routes although\n // middleware can skip cache per request with\n // x-middleware-cache: no-cache as well\n if (routeInfo.__N_SSP && fetchNextDataParams.dataHref) {\n cacheKey = new URL(fetchNextDataParams.dataHref, window.location.href).href;\n delete _this.sdc[cacheKey];\n }\n // we kick off a HEAD request in the background\n // when a non-prefetch request is made to signal revalidation\n if (!_this.isPreview && routeInfo.__N_SSG && \"development\" !== \"development\") {}\n ;\n if (!routeInfo.__N_RSC) {\n _ctx.next = 56;\n break;\n }\n if (!useStreamedFlightData) {\n _ctx.next = 53;\n break;\n }\n _ctx.next = 50;\n return _this._getData(function() {\n return _this._getFlightData((0, _formatUrl).formatWithValidation({\n query: _extends({}, query, {\n __flight__: \"1\"\n }),\n pathname: (0, _isDynamic).isDynamicRoute(route) ? interpolateAs(pathname, (0, _parseRelativeUrl).parseRelativeUrl(resolvedAs).pathname, query).result : pathname\n }));\n });\n case 50:\n _ctx.t1 = _ctx.sent.data;\n _ctx.next = 54;\n break;\n case 53:\n _ctx.t1 = props.__flight__;\n case 54:\n _ctx.t2 = _ctx.t1;\n flightInfo = {\n __flight__: _ctx.t2\n };\n case 56:\n props.pageProps = Object.assign({}, props.pageProps, flightInfo);\n routeInfo.props = props;\n routeInfo.route = route;\n routeInfo.query = query;\n routeInfo.resolvedAs = resolvedAs;\n _this.components[route] = routeInfo;\n // If the route was rewritten in the process of fetching data,\n // we update the cache to allow hitting the same data for shallow requests.\n if (route !== requestedRoute) {\n _this.components[requestedRoute] = _extends({}, routeInfo, {\n route: route\n });\n }\n return _ctx.abrupt(\"return\", routeInfo);\n case 66:\n _ctx.prev = 66;\n _ctx.t3 = _ctx[\"catch\"](1);\n return _ctx.abrupt(\"return\", _this.handleRouteInfoError((0, _isError).getProperError(_ctx.t3), pathname, query, as, routeProps));\n case 69:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee, null, [\n [\n 1,\n 66\n ]\n ]);\n }))();\n }\n },\n {\n key: \"set\",\n value: function set(state, data, resetScroll) {\n this.state = state;\n return this.sub(data, this.components[\"/_app\"].Component, resetScroll);\n }\n },\n {\n /**\n * Callback to execute before replacing router state\n * @param cb callback to be executed\n */ key: \"beforePopState\",\n value: function beforePopState(cb) {\n this._bps = cb;\n }\n },\n {\n key: \"onlyAHashChange\",\n value: function onlyAHashChange(as) {\n if (!this.asPath) return false;\n var ref = _slicedToArray(this.asPath.split(\"#\"), 2), oldUrlNoHash = ref[0], oldHash = ref[1];\n var ref1 = _slicedToArray(as.split(\"#\"), 2), newUrlNoHash = ref1[0], newHash = ref1[1];\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 },\n {\n key: \"scrollToHash\",\n value: function scrollToHash(as) {\n var ref = _slicedToArray(as.split(\"#\"), 2), tmp = ref[1], hash = tmp === void 0 ? \"\" : tmp;\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 // Decode hash to make non-latin anchor works.\n var rawHash = decodeURIComponent(hash);\n // First we check if the element by id is found\n var idEl = document.getElementById(rawHash);\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 var nameEl = document.getElementsByName(rawHash)[0];\n if (nameEl) {\n nameEl.scrollIntoView();\n }\n }\n },\n {\n key: \"urlIsNew\",\n value: function urlIsNew(asPath) {\n return this.asPath !== asPath;\n }\n },\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 */ key: \"prefetch\",\n value: function prefetch(url) {\n var asPath = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : url, options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var _this = this;\n return _asyncToGenerator(_runtimeJs.default.mark(function _callee() {\n var parsed, pathname, query, parsedAs, localePathResult, pages, resolvedAs, locale, isMiddlewareMatch, rewrites, ref, rewritesResult, data, route;\n return _runtimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n parsed = (0, _parseRelativeUrl).parseRelativeUrl(url);\n pathname = parsed.pathname, query = parsed.query;\n if (false) {}\n _ctx.next = 5;\n return _this.pageLoader.getPageList();\n case 5:\n pages = _ctx.sent;\n resolvedAs = asPath;\n locale = typeof options.locale !== \"undefined\" ? options.locale || undefined : _this.locale;\n _ctx.next = 10;\n return matchesMiddleware({\n asPath: asPath,\n locale: locale,\n router: _this\n });\n case 10:\n isMiddlewareMatch = _ctx.sent;\n if (true) {\n _ctx.next = 24;\n break;\n }\n ;\n ;\n _ctx.next = 16;\n return (0, _routeLoader).getClientBuildManifest();\n case 16:\n ref = _ctx.sent;\n rewrites = ref.__rewrites;\n ref;\n rewritesResult = (0, _resolveRewrites).default((0, _addBasePath).addBasePath((0, _addLocale).addLocale(asPath, _this.locale), true), pages, rewrites, parsed.query, function(p) {\n return resolveDynamicRoute(p, pages);\n }, _this.locales);\n if (!rewritesResult.externalDest) {\n _ctx.next = 22;\n break;\n }\n return _ctx.abrupt(\"return\");\n case 22:\n resolvedAs = (0, _removeLocale).removeLocale((0, _removeBasePath).removeBasePath(rewritesResult.asPath), _this.locale);\n if (rewritesResult.matchedPage && rewritesResult.resolvedHref) {\n // if this directly matches a page we need to update the href to\n // allow the correct page chunk to be loaded\n pathname = rewritesResult.resolvedHref;\n parsed.pathname = pathname;\n if (!isMiddlewareMatch) {\n url = (0, _formatUrl).formatWithValidation(parsed);\n }\n }\n case 24:\n parsed.pathname = resolveDynamicRoute(parsed.pathname, pages);\n if ((0, _isDynamic).isDynamicRoute(parsed.pathname)) {\n pathname = parsed.pathname;\n parsed.pathname = pathname;\n Object.assign(query, (0, _routeMatcher).getRouteMatcher((0, _routeRegex).getRouteRegex(parsed.pathname))((0, _parsePath).parsePath(asPath).pathname) || {});\n if (!isMiddlewareMatch) {\n url = (0, _formatUrl).formatWithValidation(parsed);\n }\n }\n if (false) {}\n return _ctx.abrupt(\"return\");\n case 28:\n _ctx.next = 30;\n return withMiddlewareEffects({\n fetchData: function() {\n return fetchNextData({\n dataHref: _this.pageLoader.getDataHref({\n href: (0, _formatUrl).formatWithValidation({\n pathname: pathname,\n query: query\n }),\n skipInterpolation: true,\n asPath: resolvedAs,\n locale: locale\n }),\n hasMiddleware: true,\n isServerRender: _this.isSsr,\n parseJSON: true,\n inflightCache: _this.sdc,\n persistCache: !_this.isPreview,\n isPrefetch: true\n });\n },\n asPath: asPath,\n locale: locale,\n router: _this\n });\n case 30:\n data = _ctx.sent;\n /**\n * If there was a rewrite we apply the effects of the rewrite on the\n * current parameters for the prefetch.\n */ if ((data == null ? void 0 : data.effect.type) === \"rewrite\") {\n parsed.pathname = data.effect.resolvedHref;\n pathname = data.effect.resolvedHref;\n query = _extends({}, query, data.effect.parsedAs.query);\n resolvedAs = data.effect.parsedAs.pathname;\n url = (0, _formatUrl).formatWithValidation(parsed);\n }\n if (!((data == null ? void 0 : data.effect.type) === \"redirect-external\")) {\n _ctx.next = 34;\n break;\n }\n return _ctx.abrupt(\"return\");\n case 34:\n route = (0, _removeTrailingSlash).removeTrailingSlash(pathname);\n _ctx.next = 37;\n return Promise.all([\n _this.pageLoader._isSsg(route).then(function(isSsg) {\n return isSsg ? fetchNextData({\n dataHref: (data == null ? void 0 : data.dataHref) || _this.pageLoader.getDataHref({\n href: url,\n asPath: resolvedAs,\n locale: locale\n }),\n isServerRender: false,\n parseJSON: true,\n inflightCache: _this.sdc,\n persistCache: !_this.isPreview,\n isPrefetch: true,\n unstable_skipClientCache: options.unstable_skipClientCache || options.priority\n }).then(function() {\n return false;\n }) : false;\n }),\n _this.pageLoader[options.priority ? \"loadPage\" : \"prefetch\"](route), \n ]);\n case 37:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee);\n }))();\n }\n },\n {\n key: \"fetchComponent\",\n value: function fetchComponent(route) {\n var _this = this;\n return _asyncToGenerator(_runtimeJs.default.mark(function _callee() {\n var handleCancelled, componentResult;\n return _runtimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n handleCancelled = getCancelledHandler({\n route: route,\n router: _this\n });\n _ctx.prev = 1;\n _ctx.next = 4;\n return _this.pageLoader.loadPage(route);\n case 4:\n componentResult = _ctx.sent;\n handleCancelled();\n return _ctx.abrupt(\"return\", componentResult);\n case 9:\n _ctx.prev = 9;\n _ctx.t0 = _ctx[\"catch\"](1);\n handleCancelled();\n throw _ctx.t0;\n case 13:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee, null, [\n [\n 1,\n 9\n ]\n ]);\n }))();\n }\n },\n {\n key: \"_getData\",\n value: function _getData(fn) {\n var _this = this;\n var cancelled = false;\n var cancel = function() {\n cancelled = true;\n };\n this.clc = cancel;\n return fn().then(function(data) {\n if (cancel === _this.clc) {\n _this.clc = null;\n }\n if (cancelled) {\n var err = new Error(\"Loading initial props cancelled\");\n err.cancelled = true;\n throw err;\n }\n return data;\n });\n }\n },\n {\n key: \"_getFlightData\",\n value: function _getFlightData(dataHref) {\n // Do not cache RSC flight response since it's not a static resource\n return fetchNextData({\n dataHref: dataHref,\n isServerRender: true,\n parseJSON: false,\n inflightCache: this.sdc,\n persistCache: false,\n isPrefetch: false\n }).then(function(param) {\n var text = param.text;\n return {\n data: text\n };\n });\n }\n },\n {\n key: \"getInitialProps\",\n value: function getInitialProps(Component, ctx) {\n var ref = this.components[\"/_app\"], App = ref.Component;\n var AppTree = this._wrapApp(App);\n ctx.AppTree = AppTree;\n return (0, _utils).loadGetInitialProps(App, {\n AppTree: AppTree,\n Component: Component,\n router: this,\n ctx: ctx\n });\n }\n },\n {\n key: \"route\",\n get: function get() {\n return this.state.route;\n }\n },\n {\n key: \"pathname\",\n get: function get() {\n return this.state.pathname;\n }\n },\n {\n key: \"query\",\n get: function get() {\n return this.state.query;\n }\n },\n {\n key: \"asPath\",\n get: function get() {\n return this.state.asPath;\n }\n },\n {\n key: \"locale\",\n get: function get() {\n return this.state.locale;\n }\n },\n {\n key: \"isFallback\",\n get: function get() {\n return this.state.isFallback;\n }\n },\n {\n key: \"isPreview\",\n get: function get() {\n return this.state.isPreview;\n }\n }\n ]);\n return Router;\n}();\nRouter.events = (0, _mitt).default();\nfunction matchesMiddleware(options) {\n return Promise.resolve(options.router.pageLoader.getMiddlewareList()).then(function(items) {\n var ref = (0, _parsePath).parsePath(options.asPath), asPathname = ref.pathname;\n var cleanedAs = (0, _hasBasePath).hasBasePath(asPathname) ? (0, _removeBasePath).removeBasePath(asPathname) : asPathname;\n return !!(items == null ? void 0 : items.some(function(param) {\n var _param = _slicedToArray(param, 2), regex = _param[0], ssr = _param[1];\n return !ssr && new RegExp(regex).test((0, _addLocale).addLocale(cleanedAs, options.locale));\n }));\n });\n}\nfunction withMiddlewareEffects(options) {\n return matchesMiddleware(options).then(function(matches) {\n if (matches && options.fetchData) {\n return options.fetchData().then(function(data) {\n return getMiddlewareData(data.dataHref, data.response, options).then(function(effect) {\n return {\n dataHref: data.dataHref,\n json: data.json,\n response: data.response,\n text: data.text,\n effect: effect\n };\n });\n }).catch(function(_err) {\n /**\n * TODO: Revisit this in the future.\n * For now we will not consider middleware data errors to be fatal.\n * maybe we should revisit in the future.\n */ return null;\n });\n }\n return null;\n });\n}\nfunction getMiddlewareData(source, response, options) {\n var nextConfig = {\n basePath: options.router.basePath,\n i18n: {\n locales: options.router.locales\n },\n trailingSlash: Boolean(false)\n };\n var rewriteHeader = response.headers.get(\"x-nextjs-rewrite\");\n var rewriteTarget = rewriteHeader || response.headers.get(\"x-nextjs-matched-path\");\n var matchedPath = response.headers.get(\"x-matched-path\");\n if (!rewriteTarget && !(matchedPath == null ? void 0 : matchedPath.includes(\"__next_data_catchall\"))) {\n rewriteTarget = matchedPath;\n }\n if (rewriteTarget) {\n if (rewriteTarget.startsWith(\"/\")) {\n var parsedRewriteTarget = (0, _parseRelativeUrl).parseRelativeUrl(rewriteTarget);\n var pathnameInfo = (0, _getNextPathnameInfo).getNextPathnameInfo(parsedRewriteTarget.pathname, {\n nextConfig: nextConfig,\n parseData: true\n });\n var fsPathname = (0, _removeTrailingSlash).removeTrailingSlash(pathnameInfo.pathname);\n return Promise.all([\n options.router.pageLoader.getPageList(),\n (0, _routeLoader).getClientBuildManifest(), \n ]).then(function(param) {\n var _param = _slicedToArray(param, 2), pages = _param[0], ref = _param[1], rewrites = ref.__rewrites;\n var as = (0, _addLocale).addLocale(pathnameInfo.pathname, pathnameInfo.locale);\n if ((0, _isDynamic).isDynamicRoute(as) || !rewriteHeader && pages.includes((0, _normalizeLocalePath).normalizeLocalePath((0, _removeBasePath).removeBasePath(as), options.router.locales).pathname)) {\n var parsedSource = (0, _getNextPathnameInfo).getNextPathnameInfo((0, _parseRelativeUrl).parseRelativeUrl(source).pathname, {\n parseData: true\n });\n as = (0, _addBasePath).addBasePath(parsedSource.pathname);\n parsedRewriteTarget.pathname = as;\n }\n if (false) { var result; }\n var resolvedHref = !pages.includes(fsPathname) ? resolveDynamicRoute((0, _normalizeLocalePath).normalizeLocalePath((0, _removeBasePath).removeBasePath(parsedRewriteTarget.pathname), options.router.locales).pathname, pages) : fsPathname;\n if ((0, _isDynamic).isDynamicRoute(resolvedHref)) {\n var matches = (0, _routeMatcher).getRouteMatcher((0, _routeRegex).getRouteRegex(resolvedHref))(as);\n Object.assign(parsedRewriteTarget.query, matches || {});\n }\n return {\n type: \"rewrite\",\n parsedAs: parsedRewriteTarget,\n resolvedHref: resolvedHref\n };\n });\n }\n var src = (0, _parsePath).parsePath(source);\n var pathname = (0, _formatNextPathnameInfo).formatNextPathnameInfo(_extends({}, (0, _getNextPathnameInfo).getNextPathnameInfo(src.pathname, {\n nextConfig: nextConfig,\n parseData: true\n }), {\n defaultLocale: options.router.defaultLocale,\n buildId: \"\"\n }));\n return Promise.resolve({\n type: \"redirect-external\",\n destination: \"\".concat(pathname).concat(src.query).concat(src.hash)\n });\n }\n var redirectTarget = response.headers.get(\"x-nextjs-redirect\");\n if (redirectTarget) {\n if (redirectTarget.startsWith(\"/\")) {\n var src1 = (0, _parsePath).parsePath(redirectTarget);\n var pathname1 = (0, _formatNextPathnameInfo).formatNextPathnameInfo(_extends({}, (0, _getNextPathnameInfo).getNextPathnameInfo(src1.pathname, {\n nextConfig: nextConfig,\n parseData: true\n }), {\n defaultLocale: options.router.defaultLocale,\n buildId: \"\"\n }));\n return Promise.resolve({\n type: \"redirect-internal\",\n newAs: \"\".concat(pathname1).concat(src1.query).concat(src1.hash),\n newUrl: \"\".concat(pathname1).concat(src1.query).concat(src1.hash)\n });\n }\n return Promise.resolve({\n type: \"redirect-external\",\n destination: redirectTarget\n });\n }\n return Promise.resolve({\n type: \"next\"\n });\n}\nexports[\"default\"] = Router; //# sourceMappingURL=router.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zaGFyZWQvbGliL3JvdXRlci9yb3V0ZXIuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7Ozs7Ozs7OztBQUNiQSw4Q0FBNkM7SUFDekNHLEtBQUssRUFBRSxJQUFJO0NBQ2QsRUFBQyxDQUFDO0FBQ0hELGtCQUFrQixHQUFHRSxVQUFVLENBQUM7QUFDaENGLHFCQUFxQixHQUFHRyxhQUFhLENBQUM7QUFDdENILG1CQUFtQixHQUFHSSxXQUFXLENBQUM7QUFDbENKLGlCQUFpQixHQUFHSyxTQUFTLENBQUM7QUFDOUJMLGtCQUFlLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDekIsSUFBSU8sdUJBQXVCLEdBQUdDLG1CQUFPLENBQUMsOEdBQTBDLENBQUM7QUFDakYsSUFBSUMsb0JBQW9CLEdBQUdELG1CQUFPLENBQUMsaUhBQStCLENBQUM7QUFDbkUsSUFBSUUsWUFBWSxHQUFHRixtQkFBTyxDQUFDLHNGQUE4QixDQUFDO0FBQzFELElBQUlHLE9BQU8sR0FBR0gsbUJBQU8sQ0FBQywwRUFBd0IsQ0FBQztBQUMvQyxJQUFJSSxRQUFRLEdBQUdDLHVCQUF1QixDQUFDTCxtQkFBTyxDQUFDLHdFQUF1QixDQUFDLENBQUM7QUFDeEUsSUFBSU0sb0JBQW9CLEdBQUdOLG1CQUFPLENBQUMsbUhBQW9DLENBQUM7QUFDeEUsSUFBSU8sb0JBQW9CLEdBQUdQLG1CQUFPLENBQUMseUdBQStCLENBQUM7QUFDbkUsSUFBSVEsS0FBSyxHQUFHQyx1QkFBc0IsQ0FBQ1QsbUJBQU8sQ0FBQyw2REFBUyxDQUFDLENBQUM7QUFDdEQsSUFBSVUsTUFBTSxHQUFHVixtQkFBTyxDQUFDLCtEQUFVLENBQUM7QUFDaEMsSUFBSVcsVUFBVSxHQUFHWCxtQkFBTyxDQUFDLDJGQUFvQixDQUFDO0FBQzlDLElBQUlZLGlCQUFpQixHQUFHWixtQkFBTyxDQUFDLDJHQUE0QixDQUFDO0FBQzdELElBQUlhLFlBQVksR0FBR2IsbUJBQU8sQ0FBQyw2RkFBcUIsQ0FB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QzlCLENBQUMsQ0FBQztLQUNOO0lBQ0QsT0FBTzNaLE9BQU8sQ0FBQ1QsT0FBTyxDQUFDO1FBQ25CMlUsSUFBSSxFQUFFLE1BQU07S0FDZixDQUFDLENBQUM7Q0FDTjtBQUNEaFgsa0JBQWUsR0FBR2dPLE1BQU0sQ0FBQyxDQUV6QixrQ0FBa0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi9yb3V0ZXIvcm91dGVyLmpzPzEyODMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmlzTG9jYWxVUkwgPSBpc0xvY2FsVVJMO1xuZXhwb3J0cy5pbnRlcnBvbGF0ZUFzID0gaW50ZXJwb2xhdGVBcztcbmV4cG9ydHMucmVzb2x2ZUhyZWYgPSByZXNvbHZlSHJlZjtcbmV4cG9ydHMuY3JlYXRlS2V5ID0gY3JlYXRlS2V5O1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xudmFyIF9ub3JtYWxpemVUcmFpbGluZ1NsYXNoID0gcmVxdWlyZShcIi4uLy4uLy4uL2NsaWVudC9ub3JtYWxpemUtdHJhaWxpbmctc2xhc2hcIik7XG52YXIgX3JlbW92ZVRyYWlsaW5nU2xhc2ggPSByZXF1aXJlKFwiLi91dGlscy9yZW1vdmUtdHJhaWxpbmctc2xhc2hcIik7XG52YXIgX3JvdXRlTG9hZGVyID0gcmVxdWlyZShcIi4uLy4uLy4uL2NsaWVudC9yb3V0ZS1sb2FkZXJcIik7XG52YXIgX3NjcmlwdCA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jbGllbnQvc2NyaXB0XCIpO1xudmFyIF9pc0Vycm9yID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcIi4uLy4uLy4uL2xpYi9pcy1lcnJvclwiKSk7XG52YXIgX2Rlbm9ybWFsaXplUGFnZVBhdGggPSByZXF1aXJlKFwiLi4vcGFnZS1wYXRoL2Rlbm9ybWFsaXplLXBhZ2UtcGF0aFwiKTtcbnZhciBfbm9ybWFsaXplTG9jYWxlUGF0aCA9IHJlcXVpcmUoXCIuLi9pMThuL25vcm1hbGl6ZS1sb2NhbGUtcGF0aFwiKTtcbnZhciBfbWl0dCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL21pdHRcIikpO1xudmFyIF91dGlscyA9IHJlcXVpcmUoXCIuLi91dGlsc1wiKTtcbnZhciBfaXNEeW5hbWljID0gcmVxdWlyZShcIi4vdXRpbHMvaXMtZHluYW1pY1wiKTtcbnZhciBfcGFyc2VSZWxhdGl2ZVVybCA9IHJlcXVpcmUoXCIuL3V0aWxzL3BhcnNlLXJlbGF0aXZlLXVybFwiKTtcbnZhciBfcXVlcnlzdHJpbmcgPSByZXF1aXJlKFwiLi91dGlscy9xdWVyeXN0cmluZ1wiKTtcbnZhciBfcmVzb2x2ZVJld3JpdGVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlscy9yZXNvbHZlLXJld3JpdGVzXCIpKTtcbnZhciBfcm91dGVNYXRjaGVyID0gcmVxdWlyZShcIi4vdXRpbHMvcm91dGUtbWF0Y2hlclwiKTtcbnZhciBfcm91dGVSZWdleCA9IHJlcXVpcmUoXCIuL3V0aWxzL3JvdXRlLXJlZ2V4XCIpO1xudmFyIF9mb3JtYXRVcmwgPSByZXF1aXJlKFwiLi91dGlscy9mb3JtYXQtdXJsXCIpO1xudmFyIF9kZXRlY3REb21haW5Mb2NhbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vY2xpZW50L2RldGVjdC1kb21haW4tbG9jYWxlXCIpO1xudmFyIF9wYXJzZVBhdGggPSByZXF1aXJlKFwiLi91dGlscy9wYXJzZS1wYXRoXCIpO1xudmFyIF9hZGRMb2NhbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vY2xpZW50L2FkZC1sb2NhbGVcIik7XG52YXIgX3JlbW92ZUxvY2FsZSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jbGllbnQvcmVtb3ZlLWxvY2FsZVwiKTtcbnZhciBfcmVtb3ZlQmFzZVBhdGggPSByZXF1aXJlKFwiLi4vLi4vLi4vY2xpZW50L3JlbW92ZS1iYXNlLXBhdGhcIik7XG52YXIgX2FkZEJhc2VQYXRoID0gcmVxdWlyZShcIi4uLy4uLy4uL2NsaWVudC9hZGQtYmFzZS1wYXRoXCIpO1xudmFyIF9oYXNCYXNlUGF0aCA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jbGllbnQvaGFzLWJhc2UtcGF0aFwiKTtcbnZhciBfZ2V0TmV4dFBhdGhuYW1lSW5mbyA9IHJlcXVpcmUoXCIuL3V0aWxzL2dldC1uZXh0LXBhdGhuYW1lLWluZm9cIik7XG52YXIgX2Zvcm1hdE5leHRQYXRobmFtZUluZm8gPSByZXF1aXJlKFwiLi91dGlscy9mb3JtYXQtbmV4dC1wYXRobmFtZS1pbmZvXCIpO1xuZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTtcbiAgICAgICAgdmFyIHZhbHVlID0gaW5mby52YWx1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKF9uZXh0LCBfdGhyb3cpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXMsIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHZhciBnZW4gPSBmbi5hcHBseShzZWxmLCBhcmdzKTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9uZXh0KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gX3Rocm93KGVycikge1xuICAgICAgICAgICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX25leHQodW5kZWZpbmVkKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICAgIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0YXJnZXQpIHtcbiAgICAgICAgZm9yKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yKHZhciBrZXkgaW4gc291cmNlKXtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH07XG4gICAgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikge1xuICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgICAgIGRlZmF1bHQ6IG9ialxuICAgIH07XG59XG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7XG4gICAgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsO1xuICAgIHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7XG4gICAgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjYWNoZTtcbiAgICB9O1xuICAgIHJldHVybiBjYWNoZTtcbn1cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikge1xuICAgIGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgICAgIH07XG4gICAgfVxuICAgIHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpO1xuICAgIGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkge1xuICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KG9iaik7XG4gICAgfVxuICAgIHZhciBuZXdPYmogPSB7fTtcbiAgICB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICAgZm9yKHZhciBrZXkgaW4gb2JqKXtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgIHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsO1xuICAgICAgICAgICAgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld09ialtrZXldID0gb2JqW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgbmV3T2JqLmRlZmF1bHQgPSBvYmo7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIGNhY2hlLnNldChvYmosIG5ld09iaik7XG4gICAgfVxuICAgIHJldHVybiBuZXdPYmo7XG59XG5mdW5jdGlvbiBidWlsZENhbmNlbGxhdGlvbkVycm9yKCkge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBFcnJvcignUm91dGUgQ2FuY2VsbGVkJyksIHtcbiAgICAgICAgY2FuY2VsbGVkOiB0cnVlXG4gICAgfSk7XG59XG5mdW5jdGlvbiBpc0xvY2FsVVJMKHVybCkge1xuICAgIC8vIHByZXZlbnQgYSBoeWRyYXRpb24gbWlzbWF0Y2ggb24gaHJlZiBmb3IgdXJsIHdpdGggYW5jaG9yIHJlZnNcbiAgICBpZiAoISgwLCBfdXRpbHMpLmlzQWJzb2x1dGVVcmwodXJsKSkgcmV0dXJuIHRydWU7XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gYWJzb2x1dGUgdXJscyBjYW4gYmUgbG9jYWwgaWYgdGhleSBhcmUgb24gdGhlIHNhbWUgb3JpZ2luXG4gICAgICAgIGNvbnN0IGxvY2F0aW9uT3JpZ2luID0gKDAsIF91dGlscykuZ2V0TG9jYXRpb25PcmlnaW4oKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSBuZXcgVVJMKHVybCwgbG9jYXRpb25PcmlnaW4pO1xuICAgICAgICByZXR1cm4gcmVzb2x2ZWQub3JpZ2luID09PSBsb2NhdGlvbk9yaWdpbiAmJiAoMCwgX2hhc0Jhc2VQYXRoKS5oYXNCYXNlUGF0aChyZXNvbHZlZC5wYXRobmFtZSk7XG4gICAgfSBjYXRjaCAoXykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuZnVuY3Rpb24gaW50ZXJwb2xhdGVBcyhyb3V0ZSwgYXNQYXRobmFtZSwgcXVlcnkpIHtcbiAgICBsZXQgaW50ZXJwb2xhdGVkUm91dGUgPSAnJztcbiAgICBjb25zdCBkeW5hbWljUmVnZXggPSAoMCwgX3JvdXRlUmVnZXgpLmdldFJvdXRlUmVnZXgocm91dGUpO1xuICAgIGNvbnN0IGR5bmFtaWNHcm91cHMgPSBkeW5hbWljUmVnZXguZ3JvdXBzO1xuICAgIGNvbnN0IGR5bmFtaWNNYXRjaGVzID0gLy8gVHJ5IHRvIG1hdGNoIHRoZSBkeW5hbWljIHJvdXRlIGFnYWluc3QgdGhlIGFzUGF0aFxuICAgIChhc1BhdGhuYW1lICE9PSByb3V0ZSA/ICgwLCBfcm91dGVNYXRjaGVyKS5nZXRSb3V0ZU1hdGNoZXIoZHluYW1pY1JlZ2V4KShhc1BhdGhuYW1lKSA6ICcnKSB8fCAvLyBGYWxsIGJhY2sgdG8gcmVhZGluZyB0aGUgdmFsdWVzIGZyb20gdGhlIGhyZWZcbiAgICAvLyBUT0RPOiBzaG91bGQgdGhpcyB0YWtlIHByaW9yaXR5OyBhbHNvIG5lZWQgdG8gY2hhbmdlIGluIHRoZSByb3V0ZXIuXG4gICAgcXVlcnk7XG4gICAgaW50ZXJwb2xhdGVkUm91dGUgPSByb3V0ZTtcbiAgICBjb25zdCBwYXJhbXMgPSBPYmplY3Qua2V5cyhkeW5hbWljR3JvdXBzKTtcbiAgICBpZiAoIXBhcmFtcy5ldmVyeSgocGFyYW0pPT57XG4gICAgICAgIGxldCB2YWx1ZSA9IGR5bmFtaWNNYXRjaGVzW3BhcmFtXSB8fCAnJztcbiAgICAgICAgY29uc3QgeyByZXBlYXQgLCBvcHRpb25hbCAgfSA9IGR5bmFtaWNHcm91cHNbcGFyYW1dO1xuICAgICAgICAvLyBzdXBwb3J0IHNpbmdsZS1sZXZlbCBjYXRjaC1hbGxcbiAgICAgICAgLy8gVE9ETzogbW9yZSByb2J1c3QgaGFuZGxpbmcgZm9yIHVzZXItZXJyb3IgKHBhc3NpbmcgYC9gKVxuICAgICAgICBsZXQgcmVwbGFjZWQgPSBgWyR7cmVwZWF0ID8gJy4uLicgOiAnJ30ke3BhcmFtfV1gO1xuICAgICAgICBpZiAob3B0aW9uYWwpIHtcbiAgICAgICAgICAgIHJlcGxhY2VkID0gYCR7IXZhbHVlID8gJy8nIDogJyd9WyR7cmVwbGFjZWR9XWA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcGVhdCAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHZhbHVlID0gW1xuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgXTtcbiAgICAgICAgcmV0dXJuIChvcHRpb25hbCB8fCBwYXJhbSBpbiBkeW5hbWljTWF0Y2hlcykgJiYgLy8gSW50ZXJwb2xhdGUgZ3JvdXAgaW50byBkYXRhIFVSTCBpZiBwcmVzZW50XG4gICAgICAgIChpbnRlcnBvbGF0ZWRSb3V0ZSA9IGludGVycG9sYXRlZFJvdXRlLnJlcGxhY2UocmVwbGFjZWQsIHJlcGVhdCA/IHZhbHVlLm1hcCgvLyB0aGVzZSB2YWx1ZXMgc2hvdWxkIGJlIGZ1bGx5IGVuY29kZWQgaW5zdGVhZCBvZiBqdXN0XG4gICAgICAgIC8vIHBhdGggZGVsaW1pdGVyIGVzY2FwZWQgc2luY2UgdGhleSBhcmUgYmVpbmcgaW5zZXJ0ZWRcbiAgICAgICAgLy8gaW50byB0aGUgVVJMIGFuZCB3ZSBleHBlY3QgVVJMIGVuY29kZWQgc2VnbWVudHNcbiAgICAgICAgLy8gd2hlbiBwYXJzaW5nIGR5bmFtaWMgcm91dGUgcGFyYW1zXG4gICAgICAgIChzZWdtZW50KT0+ZW5jb2RlVVJJQ29tcG9uZW50KHNlZ21lbnQpKS5qb2luKCcvJykgOiBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpKSB8fCAnLycpO1xuICAgIH0pKSB7XG4gICAgICAgIGludGVycG9sYXRlZFJvdXRlID0gJycgLy8gZGlkIG5vdCBzYXRpc2Z5IGFsbCByZXF1aXJlbWVudHNcbiAgICAgICAgO1xuICAgIC8vIG4uYi4gV2UgaWdub3JlIHRoaXMgZXJyb3IgYmVjYXVzZSB3ZSBoYW5kbGUgd2FybmluZyBmb3IgdGhpcyBjYXNlIGluXG4gICAgLy8gZGV2ZWxvcG1lbnQgaW4gdGhlIGA8TGluaz5gIGNvbXBvbmVudCBkaXJlY3RseS5cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICByZXN1bHQ6IGludGVycG9sYXRlZFJvdXRlXG4gICAgfTtcbn1cbmZ1bmN0aW9uIG9taXQob2JqZWN0LCBrZXlzKSB7XG4gICAgY29uc3Qgb21pdHRlZCA9IHt9O1xuICAgIE9iamVjdC5rZXlzKG9iamVjdCkuZm9yRWFjaCgoa2V5KT0+e1xuICAgICAgICBpZiAoIWtleXMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgb21pdHRlZFtrZXldID0gb2JqZWN0W2tleV07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gb21pdHRlZDtcbn1cbmZ1bmN0aW9uIHJlc29sdmVIcmVmKHJvdXRlciwgaHJlZiwgcmVzb2x2ZUFzKSB7XG4gICAgLy8gd2UgdXNlIGEgZHVtbXkgYmFzZSB1cmwgZm9yIHJlbGF0aXZlIHVybHNcbiAgICBsZXQgYmFzZTtcbiAgICBsZXQgdXJsQXNTdHJpbmcgPSB0eXBlb2YgaHJlZiA9PT0gJ3N0cmluZycgPyBocmVmIDogKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKGhyZWYpO1xuICAgIC8vIHJlcGVhdGVkIHNsYXNoZXMgYW5kIGJhY2tzbGFzaGVzIGluIHRoZSBVUkwgYXJlIGNvbnNpZGVyZWRcbiAgICAvLyBpbnZhbGlkIGFuZCB3aWxsIG5ldmVyIG1hdGNoIGEgTmV4dC5qcyBwYWdlL2ZpbGVcbiAgICBjb25zdCB1cmxQcm90b01hdGNoID0gdXJsQXNTdHJpbmcubWF0Y2goL15bYS16QS1aXXsxLH06XFwvXFwvLyk7XG4gICAgY29uc3QgdXJsQXNTdHJpbmdOb1Byb3RvID0gdXJsUHJvdG9NYXRjaCA/IHVybEFzU3RyaW5nLnNsaWNlKHVybFByb3RvTWF0Y2hbMF0ubGVuZ3RoKSA6IHVybEFzU3RyaW5nO1xuICAgIGNvbnN0IHVybFBhcnRzID0gdXJsQXNTdHJpbmdOb1Byb3RvLnNwbGl0KCc/Jyk7XG4gICAgaWYgKCh1cmxQYXJ0c1swXSB8fCAnJykubWF0Y2goLyhcXC9cXC98XFxcXCkvKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBJbnZhbGlkIGhyZWYgcGFzc2VkIHRvIG5leHQvcm91dGVyOiAke3VybEFzU3RyaW5nfSwgcmVwZWF0ZWQgZm9yd2FyZC1zbGFzaGVzICgvLykgb3IgYmFja3NsYXNoZXMgXFxcXCBhcmUgbm90IHZhbGlkIGluIHRoZSBocmVmYCk7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRVcmwgPSAoMCwgX3V0aWxzKS5ub3JtYWxpemVSZXBlYXRlZFNsYXNoZXModXJsQXNTdHJpbmdOb1Byb3RvKTtcbiAgICAgICAgdXJsQXNTdHJpbmcgPSAodXJsUHJvdG9NYXRjaCA/IHVybFByb3RvTWF0Y2hbMF0gOiAnJykgKyBub3JtYWxpemVkVXJsO1xuICAgIH1cbiAgICAvLyBSZXR1cm4gYmVjYXVzZSBpdCBjYW5ub3QgYmUgcm91dGVkIGJ5IHRoZSBOZXh0LmpzIHJvdXRlclxuICAgIGlmICghaXNMb2NhbFVSTCh1cmxBc1N0cmluZykpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVBcyA/IFtcbiAgICAgICAgICAgIHVybEFzU3RyaW5nXG4gICAgICAgIF0gOiB1cmxBc1N0cmluZztcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgYmFzZSA9IG5ldyBVUkwodXJsQXNTdHJpbmcuc3RhcnRzV2l0aCgnIycpID8gcm91dGVyLmFzUGF0aCA6IHJvdXRlci5wYXRobmFtZSwgJ2h0dHA6Ly9uJyk7XG4gICAgfSBjYXRjaCAoXykge1xuICAgICAgICAvLyBmYWxsYmFjayB0byAvIGZvciBpbnZhbGlkIGFzUGF0aCB2YWx1ZXMgZS5nLiAvL1xuICAgICAgICBiYXNlID0gbmV3IFVSTCgnLycsICdodHRwOi8vbicpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBjb25zdCBmaW5hbFVybCA9IG5ldyBVUkwodXJsQXNTdHJpbmcsIGJhc2UpO1xuICAgICAgICBmaW5hbFVybC5wYXRobmFtZSA9ICgwLCBfbm9ybWFsaXplVHJhaWxpbmdTbGFzaCkubm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2goZmluYWxVcmwucGF0aG5hbWUpO1xuICAgICAgICBsZXQgaW50ZXJwb2xhdGVkQXMgPSAnJztcbiAgICAgICAgaWYgKCgwLCBfaXNEeW5hbWljKS5pc0R5bmFtaWNSb3V0ZShmaW5hbFVybC5wYXRobmFtZSkgJiYgZmluYWxVcmwuc2VhcmNoUGFyYW1zICYmIHJlc29sdmVBcykge1xuICAgICAgICAgICAgY29uc3QgcXVlcnkgPSAoMCwgX3F1ZXJ5c3RyaW5nKS5zZWFyY2hQYXJhbXNUb1VybFF1ZXJ5KGZpbmFsVXJsLnNlYXJjaFBhcmFtcyk7XG4gICAgICAgICAgICBjb25zdCB7IHJlc3VsdCAsIHBhcmFtcyAgfSA9IGludGVycG9sYXRlQXMoZmluYWxVcmwucGF0aG5hbWUsIGZpbmFsVXJsLnBhdGhuYW1lLCBxdWVyeSk7XG4gICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgaW50ZXJwb2xhdGVkQXMgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICBwYXRobmFtZTogcmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICBoYXNoOiBmaW5hbFVybC5oYXNoLFxuICAgICAgICAgICAgICAgICAgICBxdWVyeTogb21pdChxdWVyeSwgcGFyYW1zKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGlmIHRoZSBvcmlnaW4gZGlkbid0IGNoYW5nZSwgaXQgbWVhbnMgd2UgcmVjZWl2ZWQgYSByZWxhdGl2ZSBocmVmXG4gICAgICAgIGNvbnN0IHJlc29sdmVkSHJlZiA9IGZpbmFsVXJsLm9yaWdpbiA9PT0gYmFzZS5vcmlnaW4gPyBmaW5hbFVybC5ocmVmLnNsaWNlKGZpbmFsVXJsLm9yaWdpbi5sZW5ndGgpIDogZmluYWxVcmwuaHJlZjtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVBcyA/IFtcbiAgICAgICAgICAgIHJlc29sdmVkSHJlZixcbiAgICAgICAgICAgIGludGVycG9sYXRlZEFzIHx8IHJlc29sdmVkSHJlZlxuICAgICAgICBdIDogcmVzb2x2ZWRIcmVmO1xuICAgIH0gY2F0Y2ggKF8xKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlQXMgPyBbXG4gICAgICAgICAgICB1cmxBc1N0cmluZ1xuICAgICAgICBdIDogdXJsQXNTdHJpbmc7XG4gICAgfVxufVxuZnVuY3Rpb24gc3RyaXBPcmlnaW4odXJsKSB7XG4gICAgY29uc3Qgb3JpZ2luID0gKDAsIF91dGlscykuZ2V0TG9jYXRpb25PcmlnaW4oKTtcbiAgICByZXR1cm4gdXJsLnN0YXJ0c1dpdGgob3JpZ2luKSA/IHVybC5zdWJzdHJpbmcob3JpZ2luLmxlbmd0aCkgOiB1cmw7XG59XG5mdW5jdGlvbiBwcmVwYXJlVXJsQXMocm91dGVyLCB1cmwsIGFzKSB7XG4gICAgLy8gSWYgdXJsIGFuZCBhcyBwcm92aWRlZCBhcyBhbiBvYmplY3QgcmVwcmVzZW50YXRpb24sXG4gICAgLy8gd2UnbGwgZm9ybWF0IHRoZW0gaW50byB0aGUgc3RyaW5nIHZlcnNpb24gaGVyZS5cbiAgICBsZXQgW3Jlc29sdmVkSHJlZiwgcmVzb2x2ZWRBc10gPSByZXNvbHZlSHJlZihyb3V0ZXIsIHVybCwgdHJ1ZSk7XG4gICAgY29uc3Qgb3JpZ2luID0gKDAsIF91dGlscykuZ2V0TG9jYXRpb25PcmlnaW4oKTtcbiAgICBjb25zdCBocmVmSGFkT3JpZ2luID0gcmVzb2x2ZWRIcmVmLnN0YXJ0c1dpdGgob3JpZ2luKTtcbiAgICBjb25zdCBhc0hhZE9yaWdpbiA9IHJlc29sdmVkQXMgJiYgcmVzb2x2ZWRBcy5zdGFydHNXaXRoKG9yaWdpbik7XG4gICAgcmVzb2x2ZWRIcmVmID0gc3RyaXBPcmlnaW4ocmVzb2x2ZWRIcmVmKTtcbiAgICByZXNvbHZlZEFzID0gcmVzb2x2ZWRBcyA/IHN0cmlwT3JpZ2luKHJlc29sdmVkQXMpIDogcmVzb2x2ZWRBcztcbiAgICBjb25zdCBwcmVwYXJlZFVybCA9IGhyZWZIYWRPcmlnaW4gPyByZXNvbHZlZEhyZWYgOiAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aChyZXNvbHZlZEhyZWYpO1xuICAgIGNvbnN0IHByZXBhcmVkQXMgPSBhcyA/IHN0cmlwT3JpZ2luKHJlc29sdmVIcmVmKHJvdXRlciwgYXMpKSA6IHJlc29sdmVkQXMgfHwgcmVzb2x2ZWRIcmVmO1xuICAgIHJldHVybiB7XG4gICAgICAgIHVybDogcHJlcGFyZWRVcmwsXG4gICAgICAgIGFzOiBhc0hhZE9yaWdpbiA/IHByZXBhcmVkQXMgOiAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aChwcmVwYXJlZEFzKVxuICAgIH07XG59XG5mdW5jdGlvbiByZXNvbHZlRHluYW1pY1JvdXRlKHBhdGhuYW1lLCBwYWdlcykge1xuICAgIGNvbnN0IGNsZWFuUGF0aG5hbWUgPSAoMCwgX3JlbW92ZVRyYWlsaW5nU2xhc2gpLnJlbW92ZVRyYWlsaW5nU2xhc2goKDAsIF9kZW5vcm1hbGl6ZVBhZ2VQYXRoKS5kZW5vcm1hbGl6ZVBhZ2VQYXRoKHBhdGhuYW1lKSk7XG4gICAgaWYgKGNsZWFuUGF0aG5hbWUgPT09ICcvNDA0JyB8fCBjbGVhblBhdGhuYW1lID09PSAnL19lcnJvcicpIHtcbiAgICAgICAgcmV0dXJuIHBhdGhuYW1lO1xuICAgIH1cbiAgICAvLyBoYW5kbGUgcmVzb2x2aW5nIGhyZWYgZm9yIGR5bmFtaWMgcm91dGVzXG4gICAgaWYgKCFwYWdlcy5pbmNsdWRlcyhjbGVhblBhdGhuYW1lKSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYXJyYXktY2FsbGJhY2stcmV0dXJuXG4gICAgICAgIHBhZ2VzLnNvbWUoKHBhZ2UpPT57XG4gICAgICAgICAgICBpZiAoKDAsIF9pc0R5bmFtaWMpLmlzRHluYW1pY1JvdXRlKHBhZ2UpICYmICgwLCBfcm91dGVSZWdleCkuZ2V0Um91dGVSZWdleChwYWdlKS5yZS50ZXN0KGNsZWFuUGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcGF0aG5hbWUgPSBwYWdlO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuICgwLCBfcmVtb3ZlVHJhaWxpbmdTbGFzaCkucmVtb3ZlVHJhaWxpbmdTbGFzaChwYXRobmFtZSk7XG59XG5jb25zdCBtYW51YWxTY3JvbGxSZXN0b3JhdGlvbiA9IHByb2Nlc3MuZW52Ll9fTkVYVF9TQ1JPTExfUkVTVE9SQVRJT04gJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgJ3Njcm9sbFJlc3RvcmF0aW9uJyBpbiB3aW5kb3cuaGlzdG9yeSAmJiAhIWZ1bmN0aW9uKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGxldCB2ID0gJ19fbmV4dCc7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZXF1ZW5jZXNcbiAgICAgICAgcmV0dXJuIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odiwgdiksIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0odiksIHRydWU7XG4gICAgfSBjYXRjaCAobikge31cbn0oKTtcbmNvbnN0IFNTR19EQVRBX05PVF9GT1VORCA9IFN5bWJvbCgnU1NHX0RBVEFfTk9UX0ZPVU5EJyk7XG5mdW5jdGlvbiBmZXRjaFJldHJ5KHVybCwgYXR0ZW1wdHMsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gZmV0Y2godXJsLCB7XG4gICAgICAgIC8vIENvb2tpZXMgYXJlIHJlcXVpcmVkIHRvIGJlIHByZXNlbnQgZm9yIE5leHQuanMnIFNTRyBcIlByZXZpZXcgTW9kZVwiLlxuICAgICAgICAvLyBDb29raWVzIG1heSBhbHNvIGJlIHJlcXVpcmVkIGZvciBgZ2V0U2VydmVyU2lkZVByb3BzYC5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gPiBgZmV0Y2hgIHdvbuKAmXQgc2VuZCBjb29raWVzLCB1bmxlc3MgeW91IHNldCB0aGUgY3JlZGVudGlhbHMgaW5pdFxuICAgICAgICAvLyA+IG9wdGlvbi5cbiAgICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0ZldGNoX0FQSS9Vc2luZ19GZXRjaFxuICAgICAgICAvL1xuICAgICAgICAvLyA+IEZvciBtYXhpbXVtIGJyb3dzZXIgY29tcGF0aWJpbGl0eSB3aGVuIGl0IGNvbWVzIHRvIHNlbmRpbmcgJlxuICAgICAgICAvLyA+IHJlY2VpdmluZyBjb29raWVzLCBhbHdheXMgc3VwcGx5IHRoZSBgY3JlZGVudGlhbHM6ICdzYW1lLW9yaWdpbidgXG4gICAgICAgIC8vID4gb3B0aW9uIGluc3RlYWQgb2YgcmVseWluZyBvbiB0aGUgZGVmYXVsdC5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dpdGh1Yi9mZXRjaCNjYXZlYXRzXG4gICAgICAgIGNyZWRlbnRpYWxzOiAnc2FtZS1vcmlnaW4nLFxuICAgICAgICBtZXRob2Q6IG9wdGlvbnMubWV0aG9kIHx8ICdHRVQnLFxuICAgICAgICBoZWFkZXJzOiBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zLmhlYWRlcnMsIHtcbiAgICAgICAgICAgICd4LW5leHRqcy1kYXRhJzogJzEnXG4gICAgICAgIH0pXG4gICAgfSkudGhlbigocmVzcG9uc2UpPT57XG4gICAgICAgIHJldHVybiAhcmVzcG9uc2Uub2sgJiYgYXR0ZW1wdHMgPiAxICYmIHJlc3BvbnNlLnN0YXR1cyA+PSA1MDAgPyBmZXRjaFJldHJ5KHVybCwgYXR0ZW1wdHMgLSAxLCBvcHRpb25zKSA6IHJlc3BvbnNlO1xuICAgIH0pO1xufVxuY29uc3QgYmFja2dyb3VuZENhY2hlID0ge307XG5mdW5jdGlvbiBmZXRjaE5leHREYXRhKHsgZGF0YUhyZWYgLCBpbmZsaWdodENhY2hlICwgaXNQcmVmZXRjaCAsIGhhc01pZGRsZXdhcmUgLCBpc1NlcnZlclJlbmRlciAsIHBhcnNlSlNPTiAsIHBlcnNpc3RDYWNoZSAsIGlzQmFja2dyb3VuZCAsIHVuc3RhYmxlX3NraXBDbGllbnRDYWNoZSAgfSkge1xuICAgIGNvbnN0IHsgaHJlZjogY2FjaGVLZXkgIH0gPSBuZXcgVVJMKGRhdGFIcmVmLCB3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgdmFyIHJlZjE7XG4gICAgY29uc3QgZ2V0RGF0YSA9IChwYXJhbXMpPT57XG4gICAgICAgIHJldHVybiBmZXRjaFJldHJ5KGRhdGFIcmVmLCBpc1NlcnZlclJlbmRlciA/IDMgOiAxLCB7XG4gICAgICAgICAgICBoZWFkZXJzOiBpc1ByZWZldGNoID8ge1xuICAgICAgICAgICAgICAgIHB1cnBvc2U6ICdwcmVmZXRjaCdcbiAgICAgICAgICAgIH0gOiB7fSxcbiAgICAgICAgICAgIG1ldGhvZDogKHJlZjEgPSBwYXJhbXMgPT0gbnVsbCA/IHZvaWQgMCA6IHBhcmFtcy5tZXRob2QpICE9IG51bGwgPyByZWYxIDogJ0dFVCdcbiAgICAgICAgfSkudGhlbigocmVzcG9uc2UpPT57XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uub2sgJiYgKHBhcmFtcyA9PSBudWxsID8gdm9pZCAwIDogcGFyYW1zLm1ldGhvZCkgPT09ICdIRUFEJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFIcmVmLFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIGpzb246IHt9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS50ZXh0KCkudGhlbigodGV4dCk9PntcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2hlbiB0aGUgZGF0YSByZXNwb25zZSBpcyBhIHJlZGlyZWN0IGJlY2F1c2Ugb2YgYSBtaWRkbGV3YXJlXG4gICAgICAgICAgICAgKiB3ZSBkbyBub3QgY29uc2lkZXIgaXQgYW4gZXJyb3IuIFRoZSBoZWFkZXJzIG11c3QgYnJpbmcgdGhlXG4gICAgICAgICAgICAgKiBtYXBwZWQgbG9jYXRpb24uXG4gICAgICAgICAgICAgKiBUT0RPOiBDaGFuZ2UgdGhlIHN0YXR1cyBjb2RlIGluIHRoZSBoYW5kbGVyLlxuICAgICAgICAgICAgICovIGlmIChoYXNNaWRkbGV3YXJlICYmIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIDMwMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDMwMixcbiAgICAgICAgICAgICAgICAgICAgICAgIDMwNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIDMwOFxuICAgICAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKHJlc3BvbnNlLnN0YXR1cykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUhyZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uOiB7fVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWY7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHJlZiA9IHRyeVRvUGFyc2VBc0pTT04odGV4dCkpID09IG51bGwgPyB2b2lkIDAgOiByZWYubm90Rm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhSHJlZixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90Rm91bmQ6IFNTR19EQVRBX05PVF9GT1VORFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICogSWYgdGhlcmUgaXMgYSA0MDQgdGhhdCBpcyBub3QgZm9yIFNTRyB3ZSB1c2VkIHRvIGZhaWwgYnV0IGlmXG4gICAgICAgICAgICAgICAqIHRoZXJlIGlzIGEgbWlkZGxld2FyZSB3ZSBtdXN0IHJlc3BvbmQgd2l0aCBhbiBlbXB0eSBvYmplY3QuXG4gICAgICAgICAgICAgICAqIEZvciBub3cgd2Ugd2lsbCByZXR1cm4gdGhlIGRhdGEgd2hlbiB0aGVyZSBpcyBhIG1pZGRsZXdhcmUuXG4gICAgICAgICAgICAgICAqIFRPRE86IFVwZGF0ZSB0aGUgc2VydmVyIHRvIHN1Y2Nlc3Mgb24gdGhlc2UgcmVxdWVzdHMuXG4gICAgICAgICAgICAgICAqLyBpZiAoaGFzTWlkZGxld2FyZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFIcmVmLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbjoge31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBGYWlsZWQgdG8gbG9hZCBzdGF0aWMgcHJvcHNgKTtcbiAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXZSBzaG91bGQgb25seSB0cmlnZ2VyIGEgc2VydmVyLXNpZGUgdHJhbnNpdGlvbiBpZiB0aGlzIHdhc1xuICAgICAgICAgICAgICogY2F1c2VkIG9uIGEgY2xpZW50LXNpZGUgdHJhbnNpdGlvbi4gT3RoZXJ3aXNlLCB3ZSdkIGdldCBpbnRvXG4gICAgICAgICAgICAgKiBhbiBpbmZpbml0ZSBsb29wLlxuICAgICAgICAgICAgICovIGlmICghaXNTZXJ2ZXJSZW5kZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfcm91dGVMb2FkZXIpLm1hcmtBc3NldEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YUhyZWYsXG4gICAgICAgICAgICAgICAgICAgIGpzb246IHBhcnNlSlNPTiA/IHRyeVRvUGFyc2VBc0pTT04odGV4dCkgOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICAgIHRleHRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLnRoZW4oKGRhdGEpPT57XG4gICAgICAgICAgICBpZiAoIXBlcnNpc3RDYWNoZSB8fCBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nIHx8IGRhdGEucmVzcG9uc2UuaGVhZGVycy5nZXQoJ3gtbWlkZGxld2FyZS1jYWNoZScpID09PSAnbm8tY2FjaGUnKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGluZmxpZ2h0Q2FjaGVbY2FjaGVLZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0pLmNhdGNoKChlcnIpPT57XG4gICAgICAgICAgICBkZWxldGUgaW5mbGlnaHRDYWNoZVtjYWNoZUtleV07XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLy8gd2hlbiBza2lwcGluZyBjbGllbnQgY2FjaGUgd2Ugd2FpdCB0byB1cGRhdGVcbiAgICAvLyBpbmZsaWdodCBjYWNoZSB1bnRpbCBzdWNjZXNzZnVsIGRhdGEgcmVzcG9uc2VcbiAgICAvLyB0aGlzIGFsbG93cyByYWNpbmcgY2xpY2sgZXZlbnQgd2l0aCBmZXRjaGluZyBuZXdlciBkYXRhXG4gICAgLy8gd2l0aG91dCBibG9ja2luZyBuYXZpZ2F0aW9uIHdoZW4gc3RhbGUgZGF0YSBpcyBhdmFpbGFibGVcbiAgICBpZiAodW5zdGFibGVfc2tpcENsaWVudENhY2hlICYmIHBlcnNpc3RDYWNoZSkge1xuICAgICAgICByZXR1cm4gZ2V0RGF0YSh7fSkudGhlbigoZGF0YSk9PntcbiAgICAgICAgICAgIGluZmxpZ2h0Q2FjaGVbY2FjaGVLZXldID0gUHJvbWlzZS5yZXNvbHZlKGRhdGEpO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoaW5mbGlnaHRDYWNoZVtjYWNoZUtleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gaW5mbGlnaHRDYWNoZVtjYWNoZUtleV07XG4gICAgfVxuICAgIHJldHVybiBpbmZsaWdodENhY2hlW2NhY2hlS2V5XSA9IGdldERhdGEoaXNCYWNrZ3JvdW5kID8ge1xuICAgICAgICBtZXRob2Q6ICdIRUFEJ1xuICAgIH0gOiB7fSk7XG59XG5mdW5jdGlvbiB0cnlUb1BhcnNlQXNKU09OKHRleHQpIHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxufVxuZnVuY3Rpb24gY3JlYXRlS2V5KCkge1xuICAgIHJldHVybiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCAxMCk7XG59XG5mdW5jdGlvbiBoYW5kbGVIYXJkTmF2aWdhdGlvbih7IHVybCAsIHJvdXRlciAgfSkge1xuICAgIC8vIGVuc3VyZSB3ZSBkb24ndCB0cmlnZ2VyIGEgaGFyZCBuYXZpZ2F0aW9uIHRvIHRoZSBzYW1lXG4gICAgLy8gVVJMIGFzIHRoaXMgY2FuIGVuZCB1cCB3aXRoIGFuIGluZmluaXRlIHJlZnJlc2hcbiAgICBpZiAodXJsID09PSAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aCgoMCwgX2FkZExvY2FsZSkuYWRkTG9jYWxlKHJvdXRlci5hc1BhdGgsIHJvdXRlci5sb2NhbGUpKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFyaWFudDogYXR0ZW1wdGVkIHRvIGhhcmQgbmF2aWdhdGUgdG8gdGhlIHNhbWUgVVJMICR7dXJsfSAke2xvY2F0aW9uLmhyZWZ9YCk7XG4gICAgfVxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xufVxuY29uc3QgZ2V0Q2FuY2VsbGVkSGFuZGxlciA9ICh7IHJvdXRlICwgcm91dGVyICB9KT0+e1xuICAgIGxldCBjYW5jZWxsZWQgPSBmYWxzZTtcbiAgICBjb25zdCBjYW5jZWwgPSByb3V0ZXIuY2xjID0gKCk9PntcbiAgICAgICAgY2FuY2VsbGVkID0gdHJ1ZTtcbiAgICB9O1xuICAgIGNvbnN0IGhhbmRsZUNhbmNlbGxlZCA9ICgpPT57XG4gICAgICAgIGlmIChjYW5jZWxsZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBBYm9ydCBmZXRjaGluZyBjb21wb25lbnQgZm9yIHJvdXRlOiBcIiR7cm91dGV9XCJgKTtcbiAgICAgICAgICAgIGVycm9yLmNhbmNlbGxlZCA9IHRydWU7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FuY2VsID09PSByb3V0ZXIuY2xjKSB7XG4gICAgICAgICAgICByb3V0ZXIuY2xjID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIGhhbmRsZUNhbmNlbGxlZDtcbn07XG5jbGFzcyBSb3V0ZXIge1xuICAgIHJlbG9hZCgpIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgIH1cbiAgICAvKipcbiAgICogR28gYmFjayBpbiBoaXN0b3J5XG4gICAqLyBiYWNrKCkge1xuICAgICAgICB3aW5kb3cuaGlzdG9yeS5iYWNrKCk7XG4gICAgfVxuICAgIC8qKlxuICAgKiBQZXJmb3JtcyBhIGBwdXNoU3RhdGVgIHdpdGggYXJndW1lbnRzXG4gICAqIEBwYXJhbSB1cmwgb2YgdGhlIHJvdXRlXG4gICAqIEBwYXJhbSBhcyBtYXNrcyBgdXJsYCBmb3IgdGhlIGJyb3dzZXJcbiAgICogQHBhcmFtIG9wdGlvbnMgb2JqZWN0IHlvdSBjYW4gZGVmaW5lIGBzaGFsbG93YCBhbmQgb3RoZXIgb3B0aW9uc1xuICAgKi8gcHVzaCh1cmwsIGFzLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9TQ1JPTExfUkVTVE9SQVRJT04pIHtcbiAgICAgICAgICAgIC8vIFRPRE86IHJlbW92ZSBpbiB0aGUgZnV0dXJlIHdoZW4gd2UgdXBkYXRlIGhpc3RvcnkgYmVmb3JlIHJvdXRlIGNoYW5nZVxuICAgICAgICAgICAgLy8gaXMgY29tcGxldGUsIGFzIHRoZSBwb3BzdGF0ZSBldmVudCBzaG91bGQgaGFuZGxlIHRoaXMgY2FwdHVyZS5cbiAgICAgICAgICAgIGlmIChtYW51YWxTY3JvbGxSZXN0b3JhdGlvbikge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNuYXBzaG90IHNjcm9sbCBwb3NpdGlvbiByaWdodCBiZWZvcmUgbmF2aWdhdGluZyB0byBhIG5ldyBwYWdlOlxuICAgICAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdfX25leHRfc2Nyb2xsXycgKyB0aGlzLl9rZXksIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHg6IHNlbGYucGFnZVhPZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICB5OiBzZWxmLnBhZ2VZT2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICh7IHVybCAsIGFzICB9ID0gcHJlcGFyZVVybEFzKHRoaXMsIHVybCwgYXMpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhbmdlKCdwdXNoU3RhdGUnLCB1cmwsIGFzLCBvcHRpb25zKTtcbiAgICB9XG4gICAgLyoqXG4gICAqIFBlcmZvcm1zIGEgYHJlcGxhY2VTdGF0ZWAgd2l0aCBhcmd1bWVudHNcbiAgICogQHBhcmFtIHVybCBvZiB0aGUgcm91dGVcbiAgICogQHBhcmFtIGFzIG1hc2tzIGB1cmxgIGZvciB0aGUgYnJvd3NlclxuICAgKiBAcGFyYW0gb3B0aW9ucyBvYmplY3QgeW91IGNhbiBkZWZpbmUgYHNoYWxsb3dgIGFuZCBvdGhlciBvcHRpb25zXG4gICAqLyByZXBsYWNlKHVybCwgYXMsIG9wdGlvbnMgPSB7fSkge1xuICAgICAgICAoeyB1cmwgLCBhcyAgfSA9IHByZXBhcmVVcmxBcyh0aGlzLCB1cmwsIGFzKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmNoYW5nZSgncmVwbGFjZVN0YXRlJywgdXJsLCBhcywgb3B0aW9ucyk7XG4gICAgfVxuICAgIGNoYW5nZShtZXRob2QsIHVybCwgYXMsIG9wdGlvbnMsIGZvcmNlZFNjcm9sbCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qKCkge1xuICAgICAgICAgICAgaWYgKCFpc0xvY2FsVVJMKHVybCkpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFdBUk5JTkc6IGBfaGAgaXMgYW4gaW50ZXJuYWwgb3B0aW9uIGZvciBoYW5kaW5nIE5leHQuanMgY2xpZW50LXNpZGVcbiAgICAgICAgICAgIC8vIGh5ZHJhdGlvbi4gWW91ciBhcHAgc2hvdWxkIF9uZXZlcl8gdXNlIHRoaXMgcHJvcGVydHkuIEl0IG1heSBjaGFuZ2UgYXRcbiAgICAgICAgICAgIC8vIGFueSB0aW1lIHdpdGhvdXQgbm90aWNlLlxuICAgICAgICAgICAgY29uc3QgaXNRdWVyeVVwZGF0aW5nID0gb3B0aW9ucy5faDtcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZFJlc29sdmVIcmVmID0gaXNRdWVyeVVwZGF0aW5nIHx8IG9wdGlvbnMuX3Nob3VsZFJlc29sdmVIcmVmIHx8ICgwLCBfcGFyc2VQYXRoKS5wYXJzZVBhdGgodXJsKS5wYXRobmFtZSA9PT0gKDAsIF9wYXJzZVBhdGgpLnBhcnNlUGF0aChhcykucGF0aG5hbWU7XG4gICAgICAgICAgICBjb25zdCBuZXh0U3RhdGUgPSBfZXh0ZW5kcyh7fSwgX3RoaXMuc3RhdGUpO1xuICAgICAgICAgICAgLy8gZm9yIHN0YXRpYyBwYWdlcyB3aXRoIHF1ZXJ5IHBhcmFtcyBpbiB0aGUgVVJMIHdlIGRlbGF5XG4gICAgICAgICAgICAvLyBtYXJraW5nIHRoZSByb3V0ZXIgcmVhZHkgdW50aWwgYWZ0ZXIgdGhlIHF1ZXJ5IGlzIHVwZGF0ZWRcbiAgICAgICAgICAgIC8vIG9yIGEgbmF2aWdhdGlvbiBoYXMgb2NjdXJyZWRcbiAgICAgICAgICAgIF90aGlzLmlzUmVhZHkgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXNTc3IgPSBfdGhpcy5pc1NzcjtcbiAgICAgICAgICAgIGlmICghaXNRdWVyeVVwZGF0aW5nKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuaXNTc3IgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGlmIGEgcm91dGUgdHJhbnNpdGlvbiBpcyBhbHJlYWR5IGluIHByb2dyZXNzIGJlZm9yZVxuICAgICAgICAgICAgLy8gdGhlIHF1ZXJ5IHVwZGF0aW5nIGlzIHRyaWdnZXJlZCBpZ25vcmUgcXVlcnkgdXBkYXRpbmdcbiAgICAgICAgICAgIGlmIChpc1F1ZXJ5VXBkYXRpbmcgJiYgX3RoaXMuY2xjKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcHJldkxvY2FsZSA9IG5leHRTdGF0ZS5sb2NhbGU7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICAgICAgICAgIG5leHRTdGF0ZS5sb2NhbGUgPSBvcHRpb25zLmxvY2FsZSA9PT0gZmFsc2UgPyBfdGhpcy5kZWZhdWx0TG9jYWxlIDogb3B0aW9ucy5sb2NhbGUgfHwgbmV4dFN0YXRlLmxvY2FsZTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMubG9jYWxlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmxvY2FsZSA9IG5leHRTdGF0ZS5sb2NhbGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZEFzID0gKDAsIF9wYXJzZVJlbGF0aXZlVXJsKS5wYXJzZVJlbGF0aXZlVXJsKCgwLCBfaGFzQmFzZVBhdGgpLmhhc0Jhc2VQYXRoKGFzKSA/ICgwLCBfcmVtb3ZlQmFzZVBhdGgpLnJlbW92ZUJhc2VQYXRoKGFzKSA6IGFzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGVQYXRoUmVzdWx0ID0gKDAsIF9ub3JtYWxpemVMb2NhbGVQYXRoKS5ub3JtYWxpemVMb2NhbGVQYXRoKHBhcnNlZEFzLnBhdGhuYW1lLCBfdGhpcy5sb2NhbGVzKTtcbiAgICAgICAgICAgICAgICBpZiAobG9jYWxlUGF0aFJlc3VsdC5kZXRlY3RlZExvY2FsZSkge1xuICAgICAgICAgICAgICAgICAgICBuZXh0U3RhdGUubG9jYWxlID0gbG9jYWxlUGF0aFJlc3VsdC5kZXRlY3RlZExvY2FsZTtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkQXMucGF0aG5hbWUgPSAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aChwYXJzZWRBcy5wYXRobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGFzID0gKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHBhcnNlZEFzKTtcbiAgICAgICAgICAgICAgICAgICAgdXJsID0gKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgoKDAsIF9ub3JtYWxpemVMb2NhbGVQYXRoKS5ub3JtYWxpemVMb2NhbGVQYXRoKCgwLCBfaGFzQmFzZVBhdGgpLmhhc0Jhc2VQYXRoKHVybCkgPyAoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aCh1cmwpIDogdXJsLCBfdGhpcy5sb2NhbGVzKS5wYXRobmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBkaWROYXZpZ2F0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gd3JhcCB0aGlzIGluIHRoZSBlbnYgY2hlY2sgYWdhaW4gc2luY2UgcmVnZW5lcmF0b3IgcnVudGltZVxuICAgICAgICAgICAgICAgIC8vIG1vdmVzIHRoaXMgb24gaXRzIG93biBkdWUgdG8gdGhlIHJldHVyblxuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWY7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBsb2NhbGUgaXNuJ3QgY29uZmlndXJlZCBoYXJkIG5hdmlnYXRlIHRvIHNob3cgNDA0IHBhZ2VcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoKHJlZiA9IF90aGlzLmxvY2FsZXMpID09IG51bGwgPyB2b2lkIDAgOiByZWYuaW5jbHVkZXMobmV4dFN0YXRlLmxvY2FsZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRBcy5wYXRobmFtZSA9ICgwLCBfYWRkTG9jYWxlKS5hZGRMb2NhbGUocGFyc2VkQXMucGF0aG5hbWUsIG5leHRTdGF0ZS5sb2NhbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlSGFyZE5hdmlnYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHBhcnNlZEFzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXI6IF90aGlzXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgd2FzIHByZXZpb3VzbHkgYSByZXR1cm4gYnV0IHdhcyByZW1vdmVkIGluIGZhdm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiBiZXR0ZXIgZGVhZCBjb2RlIGVsaW1pbmF0aW9uIHdpdGggcmVnZW5lcmF0b3IgcnVudGltZVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlkTmF2aWdhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGRldGVjdGVkRG9tYWluID0gKDAsIF9kZXRlY3REb21haW5Mb2NhbGUpLmRldGVjdERvbWFpbkxvY2FsZShfdGhpcy5kb21haW5Mb2NhbGVzLCB1bmRlZmluZWQsIG5leHRTdGF0ZS5sb2NhbGUpO1xuICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gd3JhcCB0aGlzIGluIHRoZSBlbnYgY2hlY2sgYWdhaW4gc2luY2UgcmVnZW5lcmF0b3IgcnVudGltZVxuICAgICAgICAgICAgICAgIC8vIG1vdmVzIHRoaXMgb24gaXRzIG93biBkdWUgdG8gdGhlIHJldHVyblxuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHdlIGFyZSBuYXZpZ2F0aW5nIHRvIGEgZG9tYWluIGxvY2FsZSBlbnN1cmUgd2UgcmVkaXJlY3QgdG8gdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlY3QgZG9tYWluXG4gICAgICAgICAgICAgICAgICAgIGlmICghZGlkTmF2aWdhdGUgJiYgZGV0ZWN0ZWREb21haW4gJiYgX3RoaXMuaXNMb2NhbGVEb21haW4gJiYgc2VsZi5sb2NhdGlvbi5ob3N0bmFtZSAhPT0gZGV0ZWN0ZWREb21haW4uZG9tYWluKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhc05vQmFzZVBhdGggPSAoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChhcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgaHR0cCR7ZGV0ZWN0ZWREb21haW4uaHR0cCA/ICcnIDogJ3MnfTovLyR7ZGV0ZWN0ZWREb21haW4uZG9tYWlufSR7KDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgoYCR7bmV4dFN0YXRlLmxvY2FsZSA9PT0gZGV0ZWN0ZWREb21haW4uZGVmYXVsdExvY2FsZSA/ICcnIDogYC8ke25leHRTdGF0ZS5sb2NhbGV9YH0ke2FzTm9CYXNlUGF0aCA9PT0gJy8nID8gJycgOiBhc05vQmFzZVBhdGh9YCB8fCAnLycpfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHdhcyBwcmV2aW91c2x5IGEgcmV0dXJuIGJ1dCB3YXMgcmVtb3ZlZCBpbiBmYXZvclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgYmV0dGVyIGRlYWQgY29kZSBlbGltaW5hdGlvbiB3aXRoIHJlZ2VuZXJhdG9yIHJ1bnRpbWVcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpZE5hdmlnYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZGlkTmF2aWdhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCgpPT57fSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gbWFya2luZyByb3V0ZSBjaGFuZ2VzIGFzIGEgbmF2aWdhdGlvbiBzdGFydCBlbnRyeVxuICAgICAgICAgICAgaWYgKF91dGlscy5TVCkge1xuICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlLm1hcmsoJ3JvdXRlQ2hhbmdlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB7IHNoYWxsb3cgPWZhbHNlICwgc2Nyb2xsID10cnVlICB9ID0gb3B0aW9ucztcbiAgICAgICAgICAgIGNvbnN0IHJvdXRlUHJvcHMgPSB7XG4gICAgICAgICAgICAgICAgc2hhbGxvd1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChfdGhpcy5faW5GbGlnaHRSb3V0ZSAmJiBfdGhpcy5jbGMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzU3NyKSB7XG4gICAgICAgICAgICAgICAgICAgIFJvdXRlci5ldmVudHMuZW1pdCgncm91dGVDaGFuZ2VFcnJvcicsIGJ1aWxkQ2FuY2VsbGF0aW9uRXJyb3IoKSwgX3RoaXMuX2luRmxpZ2h0Um91dGUsIHJvdXRlUHJvcHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBfdGhpcy5jbGMoKTtcbiAgICAgICAgICAgICAgICBfdGhpcy5jbGMgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXMgPSAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aCgoMCwgX2FkZExvY2FsZSkuYWRkTG9jYWxlKCgwLCBfaGFzQmFzZVBhdGgpLmhhc0Jhc2VQYXRoKGFzKSA/ICgwLCBfcmVtb3ZlQmFzZVBhdGgpLnJlbW92ZUJhc2VQYXRoKGFzKSA6IGFzLCBvcHRpb25zLmxvY2FsZSwgX3RoaXMuZGVmYXVsdExvY2FsZSkpO1xuICAgICAgICAgICAgY29uc3QgY2xlYW5lZEFzID0gKDAsIF9yZW1vdmVMb2NhbGUpLnJlbW92ZUxvY2FsZSgoMCwgX2hhc0Jhc2VQYXRoKS5oYXNCYXNlUGF0aChhcykgPyAoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChhcykgOiBhcywgbmV4dFN0YXRlLmxvY2FsZSk7XG4gICAgICAgICAgICBfdGhpcy5faW5GbGlnaHRSb3V0ZSA9IGFzO1xuICAgICAgICAgICAgbGV0IGxvY2FsZUNoYW5nZSA9IHByZXZMb2NhbGUgIT09IG5leHRTdGF0ZS5sb2NhbGU7XG4gICAgICAgICAgICAvLyBJZiB0aGUgdXJsIGNoYW5nZSBpcyBvbmx5IHJlbGF0ZWQgdG8gYSBoYXNoIGNoYW5nZVxuICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBwcm9jZWVkLiBXZSBzaG91bGQgb25seSBjaGFuZ2UgdGhlIHN0YXRlLlxuICAgICAgICAgICAgaWYgKCFpc1F1ZXJ5VXBkYXRpbmcgJiYgX3RoaXMub25seUFIYXNoQ2hhbmdlKGNsZWFuZWRBcykgJiYgIWxvY2FsZUNoYW5nZSkge1xuICAgICAgICAgICAgICAgIG5leHRTdGF0ZS5hc1BhdGggPSBjbGVhbmVkQXM7XG4gICAgICAgICAgICAgICAgUm91dGVyLmV2ZW50cy5lbWl0KCdoYXNoQ2hhbmdlU3RhcnQnLCBhcywgcm91dGVQcm9wcyk7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogZG8gd2UgbmVlZCB0aGUgcmVzb2x2ZWQgaHJlZiB3aGVuIG9ubHkgYSBoYXNoIGNoYW5nZT9cbiAgICAgICAgICAgICAgICBfdGhpcy5jaGFuZ2VTdGF0ZShtZXRob2QsIHVybCwgYXMsIF9leHRlbmRzKHt9LCBvcHRpb25zLCB7XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbDogZmFsc2VcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgaWYgKHNjcm9sbCkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5zY3JvbGxUb0hhc2goY2xlYW5lZEFzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQgX3RoaXMuc2V0KG5leHRTdGF0ZSwgX3RoaXMuY29tcG9uZW50c1tuZXh0U3RhdGUucm91dGVdLCBudWxsKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCgwLCBfaXNFcnJvcikuZGVmYXVsdChlcnIpICYmIGVyci5jYW5jZWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFJvdXRlci5ldmVudHMuZW1pdCgncm91dGVDaGFuZ2VFcnJvcicsIGVyciwgY2xlYW5lZEFzLCByb3V0ZVByb3BzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFJvdXRlci5ldmVudHMuZW1pdCgnaGFzaENoYW5nZUNvbXBsZXRlJywgYXMsIHJvdXRlUHJvcHMpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHBhcnNlZCA9ICgwLCBfcGFyc2VSZWxhdGl2ZVVybCkucGFyc2VSZWxhdGl2ZVVybCh1cmwpO1xuICAgICAgICAgICAgbGV0IHsgcGF0aG5hbWUgLCBxdWVyeSAgfSA9IHBhcnNlZDtcbiAgICAgICAgICAgIC8vIFRoZSBidWlsZCBtYW5pZmVzdCBuZWVkcyB0byBiZSBsb2FkZWQgYmVmb3JlIGF1dG8tc3RhdGljIGR5bmFtaWMgcGFnZXNcbiAgICAgICAgICAgIC8vIGdldCB0aGVpciBxdWVyeSBwYXJhbWV0ZXJzIHRvIGFsbG93IGVuc3VyaW5nIHRoZXkgY2FuIGJlIHBhcnNlZCBwcm9wZXJseVxuICAgICAgICAgICAgLy8gd2hlbiByZXdyaXR0ZW4gdG9cbiAgICAgICAgICAgIGxldCBwYWdlcywgcmV3cml0ZXM7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIFtwYWdlcywgeyBfX3Jld3JpdGVzOiByZXdyaXRlcyAgfV0gPSB5aWVsZCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICAgICAgICAgIF90aGlzLnBhZ2VMb2FkZXIuZ2V0UGFnZUxpc3QoKSxcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9yb3V0ZUxvYWRlcikuZ2V0Q2xpZW50QnVpbGRNYW5pZmVzdCgpLFxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5wYWdlTG9hZGVyLmdldE1pZGRsZXdhcmVMaXN0KCksIFxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgd2UgZmFpbCB0byByZXNvbHZlIHRoZSBwYWdlIGxpc3Qgb3IgY2xpZW50LWJ1aWxkIG1hbmlmZXN0LCB3ZSBtdXN0XG4gICAgICAgICAgICAgICAgLy8gZG8gYSBzZXJ2ZXItc2lkZSB0cmFuc2l0aW9uOlxuICAgICAgICAgICAgICAgIGhhbmRsZUhhcmROYXZpZ2F0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBhcyxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElmIGFza2VkIHRvIGNoYW5nZSB0aGUgY3VycmVudCBVUkwgd2Ugc2hvdWxkIHJlbG9hZCB0aGUgY3VycmVudCBwYWdlXG4gICAgICAgICAgICAvLyAobm90IGxvY2F0aW9uLnJlbG9hZCgpIGJ1dCByZWxvYWQgZ2V0SW5pdGlhbFByb3BzIGFuZCBvdGhlciBOZXh0LmpzIHN0dWZmcylcbiAgICAgICAgICAgIC8vIFdlIGFsc28gbmVlZCB0byBzZXQgdGhlIG1ldGhvZCA9IHJlcGxhY2VTdGF0ZSBhbHdheXNcbiAgICAgICAgICAgIC8vIGFzIHRoaXMgc2hvdWxkIG5vdCBnbyBpbnRvIHRoZSBoaXN0b3J5IChUaGF0J3MgaG93IGJyb3dzZXJzIHdvcmspXG4gICAgICAgICAgICAvLyBXZSBzaG91bGQgY29tcGFyZSB0aGUgbmV3IGFzUGF0aCB0byB0aGUgY3VycmVudCBhc1BhdGgsIG5vdCB0aGUgdXJsXG4gICAgICAgICAgICBpZiAoIV90aGlzLnVybElzTmV3KGNsZWFuZWRBcykgJiYgIWxvY2FsZUNoYW5nZSkge1xuICAgICAgICAgICAgICAgIG1ldGhvZCA9ICdyZXBsYWNlU3RhdGUnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gd2UgbmVlZCB0byByZXNvbHZlIHRoZSBhcyB2YWx1ZSB1c2luZyByZXdyaXRlcyBmb3IgZHluYW1pYyBTU0dcbiAgICAgICAgICAgIC8vIHBhZ2VzIHRvIGFsbG93IGJ1aWxkaW5nIHRoZSBkYXRhIFVSTCBjb3JyZWN0bHlcbiAgICAgICAgICAgIGxldCByZXNvbHZlZEFzID0gYXM7XG4gICAgICAgICAgICAvLyB1cmwgYW5kIGFzIHNob3VsZCBhbHdheXMgYmUgcHJlZml4ZWQgd2l0aCBiYXNlUGF0aCBieSB0aGlzXG4gICAgICAgICAgICAvLyBwb2ludCBieSBlaXRoZXIgbmV4dC9saW5rIG9yIHJvdXRlci5wdXNoL3JlcGxhY2Ugc28gc3RyaXAgdGhlXG4gICAgICAgICAgICAvLyBiYXNlUGF0aCBmcm9tIHRoZSBwYXRobmFtZSB0byBtYXRjaCB0aGUgcGFnZXMgZGlyIDEtdG8tMVxuICAgICAgICAgICAgcGF0aG5hbWUgPSBwYXRobmFtZSA/ICgwLCBfcmVtb3ZlVHJhaWxpbmdTbGFzaCkucmVtb3ZlVHJhaWxpbmdTbGFzaCgoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChwYXRobmFtZSkpIDogcGF0aG5hbWU7XG4gICAgICAgICAgICAvLyB3ZSBkb24ndCBhdHRlbXB0IHJlc29sdmUgYXNQYXRoIHdoZW4gd2UgbmVlZCB0byBleGVjdXRlXG4gICAgICAgICAgICAvLyBtaWRkbGV3YXJlIGFzIHRoZSByZXNvbHZpbmcgd2lsbCBvY2N1ciBzZXJ2ZXItc2lkZVxuICAgICAgICAgICAgY29uc3QgaXNNaWRkbGV3YXJlTWF0Y2ggPSB5aWVsZCBtYXRjaGVzTWlkZGxld2FyZSh7XG4gICAgICAgICAgICAgICAgYXNQYXRoOiBhcyxcbiAgICAgICAgICAgICAgICBsb2NhbGU6IG5leHRTdGF0ZS5sb2NhbGUsXG4gICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zaGFsbG93ICYmIGlzTWlkZGxld2FyZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcGF0aG5hbWUgPSBfdGhpcy5wYXRobmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzaG91bGRSZXNvbHZlSHJlZiAmJiBwYXRobmFtZSAhPT0gJy9fZXJyb3InKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5fc2hvdWxkUmVzb2x2ZUhyZWYgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSEFTX1JFV1JJVEVTICYmIGFzLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXdyaXRlc1Jlc3VsdCA9ICgwLCBfcmVzb2x2ZVJld3JpdGVzKS5kZWZhdWx0KCgwLCBfYWRkQmFzZVBhdGgpLmFkZEJhc2VQYXRoKCgwLCBfYWRkTG9jYWxlKS5hZGRMb2NhbGUoY2xlYW5lZEFzLCBuZXh0U3RhdGUubG9jYWxlKSwgdHJ1ZSksIHBhZ2VzLCByZXdyaXRlcywgcXVlcnksIChwKT0+cmVzb2x2ZUR5bmFtaWNSb3V0ZShwLCBwYWdlcyksIF90aGlzLmxvY2FsZXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmV3cml0ZXNSZXN1bHQuZXh0ZXJuYWxEZXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXI6IF90aGlzXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNNaWRkbGV3YXJlTWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQXMgPSByZXdyaXRlc1Jlc3VsdC5hc1BhdGg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHJld3JpdGVzUmVzdWx0Lm1hdGNoZWRQYWdlICYmIHJld3JpdGVzUmVzdWx0LnJlc29sdmVkSHJlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhpcyBkaXJlY3RseSBtYXRjaGVzIGEgcGFnZSB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgaHJlZiB0b1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3cgdGhlIGNvcnJlY3QgcGFnZSBjaHVuayB0byBiZSBsb2FkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lID0gcmV3cml0ZXNSZXN1bHQucmVzb2x2ZWRIcmVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkLnBhdGhuYW1lID0gKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgocGF0aG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc01pZGRsZXdhcmVNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9ICgwLCBfZm9ybWF0VXJsKS5mb3JtYXRXaXRoVmFsaWRhdGlvbihwYXJzZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkLnBhdGhuYW1lID0gcmVzb2x2ZUR5bmFtaWNSb3V0ZShwYXRobmFtZSwgcGFnZXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VkLnBhdGhuYW1lICE9PSBwYXRobmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUgPSBwYXJzZWQucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWQucGF0aG5hbWUgPSAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aChwYXRobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTWlkZGxld2FyZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHBhcnNlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWlzTG9jYWxVUkwoYXMpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGhyZWY6IFwiJHt1cmx9XCIgYW5kIGFzOiBcIiR7YXN9XCIsIHJlY2VpdmVkIHJlbGF0aXZlIGhyZWYgYW5kIGV4dGVybmFsIGFzYCArIGBcXG5TZWUgbW9yZSBpbmZvOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9pbnZhbGlkLXJlbGF0aXZlLXVybC1leHRlcm5hbC1hc2ApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIHVybDogYXMsXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlcjogX3RoaXNcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlZEFzID0gKDAsIF9yZW1vdmVMb2NhbGUpLnJlbW92ZUxvY2FsZSgoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChyZXNvbHZlZEFzKSwgbmV4dFN0YXRlLmxvY2FsZSk7XG4gICAgICAgICAgICBsZXQgcm91dGUgPSAoMCwgX3JlbW92ZVRyYWlsaW5nU2xhc2gpLnJlbW92ZVRyYWlsaW5nU2xhc2gocGF0aG5hbWUpO1xuICAgICAgICAgICAgbGV0IHJvdXRlTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICgoMCwgX2lzRHluYW1pYykuaXNEeW5hbWljUm91dGUocm91dGUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkQXMgPSAoMCwgX3BhcnNlUmVsYXRpdmVVcmwpLnBhcnNlUmVsYXRpdmVVcmwocmVzb2x2ZWRBcyk7XG4gICAgICAgICAgICAgICAgY29uc3QgYXNQYXRobmFtZSA9IHBhcnNlZEFzLnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRlUmVnZXggPSAoMCwgX3JvdXRlUmVnZXgpLmdldFJvdXRlUmVnZXgocm91dGUpO1xuICAgICAgICAgICAgICAgIHJvdXRlTWF0Y2ggPSAoMCwgX3JvdXRlTWF0Y2hlcikuZ2V0Um91dGVNYXRjaGVyKHJvdXRlUmVnZXgpKGFzUGF0aG5hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNob3VsZEludGVycG9sYXRlID0gcm91dGUgPT09IGFzUGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgY29uc3QgaW50ZXJwb2xhdGVkQXMgPSBzaG91bGRJbnRlcnBvbGF0ZSA/IGludGVycG9sYXRlQXMocm91dGUsIGFzUGF0aG5hbWUsIHF1ZXJ5KSA6IHt9O1xuICAgICAgICAgICAgICAgIGlmICghcm91dGVNYXRjaCB8fCBzaG91bGRJbnRlcnBvbGF0ZSAmJiAhaW50ZXJwb2xhdGVkQXMucmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pc3NpbmdQYXJhbXMgPSBPYmplY3Qua2V5cyhyb3V0ZVJlZ2V4Lmdyb3VwcykuZmlsdGVyKChwYXJhbSk9PiFxdWVyeVtwYXJhbV0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWlzc2luZ1BhcmFtcy5sZW5ndGggPiAwICYmICFpc01pZGRsZXdhcmVNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYCR7c2hvdWxkSW50ZXJwb2xhdGUgPyBgSW50ZXJwb2xhdGluZyBocmVmYCA6IGBNaXNtYXRjaGluZyBcXGBhc1xcYCBhbmQgXFxgaHJlZlxcYGB9IGZhaWxlZCB0byBtYW51YWxseSBwcm92aWRlIGAgKyBgdGhlIHBhcmFtczogJHttaXNzaW5nUGFyYW1zLmpvaW4oJywgJyl9IGluIHRoZSBcXGBocmVmXFxgJ3MgXFxgcXVlcnlcXGBgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigoc2hvdWxkSW50ZXJwb2xhdGUgPyBgVGhlIHByb3ZpZGVkIFxcYGhyZWZcXGAgKCR7dXJsfSkgdmFsdWUgaXMgbWlzc2luZyBxdWVyeSB2YWx1ZXMgKCR7bWlzc2luZ1BhcmFtcy5qb2luKCcsICcpfSkgdG8gYmUgaW50ZXJwb2xhdGVkIHByb3Blcmx5LiBgIDogYFRoZSBwcm92aWRlZCBcXGBhc1xcYCB2YWx1ZSAoJHthc1BhdGhuYW1lfSkgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIFxcYGhyZWZcXGAgdmFsdWUgKCR7cm91dGV9KS4gYCkgKyBgUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy8ke3Nob3VsZEludGVycG9sYXRlID8gJ2hyZWYtaW50ZXJwb2xhdGlvbi1mYWlsZWQnIDogJ2luY29tcGF0aWJsZS1ocmVmLWFzJ31gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkSW50ZXJwb2xhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgYXMgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oT2JqZWN0LmFzc2lnbih7fSwgcGFyc2VkQXMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lOiBpbnRlcnBvbGF0ZWRBcy5yZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVyeTogb21pdChxdWVyeSwgaW50ZXJwb2xhdGVkQXMucGFyYW1zKVxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTWVyZ2UgcGFyYW1zIGludG8gYHF1ZXJ5YCwgb3ZlcndyaXRpbmcgYW55IHNwZWNpZmllZCBpbiBzZWFyY2hcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihxdWVyeSwgcm91dGVNYXRjaCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc1F1ZXJ5VXBkYXRpbmcpIHtcbiAgICAgICAgICAgICAgICBSb3V0ZXIuZXZlbnRzLmVtaXQoJ3JvdXRlQ2hhbmdlU3RhcnQnLCBhcywgcm91dGVQcm9wcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHZhciByZWYyLCByZWYzO1xuICAgICAgICAgICAgICAgIGxldCByb3V0ZUluZm8gPSB5aWVsZCBfdGhpcy5nZXRSb3V0ZUluZm8oe1xuICAgICAgICAgICAgICAgICAgICByb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICBhcyxcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRBcyxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVQcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBuZXh0U3RhdGUubG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICBpc1ByZXZpZXc6IG5leHRTdGF0ZS5pc1ByZXZpZXcsXG4gICAgICAgICAgICAgICAgICAgIGhhc01pZGRsZXdhcmU6IGlzTWlkZGxld2FyZU1hdGNoXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKCdyb3V0ZScgaW4gcm91dGVJbmZvICYmIGlzTWlkZGxld2FyZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lID0gcm91dGVJbmZvLnJvdXRlIHx8IHJvdXRlO1xuICAgICAgICAgICAgICAgICAgICByb3V0ZSA9IHBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICAgICBxdWVyeSA9IE9iamVjdC5hc3NpZ24oe30sIHJvdXRlSW5mby5xdWVyeSB8fCB7fSwgcXVlcnkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocm91dGVNYXRjaCAmJiBwYXRobmFtZSAhPT0gcGFyc2VkLnBhdGhuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhyb3V0ZU1hdGNoKS5mb3JFYWNoKChrZXkpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJvdXRlTWF0Y2ggJiYgcXVlcnlba2V5XSA9PT0gcm91dGVNYXRjaFtrZXldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBxdWVyeVtrZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICgoMCwgX2lzRHluYW1pYykuaXNEeW5hbWljUm91dGUocGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVmaXhlZEFzID0gcm91dGVJbmZvLnJlc29sdmVkQXMgfHwgKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgoKDAsIF9hZGRMb2NhbGUpLmFkZExvY2FsZShhcywgbmV4dFN0YXRlLmxvY2FsZSksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJld3JpdGVBcyA9IHByZWZpeGVkQXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKDAsIF9oYXNCYXNlUGF0aCkuaGFzQmFzZVBhdGgocmV3cml0ZUFzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld3JpdGVBcyA9ICgwLCBfcmVtb3ZlQmFzZVBhdGgpLnJlbW92ZUJhc2VQYXRoKHJld3JpdGVBcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsZVJlc3VsdCA9ICgwLCBfbm9ybWFsaXplTG9jYWxlUGF0aCkubm9ybWFsaXplTG9jYWxlUGF0aChyZXdyaXRlQXMsIF90aGlzLmxvY2FsZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRTdGF0ZS5sb2NhbGUgPSBsb2NhbGVSZXN1bHQuZGV0ZWN0ZWRMb2NhbGUgfHwgbmV4dFN0YXRlLmxvY2FsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXdyaXRlQXMgPSBsb2NhbGVSZXN1bHQucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByb3V0ZVJlZ2V4ID0gKDAsIF9yb3V0ZVJlZ2V4KS5nZXRSb3V0ZVJlZ2V4KHBhdGhuYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1clJvdXRlTWF0Y2ggPSAoMCwgX3JvdXRlTWF0Y2hlcikuZ2V0Um91dGVNYXRjaGVyKHJvdXRlUmVnZXgpKHJld3JpdGVBcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VyUm91dGVNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocXVlcnksIGN1clJvdXRlTWF0Y2gpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIElmIHRoZSByb3V0ZUluZm8gYnJpbmdzIGEgcmVkaXJlY3Qgd2Ugc2ltcGx5IGFwcGx5IGl0LlxuICAgICAgICAgICAgICAgIGlmICgndHlwZScgaW4gcm91dGVJbmZvKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyb3V0ZUluZm8udHlwZSA9PT0gJ3JlZGlyZWN0LWludGVybmFsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmNoYW5nZShtZXRob2QsIHJvdXRlSW5mby5uZXdVcmwsIHJvdXRlSW5mby5uZXdBcywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiByb3V0ZUluZm8uZGVzdGluYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKCk9Pnt9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgeyBlcnJvciAsIHByb3BzICwgX19OX1NTRyAsIF9fTl9TU1AgIH0gPSByb3V0ZUluZm87XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gcm91dGVJbmZvLkNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50ICYmIGNvbXBvbmVudC51bnN0YWJsZV9zY3JpcHRMb2FkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2NyaXB0cyA9IFtdLmNvbmNhdChjb21wb25lbnQudW5zdGFibGVfc2NyaXB0TG9hZGVyKCkpO1xuICAgICAgICAgICAgICAgICAgICBzY3JpcHRzLmZvckVhY2goKHNjcmlwdCk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfc2NyaXB0KS5oYW5kbGVDbGllbnRTY3JpcHRMb2FkKHNjcmlwdC5wcm9wcyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBoYW5kbGUgcmVkaXJlY3Qgb24gY2xpZW50LXRyYW5zaXRpb25cbiAgICAgICAgICAgICAgICBpZiAoKF9fTl9TU0cgfHwgX19OX1NTUCkgJiYgcHJvcHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BzLnBhZ2VQcm9wcyAmJiBwcm9wcy5wYWdlUHJvcHMuX19OX1JFRElSRUNUKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2UgdGhlIGRlc3RpbmF0aW9uIGZyb20gcmVkaXJlY3Qgd2l0aG91dCBhZGRpbmcgbG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmxvY2FsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVzdGluYXRpb24gPSBwcm9wcy5wYWdlUHJvcHMuX19OX1JFRElSRUNUO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgZGVzdGluYXRpb24gaXMgaW50ZXJuYWwgKHJlc29sdmVzIHRvIGEgcGFnZSkgYW5kIGF0dGVtcHRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsaWVudC1uYXZpZ2F0aW9uIGlmIGl0IGlzIGZhbGxpbmcgYmFjayB0byBoYXJkIG5hdmlnYXRpb24gaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0J3Mgbm90XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVzdGluYXRpb24uc3RhcnRzV2l0aCgnLycpICYmIHByb3BzLnBhZ2VQcm9wcy5fX05fUkVESVJFQ1RfQkFTRV9QQVRIICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZEhyZWYgPSAoMCwgX3BhcnNlUmVsYXRpdmVVcmwpLnBhcnNlUmVsYXRpdmVVcmwoZGVzdGluYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZEhyZWYucGF0aG5hbWUgPSByZXNvbHZlRHluYW1pY1JvdXRlKHBhcnNlZEhyZWYucGF0aG5hbWUsIHBhZ2VzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHVybDogbmV3VXJsICwgYXM6IG5ld0FzICB9ID0gcHJlcGFyZVVybEFzKF90aGlzLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5jaGFuZ2UobWV0aG9kLCBuZXdVcmwsIG5ld0FzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUhhcmROYXZpZ2F0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGRlc3RpbmF0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlcjogX3RoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCgpPT57fSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbmV4dFN0YXRlLmlzUHJldmlldyA9ICEhcHJvcHMuX19OX1BSRVZJRVc7XG4gICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBTU0cgZGF0YSA0MDRcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BzLm5vdEZvdW5kID09PSBTU0dfREFUQV9OT1RfRk9VTkQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub3RGb3VuZFJvdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBfdGhpcy5mZXRjaENvbXBvbmVudCgnLzQwNCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdEZvdW5kUm91dGUgPSAnLzQwNCc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChfKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90Rm91bmRSb3V0ZSA9ICcvX2Vycm9yJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlSW5mbyA9IHlpZWxkIF90aGlzLmdldFJvdXRlSW5mbyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGU6IG5vdEZvdW5kUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWU6IG5vdEZvdW5kUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRBcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZVByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWxsb3c6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IG5leHRTdGF0ZS5sb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmV2aWV3OiBuZXh0U3RhdGUuaXNQcmV2aWV3XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgndHlwZScgaW4gcm91dGVJbmZvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIG1pZGRsZXdhcmUgZWZmZWN0IG9uIC80MDRgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBSb3V0ZXIuZXZlbnRzLmVtaXQoJ2JlZm9yZUhpc3RvcnlDaGFuZ2UnLCBhcywgcm91dGVQcm9wcyk7XG4gICAgICAgICAgICAgICAgX3RoaXMuY2hhbmdlU3RhdGUobWV0aG9kLCB1cmwsIGFzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNRdWVyeVVwZGF0aW5nICYmIHBhdGhuYW1lID09PSAnL19lcnJvcicgJiYgKChyZWYyID0gc2VsZi5fX05FWFRfREFUQV9fLnByb3BzKSA9PSBudWxsID8gdm9pZCAwIDogKHJlZjMgPSByZWYyLnBhZ2VQcm9wcykgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZjMuc3RhdHVzQ29kZSkgPT09IDUwMCAmJiAocHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IHByb3BzLnBhZ2VQcm9wcykpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZW5zdXJlIHN0YXR1c0NvZGUgaXMgc3RpbGwgY29ycmVjdCBmb3Igc3RhdGljIDUwMCBwYWdlXG4gICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXBkYXRpbmcgcXVlcnkgaW5mb3JtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgcHJvcHMucGFnZVByb3BzLnN0YXR1c0NvZGUgPSA1MDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBfcm91dGU7XG4gICAgICAgICAgICAgICAgLy8gc2hhbGxvdyByb3V0aW5nIGlzIG9ubHkgYWxsb3dlZCBmb3Igc2FtZSBwYWdlIFVSTCBjaGFuZ2VzLlxuICAgICAgICAgICAgICAgIGNvbnN0IGlzVmFsaWRTaGFsbG93Um91dGUgPSBvcHRpb25zLnNoYWxsb3cgJiYgbmV4dFN0YXRlLnJvdXRlID09PSAoKF9yb3V0ZSA9IHJvdXRlSW5mby5yb3V0ZSkgIT0gbnVsbCA/IF9yb3V0ZSA6IHJvdXRlKTtcbiAgICAgICAgICAgICAgICB2YXIgX3Njcm9sbDtcbiAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRTY3JvbGwgPSAoX3Njcm9sbCA9IG9wdGlvbnMuc2Nyb2xsKSAhPSBudWxsID8gX3Njcm9sbCA6ICFpc1ZhbGlkU2hhbGxvd1JvdXRlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc2V0U2Nyb2xsID0gc2hvdWxkU2Nyb2xsID8ge1xuICAgICAgICAgICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgICAgICAgICB5OiAwXG4gICAgICAgICAgICAgICAgfSA6IG51bGw7XG4gICAgICAgICAgICAgICAgeWllbGQgX3RoaXMuc2V0KF9leHRlbmRzKHt9LCBuZXh0U3RhdGUsIHtcbiAgICAgICAgICAgICAgICAgICAgcm91dGUsXG4gICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lLFxuICAgICAgICAgICAgICAgICAgICBxdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgYXNQYXRoOiBjbGVhbmVkQXMsXG4gICAgICAgICAgICAgICAgICAgIGlzRmFsbGJhY2s6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSksIHJvdXRlSW5mbywgZm9yY2VkU2Nyb2xsICE9IG51bGwgPyBmb3JjZWRTY3JvbGwgOiByZXNldFNjcm9sbCkuY2F0Y2goKGUpPT57XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLmNhbmNlbGxlZCkgZXJyb3IgPSBlcnJvciB8fCBlO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNRdWVyeVVwZGF0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBSb3V0ZXIuZXZlbnRzLmVtaXQoJ3JvdXRlQ2hhbmdlRXJyb3InLCBlcnJvciwgY2xlYW5lZEFzLCByb3V0ZVByb3BzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9JMThOX1NVUFBPUlQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRTdGF0ZS5sb2NhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nID0gbmV4dFN0YXRlLmxvY2FsZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIWlzUXVlcnlVcGRhdGluZykge1xuICAgICAgICAgICAgICAgICAgICBSb3V0ZXIuZXZlbnRzLmVtaXQoJ3JvdXRlQ2hhbmdlQ29tcGxldGUnLCBhcywgcm91dGVQcm9wcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEEgaGFzaCBtYXJrICMgaXMgdGhlIG9wdGlvbmFsIGxhc3QgcGFydCBvZiBhIFVSTFxuICAgICAgICAgICAgICAgIGNvbnN0IGhhc2hSZWdleCA9IC8jLiskLztcbiAgICAgICAgICAgICAgICBpZiAoc2hvdWxkU2Nyb2xsICYmIGhhc2hSZWdleC50ZXN0KGFzKSkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5zY3JvbGxUb0hhc2goYXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycjEpIHtcbiAgICAgICAgICAgICAgICBpZiAoKDAsIF9pc0Vycm9yKS5kZWZhdWx0KGVycjEpICYmIGVycjEuY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkoKTtcbiAgICB9XG4gICAgY2hhbmdlU3RhdGUobWV0aG9kLCB1cmwsIGFzLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93Lmhpc3RvcnkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgV2FybmluZzogd2luZG93Lmhpc3RvcnkgaXMgbm90IGF2YWlsYWJsZS5gKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdy5oaXN0b3J5W21ldGhvZF0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgV2FybmluZzogd2luZG93Lmhpc3RvcnkuJHttZXRob2R9IGlzIG5vdCBhdmFpbGFibGVgKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1ldGhvZCAhPT0gJ3B1c2hTdGF0ZScgfHwgKDAsIF91dGlscykuZ2V0VVJMKCkgIT09IGFzKSB7XG4gICAgICAgICAgICB0aGlzLl9zaGFsbG93ID0gb3B0aW9ucy5zaGFsbG93O1xuICAgICAgICAgICAgd2luZG93Lmhpc3RvcnlbbWV0aG9kXSh7XG4gICAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgICAgIGFzLFxuICAgICAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICAgICAgX19OOiB0cnVlLFxuICAgICAgICAgICAgICAgIGtleTogdGhpcy5fa2V5ID0gbWV0aG9kICE9PSAncHVzaFN0YXRlJyA/IHRoaXMuX2tleSA6IGNyZWF0ZUtleSgpXG4gICAgICAgICAgICB9LCAvLyBNb3N0IGJyb3dzZXJzIGN1cnJlbnRseSBpZ25vcmVzIHRoaXMgcGFyYW1ldGVyLCBhbHRob3VnaCB0aGV5IG1heSB1c2UgaXQgaW4gdGhlIGZ1dHVyZS5cbiAgICAgICAgICAgIC8vIFBhc3NpbmcgdGhlIGVtcHR5IHN0cmluZyBoZXJlIHNob3VsZCBiZSBzYWZlIGFnYWluc3QgZnV0dXJlIGNoYW5nZXMgdG8gdGhlIG1ldGhvZC5cbiAgICAgICAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IaXN0b3J5L3JlcGxhY2VTdGF0ZVxuICAgICAgICAgICAgJycsIGFzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBoYW5kbGVSb3V0ZUluZm9FcnJvcihlcnIsIHBhdGhuYW1lLCBxdWVyeSwgYXMsIHJvdXRlUHJvcHMsIGxvYWRFcnJvckZhaWwpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKigpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgIGlmIChlcnIuY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICAgICAgLy8gYnViYmxlIHVwIGNhbmNlbGxhdGlvbiBlcnJvcnNcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKDAsIF9yb3V0ZUxvYWRlcikuaXNBc3NldEVycm9yKGVycikgfHwgbG9hZEVycm9yRmFpbCkge1xuICAgICAgICAgICAgICAgIFJvdXRlci5ldmVudHMuZW1pdCgncm91dGVDaGFuZ2VFcnJvcicsIGVyciwgYXMsIHJvdXRlUHJvcHMpO1xuICAgICAgICAgICAgICAgIC8vIElmIHdlIGNhbid0IGxvYWQgdGhlIHBhZ2UgaXQgY291bGQgYmUgb25lIG9mIGZvbGxvd2luZyByZWFzb25zXG4gICAgICAgICAgICAgICAgLy8gIDEuIFBhZ2UgZG9lc24ndCBleGlzdHNcbiAgICAgICAgICAgICAgICAvLyAgMi4gUGFnZSBkb2VzIGV4aXN0IGluIGEgZGlmZmVyZW50IHpvbmVcbiAgICAgICAgICAgICAgICAvLyAgMy4gSW50ZXJuYWwgZXJyb3Igd2hpbGUgbG9hZGluZyB0aGUgcGFnZVxuICAgICAgICAgICAgICAgIC8vIFNvLCBkb2luZyBhIGhhcmQgcmVsb2FkIGlzIHRoZSBwcm9wZXIgd2F5IHRvIGRlYWwgd2l0aCB0aGlzLlxuICAgICAgICAgICAgICAgIGhhbmRsZUhhcmROYXZpZ2F0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBhcyxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vIENoYW5naW5nIHRoZSBVUkwgZG9lc24ndCBibG9jayBleGVjdXRpbmcgdGhlIGN1cnJlbnQgY29kZSBwYXRoLlxuICAgICAgICAgICAgICAgIC8vIFNvIGxldCdzIHRocm93IGEgY2FuY2VsbGF0aW9uIGVycm9yIHN0b3AgdGhlIHJvdXRpbmcgbG9naWMuXG4gICAgICAgICAgICAgICAgdGhyb3cgYnVpbGRDYW5jZWxsYXRpb25FcnJvcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgQ29tcG9uZW50O1xuICAgICAgICAgICAgICAgIGxldCBzdHlsZVNoZWV0cztcbiAgICAgICAgICAgICAgICBsZXQgcHJvcHM7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBDb21wb25lbnQgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiBzdHlsZVNoZWV0cyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgKHsgcGFnZTogQ29tcG9uZW50ICwgc3R5bGVTaGVldHMgIH0gPSB5aWVsZCBfdGhpcy5mZXRjaENvbXBvbmVudCgnL19lcnJvcicpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgcm91dGVJbmZvID0ge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgICAgICBzdHlsZVNoZWV0cyxcbiAgICAgICAgICAgICAgICAgICAgZXJyLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAoIXJvdXRlSW5mby5wcm9wcykge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVJbmZvLnByb3BzID0geWllbGQgX3RoaXMuZ2V0SW5pdGlhbFByb3BzKENvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGdpcEVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gZXJyb3IgcGFnZSBgZ2V0SW5pdGlhbFByb3BzYDogJywgZ2lwRXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlSW5mby5wcm9wcyA9IHt9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByb3V0ZUluZm87XG4gICAgICAgICAgICB9IGNhdGNoIChyb3V0ZUluZm9FcnIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuaGFuZGxlUm91dGVJbmZvRXJyb3IoKDAsIF9pc0Vycm9yKS5kZWZhdWx0KHJvdXRlSW5mb0VycikgPyByb3V0ZUluZm9FcnIgOiBuZXcgRXJyb3Iocm91dGVJbmZvRXJyICsgJycpLCBwYXRobmFtZSwgcXVlcnksIGFzLCByb3V0ZVByb3BzLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkoKTtcbiAgICB9XG4gICAgZ2V0Um91dGVJbmZvKHsgcm91dGU6IHJlcXVlc3RlZFJvdXRlICwgcGF0aG5hbWUgLCBxdWVyeSAsIGFzICwgcmVzb2x2ZWRBcyAsIHJvdXRlUHJvcHMgLCBsb2NhbGUgLCBoYXNNaWRkbGV3YXJlICwgaXNQcmV2aWV3ICwgdW5zdGFibGVfc2tpcENsaWVudENhY2hlICB9KSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiooKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgKiBUaGlzIGByb3V0ZWAgYmluZGluZyBjYW4gY2hhbmdlIGlmIHRoZXJlJ3MgYSByZXdyaXRlXG4gICAgICogc28gd2Uga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYWwgcmVxdWVzdGVkIHJvdXRlXG4gICAgICogc28gd2UgY2FuIHN0b3JlIHRoZSBjYWNoZSBmb3IgaXQgYW5kIGF2b2lkIHJlLXJlcXVlc3RpbmcgZXZlcnkgdGltZVxuICAgICAqIGZvciBzaGFsbG93IHJvdXRpbmcgcHVycG9zZXMuXG4gICAgICovIGxldCByb3V0ZSA9IHJlcXVlc3RlZFJvdXRlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB2YXIgcmVmLCByZWY0LCByZWY1O1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZUNhbmNlbGxlZCA9IGdldENhbmNlbGxlZEhhbmRsZXIoe1xuICAgICAgICAgICAgICAgICAgICByb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGxldCBleGlzdGluZ0luZm8gPSBfdGhpcy5jb21wb25lbnRzW3JvdXRlXTtcbiAgICAgICAgICAgICAgICBpZiAocm91dGVQcm9wcy5zaGFsbG93ICYmIGV4aXN0aW5nSW5mbyAmJiBfdGhpcy5yb3V0ZSA9PT0gcm91dGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4aXN0aW5nSW5mbztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IGNhY2hlZFJvdXRlSW5mbyA9IGV4aXN0aW5nSW5mbyAmJiAhKCdpbml0aWFsJyBpbiBleGlzdGluZ0luZm8pICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAnZGV2ZWxvcG1lbnQnID8gZXhpc3RpbmdJbmZvIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZldGNoTmV4dERhdGFQYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFIcmVmOiBfdGhpcy5wYWdlTG9hZGVyLmdldERhdGFIcmVmKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY6ICgwLCBfZm9ybWF0VXJsKS5mb3JtYXRXaXRoVmFsaWRhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2tpcEludGVycG9sYXRpb246IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBhc1BhdGg6IHJlc29sdmVkQXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIGhhc01pZGRsZXdhcmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGlzU2VydmVyUmVuZGVyOiBfdGhpcy5pc1NzcixcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VKU09OOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBpbmZsaWdodENhY2hlOiBfdGhpcy5zZGMsXG4gICAgICAgICAgICAgICAgICAgIHBlcnNpc3RDYWNoZTogIWlzUHJldmlldyxcbiAgICAgICAgICAgICAgICAgICAgaXNQcmVmZXRjaDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHVuc3RhYmxlX3NraXBDbGllbnRDYWNoZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIHdpdGhNaWRkbGV3YXJlRWZmZWN0cyh7XG4gICAgICAgICAgICAgICAgICAgIGZldGNoRGF0YTogKCk9PmZldGNoTmV4dERhdGEoZmV0Y2hOZXh0RGF0YVBhcmFtcyksXG4gICAgICAgICAgICAgICAgICAgIGFzUGF0aDogcmVzb2x2ZWRBcyxcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBsb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlcjogX3RoaXNcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBoYW5kbGVDYW5jZWxsZWQoKTtcbiAgICAgICAgICAgICAgICBpZiAoKGRhdGEgPT0gbnVsbCA/IHZvaWQgMCA6IChyZWYgPSBkYXRhLmVmZmVjdCkgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZi50eXBlKSA9PT0gJ3JlZGlyZWN0LWludGVybmFsJyB8fCAoZGF0YSA9PSBudWxsID8gdm9pZCAwIDogKHJlZjQgPSBkYXRhLmVmZmVjdCkgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZjQudHlwZSkgPT09ICdyZWRpcmVjdC1leHRlcm5hbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEuZWZmZWN0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoKGRhdGEgPT0gbnVsbCA/IHZvaWQgMCA6IChyZWY1ID0gZGF0YS5lZmZlY3QpID09IG51bGwgPyB2b2lkIDAgOiByZWY1LnR5cGUpID09PSAncmV3cml0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgcm91dGUgPSAoMCwgX3JlbW92ZVRyYWlsaW5nU2xhc2gpLnJlbW92ZVRyYWlsaW5nU2xhc2goZGF0YS5lZmZlY3QucmVzb2x2ZWRIcmVmKTtcbiAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUgPSBkYXRhLmVmZmVjdC5yZXNvbHZlZEhyZWY7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5ID0gX2V4dGVuZHMoe30sIHF1ZXJ5LCBkYXRhLmVmZmVjdC5wYXJzZWRBcy5xdWVyeSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQXMgPSBkYXRhLmVmZmVjdC5wYXJzZWRBcy5wYXRobmFtZTtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgYWdhaW4gdGhlIGNhY2hlIHdpdGggdGhlIG5ldyBkZXN0aW5hdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdJbmZvID0gX3RoaXMuY29tcG9uZW50c1tyb3V0ZV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChyb3V0ZVByb3BzLnNoYWxsb3cgJiYgZXhpc3RpbmdJbmZvICYmIF90aGlzLnJvdXRlID09PSByb3V0ZSAmJiAhaGFzTWlkZGxld2FyZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIG1hdGNoIHdpdGggdGhlIGN1cnJlbnQgcm91dGUgZHVlIHRvIHJld3JpdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBjYW4gY29weSB0aGUgZXhpc3RpbmcgaW5mb3JtYXRpb24gdG8gdGhlIHJld3JpdHRlbiBvbmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGVuLCB3ZSByZXR1cm4gdGhlIGluZm9ybWF0aW9uIGFsb25nIHdpdGggdGhlIG1hdGNoZWQgcm91dGUuXG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5jb21wb25lbnRzW3JlcXVlc3RlZFJvdXRlXSA9IF9leHRlbmRzKHt9LCBleGlzdGluZ0luZm8sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2V4dGVuZHMoe30sIGV4aXN0aW5nSW5mbywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYWNoZWRSb3V0ZUluZm8gPSBleGlzdGluZ0luZm8gJiYgISgnaW5pdGlhbCcgaW4gZXhpc3RpbmdJbmZvKSAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50JyA/IGV4aXN0aW5nSW5mbyA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJvdXRlID09PSAnL2FwaScgfHwgcm91dGUuc3RhcnRzV2l0aCgnL2FwaS8nKSkge1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFzLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCgpPT57fSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRlSW5mbyA9IGNhY2hlZFJvdXRlSW5mbyB8fCAoeWllbGQgX3RoaXMuZmV0Y2hDb21wb25lbnQocm91dGUpLnRoZW4oKHJlcyk9Pih7XG4gICAgICAgICAgICAgICAgICAgICAgICBDb21wb25lbnQ6IHJlcy5wYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVTaGVldHM6IHJlcy5zdHlsZVNoZWV0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9fTl9TU0c6IHJlcy5tb2QuX19OX1NTRyxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9fTl9TU1A6IHJlcy5tb2QuX19OX1NTUCxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9fTl9SU0M6ICEhcmVzLm1vZC5fX25leHRfcnNjX19cbiAgICAgICAgICAgICAgICAgICAgfSkpKTtcbiAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGlzVmFsaWRFbGVtZW50VHlwZSAgfSA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9yZWFjdC1pcycpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRFbGVtZW50VHlwZShyb3V0ZUluZm8uQ29tcG9uZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZGVmYXVsdCBleHBvcnQgaXMgbm90IGEgUmVhY3QgQ29tcG9uZW50IGluIHBhZ2U6IFwiJHtwYXRobmFtZX1cImApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICogRm9yIHNlcnZlciBjb21wb25lbnRzLCBub24tU1NSIHBhZ2VzIHdpbGwgaGF2ZSBzdGF0aWNhbGx5IG9wdGltaXplZFxuICAgICAgICogZmxpZ2h0IGRhdGEgaW4gYSBwcm9kdWN0aW9uIGJ1aWxkLiBTbyBvbmx5IGRldmVsb3BtZW50IGFuZCBTU1IgcGFnZXNcbiAgICAgICAqIHdpbGwgYWx3YXlzIGhhdmUgdGhlIHJlYWwtdGltZSBnZW5lcmF0ZWQgYW5kIHN0cmVhbWVkIGZsaWdodCBkYXRhLlxuICAgICAgICovIGNvbnN0IHVzZVN0cmVhbWVkRmxpZ2h0RGF0YSA9IHJvdXRlSW5mby5fX05fUlNDICYmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nIHx8IHJvdXRlSW5mby5fX05fU1NQKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRGZXRjaERhdGEgPSByb3V0ZUluZm8uX19OX1NTRyB8fCByb3V0ZUluZm8uX19OX1NTUCB8fCByb3V0ZUluZm8uX19OX1JTQztcbiAgICAgICAgICAgICAgICBjb25zdCB7IHByb3BzICB9ID0geWllbGQgX3RoaXMuX2dldERhdGEoX2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkRmV0Y2hEYXRhICYmICF1c2VTdHJlYW1lZEZsaWdodERhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsganNvbiAgfSA9IGRhdGEgfHwgKHlpZWxkIGZldGNoTmV4dERhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFIcmVmOiBfdGhpcy5wYWdlTG9hZGVyLmdldERhdGFIcmVmKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZjogKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzUGF0aDogcmVzb2x2ZWRBcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTZXJ2ZXJSZW5kZXI6IF90aGlzLmlzU3NyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSlNPTjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZsaWdodENhY2hlOiBfdGhpcy5zZGMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc2lzdENhY2hlOiAhaXNQcmV2aWV3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUHJlZmV0Y2g6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc3RhYmxlX3NraXBDbGllbnRDYWNoZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wczoganNvblxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge30sXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogeWllbGQgX3RoaXMuZ2V0SW5pdGlhbFByb3BzKHJvdXRlSW5mby5Db21wb25lbnQsIC8vIHdlIHByb3ZpZGUgQXBwVHJlZSBsYXRlciBzbyB0aGlzIG5lZWRzIHRvIGJlIGBhbnlgXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNQYXRoOiBhcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlczogX3RoaXMubG9jYWxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TG9jYWxlOiBfdGhpcy5kZWZhdWx0TG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAvLyBPbmx5IGJ1c3QgdGhlIGRhdGEgY2FjaGUgZm9yIFNTUCByb3V0ZXMgYWx0aG91Z2hcbiAgICAgICAgICAgICAgICAvLyBtaWRkbGV3YXJlIGNhbiBza2lwIGNhY2hlIHBlciByZXF1ZXN0IHdpdGhcbiAgICAgICAgICAgICAgICAvLyB4LW1pZGRsZXdhcmUtY2FjaGU6IG5vLWNhY2hlIGFzIHdlbGxcbiAgICAgICAgICAgICAgICBpZiAocm91dGVJbmZvLl9fTl9TU1AgJiYgZmV0Y2hOZXh0RGF0YVBhcmFtcy5kYXRhSHJlZikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYWNoZUtleSA9IG5ldyBVUkwoZmV0Y2hOZXh0RGF0YVBhcmFtcy5kYXRhSHJlZiwgd2luZG93LmxvY2F0aW9uLmhyZWYpLmhyZWY7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBfdGhpcy5zZGNbY2FjaGVLZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyB3ZSBraWNrIG9mZiBhIEhFQUQgcmVxdWVzdCBpbiB0aGUgYmFja2dyb3VuZFxuICAgICAgICAgICAgICAgIC8vIHdoZW4gYSBub24tcHJlZmV0Y2ggcmVxdWVzdCBpcyBtYWRlIHRvIHNpZ25hbCByZXZhbGlkYXRpb25cbiAgICAgICAgICAgICAgICBpZiAoIV90aGlzLmlzUHJldmlldyAmJiByb3V0ZUluZm8uX19OX1NTRyAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgICAgICAgICBmZXRjaE5leHREYXRhKE9iamVjdC5hc3NpZ24oe30sIGZldGNoTmV4dERhdGFQYXJhbXMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQmFja2dyb3VuZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNpc3RDYWNoZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmZsaWdodENhY2hlOiBiYWNrZ3JvdW5kQ2FjaGVcbiAgICAgICAgICAgICAgICAgICAgfSkpLmNhdGNoKCgpPT57fSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBmbGlnaHRJbmZvO1xuICAgICAgICAgICAgICAgIGlmIChyb3V0ZUluZm8uX19OX1JTQykge1xuICAgICAgICAgICAgICAgICAgICBmbGlnaHRJbmZvID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgX19mbGlnaHRfXzogdXNlU3RyZWFtZWRGbGlnaHREYXRhID8gKHlpZWxkIF90aGlzLl9nZXREYXRhKCgpPT5fdGhpcy5fZ2V0RmxpZ2h0RGF0YSgoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeTogX2V4dGVuZHMoe30sIHF1ZXJ5LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2ZsaWdodF9fOiAnMSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lOiAoMCwgX2lzRHluYW1pYykuaXNEeW5hbWljUm91dGUocm91dGUpID8gaW50ZXJwb2xhdGVBcyhwYXRobmFtZSwgKDAsIF9wYXJzZVJlbGF0aXZlVXJsKS5wYXJzZVJlbGF0aXZlVXJsKHJlc29sdmVkQXMpLnBhdGhuYW1lLCBxdWVyeSkucmVzdWx0IDogcGF0aG5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpKS5kYXRhIDogcHJvcHMuX19mbGlnaHRfX1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwcm9wcy5wYWdlUHJvcHMgPSBPYmplY3QuYXNzaWduKHt9LCBwcm9wcy5wYWdlUHJvcHMsIGZsaWdodEluZm8pO1xuICAgICAgICAgICAgICAgIHJvdXRlSW5mby5wcm9wcyA9IHByb3BzO1xuICAgICAgICAgICAgICAgIHJvdXRlSW5mby5yb3V0ZSA9IHJvdXRlO1xuICAgICAgICAgICAgICAgIHJvdXRlSW5mby5xdWVyeSA9IHF1ZXJ5O1xuICAgICAgICAgICAgICAgIHJvdXRlSW5mby5yZXNvbHZlZEFzID0gcmVzb2x2ZWRBcztcbiAgICAgICAgICAgICAgICBfdGhpcy5jb21wb25lbnRzW3JvdXRlXSA9IHJvdXRlSW5mbztcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcm91dGUgd2FzIHJld3JpdHRlbiBpbiB0aGUgcHJvY2VzcyBvZiBmZXRjaGluZyBkYXRhLFxuICAgICAgICAgICAgICAgIC8vIHdlIHVwZGF0ZSB0aGUgY2FjaGUgdG8gYWxsb3cgaGl0dGluZyB0aGUgc2FtZSBkYXRhIGZvciBzaGFsbG93IHJlcXVlc3RzLlxuICAgICAgICAgICAgICAgIGlmIChyb3V0ZSAhPT0gcmVxdWVzdGVkUm91dGUpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuY29tcG9uZW50c1tyZXF1ZXN0ZWRSb3V0ZV0gPSBfZXh0ZW5kcyh7fSwgcm91dGVJbmZvLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3V0ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvdXRlSW5mbztcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5oYW5kbGVSb3V0ZUluZm9FcnJvcigoMCwgX2lzRXJyb3IpLmdldFByb3BlckVycm9yKGVyciksIHBhdGhuYW1lLCBxdWVyeSwgYXMsIHJvdXRlUHJvcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSgpO1xuICAgIH1cbiAgICBzZXQoc3RhdGUsIGRhdGEsIHJlc2V0U2Nyb2xsKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViKGRhdGEsIHRoaXMuY29tcG9uZW50c1snL19hcHAnXS5Db21wb25lbnQsIHJlc2V0U2Nyb2xsKTtcbiAgICB9XG4gICAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGV4ZWN1dGUgYmVmb3JlIHJlcGxhY2luZyByb3V0ZXIgc3RhdGVcbiAgICogQHBhcmFtIGNiIGNhbGxiYWNrIHRvIGJlIGV4ZWN1dGVkXG4gICAqLyBiZWZvcmVQb3BTdGF0ZShjYikge1xuICAgICAgICB0aGlzLl9icHMgPSBjYjtcbiAgICB9XG4gICAgb25seUFIYXNoQ2hhbmdlKGFzKSB7XG4gICAgICAgIGlmICghdGhpcy5hc1BhdGgpIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgW29sZFVybE5vSGFzaCwgb2xkSGFzaF0gPSB0aGlzLmFzUGF0aC5zcGxpdCgnIycpO1xuICAgICAgICBjb25zdCBbbmV3VXJsTm9IYXNoLCBuZXdIYXNoXSA9IGFzLnNwbGl0KCcjJyk7XG4gICAgICAgIC8vIE1ha2VzIHN1cmUgd2Ugc2Nyb2xsIHRvIHRoZSBwcm92aWRlZCBoYXNoIGlmIHRoZSB1cmwvaGFzaCBhcmUgdGhlIHNhbWVcbiAgICAgICAgaWYgKG5ld0hhc2ggJiYgb2xkVXJsTm9IYXNoID09PSBuZXdVcmxOb0hhc2ggJiYgb2xkSGFzaCA9PT0gbmV3SGFzaCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgdGhlIHVybHMgYXJlIGNoYW5nZSwgdGhlcmUncyBtb3JlIHRoYW4gYSBoYXNoIGNoYW5nZVxuICAgICAgICBpZiAob2xkVXJsTm9IYXNoICE9PSBuZXdVcmxOb0hhc2gpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB0aGUgaGFzaCBoYXMgY2hhbmdlZCwgdGhlbiBpdCdzIGEgaGFzaCBvbmx5IGNoYW5nZS5cbiAgICAgICAgLy8gVGhpcyBjaGVjayBpcyBuZWNlc3NhcnkgdG8gaGFuZGxlIGJvdGggdGhlIGVudGVyIGFuZFxuICAgICAgICAvLyBsZWF2ZSBoYXNoID09PSAnJyBjYXNlcy4gVGhlIGlkZW50aXR5IGNhc2UgZmFsbHMgdGhyb3VnaFxuICAgICAgICAvLyBhbmQgaXMgdHJlYXRlZCBhcyBhIG5leHQgcmVsb2FkLlxuICAgICAgICByZXR1cm4gb2xkSGFzaCAhPT0gbmV3SGFzaDtcbiAgICB9XG4gICAgc2Nyb2xsVG9IYXNoKGFzKSB7XG4gICAgICAgIGNvbnN0IFssIGhhc2ggPSAnJ10gPSBhcy5zcGxpdCgnIycpO1xuICAgICAgICAvLyBTY3JvbGwgdG8gdG9wIGlmIHRoZSBoYXNoIGlzIGp1c3QgYCNgIHdpdGggbm8gdmFsdWUgb3IgYCN0b3BgXG4gICAgICAgIC8vIFRvIG1pcnJvciBicm93c2Vyc1xuICAgICAgICBpZiAoaGFzaCA9PT0gJycgfHwgaGFzaCA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBEZWNvZGUgaGFzaCB0byBtYWtlIG5vbi1sYXRpbiBhbmNob3Igd29ya3MuXG4gICAgICAgIGNvbnN0IHJhd0hhc2ggPSBkZWNvZGVVUklDb21wb25lbnQoaGFzaCk7XG4gICAgICAgIC8vIEZpcnN0IHdlIGNoZWNrIGlmIHRoZSBlbGVtZW50IGJ5IGlkIGlzIGZvdW5kXG4gICAgICAgIGNvbnN0IGlkRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChyYXdIYXNoKTtcbiAgICAgICAgaWYgKGlkRWwpIHtcbiAgICAgICAgICAgIGlkRWwuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB0aGVyZSdzIG5vIGVsZW1lbnQgd2l0aCB0aGUgaWQsIHdlIGNoZWNrIHRoZSBgbmFtZWAgcHJvcGVydHlcbiAgICAgICAgLy8gVG8gbWlycm9yIGJyb3dzZXJzXG4gICAgICAgIGNvbnN0IG5hbWVFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKHJhd0hhc2gpWzBdO1xuICAgICAgICBpZiAobmFtZUVsKSB7XG4gICAgICAgICAgICBuYW1lRWwuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB1cmxJc05ldyhhc1BhdGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXNQYXRoICE9PSBhc1BhdGg7XG4gICAgfVxuICAgIC8qKlxuICAgKiBQcmVmZXRjaCBwYWdlIGNvZGUsIHlvdSBtYXkgd2FpdCBmb3IgdGhlIGRhdGEgZHVyaW5nIHBhZ2UgcmVuZGVyaW5nLlxuICAgKiBUaGlzIGZlYXR1cmUgb25seSB3b3JrcyBpbiBwcm9kdWN0aW9uIVxuICAgKiBAcGFyYW0gdXJsIHRoZSBocmVmIG9mIHByZWZldGNoZWQgcGFnZVxuICAgKiBAcGFyYW0gYXNQYXRoIHRoZSBhcyBwYXRoIG9mIHRoZSBwcmVmZXRjaGVkIHBhZ2VcbiAgICovIHByZWZldGNoKHVybCwgYXNQYXRoID0gdXJsLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKigpIHtcbiAgICAgICAgICAgIGxldCBwYXJzZWQgPSAoMCwgX3BhcnNlUmVsYXRpdmVVcmwpLnBhcnNlUmVsYXRpdmVVcmwodXJsKTtcbiAgICAgICAgICAgIGxldCB7IHBhdGhuYW1lICwgcXVlcnkgIH0gPSBwYXJzZWQ7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmxvY2FsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUgPSAoMCwgX25vcm1hbGl6ZUxvY2FsZVBhdGgpLm5vcm1hbGl6ZUxvY2FsZVBhdGgocGF0aG5hbWUsIF90aGlzLmxvY2FsZXMpLnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICAgICBwYXJzZWQucGF0aG5hbWUgPSBwYXRobmFtZTtcbiAgICAgICAgICAgICAgICAgICAgdXJsID0gKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHBhcnNlZCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJzZWRBcyA9ICgwLCBfcGFyc2VSZWxhdGl2ZVVybCkucGFyc2VSZWxhdGl2ZVVybChhc1BhdGgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGVQYXRoUmVzdWx0ID0gKDAsIF9ub3JtYWxpemVMb2NhbGVQYXRoKS5ub3JtYWxpemVMb2NhbGVQYXRoKHBhcnNlZEFzLnBhdGhuYW1lLCBfdGhpcy5sb2NhbGVzKTtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkQXMucGF0aG5hbWUgPSBsb2NhbGVQYXRoUmVzdWx0LnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmxvY2FsZSA9IGxvY2FsZVBhdGhSZXN1bHQuZGV0ZWN0ZWRMb2NhbGUgfHwgX3RoaXMuZGVmYXVsdExvY2FsZTtcbiAgICAgICAgICAgICAgICAgICAgYXNQYXRoID0gKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHBhcnNlZEFzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwYWdlcyA9IHlpZWxkIF90aGlzLnBhZ2VMb2FkZXIuZ2V0UGFnZUxpc3QoKTtcbiAgICAgICAgICAgIGxldCByZXNvbHZlZEFzID0gYXNQYXRoO1xuICAgICAgICAgICAgY29uc3QgbG9jYWxlID0gdHlwZW9mIG9wdGlvbnMubG9jYWxlICE9PSAndW5kZWZpbmVkJyA/IG9wdGlvbnMubG9jYWxlIHx8IHVuZGVmaW5lZCA6IF90aGlzLmxvY2FsZTtcbiAgICAgICAgICAgIGNvbnN0IGlzTWlkZGxld2FyZU1hdGNoID0geWllbGQgbWF0Y2hlc01pZGRsZXdhcmUoe1xuICAgICAgICAgICAgICAgIGFzUGF0aDogYXNQYXRoLFxuICAgICAgICAgICAgICAgIGxvY2FsZTogbG9jYWxlLFxuICAgICAgICAgICAgICAgIHJvdXRlcjogX3RoaXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9IQVNfUkVXUklURVMgJiYgYXNQYXRoLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICAgICAgICAgIGxldCByZXdyaXRlcztcbiAgICAgICAgICAgICAgICAoeyBfX3Jld3JpdGVzOiByZXdyaXRlcyAgfSA9IHlpZWxkICgwLCBfcm91dGVMb2FkZXIpLmdldENsaWVudEJ1aWxkTWFuaWZlc3QoKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmV3cml0ZXNSZXN1bHQgPSAoMCwgX3Jlc29sdmVSZXdyaXRlcykuZGVmYXVsdCgoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aCgoMCwgX2FkZExvY2FsZSkuYWRkTG9jYWxlKGFzUGF0aCwgX3RoaXMubG9jYWxlKSwgdHJ1ZSksIHBhZ2VzLCByZXdyaXRlcywgcGFyc2VkLnF1ZXJ5LCAocCk9PnJlc29sdmVEeW5hbWljUm91dGUocCwgcGFnZXMpLCBfdGhpcy5sb2NhbGVzKTtcbiAgICAgICAgICAgICAgICBpZiAocmV3cml0ZXNSZXN1bHQuZXh0ZXJuYWxEZXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzb2x2ZWRBcyA9ICgwLCBfcmVtb3ZlTG9jYWxlKS5yZW1vdmVMb2NhbGUoKDAsIF9yZW1vdmVCYXNlUGF0aCkucmVtb3ZlQmFzZVBhdGgocmV3cml0ZXNSZXN1bHQuYXNQYXRoKSwgX3RoaXMubG9jYWxlKTtcbiAgICAgICAgICAgICAgICBpZiAocmV3cml0ZXNSZXN1bHQubWF0Y2hlZFBhZ2UgJiYgcmV3cml0ZXNSZXN1bHQucmVzb2x2ZWRIcmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoaXMgZGlyZWN0bHkgbWF0Y2hlcyBhIHBhZ2Ugd2UgbmVlZCB0byB1cGRhdGUgdGhlIGhyZWYgdG9cbiAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3cgdGhlIGNvcnJlY3QgcGFnZSBjaHVuayB0byBiZSBsb2FkZWRcbiAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUgPSByZXdyaXRlc1Jlc3VsdC5yZXNvbHZlZEhyZWY7XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZC5wYXRobmFtZSA9IHBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTWlkZGxld2FyZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24ocGFyc2VkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcnNlZC5wYXRobmFtZSA9IHJlc29sdmVEeW5hbWljUm91dGUocGFyc2VkLnBhdGhuYW1lLCBwYWdlcyk7XG4gICAgICAgICAgICBpZiAoKDAsIF9pc0R5bmFtaWMpLmlzRHluYW1pY1JvdXRlKHBhcnNlZC5wYXRobmFtZSkpIHtcbiAgICAgICAgICAgICAgICBwYXRobmFtZSA9IHBhcnNlZC5wYXRobmFtZTtcbiAgICAgICAgICAgICAgICBwYXJzZWQucGF0aG5hbWUgPSBwYXRobmFtZTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHF1ZXJ5LCAoMCwgX3JvdXRlTWF0Y2hlcikuZ2V0Um91dGVNYXRjaGVyKCgwLCBfcm91dGVSZWdleCkuZ2V0Um91dGVSZWdleChwYXJzZWQucGF0aG5hbWUpKSgoMCwgX3BhcnNlUGF0aCkucGFyc2VQYXRoKGFzUGF0aCkucGF0aG5hbWUpIHx8IHt9KTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzTWlkZGxld2FyZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHVybCA9ICgwLCBfZm9ybWF0VXJsKS5mb3JtYXRXaXRoVmFsaWRhdGlvbihwYXJzZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFByZWZldGNoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gZGV2ZWxvcG1lbnQgbW9kZSBiZWNhdXNlIGl0IHdvdWxkIHRyaWdnZXIgb24tZGVtYW5kLWVudHJpZXNcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVE9ETzogaWYgdGhlIHJvdXRlIG1pZGRsZXdhcmUncyBkYXRhIHJlcXVlc3RcbiAgICAgICAgICAgIC8vIHJlc29sdmVzIHRvIGlzIG5vdCBhbiBTU0cgcm91dGUgd2Ugc2hvdWxkIGJ1c3QgdGhlIGNhY2hlXG4gICAgICAgICAgICAvLyBidXQgd2Ugc2hvdWxkbid0IGFsbG93IHByZWZldGNoIHRvIGtlZXAgdHJpZ2dlcmluZ1xuICAgICAgICAgICAgLy8gcmVxdWVzdHMgZm9yIFNTUCBwYWdlc1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIHdpdGhNaWRkbGV3YXJlRWZmZWN0cyh7XG4gICAgICAgICAgICAgICAgZmV0Y2hEYXRhOiAoKT0+ZmV0Y2hOZXh0RGF0YSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhSHJlZjogX3RoaXMucGFnZUxvYWRlci5nZXREYXRhSHJlZih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZjogKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcEludGVycG9sYXRpb246IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNQYXRoOiByZXNvbHZlZEFzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNNaWRkbGV3YXJlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNTZXJ2ZXJSZW5kZXI6IF90aGlzLmlzU3NyLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VKU09OOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5mbGlnaHRDYWNoZTogX3RoaXMuc2RjLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGVyc2lzdENhY2hlOiAhX3RoaXMuaXNQcmV2aWV3LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmVmZXRjaDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBhc1BhdGg6IGFzUGF0aCxcbiAgICAgICAgICAgICAgICBsb2NhbGU6IGxvY2FsZSxcbiAgICAgICAgICAgICAgICByb3V0ZXI6IF90aGlzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8qKlxuICAgICAqIElmIHRoZXJlIHdhcyBhIHJld3JpdGUgd2UgYXBwbHkgdGhlIGVmZmVjdHMgb2YgdGhlIHJld3JpdGUgb24gdGhlXG4gICAgICogY3VycmVudCBwYXJhbWV0ZXJzIGZvciB0aGUgcHJlZmV0Y2guXG4gICAgICovIGlmICgoZGF0YSA9PSBudWxsID8gdm9pZCAwIDogZGF0YS5lZmZlY3QudHlwZSkgPT09ICdyZXdyaXRlJykge1xuICAgICAgICAgICAgICAgIHBhcnNlZC5wYXRobmFtZSA9IGRhdGEuZWZmZWN0LnJlc29sdmVkSHJlZjtcbiAgICAgICAgICAgICAgICBwYXRobmFtZSA9IGRhdGEuZWZmZWN0LnJlc29sdmVkSHJlZjtcbiAgICAgICAgICAgICAgICBxdWVyeSA9IF9leHRlbmRzKHt9LCBxdWVyeSwgZGF0YS5lZmZlY3QucGFyc2VkQXMucXVlcnkpO1xuICAgICAgICAgICAgICAgIHJlc29sdmVkQXMgPSBkYXRhLmVmZmVjdC5wYXJzZWRBcy5wYXRobmFtZTtcbiAgICAgICAgICAgICAgICB1cmwgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24ocGFyc2VkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qKlxuICAgICAqIElmIHRoZXJlIGlzIGEgcmVkaXJlY3QgdG8gYW4gZXh0ZXJuYWwgZGVzdGluYXRpb24gdGhlbiB3ZSBkb24ndCBoYXZlXG4gICAgICogdG8gcHJlZmV0Y2ggY29udGVudCBhcyBpdCB3aWxsIGJlIHVudXNlZC5cbiAgICAgKi8gaWYgKChkYXRhID09IG51bGwgPyB2b2lkIDAgOiBkYXRhLmVmZmVjdC50eXBlKSA9PT0gJ3JlZGlyZWN0LWV4dGVybmFsJykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJvdXRlID0gKDAsIF9yZW1vdmVUcmFpbGluZ1NsYXNoKS5yZW1vdmVUcmFpbGluZ1NsYXNoKHBhdGhuYW1lKTtcbiAgICAgICAgICAgIHlpZWxkIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICBfdGhpcy5wYWdlTG9hZGVyLl9pc1NzZyhyb3V0ZSkudGhlbigoaXNTc2cpPT57XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpc1NzZyA/IGZldGNoTmV4dERhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUhyZWY6IChkYXRhID09IG51bGwgPyB2b2lkIDAgOiBkYXRhLmRhdGFIcmVmKSB8fCBfdGhpcy5wYWdlTG9hZGVyLmdldERhdGFIcmVmKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmOiB1cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNQYXRoOiByZXNvbHZlZEFzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZTogbG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VydmVyUmVuZGVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSlNPTjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZmxpZ2h0Q2FjaGU6IF90aGlzLnNkYyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNpc3RDYWNoZTogIV90aGlzLmlzUHJldmlldyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUHJlZmV0Y2g6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB1bnN0YWJsZV9za2lwQ2xpZW50Q2FjaGU6IG9wdGlvbnMudW5zdGFibGVfc2tpcENsaWVudENhY2hlIHx8IG9wdGlvbnMucHJpb3JpdHlcbiAgICAgICAgICAgICAgICAgICAgfSkudGhlbigoKT0+ZmFsc2UpIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgX3RoaXMucGFnZUxvYWRlcltvcHRpb25zLnByaW9yaXR5ID8gJ2xvYWRQYWdlJyA6ICdwcmVmZXRjaCddKHJvdXRlKSwgXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfSkoKTtcbiAgICB9XG4gICAgZmV0Y2hDb21wb25lbnQocm91dGUpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKigpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZUNhbmNlbGxlZCA9IGdldENhbmNlbGxlZEhhbmRsZXIoe1xuICAgICAgICAgICAgICAgIHJvdXRlLFxuICAgICAgICAgICAgICAgIHJvdXRlcjogX3RoaXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZXN1bHQgPSB5aWVsZCBfdGhpcy5wYWdlTG9hZGVyLmxvYWRQYWdlKHJvdXRlKTtcbiAgICAgICAgICAgICAgICBoYW5kbGVDYW5jZWxsZWQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9uZW50UmVzdWx0O1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlQ2FuY2VsbGVkKCk7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSgpO1xuICAgIH1cbiAgICBfZ2V0RGF0YShmbikge1xuICAgICAgICBsZXQgY2FuY2VsbGVkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGNhbmNlbCA9ICgpPT57XG4gICAgICAgICAgICBjYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNsYyA9IGNhbmNlbDtcbiAgICAgICAgcmV0dXJuIGZuKCkudGhlbigoZGF0YSk9PntcbiAgICAgICAgICAgIGlmIChjYW5jZWwgPT09IHRoaXMuY2xjKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGMgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNhbmNlbGxlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcignTG9hZGluZyBpbml0aWFsIHByb3BzIGNhbmNlbGxlZCcpO1xuICAgICAgICAgICAgICAgIGVyci5jYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX2dldEZsaWdodERhdGEoZGF0YUhyZWYpIHtcbiAgICAgICAgLy8gRG8gbm90IGNhY2hlIFJTQyBmbGlnaHQgcmVzcG9uc2Ugc2luY2UgaXQncyBub3QgYSBzdGF0aWMgcmVzb3VyY2VcbiAgICAgICAgcmV0dXJuIGZldGNoTmV4dERhdGEoe1xuICAgICAgICAgICAgZGF0YUhyZWYsXG4gICAgICAgICAgICBpc1NlcnZlclJlbmRlcjogdHJ1ZSxcbiAgICAgICAgICAgIHBhcnNlSlNPTjogZmFsc2UsXG4gICAgICAgICAgICBpbmZsaWdodENhY2hlOiB0aGlzLnNkYyxcbiAgICAgICAgICAgIHBlcnNpc3RDYWNoZTogZmFsc2UsXG4gICAgICAgICAgICBpc1ByZWZldGNoOiBmYWxzZVxuICAgICAgICB9KS50aGVuKCh7IHRleHQgIH0pPT4oe1xuICAgICAgICAgICAgICAgIGRhdGE6IHRleHRcbiAgICAgICAgICAgIH0pKTtcbiAgICB9XG4gICAgZ2V0SW5pdGlhbFByb3BzKENvbXBvbmVudCwgY3R4KSB7XG4gICAgICAgIGNvbnN0IHsgQ29tcG9uZW50OiBBcHAgIH0gPSB0aGlzLmNvbXBvbmVudHNbJy9fYXBwJ107XG4gICAgICAgIGNvbnN0IEFwcFRyZWUgPSB0aGlzLl93cmFwQXBwKEFwcCk7XG4gICAgICAgIGN0eC5BcHBUcmVlID0gQXBwVHJlZTtcbiAgICAgICAgcmV0dXJuICgwLCBfdXRpbHMpLmxvYWRHZXRJbml0aWFsUHJvcHMoQXBwLCB7XG4gICAgICAgICAgICBBcHBUcmVlLFxuICAgICAgICAgICAgQ29tcG9uZW50LFxuICAgICAgICAgICAgcm91dGVyOiB0aGlzLFxuICAgICAgICAgICAgY3R4XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXQgcm91dGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLnJvdXRlO1xuICAgIH1cbiAgICBnZXQgcGF0aG5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLnBhdGhuYW1lO1xuICAgIH1cbiAgICBnZXQgcXVlcnkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLnF1ZXJ5O1xuICAgIH1cbiAgICBnZXQgYXNQYXRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5hc1BhdGg7XG4gICAgfVxuICAgIGdldCBsb2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLmxvY2FsZTtcbiAgICB9XG4gICAgZ2V0IGlzRmFsbGJhY2soKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLmlzRmFsbGJhY2s7XG4gICAgfVxuICAgIGdldCBpc1ByZXZpZXcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLmlzUHJldmlldztcbiAgICB9XG4gICAgY29uc3RydWN0b3IocGF0aG5hbWUxLCBxdWVyeTEsIGFzMSwgeyBpbml0aWFsUHJvcHMgLCBwYWdlTG9hZGVyICwgQXBwICwgd3JhcEFwcCAsIENvbXBvbmVudCAsIGVyciAsIHN1YnNjcmlwdGlvbiAsIGlzRmFsbGJhY2sgLCBsb2NhbGUgLCBsb2NhbGVzICwgZGVmYXVsdExvY2FsZSAsIGRvbWFpbkxvY2FsZXMgLCBpc1ByZXZpZXcgLCBpc1JzYyAgfSl7XG4gICAgICAgIC8vIFNlcnZlciBEYXRhIENhY2hlXG4gICAgICAgIHRoaXMuc2RjID0ge307XG4gICAgICAgIHRoaXMuaXNGaXJzdFBvcFN0YXRlRXZlbnQgPSB0cnVlO1xuICAgICAgICB0aGlzLl9rZXkgPSBjcmVhdGVLZXkoKTtcbiAgICAgICAgdGhpcy5vblBvcFN0YXRlID0gKGUpPT57XG4gICAgICAgICAgICBjb25zdCB7IGlzRmlyc3RQb3BTdGF0ZUV2ZW50ICB9ID0gdGhpcztcbiAgICAgICAgICAgIHRoaXMuaXNGaXJzdFBvcFN0YXRlRXZlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gZS5zdGF0ZTtcbiAgICAgICAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgICAgICAgICAvLyBXZSBnZXQgc3RhdGUgYXMgdW5kZWZpbmVkIGZvciB0d28gcmVhc29ucy5cbiAgICAgICAgICAgICAgICAvLyAgMS4gV2l0aCBvbGRlciBzYWZhcmkgKDwgOCkgYW5kIG9sZGVyIGNocm9tZSAoPCAzNClcbiAgICAgICAgICAgICAgICAvLyAgMi4gV2hlbiB0aGUgVVJMIGNoYW5nZWQgd2l0aCAjXG4gICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAvLyBJbiB0aGUgYm90aCBjYXNlcywgd2UgZG9uJ3QgbmVlZCB0byBwcm9jZWVkIGFuZCBjaGFuZ2UgdGhlIHJvdXRlLlxuICAgICAgICAgICAgICAgIC8vIChhcyBpdCdzIGFscmVhZHkgY2hhbmdlZClcbiAgICAgICAgICAgICAgICAvLyBCdXQgd2UgY2FuIHNpbXBseSByZXBsYWNlIHRoZSBzdGF0ZSB3aXRoIHRoZSBuZXcgY2hhbmdlcy5cbiAgICAgICAgICAgICAgICAvLyBBY3R1YWxseSwgZm9yICgxKSB3ZSBkb24ndCBuZWVkIHRvIG5vdGhpbmcuIEJ1dCBpdCdzIGhhcmQgdG8gZGV0ZWN0IHRoYXQgZXZlbnQuXG4gICAgICAgICAgICAgICAgLy8gU28sIGRvaW5nIHRoZSBmb2xsb3dpbmcgZm9yICgxKSBkb2VzIG5vIGhhcm0uXG4gICAgICAgICAgICAgICAgY29uc3QgeyBwYXRobmFtZSAsIHF1ZXJ5ICB9ID0gdGhpcztcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVN0YXRlKCdyZXBsYWNlU3RhdGUnLCAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICBwYXRobmFtZTogKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgocGF0aG5hbWUpLFxuICAgICAgICAgICAgICAgICAgICBxdWVyeVxuICAgICAgICAgICAgICAgIH0pLCAoMCwgX3V0aWxzKS5nZXRVUkwoKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gX19OQSBpcyB1c2VkIHRvIGlkZW50aWZ5IGlmIHRoZSBoaXN0b3J5IGVudHJ5IGNhbiBiZSBoYW5kbGVkIGJ5IHRoZSBhcHAtcm91dGVyLlxuICAgICAgICAgICAgaWYgKHN0YXRlLl9fTkEpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFzdGF0ZS5fX04pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBTYWZhcmkgZmlyZXMgcG9wc3RhdGVldmVudCB3aGVuIHJlb3BlbmluZyB0aGUgYnJvd3Nlci5cbiAgICAgICAgICAgIGlmIChpc0ZpcnN0UG9wU3RhdGVFdmVudCAmJiB0aGlzLmxvY2FsZSA9PT0gc3RhdGUub3B0aW9ucy5sb2NhbGUgJiYgc3RhdGUuYXMgPT09IHRoaXMuYXNQYXRoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGZvcmNlZFNjcm9sbDtcbiAgICAgICAgICAgIGNvbnN0IHsgdXJsICwgYXMgLCBvcHRpb25zICwga2V5ICB9ID0gc3RhdGU7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1NDUk9MTF9SRVNUT1JBVElPTikge1xuICAgICAgICAgICAgICAgIGlmIChtYW51YWxTY3JvbGxSZXN0b3JhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fa2V5ICE9PSBrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNuYXBzaG90IGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uOlxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdfX25leHRfc2Nyb2xsXycgKyB0aGlzLl9rZXksIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogc2VsZi5wYWdlWE9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogc2VsZi5wYWdlWU9mZnNldFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXN0b3JlIG9sZCBzY3JvbGwgcG9zaXRpb246XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHYgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdfX25leHRfc2Nyb2xsXycgKyBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlZFNjcm9sbCA9IEpTT04ucGFyc2Uodik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlZFNjcm9sbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9rZXkgPSBrZXk7XG4gICAgICAgICAgICBjb25zdCB7IHBhdGhuYW1lICB9ID0gKDAsIF9wYXJzZVJlbGF0aXZlVXJsKS5wYXJzZVJlbGF0aXZlVXJsKHVybCk7XG4gICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgcmUtcmVuZGVyIG9uIGluaXRpYWwgbG9hZCxcbiAgICAgICAgICAgIC8vIGNhbiBiZSBjYXVzZWQgYnkgbmF2aWdhdGluZyBiYWNrIGZyb20gYW4gZXh0ZXJuYWwgc2l0ZVxuICAgICAgICAgICAgaWYgKHRoaXMuaXNTc3IgJiYgYXMgPT09ICgwLCBfYWRkQmFzZVBhdGgpLmFkZEJhc2VQYXRoKHRoaXMuYXNQYXRoKSAmJiBwYXRobmFtZSA9PT0gKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgodGhpcy5wYXRobmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJZiB0aGUgZG93bnN0cmVhbSBhcHBsaWNhdGlvbiByZXR1cm5zIGZhbHN5LCByZXR1cm4uXG4gICAgICAgICAgICAvLyBUaGV5IHdpbGwgdGhlbiBiZSByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhlIGV2ZW50LlxuICAgICAgICAgICAgaWYgKHRoaXMuX2JwcyAmJiAhdGhpcy5fYnBzKHN0YXRlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlKCdyZXBsYWNlU3RhdGUnLCB1cmwsIGFzLCBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zLCB7XG4gICAgICAgICAgICAgICAgc2hhbGxvdzogb3B0aW9ucy5zaGFsbG93ICYmIHRoaXMuX3NoYWxsb3csXG4gICAgICAgICAgICAgICAgbG9jYWxlOiBvcHRpb25zLmxvY2FsZSB8fCB0aGlzLmRlZmF1bHRMb2NhbGUsXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBpbnRlcm5hbCB2YWx1ZSBub3QgZXhwb3NlZCBvbiB0eXBlc1xuICAgICAgICAgICAgICAgIF9oOiAwXG4gICAgICAgICAgICB9KSwgZm9yY2VkU2Nyb2xsKTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gcmVwcmVzZW50cyB0aGUgY3VycmVudCBjb21wb25lbnQga2V5XG4gICAgICAgIGNvbnN0IHJvdXRlID0gKDAsIF9yZW1vdmVUcmFpbGluZ1NsYXNoKS5yZW1vdmVUcmFpbGluZ1NsYXNoKHBhdGhuYW1lMSk7XG4gICAgICAgIC8vIHNldCB1cCB0aGUgY29tcG9uZW50IGNhY2hlIChieSByb3V0ZSBrZXlzKVxuICAgICAgICB0aGlzLmNvbXBvbmVudHMgPSB7fTtcbiAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBrZWVwIHRoZSBjYWNoZSwgaWYgdGhlcmUncyBhbiBlcnJvclxuICAgICAgICAvLyBPdGhlcndpc2UsIHRoaXMgY2F1c2UgaXNzdWVzIHdoZW4gd2hlbiBnb2luZyBiYWNrIGFuZFxuICAgICAgICAvLyBjb21lIGFnYWluIHRvIHRoZSBlcnJvcmVkIHBhZ2UuXG4gICAgICAgIGlmIChwYXRobmFtZTEgIT09ICcvX2Vycm9yJykge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRzW3JvdXRlXSA9IHtcbiAgICAgICAgICAgICAgICBDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgaW5pdGlhbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBwcm9wczogaW5pdGlhbFByb3BzLFxuICAgICAgICAgICAgICAgIGVycixcbiAgICAgICAgICAgICAgICBfX05fU1NHOiBpbml0aWFsUHJvcHMgJiYgaW5pdGlhbFByb3BzLl9fTl9TU0csXG4gICAgICAgICAgICAgICAgX19OX1NTUDogaW5pdGlhbFByb3BzICYmIGluaXRpYWxQcm9wcy5fX05fU1NQLFxuICAgICAgICAgICAgICAgIF9fTl9SU0M6ICEhaXNSc2NcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb21wb25lbnRzWycvX2FwcCddID0ge1xuICAgICAgICAgICAgQ29tcG9uZW50OiBBcHAsXG4gICAgICAgICAgICBzdHlsZVNoZWV0czogW11cbiAgICAgICAgfTtcbiAgICAgICAgLy8gQmFja3dhcmRzIGNvbXBhdCBmb3IgUm91dGVyLnJvdXRlci5ldmVudHNcbiAgICAgICAgLy8gVE9ETzogU2hvdWxkIGJlIHJlbW92ZSB0aGUgZm9sbG93aW5nIG1ham9yIHZlcnNpb24gYXMgaXQgd2FzIG5ldmVyIGRvY3VtZW50ZWRcbiAgICAgICAgdGhpcy5ldmVudHMgPSBSb3V0ZXIuZXZlbnRzO1xuICAgICAgICB0aGlzLnBhZ2VMb2FkZXIgPSBwYWdlTG9hZGVyO1xuICAgICAgICAvLyBpZiBhdXRvIHByZXJlbmRlcmVkIGFuZCBkeW5hbWljIHJvdXRlIHdhaXQgdG8gdXBkYXRlIGFzUGF0aFxuICAgICAgICAvLyB1bnRpbCBhZnRlciBtb3VudCB0byBwcmV2ZW50IGh5ZHJhdGlvbiBtaXNtYXRjaFxuICAgICAgICBjb25zdCBhdXRvRXhwb3J0RHluYW1pYyA9ICgwLCBfaXNEeW5hbWljKS5pc0R5bmFtaWNSb3V0ZShwYXRobmFtZTEpICYmIHNlbGYuX19ORVhUX0RBVEFfXy5hdXRvRXhwb3J0O1xuICAgICAgICB0aGlzLmJhc2VQYXRoID0gcHJvY2Vzcy5lbnYuX19ORVhUX1JPVVRFUl9CQVNFUEFUSCB8fCAnJztcbiAgICAgICAgdGhpcy5zdWIgPSBzdWJzY3JpcHRpb247XG4gICAgICAgIHRoaXMuY2xjID0gbnVsbDtcbiAgICAgICAgdGhpcy5fd3JhcEFwcCA9IHdyYXBBcHA7XG4gICAgICAgIC8vIG1ha2Ugc3VyZSB0byBpZ25vcmUgZXh0cmEgcG9wU3RhdGUgaW4gc2FmYXJpIG9uIG5hdmlnYXRpbmdcbiAgICAgICAgLy8gYmFjayBmcm9tIGV4dGVybmFsIHNpdGVcbiAgICAgICAgdGhpcy5pc1NzciA9IHRydWU7XG4gICAgICAgIHRoaXMuaXNMb2NhbGVEb21haW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1JlYWR5ID0gISEoc2VsZi5fX05FWFRfREFUQV9fLmdzc3AgfHwgc2VsZi5fX05FWFRfREFUQV9fLmdpcCB8fCBzZWxmLl9fTkVYVF9EQVRBX18uYXBwR2lwICYmICFzZWxmLl9fTkVYVF9EQVRBX18uZ3NwIHx8ICFhdXRvRXhwb3J0RHluYW1pYyAmJiAhc2VsZi5sb2NhdGlvbi5zZWFyY2ggJiYgIXByb2Nlc3MuZW52Ll9fTkVYVF9IQVNfUkVXUklURVMpO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICAgICAgdGhpcy5sb2NhbGVzID0gbG9jYWxlcztcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdExvY2FsZSA9IGRlZmF1bHRMb2NhbGU7XG4gICAgICAgICAgICB0aGlzLmRvbWFpbkxvY2FsZXMgPSBkb21haW5Mb2NhbGVzO1xuICAgICAgICAgICAgdGhpcy5pc0xvY2FsZURvbWFpbiA9ICEhKDAsIF9kZXRlY3REb21haW5Mb2NhbGUpLmRldGVjdERvbWFpbkxvY2FsZShkb21haW5Mb2NhbGVzLCBzZWxmLmxvY2F0aW9uLmhvc3RuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgcm91dGUsXG4gICAgICAgICAgICBwYXRobmFtZTogcGF0aG5hbWUxLFxuICAgICAgICAgICAgcXVlcnk6IHF1ZXJ5MSxcbiAgICAgICAgICAgIGFzUGF0aDogYXV0b0V4cG9ydER5bmFtaWMgPyBwYXRobmFtZTEgOiBhczEsXG4gICAgICAgICAgICBpc1ByZXZpZXc6ICEhaXNQcmV2aWV3LFxuICAgICAgICAgICAgbG9jYWxlOiBwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUID8gbG9jYWxlIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgaXNGYWxsYmFja1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9pbml0aWFsTWF0Y2hlc01pZGRsZXdhcmVQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAvLyBtYWtlIHN1cmUgXCJhc1wiIGRvZXNuJ3Qgc3RhcnQgd2l0aCBkb3VibGUgc2xhc2hlcyBvciBlbHNlIGl0IGNhblxuICAgICAgICAgICAgLy8gdGhyb3cgYW4gZXJyb3IgYXMgaXQncyBjb25zaWRlcmVkIGludmFsaWRcbiAgICAgICAgICAgIGlmICghYXMxLnN0YXJ0c1dpdGgoJy8vJykpIHtcbiAgICAgICAgICAgICAgICAvLyBpbiBvcmRlciBmb3IgYGUuc3RhdGVgIHRvIHdvcmsgb24gdGhlIGBvbnBvcHN0YXRlYCBldmVudFxuICAgICAgICAgICAgICAgIC8vIHdlIGhhdmUgdG8gcmVnaXN0ZXIgdGhlIGluaXRpYWwgcm91dGUgdXBvbiBpbml0aWFsaXphdGlvblxuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgYXNQYXRoID0gKDAsIF91dGlscykuZ2V0VVJMKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5faW5pdGlhbE1hdGNoZXNNaWRkbGV3YXJlUHJvbWlzZSA9IG1hdGNoZXNNaWRkbGV3YXJlKHtcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiB0aGlzLFxuICAgICAgICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgIGFzUGF0aFxuICAgICAgICAgICAgICAgIH0pLnRoZW4oKG1hdGNoZXMpPT57XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuX3Nob3VsZFJlc29sdmVIcmVmID0gYXMxICE9PSBwYXRobmFtZTE7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlU3RhdGUoJ3JlcGxhY2VTdGF0ZScsIG1hdGNoZXMgPyBhc1BhdGggOiAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWU6ICgwLCBfYWRkQmFzZVBhdGgpLmFkZEJhc2VQYXRoKHBhdGhuYW1lMSksXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVyeTogcXVlcnkxXG4gICAgICAgICAgICAgICAgICAgIH0pLCBhc1BhdGgsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hlcztcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwb3BzdGF0ZScsIHRoaXMub25Qb3BTdGF0ZSk7XG4gICAgICAgICAgICAvLyBlbmFibGUgY3VzdG9tIHNjcm9sbCByZXN0b3JhdGlvbiBoYW5kbGluZyB3aGVuIGF2YWlsYWJsZVxuICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGZhbGxiYWNrIHRvIGJyb3dzZXIncyBkZWZhdWx0IGhhbmRsaW5nXG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1NDUk9MTF9SRVNUT1JBVElPTikge1xuICAgICAgICAgICAgICAgIGlmIChtYW51YWxTY3JvbGxSZXN0b3JhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuaGlzdG9yeS5zY3JvbGxSZXN0b3JhdGlvbiA9ICdtYW51YWwnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblJvdXRlci5ldmVudHMgPSAoMCwgX21pdHQpLmRlZmF1bHQoKTtcbmZ1bmN0aW9uIG1hdGNoZXNNaWRkbGV3YXJlKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG9wdGlvbnMucm91dGVyLnBhZ2VMb2FkZXIuZ2V0TWlkZGxld2FyZUxpc3QoKSkudGhlbigoaXRlbXMpPT57XG4gICAgICAgIGNvbnN0IHsgcGF0aG5hbWU6IGFzUGF0aG5hbWUgIH0gPSAoMCwgX3BhcnNlUGF0aCkucGFyc2VQYXRoKG9wdGlvbnMuYXNQYXRoKTtcbiAgICAgICAgY29uc3QgY2xlYW5lZEFzID0gKDAsIF9oYXNCYXNlUGF0aCkuaGFzQmFzZVBhdGgoYXNQYXRobmFtZSkgPyAoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChhc1BhdGhuYW1lKSA6IGFzUGF0aG5hbWU7XG4gICAgICAgIHJldHVybiAhIShpdGVtcyA9PSBudWxsID8gdm9pZCAwIDogaXRlbXMuc29tZSgoW3JlZ2V4LCBzc3JdKT0+e1xuICAgICAgICAgICAgcmV0dXJuICFzc3IgJiYgbmV3IFJlZ0V4cChyZWdleCkudGVzdCgoMCwgX2FkZExvY2FsZSkuYWRkTG9jYWxlKGNsZWFuZWRBcywgb3B0aW9ucy5sb2NhbGUpKTtcbiAgICAgICAgfSkpO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gd2l0aE1pZGRsZXdhcmVFZmZlY3RzKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbWF0Y2hlc01pZGRsZXdhcmUob3B0aW9ucykudGhlbigobWF0Y2hlcyk9PntcbiAgICAgICAgaWYgKG1hdGNoZXMgJiYgb3B0aW9ucy5mZXRjaERhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmZldGNoRGF0YSgpLnRoZW4oKGRhdGEpPT5nZXRNaWRkbGV3YXJlRGF0YShkYXRhLmRhdGFIcmVmLCBkYXRhLnJlc3BvbnNlLCBvcHRpb25zKS50aGVuKChlZmZlY3QpPT4oe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUhyZWY6IGRhdGEuZGF0YUhyZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uOiBkYXRhLmpzb24sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZTogZGF0YS5yZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGRhdGEudGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVmZmVjdFxuICAgICAgICAgICAgICAgICAgICB9KSkpLmNhdGNoKChfZXJyKT0+e1xuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIFRPRE86IFJldmlzaXQgdGhpcyBpbiB0aGUgZnV0dXJlLlxuICAgICAgICAgICAqIEZvciBub3cgd2Ugd2lsbCBub3QgY29uc2lkZXIgbWlkZGxld2FyZSBkYXRhIGVycm9ycyB0byBiZSBmYXRhbC5cbiAgICAgICAgICAgKiBtYXliZSB3ZSBzaG91bGQgcmV2aXNpdCBpbiB0aGUgZnV0dXJlLlxuICAgICAgICAgICAqLyByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZ2V0TWlkZGxld2FyZURhdGEoc291cmNlLCByZXNwb25zZSwgb3B0aW9ucykge1xuICAgIGNvbnN0IG5leHRDb25maWcgPSB7XG4gICAgICAgIGJhc2VQYXRoOiBvcHRpb25zLnJvdXRlci5iYXNlUGF0aCxcbiAgICAgICAgaTE4bjoge1xuICAgICAgICAgICAgbG9jYWxlczogb3B0aW9ucy5yb3V0ZXIubG9jYWxlc1xuICAgICAgICB9LFxuICAgICAgICB0cmFpbGluZ1NsYXNoOiBCb29sZWFuKHByb2Nlc3MuZW52Ll9fTkVYVF9UUkFJTElOR19TTEFTSClcbiAgICB9O1xuICAgIGNvbnN0IHJld3JpdGVIZWFkZXIgPSByZXNwb25zZS5oZWFkZXJzLmdldCgneC1uZXh0anMtcmV3cml0ZScpO1xuICAgIGxldCByZXdyaXRlVGFyZ2V0ID0gcmV3cml0ZUhlYWRlciB8fCByZXNwb25zZS5oZWFkZXJzLmdldCgneC1uZXh0anMtbWF0Y2hlZC1wYXRoJyk7XG4gICAgY29uc3QgbWF0Y2hlZFBhdGggPSByZXNwb25zZS5oZWFkZXJzLmdldCgneC1tYXRjaGVkLXBhdGgnKTtcbiAgICBpZiAoIXJld3JpdGVUYXJnZXQgJiYgIShtYXRjaGVkUGF0aCA9PSBudWxsID8gdm9pZCAwIDogbWF0Y2hlZFBhdGguaW5jbHVkZXMoJ19fbmV4dF9kYXRhX2NhdGNoYWxsJykpKSB7XG4gICAgICAgIHJld3JpdGVUYXJnZXQgPSBtYXRjaGVkUGF0aDtcbiAgICB9XG4gICAgaWYgKHJld3JpdGVUYXJnZXQpIHtcbiAgICAgICAgaWYgKHJld3JpdGVUYXJnZXQuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWRSZXdyaXRlVGFyZ2V0ID0gKDAsIF9wYXJzZVJlbGF0aXZlVXJsKS5wYXJzZVJlbGF0aXZlVXJsKHJld3JpdGVUYXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgcGF0aG5hbWVJbmZvID0gKDAsIF9nZXROZXh0UGF0aG5hbWVJbmZvKS5nZXROZXh0UGF0aG5hbWVJbmZvKHBhcnNlZFJld3JpdGVUYXJnZXQucGF0aG5hbWUsIHtcbiAgICAgICAgICAgICAgICBuZXh0Q29uZmlnLFxuICAgICAgICAgICAgICAgIHBhcnNlRGF0YTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBmc1BhdGhuYW1lID0gKDAsIF9yZW1vdmVUcmFpbGluZ1NsYXNoKS5yZW1vdmVUcmFpbGluZ1NsYXNoKHBhdGhuYW1lSW5mby5wYXRobmFtZSk7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgICAgIG9wdGlvbnMucm91dGVyLnBhZ2VMb2FkZXIuZ2V0UGFnZUxpc3QoKSxcbiAgICAgICAgICAgICAgICAoMCwgX3JvdXRlTG9hZGVyKS5nZXRDbGllbnRCdWlsZE1hbmlmZXN0KCksIFxuICAgICAgICAgICAgXSkudGhlbigoW3BhZ2VzLCB7IF9fcmV3cml0ZXM6IHJld3JpdGVzICB9XSk9PntcbiAgICAgICAgICAgICAgICBsZXQgYXMgPSAoMCwgX2FkZExvY2FsZSkuYWRkTG9jYWxlKHBhdGhuYW1lSW5mby5wYXRobmFtZSwgcGF0aG5hbWVJbmZvLmxvY2FsZSk7XG4gICAgICAgICAgICAgICAgaWYgKCgwLCBfaXNEeW5hbWljKS5pc0R5bmFtaWNSb3V0ZShhcykgfHwgIXJld3JpdGVIZWFkZXIgJiYgcGFnZXMuaW5jbHVkZXMoKDAsIF9ub3JtYWxpemVMb2NhbGVQYXRoKS5ub3JtYWxpemVMb2NhbGVQYXRoKCgwLCBfcmVtb3ZlQmFzZVBhdGgpLnJlbW92ZUJhc2VQYXRoKGFzKSwgb3B0aW9ucy5yb3V0ZXIubG9jYWxlcykucGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZFNvdXJjZSA9ICgwLCBfZ2V0TmV4dFBhdGhuYW1lSW5mbykuZ2V0TmV4dFBhdGhuYW1lSW5mbygoMCwgX3BhcnNlUmVsYXRpdmVVcmwpLnBhcnNlUmVsYXRpdmVVcmwoc291cmNlKS5wYXRobmFtZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VEYXRhOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBhcyA9ICgwLCBfYWRkQmFzZVBhdGgpLmFkZEJhc2VQYXRoKHBhcnNlZFNvdXJjZS5wYXRobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZFJld3JpdGVUYXJnZXQucGF0aG5hbWUgPSBhcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9IQVNfUkVXUklURVMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gKDAsIF9yZXNvbHZlUmV3cml0ZXMpLmRlZmF1bHQoYXMsIHBhZ2VzLCByZXdyaXRlcywgcGFyc2VkUmV3cml0ZVRhcmdldC5xdWVyeSwgKHBhdGgpPT5yZXNvbHZlRHluYW1pY1JvdXRlKHBhdGgsIHBhZ2VzKSwgb3B0aW9ucy5yb3V0ZXIubG9jYWxlcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubWF0Y2hlZFBhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFJld3JpdGVUYXJnZXQucGF0aG5hbWUgPSByZXN1bHQucGFyc2VkQXMucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcyA9IHBhcnNlZFJld3JpdGVUYXJnZXQucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHBhcnNlZFJld3JpdGVUYXJnZXQucXVlcnksIHJlc3VsdC5wYXJzZWRBcy5xdWVyeSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRIcmVmID0gIXBhZ2VzLmluY2x1ZGVzKGZzUGF0aG5hbWUpID8gcmVzb2x2ZUR5bmFtaWNSb3V0ZSgoMCwgX25vcm1hbGl6ZUxvY2FsZVBhdGgpLm5vcm1hbGl6ZUxvY2FsZVBhdGgoKDAsIF9yZW1vdmVCYXNlUGF0aCkucmVtb3ZlQmFzZVBhdGgocGFyc2VkUmV3cml0ZVRhcmdldC5wYXRobmFtZSksIG9wdGlvbnMucm91dGVyLmxvY2FsZXMpLnBhdGhuYW1lLCBwYWdlcykgOiBmc1BhdGhuYW1lO1xuICAgICAgICAgICAgICAgIGlmICgoMCwgX2lzRHluYW1pYykuaXNEeW5hbWljUm91dGUocmVzb2x2ZWRIcmVmKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGVzID0gKDAsIF9yb3V0ZU1hdGNoZXIpLmdldFJvdXRlTWF0Y2hlcigoMCwgX3JvdXRlUmVnZXgpLmdldFJvdXRlUmVnZXgocmVzb2x2ZWRIcmVmKSkoYXMpO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHBhcnNlZFJld3JpdGVUYXJnZXQucXVlcnksIG1hdGNoZXMgfHwge30pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAncmV3cml0ZScsXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZEFzOiBwYXJzZWRSZXdyaXRlVGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZEhyZWZcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3JjID0gKDAsIF9wYXJzZVBhdGgpLnBhcnNlUGF0aChzb3VyY2UpO1xuICAgICAgICBjb25zdCBwYXRobmFtZSA9ICgwLCBfZm9ybWF0TmV4dFBhdGhuYW1lSW5mbykuZm9ybWF0TmV4dFBhdGhuYW1lSW5mbyhfZXh0ZW5kcyh7fSwgKDAsIF9nZXROZXh0UGF0aG5hbWVJbmZvKS5nZXROZXh0UGF0aG5hbWVJbmZvKHNyYy5wYXRobmFtZSwge1xuICAgICAgICAgICAgbmV4dENvbmZpZyxcbiAgICAgICAgICAgIHBhcnNlRGF0YTogdHJ1ZVxuICAgICAgICB9KSwge1xuICAgICAgICAgICAgZGVmYXVsdExvY2FsZTogb3B0aW9ucy5yb3V0ZXIuZGVmYXVsdExvY2FsZSxcbiAgICAgICAgICAgIGJ1aWxkSWQ6ICcnXG4gICAgICAgIH0pKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgICB0eXBlOiAncmVkaXJlY3QtZXh0ZXJuYWwnLFxuICAgICAgICAgICAgZGVzdGluYXRpb246IGAke3BhdGhuYW1lfSR7c3JjLnF1ZXJ5fSR7c3JjLmhhc2h9YFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgcmVkaXJlY3RUYXJnZXQgPSByZXNwb25zZS5oZWFkZXJzLmdldCgneC1uZXh0anMtcmVkaXJlY3QnKTtcbiAgICBpZiAocmVkaXJlY3RUYXJnZXQpIHtcbiAgICAgICAgaWYgKHJlZGlyZWN0VGFyZ2V0LnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICAgICAgY29uc3Qgc3JjID0gKDAsIF9wYXJzZVBhdGgpLnBhcnNlUGF0aChyZWRpcmVjdFRhcmdldCk7XG4gICAgICAgICAgICBjb25zdCBwYXRobmFtZSA9ICgwLCBfZm9ybWF0TmV4dFBhdGhuYW1lSW5mbykuZm9ybWF0TmV4dFBhdGhuYW1lSW5mbyhfZXh0ZW5kcyh7fSwgKDAsIF9nZXROZXh0UGF0aG5hbWVJbmZvKS5nZXROZXh0UGF0aG5hbWVJbmZvKHNyYy5wYXRobmFtZSwge1xuICAgICAgICAgICAgICAgIG5leHRDb25maWcsXG4gICAgICAgICAgICAgICAgcGFyc2VEYXRhOiB0cnVlXG4gICAgICAgICAgICB9KSwge1xuICAgICAgICAgICAgICAgIGRlZmF1bHRMb2NhbGU6IG9wdGlvbnMucm91dGVyLmRlZmF1bHRMb2NhbGUsXG4gICAgICAgICAgICAgICAgYnVpbGRJZDogJydcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdyZWRpcmVjdC1pbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgbmV3QXM6IGAke3BhdGhuYW1lfSR7c3JjLnF1ZXJ5fSR7c3JjLmhhc2h9YCxcbiAgICAgICAgICAgICAgICBuZXdVcmw6IGAke3BhdGhuYW1lfSR7c3JjLnF1ZXJ5fSR7c3JjLmhhc2h9YFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgICB0eXBlOiAncmVkaXJlY3QtZXh0ZXJuYWwnLFxuICAgICAgICAgICAgZGVzdGluYXRpb246IHJlZGlyZWN0VGFyZ2V0XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgdHlwZTogJ25leHQnXG4gICAgfSk7XG59XG5leHBvcnRzLmRlZmF1bHQgPSBSb3V0ZXI7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJvdXRlci5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJpc0xvY2FsVVJMIiwiaW50ZXJwb2xhdGVBcyIsInJlc29sdmVIcmVmIiwiY3JlYXRlS2V5IiwiZGVmYXVsdCIsIl9ub3JtYWxpemVUcmFpbGluZ1NsYXNoIiwicmVxdWlyZSIsIl9yZW1vdmVUcmFpbGluZ1NsYXNoIiwiX3JvdXRlTG9hZGVyIiwiX3NjcmlwdCIsIl9pc0Vycm9yIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfZGVub3JtYWxpemVQYWdlUGF0aCIsIl9ub3JtYWxpemVMb2NhbGVQYXRoIiwiX21pdHQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3V0aWxzIiwiX2lzRHluYW1pYyIsIl9wYXJzZVJlbGF0aXZlVXJsIiwiX3F1ZXJ5c3RyaW5nIiwiX3Jlc29sdmVSZXdyaXRlcyIsIl9yb3V0ZU1hdGNoZXIiLCJfcm91dGVSZWdleCIsIl9mb3JtYXRVcmwiLCJfZGV0ZWN0RG9tYWluTG9jYWxlIiwiX3BhcnNlUGF0aCIsIl9hZGRMb2NhbGUiLCJfcmVtb3ZlTG9jYWxlIiwiX3JlbW92ZUJhc2VQYXRoIiwiX2FkZEJhc2VQYXRoIiwiX2hhc0Jhc2VQYXRoIiwiX2dldE5leHRQYXRobmFtZUluZm8iLCJfZm9ybWF0TmV4dFBhdGhuYW1lSW5mbyIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsInJlc29sdmUiLCJyZWplY3QiLCJfbmV4dCIsIl90aHJvdyIsImtleSIsImFyZyIsImluZm8iLCJlcnJvciIsImRvbmUiLCJQcm9taXNlIiwidGhlbiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiZm4iLCJzZWxmIiwiYXJncyIsImFyZ3VtZW50cyIsImFwcGx5IiwiZXJyIiwidW5kZWZpbmVkIiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJ0YXJnZXQiLCJpIiwibGVuZ3RoIiwic291cmNlIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwib2JqIiwiX19lc01vZHVsZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIldlYWtNYXAiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImRlc2MiLCJzZXQiLCJidWlsZENhbmNlbGxhdGlvbkVycm9yIiwiRXJyb3IiLCJjYW5jZWxsZWQiLCJ1cmwiLCJpc0Fic29sdXRlVXJsIiwibG9jYXRpb25PcmlnaW4iLCJnZXRMb2NhdGlvbk9yaWdpbiIsInJlc29sdmVkIiwiVVJMIiwib3JpZ2luIiwiaGFzQmFzZVBhdGgiLCJwYXRobmFtZSIsIl8iLCJyb3V0ZSIsImFzUGF0aG5hbWUiLCJxdWVyeSIsImludGVycG9sYXRlZFJvdXRlIiwiZHluYW1pY1JlZ2V4IiwiZ2V0Um91dGVSZWdleCIsImR5bmFtaWNHcm91cHMiLCJncm91cHMiLCJkeW5hbWljTWF0Y2hlcyIsImdldFJvdXRlTWF0Y2hlciIsInBhcmFtcyIsImtleXMiLCJldmVyeSIsInBhcmFtIiwicmVwZWF0Iiwib3B0aW9uYWwiLCJyZXBsYWNlZCIsIkFycmF5IiwiaXNBcnJheSIsInJlcGxhY2UiLCJtYXAiLCJzZWdtZW50IiwiZW5jb2RlVVJJQ29tcG9uZW50Iiwiam9pbiIsInJlc3VsdCIsIm9taXQiLCJvYmplY3QiLCJvbWl0dGVkIiwiZm9yRWFjaCIsImluY2x1ZGVzIiwicm91dGVyIiwiaHJlZiIsInJlc29sdmVBcyIsImJhc2UiLCJ1cmxBc1N0cmluZyIsImZvcm1hdFdpdGhWYWxpZGF0aW9uIiwidXJsUHJvdG9NYXRjaCIsIm1hdGNoIiwidXJsQXNTdHJpbmdOb1Byb3RvIiwic2xpY2UiLCJ1cmxQYXJ0cyIsInNwbGl0IiwiY29uc29sZSIsIm5vcm1hbGl6ZWRVcmwiLCJub3JtYWxpemVSZXBlYXRlZFNsYXNoZXMiLCJzdGFydHNXaXRoIiwiYXNQYXRoIiwiZmluYWxVcmwiLCJub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaCIsImludGVycG9sYXRlZEFzIiwiaXNEeW5hbWljUm91dGUiLCJzZWFyY2hQYXJhbXMiLCJzZWFyY2hQYXJhbXNUb1VybFF1ZXJ5IiwiaGFzaCIsInJlc29sdmVkSHJlZiIsIl8xIiwic3RyaXBPcmlnaW4iLCJzdWJzdHJpbmciLCJwcmVwYXJlVXJsQXMiLCJhcyIsInJlc29sdmVkQXMiLCJocmVmSGFkT3JpZ2luIiwiYXNIYWRPcmlnaW4iLCJwcmVwYXJlZFVybCIsImFkZEJhc2VQYXRoIiwicHJlcGFyZWRBcyIsInJlc29sdmVEeW5hbWljUm91dGUiLCJwYWdlcyIsImNsZWFuUGF0aG5hbWUiLCJyZW1vdmVUcmFpbGluZ1NsYXNoIiwiZGVub3JtYWxpemVQYWdlUGF0aCIsInNvbWUiLCJwYWdlIiwicmUiLCJ0ZXN0IiwibWFudWFsU2Nyb2xsUmVzdG9yYXRpb24iLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1NDUk9MTF9SRVNUT1JBVElPTiIsIndpbmRvdyIsImhpc3RvcnkiLCJ2Iiwic2Vzc2lvblN0b3JhZ2UiLCJzZXRJdGVtIiwicmVtb3ZlSXRlbSIsIm4iLCJTU0dfREFUQV9OT1RfRk9VTkQiLCJTeW1ib2wiLCJmZXRjaFJldHJ5IiwiYXR0ZW1wdHMiLCJvcHRpb25zIiwiZmV0Y2giLCJjcmVkZW50aWFscyIsIm1ldGhvZCIsImhlYWRlcnMiLCJyZXNwb25zZSIsIm9rIiwic3RhdHVzIiwiYmFja2dyb3VuZENhY2hlIiwiZmV0Y2hOZXh0RGF0YSIsImRhdGFIcmVmIiwiaW5mbGlnaHRDYWNoZSIsImlzUHJlZmV0Y2giLCJoYXNNaWRkbGV3YXJlIiwiaXNTZXJ2ZXJSZW5kZXIiLCJwYXJzZUpTT04iLCJwZXJzaXN0Q2FjaGUiLCJpc0JhY2tncm91bmQiLCJ1bnN0YWJsZV9za2lwQ2xpZW50Q2FjaGUiLCJsb2NhdGlvbiIsImNhY2hlS2V5IiwicmVmMSIsImdldERhdGEiLCJwdXJwb3NlIiwidGV4dCIsImpzb24iLCJyZWYiLCJ0cnlUb1BhcnNlQXNKU09OIiwibm90Rm91bmQiLCJtYXJrQXNzZXRFcnJvciIsImRhdGEiLCJjYXRjaCIsIkpTT04iLCJwYXJzZSIsIk1hdGgiLCJyYW5kb20iLCJ0b1N0cmluZyIsImhhbmRsZUhhcmROYXZpZ2F0aW9uIiwiYWRkTG9jYWxlIiwibG9jYWxlIiwiZ2V0Q2FuY2VsbGVkSGFuZGxlciIsImNhbmNlbCIsImNsYyIsImhhbmRsZUNhbmNlbGxlZCIsIlJvdXRlciIsInBhdGhuYW1lMSIsInF1ZXJ5MSIsImFzMSIsImluaXRpYWxQcm9wcyIsInBhZ2VMb2FkZXIiLCJBcHAiLCJ3cmFwQXBwIiwiQ29tcG9uZW50Iiwic3Vic2NyaXB0aW9uIiwiaXNGYWxsYmFjayIsImxvY2FsZXMiLCJkZWZhdWx0TG9jYWxlIiwiZG9tYWluTG9jYWxlcyIsImlzUHJldmlldyIsImlzUnNjIiwic2RjIiwiaXNGaXJzdFBvcFN0YXRlRXZlbnQiLCJfa2V5Iiwib25Qb3BTdGF0ZSIsImUiLCJzdGF0ZSIsImNoYW5nZVN0YXRlIiwiZ2V0VVJMIiwiX19OQSIsInJlbG9hZCIsIl9fTiIsImZvcmNlZFNjcm9sbCIsInN0cmluZ2lmeSIsIngiLCJwYWdlWE9mZnNldCIsInkiLCJwYWdlWU9mZnNldCIsImdldEl0ZW0iLCJlMSIsInBhcnNlUmVsYXRpdmVVcmwiLCJpc1NzciIsIl9icHMiLCJjaGFuZ2UiLCJzaGFsbG93IiwiX3NoYWxsb3ciLCJfaCIsImNvbXBvbmVudHMiLCJpbml0aWFsIiwicHJvcHMiLCJfX05fU1NHIiwiX19OX1NTUCIsIl9fTl9SU0MiLCJzdHlsZVNoZWV0cyIsImV2ZW50cyIsImF1dG9FeHBvcnREeW5hbWljIiwiX19ORVhUX0RBVEFfXyIsImF1dG9FeHBvcnQiLCJiYXNlUGF0aCIsIl9fTkVYVF9ST1VURVJfQkFTRVBBVEgiLCJzdWIiLCJfd3JhcEFwcCIsImlzTG9jYWxlRG9tYWluIiwiaXNSZWFkeSIsImdzc3AiLCJnaXAiLCJhcHBHaXAiLCJnc3AiLCJzZWFyY2giLCJfX05FWFRfSEFTX1JFV1JJVEVTIiwiX19ORVhUX0kxOE5fU1VQUE9SVCIsImRldGVjdERvbWFpbkxvY2FsZSIsImhvc3RuYW1lIiwiX2luaXRpYWxNYXRjaGVzTWlkZGxld2FyZVByb21pc2UiLCJtYXRjaGVzTWlkZGxld2FyZSIsIm1hdGNoZXMiLCJfc2hvdWxkUmVzb2x2ZUhyZWYiLCJhZGRFdmVudExpc3RlbmVyIiwic2Nyb2xsUmVzdG9yYXRpb24iLCJiYWNrIiwicHVzaCIsIl90aGlzIiwiaXNRdWVyeVVwZGF0aW5nIiwic2hvdWxkUmVzb2x2ZUhyZWYiLCJuZXh0U3RhdGUiLCJwcmV2TG9jYWxlIiwicGFyc2VkQXMiLCJsb2NhbGVQYXRoUmVzdWx0IiwiZGlkTmF2aWdhdGUiLCJkZXRlY3RlZERvbWFpbiIsImFzTm9CYXNlUGF0aCIsInNjcm9sbCIsInJvdXRlUHJvcHMiLCJjbGVhbmVkQXMiLCJsb2NhbGVDaGFuZ2UiLCJwYXJzZWQiLCJyZXdyaXRlcyIsImlzTWlkZGxld2FyZU1hdGNoIiwicmV3cml0ZXNSZXN1bHQiLCJyb3V0ZU1hdGNoIiwicm91dGVSZWdleCIsInNob3VsZEludGVycG9sYXRlIiwibWlzc2luZ1BhcmFtcyIsInJlZjIiLCJyZWYzIiwicm91dGVJbmZvIiwicHJlZml4ZWRBcyIsInJld3JpdGVBcyIsImxvY2FsZVJlc3VsdCIsImN1clJvdXRlTWF0Y2giLCJjb21wb25lbnQiLCJzY3JpcHRzIiwiZGVzdGluYXRpb24iLCJwYXJzZWRIcmVmIiwibmV3VXJsIiwibmV3QXMiLCJub3RGb3VuZFJvdXRlIiwiX3JvdXRlIiwiaXNWYWxpZFNoYWxsb3dSb3V0ZSIsIl9zY3JvbGwiLCJzaG91bGRTY3JvbGwiLCJyZXNldFNjcm9sbCIsImhhc2hSZWdleCIsInBhcnNlUGF0aCIsInJlbW92ZUJhc2VQYXRoIiwibm9ybWFsaXplTG9jYWxlUGF0aCIsImRldGVjdGVkTG9jYWxlIiwiZG9tYWluIiwiaHR0cCIsIlNUIiwicGVyZm9ybWFuY2UiLCJtYXJrIiwiX2luRmxpZ2h0Um91dGUiLCJlbWl0IiwicmVtb3ZlTG9jYWxlIiwib25seUFIYXNoQ2hhbmdlIiwic2Nyb2xsVG9IYXNoIiwiYWxsIiwiZ2V0UGFnZUxpc3QiLCJnZXRDbGllbnRCdWlsZE1hbmlmZXN0IiwiZ2V0TWlkZGxld2FyZUxpc3QiLCJfX3Jld3JpdGVzIiwidXJsSXNOZXciLCJwIiwiZXh0ZXJuYWxEZXN0IiwibWF0Y2hlZFBhZ2UiLCJmaWx0ZXIiLCJ3YXJuIiwiZ2V0Um91dGVJbmZvIiwidHlwZSIsInVuc3RhYmxlX3NjcmlwdExvYWRlciIsImNvbmNhdCIsInNjcmlwdCIsImhhbmRsZUNsaWVudFNjcmlwdExvYWQiLCJwYWdlUHJvcHMiLCJfX05fUkVESVJFQ1QiLCJfX05fUkVESVJFQ1RfQkFTRV9QQVRIIiwiX19OX1BSRVZJRVciLCJmZXRjaENvbXBvbmVudCIsInN0YXR1c0NvZGUiLCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIsImxhbmciLCJlcnIxIiwiaGFuZGxlUm91dGVJbmZvRXJyb3IiLCJsb2FkRXJyb3JGYWlsIiwiaXNBc3NldEVycm9yIiwiZ2V0SW5pdGlhbFByb3BzIiwicm91dGVJbmZvRXJyIiwicmVxdWVzdGVkUm91dGUiLCJyZWY0IiwicmVmNSIsImV4aXN0aW5nSW5mbyIsImNhY2hlZFJvdXRlSW5mbyIsImZldGNoTmV4dERhdGFQYXJhbXMiLCJpc1ZhbGlkRWxlbWVudFR5cGUiLCJ1c2VTdHJlYW1lZEZsaWdodERhdGEiLCJzaG91bGRGZXRjaERhdGEiLCJmbGlnaHRJbmZvIiwiZ2V0RGF0YUhyZWYiLCJza2lwSW50ZXJwb2xhdGlvbiIsIndpdGhNaWRkbGV3YXJlRWZmZWN0cyIsImZldGNoRGF0YSIsImVmZmVjdCIsInJlcyIsIm1vZCIsIl9fbmV4dF9yc2NfXyIsIl9nZXREYXRhIiwiX2dldEZsaWdodERhdGEiLCJfX2ZsaWdodF9fIiwiZ2V0UHJvcGVyRXJyb3IiLCJiZWZvcmVQb3BTdGF0ZSIsImNiIiwib2xkVXJsTm9IYXNoIiwib2xkSGFzaCIsIm5ld1VybE5vSGFzaCIsIm5ld0hhc2giLCJzY3JvbGxUbyIsInJhd0hhc2giLCJkZWNvZGVVUklDb21wb25lbnQiLCJpZEVsIiwiZ2V0RWxlbWVudEJ5SWQiLCJzY3JvbGxJbnRvVmlldyIsIm5hbWVFbCIsImdldEVsZW1lbnRzQnlOYW1lIiwicHJlZmV0Y2giLCJfaXNTc2ciLCJpc1NzZyIsInByaW9yaXR5IiwiY29tcG9uZW50UmVzdWx0IiwibG9hZFBhZ2UiLCJjdHgiLCJBcHBUcmVlIiwibG9hZEdldEluaXRpYWxQcm9wcyIsIml0ZW1zIiwicmVnZXgiLCJzc3IiLCJSZWdFeHAiLCJnZXRNaWRkbGV3YXJlRGF0YSIsIl9lcnIiLCJuZXh0Q29uZmlnIiwiaTE4biIsInRyYWlsaW5nU2xhc2giLCJCb29sZWFuIiwiX19ORVhUX1RSQUlMSU5HX1NMQVNIIiwicmV3cml0ZUhlYWRlciIsInJld3JpdGVUYXJnZXQiLCJtYXRjaGVkUGF0aCIsInBhcnNlZFJld3JpdGVUYXJnZXQiLCJwYXRobmFtZUluZm8iLCJnZXROZXh0UGF0aG5hbWVJbmZvIiwicGFyc2VEYXRhIiwiZnNQYXRobmFtZSIsInBhcnNlZFNvdXJjZSIsInBhdGgiLCJzcmMiLCJmb3JtYXROZXh0UGF0aG5hbWVJbmZvIiwiYnVpbGRJZCIsInJlZGlyZWN0VGFyZ2V0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../node_modules/next/dist/shared/lib/router/router.js\n"));
+eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar _classCallCheck = (__webpack_require__(/*! @swc/helpers/lib/_class_call_check.js */ \"../node_modules/@swc/helpers/lib/_class_call_check.js\")[\"default\"]);\nvar _createClass = (__webpack_require__(/*! @swc/helpers/lib/_create_class.js */ \"../node_modules/@swc/helpers/lib/_create_class.js\")[\"default\"]);\nvar _interopRequireDefault = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _slicedToArray = (__webpack_require__(/*! @swc/helpers/lib/_sliced_to_array.js */ \"../node_modules/@swc/helpers/lib/_sliced_to_array.js\")[\"default\"]);\nvar _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs = /*#__PURE__*/ _interopRequireDefault(__webpack_require__(/*! ../node_modules/next/dist/compiled/regenerator-runtime/runtime.js */ \"../node_modules/next/dist/compiled/regenerator-runtime/runtime.js\"));\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.isLocalURL = isLocalURL;\nexports.interpolateAs = interpolateAs;\nexports.resolveHref = resolveHref;\nexports.createKey = createKey;\nexports[\"default\"] = void 0;\nvar _normalizeTrailingSlash = __webpack_require__(/*! ../../../client/normalize-trailing-slash */ \"../node_modules/next/dist/client/normalize-trailing-slash.js\");\nvar _removeTrailingSlash = __webpack_require__(/*! ./utils/remove-trailing-slash */ \"../node_modules/next/dist/shared/lib/router/utils/remove-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 */ \"../node_modules/next/dist/shared/lib/page-path/denormalize-page-path.js\");\nvar _normalizeLocalePath = __webpack_require__(/*! ../i18n/normalize-locale-path */ \"../node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js\");\nvar _mitt = _interopRequireDefault1(__webpack_require__(/*! ../mitt */ \"../node_modules/next/dist/shared/lib/mitt.js\"));\nvar _utils = __webpack_require__(/*! ../utils */ \"../node_modules/next/dist/shared/lib/utils.js\");\nvar _isDynamic = __webpack_require__(/*! ./utils/is-dynamic */ \"../node_modules/next/dist/shared/lib/router/utils/is-dynamic.js\");\nvar _parseRelativeUrl = __webpack_require__(/*! ./utils/parse-relative-url */ \"../node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js\");\nvar _querystring = __webpack_require__(/*! ./utils/querystring */ \"../node_modules/next/dist/shared/lib/router/utils/querystring.js\");\nvar _resolveRewrites = _interopRequireDefault1(__webpack_require__(/*! ./utils/resolve-rewrites */ \"?36cb\"));\nvar _routeMatcher = __webpack_require__(/*! ./utils/route-matcher */ \"../node_modules/next/dist/shared/lib/router/utils/route-matcher.js\");\nvar _routeRegex = __webpack_require__(/*! ./utils/route-regex */ \"../node_modules/next/dist/shared/lib/router/utils/route-regex.js\");\nvar _formatUrl = __webpack_require__(/*! ./utils/format-url */ \"../node_modules/next/dist/shared/lib/router/utils/format-url.js\");\nvar _detectDomainLocale = __webpack_require__(/*! ../../../client/detect-domain-locale */ \"../node_modules/next/dist/client/detect-domain-locale.js\");\nvar _parsePath = __webpack_require__(/*! ./utils/parse-path */ \"../node_modules/next/dist/shared/lib/router/utils/parse-path.js\");\nvar _addLocale = __webpack_require__(/*! ../../../client/add-locale */ \"../node_modules/next/dist/client/add-locale.js\");\nvar _removeLocale = __webpack_require__(/*! ../../../client/remove-locale */ \"../node_modules/next/dist/client/remove-locale.js\");\nvar _removeBasePath = __webpack_require__(/*! ../../../client/remove-base-path */ \"../node_modules/next/dist/client/remove-base-path.js\");\nvar _addBasePath = __webpack_require__(/*! ../../../client/add-base-path */ \"../node_modules/next/dist/client/add-base-path.js\");\nvar _hasBasePath = __webpack_require__(/*! ../../../client/has-base-path */ \"../node_modules/next/dist/client/has-base-path.js\");\nvar _getNextPathnameInfo = __webpack_require__(/*! ./utils/get-next-pathname-info */ \"../node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js\");\nvar _formatNextPathnameInfo = __webpack_require__(/*! ./utils/format-next-pathname-info */ \"../node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js\");\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self1 = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self1, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _extends() {\n _extends = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _interopRequireDefault1(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n return cache;\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache();\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction buildCancellationError() {\n return Object.assign(new Error(\"Route Cancelled\"), {\n cancelled: true\n });\n}\nfunction isLocalURL(url) {\n // prevent a hydration mismatch on href for url with anchor refs\n if (!(0, _utils).isAbsoluteUrl(url)) return true;\n try {\n // absolute urls can be local if they are on the same origin\n var locationOrigin = (0, _utils).getLocationOrigin();\n var resolved = new URL(url, locationOrigin);\n return resolved.origin === locationOrigin && (0, _hasBasePath).hasBasePath(resolved.pathname);\n } catch (_) {\n return false;\n }\n}\nfunction interpolateAs(route, asPathname, query) {\n var interpolatedRoute = \"\";\n var dynamicRegex = (0, _routeRegex).getRouteRegex(route);\n var dynamicGroups = dynamicRegex.groups;\n var 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 var params = Object.keys(dynamicGroups);\n if (!params.every(function(param) {\n var value = dynamicMatches[param] || \"\";\n var _param = dynamicGroups[param], repeat = _param.repeat, optional = _param.optional;\n // support single-level catch-all\n // TODO: more robust handling for user-error (passing `/`)\n var replaced = \"[\".concat(repeat ? \"...\" : \"\").concat(param, \"]\");\n if (optional) {\n replaced = \"\".concat(!value ? \"/\" : \"\", \"[\").concat(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 function(segment) {\n return 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: params,\n result: interpolatedRoute\n };\n}\nfunction omit(object, keys) {\n var omitted = {};\n Object.keys(object).forEach(function(key) {\n if (!keys.includes(key)) {\n omitted[key] = object[key];\n }\n });\n return omitted;\n}\nfunction resolveHref(router, href, resolveAs) {\n // we use a dummy base url for relative urls\n var base;\n var 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 var urlProtoMatch = urlAsString.match(/^[a-zA-Z]{1,}:\\/\\//);\n var urlAsStringNoProto = urlProtoMatch ? urlAsString.slice(urlProtoMatch[0].length) : urlAsString;\n var urlParts = urlAsStringNoProto.split(\"?\");\n if ((urlParts[0] || \"\").match(/(\\/\\/|\\\\)/)) {\n console.error(\"Invalid href passed to next/router: \".concat(urlAsString, \", repeated forward-slashes (//) or backslashes \\\\ are not valid in the href\"));\n var 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 var finalUrl = new URL(urlAsString, base);\n finalUrl.pathname = (0, _normalizeTrailingSlash).normalizePathTrailingSlash(finalUrl.pathname);\n var interpolatedAs = \"\";\n if ((0, _isDynamic).isDynamicRoute(finalUrl.pathname) && finalUrl.searchParams && resolveAs) {\n var query = (0, _querystring).searchParamsToUrlQuery(finalUrl.searchParams);\n var ref = interpolateAs(finalUrl.pathname, finalUrl.pathname, query), result = ref.result, params = ref.params;\n if (result) {\n interpolatedAs = (0, _formatUrl).formatWithValidation({\n pathname: result,\n hash: finalUrl.hash,\n query: omit(query, params)\n });\n }\n }\n // if the origin didn't change, it means we received a relative href\n var 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 var 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 var ref = _slicedToArray(resolveHref(router, url, true), 2), resolvedHref = ref[0], resolvedAs = ref[1];\n var origin = (0, _utils).getLocationOrigin();\n var hrefHadOrigin = resolvedHref.startsWith(origin);\n var asHadOrigin = resolvedAs && resolvedAs.startsWith(origin);\n resolvedHref = stripOrigin(resolvedHref);\n resolvedAs = resolvedAs ? stripOrigin(resolvedAs) : resolvedAs;\n var preparedUrl = hrefHadOrigin ? resolvedHref : (0, _addBasePath).addBasePath(resolvedHref);\n var preparedAs = as ? stripOrigin(resolveHref(router, as)) : resolvedAs || resolvedHref;\n return {\n url: preparedUrl,\n as: asHadOrigin ? preparedAs : (0, _addBasePath).addBasePath(preparedAs)\n };\n}\nfunction resolveDynamicRoute(pathname, pages) {\n var cleanPathname = (0, _removeTrailingSlash).removeTrailingSlash((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(function(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, _removeTrailingSlash).removeTrailingSlash(pathname);\n}\nvar manualScrollRestoration = false && 0;\nvar SSG_DATA_NOT_FOUND = Symbol(\"SSG_DATA_NOT_FOUND\");\nfunction fetchRetry(url, attempts, options) {\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 method: options.method || \"GET\",\n headers: Object.assign({}, options.headers, {\n \"x-nextjs-data\": \"1\"\n })\n }).then(function(response) {\n return !response.ok && attempts > 1 && response.status >= 500 ? fetchRetry(url, attempts - 1, options) : response;\n });\n}\nvar backgroundCache = {};\nfunction fetchNextData(param) {\n var dataHref = param.dataHref, inflightCache = param.inflightCache, isPrefetch = param.isPrefetch, hasMiddleware = param.hasMiddleware, isServerRender = param.isServerRender, parseJSON = param.parseJSON, persistCache = param.persistCache, isBackground = param.isBackground, unstable_skipClientCache = param.unstable_skipClientCache;\n var ref = new URL(dataHref, window.location.href), cacheKey = ref.href;\n var ref1;\n var getData = function(params) {\n return fetchRetry(dataHref, isServerRender ? 3 : 1, {\n headers: isPrefetch ? {\n purpose: \"prefetch\"\n } : {},\n method: (ref1 = params == null ? void 0 : params.method) != null ? ref1 : \"GET\"\n }).then(function(response) {\n if (response.ok && (params == null ? void 0 : params.method) === \"HEAD\") {\n return {\n dataHref: dataHref,\n response: response,\n text: \"\",\n json: {}\n };\n }\n return response.text().then(function(text) {\n if (!response.ok) {\n /**\n * When the data response is a redirect because of a middleware\n * we do not consider it an error. The headers must bring the\n * mapped location.\n * TODO: Change the status code in the handler.\n */ if (hasMiddleware && [\n 301,\n 302,\n 307,\n 308\n ].includes(response.status)) {\n return {\n dataHref: dataHref,\n response: response,\n text: text,\n json: {}\n };\n }\n if (response.status === 404) {\n var ref;\n if ((ref = tryToParseAsJSON(text)) == null ? void 0 : ref.notFound) {\n return {\n dataHref: dataHref,\n json: {\n notFound: SSG_DATA_NOT_FOUND\n },\n response: response,\n text: text\n };\n }\n /**\n * If there is a 404 that is not for SSG we used to fail but if\n * there is a middleware we must respond with an empty object.\n * For now we will return the data when there is a middleware.\n * TODO: Update the server to success on these requests.\n */ if (hasMiddleware) {\n return {\n dataHref: dataHref,\n response: response,\n text: text,\n json: {}\n };\n }\n }\n var error = new Error(\"Failed to load static props\");\n /**\n * We should only trigger a server-side transition if this was\n * caused on a client-side transition. Otherwise, we'd get into\n * an infinite loop.\n */ if (!isServerRender) {\n (0, _routeLoader).markAssetError(error);\n }\n throw error;\n }\n return {\n dataHref: dataHref,\n json: parseJSON ? tryToParseAsJSON(text) : {},\n response: response,\n text: text\n };\n });\n }).then(function(data) {\n if (!persistCache || \"development\" !== \"production\" || 0) {\n delete inflightCache[cacheKey];\n }\n return data;\n }).catch(function(err) {\n delete inflightCache[cacheKey];\n throw err;\n });\n };\n // when skipping client cache we wait to update\n // inflight cache until successful data response\n // this allows racing click event with fetching newer data\n // without blocking navigation when stale data is available\n if (unstable_skipClientCache && persistCache) {\n return getData({}).then(function(data) {\n inflightCache[cacheKey] = Promise.resolve(data);\n return data;\n });\n }\n if (inflightCache[cacheKey] !== undefined) {\n return inflightCache[cacheKey];\n }\n return inflightCache[cacheKey] = getData(isBackground ? {\n method: \"HEAD\"\n } : {});\n}\nfunction tryToParseAsJSON(text) {\n try {\n return JSON.parse(text);\n } catch (error) {\n return {};\n }\n}\nfunction createKey() {\n return Math.random().toString(36).slice(2, 10);\n}\nfunction handleHardNavigation(param) {\n var url = param.url, router = param.router;\n // ensure we don't trigger a hard navigation to the same\n // URL as this can end up with an infinite refresh\n if (url === (0, _addBasePath).addBasePath((0, _addLocale).addLocale(router.asPath, router.locale))) {\n throw new Error(\"Invariant: attempted to hard navigate to the same URL \".concat(url, \" \").concat(location.href));\n }\n window.location.href = url;\n}\nvar getCancelledHandler = function(param) {\n var route = param.route, router = param.router;\n var cancelled = false;\n var cancel = router.clc = function() {\n cancelled = true;\n };\n var handleCancelled = function() {\n if (cancelled) {\n var error = new Error('Abort fetching component for route: \"'.concat(route, '\"'));\n error.cancelled = true;\n throw error;\n }\n if (cancel === router.clc) {\n router.clc = null;\n }\n };\n return handleCancelled;\n};\nvar Router = /*#__PURE__*/ function() {\n function Router(pathname1, query1, as1, param) {\n var initialProps = param.initialProps, pageLoader = param.pageLoader, App = param.App, wrapApp = param.wrapApp, Component = param.Component, err = param.err, subscription = param.subscription, isFallback = param.isFallback, locale = param.locale, locales = param.locales, defaultLocale = param.defaultLocale, domainLocales = param.domainLocales, isPreview = param.isPreview, isRsc = param.isRsc;\n var _this = this;\n _classCallCheck(this, Router);\n // Server Data Cache\n this.sdc = {};\n this.isFirstPopStateEvent = true;\n this._key = createKey();\n this.onPopState = function(e) {\n var isFirstPopStateEvent = _this.isFirstPopStateEvent;\n _this.isFirstPopStateEvent = false;\n var 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 var pathname = _this.pathname, query = _this.query;\n _this.changeState(\"replaceState\", (0, _formatUrl).formatWithValidation({\n pathname: (0, _addBasePath).addBasePath(pathname),\n query: query\n }), (0, _utils).getURL());\n return;\n }\n // __NA is used to identify if the history entry can be handled by the app-router.\n if (state.__NA) {\n window.location.reload();\n return;\n }\n if (!state.__N) {\n return;\n }\n // Safari fires popstateevent when reopening the browser.\n if (isFirstPopStateEvent && _this.locale === state.options.locale && state.as === _this.asPath) {\n return;\n }\n var forcedScroll;\n var url = state.url, as = state.as, options = state.options, key = state.key;\n if (false) { var v; }\n _this._key = key;\n var pathname1 = (0, _parseRelativeUrl).parseRelativeUrl(url).pathname;\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 === (0, _addBasePath).addBasePath(_this.asPath) && pathname1 === (0, _addBasePath).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 // @ts-ignore internal value not exposed on types\n _h: 0\n }), forcedScroll);\n };\n // represents the current component key\n var route = (0, _removeTrailingSlash).removeTrailingSlash(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: Component,\n initial: true,\n props: initialProps,\n err: 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 var autoExportDynamic = (0, _isDynamic).isDynamicRoute(pathname1) && self.__NEXT_DATA__.autoExport;\n this.basePath = false || \"\";\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: route,\n pathname: pathname1,\n query: query1,\n asPath: autoExportDynamic ? pathname1 : as1,\n isPreview: !!isPreview,\n locale: false ? 0 : undefined,\n isFallback: isFallback\n };\n this._initialMatchesMiddlewarePromise = Promise.resolve(false);\n if (true) {\n // make sure \"as\" doesn't start with double slashes or else it can\n // throw an error as it's considered invalid\n if (!as1.startsWith(\"//\")) {\n // in order for `e.state` to work on the `onpopstate` event\n // we have to register the initial route upon initialization\n var options = {\n locale: locale\n };\n var asPath = (0, _utils).getURL();\n this._initialMatchesMiddlewarePromise = matchesMiddleware({\n router: this,\n locale: locale,\n asPath: asPath\n }).then(function(matches) {\n options._shouldResolveHref = as1 !== pathname1;\n _this.changeState(\"replaceState\", matches ? asPath : (0, _formatUrl).formatWithValidation({\n pathname: (0, _addBasePath).addBasePath(pathname1),\n query: query1\n }), asPath, options);\n return matches;\n });\n }\n window.addEventListener(\"popstate\", this.onPopState);\n // enable custom scroll restoration handling when available\n // otherwise fallback to browser's default handling\n if (false) {}\n }\n }\n _createClass(Router, [\n {\n key: \"reload\",\n value: function reload() {\n window.location.reload();\n }\n },\n {\n /**\n * Go back in history\n */ key: \"back\",\n value: function back() {\n window.history.back();\n }\n },\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 */ key: \"push\",\n value: function push(url, as) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n if (false) {}\n var ref;\n ref = prepareUrlAs(this, url, as), url = ref.url, as = ref.as, ref;\n return this.change(\"pushState\", url, as, options);\n }\n },\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 */ key: \"replace\",\n value: function replace(url, as) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var ref;\n ref = prepareUrlAs(this, url, as), url = ref.url, as = ref.as, ref;\n return this.change(\"replaceState\", url, as, options);\n }\n },\n {\n key: \"change\",\n value: function change(method, url, as, options, forcedScroll) {\n var _this = this;\n return _asyncToGenerator(_cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.mark(function _callee() {\n var isQueryUpdating, shouldResolveHref, nextState, isSsr, prevLocale, parsedAs, localePathResult, didNavigate, ref, detectedDomain, asNoBasePath, _shallow, shallow, _scroll, scroll, routeProps, cleanedAs, localeChange, parsed, pathname, query, pages, rewrites, ref1, ref2, resolvedAs, isMiddlewareMatch, rewritesResult, route, routeMatch, parsedAs1, asPathname, routeRegex, shouldInterpolate, interpolatedAs, missingParams, ref21, ref3, routeInfo, prefixedAs, rewriteAs, localeResult, routeRegex1, curRouteMatch, error, props, __N_SSG, __N_SSP, component, scripts, destination, parsedHref, ref4, newUrl, newAs, notFoundRoute, _route, isValidShallowRoute, _scroll1, shouldScroll, resetScroll, hashRegex;\n return _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n if (isLocalURL(url)) {\n _ctx.next = 3;\n break;\n }\n handleHardNavigation({\n url: url,\n router: _this\n });\n return _ctx.abrupt(\"return\", false);\n case 3:\n isQueryUpdating = options._h;\n shouldResolveHref = isQueryUpdating || options._shouldResolveHref || (0, _parsePath).parsePath(url).pathname === (0, _parsePath).parsePath(as).pathname;\n nextState = _extends({}, _this.state);\n // for static pages with query params in the URL we delay\n // marking the router ready until after the query is updated\n // or a navigation has occurred\n _this.isReady = true;\n isSsr = _this.isSsr;\n if (!isQueryUpdating) {\n _this.isSsr = false;\n }\n if (!(isQueryUpdating && _this.clc)) {\n _ctx.next = 11;\n break;\n }\n return _ctx.abrupt(\"return\", false);\n case 11:\n prevLocale = nextState.locale;\n if (true) {\n _ctx.next = 24;\n break;\n }\n nextState.locale = options.locale === false ? _this.defaultLocale : options.locale || nextState.locale;\n if (typeof options.locale === \"undefined\") {\n options.locale = nextState.locale;\n }\n parsedAs = (0, _parseRelativeUrl).parseRelativeUrl((0, _hasBasePath).hasBasePath(as) ? (0, _removeBasePath).removeBasePath(as) : as);\n localePathResult = (0, _normalizeLocalePath).normalizeLocalePath(parsedAs.pathname, _this.locales);\n if (localePathResult.detectedLocale) {\n nextState.locale = localePathResult.detectedLocale;\n parsedAs.pathname = (0, _addBasePath).addBasePath(parsedAs.pathname);\n as = (0, _formatUrl).formatWithValidation(parsedAs);\n url = (0, _addBasePath).addBasePath((0, _normalizeLocalePath).normalizeLocalePath((0, _hasBasePath).hasBasePath(url) ? (0, _removeBasePath).removeBasePath(url) : url, _this.locales).pathname);\n }\n didNavigate = false;\n // we need to wrap this in the env check again since regenerator runtime\n // moves this on its own due to the return\n if (false) {}\n detectedDomain = (0, _detectDomainLocale).detectDomainLocale(_this.domainLocales, undefined, nextState.locale);\n // we need to wrap this in the env check again since regenerator runtime\n // moves this on its own due to the return\n if (false) {}\n if (!didNavigate) {\n _ctx.next = 24;\n break;\n }\n return _ctx.abrupt(\"return\", new Promise(function() {}));\n case 24:\n // marking route changes as a navigation start entry\n if (_utils.ST) {\n performance.mark(\"routeChange\");\n }\n _shallow = options.shallow, shallow = _shallow === void 0 ? false : _shallow, _scroll = options.scroll, scroll = _scroll === void 0 ? true : _scroll;\n routeProps = {\n shallow: shallow\n };\n if (_this._inFlightRoute && _this.clc) {\n if (!isSsr) {\n Router.events.emit(\"routeChangeError\", buildCancellationError(), _this._inFlightRoute, routeProps);\n }\n _this.clc();\n _this.clc = null;\n }\n as = (0, _addBasePath).addBasePath((0, _addLocale).addLocale((0, _hasBasePath).hasBasePath(as) ? (0, _removeBasePath).removeBasePath(as) : as, options.locale, _this.defaultLocale));\n cleanedAs = (0, _removeLocale).removeLocale((0, _hasBasePath).hasBasePath(as) ? (0, _removeBasePath).removeBasePath(as) : as, nextState.locale);\n _this._inFlightRoute = as;\n localeChange = prevLocale !== nextState.locale;\n if (!(!isQueryUpdating && _this.onlyAHashChange(cleanedAs) && !localeChange)) {\n _ctx.next = 48;\n break;\n }\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, _extends({}, options, {\n scroll: false\n }));\n if (scroll) {\n _this.scrollToHash(cleanedAs);\n }\n _ctx.prev = 37;\n _ctx.next = 40;\n return _this.set(nextState, _this.components[nextState.route], null);\n case 40:\n _ctx.next = 46;\n break;\n case 42:\n _ctx.prev = 42;\n _ctx.t0 = _ctx[\"catch\"](37);\n if ((0, _isError).default(_ctx.t0) && _ctx.t0.cancelled) {\n Router.events.emit(\"routeChangeError\", _ctx.t0, cleanedAs, routeProps);\n }\n throw _ctx.t0;\n case 46:\n Router.events.emit(\"hashChangeComplete\", as, routeProps);\n return _ctx.abrupt(\"return\", true);\n case 48:\n parsed = (0, _parseRelativeUrl).parseRelativeUrl(url);\n pathname = parsed.pathname, query = parsed.query;\n ;\n _ctx.prev = 51;\n ;\n _ctx.t1 = _slicedToArray;\n _ctx.next = 56;\n return Promise.all([\n _this.pageLoader.getPageList(),\n (0, _routeLoader).getClientBuildManifest(),\n _this.pageLoader.getMiddlewareList(), \n ]);\n case 56:\n _ctx.t2 = _ctx.sent;\n ref1 = (0, _ctx.t1)(_ctx.t2, 2);\n pages = ref1[0];\n ref2 = ref1[1], rewrites = ref2.__rewrites, ref2;\n ref1;\n _ctx.next = 67;\n break;\n case 63:\n _ctx.prev = 63;\n _ctx.t3 = _ctx[\"catch\"](51);\n // If we fail to resolve the page list or client-build manifest, we must\n // do a server-side transition:\n handleHardNavigation({\n url: as,\n router: _this\n });\n return _ctx.abrupt(\"return\", false);\n case 67:\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 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, _removeTrailingSlash).removeTrailingSlash((0, _removeBasePath).removeBasePath(pathname)) : pathname;\n _ctx.next = 72;\n return matchesMiddleware({\n asPath: as,\n locale: nextState.locale,\n router: _this\n });\n case 72:\n isMiddlewareMatch = _ctx.sent;\n if (options.shallow && isMiddlewareMatch) {\n pathname = _this.pathname;\n }\n if (!(shouldResolveHref && pathname !== \"/_error\")) {\n _ctx.next = 86;\n break;\n }\n options._shouldResolveHref = true;\n if (true) {\n _ctx.next = 85;\n break;\n }\n rewritesResult = (0, _resolveRewrites).default((0, _addBasePath).addBasePath((0, _addLocale).addLocale(cleanedAs, nextState.locale), true), pages, rewrites, query, function(p) {\n return resolveDynamicRoute(p, pages);\n }, _this.locales);\n if (!rewritesResult.externalDest) {\n _ctx.next = 81;\n break;\n }\n handleHardNavigation({\n url: as,\n router: _this\n });\n return _ctx.abrupt(\"return\", true);\n case 81:\n if (!isMiddlewareMatch) {\n resolvedAs = rewritesResult.asPath;\n }\n if (rewritesResult.matchedPage && rewritesResult.resolvedHref) {\n // if this directly matches a page we need to update the href to\n // allow the correct page chunk to be loaded\n pathname = rewritesResult.resolvedHref;\n parsed.pathname = (0, _addBasePath).addBasePath(pathname);\n if (!isMiddlewareMatch) {\n url = (0, _formatUrl).formatWithValidation(parsed);\n }\n }\n _ctx.next = 86;\n break;\n case 85:\n {\n parsed.pathname = resolveDynamicRoute(pathname, pages);\n if (parsed.pathname !== pathname) {\n pathname = parsed.pathname;\n parsed.pathname = (0, _addBasePath).addBasePath(pathname);\n if (!isMiddlewareMatch) {\n url = (0, _formatUrl).formatWithValidation(parsed);\n }\n }\n }\n case 86:\n if (isLocalURL(as)) {\n _ctx.next = 91;\n break;\n }\n if (false) {}\n throw new Error('Invalid href: \"'.concat(url, '\" and as: \"').concat(as, '\", received relative href and external as') + \"\\nSee more info: https://nextjs.org/docs/messages/invalid-relative-url-external-as\");\n case 89:\n handleHardNavigation({\n url: as,\n router: _this\n });\n return _ctx.abrupt(\"return\", false);\n case 91:\n resolvedAs = (0, _removeLocale).removeLocale((0, _removeBasePath).removeBasePath(resolvedAs), nextState.locale);\n route = (0, _removeTrailingSlash).removeTrailingSlash(pathname);\n routeMatch = false;\n if (!(0, _isDynamic).isDynamicRoute(route)) {\n _ctx.next = 109;\n break;\n }\n parsedAs1 = (0, _parseRelativeUrl).parseRelativeUrl(resolvedAs);\n asPathname = parsedAs1.pathname;\n routeRegex = (0, _routeRegex).getRouteRegex(route);\n routeMatch = (0, _routeMatcher).getRouteMatcher(routeRegex)(asPathname);\n shouldInterpolate = route === asPathname;\n interpolatedAs = shouldInterpolate ? interpolateAs(route, asPathname, query) : {};\n if (!(!routeMatch || shouldInterpolate && !interpolatedAs.result)) {\n _ctx.next = 108;\n break;\n }\n missingParams = Object.keys(routeRegex.groups).filter(function(param) {\n return !query[param];\n });\n if (!(missingParams.length > 0 && !isMiddlewareMatch)) {\n _ctx.next = 106;\n break;\n }\n if (true) {\n console.warn(\"\".concat(shouldInterpolate ? \"Interpolating href\" : \"Mismatching `as` and `href`\", \" failed to manually provide \") + \"the params: \".concat(missingParams.join(\", \"), \" in the `href`'s `query`\"));\n }\n throw new Error((shouldInterpolate ? \"The provided `href` (\".concat(url, \") value is missing query values (\").concat(missingParams.join(\", \"), \") to be interpolated properly. \") : \"The provided `as` value (\".concat(asPathname, \") is incompatible with the `href` value (\").concat(route, \"). \")) + \"Read more: https://nextjs.org/docs/messages/\".concat(shouldInterpolate ? \"href-interpolation-failed\" : \"incompatible-href-as\"));\n case 106:\n _ctx.next = 109;\n break;\n case 108:\n if (shouldInterpolate) {\n as = (0, _formatUrl).formatWithValidation(Object.assign({}, parsedAs1, {\n pathname: interpolatedAs.result,\n query: omit(query, interpolatedAs.params)\n }));\n } else {\n // Merge params into `query`, overwriting any specified in search\n Object.assign(query, routeMatch);\n }\n case 109:\n if (!isQueryUpdating) {\n Router.events.emit(\"routeChangeStart\", as, routeProps);\n }\n _ctx.prev = 110;\n ;\n _ctx.next = 114;\n return _this.getRouteInfo({\n route: route,\n pathname: pathname,\n query: query,\n as: as,\n resolvedAs: resolvedAs,\n routeProps: routeProps,\n locale: nextState.locale,\n isPreview: nextState.isPreview,\n hasMiddleware: isMiddlewareMatch\n });\n case 114:\n routeInfo = _ctx.sent;\n if (\"route\" in routeInfo && isMiddlewareMatch) {\n pathname = routeInfo.route || route;\n route = pathname;\n query = Object.assign({}, routeInfo.query || {}, query);\n if (routeMatch && pathname !== parsed.pathname) {\n Object.keys(routeMatch).forEach(function(key) {\n if (routeMatch && query[key] === routeMatch[key]) {\n delete query[key];\n }\n });\n }\n if ((0, _isDynamic).isDynamicRoute(pathname)) {\n prefixedAs = routeInfo.resolvedAs || (0, _addBasePath).addBasePath((0, _addLocale).addLocale(as, nextState.locale), true);\n rewriteAs = prefixedAs;\n if ((0, _hasBasePath).hasBasePath(rewriteAs)) {\n rewriteAs = (0, _removeBasePath).removeBasePath(rewriteAs);\n }\n if (false) {}\n routeRegex1 = (0, _routeRegex).getRouteRegex(pathname);\n curRouteMatch = (0, _routeMatcher).getRouteMatcher(routeRegex1)(rewriteAs);\n if (curRouteMatch) {\n Object.assign(query, curRouteMatch);\n }\n }\n }\n if (!(\"type\" in routeInfo)) {\n _ctx.next = 123;\n break;\n }\n if (!(routeInfo.type === \"redirect-internal\")) {\n _ctx.next = 121;\n break;\n }\n return _ctx.abrupt(\"return\", _this.change(method, routeInfo.newUrl, routeInfo.newAs, options));\n case 121:\n handleHardNavigation({\n url: routeInfo.destination,\n router: _this\n });\n return _ctx.abrupt(\"return\", new Promise(function() {}));\n case 123:\n error = routeInfo.error, props = routeInfo.props, __N_SSG = routeInfo.__N_SSG, __N_SSP = routeInfo.__N_SSP;\n component = routeInfo.Component;\n if (component && component.unstable_scriptLoader) {\n scripts = [].concat(component.unstable_scriptLoader());\n scripts.forEach(function(script) {\n (0, _script).handleClientScriptLoad(script.props);\n });\n }\n if (!((__N_SSG || __N_SSP) && props)) {\n _ctx.next = 154;\n break;\n }\n if (!(props.pageProps && props.pageProps.__N_REDIRECT)) {\n _ctx.next = 137;\n break;\n }\n // Use the destination from redirect without adding locale\n options.locale = false;\n destination = props.pageProps.__N_REDIRECT;\n if (!(destination.startsWith(\"/\") && props.pageProps.__N_REDIRECT_BASE_PATH !== false)) {\n _ctx.next = 135;\n break;\n }\n parsedHref = (0, _parseRelativeUrl).parseRelativeUrl(destination);\n parsedHref.pathname = resolveDynamicRoute(parsedHref.pathname, pages);\n ref4 = prepareUrlAs(_this, destination, destination), newUrl = ref4.url, newAs = ref4.as;\n return _ctx.abrupt(\"return\", _this.change(method, newUrl, newAs, options));\n case 135:\n handleHardNavigation({\n url: destination,\n router: _this\n });\n return _ctx.abrupt(\"return\", new Promise(function() {}));\n case 137:\n nextState.isPreview = !!props.__N_PREVIEW;\n if (!(props.notFound === SSG_DATA_NOT_FOUND)) {\n _ctx.next = 154;\n break;\n }\n ;\n _ctx.prev = 140;\n _ctx.next = 143;\n return _this.fetchComponent(\"/404\");\n case 143:\n notFoundRoute = \"/404\";\n _ctx.next = 149;\n break;\n case 146:\n _ctx.prev = 146;\n _ctx.t4 = _ctx[\"catch\"](140);\n notFoundRoute = \"/_error\";\n case 149:\n _ctx.next = 151;\n return _this.getRouteInfo({\n route: notFoundRoute,\n pathname: notFoundRoute,\n query: query,\n as: as,\n resolvedAs: resolvedAs,\n routeProps: {\n shallow: false\n },\n locale: nextState.locale,\n isPreview: nextState.isPreview\n });\n case 151:\n routeInfo = _ctx.sent;\n if (!(\"type\" in routeInfo)) {\n _ctx.next = 154;\n break;\n }\n throw new Error(\"Unexpected middleware effect on /404\");\n case 154:\n Router.events.emit(\"beforeHistoryChange\", as, routeProps);\n _this.changeState(method, url, as, options);\n if (isQueryUpdating && pathname === \"/_error\" && ((ref21 = self.__NEXT_DATA__.props) == null ? void 0 : (ref3 = ref21.pageProps) == null ? void 0 : ref3.statusCode) === 500 && (props == null ? 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 ;\n isValidShallowRoute = options.shallow && nextState.route === ((_route = routeInfo.route) != null ? _route : route);\n ;\n shouldScroll = (_scroll1 = options.scroll) != null ? _scroll1 : !isValidShallowRoute;\n resetScroll = shouldScroll ? {\n x: 0,\n y: 0\n } : null;\n _ctx.next = 164;\n return _this.set(_extends({}, nextState, {\n route: route,\n pathname: pathname,\n query: query,\n asPath: cleanedAs,\n isFallback: false\n }), routeInfo, forcedScroll != null ? forcedScroll : resetScroll).catch(function(e) {\n if (e.cancelled) error = error || e;\n else throw e;\n });\n case 164:\n if (!error) {\n _ctx.next = 167;\n break;\n }\n if (!isQueryUpdating) {\n Router.events.emit(\"routeChangeError\", error, cleanedAs, routeProps);\n }\n throw error;\n case 167:\n if (false) {}\n if (!isQueryUpdating) {\n Router.events.emit(\"routeChangeComplete\", as, routeProps);\n }\n hashRegex = /#.+$/;\n if (shouldScroll && hashRegex.test(as)) {\n _this.scrollToHash(as);\n }\n return _ctx.abrupt(\"return\", true);\n case 174:\n _ctx.prev = 174;\n _ctx.t5 = _ctx[\"catch\"](110);\n if (!((0, _isError).default(_ctx.t5) && _ctx.t5.cancelled)) {\n _ctx.next = 178;\n break;\n }\n return _ctx.abrupt(\"return\", false);\n case 178:\n throw _ctx.t5;\n case 179:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee, null, [\n [\n 37,\n 42\n ],\n [\n 51,\n 63\n ],\n [\n 110,\n 174\n ],\n [\n 140,\n 146\n ]\n ]);\n }))();\n }\n },\n {\n key: \"changeState\",\n value: function changeState(method, url, as) {\n var options = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};\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.\".concat(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: url,\n as: as,\n options: options,\n __N: true,\n key: this._key = method !== \"pushState\" ? this._key : createKey()\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 },\n {\n key: \"handleRouteInfoError\",\n value: function handleRouteInfoError(err, pathname, query, as, routeProps, loadErrorFail) {\n var _this = this;\n return _asyncToGenerator(_cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.mark(function _callee() {\n var Component, styleSheets, props, ref, routeInfo;\n return _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n console.error(err);\n if (!err.cancelled) {\n _ctx.next = 3;\n break;\n }\n // bubble up cancellation errors\n throw err;\n case 3:\n if (!((0, _routeLoader).isAssetError(err) || loadErrorFail)) {\n _ctx.next = 7;\n break;\n }\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 handleHardNavigation({\n url: as,\n router: _this\n });\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 case 7:\n _ctx.prev = 7;\n ;\n ;\n ;\n if (!(typeof Component === \"undefined\" || typeof styleSheets === \"undefined\")) {\n _ctx.next = 19;\n break;\n }\n ;\n _ctx.next = 15;\n return _this.fetchComponent(\"/_error\");\n case 15:\n ref = _ctx.sent;\n Component = ref.page;\n styleSheets = ref.styleSheets;\n ref;\n case 19:\n routeInfo = {\n props: props,\n Component: Component,\n styleSheets: styleSheets,\n err: err,\n error: err\n };\n if (routeInfo.props) {\n _ctx.next = 31;\n break;\n }\n _ctx.prev = 21;\n _ctx.next = 24;\n return _this.getInitialProps(Component, {\n err: err,\n pathname: pathname,\n query: query\n });\n case 24:\n routeInfo.props = _ctx.sent;\n _ctx.next = 31;\n break;\n case 27:\n _ctx.prev = 27;\n _ctx.t0 = _ctx[\"catch\"](21);\n console.error(\"Error in error page `getInitialProps`: \", _ctx.t0);\n routeInfo.props = {};\n case 31:\n return _ctx.abrupt(\"return\", routeInfo);\n case 34:\n _ctx.prev = 34;\n _ctx.t1 = _ctx[\"catch\"](7);\n return _ctx.abrupt(\"return\", _this.handleRouteInfoError((0, _isError).default(_ctx.t1) ? _ctx.t1 : new Error(_ctx.t1 + \"\"), pathname, query, as, routeProps, true));\n case 37:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee, null, [\n [\n 7,\n 34\n ],\n [\n 21,\n 27\n ]\n ]);\n }))();\n }\n },\n {\n key: \"getRouteInfo\",\n value: function getRouteInfo(param) {\n var requestedRoute = param.route, pathname = param.pathname, query = param.query, as = param.as, resolvedAs = param.resolvedAs, routeProps = param.routeProps, locale = param.locale, hasMiddleware = param.hasMiddleware, isPreview = param.isPreview, unstable_skipClientCache = param.unstable_skipClientCache;\n var _this = this;\n return _asyncToGenerator(_cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.mark(function _callee() {\n var route, ref, ref4, ref5, handleCancelled, existingInfo, cachedRouteInfo, fetchNextDataParams, data, routeInfo, isValidElementType, useStreamedFlightData, shouldFetchData, props, cacheKey, flightInfo;\n return _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n route = requestedRoute;\n _ctx.prev = 1;\n ;\n handleCancelled = getCancelledHandler({\n route: route,\n router: _this\n });\n existingInfo = _this.components[route];\n if (!(routeProps.shallow && existingInfo && _this.route === route)) {\n _ctx.next = 7;\n break;\n }\n return _ctx.abrupt(\"return\", existingInfo);\n case 7:\n cachedRouteInfo = existingInfo && !(\"initial\" in existingInfo) && \"development\" !== \"development\" ? 0 : undefined;\n fetchNextDataParams = {\n dataHref: _this.pageLoader.getDataHref({\n href: (0, _formatUrl).formatWithValidation({\n pathname: pathname,\n query: query\n }),\n skipInterpolation: true,\n asPath: resolvedAs,\n locale: locale\n }),\n hasMiddleware: true,\n isServerRender: _this.isSsr,\n parseJSON: true,\n inflightCache: _this.sdc,\n persistCache: !isPreview,\n isPrefetch: false,\n unstable_skipClientCache: unstable_skipClientCache\n };\n _ctx.next = 11;\n return withMiddlewareEffects({\n fetchData: function() {\n return fetchNextData(fetchNextDataParams);\n },\n asPath: resolvedAs,\n locale: locale,\n router: _this\n });\n case 11:\n data = _ctx.sent;\n handleCancelled();\n if (!((data == null ? void 0 : (ref = data.effect) == null ? void 0 : ref.type) === \"redirect-internal\" || (data == null ? void 0 : (ref4 = data.effect) == null ? void 0 : ref4.type) === \"redirect-external\")) {\n _ctx.next = 15;\n break;\n }\n return _ctx.abrupt(\"return\", data.effect);\n case 15:\n if (!((data == null ? void 0 : (ref5 = data.effect) == null ? void 0 : ref5.type) === \"rewrite\")) {\n _ctx.next = 25;\n break;\n }\n route = (0, _removeTrailingSlash).removeTrailingSlash(data.effect.resolvedHref);\n pathname = data.effect.resolvedHref;\n query = _extends({}, query, data.effect.parsedAs.query);\n resolvedAs = data.effect.parsedAs.pathname;\n // Check again the cache with the new destination.\n existingInfo = _this.components[route];\n if (!(routeProps.shallow && existingInfo && _this.route === route && !hasMiddleware)) {\n _ctx.next = 24;\n break;\n }\n // If we have a match with the current route due to rewrite,\n // we can copy the existing information to the rewritten one.\n // Then, we return the information along with the matched route.\n _this.components[requestedRoute] = _extends({}, existingInfo, {\n route: route\n });\n return _ctx.abrupt(\"return\", _extends({}, existingInfo, {\n route: route\n }));\n case 24:\n cachedRouteInfo = existingInfo && !(\"initial\" in existingInfo) && \"development\" !== \"development\" ? 0 : undefined;\n case 25:\n if (!(route === \"/api\" || route.startsWith(\"/api/\"))) {\n _ctx.next = 28;\n break;\n }\n handleHardNavigation({\n url: as,\n router: _this\n });\n return _ctx.abrupt(\"return\", new Promise(function() {}));\n case 28:\n _ctx.t0 = cachedRouteInfo;\n if (_ctx.t0) {\n _ctx.next = 33;\n break;\n }\n _ctx.next = 32;\n return _this.fetchComponent(route).then(function(res) {\n return {\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 case 32:\n _ctx.t0 = _ctx.sent;\n case 33:\n routeInfo = _ctx.t0;\n if (false) {}\n isValidElementType = (__webpack_require__(/*! next/dist/compiled/react-is */ \"../node_modules/next/dist/compiled/react-is/index.js\").isValidElementType);\n if (isValidElementType(routeInfo.Component)) {\n _ctx.next = 38;\n break;\n }\n throw new Error('The default export is not a React Component in page: \"'.concat(pathname, '\"'));\n case 38:\n useStreamedFlightData = routeInfo.__N_RSC && ( true || 0);\n shouldFetchData = routeInfo.__N_SSG || routeInfo.__N_SSP || routeInfo.__N_RSC;\n _ctx.next = 42;\n return _this._getData(_asyncToGenerator(_cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.mark(function _callee() {\n var json;\n return _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n if (!(shouldFetchData && !useStreamedFlightData)) {\n _ctx.next = 8;\n break;\n }\n _ctx.t0 = data;\n if (_ctx.t0) {\n _ctx.next = 6;\n break;\n }\n _ctx.next = 5;\n return fetchNextData({\n dataHref: _this.pageLoader.getDataHref({\n href: (0, _formatUrl).formatWithValidation({\n pathname: pathname,\n query: query\n }),\n asPath: resolvedAs,\n locale: locale\n }),\n isServerRender: _this.isSsr,\n parseJSON: true,\n inflightCache: _this.sdc,\n persistCache: !isPreview,\n isPrefetch: false,\n unstable_skipClientCache: unstable_skipClientCache\n });\n case 5:\n _ctx.t0 = _ctx.sent;\n case 6:\n json = _ctx.t0.json;\n return _ctx.abrupt(\"return\", {\n props: json\n });\n case 8:\n _ctx.t1 = {};\n _ctx.next = 11;\n return _this.getInitialProps(routeInfo.Component, {\n pathname: pathname,\n query: query,\n asPath: as,\n locale: locale,\n locales: _this.locales,\n defaultLocale: _this.defaultLocale\n });\n case 11:\n _ctx.t2 = _ctx.sent;\n return _ctx.abrupt(\"return\", {\n headers: _ctx.t1,\n props: _ctx.t2\n });\n case 13:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee);\n })));\n case 42:\n props = _ctx.sent.props;\n // Only bust the data cache for SSP routes although\n // middleware can skip cache per request with\n // x-middleware-cache: no-cache as well\n if (routeInfo.__N_SSP && fetchNextDataParams.dataHref) {\n cacheKey = new URL(fetchNextDataParams.dataHref, window.location.href).href;\n delete _this.sdc[cacheKey];\n }\n // we kick off a HEAD request in the background\n // when a non-prefetch request is made to signal revalidation\n if (!_this.isPreview && routeInfo.__N_SSG && \"development\" !== \"development\") {}\n ;\n if (!routeInfo.__N_RSC) {\n _ctx.next = 56;\n break;\n }\n if (!useStreamedFlightData) {\n _ctx.next = 53;\n break;\n }\n _ctx.next = 50;\n return _this._getData(function() {\n return _this._getFlightData((0, _formatUrl).formatWithValidation({\n query: _extends({}, query, {\n __flight__: \"1\"\n }),\n pathname: (0, _isDynamic).isDynamicRoute(route) ? interpolateAs(pathname, (0, _parseRelativeUrl).parseRelativeUrl(resolvedAs).pathname, query).result : pathname\n }));\n });\n case 50:\n _ctx.t1 = _ctx.sent.data;\n _ctx.next = 54;\n break;\n case 53:\n _ctx.t1 = props.__flight__;\n case 54:\n _ctx.t2 = _ctx.t1;\n flightInfo = {\n __flight__: _ctx.t2\n };\n case 56:\n props.pageProps = Object.assign({}, props.pageProps, flightInfo);\n routeInfo.props = props;\n routeInfo.route = route;\n routeInfo.query = query;\n routeInfo.resolvedAs = resolvedAs;\n _this.components[route] = routeInfo;\n // If the route was rewritten in the process of fetching data,\n // we update the cache to allow hitting the same data for shallow requests.\n if (route !== requestedRoute) {\n _this.components[requestedRoute] = _extends({}, routeInfo, {\n route: route\n });\n }\n return _ctx.abrupt(\"return\", routeInfo);\n case 66:\n _ctx.prev = 66;\n _ctx.t3 = _ctx[\"catch\"](1);\n return _ctx.abrupt(\"return\", _this.handleRouteInfoError((0, _isError).getProperError(_ctx.t3), pathname, query, as, routeProps));\n case 69:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee, null, [\n [\n 1,\n 66\n ]\n ]);\n }))();\n }\n },\n {\n key: \"set\",\n value: function set(state, data, resetScroll) {\n this.state = state;\n return this.sub(data, this.components[\"/_app\"].Component, resetScroll);\n }\n },\n {\n /**\n * Callback to execute before replacing router state\n * @param cb callback to be executed\n */ key: \"beforePopState\",\n value: function beforePopState(cb) {\n this._bps = cb;\n }\n },\n {\n key: \"onlyAHashChange\",\n value: function onlyAHashChange(as) {\n if (!this.asPath) return false;\n var ref = _slicedToArray(this.asPath.split(\"#\"), 2), oldUrlNoHash = ref[0], oldHash = ref[1];\n var ref1 = _slicedToArray(as.split(\"#\"), 2), newUrlNoHash = ref1[0], newHash = ref1[1];\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 },\n {\n key: \"scrollToHash\",\n value: function scrollToHash(as) {\n var ref = _slicedToArray(as.split(\"#\"), 2), tmp = ref[1], hash = tmp === void 0 ? \"\" : tmp;\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 // Decode hash to make non-latin anchor works.\n var rawHash = decodeURIComponent(hash);\n // First we check if the element by id is found\n var idEl = document.getElementById(rawHash);\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 var nameEl = document.getElementsByName(rawHash)[0];\n if (nameEl) {\n nameEl.scrollIntoView();\n }\n }\n },\n {\n key: \"urlIsNew\",\n value: function urlIsNew(asPath) {\n return this.asPath !== asPath;\n }\n },\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 */ key: \"prefetch\",\n value: function prefetch(url) {\n var asPath = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : url, options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var _this = this;\n return _asyncToGenerator(_cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.mark(function _callee() {\n var parsed, pathname, query, parsedAs, localePathResult, pages, resolvedAs, locale, isMiddlewareMatch, rewrites, ref, rewritesResult, data, route;\n return _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n parsed = (0, _parseRelativeUrl).parseRelativeUrl(url);\n pathname = parsed.pathname, query = parsed.query;\n if (false) {}\n _ctx.next = 5;\n return _this.pageLoader.getPageList();\n case 5:\n pages = _ctx.sent;\n resolvedAs = asPath;\n locale = typeof options.locale !== \"undefined\" ? options.locale || undefined : _this.locale;\n _ctx.next = 10;\n return matchesMiddleware({\n asPath: asPath,\n locale: locale,\n router: _this\n });\n case 10:\n isMiddlewareMatch = _ctx.sent;\n if (true) {\n _ctx.next = 24;\n break;\n }\n ;\n ;\n _ctx.next = 16;\n return (0, _routeLoader).getClientBuildManifest();\n case 16:\n ref = _ctx.sent;\n rewrites = ref.__rewrites;\n ref;\n rewritesResult = (0, _resolveRewrites).default((0, _addBasePath).addBasePath((0, _addLocale).addLocale(asPath, _this.locale), true), pages, rewrites, parsed.query, function(p) {\n return resolveDynamicRoute(p, pages);\n }, _this.locales);\n if (!rewritesResult.externalDest) {\n _ctx.next = 22;\n break;\n }\n return _ctx.abrupt(\"return\");\n case 22:\n resolvedAs = (0, _removeLocale).removeLocale((0, _removeBasePath).removeBasePath(rewritesResult.asPath), _this.locale);\n if (rewritesResult.matchedPage && rewritesResult.resolvedHref) {\n // if this directly matches a page we need to update the href to\n // allow the correct page chunk to be loaded\n pathname = rewritesResult.resolvedHref;\n parsed.pathname = pathname;\n if (!isMiddlewareMatch) {\n url = (0, _formatUrl).formatWithValidation(parsed);\n }\n }\n case 24:\n parsed.pathname = resolveDynamicRoute(parsed.pathname, pages);\n if ((0, _isDynamic).isDynamicRoute(parsed.pathname)) {\n pathname = parsed.pathname;\n parsed.pathname = pathname;\n Object.assign(query, (0, _routeMatcher).getRouteMatcher((0, _routeRegex).getRouteRegex(parsed.pathname))((0, _parsePath).parsePath(asPath).pathname) || {});\n if (!isMiddlewareMatch) {\n url = (0, _formatUrl).formatWithValidation(parsed);\n }\n }\n if (false) {}\n return _ctx.abrupt(\"return\");\n case 28:\n _ctx.next = 30;\n return withMiddlewareEffects({\n fetchData: function() {\n return fetchNextData({\n dataHref: _this.pageLoader.getDataHref({\n href: (0, _formatUrl).formatWithValidation({\n pathname: pathname,\n query: query\n }),\n skipInterpolation: true,\n asPath: resolvedAs,\n locale: locale\n }),\n hasMiddleware: true,\n isServerRender: _this.isSsr,\n parseJSON: true,\n inflightCache: _this.sdc,\n persistCache: !_this.isPreview,\n isPrefetch: true\n });\n },\n asPath: asPath,\n locale: locale,\n router: _this\n });\n case 30:\n data = _ctx.sent;\n /**\n * If there was a rewrite we apply the effects of the rewrite on the\n * current parameters for the prefetch.\n */ if ((data == null ? void 0 : data.effect.type) === \"rewrite\") {\n parsed.pathname = data.effect.resolvedHref;\n pathname = data.effect.resolvedHref;\n query = _extends({}, query, data.effect.parsedAs.query);\n resolvedAs = data.effect.parsedAs.pathname;\n url = (0, _formatUrl).formatWithValidation(parsed);\n }\n if (!((data == null ? void 0 : data.effect.type) === \"redirect-external\")) {\n _ctx.next = 34;\n break;\n }\n return _ctx.abrupt(\"return\");\n case 34:\n route = (0, _removeTrailingSlash).removeTrailingSlash(pathname);\n _ctx.next = 37;\n return Promise.all([\n _this.pageLoader._isSsg(route).then(function(isSsg) {\n return isSsg ? fetchNextData({\n dataHref: (data == null ? void 0 : data.dataHref) || _this.pageLoader.getDataHref({\n href: url,\n asPath: resolvedAs,\n locale: locale\n }),\n isServerRender: false,\n parseJSON: true,\n inflightCache: _this.sdc,\n persistCache: !_this.isPreview,\n isPrefetch: true,\n unstable_skipClientCache: options.unstable_skipClientCache || options.priority\n }).then(function() {\n return false;\n }) : false;\n }),\n _this.pageLoader[options.priority ? \"loadPage\" : \"prefetch\"](route), \n ]);\n case 37:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee);\n }))();\n }\n },\n {\n key: \"fetchComponent\",\n value: function fetchComponent(route) {\n var _this = this;\n return _asyncToGenerator(_cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.mark(function _callee() {\n var handleCancelled, componentResult;\n return _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n handleCancelled = getCancelledHandler({\n route: route,\n router: _this\n });\n _ctx.prev = 1;\n _ctx.next = 4;\n return _this.pageLoader.loadPage(route);\n case 4:\n componentResult = _ctx.sent;\n handleCancelled();\n return _ctx.abrupt(\"return\", componentResult);\n case 9:\n _ctx.prev = 9;\n _ctx.t0 = _ctx[\"catch\"](1);\n handleCancelled();\n throw _ctx.t0;\n case 13:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee, null, [\n [\n 1,\n 9\n ]\n ]);\n }))();\n }\n },\n {\n key: \"_getData\",\n value: function _getData(fn) {\n var _this = this;\n var cancelled = false;\n var cancel = function() {\n cancelled = true;\n };\n this.clc = cancel;\n return fn().then(function(data) {\n if (cancel === _this.clc) {\n _this.clc = null;\n }\n if (cancelled) {\n var err = new Error(\"Loading initial props cancelled\");\n err.cancelled = true;\n throw err;\n }\n return data;\n });\n }\n },\n {\n key: \"_getFlightData\",\n value: function _getFlightData(dataHref) {\n // Do not cache RSC flight response since it's not a static resource\n return fetchNextData({\n dataHref: dataHref,\n isServerRender: true,\n parseJSON: false,\n inflightCache: this.sdc,\n persistCache: false,\n isPrefetch: false\n }).then(function(param) {\n var text = param.text;\n return {\n data: text\n };\n });\n }\n },\n {\n key: \"getInitialProps\",\n value: function getInitialProps(Component, ctx) {\n var ref = this.components[\"/_app\"], App = ref.Component;\n var AppTree = this._wrapApp(App);\n ctx.AppTree = AppTree;\n return (0, _utils).loadGetInitialProps(App, {\n AppTree: AppTree,\n Component: Component,\n router: this,\n ctx: ctx\n });\n }\n },\n {\n key: \"route\",\n get: function get() {\n return this.state.route;\n }\n },\n {\n key: \"pathname\",\n get: function get() {\n return this.state.pathname;\n }\n },\n {\n key: \"query\",\n get: function get() {\n return this.state.query;\n }\n },\n {\n key: \"asPath\",\n get: function get() {\n return this.state.asPath;\n }\n },\n {\n key: \"locale\",\n get: function get() {\n return this.state.locale;\n }\n },\n {\n key: \"isFallback\",\n get: function get() {\n return this.state.isFallback;\n }\n },\n {\n key: \"isPreview\",\n get: function get() {\n return this.state.isPreview;\n }\n }\n ]);\n return Router;\n}();\nRouter.events = (0, _mitt).default();\nfunction matchesMiddleware(options) {\n return Promise.resolve(options.router.pageLoader.getMiddlewareList()).then(function(items) {\n var ref = (0, _parsePath).parsePath(options.asPath), asPathname = ref.pathname;\n var cleanedAs = (0, _hasBasePath).hasBasePath(asPathname) ? (0, _removeBasePath).removeBasePath(asPathname) : asPathname;\n return !!(items == null ? void 0 : items.some(function(param) {\n var _param = _slicedToArray(param, 2), regex = _param[0], ssr = _param[1];\n return !ssr && new RegExp(regex).test((0, _addLocale).addLocale(cleanedAs, options.locale));\n }));\n });\n}\nfunction withMiddlewareEffects(options) {\n return matchesMiddleware(options).then(function(matches) {\n if (matches && options.fetchData) {\n return options.fetchData().then(function(data) {\n return getMiddlewareData(data.dataHref, data.response, options).then(function(effect) {\n return {\n dataHref: data.dataHref,\n json: data.json,\n response: data.response,\n text: data.text,\n effect: effect\n };\n });\n }).catch(function(_err) {\n /**\n * TODO: Revisit this in the future.\n * For now we will not consider middleware data errors to be fatal.\n * maybe we should revisit in the future.\n */ return null;\n });\n }\n return null;\n });\n}\nfunction getMiddlewareData(source, response, options) {\n var nextConfig = {\n basePath: options.router.basePath,\n i18n: {\n locales: options.router.locales\n },\n trailingSlash: Boolean(false)\n };\n var rewriteHeader = response.headers.get(\"x-nextjs-rewrite\");\n var rewriteTarget = rewriteHeader || response.headers.get(\"x-nextjs-matched-path\");\n var matchedPath = response.headers.get(\"x-matched-path\");\n if (!rewriteTarget && !(matchedPath == null ? void 0 : matchedPath.includes(\"__next_data_catchall\"))) {\n rewriteTarget = matchedPath;\n }\n if (rewriteTarget) {\n if (rewriteTarget.startsWith(\"/\")) {\n var parsedRewriteTarget = (0, _parseRelativeUrl).parseRelativeUrl(rewriteTarget);\n var pathnameInfo = (0, _getNextPathnameInfo).getNextPathnameInfo(parsedRewriteTarget.pathname, {\n nextConfig: nextConfig,\n parseData: true\n });\n var fsPathname = (0, _removeTrailingSlash).removeTrailingSlash(pathnameInfo.pathname);\n return Promise.all([\n options.router.pageLoader.getPageList(),\n (0, _routeLoader).getClientBuildManifest(), \n ]).then(function(param) {\n var _param = _slicedToArray(param, 2), pages = _param[0], ref = _param[1], rewrites = ref.__rewrites;\n var as = (0, _addLocale).addLocale(pathnameInfo.pathname, pathnameInfo.locale);\n if ((0, _isDynamic).isDynamicRoute(as) || !rewriteHeader && pages.includes((0, _normalizeLocalePath).normalizeLocalePath((0, _removeBasePath).removeBasePath(as), options.router.locales).pathname)) {\n var parsedSource = (0, _getNextPathnameInfo).getNextPathnameInfo((0, _parseRelativeUrl).parseRelativeUrl(source).pathname, {\n parseData: true\n });\n as = (0, _addBasePath).addBasePath(parsedSource.pathname);\n parsedRewriteTarget.pathname = as;\n }\n if (false) { var result; }\n var resolvedHref = !pages.includes(fsPathname) ? resolveDynamicRoute((0, _normalizeLocalePath).normalizeLocalePath((0, _removeBasePath).removeBasePath(parsedRewriteTarget.pathname), options.router.locales).pathname, pages) : fsPathname;\n if ((0, _isDynamic).isDynamicRoute(resolvedHref)) {\n var matches = (0, _routeMatcher).getRouteMatcher((0, _routeRegex).getRouteRegex(resolvedHref))(as);\n Object.assign(parsedRewriteTarget.query, matches || {});\n }\n return {\n type: \"rewrite\",\n parsedAs: parsedRewriteTarget,\n resolvedHref: resolvedHref\n };\n });\n }\n var src = (0, _parsePath).parsePath(source);\n var pathname = (0, _formatNextPathnameInfo).formatNextPathnameInfo(_extends({}, (0, _getNextPathnameInfo).getNextPathnameInfo(src.pathname, {\n nextConfig: nextConfig,\n parseData: true\n }), {\n defaultLocale: options.router.defaultLocale,\n buildId: \"\"\n }));\n return Promise.resolve({\n type: \"redirect-external\",\n destination: \"\".concat(pathname).concat(src.query).concat(src.hash)\n });\n }\n var redirectTarget = response.headers.get(\"x-nextjs-redirect\");\n if (redirectTarget) {\n if (redirectTarget.startsWith(\"/\")) {\n var src1 = (0, _parsePath).parsePath(redirectTarget);\n var pathname1 = (0, _formatNextPathnameInfo).formatNextPathnameInfo(_extends({}, (0, _getNextPathnameInfo).getNextPathnameInfo(src1.pathname, {\n nextConfig: nextConfig,\n parseData: true\n }), {\n defaultLocale: options.router.defaultLocale,\n buildId: \"\"\n }));\n return Promise.resolve({\n type: \"redirect-internal\",\n newAs: \"\".concat(pathname1).concat(src1.query).concat(src1.hash),\n newUrl: \"\".concat(pathname1).concat(src1.query).concat(src1.hash)\n });\n }\n return Promise.resolve({\n type: \"redirect-external\",\n destination: redirectTarget\n });\n }\n return Promise.resolve({\n type: \"next\"\n });\n}\nexports[\"default\"] = Router; //# sourceMappingURL=router.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zaGFyZWQvbGliL3JvdXRlci9yb3V0ZXIuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7Ozs7Ozs7OztBQUNiQSw4Q0FBNkM7SUFDekNHLEtBQUssRUFBRSxJQUFJO0NBQ2QsRUFBQyxDQUFDO0FBQ0hELGtCQUFrQixHQUFHRSxVQUFVLENBQUM7QUFDaENGLHFCQUFxQixHQUFHRyxhQUFhLENBQUM7QUFDdENILG1CQUFtQixHQUFHSSxXQUFXLENBQUM7QUFDbENKLGlCQUFpQixHQUFHSyxTQUFTLENBQUM7QUFDOUJMLGtCQUFlLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDekIsSUFBSU8sdUJBQXVCLEdBQUdDLG1CQUFPLENBQUMsOEdBQTBDLENBQUM7QUFDakYsSUFBSUMsb0JBQW9CLEdBQUdELG1CQUFPLENBQUMsaUhBQStCLENBQUM7QUFDbkUsSUFBSUUsWUFBWSxHQUFHRixtQkFBTyxDQUFDLHNGQUE4QixDQUFDO0FBQzFELElBQUlHLE9BQU8sR0FBR0gsbUJBQU8sQ0FBQywwRUFBd0IsQ0FBQztBQUMvQyxJQUFJSSxRQUFRLEdBQUdDLHVCQUF1QixDQUFDTCxtQkFBTyxDQUFDLHdFQUF1QixDQUFDLENBQUM7QUFDeEUsSUFBSU0sb0JBQW9CLEdBQUdOLG1CQUFPLENBQUMsbUhBQW9DLENBQUM7QUFDeEUsSUFBSU8sb0JBQW9CLEdBQUdQLG1CQUFPLENBQUMseUdBQStCLENBQUM7QUFDbkUsSUFBSVEsS0FBSyxHQUFHQyx1QkFBc0IsQ0FBQ1QsbUJBQU8sQ0FBQyw2REFBUyxDQUFDLENBQUM7QUFDdEQsSUFBSVUsTUFBTSxHQUFHVixtQkFBTyxDQUFDLCtEQUFVLENBQUM7QUFDaEMsSUFBSVcsVUFBVSxHQUFHWCxtQkFBTyxDQUFDLDJGQUFvQixDQUFDO0FBQzlDLElBQUlZLGlCQUFpQixHQUFHWixtQkFBTyxDQUFDLDJHQUE0QixDQUFDO0FBQzdELElBQUlhLFlBQVksR0FBR2IsbUJBQU8sQ0FBQyw2RkFBcUIsQ0FB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QzlCLENBQUMsQ0FBQztLQUNOO0lBQ0QsT0FBTzNaLE9BQU8sQ0FBQ1QsT0FBTyxDQUFDO1FBQ25CMlUsSUFBSSxFQUFFLE1BQU07S0FDZixDQUFDLENBQUM7Q0FDTjtBQUNEaFgsa0JBQWUsR0FBR2dPLE1BQU0sQ0FBQyxDQUV6QixrQ0FBa0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi9yb3V0ZXIvcm91dGVyLmpzPzEyODMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmlzTG9jYWxVUkwgPSBpc0xvY2FsVVJMO1xuZXhwb3J0cy5pbnRlcnBvbGF0ZUFzID0gaW50ZXJwb2xhdGVBcztcbmV4cG9ydHMucmVzb2x2ZUhyZWYgPSByZXNvbHZlSHJlZjtcbmV4cG9ydHMuY3JlYXRlS2V5ID0gY3JlYXRlS2V5O1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xudmFyIF9ub3JtYWxpemVUcmFpbGluZ1NsYXNoID0gcmVxdWlyZShcIi4uLy4uLy4uL2NsaWVudC9ub3JtYWxpemUtdHJhaWxpbmctc2xhc2hcIik7XG52YXIgX3JlbW92ZVRyYWlsaW5nU2xhc2ggPSByZXF1aXJlKFwiLi91dGlscy9yZW1vdmUtdHJhaWxpbmctc2xhc2hcIik7XG52YXIgX3JvdXRlTG9hZGVyID0gcmVxdWlyZShcIi4uLy4uLy4uL2NsaWVudC9yb3V0ZS1sb2FkZXJcIik7XG52YXIgX3NjcmlwdCA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jbGllbnQvc2NyaXB0XCIpO1xudmFyIF9pc0Vycm9yID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcIi4uLy4uLy4uL2xpYi9pcy1lcnJvclwiKSk7XG52YXIgX2Rlbm9ybWFsaXplUGFnZVBhdGggPSByZXF1aXJlKFwiLi4vcGFnZS1wYXRoL2Rlbm9ybWFsaXplLXBhZ2UtcGF0aFwiKTtcbnZhciBfbm9ybWFsaXplTG9jYWxlUGF0aCA9IHJlcXVpcmUoXCIuLi9pMThuL25vcm1hbGl6ZS1sb2NhbGUtcGF0aFwiKTtcbnZhciBfbWl0dCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL21pdHRcIikpO1xudmFyIF91dGlscyA9IHJlcXVpcmUoXCIuLi91dGlsc1wiKTtcbnZhciBfaXNEeW5hbWljID0gcmVxdWlyZShcIi4vdXRpbHMvaXMtZHluYW1pY1wiKTtcbnZhciBfcGFyc2VSZWxhdGl2ZVVybCA9IHJlcXVpcmUoXCIuL3V0aWxzL3BhcnNlLXJlbGF0aXZlLXVybFwiKTtcbnZhciBfcXVlcnlzdHJpbmcgPSByZXF1aXJlKFwiLi91dGlscy9xdWVyeXN0cmluZ1wiKTtcbnZhciBfcmVzb2x2ZVJld3JpdGVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlscy9yZXNvbHZlLXJld3JpdGVzXCIpKTtcbnZhciBfcm91dGVNYXRjaGVyID0gcmVxdWlyZShcIi4vdXRpbHMvcm91dGUtbWF0Y2hlclwiKTtcbnZhciBfcm91dGVSZWdleCA9IHJlcXVpcmUoXCIuL3V0aWxzL3JvdXRlLXJlZ2V4XCIpO1xudmFyIF9mb3JtYXRVcmwgPSByZXF1aXJlKFwiLi91dGlscy9mb3JtYXQtdXJsXCIpO1xudmFyIF9kZXRlY3REb21haW5Mb2NhbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vY2xpZW50L2RldGVjdC1kb21haW4tbG9jYWxlXCIpO1xudmFyIF9wYXJzZVBhdGggPSByZXF1aXJlKFwiLi91dGlscy9wYXJzZS1wYXRoXCIpO1xudmFyIF9hZGRMb2NhbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vY2xpZW50L2FkZC1sb2NhbGVcIik7XG52YXIgX3JlbW92ZUxvY2FsZSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jbGllbnQvcmVtb3ZlLWxvY2FsZVwiKTtcbnZhciBfcmVtb3ZlQmFzZVBhdGggPSByZXF1aXJlKFwiLi4vLi4vLi4vY2xpZW50L3JlbW92ZS1iYXNlLXBhdGhcIik7XG52YXIgX2FkZEJhc2VQYXRoID0gcmVxdWlyZShcIi4uLy4uLy4uL2NsaWVudC9hZGQtYmFzZS1wYXRoXCIpO1xudmFyIF9oYXNCYXNlUGF0aCA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jbGllbnQvaGFzLWJhc2UtcGF0aFwiKTtcbnZhciBfZ2V0TmV4dFBhdGhuYW1lSW5mbyA9IHJlcXVpcmUoXCIuL3V0aWxzL2dldC1uZXh0LXBhdGhuYW1lLWluZm9cIik7XG52YXIgX2Zvcm1hdE5leHRQYXRobmFtZUluZm8gPSByZXF1aXJlKFwiLi91dGlscy9mb3JtYXQtbmV4dC1wYXRobmFtZS1pbmZvXCIpO1xuZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTtcbiAgICAgICAgdmFyIHZhbHVlID0gaW5mby52YWx1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKF9uZXh0LCBfdGhyb3cpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXMsIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHZhciBnZW4gPSBmbi5hcHBseShzZWxmLCBhcmdzKTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9uZXh0KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gX3Rocm93KGVycikge1xuICAgICAgICAgICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX25leHQodW5kZWZpbmVkKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICAgIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0YXJnZXQpIHtcbiAgICAgICAgZm9yKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yKHZhciBrZXkgaW4gc291cmNlKXtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH07XG4gICAgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikge1xuICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgICAgIGRlZmF1bHQ6IG9ialxuICAgIH07XG59XG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7XG4gICAgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsO1xuICAgIHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7XG4gICAgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjYWNoZTtcbiAgICB9O1xuICAgIHJldHVybiBjYWNoZTtcbn1cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikge1xuICAgIGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgICAgIH07XG4gICAgfVxuICAgIHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpO1xuICAgIGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkge1xuICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KG9iaik7XG4gICAgfVxuICAgIHZhciBuZXdPYmogPSB7fTtcbiAgICB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICAgZm9yKHZhciBrZXkgaW4gb2JqKXtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgIHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsO1xuICAgICAgICAgICAgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld09ialtrZXldID0gb2JqW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgbmV3T2JqLmRlZmF1bHQgPSBvYmo7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIGNhY2hlLnNldChvYmosIG5ld09iaik7XG4gICAgfVxuICAgIHJldHVybiBuZXdPYmo7XG59XG5mdW5jdGlvbiBidWlsZENhbmNlbGxhdGlvbkVycm9yKCkge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBFcnJvcignUm91dGUgQ2FuY2VsbGVkJyksIHtcbiAgICAgICAgY2FuY2VsbGVkOiB0cnVlXG4gICAgfSk7XG59XG5mdW5jdGlvbiBpc0xvY2FsVVJMKHVybCkge1xuICAgIC8vIHByZXZlbnQgYSBoeWRyYXRpb24gbWlzbWF0Y2ggb24gaHJlZiBmb3IgdXJsIHdpdGggYW5jaG9yIHJlZnNcbiAgICBpZiAoISgwLCBfdXRpbHMpLmlzQWJzb2x1dGVVcmwodXJsKSkgcmV0dXJuIHRydWU7XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gYWJzb2x1dGUgdXJscyBjYW4gYmUgbG9jYWwgaWYgdGhleSBhcmUgb24gdGhlIHNhbWUgb3JpZ2luXG4gICAgICAgIGNvbnN0IGxvY2F0aW9uT3JpZ2luID0gKDAsIF91dGlscykuZ2V0TG9jYXRpb25PcmlnaW4oKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSBuZXcgVVJMKHVybCwgbG9jYXRpb25PcmlnaW4pO1xuICAgICAgICByZXR1cm4gcmVzb2x2ZWQub3JpZ2luID09PSBsb2NhdGlvbk9yaWdpbiAmJiAoMCwgX2hhc0Jhc2VQYXRoKS5oYXNCYXNlUGF0aChyZXNvbHZlZC5wYXRobmFtZSk7XG4gICAgfSBjYXRjaCAoXykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuZnVuY3Rpb24gaW50ZXJwb2xhdGVBcyhyb3V0ZSwgYXNQYXRobmFtZSwgcXVlcnkpIHtcbiAgICBsZXQgaW50ZXJwb2xhdGVkUm91dGUgPSAnJztcbiAgICBjb25zdCBkeW5hbWljUmVnZXggPSAoMCwgX3JvdXRlUmVnZXgpLmdldFJvdXRlUmVnZXgocm91dGUpO1xuICAgIGNvbnN0IGR5bmFtaWNHcm91cHMgPSBkeW5hbWljUmVnZXguZ3JvdXBzO1xuICAgIGNvbnN0IGR5bmFtaWNNYXRjaGVzID0gLy8gVHJ5IHRvIG1hdGNoIHRoZSBkeW5hbWljIHJvdXRlIGFnYWluc3QgdGhlIGFzUGF0aFxuICAgIChhc1BhdGhuYW1lICE9PSByb3V0ZSA/ICgwLCBfcm91dGVNYXRjaGVyKS5nZXRSb3V0ZU1hdGNoZXIoZHluYW1pY1JlZ2V4KShhc1BhdGhuYW1lKSA6ICcnKSB8fCAvLyBGYWxsIGJhY2sgdG8gcmVhZGluZyB0aGUgdmFsdWVzIGZyb20gdGhlIGhyZWZcbiAgICAvLyBUT0RPOiBzaG91bGQgdGhpcyB0YWtlIHByaW9yaXR5OyBhbHNvIG5lZWQgdG8gY2hhbmdlIGluIHRoZSByb3V0ZXIuXG4gICAgcXVlcnk7XG4gICAgaW50ZXJwb2xhdGVkUm91dGUgPSByb3V0ZTtcbiAgICBjb25zdCBwYXJhbXMgPSBPYmplY3Qua2V5cyhkeW5hbWljR3JvdXBzKTtcbiAgICBpZiAoIXBhcmFtcy5ldmVyeSgocGFyYW0pPT57XG4gICAgICAgIGxldCB2YWx1ZSA9IGR5bmFtaWNNYXRjaGVzW3BhcmFtXSB8fCAnJztcbiAgICAgICAgY29uc3QgeyByZXBlYXQgLCBvcHRpb25hbCAgfSA9IGR5bmFtaWNHcm91cHNbcGFyYW1dO1xuICAgICAgICAvLyBzdXBwb3J0IHNpbmdsZS1sZXZlbCBjYXRjaC1hbGxcbiAgICAgICAgLy8gVE9ETzogbW9yZSByb2J1c3QgaGFuZGxpbmcgZm9yIHVzZXItZXJyb3IgKHBhc3NpbmcgYC9gKVxuICAgICAgICBsZXQgcmVwbGFjZWQgPSBgWyR7cmVwZWF0ID8gJy4uLicgOiAnJ30ke3BhcmFtfV1gO1xuICAgICAgICBpZiAob3B0aW9uYWwpIHtcbiAgICAgICAgICAgIHJlcGxhY2VkID0gYCR7IXZhbHVlID8gJy8nIDogJyd9WyR7cmVwbGFjZWR9XWA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcGVhdCAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHZhbHVlID0gW1xuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgXTtcbiAgICAgICAgcmV0dXJuIChvcHRpb25hbCB8fCBwYXJhbSBpbiBkeW5hbWljTWF0Y2hlcykgJiYgLy8gSW50ZXJwb2xhdGUgZ3JvdXAgaW50byBkYXRhIFVSTCBpZiBwcmVzZW50XG4gICAgICAgIChpbnRlcnBvbGF0ZWRSb3V0ZSA9IGludGVycG9sYXRlZFJvdXRlLnJlcGxhY2UocmVwbGFjZWQsIHJlcGVhdCA/IHZhbHVlLm1hcCgvLyB0aGVzZSB2YWx1ZXMgc2hvdWxkIGJlIGZ1bGx5IGVuY29kZWQgaW5zdGVhZCBvZiBqdXN0XG4gICAgICAgIC8vIHBhdGggZGVsaW1pdGVyIGVzY2FwZWQgc2luY2UgdGhleSBhcmUgYmVpbmcgaW5zZXJ0ZWRcbiAgICAgICAgLy8gaW50byB0aGUgVVJMIGFuZCB3ZSBleHBlY3QgVVJMIGVuY29kZWQgc2VnbWVudHNcbiAgICAgICAgLy8gd2hlbiBwYXJzaW5nIGR5bmFtaWMgcm91dGUgcGFyYW1zXG4gICAgICAgIChzZWdtZW50KT0+ZW5jb2RlVVJJQ29tcG9uZW50KHNlZ21lbnQpKS5qb2luKCcvJykgOiBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpKSB8fCAnLycpO1xuICAgIH0pKSB7XG4gICAgICAgIGludGVycG9sYXRlZFJvdXRlID0gJycgLy8gZGlkIG5vdCBzYXRpc2Z5IGFsbCByZXF1aXJlbWVudHNcbiAgICAgICAgO1xuICAgIC8vIG4uYi4gV2UgaWdub3JlIHRoaXMgZXJyb3IgYmVjYXVzZSB3ZSBoYW5kbGUgd2FybmluZyBmb3IgdGhpcyBjYXNlIGluXG4gICAgLy8gZGV2ZWxvcG1lbnQgaW4gdGhlIGA8TGluaz5gIGNvbXBvbmVudCBkaXJlY3RseS5cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICByZXN1bHQ6IGludGVycG9sYXRlZFJvdXRlXG4gICAgfTtcbn1cbmZ1bmN0aW9uIG9taXQob2JqZWN0LCBrZXlzKSB7XG4gICAgY29uc3Qgb21pdHRlZCA9IHt9O1xuICAgIE9iamVjdC5rZXlzKG9iamVjdCkuZm9yRWFjaCgoa2V5KT0+e1xuICAgICAgICBpZiAoIWtleXMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgb21pdHRlZFtrZXldID0gb2JqZWN0W2tleV07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gb21pdHRlZDtcbn1cbmZ1bmN0aW9uIHJlc29sdmVIcmVmKHJvdXRlciwgaHJlZiwgcmVzb2x2ZUFzKSB7XG4gICAgLy8gd2UgdXNlIGEgZHVtbXkgYmFzZSB1cmwgZm9yIHJlbGF0aXZlIHVybHNcbiAgICBsZXQgYmFzZTtcbiAgICBsZXQgdXJsQXNTdHJpbmcgPSB0eXBlb2YgaHJlZiA9PT0gJ3N0cmluZycgPyBocmVmIDogKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKGhyZWYpO1xuICAgIC8vIHJlcGVhdGVkIHNsYXNoZXMgYW5kIGJhY2tzbGFzaGVzIGluIHRoZSBVUkwgYXJlIGNvbnNpZGVyZWRcbiAgICAvLyBpbnZhbGlkIGFuZCB3aWxsIG5ldmVyIG1hdGNoIGEgTmV4dC5qcyBwYWdlL2ZpbGVcbiAgICBjb25zdCB1cmxQcm90b01hdGNoID0gdXJsQXNTdHJpbmcubWF0Y2goL15bYS16QS1aXXsxLH06XFwvXFwvLyk7XG4gICAgY29uc3QgdXJsQXNTdHJpbmdOb1Byb3RvID0gdXJsUHJvdG9NYXRjaCA/IHVybEFzU3RyaW5nLnNsaWNlKHVybFByb3RvTWF0Y2hbMF0ubGVuZ3RoKSA6IHVybEFzU3RyaW5nO1xuICAgIGNvbnN0IHVybFBhcnRzID0gdXJsQXNTdHJpbmdOb1Byb3RvLnNwbGl0KCc/Jyk7XG4gICAgaWYgKCh1cmxQYXJ0c1swXSB8fCAnJykubWF0Y2goLyhcXC9cXC98XFxcXCkvKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBJbnZhbGlkIGhyZWYgcGFzc2VkIHRvIG5leHQvcm91dGVyOiAke3VybEFzU3RyaW5nfSwgcmVwZWF0ZWQgZm9yd2FyZC1zbGFzaGVzICgvLykgb3IgYmFja3NsYXNoZXMgXFxcXCBhcmUgbm90IHZhbGlkIGluIHRoZSBocmVmYCk7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRVcmwgPSAoMCwgX3V0aWxzKS5ub3JtYWxpemVSZXBlYXRlZFNsYXNoZXModXJsQXNTdHJpbmdOb1Byb3RvKTtcbiAgICAgICAgdXJsQXNTdHJpbmcgPSAodXJsUHJvdG9NYXRjaCA/IHVybFByb3RvTWF0Y2hbMF0gOiAnJykgKyBub3JtYWxpemVkVXJsO1xuICAgIH1cbiAgICAvLyBSZXR1cm4gYmVjYXVzZSBpdCBjYW5ub3QgYmUgcm91dGVkIGJ5IHRoZSBOZXh0LmpzIHJvdXRlclxuICAgIGlmICghaXNMb2NhbFVSTCh1cmxBc1N0cmluZykpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVBcyA/IFtcbiAgICAgICAgICAgIHVybEFzU3RyaW5nXG4gICAgICAgIF0gOiB1cmxBc1N0cmluZztcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgYmFzZSA9IG5ldyBVUkwodXJsQXNTdHJpbmcuc3RhcnRzV2l0aCgnIycpID8gcm91dGVyLmFzUGF0aCA6IHJvdXRlci5wYXRobmFtZSwgJ2h0dHA6Ly9uJyk7XG4gICAgfSBjYXRjaCAoXykge1xuICAgICAgICAvLyBmYWxsYmFjayB0byAvIGZvciBpbnZhbGlkIGFzUGF0aCB2YWx1ZXMgZS5nLiAvL1xuICAgICAgICBiYXNlID0gbmV3IFVSTCgnLycsICdodHRwOi8vbicpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBjb25zdCBmaW5hbFVybCA9IG5ldyBVUkwodXJsQXNTdHJpbmcsIGJhc2UpO1xuICAgICAgICBmaW5hbFVybC5wYXRobmFtZSA9ICgwLCBfbm9ybWFsaXplVHJhaWxpbmdTbGFzaCkubm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2goZmluYWxVcmwucGF0aG5hbWUpO1xuICAgICAgICBsZXQgaW50ZXJwb2xhdGVkQXMgPSAnJztcbiAgICAgICAgaWYgKCgwLCBfaXNEeW5hbWljKS5pc0R5bmFtaWNSb3V0ZShmaW5hbFVybC5wYXRobmFtZSkgJiYgZmluYWxVcmwuc2VhcmNoUGFyYW1zICYmIHJlc29sdmVBcykge1xuICAgICAgICAgICAgY29uc3QgcXVlcnkgPSAoMCwgX3F1ZXJ5c3RyaW5nKS5zZWFyY2hQYXJhbXNUb1VybFF1ZXJ5KGZpbmFsVXJsLnNlYXJjaFBhcmFtcyk7XG4gICAgICAgICAgICBjb25zdCB7IHJlc3VsdCAsIHBhcmFtcyAgfSA9IGludGVycG9sYXRlQXMoZmluYWxVcmwucGF0aG5hbWUsIGZpbmFsVXJsLnBhdGhuYW1lLCBxdWVyeSk7XG4gICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgaW50ZXJwb2xhdGVkQXMgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICBwYXRobmFtZTogcmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICBoYXNoOiBmaW5hbFVybC5oYXNoLFxuICAgICAgICAgICAgICAgICAgICBxdWVyeTogb21pdChxdWVyeSwgcGFyYW1zKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGlmIHRoZSBvcmlnaW4gZGlkbid0IGNoYW5nZSwgaXQgbWVhbnMgd2UgcmVjZWl2ZWQgYSByZWxhdGl2ZSBocmVmXG4gICAgICAgIGNvbnN0IHJlc29sdmVkSHJlZiA9IGZpbmFsVXJsLm9yaWdpbiA9PT0gYmFzZS5vcmlnaW4gPyBmaW5hbFVybC5ocmVmLnNsaWNlKGZpbmFsVXJsLm9yaWdpbi5sZW5ndGgpIDogZmluYWxVcmwuaHJlZjtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVBcyA/IFtcbiAgICAgICAgICAgIHJlc29sdmVkSHJlZixcbiAgICAgICAgICAgIGludGVycG9sYXRlZEFzIHx8IHJlc29sdmVkSHJlZlxuICAgICAgICBdIDogcmVzb2x2ZWRIcmVmO1xuICAgIH0gY2F0Y2ggKF8xKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlQXMgPyBbXG4gICAgICAgICAgICB1cmxBc1N0cmluZ1xuICAgICAgICBdIDogdXJsQXNTdHJpbmc7XG4gICAgfVxufVxuZnVuY3Rpb24gc3RyaXBPcmlnaW4odXJsKSB7XG4gICAgY29uc3Qgb3JpZ2luID0gKDAsIF91dGlscykuZ2V0TG9jYXRpb25PcmlnaW4oKTtcbiAgICByZXR1cm4gdXJsLnN0YXJ0c1dpdGgob3JpZ2luKSA/IHVybC5zdWJzdHJpbmcob3JpZ2luLmxlbmd0aCkgOiB1cmw7XG59XG5mdW5jdGlvbiBwcmVwYXJlVXJsQXMocm91dGVyLCB1cmwsIGFzKSB7XG4gICAgLy8gSWYgdXJsIGFuZCBhcyBwcm92aWRlZCBhcyBhbiBvYmplY3QgcmVwcmVzZW50YXRpb24sXG4gICAgLy8gd2UnbGwgZm9ybWF0IHRoZW0gaW50byB0aGUgc3RyaW5nIHZlcnNpb24gaGVyZS5cbiAgICBsZXQgW3Jlc29sdmVkSHJlZiwgcmVzb2x2ZWRBc10gPSByZXNvbHZlSHJlZihyb3V0ZXIsIHVybCwgdHJ1ZSk7XG4gICAgY29uc3Qgb3JpZ2luID0gKDAsIF91dGlscykuZ2V0TG9jYXRpb25PcmlnaW4oKTtcbiAgICBjb25zdCBocmVmSGFkT3JpZ2luID0gcmVzb2x2ZWRIcmVmLnN0YXJ0c1dpdGgob3JpZ2luKTtcbiAgICBjb25zdCBhc0hhZE9yaWdpbiA9IHJlc29sdmVkQXMgJiYgcmVzb2x2ZWRBcy5zdGFydHNXaXRoKG9yaWdpbik7XG4gICAgcmVzb2x2ZWRIcmVmID0gc3RyaXBPcmlnaW4ocmVzb2x2ZWRIcmVmKTtcbiAgICByZXNvbHZlZEFzID0gcmVzb2x2ZWRBcyA/IHN0cmlwT3JpZ2luKHJlc29sdmVkQXMpIDogcmVzb2x2ZWRBcztcbiAgICBjb25zdCBwcmVwYXJlZFVybCA9IGhyZWZIYWRPcmlnaW4gPyByZXNvbHZlZEhyZWYgOiAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aChyZXNvbHZlZEhyZWYpO1xuICAgIGNvbnN0IHByZXBhcmVkQXMgPSBhcyA/IHN0cmlwT3JpZ2luKHJlc29sdmVIcmVmKHJvdXRlciwgYXMpKSA6IHJlc29sdmVkQXMgfHwgcmVzb2x2ZWRIcmVmO1xuICAgIHJldHVybiB7XG4gICAgICAgIHVybDogcHJlcGFyZWRVcmwsXG4gICAgICAgIGFzOiBhc0hhZE9yaWdpbiA/IHByZXBhcmVkQXMgOiAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aChwcmVwYXJlZEFzKVxuICAgIH07XG59XG5mdW5jdGlvbiByZXNvbHZlRHluYW1pY1JvdXRlKHBhdGhuYW1lLCBwYWdlcykge1xuICAgIGNvbnN0IGNsZWFuUGF0aG5hbWUgPSAoMCwgX3JlbW92ZVRyYWlsaW5nU2xhc2gpLnJlbW92ZVRyYWlsaW5nU2xhc2goKDAsIF9kZW5vcm1hbGl6ZVBhZ2VQYXRoKS5kZW5vcm1hbGl6ZVBhZ2VQYXRoKHBhdGhuYW1lKSk7XG4gICAgaWYgKGNsZWFuUGF0aG5hbWUgPT09ICcvNDA0JyB8fCBjbGVhblBhdGhuYW1lID09PSAnL19lcnJvcicpIHtcbiAgICAgICAgcmV0dXJuIHBhdGhuYW1lO1xuICAgIH1cbiAgICAvLyBoYW5kbGUgcmVzb2x2aW5nIGhyZWYgZm9yIGR5bmFtaWMgcm91dGVzXG4gICAgaWYgKCFwYWdlcy5pbmNsdWRlcyhjbGVhblBhdGhuYW1lKSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYXJyYXktY2FsbGJhY2stcmV0dXJuXG4gICAgICAgIHBhZ2VzLnNvbWUoKHBhZ2UpPT57XG4gICAgICAgICAgICBpZiAoKDAsIF9pc0R5bmFtaWMpLmlzRHluYW1pY1JvdXRlKHBhZ2UpICYmICgwLCBfcm91dGVSZWdleCkuZ2V0Um91dGVSZWdleChwYWdlKS5yZS50ZXN0KGNsZWFuUGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcGF0aG5hbWUgPSBwYWdlO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuICgwLCBfcmVtb3ZlVHJhaWxpbmdTbGFzaCkucmVtb3ZlVHJhaWxpbmdTbGFzaChwYXRobmFtZSk7XG59XG5jb25zdCBtYW51YWxTY3JvbGxSZXN0b3JhdGlvbiA9IHByb2Nlc3MuZW52Ll9fTkVYVF9TQ1JPTExfUkVTVE9SQVRJT04gJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgJ3Njcm9sbFJlc3RvcmF0aW9uJyBpbiB3aW5kb3cuaGlzdG9yeSAmJiAhIWZ1bmN0aW9uKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGxldCB2ID0gJ19fbmV4dCc7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZXF1ZW5jZXNcbiAgICAgICAgcmV0dXJuIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odiwgdiksIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0odiksIHRydWU7XG4gICAgfSBjYXRjaCAobikge31cbn0oKTtcbmNvbnN0IFNTR19EQVRBX05PVF9GT1VORCA9IFN5bWJvbCgnU1NHX0RBVEFfTk9UX0ZPVU5EJyk7XG5mdW5jdGlvbiBmZXRjaFJldHJ5KHVybCwgYXR0ZW1wdHMsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gZmV0Y2godXJsLCB7XG4gICAgICAgIC8vIENvb2tpZXMgYXJlIHJlcXVpcmVkIHRvIGJlIHByZXNlbnQgZm9yIE5leHQuanMnIFNTRyBcIlByZXZpZXcgTW9kZVwiLlxuICAgICAgICAvLyBDb29raWVzIG1heSBhbHNvIGJlIHJlcXVpcmVkIGZvciBgZ2V0U2VydmVyU2lkZVByb3BzYC5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gPiBgZmV0Y2hgIHdvbuKAmXQgc2VuZCBjb29raWVzLCB1bmxlc3MgeW91IHNldCB0aGUgY3JlZGVudGlhbHMgaW5pdFxuICAgICAgICAvLyA+IG9wdGlvbi5cbiAgICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0ZldGNoX0FQSS9Vc2luZ19GZXRjaFxuICAgICAgICAvL1xuICAgICAgICAvLyA+IEZvciBtYXhpbXVtIGJyb3dzZXIgY29tcGF0aWJpbGl0eSB3aGVuIGl0IGNvbWVzIHRvIHNlbmRpbmcgJlxuICAgICAgICAvLyA+IHJlY2VpdmluZyBjb29raWVzLCBhbHdheXMgc3VwcGx5IHRoZSBgY3JlZGVudGlhbHM6ICdzYW1lLW9yaWdpbidgXG4gICAgICAgIC8vID4gb3B0aW9uIGluc3RlYWQgb2YgcmVseWluZyBvbiB0aGUgZGVmYXVsdC5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dpdGh1Yi9mZXRjaCNjYXZlYXRzXG4gICAgICAgIGNyZWRlbnRpYWxzOiAnc2FtZS1vcmlnaW4nLFxuICAgICAgICBtZXRob2Q6IG9wdGlvbnMubWV0aG9kIHx8ICdHRVQnLFxuICAgICAgICBoZWFkZXJzOiBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zLmhlYWRlcnMsIHtcbiAgICAgICAgICAgICd4LW5leHRqcy1kYXRhJzogJzEnXG4gICAgICAgIH0pXG4gICAgfSkudGhlbigocmVzcG9uc2UpPT57XG4gICAgICAgIHJldHVybiAhcmVzcG9uc2Uub2sgJiYgYXR0ZW1wdHMgPiAxICYmIHJlc3BvbnNlLnN0YXR1cyA+PSA1MDAgPyBmZXRjaFJldHJ5KHVybCwgYXR0ZW1wdHMgLSAxLCBvcHRpb25zKSA6IHJlc3BvbnNlO1xuICAgIH0pO1xufVxuY29uc3QgYmFja2dyb3VuZENhY2hlID0ge307XG5mdW5jdGlvbiBmZXRjaE5leHREYXRhKHsgZGF0YUhyZWYgLCBpbmZsaWdodENhY2hlICwgaXNQcmVmZXRjaCAsIGhhc01pZGRsZXdhcmUgLCBpc1NlcnZlclJlbmRlciAsIHBhcnNlSlNPTiAsIHBlcnNpc3RDYWNoZSAsIGlzQmFja2dyb3VuZCAsIHVuc3RhYmxlX3NraXBDbGllbnRDYWNoZSAgfSkge1xuICAgIGNvbnN0IHsgaHJlZjogY2FjaGVLZXkgIH0gPSBuZXcgVVJMKGRhdGFIcmVmLCB3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgdmFyIHJlZjE7XG4gICAgY29uc3QgZ2V0RGF0YSA9IChwYXJhbXMpPT57XG4gICAgICAgIHJldHVybiBmZXRjaFJldHJ5KGRhdGFIcmVmLCBpc1NlcnZlclJlbmRlciA/IDMgOiAxLCB7XG4gICAgICAgICAgICBoZWFkZXJzOiBpc1ByZWZldGNoID8ge1xuICAgICAgICAgICAgICAgIHB1cnBvc2U6ICdwcmVmZXRjaCdcbiAgICAgICAgICAgIH0gOiB7fSxcbiAgICAgICAgICAgIG1ldGhvZDogKHJlZjEgPSBwYXJhbXMgPT0gbnVsbCA/IHZvaWQgMCA6IHBhcmFtcy5tZXRob2QpICE9IG51bGwgPyByZWYxIDogJ0dFVCdcbiAgICAgICAgfSkudGhlbigocmVzcG9uc2UpPT57XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uub2sgJiYgKHBhcmFtcyA9PSBudWxsID8gdm9pZCAwIDogcGFyYW1zLm1ldGhvZCkgPT09ICdIRUFEJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFIcmVmLFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIGpzb246IHt9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS50ZXh0KCkudGhlbigodGV4dCk9PntcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2hlbiB0aGUgZGF0YSByZXNwb25zZSBpcyBhIHJlZGlyZWN0IGJlY2F1c2Ugb2YgYSBtaWRkbGV3YXJlXG4gICAgICAgICAgICAgKiB3ZSBkbyBub3QgY29uc2lkZXIgaXQgYW4gZXJyb3IuIFRoZSBoZWFkZXJzIG11c3QgYnJpbmcgdGhlXG4gICAgICAgICAgICAgKiBtYXBwZWQgbG9jYXRpb24uXG4gICAgICAgICAgICAgKiBUT0RPOiBDaGFuZ2UgdGhlIHN0YXR1cyBjb2RlIGluIHRoZSBoYW5kbGVyLlxuICAgICAgICAgICAgICovIGlmIChoYXNNaWRkbGV3YXJlICYmIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIDMwMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDMwMixcbiAgICAgICAgICAgICAgICAgICAgICAgIDMwNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIDMwOFxuICAgICAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKHJlc3BvbnNlLnN0YXR1cykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUhyZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uOiB7fVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWY7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHJlZiA9IHRyeVRvUGFyc2VBc0pTT04odGV4dCkpID09IG51bGwgPyB2b2lkIDAgOiByZWYubm90Rm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhSHJlZixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90Rm91bmQ6IFNTR19EQVRBX05PVF9GT1VORFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICogSWYgdGhlcmUgaXMgYSA0MDQgdGhhdCBpcyBub3QgZm9yIFNTRyB3ZSB1c2VkIHRvIGZhaWwgYnV0IGlmXG4gICAgICAgICAgICAgICAqIHRoZXJlIGlzIGEgbWlkZGxld2FyZSB3ZSBtdXN0IHJlc3BvbmQgd2l0aCBhbiBlbXB0eSBvYmplY3QuXG4gICAgICAgICAgICAgICAqIEZvciBub3cgd2Ugd2lsbCByZXR1cm4gdGhlIGRhdGEgd2hlbiB0aGVyZSBpcyBhIG1pZGRsZXdhcmUuXG4gICAgICAgICAgICAgICAqIFRPRE86IFVwZGF0ZSB0aGUgc2VydmVyIHRvIHN1Y2Nlc3Mgb24gdGhlc2UgcmVxdWVzdHMuXG4gICAgICAgICAgICAgICAqLyBpZiAoaGFzTWlkZGxld2FyZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFIcmVmLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbjoge31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBGYWlsZWQgdG8gbG9hZCBzdGF0aWMgcHJvcHNgKTtcbiAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXZSBzaG91bGQgb25seSB0cmlnZ2VyIGEgc2VydmVyLXNpZGUgdHJhbnNpdGlvbiBpZiB0aGlzIHdhc1xuICAgICAgICAgICAgICogY2F1c2VkIG9uIGEgY2xpZW50LXNpZGUgdHJhbnNpdGlvbi4gT3RoZXJ3aXNlLCB3ZSdkIGdldCBpbnRvXG4gICAgICAgICAgICAgKiBhbiBpbmZpbml0ZSBsb29wLlxuICAgICAgICAgICAgICovIGlmICghaXNTZXJ2ZXJSZW5kZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfcm91dGVMb2FkZXIpLm1hcmtBc3NldEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YUhyZWYsXG4gICAgICAgICAgICAgICAgICAgIGpzb246IHBhcnNlSlNPTiA/IHRyeVRvUGFyc2VBc0pTT04odGV4dCkgOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICAgIHRleHRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLnRoZW4oKGRhdGEpPT57XG4gICAgICAgICAgICBpZiAoIXBlcnNpc3RDYWNoZSB8fCBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nIHx8IGRhdGEucmVzcG9uc2UuaGVhZGVycy5nZXQoJ3gtbWlkZGxld2FyZS1jYWNoZScpID09PSAnbm8tY2FjaGUnKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGluZmxpZ2h0Q2FjaGVbY2FjaGVLZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0pLmNhdGNoKChlcnIpPT57XG4gICAgICAgICAgICBkZWxldGUgaW5mbGlnaHRDYWNoZVtjYWNoZUtleV07XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLy8gd2hlbiBza2lwcGluZyBjbGllbnQgY2FjaGUgd2Ugd2FpdCB0byB1cGRhdGVcbiAgICAvLyBpbmZsaWdodCBjYWNoZSB1bnRpbCBzdWNjZXNzZnVsIGRhdGEgcmVzcG9uc2VcbiAgICAvLyB0aGlzIGFsbG93cyByYWNpbmcgY2xpY2sgZXZlbnQgd2l0aCBmZXRjaGluZyBuZXdlciBkYXRhXG4gICAgLy8gd2l0aG91dCBibG9ja2luZyBuYXZpZ2F0aW9uIHdoZW4gc3RhbGUgZGF0YSBpcyBhdmFpbGFibGVcbiAgICBpZiAodW5zdGFibGVfc2tpcENsaWVudENhY2hlICYmIHBlcnNpc3RDYWNoZSkge1xuICAgICAgICByZXR1cm4gZ2V0RGF0YSh7fSkudGhlbigoZGF0YSk9PntcbiAgICAgICAgICAgIGluZmxpZ2h0Q2FjaGVbY2FjaGVLZXldID0gUHJvbWlzZS5yZXNvbHZlKGRhdGEpO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoaW5mbGlnaHRDYWNoZVtjYWNoZUtleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gaW5mbGlnaHRDYWNoZVtjYWNoZUtleV07XG4gICAgfVxuICAgIHJldHVybiBpbmZsaWdodENhY2hlW2NhY2hlS2V5XSA9IGdldERhdGEoaXNCYWNrZ3JvdW5kID8ge1xuICAgICAgICBtZXRob2Q6ICdIRUFEJ1xuICAgIH0gOiB7fSk7XG59XG5mdW5jdGlvbiB0cnlUb1BhcnNlQXNKU09OKHRleHQpIHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxufVxuZnVuY3Rpb24gY3JlYXRlS2V5KCkge1xuICAgIHJldHVybiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCAxMCk7XG59XG5mdW5jdGlvbiBoYW5kbGVIYXJkTmF2aWdhdGlvbih7IHVybCAsIHJvdXRlciAgfSkge1xuICAgIC8vIGVuc3VyZSB3ZSBkb24ndCB0cmlnZ2VyIGEgaGFyZCBuYXZpZ2F0aW9uIHRvIHRoZSBzYW1lXG4gICAgLy8gVVJMIGFzIHRoaXMgY2FuIGVuZCB1cCB3aXRoIGFuIGluZmluaXRlIHJlZnJlc2hcbiAgICBpZiAodXJsID09PSAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aCgoMCwgX2FkZExvY2FsZSkuYWRkTG9jYWxlKHJvdXRlci5hc1BhdGgsIHJvdXRlci5sb2NhbGUpKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFyaWFudDogYXR0ZW1wdGVkIHRvIGhhcmQgbmF2aWdhdGUgdG8gdGhlIHNhbWUgVVJMICR7dXJsfSAke2xvY2F0aW9uLmhyZWZ9YCk7XG4gICAgfVxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xufVxuY29uc3QgZ2V0Q2FuY2VsbGVkSGFuZGxlciA9ICh7IHJvdXRlICwgcm91dGVyICB9KT0+e1xuICAgIGxldCBjYW5jZWxsZWQgPSBmYWxzZTtcbiAgICBjb25zdCBjYW5jZWwgPSByb3V0ZXIuY2xjID0gKCk9PntcbiAgICAgICAgY2FuY2VsbGVkID0gdHJ1ZTtcbiAgICB9O1xuICAgIGNvbnN0IGhhbmRsZUNhbmNlbGxlZCA9ICgpPT57XG4gICAgICAgIGlmIChjYW5jZWxsZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBBYm9ydCBmZXRjaGluZyBjb21wb25lbnQgZm9yIHJvdXRlOiBcIiR7cm91dGV9XCJgKTtcbiAgICAgICAgICAgIGVycm9yLmNhbmNlbGxlZCA9IHRydWU7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FuY2VsID09PSByb3V0ZXIuY2xjKSB7XG4gICAgICAgICAgICByb3V0ZXIuY2xjID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIGhhbmRsZUNhbmNlbGxlZDtcbn07XG5jbGFzcyBSb3V0ZXIge1xuICAgIHJlbG9hZCgpIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgIH1cbiAgICAvKipcbiAgICogR28gYmFjayBpbiBoaXN0b3J5XG4gICAqLyBiYWNrKCkge1xuICAgICAgICB3aW5kb3cuaGlzdG9yeS5iYWNrKCk7XG4gICAgfVxuICAgIC8qKlxuICAgKiBQZXJmb3JtcyBhIGBwdXNoU3RhdGVgIHdpdGggYXJndW1lbnRzXG4gICAqIEBwYXJhbSB1cmwgb2YgdGhlIHJvdXRlXG4gICAqIEBwYXJhbSBhcyBtYXNrcyBgdXJsYCBmb3IgdGhlIGJyb3dzZXJcbiAgICogQHBhcmFtIG9wdGlvbnMgb2JqZWN0IHlvdSBjYW4gZGVmaW5lIGBzaGFsbG93YCBhbmQgb3RoZXIgb3B0aW9uc1xuICAgKi8gcHVzaCh1cmwsIGFzLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9TQ1JPTExfUkVTVE9SQVRJT04pIHtcbiAgICAgICAgICAgIC8vIFRPRE86IHJlbW92ZSBpbiB0aGUgZnV0dXJlIHdoZW4gd2UgdXBkYXRlIGhpc3RvcnkgYmVmb3JlIHJvdXRlIGNoYW5nZVxuICAgICAgICAgICAgLy8gaXMgY29tcGxldGUsIGFzIHRoZSBwb3BzdGF0ZSBldmVudCBzaG91bGQgaGFuZGxlIHRoaXMgY2FwdHVyZS5cbiAgICAgICAgICAgIGlmIChtYW51YWxTY3JvbGxSZXN0b3JhdGlvbikge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNuYXBzaG90IHNjcm9sbCBwb3NpdGlvbiByaWdodCBiZWZvcmUgbmF2aWdhdGluZyB0byBhIG5ldyBwYWdlOlxuICAgICAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdfX25leHRfc2Nyb2xsXycgKyB0aGlzLl9rZXksIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHg6IHNlbGYucGFnZVhPZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICB5OiBzZWxmLnBhZ2VZT2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICh7IHVybCAsIGFzICB9ID0gcHJlcGFyZVVybEFzKHRoaXMsIHVybCwgYXMpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhbmdlKCdwdXNoU3RhdGUnLCB1cmwsIGFzLCBvcHRpb25zKTtcbiAgICB9XG4gICAgLyoqXG4gICAqIFBlcmZvcm1zIGEgYHJlcGxhY2VTdGF0ZWAgd2l0aCBhcmd1bWVudHNcbiAgICogQHBhcmFtIHVybCBvZiB0aGUgcm91dGVcbiAgICogQHBhcmFtIGFzIG1hc2tzIGB1cmxgIGZvciB0aGUgYnJvd3NlclxuICAgKiBAcGFyYW0gb3B0aW9ucyBvYmplY3QgeW91IGNhbiBkZWZpbmUgYHNoYWxsb3dgIGFuZCBvdGhlciBvcHRpb25zXG4gICAqLyByZXBsYWNlKHVybCwgYXMsIG9wdGlvbnMgPSB7fSkge1xuICAgICAgICAoeyB1cmwgLCBhcyAgfSA9IHByZXBhcmVVcmxBcyh0aGlzLCB1cmwsIGFzKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmNoYW5nZSgncmVwbGFjZVN0YXRlJywgdXJsLCBhcywgb3B0aW9ucyk7XG4gICAgfVxuICAgIGNoYW5nZShtZXRob2QsIHVybCwgYXMsIG9wdGlvbnMsIGZvcmNlZFNjcm9sbCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qKCkge1xuICAgICAgICAgICAgaWYgKCFpc0xvY2FsVVJMKHVybCkpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFdBUk5JTkc6IGBfaGAgaXMgYW4gaW50ZXJuYWwgb3B0aW9uIGZvciBoYW5kaW5nIE5leHQuanMgY2xpZW50LXNpZGVcbiAgICAgICAgICAgIC8vIGh5ZHJhdGlvbi4gWW91ciBhcHAgc2hvdWxkIF9uZXZlcl8gdXNlIHRoaXMgcHJvcGVydHkuIEl0IG1heSBjaGFuZ2UgYXRcbiAgICAgICAgICAgIC8vIGFueSB0aW1lIHdpdGhvdXQgbm90aWNlLlxuICAgICAgICAgICAgY29uc3QgaXNRdWVyeVVwZGF0aW5nID0gb3B0aW9ucy5faDtcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZFJlc29sdmVIcmVmID0gaXNRdWVyeVVwZGF0aW5nIHx8IG9wdGlvbnMuX3Nob3VsZFJlc29sdmVIcmVmIHx8ICgwLCBfcGFyc2VQYXRoKS5wYXJzZVBhdGgodXJsKS5wYXRobmFtZSA9PT0gKDAsIF9wYXJzZVBhdGgpLnBhcnNlUGF0aChhcykucGF0aG5hbWU7XG4gICAgICAgICAgICBjb25zdCBuZXh0U3RhdGUgPSBfZXh0ZW5kcyh7fSwgX3RoaXMuc3RhdGUpO1xuICAgICAgICAgICAgLy8gZm9yIHN0YXRpYyBwYWdlcyB3aXRoIHF1ZXJ5IHBhcmFtcyBpbiB0aGUgVVJMIHdlIGRlbGF5XG4gICAgICAgICAgICAvLyBtYXJraW5nIHRoZSByb3V0ZXIgcmVhZHkgdW50aWwgYWZ0ZXIgdGhlIHF1ZXJ5IGlzIHVwZGF0ZWRcbiAgICAgICAgICAgIC8vIG9yIGEgbmF2aWdhdGlvbiBoYXMgb2NjdXJyZWRcbiAgICAgICAgICAgIF90aGlzLmlzUmVhZHkgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXNTc3IgPSBfdGhpcy5pc1NzcjtcbiAgICAgICAgICAgIGlmICghaXNRdWVyeVVwZGF0aW5nKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuaXNTc3IgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGlmIGEgcm91dGUgdHJhbnNpdGlvbiBpcyBhbHJlYWR5IGluIHByb2dyZXNzIGJlZm9yZVxuICAgICAgICAgICAgLy8gdGhlIHF1ZXJ5IHVwZGF0aW5nIGlzIHRyaWdnZXJlZCBpZ25vcmUgcXVlcnkgdXBkYXRpbmdcbiAgICAgICAgICAgIGlmIChpc1F1ZXJ5VXBkYXRpbmcgJiYgX3RoaXMuY2xjKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcHJldkxvY2FsZSA9IG5leHRTdGF0ZS5sb2NhbGU7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICAgICAgICAgIG5leHRTdGF0ZS5sb2NhbGUgPSBvcHRpb25zLmxvY2FsZSA9PT0gZmFsc2UgPyBfdGhpcy5kZWZhdWx0TG9jYWxlIDogb3B0aW9ucy5sb2NhbGUgfHwgbmV4dFN0YXRlLmxvY2FsZTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMubG9jYWxlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmxvY2FsZSA9IG5leHRTdGF0ZS5sb2NhbGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZEFzID0gKDAsIF9wYXJzZVJlbGF0aXZlVXJsKS5wYXJzZVJlbGF0aXZlVXJsKCgwLCBfaGFzQmFzZVBhdGgpLmhhc0Jhc2VQYXRoKGFzKSA/ICgwLCBfcmVtb3ZlQmFzZVBhdGgpLnJlbW92ZUJhc2VQYXRoKGFzKSA6IGFzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGVQYXRoUmVzdWx0ID0gKDAsIF9ub3JtYWxpemVMb2NhbGVQYXRoKS5ub3JtYWxpemVMb2NhbGVQYXRoKHBhcnNlZEFzLnBhdGhuYW1lLCBfdGhpcy5sb2NhbGVzKTtcbiAgICAgICAgICAgICAgICBpZiAobG9jYWxlUGF0aFJlc3VsdC5kZXRlY3RlZExvY2FsZSkge1xuICAgICAgICAgICAgICAgICAgICBuZXh0U3RhdGUubG9jYWxlID0gbG9jYWxlUGF0aFJlc3VsdC5kZXRlY3RlZExvY2FsZTtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkQXMucGF0aG5hbWUgPSAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aChwYXJzZWRBcy5wYXRobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGFzID0gKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHBhcnNlZEFzKTtcbiAgICAgICAgICAgICAgICAgICAgdXJsID0gKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgoKDAsIF9ub3JtYWxpemVMb2NhbGVQYXRoKS5ub3JtYWxpemVMb2NhbGVQYXRoKCgwLCBfaGFzQmFzZVBhdGgpLmhhc0Jhc2VQYXRoKHVybCkgPyAoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aCh1cmwpIDogdXJsLCBfdGhpcy5sb2NhbGVzKS5wYXRobmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBkaWROYXZpZ2F0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gd3JhcCB0aGlzIGluIHRoZSBlbnYgY2hlY2sgYWdhaW4gc2luY2UgcmVnZW5lcmF0b3IgcnVudGltZVxuICAgICAgICAgICAgICAgIC8vIG1vdmVzIHRoaXMgb24gaXRzIG93biBkdWUgdG8gdGhlIHJldHVyblxuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWY7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBsb2NhbGUgaXNuJ3QgY29uZmlndXJlZCBoYXJkIG5hdmlnYXRlIHRvIHNob3cgNDA0IHBhZ2VcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoKHJlZiA9IF90aGlzLmxvY2FsZXMpID09IG51bGwgPyB2b2lkIDAgOiByZWYuaW5jbHVkZXMobmV4dFN0YXRlLmxvY2FsZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRBcy5wYXRobmFtZSA9ICgwLCBfYWRkTG9jYWxlKS5hZGRMb2NhbGUocGFyc2VkQXMucGF0aG5hbWUsIG5leHRTdGF0ZS5sb2NhbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlSGFyZE5hdmlnYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHBhcnNlZEFzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXI6IF90aGlzXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgd2FzIHByZXZpb3VzbHkgYSByZXR1cm4gYnV0IHdhcyByZW1vdmVkIGluIGZhdm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiBiZXR0ZXIgZGVhZCBjb2RlIGVsaW1pbmF0aW9uIHdpdGggcmVnZW5lcmF0b3IgcnVudGltZVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlkTmF2aWdhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGRldGVjdGVkRG9tYWluID0gKDAsIF9kZXRlY3REb21haW5Mb2NhbGUpLmRldGVjdERvbWFpbkxvY2FsZShfdGhpcy5kb21haW5Mb2NhbGVzLCB1bmRlZmluZWQsIG5leHRTdGF0ZS5sb2NhbGUpO1xuICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gd3JhcCB0aGlzIGluIHRoZSBlbnYgY2hlY2sgYWdhaW4gc2luY2UgcmVnZW5lcmF0b3IgcnVudGltZVxuICAgICAgICAgICAgICAgIC8vIG1vdmVzIHRoaXMgb24gaXRzIG93biBkdWUgdG8gdGhlIHJldHVyblxuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHdlIGFyZSBuYXZpZ2F0aW5nIHRvIGEgZG9tYWluIGxvY2FsZSBlbnN1cmUgd2UgcmVkaXJlY3QgdG8gdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlY3QgZG9tYWluXG4gICAgICAgICAgICAgICAgICAgIGlmICghZGlkTmF2aWdhdGUgJiYgZGV0ZWN0ZWREb21haW4gJiYgX3RoaXMuaXNMb2NhbGVEb21haW4gJiYgc2VsZi5sb2NhdGlvbi5ob3N0bmFtZSAhPT0gZGV0ZWN0ZWREb21haW4uZG9tYWluKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhc05vQmFzZVBhdGggPSAoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChhcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgaHR0cCR7ZGV0ZWN0ZWREb21haW4uaHR0cCA/ICcnIDogJ3MnfTovLyR7ZGV0ZWN0ZWREb21haW4uZG9tYWlufSR7KDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgoYCR7bmV4dFN0YXRlLmxvY2FsZSA9PT0gZGV0ZWN0ZWREb21haW4uZGVmYXVsdExvY2FsZSA/ICcnIDogYC8ke25leHRTdGF0ZS5sb2NhbGV9YH0ke2FzTm9CYXNlUGF0aCA9PT0gJy8nID8gJycgOiBhc05vQmFzZVBhdGh9YCB8fCAnLycpfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHdhcyBwcmV2aW91c2x5IGEgcmV0dXJuIGJ1dCB3YXMgcmVtb3ZlZCBpbiBmYXZvclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgYmV0dGVyIGRlYWQgY29kZSBlbGltaW5hdGlvbiB3aXRoIHJlZ2VuZXJhdG9yIHJ1bnRpbWVcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpZE5hdmlnYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZGlkTmF2aWdhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCgpPT57fSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gbWFya2luZyByb3V0ZSBjaGFuZ2VzIGFzIGEgbmF2aWdhdGlvbiBzdGFydCBlbnRyeVxuICAgICAgICAgICAgaWYgKF91dGlscy5TVCkge1xuICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlLm1hcmsoJ3JvdXRlQ2hhbmdlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB7IHNoYWxsb3cgPWZhbHNlICwgc2Nyb2xsID10cnVlICB9ID0gb3B0aW9ucztcbiAgICAgICAgICAgIGNvbnN0IHJvdXRlUHJvcHMgPSB7XG4gICAgICAgICAgICAgICAgc2hhbGxvd1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChfdGhpcy5faW5GbGlnaHRSb3V0ZSAmJiBfdGhpcy5jbGMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzU3NyKSB7XG4gICAgICAgICAgICAgICAgICAgIFJvdXRlci5ldmVudHMuZW1pdCgncm91dGVDaGFuZ2VFcnJvcicsIGJ1aWxkQ2FuY2VsbGF0aW9uRXJyb3IoKSwgX3RoaXMuX2luRmxpZ2h0Um91dGUsIHJvdXRlUHJvcHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBfdGhpcy5jbGMoKTtcbiAgICAgICAgICAgICAgICBfdGhpcy5jbGMgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXMgPSAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aCgoMCwgX2FkZExvY2FsZSkuYWRkTG9jYWxlKCgwLCBfaGFzQmFzZVBhdGgpLmhhc0Jhc2VQYXRoKGFzKSA/ICgwLCBfcmVtb3ZlQmFzZVBhdGgpLnJlbW92ZUJhc2VQYXRoKGFzKSA6IGFzLCBvcHRpb25zLmxvY2FsZSwgX3RoaXMuZGVmYXVsdExvY2FsZSkpO1xuICAgICAgICAgICAgY29uc3QgY2xlYW5lZEFzID0gKDAsIF9yZW1vdmVMb2NhbGUpLnJlbW92ZUxvY2FsZSgoMCwgX2hhc0Jhc2VQYXRoKS5oYXNCYXNlUGF0aChhcykgPyAoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChhcykgOiBhcywgbmV4dFN0YXRlLmxvY2FsZSk7XG4gICAgICAgICAgICBfdGhpcy5faW5GbGlnaHRSb3V0ZSA9IGFzO1xuICAgICAgICAgICAgbGV0IGxvY2FsZUNoYW5nZSA9IHByZXZMb2NhbGUgIT09IG5leHRTdGF0ZS5sb2NhbGU7XG4gICAgICAgICAgICAvLyBJZiB0aGUgdXJsIGNoYW5nZSBpcyBvbmx5IHJlbGF0ZWQgdG8gYSBoYXNoIGNoYW5nZVxuICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBwcm9jZWVkLiBXZSBzaG91bGQgb25seSBjaGFuZ2UgdGhlIHN0YXRlLlxuICAgICAgICAgICAgaWYgKCFpc1F1ZXJ5VXBkYXRpbmcgJiYgX3RoaXMub25seUFIYXNoQ2hhbmdlKGNsZWFuZWRBcykgJiYgIWxvY2FsZUNoYW5nZSkge1xuICAgICAgICAgICAgICAgIG5leHRTdGF0ZS5hc1BhdGggPSBjbGVhbmVkQXM7XG4gICAgICAgICAgICAgICAgUm91dGVyLmV2ZW50cy5lbWl0KCdoYXNoQ2hhbmdlU3RhcnQnLCBhcywgcm91dGVQcm9wcyk7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogZG8gd2UgbmVlZCB0aGUgcmVzb2x2ZWQgaHJlZiB3aGVuIG9ubHkgYSBoYXNoIGNoYW5nZT9cbiAgICAgICAgICAgICAgICBfdGhpcy5jaGFuZ2VTdGF0ZShtZXRob2QsIHVybCwgYXMsIF9leHRlbmRzKHt9LCBvcHRpb25zLCB7XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbDogZmFsc2VcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgaWYgKHNjcm9sbCkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5zY3JvbGxUb0hhc2goY2xlYW5lZEFzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQgX3RoaXMuc2V0KG5leHRTdGF0ZSwgX3RoaXMuY29tcG9uZW50c1tuZXh0U3RhdGUucm91dGVdLCBudWxsKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCgwLCBfaXNFcnJvcikuZGVmYXVsdChlcnIpICYmIGVyci5jYW5jZWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFJvdXRlci5ldmVudHMuZW1pdCgncm91dGVDaGFuZ2VFcnJvcicsIGVyciwgY2xlYW5lZEFzLCByb3V0ZVByb3BzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFJvdXRlci5ldmVudHMuZW1pdCgnaGFzaENoYW5nZUNvbXBsZXRlJywgYXMsIHJvdXRlUHJvcHMpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHBhcnNlZCA9ICgwLCBfcGFyc2VSZWxhdGl2ZVVybCkucGFyc2VSZWxhdGl2ZVVybCh1cmwpO1xuICAgICAgICAgICAgbGV0IHsgcGF0aG5hbWUgLCBxdWVyeSAgfSA9IHBhcnNlZDtcbiAgICAgICAgICAgIC8vIFRoZSBidWlsZCBtYW5pZmVzdCBuZWVkcyB0byBiZSBsb2FkZWQgYmVmb3JlIGF1dG8tc3RhdGljIGR5bmFtaWMgcGFnZXNcbiAgICAgICAgICAgIC8vIGdldCB0aGVpciBxdWVyeSBwYXJhbWV0ZXJzIHRvIGFsbG93IGVuc3VyaW5nIHRoZXkgY2FuIGJlIHBhcnNlZCBwcm9wZXJseVxuICAgICAgICAgICAgLy8gd2hlbiByZXdyaXR0ZW4gdG9cbiAgICAgICAgICAgIGxldCBwYWdlcywgcmV3cml0ZXM7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIFtwYWdlcywgeyBfX3Jld3JpdGVzOiByZXdyaXRlcyAgfV0gPSB5aWVsZCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICAgICAgICAgIF90aGlzLnBhZ2VMb2FkZXIuZ2V0UGFnZUxpc3QoKSxcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9yb3V0ZUxvYWRlcikuZ2V0Q2xpZW50QnVpbGRNYW5pZmVzdCgpLFxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5wYWdlTG9hZGVyLmdldE1pZGRsZXdhcmVMaXN0KCksIFxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgd2UgZmFpbCB0byByZXNvbHZlIHRoZSBwYWdlIGxpc3Qgb3IgY2xpZW50LWJ1aWxkIG1hbmlmZXN0LCB3ZSBtdXN0XG4gICAgICAgICAgICAgICAgLy8gZG8gYSBzZXJ2ZXItc2lkZSB0cmFuc2l0aW9uOlxuICAgICAgICAgICAgICAgIGhhbmRsZUhhcmROYXZpZ2F0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBhcyxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElmIGFza2VkIHRvIGNoYW5nZSB0aGUgY3VycmVudCBVUkwgd2Ugc2hvdWxkIHJlbG9hZCB0aGUgY3VycmVudCBwYWdlXG4gICAgICAgICAgICAvLyAobm90IGxvY2F0aW9uLnJlbG9hZCgpIGJ1dCByZWxvYWQgZ2V0SW5pdGlhbFByb3BzIGFuZCBvdGhlciBOZXh0LmpzIHN0dWZmcylcbiAgICAgICAgICAgIC8vIFdlIGFsc28gbmVlZCB0byBzZXQgdGhlIG1ldGhvZCA9IHJlcGxhY2VTdGF0ZSBhbHdheXNcbiAgICAgICAgICAgIC8vIGFzIHRoaXMgc2hvdWxkIG5vdCBnbyBpbnRvIHRoZSBoaXN0b3J5IChUaGF0J3MgaG93IGJyb3dzZXJzIHdvcmspXG4gICAgICAgICAgICAvLyBXZSBzaG91bGQgY29tcGFyZSB0aGUgbmV3IGFzUGF0aCB0byB0aGUgY3VycmVudCBhc1BhdGgsIG5vdCB0aGUgdXJsXG4gICAgICAgICAgICBpZiAoIV90aGlzLnVybElzTmV3KGNsZWFuZWRBcykgJiYgIWxvY2FsZUNoYW5nZSkge1xuICAgICAgICAgICAgICAgIG1ldGhvZCA9ICdyZXBsYWNlU3RhdGUnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gd2UgbmVlZCB0byByZXNvbHZlIHRoZSBhcyB2YWx1ZSB1c2luZyByZXdyaXRlcyBmb3IgZHluYW1pYyBTU0dcbiAgICAgICAgICAgIC8vIHBhZ2VzIHRvIGFsbG93IGJ1aWxkaW5nIHRoZSBkYXRhIFVSTCBjb3JyZWN0bHlcbiAgICAgICAgICAgIGxldCByZXNvbHZlZEFzID0gYXM7XG4gICAgICAgICAgICAvLyB1cmwgYW5kIGFzIHNob3VsZCBhbHdheXMgYmUgcHJlZml4ZWQgd2l0aCBiYXNlUGF0aCBieSB0aGlzXG4gICAgICAgICAgICAvLyBwb2ludCBieSBlaXRoZXIgbmV4dC9saW5rIG9yIHJvdXRlci5wdXNoL3JlcGxhY2Ugc28gc3RyaXAgdGhlXG4gICAgICAgICAgICAvLyBiYXNlUGF0aCBmcm9tIHRoZSBwYXRobmFtZSB0byBtYXRjaCB0aGUgcGFnZXMgZGlyIDEtdG8tMVxuICAgICAgICAgICAgcGF0aG5hbWUgPSBwYXRobmFtZSA/ICgwLCBfcmVtb3ZlVHJhaWxpbmdTbGFzaCkucmVtb3ZlVHJhaWxpbmdTbGFzaCgoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChwYXRobmFtZSkpIDogcGF0aG5hbWU7XG4gICAgICAgICAgICAvLyB3ZSBkb24ndCBhdHRlbXB0IHJlc29sdmUgYXNQYXRoIHdoZW4gd2UgbmVlZCB0byBleGVjdXRlXG4gICAgICAgICAgICAvLyBtaWRkbGV3YXJlIGFzIHRoZSByZXNvbHZpbmcgd2lsbCBvY2N1ciBzZXJ2ZXItc2lkZVxuICAgICAgICAgICAgY29uc3QgaXNNaWRkbGV3YXJlTWF0Y2ggPSB5aWVsZCBtYXRjaGVzTWlkZGxld2FyZSh7XG4gICAgICAgICAgICAgICAgYXNQYXRoOiBhcyxcbiAgICAgICAgICAgICAgICBsb2NhbGU6IG5leHRTdGF0ZS5sb2NhbGUsXG4gICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zaGFsbG93ICYmIGlzTWlkZGxld2FyZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcGF0aG5hbWUgPSBfdGhpcy5wYXRobmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzaG91bGRSZXNvbHZlSHJlZiAmJiBwYXRobmFtZSAhPT0gJy9fZXJyb3InKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5fc2hvdWxkUmVzb2x2ZUhyZWYgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSEFTX1JFV1JJVEVTICYmIGFzLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXdyaXRlc1Jlc3VsdCA9ICgwLCBfcmVzb2x2ZVJld3JpdGVzKS5kZWZhdWx0KCgwLCBfYWRkQmFzZVBhdGgpLmFkZEJhc2VQYXRoKCgwLCBfYWRkTG9jYWxlKS5hZGRMb2NhbGUoY2xlYW5lZEFzLCBuZXh0U3RhdGUubG9jYWxlKSwgdHJ1ZSksIHBhZ2VzLCByZXdyaXRlcywgcXVlcnksIChwKT0+cmVzb2x2ZUR5bmFtaWNSb3V0ZShwLCBwYWdlcyksIF90aGlzLmxvY2FsZXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmV3cml0ZXNSZXN1bHQuZXh0ZXJuYWxEZXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXI6IF90aGlzXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNNaWRkbGV3YXJlTWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQXMgPSByZXdyaXRlc1Jlc3VsdC5hc1BhdGg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHJld3JpdGVzUmVzdWx0Lm1hdGNoZWRQYWdlICYmIHJld3JpdGVzUmVzdWx0LnJlc29sdmVkSHJlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhpcyBkaXJlY3RseSBtYXRjaGVzIGEgcGFnZSB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgaHJlZiB0b1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3cgdGhlIGNvcnJlY3QgcGFnZSBjaHVuayB0byBiZSBsb2FkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lID0gcmV3cml0ZXNSZXN1bHQucmVzb2x2ZWRIcmVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkLnBhdGhuYW1lID0gKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgocGF0aG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc01pZGRsZXdhcmVNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9ICgwLCBfZm9ybWF0VXJsKS5mb3JtYXRXaXRoVmFsaWRhdGlvbihwYXJzZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkLnBhdGhuYW1lID0gcmVzb2x2ZUR5bmFtaWNSb3V0ZShwYXRobmFtZSwgcGFnZXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VkLnBhdGhuYW1lICE9PSBwYXRobmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUgPSBwYXJzZWQucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWQucGF0aG5hbWUgPSAoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aChwYXRobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTWlkZGxld2FyZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHBhcnNlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWlzTG9jYWxVUkwoYXMpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGhyZWY6IFwiJHt1cmx9XCIgYW5kIGFzOiBcIiR7YXN9XCIsIHJlY2VpdmVkIHJlbGF0aXZlIGhyZWYgYW5kIGV4dGVybmFsIGFzYCArIGBcXG5TZWUgbW9yZSBpbmZvOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9pbnZhbGlkLXJlbGF0aXZlLXVybC1leHRlcm5hbC1hc2ApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIHVybDogYXMsXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlcjogX3RoaXNcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlZEFzID0gKDAsIF9yZW1vdmVMb2NhbGUpLnJlbW92ZUxvY2FsZSgoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChyZXNvbHZlZEFzKSwgbmV4dFN0YXRlLmxvY2FsZSk7XG4gICAgICAgICAgICBsZXQgcm91dGUgPSAoMCwgX3JlbW92ZVRyYWlsaW5nU2xhc2gpLnJlbW92ZVRyYWlsaW5nU2xhc2gocGF0aG5hbWUpO1xuICAgICAgICAgICAgbGV0IHJvdXRlTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICgoMCwgX2lzRHluYW1pYykuaXNEeW5hbWljUm91dGUocm91dGUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkQXMgPSAoMCwgX3BhcnNlUmVsYXRpdmVVcmwpLnBhcnNlUmVsYXRpdmVVcmwocmVzb2x2ZWRBcyk7XG4gICAgICAgICAgICAgICAgY29uc3QgYXNQYXRobmFtZSA9IHBhcnNlZEFzLnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRlUmVnZXggPSAoMCwgX3JvdXRlUmVnZXgpLmdldFJvdXRlUmVnZXgocm91dGUpO1xuICAgICAgICAgICAgICAgIHJvdXRlTWF0Y2ggPSAoMCwgX3JvdXRlTWF0Y2hlcikuZ2V0Um91dGVNYXRjaGVyKHJvdXRlUmVnZXgpKGFzUGF0aG5hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNob3VsZEludGVycG9sYXRlID0gcm91dGUgPT09IGFzUGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgY29uc3QgaW50ZXJwb2xhdGVkQXMgPSBzaG91bGRJbnRlcnBvbGF0ZSA/IGludGVycG9sYXRlQXMocm91dGUsIGFzUGF0aG5hbWUsIHF1ZXJ5KSA6IHt9O1xuICAgICAgICAgICAgICAgIGlmICghcm91dGVNYXRjaCB8fCBzaG91bGRJbnRlcnBvbGF0ZSAmJiAhaW50ZXJwb2xhdGVkQXMucmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pc3NpbmdQYXJhbXMgPSBPYmplY3Qua2V5cyhyb3V0ZVJlZ2V4Lmdyb3VwcykuZmlsdGVyKChwYXJhbSk9PiFxdWVyeVtwYXJhbV0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWlzc2luZ1BhcmFtcy5sZW5ndGggPiAwICYmICFpc01pZGRsZXdhcmVNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYCR7c2hvdWxkSW50ZXJwb2xhdGUgPyBgSW50ZXJwb2xhdGluZyBocmVmYCA6IGBNaXNtYXRjaGluZyBcXGBhc1xcYCBhbmQgXFxgaHJlZlxcYGB9IGZhaWxlZCB0byBtYW51YWxseSBwcm92aWRlIGAgKyBgdGhlIHBhcmFtczogJHttaXNzaW5nUGFyYW1zLmpvaW4oJywgJyl9IGluIHRoZSBcXGBocmVmXFxgJ3MgXFxgcXVlcnlcXGBgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigoc2hvdWxkSW50ZXJwb2xhdGUgPyBgVGhlIHByb3ZpZGVkIFxcYGhyZWZcXGAgKCR7dXJsfSkgdmFsdWUgaXMgbWlzc2luZyBxdWVyeSB2YWx1ZXMgKCR7bWlzc2luZ1BhcmFtcy5qb2luKCcsICcpfSkgdG8gYmUgaW50ZXJwb2xhdGVkIHByb3Blcmx5LiBgIDogYFRoZSBwcm92aWRlZCBcXGBhc1xcYCB2YWx1ZSAoJHthc1BhdGhuYW1lfSkgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIFxcYGhyZWZcXGAgdmFsdWUgKCR7cm91dGV9KS4gYCkgKyBgUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy8ke3Nob3VsZEludGVycG9sYXRlID8gJ2hyZWYtaW50ZXJwb2xhdGlvbi1mYWlsZWQnIDogJ2luY29tcGF0aWJsZS1ocmVmLWFzJ31gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkSW50ZXJwb2xhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgYXMgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oT2JqZWN0LmFzc2lnbih7fSwgcGFyc2VkQXMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lOiBpbnRlcnBvbGF0ZWRBcy5yZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVyeTogb21pdChxdWVyeSwgaW50ZXJwb2xhdGVkQXMucGFyYW1zKVxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTWVyZ2UgcGFyYW1zIGludG8gYHF1ZXJ5YCwgb3ZlcndyaXRpbmcgYW55IHNwZWNpZmllZCBpbiBzZWFyY2hcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihxdWVyeSwgcm91dGVNYXRjaCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc1F1ZXJ5VXBkYXRpbmcpIHtcbiAgICAgICAgICAgICAgICBSb3V0ZXIuZXZlbnRzLmVtaXQoJ3JvdXRlQ2hhbmdlU3RhcnQnLCBhcywgcm91dGVQcm9wcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHZhciByZWYyLCByZWYzO1xuICAgICAgICAgICAgICAgIGxldCByb3V0ZUluZm8gPSB5aWVsZCBfdGhpcy5nZXRSb3V0ZUluZm8oe1xuICAgICAgICAgICAgICAgICAgICByb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICBhcyxcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRBcyxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVQcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBuZXh0U3RhdGUubG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICBpc1ByZXZpZXc6IG5leHRTdGF0ZS5pc1ByZXZpZXcsXG4gICAgICAgICAgICAgICAgICAgIGhhc01pZGRsZXdhcmU6IGlzTWlkZGxld2FyZU1hdGNoXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKCdyb3V0ZScgaW4gcm91dGVJbmZvICYmIGlzTWlkZGxld2FyZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lID0gcm91dGVJbmZvLnJvdXRlIHx8IHJvdXRlO1xuICAgICAgICAgICAgICAgICAgICByb3V0ZSA9IHBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICAgICBxdWVyeSA9IE9iamVjdC5hc3NpZ24oe30sIHJvdXRlSW5mby5xdWVyeSB8fCB7fSwgcXVlcnkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocm91dGVNYXRjaCAmJiBwYXRobmFtZSAhPT0gcGFyc2VkLnBhdGhuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhyb3V0ZU1hdGNoKS5mb3JFYWNoKChrZXkpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJvdXRlTWF0Y2ggJiYgcXVlcnlba2V5XSA9PT0gcm91dGVNYXRjaFtrZXldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBxdWVyeVtrZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICgoMCwgX2lzRHluYW1pYykuaXNEeW5hbWljUm91dGUocGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVmaXhlZEFzID0gcm91dGVJbmZvLnJlc29sdmVkQXMgfHwgKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgoKDAsIF9hZGRMb2NhbGUpLmFkZExvY2FsZShhcywgbmV4dFN0YXRlLmxvY2FsZSksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJld3JpdGVBcyA9IHByZWZpeGVkQXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKDAsIF9oYXNCYXNlUGF0aCkuaGFzQmFzZVBhdGgocmV3cml0ZUFzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld3JpdGVBcyA9ICgwLCBfcmVtb3ZlQmFzZVBhdGgpLnJlbW92ZUJhc2VQYXRoKHJld3JpdGVBcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsZVJlc3VsdCA9ICgwLCBfbm9ybWFsaXplTG9jYWxlUGF0aCkubm9ybWFsaXplTG9jYWxlUGF0aChyZXdyaXRlQXMsIF90aGlzLmxvY2FsZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRTdGF0ZS5sb2NhbGUgPSBsb2NhbGVSZXN1bHQuZGV0ZWN0ZWRMb2NhbGUgfHwgbmV4dFN0YXRlLmxvY2FsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXdyaXRlQXMgPSBsb2NhbGVSZXN1bHQucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByb3V0ZVJlZ2V4ID0gKDAsIF9yb3V0ZVJlZ2V4KS5nZXRSb3V0ZVJlZ2V4KHBhdGhuYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1clJvdXRlTWF0Y2ggPSAoMCwgX3JvdXRlTWF0Y2hlcikuZ2V0Um91dGVNYXRjaGVyKHJvdXRlUmVnZXgpKHJld3JpdGVBcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VyUm91dGVNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocXVlcnksIGN1clJvdXRlTWF0Y2gpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIElmIHRoZSByb3V0ZUluZm8gYnJpbmdzIGEgcmVkaXJlY3Qgd2Ugc2ltcGx5IGFwcGx5IGl0LlxuICAgICAgICAgICAgICAgIGlmICgndHlwZScgaW4gcm91dGVJbmZvKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyb3V0ZUluZm8udHlwZSA9PT0gJ3JlZGlyZWN0LWludGVybmFsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmNoYW5nZShtZXRob2QsIHJvdXRlSW5mby5uZXdVcmwsIHJvdXRlSW5mby5uZXdBcywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiByb3V0ZUluZm8uZGVzdGluYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKCk9Pnt9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgeyBlcnJvciAsIHByb3BzICwgX19OX1NTRyAsIF9fTl9TU1AgIH0gPSByb3V0ZUluZm87XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gcm91dGVJbmZvLkNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50ICYmIGNvbXBvbmVudC51bnN0YWJsZV9zY3JpcHRMb2FkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2NyaXB0cyA9IFtdLmNvbmNhdChjb21wb25lbnQudW5zdGFibGVfc2NyaXB0TG9hZGVyKCkpO1xuICAgICAgICAgICAgICAgICAgICBzY3JpcHRzLmZvckVhY2goKHNjcmlwdCk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfc2NyaXB0KS5oYW5kbGVDbGllbnRTY3JpcHRMb2FkKHNjcmlwdC5wcm9wcyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBoYW5kbGUgcmVkaXJlY3Qgb24gY2xpZW50LXRyYW5zaXRpb25cbiAgICAgICAgICAgICAgICBpZiAoKF9fTl9TU0cgfHwgX19OX1NTUCkgJiYgcHJvcHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BzLnBhZ2VQcm9wcyAmJiBwcm9wcy5wYWdlUHJvcHMuX19OX1JFRElSRUNUKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2UgdGhlIGRlc3RpbmF0aW9uIGZyb20gcmVkaXJlY3Qgd2l0aG91dCBhZGRpbmcgbG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmxvY2FsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVzdGluYXRpb24gPSBwcm9wcy5wYWdlUHJvcHMuX19OX1JFRElSRUNUO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgZGVzdGluYXRpb24gaXMgaW50ZXJuYWwgKHJlc29sdmVzIHRvIGEgcGFnZSkgYW5kIGF0dGVtcHRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsaWVudC1uYXZpZ2F0aW9uIGlmIGl0IGlzIGZhbGxpbmcgYmFjayB0byBoYXJkIG5hdmlnYXRpb24gaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0J3Mgbm90XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVzdGluYXRpb24uc3RhcnRzV2l0aCgnLycpICYmIHByb3BzLnBhZ2VQcm9wcy5fX05fUkVESVJFQ1RfQkFTRV9QQVRIICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZEhyZWYgPSAoMCwgX3BhcnNlUmVsYXRpdmVVcmwpLnBhcnNlUmVsYXRpdmVVcmwoZGVzdGluYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZEhyZWYucGF0aG5hbWUgPSByZXNvbHZlRHluYW1pY1JvdXRlKHBhcnNlZEhyZWYucGF0aG5hbWUsIHBhZ2VzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHVybDogbmV3VXJsICwgYXM6IG5ld0FzICB9ID0gcHJlcGFyZVVybEFzKF90aGlzLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5jaGFuZ2UobWV0aG9kLCBuZXdVcmwsIG5ld0FzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUhhcmROYXZpZ2F0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGRlc3RpbmF0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlcjogX3RoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCgpPT57fSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbmV4dFN0YXRlLmlzUHJldmlldyA9ICEhcHJvcHMuX19OX1BSRVZJRVc7XG4gICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBTU0cgZGF0YSA0MDRcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BzLm5vdEZvdW5kID09PSBTU0dfREFUQV9OT1RfRk9VTkQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub3RGb3VuZFJvdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBfdGhpcy5mZXRjaENvbXBvbmVudCgnLzQwNCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdEZvdW5kUm91dGUgPSAnLzQwNCc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChfKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90Rm91bmRSb3V0ZSA9ICcvX2Vycm9yJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlSW5mbyA9IHlpZWxkIF90aGlzLmdldFJvdXRlSW5mbyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGU6IG5vdEZvdW5kUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWU6IG5vdEZvdW5kUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRBcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZVByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWxsb3c6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IG5leHRTdGF0ZS5sb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmV2aWV3OiBuZXh0U3RhdGUuaXNQcmV2aWV3XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgndHlwZScgaW4gcm91dGVJbmZvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIG1pZGRsZXdhcmUgZWZmZWN0IG9uIC80MDRgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBSb3V0ZXIuZXZlbnRzLmVtaXQoJ2JlZm9yZUhpc3RvcnlDaGFuZ2UnLCBhcywgcm91dGVQcm9wcyk7XG4gICAgICAgICAgICAgICAgX3RoaXMuY2hhbmdlU3RhdGUobWV0aG9kLCB1cmwsIGFzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNRdWVyeVVwZGF0aW5nICYmIHBhdGhuYW1lID09PSAnL19lcnJvcicgJiYgKChyZWYyID0gc2VsZi5fX05FWFRfREFUQV9fLnByb3BzKSA9PSBudWxsID8gdm9pZCAwIDogKHJlZjMgPSByZWYyLnBhZ2VQcm9wcykgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZjMuc3RhdHVzQ29kZSkgPT09IDUwMCAmJiAocHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IHByb3BzLnBhZ2VQcm9wcykpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZW5zdXJlIHN0YXR1c0NvZGUgaXMgc3RpbGwgY29ycmVjdCBmb3Igc3RhdGljIDUwMCBwYWdlXG4gICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXBkYXRpbmcgcXVlcnkgaW5mb3JtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgcHJvcHMucGFnZVByb3BzLnN0YXR1c0NvZGUgPSA1MDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBfcm91dGU7XG4gICAgICAgICAgICAgICAgLy8gc2hhbGxvdyByb3V0aW5nIGlzIG9ubHkgYWxsb3dlZCBmb3Igc2FtZSBwYWdlIFVSTCBjaGFuZ2VzLlxuICAgICAgICAgICAgICAgIGNvbnN0IGlzVmFsaWRTaGFsbG93Um91dGUgPSBvcHRpb25zLnNoYWxsb3cgJiYgbmV4dFN0YXRlLnJvdXRlID09PSAoKF9yb3V0ZSA9IHJvdXRlSW5mby5yb3V0ZSkgIT0gbnVsbCA/IF9yb3V0ZSA6IHJvdXRlKTtcbiAgICAgICAgICAgICAgICB2YXIgX3Njcm9sbDtcbiAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRTY3JvbGwgPSAoX3Njcm9sbCA9IG9wdGlvbnMuc2Nyb2xsKSAhPSBudWxsID8gX3Njcm9sbCA6ICFpc1ZhbGlkU2hhbGxvd1JvdXRlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc2V0U2Nyb2xsID0gc2hvdWxkU2Nyb2xsID8ge1xuICAgICAgICAgICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgICAgICAgICB5OiAwXG4gICAgICAgICAgICAgICAgfSA6IG51bGw7XG4gICAgICAgICAgICAgICAgeWllbGQgX3RoaXMuc2V0KF9leHRlbmRzKHt9LCBuZXh0U3RhdGUsIHtcbiAgICAgICAgICAgICAgICAgICAgcm91dGUsXG4gICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lLFxuICAgICAgICAgICAgICAgICAgICBxdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgYXNQYXRoOiBjbGVhbmVkQXMsXG4gICAgICAgICAgICAgICAgICAgIGlzRmFsbGJhY2s6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSksIHJvdXRlSW5mbywgZm9yY2VkU2Nyb2xsICE9IG51bGwgPyBmb3JjZWRTY3JvbGwgOiByZXNldFNjcm9sbCkuY2F0Y2goKGUpPT57XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLmNhbmNlbGxlZCkgZXJyb3IgPSBlcnJvciB8fCBlO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNRdWVyeVVwZGF0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBSb3V0ZXIuZXZlbnRzLmVtaXQoJ3JvdXRlQ2hhbmdlRXJyb3InLCBlcnJvciwgY2xlYW5lZEFzLCByb3V0ZVByb3BzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9JMThOX1NVUFBPUlQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRTdGF0ZS5sb2NhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nID0gbmV4dFN0YXRlLmxvY2FsZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIWlzUXVlcnlVcGRhdGluZykge1xuICAgICAgICAgICAgICAgICAgICBSb3V0ZXIuZXZlbnRzLmVtaXQoJ3JvdXRlQ2hhbmdlQ29tcGxldGUnLCBhcywgcm91dGVQcm9wcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEEgaGFzaCBtYXJrICMgaXMgdGhlIG9wdGlvbmFsIGxhc3QgcGFydCBvZiBhIFVSTFxuICAgICAgICAgICAgICAgIGNvbnN0IGhhc2hSZWdleCA9IC8jLiskLztcbiAgICAgICAgICAgICAgICBpZiAoc2hvdWxkU2Nyb2xsICYmIGhhc2hSZWdleC50ZXN0KGFzKSkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5zY3JvbGxUb0hhc2goYXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycjEpIHtcbiAgICAgICAgICAgICAgICBpZiAoKDAsIF9pc0Vycm9yKS5kZWZhdWx0KGVycjEpICYmIGVycjEuY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkoKTtcbiAgICB9XG4gICAgY2hhbmdlU3RhdGUobWV0aG9kLCB1cmwsIGFzLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93Lmhpc3RvcnkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgV2FybmluZzogd2luZG93Lmhpc3RvcnkgaXMgbm90IGF2YWlsYWJsZS5gKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdy5oaXN0b3J5W21ldGhvZF0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgV2FybmluZzogd2luZG93Lmhpc3RvcnkuJHttZXRob2R9IGlzIG5vdCBhdmFpbGFibGVgKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1ldGhvZCAhPT0gJ3B1c2hTdGF0ZScgfHwgKDAsIF91dGlscykuZ2V0VVJMKCkgIT09IGFzKSB7XG4gICAgICAgICAgICB0aGlzLl9zaGFsbG93ID0gb3B0aW9ucy5zaGFsbG93O1xuICAgICAgICAgICAgd2luZG93Lmhpc3RvcnlbbWV0aG9kXSh7XG4gICAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgICAgIGFzLFxuICAgICAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICAgICAgX19OOiB0cnVlLFxuICAgICAgICAgICAgICAgIGtleTogdGhpcy5fa2V5ID0gbWV0aG9kICE9PSAncHVzaFN0YXRlJyA/IHRoaXMuX2tleSA6IGNyZWF0ZUtleSgpXG4gICAgICAgICAgICB9LCAvLyBNb3N0IGJyb3dzZXJzIGN1cnJlbnRseSBpZ25vcmVzIHRoaXMgcGFyYW1ldGVyLCBhbHRob3VnaCB0aGV5IG1heSB1c2UgaXQgaW4gdGhlIGZ1dHVyZS5cbiAgICAgICAgICAgIC8vIFBhc3NpbmcgdGhlIGVtcHR5IHN0cmluZyBoZXJlIHNob3VsZCBiZSBzYWZlIGFnYWluc3QgZnV0dXJlIGNoYW5nZXMgdG8gdGhlIG1ldGhvZC5cbiAgICAgICAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IaXN0b3J5L3JlcGxhY2VTdGF0ZVxuICAgICAgICAgICAgJycsIGFzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBoYW5kbGVSb3V0ZUluZm9FcnJvcihlcnIsIHBhdGhuYW1lLCBxdWVyeSwgYXMsIHJvdXRlUHJvcHMsIGxvYWRFcnJvckZhaWwpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKigpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgIGlmIChlcnIuY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICAgICAgLy8gYnViYmxlIHVwIGNhbmNlbGxhdGlvbiBlcnJvcnNcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKDAsIF9yb3V0ZUxvYWRlcikuaXNBc3NldEVycm9yKGVycikgfHwgbG9hZEVycm9yRmFpbCkge1xuICAgICAgICAgICAgICAgIFJvdXRlci5ldmVudHMuZW1pdCgncm91dGVDaGFuZ2VFcnJvcicsIGVyciwgYXMsIHJvdXRlUHJvcHMpO1xuICAgICAgICAgICAgICAgIC8vIElmIHdlIGNhbid0IGxvYWQgdGhlIHBhZ2UgaXQgY291bGQgYmUgb25lIG9mIGZvbGxvd2luZyByZWFzb25zXG4gICAgICAgICAgICAgICAgLy8gIDEuIFBhZ2UgZG9lc24ndCBleGlzdHNcbiAgICAgICAgICAgICAgICAvLyAgMi4gUGFnZSBkb2VzIGV4aXN0IGluIGEgZGlmZmVyZW50IHpvbmVcbiAgICAgICAgICAgICAgICAvLyAgMy4gSW50ZXJuYWwgZXJyb3Igd2hpbGUgbG9hZGluZyB0aGUgcGFnZVxuICAgICAgICAgICAgICAgIC8vIFNvLCBkb2luZyBhIGhhcmQgcmVsb2FkIGlzIHRoZSBwcm9wZXIgd2F5IHRvIGRlYWwgd2l0aCB0aGlzLlxuICAgICAgICAgICAgICAgIGhhbmRsZUhhcmROYXZpZ2F0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBhcyxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vIENoYW5naW5nIHRoZSBVUkwgZG9lc24ndCBibG9jayBleGVjdXRpbmcgdGhlIGN1cnJlbnQgY29kZSBwYXRoLlxuICAgICAgICAgICAgICAgIC8vIFNvIGxldCdzIHRocm93IGEgY2FuY2VsbGF0aW9uIGVycm9yIHN0b3AgdGhlIHJvdXRpbmcgbG9naWMuXG4gICAgICAgICAgICAgICAgdGhyb3cgYnVpbGRDYW5jZWxsYXRpb25FcnJvcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgQ29tcG9uZW50O1xuICAgICAgICAgICAgICAgIGxldCBzdHlsZVNoZWV0cztcbiAgICAgICAgICAgICAgICBsZXQgcHJvcHM7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBDb21wb25lbnQgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiBzdHlsZVNoZWV0cyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgKHsgcGFnZTogQ29tcG9uZW50ICwgc3R5bGVTaGVldHMgIH0gPSB5aWVsZCBfdGhpcy5mZXRjaENvbXBvbmVudCgnL19lcnJvcicpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgcm91dGVJbmZvID0ge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgICAgICBzdHlsZVNoZWV0cyxcbiAgICAgICAgICAgICAgICAgICAgZXJyLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAoIXJvdXRlSW5mby5wcm9wcykge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVJbmZvLnByb3BzID0geWllbGQgX3RoaXMuZ2V0SW5pdGlhbFByb3BzKENvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGdpcEVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gZXJyb3IgcGFnZSBgZ2V0SW5pdGlhbFByb3BzYDogJywgZ2lwRXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlSW5mby5wcm9wcyA9IHt9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByb3V0ZUluZm87XG4gICAgICAgICAgICB9IGNhdGNoIChyb3V0ZUluZm9FcnIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuaGFuZGxlUm91dGVJbmZvRXJyb3IoKDAsIF9pc0Vycm9yKS5kZWZhdWx0KHJvdXRlSW5mb0VycikgPyByb3V0ZUluZm9FcnIgOiBuZXcgRXJyb3Iocm91dGVJbmZvRXJyICsgJycpLCBwYXRobmFtZSwgcXVlcnksIGFzLCByb3V0ZVByb3BzLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkoKTtcbiAgICB9XG4gICAgZ2V0Um91dGVJbmZvKHsgcm91dGU6IHJlcXVlc3RlZFJvdXRlICwgcGF0aG5hbWUgLCBxdWVyeSAsIGFzICwgcmVzb2x2ZWRBcyAsIHJvdXRlUHJvcHMgLCBsb2NhbGUgLCBoYXNNaWRkbGV3YXJlICwgaXNQcmV2aWV3ICwgdW5zdGFibGVfc2tpcENsaWVudENhY2hlICB9KSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiooKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgKiBUaGlzIGByb3V0ZWAgYmluZGluZyBjYW4gY2hhbmdlIGlmIHRoZXJlJ3MgYSByZXdyaXRlXG4gICAgICogc28gd2Uga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYWwgcmVxdWVzdGVkIHJvdXRlXG4gICAgICogc28gd2UgY2FuIHN0b3JlIHRoZSBjYWNoZSBmb3IgaXQgYW5kIGF2b2lkIHJlLXJlcXVlc3RpbmcgZXZlcnkgdGltZVxuICAgICAqIGZvciBzaGFsbG93IHJvdXRpbmcgcHVycG9zZXMuXG4gICAgICovIGxldCByb3V0ZSA9IHJlcXVlc3RlZFJvdXRlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB2YXIgcmVmLCByZWY0LCByZWY1O1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZUNhbmNlbGxlZCA9IGdldENhbmNlbGxlZEhhbmRsZXIoe1xuICAgICAgICAgICAgICAgICAgICByb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGxldCBleGlzdGluZ0luZm8gPSBfdGhpcy5jb21wb25lbnRzW3JvdXRlXTtcbiAgICAgICAgICAgICAgICBpZiAocm91dGVQcm9wcy5zaGFsbG93ICYmIGV4aXN0aW5nSW5mbyAmJiBfdGhpcy5yb3V0ZSA9PT0gcm91dGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4aXN0aW5nSW5mbztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IGNhY2hlZFJvdXRlSW5mbyA9IGV4aXN0aW5nSW5mbyAmJiAhKCdpbml0aWFsJyBpbiBleGlzdGluZ0luZm8pICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAnZGV2ZWxvcG1lbnQnID8gZXhpc3RpbmdJbmZvIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZldGNoTmV4dERhdGFQYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFIcmVmOiBfdGhpcy5wYWdlTG9hZGVyLmdldERhdGFIcmVmKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY6ICgwLCBfZm9ybWF0VXJsKS5mb3JtYXRXaXRoVmFsaWRhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2tpcEludGVycG9sYXRpb246IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBhc1BhdGg6IHJlc29sdmVkQXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIGhhc01pZGRsZXdhcmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGlzU2VydmVyUmVuZGVyOiBfdGhpcy5pc1NzcixcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VKU09OOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBpbmZsaWdodENhY2hlOiBfdGhpcy5zZGMsXG4gICAgICAgICAgICAgICAgICAgIHBlcnNpc3RDYWNoZTogIWlzUHJldmlldyxcbiAgICAgICAgICAgICAgICAgICAgaXNQcmVmZXRjaDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHVuc3RhYmxlX3NraXBDbGllbnRDYWNoZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIHdpdGhNaWRkbGV3YXJlRWZmZWN0cyh7XG4gICAgICAgICAgICAgICAgICAgIGZldGNoRGF0YTogKCk9PmZldGNoTmV4dERhdGEoZmV0Y2hOZXh0RGF0YVBhcmFtcyksXG4gICAgICAgICAgICAgICAgICAgIGFzUGF0aDogcmVzb2x2ZWRBcyxcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBsb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlcjogX3RoaXNcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBoYW5kbGVDYW5jZWxsZWQoKTtcbiAgICAgICAgICAgICAgICBpZiAoKGRhdGEgPT0gbnVsbCA/IHZvaWQgMCA6IChyZWYgPSBkYXRhLmVmZmVjdCkgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZi50eXBlKSA9PT0gJ3JlZGlyZWN0LWludGVybmFsJyB8fCAoZGF0YSA9PSBudWxsID8gdm9pZCAwIDogKHJlZjQgPSBkYXRhLmVmZmVjdCkgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZjQudHlwZSkgPT09ICdyZWRpcmVjdC1leHRlcm5hbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEuZWZmZWN0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoKGRhdGEgPT0gbnVsbCA/IHZvaWQgMCA6IChyZWY1ID0gZGF0YS5lZmZlY3QpID09IG51bGwgPyB2b2lkIDAgOiByZWY1LnR5cGUpID09PSAncmV3cml0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgcm91dGUgPSAoMCwgX3JlbW92ZVRyYWlsaW5nU2xhc2gpLnJlbW92ZVRyYWlsaW5nU2xhc2goZGF0YS5lZmZlY3QucmVzb2x2ZWRIcmVmKTtcbiAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUgPSBkYXRhLmVmZmVjdC5yZXNvbHZlZEhyZWY7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5ID0gX2V4dGVuZHMoe30sIHF1ZXJ5LCBkYXRhLmVmZmVjdC5wYXJzZWRBcy5xdWVyeSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQXMgPSBkYXRhLmVmZmVjdC5wYXJzZWRBcy5wYXRobmFtZTtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgYWdhaW4gdGhlIGNhY2hlIHdpdGggdGhlIG5ldyBkZXN0aW5hdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdJbmZvID0gX3RoaXMuY29tcG9uZW50c1tyb3V0ZV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChyb3V0ZVByb3BzLnNoYWxsb3cgJiYgZXhpc3RpbmdJbmZvICYmIF90aGlzLnJvdXRlID09PSByb3V0ZSAmJiAhaGFzTWlkZGxld2FyZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIG1hdGNoIHdpdGggdGhlIGN1cnJlbnQgcm91dGUgZHVlIHRvIHJld3JpdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBjYW4gY29weSB0aGUgZXhpc3RpbmcgaW5mb3JtYXRpb24gdG8gdGhlIHJld3JpdHRlbiBvbmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGVuLCB3ZSByZXR1cm4gdGhlIGluZm9ybWF0aW9uIGFsb25nIHdpdGggdGhlIG1hdGNoZWQgcm91dGUuXG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5jb21wb25lbnRzW3JlcXVlc3RlZFJvdXRlXSA9IF9leHRlbmRzKHt9LCBleGlzdGluZ0luZm8sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2V4dGVuZHMoe30sIGV4aXN0aW5nSW5mbywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYWNoZWRSb3V0ZUluZm8gPSBleGlzdGluZ0luZm8gJiYgISgnaW5pdGlhbCcgaW4gZXhpc3RpbmdJbmZvKSAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50JyA/IGV4aXN0aW5nSW5mbyA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJvdXRlID09PSAnL2FwaScgfHwgcm91dGUuc3RhcnRzV2l0aCgnL2FwaS8nKSkge1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVIYXJkTmF2aWdhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFzLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBfdGhpc1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCgpPT57fSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRlSW5mbyA9IGNhY2hlZFJvdXRlSW5mbyB8fCAoeWllbGQgX3RoaXMuZmV0Y2hDb21wb25lbnQocm91dGUpLnRoZW4oKHJlcyk9Pih7XG4gICAgICAgICAgICAgICAgICAgICAgICBDb21wb25lbnQ6IHJlcy5wYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVTaGVldHM6IHJlcy5zdHlsZVNoZWV0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9fTl9TU0c6IHJlcy5tb2QuX19OX1NTRyxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9fTl9TU1A6IHJlcy5tb2QuX19OX1NTUCxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9fTl9SU0M6ICEhcmVzLm1vZC5fX25leHRfcnNjX19cbiAgICAgICAgICAgICAgICAgICAgfSkpKTtcbiAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGlzVmFsaWRFbGVtZW50VHlwZSAgfSA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9yZWFjdC1pcycpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRFbGVtZW50VHlwZShyb3V0ZUluZm8uQ29tcG9uZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZGVmYXVsdCBleHBvcnQgaXMgbm90IGEgUmVhY3QgQ29tcG9uZW50IGluIHBhZ2U6IFwiJHtwYXRobmFtZX1cImApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICogRm9yIHNlcnZlciBjb21wb25lbnRzLCBub24tU1NSIHBhZ2VzIHdpbGwgaGF2ZSBzdGF0aWNhbGx5IG9wdGltaXplZFxuICAgICAgICogZmxpZ2h0IGRhdGEgaW4gYSBwcm9kdWN0aW9uIGJ1aWxkLiBTbyBvbmx5IGRldmVsb3BtZW50IGFuZCBTU1IgcGFnZXNcbiAgICAgICAqIHdpbGwgYWx3YXlzIGhhdmUgdGhlIHJlYWwtdGltZSBnZW5lcmF0ZWQgYW5kIHN0cmVhbWVkIGZsaWdodCBkYXRhLlxuICAgICAgICovIGNvbnN0IHVzZVN0cmVhbWVkRmxpZ2h0RGF0YSA9IHJvdXRlSW5mby5fX05fUlNDICYmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nIHx8IHJvdXRlSW5mby5fX05fU1NQKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRGZXRjaERhdGEgPSByb3V0ZUluZm8uX19OX1NTRyB8fCByb3V0ZUluZm8uX19OX1NTUCB8fCByb3V0ZUluZm8uX19OX1JTQztcbiAgICAgICAgICAgICAgICBjb25zdCB7IHByb3BzICB9ID0geWllbGQgX3RoaXMuX2dldERhdGEoX2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkRmV0Y2hEYXRhICYmICF1c2VTdHJlYW1lZEZsaWdodERhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsganNvbiAgfSA9IGRhdGEgfHwgKHlpZWxkIGZldGNoTmV4dERhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFIcmVmOiBfdGhpcy5wYWdlTG9hZGVyLmdldERhdGFIcmVmKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZjogKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzUGF0aDogcmVzb2x2ZWRBcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTZXJ2ZXJSZW5kZXI6IF90aGlzLmlzU3NyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSlNPTjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZsaWdodENhY2hlOiBfdGhpcy5zZGMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc2lzdENhY2hlOiAhaXNQcmV2aWV3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUHJlZmV0Y2g6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc3RhYmxlX3NraXBDbGllbnRDYWNoZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wczoganNvblxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge30sXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogeWllbGQgX3RoaXMuZ2V0SW5pdGlhbFByb3BzKHJvdXRlSW5mby5Db21wb25lbnQsIC8vIHdlIHByb3ZpZGUgQXBwVHJlZSBsYXRlciBzbyB0aGlzIG5lZWRzIHRvIGJlIGBhbnlgXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNQYXRoOiBhcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlczogX3RoaXMubG9jYWxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TG9jYWxlOiBfdGhpcy5kZWZhdWx0TG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAvLyBPbmx5IGJ1c3QgdGhlIGRhdGEgY2FjaGUgZm9yIFNTUCByb3V0ZXMgYWx0aG91Z2hcbiAgICAgICAgICAgICAgICAvLyBtaWRkbGV3YXJlIGNhbiBza2lwIGNhY2hlIHBlciByZXF1ZXN0IHdpdGhcbiAgICAgICAgICAgICAgICAvLyB4LW1pZGRsZXdhcmUtY2FjaGU6IG5vLWNhY2hlIGFzIHdlbGxcbiAgICAgICAgICAgICAgICBpZiAocm91dGVJbmZvLl9fTl9TU1AgJiYgZmV0Y2hOZXh0RGF0YVBhcmFtcy5kYXRhSHJlZikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYWNoZUtleSA9IG5ldyBVUkwoZmV0Y2hOZXh0RGF0YVBhcmFtcy5kYXRhSHJlZiwgd2luZG93LmxvY2F0aW9uLmhyZWYpLmhyZWY7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBfdGhpcy5zZGNbY2FjaGVLZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyB3ZSBraWNrIG9mZiBhIEhFQUQgcmVxdWVzdCBpbiB0aGUgYmFja2dyb3VuZFxuICAgICAgICAgICAgICAgIC8vIHdoZW4gYSBub24tcHJlZmV0Y2ggcmVxdWVzdCBpcyBtYWRlIHRvIHNpZ25hbCByZXZhbGlkYXRpb25cbiAgICAgICAgICAgICAgICBpZiAoIV90aGlzLmlzUHJldmlldyAmJiByb3V0ZUluZm8uX19OX1NTRyAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgICAgICAgICBmZXRjaE5leHREYXRhKE9iamVjdC5hc3NpZ24oe30sIGZldGNoTmV4dERhdGFQYXJhbXMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQmFja2dyb3VuZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNpc3RDYWNoZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmZsaWdodENhY2hlOiBiYWNrZ3JvdW5kQ2FjaGVcbiAgICAgICAgICAgICAgICAgICAgfSkpLmNhdGNoKCgpPT57fSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBmbGlnaHRJbmZvO1xuICAgICAgICAgICAgICAgIGlmIChyb3V0ZUluZm8uX19OX1JTQykge1xuICAgICAgICAgICAgICAgICAgICBmbGlnaHRJbmZvID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgX19mbGlnaHRfXzogdXNlU3RyZWFtZWRGbGlnaHREYXRhID8gKHlpZWxkIF90aGlzLl9nZXREYXRhKCgpPT5fdGhpcy5fZ2V0RmxpZ2h0RGF0YSgoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeTogX2V4dGVuZHMoe30sIHF1ZXJ5LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2ZsaWdodF9fOiAnMSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lOiAoMCwgX2lzRHluYW1pYykuaXNEeW5hbWljUm91dGUocm91dGUpID8gaW50ZXJwb2xhdGVBcyhwYXRobmFtZSwgKDAsIF9wYXJzZVJlbGF0aXZlVXJsKS5wYXJzZVJlbGF0aXZlVXJsKHJlc29sdmVkQXMpLnBhdGhuYW1lLCBxdWVyeSkucmVzdWx0IDogcGF0aG5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpKS5kYXRhIDogcHJvcHMuX19mbGlnaHRfX1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwcm9wcy5wYWdlUHJvcHMgPSBPYmplY3QuYXNzaWduKHt9LCBwcm9wcy5wYWdlUHJvcHMsIGZsaWdodEluZm8pO1xuICAgICAgICAgICAgICAgIHJvdXRlSW5mby5wcm9wcyA9IHByb3BzO1xuICAgICAgICAgICAgICAgIHJvdXRlSW5mby5yb3V0ZSA9IHJvdXRlO1xuICAgICAgICAgICAgICAgIHJvdXRlSW5mby5xdWVyeSA9IHF1ZXJ5O1xuICAgICAgICAgICAgICAgIHJvdXRlSW5mby5yZXNvbHZlZEFzID0gcmVzb2x2ZWRBcztcbiAgICAgICAgICAgICAgICBfdGhpcy5jb21wb25lbnRzW3JvdXRlXSA9IHJvdXRlSW5mbztcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcm91dGUgd2FzIHJld3JpdHRlbiBpbiB0aGUgcHJvY2VzcyBvZiBmZXRjaGluZyBkYXRhLFxuICAgICAgICAgICAgICAgIC8vIHdlIHVwZGF0ZSB0aGUgY2FjaGUgdG8gYWxsb3cgaGl0dGluZyB0aGUgc2FtZSBkYXRhIGZvciBzaGFsbG93IHJlcXVlc3RzLlxuICAgICAgICAgICAgICAgIGlmIChyb3V0ZSAhPT0gcmVxdWVzdGVkUm91dGUpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuY29tcG9uZW50c1tyZXF1ZXN0ZWRSb3V0ZV0gPSBfZXh0ZW5kcyh7fSwgcm91dGVJbmZvLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3V0ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvdXRlSW5mbztcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5oYW5kbGVSb3V0ZUluZm9FcnJvcigoMCwgX2lzRXJyb3IpLmdldFByb3BlckVycm9yKGVyciksIHBhdGhuYW1lLCBxdWVyeSwgYXMsIHJvdXRlUHJvcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSgpO1xuICAgIH1cbiAgICBzZXQoc3RhdGUsIGRhdGEsIHJlc2V0U2Nyb2xsKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViKGRhdGEsIHRoaXMuY29tcG9uZW50c1snL19hcHAnXS5Db21wb25lbnQsIHJlc2V0U2Nyb2xsKTtcbiAgICB9XG4gICAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGV4ZWN1dGUgYmVmb3JlIHJlcGxhY2luZyByb3V0ZXIgc3RhdGVcbiAgICogQHBhcmFtIGNiIGNhbGxiYWNrIHRvIGJlIGV4ZWN1dGVkXG4gICAqLyBiZWZvcmVQb3BTdGF0ZShjYikge1xuICAgICAgICB0aGlzLl9icHMgPSBjYjtcbiAgICB9XG4gICAgb25seUFIYXNoQ2hhbmdlKGFzKSB7XG4gICAgICAgIGlmICghdGhpcy5hc1BhdGgpIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgW29sZFVybE5vSGFzaCwgb2xkSGFzaF0gPSB0aGlzLmFzUGF0aC5zcGxpdCgnIycpO1xuICAgICAgICBjb25zdCBbbmV3VXJsTm9IYXNoLCBuZXdIYXNoXSA9IGFzLnNwbGl0KCcjJyk7XG4gICAgICAgIC8vIE1ha2VzIHN1cmUgd2Ugc2Nyb2xsIHRvIHRoZSBwcm92aWRlZCBoYXNoIGlmIHRoZSB1cmwvaGFzaCBhcmUgdGhlIHNhbWVcbiAgICAgICAgaWYgKG5ld0hhc2ggJiYgb2xkVXJsTm9IYXNoID09PSBuZXdVcmxOb0hhc2ggJiYgb2xkSGFzaCA9PT0gbmV3SGFzaCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgdGhlIHVybHMgYXJlIGNoYW5nZSwgdGhlcmUncyBtb3JlIHRoYW4gYSBoYXNoIGNoYW5nZVxuICAgICAgICBpZiAob2xkVXJsTm9IYXNoICE9PSBuZXdVcmxOb0hhc2gpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB0aGUgaGFzaCBoYXMgY2hhbmdlZCwgdGhlbiBpdCdzIGEgaGFzaCBvbmx5IGNoYW5nZS5cbiAgICAgICAgLy8gVGhpcyBjaGVjayBpcyBuZWNlc3NhcnkgdG8gaGFuZGxlIGJvdGggdGhlIGVudGVyIGFuZFxuICAgICAgICAvLyBsZWF2ZSBoYXNoID09PSAnJyBjYXNlcy4gVGhlIGlkZW50aXR5IGNhc2UgZmFsbHMgdGhyb3VnaFxuICAgICAgICAvLyBhbmQgaXMgdHJlYXRlZCBhcyBhIG5leHQgcmVsb2FkLlxuICAgICAgICByZXR1cm4gb2xkSGFzaCAhPT0gbmV3SGFzaDtcbiAgICB9XG4gICAgc2Nyb2xsVG9IYXNoKGFzKSB7XG4gICAgICAgIGNvbnN0IFssIGhhc2ggPSAnJ10gPSBhcy5zcGxpdCgnIycpO1xuICAgICAgICAvLyBTY3JvbGwgdG8gdG9wIGlmIHRoZSBoYXNoIGlzIGp1c3QgYCNgIHdpdGggbm8gdmFsdWUgb3IgYCN0b3BgXG4gICAgICAgIC8vIFRvIG1pcnJvciBicm93c2Vyc1xuICAgICAgICBpZiAoaGFzaCA9PT0gJycgfHwgaGFzaCA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBEZWNvZGUgaGFzaCB0byBtYWtlIG5vbi1sYXRpbiBhbmNob3Igd29ya3MuXG4gICAgICAgIGNvbnN0IHJhd0hhc2ggPSBkZWNvZGVVUklDb21wb25lbnQoaGFzaCk7XG4gICAgICAgIC8vIEZpcnN0IHdlIGNoZWNrIGlmIHRoZSBlbGVtZW50IGJ5IGlkIGlzIGZvdW5kXG4gICAgICAgIGNvbnN0IGlkRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChyYXdIYXNoKTtcbiAgICAgICAgaWYgKGlkRWwpIHtcbiAgICAgICAgICAgIGlkRWwuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB0aGVyZSdzIG5vIGVsZW1lbnQgd2l0aCB0aGUgaWQsIHdlIGNoZWNrIHRoZSBgbmFtZWAgcHJvcGVydHlcbiAgICAgICAgLy8gVG8gbWlycm9yIGJyb3dzZXJzXG4gICAgICAgIGNvbnN0IG5hbWVFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKHJhd0hhc2gpWzBdO1xuICAgICAgICBpZiAobmFtZUVsKSB7XG4gICAgICAgICAgICBuYW1lRWwuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB1cmxJc05ldyhhc1BhdGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXNQYXRoICE9PSBhc1BhdGg7XG4gICAgfVxuICAgIC8qKlxuICAgKiBQcmVmZXRjaCBwYWdlIGNvZGUsIHlvdSBtYXkgd2FpdCBmb3IgdGhlIGRhdGEgZHVyaW5nIHBhZ2UgcmVuZGVyaW5nLlxuICAgKiBUaGlzIGZlYXR1cmUgb25seSB3b3JrcyBpbiBwcm9kdWN0aW9uIVxuICAgKiBAcGFyYW0gdXJsIHRoZSBocmVmIG9mIHByZWZldGNoZWQgcGFnZVxuICAgKiBAcGFyYW0gYXNQYXRoIHRoZSBhcyBwYXRoIG9mIHRoZSBwcmVmZXRjaGVkIHBhZ2VcbiAgICovIHByZWZldGNoKHVybCwgYXNQYXRoID0gdXJsLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKigpIHtcbiAgICAgICAgICAgIGxldCBwYXJzZWQgPSAoMCwgX3BhcnNlUmVsYXRpdmVVcmwpLnBhcnNlUmVsYXRpdmVVcmwodXJsKTtcbiAgICAgICAgICAgIGxldCB7IHBhdGhuYW1lICwgcXVlcnkgIH0gPSBwYXJzZWQ7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmxvY2FsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUgPSAoMCwgX25vcm1hbGl6ZUxvY2FsZVBhdGgpLm5vcm1hbGl6ZUxvY2FsZVBhdGgocGF0aG5hbWUsIF90aGlzLmxvY2FsZXMpLnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICAgICBwYXJzZWQucGF0aG5hbWUgPSBwYXRobmFtZTtcbiAgICAgICAgICAgICAgICAgICAgdXJsID0gKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHBhcnNlZCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJzZWRBcyA9ICgwLCBfcGFyc2VSZWxhdGl2ZVVybCkucGFyc2VSZWxhdGl2ZVVybChhc1BhdGgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGVQYXRoUmVzdWx0ID0gKDAsIF9ub3JtYWxpemVMb2NhbGVQYXRoKS5ub3JtYWxpemVMb2NhbGVQYXRoKHBhcnNlZEFzLnBhdGhuYW1lLCBfdGhpcy5sb2NhbGVzKTtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkQXMucGF0aG5hbWUgPSBsb2NhbGVQYXRoUmVzdWx0LnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmxvY2FsZSA9IGxvY2FsZVBhdGhSZXN1bHQuZGV0ZWN0ZWRMb2NhbGUgfHwgX3RoaXMuZGVmYXVsdExvY2FsZTtcbiAgICAgICAgICAgICAgICAgICAgYXNQYXRoID0gKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHBhcnNlZEFzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwYWdlcyA9IHlpZWxkIF90aGlzLnBhZ2VMb2FkZXIuZ2V0UGFnZUxpc3QoKTtcbiAgICAgICAgICAgIGxldCByZXNvbHZlZEFzID0gYXNQYXRoO1xuICAgICAgICAgICAgY29uc3QgbG9jYWxlID0gdHlwZW9mIG9wdGlvbnMubG9jYWxlICE9PSAndW5kZWZpbmVkJyA/IG9wdGlvbnMubG9jYWxlIHx8IHVuZGVmaW5lZCA6IF90aGlzLmxvY2FsZTtcbiAgICAgICAgICAgIGNvbnN0IGlzTWlkZGxld2FyZU1hdGNoID0geWllbGQgbWF0Y2hlc01pZGRsZXdhcmUoe1xuICAgICAgICAgICAgICAgIGFzUGF0aDogYXNQYXRoLFxuICAgICAgICAgICAgICAgIGxvY2FsZTogbG9jYWxlLFxuICAgICAgICAgICAgICAgIHJvdXRlcjogX3RoaXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9IQVNfUkVXUklURVMgJiYgYXNQYXRoLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICAgICAgICAgIGxldCByZXdyaXRlcztcbiAgICAgICAgICAgICAgICAoeyBfX3Jld3JpdGVzOiByZXdyaXRlcyAgfSA9IHlpZWxkICgwLCBfcm91dGVMb2FkZXIpLmdldENsaWVudEJ1aWxkTWFuaWZlc3QoKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmV3cml0ZXNSZXN1bHQgPSAoMCwgX3Jlc29sdmVSZXdyaXRlcykuZGVmYXVsdCgoMCwgX2FkZEJhc2VQYXRoKS5hZGRCYXNlUGF0aCgoMCwgX2FkZExvY2FsZSkuYWRkTG9jYWxlKGFzUGF0aCwgX3RoaXMubG9jYWxlKSwgdHJ1ZSksIHBhZ2VzLCByZXdyaXRlcywgcGFyc2VkLnF1ZXJ5LCAocCk9PnJlc29sdmVEeW5hbWljUm91dGUocCwgcGFnZXMpLCBfdGhpcy5sb2NhbGVzKTtcbiAgICAgICAgICAgICAgICBpZiAocmV3cml0ZXNSZXN1bHQuZXh0ZXJuYWxEZXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzb2x2ZWRBcyA9ICgwLCBfcmVtb3ZlTG9jYWxlKS5yZW1vdmVMb2NhbGUoKDAsIF9yZW1vdmVCYXNlUGF0aCkucmVtb3ZlQmFzZVBhdGgocmV3cml0ZXNSZXN1bHQuYXNQYXRoKSwgX3RoaXMubG9jYWxlKTtcbiAgICAgICAgICAgICAgICBpZiAocmV3cml0ZXNSZXN1bHQubWF0Y2hlZFBhZ2UgJiYgcmV3cml0ZXNSZXN1bHQucmVzb2x2ZWRIcmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoaXMgZGlyZWN0bHkgbWF0Y2hlcyBhIHBhZ2Ugd2UgbmVlZCB0byB1cGRhdGUgdGhlIGhyZWYgdG9cbiAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3cgdGhlIGNvcnJlY3QgcGFnZSBjaHVuayB0byBiZSBsb2FkZWRcbiAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUgPSByZXdyaXRlc1Jlc3VsdC5yZXNvbHZlZEhyZWY7XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZC5wYXRobmFtZSA9IHBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTWlkZGxld2FyZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24ocGFyc2VkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcnNlZC5wYXRobmFtZSA9IHJlc29sdmVEeW5hbWljUm91dGUocGFyc2VkLnBhdGhuYW1lLCBwYWdlcyk7XG4gICAgICAgICAgICBpZiAoKDAsIF9pc0R5bmFtaWMpLmlzRHluYW1pY1JvdXRlKHBhcnNlZC5wYXRobmFtZSkpIHtcbiAgICAgICAgICAgICAgICBwYXRobmFtZSA9IHBhcnNlZC5wYXRobmFtZTtcbiAgICAgICAgICAgICAgICBwYXJzZWQucGF0aG5hbWUgPSBwYXRobmFtZTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHF1ZXJ5LCAoMCwgX3JvdXRlTWF0Y2hlcikuZ2V0Um91dGVNYXRjaGVyKCgwLCBfcm91dGVSZWdleCkuZ2V0Um91dGVSZWdleChwYXJzZWQucGF0aG5hbWUpKSgoMCwgX3BhcnNlUGF0aCkucGFyc2VQYXRoKGFzUGF0aCkucGF0aG5hbWUpIHx8IHt9KTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzTWlkZGxld2FyZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHVybCA9ICgwLCBfZm9ybWF0VXJsKS5mb3JtYXRXaXRoVmFsaWRhdGlvbihwYXJzZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFByZWZldGNoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gZGV2ZWxvcG1lbnQgbW9kZSBiZWNhdXNlIGl0IHdvdWxkIHRyaWdnZXIgb24tZGVtYW5kLWVudHJpZXNcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVE9ETzogaWYgdGhlIHJvdXRlIG1pZGRsZXdhcmUncyBkYXRhIHJlcXVlc3RcbiAgICAgICAgICAgIC8vIHJlc29sdmVzIHRvIGlzIG5vdCBhbiBTU0cgcm91dGUgd2Ugc2hvdWxkIGJ1c3QgdGhlIGNhY2hlXG4gICAgICAgICAgICAvLyBidXQgd2Ugc2hvdWxkbid0IGFsbG93IHByZWZldGNoIHRvIGtlZXAgdHJpZ2dlcmluZ1xuICAgICAgICAgICAgLy8gcmVxdWVzdHMgZm9yIFNTUCBwYWdlc1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIHdpdGhNaWRkbGV3YXJlRWZmZWN0cyh7XG4gICAgICAgICAgICAgICAgZmV0Y2hEYXRhOiAoKT0+ZmV0Y2hOZXh0RGF0YSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhSHJlZjogX3RoaXMucGFnZUxvYWRlci5nZXREYXRhSHJlZih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZjogKDAsIF9mb3JtYXRVcmwpLmZvcm1hdFdpdGhWYWxpZGF0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcEludGVycG9sYXRpb246IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNQYXRoOiByZXNvbHZlZEFzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNNaWRkbGV3YXJlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNTZXJ2ZXJSZW5kZXI6IF90aGlzLmlzU3NyLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VKU09OOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5mbGlnaHRDYWNoZTogX3RoaXMuc2RjLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGVyc2lzdENhY2hlOiAhX3RoaXMuaXNQcmV2aWV3LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmVmZXRjaDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBhc1BhdGg6IGFzUGF0aCxcbiAgICAgICAgICAgICAgICBsb2NhbGU6IGxvY2FsZSxcbiAgICAgICAgICAgICAgICByb3V0ZXI6IF90aGlzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8qKlxuICAgICAqIElmIHRoZXJlIHdhcyBhIHJld3JpdGUgd2UgYXBwbHkgdGhlIGVmZmVjdHMgb2YgdGhlIHJld3JpdGUgb24gdGhlXG4gICAgICogY3VycmVudCBwYXJhbWV0ZXJzIGZvciB0aGUgcHJlZmV0Y2guXG4gICAgICovIGlmICgoZGF0YSA9PSBudWxsID8gdm9pZCAwIDogZGF0YS5lZmZlY3QudHlwZSkgPT09ICdyZXdyaXRlJykge1xuICAgICAgICAgICAgICAgIHBhcnNlZC5wYXRobmFtZSA9IGRhdGEuZWZmZWN0LnJlc29sdmVkSHJlZjtcbiAgICAgICAgICAgICAgICBwYXRobmFtZSA9IGRhdGEuZWZmZWN0LnJlc29sdmVkSHJlZjtcbiAgICAgICAgICAgICAgICBxdWVyeSA9IF9leHRlbmRzKHt9LCBxdWVyeSwgZGF0YS5lZmZlY3QucGFyc2VkQXMucXVlcnkpO1xuICAgICAgICAgICAgICAgIHJlc29sdmVkQXMgPSBkYXRhLmVmZmVjdC5wYXJzZWRBcy5wYXRobmFtZTtcbiAgICAgICAgICAgICAgICB1cmwgPSAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24ocGFyc2VkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qKlxuICAgICAqIElmIHRoZXJlIGlzIGEgcmVkaXJlY3QgdG8gYW4gZXh0ZXJuYWwgZGVzdGluYXRpb24gdGhlbiB3ZSBkb24ndCBoYXZlXG4gICAgICogdG8gcHJlZmV0Y2ggY29udGVudCBhcyBpdCB3aWxsIGJlIHVudXNlZC5cbiAgICAgKi8gaWYgKChkYXRhID09IG51bGwgPyB2b2lkIDAgOiBkYXRhLmVmZmVjdC50eXBlKSA9PT0gJ3JlZGlyZWN0LWV4dGVybmFsJykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJvdXRlID0gKDAsIF9yZW1vdmVUcmFpbGluZ1NsYXNoKS5yZW1vdmVUcmFpbGluZ1NsYXNoKHBhdGhuYW1lKTtcbiAgICAgICAgICAgIHlpZWxkIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICBfdGhpcy5wYWdlTG9hZGVyLl9pc1NzZyhyb3V0ZSkudGhlbigoaXNTc2cpPT57XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpc1NzZyA/IGZldGNoTmV4dERhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUhyZWY6IChkYXRhID09IG51bGwgPyB2b2lkIDAgOiBkYXRhLmRhdGFIcmVmKSB8fCBfdGhpcy5wYWdlTG9hZGVyLmdldERhdGFIcmVmKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmOiB1cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNQYXRoOiByZXNvbHZlZEFzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZTogbG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VydmVyUmVuZGVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSlNPTjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZmxpZ2h0Q2FjaGU6IF90aGlzLnNkYyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNpc3RDYWNoZTogIV90aGlzLmlzUHJldmlldyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUHJlZmV0Y2g6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB1bnN0YWJsZV9za2lwQ2xpZW50Q2FjaGU6IG9wdGlvbnMudW5zdGFibGVfc2tpcENsaWVudENhY2hlIHx8IG9wdGlvbnMucHJpb3JpdHlcbiAgICAgICAgICAgICAgICAgICAgfSkudGhlbigoKT0+ZmFsc2UpIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgX3RoaXMucGFnZUxvYWRlcltvcHRpb25zLnByaW9yaXR5ID8gJ2xvYWRQYWdlJyA6ICdwcmVmZXRjaCddKHJvdXRlKSwgXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfSkoKTtcbiAgICB9XG4gICAgZmV0Y2hDb21wb25lbnQocm91dGUpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKigpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZUNhbmNlbGxlZCA9IGdldENhbmNlbGxlZEhhbmRsZXIoe1xuICAgICAgICAgICAgICAgIHJvdXRlLFxuICAgICAgICAgICAgICAgIHJvdXRlcjogX3RoaXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZXN1bHQgPSB5aWVsZCBfdGhpcy5wYWdlTG9hZGVyLmxvYWRQYWdlKHJvdXRlKTtcbiAgICAgICAgICAgICAgICBoYW5kbGVDYW5jZWxsZWQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9uZW50UmVzdWx0O1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlQ2FuY2VsbGVkKCk7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSgpO1xuICAgIH1cbiAgICBfZ2V0RGF0YShmbikge1xuICAgICAgICBsZXQgY2FuY2VsbGVkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGNhbmNlbCA9ICgpPT57XG4gICAgICAgICAgICBjYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNsYyA9IGNhbmNlbDtcbiAgICAgICAgcmV0dXJuIGZuKCkudGhlbigoZGF0YSk9PntcbiAgICAgICAgICAgIGlmIChjYW5jZWwgPT09IHRoaXMuY2xjKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGMgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNhbmNlbGxlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcignTG9hZGluZyBpbml0aWFsIHByb3BzIGNhbmNlbGxlZCcpO1xuICAgICAgICAgICAgICAgIGVyci5jYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX2dldEZsaWdodERhdGEoZGF0YUhyZWYpIHtcbiAgICAgICAgLy8gRG8gbm90IGNhY2hlIFJTQyBmbGlnaHQgcmVzcG9uc2Ugc2luY2UgaXQncyBub3QgYSBzdGF0aWMgcmVzb3VyY2VcbiAgICAgICAgcmV0dXJuIGZldGNoTmV4dERhdGEoe1xuICAgICAgICAgICAgZGF0YUhyZWYsXG4gICAgICAgICAgICBpc1NlcnZlclJlbmRlcjogdHJ1ZSxcbiAgICAgICAgICAgIHBhcnNlSlNPTjogZmFsc2UsXG4gICAgICAgICAgICBpbmZsaWdodENhY2hlOiB0aGlzLnNkYyxcbiAgICAgICAgICAgIHBlcnNpc3RDYWNoZTogZmFsc2UsXG4gICAgICAgICAgICBpc1ByZWZldGNoOiBmYWxzZVxuICAgICAgICB9KS50aGVuKCh7IHRleHQgIH0pPT4oe1xuICAgICAgICAgICAgICAgIGRhdGE6IHRleHRcbiAgICAgICAgICAgIH0pKTtcbiAgICB9XG4gICAgZ2V0SW5pdGlhbFByb3BzKENvbXBvbmVudCwgY3R4KSB7XG4gICAgICAgIGNvbnN0IHsgQ29tcG9uZW50OiBBcHAgIH0gPSB0aGlzLmNvbXBvbmVudHNbJy9fYXBwJ107XG4gICAgICAgIGNvbnN0IEFwcFRyZWUgPSB0aGlzLl93cmFwQXBwKEFwcCk7XG4gICAgICAgIGN0eC5BcHBUcmVlID0gQXBwVHJlZTtcbiAgICAgICAgcmV0dXJuICgwLCBfdXRpbHMpLmxvYWRHZXRJbml0aWFsUHJvcHMoQXBwLCB7XG4gICAgICAgICAgICBBcHBUcmVlLFxuICAgICAgICAgICAgQ29tcG9uZW50LFxuICAgICAgICAgICAgcm91dGVyOiB0aGlzLFxuICAgICAgICAgICAgY3R4XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXQgcm91dGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLnJvdXRlO1xuICAgIH1cbiAgICBnZXQgcGF0aG5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLnBhdGhuYW1lO1xuICAgIH1cbiAgICBnZXQgcXVlcnkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLnF1ZXJ5O1xuICAgIH1cbiAgICBnZXQgYXNQYXRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5hc1BhdGg7XG4gICAgfVxuICAgIGdldCBsb2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLmxvY2FsZTtcbiAgICB9XG4gICAgZ2V0IGlzRmFsbGJhY2soKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLmlzRmFsbGJhY2s7XG4gICAgfVxuICAgIGdldCBpc1ByZXZpZXcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLmlzUHJldmlldztcbiAgICB9XG4gICAgY29uc3RydWN0b3IocGF0aG5hbWUxLCBxdWVyeTEsIGFzMSwgeyBpbml0aWFsUHJvcHMgLCBwYWdlTG9hZGVyICwgQXBwICwgd3JhcEFwcCAsIENvbXBvbmVudCAsIGVyciAsIHN1YnNjcmlwdGlvbiAsIGlzRmFsbGJhY2sgLCBsb2NhbGUgLCBsb2NhbGVzICwgZGVmYXVsdExvY2FsZSAsIGRvbWFpbkxvY2FsZXMgLCBpc1ByZXZpZXcgLCBpc1JzYyAgfSl7XG4gICAgICAgIC8vIFNlcnZlciBEYXRhIENhY2hlXG4gICAgICAgIHRoaXMuc2RjID0ge307XG4gICAgICAgIHRoaXMuaXNGaXJzdFBvcFN0YXRlRXZlbnQgPSB0cnVlO1xuICAgICAgICB0aGlzLl9rZXkgPSBjcmVhdGVLZXkoKTtcbiAgICAgICAgdGhpcy5vblBvcFN0YXRlID0gKGUpPT57XG4gICAgICAgICAgICBjb25zdCB7IGlzRmlyc3RQb3BTdGF0ZUV2ZW50ICB9ID0gdGhpcztcbiAgICAgICAgICAgIHRoaXMuaXNGaXJzdFBvcFN0YXRlRXZlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gZS5zdGF0ZTtcbiAgICAgICAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgICAgICAgICAvLyBXZSBnZXQgc3RhdGUgYXMgdW5kZWZpbmVkIGZvciB0d28gcmVhc29ucy5cbiAgICAgICAgICAgICAgICAvLyAgMS4gV2l0aCBvbGRlciBzYWZhcmkgKDwgOCkgYW5kIG9sZGVyIGNocm9tZSAoPCAzNClcbiAgICAgICAgICAgICAgICAvLyAgMi4gV2hlbiB0aGUgVVJMIGNoYW5nZWQgd2l0aCAjXG4gICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAvLyBJbiB0aGUgYm90aCBjYXNlcywgd2UgZG9uJ3QgbmVlZCB0byBwcm9jZWVkIGFuZCBjaGFuZ2UgdGhlIHJvdXRlLlxuICAgICAgICAgICAgICAgIC8vIChhcyBpdCdzIGFscmVhZHkgY2hhbmdlZClcbiAgICAgICAgICAgICAgICAvLyBCdXQgd2UgY2FuIHNpbXBseSByZXBsYWNlIHRoZSBzdGF0ZSB3aXRoIHRoZSBuZXcgY2hhbmdlcy5cbiAgICAgICAgICAgICAgICAvLyBBY3R1YWxseSwgZm9yICgxKSB3ZSBkb24ndCBuZWVkIHRvIG5vdGhpbmcuIEJ1dCBpdCdzIGhhcmQgdG8gZGV0ZWN0IHRoYXQgZXZlbnQuXG4gICAgICAgICAgICAgICAgLy8gU28sIGRvaW5nIHRoZSBmb2xsb3dpbmcgZm9yICgxKSBkb2VzIG5vIGhhcm0uXG4gICAgICAgICAgICAgICAgY29uc3QgeyBwYXRobmFtZSAsIHF1ZXJ5ICB9ID0gdGhpcztcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVN0YXRlKCdyZXBsYWNlU3RhdGUnLCAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICBwYXRobmFtZTogKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgocGF0aG5hbWUpLFxuICAgICAgICAgICAgICAgICAgICBxdWVyeVxuICAgICAgICAgICAgICAgIH0pLCAoMCwgX3V0aWxzKS5nZXRVUkwoKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gX19OQSBpcyB1c2VkIHRvIGlkZW50aWZ5IGlmIHRoZSBoaXN0b3J5IGVudHJ5IGNhbiBiZSBoYW5kbGVkIGJ5IHRoZSBhcHAtcm91dGVyLlxuICAgICAgICAgICAgaWYgKHN0YXRlLl9fTkEpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFzdGF0ZS5fX04pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBTYWZhcmkgZmlyZXMgcG9wc3RhdGVldmVudCB3aGVuIHJlb3BlbmluZyB0aGUgYnJvd3Nlci5cbiAgICAgICAgICAgIGlmIChpc0ZpcnN0UG9wU3RhdGVFdmVudCAmJiB0aGlzLmxvY2FsZSA9PT0gc3RhdGUub3B0aW9ucy5sb2NhbGUgJiYgc3RhdGUuYXMgPT09IHRoaXMuYXNQYXRoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGZvcmNlZFNjcm9sbDtcbiAgICAgICAgICAgIGNvbnN0IHsgdXJsICwgYXMgLCBvcHRpb25zICwga2V5ICB9ID0gc3RhdGU7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1NDUk9MTF9SRVNUT1JBVElPTikge1xuICAgICAgICAgICAgICAgIGlmIChtYW51YWxTY3JvbGxSZXN0b3JhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fa2V5ICE9PSBrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNuYXBzaG90IGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uOlxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdfX25leHRfc2Nyb2xsXycgKyB0aGlzLl9rZXksIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogc2VsZi5wYWdlWE9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogc2VsZi5wYWdlWU9mZnNldFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXN0b3JlIG9sZCBzY3JvbGwgcG9zaXRpb246XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHYgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdfX25leHRfc2Nyb2xsXycgKyBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlZFNjcm9sbCA9IEpTT04ucGFyc2Uodik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlZFNjcm9sbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9rZXkgPSBrZXk7XG4gICAgICAgICAgICBjb25zdCB7IHBhdGhuYW1lICB9ID0gKDAsIF9wYXJzZVJlbGF0aXZlVXJsKS5wYXJzZVJlbGF0aXZlVXJsKHVybCk7XG4gICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgcmUtcmVuZGVyIG9uIGluaXRpYWwgbG9hZCxcbiAgICAgICAgICAgIC8vIGNhbiBiZSBjYXVzZWQgYnkgbmF2aWdhdGluZyBiYWNrIGZyb20gYW4gZXh0ZXJuYWwgc2l0ZVxuICAgICAgICAgICAgaWYgKHRoaXMuaXNTc3IgJiYgYXMgPT09ICgwLCBfYWRkQmFzZVBhdGgpLmFkZEJhc2VQYXRoKHRoaXMuYXNQYXRoKSAmJiBwYXRobmFtZSA9PT0gKDAsIF9hZGRCYXNlUGF0aCkuYWRkQmFzZVBhdGgodGhpcy5wYXRobmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJZiB0aGUgZG93bnN0cmVhbSBhcHBsaWNhdGlvbiByZXR1cm5zIGZhbHN5LCByZXR1cm4uXG4gICAgICAgICAgICAvLyBUaGV5IHdpbGwgdGhlbiBiZSByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhlIGV2ZW50LlxuICAgICAgICAgICAgaWYgKHRoaXMuX2JwcyAmJiAhdGhpcy5fYnBzKHN0YXRlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlKCdyZXBsYWNlU3RhdGUnLCB1cmwsIGFzLCBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zLCB7XG4gICAgICAgICAgICAgICAgc2hhbGxvdzogb3B0aW9ucy5zaGFsbG93ICYmIHRoaXMuX3NoYWxsb3csXG4gICAgICAgICAgICAgICAgbG9jYWxlOiBvcHRpb25zLmxvY2FsZSB8fCB0aGlzLmRlZmF1bHRMb2NhbGUsXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBpbnRlcm5hbCB2YWx1ZSBub3QgZXhwb3NlZCBvbiB0eXBlc1xuICAgICAgICAgICAgICAgIF9oOiAwXG4gICAgICAgICAgICB9KSwgZm9yY2VkU2Nyb2xsKTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gcmVwcmVzZW50cyB0aGUgY3VycmVudCBjb21wb25lbnQga2V5XG4gICAgICAgIGNvbnN0IHJvdXRlID0gKDAsIF9yZW1vdmVUcmFpbGluZ1NsYXNoKS5yZW1vdmVUcmFpbGluZ1NsYXNoKHBhdGhuYW1lMSk7XG4gICAgICAgIC8vIHNldCB1cCB0aGUgY29tcG9uZW50IGNhY2hlIChieSByb3V0ZSBrZXlzKVxuICAgICAgICB0aGlzLmNvbXBvbmVudHMgPSB7fTtcbiAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBrZWVwIHRoZSBjYWNoZSwgaWYgdGhlcmUncyBhbiBlcnJvclxuICAgICAgICAvLyBPdGhlcndpc2UsIHRoaXMgY2F1c2UgaXNzdWVzIHdoZW4gd2hlbiBnb2luZyBiYWNrIGFuZFxuICAgICAgICAvLyBjb21lIGFnYWluIHRvIHRoZSBlcnJvcmVkIHBhZ2UuXG4gICAgICAgIGlmIChwYXRobmFtZTEgIT09ICcvX2Vycm9yJykge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRzW3JvdXRlXSA9IHtcbiAgICAgICAgICAgICAgICBDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgaW5pdGlhbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBwcm9wczogaW5pdGlhbFByb3BzLFxuICAgICAgICAgICAgICAgIGVycixcbiAgICAgICAgICAgICAgICBfX05fU1NHOiBpbml0aWFsUHJvcHMgJiYgaW5pdGlhbFByb3BzLl9fTl9TU0csXG4gICAgICAgICAgICAgICAgX19OX1NTUDogaW5pdGlhbFByb3BzICYmIGluaXRpYWxQcm9wcy5fX05fU1NQLFxuICAgICAgICAgICAgICAgIF9fTl9SU0M6ICEhaXNSc2NcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb21wb25lbnRzWycvX2FwcCddID0ge1xuICAgICAgICAgICAgQ29tcG9uZW50OiBBcHAsXG4gICAgICAgICAgICBzdHlsZVNoZWV0czogW11cbiAgICAgICAgfTtcbiAgICAgICAgLy8gQmFja3dhcmRzIGNvbXBhdCBmb3IgUm91dGVyLnJvdXRlci5ldmVudHNcbiAgICAgICAgLy8gVE9ETzogU2hvdWxkIGJlIHJlbW92ZSB0aGUgZm9sbG93aW5nIG1ham9yIHZlcnNpb24gYXMgaXQgd2FzIG5ldmVyIGRvY3VtZW50ZWRcbiAgICAgICAgdGhpcy5ldmVudHMgPSBSb3V0ZXIuZXZlbnRzO1xuICAgICAgICB0aGlzLnBhZ2VMb2FkZXIgPSBwYWdlTG9hZGVyO1xuICAgICAgICAvLyBpZiBhdXRvIHByZXJlbmRlcmVkIGFuZCBkeW5hbWljIHJvdXRlIHdhaXQgdG8gdXBkYXRlIGFzUGF0aFxuICAgICAgICAvLyB1bnRpbCBhZnRlciBtb3VudCB0byBwcmV2ZW50IGh5ZHJhdGlvbiBtaXNtYXRjaFxuICAgICAgICBjb25zdCBhdXRvRXhwb3J0RHluYW1pYyA9ICgwLCBfaXNEeW5hbWljKS5pc0R5bmFtaWNSb3V0ZShwYXRobmFtZTEpICYmIHNlbGYuX19ORVhUX0RBVEFfXy5hdXRvRXhwb3J0O1xuICAgICAgICB0aGlzLmJhc2VQYXRoID0gcHJvY2Vzcy5lbnYuX19ORVhUX1JPVVRFUl9CQVNFUEFUSCB8fCAnJztcbiAgICAgICAgdGhpcy5zdWIgPSBzdWJzY3JpcHRpb247XG4gICAgICAgIHRoaXMuY2xjID0gbnVsbDtcbiAgICAgICAgdGhpcy5fd3JhcEFwcCA9IHdyYXBBcHA7XG4gICAgICAgIC8vIG1ha2Ugc3VyZSB0byBpZ25vcmUgZXh0cmEgcG9wU3RhdGUgaW4gc2FmYXJpIG9uIG5hdmlnYXRpbmdcbiAgICAgICAgLy8gYmFjayBmcm9tIGV4dGVybmFsIHNpdGVcbiAgICAgICAgdGhpcy5pc1NzciA9IHRydWU7XG4gICAgICAgIHRoaXMuaXNMb2NhbGVEb21haW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1JlYWR5ID0gISEoc2VsZi5fX05FWFRfREFUQV9fLmdzc3AgfHwgc2VsZi5fX05FWFRfREFUQV9fLmdpcCB8fCBzZWxmLl9fTkVYVF9EQVRBX18uYXBwR2lwICYmICFzZWxmLl9fTkVYVF9EQVRBX18uZ3NwIHx8ICFhdXRvRXhwb3J0RHluYW1pYyAmJiAhc2VsZi5sb2NhdGlvbi5zZWFyY2ggJiYgIXByb2Nlc3MuZW52Ll9fTkVYVF9IQVNfUkVXUklURVMpO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICAgICAgdGhpcy5sb2NhbGVzID0gbG9jYWxlcztcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdExvY2FsZSA9IGRlZmF1bHRMb2NhbGU7XG4gICAgICAgICAgICB0aGlzLmRvbWFpbkxvY2FsZXMgPSBkb21haW5Mb2NhbGVzO1xuICAgICAgICAgICAgdGhpcy5pc0xvY2FsZURvbWFpbiA9ICEhKDAsIF9kZXRlY3REb21haW5Mb2NhbGUpLmRldGVjdERvbWFpbkxvY2FsZShkb21haW5Mb2NhbGVzLCBzZWxmLmxvY2F0aW9uLmhvc3RuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgcm91dGUsXG4gICAgICAgICAgICBwYXRobmFtZTogcGF0aG5hbWUxLFxuICAgICAgICAgICAgcXVlcnk6IHF1ZXJ5MSxcbiAgICAgICAgICAgIGFzUGF0aDogYXV0b0V4cG9ydER5bmFtaWMgPyBwYXRobmFtZTEgOiBhczEsXG4gICAgICAgICAgICBpc1ByZXZpZXc6ICEhaXNQcmV2aWV3LFxuICAgICAgICAgICAgbG9jYWxlOiBwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUID8gbG9jYWxlIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgaXNGYWxsYmFja1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9pbml0aWFsTWF0Y2hlc01pZGRsZXdhcmVQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAvLyBtYWtlIHN1cmUgXCJhc1wiIGRvZXNuJ3Qgc3RhcnQgd2l0aCBkb3VibGUgc2xhc2hlcyBvciBlbHNlIGl0IGNhblxuICAgICAgICAgICAgLy8gdGhyb3cgYW4gZXJyb3IgYXMgaXQncyBjb25zaWRlcmVkIGludmFsaWRcbiAgICAgICAgICAgIGlmICghYXMxLnN0YXJ0c1dpdGgoJy8vJykpIHtcbiAgICAgICAgICAgICAgICAvLyBpbiBvcmRlciBmb3IgYGUuc3RhdGVgIHRvIHdvcmsgb24gdGhlIGBvbnBvcHN0YXRlYCBldmVudFxuICAgICAgICAgICAgICAgIC8vIHdlIGhhdmUgdG8gcmVnaXN0ZXIgdGhlIGluaXRpYWwgcm91dGUgdXBvbiBpbml0aWFsaXphdGlvblxuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgYXNQYXRoID0gKDAsIF91dGlscykuZ2V0VVJMKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5faW5pdGlhbE1hdGNoZXNNaWRkbGV3YXJlUHJvbWlzZSA9IG1hdGNoZXNNaWRkbGV3YXJlKHtcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiB0aGlzLFxuICAgICAgICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgIGFzUGF0aFxuICAgICAgICAgICAgICAgIH0pLnRoZW4oKG1hdGNoZXMpPT57XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuX3Nob3VsZFJlc29sdmVIcmVmID0gYXMxICE9PSBwYXRobmFtZTE7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlU3RhdGUoJ3JlcGxhY2VTdGF0ZScsIG1hdGNoZXMgPyBhc1BhdGggOiAoMCwgX2Zvcm1hdFVybCkuZm9ybWF0V2l0aFZhbGlkYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWU6ICgwLCBfYWRkQmFzZVBhdGgpLmFkZEJhc2VQYXRoKHBhdGhuYW1lMSksXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVyeTogcXVlcnkxXG4gICAgICAgICAgICAgICAgICAgIH0pLCBhc1BhdGgsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hlcztcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwb3BzdGF0ZScsIHRoaXMub25Qb3BTdGF0ZSk7XG4gICAgICAgICAgICAvLyBlbmFibGUgY3VzdG9tIHNjcm9sbCByZXN0b3JhdGlvbiBoYW5kbGluZyB3aGVuIGF2YWlsYWJsZVxuICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGZhbGxiYWNrIHRvIGJyb3dzZXIncyBkZWZhdWx0IGhhbmRsaW5nXG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1NDUk9MTF9SRVNUT1JBVElPTikge1xuICAgICAgICAgICAgICAgIGlmIChtYW51YWxTY3JvbGxSZXN0b3JhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuaGlzdG9yeS5zY3JvbGxSZXN0b3JhdGlvbiA9ICdtYW51YWwnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblJvdXRlci5ldmVudHMgPSAoMCwgX21pdHQpLmRlZmF1bHQoKTtcbmZ1bmN0aW9uIG1hdGNoZXNNaWRkbGV3YXJlKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG9wdGlvbnMucm91dGVyLnBhZ2VMb2FkZXIuZ2V0TWlkZGxld2FyZUxpc3QoKSkudGhlbigoaXRlbXMpPT57XG4gICAgICAgIGNvbnN0IHsgcGF0aG5hbWU6IGFzUGF0aG5hbWUgIH0gPSAoMCwgX3BhcnNlUGF0aCkucGFyc2VQYXRoKG9wdGlvbnMuYXNQYXRoKTtcbiAgICAgICAgY29uc3QgY2xlYW5lZEFzID0gKDAsIF9oYXNCYXNlUGF0aCkuaGFzQmFzZVBhdGgoYXNQYXRobmFtZSkgPyAoMCwgX3JlbW92ZUJhc2VQYXRoKS5yZW1vdmVCYXNlUGF0aChhc1BhdGhuYW1lKSA6IGFzUGF0aG5hbWU7XG4gICAgICAgIHJldHVybiAhIShpdGVtcyA9PSBudWxsID8gdm9pZCAwIDogaXRlbXMuc29tZSgoW3JlZ2V4LCBzc3JdKT0+e1xuICAgICAgICAgICAgcmV0dXJuICFzc3IgJiYgbmV3IFJlZ0V4cChyZWdleCkudGVzdCgoMCwgX2FkZExvY2FsZSkuYWRkTG9jYWxlKGNsZWFuZWRBcywgb3B0aW9ucy5sb2NhbGUpKTtcbiAgICAgICAgfSkpO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gd2l0aE1pZGRsZXdhcmVFZmZlY3RzKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbWF0Y2hlc01pZGRsZXdhcmUob3B0aW9ucykudGhlbigobWF0Y2hlcyk9PntcbiAgICAgICAgaWYgKG1hdGNoZXMgJiYgb3B0aW9ucy5mZXRjaERhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmZldGNoRGF0YSgpLnRoZW4oKGRhdGEpPT5nZXRNaWRkbGV3YXJlRGF0YShkYXRhLmRhdGFIcmVmLCBkYXRhLnJlc3BvbnNlLCBvcHRpb25zKS50aGVuKChlZmZlY3QpPT4oe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUhyZWY6IGRhdGEuZGF0YUhyZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uOiBkYXRhLmpzb24sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZTogZGF0YS5yZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGRhdGEudGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVmZmVjdFxuICAgICAgICAgICAgICAgICAgICB9KSkpLmNhdGNoKChfZXJyKT0+e1xuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIFRPRE86IFJldmlzaXQgdGhpcyBpbiB0aGUgZnV0dXJlLlxuICAgICAgICAgICAqIEZvciBub3cgd2Ugd2lsbCBub3QgY29uc2lkZXIgbWlkZGxld2FyZSBkYXRhIGVycm9ycyB0byBiZSBmYXRhbC5cbiAgICAgICAgICAgKiBtYXliZSB3ZSBzaG91bGQgcmV2aXNpdCBpbiB0aGUgZnV0dXJlLlxuICAgICAgICAgICAqLyByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZ2V0TWlkZGxld2FyZURhdGEoc291cmNlLCByZXNwb25zZSwgb3B0aW9ucykge1xuICAgIGNvbnN0IG5leHRDb25maWcgPSB7XG4gICAgICAgIGJhc2VQYXRoOiBvcHRpb25zLnJvdXRlci5iYXNlUGF0aCxcbiAgICAgICAgaTE4bjoge1xuICAgICAgICAgICAgbG9jYWxlczogb3B0aW9ucy5yb3V0ZXIubG9jYWxlc1xuICAgICAgICB9LFxuICAgICAgICB0cmFpbGluZ1NsYXNoOiBCb29sZWFuKHByb2Nlc3MuZW52Ll9fTkVYVF9UUkFJTElOR19TTEFTSClcbiAgICB9O1xuICAgIGNvbnN0IHJld3JpdGVIZWFkZXIgPSByZXNwb25zZS5oZWFkZXJzLmdldCgneC1uZXh0anMtcmV3cml0ZScpO1xuICAgIGxldCByZXdyaXRlVGFyZ2V0ID0gcmV3cml0ZUhlYWRlciB8fCByZXNwb25zZS5oZWFkZXJzLmdldCgneC1uZXh0anMtbWF0Y2hlZC1wYXRoJyk7XG4gICAgY29uc3QgbWF0Y2hlZFBhdGggPSByZXNwb25zZS5oZWFkZXJzLmdldCgneC1tYXRjaGVkLXBhdGgnKTtcbiAgICBpZiAoIXJld3JpdGVUYXJnZXQgJiYgIShtYXRjaGVkUGF0aCA9PSBudWxsID8gdm9pZCAwIDogbWF0Y2hlZFBhdGguaW5jbHVkZXMoJ19fbmV4dF9kYXRhX2NhdGNoYWxsJykpKSB7XG4gICAgICAgIHJld3JpdGVUYXJnZXQgPSBtYXRjaGVkUGF0aDtcbiAgICB9XG4gICAgaWYgKHJld3JpdGVUYXJnZXQpIHtcbiAgICAgICAgaWYgKHJld3JpdGVUYXJnZXQuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWRSZXdyaXRlVGFyZ2V0ID0gKDAsIF9wYXJzZVJlbGF0aXZlVXJsKS5wYXJzZVJlbGF0aXZlVXJsKHJld3JpdGVUYXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgcGF0aG5hbWVJbmZvID0gKDAsIF9nZXROZXh0UGF0aG5hbWVJbmZvKS5nZXROZXh0UGF0aG5hbWVJbmZvKHBhcnNlZFJld3JpdGVUYXJnZXQucGF0aG5hbWUsIHtcbiAgICAgICAgICAgICAgICBuZXh0Q29uZmlnLFxuICAgICAgICAgICAgICAgIHBhcnNlRGF0YTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBmc1BhdGhuYW1lID0gKDAsIF9yZW1vdmVUcmFpbGluZ1NsYXNoKS5yZW1vdmVUcmFpbGluZ1NsYXNoKHBhdGhuYW1lSW5mby5wYXRobmFtZSk7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgICAgIG9wdGlvbnMucm91dGVyLnBhZ2VMb2FkZXIuZ2V0UGFnZUxpc3QoKSxcbiAgICAgICAgICAgICAgICAoMCwgX3JvdXRlTG9hZGVyKS5nZXRDbGllbnRCdWlsZE1hbmlmZXN0KCksIFxuICAgICAgICAgICAgXSkudGhlbigoW3BhZ2VzLCB7IF9fcmV3cml0ZXM6IHJld3JpdGVzICB9XSk9PntcbiAgICAgICAgICAgICAgICBsZXQgYXMgPSAoMCwgX2FkZExvY2FsZSkuYWRkTG9jYWxlKHBhdGhuYW1lSW5mby5wYXRobmFtZSwgcGF0aG5hbWVJbmZvLmxvY2FsZSk7XG4gICAgICAgICAgICAgICAgaWYgKCgwLCBfaXNEeW5hbWljKS5pc0R5bmFtaWNSb3V0ZShhcykgfHwgIXJld3JpdGVIZWFkZXIgJiYgcGFnZXMuaW5jbHVkZXMoKDAsIF9ub3JtYWxpemVMb2NhbGVQYXRoKS5ub3JtYWxpemVMb2NhbGVQYXRoKCgwLCBfcmVtb3ZlQmFzZVBhdGgpLnJlbW92ZUJhc2VQYXRoKGFzKSwgb3B0aW9ucy5yb3V0ZXIubG9jYWxlcykucGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZFNvdXJjZSA9ICgwLCBfZ2V0TmV4dFBhdGhuYW1lSW5mbykuZ2V0TmV4dFBhdGhuYW1lSW5mbygoMCwgX3BhcnNlUmVsYXRpdmVVcmwpLnBhcnNlUmVsYXRpdmVVcmwoc291cmNlKS5wYXRobmFtZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VEYXRhOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBhcyA9ICgwLCBfYWRkQmFzZVBhdGgpLmFkZEJhc2VQYXRoKHBhcnNlZFNvdXJjZS5wYXRobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZFJld3JpdGVUYXJnZXQucGF0aG5hbWUgPSBhcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9IQVNfUkVXUklURVMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gKDAsIF9yZXNvbHZlUmV3cml0ZXMpLmRlZmF1bHQoYXMsIHBhZ2VzLCByZXdyaXRlcywgcGFyc2VkUmV3cml0ZVRhcmdldC5xdWVyeSwgKHBhdGgpPT5yZXNvbHZlRHluYW1pY1JvdXRlKHBhdGgsIHBhZ2VzKSwgb3B0aW9ucy5yb3V0ZXIubG9jYWxlcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubWF0Y2hlZFBhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFJld3JpdGVUYXJnZXQucGF0aG5hbWUgPSByZXN1bHQucGFyc2VkQXMucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcyA9IHBhcnNlZFJld3JpdGVUYXJnZXQucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHBhcnNlZFJld3JpdGVUYXJnZXQucXVlcnksIHJlc3VsdC5wYXJzZWRBcy5xdWVyeSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRIcmVmID0gIXBhZ2VzLmluY2x1ZGVzKGZzUGF0aG5hbWUpID8gcmVzb2x2ZUR5bmFtaWNSb3V0ZSgoMCwgX25vcm1hbGl6ZUxvY2FsZVBhdGgpLm5vcm1hbGl6ZUxvY2FsZVBhdGgoKDAsIF9yZW1vdmVCYXNlUGF0aCkucmVtb3ZlQmFzZVBhdGgocGFyc2VkUmV3cml0ZVRhcmdldC5wYXRobmFtZSksIG9wdGlvbnMucm91dGVyLmxvY2FsZXMpLnBhdGhuYW1lLCBwYWdlcykgOiBmc1BhdGhuYW1lO1xuICAgICAgICAgICAgICAgIGlmICgoMCwgX2lzRHluYW1pYykuaXNEeW5hbWljUm91dGUocmVzb2x2ZWRIcmVmKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGVzID0gKDAsIF9yb3V0ZU1hdGNoZXIpLmdldFJvdXRlTWF0Y2hlcigoMCwgX3JvdXRlUmVnZXgpLmdldFJvdXRlUmVnZXgocmVzb2x2ZWRIcmVmKSkoYXMpO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHBhcnNlZFJld3JpdGVUYXJnZXQucXVlcnksIG1hdGNoZXMgfHwge30pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAncmV3cml0ZScsXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZEFzOiBwYXJzZWRSZXdyaXRlVGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZEhyZWZcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3JjID0gKDAsIF9wYXJzZVBhdGgpLnBhcnNlUGF0aChzb3VyY2UpO1xuICAgICAgICBjb25zdCBwYXRobmFtZSA9ICgwLCBfZm9ybWF0TmV4dFBhdGhuYW1lSW5mbykuZm9ybWF0TmV4dFBhdGhuYW1lSW5mbyhfZXh0ZW5kcyh7fSwgKDAsIF9nZXROZXh0UGF0aG5hbWVJbmZvKS5nZXROZXh0UGF0aG5hbWVJbmZvKHNyYy5wYXRobmFtZSwge1xuICAgICAgICAgICAgbmV4dENvbmZpZyxcbiAgICAgICAgICAgIHBhcnNlRGF0YTogdHJ1ZVxuICAgICAgICB9KSwge1xuICAgICAgICAgICAgZGVmYXVsdExvY2FsZTogb3B0aW9ucy5yb3V0ZXIuZGVmYXVsdExvY2FsZSxcbiAgICAgICAgICAgIGJ1aWxkSWQ6ICcnXG4gICAgICAgIH0pKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgICB0eXBlOiAncmVkaXJlY3QtZXh0ZXJuYWwnLFxuICAgICAgICAgICAgZGVzdGluYXRpb246IGAke3BhdGhuYW1lfSR7c3JjLnF1ZXJ5fSR7c3JjLmhhc2h9YFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgcmVkaXJlY3RUYXJnZXQgPSByZXNwb25zZS5oZWFkZXJzLmdldCgneC1uZXh0anMtcmVkaXJlY3QnKTtcbiAgICBpZiAocmVkaXJlY3RUYXJnZXQpIHtcbiAgICAgICAgaWYgKHJlZGlyZWN0VGFyZ2V0LnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICAgICAgY29uc3Qgc3JjID0gKDAsIF9wYXJzZVBhdGgpLnBhcnNlUGF0aChyZWRpcmVjdFRhcmdldCk7XG4gICAgICAgICAgICBjb25zdCBwYXRobmFtZSA9ICgwLCBfZm9ybWF0TmV4dFBhdGhuYW1lSW5mbykuZm9ybWF0TmV4dFBhdGhuYW1lSW5mbyhfZXh0ZW5kcyh7fSwgKDAsIF9nZXROZXh0UGF0aG5hbWVJbmZvKS5nZXROZXh0UGF0aG5hbWVJbmZvKHNyYy5wYXRobmFtZSwge1xuICAgICAgICAgICAgICAgIG5leHRDb25maWcsXG4gICAgICAgICAgICAgICAgcGFyc2VEYXRhOiB0cnVlXG4gICAgICAgICAgICB9KSwge1xuICAgICAgICAgICAgICAgIGRlZmF1bHRMb2NhbGU6IG9wdGlvbnMucm91dGVyLmRlZmF1bHRMb2NhbGUsXG4gICAgICAgICAgICAgICAgYnVpbGRJZDogJydcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdyZWRpcmVjdC1pbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgbmV3QXM6IGAke3BhdGhuYW1lfSR7c3JjLnF1ZXJ5fSR7c3JjLmhhc2h9YCxcbiAgICAgICAgICAgICAgICBuZXdVcmw6IGAke3BhdGhuYW1lfSR7c3JjLnF1ZXJ5fSR7c3JjLmhhc2h9YFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgICB0eXBlOiAncmVkaXJlY3QtZXh0ZXJuYWwnLFxuICAgICAgICAgICAgZGVzdGluYXRpb246IHJlZGlyZWN0VGFyZ2V0XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgdHlwZTogJ25leHQnXG4gICAgfSk7XG59XG5leHBvcnRzLmRlZmF1bHQgPSBSb3V0ZXI7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJvdXRlci5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJpc0xvY2FsVVJMIiwiaW50ZXJwb2xhdGVBcyIsInJlc29sdmVIcmVmIiwiY3JlYXRlS2V5IiwiZGVmYXVsdCIsIl9ub3JtYWxpemVUcmFpbGluZ1NsYXNoIiwicmVxdWlyZSIsIl9yZW1vdmVUcmFpbGluZ1NsYXNoIiwiX3JvdXRlTG9hZGVyIiwiX3NjcmlwdCIsIl9pc0Vycm9yIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfZGVub3JtYWxpemVQYWdlUGF0aCIsIl9ub3JtYWxpemVMb2NhbGVQYXRoIiwiX21pdHQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3V0aWxzIiwiX2lzRHluYW1pYyIsIl9wYXJzZVJlbGF0aXZlVXJsIiwiX3F1ZXJ5c3RyaW5nIiwiX3Jlc29sdmVSZXdyaXRlcyIsIl9yb3V0ZU1hdGNoZXIiLCJfcm91dGVSZWdleCIsIl9mb3JtYXRVcmwiLCJfZGV0ZWN0RG9tYWluTG9jYWxlIiwiX3BhcnNlUGF0aCIsIl9hZGRMb2NhbGUiLCJfcmVtb3ZlTG9jYWxlIiwiX3JlbW92ZUJhc2VQYXRoIiwiX2FkZEJhc2VQYXRoIiwiX2hhc0Jhc2VQYXRoIiwiX2dldE5leHRQYXRobmFtZUluZm8iLCJfZm9ybWF0TmV4dFBhdGhuYW1lSW5mbyIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsInJlc29sdmUiLCJyZWplY3QiLCJfbmV4dCIsIl90aHJvdyIsImtleSIsImFyZyIsImluZm8iLCJlcnJvciIsImRvbmUiLCJQcm9taXNlIiwidGhlbiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiZm4iLCJzZWxmIiwiYXJncyIsImFyZ3VtZW50cyIsImFwcGx5IiwiZXJyIiwidW5kZWZpbmVkIiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJ0YXJnZXQiLCJpIiwibGVuZ3RoIiwic291cmNlIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwib2JqIiwiX19lc01vZHVsZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIldlYWtNYXAiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImRlc2MiLCJzZXQiLCJidWlsZENhbmNlbGxhdGlvbkVycm9yIiwiRXJyb3IiLCJjYW5jZWxsZWQiLCJ1cmwiLCJpc0Fic29sdXRlVXJsIiwibG9jYXRpb25PcmlnaW4iLCJnZXRMb2NhdGlvbk9yaWdpbiIsInJlc29sdmVkIiwiVVJMIiwib3JpZ2luIiwiaGFzQmFzZVBhdGgiLCJwYXRobmFtZSIsIl8iLCJyb3V0ZSIsImFzUGF0aG5hbWUiLCJxdWVyeSIsImludGVycG9sYXRlZFJvdXRlIiwiZHluYW1pY1JlZ2V4IiwiZ2V0Um91dGVSZWdleCIsImR5bmFtaWNHcm91cHMiLCJncm91cHMiLCJkeW5hbWljTWF0Y2hlcyIsImdldFJvdXRlTWF0Y2hlciIsInBhcmFtcyIsImtleXMiLCJldmVyeSIsInBhcmFtIiwicmVwZWF0Iiwib3B0aW9uYWwiLCJyZXBsYWNlZCIsIkFycmF5IiwiaXNBcnJheSIsInJlcGxhY2UiLCJtYXAiLCJzZWdtZW50IiwiZW5jb2RlVVJJQ29tcG9uZW50Iiwiam9pbiIsInJlc3VsdCIsIm9taXQiLCJvYmplY3QiLCJvbWl0dGVkIiwiZm9yRWFjaCIsImluY2x1ZGVzIiwicm91dGVyIiwiaHJlZiIsInJlc29sdmVBcyIsImJhc2UiLCJ1cmxBc1N0cmluZyIsImZvcm1hdFdpdGhWYWxpZGF0aW9uIiwidXJsUHJvdG9NYXRjaCIsIm1hdGNoIiwidXJsQXNTdHJpbmdOb1Byb3RvIiwic2xpY2UiLCJ1cmxQYXJ0cyIsInNwbGl0IiwiY29uc29sZSIsIm5vcm1hbGl6ZWRVcmwiLCJub3JtYWxpemVSZXBlYXRlZFNsYXNoZXMiLCJzdGFydHNXaXRoIiwiYXNQYXRoIiwiZmluYWxVcmwiLCJub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaCIsImludGVycG9sYXRlZEFzIiwiaXNEeW5hbWljUm91dGUiLCJzZWFyY2hQYXJhbXMiLCJzZWFyY2hQYXJhbXNUb1VybFF1ZXJ5IiwiaGFzaCIsInJlc29sdmVkSHJlZiIsIl8xIiwic3RyaXBPcmlnaW4iLCJzdWJzdHJpbmciLCJwcmVwYXJlVXJsQXMiLCJhcyIsInJlc29sdmVkQXMiLCJocmVmSGFkT3JpZ2luIiwiYXNIYWRPcmlnaW4iLCJwcmVwYXJlZFVybCIsImFkZEJhc2VQYXRoIiwicHJlcGFyZWRBcyIsInJlc29sdmVEeW5hbWljUm91dGUiLCJwYWdlcyIsImNsZWFuUGF0aG5hbWUiLCJyZW1vdmVUcmFpbGluZ1NsYXNoIiwiZGVub3JtYWxpemVQYWdlUGF0aCIsInNvbWUiLCJwYWdlIiwicmUiLCJ0ZXN0IiwibWFudWFsU2Nyb2xsUmVzdG9yYXRpb24iLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1NDUk9MTF9SRVNUT1JBVElPTiIsIndpbmRvdyIsImhpc3RvcnkiLCJ2Iiwic2Vzc2lvblN0b3JhZ2UiLCJzZXRJdGVtIiwicmVtb3ZlSXRlbSIsIm4iLCJTU0dfREFUQV9OT1RfRk9VTkQiLCJTeW1ib2wiLCJmZXRjaFJldHJ5IiwiYXR0ZW1wdHMiLCJvcHRpb25zIiwiZmV0Y2giLCJjcmVkZW50aWFscyIsIm1ldGhvZCIsImhlYWRlcnMiLCJyZXNwb25zZSIsIm9rIiwic3RhdHVzIiwiYmFja2dyb3VuZENhY2hlIiwiZmV0Y2hOZXh0RGF0YSIsImRhdGFIcmVmIiwiaW5mbGlnaHRDYWNoZSIsImlzUHJlZmV0Y2giLCJoYXNNaWRkbGV3YXJlIiwiaXNTZXJ2ZXJSZW5kZXIiLCJwYXJzZUpTT04iLCJwZXJzaXN0Q2FjaGUiLCJpc0JhY2tncm91bmQiLCJ1bnN0YWJsZV9za2lwQ2xpZW50Q2FjaGUiLCJsb2NhdGlvbiIsImNhY2hlS2V5IiwicmVmMSIsImdldERhdGEiLCJwdXJwb3NlIiwidGV4dCIsImpzb24iLCJyZWYiLCJ0cnlUb1BhcnNlQXNKU09OIiwibm90Rm91bmQiLCJtYXJrQXNzZXRFcnJvciIsImRhdGEiLCJjYXRjaCIsIkpTT04iLCJwYXJzZSIsIk1hdGgiLCJyYW5kb20iLCJ0b1N0cmluZyIsImhhbmRsZUhhcmROYXZpZ2F0aW9uIiwiYWRkTG9jYWxlIiwibG9jYWxlIiwiZ2V0Q2FuY2VsbGVkSGFuZGxlciIsImNhbmNlbCIsImNsYyIsImhhbmRsZUNhbmNlbGxlZCIsIlJvdXRlciIsInBhdGhuYW1lMSIsInF1ZXJ5MSIsImFzMSIsImluaXRpYWxQcm9wcyIsInBhZ2VMb2FkZXIiLCJBcHAiLCJ3cmFwQXBwIiwiQ29tcG9uZW50Iiwic3Vic2NyaXB0aW9uIiwiaXNGYWxsYmFjayIsImxvY2FsZXMiLCJkZWZhdWx0TG9jYWxlIiwiZG9tYWluTG9jYWxlcyIsImlzUHJldmlldyIsImlzUnNjIiwic2RjIiwiaXNGaXJzdFBvcFN0YXRlRXZlbnQiLCJfa2V5Iiwib25Qb3BTdGF0ZSIsImUiLCJzdGF0ZSIsImNoYW5nZVN0YXRlIiwiZ2V0VVJMIiwiX19OQSIsInJlbG9hZCIsIl9fTiIsImZvcmNlZFNjcm9sbCIsInN0cmluZ2lmeSIsIngiLCJwYWdlWE9mZnNldCIsInkiLCJwYWdlWU9mZnNldCIsImdldEl0ZW0iLCJlMSIsInBhcnNlUmVsYXRpdmVVcmwiLCJpc1NzciIsIl9icHMiLCJjaGFuZ2UiLCJzaGFsbG93IiwiX3NoYWxsb3ciLCJfaCIsImNvbXBvbmVudHMiLCJpbml0aWFsIiwicHJvcHMiLCJfX05fU1NHIiwiX19OX1NTUCIsIl9fTl9SU0MiLCJzdHlsZVNoZWV0cyIsImV2ZW50cyIsImF1dG9FeHBvcnREeW5hbWljIiwiX19ORVhUX0RBVEFfXyIsImF1dG9FeHBvcnQiLCJiYXNlUGF0aCIsIl9fTkVYVF9ST1VURVJfQkFTRVBBVEgiLCJzdWIiLCJfd3JhcEFwcCIsImlzTG9jYWxlRG9tYWluIiwiaXNSZWFkeSIsImdzc3AiLCJnaXAiLCJhcHBHaXAiLCJnc3AiLCJzZWFyY2giLCJfX05FWFRfSEFTX1JFV1JJVEVTIiwiX19ORVhUX0kxOE5fU1VQUE9SVCIsImRldGVjdERvbWFpbkxvY2FsZSIsImhvc3RuYW1lIiwiX2luaXRpYWxNYXRjaGVzTWlkZGxld2FyZVByb21pc2UiLCJtYXRjaGVzTWlkZGxld2FyZSIsIm1hdGNoZXMiLCJfc2hvdWxkUmVzb2x2ZUhyZWYiLCJhZGRFdmVudExpc3RlbmVyIiwic2Nyb2xsUmVzdG9yYXRpb24iLCJiYWNrIiwicHVzaCIsIl90aGlzIiwiaXNRdWVyeVVwZGF0aW5nIiwic2hvdWxkUmVzb2x2ZUhyZWYiLCJuZXh0U3RhdGUiLCJwcmV2TG9jYWxlIiwicGFyc2VkQXMiLCJsb2NhbGVQYXRoUmVzdWx0IiwiZGlkTmF2aWdhdGUiLCJkZXRlY3RlZERvbWFpbiIsImFzTm9CYXNlUGF0aCIsInNjcm9sbCIsInJvdXRlUHJvcHMiLCJjbGVhbmVkQXMiLCJsb2NhbGVDaGFuZ2UiLCJwYXJzZWQiLCJyZXdyaXRlcyIsImlzTWlkZGxld2FyZU1hdGNoIiwicmV3cml0ZXNSZXN1bHQiLCJyb3V0ZU1hdGNoIiwicm91dGVSZWdleCIsInNob3VsZEludGVycG9sYXRlIiwibWlzc2luZ1BhcmFtcyIsInJlZjIiLCJyZWYzIiwicm91dGVJbmZvIiwicHJlZml4ZWRBcyIsInJld3JpdGVBcyIsImxvY2FsZVJlc3VsdCIsImN1clJvdXRlTWF0Y2giLCJjb21wb25lbnQiLCJzY3JpcHRzIiwiZGVzdGluYXRpb24iLCJwYXJzZWRIcmVmIiwibmV3VXJsIiwibmV3QXMiLCJub3RGb3VuZFJvdXRlIiwiX3JvdXRlIiwiaXNWYWxpZFNoYWxsb3dSb3V0ZSIsIl9zY3JvbGwiLCJzaG91bGRTY3JvbGwiLCJyZXNldFNjcm9sbCIsImhhc2hSZWdleCIsInBhcnNlUGF0aCIsInJlbW92ZUJhc2VQYXRoIiwibm9ybWFsaXplTG9jYWxlUGF0aCIsImRldGVjdGVkTG9jYWxlIiwiZG9tYWluIiwiaHR0cCIsIlNUIiwicGVyZm9ybWFuY2UiLCJtYXJrIiwiX2luRmxpZ2h0Um91dGUiLCJlbWl0IiwicmVtb3ZlTG9jYWxlIiwib25seUFIYXNoQ2hhbmdlIiwic2Nyb2xsVG9IYXNoIiwiYWxsIiwiZ2V0UGFnZUxpc3QiLCJnZXRDbGllbnRCdWlsZE1hbmlmZXN0IiwiZ2V0TWlkZGxld2FyZUxpc3QiLCJfX3Jld3JpdGVzIiwidXJsSXNOZXciLCJwIiwiZXh0ZXJuYWxEZXN0IiwibWF0Y2hlZFBhZ2UiLCJmaWx0ZXIiLCJ3YXJuIiwiZ2V0Um91dGVJbmZvIiwidHlwZSIsInVuc3RhYmxlX3NjcmlwdExvYWRlciIsImNvbmNhdCIsInNjcmlwdCIsImhhbmRsZUNsaWVudFNjcmlwdExvYWQiLCJwYWdlUHJvcHMiLCJfX05fUkVESVJFQ1QiLCJfX05fUkVESVJFQ1RfQkFTRV9QQVRIIiwiX19OX1BSRVZJRVciLCJmZXRjaENvbXBvbmVudCIsInN0YXR1c0NvZGUiLCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIsImxhbmciLCJlcnIxIiwiaGFuZGxlUm91dGVJbmZvRXJyb3IiLCJsb2FkRXJyb3JGYWlsIiwiaXNBc3NldEVycm9yIiwiZ2V0SW5pdGlhbFByb3BzIiwicm91dGVJbmZvRXJyIiwicmVxdWVzdGVkUm91dGUiLCJyZWY0IiwicmVmNSIsImV4aXN0aW5nSW5mbyIsImNhY2hlZFJvdXRlSW5mbyIsImZldGNoTmV4dERhdGFQYXJhbXMiLCJpc1ZhbGlkRWxlbWVudFR5cGUiLCJ1c2VTdHJlYW1lZEZsaWdodERhdGEiLCJzaG91bGRGZXRjaERhdGEiLCJmbGlnaHRJbmZvIiwiZ2V0RGF0YUhyZWYiLCJza2lwSW50ZXJwb2xhdGlvbiIsIndpdGhNaWRkbGV3YXJlRWZmZWN0cyIsImZldGNoRGF0YSIsImVmZmVjdCIsInJlcyIsIm1vZCIsIl9fbmV4dF9yc2NfXyIsIl9nZXREYXRhIiwiX2dldEZsaWdodERhdGEiLCJfX2ZsaWdodF9fIiwiZ2V0UHJvcGVyRXJyb3IiLCJiZWZvcmVQb3BTdGF0ZSIsImNiIiwib2xkVXJsTm9IYXNoIiwib2xkSGFzaCIsIm5ld1VybE5vSGFzaCIsIm5ld0hhc2giLCJzY3JvbGxUbyIsInJhd0hhc2giLCJkZWNvZGVVUklDb21wb25lbnQiLCJpZEVsIiwiZ2V0RWxlbWVudEJ5SWQiLCJzY3JvbGxJbnRvVmlldyIsIm5hbWVFbCIsImdldEVsZW1lbnRzQnlOYW1lIiwicHJlZmV0Y2giLCJfaXNTc2ciLCJpc1NzZyIsInByaW9yaXR5IiwiY29tcG9uZW50UmVzdWx0IiwibG9hZFBhZ2UiLCJjdHgiLCJBcHBUcmVlIiwibG9hZEdldEluaXRpYWxQcm9wcyIsIml0ZW1zIiwicmVnZXgiLCJzc3IiLCJSZWdFeHAiLCJnZXRNaWRkbGV3YXJlRGF0YSIsIl9lcnIiLCJuZXh0Q29uZmlnIiwiaTE4biIsInRyYWlsaW5nU2xhc2giLCJCb29sZWFuIiwiX19ORVhUX1RSQUlMSU5HX1NMQVNIIiwicmV3cml0ZUhlYWRlciIsInJld3JpdGVUYXJnZXQiLCJtYXRjaGVkUGF0aCIsInBhcnNlZFJld3JpdGVUYXJnZXQiLCJwYXRobmFtZUluZm8iLCJnZXROZXh0UGF0aG5hbWVJbmZvIiwicGFyc2VEYXRhIiwiZnNQYXRobmFtZSIsInBhcnNlZFNvdXJjZSIsInBhdGgiLCJzcmMiLCJmb3JtYXROZXh0UGF0aG5hbWVJbmZvIiwiYnVpbGRJZCIsInJlZGlyZWN0VGFyZ2V0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../node_modules/next/dist/shared/lib/router/router.js\n"));
/***/ }),
@@ -1014,7 +1014,7 @@ eval(__webpack_require__.ts("\nvar _s = $RefreshSig$();\nObject.defineProperty(e
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar _classCallCheck = (__webpack_require__(/*! @swc/helpers/lib/_class_call_check.js */ \"../node_modules/@swc/helpers/lib/_class_call_check.js\")[\"default\"]);\nvar _inherits = (__webpack_require__(/*! @swc/helpers/lib/_inherits.js */ \"../node_modules/@swc/helpers/lib/_inherits.js\")[\"default\"]);\nvar _interopRequireDefault = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _toConsumableArray = (__webpack_require__(/*! @swc/helpers/lib/_to_consumable_array.js */ \"../node_modules/@swc/helpers/lib/_to_consumable_array.js\")[\"default\"]);\nvar _wrapNativeSuper = (__webpack_require__(/*! @swc/helpers/lib/_wrap_native_super.js */ \"../node_modules/@swc/helpers/lib/_wrap_native_super.js\")[\"default\"]);\nvar _createSuper = (__webpack_require__(/*! @swc/helpers/lib/_create_super.js */ \"../node_modules/@swc/helpers/lib/_create_super.js\")[\"default\"]);\nvar _runtimeJs = /*#__PURE__*/ _interopRequireDefault(__webpack_require__(/*! ../node_modules/next/dist/compiled/regenerator-runtime/runtime.js */ \"../node_modules/next/dist/compiled/regenerator-runtime/runtime.js\"));\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.execOnce = execOnce;\nexports.getLocationOrigin = getLocationOrigin;\nexports.getURL = getURL;\nexports.getDisplayName = getDisplayName;\nexports.isResSent = isResSent;\nexports.normalizeRepeatedSlashes = normalizeRepeatedSlashes;\nexports.loadGetInitialProps = loadGetInitialProps;\nexports.ST = exports.SP = exports.warnOnce = exports.isAbsoluteUrl = void 0;\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction execOnce(fn) {\n var used = false;\n var result;\n return function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n if (!used) {\n used = true;\n result = fn.apply(void 0, _toConsumableArray(args));\n }\n return result;\n };\n}\n// Scheme: https://tools.ietf.org/html/rfc3986#section-3.1\n// Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\nvar ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/;\nvar isAbsoluteUrl = function(url) {\n return ABSOLUTE_URL_REGEX.test(url);\n};\nexports.isAbsoluteUrl = isAbsoluteUrl;\nfunction getLocationOrigin() {\n var _location = window.location, protocol = _location.protocol, hostname = _location.hostname, port = _location.port;\n return \"\".concat(protocol, \"//\").concat(hostname).concat(port ? \":\" + port : \"\");\n}\nfunction getURL() {\n var href = window.location.href;\n var origin = getLocationOrigin();\n return href.substring(origin.length);\n}\nfunction getDisplayName(Component) {\n return typeof Component === \"string\" ? Component : Component.displayName || Component.name || \"Unknown\";\n}\nfunction isResSent(res) {\n return res.finished || res.headersSent;\n}\nfunction normalizeRepeatedSlashes(url) {\n var urlParts = url.split(\"?\");\n var urlNoQuery = urlParts[0];\n return urlNoQuery // first we replace any non-encoded backslashes with forward\n // then normalize repeated forward slashes\n .replace(/\\\\/g, \"/\").replace(/\\/\\/+/g, \"/\") + (urlParts[1] ? \"?\".concat(urlParts.slice(1).join(\"?\")) : \"\");\n}\nfunction loadGetInitialProps(App, ctx) {\n return _loadGetInitialProps.apply(this, arguments);\n}\nfunction _loadGetInitialProps() {\n _loadGetInitialProps = _asyncToGenerator(_runtimeJs.default.mark(function _callee(App, ctx) {\n var ref, message, res, props, message1;\n return _runtimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n if (false) {}\n ;\n if (!((ref = App.prototype) == null ? void 0 : ref.getInitialProps)) {\n _ctx.next = 5;\n break;\n }\n message = '\"'.concat(getDisplayName(App), '.getInitialProps()\" is defined as an instance method - visit https://nextjs.org/docs/messages/get-initial-props-as-an-instance-method for more information.');\n throw new Error(message);\n case 5:\n res = ctx.res || ctx.ctx && ctx.ctx.res;\n if (App.getInitialProps) {\n _ctx.next = 13;\n break;\n }\n if (!(ctx.ctx && ctx.Component)) {\n _ctx.next = 12;\n break;\n }\n _ctx.next = 10;\n return loadGetInitialProps(ctx.Component, ctx.ctx);\n case 10:\n _ctx.t0 = _ctx.sent;\n return _ctx.abrupt(\"return\", {\n pageProps: _ctx.t0\n });\n case 12:\n return _ctx.abrupt(\"return\", {});\n case 13:\n _ctx.next = 15;\n return App.getInitialProps(ctx);\n case 15:\n props = _ctx.sent;\n if (!(res && isResSent(res))) {\n _ctx.next = 18;\n break;\n }\n return _ctx.abrupt(\"return\", props);\n case 18:\n if (props) {\n _ctx.next = 21;\n break;\n }\n message1 = '\"'.concat(getDisplayName(App), '.getInitialProps()\" should resolve to an object. But found \"').concat(props, '\" instead.');\n throw new Error(message1);\n case 21:\n if (true) {\n if (Object.keys(props).length === 0 && !ctx.ctx) {\n console.warn(\"\".concat(getDisplayName(App), \" returned an empty object from `getInitialProps`. This de-optimizes and prevents automatic static optimization. https://nextjs.org/docs/messages/empty-object-getInitialProps\"));\n }\n }\n return _ctx.abrupt(\"return\", props);\n case 23:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee);\n }));\n return _loadGetInitialProps.apply(this, arguments);\n}\nvar warnOnce = function(_) {};\nif (true) {\n var warnings = new Set();\n exports.warnOnce = warnOnce = function(msg) {\n if (!warnings.has(msg)) {\n console.warn(msg);\n }\n warnings.add(msg);\n };\n}\nvar SP = typeof performance !== \"undefined\";\nexports.SP = SP;\nvar ST = SP && [\n \"mark\",\n \"measure\",\n \"getEntriesByName\"\n].every(function(method) {\n return typeof performance[method] === \"function\";\n});\nexports.ST = ST;\nvar DecodeError = /*#__PURE__*/ function(Error1) {\n _inherits(DecodeError, Error1);\n var _super = _createSuper(DecodeError);\n function DecodeError() {\n _classCallCheck(this, DecodeError);\n return _super.apply(this, arguments);\n }\n return DecodeError;\n}(_wrapNativeSuper(Error));\nexports.DecodeError = DecodeError;\nvar NormalizeError = /*#__PURE__*/ function(Error1) {\n _inherits(NormalizeError, Error1);\n var _super = _createSuper(NormalizeError);\n function NormalizeError() {\n _classCallCheck(this, NormalizeError);\n return _super.apply(this, arguments);\n }\n return NormalizeError;\n}(_wrapNativeSuper(Error));\nexports.NormalizeError = NormalizeError;\nvar PageNotFoundError = /*#__PURE__*/ function(Error1) {\n _inherits(PageNotFoundError, Error1);\n var _super = _createSuper(PageNotFoundError);\n function PageNotFoundError(page) {\n _classCallCheck(this, PageNotFoundError);\n var _this;\n _this = _super.call(this);\n _this.code = \"ENOENT\";\n _this.message = \"Cannot find module for page: \".concat(page);\n return _this;\n }\n return PageNotFoundError;\n}(_wrapNativeSuper(Error));\nexports.PageNotFoundError = PageNotFoundError;\nvar MissingStaticPage = /*#__PURE__*/ function(Error1) {\n _inherits(MissingStaticPage, Error1);\n var _super = _createSuper(MissingStaticPage);\n function MissingStaticPage(page, message) {\n _classCallCheck(this, MissingStaticPage);\n var _this;\n _this = _super.call(this);\n _this.message = \"Failed to load static file for page: \".concat(page, \" \").concat(message);\n return _this;\n }\n return MissingStaticPage;\n}(_wrapNativeSuper(Error));\nexports.MissingStaticPage = MissingStaticPage;\nvar MiddlewareNotFoundError = /*#__PURE__*/ function(Error1) {\n _inherits(MiddlewareNotFoundError, Error1);\n var _super = _createSuper(MiddlewareNotFoundError);\n function MiddlewareNotFoundError() {\n _classCallCheck(this, MiddlewareNotFoundError);\n var _this;\n _this = _super.call(this);\n _this.code = \"ENOENT\";\n _this.message = \"Cannot find the middleware module\";\n return _this;\n }\n return MiddlewareNotFoundError;\n}(_wrapNativeSuper(Error));\nexports.MiddlewareNotFoundError = MiddlewareNotFoundError;\nexports.warnOnce = warnOnce; //# sourceMappingURL=utils.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zaGFyZWQvbGliL3V0aWxzLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhOzs7Ozs7Ozs7OztBQUNiQSw4Q0FBNkM7SUFDekNHLEtBQUssRUFBRSxJQUFJO0NBQ2QsRUFBQyxDQUFDO0FBQ0hELGdCQUFnQixHQUFHRSxRQUFRLENBQUM7QUFDNUJGLHlCQUF5QixHQUFHRyxpQkFBaUIsQ0FBQztBQUM5Q0gsY0FBYyxHQUFHSSxNQUFNLENBQUM7QUFDeEJKLHNCQUFzQixHQUFHSyxjQUFjLENBQUM7QUFDeENMLGlCQUFpQixHQUFHTSxTQUFTLENBQUM7QUFDOUJOLGdDQUFnQyxHQUFHTyx3QkFBd0IsQ0FBQztBQUM1RFAsMkJBQTJCLEdBQUdRLG1CQUFtQixDQUFDO0FBQ2xEUixVQUFVLEdBQUdBLFVBQVUsR0FBR0EsZ0JBQWdCLEdBQUdBLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQzVFLFNBQVNhLGtCQUFrQixDQUFDQyxHQUFHLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRUMsR0FBRyxFQUFFQyxHQUFHLEVBQUU7SUFDdkUsSUFBSTtRQUNBLElBQUlDLElBQUksR0FBR1AsR0FBRyxDQUFDSyxHQUFHLENBQUMsQ0FBQ0MsR0FBRyxDQUFDO1FBQ3hCLElBQUluQixLQUFLLEdBQUdvQixJQUFJLENBQUNwQixLQUFLO0tBQ3pCLENBQUMsT0FBT3FCLEtBQUssRUFBRTtRQUNaTixNQUFNLENBQUNNLEtBQUssQ0FBQyxDQUFDO1FBQ2QsT0FBTztLQUNWO0lBQ0QsSUFBSUQsSUFBSSxDQUFDRSxJQUFJLEVBQUU7UUFDWFIsT0FBTyxDQUFDZCxLQUFLLENBQUMsQ0FBQztLQUNsQixNQUFNO1FBQ0h1QixPQUFPLENBQUNULE9BQU8sQ0FBQ2QsS0FBSyxDQUFDLENBQUN3QixJQUFJLENBQUNSLEtBQUssRUFBRUMsTUFBTSxDQUFDLENBQUM7S0FDOUM7Q0FDSjtBQUNELFNBQVNRLGlC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QUFpQixDQUFDO0FBQzlDLHFCQUF1QixpQkFNbkI7OzthQU5FRyxpQkFBaUIsQ0FDUEYsSUFBSSxFQUFFdEIsT0FBTzs7O2tDQUNiO1FBQ1IsTUFBS0EsT0FBTyxHQUFHLHVDQUFzQyxDQUFVQSxNQUFPLENBQWZzQixJQUFJLEVBQUMsR0FBQyxDQUFVLFFBQVJ0QixPQUFPLENBQUUsQ0FBQzs7OztDQUVoRixrQkFMK0JLLEtBQUssRUFLcEM7QUFDRHJFLHlCQUF5QixHQUFHd0YsaUJBQWlCLENBQUM7QUFDOUMsMkJBQTZCLGlCQU96Qjs7O2FBUEVDLHVCQUF1Qjs7O2tDQUViO1FBQ1IsTUFBS0YsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUNyQixNQUFLdkIsT0FBTyxHQUFJLG1DQUFpQyxDQUFFOzs7O0NBRTFELGtCQU5xQ0ssS0FBSyxFQU0xQztBQUNEckUsK0JBQStCLEdBQUd5Rix1QkFBdUIsQ0FBQztBQUMxRHpGLGdCQUFnQixHQUFHVyxRQUFRLENBQUMsQ0FFNUIsaUNBQWlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvdXRpbHMuanM/OTJlYyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZXhlY09uY2UgPSBleGVjT25jZTtcbmV4cG9ydHMuZ2V0TG9jYXRpb25PcmlnaW4gPSBnZXRMb2NhdGlvbk9yaWdpbjtcbmV4cG9ydHMuZ2V0VVJMID0gZ2V0VVJMO1xuZXhwb3J0cy5nZXREaXNwbGF5TmFtZSA9IGdldERpc3BsYXlOYW1lO1xuZXhwb3J0cy5pc1Jlc1NlbnQgPSBpc1Jlc1NlbnQ7XG5leHBvcnRzLm5vcm1hbGl6ZVJlcGVhdGVkU2xhc2hlcyA9IG5vcm1hbGl6ZVJlcGVhdGVkU2xhc2hlcztcbmV4cG9ydHMubG9hZEdldEluaXRpYWxQcm9wcyA9IGxvYWRHZXRJbml0aWFsUHJvcHM7XG5leHBvcnRzLlNUID0gZXhwb3J0cy5TUCA9IGV4cG9ydHMud2Fybk9uY2UgPSBleHBvcnRzLmlzQWJzb2x1dGVVcmwgPSB2b2lkIDA7XG5mdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIGtleSwgYXJnKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgdmFyIGluZm8gPSBnZW5ba2V5XShhcmcpO1xuICAgICAgICB2YXIgdmFsdWUgPSBpbmZvLnZhbHVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGluZm8uZG9uZSkge1xuICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oX25leHQsIF90aHJvdyk7XG4gICAgfVxufVxuZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3IoZm4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBzZWxmID0gdGhpcywgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdmFyIGdlbiA9IGZuLmFwcGx5KHNlbGYsIGFyZ3MpO1xuICAgICAgICAgICAgZnVuY3Rpb24gX25leHQodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBfdGhyb3coZXJyKSB7XG4gICAgICAgICAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcInRocm93XCIsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfbmV4dCh1bmRlZmluZWQpO1xuICAgICAgICB9KTtcbiAgICB9O1xufVxuZnVuY3Rpb24gZXhlY09uY2UoZm4pIHtcbiAgICBsZXQgdXNlZCA9IGZhbHNlO1xuICAgIGxldCByZXN1bHQ7XG4gICAgcmV0dXJuICguLi5hcmdzKT0+e1xuICAgICAgICBpZiAoIXVzZWQpIHtcbiAgICAgICAgICAgIHVzZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmVzdWx0ID0gZm4oLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xufVxuLy8gU2NoZW1lOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTMuMVxuLy8gQWJzb2x1dGUgVVJMOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTQuM1xuY29uc3QgQUJTT0xVVEVfVVJMX1JFR0VYID0gL15bYS16QS1aXVthLXpBLVpcXGQrXFwtLl0qPzovO1xuY29uc3QgaXNBYnNvbHV0ZVVybCA9ICh1cmwpPT5BQlNPTFVURV9VUkxfUkVHRVgudGVzdCh1cmwpO1xuZXhwb3J0cy5pc0Fic29sdXRlVXJsID0gaXNBYnNvbHV0ZVVybDtcbmZ1bmN0aW9uIGdldExvY2F0aW9uT3JpZ2luKCkge1xuICAgIGNvbnN0IHsgcHJvdG9jb2wgLCBob3N0bmFtZSAsIHBvcnQgIH0gPSB3aW5kb3cubG9jYXRpb247XG4gICAgcmV0dXJuIGAke3Byb3RvY29sfS8vJHtob3N0bmFtZX0ke3BvcnQgPyAnOicgKyBwb3J0IDogJyd9YDtcbn1cbmZ1bmN0aW9uIGdldFVSTCgpIHtcbiAgICBjb25zdCB7IGhyZWYgIH0gPSB3aW5kb3cubG9jYXRpb247XG4gICAgY29uc3Qgb3JpZ2luID0gZ2V0TG9jYXRpb25PcmlnaW4oKTtcbiAgICByZXR1cm4gaHJlZi5zdWJzdHJpbmcob3JpZ2luLmxlbmd0aCk7XG59XG5mdW5jdGlvbiBnZXREaXNwbGF5TmFtZShDb21wb25lbnQpIHtcbiAgICByZXR1cm4gdHlwZW9mIENvbXBvbmVudCA9PT0gJ3N0cmluZycgPyBDb21wb25lbnQgOiBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ1Vua25vd24nO1xufVxuZnVuY3Rpb24gaXNSZXNTZW50KHJlcykge1xuICAgIHJldHVybiByZXMuZmluaXNoZWQgfHwgcmVzLmhlYWRlcnNTZW50O1xufVxuZnVuY3Rpb24gbm9ybWFsaXplUmVwZWF0ZWRTbGFzaGVzKHVybCkge1xuICAgIGNvbnN0IHVybFBhcnRzID0gdXJsLnNwbGl0KCc/Jyk7XG4gICAgY29uc3QgdXJsTm9RdWVyeSA9IHVybFBhcnRzWzBdO1xuICAgIHJldHVybiB1cmxOb1F1ZXJ5Ly8gZmlyc3Qgd2UgcmVwbGFjZSBhbnkgbm9uLWVuY29kZWQgYmFja3NsYXNoZXMgd2l0aCBmb3J3YXJkXG4gICAgLy8gdGhlbiBub3JtYWxpemUgcmVwZWF0ZWQgZm9yd2FyZCBzbGFzaGVzXG4gICAgLnJlcGxhY2UoL1xcXFwvZywgJy8nKS5yZXBsYWNlKC9cXC9cXC8rL2csICcvJykgKyAodXJsUGFydHNbMV0gPyBgPyR7dXJsUGFydHMuc2xpY2UoMSkuam9pbignPycpfWAgOiAnJyk7XG59XG5mdW5jdGlvbiBsb2FkR2V0SW5pdGlhbFByb3BzKEFwcCwgY3R4KSB7XG4gICAgcmV0dXJuIF9sb2FkR2V0SW5pdGlhbFByb3BzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5mdW5jdGlvbiBfbG9hZEdldEluaXRpYWxQcm9wcygpIHtcbiAgICBfbG9hZEdldEluaXRpYWxQcm9wcyA9IF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKihBcHAsIGN0eCkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgdmFyIHJlZjtcbiAgICAgICAgICAgIGlmICgocmVmID0gQXBwLnByb3RvdHlwZSkgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZi5nZXRJbml0aWFsUHJvcHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYFwiJHtnZXREaXNwbGF5TmFtZShBcHApfS5nZXRJbml0aWFsUHJvcHMoKVwiIGlzIGRlZmluZWQgYXMgYW4gaW5zdGFuY2UgbWV0aG9kIC0gdmlzaXQgaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZ2V0LWluaXRpYWwtcHJvcHMtYXMtYW4taW5zdGFuY2UtbWV0aG9kIGZvciBtb3JlIGluZm9ybWF0aW9uLmA7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIHdoZW4gY2FsbGVkIGZyb20gX2FwcCBgY3R4YCBpcyBuZXN0ZWQgaW4gYGN0eGBcbiAgICAgICAgY29uc3QgcmVzID0gY3R4LnJlcyB8fCBjdHguY3R4ICYmIGN0eC5jdHgucmVzO1xuICAgICAgICBpZiAoIUFwcC5nZXRJbml0aWFsUHJvcHMpIHtcbiAgICAgICAgICAgIGlmIChjdHguY3R4ICYmIGN0eC5Db21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIHBhZ2VQcm9wcyBkZWZhdWx0XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgcGFnZVByb3BzOiB5aWVsZCBsb2FkR2V0SW5pdGlhbFByb3BzKGN0eC5Db21wb25lbnQsIGN0eC5jdHgpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcm9wcyA9IHlpZWxkIEFwcC5nZXRJbml0aWFsUHJvcHMoY3R4KTtcbiAgICAgICAgaWYgKHJlcyAmJiBpc1Jlc1NlbnQocmVzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHByb3BzO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcHJvcHMpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgXCIke2dldERpc3BsYXlOYW1lKEFwcCl9LmdldEluaXRpYWxQcm9wcygpXCIgc2hvdWxkIHJlc29sdmUgdG8gYW4gb2JqZWN0LiBCdXQgZm91bmQgXCIke3Byb3BzfVwiIGluc3RlYWQuYDtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHByb3BzKS5sZW5ndGggPT09IDAgJiYgIWN0eC5jdHgpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYCR7Z2V0RGlzcGxheU5hbWUoQXBwKX0gcmV0dXJuZWQgYW4gZW1wdHkgb2JqZWN0IGZyb20gXFxgZ2V0SW5pdGlhbFByb3BzXFxgLiBUaGlzIGRlLW9wdGltaXplcyBhbmQgcHJldmVudHMgYXV0b21hdGljIHN0YXRpYyBvcHRpbWl6YXRpb24uIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2VtcHR5LW9iamVjdC1nZXRJbml0aWFsUHJvcHNgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvcHM7XG4gICAgfSk7XG4gICAgcmV0dXJuIF9sb2FkR2V0SW5pdGlhbFByb3BzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5sZXQgd2Fybk9uY2UgPSAoXyk9Pnt9O1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBjb25zdCB3YXJuaW5ncyA9IG5ldyBTZXQoKTtcbiAgICBleHBvcnRzLndhcm5PbmNlID0gd2Fybk9uY2UgPSAobXNnKT0+e1xuICAgICAgICBpZiAoIXdhcm5pbmdzLmhhcyhtc2cpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4obXNnKTtcbiAgICAgICAgfVxuICAgICAgICB3YXJuaW5ncy5hZGQobXNnKTtcbiAgICB9O1xufVxuY29uc3QgU1AgPSB0eXBlb2YgcGVyZm9ybWFuY2UgIT09ICd1bmRlZmluZWQnO1xuZXhwb3J0cy5TUCA9IFNQO1xuY29uc3QgU1QgPSBTUCAmJiBbXG4gICAgJ21hcmsnLFxuICAgICdtZWFzdXJlJyxcbiAgICAnZ2V0RW50cmllc0J5TmFtZSdcbl0uZXZlcnkoKG1ldGhvZCk9PnR5cGVvZiBwZXJmb3JtYW5jZVttZXRob2RdID09PSAnZnVuY3Rpb24nKTtcbmV4cG9ydHMuU1QgPSBTVDtcbmNsYXNzIERlY29kZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xufVxuZXhwb3J0cy5EZWNvZGVFcnJvciA9IERlY29kZUVycm9yO1xuY2xhc3MgTm9ybWFsaXplRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG59XG5leHBvcnRzLk5vcm1hbGl6ZUVycm9yID0gTm9ybWFsaXplRXJyb3I7XG5jbGFzcyBQYWdlTm90Rm91bmRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihwYWdlKXtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jb2RlID0gJ0VOT0VOVCc7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IGBDYW5ub3QgZmluZCBtb2R1bGUgZm9yIHBhZ2U6ICR7cGFnZX1gO1xuICAgIH1cbn1cbmV4cG9ydHMuUGFnZU5vdEZvdW5kRXJyb3IgPSBQYWdlTm90Rm91bmRFcnJvcjtcbmNsYXNzIE1pc3NpbmdTdGF0aWNQYWdlIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKHBhZ2UsIG1lc3NhZ2Upe1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBgRmFpbGVkIHRvIGxvYWQgc3RhdGljIGZpbGUgZm9yIHBhZ2U6ICR7cGFnZX0gJHttZXNzYWdlfWA7XG4gICAgfVxufVxuZXhwb3J0cy5NaXNzaW5nU3RhdGljUGFnZSA9IE1pc3NpbmdTdGF0aWNQYWdlO1xuY2xhc3MgTWlkZGxld2FyZU5vdEZvdW5kRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IoKXtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jb2RlID0gJ0VOT0VOVCc7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IGBDYW5ub3QgZmluZCB0aGUgbWlkZGxld2FyZSBtb2R1bGVgO1xuICAgIH1cbn1cbmV4cG9ydHMuTWlkZGxld2FyZU5vdEZvdW5kRXJyb3IgPSBNaWRkbGV3YXJlTm90Rm91bmRFcnJvcjtcbmV4cG9ydHMud2Fybk9uY2UgPSB3YXJuT25jZTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbHMuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZXhlY09uY2UiLCJnZXRMb2NhdGlvbk9yaWdpbiIsImdldFVSTCIsImdldERpc3BsYXlOYW1lIiwiaXNSZXNTZW50Iiwibm9ybWFsaXplUmVwZWF0ZWRTbGFzaGVzIiwibG9hZEdldEluaXRpYWxQcm9wcyIsIlNUIiwiU1AiLCJ3YXJuT25jZSIsImlzQWJzb2x1dGVVcmwiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJyZXNvbHZlIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJhcmciLCJpbmZvIiwiZXJyb3IiLCJkb25lIiwiUHJvbWlzZSIsInRoZW4iLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsInVzZWQiLCJyZXN1bHQiLCJBQlNPTFVURV9VUkxfUkVHRVgiLCJ1cmwiLCJ0ZXN0Iiwid2luZG93IiwibG9jYXRpb24iLCJwcm90b2NvbCIsImhvc3RuYW1lIiwicG9ydCIsImhyZWYiLCJvcmlnaW4iLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJDb21wb25lbnQiLCJkaXNwbGF5TmFtZSIsIm5hbWUiLCJyZXMiLCJmaW5pc2hlZCIsImhlYWRlcnNTZW50IiwidXJsUGFydHMiLCJzcGxpdCIsInVybE5vUXVlcnkiLCJyZXBsYWNlIiwic2xpY2UiLCJqb2luIiwiQXBwIiwiY3R4IiwiX2xvYWRHZXRJbml0aWFsUHJvcHMiLCJyZWYiLCJtZXNzYWdlIiwicHJvcHMiLCJwcm9jZXNzIiwicHJvdG90eXBlIiwiZ2V0SW5pdGlhbFByb3BzIiwiRXJyb3IiLCJwYWdlUHJvcHMiLCJrZXlzIiwiY29uc29sZSIsIndhcm4iLCJfIiwid2FybmluZ3MiLCJTZXQiLCJtc2ciLCJoYXMiLCJhZGQiLCJwZXJmb3JtYW5jZSIsImV2ZXJ5IiwibWV0aG9kIiwiRGVjb2RlRXJyb3IiLCJOb3JtYWxpemVFcnJvciIsIlBhZ2VOb3RGb3VuZEVycm9yIiwicGFnZSIsImNvZGUiLCJNaXNzaW5nU3RhdGljUGFnZSIsIk1pZGRsZXdhcmVOb3RGb3VuZEVycm9yIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../node_modules/next/dist/shared/lib/utils.js\n"));
+eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar _classCallCheck = (__webpack_require__(/*! @swc/helpers/lib/_class_call_check.js */ \"../node_modules/@swc/helpers/lib/_class_call_check.js\")[\"default\"]);\nvar _inherits = (__webpack_require__(/*! @swc/helpers/lib/_inherits.js */ \"../node_modules/@swc/helpers/lib/_inherits.js\")[\"default\"]);\nvar _interopRequireDefault = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _toConsumableArray = (__webpack_require__(/*! @swc/helpers/lib/_to_consumable_array.js */ \"../node_modules/@swc/helpers/lib/_to_consumable_array.js\")[\"default\"]);\nvar _wrapNativeSuper = (__webpack_require__(/*! @swc/helpers/lib/_wrap_native_super.js */ \"../node_modules/@swc/helpers/lib/_wrap_native_super.js\")[\"default\"]);\nvar _createSuper = (__webpack_require__(/*! @swc/helpers/lib/_create_super.js */ \"../node_modules/@swc/helpers/lib/_create_super.js\")[\"default\"]);\nvar _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs = /*#__PURE__*/ _interopRequireDefault(__webpack_require__(/*! ../node_modules/next/dist/compiled/regenerator-runtime/runtime.js */ \"../node_modules/next/dist/compiled/regenerator-runtime/runtime.js\"));\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.execOnce = execOnce;\nexports.getLocationOrigin = getLocationOrigin;\nexports.getURL = getURL;\nexports.getDisplayName = getDisplayName;\nexports.isResSent = isResSent;\nexports.normalizeRepeatedSlashes = normalizeRepeatedSlashes;\nexports.loadGetInitialProps = loadGetInitialProps;\nexports.ST = exports.SP = exports.warnOnce = exports.isAbsoluteUrl = void 0;\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction execOnce(fn) {\n var used = false;\n var result;\n return function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n if (!used) {\n used = true;\n result = fn.apply(void 0, _toConsumableArray(args));\n }\n return result;\n };\n}\n// Scheme: https://tools.ietf.org/html/rfc3986#section-3.1\n// Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\nvar ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/;\nvar isAbsoluteUrl = function(url) {\n return ABSOLUTE_URL_REGEX.test(url);\n};\nexports.isAbsoluteUrl = isAbsoluteUrl;\nfunction getLocationOrigin() {\n var _location = window.location, protocol = _location.protocol, hostname = _location.hostname, port = _location.port;\n return \"\".concat(protocol, \"//\").concat(hostname).concat(port ? \":\" + port : \"\");\n}\nfunction getURL() {\n var href = window.location.href;\n var origin = getLocationOrigin();\n return href.substring(origin.length);\n}\nfunction getDisplayName(Component) {\n return typeof Component === \"string\" ? Component : Component.displayName || Component.name || \"Unknown\";\n}\nfunction isResSent(res) {\n return res.finished || res.headersSent;\n}\nfunction normalizeRepeatedSlashes(url) {\n var urlParts = url.split(\"?\");\n var urlNoQuery = urlParts[0];\n return urlNoQuery // first we replace any non-encoded backslashes with forward\n // then normalize repeated forward slashes\n .replace(/\\\\/g, \"/\").replace(/\\/\\/+/g, \"/\") + (urlParts[1] ? \"?\".concat(urlParts.slice(1).join(\"?\")) : \"\");\n}\nfunction loadGetInitialProps(App, ctx) {\n return _loadGetInitialProps.apply(this, arguments);\n}\nfunction _loadGetInitialProps() {\n _loadGetInitialProps = _asyncToGenerator(_cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.mark(function _callee(App, ctx) {\n var ref, message, res, props, message1;\n return _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n if (false) {}\n ;\n if (!((ref = App.prototype) == null ? void 0 : ref.getInitialProps)) {\n _ctx.next = 5;\n break;\n }\n message = '\"'.concat(getDisplayName(App), '.getInitialProps()\" is defined as an instance method - visit https://nextjs.org/docs/messages/get-initial-props-as-an-instance-method for more information.');\n throw new Error(message);\n case 5:\n res = ctx.res || ctx.ctx && ctx.ctx.res;\n if (App.getInitialProps) {\n _ctx.next = 13;\n break;\n }\n if (!(ctx.ctx && ctx.Component)) {\n _ctx.next = 12;\n break;\n }\n _ctx.next = 10;\n return loadGetInitialProps(ctx.Component, ctx.ctx);\n case 10:\n _ctx.t0 = _ctx.sent;\n return _ctx.abrupt(\"return\", {\n pageProps: _ctx.t0\n });\n case 12:\n return _ctx.abrupt(\"return\", {});\n case 13:\n _ctx.next = 15;\n return App.getInitialProps(ctx);\n case 15:\n props = _ctx.sent;\n if (!(res && isResSent(res))) {\n _ctx.next = 18;\n break;\n }\n return _ctx.abrupt(\"return\", props);\n case 18:\n if (props) {\n _ctx.next = 21;\n break;\n }\n message1 = '\"'.concat(getDisplayName(App), '.getInitialProps()\" should resolve to an object. But found \"').concat(props, '\" instead.');\n throw new Error(message1);\n case 21:\n if (true) {\n if (Object.keys(props).length === 0 && !ctx.ctx) {\n console.warn(\"\".concat(getDisplayName(App), \" returned an empty object from `getInitialProps`. This de-optimizes and prevents automatic static optimization. https://nextjs.org/docs/messages/empty-object-getInitialProps\"));\n }\n }\n return _ctx.abrupt(\"return\", props);\n case 23:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee);\n }));\n return _loadGetInitialProps.apply(this, arguments);\n}\nvar warnOnce = function(_) {};\nif (true) {\n var warnings = new Set();\n exports.warnOnce = warnOnce = function(msg) {\n if (!warnings.has(msg)) {\n console.warn(msg);\n }\n warnings.add(msg);\n };\n}\nvar SP = typeof performance !== \"undefined\";\nexports.SP = SP;\nvar ST = SP && [\n \"mark\",\n \"measure\",\n \"getEntriesByName\"\n].every(function(method) {\n return typeof performance[method] === \"function\";\n});\nexports.ST = ST;\nvar DecodeError = /*#__PURE__*/ function(Error1) {\n _inherits(DecodeError, Error1);\n var _super = _createSuper(DecodeError);\n function DecodeError() {\n _classCallCheck(this, DecodeError);\n return _super.apply(this, arguments);\n }\n return DecodeError;\n}(_wrapNativeSuper(Error));\nexports.DecodeError = DecodeError;\nvar NormalizeError = /*#__PURE__*/ function(Error1) {\n _inherits(NormalizeError, Error1);\n var _super = _createSuper(NormalizeError);\n function NormalizeError() {\n _classCallCheck(this, NormalizeError);\n return _super.apply(this, arguments);\n }\n return NormalizeError;\n}(_wrapNativeSuper(Error));\nexports.NormalizeError = NormalizeError;\nvar PageNotFoundError = /*#__PURE__*/ function(Error1) {\n _inherits(PageNotFoundError, Error1);\n var _super = _createSuper(PageNotFoundError);\n function PageNotFoundError(page) {\n _classCallCheck(this, PageNotFoundError);\n var _this;\n _this = _super.call(this);\n _this.code = \"ENOENT\";\n _this.message = \"Cannot find module for page: \".concat(page);\n return _this;\n }\n return PageNotFoundError;\n}(_wrapNativeSuper(Error));\nexports.PageNotFoundError = PageNotFoundError;\nvar MissingStaticPage = /*#__PURE__*/ function(Error1) {\n _inherits(MissingStaticPage, Error1);\n var _super = _createSuper(MissingStaticPage);\n function MissingStaticPage(page, message) {\n _classCallCheck(this, MissingStaticPage);\n var _this;\n _this = _super.call(this);\n _this.message = \"Failed to load static file for page: \".concat(page, \" \").concat(message);\n return _this;\n }\n return MissingStaticPage;\n}(_wrapNativeSuper(Error));\nexports.MissingStaticPage = MissingStaticPage;\nvar MiddlewareNotFoundError = /*#__PURE__*/ function(Error1) {\n _inherits(MiddlewareNotFoundError, Error1);\n var _super = _createSuper(MiddlewareNotFoundError);\n function MiddlewareNotFoundError() {\n _classCallCheck(this, MiddlewareNotFoundError);\n var _this;\n _this = _super.call(this);\n _this.code = \"ENOENT\";\n _this.message = \"Cannot find the middleware module\";\n return _this;\n }\n return MiddlewareNotFoundError;\n}(_wrapNativeSuper(Error));\nexports.MiddlewareNotFoundError = MiddlewareNotFoundError;\nexports.warnOnce = warnOnce; //# sourceMappingURL=utils.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zaGFyZWQvbGliL3V0aWxzLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhOzs7Ozs7Ozs7OztBQUNiQSw4Q0FBNkM7SUFDekNHLEtBQUssRUFBRSxJQUFJO0NBQ2QsRUFBQyxDQUFDO0FBQ0hELGdCQUFnQixHQUFHRSxRQUFRLENBQUM7QUFDNUJGLHlCQUF5QixHQUFHRyxpQkFBaUIsQ0FBQztBQUM5Q0gsY0FBYyxHQUFHSSxNQUFNLENBQUM7QUFDeEJKLHNCQUFzQixHQUFHSyxjQUFjLENBQUM7QUFDeENMLGlCQUFpQixHQUFHTSxTQUFTLENBQUM7QUFDOUJOLGdDQUFnQyxHQUFHTyx3QkFBd0IsQ0FBQztBQUM1RFAsMkJBQTJCLEdBQUdRLG1CQUFtQixDQUFDO0FBQ2xEUixVQUFVLEdBQUdBLFVBQVUsR0FBR0EsZ0JBQWdCLEdBQUdBLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQzVFLFNBQVNhLGtCQUFrQixDQUFDQyxHQUFHLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRUMsR0FBRyxFQUFFQyxHQUFHLEVBQUU7SUFDdkUsSUFBSTtRQUNBLElBQUlDLElBQUksR0FBR1AsR0FBRyxDQUFDSyxHQUFHLENBQUMsQ0FBQ0MsR0FBRyxDQUFDO1FBQ3hCLElBQUluQixLQUFLLEdBQUdvQixJQUFJLENBQUNwQixLQUFLO0tBQ3pCLENBQUMsT0FBT3FCLEtBQUssRUFBRTtRQUNaTixNQUFNLENBQUNNLEtBQUssQ0FBQyxDQUFDO1FBQ2QsT0FBTztLQUNWO0lBQ0QsSUFBSUQsSUFBSSxDQUFDRSxJQUFJLEVBQUU7UUFDWFIsT0FBTyxDQUFDZCxLQUFLLENBQUMsQ0FBQztLQUNsQixNQUFNO1FBQ0h1QixPQUFPLENBQUNULE9BQU8sQ0FBQ2QsS0FBSyxDQUFDLENBQUN3QixJQUFJLENBQUNSLEtBQUssRUFBRUMsTUFBTSxDQUFDLENBQUM7S0FDOUM7Q0FDSjtBQUNELFNBQVNRLGlCQUFpQixDQUFDQyxFQUFFLEVBQUU7SUFDM0IsT0FBTyxXQUFXO1FBQ2QsSUFBSUMsSUFBSSxHQUFHLElBQUksRUFBRUMsSUFBSSxHQUFHQyxTQUFTO1FBQ2pDLE9BQU8sSUFBSU4sT0FBTyxDQUFDLFNBQVNULE9BQU8sRUFBRUMsTUFBTSxFQUFFO1lBQ3pDLElBQUlGLEdBQUcsR0FBR2EsRUFBRSxDQUFDSSxLQUFLLENBQUNILElBQUksRUFBRUMsSUFBSSxDQUFDO1lBQzlCLFNBQVNaLEtBQUssQ0FBQ2hCLEtBQUssRUFBRTtnQkFDbEJZLGtCQUFrQixDQUFDQyxHQUFHLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRSxNQUFNLEVBQUVqQixLQUFLLENBQUMsQ0FBQzthQUMxRTtZQUNELFNBQVNpQixNQUFNLENBQUNjLEdBQUcsRUFBRTtnQkFDakJuQixrQkFBa0IsQ0FBQ0MsR0FBRyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsS0FBSyxFQUFFQyxNQUFNLEVBQUUsT0FBTyxFQUFFYyxHQUFHLENBQUMsQ0FBQzthQUN6RTtZQUNEZixLQUFLLENBQUNnQixTQUFTLENBQUMsQ0FBQztTQUNwQixDQUFDLENBQUM7S0FDTixDQUFDO0NBQ0w7QUFDRCxTQUFTL0IsUUFBUSxDQUFDeUIsRUFBRSxFQUFFO0lBQ2xCLElBQUlPLElBQUksR0FBRyxLQUFLO0lBQ2hCLElBQUlDLE1BQU07SUFDVixPQUFPLFdBQVc7eUNBQVBOLElBQUk7WUFBSkEsSUFBSTs7UUFDWCxJQUFJLENBQUNLLElBQUksRUFBRTtZQUNQQSxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ1pDLE1BQU0sR0FBR1IsRUFBRSxDQUFGQSxLQUFXLENBQVhBLEtBQUFBLENBQUUsRUFBQyxtQkFBR0UsSUFBSSxDQUFKQSxDQUFLLENBQUM7U0FDeEI7UUFDRCxPQUFPTSxNQUFNLENBQUM7S0FDakIsQ0FBQztDQUNMO0FBQ0QsMERBQTBEO0FBQzFELGdFQUFnRTtBQUNoRSxJQUFNQyxrQkFBa0IsK0JBQStCO0FBQ3ZELElBQU14QixhQUFhLEdBQUcsU0FBQ3lCLEdBQUc7V0FBR0Qsa0JBQWtCLENBQUNFLElBQUksQ0FBQ0QsR0FBRyxDQUFDO0NBQUE7QUFDekRyQyxxQkFBcUIsR0FBR1ksYUFBYSxDQUFDO0FBQ3RDLFNBQVNULGlCQUFpQixHQUFHO0lBQ3pCLElBQXdDb0MsU0FBZSxHQUFmQSxNQUFNLENBQUNDLFFBQVEsRUFBL0NDLFFBQVEsR0FBd0JGLFNBQWUsQ0FBL0NFLFFBQVEsRUFBR0MsUUFBUSxHQUFhSCxTQUFlLENBQXBDRyxRQUFRLEVBQUdDLElBQUksR0FBTUosU0FBZSxDQUF6QkksSUFBSTtJQUNsQyxPQUFPLEVBQUMsQ0FBZUQsTUFBUSxDQUFyQkQsUUFBUSxFQUFDLElBQUUsQ0FBVyxDQUFFRSxNQUFzQixDQUFqQ0QsUUFBUSxDQUEwQixRQUF2QkMsSUFBSSxHQUFHLEdBQUcsR0FBR0EsSUFBSSxHQUFHLEVBQUUsQ0FBRSxDQUFDO0NBQzlEO0FBQ0QsU0FBU3ZDLE1BQU0sR0FBRztJQUNkLElBQU0sSUFBTSxHQUFNbUMsTUFBTSxDQUFDQyxRQUFRLENBQXpCSSxJQUFJO0lBQ1osSUFBTUMsTUFBTSxHQUFHMUMsaUJBQWlCLEVBQUU7SUFDbEMsT0FBT3lDLElBQUksQ0FBQ0UsU0FBUyxDQUFDRCxNQUFNLENBQUNFLE1BQU0sQ0FBQyxDQUFDO0NBQ3hDO0FBQ0QsU0FBUzFDLGNBQWMsQ0FBQzJDLFNBQVMsRUFBRTtJQUMvQixPQUFPLE9BQU9BLFNBQVMsS0FBSyxRQUFRLEdBQUdBLFNBQVMsR0FBR0EsU0FBUyxDQUFDQyxXQUFXLElBQUlELFNBQVMsQ0FBQ0UsSUFBSSxJQUFJLFNBQVMsQ0FBQztDQUMzRztBQUNELFNBQVM1QyxTQUFTLENBQUM2QyxHQUFHLEVBQUU7SUFDcEIsT0FBT0EsR0FBRyxDQUFDQyxRQUFRLElBQUlELEdBQUcsQ0FBQ0UsV0FBVyxDQUFDO0NBQzFDO0FBQ0QsU0FBUzlDLHdCQUF3QixDQUFDOEIsR0FBRyxFQUFFO0lBQ25DLElBQU1pQixRQUFRLEdBQUdqQixHQUFHLENBQUNrQixLQUFLLENBQUMsR0FBRyxDQUFDO0lBQy9CLElBQU1DLFVBQVUsR0FBR0YsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM5QixPQUFPRSxVQUFVLDZEQUE0RDtJQUM3RSwwQ0FBMEM7S0FDekNDLE9BQU8sUUFBUSxHQUFHLENBQUMsQ0FBQ0EsT0FBTyxXQUFXLEdBQUcsQ0FBQyxHQUFHLENBQUNILFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFFLENBQThCLE9BQTVCQSxRQUFRLENBQUNJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7Q0FDeEc7QUFDRCxTQUFTbkQsbUJBQW1CLENBQUNvRCxHQUFHLEVBQUVDLEdBQUcsRUFBRTtJQUNuQyxPQUFPQyxvQkFBb0IsQ0FBQy9CLEtBQUssQ0FBQyxJQUFJLEVBQUVELFNBQVMsQ0FBQyxDQUFDO0NBQ3REO0FBQ0QsU0FBU2dDLG9CQUFvQixHQUFHO0lBQzVCQSxvQkFBb0IsR0FBR3BDLGlCQUFpQixnSEFBQyxpQkFBVWtDLEdBQUcsRUFBRUMsR0FBRyxFQUFFO1lBRWpERSxHQUFHLEVBRUdDLE9BQU8sRUFLZmIsR0FBRyxFQVVIYyxLQUFLLEVBS0RELFFBQU87Ozs7d0JBdkJiRSxLQUFxQyxFQUFFLEU7cUJBQy9CO3dCQUNKLEdBQUNILEdBQUcsR0FBR0gsR0FBRyxDQUFDTyxTQUFTLENBQUMsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUdKLEdBQUcsQ0FBQ0ssZUFBZTs7OztvQkFDdERKLE9BQU8sR0FBRyxHQUFFLENBQXNCLE1BQTJKLENBQS9LM0QsY0FBYyxDQUFDdUQsR0FBRyxDQUFDLEVBQUMsNkpBQTJKLENBQUMsQ0FBQztvQkFDck0sTUFBTSxJQUFJUyxLQUFLLENBQUNMLE9BQU8sQ0FBQyxDQUFDOztvQkFJM0JiLEdBQUcsR0FBR1UsR0FBRyxDQUFDVixHQUFHLElBQUlVLEdBQUcsQ0FBQ0EsR0FBRyxJQUFJQSxHQUFHLENBQUNBLEdBQUcsQ0FBQ1YsR0FBRyxDQUFDO3dCQUN6Q1MsR0FBRyxDQUFDUSxlQUFlOzs7O3dCQUNoQlAsQ0FBQUEsQ0FBQUEsR0FBRyxDQUFDQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ2IsU0FBUzs7Ozs7MkJBR0h4QyxtQkFBbUIsQ0FBQ3FELEdBQUcsQ0FBQ2IsU0FBUyxFQUFFYSxHQUFHLENBQUNBLEdBQUcsQ0FBQzs7O2lEQUR6RDt3QkFDSFMsU0FBUztxQkFDWjs7aURBRUUsRUFBRTs7OzJCQUVPVixHQUFHLENBQUNRLGVBQWUsQ0FBQ1AsR0FBRyxDQUFDOztvQkFBdENJLEtBQUssWUFBaUM7d0JBQ3hDZCxDQUFBQSxDQUFBQSxHQUFHLElBQUk3QyxTQUFTLENBQUM2QyxHQUFHLENBQUM7Ozs7aURBQ2RjLEtBQUs7O3dCQUVYQSxLQUFLOzs7O29CQUNBRCxRQUFPLEdBQUcsR0FBRSxDQUFvRkMsTUFBSyxDQUF2RjVELGNBQWMsQ0FBQ3VELEdBQUcsQ0FBQyxFQUFDLDhEQUE0RCxDQUFRLE9BQVUsQ0FBaEJLLEtBQUssRUFBQyxZQUFVLENBQUMsQ0FBQztvQkFDeEgsTUFBTSxJQUFJSSxLQUFLLENBQUNMLFFBQU8sQ0FBQyxDQUFDOztvQkFFN0IsSUFBSUUsSUFBcUMsRUFBRTt3QkFDdkMsSUFBSXBFLE1BQU0sQ0FBQ3lFLElBQUksQ0FBQ04sS0FBSyxDQUFDLENBQUNsQixNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUNjLEdBQUcsQ0FBQ0EsR0FBRyxFQUFFOzRCQUM3Q1csT0FBTyxDQUFDQyxJQUFJLENBQUMsRUFBQyxDQUFzQixNQUErSyxDQUFuTXBFLGNBQWMsQ0FBQ3VELEdBQUcsQ0FBQyxFQUFDLCtLQUErSyxDQUFDLENBQUMsQ0FBQzt5QkFDek47cUJBQ0o7aURBQ01LLEtBQUs7Ozs7OztLQUNmLEVBQUMsQ0FBQztJQUNILE9BQU9ILG9CQUFvQixDQUFDL0IsS0FBSyxDQUFDLElBQUksRUFBRUQsU0FBUyxDQUFDLENBQUM7Q0FDdEQ7QUFDRCxJQUFJbkIsUUFBUSxHQUFHLFNBQUMrRCxDQUFDLEVBQUcsRUFBRTtBQUN0QixJQUFJUixJQUFxQyxFQUFFO0lBQ3ZDLElBQU1TLFFBQVEsR0FBRyxJQUFJQyxHQUFHLEVBQUU7SUFDMUI1RSxnQkFBZ0IsR0FBR1csUUFBUSxHQUFHLFNBQUNrRSxHQUFHLEVBQUc7UUFDakMsSUFBSSxDQUFDRixRQUFRLENBQUNHLEdBQUcsQ0FBQ0QsR0FBRyxDQUFDLEVBQUU7WUFDcEJMLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDSSxHQUFHLENBQUMsQ0FBQztTQUNyQjtRQUNERixRQUFRLENBQUNJLEdBQUcsQ0FBQ0YsR0FBRyxDQUFDLENBQUM7S0FDckIsQ0FBQztDQUNMO0FBQ0QsSUFBTW5FLEVBQUUsR0FBRyxPQUFPc0UsV0FBVyxLQUFLLFdBQVc7QUFDN0NoRixVQUFVLEdBQUdVLEVBQUUsQ0FBQztBQUNoQixJQUFNRCxFQUFFLEdBQUdDLEVBQUUsSUFBSTtJQUNiLE1BQU07SUFDTixTQUFTO0lBQ1Qsa0JBQWtCO0NBQ3JCLENBQUN1RSxLQUFLLENBQUMsU0FBQ0MsTUFBTTtXQUFHLE9BQU9GLFdBQVcsQ0FBQ0UsTUFBTSxDQUFDLEtBQUssVUFBVTtDQUFBLENBQUM7QUFDNURsRixVQUFVLEdBQUdTLEVBQUUsQ0FBQztBQUNoQixlQUFpQixpQkFFYjs7O2FBRkUwRSxXQUFXOzs7OztDQUNoQixrQkFEeUJkLEtBQUssRUFDOUI7QUFDRHJFLG1CQUFtQixHQUFHbUYsV0FBVyxDQUFDO0FBQ2xDLGtCQUFvQixpQkFFaEI7OzthQUZFQyxjQUFjOzs7OztDQUNuQixrQkFENEJmLEtBQUssRUFDakM7QUFDRHJFLHNCQUFzQixHQUFHb0YsY0FBYyxDQUFDO0FBQ3hDLHFCQUF1QixpQkFPbkI7OzthQVBFQyxpQkFBaUIsQ0FDUEMsSUFBSTs7O2tDQUNKO1FBQ1IsTUFBS0MsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUNyQixNQUFLdkIsT0FBTyxHQUFHLCtCQUE4QixDQUFPLE9BQUxzQixJQUFJLENBQUUsQ0FBQzs7OztDQUU3RCxrQkFOK0JqQixLQUFLLEVBTXBDO0FBQ0RyRSx5QkFBeUIsR0FBR3FGLGlCQUFpQixDQUFDO0FBQzlDLHFCQUF1QixpQkFNbkI7OzthQU5FRyxpQkFBaUIsQ0FDUEYsSUFBSSxFQUFFdEIsT0FBTzs7O2tDQUNiO1FBQ1IsTUFBS0EsT0FBTyxHQUFHLHVDQUFzQyxDQUFVQSxNQUFPLENBQWZzQixJQUFJLEVBQUMsR0FBQyxDQUFVLFFBQVJ0QixPQUFPLENBQUUsQ0FBQzs7OztDQUVoRixrQkFMK0JLLEtBQUssRUFLcEM7QUFDRHJFLHlCQUF5QixHQUFHd0YsaUJBQWlCLENBQUM7QUFDOUMsMkJBQTZCLGlCQU96Qjs7O2FBUEVDLHVCQUF1Qjs7O2tDQUViO1FBQ1IsTUFBS0YsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUNyQixNQUFLdkIsT0FBTyxHQUFJLG1DQUFpQyxDQUFFOzs7O0NBRTFELGtCQU5xQ0ssS0FBSyxFQU0xQztBQUNEckUsK0JBQStCLEdBQUd5Rix1QkFBdUIsQ0FBQztBQUMxRHpGLGdCQUFnQixHQUFHVyxRQUFRLENBQUMsQ0FFNUIsaUNBQWlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvdXRpbHMuanM/OTJlYyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZXhlY09uY2UgPSBleGVjT25jZTtcbmV4cG9ydHMuZ2V0TG9jYXRpb25PcmlnaW4gPSBnZXRMb2NhdGlvbk9yaWdpbjtcbmV4cG9ydHMuZ2V0VVJMID0gZ2V0VVJMO1xuZXhwb3J0cy5nZXREaXNwbGF5TmFtZSA9IGdldERpc3BsYXlOYW1lO1xuZXhwb3J0cy5pc1Jlc1NlbnQgPSBpc1Jlc1NlbnQ7XG5leHBvcnRzLm5vcm1hbGl6ZVJlcGVhdGVkU2xhc2hlcyA9IG5vcm1hbGl6ZVJlcGVhdGVkU2xhc2hlcztcbmV4cG9ydHMubG9hZEdldEluaXRpYWxQcm9wcyA9IGxvYWRHZXRJbml0aWFsUHJvcHM7XG5leHBvcnRzLlNUID0gZXhwb3J0cy5TUCA9IGV4cG9ydHMud2Fybk9uY2UgPSBleHBvcnRzLmlzQWJzb2x1dGVVcmwgPSB2b2lkIDA7XG5mdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIGtleSwgYXJnKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgdmFyIGluZm8gPSBnZW5ba2V5XShhcmcpO1xuICAgICAgICB2YXIgdmFsdWUgPSBpbmZvLnZhbHVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGluZm8uZG9uZSkge1xuICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oX25leHQsIF90aHJvdyk7XG4gICAgfVxufVxuZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3IoZm4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBzZWxmID0gdGhpcywgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdmFyIGdlbiA9IGZuLmFwcGx5KHNlbGYsIGFyZ3MpO1xuICAgICAgICAgICAgZnVuY3Rpb24gX25leHQodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBfdGhyb3coZXJyKSB7XG4gICAgICAgICAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcInRocm93XCIsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfbmV4dCh1bmRlZmluZWQpO1xuICAgICAgICB9KTtcbiAgICB9O1xufVxuZnVuY3Rpb24gZXhlY09uY2UoZm4pIHtcbiAgICBsZXQgdXNlZCA9IGZhbHNlO1xuICAgIGxldCByZXN1bHQ7XG4gICAgcmV0dXJuICguLi5hcmdzKT0+e1xuICAgICAgICBpZiAoIXVzZWQpIHtcbiAgICAgICAgICAgIHVzZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmVzdWx0ID0gZm4oLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xufVxuLy8gU2NoZW1lOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTMuMVxuLy8gQWJzb2x1dGUgVVJMOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTQuM1xuY29uc3QgQUJTT0xVVEVfVVJMX1JFR0VYID0gL15bYS16QS1aXVthLXpBLVpcXGQrXFwtLl0qPzovO1xuY29uc3QgaXNBYnNvbHV0ZVVybCA9ICh1cmwpPT5BQlNPTFVURV9VUkxfUkVHRVgudGVzdCh1cmwpO1xuZXhwb3J0cy5pc0Fic29sdXRlVXJsID0gaXNBYnNvbHV0ZVVybDtcbmZ1bmN0aW9uIGdldExvY2F0aW9uT3JpZ2luKCkge1xuICAgIGNvbnN0IHsgcHJvdG9jb2wgLCBob3N0bmFtZSAsIHBvcnQgIH0gPSB3aW5kb3cubG9jYXRpb247XG4gICAgcmV0dXJuIGAke3Byb3RvY29sfS8vJHtob3N0bmFtZX0ke3BvcnQgPyAnOicgKyBwb3J0IDogJyd9YDtcbn1cbmZ1bmN0aW9uIGdldFVSTCgpIHtcbiAgICBjb25zdCB7IGhyZWYgIH0gPSB3aW5kb3cubG9jYXRpb247XG4gICAgY29uc3Qgb3JpZ2luID0gZ2V0TG9jYXRpb25PcmlnaW4oKTtcbiAgICByZXR1cm4gaHJlZi5zdWJzdHJpbmcob3JpZ2luLmxlbmd0aCk7XG59XG5mdW5jdGlvbiBnZXREaXNwbGF5TmFtZShDb21wb25lbnQpIHtcbiAgICByZXR1cm4gdHlwZW9mIENvbXBvbmVudCA9PT0gJ3N0cmluZycgPyBDb21wb25lbnQgOiBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ1Vua25vd24nO1xufVxuZnVuY3Rpb24gaXNSZXNTZW50KHJlcykge1xuICAgIHJldHVybiByZXMuZmluaXNoZWQgfHwgcmVzLmhlYWRlcnNTZW50O1xufVxuZnVuY3Rpb24gbm9ybWFsaXplUmVwZWF0ZWRTbGFzaGVzKHVybCkge1xuICAgIGNvbnN0IHVybFBhcnRzID0gdXJsLnNwbGl0KCc/Jyk7XG4gICAgY29uc3QgdXJsTm9RdWVyeSA9IHVybFBhcnRzWzBdO1xuICAgIHJldHVybiB1cmxOb1F1ZXJ5Ly8gZmlyc3Qgd2UgcmVwbGFjZSBhbnkgbm9uLWVuY29kZWQgYmFja3NsYXNoZXMgd2l0aCBmb3J3YXJkXG4gICAgLy8gdGhlbiBub3JtYWxpemUgcmVwZWF0ZWQgZm9yd2FyZCBzbGFzaGVzXG4gICAgLnJlcGxhY2UoL1xcXFwvZywgJy8nKS5yZXBsYWNlKC9cXC9cXC8rL2csICcvJykgKyAodXJsUGFydHNbMV0gPyBgPyR7dXJsUGFydHMuc2xpY2UoMSkuam9pbignPycpfWAgOiAnJyk7XG59XG5mdW5jdGlvbiBsb2FkR2V0SW5pdGlhbFByb3BzKEFwcCwgY3R4KSB7XG4gICAgcmV0dXJuIF9sb2FkR2V0SW5pdGlhbFByb3BzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5mdW5jdGlvbiBfbG9hZEdldEluaXRpYWxQcm9wcygpIHtcbiAgICBfbG9hZEdldEluaXRpYWxQcm9wcyA9IF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKihBcHAsIGN0eCkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgdmFyIHJlZjtcbiAgICAgICAgICAgIGlmICgocmVmID0gQXBwLnByb3RvdHlwZSkgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZi5nZXRJbml0aWFsUHJvcHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYFwiJHtnZXREaXNwbGF5TmFtZShBcHApfS5nZXRJbml0aWFsUHJvcHMoKVwiIGlzIGRlZmluZWQgYXMgYW4gaW5zdGFuY2UgbWV0aG9kIC0gdmlzaXQgaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZ2V0LWluaXRpYWwtcHJvcHMtYXMtYW4taW5zdGFuY2UtbWV0aG9kIGZvciBtb3JlIGluZm9ybWF0aW9uLmA7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIHdoZW4gY2FsbGVkIGZyb20gX2FwcCBgY3R4YCBpcyBuZXN0ZWQgaW4gYGN0eGBcbiAgICAgICAgY29uc3QgcmVzID0gY3R4LnJlcyB8fCBjdHguY3R4ICYmIGN0eC5jdHgucmVzO1xuICAgICAgICBpZiAoIUFwcC5nZXRJbml0aWFsUHJvcHMpIHtcbiAgICAgICAgICAgIGlmIChjdHguY3R4ICYmIGN0eC5Db21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIHBhZ2VQcm9wcyBkZWZhdWx0XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgcGFnZVByb3BzOiB5aWVsZCBsb2FkR2V0SW5pdGlhbFByb3BzKGN0eC5Db21wb25lbnQsIGN0eC5jdHgpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcm9wcyA9IHlpZWxkIEFwcC5nZXRJbml0aWFsUHJvcHMoY3R4KTtcbiAgICAgICAgaWYgKHJlcyAmJiBpc1Jlc1NlbnQocmVzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHByb3BzO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcHJvcHMpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgXCIke2dldERpc3BsYXlOYW1lKEFwcCl9LmdldEluaXRpYWxQcm9wcygpXCIgc2hvdWxkIHJlc29sdmUgdG8gYW4gb2JqZWN0LiBCdXQgZm91bmQgXCIke3Byb3BzfVwiIGluc3RlYWQuYDtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHByb3BzKS5sZW5ndGggPT09IDAgJiYgIWN0eC5jdHgpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYCR7Z2V0RGlzcGxheU5hbWUoQXBwKX0gcmV0dXJuZWQgYW4gZW1wdHkgb2JqZWN0IGZyb20gXFxgZ2V0SW5pdGlhbFByb3BzXFxgLiBUaGlzIGRlLW9wdGltaXplcyBhbmQgcHJldmVudHMgYXV0b21hdGljIHN0YXRpYyBvcHRpbWl6YXRpb24uIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2VtcHR5LW9iamVjdC1nZXRJbml0aWFsUHJvcHNgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvcHM7XG4gICAgfSk7XG4gICAgcmV0dXJuIF9sb2FkR2V0SW5pdGlhbFByb3BzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5sZXQgd2Fybk9uY2UgPSAoXyk9Pnt9O1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBjb25zdCB3YXJuaW5ncyA9IG5ldyBTZXQoKTtcbiAgICBleHBvcnRzLndhcm5PbmNlID0gd2Fybk9uY2UgPSAobXNnKT0+e1xuICAgICAgICBpZiAoIXdhcm5pbmdzLmhhcyhtc2cpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4obXNnKTtcbiAgICAgICAgfVxuICAgICAgICB3YXJuaW5ncy5hZGQobXNnKTtcbiAgICB9O1xufVxuY29uc3QgU1AgPSB0eXBlb2YgcGVyZm9ybWFuY2UgIT09ICd1bmRlZmluZWQnO1xuZXhwb3J0cy5TUCA9IFNQO1xuY29uc3QgU1QgPSBTUCAmJiBbXG4gICAgJ21hcmsnLFxuICAgICdtZWFzdXJlJyxcbiAgICAnZ2V0RW50cmllc0J5TmFtZSdcbl0uZXZlcnkoKG1ldGhvZCk9PnR5cGVvZiBwZXJmb3JtYW5jZVttZXRob2RdID09PSAnZnVuY3Rpb24nKTtcbmV4cG9ydHMuU1QgPSBTVDtcbmNsYXNzIERlY29kZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xufVxuZXhwb3J0cy5EZWNvZGVFcnJvciA9IERlY29kZUVycm9yO1xuY2xhc3MgTm9ybWFsaXplRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG59XG5leHBvcnRzLk5vcm1hbGl6ZUVycm9yID0gTm9ybWFsaXplRXJyb3I7XG5jbGFzcyBQYWdlTm90Rm91bmRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihwYWdlKXtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jb2RlID0gJ0VOT0VOVCc7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IGBDYW5ub3QgZmluZCBtb2R1bGUgZm9yIHBhZ2U6ICR7cGFnZX1gO1xuICAgIH1cbn1cbmV4cG9ydHMuUGFnZU5vdEZvdW5kRXJyb3IgPSBQYWdlTm90Rm91bmRFcnJvcjtcbmNsYXNzIE1pc3NpbmdTdGF0aWNQYWdlIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKHBhZ2UsIG1lc3NhZ2Upe1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBgRmFpbGVkIHRvIGxvYWQgc3RhdGljIGZpbGUgZm9yIHBhZ2U6ICR7cGFnZX0gJHttZXNzYWdlfWA7XG4gICAgfVxufVxuZXhwb3J0cy5NaXNzaW5nU3RhdGljUGFnZSA9IE1pc3NpbmdTdGF0aWNQYWdlO1xuY2xhc3MgTWlkZGxld2FyZU5vdEZvdW5kRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IoKXtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jb2RlID0gJ0VOT0VOVCc7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IGBDYW5ub3QgZmluZCB0aGUgbWlkZGxld2FyZSBtb2R1bGVgO1xuICAgIH1cbn1cbmV4cG9ydHMuTWlkZGxld2FyZU5vdEZvdW5kRXJyb3IgPSBNaWRkbGV3YXJlTm90Rm91bmRFcnJvcjtcbmV4cG9ydHMud2Fybk9uY2UgPSB3YXJuT25jZTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbHMuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZXhlY09uY2UiLCJnZXRMb2NhdGlvbk9yaWdpbiIsImdldFVSTCIsImdldERpc3BsYXlOYW1lIiwiaXNSZXNTZW50Iiwibm9ybWFsaXplUmVwZWF0ZWRTbGFzaGVzIiwibG9hZEdldEluaXRpYWxQcm9wcyIsIlNUIiwiU1AiLCJ3YXJuT25jZSIsImlzQWJzb2x1dGVVcmwiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJyZXNvbHZlIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJhcmciLCJpbmZvIiwiZXJyb3IiLCJkb25lIiwiUHJvbWlzZSIsInRoZW4iLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsInVzZWQiLCJyZXN1bHQiLCJBQlNPTFVURV9VUkxfUkVHRVgiLCJ1cmwiLCJ0ZXN0Iiwid2luZG93IiwibG9jYXRpb24iLCJwcm90b2NvbCIsImhvc3RuYW1lIiwicG9ydCIsImhyZWYiLCJvcmlnaW4iLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJDb21wb25lbnQiLCJkaXNwbGF5TmFtZSIsIm5hbWUiLCJyZXMiLCJmaW5pc2hlZCIsImhlYWRlcnNTZW50IiwidXJsUGFydHMiLCJzcGxpdCIsInVybE5vUXVlcnkiLCJyZXBsYWNlIiwic2xpY2UiLCJqb2luIiwiQXBwIiwiY3R4IiwiX2xvYWRHZXRJbml0aWFsUHJvcHMiLCJyZWYiLCJtZXNzYWdlIiwicHJvcHMiLCJwcm9jZXNzIiwicHJvdG90eXBlIiwiZ2V0SW5pdGlhbFByb3BzIiwiRXJyb3IiLCJwYWdlUHJvcHMiLCJrZXlzIiwiY29uc29sZSIsIndhcm4iLCJfIiwid2FybmluZ3MiLCJTZXQiLCJtc2ciLCJoYXMiLCJhZGQiLCJwZXJmb3JtYW5jZSIsImV2ZXJ5IiwibWV0aG9kIiwiRGVjb2RlRXJyb3IiLCJOb3JtYWxpemVFcnJvciIsIlBhZ2VOb3RGb3VuZEVycm9yIiwicGFnZSIsImNvZGUiLCJNaXNzaW5nU3RhdGljUGFnZSIsIk1pZGRsZXdhcmVOb3RGb3VuZEVycm9yIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../node_modules/next/dist/shared/lib/utils.js\n"));
/***/ }),
diff --git a/renderer/.next/static/chunks/pages/_app.js b/renderer/.next/static/chunks/pages/_app.js
index 88b4cd4..ac959ff 100644
--- a/renderer/.next/static/chunks/pages/_app.js
+++ b/renderer/.next/static/chunks/pages/_app.js
@@ -25,7 +25,7 @@ eval(__webpack_require__.ts("\n (window.__NEXT_P = window.__NEXT_P || []).pus
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar _classCallCheck = (__webpack_require__(/*! @swc/helpers/lib/_class_call_check.js */ \"../node_modules/@swc/helpers/lib/_class_call_check.js\")[\"default\"]);\nvar _createClass = (__webpack_require__(/*! @swc/helpers/lib/_create_class.js */ \"../node_modules/@swc/helpers/lib/_create_class.js\")[\"default\"]);\nvar _inherits = (__webpack_require__(/*! @swc/helpers/lib/_inherits.js */ \"../node_modules/@swc/helpers/lib/_inherits.js\")[\"default\"]);\nvar _interopRequireDefault = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _createSuper = (__webpack_require__(/*! @swc/helpers/lib/_create_super.js */ \"../node_modules/@swc/helpers/lib/_create_super.js\")[\"default\"]);\nvar _runtimeJs = /*#__PURE__*/ _interopRequireDefault(__webpack_require__(/*! ../node_modules/next/dist/compiled/regenerator-runtime/runtime.js */ \"../node_modules/next/dist/compiled/regenerator-runtime/runtime.js\"));\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"AppInitialProps\", ({\n enumerable: true,\n get: function get() {\n return _utils.AppInitialProps;\n }\n}));\nObject.defineProperty(exports, \"NextWebVitalsMetric\", ({\n enumerable: true,\n get: function get() {\n return _utils.NextWebVitalsMetric;\n }\n}));\nexports[\"default\"] = void 0;\nvar _react = _interopRequireDefault1(__webpack_require__(/*! react */ \"../node_modules/react/index.js\"));\nvar _utils = __webpack_require__(/*! ../shared/lib/utils */ \"../node_modules/next/dist/shared/lib/utils.js\");\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _interopRequireDefault1(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction appGetInitialProps(_) {\n return _appGetInitialProps.apply(this, arguments);\n}\nfunction _appGetInitialProps() {\n _appGetInitialProps = /**\n * `App` component is used for initialize of pages. It allows for overwriting and full control of the `page` initialization.\n * This allows for keeping state between navigation, custom error handling, injecting additional data.\n */ _asyncToGenerator(_runtimeJs.default.mark(function _callee(param) {\n var Component, ctx, pageProps;\n return _runtimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n Component = param.Component, ctx = param.ctx;\n _ctx.next = 3;\n return (0, _utils).loadGetInitialProps(Component, ctx);\n case 3:\n pageProps = _ctx.sent;\n return _ctx.abrupt(\"return\", {\n pageProps: pageProps\n });\n case 5:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee);\n }));\n return _appGetInitialProps.apply(this, arguments);\n}\nvar _Component;\nvar App = /*#__PURE__*/ function(_superClass) {\n _inherits(App, _superClass);\n var _super = _createSuper(App);\n function App() {\n _classCallCheck(this, App);\n return _super.apply(this, arguments);\n }\n _createClass(App, [\n {\n key: \"render\",\n value: function render() {\n var _props = this.props, Component = _props.Component, pageProps = _props.pageProps;\n return /*#__PURE__*/ _react.default.createElement(Component, Object.assign({}, pageProps));\n }\n }\n ]);\n return App;\n}(_Component = _react.default.Component);\nApp.origGetInitialProps = appGetInitialProps;\nApp.getInitialProps = appGetInitialProps;\nexports[\"default\"] = App; //# sourceMappingURL=_app.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9wYWdlcy9fYXBwLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhOzs7Ozs7Ozs7O0FBQ2JBLDhDQUE2QztJQUN6Q0csS0FBSyxFQUFFLElBQUk7Q0FDZCxFQUFDLENBQUM7QUFDSEgsbURBQWtEO0lBQzlDSSxVQUFVLEVBQUUsSUFBSTtJQUNoQkMsR0FBRyxFQUFFLFNBQUxBLEdBQUcsR0FBYTtRQUNaLE9BQU9DLE1BQU0sQ0FBQ0MsZUFBZSxDQUFDO0tBQ2pDO0NBQ0osRUFBQyxDQUFDO0FBQ0hQLHVEQUFzRDtJQUNsREksVUFBVSxFQUFFLElBQUk7SUFDaEJDLEdBQUcsRUFBRSxTQUFMQSxHQUFHLEdBQWE7UUFDWixPQUFPQyxNQUFNLENBQUNFLG1CQUFtQixDQUFDO0tBQ3JDO0NBQ0osRUFBQyxDQUFDO0FBQ0hOLGtCQUFlLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDekIsSUFBSVEsTUFBTSxHQUFHQyx1QkFBc0IsQ0FBQ0MsbUJBQU8sQ0FBQyw2Q0FBTyxDQUFDLENBQUM7QUFDckQsSUFBSU4sTUFBTSxHQUFHTSxtQkFBTyxDQUFDLDBFQUFxQixDQUFDO0FBQzNDLFNBQVNDLGtCQUFrQixDQUFDQyxHQUFHLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRUMsR0FBRyxFQUFFQyxHQUFHLEVBQUU7SUFDdkUsSUFBSTtRQUNBLElBQUlDLElBQUksR0FBR1AsR0FBRyxDQUFDSyxHQUFHLENBQUMsQ0FBQ0MsR0FBRyxDQUFDO1FBQ3hCLElBQUlqQixLQUFLLEdBQUdrQixJQUFJLENBQUNsQixLQUFLO0tBQ3pCLENBQUMsT0FBT21CLEtBQUssRUFBRTtRQUNaTixNQUFNLENBQUNNLEtBQUssQ0FBQyxDQUFDO1FBQ2QsT0FBTztLQUNWO0lBQ0QsSUFBSUQsSUFBSSxDQUFDRSxJQUFJLEVBQUU7UUFDWFIsT0FBTyxDQUFDWixLQUFLLENBQUMsQ0FBQztLQUNsQixNQUFNO1FBQ0hxQixPQUFPLENBQUNULE9BQU8sQ0FBQ1osS0FBSyxDQUFDLENBQUNzQixJQUFJLENBQUNSLEtBQUssRUFBRUMsTUFBTSxDQUFDLENBQUM7S0FDOUM7Q0FDSjtBQUNELFNBQVNRLGlCQUFpQixDQUFDQyxFQUFFLEVBQUU7SUFDM0IsT0FBTyxXQUFXO1FBQ2QsSUFBSUMsSUFBSSxHQUFHLElBQUksRUFBRUMsSUFBSSxHQUFHQyxTQUFTO1FBQ2pDLE9BQU8sSUFBSU4sT0FBTyxDQUFDLFNBQVNULE9BQU8sRUFBRUMsTUFBTSxFQUFFO1lBQ3pDLElBQUlGLEdBQUcsR0FBR2EsRUFBRSxDQUFDSSxLQUFLLENBQUNILElBQUksRUFBRUMsSUFBSSxDQUFDO1lBQzlCLFNBQVNaLEtBQUssQ0FBQ2QsS0FBSyxFQUFFO2dCQUNsQlUsa0JBQWtCLENBQUNDLEdBQUcsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLEtBQUssRUFBRUMsTUFBTSxFQUFFLE1BQU0sRUFBRWYsS0FBSyxDQUFDLENBQUM7YUFDMUU7WUFDRCxTQUFTZSxNQUFNLENBQUNjLEdBQUcsRUFBRTtnQkFDakJuQixrQkFBa0IsQ0FBQ0MsR0FBRyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsS0FBSyxFQUFFQyxNQUFNLEVBQUUsT0FBTyxFQUFFYyxHQUFHLENBQUMsQ0FBQzthQUN6RTtZQUNEZixLQUFLLENBQUNnQixTQUFTLENBQUMsQ0FBQztTQUNwQixDQUFDLENBQUM7S0FDTixDQUFDO0NBQ0w7QUFDRCxTQUFTdEIsdUJBQXNCLENBQUN1QixHQUFHLEVBQUU7SUFDakMsT0FBT0EsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVUsR0FBR0QsR0FBRyxHQUFHO1FBQ2pDekIsT0FBTyxFQUFFeUIsR0FBRztLQUNmLENBQUM7Q0FDTDtBQUNELFNBQVNFLGtCQUFrQixDQUFDQyxDQUFDLEVBQUU7SUFDM0IsT0FBT0MsbUJBQW1CLENBQUNQLEtBQUssQ0FBQyxJQUFJLEVBQUVELFNBQVMsQ0FBQyxDQUFDO0NBQ3JEO0FBQ0QsU0FBU1EsbUJBQW1CLEdBQUc7SUFDM0JBLG1CQUFtQixHQUFHOzs7R0FHdkIsQ0FBQ1osaUJBQWlCLHlCQUFDLGlCQUFVLEtBQW9CLEVBQUU7WUFBcEJhLFNBQVMsRUFBR0MsR0FBRyxFQUNuQ0MsU0FBUzs7OztvQkFEV0YsU0FBUyxHQUFYLEtBQW9CLENBQWxCQSxTQUFTLEVBQUdDLEdBQUcsR0FBakIsS0FBb0IsQ0FBTkEsR0FBRzs7MkJBQ2pCLENBQUMsQ0FBQyxFQUFFbEMsTUFBTSxDQUFDLENBQUNvQyxtQkFBbUIsQ0FBQ0gsU0FBUyxFQUFFQyxHQUFHLENBQUM7O29CQUFqRUMsU0FBUyxZQUF3RDtpREFDaEU7d0JBQ0hBLFNBQVMsRUFBVEEsU0FBUztxQkFDWjs7Ozs7O0tBQ0osRUFBQyxDQUFDO0lBQ0gsT0FBT0gsbUJBQW1CLENBQUNQLEtBQUssQ0FBQyxJQUFJLEVBQUVELFNBQVMsQ0FBQyxDQUFDO0NBQ3JEO0FBQ0QsSUFBSWEsVUFBVTtBQUNkLE9BQVMsaUJBTUxFOzs7YUFORUQsR0FBRzs7Ozs7O1lBQ0xFLEdBQU0sRUFBTkEsUUFBTTttQkFBTkEsU0FBQUEsTUFBTSxHQUFHO2dCQUNMLElBQW1DLE1BQVUsR0FBVixJQUFJLENBQUNDLEtBQUssRUFBckNSLFNBQVMsR0FBa0IsTUFBVSxDQUFyQ0EsU0FBUyxFQUFHRSxTQUFTLEdBQU0sTUFBVSxDQUF6QkEsU0FBUztnQkFDN0IsT0FBTyxhQUFhLENBQUMvQixNQUFNLENBQUNELE9BQU8sQ0FBQ3VDLGFBQWEsQ0FBQ1QsU0FBUyxFQUFFdkMsTUFBTSxDQUFDaUQsTUFBTSxDQUFDLEVBQUUsRUFBRVIsU0FBUyxDQUFDLENBQUMsQ0FBQzthQUM5Rjs7OztDQUNKLENBTGtCRSxVQUFVLEdBQUdqQyxNQUFNLENBQUNELE9BQU8sQ0FBQzhCLFNBQVMsQ0FLdkQ7QUFDREssR0FBRyxDQUFDQyxtQkFBbUIsR0FBR1Qsa0JBQWtCLENBQUM7QUFDN0NRLEdBQUcsQ0FBQ00sZUFBZSxHQUFHZCxrQkFBa0IsQ0FBQztBQUN6Q2xDLGtCQUFlLEdBQUcwQyxHQUFHLENBQUMsQ0FFdEIsZ0NBQWdDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3BhZ2VzL19hcHAuanM/MWVmOSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkFwcEluaXRpYWxQcm9wc1wiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3V0aWxzLkFwcEluaXRpYWxQcm9wcztcbiAgICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIk5leHRXZWJWaXRhbHNNZXRyaWNcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF91dGlscy5OZXh0V2ViVml0YWxzTWV0cmljO1xuICAgIH1cbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xudmFyIF9yZWFjdCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJlYWN0XCIpKTtcbnZhciBfdXRpbHMgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi91dGlsc1wiKTtcbmZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywga2V5LCBhcmcpIHtcbiAgICB0cnkge1xuICAgICAgICB2YXIgaW5mbyA9IGdlbltrZXldKGFyZyk7XG4gICAgICAgIHZhciB2YWx1ZSA9IGluZm8udmFsdWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaW5mby5kb25lKSB7XG4gICAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihfbmV4dCwgX3Rocm93KTtcbiAgICB9XG59XG5mdW5jdGlvbiBfYXN5bmNUb0dlbmVyYXRvcihmbikge1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzLCBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB2YXIgZ2VuID0gZm4uYXBwbHkoc2VsZiwgYXJncyk7XG4gICAgICAgICAgICBmdW5jdGlvbiBfbmV4dCh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJuZXh0XCIsIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIF90aHJvdyhlcnIpIHtcbiAgICAgICAgICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF9uZXh0KHVuZGVmaW5lZCk7XG4gICAgICAgIH0pO1xuICAgIH07XG59XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikge1xuICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgICAgIGRlZmF1bHQ6IG9ialxuICAgIH07XG59XG5mdW5jdGlvbiBhcHBHZXRJbml0aWFsUHJvcHMoXykge1xuICAgIHJldHVybiBfYXBwR2V0SW5pdGlhbFByb3BzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5mdW5jdGlvbiBfYXBwR2V0SW5pdGlhbFByb3BzKCkge1xuICAgIF9hcHBHZXRJbml0aWFsUHJvcHMgPSAvKipcbiAqIGBBcHBgIGNvbXBvbmVudCBpcyB1c2VkIGZvciBpbml0aWFsaXplIG9mIHBhZ2VzLiBJdCBhbGxvd3MgZm9yIG92ZXJ3cml0aW5nIGFuZCBmdWxsIGNvbnRyb2wgb2YgdGhlIGBwYWdlYCBpbml0aWFsaXphdGlvbi5cbiAqIFRoaXMgYWxsb3dzIGZvciBrZWVwaW5nIHN0YXRlIGJldHdlZW4gbmF2aWdhdGlvbiwgY3VzdG9tIGVycm9yIGhhbmRsaW5nLCBpbmplY3RpbmcgYWRkaXRpb25hbCBkYXRhLlxuICovIF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKih7IENvbXBvbmVudCAsIGN0eCAgfSkge1xuICAgICAgICBjb25zdCBwYWdlUHJvcHMgPSB5aWVsZCAoMCwgX3V0aWxzKS5sb2FkR2V0SW5pdGlhbFByb3BzKENvbXBvbmVudCwgY3R4KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBhZ2VQcm9wc1xuICAgICAgICB9O1xuICAgIH0pO1xuICAgIHJldHVybiBfYXBwR2V0SW5pdGlhbFByb3BzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG52YXIgX0NvbXBvbmVudDtcbmNsYXNzIEFwcCBleHRlbmRzIChfQ29tcG9uZW50ID0gX3JlYWN0LmRlZmF1bHQuQ29tcG9uZW50KSB7XG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7IENvbXBvbmVudCAsIHBhZ2VQcm9wcyAgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoQ29tcG9uZW50LCBPYmplY3QuYXNzaWduKHt9LCBwYWdlUHJvcHMpKTtcbiAgICB9XG59XG5BcHAub3JpZ0dldEluaXRpYWxQcm9wcyA9IGFwcEdldEluaXRpYWxQcm9wcztcbkFwcC5nZXRJbml0aWFsUHJvcHMgPSBhcHBHZXRJbml0aWFsUHJvcHM7XG5leHBvcnRzLmRlZmF1bHQgPSBBcHA7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPV9hcHAuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsIl91dGlscyIsIkFwcEluaXRpYWxQcm9wcyIsIk5leHRXZWJWaXRhbHNNZXRyaWMiLCJkZWZhdWx0IiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJyZXNvbHZlIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJhcmciLCJpbmZvIiwiZXJyb3IiLCJkb25lIiwiUHJvbWlzZSIsInRoZW4iLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJhcHBHZXRJbml0aWFsUHJvcHMiLCJfIiwiX2FwcEdldEluaXRpYWxQcm9wcyIsIkNvbXBvbmVudCIsImN0eCIsInBhZ2VQcm9wcyIsImxvYWRHZXRJbml0aWFsUHJvcHMiLCJfQ29tcG9uZW50IiwiQXBwIiwib3JpZ0dldEluaXRpYWxQcm9wcyIsInJlbmRlciIsInByb3BzIiwiY3JlYXRlRWxlbWVudCIsImFzc2lnbiIsImdldEluaXRpYWxQcm9wcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../node_modules/next/dist/pages/_app.js\n"));
+eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar _classCallCheck = (__webpack_require__(/*! @swc/helpers/lib/_class_call_check.js */ \"../node_modules/@swc/helpers/lib/_class_call_check.js\")[\"default\"]);\nvar _createClass = (__webpack_require__(/*! @swc/helpers/lib/_create_class.js */ \"../node_modules/@swc/helpers/lib/_create_class.js\")[\"default\"]);\nvar _inherits = (__webpack_require__(/*! @swc/helpers/lib/_inherits.js */ \"../node_modules/@swc/helpers/lib/_inherits.js\")[\"default\"]);\nvar _interopRequireDefault = (__webpack_require__(/*! @swc/helpers/lib/_interop_require_default.js */ \"../node_modules/@swc/helpers/lib/_interop_require_default.js\")[\"default\"]);\nvar _createSuper = (__webpack_require__(/*! @swc/helpers/lib/_create_super.js */ \"../node_modules/@swc/helpers/lib/_create_super.js\")[\"default\"]);\nvar _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs = /*#__PURE__*/ _interopRequireDefault(__webpack_require__(/*! ../node_modules/next/dist/compiled/regenerator-runtime/runtime.js */ \"../node_modules/next/dist/compiled/regenerator-runtime/runtime.js\"));\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"AppInitialProps\", ({\n enumerable: true,\n get: function get() {\n return _utils.AppInitialProps;\n }\n}));\nObject.defineProperty(exports, \"NextWebVitalsMetric\", ({\n enumerable: true,\n get: function get() {\n return _utils.NextWebVitalsMetric;\n }\n}));\nexports[\"default\"] = void 0;\nvar _react = _interopRequireDefault1(__webpack_require__(/*! react */ \"../node_modules/react/index.js\"));\nvar _utils = __webpack_require__(/*! ../shared/lib/utils */ \"../node_modules/next/dist/shared/lib/utils.js\");\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _interopRequireDefault1(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction appGetInitialProps(_) {\n return _appGetInitialProps.apply(this, arguments);\n}\nfunction _appGetInitialProps() {\n _appGetInitialProps = /**\n * `App` component is used for initialize of pages. It allows for overwriting and full control of the `page` initialization.\n * This allows for keeping state between navigation, custom error handling, injecting additional data.\n */ _asyncToGenerator(_cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.mark(function _callee(param) {\n var Component, ctx, pageProps;\n return _cUsersGhoshOneDriveDocumentsProgamsUpscaylNodeModulesNextDistCompiledRegeneratorRuntimeRuntimeJs.default.wrap(function _callee$(_ctx) {\n while(1)switch(_ctx.prev = _ctx.next){\n case 0:\n Component = param.Component, ctx = param.ctx;\n _ctx.next = 3;\n return (0, _utils).loadGetInitialProps(Component, ctx);\n case 3:\n pageProps = _ctx.sent;\n return _ctx.abrupt(\"return\", {\n pageProps: pageProps\n });\n case 5:\n case \"end\":\n return _ctx.stop();\n }\n }, _callee);\n }));\n return _appGetInitialProps.apply(this, arguments);\n}\nvar _Component;\nvar App = /*#__PURE__*/ function(_superClass) {\n _inherits(App, _superClass);\n var _super = _createSuper(App);\n function App() {\n _classCallCheck(this, App);\n return _super.apply(this, arguments);\n }\n _createClass(App, [\n {\n key: \"render\",\n value: function render() {\n var _props = this.props, Component = _props.Component, pageProps = _props.pageProps;\n return /*#__PURE__*/ _react.default.createElement(Component, Object.assign({}, pageProps));\n }\n }\n ]);\n return App;\n}(_Component = _react.default.Component);\nApp.origGetInitialProps = appGetInitialProps;\nApp.getInitialProps = appGetInitialProps;\nexports[\"default\"] = App; //# sourceMappingURL=_app.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9wYWdlcy9fYXBwLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhOzs7Ozs7Ozs7O0FBQ2JBLDhDQUE2QztJQUN6Q0csS0FBSyxFQUFFLElBQUk7Q0FDZCxFQUFDLENBQUM7QUFDSEgsbURBQWtEO0lBQzlDSSxVQUFVLEVBQUUsSUFBSTtJQUNoQkMsR0FBRyxFQUFFLFNBQUxBLEdBQUcsR0FBYTtRQUNaLE9BQU9DLE1BQU0sQ0FBQ0MsZUFBZSxDQUFDO0tBQ2pDO0NBQ0osRUFBQyxDQUFDO0FBQ0hQLHVEQUFzRDtJQUNsREksVUFBVSxFQUFFLElBQUk7SUFDaEJDLEdBQUcsRUFBRSxTQUFMQSxHQUFHLEdBQWE7UUFDWixPQUFPQyxNQUFNLENBQUNFLG1CQUFtQixDQUFDO0tBQ3JDO0NBQ0osRUFBQyxDQUFDO0FBQ0hOLGtCQUFlLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDekIsSUFBSVEsTUFBTSxHQUFHQyx1QkFBc0IsQ0FBQ0MsbUJBQU8sQ0FBQyw2Q0FBTyxDQUFDLENBQUM7QUFDckQsSUFBSU4sTUFBTSxHQUFHTSxtQkFBTyxDQUFDLDBFQUFxQixDQUFDO0FBQzNDLFNBQVNDLGtCQUFrQixDQUFDQyxHQUFHLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRUMsR0FBRyxFQUFFQyxHQUFHLEVBQUU7SUFDdkUsSUFBSTtRQUNBLElBQUlDLElBQUksR0FBR1AsR0FBRyxDQUFDSyxHQUFHLENBQUMsQ0FBQ0MsR0FBRyxDQUFDO1FBQ3hCLElBQUlqQixLQUFLLEdBQUdrQixJQUFJLENBQUNsQixLQUFLO0tBQ3pCLENBQUMsT0FBT21CLEtBQUssRUFBRTtRQUNaTixNQUFNLENBQUNNLEtBQUssQ0FBQyxDQUFDO1FBQ2QsT0FBTztLQUNWO0lBQ0QsSUFBSUQsSUFBSSxDQUFDRSxJQUFJLEVBQUU7UUFDWFIsT0FBTyxDQUFDWixLQUFLLENBQUMsQ0FBQztLQUNsQixNQUFNO1FBQ0hxQixPQUFP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Z0NBQWdDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3BhZ2VzL19hcHAuanM/MWVmOSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkFwcEluaXRpYWxQcm9wc1wiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3V0aWxzLkFwcEluaXRpYWxQcm9wcztcbiAgICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIk5leHRXZWJWaXRhbHNNZXRyaWNcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF91dGlscy5OZXh0V2ViVml0YWxzTWV0cmljO1xuICAgIH1cbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xudmFyIF9yZWFjdCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJlYWN0XCIpKTtcbnZhciBfdXRpbHMgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi91dGlsc1wiKTtcbmZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywga2V5LCBhcmcpIHtcbiAgICB0cnkge1xuICAgICAgICB2YXIgaW5mbyA9IGdlbltrZXldKGFyZyk7XG4gICAgICAgIHZhciB2YWx1ZSA9IGluZm8udmFsdWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaW5mby5kb25lKSB7XG4gICAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihfbmV4dCwgX3Rocm93KTtcbiAgICB9XG59XG5mdW5jdGlvbiBfYXN5bmNUb0dlbmVyYXRvcihmbikge1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzLCBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB2YXIgZ2VuID0gZm4uYXBwbHkoc2VsZiwgYXJncyk7XG4gICAgICAgICAgICBmdW5jdGlvbiBfbmV4dCh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJuZXh0XCIsIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIF90aHJvdyhlcnIpIHtcbiAgICAgICAgICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF9uZXh0KHVuZGVmaW5lZCk7XG4gICAgICAgIH0pO1xuICAgIH07XG59XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikge1xuICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgICAgIGRlZmF1bHQ6IG9ialxuICAgIH07XG59XG5mdW5jdGlvbiBhcHBHZXRJbml0aWFsUHJvcHMoXykge1xuICAgIHJldHVybiBfYXBwR2V0SW5pdGlhbFByb3BzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5mdW5jdGlvbiBfYXBwR2V0SW5pdGlhbFByb3BzKCkge1xuICAgIF9hcHBHZXRJbml0aWFsUHJvcHMgPSAvKipcbiAqIGBBcHBgIGNvbXBvbmVudCBpcyB1c2VkIGZvciBpbml0aWFsaXplIG9mIHBhZ2VzLiBJdCBhbGxvd3MgZm9yIG92ZXJ3cml0aW5nIGFuZCBmdWxsIGNvbnRyb2wgb2YgdGhlIGBwYWdlYCBpbml0aWFsaXphdGlvbi5cbiAqIFRoaXMgYWxsb3dzIGZvciBrZWVwaW5nIHN0YXRlIGJldHdlZW4gbmF2aWdhdGlvbiwgY3VzdG9tIGVycm9yIGhhbmRsaW5nLCBpbmplY3RpbmcgYWRkaXRpb25hbCBkYXRhLlxuICovIF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKih7IENvbXBvbmVudCAsIGN0eCAgfSkge1xuICAgICAgICBjb25zdCBwYWdlUHJvcHMgPSB5aWVsZCAoMCwgX3V0aWxzKS5sb2FkR2V0SW5pdGlhbFByb3BzKENvbXBvbmVudCwgY3R4KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBhZ2VQcm9wc1xuICAgICAgICB9O1xuICAgIH0pO1xuICAgIHJldHVybiBfYXBwR2V0SW5pdGlhbFByb3BzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG52YXIgX0NvbXBvbmVudDtcbmNsYXNzIEFwcCBleHRlbmRzIChfQ29tcG9uZW50ID0gX3JlYWN0LmRlZmF1bHQuQ29tcG9uZW50KSB7XG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7IENvbXBvbmVudCAsIHBhZ2VQcm9wcyAgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoQ29tcG9uZW50LCBPYmplY3QuYXNzaWduKHt9LCBwYWdlUHJvcHMpKTtcbiAgICB9XG59XG5BcHAub3JpZ0dldEluaXRpYWxQcm9wcyA9IGFwcEdldEluaXRpYWxQcm9wcztcbkFwcC5nZXRJbml0aWFsUHJvcHMgPSBhcHBHZXRJbml0aWFsUHJvcHM7XG5leHBvcnRzLmRlZmF1bHQgPSBBcHA7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPV9hcHAuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsIl91dGlscyIsIkFwcEluaXRpYWxQcm9wcyIsIk5leHRXZWJWaXRhbHNNZXRyaWMiLCJkZWZhdWx0IiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJyZXNvbHZlIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJhcmciLCJpbmZvIiwiZXJyb3IiLCJkb25lIiwiUHJvbWlzZSIsInRoZW4iLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJhcHBHZXRJbml0aWFsUHJvcHMiLCJfIiwiX2FwcEdldEluaXRpYWxQcm9wcyIsIkNvbXBvbmVudCIsImN0eCIsInBhZ2VQcm9wcyIsImxvYWRHZXRJbml0aWFsUHJvcHMiLCJfQ29tcG9uZW50IiwiQXBwIiwib3JpZ0dldEluaXRpYWxQcm9wcyIsInJlbmRlciIsInByb3BzIiwiY3JlYXRlRWxlbWVudCIsImFzc2lnbiIsImdldEluaXRpYWxQcm9wcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../node_modules/next/dist/pages/_app.js\n"));
/***/ })
diff --git a/renderer/.next/static/chunks/pages/index.js b/renderer/.next/static/chunks/pages/index.js
index 21bac30..f37541f 100644
--- a/renderer/.next/static/chunks/pages/index.js
+++ b/renderer/.next/static/chunks/pages/index.js
@@ -8,13 +8,13 @@
*/
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([["pages/index"],{
-/***/ "../node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2Fhome%2Fzeffo%2FPublic%2Fupscayl%2Frenderer%2Fpages%2Findex.tsx&page=%2F!":
-/*!********************************************************************************************************************************************************************************!*\
- !*** ../node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2Fhome%2Fzeffo%2FPublic%2Fupscayl%2Frenderer%2Fpages%2Findex.tsx&page=%2F! ***!
- \********************************************************************************************************************************************************************************/
+/***/ "../node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=C%3A%5CUsers%5Cghosh%5COneDrive%5CDocuments%5Cprogams%5Cupscayl%5Crenderer%5Cpages%5Cindex.tsx&page=%2F!":
+/*!*************************************************************************************************************************************************************************************************************!*\
+ !*** ../node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=C%3A%5CUsers%5Cghosh%5COneDrive%5CDocuments%5Cprogams%5Cupscayl%5Crenderer%5Cpages%5Cindex.tsx&page=%2F! ***!
+ \*************************************************************************************************************************************************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
-eval(__webpack_require__.ts("\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/\",\n function () {\n return __webpack_require__(/*! ./pages/index.tsx */ \"./pages/index.tsx\");\n }\n ]);\n if(true) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/\"])\n });\n }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvbmV4dC1jbGllbnQtcGFnZXMtbG9hZGVyLmpzP2Fic29sdXRlUGFnZVBhdGg9JTJGaG9tZSUyRnplZmZvJTJGUHVibGljJTJGdXBzY2F5bCUyRnJlbmRlcmVyJTJGcGFnZXMlMkZpbmRleC50c3gmcGFnZT0lMkYhLmpzIiwibWFwcGluZ3MiOiI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG1CQUFPLENBQUMsNENBQW1CO0FBQzFDO0FBQ0E7QUFDQSxPQUFPLElBQVU7QUFDakIsTUFBTSxVQUFVO0FBQ2hCO0FBQ0EsT0FBTztBQUNQO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLz81Y2UzIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICh3aW5kb3cuX19ORVhUX1AgPSB3aW5kb3cuX19ORVhUX1AgfHwgW10pLnB1c2goW1xuICAgICAgXCIvXCIsXG4gICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiByZXF1aXJlKFwiLi9wYWdlcy9pbmRleC50c3hcIik7XG4gICAgICB9XG4gICAgXSk7XG4gICAgaWYobW9kdWxlLmhvdCkge1xuICAgICAgbW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgd2luZG93Ll9fTkVYVF9QLnB1c2goW1wiL1wiXSlcbiAgICAgIH0pO1xuICAgIH1cbiAgIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2Fhome%2Fzeffo%2FPublic%2Fupscayl%2Frenderer%2Fpages%2Findex.tsx&page=%2F!\n"));
+eval(__webpack_require__.ts("\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/\",\n function () {\n return __webpack_require__(/*! ./pages/index.tsx */ \"./pages/index.tsx\");\n }\n ]);\n if(true) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/\"])\n });\n }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvbmV4dC1jbGllbnQtcGFnZXMtbG9hZGVyLmpzP2Fic29sdXRlUGFnZVBhdGg9QyUzQSU1Q1VzZXJzJTVDZ2hvc2glNUNPbmVEcml2ZSU1Q0RvY3VtZW50cyU1Q3Byb2dhbXMlNUN1cHNjYXlsJTVDcmVuZGVyZXIlNUNwYWdlcyU1Q2luZGV4LnRzeCZwYWdlPSUyRiEuanMiLCJtYXBwaW5ncyI6IjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsbUJBQU8sQ0FBQyw0Q0FBbUI7QUFDMUM7QUFDQTtBQUNBLE9BQU8sSUFBVTtBQUNqQixNQUFNLFVBQVU7QUFDaEI7QUFDQSxPQUFPO0FBQ1A7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvPzlhMjUiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgKHdpbmRvdy5fX05FWFRfUCA9IHdpbmRvdy5fX05FWFRfUCB8fCBbXSkucHVzaChbXG4gICAgICBcIi9cIixcbiAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHJlcXVpcmUoXCIuL3BhZ2VzL2luZGV4LnRzeFwiKTtcbiAgICAgIH1cbiAgICBdKTtcbiAgICBpZihtb2R1bGUuaG90KSB7XG4gICAgICBtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24gKCkge1xuICAgICAgICB3aW5kb3cuX19ORVhUX1AucHVzaChbXCIvXCJdKVxuICAgICAgfSk7XG4gICAgfVxuICAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=C%3A%5CUsers%5Cghosh%5COneDrive%5CDocuments%5Cprogams%5Cupscayl%5Crenderer%5Cpages%5Cindex.tsx&page=%2F!\n"));
/***/ }),
@@ -69,7 +69,7 @@ eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"../node_modules/react/jsx-dev-runtime.js\");\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 */ \"../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"../node_modules/next/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/head */ \"../node_modules/next/head.js\");\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_head__WEBPACK_IMPORTED_MODULE_3__);\nvar _this = undefined;\n\n\n\n\nvar Layout = function(param) {\n var children = param.children, _title = param.title, title = _title === void 0 ? \"This is the default title\" : _title;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_head__WEBPACK_IMPORTED_MODULE_3___default()), {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"title\", {\n children: title\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 13,\n columnNumber: 7\n }, _this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n charSet: \"utf-8\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 14,\n columnNumber: 7\n }, _this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n name: \"viewport\",\n content: \"initial-scale=1.0, width=device-width\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 15,\n columnNumber: 7\n }, _this)\n ]\n }, void 0, true, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 12,\n columnNumber: 5\n }, _this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: \"Home\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 20,\n columnNumber: 11\n }, _this)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 19,\n columnNumber: 9\n }, _this),\n \" \",\n \"|\",\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/about\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: \"About\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 24,\n columnNumber: 11\n }, _this)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 23,\n columnNumber: 9\n }, _this),\n \" \",\n \"|\",\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/initial-props\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: \"With Initial Props\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 28,\n columnNumber: 11\n }, _this)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 27,\n columnNumber: 9\n }, _this)\n ]\n }, void 0, true, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 18,\n columnNumber: 7\n }, _this)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 17,\n columnNumber: 5\n }, _this),\n children,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"footer\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"hr\", {}, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 34,\n columnNumber: 7\n }, _this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"I'm here to stay (Footer)\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 35,\n columnNumber: 7\n }, _this)\n ]\n }, void 0, true, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 33,\n columnNumber: 5\n }, _this)\n ]\n }, void 0, true, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 11,\n columnNumber: 3\n }, _this);\n};\n_c = Layout;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Layout);\nvar _c;\n$RefreshReg$(_c, \"Layout\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0xheW91dC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQXdDO0FBQ1o7QUFDQTtBQU81QixJQUFNRyxNQUFNLEdBQUc7UUFBR0MsUUFBUSxTQUFSQSxRQUFRLGlCQUFFQyxLQUFLLEVBQUxBLEtBQUssdUJBQUcsMkJBQTJCO3lCQUM3RCw4REFBQ0MsS0FBRzs7MEJBQ0YsOERBQUNKLGtEQUFJOztrQ0FDSCw4REFBQ0csT0FBSztrQ0FBRUEsS0FBSzs7Ozs7NkJBQVM7a0NBQ3RCLDhEQUFDRSxNQUFJO3dCQUFDQyxPQUFPLEVBQUMsT0FBTzs7Ozs7NkJBQUc7a0NBQ3hCLDhEQUFDRCxNQUFJO3dCQUFDRSxJQUFJLEVBQUMsVUFBVTt3QkFBQ0MsT0FBTyxFQUFDLHVDQUF1Qzs7Ozs7NkJBQUc7Ozs7OztxQkFDbkU7MEJBQ1AsOERBQUNDLFFBQU07MEJBQ0wsNEVBQUNDLEtBQUc7O3NDQUNGLDhEQUFDWCxrREFBSTs0QkFBQ1ksSUFBSSxFQUFDLEdBQUc7c0NBQ1osNEVBQUNDLEdBQUM7MENBQUMsTUFBSTs7Ozs7cUNBQUk7Ozs7O2lDQUNOO3dCQUFDLEdBQUc7d0JBQUMsR0FDWDt3QkFBQyxHQUFHO3NDQUNMLDhEQUFDYixrREFBSTs0QkFBQ1ksSUFBSSxFQUFDLFFBQVE7c0NBQ2pCLDRFQUFDQyxHQUFDOzBDQUFDLE9BQUs7Ozs7O3FDQUFJOzs7OztpQ0FDUDt3QkFBQyxHQUFHO3dCQUFDLEdBQ1g7d0JBQUMsR0FBRztzQ0FDTCw4REFBQ2Isa0RBQUk7NEJBQUNZLElBQUksRUFBQyxnQkFBZ0I7c0NBQ3pCLDRFQUFDQyxHQUFDOzBDQUFDLG9CQUFrQjs7Ozs7cUNBQUk7Ozs7O2lDQUNwQjs7Ozs7O3lCQUNIOzs7OztxQkFDQztZQUNSVixRQUFROzBCQUNULDhEQUFDVyxRQUFNOztrQ0FDTCw4REFBQ0MsSUFBRTs7Ozs2QkFBRztrQ0FDTiw4REFBQ0MsTUFBSTtrQ0FBQywyQkFBeUI7Ozs7OzZCQUFPOzs7Ozs7cUJBQy9COzs7Ozs7YUFDTDtDQUNQO0FBNUJLZCxLQUFBQSxNQUFNO0FBOEJaLCtEQUFlQSxNQUFNIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL2NvbXBvbmVudHMvTGF5b3V0LnRzeD8zYzhmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBMaW5rIGZyb20gJ25leHQvbGluaydcbmltcG9ydCBIZWFkIGZyb20gJ25leHQvaGVhZCdcblxudHlwZSBQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZVxuICB0aXRsZT86IHN0cmluZ1xufVxuXG5jb25zdCBMYXlvdXQgPSAoeyBjaGlsZHJlbiwgdGl0bGUgPSAnVGhpcyBpcyB0aGUgZGVmYXVsdCB0aXRsZScgfTogUHJvcHMpID0+IChcbiAgPGRpdj5cbiAgICA8SGVhZD5cbiAgICAgIDx0aXRsZT57dGl0bGV9PC90aXRsZT5cbiAgICAgIDxtZXRhIGNoYXJTZXQ9XCJ1dGYtOFwiIC8+XG4gICAgICA8bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwiaW5pdGlhbC1zY2FsZT0xLjAsIHdpZHRoPWRldmljZS13aWR0aFwiIC8+XG4gICAgPC9IZWFkPlxuICAgIDxoZWFkZXI+XG4gICAgICA8bmF2PlxuICAgICAgICA8TGluayBocmVmPVwiL1wiPlxuICAgICAgICAgIDxhPkhvbWU8L2E+XG4gICAgICAgIDwvTGluaz57JyAnfVxuICAgICAgICB8eycgJ31cbiAgICAgICAgPExpbmsgaHJlZj1cIi9hYm91dFwiPlxuICAgICAgICAgIDxhPkFib3V0PC9hPlxuICAgICAgICA8L0xpbms+eycgJ31cbiAgICAgICAgfHsnICd9XG4gICAgICAgIDxMaW5rIGhyZWY9XCIvaW5pdGlhbC1wcm9wc1wiPlxuICAgICAgICAgIDxhPldpdGggSW5pdGlhbCBQcm9wczwvYT5cbiAgICAgICAgPC9MaW5rPlxuICAgICAgPC9uYXY+XG4gICAgPC9oZWFkZXI+XG4gICAge2NoaWxkcmVufVxuICAgIDxmb290ZXI+XG4gICAgICA8aHIgLz5cbiAgICAgIDxzcGFuPkknbSBoZXJlIHRvIHN0YXkgKEZvb3Rlcik8L3NwYW4+XG4gICAgPC9mb290ZXI+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgZGVmYXVsdCBMYXlvdXRcbiJdLCJuYW1lcyI6WyJSZWFjdCIsIkxpbmsiLCJIZWFkIiwiTGF5b3V0IiwiY2hpbGRyZW4iLCJ0aXRsZSIsImRpdiIsIm1ldGEiLCJjaGFyU2V0IiwibmFtZSIsImNvbnRlbnQiLCJoZWFkZXIiLCJuYXYiLCJocmVmIiwiYSIsImZvb3RlciIsImhyIiwic3BhbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/Layout.tsx\n"));
+eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"../node_modules/react/jsx-dev-runtime.js\");\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 */ \"../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"../node_modules/next/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/head */ \"../node_modules/next/head.js\");\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_head__WEBPACK_IMPORTED_MODULE_3__);\nvar _this = undefined;\n\n\n\n\nvar Layout = function(param) {\n var children = param.children, _title = param.title, title = _title === void 0 ? \"This is the default title\" : _title;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_head__WEBPACK_IMPORTED_MODULE_3___default()), {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"title\", {\n children: title\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 13,\n columnNumber: 7\n }, _this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n charSet: \"utf-8\"\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 14,\n columnNumber: 7\n }, _this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n name: \"viewport\",\n content: \"initial-scale=1.0, width=device-width\"\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 15,\n columnNumber: 7\n }, _this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 12,\n columnNumber: 5\n }, _this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: \"Home\"\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 20,\n columnNumber: 11\n }, _this)\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 19,\n columnNumber: 9\n }, _this),\n \" \",\n \"|\",\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/about\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: \"About\"\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 24,\n columnNumber: 11\n }, _this)\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 23,\n columnNumber: 9\n }, _this),\n \" \",\n \"|\",\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/initial-props\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: \"With Initial Props\"\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 28,\n columnNumber: 11\n }, _this)\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 27,\n columnNumber: 9\n }, _this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 18,\n columnNumber: 7\n }, _this)\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 17,\n columnNumber: 5\n }, _this),\n children,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"footer\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"hr\", {}, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 34,\n columnNumber: 7\n }, _this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"I'm here to stay (Footer)\"\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 35,\n columnNumber: 7\n }, _this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 33,\n columnNumber: 5\n }, _this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\components\\\\Layout.tsx\",\n lineNumber: 11,\n columnNumber: 3\n }, _this);\n};\n_c = Layout;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Layout);\nvar _c;\n$RefreshReg$(_c, \"Layout\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0xheW91dC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQXdDO0FBQ1o7QUFDQTtBQU81QixJQUFNRyxNQUFNLEdBQUc7UUFBR0MsUUFBUSxTQUFSQSxRQUFRLGlCQUFFQyxLQUFLLEVBQUxBLEtBQUssdUJBQUcsMkJBQTJCO3lCQUM3RCw4REFBQ0MsS0FBRzs7MEJBQ0YsOERBQUNKLGtEQUFJOztrQ0FDSCw4REFBQ0csT0FBSztrQ0FBRUEsS0FBSzs7Ozs7NkJBQVM7a0NBQ3RCLDhEQUFDRSxNQUFJO3dCQUFDQyxPQUFPLEVBQUMsT0FBTzs7Ozs7NkJBQUc7a0NBQ3hCLDhEQUFDRCxNQUFJO3dCQUFDRSxJQUFJLEVBQUMsVUFBVTt3QkFBQ0MsT0FBTyxFQUFDLHVDQUF1Qzs7Ozs7NkJBQUc7Ozs7OztxQkFDbkU7MEJBQ1AsOERBQUNDLFFBQU07MEJBQ0wsNEVBQUNDLEtBQUc7O3NDQUNGLDhEQUFDWCxrREFBSTs0QkFBQ1ksSUFBSSxFQUFDLEdBQUc7c0NBQ1osNEVBQUNDLEdBQUM7MENBQUMsTUFBSTs7Ozs7cUNBQUk7Ozs7O2lDQUNOO3dCQUFDLEdBQUc7d0JBQUMsR0FDWDt3QkFBQyxHQUFHO3NDQUNMLDhEQUFDYixrREFBSTs0QkFBQ1ksSUFBSSxFQUFDLFFBQVE7c0NBQ2pCLDRFQUFDQyxHQUFDOzBDQUFDLE9BQUs7Ozs7O3FDQUFJOzs7OztpQ0FDUDt3QkFBQyxHQUFHO3dCQUFDLEdBQ1g7d0JBQUMsR0FBRztzQ0FDTCw4REFBQ2Isa0RBQUk7NEJBQUNZLElBQUksRUFBQyxnQkFBZ0I7c0NBQ3pCLDRFQUFDQyxHQUFDOzBDQUFDLG9CQUFrQjs7Ozs7cUNBQUk7Ozs7O2lDQUNwQjs7Ozs7O3lCQUNIOzs7OztxQkFDQztZQUNSVixRQUFROzBCQUNULDhEQUFDVyxRQUFNOztrQ0FDTCw4REFBQ0MsSUFBRTs7Ozs2QkFBRztrQ0FDTiw4REFBQ0MsTUFBSTtrQ0FBQywyQkFBeUI7Ozs7OzZCQUFPOzs7Ozs7cUJBQy9COzs7Ozs7YUFDTDtDQUNQO0FBNUJLZCxLQUFBQSxNQUFNO0FBOEJaLCtEQUFlQSxNQUFNIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL2NvbXBvbmVudHMvTGF5b3V0LnRzeD8zYzhmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCdcclxuaW1wb3J0IExpbmsgZnJvbSAnbmV4dC9saW5rJ1xyXG5pbXBvcnQgSGVhZCBmcm9tICduZXh0L2hlYWQnXHJcblxyXG50eXBlIFByb3BzID0ge1xyXG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcclxuICB0aXRsZT86IHN0cmluZ1xyXG59XHJcblxyXG5jb25zdCBMYXlvdXQgPSAoeyBjaGlsZHJlbiwgdGl0bGUgPSAnVGhpcyBpcyB0aGUgZGVmYXVsdCB0aXRsZScgfTogUHJvcHMpID0+IChcclxuICA8ZGl2PlxyXG4gICAgPEhlYWQ+XHJcbiAgICAgIDx0aXRsZT57dGl0bGV9PC90aXRsZT5cclxuICAgICAgPG1ldGEgY2hhclNldD1cInV0Zi04XCIgLz5cclxuICAgICAgPG1ldGEgbmFtZT1cInZpZXdwb3J0XCIgY29udGVudD1cImluaXRpYWwtc2NhbGU9MS4wLCB3aWR0aD1kZXZpY2Utd2lkdGhcIiAvPlxyXG4gICAgPC9IZWFkPlxyXG4gICAgPGhlYWRlcj5cclxuICAgICAgPG5hdj5cclxuICAgICAgICA8TGluayBocmVmPVwiL1wiPlxyXG4gICAgICAgICAgPGE+SG9tZTwvYT5cclxuICAgICAgICA8L0xpbms+eycgJ31cclxuICAgICAgICB8eycgJ31cclxuICAgICAgICA8TGluayBocmVmPVwiL2Fib3V0XCI+XHJcbiAgICAgICAgICA8YT5BYm91dDwvYT5cclxuICAgICAgICA8L0xpbms+eycgJ31cclxuICAgICAgICB8eycgJ31cclxuICAgICAgICA8TGluayBocmVmPVwiL2luaXRpYWwtcHJvcHNcIj5cclxuICAgICAgICAgIDxhPldpdGggSW5pdGlhbCBQcm9wczwvYT5cclxuICAgICAgICA8L0xpbms+XHJcbiAgICAgIDwvbmF2PlxyXG4gICAgPC9oZWFkZXI+XHJcbiAgICB7Y2hpbGRyZW59XHJcbiAgICA8Zm9vdGVyPlxyXG4gICAgICA8aHIgLz5cclxuICAgICAgPHNwYW4+SSdtIGhlcmUgdG8gc3RheSAoRm9vdGVyKTwvc3Bhbj5cclxuICAgIDwvZm9vdGVyPlxyXG4gIDwvZGl2PlxyXG4pXHJcblxyXG5leHBvcnQgZGVmYXVsdCBMYXlvdXRcclxuIl0sIm5hbWVzIjpbIlJlYWN0IiwiTGluayIsIkhlYWQiLCJMYXlvdXQiLCJjaGlsZHJlbiIsInRpdGxlIiwiZGl2IiwibWV0YSIsImNoYXJTZXQiLCJuYW1lIiwiY29udGVudCIsImhlYWRlciIsIm5hdiIsImhyZWYiLCJhIiwiZm9vdGVyIiwiaHIiLCJzcGFuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./components/Layout.tsx\n"));
/***/ }),
@@ -80,7 +80,7 @@ eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* har
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"../node_modules/react/jsx-dev-runtime.js\");\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 */ \"../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"../node_modules/next/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_Layout__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/Layout */ \"./components/Layout.tsx\");\nvar _this = undefined;\n\n\n\n\nvar _s = $RefreshSig$();\nvar IndexPage = function() {\n _s();\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function() {\n var handleMessage = function(_event, args) {\n return alert(args);\n };\n // add a listener to 'message' channel\n __webpack_require__.g.ipcRenderer.addListener(\"message\", handleMessage);\n return function() {\n __webpack_require__.g.ipcRenderer.removeListener(\"message\", handleMessage);\n };\n }, []);\n var onSayHiClick = function() {\n __webpack_require__.g.ipcRenderer.send(\"message\", \"hi from next\");\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Layout__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: \"Home | Next.js + TypeScript + Electron Example\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n children: \"Hello Next.js \\uD83D\\uDC4B\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/index.tsx\",\n lineNumber: 23,\n columnNumber: 7\n }, _this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: onSayHiClick,\n children: \"Say hi to electron\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/index.tsx\",\n lineNumber: 24,\n columnNumber: 7\n }, _this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/about\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: \"About\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/index.tsx\",\n lineNumber: 27,\n columnNumber: 11\n }, _this)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/index.tsx\",\n lineNumber: 26,\n columnNumber: 9\n }, _this)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/index.tsx\",\n lineNumber: 25,\n columnNumber: 7\n }, _this)\n ]\n }, void 0, true, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/index.tsx\",\n lineNumber: 22,\n columnNumber: 5\n }, _this);\n};\n_s(IndexPage, \"OD7bBpZva5O2jO+Puf00hKivP7c=\");\n_c = IndexPage;\n/* harmony default export */ __webpack_exports__[\"default\"] = (IndexPage);\nvar _c;\n$RefreshReg$(_c, \"IndexPage\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wYWdlcy9pbmRleC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7QUFBaUM7QUFDTDtBQUNhOztBQUV6QyxJQUFNRyxTQUFTLEdBQUcsV0FBTTs7SUFDdEJILGdEQUFTLENBQUMsV0FBTTtRQUNkLElBQU1JLGFBQWEsR0FBRyxTQUFDQyxNQUFNLEVBQUVDLElBQUk7bUJBQUtDLEtBQUssQ0FBQ0QsSUFBSSxDQUFDO1NBQUE7UUFFbkQsc0NBQXNDO1FBQ3RDRSxxQkFBTSxDQUFDQyxXQUFXLENBQUNDLFdBQVcsQ0FBQyxTQUFTLEVBQUVOLGFBQWEsQ0FBQztRQUV4RCxPQUFPLFdBQU07WUFDWEkscUJBQU0sQ0FBQ0MsV0FBVyxDQUFDRSxjQUFjLENBQUMsU0FBUyxFQUFFUCxhQUFhLENBQUM7U0FDNUQ7S0FDRixFQUFFLEVBQUUsQ0FBQztJQUVOLElBQU1RLFlBQVksR0FBRyxXQUFNO1FBQ3pCSixxQkFBTSxDQUFDQyxXQUFXLENBQUNJLElBQUksQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDO0tBQ25EO0lBRUQscUJBQ0UsOERBQUNYLDBEQUFNO1FBQUNZLEtBQUssRUFBQyxnREFBZ0Q7OzBCQUM1RCw4REFBQ0MsSUFBRTswQkFBQyw0QkFBZTs7Ozs7cUJBQUs7MEJBQ3hCLDhEQUFDQyxRQUFNO2dCQUFDQyxPQUFPLEVBQUVMLFlBQVk7MEJBQUUsb0JBQWtCOzs7OztxQkFBUzswQkFDMUQsOERBQUNNLEdBQUM7MEJBQ0EsNEVBQUNqQixrREFBSTtvQkFBQ2tCLElBQUksRUFBQyxRQUFROzhCQUNqQiw0RUFBQ0MsR0FBQztrQ0FBQyxPQUFLOzs7Ozs2QkFBSTs7Ozs7eUJBQ1A7Ozs7O3FCQUNMOzs7Ozs7YUFDRyxDQUNWO0NBQ0Y7R0EzQktqQixTQUFTO0FBQVRBLEtBQUFBLFNBQVM7QUE2QmYsK0RBQWVBLFNBQVMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vcGFnZXMvaW5kZXgudHN4PzA3ZmYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgTGluayBmcm9tICduZXh0L2xpbmsnXG5pbXBvcnQgTGF5b3V0IGZyb20gJy4uL2NvbXBvbmVudHMvTGF5b3V0J1xuXG5jb25zdCBJbmRleFBhZ2UgPSAoKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlTWVzc2FnZSA9IChfZXZlbnQsIGFyZ3MpID0+IGFsZXJ0KGFyZ3MpXG5cbiAgICAvLyBhZGQgYSBsaXN0ZW5lciB0byAnbWVzc2FnZScgY2hhbm5lbFxuICAgIGdsb2JhbC5pcGNSZW5kZXJlci5hZGRMaXN0ZW5lcignbWVzc2FnZScsIGhhbmRsZU1lc3NhZ2UpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZ2xvYmFsLmlwY1JlbmRlcmVyLnJlbW92ZUxpc3RlbmVyKCdtZXNzYWdlJywgaGFuZGxlTWVzc2FnZSlcbiAgICB9XG4gIH0sIFtdKVxuXG4gIGNvbnN0IG9uU2F5SGlDbGljayA9ICgpID0+IHtcbiAgICBnbG9iYWwuaXBjUmVuZGVyZXIuc2VuZCgnbWVzc2FnZScsICdoaSBmcm9tIG5leHQnKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8TGF5b3V0IHRpdGxlPVwiSG9tZSB8IE5leHQuanMgKyBUeXBlU2NyaXB0ICsgRWxlY3Ryb24gRXhhbXBsZVwiPlxuICAgICAgPGgxPkhlbGxvIE5leHQuanMg8J+RizwvaDE+XG4gICAgICA8YnV0dG9uIG9uQ2xpY2s9e29uU2F5SGlDbGlja30+U2F5IGhpIHRvIGVsZWN0cm9uPC9idXR0b24+XG4gICAgICA8cD5cbiAgICAgICAgPExpbmsgaHJlZj1cIi9hYm91dFwiPlxuICAgICAgICAgIDxhPkFib3V0PC9hPlxuICAgICAgICA8L0xpbms+XG4gICAgICA8L3A+XG4gICAgPC9MYXlvdXQ+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgSW5kZXhQYWdlXG4iXSwibmFtZXMiOlsidXNlRWZmZWN0IiwiTGluayIsIkxheW91dCIsIkluZGV4UGFnZSIsImhhbmRsZU1lc3NhZ2UiLCJfZXZlbnQiLCJhcmdzIiwiYWxlcnQiLCJnbG9iYWwiLCJpcGNSZW5kZXJlciIsImFkZExpc3RlbmVyIiwicmVtb3ZlTGlzdGVuZXIiLCJvblNheUhpQ2xpY2siLCJzZW5kIiwidGl0bGUiLCJoMSIsImJ1dHRvbiIsIm9uQ2xpY2siLCJwIiwiaHJlZiIsImEiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./pages/index.tsx\n"));
+eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"../node_modules/react/jsx-dev-runtime.js\");\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 */ \"../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"../node_modules/next/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_Layout__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/Layout */ \"./components/Layout.tsx\");\nvar _this = undefined;\n\n\n\n\nvar _s = $RefreshSig$();\nvar IndexPage = function() {\n _s();\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function() {\n var handleMessage = function(_event, args) {\n return console.log(args);\n };\n // add a listener to 'message' channel\n __webpack_require__.g.ipcRenderer.addListener(\"filename\", handleMessage);\n return function() {\n __webpack_require__.g.ipcRenderer.removeListener(\"filename\", handleMessage);\n };\n }, []);\n var filePick = function() {\n __webpack_require__.g.ipcRenderer.send(\"file\");\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Layout__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: \"Home | Next.js + TypeScript + Electron Example\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n children: \"Hello Next.js \\uD83D\\uDC4B\"\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\pages\\\\index.tsx\",\n lineNumber: 23,\n columnNumber: 7\n }, _this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: filePick,\n children: \"Choose File\"\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\pages\\\\index.tsx\",\n lineNumber: 24,\n columnNumber: 7\n }, _this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/about\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: \"About\"\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\pages\\\\index.tsx\",\n lineNumber: 27,\n columnNumber: 11\n }, _this)\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\pages\\\\index.tsx\",\n lineNumber: 26,\n columnNumber: 9\n }, _this)\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\pages\\\\index.tsx\",\n lineNumber: 25,\n columnNumber: 7\n }, _this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\Users\\\\ghosh\\\\OneDrive\\\\Documents\\\\progams\\\\upscayl\\\\renderer\\\\pages\\\\index.tsx\",\n lineNumber: 22,\n columnNumber: 5\n }, _this);\n};\n_s(IndexPage, \"OD7bBpZva5O2jO+Puf00hKivP7c=\");\n_c = IndexPage;\n/* harmony default export */ __webpack_exports__[\"default\"] = (IndexPage);\nvar _c;\n$RefreshReg$(_c, \"IndexPage\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wYWdlcy9pbmRleC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7QUFBaUM7QUFDTDtBQUNhOztBQUV6QyxJQUFNRyxTQUFTLEdBQUcsV0FBTTs7SUFDdEJILGdEQUFTLENBQUMsV0FBTTtRQUNkLElBQU1JLGFBQWEsR0FBRyxTQUFDQyxNQUFVLEVBQUVDLElBQVE7bUJBQUtDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDRixJQUFJLENBQUM7U0FBQTtRQUVqRSxzQ0FBc0M7UUFDdENHLHFCQUFNLENBQUNDLFdBQVcsQ0FBQ0MsV0FBVyxDQUFDLFVBQVUsRUFBRVAsYUFBYSxDQUFDO1FBRXpELE9BQU8sV0FBTTtZQUNYSyxxQkFBTSxDQUFDQyxXQUFXLENBQUNFLGNBQWMsQ0FBQyxVQUFVLEVBQUVSLGFBQWEsQ0FBQztTQUM3RDtLQUNGLEVBQUUsRUFBRSxDQUFDO0lBRU4sSUFBTVMsUUFBUSxHQUFHLFdBQU07UUFDckJKLHFCQUFNLENBQUNDLFdBQVcsQ0FBQ0ksSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNoQztJQUVELHFCQUNFLDhEQUFDWiwwREFBTTtRQUFDYSxLQUFLLEVBQUMsZ0RBQWdEOzswQkFDNUQsOERBQUNDLElBQUU7MEJBQUMsNEJBQWU7Ozs7O3FCQUFLOzBCQUN4Qiw4REFBQ0MsUUFBTTtnQkFBQ0MsT0FBTyxFQUFFTCxRQUFROzBCQUFFLGFBQVc7Ozs7O3FCQUFTOzBCQUMvQyw4REFBQ00sR0FBQzswQkFDQSw0RUFBQ2xCLGtEQUFJO29CQUFDbUIsSUFBSSxFQUFDLFFBQVE7OEJBQ2pCLDRFQUFDQyxHQUFDO2tDQUFDLE9BQUs7Ozs7OzZCQUFJOzs7Ozt5QkFDUDs7Ozs7cUJBQ0w7Ozs7OzthQUNHLENBQ1Y7Q0FDRjtHQTNCS2xCLFNBQVM7QUFBVEEsS0FBQUEsU0FBUztBQTZCZiwrREFBZUEsU0FBUyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9wYWdlcy9pbmRleC50c3g/MDdmZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcclxuaW1wb3J0IExpbmsgZnJvbSAnbmV4dC9saW5rJ1xyXG5pbXBvcnQgTGF5b3V0IGZyb20gJy4uL2NvbXBvbmVudHMvTGF5b3V0J1xyXG5cclxuY29uc3QgSW5kZXhQYWdlID0gKCkgPT4ge1xyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zdCBoYW5kbGVNZXNzYWdlID0gKF9ldmVudDphbnksIGFyZ3M6YW55KSA9PiBjb25zb2xlLmxvZyhhcmdzKVxyXG5cclxuICAgIC8vIGFkZCBhIGxpc3RlbmVyIHRvICdtZXNzYWdlJyBjaGFubmVsXHJcbiAgICBnbG9iYWwuaXBjUmVuZGVyZXIuYWRkTGlzdGVuZXIoJ2ZpbGVuYW1lJywgaGFuZGxlTWVzc2FnZSlcclxuXHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICBnbG9iYWwuaXBjUmVuZGVyZXIucmVtb3ZlTGlzdGVuZXIoJ2ZpbGVuYW1lJywgaGFuZGxlTWVzc2FnZSlcclxuICAgIH1cclxuICB9LCBbXSlcclxuXHJcbiAgY29uc3QgZmlsZVBpY2sgPSAoKSA9PiB7XHJcbiAgICBnbG9iYWwuaXBjUmVuZGVyZXIuc2VuZCgnZmlsZScpXHJcbiAgfVxyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPExheW91dCB0aXRsZT1cIkhvbWUgfCBOZXh0LmpzICsgVHlwZVNjcmlwdCArIEVsZWN0cm9uIEV4YW1wbGVcIj5cclxuICAgICAgPGgxPkhlbGxvIE5leHQuanMg8J+RizwvaDE+XHJcbiAgICAgIDxidXR0b24gb25DbGljaz17ZmlsZVBpY2t9PkNob29zZSBGaWxlPC9idXR0b24+XHJcbiAgICAgIDxwPlxyXG4gICAgICAgIDxMaW5rIGhyZWY9XCIvYWJvdXRcIj5cclxuICAgICAgICAgIDxhPkFib3V0PC9hPlxyXG4gICAgICAgIDwvTGluaz5cclxuICAgICAgPC9wPlxyXG4gICAgPC9MYXlvdXQ+XHJcbiAgKVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBJbmRleFBhZ2VcclxuIl0sIm5hbWVzIjpbInVzZUVmZmVjdCIsIkxpbmsiLCJMYXlvdXQiLCJJbmRleFBhZ2UiLCJoYW5kbGVNZXNzYWdlIiwiX2V2ZW50IiwiYXJncyIsImNvbnNvbGUiLCJsb2ciLCJnbG9iYWwiLCJpcGNSZW5kZXJlciIsImFkZExpc3RlbmVyIiwicmVtb3ZlTGlzdGVuZXIiLCJmaWxlUGljayIsInNlbmQiLCJ0aXRsZSIsImgxIiwiYnV0dG9uIiwib25DbGljayIsInAiLCJocmVmIiwiYSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./pages/index.tsx\n"));
/***/ }),
@@ -129,7 +129,7 @@ eval(__webpack_require__.ts("\n\nif (false) {} else {\n module.exports = __webp
},
/******/ function(__webpack_require__) { // webpackRuntimeModules
/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
-/******/ __webpack_require__.O(0, ["pages/_app","main"], function() { return __webpack_exec__("../node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2Fhome%2Fzeffo%2FPublic%2Fupscayl%2Frenderer%2Fpages%2Findex.tsx&page=%2F!"); });
+/******/ __webpack_require__.O(0, ["pages/_app","main"], function() { return __webpack_exec__("../node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=C%3A%5CUsers%5Cghosh%5COneDrive%5CDocuments%5Cprogams%5Cupscayl%5Crenderer%5Cpages%5Cindex.tsx&page=%2F!"); });
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
/******/ }
diff --git a/renderer/.next/static/chunks/pages/initial-props.js b/renderer/.next/static/chunks/pages/initial-props.js
deleted file mode 100644
index 728f42d..0000000
--- a/renderer/.next/static/chunks/pages/initial-props.js
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * ATTENTION: An "eval-source-map" devtool has been used.
- * This devtool is neither made for production nor for readable output files.
- * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
- * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
- * or disable the default devtool with "devtool: false".
- * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
- */
-(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([["pages/initial-props"],{
-
-/***/ "../node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2Fhome%2Fzeffo%2FPublic%2Fupscayl%2Frenderer%2Fpages%2Finitial-props.tsx&page=%2Finitial-props!":
-/*!*****************************************************************************************************************************************************************************************************!*\
- !*** ../node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2Fhome%2Fzeffo%2FPublic%2Fupscayl%2Frenderer%2Fpages%2Finitial-props.tsx&page=%2Finitial-props! ***!
- \*****************************************************************************************************************************************************************************************************/
-/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
-
-eval(__webpack_require__.ts("\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/initial-props\",\n function () {\n return __webpack_require__(/*! ./pages/initial-props.tsx */ \"./pages/initial-props.tsx\");\n }\n ]);\n if(true) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/initial-props\"])\n });\n }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvbmV4dC1jbGllbnQtcGFnZXMtbG9hZGVyLmpzP2Fic29sdXRlUGFnZVBhdGg9JTJGaG9tZSUyRnplZmZvJTJGUHVibGljJTJGdXBzY2F5bCUyRnJlbmRlcmVyJTJGcGFnZXMlMkZpbml0aWFsLXByb3BzLnRzeCZwYWdlPSUyRmluaXRpYWwtcHJvcHMhLmpzIiwibWFwcGluZ3MiOiI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG1CQUFPLENBQUMsNERBQTJCO0FBQ2xEO0FBQ0E7QUFDQSxPQUFPLElBQVU7QUFDakIsTUFBTSxVQUFVO0FBQ2hCO0FBQ0EsT0FBTztBQUNQO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLz9hMTFmIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICh3aW5kb3cuX19ORVhUX1AgPSB3aW5kb3cuX19ORVhUX1AgfHwgW10pLnB1c2goW1xuICAgICAgXCIvaW5pdGlhbC1wcm9wc1wiLFxuICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gcmVxdWlyZShcIi4vcGFnZXMvaW5pdGlhbC1wcm9wcy50c3hcIik7XG4gICAgICB9XG4gICAgXSk7XG4gICAgaWYobW9kdWxlLmhvdCkge1xuICAgICAgbW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgd2luZG93Ll9fTkVYVF9QLnB1c2goW1wiL2luaXRpYWwtcHJvcHNcIl0pXG4gICAgICB9KTtcbiAgICB9XG4gICJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2Fhome%2Fzeffo%2FPublic%2Fupscayl%2Frenderer%2Fpages%2Finitial-props.tsx&page=%2Finitial-props!\n"));
-
-/***/ }),
-
-/***/ "../node_modules/next/dist/client/get-domain-locale.js":
-/*!*************************************************************!*\
- !*** ../node_modules/next/dist/client/get-domain-locale.js ***!
- \*************************************************************/
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.getDomainLocale = getDomainLocale;\nvar basePath = false || \"\";\nfunction getDomainLocale(path, locale, locales, domainLocales) {\n if (false) { var finalLocale, proto, domain, target, detectDomainLocale, normalizeLocalePath; } else {\n return false;\n }\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=get-domain-locale.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZ2V0LWRvbWFpbi1sb2NhbGUuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxLQUFLLEVBQUUsSUFBSTtDQUNkLEVBQUMsQ0FBQztBQUNIRCx1QkFBdUIsR0FBR0UsZUFBZSxDQUFDO0FBQzFDLElBQU1DLFFBQVEsR0FBR0MsTUFBa0MsSUFBSSxFQUFFO0FBQ3pELFNBQVNGLGVBQWUsQ0FBQ0ssSUFBSSxFQUFFQyxNQUFNLEVBQUVDLE9BQU8sRUFBRUMsYUFBYSxFQUFFO0lBQzNELElBQUlOLEtBQStCLEVBQUUsb0ZBV3BDLE1BQU07UUFDSCxPQUFPLEtBQUssQ0FBQztLQUNoQjtDQUNKO0FBRUQsSUFBSSxDQUFDLE9BQU9KLE9BQU8sQ0FBQ3VCLE9BQU8sS0FBSyxVQUFVLElBQUssT0FBT3ZCLE9BQU8sQ0FBQ3VCLE9BQU8sS0FBSyxRQUFRLElBQUl2QixPQUFPLENBQUN1QixPQUFPLEtBQUssSUFBSSxDQUFFLElBQUksT0FBT3ZCLE9BQU8sQ0FBQ3VCLE9BQU8sQ0FBQ0MsVUFBVSxLQUFLLFdBQVcsRUFBRTtJQUNySzFCLE1BQU0sQ0FBQ0MsY0FBYyxDQUFDQyxPQUFPLENBQUN1QixPQUFPLEVBQUUsWUFBWSxFQUFFO1FBQUV0QixLQUFLLEVBQUUsSUFBSTtLQUFFLENBQUMsQ0FBQztJQUN0RUgsTUFBTSxDQUFDMkIsTUFBTSxDQUFDekIsT0FBTyxDQUFDdUIsT0FBTyxFQUFFdkIsT0FBTyxDQUFDLENBQUM7SUFDeEMwQixNQUFNLENBQUMxQixPQUFPLEdBQUdBLE9BQU8sQ0FBQ3VCLE9BQU8sQ0FBQztDQUNsQyxDQUVELDZDQUE2QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZ2V0LWRvbWFpbi1sb2NhbGUuanM/ZGIzYiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZ2V0RG9tYWluTG9jYWxlID0gZ2V0RG9tYWluTG9jYWxlO1xuY29uc3QgYmFzZVBhdGggPSBwcm9jZXNzLmVudi5fX05FWFRfUk9VVEVSX0JBU0VQQVRIIHx8ICcnO1xuZnVuY3Rpb24gZ2V0RG9tYWluTG9jYWxlKHBhdGgsIGxvY2FsZSwgbG9jYWxlcywgZG9tYWluTG9jYWxlcykge1xuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUKSB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZUxvY2FsZVBhdGggPSByZXF1aXJlKCcuL25vcm1hbGl6ZS1sb2NhbGUtcGF0aCcpLm5vcm1hbGl6ZUxvY2FsZVBhdGg7XG4gICAgICAgIGNvbnN0IGRldGVjdERvbWFpbkxvY2FsZSA9IHJlcXVpcmUoJy4vZGV0ZWN0LWRvbWFpbi1sb2NhbGUnKS5kZXRlY3REb21haW5Mb2NhbGU7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGxvY2FsZSB8fCBub3JtYWxpemVMb2NhbGVQYXRoKHBhdGgsIGxvY2FsZXMpLmRldGVjdGVkTG9jYWxlO1xuICAgICAgICBjb25zdCBkb21haW4gPSBkZXRlY3REb21haW5Mb2NhbGUoZG9tYWluTG9jYWxlcywgdW5kZWZpbmVkLCB0YXJnZXQpO1xuICAgICAgICBpZiAoZG9tYWluKSB7XG4gICAgICAgICAgICBjb25zdCBwcm90byA9IGBodHRwJHtkb21haW4uaHR0cCA/ICcnIDogJ3MnfTovL2A7XG4gICAgICAgICAgICBjb25zdCBmaW5hbExvY2FsZSA9IHRhcmdldCA9PT0gZG9tYWluLmRlZmF1bHRMb2NhbGUgPyAnJyA6IGAvJHt0YXJnZXR9YDtcbiAgICAgICAgICAgIHJldHVybiBgJHtwcm90b30ke2RvbWFpbi5kb21haW59JHtiYXNlUGF0aH0ke2ZpbmFsTG9jYWxlfSR7cGF0aH1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXQtZG9tYWluLWxvY2FsZS5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJnZXREb21haW5Mb2NhbGUiLCJiYXNlUGF0aCIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfUk9VVEVSX0JBU0VQQVRIIiwicGF0aCIsImxvY2FsZSIsImxvY2FsZXMiLCJkb21haW5Mb2NhbGVzIiwiX19ORVhUX0kxOE5fU1VQUE9SVCIsIm5vcm1hbGl6ZUxvY2FsZVBhdGgiLCJyZXF1aXJlIiwiZGV0ZWN0RG9tYWluTG9jYWxlIiwidGFyZ2V0IiwiZGV0ZWN0ZWRMb2NhbGUiLCJkb21haW4iLCJ1bmRlZmluZWQiLCJwcm90byIsImh0dHAiLCJmaW5hbExvY2FsZSIsImRlZmF1bHRMb2NhbGUiLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../node_modules/next/dist/client/get-domain-locale.js\n"));
-
-/***/ }),
-
-/***/ "../node_modules/next/dist/client/link.js":
-/*!************************************************!*\
- !*** ../node_modules/next/dist/client/link.js ***!
- \************************************************/
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar _slicedToArray = (__webpack_require__(/*! @swc/helpers/lib/_sliced_to_array.js */ \"../node_modules/@swc/helpers/lib/_sliced_to_array.js\")[\"default\"]);\nvar _typeOf = (__webpack_require__(/*! @swc/helpers/lib/_type_of.js */ \"../node_modules/@swc/helpers/lib/_type_of.js\")[\"default\"]);\nvar _s = $RefreshSig$();\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = void 0;\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"../node_modules/react/index.js\"));\nvar _router = __webpack_require__(/*! ../shared/lib/router/router */ \"../node_modules/next/dist/shared/lib/router/router.js\");\nvar _addLocale = __webpack_require__(/*! ./add-locale */ \"../node_modules/next/dist/client/add-locale.js\");\nvar _routerContext = __webpack_require__(/*! ../shared/lib/router-context */ \"../node_modules/next/dist/shared/lib/router-context.js\");\nvar _appRouterContext = __webpack_require__(/*! ../shared/lib/app-router-context */ \"../node_modules/next/dist/shared/lib/app-router-context.js\");\nvar _useIntersection = __webpack_require__(/*! ./use-intersection */ \"../node_modules/next/dist/client/use-intersection.js\");\nvar _getDomainLocale = __webpack_require__(/*! ./get-domain-locale */ \"../node_modules/next/dist/client/get-domain-locale.js\");\nvar _addBasePath = __webpack_require__(/*! ./add-base-path */ \"../node_modules/next/dist/client/add-base-path.js\");\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n// @ts-ignore useTransition exist\nvar hasUseTransition = typeof _react.default.useTransition !== \"undefined\";\nvar prefetched = {};\nfunction prefetch(router, href, as, options) {\n if ( false || !router) 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(function(err) {\n if (true) {\n // rethrow to show invalid URL errors\n throw err;\n }\n });\n var 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 var target = event.currentTarget.target;\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, soft, shallow, scroll, locale, startTransition) {\n var nodeName = e.currentTarget.nodeName;\n // anchors inside an svg have a lowercase nodeName\n var 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 var navigate = function() {\n // If the router is an AppRouterInstance, then it'll have `softPush` and\n // `softReplace`.\n if (\"softPush\" in router && \"softReplace\" in router) {\n // If we're doing a soft navigation, use the soft variants of\n // replace/push.\n var method = soft ? replace ? \"softReplace\" : \"softPush\" : replace ? \"replace\" : \"push\";\n router[method](href);\n } else {\n router[replace ? \"replace\" : \"push\"](href, as, {\n shallow: shallow,\n locale: locale,\n scroll: scroll\n });\n }\n };\n if (startTransition) {\n startTransition(navigate);\n } else {\n navigate();\n }\n}\nvar Link = /*#__PURE__*/ _s(_react.default.forwardRef(_c = _s(function LinkComponent(props, forwardedRef) {\n _s();\n if (true) {\n var createPropError = function createPropError(args) {\n return new Error(\"Failed prop type: The prop `\".concat(args.key, \"` expects a \").concat(args.expected, \" in ``, but got `\").concat(args.actual, \"` instead.\") + ( true ? \"\\nOpen your browser's console to view the Component stack trace.\" : 0));\n };\n // TypeScript trick for type-guarding:\n var requiredPropsGuard = {\n href: true\n };\n var requiredProps = Object.keys(requiredPropsGuard);\n requiredProps.forEach(function(key) {\n if (key === \"href\") {\n if (props[key] == null || typeof props[key] !== \"string\" && typeof props[key] !== \"object\") {\n throw createPropError({\n key: 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 var _ = key;\n }\n });\n // TypeScript trick for type-guarding:\n var optionalPropsGuard = {\n as: true,\n replace: true,\n soft: 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 var optionalProps = Object.keys(optionalPropsGuard);\n optionalProps.forEach(function(key) {\n var valType = _typeOf(props[key]);\n if (key === \"as\") {\n if (props[key] && valType !== \"string\" && valType !== \"object\") {\n throw createPropError({\n key: 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: 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: key,\n expected: \"`function`\",\n actual: valType\n });\n }\n } else if (key === \"replace\" || key === \"soft\" || key === \"scroll\" || key === \"shallow\" || key === \"passHref\" || key === \"prefetch\" || key === \"legacyBehavior\") {\n if (props[key] != null && valType !== \"boolean\") {\n throw createPropError({\n key: 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 var _ = 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 var 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 var children;\n var hrefProp = props.href, asProp = props.as, childrenProp = props.children, prefetchProp = props.prefetch, passHref = props.passHref, replace = props.replace, soft = props.soft, shallow = props.shallow, scroll = props.scroll, locale = props.locale, onClick = props.onClick, onMouseEnter = props.onMouseEnter, _legacyBehavior = props.legacyBehavior, legacyBehavior = _legacyBehavior === void 0 ? Boolean(false) !== true : _legacyBehavior, restProps = _objectWithoutPropertiesLoose(props, [\n \"href\",\n \"as\",\n \"children\",\n \"prefetch\",\n \"passHref\",\n \"replace\",\n \"soft\",\n \"shallow\",\n \"scroll\",\n \"locale\",\n \"onClick\",\n \"onMouseEnter\",\n \"legacyBehavior\"\n ]);\n children = childrenProp;\n if (legacyBehavior && (typeof children === \"string\" || typeof children === \"number\")) {\n children = /*#__PURE__*/ _react.default.createElement(\"a\", null, children);\n }\n var p = prefetchProp !== false;\n var ref = _slicedToArray(hasUseTransition ? // @ts-ignore useTransition exists\n // eslint-disable-next-line react-hooks/rules-of-hooks\n _react.default.useTransition() : [], 2), /* isPending */ startTransition = ref[1];\n var router = _react.default.useContext(_routerContext.RouterContext);\n // TODO-APP: type error. Remove `as any`\n var appRouter = _react.default.useContext(_appRouterContext.AppRouterContext);\n if (appRouter) {\n router = appRouter;\n }\n var ref1 = _react.default.useMemo(function() {\n var ref = _slicedToArray((0, _router).resolveHref(router, hrefProp, true), 2), resolvedHref = ref[0], resolvedAs = ref[1];\n return {\n href: resolvedHref,\n as: asProp ? (0, _router).resolveHref(router, asProp) : resolvedAs || resolvedHref\n };\n }, [\n router,\n hrefProp,\n asProp\n ]), href = ref1.href, as = ref1.as;\n var previousHref = _react.default.useRef(href);\n var previousAs = _react.default.useRef(as);\n // This will return the first child, if multiple are provided it will throw an error\n var child;\n if (legacyBehavior) {\n if (true) {\n if (onClick) {\n console.warn('\"onClick\" was passed to with `href` of `'.concat(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 `'.concat(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 `\".concat(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 `\".concat(hrefProp, \"` but only one child is supported https://nextjs.org/docs/messages/link-multiple-children\") + ( true ? \" \\nOpen your browser's console to view the Component stack trace.\" : 0));\n }\n } else {}\n }\n var childRef = legacyBehavior ? child && typeof child === \"object\" && child.ref : forwardedRef;\n var ref2 = _slicedToArray((0, _useIntersection).useIntersection({\n rootMargin: \"200px\"\n }), 3), setIntersectionRef = ref2[0], isVisible = ref2[1], resetVisible = ref2[2];\n var setRef = _react.default.useCallback(function(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(function() {\n var shouldPrefetch = isVisible && p && (0, _router).isLocalURL(href);\n var curLocale = typeof locale !== \"undefined\" ? locale : router && router.locale;\n var 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 var childProps = {\n ref: setRef,\n onClick: function(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, soft, shallow, scroll, locale, appRouter ? startTransition : undefined);\n }\n },\n onMouseEnter: function(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 var 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 var localeDomain = router && router.isLocaleDomain && (0, _getDomainLocale).getDomainLocale(as, curLocale, router.locales, router.domainLocales);\n childProps.href = localeDomain || (0, _addBasePath).addBasePath((0, _addLocale).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}, \"BtO78wD/8ZHkXeJW04HXE0IXA8Y=\")), \"BtO78wD/8ZHkXeJW04HXE0IXA8Y=\");\n_c1 = Link;\nvar _default = Link;\nexports[\"default\"] = _default;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=link.js.map\nvar _c, _c1;\n$RefreshReg$(_c, \"Link$_react.default.forwardRef\");\n$RefreshReg$(_c1, \"Link\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvbGluay5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7Ozs7OztBQUNiQSw4Q0FBNkM7SUFDekNHLEtBQUssRUFBRSxJQUFJO0NBQ2QsRUFBQyxDQUFDO0FBQ0hELGtCQUFlLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDekIsSUFBSUcsTUFBTSxHQUFHQyxzQkFBc0IsQ0FBQ0MsbUJBQU8sQ0FBQyw2Q0FBTyxDQUFDLENBQUM7QUFDckQsSUFBSUMsT0FBTyxHQUFHRCxtQkFBTyxDQUFDLDBGQUE2QixDQUFDO0FBQ3BELElBQUlFLFVBQVUsR0FBR0YsbUJBQU8sQ0FBQyxvRUFBYyxDQUFDO0FBQ3hDLElBQUlHLGNBQWMsR0FBR0gsbUJBQU8sQ0FBQyw0RkFBOEIsQ0FBQztBQUM1RCxJQUFJSSxpQkFBaUIsR0FBR0osbUJBQU8sQ0FBQyxvR0FBa0MsQ0FBQztBQUNuRSxJQUFJSyxnQkFBZ0IsR0FBR0wsbUJBQU8sQ0FBQyxnRkFBb0IsQ0FBQztBQUNwRCxJQUFJTSxnQkFBZ0IsR0FBR04sbUJBQU8sQ0FBQyxrRkFBcUIsQ0FBQztBQUNyRCxJQUFJTyxZQUFZLEdBQUdQLG1CQUFPLENBQUMsMEVBQWlCLENBQUM7QUFDN0MsU0FBU0Qsc0JBQXNCLENBQUNTLEdBQUcsRUFBRTtJQUNqQyxPQUFPQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBVSxHQUFHRCxHQUFHLEdBQUc7UUFDakNYLE9BQU8sRUFBRVcsR0FBRztLQUNmLENBQUM7Q0FDTDtBQUNELFNBQVNFLDZCQUE2QixDQUFDQyxNQUFNLEVBQUVDLFFBQVEsRUFBRTtJQUNyRCxJQUFJRCxNQUFNLElBQUksSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzlCLElBQUlFLE1BQU0sR0FBRyxFQUFFO0lBQ2YsSUFBSUMsVUFBVSxHQUFHckIsTUFBTSxDQUFDc0IsSUFBSSxDQUFDSixNQUFNLENBQUM7SUFDcEMsSUFBSUssR0FBRyxFQUFFQyxDQUFDO0lBQ1YsSUFB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QyxDQUFDO0lBQ3RFSCxNQUFNLENBQUM0SSxNQUFNLENBQUMxSSxPQUFPLENBQUNFLE9BQU8sRUFBRUYsT0FBTyxDQUFDLENBQUM7SUFDeEM0SSxNQUFNLENBQUM1SSxPQUFPLEdBQUdBLE9BQU8sQ0FBQ0UsT0FBTyxDQUFDO0NBQ2xDLENBRUQsZ0NBQWdDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9saW5rLmpzP2NlNDQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG52YXIgX3JlYWN0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmVhY3RcIikpO1xudmFyIF9yb3V0ZXIgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvcm91dGVyXCIpO1xudmFyIF9hZGRMb2NhbGUgPSByZXF1aXJlKFwiLi9hZGQtbG9jYWxlXCIpO1xudmFyIF9yb3V0ZXJDb250ZXh0ID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyLWNvbnRleHRcIik7XG52YXIgX2FwcFJvdXRlckNvbnRleHQgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHRcIik7XG52YXIgX3VzZUludGVyc2VjdGlvbiA9IHJlcXVpcmUoXCIuL3VzZS1pbnRlcnNlY3Rpb25cIik7XG52YXIgX2dldERvbWFpbkxvY2FsZSA9IHJlcXVpcmUoXCIuL2dldC1kb21haW4tbG9jYWxlXCIpO1xudmFyIF9hZGRCYXNlUGF0aCA9IHJlcXVpcmUoXCIuL2FkZC1iYXNlLXBhdGhcIik7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikge1xuICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgICAgIGRlZmF1bHQ6IG9ialxuICAgIH07XG59XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7XG4gICAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gICAgdmFyIHRhcmdldCA9IHt9O1xuICAgIHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgICB2YXIga2V5LCBpO1xuICAgIGZvcihpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspe1xuICAgICAgICBrZXkgPSBzb3VyY2VLZXlzW2ldO1xuICAgICAgICBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlO1xuICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xufVxuLy8gQHRzLWlnbm9yZSB1c2VUcmFuc2l0aW9uIGV4aXN0XG5jb25zdCBoYXNVc2VUcmFuc2l0aW9uID0gdHlwZW9mIF9yZWFjdC5kZWZhdWx0LnVzZVRyYW5zaXRpb24gIT09ICd1bmRlZmluZWQnO1xuY29uc3QgcHJlZmV0Y2hlZCA9IHt9O1xuZnVuY3Rpb24gcHJlZmV0Y2gocm91dGVyLCBocmVmLCBhcywgb3B0aW9ucykge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCAhcm91dGVyKSByZXR1cm47XG4gICAgaWYgKCEoMCwgX3JvdXRlcikuaXNMb2NhbFVSTChocmVmKSkgcmV0dXJuO1xuICAgIC8vIFByZWZldGNoIHRoZSBKU09OIHBhZ2UgaWYgYXNrZWQgKG9ubHkgaW4gdGhlIGNsaWVudClcbiAgICAvLyBXZSBuZWVkIHRvIGhhbmRsZSBhIHByZWZldGNoIGVycm9yIGhlcmUgc2luY2Ugd2UgbWF5IGJlXG4gICAgLy8gbG9hZGluZyB3aXRoIHByaW9yaXR5IHdoaWNoIGNhbiByZWplY3QgYnV0IHdlIGRvbid0XG4gICAgLy8gd2FudCB0byBmb3JjZSBuYXZpZ2F0aW9uIHNpbmNlIHRoaXMgaXMgb25seSBhIHByZWZldGNoXG4gICAgcm91dGVyLnByZWZldGNoKGhyZWYsIGFzLCBvcHRpb25zKS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgLy8gcmV0aHJvdyB0byBzaG93IGludmFsaWQgVVJMIGVycm9yc1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgY3VyTG9jYWxlID0gb3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucy5sb2NhbGUgIT09ICd1bmRlZmluZWQnID8gb3B0aW9ucy5sb2NhbGUgOiByb3V0ZXIgJiYgcm91dGVyLmxvY2FsZTtcbiAgICAvLyBKb2luIG9uIGFuIGludmFsaWQgVVJJIGNoYXJhY3RlclxuICAgIHByZWZldGNoZWRbaHJlZiArICclJyArIGFzICsgKGN1ckxvY2FsZSA/ICclJyArIGN1ckxvY2FsZSA6ICcnKV0gPSB0cnVlO1xufVxuZnVuY3Rpb24gaXNNb2RpZmllZEV2ZW50KGV2ZW50KSB7XG4gICAgY29uc3QgeyB0YXJnZXQgIH0gPSBldmVudC5jdXJyZW50VGFyZ2V0O1xuICAgIHJldHVybiB0YXJnZXQgJiYgdGFyZ2V0ICE9PSAnX3NlbGYnIHx8IGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleSB8fCBldmVudC5zaGlmdEtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQubmF0aXZlRXZlbnQgJiYgZXZlbnQubmF0aXZlRXZlbnQud2hpY2ggPT09IDI7XG59XG5mdW5jdGlvbiBsaW5rQ2xpY2tlZChlLCByb3V0ZXIsIGhyZWYsIGFzLCByZXBsYWNlLCBzb2Z0LCBzaGFsbG93LCBzY3JvbGwsIGxvY2FsZSwgc3RhcnRUcmFuc2l0aW9uKSB7XG4gICAgY29uc3QgeyBub2RlTmFtZSAgfSA9IGUuY3VycmVudFRhcmdldDtcbiAgICAvLyBhbmNob3JzIGluc2lkZSBhbiBzdmcgaGF2ZSBhIGxvd2VyY2FzZSBub2RlTmFtZVxuICAgIGNvbnN0IGlzQW5jaG9yTm9kZU5hbWUgPSBub2RlTmFtZS50b1VwcGVyQ2FzZSgpID09PSAnQSc7XG4gICAgaWYgKGlzQW5jaG9yTm9kZU5hbWUgJiYgKGlzTW9kaWZpZWRFdmVudChlKSB8fCAhKDAsIF9yb3V0ZXIpLmlzTG9jYWxVUkwoaHJlZikpKSB7XG4gICAgICAgIC8vIGlnbm9yZSBjbGljayBmb3IgYnJvd3NlcuKAmXMgZGVmYXVsdCBiZWhhdmlvclxuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCBuYXZpZ2F0ZSA9ICgpPT57XG4gICAgICAgIC8vIElmIHRoZSByb3V0ZXIgaXMgYW4gQXBwUm91dGVySW5zdGFuY2UsIHRoZW4gaXQnbGwgaGF2ZSBgc29mdFB1c2hgIGFuZFxuICAgICAgICAvLyBgc29mdFJlcGxhY2VgLlxuICAgICAgICBpZiAoJ3NvZnRQdXNoJyBpbiByb3V0ZXIgJiYgJ3NvZnRSZXBsYWNlJyBpbiByb3V0ZXIpIHtcbiAgICAgICAgICAgIC8vIElmIHdlJ3JlIGRvaW5nIGEgc29mdCBuYXZpZ2F0aW9uLCB1c2UgdGhlIHNvZnQgdmFyaWFudHMgb2ZcbiAgICAgICAgICAgIC8vIHJlcGxhY2UvcHVzaC5cbiAgICAgICAgICAgIGNvbnN0IG1ldGhvZCA9IHNvZnQgPyByZXBsYWNlID8gJ3NvZnRSZXBsYWNlJyA6ICdzb2Z0UHVzaCcgOiByZXBsYWNlID8gJ3JlcGxhY2UnIDogJ3B1c2gnO1xuICAgICAgICAgICAgcm91dGVyW21ldGhvZF0oaHJlZik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByb3V0ZXJbcmVwbGFjZSA/ICdyZXBsYWNlJyA6ICdwdXNoJ10oaHJlZiwgYXMsIHtcbiAgICAgICAgICAgICAgICBzaGFsbG93LFxuICAgICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgICBzY3JvbGxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBpZiAoc3RhcnRUcmFuc2l0aW9uKSB7XG4gICAgICAgIHN0YXJ0VHJhbnNpdGlvbihuYXZpZ2F0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbmF2aWdhdGUoKTtcbiAgICB9XG59XG5jb25zdCBMaW5rID0gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIExpbmtDb21wb25lbnQocHJvcHMsIGZvcndhcmRlZFJlZikge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGZ1bmN0aW9uIGNyZWF0ZVByb3BFcnJvcihhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEVycm9yKGBGYWlsZWQgcHJvcCB0eXBlOiBUaGUgcHJvcCBcXGAke2FyZ3Mua2V5fVxcYCBleHBlY3RzIGEgJHthcmdzLmV4cGVjdGVkfSBpbiBcXGA8TGluaz5cXGAsIGJ1dCBnb3QgXFxgJHthcmdzLmFjdHVhbH1cXGAgaW5zdGVhZC5gICsgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gXCJcXG5PcGVuIHlvdXIgYnJvd3NlcidzIGNvbnNvbGUgdG8gdmlldyB0aGUgQ29tcG9uZW50IHN0YWNrIHRyYWNlLlwiIDogJycpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUeXBlU2NyaXB0IHRyaWNrIGZvciB0eXBlLWd1YXJkaW5nOlxuICAgICAgICBjb25zdCByZXF1aXJlZFByb3BzR3VhcmQgPSB7XG4gICAgICAgICAgICBocmVmOiB0cnVlXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHJlcXVpcmVkUHJvcHMgPSBPYmplY3Qua2V5cyhyZXF1aXJlZFByb3BzR3VhcmQpO1xuICAgICAgICByZXF1aXJlZFByb3BzLmZvckVhY2goKGtleSk9PntcbiAgICAgICAgICAgIGlmIChrZXkgPT09ICdocmVmJykge1xuICAgICAgICAgICAgICAgIGlmIChwcm9wc1trZXldID09IG51bGwgfHwgdHlwZW9mIHByb3BzW2tleV0gIT09ICdzdHJpbmcnICYmIHR5cGVvZiBwcm9wc1trZXldICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBjcmVhdGVQcm9wRXJyb3Ioe1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6ICdgc3RyaW5nYCBvciBgb2JqZWN0YCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWw6IHByb3BzW2tleV0gPT09IG51bGwgPyAnbnVsbCcgOiB0eXBlb2YgcHJvcHNba2V5XVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFR5cGVTY3JpcHQgdHJpY2sgZm9yIHR5cGUtZ3VhcmRpbmc6XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAgICAgICAgIGNvbnN0IF8gPSBrZXk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBUeXBlU2NyaXB0IHRyaWNrIGZvciB0eXBlLWd1YXJkaW5nOlxuICAgICAgICBjb25zdCBvcHRpb25hbFByb3BzR3VhcmQgPSB7XG4gICAgICAgICAgICBhczogdHJ1ZSxcbiAgICAgICAgICAgIHJlcGxhY2U6IHRydWUsXG4gICAgICAgICAgICBzb2Z0OiB0cnVlLFxuICAgICAgICAgICAgc2Nyb2xsOiB0cnVlLFxuICAgICAgICAgICAgc2hhbGxvdzogdHJ1ZSxcbiAgICAgICAgICAgIHBhc3NIcmVmOiB0cnVlLFxuICAgICAgICAgICAgcHJlZmV0Y2g6IHRydWUsXG4gICAgICAgICAgICBsb2NhbGU6IHRydWUsXG4gICAgICAgICAgICBvbkNsaWNrOiB0cnVlLFxuICAgICAgICAgICAgb25Nb3VzZUVudGVyOiB0cnVlLFxuICAgICAgICAgICAgbGVnYWN5QmVoYXZpb3I6IHRydWVcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgb3B0aW9uYWxQcm9wcyA9IE9iamVjdC5rZXlzKG9wdGlvbmFsUHJvcHNHdWFyZCk7XG4gICAgICAgIG9wdGlvbmFsUHJvcHMuZm9yRWFjaCgoa2V5KT0+e1xuICAgICAgICAgICAgY29uc3QgdmFsVHlwZSA9IHR5cGVvZiBwcm9wc1trZXldO1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ2FzJykge1xuICAgICAgICAgICAgICAgIGlmIChwcm9wc1trZXldICYmIHZhbFR5cGUgIT09ICdzdHJpbmcnICYmIHZhbFR5cGUgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGNyZWF0ZVByb3BFcnJvcih7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogJ2BzdHJpbmdgIG9yIGBvYmplY3RgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbDogdmFsVHlwZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2xvY2FsZScpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHNba2V5XSAmJiB2YWxUeXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBjcmVhdGVQcm9wRXJyb3Ioe1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6ICdgc3RyaW5nYCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWw6IHZhbFR5cGVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdvbkNsaWNrJyB8fCBrZXkgPT09ICdvbk1vdXNlRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzW2tleV0gJiYgdmFsVHlwZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBjcmVhdGVQcm9wRXJyb3Ioe1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6ICdgZnVuY3Rpb25gJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbDogdmFsVHlwZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ3JlcGxhY2UnIHx8IGtleSA9PT0gJ3NvZnQnIHx8IGtleSA9PT0gJ3Njcm9sbCcgfHwga2V5ID09PSAnc2hhbGxvdycgfHwga2V5ID09PSAncGFzc0hyZWYnIHx8IGtleSA9PT0gJ3ByZWZldGNoJyB8fCBrZXkgPT09ICdsZWdhY3lCZWhhdmlvcicpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHNba2V5XSAhPSBudWxsICYmIHZhbFR5cGUgIT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBjcmVhdGVQcm9wRXJyb3Ioe1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6ICdgYm9vbGVhbmAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsOiB2YWxUeXBlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gVHlwZVNjcmlwdCB0cmljayBmb3IgdHlwZS1ndWFyZGluZzpcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgICAgICAgICAgY29uc3QgXyA9IGtleTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIFRoaXMgaG9vayBpcyBpbiBhIGNvbmRpdGlvbmFsIGJ1dCB0aGF0IGlzIG9rIGJlY2F1c2UgYHByb2Nlc3MuZW52Lk5PREVfRU5WYCBuZXZlciBjaGFuZ2VzXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICAgICAgICBjb25zdCBoYXNXYXJuZWQgPSBfcmVhY3QuZGVmYXVsdC51c2VSZWYoZmFsc2UpO1xuICAgICAgICBpZiAocHJvcHMucHJlZmV0Y2ggJiYgIWhhc1dhcm5lZC5jdXJyZW50KSB7XG4gICAgICAgICAgICBoYXNXYXJuZWQuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ05leHQuanMgYXV0by1wcmVmZXRjaGVzIGF1dG9tYXRpY2FsbHkgYmFzZWQgb24gdmlld3BvcnQuIFRoZSBwcmVmZXRjaCBhdHRyaWJ1dGUgaXMgbm8gbG9uZ2VyIG5lZWRlZC4gTW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvcHJlZmV0Y2gtdHJ1ZS1kZXByZWNhdGVkJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbGV0IGNoaWxkcmVuO1xuICAgIGNvbnN0IHsgaHJlZjogaHJlZlByb3AgLCBhczogYXNQcm9wICwgY2hpbGRyZW46IGNoaWxkcmVuUHJvcCAsIHByZWZldGNoOiBwcmVmZXRjaFByb3AgLCBwYXNzSHJlZiAsIHJlcGxhY2UgLCBzb2Z0ICwgc2hhbGxvdyAsIHNjcm9sbCAsIGxvY2FsZSAsIG9uQ2xpY2sgLCBvbk1vdXNlRW50ZXIgLCBsZWdhY3lCZWhhdmlvciA9Qm9vbGVhbihwcm9jZXNzLmVudi5fX05FWFRfTkVXX0xJTktfQkVIQVZJT1IpICE9PSB0cnVlICB9ID0gcHJvcHMsIHJlc3RQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBbXG4gICAgICAgIFwiaHJlZlwiLFxuICAgICAgICBcImFzXCIsXG4gICAgICAgIFwiY2hpbGRyZW5cIixcbiAgICAgICAgXCJwcmVmZXRjaFwiLFxuICAgICAgICBcInBhc3NIcmVmXCIsXG4gICAgICAgIFwicmVwbGFjZVwiLFxuICAgICAgICBcInNvZnRcIixcbiAgICAgICAgXCJzaGFsbG93XCIsXG4gICAgICAgIFwic2Nyb2xsXCIsXG4gICAgICAgIFwibG9jYWxlXCIsXG4gICAgICAgIFwib25DbGlja1wiLFxuICAgICAgICBcIm9uTW91c2VFbnRlclwiLFxuICAgICAgICBcImxlZ2FjeUJlaGF2aW9yXCJcbiAgICBdKTtcbiAgICBjaGlsZHJlbiA9IGNoaWxkcmVuUHJvcDtcbiAgICBpZiAobGVnYWN5QmVoYXZpb3IgJiYgKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGNoaWxkcmVuID09PSAnbnVtYmVyJykpIHtcbiAgICAgICAgY2hpbGRyZW4gPSAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJhXCIsIG51bGwsIGNoaWxkcmVuKTtcbiAgICB9XG4gICAgY29uc3QgcCA9IHByZWZldGNoUHJvcCAhPT0gZmFsc2U7XG4gICAgY29uc3QgWywgLyogaXNQZW5kaW5nICovIHN0YXJ0VHJhbnNpdGlvbl0gPSBoYXNVc2VUcmFuc2l0aW9uID8gLy8gVGhlcmUgaXMgbm8gZGlmZmVyZW5jZSBiZXR3ZWVuIHJlbmRlcnMgaW4gdGhpcyBjYXNlLCBvbmx5IGJldHdlZW4gdXNpbmcgUmVhY3QgMTggdnMgMTcuXG4gICAgLy8gQHRzLWlnbm9yZSB1c2VUcmFuc2l0aW9uIGV4aXN0c1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICAgIF9yZWFjdC5kZWZhdWx0LnVzZVRyYW5zaXRpb24oKSA6IFtdO1xuICAgIGxldCByb3V0ZXIgPSBfcmVhY3QuZGVmYXVsdC51c2VDb250ZXh0KF9yb3V0ZXJDb250ZXh0LlJvdXRlckNvbnRleHQpO1xuICAgIC8vIFRPRE8tQVBQOiB0eXBlIGVycm9yLiBSZW1vdmUgYGFzIGFueWBcbiAgICBjb25zdCBhcHBSb3V0ZXIgPSBfcmVhY3QuZGVmYXVsdC51c2VDb250ZXh0KF9hcHBSb3V0ZXJDb250ZXh0LkFwcFJvdXRlckNvbnRleHQpO1xuICAgIGlmIChhcHBSb3V0ZXIpIHtcbiAgICAgICAgcm91dGVyID0gYXBwUm91dGVyO1xuICAgIH1cbiAgICBjb25zdCB7IGhyZWYgLCBhcyAgfSA9IF9yZWFjdC5kZWZhdWx0LnVzZU1lbW8oKCk9PntcbiAgICAgICAgY29uc3QgW3Jlc29sdmVkSHJlZiwgcmVzb2x2ZWRBc10gPSAoMCwgX3JvdXRlcikucmVzb2x2ZUhyZWYocm91dGVyLCBocmVmUHJvcCwgdHJ1ZSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBocmVmOiByZXNvbHZlZEhyZWYsXG4gICAgICAgICAgICBhczogYXNQcm9wID8gKDAsIF9yb3V0ZXIpLnJlc29sdmVIcmVmKHJvdXRlciwgYXNQcm9wKSA6IHJlc29sdmVkQXMgfHwgcmVzb2x2ZWRIcmVmXG4gICAgICAgIH07XG4gICAgfSwgW1xuICAgICAgICByb3V0ZXIsXG4gICAgICAgIGhyZWZQcm9wLFxuICAgICAgICBhc1Byb3BcbiAgICBdKTtcbiAgICBjb25zdCBwcmV2aW91c0hyZWYgPSBfcmVhY3QuZGVmYXVsdC51c2VSZWYoaHJlZik7XG4gICAgY29uc3QgcHJldmlvdXNBcyA9IF9yZWFjdC5kZWZhdWx0LnVzZVJlZihhcyk7XG4gICAgLy8gVGhpcyB3aWxsIHJldHVybiB0aGUgZmlyc3QgY2hpbGQsIGlmIG11bHRpcGxlIGFyZSBwcm92aWRlZCBpdCB3aWxsIHRocm93IGFuIGVycm9yXG4gICAgbGV0IGNoaWxkO1xuICAgIGlmIChsZWdhY3lCZWhhdmlvcikge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgICAgIGlmIChvbkNsaWNrKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBcIm9uQ2xpY2tcIiB3YXMgcGFzc2VkIHRvIDxMaW5rPiB3aXRoIFxcYGhyZWZcXGAgb2YgXFxgJHtocmVmUHJvcH1cXGAgYnV0IFwibGVnYWN5QmVoYXZpb3JcIiB3YXMgc2V0LiBUaGUgbGVnYWN5IGJlaGF2aW9yIHJlcXVpcmVzIG9uQ2xpY2sgYmUgc2V0IG9uIHRoZSBjaGlsZCBvZiBuZXh0L2xpbmtgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvbk1vdXNlRW50ZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFwib25Nb3VzZUVudGVyXCIgd2FzIHBhc3NlZCB0byA8TGluaz4gd2l0aCBcXGBocmVmXFxgIG9mIFxcYCR7aHJlZlByb3B9XFxgIGJ1dCBcImxlZ2FjeUJlaGF2aW9yXCIgd2FzIHNldC4gVGhlIGxlZ2FjeSBiZWhhdmlvciByZXF1aXJlcyBvbk1vdXNlRW50ZXIgYmUgc2V0IG9uIHRoZSBjaGlsZCBvZiBuZXh0L2xpbmtgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY2hpbGQgPSBfcmVhY3QuZGVmYXVsdC5DaGlsZHJlbi5vbmx5KGNoaWxkcmVuKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGlmICghY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBjaGlsZHJlbiB3ZXJlIHBhc3NlZCB0byA8TGluaz4gd2l0aCBcXGBocmVmXFxgIG9mIFxcYCR7aHJlZlByb3B9XFxgIGJ1dCBvbmUgY2hpbGQgaXMgcmVxdWlyZWQgaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbGluay1uby1jaGlsZHJlbmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE11bHRpcGxlIGNoaWxkcmVuIHdlcmUgcGFzc2VkIHRvIDxMaW5rPiB3aXRoIFxcYGhyZWZcXGAgb2YgXFxgJHtocmVmUHJvcH1cXGAgYnV0IG9ubHkgb25lIGNoaWxkIGlzIHN1cHBvcnRlZCBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9saW5rLW11bHRpcGxlLWNoaWxkcmVuYCArICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IFwiIFxcbk9wZW4geW91ciBicm93c2VyJ3MgY29uc29sZSB0byB2aWV3IHRoZSBDb21wb25lbnQgc3RhY2sgdHJhY2UuXCIgOiAnJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2hpbGQgPSBfcmVhY3QuZGVmYXVsdC5DaGlsZHJlbi5vbmx5KGNoaWxkcmVuKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBjaGlsZFJlZiA9IGxlZ2FjeUJlaGF2aW9yID8gY2hpbGQgJiYgdHlwZW9mIGNoaWxkID09PSAnb2JqZWN0JyAmJiBjaGlsZC5yZWYgOiBmb3J3YXJkZWRSZWY7XG4gICAgY29uc3QgW3NldEludGVyc2VjdGlvblJlZiwgaXNWaXNpYmxlLCByZXNldFZpc2libGVdID0gKDAsIF91c2VJbnRlcnNlY3Rpb24pLnVzZUludGVyc2VjdGlvbih7XG4gICAgICAgIHJvb3RNYXJnaW46ICcyMDBweCdcbiAgICB9KTtcbiAgICBjb25zdCBzZXRSZWYgPSBfcmVhY3QuZGVmYXVsdC51c2VDYWxsYmFjaygoZWwpPT57XG4gICAgICAgIC8vIEJlZm9yZSB0aGUgbGluayBnZXR0aW5nIG9ic2VydmVkLCBjaGVjayBpZiB2aXNpYmxlIHN0YXRlIG5lZWQgdG8gYmUgcmVzZXRcbiAgICAgICAgaWYgKHByZXZpb3VzQXMuY3VycmVudCAhPT0gYXMgfHwgcHJldmlvdXNIcmVmLmN1cnJlbnQgIT09IGhyZWYpIHtcbiAgICAgICAgICAgIHJlc2V0VmlzaWJsZSgpO1xuICAgICAgICAgICAgcHJldmlvdXNBcy5jdXJyZW50ID0gYXM7XG4gICAgICAgICAgICBwcmV2aW91c0hyZWYuY3VycmVudCA9IGhyZWY7XG4gICAgICAgIH1cbiAgICAgICAgc2V0SW50ZXJzZWN0aW9uUmVmKGVsKTtcbiAgICAgICAgaWYgKGNoaWxkUmVmKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNoaWxkUmVmID09PSAnZnVuY3Rpb24nKSBjaGlsZFJlZihlbCk7XG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgY2hpbGRSZWYgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgY2hpbGRSZWYuY3VycmVudCA9IGVsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBhcyxcbiAgICAgICAgY2hpbGRSZWYsXG4gICAgICAgIGhyZWYsXG4gICAgICAgIHJlc2V0VmlzaWJsZSxcbiAgICAgICAgc2V0SW50ZXJzZWN0aW9uUmVmXG4gICAgXSk7XG4gICAgX3JlYWN0LmRlZmF1bHQudXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IHNob3VsZFByZWZldGNoID0gaXNWaXNpYmxlICYmIHAgJiYgKDAsIF9yb3V0ZXIpLmlzTG9jYWxVUkwoaHJlZik7XG4gICAgICAgIGNvbnN0IGN1ckxvY2FsZSA9IHR5cGVvZiBsb2NhbGUgIT09ICd1bmRlZmluZWQnID8gbG9jYWxlIDogcm91dGVyICYmIHJvdXRlci5sb2NhbGU7XG4gICAgICAgIGNvbnN0IGlzUHJlZmV0Y2hlZCA9IHByZWZldGNoZWRbaHJlZiArICclJyArIGFzICsgKGN1ckxvY2FsZSA/ICclJyArIGN1ckxvY2FsZSA6ICcnKV07XG4gICAgICAgIGlmIChzaG91bGRQcmVmZXRjaCAmJiAhaXNQcmVmZXRjaGVkKSB7XG4gICAgICAgICAgICBwcmVmZXRjaChyb3V0ZXIsIGhyZWYsIGFzLCB7XG4gICAgICAgICAgICAgICAgbG9jYWxlOiBjdXJMb2NhbGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBhcyxcbiAgICAgICAgaHJlZixcbiAgICAgICAgaXNWaXNpYmxlLFxuICAgICAgICBsb2NhbGUsXG4gICAgICAgIHAsXG4gICAgICAgIHJvdXRlclxuICAgIF0pO1xuICAgIGNvbnN0IGNoaWxkUHJvcHMgPSB7XG4gICAgICAgIHJlZjogc2V0UmVmLFxuICAgICAgICBvbkNsaWNrOiAoZSk9PntcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcG9uZW50IHJlbmRlcmVkIGluc2lkZSBuZXh0L2xpbmsgaGFzIHRvIHBhc3MgY2xpY2sgZXZlbnQgdG8gXCJvbkNsaWNrXCIgcHJvcC5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWxlZ2FjeUJlaGF2aW9yICYmIHR5cGVvZiBvbkNsaWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgb25DbGljayhlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsZWdhY3lCZWhhdmlvciAmJiBjaGlsZC5wcm9wcyAmJiB0eXBlb2YgY2hpbGQucHJvcHMub25DbGljayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGNoaWxkLnByb3BzLm9uQ2xpY2soZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWUuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgIGxpbmtDbGlja2VkKGUsIHJvdXRlciwgaHJlZiwgYXMsIHJlcGxhY2UsIHNvZnQsIHNoYWxsb3csIHNjcm9sbCwgbG9jYWxlLCBhcHBSb3V0ZXIgPyBzdGFydFRyYW5zaXRpb24gOiB1bmRlZmluZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBvbk1vdXNlRW50ZXI6IChlKT0+e1xuICAgICAgICAgICAgaWYgKCFsZWdhY3lCZWhhdmlvciAmJiB0eXBlb2Ygb25Nb3VzZUVudGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxlZ2FjeUJlaGF2aW9yICYmIGNoaWxkLnByb3BzICYmIHR5cGVvZiBjaGlsZC5wcm9wcy5vbk1vdXNlRW50ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjaGlsZC5wcm9wcy5vbk1vdXNlRW50ZXIoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKDAsIF9yb3V0ZXIpLmlzTG9jYWxVUkwoaHJlZikpIHtcbiAgICAgICAgICAgICAgICBwcmVmZXRjaChyb3V0ZXIsIGhyZWYsIGFzLCB7XG4gICAgICAgICAgICAgICAgICAgIHByaW9yaXR5OiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIElmIGNoaWxkIGlzIGFuIDxhPiB0YWcgYW5kIGRvZXNuJ3QgaGF2ZSBhIGhyZWYgYXR0cmlidXRlLCBvciBpZiB0aGUgJ3Bhc3NIcmVmJyBwcm9wZXJ0eSBpc1xuICAgIC8vIGRlZmluZWQsIHdlIHNwZWNpZnkgdGhlIGN1cnJlbnQgJ2hyZWYnLCBzbyB0aGF0IHJlcGV0aXRpb24gaXMgbm90IG5lZWRlZCBieSB0aGUgdXNlclxuICAgIGlmICghbGVnYWN5QmVoYXZpb3IgfHwgcGFzc0hyZWYgfHwgY2hpbGQudHlwZSA9PT0gJ2EnICYmICEoJ2hyZWYnIGluIGNoaWxkLnByb3BzKSkge1xuICAgICAgICBjb25zdCBjdXJMb2NhbGUgPSB0eXBlb2YgbG9jYWxlICE9PSAndW5kZWZpbmVkJyA/IGxvY2FsZSA6IHJvdXRlciAmJiByb3V0ZXIubG9jYWxlO1xuICAgICAgICAvLyB3ZSBvbmx5IHJlbmRlciBkb21haW4gbG9jYWxlcyBpZiB3ZSBhcmUgY3VycmVudGx5IG9uIGEgZG9tYWluIGxvY2FsZVxuICAgICAgICAvLyBzbyB0aGF0IGxvY2FsZSBsaW5rcyBhcmUgc3RpbGwgdmlzaXRhYmxlIGluIGRldmVsb3BtZW50L3ByZXZpZXcgZW52c1xuICAgICAgICBjb25zdCBsb2NhbGVEb21haW4gPSByb3V0ZXIgJiYgcm91dGVyLmlzTG9jYWxlRG9tYWluICYmICgwLCBfZ2V0RG9tYWluTG9jYWxlKS5nZXREb21haW5Mb2NhbGUoYXMsIGN1ckxvY2FsZSwgcm91dGVyLmxvY2FsZXMsIHJvdXRlci5kb21haW5Mb2NhbGVzKTtcbiAgICAgICAgY2hpbGRQcm9wcy5ocmVmID0gbG9jYWxlRG9tYWluIHx8ICgwLCBfYWRkQmFzZVBhdGgpLmFkZEJhc2VQYXRoKCgwLCBfYWRkTG9jYWxlKS5hZGRMb2NhbGUoYXMsIGN1ckxvY2FsZSwgcm91dGVyICYmIHJvdXRlci5kZWZhdWx0TG9jYWxlKSk7XG4gICAgfVxuICAgIHJldHVybiBsZWdhY3lCZWhhdmlvciA/IC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY2xvbmVFbGVtZW50KGNoaWxkLCBjaGlsZFByb3BzKSA6IC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImFcIiwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdFByb3BzLCBjaGlsZFByb3BzKSwgY2hpbGRyZW4pO1xufSk7XG52YXIgX2RlZmF1bHQgPSBMaW5rO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxpbmsuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZGVmYXVsdCIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3JvdXRlciIsIl9hZGRMb2NhbGUiLCJfcm91dGVyQ29udGV4dCIsIl9hcHBSb3V0ZXJDb250ZXh0IiwiX3VzZUludGVyc2VjdGlvbiIsIl9nZXREb21haW5Mb2NhbGUiLCJfYWRkQmFzZVBhdGgiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJzb3VyY2UiLCJleGNsdWRlZCIsInRhcmdldCIsInNvdXJjZUtleXMiLCJrZXlzIiwia2V5IiwiaSIsImxlbmd0aCIsImluZGV4T2YiLCJoYXNVc2VUcmFuc2l0aW9uIiwidXNlVHJhbnNpdGlvbiIsInByZWZldGNoZWQiLCJwcmVmZXRjaCIsInJvdXRlciIsImhyZWYiLCJhcyIsIm9wdGlvbnMiLCJpc0xvY2FsVVJMIiwiY2F0Y2giLCJlcnIiLCJwcm9jZXNzIiwiY3VyTG9jYWxlIiwibG9jYWxlIiwiaXNNb2RpZmllZEV2ZW50IiwiZXZlbnQiLCJjdXJyZW50VGFyZ2V0IiwibWV0YUtleSIsImN0cmxLZXkiLCJzaGlmdEtleSIsImFsdEtleSIsIm5hdGl2ZUV2ZW50Iiwid2hpY2giLCJsaW5rQ2xpY2tlZCIsImUiLCJyZXBsYWNlIiwic29mdCIsInNoYWxsb3ciLCJzY3JvbGwiLCJzdGFydFRyYW5zaXRpb24iLCJub2RlTmFtZSIsImlzQW5jaG9yTm9kZU5hbWUiLCJ0b1VwcGVyQ2FzZSIsInByZXZlbnREZWZhdWx0IiwibmF2aWdhdGUiLCJtZXRob2QiLCJMaW5rIiwiZm9yd2FyZFJlZiIsIkxpbmtDb21wb25lbnQiLCJwcm9wcyIsImZvcndhcmRlZFJlZiIsImNyZWF0ZVByb3BFcnJvciIsImFyZ3MiLCJFcnJvciIsImV4cGVjdGVkIiwiYWN0dWFsIiwicmVxdWlyZWRQcm9wc0d1YXJkIiwicmVxdWlyZWRQcm9wcyIsImZvckVhY2giLCJfIiwib3B0aW9uYWxQcm9wc0d1YXJkIiwicGFzc0hyZWYiLCJvbkNsaWNrIiwib25Nb3VzZUVudGVyIiwibGVnYWN5QmVoYXZpb3IiLCJvcHRpb25hbFByb3BzIiwidmFsVHlwZSIsImhhc1dhcm5lZCIsInVzZVJlZiIsImN1cnJlbnQiLCJjb25zb2xlIiwid2FybiIsImNoaWxkcmVuIiwiaHJlZlByb3AiLCJhc1Byb3AiLCJjaGlsZHJlblByb3AiLCJwcmVmZXRjaFByb3AiLCJCb29sZWFuIiwiZW52IiwiX19ORVhUX05FV19MSU5LX0JFSEFWSU9SIiwicmVzdFByb3BzIiwiY3JlYXRlRWxlbWVudCIsInAiLCJ1c2VDb250ZXh0IiwiUm91dGVyQ29udGV4dCIsImFwcFJvdXRlciIsIkFwcFJvdXRlckNvbnRleHQiLCJ1c2VNZW1vIiwicmVzb2x2ZUhyZWYiLCJyZXNvbHZlZEhyZWYiLCJyZXNvbHZlZEFzIiwicHJldmlvdXNIcmVmIiwicHJldmlvdXNBcyIsImNoaWxkIiwiQ2hpbGRyZW4iLCJvbmx5IiwiY2hpbGRSZWYiLCJyZWYiLCJ1c2VJbnRlcnNlY3Rpb24iLCJyb290TWFyZ2luIiwic2V0SW50ZXJzZWN0aW9uUmVmIiwiaXNWaXNpYmxlIiwicmVzZXRWaXNpYmxlIiwic2V0UmVmIiwidXNlQ2FsbGJhY2siLCJlbCIsInVzZUVmZmVjdCIsInNob3VsZFByZWZldGNoIiwiaXNQcmVmZXRjaGVkIiwiY2hpbGRQcm9wcyIsImRlZmF1bHRQcmV2ZW50ZWQiLCJ1bmRlZmluZWQiLCJwcmlvcml0eSIsInR5cGUiLCJsb2NhbGVEb21haW4iLCJpc0xvY2FsZURvbWFpbiIsImdldERvbWFpbkxvY2FsZSIsImxvY2FsZXMiLCJkb21haW5Mb2NhbGVzIiwiYWRkQmFzZVBhdGgiLCJhZGRMb2NhbGUiLCJkZWZhdWx0TG9jYWxlIiwiY2xvbmVFbGVtZW50IiwiYXNzaWduIiwiX2RlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../node_modules/next/dist/client/link.js\n"));
-
-/***/ }),
-
-/***/ "../node_modules/next/dist/client/use-intersection.js":
-/*!************************************************************!*\
- !*** ../node_modules/next/dist/client/use-intersection.js ***!
- \************************************************************/
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar _slicedToArray = (__webpack_require__(/*! @swc/helpers/lib/_sliced_to_array.js */ \"../node_modules/@swc/helpers/lib/_sliced_to_array.js\")[\"default\"]);\nvar _s = $RefreshSig$();\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.useIntersection = useIntersection;\nvar _react = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\nvar _requestIdleCallback = __webpack_require__(/*! ./request-idle-callback */ \"../node_modules/next/dist/client/request-idle-callback.js\");\nvar hasIntersectionObserver = typeof IntersectionObserver === \"function\";\nfunction useIntersection(param) {\n var rootRef = param.rootRef, rootMargin = param.rootMargin, disabled = param.disabled;\n _s();\n var isDisabled = disabled || !hasIntersectionObserver;\n var unobserve = (0, _react).useRef();\n var ref = _slicedToArray((0, _react).useState(false), 2), visible = ref[0], setVisible = ref[1];\n var ref1 = _slicedToArray((0, _react).useState(null), 2), element = ref1[0], setElement = ref1[1];\n (0, _react).useEffect(function() {\n if (hasIntersectionObserver) {\n if (unobserve.current) {\n unobserve.current();\n unobserve.current = undefined;\n }\n if (isDisabled || visible) return;\n if (element && element.tagName) {\n unobserve.current = observe(element, function(isVisible) {\n return isVisible && setVisible(isVisible);\n }, {\n root: rootRef == null ? void 0 : rootRef.current,\n rootMargin: rootMargin\n });\n }\n return function() {\n unobserve.current == null ? void 0 : unobserve.current();\n unobserve.current = undefined;\n };\n } else {\n if (!visible) {\n var idleCallback = (0, _requestIdleCallback).requestIdleCallback(function() {\n return setVisible(true);\n });\n return function() {\n return (0, _requestIdleCallback).cancelIdleCallback(idleCallback);\n };\n }\n }\n }, [\n element,\n isDisabled,\n rootMargin,\n rootRef,\n visible\n ]);\n var resetVisible = (0, _react).useCallback(function() {\n setVisible(false);\n }, []);\n return [\n setElement,\n visible,\n resetVisible\n ];\n}\n_s(useIntersection, \"Ftx7DdZ+Ab721MTRqq19v5g/6/E=\");\nfunction observe(element, callback, options) {\n var ref = createObserver(options), id = ref.id, observer = ref.observer, elements = ref.elements;\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 var index = idList.findIndex(function(obj) {\n return obj.root === id.root && obj.margin === id.margin;\n });\n if (index > -1) {\n idList.splice(index, 1);\n }\n }\n };\n}\nvar observers = new Map();\nvar idList = [];\nfunction createObserver(options) {\n var id = {\n root: options.root || null,\n margin: options.rootMargin || \"\"\n };\n var existing = idList.find(function(obj) {\n return obj.root === id.root && obj.margin === id.margin;\n });\n var instance;\n if (existing) {\n instance = observers.get(existing);\n if (instance) {\n return instance;\n }\n }\n var elements = new Map();\n var observer = new IntersectionObserver(function(entries) {\n entries.forEach(function(entry) {\n var callback = elements.get(entry.target);\n var isVisible = entry.isIntersecting || entry.intersectionRatio > 0;\n if (callback && isVisible) {\n callback(isVisible);\n }\n });\n }, options);\n instance = {\n id: id,\n observer: observer,\n elements: elements\n };\n idList.push(id);\n observers.set(id, instance);\n return instance;\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=use-intersection.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvdXNlLWludGVyc2VjdGlvbi5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7Ozs7O0FBQ2JBLDhDQUE2QztJQUN6Q0csS0FBSyxFQUFFLElBQUk7Q0FDZCxFQUFDLENBQUM7QUFDSEQsdUJBQXVCLEdBQUdFLGVBQWUsQ0FBQztBQUMxQyxJQUFJQyxNQUFNLEdBQUdDLG1CQUFPLENBQUMsNkNBQU8sQ0FBQztBQUM3QixJQUFJQyxvQkFBb0IsR0FBR0QsbUJBQU8sQ0FBQywwRkFBeUIsQ0FBQztBQUM3RCxJQUFNRSx1QkFBdUIsR0FBRyxPQUFPQyxvQkFBb0IsS0FBSyxVQUFVO0FBQzFFLFNBQVNMLGVBQWUsQ0FBQyxLQUFvQyxFQUFFO1FBQXBDTSxPQUFPLEdBQVQsS0FBb0MsQ0FBbENBLE9BQU8sRUFBR0MsVUFBVSxHQUF0QixLQUFvQyxDQUF4QkEsVUFBVSxFQUFHQyxRQUFRLEdBQWpDLEtBQW9DLENBQVhBLFFBQVE7O0lBQ3RELElBQU1DLFVBQVUsR0FBR0QsUUFBUSxJQUFJLENBQUNKLHVCQUF1QjtJQUN2RCxJQUFNTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUVULE1BQU0sQ0FBQyxDQUFDVSxNQUFNLEVBQUU7SUFDdEMsSUFBOEIsR0FBMkIsa0JBQTNCLENBQUMsQ0FBQyxFQUFFVixNQUFNLENBQUMsQ0FBQ1csUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFsREMsT0FBTyxHQUFnQixHQUEyQixHQUEzQyxFQUFFQyxVQUFVLEdBQUksR0FBMkIsR0FBL0I7SUFDMUIsSUFBOEIsSUFBMEIsa0JBQTFCLENBQUMsQ0FBQyxFQUFFYixNQUFNLENBQUMsQ0FBQ1csUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFqREcsT0FBTyxHQUFnQixJQUEwQixHQUExQyxFQUFFQyxVQUFVLEdBQUksSUFBMEIsR0FBOUI7SUFDMUIsQ0FBQyxDQUFDLEVBQUVmLE1BQU0sQ0FBQyxDQUFDZ0IsU0FBUyxDQUFDLFdBQUk7UUFDdEIsSUFB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LElBQUlGLEtBQUssQ0FBQ0csaUJBQWlCLEdBQUcsQ0FBQztZQUNyRSxJQUFJM0IsUUFBUSxJQUFJUCxTQUFTLEVBQUU7Z0JBQ3ZCTyxRQUFRLENBQUNQLFNBQVMsQ0FBQyxDQUFDO2FBQ3ZCO1NBQ0osQ0FBQyxDQUFDO0tBQ04sRUFBRVEsT0FBTyxDQUFDO0lBQ1htQixRQUFRLEdBQUc7UUFDUGpCLEVBQUUsRUFBRkEsRUFBRTtRQUNGQyxRQUFRLEVBQVJBLFFBQVE7UUFDUkMsUUFBUSxFQUFSQSxRQUFRO0tBQ1gsQ0FBQztJQUNGTyxNQUFNLENBQUNnQixJQUFJLENBQUN6QixFQUFFLENBQUMsQ0FBQztJQUNoQk8sU0FBUyxDQUFDSixHQUFHLENBQUNILEVBQUUsRUFBRWlCLFFBQVEsQ0FBQyxDQUFDO0lBQzVCLE9BQU9BLFFBQVEsQ0FBQztDQUNuQjtBQUVELElBQUksQ0FBQyxPQUFPbkQsT0FBTyxDQUFDNEQsT0FBTyxLQUFLLFVBQVUsSUFBSyxPQUFPNUQsT0FBTyxDQUFDNEQsT0FBTyxLQUFLLFFBQVEsSUFBSTVELE9BQU8sQ0FBQzRELE9BQU8sS0FBSyxJQUFJLENBQUUsSUFBSSxPQUFPNUQsT0FBTyxDQUFDNEQsT0FBTyxDQUFDQyxVQUFVLEtBQUssV0FBVyxFQUFFO0lBQ3JLL0QsTUFBTSxDQUFDQyxjQUFjLENBQUNDLE9BQU8sQ0FBQzRELE9BQU8sRUFBRSxZQUFZLEVBQUU7UUFBRTNELEtBQUssRUFBRSxJQUFJO0tBQUUsQ0FBQyxDQUFDO0lBQ3RFSCxNQUFNLENBQUNnRSxNQUFNLENBQUM5RCxPQUFPLENBQUM0RCxPQUFPLEVBQUU1RCxPQUFPLENBQUMsQ0FBQztJQUN4QytELE1BQU0sQ0FBQy9ELE9BQU8sR0FBR0EsT0FBTyxDQUFDNEQsT0FBTyxDQUFDO0NBQ2xDLENBRUQsNENBQTRDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC91c2UtaW50ZXJzZWN0aW9uLmpzPzdiMjUiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLnVzZUludGVyc2VjdGlvbiA9IHVzZUludGVyc2VjdGlvbjtcbnZhciBfcmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG52YXIgX3JlcXVlc3RJZGxlQ2FsbGJhY2sgPSByZXF1aXJlKFwiLi9yZXF1ZXN0LWlkbGUtY2FsbGJhY2tcIik7XG5jb25zdCBoYXNJbnRlcnNlY3Rpb25PYnNlcnZlciA9IHR5cGVvZiBJbnRlcnNlY3Rpb25PYnNlcnZlciA9PT0gJ2Z1bmN0aW9uJztcbmZ1bmN0aW9uIHVzZUludGVyc2VjdGlvbih7IHJvb3RSZWYgLCByb290TWFyZ2luICwgZGlzYWJsZWQgIH0pIHtcbiAgICBjb25zdCBpc0Rpc2FibGVkID0gZGlzYWJsZWQgfHwgIWhhc0ludGVyc2VjdGlvbk9ic2VydmVyO1xuICAgIGNvbnN0IHVub2JzZXJ2ZSA9ICgwLCBfcmVhY3QpLnVzZVJlZigpO1xuICAgIGNvbnN0IFt2aXNpYmxlLCBzZXRWaXNpYmxlXSA9ICgwLCBfcmVhY3QpLnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbZWxlbWVudCwgc2V0RWxlbWVudF0gPSAoMCwgX3JlYWN0KS51c2VTdGF0ZShudWxsKTtcbiAgICAoMCwgX3JlYWN0KS51c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKGhhc0ludGVyc2VjdGlvbk9ic2VydmVyKSB7XG4gICAgICAgICAgICBpZiAodW5vYnNlcnZlLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICB1bm9ic2VydmUuY3VycmVudCgpO1xuICAgICAgICAgICAgICAgIHVub2JzZXJ2ZS5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzRGlzYWJsZWQgfHwgdmlzaWJsZSkgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC50YWdOYW1lKSB7XG4gICAgICAgICAgICAgICAgdW5vYnNlcnZlLmN1cnJlbnQgPSBvYnNlcnZlKGVsZW1lbnQsIChpc1Zpc2libGUpPT5pc1Zpc2libGUgJiYgc2V0VmlzaWJsZShpc1Zpc2libGUpLCB7XG4gICAgICAgICAgICAgICAgICAgIHJvb3Q6IHJvb3RSZWYgPT0gbnVsbCA/IHZvaWQgMCA6IHJvb3RSZWYuY3VycmVudCxcbiAgICAgICAgICAgICAgICAgICAgcm9vdE1hcmdpblxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICAgICAgdW5vYnNlcnZlLmN1cnJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHVub2JzZXJ2ZS5jdXJyZW50KCk7XG4gICAgICAgICAgICAgICAgdW5vYnNlcnZlLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCF2aXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWRsZUNhbGxiYWNrID0gKDAsIF9yZXF1ZXN0SWRsZUNhbGxiYWNrKS5yZXF1ZXN0SWRsZUNhbGxiYWNrKCgpPT5zZXRWaXNpYmxlKHRydWUpKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKCk9PigwLCBfcmVxdWVzdElkbGVDYWxsYmFjaykuY2FuY2VsSWRsZUNhbGxiYWNrKGlkbGVDYWxsYmFjayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGVsZW1lbnQsXG4gICAgICAgIGlzRGlzYWJsZWQsXG4gICAgICAgIHJvb3RNYXJnaW4sXG4gICAgICAgIHJvb3RSZWYsXG4gICAgICAgIHZpc2libGVcbiAgICBdKTtcbiAgICBjb25zdCByZXNldFZpc2libGUgPSAoMCwgX3JlYWN0KS51c2VDYWxsYmFjaygoKT0+e1xuICAgICAgICBzZXRWaXNpYmxlKGZhbHNlKTtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgc2V0RWxlbWVudCxcbiAgICAgICAgdmlzaWJsZSxcbiAgICAgICAgcmVzZXRWaXNpYmxlXG4gICAgXTtcbn1cbmZ1bmN0aW9uIG9ic2VydmUoZWxlbWVudCwgY2FsbGJhY2ssIG9wdGlvbnMpIHtcbiAgICBjb25zdCB7IGlkICwgb2JzZXJ2ZXIgLCBlbGVtZW50cyAgfSA9IGNyZWF0ZU9ic2VydmVyKG9wdGlvbnMpO1xuICAgIGVsZW1lbnRzLnNldChlbGVtZW50LCBjYWxsYmFjayk7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50KTtcbiAgICByZXR1cm4gZnVuY3Rpb24gdW5vYnNlcnZlKCkge1xuICAgICAgICBlbGVtZW50cy5kZWxldGUoZWxlbWVudCk7XG4gICAgICAgIG9ic2VydmVyLnVub2JzZXJ2ZShlbGVtZW50KTtcbiAgICAgICAgLy8gRGVzdHJveSBvYnNlcnZlciB3aGVuIHRoZXJlJ3Mgbm90aGluZyBsZWZ0IHRvIHdhdGNoOlxuICAgICAgICBpZiAoZWxlbWVudHMuc2l6ZSA9PT0gMCkge1xuICAgICAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgb2JzZXJ2ZXJzLmRlbGV0ZShpZCk7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IGlkTGlzdC5maW5kSW5kZXgoKG9iaik9Pm9iai5yb290ID09PSBpZC5yb290ICYmIG9iai5tYXJnaW4gPT09IGlkLm1hcmdpbik7XG4gICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIGlkTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbn1cbmNvbnN0IG9ic2VydmVycyA9IG5ldyBNYXAoKTtcbmNvbnN0IGlkTGlzdCA9IFtdO1xuZnVuY3Rpb24gY3JlYXRlT2JzZXJ2ZXIob3B0aW9ucykge1xuICAgIGNvbnN0IGlkID0ge1xuICAgICAgICByb290OiBvcHRpb25zLnJvb3QgfHwgbnVsbCxcbiAgICAgICAgbWFyZ2luOiBvcHRpb25zLnJvb3RNYXJnaW4gfHwgJydcbiAgICB9O1xuICAgIGNvbnN0IGV4aXN0aW5nID0gaWRMaXN0LmZpbmQoKG9iaik9Pm9iai5yb290ID09PSBpZC5yb290ICYmIG9iai5tYXJnaW4gPT09IGlkLm1hcmdpbik7XG4gICAgbGV0IGluc3RhbmNlO1xuICAgIGlmIChleGlzdGluZykge1xuICAgICAgICBpbnN0YW5jZSA9IG9ic2VydmVycy5nZXQoZXhpc3RpbmcpO1xuICAgICAgICBpZiAoaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBlbGVtZW50cyA9IG5ldyBNYXAoKTtcbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcyk9PntcbiAgICAgICAgZW50cmllcy5mb3JFYWNoKChlbnRyeSk9PntcbiAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrID0gZWxlbWVudHMuZ2V0KGVudHJ5LnRhcmdldCk7XG4gICAgICAgICAgICBjb25zdCBpc1Zpc2libGUgPSBlbnRyeS5pc0ludGVyc2VjdGluZyB8fCBlbnRyeS5pbnRlcnNlY3Rpb25SYXRpbyA+IDA7XG4gICAgICAgICAgICBpZiAoY2FsbGJhY2sgJiYgaXNWaXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soaXNWaXNpYmxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSwgb3B0aW9ucyk7XG4gICAgaW5zdGFuY2UgPSB7XG4gICAgICAgIGlkLFxuICAgICAgICBvYnNlcnZlcixcbiAgICAgICAgZWxlbWVudHNcbiAgICB9O1xuICAgIGlkTGlzdC5wdXNoKGlkKTtcbiAgICBvYnNlcnZlcnMuc2V0KGlkLCBpbnN0YW5jZSk7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD11c2UtaW50ZXJzZWN0aW9uLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsInVzZUludGVyc2VjdGlvbiIsIl9yZWFjdCIsInJlcXVpcmUiLCJfcmVxdWVzdElkbGVDYWxsYmFjayIsImhhc0ludGVyc2VjdGlvbk9ic2VydmVyIiwiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLCJyb290UmVmIiwicm9vdE1hcmdpbiIsImRpc2FibGVkIiwiaXNEaXNhYmxlZCIsInVub2JzZXJ2ZSIsInVzZVJlZiIsInVzZVN0YXRlIiwidmlzaWJsZSIsInNldFZpc2libGUiLCJlbGVtZW50Iiwic2V0RWxlbWVudCIsInVzZUVmZmVjdCIsImN1cnJlbnQiLCJ1bmRlZmluZWQiLCJ0YWdOYW1lIiwib2JzZXJ2ZSIsImlzVmlzaWJsZSIsInJvb3QiLCJpZGxlQ2FsbGJhY2siLCJyZXF1ZXN0SWRsZUNhbGxiYWNrIiwiY2FuY2VsSWRsZUNhbGxiYWNrIiwicmVzZXRWaXNpYmxlIiwidXNlQ2FsbGJhY2siLCJjYWxsYmFjayIsIm9wdGlvbnMiLCJjcmVhdGVPYnNlcnZlciIsImlkIiwib2JzZXJ2ZXIiLCJlbGVtZW50cyIsInNldCIsImRlbGV0ZSIsInNpemUiLCJkaXNjb25uZWN0Iiwib2JzZXJ2ZXJzIiwiaW5kZXgiLCJpZExpc3QiLCJmaW5kSW5kZXgiLCJvYmoiLCJtYXJnaW4iLCJzcGxpY2UiLCJNYXAiLCJleGlzdGluZyIsImZpbmQiLCJpbnN0YW5jZSIsImdldCIsImVudHJpZXMiLCJmb3JFYWNoIiwiZW50cnkiLCJ0YXJnZXQiLCJpc0ludGVyc2VjdGluZyIsImludGVyc2VjdGlvblJhdGlvIiwicHVzaCIsImRlZmF1bHQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../node_modules/next/dist/client/use-intersection.js\n"));
-
-/***/ }),
-
-/***/ "../node_modules/next/dist/shared/lib/app-router-context.js":
-/*!******************************************************************!*\
- !*** ../node_modules/next/dist/shared/lib/app-router-context.js ***!
- \******************************************************************/
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.FullAppTreeContext = exports.AppTreeContext = exports.AppRouterContext = void 0;\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"../node_modules/react/index.js\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nvar AppRouterContext = _react.default.createContext(null);\nexports.AppRouterContext = AppRouterContext;\nvar AppTreeContext = _react.default.createContext(null);\nexports.AppTreeContext = AppTreeContext;\nvar FullAppTreeContext = _react.default.createContext(null);\nexports.FullAppTreeContext = FullAppTreeContext;\nif (true) {\n AppRouterContext.displayName = \"AppRouterContext\";\n AppTreeContext.displayName = \"AppTreeContext\";\n FullAppTreeContext.displayName = \"FullAppTreeContext\";\n} //# sourceMappingURL=app-router-context.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLEtBQUssRUFBRSxJQUFJO0NBQ2QsRUFBQyxDQUFDO0FBQ0hELDBCQUEwQixHQUFHQSxzQkFBc0IsR0FBR0Esd0JBQXdCLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDeEYsSUFBSUssTUFBTSxHQUFHQyxzQkFBc0IsQ0FBQ0MsbUJBQU8sQ0FBQyw2Q0FBTyxDQUFDLENBQUM7QUFDckQsU0FBU0Qsc0JBQXNCLENBQUNFLEdBQUcsRUFBRTtJQUNqQyxPQUFPQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBVSxHQUFHRCxHQUFHLEdBQUc7UUFDakNFLE9BQU8sRUFBRUYsR0FBRztLQUNmLENBQUM7Q0FDTDtBQUNELElBQU1KLGdCQUFnQixHQUFHQyxNQUFNLENBQUNLLE9BQU8sQ0FBQ0MsYUFBYSxDQUFDLElBQUksQ0FBQztBQUMzRFgsd0JBQXdCLEdBQUdJLGdCQUFnQixDQUFDO0FBQzVDLElBQU1ELGNBQWMsR0FBR0UsTUFBTSxDQUFDSyxPQUFPLENBQUNDLGFBQWEsQ0FBQyxJQUFJLENBQUM7QUFDekRYLHNCQUFzQixHQUFHRyxjQUFjLENBQUM7QUFDeEMsSUFBTUQsa0JBQWtCLEdBQUdHLE1BQU0sQ0FBQ0ssT0FBTyxDQUFDQyxhQUFhLENBQUMsSUFBSSxDQUFDO0FBQzdEWCwwQkFBMEIsR0FBR0Usa0JBQWtCLENBQUM7QUFDaEQsSUFBSVUsSUFBcUMsRUFBRTtJQUN2Q1IsZ0JBQWdCLENBQUNTLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQztJQUNsRFYsY0FBYyxDQUFDVSxXQUFXLEdBQUcsZ0JBQWdCLENBQUM7SUFDOUNYLGtCQUFrQixDQUFDVyxXQUFXLEdBQUcsb0JBQW9CLENBQUM7Q0FDekQsQ0FFRCw4Q0FBOEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuanM/NjIxOCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuRnVsbEFwcFRyZWVDb250ZXh0ID0gZXhwb3J0cy5BcHBUcmVlQ29udGV4dCA9IGV4cG9ydHMuQXBwUm91dGVyQ29udGV4dCA9IHZvaWQgMDtcbnZhciBfcmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikge1xuICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgICAgIGRlZmF1bHQ6IG9ialxuICAgIH07XG59XG5jb25zdCBBcHBSb3V0ZXJDb250ZXh0ID0gX3JlYWN0LmRlZmF1bHQuY3JlYXRlQ29udGV4dChudWxsKTtcbmV4cG9ydHMuQXBwUm91dGVyQ29udGV4dCA9IEFwcFJvdXRlckNvbnRleHQ7XG5jb25zdCBBcHBUcmVlQ29udGV4dCA9IF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5leHBvcnRzLkFwcFRyZWVDb250ZXh0ID0gQXBwVHJlZUNvbnRleHQ7XG5jb25zdCBGdWxsQXBwVHJlZUNvbnRleHQgPSBfcmVhY3QuZGVmYXVsdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuZXhwb3J0cy5GdWxsQXBwVHJlZUNvbnRleHQgPSBGdWxsQXBwVHJlZUNvbnRleHQ7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIEFwcFJvdXRlckNvbnRleHQuZGlzcGxheU5hbWUgPSAnQXBwUm91dGVyQ29udGV4dCc7XG4gICAgQXBwVHJlZUNvbnRleHQuZGlzcGxheU5hbWUgPSAnQXBwVHJlZUNvbnRleHQnO1xuICAgIEZ1bGxBcHBUcmVlQ29udGV4dC5kaXNwbGF5TmFtZSA9ICdGdWxsQXBwVHJlZUNvbnRleHQnO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcHAtcm91dGVyLWNvbnRleHQuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiRnVsbEFwcFRyZWVDb250ZXh0IiwiQXBwVHJlZUNvbnRleHQiLCJBcHBSb3V0ZXJDb250ZXh0IiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNyZWF0ZUNvbnRleHQiLCJwcm9jZXNzIiwiZGlzcGxheU5hbWUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../node_modules/next/dist/shared/lib/app-router-context.js\n"));
-
-/***/ }),
-
-/***/ "./components/Layout.tsx":
-/*!*******************************!*\
- !*** ./components/Layout.tsx ***!
- \*******************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"../node_modules/react/jsx-dev-runtime.js\");\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 */ \"../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"../node_modules/next/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/head */ \"../node_modules/next/head.js\");\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_head__WEBPACK_IMPORTED_MODULE_3__);\nvar _this = undefined;\n\n\n\n\nvar Layout = function(param) {\n var children = param.children, _title = param.title, title = _title === void 0 ? \"This is the default title\" : _title;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_head__WEBPACK_IMPORTED_MODULE_3___default()), {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"title\", {\n children: title\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 13,\n columnNumber: 7\n }, _this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n charSet: \"utf-8\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 14,\n columnNumber: 7\n }, _this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n name: \"viewport\",\n content: \"initial-scale=1.0, width=device-width\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 15,\n columnNumber: 7\n }, _this)\n ]\n }, void 0, true, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 12,\n columnNumber: 5\n }, _this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: \"Home\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 20,\n columnNumber: 11\n }, _this)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 19,\n columnNumber: 9\n }, _this),\n \" \",\n \"|\",\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/about\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: \"About\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 24,\n columnNumber: 11\n }, _this)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 23,\n columnNumber: 9\n }, _this),\n \" \",\n \"|\",\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/initial-props\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: \"With Initial Props\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 28,\n columnNumber: 11\n }, _this)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 27,\n columnNumber: 9\n }, _this)\n ]\n }, void 0, true, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 18,\n columnNumber: 7\n }, _this)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 17,\n columnNumber: 5\n }, _this),\n children,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"footer\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"hr\", {}, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 34,\n columnNumber: 7\n }, _this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"I'm here to stay (Footer)\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 35,\n columnNumber: 7\n }, _this)\n ]\n }, void 0, true, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 33,\n columnNumber: 5\n }, _this)\n ]\n }, void 0, true, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx\",\n lineNumber: 11,\n columnNumber: 3\n }, _this);\n};\n_c = Layout;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Layout);\nvar _c;\n$RefreshReg$(_c, \"Layout\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0xheW91dC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQXdDO0FBQ1o7QUFDQTtBQU81QixJQUFNRyxNQUFNLEdBQUc7UUFBR0MsUUFBUSxTQUFSQSxRQUFRLGlCQUFFQyxLQUFLLEVBQUxBLEtBQUssdUJBQUcsMkJBQTJCO3lCQUM3RCw4REFBQ0MsS0FBRzs7MEJBQ0YsOERBQUNKLGtEQUFJOztrQ0FDSCw4REFBQ0csT0FBSztrQ0FBRUEsS0FBSzs7Ozs7NkJBQVM7a0NBQ3RCLDhEQUFDRSxNQUFJO3dCQUFDQyxPQUFPLEVBQUMsT0FBTzs7Ozs7NkJBQUc7a0NBQ3hCLDhEQUFDRCxNQUFJO3dCQUFDRSxJQUFJLEVBQUMsVUFBVTt3QkFBQ0MsT0FBTyxFQUFDLHVDQUF1Qzs7Ozs7NkJBQUc7Ozs7OztxQkFDbkU7MEJBQ1AsOERBQUNDLFFBQU07MEJBQ0wsNEVBQUNDLEtBQUc7O3NDQUNGLDhEQUFDWCxrREFBSTs0QkFBQ1ksSUFBSSxFQUFDLEdBQUc7c0NBQ1osNEVBQUNDLEdBQUM7MENBQUMsTUFBSTs7Ozs7cUNBQUk7Ozs7O2lDQUNOO3dCQUFDLEdBQUc7d0JBQUMsR0FDWDt3QkFBQyxHQUFHO3NDQUNMLDhEQUFDYixrREFBSTs0QkFBQ1ksSUFBSSxFQUFDLFFBQVE7c0NBQ2pCLDRFQUFDQyxHQUFDOzBDQUFDLE9BQUs7Ozs7O3FDQUFJOzs7OztpQ0FDUDt3QkFBQyxHQUFHO3dCQUFDLEdBQ1g7d0JBQUMsR0FBRztzQ0FDTCw4REFBQ2Isa0RBQUk7NEJBQUNZLElBQUksRUFBQyxnQkFBZ0I7c0NBQ3pCLDRFQUFDQyxHQUFDOzBDQUFDLG9CQUFrQjs7Ozs7cUNBQUk7Ozs7O2lDQUNwQjs7Ozs7O3lCQUNIOzs7OztxQkFDQztZQUNSVixRQUFROzBCQUNULDhEQUFDVyxRQUFNOztrQ0FDTCw4REFBQ0MsSUFBRTs7Ozs2QkFBRztrQ0FDTiw4REFBQ0MsTUFBSTtrQ0FBQywyQkFBeUI7Ozs7OzZCQUFPOzs7Ozs7cUJBQy9COzs7Ozs7YUFDTDtDQUNQO0FBNUJLZCxLQUFBQSxNQUFNO0FBOEJaLCtEQUFlQSxNQUFNIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL2NvbXBvbmVudHMvTGF5b3V0LnRzeD8zYzhmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBMaW5rIGZyb20gJ25leHQvbGluaydcbmltcG9ydCBIZWFkIGZyb20gJ25leHQvaGVhZCdcblxudHlwZSBQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZVxuICB0aXRsZT86IHN0cmluZ1xufVxuXG5jb25zdCBMYXlvdXQgPSAoeyBjaGlsZHJlbiwgdGl0bGUgPSAnVGhpcyBpcyB0aGUgZGVmYXVsdCB0aXRsZScgfTogUHJvcHMpID0+IChcbiAgPGRpdj5cbiAgICA8SGVhZD5cbiAgICAgIDx0aXRsZT57dGl0bGV9PC90aXRsZT5cbiAgICAgIDxtZXRhIGNoYXJTZXQ9XCJ1dGYtOFwiIC8+XG4gICAgICA8bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwiaW5pdGlhbC1zY2FsZT0xLjAsIHdpZHRoPWRldmljZS13aWR0aFwiIC8+XG4gICAgPC9IZWFkPlxuICAgIDxoZWFkZXI+XG4gICAgICA8bmF2PlxuICAgICAgICA8TGluayBocmVmPVwiL1wiPlxuICAgICAgICAgIDxhPkhvbWU8L2E+XG4gICAgICAgIDwvTGluaz57JyAnfVxuICAgICAgICB8eycgJ31cbiAgICAgICAgPExpbmsgaHJlZj1cIi9hYm91dFwiPlxuICAgICAgICAgIDxhPkFib3V0PC9hPlxuICAgICAgICA8L0xpbms+eycgJ31cbiAgICAgICAgfHsnICd9XG4gICAgICAgIDxMaW5rIGhyZWY9XCIvaW5pdGlhbC1wcm9wc1wiPlxuICAgICAgICAgIDxhPldpdGggSW5pdGlhbCBQcm9wczwvYT5cbiAgICAgICAgPC9MaW5rPlxuICAgICAgPC9uYXY+XG4gICAgPC9oZWFkZXI+XG4gICAge2NoaWxkcmVufVxuICAgIDxmb290ZXI+XG4gICAgICA8aHIgLz5cbiAgICAgIDxzcGFuPkknbSBoZXJlIHRvIHN0YXkgKEZvb3Rlcik8L3NwYW4+XG4gICAgPC9mb290ZXI+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgZGVmYXVsdCBMYXlvdXRcbiJdLCJuYW1lcyI6WyJSZWFjdCIsIkxpbmsiLCJIZWFkIiwiTGF5b3V0IiwiY2hpbGRyZW4iLCJ0aXRsZSIsImRpdiIsIm1ldGEiLCJjaGFyU2V0IiwibmFtZSIsImNvbnRlbnQiLCJoZWFkZXIiLCJuYXYiLCJocmVmIiwiYSIsImZvb3RlciIsImhyIiwic3BhbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/Layout.tsx\n"));
-
-/***/ }),
-
-/***/ "./components/List.tsx":
-/*!*****************************!*\
- !*** ./components/List.tsx ***!
- \*****************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"../node_modules/react/jsx-dev-runtime.js\");\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 */ \"../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _ListItem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ListItem */ \"./components/ListItem.tsx\");\nvar _this = undefined;\n\n\n\nvar List = function(param) {\n var items = param.items;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n children: items.map(function(item) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ListItem__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n data: item\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/List.tsx\",\n lineNumber: 13,\n columnNumber: 9\n }, _this)\n }, item.id, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/List.tsx\",\n lineNumber: 12,\n columnNumber: 7\n }, _this);\n })\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/List.tsx\",\n lineNumber: 10,\n columnNumber: 3\n }, _this);\n};\n_c = List;\n/* harmony default export */ __webpack_exports__[\"default\"] = (List);\nvar _c;\n$RefreshReg$(_c, \"List\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0xpc3QudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUF5QjtBQUNRO0FBT2pDLElBQU1FLElBQUksR0FBRztRQUFHQyxLQUFLLFNBQUxBLEtBQUs7eUJBQ25CLDhEQUFDQyxJQUFFO2tCQUNBRCxLQUFLLENBQUNFLEdBQUcsQ0FBQyxTQUFDQyxJQUFJO2lDQUNkLDhEQUFDQyxJQUFFOzBCQUNELDRFQUFDTixpREFBUTtvQkFBQ08sSUFBSSxFQUFFRixJQUFJOzs7Ozt5QkFBSTtlQURqQkEsSUFBSSxDQUFDRyxFQUFFOzs7O3FCQUVYO1NBQ04sQ0FBQzs7Ozs7YUFDQztDQUNOO0FBUktQLEtBQUFBLElBQUk7QUFVViwrREFBZUEsSUFBSSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9jb21wb25lbnRzL0xpc3QudHN4P2Q5YTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IExpc3RJdGVtIGZyb20gJy4vTGlzdEl0ZW0nXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcydcblxudHlwZSBQcm9wcyA9IHtcbiAgaXRlbXM6IFVzZXJbXVxufVxuXG5jb25zdCBMaXN0ID0gKHsgaXRlbXMgfTogUHJvcHMpID0+IChcbiAgPHVsPlxuICAgIHtpdGVtcy5tYXAoKGl0ZW0pID0+IChcbiAgICAgIDxsaSBrZXk9e2l0ZW0uaWR9PlxuICAgICAgICA8TGlzdEl0ZW0gZGF0YT17aXRlbX0gLz5cbiAgICAgIDwvbGk+XG4gICAgKSl9XG4gIDwvdWw+XG4pXG5cbmV4cG9ydCBkZWZhdWx0IExpc3RcbiJdLCJuYW1lcyI6WyJSZWFjdCIsIkxpc3RJdGVtIiwiTGlzdCIsIml0ZW1zIiwidWwiLCJtYXAiLCJpdGVtIiwibGkiLCJkYXRhIiwiaWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./components/List.tsx\n"));
-
-/***/ }),
-
-/***/ "./components/ListItem.tsx":
-/*!*********************************!*\
- !*** ./components/ListItem.tsx ***!
- \*********************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"../node_modules/react/jsx-dev-runtime.js\");\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 */ \"../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"../node_modules/next/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__);\nvar _this = undefined;\n\n\n\nvar ListItem = function(param) {\n var data = param.data;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n href: \"/detail/[id]\",\n as: \"/detail/\".concat(data.id),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: [\n data.id,\n \": \",\n data.name\n ]\n }, void 0, true, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/ListItem.tsx\",\n lineNumber: 12,\n columnNumber: 5\n }, _this)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/components/ListItem.tsx\",\n lineNumber: 11,\n columnNumber: 3\n }, _this);\n};\n_c = ListItem;\n/* harmony default export */ __webpack_exports__[\"default\"] = (ListItem);\nvar _c;\n$RefreshReg$(_c, \"ListItem\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0xpc3RJdGVtLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQXlCO0FBQ0c7QUFRNUIsSUFBTUUsUUFBUSxHQUFHO1FBQUdDLElBQUksU0FBSkEsSUFBSTt5QkFDdEIsOERBQUNGLGtEQUFJO1FBQUNHLElBQUksRUFBQyxjQUFjO1FBQUNDLEVBQUUsRUFBRSxVQUFTLENBQVUsT0FBUkYsSUFBSSxDQUFDRyxFQUFFLENBQUU7a0JBQ2hELDRFQUFDQyxHQUFDOztnQkFDQ0osSUFBSSxDQUFDRyxFQUFFO2dCQUFDLElBQUU7Z0JBQUNILElBQUksQ0FBQ0ssSUFBSTs7Ozs7O2lCQUNuQjs7Ozs7YUFDQztDQUNSO0FBTktOLEtBQUFBLFFBQVE7QUFRZCwrREFBZUEsUUFBUSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9jb21wb25lbnRzL0xpc3RJdGVtLnRzeD8zOWYyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBMaW5rIGZyb20gJ25leHQvbGluaydcblxuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uL2ludGVyZmFjZXMnXG5cbnR5cGUgUHJvcHMgPSB7XG4gIGRhdGE6IFVzZXJcbn1cblxuY29uc3QgTGlzdEl0ZW0gPSAoeyBkYXRhIH06IFByb3BzKSA9PiAoXG4gIDxMaW5rIGhyZWY9XCIvZGV0YWlsL1tpZF1cIiBhcz17YC9kZXRhaWwvJHtkYXRhLmlkfWB9PlxuICAgIDxhPlxuICAgICAge2RhdGEuaWR9OiB7ZGF0YS5uYW1lfVxuICAgIDwvYT5cbiAgPC9MaW5rPlxuKVxuXG5leHBvcnQgZGVmYXVsdCBMaXN0SXRlbVxuIl0sIm5hbWVzIjpbIlJlYWN0IiwiTGluayIsIkxpc3RJdGVtIiwiZGF0YSIsImhyZWYiLCJhcyIsImlkIiwiYSIsIm5hbWUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./components/ListItem.tsx\n"));
-
-/***/ }),
-
-/***/ "./pages/initial-props.tsx":
-/*!*********************************!*\
- !*** ./pages/initial-props.tsx ***!
- \*********************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"__N_SSG\": function() { return /* binding */ __N_SSG; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"../node_modules/react/jsx-dev-runtime.js\");\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 next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"../node_modules/next/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/router */ \"../node_modules/next/router.js\");\n/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_router__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_Layout__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/Layout */ \"./components/Layout.tsx\");\n/* harmony import */ var _components_List__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../components/List */ \"./components/List.tsx\");\nvar _this = undefined;\n\n\n\n\n\nvar _s = $RefreshSig$();\nvar WithInitialProps = function(param) {\n var items = param.items;\n _s();\n var router = (0,next_router__WEBPACK_IMPORTED_MODULE_2__.useRouter)();\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Layout__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n title: \"List Example (as Function Component) | Next.js + TypeScript + Electron Example\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n children: \"List Example (as Function Component)\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/initial-props.tsx\",\n lineNumber: 17,\n columnNumber: 7\n }, _this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: [\n \"You are currently on: \",\n router.pathname\n ]\n }, void 0, true, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/initial-props.tsx\",\n lineNumber: 18,\n columnNumber: 7\n }, _this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_List__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n items: items\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/initial-props.tsx\",\n lineNumber: 19,\n columnNumber: 7\n }, _this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n children: \"Go home\"\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/initial-props.tsx\",\n lineNumber: 22,\n columnNumber: 11\n }, _this)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/initial-props.tsx\",\n lineNumber: 21,\n columnNumber: 9\n }, _this)\n }, void 0, false, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/initial-props.tsx\",\n lineNumber: 20,\n columnNumber: 7\n }, _this)\n ]\n }, void 0, true, {\n fileName: \"/home/zeffo/Public/upscayl/renderer/pages/initial-props.tsx\",\n lineNumber: 16,\n columnNumber: 5\n }, _this);\n};\n_s(WithInitialProps, \"fN7XvhJ+p5oE6+Xlo0NJmXpxjC8=\", false, function() {\n return [\n next_router__WEBPACK_IMPORTED_MODULE_2__.useRouter\n ];\n});\n_c = WithInitialProps;\nvar __N_SSG = true;\n/* harmony default export */ __webpack_exports__[\"default\"] = (WithInitialProps);\nvar _c;\n$RefreshReg$(_c, \"WithInitialProps\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wYWdlcy9pbml0aWFsLXByb3BzLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTs7QUFBNEI7QUFDVztBQUNFO0FBQ0o7O0FBU3JDLElBQU1JLGdCQUFnQixHQUFHLGdCQUFzQjtRQUFuQkMsS0FBSyxTQUFMQSxLQUFLOztJQUMvQixJQUFNQyxNQUFNLEdBQUdMLHNEQUFTLEVBQUU7SUFDMUIscUJBQ0UsOERBQUNDLDBEQUFNO1FBQUNLLEtBQUssRUFBQyxnRkFBZ0Y7OzBCQUM1Riw4REFBQ0MsSUFBRTswQkFBQyxzQ0FBb0M7Ozs7O3FCQUFLOzBCQUM3Qyw4REFBQ0MsR0FBQzs7b0JBQUMsd0JBQXNCO29CQUFDSCxNQUFNLENBQUNJLFFBQVE7Ozs7OztxQkFBSzswQkFDOUMsOERBQUNQLHdEQUFJO2dCQUFDRSxLQUFLLEVBQUVBLEtBQUs7Ozs7O3FCQUFJOzBCQUN0Qiw4REFBQ0ksR0FBQzswQkFDQSw0RUFBQ1Qsa0RBQUk7b0JBQUNXLElBQUksRUFBQyxHQUFHOzhCQUNaLDRFQUFDQyxHQUFDO2tDQUFDLFNBQU87Ozs7OzZCQUFJOzs7Ozt5QkFDVDs7Ozs7cUJBQ0w7Ozs7OzthQUNHLENBQ1Y7Q0FDRjtHQWRLUixnQkFBZ0I7O1FBQ0xILGtEQUFTOzs7QUFEcEJHLEtBQUFBLGdCQUFnQjs7QUFzQnRCLCtEQUFlQSxnQkFBZ0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vcGFnZXMvaW5pdGlhbC1wcm9wcy50c3g/NjNmNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTGluayBmcm9tICduZXh0L2xpbmsnXG5pbXBvcnQgeyB1c2VSb3V0ZXIgfSBmcm9tICduZXh0L3JvdXRlcidcbmltcG9ydCBMYXlvdXQgZnJvbSAnLi4vY29tcG9uZW50cy9MYXlvdXQnXG5pbXBvcnQgTGlzdCBmcm9tICcuLi9jb21wb25lbnRzL0xpc3QnXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcydcbmltcG9ydCB7IGZpbmRBbGwgfSBmcm9tICcuLi91dGlscy9zYW1wbGUtYXBpJ1xuXG50eXBlIFByb3BzID0ge1xuICBpdGVtczogVXNlcltdXG4gIHBhdGhuYW1lOiBzdHJpbmdcbn1cblxuY29uc3QgV2l0aEluaXRpYWxQcm9wcyA9ICh7IGl0ZW1zIH06IFByb3BzKSA9PiB7XG4gIGNvbnN0IHJvdXRlciA9IHVzZVJvdXRlcigpXG4gIHJldHVybiAoXG4gICAgPExheW91dCB0aXRsZT1cIkxpc3QgRXhhbXBsZSAoYXMgRnVuY3Rpb24gQ29tcG9uZW50KSB8IE5leHQuanMgKyBUeXBlU2NyaXB0ICsgRWxlY3Ryb24gRXhhbXBsZVwiPlxuICAgICAgPGgxPkxpc3QgRXhhbXBsZSAoYXMgRnVuY3Rpb24gQ29tcG9uZW50KTwvaDE+XG4gICAgICA8cD5Zb3UgYXJlIGN1cnJlbnRseSBvbjoge3JvdXRlci5wYXRobmFtZX08L3A+XG4gICAgICA8TGlzdCBpdGVtcz17aXRlbXN9IC8+XG4gICAgICA8cD5cbiAgICAgICAgPExpbmsgaHJlZj1cIi9cIj5cbiAgICAgICAgICA8YT5HbyBob21lPC9hPlxuICAgICAgICA8L0xpbms+XG4gICAgICA8L3A+XG4gICAgPC9MYXlvdXQ+XG4gIClcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFN0YXRpY1Byb3BzKCkge1xuICBjb25zdCBpdGVtczogVXNlcltdID0gYXdhaXQgZmluZEFsbCgpXG5cbiAgcmV0dXJuIHsgcHJvcHM6IHsgaXRlbXMgfSB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFdpdGhJbml0aWFsUHJvcHNcbiJdLCJuYW1lcyI6WyJMaW5rIiwidXNlUm91dGVyIiwiTGF5b3V0IiwiTGlzdCIsIldpdGhJbml0aWFsUHJvcHMiLCJpdGVtcyIsInJvdXRlciIsInRpdGxlIiwiaDEiLCJwIiwicGF0aG5hbWUiLCJocmVmIiwiYSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./pages/initial-props.tsx\n"));
-
-/***/ }),
-
-/***/ "../node_modules/next/head.js":
-/*!************************************!*\
- !*** ../node_modules/next/head.js ***!
- \************************************/
-/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
-
-eval(__webpack_require__.ts("module.exports = __webpack_require__(/*! ./dist/shared/lib/head */ \"../node_modules/next/dist/shared/lib/head.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvaGVhZC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBQSxrSEFBa0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uL25vZGVfbW9kdWxlcy9uZXh0L2hlYWQuanM/ZTgwNiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZGlzdC9zaGFyZWQvbGliL2hlYWQnKVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../node_modules/next/head.js\n"));
-
-/***/ }),
-
-/***/ "../node_modules/next/link.js":
-/*!************************************!*\
- !*** ../node_modules/next/link.js ***!
- \************************************/
-/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
-
-eval(__webpack_require__.ts("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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL25leHQvbGluay5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBQSwwR0FBOEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uL25vZGVfbW9kdWxlcy9uZXh0L2xpbmsuanM/MTMwMyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZGlzdC9jbGllbnQvbGluaycpXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../node_modules/next/link.js\n"));
-
-/***/ }),
-
-/***/ "../node_modules/react/cjs/react-jsx-dev-runtime.development.js":
-/*!**********************************************************************!*\
- !*** ../node_modules/react/cjs/react-jsx-dev-runtime.development.js ***!
- \**********************************************************************/
-/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
-
-"use strict";
-eval(__webpack_require__.ts("/** @license React v17.0.2\n * react-jsx-dev-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (true) {\n (function() {\n'use strict';\n\nvar React = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\nvar _assign = __webpack_require__(/*! object-assign */ \"../node_modules/next/dist/build/polyfills/object-assign.js\");\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar REACT_ELEMENT_TYPE = 0xeac7;\nvar REACT_PORTAL_TYPE = 0xeaca;\nexports.Fragment = 0xeacb;\nvar REACT_STRICT_MODE_TYPE = 0xeacc;\nvar REACT_PROFILER_TYPE = 0xead2;\nvar REACT_PROVIDER_TYPE = 0xeacd;\nvar REACT_CONTEXT_TYPE = 0xeace;\nvar REACT_FORWARD_REF_TYPE = 0xead0;\nvar REACT_SUSPENSE_TYPE = 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = 0xead8;\nvar REACT_MEMO_TYPE = 0xead3;\nvar REACT_LAZY_TYPE = 0xead4;\nvar REACT_BLOCK_TYPE = 0xead9;\nvar REACT_SERVER_BLOCK_TYPE = 0xeada;\nvar REACT_FUNDAMENTAL_TYPE = 0xead5;\nvar REACT_SCOPE_TYPE = 0xead7;\nvar REACT_OPAQUE_ID_TYPE = 0xeae0;\nvar REACT_DEBUG_TRACING_MODE_TYPE = 0xeae1;\nvar REACT_OFFSCREEN_TYPE = 0xeae2;\nvar REACT_LEGACY_HIDDEN_TYPE = 0xeae3;\n\nif (typeof Symbol === 'function' && Symbol.for) {\n var symbolFor = Symbol.for;\n REACT_ELEMENT_TYPE = symbolFor('react.element');\n REACT_PORTAL_TYPE = symbolFor('react.portal');\n exports.Fragment = symbolFor('react.fragment');\n REACT_STRICT_MODE_TYPE = symbolFor('react.strict_mode');\n REACT_PROFILER_TYPE = symbolFor('react.profiler');\n REACT_PROVIDER_TYPE = symbolFor('react.provider');\n REACT_CONTEXT_TYPE = symbolFor('react.context');\n REACT_FORWARD_REF_TYPE = symbolFor('react.forward_ref');\n REACT_SUSPENSE_TYPE = symbolFor('react.suspense');\n REACT_SUSPENSE_LIST_TYPE = symbolFor('react.suspense_list');\n REACT_MEMO_TYPE = symbolFor('react.memo');\n REACT_LAZY_TYPE = symbolFor('react.lazy');\n REACT_BLOCK_TYPE = symbolFor('react.block');\n REACT_SERVER_BLOCK_TYPE = symbolFor('react.server.block');\n REACT_FUNDAMENTAL_TYPE = symbolFor('react.fundamental');\n REACT_SCOPE_TYPE = symbolFor('react.scope');\n REACT_OPAQUE_ID_TYPE = symbolFor('react.opaque.id');\n REACT_DEBUG_TRACING_MODE_TYPE = symbolFor('react.debug_trace_mode');\n REACT_OFFSCREEN_TYPE = symbolFor('react.offscreen');\n REACT_LEGACY_HIDDEN_TYPE = symbolFor('react.legacy_hidden');\n}\n\nvar MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n }\n\n var argsWithFormat = args.map(function (item) {\n return '' + item;\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\n// Filter certain DOM attributes (e.g. src, href) if their values are empty strings.\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === exports.Fragment || type === REACT_PROFILER_TYPE || type === REACT_DEBUG_TRACING_MODE_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || type === REACT_LEGACY_HIDDEN_TYPE || enableScopeAPI ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_BLOCK_TYPE || type[0] === REACT_SERVER_BLOCK_TYPE) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var functionName = innerType.displayName || innerType.name || '';\n return outerType.displayName || (functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName);\n}\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n}\n\nfunction getComponentName(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentName(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case exports.Fragment:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n return getComponentName(type.type);\n\n case REACT_BLOCK_TYPE:\n return getComponentName(type._render);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentName(init(payload));\n } catch (x) {\n return null;\n }\n }\n }\n }\n\n return null;\n}\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: _assign({}, props, {\n value: prevLog\n }),\n info: _assign({}, props, {\n value: prevInfo\n }),\n warn: _assign({}, props, {\n value: prevWarn\n }),\n error: _assign({}, props, {\n value: prevError\n }),\n group: _assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: _assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: _assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if (!fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at ');\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_BLOCK_TYPE:\n return describeFunctionComponentFrame(type._render);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\nvar didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n var componentName = getComponentName(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentName(ReactCurrentOwner.current.type), config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n }\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\nfunction jsxDEV(type, config, maybeKey, source, self) {\n {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null; // Currently, key can be spread in as a prop. This causes a potential\n // issue if key is also explicitly declared (ie. \n // or ). We want to deprecate key spread,\n // but as an intermediary step, we will use jsxDEV for everything except\n // , because we aren't currently able to tell if\n // key is explicitly declared to be undefined or not.\n\n if (maybeKey !== undefined) {\n key = '' + maybeKey;\n }\n\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n if (hasValidRef(config)) {\n ref = config.ref;\n warnIfStringRefCannotBeAutoConverted(config, self);\n } // Remaining properties are added to a new props object\n\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n }\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\nfunction isValidElement(object) {\n {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n}\n\nfunction getDeclarationErrorAddendum() {\n {\n if (ReactCurrentOwner$1.current) {\n var name = getComponentName(ReactCurrentOwner$1.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n }\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n }\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n }\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentName(element._owner.type) + \".\";\n }\n\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n {\n if (typeof node !== 'object') {\n return;\n }\n\n if (Array.isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentName(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentName(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\n\nfunction jsxWithValidation(type, props, key, isStaticChildren, source, self) {\n {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendum(source);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (Array.isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentName(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n\n var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n var children = props.children;\n\n if (children !== undefined) {\n if (isStaticChildren) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n validateChildKeys(children[i], type);\n }\n\n if (Object.freeze) {\n Object.freeze(children);\n }\n } else {\n error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');\n }\n } else {\n validateChildKeys(children, type);\n }\n }\n }\n\n if (type === exports.Fragment) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n }\n} // These two functions exist to still get child warnings in dev\n\nvar jsxDEV$1 = jsxWithValidation ;\n\nexports.jsxDEV = jsxDEV$1;\n })();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFYTs7QUFFYixJQUFJLElBQXFDO0FBQ3pDO0FBQ0E7O0FBRUEsWUFBWSxtQkFBTyxDQUFDLDZDQUFPO0FBQzNCLGNBQWMsbUJBQU8sQ0FBQyxpRkFBZTs7QUFFckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsZ0JBQWdCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLCtGQUErRixlQUFlO0FBQzlHO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSyxHQUFHOztBQUVSLGtEQUFrRDtBQUNsRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwySEFBMkg7QUFDM0g7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxvRUFBb0U7O0FBRXBFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFD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Q0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTiw0Q0FBNEM7O0FBRTVDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekI7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsaUJBQWlCO0FBQ3JDOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsOENBQThDO0FBQzlDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBOztBQUVBLDBEQUEwRDtBQUMxRDs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixxQkFBcUI7QUFDakQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7O0FBRUEsY0FBYztBQUNkLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanM/YTAwYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGxpY2Vuc2UgUmVhY3QgdjE3LjAuMlxuICogcmVhY3QtanN4LWRldi1ydW50aW1lLmRldmVsb3BtZW50LmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gIChmdW5jdGlvbigpIHtcbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcbnZhciBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG4vLyBBVFRFTlRJT05cbi8vIFdoZW4gYWRkaW5nIG5ldyBzeW1ib2xzIHRvIHRoaXMgZmlsZSxcbi8vIFBsZWFzZSBjb25zaWRlciBhbHNvIGFkZGluZyB0byAncmVhY3QtZGV2dG9vbHMtc2hhcmVkL3NyYy9iYWNrZW5kL1JlYWN0U3ltYm9scydcbi8vIFRoZSBTeW1ib2wgdXNlZCB0byB0YWcgdGhlIFJlYWN0RWxlbWVudC1saWtlIHR5cGVzLiBJZiB0aGVyZSBpcyBubyBuYXRpdmUgU3ltYm9sXG4vLyBub3IgcG9seWZpbGwsIHRoZW4gYSBwbGFpbiBudW1iZXIgaXMgdXNlZCBmb3IgcGVyZm9ybWFuY2UuXG52YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gMHhlYWM3O1xudmFyIFJFQUNUX1BPUlRBTF9UWVBFID0gMHhlYWNhO1xuZXhwb3J0cy5GcmFnbWVudCA9IDB4ZWFjYjtcbnZhciBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFID0gMHhlYWNjO1xudmFyIFJFQUNUX1BST0ZJTEVSX1RZUEUgPSAweGVhZDI7XG52YXIgUkVBQ1RfUFJPVklERVJfVFlQRSA9IDB4ZWFjZDtcbnZhciBSRUFDVF9DT05URVhUX1RZUEUgPSAweGVhY2U7XG52YXIgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSA9IDB4ZWFkMDtcbnZhciBSRUFDVF9TVVNQRU5TRV9UWVBFID0gMHhlYWQxO1xudmFyIFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRSA9IDB4ZWFkODtcbnZhciBSRUFDVF9NRU1PX1RZUEUgPSAweGVhZDM7XG52YXIgUkVBQ1RfTEFaWV9UWVBFID0gMHhlYWQ0O1xudmFyIFJFQUNUX0JMT0NLX1RZUEUgPSAweGVhZDk7XG52YXIgUkVBQ1RfU0VSVkVSX0JMT0NLX1RZUEUgPSAweGVhZGE7XG52YXIgUkVBQ1RfRlVOREFNRU5UQUxfVFlQRSA9IDB4ZWFkNTtcbnZhciBSRUFDVF9TQ09QRV9UWVBFID0gMHhlYWQ3O1xudmFyIFJFQUNUX09QQVFVRV9JRF9UWVBFID0gMHhlYWUwO1xudmFyIFJFQUNUX0RFQlVHX1RSQUNJTkdfTU9ERV9UWVBFID0gMHhlYWUxO1xudmFyIFJFQUNUX09GRlNDUkVFTl9UWVBFID0gMHhlYWUyO1xudmFyIFJFQUNUX0xFR0FDWV9ISURERU5fVFlQRSA9IDB4ZWFlMztcblxuaWYgKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLmZvcikge1xuICB2YXIgc3ltYm9sRm9yID0gU3ltYm9sLmZvcjtcbiAgUkVBQ1RfRUxFTUVOVF9UWVBFID0gc3ltYm9sRm9yKCdyZWFjdC5lbGVtZW50Jyk7XG4gIFJFQUNUX1BPUlRBTF9UWVBFID0gc3ltYm9sRm9yKCdyZWFjdC5wb3J0YWwnKTtcbiAgZXhwb3J0cy5GcmFnbWVudCA9IHN5bWJvbEZvcigncmVhY3QuZnJhZ21lbnQnKTtcbiAgUkVBQ1RfU1RSSUNUX01PREVfVFlQRSA9IHN5bWJvbEZvcigncmVhY3Quc3RyaWN0X21vZGUnKTtcbiAgUkVBQ1RfUFJPRklMRVJfVFlQRSA9IHN5bWJvbEZvcigncmVhY3QucHJvZmlsZXInKTtcbiAgUkVBQ1RfUFJPVklERVJfVFlQRSA9IHN5bWJvbEZvcigncmVhY3QucHJvdmlkZXInKTtcbiAgUkVBQ1RfQ09OVEVYVF9UWVBFID0gc3ltYm9sRm9yKCdyZWFjdC5jb250ZXh0Jyk7XG4gIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEUgPSBzeW1ib2xGb3IoJ3JlYWN0LmZvcndhcmRfcmVmJyk7XG4gIFJFQUNUX1NVU1BFTlNFX1RZUEUgPSBzeW1ib2xGb3IoJ3JlYWN0LnN1c3BlbnNlJyk7XG4gIFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRSA9IHN5bWJvbEZvcigncmVhY3Quc3VzcGVuc2VfbGlzdCcpO1xuICBSRUFDVF9NRU1PX1RZUEUgPSBzeW1ib2xGb3IoJ3JlYWN0Lm1lbW8nKTtcbiAgUkVBQ1RfTEFaWV9UWVBFID0gc3ltYm9sRm9yKCdyZWFjdC5sYXp5Jyk7XG4gIFJFQUNUX0JMT0NLX1RZUEUgPSBzeW1ib2xGb3IoJ3JlYWN0LmJsb2NrJyk7XG4gIFJFQUNUX1NFUlZFUl9CTE9DS19UWVBFID0gc3ltYm9sRm9yKCdyZWFjdC5zZXJ2ZXIuYmxvY2snKTtcbiAgUkVBQ1RfRlVOREFNRU5UQUxfVFlQRSA9IHN5bWJvbEZvcigncmVhY3QuZnVuZGFtZW50YWwnKTtcbiAgUkVBQ1RfU0NPUEVfVFlQRSA9IHN5bWJvbEZvcigncmVhY3Quc2NvcGUnKTtcbiAgUkVBQ1RfT1BBUVVFX0lEX1RZUEUgPSBzeW1ib2xGb3IoJ3JlYWN0Lm9wYXF1ZS5pZCcpO1xuICBSRUFDVF9ERUJVR19UUkFDSU5HX01PREVfVFlQRSA9IHN5bWJvbEZvcigncmVhY3QuZGVidWdfdHJhY2VfbW9kZScpO1xuICBSRUFDVF9PRkZTQ1JFRU5fVFlQRSA9IHN5bWJvbEZvcigncmVhY3Qub2Zmc2NyZWVuJyk7XG4gIFJFQUNUX0xFR0FDWV9ISURERU5fVFlQRSA9IHN5bWJvbEZvcigncmVhY3QubGVnYWN5X2hpZGRlbicpO1xufVxuXG52YXIgTUFZQkVfSVRFUkFUT1JfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuaXRlcmF0b3I7XG52YXIgRkFVWF9JVEVSQVRPUl9TWU1CT0wgPSAnQEBpdGVyYXRvcic7XG5mdW5jdGlvbiBnZXRJdGVyYXRvckZuKG1heWJlSXRlcmFibGUpIHtcbiAgaWYgKG1heWJlSXRlcmFibGUgPT09IG51bGwgfHwgdHlwZW9mIG1heWJlSXRlcmFibGUgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB2YXIgbWF5YmVJdGVyYXRvciA9IE1BWUJFX0lURVJBVE9SX1NZTUJPTCAmJiBtYXliZUl0ZXJhYmxlW01BWUJFX0lURVJBVE9SX1NZTUJPTF0gfHwgbWF5YmVJdGVyYWJsZVtGQVVYX0lURVJBVE9SX1NZTUJPTF07XG5cbiAgaWYgKHR5cGVvZiBtYXliZUl0ZXJhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG1heWJlSXRlcmF0b3I7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxudmFyIFJlYWN0U2hhcmVkSW50ZXJuYWxzID0gUmVhY3QuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ7XG5cbmZ1bmN0aW9uIGVycm9yKGZvcm1hdCkge1xuICB7XG4gICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yID4gMSA/IF9sZW4yIC0gMSA6IDApLCBfa2V5MiA9IDE7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgIGFyZ3NbX2tleTIgLSAxXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgfVxuXG4gICAgcHJpbnRXYXJuaW5nKCdlcnJvcicsIGZvcm1hdCwgYXJncyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJpbnRXYXJuaW5nKGxldmVsLCBmb3JtYXQsIGFyZ3MpIHtcbiAgLy8gV2hlbiBjaGFuZ2luZyB0aGlzIGxvZ2ljLCB5b3UgbWlnaHQgd2FudCB0byBhbHNvXG4gIC8vIHVwZGF0ZSBjb25zb2xlV2l0aFN0YWNrRGV2Lnd3dy5qcyBhcyB3ZWxsLlxuICB7XG4gICAgdmFyIFJlYWN0RGVidWdDdXJyZW50RnJhbWUgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdERlYnVnQ3VycmVudEZyYW1lO1xuICAgIHZhciBzdGFjayA9IFJlYWN0RGVidWdDdXJyZW50RnJhbWUuZ2V0U3RhY2tBZGRlbmR1bSgpO1xuXG4gICAgaWYgKHN0YWNrICE9PSAnJykge1xuICAgICAgZm9ybWF0ICs9ICclcyc7XG4gICAgICBhcmdzID0gYXJncy5jb25jYXQoW3N0YWNrXSk7XG4gICAgfVxuXG4gICAgdmFyIGFyZ3NXaXRoRm9ybWF0ID0gYXJncy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHJldHVybiAnJyArIGl0ZW07XG4gICAgfSk7IC8vIENhcmVmdWw6IFJOIGN1cnJlbnRseSBkZXBlbmRzIG9uIHRoaXMgcHJlZml4XG5cbiAgICBhcmdzV2l0aEZvcm1hdC51bnNoaWZ0KCdXYXJuaW5nOiAnICsgZm9ybWF0KTsgLy8gV2UgaW50ZW50aW9uYWxseSBkb24ndCB1c2Ugc3ByZWFkIChvciAuYXBwbHkpIGRpcmVjdGx5IGJlY2F1c2UgaXRcbiAgICAvLyBicmVha3MgSUU5OiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzEzNjEwXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZ1xuXG4gICAgRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwoY29uc29sZVtsZXZlbF0sIGNvbnNvbGUsIGFyZ3NXaXRoRm9ybWF0KTtcbiAgfVxufVxuXG4vLyBGaWx0ZXIgY2VydGFpbiBET00gYXR0cmlidXRlcyAoZS5nLiBzcmMsIGhyZWYpIGlmIHRoZWlyIHZhbHVlcyBhcmUgZW1wdHkgc3RyaW5ncy5cblxudmFyIGVuYWJsZVNjb3BlQVBJID0gZmFsc2U7IC8vIEV4cGVyaW1lbnRhbCBDcmVhdGUgRXZlbnQgSGFuZGxlIEFQSS5cblxuZnVuY3Rpb24gaXNWYWxpZEVsZW1lbnRUeXBlKHR5cGUpIHtcbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIE5vdGU6IHR5cGVvZiBtaWdodCBiZSBvdGhlciB0aGFuICdzeW1ib2wnIG9yICdudW1iZXInIChlLmcuIGlmIGl0J3MgYSBwb2x5ZmlsbCkuXG5cblxuICBpZiAodHlwZSA9PT0gZXhwb3J0cy5GcmFnbWVudCB8fCB0eXBlID09PSBSRUFDVF9QUk9GSUxFUl9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX0RFQlVHX1RSQUNJTkdfTU9ERV9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1NUUklDVF9NT0RFX1RZUEUgfHwgdHlwZSA9PT0gUkVBQ1RfU1VTUEVOU0VfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEUgfHwgdHlwZSA9PT0gUkVBQ1RfTEVHQUNZX0hJRERFTl9UWVBFIHx8IGVuYWJsZVNjb3BlQVBJICkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnb2JqZWN0JyAmJiB0eXBlICE9PSBudWxsKSB7XG4gICAgaWYgKHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0xBWllfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9NRU1PX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfUFJPVklERVJfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9DT05URVhUX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9GVU5EQU1FTlRBTF9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0JMT0NLX1RZUEUgfHwgdHlwZVswXSA9PT0gUkVBQ1RfU0VSVkVSX0JMT0NLX1RZUEUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZ2V0V3JhcHBlZE5hbWUob3V0ZXJUeXBlLCBpbm5lclR5cGUsIHdyYXBwZXJOYW1lKSB7XG4gIHZhciBmdW5jdGlvbk5hbWUgPSBpbm5lclR5cGUuZGlzcGxheU5hbWUgfHwgaW5uZXJUeXBlLm5hbWUgfHwgJyc7XG4gIHJldHVybiBvdXRlclR5cGUuZGlzcGxheU5hbWUgfHwgKGZ1bmN0aW9uTmFtZSAhPT0gJycgPyB3cmFwcGVyTmFtZSArIFwiKFwiICsgZnVuY3Rpb25OYW1lICsgXCIpXCIgOiB3cmFwcGVyTmFtZSk7XG59XG5cbmZ1bmN0aW9uIGdldENvbnRleHROYW1lKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGUuZGlzcGxheU5hbWUgfHwgJ0NvbnRleHQnO1xufVxuXG5mdW5jdGlvbiBnZXRDb21wb25lbnROYW1lKHR5cGUpIHtcbiAgaWYgKHR5cGUgPT0gbnVsbCkge1xuICAgIC8vIEhvc3Qgcm9vdCwgdGV4dCBub2RlIG9yIGp1c3QgaW52YWxpZCB0eXBlLlxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAge1xuICAgIGlmICh0eXBlb2YgdHlwZS50YWcgPT09ICdudW1iZXInKSB7XG4gICAgICBlcnJvcignUmVjZWl2ZWQgYW4gdW5leHBlY3RlZCBvYmplY3QgaW4gZ2V0Q29tcG9uZW50TmFtZSgpLiAnICsgJ1RoaXMgaXMgbGlrZWx5IGEgYnVnIGluIFJlYWN0LiBQbGVhc2UgZmlsZSBhbiBpc3N1ZS4nKTtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgbnVsbDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgZXhwb3J0cy5GcmFnbWVudDpcbiAgICAgIHJldHVybiAnRnJhZ21lbnQnO1xuXG4gICAgY2FzZSBSRUFDVF9QT1JUQUxfVFlQRTpcbiAgICAgIHJldHVybiAnUG9ydGFsJztcblxuICAgIGNhc2UgUkVBQ1RfUFJPRklMRVJfVFlQRTpcbiAgICAgIHJldHVybiAnUHJvZmlsZXInO1xuXG4gICAgY2FzZSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFOlxuICAgICAgcmV0dXJuICdTdHJpY3RNb2RlJztcblxuICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfVFlQRTpcbiAgICAgIHJldHVybiAnU3VzcGVuc2UnO1xuXG4gICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEU6XG4gICAgICByZXR1cm4gJ1N1c3BlbnNlTGlzdCc7XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgc3dpdGNoICh0eXBlLiQkdHlwZW9mKSB7XG4gICAgICBjYXNlIFJFQUNUX0NPTlRFWFRfVFlQRTpcbiAgICAgICAgdmFyIGNvbnRleHQgPSB0eXBlO1xuICAgICAgICByZXR1cm4gZ2V0Q29udGV4dE5hbWUoY29udGV4dCkgKyAnLkNvbnN1bWVyJztcblxuICAgICAgY2FzZSBSRUFDVF9QUk9WSURFUl9UWVBFOlxuICAgICAgICB2YXIgcHJvdmlkZXIgPSB0eXBlO1xuICAgICAgICByZXR1cm4gZ2V0Q29udGV4dE5hbWUocHJvdmlkZXIuX2NvbnRleHQpICsgJy5Qcm92aWRlcic7XG5cbiAgICAgIGNhc2UgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTpcbiAgICAgICAgcmV0dXJuIGdldFdyYXBwZWROYW1lKHR5cGUsIHR5cGUucmVuZGVyLCAnRm9yd2FyZFJlZicpO1xuXG4gICAgICBjYXNlIFJFQUNUX01FTU9fVFlQRTpcbiAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudE5hbWUodHlwZS50eXBlKTtcblxuICAgICAgY2FzZSBSRUFDVF9CTE9DS19UWVBFOlxuICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50TmFtZSh0eXBlLl9yZW5kZXIpO1xuXG4gICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBsYXp5Q29tcG9uZW50ID0gdHlwZTtcbiAgICAgICAgICB2YXIgcGF5bG9hZCA9IGxhenlDb21wb25lbnQuX3BheWxvYWQ7XG4gICAgICAgICAgdmFyIGluaXQgPSBsYXp5Q29tcG9uZW50Ll9pbml0O1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBnZXRDb21wb25lbnROYW1lKGluaXQocGF5bG9hZCkpO1xuICAgICAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vLyBIZWxwZXJzIHRvIHBhdGNoIGNvbnNvbGUubG9ncyB0byBhdm9pZCBsb2dnaW5nIGR1cmluZyBzaWRlLWVmZmVjdCBmcmVlXG4vLyByZXBsYXlpbmcgb24gcmVuZGVyIGZ1bmN0aW9uLiBUaGlzIGN1cnJlbnRseSBvbmx5IHBhdGNoZXMgdGhlIG9iamVjdFxuLy8gbGF6aWx5IHdoaWNoIHdvbid0IGNvdmVyIGlmIHRoZSBsb2cgZnVuY3Rpb24gd2FzIGV4dHJhY3RlZCBlYWdlcmx5LlxuLy8gV2UgY291bGQgYWxzbyBlYWdlcmx5IHBhdGNoIHRoZSBtZXRob2QuXG52YXIgZGlzYWJsZWREZXB0aCA9IDA7XG52YXIgcHJldkxvZztcbnZhciBwcmV2SW5mbztcbnZhciBwcmV2V2FybjtcbnZhciBwcmV2RXJyb3I7XG52YXIgcHJldkdyb3VwO1xudmFyIHByZXZHcm91cENvbGxhcHNlZDtcbnZhciBwcmV2R3JvdXBFbmQ7XG5cbmZ1bmN0aW9uIGRpc2FibGVkTG9nKCkge31cblxuZGlzYWJsZWRMb2cuX19yZWFjdERpc2FibGVkTG9nID0gdHJ1ZTtcbmZ1bmN0aW9uIGRpc2FibGVMb2dzKCkge1xuICB7XG4gICAgaWYgKGRpc2FibGVkRGVwdGggPT09IDApIHtcbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZyAqL1xuICAgICAgcHJldkxvZyA9IGNvbnNvbGUubG9nO1xuICAgICAgcHJldkluZm8gPSBjb25zb2xlLmluZm87XG4gICAgICBwcmV2V2FybiA9IGNvbnNvbGUud2FybjtcbiAgICAgIHByZXZFcnJvciA9IGNvbnNvbGUuZXJyb3I7XG4gICAgICBwcmV2R3JvdXAgPSBjb25zb2xlLmdyb3VwO1xuICAgICAgcHJldkdyb3VwQ29sbGFwc2VkID0gY29uc29sZS5ncm91cENvbGxhcHNlZDtcbiAgICAgIHByZXZHcm91cEVuZCA9IGNvbnNvbGUuZ3JvdXBFbmQ7IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTkwOTlcblxuICAgICAgdmFyIHByb3BzID0ge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIHZhbHVlOiBkaXNhYmxlZExvZyxcbiAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgIH07IC8vICRGbG93Rml4TWUgRmxvdyB0aGlua3MgY29uc29sZSBpcyBpbW11dGFibGUuXG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGNvbnNvbGUsIHtcbiAgICAgICAgaW5mbzogcHJvcHMsXG4gICAgICAgIGxvZzogcHJvcHMsXG4gICAgICAgIHdhcm46IHByb3BzLFxuICAgICAgICBlcnJvcjogcHJvcHMsXG4gICAgICAgIGdyb3VwOiBwcm9wcyxcbiAgICAgICAgZ3JvdXBDb2xsYXBzZWQ6IHByb3BzLFxuICAgICAgICBncm91cEVuZDogcHJvcHNcbiAgICAgIH0pO1xuICAgICAgLyogZXNsaW50LWVuYWJsZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmcgKi9cbiAgICB9XG5cbiAgICBkaXNhYmxlZERlcHRoKys7XG4gIH1cbn1cbmZ1bmN0aW9uIHJlZW5hYmxlTG9ncygpIHtcbiAge1xuICAgIGRpc2FibGVkRGVwdGgtLTtcblxuICAgIGlmIChkaXNhYmxlZERlcHRoID09PSAwKSB7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmcgKi9cbiAgICAgIHZhciBwcm9wcyA9IHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgfTsgLy8gJEZsb3dGaXhNZSBGbG93IHRoaW5rcyBjb25zb2xlIGlzIGltbXV0YWJsZS5cblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoY29uc29sZSwge1xuICAgICAgICBsb2c6IF9hc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZMb2dcbiAgICAgICAgfSksXG4gICAgICAgIGluZm86IF9hc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZJbmZvXG4gICAgICAgIH0pLFxuICAgICAgICB3YXJuOiBfYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2V2FyblxuICAgICAgICB9KSxcbiAgICAgICAgZXJyb3I6IF9hc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZFcnJvclxuICAgICAgICB9KSxcbiAgICAgICAgZ3JvdXA6IF9hc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZHcm91cFxuICAgICAgICB9KSxcbiAgICAgICAgZ3JvdXBDb2xsYXBzZWQ6IF9hc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZHcm91cENvbGxhcHNlZFxuICAgICAgICB9KSxcbiAgICAgICAgZ3JvdXBFbmQ6IF9hc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZHcm91cEVuZFxuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZyAqL1xuICAgIH1cblxuICAgIGlmIChkaXNhYmxlZERlcHRoIDwgMCkge1xuICAgICAgZXJyb3IoJ2Rpc2FibGVkRGVwdGggZmVsbCBiZWxvdyB6ZXJvLiAnICsgJ1RoaXMgaXMgYSBidWcgaW4gUmVhY3QuIFBsZWFzZSBmaWxlIGFuIGlzc3VlLicpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgUmVhY3RDdXJyZW50RGlzcGF0Y2hlciA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlJlYWN0Q3VycmVudERpc3BhdGNoZXI7XG52YXIgcHJlZml4O1xuZnVuY3Rpb24gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUobmFtZSwgc291cmNlLCBvd25lckZuKSB7XG4gIHtcbiAgICBpZiAocHJlZml4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIEV4dHJhY3QgdGhlIFZNIHNwZWNpZmljIHByZWZpeCB1c2VkIGJ5IGVhY2ggbGluZS5cbiAgICAgIHRyeSB7XG4gICAgICAgIHRocm93IEVycm9yKCk7XG4gICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgIHZhciBtYXRjaCA9IHguc3RhY2sudHJpbSgpLm1hdGNoKC9cXG4oICooYXQgKT8pLyk7XG4gICAgICAgIHByZWZpeCA9IG1hdGNoICYmIG1hdGNoWzFdIHx8ICcnO1xuICAgICAgfVxuICAgIH0gLy8gV2UgdXNlIHRoZSBwcmVmaXggdG8gZW5zdXJlIG91ciBzdGFja3MgbGluZSB1cCB3aXRoIG5hdGl2ZSBzdGFjayBmcmFtZXMuXG5cblxuICAgIHJldHVybiAnXFxuJyArIHByZWZpeCArIG5hbWU7XG4gIH1cbn1cbnZhciByZWVudHJ5ID0gZmFsc2U7XG52YXIgY29tcG9uZW50RnJhbWVDYWNoZTtcblxue1xuICB2YXIgUG9zc2libHlXZWFrTWFwID0gdHlwZW9mIFdlYWtNYXAgPT09ICdmdW5jdGlvbicgPyBXZWFrTWFwIDogTWFwO1xuICBjb21wb25lbnRGcmFtZUNhY2hlID0gbmV3IFBvc3NpYmx5V2Vha01hcCgpO1xufVxuXG5mdW5jdGlvbiBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKGZuLCBjb25zdHJ1Y3QpIHtcbiAgLy8gSWYgc29tZXRoaW5nIGFza2VkIGZvciBhIHN0YWNrIGluc2lkZSBhIGZha2UgcmVuZGVyLCBpdCBzaG91bGQgZ2V0IGlnbm9yZWQuXG4gIGlmICghZm4gfHwgcmVlbnRyeSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHtcbiAgICB2YXIgZnJhbWUgPSBjb21wb25lbnRGcmFtZUNhY2hlLmdldChmbik7XG5cbiAgICBpZiAoZnJhbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZyYW1lO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjb250cm9sO1xuICByZWVudHJ5ID0gdHJ1ZTtcbiAgdmFyIHByZXZpb3VzUHJlcGFyZVN0YWNrVHJhY2UgPSBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZTsgLy8gJEZsb3dGaXhNZSBJdCBkb2VzIGFjY2VwdCB1bmRlZmluZWQuXG5cbiAgRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSB1bmRlZmluZWQ7XG4gIHZhciBwcmV2aW91c0Rpc3BhdGNoZXI7XG5cbiAge1xuICAgIHByZXZpb3VzRGlzcGF0Y2hlciA9IFJlYWN0Q3VycmVudERpc3BhdGNoZXIuY3VycmVudDsgLy8gU2V0IHRoZSBkaXNwYXRjaGVyIGluIERFViBiZWNhdXNlIHRoaXMgbWlnaHQgYmUgY2FsbCBpbiB0aGUgcmVuZGVyIGZ1bmN0aW9uXG4gICAgLy8gZm9yIHdhcm5pbmdzLlxuXG4gICAgUmVhY3RDdXJyZW50RGlzcGF0Y2hlci5jdXJyZW50ID0gbnVsbDtcbiAgICBkaXNhYmxlTG9ncygpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICAvLyBUaGlzIHNob3VsZCB0aHJvdy5cbiAgICBpZiAoY29uc3RydWN0KSB7XG4gICAgICAvLyBTb21ldGhpbmcgc2hvdWxkIGJlIHNldHRpbmcgdGhlIHByb3BzIGluIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgIHZhciBGYWtlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aHJvdyBFcnJvcigpO1xuICAgICAgfTsgLy8gJEZsb3dGaXhNZVxuXG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGYWtlLnByb3RvdHlwZSwgJ3Byb3BzJywge1xuICAgICAgICBzZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAvLyBXZSB1c2UgYSB0aHJvd2luZyBzZXR0ZXIgaW5zdGVhZCBvZiBmcm96ZW4gb3Igbm9uLXdyaXRhYmxlIHByb3BzXG4gICAgICAgICAgLy8gYmVjYXVzZSB0aGF0IHdvbid0IHRocm93IGluIGEgbm9uLXN0cmljdCBtb2RlIGZ1bmN0aW9uLlxuICAgICAgICAgIHRocm93IEVycm9yKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09ICdvYmplY3QnICYmIFJlZmxlY3QuY29uc3RydWN0KSB7XG4gICAgICAgIC8vIFdlIGNvbnN0cnVjdCBhIGRpZmZlcmVudCBjb250cm9sIGZvciB0aGlzIGNhc2UgdG8gaW5jbHVkZSBhbnkgZXh0cmFcbiAgICAgICAgLy8gZnJhbWVzIGFkZGVkIGJ5IHRoZSBjb25zdHJ1Y3QgY2FsbC5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBSZWZsZWN0LmNvbnN0cnVjdChGYWtlLCBbXSk7XG4gICAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgICBjb250cm9sID0geDtcbiAgICAgICAgfVxuXG4gICAgICAgIFJlZmxlY3QuY29uc3RydWN0KGZuLCBbXSwgRmFrZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIEZha2UuY2FsbCgpO1xuICAgICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgICAgY29udHJvbCA9IHg7XG4gICAgICAgIH1cblxuICAgICAgICBmbi5jYWxsKEZha2UucHJvdG90eXBlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgY29udHJvbCA9IHg7XG4gICAgICB9XG5cbiAgICAgIGZuKCk7XG4gICAgfVxuICB9IGNhdGNoIChzYW1wbGUpIHtcbiAgICAvLyBUaGlzIGlzIGlubGluZWQgbWFudWFsbHkgYmVjYXVzZSBjbG9zdXJlIGRvZXNuJ3QgZG8gaXQgZm9yIHVzLlxuICAgIGlmIChzYW1wbGUgJiYgY29udHJvbCAmJiB0eXBlb2Ygc2FtcGxlLnN0YWNrID09PSAnc3RyaW5nJykge1xuICAgICAgLy8gVGhpcyBleHRyYWN0cyB0aGUgZmlyc3QgZnJhbWUgZnJvbSB0aGUgc2FtcGxlIHRoYXQgaXNuJ3QgYWxzbyBpbiB0aGUgY29udHJvbC5cbiAgICAgIC8vIFNraXBwaW5nIG9uZSBmcmFtZSB0aGF0IHdlIGFzc3VtZSBpcyB0aGUgZnJhbWUgdGhhdCBjYWxscyB0aGUgdHdvLlxuICAgICAgdmFyIHNhbXBsZUxpbmVzID0gc2FtcGxlLnN0YWNrLnNwbGl0KCdcXG4nKTtcbiAgICAgIHZhciBjb250cm9sTGluZXMgPSBjb250cm9sLnN0YWNrLnNwbGl0KCdcXG4nKTtcbiAgICAgIHZhciBzID0gc2FtcGxlTGluZXMubGVuZ3RoIC0gMTtcbiAgICAgIHZhciBjID0gY29udHJvbExpbmVzLmxlbmd0aCAtIDE7XG5cbiAgICAgIHdoaWxlIChzID49IDEgJiYgYyA+PSAwICYmIHNhbXBsZUxpbmVzW3NdICE9PSBjb250cm9sTGluZXNbY10pIHtcbiAgICAgICAgLy8gV2UgZXhwZWN0IGF0IGxlYXN0IG9uZSBzdGFjayBmcmFtZSB0byBiZSBzaGFyZWQuXG4gICAgICAgIC8vIFR5cGljYWxseSB0aGlzIHdpbGwgYmUgdGhlIHJvb3QgbW9zdCBvbmUuIEhvd2V2ZXIsIHN0YWNrIGZyYW1lcyBtYXkgYmVcbiAgICAgICAgLy8gY3V0IG9mZiBkdWUgdG8gbWF4aW11bSBzdGFjayBsaW1pdHMuIEluIHRoaXMgY2FzZSwgb25lIG1heWJlIGN1dCBvZmZcbiAgICAgICAgLy8gZWFybGllciB0aGFuIHRoZSBvdGhlci4gV2UgYXNzdW1lIHRoYXQgdGhlIHNhbXBsZSBpcyBsb25nZXIgb3IgdGhlIHNhbWVcbiAgICAgICAgLy8gYW5kIHRoZXJlIGZvciBjdXQgb2ZmIGVhcmxpZXIuIFNvIHdlIHNob3VsZCBmaW5kIHRoZSByb290IG1vc3QgZnJhbWUgaW5cbiAgICAgICAgLy8gdGhlIHNhbXBsZSBzb21ld2hlcmUgaW4gdGhlIGNvbnRyb2wuXG4gICAgICAgIGMtLTtcbiAgICAgIH1cblxuICAgICAgZm9yICg7IHMgPj0gMSAmJiBjID49IDA7IHMtLSwgYy0tKSB7XG4gICAgICAgIC8vIE5leHQgd2UgZmluZCB0aGUgZmlyc3Qgb25lIHRoYXQgaXNuJ3QgdGhlIHNhbWUgd2hpY2ggc2hvdWxkIGJlIHRoZVxuICAgICAgICAvLyBmcmFtZSB0aGF0IGNhbGxlZCBvdXIgc2FtcGxlIGZ1bmN0aW9uIGFuZCB0aGUgY29udHJvbC5cbiAgICAgICAgaWYgKHNhbXBsZUxpbmVzW3NdICE9PSBjb250cm9sTGluZXNbY10pIHtcbiAgICAgICAgICAvLyBJbiBWOCwgdGhlIGZpcnN0IGxpbmUgaXMgZGVzY3JpYmluZyB0aGUgbWVzc2FnZSBidXQgb3RoZXIgVk1zIGRvbid0LlxuICAgICAgICAgIC8vIElmIHdlJ3JlIGFib3V0IHRvIHJldHVybiB0aGUgZmlyc3QgbGluZSwgYW5kIHRoZSBjb250cm9sIGlzIGFsc28gb24gdGhlIHNhbWVcbiAgICAgICAgICAvLyBsaW5lLCB0aGF0J3MgYSBwcmV0dHkgZ29vZCBpbmRpY2F0b3IgdGhhdCBvdXIgc2FtcGxlIHRocmV3IGF0IHNhbWUgbGluZSBhc1xuICAgICAgICAgIC8vIHRoZSBjb250cm9sLiBJLmUuIGJlZm9yZSB3ZSBlbnRlcmVkIHRoZSBzYW1wbGUgZnJhbWUuIFNvIHdlIGlnbm9yZSB0aGlzIHJlc3VsdC5cbiAgICAgICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gaWYgeW91IHBhc3NlZCBhIGNsYXNzIHRvIGZ1bmN0aW9uIGNvbXBvbmVudCwgb3Igbm9uLWZ1bmN0aW9uLlxuICAgICAgICAgIGlmIChzICE9PSAxIHx8IGMgIT09IDEpIHtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgcy0tO1xuICAgICAgICAgICAgICBjLS07IC8vIFdlIG1heSBzdGlsbCBoYXZlIHNpbWlsYXIgaW50ZXJtZWRpYXRlIGZyYW1lcyBmcm9tIHRoZSBjb25zdHJ1Y3QgY2FsbC5cbiAgICAgICAgICAgICAgLy8gVGhlIG5leHQgb25lIHRoYXQgaXNuJ3QgdGhlIHNhbWUgc2hvdWxkIGJlIG91ciBtYXRjaCB0aG91Z2guXG5cbiAgICAgICAgICAgICAgaWYgKGMgPCAwIHx8IHNhbXBsZUxpbmVzW3NdICE9PSBjb250cm9sTGluZXNbY10pIHtcbiAgICAgICAgICAgICAgICAvLyBWOCBhZGRzIGEgXCJuZXdcIiBwcmVmaXggZm9yIG5hdGl2ZSBjbGFzc2VzLiBMZXQncyByZW1vdmUgaXQgdG8gbWFrZSBpdCBwcmV0dGllci5cbiAgICAgICAgICAgICAgICB2YXIgX2ZyYW1lID0gJ1xcbicgKyBzYW1wbGVMaW5lc1tzXS5yZXBsYWNlKCcgYXQgbmV3ICcsICcgYXQgJyk7XG5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudEZyYW1lQ2FjaGUuc2V0KGZuLCBfZnJhbWUpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gLy8gUmV0dXJuIHRoZSBsaW5lIHdlIGZvdW5kLlxuXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gX2ZyYW1lO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IHdoaWxlIChzID49IDEgJiYgYyA+PSAwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICByZWVudHJ5ID0gZmFsc2U7XG5cbiAgICB7XG4gICAgICBSZWFjdEN1cnJlbnREaXNwYXRjaGVyLmN1cnJlbnQgPSBwcmV2aW91c0Rpc3BhdGNoZXI7XG4gICAgICByZWVuYWJsZUxvZ3MoKTtcbiAgICB9XG5cbiAgICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHByZXZpb3VzUHJlcGFyZVN0YWNrVHJhY2U7XG4gIH0gLy8gRmFsbGJhY2sgdG8ganVzdCB1c2luZyB0aGUgbmFtZSBpZiB3ZSBjb3VsZG4ndCBtYWtlIGl0IHRocm93LlxuXG5cbiAgdmFyIG5hbWUgPSBmbiA/IGZuLmRpc3BsYXlOYW1lIHx8IGZuLm5hbWUgOiAnJztcbiAgdmFyIHN5bnRoZXRpY0ZyYW1lID0gbmFtZSA/IGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKG5hbWUpIDogJyc7XG5cbiAge1xuICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbXBvbmVudEZyYW1lQ2FjaGUuc2V0KGZuLCBzeW50aGV0aWNGcmFtZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN5bnRoZXRpY0ZyYW1lO1xufVxuZnVuY3Rpb24gZGVzY3JpYmVGdW5jdGlvbkNvbXBvbmVudEZyYW1lKGZuLCBzb3VyY2UsIG93bmVyRm4pIHtcbiAge1xuICAgIHJldHVybiBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKGZuLCBmYWxzZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2hvdWxkQ29uc3RydWN0KENvbXBvbmVudCkge1xuICB2YXIgcHJvdG90eXBlID0gQ29tcG9uZW50LnByb3RvdHlwZTtcbiAgcmV0dXJuICEhKHByb3RvdHlwZSAmJiBwcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCk7XG59XG5cbmZ1bmN0aW9uIGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVih0eXBlLCBzb3VyY2UsIG93bmVyRm4pIHtcblxuICBpZiAodHlwZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAge1xuICAgICAgcmV0dXJuIGRlc2NyaWJlTmF0aXZlQ29tcG9uZW50RnJhbWUodHlwZSwgc2hvdWxkQ29uc3RydWN0KHR5cGUpKTtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKHR5cGUpO1xuICB9XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9UWVBFOlxuICAgICAgcmV0dXJuIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKCdTdXNwZW5zZScpO1xuXG4gICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEU6XG4gICAgICByZXR1cm4gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUoJ1N1c3BlbnNlTGlzdCcpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnb2JqZWN0Jykge1xuICAgIHN3aXRjaCAodHlwZS4kJHR5cGVvZikge1xuICAgICAgY2FzZSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFOlxuICAgICAgICByZXR1cm4gZGVzY3JpYmVGdW5jdGlvbkNvbXBvbmVudEZyYW1lKHR5cGUucmVuZGVyKTtcblxuICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgIC8vIE1lbW8gbWF5IGNvbnRhaW4gYW55IGNvbXBvbmVudCB0eXBlIHNvIHdlIHJlY3Vyc2l2ZWx5IHJlc29sdmUgaXQuXG4gICAgICAgIHJldHVybiBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYodHlwZS50eXBlLCBzb3VyY2UsIG93bmVyRm4pO1xuXG4gICAgICBjYXNlIFJFQUNUX0JMT0NLX1RZUEU6XG4gICAgICAgIHJldHVybiBkZXNjcmliZUZ1bmN0aW9uQ29tcG9uZW50RnJhbWUodHlwZS5fcmVuZGVyKTtcblxuICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgbGF6eUNvbXBvbmVudCA9IHR5cGU7XG4gICAgICAgICAgdmFyIHBheWxvYWQgPSBsYXp5Q29tcG9uZW50Ll9wYXlsb2FkO1xuICAgICAgICAgIHZhciBpbml0ID0gbGF6eUNvbXBvbmVudC5faW5pdDtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBMYXp5IG1heSBjb250YWluIGFueSBjb21wb25lbnQgdHlwZSBzbyB3ZSByZWN1cnNpdmVseSByZXNvbHZlIGl0LlxuICAgICAgICAgICAgcmV0dXJuIGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVihpbml0KHBheWxvYWQpLCBzb3VyY2UsIG93bmVyRm4pO1xuICAgICAgICAgIH0gY2F0Y2ggKHgpIHt9XG4gICAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gJyc7XG59XG5cbnZhciBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7fTtcbnZhciBSZWFjdERlYnVnQ3VycmVudEZyYW1lID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZTtcblxuZnVuY3Rpb24gc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQoZWxlbWVudCkge1xuICB7XG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIHZhciBvd25lciA9IGVsZW1lbnQuX293bmVyO1xuICAgICAgdmFyIHN0YWNrID0gZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKGVsZW1lbnQudHlwZSwgZWxlbWVudC5fc291cmNlLCBvd25lciA/IG93bmVyLnR5cGUgOiBudWxsKTtcbiAgICAgIFJlYWN0RGVidWdDdXJyZW50RnJhbWUuc2V0RXh0cmFTdGFja0ZyYW1lKHN0YWNrKTtcbiAgICB9IGVsc2Uge1xuICAgICAgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZS5zZXRFeHRyYVN0YWNrRnJhbWUobnVsbCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrUHJvcFR5cGVzKHR5cGVTcGVjcywgdmFsdWVzLCBsb2NhdGlvbiwgY29tcG9uZW50TmFtZSwgZWxlbWVudCkge1xuICB7XG4gICAgLy8gJEZsb3dGaXhNZSBUaGlzIGlzIG9rYXkgYnV0IEZsb3cgZG9lc24ndCBrbm93IGl0LlxuICAgIHZhciBoYXMgPSBGdW5jdGlvbi5jYWxsLmJpbmQoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSk7XG5cbiAgICBmb3IgKHZhciB0eXBlU3BlY05hbWUgaW4gdHlwZVNwZWNzKSB7XG4gICAgICBpZiAoaGFzKHR5cGVTcGVjcywgdHlwZVNwZWNOYW1lKSkge1xuICAgICAgICB2YXIgZXJyb3IkMSA9IHZvaWQgMDsgLy8gUHJvcCB0eXBlIHZhbGlkYXRpb24gbWF5IHRocm93LiBJbiBjYXNlIHRoZXkgZG8sIHdlIGRvbid0IHdhbnQgdG9cbiAgICAgICAgLy8gZmFpbCB0aGUgcmVuZGVyIHBoYXNlIHdoZXJlIGl0IGRpZG4ndCBmYWlsIGJlZm9yZS4gU28gd2UgbG9nIGl0LlxuICAgICAgICAvLyBBZnRlciB0aGVzZSBoYXZlIGJlZW4gY2xlYW5lZCB1cCwgd2UnbGwgbGV0IHRoZW0gdGhyb3cuXG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgYW4gaW52YXJpYW50IHRoYXQgZ2V0cyBjYXVnaHQuIEl0J3MgdGhlIHNhbWVcbiAgICAgICAgICAvLyBiZWhhdmlvciBhcyB3aXRob3V0IHRoaXMgc3RhdGVtZW50IGV4Y2VwdCB3aXRoIGEgYmV0dGVyIG1lc3NhZ2UuXG4gICAgICAgICAgaWYgKHR5cGVvZiB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdmFyIGVyciA9IEVycm9yKChjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycpICsgJzogJyArIGxvY2F0aW9uICsgJyB0eXBlIGAnICsgdHlwZVNwZWNOYW1lICsgJ2AgaXMgaW52YWxpZDsgJyArICdpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UsIGJ1dCByZWNlaXZlZCBgJyArIHR5cGVvZiB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSArICdgLicgKyAnVGhpcyBvZnRlbiBoYXBwZW5zIGJlY2F1c2Ugb2YgdHlwb3Mgc3VjaCBhcyBgUHJvcFR5cGVzLmZ1bmN0aW9uYCBpbnN0ZWFkIG9mIGBQcm9wVHlwZXMuZnVuY2AuJyk7XG4gICAgICAgICAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBlcnJvciQxID0gdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0odmFsdWVzLCB0eXBlU3BlY05hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBudWxsLCAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnKTtcbiAgICAgICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgICBlcnJvciQxID0gZXg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXJyb3IkMSAmJiAhKGVycm9yJDEgaW5zdGFuY2VvZiBFcnJvcikpIHtcbiAgICAgICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudChlbGVtZW50KTtcblxuICAgICAgICAgIGVycm9yKCclczogdHlwZSBzcGVjaWZpY2F0aW9uIG9mICVzJyArICcgYCVzYCBpcyBpbnZhbGlkOyB0aGUgdHlwZSBjaGVja2VyICcgKyAnZnVuY3Rpb24gbXVzdCByZXR1cm4gYG51bGxgIG9yIGFuIGBFcnJvcmAgYnV0IHJldHVybmVkIGEgJXMuICcgKyAnWW91IG1heSBoYXZlIGZvcmdvdHRlbiB0byBwYXNzIGFuIGFyZ3VtZW50IHRvIHRoZSB0eXBlIGNoZWNrZXIgJyArICdjcmVhdG9yIChhcnJheU9mLCBpbnN0YW5jZU9mLCBvYmplY3RPZiwgb25lT2YsIG9uZU9mVHlwZSwgYW5kICcgKyAnc2hhcGUgYWxsIHJlcXVpcmUgYW4gYXJndW1lbnQpLicsIGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJywgbG9jYXRpb24sIHR5cGVTcGVjTmFtZSwgdHlwZW9mIGVycm9yJDEpO1xuXG4gICAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXJyb3IkMSBpbnN0YW5jZW9mIEVycm9yICYmICEoZXJyb3IkMS5tZXNzYWdlIGluIGxvZ2dlZFR5cGVGYWlsdXJlcykpIHtcbiAgICAgICAgICAvLyBPbmx5IG1vbml0b3IgdGhpcyBmYWlsdXJlIG9uY2UgYmVjYXVzZSB0aGVyZSB0ZW5kcyB0byBiZSBhIGxvdCBvZiB0aGVcbiAgICAgICAgICAvLyBzYW1lIGVycm9yLlxuICAgICAgICAgIGxvZ2dlZFR5cGVGYWlsdXJlc1tlcnJvciQxLm1lc3NhZ2VdID0gdHJ1ZTtcbiAgICAgICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudChlbGVtZW50KTtcblxuICAgICAgICAgIGVycm9yKCdGYWlsZWQgJXMgdHlwZTogJXMnLCBsb2NhdGlvbiwgZXJyb3IkMS5tZXNzYWdlKTtcblxuICAgICAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlJlYWN0Q3VycmVudE93bmVyO1xudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBSRVNFUlZFRF9QUk9QUyA9IHtcbiAga2V5OiB0cnVlLFxuICByZWY6IHRydWUsXG4gIF9fc2VsZjogdHJ1ZSxcbiAgX19zb3VyY2U6IHRydWVcbn07XG52YXIgc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd247XG52YXIgc3BlY2lhbFByb3BSZWZXYXJuaW5nU2hvd247XG52YXIgZGlkV2FybkFib3V0U3RyaW5nUmVmcztcblxue1xuICBkaWRXYXJuQWJvdXRTdHJpbmdSZWZzID0ge307XG59XG5cbmZ1bmN0aW9uIGhhc1ZhbGlkUmVmKGNvbmZpZykge1xuICB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAncmVmJykpIHtcbiAgICAgIHZhciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ3JlZicpLmdldDtcblxuICAgICAgaWYgKGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb25maWcucmVmICE9PSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGhhc1ZhbGlkS2V5KGNvbmZpZykge1xuICB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAna2V5JykpIHtcbiAgICAgIHZhciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ2tleScpLmdldDtcblxuICAgICAgaWYgKGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb25maWcua2V5ICE9PSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHdhcm5JZlN0cmluZ1JlZkNhbm5vdEJlQXV0b0NvbnZlcnRlZChjb25maWcsIHNlbGYpIHtcbiAge1xuICAgIGlmICh0eXBlb2YgY29uZmlnLnJlZiA9PT0gJ3N0cmluZycgJiYgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCAmJiBzZWxmICYmIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuc3RhdGVOb2RlICE9PSBzZWxmKSB7XG4gICAgICB2YXIgY29tcG9uZW50TmFtZSA9IGdldENvbXBvbmVudE5hbWUoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC50eXBlKTtcblxuICAgICAgaWYgKCFkaWRXYXJuQWJvdXRTdHJpbmdSZWZzW2NvbXBvbmVudE5hbWVdKSB7XG4gICAgICAgIGVycm9yKCdDb21wb25lbnQgXCIlc1wiIGNvbnRhaW5zIHRoZSBzdHJpbmcgcmVmIFwiJXNcIi4gJyArICdTdXBwb3J0IGZvciBzdHJpbmcgcmVmcyB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgbWFqb3IgcmVsZWFzZS4gJyArICdUaGlzIGNhc2UgY2Fubm90IGJlIGF1dG9tYXRpY2FsbHkgY29udmVydGVkIHRvIGFuIGFycm93IGZ1bmN0aW9uLiAnICsgJ1dlIGFzayB5b3UgdG8gbWFudWFsbHkgZml4IHRoaXMgY2FzZSBieSB1c2luZyB1c2VSZWYoKSBvciBjcmVhdGVSZWYoKSBpbnN0ZWFkLiAnICsgJ0xlYXJuIG1vcmUgYWJvdXQgdXNpbmcgcmVmcyBzYWZlbHkgaGVyZTogJyArICdodHRwczovL3JlYWN0anMub3JnL2xpbmsvc3RyaWN0LW1vZGUtc3RyaW5nLXJlZicsIGdldENvbXBvbmVudE5hbWUoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC50eXBlKSwgY29uZmlnLnJlZik7XG5cbiAgICAgICAgZGlkV2FybkFib3V0U3RyaW5nUmVmc1tjb21wb25lbnROYW1lXSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGRlZmluZUtleVByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSkge1xuICB7XG4gICAgdmFyIHdhcm5BYm91dEFjY2Vzc2luZ0tleSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd24pIHtcbiAgICAgICAgc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd24gPSB0cnVlO1xuXG4gICAgICAgIGVycm9yKCclczogYGtleWAgaXMgbm90IGEgcHJvcC4gVHJ5aW5nIHRvIGFjY2VzcyBpdCB3aWxsIHJlc3VsdCAnICsgJ2luIGB1bmRlZmluZWRgIGJlaW5nIHJldHVybmVkLiBJZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIHNhbWUgJyArICd2YWx1ZSB3aXRoaW4gdGhlIGNoaWxkIGNvbXBvbmVudCwgeW91IHNob3VsZCBwYXNzIGl0IGFzIGEgZGlmZmVyZW50ICcgKyAncHJvcC4gKGh0dHBzOi8vcmVhY3Rqcy5vcmcvbGluay9zcGVjaWFsLXByb3BzKScsIGRpc3BsYXlOYW1lKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgd2FybkFib3V0QWNjZXNzaW5nS2V5LmlzUmVhY3RXYXJuaW5nID0gdHJ1ZTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvcHMsICdrZXknLCB7XG4gICAgICBnZXQ6IHdhcm5BYm91dEFjY2Vzc2luZ0tleSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRlZmluZVJlZlByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSkge1xuICB7XG4gICAgdmFyIHdhcm5BYm91dEFjY2Vzc2luZ1JlZiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghc3BlY2lhbFByb3BSZWZXYXJuaW5nU2hvd24pIHtcbiAgICAgICAgc3BlY2lhbFByb3BSZWZXYXJuaW5nU2hvd24gPSB0cnVlO1xuXG4gICAgICAgIGVycm9yKCclczogYHJlZmAgaXMgbm90IGEgcHJvcC4gVHJ5aW5nIHRvIGFjY2VzcyBpdCB3aWxsIHJlc3VsdCAnICsgJ2luIGB1bmRlZmluZWRgIGJlaW5nIHJldHVybmVkLiBJZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIHNhbWUgJyArICd2YWx1ZSB3aXRoaW4gdGhlIGNoaWxkIGNvbXBvbmVudCwgeW91IHNob3VsZCBwYXNzIGl0IGFzIGEgZGlmZmVyZW50ICcgKyAncHJvcC4gKGh0dHBzOi8vcmVhY3Rqcy5vcmcvbGluay9zcGVjaWFsLXByb3BzKScsIGRpc3BsYXlOYW1lKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgd2FybkFib3V0QWNjZXNzaW5nUmVmLmlzUmVhY3RXYXJuaW5nID0gdHJ1ZTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvcHMsICdyZWYnLCB7XG4gICAgICBnZXQ6IHdhcm5BYm91dEFjY2Vzc2luZ1JlZixcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG59XG4vKipcbiAqIEZhY3RvcnkgbWV0aG9kIHRvIGNyZWF0ZSBhIG5ldyBSZWFjdCBlbGVtZW50LiBUaGlzIG5vIGxvbmdlciBhZGhlcmVzIHRvXG4gKiB0aGUgY2xhc3MgcGF0dGVybiwgc28gZG8gbm90IHVzZSBuZXcgdG8gY2FsbCBpdC4gQWxzbywgaW5zdGFuY2VvZiBjaGVja1xuICogd2lsbCBub3Qgd29yay4gSW5zdGVhZCB0ZXN0ICQkdHlwZW9mIGZpZWxkIGFnYWluc3QgU3ltYm9sLmZvcigncmVhY3QuZWxlbWVudCcpIHRvIGNoZWNrXG4gKiBpZiBzb21ldGhpbmcgaXMgYSBSZWFjdCBFbGVtZW50LlxuICpcbiAqIEBwYXJhbSB7Kn0gdHlwZVxuICogQHBhcmFtIHsqfSBwcm9wc1xuICogQHBhcmFtIHsqfSBrZXlcbiAqIEBwYXJhbSB7c3RyaW5nfG9iamVjdH0gcmVmXG4gKiBAcGFyYW0geyp9IG93bmVyXG4gKiBAcGFyYW0geyp9IHNlbGYgQSAqdGVtcG9yYXJ5KiBoZWxwZXIgdG8gZGV0ZWN0IHBsYWNlcyB3aGVyZSBgdGhpc2AgaXNcbiAqIGRpZmZlcmVudCBmcm9tIHRoZSBgb3duZXJgIHdoZW4gUmVhY3QuY3JlYXRlRWxlbWVudCBpcyBjYWxsZWQsIHNvIHRoYXQgd2VcbiAqIGNhbiB3YXJuLiBXZSB3YW50IHRvIGdldCByaWQgb2Ygb3duZXIgYW5kIHJlcGxhY2Ugc3RyaW5nIGByZWZgcyB3aXRoIGFycm93XG4gKiBmdW5jdGlvbnMsIGFuZCBhcyBsb25nIGFzIGB0aGlzYCBhbmQgb3duZXIgYXJlIHRoZSBzYW1lLCB0aGVyZSB3aWxsIGJlIG5vXG4gKiBjaGFuZ2UgaW4gYmVoYXZpb3IuXG4gKiBAcGFyYW0geyp9IHNvdXJjZSBBbiBhbm5vdGF0aW9uIG9iamVjdCAoYWRkZWQgYnkgYSB0cmFuc3BpbGVyIG9yIG90aGVyd2lzZSlcbiAqIGluZGljYXRpbmcgZmlsZW5hbWUsIGxpbmUgbnVtYmVyLCBhbmQvb3Igb3RoZXIgaW5mb3JtYXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG5cbnZhciBSZWFjdEVsZW1lbnQgPSBmdW5jdGlvbiAodHlwZSwga2V5LCByZWYsIHNlbGYsIHNvdXJjZSwgb3duZXIsIHByb3BzKSB7XG4gIHZhciBlbGVtZW50ID0ge1xuICAgIC8vIFRoaXMgdGFnIGFsbG93cyB1cyB0byB1bmlxdWVseSBpZGVudGlmeSB0aGlzIGFzIGEgUmVhY3QgRWxlbWVudFxuICAgICQkdHlwZW9mOiBSRUFDVF9FTEVNRU5UX1RZUEUsXG4gICAgLy8gQnVpbHQtaW4gcHJvcGVydGllcyB0aGF0IGJlbG9uZyBvbiB0aGUgZWxlbWVudFxuICAgIHR5cGU6IHR5cGUsXG4gICAga2V5OiBrZXksXG4gICAgcmVmOiByZWYsXG4gICAgcHJvcHM6IHByb3BzLFxuICAgIC8vIFJlY29yZCB0aGUgY29tcG9uZW50IHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGlzIGVsZW1lbnQuXG4gICAgX293bmVyOiBvd25lclxuICB9O1xuXG4gIHtcbiAgICAvLyBUaGUgdmFsaWRhdGlvbiBmbGFnIGlzIGN1cnJlbnRseSBtdXRhdGl2ZS4gV2UgcHV0IGl0IG9uXG4gICAgLy8gYW4gZXh0ZXJuYWwgYmFja2luZyBzdG9yZSBzbyB0aGF0IHdlIGNhbiBmcmVlemUgdGhlIHdob2xlIG9iamVjdC5cbiAgICAvLyBUaGlzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgV2Vha01hcCBvbmNlIHRoZXkgYXJlIGltcGxlbWVudGVkIGluXG4gICAgLy8gY29tbW9ubHkgdXNlZCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuXG4gICAgZWxlbWVudC5fc3RvcmUgPSB7fTsgLy8gVG8gbWFrZSBjb21wYXJpbmcgUmVhY3RFbGVtZW50cyBlYXNpZXIgZm9yIHRlc3RpbmcgcHVycG9zZXMsIHdlIG1ha2VcbiAgICAvLyB0aGUgdmFsaWRhdGlvbiBmbGFnIG5vbi1lbnVtZXJhYmxlICh3aGVyZSBwb3NzaWJsZSwgd2hpY2ggc2hvdWxkXG4gICAgLy8gaW5jbHVkZSBldmVyeSBlbnZpcm9ubWVudCB3ZSBydW4gdGVzdHMgaW4pLCBzbyB0aGUgdGVzdCBmcmFtZXdvcmtcbiAgICAvLyBpZ25vcmVzIGl0LlxuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsZW1lbnQuX3N0b3JlLCAndmFsaWRhdGVkJywge1xuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICB2YWx1ZTogZmFsc2VcbiAgICB9KTsgLy8gc2VsZiBhbmQgc291cmNlIGFyZSBERVYgb25seSBwcm9wZXJ0aWVzLlxuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsZW1lbnQsICdfc2VsZicsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgIHZhbHVlOiBzZWxmXG4gICAgfSk7IC8vIFR3byBlbGVtZW50cyBjcmVhdGVkIGluIHR3byBkaWZmZXJlbnQgcGxhY2VzIHNob3VsZCBiZSBjb25zaWRlcmVkXG4gICAgLy8gZXF1YWwgZm9yIHRlc3RpbmcgcHVycG9zZXMgYW5kIHRoZXJlZm9yZSB3ZSBoaWRlIGl0IGZyb20gZW51bWVyYXRpb24uXG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudCwgJ19zb3VyY2UnLCB7XG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICB2YWx1ZTogc291cmNlXG4gICAgfSk7XG5cbiAgICBpZiAoT2JqZWN0LmZyZWV6ZSkge1xuICAgICAgT2JqZWN0LmZyZWV6ZShlbGVtZW50LnByb3BzKTtcbiAgICAgIE9iamVjdC5mcmVlemUoZWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnQ7XG59O1xuLyoqXG4gKiBodHRwczovL2dpdGh1Yi5jb20vcmVhY3Rqcy9yZmNzL3B1bGwvMTA3XG4gKiBAcGFyYW0geyp9IHR5cGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICovXG5cbmZ1bmN0aW9uIGpzeERFVih0eXBlLCBjb25maWcsIG1heWJlS2V5LCBzb3VyY2UsIHNlbGYpIHtcbiAge1xuICAgIHZhciBwcm9wTmFtZTsgLy8gUmVzZXJ2ZWQgbmFtZXMgYXJlIGV4dHJhY3RlZFxuXG4gICAgdmFyIHByb3BzID0ge307XG4gICAgdmFyIGtleSA9IG51bGw7XG4gICAgdmFyIHJlZiA9IG51bGw7IC8vIEN1cnJlbnRseSwga2V5IGNhbiBiZSBzcHJlYWQgaW4gYXMgYSBwcm9wLiBUaGlzIGNhdXNlcyBhIHBvdGVudGlhbFxuICAgIC8vIGlzc3VlIGlmIGtleSBpcyBhbHNvIGV4cGxpY2l0bHkgZGVjbGFyZWQgKGllLiA8ZGl2IHsuLi5wcm9wc30ga2V5PVwiSGlcIiAvPlxuICAgIC8vIG9yIDxkaXYga2V5PVwiSGlcIiB7Li4ucHJvcHN9IC8+ICkuIFdlIHdhbnQgdG8gZGVwcmVjYXRlIGtleSBzcHJlYWQsXG4gICAgLy8gYnV0IGFzIGFuIGludGVybWVkaWFyeSBzdGVwLCB3ZSB3aWxsIHVzZSBqc3hERVYgZm9yIGV2ZXJ5dGhpbmcgZXhjZXB0XG4gICAgLy8gPGRpdiB7Li4ucHJvcHN9IGtleT1cIkhpXCIgLz4sIGJlY2F1c2Ugd2UgYXJlbid0IGN1cnJlbnRseSBhYmxlIHRvIHRlbGwgaWZcbiAgICAvLyBrZXkgaXMgZXhwbGljaXRseSBkZWNsYXJlZCB0byBiZSB1bmRlZmluZWQgb3Igbm90LlxuXG4gICAgaWYgKG1heWJlS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGtleSA9ICcnICsgbWF5YmVLZXk7XG4gICAgfVxuXG4gICAgaWYgKGhhc1ZhbGlkS2V5KGNvbmZpZykpIHtcbiAgICAgIGtleSA9ICcnICsgY29uZmlnLmtleTtcbiAgICB9XG5cbiAgICBpZiAoaGFzVmFsaWRSZWYoY29uZmlnKSkge1xuICAgICAgcmVmID0gY29uZmlnLnJlZjtcbiAgICAgIHdhcm5JZlN0cmluZ1JlZkNhbm5vdEJlQXV0b0NvbnZlcnRlZChjb25maWcsIHNlbGYpO1xuICAgIH0gLy8gUmVtYWluaW5nIHByb3BlcnRpZXMgYXJlIGFkZGVkIHRvIGEgbmV3IHByb3BzIG9iamVjdFxuXG5cbiAgICBmb3IgKHByb3BOYW1lIGluIGNvbmZpZykge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCBwcm9wTmFtZSkgJiYgIVJFU0VSVkVEX1BST1BTLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJvcE5hbWVdO1xuICAgICAgfVxuICAgIH0gLy8gUmVzb2x2ZSBkZWZhdWx0IHByb3BzXG5cblxuICAgIGlmICh0eXBlICYmIHR5cGUuZGVmYXVsdFByb3BzKSB7XG4gICAgICB2YXIgZGVmYXVsdFByb3BzID0gdHlwZS5kZWZhdWx0UHJvcHM7XG5cbiAgICAgIGZvciAocHJvcE5hbWUgaW4gZGVmYXVsdFByb3BzKSB7XG4gICAgICAgIGlmIChwcm9wc1twcm9wTmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGRlZmF1bHRQcm9wc1twcm9wTmFtZV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoa2V5IHx8IHJlZikge1xuICAgICAgdmFyIGRpc3BsYXlOYW1lID0gdHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicgPyB0eXBlLmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZSB8fCAnVW5rbm93bicgOiB0eXBlO1xuXG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIGRlZmluZUtleVByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgZGVmaW5lUmVmUHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gUmVhY3RFbGVtZW50KHR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQsIHByb3BzKTtcbiAgfVxufVxuXG52YXIgUmVhY3RDdXJyZW50T3duZXIkMSA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlJlYWN0Q3VycmVudE93bmVyO1xudmFyIFJlYWN0RGVidWdDdXJyZW50RnJhbWUkMSA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlJlYWN0RGVidWdDdXJyZW50RnJhbWU7XG5cbmZ1bmN0aW9uIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEoZWxlbWVudCkge1xuICB7XG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIHZhciBvd25lciA9IGVsZW1lbnQuX293bmVyO1xuICAgICAgdmFyIHN0YWNrID0gZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKGVsZW1lbnQudHlwZSwgZWxlbWVudC5fc291cmNlLCBvd25lciA/IG93bmVyLnR5cGUgOiBudWxsKTtcbiAgICAgIFJlYWN0RGVidWdDdXJyZW50RnJhbWUkMS5zZXRFeHRyYVN0YWNrRnJhbWUoc3RhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICBSZWFjdERlYnVnQ3VycmVudEZyYW1lJDEuc2V0RXh0cmFTdGFja0ZyYW1lKG51bGwpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgcHJvcFR5cGVzTWlzc3BlbGxXYXJuaW5nU2hvd247XG5cbntcbiAgcHJvcFR5cGVzTWlzc3BlbGxXYXJuaW5nU2hvd24gPSBmYWxzZTtcbn1cbi8qKlxuICogVmVyaWZpZXMgdGhlIG9iamVjdCBpcyBhIFJlYWN0RWxlbWVudC5cbiAqIFNlZSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvcmVhY3QtYXBpLmh0bWwjaXN2YWxpZGVsZW1lbnRcbiAqIEBwYXJhbSB7P29iamVjdH0gb2JqZWN0XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGBvYmplY3RgIGlzIGEgUmVhY3RFbGVtZW50LlxuICogQGZpbmFsXG4gKi9cblxuZnVuY3Rpb24gaXNWYWxpZEVsZW1lbnQob2JqZWN0KSB7XG4gIHtcbiAgICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgb2JqZWN0ICE9PSBudWxsICYmIG9iamVjdC4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSgpIHtcbiAge1xuICAgIGlmIChSZWFjdEN1cnJlbnRPd25lciQxLmN1cnJlbnQpIHtcbiAgICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZShSZWFjdEN1cnJlbnRPd25lciQxLmN1cnJlbnQudHlwZSk7XG5cbiAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgIHJldHVybiAnXFxuXFxuQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0U291cmNlSW5mb0Vycm9yQWRkZW5kdW0oc291cmNlKSB7XG4gIHtcbiAgICBpZiAoc291cmNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciBmaWxlTmFtZSA9IHNvdXJjZS5maWxlTmFtZS5yZXBsYWNlKC9eLipbXFxcXFxcL10vLCAnJyk7XG4gICAgICB2YXIgbGluZU51bWJlciA9IHNvdXJjZS5saW5lTnVtYmVyO1xuICAgICAgcmV0dXJuICdcXG5cXG5DaGVjayB5b3VyIGNvZGUgYXQgJyArIGZpbGVOYW1lICsgJzonICsgbGluZU51bWJlciArICcuJztcbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cbn1cbi8qKlxuICogV2FybiBpZiB0aGVyZSdzIG5vIGtleSBleHBsaWNpdGx5IHNldCBvbiBkeW5hbWljIGFycmF5cyBvZiBjaGlsZHJlbiBvclxuICogb2JqZWN0IGtleXMgYXJlIG5vdCB2YWxpZC4gVGhpcyBhbGxvd3MgdXMgdG8ga2VlcCB0cmFjayBvZiBjaGlsZHJlbiBiZXR3ZWVuXG4gKiB1cGRhdGVzLlxuICovXG5cblxudmFyIG93bmVySGFzS2V5VXNlV2FybmluZyA9IHt9O1xuXG5mdW5jdGlvbiBnZXRDdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvKHBhcmVudFR5cGUpIHtcbiAge1xuICAgIHZhciBpbmZvID0gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCk7XG5cbiAgICBpZiAoIWluZm8pIHtcbiAgICAgIHZhciBwYXJlbnROYW1lID0gdHlwZW9mIHBhcmVudFR5cGUgPT09ICdzdHJpbmcnID8gcGFyZW50VHlwZSA6IHBhcmVudFR5cGUuZGlzcGxheU5hbWUgfHwgcGFyZW50VHlwZS5uYW1lO1xuXG4gICAgICBpZiAocGFyZW50TmFtZSkge1xuICAgICAgICBpbmZvID0gXCJcXG5cXG5DaGVjayB0aGUgdG9wLWxldmVsIHJlbmRlciBjYWxsIHVzaW5nIDxcIiArIHBhcmVudE5hbWUgKyBcIj4uXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGluZm87XG4gIH1cbn1cbi8qKlxuICogV2FybiBpZiB0aGUgZWxlbWVudCBkb2Vzbid0IGhhdmUgYW4gZXhwbGljaXQga2V5IGFzc2lnbmVkIHRvIGl0LlxuICogVGhpcyBlbGVtZW50IGlzIGluIGFuIGFycmF5LiBUaGUgYXJyYXkgY291bGQgZ3JvdyBhbmQgc2hyaW5rIG9yIGJlXG4gKiByZW9yZGVyZWQuIEFsbCBjaGlsZHJlbiB0aGF0IGhhdmVuJ3QgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBhcmUgcmVxdWlyZWQgdG9cbiAqIGhhdmUgYSBcImtleVwiIHByb3BlcnR5IGFzc2lnbmVkIHRvIGl0LiBFcnJvciBzdGF0dXNlcyBhcmUgY2FjaGVkIHNvIGEgd2FybmluZ1xuICogd2lsbCBvbmx5IGJlIHNob3duIG9uY2UuXG4gKlxuICogQGludGVybmFsXG4gKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudCBFbGVtZW50IHRoYXQgcmVxdWlyZXMgYSBrZXkuXG4gKiBAcGFyYW0geyp9IHBhcmVudFR5cGUgZWxlbWVudCdzIHBhcmVudCdzIHR5cGUuXG4gKi9cblxuXG5mdW5jdGlvbiB2YWxpZGF0ZUV4cGxpY2l0S2V5KGVsZW1lbnQsIHBhcmVudFR5cGUpIHtcbiAge1xuICAgIGlmICghZWxlbWVudC5fc3RvcmUgfHwgZWxlbWVudC5fc3RvcmUudmFsaWRhdGVkIHx8IGVsZW1lbnQua2V5ICE9IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlbGVtZW50Ll9zdG9yZS52YWxpZGF0ZWQgPSB0cnVlO1xuICAgIHZhciBjdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvID0gZ2V0Q3VycmVudENvbXBvbmVudEVycm9ySW5mbyhwYXJlbnRUeXBlKTtcblxuICAgIGlmIChvd25lckhhc0tleVVzZVdhcm5pbmdbY3VycmVudENvbXBvbmVudEVycm9ySW5mb10pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBvd25lckhhc0tleVVzZVdhcm5pbmdbY3VycmVudENvbXBvbmVudEVycm9ySW5mb10gPSB0cnVlOyAvLyBVc3VhbGx5IHRoZSBjdXJyZW50IG93bmVyIGlzIHRoZSBvZmZlbmRlciwgYnV0IGlmIGl0IGFjY2VwdHMgY2hpbGRyZW4gYXMgYVxuICAgIC8vIHByb3BlcnR5LCBpdCBtYXkgYmUgdGhlIGNyZWF0b3Igb2YgdGhlIGNoaWxkIHRoYXQncyByZXNwb25zaWJsZSBmb3JcbiAgICAvLyBhc3NpZ25pbmcgaXQgYSBrZXkuXG5cbiAgICB2YXIgY2hpbGRPd25lciA9ICcnO1xuXG4gICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5fb3duZXIgJiYgZWxlbWVudC5fb3duZXIgIT09IFJlYWN0Q3VycmVudE93bmVyJDEuY3VycmVudCkge1xuICAgICAgLy8gR2l2ZSB0aGUgY29tcG9uZW50IHRoYXQgb3JpZ2luYWxseSBjcmVhdGVkIHRoaXMgY2hpbGQuXG4gICAgICBjaGlsZE93bmVyID0gXCIgSXQgd2FzIHBhc3NlZCBhIGNoaWxkIGZyb20gXCIgKyBnZXRDb21wb25lbnROYW1lKGVsZW1lbnQuX293bmVyLnR5cGUpICsgXCIuXCI7XG4gICAgfVxuXG4gICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShlbGVtZW50KTtcblxuICAgIGVycm9yKCdFYWNoIGNoaWxkIGluIGEgbGlzdCBzaG91bGQgaGF2ZSBhIHVuaXF1ZSBcImtleVwiIHByb3AuJyArICclcyVzIFNlZSBodHRwczovL3JlYWN0anMub3JnL2xpbmsvd2FybmluZy1rZXlzIGZvciBtb3JlIGluZm9ybWF0aW9uLicsIGN1cnJlbnRDb21wb25lbnRFcnJvckluZm8sIGNoaWxkT3duZXIpO1xuXG4gICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShudWxsKTtcbiAgfVxufVxuLyoqXG4gKiBFbnN1cmUgdGhhdCBldmVyeSBlbGVtZW50IGVpdGhlciBpcyBwYXNzZWQgaW4gYSBzdGF0aWMgbG9jYXRpb24sIGluIGFuXG4gKiBhcnJheSB3aXRoIGFuIGV4cGxpY2l0IGtleXMgcHJvcGVydHkgZGVmaW5lZCwgb3IgaW4gYW4gb2JqZWN0IGxpdGVyYWxcbiAqIHdpdGggdmFsaWQga2V5IHByb3BlcnR5LlxuICpcbiAqIEBpbnRlcm5hbFxuICogQHBhcmFtIHtSZWFjdE5vZGV9IG5vZGUgU3RhdGljYWxseSBwYXNzZWQgY2hpbGQgb2YgYW55IHR5cGUuXG4gKiBAcGFyYW0geyp9IHBhcmVudFR5cGUgbm9kZSdzIHBhcmVudCdzIHR5cGUuXG4gKi9cblxuXG5mdW5jdGlvbiB2YWxpZGF0ZUNoaWxkS2V5cyhub2RlLCBwYXJlbnRUeXBlKSB7XG4gIHtcbiAgICBpZiAodHlwZW9mIG5vZGUgIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2hpbGQgPSBub2RlW2ldO1xuXG4gICAgICAgIGlmIChpc1ZhbGlkRWxlbWVudChjaGlsZCkpIHtcbiAgICAgICAgICB2YWxpZGF0ZUV4cGxpY2l0S2V5KGNoaWxkLCBwYXJlbnRUeXBlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNWYWxpZEVsZW1lbnQobm9kZSkpIHtcbiAgICAgIC8vIFRoaXMgZWxlbWVudCB3YXMgcGFzc2VkIGluIGEgdmFsaWQgbG9jYXRpb24uXG4gICAgICBpZiAobm9kZS5fc3RvcmUpIHtcbiAgICAgICAgbm9kZS5fc3RvcmUudmFsaWRhdGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5vZGUpIHtcbiAgICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihub2RlKTtcblxuICAgICAgaWYgKHR5cGVvZiBpdGVyYXRvckZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIC8vIEVudHJ5IGl0ZXJhdG9ycyB1c2VkIHRvIHByb3ZpZGUgaW1wbGljaXQga2V5cyxcbiAgICAgICAgLy8gYnV0IG5vdyB3ZSBwcmludCBhIHNlcGFyYXRlIHdhcm5pbmcgZm9yIHRoZW0gbGF0ZXIuXG4gICAgICAgIGlmIChpdGVyYXRvckZuICE9PSBub2RlLmVudHJpZXMpIHtcbiAgICAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwobm9kZSk7XG4gICAgICAgICAgdmFyIHN0ZXA7XG5cbiAgICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgICBpZiAoaXNWYWxpZEVsZW1lbnQoc3RlcC52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgdmFsaWRhdGVFeHBsaWNpdEtleShzdGVwLnZhbHVlLCBwYXJlbnRUeXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbi8qKlxuICogR2l2ZW4gYW4gZWxlbWVudCwgdmFsaWRhdGUgdGhhdCBpdHMgcHJvcHMgZm9sbG93IHRoZSBwcm9wVHlwZXMgZGVmaW5pdGlvbixcbiAqIHByb3ZpZGVkIGJ5IHRoZSB0eXBlLlxuICpcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50XG4gKi9cblxuXG5mdW5jdGlvbiB2YWxpZGF0ZVByb3BUeXBlcyhlbGVtZW50KSB7XG4gIHtcbiAgICB2YXIgdHlwZSA9IGVsZW1lbnQudHlwZTtcblxuICAgIGlmICh0eXBlID09PSBudWxsIHx8IHR5cGUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgcHJvcFR5cGVzO1xuXG4gICAgaWYgKHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwcm9wVHlwZXMgPSB0eXBlLnByb3BUeXBlcztcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0eXBlID09PSAnb2JqZWN0JyAmJiAodHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSB8fCAvLyBOb3RlOiBNZW1vIG9ubHkgY2hlY2tzIG91dGVyIHByb3BzIGhlcmUuXG4gICAgLy8gSW5uZXIgcHJvcHMgYXJlIGNoZWNrZWQgaW4gdGhlIHJlY29uY2lsZXIuXG4gICAgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTUVNT19UWVBFKSkge1xuICAgICAgcHJvcFR5cGVzID0gdHlwZS5wcm9wVHlwZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAocHJvcFR5cGVzKSB7XG4gICAgICAvLyBJbnRlbnRpb25hbGx5IGluc2lkZSB0byBhdm9pZCB0cmlnZ2VyaW5nIGxhenkgaW5pdGlhbGl6ZXJzOlxuICAgICAgdmFyIG5hbWUgPSBnZXRDb21wb25lbnROYW1lKHR5cGUpO1xuICAgICAgY2hlY2tQcm9wVHlwZXMocHJvcFR5cGVzLCBlbGVtZW50LnByb3BzLCAncHJvcCcsIG5hbWUsIGVsZW1lbnQpO1xuICAgIH0gZWxzZSBpZiAodHlwZS5Qcm9wVHlwZXMgIT09IHVuZGVmaW5lZCAmJiAhcHJvcFR5cGVzTWlzc3BlbGxXYXJuaW5nU2hvd24pIHtcbiAgICAgIHByb3BUeXBlc01pc3NwZWxsV2FybmluZ1Nob3duID0gdHJ1ZTsgLy8gSW50ZW50aW9uYWxseSBpbnNpZGUgdG8gYXZvaWQgdHJpZ2dlcmluZyBsYXp5IGluaXRpYWxpemVyczpcblxuICAgICAgdmFyIF9uYW1lID0gZ2V0Q29tcG9uZW50TmFtZSh0eXBlKTtcblxuICAgICAgZXJyb3IoJ0NvbXBvbmVudCAlcyBkZWNsYXJlZCBgUHJvcFR5cGVzYCBpbnN0ZWFkIG9mIGBwcm9wVHlwZXNgLiBEaWQgeW91IG1pc3NwZWxsIHRoZSBwcm9wZXJ0eSBhc3NpZ25tZW50PycsIF9uYW1lIHx8ICdVbmtub3duJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0eXBlLmdldERlZmF1bHRQcm9wcyA9PT0gJ2Z1bmN0aW9uJyAmJiAhdHlwZS5nZXREZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQpIHtcbiAgICAgIGVycm9yKCdnZXREZWZhdWx0UHJvcHMgaXMgb25seSB1c2VkIG9uIGNsYXNzaWMgUmVhY3QuY3JlYXRlQ2xhc3MgJyArICdkZWZpbml0aW9ucy4gVXNlIGEgc3RhdGljIHByb3BlcnR5IG5hbWVkIGBkZWZhdWx0UHJvcHNgIGluc3RlYWQuJyk7XG4gICAgfVxuICB9XG59XG4vKipcbiAqIEdpdmVuIGEgZnJhZ21lbnQsIHZhbGlkYXRlIHRoYXQgaXQgY2FuIG9ubHkgYmUgcHJvdmlkZWQgd2l0aCBmcmFnbWVudCBwcm9wc1xuICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGZyYWdtZW50XG4gKi9cblxuXG5mdW5jdGlvbiB2YWxpZGF0ZUZyYWdtZW50UHJvcHMoZnJhZ21lbnQpIHtcbiAge1xuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZnJhZ21lbnQucHJvcHMpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpXTtcblxuICAgICAgaWYgKGtleSAhPT0gJ2NoaWxkcmVuJyAmJiBrZXkgIT09ICdrZXknKSB7XG4gICAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEoZnJhZ21lbnQpO1xuXG4gICAgICAgIGVycm9yKCdJbnZhbGlkIHByb3AgYCVzYCBzdXBwbGllZCB0byBgUmVhY3QuRnJhZ21lbnRgLiAnICsgJ1JlYWN0LkZyYWdtZW50IGNhbiBvbmx5IGhhdmUgYGtleWAgYW5kIGBjaGlsZHJlbmAgcHJvcHMuJywga2V5KTtcblxuICAgICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudCQxKG51bGwpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZnJhZ21lbnQucmVmICE9PSBudWxsKSB7XG4gICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudCQxKGZyYWdtZW50KTtcblxuICAgICAgZXJyb3IoJ0ludmFsaWQgYXR0cmlidXRlIGByZWZgIHN1cHBsaWVkIHRvIGBSZWFjdC5GcmFnbWVudGAuJyk7XG5cbiAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEobnVsbCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGpzeFdpdGhWYWxpZGF0aW9uKHR5cGUsIHByb3BzLCBrZXksIGlzU3RhdGljQ2hpbGRyZW4sIHNvdXJjZSwgc2VsZikge1xuICB7XG4gICAgdmFyIHZhbGlkVHlwZSA9IGlzVmFsaWRFbGVtZW50VHlwZSh0eXBlKTsgLy8gV2Ugd2FybiBpbiB0aGlzIGNhc2UgYnV0IGRvbid0IHRocm93LiBXZSBleHBlY3QgdGhlIGVsZW1lbnQgY3JlYXRpb24gdG9cbiAgICAvLyBzdWNjZWVkIGFuZCB0aGVyZSB3aWxsIGxpa2VseSBiZSBlcnJvcnMgaW4gcmVuZGVyLlxuXG4gICAgaWYgKCF2YWxpZFR5cGUpIHtcbiAgICAgIHZhciBpbmZvID0gJyc7XG5cbiAgICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHR5cGUgPT09ICdvYmplY3QnICYmIHR5cGUgIT09IG51bGwgJiYgT2JqZWN0LmtleXModHlwZSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGluZm8gKz0gJyBZb3UgbGlrZWx5IGZvcmdvdCB0byBleHBvcnQgeW91ciBjb21wb25lbnQgZnJvbSB0aGUgZmlsZSAnICsgXCJpdCdzIGRlZmluZWQgaW4sIG9yIHlvdSBtaWdodCBoYXZlIG1peGVkIHVwIGRlZmF1bHQgYW5kIG5hbWVkIGltcG9ydHMuXCI7XG4gICAgICB9XG5cbiAgICAgIHZhciBzb3VyY2VJbmZvID0gZ2V0U291cmNlSW5mb0Vycm9yQWRkZW5kdW0oc291cmNlKTtcblxuICAgICAgaWYgKHNvdXJjZUluZm8pIHtcbiAgICAgICAgaW5mbyArPSBzb3VyY2VJbmZvO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5mbyArPSBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHR5cGVTdHJpbmc7XG5cbiAgICAgIGlmICh0eXBlID09PSBudWxsKSB7XG4gICAgICAgIHR5cGVTdHJpbmcgPSAnbnVsbCc7XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodHlwZSkpIHtcbiAgICAgICAgdHlwZVN0cmluZyA9ICdhcnJheSc7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgIT09IHVuZGVmaW5lZCAmJiB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEUpIHtcbiAgICAgICAgdHlwZVN0cmluZyA9IFwiPFwiICsgKGdldENvbXBvbmVudE5hbWUodHlwZS50eXBlKSB8fCAnVW5rbm93bicpICsgXCIgLz5cIjtcbiAgICAgICAgaW5mbyA9ICcgRGlkIHlvdSBhY2NpZGVudGFsbHkgZXhwb3J0IGEgSlNYIGxpdGVyYWwgaW5zdGVhZCBvZiBhIGNvbXBvbmVudD8nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHlwZVN0cmluZyA9IHR5cGVvZiB0eXBlO1xuICAgICAgfVxuXG4gICAgICBlcnJvcignUmVhY3QuanN4OiB0eXBlIGlzIGludmFsaWQgLS0gZXhwZWN0ZWQgYSBzdHJpbmcgKGZvciAnICsgJ2J1aWx0LWluIGNvbXBvbmVudHMpIG9yIGEgY2xhc3MvZnVuY3Rpb24gKGZvciBjb21wb3NpdGUgJyArICdjb21wb25lbnRzKSBidXQgZ290OiAlcy4lcycsIHR5cGVTdHJpbmcsIGluZm8pO1xuICAgIH1cblxuICAgIHZhciBlbGVtZW50ID0ganN4REVWKHR5cGUsIHByb3BzLCBrZXksIHNvdXJjZSwgc2VsZik7IC8vIFRoZSByZXN1bHQgY2FuIGJlIG51bGxpc2ggaWYgYSBtb2NrIG9yIGEgY3VzdG9tIGZ1bmN0aW9uIGlzIHVzZWQuXG4gICAgLy8gVE9ETzogRHJvcCB0aGlzIHdoZW4gdGhlc2UgYXJlIG5vIGxvbmdlciBhbGxvd2VkIGFzIHRoZSB0eXBlIGFyZ3VtZW50LlxuXG4gICAgaWYgKGVsZW1lbnQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfSAvLyBTa2lwIGtleSB3YXJuaW5nIGlmIHRoZSB0eXBlIGlzbid0IHZhbGlkIHNpbmNlIG91ciBrZXkgdmFsaWRhdGlvbiBsb2dpY1xuICAgIC8vIGRvZXNuJ3QgZXhwZWN0IGEgbm9uLXN0cmluZy9mdW5jdGlvbiB0eXBlIGFuZCBjYW4gdGhyb3cgY29uZnVzaW5nIGVycm9ycy5cbiAgICAvLyBXZSBkb24ndCB3YW50IGV4Y2VwdGlvbiBiZWhhdmlvciB0byBkaWZmZXIgYmV0d2VlbiBkZXYgYW5kIHByb2QuXG4gICAgLy8gKFJlbmRlcmluZyB3aWxsIHRocm93IHdpdGggYSBoZWxwZnVsIG1lc3NhZ2UgYW5kIGFzIHNvb24gYXMgdGhlIHR5cGUgaXNcbiAgICAvLyBmaXhlZCwgdGhlIGtleSB3YXJuaW5ncyB3aWxsIGFwcGVhci4pXG5cblxuICAgIGlmICh2YWxpZFR5cGUpIHtcbiAgICAgIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuO1xuXG4gICAgICBpZiAoY2hpbGRyZW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoaXNTdGF0aWNDaGlsZHJlbikge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICB2YWxpZGF0ZUNoaWxkS2V5cyhjaGlsZHJlbltpXSwgdHlwZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChPYmplY3QuZnJlZXplKSB7XG4gICAgICAgICAgICAgIE9iamVjdC5mcmVlemUoY2hpbGRyZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlcnJvcignUmVhY3QuanN4OiBTdGF0aWMgY2hpbGRyZW4gc2hvdWxkIGFsd2F5cyBiZSBhbiBhcnJheS4gJyArICdZb3UgYXJlIGxpa2VseSBleHBsaWNpdGx5IGNhbGxpbmcgUmVhY3QuanN4cyBvciBSZWFjdC5qc3hERVYuICcgKyAnVXNlIHRoZSBCYWJlbCB0cmFuc2Zvcm0gaW5zdGVhZC4nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsaWRhdGVDaGlsZEtleXMoY2hpbGRyZW4sIHR5cGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09IGV4cG9ydHMuRnJhZ21lbnQpIHtcbiAgICAgIHZhbGlkYXRlRnJhZ21lbnRQcm9wcyhlbGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsaWRhdGVQcm9wVHlwZXMoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cbn0gLy8gVGhlc2UgdHdvIGZ1bmN0aW9ucyBleGlzdCB0byBzdGlsbCBnZXQgY2hpbGQgd2FybmluZ3MgaW4gZGV2XG5cbnZhciBqc3hERVYkMSA9ICBqc3hXaXRoVmFsaWRhdGlvbiA7XG5cbmV4cG9ydHMuanN4REVWID0ganN4REVWJDE7XG4gIH0pKCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../node_modules/react/cjs/react-jsx-dev-runtime.development.js\n"));
-
-/***/ }),
-
-/***/ "../node_modules/react/jsx-dev-runtime.js":
-/*!************************************************!*\
- !*** ../node_modules/react/jsx-dev-runtime.js ***!
- \************************************************/
-/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
-
-"use strict";
-eval(__webpack_require__.ts("\n\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./cjs/react-jsx-dev-runtime.development.js */ \"../node_modules/react/cjs/react-jsx-dev-runtime.development.js\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1kZXYtcnVudGltZS5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixJQUFJLEtBQXFDLEVBQUUsRUFFMUMsQ0FBQztBQUNGLEVBQUUsd0pBQXNFO0FBQ3hFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LWRldi1ydW50aW1lLmpzP2RmYjEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1kZXYtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../node_modules/react/jsx-dev-runtime.js\n"));
-
-/***/ })
-
-},
-/******/ function(__webpack_require__) { // webpackRuntimeModules
-/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
-/******/ __webpack_require__.O(0, ["pages/_app","main"], function() { return __webpack_exec__("../node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2Fhome%2Fzeffo%2FPublic%2Fupscayl%2Frenderer%2Fpages%2Finitial-props.tsx&page=%2Finitial-props!"); });
-/******/ var __webpack_exports__ = __webpack_require__.O();
-/******/ _N_E = __webpack_exports__;
-/******/ }
-]);
\ No newline at end of file
diff --git a/renderer/.next/static/chunks/webpack.js b/renderer/.next/static/chunks/webpack.js
index a92fa2e..0b1366a 100644
--- a/renderer/.next/static/chunks/webpack.js
+++ b/renderer/.next/static/chunks/webpack.js
@@ -128,7 +128,7 @@
/******/
/******/ /* webpack/runtime/getFullHash */
/******/ !function() {
-/******/ __webpack_require__.h = function() { return "607e8ec64abecbff"; }
+/******/ __webpack_require__.h = function() { return "f5a3a7d3f75de4fc"; }
/******/ }();
/******/
/******/ /* webpack/runtime/global */
diff --git a/renderer/.next/static/development/_buildManifest.js b/renderer/.next/static/development/_buildManifest.js
index 2be4ab4..0556605 100644
--- a/renderer/.next/static/development/_buildManifest.js
+++ b/renderer/.next/static/development/_buildManifest.js
@@ -1 +1 @@
-self.__BUILD_MANIFEST = {__rewrites:{beforeFiles:[],afterFiles:[],fallback:[]},"/":["static\u002Fchunks\u002Fpages\u002Findex.js"],"/_error":["static\u002Fchunks\u002Fpages\u002F_error.js"],"/initial-props":["static\u002Fchunks\u002Fpages\u002Finitial-props.js"],sortedPages:["\u002F","\u002F_app","\u002F_error","\u002Finitial-props"]};self.__BUILD_MANIFEST_CB && self.__BUILD_MANIFEST_CB()
\ No newline at end of file
+self.__BUILD_MANIFEST = {__rewrites:{beforeFiles:[],afterFiles:[],fallback:[]},"/":["static\u002Fchunks\u002Fpages\u002Findex.js"],"/_error":["static\u002Fchunks\u002Fpages\u002F_error.js"],sortedPages:["\u002F","\u002F_app","\u002F_error"]};self.__BUILD_MANIFEST_CB && self.__BUILD_MANIFEST_CB()
\ No newline at end of file
diff --git a/renderer/.next/static/webpack/2f5a673c60abf6d9.webpack.hot-update.json b/renderer/.next/static/webpack/11adbe7b02208243.webpack.hot-update.json
similarity index 100%
rename from renderer/.next/static/webpack/2f5a673c60abf6d9.webpack.hot-update.json
rename to renderer/.next/static/webpack/11adbe7b02208243.webpack.hot-update.json
diff --git a/renderer/.next/static/webpack/f320c99a8c730992.webpack.hot-update.json b/renderer/.next/static/webpack/f320c99a8c730992.webpack.hot-update.json
deleted file mode 100644
index 3823c4c..0000000
--- a/renderer/.next/static/webpack/f320c99a8c730992.webpack.hot-update.json
+++ /dev/null
@@ -1 +0,0 @@
-{"c":["webpack"],"r":[],"m":[]}
\ No newline at end of file
diff --git a/renderer/.next/static/webpack/webpack.2f5a673c60abf6d9.hot-update.js b/renderer/.next/static/webpack/webpack.11adbe7b02208243.hot-update.js
similarity index 97%
rename from renderer/.next/static/webpack/webpack.2f5a673c60abf6d9.hot-update.js
rename to renderer/.next/static/webpack/webpack.11adbe7b02208243.hot-update.js
index b69c151..2923a04 100644
--- a/renderer/.next/static/webpack/webpack.2f5a673c60abf6d9.hot-update.js
+++ b/renderer/.next/static/webpack/webpack.11adbe7b02208243.hot-update.js
@@ -35,7 +35,7 @@ self["webpackHotUpdate_N_E"]("webpack",{},
/******/
/******/ /* webpack/runtime/getFullHash */
/******/ !function() {
-/******/ __webpack_require__.h = function() { return "f320c99a8c730992"; }
+/******/ __webpack_require__.h = function() { return "f5a3a7d3f75de4fc"; }
/******/ }();
/******/
/******/ /* webpack/runtime/make namespace object */
diff --git a/renderer/.next/static/webpack/webpack.f320c99a8c730992.hot-update.js b/renderer/.next/static/webpack/webpack.f320c99a8c730992.hot-update.js
deleted file mode 100644
index 6cee9f2..0000000
--- a/renderer/.next/static/webpack/webpack.f320c99a8c730992.hot-update.js
+++ /dev/null
@@ -1,18 +0,0 @@
-"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/).
- */
-self["webpackHotUpdate_N_E"]("webpack",{},
-/******/ function(__webpack_require__) { // webpackRuntimeModules
-/******/ /* webpack/runtime/getFullHash */
-/******/ !function() {
-/******/ __webpack_require__.h = function() { return "607e8ec64abecbff"; }
-/******/ }();
-/******/
-/******/ }
-);
\ No newline at end of file
diff --git a/renderer/.next/trace b/renderer/.next/trace
index adce7ce..258f71a 100644
--- a/renderer/.next/trace
+++ b/renderer/.next/trace
@@ -1,7 +1,6 @@
-[{"traceId":"d540fb654d8a8c82","name":"hot-reloader","id":1,"timestamp":7007075493,"duration":32,"tags":{"version":"12.2.3"},"startTime":1659429821718},{"traceId":"d540fb654d8a8c82","parentId":1,"name":"start","id":2,"timestamp":7007076114,"duration":1,"tags":{},"startTime":1659429821719},{"traceId":"d540fb654d8a8c82","parentId":2,"name":"clean","id":3,"timestamp":7007076140,"duration":287,"tags":{},"startTime":1659429821719},{"traceId":"d540fb654d8a8c82","parentId":4,"name":"get-page-paths","id":5,"timestamp":7007076958,"duration":658,"tags":{},"startTime":1659429821720},{"traceId":"d540fb654d8a8c82","parentId":4,"name":"create-pages-mapping","id":6,"timestamp":7007077636,"duration":131,"tags":{},"startTime":1659429821720},{"traceId":"d540fb654d8a8c82","parentId":4,"name":"create-entrypoints","id":7,"timestamp":7007077793,"duration":1639,"tags":{},"startTime":1659429821720},{"traceId":"d540fb654d8a8c82","parentId":4,"name":"generate-webpack-config","id":8,"timestamp":7007079460,"duration":32236,"tags":{},"startTime":1659429821722},{"traceId":"d540fb654d8a8c82","parentId":2,"name":"get-webpack-config","id":4,"timestamp":7007076882,"duration":34831,"tags":{},"startTime":1659429821719},{"traceId":"d540fb654d8a8c82","parentId":17,"name":"next-client-pages-loader","id":18,"timestamp":7007199134,"duration":374,"tags":{"absolutePagePath":"private-next-pages/_app"},"startTime":1659429821842},{"traceId":"d540fb654d8a8c82","parentId":9,"name":"build-module-js?absolutePagePath=private-next-pages%2F_app&page=%2F_app!","id":17,"timestamp":7007197079,"duration":8821,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=private-next-pages%2F_app&page=%2F_app!"},"startTime":1659429821840},{"traceId":"d540fb654d8a8c82","parentId":19,"name":"next-client-pages-loader","id":20,"timestamp":7007206070,"duration":36,"tags":{"absolutePagePath":"private-next-pages/_error"},"startTime":1659429821849},{"traceId":"d540fb654d8a8c82","parentId":9,"name":"build-module-js?absolutePagePath=private-next-pages%2F_error&page=%2F_error!","id":19,"timestamp":7007206011,"duration":973,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=private-next-pages%2F_error&page=%2F_error!"},"startTime":1659429821849},{"traceId":"d540fb654d8a8c82","parentId":21,"name":"read-resource","id":22,"timestamp":7007211092,"duration":5801,"tags":{},"startTime":1659429821854},{"traceId":"d540fb654d8a8c82","parentId":9,"name":"build-module-js","id":21,"timestamp":7007210417,"duration":10344,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1659429821853},{"traceId":"d540fb654d8a8c82","parentId":32,"name":"read-resource","id":33,"timestamp":7007223848,"duration":3119,"tags":{},"startTime":1659429821866},{"traceId":"d540fb654d8a8c82","parentId":21,"name":"build-module-js","id":32,"timestamp":7007223795,"duration":9756,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/internal/helpers.js"},"startTime":1659429821866},{"traceId":"d540fb654d8a8c82","parentId":34,"name":"read-resource","id":35,"timestamp":7007236159,"duration":353,"tags":{},"startTime":1659429821879},{"traceId":"d540fb654d8a8c82","parentId":21,"name":"build-module-js","id":34,"timestamp":7007236101,"duration":1240,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/compiled/react-refresh/runtime.js"},"startTime":1659429821879},{"traceId":"d540fb654d8a8c82","parentId":36,"name":"read-resource","id":37,"timestamp":7007239385,"duration":549,"tags":{},"startTime":1659429821882},{"traceId":"d540fb654d8a8c82","parentId":34,"name":"build-module-js","id":36,"timestamp":7007239336,"duration":19386,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/compiled/react-refresh/cjs/react-refresh-runtime.development.js"},"startTime":1659429821882},{"traceId":"d540fb654d8a8c82","parentId":9,"name":"add-entry","id":11,"timestamp":7007172839,"duration":86176,"tags":{"request":"/home/zeffo/Public/upscayl/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1659429821815},{"traceId":"d540fb654d8a8c82","parentId":26,"name":"next-swc-transform","id":27,"timestamp":7007212760,"duration":46396,"tags":{},"startTime":1659429821855},{"traceId":"d540fb654d8a8c82","parentId":23,"name":"next-swc-loader","id":26,"timestamp":7007212366,"duration":46794,"tags":{},"startTime":1659429821855},{"traceId":"d540fb654d8a8c82","parentId":9,"name":"build-module-js","id":23,"timestamp":7007211134,"duration":57140,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/next-dev.js"},"startTime":1659429821854},{"traceId":"d540fb654d8a8c82","parentId":28,"name":"next-swc-transform","id":29,"timestamp":7007212855,"duration":55482,"tags":{},"startTime":1659429821855},{"traceId":"d540fb654d8a8c82","parentId":24,"name":"next-swc-loader","id":28,"timestamp":7007212794,"duration":55546,"tags":{},"startTime":1659429821855},{"traceId":"d540fb654d8a8c82","parentId":9,"name":"build-module-js","id":24,"timestamp":7007212176,"duration":62668,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/dev/amp-dev.js"},"startTime":1659429821855},{"traceId":"d540fb654d8a8c82","parentId":30,"name":"next-swc-transform","id":31,"timestamp":7007212883,"duration":62029,"tags":{},"startTime":1659429821855},{"traceId":"d540fb654d8a8c82","parentId":25,"name":"next-swc-loader","id":30,"timestamp":7007212858,"duration":62058,"tags":{},"startTime":1659429821855},{"traceId":"d540fb654d8a8c82","parentId":9,"name":"build-module-js","id":25,"timestamp":7007212288,"duration":71931,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/router.js"},"startTime":1659429821855},{"traceId":"d540fb654d8a8c82","parentId":43,"name":"next-swc-transform","id":44,"timestamp":7007293022,"duration":1746,"tags":{},"startTime":1659429821936},{"traceId":"d540fb654d8a8c82","parentId":38,"name":"next-swc-loader","id":43,"timestamp":7007292981,"duration":1798,"tags":{},"startTime":1659429821936},{"traceId":"d540fb654d8a8c82","parentId":25,"name":"build-module-js","id":38,"timestamp":7007292625,"duration":5667,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/with-router.js"},"startTime":1659429821935},{"traceId":"d540fb654d8a8c82","parentId":47,"name":"next-swc-transform","id":48,"timestamp":7007293071,"duration":5600,"tags":{},"startTime":1659429821936},{"traceId":"d540fb654d8a8c82","parentId":40,"name":"next-swc-loader","id":47,"timestamp":7007293050,"duration":5625,"tags":{},"startTime":1659429821936},{"traceId":"d540fb654d8a8c82","parentId":23,"name":"build-module-js","id":40,"timestamp":7007292819,"duration":9233,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/dev/webpack-hot-middleware-client.js"},"startTime":1659429821935},{"traceId":"d540fb654d8a8c82","parentId":51,"name":"next-swc-transform","id":52,"timestamp":7007293111,"duration":9254,"tags":{},"startTime":1659429821936},{"traceId":"d540fb654d8a8c82","parentId":42,"name":"next-swc-loader","id":51,"timestamp":7007293093,"duration":9276,"tags":{},"startTime":1659429821936},{"traceId":"d540fb654d8a8c82","parentId":23,"name":"build-module-js","id":42,"timestamp":7007292916,"duration":11283,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/dev/fouc.js"},"startTime":1659429821935},{"traceId":"d540fb654d8a8c82","parentId":45,"name":"next-swc-transform","id":46,"timestamp":7007293048,"duration":11191,"tags":{},"startTime":1659429821936},{"traceId":"d540fb654d8a8c82","parentId":39,"name":"next-swc-loader","id":45,"timestamp":7007293025,"duration":11217,"tags":{},"startTime":1659429821936},{"traceId":"d540fb654d8a8c82","parentId":23,"name":"build-module-js","id":39,"timestamp":7007292747,"duration":15253,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/dev/on-demand-entries-client.js"},"startTime":1659429821935},{"traceId":"d540fb654d8a8c82","parentId":49,"name":"next-swc-transform","id":50,"timestamp":7007293091,"duration":14963,"tags":{},"startTime":1659429821936},{"traceId":"d540fb654d8a8c82","parentId":41,"name":"next-swc-loader","id":49,"timestamp":7007293073,"duration":14985,"tags":{},"startTime":1659429821936},{"traceId":"d540fb654d8a8c82","parentId":23,"name":"build-module-js","id":41,"timestamp":7007292872,"duration":21882,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/dev/dev-build-watcher.js"},"startTime":1659429821935},{"traceId":"d540fb654d8a8c82","parentId":59,"name":"next-swc-transform","id":60,"timestamp":7007294642,"duration":20150,"tags":{},"startTime":1659429821937},{"traceId":"d540fb654d8a8c82","parentId":56,"name":"next-swc-loader","id":59,"timestamp":7007294607,"duration":20187,"tags":{},"startTime":1659429821937},{"traceId":"d540fb654d8a8c82","parentId":23,"name":"build-module-js","id":56,"timestamp":7007294479,"duration":24422,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/dev/error-overlay/websocket.js"},"startTime":1659429821937},{"traceId":"d540fb654d8a8c82","parentId":54,"name":"next-swc-transform","id":55,"timestamp":7007294416,"duration":29944,"tags":{},"startTime":1659429821937},{"traceId":"d540fb654d8a8c82","parentId":53,"name":"next-swc-loader","id":54,"timestamp":7007294370,"duration":30000,"tags":{},"startTime":1659429821937},{"traceId":"d540fb654d8a8c82","parentId":23,"name":"build-module-js","id":53,"timestamp":7007294243,"duration":51395,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/index.js"},"startTime":1659429821937},{"traceId":"d540fb654d8a8c82","parentId":57,"name":"read-resource","id":58,"timestamp":7007294586,"duration":58395,"tags":{},"startTime":1659429821937},{"traceId":"d540fb654d8a8c82","parentId":25,"name":"build-module-js","id":57,"timestamp":7007294561,"duration":59361,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/lib/is-error.js"},"startTime":1659429821937},{"traceId":"d540fb654d8a8c82","parentId":64,"name":"next-swc-transform","id":65,"timestamp":7007352621,"duration":2699,"tags":{},"startTime":1659429821995},{"traceId":"d540fb654d8a8c82","parentId":61,"name":"next-swc-loader","id":64,"timestamp":7007352551,"duration":2774,"tags":{},"startTime":1659429821995},{"traceId":"d540fb654d8a8c82","parentId":25,"name":"build-module-js","id":61,"timestamp":7007352342,"duration":4375,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/router-context.js"},"startTime":1659429821995},{"traceId":"d540fb654d8a8c82","parentId":68,"name":"next-swc-transform","id":69,"timestamp":7007352680,"duration":4336,"tags":{},"startTime":1659429821995},{"traceId":"d540fb654d8a8c82","parentId":63,"name":"next-swc-loader","id":68,"timestamp":7007352655,"duration":4366,"tags":{},"startTime":1659429821995},{"traceId":"d540fb654d8a8c82","parentId":23,"name":"build-module-js","id":63,"timestamp":7007352491,"duration":8619,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/router/utils/querystring.js"},"startTime":1659429821995},{"traceId":"d540fb654d8a8c82","parentId":86,"name":"next-swc-transform","id":87,"timestamp":7007368209,"duration":4434,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":73,"name":"next-swc-loader","id":86,"timestamp":7007368162,"duration":4497,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":53,"name":"build-module-js","id":73,"timestamp":7007367484,"duration":10248,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/head-manager.js"},"startTime":1659429822010},{"traceId":"d540fb654d8a8c82","parentId":88,"name":"next-swc-transform","id":89,"timestamp":7007368236,"duration":9604,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":74,"name":"next-swc-loader","id":88,"timestamp":7007368212,"duration":9634,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":53,"name":"build-module-js","id":74,"timestamp":7007367557,"duration":16556,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/page-loader.js"},"startTime":1659429822010},{"traceId":"d540fb654d8a8c82","parentId":71,"name":"next-swc-transform","id":72,"timestamp":7007366758,"duration":17439,"tags":{},"startTime":1659429822009},{"traceId":"d540fb654d8a8c82","parentId":70,"name":"next-swc-loader","id":71,"timestamp":7007366699,"duration":17504,"tags":{},"startTime":1659429822009},{"traceId":"d540fb654d8a8c82","parentId":40,"name":"build-module-js","id":70,"timestamp":7007366441,"duration":24146,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/dev/error-overlay/hot-dev-client.js"},"startTime":1659429822009},{"traceId":"d540fb654d8a8c82","parentId":94,"name":"next-swc-transform","id":95,"timestamp":7007368311,"duration":26096,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":77,"name":"next-swc-loader","id":94,"timestamp":7007368293,"duration":26121,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":53,"name":"build-module-js","id":77,"timestamp":7007367684,"duration":28242,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/remove-base-path.js"},"startTime":1659429822010},{"traceId":"d540fb654d8a8c82","parentId":92,"name":"next-swc-transform","id":93,"timestamp":7007368290,"duration":27696,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":76,"name":"next-swc-loader","id":92,"timestamp":7007368269,"duration":27721,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":53,"name":"build-module-js","id":76,"timestamp":7007367642,"duration":30587,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/route-announcer.js"},"startTime":1659429822010},{"traceId":"d540fb654d8a8c82","parentId":90,"name":"next-swc-transform","id":91,"timestamp":7007368266,"duration":30008,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":75,"name":"next-swc-loader","id":90,"timestamp":7007368239,"duration":30038,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":53,"name":"build-module-js","id":75,"timestamp":7007367604,"duration":33191,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/performance-relayer.js"},"startTime":1659429822010},{"traceId":"d540fb654d8a8c82","parentId":96,"name":"next-swc-transform","id":97,"timestamp":7007368331,"duration":32490,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":78,"name":"next-swc-loader","id":96,"timestamp":7007368314,"duration":32511,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":53,"name":"build-module-js","id":78,"timestamp":7007367727,"duration":34596,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/has-base-path.js"},"startTime":1659429822010},{"traceId":"d540fb654d8a8c82","parentId":100,"name":"next-swc-transform","id":101,"timestamp":7007368370,"duration":33982,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":80,"name":"next-swc-loader","id":100,"timestamp":7007368354,"duration":34003,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":53,"name":"build-module-js","id":80,"timestamp":7007367816,"duration":35479,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/head-manager-context.js"},"startTime":1659429822010},{"traceId":"d540fb654d8a8c82","parentId":102,"name":"next-swc-transform","id":103,"timestamp":7007368391,"duration":34930,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":81,"name":"next-swc-loader","id":102,"timestamp":7007368373,"duration":34950,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":53,"name":"build-module-js","id":81,"timestamp":7007367861,"duration":37557,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/mitt.js"},"startTime":1659429822010},{"traceId":"d540fb654d8a8c82","parentId":104,"name":"next-swc-transform","id":105,"timestamp":7007368412,"duration":37028,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":82,"name":"next-swc-loader","id":104,"timestamp":7007368394,"duration":37051,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":53,"name":"build-module-js","id":82,"timestamp":7007367897,"duration":38491,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/runtime-config.js"},"startTime":1659429822010},{"traceId":"d540fb654d8a8c82","parentId":108,"name":"next-swc-transform","id":109,"timestamp":7007368454,"duration":37958,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":84,"name":"next-swc-loader","id":108,"timestamp":7007368437,"duration":37979,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":53,"name":"build-module-js","id":84,"timestamp":7007368058,"duration":40509,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/image-config-context.js"},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":110,"name":"next-swc-transform","id":111,"timestamp":7007368474,"duration":40117,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":85,"name":"next-swc-loader","id":110,"timestamp":7007368457,"duration":40137,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":53,"name":"build-module-js","id":85,"timestamp":7007368101,"duration":41659,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/router/utils/is-dynamic.js"},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":106,"name":"next-swc-transform","id":107,"timestamp":7007368434,"duration":42005,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":83,"name":"next-swc-loader","id":106,"timestamp":7007368416,"duration":42029,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":53,"name":"build-module-js","id":83,"timestamp":7007367934,"duration":49794,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/utils.js"},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":98,"name":"next-swc-transform","id":99,"timestamp":7007368351,"duration":49439,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":79,"name":"next-swc-loader","id":98,"timestamp":7007368334,"duration":49459,"tags":{},"startTime":1659429822011},{"traceId":"d540fb654d8a8c82","parentId":53,"name":"build-module-js","id":79,"timestamp":7007367766,"duration":54792,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/script.js"},"startTime":1659429822010}]
-[{"traceId":"d540fb654d8a8c82","parentId":66,"name":"next-swc-transform","id":67,"timestamp":7007352652,"duration":70974,"tags":{},"startTime":1659429821995},{"traceId":"d540fb654d8a8c82","parentId":62,"name":"next-swc-loader","id":66,"timestamp":7007352625,"duration":71007,"tags":{},"startTime":1659429821995},{"traceId":"d540fb654d8a8c82","parentId":25,"name":"build-module-js","id":62,"timestamp":7007352437,"duration":101247,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/router/router.js"},"startTime":1659429821995},{"traceId":"d540fb654d8a8c82","parentId":118,"name":"next-swc-transform","id":119,"timestamp":7007392187,"duration":61699,"tags":{},"startTime":1659429822035},{"traceId":"d540fb654d8a8c82","parentId":115,"name":"next-swc-loader","id":118,"timestamp":7007392168,"duration":61724,"tags":{},"startTime":1659429822035},{"traceId":"d540fb654d8a8c82","parentId":57,"name":"build-module-js","id":115,"timestamp":7007391802,"duration":62929,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/is-plain-object.js"},"startTime":1659429822034},{"traceId":"d540fb654d8a8c82","parentId":116,"name":"next-swc-transform","id":117,"timestamp":7007392163,"duration":62752,"tags":{},"startTime":1659429822035},{"traceId":"d540fb654d8a8c82","parentId":114,"name":"next-swc-loader","id":116,"timestamp":7007392124,"duration":62796,"tags":{},"startTime":1659429822035},{"traceId":"d540fb654d8a8c82","parentId":53,"name":"build-module-js","id":114,"timestamp":7007391709,"duration":64810,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/pages/_error.js"},"startTime":1659429822034},{"traceId":"d540fb654d8a8c82","parentId":112,"name":"read-resource","id":113,"timestamp":7007391661,"duration":85389,"tags":{},"startTime":1659429822034},{"traceId":"d540fb654d8a8c82","parentId":53,"name":"build-module-js","id":112,"timestamp":7007391614,"duration":86184,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/build/polyfills/polyfill-module.js"},"startTime":1659429822034},{"traceId":"d540fb654d8a8c82","parentId":62,"name":"build-module","id":122,"timestamp":7007481434,"duration":458,"tags":{"name":"undefined"},"startTime":1659429822124},{"traceId":"d540fb654d8a8c82","parentId":136,"name":"next-swc-transform","id":137,"timestamp":7007487245,"duration":2260,"tags":{},"startTime":1659429822130},{"traceId":"d540fb654d8a8c82","parentId":126,"name":"next-swc-loader","id":136,"timestamp":7007487234,"duration":2281,"tags":{},"startTime":1659429822130},{"traceId":"d540fb654d8a8c82","parentId":74,"name":"build-module-js","id":126,"timestamp":7007486848,"duration":3918,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/router/utils/get-asset-path-from-route.js"},"startTime":1659429822129},{"traceId":"d540fb654d8a8c82","parentId":130,"name":"next-swc-transform","id":131,"timestamp":7007487201,"duration":3617,"tags":{},"startTime":1659429822130},{"traceId":"d540fb654d8a8c82","parentId":123,"name":"next-swc-loader","id":130,"timestamp":7007487172,"duration":3650,"tags":{},"startTime":1659429822130},{"traceId":"d540fb654d8a8c82","parentId":74,"name":"build-module-js","id":123,"timestamp":7007486697,"duration":9697,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/add-base-path.js"},"startTime":1659429822129},{"traceId":"d540fb654d8a8c82","parentId":132,"name":"next-swc-transform","id":133,"timestamp":7007487218,"duration":9232,"tags":{},"startTime":1659429822130},{"traceId":"d540fb654d8a8c82","parentId":124,"name":"next-swc-loader","id":132,"timestamp":7007487204,"duration":9249,"tags":{},"startTime":1659429822130},{"traceId":"d540fb654d8a8c82","parentId":74,"name":"build-module-js","id":124,"timestamp":7007486769,"duration":10896,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/add-locale.js"},"startTime":1659429822129},{"traceId":"d540fb654d8a8c82","parentId":140,"name":"next-swc-transform","id":141,"timestamp":7007487270,"duration":10425,"tags":{},"startTime":1659429822130},{"traceId":"d540fb654d8a8c82","parentId":128,"name":"next-swc-loader","id":140,"timestamp":7007487259,"duration":10439,"tags":{},"startTime":1659429822130},{"traceId":"d540fb654d8a8c82","parentId":74,"name":"build-module-js","id":128,"timestamp":7007486933,"duration":11455,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js"},"startTime":1659429822130},{"traceId":"d540fb654d8a8c82","parentId":120,"name":"read-resource","id":121,"timestamp":7007475516,"duration":26695,"tags":{},"startTime":1659429822118},{"traceId":"d540fb654d8a8c82","parentId":24,"name":"build-module-js","id":120,"timestamp":7007475473,"duration":30973,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/compiled/regenerator-runtime/runtime.js"},"startTime":1659429822118},{"traceId":"d540fb654d8a8c82","parentId":138,"name":"next-swc-transform","id":139,"timestamp":7007487257,"duration":19238,"tags":{},"startTime":1659429822130},{"traceId":"d540fb654d8a8c82","parentId":127,"name":"next-swc-loader","id":138,"timestamp":7007487246,"duration":19252,"tags":{},"startTime":1659429822130},{"traceId":"d540fb654d8a8c82","parentId":74,"name":"build-module-js","id":127,"timestamp":7007486887,"duration":20958,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js"},"startTime":1659429822129},{"traceId":"d540fb654d8a8c82","parentId":159,"name":"next-swc-transform","id":160,"timestamp":7007488924,"duration":20392,"tags":{},"startTime":1659429822132},{"traceId":"d540fb654d8a8c82","parentId":146,"name":"next-swc-loader","id":159,"timestamp":7007488894,"duration":20427,"tags":{},"startTime":1659429822131},{"traceId":"d540fb654d8a8c82","parentId":79,"name":"build-module-js","id":146,"timestamp":7007488050,"duration":22473,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/request-idle-callback.js"},"startTime":1659429822131},{"traceId":"d540fb654d8a8c82","parentId":142,"name":"next-swc-transform","id":143,"timestamp":7007487283,"duration":23285,"tags":{},"startTime":1659429822130},{"traceId":"d540fb654d8a8c82","parentId":129,"name":"next-swc-loader","id":142,"timestamp":7007487272,"duration":23299,"tags":{},"startTime":1659429822130},{"traceId":"d540fb654d8a8c82","parentId":70,"name":"build-module-js","id":129,"timestamp":7007486970,"duration":29118,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/dev/error-overlay/format-webpack-messages.js"},"startTime":1659429822130},{"traceId":"d540fb654d8a8c82","parentId":163,"name":"next-swc-transform","id":164,"timestamp":7007488970,"duration":27164,"tags":{},"startTime":1659429822132},{"traceId":"d540fb654d8a8c82","parentId":148,"name":"next-swc-loader","id":163,"timestamp":7007488952,"duration":27185,"tags":{},"startTime":1659429822132},{"traceId":"d540fb654d8a8c82","parentId":84,"name":"build-module-js","id":148,"timestamp":7007488184,"duration":28822,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/image-config.js"},"startTime":1659429822131},{"traceId":"d540fb654d8a8c82","parentId":167,"name":"next-swc-transform","id":168,"timestamp":7007489069,"duration":27961,"tags":{},"startTime":1659429822132},{"traceId":"d540fb654d8a8c82","parentId":150,"name":"next-swc-loader","id":167,"timestamp":7007489047,"duration":27986,"tags":{},"startTime":1659429822132},{"traceId":"d540fb654d8a8c82","parentId":62,"name":"build-module-js","id":150,"timestamp":7007488363,"duration":29727,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/detect-domain-locale.js"},"startTime":1659429822131},{"traceId":"d540fb654d8a8c82","parentId":165,"name":"next-swc-transform","id":166,"timestamp":7007489042,"duration":29074,"tags":{},"startTime":1659429822132},{"traceId":"d540fb654d8a8c82","parentId":149,"name":"next-swc-loader","id":165,"timestamp":7007488974,"duration":29145,"tags":{},"startTime":1659429822132},{"traceId":"d540fb654d8a8c82","parentId":62,"name":"build-module-js","id":149,"timestamp":7007488249,"duration":31003,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/normalize-trailing-slash.js"},"startTime":1659429822131},{"traceId":"d540fb654d8a8c82","parentId":171,"name":"next-swc-transform","id":172,"timestamp":7007489107,"duration":30169,"tags":{},"startTime":1659429822132},{"traceId":"d540fb654d8a8c82","parentId":152,"name":"next-swc-loader","id":171,"timestamp":7007489091,"duration":30188,"tags":{},"startTime":1659429822132},{"traceId":"d540fb654d8a8c82","parentId":78,"name":"build-module-js","id":152,"timestamp":7007488494,"duration":31497,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js"},"startTime":1659429822131},{"traceId":"d540fb654d8a8c82","parentId":169,"name":"next-swc-transform","id":170,"timestamp":7007489089,"duration":30925,"tags":{},"startTime":1659429822132},{"traceId":"d540fb654d8a8c82","parentId":151,"name":"next-swc-loader","id":169,"timestamp":7007489072,"duration":30944,"tags":{},"startTime":1659429822132},{"traceId":"d540fb654d8a8c82","parentId":62,"name":"build-module-js","id":151,"timestamp":7007488434,"duration":32643,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/remove-locale.js"},"startTime":1659429822131},{"traceId":"d540fb654d8a8c82","parentId":161,"name":"next-swc-transform","id":162,"timestamp":7007488948,"duration":32183,"tags":{},"startTime":1659429822132},{"traceId":"d540fb654d8a8c82","parentId":147,"name":"next-swc-loader","id":161,"timestamp":7007488928,"duration":32207,"tags":{},"startTime":1659429822132},{"traceId":"d540fb654d8a8c82","parentId":114,"name":"build-module-js","id":147,"timestamp":7007488124,"duration":36281,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/head.js"},"startTime":1659429822131},{"traceId":"d540fb654d8a8c82","parentId":173,"name":"next-swc-transform","id":174,"timestamp":7007489126,"duration":35321,"tags":{},"startTime":1659429822132},{"traceId":"d540fb654d8a8c82","parentId":153,"name":"next-swc-loader","id":173,"timestamp":7007489111,"duration":35340,"tags":{},"startTime":1659429822132},{"traceId":"d540fb654d8a8c82","parentId":62,"name":"build-module-js","id":153,"timestamp":7007488553,"duration":37963,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/router/utils/route-matcher.js"},"startTime":1659429822131},{"traceId":"d540fb654d8a8c82","parentId":134,"name":"next-swc-transform","id":135,"timestamp":7007487232,"duration":39359,"tags":{},"startTime":1659429822130},{"traceId":"d540fb654d8a8c82","parentId":125,"name":"next-swc-loader","id":134,"timestamp":7007487220,"duration":39375,"tags":{},"startTime":1659429822130},{"traceId":"d540fb654d8a8c82","parentId":74,"name":"build-module-js","id":125,"timestamp":7007486810,"duration":43364,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/route-loader.js"},"startTime":1659429822129},{"traceId":"d540fb654d8a8c82","parentId":179,"name":"next-swc-transform","id":180,"timestamp":7007489167,"duration":41033,"tags":{},"startTime":1659429822132},{"traceId":"d540fb654d8a8c82","parentId":156,"name":"next-swc-loader","id":179,"timestamp":7007489154,"duration":41049,"tags":{},"startTime":1659429822132},{"traceId":"d540fb654d8a8c82","parentId":62,"name":"build-module-js","id":156,"timestamp":7007488725,"duration":42256,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/router/utils/parse-path.js"},"startTime":1659429822131},{"traceId":"d540fb654d8a8c82","parentId":183,"name":"next-swc-transform","id":184,"timestamp":7007489190,"duration":41814,"tags":{},"startTime":1659429822132},{"traceId":"d540fb654d8a8c82","parentId":158,"name":"next-swc-loader","id":183,"timestamp":7007489180,"duration":41826,"tags":{},"startTime":1659429822132},{"traceId":"d540fb654d8a8c82","parentId":62,"name":"build-module-js","id":158,"timestamp":7007488834,"duration":44411,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js"},"startTime":1659429822131},{"traceId":"d540fb654d8a8c82","parentId":181,"name":"next-swc-transform","id":182,"timestamp":7007489179,"duration":44096,"tags":{},"startTime":1659429822132},{"traceId":"d540fb654d8a8c82","parentId":157,"name":"next-swc-loader","id":181,"timestamp":7007489169,"duration":44109,"tags":{},"startTime":1659429822132},{"traceId":"d540fb654d8a8c82","parentId":62,"name":"build-module-js","id":157,"timestamp":7007488782,"duration":46614,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js"},"startTime":1659429822131},{"traceId":"d540fb654d8a8c82","parentId":175,"name":"next-swc-transform","id":176,"timestamp":7007489140,"duration":46301,"tags":{},"startTime":1659429822132},{"traceId":"d540fb654d8a8c82","parentId":154,"name":"next-swc-loader","id":175,"timestamp":7007489129,"duration":46316,"tags":{},"startTime":1659429822132},{"traceId":"d540fb654d8a8c82","parentId":62,"name":"build-module-js","id":154,"timestamp":7007488614,"duration":49401,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/router/utils/route-regex.js"},"startTime":1659429822131},{"traceId":"d540fb654d8a8c82","parentId":177,"name":"next-swc-transform","id":178,"timestamp":7007489152,"duration":48908,"tags":{},"startTime":1659429822132},{"traceId":"d540fb654d8a8c82","parentId":155,"name":"next-swc-loader","id":177,"timestamp":7007489142,"duration":48921,"tags":{},"startTime":1659429822132},{"traceId":"d540fb654d8a8c82","parentId":62,"name":"build-module-js","id":155,"timestamp":7007488671,"duration":51145,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/router/utils/format-url.js"},"startTime":1659429822131},{"traceId":"d540fb654d8a8c82","parentId":187,"name":"next-swc-transform","id":188,"timestamp":7007542219,"duration":4337,"tags":{},"startTime":1659429822185},{"traceId":"d540fb654d8a8c82","parentId":185,"name":"next-swc-loader","id":187,"timestamp":7007542191,"duration":4372,"tags":{},"startTime":1659429822185},{"traceId":"d540fb654d8a8c82","parentId":62,"name":"build-module-js","id":185,"timestamp":7007541906,"duration":5428,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/page-path/denormalize-page-path.js"},"startTime":1659429822184},{"traceId":"d540fb654d8a8c82","parentId":189,"name":"next-swc-transform","id":190,"timestamp":7007542235,"duration":5120,"tags":{},"startTime":1659429822185},{"traceId":"d540fb654d8a8c82","parentId":186,"name":"next-swc-loader","id":189,"timestamp":7007542222,"duration":5136,"tags":{},"startTime":1659429822185},{"traceId":"d540fb654d8a8c82","parentId":62,"name":"build-module-js","id":186,"timestamp":7007541981,"duration":6094,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js"},"startTime":1659429822185},{"traceId":"d540fb654d8a8c82","parentId":144,"name":"read-resource","id":145,"timestamp":7007488025,"duration":63608,"tags":{},"startTime":1659429822131},{"traceId":"d540fb654d8a8c82","parentId":39,"name":"build-module-js","id":144,"timestamp":7007487920,"duration":63898,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/router.js"},"startTime":1659429822130},{"traceId":"d540fb654d8a8c82","parentId":192,"name":"next-swc-transform","id":193,"timestamp":7007548381,"duration":4740,"tags":{},"startTime":1659429822191},{"traceId":"d540fb654d8a8c82","parentId":191,"name":"next-swc-loader","id":192,"timestamp":7007548359,"duration":4767,"tags":{},"startTime":1659429822191},{"traceId":"d540fb654d8a8c82","parentId":53,"name":"build-module-js","id":191,"timestamp":7007548270,"duration":6893,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/portal/index.js"},"startTime":1659429822191},{"traceId":"d540fb654d8a8c82","parentId":219,"name":"next-swc-transform","id":220,"timestamp":7007558978,"duration":1776,"tags":{},"startTime":1659429822202},{"traceId":"d540fb654d8a8c82","parentId":218,"name":"next-swc-loader","id":219,"timestamp":7007558946,"duration":1819,"tags":{},"startTime":1659429822202},{"traceId":"d540fb654d8a8c82","parentId":123,"name":"build-module-js","id":218,"timestamp":7007558800,"duration":3085,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js"},"startTime":1659429822201},{"traceId":"d540fb654d8a8c82","parentId":235,"name":"next-swc-transform","id":236,"timestamp":7007559950,"duration":2344,"tags":{},"startTime":1659429822203},{"traceId":"d540fb654d8a8c82","parentId":224,"name":"next-swc-loader","id":235,"timestamp":7007559939,"duration":2359,"tags":{},"startTime":1659429822203},{"traceId":"d540fb654d8a8c82","parentId":147,"name":"build-module-js","id":224,"timestamp":7007559624,"duration":3400,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/amp-mode.js"},"startTime":1659429822202},{"traceId":"d540fb654d8a8c82","parentId":229,"name":"next-swc-transform","id":230,"timestamp":7007559893,"duration":3160,"tags":{},"startTime":1659429822202},{"traceId":"d540fb654d8a8c82","parentId":221,"name":"next-swc-loader","id":229,"timestamp":7007559871,"duration":3185,"tags":{},"startTime":1659429822202},{"traceId":"d540fb654d8a8c82","parentId":125,"name":"build-module-js","id":221,"timestamp":7007559448,"duration":4534,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/trusted-types.js"},"startTime":1659429822202},{"traceId":"d540fb654d8a8c82","parentId":233,"name":"next-swc-transform","id":234,"timestamp":7007559937,"duration":4065,"tags":{},"startTime":1659429822203},{"traceId":"d540fb654d8a8c82","parentId":223,"name":"next-swc-loader","id":233,"timestamp":7007559922,"duration":4084,"tags":{},"startTime":1659429822202},{"traceId":"d540fb654d8a8c82","parentId":147,"name":"build-module-js","id":223,"timestamp":7007559579,"duration":5084,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/amp-context.js"},"startTime":1659429822202},{"traceId":"d540fb654d8a8c82","parentId":237,"name":"next-swc-transform","id":238,"timestamp":7007559962,"duration":4722,"tags":{},"startTime":1659429822203},{"traceId":"d540fb654d8a8c82","parentId":225,"name":"next-swc-loader","id":237,"timestamp":7007559951,"duration":4736,"tags":{},"startTime":1659429822203},{"traceId":"d540fb654d8a8c82","parentId":154,"name":"build-module-js","id":225,"timestamp":7007559670,"duration":5704,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/escape-regexp.js"},"startTime":1659429822202},{"traceId":"d540fb654d8a8c82","parentId":239,"name":"next-swc-transform","id":240,"timestamp":7007559974,"duration":5420,"tags":{},"startTime":1659429822203}]
-[{"traceId":"d540fb654d8a8c82","parentId":226,"name":"next-swc-loader","id":239,"timestamp":7007559964,"duration":5620,"tags":{},"startTime":1659429822203},{"traceId":"d540fb654d8a8c82","parentId":158,"name":"build-module-js","id":226,"timestamp":7007559715,"duration":8549,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/router/utils/add-path-suffix.js"},"startTime":1659429822202},{"traceId":"d540fb654d8a8c82","parentId":241,"name":"next-swc-transform","id":242,"timestamp":7007559986,"duration":10722,"tags":{},"startTime":1659429822203},{"traceId":"d540fb654d8a8c82","parentId":227,"name":"next-swc-loader","id":241,"timestamp":7007559976,"duration":10737,"tags":{},"startTime":1659429822203},{"traceId":"d540fb654d8a8c82","parentId":158,"name":"build-module-js","id":227,"timestamp":7007559756,"duration":11800,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/router/utils/add-locale.js"},"startTime":1659429822202},{"traceId":"d540fb654d8a8c82","parentId":243,"name":"next-swc-transform","id":244,"timestamp":7007559997,"duration":11581,"tags":{},"startTime":1659429822203},{"traceId":"d540fb654d8a8c82","parentId":228,"name":"next-swc-loader","id":243,"timestamp":7007559988,"duration":11594,"tags":{},"startTime":1659429822203},{"traceId":"d540fb654d8a8c82","parentId":157,"name":"build-module-js","id":228,"timestamp":7007559809,"duration":12443,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/router/utils/remove-path-prefix.js"},"startTime":1659429822202},{"traceId":"d540fb654d8a8c82","parentId":196,"name":"read-resource","id":197,"timestamp":7007556109,"duration":16159,"tags":{},"startTime":1659429822199},{"traceId":"d540fb654d8a8c82","parentId":25,"name":"build-module-js","id":196,"timestamp":7007556082,"duration":16676,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/@swc/helpers/lib/_construct.js"},"startTime":1659429822199},{"traceId":"d540fb654d8a8c82","parentId":202,"name":"read-resource","id":203,"timestamp":7007556213,"duration":16561,"tags":{},"startTime":1659429822199},{"traceId":"d540fb654d8a8c82","parentId":53,"name":"build-module-js","id":202,"timestamp":7007556193,"duration":16778,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/@swc/helpers/lib/_class_call_check.js"},"startTime":1659429822199},{"traceId":"d540fb654d8a8c82","parentId":204,"name":"read-resource","id":205,"timestamp":7007556249,"duration":16739,"tags":{},"startTime":1659429822199},{"traceId":"d540fb654d8a8c82","parentId":53,"name":"build-module-js","id":204,"timestamp":7007556227,"duration":17054,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/@swc/helpers/lib/_create_class.js"},"startTime":1659429822199},{"traceId":"d540fb654d8a8c82","parentId":194,"name":"read-resource","id":195,"timestamp":7007556062,"duration":17236,"tags":{},"startTime":1659429822199},{"traceId":"d540fb654d8a8c82","parentId":23,"name":"build-module-js","id":194,"timestamp":7007556031,"duration":17623,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/@swc/helpers/lib/_to_consumable_array.js"},"startTime":1659429822199},{"traceId":"d540fb654d8a8c82","parentId":198,"name":"read-resource","id":199,"timestamp":7007556148,"duration":17524,"tags":{},"startTime":1659429822199},{"traceId":"d540fb654d8a8c82","parentId":24,"name":"build-module-js","id":198,"timestamp":7007556124,"duration":17737,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/@swc/helpers/lib/_interop_require_default.js"},"startTime":1659429822199},{"traceId":"d540fb654d8a8c82","parentId":200,"name":"read-resource","id":201,"timestamp":7007556181,"duration":17696,"tags":{},"startTime":1659429822199},{"traceId":"d540fb654d8a8c82","parentId":40,"name":"build-module-js","id":200,"timestamp":7007556162,"duration":18062,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/@swc/helpers/lib/_sliced_to_array.js"},"startTime":1659429822199},{"traceId":"d540fb654d8a8c82","parentId":210,"name":"read-resource","id":211,"timestamp":7007556341,"duration":17902,"tags":{},"startTime":1659429822199},{"traceId":"d540fb654d8a8c82","parentId":53,"name":"build-module-js","id":210,"timestamp":7007556323,"duration":18311,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/@swc/helpers/lib/_create_super.js"},"startTime":1659429822199},{"traceId":"d540fb654d8a8c82","parentId":214,"name":"read-resource","id":215,"timestamp":7007556405,"duration":18244,"tags":{},"startTime":1659429822199},{"traceId":"d540fb654d8a8c82","parentId":25,"name":"build-module-js","id":214,"timestamp":7007556388,"duration":18450,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/react/index.js"},"startTime":1659429822199},{"traceId":"d540fb654d8a8c82","parentId":206,"name":"read-resource","id":207,"timestamp":7007556283,"duration":18574,"tags":{},"startTime":1659429822199},{"traceId":"d540fb654d8a8c82","parentId":53,"name":"build-module-js","id":206,"timestamp":7007556264,"duration":18906,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/@swc/helpers/lib/_inherits.js"},"startTime":1659429822199},{"traceId":"d540fb654d8a8c82","parentId":208,"name":"read-resource","id":209,"timestamp":7007556312,"duration":18872,"tags":{},"startTime":1659429822199},{"traceId":"d540fb654d8a8c82","parentId":53,"name":"build-module-js","id":208,"timestamp":7007556295,"duration":19337,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/@swc/helpers/lib/_interop_require_wildcard.js"},"startTime":1659429822199},{"traceId":"d540fb654d8a8c82","parentId":212,"name":"read-resource","id":213,"timestamp":7007556372,"duration":19273,"tags":{},"startTime":1659429822199},{"traceId":"d540fb654d8a8c82","parentId":73,"name":"build-module-js","id":212,"timestamp":7007556354,"duration":19590,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/@swc/helpers/lib/_instanceof.js"},"startTime":1659429822199},{"traceId":"d540fb654d8a8c82","parentId":231,"name":"next-swc-transform","id":232,"timestamp":7007559918,"duration":16079,"tags":{},"startTime":1659429822202},{"traceId":"d540fb654d8a8c82","parentId":222,"name":"next-swc-loader","id":231,"timestamp":7007559897,"duration":16104,"tags":{},"startTime":1659429822202},{"traceId":"d540fb654d8a8c82","parentId":147,"name":"build-module-js","id":222,"timestamp":7007559520,"duration":18629,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/side-effect.js"},"startTime":1659429822202},{"traceId":"d540fb654d8a8c82","parentId":9,"name":"add-entry","id":12,"timestamp":7007173202,"duration":405059,"tags":{"request":"./../node_modules/next/dist/client/dev/amp-dev"},"startTime":1659429821816},{"traceId":"d540fb654d8a8c82","parentId":246,"name":"next-swc-transform","id":247,"timestamp":7007562233,"duration":17587,"tags":{},"startTime":1659429822205},{"traceId":"d540fb654d8a8c82","parentId":245,"name":"next-swc-loader","id":246,"timestamp":7007562210,"duration":17615,"tags":{},"startTime":1659429822205},{"traceId":"d540fb654d8a8c82","parentId":185,"name":"build-module-js","id":245,"timestamp":7007562140,"duration":18273,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/page-path/normalize-path-sep.js"},"startTime":1659429822205},{"traceId":"d540fb654d8a8c82","parentId":216,"name":"read-resource","id":217,"timestamp":7007558784,"duration":21819,"tags":{},"startTime":1659429822201},{"traceId":"d540fb654d8a8c82","parentId":83,"name":"build-module-js","id":216,"timestamp":7007558754,"duration":22366,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/@swc/helpers/lib/_wrap_native_super.js"},"startTime":1659429822201},{"traceId":"d540fb654d8a8c82","parentId":248,"name":"read-resource","id":249,"timestamp":7007581502,"duration":6930,"tags":{},"startTime":1659429822224},{"traceId":"d540fb654d8a8c82","parentId":53,"name":"build-module-js","id":248,"timestamp":7007581465,"duration":81613,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js"},"startTime":1659429822224},{"traceId":"d540fb654d8a8c82","parentId":9,"name":"add-entry","id":16,"timestamp":7007173273,"duration":492283,"tags":{"request":"next-client-pages-loader?absolutePagePath=private-next-pages%2F_error&page=%2F_error!"},"startTime":1659429821816},{"traceId":"d540fb654d8a8c82","parentId":250,"name":"read-resource","id":251,"timestamp":7007587216,"duration":78414,"tags":{},"startTime":1659429822230},{"traceId":"d540fb654d8a8c82","parentId":53,"name":"build-module-js","id":250,"timestamp":7007587188,"duration":78675,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/compiled/react-is/index.js"},"startTime":1659429822230},{"traceId":"d540fb654d8a8c82","parentId":256,"name":"read-resource","id":257,"timestamp":7007587313,"duration":78566,"tags":{},"startTime":1659429822230},{"traceId":"d540fb654d8a8c82","parentId":194,"name":"build-module-js","id":256,"timestamp":7007587296,"duration":78799,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/@swc/helpers/lib/_iterable_to_array.js"},"startTime":1659429822230},{"traceId":"d540fb654d8a8c82","parentId":254,"name":"read-resource","id":255,"timestamp":7007587285,"duration":78826,"tags":{},"startTime":1659429822230},{"traceId":"d540fb654d8a8c82","parentId":194,"name":"build-module-js","id":254,"timestamp":7007587265,"duration":79074,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/@swc/helpers/lib/_array_without_holes.js"},"startTime":1659429822230},{"traceId":"d540fb654d8a8c82","parentId":252,"name":"read-resource","id":253,"timestamp":7007587252,"duration":79101,"tags":{},"startTime":1659429822230},{"traceId":"d540fb654d8a8c82","parentId":196,"name":"build-module-js","id":252,"timestamp":7007587232,"duration":79323,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/@swc/helpers/lib/_set_prototype_of.js"},"startTime":1659429822230},{"traceId":"d540fb654d8a8c82","parentId":260,"name":"read-resource","id":261,"timestamp":7007587373,"duration":79198,"tags":{},"startTime":1659429822230},{"traceId":"d540fb654d8a8c82","parentId":194,"name":"build-module-js","id":260,"timestamp":7007587353,"duration":79629,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/@swc/helpers/lib/_unsupported_iterable_to_array.js"},"startTime":1659429822230},{"traceId":"d540fb654d8a8c82","parentId":258,"name":"read-resource","id":259,"timestamp":7007587341,"duration":79656,"tags":{},"startTime":1659429822230},{"traceId":"d540fb654d8a8c82","parentId":194,"name":"build-module-js","id":258,"timestamp":7007587325,"duration":79865,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/@swc/helpers/lib/_non_iterable_spread.js"},"startTime":1659429822230},{"traceId":"d540fb654d8a8c82","parentId":264,"name":"read-resource","id":265,"timestamp":7007587432,"duration":79770,"tags":{},"startTime":1659429822230},{"traceId":"d540fb654d8a8c82","parentId":200,"name":"build-module-js","id":264,"timestamp":7007587416,"duration":79934,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/@swc/helpers/lib/_non_iterable_rest.js"},"startTime":1659429822230},{"traceId":"d540fb654d8a8c82","parentId":266,"name":"read-resource","id":267,"timestamp":7007587460,"duration":79901,"tags":{},"startTime":1659429822230},{"traceId":"d540fb654d8a8c82","parentId":210,"name":"build-module-js","id":266,"timestamp":7007587444,"duration":80132,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/@swc/helpers/lib/_is_native_reflect_construct.js"},"startTime":1659429822230},{"traceId":"d540fb654d8a8c82","parentId":262,"name":"read-resource","id":263,"timestamp":7007587404,"duration":80184,"tags":{},"startTime":1659429822230},{"traceId":"d540fb654d8a8c82","parentId":200,"name":"build-module-js","id":262,"timestamp":7007587386,"duration":80353,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/@swc/helpers/lib/_array_with_holes.js"},"startTime":1659429822230},{"traceId":"d540fb654d8a8c82","parentId":270,"name":"read-resource","id":271,"timestamp":7007587519,"duration":80232,"tags":{},"startTime":1659429822230},{"traceId":"d540fb654d8a8c82","parentId":210,"name":"build-module-js","id":270,"timestamp":7007587501,"duration":81204,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/@swc/helpers/lib/_possible_constructor_return.js"},"startTime":1659429822230},{"traceId":"d540fb654d8a8c82","parentId":268,"name":"read-resource","id":269,"timestamp":7007587488,"duration":81232,"tags":{},"startTime":1659429822230},{"traceId":"d540fb654d8a8c82","parentId":210,"name":"build-module-js","id":268,"timestamp":7007587472,"duration":82713,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/@swc/helpers/lib/_get_prototype_of.js"},"startTime":1659429822230},{"traceId":"d540fb654d8a8c82","parentId":272,"name":"read-resource","id":273,"timestamp":7007587547,"duration":82654,"tags":{},"startTime":1659429822230},{"traceId":"d540fb654d8a8c82","parentId":53,"name":"build-module-js","id":272,"timestamp":7007587531,"duration":82985,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/react-dom/index.js"},"startTime":1659429822230},{"traceId":"d540fb654d8a8c82","parentId":274,"name":"read-resource","id":275,"timestamp":7007588174,"duration":85986,"tags":{},"startTime":1659429822231},{"traceId":"d540fb654d8a8c82","parentId":216,"name":"build-module-js","id":274,"timestamp":7007588149,"duration":86281,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/@swc/helpers/lib/_is_native_function.js"},"startTime":1659429822231},{"traceId":"d540fb654d8a8c82","parentId":279,"name":"next-swc-transform","id":280,"timestamp":7007673307,"duration":1602,"tags":{},"startTime":1659429822316},{"traceId":"d540fb654d8a8c82","parentId":278,"name":"next-swc-loader","id":279,"timestamp":7007673276,"duration":1637,"tags":{},"startTime":1659429822316},{"traceId":"d540fb654d8a8c82","parentId":185,"name":"build-module-js","id":278,"timestamp":7007673124,"duration":2352,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/router/utils/index.js"},"startTime":1659429822316},{"traceId":"d540fb654d8a8c82","parentId":276,"name":"read-resource","id":277,"timestamp":7007663580,"duration":11909,"tags":{},"startTime":1659429822306},{"traceId":"d540fb654d8a8c82","parentId":214,"name":"build-module-js","id":276,"timestamp":7007663533,"duration":23072,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/react/cjs/react.development.js"},"startTime":1659429822306},{"traceId":"d540fb654d8a8c82","parentId":283,"name":"next-swc-transform","id":284,"timestamp":7007687452,"duration":1981,"tags":{},"startTime":1659429822330},{"traceId":"d540fb654d8a8c82","parentId":281,"name":"next-swc-loader","id":283,"timestamp":7007687418,"duration":2023,"tags":{},"startTime":1659429822330},{"traceId":"d540fb654d8a8c82","parentId":70,"name":"build-module-js","id":281,"timestamp":7007687211,"duration":3170,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/compiled/strip-ansi/index.js"},"startTime":1659429822330},{"traceId":"d540fb654d8a8c82","parentId":285,"name":"next-swc-transform","id":286,"timestamp":7007687470,"duration":3209,"tags":{},"startTime":1659429822330},{"traceId":"d540fb654d8a8c82","parentId":282,"name":"next-swc-loader","id":285,"timestamp":7007687455,"duration":3229,"tags":{},"startTime":1659429822330},{"traceId":"d540fb654d8a8c82","parentId":17,"name":"build-module-js","id":282,"timestamp":7007687288,"duration":4647,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/pages/_app.js"},"startTime":1659429822330},{"traceId":"d540fb654d8a8c82","parentId":287,"name":"read-resource","id":288,"timestamp":7007688408,"duration":3542,"tags":{},"startTime":1659429822331},{"traceId":"d540fb654d8a8c82","parentId":75,"name":"build-module-js","id":287,"timestamp":7007688371,"duration":7474,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/compiled/web-vitals/web-vitals.umd.js"},"startTime":1659429822331},{"traceId":"d540fb654d8a8c82","parentId":289,"name":"read-resource","id":290,"timestamp":7007688447,"duration":7419,"tags":{},"startTime":1659429822331},{"traceId":"d540fb654d8a8c82","parentId":254,"name":"build-module-js","id":289,"timestamp":7007688425,"duration":7706,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/@swc/helpers/lib/_array_like_to_array.js"},"startTime":1659429822331},{"traceId":"d540fb654d8a8c82","parentId":293,"name":"read-resource","id":294,"timestamp":7007688515,"duration":7715,"tags":{},"startTime":1659429822331},{"traceId":"d540fb654d8a8c82","parentId":270,"name":"build-module-js","id":293,"timestamp":7007688494,"duration":7944,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/@swc/helpers/lib/_type_of.js"},"startTime":1659429822331},{"traceId":"d540fb654d8a8c82","parentId":291,"name":"read-resource","id":292,"timestamp":7007688481,"duration":7971,"tags":{},"startTime":1659429822331},{"traceId":"d540fb654d8a8c82","parentId":270,"name":"build-module-js","id":291,"timestamp":7007688459,"duration":8182,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/@swc/helpers/lib/_assert_this_initialized.js"},"startTime":1659429822331},{"traceId":"d540fb654d8a8c82","parentId":9,"name":"add-entry","id":14,"timestamp":7007173243,"duration":524825,"tags":{"request":"next-client-pages-loader?absolutePagePath=private-next-pages%2F_app&page=%2F_app!"},"startTime":1659429821816},{"traceId":"d540fb654d8a8c82","parentId":300,"name":"next-swc-transform","id":301,"timestamp":7007690601,"duration":7557,"tags":{},"startTime":1659429822333},{"traceId":"d540fb654d8a8c82","parentId":299,"name":"next-swc-loader","id":300,"timestamp":7007690575,"duration":7587,"tags":{},"startTime":1659429822333},{"traceId":"d540fb654d8a8c82","parentId":278,"name":"build-module-js","id":299,"timestamp":7007690505,"duration":10269,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/router/utils/sorted-routes.js"},"startTime":1659429822333},{"traceId":"d540fb654d8a8c82","parentId":295,"name":"read-resource","id":296,"timestamp":7007689132,"duration":12677,"tags":{},"startTime":1659429822332},{"traceId":"d540fb654d8a8c82","parentId":250,"name":"build-module-js","id":295,"timestamp":7007689100,"duration":13970,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/compiled/react-is/cjs/react-is.development.js"},"startTime":1659429822332},{"traceId":"d540fb654d8a8c82","parentId":297,"name":"read-resource","id":298,"timestamp":7007689166,"duration":14031,"tags":{},"startTime":1659429822332},{"traceId":"d540fb654d8a8c82","parentId":272,"name":"build-module-js","id":297,"timestamp":7007689147,"duration":136912,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/react-dom/cjs/react-dom.development.js"},"startTime":1659429822332},{"traceId":"d540fb654d8a8c82","parentId":302,"name":"read-resource","id":303,"timestamp":7007828168,"duration":532,"tags":{},"startTime":1659429822471},{"traceId":"d540fb654d8a8c82","parentId":276,"name":"build-module-js","id":302,"timestamp":7007828127,"duration":780,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/build/polyfills/object-assign.js"},"startTime":1659429822471},{"traceId":"d540fb654d8a8c82","parentId":9,"name":"add-entry","id":15,"timestamp":7007173258,"duration":655784,"tags":{"request":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/router.js"},"startTime":1659429821816},{"traceId":"d540fb654d8a8c82","parentId":304,"name":"read-resource","id":305,"timestamp":7007829959,"duration":440,"tags":{},"startTime":1659429822473},{"traceId":"d540fb654d8a8c82","parentId":297,"name":"build-module-js","id":304,"timestamp":7007829931,"duration":657,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/scheduler/tracing.js"},"startTime":1659429822473},{"traceId":"d540fb654d8a8c82","parentId":306,"name":"read-resource","id":307,"timestamp":7007830336,"duration":470,"tags":{},"startTime":1659429822473}]
-[{"traceId":"d540fb654d8a8c82","parentId":297,"name":"build-module-js","id":306,"timestamp":7007830305,"duration":880,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/scheduler/index.js"},"startTime":1659429822473},{"traceId":"d540fb654d8a8c82","parentId":308,"name":"read-resource","id":309,"timestamp":7007831700,"duration":277,"tags":{},"startTime":1659429822474},{"traceId":"d540fb654d8a8c82","parentId":304,"name":"build-module-js","id":308,"timestamp":7007831672,"duration":1306,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/scheduler/cjs/scheduler-tracing.development.js"},"startTime":1659429822474},{"traceId":"d540fb654d8a8c82","parentId":310,"name":"read-resource","id":311,"timestamp":7007831737,"duration":1373,"tags":{},"startTime":1659429822474},{"traceId":"d540fb654d8a8c82","parentId":306,"name":"build-module-js","id":310,"timestamp":7007831717,"duration":3168,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/scheduler/cjs/scheduler.development.js"},"startTime":1659429822474},{"traceId":"d540fb654d8a8c82","parentId":9,"name":"add-entry","id":13,"timestamp":7007173227,"duration":661750,"tags":{"request":"./../node_modules/next/dist/client/next-dev.js"},"startTime":1659429821816},{"traceId":"d540fb654d8a8c82","parentId":1,"name":"make","id":10,"timestamp":7007172122,"duration":663068,"tags":{},"startTime":1659429821815},{"traceId":"d540fb654d8a8c82","parentId":9,"name":"webpack-compilation-chunk-graph","id":313,"timestamp":7007838222,"duration":4374,"tags":{},"startTime":1659429822481},{"traceId":"d540fb654d8a8c82","parentId":9,"name":"webpack-compilation-optimize-modules","id":315,"timestamp":7007842664,"duration":16,"tags":{},"startTime":1659429822485},{"traceId":"d540fb654d8a8c82","parentId":9,"name":"webpack-compilation-optimize-chunks","id":316,"timestamp":7007842732,"duration":271,"tags":{},"startTime":1659429822485},{"traceId":"d540fb654d8a8c82","parentId":9,"name":"webpack-compilation-optimize-tree","id":317,"timestamp":7007843043,"duration":86,"tags":{},"startTime":1659429822486},{"traceId":"d540fb654d8a8c82","parentId":9,"name":"webpack-compilation-optimize","id":314,"timestamp":7007842635,"duration":704,"tags":{},"startTime":1659429822485},{"traceId":"d540fb654d8a8c82","parentId":9,"name":"webpack-compilation-hash","id":318,"timestamp":7007862899,"duration":12154,"tags":{},"startTime":1659429822505},{"traceId":"d540fb654d8a8c82","parentId":9,"name":"NextJsBuildManifest-generateClientManifest","id":320,"timestamp":7008009952,"duration":637,"tags":{},"startTime":1659429822653},{"traceId":"d540fb654d8a8c82","parentId":9,"name":"NextJsBuildManifest-createassets","id":319,"timestamp":7008009437,"duration":1168,"tags":{},"startTime":1659429822652},{"traceId":"d540fb654d8a8c82","parentId":9,"name":"webpack-compilation-seal","id":312,"timestamp":7007837718,"duration":173896,"tags":{},"startTime":1659429822480},{"traceId":"d540fb654d8a8c82","parentId":1,"name":"webpack-compilation","id":9,"timestamp":7007164957,"duration":846897,"tags":{"name":"client"},"startTime":1659429821808},{"traceId":"d540fb654d8a8c82","parentId":1,"name":"emit","id":321,"timestamp":7008012153,"duration":44489,"tags":{},"startTime":1659429822655},{"traceId":"d540fb654d8a8c82","parentId":330,"name":"next-swc-transform","id":331,"timestamp":7008108016,"duration":2624,"tags":{},"startTime":1659429822751},{"traceId":"d540fb654d8a8c82","parentId":327,"name":"next-swc-loader","id":330,"timestamp":7008107963,"duration":2686,"tags":{},"startTime":1659429822751},{"traceId":"d540fb654d8a8c82","parentId":322,"name":"build-module-js","id":327,"timestamp":7008107352,"duration":5797,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/pages/_app.js"},"startTime":1659429822750},{"traceId":"d540fb654d8a8c82","parentId":332,"name":"next-swc-transform","id":333,"timestamp":7008108039,"duration":6522,"tags":{},"startTime":1659429822751},{"traceId":"d540fb654d8a8c82","parentId":328,"name":"next-swc-loader","id":332,"timestamp":7008108019,"duration":6546,"tags":{},"startTime":1659429822751},{"traceId":"d540fb654d8a8c82","parentId":322,"name":"build-module-js","id":328,"timestamp":7008107875,"duration":10245,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/pages/_error.js"},"startTime":1659429822750},{"traceId":"d540fb654d8a8c82","parentId":327,"name":"build-module-react","id":336,"timestamp":7008118605,"duration":434,"tags":{"name":"react"},"startTime":1659429822761},{"traceId":"d540fb654d8a8c82","parentId":327,"name":"build-module-/shared/lib/utils","id":337,"timestamp":7008119835,"duration":17,"tags":{"name":"../shared/lib/utils"},"startTime":1659429822762},{"traceId":"d540fb654d8a8c82","parentId":328,"name":"build-module-/shared/lib/head","id":338,"timestamp":7008119868,"duration":11,"tags":{"name":"../shared/lib/head"},"startTime":1659429822762},{"traceId":"d540fb654d8a8c82","parentId":322,"name":"add-entry","id":324,"timestamp":7008068608,"duration":51335,"tags":{"request":"private-next-pages/_app"},"startTime":1659429822711},{"traceId":"d540fb654d8a8c82","parentId":322,"name":"add-entry","id":325,"timestamp":7008068664,"duration":51290,"tags":{"request":"private-next-pages/_error"},"startTime":1659429822711},{"traceId":"d540fb654d8a8c82","parentId":334,"name":"next-swc-transform","id":335,"timestamp":7008108055,"duration":13097,"tags":{},"startTime":1659429822751},{"traceId":"d540fb654d8a8c82","parentId":329,"name":"next-swc-loader","id":334,"timestamp":7008108041,"duration":13114,"tags":{},"startTime":1659429822751},{"traceId":"d540fb654d8a8c82","parentId":322,"name":"build-module-js","id":329,"timestamp":7008107925,"duration":44419,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/pages/_document.js"},"startTime":1659429822751},{"traceId":"d540fb654d8a8c82","parentId":329,"name":"build-module-/shared/lib/constants","id":339,"timestamp":7008153880,"duration":21,"tags":{"name":"../shared/lib/constants"},"startTime":1659429822796},{"traceId":"d540fb654d8a8c82","parentId":329,"name":"build-module-/shared/lib/html-context","id":340,"timestamp":7008153919,"duration":11,"tags":{"name":"../shared/lib/html-context"},"startTime":1659429822796},{"traceId":"d540fb654d8a8c82","parentId":329,"name":"build-module-/server/get-page-files","id":341,"timestamp":7008155866,"duration":18,"tags":{"name":"../server/get-page-files"},"startTime":1659429822798},{"traceId":"d540fb654d8a8c82","parentId":329,"name":"build-module-/server/utils","id":342,"timestamp":7008155902,"duration":88,"tags":{"name":"../server/utils"},"startTime":1659429822798},{"traceId":"d540fb654d8a8c82","parentId":329,"name":"build-module-/server/htmlescape","id":343,"timestamp":7008156001,"duration":9,"tags":{"name":"../server/htmlescape"},"startTime":1659429822799},{"traceId":"d540fb654d8a8c82","parentId":345,"name":"read-resource","id":346,"timestamp":7008156159,"duration":312,"tags":{},"startTime":1659429822799},{"traceId":"d540fb654d8a8c82","parentId":329,"name":"build-module-js","id":345,"timestamp":7008156086,"duration":1377,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/lib/is-error.js"},"startTime":1659429822799},{"traceId":"d540fb654d8a8c82","parentId":347,"name":"read-resource","id":348,"timestamp":7008156201,"duration":1467,"tags":{},"startTime":1659429822799},{"traceId":"d540fb654d8a8c82","parentId":329,"name":"build-module-js","id":347,"timestamp":7008156179,"duration":2678,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/lib/pretty-bytes.js"},"startTime":1659429822799},{"traceId":"d540fb654d8a8c82","parentId":349,"name":"next-swc-transform","id":350,"timestamp":7008156275,"duration":2959,"tags":{},"startTime":1659429822799},{"traceId":"d540fb654d8a8c82","parentId":344,"name":"next-swc-loader","id":349,"timestamp":7008156217,"duration":3022,"tags":{},"startTime":1659429822799},{"traceId":"d540fb654d8a8c82","parentId":329,"name":"build-module-js","id":344,"timestamp":7008156019,"duration":8711,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/script.js"},"startTime":1659429822799},{"traceId":"d540fb654d8a8c82","parentId":345,"name":"build-module-/shared/lib/is-plain-object","id":351,"timestamp":7008164889,"duration":19,"tags":{"name":"../shared/lib/is-plain-object"},"startTime":1659429822807},{"traceId":"d540fb654d8a8c82","parentId":344,"name":"build-module-/shared/lib/head-manager-context","id":354,"timestamp":7008166110,"duration":14,"tags":{"name":"../shared/lib/head-manager-context"},"startTime":1659429822809},{"traceId":"d540fb654d8a8c82","parentId":357,"name":"next-swc-transform","id":358,"timestamp":7008166191,"duration":1248,"tags":{},"startTime":1659429822809},{"traceId":"d540fb654d8a8c82","parentId":353,"name":"next-swc-loader","id":357,"timestamp":7008166176,"duration":1267,"tags":{},"startTime":1659429822809},{"traceId":"d540fb654d8a8c82","parentId":344,"name":"build-module-js","id":353,"timestamp":7008166075,"duration":2496,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/request-idle-callback.js"},"startTime":1659429822809},{"traceId":"d540fb654d8a8c82","parentId":355,"name":"next-swc-transform","id":356,"timestamp":7008166173,"duration":2880,"tags":{},"startTime":1659429822809},{"traceId":"d540fb654d8a8c82","parentId":352,"name":"next-swc-loader","id":355,"timestamp":7008166142,"duration":2916,"tags":{},"startTime":1659429822809},{"traceId":"d540fb654d8a8c82","parentId":344,"name":"build-module-js","id":352,"timestamp":7008166015,"duration":8089,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/head-manager.js"},"startTime":1659429822809},{"traceId":"d540fb654d8a8c82","parentId":322,"name":"add-entry","id":326,"timestamp":7008068683,"duration":105498,"tags":{"request":"private-next-pages/_document"},"startTime":1659429822711},{"traceId":"d540fb654d8a8c82","parentId":1,"name":"make","id":323,"timestamp":7008063154,"duration":111107,"tags":{},"startTime":1659429822706},{"traceId":"d540fb654d8a8c82","parentId":322,"name":"webpack-compilation-chunk-graph","id":360,"timestamp":7008174663,"duration":464,"tags":{},"startTime":1659429822817},{"traceId":"d540fb654d8a8c82","parentId":322,"name":"webpack-compilation-optimize-modules","id":362,"timestamp":7008175162,"duration":10,"tags":{},"startTime":1659429822818},{"traceId":"d540fb654d8a8c82","parentId":322,"name":"webpack-compilation-optimize-chunks","id":363,"timestamp":7008175241,"duration":81,"tags":{},"startTime":1659429822818},{"traceId":"d540fb654d8a8c82","parentId":322,"name":"webpack-compilation-optimize-tree","id":364,"timestamp":7008175356,"duration":18,"tags":{},"startTime":1659429822818},{"traceId":"d540fb654d8a8c82","parentId":322,"name":"webpack-compilation-optimize","id":361,"timestamp":7008175148,"duration":312,"tags":{},"startTime":1659429822818},{"traceId":"d540fb654d8a8c82","parentId":322,"name":"webpack-compilation-hash","id":365,"timestamp":7008178556,"duration":1766,"tags":{},"startTime":1659429822821},{"traceId":"d540fb654d8a8c82","parentId":322,"name":"webpack-compilation-seal","id":359,"timestamp":7008174589,"duration":21150,"tags":{},"startTime":1659429822817},{"traceId":"d540fb654d8a8c82","parentId":1,"name":"webpack-compilation","id":322,"timestamp":7008062543,"duration":133281,"tags":{"name":"server"},"startTime":1659429822705},{"traceId":"d540fb654d8a8c82","parentId":1,"name":"emit","id":366,"timestamp":7008195891,"duration":2841,"tags":{},"startTime":1659429822838},{"traceId":"d540fb654d8a8c82","parentId":1,"name":"make","id":368,"timestamp":7008203124,"duration":2074,"tags":{},"startTime":1659429822846},{"traceId":"d540fb654d8a8c82","parentId":367,"name":"webpack-compilation-chunk-graph","id":370,"timestamp":7008205344,"duration":30,"tags":{},"startTime":1659429822848},{"traceId":"d540fb654d8a8c82","parentId":367,"name":"webpack-compilation-optimize-modules","id":372,"timestamp":7008205396,"duration":176,"tags":{},"startTime":1659429822848},{"traceId":"d540fb654d8a8c82","parentId":367,"name":"webpack-compilation-optimize-chunks","id":373,"timestamp":7008205601,"duration":12,"tags":{},"startTime":1659429822848},{"traceId":"d540fb654d8a8c82","parentId":367,"name":"webpack-compilation-optimize-tree","id":374,"timestamp":7008205628,"duration":7,"tags":{},"startTime":1659429822848},{"traceId":"d540fb654d8a8c82","parentId":367,"name":"webpack-compilation-optimize","id":371,"timestamp":7008205388,"duration":282,"tags":{},"startTime":1659429822848},{"traceId":"d540fb654d8a8c82","parentId":367,"name":"webpack-compilation-hash","id":375,"timestamp":7008205878,"duration":68,"tags":{},"startTime":1659429822848},{"traceId":"d540fb654d8a8c82","parentId":367,"name":"webpack-compilation-seal","id":369,"timestamp":7008205307,"duration":981,"tags":{},"startTime":1659429822848},{"traceId":"d540fb654d8a8c82","parentId":1,"name":"webpack-compilation","id":367,"timestamp":7008202037,"duration":4289,"tags":{"name":"edge-server"},"startTime":1659429822845},{"traceId":"d540fb654d8a8c82","parentId":1,"name":"emit","id":376,"timestamp":7008206371,"duration":10232,"tags":{},"startTime":1659429822849}]
-[{"traceId":"d540fb654d8a8c82","parentId":388,"name":"next-client-pages-loader","id":389,"timestamp":7008622971,"duration":56,"tags":{"absolutePagePath":"/home/zeffo/Public/upscayl/renderer/pages/index.tsx"},"startTime":1659429823266},{"traceId":"d540fb654d8a8c82","parentId":379,"name":"build-module-tsx&page=%2F!","id":388,"timestamp":7008622802,"duration":860,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2Fhome%2Fzeffo%2FPublic%2Fupscayl%2Frenderer%2Fpages%2Findex.tsx&page=%2F!"},"startTime":1659429823265},{"traceId":"d540fb654d8a8c82","parentId":379,"name":"add-entry","id":381,"timestamp":7008617286,"duration":8337,"tags":{"request":"/home/zeffo/Public/upscayl/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1659429823260},{"traceId":"d540fb654d8a8c82","parentId":379,"name":"add-entry","id":384,"timestamp":7008617448,"duration":8897,"tags":{"request":"next-client-pages-loader?absolutePagePath=private-next-pages%2F_app&page=%2F_app!"},"startTime":1659429823260},{"traceId":"d540fb654d8a8c82","parentId":379,"name":"add-entry","id":382,"timestamp":7008617403,"duration":9918,"tags":{"request":"./../node_modules/next/dist/client/dev/amp-dev"},"startTime":1659429823260},{"traceId":"d540fb654d8a8c82","parentId":379,"name":"add-entry","id":386,"timestamp":7008617509,"duration":10123,"tags":{"request":"next-client-pages-loader?absolutePagePath=private-next-pages%2F_error&page=%2F_error!"},"startTime":1659429823260},{"traceId":"d540fb654d8a8c82","parentId":379,"name":"add-entry","id":385,"timestamp":7008617481,"duration":10494,"tags":{"request":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/router.js"},"startTime":1659429823260},{"traceId":"d540fb654d8a8c82","parentId":379,"name":"add-entry","id":383,"timestamp":7008617428,"duration":10787,"tags":{"request":"./../node_modules/next/dist/client/next-dev.js"},"startTime":1659429823260},{"traceId":"d540fb654d8a8c82","parentId":391,"name":"next-swc-transform","id":392,"timestamp":7008628280,"duration":1763,"tags":{},"startTime":1659429823271},{"traceId":"d540fb654d8a8c82","parentId":390,"name":"next-swc-loader","id":391,"timestamp":7008628225,"duration":1823,"tags":{},"startTime":1659429823271},{"traceId":"d540fb654d8a8c82","parentId":388,"name":"build-module-tsx","id":390,"timestamp":7008628144,"duration":5570,"tags":{"name":"/home/zeffo/Public/upscayl/renderer/pages/index.tsx"},"startTime":1659429823271},{"traceId":"d540fb654d8a8c82","parentId":398,"name":"read-resource","id":399,"timestamp":7008638970,"duration":275,"tags":{},"startTime":1659429823282},{"traceId":"d540fb654d8a8c82","parentId":390,"name":"build-module-js","id":398,"timestamp":7008638932,"duration":1029,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/react/jsx-dev-runtime.js"},"startTime":1659429823282},{"traceId":"d540fb654d8a8c82","parentId":396,"name":"read-resource","id":397,"timestamp":7008638826,"duration":1162,"tags":{},"startTime":1659429823281},{"traceId":"d540fb654d8a8c82","parentId":390,"name":"build-module-js","id":396,"timestamp":7008638734,"duration":1455,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/link.js"},"startTime":1659429823281},{"traceId":"d540fb654d8a8c82","parentId":394,"name":"next-swc-transform","id":395,"timestamp":7008637920,"duration":2754,"tags":{},"startTime":1659429823280},{"traceId":"d540fb654d8a8c82","parentId":393,"name":"next-swc-loader","id":394,"timestamp":7008637883,"duration":2797,"tags":{},"startTime":1659429823280},{"traceId":"d540fb654d8a8c82","parentId":390,"name":"build-module-tsx","id":393,"timestamp":7008637773,"duration":8219,"tags":{"name":"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx"},"startTime":1659429823280},{"traceId":"d540fb654d8a8c82","parentId":400,"name":"read-resource","id":401,"timestamp":7008651681,"duration":867,"tags":{},"startTime":1659429823294},{"traceId":"d540fb654d8a8c82","parentId":398,"name":"build-module-js","id":400,"timestamp":7008651618,"duration":23108,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/react/cjs/react-jsx-dev-runtime.development.js"},"startTime":1659429823294},{"traceId":"d540fb654d8a8c82","parentId":403,"name":"next-swc-transform","id":404,"timestamp":7008652364,"duration":23772,"tags":{},"startTime":1659429823295},{"traceId":"d540fb654d8a8c82","parentId":402,"name":"next-swc-loader","id":403,"timestamp":7008652306,"duration":23837,"tags":{},"startTime":1659429823295},{"traceId":"d540fb654d8a8c82","parentId":396,"name":"build-module-js","id":402,"timestamp":7008652204,"duration":35721,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/link.js"},"startTime":1659429823295},{"traceId":"d540fb654d8a8c82","parentId":414,"name":"read-resource","id":415,"timestamp":7008692644,"duration":1237,"tags":{},"startTime":1659429823335},{"traceId":"d540fb654d8a8c82","parentId":393,"name":"build-module-js","id":414,"timestamp":7008692611,"duration":1683,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/head.js"},"startTime":1659429823335},{"traceId":"d540fb654d8a8c82","parentId":412,"name":"next-swc-transform","id":413,"timestamp":7008692420,"duration":2332,"tags":{},"startTime":1659429823335},{"traceId":"d540fb654d8a8c82","parentId":407,"name":"next-swc-loader","id":412,"timestamp":7008692407,"duration":2350,"tags":{},"startTime":1659429823335},{"traceId":"d540fb654d8a8c82","parentId":402,"name":"build-module-js","id":407,"timestamp":7008692280,"duration":3674,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/app-router-context.js"},"startTime":1659429823335},{"traceId":"d540fb654d8a8c82","parentId":410,"name":"next-swc-transform","id":411,"timestamp":7008692405,"duration":3585,"tags":{},"startTime":1659429823335},{"traceId":"d540fb654d8a8c82","parentId":406,"name":"next-swc-loader","id":410,"timestamp":7008692391,"duration":3602,"tags":{},"startTime":1659429823335},{"traceId":"d540fb654d8a8c82","parentId":402,"name":"build-module-js","id":406,"timestamp":7008692228,"duration":6080,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/get-domain-locale.js"},"startTime":1659429823335},{"traceId":"d540fb654d8a8c82","parentId":408,"name":"next-swc-transform","id":409,"timestamp":7008692387,"duration":6306,"tags":{},"startTime":1659429823335},{"traceId":"d540fb654d8a8c82","parentId":405,"name":"next-swc-loader","id":408,"timestamp":7008692353,"duration":6345,"tags":{},"startTime":1659429823335},{"traceId":"d540fb654d8a8c82","parentId":402,"name":"build-module-js","id":405,"timestamp":7008692077,"duration":13199,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/use-intersection.js"},"startTime":1659429823335},{"traceId":"d540fb654d8a8c82","parentId":379,"name":"add-entry","id":387,"timestamp":7008617530,"duration":88547,"tags":{"request":"next-client-pages-loader?absolutePagePath=%2Fhome%2Fzeffo%2FPublic%2Fupscayl%2Frenderer%2Fpages%2Findex.tsx&page=%2F!"},"startTime":1659429823260},{"traceId":"d540fb654d8a8c82","parentId":377,"name":"make","id":380,"timestamp":7008602871,"duration":103260,"tags":{},"startTime":1659429823245},{"traceId":"d540fb654d8a8c82","parentId":379,"name":"webpack-compilation-chunk-graph","id":417,"timestamp":7008707579,"duration":2720,"tags":{},"startTime":1659429823350},{"traceId":"d540fb654d8a8c82","parentId":379,"name":"webpack-compilation-optimize-modules","id":419,"timestamp":7008710343,"duration":11,"tags":{},"startTime":1659429823353},{"traceId":"d540fb654d8a8c82","parentId":379,"name":"webpack-compilation-optimize-chunks","id":420,"timestamp":7008710388,"duration":74,"tags":{},"startTime":1659429823353},{"traceId":"d540fb654d8a8c82","parentId":379,"name":"webpack-compilation-optimize-tree","id":421,"timestamp":7008710487,"duration":12,"tags":{},"startTime":1659429823353},{"traceId":"d540fb654d8a8c82","parentId":379,"name":"webpack-compilation-optimize","id":418,"timestamp":7008710327,"duration":437,"tags":{},"startTime":1659429823353},{"traceId":"d540fb654d8a8c82","parentId":379,"name":"webpack-compilation-hash","id":422,"timestamp":7008717354,"duration":3762,"tags":{},"startTime":1659429823360},{"traceId":"d540fb654d8a8c82","parentId":379,"name":"NextJsBuildManifest-generateClientManifest","id":424,"timestamp":7008729824,"duration":98,"tags":{},"startTime":1659429823372},{"traceId":"d540fb654d8a8c82","parentId":379,"name":"NextJsBuildManifest-createassets","id":423,"timestamp":7008729732,"duration":203,"tags":{},"startTime":1659429823372},{"traceId":"d540fb654d8a8c82","parentId":379,"name":"webpack-compilation-seal","id":416,"timestamp":7008707259,"duration":23346,"tags":{},"startTime":1659429823350},{"traceId":"d540fb654d8a8c82","parentId":377,"name":"webpack-compilation","id":379,"timestamp":7008602120,"duration":128531,"tags":{"name":"client"},"startTime":1659429823245},{"traceId":"d540fb654d8a8c82","parentId":377,"name":"emit","id":425,"timestamp":7008730689,"duration":5624,"tags":{},"startTime":1659429823373},{"traceId":"d540fb654d8a8c82","parentId":1,"name":"webpack-invalidated-client","id":377,"timestamp":7008599043,"duration":138441,"tags":{"trigger":"manual"},"startTime":1659429823242},{"traceId":"d540fb654d8a8c82","parentId":426,"name":"add-entry","id":428,"timestamp":7008744495,"duration":4583,"tags":{"request":"private-next-pages/_app"},"startTime":1659429823387},{"traceId":"d540fb654d8a8c82","parentId":426,"name":"add-entry","id":429,"timestamp":7008744561,"duration":4531,"tags":{"request":"private-next-pages/_error"},"startTime":1659429823387},{"traceId":"d540fb654d8a8c82","parentId":426,"name":"add-entry","id":430,"timestamp":7008744580,"duration":4886,"tags":{"request":"private-next-pages/_document"},"startTime":1659429823387},{"traceId":"d540fb654d8a8c82","parentId":433,"name":"next-swc-transform","id":434,"timestamp":7008749366,"duration":1296,"tags":{},"startTime":1659429823392},{"traceId":"d540fb654d8a8c82","parentId":432,"name":"next-swc-loader","id":433,"timestamp":7008749336,"duration":1331,"tags":{},"startTime":1659429823392},{"traceId":"d540fb654d8a8c82","parentId":426,"name":"build-module-tsx","id":432,"timestamp":7008749192,"duration":2778,"tags":{"name":"/home/zeffo/Public/upscayl/renderer/pages/index.tsx"},"startTime":1659429823392},{"traceId":"d540fb654d8a8c82","parentId":432,"name":"build-module-react/jsx-dev-runtime","id":435,"timestamp":7008752602,"duration":19,"tags":{"name":"react/jsx-dev-runtime"},"startTime":1659429823395},{"traceId":"d540fb654d8a8c82","parentId":437,"name":"read-resource","id":438,"timestamp":7008755322,"duration":185,"tags":{},"startTime":1659429823398},{"traceId":"d540fb654d8a8c82","parentId":432,"name":"build-module-js","id":437,"timestamp":7008755279,"duration":409,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/link.js"},"startTime":1659429823398},{"traceId":"d540fb654d8a8c82","parentId":439,"name":"next-swc-transform","id":440,"timestamp":7008755367,"duration":1893,"tags":{},"startTime":1659429823398},{"traceId":"d540fb654d8a8c82","parentId":436,"name":"next-swc-loader","id":439,"timestamp":7008755342,"duration":1922,"tags":{},"startTime":1659429823398},{"traceId":"d540fb654d8a8c82","parentId":432,"name":"build-module-tsx","id":436,"timestamp":7008755218,"duration":3634,"tags":{"name":"/home/zeffo/Public/upscayl/renderer/components/Layout.tsx"},"startTime":1659429823398},{"traceId":"d540fb654d8a8c82","parentId":436,"name":"build-module-next/head","id":444,"timestamp":7008763445,"duration":22,"tags":{"name":"next/head"},"startTime":1659429823406},{"traceId":"d540fb654d8a8c82","parentId":442,"name":"next-swc-transform","id":443,"timestamp":7008759175,"duration":4621,"tags":{},"startTime":1659429823402},{"traceId":"d540fb654d8a8c82","parentId":441,"name":"next-swc-loader","id":442,"timestamp":7008759144,"duration":4657,"tags":{},"startTime":1659429823402},{"traceId":"d540fb654d8a8c82","parentId":437,"name":"build-module-js","id":441,"timestamp":7008758978,"duration":10730,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/link.js"},"startTime":1659429823402},{"traceId":"d540fb654d8a8c82","parentId":441,"name":"build-module-/shared/lib/router-context","id":449,"timestamp":7008773593,"duration":15,"tags":{"name":"../shared/lib/router-context"},"startTime":1659429823416},{"traceId":"d540fb654d8a8c82","parentId":441,"name":"build-module-/shared/lib/app-router-context","id":450,"timestamp":7008773625,"duration":10,"tags":{"name":"../shared/lib/app-router-context"},"startTime":1659429823416},{"traceId":"d540fb654d8a8c82","parentId":451,"name":"next-swc-transform","id":452,"timestamp":7008773674,"duration":2592,"tags":{},"startTime":1659429823416},{"traceId":"d540fb654d8a8c82","parentId":445,"name":"next-swc-loader","id":451,"timestamp":7008773646,"duration":2625,"tags":{},"startTime":1659429823416},{"traceId":"d540fb654d8a8c82","parentId":441,"name":"build-module-js","id":445,"timestamp":7008773418,"duration":3740,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/add-locale.js"},"startTime":1659429823416},{"traceId":"d540fb654d8a8c82","parentId":457,"name":"next-swc-transform","id":458,"timestamp":7008773735,"duration":3448,"tags":{},"startTime":1659429823416},{"traceId":"d540fb654d8a8c82","parentId":448,"name":"next-swc-loader","id":457,"timestamp":7008773716,"duration":3469,"tags":{},"startTime":1659429823416},{"traceId":"d540fb654d8a8c82","parentId":441,"name":"build-module-js","id":448,"timestamp":7008773558,"duration":4399,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/add-base-path.js"},"startTime":1659429823416},{"traceId":"d540fb654d8a8c82","parentId":455,"name":"next-swc-transform","id":456,"timestamp":7008773713,"duration":4272,"tags":{},"startTime":1659429823416},{"traceId":"d540fb654d8a8c82","parentId":447,"name":"next-swc-loader","id":455,"timestamp":7008773696,"duration":4293,"tags":{},"startTime":1659429823416},{"traceId":"d540fb654d8a8c82","parentId":441,"name":"build-module-js","id":447,"timestamp":7008773522,"duration":7106,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/get-domain-locale.js"},"startTime":1659429823416},{"traceId":"d540fb654d8a8c82","parentId":453,"name":"next-swc-transform","id":454,"timestamp":7008773693,"duration":7579,"tags":{},"startTime":1659429823416},{"traceId":"d540fb654d8a8c82","parentId":446,"name":"next-swc-loader","id":453,"timestamp":7008773676,"duration":7601,"tags":{},"startTime":1659429823416},{"traceId":"d540fb654d8a8c82","parentId":441,"name":"build-module-js","id":446,"timestamp":7008773485,"duration":11683,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/use-intersection.js"},"startTime":1659429823416},{"traceId":"d540fb654d8a8c82","parentId":448,"name":"build-module-/shared/lib/router/utils/add-path-prefix","id":465,"timestamp":7008787232,"duration":25,"tags":{"name":"../shared/lib/router/utils/add-path-prefix"},"startTime":1659429823430},{"traceId":"d540fb654d8a8c82","parentId":463,"name":"next-swc-transform","id":464,"timestamp":7008786690,"duration":1342,"tags":{},"startTime":1659429823429},{"traceId":"d540fb654d8a8c82","parentId":462,"name":"next-swc-loader","id":463,"timestamp":7008786646,"duration":1392,"tags":{},"startTime":1659429823429},{"traceId":"d540fb654d8a8c82","parentId":445,"name":"build-module-js","id":462,"timestamp":7008786548,"duration":2580,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/normalize-trailing-slash.js"},"startTime":1659429823429},{"traceId":"d540fb654d8a8c82","parentId":462,"name":"build-module-/shared/lib/router/utils/remove-trailing-slash","id":466,"timestamp":7008790089,"duration":22,"tags":{"name":"../shared/lib/router/utils/remove-trailing-slash"},"startTime":1659429823433},{"traceId":"d540fb654d8a8c82","parentId":462,"name":"build-module-/shared/lib/router/utils/parse-path","id":467,"timestamp":7008790129,"duration":9,"tags":{"name":"../shared/lib/router/utils/parse-path"},"startTime":1659429823433},{"traceId":"d540fb654d8a8c82","parentId":460,"name":"next-swc-transform","id":461,"timestamp":7008781038,"duration":20790,"tags":{},"startTime":1659429823424},{"traceId":"d540fb654d8a8c82","parentId":459,"name":"next-swc-loader","id":460,"timestamp":7008781005,"duration":20835,"tags":{},"startTime":1659429823424},{"traceId":"d540fb654d8a8c82","parentId":441,"name":"build-module-js","id":459,"timestamp":7008780857,"duration":48381,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/shared/lib/router/router.js"},"startTime":1659429823423},{"traceId":"d540fb654d8a8c82","parentId":459,"name":"build-module-/mitt","id":473,"timestamp":7008842108,"duration":21,"tags":{"name":"../mitt"},"startTime":1659429823485},{"traceId":"d540fb654d8a8c82","parentId":459,"name":"build-module-/utils/is-dynamic","id":474,"timestamp":7008842151,"duration":9,"tags":{"name":"./utils/is-dynamic"},"startTime":1659429823485},{"traceId":"d540fb654d8a8c82","parentId":459,"name":"build-module-/utils/parse-relative-url","id":475,"timestamp":7008842170,"duration":14,"tags":{"name":"./utils/parse-relative-url"},"startTime":1659429823485},{"traceId":"d540fb654d8a8c82","parentId":459,"name":"build-module-/utils/querystring","id":476,"timestamp":7008842191,"duration":8,"tags":{"name":"./utils/querystring"},"startTime":1659429823485},{"traceId":"d540fb654d8a8c82","parentId":459,"name":"build-module-/utils/resolve-rewrites","id":477,"timestamp":7008842207,"duration":5,"tags":{"name":"./utils/resolve-rewrites"},"startTime":1659429823485},{"traceId":"d540fb654d8a8c82","parentId":459,"name":"build-module-/utils/route-matcher","id":478,"timestamp":7008842219,"duration":5,"tags":{"name":"./utils/route-matcher"},"startTime":1659429823485},{"traceId":"d540fb654d8a8c82","parentId":459,"name":"build-module-/utils/route-regex","id":479,"timestamp":7008842231,"duration":7,"tags":{"name":"./utils/route-regex"},"startTime":1659429823485},{"traceId":"d540fb654d8a8c82","parentId":459,"name":"build-module-/utils/format-url","id":480,"timestamp":7008842247,"duration":7,"tags":{"name":"./utils/format-url"},"startTime":1659429823485},{"traceId":"d540fb654d8a8c82","parentId":459,"name":"build-module-/utils/get-next-pathname-info","id":481,"timestamp":7008842264,"duration":8,"tags":{"name":"./utils/get-next-pathname-info"},"startTime":1659429823485},{"traceId":"d540fb654d8a8c82","parentId":459,"name":"build-module-/utils/format-next-pathname-info","id":482,"timestamp":7008842281,"duration":7,"tags":{"name":"./utils/format-next-pathname-info"},"startTime":1659429823485},{"traceId":"d540fb654d8a8c82","parentId":459,"name":"build-module-/page-path/denormalize-page-path","id":493,"timestamp":7008843130,"duration":51,"tags":{"name":"../page-path/denormalize-page-path"},"startTime":1659429823486},{"traceId":"d540fb654d8a8c82","parentId":459,"name":"build-module-/i18n/normalize-locale-path","id":494,"timestamp":7008843201,"duration":10,"tags":{"name":"../i18n/normalize-locale-path"},"startTime":1659429823486},{"traceId":"d540fb654d8a8c82","parentId":489,"name":"next-swc-transform","id":490,"timestamp":7008842423,"duration":1220,"tags":{},"startTime":1659429823485},{"traceId":"d540fb654d8a8c82","parentId":471,"name":"next-swc-loader","id":489,"timestamp":7008842411,"duration":1237,"tags":{},"startTime":1659429823485}]
-[{"traceId":"d540fb654d8a8c82","parentId":459,"name":"build-module-js","id":471,"timestamp":7008842034,"duration":2769,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/remove-base-path.js"},"startTime":1659429823485},{"traceId":"d540fb654d8a8c82","parentId":485,"name":"next-swc-transform","id":486,"timestamp":7008842394,"duration":2439,"tags":{},"startTime":1659429823485},{"traceId":"d540fb654d8a8c82","parentId":469,"name":"next-swc-loader","id":485,"timestamp":7008842377,"duration":2459,"tags":{},"startTime":1659429823485},{"traceId":"d540fb654d8a8c82","parentId":459,"name":"build-module-js","id":469,"timestamp":7008841950,"duration":3475,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/detect-domain-locale.js"},"startTime":1659429823485},{"traceId":"d540fb654d8a8c82","parentId":491,"name":"next-swc-transform","id":492,"timestamp":7008842436,"duration":3699,"tags":{},"startTime":1659429823485},{"traceId":"d540fb654d8a8c82","parentId":472,"name":"next-swc-loader","id":491,"timestamp":7008842425,"duration":3716,"tags":{},"startTime":1659429823485},{"traceId":"d540fb654d8a8c82","parentId":459,"name":"build-module-js","id":472,"timestamp":7008842069,"duration":5301,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/has-base-path.js"},"startTime":1659429823485},{"traceId":"d540fb654d8a8c82","parentId":487,"name":"next-swc-transform","id":488,"timestamp":7008842409,"duration":4993,"tags":{},"startTime":1659429823485},{"traceId":"d540fb654d8a8c82","parentId":470,"name":"next-swc-loader","id":487,"timestamp":7008842396,"duration":5010,"tags":{},"startTime":1659429823485},{"traceId":"d540fb654d8a8c82","parentId":459,"name":"build-module-js","id":470,"timestamp":7008841998,"duration":6190,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/remove-locale.js"},"startTime":1659429823485},{"traceId":"d540fb654d8a8c82","parentId":483,"name":"next-swc-transform","id":484,"timestamp":7008842374,"duration":6292,"tags":{},"startTime":1659429823485},{"traceId":"d540fb654d8a8c82","parentId":468,"name":"next-swc-loader","id":483,"timestamp":7008842341,"duration":6331,"tags":{},"startTime":1659429823485},{"traceId":"d540fb654d8a8c82","parentId":459,"name":"build-module-js","id":468,"timestamp":7008841841,"duration":10891,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/route-loader.js"},"startTime":1659429823484},{"traceId":"d540fb654d8a8c82","parentId":472,"name":"build-module-/shared/lib/router/utils/path-has-prefix","id":495,"timestamp":7008854349,"duration":11,"tags":{"name":"../shared/lib/router/utils/path-has-prefix"},"startTime":1659429823497},{"traceId":"d540fb654d8a8c82","parentId":468,"name":"build-module-/shared/lib/router/utils/get-asset-path-from-route","id":497,"timestamp":7008854525,"duration":11,"tags":{"name":"../shared/lib/router/utils/get-asset-path-from-route"},"startTime":1659429823497},{"traceId":"d540fb654d8a8c82","parentId":498,"name":"next-swc-transform","id":499,"timestamp":7008854588,"duration":1557,"tags":{},"startTime":1659429823497},{"traceId":"d540fb654d8a8c82","parentId":496,"name":"next-swc-loader","id":498,"timestamp":7008854556,"duration":1594,"tags":{},"startTime":1659429823497},{"traceId":"d540fb654d8a8c82","parentId":468,"name":"build-module-js","id":496,"timestamp":7008854461,"duration":2409,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/trusted-types.js"},"startTime":1659429823497},{"traceId":"d540fb654d8a8c82","parentId":459,"name":"build-module-next/dist/compiled/react-is","id":500,"timestamp":7008856945,"duration":10,"tags":{"name":"next/dist/compiled/react-is"},"startTime":1659429823500},{"traceId":"d540fb654d8a8c82","parentId":426,"name":"add-entry","id":431,"timestamp":7008744607,"duration":112396,"tags":{"request":"./pages/index.tsx"},"startTime":1659429823387},{"traceId":"d540fb654d8a8c82","parentId":378,"name":"make","id":427,"timestamp":7008740005,"duration":117030,"tags":{},"startTime":1659429823383},{"traceId":"d540fb654d8a8c82","parentId":426,"name":"webpack-compilation-chunk-graph","id":502,"timestamp":7008857710,"duration":947,"tags":{},"startTime":1659429823500},{"traceId":"d540fb654d8a8c82","parentId":426,"name":"webpack-compilation-optimize-modules","id":504,"timestamp":7008858687,"duration":8,"tags":{},"startTime":1659429823501},{"traceId":"d540fb654d8a8c82","parentId":426,"name":"webpack-compilation-optimize-chunks","id":505,"timestamp":7008858716,"duration":54,"tags":{},"startTime":1659429823501},{"traceId":"d540fb654d8a8c82","parentId":426,"name":"webpack-compilation-optimize-tree","id":506,"timestamp":7008858787,"duration":8,"tags":{},"startTime":1659429823501},{"traceId":"d540fb654d8a8c82","parentId":426,"name":"webpack-compilation-optimize","id":503,"timestamp":7008858674,"duration":248,"tags":{},"startTime":1659429823501},{"traceId":"d540fb654d8a8c82","parentId":426,"name":"webpack-compilation-hash","id":507,"timestamp":7008864718,"duration":1527,"tags":{},"startTime":1659429823507},{"traceId":"d540fb654d8a8c82","parentId":426,"name":"webpack-compilation-seal","id":501,"timestamp":7008857589,"duration":22920,"tags":{},"startTime":1659429823500},{"traceId":"d540fb654d8a8c82","parentId":378,"name":"webpack-compilation","id":426,"timestamp":7008739191,"duration":141378,"tags":{"name":"server"},"startTime":1659429823382},{"traceId":"d540fb654d8a8c82","parentId":378,"name":"emit","id":508,"timestamp":7008880609,"duration":5698,"tags":{},"startTime":1659429823523},{"traceId":"d540fb654d8a8c82","parentId":1,"name":"webpack-invalidated-server","id":378,"timestamp":7008599265,"duration":287883,"tags":{"trigger":"manual"},"startTime":1659429823242}]
-[{"traceId":"d540fb654d8a8c82","parentId":1,"name":"client-success","id":509,"timestamp":7009226704,"duration":0,"tags":{},"startTime":1659429823869},{"traceId":"d540fb654d8a8c82","parentId":512,"name":"add-entry","id":514,"timestamp":7017524971,"duration":8232,"tags":{"request":"/home/zeffo/Public/upscayl/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1659429832168},{"traceId":"d540fb654d8a8c82","parentId":512,"name":"add-entry","id":517,"timestamp":7017525075,"duration":9129,"tags":{"request":"next-client-pages-loader?absolutePagePath=private-next-pages%2F_app&page=%2F_app!"},"startTime":1659429832168},{"traceId":"d540fb654d8a8c82","parentId":512,"name":"add-entry","id":515,"timestamp":7017525047,"duration":19928,"tags":{"request":"./../node_modules/next/dist/client/dev/amp-dev"},"startTime":1659429832168},{"traceId":"d540fb654d8a8c82","parentId":522,"name":"next-client-pages-loader","id":523,"timestamp":7017545506,"duration":100,"tags":{"absolutePagePath":"/home/zeffo/Public/upscayl/renderer/pages/initial-props.tsx"},"startTime":1659429832188},{"traceId":"d540fb654d8a8c82","parentId":512,"name":"build-module-tsx&page=%2Finitial-props!","id":522,"timestamp":7017545314,"duration":1279,"tags":{"name":"/home/zeffo/Public/upscayl/node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2Fhome%2Fzeffo%2FPublic%2Fupscayl%2Frenderer%2Fpages%2Finitial-props.tsx&page=%2Finitial-props!"},"startTime":1659429832188},{"traceId":"d540fb654d8a8c82","parentId":512,"name":"add-entry","id":519,"timestamp":7017525101,"duration":22066,"tags":{"request":"next-client-pages-loader?absolutePagePath=private-next-pages%2F_error&page=%2F_error!"},"startTime":1659429832168},{"traceId":"d540fb654d8a8c82","parentId":512,"name":"add-entry","id":518,"timestamp":7017525090,"duration":23074,"tags":{"request":"/home/zeffo/Public/upscayl/node_modules/next/dist/client/router.js"},"startTime":1659429832168},{"traceId":"d540fb654d8a8c82","parentId":512,"name":"add-entry","id":521,"timestamp":7017525119,"duration":23118,"tags":{"request":"next-client-pages-loader?absolutePagePath=%2Fhome%2Fzeffo%2FPublic%2Fupscayl%2Frenderer%2Fpages%2Findex.tsx&page=%2F!"},"startTime":1659429832168},{"traceId":"d540fb654d8a8c82","parentId":512,"name":"add-entry","id":516,"timestamp":7017525064,"duration":23497,"tags":{"request":"./../node_modules/next/dist/client/next-dev.js"},"startTime":1659429832168},{"traceId":"d540fb654d8a8c82","parentId":525,"name":"next-swc-transform","id":526,"timestamp":7017549025,"duration":2063,"tags":{},"startTime":1659429832192},{"traceId":"d540fb654d8a8c82","parentId":524,"name":"next-swc-loader","id":525,"timestamp":7017548983,"duration":2112,"tags":{},"startTime":1659429832192},{"traceId":"d540fb654d8a8c82","parentId":522,"name":"build-module-tsx","id":524,"timestamp":7017548878,"duration":6972,"tags":{"name":"/home/zeffo/Public/upscayl/renderer/pages/initial-props.tsx"},"startTime":1659429832191},{"traceId":"d540fb654d8a8c82","parentId":528,"name":"next-swc-transform","id":529,"timestamp":7017562175,"duration":1318,"tags":{},"startTime":1659429832205},{"traceId":"d540fb654d8a8c82","parentId":527,"name":"next-swc-loader","id":528,"timestamp":7017562139,"duration":1365,"tags":{},"startTime":1659429832205},{"traceId":"d540fb654d8a8c82","parentId":524,"name":"build-module-tsx","id":527,"timestamp":7017562037,"duration":2898,"tags":{"name":"/home/zeffo/Public/upscayl/renderer/components/List.tsx"},"startTime":1659429832205},{"traceId":"d540fb654d8a8c82","parentId":531,"name":"next-swc-transform","id":532,"timestamp":7017569923,"duration":1395,"tags":{},"startTime":1659429832212},{"traceId":"d540fb654d8a8c82","parentId":530,"name":"next-swc-loader","id":531,"timestamp":7017569876,"duration":1452,"tags":{},"startTime":1659429832212},{"traceId":"d540fb654d8a8c82","parentId":527,"name":"build-module-tsx","id":530,"timestamp":7017569626,"duration":3065,"tags":{"name":"/home/zeffo/Public/upscayl/renderer/components/ListItem.tsx"},"startTime":1659429832212},{"traceId":"d540fb654d8a8c82","parentId":512,"name":"add-entry","id":520,"timestamp":7017525111,"duration":48073,"tags":{"request":"next-client-pages-loader?absolutePagePath=%2Fhome%2Fzeffo%2FPublic%2Fupscayl%2Frenderer%2Fpages%2Finitial-props.tsx&page=%2Finitial-props!"},"startTime":1659429832168},{"traceId":"d540fb654d8a8c82","parentId":510,"name":"make","id":513,"timestamp":7017521353,"duration":51873,"tags":{},"startTime":1659429832164},{"traceId":"d540fb654d8a8c82","parentId":512,"name":"webpack-compilation-chunk-graph","id":534,"timestamp":7017574272,"duration":3502,"tags":{},"startTime":1659429832217},{"traceId":"d540fb654d8a8c82","parentId":512,"name":"webpack-compilation-optimize-modules","id":536,"timestamp":7017577820,"duration":8,"tags":{},"startTime":1659429832220},{"traceId":"d540fb654d8a8c82","parentId":512,"name":"webpack-compilation-optimize-chunks","id":537,"timestamp":7017577849,"duration":44,"tags":{},"startTime":1659429832220},{"traceId":"d540fb654d8a8c82","parentId":512,"name":"webpack-compilation-optimize-tree","id":538,"timestamp":7017577914,"duration":41,"tags":{},"startTime":1659429832220},{"traceId":"d540fb654d8a8c82","parentId":512,"name":"webpack-compilation-optimize","id":535,"timestamp":7017577804,"duration":276,"tags":{},"startTime":1659429832220},{"traceId":"d540fb654d8a8c82","parentId":512,"name":"webpack-compilation-hash","id":539,"timestamp":7017584663,"duration":3073,"tags":{},"startTime":1659429832227},{"traceId":"d540fb654d8a8c82","parentId":512,"name":"NextJsBuildManifest-generateClientManifest","id":541,"timestamp":7017590265,"duration":114,"tags":{},"startTime":1659429832233},{"traceId":"d540fb654d8a8c82","parentId":512,"name":"NextJsBuildManifest-createassets","id":540,"timestamp":7017590185,"duration":202,"tags":{},"startTime":1659429832233},{"traceId":"d540fb654d8a8c82","parentId":512,"name":"webpack-compilation-seal","id":533,"timestamp":7017573829,"duration":17353,"tags":{},"startTime":1659429832216},{"traceId":"d540fb654d8a8c82","parentId":510,"name":"webpack-compilation","id":512,"timestamp":7017520947,"duration":70279,"tags":{"name":"client"},"startTime":1659429832164},{"traceId":"d540fb654d8a8c82","parentId":510,"name":"emit","id":542,"timestamp":7017591248,"duration":8643,"tags":{},"startTime":1659429832234},{"traceId":"d540fb654d8a8c82","parentId":1,"name":"webpack-invalidated-client","id":510,"timestamp":7017517879,"duration":82962,"tags":{"trigger":"manual"},"startTime":1659429832160},{"traceId":"d540fb654d8a8c82","parentId":1,"name":"client-success","id":545,"timestamp":7017607274,"duration":0,"tags":{},"startTime":1659429832250},{"traceId":"d540fb654d8a8c82","parentId":543,"name":"add-entry","id":546,"timestamp":7017608741,"duration":6923,"tags":{"request":"private-next-pages/_app"},"startTime":1659429832251},{"traceId":"d540fb654d8a8c82","parentId":543,"name":"add-entry","id":547,"timestamp":7017608823,"duration":6854,"tags":{"request":"private-next-pages/_error"},"startTime":1659429832251},{"traceId":"d540fb654d8a8c82","parentId":543,"name":"add-entry","id":548,"timestamp":7017608835,"duration":7575,"tags":{"request":"private-next-pages/_document"},"startTime":1659429832251},{"traceId":"d540fb654d8a8c82","parentId":543,"name":"add-entry","id":549,"timestamp":7017608844,"duration":8908,"tags":{"request":"./pages/index.tsx"},"startTime":1659429832251},{"traceId":"d540fb654d8a8c82","parentId":552,"name":"next-swc-transform","id":553,"timestamp":7017617180,"duration":1298,"tags":{},"startTime":1659429832260},{"traceId":"d540fb654d8a8c82","parentId":551,"name":"next-swc-loader","id":552,"timestamp":7017617124,"duration":1361,"tags":{},"startTime":1659429832260},{"traceId":"d540fb654d8a8c82","parentId":543,"name":"build-module-tsx","id":551,"timestamp":7017616922,"duration":3366,"tags":{"name":"/home/zeffo/Public/upscayl/renderer/pages/initial-props.tsx"},"startTime":1659429832259},{"traceId":"d540fb654d8a8c82","parentId":1,"name":"client-hmr-latency","id":554,"timestamp":1659429832160999,"duration":101000,"tags":{"clientId":1659429823888},"startTime":1659429832264},{"traceId":"d540fb654d8a8c82","parentId":551,"name":"build-module-next/router","id":555,"timestamp":7017625552,"duration":24,"tags":{"name":"next/router"},"startTime":1659429832268},{"traceId":"d540fb654d8a8c82","parentId":557,"name":"next-swc-transform","id":558,"timestamp":7017626319,"duration":994,"tags":{},"startTime":1659429832269},{"traceId":"d540fb654d8a8c82","parentId":556,"name":"next-swc-loader","id":557,"timestamp":7017626282,"duration":1038,"tags":{},"startTime":1659429832269},{"traceId":"d540fb654d8a8c82","parentId":551,"name":"build-module-tsx","id":556,"timestamp":7017626199,"duration":1743,"tags":{"name":"/home/zeffo/Public/upscayl/renderer/components/List.tsx"},"startTime":1659429832269},{"traceId":"d540fb654d8a8c82","parentId":560,"name":"next-swc-transform","id":561,"timestamp":7017626757,"duration":1409,"tags":{},"startTime":1659429832269},{"traceId":"d540fb654d8a8c82","parentId":559,"name":"next-swc-loader","id":560,"timestamp":7017626734,"duration":1437,"tags":{},"startTime":1659429832269},{"traceId":"d540fb654d8a8c82","parentId":551,"name":"build-module-ts","id":559,"timestamp":7017626681,"duration":2017,"tags":{"name":"/home/zeffo/Public/upscayl/renderer/utils/sample-api.ts"},"startTime":1659429832269},{"traceId":"d540fb654d8a8c82","parentId":563,"name":"next-swc-transform","id":564,"timestamp":7017629783,"duration":468,"tags":{},"startTime":1659429832272},{"traceId":"d540fb654d8a8c82","parentId":562,"name":"next-swc-loader","id":563,"timestamp":7017629758,"duration":497,"tags":{},"startTime":1659429832272},{"traceId":"d540fb654d8a8c82","parentId":556,"name":"build-module-tsx","id":562,"timestamp":7017629700,"duration":984,"tags":{"name":"/home/zeffo/Public/upscayl/renderer/components/ListItem.tsx"},"startTime":1659429832272},{"traceId":"d540fb654d8a8c82","parentId":543,"name":"add-entry","id":550,"timestamp":7017608854,"duration":22031,"tags":{"request":"./pages/initial-props.tsx"},"startTime":1659429832251},{"traceId":"d540fb654d8a8c82","parentId":511,"name":"make","id":544,"timestamp":7017603889,"duration":27026,"tags":{},"startTime":1659429832246},{"traceId":"d540fb654d8a8c82","parentId":543,"name":"webpack-compilation-chunk-graph","id":566,"timestamp":7017631342,"duration":1784,"tags":{},"startTime":1659429832274},{"traceId":"d540fb654d8a8c82","parentId":543,"name":"webpack-compilation-optimize-modules","id":568,"timestamp":7017633152,"duration":8,"tags":{},"startTime":1659429832276},{"traceId":"d540fb654d8a8c82","parentId":543,"name":"webpack-compilation-optimize-chunks","id":569,"timestamp":7017633179,"duration":59,"tags":{},"startTime":1659429832276},{"traceId":"d540fb654d8a8c82","parentId":543,"name":"webpack-compilation-optimize-tree","id":570,"timestamp":7017633255,"duration":9,"tags":{},"startTime":1659429832276},{"traceId":"d540fb654d8a8c82","parentId":543,"name":"webpack-compilation-optimize","id":567,"timestamp":7017633143,"duration":229,"tags":{},"startTime":1659429832276},{"traceId":"d540fb654d8a8c82","parentId":543,"name":"webpack-compilation-hash","id":571,"timestamp":7017636212,"duration":1169,"tags":{},"startTime":1659429832279},{"traceId":"d540fb654d8a8c82","parentId":543,"name":"webpack-compilation-seal","id":565,"timestamp":7017631217,"duration":10208,"tags":{},"startTime":1659429832274},{"traceId":"d540fb654d8a8c82","parentId":511,"name":"webpack-compilation","id":543,"timestamp":7017603484,"duration":37988,"tags":{"name":"server"},"startTime":1659429832246},{"traceId":"d540fb654d8a8c82","parentId":511,"name":"emit","id":572,"timestamp":7017641494,"duration":3246,"tags":{},"startTime":1659429832284},{"traceId":"d540fb654d8a8c82","parentId":1,"name":"webpack-invalidated-server","id":511,"timestamp":7017518052,"duration":127307,"tags":{"trigger":"manual"},"startTime":1659429832161}]
+[{"traceId":"82103cca0a4b1843","name":"hot-reloader","id":1,"timestamp":4440734341,"duration":37,"tags":{"version":"12.2.3"},"startTime":1659464439971},{"traceId":"82103cca0a4b1843","parentId":1,"name":"start","id":2,"timestamp":4440735058,"duration":2,"tags":{},"startTime":1659464439972},{"traceId":"82103cca0a4b1843","parentId":2,"name":"clean","id":3,"timestamp":4440735091,"duration":10664,"tags":{},"startTime":1659464439972},{"traceId":"82103cca0a4b1843","parentId":4,"name":"get-page-paths","id":5,"timestamp":4440748560,"duration":1338,"tags":{},"startTime":1659464439985},{"traceId":"82103cca0a4b1843","parentId":4,"name":"create-pages-mapping","id":6,"timestamp":4440749931,"duration":220,"tags":{},"startTime":1659464439987},{"traceId":"82103cca0a4b1843","parentId":4,"name":"create-entrypoints","id":7,"timestamp":4440750177,"duration":2980,"tags":{},"startTime":1659464439987},{"traceId":"82103cca0a4b1843","parentId":4,"name":"generate-webpack-config","id":8,"timestamp":4440753191,"duration":95232,"tags":{},"startTime":1659464439990},{"traceId":"82103cca0a4b1843","parentId":2,"name":"get-webpack-config","id":4,"timestamp":4440748484,"duration":99966,"tags":{},"startTime":1659464439985},{"traceId":"82103cca0a4b1843","parentId":17,"name":"next-client-pages-loader","id":18,"timestamp":4441041446,"duration":576,"tags":{"absolutePagePath":"private-next-pages/_app"},"startTime":1659464440278},{"traceId":"82103cca0a4b1843","parentId":9,"name":"build-module-js?absolutePagePath=private-next-pages%2F_app&page=%2F_app!","id":17,"timestamp":4441035948,"duration":15962,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\build\\webpack\\loaders\\next-client-pages-loader.js?absolutePagePath=private-next-pages%2F_app&page=%2F_app!"},"startTime":1659464440273},{"traceId":"82103cca0a4b1843","parentId":19,"name":"next-client-pages-loader","id":20,"timestamp":4441052208,"duration":57,"tags":{"absolutePagePath":"private-next-pages/_error"},"startTime":1659464440289},{"traceId":"82103cca0a4b1843","parentId":9,"name":"build-module-js?absolutePagePath=private-next-pages%2F_error&page=%2F_error!","id":19,"timestamp":4441052110,"duration":1453,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\build\\webpack\\loaders\\next-client-pages-loader.js?absolutePagePath=private-next-pages%2F_error&page=%2F_error!"},"startTime":1659464440289},{"traceId":"82103cca0a4b1843","parentId":21,"name":"read-resource","id":22,"timestamp":4441054558,"duration":29851,"tags":{},"startTime":1659464440291},{"traceId":"82103cca0a4b1843","parentId":9,"name":"build-module-js","id":21,"timestamp":4441053592,"duration":36971,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\compiled\\@next\\react-refresh-utils\\dist\\runtime.js"},"startTime":1659464440290},{"traceId":"82103cca0a4b1843","parentId":32,"name":"read-resource","id":33,"timestamp":4441098410,"duration":4922,"tags":{},"startTime":1659464440335},{"traceId":"82103cca0a4b1843","parentId":21,"name":"build-module-js","id":32,"timestamp":4441098284,"duration":15527,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\compiled\\@next\\react-refresh-utils\\dist\\internal\\helpers.js"},"startTime":1659464440335},{"traceId":"82103cca0a4b1843","parentId":34,"name":"read-resource","id":35,"timestamp":4441101924,"duration":13942,"tags":{},"startTime":1659464440339},{"traceId":"82103cca0a4b1843","parentId":21,"name":"build-module-js","id":34,"timestamp":4441101842,"duration":15254,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\compiled\\react-refresh\\runtime.js"},"startTime":1659464440339},{"traceId":"82103cca0a4b1843","parentId":36,"name":"read-resource","id":37,"timestamp":4441120793,"duration":5873,"tags":{},"startTime":1659464440358},{"traceId":"82103cca0a4b1843","parentId":34,"name":"build-module-js","id":36,"timestamp":4441120709,"duration":31000,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\compiled\\react-refresh\\cjs\\react-refresh-runtime.development.js"},"startTime":1659464440358},{"traceId":"82103cca0a4b1843","parentId":9,"name":"add-entry","id":11,"timestamp":4440922771,"duration":229359,"tags":{"request":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\compiled\\@next\\react-refresh-utils\\dist\\runtime.js"},"startTime":1659464440160},{"traceId":"82103cca0a4b1843","parentId":26,"name":"next-swc-transform","id":27,"timestamp":4441073018,"duration":233225,"tags":{},"startTime":1659464440310},{"traceId":"82103cca0a4b1843","parentId":23,"name":"next-swc-loader","id":26,"timestamp":4441072495,"duration":233767,"tags":{},"startTime":1659464440309},{"traceId":"82103cca0a4b1843","parentId":9,"name":"build-module-js","id":23,"timestamp":4441060204,"duration":259931,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\next-dev.js"},"startTime":1659464440297},{"traceId":"82103cca0a4b1843","parentId":28,"name":"next-swc-transform","id":29,"timestamp":4441073155,"duration":247080,"tags":{},"startTime":1659464440310},{"traceId":"82103cca0a4b1843","parentId":24,"name":"next-swc-loader","id":28,"timestamp":4441073064,"duration":247176,"tags":{},"startTime":1659464440310},{"traceId":"82103cca0a4b1843","parentId":9,"name":"build-module-js","id":24,"timestamp":4441072174,"duration":259157,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\router.js"},"startTime":1659464440309},{"traceId":"82103cca0a4b1843","parentId":40,"name":"next-swc-transform","id":41,"timestamp":4441156439,"duration":174968,"tags":{},"startTime":1659464440393},{"traceId":"82103cca0a4b1843","parentId":38,"name":"next-swc-loader","id":40,"timestamp":4441156387,"duration":175027,"tags":{},"startTime":1659464440393},{"traceId":"82103cca0a4b1843","parentId":17,"name":"build-module-js","id":38,"timestamp":4441156118,"duration":185099,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\pages\\_app.js"},"startTime":1659464440393},{"traceId":"82103cca0a4b1843","parentId":30,"name":"next-swc-transform","id":31,"timestamp":4441073192,"duration":268114,"tags":{},"startTime":1659464440310},{"traceId":"82103cca0a4b1843","parentId":25,"name":"next-swc-loader","id":30,"timestamp":4441073159,"duration":268152,"tags":{},"startTime":1659464440310},{"traceId":"82103cca0a4b1843","parentId":9,"name":"build-module-js","id":25,"timestamp":4441072385,"duration":280623,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\dev\\amp-dev.js"},"startTime":1659464440309},{"traceId":"82103cca0a4b1843","parentId":42,"name":"next-swc-transform","id":43,"timestamp":4441156475,"duration":205094,"tags":{},"startTime":1659464440393},{"traceId":"82103cca0a4b1843","parentId":39,"name":"next-swc-loader","id":42,"timestamp":4441156443,"duration":205139,"tags":{},"startTime":1659464440393},{"traceId":"82103cca0a4b1843","parentId":19,"name":"build-module-js","id":39,"timestamp":4441156284,"duration":212557,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\pages\\_error.js"},"startTime":1659464440393},{"traceId":"82103cca0a4b1843","parentId":49,"name":"next-swc-transform","id":50,"timestamp":4441378373,"duration":4446,"tags":{},"startTime":1659464440615},{"traceId":"82103cca0a4b1843","parentId":44,"name":"next-swc-loader","id":49,"timestamp":4441378318,"duration":4523,"tags":{},"startTime":1659464440615},{"traceId":"82103cca0a4b1843","parentId":24,"name":"build-module-js","id":44,"timestamp":4441377846,"duration":9005,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\with-router.js"},"startTime":1659464440615},{"traceId":"82103cca0a4b1843","parentId":53,"name":"next-swc-transform","id":54,"timestamp":4441378440,"duration":9271,"tags":{},"startTime":1659464440615},{"traceId":"82103cca0a4b1843","parentId":46,"name":"next-swc-loader","id":53,"timestamp":4441378412,"duration":9315,"tags":{},"startTime":1659464440615},{"traceId":"82103cca0a4b1843","parentId":23,"name":"build-module-js","id":46,"timestamp":4441378066,"duration":14175,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\dev\\webpack-hot-middleware-client.js"},"startTime":1659464440615},{"traceId":"82103cca0a4b1843","parentId":51,"name":"next-swc-transform","id":52,"timestamp":4441378408,"duration":15502,"tags":{},"startTime":1659464440615},{"traceId":"82103cca0a4b1843","parentId":45,"name":"next-swc-loader","id":51,"timestamp":4441378377,"duration":15547,"tags":{},"startTime":1659464440615},{"traceId":"82103cca0a4b1843","parentId":23,"name":"build-module-js","id":45,"timestamp":4441377991,"duration":24745,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\dev\\on-demand-entries-client.js"},"startTime":1659464440615},{"traceId":"82103cca0a4b1843","parentId":55,"name":"next-swc-transform","id":56,"timestamp":4441378474,"duration":24388,"tags":{},"startTime":1659464440615},{"traceId":"82103cca0a4b1843","parentId":47,"name":"next-swc-loader","id":55,"timestamp":4441378445,"duration":24423,"tags":{},"startTime":1659464440615},{"traceId":"82103cca0a4b1843","parentId":23,"name":"build-module-js","id":47,"timestamp":4441378127,"duration":32642,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\dev\\dev-build-watcher.js"},"startTime":1659464440615},{"traceId":"82103cca0a4b1843","parentId":57,"name":"next-swc-transform","id":58,"timestamp":4441378514,"duration":32332,"tags":{},"startTime":1659464440615},{"traceId":"82103cca0a4b1843","parentId":48,"name":"next-swc-loader","id":57,"timestamp":4441378478,"duration":32374,"tags":{},"startTime":1659464440615},{"traceId":"82103cca0a4b1843","parentId":23,"name":"build-module-js","id":48,"timestamp":4441378202,"duration":35632,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\dev\\fouc.js"},"startTime":1659464440615},{"traceId":"82103cca0a4b1843","parentId":65,"name":"next-swc-transform","id":66,"timestamp":4441382171,"duration":33957,"tags":{},"startTime":1659464440619},{"traceId":"82103cca0a4b1843","parentId":62,"name":"next-swc-loader","id":65,"timestamp":4441382109,"duration":34036,"tags":{},"startTime":1659464440619},{"traceId":"82103cca0a4b1843","parentId":23,"name":"build-module-js","id":62,"timestamp":4441381905,"duration":41369,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\dev\\error-overlay\\websocket.js"},"startTime":1659464440619},{"traceId":"82103cca0a4b1843","parentId":60,"name":"next-swc-transform","id":61,"timestamp":4441381728,"duration":43758,"tags":{},"startTime":1659464440619},{"traceId":"82103cca0a4b1843","parentId":59,"name":"next-swc-loader","id":60,"timestamp":4441381603,"duration":43894,"tags":{},"startTime":1659464440618},{"traceId":"82103cca0a4b1843","parentId":23,"name":"build-module-js","id":59,"timestamp":4441381285,"duration":77987,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\index.js"},"startTime":1659464440618},{"traceId":"82103cca0a4b1843","parentId":63,"name":"read-resource","id":64,"timestamp":4441382058,"duration":92110,"tags":{},"startTime":1659464440619},{"traceId":"82103cca0a4b1843","parentId":24,"name":"build-module-js","id":63,"timestamp":4441382022,"duration":93649,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\lib\\is-error.js"},"startTime":1659464440619},{"traceId":"82103cca0a4b1843","parentId":74,"name":"next-swc-transform","id":75,"timestamp":4441473621,"duration":4176,"tags":{},"startTime":1659464440711},{"traceId":"82103cca0a4b1843","parentId":69,"name":"next-swc-loader","id":74,"timestamp":4441473571,"duration":4239,"tags":{},"startTime":1659464440710},{"traceId":"82103cca0a4b1843","parentId":24,"name":"build-module-js","id":69,"timestamp":4441473161,"duration":7596,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\router-context.js"},"startTime":1659464440710},{"traceId":"82103cca0a4b1843","parentId":82,"name":"next-swc-transform","id":83,"timestamp":4441473765,"duration":7077,"tags":{},"startTime":1659464440711},{"traceId":"82103cca0a4b1843","parentId":73,"name":"next-swc-loader","id":82,"timestamp":4441473741,"duration":7106,"tags":{},"startTime":1659464440711},{"traceId":"82103cca0a4b1843","parentId":23,"name":"build-module-js","id":73,"timestamp":4441473494,"duration":10903,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\router\\utils\\querystring.js"},"startTime":1659464440710},{"traceId":"82103cca0a4b1843","parentId":78,"name":"next-swc-transform","id":79,"timestamp":4441473710,"duration":15525,"tags":{},"startTime":1659464440711},{"traceId":"82103cca0a4b1843","parentId":71,"name":"next-swc-loader","id":78,"timestamp":4441473673,"duration":15573,"tags":{},"startTime":1659464440711},{"traceId":"82103cca0a4b1843","parentId":39,"name":"build-module-js","id":71,"timestamp":4441473370,"duration":22553,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\head.js"},"startTime":1659464440710},{"traceId":"82103cca0a4b1843","parentId":76,"name":"next-swc-transform","id":77,"timestamp":4441473669,"duration":22964,"tags":{},"startTime":1659464440711},{"traceId":"82103cca0a4b1843","parentId":70,"name":"next-swc-loader","id":76,"timestamp":4441473625,"duration":23016,"tags":{},"startTime":1659464440711},{"traceId":"82103cca0a4b1843","parentId":38,"name":"build-module-js","id":70,"timestamp":4441473292,"duration":30991,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\utils.js"},"startTime":1659464440710},{"traceId":"82103cca0a4b1843","parentId":67,"name":"read-resource","id":68,"timestamp":4441462038,"duration":42315,"tags":{},"startTime":1659464440699},{"traceId":"82103cca0a4b1843","parentId":38,"name":"build-module-js","id":67,"timestamp":4441461981,"duration":61835,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\compiled\\regenerator-runtime\\runtime.js"},"startTime":1659464440699},{"traceId":"82103cca0a4b1843","parentId":80,"name":"next-swc-transform","id":81,"timestamp":4441473738,"duration":67071,"tags":{},"startTime":1659464440711},{"traceId":"82103cca0a4b1843","parentId":72,"name":"next-swc-loader","id":80,"timestamp":4441473713,"duration":67110,"tags":{},"startTime":1659464440711},{"traceId":"82103cca0a4b1843","parentId":24,"name":"build-module-js","id":72,"timestamp":4441473432,"duration":127832,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\router\\router.js"},"startTime":1659464440710},{"traceId":"82103cca0a4b1843","parentId":87,"name":"next-swc-transform","id":88,"timestamp":4441527180,"duration":95038,"tags":{},"startTime":1659464440764},{"traceId":"82103cca0a4b1843","parentId":86,"name":"next-swc-loader","id":87,"timestamp":4441527134,"duration":95097,"tags":{},"startTime":1659464440764},{"traceId":"82103cca0a4b1843","parentId":46,"name":"build-module-js","id":86,"timestamp":4441525530,"duration":101665,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\dev\\error-overlay\\hot-dev-client.js"},"startTime":1659464440762},{"traceId":"82103cca0a4b1843","parentId":90,"name":"next-swc-transform","id":91,"timestamp":4441609675,"duration":19314,"tags":{},"startTime":1659464440847},{"traceId":"82103cca0a4b1843","parentId":89,"name":"next-swc-loader","id":90,"timestamp":4441609641,"duration":19357,"tags":{},"startTime":1659464440847},{"traceId":"82103cca0a4b1843","parentId":59,"name":"build-module-js","id":89,"timestamp":4441608324,"duration":24482,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\head-manager.js"},"startTime":1659464440845},{"traceId":"82103cca0a4b1843","parentId":127,"name":"next-swc-transform","id":128,"timestamp":4441637358,"duration":6765,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":95,"name":"next-swc-loader","id":127,"timestamp":4441637330,"duration":6815,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":59,"name":"build-module-js","id":95,"timestamp":4441635723,"duration":11328,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\remove-base-path.js"},"startTime":1659464440873},{"traceId":"82103cca0a4b1843","parentId":72,"name":"build-module","id":148,"timestamp":4441647955,"duration":918,"tags":{"name":"undefined"},"startTime":1659464440885},{"traceId":"82103cca0a4b1843","parentId":123,"name":"next-swc-transform","id":124,"timestamp":4441637293,"duration":11966,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":93,"name":"next-swc-loader","id":123,"timestamp":4441637260,"duration":12008,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":59,"name":"build-module-js","id":93,"timestamp":4441635587,"duration":16786,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\performance-relayer.js"},"startTime":1659464440872},{"traceId":"82103cca0a4b1843","parentId":125,"name":"next-swc-transform","id":126,"timestamp":4441637325,"duration":15145,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":94,"name":"next-swc-loader","id":125,"timestamp":4441637298,"duration":15178,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":59,"name":"build-module-js","id":94,"timestamp":4441635662,"duration":19501,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\route-announcer.js"},"startTime":1659464440873},{"traceId":"82103cca0a4b1843","parentId":131,"name":"next-swc-transform","id":132,"timestamp":4441637422,"duration":17790,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":97,"name":"next-swc-loader","id":131,"timestamp":4441637395,"duration":17822,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":59,"name":"build-module-js","id":97,"timestamp":4441635842,"duration":20624,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\head-manager-context.js"},"startTime":1659464440873},{"traceId":"82103cca0a4b1843","parentId":121,"name":"next-swc-transform","id":122,"timestamp":4441637254,"duration":19279,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":92,"name":"next-swc-loader","id":121,"timestamp":4441637200,"duration":19339,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":59,"name":"build-module-js","id":92,"timestamp":4441635434,"duration":27156,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\page-loader.js"},"startTime":1659464440872},{"traceId":"82103cca0a4b1843","parentId":129,"name":"next-swc-transform","id":130,"timestamp":4441637391,"duration":25276,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":96,"name":"next-swc-loader","id":129,"timestamp":4441637363,"duration":25312,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":59,"name":"build-module-js","id":96,"timestamp":4441635781,"duration":28924,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\has-base-path.js"},"startTime":1659464440873}]
+[{"traceId":"82103cca0a4b1843","parentId":137,"name":"next-swc-transform","id":138,"timestamp":4441637519,"duration":27604,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":100,"name":"next-swc-loader","id":137,"timestamp":4441637488,"duration":27647,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":59,"name":"build-module-js","id":100,"timestamp":4441636008,"duration":30236,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\runtime-config.js"},"startTime":1659464440873},{"traceId":"82103cca0a4b1843","parentId":135,"name":"next-swc-transform","id":136,"timestamp":4441637483,"duration":28803,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":99,"name":"next-swc-loader","id":135,"timestamp":4441637457,"duration":28834,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":59,"name":"build-module-js","id":99,"timestamp":4441635954,"duration":31873,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\mitt.js"},"startTime":1659464440873},{"traceId":"82103cca0a4b1843","parentId":84,"name":"read-resource","id":85,"timestamp":4441525476,"duration":143433,"tags":{},"startTime":1659464440762},{"traceId":"82103cca0a4b1843","parentId":45,"name":"build-module-js","id":84,"timestamp":4441525392,"duration":143805,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\router.js"},"startTime":1659464440762},{"traceId":"82103cca0a4b1843","parentId":139,"name":"next-swc-transform","id":140,"timestamp":4441637551,"duration":32626,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":101,"name":"next-swc-loader","id":139,"timestamp":4441637524,"duration":32660,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":59,"name":"build-module-js","id":101,"timestamp":4441636066,"duration":35413,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\image-config-context.js"},"startTime":1659464440873},{"traceId":"82103cca0a4b1843","parentId":141,"name":"next-swc-transform","id":142,"timestamp":4441637582,"duration":34204,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":102,"name":"next-swc-loader","id":141,"timestamp":4441637556,"duration":34239,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":59,"name":"build-module-js","id":102,"timestamp":4441636118,"duration":36957,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\router\\utils\\is-dynamic.js"},"startTime":1659464440873},{"traceId":"82103cca0a4b1843","parentId":149,"name":"next-swc-transform","id":150,"timestamp":4441649004,"duration":29455,"tags":{},"startTime":1659464440886},{"traceId":"82103cca0a4b1843","parentId":147,"name":"next-swc-loader","id":149,"timestamp":4441648938,"duration":29532,"tags":{},"startTime":1659464440886},{"traceId":"82103cca0a4b1843","parentId":63,"name":"build-module-js","id":147,"timestamp":4441647653,"duration":32010,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\is-plain-object.js"},"startTime":1659464440885},{"traceId":"82103cca0a4b1843","parentId":133,"name":"next-swc-transform","id":134,"timestamp":4441637453,"duration":42304,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":98,"name":"next-swc-loader","id":133,"timestamp":4441637426,"duration":42336,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":59,"name":"build-module-js","id":98,"timestamp":4441635899,"duration":48820,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\script.js"},"startTime":1659464440873},{"traceId":"82103cca0a4b1843","parentId":107,"name":"read-resource","id":108,"timestamp":4441636387,"duration":66193,"tags":{},"startTime":1659464440873},{"traceId":"82103cca0a4b1843","parentId":38,"name":"build-module-js","id":107,"timestamp":4441636349,"duration":66720,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\@swc\\helpers\\lib\\_class_call_check.js"},"startTime":1659464440873},{"traceId":"82103cca0a4b1843","parentId":103,"name":"read-resource","id":104,"timestamp":4441636200,"duration":69343,"tags":{},"startTime":1659464440873},{"traceId":"82103cca0a4b1843","parentId":23,"name":"build-module-js","id":103,"timestamp":4441636171,"duration":70201,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\@swc\\helpers\\lib\\_to_consumable_array.js"},"startTime":1659464440873},{"traceId":"82103cca0a4b1843","parentId":109,"name":"read-resource","id":110,"timestamp":4441636464,"duration":69950,"tags":{},"startTime":1659464440873},{"traceId":"82103cca0a4b1843","parentId":38,"name":"build-module-js","id":109,"timestamp":4441636417,"duration":70631,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\@swc\\helpers\\lib\\_create_class.js"},"startTime":1659464440873},{"traceId":"82103cca0a4b1843","parentId":105,"name":"read-resource","id":106,"timestamp":4441636282,"duration":70812,"tags":{},"startTime":1659464440873},{"traceId":"82103cca0a4b1843","parentId":24,"name":"build-module-js","id":105,"timestamp":4441636249,"duration":72049,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\@swc\\helpers\\lib\\_construct.js"},"startTime":1659464440873},{"traceId":"82103cca0a4b1843","parentId":113,"name":"read-resource","id":114,"timestamp":4441636620,"duration":71732,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":38,"name":"build-module-js","id":113,"timestamp":4441636586,"duration":72237,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\@swc\\helpers\\lib\\_interop_require_default.js"},"startTime":1659464440873},{"traceId":"82103cca0a4b1843","parentId":111,"name":"read-resource","id":112,"timestamp":4441636556,"duration":72311,"tags":{},"startTime":1659464440873},{"traceId":"82103cca0a4b1843","parentId":38,"name":"build-module-js","id":111,"timestamp":4441636504,"duration":72996,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\@swc\\helpers\\lib\\_inherits.js"},"startTime":1659464440873},{"traceId":"82103cca0a4b1843","parentId":117,"name":"read-resource","id":118,"timestamp":4441636786,"duration":72747,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":46,"name":"build-module-js","id":117,"timestamp":4441636744,"duration":74499,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\@swc\\helpers\\lib\\_sliced_to_array.js"},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":115,"name":"read-resource","id":116,"timestamp":4441636699,"duration":74663,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":38,"name":"build-module-js","id":115,"timestamp":4441636645,"duration":76287,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\@swc\\helpers\\lib\\_create_super.js"},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":119,"name":"read-resource","id":120,"timestamp":4441636852,"duration":76152,"tags":{},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":59,"name":"build-module-js","id":119,"timestamp":4441636813,"duration":77664,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\@swc\\helpers\\lib\\_interop_require_wildcard.js"},"startTime":1659464440874},{"traceId":"82103cca0a4b1843","parentId":158,"name":"next-swc-transform","id":159,"timestamp":4441699795,"duration":14842,"tags":{},"startTime":1659464440937},{"traceId":"82103cca0a4b1843","parentId":153,"name":"next-swc-loader","id":158,"timestamp":4441699776,"duration":14876,"tags":{},"startTime":1659464440937},{"traceId":"82103cca0a4b1843","parentId":71,"name":"build-module-js","id":153,"timestamp":4441699220,"duration":16854,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\amp-mode.js"},"startTime":1659464440936},{"traceId":"82103cca0a4b1843","parentId":156,"name":"next-swc-transform","id":157,"timestamp":4441699772,"duration":16364,"tags":{},"startTime":1659464440937},{"traceId":"82103cca0a4b1843","parentId":152,"name":"next-swc-loader","id":156,"timestamp":4441699749,"duration":16391,"tags":{},"startTime":1659464440937},{"traceId":"82103cca0a4b1843","parentId":71,"name":"build-module-js","id":152,"timestamp":4441699155,"duration":18000,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\amp-context.js"},"startTime":1659464440936},{"traceId":"82103cca0a4b1843","parentId":154,"name":"next-swc-transform","id":155,"timestamp":4441699745,"duration":18170,"tags":{},"startTime":1659464440937},{"traceId":"82103cca0a4b1843","parentId":151,"name":"next-swc-loader","id":154,"timestamp":4441699701,"duration":18222,"tags":{},"startTime":1659464440937},{"traceId":"82103cca0a4b1843","parentId":71,"name":"build-module-js","id":151,"timestamp":4441699036,"duration":22860,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\side-effect.js"},"startTime":1659464440936},{"traceId":"82103cca0a4b1843","parentId":9,"name":"add-entry","id":12,"timestamp":4440923346,"duration":799671,"tags":{"request":"./../node_modules/next/dist/client/dev/amp-dev"},"startTime":1659464440160},{"traceId":"82103cca0a4b1843","parentId":177,"name":"next-swc-transform","id":178,"timestamp":4441704657,"duration":24757,"tags":{},"startTime":1659464440942},{"traceId":"82103cca0a4b1843","parentId":164,"name":"next-swc-loader","id":177,"timestamp":4441704541,"duration":24887,"tags":{},"startTime":1659464440941},{"traceId":"82103cca0a4b1843","parentId":72,"name":"build-module-js","id":164,"timestamp":4441703542,"duration":27866,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\normalize-trailing-slash.js"},"startTime":1659464440940},{"traceId":"82103cca0a4b1843","parentId":181,"name":"next-swc-transform","id":182,"timestamp":4441704717,"duration":26733,"tags":{},"startTime":1659464440942},{"traceId":"82103cca0a4b1843","parentId":166,"name":"next-swc-loader","id":181,"timestamp":4441704691,"duration":26765,"tags":{},"startTime":1659464440942},{"traceId":"82103cca0a4b1843","parentId":72,"name":"build-module-js","id":166,"timestamp":4441703836,"duration":28921,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\detect-domain-locale.js"},"startTime":1659464440941},{"traceId":"82103cca0a4b1843","parentId":183,"name":"next-swc-transform","id":184,"timestamp":4441704739,"duration":28049,"tags":{},"startTime":1659464440942},{"traceId":"82103cca0a4b1843","parentId":167,"name":"next-swc-loader","id":183,"timestamp":4441704721,"duration":28072,"tags":{},"startTime":1659464440942},{"traceId":"82103cca0a4b1843","parentId":72,"name":"build-module-js","id":167,"timestamp":4441703911,"duration":30267,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\add-locale.js"},"startTime":1659464440941},{"traceId":"82103cca0a4b1843","parentId":189,"name":"next-swc-transform","id":190,"timestamp":4441704800,"duration":29412,"tags":{},"startTime":1659464440942},{"traceId":"82103cca0a4b1843","parentId":170,"name":"next-swc-loader","id":189,"timestamp":4441704783,"duration":29434,"tags":{},"startTime":1659464440942},{"traceId":"82103cca0a4b1843","parentId":72,"name":"build-module-js","id":170,"timestamp":4441704088,"duration":32084,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\router\\utils\\remove-trailing-slash.js"},"startTime":1659464440941},{"traceId":"82103cca0a4b1843","parentId":187,"name":"next-swc-transform","id":188,"timestamp":4441704780,"duration":31440,"tags":{},"startTime":1659464440942},{"traceId":"82103cca0a4b1843","parentId":169,"name":"next-swc-loader","id":187,"timestamp":4441704763,"duration":31462,"tags":{},"startTime":1659464440942},{"traceId":"82103cca0a4b1843","parentId":72,"name":"build-module-js","id":169,"timestamp":4441704033,"duration":33803,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\add-base-path.js"},"startTime":1659464440941},{"traceId":"82103cca0a4b1843","parentId":185,"name":"next-swc-transform","id":186,"timestamp":4441704760,"duration":33139,"tags":{},"startTime":1659464440942},{"traceId":"82103cca0a4b1843","parentId":168,"name":"next-swc-loader","id":185,"timestamp":4441704742,"duration":33163,"tags":{},"startTime":1659464440942},{"traceId":"82103cca0a4b1843","parentId":72,"name":"build-module-js","id":168,"timestamp":4441703975,"duration":35339,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\remove-locale.js"},"startTime":1659464440941},{"traceId":"82103cca0a4b1843","parentId":191,"name":"next-swc-transform","id":192,"timestamp":4441704819,"duration":34573,"tags":{},"startTime":1659464440942},{"traceId":"82103cca0a4b1843","parentId":171,"name":"next-swc-loader","id":191,"timestamp":4441704803,"duration":34595,"tags":{},"startTime":1659464440942},{"traceId":"82103cca0a4b1843","parentId":72,"name":"build-module-js","id":171,"timestamp":4441704142,"duration":39264,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\router\\utils\\route-regex.js"},"startTime":1659464440941},{"traceId":"82103cca0a4b1843","parentId":193,"name":"next-swc-transform","id":194,"timestamp":4441704839,"duration":38639,"tags":{},"startTime":1659464440942},{"traceId":"82103cca0a4b1843","parentId":172,"name":"next-swc-loader","id":193,"timestamp":4441704822,"duration":38662,"tags":{},"startTime":1659464440942},{"traceId":"82103cca0a4b1843","parentId":72,"name":"build-module-js","id":172,"timestamp":4441704204,"duration":41811,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\router\\utils\\route-matcher.js"},"startTime":1659464440941},{"traceId":"82103cca0a4b1843","parentId":195,"name":"next-swc-transform","id":196,"timestamp":4441704858,"duration":41213,"tags":{},"startTime":1659464440942},{"traceId":"82103cca0a4b1843","parentId":173,"name":"next-swc-loader","id":195,"timestamp":4441704842,"duration":41234,"tags":{},"startTime":1659464440942},{"traceId":"82103cca0a4b1843","parentId":72,"name":"build-module-js","id":173,"timestamp":4441704263,"duration":45165,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\router\\utils\\parse-relative-url.js"},"startTime":1659464440941},{"traceId":"82103cca0a4b1843","parentId":199,"name":"next-swc-transform","id":200,"timestamp":4441704897,"duration":44595,"tags":{},"startTime":1659464440942},{"traceId":"82103cca0a4b1843","parentId":175,"name":"next-swc-loader","id":199,"timestamp":4441704880,"duration":44617,"tags":{},"startTime":1659464440942},{"traceId":"82103cca0a4b1843","parentId":72,"name":"build-module-js","id":175,"timestamp":4441704376,"duration":46247,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\router\\utils\\parse-path.js"},"startTime":1659464440941},{"traceId":"82103cca0a4b1843","parentId":145,"name":"read-resource","id":146,"timestamp":4441643803,"duration":106853,"tags":{},"startTime":1659464440881},{"traceId":"82103cca0a4b1843","parentId":70,"name":"build-module-js","id":145,"timestamp":4441643754,"duration":107851,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\@swc\\helpers\\lib\\_wrap_native_super.js"},"startTime":1659464440881},{"traceId":"82103cca0a4b1843","parentId":143,"name":"read-resource","id":144,"timestamp":4441643700,"duration":107941,"tags":{},"startTime":1659464440881},{"traceId":"82103cca0a4b1843","parentId":59,"name":"build-module-js","id":143,"timestamp":4441643544,"duration":108950,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\build\\polyfills\\polyfill-module.js"},"startTime":1659464440880},{"traceId":"82103cca0a4b1843","parentId":201,"name":"next-swc-transform","id":202,"timestamp":4441704916,"duration":47650,"tags":{},"startTime":1659464440942},{"traceId":"82103cca0a4b1843","parentId":176,"name":"next-swc-loader","id":201,"timestamp":4441704900,"duration":47672,"tags":{},"startTime":1659464440942},{"traceId":"82103cca0a4b1843","parentId":72,"name":"build-module-js","id":176,"timestamp":4441704430,"duration":49867,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\router\\utils\\get-next-pathname-info.js"},"startTime":1659464440941},{"traceId":"82103cca0a4b1843","parentId":179,"name":"next-swc-transform","id":180,"timestamp":4441704687,"duration":49692,"tags":{},"startTime":1659464440942},{"traceId":"82103cca0a4b1843","parentId":165,"name":"next-swc-loader","id":179,"timestamp":4441704662,"duration":49722,"tags":{},"startTime":1659464440942},{"traceId":"82103cca0a4b1843","parentId":72,"name":"build-module-js","id":165,"timestamp":4441703755,"duration":58431,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\route-loader.js"},"startTime":1659464440941},{"traceId":"82103cca0a4b1843","parentId":197,"name":"next-swc-transform","id":198,"timestamp":4441704877,"duration":57516,"tags":{},"startTime":1659464440942},{"traceId":"82103cca0a4b1843","parentId":174,"name":"next-swc-loader","id":197,"timestamp":4441704861,"duration":57543,"tags":{},"startTime":1659464440942},{"traceId":"82103cca0a4b1843","parentId":72,"name":"build-module-js","id":174,"timestamp":4441704320,"duration":63427,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\router\\utils\\format-url.js"},"startTime":1659464440941},{"traceId":"82103cca0a4b1843","parentId":204,"name":"next-swc-transform","id":205,"timestamp":4441724262,"duration":46843,"tags":{},"startTime":1659464440961},{"traceId":"82103cca0a4b1843","parentId":203,"name":"next-swc-loader","id":204,"timestamp":4441724221,"duration":46895,"tags":{},"startTime":1659464440961},{"traceId":"82103cca0a4b1843","parentId":72,"name":"build-module-js","id":203,"timestamp":4441723816,"duration":48551,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\router\\utils\\format-next-pathname-info.js"},"startTime":1659464440961},{"traceId":"82103cca0a4b1843","parentId":211,"name":"next-swc-transform","id":212,"timestamp":4441775550,"duration":10195,"tags":{},"startTime":1659464441012},{"traceId":"82103cca0a4b1843","parentId":207,"name":"next-swc-loader","id":211,"timestamp":4441775529,"duration":10228,"tags":{},"startTime":1659464441012},{"traceId":"82103cca0a4b1843","parentId":72,"name":"build-module-js","id":207,"timestamp":4441774954,"duration":11971,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\page-path\\denormalize-page-path.js"},"startTime":1659464441012},{"traceId":"82103cca0a4b1843","parentId":213,"name":"next-swc-transform","id":214,"timestamp":4441775571,"duration":11389,"tags":{},"startTime":1659464441012},{"traceId":"82103cca0a4b1843","parentId":208,"name":"next-swc-loader","id":213,"timestamp":4441775553,"duration":11411,"tags":{},"startTime":1659464441012},{"traceId":"82103cca0a4b1843","parentId":72,"name":"build-module-js","id":208,"timestamp":4441775018,"duration":12859,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\i18n\\normalize-locale-path.js"},"startTime":1659464441012},{"traceId":"82103cca0a4b1843","parentId":209,"name":"next-swc-transform","id":210,"timestamp":4441775525,"duration":12688,"tags":{},"startTime":1659464441012}]
+[{"traceId":"82103cca0a4b1843","parentId":206,"name":"next-swc-loader","id":209,"timestamp":4441775487,"duration":13008,"tags":{},"startTime":1659464441012},{"traceId":"82103cca0a4b1843","parentId":86,"name":"build-module-js","id":206,"timestamp":4441774835,"duration":25851,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\dev\\error-overlay\\format-webpack-messages.js"},"startTime":1659464441012},{"traceId":"82103cca0a4b1843","parentId":162,"name":"read-resource","id":163,"timestamp":4441703508,"duration":101459,"tags":{},"startTime":1659464440940},{"traceId":"82103cca0a4b1843","parentId":89,"name":"build-module-js","id":162,"timestamp":4441703475,"duration":105374,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\@swc\\helpers\\lib\\_instanceof.js"},"startTime":1659464440940},{"traceId":"82103cca0a4b1843","parentId":160,"name":"read-resource","id":161,"timestamp":4441703444,"duration":105465,"tags":{},"startTime":1659464440940},{"traceId":"82103cca0a4b1843","parentId":24,"name":"build-module-js","id":160,"timestamp":4441703382,"duration":105972,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\react\\index.js"},"startTime":1659464440940},{"traceId":"82103cca0a4b1843","parentId":220,"name":"next-swc-transform","id":221,"timestamp":4441801995,"duration":8500,"tags":{},"startTime":1659464441039},{"traceId":"82103cca0a4b1843","parentId":217,"name":"next-swc-loader","id":220,"timestamp":4441801948,"duration":8558,"tags":{},"startTime":1659464441039},{"traceId":"82103cca0a4b1843","parentId":101,"name":"build-module-js","id":217,"timestamp":4441801241,"duration":10351,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\image-config.js"},"startTime":1659464441038},{"traceId":"82103cca0a4b1843","parentId":224,"name":"next-swc-transform","id":225,"timestamp":4441802045,"duration":9603,"tags":{},"startTime":1659464441039},{"traceId":"82103cca0a4b1843","parentId":219,"name":"next-swc-loader","id":224,"timestamp":4441802026,"duration":9627,"tags":{},"startTime":1659464441039},{"traceId":"82103cca0a4b1843","parentId":96,"name":"build-module-js","id":219,"timestamp":4441801388,"duration":11296,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\router\\utils\\path-has-prefix.js"},"startTime":1659464441038},{"traceId":"82103cca0a4b1843","parentId":222,"name":"next-swc-transform","id":223,"timestamp":4441802022,"duration":13191,"tags":{},"startTime":1659464441039},{"traceId":"82103cca0a4b1843","parentId":218,"name":"next-swc-loader","id":222,"timestamp":4441802001,"duration":13233,"tags":{},"startTime":1659464441039},{"traceId":"82103cca0a4b1843","parentId":92,"name":"build-module-js","id":218,"timestamp":4441801328,"duration":15263,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\router\\utils\\get-asset-path-from-route.js"},"startTime":1659464441038},{"traceId":"82103cca0a4b1843","parentId":247,"name":"next-swc-transform","id":248,"timestamp":4441813983,"duration":7838,"tags":{},"startTime":1659464441051},{"traceId":"82103cca0a4b1843","parentId":226,"name":"next-swc-loader","id":247,"timestamp":4441813940,"duration":7896,"tags":{},"startTime":1659464441051},{"traceId":"82103cca0a4b1843","parentId":98,"name":"build-module-js","id":226,"timestamp":4441812908,"duration":10813,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\request-idle-callback.js"},"startTime":1659464441050},{"traceId":"82103cca0a4b1843","parentId":252,"name":"next-swc-transform","id":253,"timestamp":4441817337,"duration":6430,"tags":{},"startTime":1659464441054},{"traceId":"82103cca0a4b1843","parentId":249,"name":"next-swc-loader","id":252,"timestamp":4441817273,"duration":6498,"tags":{},"startTime":1659464441054},{"traceId":"82103cca0a4b1843","parentId":59,"name":"build-module-js","id":249,"timestamp":4441816991,"duration":7969,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\portal\\index.js"},"startTime":1659464441054},{"traceId":"82103cca0a4b1843","parentId":227,"name":"read-resource","id":228,"timestamp":4441813069,"duration":17238,"tags":{},"startTime":1659464441050},{"traceId":"82103cca0a4b1843","parentId":103,"name":"build-module-js","id":227,"timestamp":4441813035,"duration":17750,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\@swc\\helpers\\lib\\_iterable_to_array.js"},"startTime":1659464441050},{"traceId":"82103cca0a4b1843","parentId":229,"name":"read-resource","id":230,"timestamp":4441813156,"duration":17655,"tags":{},"startTime":1659464441050},{"traceId":"82103cca0a4b1843","parentId":103,"name":"build-module-js","id":229,"timestamp":4441813121,"duration":18070,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\@swc\\helpers\\lib\\_array_without_holes.js"},"startTime":1659464441050},{"traceId":"82103cca0a4b1843","parentId":266,"name":"next-swc-transform","id":267,"timestamp":4441826072,"duration":5206,"tags":{},"startTime":1659464441063},{"traceId":"82103cca0a4b1843","parentId":258,"name":"next-swc-loader","id":266,"timestamp":4441826053,"duration":5232,"tags":{},"startTime":1659464441063},{"traceId":"82103cca0a4b1843","parentId":171,"name":"build-module-js","id":258,"timestamp":4441825669,"duration":6605,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\escape-regexp.js"},"startTime":1659464441063},{"traceId":"82103cca0a4b1843","parentId":262,"name":"next-swc-transform","id":263,"timestamp":4441826026,"duration":6292,"tags":{},"startTime":1659464441063},{"traceId":"82103cca0a4b1843","parentId":256,"name":"next-swc-loader","id":262,"timestamp":4441825993,"duration":6330,"tags":{},"startTime":1659464441063},{"traceId":"82103cca0a4b1843","parentId":169,"name":"build-module-js","id":256,"timestamp":4441825529,"duration":7812,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\router\\utils\\add-path-prefix.js"},"startTime":1659464441062},{"traceId":"82103cca0a4b1843","parentId":268,"name":"next-swc-transform","id":269,"timestamp":4441826092,"duration":7288,"tags":{},"startTime":1659464441063},{"traceId":"82103cca0a4b1843","parentId":259,"name":"next-swc-loader","id":268,"timestamp":4441826075,"duration":7309,"tags":{},"startTime":1659464441063},{"traceId":"82103cca0a4b1843","parentId":176,"name":"build-module-js","id":259,"timestamp":4441825723,"duration":9560,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\router\\utils\\remove-path-prefix.js"},"startTime":1659464441063},{"traceId":"82103cca0a4b1843","parentId":270,"name":"next-swc-transform","id":271,"timestamp":4441826111,"duration":9204,"tags":{},"startTime":1659464441063},{"traceId":"82103cca0a4b1843","parentId":260,"name":"next-swc-loader","id":270,"timestamp":4441826095,"duration":9225,"tags":{},"startTime":1659464441063},{"traceId":"82103cca0a4b1843","parentId":203,"name":"build-module-js","id":260,"timestamp":4441825775,"duration":10450,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\router\\utils\\add-path-suffix.js"},"startTime":1659464441063},{"traceId":"82103cca0a4b1843","parentId":272,"name":"next-swc-transform","id":273,"timestamp":4441826129,"duration":10197,"tags":{},"startTime":1659464441063},{"traceId":"82103cca0a4b1843","parentId":261,"name":"next-swc-loader","id":272,"timestamp":4441826114,"duration":10220,"tags":{},"startTime":1659464441063},{"traceId":"82103cca0a4b1843","parentId":203,"name":"build-module-js","id":261,"timestamp":4441825832,"duration":11487,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\router\\utils\\add-locale.js"},"startTime":1659464441063},{"traceId":"82103cca0a4b1843","parentId":264,"name":"next-swc-transform","id":265,"timestamp":4441826050,"duration":11308,"tags":{},"startTime":1659464441063},{"traceId":"82103cca0a4b1843","parentId":257,"name":"next-swc-loader","id":264,"timestamp":4441826030,"duration":11332,"tags":{},"startTime":1659464441063},{"traceId":"82103cca0a4b1843","parentId":165,"name":"build-module-js","id":257,"timestamp":4441825611,"duration":13194,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\trusted-types.js"},"startTime":1659464441062},{"traceId":"82103cca0a4b1843","parentId":231,"name":"read-resource","id":232,"timestamp":4441813237,"duration":26993,"tags":{},"startTime":1659464441050},{"traceId":"82103cca0a4b1843","parentId":103,"name":"build-module-js","id":231,"timestamp":4441813194,"duration":27711,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\@swc\\helpers\\lib\\_unsupported_iterable_to_array.js"},"startTime":1659464441050},{"traceId":"82103cca0a4b1843","parentId":233,"name":"read-resource","id":234,"timestamp":4441813328,"duration":27602,"tags":{},"startTime":1659464441050},{"traceId":"82103cca0a4b1843","parentId":103,"name":"build-module-js","id":233,"timestamp":4441813276,"duration":27879,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\@swc\\helpers\\lib\\_non_iterable_spread.js"},"startTime":1659464441050},{"traceId":"82103cca0a4b1843","parentId":237,"name":"read-resource","id":238,"timestamp":4441813477,"duration":27710,"tags":{},"startTime":1659464441050},{"traceId":"82103cca0a4b1843","parentId":117,"name":"build-module-js","id":237,"timestamp":4441813434,"duration":27975,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\@swc\\helpers\\lib\\_array_with_holes.js"},"startTime":1659464441050},{"traceId":"82103cca0a4b1843","parentId":239,"name":"read-resource","id":240,"timestamp":4441813554,"duration":27873,"tags":{},"startTime":1659464441050},{"traceId":"82103cca0a4b1843","parentId":117,"name":"build-module-js","id":239,"timestamp":4441813507,"duration":28129,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\@swc\\helpers\\lib\\_non_iterable_rest.js"},"startTime":1659464441050},{"traceId":"82103cca0a4b1843","parentId":235,"name":"read-resource","id":236,"timestamp":4441813404,"duration":28254,"tags":{},"startTime":1659464441050},{"traceId":"82103cca0a4b1843","parentId":105,"name":"build-module-js","id":235,"timestamp":4441813359,"duration":28612,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\@swc\\helpers\\lib\\_set_prototype_of.js"},"startTime":1659464441050},{"traceId":"82103cca0a4b1843","parentId":241,"name":"read-resource","id":242,"timestamp":4441813599,"duration":28394,"tags":{},"startTime":1659464441050},{"traceId":"82103cca0a4b1843","parentId":115,"name":"build-module-js","id":241,"timestamp":4441813573,"duration":28720,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\@swc\\helpers\\lib\\_is_native_reflect_construct.js"},"startTime":1659464441050},{"traceId":"82103cca0a4b1843","parentId":243,"name":"read-resource","id":244,"timestamp":4441813654,"duration":28658,"tags":{},"startTime":1659464441051},{"traceId":"82103cca0a4b1843","parentId":115,"name":"build-module-js","id":243,"timestamp":4441813618,"duration":28962,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\@swc\\helpers\\lib\\_get_prototype_of.js"},"startTime":1659464441051},{"traceId":"82103cca0a4b1843","parentId":245,"name":"read-resource","id":246,"timestamp":4441813701,"duration":29266,"tags":{},"startTime":1659464441051},{"traceId":"82103cca0a4b1843","parentId":115,"name":"build-module-js","id":245,"timestamp":4441813674,"duration":29687,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\@swc\\helpers\\lib\\_possible_constructor_return.js"},"startTime":1659464441051},{"traceId":"82103cca0a4b1843","parentId":250,"name":"read-resource","id":251,"timestamp":4441817227,"duration":27272,"tags":{},"startTime":1659464441054},{"traceId":"82103cca0a4b1843","parentId":145,"name":"build-module-js","id":250,"timestamp":4441817176,"duration":27788,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\@swc\\helpers\\lib\\_is_native_function.js"},"startTime":1659464441054},{"traceId":"82103cca0a4b1843","parentId":277,"name":"next-swc-transform","id":278,"timestamp":4441844005,"duration":2101,"tags":{},"startTime":1659464441081},{"traceId":"82103cca0a4b1843","parentId":276,"name":"next-swc-loader","id":277,"timestamp":4441843967,"duration":2150,"tags":{},"startTime":1659464441081},{"traceId":"82103cca0a4b1843","parentId":207,"name":"build-module-js","id":276,"timestamp":4441843762,"duration":3169,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\page-path\\normalize-path-sep.js"},"startTime":1659464441081},{"traceId":"82103cca0a4b1843","parentId":254,"name":"read-resource","id":255,"timestamp":4441825491,"duration":21460,"tags":{},"startTime":1659464441062},{"traceId":"82103cca0a4b1843","parentId":59,"name":"build-module-js","id":254,"timestamp":4441825438,"duration":21759,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\compiled\\react-is\\index.js"},"startTime":1659464441062},{"traceId":"82103cca0a4b1843","parentId":215,"name":"read-resource","id":216,"timestamp":4441801184,"duration":46133,"tags":{},"startTime":1659464441038},{"traceId":"82103cca0a4b1843","parentId":59,"name":"build-module-js","id":215,"timestamp":4441801121,"duration":154088,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\compiled\\@next\\react-dev-overlay\\dist\\client.js"},"startTime":1659464441038},{"traceId":"82103cca0a4b1843","parentId":274,"name":"read-resource","id":275,"timestamp":4441839865,"duration":121830,"tags":{},"startTime":1659464441077},{"traceId":"82103cca0a4b1843","parentId":59,"name":"build-module-js","id":274,"timestamp":4441839816,"duration":122644,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\react-dom\\index.js"},"startTime":1659464441077},{"traceId":"82103cca0a4b1843","parentId":279,"name":"read-resource","id":280,"timestamp":4441845861,"duration":117930,"tags":{},"startTime":1659464441083},{"traceId":"82103cca0a4b1843","parentId":160,"name":"build-module-js","id":279,"timestamp":4441845803,"duration":137012,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\react\\cjs\\react.development.js"},"startTime":1659464441083},{"traceId":"82103cca0a4b1843","parentId":288,"name":"next-swc-transform","id":289,"timestamp":4441963352,"duration":20402,"tags":{},"startTime":1659464441200},{"traceId":"82103cca0a4b1843","parentId":287,"name":"next-swc-loader","id":288,"timestamp":4441963291,"duration":20473,"tags":{},"startTime":1659464441200},{"traceId":"82103cca0a4b1843","parentId":86,"name":"build-module-js","id":287,"timestamp":4441963081,"duration":21892,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\compiled\\strip-ansi\\index.js"},"startTime":1659464441200},{"traceId":"82103cca0a4b1843","parentId":281,"name":"read-resource","id":282,"timestamp":4441956207,"duration":28795,"tags":{},"startTime":1659464441193},{"traceId":"82103cca0a4b1843","parentId":229,"name":"build-module-js","id":281,"timestamp":4441956153,"duration":29224,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\@swc\\helpers\\lib\\_array_like_to_array.js"},"startTime":1659464441193},{"traceId":"82103cca0a4b1843","parentId":285,"name":"read-resource","id":286,"timestamp":4441961548,"duration":25220,"tags":{},"startTime":1659464441198},{"traceId":"82103cca0a4b1843","parentId":245,"name":"build-module-js","id":285,"timestamp":4441961517,"duration":25583,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\@swc\\helpers\\lib\\_type_of.js"},"startTime":1659464441198},{"traceId":"82103cca0a4b1843","parentId":283,"name":"read-resource","id":284,"timestamp":4441961484,"duration":25634,"tags":{},"startTime":1659464441198},{"traceId":"82103cca0a4b1843","parentId":245,"name":"build-module-js","id":283,"timestamp":4441961404,"duration":25968,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\@swc\\helpers\\lib\\_assert_this_initialized.js"},"startTime":1659464441198},{"traceId":"82103cca0a4b1843","parentId":290,"name":"read-resource","id":291,"timestamp":4441983280,"duration":5193,"tags":{},"startTime":1659464441220},{"traceId":"82103cca0a4b1843","parentId":93,"name":"build-module-js","id":290,"timestamp":4441983202,"duration":12449,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\compiled\\web-vitals\\web-vitals.umd.js"},"startTime":1659464441220},{"traceId":"82103cca0a4b1843","parentId":292,"name":"read-resource","id":293,"timestamp":4441986627,"duration":9251,"tags":{},"startTime":1659464441224},{"traceId":"82103cca0a4b1843","parentId":254,"name":"build-module-js","id":292,"timestamp":4441986574,"duration":11241,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\compiled\\react-is\\cjs\\react-is.development.js"},"startTime":1659464441223},{"traceId":"82103cca0a4b1843","parentId":297,"name":"next-swc-transform","id":298,"timestamp":4441987819,"duration":10083,"tags":{},"startTime":1659464441225},{"traceId":"82103cca0a4b1843","parentId":294,"name":"next-swc-loader","id":297,"timestamp":4441987783,"duration":10125,"tags":{},"startTime":1659464441225},{"traceId":"82103cca0a4b1843","parentId":207,"name":"build-module-js","id":294,"timestamp":4441987599,"duration":11310,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\router\\utils\\index.js"},"startTime":1659464441224},{"traceId":"82103cca0a4b1843","parentId":295,"name":"read-resource","id":296,"timestamp":4441987725,"duration":12519,"tags":{},"startTime":1659464441225},{"traceId":"82103cca0a4b1843","parentId":279,"name":"build-module-js","id":295,"timestamp":4441987694,"duration":12985,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\build\\polyfills\\object-assign.js"},"startTime":1659464441225},{"traceId":"82103cca0a4b1843","parentId":9,"name":"add-entry","id":14,"timestamp":4440923416,"duration":1077388,"tags":{"request":"next-client-pages-loader?absolutePagePath=private-next-pages%2F_app&page=%2F_app!"},"startTime":1659464440160},{"traceId":"82103cca0a4b1843","parentId":9,"name":"add-entry","id":16,"timestamp":4440923464,"duration":1077371,"tags":{"request":"next-client-pages-loader?absolutePagePath=private-next-pages%2F_error&page=%2F_error!"},"startTime":1659464440160},{"traceId":"82103cca0a4b1843","parentId":302,"name":"next-swc-transform","id":303,"timestamp":4442002398,"duration":4660,"tags":{},"startTime":1659464441239},{"traceId":"82103cca0a4b1843","parentId":301,"name":"next-swc-loader","id":302,"timestamp":4442002357,"duration":4718,"tags":{},"startTime":1659464441239},{"traceId":"82103cca0a4b1843","parentId":294,"name":"build-module-js","id":301,"timestamp":4442002233,"duration":7495,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\router\\utils\\sorted-routes.js"},"startTime":1659464441239},{"traceId":"82103cca0a4b1843","parentId":9,"name":"add-entry","id":15,"timestamp":4440923439,"duration":1087759,"tags":{"request":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\router.js"},"startTime":1659464440160},{"traceId":"82103cca0a4b1843","parentId":299,"name":"read-resource","id":300,"timestamp":4441988021,"duration":76553,"tags":{},"startTime":1659464441225},{"traceId":"82103cca0a4b1843","parentId":274,"name":"build-module-js","id":299,"timestamp":4441987984,"duration":254408,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\react-dom\\cjs\\react-dom.development.js"},"startTime":1659464441225},{"traceId":"82103cca0a4b1843","parentId":304,"name":"read-resource","id":305,"timestamp":4442253991,"duration":1996,"tags":{},"startTime":1659464441491},{"traceId":"82103cca0a4b1843","parentId":299,"name":"build-module-js","id":304,"timestamp":4442253936,"duration":2505,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\scheduler\\tracing.js"},"startTime":1659464441491},{"traceId":"82103cca0a4b1843","parentId":306,"name":"read-resource","id":307,"timestamp":4442255602,"duration":2684,"tags":{},"startTime":1659464441492}]
+[{"traceId":"82103cca0a4b1843","parentId":299,"name":"build-module-js","id":306,"timestamp":4442255547,"duration":3451,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\scheduler\\index.js"},"startTime":1659464441492},{"traceId":"82103cca0a4b1843","parentId":308,"name":"read-resource","id":309,"timestamp":4442259769,"duration":3908,"tags":{},"startTime":1659464441497},{"traceId":"82103cca0a4b1843","parentId":304,"name":"build-module-js","id":308,"timestamp":4442259691,"duration":5714,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\scheduler\\cjs\\scheduler-tracing.development.js"},"startTime":1659464441497},{"traceId":"82103cca0a4b1843","parentId":310,"name":"read-resource","id":311,"timestamp":4442260668,"duration":5636,"tags":{},"startTime":1659464441498},{"traceId":"82103cca0a4b1843","parentId":306,"name":"build-module-js","id":310,"timestamp":4442260610,"duration":8458,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\scheduler\\cjs\\scheduler.development.js"},"startTime":1659464441497},{"traceId":"82103cca0a4b1843","parentId":9,"name":"add-entry","id":13,"timestamp":4440923389,"duration":1345858,"tags":{"request":"./../node_modules/next/dist/client/next-dev.js"},"startTime":1659464440160},{"traceId":"82103cca0a4b1843","parentId":1,"name":"make","id":10,"timestamp":4440921701,"duration":1347920,"tags":{},"startTime":1659464440159},{"traceId":"82103cca0a4b1843","parentId":9,"name":"webpack-compilation-chunk-graph","id":313,"timestamp":4442275572,"duration":6550,"tags":{},"startTime":1659464441512},{"traceId":"82103cca0a4b1843","parentId":9,"name":"webpack-compilation-optimize-modules","id":315,"timestamp":4442282234,"duration":29,"tags":{},"startTime":1659464441519},{"traceId":"82103cca0a4b1843","parentId":9,"name":"webpack-compilation-optimize-chunks","id":316,"timestamp":4442282342,"duration":350,"tags":{},"startTime":1659464441519},{"traceId":"82103cca0a4b1843","parentId":9,"name":"webpack-compilation-optimize-tree","id":317,"timestamp":4442282755,"duration":135,"tags":{},"startTime":1659464441520},{"traceId":"82103cca0a4b1843","parentId":9,"name":"webpack-compilation-optimize","id":314,"timestamp":4442282182,"duration":1008,"tags":{},"startTime":1659464441519},{"traceId":"82103cca0a4b1843","parentId":9,"name":"webpack-compilation-hash","id":318,"timestamp":4442313241,"duration":24065,"tags":{},"startTime":1659464441550},{"traceId":"82103cca0a4b1843","parentId":9,"name":"NextJsBuildManifest-generateClientManifest","id":320,"timestamp":4442545326,"duration":797,"tags":{},"startTime":1659464441782},{"traceId":"82103cca0a4b1843","parentId":9,"name":"NextJsBuildManifest-createassets","id":319,"timestamp":4442544644,"duration":1495,"tags":{},"startTime":1659464441782},{"traceId":"82103cca0a4b1843","parentId":9,"name":"webpack-compilation-seal","id":312,"timestamp":4442274756,"duration":272536,"tags":{},"startTime":1659464441512},{"traceId":"82103cca0a4b1843","parentId":1,"name":"webpack-compilation","id":9,"timestamp":4440913436,"duration":1634134,"tags":{"name":"client"},"startTime":1659464440150},{"traceId":"82103cca0a4b1843","parentId":1,"name":"emit","id":321,"timestamp":4442547981,"duration":58416,"tags":{},"startTime":1659464441785},{"traceId":"82103cca0a4b1843","parentId":330,"name":"next-swc-transform","id":331,"timestamp":4442730331,"duration":12126,"tags":{},"startTime":1659464441967},{"traceId":"82103cca0a4b1843","parentId":327,"name":"next-swc-loader","id":330,"timestamp":4442730209,"duration":12264,"tags":{},"startTime":1659464441967},{"traceId":"82103cca0a4b1843","parentId":322,"name":"build-module-js","id":327,"timestamp":4442729325,"duration":17242,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\pages\\_app.js"},"startTime":1659464441966},{"traceId":"82103cca0a4b1843","parentId":332,"name":"next-swc-transform","id":333,"timestamp":4442730380,"duration":16342,"tags":{},"startTime":1659464441967},{"traceId":"82103cca0a4b1843","parentId":328,"name":"next-swc-loader","id":332,"timestamp":4442730339,"duration":16392,"tags":{},"startTime":1659464441967},{"traceId":"82103cca0a4b1843","parentId":322,"name":"build-module-js","id":328,"timestamp":4442730084,"duration":24377,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\pages\\_error.js"},"startTime":1659464441967},{"traceId":"82103cca0a4b1843","parentId":334,"name":"next-swc-transform","id":335,"timestamp":4442730419,"duration":26530,"tags":{},"startTime":1659464441967},{"traceId":"82103cca0a4b1843","parentId":329,"name":"next-swc-loader","id":334,"timestamp":4442730386,"duration":26579,"tags":{},"startTime":1659464441967},{"traceId":"82103cca0a4b1843","parentId":322,"name":"build-module-js","id":329,"timestamp":4442730152,"duration":72131,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\pages\\_document.js"},"startTime":1659464441967},{"traceId":"82103cca0a4b1843","parentId":327,"name":"build-module-react","id":336,"timestamp":4442803526,"duration":654,"tags":{"name":"react"},"startTime":1659464442040},{"traceId":"82103cca0a4b1843","parentId":329,"name":"build-module-/server/utils","id":337,"timestamp":4442810254,"duration":30,"tags":{"name":"../server/utils"},"startTime":1659464442047},{"traceId":"82103cca0a4b1843","parentId":329,"name":"build-module-/server/htmlescape","id":338,"timestamp":4442810313,"duration":15,"tags":{"name":"../server/htmlescape"},"startTime":1659464442047},{"traceId":"82103cca0a4b1843","parentId":329,"name":"build-module-/server/get-page-files","id":339,"timestamp":4442810341,"duration":12,"tags":{"name":"../server/get-page-files"},"startTime":1659464442047},{"traceId":"82103cca0a4b1843","parentId":327,"name":"build-module-/shared/lib/utils","id":347,"timestamp":4442811096,"duration":21,"tags":{"name":"../shared/lib/utils"},"startTime":1659464442048},{"traceId":"82103cca0a4b1843","parentId":329,"name":"build-module-/shared/lib/constants","id":348,"timestamp":4442811139,"duration":16,"tags":{"name":"../shared/lib/constants"},"startTime":1659464442048},{"traceId":"82103cca0a4b1843","parentId":328,"name":"build-module-/shared/lib/head","id":349,"timestamp":4442811168,"duration":13,"tags":{"name":"../shared/lib/head"},"startTime":1659464442048},{"traceId":"82103cca0a4b1843","parentId":329,"name":"build-module-/shared/lib/html-context","id":350,"timestamp":4442811192,"duration":11,"tags":{"name":"../shared/lib/html-context"},"startTime":1659464442048},{"traceId":"82103cca0a4b1843","parentId":322,"name":"add-entry","id":324,"timestamp":4442656334,"duration":155067,"tags":{"request":"private-next-pages/_app"},"startTime":1659464441893},{"traceId":"82103cca0a4b1843","parentId":322,"name":"add-entry","id":325,"timestamp":4442656465,"duration":154956,"tags":{"request":"private-next-pages/_error"},"startTime":1659464441893},{"traceId":"82103cca0a4b1843","parentId":342,"name":"read-resource","id":343,"timestamp":4442810651,"duration":1261,"tags":{},"startTime":1659464442048},{"traceId":"82103cca0a4b1843","parentId":329,"name":"build-module-js","id":342,"timestamp":4442810600,"duration":3120,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\lib\\pretty-bytes.js"},"startTime":1659464442047},{"traceId":"82103cca0a4b1843","parentId":340,"name":"read-resource","id":341,"timestamp":4442810546,"duration":3202,"tags":{},"startTime":1659464442047},{"traceId":"82103cca0a4b1843","parentId":329,"name":"build-module-js","id":340,"timestamp":4442810367,"duration":4497,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\lib\\is-error.js"},"startTime":1659464442047},{"traceId":"82103cca0a4b1843","parentId":345,"name":"next-swc-transform","id":346,"timestamp":4442810941,"duration":4810,"tags":{},"startTime":1659464442048},{"traceId":"82103cca0a4b1843","parentId":344,"name":"next-swc-loader","id":345,"timestamp":4442810894,"duration":4871,"tags":{},"startTime":1659464442048},{"traceId":"82103cca0a4b1843","parentId":329,"name":"build-module-js","id":344,"timestamp":4442810693,"duration":15624,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\script.js"},"startTime":1659464442048},{"traceId":"82103cca0a4b1843","parentId":340,"name":"build-module-/shared/lib/is-plain-object","id":351,"timestamp":4442828421,"duration":42,"tags":{"name":"../shared/lib/is-plain-object"},"startTime":1659464442065},{"traceId":"82103cca0a4b1843","parentId":344,"name":"build-module-/shared/lib/head-manager-context","id":354,"timestamp":4442833250,"duration":42,"tags":{"name":"../shared/lib/head-manager-context"},"startTime":1659464442070},{"traceId":"82103cca0a4b1843","parentId":357,"name":"next-swc-transform","id":358,"timestamp":4442833432,"duration":2041,"tags":{},"startTime":1659464442070},{"traceId":"82103cca0a4b1843","parentId":353,"name":"next-swc-loader","id":357,"timestamp":4442833407,"duration":2082,"tags":{},"startTime":1659464442070},{"traceId":"82103cca0a4b1843","parentId":344,"name":"build-module-js","id":353,"timestamp":4442833190,"duration":6356,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\request-idle-callback.js"},"startTime":1659464442070},{"traceId":"82103cca0a4b1843","parentId":355,"name":"next-swc-transform","id":356,"timestamp":4442833402,"duration":6494,"tags":{},"startTime":1659464442070},{"traceId":"82103cca0a4b1843","parentId":352,"name":"next-swc-loader","id":355,"timestamp":4442833342,"duration":6567,"tags":{},"startTime":1659464442070},{"traceId":"82103cca0a4b1843","parentId":344,"name":"build-module-js","id":352,"timestamp":4442833036,"duration":13382,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\head-manager.js"},"startTime":1659464442070},{"traceId":"82103cca0a4b1843","parentId":322,"name":"add-entry","id":326,"timestamp":4442656513,"duration":190043,"tags":{"request":"private-next-pages/_document"},"startTime":1659464441893},{"traceId":"82103cca0a4b1843","parentId":1,"name":"make","id":323,"timestamp":4442615006,"duration":231718,"tags":{},"startTime":1659464441852},{"traceId":"82103cca0a4b1843","parentId":322,"name":"webpack-compilation-chunk-graph","id":360,"timestamp":4442847282,"duration":601,"tags":{},"startTime":1659464442084},{"traceId":"82103cca0a4b1843","parentId":322,"name":"webpack-compilation-optimize-modules","id":362,"timestamp":4442847920,"duration":11,"tags":{},"startTime":1659464442085},{"traceId":"82103cca0a4b1843","parentId":322,"name":"webpack-compilation-optimize-chunks","id":363,"timestamp":4442848027,"duration":206,"tags":{},"startTime":1659464442085},{"traceId":"82103cca0a4b1843","parentId":322,"name":"webpack-compilation-optimize-tree","id":364,"timestamp":4442848353,"duration":48,"tags":{},"startTime":1659464442085},{"traceId":"82103cca0a4b1843","parentId":322,"name":"webpack-compilation-optimize","id":361,"timestamp":4442847905,"duration":653,"tags":{},"startTime":1659464442085},{"traceId":"82103cca0a4b1843","parentId":322,"name":"webpack-compilation-hash","id":365,"timestamp":4442852505,"duration":1884,"tags":{},"startTime":1659464442089},{"traceId":"82103cca0a4b1843","parentId":322,"name":"webpack-compilation-seal","id":359,"timestamp":4442847187,"duration":14654,"tags":{},"startTime":1659464442084},{"traceId":"82103cca0a4b1843","parentId":1,"name":"webpack-compilation","id":322,"timestamp":4442614141,"duration":247791,"tags":{"name":"server"},"startTime":1659464441851},{"traceId":"82103cca0a4b1843","parentId":1,"name":"emit","id":366,"timestamp":4442862019,"duration":10813,"tags":{},"startTime":1659464442099},{"traceId":"82103cca0a4b1843","parentId":1,"name":"make","id":368,"timestamp":4442878431,"duration":1700,"tags":{},"startTime":1659464442115},{"traceId":"82103cca0a4b1843","parentId":367,"name":"webpack-compilation-chunk-graph","id":370,"timestamp":4442880474,"duration":44,"tags":{},"startTime":1659464442117},{"traceId":"82103cca0a4b1843","parentId":367,"name":"webpack-compilation-optimize-modules","id":372,"timestamp":4442880551,"duration":221,"tags":{},"startTime":1659464442117},{"traceId":"82103cca0a4b1843","parentId":367,"name":"webpack-compilation-optimize-chunks","id":373,"timestamp":4442880808,"duration":16,"tags":{},"startTime":1659464442118},{"traceId":"82103cca0a4b1843","parentId":367,"name":"webpack-compilation-optimize-tree","id":374,"timestamp":4442880846,"duration":10,"tags":{},"startTime":1659464442118},{"traceId":"82103cca0a4b1843","parentId":367,"name":"webpack-compilation-optimize","id":371,"timestamp":4442880538,"duration":363,"tags":{},"startTime":1659464442117},{"traceId":"82103cca0a4b1843","parentId":367,"name":"webpack-compilation-hash","id":375,"timestamp":4442881138,"duration":98,"tags":{},"startTime":1659464442118},{"traceId":"82103cca0a4b1843","parentId":367,"name":"webpack-compilation-seal","id":369,"timestamp":4442880393,"duration":1290,"tags":{},"startTime":1659464442117},{"traceId":"82103cca0a4b1843","parentId":1,"name":"webpack-compilation","id":367,"timestamp":4442877089,"duration":4647,"tags":{"name":"edge-server"},"startTime":1659464442114},{"traceId":"82103cca0a4b1843","parentId":1,"name":"emit","id":376,"timestamp":4442881789,"duration":25878,"tags":{},"startTime":1659464442119}]
+[{"traceId":"82103cca0a4b1843","parentId":388,"name":"next-client-pages-loader","id":389,"timestamp":4443568847,"duration":89,"tags":{"absolutePagePath":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\renderer\\pages\\index.tsx"},"startTime":1659464442806},{"traceId":"82103cca0a4b1843","parentId":379,"name":"build-module-tsx&page=%2F!","id":388,"timestamp":4443568592,"duration":1121,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\build\\webpack\\loaders\\next-client-pages-loader.js?absolutePagePath=C%3A%5CUsers%5Cghosh%5COneDrive%5CDocuments%5Cprogams%5Cupscayl%5Crenderer%5Cpages%5Cindex.tsx&page=%2F!"},"startTime":1659464442805},{"traceId":"82103cca0a4b1843","parentId":379,"name":"add-entry","id":381,"timestamp":4443560768,"duration":11689,"tags":{"request":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\compiled\\@next\\react-refresh-utils\\dist\\runtime.js"},"startTime":1659464442798},{"traceId":"82103cca0a4b1843","parentId":379,"name":"add-entry","id":384,"timestamp":4443560909,"duration":12577,"tags":{"request":"next-client-pages-loader?absolutePagePath=private-next-pages%2F_app&page=%2F_app!"},"startTime":1659464442798},{"traceId":"82103cca0a4b1843","parentId":379,"name":"add-entry","id":382,"timestamp":4443560858,"duration":14096,"tags":{"request":"./../node_modules/next/dist/client/dev/amp-dev"},"startTime":1659464442798},{"traceId":"82103cca0a4b1843","parentId":379,"name":"add-entry","id":386,"timestamp":4443560965,"duration":14505,"tags":{"request":"next-client-pages-loader?absolutePagePath=private-next-pages%2F_error&page=%2F_error!"},"startTime":1659464442798},{"traceId":"82103cca0a4b1843","parentId":379,"name":"add-entry","id":385,"timestamp":4443560937,"duration":14598,"tags":{"request":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\router.js"},"startTime":1659464442798},{"traceId":"82103cca0a4b1843","parentId":379,"name":"add-entry","id":383,"timestamp":4443560886,"duration":15166,"tags":{"request":"./../node_modules/next/dist/client/next-dev.js"},"startTime":1659464442798},{"traceId":"82103cca0a4b1843","parentId":391,"name":"next-swc-transform","id":392,"timestamp":4443576963,"duration":12553,"tags":{},"startTime":1659464442814},{"traceId":"82103cca0a4b1843","parentId":390,"name":"next-swc-loader","id":391,"timestamp":4443576902,"duration":12655,"tags":{},"startTime":1659464442814},{"traceId":"82103cca0a4b1843","parentId":388,"name":"build-module-tsx","id":390,"timestamp":4443576782,"duration":23958,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\renderer\\pages\\index.tsx"},"startTime":1659464442814},{"traceId":"82103cca0a4b1843","parentId":393,"name":"read-resource","id":394,"timestamp":4443612973,"duration":2486,"tags":{},"startTime":1659464442850},{"traceId":"82103cca0a4b1843","parentId":390,"name":"build-module-js","id":393,"timestamp":4443612804,"duration":3248,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\link.js"},"startTime":1659464442850},{"traceId":"82103cca0a4b1843","parentId":395,"name":"read-resource","id":396,"timestamp":4443613069,"duration":3509,"tags":{},"startTime":1659464442850},{"traceId":"82103cca0a4b1843","parentId":390,"name":"build-module-js","id":395,"timestamp":4443613017,"duration":4752,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\react\\jsx-dev-runtime.js"},"startTime":1659464442850},{"traceId":"82103cca0a4b1843","parentId":398,"name":"next-swc-transform","id":399,"timestamp":4443614881,"duration":7764,"tags":{},"startTime":1659464442852},{"traceId":"82103cca0a4b1843","parentId":397,"name":"next-swc-loader","id":398,"timestamp":4443614818,"duration":7850,"tags":{},"startTime":1659464442852},{"traceId":"82103cca0a4b1843","parentId":390,"name":"build-module-tsx","id":397,"timestamp":4443614657,"duration":14262,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\renderer\\components\\Layout.tsx"},"startTime":1659464442852},{"traceId":"82103cca0a4b1843","parentId":400,"name":"read-resource","id":401,"timestamp":4443620063,"duration":12387,"tags":{},"startTime":1659464442857},{"traceId":"82103cca0a4b1843","parentId":395,"name":"build-module-js","id":400,"timestamp":4443619958,"duration":51113,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\react\\cjs\\react-jsx-dev-runtime.development.js"},"startTime":1659464442857},{"traceId":"82103cca0a4b1843","parentId":403,"name":"next-swc-transform","id":404,"timestamp":4443621081,"duration":52236,"tags":{},"startTime":1659464442858},{"traceId":"82103cca0a4b1843","parentId":402,"name":"next-swc-loader","id":403,"timestamp":4443620997,"duration":52340,"tags":{},"startTime":1659464442858},{"traceId":"82103cca0a4b1843","parentId":393,"name":"build-module-js","id":402,"timestamp":4443620775,"duration":63612,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\link.js"},"startTime":1659464442858},{"traceId":"82103cca0a4b1843","parentId":405,"name":"read-resource","id":406,"timestamp":4443687258,"duration":3577,"tags":{},"startTime":1659464442924},{"traceId":"82103cca0a4b1843","parentId":397,"name":"build-module-js","id":405,"timestamp":4443687173,"duration":4127,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\head.js"},"startTime":1659464442924},{"traceId":"82103cca0a4b1843","parentId":414,"name":"next-swc-transform","id":415,"timestamp":4443689970,"duration":3153,"tags":{},"startTime":1659464442927},{"traceId":"82103cca0a4b1843","parentId":411,"name":"next-swc-loader","id":414,"timestamp":4443689941,"duration":3196,"tags":{},"startTime":1659464442927},{"traceId":"82103cca0a4b1843","parentId":402,"name":"build-module-js","id":411,"timestamp":4443689768,"duration":5443,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\app-router-context.js"},"startTime":1659464442927},{"traceId":"82103cca0a4b1843","parentId":412,"name":"next-swc-transform","id":413,"timestamp":4443689936,"duration":5752,"tags":{},"startTime":1659464442927},{"traceId":"82103cca0a4b1843","parentId":410,"name":"next-swc-loader","id":412,"timestamp":4443689860,"duration":5900,"tags":{},"startTime":1659464442927},{"traceId":"82103cca0a4b1843","parentId":402,"name":"build-module-js","id":410,"timestamp":4443689663,"duration":8086,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\get-domain-locale.js"},"startTime":1659464442927},{"traceId":"82103cca0a4b1843","parentId":408,"name":"next-swc-transform","id":409,"timestamp":4443689515,"duration":8297,"tags":{},"startTime":1659464442926},{"traceId":"82103cca0a4b1843","parentId":407,"name":"next-swc-loader","id":408,"timestamp":4443689460,"duration":8356,"tags":{},"startTime":1659464442926},{"traceId":"82103cca0a4b1843","parentId":402,"name":"build-module-js","id":407,"timestamp":4443689294,"duration":14576,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\use-intersection.js"},"startTime":1659464442926},{"traceId":"82103cca0a4b1843","parentId":379,"name":"add-entry","id":387,"timestamp":4443560988,"duration":143749,"tags":{"request":"next-client-pages-loader?absolutePagePath=C%3A%5CUsers%5Cghosh%5COneDrive%5CDocuments%5Cprogams%5Cupscayl%5Crenderer%5Cpages%5Cindex.tsx&page=%2F!"},"startTime":1659464442798},{"traceId":"82103cca0a4b1843","parentId":377,"name":"make","id":380,"timestamp":4443556573,"duration":148214,"tags":{},"startTime":1659464442793},{"traceId":"82103cca0a4b1843","parentId":379,"name":"webpack-compilation-chunk-graph","id":417,"timestamp":4443706249,"duration":2810,"tags":{},"startTime":1659464442943},{"traceId":"82103cca0a4b1843","parentId":379,"name":"webpack-compilation-optimize-modules","id":419,"timestamp":4443709107,"duration":12,"tags":{},"startTime":1659464442946},{"traceId":"82103cca0a4b1843","parentId":379,"name":"webpack-compilation-optimize-chunks","id":420,"timestamp":4443709152,"duration":71,"tags":{},"startTime":1659464442946},{"traceId":"82103cca0a4b1843","parentId":379,"name":"webpack-compilation-optimize-tree","id":421,"timestamp":4443709252,"duration":11,"tags":{},"startTime":1659464442946},{"traceId":"82103cca0a4b1843","parentId":379,"name":"webpack-compilation-optimize","id":418,"timestamp":4443709090,"duration":486,"tags":{},"startTime":1659464442946},{"traceId":"82103cca0a4b1843","parentId":379,"name":"webpack-compilation-hash","id":422,"timestamp":4443719725,"duration":8029,"tags":{},"startTime":1659464442957},{"traceId":"82103cca0a4b1843","parentId":379,"name":"NextJsBuildManifest-generateClientManifest","id":424,"timestamp":4443742078,"duration":118,"tags":{},"startTime":1659464442979},{"traceId":"82103cca0a4b1843","parentId":379,"name":"NextJsBuildManifest-createassets","id":423,"timestamp":4443741964,"duration":246,"tags":{},"startTime":1659464442979},{"traceId":"82103cca0a4b1843","parentId":379,"name":"webpack-compilation-seal","id":416,"timestamp":4443705917,"duration":37177,"tags":{},"startTime":1659464442943},{"traceId":"82103cca0a4b1843","parentId":377,"name":"webpack-compilation","id":379,"timestamp":4443555476,"duration":187679,"tags":{"name":"client"},"startTime":1659464442792},{"traceId":"82103cca0a4b1843","parentId":377,"name":"emit","id":425,"timestamp":4443743200,"duration":14413,"tags":{},"startTime":1659464442980},{"traceId":"82103cca0a4b1843","parentId":1,"name":"webpack-invalidated-client","id":377,"timestamp":4443550603,"duration":208248,"tags":{"trigger":"manual"},"startTime":1659464442787},{"traceId":"82103cca0a4b1843","parentId":426,"name":"add-entry","id":428,"timestamp":4443771765,"duration":6425,"tags":{"request":"private-next-pages/_app"},"startTime":1659464443009},{"traceId":"82103cca0a4b1843","parentId":426,"name":"add-entry","id":429,"timestamp":4443771848,"duration":6363,"tags":{"request":"private-next-pages/_error"},"startTime":1659464443009},{"traceId":"82103cca0a4b1843","parentId":426,"name":"add-entry","id":430,"timestamp":4443771871,"duration":9046,"tags":{"request":"private-next-pages/_document"},"startTime":1659464443009},{"traceId":"82103cca0a4b1843","parentId":433,"name":"next-swc-transform","id":434,"timestamp":4443782547,"duration":3330,"tags":{},"startTime":1659464443019},{"traceId":"82103cca0a4b1843","parentId":432,"name":"next-swc-loader","id":433,"timestamp":4443782503,"duration":3386,"tags":{},"startTime":1659464443019},{"traceId":"82103cca0a4b1843","parentId":426,"name":"build-module-tsx","id":432,"timestamp":4443782324,"duration":5383,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\renderer\\pages\\index.tsx"},"startTime":1659464443019},{"traceId":"82103cca0a4b1843","parentId":432,"name":"build-module-react/jsx-dev-runtime","id":435,"timestamp":4443788646,"duration":26,"tags":{"name":"react/jsx-dev-runtime"},"startTime":1659464443026},{"traceId":"82103cca0a4b1843","parentId":436,"name":"read-resource","id":437,"timestamp":4443791051,"duration":2616,"tags":{},"startTime":1659464443028},{"traceId":"82103cca0a4b1843","parentId":432,"name":"build-module-js","id":436,"timestamp":4443790959,"duration":3042,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\link.js"},"startTime":1659464443028},{"traceId":"82103cca0a4b1843","parentId":442,"name":"next-swc-transform","id":443,"timestamp":4443797696,"duration":1561,"tags":{},"startTime":1659464443035},{"traceId":"82103cca0a4b1843","parentId":441,"name":"next-swc-loader","id":442,"timestamp":4443797663,"duration":1613,"tags":{},"startTime":1659464443035},{"traceId":"82103cca0a4b1843","parentId":432,"name":"build-module-tsx","id":441,"timestamp":4443797592,"duration":5007,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\renderer\\components\\Layout.tsx"},"startTime":1659464443034},{"traceId":"82103cca0a4b1843","parentId":439,"name":"next-swc-transform","id":440,"timestamp":4443797177,"duration":7239,"tags":{},"startTime":1659464443034},{"traceId":"82103cca0a4b1843","parentId":438,"name":"next-swc-loader","id":439,"timestamp":4443797138,"duration":7291,"tags":{},"startTime":1659464443034},{"traceId":"82103cca0a4b1843","parentId":436,"name":"build-module-js","id":438,"timestamp":4443797036,"duration":19520,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\link.js"},"startTime":1659464443034},{"traceId":"82103cca0a4b1843","parentId":438,"name":"build-module-/shared/lib/router-context","id":447,"timestamp":4443824038,"duration":38,"tags":{"name":"../shared/lib/router-context"},"startTime":1659464443061},{"traceId":"82103cca0a4b1843","parentId":438,"name":"build-module-/shared/lib/app-router-context","id":448,"timestamp":4443824113,"duration":24,"tags":{"name":"../shared/lib/app-router-context"},"startTime":1659464443061},{"traceId":"82103cca0a4b1843","parentId":453,"name":"next-swc-transform","id":454,"timestamp":4443824327,"duration":2109,"tags":{},"startTime":1659464443061},{"traceId":"82103cca0a4b1843","parentId":446,"name":"next-swc-loader","id":453,"timestamp":4443824291,"duration":2159,"tags":{},"startTime":1659464443061},{"traceId":"82103cca0a4b1843","parentId":438,"name":"build-module-js","id":446,"timestamp":4443823956,"duration":3950,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\add-base-path.js"},"startTime":1659464443061},{"traceId":"82103cca0a4b1843","parentId":449,"name":"next-swc-transform","id":450,"timestamp":4443824240,"duration":3726,"tags":{},"startTime":1659464443061},{"traceId":"82103cca0a4b1843","parentId":444,"name":"next-swc-loader","id":449,"timestamp":4443824185,"duration":3786,"tags":{},"startTime":1659464443061},{"traceId":"82103cca0a4b1843","parentId":438,"name":"build-module-js","id":444,"timestamp":4443823708,"duration":6770,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\add-locale.js"},"startTime":1659464443061},{"traceId":"82103cca0a4b1843","parentId":451,"name":"next-swc-transform","id":452,"timestamp":4443824285,"duration":6244,"tags":{},"startTime":1659464443061},{"traceId":"82103cca0a4b1843","parentId":445,"name":"next-swc-loader","id":451,"timestamp":4443824247,"duration":6286,"tags":{},"startTime":1659464443061},{"traceId":"82103cca0a4b1843","parentId":438,"name":"build-module-js","id":445,"timestamp":4443823869,"duration":7827,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\get-domain-locale.js"},"startTime":1659464443061},{"traceId":"82103cca0a4b1843","parentId":456,"name":"next-swc-transform","id":457,"timestamp":4443824760,"duration":7888,"tags":{},"startTime":1659464443062},{"traceId":"82103cca0a4b1843","parentId":455,"name":"next-swc-loader","id":456,"timestamp":4443824723,"duration":7933,"tags":{},"startTime":1659464443062},{"traceId":"82103cca0a4b1843","parentId":438,"name":"build-module-js","id":455,"timestamp":4443824637,"duration":12423,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\use-intersection.js"},"startTime":1659464443062},{"traceId":"82103cca0a4b1843","parentId":441,"name":"build-module-next/head","id":464,"timestamp":4443842482,"duration":46,"tags":{"name":"next/head"},"startTime":1659464443079},{"traceId":"82103cca0a4b1843","parentId":446,"name":"build-module-/shared/lib/router/utils/add-path-prefix","id":465,"timestamp":4443842723,"duration":26,"tags":{"name":"../shared/lib/router/utils/add-path-prefix"},"startTime":1659464443080},{"traceId":"82103cca0a4b1843","parentId":462,"name":"next-swc-transform","id":463,"timestamp":4443841768,"duration":1929,"tags":{},"startTime":1659464443079},{"traceId":"82103cca0a4b1843","parentId":461,"name":"next-swc-loader","id":462,"timestamp":4443841724,"duration":1987,"tags":{},"startTime":1659464443079},{"traceId":"82103cca0a4b1843","parentId":446,"name":"build-module-js","id":461,"timestamp":4443841580,"duration":3945,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\normalize-trailing-slash.js"},"startTime":1659464443078},{"traceId":"82103cca0a4b1843","parentId":461,"name":"build-module-/shared/lib/router/utils/parse-path","id":466,"timestamp":4443847994,"duration":63,"tags":{"name":"../shared/lib/router/utils/parse-path"},"startTime":1659464443085},{"traceId":"82103cca0a4b1843","parentId":461,"name":"build-module-/shared/lib/router/utils/remove-trailing-slash","id":467,"timestamp":4443848107,"duration":23,"tags":{"name":"../shared/lib/router/utils/remove-trailing-slash"},"startTime":1659464443085},{"traceId":"82103cca0a4b1843","parentId":459,"name":"next-swc-transform","id":460,"timestamp":4443826203,"duration":29385,"tags":{},"startTime":1659464443063},{"traceId":"82103cca0a4b1843","parentId":458,"name":"next-swc-loader","id":459,"timestamp":4443826148,"duration":29456,"tags":{},"startTime":1659464443063},{"traceId":"82103cca0a4b1843","parentId":438,"name":"build-module-js","id":458,"timestamp":4443825942,"duration":73854,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\shared\\lib\\router\\router.js"},"startTime":1659464443063},{"traceId":"82103cca0a4b1843","parentId":458,"name":"build-module-/mitt","id":473,"timestamp":4443919469,"duration":33,"tags":{"name":"../mitt"},"startTime":1659464443156},{"traceId":"82103cca0a4b1843","parentId":458,"name":"build-module-/utils/is-dynamic","id":474,"timestamp":4443919538,"duration":17,"tags":{"name":"./utils/is-dynamic"},"startTime":1659464443156},{"traceId":"82103cca0a4b1843","parentId":458,"name":"build-module-/utils/parse-relative-url","id":475,"timestamp":4443919572,"duration":28,"tags":{"name":"./utils/parse-relative-url"},"startTime":1659464443156},{"traceId":"82103cca0a4b1843","parentId":458,"name":"build-module-/utils/querystring","id":476,"timestamp":4443919615,"duration":14,"tags":{"name":"./utils/querystring"},"startTime":1659464443157},{"traceId":"82103cca0a4b1843","parentId":458,"name":"build-module-/utils/resolve-rewrites","id":477,"timestamp":4443919646,"duration":11,"tags":{"name":"./utils/resolve-rewrites"},"startTime":1659464443157},{"traceId":"82103cca0a4b1843","parentId":458,"name":"build-module-/utils/route-matcher","id":478,"timestamp":4443919669,"duration":11,"tags":{"name":"./utils/route-matcher"},"startTime":1659464443157},{"traceId":"82103cca0a4b1843","parentId":458,"name":"build-module-/utils/route-regex","id":479,"timestamp":4443919692,"duration":10,"tags":{"name":"./utils/route-regex"},"startTime":1659464443157},{"traceId":"82103cca0a4b1843","parentId":458,"name":"build-module-/utils/format-url","id":480,"timestamp":4443919714,"duration":10,"tags":{"name":"./utils/format-url"},"startTime":1659464443157},{"traceId":"82103cca0a4b1843","parentId":458,"name":"build-module-/utils/get-next-pathname-info","id":481,"timestamp":4443919737,"duration":10,"tags":{"name":"./utils/get-next-pathname-info"},"startTime":1659464443157},{"traceId":"82103cca0a4b1843","parentId":458,"name":"build-module-/utils/format-next-pathname-info","id":482,"timestamp":4443919759,"duration":10,"tags":{"name":"./utils/format-next-pathname-info"},"startTime":1659464443157},{"traceId":"82103cca0a4b1843","parentId":458,"name":"build-module-/page-path/denormalize-page-path","id":493,"timestamp":4443921481,"duration":30,"tags":{"name":"../page-path/denormalize-page-path"},"startTime":1659464443158},{"traceId":"82103cca0a4b1843","parentId":458,"name":"build-module-/i18n/normalize-locale-path","id":494,"timestamp":4443921542,"duration":14,"tags":{"name":"../i18n/normalize-locale-path"},"startTime":1659464443158},{"traceId":"82103cca0a4b1843","parentId":489,"name":"next-swc-transform","id":490,"timestamp":4443919939,"duration":1811,"tags":{},"startTime":1659464443157},{"traceId":"82103cca0a4b1843","parentId":471,"name":"next-swc-loader","id":489,"timestamp":4443919912,"duration":1845,"tags":{},"startTime":1659464443157}]
+[{"traceId":"82103cca0a4b1843","parentId":458,"name":"build-module-js","id":471,"timestamp":4443919312,"duration":4467,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\remove-base-path.js"},"startTime":1659464443156},{"traceId":"82103cca0a4b1843","parentId":487,"name":"next-swc-transform","id":488,"timestamp":4443919908,"duration":3926,"tags":{},"startTime":1659464443157},{"traceId":"82103cca0a4b1843","parentId":470,"name":"next-swc-loader","id":487,"timestamp":4443919881,"duration":3958,"tags":{},"startTime":1659464443157},{"traceId":"82103cca0a4b1843","parentId":458,"name":"build-module-js","id":470,"timestamp":4443919222,"duration":5462,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\detect-domain-locale.js"},"startTime":1659464443156},{"traceId":"82103cca0a4b1843","parentId":485,"name":"next-swc-transform","id":486,"timestamp":4443919877,"duration":4845,"tags":{},"startTime":1659464443157},{"traceId":"82103cca0a4b1843","parentId":469,"name":"next-swc-loader","id":485,"timestamp":4443919845,"duration":4881,"tags":{},"startTime":1659464443157},{"traceId":"82103cca0a4b1843","parentId":458,"name":"build-module-js","id":469,"timestamp":4443919142,"duration":8119,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\remove-locale.js"},"startTime":1659464443156},{"traceId":"82103cca0a4b1843","parentId":491,"name":"next-swc-transform","id":492,"timestamp":4443919968,"duration":8730,"tags":{},"startTime":1659464443157},{"traceId":"82103cca0a4b1843","parentId":472,"name":"next-swc-loader","id":491,"timestamp":4443919943,"duration":8763,"tags":{},"startTime":1659464443157},{"traceId":"82103cca0a4b1843","parentId":458,"name":"build-module-js","id":472,"timestamp":4443919397,"duration":10157,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\has-base-path.js"},"startTime":1659464443156},{"traceId":"82103cca0a4b1843","parentId":483,"name":"next-swc-transform","id":484,"timestamp":4443919840,"duration":9796,"tags":{},"startTime":1659464443157},{"traceId":"82103cca0a4b1843","parentId":468,"name":"next-swc-loader","id":483,"timestamp":4443919788,"duration":9852,"tags":{},"startTime":1659464443157},{"traceId":"82103cca0a4b1843","parentId":458,"name":"build-module-js","id":468,"timestamp":4443919003,"duration":16990,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\route-loader.js"},"startTime":1659464443156},{"traceId":"82103cca0a4b1843","parentId":472,"name":"build-module-/shared/lib/router/utils/path-has-prefix","id":496,"timestamp":4443940781,"duration":24,"tags":{"name":"../shared/lib/router/utils/path-has-prefix"},"startTime":1659464443178},{"traceId":"82103cca0a4b1843","parentId":468,"name":"build-module-/shared/lib/router/utils/get-asset-path-from-route","id":497,"timestamp":4443940840,"duration":11,"tags":{"name":"../shared/lib/router/utils/get-asset-path-from-route"},"startTime":1659464443178},{"traceId":"82103cca0a4b1843","parentId":498,"name":"next-swc-transform","id":499,"timestamp":4443940921,"duration":3301,"tags":{},"startTime":1659464443178},{"traceId":"82103cca0a4b1843","parentId":495,"name":"next-swc-loader","id":498,"timestamp":4443940870,"duration":3364,"tags":{},"startTime":1659464443178},{"traceId":"82103cca0a4b1843","parentId":468,"name":"build-module-js","id":495,"timestamp":4443940629,"duration":6154,"tags":{"name":"C:\\Users\\ghosh\\OneDrive\\Documents\\progams\\upscayl\\node_modules\\next\\dist\\client\\trusted-types.js"},"startTime":1659464443178},{"traceId":"82103cca0a4b1843","parentId":458,"name":"build-module-next/dist/compiled/react-is","id":500,"timestamp":4443946889,"duration":19,"tags":{"name":"next/dist/compiled/react-is"},"startTime":1659464443184},{"traceId":"82103cca0a4b1843","parentId":426,"name":"add-entry","id":431,"timestamp":4443771900,"duration":175147,"tags":{"request":"./pages\\index.tsx"},"startTime":1659464443009},{"traceId":"82103cca0a4b1843","parentId":378,"name":"make","id":427,"timestamp":4443761612,"duration":185494,"tags":{},"startTime":1659464442998},{"traceId":"82103cca0a4b1843","parentId":426,"name":"webpack-compilation-chunk-graph","id":502,"timestamp":4443948397,"duration":1763,"tags":{},"startTime":1659464443185},{"traceId":"82103cca0a4b1843","parentId":426,"name":"webpack-compilation-optimize-modules","id":504,"timestamp":4443950365,"duration":16,"tags":{},"startTime":1659464443187},{"traceId":"82103cca0a4b1843","parentId":426,"name":"webpack-compilation-optimize-chunks","id":505,"timestamp":4443950420,"duration":109,"tags":{},"startTime":1659464443187},{"traceId":"82103cca0a4b1843","parentId":426,"name":"webpack-compilation-optimize-tree","id":506,"timestamp":4443950560,"duration":15,"tags":{},"startTime":1659464443187},{"traceId":"82103cca0a4b1843","parentId":426,"name":"webpack-compilation-optimize","id":503,"timestamp":4443950339,"duration":463,"tags":{},"startTime":1659464443187},{"traceId":"82103cca0a4b1843","parentId":426,"name":"webpack-compilation-hash","id":507,"timestamp":4443957584,"duration":1952,"tags":{},"startTime":1659464443194},{"traceId":"82103cca0a4b1843","parentId":426,"name":"webpack-compilation-seal","id":501,"timestamp":4443948157,"duration":25215,"tags":{},"startTime":1659464443185},{"traceId":"82103cca0a4b1843","parentId":378,"name":"webpack-compilation","id":426,"timestamp":4443760795,"duration":212637,"tags":{"name":"server"},"startTime":1659464442998},{"traceId":"82103cca0a4b1843","parentId":378,"name":"emit","id":508,"timestamp":4443973464,"duration":15285,"tags":{},"startTime":1659464443210},{"traceId":"82103cca0a4b1843","parentId":1,"name":"webpack-invalidated-server","id":378,"timestamp":4443551211,"duration":438815,"tags":{"trigger":"manual"},"startTime":1659464442788}]
diff --git a/renderer/pages/index.tsx b/renderer/pages/index.tsx
index 918f9c2..fe28fd7 100644
--- a/renderer/pages/index.tsx
+++ b/renderer/pages/index.tsx
@@ -4,24 +4,24 @@ import Layout from '../components/Layout'
const IndexPage = () => {
useEffect(() => {
- const handleMessage = (_event, args) => alert(args)
+ const handleMessage = (_event:any, args:any) => console.log(args)
// add a listener to 'message' channel
- global.ipcRenderer.addListener('message', handleMessage)
+ global.ipcRenderer.addListener('filename', handleMessage)
return () => {
- global.ipcRenderer.removeListener('message', handleMessage)
+ global.ipcRenderer.removeListener('filename', handleMessage)
}
}, [])
- const onSayHiClick = () => {
- global.ipcRenderer.send('message', 'hi from next')
+ const filePick = () => {
+ global.ipcRenderer.send('file')
}
return (
Hello Next.js 👋
-
+
About