"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/page",{ /***/ "(app-pages-browser)/./src/app/page.tsx": /*!**************************!*\ !*** ./src/app/page.tsx ***! \**************************/ /***/ ((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\": () => (/* binding */ HeartbeatMonitor)\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_Activity_ExternalLink_Plus_RefreshCw_Trash2_lucide_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,ExternalLink,Plus,RefreshCw,Trash2!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/activity.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_ExternalLink_Plus_RefreshCw_Trash2_lucide_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,ExternalLink,Plus,RefreshCw,Trash2!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/refresh-cw.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_ExternalLink_Plus_RefreshCw_Trash2_lucide_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,ExternalLink,Plus,RefreshCw,Trash2!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/plus.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_ExternalLink_Plus_RefreshCw_Trash2_lucide_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,ExternalLink,Plus,RefreshCw,Trash2!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/external-link.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_ExternalLink_Plus_RefreshCw_Trash2_lucide_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,ExternalLink,Plus,RefreshCw,Trash2!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/trash-2.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\nfunction HeartbeatMonitor() {\n _s();\n const [apps, setApps] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [status, setStatus] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [checking, setChecking] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [showAddApp, setShowAddApp] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [newApp, setNewApp] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n name: \"\",\n description: \"\",\n url: \"http://localhost:\",\n port: 3000,\n path: \"\",\n command: \"npm run dev\",\n category: \"Other\",\n color: \"#22C55E\",\n enabled: true\n });\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"HeartbeatMonitor.useEffect\": ()=>{\n fetchData();\n const interval = setInterval(fetchData, 30000);\n return ({\n \"HeartbeatMonitor.useEffect\": ()=>clearInterval(interval)\n })[\"HeartbeatMonitor.useEffect\"];\n }\n }[\"HeartbeatMonitor.useEffect\"], []);\n async function fetchData() {\n try {\n const res = await fetch(\"/api/monitor\");\n const data = await res.json();\n setApps(data.apps || []);\n setStatus(data.status || []);\n } catch (err) {\n console.error(\"Failed to fetch data:\", err);\n } finally{\n setLoading(false);\n }\n }\n async function checkApp(app) {\n setChecking(app.id);\n try {\n const start = Date.now();\n await fetch(app.url, {\n method: \"HEAD\",\n mode: \"no-cors\"\n });\n const responseTime = Date.now() - start;\n const entry = {\n appId: app.id,\n timestamp: new Date().toISOString(),\n status: \"up\",\n responseTime\n };\n await fetch(\"/api/monitor\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n action: \"recordStatus\",\n entry\n })\n });\n fetchData();\n } catch (e) {\n const entry = {\n appId: app.id,\n timestamp: new Date().toISOString(),\n status: \"down\"\n };\n await fetch(\"/api/monitor\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n action: \"recordStatus\",\n entry\n })\n });\n fetchData();\n } finally{\n setChecking(null);\n }\n }\n async function addApp(e) {\n e.preventDefault();\n if (!newApp.name || !newApp.url) return;\n await fetch(\"/api/monitor\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n action: \"addApp\",\n app: newApp\n })\n });\n setNewApp({\n name: \"\",\n description: \"\",\n url: \"http://localhost:\",\n port: 3000,\n path: \"\",\n command: \"npm run dev\",\n category: \"Other\",\n color: \"#22C55E\",\n enabled: true\n });\n setShowAddApp(false);\n fetchData();\n }\n async function deleteApp(id) {\n if (!confirm(\"Delete this app from monitoring?\")) return;\n await fetch(\"/api/monitor\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n action: \"deleteApp\",\n id\n })\n });\n fetchData();\n }\n function getAppStatus(appId) {\n const appStatus = status.filter((s)=>s.appId === appId);\n const latest = appStatus[appStatus.length - 1];\n const isUp = (latest === null || latest === void 0 ? void 0 : latest.status) === \"up\";\n const uptime = appStatus.length > 0 ? Math.round(appStatus.filter((s)=>s.status === \"up\").length / appStatus.length * 100) : 100;\n return {\n latest,\n isUp,\n uptime\n };\n }\n const totalApps = apps.length;\n const onlineApps = apps.filter((app)=>getAppStatus(app.id).isUp).length;\n if (loading) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-slate-950 flex items-center justify-center\",\n role: \"status\",\n \"aria-live\": \"polite\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-slate-400\",\n children: \"Loading monitor...\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 155,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 154,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-slate-950 text-slate-100\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: \"#main-content\",\n className: \"sr-only focus:not-sr-only focus:absolute focus:top-4 focus:left-4 focus:z-50 focus:bg-emerald-500 focus:text-white focus:px-4 focus:py-2 focus:rounded-lg\",\n children: \"Skip to main content\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 163,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"border-b border-slate-800 bg-slate-900\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-6xl mx-auto px-4 sm:px-6 lg:px-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between h-16\",\n children: [\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)(_barrel_optimize_names_Activity_ExternalLink_Plus_RefreshCw_Trash2_lucide_react__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"w-7 h-7 text-emerald-500\",\n \"aria-hidden\": \"true\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 175,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-xl font-semibold text-white\",\n children: \"Heartbeat Monitor\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 177,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-slate-400\",\n \"aria-live\": \"polite\",\n children: [\n onlineApps,\n \" of \",\n totalApps,\n \" services online\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 178,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 176,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 174,\n columnNumber: 13\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)(\"button\", {\n onClick: fetchData,\n className: \"inline-flex items-center justify-center p-2.5 bg-slate-800 hover:bg-slate-700 text-slate-400 hover:text-white rounded-lg transition-colors focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-900\",\n \"aria-label\": \"Refresh data\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_ExternalLink_Plus_RefreshCw_Trash2_lucide_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"w-5 h-5\",\n \"aria-hidden\": \"true\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 190,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 185,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setShowAddApp(true),\n className: \"inline-flex items-center gap-2 bg-emerald-600 hover:bg-emerald-500 text-white px-4 py-2.5 rounded-lg font-medium transition-colors focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-900\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_ExternalLink_Plus_RefreshCw_Trash2_lucide_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"w-4 h-4\",\n \"aria-hidden\": \"true\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 196,\n columnNumber: 17\n }, this),\n \"Add App\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 192,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 184,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 173,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 172,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 171,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n id: \"main-content\",\n className: \"max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-slate-900 rounded-lg border border-slate-800 overflow-hidden\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"table\", {\n className: \"w-full text-left\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"thead\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"tr\", {\n className: \"bg-slate-800 border-b border-slate-700\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n scope: \"col\",\n className: \"px-4 py-3 text-xs font-semibold text-slate-400 uppercase tracking-wider\",\n children: \"Status\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 211,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n scope: \"col\",\n className: \"px-4 py-3 text-xs font-semibold text-slate-400 uppercase tracking-wider\",\n children: \"Name\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 212,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n scope: \"col\",\n className: \"px-4 py-3 text-xs font-semibold text-slate-400 uppercase tracking-wider\",\n children: \"URL\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 213,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n scope: \"col\",\n className: \"px-4 py-3 text-xs font-semibold text-slate-400 uppercase tracking-wider\",\n children: \"Port\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 214,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n scope: \"col\",\n className: \"px-4 py-3 text-xs font-semibold text-slate-400 uppercase tracking-wider\",\n children: \"Uptime\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 215,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n scope: \"col\",\n className: \"px-4 py-3 text-xs font-semibold text-slate-400 uppercase tracking-wider\",\n children: \"Response\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 216,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n scope: \"col\",\n className: \"px-4 py-3 text-xs font-semibold text-slate-400 uppercase tracking-wider\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"sr-only\",\n children: \"Actions\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 218,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 217,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 210,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 209,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"tbody\", {\n className: \"divide-y divide-slate-800\",\n children: apps.map((app)=>{\n const { isUp, uptime, latest } = getAppStatus(app.id);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"tr\", {\n className: \"hover:bg-slate-800/50 transition-colors\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-4 py-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium \".concat(isUp ? \"bg-emerald-500/10 text-emerald-400 border border-emerald-500/20\" : \"bg-red-500/10 text-red-400 border border-red-500/20\"),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-1.5 h-1.5 rounded-full \".concat(isUp ? \"bg-emerald-400\" : \"bg-red-400\"),\n \"aria-hidden\": \"true\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 236,\n columnNumber: 25\n }, this),\n isUp ? \"Online\" : \"Offline\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 229,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 228,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-4 py-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"font-medium text-white\",\n children: app.name\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 242,\n columnNumber: 25\n }, this),\n app.description && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-slate-500\",\n children: app.description\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 244,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 241,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 240,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-4 py-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: app.url,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"text-emerald-400 hover:text-emerald-300 hover:underline text-sm font-medium transition-colors focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-900 rounded\",\n children: app.url\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 249,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 248,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-4 py-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"code\", {\n className: \"text-sm text-slate-300 bg-slate-800 px-2 py-1 rounded\",\n children: app.port\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 259,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 258,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-4 py-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-medium \".concat(uptime >= 90 ? \"text-emerald-400\" : uptime >= 50 ? \"text-yellow-400\" : \"text-red-400\"),\n children: [\n uptime,\n \"%\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 262,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 261,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-4 py-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-slate-300\",\n children: (latest === null || latest === void 0 ? void 0 : latest.responseTime) ? \"\".concat(latest.responseTime, \"ms\") : \"—\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 267,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 266,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-4 py-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>checkApp(app),\n disabled: checking === app.id,\n className: \"inline-flex items-center justify-center p-2 text-slate-400 hover:text-white hover:bg-slate-700 rounded-lg transition-colors focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-900 disabled:opacity-50 disabled:cursor-not-allowed\",\n \"aria-label\": \"Check \".concat(app.name, \" status\"),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_ExternalLink_Plus_RefreshCw_Trash2_lucide_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"w-4 h-4 \".concat(checking === app.id ? \"animate-spin\" : \"\"),\n \"aria-hidden\": \"true\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 279,\n columnNumber: 27\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 273,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: app.url,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"inline-flex items-center justify-center p-2 text-slate-400 hover:text-white hover:bg-slate-700 rounded-lg transition-colors focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-900\",\n \"aria-label\": \"Open \".concat(app.name),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_ExternalLink_Plus_RefreshCw_Trash2_lucide_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"w-4 h-4\",\n \"aria-hidden\": \"true\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 288,\n columnNumber: 27\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 281,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>deleteApp(app.id),\n className: \"inline-flex items-center justify-center p-2 text-slate-400 hover:text-red-400 hover:bg-red-500/10 rounded-lg transition-colors focus-visible:ring-2 focus-visible:ring-red-500 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-900\",\n \"aria-label\": \"Delete \".concat(app.name),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_ExternalLink_Plus_RefreshCw_Trash2_lucide_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"w-4 h-4\",\n \"aria-hidden\": \"true\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 295,\n columnNumber: 27\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 290,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 272,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 271,\n columnNumber: 21\n }, this)\n ]\n }, app.id, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 227,\n columnNumber: 19\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 222,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 208,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 207,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 205,\n columnNumber: 7\n }, this),\n showAddApp && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"fixed inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center z-50 p-4\",\n role: \"dialog\",\n \"aria-modal\": \"true\",\n \"aria-labelledby\": \"add-app-title\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-slate-900 rounded-lg border border-slate-800 p-6 w-full max-w-md shadow-2xl\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n id: \"add-app-title\",\n className: \"text-xl font-semibold text-white mb-6\",\n children: \"Add New App\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 316,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"form\", {\n onSubmit: addApp,\n className: \"space-y-5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n htmlFor: \"app-name\",\n className: \"block text-sm font-medium text-slate-400 mb-2\",\n children: [\n \"Name \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-red-400\",\n children: \"*\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 320,\n columnNumber: 24\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 319,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n id: \"app-name\",\n type: \"text\",\n value: newApp.name,\n onChange: (e)=>setNewApp({\n ...newApp,\n name: e.target.value\n }),\n className: \"w-full bg-slate-800 border border-slate-700 rounded-lg px-3 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500 focus:ring-1 focus:ring-emerald-500 transition-colors\",\n placeholder: \"My Application\",\n required: true,\n autoComplete: \"off\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 322,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 318,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n htmlFor: \"app-desc\",\n className: \"block text-sm font-medium text-slate-400 mb-2\",\n children: \"Description\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 334,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n id: \"app-desc\",\n type: \"text\",\n value: newApp.description,\n onChange: (e)=>setNewApp({\n ...newApp,\n description: e.target.value\n }),\n className: \"w-full bg-slate-800 border border-slate-700 rounded-lg px-3 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500 focus:ring-1 focus:ring-emerald-500 transition-colors\",\n placeholder: \"Brief description…\",\n autoComplete: \"off\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 337,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 333,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n htmlFor: \"app-url\",\n className: \"block text-sm font-medium text-slate-400 mb-2\",\n children: [\n \"URL \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-red-400\",\n children: \"*\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 350,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 349,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n id: \"app-url\",\n type: \"url\",\n value: newApp.url,\n onChange: (e)=>setNewApp({\n ...newApp,\n url: e.target.value\n }),\n className: \"w-full bg-slate-800 border border-slate-700 rounded-lg px-3 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500 focus:ring-1 focus:ring-emerald-500 transition-colors\",\n placeholder: \"http://localhost:3000\",\n required: true,\n autoComplete: \"off\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 352,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 348,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n htmlFor: \"app-port\",\n className: \"block text-sm font-medium text-slate-400 mb-2\",\n children: [\n \"Port \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-red-400\",\n children: \"*\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 365,\n columnNumber: 26\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 364,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n id: \"app-port\",\n type: \"number\",\n value: newApp.port,\n onChange: (e)=>setNewApp({\n ...newApp,\n port: parseInt(e.target.value)\n }),\n className: \"w-full bg-slate-800 border border-slate-700 rounded-lg px-3 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500 focus:ring-1 focus:ring-emerald-500 transition-colors\",\n required: true,\n min: \"1\",\n max: \"65535\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 367,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 363,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 347,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-3 pt-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setShowAddApp(false),\n className: \"flex-1 bg-slate-800 hover:bg-slate-700 text-slate-300 py-2.5 rounded-lg font-medium transition-colors focus-visible:ring-2 focus-visible:ring-slate-500 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-900\",\n children: \"Cancel\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 380,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"submit\",\n className: \"flex-1 bg-emerald-600 hover:bg-emerald-500 text-white py-2.5 rounded-lg font-medium transition-colors focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-900\",\n children: \"Add App\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 387,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 379,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 317,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 315,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 309,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 161,\n columnNumber: 5\n }, this);\n}\n_s(HeartbeatMonitor, \"P2SiA3jWi2qbhDtBgJbGhzf0uqY=\");\n_c = HeartbeatMonitor;\nvar _c;\n$RefreshReg$(_c, \"HeartbeatMonitor\");\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,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Ozs7O3NEQUdELDhEQUFDUzs0Q0FDQ3lCLE1BQUs7NENBQ0xsQyxXQUFVO3NEQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVVqQjtHQXRYd0JyRTtLQUFBQSIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL3NyYy9hcHAvcGFnZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEFjdGl2aXR5LCBQbHVzLCBSZWZyZXNoQ3csIFRyYXNoMiwgRXh0ZXJuYWxMaW5rIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuXG5pbnRlcmZhY2UgQXBwIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbiAgcG9ydDogbnVtYmVyO1xuICBwYXRoOiBzdHJpbmc7XG4gIGNvbW1hbmQ6IHN0cmluZztcbiAgY2F0ZWdvcnk6IHN0cmluZztcbiAgY29sb3I6IHN0cmluZztcbiAgZW5hYmxlZDogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIFN0YXR1c0VudHJ5IHtcbiAgYXBwSWQ6IHN0cmluZztcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIHN0YXR1czogXCJ1cFwiIHwgXCJkb3duXCI7XG4gIHJlc3BvbnNlVGltZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gSGVhcnRiZWF0TW9uaXRvcigpIHtcbiAgY29uc3QgW2FwcHMsIHNldEFwcHNdID0gdXNlU3RhdGU8QXBwW10+KFtdKTtcbiAgY29uc3QgW3N0YXR1cywgc2V0U3RhdHVzXSA9IHVzZVN0YXRlPFN0YXR1c0VudHJ5W10+KFtdKTtcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFtjaGVja2luZywgc2V0Q2hlY2tpbmddID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFtzaG93QWRkQXBwLCBzZXRTaG93QWRkQXBwXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW25ld0FwcCwgc2V0TmV3QXBwXSA9IHVzZVN0YXRlPFBhcnRpYWw8QXBwPj4oe1xuICAgIG5hbWU6IFwiXCIsXG4gICAgZGVzY3JpcHRpb246IFwiXCIsXG4gICAgdXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6XCIsXG4gICAgcG9ydDogMzAwMCxcbiAgICBwYXRoOiBcIlwiLFxuICAgIGNvbW1hbmQ6IFwibnBtIHJ1biBkZXZcIixcbiAgICBjYXRlZ29yeTogXCJPdGhlclwiLFxuICAgIGNvbG9yOiBcIiMyMkM1NUVcIixcbiAgICBlbmFibGVkOiB0cnVlLFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoRGF0YSgpO1xuICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoZmV0Y2hEYXRhLCAzMDAwMCk7XG4gICAgcmV0dXJuICgpID0+IGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICB9LCBbXSk7XG5cbiAgYXN5bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChcIi9hcGkvbW9uaXRvclwiKTtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXMuanNvbigpO1xuICAgICAgc2V0QXBwcyhkYXRhLmFwcHMgfHwgW10pO1xuICAgICAgc2V0U3RhdHVzKGRhdGEuc3RhdHVzIHx8IFtdKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gZmV0Y2ggZGF0YTpcIiwgZXJyKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gY2hlY2tBcHAoYXBwOiBBcHApIHtcbiAgICBzZXRDaGVja2luZyhhcHAuaWQpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgICBhd2FpdCBmZXRjaChhcHAudXJsLCB7IG1ldGhvZDogXCJIRUFEXCIsIG1vZGU6IFwibm8tY29yc1wiIH0pO1xuICAgICAgY29uc3QgcmVzcG9uc2VUaW1lID0gRGF0ZS5ub3coKSAtIHN0YXJ0O1xuICAgICAgXG4gICAgICBjb25zdCBlbnRyeTogU3RhdHVzRW50cnkgPSB7XG4gICAgICAgIGFwcElkOiBhcHAuaWQsXG4gICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICBzdGF0dXM6IFwidXBcIixcbiAgICAgICAgcmVzcG9uc2VUaW1lLFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgZmV0Y2goXCIvYXBpL21vbml0b3JcIiwge1xuICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgYWN0aW9uOiBcInJlY29yZFN0YXR1c1wiLCBlbnRyeSB9KSxcbiAgICAgIH0pO1xuXG4gICAgICBmZXRjaERhdGEoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIGNvbnN0IGVudHJ5OiBTdGF0dXNFbnRyeSA9IHtcbiAgICAgICAgYXBwSWQ6IGFwcC5pZCxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIHN0YXR1czogXCJkb3duXCIsXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBmZXRjaChcIi9hcGkvbW9uaXRvclwiLCB7XG4gICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBhY3Rpb246IFwicmVjb3JkU3RhdHVzXCIsIGVudHJ5IH0pLFxuICAgICAgfSk7XG5cbiAgICAgIGZldGNoRGF0YSgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRDaGVja2luZyhudWxsKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBhZGRBcHAoZTogUmVhY3QuRm9ybUV2ZW50KSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmICghbmV3QXBwLm5hbWUgfHwgIW5ld0FwcC51cmwpIHJldHVybjtcblxuICAgIGF3YWl0IGZldGNoKFwiL2FwaS9tb25pdG9yXCIsIHtcbiAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGFjdGlvbjogXCJhZGRBcHBcIiwgYXBwOiBuZXdBcHAgfSksXG4gICAgfSk7XG5cbiAgICBzZXROZXdBcHAoe1xuICAgICAgbmFtZTogXCJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6XCIsXG4gICAgICBwb3J0OiAzMDAwLFxuICAgICAgcGF0aDogXCJcIixcbiAgICAgIGNvbW1hbmQ6IFwibnBtIHJ1biBkZXZcIixcbiAgICAgIGNhdGVnb3J5OiBcIk90aGVyXCIsXG4gICAgICBjb2xvcjogXCIjMjJDNTVFXCIsXG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgIH0pO1xuICAgIHNldFNob3dBZGRBcHAoZmFsc2UpO1xuICAgIGZldGNoRGF0YSgpO1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZGVsZXRlQXBwKGlkOiBzdHJpbmcpIHtcbiAgICBpZiAoIWNvbmZpcm0oXCJEZWxldGUgdGhpcyBhcHAgZnJvbSBtb25pdG9yaW5nP1wiKSkgcmV0dXJuO1xuICAgIGF3YWl0IGZldGNoKFwiL2FwaS9tb25pdG9yXCIsIHtcbiAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGFjdGlvbjogXCJkZWxldGVBcHBcIiwgaWQgfSksXG4gICAgfSk7XG4gICAgZmV0Y2hEYXRhKCk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRBcHBTdGF0dXMoYXBwSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGFwcFN0YXR1cyA9IHN0YXR1cy5maWx0ZXIoKHMpID0+IHMuYXBwSWQgPT09IGFwcElkKTtcbiAgICBjb25zdCBsYXRlc3QgPSBhcHBTdGF0dXNbYXBwU3RhdHVzLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IGlzVXAgPSBsYXRlc3Q/LnN0YXR1cyA9PT0gXCJ1cFwiO1xuICAgIGNvbnN0IHVwdGltZSA9IGFwcFN0YXR1cy5sZW5ndGggPiAwIFxuICAgICAgPyBNYXRoLnJvdW5kKChhcHBTdGF0dXMuZmlsdGVyKHMgPT4gcy5zdGF0dXMgPT09IFwidXBcIikubGVuZ3RoIC8gYXBwU3RhdHVzLmxlbmd0aCkgKiAxMDApXG4gICAgICA6IDEwMDtcbiAgICBcbiAgICByZXR1cm4geyBsYXRlc3QsIGlzVXAsIHVwdGltZSB9O1xuICB9XG5cbiAgY29uc3QgdG90YWxBcHBzID0gYXBwcy5sZW5ndGg7XG4gIGNvbnN0IG9ubGluZUFwcHMgPSBhcHBzLmZpbHRlcigoYXBwKSA9PiBnZXRBcHBTdGF0dXMoYXBwLmlkKS5pc1VwKS5sZW5ndGg7XG5cbiAgaWYgKGxvYWRpbmcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtaW4taC1zY3JlZW4gYmctc2xhdGUtOTUwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc2xhdGUtNDAwXCI+TG9hZGluZyBtb25pdG9yLi4uPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1zbGF0ZS05NTAgdGV4dC1zbGF0ZS0xMDBcIj5cbiAgICAgIHsvKiBTa2lwIExpbmsgZm9yIEFjY2Vzc2liaWxpdHkgKi99XG4gICAgICA8YSBcbiAgICAgICAgaHJlZj1cIiNtYWluLWNvbnRlbnRcIiBcbiAgICAgICAgY2xhc3NOYW1lPVwic3Itb25seSBmb2N1czpub3Qtc3Itb25seSBmb2N1czphYnNvbHV0ZSBmb2N1czp0b3AtNCBmb2N1czpsZWZ0LTQgZm9jdXM6ei01MCBmb2N1czpiZy1lbWVyYWxkLTUwMCBmb2N1czp0ZXh0LXdoaXRlIGZvY3VzOnB4LTQgZm9jdXM6cHktMiBmb2N1czpyb3VuZGVkLWxnXCJcbiAgICAgID5cbiAgICAgICAgU2tpcCB0byBtYWluIGNvbnRlbnRcbiAgICAgIDwvYT5cblxuICAgICAgey8qIEhlYWRlciAqL31cbiAgICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwiYm9yZGVyLWIgYm9yZGVyLXNsYXRlLTgwMCBiZy1zbGF0ZS05MDBcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy02eGwgbXgtYXV0byBweC00IHNtOnB4LTYgbGc6cHgtOFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGgtMTZcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgICAgICAgPEFjdGl2aXR5IGNsYXNzTmFtZT1cInctNyBoLTcgdGV4dC1lbWVyYWxkLTUwMFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cInRleHQteGwgZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlXCI+SGVhcnRiZWF0IE1vbml0b3I8L2gxPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1zbGF0ZS00MDBcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAgICAgIHtvbmxpbmVBcHBzfSBvZiB7dG90YWxBcHBzfSBzZXJ2aWNlcyBvbmxpbmVcbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2ZldGNoRGF0YX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcC0yLjUgYmctc2xhdGUtODAwIGhvdmVyOmJnLXNsYXRlLTcwMCB0ZXh0LXNsYXRlLTQwMCBob3Zlcjp0ZXh0LXdoaXRlIHJvdW5kZWQtbGcgdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWVtZXJhbGQtNTAwIGZvY3VzLXZpc2libGU6cmluZy1vZmZzZXQtMiBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LXNsYXRlLTkwMFwiXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlJlZnJlc2ggZGF0YVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8UmVmcmVzaEN3IGNsYXNzTmFtZT1cInctNSBoLTVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNob3dBZGRBcHAodHJ1ZSl9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0yIGJnLWVtZXJhbGQtNjAwIGhvdmVyOmJnLWVtZXJhbGQtNTAwIHRleHQtd2hpdGUgcHgtNCBweS0yLjUgcm91bmRlZC1sZyBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWNvbG9ycyBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctZW1lcmFsZC01MDAgZm9jdXMtdmlzaWJsZTpyaW5nLW9mZnNldC0yIGZvY3VzLXZpc2libGU6cmluZy1vZmZzZXQtc2xhdGUtOTAwXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxQbHVzIGNsYXNzTmFtZT1cInctNCBoLTRcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgIEFkZCBBcHBcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2hlYWRlcj5cblxuICAgICAgey8qIE1haW4gQ29udGVudCAqL31cbiAgICAgIDxtYWluIGlkPVwibWFpbi1jb250ZW50XCIgY2xhc3NOYW1lPVwibWF4LXctNnhsIG14LWF1dG8gcHgtNCBzbTpweC02IGxnOnB4LTggcHktOFwiPlxuICAgICAgICB7LyogVGFibGUgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctc2xhdGUtOTAwIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1zbGF0ZS04MDAgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgPHRhYmxlIGNsYXNzTmFtZT1cInctZnVsbCB0ZXh0LWxlZnRcIj5cbiAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgPHRyIGNsYXNzTmFtZT1cImJnLXNsYXRlLTgwMCBib3JkZXItYiBib3JkZXItc2xhdGUtNzAwXCI+XG4gICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3NOYW1lPVwicHgtNCBweS0zIHRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LXNsYXRlLTQwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXJcIj5TdGF0dXM8L3RoPlxuICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzTmFtZT1cInB4LTQgcHktMyB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1zbGF0ZS00MDAgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVyXCI+TmFtZTwvdGg+XG4gICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3NOYW1lPVwicHgtNCBweS0zIHRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LXNsYXRlLTQwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXJcIj5VUkw8L3RoPlxuICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzTmFtZT1cInB4LTQgcHktMyB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1zbGF0ZS00MDAgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVyXCI+UG9ydDwvdGg+XG4gICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3NOYW1lPVwicHgtNCBweS0zIHRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LXNsYXRlLTQwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXJcIj5VcHRpbWU8L3RoPlxuICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzTmFtZT1cInB4LTQgcHktMyB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1zbGF0ZS00MDAgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVyXCI+UmVzcG9uc2U8L3RoPlxuICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzTmFtZT1cInB4LTQgcHktMyB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1zbGF0ZS00MDAgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVyXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+QWN0aW9uczwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgIDx0Ym9keSBjbGFzc05hbWU9XCJkaXZpZGUteSBkaXZpZGUtc2xhdGUtODAwXCI+XG4gICAgICAgICAgICAgIHthcHBzLm1hcCgoYXBwKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBpc1VwLCB1cHRpbWUsIGxhdGVzdCB9ID0gZ2V0QXBwU3RhdHVzKGFwcC5pZCk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDx0ciBrZXk9e2FwcC5pZH0gY2xhc3NOYW1lPVwiaG92ZXI6Ymctc2xhdGUtODAwLzUwIHRyYW5zaXRpb24tY29sb3JzXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzc05hbWU9XCJweC00IHB5LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHB4LTIuNSBweS0xIHJvdW5kZWQtZnVsbCB0ZXh0LXhzIGZvbnQtbWVkaXVtICR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzVXAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImJnLWVtZXJhbGQtNTAwLzEwIHRleHQtZW1lcmFsZC00MDAgYm9yZGVyIGJvcmRlci1lbWVyYWxkLTUwMC8yMFwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJiZy1yZWQtNTAwLzEwIHRleHQtcmVkLTQwMCBib3JkZXIgYm9yZGVyLXJlZC01MDAvMjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgdy0xLjUgaC0xLjUgcm91bmRlZC1mdWxsICR7aXNVcCA/IFwiYmctZW1lcmFsZC00MDBcIiA6IFwiYmctcmVkLTQwMFwifWB9IGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNVcCA/IFwiT25saW5lXCIgOiBcIk9mZmxpbmVcIn1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzc05hbWU9XCJweC00IHB5LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwiZm9udC1tZWRpdW0gdGV4dC13aGl0ZVwiPnthcHAubmFtZX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICB7YXBwLmRlc2NyaXB0aW9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LXNsYXRlLTUwMFwiPnthcHAuZGVzY3JpcHRpb259PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzTmFtZT1cInB4LTQgcHktNFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxhIFxuICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj17YXBwLnVybH0gXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1lbWVyYWxkLTQwMCBob3Zlcjp0ZXh0LWVtZXJhbGQtMzAwIGhvdmVyOnVuZGVybGluZSB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1lbWVyYWxkLTUwMCBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpyaW5nLW9mZnNldC1zbGF0ZS05MDAgcm91bmRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge2FwcC51cmx9XG4gICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3NOYW1lPVwicHgtNCBweS00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LXNsYXRlLTMwMCBiZy1zbGF0ZS04MDAgcHgtMiBweS0xIHJvdW5kZWRcIj57YXBwLnBvcnR9PC9jb2RlPlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3NOYW1lPVwicHgtNCBweS00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgdGV4dC1zbSBmb250LW1lZGl1bSAke3VwdGltZSA+PSA5MCA/IFwidGV4dC1lbWVyYWxkLTQwMFwiIDogdXB0aW1lID49IDUwID8gXCJ0ZXh0LXllbGxvdy00MDBcIiA6IFwidGV4dC1yZWQtNDAwXCJ9YH0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dXB0aW1lfSVcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzc05hbWU9XCJweC00IHB5LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtc2xhdGUtMzAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7bGF0ZXN0Py5yZXNwb25zZVRpbWUgPyBgJHtsYXRlc3QucmVzcG9uc2VUaW1lfW1zYCA6IFwi4oCUXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3NOYW1lPVwicHgtNCBweS00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjaGVja0FwcChhcHApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17Y2hlY2tpbmcgPT09IGFwcC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHAtMiB0ZXh0LXNsYXRlLTQwMCBob3Zlcjp0ZXh0LXdoaXRlIGhvdmVyOmJnLXNsYXRlLTcwMCByb3VuZGVkLWxnIHRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1lbWVyYWxkLTUwMCBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpyaW5nLW9mZnNldC1zbGF0ZS05MDAgZGlzYWJsZWQ6b3BhY2l0eS01MCBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtgQ2hlY2sgJHthcHAubmFtZX0gc3RhdHVzYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZnJlc2hDdyBjbGFzc05hbWU9e2B3LTQgaC00ICR7Y2hlY2tpbmcgPT09IGFwcC5pZCA/IFwiYW5pbWF0ZS1zcGluXCIgOiBcIlwifWB9IGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e2FwcC51cmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcC0yIHRleHQtc2xhdGUtNDAwIGhvdmVyOnRleHQtd2hpdGUgaG92ZXI6Ymctc2xhdGUtNzAwIHJvdW5kZWQtbGcgdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLWVtZXJhbGQtNTAwIGZvY3VzLXZpc2libGU6cmluZy1vZmZzZXQtMiBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LXNsYXRlLTkwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2BPcGVuICR7YXBwLm5hbWV9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEV4dGVybmFsTGluayBjbGFzc05hbWU9XCJ3LTQgaC00XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gZGVsZXRlQXBwKGFwcC5pZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBwLTIgdGV4dC1zbGF0ZS00MDAgaG92ZXI6dGV4dC1yZWQtNDAwIGhvdmVyOmJnLXJlZC01MDAvMTAgcm91bmRlZC1sZyB0cmFuc2l0aW9uLWNvbG9ycyBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmVkLTUwMCBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpyaW5nLW9mZnNldC1zbGF0ZS05MDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtgRGVsZXRlICR7YXBwLm5hbWV9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRyYXNoMiBjbGFzc05hbWU9XCJ3LTQgaC00XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21haW4+XG5cbiAgICAgIHsvKiBBZGQgQXBwIE1vZGFsICovfVxuICAgICAge3Nob3dBZGRBcHAgJiYgKFxuICAgICAgICA8ZGl2IFxuICAgICAgICAgIGNsYXNzTmFtZT1cImZpeGVkIGluc2V0LTAgYmctYmxhY2svNjAgYmFja2Ryb3AtYmx1ci1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB6LTUwIHAtNFwiXG4gICAgICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICAgICAgYXJpYS1tb2RhbD1cInRydWVcIlxuICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImFkZC1hcHAtdGl0bGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1zbGF0ZS05MDAgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXNsYXRlLTgwMCBwLTYgdy1mdWxsIG1heC13LW1kIHNoYWRvdy0yeGxcIj5cbiAgICAgICAgICAgIDxoMiBpZD1cImFkZC1hcHAtdGl0bGVcIiBjbGFzc05hbWU9XCJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdGV4dC13aGl0ZSBtYi02XCI+QWRkIE5ldyBBcHA8L2gyPlxuICAgICAgICAgICAgPGZvcm0gb25TdWJtaXQ9e2FkZEFwcH0gY2xhc3NOYW1lPVwic3BhY2UteS01XCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGh0bWxGb3I9XCJhcHAtbmFtZVwiIGNsYXNzTmFtZT1cImJsb2NrIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1zbGF0ZS00MDAgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgTmFtZSA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXJlZC00MDBcIj4qPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICBpZD1cImFwcC1uYW1lXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtuZXdBcHAubmFtZX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0TmV3QXBwKHsgLi4ubmV3QXBwLCBuYW1lOiBlLnRhcmdldC52YWx1ZSB9KX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBiZy1zbGF0ZS04MDAgYm9yZGVyIGJvcmRlci1zbGF0ZS03MDAgcm91bmRlZC1sZyBweC0zIHB5LTIuNSB0ZXh0LXdoaXRlIHBsYWNlaG9sZGVyLXNsYXRlLTUwMCBmb2N1czpib3JkZXItZW1lcmFsZC01MDAgZm9jdXM6cmluZy0xIGZvY3VzOnJpbmctZW1lcmFsZC01MDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJNeSBBcHBsaWNhdGlvblwiXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgaHRtbEZvcj1cImFwcC1kZXNjXCIgY2xhc3NOYW1lPVwiYmxvY2sgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LXNsYXRlLTQwMCBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICBpZD1cImFwcC1kZXNjXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtuZXdBcHAuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldE5ld0FwcCh7IC4uLm5ld0FwcCwgZGVzY3JpcHRpb246IGUudGFyZ2V0LnZhbHVlIH0pfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGJnLXNsYXRlLTgwMCBib3JkZXIgYm9yZGVyLXNsYXRlLTcwMCByb3VuZGVkLWxnIHB4LTMgcHktMi41IHRleHQtd2hpdGUgcGxhY2Vob2xkZXItc2xhdGUtNTAwIGZvY3VzOmJvcmRlci1lbWVyYWxkLTUwMCBmb2N1czpyaW5nLTEgZm9jdXM6cmluZy1lbWVyYWxkLTUwMCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkJyaWVmIGRlc2NyaXB0aW9u4oCmXCJcbiAgICAgICAgICAgICAgICAgIGF1dG9Db21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMiBnYXAtNFwiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgaHRtbEZvcj1cImFwcC11cmxcIiBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtc2xhdGUtNDAwIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgVVJMIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtcmVkLTQwMFwiPio8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIGlkPVwiYXBwLXVybFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ1cmxcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bmV3QXBwLnVybH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXROZXdBcHAoeyAuLi5uZXdBcHAsIHVybDogZS50YXJnZXQudmFsdWUgfSl9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBiZy1zbGF0ZS04MDAgYm9yZGVyIGJvcmRlci1zbGF0ZS03MDAgcm91bmRlZC1sZyBweC0zIHB5LTIuNSB0ZXh0LXdoaXRlIHBsYWNlaG9sZGVyLXNsYXRlLTUwMCBmb2N1czpib3JkZXItZW1lcmFsZC01MDAgZm9jdXM6cmluZy0xIGZvY3VzOnJpbmctZW1lcmFsZC01MDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMFwiXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIGF1dG9Db21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgaHRtbEZvcj1cImFwcC1wb3J0XCIgY2xhc3NOYW1lPVwiYmxvY2sgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LXNsYXRlLTQwMCBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIFBvcnQgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1yZWQtNDAwXCI+Kjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJhcHAtcG9ydFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bmV3QXBwLnBvcnR9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0TmV3QXBwKHsgLi4ubmV3QXBwLCBwb3J0OiBwYXJzZUludChlLnRhcmdldC52YWx1ZSkgfSl9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBiZy1zbGF0ZS04MDAgYm9yZGVyIGJvcmRlci1zbGF0ZS03MDAgcm91bmRlZC1sZyBweC0zIHB5LTIuNSB0ZXh0LXdoaXRlIHBsYWNlaG9sZGVyLXNsYXRlLTUwMCBmb2N1czpib3JkZXItZW1lcmFsZC01MDAgZm9jdXM6cmluZy0xIGZvY3VzOnJpbmctZW1lcmFsZC01MDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICBtaW49XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgbWF4PVwiNjU1MzVcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAtMyBwdC00XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93QWRkQXBwKGZhbHNlKX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgtMSBiZy1zbGF0ZS04MDAgaG92ZXI6Ymctc2xhdGUtNzAwIHRleHQtc2xhdGUtMzAwIHB5LTIuNSByb3VuZGVkLWxnIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1zbGF0ZS01MDAgZm9jdXMtdmlzaWJsZTpyaW5nLW9mZnNldC0yIGZvY3VzLXZpc2libGU6cmluZy1vZmZzZXQtc2xhdGUtOTAwXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgtMSBiZy1lbWVyYWxkLTYwMCBob3ZlcjpiZy1lbWVyYWxkLTUwMCB0ZXh0LXdoaXRlIHB5LTIuNSByb3VuZGVkLWxnIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1lbWVyYWxkLTUwMCBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpyaW5nLW9mZnNldC1zbGF0ZS05MDBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIEFkZCBBcHBcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsIkFjdGl2aXR5IiwiUGx1cyIsIlJlZnJlc2hDdyIsIlRyYXNoMiIsIkV4dGVybmFsTGluayIsIkhlYXJ0YmVhdE1vbml0b3IiLCJhcHBzIiwic2V0QXBwcyIsInN0YXR1cyIsInNldFN0YXR1cyIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiY2hlY2tpbmciLCJzZXRDaGVja2luZyIsInNob3dBZGRBcHAiLCJzZXRTaG93QWRkQXBwIiwibmV3QXBwIiwic2V0TmV3QXBwIiwibmFtZSIsImRlc2NyaXB0aW9uIiwidXJsIiwicG9ydCIsInBhdGgiLCJjb21tYW5kIiwiY2F0ZWdvcnkiLCJjb2xvciIsImVuYWJsZWQiLCJmZXRjaERhdGEiLCJpbnRlcnZhbCIsInNldEludGVydmFsIiwiY2xlYXJJbnRlcnZhbCIsInJlcyIsImZldGNoIiwiZGF0YSIsImpzb24iLCJlcnIiLCJjb25zb2xlIiwiZXJyb3IiLCJjaGVja0FwcCIsImFwcCIsImlkIiwic3RhcnQiLCJEYXRlIiwibm93IiwibWV0aG9kIiwibW9kZSIsInJlc3BvbnNlVGltZSIsImVudHJ5IiwiYXBwSWQiLCJ0aW1lc3RhbXAiLCJ0b0lTT1N0cmluZyIsImhlYWRlcnMiLCJib2R5IiwiSlNPTiIsInN0cmluZ2lmeSIsImFjdGlvbiIsImFkZEFwcCIsImUiLCJwcmV2ZW50RGVmYXVsdCIsImRlbGV0ZUFwcCIsImNvbmZpcm0iLCJnZXRBcHBTdGF0dXMiLCJhcHBTdGF0dXMiLCJmaWx0ZXIiLCJzIiwibGF0ZXN0IiwibGVuZ3RoIiwiaXNVcCIsInVwdGltZSIsIk1hdGgiLCJyb3VuZCIsInRvdGFsQXBwcyIsIm9ubGluZUFwcHMiLCJkaXYiLCJjbGFzc05hbWUiLCJyb2xlIiwiYXJpYS1saXZlIiwiYSIsImhyZWYiLCJoZWFkZXIiLCJhcmlhLWhpZGRlbiIsImgxIiwicCIsImJ1dHRvbiIsIm9uQ2xpY2siLCJhcmlhLWxhYmVsIiwibWFpbiIsInRhYmxlIiwidGhlYWQiLCJ0ciIsInRoIiwic2NvcGUiLCJzcGFuIiwidGJvZHkiLCJtYXAiLCJ0ZCIsInRhcmdldCIsInJlbCIsImNvZGUiLCJkaXNhYmxlZCIsImFyaWEtbW9kYWwiLCJhcmlhLWxhYmVsbGVkYnkiLCJoMiIsImZvcm0iLCJvblN1Ym1pdCIsImxhYmVsIiwiaHRtbEZvciIsImlucHV0IiwidHlwZSIsInZhbHVlIiwib25DaGFuZ2UiLCJwbGFjZWhvbGRlciIsInJlcXVpcmVkIiwiYXV0b0NvbXBsZXRlIiwicGFyc2VJbnQiLCJtaW4iLCJtYXgiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/app/page.tsx\n")); /***/ }) });