- Redesigned card display with 2.5:3.5 aspect ratio and image-only view - Added infinite scroll to replace pagination - Implemented authentic card back placeholders for MTG, Pokemon, and Lorcana - Added rarity-based particle effects with tiered intensity (mythic/enchanted/rare/uncommon) - Enhanced hover details panel with structured card information - Fixed search functionality with debouncing and Enter key support - Improved filter system with working TCG, rarity, set, and price filters - Added favorite system for cards in both hover and detail views - Updated card detail page with comprehensive metadata and actions - Fixed API filtering with proper Vercel Postgres implementation - Added particle animations and rarity glow effects - Improved overall UX with better visual hierarchy and interactions
125 lines
No EOL
416 KiB
JavaScript
125 lines
No EOL
416 KiB
JavaScript
/*
|
||
* 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/cards"],{
|
||
|
||
/***/ "(pages-dir-browser)/./components/Layout.js":
|
||
/*!******************************!*\
|
||
!*** ./components/Layout.js ***!
|
||
\******************************/
|
||
/***/ ((__webpack_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 */ \"default\": () => (/* binding */ Layout)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(pages-dir-browser)/./node_modules/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(pages-dir-browser)/./node_modules/react/index.js\");\n/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/router */ \"(pages-dir-browser)/./node_modules/next/router.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/link */ \"(pages-dir-browser)/./node_modules/next/link.js\");\n/* harmony import */ var _lib_theme_context__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../lib/theme-context */ \"(pages-dir-browser)/./lib/theme-context.js\");\n\nvar _s = $RefreshSig$();\n\n\n\n\nfunction Layout(param) {\n let { children, user = {\n email: 'me@randallstillwell.com',\n role: 'user'\n } } = param;\n _s();\n const router = (0,next_router__WEBPACK_IMPORTED_MODULE_2__.useRouter)();\n const { theme, toggleTheme } = (0,_lib_theme_context__WEBPACK_IMPORTED_MODULE_4__.useTheme)();\n const [searchQuery, setSearchQuery] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const navigation = [\n {\n name: 'Dashboard',\n href: '/dashboard',\n icon: 'grid',\n active: router.pathname === '/dashboard'\n },\n {\n name: 'My Collection',\n href: '/collections',\n icon: 'collection',\n active: router.pathname === '/collections',\n badge: '247'\n },\n {\n name: 'Cards',\n href: '/cards',\n icon: 'card',\n active: router.pathname === '/cards'\n },\n {\n name: 'Decks',\n href: '/decks',\n icon: 'deck',\n active: router.pathname === '/decks',\n badge: '12'\n },\n {\n name: 'Analytics',\n href: '/analytics',\n icon: 'analytics',\n active: router.pathname === '/analytics'\n },\n {\n name: 'Community',\n href: '/community',\n icon: 'community',\n active: router.pathname === '/community'\n },\n {\n name: 'Settings',\n href: '/settings',\n icon: 'settings',\n active: router.pathname === '/settings'\n },\n {\n name: 'Logout',\n href: '/logout',\n icon: 'logout',\n active: router.pathname === '/logout'\n }\n ];\n const getIcon = (iconName)=>{\n const icons = {\n grid: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M4 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2V6zM14 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V6zM4 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2v-2zM14 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2v-2z\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 26,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 25,\n columnNumber: 9\n }, this),\n collection: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 31,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 30,\n columnNumber: 9\n }, this),\n card: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M3 10h18M7 15h1m4 0h1m-7 4h12a3 3 0 003-3V8a3 3 0 00-3-3H6a3 3 0 00-3 3v8a3 3 0 003 3z\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 36,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 35,\n columnNumber: 9\n }, this),\n deck: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 41,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 40,\n columnNumber: 9\n }, this),\n analytics: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 46,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 45,\n columnNumber: 9\n }, this),\n community: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197m13.5-9a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 51,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 50,\n columnNumber: 9\n }, this),\n settings: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 56,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M15 12a3 3 0 11-6 0 3 3 0 016 0z\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 57,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 55,\n columnNumber: 9\n }, this),\n logout: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 62,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 61,\n columnNumber: 9\n }, this)\n };\n return icons[iconName] || icons.grid;\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex h-screen\",\n style: {\n backgroundColor: 'var(--bg-primary)'\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-64 shadow-lg\",\n style: {\n backgroundColor: 'var(--bg-secondary)',\n borderRight: '1px solid var(--border)'\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center mb-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-10 h-10 logo-container mr-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-white font-bold text-sm\",\n children: \"TCG\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 76,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 75,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-xl font-bold\",\n style: {\n color: 'var(--text-primary)'\n },\n children: \"TCG Vault\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 78,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 74,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"space-y-2\",\n children: navigation.map((item)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_3__, {\n href: item.href,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between px-4 py-3 rounded-2xl transition-all duration-200 cursor-pointer \".concat(item.active ? 'shadow-lg' : 'hover:shadow-md'),\n style: {\n backgroundColor: item.active ? 'var(--bg-tertiary)' : 'transparent',\n color: item.active ? 'var(--text-primary)' : 'var(--text-secondary)'\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"mr-3\",\n children: getIcon(item.icon)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 96,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium\",\n children: item.name\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 97,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 95,\n columnNumber: 19\n }, this),\n item.badge && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"px-2 py-1 text-xs rounded-full font-medium\",\n style: {\n backgroundColor: 'var(--accent-purple)',\n color: 'white'\n },\n children: item.badge\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 100,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 84,\n columnNumber: 17\n }, this)\n }, item.name, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 83,\n columnNumber: 15\n }, this))\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 81,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-4 left-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-10 h-10 logo-container\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-white font-bold text-sm\",\n children: \"N\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 114,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 113,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 112,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 73,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 72,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"p-6\",\n style: {\n backgroundColor: 'var(--bg-secondary)',\n borderBottom: '1px solid var(--border)'\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 max-w-2xl\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n placeholder: \"Search cards, decks, or collections...\",\n className: \"search-bar pr-12\",\n value: searchQuery,\n onChange: (e)=>setSearchQuery(e.target.value)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 128,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-y-0 right-0 flex items-center pr-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm\",\n style: {\n color: 'var(--text-secondary)'\n },\n children: \"⌘F\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 136,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 135,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-y-0 left-0 flex items-center pl-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-5 w-5\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n style: {\n color: 'var(--text-secondary)'\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 140,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 139,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 138,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 127,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 126,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: toggleTheme,\n className: \"theme-toggle\",\n children: theme === 'light' ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 154,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 153,\n columnNumber: 19\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 158,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 157,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 148,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"header-icon\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M3 8l7.89 4.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 164,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 163,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 162,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"header-icon\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M15 17h5l-5 5v-5zM4.5 19.5L9 15m0 0l-4.5-4.5M9 15v5\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 169,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 168,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 167,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-right\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm font-medium\",\n style: {\n color: 'var(--text-primary)'\n },\n children: user.email\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 174,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs\",\n style: {\n color: 'var(--text-secondary)'\n },\n children: user.role\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 175,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 173,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-10 w-10 logo-container\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-white text-sm font-medium\",\n children: user.email.charAt(0).toUpperCase()\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 178,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 177,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 172,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 147,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 124,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 123,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"flex-1 overflow-auto\",\n children: children\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 188,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 121,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/components/Layout.js\",\n lineNumber: 70,\n columnNumber: 5\n }, this);\n}\n_s(Layout, \"tSEnRplo7+WHFmVMqyklhSWHkII=\", false, function() {\n return [\n next_router__WEBPACK_IMPORTED_MODULE_2__.useRouter,\n _lib_theme_context__WEBPACK_IMPORTED_MODULE_4__.useTheme\n ];\n});\n_c = 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 = __webpack_module__.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = __webpack_module__.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== 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, __webpack_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 signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n __webpack_module__.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(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 __webpack_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 (prevSignature !== 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(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n __webpack_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 = prevSignature !== null;\n if (isNoLongerABoundary) {\n __webpack_module__.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1icm93c2VyKS8uL2NvbXBvbmVudHMvTGF5b3V0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQWlDO0FBQ087QUFDWDtBQUNtQjtBQUVqQyxTQUFTSSxPQUFPLEtBQXVFO1FBQXZFLEVBQUVDLFFBQVEsRUFBRUMsT0FBTztRQUFFQyxPQUFPO1FBQTJCQyxNQUFNO0lBQU8sQ0FBQyxFQUFFLEdBQXZFOztJQUM3QixNQUFNQyxTQUFTUixzREFBU0E7SUFDeEIsTUFBTSxFQUFFUyxLQUFLLEVBQUVDLFdBQVcsRUFBRSxHQUFHUiw0REFBUUE7SUFDdkMsTUFBTSxDQUFDUyxhQUFhQyxlQUFlLEdBQUdiLCtDQUFRQSxDQUFDO0lBRS9DLE1BQU1jLGFBQWE7UUFDakI7WUFBRUMsTUFBTTtZQUFhQyxNQUFNO1lBQWNDLE1BQU07WUFBUUMsUUFBUVQsT0FBT1UsUUFBUSxLQUFLO1FBQWE7UUFDaEc7WUFBRUosTUFBTTtZQUFpQkMsTUFBTTtZQUFnQkMsTUFBTTtZQUFjQyxRQUFRVCxPQUFPVSxRQUFRLEtBQUs7WUFBZ0JDLE9BQU87UUFBTTtRQUM1SDtZQUFFTCxNQUFNO1lBQVNDLE1BQU07WUFBVUMsTUFBTTtZQUFRQyxRQUFRVCxPQUFPVSxRQUFRLEtBQUs7UUFBUztRQUNwRjtZQUFFSixNQUFNO1lBQVNDLE1BQU07WUFBVUMsTUFBTTtZQUFRQyxRQUFRVCxPQUFPVSxRQUFRLEtBQUs7WUFBVUMsT0FBTztRQUFLO1FBQ2pHO1lBQUVMLE1BQU07WUFBYUMsTUFBTTtZQUFjQyxNQUFNO1lBQWFDLFFBQVFULE9BQU9VLFFBQVEsS0FBSztRQUFhO1FBQ3JHO1lBQUVKLE1BQU07WUFBYUMsTUFBTTtZQUFjQyxNQUFNO1lBQWFDLFFBQVFULE9BQU9VLFFBQVEsS0FBSztRQUFhO1FBQ3JHO1lBQUVKLE1BQU07WUFBWUMsTUFBTTtZQUFhQyxNQUFNO1lBQVlDLFFBQVFULE9BQU9VLFFBQVEsS0FBSztRQUFZO1FBQ2pHO1lBQUVKLE1BQU07WUFBVUMsTUFB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LFNBQVE7MERBQ2pFLDRFQUFDQztvREFBS0MsZUFBYztvREFBUUMsZ0JBQWU7b0RBQVFDLGFBQWE7b0RBQUdDLEdBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7c0RBR3pFLDhEQUFDUTs0Q0FBSWhCLFdBQVU7OzhEQUNiLDhEQUFDZ0I7b0RBQUloQixXQUFVOztzRUFDYiw4REFBQ3FDOzREQUFFckMsV0FBVTs0REFBc0JpQixPQUFPO2dFQUFFSyxPQUFPOzREQUFzQjtzRUFBSTFDLEtBQUtDLEtBQUs7Ozs7OztzRUFDdkYsOERBQUN3RDs0REFBRXJDLFdBQVU7NERBQVVpQixPQUFPO2dFQUFFSyxPQUFPOzREQUF3QjtzRUFBSTFDLEtBQUtFLElBQUk7Ozs7Ozs7Ozs7Ozs4REFFOUUsOERBQUNrQztvREFBSWhCLFdBQVU7OERBQ2IsNEVBQUNvQjt3REFBS3BCLFdBQVU7a0VBQ2JwQixLQUFLQyxLQUFLLENBQUN5RCxNQUFNLENBQUMsR0FBR0MsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQ0FTN0MsOERBQUNDO3dCQUFLeEMsV0FBVTtrQ0FDYnJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLWDtHQTVMd0JEOztRQUNQSCxrREFBU0E7UUFDT0Usd0RBQVFBOzs7S0FGakJDIiwic291cmNlcyI6WyIvVXNlcnMvcnN0aWxsdy9Eb2N1bWVudHMvdGNnLXZhdWx0L2NvbXBvbmVudHMvTGF5b3V0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlUm91dGVyIH0gZnJvbSAnbmV4dC9yb3V0ZXInO1xuaW1wb3J0IExpbmsgZnJvbSAnbmV4dC9saW5rJztcbmltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSAnLi4vbGliL3RoZW1lLWNvbnRleHQnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMYXlvdXQoeyBjaGlsZHJlbiwgdXNlciA9IHsgZW1haWw6ICdtZUByYW5kYWxsc3RpbGx3ZWxsLmNvbScsIHJvbGU6ICd1c2VyJyB9IH0pIHtcbiAgY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKCk7XG4gIGNvbnN0IHsgdGhlbWUsIHRvZ2dsZVRoZW1lIH0gPSB1c2VUaGVtZSgpO1xuICBjb25zdCBbc2VhcmNoUXVlcnksIHNldFNlYXJjaFF1ZXJ5XSA9IHVzZVN0YXRlKCcnKTtcblxuICBjb25zdCBuYXZpZ2F0aW9uID0gW1xuICAgIHsgbmFtZTogJ0Rhc2hib2FyZCcsIGhyZWY6ICcvZGFzaGJvYXJkJywgaWNvbjogJ2dyaWQnLCBhY3RpdmU6IHJvdXRlci5wYXRobmFtZSA9PT0gJy9kYXNoYm9hcmQnIH0sXG4gICAgeyBuYW1lOiAnTXkgQ29sbGVjdGlvbicsIGhyZWY6ICcvY29sbGVjdGlvbnMnLCBpY29uOiAnY29sbGVjdGlvbicsIGFjdGl2ZTogcm91dGVyLnBhdGhuYW1lID09PSAnL2NvbGxlY3Rpb25zJywgYmFkZ2U6ICcyNDcnIH0sXG4gICAgeyBuYW1lOiAnQ2FyZHMnLCBocmVmOiAnL2NhcmRzJywgaWNvbjogJ2NhcmQnLCBhY3RpdmU6IHJvdXRlci5wYXRobmFtZSA9PT0gJy9jYXJkcycgfSxcbiAgICB7IG5hbWU6ICdEZWNrcycsIGhyZWY6ICcvZGVja3MnLCBpY29uOiAnZGVjaycsIGFjdGl2ZTogcm91dGVyLnBhdGhuYW1lID09PSAnL2RlY2tzJywgYmFkZ2U6ICcxMicgfSxcbiAgICB7IG5hbWU6ICdBbmFseXRpY3MnLCBocmVmOiAnL2FuYWx5dGljcycsIGljb246ICdhbmFseXRpY3MnLCBhY3RpdmU6IHJvdXRlci5wYXRobmFtZSA9PT0gJy9hbmFseXRpY3MnIH0sXG4gICAgeyBuYW1lOiAnQ29tbXVuaXR5JywgaHJlZjogJy9jb21tdW5pdHknLCBpY29uOiAnY29tbXVuaXR5JywgYWN0aXZlOiByb3V0ZXIucGF0aG5hbWUgPT09ICcvY29tbXVuaXR5JyB9LFxuICAgIHsgbmFtZTogJ1NldHRpbmdzJywgaHJlZjogJy9zZXR0aW5ncycsIGljb246ICdzZXR0aW5ncycsIGFjdGl2ZTogcm91dGVyLnBhdGhuYW1lID09PSAnL3NldHRpbmdzJyB9LFxuICAgIHsgbmFtZTogJ0xvZ291dCcsIGhyZWY6ICcvbG9nb3V0JywgaWNvbjogJ2xvZ291dCcsIGFjdGl2ZTogcm91dGVyLnBhdGhuYW1lID09PSAnL2xvZ291dCcgfVxuICBdO1xuXG4gIGNvbnN0IGdldEljb24gPSAoaWNvbk5hbWUpID0+IHtcbiAgICBjb25zdCBpY29ucyA9IHtcbiAgICAgIGdyaWQ6IChcbiAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJoLTYgdy02XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZVdpZHRoPXsyfSBkPVwiTTQgNmEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAySDZhMiAyIDAgMDEtMi0yVjZ6TTE0IDZhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMnYyYTIgMiAwIDAxLTIgMmgtMmEyIDIgMCAwMS0yLTJWNnpNNCAxNmEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAySDZhMiAyIDAgMDEtMi0ydi0yek0xNCAxNmEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjJhMiAyIDAgMDEtMiAyaC0yYTIgMiAwIDAxLTItMnYtMnpcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICksXG4gICAgICBjb2xsZWN0aW9uOiAoXG4gICAgICAgIDxzdmcgY2xhc3NOYW1lPVwiaC02IHctNlwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk0yMCA3bC04LTQtOCA0bTE2IDBsLTggNG04LTR2MTBsLTggNG0wLTEwTDQgN204IDR2MTBNNCA3djEwbDggNFwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgKSxcbiAgICAgIGNhcmQ6IChcbiAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJoLTYgdy02XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZVdpZHRoPXsyfSBkPVwiTTMgMTBoMThNNyAxNWgxbTQgMGgxbS03IDRoMTJhMyAzIDAgMDAzLTNWOGEzIDMgMCAwMC0zLTNINmEzIDMgMCAwMC0zIDN2OGEzIDMgMCAwMDMgM3pcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICksXG4gICAgICBkZWNrOiAoXG4gICAgICAgIDxzdmcgY2xhc3NOYW1lPVwiaC02IHctNlwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk0xOSAxMUg1bTE0IDBhMiAyIDAgMDEyIDJ2NmEyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJ2LTZhMiAyIDAgMDEyLTJtMTQgMFY5YTIgMiAwIDAwLTItMk01IDExVjlhMiAyIDAgMDEyLTJtMCAwVjVhMiAyIDAgMDEyLTJoNmEyIDIgMCAwMTIgMnYyTTcgN2gxMFwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgKSxcbiAgICAgIGFuYWx5dGljczogKFxuICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cImgtNiB3LTZcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNOSAxOXYtNmEyIDIgMCAwMC0yLTJINWEyIDIgMCAwMC0yIDJ2NmEyIDIgMCAwMDIgMmgyYTIgMiAwIDAwMi0yem0wIDBWOWEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjEwbS02IDBhMiAyIDAgMDAyIDJoMmEyIDIgMCAwMDItMm0wIDBWNWEyIDIgMCAwMTItMmgyYTIgMiAwIDAxMiAydjE0YTIgMiAwIDAxLTIgMmgtMmEyIDIgMCAwMS0yLTJ6XCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICApLFxuICAgICAgY29tbXVuaXR5OiAoXG4gICAgICAgIDxzdmcgY2xhc3NOYW1lPVwiaC02IHctNlwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk0xMiA0LjM1NGE0IDQgMCAxMTAgNS4yOTJNMTUgMjFIM3YtMWE2IDYgMCAwMTEyIDB2MXptMCAwaDZ2LTFhNiA2IDAgMDAtOS01LjE5N20xMy41LTlhMi41IDIuNSAwIDExLTUgMCAyLjUgMi41IDAgMDE1IDB6XCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICApLFxuICAgICAgc2V0dGluZ3M6IChcbiAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJoLTYgdy02XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZVdpZHRoPXsyfSBkPVwiTTEwLjMyNSA0LjMxN2MuNDI2LTEuNzU2IDIuOTI0LTEuNzU2IDMuMzUgMGExLjcyNCAxLjcyNCAwIDAwMi41NzMgMS4wNjZjMS41NDMtLjk0IDMuMzEuODI2IDIuMzcgMi4zN2ExLjcyNCAxLjcyNCAwIDAwMS4wNjUgMi41NzJjMS43NTYuNDI2IDEuNzU2IDIuOTI0IDAgMy4zNWExLjcyNCAxLjcyNCAwIDAwLTEuMDY2IDIuNTczYy45NCAxLjU0My0uODI2IDMuMzEtMi4zNyAyLjM3YTEuNzI0IDEuNzI0IDAgMDAtMi41NzIgMS4wNjVjLS40MjYgMS43NTYtMi45MjQgMS43NTYtMy4zNSAwYTEuNzI0IDEuNzI0IDAgMDAtMi41NzMtMS4wNjZjLTEuNTQzLjk0LTMuMzEtLjgyNi0yLjM3LTIuMzdhMS43MjQgMS43MjQgMCAwMC0xLjA2NS0yLjU3MmMtMS43NTYtLjQyNi0xLjc1Ni0yLjkyNCAwLTMuMzVhMS43MjQgMS43MjQgMCAwMDEuMDY2LTIuNTczYy0uOTQtMS41NDMuODI2LTMuMzEgMi4zNy0yLjM3Ljk5Ni42MDggMi4yOTYuMDcgMi41NzItMS4wNjV6XCIgLz5cbiAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMTUgMTJhMyAzIDAgMTEtNiAwIDMgMyAwIDAxNiAwelwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgKSxcbiAgICAgIGxvZ291dDogKFxuICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cImgtNiB3LTZcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMTcgMTZsNC00bTAgMGwtNC00bTQgNEg3bTYgNHYxYTMgMyAwIDAxLTMgM0g2YTMgMyAwIDAxLTMtM1Y3YTMgMyAwIDAxMy0zaDRhMyAzIDAgMDEzIDN2MVwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgKVxuICAgIH07XG4gICAgcmV0dXJuIGljb25zW2ljb25OYW1lXSB8fCBpY29ucy5ncmlkO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGgtc2NyZWVuXCIgc3R5bGU9e3sgYmFja2dyb3VuZENvbG9yOiAndmFyKC0tYmctcHJpbWFyeSknIH19PlxuICAgICAgey8qIExlZnQgU2lkZWJhciAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy02NCBzaGFkb3ctbGdcIiBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6ICd2YXIoLS1iZy1zZWNvbmRhcnkpJywgYm9yZGVyUmlnaHQ6ICcxcHggc29saWQgdmFyKC0tYm9yZGVyKScgfX0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC00XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBtYi04XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMTAgaC0xMCBsb2dvLWNvbnRhaW5lciBtci0zXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtd2hpdGUgZm9udC1ib2xkIHRleHQtc21cIj5UQ0c8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LXhsIGZvbnQtYm9sZFwiIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tdGV4dC1wcmltYXJ5KScgfX0+VENHIFZhdWx0PC9oMT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBcbiAgICAgICAgICA8bmF2IGNsYXNzTmFtZT1cInNwYWNlLXktMlwiPlxuICAgICAgICAgICAge25hdmlnYXRpb24ubWFwKChpdGVtKSA9PiAoXG4gICAgICAgICAgICAgIDxMaW5rIGtleT17aXRlbS5uYW1lfSBocmVmPXtpdGVtLmhyZWZ9PlxuICAgICAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtNCBweS0zIHJvdW5kZWQtMnhsIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMCBjdXJzb3ItcG9pbnRlciAke1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmFjdGl2ZSBcbiAgICAgICAgICAgICAgICAgICAgICA/ICdzaGFkb3ctbGcnIFxuICAgICAgICAgICAgICAgICAgICAgIDogJ2hvdmVyOnNoYWRvdy1tZCdcbiAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpdGVtLmFjdGl2ZSA/ICd2YXIoLS1iZy10ZXJ0aWFyeSknIDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IGl0ZW0uYWN0aXZlID8gJ3ZhcigtLXRleHQtcHJpbWFyeSknIDogJ3ZhcigtLXRleHQtc2Vjb25kYXJ5KSdcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtci0zXCI+e2dldEljb24oaXRlbS5pY29uKX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtXCI+e2l0ZW0ubmFtZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIHtpdGVtLmJhZGdlICYmIChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHgtMiBweS0xIHRleHQteHMgcm91bmRlZC1mdWxsIGZvbnQtbWVkaXVtXCJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6ICd2YXIoLS1hY2NlbnQtcHVycGxlKScsIGNvbG9yOiAnd2hpdGUnIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7aXRlbS5iYWRnZX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9uYXY+XG4gICAgICAgICAgXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBib3R0b20tNCBsZWZ0LTRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0xMCBoLTEwIGxvZ28tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtd2hpdGUgZm9udC1ib2xkIHRleHQtc21cIj5OPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBNYWluIENvbnRlbnQgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgIHsvKiBUb3AgSGVhZGVyICovfVxuICAgICAgICA8aGVhZGVyIGNsYXNzTmFtZT1cInAtNlwiIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogJ3ZhcigtLWJnLXNlY29uZGFyeSknLCBib3JkZXJCb3R0b206ICcxcHggc29saWQgdmFyKC0tYm9yZGVyKScgfX0+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgIHsvKiBTZWFyY2ggQmFyICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgbWF4LXctMnhsXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGNhcmRzLCBkZWNrcywgb3IgY29sbGVjdGlvbnMuLi5cIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwic2VhcmNoLWJhciBwci0xMlwiXG4gICAgICAgICAgICAgICAgICB2YWx1ZT17c2VhcmNoUXVlcnl9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFNlYXJjaFF1ZXJ5KGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQteS0wIHJpZ2h0LTAgZmxleCBpdGVtcy1jZW50ZXIgcHItNFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbVwiIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tdGV4dC1zZWNvbmRhcnkpJyB9fT7ijJhGPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQteS0wIGxlZnQtMCBmbGV4IGl0ZW1zLWNlbnRlciBwbC00XCI+XG4gICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cImgtNSB3LTVcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLXRleHQtc2Vjb25kYXJ5KScgfX0+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk0yMSAyMWwtNi02bTItNWE3IDcgMCAxMS0xNCAwIDcgNyAwIDAxMTQgMHpcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIHsvKiBSaWdodCBTaWRlICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTRcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXt0b2dnbGVUaGVtZX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0aGVtZS10b2dnbGVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3RoZW1lID09PSAnbGlnaHQnID8gKFxuICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJoLTYgdy02XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk0yMC4zNTQgMTUuMzU0QTkgOSAwIDAxOC42NDYgMy42NDYgOS4wMDMgOS4wMDMgMCAwMDEyIDIxYTkuMDAzIDkuMDAzIDAgMDA4LjM1NC01LjY0NnpcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwiaC02IHctNlwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMTIgM3YxbTAgMTZ2MW05LTloLTFNNCAxMkgzbTE1LjM2NCA2LjM2NGwtLjcwNy0uNzA3TTYuMzQzIDYuMzQzbC0uNzA3LS43MDdtMTIuNzI4IDBsLS43MDcuNzA3TTYuMzQzIDE3LjY1N2wtLjcwNy43MDdNMTYgMTJhNCA0IDAgMTEtOCAwIDQgNCAwIDAxOCAwelwiIC8+XG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJoZWFkZXItaWNvblwiPlxuICAgICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwiaC02IHctNlwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZVdpZHRoPXsyfSBkPVwiTTMgOGw3Ljg5IDQuMjZhMiAyIDAgMDAyLjIyIDBMMjEgOE01IDE5aDE0YTIgMiAwIDAwMi0yVjdhMiAyIDAgMDAtMi0ySDVhMiAyIDAgMDAtMiAydjEwYTIgMiAwIDAwMiAyelwiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cImhlYWRlci1pY29uXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJoLTYgdy02XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMTUgMTdoNWwtNSA1di01ek00LjUgMTkuNUw5IDE1bTAgMGwtNC41LTQuNU05IDE1djVcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1tZWRpdW1cIiBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLXRleHQtcHJpbWFyeSknIH19Pnt1c2VyLmVtYWlsfTwvcD5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHNcIiBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLXRleHQtc2Vjb25kYXJ5KScgfX0+e3VzZXIucm9sZX08L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLTEwIHctMTAgbG9nby1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtd2hpdGUgdGV4dC1zbSBmb250LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICB7dXNlci5lbWFpbC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgey8qIFBhZ2UgQ29udGVudCAqL31cbiAgICAgICAgPG1haW4gY2xhc3NOYW1lPVwiZmxleC0xIG92ZXJmbG93LWF1dG9cIj5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvbWFpbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufSAiXSwibmFtZXMiOlsidXNlU3RhdGUiLCJ1c2VSb3V0ZXIiLCJMaW5rIiwidXNlVGhlbWUiLCJMYXlvdXQiLCJjaGlsZHJlbiIsInVzZXIiLCJlbWFpbCIsInJvbGUiLCJyb3V0ZXIiLCJ0aGVtZSIsInRvZ2dsZVRoZW1lIiwic2VhcmNoUXVlcnkiLCJzZXRTZWFyY2hRdWVyeSIsIm5hdmlnYXRpb24iLCJuYW1lIiwiaHJlZiIsImljb24iLCJhY3RpdmUiLCJwYXRobmFtZSIsImJhZGdlIiwiZ2V0SWNvbiIsImljb25OYW1lIiwiaWNvbnMiLCJncmlkIiwic3ZnIiwiY2xhc3NOYW1lIiwiZmlsbCIsInN0cm9rZSIsInZpZXdCb3giLCJwYXRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwic3Ryb2tlV2lkdGgiLCJkIiwiY29sbGVjdGlvbiIsImNhcmQiLCJkZWNrIiwiYW5hbHl0aWNzIiwiY29tbXVuaXR5Iiwic2V0dGluZ3MiLCJsb2dvdXQiLCJkaXYiLCJzdHlsZSIsImJhY2tncm91bmRDb2xvciIsImJvcmRlclJpZ2h0Iiwic3BhbiIsImgxIiwiY29sb3IiLCJuYXYiLCJtYXAiLCJpdGVtIiwiaGVhZGVyIiwiYm9yZGVyQm90dG9tIiwiaW5wdXQiLCJ0eXBlIiwicGxhY2Vob2xkZXIiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwiZSIsInRhcmdldCIsImJ1dHRvbiIsIm9uQ2xpY2siLCJwIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJtYWluIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(pages-dir-browser)/./components/Layout.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(pages-dir-browser)/./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2FUsers%2Frstillw%2FDocuments%2Ftcg-vault%2Fpages%2Fcards.js&page=%2Fcards!":
|
||
/*!********************************************************************************************************************************************************************************!*\
|
||
!*** ./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2FUsers%2Frstillw%2FDocuments%2Ftcg-vault%2Fpages%2Fcards.js&page=%2Fcards! ***!
|
||
\********************************************************************************************************************************************************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
eval(__webpack_require__.ts("\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/cards\",\n function () {\n return __webpack_require__(/*! ./pages/cards.js */ \"(pages-dir-browser)/./pages/cards.js\");\n }\n ]);\n if(true) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/cards\"])\n });\n }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvd2VicGFjay9sb2FkZXJzL25leHQtY2xpZW50LXBhZ2VzLWxvYWRlci5qcz9hYnNvbHV0ZVBhZ2VQYXRoPSUyRlVzZXJzJTJGcnN0aWxsdyUyRkRvY3VtZW50cyUyRnRjZy12YXVsdCUyRnBhZ2VzJTJGY2FyZHMuanMmcGFnZT0lMkZjYXJkcyEiLCJtYXBwaW5ncyI6IjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsbUJBQU8sQ0FBQyw4REFBa0I7QUFDekM7QUFDQTtBQUNBLE9BQU8sSUFBVTtBQUNqQixNQUFNLFVBQVU7QUFDaEI7QUFDQSxPQUFPO0FBQ1A7QUFDQSIsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICh3aW5kb3cuX19ORVhUX1AgPSB3aW5kb3cuX19ORVhUX1AgfHwgW10pLnB1c2goW1xuICAgICAgXCIvY2FyZHNcIixcbiAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHJlcXVpcmUoXCIuL3BhZ2VzL2NhcmRzLmpzXCIpO1xuICAgICAgfVxuICAgIF0pO1xuICAgIGlmKG1vZHVsZS5ob3QpIHtcbiAgICAgIG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHdpbmRvdy5fX05FWFRfUC5wdXNoKFtcIi9jYXJkc1wiXSlcbiAgICAgIH0pO1xuICAgIH1cbiAgIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-browser)/./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2FUsers%2Frstillw%2FDocuments%2Ftcg-vault%2Fpages%2Fcards.js&page=%2Fcards!\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(pages-dir-browser)/./node_modules/next/dist/client/get-domain-locale.js":
|
||
/*!************************************************************!*\
|
||
!*** ./node_modules/next/dist/client/get-domain-locale.js ***!
|
||
\************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"getDomainLocale\", ({\n enumerable: true,\n get: function() {\n return getDomainLocale;\n }\n}));\nconst _normalizetrailingslash = __webpack_require__(/*! ./normalize-trailing-slash */ \"(pages-dir-browser)/./node_modules/next/dist/client/normalize-trailing-slash.js\");\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\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 prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== 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 signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(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 (prevSignature !== 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(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(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 = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2dldC1kb21haW4tbG9jYWxlLmpzIiwibWFwcGluZ3MiOiI7Ozs7bURBT2dCQTs7O2VBQUFBOzs7b0RBSjJCO0FBRTNDLE1BQU1DLFdBQVlDLE1BQWtDLElBQWU7QUFFNUQsU0FBU0YsZ0JBQ2RLLElBQVksRUFDWkMsTUFBdUIsRUFDdkJDLE9BQTJCLEVBQzNCQyxhQUF1QztJQUV2QyxJQUFJTixLQUErQixFQUFFLEVBa0JwQyxNQUFNO1FBQ0wsT0FBTztJQUNUO0FBQ0YiLCJzb3VyY2VzIjpbIi9Vc2Vycy9yc3RpbGx3L3NyYy9jbGllbnQvZ2V0LWRvbWFpbi1sb2NhbGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEb21haW5Mb2NhbGUgfSBmcm9tICcuLi9zZXJ2ZXIvY29uZmlnJ1xuaW1wb3J0IHR5cGUgeyBub3JtYWxpemVMb2NhbGVQYXRoIGFzIE5vcm1hbGl6ZUZuIH0gZnJvbSAnLi9ub3JtYWxpemUtbG9jYWxlLXBhdGgnXG5pbXBvcnQgdHlwZSB7IGRldGVjdERvbWFpbkxvY2FsZSBhcyBEZXRlY3RGbiB9IGZyb20gJy4vZGV0ZWN0LWRvbWFpbi1sb2NhbGUnXG5pbXBvcnQgeyBub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaCB9IGZyb20gJy4vbm9ybWFsaXplLXRyYWlsaW5nLXNsYXNoJ1xuXG5jb25zdCBiYXNlUGF0aCA9IChwcm9jZXNzLmVudi5fX05FWFRfUk9VVEVSX0JBU0VQQVRIIGFzIHN0cmluZykgfHwgJydcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERvbWFpbkxvY2FsZShcbiAgcGF0aDogc3RyaW5nLFxuICBsb2NhbGU/OiBzdHJpbmcgfCBmYWxzZSxcbiAgbG9jYWxlcz86IHJlYWRvbmx5IHN0cmluZ1tdLFxuICBkb21haW5Mb2NhbGVzPzogcmVhZG9ubHkgRG9tYWluTG9jYWxlW11cbikge1xuICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgIGNvbnN0IG5vcm1hbGl6ZUxvY2FsZVBhdGg6IHR5cGVvZiBOb3JtYWxpemVGbiA9IChcbiAgICAgIHJlcXVpcmUoJy4vbm9ybWFsaXplLWxvY2FsZS1wYXRoJykgYXMgdHlwZW9mIGltcG9ydCgnLi9ub3JtYWxpemUtbG9jYWxlLXBhdGgnKVxuICAgICkubm9ybWFsaXplTG9jYWxlUGF0aFxuICAgIGNvbnN0IGRldGVjdERvbWFpbkxvY2FsZTogdHlwZW9mIERldGVjdEZuID0gKFxuICAgICAgcmVxdWlyZSgnLi9kZXRlY3QtZG9tYWluLWxvY2FsZScpIGFzIHR5cGVvZiBpbXBvcnQoJy4vZGV0ZWN0LWRvbWFpbi1sb2NhbGUnKVxuICAgICkuZGV0ZWN0RG9tYWluTG9jYWxlXG5cbiAgICBjb25zdCB0YXJnZXQgPSBsb2NhbGUgfHwgbm9ybWFsaXplTG9jYWxlUGF0aChwYXRoLCBsb2NhbGVzKS5kZXRlY3RlZExvY2FsZVxuICAgIGNvbnN0IGRvbWFpbiA9IGRldGVjdERvbWFpbkxvY2FsZShkb21haW5Mb2NhbGVzLCB1bmRlZmluZWQsIHRhcmdldClcbiAgICBpZiAoZG9tYWluKSB7XG4gICAgICBjb25zdCBwcm90byA9IGBodHRwJHtkb21haW4uaHR0cCA/ICcnIDogJ3MnfTovL2BcbiAgICAgIGNvbnN0IGZpbmFsTG9jYWxlID0gdGFyZ2V0ID09PSBkb21haW4uZGVmYXVsdExvY2FsZSA/ICcnIDogYC8ke3RhcmdldH1gXG4gICAgICByZXR1cm4gYCR7cHJvdG99JHtkb21haW4uZG9tYWlufSR7bm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2goXG4gICAgICAgIGAke2Jhc2VQYXRofSR7ZmluYWxMb2NhbGV9JHtwYXRofWBcbiAgICAgICl9YFxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuIl0sIm5hbWVzIjpbImdldERvbWFpbkxvY2FsZSIsImJhc2VQYXRoIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9ST1VURVJfQkFTRVBBVEgiLCJwYXRoIiwibG9jYWxlIiwibG9jYWxlcyIsImRvbWFpbkxvY2FsZXMiLCJfX05FWFRfSTE4Tl9TVVBQT1JUIiwibm9ybWFsaXplTG9jYWxlUGF0aCIsInJlcXVpcmUiLCJkZXRlY3REb21haW5Mb2NhbGUiLCJ0YXJnZXQiLCJkZXRlY3RlZExvY2FsZSIsImRvbWFpbiIsInVuZGVmaW5lZCIsInByb3RvIiwiaHR0cCIsImZpbmFsTG9jYWxlIiwiZGVmYXVsdExvY2FsZSIsIm5vcm1hbGl6ZVBhdGhUcmFpbGluZ1NsYXNoIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(pages-dir-browser)/./node_modules/next/dist/client/get-domain-locale.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(pages-dir-browser)/./node_modules/next/dist/client/link.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/next/dist/client/link.js ***!
|
||
\***********************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("/* __next_internal_client_entry_do_not_use__ cjs */ \nvar _s = $RefreshSig$();\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n default: function() {\n return _default;\n },\n useLinkStatus: function() {\n return useLinkStatus;\n }\n});\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(pages-dir-browser)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(pages-dir-browser)/./node_modules/react/jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(pages-dir-browser)/./node_modules/react/index.js\"));\nconst _resolvehref = __webpack_require__(/*! ./resolve-href */ \"(pages-dir-browser)/./node_modules/next/dist/client/resolve-href.js\");\nconst _islocalurl = __webpack_require__(/*! ../shared/lib/router/utils/is-local-url */ \"(pages-dir-browser)/./node_modules/next/dist/shared/lib/router/utils/is-local-url.js\");\nconst _formaturl = __webpack_require__(/*! ../shared/lib/router/utils/format-url */ \"(pages-dir-browser)/./node_modules/next/dist/shared/lib/router/utils/format-url.js\");\nconst _utils = __webpack_require__(/*! ../shared/lib/utils */ \"(pages-dir-browser)/./node_modules/next/dist/shared/lib/utils.js\");\nconst _addlocale = __webpack_require__(/*! ./add-locale */ \"(pages-dir-browser)/./node_modules/next/dist/client/add-locale.js\");\nconst _routercontextsharedruntime = __webpack_require__(/*! ../shared/lib/router-context.shared-runtime */ \"(pages-dir-browser)/./node_modules/next/dist/shared/lib/router-context.shared-runtime.js\");\nconst _useintersection = __webpack_require__(/*! ./use-intersection */ \"(pages-dir-browser)/./node_modules/next/dist/client/use-intersection.js\");\nconst _getdomainlocale = __webpack_require__(/*! ./get-domain-locale */ \"(pages-dir-browser)/./node_modules/next/dist/client/get-domain-locale.js\");\nconst _addbasepath = __webpack_require__(/*! ./add-base-path */ \"(pages-dir-browser)/./node_modules/next/dist/client/add-base-path.js\");\nconst _usemergedref = __webpack_require__(/*! ./use-merged-ref */ \"(pages-dir-browser)/./node_modules/next/dist/client/use-merged-ref.js\");\nconst _erroronce = __webpack_require__(/*! ../shared/lib/utils/error-once */ \"(pages-dir-browser)/./node_modules/next/dist/shared/lib/utils/error-once.js\");\nconst prefetched = new Set();\nfunction prefetch(router, href, as, options) {\n if (false) {}\n if (!(0, _islocalurl.isLocalURL)(href)) {\n return;\n }\n // We should only dedupe requests when experimental.optimisticClientCache is\n // disabled.\n if (!options.bypassPrefetchedCheck) {\n const locale = typeof options.locale !== 'undefined' ? options.locale : 'locale' in router ? router.locale : undefined;\n const prefetchedKey = href + '%' + as + '%' + locale;\n // If we've already fetched the key, then don't prefetch it again!\n if (prefetched.has(prefetchedKey)) {\n return;\n }\n // Mark this URL as prefetched.\n prefetched.add(prefetchedKey);\n }\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}\nfunction isModifiedEvent(event) {\n const eventTarget = event.currentTarget;\n const target = eventTarget.getAttribute('target');\n return target && target !== '_self' || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || // triggers resource download\n event.nativeEvent && event.nativeEvent.which === 2;\n}\nfunction linkClicked(e, router, href, as, replace, shallow, scroll, locale, onNavigate) {\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) || e.currentTarget.hasAttribute('download')) {\n // ignore click for browser’s default behavior\n return;\n }\n if (!(0, _islocalurl.isLocalURL)(href)) {\n if (replace) {\n // browser default behavior does not replace the history state\n // so we need to do it manually\n e.preventDefault();\n location.replace(href);\n }\n // ignore click for browser’s default behavior\n return;\n }\n e.preventDefault();\n const navigate = ()=>{\n if (onNavigate) {\n let isDefaultPrevented = false;\n onNavigate({\n preventDefault: ()=>{\n isDefaultPrevented = true;\n }\n });\n if (isDefaultPrevented) {\n return;\n }\n }\n // If the router is an NextRouter instance it will have `beforePopState`\n const routerScroll = scroll != null ? scroll : true;\n if ('beforePopState' in router) {\n router[replace ? 'replace' : 'push'](href, as, {\n shallow,\n locale,\n scroll: routerScroll\n });\n } else {\n router[replace ? 'replace' : 'push'](as || href, {\n scroll: routerScroll\n });\n }\n };\n navigate();\n}\nfunction formatStringOrUrl(urlObjOrString) {\n if (typeof urlObjOrString === 'string') {\n return urlObjOrString;\n }\n return (0, _formaturl.formatUrl)(urlObjOrString);\n}\n/**\n * A React component that extends the HTML `<a>` element to provide [prefetching](https://nextjs.org/docs/app/building-your-application/routing/linking-and-navigating#2-prefetching)\n * and client-side navigation between routes.\n *\n * It is the primary way to navigate between routes in Next.js.\n *\n * Read more: [Next.js docs: `<Link>`](https://nextjs.org/docs/app/api-reference/components/link)\n */ const Link = /*#__PURE__*/ _s(_react.default.forwardRef(_c = _s(function LinkComponent(props, forwardedRef) {\n _s();\n let children;\n const { href: hrefProp, as: asProp, children: childrenProp, prefetch: prefetchProp = null, passHref, replace, shallow, scroll, locale, onClick, onNavigate, onMouseEnter: onMouseEnterProp, onTouchStart: onTouchStartProp, legacyBehavior = false, ...restProps } = props;\n children = childrenProp;\n if (legacyBehavior && (typeof children === 'string' || typeof children === 'number')) {\n children = /*#__PURE__*/ (0, _jsxruntime.jsx)(\"a\", {\n children: children\n });\n }\n const router = _react.default.useContext(_routercontextsharedruntime.RouterContext);\n const prefetchEnabled = prefetchProp !== false;\n if (true) {\n function createPropError(args) {\n return Object.defineProperty(new Error(\"Failed prop type: The prop `\" + args.key + \"` expects a \" + args.expected + \" in `<Link>`, but got `\" + args.actual + \"` instead.\" + ( true ? \"\\nOpen your browser's console to view the Component stack trace.\" : 0)), \"__NEXT_ERROR_CODE\", {\n value: \"E319\",\n enumerable: false,\n configurable: true\n });\n }\n // TypeScript trick for type-guarding:\n const requiredPropsGuard = {\n href: true\n };\n const requiredProps = Object.keys(requiredPropsGuard);\n requiredProps.forEach((key)=>{\n if (key === 'href') {\n if (props[key] == null || typeof props[key] !== 'string' && typeof props[key] !== 'object') {\n throw createPropError({\n key,\n expected: '`string` or `object`',\n actual: props[key] === null ? 'null' : typeof props[key]\n });\n }\n } else {\n // TypeScript trick for type-guarding:\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _ = key;\n }\n });\n // TypeScript trick for type-guarding:\n const optionalPropsGuard = {\n as: true,\n replace: true,\n scroll: true,\n shallow: true,\n passHref: true,\n prefetch: true,\n locale: true,\n onClick: true,\n onMouseEnter: true,\n onTouchStart: true,\n legacyBehavior: true,\n onNavigate: 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' || key === 'onTouchStart' || key === 'onNavigate') {\n if (props[key] && valType !== 'function') {\n throw createPropError({\n key,\n expected: '`function`',\n actual: valType\n });\n }\n } else if (key === 'replace' || key === 'scroll' || key === 'shallow' || key === 'passHref' || key === 'legacyBehavior') {\n if (props[key] != null && valType !== 'boolean') {\n throw createPropError({\n key,\n expected: '`boolean`',\n actual: valType\n });\n }\n } else if (key === 'prefetch') {\n if (props[key] != null && valType !== 'boolean' && props[key] !== 'auto') {\n throw createPropError({\n key,\n expected: '`boolean | \"auto\"`',\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 }\n const { href, as } = _react.default.useMemo({\n \"Link.LinkComponent.useMemo\": ()=>{\n if (!router) {\n const resolvedHref = formatStringOrUrl(hrefProp);\n return {\n href: resolvedHref,\n as: asProp ? formatStringOrUrl(asProp) : resolvedHref\n };\n }\n const [resolvedHref, resolvedAs] = (0, _resolvehref.resolveHref)(router, hrefProp, true);\n return {\n href: resolvedHref,\n as: asProp ? (0, _resolvehref.resolveHref)(router, asProp) : resolvedAs || resolvedHref\n };\n }\n }[\"Link.LinkComponent.useMemo\"], [\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 <Link> with `href` of `' + hrefProp + '` but \"legacyBehavior\" was set. The legacy behavior requires onClick be set on the child of next/link');\n }\n if (onMouseEnterProp) {\n console.warn('\"onMouseEnter\" was passed to <Link> 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 Object.defineProperty(new Error(\"No children were passed to <Link> with `href` of `\" + hrefProp + \"` but one child is required https://nextjs.org/docs/messages/link-no-children\"), \"__NEXT_ERROR_CODE\", {\n value: \"E320\",\n enumerable: false,\n configurable: true\n });\n }\n throw Object.defineProperty(new Error(\"Multiple children were passed to <Link> with `href` of `\" + 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)), \"__NEXT_ERROR_CODE\", {\n value: \"E266\",\n enumerable: false,\n configurable: true\n });\n }\n } else {}\n } else {\n if (true) {\n if ((children == null ? void 0 : children.type) === 'a') {\n throw Object.defineProperty(new Error('Invalid <Link> with <a> child. Please remove <a> or use <Link legacyBehavior>.\\nLearn more: https://nextjs.org/docs/messages/invalid-new-link-with-extra-anchor'), \"__NEXT_ERROR_CODE\", {\n value: \"E209\",\n enumerable: false,\n configurable: true\n });\n }\n }\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 setIntersectionWithResetRef = _react.default.useCallback({\n \"Link.LinkComponent.useCallback[setIntersectionWithResetRef]\": (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 }\n }[\"Link.LinkComponent.useCallback[setIntersectionWithResetRef]\"], [\n as,\n href,\n resetVisible,\n setIntersectionRef\n ]);\n const setRef = (0, _usemergedref.useMergedRef)(setIntersectionWithResetRef, childRef);\n // Prefetch the URL if we haven't already and it's visible.\n _react.default.useEffect({\n \"Link.LinkComponent.useEffect\": ()=>{\n // in dev, we only prefetch on hover to avoid wasting resources as the prefetch will trigger compiling the page.\n if (true) {\n return;\n }\n if (!router) {\n return;\n }\n // If we don't need to prefetch the URL, don't do prefetch.\n if (!isVisible || !prefetchEnabled) {\n return;\n }\n // Prefetch the URL.\n prefetch(router, href, as, {\n locale\n });\n }\n }[\"Link.LinkComponent.useEffect\"], [\n as,\n href,\n isVisible,\n locale,\n prefetchEnabled,\n router == null ? void 0 : router.locale,\n router\n ]);\n const childProps = {\n ref: setRef,\n onClick (e) {\n if (true) {\n if (!e) {\n throw Object.defineProperty(new Error('Component rendered inside next/link has to pass click event to \"onClick\" prop.'), \"__NEXT_ERROR_CODE\", {\n value: \"E312\",\n enumerable: false,\n configurable: true\n });\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 (!router) {\n return;\n }\n if (e.defaultPrevented) {\n return;\n }\n linkClicked(e, router, href, as, replace, shallow, scroll, locale, onNavigate);\n },\n onMouseEnter (e) {\n if (!legacyBehavior && typeof onMouseEnterProp === 'function') {\n onMouseEnterProp(e);\n }\n if (legacyBehavior && child.props && typeof child.props.onMouseEnter === 'function') {\n child.props.onMouseEnter(e);\n }\n if (!router) {\n return;\n }\n prefetch(router, href, as, {\n locale,\n priority: true,\n // @see {https://github.com/vercel/next.js/discussions/40268?sort=top#discussioncomment-3572642}\n bypassPrefetchedCheck: true\n });\n },\n onTouchStart: false ? 0 : function onTouchStart(e) {\n if (!legacyBehavior && typeof onTouchStartProp === 'function') {\n onTouchStartProp(e);\n }\n if (legacyBehavior && child.props && typeof child.props.onTouchStart === 'function') {\n child.props.onTouchStart(e);\n }\n if (!router) {\n return;\n }\n prefetch(router, href, as, {\n locale,\n priority: true,\n // @see {https://github.com/vercel/next.js/discussions/40268?sort=top#discussioncomment-3572642}\n bypassPrefetchedCheck: true\n });\n }\n };\n // If child is an <a> 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 the url is absolute, we can bypass the logic to prepend the domain and locale.\n if ((0, _utils.isAbsoluteUrl)(as)) {\n childProps.href = as;\n } else if (!legacyBehavior || passHref || child.type === 'a' && !('href' in child.props)) {\n const curLocale = typeof locale !== 'undefined' ? locale : router == null ? void 0 : 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 == null ? void 0 : router.isLocaleDomain) && (0, _getdomainlocale.getDomainLocale)(as, curLocale, router == null ? void 0 : router.locales, router == null ? void 0 : router.domainLocales);\n childProps.href = localeDomain || (0, _addbasepath.addBasePath)((0, _addlocale.addLocale)(as, curLocale, router == null ? void 0 : router.defaultLocale));\n }\n if (legacyBehavior) {\n if (true) {\n (0, _erroronce.errorOnce)('`legacyBehavior` is deprecated and will be removed in a future ' + 'release. A codemod is available to upgrade your components:\\n\\n' + 'npx @next/codemod@latest new-link .\\n\\n' + 'Learn more: https://nextjs.org/docs/app/building-your-application/upgrading/codemods#remove-a-tags-from-link-components');\n }\n return /*#__PURE__*/ _react.default.cloneElement(child, childProps);\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(\"a\", {\n ...restProps,\n ...childProps,\n children: children\n });\n}, \"cOEYCKQNQkvb3D7rzCm6zrDrstY=\")), \"cOEYCKQNQkvb3D7rzCm6zrDrstY=\");\n_c1 = Link;\nconst LinkStatusContext = /*#__PURE__*/ (0, _react.createContext)({\n // We do not support link status in the Pages Router, so we always return false\n pending: false\n});\nconst useLinkStatus = ()=>{\n // This behaviour is like React's useFormStatus. When the component is not under\n // a <form> tag, it will get the default value, instead of throwing an error.\n return (0, _react.useContext)(LinkStatusContext);\n};\nconst _default = Link;\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 prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== 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 signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(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 (prevSignature !== 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(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(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 = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2xpbmsuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7SUE0c0JBLE9BQW1CO2VBQW5COztJQU5hQSxhQUFhO2VBQWJBOzs7Ozs2RUEvckJvQzt5Q0FFckI7d0NBQ0Q7dUNBQ0Q7bUNBQ0k7dUNBQ0o7d0RBQ0k7NkNBRUU7NkNBQ0E7eUNBQ0o7MENBQ0M7dUNBQ0g7QUE2RzFCLE1BQU1DLGFBQWEsSUFBSUM7QUFVdkIsU0FBU0MsU0FDUEMsTUFBa0IsRUFDbEJDLElBQVksRUFDWkMsRUFBVSxFQUNWQyxPQUF3QjtJQUV4QixJQUFJLEtBQTZCLEVBQUUsRUFFbEM7SUFFRCxJQUFJLENBQUNFLENBQUFBLEdBQUFBLFlBQUFBLFVBQUFBLEVBQVdKLE9BQU87UUFDckI7SUFDRjtJQUVBLDRFQUE0RTtJQUM1RSxZQUFZO0lBQ1osSUFBSSxDQUFDRSxRQUFRRyxxQkFBcUIsRUFBRTtRQUNsQyxNQUFNQyxTQUNKLE9BQ09KLFFBQVFJLE1BQU0sS0FBSyxjQUN0QkosUUFBUUksTUFBTSxHQUVkLFFBSjZELElBSWpEUCxTQUNWQSxPQUFPTyxNQUFNLEdBQ2JDO1FBRVIsTUFBTUMsZ0JBQWdCUixPQUFPLE1BQU1DLEtBQUssTUFBTUs7UUFFOUMsa0VBQWtFO1FBQ2xFLElBQUlWLFdBQVdhLEdBQUcsQ0FBQ0QsZ0JBQWdCO1lBQ2pDO1FBQ0Y7UUFFQSwrQkFBK0I7UUFDL0JaLFdBQVdjLEdBQUcsQ0FBQ0Y7SUFDakI7SUFFQSx1REFBdUQ7SUFDdkQsMERBQTBEO0lBQzFELHNEQUFzRDtJQUN0RCx5REFBeUQ7SUFDekRULE9BQU9ELFFBQVEsQ0FBQ0UsTUFBTUMsSUFBSUMsU0FBU1MsS0FBSyxDQUFDLENBQUNDO1FBQ3hDLElBQUlDLElBQW9CLEVBQW1CO1lBQ3pDLHFDQUFxQztZQUNyQyxNQUFNRDtRQUNSO0lBQ0Y7QUFDRjtBQUVBLFNBQVNJLGdCQUFnQkMsS0FBdUI7SUFDOUMs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QUEsT0FBQUEsS0FBQUEsSUFBQUEsT0FBUXVILGNBQUFBLEtBQ1JDLENBQUFBLEdBQUFBLGlCQUFBQSxlQUFBQSxFQUFnQnRILElBQUltSCxXQUFXckgsVUFBQUEsT0FBQUEsS0FBQUEsSUFBQUEsT0FBUXlILE9BQU8sRUFBRXpILFVBQUFBLE9BQUFBLEtBQUFBLElBQUFBLE9BQVEwSCxhQUFhO1FBRXZFVixXQUFXL0csSUFBSSxHQUNicUgsZ0JBQ0FLLENBQUFBLEdBQUFBLGFBQUFBLFdBQUFBLEVBQVlDLENBQUFBLEdBQUFBLFdBQUFBLFNBQUFBLEVBQVUxSCxJQUFJbUgsV0FBV3JILFVBQUFBLE9BQUFBLEtBQUFBLElBQUFBLE9BQVE2SCxhQUFhO0lBQzlEO0lBRUEsSUFBSTdELGdCQUFnQjtRQUNsQixJQUFJbEQsSUFBb0IsRUFBb0I7WUFDMUNnSCxDQUFBQSxHQUFBQSxXQUFBQSxTQUFBQSxFQUNFLG9FQUNFLG9FQUNBLDRDQUNBO1FBRU47UUFDQSxxQkFBTzlFLE9BQUFBLE9BQUssQ0FBQytFLFlBQVksQ0FBQ25DLE9BQU9vQjtJQUNuQztJQUVBLHFCQUNFLHFCQUFDOUMsS0FBQUE7UUFBRyxHQUFHRCxTQUFTO1FBQUcsR0FBRytDLFVBQVU7a0JBQzdCM0Q7O0FBR1A7O0FBR0YsTUFBTTJFLG9CQUFBQSxXQUFBQSxHQUFvQkMsQ0FBQUEsR0FBQUEsT0FBQUEsYUFBQUEsRUFFdkI7SUFDRCwrRUFBK0U7SUFDL0VDLFNBQVM7QUFDWDtBQUVPLE1BQU10SSxnQkFBZ0I7SUFDM0IsZ0ZBQWdGO0lBQ2hGLDZFQUE2RTtJQUM3RSxPQUFPdUUsQ0FBQUEsR0FBQUEsT0FBQUEsVUFBQUEsRUFBVzZEO0FBQ3BCO01BRUEsV0FBZWpGIiwic291cmNlcyI6WyIvVXNlcnMvcnN0aWxsdy9zcmMvY2xpZW50L2xpbmsudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgdHlwZSB7XG4gIE5leHRSb3V0ZXIsXG4gIFByZWZldGNoT3B0aW9ucyBhcyBSb3V0ZXJQcmVmZXRjaE9wdGlvbnMsXG59IGZyb20gJy4uL3NoYXJlZC9saWIvcm91dGVyL3JvdXRlcidcblxuaW1wb3J0IFJlYWN0LCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIHsgVXJsT2JqZWN0IH0gZnJvbSAndXJsJ1xuaW1wb3J0IHsgcmVzb2x2ZUhyZWYgfSBmcm9tICcuL3Jlc29sdmUtaHJlZidcbmltcG9ydCB7IGlzTG9jYWxVUkwgfSBmcm9tICcuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9pcy1sb2NhbC11cmwnXG5pbXBvcnQgeyBmb3JtYXRVcmwgfSBmcm9tICcuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9mb3JtYXQtdXJsJ1xuaW1wb3J0IHsgaXNBYnNvbHV0ZVVybCB9IGZyb20gJy4uL3NoYXJlZC9saWIvdXRpbHMnXG5pbXBvcnQgeyBhZGRMb2NhbGUgfSBmcm9tICcuL2FkZC1sb2NhbGUnXG5pbXBvcnQgeyBSb3V0ZXJDb250ZXh0IH0gZnJvbSAnLi4vc2hhcmVkL2xpYi9yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB0eXBlIHsgQXBwUm91dGVySW5zdGFuY2UgfSBmcm9tICcuLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB7IHVzZUludGVyc2VjdGlvbiB9IGZyb20gJy4vdXNlLWludGVyc2VjdGlvbidcbmltcG9ydCB7IGdldERvbWFpbkxvY2FsZSB9IGZyb20gJy4vZ2V0LWRvbWFpbi1sb2NhbGUnXG5pbXBvcnQgeyBhZGRCYXNlUGF0aCB9IGZyb20gJy4vYWRkLWJhc2UtcGF0aCdcbmltcG9ydCB7IHVzZU1lcmdlZFJlZiB9IGZyb20gJy4vdXNlLW1lcmdlZC1yZWYnXG5pbXBvcnQgeyBlcnJvck9uY2UgfSBmcm9tICcuLi9zaGFyZWQvbGliL3V0aWxzL2Vycm9yLW9uY2UnXG5cbnR5cGUgVXJsID0gc3RyaW5nIHwgVXJsT2JqZWN0XG50eXBlIFJlcXVpcmVkS2V5czxUPiA9IHtcbiAgW0sgaW4ga2V5b2YgVF0tPzoge30gZXh0ZW5kcyBQaWNrPFQsIEs+ID8gbmV2ZXIgOiBLXG59W2tleW9mIFRdXG50eXBlIE9wdGlvbmFsS2V5czxUPiA9IHtcbiAgW0sgaW4ga2V5b2YgVF0tPzoge30gZXh0ZW5kcyBQaWNrPFQsIEs+ID8gSyA6IG5ldmVyXG59W2tleW9mIFRdXG5cbnR5cGUgT25OYXZpZ2F0ZUV2ZW50SGFuZGxlciA9IChldmVudDogeyBwcmV2ZW50RGVmYXVsdDogKCkgPT4gdm9pZCB9KSA9PiB2b2lkXG5cbnR5cGUgSW50ZXJuYWxMaW5rUHJvcHMgPSB7XG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvciBVUkwgdG8gbmF2aWdhdGUgdG8uIEl0IGNhbiBhbHNvIGJlIGFuIG9iamVjdC5cbiAgICpcbiAgICogQGV4YW1wbGUgaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBpLXJlZmVyZW5jZS9uZXh0L2xpbmsjd2l0aC11cmwtb2JqZWN0XG4gICAqL1xuICBocmVmOiBVcmxcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRlY29yYXRvciBmb3IgdGhlIHBhdGggdGhhdCB3aWxsIGJlIHNob3duIGluIHRoZSBicm93c2VyIFVSTCBiYXIuIEJlZm9yZSBOZXh0LmpzIDkuNS4zIHRoaXMgd2FzIHVzZWQgZm9yIGR5bmFtaWMgcm91dGVzLCBjaGVjayBvdXIgW3ByZXZpb3VzIGRvY3NdKGh0dHBzOi8vZ2l0aHViLmNvbS92ZXJjZWwvbmV4dC5qcy9ibG9iL3Y5LjUuMi9kb2NzL2FwaS1yZWZlcmVuY2UvbmV4dC9saW5rLm1kI2R5bmFtaWMtcm91dGVzKSB0byBzZWUgaG93IGl0IHdvcmtlZC4gTm90ZTogd2hlbiB0aGlzIHBhdGggZGlmZmVycyBmcm9tIHRoZSBvbmUgcHJvdmlkZWQgaW4gYGhyZWZgIHRoZSBwcmV2aW91cyBgaHJlZmAvYGFzYCBiZWhhdmlvciBpcyB1c2VkIGFzIHNob3duIGluIHRoZSBbcHJldmlvdXMgZG9jc10oaHR0cHM6Ly9naXRodWIuY29tL3ZlcmNlbC9uZXh0LmpzL2Jsb2IvdjkuNS4yL2RvY3MvYXBpLXJlZmVyZW5jZS9uZXh0L2xpbmsubWQjZHluYW1pYy1yb3V0ZXMpLlxuICAgKi9cbiAgYXM/OiBVcmxcbiAgLyoqXG4gICAqIFJlcGxhY2UgdGhlIGN1cnJlbnQgYGhpc3RvcnlgIHN0YXRlIGluc3RlYWQgb2YgYWRkaW5nIGEgbmV3IHVybCBpbnRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBgZmFsc2VgXG4gICAqL1xuICByZXBsYWNlPzogYm9vbGVhblxuICAvKipcbiAgICogV2hldGhlciB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBzY3JvbGwgYmVoYXZpb3JcbiAgICpcbiAgICogQGV4YW1wbGUgaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBpLXJlZmVyZW5jZS9uZXh0L2xpbmsjZGlzYWJsZS1zY3JvbGxpbmctdG8tdGhlLXRvcC1vZi10aGUtcGFnZVxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGB0cnVlYFxuICAgKi9cbiAgc2Nyb2xsPzogYm9vbGVhblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBwYXRoIG9mIHRoZSBjdXJyZW50IHBhZ2Ugd2l0aG91dCByZXJ1bm5pbmcgW2BnZXRTdGF0aWNQcm9wc2BdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL3BhZ2VzL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vZGF0YS1mZXRjaGluZy9nZXQtc3RhdGljLXByb3BzKSwgW2BnZXRTZXJ2ZXJTaWRlUHJvcHNgXShodHRwczovL25leHRqcy5vcmcvZG9jcy9wYWdlcy9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL2RhdGEtZmV0Y2hpbmcvZ2V0LXNlcnZlci1zaWRlLXByb3BzKSBvciBbYGdldEluaXRpYWxQcm9wc2BdKC9kb2NzL3BhZ2VzL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL2dldC1pbml0aWFsLXByb3BzKS5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBgZmFsc2VgXG4gICAqL1xuICBzaGFsbG93PzogYm9vbGVhblxuICAvKipcbiAgICogRm9yY2VzIGBMaW5rYCB0byBzZW5kIHRoZSBgaHJlZmAgcHJvcGVydHkgdG8gaXRzIGNoaWxkLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGBmYWxzZWBcbiAgICovXG4gIHBhc3NIcmVmPzogYm9vbGVhblxuICAvKipcbiAgICogUHJlZmV0Y2ggdGhlIHBhZ2UgaW4gdGhlIGJhY2tncm91bmQuXG4gICAqIEFueSBgPExpbmsgLz5gIHRoYXQgaXMgaW4gdGhlIHZpZXdwb3J0IChpbml0aWFsbHkgb3IgdGhyb3VnaCBzY3JvbGwpIHdpbGwgYmUgcHJlZmV0Y2hlZC5cbiAgICogUHJlZmV0Y2ggY2FuIGJlIGRpc2FibGVkIGJ5IHBhc3NpbmcgYHByZWZldGNoPXtmYWxzZX1gLiBQcmVmZXRjaGluZyBpcyBvbmx5IGVuYWJsZWQgaW4gcHJvZHVjdGlvbi5cbiAgICpcbiAgICogSW4gQXBwIFJvdXRlcjpcbiAgICogLSBcImF1dG9cIiwgbnVsbCwgdW5kZWZpbmVkIChkZWZhdWx0KTogRm9yIHN0YXRpY2FsbHkgZ2VuZXJhdGVkIHBhZ2VzLCB0aGlzIHdpbGwgcHJlZmV0Y2ggdGhlIGZ1bGwgUmVhY3QgU2VydmVyIENvbXBvbmVudCBkYXRhLiBGb3IgZHluYW1pYyBwYWdlcywgdGhpcyB3aWxsIHByZWZldGNoIHVwIHRvIHRoZSBuZWFyZXN0IHJvdXRlIHNlZ21lbnQgd2l0aCBhIFtgbG9hZGluZy5qc2BdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2ZpbGUtY29udmVudGlvbnMvbG9hZGluZykgZmlsZS4gSWYgdGhlcmUgaXMgbm8gbG9hZGluZyBmaWxlLCBpdCB3aWxsIG5vdCBmZXRjaCB0aGUgZnVsbCB0cmVlIHRvIGF2b2lkIGZldGNoaW5nIHRvbyBtdWNoIGRhdGEuXG4gICAqIC0gYHRydWVgOiBUaGlzIHdpbGwgcHJlZmV0Y2ggdGhlIGZ1bGwgUmVhY3QgU2VydmVyIENvbXBvbmVudCBkYXRhIGZvciBhbGwgcm91dGUgc2VnbWVudHMsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGV5IGNvbnRhaW4gYSBzZWdtZW50IHdpdGggYGxvYWRpbmcuanNgLlxuICAgKiAtIGBmYWxzZWA6IFRoaXMgd2lsbCBub3QgcHJlZmV0Y2ggYW55IGRhdGEsIGV2ZW4gb24gaG92ZXIuXG4gICAqXG4gICAqIEluIFBhZ2VzIFJvdXRlcjpcbiAgICogLSBgdHJ1ZWAgKGRlZmF1bHQpOiBUaGUgZnVsbCByb3V0ZSAmIGl0cyBkYXRhIHdpbGwgYmUgcHJlZmV0Y2hlZC5cbiAgICogLSBgZmFsc2VgOiBQcmVmZXRjaGluZyB3aWxsIG5vdCBoYXBwZW4gd2hlbiBlbnRlcmluZyB0aGUgdmlld3BvcnQsIGJ1dCB3aWxsIHN0aWxsIGhhcHBlbiBvbiBob3Zlci5cbiAgICogQGRlZmF1bHRWYWx1ZSBgdHJ1ZWAgKHBhZ2VzIHJvdXRlcikgb3IgYG51bGxgIChhcHAgcm91dGVyKVxuICAgKi9cbiAgcHJlZmV0Y2g/OiBib29sZWFuIHwgJ2F1dG8nIHwgbnVsbFxuICAvKipcbiAgICogVGhlIGFjdGl2ZSBsb2NhbGUgaXMgYXV0b21hdGljYWxseSBwcmVwZW5kZWQuIGBsb2NhbGVgIGFsbG93cyBmb3IgcHJvdmlkaW5nIGEgZGlmZmVyZW50IGxvY2FsZS5cbiAgICogV2hlbiBgZmFsc2VgIGBocmVmYCBoYXMgdG8gaW5jbHVkZSB0aGUgbG9jYWxlIGFzIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIGRpc2FibGVkLlxuICAgKiBOb3RlOiBUaGlzIGlzIG9ubHkgYXZhaWxhYmxlIGluIHRoZSBQYWdlcyBSb3V0ZXIuXG4gICAqL1xuICBsb2NhbGU/OiBzdHJpbmcgfCBmYWxzZVxuICAvKipcbiAgICogRW5hYmxlIGxlZ2FjeSBsaW5rIGJlaGF2aW9yLlxuICAgKiBAZGVwcmVjYXRlZCBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiB2MTZcbiAgICogQGRlZmF1bHRWYWx1ZSBgZmFsc2VgXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3ZlcmNlbC9uZXh0LmpzL2NvbW1pdC80ODllNjVlZDk4NTQ0ZTY5YjBhZmQ3ZTBjZmMzZjlmNmMyYjgwM2I3XG4gICAqL1xuICBsZWdhY3lCZWhhdmlvcj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGV2ZW50IGhhbmRsZXIgZm9yIHdoZW4gdGhlIG1vdXNlIHBvaW50ZXIgaXMgbW92ZWQgb250byBMaW5rXG4gICAqL1xuICBvbk1vdXNlRW50ZXI/OiBSZWFjdC5Nb3VzZUV2ZW50SGFuZGxlcjxIVE1MQW5jaG9yRWxlbWVudD5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGV2ZW50IGhhbmRsZXIgZm9yIHdoZW4gTGluayBpcyB0b3VjaGVkLlxuICAgKi9cbiAgb25Ub3VjaFN0YXJ0PzogUmVhY3QuVG91Y2hFdmVudEhhbmRsZXI8SFRNTEFuY2hvckVsZW1lbnQ+XG4gIC8qKlxuICAgKiBPcHRpb25hbCBldmVudCBoYW5kbGVyIGZvciB3aGVuIExpbmsgaXMgY2xpY2tlZC5cbiAgICovXG4gIG9uQ2xpY2s/OiBSZWFjdC5Nb3VzZUV2ZW50SGFuZGxlcjxIVE1MQW5jaG9yRWxlbWVudD5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGV2ZW50IGhhbmRsZXIgZm9yIHdoZW4gdGhlIGA8TGluaz5gIGlzIG5hdmlnYXRlZC5cbiAgICovXG4gIG9uTmF2aWdhdGU/OiBPbk5hdmlnYXRlRXZlbnRIYW5kbGVyXG59XG5cbi8vIFRPRE8tQVBQOiBJbmNsdWRlIHRoZSBmdWxsIHNldCBvZiBBbmNob3IgcHJvcHNcbi8vIGFkZGluZyB0aGlzIHRvIHRoZSBwdWJsaWNseSBleHBvcnRlZCB0eXBlIGN1cnJlbnRseSBicmVha3MgZXhpc3RpbmcgYXBwc1xuXG4vLyBgUm91dGVJbmZlclR5cGVgIGlzIGEgc3R1YiBoZXJlIHRvIGF2b2lkIGJyZWFraW5nIGB0eXBlZFJvdXRlc2Agd2hlbiB0aGUgdHlwZVxuLy8gaXNuJ3QgZ2VuZXJhdGVkIHlldC4gSXQgd2lsbCBiZSByZXBsYWNlZCB3aGVuIHRoZSB3ZWJwYWNrIHBsdWdpbiBydW5zLlxuLy8gV0FSTklORzogVGhpcyBzaG91bGQgYmUgYW4gaW50ZXJmYWNlIHRvIHByZXZlbnQgVHlwZVNjcmlwdCBmcm9tIGlubGluaW5nIGl0XG4vLyBpbiBkZWNsYXJhdGlvbnMgb2YgbGlicmFyaWVzIGRlcGVuZGVuZGluZyBvbiBOZXh0LmpzLlxuLy8gTm90IHRyaXZpYWwgdG8gcmVwcm9kdWNlIHNvIG9ubHkgY29udmVydCB0byBhbiBpbnRlcmZhY2Ugd2hlbiBuZWVkZWQuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5leHBvcnQgaW50ZXJmYWNlIExpbmtQcm9wczxSb3V0ZUluZmVyVHlwZSA9IGFueT4gZXh0ZW5kcyBJbnRlcm5hbExpbmtQcm9wcyB7fVxudHlwZSBMaW5rUHJvcHNSZXF1aXJlZCA9IFJlcXVpcmVkS2V5czxMaW5rUHJvcHM+XG50eXBlIExpbmtQcm9wc09wdGlvbmFsID0gT3B0aW9uYWxLZXlzPEludGVybmFsTGlua1Byb3BzPlxuXG5jb25zdCBwcmVmZXRjaGVkID0gbmV3IFNldDxzdHJpbmc+KClcblxudHlwZSBQcmVmZXRjaE9wdGlvbnMgPSBSb3V0ZXJQcmVmZXRjaE9wdGlvbnMgJiB7XG4gIC8qKlxuICAgKiBieXBhc3NQcmVmZXRjaGVkQ2hlY2sgd2lsbCBieXBhc3MgdGhlIGNoZWNrIHRvIHNlZSBpZiB0aGUgYGhyZWZgIGhhc1xuICAgKiBhbHJlYWR5IGJlZW4gZmV0Y2hlZC5cbiAgICovXG4gIGJ5cGFzc1ByZWZldGNoZWRDaGVjaz86IGJvb2xlYW5cbn1cblxuZnVuY3Rpb24gcHJlZmV0Y2goXG4gIHJvdXRlcjogTmV4dFJvdXRlcixcbiAgaHJlZjogc3RyaW5nLFxuICBhczogc3RyaW5nLFxuICBvcHRpb25zOiBQcmVmZXRjaE9wdGlvbnNcbik6IHZvaWQge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmICghaXNMb2NhbFVSTChocmVmKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVkdXBlIHJlcXVlc3RzIHdoZW4gZXhwZXJpbWVudGFsLm9wdGltaXN0aWNDbGllbnRDYWNoZSBpc1xuICAvLyBkaXNhYmxlZC5cbiAgaWYgKCFvcHRpb25zLmJ5cGFzc1ByZWZldGNoZWRDaGVjaykge1xuICAgIGNvbnN0IGxvY2FsZSA9XG4gICAgICAvLyBMZXQgdGhlIGxpbmsncyBsb2NhbGUgcHJvcCBvdmVycmlkZSB0aGUgZGVmYXVsdCByb3V0ZXIgbG9jYWxlLlxuICAgICAgdHlwZW9mIG9wdGlvbnMubG9jYWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICA/IG9wdGlvbnMubG9jYWxlXG4gICAgICAgIDogLy8gT3RoZXJ3aXNlIGZhbGxiYWNrIHRvIHRoZSByb3V0ZXIncyBsb2NhbGUuXG4gICAgICAgICAgJ2xvY2FsZScgaW4gcm91dGVyXG4gICAgICAgICAgPyByb3V0ZXIubG9jYWxlXG4gICAgICAgICAgOiB1bmRlZmluZWRcblxuICAgIGNvbnN0IHByZWZldGNoZWRLZXkgPSBocmVmICsgJyUnICsgYXMgKyAnJScgKyBsb2NhbGVcblxuICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgZmV0Y2hlZCB0aGUga2V5LCB0aGVuIGRvbid0IHByZWZldGNoIGl0IGFnYWluIVxuICAgIGlmIChwcmVmZXRjaGVkLmhhcyhwcmVmZXRjaGVkS2V5KSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gTWFyayB0aGlzIFVSTCBhcyBwcmVmZXRjaGVkLlxuICAgIHByZWZldGNoZWQuYWRkKHByZWZldGNoZWRLZXkpXG4gIH1cblxuICAvLyBQcmVmZXRjaCB0aGUgSlNPTiBwYWdlIGlmIGFza2VkIChvbmx5IGluIHRoZSBjbGllbnQpXG4gIC8vIFdlIG5lZWQgdG8gaGFuZGxlIGEgcHJlZmV0Y2ggZXJyb3IgaGVyZSBzaW5jZSB3ZSBtYXkgYmVcbiAgLy8gbG9hZGluZyB3aXRoIHByaW9yaXR5IHdoaWNoIGNhbiByZWplY3QgYnV0IHdlIGRvbid0XG4gIC8vIHdhbnQgdG8gZm9yY2UgbmF2aWdhdGlvbiBzaW5jZSB0aGlzIGlzIG9ubHkgYSBwcmVmZXRjaFxuICByb3V0ZXIucHJlZmV0Y2goaHJlZiwgYXMsIG9wdGlvbnMpLmNhdGNoKChlcnIpID0+IHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gcmV0aHJvdyB0byBzaG93IGludmFsaWQgVVJMIGVycm9yc1xuICAgICAgdGhyb3cgZXJyXG4gICAgfVxuICB9KVxufVxuXG5mdW5jdGlvbiBpc01vZGlmaWVkRXZlbnQoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQpOiBib29sZWFuIHtcbiAgY29uc3QgZXZlbnRUYXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxBbmNob3JFbGVtZW50IHwgU1ZHQUVsZW1lbnRcbiAgY29uc3QgdGFyZ2V0ID0gZXZlbnRUYXJnZXQuZ2V0QXR0cmlidXRlKCd0YXJnZXQnKVxuICByZXR1cm4gKFxuICAgICh0YXJnZXQgJiYgdGFyZ2V0ICE9PSAnX3NlbGYnKSB8fFxuICAgIGV2ZW50Lm1ldGFLZXkgfHxcbiAgICBldmVudC5jdHJsS2V5IHx8XG4gICAgZXZlbnQuc2hpZnRLZXkgfHxcbiAgICBldmVudC5hbHRLZXkgfHwgLy8gdHJpZ2dlcnMgcmVzb3VyY2UgZG93bmxvYWRcbiAgICAoZXZlbnQubmF0aXZlRXZlbnQgJiYgZXZlbnQubmF0aXZlRXZlbnQud2hpY2ggPT09IDIpXG4gIClcbn1cblxuZnVuY3Rpb24gbGlua0NsaWNrZWQoXG4gIGU6IFJlYWN0Lk1vdXNlRXZlbnQsXG4gIHJvdXRlcjogTmV4dFJvdXRlciB8IEFwcFJvdXRlckluc3RhbmNlLFxuICBocmVmOiBzdHJpbmcsXG4gIGFzOiBzdHJpbmcsXG4gIHJlcGxhY2U/OiBib29sZWFuLFxuICBzaGFsbG93PzogYm9vbGVhbixcbiAgc2Nyb2xsPzogYm9vbGVhbixcbiAgbG9jYWxlPzogc3RyaW5nIHwgZmFsc2UsXG4gIG9uTmF2aWdhdGU/OiBPbk5hdmlnYXRlRXZlbnRIYW5kbGVyXG4pOiB2b2lkIHtcbiAgY29uc3QgeyBub2RlTmFtZSB9ID0gZS5jdXJyZW50VGFyZ2V0XG5cbiAgLy8gYW5jaG9ycyBpbnNpZGUgYW4gc3ZnIGhhdmUgYSBsb3dlcmNhc2Ugbm9kZU5hbWVcbiAgY29uc3QgaXNBbmNob3JOb2RlTmFtZSA9IG5vZGVOYW1lLnRvVXBwZXJDYXNlKCkgPT09ICdBJ1xuXG4gIGlmIChcbiAgICAoaXNBbmNob3JOb2RlTmFtZSAmJiBpc01vZGlmaWVkRXZlbnQoZSkpIHx8XG4gICAgZS5jdXJyZW50VGFyZ2V0Lmhhc0F0dHJpYnV0ZSgnZG93bmxvYWQnKVxuICApIHtcbiAgICAvLyBpZ25vcmUgY2xpY2sgZm9yIGJyb3dzZXLigJlzIGRlZmF1bHQgYmVoYXZpb3JcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmICghaXNMb2NhbFVSTChocmVmKSkge1xuICAgIGlmIChyZXBsYWNlKSB7XG4gICAgICAvLyBicm93c2VyIGRlZmF1bHQgYmVoYXZpb3IgZG9lcyBub3QgcmVwbGFjZSB0aGUgaGlzdG9yeSBzdGF0ZVxuICAgICAgLy8gc28gd2UgbmVlZCB0byBkbyBpdCBtYW51YWxseVxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBsb2NhdGlvbi5yZXBsYWNlKGhyZWYpXG4gICAgfVxuXG4gICAgLy8gaWdub3JlIGNsaWNrIGZvciBicm93c2Vy4oCZcyBkZWZhdWx0IGJlaGF2aW9yXG4gICAgcmV0dXJuXG4gIH1cblxuICBlLnByZXZlbnREZWZhdWx0KClcblxuICBjb25zdCBuYXZpZ2F0ZSA9ICgpID0+IHtcbiAgICBpZiAob25OYXZpZ2F0ZSkge1xuICAgICAgbGV0IGlzRGVmYXVsdFByZXZlbnRlZCA9IGZhbHNlXG5cbiAgICAgIG9uTmF2aWdhdGUoe1xuICAgICAgICBwcmV2ZW50RGVmYXVsdDogKCkgPT4ge1xuICAgICAgICAgIGlzRGVmYXVsdFByZXZlbnRlZCA9IHRydWVcbiAgICAgICAgfSxcbiAgICAgIH0pXG5cbiAgICAgIGlmIChpc0RlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIHJvdXRlciBpcyBhbiBOZXh0Um91dGVyIGluc3RhbmNlIGl0IHdpbGwgaGF2ZSBgYmVmb3JlUG9wU3RhdGVgXG4gICAgY29uc3Qgcm91dGVyU2Nyb2xsID0gc2Nyb2xsID8/IHRydWVcbiAgICBpZiAoJ2JlZm9yZVBvcFN0YXRlJyBpbiByb3V0ZXIpIHtcbiAgICAgIHJvdXRlcltyZXBsYWNlID8gJ3JlcGxhY2UnIDogJ3B1c2gnXShocmVmLCBhcywge1xuICAgICAgICBzaGFsbG93LFxuICAgICAgICBsb2NhbGUsXG4gICAgICAgIHNjcm9sbDogcm91dGVyU2Nyb2xsLFxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgcm91dGVyW3JlcGxhY2UgPyAncmVwbGFjZScgOiAncHVzaCddKGFzIHx8IGhyZWYsIHtcbiAgICAgICAgc2Nyb2xsOiByb3V0ZXJTY3JvbGwsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIG5hdmlnYXRlKClcbn1cblxudHlwZSBMaW5rUHJvcHNSZWFsID0gUmVhY3QuUHJvcHNXaXRoQ2hpbGRyZW48XG4gIE9taXQ8UmVhY3QuQW5jaG9ySFRNTEF0dHJpYnV0ZXM8SFRNTEFuY2hvckVsZW1lbnQ+LCBrZXlvZiBMaW5rUHJvcHM+ICZcbiAgICBMaW5rUHJvcHNcbj5cblxuZnVuY3Rpb24gZm9ybWF0U3RyaW5nT3JVcmwodXJsT2JqT3JTdHJpbmc6IFVybE9iamVjdCB8IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgdXJsT2JqT3JTdHJpbmcgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHVybE9iak9yU3RyaW5nXG4gIH1cblxuICByZXR1cm4gZm9ybWF0VXJsKHVybE9iak9yU3RyaW5nKVxufVxuXG4vKipcbiAqIEEgUmVhY3QgY29tcG9uZW50IHRoYXQgZXh0ZW5kcyB0aGUgSFRNTCBgPGE+YCBlbGVtZW50IHRvIHByb3ZpZGUgW3ByZWZldGNoaW5nXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yb3V0aW5nL2xpbmtpbmctYW5kLW5hdmlnYXRpbmcjMi1wcmVmZXRjaGluZylcbiAqIGFuZCBjbGllbnQtc2lkZSBuYXZpZ2F0aW9uIGJldHdlZW4gcm91dGVzLlxuICpcbiAqIEl0IGlzIHRoZSBwcmltYXJ5IHdheSB0byBuYXZpZ2F0ZSBiZXR3ZWVuIHJvdXRlcyBpbiBOZXh0LmpzLlxuICpcbiAqIFJlYWQgbW9yZTogW05leHQuanMgZG9jczogYDxMaW5rPmBdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2NvbXBvbmVudHMvbGluaylcbiAqL1xuY29uc3QgTGluayA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTEFuY2hvckVsZW1lbnQsIExpbmtQcm9wc1JlYWw+KFxuICBmdW5jdGlvbiBMaW5rQ29tcG9uZW50KHByb3BzLCBmb3J3YXJkZWRSZWYpIHtcbiAgICBsZXQgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZVxuXG4gICAgY29uc3Qge1xuICAgICAgaHJlZjogaHJlZlByb3AsXG4gICAgICBhczogYXNQcm9wLFxuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuUHJvcCxcbiAgICAgIHByZWZldGNoOiBwcmVmZXRjaFByb3AgPSBudWxsLFxuICAgICAgcGFzc0hyZWYsXG4gICAgICByZXBsYWNlLFxuICAgICAgc2hhbGxvdyxcbiAgICAgIHNjcm9sbCxcbiAgICAgIGxvY2FsZSxcbiAgICAgIG9uQ2xpY2ssXG4gICAgICBvbk5hdmlnYXRlLFxuICAgICAgb25Nb3VzZUVudGVyOiBvbk1vdXNlRW50ZXJQcm9wLFxuICAgICAgb25Ub3VjaFN0YXJ0OiBvblRvdWNoU3RhcnRQcm9wLFxuICAgICAgbGVnYWN5QmVoYXZpb3IgPSBmYWxzZSxcbiAgICAgIC4uLnJlc3RQcm9wc1xuICAgIH0gPSBwcm9wc1xuXG4gICAgY2hpbGRyZW4gPSBjaGlsZHJlblByb3BcblxuICAgIGlmIChcbiAgICAgIGxlZ2FjeUJlaGF2aW9yICYmXG4gICAgICAodHlwZW9mIGNoaWxkcmVuID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgY2hpbGRyZW4gPT09ICdudW1iZXInKVxuICAgICkge1xuICAgICAgY2hpbGRyZW4gPSA8YT57Y2hpbGRyZW59PC9hPlxuICAgIH1cblxuICAgIGNvbnN0IHJvdXRlciA9IFJlYWN0LnVzZUNvbnRleHQoUm91dGVyQ29udGV4dClcblxuICAgIGNvbnN0IHByZWZldGNoRW5hYmxlZCA9IHByZWZldGNoUHJvcCAhPT0gZmFsc2VcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBmdW5jdGlvbiBjcmVhdGVQcm9wRXJyb3IoYXJnczoge1xuICAgICAgICBrZXk6IHN0cmluZ1xuICAgICAgICBleHBlY3RlZDogc3RyaW5nXG4gICAgICAgIGFjdHVhbDogc3RyaW5nXG4gICAgICB9KSB7XG4gICAgICAgIHJldHVybiBuZXcgRXJyb3IoXG4gICAgICAgICAgYEZhaWxlZCBwcm9wIHR5cGU6IFRoZSBwcm9wIFxcYCR7YXJncy5rZXl9XFxgIGV4cGVjdHMgYSAke2FyZ3MuZXhwZWN0ZWR9IGluIFxcYDxMaW5rPlxcYCwgYnV0IGdvdCBcXGAke2FyZ3MuYWN0dWFsfVxcYCBpbnN0ZWFkLmAgK1xuICAgICAgICAgICAgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnXG4gICAgICAgICAgICAgID8gLy8gVE9ETzogUmVtb3ZlIHRoaXMgYWRkZW5kdW0gaWYgT3duZXIgU3RhY2tzIGFyZSBhdmFpbGFibGVcbiAgICAgICAgICAgICAgICBcIlxcbk9wZW4geW91ciBicm93c2VyJ3MgY29uc29sZSB0byB2aWV3IHRoZSBDb21wb25lbnQgc3RhY2sgdHJhY2UuXCJcbiAgICAgICAgICAgICAgOiAnJylcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICAvLyBUeXBlU2NyaXB0IHRyaWNrIGZvciB0eXBlLWd1YXJkaW5nOlxuICAgICAgY29uc3QgcmVxdWlyZWRQcm9wc0d1YXJkOiBSZWNvcmQ8TGlua1Byb3BzUmVxdWlyZWQsIHRydWU+ID0ge1xuICAgICAgICBocmVmOiB0cnVlLFxuICAgICAgfSBhcyBjb25zdFxuICAgICAgY29uc3QgcmVxdWlyZWRQcm9wczogTGlua1Byb3BzUmVxdWlyZWRbXSA9IE9iamVjdC5rZXlzKFxuICAgICAgICByZXF1aXJlZFByb3BzR3VhcmRcbiAgICAgICkgYXMgTGlua1Byb3BzUmVxdWlyZWRbXVxuICAgICAgcmVxdWlyZWRQcm9wcy5mb3JFYWNoKChrZXk6IExpbmtQcm9wc1JlcXVpcmVkKSA9PiB7XG4gICAgICAgIGlmIChrZXkgPT09ICdocmVmJykge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHByb3BzW2tleV0gPT0gbnVsbCB8fFxuICAgICAgICAgICAgKHR5cGVvZiBwcm9wc1trZXldICE9PSAnc3RyaW5nJyAmJiB0eXBlb2YgcHJvcHNba2V5XSAhPT0gJ29iamVjdCcpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aHJvdyBjcmVhdGVQcm9wRXJyb3Ioe1xuICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgIGV4cGVjdGVkOiAnYHN0cmluZ2Agb3IgYG9iamVjdGAnLFxuICAgICAgICAgICAgICBhY3R1YWw6IHByb3BzW2tleV0gPT09IG51bGwgPyAnbnVsbCcgOiB0eXBlb2YgcHJvcHNba2V5XSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFR5cGVTY3JpcHQgdHJpY2sgZm9yIHR5cGUtZ3VhcmRpbmc6XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAgIGNvbnN0IF86IG5ldmVyID0ga2V5XG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIC8vIFR5cGVTY3JpcHQgdHJpY2sgZm9yIHR5cGUtZ3VhcmRpbmc6XG4gICAgICBjb25zdCBvcHRpb25hbFByb3BzR3VhcmQ6IFJlY29yZDxMaW5rUHJvcHNPcHRpb25hbCwgdHJ1ZT4gPSB7XG4gICAgICAgIGFzOiB0cnVlLFxuICAgICAgICByZXBsYWNlOiB0cnVlLFxuICAgICAgICBzY3JvbGw6IHRydWUsXG4gICAgICAgIHNoYWxsb3c6IHRydWUsXG4gICAgICAgIHBhc3NIcmVmOiB0cnVlLFxuICAgICAgICBwcmVmZXRjaDogdHJ1ZSxcbiAgICAgICAgbG9jYWxlOiB0cnVlLFxuICAgICAgICBvbkNsaWNrOiB0cnVlLFxuICAgICAgICBvbk1vdXNlRW50ZXI6IHRydWUsXG4gICAgICAgIG9uVG91Y2hTdGFydDogdHJ1ZSxcbiAgICAgICAgbGVnYWN5QmVoYXZpb3I6IHRydWUsXG4gICAgICAgIG9uTmF2aWdhdGU6IHRydWUsXG4gICAgICB9IGFzIGNvbnN0XG4gICAgICBjb25zdCBvcHRpb25hbFByb3BzOiBMaW5rUHJvcHNPcHRpb25hbFtdID0gT2JqZWN0LmtleXMoXG4gICAgICAgIG9wdGlvbmFsUHJvcHNHdWFyZFxuICAgICAgKSBhcyBMaW5rUHJvcHNPcHRpb25hbFtdXG4gICAgICBvcHRpb25hbFByb3BzLmZvckVhY2goKGtleTogTGlua1Byb3BzT3B0aW9uYWwpID0+IHtcbiAgICAgICAgY29uc3QgdmFsVHlwZSA9IHR5cGVvZiBwcm9wc1trZXldXG5cbiAgICAgICAgaWYgKGtleSA9PT0gJ2FzJykge1xuICAgICAgICAgIGlmIChwcm9wc1trZXldICYmIHZhbFR5cGUgIT09ICdzdHJpbmcnICYmIHZhbFR5cGUgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICB0aHJvdyBjcmVhdGVQcm9wRXJyb3Ioe1xuICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgIGV4cGVjdGVkOiAnYHN0cmluZ2Agb3IgYG9iamVjdGAnLFxuICAgICAgICAgICAgICBhY3R1YWw6IHZhbFR5cGUsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdsb2NhbGUnKSB7XG4gICAgICAgICAgaWYgKHByb3BzW2tleV0gJiYgdmFsVHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRocm93IGNyZWF0ZVByb3BFcnJvcih7XG4gICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgZXhwZWN0ZWQ6ICdgc3RyaW5nYCcsXG4gICAgICAgICAgICAgIGFjdHVhbDogdmFsVHlwZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIGtleSA9PT0gJ29uQ2xpY2snIHx8XG4gICAgICAgICAga2V5ID09PSAnb25Nb3VzZUVudGVyJyB8fFxuICAgICAgICAgIGtleSA9PT0gJ29uVG91Y2hTdGFydCcgfHxcbiAgICAgICAgICBrZXkgPT09ICdvbk5hdmlnYXRlJ1xuICAgICAgICApIHtcbiAgICAgICAgICBpZiAocHJvcHNba2V5XSAmJiB2YWxUeXBlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aHJvdyBjcmVhdGVQcm9wRXJyb3Ioe1xuICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgIGV4cGVjdGVkOiAnYGZ1bmN0aW9uYCcsXG4gICAgICAgICAgICAgIGFjdHVhbDogdmFsVHlwZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIGtleSA9PT0gJ3JlcGxhY2UnIHx8XG4gICAgICAgICAga2V5ID09PSAnc2Nyb2xsJyB8fFxuICAgICAgICAgIGtleSA9PT0gJ3NoYWxsb3cnIHx8XG4gICAgICAgICAga2V5ID09PSAncGFzc0hyZWYnIHx8XG4gICAgICAgICAga2V5ID09PSAnbGVnYWN5QmVoYXZpb3InXG4gICAgICAgICkge1xuICAgICAgICAgIGlmIChwcm9wc1trZXldICE9IG51bGwgJiYgdmFsVHlwZSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICB0aHJvdyBjcmVhdGVQcm9wRXJyb3Ioe1xuICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgIGV4cGVjdGVkOiAnYGJvb2xlYW5gJyxcbiAgICAgICAgICAgICAgYWN0dWFsOiB2YWxUeXBlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAncHJlZmV0Y2gnKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgcHJvcHNba2V5XSAhPSBudWxsICYmXG4gICAgICAgICAgICB2YWxUeXBlICE9PSAnYm9vbGVhbicgJiZcbiAgICAgICAgICAgIHByb3BzW2tleV0gIT09ICdhdXRvJ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhyb3cgY3JlYXRlUHJvcEVycm9yKHtcbiAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICBleHBlY3RlZDogJ2Bib29sZWFuIHwgXCJhdXRvXCJgJyxcbiAgICAgICAgICAgICAgYWN0dWFsOiB2YWxUeXBlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVHlwZVNjcmlwdCB0cmljayBmb3IgdHlwZS1ndWFyZGluZzpcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgICAgY29uc3QgXzogbmV2ZXIgPSBrZXlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCB7IGhyZWYsIGFzIH0gPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmICghcm91dGVyKSB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkSHJlZiA9IGZvcm1hdFN0cmluZ09yVXJsKGhyZWZQcm9wKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGhyZWY6IHJlc29sdmVkSHJlZixcbiAgICAgICAgICBhczogYXNQcm9wID8gZm9ybWF0U3RyaW5nT3JVcmwoYXNQcm9wKSA6IHJlc29sdmVkSHJlZixcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBbcmVzb2x2ZWRIcmVmLCByZXNvbHZlZEFzXSA9IHJlc29sdmVIcmVmKHJvdXRlciwgaHJlZlByb3AsIHRydWUpXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGhyZWY6IHJlc29sdmVkSHJlZixcbiAgICAgICAgYXM6IGFzUHJvcCA/IHJlc29sdmVIcmVmKHJvdXRlciwgYXNQcm9wKSA6IHJlc29sdmVkQXMgfHwgcmVzb2x2ZWRIcmVmLFxuICAgICAgfVxuICAgIH0sIFtyb3V0ZXIsIGhyZWZQcm9wLCBhc1Byb3BdKVxuXG4gICAgY29uc3QgcHJldmlvdXNIcmVmID0gUmVhY3QudXNlUmVmPHN0cmluZz4oaHJlZilcbiAgICBjb25zdCBwcmV2aW91c0FzID0gUmVhY3QudXNlUmVmPHN0cmluZz4oYXMpXG5cbiAgICAvLyBUaGlzIHdpbGwgcmV0dXJuIHRoZSBmaXJzdCBjaGlsZCwgaWYgbXVsdGlwbGUgYXJlIHByb3ZpZGVkIGl0IHdpbGwgdGhyb3cgYW4gZXJyb3JcbiAgICBsZXQgY2hpbGQ6IGFueVxuICAgIGlmIChsZWdhY3lCZWhhdmlvcikge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICAgIGlmIChvbkNsaWNrKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgYFwib25DbGlja1wiIHdhcyBwYXNzZWQgdG8gPExpbms+IHdpdGggXFxgaHJlZlxcYCBvZiBcXGAke2hyZWZQcm9wfVxcYCBidXQgXCJsZWdhY3lCZWhhdmlvclwiIHdhcyBzZXQuIFRoZSBsZWdhY3kgYmVoYXZpb3IgcmVxdWlyZXMgb25DbGljayBiZSBzZXQgb24gdGhlIGNoaWxkIG9mIG5leHQvbGlua2BcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9uTW91c2VFbnRlclByb3ApIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgXCJvbk1vdXNlRW50ZXJcIiB3YXMgcGFzc2VkIHRvIDxMaW5rPiB3aXRoIFxcYGhyZWZcXGAgb2YgXFxgJHtocmVmUHJvcH1cXGAgYnV0IFwibGVnYWN5QmVoYXZpb3JcIiB3YXMgc2V0LiBUaGUgbGVnYWN5IGJlaGF2aW9yIHJlcXVpcmVzIG9uTW91c2VFbnRlciBiZSBzZXQgb24gdGhlIGNoaWxkIG9mIG5leHQvbGlua2BcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjaGlsZCA9IFJlYWN0LkNoaWxkcmVuLm9ubHkoY2hpbGRyZW4pXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGlmICghY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgYE5vIGNoaWxkcmVuIHdlcmUgcGFzc2VkIHRvIDxMaW5rPiB3aXRoIFxcYGhyZWZcXGAgb2YgXFxgJHtocmVmUHJvcH1cXGAgYnV0IG9uZSBjaGlsZCBpcyByZXF1aXJlZCBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9saW5rLW5vLWNoaWxkcmVuYFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgTXVsdGlwbGUgY2hpbGRyZW4gd2VyZSBwYXNzZWQgdG8gPExpbms+IHdpdGggXFxgaHJlZlxcYCBvZiBcXGAke2hyZWZQcm9wfVxcYCBidXQgb25seSBvbmUgY2hpbGQgaXMgc3VwcG9ydGVkIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2xpbmstbXVsdGlwbGUtY2hpbGRyZW5gICtcbiAgICAgICAgICAgICAgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnXG4gICAgICAgICAgICAgICAgPyBcIiBcXG5PcGVuIHlvdXIgYnJvd3NlcidzIGNvbnNvbGUgdG8gdmlldyB0aGUgQ29tcG9uZW50IHN0YWNrIHRyYWNlLlwiXG4gICAgICAgICAgICAgICAgOiAnJylcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoaWxkID0gUmVhY3QuQ2hpbGRyZW4ub25seShjaGlsZHJlbilcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICAgIGlmICgoY2hpbGRyZW4gYXMgYW55KT8udHlwZSA9PT0gJ2EnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ0ludmFsaWQgPExpbms+IHdpdGggPGE+IGNoaWxkLiBQbGVhc2UgcmVtb3ZlIDxhPiBvciB1c2UgPExpbmsgbGVnYWN5QmVoYXZpb3I+LlxcbkxlYXJuIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2ludmFsaWQtbmV3LWxpbmstd2l0aC1leHRyYS1hbmNob3InXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY2hpbGRSZWY6IGFueSA9IGxlZ2FjeUJlaGF2aW9yXG4gICAgICA/IGNoaWxkICYmIHR5cGVvZiBjaGlsZCA9PT0gJ29iamVjdCcgJiYgY2hpbGQucmVmXG4gICAgICA6IGZvcndhcmRlZFJlZlxuXG4gICAgY29uc3QgW3NldEludGVyc2VjdGlvblJlZiwgaXNWaXNpYmxlLCByZXNldFZpc2libGVdID0gdXNlSW50ZXJzZWN0aW9uKHtcbiAgICAgIHJvb3RNYXJnaW46ICcyMDBweCcsXG4gICAgfSlcblxuICAgIGNvbnN0IHNldEludGVyc2VjdGlvbldpdGhSZXNldFJlZiA9IFJlYWN0LnVzZUNhbGxiYWNrKFxuICAgICAgKGVsOiBFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgICAvLyBCZWZvcmUgdGhlIGxpbmsgZ2V0dGluZyBvYnNlcnZlZCwgY2hlY2sgaWYgdmlzaWJsZSBzdGF0ZSBuZWVkIHRvIGJlIHJlc2V0XG4gICAgICAgIGlmIChwcmV2aW91c0FzLmN1cnJlbnQgIT09IGFzIHx8IHByZXZpb3VzSHJlZi5jdXJyZW50ICE9PSBocmVmKSB7XG4gICAgICAgICAgcmVzZXRWaXNpYmxlKClcbiAgICAgICAgICBwcmV2aW91c0FzLmN1cnJlbnQgPSBhc1xuICAgICAgICAgIHByZXZpb3VzSHJlZi5jdXJyZW50ID0gaHJlZlxuICAgICAgICB9XG5cbiAgICAgICAgc2V0SW50ZXJzZWN0aW9uUmVmKGVsKVxuICAgICAgfSxcbiAgICAgIFthcywgaHJlZiwgcmVzZXRWaXNpYmxlLCBzZXRJbnRlcnNlY3Rpb25SZWZdXG4gICAgKVxuXG4gICAgY29uc3Qgc2V0UmVmID0gdXNlTWVyZ2VkUmVmKHNldEludGVyc2VjdGlvbldpdGhSZXNldFJlZiwgY2hpbGRSZWYpXG5cbiAgICAvLyBQcmVmZXRjaCB0aGUgVVJMIGlmIHdlIGhhdmVuJ3QgYWxyZWFkeSBhbmQgaXQncyB2aXNpYmxlLlxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAvLyBpbiBkZXYsIHdlIG9ubHkgcHJlZmV0Y2ggb24gaG92ZXIgdG8gYXZvaWQgd2FzdGluZyByZXNvdXJjZXMgYXMgdGhlIHByZWZldGNoIHdpbGwgdHJpZ2dlciBjb21waWxpbmcgdGhlIHBhZ2UuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKCFyb3V0ZXIpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIElmIHdlIGRvbid0IG5lZWQgdG8gcHJlZmV0Y2ggdGhlIFVSTCwgZG9uJ3QgZG8gcHJlZmV0Y2guXG4gICAgICBpZiAoIWlzVmlzaWJsZSB8fCAhcHJlZmV0Y2hFbmFibGVkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBQcmVmZXRjaCB0aGUgVVJMLlxuICAgICAgcHJlZmV0Y2gocm91dGVyLCBocmVmLCBhcywgeyBsb2NhbGUgfSlcbiAgICB9LCBbYXMsIGhyZWYsIGlzVmlzaWJsZSwgbG9jYWxlLCBwcmVmZXRjaEVuYWJsZWQsIHJvdXRlcj8ubG9jYWxlLCByb3V0ZXJdKVxuXG4gICAgY29uc3QgY2hpbGRQcm9wczoge1xuICAgICAgb25Ub3VjaFN0YXJ0PzogUmVhY3QuVG91Y2hFdmVudEhhbmRsZXI8SFRNTEFuY2hvckVsZW1lbnQ+XG4gICAgICBvbk1vdXNlRW50ZXI6IFJlYWN0Lk1vdXNlRXZlbnRIYW5kbGVyPEhUTUxBbmNob3JFbGVtZW50PlxuICAgICAgb25DbGljazogUmVhY3QuTW91c2VFdmVudEhhbmRsZXI8SFRNTEFuY2hvckVsZW1lbnQ+XG4gICAgICBocmVmPzogc3RyaW5nXG4gICAgICByZWY/OiBhbnlcbiAgICB9ID0ge1xuICAgICAgcmVmOiBzZXRSZWYsXG4gICAgICBvbkNsaWNrKGUpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBpZiAoIWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgYENvbXBvbmVudCByZW5kZXJlZCBpbnNpZGUgbmV4dC9saW5rIGhhcyB0byBwYXNzIGNsaWNrIGV2ZW50IHRvIFwib25DbGlja1wiIHByb3AuYFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbGVnYWN5QmVoYXZpb3IgJiYgdHlwZW9mIG9uQ2xpY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBvbkNsaWNrKGUpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgbGVnYWN5QmVoYXZpb3IgJiZcbiAgICAgICAgICBjaGlsZC5wcm9wcyAmJlxuICAgICAgICAgIHR5cGVvZiBjaGlsZC5wcm9wcy5vbkNsaWNrID09PSAnZnVuY3Rpb24nXG4gICAgICAgICkge1xuICAgICAgICAgIGNoaWxkLnByb3BzLm9uQ2xpY2soZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcm91dGVyKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZS5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBsaW5rQ2xpY2tlZChcbiAgICAgICAgICBlLFxuICAgICAgICAgIHJvdXRlcixcbiAgICAgICAgICBocmVmLFxuICAgICAgICAgIGFzLFxuICAgICAgICAgIHJlcGxhY2UsXG4gICAgICAgICAgc2hhbGxvdyxcbiAgICAgICAgICBzY3JvbGwsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIG9uTmF2aWdhdGVcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIG9uTW91c2VFbnRlcihlKSB7XG4gICAgICAgIGlmICghbGVnYWN5QmVoYXZpb3IgJiYgdHlwZW9mIG9uTW91c2VFbnRlclByb3AgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBvbk1vdXNlRW50ZXJQcm9wKGUpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgbGVnYWN5QmVoYXZpb3IgJiZcbiAgICAgICAgICBjaGlsZC5wcm9wcyAmJlxuICAgICAgICAgIHR5cGVvZiBjaGlsZC5wcm9wcy5vbk1vdXNlRW50ZXIgPT09ICdmdW5jdGlvbidcbiAgICAgICAgKSB7XG4gICAgICAgICAgY2hpbGQucHJvcHMub25Nb3VzZUVudGVyKGUpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXJvdXRlcikge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgcHJlZmV0Y2gocm91dGVyLCBocmVmLCBhcywge1xuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBwcmlvcml0eTogdHJ1ZSxcbiAgICAgICAgICAvLyBAc2VlIHtodHRwczovL2dpdGh1Yi5jb20vdmVyY2VsL25leHQuanMvZGlzY3Vzc2lvbnMvNDAyNjg/c29ydD10b3AjZGlzY3Vzc2lvbmNvbW1lbnQtMzU3MjY0Mn1cbiAgICAgICAgICBieXBhc3NQcmVmZXRjaGVkQ2hlY2s6IHRydWUsXG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgICAgb25Ub3VjaFN0YXJ0OiBwcm9jZXNzLmVudi5fX05FWFRfTElOS19OT19UT1VDSF9TVEFSVFxuICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICA6IGZ1bmN0aW9uIG9uVG91Y2hTdGFydChlKSB7XG4gICAgICAgICAgICBpZiAoIWxlZ2FjeUJlaGF2aW9yICYmIHR5cGVvZiBvblRvdWNoU3RhcnRQcm9wID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIG9uVG91Y2hTdGFydFByb3AoZSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBsZWdhY3lCZWhhdmlvciAmJlxuICAgICAgICAgICAgICBjaGlsZC5wcm9wcyAmJlxuICAgICAgICAgICAgICB0eXBlb2YgY2hpbGQucHJvcHMub25Ub3VjaFN0YXJ0ID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgY2hpbGQucHJvcHMub25Ub3VjaFN0YXJ0KGUpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcm91dGVyKSB7XG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwcmVmZXRjaChyb3V0ZXIsIGhyZWYsIGFzLCB7XG4gICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgcHJpb3JpdHk6IHRydWUsXG4gICAgICAgICAgICAgIC8vIEBzZWUge2h0dHBzOi8vZ2l0aHViLmNvbS92ZXJjZWwvbmV4dC5qcy9kaXNjdXNzaW9ucy80MDI2OD9zb3J0PXRvcCNkaXNjdXNzaW9uY29tbWVudC0zNTcyNjQyfVxuICAgICAgICAgICAgICBieXBhc3NQcmVmZXRjaGVkQ2hlY2s6IHRydWUsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0sXG4gICAgfVxuXG4gICAgLy8gSWYgY2hpbGQgaXMgYW4gPGE+IHRhZyBhbmQgZG9lc24ndCBoYXZlIGEgaHJlZiBhdHRyaWJ1dGUsIG9yIGlmIHRoZSAncGFzc0hyZWYnIHByb3BlcnR5IGlzXG4gICAgLy8gZGVmaW5lZCwgd2Ugc3BlY2lmeSB0aGUgY3VycmVudCAnaHJlZicsIHNvIHRoYXQgcmVwZXRpdGlvbiBpcyBub3QgbmVlZGVkIGJ5IHRoZSB1c2VyLlxuICAgIC8vIElmIHRoZSB1cmwgaXMgYWJzb2x1dGUsIHdlIGNhbiBieXBhc3MgdGhlIGxvZ2ljIHRvIHByZXBlbmQgdGhlIGRvbWFpbiBhbmQgbG9jYWxlLlxuICAgIGlmIChpc0Fic29sdXRlVXJsKGFzKSkge1xuICAgICAgY2hpbGRQcm9wcy5ocmVmID0gYXNcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgIWxlZ2FjeUJlaGF2aW9yIHx8XG4gICAgICBwYXNzSHJlZiB8fFxuICAgICAgKGNoaWxkLnR5cGUgPT09ICdhJyAmJiAhKCdocmVmJyBpbiBjaGlsZC5wcm9wcykpXG4gICAgKSB7XG4gICAgICBjb25zdCBjdXJMb2NhbGUgPSB0eXBlb2YgbG9jYWxlICE9PSAndW5kZWZpbmVkJyA/IGxvY2FsZSA6IHJvdXRlcj8ubG9jYWxlXG5cbiAgICAgIC8vIHdlIG9ubHkgcmVuZGVyIGRvbWFpbiBsb2NhbGVzIGlmIHdlIGFyZSBjdXJyZW50bHkgb24gYSBkb21haW4gbG9jYWxlXG4gICAgICAvLyBzbyB0aGF0IGxvY2FsZSBsaW5rcyBhcmUgc3RpbGwgdmlzaXRhYmxlIGluIGRldmVsb3BtZW50L3ByZXZpZXcgZW52c1xuICAgICAgY29uc3QgbG9jYWxlRG9tYWluID1cbiAgICAgICAgcm91dGVyPy5pc0xvY2FsZURvbWFpbiAmJlxuICAgICAgICBnZXREb21haW5Mb2NhbGUoYXMsIGN1ckxvY2FsZSwgcm91dGVyPy5sb2NhbGVzLCByb3V0ZXI/LmRvbWFpbkxvY2FsZXMpXG5cbiAgICAgIGNoaWxkUHJvcHMuaHJlZiA9XG4gICAgICAgIGxvY2FsZURvbWFpbiB8fFxuICAgICAgICBhZGRCYXNlUGF0aChhZGRMb2NhbGUoYXMsIGN1ckxvY2FsZSwgcm91dGVyPy5kZWZhdWx0TG9jYWxlKSlcbiAgICB9XG5cbiAgICBpZiAobGVnYWN5QmVoYXZpb3IpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICBlcnJvck9uY2UoXG4gICAgICAgICAgJ2BsZWdhY3lCZWhhdmlvcmAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlICcgK1xuICAgICAgICAgICAgJ3JlbGVhc2UuIEEgY29kZW1vZCBpcyBhdmFpbGFibGUgdG8gdXBncmFkZSB5b3VyIGNvbXBvbmVudHM6XFxuXFxuJyArXG4gICAgICAgICAgICAnbnB4IEBuZXh0L2NvZGVtb2RAbGF0ZXN0IG5ldy1saW5rIC5cXG5cXG4nICtcbiAgICAgICAgICAgICdMZWFybiBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi91cGdyYWRpbmcvY29kZW1vZHMjcmVtb3ZlLWEtdGFncy1mcm9tLWxpbmstY29tcG9uZW50cydcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwgY2hpbGRQcm9wcylcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGEgey4uLnJlc3RQcm9wc30gey4uLmNoaWxkUHJvcHN9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L2E+XG4gICAgKVxuICB9XG4pXG5cbmNvbnN0IExpbmtTdGF0dXNDb250ZXh0ID0gY3JlYXRlQ29udGV4dDx7XG4gIHBlbmRpbmc6IGJvb2xlYW5cbn0+KHtcbiAgLy8gV2UgZG8gbm90IHN1cHBvcnQgbGluayBzdGF0dXMgaW4gdGhlIFBhZ2VzIFJvdXRlciwgc28gd2UgYWx3YXlzIHJldHVybiBmYWxzZVxuICBwZW5kaW5nOiBmYWxzZSxcbn0pXG5cbmV4cG9ydCBjb25zdCB1c2VMaW5rU3RhdHVzID0gKCkgPT4ge1xuICAvLyBUaGlzIGJlaGF2aW91ciBpcyBsaWtlIFJlYWN0J3MgdXNlRm9ybVN0YXR1cy4gV2hlbiB0aGUgY29tcG9uZW50IGlzIG5vdCB1bmRlclxuICAvLyBhIDxmb3JtPiB0YWcsIGl0IHdpbGwgZ2V0IHRoZSBkZWZhdWx0IHZhbHVlLCBpbnN0ZWFkIG9mIHRocm93aW5nIGFuIGVycm9yLlxuICByZXR1cm4gdXNlQ29udGV4dChMaW5rU3RhdHVzQ29udGV4dClcbn1cblxuZXhwb3J0IGRlZmF1bHQgTGlua1xuIl0sIm5hbWVzIjpbInVzZUxpbmtTdGF0dXMiLCJwcmVmZXRjaGVkIiwiU2V0IiwicHJlZmV0Y2giLCJyb3V0ZXIiLCJocmVmIiwiYXMiLCJvcHRpb25zIiwid2luZG93IiwiaXNMb2NhbFVSTCIsImJ5cGFzc1ByZWZldGNoZWRDaGVjayIsImxvY2FsZSIsInVuZGVmaW5lZCIsInByZWZldGNoZWRLZXkiLCJoYXMiLCJhZGQiLCJjYXRjaCIsImVyciIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImlzTW9kaWZpZWRFdmVudCIsImV2ZW50IiwiZXZlbnRUYXJnZXQiLCJjdXJyZW50VGFyZ2V0IiwidGFyZ2V0IiwiZ2V0QXR0cmlidXRlIiwibWV0YUtleSIsImN0cmxLZXkiLCJzaGlmdEtleSIsImFsdEtleSIsIm5hdGl2ZUV2ZW50Iiwid2hpY2giLCJsaW5rQ2xpY2tlZCIsImUiLCJyZXBsYWNlIiwic2hhbGxvdyIsInNjcm9sbCIsIm9uTmF2aWdhdGUiLCJub2RlTmFtZSIsImlzQW5jaG9yTm9kZU5hbWUiLCJ0b1VwcGVyQ2FzZSIsImhhc0F0dHJpYnV0ZSIsInByZXZlbnREZWZhdWx0IiwibG9jYXRpb24iLCJuYXZpZ2F0ZSIsImlzRGVmYXVsdFByZXZlbnRlZCIsInJvdXRlclNjcm9sbCIsImZvcm1hdFN0cmluZ09yVXJsIiwidXJsT2JqT3JTdHJpbmciLCJmb3JtYXRVcmwiLCJMaW5rIiwiUmVhY3QiLCJmb3J3YXJkUmVmIiwiTGlua0NvbXBvbmVudCIsInByb3BzIiwiZm9yd2FyZGVkUmVmIiwiY2hpbGRyZW4iLCJocmVmUHJvcCIsImFzUHJvcCIsImNoaWxkcmVuUHJvcCIsInByZWZldGNoUHJvcCIsInBhc3NIcmVmIiwib25DbGljayIsIm9uTW91c2VFbnRlciIsIm9uTW91c2VFbnRlclByb3AiLCJvblRvdWNoU3RhcnQiLCJvblRvdWNoU3RhcnRQcm9wIiwibGVnYWN5QmVoYXZpb3IiLCJyZXN0UHJvcHMiLCJhIiwidXNlQ29udGV4dCIsIlJvdXRlckNvbnRleHQiLCJwcmVmZXRjaEVuYWJsZWQiLCJjcmVhdGVQcm9wRXJyb3IiLCJhcmdzIiwiRXJyb3IiLCJrZXkiLCJleHBlY3RlZCIsImFjdHVhbCIsInJlcXVpcmVkUHJvcHNHdWFyZCIsInJlcXVpcmVkUHJvcHMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsIl8iLCJvcHRpb25hbFByb3BzR3VhcmQiLCJvcHRpb25hbFByb3BzIiwidmFsVHlwZSIsInVzZU1lbW8iLCJyZXNvbHZlZEhyZWYiLCJyZXNvbHZlZEFzIiwicmVzb2x2ZUhyZWYiLCJwcmV2aW91c0hyZWYiLCJ1c2VSZWYiLCJwcmV2aW91c0FzIiwiY2hpbGQiLCJjb25zb2xlIiwid2FybiIsIkNoaWxkcmVuIiwib25seSIsInR5cGUiLCJjaGlsZFJlZiIsInJlZiIsInNldEludGVyc2VjdGlvblJlZiIsImlzVmlzaWJsZSIsInJlc2V0VmlzaWJsZSIsInVzZUludGVyc2VjdGlvbiIsInJvb3RNYXJnaW4iLCJzZXRJbnRlcnNlY3Rpb25XaXRoUmVzZXRSZWYiLCJ1c2VDYWxsYmFjayIsImVsIiwiY3VycmVudCIsInNldFJlZiIsInVzZU1lcmdlZFJlZiIsInVzZUVmZmVjdCIsImNoaWxkUHJvcHMiLCJkZWZhdWx0UHJldmVudGVkIiwicHJpb3JpdHkiLCJfX05FWFRfTElOS19OT19UT1VDSF9TVEFSVCIsImlzQWJzb2x1dGVVcmwiLCJjdXJMb2NhbGUiLCJsb2NhbGVEb21haW4iLCJpc0xvY2FsZURvbWFpbiIsImdldERvbWFpbkxvY2FsZSIsImxvY2FsZXMiLCJkb21haW5Mb2NhbGVzIiwiYWRkQmFzZVBhdGgiLCJhZGRMb2NhbGUiLCJkZWZhdWx0TG9jYWxlIiwiZXJyb3JPbmNlIiwiY2xvbmVFbGVtZW50IiwiTGlua1N0YXR1c0NvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwicGVuZGluZyJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-browser)/./node_modules/next/dist/client/link.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(pages-dir-browser)/./node_modules/next/dist/client/use-intersection.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/next/dist/client/use-intersection.js ***!
|
||
\***********************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"useIntersection\", ({\n enumerable: true,\n get: function() {\n return useIntersection;\n }\n}));\nconst _react = __webpack_require__(/*! react */ \"(pages-dir-browser)/./node_modules/react/index.js\");\nconst _requestidlecallback = __webpack_require__(/*! ./request-idle-callback */ \"(pages-dir-browser)/./node_modules/next/dist/client/request-idle-callback.js\");\nconst hasIntersectionObserver = typeof IntersectionObserver === 'function';\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}\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}\nfunction useIntersection(param) {\n let { rootRef, rootMargin, disabled } = param;\n const isDisabled = disabled || !hasIntersectionObserver;\n const [visible, setVisible] = (0, _react.useState)(false);\n const elementRef = (0, _react.useRef)(null);\n const setElement = (0, _react.useCallback)((element)=>{\n elementRef.current = element;\n }, []);\n (0, _react.useEffect)(()=>{\n if (hasIntersectionObserver) {\n if (isDisabled || visible) return;\n const element = elementRef.current;\n if (element && element.tagName) {\n const unobserve = observe(element, (isVisible)=>isVisible && setVisible(isVisible), {\n root: rootRef == null ? void 0 : rootRef.current,\n rootMargin\n });\n return unobserve;\n }\n } else {\n if (!visible) {\n const idleCallback = (0, _requestidlecallback.requestIdleCallback)(()=>setVisible(true));\n return ()=>(0, _requestidlecallback.cancelIdleCallback)(idleCallback);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n isDisabled,\n rootMargin,\n rootRef,\n visible,\n elementRef.current\n ]);\n const resetVisible = (0, _react.useCallback)(()=>{\n setVisible(false);\n }, []);\n return [\n setElement,\n visible,\n resetVisible\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=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 prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== 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 signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(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 (prevSignature !== 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(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(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 = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3VzZS1pbnRlcnNlY3Rpb24uanMiLCJtYXBwaW5ncyI6Ijs7OzttREErRmdCQTs7O2VBQUFBOzs7bUNBL0Z5QztpREFJbEQ7QUFxQlAsTUFBTUMsMEJBQTBCLE9BQU9DLHlCQUF5QjtBQUVoRSxNQUFNQyxZQUFZLElBQUlDO0FBQ3RCLE1BQU1DLFNBQXVCLEVBQUU7QUFFL0IsU0FBU0MsZUFBZUMsT0FBb0M7SUFDMUQsTUFBTUMsS0FBSztRQUNUQyxNQUFNRixRQUFRRSxJQUFJLElBQUk7UUFDdEJDLFFBQVFILFFBQVFJLFVBQVUsSUFBSTtJQUNoQztJQUNBLE1BQU1DLFdBQVdQLE9BQU9RLElBQUksQ0FDMUIsQ0FBQ0MsTUFBUUEsSUFBSUwsSUFBSSxLQUFLRCxHQUFHQyxJQUFJLElBQUlLLElBQUlKLE1BQU0sS0FBS0YsR0FBR0UsTUFBTTtJQUUzRCxJQUFJSztJQUVKLElBQUlILFVBQVU7UUFDWkcsV0FBV1osVUFBVWEsR0FBRyxDQUFDSjtRQUN6QixJQUFJRyxVQUFVO1lBQ1osT0FBT0E7UUFDVDtJQUNGO0lBRUEsTUFBTUUsV0FBVyxJQUFJYjtJQUNyQixNQUFNYyxXQUFXLElBQUloQixxQkFBcUIsQ0FBQ2lCO1FBQ3pDQSxRQUFRQyxPQUFPLENBQUMsQ0FBQ0M7WUFDZixNQUFNQyxXQUFXTCxTQUFTRCxHQUFHLENBQUNLLE1BQU1FLE1BQU07WUFDMUMsTUFBTUMsWUFBWUgsTUFBTUksY0FBYyxJQUFJSixNQUFNSyxpQkFBaUIsR0FBRztZQUNwRSxJQUFJSixZQUFZRSxXQUFXO2dCQUN6QkYsU0FBU0U7WUFDWDtRQUNGO0lBQ0YsR0FBR2pCO0lBQ0hRLFdBQVc7UUFDVFA7UUFDQVU7UUFDQUQ7SUFDRjtJQUVBWixPQUFPc0IsSUFBSSxDQUFDbkI7SUFDWkwsVUFBVXlCLEdBQUcsQ0FBQ3BCLElBQUlPO0lBQ2xCLE9BQU9BO0FBQ1Q7QUFFQSxTQUFTYyxRQUNQQyxPQUFnQixFQUNoQlIsUUFBeUIsRUFDekJmLE9BQW9DO0lBRXBDLE1BQU0sRUFBRUMsRUFBRSxFQUFFVSxRQUFRLEVBQUVELFFBQVEsRUFBRSxHQUFHWCxlQUFlQztJQUNsRFUsU0FBU1csR0FBRyxDQUFDRSxTQUFTUjtJQUV0QkosU0FBU1csT0FBTyxDQUFDQztJQUNqQixPQUFPLFNBQVNDO1FBQ2RkLFNBQVNlLE1BQU0sQ0FBQ0Y7UUFDaEJaLFNBQVNhLFNBQVMsQ0FBQ0Q7UUFFbkIsdURBQXVEO1FBQ3ZELElBQUliLFNBQVNnQixJQUFJLEtBQUssR0FBRztZQUN2QmYsU0FBU2dCLFVBQVU7WUFDbkIvQixVQUFVNkIsTUFBTSxDQUFDeEI7WUFDakIsTUFBTTJCLFFBQVE5QixPQUFPK0IsU0FBUyxDQUM1QixDQUFDdEIsTUFBUUEsSUFBSUwsSUFBSSxLQUFLRCxHQUFHQyxJQUFJLElBQUlLLElBQUlKLE1BQU0sS0FBS0YsR0FBR0UsTUFBTTtZQUUzRCxJQUFJeUIsUUFBUSxDQUFDLEdBQUc7Z0JBQ2Q5QixPQUFPZ0MsTUFBTSxDQUFDRixPQUFPO1lBQ3ZCO1FBQ0Y7SUFDRjtBQUNGO0FBRU8sU0FBU25DLGdCQUFtQyxLQUlqQztJQUppQyxNQUNqRHNDLE9BQU8sRUFDUDNCLFVBQVUsRUFDVjRCLFFBQVEsRUFDUSxHQUppQztJQUtqRCxNQUFNQyxhQUFzQkQsWUFBWSxDQUFDdEM7SUFFekMsTUFBTSxDQUFDd0MsU0FBU0MsV0FBVyxHQUFHQyxDQUFBQSxHQUFBQSxPQUFBQSxRQUFBQSxFQUFTO0lBQ3ZDLE1BQU1DLGFBQWFDLENBQUFBLEdBQUFBLE9BQUFBLE1BQUFBLEVBQWlCO0lBQ3BDLE1BQU1DLGFBQWFDLENBQUFBLEdBQUFBLE9BQUFBLFdBQUFBLEVBQVksQ0FBQ2pCO1FBQzlCYyxXQUFXSSxPQUFPLEdBQUdsQjtJQUN2QixHQUFHLEVBQUU7SUFFTG1CLENBQUFBLEdBQUFBLE9BQUFBLFNBQUFBLEVBQVU7UUFDUixJQUFJaEQseUJBQXlCO1lBQzNCLElBQUl1QyxjQUFjQyxTQUFTO1lBRTNCLE1BQU1YLFVBQVVjLFdBQVdJLE9BQU87WUFDbEMsSUFBSWxCLFdBQVdBLFFBQVFvQixPQUFPLEVBQUU7Z0JBQzlCLE1BQU1uQixZQUFZRixRQUNoQkMsU0FDQSxDQUFDTixZQUFjQSxhQUFha0IsV0FBV2xCLFlBQ3ZDO29CQUFFZixJQUFJLEVBQUU2QixXQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxRQUFTVSxPQUFPO29CQUFFckM7Z0JBQVc7Z0JBR3ZDLE9BQU9vQjtZQUNUO1FBQ0YsT0FBTztZQUNMLElBQUksQ0FBQ1UsU0FBUztnQkFDWixNQUFNVSxlQUFlQyxDQUFBQSxHQUFBQSxxQkFBQUEsbUJBQUFBLEVBQW9CLElBQU1WLFdBQVc7Z0JBQzFELE9BQU8sSUFBTVcsQ0FBQUEsR0FBQUEscUJBQUFBLGtCQUFBQSxFQUFtQkY7WUFDbEM7UUFDRjtJQUNBLHVEQUF1RDtJQUN6RCxHQUFHO1FBQUNYO1FBQVk3QjtRQUFZMkI7UUFBU0c7UUFBU0csV0FBV0ksT0FBTztLQUFDO0lBRWpFLE1BQU1NLGVBQWVQLENBQUFBLEdBQUFBLE9BQUFBLFdBQUFBLEVBQVk7UUFDL0JMLFdBQVc7SUFDYixHQUFHLEVBQUU7SUFFTCxPQUFPO1FBQUNJO1FBQVlMO1FBQVNhO0tBQWE7QUFDNUMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9yc3RpbGx3L3NyYy9jbGllbnQvdXNlLWludGVyc2VjdGlvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtcbiAgcmVxdWVzdElkbGVDYWxsYmFjayxcbiAgY2FuY2VsSWRsZUNhbGxiYWNrLFxufSBmcm9tICcuL3JlcXVlc3QtaWRsZS1jYWxsYmFjaydcblxudHlwZSBVc2VJbnRlcnNlY3Rpb25PYnNlcnZlckluaXQgPSBQaWNrPFxuICBJbnRlcnNlY3Rpb25PYnNlcnZlckluaXQsXG4gICdyb290TWFyZ2luJyB8ICdyb290J1xuPlxuXG50eXBlIFVzZUludGVyc2VjdGlvbiA9IHsgZGlzYWJsZWQ/OiBib29sZWFuIH0gJiBVc2VJbnRlcnNlY3Rpb25PYnNlcnZlckluaXQgJiB7XG4gICAgcm9vdFJlZj86IFJlYWN0LlJlZk9iamVjdDxIVE1MRWxlbWVudCB8IG51bGw+IHwgbnVsbFxuICB9XG50eXBlIE9ic2VydmVDYWxsYmFjayA9IChpc1Zpc2libGU6IGJvb2xlYW4pID0+IHZvaWRcbnR5cGUgSWRlbnRpZmllciA9IHtcbiAgcm9vdDogRWxlbWVudCB8IERvY3VtZW50IHwgbnVsbFxuICBtYXJnaW46IHN0cmluZ1xufVxudHlwZSBPYnNlcnZlciA9IHtcbiAgaWQ6IElkZW50aWZpZXJcbiAgb2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyXG4gIGVsZW1lbnRzOiBNYXA8RWxlbWVudCwgT2JzZXJ2ZUNhbGxiYWNrPlxufVxuXG5jb25zdCBoYXNJbnRlcnNlY3Rpb25PYnNlcnZlciA9IHR5cGVvZiBJbnRlcnNlY3Rpb25PYnNlcnZlciA9PT0gJ2Z1bmN0aW9uJ1xuXG5jb25zdCBvYnNlcnZlcnMgPSBuZXcgTWFwPElkZW50aWZpZXIsIE9ic2VydmVyPigpXG5jb25zdCBpZExpc3Q6IElkZW50aWZpZXJbXSA9IFtdXG5cbmZ1bmN0aW9uIGNyZWF0ZU9ic2VydmVyKG9wdGlvbnM6IFVzZUludGVyc2VjdGlvbk9ic2VydmVySW5pdCk6IE9ic2VydmVyIHtcbiAgY29uc3QgaWQgPSB7XG4gICAgcm9vdDogb3B0aW9ucy5yb290IHx8IG51bGwsXG4gICAgbWFyZ2luOiBvcHRpb25zLnJvb3RNYXJnaW4gfHwgJycsXG4gIH1cbiAgY29uc3QgZXhpc3RpbmcgPSBpZExpc3QuZmluZChcbiAgICAob2JqKSA9PiBvYmoucm9vdCA9PT0gaWQucm9vdCAmJiBvYmoubWFyZ2luID09PSBpZC5tYXJnaW5cbiAgKVxuICBsZXQgaW5zdGFuY2U6IE9ic2VydmVyIHwgdW5kZWZpbmVkXG5cbiAgaWYgKGV4aXN0aW5nKSB7XG4gICAgaW5zdGFuY2UgPSBvYnNlcnZlcnMuZ2V0KGV4aXN0aW5nKVxuICAgIGlmIChpbnN0YW5jZSkge1xuICAgICAgcmV0dXJuIGluc3RhbmNlXG4gICAgfVxuICB9XG5cbiAgY29uc3QgZWxlbWVudHMgPSBuZXcgTWFwPEVsZW1lbnQsIE9ic2VydmVDYWxsYmFjaz4oKVxuICBjb25zdCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcykgPT4ge1xuICAgIGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgIGNvbnN0IGNhbGxiYWNrID0gZWxlbWVudHMuZ2V0KGVudHJ5LnRhcmdldClcbiAgICAgIGNvbnN0IGlzVmlzaWJsZSA9IGVudHJ5LmlzSW50ZXJzZWN0aW5nIHx8IGVudHJ5LmludGVyc2VjdGlvblJhdGlvID4gMFxuICAgICAgaWYgKGNhbGxiYWNrICYmIGlzVmlzaWJsZSkge1xuICAgICAgICBjYWxsYmFjayhpc1Zpc2libGUpXG4gICAgICB9XG4gICAgfSlcbiAgfSwgb3B0aW9ucylcbiAgaW5zdGFuY2UgPSB7XG4gICAgaWQsXG4gICAgb2JzZXJ2ZXIsXG4gICAgZWxlbWVudHMsXG4gIH1cblxuICBpZExpc3QucHVzaChpZClcbiAgb2JzZXJ2ZXJzLnNldChpZCwgaW5zdGFuY2UpXG4gIHJldHVybiBpbnN0YW5jZVxufVxuXG5mdW5jdGlvbiBvYnNlcnZlKFxuICBlbGVtZW50OiBFbGVtZW50LFxuICBjYWxsYmFjazogT2JzZXJ2ZUNhbGxiYWNrLFxuICBvcHRpb25zOiBVc2VJbnRlcnNlY3Rpb25PYnNlcnZlckluaXRcbik6ICgpID0+IHZvaWQge1xuICBjb25zdCB7IGlkLCBvYnNlcnZlciwgZWxlbWVudHMgfSA9IGNyZWF0ZU9ic2VydmVyKG9wdGlvbnMpXG4gIGVsZW1lbnRzLnNldChlbGVtZW50LCBjYWxsYmFjaylcblxuICBvYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQpXG4gIHJldHVybiBmdW5jdGlvbiB1bm9ic2VydmUoKTogdm9pZCB7XG4gICAgZWxlbWVudHMuZGVsZXRlKGVsZW1lbnQpXG4gICAgb2JzZXJ2ZXIudW5vYnNlcnZlKGVsZW1lbnQpXG5cbiAgICAvLyBEZXN0cm95IG9ic2VydmVyIHdoZW4gdGhlcmUncyBub3RoaW5nIGxlZnQgdG8gd2F0Y2g6XG4gICAgaWYgKGVsZW1lbnRzLnNpemUgPT09IDApIHtcbiAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICAgICAgb2JzZXJ2ZXJzLmRlbGV0ZShpZClcbiAgICAgIGNvbnN0IGluZGV4ID0gaWRMaXN0LmZpbmRJbmRleChcbiAgICAgICAgKG9iaikgPT4gb2JqLnJvb3QgPT09IGlkLnJvb3QgJiYgb2JqLm1hcmdpbiA9PT0gaWQubWFyZ2luXG4gICAgICApXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICBpZExpc3Quc3BsaWNlKGluZGV4LCAxKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlSW50ZXJzZWN0aW9uPFQgZXh0ZW5kcyBFbGVtZW50Pih7XG4gIHJvb3RSZWYsXG4gIHJvb3RNYXJnaW4sXG4gIGRpc2FibGVkLFxufTogVXNlSW50ZXJzZWN0aW9uKTogWyhlbGVtZW50OiBUIHwgbnVsbCkgPT4gdm9pZCwgYm9vbGVhbiwgKCkgPT4gdm9pZF0ge1xuICBjb25zdCBpc0Rpc2FibGVkOiBib29sZWFuID0gZGlzYWJsZWQgfHwgIWhhc0ludGVyc2VjdGlvbk9ic2VydmVyXG5cbiAgY29uc3QgW3Zpc2libGUsIHNldFZpc2libGVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IGVsZW1lbnRSZWYgPSB1c2VSZWY8VCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHNldEVsZW1lbnQgPSB1c2VDYWxsYmFjaygoZWxlbWVudDogVCB8IG51bGwpID0+IHtcbiAgICBlbGVtZW50UmVmLmN1cnJlbnQgPSBlbGVtZW50XG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGhhc0ludGVyc2VjdGlvbk9ic2VydmVyKSB7XG4gICAgICBpZiAoaXNEaXNhYmxlZCB8fCB2aXNpYmxlKSByZXR1cm5cblxuICAgICAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRSZWYuY3VycmVudFxuICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC50YWdOYW1lKSB7XG4gICAgICAgIGNvbnN0IHVub2JzZXJ2ZSA9IG9ic2VydmUoXG4gICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAoaXNWaXNpYmxlKSA9PiBpc1Zpc2libGUgJiYgc2V0VmlzaWJsZShpc1Zpc2libGUpLFxuICAgICAgICAgIHsgcm9vdDogcm9vdFJlZj8uY3VycmVudCwgcm9vdE1hcmdpbiB9XG4gICAgICAgIClcblxuICAgICAgICByZXR1cm4gdW5vYnNlcnZlXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdmlzaWJsZSkge1xuICAgICAgICBjb25zdCBpZGxlQ2FsbGJhY2sgPSByZXF1ZXN0SWRsZUNhbGxiYWNrKCgpID0+IHNldFZpc2libGUodHJ1ZSkpXG4gICAgICAgIHJldHVybiAoKSA9PiBjYW5jZWxJZGxlQ2FsbGJhY2soaWRsZUNhbGxiYWNrKVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtpc0Rpc2FibGVkLCByb290TWFyZ2luLCByb290UmVmLCB2aXNpYmxlLCBlbGVtZW50UmVmLmN1cnJlbnRdKVxuXG4gIGNvbnN0IHJlc2V0VmlzaWJsZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRWaXNpYmxlKGZhbHNlKVxuICB9LCBbXSlcblxuICByZXR1cm4gW3NldEVsZW1lbnQsIHZpc2libGUsIHJlc2V0VmlzaWJsZV1cbn1cbiJdLCJuYW1lcyI6WyJ1c2VJbnRlcnNlY3Rpb24iLCJoYXNJbnRlcnNlY3Rpb25PYnNlcnZlciIsIkludGVyc2VjdGlvbk9ic2VydmVyIiwib2JzZXJ2ZXJzIiwiTWFwIiwiaWRMaXN0IiwiY3JlYXRlT2JzZXJ2ZXIiLCJvcHRpb25zIiwiaWQiLCJyb290IiwibWFyZ2luIiwicm9vdE1hcmdpbiIsImV4aXN0aW5nIiwiZmluZCIsIm9iaiIsImluc3RhbmNlIiwiZ2V0IiwiZWxlbWVudHMiLCJvYnNlcnZlciIsImVudHJpZXMiLCJmb3JFYWNoIiwiZW50cnkiLCJjYWxsYmFjayIsInRhcmdldCIsImlzVmlzaWJsZSIsImlzSW50ZXJzZWN0aW5nIiwiaW50ZXJzZWN0aW9uUmF0aW8iLCJwdXNoIiwic2V0Iiwib2JzZXJ2ZSIsImVsZW1lbnQiLCJ1bm9ic2VydmUiLCJkZWxldGUiLCJzaXplIiwiZGlzY29ubmVjdCIsImluZGV4IiwiZmluZEluZGV4Iiwic3BsaWNlIiwicm9vdFJlZiIsImRpc2FibGVkIiwiaXNEaXNhYmxlZCIsInZpc2libGUiLCJzZXRWaXNpYmxlIiwidXNlU3RhdGUiLCJlbGVtZW50UmVmIiwidXNlUmVmIiwic2V0RWxlbWVudCIsInVzZUNhbGxiYWNrIiwiY3VycmVudCIsInVzZUVmZmVjdCIsInRhZ05hbWUiLCJpZGxlQ2FsbGJhY2siLCJyZXF1ZXN0SWRsZUNhbGxiYWNrIiwiY2FuY2VsSWRsZUNhbGxiYWNrIiwicmVzZXRWaXNpYmxlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(pages-dir-browser)/./node_modules/next/dist/client/use-intersection.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(pages-dir-browser)/./node_modules/next/dist/client/use-merged-ref.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/next/dist/client/use-merged-ref.js ***!
|
||
\*********************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"useMergedRef\", ({\n enumerable: true,\n get: function() {\n return useMergedRef;\n }\n}));\nconst _react = __webpack_require__(/*! react */ \"(pages-dir-browser)/./node_modules/react/index.js\");\nfunction useMergedRef(refA, refB) {\n const cleanupA = (0, _react.useRef)(null);\n const cleanupB = (0, _react.useRef)(null);\n // NOTE: In theory, we could skip the wrapping if only one of the refs is non-null.\n // (this happens often if the user doesn't pass a ref to Link/Form/Image)\n // But this can cause us to leak a cleanup-ref into user code (e.g. via `<Link legacyBehavior>`),\n // and the user might pass that ref into ref-merging library that doesn't support cleanup refs\n // (because it hasn't been updated for React 19)\n // which can then cause things to blow up, because a cleanup-returning ref gets called with `null`.\n // So in practice, it's safer to be defensive and always wrap the ref, even on React 19.\n return (0, _react.useCallback)((current)=>{\n if (current === null) {\n const cleanupFnA = cleanupA.current;\n if (cleanupFnA) {\n cleanupA.current = null;\n cleanupFnA();\n }\n const cleanupFnB = cleanupB.current;\n if (cleanupFnB) {\n cleanupB.current = null;\n cleanupFnB();\n }\n } else {\n if (refA) {\n cleanupA.current = applyRef(refA, current);\n }\n if (refB) {\n cleanupB.current = applyRef(refB, current);\n }\n }\n }, [\n refA,\n refB\n ]);\n}\nfunction applyRef(refA, current) {\n if (typeof refA === 'function') {\n const cleanup = refA(current);\n if (typeof cleanup === 'function') {\n return cleanup;\n } else {\n return ()=>refA(null);\n }\n } else {\n refA.current = current;\n return ()=>{\n refA.current = null;\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=use-merged-ref.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 prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== 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 signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(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 (prevSignature !== 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(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(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 = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3VzZS1tZXJnZWQtcmVmLmpzIiwibWFwcGluZ3MiOiI7Ozs7Z0RBU2dCQTs7O2VBQUFBOzs7bUNBVDhCO0FBU3ZDLFNBQVNBLGFBQ2RDLElBQW1CLEVBQ25CQyxJQUFtQjtJQUVuQixNQUFNQyxXQUFXQyxDQUFBQSxHQUFBQSxPQUFBQSxNQUFBQSxFQUE0QjtJQUM3QyxNQUFNQyxXQUFXRCxDQUFBQSxHQUFBQSxPQUFBQSxNQUFBQSxFQUE0QjtJQUU3QyxtRkFBbUY7SUFDbkYseUVBQXlFO0lBQ3pFLGlHQUFpRztJQUNqRyw4RkFBOEY7SUFDOUYsZ0RBQWdEO0lBQ2hELG1HQUFtRztJQUNuRyx3RkFBd0Y7SUFDeEYsT0FBT0UsQ0FBQUEsR0FBQUEsT0FBQUEsV0FBQUEsRUFDTCxDQUFDQztRQUNDLElBQUlBLFlBQVksTUFBTTtZQUNwQixNQUFNQyxhQUFhTCxTQUFTSSxPQUFPO1lBQ25DLElBQUlDLFlBQVk7Z0JBQ2RMLFNBQVNJLE9BQU8sR0FBRztnQkFDbkJDO1lBQ0Y7WUFDQSxNQUFNQyxhQUFhSixTQUFTRSxPQUFPO1lBQ25DLElBQUlFLFlBQVk7Z0JBQ2RKLFNBQVNFLE9BQU8sR0FBRztnQkFDbkJFO1lBQ0Y7UUFDRixPQUFPO1lBQ0wsSUFBSVIsTUFBTTtnQkFDUkUsU0FBU0ksT0FBTyxHQUFHRyxTQUFTVCxNQUFNTTtZQUNwQztZQUNBLElBQUlMLE1BQU07Z0JBQ1JHLFNBQVNFLE9BQU8sR0FBR0csU0FBU1IsTUFBTUs7WUFDcEM7UUFDRjtJQUNGLEdBQ0E7UUFBQ047UUFBTUM7S0FBSztBQUVoQjtBQUVBLFNBQVNRLFNBQ1BULElBQWdDLEVBQ2hDTSxPQUFpQjtJQUVqQixJQUFJLE9BQU9OLFNBQVMsWUFBWTtRQUM5QixNQUFNVSxVQUFVVixLQUFLTTtRQUNyQixJQUFJLE9BQU9JLFlBQVksWUFBWTtZQUNqQyxPQUFPQTtRQUNULE9BQU87WUFDTCxPQUFPLElBQU1WLEtBQUs7UUFDcEI7SUFDRixPQUFPO1FBQ0xBLEtBQUtNLE9BQU8sR0FBR0E7UUFDZixPQUFPO1lBQ0xOLEtBQUtNLE9BQU8sR0FBRztRQUNqQjtJQUNGO0FBQ0YiLCJzb3VyY2VzIjpbIi9Vc2Vycy9yc3RpbGx3L3NyYy9jbGllbnQvdXNlLW1lcmdlZC1yZWYudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdHlwZSBSZWYgfSBmcm9tICdyZWFjdCdcblxuLy8gVGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgaG9vayB0byBzdXBwb3J0IFJlYWN0IDE4IGFuZCAxOSByZWZzLlxuLy8gSW4gMTksIGEgY2xlYW51cCBmdW5jdGlvbiBmcm9tIHJlZnMgbWF5IGJlIHJldHVybmVkLlxuLy8gSW4gMTgsIHJldHVybmluZyBhIGNsZWFudXAgZnVuY3Rpb24gY3JlYXRlcyBhIHdhcm5pbmcuXG4vLyBTaW5jZSB3ZSB0YWtlIHVzZXJzcGFjZSByZWZzLCB3ZSBkb24ndCBrbm93IGFoZWFkIG9mIHRpbWUgaWYgYSBjbGVhbnVwIGZ1bmN0aW9uIHdpbGwgYmUgcmV0dXJuZWQuXG4vLyBUaGlzIGltcGxlbWVudHMgY2xlYW51cCBmdW5jdGlvbnMgd2l0aCB0aGUgb2xkIGJlaGF2aW9yIGluIDE4LlxuLy8gV2Uga25vdyByZWZzIGFyZSBhbHdheXMgY2FsbGVkIGFsdGVybmF0aW5nIHdpdGggYG51bGxgIGFuZCB0aGVuIGBUYC5cbi8vIFNvIGEgY2FsbCB3aXRoIGBudWxsYCBtZWFucyB3ZSBuZWVkIHRvIGNhbGwgdGhlIHByZXZpb3VzIGNsZWFudXAgZnVuY3Rpb25zLlxuZXhwb3J0IGZ1bmN0aW9uIHVzZU1lcmdlZFJlZjxURWxlbWVudD4oXG4gIHJlZkE6IFJlZjxURWxlbWVudD4sXG4gIHJlZkI6IFJlZjxURWxlbWVudD5cbik6IFJlZjxURWxlbWVudD4ge1xuICBjb25zdCBjbGVhbnVwQSA9IHVzZVJlZjwoKCkgPT4gdm9pZCkgfCBudWxsPihudWxsKVxuICBjb25zdCBjbGVhbnVwQiA9IHVzZVJlZjwoKCkgPT4gdm9pZCkgfCBudWxsPihudWxsKVxuXG4gIC8vIE5PVEU6IEluIHRoZW9yeSwgd2UgY291bGQgc2tpcCB0aGUgd3JhcHBpbmcgaWYgb25seSBvbmUgb2YgdGhlIHJlZnMgaXMgbm9uLW51bGwuXG4gIC8vICh0aGlzIGhhcHBlbnMgb2Z0ZW4gaWYgdGhlIHVzZXIgZG9lc24ndCBwYXNzIGEgcmVmIHRvIExpbmsvRm9ybS9JbWFnZSlcbiAgLy8gQnV0IHRoaXMgY2FuIGNhdXNlIHVzIHRvIGxlYWsgYSBjbGVhbnVwLXJlZiBpbnRvIHVzZXIgY29kZSAoZS5nLiB2aWEgYDxMaW5rIGxlZ2FjeUJlaGF2aW9yPmApLFxuICAvLyBhbmQgdGhlIHVzZXIgbWlnaHQgcGFzcyB0aGF0IHJlZiBpbnRvIHJlZi1tZXJnaW5nIGxpYnJhcnkgdGhhdCBkb2Vzbid0IHN1cHBvcnQgY2xlYW51cCByZWZzXG4gIC8vIChiZWNhdXNlIGl0IGhhc24ndCBiZWVuIHVwZGF0ZWQgZm9yIFJlYWN0IDE5KVxuICAvLyB3aGljaCBjYW4gdGhlbiBjYXVzZSB0aGluZ3MgdG8gYmxvdyB1cCwgYmVjYXVzZSBhIGNsZWFudXAtcmV0dXJuaW5nIHJlZiBnZXRzIGNhbGxlZCB3aXRoIGBudWxsYC5cbiAgLy8gU28gaW4gcHJhY3RpY2UsIGl0J3Mgc2FmZXIgdG8gYmUgZGVmZW5zaXZlIGFuZCBhbHdheXMgd3JhcCB0aGUgcmVmLCBldmVuIG9uIFJlYWN0IDE5LlxuICByZXR1cm4gdXNlQ2FsbGJhY2soXG4gICAgKGN1cnJlbnQ6IFRFbGVtZW50IHwgbnVsbCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKGN1cnJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgY2xlYW51cEZuQSA9IGNsZWFudXBBLmN1cnJlbnRcbiAgICAgICAgaWYgKGNsZWFudXBGbkEpIHtcbiAgICAgICAgICBjbGVhbnVwQS5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgIGNsZWFudXBGbkEoKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNsZWFudXBGbkIgPSBjbGVhbnVwQi5jdXJyZW50XG4gICAgICAgIGlmIChjbGVhbnVwRm5CKSB7XG4gICAgICAgICAgY2xlYW51cEIuY3VycmVudCA9IG51bGxcbiAgICAgICAgICBjbGVhbnVwRm5CKClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHJlZkEpIHtcbiAgICAgICAgICBjbGVhbnVwQS5jdXJyZW50ID0gYXBwbHlSZWYocmVmQSwgY3VycmVudClcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVmQikge1xuICAgICAgICAgIGNsZWFudXBCLmN1cnJlbnQgPSBhcHBseVJlZihyZWZCLCBjdXJyZW50KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbcmVmQSwgcmVmQl1cbiAgKVxufVxuXG5mdW5jdGlvbiBhcHBseVJlZjxURWxlbWVudD4oXG4gIHJlZkE6IE5vbk51bGxhYmxlPFJlZjxURWxlbWVudD4+LFxuICBjdXJyZW50OiBURWxlbWVudFxuKSB7XG4gIGlmICh0eXBlb2YgcmVmQSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0IGNsZWFudXAgPSByZWZBKGN1cnJlbnQpXG4gICAgaWYgKHR5cGVvZiBjbGVhbnVwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gY2xlYW51cFxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKCkgPT4gcmVmQShudWxsKVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZWZBLmN1cnJlbnQgPSBjdXJyZW50XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHJlZkEuY3VycmVudCA9IG51bGxcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJ1c2VNZXJnZWRSZWYiLCJyZWZBIiwicmVmQiIsImNsZWFudXBBIiwidXNlUmVmIiwiY2xlYW51cEIiLCJ1c2VDYWxsYmFjayIsImN1cnJlbnQiLCJjbGVhbnVwRm5BIiwiY2xlYW51cEZuQiIsImFwcGx5UmVmIiwiY2xlYW51cCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-browser)/./node_modules/next/dist/client/use-merged-ref.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(pages-dir-browser)/./node_modules/next/dist/shared/lib/utils/error-once.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/next/dist/shared/lib/utils/error-once.js ***!
|
||
\***************************************************************/
|
||
/***/ ((module, exports, __webpack_require__) => {
|
||
|
||
"use strict";
|
||
eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"errorOnce\", ({\n enumerable: true,\n get: function() {\n return errorOnce;\n }\n}));\nlet errorOnce = (_)=>{};\nif (true) {\n const errors = new Set();\n errorOnce = (msg)=>{\n if (!errors.has(msg)) {\n console.error(msg);\n }\n errors.add(msg);\n };\n} //# sourceMappingURL=error-once.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 prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== 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 signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(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 (prevSignature !== 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(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(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 = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi91dGlscy9lcnJvci1vbmNlLmpzIiwibWFwcGluZ3MiOiI7Ozs7NkNBV1NBOzs7ZUFBQUE7OztBQVhULElBQUlBLFlBQVksQ0FBQ0MsS0FBZTtBQUNoQyxJQUFJQyxJQUFvQixFQUFtQjtJQUN6QyxNQUFNRyxTQUFTLElBQUlDO0lBQ25CTixZQUFZLENBQUNPO1FBQ1gsSUFBSSxDQUFDRixPQUFPRyxHQUFHLENBQUNELE1BQU07WUFDcEJFLFFBQVFDLEtBQUssQ0FBQ0g7UUFDaEI7UUFDQUYsT0FBT00sR0FBRyxDQUFDSjtJQUNiO0FBQ0YiLCJzb3VyY2VzIjpbIi9zcmMvc2hhcmVkL2xpYi91dGlscy9lcnJvci1vbmNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImxldCBlcnJvck9uY2UgPSAoXzogc3RyaW5nKSA9PiB7fVxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgY29uc3QgZXJyb3JzID0gbmV3IFNldDxzdHJpbmc+KClcbiAgZXJyb3JPbmNlID0gKG1zZzogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCFlcnJvcnMuaGFzKG1zZykpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IobXNnKVxuICAgIH1cbiAgICBlcnJvcnMuYWRkKG1zZylcbiAgfVxufVxuXG5leHBvcnQgeyBlcnJvck9uY2UgfVxuIl0sIm5hbWVzIjpbImVycm9yT25jZSIsIl8iLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJlcnJvcnMiLCJTZXQiLCJtc2ciLCJoYXMiLCJjb25zb2xlIiwiZXJyb3IiLCJhZGQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-browser)/./node_modules/next/dist/shared/lib/utils/error-once.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(pages-dir-browser)/./node_modules/next/link.js":
|
||
/*!***********************************!*\
|
||
!*** ./node_modules/next/link.js ***!
|
||
\***********************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
eval(__webpack_require__.ts("module.exports = __webpack_require__(/*! ./dist/client/link */ \"(pages-dir-browser)/./node_modules/next/dist/client/link.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2xpbmsuanMiLCJtYXBwaW5ncyI6IkFBQUEsNkhBQThDIiwic291cmNlcyI6WyIvVXNlcnMvcnN0aWxsdy9Eb2N1bWVudHMvdGNnLXZhdWx0L25vZGVfbW9kdWxlcy9uZXh0L2xpbmsuanMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Rpc3QvY2xpZW50L2xpbmsnKVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(pages-dir-browser)/./node_modules/next/link.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(pages-dir-browser)/./node_modules/next/router.js":
|
||
/*!*************************************!*\
|
||
!*** ./node_modules/next/router.js ***!
|
||
\*************************************/
|
||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||
|
||
eval(__webpack_require__.ts("module.exports = __webpack_require__(/*! ./dist/client/router */ \"(pages-dir-browser)/./node_modules/next/dist/client/router.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L3JvdXRlci5qcyIsIm1hcHBpbmdzIjoiQUFBQSxpSUFBZ0QiLCJzb3VyY2VzIjpbIi9Vc2Vycy9yc3RpbGx3L0RvY3VtZW50cy90Y2ctdmF1bHQvbm9kZV9tb2R1bGVzL25leHQvcm91dGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9kaXN0L2NsaWVudC9yb3V0ZXInKVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(pages-dir-browser)/./node_modules/next/router.js\n"));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(pages-dir-browser)/./pages/cards.js":
|
||
/*!************************!*\
|
||
!*** ./pages/cards.js ***!
|
||
\************************/
|
||
/***/ ((__webpack_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 */ \"default\": () => (/* binding */ Cards)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(pages-dir-browser)/./node_modules/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(pages-dir-browser)/./node_modules/react/index.js\");\n/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/router */ \"(pages-dir-browser)/./node_modules/next/router.js\");\n/* harmony import */ var _components_Layout__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/Layout */ \"(pages-dir-browser)/./components/Layout.js\");\n\nvar _s = $RefreshSig$(), _s1 = $RefreshSig$();\n\n\n\nfunction Cards() {\n var _tcgOptions_find, _rarityOptions_find, _setOptions_find, _valueRangeOptions_find;\n _s();\n const router = (0,next_router__WEBPACK_IMPORTED_MODULE_2__.useRouter)();\n const user = {\n email: 'me@randallstillwell.com',\n role: 'user'\n };\n const [cards, setCards] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [loadingMore, setLoadingMore] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [searchQuery, setSearchQuery] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('');\n const [selectedTCG, setSelectedTCG] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('all');\n const [selectedRarity, setSelectedRarity] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('all');\n const [selectedSet, setSelectedSet] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('all');\n const [selectedValueRange, setSelectedValueRange] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('all');\n const [viewMode, setViewMode] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('grid'); // grid or list\n const [pagination, setPagination] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n page: 1,\n limit: 50,\n total: 0,\n pages: 0\n });\n const [filters, setFilters] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n games: [],\n rarities: [],\n sets: []\n });\n const [hasMore, setHasMore] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const loadingMoreRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(false);\n const hasMoreRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(true);\n // Fetch cards from database\n const fetchCards = async function() {\n let isLoadMore = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;\n try {\n if (isLoadMore) {\n setLoadingMore(true);\n loadingMoreRef.current = true;\n } else {\n setLoading(true);\n }\n const params = new URLSearchParams({\n query: searchQuery,\n game: selectedTCG,\n rarity: selectedRarity,\n set: selectedSet,\n minPrice: selectedValueRange === 'under-50' ? '0' : selectedValueRange === '50-100' ? '50' : selectedValueRange === '100-500' ? '100' : selectedValueRange === '500-1000' ? '500' : selectedValueRange === 'over-1000' ? '1000' : '',\n maxPrice: selectedValueRange === '50-100' ? '100' : selectedValueRange === '100-500' ? '500' : selectedValueRange === '500-1000' ? '1000' : '',\n page: pagination.page.toString(),\n limit: pagination.limit.toString()\n });\n const response = await fetch(\"/api/cards/search?\".concat(params));\n const data = await response.json();\n if (data.success) {\n if (isLoadMore) {\n setCards((prevCards)=>[\n ...prevCards,\n ...data.cards\n ]);\n } else {\n setCards(data.cards);\n }\n setPagination(data.pagination);\n setFilters(data.filters);\n const hasMoreCards = data.pagination.page < data.pagination.pages;\n setHasMore(hasMoreCards);\n hasMoreRef.current = hasMoreCards;\n } else {\n console.error('Failed to fetch cards:', data.error);\n if (!isLoadMore) {\n setCards([]);\n }\n }\n } catch (error) {\n console.error('Error fetching cards:', error);\n if (!isLoadMore) {\n setCards([]);\n }\n } finally{\n setLoading(false);\n setLoadingMore(false);\n loadingMoreRef.current = false;\n }\n };\n // Initial load\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Cards.useEffect\": ()=>{\n setPagination({\n \"Cards.useEffect\": (prev)=>({\n ...prev,\n page: 1\n })\n }[\"Cards.useEffect\"]);\n setCards([]);\n setHasMore(true);\n hasMoreRef.current = true;\n fetchCards(false);\n }\n }[\"Cards.useEffect\"], [\n selectedTCG,\n selectedRarity,\n selectedSet,\n selectedValueRange\n ]);\n // Handle search with debounce\n const [searchTimeout, setSearchTimeout] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const handleSearchChange = (value)=>{\n setSearchQuery(value);\n // Clear existing timeout\n if (searchTimeout) {\n clearTimeout(searchTimeout);\n }\n // Set new timeout for search\n const newTimeout = setTimeout(()=>{\n setPagination((prev)=>({\n ...prev,\n page: 1\n }));\n setCards([]);\n setHasMore(true);\n hasMoreRef.current = true;\n fetchCards(false);\n }, 500); // 500ms delay\n setSearchTimeout(newTimeout);\n };\n // Cleanup timeout on unmount\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Cards.useEffect\": ()=>{\n return ({\n \"Cards.useEffect\": ()=>{\n if (searchTimeout) {\n clearTimeout(searchTimeout);\n }\n }\n })[\"Cards.useEffect\"];\n }\n }[\"Cards.useEffect\"], [\n searchTimeout\n ]);\n // Load more cards\n const loadMoreCards = async ()=>{\n if (!loadingMoreRef.current && hasMoreRef.current) {\n const nextPage = pagination.page + 1;\n setPagination((prev)=>({\n ...prev,\n page: nextPage\n }));\n // Use the next page number directly in the fetch\n try {\n setLoadingMore(true);\n loadingMoreRef.current = true;\n const params = new URLSearchParams({\n query: searchQuery,\n game: selectedTCG,\n rarity: selectedRarity,\n set: selectedSet,\n minPrice: selectedValueRange === 'under-50' ? '0' : selectedValueRange === '50-100' ? '50' : selectedValueRange === '100-500' ? '100' : selectedValueRange === '500-1000' ? '500' : selectedValueRange === 'over-1000' ? '1000' : '',\n maxPrice: selectedValueRange === '50-100' ? '100' : selectedValueRange === '100-500' ? '500' : selectedValueRange === '500-1000' ? '1000' : '',\n page: nextPage.toString(),\n limit: pagination.limit.toString()\n });\n const response = await fetch(\"/api/cards/search?\".concat(params));\n const data = await response.json();\n if (data.success) {\n setCards((prevCards)=>[\n ...prevCards,\n ...data.cards\n ]);\n setPagination(data.pagination);\n setFilters(data.filters);\n const hasMoreCards = data.pagination.page < data.pagination.pages;\n setHasMore(hasMoreCards);\n hasMoreRef.current = hasMoreCards;\n } else {\n console.error('Failed to fetch more cards:', data.error);\n }\n } catch (error) {\n console.error('Error fetching more cards:', error);\n } finally{\n setLoadingMore(false);\n loadingMoreRef.current = false;\n }\n }\n };\n // Update refs when state changes\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Cards.useEffect\": ()=>{\n hasMoreRef.current = hasMore;\n loadingMoreRef.current = loadingMore;\n }\n }[\"Cards.useEffect\"], [\n hasMore,\n loadingMore\n ]);\n // Intersection Observer for infinite scroll\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Cards.useEffect\": ()=>{\n const observer = new IntersectionObserver({\n \"Cards.useEffect\": (entries)=>{\n entries.forEach({\n \"Cards.useEffect\": (entry)=>{\n if (entry.isIntersecting && hasMoreRef.current && !loadingMoreRef.current) {\n loadMoreCards();\n }\n }\n }[\"Cards.useEffect\"]);\n }\n }[\"Cards.useEffect\"], {\n rootMargin: '50px',\n threshold: 0.1\n });\n const setupObserver = {\n \"Cards.useEffect.setupObserver\": ()=>{\n const sentinel = document.getElementById('infinite-scroll-sentinel');\n if (sentinel) {\n observer.observe(sentinel);\n } else {\n setTimeout(setupObserver, 100);\n }\n }\n }[\"Cards.useEffect.setupObserver\"];\n setupObserver();\n return ({\n \"Cards.useEffect\": ()=>{\n const sentinel = document.getElementById('infinite-scroll-sentinel');\n if (sentinel) {\n observer.unobserve(sentinel);\n }\n }\n })[\"Cards.useEffect\"];\n }\n }[\"Cards.useEffect\"], []);\n const getRarityColor = (rarity)=>{\n // Map database rarity values to colors\n const rarityColorMap = {\n 'common': '#6B7280',\n 'uncommon': '#10B981',\n 'rare': '#F59E0B',\n 'mythic': '#FFD700',\n 'holographic': '#FF6B6B',\n 'enchanted': '#A855F7',\n 'secret rare': '#FF6B6B',\n 'ultra rare': '#A855F7'\n };\n return rarityColorMap[rarity === null || rarity === void 0 ? void 0 : rarity.toLowerCase()] || '#6B7280';\n };\n const tcgOptions = [\n {\n value: 'MTG',\n label: 'Magic: The Gathering',\n color: 'purple',\n icon: '🔮'\n },\n {\n value: 'Pokemon',\n label: 'Pokemon',\n color: 'blue',\n icon: '⚡'\n },\n {\n value: 'Lorcana',\n label: 'Disney Lorcana',\n color: 'pink',\n icon: '✨'\n }\n ];\n const rarityOptions = [\n {\n value: 'all',\n label: 'All Rarities'\n },\n {\n value: 'common',\n label: 'Common'\n },\n {\n value: 'uncommon',\n label: 'Uncommon'\n },\n {\n value: 'rare',\n label: 'Rare'\n },\n {\n value: 'mythic',\n label: 'Mythic'\n },\n {\n value: 'enchanted',\n label: 'Enchanted'\n },\n ...filters.rarities.filter((rarity)=>![\n 'all',\n 'common',\n 'uncommon',\n 'rare',\n 'mythic',\n 'enchanted'\n ].includes(rarity)).map((rarity)=>({\n value: rarity,\n label: rarity,\n color: getRarityColor(rarity)\n }))\n ];\n const setOptions = [\n {\n value: 'all',\n label: 'All Sets'\n },\n ...filters.sets.map((set)=>({\n value: set,\n label: set\n }))\n ];\n const valueRangeOptions = [\n {\n value: 'all',\n label: 'All Values'\n },\n {\n value: 'under-50',\n label: 'Under $50'\n },\n {\n value: '50-100',\n label: '$50 - $100'\n },\n {\n value: '100-500',\n label: '$100 - $500'\n },\n {\n value: '500-1000',\n label: '$500 - $1,000'\n },\n {\n value: 'over-1000',\n label: 'Over $1,000'\n }\n ];\n const formatCurrency = (amount)=>{\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD'\n }).format(amount);\n };\n const getRarityLabel = (rarity)=>{\n const rarityOption = rarityOptions.find((option)=>option.value === rarity);\n return rarityOption ? rarityOption.label : rarity;\n };\n if (loading && cards.length === 0) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Layout__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n user: user,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-center min-h-screen\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"animate-spin rounded-full h-32 w-32 border-b-2\",\n style: {\n borderColor: 'var(--text-accent)'\n }\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 307,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 306,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 305,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Layout__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n user: user,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-6\",\n style: {\n backgroundColor: 'var(--bg-secondary)',\n borderBottom: '1px solid var(--border)'\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between\",\n children: [\n /*#__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)(\"h1\", {\n className: \"text-3xl font-bold mb-2\",\n style: {\n color: 'var(--text-primary)'\n },\n children: \"Cards\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 319,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-lg\",\n style: {\n color: 'var(--text-secondary)'\n },\n children: \"Browse and manage your card collection\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 322,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 318,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setViewMode('grid'),\n className: \"p-2 rounded-xl transition-all duration-200 \".concat(viewMode === 'grid' ? 'shadow-lg' : 'hover:shadow-md'),\n style: {\n backgroundColor: viewMode === 'grid' ? 'var(--bg-tertiary)' : 'transparent',\n color: viewMode === 'grid' ? 'var(--text-primary)' : 'var(--text-secondary)'\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M4 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2V6zM14 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V6zM4 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2v-2zM14 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2v-2z\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 340,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 339,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 327,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setViewMode('list'),\n className: \"p-2 rounded-xl transition-all duration-200 \".concat(viewMode === 'list' ? 'shadow-lg' : 'hover:shadow-md'),\n style: {\n backgroundColor: viewMode === 'list' ? 'var(--bg-tertiary)' : 'transparent',\n color: viewMode === 'list' ? 'var(--text-primary)' : 'var(--text-secondary)'\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"h-6 w-6\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M4 6h16M4 10h16M4 14h16M4 18h16\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 356,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 355,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 343,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 326,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 317,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 316,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-6\",\n style: {\n backgroundColor: 'var(--bg-secondary)'\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold mb-3\",\n style: {\n color: 'var(--text-primary)'\n },\n children: \"Quick Filters\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 366,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-wrap gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSelectedTCG('all'),\n className: \"px-4 py-2 rounded-xl font-medium transition-all duration-200 \".concat(selectedTCG === 'all' ? 'shadow-lg' : 'hover:shadow-md'),\n style: {\n backgroundColor: selectedTCG === 'all' ? 'var(--bg-tertiary)' : 'transparent',\n color: selectedTCG === 'all' ? 'var(--text-primary)' : 'var(--text-secondary)',\n border: '1px solid var(--border)'\n },\n children: \"All Games\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 370,\n columnNumber: 13\n }, this),\n tcgOptions.map((option)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSelectedTCG(option.value),\n className: \"px-4 py-2 rounded-xl font-medium transition-all duration-200 flex items-center gap-2 \".concat(selectedTCG === option.value ? 'shadow-lg' : 'hover:shadow-md'),\n style: {\n backgroundColor: selectedTCG === option.value ? 'var(--bg-tertiary)' : 'transparent',\n color: selectedTCG === option.value ? 'var(--text-primary)' : 'var(--text-secondary)',\n border: '1px solid var(--border)'\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: option.icon\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 400,\n columnNumber: 17\n }, this),\n option.label\n ]\n }, option.value, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 386,\n columnNumber: 15\n }, this))\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 369,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 365,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4\",\n children: [\n /*#__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)(\"label\", {\n className: \"block text-sm font-medium mb-2\",\n style: {\n color: 'var(--text-primary)'\n },\n children: \"Search\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 410,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n placeholder: \"Search cards...\",\n className: \"search-bar w-full pr-12\",\n value: searchQuery,\n onChange: (e)=>handleSearchChange(e.target.value),\n onKeyPress: (e)=>{\n if (e.key === 'Enter') {\n setPagination((prev)=>({\n ...prev,\n page: 1\n }));\n setCards([]);\n setHasMore(true);\n hasMoreRef.current = true;\n fetchCards(false);\n }\n }\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 414,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n setPagination((prev)=>({\n ...prev,\n page: 1\n }));\n setCards([]);\n setHasMore(true);\n hasMoreRef.current = true;\n fetchCards(false);\n },\n className: \"absolute right-2 top-1/2 transform -translate-y-1/2 p-2 rounded-lg hover:bg-opacity-20 transition-all duration-200\",\n style: {\n backgroundColor: 'var(--bg-tertiary)'\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-4 h-4\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 442,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 441,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 430,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 413,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 409,\n columnNumber: 11\n }, this),\n /*#__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)(\"label\", {\n className: \"block text-sm font-medium mb-2\",\n style: {\n color: 'var(--text-primary)'\n },\n children: \"Rarity\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 448,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"select\", {\n value: selectedRarity,\n onChange: (e)=>setSelectedRarity(e.target.value),\n className: \"input-field w-full\",\n children: rarityOptions.map((option)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: option.value,\n children: option.label\n }, option.value, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 457,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 451,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 447,\n columnNumber: 11\n }, this),\n /*#__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)(\"label\", {\n className: \"block text-sm font-medium mb-2\",\n style: {\n color: 'var(--text-primary)'\n },\n children: \"Set\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 464,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"select\", {\n value: selectedSet,\n onChange: (e)=>setSelectedSet(e.target.value),\n className: \"input-field w-full\",\n children: setOptions.map((option)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: option.value,\n children: option.label\n }, option.value, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 473,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 467,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 463,\n columnNumber: 11\n }, this),\n /*#__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)(\"label\", {\n className: \"block text-sm font-medium mb-2\",\n style: {\n color: 'var(--text-primary)'\n },\n children: \"Value Range\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 480,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"select\", {\n value: selectedValueRange,\n onChange: (e)=>setSelectedValueRange(e.target.value),\n className: \"input-field w-full\",\n children: valueRangeOptions.map((option)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: option.value,\n children: option.label\n }, option.value, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 489,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 483,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 479,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 408,\n columnNumber: 9\n }, this),\n (selectedTCG !== 'all' || selectedRarity !== 'all' || selectedSet !== 'all' || selectedValueRange !== 'all') && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-wrap gap-2\",\n children: [\n selectedTCG !== 'all' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"px-3 py-1 rounded-full text-sm font-medium\",\n style: {\n backgroundColor: 'var(--bg-tertiary)',\n color: 'var(--text-primary)',\n border: '1px solid var(--border)'\n },\n children: [\n (_tcgOptions_find = tcgOptions.find((opt)=>opt.value === selectedTCG)) === null || _tcgOptions_find === void 0 ? void 0 : _tcgOptions_find.label,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSelectedTCG('all'),\n className: \"ml-2 hover:opacity-70\",\n children: \"\\xd7\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 508,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 502,\n columnNumber: 17\n }, this),\n selectedRarity !== 'all' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"px-3 py-1 rounded-full text-sm font-medium\",\n style: {\n backgroundColor: 'var(--bg-tertiary)',\n color: 'var(--text-primary)',\n border: '1px solid var(--border)'\n },\n children: [\n (_rarityOptions_find = rarityOptions.find((opt)=>opt.value === selectedRarity)) === null || _rarityOptions_find === void 0 ? void 0 : _rarityOptions_find.label,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSelectedRarity('all'),\n className: \"ml-2 hover:opacity-70\",\n children: \"\\xd7\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 523,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 517,\n columnNumber: 17\n }, this),\n selectedSet !== 'all' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"px-3 py-1 rounded-full text-sm font-medium\",\n style: {\n backgroundColor: 'var(--bg-tertiary)',\n color: 'var(--text-primary)',\n border: '1px solid var(--border)'\n },\n children: [\n (_setOptions_find = setOptions.find((opt)=>opt.value === selectedSet)) === null || _setOptions_find === void 0 ? void 0 : _setOptions_find.label,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSelectedSet('all'),\n className: \"ml-2 hover:opacity-70\",\n children: \"\\xd7\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 538,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 532,\n columnNumber: 17\n }, this),\n selectedValueRange !== 'all' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"px-3 py-1 rounded-full text-sm font-medium\",\n style: {\n backgroundColor: 'var(--bg-tertiary)',\n color: 'var(--text-primary)',\n border: '1px solid var(--border)'\n },\n children: [\n (_valueRangeOptions_find = valueRangeOptions.find((opt)=>opt.value === selectedValueRange)) === null || _valueRangeOptions_find === void 0 ? void 0 : _valueRangeOptions_find.label,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSelectedValueRange('all'),\n className: \"ml-2 hover:opacity-70\",\n children: \"\\xd7\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 553,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 547,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n setSelectedTCG('all');\n setSelectedRarity('all');\n setSelectedSet('all');\n setSelectedValueRange('all');\n },\n className: \"px-3 py-1 rounded-full text-sm font-medium hover:opacity-70\",\n style: {\n color: 'var(--text-accent)',\n border: '1px solid var(--border)'\n },\n children: \"Clear All\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 561,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 500,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 499,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 364,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-6 pb-64\",\n children: cards.length === 0 ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center py-12\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-6xl mb-4\",\n children: \"\\uD83C\\uDCCF\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 583,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-xl font-semibold mb-2\",\n style: {\n color: 'var(--text-primary)'\n },\n children: \"No cards found\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 584,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mb-6\",\n style: {\n color: 'var(--text-secondary)'\n },\n children: \"Try adjusting your search or filters\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 587,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 582,\n columnNumber: 11\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: viewMode === 'grid' ? 'grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-6 2xl:grid-cols-8 gap-6 p-6' : 'space-y-4',\n children: cards.map((card)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n onClick: ()=>router.push(\"/card/\".concat(card.id)),\n className: \"flex justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Card3D, {\n card: card,\n viewMode: viewMode,\n getRarityLabel: getRarityLabel,\n getRarityColor: getRarityColor\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 596,\n columnNumber: 19\n }, this)\n }, card.id, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 595,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 593,\n columnNumber: 13\n }, this),\n loadingMore && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center py-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"animate-spin rounded-full h-8 w-8 border-b-2\",\n style: {\n borderColor: 'var(--text-accent)'\n }\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 610,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n style: {\n color: 'var(--text-secondary)'\n },\n children: \"Loading more cards...\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 611,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 609,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 608,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n id: \"infinite-scroll-sentinel\",\n className: \"h-4 w-full\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 617,\n columnNumber: 13\n }, this),\n hasMore && !loadingMore && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center py-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: loadMoreCards,\n className: \"px-6 py-3 bg-gradient-to-r from-blue-500 to-purple-600 text-white rounded-lg hover:from-blue-600 hover:to-purple-700 transition-all duration-200 shadow-lg hover:shadow-xl\",\n children: \"Load More Cards\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 622,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 621,\n columnNumber: 15\n }, this),\n !hasMore && cards.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center py-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n style: {\n color: 'var(--text-secondary)'\n },\n children: \"No more cards to load\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 634,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 633,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 580,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 314,\n columnNumber: 5\n }, this);\n}\n_s(Cards, \"jTU9Um6QyOYOYj+sFhiWMzRDbgg=\", false, function() {\n return [\n next_router__WEBPACK_IMPORTED_MODULE_2__.useRouter\n ];\n});\n_c = Cards;\n// 3D Card Component\nfunction Card3D(param) {\n let { card, viewMode, getRarityLabel, getRarityColor } = param;\n _s1();\n const [isHovered, setIsHovered] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [cardPosition, setCardPosition] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n });\n const [isFavorited, setIsFavorited] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const handleMouseMove = (e)=>{\n const rect = e.currentTarget.getBoundingClientRect();\n setCardPosition({\n x: rect.left,\n y: rect.top,\n width: rect.width,\n height: rect.height\n });\n };\n const handleMouseLeave = ()=>{\n setIsHovered(false);\n };\n const handleMouseEnter = ()=>{\n setIsHovered(true);\n };\n const getTCGColor = (game)=>{\n const colors = {\n 'MTG': '#8B5CF6',\n 'Pokemon': '#3B82F6',\n 'Lorcana': '#EC4899' // pink\n };\n return colors[game] || '#6B7280';\n };\n const getSetColor = (setName)=>{\n // Generate a consistent color based on set name\n const hash = setName.split('').reduce((a, b)=>{\n a = (a << 5) - a + b.charCodeAt(0);\n return a & a;\n }, 0);\n const hue = Math.abs(hash) % 360;\n return \"hsl(\".concat(hue, \", 70%, 60%)\");\n };\n const formatCurrency = (amount)=>{\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD'\n }).format(amount);\n };\n const getRarityGradient = (rarity)=>{\n const gradients = {\n common: 'from-gray-400 to-gray-500',\n uncommon: 'from-green-400 to-emerald-500',\n rare: 'from-yellow-400 to-orange-500',\n mythic: 'from-yellow-400 to-orange-500',\n holographic: 'from-red-400 to-pink-500',\n enchanted: 'from-purple-400 to-indigo-500',\n ultra: 'from-blue-400 to-cyan-500'\n };\n return gradients[rarity] || 'from-gray-400 to-gray-500';\n };\n const getRarityGlow = (rarity)=>{\n const glows = {\n common: '0 0 15px rgba(156, 163, 175, 0.4)',\n uncommon: '0 0 15px rgba(34, 197, 94, 0.4)',\n rare: '0 0 20px rgba(251, 191, 36, 0.5)',\n mythic: '0 0 20px rgba(255, 215, 0, 0.4), 0 0 40px rgba(255, 215, 0, 0.2), 0 0 60px rgba(255, 215, 0, 0.1)',\n holographic: '0 0 25px rgba(239, 68, 68, 0.6)',\n enchanted: '0 0 20px rgba(168, 85, 247, 0.4), 0 0 40px rgba(168, 85, 247, 0.2), 0 0 60px rgba(168, 85, 247, 0.1)',\n ultra: '0 0 25px rgba(59, 130, 246, 0.6)'\n };\n return glows[rarity] || '0 0 15px rgba(156, 163, 175, 0.4)';\n };\n if (viewMode === 'list') {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card hover:shadow-xl transition-all duration-300 cursor-pointer\",\n style: {\n transition: 'all 0.3s ease'\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center space-x-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-16 h-24 rounded-lg overflow-hidden\",\n style: {\n background: \"linear-gradient(135deg, \".concat(getRarityGradient(card.rarity).replace('from-', '').replace('to-', ''), \")\"),\n boxShadow: \"0 4px 8px rgba(0, 0, 0, 0.3)\"\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full flex items-center justify-center text-white font-bold text-xs\",\n children: card.game\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 735,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 731,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold mb-1\",\n style: {\n color: 'var(--text-primary)'\n },\n children: card.name\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 740,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm mb-2\",\n style: {\n color: 'var(--text-secondary)'\n },\n children: [\n card.set_name,\n \" • \",\n getRarityLabel(card.rarity)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 743,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs\",\n style: {\n color: 'var(--text-secondary)'\n },\n children: card.oracle_text || card.card_type\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 746,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 739,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-right\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-lg font-bold gradient-text-purple\",\n children: formatCurrency(card.current_price || 0)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 751,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"px-2 py-1 text-xs rounded-full text-white font-medium\",\n style: {\n backgroundColor: getRarityColor(card.rarity)\n },\n children: getRarityLabel(card.rarity)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 754,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 750,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 730,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 724,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative cursor-pointer transition-transform duration-300 hover:scale-105\",\n style: {\n width: '100%',\n maxWidth: '200px',\n aspectRatio: '5/7',\n boxShadow: getRarityGlow(card.rarity),\n borderRadius: '12px',\n border: \"2px solid \".concat(getRarityColor(card.rarity), \"20\"),\n overflow: 'hidden'\n },\n onMouseMove: handleMouseMove,\n onMouseLeave: handleMouseLeave,\n onMouseEnter: handleMouseEnter,\n children: [\n card.rarity !== 'common' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 pointer-events-none overflow-hidden\",\n children: (()=>{\n const rarityConfig = {\n 'mythic': {\n particleCount: 16,\n sparkleCount: 10,\n particleColor: '#FFD700',\n sparkleColor: '#FFA500',\n glowColor: '#FFD700'\n },\n 'enchanted': {\n particleCount: 14,\n sparkleCount: 8,\n particleColor: '#A855F7',\n sparkleColor: '#EC4899',\n glowColor: '#A855F7'\n },\n 'rare': {\n particleCount: 10,\n sparkleCount: 6,\n particleColor: '#3B82F6',\n sparkleColor: '#60A5FA',\n glowColor: '#3B82F6'\n },\n 'uncommon': {\n particleCount: 6,\n sparkleCount: 4,\n particleColor: '#10B981',\n sparkleColor: '#34D399',\n glowColor: '#10B981'\n }\n };\n const config = rarityConfig[card.rarity];\n if (!config) return null;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0\",\n children: [\n ...Array(config.particleCount)\n ].map((_, i)=>{\n // Position particles around the card edges\n let left, top;\n const edgeIndex = i % 4; // 4 edges\n const positionOnEdge = Math.floor(i / 4);\n if (edgeIndex === 0) {\n // Top edge\n left = \"\".concat(10 + positionOnEdge * 20, \"%\");\n top = '2%';\n } else if (edgeIndex === 1) {\n // Right edge\n left = '98%';\n top = \"\".concat(10 + positionOnEdge * 20, \"%\");\n } else if (edgeIndex === 2) {\n // Bottom edge\n left = \"\".concat(10 + positionOnEdge * 20, \"%\");\n top = '98%';\n } else {\n // Left edge\n left = '2%';\n top = \"\".concat(10 + positionOnEdge * 20, \"%\");\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute w-1 h-1 rounded-full\",\n style: {\n left,\n top,\n backgroundColor: config.particleColor,\n animation: \"edgeFloat \".concat(4 + i * 0.3, \"s ease-in-out infinite\"),\n animationDelay: \"\".concat(i * 0.2, \"s\"),\n opacity: 0.7,\n filter: 'blur(1px)',\n boxShadow: \"0 0 8px \".concat(config.particleColor, \", 0 0 16px \").concat(config.particleColor, \", 0 0 24px \").concat(config.particleColor),\n mixBlendMode: 'screen'\n }\n }, i, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 852,\n columnNumber: 27\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 826,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0\",\n children: [\n ...Array(config.sparkleCount)\n ].map((_, i)=>{\n // Position sparkles in the corners and edge centers\n let left, top;\n if (i < 2) {\n // Top corners\n left = i === 0 ? '5%' : '95%';\n top = '5%';\n } else if (i < 4) {\n // Bottom corners\n left = i === 2 ? '5%' : '95%';\n top = '95%';\n } else if (i < 6) {\n // Edge centers\n left = i === 4 ? '50%' : '50%';\n top = i === 4 ? '5%' : '95%';\n } else {\n // Side centers\n left = i === 6 ? '5%' : '95%';\n top = '50%';\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute w-0.5 h-0.5\",\n style: {\n left,\n top,\n backgroundColor: config.sparkleColor,\n animation: \"sparkle \".concat(2 + i * 0.4, \"s ease-in-out infinite\"),\n animationDelay: \"\".concat(i * 0.2, \"s\"),\n opacity: 0.9,\n filter: 'blur(0.5px)',\n boxShadow: \"0 0 4px \".concat(config.sparkleColor, \", 0 0 8px \").concat(config.sparkleColor),\n mixBlendMode: 'screen'\n }\n }, \"sparkle-\".concat(i), false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 895,\n columnNumber: 27\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 872,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 rounded-lg\",\n style: {\n background: \"radial-gradient(circle at 50% 50%, \".concat(config.glowColor, \"20 0%, \").concat(config.glowColor, \"10 40%, transparent 70%)\"),\n animation: 'aura 4s ease-in-out infinite',\n mixBlendMode: 'screen'\n }\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 915,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true);\n })()\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 786,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full\",\n children: [\n card.image_url ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: card.image_url,\n alt: card.name,\n className: \"w-full h-full object-cover\",\n onError: (e)=>{\n e.target.style.display = 'none';\n e.target.nextSibling.style.display = 'flex';\n }\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 931,\n columnNumber: 13\n }, this) : null,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full \".concat(!card.image_url ? 'block' : 'hidden'),\n style: {\n borderRadius: '10px'\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(CardBack, {\n game: card.game\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 947,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 943,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 929,\n columnNumber: 9\n }, this),\n card.quantity > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 left-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"px-3 py-1 text-xs font-bold text-white shadow-lg\",\n style: {\n backgroundColor: 'var(--text-accent)',\n borderRadius: '8px 8px 0 0',\n borderTop: '2px solid var(--text-accent)',\n borderLeft: '2px solid var(--text-accent)',\n borderRight: '2px solid var(--text-accent)',\n transform: 'translateY(2px)'\n },\n children: card.quantity\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 954,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 953,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-2 right-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: (e)=>{\n e.stopPropagation();\n setIsFavorited(!isFavorited);\n },\n className: \"p-2 rounded-full transition-all duration-200 shadow-lg \".concat(isFavorited ? 'bg-red-500 bg-opacity-80 text-white' : 'bg-white bg-opacity-20 backdrop-blur-sm hover:bg-opacity-30'),\n children: isFavorited ? '❤️' : '🤍'\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 972,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 971,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 769,\n columnNumber: 9\n }, this),\n isHovered && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"fixed z-50 bg-black bg-opacity-90 text-white p-4 rounded-lg shadow-2xl max-w-sm\",\n style: {\n left: cardPosition.x + cardPosition.width,\n top: cardPosition.y,\n pointerEvents: 'none',\n minHeight: cardPosition.height,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center'\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-bold text-white mb-1\",\n children: card.name\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1005,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1004,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 gap-3\",\n children: [\n /*#__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)(\"div\", {\n className: \"text-xs font-bold text-white mb-1\",\n children: \"TCG\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1011,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white\",\n children: card.game\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1012,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1010,\n columnNumber: 15\n }, this),\n /*#__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)(\"div\", {\n className: \"text-xs font-bold text-white mb-1\",\n children: \"Set\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1015,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white\",\n children: card.set_name\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1016,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1014,\n columnNumber: 15\n }, this),\n card.type && /*#__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)(\"div\", {\n className: \"text-xs font-bold text-white mb-1\",\n children: \"Type\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1020,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white flex items-center gap-1\",\n children: [\n card.game === 'Pokemon' && card.type === 'Lightning' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-yellow-400\",\n children: \"⚡\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1023,\n columnNumber: 23\n }, this),\n card.type\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1021,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1019,\n columnNumber: 17\n }, this),\n card.hp && /*#__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)(\"div\", {\n className: \"text-xs font-bold text-white mb-1\",\n children: \"HP\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1031,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white\",\n children: card.hp\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1032,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1030,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1009,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 gap-3\",\n children: [\n /*#__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)(\"div\", {\n className: \"text-xs font-bold text-white mb-1\",\n children: \"Card type\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1040,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white\",\n children: card.card_type || 'Card'\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1041,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1039,\n columnNumber: 15\n }, this),\n card.form && /*#__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)(\"div\", {\n className: \"text-xs font-bold text-white mb-1\",\n children: \"Form\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1045,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white\",\n children: card.form\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1046,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1044,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1038,\n columnNumber: 13\n }, this),\n card.mana_cost && /*#__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)(\"div\", {\n className: \"text-xs font-bold text-white mb-1\",\n children: \"Cost to Play\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1054,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white\",\n children: card.mana_cost\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1055,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1053,\n columnNumber: 15\n }, this),\n card.game === 'Pokemon' && card.form && card.form.includes('V') && /*#__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)(\"div\", {\n className: \"text-xs font-bold text-white mb-1\",\n children: \"Card rule\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1062,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white leading-relaxed\",\n children: \"V rule: When your Pok\\xe9mon V is Knocked Out, your opponent takes 2 Prize cards.\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1063,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1061,\n columnNumber: 15\n }, this),\n card.oracle_text && /*#__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)(\"div\", {\n className: \"text-xs font-bold text-white mb-1\",\n children: \"Card Text\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1072,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white leading-relaxed\",\n children: card.oracle_text\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1073,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1071,\n columnNumber: 15\n }, this),\n card.flavor_text && /*#__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)(\"div\", {\n className: \"text-xs font-bold text-white mb-1\",\n children: \"Quote\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1080,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white italic leading-relaxed\",\n children: [\n '\"',\n card.flavor_text,\n '\"'\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1081,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1079,\n columnNumber: 15\n }, this),\n card.current_price && /*#__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)(\"div\", {\n className: \"text-xs font-bold text-white mb-1\",\n children: \"Current Price\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1088,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white\",\n children: formatCurrency(card.current_price)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1089,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1087,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 gap-3\",\n children: [\n card.weakness && /*#__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)(\"div\", {\n className: \"text-xs font-bold text-white mb-1\",\n children: \"Weaknesses\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1097,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white flex items-center gap-1\",\n children: [\n card.game === 'Pokemon' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-red-500\",\n children: \"\\uD83D\\uDC4A\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1100,\n columnNumber: 23\n }, this),\n card.weakness\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1098,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1096,\n columnNumber: 17\n }, this),\n card.retreat_cost && /*#__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)(\"div\", {\n className: \"text-xs font-bold text-white mb-1\",\n children: \"Retreat\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1108,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white flex items-center gap-1\",\n children: [\n card.game === 'Pokemon' && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-400\",\n children: \"⭐\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1112,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-400\",\n children: \"⭐\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1113,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true),\n card.retreat_cost\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1109,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1107,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1094,\n columnNumber: 13\n }, this),\n card.decks && card.decks.length > 0 || card.collections && card.collections.length > 0 && /*#__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)(\"div\", {\n className: \"text-xs font-bold text-white mb-1\",\n children: \"Included In\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1125,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-white\",\n children: [\n card.decks && card.decks.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-semibold\",\n children: \"Decks:\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1129,\n columnNumber: 23\n }, this),\n \" \",\n card.decks.join(', ')\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1128,\n columnNumber: 21\n }, this),\n card.collections && card.collections.length > 0 && /*#__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)(\"span\", {\n className: \"font-semibold\",\n children: \"Collections:\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1134,\n columnNumber: 23\n }, this),\n \" \",\n card.collections.join(', ')\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1133,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1126,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1124,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1002,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 990,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 767,\n columnNumber: 5\n }, this);\n}\n_s1(Card3D, \"Nnk2g+a2cTPuJImFbQHPkRSinE4=\");\n_c1 = Card3D;\n// Card Back Component for placeholders\nfunction CardBack(param) {\n let { game } = param;\n const getCardBackImage = ()=>{\n switch(game){\n case 'MTG':\n return 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjE0MyIgdmlld0JveD0iMCAwIDIwMCAxNDMiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIyMDAiIGhlaWdodD0iMTQzIiBmaWxsPSIjOEI0NTEzIi8+CjxyZWN0IHg9IjEwIiB5PSIxMCIgd2lkdGg9IjE4MCIgaGVpZ2h0PSIxMjMiIGZpbGw9IiNBMDUyMkQiIHJ4PSI4Ii8+Cjx0ZXh0IHg9IjEwMCIgeT0iMzAiIGZvbnQtZmFtaWx5PSJBcmlhbCwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIyNCIgZm9udC13ZWlnaHQ9ImJvbGQiIGZpbGw9IiM0QTkwRTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiPk1BR0lDPC90ZXh0Pgo8dGV4dCB4PSIxMDAiIHk9IjQ1IiBmb250LWZhbWlseT0iQXJpYWwsIHNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTIiIGZpbGw9IndoaXRlIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5UaGUgR2F0aGVyaW5nPC90ZXh0Pgo8Y2lyY2xlIGN4PSI3MCIgY3k9IjcwIiByPSI0IiBmaWxsPSJ3aGl0ZSIvPgo8Y2lyY2xlIGN4PSIxMzAiIGN4PSI3MCIgcj0iNCIgZmlsbD0iI0Y1OTlFMEIiLz4KPGNpcmNsZSBjeD0iMTAwIiBjeT0iODAiIHI9IjQiIGZpbGw9IiM0QTkwRTIiLz4KPGNpcmNsZSBjeD0iNzAiIGN5PSI5MCIgcj0iNCIgZmlsbD0iIzEwQjk4MSIvPgo8Y2lyY2xlIGN4PSIxMzAiIGN5PSI5MCIgcj0iNCIgZmlsbD0iYmxhY2siLz4KPHRleHQgeD0iMTAwIiB5PSIxMjAiIGZvbnQtZmFtaWx5PSJBcmlhbCwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMCIgZm9udC13ZWlnaHQ9ImJvbGQiIGZpbGw9IiMyMEIyQUEiIHRleHQtYW5jaG9yPSJtaWRkbGUiPkRFQ0tNQVNURVI8L3RleHQ+Cjwvc3ZnPgo=';\n case 'Pokemon':\n return 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjE0MyIgdmlld0JveD0iMCAwIDIwMCAxNDMiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIyMDAiIGhlaWdodD0iMTQzIiBmaWxsPSIjRkY2QjZCIi8+CjxyZWN0IHg9IjEwIiB5PSIxMCIgd2lkdGg9IjE4MCIgaGVpZ2h0PSIxMjMiIGZpbGw9IiNGRjhFOEUiIHJ4PSI4Ii8+Cjx0ZXh0IHg9IjEwMCIgeT0iMzAiIGZvbnQtZmFtaWx5PSJBcmlhbCwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIyNCIgZm9udC13ZWlnaHQ9ImJvbGQiIGZpbGw9IiNGRkQ3MDAiIHRleHQtYW5jaG9yPSJtaWRkbGUiPlBPS0VNT048L3RleHQ+Cjx0ZXh0IHg9IjEwMCIgeT0iNDUiIGZvbnQtZmFtaWx5PSJBcmlhbCwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMiIgZmlsbD0id2hpdGUiIHRleHQtYW5jaG9yPSJtaWRkbGUiPlRyYWRpbmcgQ2FyZCBHYW1lPC90ZXh0Pgo8Y2lyY2xlIGN4PSIxMDAiIGN5PSI3MCIgcj0iMjAiIGZpbGw9IndoaXRlIi8+Cjx0ZXh0IHg9IjEwMCIgeT0iNzgiIGZvbnQtZmFtaWx5PSJBcmlhbCwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIyNCIgZmlsbD0iIzFGN0Y3RiIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pePPC90ZXh0Pgo8dGV4dCB4PSIxMDAiIHk9IjEyMCIgZm9udC1mYW1pbHk9IkFyaWFsLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjEwIiBmb250LXdlaWdodD0iYm9sZCIgZmlsbD0iI0ZGRDcwMCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+R0FNRSBGUkVBSzwvdGV4dD4KPC9zdmc+Cg==';\n case 'Lorcana':\n return 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjE0MyIgdmlld0JveD0iMCAwIDIwMCAxNDMiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIyMDAiIGhlaWdodD0iMTQzIiBmaWxsPSIjRUM0ODk5Ii8+CjxyZWN0IHg9IjEwIiB5PSIxMCIgd2lkdGg9IjE4MCIgaGVpZ2h0PSIxMjMiIGZpbGw9IiNGNDcyQjYiIHJ4PSI4Ii8+Cjx0ZXh0IHg9IjEwMCIgeT0iMzAiIGZvbnQtZmFtaWx5PSJBcmlhbCwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIyNCIgZm9udC13ZWlnaHQ9ImJvbGQiIGZpbGw9IiNGQkJGMjQiIHRleHQtYW5jaG9yPSJtaWRkbGUiPkRJU05FWTwvdGV4dD4KPHRleHQgeD0iMTAwIiB5PSI0NSIgZm9udC1mYW1pbHk9IkFyaWFsLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjEyIiBmaWxsPSJ3aGl0ZSIgdGV4dC1hbmNob3I9Im1pZGRsZSI+TG9yY2FuYTwvdGV4dD4KPGNpcmNsZSBjeD0iMTAwIiBjeT0iNzAiIHI9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8dGV4dCB4PSIxMDAiIHk9Ijc4IiBmb250LWZhbWlseT0iQXJpYWwsIHNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMjQiIGZpbGw9IiMxRjdGN0YiIHRleHQtYW5jaG9yPSJtaWRkbGUiPvCfkqQ8L3RleHQ+Cjx0ZXh0IHg9IjEwMCIgeT0iMTIwIiBmb250LWZhbWlseT0iQXJpYWwsIHNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTAiIGZvbnQtd2VpZ2h0PSJib2xkIiBmaWxsPSIjRjU5RTBCIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5SQVZFTlNERVJHPzwvdGV4dD4KPC9zdmc+Cg==';\n default:\n return 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjE0MyIgdmlld0JveD0iMCAwIDIwMCAxNDMiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIyMDAiIGhlaWdodD0iMTQzIiBmaWxsPSIjNkI3MjgwIi8+CjxyZWN0IHg9IjEwIiB5PSIxMCIgd2lkdGg9IjE4MCIgaGVpZ2h0PSIxMjMiIGZpbGw9IiM5Q0EzQUYiIHJ4PSI4Ii8+Cjx0ZXh0IHg9IjEwMCIgeT0iMzAiIGZvbnQtZmFtaWx5PSJBcmlhbCwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIyNCIgZm9udC13ZWlnaHQ9ImJvbGQiIGZpbGw9IndoaXRlIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5UQ0c8L3RleHQ+Cjx0ZXh0IHg9IjEwMCIgeT0iNDUiIGZvbnQtZmFtaWx5PSJBcmlhbCwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMiIgZmlsbD0id2hpdGUiIHRleHQtYW5jaG9yPSJtaWRkbGUiPlRyYWRpbmcgQ2FyZDwvdGV4dD4KPGNpcmNsZSBjeD0iMTAwIiBjeT0iNzAiIHI9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8dGV4dCB4PSIxMDAiIHk9Ijc4IiBmb250LWZhbWlseT0iQXJpYWwsIHNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMjQiIGZpbGw9IiMxRjdGN0YiIHRleHQtYW5jaG9yPSJtaWRkbGUiPvCfkqQ8L3RleHQ+Cjx0ZXh0IHg9IjEwMCIgeT0iMTIwIiBmb250LWZhbWlseT0iQXJpYWwsIHNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTAiIGZvbnQtd2VpZ2h0PSJib2xkIiBmaWxsPSIjNkI3MjgwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5DQVJEPC90ZXh0Pgo8L3N2Zz4K';\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full h-full rounded-lg overflow-hidden\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: getCardBackImage(),\n alt: \"\".concat(game, \" card back\"),\n className: \"w-full h-full object-cover\"\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1164,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/cards.js\",\n lineNumber: 1163,\n columnNumber: 5\n }, this);\n}\n_c2 = CardBack;\nvar _c, _c1, _c2;\n$RefreshReg$(_c, \"Cards\");\n$RefreshReg$(_c1, \"Card3D\");\n$RefreshReg$(_c2, \"CardBack\");\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 = __webpack_module__.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = __webpack_module__.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== 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, __webpack_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 signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n __webpack_module__.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(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 __webpack_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 (prevSignature !== 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(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n __webpack_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 = prevSignature !== null;\n if (isNoLongerABoundary) {\n __webpack_module__.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QVE7UUFBUixFQUFFakwsSUFBSSxFQUFFLEdBQVI7SUFDaEIsTUFBTXFNLG1CQUFtQjtRQUN2QixPQUFRck07WUFDTixLQUFLO2dCQUNILE9BQU87WUFDVCxLQUFLO2dCQUNILE9BQU87WUFDVCxLQUFLO2dCQUNILE9BQU87WUFDVDtnQkFDRSxPQUFPO1FBQ1g7SUFDRjtJQUVBLHFCQUNFLDhEQUFDNEQ7UUFBSUMsV0FBVTtrQkFDYiw0RUFBQzhHO1lBQ0NDLEtBQUt5QjtZQUNMeEIsS0FBSyxHQUFRLE9BQUw3SyxNQUFLO1lBQ2I2RCxXQUFVOzs7Ozs7Ozs7OztBQUlsQjtNQXZCU29IIiwic291cmNlcyI6WyIvVXNlcnMvcnN0aWxsdy9Eb2N1bWVudHMvdGNnLXZhdWx0L3BhZ2VzL2NhcmRzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVJvdXRlciB9IGZyb20gJ25leHQvcm91dGVyJztcbmltcG9ydCBMYXlvdXQgZnJvbSAnLi4vY29tcG9uZW50cy9MYXlvdXQnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDYXJkcygpIHtcbiAgY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKCk7XG4gIGNvbnN0IHVzZXIgPSB7XG4gICAgZW1haWw6ICdtZUByYW5kYWxsc3RpbGx3ZWxsLmNvbScsXG4gICAgcm9sZTogJ3VzZXInXG4gIH07XG5cbiAgY29uc3QgW2NhcmRzLCBzZXRDYXJkc10gPSB1c2VTdGF0ZShbXSk7XG4gIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbbG9hZGluZ01vcmUsIHNldExvYWRpbmdNb3JlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3NlYXJjaFF1ZXJ5LCBzZXRTZWFyY2hRdWVyeV0gPSB1c2VTdGF0ZSgnJyk7XG4gIGNvbnN0IFtzZWxlY3RlZFRDRywgc2V0U2VsZWN0ZWRUQ0ddID0gdXNlU3RhdGUoJ2FsbCcpO1xuICBjb25zdCBbc2VsZWN0ZWRSYXJpdHksIHNldFNlbGVjdGVkUmFyaXR5XSA9IHVzZVN0YXRlKCdhbGwnKTtcbiAgY29uc3QgW3NlbGVjdGVkU2V0LCBzZXRTZWxlY3RlZFNldF0gPSB1c2VTdGF0ZSgnYWxsJyk7XG4gIGNvbnN0IFtzZWxlY3RlZFZhbHVlUmFuZ2UsIHNldFNlbGVjdGVkVmFsdWVSYW5nZV0gPSB1c2VTdGF0ZSgnYWxsJyk7XG4gIGNvbnN0IFt2aWV3TW9kZSwgc2V0Vmlld01vZGVdID0gdXNlU3RhdGUoJ2dyaWQnKTsgLy8gZ3JpZCBvciBsaXN0XG4gIGNvbnN0IFtwYWdpbmF0aW9uLCBzZXRQYWdpbmF0aW9uXSA9IHVzZVN0YXRlKHtcbiAgICBwYWdlOiAxLFxuICAgIGxpbWl0OiA1MCxcbiAgICB0b3RhbDogMCxcbiAgICBwYWdlczogMFxuICB9KTtcbiAgY29uc3QgW2ZpbHRlcnMsIHNldEZpbHRlcnNdID0gdXNlU3RhdGUoe1xuICAgIGdhbWVzOiBbXSxcbiAgICByYXJpdGllczogW10sXG4gICAgc2V0czogW11cbiAgfSk7XG4gIGNvbnN0IFtoYXNNb3JlLCBzZXRIYXNNb3JlXSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBsb2FkaW5nTW9yZVJlZiA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IGhhc01vcmVSZWYgPSB1c2VSZWYodHJ1ZSk7XG5cbiAgLy8gRmV0Y2ggY2FyZHMgZnJvbSBkYXRhYmFzZVxuICBjb25zdCBmZXRjaENhcmRzID0gYXN5bmMgKGlzTG9hZE1vcmUgPSBmYWxzZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAoaXNMb2FkTW9yZSkge1xuICAgICAgICBzZXRMb2FkaW5nTW9yZSh0cnVlKTtcbiAgICAgICAgbG9hZGluZ01vcmVSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRMb2FkaW5nKHRydWUpO1xuICAgICAgfVxuICAgICAgXG4gICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6IHNlYXJjaFF1ZXJ5LFxuICAgICAgICBnYW1lOiBzZWxlY3RlZFRDRyxcbiAgICAgICAgcmFyaXR5OiBzZWxlY3RlZFJhcml0eSxcbiAgICAgICAgc2V0OiBzZWxlY3RlZFNldCxcbiAgICAgICAgbWluUHJpY2U6IHNlbGVjdGVkVmFsdWVSYW5nZSA9PT0gJ3VuZGVyLTUwJyA/ICcwJyA6IFxuICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlUmFuZ2UgPT09ICc1MC0xMDAnID8gJzUwJyA6IFxuICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlUmFuZ2UgPT09ICcxMDAtNTAwJyA/ICcxMDAnIDogXG4gICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWVSYW5nZSA9PT0gJzUwMC0xMDAwJyA/ICc1MDAnIDogXG4gICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWVSYW5nZSA9PT0gJ292ZXItMTAwMCcgPyAnMTAwMCcgOiAnJyxcbiAgICAgICAgbWF4UHJpY2U6IHNlbGVjdGVkVmFsdWVSYW5nZSA9PT0gJzUwLTEwMCcgPyAnMTAwJyA6IFxuICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlUmFuZ2UgPT09ICcxMDAtNTAwJyA/ICc1MDAnIDogXG4gICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWVSYW5nZSA9PT0gJzUwMC0xMDAwJyA/ICcxMDAwJyA6ICcnLFxuICAgICAgICBwYWdlOiBwYWdpbmF0aW9uLnBhZ2UudG9TdHJpbmcoKSxcbiAgICAgICAgbGltaXQ6IHBhZ2luYXRpb24ubGltaXQudG9TdHJpbmcoKVxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYC9hcGkvY2FyZHMvc2VhcmNoPyR7cGFyYW1zfWApO1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcblxuICAgICAgaWYgKGRhdGEuc3VjY2Vzcykge1xuICAgICAgICBcbiAgICAgICAgXG4gICAgICAgIGlmIChpc0xvYWRNb3JlKSB7XG4gICAgICAgICAgc2V0Q2FyZHMocHJldkNhcmRzID0+IFsuLi5wcmV2Q2FyZHMsIC4uLmRhdGEuY2FyZHNdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRDYXJkcyhkYXRhLmNhcmRzKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRQYWdpbmF0aW9uKGRhdGEucGFnaW5hdGlvbik7XG4gICAgICAgIHNldEZpbHRlcnMoZGF0YS5maWx0ZXJzKTtcbiAgICAgICAgY29uc3QgaGFzTW9yZUNhcmRzID0gZGF0YS5wYWdpbmF0aW9uLnBhZ2UgPCBkYXRhLnBhZ2luYXRpb24ucGFnZXM7XG4gICAgICAgIHNldEhhc01vcmUoaGFzTW9yZUNhcmRzKTtcbiAgICAgICAgaGFzTW9yZVJlZi5jdXJyZW50ID0gaGFzTW9yZUNhcmRzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGZldGNoIGNhcmRzOicsIGRhdGEuZXJyb3IpO1xuICAgICAgICBpZiAoIWlzTG9hZE1vcmUpIHtcbiAgICAgICAgICBzZXRDYXJkcyhbXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgY2FyZHM6JywgZXJyb3IpO1xuICAgICAgaWYgKCFpc0xvYWRNb3JlKSB7XG4gICAgICAgIHNldENhcmRzKFtdKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICBzZXRMb2FkaW5nTW9yZShmYWxzZSk7XG4gICAgICBsb2FkaW5nTW9yZVJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgfVxuICB9O1xuXG4gIC8vIEluaXRpYWwgbG9hZFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFBhZ2luYXRpb24ocHJldiA9PiAoeyAuLi5wcmV2LCBwYWdlOiAxIH0pKTtcbiAgICBzZXRDYXJkcyhbXSk7XG4gICAgc2V0SGFzTW9yZSh0cnVlKTtcbiAgICBoYXNNb3JlUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgIGZldGNoQ2FyZHMoZmFsc2UpO1xuICB9LCBbc2VsZWN0ZWRUQ0csIHNlbGVjdGVkUmFyaXR5LCBzZWxlY3RlZFNldCwgc2VsZWN0ZWRWYWx1ZVJhbmdlXSk7XG5cbiAgLy8gSGFuZGxlIHNlYXJjaCB3aXRoIGRlYm91bmNlXG4gIGNvbnN0IFtzZWFyY2hUaW1lb3V0LCBzZXRTZWFyY2hUaW1lb3V0XSA9IHVzZVN0YXRlKG51bGwpO1xuICBcbiAgY29uc3QgaGFuZGxlU2VhcmNoQ2hhbmdlID0gKHZhbHVlKSA9PiB7XG4gICAgc2V0U2VhcmNoUXVlcnkodmFsdWUpO1xuICAgIFxuICAgIC8vIENsZWFyIGV4aXN0aW5nIHRpbWVvdXRcbiAgICBpZiAoc2VhcmNoVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHNlYXJjaFRpbWVvdXQpO1xuICAgIH1cbiAgICBcbiAgICAvLyBTZXQgbmV3IHRpbWVvdXQgZm9yIHNlYXJjaFxuICAgIGNvbnN0IG5ld1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldFBhZ2luYXRpb24ocHJldiA9PiAoeyAuLi5wcmV2LCBwYWdlOiAxIH0pKTtcbiAgICAgIHNldENhcmRzKFtdKTtcbiAgICAgIHNldEhhc01vcmUodHJ1ZSk7XG4gICAgICBoYXNNb3JlUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgZmV0Y2hDYXJkcyhmYWxzZSk7XG4gICAgfSwgNTAwKTsgLy8gNTAwbXMgZGVsYXlcbiAgICBcbiAgICBzZXRTZWFyY2hUaW1lb3V0KG5ld1RpbWVvdXQpO1xuICB9O1xuXG4gIC8vIENsZWFudXAgdGltZW91dCBvbiB1bm1vdW50XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChzZWFyY2hUaW1lb3V0KSB7XG4gICAgICAgIGNsZWFyVGltZW91dChzZWFyY2hUaW1lb3V0KTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbc2VhcmNoVGltZW91dF0pO1xuXG4gIC8vIExvYWQgbW9yZSBjYXJkc1xuICBjb25zdCBsb2FkTW9yZUNhcmRzID0gYXN5bmMgKCkgPT4ge1xuXG4gICAgXG4gICAgaWYgKCFsb2FkaW5nTW9yZVJlZi5jdXJyZW50ICYmIGhhc01vcmVSZWYuY3VycmVudCkge1xuICAgICAgY29uc3QgbmV4dFBhZ2UgPSBwYWdpbmF0aW9uLnBhZ2UgKyAxO1xuXG4gICAgICBzZXRQYWdpbmF0aW9uKHByZXYgPT4gKHsgLi4ucHJldiwgcGFnZTogbmV4dFBhZ2UgfSkpO1xuICAgICAgXG4gICAgICAvLyBVc2UgdGhlIG5leHQgcGFnZSBudW1iZXIgZGlyZWN0bHkgaW4gdGhlIGZldGNoXG4gICAgICB0cnkge1xuICAgICAgICBzZXRMb2FkaW5nTW9yZSh0cnVlKTtcbiAgICAgICAgbG9hZGluZ01vcmVSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHtcbiAgICAgICAgICBxdWVyeTogc2VhcmNoUXVlcnksXG4gICAgICAgICAgZ2FtZTogc2VsZWN0ZWRUQ0csXG4gICAgICAgICAgcmFyaXR5OiBzZWxlY3RlZFJhcml0eSxcbiAgICAgICAgICBzZXQ6IHNlbGVjdGVkU2V0LFxuICAgICAgICAgIG1pblByaWNlOiBzZWxlY3RlZFZhbHVlUmFuZ2UgPT09ICd1bmRlci01MCcgPyAnMCcgOiBcbiAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlUmFuZ2UgPT09ICc1MC0xMDAnID8gJzUwJyA6IFxuICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWVSYW5nZSA9PT0gJzEwMC01MDAnID8gJzEwMCcgOiBcbiAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlUmFuZ2UgPT09ICc1MDAtMTAwMCcgPyAnNTAwJyA6IFxuICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWVSYW5nZSA9PT0gJ292ZXItMTAwMCcgPyAnMTAwMCcgOiAnJyxcbiAgICAgICAgICBtYXhQcmljZTogc2VsZWN0ZWRWYWx1ZVJhbmdlID09PSAnNTAtMTAwJyA/ICcxMDAnIDogXG4gICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZVJhbmdlID09PSAnMTAwLTUwMCcgPyAnNTAwJyA6IFxuICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWVSYW5nZSA9PT0gJzUwMC0xMDAwJyA/ICcxMDAwJyA6ICcnLFxuICAgICAgICAgIHBhZ2U6IG5leHRQYWdlLnRvU3RyaW5nKCksXG4gICAgICAgICAgbGltaXQ6IHBhZ2luYXRpb24ubGltaXQudG9TdHJpbmcoKVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAvYXBpL2NhcmRzL3NlYXJjaD8ke3BhcmFtc31gKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcblxuICAgICAgICBpZiAoZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgICAgXG4gICAgICAgICAgc2V0Q2FyZHMocHJldkNhcmRzID0+IFsuLi5wcmV2Q2FyZHMsIC4uLmRhdGEuY2FyZHNdKTtcbiAgICAgICAgICBzZXRQYWdpbmF0aW9uKGRhdGEucGFnaW5hdGlvbik7XG4gICAgICAgICAgc2V0RmlsdGVycyhkYXRhLmZpbHRlcnMpO1xuICAgICAgICAgIGNvbnN0IGhhc01vcmVDYXJkcyA9IGRhdGEucGFnaW5hdGlvbi5wYWdlIDwgZGF0YS5wYWdpbmF0aW9uLnBhZ2VzO1xuICAgICAgICAgIHNldEhhc01vcmUoaGFzTW9yZUNhcmRzKTtcbiAgICAgICAgICBoYXNNb3JlUmVmLmN1cnJlbnQgPSBoYXNNb3JlQ2FyZHM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGZldGNoIG1vcmUgY2FyZHM6JywgZGF0YS5lcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIG1vcmUgY2FyZHM6JywgZXJyb3IpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0TG9hZGluZ01vcmUoZmFsc2UpO1xuICAgICAgICBsb2FkaW5nTW9yZVJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIC8vIFVwZGF0ZSByZWZzIHdoZW4gc3RhdGUgY2hhbmdlc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGhhc01vcmVSZWYuY3VycmVudCA9IGhhc01vcmU7XG4gICAgbG9hZGluZ01vcmVSZWYuY3VycmVudCA9IGxvYWRpbmdNb3JlO1xuICB9LCBbaGFzTW9yZSwgbG9hZGluZ01vcmVdKTtcblxuICAvLyBJbnRlcnNlY3Rpb24gT2JzZXJ2ZXIgZm9yIGluZmluaXRlIHNjcm9sbFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKFxuICAgICAgKGVudHJpZXMpID0+IHtcbiAgICAgICAgZW50cmllcy5mb3JFYWNoKChlbnRyeSkgPT4ge1xuICAgICAgICAgIGlmIChlbnRyeS5pc0ludGVyc2VjdGluZyAmJiBoYXNNb3JlUmVmLmN1cnJlbnQgJiYgIWxvYWRpbmdNb3JlUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGxvYWRNb3JlQ2FyZHMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcm9vdE1hcmdpbjogJzUwcHgnLFxuICAgICAgICB0aHJlc2hvbGQ6IDAuMVxuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCBzZXR1cE9ic2VydmVyID0gKCkgPT4ge1xuICAgICAgY29uc3Qgc2VudGluZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5maW5pdGUtc2Nyb2xsLXNlbnRpbmVsJyk7XG4gICAgICBpZiAoc2VudGluZWwpIHtcbiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShzZW50aW5lbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRUaW1lb3V0KHNldHVwT2JzZXJ2ZXIsIDEwMCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHNldHVwT2JzZXJ2ZXIoKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjb25zdCBzZW50aW5lbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbmZpbml0ZS1zY3JvbGwtc2VudGluZWwnKTtcbiAgICAgIGlmIChzZW50aW5lbCkge1xuICAgICAgICBvYnNlcnZlci51bm9ic2VydmUoc2VudGluZWwpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtdKTtcblxuICBjb25zdCBnZXRSYXJpdHlDb2xvciA9IChyYXJpdHkpID0+IHtcbiAgICAvLyBNYXAgZGF0YWJhc2UgcmFyaXR5IHZhbHVlcyB0byBjb2xvcnNcbiAgICBjb25zdCByYXJpdHlDb2xvck1hcCA9IHtcbiAgICAgICdjb21tb24nOiAnIzZCNzI4MCcsXG4gICAgICAndW5jb21tb24nOiAnIzEwQjk4MScsXG4gICAgICAncmFyZSc6ICcjRjU5RTBCJyxcbiAgICAgICdteXRoaWMnOiAnI0ZGRDcwMCcsXG4gICAgICAnaG9sb2dyYXBoaWMnOiAnI0ZGNkI2QicsXG4gICAgICAnZW5jaGFudGVkJzogJyNBODU1RjcnLFxuICAgICAgJ3NlY3JldCByYXJlJzogJyNGRjZCNkInLFxuICAgICAgJ3VsdHJhIHJhcmUnOiAnI0E4NTVGNydcbiAgICB9O1xuICAgIHJldHVybiByYXJpdHlDb2xvck1hcFtyYXJpdHk/LnRvTG93ZXJDYXNlKCldIHx8ICcjNkI3MjgwJztcbiAgfTtcblxuICBjb25zdCB0Y2dPcHRpb25zID0gW1xuICAgIHsgdmFsdWU6ICdNVEcnLCBsYWJlbDogJ01hZ2ljOiBUaGUgR2F0aGVyaW5nJywgY29sb3I6ICdwdXJwbGUnLCBpY29uOiAn8J+UricgfSxcbiAgICB7IHZhbHVlOiAnUG9rZW1vbicsIGxhYmVsOiAnUG9rZW1vbicsIGNvbG9yOiAnYmx1ZScsIGljb246ICfimqEnIH0sXG4gICAgeyB2YWx1ZTogJ0xvcmNhbmEnLCBsYWJlbDogJ0Rpc25leSBMb3JjYW5hJywgY29sb3I6ICdwaW5rJywgaWNvbjogJ+KcqCcgfVxuICBdO1xuXG4gIGNvbnN0IHJhcml0eU9wdGlvbnMgPSBbXG4gICAgeyB2YWx1ZTogJ2FsbCcsIGxhYmVsOiAnQWxsIFJhcml0aWVzJyB9LFxuICAgIHsgdmFsdWU6ICdjb21tb24nLCBsYWJlbDogJ0NvbW1vbicgfSxcbiAgICB7IHZhbHVlOiAndW5jb21tb24nLCBsYWJlbDogJ1VuY29tbW9uJyB9LFxuICAgIHsgdmFsdWU6ICdyYXJlJywgbGFiZWw6ICdSYXJlJyB9LFxuICAgIHsgdmFsdWU6ICdteXRoaWMnLCBsYWJlbDogJ015dGhpYycgfSxcbiAgICB7IHZhbHVlOiAnZW5jaGFudGVkJywgbGFiZWw6ICdFbmNoYW50ZWQnIH0sXG4gICAgLi4uZmlsdGVycy5yYXJpdGllcy5maWx0ZXIocmFyaXR5ID0+IFxuICAgICAgIVsnYWxsJywgJ2NvbW1vbicsICd1bmNvbW1vbicsICdyYXJlJywgJ215dGhpYycsICdlbmNoYW50ZWQnXS5pbmNsdWRlcyhyYXJpdHkpXG4gICAgKS5tYXAocmFyaXR5ID0+ICh7XG4gICAgICB2YWx1ZTogcmFyaXR5LFxuICAgICAgbGFiZWw6IHJhcml0eSxcbiAgICAgIGNvbG9yOiBnZXRSYXJpdHlDb2xvcihyYXJpdHkpXG4gICAgfSkpXG4gIF07XG5cbiAgY29uc3Qgc2V0T3B0aW9ucyA9IFtcbiAgICB7IHZhbHVlOiAnYWxsJywgbGFiZWw6ICdBbGwgU2V0cycgfSxcbiAgICAuLi5maWx0ZXJzLnNldHMubWFwKHNldCA9PiAoe1xuICAgICAgdmFsdWU6IHNldCxcbiAgICAgIGxhYmVsOiBzZXRcbiAgICB9KSlcbiAgXTtcblxuICBjb25zdCB2YWx1ZVJhbmdlT3B0aW9ucyA9IFtcbiAgICB7IHZhbHVlOiAnYWxsJywgbGFiZWw6ICdBbGwgVmFsdWVzJyB9LFxuICAgIHsgdmFsdWU6ICd1bmRlci01MCcsIGxhYmVsOiAnVW5kZXIgJDUwJyB9LFxuICAgIHsgdmFsdWU6ICc1MC0xMDAnLCBsYWJlbDogJyQ1MCAtICQxMDAnIH0sXG4gICAgeyB2YWx1ZTogJzEwMC01MDAnLCBsYWJlbDogJyQxMDAgLSAkNTAwJyB9LFxuICAgIHsgdmFsdWU6ICc1MDAtMTAwMCcsIGxhYmVsOiAnJDUwMCAtICQxLDAwMCcgfSxcbiAgICB7IHZhbHVlOiAnb3Zlci0xMDAwJywgbGFiZWw6ICdPdmVyICQxLDAwMCcgfVxuICBdO1xuXG5cblxuICBjb25zdCBmb3JtYXRDdXJyZW5jeSA9IChhbW91bnQpID0+IHtcbiAgICByZXR1cm4gbmV3IEludGwuTnVtYmVyRm9ybWF0KCdlbi1VUycsIHtcbiAgICAgIHN0eWxlOiAnY3VycmVuY3knLFxuICAgICAgY3VycmVuY3k6ICdVU0QnXG4gICAgfSkuZm9ybWF0KGFtb3VudCk7XG4gIH07XG5cbiAgY29uc3QgZ2V0UmFyaXR5TGFiZWwgPSAocmFyaXR5KSA9PiB7XG4gICAgY29uc3QgcmFyaXR5T3B0aW9uID0gcmFyaXR5T3B0aW9ucy5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHJhcml0eSk7XG4gICAgcmV0dXJuIHJhcml0eU9wdGlvbiA/IHJhcml0eU9wdGlvbi5sYWJlbCA6IHJhcml0eTtcbiAgfTtcblxuXG5cbiAgaWYgKGxvYWRpbmcgJiYgY2FyZHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxMYXlvdXQgdXNlcj17dXNlcn0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgbWluLWgtc2NyZWVuXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhbmltYXRlLXNwaW4gcm91bmRlZC1mdWxsIGgtMzIgdy0zMiBib3JkZXItYi0yXCIgc3R5bGU9e3sgYm9yZGVyQ29sb3I6ICd2YXIoLS10ZXh0LWFjY2VudCknIH19PjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvTGF5b3V0PlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxMYXlvdXQgdXNlcj17dXNlcn0+XG4gICAgICB7LyogSGVhZGVyICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTZcIiBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6ICd2YXIoLS1iZy1zZWNvbmRhcnkpJywgYm9yZGVyQm90dG9tOiAnMXB4IHNvbGlkIHZhcigtLWJvcmRlciknIH19PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwidGV4dC0zeGwgZm9udC1ib2xkIG1iLTJcIiBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLXRleHQtcHJpbWFyeSknIH19PlxuICAgICAgICAgICAgICBDYXJkc1xuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtbGdcIiBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLXRleHQtc2Vjb25kYXJ5KScgfX0+XG4gICAgICAgICAgICAgIEJyb3dzZSBhbmQgbWFuYWdlIHlvdXIgY2FyZCBjb2xsZWN0aW9uXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IHNwYWNlLXgtNFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0Vmlld01vZGUoJ2dyaWQnKX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcC0yIHJvdW5kZWQteGwgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwICR7XG4gICAgICAgICAgICAgICAgdmlld01vZGUgPT09ICdncmlkJyBcbiAgICAgICAgICAgICAgICAgID8gJ3NoYWRvdy1sZycgXG4gICAgICAgICAgICAgICAgICA6ICdob3ZlcjpzaGFkb3ctbWQnXG4gICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdmlld01vZGUgPT09ICdncmlkJyA/ICd2YXIoLS1iZy10ZXJ0aWFyeSknIDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICBjb2xvcjogdmlld01vZGUgPT09ICdncmlkJyA/ICd2YXIoLS10ZXh0LXByaW1hcnkpJyA6ICd2YXIoLS10ZXh0LXNlY29uZGFyeSknXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwiaC02IHctNlwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBzdHJva2VXaWR0aD17Mn0gZD1cIk00IDZhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMnYyYTIgMiAwIDAxLTIgMkg2YTIgMiAwIDAxLTItMlY2ek0xNCA2YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJ2MmEyIDIgMCAwMS0yIDJoLTJhMiAyIDAgMDEtMi0yVjZ6TTQgMTZhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMnYyYTIgMiAwIDAxLTIgMkg2YTIgMiAwIDAxLTItMnYtMnpNMTQgMTZhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMnYyYTIgMiAwIDAxLTIgMmgtMmEyIDIgMCAwMS0yLTJ2LTJ6XCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFZpZXdNb2RlKCdsaXN0Jyl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YHAtMiByb3VuZGVkLXhsIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMCAke1xuICAgICAgICAgICAgICAgIHZpZXdNb2RlID09PSAnbGlzdCcgXG4gICAgICAgICAgICAgICAgICA/ICdzaGFkb3ctbGcnIFxuICAgICAgICAgICAgICAgICAgOiAnaG92ZXI6c2hhZG93LW1kJ1xuICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHZpZXdNb2RlID09PSAnbGlzdCcgPyAndmFyKC0tYmctdGVydGlhcnkpJyA6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgY29sb3I6IHZpZXdNb2RlID09PSAnbGlzdCcgPyAndmFyKC0tdGV4dC1wcmltYXJ5KScgOiAndmFyKC0tdGV4dC1zZWNvbmRhcnkpJ1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cImgtNiB3LTZcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNNCA2aDE2TTQgMTBoMTZNNCAxNGgxNk00IDE4aDE2XCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIFF1aWNrIEZpbHRlcnMgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInAtNlwiIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogJ3ZhcigtLWJnLXNlY29uZGFyeSknIH19PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTRcIj5cbiAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIG1iLTNcIiBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLXRleHQtcHJpbWFyeSknIH19PlxuICAgICAgICAgICAgUXVpY2sgRmlsdGVyc1xuICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtd3JhcCBnYXAtM1wiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTZWxlY3RlZFRDRygnYWxsJyl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YHB4LTQgcHktMiByb3VuZGVkLXhsIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMCAke1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkVENHID09PSAnYWxsJyBcbiAgICAgICAgICAgICAgICAgID8gJ3NoYWRvdy1sZycgXG4gICAgICAgICAgICAgICAgICA6ICdob3ZlcjpzaGFkb3ctbWQnXG4gICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogc2VsZWN0ZWRUQ0cgPT09ICdhbGwnID8gJ3ZhcigtLWJnLXRlcnRpYXJ5KScgOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgIGNvbG9yOiBzZWxlY3RlZFRDRyA9PT0gJ2FsbCcgPyAndmFyKC0tdGV4dC1wcmltYXJ5KScgOiAndmFyKC0tdGV4dC1zZWNvbmRhcnkpJyxcbiAgICAgICAgICAgICAgICBib3JkZXI6ICcxcHggc29saWQgdmFyKC0tYm9yZGVyKSdcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQWxsIEdhbWVzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIHt0Y2dPcHRpb25zLm1hcChvcHRpb24gPT4gKFxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAga2V5PXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2VsZWN0ZWRUQ0cob3B0aW9uLnZhbHVlKX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BweC00IHB5LTIgcm91bmRlZC14bCBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDAgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgJHtcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVENHID09PSBvcHRpb24udmFsdWUgXG4gICAgICAgICAgICAgICAgICAgID8gJ3NoYWRvdy1sZycgXG4gICAgICAgICAgICAgICAgICAgIDogJ2hvdmVyOnNoYWRvdy1tZCdcbiAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBzZWxlY3RlZFRDRyA9PT0gb3B0aW9uLnZhbHVlID8gJ3ZhcigtLWJnLXRlcnRpYXJ5KScgOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgY29sb3I6IHNlbGVjdGVkVENHID09PSBvcHRpb24udmFsdWUgPyAndmFyKC0tdGV4dC1wcmltYXJ5KScgOiAndmFyKC0tdGV4dC1zZWNvbmRhcnkpJyxcbiAgICAgICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCB2YXIoLS1ib3JkZXIpJ1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3Bhbj57b3B0aW9uLmljb259PC9zcGFuPlxuICAgICAgICAgICAgICAgIHtvcHRpb24ubGFiZWx9XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHsvKiBBZHZhbmNlZCBGaWx0ZXJzICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTQgZ2FwLTRcIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImJsb2NrIHRleHQtc20gZm9udC1tZWRpdW0gbWItMlwiIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tdGV4dC1wcmltYXJ5KScgfX0+XG4gICAgICAgICAgICAgIFNlYXJjaFxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGNhcmRzLi4uXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzZWFyY2gtYmFyIHctZnVsbCBwci0xMlwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3NlYXJjaFF1ZXJ5fVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlU2VhcmNoQ2hhbmdlKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgICBvbktleVByZXNzPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFBhZ2luYXRpb24ocHJldiA9PiAoeyAuLi5wcmV2LCBwYWdlOiAxIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0Q2FyZHMoW10pO1xuICAgICAgICAgICAgICAgICAgICBzZXRIYXNNb3JlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBoYXNNb3JlUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBmZXRjaENhcmRzKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgc2V0UGFnaW5hdGlvbihwcmV2ID0+ICh7IC4uLnByZXYsIHBhZ2U6IDEgfSkpO1xuICAgICAgICAgICAgICAgICAgc2V0Q2FyZHMoW10pO1xuICAgICAgICAgICAgICAgICAgc2V0SGFzTW9yZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgIGhhc01vcmVSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICBmZXRjaENhcmRzKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIHJpZ2h0LTIgdG9wLTEvMiB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS15LTEvMiBwLTIgcm91bmRlZC1sZyBob3ZlcjpiZy1vcGFjaXR5LTIwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgYmFja2dyb3VuZENvbG9yOiAndmFyKC0tYmctdGVydGlhcnkpJyB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJ3LTQgaC00XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9ezJ9IGQ9XCJNMjEgMjFsLTYtNm0yLTVhNyA3IDAgMTEtMTQgMCA3IDcgMCAwMTE0IDB6XCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImJsb2NrIHRleHQtc20gZm9udC1tZWRpdW0gbWItMlwiIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tdGV4dC1wcmltYXJ5KScgfX0+XG4gICAgICAgICAgICAgIFJhcml0eVxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgdmFsdWU9e3NlbGVjdGVkUmFyaXR5fVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFNlbGVjdGVkUmFyaXR5KGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5wdXQtZmllbGQgdy1mdWxsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3Jhcml0eU9wdGlvbnMubWFwKG9wdGlvbiA9PiAoXG4gICAgICAgICAgICAgICAgPG9wdGlvbiBrZXk9e29wdGlvbi52YWx1ZX0gdmFsdWU9e29wdGlvbi52YWx1ZX0+XG4gICAgICAgICAgICAgICAgICB7b3B0aW9uLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiYmxvY2sgdGV4dC1zbSBmb250LW1lZGl1bSBtYi0yXCIgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS10ZXh0LXByaW1hcnkpJyB9fT5cbiAgICAgICAgICAgICAgU2V0XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICB2YWx1ZT17c2VsZWN0ZWRTZXR9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0U2VsZWN0ZWRTZXQoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpbnB1dC1maWVsZCB3LWZ1bGxcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7c2V0T3B0aW9ucy5tYXAob3B0aW9uID0+IChcbiAgICAgICAgICAgICAgICA8b3B0aW9uIGtleT17b3B0aW9uLnZhbHVlfSB2YWx1ZT17b3B0aW9uLnZhbHVlfT5cbiAgICAgICAgICAgICAgICAgIHtvcHRpb24ubGFiZWx9XG4gICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIG1iLTJcIiBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLXRleHQtcHJpbWFyeSknIH19PlxuICAgICAgICAgICAgICBWYWx1ZSBSYW5nZVxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgdmFsdWU9e3NlbGVjdGVkVmFsdWVSYW5nZX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTZWxlY3RlZFZhbHVlUmFuZ2UoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpbnB1dC1maWVsZCB3LWZ1bGxcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dmFsdWVSYW5nZU9wdGlvbnMubWFwKG9wdGlvbiA9PiAoXG4gICAgICAgICAgICAgICAgPG9wdGlvbiBrZXk9e29wdGlvbi52YWx1ZX0gdmFsdWU9e29wdGlvbi52YWx1ZX0+XG4gICAgICAgICAgICAgICAgICB7b3B0aW9uLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7LyogQWN0aXZlIEZpbHRlcnMgRGlzcGxheSAqL31cbiAgICAgICAgeyhzZWxlY3RlZFRDRyAhPT0gJ2FsbCcgfHwgc2VsZWN0ZWRSYXJpdHkgIT09ICdhbGwnIHx8IHNlbGVjdGVkU2V0ICE9PSAnYWxsJyB8fCBzZWxlY3RlZFZhbHVlUmFuZ2UgIT09ICdhbGwnKSAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC00XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC13cmFwIGdhcC0yXCI+XG4gICAgICAgICAgICAgIHtzZWxlY3RlZFRDRyAhPT0gJ2FsbCcgJiYgKFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInB4LTMgcHktMSByb3VuZGVkLWZ1bGwgdGV4dC1zbSBmb250LW1lZGl1bVwiIHN0eWxlPXt7IFxuICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndmFyKC0tYmctdGVydGlhcnkpJywgXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJ3ZhcigtLXRleHQtcHJpbWFyeSknLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkIHZhcigtLWJvcmRlciknXG4gICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICB7dGNnT3B0aW9ucy5maW5kKG9wdCA9PiBvcHQudmFsdWUgPT09IHNlbGVjdGVkVENHKT8ubGFiZWx9XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIFxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTZWxlY3RlZFRDRygnYWxsJyl9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm1sLTIgaG92ZXI6b3BhY2l0eS03MFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIMOXXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHtzZWxlY3RlZFJhcml0eSAhPT0gJ2FsbCcgJiYgKFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInB4LTMgcHktMSByb3VuZGVkLWZ1bGwgdGV4dC1zbSBmb250LW1lZGl1bVwiIHN0eWxlPXt7IFxuICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndmFyKC0tYmctdGVydGlhcnkpJywgXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJ3ZhcigtLXRleHQtcHJpbWFyeSknLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkIHZhcigtLWJvcmRlciknXG4gICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICB7cmFyaXR5T3B0aW9ucy5maW5kKG9wdCA9PiBvcHQudmFsdWUgPT09IHNlbGVjdGVkUmFyaXR5KT8ubGFiZWx9XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIFxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTZWxlY3RlZFJhcml0eSgnYWxsJyl9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm1sLTIgaG92ZXI6b3BhY2l0eS03MFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIMOXXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHtzZWxlY3RlZFNldCAhPT0gJ2FsbCcgJiYgKFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInB4LTMgcHktMSByb3VuZGVkLWZ1bGwgdGV4dC1zbSBmb250LW1lZGl1bVwiIHN0eWxlPXt7IFxuICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndmFyKC0tYmctdGVydGlhcnkpJywgXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJ3ZhcigtLXRleHQtcHJpbWFyeSknLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkIHZhcigtLWJvcmRlciknXG4gICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICB7c2V0T3B0aW9ucy5maW5kKG9wdCA9PiBvcHQudmFsdWUgPT09IHNlbGVjdGVkU2V0KT8ubGFiZWx9XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIFxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTZWxlY3RlZFNldCgnYWxsJyl9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm1sLTIgaG92ZXI6b3BhY2l0eS03MFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIMOXXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHtzZWxlY3RlZFZhbHVlUmFuZ2UgIT09ICdhbGwnICYmIChcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJweC0zIHB5LTEgcm91bmRlZC1mdWxsIHRleHQtc20gZm9udC1tZWRpdW1cIiBzdHlsZT17eyBcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3ZhcigtLWJnLXRlcnRpYXJ5KScsIFxuICAgICAgICAgICAgICAgICAgY29sb3I6ICd2YXIoLS10ZXh0LXByaW1hcnkpJyxcbiAgICAgICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCB2YXIoLS1ib3JkZXIpJ1xuICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAge3ZhbHVlUmFuZ2VPcHRpb25zLmZpbmQob3B0ID0+IG9wdC52YWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZVJhbmdlKT8ubGFiZWx9XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIFxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTZWxlY3RlZFZhbHVlUmFuZ2UoJ2FsbCcpfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtbC0yIGhvdmVyOm9wYWNpdHktNzBcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICDDl1xuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8YnV0dG9uIFxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkVENHKCdhbGwnKTtcbiAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkUmFyaXR5KCdhbGwnKTtcbiAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkU2V0KCdhbGwnKTtcbiAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkVmFsdWVSYW5nZSgnYWxsJyk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJweC0zIHB5LTEgcm91bmRlZC1mdWxsIHRleHQtc20gZm9udC1tZWRpdW0gaG92ZXI6b3BhY2l0eS03MFwiIHN0eWxlPXt7IFxuICAgICAgICAgICAgICAgICAgY29sb3I6ICd2YXIoLS10ZXh0LWFjY2VudCknLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkIHZhcigtLWJvcmRlciknXG4gICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgQ2xlYXIgQWxsXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIENhcmRzIERpc3BsYXkgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInAtNiBwYi02NFwiPlxuICAgICAgICAgICAgICAgIHtjYXJkcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBweS0xMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTZ4bCBtYi00XCI+8J+DjzwvZGl2PlxuICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQteGwgZm9udC1zZW1pYm9sZCBtYi0yXCIgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS10ZXh0LXByaW1hcnkpJyB9fT5cbiAgICAgICAgICAgICAgTm8gY2FyZHMgZm91bmRcbiAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtYi02XCIgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS10ZXh0LXNlY29uZGFyeSknIH19PlxuICAgICAgICAgICAgICBUcnkgYWRqdXN0aW5nIHlvdXIgc2VhcmNoIG9yIGZpbHRlcnNcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3ZpZXdNb2RlID09PSAnZ3JpZCcgPyAnZ3JpZCBncmlkLWNvbHMtMiBzbTpncmlkLWNvbHMtMyBtZDpncmlkLWNvbHMtNCBsZzpncmlkLWNvbHMtNSB4bDpncmlkLWNvbHMtNiAyeGw6Z3JpZC1jb2xzLTggZ2FwLTYgcC02JyA6ICdzcGFjZS15LTQnfT5cbiAgICAgICAgICAgICAge2NhcmRzLm1hcChjYXJkID0+IChcbiAgICAgICAgICAgICAgICA8ZGl2IGtleT17Y2FyZC5pZH0gb25DbGljaz17KCkgPT4gcm91dGVyLnB1c2goYC9jYXJkLyR7Y2FyZC5pZH1gKX0gY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgPENhcmQzRCBcbiAgICAgICAgICAgICAgICAgICAgY2FyZD17Y2FyZH0gXG4gICAgICAgICAgICAgICAgICAgIHZpZXdNb2RlPXt2aWV3TW9kZX1cbiAgICAgICAgICAgICAgICAgICAgZ2V0UmFyaXR5TGFiZWw9e2dldFJhcml0eUxhYmVsfVxuICAgICAgICAgICAgICAgICAgICBnZXRSYXJpdHlDb2xvcj17Z2V0UmFyaXR5Q29sb3J9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICB7LyogSW5maW5pdGUgU2Nyb2xsIExvYWRpbmcgSW5kaWNhdG9yICovfVxuICAgICAgICAgICAge2xvYWRpbmdNb3JlICYmIChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktY2VudGVyIHB5LThcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtM1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhbmltYXRlLXNwaW4gcm91bmRlZC1mdWxsIGgtOCB3LTggYm9yZGVyLWItMlwiIHN0eWxlPXt7IGJvcmRlckNvbG9yOiAndmFyKC0tdGV4dC1hY2NlbnQpJyB9fT48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tdGV4dC1zZWNvbmRhcnkpJyB9fT5Mb2FkaW5nIG1vcmUgY2FyZHMuLi48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgey8qIEluZmluaXRlIFNjcm9sbCBTZW50aW5lbCAqL31cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJpbmZpbml0ZS1zY3JvbGwtc2VudGluZWxcIiBjbGFzc05hbWU9XCJoLTQgdy1mdWxsXCIgLz5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgey8qIExvYWQgTW9yZSBCdXR0b24gKi99XG4gICAgICAgICAgICB7aGFzTW9yZSAmJiAhbG9hZGluZ01vcmUgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1jZW50ZXIgcHktOFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2xvYWRNb3JlQ2FyZHN9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJweC02IHB5LTMgYmctZ3JhZGllbnQtdG8tciBmcm9tLWJsdWUtNTAwIHRvLXB1cnBsZS02MDAgdGV4dC13aGl0ZSByb3VuZGVkLWxnIGhvdmVyOmZyb20tYmx1ZS02MDAgaG92ZXI6dG8tcHVycGxlLTcwMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDAgc2hhZG93LWxnIGhvdmVyOnNoYWRvdy14bFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgTG9hZCBNb3JlIENhcmRzXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgey8qIEVuZCBvZiByZXN1bHRzIGluZGljYXRvciAqL31cbiAgICAgICAgICAgIHshaGFzTW9yZSAmJiBjYXJkcy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktY2VudGVyIHB5LThcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLXRleHQtc2Vjb25kYXJ5KScgfX0+Tm8gbW9yZSBjYXJkcyB0byBsb2FkPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICBcblxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgPC9MYXlvdXQ+XG4gICk7XG59XG5cbi8vIDNEIENhcmQgQ29tcG9uZW50XG5mdW5jdGlvbiBDYXJkM0QoeyBjYXJkLCB2aWV3TW9kZSwgZ2V0UmFyaXR5TGFiZWwsIGdldFJhcml0eUNvbG9yIH0pIHtcbiAgY29uc3QgW2lzSG92ZXJlZCwgc2V0SXNIb3ZlcmVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2NhcmRQb3NpdGlvbiwgc2V0Q2FyZFBvc2l0aW9uXSA9IHVzZVN0YXRlKHsgeDogMCwgeTogMCwgd2lkdGg6IDAsIGhlaWdodDogMCB9KTtcbiAgY29uc3QgW2lzRmF2b3JpdGVkLCBzZXRJc0Zhdm9yaXRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgaGFuZGxlTW91c2VNb3ZlID0gKGUpID0+IHtcbiAgICBjb25zdCByZWN0ID0gZS5jdXJyZW50VGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHNldENhcmRQb3NpdGlvbih7XG4gICAgICB4OiByZWN0LmxlZnQsXG4gICAgICB5OiByZWN0LnRvcCxcbiAgICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgICAgaGVpZ2h0OiByZWN0LmhlaWdodFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU1vdXNlTGVhdmUgPSAoKSA9PiB7XG4gICAgc2V0SXNIb3ZlcmVkKGZhbHNlKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVNb3VzZUVudGVyID0gKCkgPT4ge1xuICAgIHNldElzSG92ZXJlZCh0cnVlKTtcbiAgfTtcblxuICBjb25zdCBnZXRUQ0dDb2xvciA9IChnYW1lKSA9PiB7XG4gICAgY29uc3QgY29sb3JzID0ge1xuICAgICAgJ01URyc6ICcjOEI1Q0Y2JywgLy8gcHVycGxlXG4gICAgICAnUG9rZW1vbic6ICcjM0I4MkY2JywgLy8gYmx1ZVxuICAgICAgJ0xvcmNhbmEnOiAnI0VDNDg5OScgLy8gcGlua1xuICAgIH07XG4gICAgcmV0dXJuIGNvbG9yc1tnYW1lXSB8fCAnIzZCNzI4MCc7XG4gIH07XG5cbiAgY29uc3QgZ2V0U2V0Q29sb3IgPSAoc2V0TmFtZSkgPT4ge1xuICAgIC8vIEdlbmVyYXRlIGEgY29uc2lzdGVudCBjb2xvciBiYXNlZCBvbiBzZXQgbmFtZVxuICAgIGNvbnN0IGhhc2ggPSBzZXROYW1lLnNwbGl0KCcnKS5yZWR1Y2UoKGEsIGIpID0+IHtcbiAgICAgIGEgPSAoKGEgPDwgNSkgLSBhKSArIGIuY2hhckNvZGVBdCgwKTtcbiAgICAgIHJldHVybiBhICYgYTtcbiAgICB9LCAwKTtcbiAgICBjb25zdCBodWUgPSBNYXRoLmFicyhoYXNoKSAlIDM2MDtcbiAgICByZXR1cm4gYGhzbCgke2h1ZX0sIDcwJSwgNjAlKWA7XG4gIH07XG5cbiAgY29uc3QgZm9ybWF0Q3VycmVuY3kgPSAoYW1vdW50KSA9PiB7XG4gICAgcmV0dXJuIG5ldyBJbnRsLk51bWJlckZvcm1hdCgnZW4tVVMnLCB7XG4gICAgICBzdHlsZTogJ2N1cnJlbmN5JyxcbiAgICAgIGN1cnJlbmN5OiAnVVNEJ1xuICAgIH0pLmZvcm1hdChhbW91bnQpO1xuICB9O1xuXG4gIGNvbnN0IGdldFJhcml0eUdyYWRpZW50ID0gKHJhcml0eSkgPT4ge1xuICAgIGNvbnN0IGdyYWRpZW50cyA9IHtcbiAgICAgIGNvbW1vbjogJ2Zyb20tZ3JheS00MDAgdG8tZ3JheS01MDAnLFxuICAgICAgdW5jb21tb246ICdmcm9tLWdyZWVuLTQwMCB0by1lbWVyYWxkLTUwMCcsXG4gICAgICByYXJlOiAnZnJvbS15ZWxsb3ctNDAwIHRvLW9yYW5nZS01MDAnLFxuICAgICAgbXl0aGljOiAnZnJvbS15ZWxsb3ctNDAwIHRvLW9yYW5nZS01MDAnLFxuICAgICAgaG9sb2dyYXBoaWM6ICdmcm9tLXJlZC00MDAgdG8tcGluay01MDAnLFxuICAgICAgZW5jaGFudGVkOiAnZnJvbS1wdXJwbGUtNDAwIHRvLWluZGlnby01MDAnLFxuICAgICAgdWx0cmE6ICdmcm9tLWJsdWUtNDAwIHRvLWN5YW4tNTAwJ1xuICAgIH07XG4gICAgcmV0dXJuIGdyYWRpZW50c1tyYXJpdHldIHx8ICdmcm9tLWdyYXktNDAwIHRvLWdyYXktNTAwJztcbiAgfTtcblxuICBjb25zdCBnZXRSYXJpdHlHbG93ID0gKHJhcml0eSkgPT4ge1xuICAgIGNvbnN0IGdsb3dzID0ge1xuICAgICAgY29tbW9uOiAnMCAwIDE1cHggcmdiYSgxNTYsIDE2MywgMTc1LCAwLjQpJyxcbiAgICAgIHVuY29tbW9uOiAnMCAwIDE1cHggcmdiYSgzNCwgMTk3LCA5NCwgMC40KScsXG4gICAgICByYXJlOiAnMCAwIDIwcHggcmdiYSgyNTEsIDE5MSwgMzYsIDAuNSknLFxuICAgICAgbXl0aGljOiAnMCAwIDIwcHggcmdiYSgyNTUsIDIxNSwgMCwgMC40KSwgMCAwIDQwcHggcmdiYSgyNTUsIDIxNSwgMCwgMC4yKSwgMCAwIDYwcHggcmdiYSgyNTUsIDIxNSwgMCwgMC4xKScsXG4gICAgICBob2xvZ3JhcGhpYzogJzAgMCAyNXB4IHJnYmEoMjM5LCA2OCwgNjgsIDAuNiknLFxuICAgICAgZW5jaGFudGVkOiAnMCAwIDIwcHggcmdiYSgxNjgsIDg1LCAyNDcsIDAuNCksIDAgMCA0MHB4IHJnYmEoMTY4LCA4NSwgMjQ3LCAwLjIpLCAwIDAgNjBweCByZ2JhKDE2OCwgODUsIDI0NywgMC4xKScsXG4gICAgICB1bHRyYTogJzAgMCAyNXB4IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjYpJ1xuICAgIH07XG4gICAgcmV0dXJuIGdsb3dzW3Jhcml0eV0gfHwgJzAgMCAxNXB4IHJnYmEoMTU2LCAxNjMsIDE3NSwgMC40KSc7XG4gIH07XG5cbiAgaWYgKHZpZXdNb2RlID09PSAnbGlzdCcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBcbiAgICAgICAgY2xhc3NOYW1lPVwiY2FyZCBob3ZlcjpzaGFkb3cteGwgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICB0cmFuc2l0aW9uOiAnYWxsIDAuM3MgZWFzZSdcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMTYgaC0yNCByb3VuZGVkLWxnIG92ZXJmbG93LWhpZGRlblwiIHN0eWxlPXt7IFxuICAgICAgICAgICAgYmFja2dyb3VuZDogYGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICR7Z2V0UmFyaXR5R3JhZGllbnQoY2FyZC5yYXJpdHkpLnJlcGxhY2UoJ2Zyb20tJywgJycpLnJlcGxhY2UoJ3RvLScsICcnKX0pYCxcbiAgICAgICAgICAgIGJveFNoYWRvdzogYDAgNHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMylgXG4gICAgICAgICAgfX0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LWJvbGQgdGV4dC14c1wiPlxuICAgICAgICAgICAgICB7Y2FyZC5nYW1lfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgbWItMVwiIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tdGV4dC1wcmltYXJ5KScgfX0+XG4gICAgICAgICAgICAgIHtjYXJkLm5hbWV9XG4gICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSBtYi0yXCIgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS10ZXh0LXNlY29uZGFyeSknIH19PlxuICAgICAgICAgICAgICB7Y2FyZC5zZXRfbmFtZX0g4oCiIHtnZXRSYXJpdHlMYWJlbChjYXJkLnJhcml0eSl9XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzXCIgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS10ZXh0LXNlY29uZGFyeSknIH19PlxuICAgICAgICAgICAgICB7Y2FyZC5vcmFjbGVfdGV4dCB8fCBjYXJkLmNhcmRfdHlwZX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtcmlnaHRcIj5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1ib2xkIGdyYWRpZW50LXRleHQtcHVycGxlXCI+XG4gICAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeShjYXJkLmN1cnJlbnRfcHJpY2UgfHwgMCl9XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8c3BhbiBcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHgtMiBweS0xIHRleHQteHMgcm91bmRlZC1mdWxsIHRleHQtd2hpdGUgZm9udC1tZWRpdW1cIlxuICAgICAgICAgICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6IGdldFJhcml0eUNvbG9yKGNhcmQucmFyaXR5KSB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7Z2V0UmFyaXR5TGFiZWwoY2FyZC5yYXJpdHkpfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgey8qIENhcmQgQ29udGFpbmVyIHdpdGggcHJvcGVyIHJhdGlvIGFuZCByYXJpdHkgZ2xvdyAqL31cbiAgICAgICAgPGRpdiBcbiAgICAgICAgICBjbGFzc05hbWU9XCJyZWxhdGl2ZSBjdXJzb3ItcG9pbnRlciB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0zMDAgaG92ZXI6c2NhbGUtMTA1XCJcbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgIG1heFdpZHRoOiAnMjAwcHgnLFxuICAgICAgICAgICAgYXNwZWN0UmF0aW86ICc1LzcnLFxuICAgICAgICAgICAgYm94U2hhZG93OiBnZXRSYXJpdHlHbG93KGNhcmQucmFyaXR5KSxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzEycHgnLFxuICAgICAgICAgICAgYm9yZGVyOiBgMnB4IHNvbGlkICR7Z2V0UmFyaXR5Q29sb3IoY2FyZC5yYXJpdHkpfTIwYCxcbiAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJ1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25Nb3VzZU1vdmU9e2hhbmRsZU1vdXNlTW92ZX1cbiAgICAgICAgICBvbk1vdXNlTGVhdmU9e2hhbmRsZU1vdXNlTGVhdmV9XG4gICAgICAgICAgb25Nb3VzZUVudGVyPXtoYW5kbGVNb3VzZUVudGVyfVxuICAgICAgICA+XG4gICAgICAgICAgey8qIFBhcnRpY2xlIEVmZmVjdHMgZm9yIEFsbCBSYXJpdGllcyAqL31cbiAgICAgICAgICB7Y2FyZC5yYXJpdHkgIT09ICdjb21tb24nICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCBwb2ludGVyLWV2ZW50cy1ub25lIG92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICAgICAgICB7LyogR2V0IHBhcnRpY2xlIGNvdW50IGFuZCBjb2xvcnMgYmFzZWQgb24gcmFyaXR5ICovfVxuICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByYXJpdHlDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAnbXl0aGljJzogeyBcbiAgICAgICAgICAgICAgICAgICAgcGFydGljbGVDb3VudDogMTYsIFxuICAgICAgICAgICAgICAgICAgICBzcGFya2xlQ291bnQ6IDEwLFxuICAgICAgICAgICAgICAgICAgICBwYXJ0aWNsZUNvbG9yOiAnI0ZGRDcwMCcsXG4gICAgICAgICAgICAgICAgICAgIHNwYXJrbGVDb2xvcjogJyNGRkE1MDAnLFxuICAgICAgICAgICAgICAgICAgICBnbG93Q29sb3I6ICcjRkZENzAwJ1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICdlbmNoYW50ZWQnOiB7IFxuICAgICAgICAgICAgICAgICAgICBwYXJ0aWNsZUNvdW50OiAxNCwgXG4gICAgICAgICAgICAgICAgICAgIHNwYXJrbGVDb3VudDogOCxcbiAgICAgICAgICAgICAgICAgICAgcGFydGljbGVDb2xvcjogJyNBODU1RjcnLFxuICAgICAgICAgICAgICAgICAgICBzcGFya2xlQ29sb3I6ICcjRUM0ODk5JyxcbiAgICAgICAgICAgICAgICAgICAgZ2xvd0NvbG9yOiAnI0E4NTVGNydcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAncmFyZSc6IHsgXG4gICAgICAgICAgICAgICAgICAgIHBhcnRpY2xlQ291bnQ6IDEwLCBcbiAgICAgICAgICAgICAgICAgICAgc3BhcmtsZUNvdW50OiA2LFxuICAgICAgICAgICAgICAgICAgICBwYXJ0aWNsZUNvbG9yOiAnIzNCODJGNicsXG4gICAgICAgICAgICAgICAgICAgIHNwYXJrbGVDb2xvcjogJyM2MEE1RkEnLFxuICAgICAgICAgICAgICAgICAgICBnbG93Q29sb3I6ICcjM0I4MkY2J1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICd1bmNvbW1vbic6IHsgXG4gICAgICAgICAgICAgICAgICAgIHBhcnRpY2xlQ291bnQ6IDYsIFxuICAgICAgICAgICAgICAgICAgICBzcGFya2xlQ291bnQ6IDQsXG4gICAgICAgICAgICAgICAgICAgIHBhcnRpY2xlQ29sb3I6ICcjMTBCOTgxJyxcbiAgICAgICAgICAgICAgICAgICAgc3BhcmtsZUNvbG9yOiAnIzM0RDM5OScsXG4gICAgICAgICAgICAgICAgICAgIGdsb3dDb2xvcjogJyMxMEI5ODEnXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBjb25zdCBjb25maWcgPSByYXJpdHlDb25maWdbY2FyZC5yYXJpdHldO1xuICAgICAgICAgICAgICAgIGlmICghY29uZmlnKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgey8qIEZsb2F0aW5nIFBhcnRpY2xlcyAtIEVkZ2UgZnJhbWluZyAqL31cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAge1suLi5BcnJheShjb25maWcucGFydGljbGVDb3VudCldLm1hcCgoXywgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUG9zaXRpb24gcGFydGljbGVzIGFyb3VuZCB0aGUgY2FyZCBlZGdlc1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxlZnQsIHRvcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVkZ2VJbmRleCA9IGkgJSA0OyAvLyA0IGVkZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwb3NpdGlvbk9uRWRnZSA9IE1hdGguZmxvb3IoaSAvIDQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZUluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvcCBlZGdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBgJHsxMCArIChwb3NpdGlvbk9uRWRnZSAqIDIwKX0lYDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wID0gJzIlJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZWRnZUluZGV4ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJpZ2h0IGVkZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA9ICc5OCUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0b3AgPSBgJHsxMCArIChwb3NpdGlvbk9uRWRnZSAqIDIwKX0lYDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZWRnZUluZGV4ID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJvdHRvbSBlZGdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBgJHsxMCArIChwb3NpdGlvbk9uRWRnZSAqIDIwKX0lYDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wID0gJzk4JSc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZWZ0IGVkZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA9ICcyJSc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvcCA9IGAkezEwICsgKHBvc2l0aW9uT25FZGdlICogMjApfSVgO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIHctMSBoLTEgcm91bmRlZC1mdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogY29uZmlnLnBhcnRpY2xlQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IGBlZGdlRmxvYXQgJHs0ICsgaSAqIDAuM31zIGVhc2UtaW4tb3V0IGluZmluaXRlYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbkRlbGF5OiBgJHtpICogMC4yfXNgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMC43LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiAnYmx1cigxcHgpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveFNoYWRvdzogYDAgMCA4cHggJHtjb25maWcucGFydGljbGVDb2xvcn0sIDAgMCAxNnB4ICR7Y29uZmlnLnBhcnRpY2xlQ29sb3J9LCAwIDAgMjRweCAke2NvbmZpZy5wYXJ0aWNsZUNvbG9yfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXhCbGVuZE1vZGU6ICdzY3JlZW4nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgey8qIFNwYXJrbGUgRWZmZWN0cyAtIENvcm5lciBoaWdobGlnaHRzICovfVxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7Wy4uLkFycmF5KGNvbmZpZy5zcGFya2xlQ291bnQpXS5tYXAoKF8sIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBvc2l0aW9uIHNwYXJrbGVzIGluIHRoZSBjb3JuZXJzIGFuZCBlZGdlIGNlbnRlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsZWZ0LCB0b3A7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA8IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG9wIGNvcm5lcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IGkgPT09IDAgPyAnNSUnIDogJzk1JSc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvcCA9ICc1JSc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGkgPCA0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJvdHRvbSBjb3JuZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBpID09PSAyID8gJzUlJyA6ICc5NSUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0b3AgPSAnOTUlJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaSA8IDYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRWRnZSBjZW50ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBpID09PSA0ID8gJzUwJScgOiAnNTAlJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wID0gaSA9PT0gNCA/ICc1JScgOiAnOTUlJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpZGUgY2VudGVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gaSA9PT0gNiA/ICc1JScgOiAnOTUlJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wID0gJzUwJSc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2BzcGFya2xlLSR7aX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIHctMC41IGgtMC41XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogY29uZmlnLnNwYXJrbGVDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogYHNwYXJrbGUgJHsyICsgaSAqIDAuNH1zIGVhc2UtaW4tb3V0IGluZmluaXRlYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbkRlbGF5OiBgJHtpICogMC4yfXNgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMC45LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiAnYmx1cigwLjVweCknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm94U2hhZG93OiBgMCAwIDRweCAke2NvbmZpZy5zcGFya2xlQ29sb3J9LCAwIDAgOHB4ICR7Y29uZmlnLnNwYXJrbGVDb2xvcn1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWl4QmxlbmRNb2RlOiAnc2NyZWVuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHsvKiBSYXJpdHkgQXVyYSAtIEJsZW5kIHdpdGggb3ZlcmFsbCBnbG93ICovfVxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgcm91bmRlZC1sZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IGByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MCUsICR7Y29uZmlnLmdsb3dDb2xvcn0yMCAwJSwgJHtjb25maWcuZ2xvd0NvbG9yfTEwIDQwJSwgdHJhbnNwYXJlbnQgNzAlKWAsXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246ICdhdXJhIDRzIGVhc2UtaW4tb3V0IGluZmluaXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1peEJsZW5kTW9kZTogJ3NjcmVlbidcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIHsvKiBDYXJkIEltYWdlICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGxcIj5cbiAgICAgICAgICB7Y2FyZC5pbWFnZV91cmwgPyAoXG4gICAgICAgICAgICA8aW1nIFxuICAgICAgICAgICAgICBzcmM9e2NhcmQuaW1hZ2VfdXJsfSBcbiAgICAgICAgICAgICAgYWx0PXtjYXJkLm5hbWV9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgb2JqZWN0LWNvdmVyXCJcbiAgICAgICAgICAgICAgb25FcnJvcj17KGUpID0+IHtcbiAgICAgICAgICAgICAgICBlLnRhcmdldC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgICAgIGUudGFyZ2V0Lm5leHRTaWJsaW5nLnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIFxuICAgICAgICAgIHsvKiBDYXJkIEJhY2sgcGxhY2Vob2xkZXIgd2hlbiBubyBpbWFnZSAqL31cbiAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgdy1mdWxsIGgtZnVsbCAkeyFjYXJkLmltYWdlX3VybCA/ICdibG9jaycgOiAnaGlkZGVuJ31gfVxuICAgICAgICAgICAgc3R5bGU9e3sgYm9yZGVyUmFkaXVzOiAnMTBweCcgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Q2FyZEJhY2sgZ2FtZT17Y2FyZC5nYW1lfSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7LyogT3duZWQgUXVhbnRpdHkgQ2hpcCAtIE9ubHkgc2hvdyBpZiBvd25lZCAqL31cbiAgICAgICAge2NhcmQucXVhbnRpdHkgPiAwICYmIChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGJvdHRvbS0wIGxlZnQtMFwiPlxuICAgICAgICAgICAgPGRpdiBcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHgtMyBweS0xIHRleHQteHMgZm9udC1ib2xkIHRleHQtd2hpdGUgc2hhZG93LWxnXCJcbiAgICAgICAgICAgICAgc3R5bGU9e3sgXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndmFyKC0tdGV4dC1hY2NlbnQpJyxcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc4cHggOHB4IDAgMCcsXG4gICAgICAgICAgICAgICAgYm9yZGVyVG9wOiAnMnB4IHNvbGlkIHZhcigtLXRleHQtYWNjZW50KScsXG4gICAgICAgICAgICAgICAgYm9yZGVyTGVmdDogJzJweCBzb2xpZCB2YXIoLS10ZXh0LWFjY2VudCknLFxuICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0OiAnMnB4IHNvbGlkIHZhcigtLXRleHQtYWNjZW50KScsXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgycHgpJ1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7Y2FyZC5xdWFudGl0eX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuXG4gICAgICAgIHsvKiBGYXZvcml0ZSBCdXR0b24gKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdG9wLTIgcmlnaHQtMlwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgIHNldElzRmF2b3JpdGVkKCFpc0Zhdm9yaXRlZCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgcC0yIHJvdW5kZWQtZnVsbCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDAgc2hhZG93LWxnICR7XG4gICAgICAgICAgICAgIGlzRmF2b3JpdGVkIFxuICAgICAgICAgICAgICAgID8gJ2JnLXJlZC01MDAgYmctb3BhY2l0eS04MCB0ZXh0LXdoaXRlJyBcbiAgICAgICAgICAgICAgICA6ICdiZy13aGl0ZSBiZy1vcGFjaXR5LTIwIGJhY2tkcm9wLWJsdXItc20gaG92ZXI6Ymctb3BhY2l0eS0zMCdcbiAgICAgICAgICAgIH1gfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpc0Zhdm9yaXRlZCA/ICfinaTvuI8nIDogJ/CfpI0nfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogSG92ZXIgRGV0YWlscyBQYW5lbCAqL31cbiAgICAgIHtpc0hvdmVyZWQgJiYgKFxuICAgICAgICA8ZGl2IFxuICAgICAgICAgIGNsYXNzTmFtZT1cImZpeGVkIHotNTAgYmctYmxhY2sgYmctb3BhY2l0eS05MCB0ZXh0LXdoaXRlIHAtNCByb3VuZGVkLWxnIHNoYWRvdy0yeGwgbWF4LXctc21cIlxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBsZWZ0OiBjYXJkUG9zaXRpb24ueCArIGNhcmRQb3NpdGlvbi53aWR0aCxcbiAgICAgICAgICAgIHRvcDogY2FyZFBvc2l0aW9uLnksXG4gICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICAgICAgICBtaW5IZWlnaHQ6IGNhcmRQb3NpdGlvbi5oZWlnaHQsXG4gICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJ1xuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktM1wiPlxuICAgICAgICAgICAgey8qIENhcmQgVGl0bGUgKi99XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1ib2xkIHRleHQtd2hpdGUgbWItMVwiPntjYXJkLm5hbWV9PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgey8qIFRvcCBTZWN0aW9uIC0gVENHLCBTZXQsIFR5cGUsIEhQIGluIDJ4MiBncmlkICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0yIGdhcC0zXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIG1iLTFcIj5UQ0c8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC13aGl0ZVwiPntjYXJkLmdhbWV9PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LWJvbGQgdGV4dC13aGl0ZSBtYi0xXCI+U2V0PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtd2hpdGVcIj57Y2FyZC5zZXRfbmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIHtjYXJkLnR5cGUgJiYgKFxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1ib2xkIHRleHQtd2hpdGUgbWItMVwiPlR5cGU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXdoaXRlIGZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIHtjYXJkLmdhbWUgPT09ICdQb2tlbW9uJyAmJiBjYXJkLnR5cGUgPT09ICdMaWdodG5pbmcnICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXllbGxvdy00MDBcIj7imqE8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIHtjYXJkLnR5cGV9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge2NhcmQuaHAgJiYgKFxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1ib2xkIHRleHQtd2hpdGUgbWItMVwiPkhQPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC13aGl0ZVwiPntjYXJkLmhwfTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIHsvKiBDYXJkIFR5cGUgYW5kIEZvcm0gKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTNcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1ib2xkIHRleHQtd2hpdGUgbWItMVwiPkNhcmQgdHlwZTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXdoaXRlXCI+e2NhcmQuY2FyZF90eXBlIHx8ICdDYXJkJ308L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIHtjYXJkLmZvcm0gJiYgKFxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1ib2xkIHRleHQtd2hpdGUgbWItMVwiPkZvcm08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXdoaXRlXCI+e2NhcmQuZm9ybX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7LyogQ29zdCB0byBQbGF5ICovfVxuICAgICAgICAgICAge2NhcmQubWFuYV9jb3N0ICYmIChcbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1ib2xkIHRleHQtd2hpdGUgbWItMVwiPkNvc3QgdG8gUGxheTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXdoaXRlXCI+e2NhcmQubWFuYV9jb3N0fTwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHsvKiBDYXJkIFJ1bGUgU2VjdGlvbiAqL31cbiAgICAgICAgICAgIHtjYXJkLmdhbWUgPT09ICdQb2tlbW9uJyAmJiBjYXJkLmZvcm0gJiYgY2FyZC5mb3JtLmluY2x1ZGVzKCdWJykgJiYgKFxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LWJvbGQgdGV4dC13aGl0ZSBtYi0xXCI+Q2FyZCBydWxlPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtd2hpdGUgbGVhZGluZy1yZWxheGVkXCI+XG4gICAgICAgICAgICAgICAgICBWIHJ1bGU6IFdoZW4geW91ciBQb2vDqW1vbiBWIGlzIEtub2NrZWQgT3V0LCB5b3VyIG9wcG9uZW50IHRha2VzIDIgUHJpemUgY2FyZHMuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgey8qIEFiaWxpdGllcy9BdHRhY2tzL01vdmVzIFNlY3Rpb24gKi99XG4gICAgICAgICAgICB7Y2FyZC5vcmFjbGVfdGV4dCAmJiAoXG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIG1iLTFcIj5DYXJkIFRleHQ8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC13aGl0ZSBsZWFkaW5nLXJlbGF4ZWRcIj57Y2FyZC5vcmFjbGVfdGV4dH08L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7LyogUXVvdGUgU2VjdGlvbiAqL31cbiAgICAgICAgICAgIHtjYXJkLmZsYXZvcl90ZXh0ICYmIChcbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1ib2xkIHRleHQtd2hpdGUgbWItMVwiPlF1b3RlPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtd2hpdGUgaXRhbGljIGxlYWRpbmctcmVsYXhlZFwiPlwie2NhcmQuZmxhdm9yX3RleHR9XCI8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7LyogQ3VycmVudCBQcmljZSAqL31cbiAgICAgICAgICAgIHtjYXJkLmN1cnJlbnRfcHJpY2UgJiYgKFxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LWJvbGQgdGV4dC13aGl0ZSBtYi0xXCI+Q3VycmVudCBQcmljZTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXdoaXRlXCI+e2Zvcm1hdEN1cnJlbmN5KGNhcmQuY3VycmVudF9wcmljZSl9PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgey8qIEJvdHRvbSBTZWN0aW9uIC0gV2Vha25lc3NlcyBhbmQgUmV0cmVhdCAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMiBnYXAtM1wiPlxuICAgICAgICAgICAgICB7Y2FyZC53ZWFrbmVzcyAmJiAoXG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LWJvbGQgdGV4dC13aGl0ZSBtYi0xXCI+V2Vha25lc3NlczwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtd2hpdGUgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICAgICAge2NhcmQuZ2FtZSA9PT0gJ1Bva2Vtb24nICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXJlZC01MDBcIj7wn5GKPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICB7Y2FyZC53ZWFrbmVzc31cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7Y2FyZC5yZXRyZWF0X2Nvc3QgJiYgKFxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1ib2xkIHRleHQtd2hpdGUgbWItMVwiPlJldHJlYXQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXdoaXRlIGZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIHtjYXJkLmdhbWUgPT09ICdQb2tlbW9uJyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZ3JheS00MDBcIj7irZA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNDAwXCI+4q2QPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICB7Y2FyZC5yZXRyZWF0X2Nvc3R9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7LyogRGVja3MgYW5kIENvbGxlY3Rpb25zICovfVxuICAgICAgICAgICAgeyhjYXJkLmRlY2tzICYmIGNhcmQuZGVja3MubGVuZ3RoID4gMCkgfHwgKGNhcmQuY29sbGVjdGlvbnMgJiYgY2FyZC5jb2xsZWN0aW9ucy5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIG1iLTFcIj5JbmNsdWRlZCBJbjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXdoaXRlXCI+XG4gICAgICAgICAgICAgICAgICB7Y2FyZC5kZWNrcyAmJiBjYXJkLmRlY2tzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmb250LXNlbWlib2xkXCI+RGVja3M6PC9zcGFuPiB7Y2FyZC5kZWNrcy5qb2luKCcsICcpfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICB7Y2FyZC5jb2xsZWN0aW9ucyAmJiBjYXJkLmNvbGxlY3Rpb25zLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGRcIj5Db2xsZWN0aW9uczo8L3NwYW4+IHtjYXJkLmNvbGxlY3Rpb25zLmpvaW4oJywgJyl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59IFxuXG4vLyBDYXJkIEJhY2sgQ29tcG9uZW50IGZvciBwbGFjZWhvbGRlcnNcbmZ1bmN0aW9uIENhcmRCYWNrKHsgZ2FtZSB9KSB7XG4gIGNvbnN0IGdldENhcmRCYWNrSW1hZ2UgPSAoKSA9PiB7XG4gICAgc3dpdGNoIChnYW1lKSB7XG4gICAgICBjYXNlICdNVEcnOlxuICAgICAgICByZXR1cm4gJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjNhV1IwYUQwaU1qQXdJaUJvWldsbmFIUTlJakUwTXlJZ2RtbGxkMEp2ZUQwaU1DQXdJREl3TUNBeE5ETWlJR1pwYkd3OUltNXZibVVpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUkrQ2p4eVpXTjBJSGRwWkhSb1BTSXlNREFpSUdobGFXZG9kRDBpTVRReklpQm1hV3hzUFNJak9FSTBOVEV6SWk4K0NqeHlaV04wSUhnOUlqRXdJaUI1UFNJeE1DSWdkMmxrZEdnOUlqRTRNQ0lnYUdWcFoyaDBQU0l4TWpNaUlHWnBiR3c5SWlOQk1EVXlNa1FpSUhKNFBTSTRJaTgrQ2p4MFpYaDBJSGc5SWpFd01DSWdlVDBpTXpBaUlHWnZiblF0Wm1GdGFXeDVQU0pCY21saGJDd2djMkZ1Y3kxelpYSnBaaUlnWm05dWRDMXphWHBsUFNJeU5DSWdabTl1ZEMxM1pXbG5hSFE5SW1KdmJHUWlJR1pwYkd3OUlpTTBRVGt3UlRJaUlIUmxlSFF0WVc1amFHOXlQU0p0YVdSa2JHVWlQazFCUjBsRFBDOTBaWGgwUGdvOGRHVjRkQ0I0UFNJeE1EQWlJSGs5SWpRMUlpQm1iMjUwTFdaaGJXbHNlVDBpUVhKcFlXd3NJSE5oYm5NdGMyVnlhV1lpSUdadmJuUXRjMmw2WlQwaU1USWlJR1pwYkd3OUluZG9hWFJsSWlCMFpYaDBMV0Z1WTJodmNqMGliV2xrWkd4bElqNVVhR1VnUjJGMGFHVnlhVzVuUEM5MFpYaDBQZ284WTJseVkyeGxJR040UFNJM01DSWdZM2s5SWpjd0lpQnlQU0kwSWlCbWFXeHNQU0ozYUdsMFpTSXZQZ284WTJseVkyeGxJR040UFNJeE16QWlJR040UFNJM01DSWdjajBpTkNJZ1ptbHNiRDBpSTBZMU9UbEZNRUlpTHo0S1BHTnBjbU5zWlNCamVEMGlNVEF3SWlCamVUMGlPREFpSUhJOUlqUWlJR1pwYkd3OUlpTTBRVGt3UlRJaUx6NEtQR05wY21Oc1pTQmplRDBpTnpBaUlHTjVQU0k1TUNJZ2NqMGlOQ0lnWm1sc2JEMGlJekV3UWprNE1TSXZQZ284WTJseVkyeGxJR040UFNJeE16QWlJR041UFNJNU1DSWdjajBpTkNJZ1ptbHNiRDBpWW14aFkyc2lMejRLUEhSbGVIUWdlRDBpTVRBd0lpQjVQU0l4TWpBaUlHWnZiblF0Wm1GdGFXeDVQU0pCY21saGJDd2djMkZ1Y3kxelpYSnBaaUlnWm05dWRDMXphWHBsUFNJeE1DSWdabTl1ZEMxM1pXbG5hSFE5SW1KdmJHUWlJR1pwYkd3OUlpTXlNRUl5UVVFaUlIUmxlSFF0WVc1amFHOXlQU0p0YVdSa2JHVWlQa1JGUTB0TlFWTlVSVkk4TDNSbGVIUStDand2YzNablBnbz0nO1xuICAgICAgY2FzZSAnUG9rZW1vbic6XG4gICAgICAgIHJldHVybiAnZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCM2FXUjBhRDBpTWpBd0lpQm9aV2xuYUhROUlqRTBNeUlnZG1sbGQwSnZlRDBpTUNBd0lESXdNQ0F4TkRNaUlHWnBiR3c5SW01dmJtVWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SStDanh5WldOMElIZHBaSFJvUFNJeU1EQWlJR2hsYVdkb2REMGlNVFF6SWlCbWFXeHNQU0lqUmtZMlFqWkNJaTgrQ2p4eVpXTjBJSGc5SWpFd0lpQjVQU0l4TUNJZ2QybGtkR2c5SWpFNE1DSWdhR1ZwWjJoMFBTSXhNak1pSUdacGJHdzlJaU5HUmpoRk9FVWlJSEo0UFNJNElpOCtDangwWlhoMElIZzlJakV3TUNJZ2VUMGlNekFpSUdadmJuUXRabUZ0YVd4NVBTSkJjbWxoYkN3Z2MyRnVjeTF6WlhKcFppSWdabTl1ZEMxemFYcGxQU0l5TkNJZ1ptOXVkQzEzWldsbmFIUTlJbUp2YkdRaUlHWnBiR3c5SWlOR1JrUTNNREFpSUhSbGVIUXRZVzVqYUc5eVBTSnRhV1JrYkdVaVBsQlBTMFZOVDA0OEwzUmxlSFErQ2p4MFpYaDBJSGc5SWpFd01DSWdlVDBpTkRVaUlHWnZiblF0Wm1GdGFXeDVQU0pCY21saGJDd2djMkZ1Y3kxelpYSnBaaUlnWm05dWRDMXphWHBsUFNJeE1pSWdabWxzYkQwaWQyaHBkR1VpSUhSbGVIUXRZVzVqYUc5eVBTSnRhV1JrYkdVaVBsUnlZV1JwYm1jZ1EyRnlaQ0JIWVcxbFBDOTBaWGgwUGdvOFkybHlZMnhsSUdONFBTSXhNREFpSUdONVBTSTNNQ0lnY2owaU1qQWlJR1pwYkd3OUluZG9hWFJsSWk4K0NqeDBaWGgwSUhnOUlqRXdNQ0lnZVQwaU56Z2lJR1p2Ym5RdFptRnRhV3g1UFNKQmNtbGhiQ3dnYzJGdWN5MXpaWEpwWmlJZ1ptOXVkQzF6YVhwbFBTSXlOQ0lnWm1sc2JEMGlJekZHTjBZM1JpSWdkR1Y0ZEMxaGJtTm9iM0k5SW0xcFpHUnNaU0krNHBlUFBDOTBaWGgwUGdvOGRHVjRkQ0I0UFNJeE1EQWlJSGs5SWpFeU1DSWdabTl1ZEMxbVlXMXBiSGs5SWtGeWFXRnNMQ0J6WVc1ekxYTmxjbWxtSWlCbWIyNTBMWE5wZW1VOUlqRXdJaUJtYjI1MExYZGxhV2RvZEQwaVltOXNaQ0lnWm1sc2JEMGlJMFpHUkRjd01DSWdkR1Y0ZEMxaGJtTm9iM0k5SW0xcFpHUnNaU0krUjBGTlJTQkdVa1ZCU3p3dmRHVjRkRDRLUEM5emRtYytDZz09JztcbiAgICAgIGNhc2UgJ0xvcmNhbmEnOlxuICAgICAgICByZXR1cm4gJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjNhV1IwYUQwaU1qQXdJaUJvWldsbmFIUTlJakUwTXlJZ2RtbGxkMEp2ZUQwaU1DQXdJREl3TUNBeE5ETWlJR1pwYkd3OUltNXZibVVpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUkrQ2p4eVpXTjBJSGRwWkhSb1BTSXlNREFpSUdobGFXZG9kRDBpTVRReklpQm1hV3hzUFNJalJVTTBPRGs1SWk4K0NqeHlaV04wSUhnOUlqRXdJaUI1UFNJeE1DSWdkMmxrZEdnOUlqRTRNQ0lnYUdWcFoyaDBQU0l4TWpNaUlHWnBiR3c5SWlOR05EY3lRallpSUhKNFBTSTRJaTgrQ2p4MFpYaDBJSGc5SWpFd01DSWdlVDBpTXpBaUlHWnZiblF0Wm1GdGFXeDVQU0pCY21saGJDd2djMkZ1Y3kxelpYSnBaaUlnWm05dWRDMXphWHBsUFNJeU5DSWdabTl1ZEMxM1pXbG5hSFE5SW1KdmJHUWlJR1pwYkd3OUlpTkdRa0pHTWpRaUlIUmxlSFF0WVc1amFHOXlQU0p0YVdSa2JHVWlQa1JKVTA1RldUd3ZkR1Y0ZEQ0S1BIUmxlSFFnZUQwaU1UQXdJaUI1UFNJME5TSWdabTl1ZEMxbVlXMXBiSGs5SWtGeWFXRnNMQ0J6WVc1ekxYTmxjbWxtSWlCbWIyNTBMWE5wZW1VOUlqRXlJaUJtYVd4c1BTSjNhR2wwWlNJZ2RHVjRkQzFoYm1Ob2IzSTlJbTFwWkdSc1pTSStURzl5WTJGdVlUd3ZkR1Y0ZEQ0S1BHTnBjbU5zWlNCamVEMGlNVEF3SWlCamVUMGlOekFpSUhJOUlqSXdJaUJtYVd4c1BTSjNhR2wwWlNJdlBnbzhkR1Y0ZENCNFBTSXhNREFpSUhrOUlqYzRJaUJtYjI1MExXWmhiV2xzZVQwaVFYSnBZV3dzSUhOaGJuTXRjMlZ5YVdZaUlHWnZiblF0YzJsNlpUMGlNalFpSUdacGJHdzlJaU14UmpkR04wWWlJSFJsZUhRdFlXNWphRzl5UFNKdGFXUmtiR1VpUHZDZmtxUThMM1JsZUhRK0NqeDBaWGgwSUhnOUlqRXdNQ0lnZVQwaU1USXdJaUJtYjI1MExXWmhiV2xzZVQwaVFYSnBZV3dzSUhOaGJuTXRjMlZ5YVdZaUlHWnZiblF0YzJsNlpUMGlNVEFpSUdadmJuUXRkMlZwWjJoMFBTSmliMnhrSWlCbWFXeHNQU0lqUmpVNVJUQkNJaUIwWlhoMExXRnVZMmh2Y2owaWJXbGtaR3hsSWo1U1FWWkZUbE5FUlZKSFB6d3ZkR1Y0ZEQ0S1BDOXpkbWMrQ2c9PSc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjNhV1IwYUQwaU1qQXdJaUJvWldsbmFIUTlJakUwTXlJZ2RtbGxkMEp2ZUQwaU1DQXdJREl3TUNBeE5ETWlJR1pwYkd3OUltNXZibVVpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUkrQ2p4eVpXTjBJSGRwWkhSb1BTSXlNREFpSUdobGFXZG9kRDBpTVRReklpQm1hV3hzUFNJak5rSTNNamd3SWk4K0NqeHlaV04wSUhnOUlqRXdJaUI1UFNJeE1DSWdkMmxrZEdnOUlqRTRNQ0lnYUdWcFoyaDBQU0l4TWpNaUlHWnBiR3c5SWlNNVEwRXpRVVlpSUhKNFBTSTRJaTgrQ2p4MFpYaDBJSGc5SWpFd01DSWdlVDBpTXpBaUlHWnZiblF0Wm1GdGFXeDVQU0pCY21saGJDd2djMkZ1Y3kxelpYSnBaaUlnWm05dWRDMXphWHBsUFNJeU5DSWdabTl1ZEMxM1pXbG5hSFE5SW1KdmJHUWlJR1pwYkd3OUluZG9hWFJsSWlCMFpYaDBMV0Z1WTJodmNqMGliV2xrWkd4bElqNVVRMGM4TDNSbGVIUStDangwWlhoMElIZzlJakV3TUNJZ2VUMGlORFVpSUdadmJuUXRabUZ0YVd4NVBTSkJjbWxoYkN3Z2MyRnVjeTF6WlhKcFppSWdabTl1ZEMxemFYcGxQU0l4TWlJZ1ptbHNiRDBpZDJocGRHVWlJSFJsZUhRdFlXNWphRzl5UFNKdGFXUmtiR1VpUGxSeVlXUnBibWNnUTJGeVpEd3ZkR1Y0ZEQ0S1BHTnBjbU5zWlNCamVEMGlNVEF3SWlCamVUMGlOekFpSUhJOUlqSXdJaUJtYVd4c1BTSjNhR2wwWlNJdlBnbzhkR1Y0ZENCNFBTSXhNREFpSUhrOUlqYzRJaUJtYjI1MExXWmhiV2xzZVQwaVFYSnBZV3dzSUhOaGJuTXRjMlZ5YVdZaUlHWnZiblF0YzJsNlpUMGlNalFpSUdacGJHdzlJaU14UmpkR04wWWlJSFJsZUhRdFlXNWphRzl5UFNKdGFXUmtiR1VpUHZDZmtxUThMM1JsZUhRK0NqeDBaWGgwSUhnOUlqRXdNQ0lnZVQwaU1USXdJaUJtYjI1MExXWmhiV2xzZVQwaVFYSnBZV3dzSUhOaGJuTXRjMlZ5YVdZaUlHWnZiblF0YzJsNlpUMGlNVEFpSUdadmJuUXRkMlZwWjJoMFBTSmliMnhrSWlCbWFXeHNQU0lqTmtJM01qZ3dJaUIwWlhoMExXRnVZMmh2Y2owaWJXbGtaR3hsSWo1RFFWSkVQQzkwWlhoMFBnbzhMM04yWno0Syc7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsIHJvdW5kZWQtbGcgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICA8aW1nIFxuICAgICAgICBzcmM9e2dldENhcmRCYWNrSW1hZ2UoKX0gXG4gICAgICAgIGFsdD17YCR7Z2FtZX0gY2FyZCBiYWNrYH1cbiAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCBvYmplY3QtY292ZXJcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn0gIl0sIm5hbWVzIjpbInVzZVN0YXRlIiwidXNlRWZmZWN0IiwidXNlUmVmIiwidXNlUm91dGVyIiwiTGF5b3V0IiwiQ2FyZHMiLCJ0Y2dPcHRpb25zIiwicmFyaXR5T3B0aW9ucyIsInNldE9wdGlvbnMiLCJ2YWx1ZVJhbmdlT3B0aW9ucyIsInJvdXRlciIsInVzZXIiLCJlbWFpbCIsInJvbGUiLCJjYXJkcyIsInNldENhcmRzIiwibG9hZGluZyIsInNldExvYWRpbmciLCJsb2FkaW5nTW9yZSIsInNldExvYWRpbmdNb3JlIiwic2VhcmNoUXVlcnkiLCJzZXRTZWFyY2hRdWVyeSIsInNlbGVjdGVkVENHIiwic2V0U2VsZWN0ZWRUQ0ciLCJzZWxlY3RlZFJhcml0eSIsInNldFNlbGVjdGVkUmFyaXR5Iiwic2VsZWN0ZWRTZXQiLCJzZXRTZWxlY3RlZFNldCIsInNlbGVjdGVkVmFsdWVSYW5nZSIsInNldFNlbGVjdGVkVmFsdWVSYW5nZSIsInZpZXdNb2RlIiwic2V0Vmlld01vZGUiLCJwYWdpbmF0aW9uIiwic2V0UGFnaW5hdGlvbiIsInBhZ2UiLCJsaW1pdCIsInRvdGFsIiwicGFnZXMiLCJmaWx0ZXJzIiwic2V0RmlsdGVycyIsImdhbWVzIiwicmFyaXRpZXMiLCJzZXRzIiwiaGFzTW9yZSIsInNldEhhc01vcmUiLCJsb2FkaW5nTW9yZVJlZiIsImhhc01vcmVSZWYiLCJmZXRjaENhcmRzIiwiaXNMb2FkTW9yZSIsImN1cnJlbnQiLCJwYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJxdWVyeSIsImdhbWUiLCJyYXJpdHkiLCJzZXQiLCJtaW5QcmljZSIsIm1heFByaWNlIiwidG9TdHJpbmciLCJyZXNwb25zZSIsImZldGNoIiwiZGF0YSIsImpzb24iLCJzdWNjZXNzIiwicHJldkNhcmRzIiwiaGFzTW9yZUNhcmRzIiwiY29uc29sZSIsImVycm9yIiwicHJldiIsInNlYXJjaFRpbWVvdXQiLCJzZXRTZWFyY2hUaW1lb3V0IiwiaGFuZGxlU2VhcmNoQ2hhbmdlIiwidmFsdWUiLCJjbGVhclRpbWVvdXQiLCJuZXdUaW1lb3V0Iiwic2V0VGltZW91dCIsImxvYWRNb3JlQ2FyZHMiLCJuZXh0UGFnZSIsIm9ic2VydmVyIiwiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLCJlbnRyaWVzIiwiZm9yRWFjaCIsImVudHJ5IiwiaXNJbnRlcnNlY3RpbmciLCJyb290TWFyZ2luIiwidGhyZXNob2xkIiwic2V0dXBPYnNlcnZlciIsInNlbnRpbmVsIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsIm9ic2VydmUiLCJ1bm9ic2VydmUiLCJnZXRSYXJpdHlDb2xvciIsInJhcml0eUNvbG9yTWFwIiwidG9Mb3dlckNhc2UiLCJsYWJlbCIsImNvbG9yIiwiaWNvbiIsImZpbHRlciIsImluY2x1ZGVzIiwibWFwIiwiZm9ybWF0Q3VycmVuY3kiLCJhbW91bnQiLCJJbnRsIiwiTnVtYmVyRm9ybWF0Iiwic3R5bGUiLCJjdXJyZW5jeSIsImZvcm1hdCIsImdldFJhcml0eUxhYmVsIiwicmFyaXR5T3B0aW9uIiwiZmluZCIsIm9wdGlvbiIsImxlbmd0aCIsImRpdiIsImNsYXNzTmFtZSIsImJvcmRlckNvbG9yIiwiYmFja2dyb3VuZENvbG9yIiwiYm9yZGVyQm90dG9tIiwiaDEiLCJwIiwiYnV0dG9uIiwib25DbGljayIsInN2ZyIsImZpbGwiLCJzdHJva2UiLCJ2aWV3Qm94IiwicGF0aCIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VMaW5lam9pbiIsInN0cm9rZVdpZHRoIiwiZCIsImgzIiwiYm9yZGVyIiwic3BhbiIsImlucHV0IiwidHlwZSIsInBsYWNlaG9sZGVyIiwib25DaGFuZ2UiLCJlIiwidGFyZ2V0Iiwib25LZXlQcmVzcyIsImtleSIsInNlbGVjdCIsIm9wdCIsImNhcmQiLCJwdXNoIiwiaWQiLCJDYXJkM0QiLCJpc0hvdmVyZWQiLCJzZXRJc0hvdmVyZWQiLCJjYXJkUG9zaXRpb24iLCJzZXRDYXJkUG9zaXRpb24iLCJ4IiwieSIsIndpZHRoIiwiaGVpZ2h0IiwiaXNGYXZvcml0ZWQiLCJzZXRJc0Zhdm9yaXRlZCIsImhhbmRsZU1vdXNlTW92ZSIsInJlY3QiLCJjdXJyZW50VGFyZ2V0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwibGVmdCIsInRvcCIsImhhbmRsZU1vdXNlTGVhdmUiLCJoYW5kbGVNb3VzZUVudGVyIiwiZ2V0VENHQ29sb3IiLCJjb2xvcnMiLCJnZXRTZXRDb2xvciIsInNldE5hbWUiLCJoYXNoIiwic3BsaXQiLCJyZWR1Y2UiLCJhIiwiYiIsImNoYXJDb2RlQXQiLCJodWUiLCJNYXRoIiwiYWJzIiwiZ2V0UmFyaXR5R3JhZGllbnQiLCJncmFkaWVudHMiLCJjb21tb24iLCJ1bmNvbW1vbiIsInJhcmUiLCJteXRoaWMiLCJob2xvZ3JhcGhpYyIsImVuY2hhbnRlZCIsInVsdHJhIiwiZ2V0UmFyaXR5R2xvdyIsImdsb3dzIiwidHJhbnNpdGlvbiIsImJhY2tncm91bmQiLCJyZXBsYWNlIiwiYm94U2hhZG93IiwibmFtZSIsInNldF9uYW1lIiwib3JhY2xlX3RleHQiLCJjYXJkX3R5cGUiLCJjdXJyZW50X3ByaWNlIiwibWF4V2lkdGgiLCJhc3BlY3RSYXRpbyIsImJvcmRlclJhZGl1cyIsIm92ZXJmbG93Iiwib25Nb3VzZU1vdmUiLCJvbk1vdXNlTGVhdmUiLCJvbk1vdXNlRW50ZXIiLCJyYXJpdHlDb25maWciLCJwYXJ0aWNsZUNvdW50Iiwic3BhcmtsZUNvdW50IiwicGFydGljbGVDb2xvciIsInNwYXJrbGVDb2xvciIsImdsb3dDb2xvciIsImNvbmZpZyIsIkFycmF5IiwiXyIsImkiLCJlZGdlSW5kZXgiLCJwb3NpdGlvbk9uRWRnZSIsImZsb29yIiwiYW5pbWF0aW9uIiwiYW5pbWF0aW9uRGVsYXkiLCJvcGFjaXR5IiwibWl4QmxlbmRNb2RlIiwiaW1hZ2VfdXJsIiwiaW1nIiwic3JjIiwiYWx0Iiwib25FcnJvciIsImRpc3BsYXkiLCJuZXh0U2libGluZyIsIkNhcmRCYWNrIiwicXVhbnRpdHkiLCJib3JkZXJUb3AiLCJib3JkZXJMZWZ0IiwiYm9yZGVyUmlnaHQiLCJ0cmFuc2Zvcm0iLCJzdG9wUHJvcGFnYXRpb24iLCJwb2ludGVyRXZlbnRzIiwibWluSGVpZ2h0IiwiZmxleERpcmVjdGlvbiIsImp1c3RpZnlDb250ZW50IiwiaHAiLCJmb3JtIiwibWFuYV9jb3N0IiwiZmxhdm9yX3RleHQiLCJ3ZWFrbmVzcyIsInJldHJlYXRfY29zdCIsImRlY2tzIiwiY29sbGVjdGlvbnMiLCJqb2luIiwiZ2V0Q2FyZEJhY2tJbWFnZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(pages-dir-browser)/./pages/cards.js\n"));
|
||
|
||
/***/ })
|
||
|
||
},
|
||
/******/ __webpack_require__ => { // webpackRuntimeModules
|
||
/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
|
||
/******/ __webpack_require__.O(0, ["pages/_app","main"], () => (__webpack_exec__("(pages-dir-browser)/./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2FUsers%2Frstillw%2FDocuments%2Ftcg-vault%2Fpages%2Fcards.js&page=%2Fcards!")));
|
||
/******/ var __webpack_exports__ = __webpack_require__.O();
|
||
/******/ _N_E = __webpack_exports__;
|
||
/******/ }
|
||
]); |