Files
verify/frontend/.next/static/webpack/app/dashboard/analytics/page.2b734f742f80ec05.hot-update.js
Mohamed Mathar Irfan ed6610d5d8 Initial project upload
2026-07-28 17:57:02 +05:30

22 lines
127 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";
/*
* ATTENTION: An "eval-source-map" devtool has been used.
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
self["webpackHotUpdate_N_E"]("app/dashboard/analytics/page",{
/***/ "(app-pages-browser)/./app/dashboard/analytics/page.tsx":
/*!******************************************!*\
!*** ./app/dashboard/analytics/page.tsx ***!
\******************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ Analytics; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _barrel_optimize_names_Cell_Pie_PieChart_ResponsiveContainer_Tooltip_recharts__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! __barrel_optimize__?names=Cell,Pie,PieChart,ResponsiveContainer,Tooltip!=!recharts */ \"(app-pages-browser)/./node_modules/recharts/es6/component/ResponsiveContainer.js\");\n/* harmony import */ var _barrel_optimize_names_Cell_Pie_PieChart_ResponsiveContainer_Tooltip_recharts__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! __barrel_optimize__?names=Cell,Pie,PieChart,ResponsiveContainer,Tooltip!=!recharts */ \"(app-pages-browser)/./node_modules/recharts/es6/chart/PieChart.js\");\n/* harmony import */ var _barrel_optimize_names_Cell_Pie_PieChart_ResponsiveContainer_Tooltip_recharts__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! __barrel_optimize__?names=Cell,Pie,PieChart,ResponsiveContainer,Tooltip!=!recharts */ \"(app-pages-browser)/./node_modules/recharts/es6/polar/Pie.js\");\n/* harmony import */ var _barrel_optimize_names_Cell_Pie_PieChart_ResponsiveContainer_Tooltip_recharts__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! __barrel_optimize__?names=Cell,Pie,PieChart,ResponsiveContainer,Tooltip!=!recharts */ \"(app-pages-browser)/./node_modules/recharts/es6/component/Cell.js\");\n/* harmony import */ var _barrel_optimize_names_Cell_Pie_PieChart_ResponsiveContainer_Tooltip_recharts__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! __barrel_optimize__?names=Cell,Pie,PieChart,ResponsiveContainer,Tooltip!=!recharts */ \"(app-pages-browser)/./node_modules/recharts/es6/component/Tooltip.js\");\n/* harmony import */ var _barrel_optimize_names_Download_Globe_ScanLine_ShieldCheck_Users_lucide_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! __barrel_optimize__?names=Download,Globe,ScanLine,ShieldCheck,Users!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/download.js\");\n/* harmony import */ var _barrel_optimize_names_Download_Globe_ScanLine_ShieldCheck_Users_lucide_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! __barrel_optimize__?names=Download,Globe,ScanLine,ShieldCheck,Users!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/scan-line.js\");\n/* harmony import */ var _barrel_optimize_names_Download_Globe_ScanLine_ShieldCheck_Users_lucide_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! __barrel_optimize__?names=Download,Globe,ScanLine,ShieldCheck,Users!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/users.js\");\n/* harmony import */ var _barrel_optimize_names_Download_Globe_ScanLine_ShieldCheck_Users_lucide_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! __barrel_optimize__?names=Download,Globe,ScanLine,ShieldCheck,Users!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/shield-check.js\");\n/* harmony import */ var _barrel_optimize_names_Download_Globe_ScanLine_ShieldCheck_Users_lucide_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! __barrel_optimize__?names=Download,Globe,ScanLine,ShieldCheck,Users!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/globe.js\");\n/* harmony import */ var _components_ScanTrendChart__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/ScanTrendChart */ \"(app-pages-browser)/./components/ScanTrendChart.tsx\");\n/* harmony import */ var _lib_api__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/lib/api */ \"(app-pages-browser)/./lib/api.ts\");\n/* harmony import */ var _components_GeographicOverview__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/GeographicOverview */ \"(app-pages-browser)/./components/GeographicOverview.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\n\nconst PRESETS = [\n {\n label: \"7d\",\n days: 7\n },\n {\n label: \"30d\",\n days: 30\n },\n {\n label: \"90d\",\n days: 90\n }\n];\nconst DONUT = [\n \"#2563eb\",\n \"#10b981\",\n \"#f59e0b\",\n \"#94a3b8\"\n];\nconst DOW = [\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\",\n \"Sun\"\n];\nfunction Analytics() {\n _s();\n const [days, setDays] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(30);\n const [s, setS] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [trend, setTrend] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [topP, setTopP] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [cities, setCities] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [devices, setDevices] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [heat, setHeat] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [recent, setRecent] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [geo, setGeo] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const totalDevices = devices.reduce((sum, d)=>sum + d.scans, 0);\n const [brands, setBrands] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [brandId, setBrandId] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const [recentTotal, setRecentTotal] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0);\n const DONUT = [\n \"#22c55e\",\n \"#2563eb\",\n \"#7c3aed\",\n \"#f59e0b\"\n ];\n const [fromDate, setFromDate] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const [toDate, setToDate] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const params = new URLSearchParams();\n if (fromDate && toDate) {\n params.append(\"from_date\", fromDate);\n params.append(\"to_date\", toDate);\n } else {\n params.append(\"days\", String(days));\n }\n if (brandId) {\n params.append(\"brand_id\", brandId);\n }\n const query = params.toString();\n const [recentPage, setRecentPage] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(1);\n const [recentTotalPages, setRecentTotalPages] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(1);\n const recentPageSize = 20;\n const clearFilters = ()=>{\n setBrandId(\"\");\n setFromDate(\"\");\n setToDate(\"\");\n setDays(30);\n setRecentPage(1); // default preset\n };\n const [showAllProducts, setShowAllProducts] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n (0,_lib_api__WEBPACK_IMPORTED_MODULE_3__.api)(\"/analytics/brands\").then(setBrands);\n }, []);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n (0,_lib_api__WEBPACK_IMPORTED_MODULE_3__.api)(\"/analytics/summary?\".concat(query)).then(setS).catch(()=>{});\n (0,_lib_api__WEBPACK_IMPORTED_MODULE_3__.api)(\"/analytics/trend?\".concat(query)).then(setTrend).catch(()=>{});\n (0,_lib_api__WEBPACK_IMPORTED_MODULE_3__.api)(\"/analytics/top-products?\".concat(query)).then(setTopP).catch(()=>{});\n (0,_lib_api__WEBPACK_IMPORTED_MODULE_3__.api)(\"/analytics/top-cities?\".concat(query)).then(setCities).catch(()=>{});\n (0,_lib_api__WEBPACK_IMPORTED_MODULE_3__.api)(\"/analytics/devices?\".concat(query)).then(setDevices).catch(()=>{});\n (0,_lib_api__WEBPACK_IMPORTED_MODULE_3__.api)(\"/analytics/geography?\".concat(query)).then(setGeo).catch(()=>{});\n (0,_lib_api__WEBPACK_IMPORTED_MODULE_3__.api)(\"/analytics/time-distribution?\".concat(query)).then(setHeat).catch(()=>{});\n (0,_lib_api__WEBPACK_IMPORTED_MODULE_3__.api)(\"/analytics/recent-scans?\".concat(query, \"&page=\").concat(recentPage, \"&page_size=\").concat(recentPageSize)).then((res)=>{\n setRecent(res.items);\n setRecentTotalPages(res.pages);\n setRecentTotal(res.total);\n }).catch(()=>{});\n }, [\n days,\n fromDate,\n toDate,\n brandId,\n recentPage\n ]);\n const maxP = Math.max(1, ...topP.map((p)=>p.scans));\n const maxHeat = Math.max(1, ...heat.map((h)=>h.count));\n const startPage = Math.max(1, recentPage - 2);\n const endPage = Math.min(recentTotalPages, startPage + 4);\n const pages = [];\n for(let i = startPage; i <= endPage; i++){\n pages.push(i);\n }\n const downloadCsv = async ()=>{\n const token = localStorage.getItem(\"token\"); // or whatever key you use\n const res = await fetch(\"\".concat(_lib_api__WEBPACK_IMPORTED_MODULE_3__.apiBase, \"/analytics/export?\").concat(query), {\n headers: {\n Authorization: \"Bearer \".concat(token)\n }\n });\n if (!res.ok) {\n alert(\"Failed to download CSV\");\n return;\n }\n const blob = await res.blob();\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = \"scans.csv\";\n document.body.appendChild(a);\n a.click();\n a.remove();\n window.URL.revokeObjectURL(url);\n };\n var _s_total_scans, _s_unique_consumers, _s_today_scans, _s_active_products, _s_avg_trust_score, _s_countries;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-5\",\n children: [\n /*#__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)(\"h2\", {\n className: \"text-xl font-bold\",\n children: \"Analytics & Insights\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 132,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex rounded-lg border border-slate-200 overflow-hidden\",\n children: PRESETS.map((p)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n setDays(p.days);\n setFromDate(\"\");\n setToDate(\"\");\n },\n className: \"px-3 py-1.5 text-sm font-medium \".concat(days === p.days ? \"bg-brand-600 text-white\" : \"bg-white text-slate-600\"),\n children: p.label\n }, p.days, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 136,\n columnNumber: 3\n }, this))\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 134,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"date\",\n value: fromDate,\n onChange: (e)=>setFromDate(e.target.value),\n className: \"border rounded-lg px-3 py-2 text-sm\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 155,\n columnNumber: 3\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"to\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 162,\n columnNumber: 3\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"date\",\n value: toDate,\n onChange: (e)=>setToDate(e.target.value),\n className: \"border rounded-lg px-3 py-2 text-sm\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 164,\n columnNumber: 3\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 153,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"select\", {\n value: brandId,\n onChange: (e)=>setBrandId(e.target.value),\n className: \"border rounded-lg px-3 py-2 text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: \"\",\n children: \"All Brands\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 177,\n columnNumber: 5\n }, this),\n brands.map((b)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: b.id,\n children: b.name\n }, b.id, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 180,\n columnNumber: 9\n }, this))\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 172,\n columnNumber: 1\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: clearFilters,\n className: \"border border-slate-200 px-3 py-2 rounded-lg text-sm font-medium hover:bg-slate-50\",\n children: \"Clear Filters\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 184,\n columnNumber: 10\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: downloadCsv,\n className: \"flex items-center gap-2 border border-slate-200 px-3 py-2 rounded-lg text-sm font-medium\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Download_Globe_ScanLine_ShieldCheck_Users_lucide_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 194,\n columnNumber: 3\n }, this),\n \"CSV\"\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 190,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 133,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 131,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-6 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Kpi, {\n label: \"Total Scans\",\n value: (_s_total_scans = s === null || s === void 0 ? void 0 : s.total_scans) !== null && _s_total_scans !== void 0 ? _s_total_scans : 0,\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Download_Globe_ScanLine_ShieldCheck_Users_lucide_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-5 w-5\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 202,\n columnNumber: 68\n }, void 0),\n tint: \"bg-blue-50 text-blue-600\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 202,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Kpi, {\n label: \"Unique Consumers\",\n value: (_s_unique_consumers = s === null || s === void 0 ? void 0 : s.unique_consumers) !== null && _s_unique_consumers !== void 0 ? _s_unique_consumers : 0,\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Download_Globe_ScanLine_ShieldCheck_Users_lucide_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"h-5 w-5\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 203,\n columnNumber: 78\n }, void 0),\n tint: \"bg-violet-50 text-violet-600\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 203,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Kpi, {\n label: \"Today\",\n value: (_s_today_scans = s === null || s === void 0 ? void 0 : s.today_scans) !== null && _s_today_scans !== void 0 ? _s_today_scans : 0,\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Download_Globe_ScanLine_ShieldCheck_Users_lucide_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-5 w-5\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 204,\n columnNumber: 62\n }, void 0),\n tint: \"bg-orange-50 text-orange-500\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 204,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Kpi, {\n label: \"Active Products\",\n value: (_s_active_products = s === null || s === void 0 ? void 0 : s.active_products) !== null && _s_active_products !== void 0 ? _s_active_products : 0,\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Download_Globe_ScanLine_ShieldCheck_Users_lucide_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-5 w-5\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 205,\n columnNumber: 76\n }, void 0),\n tint: \"bg-emerald-50 text-emerald-600\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 205,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Kpi, {\n label: \"Avg Trust\",\n value: \"\".concat((_s_avg_trust_score = s === null || s === void 0 ? void 0 : s.avg_trust_score) !== null && _s_avg_trust_score !== void 0 ? _s_avg_trust_score : 0, \"%\"),\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Download_Globe_ScanLine_ShieldCheck_Users_lucide_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"h-5 w-5\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 206,\n columnNumber: 76\n }, void 0),\n tint: \"bg-blue-50 text-blue-600\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 206,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Kpi, {\n label: \"Countries\",\n value: (_s_countries = s === null || s === void 0 ? void 0 : s.countries) !== null && _s_countries !== void 0 ? _s_countries : 0,\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Download_Globe_ScanLine_ShieldCheck_Users_lucide_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n className: \"h-5 w-5\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 207,\n columnNumber: 64\n }, void 0),\n tint: \"bg-amber-50 text-amber-500\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 207,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 201,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid lg:grid-cols-3 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card p-5 lg:col-span-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"font-bold mb-2\",\n children: \"Scan Trend\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 212,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_ScanTrendChart__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n data: trend\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 213,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 211,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card p-5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"font-bold mb-5\",\n children: \"Device Types\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 216,\n columnNumber: 3\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 gap-6 items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Cell_Pie_PieChart_ResponsiveContainer_Tooltip_recharts__WEBPACK_IMPORTED_MODULE_10__.ResponsiveContainer, {\n width: 200,\n height: 200,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Cell_Pie_PieChart_ResponsiveContainer_Tooltip_recharts__WEBPACK_IMPORTED_MODULE_11__.PieChart, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Cell_Pie_PieChart_ResponsiveContainer_Tooltip_recharts__WEBPACK_IMPORTED_MODULE_12__.Pie, {\n data: devices,\n dataKey: \"scans\",\n nameKey: \"device\",\n innerRadius: 55,\n outerRadius: 80,\n stroke: \"#fff\",\n strokeWidth: 2,\n children: devices.map((_, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Cell_Pie_PieChart_ResponsiveContainer_Tooltip_recharts__WEBPACK_IMPORTED_MODULE_13__.Cell, {\n fill: DONUT[i % DONUT.length]\n }, i, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 233,\n columnNumber: 15\n }, this))\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 223,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Cell_Pie_PieChart_ResponsiveContainer_Tooltip_recharts__WEBPACK_IMPORTED_MODULE_14__.Tooltip, {\n formatter: (value)=>[\n \"\".concat(value, \" scans\"),\n \"Scans\"\n ]\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 240,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 222,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 221,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 220,\n columnNumber: 5\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: devices.map((d, i)=>{\n const percent = totalDevices === 0 ? 0 : (d.scans / totalDevices * 100).toFixed(1);\n return /*#__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 items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"h-2 w-1 rounded-full\",\n style: {\n backgroundColor: DONUT[i % DONUT.length]\n }\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 264,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-slate-700\",\n children: d.device\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 271,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 263,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-semibold text-slate-600\",\n children: [\n percent,\n \"% (\",\n d.scans.toLocaleString(),\n \")\"\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 276,\n columnNumber: 13\n }, this)\n ]\n }, d.device, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 259,\n columnNumber: 11\n }, this);\n })\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 251,\n columnNumber: 5\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 218,\n columnNumber: 3\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 215,\n columnNumber: 8\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card p-5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"font-bold mb-4\",\n children: \"Scan Time Distribution\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 286,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"overflow-x-auto\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"inline-grid gap-0.5\",\n style: {\n gridTemplateColumns: \"28px repeat(24, 10px)\"\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {}, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 289,\n columnNumber: 13\n }, this),\n Array.from({\n length: 24\n }).map((_, h)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[8px] text-slate-400 text-center\",\n children: h % 3 === 0 ? h : \"\"\n }, h, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 291,\n columnNumber: 15\n }, this)),\n DOW.map((day, d)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react__WEBPACK_IMPORTED_MODULE_1__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[10px] text-slate-500 pr-1 flex items-center\",\n children: day\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 295,\n columnNumber: 17\n }, this),\n Array.from({\n length: 24\n }).map((_, h)=>{\n const cell = heat.find((x)=>x.dow === d && x.hour === h);\n var _cell_count;\n const v = (_cell_count = cell === null || cell === void 0 ? void 0 : cell.count) !== null && _cell_count !== void 0 ? _cell_count : 0;\n const op = v === 0 ? 0.06 : 0.2 + v / maxHeat * 0.8;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n title: \"\".concat(day, \" \").concat(h, \":00 — \").concat(v),\n className: \"h-[12px] w-[12px] rounded-[2px]\",\n style: {\n background: \"rgba(37,99,235,\".concat(op, \")\")\n }\n }, \"\".concat(d, \"-\").concat(h), false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 300,\n columnNumber: 26\n }, this);\n })\n ]\n }, \"row-\".concat(d), true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 294,\n columnNumber: 15\n }, this))\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 288,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 287,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 285,\n columnNumber: 10\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 210,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid lg:grid-cols-3 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card p-5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"font-bold\",\n children: \"Top Products\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 313,\n columnNumber: 5\n }, this),\n topP.length > 5 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setShowAllProducts(!showAllProducts),\n className: \"text-sm font-medium text-blue-600 hover:underline\",\n children: showAllProducts ? \"Show Less\" : \"View All\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 316,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 312,\n columnNumber: 3\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: [\n (showAllProducts ? topP : topP.slice(0, 5)).map((p)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-36 truncate text-sm text-slate-600\",\n children: p.name\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 328,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 h-3 rounded-full bg-slate-100 overflow-hidden\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-full rounded-full bg-blue-500\",\n style: {\n width: \"\".concat(p.scans / maxP * 100, \"%\")\n }\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 333,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 332,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-12 text-right text-sm font-semibold\",\n children: p.scans\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 341,\n columnNumber: 9\n }, this)\n ]\n }, p.name, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 327,\n columnNumber: 7\n }, this)),\n !showAllProducts && topP.length > 5 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setShowAllProducts(true),\n className: \"text-sm font-medium text-blue-600 hover:underline\",\n children: [\n \"+\",\n topP.length - 5,\n \" more products\"\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 348,\n columnNumber: 7\n }, this),\n topP.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-slate-400\",\n children: \"No data.\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 357,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 325,\n columnNumber: 3\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 311,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card p-5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"font-bold mb-4\",\n children: \"Top Cities\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 362,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ol\", {\n className: \"space-y-2 text-sm\",\n children: [\n cities.map((c, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n className: \"flex justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-slate-600\",\n children: [\n i + 1,\n \". \",\n c.city\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 366,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-semibold\",\n children: c.scans\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 367,\n columnNumber: 17\n }, this)\n ]\n }, c.city, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 365,\n columnNumber: 15\n }, this)),\n cities.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n className: \"text-slate-400\",\n children: \"No data.\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 370,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 363,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 361,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card p-5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"font-bold mb-4\",\n children: \"Geographic Overview\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 374,\n columnNumber: 5\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_GeographicOverview__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n data: geo\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 378,\n columnNumber: 5\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 373,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 310,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card overflow-x-auto\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"font-bold p-5 pb-3\",\n children: \"Recent Scans\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 387,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"table\", {\n className: \"w-full text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"thead\", {\n className: \"bg-slate-50 text-slate-500 text-left\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"tr\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-4 py-3 font-medium\",\n children: \"Time\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 391,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-4 py-3 font-medium\",\n children: \"Code\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 392,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-4 py-3 font-medium\",\n children: \"City\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 393,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-4 py-3 font-medium\",\n children: \"Country\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 394,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-4 py-3 font-medium\",\n children: \"Device\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 395,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-4 py-3 font-medium\",\n children: \"IP Address\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 396,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 390,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 389,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"tbody\", {\n className: \"divide-y divide-slate-100\",\n children: [\n recent.map((r, i)=>/*#__PURE__*/ {\n var _r_city, _r_country, _r_device, _r_ip;\n return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"tr\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-4 py-3 text-slate-500\",\n children: new Date(r.at).toLocaleString()\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 402,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-4 py-3 font-mono text-slate-600\",\n children: r.code\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 403,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-4 py-3\",\n children: (_r_city = r.city) !== null && _r_city !== void 0 ? _r_city : \"—\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 404,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-4 py-3\",\n children: (_r_country = r.country) !== null && _r_country !== void 0 ? _r_country : \"—\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 405,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-4 py-3\",\n children: (_r_device = r.device) !== null && _r_device !== void 0 ? _r_device : \"—\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 406,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-4 py-3\",\n children: (_r_ip = r.ip) !== null && _r_ip !== void 0 ? _r_ip : \"—\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 407,\n columnNumber: 17\n }, this)\n ]\n }, i, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 401,\n columnNumber: 15\n }, this);\n }),\n recent.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"tr\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n colSpan: 5,\n className: \"px-4 py-10 text-center text-slate-400\",\n children: \"No scans yet.\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 410,\n columnNumber: 41\n }, this)\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 410,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 399,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 388,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between px-4 py-3 text-sm text-slate-500 border-t\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"Showing\",\n \" \",\n recent.length === 0 ? 0 : (recentPage - 1) * recentPageSize + 1,\n \" \",\n \"to\",\n \" \",\n Math.min(recentPage * recentPageSize, recentTotal),\n \" \",\n \"of \",\n recentTotal\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 414,\n columnNumber: 3\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n disabled: recentPage === 1,\n onClick: ()=>setRecentPage(recentPage - 1),\n className: \"px-3 py-1 rounded border border-slate-200 disabled:opacity-40\",\n children: \"\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 425,\n columnNumber: 5\n }, this),\n pages.map((p)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setRecentPage(p),\n className: \"px-3 py-1 rounded \".concat(recentPage === p ? \"bg-brand-600 text-white\" : \"border border-slate-200\"),\n children: p\n }, p, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 434,\n columnNumber: 3\n }, this)),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n disabled: recentPage === recentTotalPages,\n onClick: ()=>setRecentPage(recentPage + 1),\n className: \"px-3 py-1 rounded border border-slate-200 disabled:opacity-40\",\n children: \"\"\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 447,\n columnNumber: 5\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 424,\n columnNumber: 3\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 413,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 386,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 130,\n columnNumber: 5\n }, this);\n}\n_s(Analytics, \"HImQ3Jyw0k/vj8rTvG43NFlDDLU=\");\n_c = Analytics;\nfunction Kpi(param) {\n let { label, value, icon, tint } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-11 w-11 rounded-xl grid place-items-center shrink-0 \".concat(tint),\n children: icon\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 465,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-w-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xl font-extrabold text-slate-900\",\n children: value\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 467,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-slate-500\",\n children: label\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 468,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 466,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 464,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"C:\\\\company_projects\\\\verify pack\\\\frontend\\\\app\\\\dashboard\\\\analytics\\\\page.tsx\",\n lineNumber: 463,\n columnNumber: 5\n }, this);\n}\n_c1 = Kpi;\nvar _c, _c1;\n$RefreshReg$(_c, \"Analytics\");\n$RefreshReg$(_c1, \"Kpi\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9kYXNoYm9hcmQvYW5hbHl0aWNzL3BhZ2UudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDc0Q7QUFHcEM7QUFDMkQ7QUFDcEI7QUFDaEI7QUFDd0I7QUFFakUsTUFBTWlCLFVBQVU7SUFDZDtRQUFFQyxPQUFPO1FBQU1DLE1BQU07SUFBRTtJQUN2QjtRQUFFRCxPQUFPO1FBQU9DLE1BQU07SUFBRztJQUN6QjtRQUFFRCxPQUFPO1FBQU9DLE1BQU07SUFBRztDQUMxQjtBQUNELE1BQU1DLFFBQVE7SUFBQztJQUFXO0lBQVc7SUFBVztDQUFVO0FBQzFELE1BQU1DLE1BQU07SUFBQztJQUFPO0lBQU87SUFBTztJQUFPO0lBQU87SUFBTztDQUFNO0FBRzlDLFNBQVNDOztJQUN0QixNQUFNLENBQUNILE1BQU1JLFFBQVEsR0FBR3JCLCtDQUFRQSxDQUFDO0lBQ2pDLE1BQU0sQ0FBQ3NCLEdBQUdDLEtBQUssR0FBR3ZCLCtDQUFRQSxDQUFNO0lBQ2hDLE1BQU0sQ0FBQ3dCLE9BQU9DLFNBQVMsR0FBR3pCLCtDQUFRQSxDQUFRLEVBQUU7SUFDNUMsTUFBTSxDQUFDMEIsTUFBTUMsUUFBUSxHQUFHM0IsK0NBQVFBLENBQVEsRUFBRTtJQUMxQyxNQUFNLENBQUM0QixRQUFRQyxVQUFVLEdBQUc3QiwrQ0FBUUEsQ0FBUSxFQUFFO0lBQzlDLE1BQU0sQ0FBQzhCLFNBQVNDLFdBQVcsR0FBRy9CLCtDQUFRQSxDQUFRLEVBQUU7SUFDaEQsTUFBTSxDQUFDZ0MsTUFBTUMsUUFBUSxHQUFHakMsK0NBQVFBLENBQVEsRUFBRTtJQUMxQyxNQUFNLENBQUNrQyxRQUFRQyxVQUFVLEdBQUduQywrQ0FBUUEsQ0FBUSxFQUFFO0lBQzlDLE1BQU0sQ0FBQ29DLEtBQUtDLE9BQU8sR0FBR3JDLCtDQUFRQSxDQUFRLEVBQUU7SUFDeEMsTUFBTXNDLGVBQWVSLFFBQVFTLE1BQU0sQ0FBQyxDQUFDQyxLQUFLQyxJQUFNRCxNQUFNQyxFQUFFQyxLQUFLLEVBQUU7SUFDL0QsTUFBTSxDQUFDQyxRQUFRQyxVQUFVLEdBQUc1QywrQ0FBUUEsQ0FBQyxFQUFFO0lBQ3pDLE1BQU0sQ0FBQzZDLFNBQVNDLFdBQVcsR0FBRzlDLCtDQUFRQSxDQUFDO0lBQ3ZDLE1BQU0sQ0FBQytDLGFBQWFDLGVBQWUsR0FBR2hELCtDQUFRQSxDQUFDO0lBRy9DLE1BQU1rQixRQUFRO1FBQ1o7UUFDQTtRQUNBO1FBQ0E7S0FDRDtJQUNELE1BQU0sQ0FBQytCLFVBQVVDLFlBQVksR0FBR2xELCtDQUFRQSxDQUFDO0lBQ3pDLE1BQU0sQ0FBQ21ELFFBQVFDLFVBQVUsR0FBR3BELCtDQUFRQSxDQUFDO0lBQ3JDLE1BQU1xRCxTQUFTLElBQUlDO0lBRW5CLElBQUlMLFlBQVlFLFFBQVE7UUFDcEJFLE9BQU9FLE1BQU0sQ0FBQyxhQUFhTjtRQUMzQkksT0FBT0UsTUFBTSxDQUFDLFdBQVdKO0lBQzdCLE9BQU87UUFDSEUsT0FBT0UsTUFBTSxDQUFDLFFBQVFDLE9BQU92QztJQUNqQztJQUVBLElBQUk0QixTQUFTO1FBQ1RRLE9BQU9FLE1BQU0sQ0FBQyxZQUFZVjtJQUM5QjtJQUVBLE1BQU1ZLFFBQVFKLE9BQU9LLFFBQVE7SUFFN0IsTUFBTSxDQUFDQyxZQUFZQyxjQUFjLEdBQUc1RCwrQ0FBUUEsQ0FBQztJQUM3QyxNQUFNLENBQUM2RCxrQkFBa0JDLG9CQUFvQixHQUFHOUQsK0NBQVFBLENBQUM7SUFDekQsTUFBTStELGlCQUFpQjtJQUN2QixNQUFNQyxlQUFlO1FBQ25CbEIsV0FBVztRQUNYSSxZQUFZO1FBQ1pFLFVBQVU7UUFDVi9CLFFBQVE7UUFDUnVDLGNBQWMsSUFBSSxpQkFBaUI7SUFDckM7SUFDQSxNQUFNLENBQUNLLGlCQUFpQkMsbUJBQW1CLEdBQUdsRSwrQ0FBUUEsQ0FBQztJQUN2REQsZ0RBQVNBLENBQUM7UUFDTmEsNkNBQUdBLENBQUMscUJBQXFCdUQsSUFBSSxDQUFDdkI7SUFDbEMsR0FBRyxFQUFFO0lBQ0o3QyxnREFBU0EsQ0FBQztRQUNUYSw2Q0FBR0EsQ0FBQyxzQkFBNEIsT0FBTjZDLFFBQVNVLElBQUksQ0FBQzVDLE1BQU02QyxLQUFLLENBQUMsS0FBTztRQUMzRHhELDZDQUFHQSxDQUFDLG9CQUEwQixPQUFONkMsUUFBU1UsSUFBSSxDQUFDMUMsVUFBVTJDLEtBQUssQ0FBQyxLQUFPO1FBQzdEeEQsNkNBQUdBLENBQUMsMkJBQWlDLE9BQU42QyxRQUFTVSxJQUFJLENBQUN4QyxTQUFTeUMsS0FBSyxDQUFDLEtBQU87UUFDbkV4RCw2Q0FBR0EsQ0FBQyx5QkFBK0IsT0FBTjZDLFFBQVNVLElBQUksQ0FBQ3RDLFdBQVd1QyxLQUFLLENBQUMsS0FBTztRQUNuRXhELDZDQUFHQSxDQUFDLHNCQUE0QixPQUFONkMsUUFBU1UsSUFBSSxDQUFDcEMsWUFBWXFDLEtBQUssQ0FBQyxLQUFPO1FBQ2pFeEQsNkNBQUdBLENBQUMsd0JBQThCLE9BQU42QyxRQUFTVSxJQUFJLENBQUM5QixRQUFRK0IsS0FBSyxDQUFDLEtBQU87UUFDL0R4RCw2Q0FBR0EsQ0FBQyxnQ0FBc0MsT0FBTjZDLFFBQVNVLElBQUksQ0FBQ2xDLFNBQVNtQyxLQUFLLENBQUMsS0FBTztRQUN4RXhELDZDQUFHQSxDQUNILDJCQUF5QytDLE9BQWRGLE9BQU0sVUFBZ0NNLE9BQXhCSixZQUFXLGVBQTRCLE9BQWZJLGlCQUVoRUksSUFBSSxDQUFDLENBQUNFO1lBQ0xsQyxVQUFVa0MsSUFBSUMsS0FBSztZQUNuQlIsb0JBQW9CTyxJQUFJRSxLQUFLO1lBQzdCdkIsZUFBZXFCLElBQUlHLEtBQUs7UUFDMUIsR0FDQ0osS0FBSyxDQUFDLEtBQU87SUFFaEIsR0FBRztRQUFDbkQ7UUFBTWdDO1FBQVVFO1FBQU9OO1FBQVNjO0tBQVc7SUFFN0MsTUFBTWMsT0FBT0MsS0FBS0MsR0FBRyxDQUFDLE1BQU1qRCxLQUFLa0QsR0FBRyxDQUFDLENBQUNDLElBQU1BLEVBQUVuQyxLQUFLO0lBQ25ELE1BQU1vQyxVQUFVSixLQUFLQyxHQUFHLENBQUMsTUFBTTNDLEtBQUs0QyxHQUFHLENBQUMsQ0FBQ0csSUFBTUEsRUFBRUMsS0FBSztJQUN0RCxNQUFNQyxZQUFZUCxLQUFLQyxHQUFHLENBQUMsR0FBR2hCLGFBQWE7SUFDN0MsTUFBTXVCLFVBQVVSLEtBQUtTLEdBQUcsQ0FBQ3RCLGtCQUFrQm9CLFlBQVk7SUFFdkQsTUFBTVYsUUFBUSxFQUFFO0lBQ2hCLElBQUssSUFBSWEsSUFBSUgsV0FBV0csS0FBS0YsU0FBU0UsSUFBSztRQUN6Q2IsTUFBTWMsSUFBSSxDQUFDRDtJQUNiO0lBQ0UsTUFBTUUsY0FBYztRQUNwQixNQUFNQyxRQUFRQyxhQUFhQyxPQUFPLENBQUMsVUFBVSwwQkFBMEI7UUFFdkUsTUFBTXBCLE1BQU0sTUFBTXFCLE1BQU0sR0FBK0JqQyxPQUE1QjVDLDZDQUFPQSxFQUFDLHNCQUEwQixPQUFONEMsUUFBUztZQUM5RGtDLFNBQVM7Z0JBQ1BDLGVBQWUsVUFBZ0IsT0FBTkw7WUFDM0I7UUFDRjtRQUVBLElBQUksQ0FBQ2xCLElBQUl3QixFQUFFLEVBQUU7WUFDWEMsTUFBTTtZQUNOO1FBQ0Y7UUFFQSxNQUFNQyxPQUFPLE1BQU0xQixJQUFJMEIsSUFBSTtRQUMzQixNQUFNQyxNQUFNQyxPQUFPQyxHQUFHLENBQUNDLGVBQWUsQ0FBQ0o7UUFFdkMsTUFBTUssSUFBSUMsU0FBU0MsYUFBYSxDQUFDO1FBQ2pDRixFQUFFRyxJQUFJLEdBQUdQO1FBQ1RJLEVBQUVJLFFBQVEsR0FBRztRQUNiSCxTQUFTSSxJQUFJLENBQUNDLFdBQVcsQ0FBQ047UUFDMUJBLEVBQUVPLEtBQUs7UUFDUFAsRUFBRVEsTUFBTTtRQUVSWCxPQUFPQyxHQUFHLENBQUNXLGVBQWUsQ0FBQ2I7SUFDN0I7UUEyRXdDMUUsZ0JBQ0tBLHFCQUNYQSxnQkFDVUEsb0JBQ0hBLG9CQUNIQTtJQTlFcEMscUJBQ0UsOERBQUN3RjtRQUFJQyxXQUFVOzswQkFDYiw4REFBQ0Q7Z0JBQUlDLFdBQVU7O2tDQUNiLDhEQUFDQzt3QkFBR0QsV0FBVTtrQ0FBb0I7Ozs7OztrQ0FDbEMsOERBQUNEO3dCQUFJQyxXQUFVOzswQ0FDYiw4REFBQ0Q7Z0NBQUlDLFdBQVU7MENBQ1poRyxRQUFRNkQsR0FBRyxDQUFDLENBQUNDLGtCQUN4Qiw4REFBQ29DO3dDQUVDQyxTQUFTOzRDQUNQN0YsUUFBUXdELEVBQUU1RCxJQUFJOzRDQUNkaUMsWUFBWTs0Q0FDWkUsVUFBVTt3Q0FDWjt3Q0FDQTJELFdBQVcsbUNBSVYsT0FIQzlGLFNBQVM0RCxFQUFFNUQsSUFBSSxHQUNYLDRCQUNBO2tEQUdMNEQsRUFBRTdELEtBQUs7dUNBWkg2RCxFQUFFNUQsSUFBSTs7Ozs7Ozs7OzswQ0FnQkwsOERBQUM2RjtnQ0FBSUMsV0FBVTs7a0RBRXZCLDhEQUFDSTt3Q0FDQ0MsTUFBSzt3Q0FDTEMsT0FBT3BFO3dDQUNQcUUsVUFBVSxDQUFDQyxJQUFNckUsWUFBWXFFLEVBQUVDLE1BQU0sQ0FBQ0gsS0FBSzt3Q0FDM0NOLFdBQVU7Ozs7OztrREFHWiw4REFBQ1U7a0RBQUs7Ozs7OztrREFFTiw4REFBQ047d0NBQ0NDLE1BQUs7d0NBQ0xDLE9BQU9sRTt3Q0FDUG1FLFVBQVUsQ0FBQ0MsSUFBTW5FLFVBQVVtRSxFQUFFQyxNQUFNLENBQUNILEtBQUs7d0NBQ3pDTixXQUFVOzs7Ozs7Ozs7Ozs7MENBSWQsOERBQUNXO2dDQUNHTCxPQUFPeEU7Z0NBQ1B5RSxVQUFVLENBQUNDLElBQU16RSxXQUFXeUUsRUFBRUMsTUFBTSxDQUFDSCxLQUFLO2dDQUMxQ04sV0FBVTs7a0RBRVYsOERBQUNZO3dDQUFPTixPQUFNO2tEQUFHOzs7Ozs7b0NBRWhCMUUsT0FBT2lDLEdBQUcsQ0FBQyxDQUFDZ0Qsa0JBQ1QsOERBQUNEOzRDQUFrQk4sT0FBT08sRUFBRUMsRUFBRTtzREFDekJELEVBQUVFLElBQUk7MkNBREVGLEVBQUVDLEVBQUU7Ozs7Ozs7Ozs7OzBDQUloQiw4REFBQ1o7Z0NBQ1JDLFNBQVNsRDtnQ0FDVCtDLFdBQVU7MENBQ1g7Ozs7OzswQ0FHUyw4REFBQ0U7Z0NBQ1RDLFNBQVM1QjtnQ0FDVHlCLFdBQVU7O2tEQUVWLDhEQUFDekcscUhBQVFBO3dDQUFDeUcsV0FBVTs7Ozs7O29DQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQU81Qiw4REFBQ0Q7Z0JBQUlDLFdBQVU7O2tDQUNiLDhEQUFDZ0I7d0JBQUkvRyxPQUFNO3dCQUFjcUcsT0FBTy9GLENBQUFBLGlCQUFBQSxjQUFBQSx3QkFBQUEsRUFBRzBHLFdBQVcsY0FBZDFHLDRCQUFBQSxpQkFBa0I7d0JBQUcyRyxvQkFBTSw4REFBQzFILHFIQUFRQTs0QkFBQ3dHLFdBQVU7Ozs7Ozt3QkFBY21CLE1BQUs7Ozs7OztrQ0FDbEcsOERBQUNIO3dCQUFJL0csT0FBTTt3QkFBbUJxRyxPQUFPL0YsQ0FBQUEsc0JBQUFBLGNBQUFBLHdCQUFBQSxFQUFHNkcsZ0JBQWdCLGNBQW5CN0csaUNBQUFBLHNCQUF1Qjt3QkFBRzJHLG9CQUFNLDhEQUFDekgscUhBQUtBOzRCQUFDdUcsV0FBVTs7Ozs7O3dCQUFjbUIsTUFBSzs7Ozs7O2tDQUN6Ryw4REFBQ0g7d0JBQUkvRyxPQUFNO3dCQUFRcUcsT0FBTy9GLENBQUFBLGlCQUFBQSxjQUFBQSx3QkFBQUEsRUFBRzhHLFdBQVcsY0FBZDlHLDRCQUFBQSxpQkFBa0I7d0JBQUcyRyxvQkFBTSw4REFBQzFILHFIQUFRQTs0QkFBQ3dHLFdBQVU7Ozs7Ozt3QkFBY21CLE1BQUs7Ozs7OztrQ0FDNUYsOERBQUNIO3dCQUFJL0csT0FBTTt3QkFBa0JxRyxPQUFPL0YsQ0FBQUEscUJBQUFBLGNBQUFBLHdCQUFBQSxFQUFHK0csZUFBZSxjQUFsQi9HLGdDQUFBQSxxQkFBc0I7d0JBQUcyRyxvQkFBTSw4REFBQ3ZILHFIQUFXQTs0QkFBQ3FHLFdBQVU7Ozs7Ozt3QkFBY21CLE1BQUs7Ozs7OztrQ0FDN0csOERBQUNIO3dCQUFJL0csT0FBTTt3QkFBWXFHLE9BQU8sR0FBMkIsT0FBeEIvRixDQUFBQSxxQkFBQUEsY0FBQUEsd0JBQUFBLEVBQUdnSCxlQUFlLGNBQWxCaEgsZ0NBQUFBLHFCQUFzQixHQUFFO3dCQUFJMkcsb0JBQU0sOERBQUN2SCxxSEFBV0E7NEJBQUNxRyxXQUFVOzs7Ozs7d0JBQWNtQixNQUFLOzs7Ozs7a0NBQzdHLDhEQUFDSDt3QkFBSS9HLE9BQU07d0JBQVlxRyxPQUFPL0YsQ0FBQUEsZUFBQUEsY0FBQUEsd0JBQUFBLEVBQUdpSCxTQUFTLGNBQVpqSCwwQkFBQUEsZUFBZ0I7d0JBQUcyRyxvQkFBTSw4REFBQ3hILHFIQUFLQTs0QkFBQ3NHLFdBQVU7Ozs7Ozt3QkFBY21CLE1BQUs7Ozs7Ozs7Ozs7OzswQkFHN0YsOERBQUNwQjtnQkFBSUMsV0FBVTs7a0NBQ2IsOERBQUNEO3dCQUFJQyxXQUFVOzswQ0FDYiw4REFBQ3lCO2dDQUFHekIsV0FBVTswQ0FBaUI7Ozs7OzswQ0FDL0IsOERBQUNwRyxrRUFBY0E7Z0NBQUM4SCxNQUFNakg7Ozs7Ozs7Ozs7OztrQ0FFekIsOERBQUNzRjt3QkFBSUMsV0FBVTs7MENBQ3BCLDhEQUFDeUI7Z0NBQUd6QixXQUFVOzBDQUFpQjs7Ozs7OzBDQUUvQiw4REFBQ0Q7Z0NBQUlDLFdBQVU7O2tEQUViLDhEQUFDRDt3Q0FBSUMsV0FBVTtrREFDYiw0RUFBQzNHLCtIQUFtQkE7NENBQUNzSSxPQUFPOzRDQUFLQyxRQUFRO3NEQUN2Qyw0RUFBQzFJLG9IQUFRQTs7a0VBQ1AsOERBQUNDLCtHQUFHQTt3REFDRnVJLE1BQU0zRzt3REFDTjhHLFNBQVE7d0RBQ1JDLFNBQVE7d0RBQ1JDLGFBQWE7d0RBQ2JDLGFBQWE7d0RBQ2JDLFFBQU87d0RBQ1BDLGFBQWE7a0VBRVpuSCxRQUFROEMsR0FBRyxDQUFDLENBQUNzRSxHQUFHOUQsa0JBQ2YsOERBQUNqRixnSEFBSUE7Z0VBRUhnSixNQUFNakksS0FBSyxDQUFDa0UsSUFBSWxFLE1BQU1rSSxNQUFNLENBQUM7K0RBRHhCaEU7Ozs7Ozs7Ozs7a0VBTVgsOERBQUMvRSxtSEFBT0E7d0RBQ05nSixXQUFXLENBQUNoQyxRQUFlO2dFQUN4QixHQUFRLE9BQU5BLE9BQU07Z0VBQ1Q7NkRBQ0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0RBT1QsOERBQUNQO3dDQUFJQyxXQUFVO2tEQUNaakYsUUFBUThDLEdBQUcsQ0FBQyxDQUFDbkMsR0FBRzJDOzRDQUNmLE1BQU1rRSxVQUNKaEgsaUJBQWlCLElBQ2IsSUFDQSxDQUFDLEVBQUdJLEtBQUssR0FBR0osZUFBZ0IsR0FBRSxFQUFHaUgsT0FBTyxDQUFDOzRDQUUvQyxxQkFDRSw4REFBQ3pDO2dEQUVDQyxXQUFVOztrRUFFViw4REFBQ0Q7d0RBQUlDLFdBQVU7OzBFQUNiLDhEQUFDVTtnRUFDQ1YsV0FBVTtnRUFDVnlDLE9BQU87b0VBQ0xDLGlCQUFpQnZJLEtBQUssQ0FBQ2tFLElBQUlsRSxNQUFNa0ksTUFBTSxDQUFDO2dFQUMxQzs7Ozs7OzBFQUdGLDhEQUFDM0I7Z0VBQUtWLFdBQVU7MEVBQ2J0RSxFQUFFaUgsTUFBTTs7Ozs7Ozs7Ozs7O2tFQUliLDhEQUFDakM7d0RBQUtWLFdBQVU7OzREQUNidUM7NERBQVE7NERBQUk3RyxFQUFFQyxLQUFLLENBQUNpSCxjQUFjOzREQUFHOzs7Ozs7OzsrQ0FqQm5DbEgsRUFBRWlILE1BQU07Ozs7O3dDQXFCbkI7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQ0FJRyw4REFBQzVDO3dCQUFJQyxXQUFVOzswQ0FDaEIsOERBQUN5QjtnQ0FBR3pCLFdBQVU7MENBQWlCOzs7Ozs7MENBQy9CLDhEQUFDRDtnQ0FBSUMsV0FBVTswQ0FDYiw0RUFBQ0Q7b0NBQUlDLFdBQVU7b0NBQXNCeUMsT0FBTzt3Q0FBRUkscUJBQXFCO29DQUF3Qjs7c0RBQ3pGLDhEQUFDOUM7Ozs7O3dDQUNBK0MsTUFBTUMsSUFBSSxDQUFDOzRDQUFFVixRQUFRO3dDQUFHLEdBQUd4RSxHQUFHLENBQUMsQ0FBQ3NFLEdBQUduRSxrQkFDbEMsOERBQUMrQjtnREFBWUMsV0FBVTswREFBeUNoQyxJQUFJLE1BQU0sSUFBSUEsSUFBSTsrQ0FBeEVBOzs7Ozt3Q0FFWDVELElBQUl5RCxHQUFHLENBQUMsQ0FBQ21GLEtBQUt0SCxrQkFDYiw4REFBQzNDLDJDQUFRQTs7a0VBQ1AsOERBQUNnSDt3REFBSUMsV0FBVTtrRUFBcURnRDs7Ozs7O29EQUNuRUYsTUFBTUMsSUFBSSxDQUFDO3dEQUFFVixRQUFRO29EQUFHLEdBQUd4RSxHQUFHLENBQUMsQ0FBQ3NFLEdBQUduRTt3REFDbEMsTUFBTWlGLE9BQU9oSSxLQUFLaUksSUFBSSxDQUFDLENBQUNDLElBQU1BLEVBQUVDLEdBQUcsS0FBSzFILEtBQUt5SCxFQUFFRSxJQUFJLEtBQUtyRjs0REFDOUNpRjt3REFBVixNQUFNSyxJQUFJTCxDQUFBQSxjQUFBQSxpQkFBQUEsMkJBQUFBLEtBQU1oRixLQUFLLGNBQVhnRix5QkFBQUEsY0FBZTt3REFDekIsTUFBTU0sS0FBS0QsTUFBTSxJQUFJLE9BQU8sTUFBTSxJQUFLdkYsVUFBVzt3REFDbEQscUJBQU8sOERBQUNnQzs0REFBc0J5RCxPQUFPLEdBQVV4RixPQUFQZ0YsS0FBSSxLQUFhTSxPQUFWdEYsR0FBRSxVQUFVLE9BQUZzRjs0REFDdkR0RCxXQUFVOzREQUFrQ3lDLE9BQU87Z0VBQUVnQixZQUFZLGtCQUFxQixPQUFIRixJQUFHOzREQUFHOzJEQUQxRSxHQUFRdkYsT0FBTHRDLEdBQUUsS0FBSyxPQUFGc0M7Ozs7O29EQUUzQjs7K0NBUmEsT0FBUyxPQUFGdEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBZ0I5Qiw4REFBQ3FFO2dCQUFJQyxXQUFVOztrQ0FDYiw4REFBQ0Q7d0JBQUlDLFdBQVU7OzBDQUNyQiw4REFBQ0Q7Z0NBQUlDLFdBQVU7O2tEQUNiLDhEQUFDeUI7d0NBQUd6QixXQUFVO2tEQUFZOzs7Ozs7b0NBRXpCckYsS0FBSzBILE1BQU0sR0FBRyxtQkFDYiw4REFBQ25DO3dDQUNDQyxTQUFTLElBQU1oRCxtQkFBbUIsQ0FBQ0Q7d0NBQ25DOEMsV0FBVTtrREFFVDlDLGtCQUFrQixjQUFjOzs7Ozs7Ozs7Ozs7MENBS3ZDLDhEQUFDNkM7Z0NBQUlDLFdBQVU7O29DQUNYOUMsQ0FBQUEsa0JBQWtCdkMsT0FBT0EsS0FBSytJLEtBQUssQ0FBQyxHQUFHLEVBQUMsRUFBRzdGLEdBQUcsQ0FBQyxDQUFDQyxrQkFDaEQsOERBQUNpQzs0Q0FBaUJDLFdBQVU7OzhEQUMxQiw4REFBQ0Q7b0RBQUlDLFdBQVU7OERBQ1psQyxFQUFFaUQsSUFBSTs7Ozs7OzhEQUdULDhEQUFDaEI7b0RBQUlDLFdBQVU7OERBQ2IsNEVBQUNEO3dEQUNDQyxXQUFVO3dEQUNWeUMsT0FBTzs0REFDTGQsT0FBTyxHQUEwQixPQUF2QixFQUFHaEcsS0FBSyxHQUFHK0IsT0FBUSxLQUFJO3dEQUNuQzs7Ozs7Ozs7Ozs7OERBSUosOERBQUNxQztvREFBSUMsV0FBVTs4REFDWmxDLEVBQUVuQyxLQUFLOzs7Ozs7OzJDQWZGbUMsRUFBRWlELElBQUk7Ozs7O29DQW9CakIsQ0FBQzdELG1CQUFtQnZDLEtBQUswSCxNQUFNLEdBQUcsbUJBQ2pDLDhEQUFDbkM7d0NBQ0NDLFNBQVMsSUFBTWhELG1CQUFtQjt3Q0FDbEM2QyxXQUFVOzs0Q0FDWDs0Q0FDR3JGLEtBQUswSCxNQUFNLEdBQUc7NENBQUU7Ozs7Ozs7b0NBSXJCMUgsS0FBSzBILE1BQU0sS0FBSyxtQkFDZiw4REFBQ3ZFO3dDQUFFa0MsV0FBVTtrREFBeUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQ0FJcEMsOERBQUNEO3dCQUFJQyxXQUFVOzswQ0FDYiw4REFBQ3lCO2dDQUFHekIsV0FBVTswQ0FBaUI7Ozs7OzswQ0FDL0IsOERBQUMyRDtnQ0FBRzNELFdBQVU7O29DQUNYbkYsT0FBT2dELEdBQUcsQ0FBQyxDQUFDK0YsR0FBR3ZGLGtCQUNkLDhEQUFDd0Y7NENBQWdCN0QsV0FBVTs7OERBQ3pCLDhEQUFDVTtvREFBS1YsV0FBVTs7d0RBQWtCM0IsSUFBSTt3REFBRTt3REFBR3VGLEVBQUVFLElBQUk7Ozs7Ozs7OERBQ2pELDhEQUFDcEQ7b0RBQUtWLFdBQVU7OERBQWlCNEQsRUFBRWpJLEtBQUs7Ozs7Ozs7MkNBRmpDaUksRUFBRUUsSUFBSTs7Ozs7b0NBS2hCakosT0FBT3dILE1BQU0sS0FBSyxtQkFBSyw4REFBQ3dCO3dDQUFHN0QsV0FBVTtrREFBaUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQ0FHM0QsOERBQUNEO3dCQUFJQyxXQUFVOzswQ0FDbkIsOERBQUN5QjtnQ0FBR3pCLFdBQVU7MENBQWlCOzs7Ozs7MENBSS9CLDhEQUFDakcsc0VBQWtCQTtnQ0FBQzJILE1BQU1yRzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQVF4Qiw4REFBQzBFO2dCQUFJQyxXQUFVOztrQ0FDYiw4REFBQ3lCO3dCQUFHekIsV0FBVTtrQ0FBcUI7Ozs7OztrQ0FDbkMsOERBQUMrRDt3QkFBTS9ELFdBQVU7OzBDQUNmLDhEQUFDZ0U7Z0NBQU1oRSxXQUFVOzBDQUNmLDRFQUFDaUU7O3NEQUNDLDhEQUFDQzs0Q0FBR2xFLFdBQVU7c0RBQXdCOzs7Ozs7c0RBQ3RDLDhEQUFDa0U7NENBQUdsRSxXQUFVO3NEQUF3Qjs7Ozs7O3NEQUN0Qyw4REFBQ2tFOzRDQUFHbEUsV0FBVTtzREFBd0I7Ozs7OztzREFDdEMsOERBQUNrRTs0Q0FBR2xFLFdBQVU7c0RBQXdCOzs7Ozs7c0RBQ3RDLDhEQUFDa0U7NENBQUdsRSxXQUFVO3NEQUF3Qjs7Ozs7O3NEQUN0Qyw4REFBQ2tFOzRDQUFHbEUsV0FBVTtzREFBd0I7Ozs7Ozs7Ozs7Ozs7Ozs7OzBDQUcxQyw4REFBQ21FO2dDQUFNbkUsV0FBVTs7b0NBQ2Q3RSxPQUFPMEMsR0FBRyxDQUFDLENBQUN1RyxHQUFHL0Y7NENBSWUrRixTQUNBQSxZQUNBQSxXQUNBQTsrQ0FON0IsOERBQUNIOzs4REFDQyw4REFBQ0k7b0RBQUdyRSxXQUFVOzhEQUE0QixJQUFJc0UsS0FBS0YsRUFBRUcsRUFBRSxFQUFFM0IsY0FBYzs7Ozs7OzhEQUN2RSw4REFBQ3lCO29EQUFHckUsV0FBVTs4REFBc0NvRSxFQUFFSSxJQUFJOzs7Ozs7OERBQzFELDhEQUFDSDtvREFBR3JFLFdBQVU7OERBQWFvRSxDQUFBQSxVQUFBQSxFQUFFTixJQUFJLGNBQU5NLHFCQUFBQSxVQUFVOzs7Ozs7OERBQ3JDLDhEQUFDQztvREFBR3JFLFdBQVU7OERBQWFvRSxDQUFBQSxhQUFBQSxFQUFFSyxPQUFPLGNBQVRMLHdCQUFBQSxhQUFhOzs7Ozs7OERBQ3hDLDhEQUFDQztvREFBR3JFLFdBQVU7OERBQWFvRSxDQUFBQSxZQUFBQSxFQUFFekIsTUFBTSxjQUFSeUIsdUJBQUFBLFlBQVk7Ozs7Ozs4REFDdkMsOERBQUNDO29EQUFHckUsV0FBVTs4REFBYW9FLENBQUFBLFFBQUFBLEVBQUVNLEVBQUUsY0FBSk4sbUJBQUFBLFFBQVE7Ozs7Ozs7MkNBTjVCL0Y7Ozs7O29DQU9MO29DQUVMbEQsT0FBT2tILE1BQU0sS0FBSyxtQkFBSyw4REFBQzRCO2tEQUFHLDRFQUFDSTs0Q0FBR00sU0FBUzs0Q0FBRzNFLFdBQVU7c0RBQXdDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQ0FHbEcsOERBQUNEO3dCQUFJQyxXQUFVOzswQ0FDckIsOERBQUNVOztvQ0FBSztvQ0FDSTtvQ0FDUHZGLE9BQU9rSCxNQUFNLEtBQUssSUFDZixJQUNBLENBQUN6RixhQUFhLEtBQUtJLGlCQUFpQjtvQ0FBRztvQ0FBSTtvQ0FDNUM7b0NBQ0ZXLEtBQUtTLEdBQUcsQ0FBQ3hCLGFBQWFJLGdCQUFnQmhCO29DQUFjO29DQUFJO29DQUNyREE7Ozs7Ozs7MENBR04sOERBQUMrRDtnQ0FBSUMsV0FBVTs7a0RBQ2IsOERBQUNFO3dDQUNDMEUsVUFBVWhJLGVBQWU7d0NBQ3pCdUQsU0FBUyxJQUFNdEQsY0FBY0QsYUFBYTt3Q0FDMUNvRCxXQUFVO2tEQUNYOzs7Ozs7b0NBSUF4QyxNQUFNSyxHQUFHLENBQUMsQ0FBQ0Msa0JBQ2QsOERBQUNvQzs0Q0FFQ0MsU0FBUyxJQUFNdEQsY0FBY2lCOzRDQUM3QmtDLFdBQVcscUJBSVYsT0FIQ3BELGVBQWVrQixJQUNYLDRCQUNBO3NEQUdMQTsyQ0FSSUE7Ozs7O2tEQVlMLDhEQUFDb0M7d0NBQ0MwRSxVQUFVaEksZUFBZUU7d0NBQ3pCcUQsU0FBUyxJQUFNdEQsY0FBY0QsYUFBYTt3Q0FDMUNvRCxXQUFVO2tEQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRTDtHQXZid0IzRjtLQUFBQTtBQXlieEIsU0FBUzJHLElBQUksS0FBaUM7UUFBakMsRUFBRS9HLEtBQUssRUFBRXFHLEtBQUssRUFBRVksSUFBSSxFQUFFQyxJQUFJLEVBQU8sR0FBakM7SUFDWCxxQkFDRSw4REFBQ3BCO1FBQUlDLFdBQVU7a0JBQ2IsNEVBQUNEO1lBQUlDLFdBQVU7OzhCQUNiLDhEQUFDRDtvQkFBSUMsV0FBVyx5REFBOEQsT0FBTG1COzhCQUFTRDs7Ozs7OzhCQUNsRiw4REFBQ25CO29CQUFJQyxXQUFVOztzQ0FDYiw4REFBQ0Q7NEJBQUlDLFdBQVU7c0NBQXlDTTs7Ozs7O3NDQUN4RCw4REFBQ1A7NEJBQUlDLFdBQVU7c0NBQTBCL0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS25EO01BWlMrRyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9hcHAvZGFzaGJvYXJkL2FuYWx5dGljcy9wYWdlLnRzeD9iODI4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xuaW1wb3J0IHsgRnJhZ21lbnQsIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7XG4gIFBpZUNoYXJ0LCBQaWUsIENlbGwsIFJlc3BvbnNpdmVDb250YWluZXIsIFRvb2x0aXAsXG59IGZyb20gXCJyZWNoYXJ0c1wiO1xuaW1wb3J0IHsgRG93bmxvYWQsIFNjYW5MaW5lLCBVc2VycywgR2xvYmUsIFNoaWVsZENoZWNrIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IFNjYW5UcmVuZENoYXJ0IGZyb20gXCJAL2NvbXBvbmVudHMvU2NhblRyZW5kQ2hhcnRcIjtcbmltcG9ydCB7IGFwaSwgYXBpQmFzZSB9IGZyb20gXCJAL2xpYi9hcGlcIjtcbmltcG9ydCBHZW9ncmFwaGljT3ZlcnZpZXcgZnJvbSBcIkAvY29tcG9uZW50cy9HZW9ncmFwaGljT3ZlcnZpZXdcIjtcblxuY29uc3QgUFJFU0VUUyA9IFtcbiAgeyBsYWJlbDogXCI3ZFwiLCBkYXlzOiA3IH0sXG4gIHsgbGFiZWw6IFwiMzBkXCIsIGRheXM6IDMwIH0sXG4gIHsgbGFiZWw6IFwiOTBkXCIsIGRheXM6IDkwIH0sXG5dO1xuY29uc3QgRE9OVVQgPSBbXCIjMjU2M2ViXCIsIFwiIzEwYjk4MVwiLCBcIiNmNTllMGJcIiwgXCIjOTRhM2I4XCJdO1xuY29uc3QgRE9XID0gW1wiTW9uXCIsIFwiVHVlXCIsIFwiV2VkXCIsIFwiVGh1XCIsIFwiRnJpXCIsIFwiU2F0XCIsIFwiU3VuXCJdO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFuYWx5dGljcygpIHtcbiAgY29uc3QgW2RheXMsIHNldERheXNdID0gdXNlU3RhdGUoMzApO1xuICBjb25zdCBbcywgc2V0U10gPSB1c2VTdGF0ZTxhbnk+KG51bGwpO1xuICBjb25zdCBbdHJlbmQsIHNldFRyZW5kXSA9IHVzZVN0YXRlPGFueVtdPihbXSk7XG4gIGNvbnN0IFt0b3BQLCBzZXRUb3BQXSA9IHVzZVN0YXRlPGFueVtdPihbXSk7XG4gIGNvbnN0IFtjaXRpZXMsIHNldENpdGllc10gPSB1c2VTdGF0ZTxhbnlbXT4oW10pO1xuICBjb25zdCBbZGV2aWNlcywgc2V0RGV2aWNlc10gPSB1c2VTdGF0ZTxhbnlbXT4oW10pO1xuICBjb25zdCBbaGVhdCwgc2V0SGVhdF0gPSB1c2VTdGF0ZTxhbnlbXT4oW10pO1xuICBjb25zdCBbcmVjZW50LCBzZXRSZWNlbnRdID0gdXNlU3RhdGU8YW55W10+KFtdKTtcbiAgY29uc3QgW2dlbywgc2V0R2VvXSA9IHVzZVN0YXRlPGFueVtdPihbXSk7XG4gIGNvbnN0IHRvdGFsRGV2aWNlcyA9IGRldmljZXMucmVkdWNlKChzdW0sIGQpID0+IHN1bSArIGQuc2NhbnMsIDApO1xuICBjb25zdCBbYnJhbmRzLCBzZXRCcmFuZHNdID0gdXNlU3RhdGUoW10pO1xuY29uc3QgW2JyYW5kSWQsIHNldEJyYW5kSWRdID0gdXNlU3RhdGUoXCJcIik7XG5jb25zdCBbcmVjZW50VG90YWwsIHNldFJlY2VudFRvdGFsXSA9IHVzZVN0YXRlKDApO1xuXG5cbmNvbnN0IERPTlVUID0gW1xuICBcIiMyMmM1NWVcIiwgLy8gQW5kcm9pZCAtIEdyZWVuXG4gIFwiIzI1NjNlYlwiLCAvLyBpT1MgLSBCbHVlXG4gIFwiIzdjM2FlZFwiLCAvLyBEZXNrdG9wIC0gUHVycGxlXG4gIFwiI2Y1OWUwYlwiLCAvLyBPdGhlciAtIE9yYW5nZVxuXTtcbmNvbnN0IFtmcm9tRGF0ZSwgc2V0RnJvbURhdGVdID0gdXNlU3RhdGUoXCJcIik7XG5jb25zdCBbdG9EYXRlLCBzZXRUb0RhdGVdID0gdXNlU3RhdGUoXCJcIik7XG5jb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG5cbmlmIChmcm9tRGF0ZSAmJiB0b0RhdGUpIHtcbiAgICBwYXJhbXMuYXBwZW5kKFwiZnJvbV9kYXRlXCIsIGZyb21EYXRlKTtcbiAgICBwYXJhbXMuYXBwZW5kKFwidG9fZGF0ZVwiLCB0b0RhdGUpO1xufSBlbHNlIHtcbiAgICBwYXJhbXMuYXBwZW5kKFwiZGF5c1wiLCBTdHJpbmcoZGF5cykpO1xufVxuXG5pZiAoYnJhbmRJZCkge1xuICAgIHBhcmFtcy5hcHBlbmQoXCJicmFuZF9pZFwiLCBicmFuZElkKTtcbn1cblxuY29uc3QgcXVlcnkgPSBwYXJhbXMudG9TdHJpbmcoKTtcblxuY29uc3QgW3JlY2VudFBhZ2UsIHNldFJlY2VudFBhZ2VdID0gdXNlU3RhdGUoMSk7XG5jb25zdCBbcmVjZW50VG90YWxQYWdlcywgc2V0UmVjZW50VG90YWxQYWdlc10gPSB1c2VTdGF0ZSgxKTtcbmNvbnN0IHJlY2VudFBhZ2VTaXplID0gMjA7XG5jb25zdCBjbGVhckZpbHRlcnMgPSAoKSA9PiB7XG4gIHNldEJyYW5kSWQoXCJcIik7XG4gIHNldEZyb21EYXRlKFwiXCIpO1xuICBzZXRUb0RhdGUoXCJcIik7XG4gIHNldERheXMoMzApO1xuICBzZXRSZWNlbnRQYWdlKDEpOyAvLyBkZWZhdWx0IHByZXNldFxufTtcbmNvbnN0IFtzaG93QWxsUHJvZHVjdHMsIHNldFNob3dBbGxQcm9kdWN0c10gPSB1c2VTdGF0ZShmYWxzZSk7XG51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGFwaShcIi9hbmFseXRpY3MvYnJhbmRzXCIpLnRoZW4oc2V0QnJhbmRzKTtcbn0sIFtdKTtcbiB1c2VFZmZlY3QoKCkgPT4ge1xuICBhcGkoYC9hbmFseXRpY3Mvc3VtbWFyeT8ke3F1ZXJ5fWApLnRoZW4oc2V0UykuY2F0Y2goKCkgPT4ge30pO1xuICBhcGkoYC9hbmFseXRpY3MvdHJlbmQ/JHtxdWVyeX1gKS50aGVuKHNldFRyZW5kKS5jYXRjaCgoKSA9PiB7fSk7XG4gIGFwaShgL2FuYWx5dGljcy90b3AtcHJvZHVjdHM/JHtxdWVyeX1gKS50aGVuKHNldFRvcFApLmNhdGNoKCgpID0+IHt9KTtcbiAgYXBpKGAvYW5hbHl0aWNzL3RvcC1jaXRpZXM/JHtxdWVyeX1gKS50aGVuKHNldENpdGllcykuY2F0Y2goKCkgPT4ge30pO1xuICBhcGkoYC9hbmFseXRpY3MvZGV2aWNlcz8ke3F1ZXJ5fWApLnRoZW4oc2V0RGV2aWNlcykuY2F0Y2goKCkgPT4ge30pO1xuICBhcGkoYC9hbmFseXRpY3MvZ2VvZ3JhcGh5PyR7cXVlcnl9YCkudGhlbihzZXRHZW8pLmNhdGNoKCgpID0+IHt9KTtcbiAgYXBpKGAvYW5hbHl0aWNzL3RpbWUtZGlzdHJpYnV0aW9uPyR7cXVlcnl9YCkudGhlbihzZXRIZWF0KS5jYXRjaCgoKSA9PiB7fSk7XG4gIGFwaShcbiAgYC9hbmFseXRpY3MvcmVjZW50LXNjYW5zPyR7cXVlcnl9JnBhZ2U9JHtyZWNlbnRQYWdlfSZwYWdlX3NpemU9JHtyZWNlbnRQYWdlU2l6ZX1gXG4pXG4gIC50aGVuKChyZXMpID0+IHtcbiAgICBzZXRSZWNlbnQocmVzLml0ZW1zKTtcbiAgICBzZXRSZWNlbnRUb3RhbFBhZ2VzKHJlcy5wYWdlcyk7XG4gICAgc2V0UmVjZW50VG90YWwocmVzLnRvdGFsKTtcbiAgfSlcbiAgLmNhdGNoKCgpID0+IHt9KTtcbiAgXG59LCBbZGF5cywgZnJvbURhdGUsIHRvRGF0ZSxicmFuZElkLCByZWNlbnRQYWdlXSk7XG5cbiAgY29uc3QgbWF4UCA9IE1hdGgubWF4KDEsIC4uLnRvcFAubWFwKChwKSA9PiBwLnNjYW5zKSk7XG4gIGNvbnN0IG1heEhlYXQgPSBNYXRoLm1heCgxLCAuLi5oZWF0Lm1hcCgoaCkgPT4gaC5jb3VudCkpO1xuICBjb25zdCBzdGFydFBhZ2UgPSBNYXRoLm1heCgxLCByZWNlbnRQYWdlIC0gMik7XG5jb25zdCBlbmRQYWdlID0gTWF0aC5taW4ocmVjZW50VG90YWxQYWdlcywgc3RhcnRQYWdlICsgNCk7XG5cbmNvbnN0IHBhZ2VzID0gW107XG5mb3IgKGxldCBpID0gc3RhcnRQYWdlOyBpIDw9IGVuZFBhZ2U7IGkrKykge1xuICBwYWdlcy5wdXNoKGkpO1xufVxuICBjb25zdCBkb3dubG9hZENzdiA9IGFzeW5jICgpID0+IHtcbiAgY29uc3QgdG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInRva2VuXCIpOyAvLyBvciB3aGF0ZXZlciBrZXkgeW91IHVzZVxuXG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGAke2FwaUJhc2V9L2FuYWx5dGljcy9leHBvcnQ/JHtxdWVyeX1gLCB7XG4gICAgaGVhZGVyczoge1xuICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAsXG4gICAgfSxcbiAgfSk7XG5cbiAgaWYgKCFyZXMub2spIHtcbiAgICBhbGVydChcIkZhaWxlZCB0byBkb3dubG9hZCBDU1ZcIik7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYmxvYiA9IGF3YWl0IHJlcy5ibG9iKCk7XG4gIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuXG4gIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcbiAgYS5ocmVmID0gdXJsO1xuICBhLmRvd25sb2FkID0gXCJzY2Fucy5jc3ZcIjtcbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcbiAgYS5jbGljaygpO1xuICBhLnJlbW92ZSgpO1xuXG4gIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG59O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTVcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LXhsIGZvbnQtYm9sZFwiPkFuYWx5dGljcyAmIEluc2lnaHRzPC9oMj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItc2xhdGUtMjAwIG92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICAgICAge1BSRVNFVFMubWFwKChwKSA9PiAoXG4gIDxidXR0b25cbiAgICBrZXk9e3AuZGF5c31cbiAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICBzZXREYXlzKHAuZGF5cyk7XG4gICAgICBzZXRGcm9tRGF0ZShcIlwiKTtcbiAgICAgIHNldFRvRGF0ZShcIlwiKTtcbiAgICB9fVxuICAgIGNsYXNzTmFtZT17YHB4LTMgcHktMS41IHRleHQtc20gZm9udC1tZWRpdW0gJHtcbiAgICAgIGRheXMgPT09IHAuZGF5c1xuICAgICAgICA/IFwiYmctYnJhbmQtNjAwIHRleHQtd2hpdGVcIlxuICAgICAgICA6IFwiYmctd2hpdGUgdGV4dC1zbGF0ZS02MDBcIlxuICAgIH1gfVxuICA+XG4gICAge3AubGFiZWx9XG4gIDwvYnV0dG9uPlxuKSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuXG4gIDxpbnB1dFxuICAgIHR5cGU9XCJkYXRlXCJcbiAgICB2YWx1ZT17ZnJvbURhdGV9XG4gICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRGcm9tRGF0ZShlLnRhcmdldC52YWx1ZSl9XG4gICAgY2xhc3NOYW1lPVwiYm9yZGVyIHJvdW5kZWQtbGcgcHgtMyBweS0yIHRleHQtc21cIlxuICAvPlxuXG4gIDxzcGFuPnRvPC9zcGFuPlxuXG4gIDxpbnB1dFxuICAgIHR5cGU9XCJkYXRlXCJcbiAgICB2YWx1ZT17dG9EYXRlfVxuICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0VG9EYXRlKGUudGFyZ2V0LnZhbHVlKX1cbiAgICBjbGFzc05hbWU9XCJib3JkZXIgcm91bmRlZC1sZyBweC0zIHB5LTIgdGV4dC1zbVwiXG4gIC8+XG5cbjwvZGl2PlxuPHNlbGVjdFxuICAgIHZhbHVlPXticmFuZElkfVxuICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0QnJhbmRJZChlLnRhcmdldC52YWx1ZSl9XG4gICAgY2xhc3NOYW1lPVwiYm9yZGVyIHJvdW5kZWQtbGcgcHgtMyBweS0yIHRleHQtc21cIlxuPlxuICAgIDxvcHRpb24gdmFsdWU9XCJcIj5BbGwgQnJhbmRzPC9vcHRpb24+XG5cbiAgICB7YnJhbmRzLm1hcCgoYjphbnkpID0+IChcbiAgICAgICAgPG9wdGlvbiBrZXk9e2IuaWR9IHZhbHVlPXtiLmlkfT5cbiAgICAgICAgICAgIHtiLm5hbWV9XG4gICAgICAgIDwvb3B0aW9uPlxuICAgICkpfVxuPC9zZWxlY3Q+PGJ1dHRvblxuICBvbkNsaWNrPXtjbGVhckZpbHRlcnN9XG4gIGNsYXNzTmFtZT1cImJvcmRlciBib3JkZXItc2xhdGUtMjAwIHB4LTMgcHktMiByb3VuZGVkLWxnIHRleHQtc20gZm9udC1tZWRpdW0gaG92ZXI6Ymctc2xhdGUtNTBcIlxuPlxuICBDbGVhciBGaWx0ZXJzXG48L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gIG9uQ2xpY2s9e2Rvd25sb2FkQ3N2fVxuICBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBib3JkZXIgYm9yZGVyLXNsYXRlLTIwMCBweC0zIHB5LTIgcm91bmRlZC1sZyB0ZXh0LXNtIGZvbnQtbWVkaXVtXCJcbj5cbiAgPERvd25sb2FkIGNsYXNzTmFtZT1cImgtNCB3LTRcIiAvPlxuICBDU1ZcbjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogS1BJcyAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMiBzbTpncmlkLWNvbHMtMyBsZzpncmlkLWNvbHMtNiBnYXAtNFwiPlxuICAgICAgICA8S3BpIGxhYmVsPVwiVG90YWwgU2NhbnNcIiB2YWx1ZT17cz8udG90YWxfc2NhbnMgPz8gMH0gaWNvbj17PFNjYW5MaW5lIGNsYXNzTmFtZT1cImgtNSB3LTVcIiAvPn0gdGludD1cImJnLWJsdWUtNTAgdGV4dC1ibHVlLTYwMFwiIC8+XG4gICAgICAgIDxLcGkgbGFiZWw9XCJVbmlxdWUgQ29uc3VtZXJzXCIgdmFsdWU9e3M/LnVuaXF1ZV9jb25zdW1lcnMgPz8gMH0gaWNvbj17PFVzZXJzIGNsYXNzTmFtZT1cImgtNSB3LTVcIiAvPn0gdGludD1cImJnLXZpb2xldC01MCB0ZXh0LXZpb2xldC02MDBcIiAvPlxuICAgICAgICA8S3BpIGxhYmVsPVwiVG9kYXlcIiB2YWx1ZT17cz8udG9kYXlfc2NhbnMgPz8gMH0gaWNvbj17PFNjYW5MaW5lIGNsYXNzTmFtZT1cImgtNSB3LTVcIiAvPn0gdGludD1cImJnLW9yYW5nZS01MCB0ZXh0LW9yYW5nZS01MDBcIiAvPlxuICAgICAgICA8S3BpIGxhYmVsPVwiQWN0aXZlIFByb2R1Y3RzXCIgdmFsdWU9e3M/LmFjdGl2ZV9wcm9kdWN0cyA/PyAwfSBpY29uPXs8U2hpZWxkQ2hlY2sgY2xhc3NOYW1lPVwiaC01IHctNVwiIC8+fSB0aW50PVwiYmctZW1lcmFsZC01MCB0ZXh0LWVtZXJhbGQtNjAwXCIgLz5cbiAgICAgICAgPEtwaSBsYWJlbD1cIkF2ZyBUcnVzdFwiIHZhbHVlPXtgJHtzPy5hdmdfdHJ1c3Rfc2NvcmUgPz8gMH0lYH0gaWNvbj17PFNoaWVsZENoZWNrIGNsYXNzTmFtZT1cImgtNSB3LTVcIiAvPn0gdGludD1cImJnLWJsdWUtNTAgdGV4dC1ibHVlLTYwMFwiIC8+XG4gICAgICAgIDxLcGkgbGFiZWw9XCJDb3VudHJpZXNcIiB2YWx1ZT17cz8uY291bnRyaWVzID8/IDB9IGljb249ezxHbG9iZSBjbGFzc05hbWU9XCJoLTUgdy01XCIgLz59IHRpbnQ9XCJiZy1hbWJlci01MCB0ZXh0LWFtYmVyLTUwMFwiIC8+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGxnOmdyaWQtY29scy0zIGdhcC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FyZCBwLTUgbGc6Y29sLXNwYW4tMVwiPlxuICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJmb250LWJvbGQgbWItMlwiPlNjYW4gVHJlbmQ8L2gzPlxuICAgICAgICAgIDxTY2FuVHJlbmRDaGFydCBkYXRhPXt0cmVuZH0gLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYXJkIHAtNVwiPlxuICA8aDMgY2xhc3NOYW1lPVwiZm9udC1ib2xkIG1iLTVcIj5EZXZpY2UgVHlwZXM8L2gzPlxuXG4gIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiBnYXAtNiBpdGVtcy1jZW50ZXJcIj5cbiAgICB7LyogRG9udXQgQ2hhcnQgKi99XG4gICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8UmVzcG9uc2l2ZUNvbnRhaW5lciB3aWR0aD17MjAwfSBoZWlnaHQ9ezIwMH0+XG4gICAgICAgIDxQaWVDaGFydD5cbiAgICAgICAgICA8UGllXG4gICAgICAgICAgICBkYXRhPXtkZXZpY2VzfVxuICAgICAgICAgICAgZGF0YUtleT1cInNjYW5zXCJcbiAgICAgICAgICAgIG5hbWVLZXk9XCJkZXZpY2VcIlxuICAgICAgICAgICAgaW5uZXJSYWRpdXM9ezU1fVxuICAgICAgICAgICAgb3V0ZXJSYWRpdXM9ezgwfVxuICAgICAgICAgICAgc3Ryb2tlPVwiI2ZmZlwiXG4gICAgICAgICAgICBzdHJva2VXaWR0aD17Mn1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7ZGV2aWNlcy5tYXAoKF8sIGkpID0+IChcbiAgICAgICAgICAgICAgPENlbGxcbiAgICAgICAgICAgICAgICBrZXk9e2l9XG4gICAgICAgICAgICAgICAgZmlsbD17RE9OVVRbaSAlIERPTlVULmxlbmd0aF19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1BpZT5cblxuICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICBmb3JtYXR0ZXI9eyh2YWx1ZTogYW55KSA9PiBbXG4gICAgICAgICAgICAgIGAke3ZhbHVlfSBzY2Fuc2AsXG4gICAgICAgICAgICAgIFwiU2NhbnNcIixcbiAgICAgICAgICAgIF19XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9QaWVDaGFydD5cbiAgICAgIDwvUmVzcG9uc2l2ZUNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIHsvKiBMZWdlbmQgKi99XG4gICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTRcIj5cbiAgICAgIHtkZXZpY2VzLm1hcCgoZCwgaSkgPT4ge1xuICAgICAgICBjb25zdCBwZXJjZW50ID1cbiAgICAgICAgICB0b3RhbERldmljZXMgPT09IDBcbiAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgOiAoKGQuc2NhbnMgLyB0b3RhbERldmljZXMpICogMTAwKS50b0ZpeGVkKDEpO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAga2V5PXtkLmRldmljZX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtMiB3LTEgcm91bmRlZC1mdWxsXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBET05VVFtpICUgRE9OVVQubGVuZ3RoXSxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIHRleHQtc2xhdGUtNzAwXCI+XG4gICAgICAgICAgICAgICAge2QuZGV2aWNlfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtc2xhdGUtNjAwXCI+XG4gICAgICAgICAgICAgIHtwZXJjZW50fSUgKHtkLnNjYW5zLnRvTG9jYWxlU3RyaW5nKCl9KVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgICAgfSl9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4gICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmQgcC01XCI+XG4gICAgICAgIDxoMyBjbGFzc05hbWU9XCJmb250LWJvbGQgbWItNFwiPlNjYW4gVGltZSBEaXN0cmlidXRpb248L2gzPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm92ZXJmbG93LXgtYXV0b1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW5saW5lLWdyaWQgZ2FwLTAuNVwiIHN0eWxlPXt7IGdyaWRUZW1wbGF0ZUNvbHVtbnM6IFwiMjhweCByZXBlYXQoMjQsIDEwcHgpXCIgfX0+XG4gICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICB7QXJyYXkuZnJvbSh7IGxlbmd0aDogMjQgfSkubWFwKChfLCBoKSA9PiAoXG4gICAgICAgICAgICAgIDxkaXYga2V5PXtofSBjbGFzc05hbWU9XCJ0ZXh0LVs4cHhdIHRleHQtc2xhdGUtNDAwIHRleHQtY2VudGVyXCI+e2ggJSAzID09PSAwID8gaCA6IFwiXCJ9PC9kaXY+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICAgIHtET1cubWFwKChkYXksIGQpID0+IChcbiAgICAgICAgICAgICAgPEZyYWdtZW50IGtleT17YHJvdy0ke2R9YH0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LVsxMHB4XSB0ZXh0LXNsYXRlLTUwMCBwci0xIGZsZXggaXRlbXMtY2VudGVyXCI+e2RheX08L2Rpdj5cbiAgICAgICAgICAgICAgICB7QXJyYXkuZnJvbSh7IGxlbmd0aDogMjQgfSkubWFwKChfLCBoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBjZWxsID0gaGVhdC5maW5kKCh4KSA9PiB4LmRvdyA9PT0gZCAmJiB4LmhvdXIgPT09IGgpO1xuICAgICAgICAgICAgICAgICAgY29uc3QgdiA9IGNlbGw/LmNvdW50ID8/IDA7XG4gICAgICAgICAgICAgICAgICBjb25zdCBvcCA9IHYgPT09IDAgPyAwLjA2IDogMC4yICsgKHYgLyBtYXhIZWF0KSAqIDAuODtcbiAgICAgICAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17YCR7ZH0tJHtofWB9IHRpdGxlPXtgJHtkYXl9ICR7aH06MDAg4oCUICR7dn1gfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLVsxMnB4XSB3LVsxMnB4XSByb3VuZGVkLVsycHhdXCIgc3R5bGU9e3sgYmFja2dyb3VuZDogYHJnYmEoMzcsOTksMjM1LCR7b3B9KWAgfX0gLz47XG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgbGc6Z3JpZC1jb2xzLTMgZ2FwLTRcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYXJkIHAtNVwiPlxuICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBtYi00XCI+XG4gICAgPGgzIGNsYXNzTmFtZT1cImZvbnQtYm9sZFwiPlRvcCBQcm9kdWN0czwvaDM+XG5cbiAgICB7dG9wUC5sZW5ndGggPiA1ICYmIChcbiAgICAgIDxidXR0b25cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2hvd0FsbFByb2R1Y3RzKCFzaG93QWxsUHJvZHVjdHMpfVxuICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtYmx1ZS02MDAgaG92ZXI6dW5kZXJsaW5lXCJcbiAgICAgID5cbiAgICAgICAge3Nob3dBbGxQcm9kdWN0cyA/IFwiU2hvdyBMZXNzXCIgOiBcIlZpZXcgQWxsXCJ9XG4gICAgICA8L2J1dHRvbj5cbiAgICApfVxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktM1wiPlxuICAgIHsoc2hvd0FsbFByb2R1Y3RzID8gdG9wUCA6IHRvcFAuc2xpY2UoMCwgNSkpLm1hcCgocCkgPT4gKFxuICAgICAgPGRpdiBrZXk9e3AubmFtZX0gY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTM2IHRydW5jYXRlIHRleHQtc20gdGV4dC1zbGF0ZS02MDBcIj5cbiAgICAgICAgICB7cC5uYW1lfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBoLTMgcm91bmRlZC1mdWxsIGJnLXNsYXRlLTEwMCBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJoLWZ1bGwgcm91bmRlZC1mdWxsIGJnLWJsdWUtNTAwXCJcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIHdpZHRoOiBgJHsocC5zY2FucyAvIG1heFApICogMTAwfSVgLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMTIgdGV4dC1yaWdodCB0ZXh0LXNtIGZvbnQtc2VtaWJvbGRcIj5cbiAgICAgICAgICB7cC5zY2Fuc31cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApKX1cblxuICAgIHshc2hvd0FsbFByb2R1Y3RzICYmIHRvcFAubGVuZ3RoID4gNSAmJiAoXG4gICAgICA8YnV0dG9uXG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNob3dBbGxQcm9kdWN0cyh0cnVlKX1cbiAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWJsdWUtNjAwIGhvdmVyOnVuZGVybGluZVwiXG4gICAgICA+XG4gICAgICAgICt7dG9wUC5sZW5ndGggLSA1fSBtb3JlIHByb2R1Y3RzXG4gICAgICA8L2J1dHRvbj5cbiAgICApfVxuXG4gICAge3RvcFAubGVuZ3RoID09PSAwICYmIChcbiAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1zbGF0ZS00MDBcIj5ObyBkYXRhLjwvcD5cbiAgICApfVxuICA8L2Rpdj5cbjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmQgcC01XCI+XG4gICAgICAgICAgPGgzIGNsYXNzTmFtZT1cImZvbnQtYm9sZCBtYi00XCI+VG9wIENpdGllczwvaDM+XG4gICAgICAgICAgPG9sIGNsYXNzTmFtZT1cInNwYWNlLXktMiB0ZXh0LXNtXCI+XG4gICAgICAgICAgICB7Y2l0aWVzLm1hcCgoYywgaSkgPT4gKFxuICAgICAgICAgICAgICA8bGkga2V5PXtjLmNpdHl9IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbGF0ZS02MDBcIj57aSArIDF9LiB7Yy5jaXR5fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmb250LXNlbWlib2xkXCI+e2Muc2NhbnN9PC9zcGFuPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICB7Y2l0aWVzLmxlbmd0aCA9PT0gMCAmJiA8bGkgY2xhc3NOYW1lPVwidGV4dC1zbGF0ZS00MDBcIj5ObyBkYXRhLjwvbGk+fVxuICAgICAgICAgIDwvb2w+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmQgcC01XCI+XG4gICAgPGgzIGNsYXNzTmFtZT1cImZvbnQtYm9sZCBtYi00XCI+XG4gICAgICAgIEdlb2dyYXBoaWMgT3ZlcnZpZXdcbiAgICA8L2gzPlxuXG4gICAgPEdlb2dyYXBoaWNPdmVydmlldyBkYXRhPXtnZW99IC8+XG48L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogSGVhdG1hcCAqL31cbiAgICAgXG5cbiAgICAgIHsvKiBSZWNlbnQgc2NhbnMgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmQgb3ZlcmZsb3cteC1hdXRvXCI+XG4gICAgICAgIDxoMyBjbGFzc05hbWU9XCJmb250LWJvbGQgcC01IHBiLTNcIj5SZWNlbnQgU2NhbnM8L2gzPlxuICAgICAgICA8dGFibGUgY2xhc3NOYW1lPVwidy1mdWxsIHRleHQtc21cIj5cbiAgICAgICAgICA8dGhlYWQgY2xhc3NOYW1lPVwiYmctc2xhdGUtNTAgdGV4dC1zbGF0ZS01MDAgdGV4dC1sZWZ0XCI+XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgIDx0aCBjbGFzc05hbWU9XCJweC00IHB5LTMgZm9udC1tZWRpdW1cIj5UaW1lPC90aD5cbiAgICAgICAgICAgICAgPHRoIGNsYXNzTmFtZT1cInB4LTQgcHktMyBmb250LW1lZGl1bVwiPkNvZGU8L3RoPlxuICAgICAgICAgICAgICA8dGggY2xhc3NOYW1lPVwicHgtNCBweS0zIGZvbnQtbWVkaXVtXCI+Q2l0eTwvdGg+XG4gICAgICAgICAgICAgIDx0aCBjbGFzc05hbWU9XCJweC00IHB5LTMgZm9udC1tZWRpdW1cIj5Db3VudHJ5PC90aD5cbiAgICAgICAgICAgICAgPHRoIGNsYXNzTmFtZT1cInB4LTQgcHktMyBmb250LW1lZGl1bVwiPkRldmljZTwvdGg+XG4gICAgICAgICAgICAgIDx0aCBjbGFzc05hbWU9XCJweC00IHB5LTMgZm9udC1tZWRpdW1cIj5JUCBBZGRyZXNzPC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICA8dGJvZHkgY2xhc3NOYW1lPVwiZGl2aWRlLXkgZGl2aWRlLXNsYXRlLTEwMFwiPlxuICAgICAgICAgICAge3JlY2VudC5tYXAoKHIsIGkpID0+IChcbiAgICAgICAgICAgICAgPHRyIGtleT17aX0+XG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzTmFtZT1cInB4LTQgcHktMyB0ZXh0LXNsYXRlLTUwMFwiPntuZXcgRGF0ZShyLmF0KS50b0xvY2FsZVN0cmluZygpfTwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzTmFtZT1cInB4LTQgcHktMyBmb250LW1vbm8gdGV4dC1zbGF0ZS02MDBcIj57ci5jb2RlfTwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzTmFtZT1cInB4LTQgcHktM1wiPntyLmNpdHkgPz8gXCLigJRcIn08L3RkPlxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzc05hbWU9XCJweC00IHB5LTNcIj57ci5jb3VudHJ5ID8/IFwi4oCUXCJ9PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQgY2xhc3NOYW1lPVwicHgtNCBweS0zXCI+e3IuZGV2aWNlID8/IFwi4oCUXCJ9PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQgY2xhc3NOYW1lPVwicHgtNCBweS0zXCI+e3IuaXAgPz8gXCLigJRcIn08L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICB7cmVjZW50Lmxlbmd0aCA9PT0gMCAmJiA8dHI+PHRkIGNvbFNwYW49ezV9IGNsYXNzTmFtZT1cInB4LTQgcHktMTAgdGV4dC1jZW50ZXIgdGV4dC1zbGF0ZS00MDBcIj5ObyBzY2FucyB5ZXQuPC90ZD48L3RyPn1cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweC00IHB5LTMgdGV4dC1zbSB0ZXh0LXNsYXRlLTUwMCBib3JkZXItdFwiPlxuICA8c3Bhbj5cbiAgICBTaG93aW5ne1wiIFwifVxuICAgIHtyZWNlbnQubGVuZ3RoID09PSAwXG4gICAgICA/IDBcbiAgICAgIDogKHJlY2VudFBhZ2UgLSAxKSAqIHJlY2VudFBhZ2VTaXplICsgMX17XCIgXCJ9XG4gICAgdG97XCIgXCJ9XG4gICAge01hdGgubWluKHJlY2VudFBhZ2UgKiByZWNlbnRQYWdlU2l6ZSwgcmVjZW50VG90YWwpfXtcIiBcIn1cbiAgICBvZiB7cmVjZW50VG90YWx9XG4gIDwvc3Bhbj5cblxuICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZ2FwLTFcIj5cbiAgICA8YnV0dG9uXG4gICAgICBkaXNhYmxlZD17cmVjZW50UGFnZSA9PT0gMX1cbiAgICAgIG9uQ2xpY2s9eygpID0+IHNldFJlY2VudFBhZ2UocmVjZW50UGFnZSAtIDEpfVxuICAgICAgY2xhc3NOYW1lPVwicHgtMyBweS0xIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1zbGF0ZS0yMDAgZGlzYWJsZWQ6b3BhY2l0eS00MFwiXG4gICAgPlxuICAgICAg4oC5XG4gICAgPC9idXR0b24+XG5cbiAgICB7cGFnZXMubWFwKChwKSA9PiAoXG4gIDxidXR0b25cbiAgICBrZXk9e3B9XG4gICAgb25DbGljaz17KCkgPT4gc2V0UmVjZW50UGFnZShwKX1cbiAgICBjbGFzc05hbWU9e2BweC0zIHB5LTEgcm91bmRlZCAke1xuICAgICAgcmVjZW50UGFnZSA9PT0gcFxuICAgICAgICA/IFwiYmctYnJhbmQtNjAwIHRleHQtd2hpdGVcIlxuICAgICAgICA6IFwiYm9yZGVyIGJvcmRlci1zbGF0ZS0yMDBcIlxuICAgIH1gfVxuICA+XG4gICAge3B9XG4gIDwvYnV0dG9uPlxuKSl9XG5cbiAgICA8YnV0dG9uXG4gICAgICBkaXNhYmxlZD17cmVjZW50UGFnZSA9PT0gcmVjZW50VG90YWxQYWdlc31cbiAgICAgIG9uQ2xpY2s9eygpID0+IHNldFJlY2VudFBhZ2UocmVjZW50UGFnZSArIDEpfVxuICAgICAgY2xhc3NOYW1lPVwicHgtMyBweS0xIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1zbGF0ZS0yMDAgZGlzYWJsZWQ6b3BhY2l0eS00MFwiXG4gICAgPlxuICAgICAg4oC6XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gS3BpKHsgbGFiZWwsIHZhbHVlLCBpY29uLCB0aW50IH06IGFueSkge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FyZCBwLTRcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BoLTExIHctMTEgcm91bmRlZC14bCBncmlkIHBsYWNlLWl0ZW1zLWNlbnRlciBzaHJpbmstMCAke3RpbnR9YH0+e2ljb259PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLXctMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14bCBmb250LWV4dHJhYm9sZCB0ZXh0LXNsYXRlLTkwMFwiPnt2YWx1ZX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1zbGF0ZS01MDBcIj57bGFiZWx9PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXSwibmFtZXMiOlsiRnJhZ21lbnQiLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIlBpZUNoYXJ0IiwiUGllIiwiQ2VsbCIsIlJlc3BvbnNpdmVDb250YWluZXIiLCJUb29sdGlwIiwiRG93bmxvYWQiLCJTY2FuTGluZSIsIlVzZXJzIiwiR2xvYmUiLCJTaGllbGRDaGVjayIsIlNjYW5UcmVuZENoYXJ0IiwiYXBpIiwiYXBpQmFzZSIsIkdlb2dyYXBoaWNPdmVydmlldyIsIlBSRVNFVFMiLCJsYWJlbCIsImRheXMiLCJET05VVCIsIkRPVyIsIkFuYWx5dGljcyIsInNldERheXMiLCJzIiwic2V0UyIsInRyZW5kIiwic2V0VHJlbmQiLCJ0b3BQIiwic2V0VG9wUCIsImNpdGllcyIsInNldENpdGllcyIsImRldmljZXMiLCJzZXREZXZpY2VzIiwiaGVhdCIsInNldEhlYXQiLCJyZWNlbnQiLCJzZXRSZWNlbnQiLCJnZW8iLCJzZXRHZW8iLCJ0b3RhbERldmljZXMiLCJyZWR1Y2UiLCJzdW0iLCJkIiwic2NhbnMiLCJicmFuZHMiLCJzZXRCcmFuZHMiLCJicmFuZElkIiwic2V0QnJhbmRJZCIsInJlY2VudFRvdGFsIiwic2V0UmVjZW50VG90YWwiLCJmcm9tRGF0ZSIsInNldEZyb21EYXRlIiwidG9EYXRlIiwic2V0VG9EYXRlIiwicGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwiYXBwZW5kIiwiU3RyaW5nIiwicXVlcnkiLCJ0b1N0cmluZyIsInJlY2VudFBhZ2UiLCJzZXRSZWNlbnRQYWdlIiwicmVjZW50VG90YWxQYWdlcyIsInNldFJlY2VudFRvdGFsUGFnZXMiLCJyZWNlbnRQYWdlU2l6ZSIsImNsZWFyRmlsdGVycyIsInNob3dBbGxQcm9kdWN0cyIsInNldFNob3dBbGxQcm9kdWN0cyIsInRoZW4iLCJjYXRjaCIsInJlcyIsIml0ZW1zIiwicGFnZXMiLCJ0b3RhbCIsIm1heFAiLCJNYXRoIiwibWF4IiwibWFwIiwicCIsIm1heEhlYXQiLCJoIiwiY291bnQiLCJzdGFydFBhZ2UiLCJlbmRQYWdlIiwibWluIiwiaSIsInB1c2giLCJkb3dubG9hZENzdiIsInRva2VuIiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsImZldGNoIiwiaGVhZGVycyIsIkF1dGhvcml6YXRpb24iLCJvayIsImFsZXJ0IiwiYmxvYiIsInVybCIsIndpbmRvdyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImEiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJocmVmIiwiZG93bmxvYWQiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJjbGljayIsInJlbW92ZSIsInJldm9rZU9iamVjdFVSTCIsImRpdiIsImNsYXNzTmFtZSIsImgyIiwiYnV0dG9uIiwib25DbGljayIsImlucHV0IiwidHlwZSIsInZhbHVlIiwib25DaGFuZ2UiLCJlIiwidGFyZ2V0Iiwic3BhbiIsInNlbGVjdCIsIm9wdGlvbiIsImIiLCJpZCIsIm5hbWUiLCJLcGkiLCJ0b3RhbF9zY2FucyIsImljb24iLCJ0aW50IiwidW5pcXVlX2NvbnN1bWVycyIsInRvZGF5X3NjYW5zIiwiYWN0aXZlX3Byb2R1Y3RzIiwiYXZnX3RydXN0X3Njb3JlIiwiY291bnRyaWVzIiwiaDMiLCJkYXRhIiwid2lkdGgiLCJoZWlnaHQiLCJkYXRhS2V5IiwibmFtZUtleSIsImlubmVyUmFkaXVzIiwib3V0ZXJSYWRpdXMiLCJzdHJva2UiLCJzdHJva2VXaWR0aCIsIl8iLCJmaWxsIiwibGVuZ3RoIiwiZm9ybWF0dGVyIiwicGVyY2VudCIsInRvRml4ZWQiLCJzdHlsZSIsImJhY2tncm91bmRDb2xvciIsImRldmljZSIsInRvTG9jYWxlU3RyaW5nIiwiZ3JpZFRlbXBsYXRlQ29sdW1ucyIsIkFycmF5IiwiZnJvbSIsImRheSIsImNlbGwiLCJmaW5kIiwieCIsImRvdyIsImhvdXIiLCJ2Iiwib3AiLCJ0aXRsZSIsImJhY2tncm91bmQiLCJzbGljZSIsIm9sIiwiYyIsImxpIiwiY2l0eSIsInRhYmxlIiwidGhlYWQiLCJ0ciIsInRoIiwidGJvZHkiLCJyIiwidGQiLCJEYXRlIiwiYXQiLCJjb2RlIiwiY291bnRyeSIsImlwIiwiY29sU3BhbiIsImRpc2FibGVkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/dashboard/analytics/page.tsx\n"));
/***/ })
});