node-red-contrib-knx-ultimate 4.2.2 → 4.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -6,6 +6,11 @@
6
6
 
7
7
  # CHANGELOG
8
8
 
9
+ **Version 4.2.3** - March 2026<br/>
10
+
11
+ - IMPROVE: **KNX AI Flow Map** added a new toggle to show or hide `knxUltimate` nodes running in **Universal Mode**; they are now hidden by default to keep the topology cleaner.<br/>
12
+ - CHANGE: removed duplicate tutorial markdown files ending with ` 2.md` across the `tutorial/` tree.<br/>
13
+
9
14
  **Version 4.2.2** - March 2026<br/>
10
15
 
11
16
  - CHANGE: **KNX AI Web Page** is now the official Vue-based dashboard served from `/knxUltimateAI/sidebar/page`.<br/>
@@ -1766,7 +1766,8 @@ module.exports = function (RED) {
1766
1766
  payload: '',
1767
1767
  lastSeenAtMs: 0,
1768
1768
  inFlow: true,
1769
- anomalyCount: 0
1769
+ anomalyCount: 0,
1770
+ listenAllGA: false
1770
1771
  }, entry))
1771
1772
  return
1772
1773
  }
@@ -1778,6 +1779,7 @@ module.exports = function (RED) {
1778
1779
  cur.inFlow = entry.inFlow !== undefined ? !!entry.inFlow : cur.inFlow
1779
1780
  cur.lastSeenAtMs = Math.max(Number(cur.lastSeenAtMs || 0), Number(entry.lastSeenAtMs || 0))
1780
1781
  cur.anomalyCount = Math.max(Number(cur.anomalyCount || 0), Number(entry.anomalyCount || 0))
1782
+ cur.listenAllGA = entry.listenAllGA !== undefined ? !!entry.listenAllGA : !!cur.listenAllGA
1781
1783
  graphNodes.set(id, cur)
1782
1784
  }
1783
1785
 
@@ -1827,7 +1829,8 @@ module.exports = function (RED) {
1827
1829
  payload: String(nodeLastPayload[nid] || '').trim(),
1828
1830
  lastSeenAtMs: Number(nodeLastSeenMs[nid] || 0),
1829
1831
  inFlow: true,
1830
- anomalyCount: 0
1832
+ anomalyCount: 0,
1833
+ listenAllGA: !!(nodeInfo && nodeInfo.listenAllGA)
1831
1834
  })
1832
1835
  }
1833
1836
 
@@ -1 +1 @@
1
- .page-shell[data-v-d00cc40d]{width:min(1660px,calc(100% - 18px));margin:14px auto 28px}.topbar[data-v-d00cc40d]{margin-bottom:18px;padding:22px;border:1px solid var(--line);border-radius:24px;background:#ffffffe0;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.brand[data-v-d00cc40d]{margin-bottom:18px}.eyebrow[data-v-d00cc40d]{margin:0 0 6px;color:var(--accent);font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.brand h1[data-v-d00cc40d]{margin:0;font-size:clamp(28px,4vw,40px);line-height:1}.subhead[data-v-d00cc40d]{max-width:860px;margin:10px 0 0;color:var(--muted);font-size:14px;line-height:1.5}.toolbar[data-v-d00cc40d],.statusbar[data-v-d00cc40d],.theme-strip[data-v-d00cc40d],.checkbox[data-v-d00cc40d],.pill-row[data-v-d00cc40d],.preset-row[data-v-d00cc40d],.ask-row[data-v-d00cc40d]{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.toolbar[data-v-d00cc40d]{margin-bottom:12px}.theme-button[data-v-d00cc40d],.primary-button[data-v-d00cc40d],.preset-button[data-v-d00cc40d],.primary-link[data-v-d00cc40d],.secondary-button[data-v-d00cc40d]{border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--text);text-decoration:none;font-size:13px;font-weight:700;padding:10px 14px;transition:.18s ease}.theme-button.active[data-v-d00cc40d],.primary-button[data-v-d00cc40d],.primary-link[data-v-d00cc40d]{border-color:transparent;background:linear-gradient(135deg,var(--accent),#4bbf77);color:#fff}.theme-button[data-v-d00cc40d]:hover,.preset-button[data-v-d00cc40d]:hover,.secondary-button[data-v-d00cc40d]:hover{background:var(--accent-soft);border-color:#7a68d866}.primary-button[data-v-d00cc40d]:disabled,.preset-button[data-v-d00cc40d]:disabled{opacity:.6;cursor:not-allowed}.node-select[data-v-d00cc40d]{min-width:min(360px,100%)}.node-select[data-v-d00cc40d],.checkbox[data-v-d00cc40d],.summary-pre[data-v-d00cc40d],.chat-log[data-v-d00cc40d],.anomaly-card pre[data-v-d00cc40d]{border:1px solid var(--line);border-radius:16px;background:#ffffffe0}.node-select[data-v-d00cc40d]{padding:10px 12px;color:var(--text)}.checkbox[data-v-d00cc40d]{padding:10px 12px;gap:8px}.statusbar[data-v-d00cc40d]{justify-content:space-between}.status-pill[data-v-d00cc40d],.meta-chip[data-v-d00cc40d],.pill[data-v-d00cc40d]{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:7px 12px;font-size:12px;font-weight:800}.status-pill[data-v-d00cc40d],.meta-chip[data-v-d00cc40d],.pill.neutral[data-v-d00cc40d]{background:var(--accent-soft);color:var(--text)}.status-pill.error[data-v-d00cc40d],.pill.danger[data-v-d00cc40d]{background:var(--err-bg);color:#a4333a}.pill.success[data-v-d00cc40d]{background:var(--ok-bg);color:#1b7d36}.status-detail[data-v-d00cc40d]{color:var(--muted);font-size:12px;font-weight:700}.content-grid[data-v-d00cc40d]{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px}.card[data-v-d00cc40d]{grid-column:span 6;min-height:240px;padding:18px;border:1px solid var(--line);border-radius:var(--card-radius);background:#ffffffe6;box-shadow:var(--shadow)}.card-summary[data-v-d00cc40d],.card-bus[data-v-d00cc40d],.card-chat[data-v-d00cc40d],.card-flow[data-v-d00cc40d],.card-anomalies[data-v-d00cc40d]{grid-column:span 6}.card-flow[data-v-d00cc40d]{grid-column:span 12}.card-head[data-v-d00cc40d]{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:14px}.card-head-actions[data-v-d00cc40d]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.card-head h2[data-v-d00cc40d]{margin:0;font-size:18px}.summary-pre[data-v-d00cc40d],.chat-log[data-v-d00cc40d]{margin:0;padding:14px;white-space:pre-wrap;word-break:break-word;font-family:JetBrains Mono,SFMono-Regular,monospace;font-size:12px;line-height:1.5}.metric-grid[data-v-d00cc40d]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px}.metric[data-v-d00cc40d]{padding:12px;border-radius:16px;background:var(--panel-soft)}.metric span[data-v-d00cc40d]{display:block;margin-bottom:6px;color:var(--muted);font-size:12px;font-weight:700}.metric strong[data-v-d00cc40d]{font-size:20px}.rank-list[data-v-d00cc40d],.event-list[data-v-d00cc40d],.anomaly-list[data-v-d00cc40d]{margin:0;padding:0;list-style:none}.rank-row[data-v-d00cc40d],.event-row[data-v-d00cc40d]{display:grid;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid rgba(98,87,142,.14)}.rank-row[data-v-d00cc40d]{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) auto}.event-row[data-v-d00cc40d]{grid-template-columns:minmax(0,1fr) minmax(0,1.6fr) auto}.rank-title[data-v-d00cc40d],.event-name[data-v-d00cc40d]{font-weight:800}.rank-label[data-v-d00cc40d]{color:var(--muted);font-size:12px}.event-bar[data-v-d00cc40d]{height:10px;overflow:hidden;border-radius:999px;background:#7a68d81f}.event-bar-fill[data-v-d00cc40d]{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),#4bbf77)}.bus-track[data-v-d00cc40d]{position:relative;height:18px;margin-top:16px;overflow:hidden;border:1px solid rgba(98,87,142,.2);border-radius:999px;background:linear-gradient(180deg,#f6f3ff,#efebfb)}.bus-segment[data-v-d00cc40d]{position:absolute;top:0;bottom:0}.segment-connected[data-v-d00cc40d]{background:linear-gradient(90deg,#4ad06d,#38c45f)}.segment-disconnected[data-v-d00cc40d]{background:linear-gradient(90deg,#eb6a74,#d94b55)}.bus-scale[data-v-d00cc40d]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px;color:var(--muted);font-size:12px;font-weight:700}.bus-scale span[data-v-d00cc40d]:nth-child(2){text-align:center}.bus-scale span[data-v-d00cc40d]:nth-child(3){text-align:right}.bus-note[data-v-d00cc40d],.flow-note[data-v-d00cc40d],.empty-state[data-v-d00cc40d]{color:var(--muted);line-height:1.5}.flow-toolbar[data-v-d00cc40d]{display:grid;grid-template-columns:120px minmax(180px,1fr) minmax(220px,1.2fr);gap:12px;align-items:start}.flow-field[data-v-d00cc40d]{display:flex;flex-direction:column;gap:6px;color:var(--muted);font-size:12px;font-weight:700}.flow-field input[data-v-d00cc40d],.flow-field select[data-v-d00cc40d]{border:1px solid var(--line);border-radius:14px;background:#ffffffe0;color:var(--text);padding:10px 12px}.flow-field select[data-v-d00cc40d]{min-height:128px}.flow-legend[data-v-d00cc40d]{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center;padding:10px 0 0;color:var(--muted);font-size:12px;font-weight:700}.legend-line[data-v-d00cc40d],.legend-dot[data-v-d00cc40d]{display:inline-block;vertical-align:middle;margin-right:6px}.legend-line[data-v-d00cc40d]{width:18px;border-top:3px solid currentColor}.legend-write[data-v-d00cc40d]{color:#7a68d8}.legend-response[data-v-d00cc40d]{color:#46b86d}.legend-read[data-v-d00cc40d]{color:#d99a34}.legend-repeat[data-v-d00cc40d]{color:#c34747}.legend-dot[data-v-d00cc40d]{width:10px;height:10px;border-radius:50%}.legend-anomaly[data-v-d00cc40d]{background:#f08f92}.legend-external[data-v-d00cc40d]{background:#f5d9a2}.flow-frame[data-v-d00cc40d]{margin-top:16px;overflow:auto;border:1px solid var(--line);border-radius:20px;background:linear-gradient(180deg,#fffffffa,#f8f5fff5)}.card-flow.is-fullscreen[data-v-d00cc40d]{width:100%;height:100%;margin:0;padding:18px;border-radius:0;background:#fffffffa;overflow:auto}.card-flow.is-fullscreen .flow-frame[data-v-d00cc40d]{height:calc(100vh - 260px)}.card-flow.is-fullscreen .flow-svg[data-v-d00cc40d]{min-height:calc(100vh - 260px)}.flow-svg[data-v-d00cc40d]{width:100%;min-width:1180px;min-height:420px;display:block}.flow-empty[data-v-d00cc40d]{padding:24px}.flow-edge[data-v-d00cc40d]{fill:none;stroke-linecap:round;vector-effect:non-scaling-stroke}.flow-edge-active[data-v-d00cc40d]{stroke-dasharray:10 7;animation:graph-flow-d00cc40d 1.25s linear infinite}.flow-edge-idle[data-v-d00cc40d]{stroke-dasharray:8 8;animation:none}@keyframes graph-flow-d00cc40d{0%{stroke-dashoffset:0}to{stroke-dashoffset:-34}}.flow-node circle[data-v-d00cc40d]{fill:#edf9ef;stroke:#4caf66;stroke-width:2}.flow-node.is-anomaly circle[data-v-d00cc40d]{fill:#fff1f1;stroke:#e53935}.flow-node.is-external circle[data-v-d00cc40d]{fill:#fff8ea;stroke:#c98a1a;stroke-dasharray:4 3}.flow-node.is-idle circle[data-v-d00cc40d]{opacity:.7}.node-label[data-v-d00cc40d],.node-subtitle[data-v-d00cc40d],.node-payload[data-v-d00cc40d],.node-badge[data-v-d00cc40d]{text-anchor:middle;dominant-baseline:middle}.node-label[data-v-d00cc40d]{fill:#2f7f48;font-size:12px;font-weight:800}.flow-node.is-external .node-label[data-v-d00cc40d]{fill:#9a6b24}.node-subtitle[data-v-d00cc40d]{fill:#665f86;font-size:10px}.node-payload[data-v-d00cc40d]{fill:#645d84;font-size:9px;font-family:JetBrains Mono,SFMono-Regular,monospace}.node-badge[data-v-d00cc40d]{fill:#b3261e;font-size:9px;font-weight:800}.anomaly-list[data-v-d00cc40d]{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}.anomaly-card[data-v-d00cc40d]{padding:14px;border-left:4px solid var(--warn-border);border-radius:18px;background:var(--warn-bg)}.anomaly-head[data-v-d00cc40d]{display:flex;justify-content:space-between;gap:10px;align-items:baseline}.anomaly-time[data-v-d00cc40d]{margin:8px 0 10px;color:var(--muted);font-size:12px}.anomaly-card pre[data-v-d00cc40d]{margin:0;padding:12px;white-space:pre-wrap;word-break:break-word;font-size:12px}.chat-log[data-v-d00cc40d]{min-height:280px}.ask-row[data-v-d00cc40d]{margin-bottom:12px}.ask-input[data-v-d00cc40d]{flex:1 1 260px;min-width:0;border:1px solid var(--line);border-radius:999px;background:#ffffffe0;color:var(--text);padding:11px 14px}.chat-message[data-v-d00cc40d]{margin-bottom:12px;padding:12px;border-radius:16px}.chat-message pre[data-v-d00cc40d]{margin:0;white-space:pre-wrap;word-break:break-word;font-family:inherit}.chat-user[data-v-d00cc40d]{background:#7a68d81a}.chat-assistant[data-v-d00cc40d]{background:#5bbf731f}.chat-error[data-v-d00cc40d]{background:var(--err-bg)}.chat-pending[data-v-d00cc40d]{background:#62578e14;color:var(--muted)}[data-v-d00cc40d] .chat-svg-wrap{margin-top:10px;overflow:auto;border:1px solid rgba(122,104,216,.25);border-radius:14px;background:#fff;padding:8px}[data-v-d00cc40d] .chat-svg-wrap svg{width:100%;height:auto;display:block}[data-v-d00cc40d] .chat-table-wrap{overflow:auto}[data-v-d00cc40d] .chat-table-wrap table,[data-v-d00cc40d] table{width:100%;border-collapse:collapse;margin-top:8px}[data-v-d00cc40d] th,[data-v-d00cc40d] td{padding:6px 8px;border:1px solid rgba(98,87,142,.16)}@media(max-width:1100px){.card[data-v-d00cc40d],.card-summary[data-v-d00cc40d],.card-bus[data-v-d00cc40d],.card-chat[data-v-d00cc40d],.card-flow[data-v-d00cc40d],.card-anomalies[data-v-d00cc40d]{grid-column:span 12}}@media(max-width:720px){.page-shell[data-v-d00cc40d]{width:min(100% - 16px,1440px);margin-top:8px}.topbar[data-v-d00cc40d],.card[data-v-d00cc40d]{padding:14px;border-radius:20px}.rank-row[data-v-d00cc40d],.event-row[data-v-d00cc40d],.metric-grid[data-v-d00cc40d],.flow-toolbar[data-v-d00cc40d]{grid-template-columns:1fr}.statusbar[data-v-d00cc40d]{align-items:flex-start}}:root{color-scheme:light;--bg: #f4f1ff;--panel: #ffffff;--panel-soft: #f8f5ff;--text: #2b2446;--muted: #655f80;--line: rgba(98, 87, 142, .24);--accent: #7a68d8;--accent-soft: #ece8ff;--ok-bg: #edf9ef;--ok-border: #5bbf73;--err-bg: #ffe9ea;--err-border: #d95b63;--warn-bg: #fff3df;--warn-border: #d99a34;--card-radius: 18px;--shadow: 0 12px 40px rgba(43, 36, 70, .08);font-family:Manrope,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#app{min-height:100%;margin:0}body{background:radial-gradient(circle at top left,rgba(122,104,216,.16),transparent 30%),radial-gradient(circle at top right,rgba(91,191,115,.14),transparent 24%),linear-gradient(180deg,#f6f2ff,#f5f8ff 52%,#f7fcf8);color:var(--text)}button,input,select,textarea{font:inherit}a{color:inherit}
1
+ .page-shell[data-v-faa9aec2]{width:min(1660px,calc(100% - 18px));margin:14px auto 28px}.topbar[data-v-faa9aec2]{margin-bottom:18px;padding:22px;border:1px solid var(--line);border-radius:24px;background:#ffffffe0;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.brand[data-v-faa9aec2]{margin-bottom:18px}.eyebrow[data-v-faa9aec2]{margin:0 0 6px;color:var(--accent);font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.brand h1[data-v-faa9aec2]{margin:0;font-size:clamp(28px,4vw,40px);line-height:1}.subhead[data-v-faa9aec2]{max-width:860px;margin:10px 0 0;color:var(--muted);font-size:14px;line-height:1.5}.toolbar[data-v-faa9aec2],.statusbar[data-v-faa9aec2],.theme-strip[data-v-faa9aec2],.checkbox[data-v-faa9aec2],.pill-row[data-v-faa9aec2],.preset-row[data-v-faa9aec2],.ask-row[data-v-faa9aec2]{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.toolbar[data-v-faa9aec2]{margin-bottom:12px}.theme-button[data-v-faa9aec2],.primary-button[data-v-faa9aec2],.preset-button[data-v-faa9aec2],.primary-link[data-v-faa9aec2],.secondary-button[data-v-faa9aec2]{border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--text);text-decoration:none;font-size:13px;font-weight:700;padding:10px 14px;transition:.18s ease}.theme-button.active[data-v-faa9aec2],.primary-button[data-v-faa9aec2],.primary-link[data-v-faa9aec2]{border-color:transparent;background:linear-gradient(135deg,var(--accent),#4bbf77);color:#fff}.theme-button[data-v-faa9aec2]:hover,.preset-button[data-v-faa9aec2]:hover,.secondary-button[data-v-faa9aec2]:hover{background:var(--accent-soft);border-color:#7a68d866}.primary-button[data-v-faa9aec2]:disabled,.preset-button[data-v-faa9aec2]:disabled{opacity:.6;cursor:not-allowed}.node-select[data-v-faa9aec2]{min-width:min(360px,100%)}.node-select[data-v-faa9aec2],.checkbox[data-v-faa9aec2],.summary-pre[data-v-faa9aec2],.chat-log[data-v-faa9aec2],.anomaly-card pre[data-v-faa9aec2]{border:1px solid var(--line);border-radius:16px;background:#ffffffe0}.node-select[data-v-faa9aec2]{padding:10px 12px;color:var(--text)}.checkbox[data-v-faa9aec2]{padding:10px 12px;gap:8px}.statusbar[data-v-faa9aec2]{justify-content:space-between}.status-pill[data-v-faa9aec2],.meta-chip[data-v-faa9aec2],.pill[data-v-faa9aec2]{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:7px 12px;font-size:12px;font-weight:800}.status-pill[data-v-faa9aec2],.meta-chip[data-v-faa9aec2],.pill.neutral[data-v-faa9aec2]{background:var(--accent-soft);color:var(--text)}.status-pill.error[data-v-faa9aec2],.pill.danger[data-v-faa9aec2]{background:var(--err-bg);color:#a4333a}.pill.success[data-v-faa9aec2]{background:var(--ok-bg);color:#1b7d36}.status-detail[data-v-faa9aec2]{color:var(--muted);font-size:12px;font-weight:700}.content-grid[data-v-faa9aec2]{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px}.card[data-v-faa9aec2]{grid-column:span 6;min-height:240px;padding:18px;border:1px solid var(--line);border-radius:var(--card-radius);background:#ffffffe6;box-shadow:var(--shadow)}.card-summary[data-v-faa9aec2],.card-bus[data-v-faa9aec2],.card-chat[data-v-faa9aec2],.card-flow[data-v-faa9aec2],.card-anomalies[data-v-faa9aec2]{grid-column:span 6}.card-flow[data-v-faa9aec2]{grid-column:span 12}.card-head[data-v-faa9aec2]{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:14px}.card-head-actions[data-v-faa9aec2]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.card-head h2[data-v-faa9aec2]{margin:0;font-size:18px}.summary-pre[data-v-faa9aec2],.chat-log[data-v-faa9aec2]{margin:0;padding:14px;white-space:pre-wrap;word-break:break-word;font-family:JetBrains Mono,SFMono-Regular,monospace;font-size:12px;line-height:1.5}.metric-grid[data-v-faa9aec2]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px}.metric[data-v-faa9aec2]{padding:12px;border-radius:16px;background:var(--panel-soft)}.metric span[data-v-faa9aec2]{display:block;margin-bottom:6px;color:var(--muted);font-size:12px;font-weight:700}.metric strong[data-v-faa9aec2]{font-size:20px}.rank-list[data-v-faa9aec2],.event-list[data-v-faa9aec2],.anomaly-list[data-v-faa9aec2]{margin:0;padding:0;list-style:none}.rank-row[data-v-faa9aec2],.event-row[data-v-faa9aec2]{display:grid;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid rgba(98,87,142,.14)}.rank-row[data-v-faa9aec2]{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) auto}.event-row[data-v-faa9aec2]{grid-template-columns:minmax(0,1fr) minmax(0,1.6fr) auto}.rank-title[data-v-faa9aec2],.event-name[data-v-faa9aec2]{font-weight:800}.rank-label[data-v-faa9aec2]{color:var(--muted);font-size:12px}.event-bar[data-v-faa9aec2]{height:10px;overflow:hidden;border-radius:999px;background:#7a68d81f}.event-bar-fill[data-v-faa9aec2]{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),#4bbf77)}.bus-track[data-v-faa9aec2]{position:relative;height:18px;margin-top:16px;overflow:hidden;border:1px solid rgba(98,87,142,.2);border-radius:999px;background:linear-gradient(180deg,#f6f3ff,#efebfb)}.bus-segment[data-v-faa9aec2]{position:absolute;top:0;bottom:0}.segment-connected[data-v-faa9aec2]{background:linear-gradient(90deg,#4ad06d,#38c45f)}.segment-disconnected[data-v-faa9aec2]{background:linear-gradient(90deg,#eb6a74,#d94b55)}.bus-scale[data-v-faa9aec2]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px;color:var(--muted);font-size:12px;font-weight:700}.bus-scale span[data-v-faa9aec2]:nth-child(2){text-align:center}.bus-scale span[data-v-faa9aec2]:nth-child(3){text-align:right}.bus-note[data-v-faa9aec2],.flow-note[data-v-faa9aec2],.empty-state[data-v-faa9aec2]{color:var(--muted);line-height:1.5}.flow-toolbar[data-v-faa9aec2]{display:grid;grid-template-columns:120px minmax(180px,1fr) minmax(220px,1.2fr) auto;gap:12px;align-items:start}.flow-field[data-v-faa9aec2]{display:flex;flex-direction:column;gap:6px;color:var(--muted);font-size:12px;font-weight:700}.flow-field input[data-v-faa9aec2],.flow-field select[data-v-faa9aec2]{border:1px solid var(--line);border-radius:14px;background:#ffffffe0;color:var(--text);padding:10px 12px}.flow-field select[data-v-faa9aec2]{min-height:128px}.flow-legend[data-v-faa9aec2]{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center;padding:10px 0 0;color:var(--muted);font-size:12px;font-weight:700}.flow-toggle[data-v-faa9aec2]{align-self:end;min-height:44px;white-space:nowrap}.legend-line[data-v-faa9aec2],.legend-dot[data-v-faa9aec2]{display:inline-block;vertical-align:middle;margin-right:6px}.legend-line[data-v-faa9aec2]{width:18px;border-top:3px solid currentColor}.legend-write[data-v-faa9aec2]{color:#7a68d8}.legend-response[data-v-faa9aec2]{color:#46b86d}.legend-read[data-v-faa9aec2]{color:#d99a34}.legend-repeat[data-v-faa9aec2]{color:#c34747}.legend-dot[data-v-faa9aec2]{width:10px;height:10px;border-radius:50%}.legend-anomaly[data-v-faa9aec2]{background:#f08f92}.legend-external[data-v-faa9aec2]{background:#f5d9a2}.flow-frame[data-v-faa9aec2]{margin-top:16px;overflow:auto;border:1px solid var(--line);border-radius:20px;background:linear-gradient(180deg,#fffffffa,#f8f5fff5)}.card-flow.is-fullscreen[data-v-faa9aec2]{width:100%;height:100%;margin:0;padding:18px;border-radius:0;background:#fffffffa;overflow:auto}.card-flow.is-fullscreen .flow-frame[data-v-faa9aec2]{height:calc(100vh - 260px)}.card-flow.is-fullscreen .flow-svg[data-v-faa9aec2]{min-height:calc(100vh - 260px)}.flow-svg[data-v-faa9aec2]{width:100%;min-width:1180px;min-height:420px;display:block}.flow-empty[data-v-faa9aec2]{padding:24px}.flow-edge[data-v-faa9aec2]{fill:none;stroke-linecap:round;vector-effect:non-scaling-stroke}.flow-edge-active[data-v-faa9aec2]{stroke-dasharray:10 7;animation:graph-flow-faa9aec2 1.25s linear infinite}.flow-edge-idle[data-v-faa9aec2]{stroke-dasharray:8 8;animation:none}@keyframes graph-flow-faa9aec2{0%{stroke-dashoffset:0}to{stroke-dashoffset:-34}}.flow-node circle[data-v-faa9aec2]{fill:#edf9ef;stroke:#4caf66;stroke-width:2}.flow-node.is-anomaly circle[data-v-faa9aec2]{fill:#fff1f1;stroke:#e53935}.flow-node.is-external circle[data-v-faa9aec2]{fill:#fff8ea;stroke:#c98a1a;stroke-dasharray:4 3}.flow-node.is-idle circle[data-v-faa9aec2]{opacity:.7}.node-label[data-v-faa9aec2],.node-subtitle[data-v-faa9aec2],.node-payload[data-v-faa9aec2],.node-badge[data-v-faa9aec2]{text-anchor:middle;dominant-baseline:middle}.node-label[data-v-faa9aec2]{fill:#2f7f48;font-size:12px;font-weight:800}.flow-node.is-external .node-label[data-v-faa9aec2]{fill:#9a6b24}.node-subtitle[data-v-faa9aec2]{fill:#665f86;font-size:10px}.node-payload[data-v-faa9aec2]{fill:#645d84;font-size:9px;font-family:JetBrains Mono,SFMono-Regular,monospace}.node-badge[data-v-faa9aec2]{fill:#b3261e;font-size:9px;font-weight:800}.anomaly-list[data-v-faa9aec2]{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}.anomaly-card[data-v-faa9aec2]{padding:14px;border-left:4px solid var(--warn-border);border-radius:18px;background:var(--warn-bg)}.anomaly-head[data-v-faa9aec2]{display:flex;justify-content:space-between;gap:10px;align-items:baseline}.anomaly-time[data-v-faa9aec2]{margin:8px 0 10px;color:var(--muted);font-size:12px}.anomaly-card pre[data-v-faa9aec2]{margin:0;padding:12px;white-space:pre-wrap;word-break:break-word;font-size:12px}.chat-log[data-v-faa9aec2]{min-height:280px}.ask-row[data-v-faa9aec2]{margin-bottom:12px}.ask-input[data-v-faa9aec2]{flex:1 1 260px;min-width:0;border:1px solid var(--line);border-radius:999px;background:#ffffffe0;color:var(--text);padding:11px 14px}.chat-message[data-v-faa9aec2]{margin-bottom:12px;padding:12px;border-radius:16px}.chat-message pre[data-v-faa9aec2]{margin:0;white-space:pre-wrap;word-break:break-word;font-family:inherit}.chat-user[data-v-faa9aec2]{background:#7a68d81a}.chat-assistant[data-v-faa9aec2]{background:#5bbf731f}.chat-error[data-v-faa9aec2]{background:var(--err-bg)}.chat-pending[data-v-faa9aec2]{background:#62578e14;color:var(--muted)}[data-v-faa9aec2] .chat-svg-wrap{margin-top:10px;overflow:auto;border:1px solid rgba(122,104,216,.25);border-radius:14px;background:#fff;padding:8px}[data-v-faa9aec2] .chat-svg-wrap svg{width:100%;height:auto;display:block}[data-v-faa9aec2] .chat-table-wrap{overflow:auto}[data-v-faa9aec2] .chat-table-wrap table,[data-v-faa9aec2] table{width:100%;border-collapse:collapse;margin-top:8px}[data-v-faa9aec2] th,[data-v-faa9aec2] td{padding:6px 8px;border:1px solid rgba(98,87,142,.16)}@media(max-width:1100px){.card[data-v-faa9aec2],.card-summary[data-v-faa9aec2],.card-bus[data-v-faa9aec2],.card-chat[data-v-faa9aec2],.card-flow[data-v-faa9aec2],.card-anomalies[data-v-faa9aec2]{grid-column:span 12}}@media(max-width:720px){.page-shell[data-v-faa9aec2]{width:min(100% - 16px,1440px);margin-top:8px}.topbar[data-v-faa9aec2],.card[data-v-faa9aec2]{padding:14px;border-radius:20px}.rank-row[data-v-faa9aec2],.event-row[data-v-faa9aec2],.metric-grid[data-v-faa9aec2],.flow-toolbar[data-v-faa9aec2]{grid-template-columns:1fr}.statusbar[data-v-faa9aec2]{align-items:flex-start}}:root{color-scheme:light;--bg: #f4f1ff;--panel: #ffffff;--panel-soft: #f8f5ff;--text: #2b2446;--muted: #655f80;--line: rgba(98, 87, 142, .24);--accent: #7a68d8;--accent-soft: #ece8ff;--ok-bg: #edf9ef;--ok-border: #5bbf73;--err-bg: #ffe9ea;--err-border: #d95b63;--warn-bg: #fff3df;--warn-border: #d99a34;--card-radius: 18px;--shadow: 0 12px 40px rgba(43, 36, 70, .08);font-family:Manrope,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#app{min-height:100%;margin:0}body{background:radial-gradient(circle at top left,rgba(122,104,216,.16),transparent 30%),radial-gradient(circle at top right,rgba(91,191,115,.14),transparent 24%),linear-gradient(180deg,#f6f2ff,#f5f8ff 52%,#f7fcf8);color:var(--text)}button,input,select,textarea{font:inherit}a{color:inherit}
@@ -1,3 +1,3 @@
1
- (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))n(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&n(i)}).observe(document,{childList:!0,subtree:!0});function s(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function n(r){if(r.ep)return;r.ep=!0;const o=s(r);fetch(r.href,o)}})();function _n(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const ie={},Gt=[],st=()=>{},Ir=()=>!1,Ls=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),vn=e=>e.startsWith("onUpdate:"),xe=Object.assign,wn=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},Uo=Object.prototype.hasOwnProperty,ee=(e,t)=>Uo.call(e,t),D=Array.isArray,qt=e=>_s(e)==="[object Map]",Zt=e=>_s(e)==="[object Set]",Bn=e=>_s(e)==="[object Date]",G=e=>typeof e=="function",ge=e=>typeof e=="string",rt=e=>typeof e=="symbol",re=e=>e!==null&&typeof e=="object",$r=e=>(re(e)||G(e))&&G(e.then)&&G(e.catch),Or=Object.prototype.toString,_s=e=>Or.call(e),Bo=e=>_s(e).slice(8,-1),Pr=e=>_s(e)==="[object Object]",Sn=e=>ge(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,os=_n(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Hs=e=>{const t=Object.create(null);return(s=>t[s]||(t[s]=e(s)))},Wo=/-\w/g,Ue=Hs(e=>e.replace(Wo,t=>t.slice(1).toUpperCase())),Go=/\B([A-Z])/g,Mt=Hs(e=>e.replace(Go,"-$1").toLowerCase()),kr=Hs(e=>e.charAt(0).toUpperCase()+e.slice(1)),Ys=Hs(e=>e?`on${kr(e)}`:""),tt=(e,t)=>!Object.is(e,t),Ms=(e,...t)=>{for(let s=0;s<e.length;s++)e[s](...t)},Rr=(e,t,s,n=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:s})},js=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Wn;const Vs=()=>Wn||(Wn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function ds(e){if(D(e)){const t={};for(let s=0;s<e.length;s++){const n=e[s],r=ge(n)?Xo(n):ds(n);if(r)for(const o in r)t[o]=r[o]}return t}else if(ge(e)||re(e))return e}const qo=/;(?![^(]*\))/g,zo=/:([^]+)/,Jo=/\/\*[^]*?\*\//g;function Xo(e){const t={};return e.replace(Jo,"").split(qo).forEach(s=>{if(s){const n=s.split(zo);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function Qe(e){let t="";if(ge(e))t=e;else if(D(e))for(let s=0;s<e.length;s++){const n=Qe(e[s]);n&&(t+=n+" ")}else if(re(e))for(const s in e)e[s]&&(t+=s+" ");return t.trim()}const Yo="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Qo=_n(Yo);function Fr(e){return!!e||e===""}function Zo(e,t){if(e.length!==t.length)return!1;let s=!0;for(let n=0;s&&n<e.length;n++)s=es(e[n],t[n]);return s}function es(e,t){if(e===t)return!0;let s=Bn(e),n=Bn(t);if(s||n)return s&&n?e.getTime()===t.getTime():!1;if(s=rt(e),n=rt(t),s||n)return e===t;if(s=D(e),n=D(t),s||n)return s&&n?Zo(e,t):!1;if(s=re(e),n=re(t),s||n){if(!s||!n)return!1;const r=Object.keys(e).length,o=Object.keys(t).length;if(r!==o)return!1;for(const i in e){const l=e.hasOwnProperty(i),u=t.hasOwnProperty(i);if(l&&!u||!l&&u||!es(e[i],t[i]))return!1}}return String(e)===String(t)}function xn(e,t){return e.findIndex(s=>es(s,t))}const Dr=e=>!!(e&&e.__v_isRef===!0),V=e=>ge(e)?e:e==null?"":D(e)||re(e)&&(e.toString===Or||!G(e.toString))?Dr(e)?V(e.value):JSON.stringify(e,Lr,2):String(e),Lr=(e,t)=>Dr(t)?Lr(e,t.value):qt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[n,r],o)=>(s[Qs(n,o)+" =>"]=r,s),{})}:Zt(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>Qs(s))}:rt(t)?Qs(t):re(t)&&!D(t)&&!Pr(t)?String(t):t,Qs=(e,t="")=>{var s;return rt(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};let $e;class ei{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.__v_skip=!0,this.parent=$e,!t&&$e&&(this.index=($e.scopes||($e.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t<s;t++)this.scopes[t].pause();for(t=0,s=this.effects.length;t<s;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t<s;t++)this.scopes[t].resume();for(t=0,s=this.effects.length;t<s;t++)this.effects[t].resume()}}run(t){if(this._active){const s=$e;try{return $e=this,t()}finally{$e=s}}}on(){++this._on===1&&(this.prevScope=$e,$e=this)}off(){this._on>0&&--this._on===0&&($e=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let s,n;for(s=0,n=this.effects.length;s<n;s++)this.effects[s].stop();for(this.effects.length=0,s=0,n=this.cleanups.length;s<n;s++)this.cleanups[s]();if(this.cleanups.length=0,this.scopes){for(s=0,n=this.scopes.length;s<n;s++)this.scopes[s].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const r=this.parent.scopes.pop();r&&r!==this&&(this.parent.scopes[this.index]=r,r.index=this.index)}this.parent=void 0}}}function ti(){return $e}let ce;const Zs=new WeakSet;class Hr{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,$e&&$e.active&&$e.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Zs.has(this)&&(Zs.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Vr(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,Gn(this),Kr(this);const t=ce,s=Be;ce=this,Be=!0;try{return this.fn()}finally{Ur(this),ce=t,Be=s,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Nn(t);this.deps=this.depsTail=void 0,Gn(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Zs.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){cn(this)&&this.run()}get dirty(){return cn(this)}}let jr=0,is,ls;function Vr(e,t=!1){if(e.flags|=8,t){e.next=ls,ls=e;return}e.next=is,is=e}function An(){jr++}function En(){if(--jr>0)return;if(ls){let t=ls;for(ls=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;is;){let t=is;for(is=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=s}}if(e)throw e}function Kr(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Ur(e){let t,s=e.depsTail,n=s;for(;n;){const r=n.prevDep;n.version===-1?(n===s&&(s=r),Nn(n),si(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=r}e.deps=t,e.depsTail=s}function cn(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Br(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Br(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===hs)||(e.globalVersion=hs,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!cn(e))))return;e.flags|=2;const t=e.dep,s=ce,n=Be;ce=e,Be=!0;try{Kr(e);const r=e.fn(e._value);(t.version===0||tt(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{ce=s,Be=n,Ur(e),e.flags&=-3}}function Nn(e,t=!1){const{dep:s,prevSub:n,nextSub:r}=e;if(n&&(n.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=n,e.nextSub=void 0),s.subs===e&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let o=s.computed.deps;o;o=o.nextDep)Nn(o,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function si(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let Be=!0;const Wr=[];function yt(){Wr.push(Be),Be=!1}function bt(){const e=Wr.pop();Be=e===void 0?!0:e}function Gn(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=ce;ce=void 0;try{t()}finally{ce=s}}}let hs=0;class ni{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Mn{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!ce||!Be||ce===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==ce)s=this.activeLink=new ni(ce,this),ce.deps?(s.prevDep=ce.depsTail,ce.depsTail.nextDep=s,ce.depsTail=s):ce.deps=ce.depsTail=s,Gr(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const n=s.nextDep;n.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=n),s.prevDep=ce.depsTail,s.nextDep=void 0,ce.depsTail.nextDep=s,ce.depsTail=s,ce.deps===s&&(ce.deps=n)}return s}trigger(t){this.version++,hs++,this.notify(t)}notify(t){An();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{En()}}}function Gr(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)Gr(n)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const an=new WeakMap,Rt=Symbol(""),un=Symbol(""),ps=Symbol("");function we(e,t,s){if(Be&&ce){let n=an.get(e);n||an.set(e,n=new Map);let r=n.get(s);r||(n.set(s,r=new Mn),r.map=n,r.key=s),r.track()}}function pt(e,t,s,n,r,o){const i=an.get(e);if(!i){hs++;return}const l=u=>{u&&u.trigger()};if(An(),t==="clear")i.forEach(l);else{const u=D(e),g=u&&Sn(s);if(u&&s==="length"){const h=Number(n);i.forEach((b,T)=>{(T==="length"||T===ps||!rt(T)&&T>=h)&&l(b)})}else switch((s!==void 0||i.has(void 0))&&l(i.get(s)),g&&l(i.get(ps)),t){case"add":u?g&&l(i.get("length")):(l(i.get(Rt)),qt(e)&&l(i.get(un)));break;case"delete":u||(l(i.get(Rt)),qt(e)&&l(i.get(un)));break;case"set":qt(e)&&l(i.get(Rt));break}}En()}function Ut(e){const t=Z(e);return t===e?t:(we(t,"iterate",ps),He(e)?t:t.map(We))}function Ks(e){return we(e=Z(e),"iterate",ps),e}function Ze(e,t){return _t(e)?Xt(Ft(e)?We(t):t):We(t)}const ri={__proto__:null,[Symbol.iterator](){return en(this,Symbol.iterator,e=>Ze(this,e))},concat(...e){return Ut(this).concat(...e.map(t=>D(t)?Ut(t):t))},entries(){return en(this,"entries",e=>(e[1]=Ze(this,e[1]),e))},every(e,t){return ft(this,"every",e,t,void 0,arguments)},filter(e,t){return ft(this,"filter",e,t,s=>s.map(n=>Ze(this,n)),arguments)},find(e,t){return ft(this,"find",e,t,s=>Ze(this,s),arguments)},findIndex(e,t){return ft(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return ft(this,"findLast",e,t,s=>Ze(this,s),arguments)},findLastIndex(e,t){return ft(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return ft(this,"forEach",e,t,void 0,arguments)},includes(...e){return tn(this,"includes",e)},indexOf(...e){return tn(this,"indexOf",e)},join(e){return Ut(this).join(e)},lastIndexOf(...e){return tn(this,"lastIndexOf",e)},map(e,t){return ft(this,"map",e,t,void 0,arguments)},pop(){return ss(this,"pop")},push(...e){return ss(this,"push",e)},reduce(e,...t){return qn(this,"reduce",e,t)},reduceRight(e,...t){return qn(this,"reduceRight",e,t)},shift(){return ss(this,"shift")},some(e,t){return ft(this,"some",e,t,void 0,arguments)},splice(...e){return ss(this,"splice",e)},toReversed(){return Ut(this).toReversed()},toSorted(e){return Ut(this).toSorted(e)},toSpliced(...e){return Ut(this).toSpliced(...e)},unshift(...e){return ss(this,"unshift",e)},values(){return en(this,"values",e=>Ze(this,e))}};function en(e,t,s){const n=Ks(e),r=n[t]();return n!==e&&!He(e)&&(r._next=r.next,r.next=()=>{const o=r._next();return o.done||(o.value=s(o.value)),o}),r}const oi=Array.prototype;function ft(e,t,s,n,r,o){const i=Ks(e),l=i!==e&&!He(e),u=i[t];if(u!==oi[t]){const b=u.apply(e,o);return l?We(b):b}let g=s;i!==e&&(l?g=function(b,T){return s.call(this,Ze(e,b),T,e)}:s.length>2&&(g=function(b,T){return s.call(this,b,T,e)}));const h=u.call(i,g,n);return l&&r?r(h):h}function qn(e,t,s,n){const r=Ks(e),o=r!==e&&!He(e);let i=s,l=!1;r!==e&&(o?(l=n.length===0,i=function(g,h,b){return l&&(l=!1,g=Ze(e,g)),s.call(this,g,Ze(e,h),b,e)}):s.length>3&&(i=function(g,h,b){return s.call(this,g,h,b,e)}));const u=r[t](i,...n);return l?Ze(e,u):u}function tn(e,t,s){const n=Z(e);we(n,"iterate",ps);const r=n[t](...s);return(r===-1||r===!1)&&In(s[0])?(s[0]=Z(s[0]),n[t](...s)):r}function ss(e,t,s=[]){yt(),An();const n=Z(e)[t].apply(e,s);return En(),bt(),n}const ii=_n("__proto__,__v_isRef,__isVue"),qr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(rt));function li(e){rt(e)||(e=String(e));const t=Z(this);return we(t,"has",e),t.hasOwnProperty(e)}class zr{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,n){if(s==="__v_skip")return t.__v_skip;const r=this._isReadonly,o=this._isShallow;if(s==="__v_isReactive")return!r;if(s==="__v_isReadonly")return r;if(s==="__v_isShallow")return o;if(s==="__v_raw")return n===(r?o?yi:Qr:o?Yr:Xr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const i=D(t);if(!r){let u;if(i&&(u=ri[s]))return u;if(s==="hasOwnProperty")return li}const l=Reflect.get(t,s,Se(t)?t:n);if((rt(s)?qr.has(s):ii(s))||(r||we(t,"get",s),o))return l;if(Se(l)){const u=i&&Sn(s)?l:l.value;return r&&re(u)?dn(u):u}return re(l)?r?dn(l):Us(l):l}}class Jr extends zr{constructor(t=!1){super(!1,t)}set(t,s,n,r){let o=t[s];const i=D(t)&&Sn(s);if(!this._isShallow){const g=_t(o);if(!He(n)&&!_t(n)&&(o=Z(o),n=Z(n)),!i&&Se(o)&&!Se(n))return g||(o.value=n),!0}const l=i?Number(s)<t.length:ee(t,s),u=Reflect.set(t,s,n,Se(t)?t:r);return t===Z(r)&&(l?tt(n,o)&&pt(t,"set",s,n):pt(t,"add",s,n)),u}deleteProperty(t,s){const n=ee(t,s);t[s];const r=Reflect.deleteProperty(t,s);return r&&n&&pt(t,"delete",s,void 0),r}has(t,s){const n=Reflect.has(t,s);return(!rt(s)||!qr.has(s))&&we(t,"has",s),n}ownKeys(t){return we(t,"iterate",D(t)?"length":Rt),Reflect.ownKeys(t)}}class ci extends zr{constructor(t=!1){super(!0,t)}set(t,s){return!0}deleteProperty(t,s){return!0}}const ai=new Jr,ui=new ci,fi=new Jr(!0);const fn=e=>e,As=e=>Reflect.getPrototypeOf(e);function di(e,t,s){return function(...n){const r=this.__v_raw,o=Z(r),i=qt(o),l=e==="entries"||e===Symbol.iterator&&i,u=e==="keys"&&i,g=r[e](...n),h=s?fn:t?Xt:We;return!t&&we(o,"iterate",u?un:Rt),xe(Object.create(g),{next(){const{value:b,done:T}=g.next();return T?{value:b,done:T}:{value:l?[h(b[0]),h(b[1])]:h(b),done:T}}})}}function Es(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function hi(e,t){const s={get(r){const o=this.__v_raw,i=Z(o),l=Z(r);e||(tt(r,l)&&we(i,"get",r),we(i,"get",l));const{has:u}=As(i),g=t?fn:e?Xt:We;if(u.call(i,r))return g(o.get(r));if(u.call(i,l))return g(o.get(l));o!==i&&o.get(r)},get size(){const r=this.__v_raw;return!e&&we(Z(r),"iterate",Rt),r.size},has(r){const o=this.__v_raw,i=Z(o),l=Z(r);return e||(tt(r,l)&&we(i,"has",r),we(i,"has",l)),r===l?o.has(r):o.has(r)||o.has(l)},forEach(r,o){const i=this,l=i.__v_raw,u=Z(l),g=t?fn:e?Xt:We;return!e&&we(u,"iterate",Rt),l.forEach((h,b)=>r.call(o,g(h),g(b),i))}};return xe(s,e?{add:Es("add"),set:Es("set"),delete:Es("delete"),clear:Es("clear")}:{add(r){const o=Z(this),i=As(o),l=Z(r),u=!t&&!He(r)&&!_t(r)?l:r;return i.has.call(o,u)||tt(r,u)&&i.has.call(o,r)||tt(l,u)&&i.has.call(o,l)||(o.add(u),pt(o,"add",u,u)),this},set(r,o){!t&&!He(o)&&!_t(o)&&(o=Z(o));const i=Z(this),{has:l,get:u}=As(i);let g=l.call(i,r);g||(r=Z(r),g=l.call(i,r));const h=u.call(i,r);return i.set(r,o),g?tt(o,h)&&pt(i,"set",r,o):pt(i,"add",r,o),this},delete(r){const o=Z(this),{has:i,get:l}=As(o);let u=i.call(o,r);u||(r=Z(r),u=i.call(o,r)),l&&l.call(o,r);const g=o.delete(r);return u&&pt(o,"delete",r,void 0),g},clear(){const r=Z(this),o=r.size!==0,i=r.clear();return o&&pt(r,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(r=>{s[r]=di(r,e,t)}),s}function Cn(e,t){const s=hi(e,t);return(n,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?n:Reflect.get(ee(s,r)&&r in n?s:n,r,o)}const pi={get:Cn(!1,!1)},gi={get:Cn(!1,!0)},mi={get:Cn(!0,!1)};const Xr=new WeakMap,Yr=new WeakMap,Qr=new WeakMap,yi=new WeakMap;function bi(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function _i(e){return e.__v_skip||!Object.isExtensible(e)?0:bi(Bo(e))}function Us(e){return _t(e)?e:Tn(e,!1,ai,pi,Xr)}function vi(e){return Tn(e,!1,fi,gi,Yr)}function dn(e){return Tn(e,!0,ui,mi,Qr)}function Tn(e,t,s,n,r){if(!re(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=_i(e);if(o===0)return e;const i=r.get(e);if(i)return i;const l=new Proxy(e,o===2?n:s);return r.set(e,l),l}function Ft(e){return _t(e)?Ft(e.__v_raw):!!(e&&e.__v_isReactive)}function _t(e){return!!(e&&e.__v_isReadonly)}function He(e){return!!(e&&e.__v_isShallow)}function In(e){return e?!!e.__v_raw:!1}function Z(e){const t=e&&e.__v_raw;return t?Z(t):e}function wi(e){return!ee(e,"__v_skip")&&Object.isExtensible(e)&&Rr(e,"__v_skip",!0),e}const We=e=>re(e)?Us(e):e,Xt=e=>re(e)?dn(e):e;function Se(e){return e?e.__v_isRef===!0:!1}function zn(e){return Si(e,!1)}function Si(e,t){return Se(e)?e:new xi(e,t)}class xi{constructor(t,s){this.dep=new Mn,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:Z(t),this._value=s?t:We(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,n=this.__v_isShallow||He(t)||_t(t);t=n?t:Z(t),tt(t,s)&&(this._rawValue=t,this._value=n?t:We(t),this.dep.trigger())}}function Ai(e){return Se(e)?e.value:e}const Ei={get:(e,t,s)=>t==="__v_raw"?e:Ai(Reflect.get(e,t,s)),set:(e,t,s,n)=>{const r=e[t];return Se(r)&&!Se(s)?(r.value=s,!0):Reflect.set(e,t,s,n)}};function Zr(e){return Ft(e)?e:new Proxy(e,Ei)}class Ni{constructor(t,s,n){this.fn=t,this.setter=s,this._value=void 0,this.dep=new Mn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=hs-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&ce!==this)return Vr(this,!0),!0}get value(){const t=this.dep.track();return Br(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Mi(e,t,s=!1){let n,r;return G(e)?n=e:(n=e.get,r=e.set),new Ni(n,r,s)}const Ns={},Os=new WeakMap;let kt;function Ci(e,t=!1,s=kt){if(s){let n=Os.get(s);n||Os.set(s,n=[]),n.push(e)}}function Ti(e,t,s=ie){const{immediate:n,deep:r,once:o,scheduler:i,augmentJob:l,call:u}=s,g=k=>r?k:He(k)||r===!1||r===0?gt(k,1):gt(k);let h,b,T,I,Y=!1,H=!1;if(Se(e)?(b=()=>e.value,Y=He(e)):Ft(e)?(b=()=>g(e),Y=!0):D(e)?(H=!0,Y=e.some(k=>Ft(k)||He(k)),b=()=>e.map(k=>{if(Se(k))return k.value;if(Ft(k))return g(k);if(G(k))return u?u(k,2):k()})):G(e)?t?b=u?()=>u(e,2):e:b=()=>{if(T){yt();try{T()}finally{bt()}}const k=kt;kt=h;try{return u?u(e,3,[I]):e(I)}finally{kt=k}}:b=st,t&&r){const k=b,fe=r===!0?1/0:r;b=()=>gt(k(),fe)}const ue=ti(),te=()=>{h.stop(),ue&&ue.active&&wn(ue.effects,h)};if(o&&t){const k=t;t=(...fe)=>{k(...fe),te()}}let K=H?new Array(e.length).fill(Ns):Ns;const se=k=>{if(!(!(h.flags&1)||!h.dirty&&!k))if(t){const fe=h.run();if(r||Y||(H?fe.some((Ge,Ce)=>tt(Ge,K[Ce])):tt(fe,K))){T&&T();const Ge=kt;kt=h;try{const Ce=[fe,K===Ns?void 0:H&&K[0]===Ns?[]:K,I];K=fe,u?u(t,3,Ce):t(...Ce)}finally{kt=Ge}}}else h.run()};return l&&l(se),h=new Hr(b),h.scheduler=i?()=>i(se,!1):se,I=k=>Ci(k,!1,h),T=h.onStop=()=>{const k=Os.get(h);if(k){if(u)u(k,4);else for(const fe of k)fe();Os.delete(h)}},t?n?se(!0):K=h.run():i?i(se.bind(null,!0),!0):h.run(),te.pause=h.pause.bind(h),te.resume=h.resume.bind(h),te.stop=te,te}function gt(e,t=1/0,s){if(t<=0||!re(e)||e.__v_skip||(s=s||new Map,(s.get(e)||0)>=t))return e;if(s.set(e,t),t--,Se(e))gt(e.value,t,s);else if(D(e))for(let n=0;n<e.length;n++)gt(e[n],t,s);else if(Zt(e)||qt(e))e.forEach(n=>{gt(n,t,s)});else if(Pr(e)){for(const n in e)gt(e[n],t,s);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&gt(e[n],t,s)}return e}function vs(e,t,s,n){try{return n?e(...n):e()}catch(r){Bs(r,t,s)}}function ot(e,t,s,n){if(G(e)){const r=vs(e,t,s,n);return r&&$r(r)&&r.catch(o=>{Bs(o,t,s)}),r}if(D(e)){const r=[];for(let o=0;o<e.length;o++)r.push(ot(e[o],t,s,n));return r}}function Bs(e,t,s,n=!0){const r=t?t.vnode:null,{errorHandler:o,throwUnhandledErrorInProduction:i}=t&&t.appContext.config||ie;if(t){let l=t.parent;const u=t.proxy,g=`https://vuejs.org/error-reference/#runtime-${s}`;for(;l;){const h=l.ec;if(h){for(let b=0;b<h.length;b++)if(h[b](e,u,g)===!1)return}l=l.parent}if(o){yt(),vs(o,null,10,[e,u,g]),bt();return}}Ii(e,s,r,n,i)}function Ii(e,t,s,n=!0,r=!1){if(r)throw e;console.error(e)}const Ne=[];let Ye=-1;const zt=[];let xt=null,Wt=0;const eo=Promise.resolve();let Ps=null;function to(e){const t=Ps||eo;return e?t.then(this?e.bind(this):e):t}function $i(e){let t=Ye+1,s=Ne.length;for(;t<s;){const n=t+s>>>1,r=Ne[n],o=gs(r);o<e||o===e&&r.flags&2?t=n+1:s=n}return t}function $n(e){if(!(e.flags&1)){const t=gs(e),s=Ne[Ne.length-1];!s||!(e.flags&2)&&t>=gs(s)?Ne.push(e):Ne.splice($i(t),0,e),e.flags|=1,so()}}function so(){Ps||(Ps=eo.then(ro))}function Oi(e){D(e)?zt.push(...e):xt&&e.id===-1?xt.splice(Wt+1,0,e):e.flags&1||(zt.push(e),e.flags|=1),so()}function Jn(e,t,s=Ye+1){for(;s<Ne.length;s++){const n=Ne[s];if(n&&n.flags&2){if(e&&n.id!==e.uid)continue;Ne.splice(s,1),s--,n.flags&4&&(n.flags&=-2),n(),n.flags&4||(n.flags&=-2)}}}function no(e){if(zt.length){const t=[...new Set(zt)].sort((s,n)=>gs(s)-gs(n));if(zt.length=0,xt){xt.push(...t);return}for(xt=t,Wt=0;Wt<xt.length;Wt++){const s=xt[Wt];s.flags&4&&(s.flags&=-2),s.flags&8||s(),s.flags&=-2}xt=null,Wt=0}}const gs=e=>e.id==null?e.flags&2?-1:1/0:e.id;function ro(e){try{for(Ye=0;Ye<Ne.length;Ye++){const t=Ne[Ye];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),vs(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;Ye<Ne.length;Ye++){const t=Ne[Ye];t&&(t.flags&=-2)}Ye=-1,Ne.length=0,no(),Ps=null,(Ne.length||zt.length)&&ro()}}let Le=null,oo=null;function ks(e){const t=Le;return Le=e,oo=e&&e.type.__scopeId||null,t}function Pi(e,t=Le,s){if(!t||e._n)return e;const n=(...r)=>{n._d&&ir(-1);const o=ks(t);let i;try{i=e(...r)}finally{ks(o),n._d&&ir(1)}return i};return n._n=!0,n._c=!0,n._d=!0,n}function Bt(e,t){if(Le===null)return e;const s=zs(Le),n=e.dirs||(e.dirs=[]);for(let r=0;r<t.length;r++){let[o,i,l,u=ie]=t[r];o&&(G(o)&&(o={mounted:o,updated:o}),o.deep&&gt(i),n.push({dir:o,instance:s,value:i,oldValue:void 0,arg:l,modifiers:u}))}return e}function Ot(e,t,s,n){const r=e.dirs,o=t&&t.dirs;for(let i=0;i<r.length;i++){const l=r[i];o&&(l.oldValue=o[i].value);let u=l.dir[n];u&&(yt(),ot(u,s,8,[e.el,l,e,t]),bt())}}function ki(e,t){if(Me){let s=Me.provides;const n=Me.parent&&Me.parent.provides;n===s&&(s=Me.provides=Object.create(n)),s[e]=t}}function Cs(e,t,s=!1){const n=kl();if(n||Jt){let r=Jt?Jt._context.provides:n?n.parent==null||n.ce?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:void 0;if(r&&e in r)return r[e];if(arguments.length>1)return s&&G(t)?t.call(n&&n.proxy):t}}const Ri=Symbol.for("v-scx"),Fi=()=>Cs(Ri);function At(e,t,s){return io(e,t,s)}function io(e,t,s=ie){const{immediate:n,deep:r,flush:o,once:i}=s,l=xe({},s),u=t&&n||!t&&o!=="post";let g;if(ys){if(o==="sync"){const I=Fi();g=I.__watcherHandles||(I.__watcherHandles=[])}else if(!u){const I=()=>{};return I.stop=st,I.resume=st,I.pause=st,I}}const h=Me;l.call=(I,Y,H)=>ot(I,h,Y,H);let b=!1;o==="post"?l.scheduler=I=>{Ie(I,h&&h.suspense)}:o!=="sync"&&(b=!0,l.scheduler=(I,Y)=>{Y?I():$n(I)}),l.augmentJob=I=>{t&&(I.flags|=4),b&&(I.flags|=2,h&&(I.id=h.uid,I.i=h))};const T=Ti(e,t,l);return ys&&(g?g.push(T):u&&T()),T}function Di(e,t,s){const n=this.proxy,r=ge(e)?e.includes(".")?lo(n,e):()=>n[e]:e.bind(n,n);let o;G(t)?o=t:(o=t.handler,s=t);const i=ws(this),l=io(r,o.bind(n),s);return i(),l}function lo(e,t){const s=t.split(".");return()=>{let n=e;for(let r=0;r<s.length&&n;r++)n=n[s[r]];return n}}const Li=Symbol("_vte"),Hi=e=>e.__isTeleport,ji=Symbol("_leaveCb");function On(e,t){e.shapeFlag&6&&e.component?(e.transition=t,On(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function co(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Xn(e,t){let s;return!!((s=Object.getOwnPropertyDescriptor(e,t))&&!s.configurable)}const Rs=new WeakMap;function cs(e,t,s,n,r=!1){if(D(e)){e.forEach((H,ue)=>cs(H,t&&(D(t)?t[ue]:t),s,n,r));return}if(as(n)&&!r){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&cs(e,t,s,n.component.subTree);return}const o=n.shapeFlag&4?zs(n.component):n.el,i=r?null:o,{i:l,r:u}=e,g=t&&t.r,h=l.refs===ie?l.refs={}:l.refs,b=l.setupState,T=Z(b),I=b===ie?Ir:H=>Xn(h,H)?!1:ee(T,H),Y=(H,ue)=>!(ue&&Xn(h,ue));if(g!=null&&g!==u){if(Yn(t),ge(g))h[g]=null,I(g)&&(b[g]=null);else if(Se(g)){const H=t;Y(g,H.k)&&(g.value=null),H.k&&(h[H.k]=null)}}if(G(u))vs(u,l,12,[i,h]);else{const H=ge(u),ue=Se(u);if(H||ue){const te=()=>{if(e.f){const K=H?I(u)?b[u]:h[u]:Y()||!e.k?u.value:h[e.k];if(r)D(K)&&wn(K,o);else if(D(K))K.includes(o)||K.push(o);else if(H)h[u]=[o],I(u)&&(b[u]=h[u]);else{const se=[o];Y(u,e.k)&&(u.value=se),e.k&&(h[e.k]=se)}}else H?(h[u]=i,I(u)&&(b[u]=i)):ue&&(Y(u,e.k)&&(u.value=i),e.k&&(h[e.k]=i))};if(i){const K=()=>{te(),Rs.delete(e)};K.id=-1,Rs.set(e,K),Ie(K,s)}else Yn(e),te()}}}function Yn(e){const t=Rs.get(e);t&&(t.flags|=8,Rs.delete(e))}Vs().requestIdleCallback;Vs().cancelIdleCallback;const as=e=>!!e.type.__asyncLoader,ao=e=>e.type.__isKeepAlive;function Vi(e,t){uo(e,"a",t)}function Ki(e,t){uo(e,"da",t)}function uo(e,t,s=Me){const n=e.__wdc||(e.__wdc=()=>{let r=s;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Ws(t,n,s),s){let r=s.parent;for(;r&&r.parent;)ao(r.parent.vnode)&&Ui(n,t,s,r),r=r.parent}}function Ui(e,t,s,n){const r=Ws(t,e,n,!0);po(()=>{wn(n[t],r)},s)}function Ws(e,t,s=Me,n=!1){if(s){const r=s[e]||(s[e]=[]),o=t.__weh||(t.__weh=(...i)=>{yt();const l=ws(s),u=ot(t,s,e,i);return l(),bt(),u});return n?r.unshift(o):r.push(o),o}}const vt=e=>(t,s=Me)=>{(!ys||e==="sp")&&Ws(e,(...n)=>t(...n),s)},Bi=vt("bm"),fo=vt("m"),Wi=vt("bu"),Gi=vt("u"),ho=vt("bum"),po=vt("um"),qi=vt("sp"),zi=vt("rtg"),Ji=vt("rtc");function Xi(e,t=Me){Ws("ec",e,t)}const Yi=Symbol.for("v-ndc");function De(e,t,s,n){let r;const o=s,i=D(e);if(i||ge(e)){const l=i&&Ft(e);let u=!1,g=!1;l&&(u=!He(e),g=_t(e),e=Ks(e)),r=new Array(e.length);for(let h=0,b=e.length;h<b;h++)r[h]=t(u?g?Xt(We(e[h])):We(e[h]):e[h],h,void 0,o)}else if(typeof e=="number"){r=new Array(e);for(let l=0;l<e;l++)r[l]=t(l+1,l,void 0,o)}else if(re(e))if(e[Symbol.iterator])r=Array.from(e,(l,u)=>t(l,u,void 0,o));else{const l=Object.keys(e);r=new Array(l.length);for(let u=0,g=l.length;u<g;u++){const h=l[u];r[u]=t(e[h],h,u,o)}}else r=[];return r}const hn=e=>e?Ro(e)?zs(e):hn(e.parent):null,us=xe(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>hn(e.parent),$root:e=>hn(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>mo(e),$forceUpdate:e=>e.f||(e.f=()=>{$n(e.update)}),$nextTick:e=>e.n||(e.n=to.bind(e.proxy)),$watch:e=>Di.bind(e)}),sn=(e,t)=>e!==ie&&!e.__isScriptSetup&&ee(e,t),Qi={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:n,data:r,props:o,accessCache:i,type:l,appContext:u}=e;if(t[0]!=="$"){const T=i[t];if(T!==void 0)switch(T){case 1:return n[t];case 2:return r[t];case 4:return s[t];case 3:return o[t]}else{if(sn(n,t))return i[t]=1,n[t];if(r!==ie&&ee(r,t))return i[t]=2,r[t];if(ee(o,t))return i[t]=3,o[t];if(s!==ie&&ee(s,t))return i[t]=4,s[t];pn&&(i[t]=0)}}const g=us[t];let h,b;if(g)return t==="$attrs"&&we(e.attrs,"get",""),g(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(s!==ie&&ee(s,t))return i[t]=4,s[t];if(b=u.config.globalProperties,ee(b,t))return b[t]},set({_:e},t,s){const{data:n,setupState:r,ctx:o}=e;return sn(r,t)?(r[t]=s,!0):n!==ie&&ee(n,t)?(n[t]=s,!0):ee(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:n,appContext:r,props:o,type:i}},l){let u;return!!(s[l]||e!==ie&&l[0]!=="$"&&ee(e,l)||sn(t,l)||ee(o,l)||ee(n,l)||ee(us,l)||ee(r.config.globalProperties,l)||(u=i.__cssModules)&&u[l])},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:ee(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function Qn(e){return D(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let pn=!0;function Zi(e){const t=mo(e),s=e.proxy,n=e.ctx;pn=!1,t.beforeCreate&&Zn(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:u,inject:g,created:h,beforeMount:b,mounted:T,beforeUpdate:I,updated:Y,activated:H,deactivated:ue,beforeDestroy:te,beforeUnmount:K,destroyed:se,unmounted:k,render:fe,renderTracked:Ge,renderTriggered:Ce,errorCaptured:qe,serverPrefetch:Dt,expose:ze,inheritAttrs:it,components:Lt,directives:Ht,filters:Ct}=t;if(g&&el(g,n,null),i)for(const oe in i){const X=i[oe];G(X)&&(n[oe]=X.bind(s))}if(r){const oe=r.call(s,s);re(oe)&&(e.data=Us(oe))}if(pn=!0,o)for(const oe in o){const X=o[oe],lt=G(X)?X.bind(s,s):G(X.get)?X.get.bind(s,s):st,ct=!G(X)&&G(X.set)?X.set.bind(s):st,Je=Ee({get:lt,set:ct});Object.defineProperty(n,oe,{enumerable:!0,configurable:!0,get:()=>Je.value,set:ke=>Je.value=ke})}if(l)for(const oe in l)go(l[oe],n,s,oe);if(u){const oe=G(u)?u.call(s):u;Reflect.ownKeys(oe).forEach(X=>{ki(X,oe[X])})}h&&Zn(h,e,"c");function ye(oe,X){D(X)?X.forEach(lt=>oe(lt.bind(s))):X&&oe(X.bind(s))}if(ye(Bi,b),ye(fo,T),ye(Wi,I),ye(Gi,Y),ye(Vi,H),ye(Ki,ue),ye(Xi,qe),ye(Ji,Ge),ye(zi,Ce),ye(ho,K),ye(po,k),ye(qi,Dt),D(ze))if(ze.length){const oe=e.exposed||(e.exposed={});ze.forEach(X=>{Object.defineProperty(oe,X,{get:()=>s[X],set:lt=>s[X]=lt,enumerable:!0})})}else e.exposed||(e.exposed={});fe&&e.render===st&&(e.render=fe),it!=null&&(e.inheritAttrs=it),Lt&&(e.components=Lt),Ht&&(e.directives=Ht),Dt&&co(e)}function el(e,t,s=st){D(e)&&(e=gn(e));for(const n in e){const r=e[n];let o;re(r)?"default"in r?o=Cs(r.from||n,r.default,!0):o=Cs(r.from||n):o=Cs(r),Se(o)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[n]=o}}function Zn(e,t,s){ot(D(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,s)}function go(e,t,s,n){let r=n.includes(".")?lo(s,n):()=>s[n];if(ge(e)){const o=t[e];G(o)&&At(r,o)}else if(G(e))At(r,e.bind(s));else if(re(e))if(D(e))e.forEach(o=>go(o,t,s,n));else{const o=G(e.handler)?e.handler.bind(s):t[e.handler];G(o)&&At(r,o,e)}}function mo(e){const t=e.type,{mixins:s,extends:n}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let u;return l?u=l:!r.length&&!s&&!n?u=t:(u={},r.length&&r.forEach(g=>Fs(u,g,i,!0)),Fs(u,t,i)),re(t)&&o.set(t,u),u}function Fs(e,t,s,n=!1){const{mixins:r,extends:o}=t;o&&Fs(e,o,s,!0),r&&r.forEach(i=>Fs(e,i,s,!0));for(const i in t)if(!(n&&i==="expose")){const l=tl[i]||s&&s[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const tl={data:er,props:tr,emits:tr,methods:rs,computed:rs,beforeCreate:Ae,created:Ae,beforeMount:Ae,mounted:Ae,beforeUpdate:Ae,updated:Ae,beforeDestroy:Ae,beforeUnmount:Ae,destroyed:Ae,unmounted:Ae,activated:Ae,deactivated:Ae,errorCaptured:Ae,serverPrefetch:Ae,components:rs,directives:rs,watch:nl,provide:er,inject:sl};function er(e,t){return t?e?function(){return xe(G(e)?e.call(this,this):e,G(t)?t.call(this,this):t)}:t:e}function sl(e,t){return rs(gn(e),gn(t))}function gn(e){if(D(e)){const t={};for(let s=0;s<e.length;s++)t[e[s]]=e[s];return t}return e}function Ae(e,t){return e?[...new Set([].concat(e,t))]:t}function rs(e,t){return e?xe(Object.create(null),e,t):t}function tr(e,t){return e?D(e)&&D(t)?[...new Set([...e,...t])]:xe(Object.create(null),Qn(e),Qn(t??{})):t}function nl(e,t){if(!e)return t;if(!t)return e;const s=xe(Object.create(null),e);for(const n in t)s[n]=Ae(e[n],t[n]);return s}function yo(){return{app:null,config:{isNativeTag:Ir,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let rl=0;function ol(e,t){return function(n,r=null){G(n)||(n=xe({},n)),r!=null&&!re(r)&&(r=null);const o=yo(),i=new WeakSet,l=[];let u=!1;const g=o.app={_uid:rl++,_component:n,_props:r,_container:null,_context:o,_instance:null,version:jl,get config(){return o.config},set config(h){},use(h,...b){return i.has(h)||(h&&G(h.install)?(i.add(h),h.install(g,...b)):G(h)&&(i.add(h),h(g,...b))),g},mixin(h){return o.mixins.includes(h)||o.mixins.push(h),g},component(h,b){return b?(o.components[h]=b,g):o.components[h]},directive(h,b){return b?(o.directives[h]=b,g):o.directives[h]},mount(h,b,T){if(!u){const I=g._ceVNode||nt(n,r);return I.appContext=o,T===!0?T="svg":T===!1&&(T=void 0),e(I,h,T),u=!0,g._container=h,h.__vue_app__=g,zs(I.component)}},onUnmount(h){l.push(h)},unmount(){u&&(ot(l,g._instance,16),e(null,g._container),delete g._container.__vue_app__)},provide(h,b){return o.provides[h]=b,g},runWithContext(h){const b=Jt;Jt=g;try{return h()}finally{Jt=b}}};return g}}let Jt=null;const il=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ue(t)}Modifiers`]||e[`${Mt(t)}Modifiers`];function ll(e,t,...s){if(e.isUnmounted)return;const n=e.vnode.props||ie;let r=s;const o=t.startsWith("update:"),i=o&&il(n,t.slice(7));i&&(i.trim&&(r=s.map(h=>ge(h)?h.trim():h)),i.number&&(r=s.map(js)));let l,u=n[l=Ys(t)]||n[l=Ys(Ue(t))];!u&&o&&(u=n[l=Ys(Mt(t))]),u&&ot(u,e,6,r);const g=n[l+"Once"];if(g){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,ot(g,e,6,r)}}const cl=new WeakMap;function bo(e,t,s=!1){const n=s?cl:t.emitsCache,r=n.get(e);if(r!==void 0)return r;const o=e.emits;let i={},l=!1;if(!G(e)){const u=g=>{const h=bo(g,t,!0);h&&(l=!0,xe(i,h))};!s&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}return!o&&!l?(re(e)&&n.set(e,null),null):(D(o)?o.forEach(u=>i[u]=null):xe(i,o),re(e)&&n.set(e,i),i)}function Gs(e,t){return!e||!Ls(t)?!1:(t=t.slice(2).replace(/Once$/,""),ee(e,t[0].toLowerCase()+t.slice(1))||ee(e,Mt(t))||ee(e,t))}function sr(e){const{type:t,vnode:s,proxy:n,withProxy:r,propsOptions:[o],slots:i,attrs:l,emit:u,render:g,renderCache:h,props:b,data:T,setupState:I,ctx:Y,inheritAttrs:H}=e,ue=ks(e);let te,K;try{if(s.shapeFlag&4){const k=r||n,fe=k;te=et(g.call(fe,k,h,b,I,T,Y)),K=l}else{const k=t;te=et(k.length>1?k(b,{attrs:l,slots:i,emit:u}):k(b,null)),K=t.props?l:al(l)}}catch(k){fs.length=0,Bs(k,e,1),te=nt(Nt)}let se=te;if(K&&H!==!1){const k=Object.keys(K),{shapeFlag:fe}=se;k.length&&fe&7&&(o&&k.some(vn)&&(K=ul(K,o)),se=Yt(se,K,!1,!0))}return s.dirs&&(se=Yt(se,null,!1,!0),se.dirs=se.dirs?se.dirs.concat(s.dirs):s.dirs),s.transition&&On(se,s.transition),te=se,ks(ue),te}const al=e=>{let t;for(const s in e)(s==="class"||s==="style"||Ls(s))&&((t||(t={}))[s]=e[s]);return t},ul=(e,t)=>{const s={};for(const n in e)(!vn(n)||!(n.slice(9)in t))&&(s[n]=e[n]);return s};function fl(e,t,s){const{props:n,children:r,component:o}=e,{props:i,children:l,patchFlag:u}=t,g=o.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&u>=0){if(u&1024)return!0;if(u&16)return n?nr(n,i,g):!!i;if(u&8){const h=t.dynamicProps;for(let b=0;b<h.length;b++){const T=h[b];if(_o(i,n,T)&&!Gs(g,T))return!0}}}else return(r||l)&&(!l||!l.$stable)?!0:n===i?!1:n?i?nr(n,i,g):!0:!!i;return!1}function nr(e,t,s){const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!0;for(let r=0;r<n.length;r++){const o=n[r];if(_o(t,e,o)&&!Gs(s,o))return!0}return!1}function _o(e,t,s){const n=e[s],r=t[s];return s==="style"&&re(n)&&re(r)?!es(n,r):n!==r}function dl({vnode:e,parent:t},s){for(;t;){const n=t.subTree;if(n.suspense&&n.suspense.activeBranch===e&&(n.el=e.el),n===e)(e=t.vnode).el=s,t=t.parent;else break}}const vo={},wo=()=>Object.create(vo),So=e=>Object.getPrototypeOf(e)===vo;function hl(e,t,s,n=!1){const r={},o=wo();e.propsDefaults=Object.create(null),xo(e,t,r,o);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);s?e.props=n?r:vi(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function pl(e,t,s,n){const{props:r,attrs:o,vnode:{patchFlag:i}}=e,l=Z(r),[u]=e.propsOptions;let g=!1;if((n||i>0)&&!(i&16)){if(i&8){const h=e.vnode.dynamicProps;for(let b=0;b<h.length;b++){let T=h[b];if(Gs(e.emitsOptions,T))continue;const I=t[T];if(u)if(ee(o,T))I!==o[T]&&(o[T]=I,g=!0);else{const Y=Ue(T);r[Y]=mn(u,l,Y,I,e,!1)}else I!==o[T]&&(o[T]=I,g=!0)}}}else{xo(e,t,r,o)&&(g=!0);let h;for(const b in l)(!t||!ee(t,b)&&((h=Mt(b))===b||!ee(t,h)))&&(u?s&&(s[b]!==void 0||s[h]!==void 0)&&(r[b]=mn(u,l,b,void 0,e,!0)):delete r[b]);if(o!==l)for(const b in o)(!t||!ee(t,b))&&(delete o[b],g=!0)}g&&pt(e.attrs,"set","")}function xo(e,t,s,n){const[r,o]=e.propsOptions;let i=!1,l;if(t)for(let u in t){if(os(u))continue;const g=t[u];let h;r&&ee(r,h=Ue(u))?!o||!o.includes(h)?s[h]=g:(l||(l={}))[h]=g:Gs(e.emitsOptions,u)||(!(u in n)||g!==n[u])&&(n[u]=g,i=!0)}if(o){const u=Z(s),g=l||ie;for(let h=0;h<o.length;h++){const b=o[h];s[b]=mn(r,u,b,g[b],e,!ee(g,b))}}return i}function mn(e,t,s,n,r,o){const i=e[s];if(i!=null){const l=ee(i,"default");if(l&&n===void 0){const u=i.default;if(i.type!==Function&&!i.skipFactory&&G(u)){const{propsDefaults:g}=r;if(s in g)n=g[s];else{const h=ws(r);n=g[s]=u.call(null,t),h()}}else n=u;r.ce&&r.ce._setProp(s,n)}i[0]&&(o&&!l?n=!1:i[1]&&(n===""||n===Mt(s))&&(n=!0))}return n}const gl=new WeakMap;function Ao(e,t,s=!1){const n=s?gl:t.propsCache,r=n.get(e);if(r)return r;const o=e.props,i={},l=[];let u=!1;if(!G(e)){const h=b=>{u=!0;const[T,I]=Ao(b,t,!0);xe(i,T),I&&l.push(...I)};!s&&t.mixins.length&&t.mixins.forEach(h),e.extends&&h(e.extends),e.mixins&&e.mixins.forEach(h)}if(!o&&!u)return re(e)&&n.set(e,Gt),Gt;if(D(o))for(let h=0;h<o.length;h++){const b=Ue(o[h]);rr(b)&&(i[b]=ie)}else if(o)for(const h in o){const b=Ue(h);if(rr(b)){const T=o[h],I=i[b]=D(T)||G(T)?{type:T}:xe({},T),Y=I.type;let H=!1,ue=!0;if(D(Y))for(let te=0;te<Y.length;++te){const K=Y[te],se=G(K)&&K.name;if(se==="Boolean"){H=!0;break}else se==="String"&&(ue=!1)}else H=G(Y)&&Y.name==="Boolean";I[0]=H,I[1]=ue,(H||ee(I,"default"))&&l.push(b)}}const g=[i,l];return re(e)&&n.set(e,g),g}function rr(e){return e[0]!=="$"&&!os(e)}const Pn=e=>e==="_"||e==="_ctx"||e==="$stable",kn=e=>D(e)?e.map(et):[et(e)],ml=(e,t,s)=>{if(t._n)return t;const n=Pi((...r)=>kn(t(...r)),s);return n._c=!1,n},Eo=(e,t,s)=>{const n=e._ctx;for(const r in e){if(Pn(r))continue;const o=e[r];if(G(o))t[r]=ml(r,o,n);else if(o!=null){const i=kn(o);t[r]=()=>i}}},No=(e,t)=>{const s=kn(t);e.slots.default=()=>s},Mo=(e,t,s)=>{for(const n in t)(s||!Pn(n))&&(e[n]=t[n])},yl=(e,t,s)=>{const n=e.slots=wo();if(e.vnode.shapeFlag&32){const r=t._;r?(Mo(n,t,s),s&&Rr(n,"_",r,!0)):Eo(t,n)}else t&&No(e,t)},bl=(e,t,s)=>{const{vnode:n,slots:r}=e;let o=!0,i=ie;if(n.shapeFlag&32){const l=t._;l?s&&l===1?o=!1:Mo(r,t,s):(o=!t.$stable,Eo(t,r)),i=t}else t&&(No(e,t),i={default:1});if(o)for(const l in r)!Pn(l)&&i[l]==null&&delete r[l]},Ie=xl;function _l(e){return vl(e)}function vl(e,t){const s=Vs();s.__VUE__=!0;const{insert:n,remove:r,patchProp:o,createElement:i,createText:l,createComment:u,setText:g,setElementText:h,parentNode:b,nextSibling:T,setScopeId:I=st,insertStaticContent:Y}=e,H=(a,d,m,x=null,w=null,_=null,N=void 0,A=null,E=!!d.dynamicChildren)=>{if(a===d)return;a&&!ns(a,d)&&(x=jt(a),ke(a,w,_,!0),a=null),d.patchFlag===-2&&(E=!1,d.dynamicChildren=null);const{type:S,ref:O,shapeFlag:M}=d;switch(S){case qs:ue(a,d,m,x);break;case Nt:te(a,d,m,x);break;case Ts:a==null&&K(d,m,x,N);break;case pe:Lt(a,d,m,x,w,_,N,A,E);break;default:M&1?fe(a,d,m,x,w,_,N,A,E):M&6?Ht(a,d,m,x,w,_,N,A,E):(M&64||M&128)&&S.process(a,d,m,x,w,_,N,A,E,de)}O!=null&&w?cs(O,a&&a.ref,_,d||a,!d):O==null&&a&&a.ref!=null&&cs(a.ref,null,_,a,!0)},ue=(a,d,m,x)=>{if(a==null)n(d.el=l(d.children),m,x);else{const w=d.el=a.el;d.children!==a.children&&g(w,d.children)}},te=(a,d,m,x)=>{a==null?n(d.el=u(d.children||""),m,x):d.el=a.el},K=(a,d,m,x)=>{[a.el,a.anchor]=Y(a.children,d,m,x,a.el,a.anchor)},se=({el:a,anchor:d},m,x)=>{let w;for(;a&&a!==d;)w=T(a),n(a,m,x),a=w;n(d,m,x)},k=({el:a,anchor:d})=>{let m;for(;a&&a!==d;)m=T(a),r(a),a=m;r(d)},fe=(a,d,m,x,w,_,N,A,E)=>{if(d.type==="svg"?N="svg":d.type==="math"&&(N="mathml"),a==null)Ge(d,m,x,w,_,N,A,E);else{const S=a.el&&a.el._isVueCE?a.el:null;try{S&&S._beginPatch(),Dt(a,d,w,_,N,A,E)}finally{S&&S._endPatch()}}},Ge=(a,d,m,x,w,_,N,A)=>{let E,S;const{props:O,shapeFlag:M,transition:$,dirs:R}=a;if(E=a.el=i(a.type,_,O&&O.is,O),M&8?h(E,a.children):M&16&&qe(a.children,E,null,x,w,nn(a,_),N,A),R&&Ot(a,null,x,"created"),Ce(E,a,a.scopeId,N,x),O){for(const Q in O)Q!=="value"&&!os(Q)&&o(E,Q,null,O[Q],_,x);"value"in O&&o(E,"value",null,O.value,_),(S=O.onVnodeBeforeMount)&&Xe(S,x,a)}R&&Ot(a,null,x,"beforeMount");const q=wl(w,$);q&&$.beforeEnter(E),n(E,d,m),((S=O&&O.onVnodeMounted)||q||R)&&Ie(()=>{S&&Xe(S,x,a),q&&$.enter(E),R&&Ot(a,null,x,"mounted")},w)},Ce=(a,d,m,x,w)=>{if(m&&I(a,m),x)for(let _=0;_<x.length;_++)I(a,x[_]);if(w){let _=w.subTree;if(d===_||$o(_.type)&&(_.ssContent===d||_.ssFallback===d)){const N=w.vnode;Ce(a,N,N.scopeId,N.slotScopeIds,w.parent)}}},qe=(a,d,m,x,w,_,N,A,E=0)=>{for(let S=E;S<a.length;S++){const O=a[S]=A?ht(a[S]):et(a[S]);H(null,O,d,m,x,w,_,N,A)}},Dt=(a,d,m,x,w,_,N)=>{const A=d.el=a.el;let{patchFlag:E,dynamicChildren:S,dirs:O}=d;E|=a.patchFlag&16;const M=a.props||ie,$=d.props||ie;let R;if(m&&Pt(m,!1),(R=$.onVnodeBeforeUpdate)&&Xe(R,m,d,a),O&&Ot(d,a,m,"beforeUpdate"),m&&Pt(m,!0),(M.innerHTML&&$.innerHTML==null||M.textContent&&$.textContent==null)&&h(A,""),S?ze(a.dynamicChildren,S,A,m,x,nn(d,w),_):N||X(a,d,A,null,m,x,nn(d,w),_,!1),E>0){if(E&16)it(A,M,$,m,w);else if(E&2&&M.class!==$.class&&o(A,"class",null,$.class,w),E&4&&o(A,"style",M.style,$.style,w),E&8){const q=d.dynamicProps;for(let Q=0;Q<q.length;Q++){const J=q[Q],_e=M[J],ve=$[J];(ve!==_e||J==="value")&&o(A,J,_e,ve,w,m)}}E&1&&a.children!==d.children&&h(A,d.children)}else!N&&S==null&&it(A,M,$,m,w);((R=$.onVnodeUpdated)||O)&&Ie(()=>{R&&Xe(R,m,d,a),O&&Ot(d,a,m,"updated")},x)},ze=(a,d,m,x,w,_,N)=>{for(let A=0;A<d.length;A++){const E=a[A],S=d[A],O=E.el&&(E.type===pe||!ns(E,S)||E.shapeFlag&198)?b(E.el):m;H(E,S,O,null,x,w,_,N,!0)}},it=(a,d,m,x,w)=>{if(d!==m){if(d!==ie)for(const _ in d)!os(_)&&!(_ in m)&&o(a,_,d[_],null,w,x);for(const _ in m){if(os(_))continue;const N=m[_],A=d[_];N!==A&&_!=="value"&&o(a,_,A,N,w,x)}"value"in m&&o(a,"value",d.value,m.value,w)}},Lt=(a,d,m,x,w,_,N,A,E)=>{const S=d.el=a?a.el:l(""),O=d.anchor=a?a.anchor:l("");let{patchFlag:M,dynamicChildren:$,slotScopeIds:R}=d;R&&(A=A?A.concat(R):R),a==null?(n(S,m,x),n(O,m,x),qe(d.children||[],m,O,w,_,N,A,E)):M>0&&M&64&&$&&a.dynamicChildren&&a.dynamicChildren.length===$.length?(ze(a.dynamicChildren,$,m,w,_,N,A),(d.key!=null||w&&d===w.subTree)&&Co(a,d,!0)):X(a,d,m,O,w,_,N,A,E)},Ht=(a,d,m,x,w,_,N,A,E)=>{d.slotScopeIds=A,a==null?d.shapeFlag&512?w.ctx.activate(d,m,x,N,E):Ct(d,m,x,w,_,N,E):wt(a,d,E)},Ct=(a,d,m,x,w,_,N)=>{const A=a.component=Pl(a,x,w);if(ao(a)&&(A.ctx.renderer=de),Rl(A,!1,N),A.asyncDep){if(w&&w.registerDep(A,ye,N),!a.el){const E=A.subTree=nt(Nt);te(null,E,d,m),a.placeholder=E.el}}else ye(A,a,d,m,w,_,N)},wt=(a,d,m)=>{const x=d.component=a.component;if(fl(a,d,m))if(x.asyncDep&&!x.asyncResolved){oe(x,d,m);return}else x.next=d,x.update();else d.el=a.el,x.vnode=d},ye=(a,d,m,x,w,_,N)=>{const A=()=>{if(a.isMounted){let{next:M,bu:$,u:R,parent:q,vnode:Q}=a;{const Re=To(a);if(Re){M&&(M.el=Q.el,oe(a,M,N)),Re.asyncDep.then(()=>{Ie(()=>{a.isUnmounted||S()},w)});return}}let J=M,_e;Pt(a,!1),M?(M.el=Q.el,oe(a,M,N)):M=Q,$&&Ms($),(_e=M.props&&M.props.onVnodeBeforeUpdate)&&Xe(_e,q,M,Q),Pt(a,!0);const ve=sr(a),Te=a.subTree;a.subTree=ve,H(Te,ve,b(Te.el),jt(Te),a,w,_),M.el=ve.el,J===null&&dl(a,ve.el),R&&Ie(R,w),(_e=M.props&&M.props.onVnodeUpdated)&&Ie(()=>Xe(_e,q,M,Q),w)}else{let M;const{el:$,props:R}=d,{bm:q,m:Q,parent:J,root:_e,type:ve}=a,Te=as(d);Pt(a,!1),q&&Ms(q),!Te&&(M=R&&R.onVnodeBeforeMount)&&Xe(M,J,d),Pt(a,!0);{_e.ce&&_e.ce._hasShadowRoot()&&_e.ce._injectChildStyle(ve,a.parent?a.parent.type:void 0);const Re=a.subTree=sr(a);H(null,Re,m,x,a,w,_),d.el=Re.el}if(Q&&Ie(Q,w),!Te&&(M=R&&R.onVnodeMounted)){const Re=d;Ie(()=>Xe(M,J,Re),w)}(d.shapeFlag&256||J&&as(J.vnode)&&J.vnode.shapeFlag&256)&&a.a&&Ie(a.a,w),a.isMounted=!0,d=m=x=null}};a.scope.on();const E=a.effect=new Hr(A);a.scope.off();const S=a.update=E.run.bind(E),O=a.job=E.runIfDirty.bind(E);O.i=a,O.id=a.uid,E.scheduler=()=>$n(O),Pt(a,!0),S()},oe=(a,d,m)=>{d.component=a;const x=a.vnode.props;a.vnode=d,a.next=null,pl(a,d.props,x,m),bl(a,d.children,m),yt(),Jn(a),bt()},X=(a,d,m,x,w,_,N,A,E=!1)=>{const S=a&&a.children,O=a?a.shapeFlag:0,M=d.children,{patchFlag:$,shapeFlag:R}=d;if($>0){if($&128){ct(S,M,m,x,w,_,N,A,E);return}else if($&256){lt(S,M,m,x,w,_,N,A,E);return}}R&8?(O&16&&Tt(S,w,_),M!==S&&h(m,M)):O&16?R&16?ct(S,M,m,x,w,_,N,A,E):Tt(S,w,_,!0):(O&8&&h(m,""),R&16&&qe(M,m,x,w,_,N,A,E))},lt=(a,d,m,x,w,_,N,A,E)=>{a=a||Gt,d=d||Gt;const S=a.length,O=d.length,M=Math.min(S,O);let $;for($=0;$<M;$++){const R=d[$]=E?ht(d[$]):et(d[$]);H(a[$],R,m,null,w,_,N,A,E)}S>O?Tt(a,w,_,!0,!1,M):qe(d,m,x,w,_,N,A,E,M)},ct=(a,d,m,x,w,_,N,A,E)=>{let S=0;const O=d.length;let M=a.length-1,$=O-1;for(;S<=M&&S<=$;){const R=a[S],q=d[S]=E?ht(d[S]):et(d[S]);if(ns(R,q))H(R,q,m,null,w,_,N,A,E);else break;S++}for(;S<=M&&S<=$;){const R=a[M],q=d[$]=E?ht(d[$]):et(d[$]);if(ns(R,q))H(R,q,m,null,w,_,N,A,E);else break;M--,$--}if(S>M){if(S<=$){const R=$+1,q=R<O?d[R].el:x;for(;S<=$;)H(null,d[S]=E?ht(d[S]):et(d[S]),m,q,w,_,N,A,E),S++}}else if(S>$)for(;S<=M;)ke(a[S],w,_,!0),S++;else{const R=S,q=S,Q=new Map;for(S=q;S<=$;S++){const c=d[S]=E?ht(d[S]):et(d[S]);c.key!=null&&Q.set(c.key,S)}let J,_e=0;const ve=$-q+1;let Te=!1,Re=0;const $t=new Array(ve);for(S=0;S<ve;S++)$t[S]=0;for(S=R;S<=M;S++){const c=a[S];if(_e>=ve){ke(c,w,_,!0);continue}let f;if(c.key!=null)f=Q.get(c.key);else for(J=q;J<=$;J++)if($t[J-q]===0&&ns(c,d[J])){f=J;break}f===void 0?ke(c,w,_,!0):($t[f-q]=S+1,f>=Re?Re=f:Te=!0,H(c,d[f],m,null,w,_,N,A,E),_e++)}const p=Te?Sl($t):Gt;for(J=p.length-1,S=ve-1;S>=0;S--){const c=q+S,f=d[c],C=d[c+1],F=c+1<O?C.el||Io(C):x;$t[S]===0?H(null,f,m,F,w,_,N,A,E):Te&&(J<0||S!==p[J]?Je(f,m,F,2):J--)}}},Je=(a,d,m,x,w=null)=>{const{el:_,type:N,transition:A,children:E,shapeFlag:S}=a;if(S&6){Je(a.component.subTree,d,m,x);return}if(S&128){a.suspense.move(d,m,x);return}if(S&64){N.move(a,d,m,de);return}if(N===pe){n(_,d,m);for(let M=0;M<E.length;M++)Je(E[M],d,m,x);n(a.anchor,d,m);return}if(N===Ts){se(a,d,m);return}if(x!==2&&S&1&&A)if(x===0)A.beforeEnter(_),n(_,d,m),Ie(()=>A.enter(_),w);else{const{leave:M,delayLeave:$,afterLeave:R}=A,q=()=>{a.ctx.isUnmounted?r(_):n(_,d,m)},Q=()=>{_._isLeaving&&_[ji](!0),M(_,()=>{q(),R&&R()})};$?$(_,q,Q):Q()}else n(_,d,m)},ke=(a,d,m,x=!1,w=!1)=>{const{type:_,props:N,ref:A,children:E,dynamicChildren:S,shapeFlag:O,patchFlag:M,dirs:$,cacheIndex:R}=a;if(M===-2&&(w=!1),A!=null&&(yt(),cs(A,null,m,a,!0),bt()),R!=null&&(d.renderCache[R]=void 0),O&256){d.ctx.deactivate(a);return}const q=O&1&&$,Q=!as(a);let J;if(Q&&(J=N&&N.onVnodeBeforeUnmount)&&Xe(J,d,a),O&6)Xs(a.component,m,x);else{if(O&128){a.suspense.unmount(m,x);return}q&&Ot(a,null,d,"beforeUnmount"),O&64?a.type.remove(a,d,m,de,x):S&&!S.hasOnce&&(_!==pe||M>0&&M&64)?Tt(S,d,m,!1,!0):(_===pe&&M&384||!w&&O&16)&&Tt(E,d,m),x&&Ss(a)}(Q&&(J=N&&N.onVnodeUnmounted)||q)&&Ie(()=>{J&&Xe(J,d,a),q&&Ot(a,null,d,"unmounted")},m)},Ss=a=>{const{type:d,el:m,anchor:x,transition:w}=a;if(d===pe){Js(m,x);return}if(d===Ts){k(a);return}const _=()=>{r(m),w&&!w.persisted&&w.afterLeave&&w.afterLeave()};if(a.shapeFlag&1&&w&&!w.persisted){const{leave:N,delayLeave:A}=w,E=()=>N(m,_);A?A(a.el,_,E):E()}else _()},Js=(a,d)=>{let m;for(;a!==d;)m=T(a),r(a),a=m;r(d)},Xs=(a,d,m)=>{const{bum:x,scope:w,job:_,subTree:N,um:A,m:E,a:S}=a;or(E),or(S),x&&Ms(x),w.stop(),_&&(_.flags|=8,ke(N,a,d,m)),A&&Ie(A,d),Ie(()=>{a.isUnmounted=!0},d)},Tt=(a,d,m,x=!1,w=!1,_=0)=>{for(let N=_;N<a.length;N++)ke(a[N],d,m,x,w)},jt=a=>{if(a.shapeFlag&6)return jt(a.component.subTree);if(a.shapeFlag&128)return a.suspense.next();const d=T(a.anchor||a.el),m=d&&d[Li];return m?T(m):d};let ts=!1;const It=(a,d,m)=>{let x;a==null?d._vnode&&(ke(d._vnode,null,null,!0),x=d._vnode.component):H(d._vnode||null,a,d,null,null,null,m),d._vnode=a,ts||(ts=!0,Jn(x),no(),ts=!1)},de={p:H,um:ke,m:Je,r:Ss,mt:Ct,mc:qe,pc:X,pbc:ze,n:jt,o:e};return{render:It,hydrate:void 0,createApp:ol(It)}}function nn({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function Pt({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function wl(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Co(e,t,s=!1){const n=e.children,r=t.children;if(D(n)&&D(r))for(let o=0;o<n.length;o++){const i=n[o];let l=r[o];l.shapeFlag&1&&!l.dynamicChildren&&((l.patchFlag<=0||l.patchFlag===32)&&(l=r[o]=ht(r[o]),l.el=i.el),!s&&l.patchFlag!==-2&&Co(i,l)),l.type===qs&&(l.patchFlag===-1&&(l=r[o]=ht(l)),l.el=i.el),l.type===Nt&&!l.el&&(l.el=i.el)}}function Sl(e){const t=e.slice(),s=[0];let n,r,o,i,l;const u=e.length;for(n=0;n<u;n++){const g=e[n];if(g!==0){if(r=s[s.length-1],e[r]<g){t[n]=r,s.push(n);continue}for(o=0,i=s.length-1;o<i;)l=o+i>>1,e[s[l]]<g?o=l+1:i=l;g<e[s[o]]&&(o>0&&(t[n]=s[o-1]),s[o]=n)}}for(o=s.length,i=s[o-1];o-- >0;)s[o]=i,i=t[i];return s}function To(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:To(t)}function or(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function Io(e){if(e.placeholder)return e.placeholder;const t=e.component;return t?Io(t.subTree):null}const $o=e=>e.__isSuspense;function xl(e,t){t&&t.pendingBranch?D(e)?t.effects.push(...e):t.effects.push(e):Oi(e)}const pe=Symbol.for("v-fgt"),qs=Symbol.for("v-txt"),Nt=Symbol.for("v-cmt"),Ts=Symbol.for("v-stc"),fs=[];let Pe=null;function B(e=!1){fs.push(Pe=e?null:[])}function Al(){fs.pop(),Pe=fs[fs.length-1]||null}let ms=1;function ir(e,t=!1){ms+=e,e<0&&Pe&&t&&(Pe.hasOnce=!0)}function Oo(e){return e.dynamicChildren=ms>0?Pe||Gt:null,Al(),ms>0&&Pe&&Pe.push(e),e}function W(e,t,s,n,r,o){return Oo(v(e,t,s,n,r,o,!0))}function El(e,t,s,n,r){return Oo(nt(e,t,s,n,r,!0))}function Po(e){return e?e.__v_isVNode===!0:!1}function ns(e,t){return e.type===t.type&&e.key===t.key}const ko=({key:e})=>e??null,Is=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?ge(e)||Se(e)||G(e)?{i:Le,r:e,k:t,f:!!s}:e:null);function v(e,t=null,s=null,n=0,r=null,o=e===pe?0:1,i=!1,l=!1){const u={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ko(t),ref:t&&Is(t),scopeId:oo,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:n,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:Le};return l?(Rn(u,s),o&128&&e.normalize(u)):s&&(u.shapeFlag|=ge(s)?8:16),ms>0&&!i&&Pe&&(u.patchFlag>0||o&6)&&u.patchFlag!==32&&Pe.push(u),u}const nt=Nl;function Nl(e,t=null,s=null,n=0,r=null,o=!1){if((!e||e===Yi)&&(e=Nt),Po(e)){const l=Yt(e,t,!0);return s&&Rn(l,s),ms>0&&!o&&Pe&&(l.shapeFlag&6?Pe[Pe.indexOf(e)]=l:Pe.push(l)),l.patchFlag=-2,l}if(Hl(e)&&(e=e.__vccOpts),t){t=Ml(t);let{class:l,style:u}=t;l&&!ge(l)&&(t.class=Qe(l)),re(u)&&(In(u)&&!D(u)&&(u=xe({},u)),t.style=ds(u))}const i=ge(e)?1:$o(e)?128:Hi(e)?64:re(e)?4:G(e)?2:0;return v(e,t,s,n,r,i,o,!0)}function Ml(e){return e?In(e)||So(e)?xe({},e):e:null}function Yt(e,t,s=!1,n=!1){const{props:r,ref:o,patchFlag:i,children:l,transition:u}=e,g=t?Il(r||{},t):r,h={__v_isVNode:!0,__v_skip:!0,type:e.type,props:g,key:g&&ko(g),ref:t&&t.ref?s&&o?D(o)?o.concat(Is(t)):[o,Is(t)]:Is(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==pe?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:u,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Yt(e.ssContent),ssFallback:e.ssFallback&&Yt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return u&&n&&On(h,u.clone(h)),h}function Cl(e=" ",t=0){return nt(qs,null,e,t)}function Tl(e,t){const s=nt(Ts,null,e);return s.staticCount=t,s}function St(e="",t=!1){return t?(B(),El(Nt,null,e)):nt(Nt,null,e)}function et(e){return e==null||typeof e=="boolean"?nt(Nt):D(e)?nt(pe,null,e.slice()):Po(e)?ht(e):nt(qs,null,String(e))}function ht(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Yt(e)}function Rn(e,t){let s=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(D(t))s=16;else if(typeof t=="object")if(n&65){const r=t.default;r&&(r._c&&(r._d=!1),Rn(e,r()),r._c&&(r._d=!0));return}else{s=32;const r=t._;!r&&!So(t)?t._ctx=Le:r===3&&Le&&(Le.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else G(t)?(t={default:t,_ctx:Le},s=32):(t=String(t),n&64?(s=16,t=[Cl(t)]):s=8);e.children=t,e.shapeFlag|=s}function Il(...e){const t={};for(let s=0;s<e.length;s++){const n=e[s];for(const r in n)if(r==="class")t.class!==n.class&&(t.class=Qe([t.class,n.class]));else if(r==="style")t.style=ds([t.style,n.style]);else if(Ls(r)){const o=t[r],i=n[r];i&&o!==i&&!(D(o)&&o.includes(i))&&(t[r]=o?[].concat(o,i):i)}else r!==""&&(t[r]=n[r])}return t}function Xe(e,t,s,n=null){ot(e,t,7,[s,n])}const $l=yo();let Ol=0;function Pl(e,t,s){const n=e.type,r=(t?t.appContext:e.appContext)||$l,o={uid:Ol++,vnode:e,type:n,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new ei(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Ao(n,r),emitsOptions:bo(n,r),emit:null,emitted:null,propsDefaults:ie,inheritAttrs:n.inheritAttrs,ctx:ie,data:ie,props:ie,attrs:ie,slots:ie,refs:ie,setupState:ie,setupContext:null,suspense:s,suspenseId:s?s.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return o.ctx={_:o},o.root=t?t.root:o,o.emit=ll.bind(null,o),e.ce&&e.ce(o),o}let Me=null;const kl=()=>Me||Le;let Ds,yn;{const e=Vs(),t=(s,n)=>{let r;return(r=e[s])||(r=e[s]=[]),r.push(n),o=>{r.length>1?r.forEach(i=>i(o)):r[0](o)}};Ds=t("__VUE_INSTANCE_SETTERS__",s=>Me=s),yn=t("__VUE_SSR_SETTERS__",s=>ys=s)}const ws=e=>{const t=Me;return Ds(e),e.scope.on(),()=>{e.scope.off(),Ds(t)}},lr=()=>{Me&&Me.scope.off(),Ds(null)};function Ro(e){return e.vnode.shapeFlag&4}let ys=!1;function Rl(e,t=!1,s=!1){t&&yn(t);const{props:n,children:r}=e.vnode,o=Ro(e);hl(e,n,o,t),yl(e,r,s||t);const i=o?Fl(e,t):void 0;return t&&yn(!1),i}function Fl(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Qi);const{setup:n}=s;if(n){yt();const r=e.setupContext=n.length>1?Ll(e):null,o=ws(e),i=vs(n,e,0,[e.props,r]),l=$r(i);if(bt(),o(),(l||e.sp)&&!as(e)&&co(e),l){if(i.then(lr,lr),t)return i.then(u=>{cr(e,u)}).catch(u=>{Bs(u,e,0)});e.asyncDep=i}else cr(e,i)}else Fo(e)}function cr(e,t,s){G(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:re(t)&&(e.setupState=Zr(t)),Fo(e)}function Fo(e,t,s){const n=e.type;e.render||(e.render=n.render||st);{const r=ws(e);yt();try{Zi(e)}finally{bt(),r()}}}const Dl={get(e,t){return we(e,"get",""),e[t]}};function Ll(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,Dl),slots:e.slots,emit:e.emit,expose:t}}function zs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Zr(wi(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in us)return us[s](e)},has(t,s){return s in t||s in us}})):e.proxy}function Hl(e){return G(e)&&"__vccOpts"in e}const Ee=(e,t)=>Mi(e,t,ys),jl="3.5.30";let bn;const ar=typeof window<"u"&&window.trustedTypes;if(ar)try{bn=ar.createPolicy("vue",{createHTML:e=>e})}catch{}const Do=bn?e=>bn.createHTML(e):e=>e,Vl="http://www.w3.org/2000/svg",Kl="http://www.w3.org/1998/Math/MathML",dt=typeof document<"u"?document:null,ur=dt&&dt.createElement("template"),Ul={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,n)=>{const r=t==="svg"?dt.createElementNS(Vl,e):t==="mathml"?dt.createElementNS(Kl,e):s?dt.createElement(e,{is:s}):dt.createElement(e);return e==="select"&&n&&n.multiple!=null&&r.setAttribute("multiple",n.multiple),r},createText:e=>dt.createTextNode(e),createComment:e=>dt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>dt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,r,o){const i=s?s.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),s),!(r===o||!(r=r.nextSibling)););else{ur.innerHTML=Do(n==="svg"?`<svg>${e}</svg>`:n==="mathml"?`<math>${e}</math>`:e);const l=ur.content;if(n==="svg"||n==="mathml"){const u=l.firstChild;for(;u.firstChild;)l.appendChild(u.firstChild);l.removeChild(u)}t.insertBefore(l,s)}return[i?i.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},Bl=Symbol("_vtc");function Wl(e,t,s){const n=e[Bl];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const fr=Symbol("_vod"),Gl=Symbol("_vsh"),ql=Symbol(""),zl=/(?:^|;)\s*display\s*:/;function Jl(e,t,s){const n=e.style,r=ge(s);let o=!1;if(s&&!r){if(t)if(ge(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();s[l]==null&&$s(n,l,"")}else for(const i in t)s[i]==null&&$s(n,i,"");for(const i in s)i==="display"&&(o=!0),$s(n,i,s[i])}else if(r){if(t!==s){const i=n[ql];i&&(s+=";"+i),n.cssText=s,o=zl.test(s)}}else t&&e.removeAttribute("style");fr in e&&(e[fr]=o?n.display:"",e[Gl]&&(n.display="none"))}const dr=/\s*!important$/;function $s(e,t,s){if(D(s))s.forEach(n=>$s(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const n=Xl(e,t);dr.test(s)?e.setProperty(Mt(n),s.replace(dr,""),"important"):e[n]=s}}const hr=["Webkit","Moz","ms"],rn={};function Xl(e,t){const s=rn[t];if(s)return s;let n=Ue(t);if(n!=="filter"&&n in e)return rn[t]=n;n=kr(n);for(let r=0;r<hr.length;r++){const o=hr[r]+n;if(o in e)return rn[t]=o}return t}const pr="http://www.w3.org/1999/xlink";function gr(e,t,s,n,r,o=Qo(t)){n&&t.startsWith("xlink:")?s==null?e.removeAttributeNS(pr,t.slice(6,t.length)):e.setAttributeNS(pr,t,s):s==null||o&&!Fr(s)?e.removeAttribute(t):e.setAttribute(t,o?"":rt(s)?String(s):s)}function mr(e,t,s,n,r){if(t==="innerHTML"||t==="textContent"){s!=null&&(e[t]=t==="innerHTML"?Do(s):s);return}const o=e.tagName;if(t==="value"&&o!=="PROGRESS"&&!o.includes("-")){const l=o==="OPTION"?e.getAttribute("value")||"":e.value,u=s==null?e.type==="checkbox"?"on":"":String(s);(l!==u||!("_value"in e))&&(e.value=u),s==null&&e.removeAttribute(t),e._value=s;return}let i=!1;if(s===""||s==null){const l=typeof e[t];l==="boolean"?s=Fr(s):s==null&&l==="string"?(s="",i=!0):l==="number"&&(s=0,i=!0)}try{e[t]=s}catch{}i&&e.removeAttribute(r||t)}function Et(e,t,s,n){e.addEventListener(t,s,n)}function Yl(e,t,s,n){e.removeEventListener(t,s,n)}const yr=Symbol("_vei");function Ql(e,t,s,n,r=null){const o=e[yr]||(e[yr]={}),i=o[t];if(n&&i)i.value=n;else{const[l,u]=Zl(t);if(n){const g=o[t]=sc(n,r);Et(e,l,g,u)}else i&&(Yl(e,l,i,u),o[t]=void 0)}}const br=/(?:Once|Passive|Capture)$/;function Zl(e){let t;if(br.test(e)){t={};let n;for(;n=e.match(br);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):Mt(e.slice(2)),t]}let on=0;const ec=Promise.resolve(),tc=()=>on||(ec.then(()=>on=0),on=Date.now());function sc(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;ot(nc(n,s.value),t,5,[n])};return s.value=e,s.attached=tc(),s}function nc(e,t){if(D(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(n=>r=>!r._stopped&&n&&n(r))}else return t}const _r=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,rc=(e,t,s,n,r,o)=>{const i=r==="svg";t==="class"?Wl(e,n,i):t==="style"?Jl(e,s,n):Ls(t)?vn(t)||Ql(e,t,s,n,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):oc(e,t,n,i))?(mr(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&gr(e,t,n,i,o,t!=="value")):e._isVueCE&&(ic(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!ge(n)))?mr(e,Ue(t),n,o,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),gr(e,t,n,i))};function oc(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&_r(t)&&G(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return _r(t)&&ge(s)?!1:t in e}function ic(e,t){const s=e._def.props;if(!s)return!1;const n=Ue(t);return Array.isArray(s)?s.some(r=>Ue(r)===n):Object.keys(s).some(r=>Ue(r)===n)}const Qt=e=>{const t=e.props["onUpdate:modelValue"]||!1;return D(t)?s=>Ms(t,s):t};function lc(e){e.target.composing=!0}function vr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const mt=Symbol("_assign");function wr(e,t,s){return t&&(e=e.trim()),s&&(e=js(e)),e}const ln={created(e,{modifiers:{lazy:t,trim:s,number:n}},r){e[mt]=Qt(r);const o=n||r.props&&r.props.type==="number";Et(e,t?"change":"input",i=>{i.target.composing||e[mt](wr(e.value,s,o))}),(s||o)&&Et(e,"change",()=>{e.value=wr(e.value,s,o)}),t||(Et(e,"compositionstart",lc),Et(e,"compositionend",vr),Et(e,"change",vr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:s,modifiers:{lazy:n,trim:r,number:o}},i){if(e[mt]=Qt(i),e.composing)return;const l=(o||e.type==="number")&&!/^0\d/.test(e.value)?js(e.value):e.value,u=t??"";l!==u&&(document.activeElement===e&&e.type!=="range"&&(n&&t===s||r&&e.value.trim()===u)||(e.value=u))}},cc={deep:!0,created(e,t,s){e[mt]=Qt(s),Et(e,"change",()=>{const n=e._modelValue,r=bs(e),o=e.checked,i=e[mt];if(D(n)){const l=xn(n,r),u=l!==-1;if(o&&!u)i(n.concat(r));else if(!o&&u){const g=[...n];g.splice(l,1),i(g)}}else if(Zt(n)){const l=new Set(n);o?l.add(r):l.delete(r),i(l)}else i(Lo(e,o))})},mounted:Sr,beforeUpdate(e,t,s){e[mt]=Qt(s),Sr(e,t,s)}};function Sr(e,{value:t,oldValue:s},n){e._modelValue=t;let r;if(D(t))r=xn(t,n.props.value)>-1;else if(Zt(t))r=t.has(n.props.value);else{if(t===s)return;r=es(t,Lo(e,!0))}e.checked!==r&&(e.checked=r)}const xr={deep:!0,created(e,{value:t,modifiers:{number:s}},n){const r=Zt(t);Et(e,"change",()=>{const o=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>s?js(bs(i)):bs(i));e[mt](e.multiple?r?new Set(o):o:o[0]),e._assigning=!0,to(()=>{e._assigning=!1})}),e[mt]=Qt(n)},mounted(e,{value:t}){Ar(e,t)},beforeUpdate(e,t,s){e[mt]=Qt(s)},updated(e,{value:t}){e._assigning||Ar(e,t)}};function Ar(e,t){const s=e.multiple,n=D(t);if(!(s&&!n&&!Zt(t))){for(let r=0,o=e.options.length;r<o;r++){const i=e.options[r],l=bs(i);if(s)if(n){const u=typeof l;u==="string"||u==="number"?i.selected=t.some(g=>String(g)===String(l)):i.selected=xn(t,l)>-1}else i.selected=t.has(l);else if(es(bs(i),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!s&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function bs(e){return"_value"in e?e._value:e.value}function Lo(e,t){const s=t?"_trueValue":"_falseValue";return s in e?e[s]:t}const ac=["ctrl","shift","alt","meta"],uc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>ac.some(s=>e[`${s}Key`]&&!t.includes(s))},fc=(e,t)=>{if(!e)return e;const s=e._withMods||(e._withMods={}),n=t.join(".");return s[n]||(s[n]=((r,...o)=>{for(let i=0;i<t.length;i++){const l=uc[t[i]];if(l&&l(r,t))return}return e(r,...o)}))},dc={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},hc=(e,t)=>{const s=e._withKeys||(e._withKeys={}),n=t.join(".");return s[n]||(s[n]=(r=>{if(!("key"in r))return;const o=Mt(r.key);if(t.some(i=>i===o||dc[i]===o))return e(r)}))},pc=xe({patchProp:rc},Ul);let Er;function gc(){return Er||(Er=_l(pc))}const mc=((...e)=>{const t=gc().createApp(...e),{mount:s}=t;return t.mount=n=>{const r=bc(n);if(!r)return;const o=t._component;!G(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const i=s(r,!1,yc(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t});function yc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function bc(e){return ge(e)?document.querySelector(e):e}const _c=(e,t)=>{const s=e.__vccOpts||e;for(const[n,r]of t)s[n]=r;return s},vc={class:"page-shell"},wc={class:"topbar"},Sc={class:"toolbar"},xc={class:"theme-strip"},Ac=["onClick"],Ec=["value"],Nc={class:"checkbox"},Mc=["disabled"],Cc={class:"statusbar"},Tc={key:0,class:"status-detail"},Ic={class:"content-grid"},$c={class:"card card-summary"},Oc={class:"card-head"},Pc={key:0,class:"meta-chip"},kc={class:"summary-pre"},Rc={class:"metric-grid"},Fc={class:"metric"},Dc={class:"metric"},Lc={class:"metric"},Hc={class:"metric"},jc={class:"card"},Vc={class:"card-head"},Kc={class:"meta-chip"},Uc={key:0,class:"rank-list"},Bc={class:"rank-title"},Wc={class:"rank-label"},Gc={key:1,class:"empty-state"},qc={class:"card"},zc={class:"card-head"},Jc={class:"meta-chip"},Xc={key:0,class:"event-list"},Yc={class:"event-name"},Qc={class:"event-bar"},Zc={key:1,class:"empty-state"},ea={class:"card card-bus"},ta={class:"card-head"},sa={key:0,class:"meta-chip"},na={class:"pill-row"},ra={class:"pill success"},oa={class:"pill danger"},ia={class:"pill neutral"},la={class:"bus-track"},ca=["title"],aa={class:"bus-scale"},ua={key:1,class:"empty-state"},fa={class:"card-head"},da={class:"card-head-actions"},ha={class:"meta-chip"},pa={class:"flow-toolbar"},ga={class:"flow-field"},ma={class:"flow-field flow-field-search"},ya={class:"flow-field flow-field-select"},ba=["value"],_a={class:"flow-frame"},va=["viewBox"],wa=["id"],Sa=["fill"],xa=["d","stroke","stroke-width","opacity","marker-end"],Aa=["cx","cy"],Ea=["x","y"],Na=["x","y"],Ma=["x","y"],Ca=["x","y"],Ta={key:1,class:"empty-state flow-empty"},Ia={class:"flow-note"},$a={class:"card card-anomalies"},Oa={class:"card-head"},Pa={class:"meta-chip"},ka={key:0,class:"anomaly-list"},Ra={class:"anomaly-head"},Fa={class:"anomaly-time"},Da={key:1,class:"empty-state"},La={class:"card card-chat"},Ha={class:"card-head"},ja={class:"meta-chip"},Va={class:"preset-row"},Ka=["disabled","onClick"],Ua={class:"ask-row"},Ba=["disabled"],Wa=["disabled"],Ga={class:"chat-log"},qa=["innerHTML"],za={key:1},Ja={key:0,class:"chat-message chat-pending"},Xa={key:1,class:"empty-state"},Nr="knxUltimateAI:selectedNodeId",Mr="knxUltimateAI:autoRefresh",Cr="knxUltimateAI:theme",Tr="knxUltimateAI:flowPreview",Ya={__name:"App",setup(e){const t=["mix","green","lavender"],s=["Summarize the current KNX traffic and highlight the busiest group addresses.","Explain any anomalies you see and suggest what to check first.","Generate an SVG bar chart of Top Group Addresses with counts and title."],n={write:"#7a68d8",response:"#46b86d",read:"#d99a34",repeat:"#c34747",other:"#9a93b8"},r=(()=>{try{return new URLSearchParams(window.location.search).get("nodeId")||""}catch{return""}})(),o=Us({nodes:[],selectedNodeId:"",autoRefresh:g(Mr,!0),theme:ue(u(Cr,"mix")),flowMaxNodes:h().maxNodes,flowSelectedGa:h().selectedGa,flowSearch:"",status:"Ready",loadingNodes:!1,loadingState:!1,asking:!1,stateData:null,lastError:"",chatMessages:[],chatDraft:"",pollStateHandle:null,pollNodesHandle:null}),i=zn(null),l=zn(!1);function u(p,c=""){try{return window.localStorage&&window.localStorage.getItem(p)||c}catch{return c}}function g(p,c){try{if(!window.localStorage)return c;const f=window.localStorage.getItem(p);return f==null||f===""?c:f==="true"}catch{return c}}function h(){try{if(!window.localStorage)return{maxNodes:14,selectedGa:[]};const p=window.localStorage.getItem(Tr);if(!p)return{maxNodes:14,selectedGa:[]};const c=JSON.parse(p),f=Math.max(4,Math.min(32,Number(c&&c.maxNodes)||14)),C=Array.isArray(c&&c.selectedGa)?Array.from(new Set(c.selectedGa.map(F=>String(F||"").trim()).filter(Boolean))).slice(0,80):[];return{maxNodes:f,selectedGa:C}}catch{return{maxNodes:14,selectedGa:[]}}}function b(p,c){try{window.localStorage&&window.localStorage.setItem(p,String(c??""))}catch{}}function T(p,c){try{window.localStorage&&window.localStorage.setItem(p,c?"true":"false")}catch{}}function I(){try{if(!window.localStorage)return;window.localStorage.setItem(Tr,JSON.stringify({maxNodes:Math.max(4,Math.min(32,Number(o.flowMaxNodes)||14)),selectedGa:Array.from(new Set((o.flowSelectedGa||[]).map(p=>String(p||"").trim()).filter(Boolean))).slice(0,80)}))}catch{}}async function Y(){const p=i.value;if(!(!p||typeof p.requestFullscreen!="function"))try{document.fullscreenElement===p?await document.exitFullscreen():document.fullscreenElement||await p.requestFullscreen()}catch{}}function H(){l.value=document.fullscreenElement===i.value}function ue(p){const c=String(p||"").trim().toLowerCase();return t.includes(c)?c:"mix"}function te(p){return new URL(p,window.location.href).toString()}function K(p){o.status=String(p||"")}async function se(p,c){const f=await fetch(p,Object.assign({credentials:"same-origin"},c||{})),C=await f.text();let F={};try{F=C?JSON.parse(C):{}}catch{F={error:C||`HTTP ${f.status}`}}if(!f.ok){const j=F&&F.error?F.error:`HTTP ${f.status}`;throw f.status===401||f.status===403?new Error(`Authentication required or insufficient permissions (${f.status}).`):new Error(j)}return F}function k(p){if(p==null)return"";if(typeof p=="string")return p;try{return JSON.stringify(p,null,2)}catch{return String(p)}}function fe(p){return String(p||"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function Ge(p){const c=String(p||"").trim();return c.includes("-")&&/^\|?\s*:?-{3,}:?\s*(\|\s*:?-{3,}:?\s*)+\|?\s*$/.test(c)}function Ce(p){let c=String(p||"").trim();return c.startsWith("|")&&(c=c.slice(1)),c.endsWith("|")&&(c=c.slice(0,-1)),c.split("|").map(f=>String(f||"").trim())}function qe(p){return Ce(p).map(c=>{const f=String(c||"").trim(),C=f.startsWith(":"),F=f.endsWith(":");return C&&F?"center":F?"right":"left"})}function Dt(p){const c=String(p||"").split(/\r?\n/);let f="",C=!1;const F=j=>{let U=String(j||"");return U=U.replace(/`([^`]+)`/g,"<code>$1</code>"),U=U.replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>"),U=U.replace(/\*([^*]+)\*/g,"<em>$1</em>"),U=U.replace(/\[([^\]]+)\]\(([^)]+)\)/g,(me,he,ne)=>`<a href="${/^javascript:/i.test(String(ne||"").trim())?"#":ne}" target="_blank" rel="noopener noreferrer">${he}</a>`),U};for(let j=0;j<c.length;j++){const U=c[j];if(/^```/.test(U.trim())){C=!C,f+=C?"<pre><code>":"</code></pre>";continue}if(C){f+=`${U}
2
- `;continue}if(/^###\s+/.test(U)){f+=`<h3>${U.replace(/^###\s+/,"")}</h3>`;continue}if(/^##\s+/.test(U)){f+=`<h2>${U.replace(/^##\s+/,"")}</h2>`;continue}if(/^#\s+/.test(U)){f+=`<h1>${U.replace(/^#\s+/,"")}</h1>`;continue}if(U.includes("|")&&j+1<c.length&&Ge(c[j+1])){const ne=Ce(U),le=qe(c[j+1]),be=[];for(j+=2;j<c.length&&c[j]&&c[j].includes("|")&&!/^```/.test(c[j].trim());)be.push(Ce(c[j])),j++;j-=1;const Fe=Math.max(ne.length,le.length,...be.map(ae=>ae.length),0);f+='<div class="chat-table-wrap"><table><thead><tr>';for(let ae=0;ae<Fe;ae++)f+=`<th style="text-align:${le[ae]||"left"};">${F(ne[ae]||"")}</th>`;f+="</tr></thead><tbody>",be.forEach(ae=>{f+="<tr>";for(let Oe=0;Oe<Fe;Oe++)f+=`<td style="text-align:${le[Oe]||"left"};">${F(ae[Oe]||"")}</td>`;f+="</tr>"}),f+="</tbody></table></div>";continue}const me=/^\s*[-*]\s+/.test(U),he=/^\s*\d+\.\s+/.test(U);if(me||he){const ne=he?"ol":"ul",le=he?/^\s*\d+\.\s+/:/^\s*[-*]\s+/;for(f+=`<${ne}>`;j<c.length&&le.test(c[j]);)f+=`<li>${F(c[j].replace(le,""))}</li>`,j++;j-=1,f+=`</${ne}>`;continue}if(U.trim()===""){f+="<br>";continue}f+=`<p>${F(U)}</p>`}return C&&(f+="</code></pre>"),f}function ze(p){return String(p||"").replace(/&lt;/gi,"<").replace(/&gt;/gi,">").replace(/&quot;/gi,'"').replace(/&#39;/gi,"'").replace(/&amp;/gi,"&")}function it(p){const c=[],f=/<svg[\s\S]*?<\/svg>/gi;let C;for(;(C=f.exec(String(p||"")))!==null;)C&&C[0]&&c.push(String(C[0]));return c}const Lt=new Set(["svg","g","path","line","polyline","polygon","circle","ellipse","rect","text","tspan","title","desc","defs","marker","lineargradient","radialgradient","stop","clippath"]),Ht=new Set(["xmlns","xmlns:xlink","viewbox","preserveaspectratio","width","height","role","aria-label","id","class","x","y","x1","y1","x2","y2","cx","cy","r","rx","ry","d","points","transform","fill","fill-opacity","stroke","stroke-width","stroke-opacity","stroke-dasharray","stroke-linecap","stroke-linejoin","opacity","font-size","font-family","font-weight","text-anchor","dominant-baseline","offset","stop-color","stop-opacity","gradientunits","gradienttransform","fx","fy","marker-start","marker-mid","marker-end","markerwidth","markerheight","refx","refy","orient","markerunits","href","xlink:href","clip-path","clippathunits"]);function Ct(p){try{const f=new window.DOMParser().parseFromString(String(p||""),"image/svg+xml");if(!f||!f.documentElement||f.getElementsByTagName("parsererror").length)return"";const C=f.documentElement;if(String(C.tagName||"").toLowerCase()!=="svg")return"";const F=U=>{const me=String(U.tagName||"").toLowerCase();if(!Lt.has(me)){U.remove();return}Array.from(U.attributes||[]).forEach(he=>{const ne=String(he.name||"").toLowerCase(),le=String(he.value||"");if(ne.startsWith("on")||!Ht.has(ne)){U.removeAttribute(he.name);return}(ne==="href"||ne==="xlink:href")&&le&&!String(le).trim().startsWith("#")&&U.removeAttribute(he.name)}),Array.from(U.childNodes||[]).forEach(he=>{he.nodeType===1?F(he):he.nodeType!==3&&he.remove()})};F(C),!C.getAttribute("viewBox")&&!C.getAttribute("viewbox")&&C.setAttribute("viewBox","0 0 920 360"),C.setAttribute("role",C.getAttribute("role")||"img");const j=new window.XMLSerializer().serializeToString(C);return j.length>12e4?"":j}catch{return""}}function wt(p){return Dt(fe(p||""))}function ye(p){const c=k(p),f=c.trim();if(!f)return wt("(empty answer)");const C=/```(?:svg|xml|html)?\s*([\s\S]*?)```/gi;let F="",j=0,U=!1,me;for(;(me=C.exec(c))!==null;){const ne=c.slice(j,me.index);ne.trim()&&(F+=wt(ne));const le=String(me[1]||""),be=ze(le),Fe=it(be);if(Fe.length){let ae=0;Fe.forEach(Oe=>{const je=Ct(Oe);je&&(ae++,U=!0,F+=`<div class="chat-svg-wrap">${je}</div>`)}),ae||(F+=`<pre><code>${fe(le)}</code></pre>`)}else{const ae=Ct(be);ae?(U=!0,F+=`<div class="chat-svg-wrap">${ae}</div>`):F+=`<pre><code>${fe(le)}</code></pre>`}j=me.index+me[0].length}const he=c.slice(j);if(he.trim()&&(F+=wt(he)),!U){const ne=ze(c),le=Array.from(new Set([...it(c),...it(ne)])).map(be=>Ct(be)).filter(Boolean);if(le.length){const be=c.replace(/<svg[\s\S]*?<\/svg>/gi,"").replace(/&lt;svg[\s\S]*?&lt;\/svg&gt;/gi,"").trim();F=be?wt(be):"",le.forEach(Fe=>{F+=`<div class="chat-svg-wrap">${Fe}</div>`})}}return F||wt(f)}function oe(p){const c=Math.max(0,Math.round(Number(p)||0)),f=Math.floor(c/3600),C=Math.floor(c%3600/60),F=c%60;return f?`${f}h ${C}m`:C?`${C}m ${F}s`:`${F}s`}function X(p){if(!p)return"n/a";try{return new Date(p).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})}catch{return"n/a"}}function lt(p){if(!p)return"";try{return new Date(p).toLocaleString()}catch{return String(p)}}function ct(p){return p&&p.payload&&typeof p.payload=="object"?p.payload:{}}function Je(p){return p==null?"":String(p).trim()}function ke(p){const c=String(p||"").trim();return c.length>14?`${c.slice(0,12)}..`:c}function Ss(p){const c=String(p||"").trim();return c?c.length>28?`${c.slice(0,26)}..`:c:""}function Js(p){const c=Je(p).replace(/\s+/g," ");return c?c.length>30?`${c.slice(0,28)}..`:c:""}function Xs(p){const c=String(p||"").toLowerCase();return c.includes("repeat")?"repeat":c.includes("write")?"write":c.includes("response")?"response":c.includes("read")?"read":"other"}function Tt(p){const c={write:0,response:0,read:0,repeat:0,other:0};return Object.keys(p||{}).forEach(f=>{const C=Number(p[f]||0);C<=0||(c[Xs(f)]+=C)}),Object.keys(c).sort((f,C)=>c[C]-c[f])[0]||"other"}function jt(p){const c=p&&p.summary?p.summary:{},f=Array.isArray(p&&p.anomalies)?p.anomalies:[],C=Array.isArray(c.patternTransitions)?c.patternTransitions:[],F=Array.isArray(c.patterns)?c.patterns:[],j=c&&typeof c.gaLabels=="object"?c.gaLabels:{},U=c&&typeof c.gaLastPayload=="object"?c.gaLastPayload:{},me=c&&typeof c.gaLastSeenAt=="object"?c.gaLastSeenAt:{},he=new Set((Array.isArray(c.flowKnownGAs)?c.flowKnownGAs:[]).map(y=>String(y||"").trim()).filter(Boolean)),ne={};f.forEach(y=>{const P=String(y&&y.payload&&y.payload.ga?y.payload.ga:"BUS").trim()||"BUS";ne[P]=(ne[P]||0)+1});const le=c&&c.flowMapTopology&&typeof c.flowMapTopology=="object"?c.flowMapTopology:null,be=Array.isArray(le&&le.nodes)?le.nodes:[],Fe=Array.isArray(le&&le.edges)?le.edges:[],ae=new Map,Oe=y=>{const P=String(y&&y.from?y.from:"").trim(),z=String(y&&y.to?y.to:"").trim();if(!P||!z||P===z)return;const at=`${P}->${z}`,Ve={key:at,from:P,to:z,weight:Math.max(1,Number(y&&(y.weight??y.currentWindowCount??y.totalCount??y.count)||1)),delta:Number(y&&y.delta?y.delta:0),edgeByEvent:y&&typeof y.edgeByEvent=="object"?y.edgeByEvent:{},lastAtMs:(()=>{const Ke=Number(y&&y.lastAtMs?y.lastAtMs:0);if(Number.isFinite(Ke)&&Ke>0)return Ke;const Kt=new Date(String(y&&y.lastAt?y.lastAt:"")).getTime();return Number.isFinite(Kt)?Kt:0})(),linkType:String(y&&y.linkType?y.linkType:"").trim()};if(!ae.has(at)){ae.set(at,Ve);return}const ut=ae.get(at);ut.weight+=Ve.weight,ut.delta+=Ve.delta,ut.lastAtMs=Math.max(Number(ut.lastAtMs||0),Number(Ve.lastAtMs||0)),Object.keys(Ve.edgeByEvent||{}).forEach(Ke=>{ut.edgeByEvent[Ke]=Number(ut.edgeByEvent[Ke]||0)+Number(Ve.edgeByEvent[Ke]||0)})};Fe.length?Fe.forEach(Oe):C.length?C.forEach(Oe):F.forEach(y=>Oe({from:y&&y.from,to:y&&y.to,count:y&&y.count,edgeByEvent:{}}));const je=new Map,L=(y,P={})=>{const z=String(y||"").trim();return z?(je.has(z)||je.set(z,{id:z,displayId:String(P.displayId||z).trim()||z,kind:String(P.kind||(z.startsWith("N:")?"node":"ga")).trim()||"ga",subtitle:String(P.subtitle||"").trim(),payload:Je(P.payload),anomalyCount:Number(P.anomalyCount||ne[z]||0),inFlow:P.inFlow!==void 0?!!P.inFlow:he.size?he.has(z)||z==="BUS"||z.startsWith("N:"):!0,lastSeenAtMs:Number(P.lastSeenAtMs||0),score:Number(P.score||0)}),je.get(z)):null};return be.forEach(y=>{const P=String(y&&y.id?y.id:"").trim();P&&L(P,{displayId:y&&y.displayId,kind:y&&y.kind,subtitle:y&&y.subtitle?y.subtitle:j[P],payload:y&&y.payload!==void 0?y.payload:U[P],anomalyCount:Number(y&&y.anomalyCount?y.anomalyCount:ne[P]||0),inFlow:y&&y.inFlow!==void 0?!!y.inFlow:void 0,lastSeenAtMs:Number(y&&y.lastSeenAtMs?y.lastSeenAtMs:new Date(String(y&&y.lastAt?y.lastAt:me[P]||"")).getTime()||0),score:Number(y&&y.score?y.score:0)})}),Array.from(ae.values()).forEach(y=>{L(y.from,{subtitle:j[y.from],payload:U[y.from],lastSeenAtMs:new Date(String(me[y.from]||"")).getTime()||y.lastAtMs||0}),L(y.to,{subtitle:j[y.to],payload:U[y.to],lastSeenAtMs:new Date(String(me[y.to]||"")).getTime()||y.lastAtMs||0});const P=je.get(y.from),z=je.get(y.to);P&&(P.score+=Number(y.weight||0)),z&&(z.score+=Number(y.weight||0))}),(Array.isArray(c.topGAs)?c.topGAs:[]).slice(0,12).forEach(y=>{const P=String(y&&y.ga?y.ga:"").trim();if(!P)return;const z=L(P,{subtitle:y&&y.label?y.label:j[P],payload:U[P],lastSeenAtMs:new Date(String(me[P]||"")).getTime()||0});z&&(z.score+=Number(y&&y.count?y.count:0))}),{nodes:Array.from(je.values()),edges:Array.from(ae.values()).sort((y,P)=>Number(P.weight||0)-Number(y.weight||0)).slice(0,48),telemetryWindowSec:Number(c&&c.graph&&c.graph.windowSec?c.graph.windowSec:c?.meta?.analysisWindowSec||0)}}function ts(p){const c=Array.isArray(p&&p.nodes)?p.nodes.slice():[],f=Array.isArray(p&&p.edges)?p.edges.slice():[],C=new Set((o.flowSelectedGa||[]).map(L=>String(L||"").trim()).filter(Boolean)),F=Math.max(4,Math.min(32,Number(o.flowMaxNodes)||14));let j=c.slice().sort((L,y)=>{const P=Number(L.anomalyCount||0)*10+Number(L.score||0),z=Number(y.anomalyCount||0)*10+Number(y.score||0);return z!==P?z-P:String(L.id||"").localeCompare(String(y.id||""))});if(C.size){const L=new Set(C);f.forEach(y=>{C.has(y.from)&&L.add(y.to),C.has(y.to)&&L.add(y.from)}),j=j.filter(y=>L.has(y.id))}else j=j.slice(0,F);const U=new Set(j.map(L=>L.id)),me=f.filter(L=>U.has(L.from)&&U.has(L.to)),he=Math.max(...me.map(L=>Number(L.weight||0)),1),ne=Math.max(2,Math.min(6,Math.ceil(Math.sqrt(Math.max(j.length,4)*1.5)))),le=Math.max(1,Math.ceil(j.length/ne)),be=1080,Fe=Math.max(420,140+(le-1)*150),ae=new Map;j.forEach((L,y)=>{const P=Math.floor(y/ne),z=y%ne,at=ne===1?be/2:90+z*((be-180)/Math.max(ne-1,1)),Ve=92+P*148;ae.set(L.id,{x:at,y:Ve,row:P,col:z})});const Oe=Date.now(),je=me.map((L,y)=>{const P=ae.get(L.from),z=ae.get(L.to);if(!P||!z)return null;const at=z.x-P.x,Ve=z.y-P.y,ut=Math.max(Math.hypot(at,Ve),1),Ke=at/ut,Kt=Ve/ut,xs=24,Fn=P.x+Ke*(xs+2),Dn=P.y+Kt*(xs+2),Ln=z.x-Ke*(xs+8),Hn=z.y-Kt*(xs+8),Ho=-Kt,jo=Ke,jn=28+y%3*14,Vn=y%2===0?1:-1,Vo=(Fn+Ln)/2+Ho*jn*Vn,Ko=(Dn+Hn)/2+jo*jn*Vn,Kn=Tt(L.edgeByEvent),Un=Number(L.lastAtMs||0)>0&&Oe-Number(L.lastAtMs||0)<=5e3;return{key:L.key,from:L.from,to:L.to,d:`M ${Fn} ${Dn} Q ${Vo} ${Ko} ${Ln} ${Hn}`,width:(.9+Number(L.weight||0)/he*1.7).toFixed(2),color:n[Kn]||n.other,opacity:Un?.82:.24,markerId:`flow-arrow-${Kn}`,tooltip:`${L.from} -> ${L.to} | traffic: ${Number(L.weight||0)}${L.delta?` | delta: ${L.delta>0?"+":""}${L.delta}`:""}`,active:Un}}).filter(Boolean);return{width:be,height:Fe,telemetryWindowSec:Number(p&&p.telemetryWindowSec?p.telemetryWindowSec:0),nodes:j.map(L=>{const y=ae.get(L.id),P=Number(L.lastSeenAtMs||0);return Object.assign({},L,y,{shortLabel:ke(L.displayId||L.id),shortSubtitle:Ss(L.subtitle),shortPayload:Js(L.payload),isIdle:P>0&&Oe-P>45e3})}),edges:je,maxNodes:F,selectedCount:C.size}}const It=Ee(()=>o.nodes.find(p=>p.id===o.selectedNodeId)||null),de=Ee(()=>o.stateData&&o.stateData.summary?o.stateData.summary:{}),Vt=Ee(()=>o.stateData&&o.stateData.node?o.stateData.node:{}),a=Ee(()=>Array.isArray(o.stateData&&o.stateData.anomalies)?o.stateData.anomalies.slice().reverse():[]),d=Ee(()=>Array.isArray(de.value.topGAs)?de.value.topGAs.slice(0,10):[]),m=Ee(()=>{const p=de.value&&de.value.byEvent&&typeof de.value.byEvent=="object"?de.value.byEvent:{};return Object.keys(p).map(c=>({name:c,count:Number(p[c]||0)})).filter(c=>c.count>0).sort((c,f)=>f.count-c.count)}),x=Ee(()=>Math.max(...m.value.map(p=>p.count),1)),w=Ee(()=>jt(o.stateData)),_=Ee(()=>ts(w.value)),N=Ee(()=>{const p=String(o.flowSearch||"").trim().toLowerCase();return w.value.nodes.slice().sort((c,f)=>String(c.id||"").localeCompare(String(f.id||""))).filter(c=>p?`${c.id} ${c.subtitle||""}`.toLowerCase().includes(p):!0).slice(0,120)}),A=Ee(()=>de.value&&de.value.busConnection&&typeof de.value.busConnection=="object"?de.value.busConnection:null),E=Ee(()=>{const p=de.value||{};if(!Object.keys(p).length)return"No data available.";const c=p.counters||{},f=[];return f.push(Vt.value.name||It.value?.name||"KNX AI"),f.push(`Analysis window: ${Number(p.meta?.analysisWindowSec||0)}s`),f.push(`Telegrams: ${Number(c.telegrams||0)} | Rate: ${Number(c.overallRatePerSec||0)}/s`),f.push(`Echoed: ${Number(c.echoed||0)} | Repeat: ${Number(c.repeated||0)} | Unknown DPT: ${Number(c.unknownDpt||0)}`),A.value&&f.push(`Bus: ${String(A.value.currentState||"unknown")} | Connected: ${Number(A.value.connectedPct||0)}% | Disconnected: ${Number(A.value.disconnectedPct||0)}%`),f.join(`
3
- `)}),S=Ee(()=>{const p=A.value;return!p||!Array.isArray(p.segments)?[]:p.segments.map((c,f)=>{const C=Math.max(0,Math.min(1,Number(c&&c.ratioStart)||0)),F=Math.max(0,Math.min(1,Number(c&&c.ratioWidth)||0));return{key:`${f}-${c?.startedAt||""}`,left:`${(C*100).toFixed(3)}%`,width:`${Math.max(F*100,.4).toFixed(3)}%`,title:`${c?.state==="connected"?"Connected":"Disconnected"} | ${X(c?.startedAt)} -> ${X(c?.endedAt)} | ${oe(c?.durationSec||0)}`,className:c?.state==="connected"?"segment-connected":"segment-disconnected"}}).filter(c=>Number.parseFloat(c.width)>0)}),O=Ee(()=>o.chatMessages.map((p,c)=>({key:`${c}-${p.kind}`,kind:p.kind,rawText:k(p.text),html:p.kind==="assistant"?ye(p.text):""})));At(()=>o.selectedNodeId,p=>{b(Nr,p||"")}),At(()=>o.autoRefresh,p=>{T(Mr,p)}),At(()=>o.theme,p=>{b(Cr,ue(p)),R()}),At(()=>o.flowMaxNodes,p=>{o.flowMaxNodes=Math.max(4,Math.min(32,Number(p)||14)),I()}),At(()=>(o.flowSelectedGa||[]).join("|"),()=>{I()});function M(p,c){o.chatMessages.push({kind:p,text:c})}function $(){o.chatMessages=[]}function R(){const p="knx-ai-theme-link-vue";let c=document.getElementById(p);c||(c=document.createElement("link"),c.id=p,c.rel="stylesheet",document.head.appendChild(c));const f=ue(o.theme),C=te(`theme/${f}.css`);c.getAttribute("href")!==C&&(c.setAttribute("href",C),document.documentElement.setAttribute("data-theme",f))}function q(p){const c=r&&p.find(F=>F.id===r)?r:"",f=u(Nr,""),C=f&&p.find(F=>F.id===f)?f:"";return c||C||(p[0]?p[0].id:"")}async function Q({preserveSelection:p=!0}={}){o.loadingNodes=!0,K("Loading nodes...");try{const c=await se(te("nodes")),f=Array.isArray(c&&c.nodes)?c.nodes:[];if(o.nodes=f,!f.length){o.selectedNodeId="",o.stateData=null,o.lastError="No KNX AI nodes found.",K(o.lastError);return}const C=p&&o.selectedNodeId&&f.find(F=>F.id===o.selectedNodeId)?o.selectedNodeId:q(f);o.selectedNodeId=C,o.lastError="",K("Ready")}catch(c){o.lastError=c.message||"Failed to load nodes",K(o.lastError)}finally{o.loadingNodes=!1}}async function J({fresh:p=!1}={}){if(!(!o.selectedNodeId||o.loadingState)){o.loadingState=!0,p&&K("Loading...");try{const c=await se(te(`state?nodeId=${encodeURIComponent(o.selectedNodeId)}&fresh=${p?1:0}`));o.stateData=c,o.lastError="",K("Ready")}catch(c){o.lastError=c.message||"Failed to load state",K(o.lastError)}finally{o.loadingState=!1}}}async function _e(){await Q({preserveSelection:!0}),await J({fresh:!0})}async function ve(){$(),await J({fresh:!0})}async function Te(p=""){const c=String(p||"").trim(),f=c||String(o.chatDraft||"").trim();if(!(!f||!o.selectedNodeId)){M("user",f),c||(o.chatDraft=""),o.asking=!0,K("Asking...");try{const C=await se(te("ask"),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({nodeId:o.selectedNodeId,question:f})});M("assistant",C&&C.answer!==void 0?C.answer:""),K("Ready")}catch(C){M("error",C.message||"Ask failed"),K(C.message||"Ask failed")}finally{o.asking=!1}}}function Re(){o.pollStateHandle||(o.pollStateHandle=window.setInterval(()=>{o.autoRefresh&&J({fresh:!1})},1500)),o.pollNodesHandle||(o.pollNodesHandle=window.setInterval(()=>{Q({preserveSelection:!0})},15e3))}function $t(){o.pollStateHandle&&(window.clearInterval(o.pollStateHandle),o.pollStateHandle=null),o.pollNodesHandle&&(window.clearInterval(o.pollNodesHandle),o.pollNodesHandle=null)}return fo(async()=>{document.addEventListener("fullscreenchange",H),R(),await Q({preserveSelection:!1}),await J({fresh:!0}),Re()}),ho(()=>{document.removeEventListener("fullscreenchange",H),$t()}),(p,c)=>(B(),W("div",vc,[v("header",wc,[c[9]||(c[9]=v("div",{class:"brand"},[v("p",{class:"eyebrow"},"Vue Preview"),v("h1",null,"KNX AI Web"),v("p",{class:"subhead"},"Nuova UI in Vue 3, servita dal backend di Node-RED. Ora include anche una flow map SVG nativa per lavorare senza uscire dalla preview.")],-1)),v("div",Sc,[v("div",xc,[(B(),W(pe,null,De(t,f=>v("button",{key:f,class:Qe(["theme-button",{active:o.theme===f}]),type:"button",onClick:C=>o.theme=f},V(f),11,Ac)),64))]),Bt(v("select",{"onUpdate:modelValue":c[0]||(c[0]=f=>o.selectedNodeId=f),class:"node-select",onChange:ve},[(B(!0),W(pe,null,De(o.nodes,f=>(B(),W("option",{key:f.id,value:f.id},V(`${f.name||"KNX AI"}${f.gatewayName?` | ${f.gatewayName}`:""}`),9,Ec))),128))],544),[[xr,o.selectedNodeId]]),v("label",Nc,[Bt(v("input",{"onUpdate:modelValue":c[1]||(c[1]=f=>o.autoRefresh=f),type:"checkbox"},null,512),[[cc,o.autoRefresh]]),c[8]||(c[8]=v("span",null,"Auto refresh",-1))]),v("button",{class:"primary-button",type:"button",disabled:o.loadingNodes||o.loadingState,onClick:_e}," Refresh ",8,Mc)]),v("div",Cc,[v("span",{class:Qe(["status-pill",{error:!!o.lastError}])},V(o.status),3),It.value?(B(),W("span",Tc,"Provider: "+V(It.value.llmProvider||"n/a")+" | Model: "+V(It.value.llmModel||"n/a"),1)):St("",!0)])]),v("main",Ic,[v("section",$c,[v("div",Oc,[c[10]||(c[10]=v("h2",null,"Summary",-1)),de.value.meta?.generatedAt?(B(),W("span",Pc,V(lt(de.value.meta.generatedAt)),1)):St("",!0)]),v("pre",kc,V(E.value),1),v("div",Rc,[v("article",Fc,[c[11]||(c[11]=v("span",null,"Telegrams",-1)),v("strong",null,V(Number(de.value.counters?.telegrams||0)),1)]),v("article",Dc,[c[12]||(c[12]=v("span",null,"Rate",-1)),v("strong",null,V(Number(de.value.counters?.overallRatePerSec||0))+"/s",1)]),v("article",Lc,[c[13]||(c[13]=v("span",null,"Repeat",-1)),v("strong",null,V(Number(de.value.counters?.repeated||0)),1)]),v("article",Hc,[c[14]||(c[14]=v("span",null,"Unknown DPT",-1)),v("strong",null,V(Number(de.value.counters?.unknownDpt||0)),1)])])]),v("section",jc,[v("div",Vc,[c[15]||(c[15]=v("h2",null,"Top Group Addresses",-1)),v("span",Kc,V(d.value.length)+" visible",1)]),d.value.length?(B(),W("ul",Uc,[(B(!0),W(pe,null,De(d.value,f=>(B(),W("li",{key:f.ga,class:"rank-row"},[v("span",Bc,V(f.ga),1),v("span",Wc,V(f.label||"Unlabeled"),1),v("strong",null,V(Number(f.count||0)),1)]))),128))])):(B(),W("p",Gc,"No top group address data available yet."))]),v("section",qc,[v("div",zc,[c[16]||(c[16]=v("h2",null,"Event Mix",-1)),v("span",Jc,V(m.value.length)+" event types",1)]),m.value.length?(B(),W("ul",Xc,[(B(!0),W(pe,null,De(m.value,f=>(B(),W("li",{key:f.name,class:"event-row"},[v("span",Yc,V(f.name),1),v("div",Qc,[v("span",{class:"event-bar-fill",style:ds({width:`${Math.max(f.count/x.value*100,6)}%`})},null,4)]),v("strong",null,V(f.count),1)]))),128))])):(B(),W("p",Zc,"Event distribution will appear after the first samples."))]),v("section",ea,[v("div",ta,[c[17]||(c[17]=v("h2",null,"Bus Connection Persistence",-1)),A.value?(B(),W("span",sa,V(String(A.value.currentState||"unknown")),1)):St("",!0)]),A.value?(B(),W(pe,{key:0},[v("div",na,[v("span",ra,"Connected "+V(oe(A.value.connectedSec||0)),1),v("span",oa,"Disconnected "+V(oe(A.value.disconnectedSec||0)),1),v("span",ia,"Coverage "+V(Number(A.value.knownCoveragePct||0))+"%",1)]),v("div",la,[(B(!0),W(pe,null,De(S.value,f=>(B(),W("span",{key:f.key,class:Qe(["bus-segment",f.className]),style:ds({left:f.left,width:f.width}),title:f.title},null,14,ca))),128))]),v("div",aa,[v("span",null,V(X(A.value.windowStartAt)),1),v("span",null,V(X(A.value.windowEndAt)),1),c[18]||(c[18]=v("span",null,"Now",-1))]),c[19]||(c[19]=v("p",{class:"bus-note"},"Green shows time connected to the KNX bus. Red shows downtime inside the selected history window.",-1))],64)):(B(),W("p",ua,"Waiting for connection persistence data..."))]),v("section",{ref_key:"flowCardRef",ref:i,class:Qe(["card card-flow",{"is-fullscreen":l.value}])},[v("div",fa,[c[20]||(c[20]=v("h2",null,"Flow Map",-1)),v("div",da,[v("span",ha," Nodes "+V(_.value.nodes.length)+" | Links "+V(_.value.edges.length),1),v("button",{class:"secondary-button",type:"button",onClick:Y},V(l.value?"Exit Fullscreen":"Fullscreen"),1)])]),v("div",pa,[v("label",ga,[c[21]||(c[21]=v("span",null,"Max nodes",-1)),Bt(v("input",{"onUpdate:modelValue":c[2]||(c[2]=f=>o.flowMaxNodes=f),type:"number",min:"4",max:"32",step:"1"},null,512),[[ln,o.flowMaxNodes,void 0,{number:!0}]])]),v("label",ma,[c[22]||(c[22]=v("span",null,"Find GA",-1)),Bt(v("input",{"onUpdate:modelValue":c[3]||(c[3]=f=>o.flowSearch=f),type:"text",placeholder:"Search GA or label"},null,512),[[ln,o.flowSearch]])]),v("label",ya,[c[23]||(c[23]=v("span",null,"Focus nodes",-1)),Bt(v("select",{"onUpdate:modelValue":c[4]||(c[4]=f=>o.flowSelectedGa=f),multiple:"",size:"5"},[(B(!0),W(pe,null,De(N.value,f=>(B(),W("option",{key:f.id,value:f.id},V(`${f.id}${f.subtitle?` | ${f.subtitle}`:""}`),9,ba))),128))],512),[[xr,o.flowSelectedGa]])]),c[24]||(c[24]=Tl('<div class="flow-legend" data-v-d00cc40d><span data-v-d00cc40d><i class="legend-line legend-write" data-v-d00cc40d></i>Write</span><span data-v-d00cc40d><i class="legend-line legend-response" data-v-d00cc40d></i>Response</span><span data-v-d00cc40d><i class="legend-line legend-read" data-v-d00cc40d></i>Read</span><span data-v-d00cc40d><i class="legend-line legend-repeat" data-v-d00cc40d></i>Repeat</span><span data-v-d00cc40d><i class="legend-dot legend-anomaly" data-v-d00cc40d></i>Anomaly</span><span data-v-d00cc40d><i class="legend-dot legend-external" data-v-d00cc40d></i>External</span></div>',1))]),v("div",_a,[_.value.nodes.length?(B(),W("svg",{key:0,class:"flow-svg",viewBox:`0 0 ${_.value.width} ${_.value.height}`,preserveAspectRatio:"xMidYMid meet"},[v("defs",null,[(B(),W(pe,null,De(n,(f,C)=>v("marker",{id:`flow-arrow-${C}`,key:C,viewBox:"0 0 10 8",markerWidth:"10",markerHeight:"8",refX:"8.8",refY:"4",orient:"auto",markerUnits:"userSpaceOnUse"},[v("path",{d:"M0,0 L10,4 L0,8 z",fill:f},null,8,Sa)],8,wa)),64))]),(B(!0),W(pe,null,De(_.value.edges,f=>(B(),W("path",{key:f.key,class:Qe(["flow-edge",{"flow-edge-active":f.active,"flow-edge-idle":!f.active}]),d:f.d,stroke:f.color,"stroke-width":f.width,opacity:f.opacity,"marker-end":`url(#${f.markerId})`},[v("title",null,V(f.tooltip),1)],10,xa))),128)),(B(!0),W(pe,null,De(_.value.nodes,f=>(B(),W("g",{key:f.id,class:Qe(["flow-node",{"is-anomaly":f.anomalyCount>0,"is-external":!f.inFlow,"is-idle":f.isIdle}])},[v("circle",{cx:f.x,cy:f.y,r:"24"},null,8,Aa),v("text",{class:"node-label",x:f.x,y:f.y+1},V(f.shortLabel),9,Ea),f.shortSubtitle?(B(),W("text",{key:0,class:"node-subtitle",x:f.x,y:f.y+38},V(f.shortSubtitle),9,Na)):St("",!0),f.shortPayload?(B(),W("text",{key:1,class:"node-payload",x:f.x,y:f.y+52},V(f.shortPayload),9,Ma)):St("",!0),f.anomalyCount>0?(B(),W("text",{key:2,class:"node-badge",x:f.x,y:f.y-30},"anomaly x"+V(f.anomalyCount),9,Ca)):St("",!0),v("title",null,V(`${f.id}${f.subtitle?` | ${f.subtitle}`:""}${f.payload?` | payload: ${f.payload}`:""}`),1)],2))),128))],8,va)):(B(),W("p",Ta,"No topology data available yet."))]),v("p",Ia,"Window "+V(_.value.telemetryWindowSec||0)+"s.",1)],2),v("section",$a,[v("div",Oa,[c[25]||(c[25]=v("h2",null,"Anomalies",-1)),v("span",Pa,V(a.value.length)+" recent",1)]),a.value.length?(B(),W("div",ka,[(B(!0),W(pe,null,De(a.value.slice(0,20),f=>(B(),W("article",{key:`${f.at}-${ct(f).ga||""}`,class:"anomaly-card"},[v("div",Ra,[v("strong",null,V(ct(f).type||"anomaly"),1),v("span",null,V(ct(f).ga||"no GA"),1)]),v("p",Fa,V(f.at||""),1),v("pre",null,V(JSON.stringify(ct(f),null,2)),1)]))),128))])):(B(),W("p",Da,"No anomalies detected right now."))]),v("section",La,[v("div",Ha,[c[26]||(c[26]=v("h2",null,"Ask",-1)),v("span",ja,V(Vt.value.llmEnabled?"LLM enabled":"LLM disabled"),1)]),v("div",Va,[(B(),W(pe,null,De(s,f=>v("button",{key:f,class:"preset-button",type:"button",disabled:o.asking||!Vt.value.llmEnabled,onClick:C=>Te(f)},V(f),9,Ka)),64))]),v("div",Ua,[Bt(v("input",{"onUpdate:modelValue":c[5]||(c[5]=f=>o.chatDraft=f),class:"ask-input",type:"text",disabled:o.asking||!Vt.value.llmEnabled,placeholder:"Ask a question about KNX traffic...",onKeydown:c[6]||(c[6]=hc(fc(f=>Te(),["prevent"]),["enter"]))},null,40,Ba),[[ln,o.chatDraft]]),v("button",{class:"primary-button",type:"button",disabled:o.asking||!Vt.value.llmEnabled,onClick:c[7]||(c[7]=f=>Te())}," Send ",8,Wa)]),v("div",Ga,[(B(!0),W(pe,null,De(O.value,f=>(B(),W("article",{key:f.key,class:Qe(["chat-message",`chat-${f.kind}`])},[f.kind==="assistant"?(B(),W("div",{key:0,innerHTML:f.html},null,8,qa)):(B(),W("pre",za,V(f.rawText),1))],2))),128)),o.asking?(B(),W("article",Ja,"Thinking...")):St("",!0),!O.value.length&&!o.asking?(B(),W("p",Xa,"Ask a question about KNX traffic. SVG responses are supported here as well.")):St("",!0)])])])]))}},Qa=_c(Ya,[["__scopeId","data-v-d00cc40d"]]);mc(Qa).mount("#app");
1
+ (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))n(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&n(i)}).observe(document,{childList:!0,subtree:!0});function s(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function n(r){if(r.ep)return;r.ep=!0;const o=s(r);fetch(r.href,o)}})();function wn(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const oe={},Wt=[],rt=()=>{},Pr=()=>!1,Hs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Sn=e=>e.startsWith("onUpdate:"),Se=Object.assign,xn=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},Go=Object.prototype.hasOwnProperty,Z=(e,t)=>Go.call(e,t),D=Array.isArray,Gt=e=>bs(e)==="[object Map]",Qt=e=>bs(e)==="[object Set]",Gn=e=>bs(e)==="[object Date]",W=e=>typeof e=="function",he=e=>typeof e=="string",it=e=>typeof e=="symbol",ne=e=>e!==null&&typeof e=="object",kr=e=>(ne(e)||W(e))&&W(e.then)&&W(e.catch),Rr=Object.prototype.toString,bs=e=>Rr.call(e),qo=e=>bs(e).slice(8,-1),Fr=e=>bs(e)==="[object Object]",An=e=>he(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,rs=wn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),js=e=>{const t=Object.create(null);return(s=>t[s]||(t[s]=e(s)))},zo=/-\w/g,Ke=js(e=>e.replace(zo,t=>t.slice(1).toUpperCase())),Jo=/\B([A-Z])/g,Ct=js(e=>e.replace(Jo,"-$1").toLowerCase()),Dr=js(e=>e.charAt(0).toUpperCase()+e.slice(1)),Zs=js(e=>e?`on${Dr(e)}`:""),nt=(e,t)=>!Object.is(e,t),Cs=(e,...t)=>{for(let s=0;s<e.length;s++)e[s](...t)},Lr=(e,t,s,n=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:s})},Us=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let qn;const Vs=()=>qn||(qn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function fs(e){if(D(e)){const t={};for(let s=0;s<e.length;s++){const n=e[s],r=he(n)?Zo(n):fs(n);if(r)for(const o in r)t[o]=r[o]}return t}else if(he(e)||ne(e))return e}const Xo=/;(?![^(]*\))/g,Yo=/:([^]+)/,Qo=/\/\*[^]*?\*\//g;function Zo(e){const t={};return e.replace(Qo,"").split(Xo).forEach(s=>{if(s){const n=s.split(Yo);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function et(e){let t="";if(he(e))t=e;else if(D(e))for(let s=0;s<e.length;s++){const n=et(e[s]);n&&(t+=n+" ")}else if(ne(e))for(const s in e)e[s]&&(t+=s+" ");return t.trim()}const ei="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",ti=wn(ei);function Hr(e){return!!e||e===""}function si(e,t){if(e.length!==t.length)return!1;let s=!0;for(let n=0;s&&n<e.length;n++)s=Zt(e[n],t[n]);return s}function Zt(e,t){if(e===t)return!0;let s=Gn(e),n=Gn(t);if(s||n)return s&&n?e.getTime()===t.getTime():!1;if(s=it(e),n=it(t),s||n)return e===t;if(s=D(e),n=D(t),s||n)return s&&n?si(e,t):!1;if(s=ne(e),n=ne(t),s||n){if(!s||!n)return!1;const r=Object.keys(e).length,o=Object.keys(t).length;if(r!==o)return!1;for(const i in e){const a=e.hasOwnProperty(i),u=t.hasOwnProperty(i);if(a&&!u||!a&&u||!Zt(e[i],t[i]))return!1}}return String(e)===String(t)}function Nn(e,t){return e.findIndex(s=>Zt(s,t))}const jr=e=>!!(e&&e.__v_isRef===!0),j=e=>he(e)?e:e==null?"":D(e)||ne(e)&&(e.toString===Rr||!W(e.toString))?jr(e)?j(e.value):JSON.stringify(e,Ur,2):String(e),Ur=(e,t)=>jr(t)?Ur(e,t.value):Gt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[n,r],o)=>(s[en(n,o)+" =>"]=r,s),{})}:Qt(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>en(s))}:it(t)?en(t):ne(t)&&!D(t)&&!Fr(t)?String(t):t,en=(e,t="")=>{var s;return it(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};let Pe;class ni{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.__v_skip=!0,this.parent=Pe,!t&&Pe&&(this.index=(Pe.scopes||(Pe.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t<s;t++)this.scopes[t].pause();for(t=0,s=this.effects.length;t<s;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t<s;t++)this.scopes[t].resume();for(t=0,s=this.effects.length;t<s;t++)this.effects[t].resume()}}run(t){if(this._active){const s=Pe;try{return Pe=this,t()}finally{Pe=s}}}on(){++this._on===1&&(this.prevScope=Pe,Pe=this)}off(){this._on>0&&--this._on===0&&(Pe=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let s,n;for(s=0,n=this.effects.length;s<n;s++)this.effects[s].stop();for(this.effects.length=0,s=0,n=this.cleanups.length;s<n;s++)this.cleanups[s]();if(this.cleanups.length=0,this.scopes){for(s=0,n=this.scopes.length;s<n;s++)this.scopes[s].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const r=this.parent.scopes.pop();r&&r!==this&&(this.parent.scopes[this.index]=r,r.index=this.index)}this.parent=void 0}}}function ri(){return Pe}let ie;const tn=new WeakSet;class Vr{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,Pe&&Pe.active&&Pe.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,tn.has(this)&&(tn.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Br(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,zn(this),Wr(this);const t=ie,s=Be;ie=this,Be=!0;try{return this.fn()}finally{Gr(this),ie=t,Be=s,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Cn(t);this.deps=this.depsTail=void 0,zn(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?tn.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){un(this)&&this.run()}get dirty(){return un(this)}}let Kr=0,os,is;function Br(e,t=!1){if(e.flags|=8,t){e.next=is,is=e;return}e.next=os,os=e}function En(){Kr++}function Mn(){if(--Kr>0)return;if(is){let t=is;for(is=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;os;){let t=os;for(os=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=s}}if(e)throw e}function Wr(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Gr(e){let t,s=e.depsTail,n=s;for(;n;){const r=n.prevDep;n.version===-1?(n===s&&(s=r),Cn(n),oi(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=r}e.deps=t,e.depsTail=s}function un(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(qr(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function qr(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===ds)||(e.globalVersion=ds,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!un(e))))return;e.flags|=2;const t=e.dep,s=ie,n=Be;ie=e,Be=!0;try{Wr(e);const r=e.fn(e._value);(t.version===0||nt(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{ie=s,Be=n,Gr(e),e.flags&=-3}}function Cn(e,t=!1){const{dep:s,prevSub:n,nextSub:r}=e;if(n&&(n.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=n,e.nextSub=void 0),s.subs===e&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let o=s.computed.deps;o;o=o.nextDep)Cn(o,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function oi(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let Be=!0;const zr=[];function bt(){zr.push(Be),Be=!1}function _t(){const e=zr.pop();Be=e===void 0?!0:e}function zn(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=ie;ie=void 0;try{t()}finally{ie=s}}}let ds=0;class ii{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Tn{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!ie||!Be||ie===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==ie)s=this.activeLink=new ii(ie,this),ie.deps?(s.prevDep=ie.depsTail,ie.depsTail.nextDep=s,ie.depsTail=s):ie.deps=ie.depsTail=s,Jr(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const n=s.nextDep;n.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=n),s.prevDep=ie.depsTail,s.nextDep=void 0,ie.depsTail.nextDep=s,ie.depsTail=s,ie.deps===s&&(ie.deps=n)}return s}trigger(t){this.version++,ds++,this.notify(t)}notify(t){En();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{Mn()}}}function Jr(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)Jr(n)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const fn=new WeakMap,Ft=Symbol(""),dn=Symbol(""),hs=Symbol("");function ve(e,t,s){if(Be&&ie){let n=fn.get(e);n||fn.set(e,n=new Map);let r=n.get(s);r||(n.set(s,r=new Tn),r.map=n,r.key=s),r.track()}}function gt(e,t,s,n,r,o){const i=fn.get(e);if(!i){ds++;return}const a=u=>{u&&u.trigger()};if(En(),t==="clear")i.forEach(a);else{const u=D(e),m=u&&An(s);if(u&&s==="length"){const p=Number(n);i.forEach((_,T)=>{(T==="length"||T===hs||!it(T)&&T>=p)&&a(_)})}else switch((s!==void 0||i.has(void 0))&&a(i.get(s)),m&&a(i.get(hs)),t){case"add":u?m&&a(i.get("length")):(a(i.get(Ft)),Gt(e)&&a(i.get(dn)));break;case"delete":u||(a(i.get(Ft)),Gt(e)&&a(i.get(dn)));break;case"set":Gt(e)&&a(i.get(Ft));break}}Mn()}function Kt(e){const t=Q(e);return t===e?t:(ve(t,"iterate",hs),je(e)?t:t.map(We))}function Ks(e){return ve(e=Q(e),"iterate",hs),e}function tt(e,t){return vt(e)?Jt(Dt(e)?We(t):t):We(t)}const li={__proto__:null,[Symbol.iterator](){return sn(this,Symbol.iterator,e=>tt(this,e))},concat(...e){return Kt(this).concat(...e.map(t=>D(t)?Kt(t):t))},entries(){return sn(this,"entries",e=>(e[1]=tt(this,e[1]),e))},every(e,t){return ft(this,"every",e,t,void 0,arguments)},filter(e,t){return ft(this,"filter",e,t,s=>s.map(n=>tt(this,n)),arguments)},find(e,t){return ft(this,"find",e,t,s=>tt(this,s),arguments)},findIndex(e,t){return ft(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return ft(this,"findLast",e,t,s=>tt(this,s),arguments)},findLastIndex(e,t){return ft(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return ft(this,"forEach",e,t,void 0,arguments)},includes(...e){return nn(this,"includes",e)},indexOf(...e){return nn(this,"indexOf",e)},join(e){return Kt(this).join(e)},lastIndexOf(...e){return nn(this,"lastIndexOf",e)},map(e,t){return ft(this,"map",e,t,void 0,arguments)},pop(){return ts(this,"pop")},push(...e){return ts(this,"push",e)},reduce(e,...t){return Jn(this,"reduce",e,t)},reduceRight(e,...t){return Jn(this,"reduceRight",e,t)},shift(){return ts(this,"shift")},some(e,t){return ft(this,"some",e,t,void 0,arguments)},splice(...e){return ts(this,"splice",e)},toReversed(){return Kt(this).toReversed()},toSorted(e){return Kt(this).toSorted(e)},toSpliced(...e){return Kt(this).toSpliced(...e)},unshift(...e){return ts(this,"unshift",e)},values(){return sn(this,"values",e=>tt(this,e))}};function sn(e,t,s){const n=Ks(e),r=n[t]();return n!==e&&!je(e)&&(r._next=r.next,r.next=()=>{const o=r._next();return o.done||(o.value=s(o.value)),o}),r}const ai=Array.prototype;function ft(e,t,s,n,r,o){const i=Ks(e),a=i!==e&&!je(e),u=i[t];if(u!==ai[t]){const _=u.apply(e,o);return a?We(_):_}let m=s;i!==e&&(a?m=function(_,T){return s.call(this,tt(e,_),T,e)}:s.length>2&&(m=function(_,T){return s.call(this,_,T,e)}));const p=u.call(i,m,n);return a&&r?r(p):p}function Jn(e,t,s,n){const r=Ks(e),o=r!==e&&!je(e);let i=s,a=!1;r!==e&&(o?(a=n.length===0,i=function(m,p,_){return a&&(a=!1,m=tt(e,m)),s.call(this,m,tt(e,p),_,e)}):s.length>3&&(i=function(m,p,_){return s.call(this,m,p,_,e)}));const u=r[t](i,...n);return a?tt(e,u):u}function nn(e,t,s){const n=Q(e);ve(n,"iterate",hs);const r=n[t](...s);return(r===-1||r===!1)&&On(s[0])?(s[0]=Q(s[0]),n[t](...s)):r}function ts(e,t,s=[]){bt(),En();const n=Q(e)[t].apply(e,s);return Mn(),_t(),n}const ci=wn("__proto__,__v_isRef,__isVue"),Xr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(it));function ui(e){it(e)||(e=String(e));const t=Q(this);return ve(t,"has",e),t.hasOwnProperty(e)}class Yr{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,n){if(s==="__v_skip")return t.__v_skip;const r=this._isReadonly,o=this._isShallow;if(s==="__v_isReactive")return!r;if(s==="__v_isReadonly")return r;if(s==="__v_isShallow")return o;if(s==="__v_raw")return n===(r?o?vi:to:o?eo:Zr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const i=D(t);if(!r){let u;if(i&&(u=li[s]))return u;if(s==="hasOwnProperty")return ui}const a=Reflect.get(t,s,we(t)?t:n);if((it(s)?Xr.has(s):ci(s))||(r||ve(t,"get",s),o))return a;if(we(a)){const u=i&&An(s)?a:a.value;return r&&ne(u)?pn(u):u}return ne(a)?r?pn(a):Bs(a):a}}class Qr extends Yr{constructor(t=!1){super(!1,t)}set(t,s,n,r){let o=t[s];const i=D(t)&&An(s);if(!this._isShallow){const m=vt(o);if(!je(n)&&!vt(n)&&(o=Q(o),n=Q(n)),!i&&we(o)&&!we(n))return m||(o.value=n),!0}const a=i?Number(s)<t.length:Z(t,s),u=Reflect.set(t,s,n,we(t)?t:r);return t===Q(r)&&(a?nt(n,o)&&gt(t,"set",s,n):gt(t,"add",s,n)),u}deleteProperty(t,s){const n=Z(t,s);t[s];const r=Reflect.deleteProperty(t,s);return r&&n&&gt(t,"delete",s,void 0),r}has(t,s){const n=Reflect.has(t,s);return(!it(s)||!Xr.has(s))&&ve(t,"has",s),n}ownKeys(t){return ve(t,"iterate",D(t)?"length":Ft),Reflect.ownKeys(t)}}class fi extends Yr{constructor(t=!1){super(!0,t)}set(t,s){return!0}deleteProperty(t,s){return!0}}const di=new Qr,hi=new fi,pi=new Qr(!0);const hn=e=>e,Ns=e=>Reflect.getPrototypeOf(e);function gi(e,t,s){return function(...n){const r=this.__v_raw,o=Q(r),i=Gt(o),a=e==="entries"||e===Symbol.iterator&&i,u=e==="keys"&&i,m=r[e](...n),p=s?hn:t?Jt:We;return!t&&ve(o,"iterate",u?dn:Ft),Se(Object.create(m),{next(){const{value:_,done:T}=m.next();return T?{value:_,done:T}:{value:a?[p(_[0]),p(_[1])]:p(_),done:T}}})}}function Es(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function mi(e,t){const s={get(r){const o=this.__v_raw,i=Q(o),a=Q(r);e||(nt(r,a)&&ve(i,"get",r),ve(i,"get",a));const{has:u}=Ns(i),m=t?hn:e?Jt:We;if(u.call(i,r))return m(o.get(r));if(u.call(i,a))return m(o.get(a));o!==i&&o.get(r)},get size(){const r=this.__v_raw;return!e&&ve(Q(r),"iterate",Ft),r.size},has(r){const o=this.__v_raw,i=Q(o),a=Q(r);return e||(nt(r,a)&&ve(i,"has",r),ve(i,"has",a)),r===a?o.has(r):o.has(r)||o.has(a)},forEach(r,o){const i=this,a=i.__v_raw,u=Q(a),m=t?hn:e?Jt:We;return!e&&ve(u,"iterate",Ft),a.forEach((p,_)=>r.call(o,m(p),m(_),i))}};return Se(s,e?{add:Es("add"),set:Es("set"),delete:Es("delete"),clear:Es("clear")}:{add(r){const o=Q(this),i=Ns(o),a=Q(r),u=!t&&!je(r)&&!vt(r)?a:r;return i.has.call(o,u)||nt(r,u)&&i.has.call(o,r)||nt(a,u)&&i.has.call(o,a)||(o.add(u),gt(o,"add",u,u)),this},set(r,o){!t&&!je(o)&&!vt(o)&&(o=Q(o));const i=Q(this),{has:a,get:u}=Ns(i);let m=a.call(i,r);m||(r=Q(r),m=a.call(i,r));const p=u.call(i,r);return i.set(r,o),m?nt(o,p)&&gt(i,"set",r,o):gt(i,"add",r,o),this},delete(r){const o=Q(this),{has:i,get:a}=Ns(o);let u=i.call(o,r);u||(r=Q(r),u=i.call(o,r)),a&&a.call(o,r);const m=o.delete(r);return u&&gt(o,"delete",r,void 0),m},clear(){const r=Q(this),o=r.size!==0,i=r.clear();return o&&gt(r,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(r=>{s[r]=gi(r,e,t)}),s}function In(e,t){const s=mi(e,t);return(n,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?n:Reflect.get(Z(s,r)&&r in n?s:n,r,o)}const yi={get:In(!1,!1)},bi={get:In(!1,!0)},_i={get:In(!0,!1)};const Zr=new WeakMap,eo=new WeakMap,to=new WeakMap,vi=new WeakMap;function wi(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Si(e){return e.__v_skip||!Object.isExtensible(e)?0:wi(qo(e))}function Bs(e){return vt(e)?e:$n(e,!1,di,yi,Zr)}function xi(e){return $n(e,!1,pi,bi,eo)}function pn(e){return $n(e,!0,hi,_i,to)}function $n(e,t,s,n,r){if(!ne(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=Si(e);if(o===0)return e;const i=r.get(e);if(i)return i;const a=new Proxy(e,o===2?n:s);return r.set(e,a),a}function Dt(e){return vt(e)?Dt(e.__v_raw):!!(e&&e.__v_isReactive)}function vt(e){return!!(e&&e.__v_isReadonly)}function je(e){return!!(e&&e.__v_isShallow)}function On(e){return e?!!e.__v_raw:!1}function Q(e){const t=e&&e.__v_raw;return t?Q(t):e}function Ai(e){return!Z(e,"__v_skip")&&Object.isExtensible(e)&&Lr(e,"__v_skip",!0),e}const We=e=>ne(e)?Bs(e):e,Jt=e=>ne(e)?pn(e):e;function we(e){return e?e.__v_isRef===!0:!1}function Xn(e){return Ni(e,!1)}function Ni(e,t){return we(e)?e:new Ei(e,t)}class Ei{constructor(t,s){this.dep=new Tn,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:Q(t),this._value=s?t:We(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,n=this.__v_isShallow||je(t)||vt(t);t=n?t:Q(t),nt(t,s)&&(this._rawValue=t,this._value=n?t:We(t),this.dep.trigger())}}function Mi(e){return we(e)?e.value:e}const Ci={get:(e,t,s)=>t==="__v_raw"?e:Mi(Reflect.get(e,t,s)),set:(e,t,s,n)=>{const r=e[t];return we(r)&&!we(s)?(r.value=s,!0):Reflect.set(e,t,s,n)}};function so(e){return Dt(e)?e:new Proxy(e,Ci)}class Ti{constructor(t,s,n){this.fn=t,this.setter=s,this._value=void 0,this.dep=new Tn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=ds-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&ie!==this)return Br(this,!0),!0}get value(){const t=this.dep.track();return qr(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Ii(e,t,s=!1){let n,r;return W(e)?n=e:(n=e.get,r=e.set),new Ti(n,r,s)}const Ms={},Ps=new WeakMap;let Rt;function $i(e,t=!1,s=Rt){if(s){let n=Ps.get(s);n||Ps.set(s,n=[]),n.push(e)}}function Oi(e,t,s=oe){const{immediate:n,deep:r,once:o,scheduler:i,augmentJob:a,call:u}=s,m=R=>r?R:je(R)||r===!1||r===0?mt(R,1):mt(R);let p,_,T,I,X=!1,H=!1;if(we(e)?(_=()=>e.value,X=je(e)):Dt(e)?(_=()=>m(e),X=!0):D(e)?(H=!0,X=e.some(R=>Dt(R)||je(R)),_=()=>e.map(R=>{if(we(R))return R.value;if(Dt(R))return m(R);if(W(R))return u?u(R,2):R()})):W(e)?t?_=u?()=>u(e,2):e:_=()=>{if(T){bt();try{T()}finally{_t()}}const R=Rt;Rt=p;try{return u?u(e,3,[I]):e(I)}finally{Rt=R}}:_=rt,t&&r){const R=_,ue=r===!0?1/0:r;_=()=>mt(R(),ue)}const ae=ri(),ee=()=>{p.stop(),ae&&ae.active&&xn(ae.effects,p)};if(o&&t){const R=t;t=(...ue)=>{R(...ue),ee()}}let U=H?new Array(e.length).fill(Ms):Ms;const te=R=>{if(!(!(p.flags&1)||!p.dirty&&!R))if(t){const ue=p.run();if(r||X||(H?ue.some((Ge,Te)=>nt(Ge,U[Te])):nt(ue,U))){T&&T();const Ge=Rt;Rt=p;try{const Te=[ue,U===Ms?void 0:H&&U[0]===Ms?[]:U,I];U=ue,u?u(t,3,Te):t(...Te)}finally{Rt=Ge}}}else p.run()};return a&&a(te),p=new Vr(_),p.scheduler=i?()=>i(te,!1):te,I=R=>$i(R,!1,p),T=p.onStop=()=>{const R=Ps.get(p);if(R){if(u)u(R,4);else for(const ue of R)ue();Ps.delete(p)}},t?n?te(!0):U=p.run():i?i(te.bind(null,!0),!0):p.run(),ee.pause=p.pause.bind(p),ee.resume=p.resume.bind(p),ee.stop=ee,ee}function mt(e,t=1/0,s){if(t<=0||!ne(e)||e.__v_skip||(s=s||new Map,(s.get(e)||0)>=t))return e;if(s.set(e,t),t--,we(e))mt(e.value,t,s);else if(D(e))for(let n=0;n<e.length;n++)mt(e[n],t,s);else if(Qt(e)||Gt(e))e.forEach(n=>{mt(n,t,s)});else if(Fr(e)){for(const n in e)mt(e[n],t,s);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&mt(e[n],t,s)}return e}function _s(e,t,s,n){try{return n?e(...n):e()}catch(r){Ws(r,t,s)}}function lt(e,t,s,n){if(W(e)){const r=_s(e,t,s,n);return r&&kr(r)&&r.catch(o=>{Ws(o,t,s)}),r}if(D(e)){const r=[];for(let o=0;o<e.length;o++)r.push(lt(e[o],t,s,n));return r}}function Ws(e,t,s,n=!0){const r=t?t.vnode:null,{errorHandler:o,throwUnhandledErrorInProduction:i}=t&&t.appContext.config||oe;if(t){let a=t.parent;const u=t.proxy,m=`https://vuejs.org/error-reference/#runtime-${s}`;for(;a;){const p=a.ec;if(p){for(let _=0;_<p.length;_++)if(p[_](e,u,m)===!1)return}a=a.parent}if(o){bt(),_s(o,null,10,[e,u,m]),_t();return}}Pi(e,s,r,n,i)}function Pi(e,t,s,n=!0,r=!1){if(r)throw e;console.error(e)}const Me=[];let Ze=-1;const qt=[];let Nt=null,Bt=0;const no=Promise.resolve();let ks=null;function ro(e){const t=ks||no;return e?t.then(this?e.bind(this):e):t}function ki(e){let t=Ze+1,s=Me.length;for(;t<s;){const n=t+s>>>1,r=Me[n],o=ps(r);o<e||o===e&&r.flags&2?t=n+1:s=n}return t}function Pn(e){if(!(e.flags&1)){const t=ps(e),s=Me[Me.length-1];!s||!(e.flags&2)&&t>=ps(s)?Me.push(e):Me.splice(ki(t),0,e),e.flags|=1,oo()}}function oo(){ks||(ks=no.then(lo))}function Ri(e){D(e)?qt.push(...e):Nt&&e.id===-1?Nt.splice(Bt+1,0,e):e.flags&1||(qt.push(e),e.flags|=1),oo()}function Yn(e,t,s=Ze+1){for(;s<Me.length;s++){const n=Me[s];if(n&&n.flags&2){if(e&&n.id!==e.uid)continue;Me.splice(s,1),s--,n.flags&4&&(n.flags&=-2),n(),n.flags&4||(n.flags&=-2)}}}function io(e){if(qt.length){const t=[...new Set(qt)].sort((s,n)=>ps(s)-ps(n));if(qt.length=0,Nt){Nt.push(...t);return}for(Nt=t,Bt=0;Bt<Nt.length;Bt++){const s=Nt[Bt];s.flags&4&&(s.flags&=-2),s.flags&8||s(),s.flags&=-2}Nt=null,Bt=0}}const ps=e=>e.id==null?e.flags&2?-1:1/0:e.id;function lo(e){try{for(Ze=0;Ze<Me.length;Ze++){const t=Me[Ze];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),_s(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;Ze<Me.length;Ze++){const t=Me[Ze];t&&(t.flags&=-2)}Ze=-1,Me.length=0,io(),ks=null,(Me.length||qt.length)&&lo()}}let He=null,ao=null;function Rs(e){const t=He;return He=e,ao=e&&e.type.__scopeId||null,t}function Fi(e,t=He,s){if(!t||e._n)return e;const n=(...r)=>{n._d&&ar(-1);const o=Rs(t);let i;try{i=e(...r)}finally{Rs(o),n._d&&ar(1)}return i};return n._n=!0,n._c=!0,n._d=!0,n}function Ot(e,t){if(He===null)return e;const s=Js(He),n=e.dirs||(e.dirs=[]);for(let r=0;r<t.length;r++){let[o,i,a,u=oe]=t[r];o&&(W(o)&&(o={mounted:o,updated:o}),o.deep&&mt(i),n.push({dir:o,instance:s,value:i,oldValue:void 0,arg:a,modifiers:u}))}return e}function Pt(e,t,s,n){const r=e.dirs,o=t&&t.dirs;for(let i=0;i<r.length;i++){const a=r[i];o&&(a.oldValue=o[i].value);let u=a.dir[n];u&&(bt(),lt(u,s,8,[e.el,a,e,t]),_t())}}function Di(e,t){if(Ce){let s=Ce.provides;const n=Ce.parent&&Ce.parent.provides;n===s&&(s=Ce.provides=Object.create(n)),s[e]=t}}function Ts(e,t,s=!1){const n=Dl();if(n||zt){let r=zt?zt._context.provides:n?n.parent==null||n.ce?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:void 0;if(r&&e in r)return r[e];if(arguments.length>1)return s&&W(t)?t.call(n&&n.proxy):t}}const Li=Symbol.for("v-scx"),Hi=()=>Ts(Li);function ht(e,t,s){return co(e,t,s)}function co(e,t,s=oe){const{immediate:n,deep:r,flush:o,once:i}=s,a=Se({},s),u=t&&n||!t&&o!=="post";let m;if(ms){if(o==="sync"){const I=Hi();m=I.__watcherHandles||(I.__watcherHandles=[])}else if(!u){const I=()=>{};return I.stop=rt,I.resume=rt,I.pause=rt,I}}const p=Ce;a.call=(I,X,H)=>lt(I,p,X,H);let _=!1;o==="post"?a.scheduler=I=>{Oe(I,p&&p.suspense)}:o!=="sync"&&(_=!0,a.scheduler=(I,X)=>{X?I():Pn(I)}),a.augmentJob=I=>{t&&(I.flags|=4),_&&(I.flags|=2,p&&(I.id=p.uid,I.i=p))};const T=Oi(e,t,a);return ms&&(m?m.push(T):u&&T()),T}function ji(e,t,s){const n=this.proxy,r=he(e)?e.includes(".")?uo(n,e):()=>n[e]:e.bind(n,n);let o;W(t)?o=t:(o=t.handler,s=t);const i=vs(this),a=co(r,o.bind(n),s);return i(),a}function uo(e,t){const s=t.split(".");return()=>{let n=e;for(let r=0;r<s.length&&n;r++)n=n[s[r]];return n}}const Ui=Symbol("_vte"),Vi=e=>e.__isTeleport,Ki=Symbol("_leaveCb");function kn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,kn(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function fo(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Qn(e,t){let s;return!!((s=Object.getOwnPropertyDescriptor(e,t))&&!s.configurable)}const Fs=new WeakMap;function ls(e,t,s,n,r=!1){if(D(e)){e.forEach((H,ae)=>ls(H,t&&(D(t)?t[ae]:t),s,n,r));return}if(as(n)&&!r){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&ls(e,t,s,n.component.subTree);return}const o=n.shapeFlag&4?Js(n.component):n.el,i=r?null:o,{i:a,r:u}=e,m=t&&t.r,p=a.refs===oe?a.refs={}:a.refs,_=a.setupState,T=Q(_),I=_===oe?Pr:H=>Qn(p,H)?!1:Z(T,H),X=(H,ae)=>!(ae&&Qn(p,ae));if(m!=null&&m!==u){if(Zn(t),he(m))p[m]=null,I(m)&&(_[m]=null);else if(we(m)){const H=t;X(m,H.k)&&(m.value=null),H.k&&(p[H.k]=null)}}if(W(u))_s(u,a,12,[i,p]);else{const H=he(u),ae=we(u);if(H||ae){const ee=()=>{if(e.f){const U=H?I(u)?_[u]:p[u]:X()||!e.k?u.value:p[e.k];if(r)D(U)&&xn(U,o);else if(D(U))U.includes(o)||U.push(o);else if(H)p[u]=[o],I(u)&&(_[u]=p[u]);else{const te=[o];X(u,e.k)&&(u.value=te),e.k&&(p[e.k]=te)}}else H?(p[u]=i,I(u)&&(_[u]=i)):ae&&(X(u,e.k)&&(u.value=i),e.k&&(p[e.k]=i))};if(i){const U=()=>{ee(),Fs.delete(e)};U.id=-1,Fs.set(e,U),Oe(U,s)}else Zn(e),ee()}}}function Zn(e){const t=Fs.get(e);t&&(t.flags|=8,Fs.delete(e))}Vs().requestIdleCallback;Vs().cancelIdleCallback;const as=e=>!!e.type.__asyncLoader,ho=e=>e.type.__isKeepAlive;function Bi(e,t){po(e,"a",t)}function Wi(e,t){po(e,"da",t)}function po(e,t,s=Ce){const n=e.__wdc||(e.__wdc=()=>{let r=s;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Gs(t,n,s),s){let r=s.parent;for(;r&&r.parent;)ho(r.parent.vnode)&&Gi(n,t,s,r),r=r.parent}}function Gi(e,t,s,n){const r=Gs(t,e,n,!0);yo(()=>{xn(n[t],r)},s)}function Gs(e,t,s=Ce,n=!1){if(s){const r=s[e]||(s[e]=[]),o=t.__weh||(t.__weh=(...i)=>{bt();const a=vs(s),u=lt(t,s,e,i);return a(),_t(),u});return n?r.unshift(o):r.push(o),o}}const wt=e=>(t,s=Ce)=>{(!ms||e==="sp")&&Gs(e,(...n)=>t(...n),s)},qi=wt("bm"),go=wt("m"),zi=wt("bu"),Ji=wt("u"),mo=wt("bum"),yo=wt("um"),Xi=wt("sp"),Yi=wt("rtg"),Qi=wt("rtc");function Zi(e,t=Ce){Gs("ec",e,t)}const el=Symbol.for("v-ndc");function Le(e,t,s,n){let r;const o=s,i=D(e);if(i||he(e)){const a=i&&Dt(e);let u=!1,m=!1;a&&(u=!je(e),m=vt(e),e=Ks(e)),r=new Array(e.length);for(let p=0,_=e.length;p<_;p++)r[p]=t(u?m?Jt(We(e[p])):We(e[p]):e[p],p,void 0,o)}else if(typeof e=="number"){r=new Array(e);for(let a=0;a<e;a++)r[a]=t(a+1,a,void 0,o)}else if(ne(e))if(e[Symbol.iterator])r=Array.from(e,(a,u)=>t(a,u,void 0,o));else{const a=Object.keys(e);r=new Array(a.length);for(let u=0,m=a.length;u<m;u++){const p=a[u];r[u]=t(e[p],p,u,o)}}else r=[];return r}const gn=e=>e?Lo(e)?Js(e):gn(e.parent):null,cs=Se(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>gn(e.parent),$root:e=>gn(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>_o(e),$forceUpdate:e=>e.f||(e.f=()=>{Pn(e.update)}),$nextTick:e=>e.n||(e.n=ro.bind(e.proxy)),$watch:e=>ji.bind(e)}),rn=(e,t)=>e!==oe&&!e.__isScriptSetup&&Z(e,t),tl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:n,data:r,props:o,accessCache:i,type:a,appContext:u}=e;if(t[0]!=="$"){const T=i[t];if(T!==void 0)switch(T){case 1:return n[t];case 2:return r[t];case 4:return s[t];case 3:return o[t]}else{if(rn(n,t))return i[t]=1,n[t];if(r!==oe&&Z(r,t))return i[t]=2,r[t];if(Z(o,t))return i[t]=3,o[t];if(s!==oe&&Z(s,t))return i[t]=4,s[t];mn&&(i[t]=0)}}const m=cs[t];let p,_;if(m)return t==="$attrs"&&ve(e.attrs,"get",""),m(e);if((p=a.__cssModules)&&(p=p[t]))return p;if(s!==oe&&Z(s,t))return i[t]=4,s[t];if(_=u.config.globalProperties,Z(_,t))return _[t]},set({_:e},t,s){const{data:n,setupState:r,ctx:o}=e;return rn(r,t)?(r[t]=s,!0):n!==oe&&Z(n,t)?(n[t]=s,!0):Z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:n,appContext:r,props:o,type:i}},a){let u;return!!(s[a]||e!==oe&&a[0]!=="$"&&Z(e,a)||rn(t,a)||Z(o,a)||Z(n,a)||Z(cs,a)||Z(r.config.globalProperties,a)||(u=i.__cssModules)&&u[a])},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:Z(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function er(e){return D(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let mn=!0;function sl(e){const t=_o(e),s=e.proxy,n=e.ctx;mn=!1,t.beforeCreate&&tr(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:a,provide:u,inject:m,created:p,beforeMount:_,mounted:T,beforeUpdate:I,updated:X,activated:H,deactivated:ae,beforeDestroy:ee,beforeUnmount:U,destroyed:te,unmounted:R,render:ue,renderTracked:Ge,renderTriggered:Te,errorCaptured:qe,serverPrefetch:Lt,expose:ze,inheritAttrs:at,components:Ht,directives:jt,filters:Tt}=t;if(m&&nl(m,n,null),i)for(const re in i){const J=i[re];W(J)&&(n[re]=J.bind(s))}if(r){const re=r.call(s,s);ne(re)&&(e.data=Bs(re))}if(mn=!0,o)for(const re in o){const J=o[re],ct=W(J)?J.bind(s,s):W(J.get)?J.get.bind(s,s):rt,ut=!W(J)&&W(J.set)?J.set.bind(s):rt,Je=Ee({get:ct,set:ut});Object.defineProperty(n,re,{enumerable:!0,configurable:!0,get:()=>Je.value,set:Re=>Je.value=Re})}if(a)for(const re in a)bo(a[re],n,s,re);if(u){const re=W(u)?u.call(s):u;Reflect.ownKeys(re).forEach(J=>{Di(J,re[J])})}p&&tr(p,e,"c");function ye(re,J){D(J)?J.forEach(ct=>re(ct.bind(s))):J&&re(J.bind(s))}if(ye(qi,_),ye(go,T),ye(zi,I),ye(Ji,X),ye(Bi,H),ye(Wi,ae),ye(Zi,qe),ye(Qi,Ge),ye(Yi,Te),ye(mo,U),ye(yo,R),ye(Xi,Lt),D(ze))if(ze.length){const re=e.exposed||(e.exposed={});ze.forEach(J=>{Object.defineProperty(re,J,{get:()=>s[J],set:ct=>s[J]=ct,enumerable:!0})})}else e.exposed||(e.exposed={});ue&&e.render===rt&&(e.render=ue),at!=null&&(e.inheritAttrs=at),Ht&&(e.components=Ht),jt&&(e.directives=jt),Lt&&fo(e)}function nl(e,t,s=rt){D(e)&&(e=yn(e));for(const n in e){const r=e[n];let o;ne(r)?"default"in r?o=Ts(r.from||n,r.default,!0):o=Ts(r.from||n):o=Ts(r),we(o)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[n]=o}}function tr(e,t,s){lt(D(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,s)}function bo(e,t,s,n){let r=n.includes(".")?uo(s,n):()=>s[n];if(he(e)){const o=t[e];W(o)&&ht(r,o)}else if(W(e))ht(r,e.bind(s));else if(ne(e))if(D(e))e.forEach(o=>bo(o,t,s,n));else{const o=W(e.handler)?e.handler.bind(s):t[e.handler];W(o)&&ht(r,o,e)}}function _o(e){const t=e.type,{mixins:s,extends:n}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,a=o.get(t);let u;return a?u=a:!r.length&&!s&&!n?u=t:(u={},r.length&&r.forEach(m=>Ds(u,m,i,!0)),Ds(u,t,i)),ne(t)&&o.set(t,u),u}function Ds(e,t,s,n=!1){const{mixins:r,extends:o}=t;o&&Ds(e,o,s,!0),r&&r.forEach(i=>Ds(e,i,s,!0));for(const i in t)if(!(n&&i==="expose")){const a=rl[i]||s&&s[i];e[i]=a?a(e[i],t[i]):t[i]}return e}const rl={data:sr,props:nr,emits:nr,methods:ns,computed:ns,beforeCreate:Ne,created:Ne,beforeMount:Ne,mounted:Ne,beforeUpdate:Ne,updated:Ne,beforeDestroy:Ne,beforeUnmount:Ne,destroyed:Ne,unmounted:Ne,activated:Ne,deactivated:Ne,errorCaptured:Ne,serverPrefetch:Ne,components:ns,directives:ns,watch:il,provide:sr,inject:ol};function sr(e,t){return t?e?function(){return Se(W(e)?e.call(this,this):e,W(t)?t.call(this,this):t)}:t:e}function ol(e,t){return ns(yn(e),yn(t))}function yn(e){if(D(e)){const t={};for(let s=0;s<e.length;s++)t[e[s]]=e[s];return t}return e}function Ne(e,t){return e?[...new Set([].concat(e,t))]:t}function ns(e,t){return e?Se(Object.create(null),e,t):t}function nr(e,t){return e?D(e)&&D(t)?[...new Set([...e,...t])]:Se(Object.create(null),er(e),er(t??{})):t}function il(e,t){if(!e)return t;if(!t)return e;const s=Se(Object.create(null),e);for(const n in t)s[n]=Ne(e[n],t[n]);return s}function vo(){return{app:null,config:{isNativeTag:Pr,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let ll=0;function al(e,t){return function(n,r=null){W(n)||(n=Se({},n)),r!=null&&!ne(r)&&(r=null);const o=vo(),i=new WeakSet,a=[];let u=!1;const m=o.app={_uid:ll++,_component:n,_props:r,_container:null,_context:o,_instance:null,version:Kl,get config(){return o.config},set config(p){},use(p,..._){return i.has(p)||(p&&W(p.install)?(i.add(p),p.install(m,..._)):W(p)&&(i.add(p),p(m,..._))),m},mixin(p){return o.mixins.includes(p)||o.mixins.push(p),m},component(p,_){return _?(o.components[p]=_,m):o.components[p]},directive(p,_){return _?(o.directives[p]=_,m):o.directives[p]},mount(p,_,T){if(!u){const I=m._ceVNode||ot(n,r);return I.appContext=o,T===!0?T="svg":T===!1&&(T=void 0),e(I,p,T),u=!0,m._container=p,p.__vue_app__=m,Js(I.component)}},onUnmount(p){a.push(p)},unmount(){u&&(lt(a,m._instance,16),e(null,m._container),delete m._container.__vue_app__)},provide(p,_){return o.provides[p]=_,m},runWithContext(p){const _=zt;zt=m;try{return p()}finally{zt=_}}};return m}}let zt=null;const cl=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ke(t)}Modifiers`]||e[`${Ct(t)}Modifiers`];function ul(e,t,...s){if(e.isUnmounted)return;const n=e.vnode.props||oe;let r=s;const o=t.startsWith("update:"),i=o&&cl(n,t.slice(7));i&&(i.trim&&(r=s.map(p=>he(p)?p.trim():p)),i.number&&(r=s.map(Us)));let a,u=n[a=Zs(t)]||n[a=Zs(Ke(t))];!u&&o&&(u=n[a=Zs(Ct(t))]),u&&lt(u,e,6,r);const m=n[a+"Once"];if(m){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,lt(m,e,6,r)}}const fl=new WeakMap;function wo(e,t,s=!1){const n=s?fl:t.emitsCache,r=n.get(e);if(r!==void 0)return r;const o=e.emits;let i={},a=!1;if(!W(e)){const u=m=>{const p=wo(m,t,!0);p&&(a=!0,Se(i,p))};!s&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}return!o&&!a?(ne(e)&&n.set(e,null),null):(D(o)?o.forEach(u=>i[u]=null):Se(i,o),ne(e)&&n.set(e,i),i)}function qs(e,t){return!e||!Hs(t)?!1:(t=t.slice(2).replace(/Once$/,""),Z(e,t[0].toLowerCase()+t.slice(1))||Z(e,Ct(t))||Z(e,t))}function rr(e){const{type:t,vnode:s,proxy:n,withProxy:r,propsOptions:[o],slots:i,attrs:a,emit:u,render:m,renderCache:p,props:_,data:T,setupState:I,ctx:X,inheritAttrs:H}=e,ae=Rs(e);let ee,U;try{if(s.shapeFlag&4){const R=r||n,ue=R;ee=st(m.call(ue,R,p,_,I,T,X)),U=a}else{const R=t;ee=st(R.length>1?R(_,{attrs:a,slots:i,emit:u}):R(_,null)),U=t.props?a:dl(a)}}catch(R){us.length=0,Ws(R,e,1),ee=ot(Mt)}let te=ee;if(U&&H!==!1){const R=Object.keys(U),{shapeFlag:ue}=te;R.length&&ue&7&&(o&&R.some(Sn)&&(U=hl(U,o)),te=Xt(te,U,!1,!0))}return s.dirs&&(te=Xt(te,null,!1,!0),te.dirs=te.dirs?te.dirs.concat(s.dirs):s.dirs),s.transition&&kn(te,s.transition),ee=te,Rs(ae),ee}const dl=e=>{let t;for(const s in e)(s==="class"||s==="style"||Hs(s))&&((t||(t={}))[s]=e[s]);return t},hl=(e,t)=>{const s={};for(const n in e)(!Sn(n)||!(n.slice(9)in t))&&(s[n]=e[n]);return s};function pl(e,t,s){const{props:n,children:r,component:o}=e,{props:i,children:a,patchFlag:u}=t,m=o.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&u>=0){if(u&1024)return!0;if(u&16)return n?or(n,i,m):!!i;if(u&8){const p=t.dynamicProps;for(let _=0;_<p.length;_++){const T=p[_];if(So(i,n,T)&&!qs(m,T))return!0}}}else return(r||a)&&(!a||!a.$stable)?!0:n===i?!1:n?i?or(n,i,m):!0:!!i;return!1}function or(e,t,s){const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!0;for(let r=0;r<n.length;r++){const o=n[r];if(So(t,e,o)&&!qs(s,o))return!0}return!1}function So(e,t,s){const n=e[s],r=t[s];return s==="style"&&ne(n)&&ne(r)?!Zt(n,r):n!==r}function gl({vnode:e,parent:t},s){for(;t;){const n=t.subTree;if(n.suspense&&n.suspense.activeBranch===e&&(n.el=e.el),n===e)(e=t.vnode).el=s,t=t.parent;else break}}const xo={},Ao=()=>Object.create(xo),No=e=>Object.getPrototypeOf(e)===xo;function ml(e,t,s,n=!1){const r={},o=Ao();e.propsDefaults=Object.create(null),Eo(e,t,r,o);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);s?e.props=n?r:xi(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function yl(e,t,s,n){const{props:r,attrs:o,vnode:{patchFlag:i}}=e,a=Q(r),[u]=e.propsOptions;let m=!1;if((n||i>0)&&!(i&16)){if(i&8){const p=e.vnode.dynamicProps;for(let _=0;_<p.length;_++){let T=p[_];if(qs(e.emitsOptions,T))continue;const I=t[T];if(u)if(Z(o,T))I!==o[T]&&(o[T]=I,m=!0);else{const X=Ke(T);r[X]=bn(u,a,X,I,e,!1)}else I!==o[T]&&(o[T]=I,m=!0)}}}else{Eo(e,t,r,o)&&(m=!0);let p;for(const _ in a)(!t||!Z(t,_)&&((p=Ct(_))===_||!Z(t,p)))&&(u?s&&(s[_]!==void 0||s[p]!==void 0)&&(r[_]=bn(u,a,_,void 0,e,!0)):delete r[_]);if(o!==a)for(const _ in o)(!t||!Z(t,_))&&(delete o[_],m=!0)}m&&gt(e.attrs,"set","")}function Eo(e,t,s,n){const[r,o]=e.propsOptions;let i=!1,a;if(t)for(let u in t){if(rs(u))continue;const m=t[u];let p;r&&Z(r,p=Ke(u))?!o||!o.includes(p)?s[p]=m:(a||(a={}))[p]=m:qs(e.emitsOptions,u)||(!(u in n)||m!==n[u])&&(n[u]=m,i=!0)}if(o){const u=Q(s),m=a||oe;for(let p=0;p<o.length;p++){const _=o[p];s[_]=bn(r,u,_,m[_],e,!Z(m,_))}}return i}function bn(e,t,s,n,r,o){const i=e[s];if(i!=null){const a=Z(i,"default");if(a&&n===void 0){const u=i.default;if(i.type!==Function&&!i.skipFactory&&W(u)){const{propsDefaults:m}=r;if(s in m)n=m[s];else{const p=vs(r);n=m[s]=u.call(null,t),p()}}else n=u;r.ce&&r.ce._setProp(s,n)}i[0]&&(o&&!a?n=!1:i[1]&&(n===""||n===Ct(s))&&(n=!0))}return n}const bl=new WeakMap;function Mo(e,t,s=!1){const n=s?bl:t.propsCache,r=n.get(e);if(r)return r;const o=e.props,i={},a=[];let u=!1;if(!W(e)){const p=_=>{u=!0;const[T,I]=Mo(_,t,!0);Se(i,T),I&&a.push(...I)};!s&&t.mixins.length&&t.mixins.forEach(p),e.extends&&p(e.extends),e.mixins&&e.mixins.forEach(p)}if(!o&&!u)return ne(e)&&n.set(e,Wt),Wt;if(D(o))for(let p=0;p<o.length;p++){const _=Ke(o[p]);ir(_)&&(i[_]=oe)}else if(o)for(const p in o){const _=Ke(p);if(ir(_)){const T=o[p],I=i[_]=D(T)||W(T)?{type:T}:Se({},T),X=I.type;let H=!1,ae=!0;if(D(X))for(let ee=0;ee<X.length;++ee){const U=X[ee],te=W(U)&&U.name;if(te==="Boolean"){H=!0;break}else te==="String"&&(ae=!1)}else H=W(X)&&X.name==="Boolean";I[0]=H,I[1]=ae,(H||Z(I,"default"))&&a.push(_)}}const m=[i,a];return ne(e)&&n.set(e,m),m}function ir(e){return e[0]!=="$"&&!rs(e)}const Rn=e=>e==="_"||e==="_ctx"||e==="$stable",Fn=e=>D(e)?e.map(st):[st(e)],_l=(e,t,s)=>{if(t._n)return t;const n=Fi((...r)=>Fn(t(...r)),s);return n._c=!1,n},Co=(e,t,s)=>{const n=e._ctx;for(const r in e){if(Rn(r))continue;const o=e[r];if(W(o))t[r]=_l(r,o,n);else if(o!=null){const i=Fn(o);t[r]=()=>i}}},To=(e,t)=>{const s=Fn(t);e.slots.default=()=>s},Io=(e,t,s)=>{for(const n in t)(s||!Rn(n))&&(e[n]=t[n])},vl=(e,t,s)=>{const n=e.slots=Ao();if(e.vnode.shapeFlag&32){const r=t._;r?(Io(n,t,s),s&&Lr(n,"_",r,!0)):Co(t,n)}else t&&To(e,t)},wl=(e,t,s)=>{const{vnode:n,slots:r}=e;let o=!0,i=oe;if(n.shapeFlag&32){const a=t._;a?s&&a===1?o=!1:Io(r,t,s):(o=!t.$stable,Co(t,r)),i=t}else t&&(To(e,t),i={default:1});if(o)for(const a in r)!Rn(a)&&i[a]==null&&delete r[a]},Oe=El;function Sl(e){return xl(e)}function xl(e,t){const s=Vs();s.__VUE__=!0;const{insert:n,remove:r,patchProp:o,createElement:i,createText:a,createComment:u,setText:m,setElementText:p,parentNode:_,nextSibling:T,setScopeId:I=rt,insertStaticContent:X}=e,H=(c,d,y,S=null,v=null,w=null,N=void 0,E=null,A=!!d.dynamicChildren)=>{if(c===d)return;c&&!ss(c,d)&&(S=xt(c),Re(c,v,w,!0),c=null),d.patchFlag===-2&&(A=!1,d.dynamicChildren=null);const{type:x,ref:P,shapeFlag:M}=d;switch(x){case zs:ae(c,d,y,S);break;case Mt:ee(c,d,y,S);break;case Is:c==null&&U(d,y,S,N);break;case de:Ht(c,d,y,S,v,w,N,E,A);break;default:M&1?ue(c,d,y,S,v,w,N,E,A):M&6?jt(c,d,y,S,v,w,N,E,A):(M&64||M&128)&&x.process(c,d,y,S,v,w,N,E,A,Xe)}P!=null&&v?ls(P,c&&c.ref,w,d||c,!d):P==null&&c&&c.ref!=null&&ls(c.ref,null,w,c,!0)},ae=(c,d,y,S)=>{if(c==null)n(d.el=a(d.children),y,S);else{const v=d.el=c.el;d.children!==c.children&&m(v,d.children)}},ee=(c,d,y,S)=>{c==null?n(d.el=u(d.children||""),y,S):d.el=c.el},U=(c,d,y,S)=>{[c.el,c.anchor]=X(c.children,d,y,S,c.el,c.anchor)},te=({el:c,anchor:d},y,S)=>{let v;for(;c&&c!==d;)v=T(c),n(c,y,S),c=v;n(d,y,S)},R=({el:c,anchor:d})=>{let y;for(;c&&c!==d;)y=T(c),r(c),c=y;r(d)},ue=(c,d,y,S,v,w,N,E,A)=>{if(d.type==="svg"?N="svg":d.type==="math"&&(N="mathml"),c==null)Ge(d,y,S,v,w,N,E,A);else{const x=c.el&&c.el._isVueCE?c.el:null;try{x&&x._beginPatch(),Lt(c,d,v,w,N,E,A)}finally{x&&x._endPatch()}}},Ge=(c,d,y,S,v,w,N,E)=>{let A,x;const{props:P,shapeFlag:M,transition:$,dirs:L}=c;if(A=c.el=i(c.type,w,P&&P.is,P),M&8?p(A,c.children):M&16&&qe(c.children,A,null,S,v,on(c,w),N,E),L&&Pt(c,null,S,"created"),Te(A,c,c.scopeId,N,S),P){for(const se in P)se!=="value"&&!rs(se)&&o(A,se,null,P[se],w,S);"value"in P&&o(A,"value",null,P.value,w),(x=P.onVnodeBeforeMount)&&Qe(x,S,c)}L&&Pt(c,null,S,"beforeMount");const q=Al(v,$);q&&$.beforeEnter(A),n(A,d,y),((x=P&&P.onVnodeMounted)||q||L)&&Oe(()=>{x&&Qe(x,S,c),q&&$.enter(A),L&&Pt(c,null,S,"mounted")},v)},Te=(c,d,y,S,v)=>{if(y&&I(c,y),S)for(let w=0;w<S.length;w++)I(c,S[w]);if(v){let w=v.subTree;if(d===w||ko(w.type)&&(w.ssContent===d||w.ssFallback===d)){const N=v.vnode;Te(c,N,N.scopeId,N.slotScopeIds,v.parent)}}},qe=(c,d,y,S,v,w,N,E,A=0)=>{for(let x=A;x<c.length;x++){const P=c[x]=E?pt(c[x]):st(c[x]);H(null,P,d,y,S,v,w,N,E)}},Lt=(c,d,y,S,v,w,N)=>{const E=d.el=c.el;let{patchFlag:A,dynamicChildren:x,dirs:P}=d;A|=c.patchFlag&16;const M=c.props||oe,$=d.props||oe;let L;if(y&&kt(y,!1),(L=$.onVnodeBeforeUpdate)&&Qe(L,y,d,c),P&&Pt(d,c,y,"beforeUpdate"),y&&kt(y,!0),(M.innerHTML&&$.innerHTML==null||M.textContent&&$.textContent==null)&&p(E,""),x?ze(c.dynamicChildren,x,E,y,S,on(d,v),w):N||J(c,d,E,null,y,S,on(d,v),w,!1),A>0){if(A&16)at(E,M,$,y,v);else if(A&2&&M.class!==$.class&&o(E,"class",null,$.class,v),A&4&&o(E,"style",M.style,$.style,v),A&8){const q=d.dynamicProps;for(let se=0;se<q.length;se++){const z=q[se],pe=M[z],be=$[z];(be!==pe||z==="value")&&o(E,z,pe,be,v,y)}}A&1&&c.children!==d.children&&p(E,d.children)}else!N&&x==null&&at(E,M,$,y,v);((L=$.onVnodeUpdated)||P)&&Oe(()=>{L&&Qe(L,y,d,c),P&&Pt(d,c,y,"updated")},S)},ze=(c,d,y,S,v,w,N)=>{for(let E=0;E<d.length;E++){const A=c[E],x=d[E],P=A.el&&(A.type===de||!ss(A,x)||A.shapeFlag&198)?_(A.el):y;H(A,x,P,null,S,v,w,N,!0)}},at=(c,d,y,S,v)=>{if(d!==y){if(d!==oe)for(const w in d)!rs(w)&&!(w in y)&&o(c,w,d[w],null,v,S);for(const w in y){if(rs(w))continue;const N=y[w],E=d[w];N!==E&&w!=="value"&&o(c,w,E,N,v,S)}"value"in y&&o(c,"value",d.value,y.value,v)}},Ht=(c,d,y,S,v,w,N,E,A)=>{const x=d.el=c?c.el:a(""),P=d.anchor=c?c.anchor:a("");let{patchFlag:M,dynamicChildren:$,slotScopeIds:L}=d;L&&(E=E?E.concat(L):L),c==null?(n(x,y,S),n(P,y,S),qe(d.children||[],y,P,v,w,N,E,A)):M>0&&M&64&&$&&c.dynamicChildren&&c.dynamicChildren.length===$.length?(ze(c.dynamicChildren,$,y,v,w,N,E),(d.key!=null||v&&d===v.subTree)&&$o(c,d,!0)):J(c,d,y,P,v,w,N,E,A)},jt=(c,d,y,S,v,w,N,E,A)=>{d.slotScopeIds=E,c==null?d.shapeFlag&512?v.ctx.activate(d,y,S,N,A):Tt(d,y,S,v,w,N,A):St(c,d,A)},Tt=(c,d,y,S,v,w,N)=>{const E=c.component=Fl(c,S,v);if(ho(c)&&(E.ctx.renderer=Xe),Ll(E,!1,N),E.asyncDep){if(v&&v.registerDep(E,ye,N),!c.el){const A=E.subTree=ot(Mt);ee(null,A,d,y),c.placeholder=A.el}}else ye(E,c,d,y,v,w,N)},St=(c,d,y)=>{const S=d.component=c.component;if(pl(c,d,y))if(S.asyncDep&&!S.asyncResolved){re(S,d,y);return}else S.next=d,S.update();else d.el=c.el,S.vnode=d},ye=(c,d,y,S,v,w,N)=>{const E=()=>{if(c.isMounted){let{next:M,bu:$,u:L,parent:q,vnode:se}=c;{const Ie=Oo(c);if(Ie){M&&(M.el=se.el,re(c,M,N)),Ie.asyncDep.then(()=>{Oe(()=>{c.isUnmounted||x()},v)});return}}let z=M,pe;kt(c,!1),M?(M.el=se.el,re(c,M,N)):M=se,$&&Cs($),(pe=M.props&&M.props.onVnodeBeforeUpdate)&&Qe(pe,q,M,se),kt(c,!0);const be=rr(c),Fe=c.subTree;c.subTree=be,H(Fe,be,_(Fe.el),xt(Fe),c,v,w),M.el=be.el,z===null&&gl(c,be.el),L&&Oe(L,v),(pe=M.props&&M.props.onVnodeUpdated)&&Oe(()=>Qe(pe,q,M,se),v)}else{let M;const{el:$,props:L}=d,{bm:q,m:se,parent:z,root:pe,type:be}=c,Fe=as(d);kt(c,!1),q&&Cs(q),!Fe&&(M=L&&L.onVnodeBeforeMount)&&Qe(M,z,d),kt(c,!0);{pe.ce&&pe.ce._hasShadowRoot()&&pe.ce._injectChildStyle(be,c.parent?c.parent.type:void 0);const Ie=c.subTree=rr(c);H(null,Ie,y,S,c,v,w),d.el=Ie.el}if(se&&Oe(se,v),!Fe&&(M=L&&L.onVnodeMounted)){const Ie=d;Oe(()=>Qe(M,z,Ie),v)}(d.shapeFlag&256||z&&as(z.vnode)&&z.vnode.shapeFlag&256)&&c.a&&Oe(c.a,v),c.isMounted=!0,d=y=S=null}};c.scope.on();const A=c.effect=new Vr(E);c.scope.off();const x=c.update=A.run.bind(A),P=c.job=A.runIfDirty.bind(A);P.i=c,P.id=c.uid,A.scheduler=()=>Pn(P),kt(c,!0),x()},re=(c,d,y)=>{d.component=c;const S=c.vnode.props;c.vnode=d,c.next=null,yl(c,d.props,S,y),wl(c,d.children,y),bt(),Yn(c),_t()},J=(c,d,y,S,v,w,N,E,A=!1)=>{const x=c&&c.children,P=c?c.shapeFlag:0,M=d.children,{patchFlag:$,shapeFlag:L}=d;if($>0){if($&128){ut(x,M,y,S,v,w,N,E,A);return}else if($&256){ct(x,M,y,S,v,w,N,E,A);return}}L&8?(P&16&&It(x,v,w),M!==x&&p(y,M)):P&16?L&16?ut(x,M,y,S,v,w,N,E,A):It(x,v,w,!0):(P&8&&p(y,""),L&16&&qe(M,y,S,v,w,N,E,A))},ct=(c,d,y,S,v,w,N,E,A)=>{c=c||Wt,d=d||Wt;const x=c.length,P=d.length,M=Math.min(x,P);let $;for($=0;$<M;$++){const L=d[$]=A?pt(d[$]):st(d[$]);H(c[$],L,y,null,v,w,N,E,A)}x>P?It(c,v,w,!0,!1,M):qe(d,y,S,v,w,N,E,A,M)},ut=(c,d,y,S,v,w,N,E,A)=>{let x=0;const P=d.length;let M=c.length-1,$=P-1;for(;x<=M&&x<=$;){const L=c[x],q=d[x]=A?pt(d[x]):st(d[x]);if(ss(L,q))H(L,q,y,null,v,w,N,E,A);else break;x++}for(;x<=M&&x<=$;){const L=c[M],q=d[$]=A?pt(d[$]):st(d[$]);if(ss(L,q))H(L,q,y,null,v,w,N,E,A);else break;M--,$--}if(x>M){if(x<=$){const L=$+1,q=L<P?d[L].el:S;for(;x<=$;)H(null,d[x]=A?pt(d[x]):st(d[x]),y,q,v,w,N,E,A),x++}}else if(x>$)for(;x<=M;)Re(c[x],v,w,!0),x++;else{const L=x,q=x,se=new Map;for(x=q;x<=$;x++){const h=d[x]=A?pt(d[x]):st(d[x]);h.key!=null&&se.set(h.key,x)}let z,pe=0;const be=$-q+1;let Fe=!1,Ie=0;const $t=new Array(be);for(x=0;x<be;x++)$t[x]=0;for(x=L;x<=M;x++){const h=c[x];if(pe>=be){Re(h,v,w,!0);continue}let l;if(h.key!=null)l=se.get(h.key);else for(z=q;z<=$;z++)if($t[z-q]===0&&ss(h,d[z])){l=z;break}l===void 0?Re(h,v,w,!0):($t[l-q]=x+1,l>=Ie?Ie=l:Fe=!0,H(h,d[l],y,null,v,w,N,E,A),pe++)}const xs=Fe?Nl($t):Wt;for(z=xs.length-1,x=be-1;x>=0;x--){const h=q+x,l=d[h],f=d[h+1],C=h+1<P?f.el||Po(f):S;$t[x]===0?H(null,l,y,C,v,w,N,E,A):Fe&&(z<0||x!==xs[z]?Je(l,y,C,2):z--)}}},Je=(c,d,y,S,v=null)=>{const{el:w,type:N,transition:E,children:A,shapeFlag:x}=c;if(x&6){Je(c.component.subTree,d,y,S);return}if(x&128){c.suspense.move(d,y,S);return}if(x&64){N.move(c,d,y,Xe);return}if(N===de){n(w,d,y);for(let M=0;M<A.length;M++)Je(A[M],d,y,S);n(c.anchor,d,y);return}if(N===Is){te(c,d,y);return}if(S!==2&&x&1&&E)if(S===0)E.beforeEnter(w),n(w,d,y),Oe(()=>E.enter(w),v);else{const{leave:M,delayLeave:$,afterLeave:L}=E,q=()=>{c.ctx.isUnmounted?r(w):n(w,d,y)},se=()=>{w._isLeaving&&w[Ki](!0),M(w,()=>{q(),L&&L()})};$?$(w,q,se):se()}else n(w,d,y)},Re=(c,d,y,S=!1,v=!1)=>{const{type:w,props:N,ref:E,children:A,dynamicChildren:x,shapeFlag:P,patchFlag:M,dirs:$,cacheIndex:L}=c;if(M===-2&&(v=!1),E!=null&&(bt(),ls(E,null,y,c,!0),_t()),L!=null&&(d.renderCache[L]=void 0),P&256){d.ctx.deactivate(c);return}const q=P&1&&$,se=!as(c);let z;if(se&&(z=N&&N.onVnodeBeforeUnmount)&&Qe(z,d,c),P&6)Ys(c.component,y,S);else{if(P&128){c.suspense.unmount(y,S);return}q&&Pt(c,null,d,"beforeUnmount"),P&64?c.type.remove(c,d,y,Xe,S):x&&!x.hasOnce&&(w!==de||M>0&&M&64)?It(x,d,y,!1,!0):(w===de&&M&384||!v&&P&16)&&It(A,d,y),S&&ws(c)}(se&&(z=N&&N.onVnodeUnmounted)||q)&&Oe(()=>{z&&Qe(z,d,c),q&&Pt(c,null,d,"unmounted")},y)},ws=c=>{const{type:d,el:y,anchor:S,transition:v}=c;if(d===de){Xs(y,S);return}if(d===Is){R(c);return}const w=()=>{r(y),v&&!v.persisted&&v.afterLeave&&v.afterLeave()};if(c.shapeFlag&1&&v&&!v.persisted){const{leave:N,delayLeave:E}=v,A=()=>N(y,w);E?E(c.el,w,A):A()}else w()},Xs=(c,d)=>{let y;for(;c!==d;)y=T(c),r(c),c=y;r(d)},Ys=(c,d,y)=>{const{bum:S,scope:v,job:w,subTree:N,um:E,m:A,a:x}=c;lr(A),lr(x),S&&Cs(S),v.stop(),w&&(w.flags|=8,Re(N,c,d,y)),E&&Oe(E,d),Oe(()=>{c.isUnmounted=!0},d)},It=(c,d,y,S=!1,v=!1,w=0)=>{for(let N=w;N<c.length;N++)Re(c[N],d,y,S,v)},xt=c=>{if(c.shapeFlag&6)return xt(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const d=T(c.anchor||c.el),y=d&&d[Ui];return y?T(y):d};let es=!1;const Ss=(c,d,y)=>{let S;c==null?d._vnode&&(Re(d._vnode,null,null,!0),S=d._vnode.component):H(d._vnode||null,c,d,null,null,null,y),d._vnode=c,es||(es=!0,Yn(S),io(),es=!1)},Xe={p:H,um:Re,m:Je,r:ws,mt:Tt,mc:qe,pc:J,pbc:ze,n:xt,o:e};return{render:Ss,hydrate:void 0,createApp:al(Ss)}}function on({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function kt({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Al(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function $o(e,t,s=!1){const n=e.children,r=t.children;if(D(n)&&D(r))for(let o=0;o<n.length;o++){const i=n[o];let a=r[o];a.shapeFlag&1&&!a.dynamicChildren&&((a.patchFlag<=0||a.patchFlag===32)&&(a=r[o]=pt(r[o]),a.el=i.el),!s&&a.patchFlag!==-2&&$o(i,a)),a.type===zs&&(a.patchFlag===-1&&(a=r[o]=pt(a)),a.el=i.el),a.type===Mt&&!a.el&&(a.el=i.el)}}function Nl(e){const t=e.slice(),s=[0];let n,r,o,i,a;const u=e.length;for(n=0;n<u;n++){const m=e[n];if(m!==0){if(r=s[s.length-1],e[r]<m){t[n]=r,s.push(n);continue}for(o=0,i=s.length-1;o<i;)a=o+i>>1,e[s[a]]<m?o=a+1:i=a;m<e[s[o]]&&(o>0&&(t[n]=s[o-1]),s[o]=n)}}for(o=s.length,i=s[o-1];o-- >0;)s[o]=i,i=t[i];return s}function Oo(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Oo(t)}function lr(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function Po(e){if(e.placeholder)return e.placeholder;const t=e.component;return t?Po(t.subTree):null}const ko=e=>e.__isSuspense;function El(e,t){t&&t.pendingBranch?D(e)?t.effects.push(...e):t.effects.push(e):Ri(e)}const de=Symbol.for("v-fgt"),zs=Symbol.for("v-txt"),Mt=Symbol.for("v-cmt"),Is=Symbol.for("v-stc"),us=[];let ke=null;function V(e=!1){us.push(ke=e?null:[])}function Ml(){us.pop(),ke=us[us.length-1]||null}let gs=1;function ar(e,t=!1){gs+=e,e<0&&ke&&t&&(ke.hasOnce=!0)}function Ro(e){return e.dynamicChildren=gs>0?ke||Wt:null,Ml(),gs>0&&ke&&ke.push(e),e}function K(e,t,s,n,r,o){return Ro(b(e,t,s,n,r,o,!0))}function Cl(e,t,s,n,r){return Ro(ot(e,t,s,n,r,!0))}function Fo(e){return e?e.__v_isVNode===!0:!1}function ss(e,t){return e.type===t.type&&e.key===t.key}const Do=({key:e})=>e??null,$s=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?he(e)||we(e)||W(e)?{i:He,r:e,k:t,f:!!s}:e:null);function b(e,t=null,s=null,n=0,r=null,o=e===de?0:1,i=!1,a=!1){const u={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Do(t),ref:t&&$s(t),scopeId:ao,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:n,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:He};return a?(Dn(u,s),o&128&&e.normalize(u)):s&&(u.shapeFlag|=he(s)?8:16),gs>0&&!i&&ke&&(u.patchFlag>0||o&6)&&u.patchFlag!==32&&ke.push(u),u}const ot=Tl;function Tl(e,t=null,s=null,n=0,r=null,o=!1){if((!e||e===el)&&(e=Mt),Fo(e)){const a=Xt(e,t,!0);return s&&Dn(a,s),gs>0&&!o&&ke&&(a.shapeFlag&6?ke[ke.indexOf(e)]=a:ke.push(a)),a.patchFlag=-2,a}if(Vl(e)&&(e=e.__vccOpts),t){t=Il(t);let{class:a,style:u}=t;a&&!he(a)&&(t.class=et(a)),ne(u)&&(On(u)&&!D(u)&&(u=Se({},u)),t.style=fs(u))}const i=he(e)?1:ko(e)?128:Vi(e)?64:ne(e)?4:W(e)?2:0;return b(e,t,s,n,r,i,o,!0)}function Il(e){return e?On(e)||No(e)?Se({},e):e:null}function Xt(e,t,s=!1,n=!1){const{props:r,ref:o,patchFlag:i,children:a,transition:u}=e,m=t?Pl(r||{},t):r,p={__v_isVNode:!0,__v_skip:!0,type:e.type,props:m,key:m&&Do(m),ref:t&&t.ref?s&&o?D(o)?o.concat($s(t)):[o,$s(t)]:$s(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==de?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:u,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Xt(e.ssContent),ssFallback:e.ssFallback&&Xt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return u&&n&&kn(p,u.clone(p)),p}function $l(e=" ",t=0){return ot(zs,null,e,t)}function Ol(e,t){const s=ot(Is,null,e);return s.staticCount=t,s}function At(e="",t=!1){return t?(V(),Cl(Mt,null,e)):ot(Mt,null,e)}function st(e){return e==null||typeof e=="boolean"?ot(Mt):D(e)?ot(de,null,e.slice()):Fo(e)?pt(e):ot(zs,null,String(e))}function pt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Xt(e)}function Dn(e,t){let s=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(D(t))s=16;else if(typeof t=="object")if(n&65){const r=t.default;r&&(r._c&&(r._d=!1),Dn(e,r()),r._c&&(r._d=!0));return}else{s=32;const r=t._;!r&&!No(t)?t._ctx=He:r===3&&He&&(He.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else W(t)?(t={default:t,_ctx:He},s=32):(t=String(t),n&64?(s=16,t=[$l(t)]):s=8);e.children=t,e.shapeFlag|=s}function Pl(...e){const t={};for(let s=0;s<e.length;s++){const n=e[s];for(const r in n)if(r==="class")t.class!==n.class&&(t.class=et([t.class,n.class]));else if(r==="style")t.style=fs([t.style,n.style]);else if(Hs(r)){const o=t[r],i=n[r];i&&o!==i&&!(D(o)&&o.includes(i))&&(t[r]=o?[].concat(o,i):i)}else r!==""&&(t[r]=n[r])}return t}function Qe(e,t,s,n=null){lt(e,t,7,[s,n])}const kl=vo();let Rl=0;function Fl(e,t,s){const n=e.type,r=(t?t.appContext:e.appContext)||kl,o={uid:Rl++,vnode:e,type:n,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new ni(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Mo(n,r),emitsOptions:wo(n,r),emit:null,emitted:null,propsDefaults:oe,inheritAttrs:n.inheritAttrs,ctx:oe,data:oe,props:oe,attrs:oe,slots:oe,refs:oe,setupState:oe,setupContext:null,suspense:s,suspenseId:s?s.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return o.ctx={_:o},o.root=t?t.root:o,o.emit=ul.bind(null,o),e.ce&&e.ce(o),o}let Ce=null;const Dl=()=>Ce||He;let Ls,_n;{const e=Vs(),t=(s,n)=>{let r;return(r=e[s])||(r=e[s]=[]),r.push(n),o=>{r.length>1?r.forEach(i=>i(o)):r[0](o)}};Ls=t("__VUE_INSTANCE_SETTERS__",s=>Ce=s),_n=t("__VUE_SSR_SETTERS__",s=>ms=s)}const vs=e=>{const t=Ce;return Ls(e),e.scope.on(),()=>{e.scope.off(),Ls(t)}},cr=()=>{Ce&&Ce.scope.off(),Ls(null)};function Lo(e){return e.vnode.shapeFlag&4}let ms=!1;function Ll(e,t=!1,s=!1){t&&_n(t);const{props:n,children:r}=e.vnode,o=Lo(e);ml(e,n,o,t),vl(e,r,s||t);const i=o?Hl(e,t):void 0;return t&&_n(!1),i}function Hl(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,tl);const{setup:n}=s;if(n){bt();const r=e.setupContext=n.length>1?Ul(e):null,o=vs(e),i=_s(n,e,0,[e.props,r]),a=kr(i);if(_t(),o(),(a||e.sp)&&!as(e)&&fo(e),a){if(i.then(cr,cr),t)return i.then(u=>{ur(e,u)}).catch(u=>{Ws(u,e,0)});e.asyncDep=i}else ur(e,i)}else Ho(e)}function ur(e,t,s){W(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ne(t)&&(e.setupState=so(t)),Ho(e)}function Ho(e,t,s){const n=e.type;e.render||(e.render=n.render||rt);{const r=vs(e);bt();try{sl(e)}finally{_t(),r()}}}const jl={get(e,t){return ve(e,"get",""),e[t]}};function Ul(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,jl),slots:e.slots,emit:e.emit,expose:t}}function Js(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(so(Ai(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in cs)return cs[s](e)},has(t,s){return s in t||s in cs}})):e.proxy}function Vl(e){return W(e)&&"__vccOpts"in e}const Ee=(e,t)=>Ii(e,t,ms),Kl="3.5.30";let vn;const fr=typeof window<"u"&&window.trustedTypes;if(fr)try{vn=fr.createPolicy("vue",{createHTML:e=>e})}catch{}const jo=vn?e=>vn.createHTML(e):e=>e,Bl="http://www.w3.org/2000/svg",Wl="http://www.w3.org/1998/Math/MathML",dt=typeof document<"u"?document:null,dr=dt&&dt.createElement("template"),Gl={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,n)=>{const r=t==="svg"?dt.createElementNS(Bl,e):t==="mathml"?dt.createElementNS(Wl,e):s?dt.createElement(e,{is:s}):dt.createElement(e);return e==="select"&&n&&n.multiple!=null&&r.setAttribute("multiple",n.multiple),r},createText:e=>dt.createTextNode(e),createComment:e=>dt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>dt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,r,o){const i=s?s.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),s),!(r===o||!(r=r.nextSibling)););else{dr.innerHTML=jo(n==="svg"?`<svg>${e}</svg>`:n==="mathml"?`<math>${e}</math>`:e);const a=dr.content;if(n==="svg"||n==="mathml"){const u=a.firstChild;for(;u.firstChild;)a.appendChild(u.firstChild);a.removeChild(u)}t.insertBefore(a,s)}return[i?i.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},ql=Symbol("_vtc");function zl(e,t,s){const n=e[ql];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const hr=Symbol("_vod"),Jl=Symbol("_vsh"),Xl=Symbol(""),Yl=/(?:^|;)\s*display\s*:/;function Ql(e,t,s){const n=e.style,r=he(s);let o=!1;if(s&&!r){if(t)if(he(t))for(const i of t.split(";")){const a=i.slice(0,i.indexOf(":")).trim();s[a]==null&&Os(n,a,"")}else for(const i in t)s[i]==null&&Os(n,i,"");for(const i in s)i==="display"&&(o=!0),Os(n,i,s[i])}else if(r){if(t!==s){const i=n[Xl];i&&(s+=";"+i),n.cssText=s,o=Yl.test(s)}}else t&&e.removeAttribute("style");hr in e&&(e[hr]=o?n.display:"",e[Jl]&&(n.display="none"))}const pr=/\s*!important$/;function Os(e,t,s){if(D(s))s.forEach(n=>Os(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const n=Zl(e,t);pr.test(s)?e.setProperty(Ct(n),s.replace(pr,""),"important"):e[n]=s}}const gr=["Webkit","Moz","ms"],ln={};function Zl(e,t){const s=ln[t];if(s)return s;let n=Ke(t);if(n!=="filter"&&n in e)return ln[t]=n;n=Dr(n);for(let r=0;r<gr.length;r++){const o=gr[r]+n;if(o in e)return ln[t]=o}return t}const mr="http://www.w3.org/1999/xlink";function yr(e,t,s,n,r,o=ti(t)){n&&t.startsWith("xlink:")?s==null?e.removeAttributeNS(mr,t.slice(6,t.length)):e.setAttributeNS(mr,t,s):s==null||o&&!Hr(s)?e.removeAttribute(t):e.setAttribute(t,o?"":it(s)?String(s):s)}function br(e,t,s,n,r){if(t==="innerHTML"||t==="textContent"){s!=null&&(e[t]=t==="innerHTML"?jo(s):s);return}const o=e.tagName;if(t==="value"&&o!=="PROGRESS"&&!o.includes("-")){const a=o==="OPTION"?e.getAttribute("value")||"":e.value,u=s==null?e.type==="checkbox"?"on":"":String(s);(a!==u||!("_value"in e))&&(e.value=u),s==null&&e.removeAttribute(t),e._value=s;return}let i=!1;if(s===""||s==null){const a=typeof e[t];a==="boolean"?s=Hr(s):s==null&&a==="string"?(s="",i=!0):a==="number"&&(s=0,i=!0)}try{e[t]=s}catch{}i&&e.removeAttribute(r||t)}function Et(e,t,s,n){e.addEventListener(t,s,n)}function ea(e,t,s,n){e.removeEventListener(t,s,n)}const _r=Symbol("_vei");function ta(e,t,s,n,r=null){const o=e[_r]||(e[_r]={}),i=o[t];if(n&&i)i.value=n;else{const[a,u]=sa(t);if(n){const m=o[t]=oa(n,r);Et(e,a,m,u)}else i&&(ea(e,a,i,u),o[t]=void 0)}}const vr=/(?:Once|Passive|Capture)$/;function sa(e){let t;if(vr.test(e)){t={};let n;for(;n=e.match(vr);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):Ct(e.slice(2)),t]}let an=0;const na=Promise.resolve(),ra=()=>an||(na.then(()=>an=0),an=Date.now());function oa(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;lt(ia(n,s.value),t,5,[n])};return s.value=e,s.attached=ra(),s}function ia(e,t){if(D(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(n=>r=>!r._stopped&&n&&n(r))}else return t}const wr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,la=(e,t,s,n,r,o)=>{const i=r==="svg";t==="class"?zl(e,n,i):t==="style"?Ql(e,s,n):Hs(t)?Sn(t)||ta(e,t,s,n,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):aa(e,t,n,i))?(br(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&yr(e,t,n,i,o,t!=="value")):e._isVueCE&&(ca(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!he(n)))?br(e,Ke(t),n,o,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),yr(e,t,n,i))};function aa(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&wr(t)&&W(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return wr(t)&&he(s)?!1:t in e}function ca(e,t){const s=e._def.props;if(!s)return!1;const n=Ke(t);return Array.isArray(s)?s.some(r=>Ke(r)===n):Object.keys(s).some(r=>Ke(r)===n)}const Yt=e=>{const t=e.props["onUpdate:modelValue"]||!1;return D(t)?s=>Cs(t,s):t};function ua(e){e.target.composing=!0}function Sr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const yt=Symbol("_assign");function xr(e,t,s){return t&&(e=e.trim()),s&&(e=Us(e)),e}const cn={created(e,{modifiers:{lazy:t,trim:s,number:n}},r){e[yt]=Yt(r);const o=n||r.props&&r.props.type==="number";Et(e,t?"change":"input",i=>{i.target.composing||e[yt](xr(e.value,s,o))}),(s||o)&&Et(e,"change",()=>{e.value=xr(e.value,s,o)}),t||(Et(e,"compositionstart",ua),Et(e,"compositionend",Sr),Et(e,"change",Sr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:s,modifiers:{lazy:n,trim:r,number:o}},i){if(e[yt]=Yt(i),e.composing)return;const a=(o||e.type==="number")&&!/^0\d/.test(e.value)?Us(e.value):e.value,u=t??"";a!==u&&(document.activeElement===e&&e.type!=="range"&&(n&&t===s||r&&e.value.trim()===u)||(e.value=u))}},Ar={deep:!0,created(e,t,s){e[yt]=Yt(s),Et(e,"change",()=>{const n=e._modelValue,r=ys(e),o=e.checked,i=e[yt];if(D(n)){const a=Nn(n,r),u=a!==-1;if(o&&!u)i(n.concat(r));else if(!o&&u){const m=[...n];m.splice(a,1),i(m)}}else if(Qt(n)){const a=new Set(n);o?a.add(r):a.delete(r),i(a)}else i(Uo(e,o))})},mounted:Nr,beforeUpdate(e,t,s){e[yt]=Yt(s),Nr(e,t,s)}};function Nr(e,{value:t,oldValue:s},n){e._modelValue=t;let r;if(D(t))r=Nn(t,n.props.value)>-1;else if(Qt(t))r=t.has(n.props.value);else{if(t===s)return;r=Zt(t,Uo(e,!0))}e.checked!==r&&(e.checked=r)}const Er={deep:!0,created(e,{value:t,modifiers:{number:s}},n){const r=Qt(t);Et(e,"change",()=>{const o=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>s?Us(ys(i)):ys(i));e[yt](e.multiple?r?new Set(o):o:o[0]),e._assigning=!0,ro(()=>{e._assigning=!1})}),e[yt]=Yt(n)},mounted(e,{value:t}){Mr(e,t)},beforeUpdate(e,t,s){e[yt]=Yt(s)},updated(e,{value:t}){e._assigning||Mr(e,t)}};function Mr(e,t){const s=e.multiple,n=D(t);if(!(s&&!n&&!Qt(t))){for(let r=0,o=e.options.length;r<o;r++){const i=e.options[r],a=ys(i);if(s)if(n){const u=typeof a;u==="string"||u==="number"?i.selected=t.some(m=>String(m)===String(a)):i.selected=Nn(t,a)>-1}else i.selected=t.has(a);else if(Zt(ys(i),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!s&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function ys(e){return"_value"in e?e._value:e.value}function Uo(e,t){const s=t?"_trueValue":"_falseValue";return s in e?e[s]:t}const fa=["ctrl","shift","alt","meta"],da={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>fa.some(s=>e[`${s}Key`]&&!t.includes(s))},ha=(e,t)=>{if(!e)return e;const s=e._withMods||(e._withMods={}),n=t.join(".");return s[n]||(s[n]=((r,...o)=>{for(let i=0;i<t.length;i++){const a=da[t[i]];if(a&&a(r,t))return}return e(r,...o)}))},pa={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},ga=(e,t)=>{const s=e._withKeys||(e._withKeys={}),n=t.join(".");return s[n]||(s[n]=(r=>{if(!("key"in r))return;const o=Ct(r.key);if(t.some(i=>i===o||pa[i]===o))return e(r)}))},ma=Se({patchProp:la},Gl);let Cr;function ya(){return Cr||(Cr=Sl(ma))}const ba=((...e)=>{const t=ya().createApp(...e),{mount:s}=t;return t.mount=n=>{const r=va(n);if(!r)return;const o=t._component;!W(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const i=s(r,!1,_a(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t});function _a(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function va(e){return he(e)?document.querySelector(e):e}const wa=(e,t)=>{const s=e.__vccOpts||e;for(const[n,r]of t)s[n]=r;return s},Sa={class:"page-shell"},xa={class:"topbar"},Aa={class:"toolbar"},Na={class:"theme-strip"},Ea=["onClick"],Ma=["value"],Ca={class:"checkbox"},Ta=["disabled"],Ia={class:"statusbar"},$a={key:0,class:"status-detail"},Oa={class:"content-grid"},Pa={class:"card card-summary"},ka={class:"card-head"},Ra={key:0,class:"meta-chip"},Fa={class:"summary-pre"},Da={class:"metric-grid"},La={class:"metric"},Ha={class:"metric"},ja={class:"metric"},Ua={class:"metric"},Va={class:"card"},Ka={class:"card-head"},Ba={class:"meta-chip"},Wa={key:0,class:"rank-list"},Ga={class:"rank-title"},qa={class:"rank-label"},za={key:1,class:"empty-state"},Ja={class:"card"},Xa={class:"card-head"},Ya={class:"meta-chip"},Qa={key:0,class:"event-list"},Za={class:"event-name"},ec={class:"event-bar"},tc={key:1,class:"empty-state"},sc={class:"card card-bus"},nc={class:"card-head"},rc={key:0,class:"meta-chip"},oc={class:"pill-row"},ic={class:"pill success"},lc={class:"pill danger"},ac={class:"pill neutral"},cc={class:"bus-track"},uc=["title"],fc={class:"bus-scale"},dc={key:1,class:"empty-state"},hc={class:"card-head"},pc={class:"card-head-actions"},gc={class:"meta-chip"},mc={class:"flow-toolbar"},yc={class:"flow-field"},bc={class:"flow-field flow-field-search"},_c={class:"flow-field flow-field-select"},vc=["value"],wc={class:"checkbox flow-toggle"},Sc={class:"flow-frame"},xc=["viewBox"],Ac=["id"],Nc=["fill"],Ec=["d","stroke","stroke-width","opacity","marker-end"],Mc=["cx","cy"],Cc=["x","y"],Tc=["x","y"],Ic=["x","y"],$c=["x","y"],Oc={key:1,class:"empty-state flow-empty"},Pc={class:"flow-note"},kc={class:"card card-anomalies"},Rc={class:"card-head"},Fc={class:"meta-chip"},Dc={key:0,class:"anomaly-list"},Lc={class:"anomaly-head"},Hc={class:"anomaly-time"},jc={key:1,class:"empty-state"},Uc={class:"card card-chat"},Vc={class:"card-head"},Kc={class:"meta-chip"},Bc={class:"preset-row"},Wc=["disabled","onClick"],Gc={class:"ask-row"},qc=["disabled"],zc=["disabled"],Jc={class:"chat-log"},Xc=["innerHTML"],Yc={key:1},Qc={key:0,class:"chat-message chat-pending"},Zc={key:1,class:"empty-state"},Tr="knxUltimateAI:selectedNodeId",Ir="knxUltimateAI:autoRefresh",$r="knxUltimateAI:theme",Or="knxUltimateAI:flowPreview",eu={__name:"App",setup(e){const t=["mix","green","lavender"],s=["Summarize the current KNX traffic and highlight the busiest group addresses.","Explain any anomalies you see and suggest what to check first.","Generate an SVG bar chart of Top Group Addresses with counts and title."],n={write:"#7a68d8",response:"#46b86d",read:"#d99a34",repeat:"#c34747",other:"#9a93b8"},r=(()=>{try{return new URLSearchParams(window.location.search).get("nodeId")||""}catch{return""}})(),o=Bs({nodes:[],selectedNodeId:"",autoRefresh:m(Ir,!0),theme:ae(u($r,"mix")),flowMaxNodes:p().maxNodes,flowSelectedGa:p().selectedGa,flowShowUniversalNodes:p().showUniversalNodes,flowSearch:"",status:"Ready",loadingNodes:!1,loadingState:!1,asking:!1,stateData:null,lastError:"",chatMessages:[],chatDraft:"",pollStateHandle:null,pollNodesHandle:null}),i=Xn(null),a=Xn(!1);function u(h,l=""){try{return window.localStorage&&window.localStorage.getItem(h)||l}catch{return l}}function m(h,l){try{if(!window.localStorage)return l;const f=window.localStorage.getItem(h);return f==null||f===""?l:f==="true"}catch{return l}}function p(){try{if(!window.localStorage)return{maxNodes:14,selectedGa:[],showUniversalNodes:!1};const h=window.localStorage.getItem(Or);if(!h)return{maxNodes:14,selectedGa:[],showUniversalNodes:!1};const l=JSON.parse(h),f=Math.max(4,Math.min(32,Number(l&&l.maxNodes)||14)),C=Array.isArray(l&&l.selectedGa)?Array.from(new Set(l.selectedGa.map(B=>String(B||"").trim()).filter(Boolean))).slice(0,80):[],F=l&&l.showUniversalNodes===!0;return{maxNodes:f,selectedGa:C,showUniversalNodes:F}}catch{return{maxNodes:14,selectedGa:[],showUniversalNodes:!1}}}function _(h,l){try{window.localStorage&&window.localStorage.setItem(h,String(l??""))}catch{}}function T(h,l){try{window.localStorage&&window.localStorage.setItem(h,l?"true":"false")}catch{}}function I(){try{if(!window.localStorage)return;window.localStorage.setItem(Or,JSON.stringify({maxNodes:Math.max(4,Math.min(32,Number(o.flowMaxNodes)||14)),selectedGa:Array.from(new Set((o.flowSelectedGa||[]).map(h=>String(h||"").trim()).filter(Boolean))).slice(0,80),showUniversalNodes:o.flowShowUniversalNodes===!0}))}catch{}}async function X(){const h=i.value;if(!(!h||typeof h.requestFullscreen!="function"))try{document.fullscreenElement===h?await document.exitFullscreen():document.fullscreenElement||await h.requestFullscreen()}catch{}}function H(){a.value=document.fullscreenElement===i.value}function ae(h){const l=String(h||"").trim().toLowerCase();return t.includes(l)?l:"mix"}function ee(h){return new URL(h,window.location.href).toString()}function U(h){o.status=String(h||"")}async function te(h,l){const f=await fetch(h,Object.assign({credentials:"same-origin"},l||{})),C=await f.text();let F={};try{F=C?JSON.parse(C):{}}catch{F={error:C||`HTTP ${f.status}`}}if(!f.ok){const B=F&&F.error?F.error:`HTTP ${f.status}`;throw f.status===401||f.status===403?new Error(`Authentication required or insufficient permissions (${f.status}).`):new Error(B)}return F}function R(h){if(h==null)return"";if(typeof h=="string")return h;try{return JSON.stringify(h,null,2)}catch{return String(h)}}function ue(h){return String(h||"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function Ge(h){const l=String(h||"").trim();return l.includes("-")&&/^\|?\s*:?-{3,}:?\s*(\|\s*:?-{3,}:?\s*)+\|?\s*$/.test(l)}function Te(h){let l=String(h||"").trim();return l.startsWith("|")&&(l=l.slice(1)),l.endsWith("|")&&(l=l.slice(0,-1)),l.split("|").map(f=>String(f||"").trim())}function qe(h){return Te(h).map(l=>{const f=String(l||"").trim(),C=f.startsWith(":"),F=f.endsWith(":");return C&&F?"center":F?"right":"left"})}function Lt(h){const l=String(h||"").split(/\r?\n/);let f="",C=!1;const F=B=>{let k=String(B||"");return k=k.replace(/`([^`]+)`/g,"<code>$1</code>"),k=k.replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>"),k=k.replace(/\*([^*]+)\*/g,"<em>$1</em>"),k=k.replace(/\[([^\]]+)\]\(([^)]+)\)/g,(me,ce,le)=>`<a href="${/^javascript:/i.test(String(le||"").trim())?"#":le}" target="_blank" rel="noopener noreferrer">${ce}</a>`),k};for(let B=0;B<l.length;B++){const k=l[B];if(/^```/.test(k.trim())){C=!C,f+=C?"<pre><code>":"</code></pre>";continue}if(C){f+=`${k}
2
+ `;continue}if(/^###\s+/.test(k)){f+=`<h3>${k.replace(/^###\s+/,"")}</h3>`;continue}if(/^##\s+/.test(k)){f+=`<h2>${k.replace(/^##\s+/,"")}</h2>`;continue}if(/^#\s+/.test(k)){f+=`<h1>${k.replace(/^#\s+/,"")}</h1>`;continue}if(k.includes("|")&&B+1<l.length&&Ge(l[B+1])){const le=Te(k),Y=qe(l[B+1]),xe=[];for(B+=2;B<l.length&&l[B]&&l[B].includes("|")&&!/^```/.test(l[B].trim());)xe.push(Te(l[B])),B++;B-=1;const $e=Math.max(le.length,Y.length,...xe.map(fe=>fe.length),0);f+='<div class="chat-table-wrap"><table><thead><tr>';for(let fe=0;fe<$e;fe++)f+=`<th style="text-align:${Y[fe]||"left"};">${F(le[fe]||"")}</th>`;f+="</tr></thead><tbody>",xe.forEach(fe=>{f+="<tr>";for(let Ae=0;Ae<$e;Ae++)f+=`<td style="text-align:${Y[Ae]||"left"};">${F(fe[Ae]||"")}</td>`;f+="</tr>"}),f+="</tbody></table></div>";continue}const me=/^\s*[-*]\s+/.test(k),ce=/^\s*\d+\.\s+/.test(k);if(me||ce){const le=ce?"ol":"ul",Y=ce?/^\s*\d+\.\s+/:/^\s*[-*]\s+/;for(f+=`<${le}>`;B<l.length&&Y.test(l[B]);)f+=`<li>${F(l[B].replace(Y,""))}</li>`,B++;B-=1,f+=`</${le}>`;continue}if(k.trim()===""){f+="<br>";continue}f+=`<p>${F(k)}</p>`}return C&&(f+="</code></pre>"),f}function ze(h){return String(h||"").replace(/&lt;/gi,"<").replace(/&gt;/gi,">").replace(/&quot;/gi,'"').replace(/&#39;/gi,"'").replace(/&amp;/gi,"&")}function at(h){const l=[],f=/<svg[\s\S]*?<\/svg>/gi;let C;for(;(C=f.exec(String(h||"")))!==null;)C&&C[0]&&l.push(String(C[0]));return l}const Ht=new Set(["svg","g","path","line","polyline","polygon","circle","ellipse","rect","text","tspan","title","desc","defs","marker","lineargradient","radialgradient","stop","clippath"]),jt=new Set(["xmlns","xmlns:xlink","viewbox","preserveaspectratio","width","height","role","aria-label","id","class","x","y","x1","y1","x2","y2","cx","cy","r","rx","ry","d","points","transform","fill","fill-opacity","stroke","stroke-width","stroke-opacity","stroke-dasharray","stroke-linecap","stroke-linejoin","opacity","font-size","font-family","font-weight","text-anchor","dominant-baseline","offset","stop-color","stop-opacity","gradientunits","gradienttransform","fx","fy","marker-start","marker-mid","marker-end","markerwidth","markerheight","refx","refy","orient","markerunits","href","xlink:href","clip-path","clippathunits"]);function Tt(h){try{const f=new window.DOMParser().parseFromString(String(h||""),"image/svg+xml");if(!f||!f.documentElement||f.getElementsByTagName("parsererror").length)return"";const C=f.documentElement;if(String(C.tagName||"").toLowerCase()!=="svg")return"";const F=k=>{const me=String(k.tagName||"").toLowerCase();if(!Ht.has(me)){k.remove();return}Array.from(k.attributes||[]).forEach(ce=>{const le=String(ce.name||"").toLowerCase(),Y=String(ce.value||"");if(le.startsWith("on")||!jt.has(le)){k.removeAttribute(ce.name);return}(le==="href"||le==="xlink:href")&&Y&&!String(Y).trim().startsWith("#")&&k.removeAttribute(ce.name)}),Array.from(k.childNodes||[]).forEach(ce=>{ce.nodeType===1?F(ce):ce.nodeType!==3&&ce.remove()})};F(C),!C.getAttribute("viewBox")&&!C.getAttribute("viewbox")&&C.setAttribute("viewBox","0 0 920 360"),C.setAttribute("role",C.getAttribute("role")||"img");const B=new window.XMLSerializer().serializeToString(C);return B.length>12e4?"":B}catch{return""}}function St(h){return Lt(ue(h||""))}function ye(h){const l=R(h),f=l.trim();if(!f)return St("(empty answer)");const C=/```(?:svg|xml|html)?\s*([\s\S]*?)```/gi;let F="",B=0,k=!1,me;for(;(me=C.exec(l))!==null;){const le=l.slice(B,me.index);le.trim()&&(F+=St(le));const Y=String(me[1]||""),xe=ze(Y),$e=at(xe);if($e.length){let fe=0;$e.forEach(Ae=>{const De=Tt(Ae);De&&(fe++,k=!0,F+=`<div class="chat-svg-wrap">${De}</div>`)}),fe||(F+=`<pre><code>${ue(Y)}</code></pre>`)}else{const fe=Tt(xe);fe?(k=!0,F+=`<div class="chat-svg-wrap">${fe}</div>`):F+=`<pre><code>${ue(Y)}</code></pre>`}B=me.index+me[0].length}const ce=l.slice(B);if(ce.trim()&&(F+=St(ce)),!k){const le=ze(l),Y=Array.from(new Set([...at(l),...at(le)])).map(xe=>Tt(xe)).filter(Boolean);if(Y.length){const xe=l.replace(/<svg[\s\S]*?<\/svg>/gi,"").replace(/&lt;svg[\s\S]*?&lt;\/svg&gt;/gi,"").trim();F=xe?St(xe):"",Y.forEach($e=>{F+=`<div class="chat-svg-wrap">${$e}</div>`})}}return F||St(f)}function re(h){const l=Math.max(0,Math.round(Number(h)||0)),f=Math.floor(l/3600),C=Math.floor(l%3600/60),F=l%60;return f?`${f}h ${C}m`:C?`${C}m ${F}s`:`${F}s`}function J(h){if(!h)return"n/a";try{return new Date(h).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})}catch{return"n/a"}}function ct(h){if(!h)return"";try{return new Date(h).toLocaleString()}catch{return String(h)}}function ut(h){return h&&h.payload&&typeof h.payload=="object"?h.payload:{}}function Je(h){return h==null?"":String(h).trim()}function Re(h){const l=String(h||"").trim();return l.length>14?`${l.slice(0,12)}..`:l}function ws(h){const l=String(h||"").trim();return l?l.length>28?`${l.slice(0,26)}..`:l:""}function Xs(h){const l=Je(h).replace(/\s+/g," ");return l?l.length>30?`${l.slice(0,28)}..`:l:""}function Ys(h){const l=String(h||"").toLowerCase();return l.includes("repeat")?"repeat":l.includes("write")?"write":l.includes("response")?"response":l.includes("read")?"read":"other"}function It(h){const l={write:0,response:0,read:0,repeat:0,other:0};return Object.keys(h||{}).forEach(f=>{const C=Number(h[f]||0);C<=0||(l[Ys(f)]+=C)}),Object.keys(l).sort((f,C)=>l[C]-l[f])[0]||"other"}function xt(h){return!!(h&&h.kind==="node"&&h.listenAllGA)}function es(h){const l=h&&h.summary?h.summary:{},f=Array.isArray(h&&h.anomalies)?h.anomalies:[],C=Array.isArray(l.patternTransitions)?l.patternTransitions:[],F=Array.isArray(l.patterns)?l.patterns:[],B=l&&typeof l.gaLabels=="object"?l.gaLabels:{},k=l&&typeof l.gaLastPayload=="object"?l.gaLastPayload:{},me=l&&typeof l.gaLastSeenAt=="object"?l.gaLastSeenAt:{},ce=new Set((Array.isArray(l.flowKnownGAs)?l.flowKnownGAs:[]).map(g=>String(g||"").trim()).filter(Boolean)),le={};f.forEach(g=>{const O=String(g&&g.payload&&g.payload.ga?g.payload.ga:"BUS").trim()||"BUS";le[O]=(le[O]||0)+1});const Y=l&&l.flowMapTopology&&typeof l.flowMapTopology=="object"?l.flowMapTopology:null,xe=Array.isArray(Y&&Y.nodes)?Y.nodes:[],$e=Array.isArray(Y&&Y.edges)?Y.edges:[],fe=new Map,Ae=g=>{const O=String(g&&g.from?g.from:"").trim(),G=String(g&&g.to?g.to:"").trim();if(!O||!G||O===G)return;const _e=`${O}->${G}`,Ue={key:_e,from:O,to:G,weight:Math.max(1,Number(g&&(g.weight??g.currentWindowCount??g.totalCount??g.count)||1)),delta:Number(g&&g.delta?g.delta:0),edgeByEvent:g&&typeof g.edgeByEvent=="object"?g.edgeByEvent:{},lastAtMs:(()=>{const Ye=Number(g&&g.lastAtMs?g.lastAtMs:0);if(Number.isFinite(Ye)&&Ye>0)return Ye;const Vt=new Date(String(g&&g.lastAt?g.lastAt:"")).getTime();return Number.isFinite(Vt)?Vt:0})(),linkType:String(g&&g.linkType?g.linkType:"").trim()};if(!fe.has(_e)){fe.set(_e,Ue);return}const Ve=fe.get(_e);Ve.weight+=Ue.weight,Ve.delta+=Ue.delta,Ve.lastAtMs=Math.max(Number(Ve.lastAtMs||0),Number(Ue.lastAtMs||0)),Object.keys(Ue.edgeByEvent||{}).forEach(Ye=>{Ve.edgeByEvent[Ye]=Number(Ve.edgeByEvent[Ye]||0)+Number(Ue.edgeByEvent[Ye]||0)})};$e.length?$e.forEach(Ae):C.length?C.forEach(Ae):F.forEach(g=>Ae({from:g&&g.from,to:g&&g.to,count:g&&g.count,edgeByEvent:{}}));const De=new Map,Ut=(g,O={})=>{const G=String(g||"").trim();return G?(De.has(G)||De.set(G,{id:G,displayId:String(O.displayId||G).trim()||G,kind:String(O.kind||(G.startsWith("N:")?"node":"ga")).trim()||"ga",subtitle:String(O.subtitle||"").trim(),payload:Je(O.payload),anomalyCount:Number(O.anomalyCount||le[G]||0),inFlow:O.inFlow!==void 0?!!O.inFlow:ce.size?ce.has(G)||G==="BUS"||G.startsWith("N:"):!0,lastSeenAtMs:Number(O.lastSeenAtMs||0),score:Number(O.score||0),listenAllGA:O.listenAllGA===!0}),De.get(G)):null};return xe.forEach(g=>{const O=String(g&&g.id?g.id:"").trim();O&&Ut(O,{displayId:g&&g.displayId,kind:g&&g.kind,subtitle:g&&g.subtitle?g.subtitle:B[O],payload:g&&g.payload!==void 0?g.payload:k[O],anomalyCount:Number(g&&g.anomalyCount?g.anomalyCount:le[O]||0),inFlow:g&&g.inFlow!==void 0?!!g.inFlow:void 0,lastSeenAtMs:Number(g&&g.lastSeenAtMs?g.lastSeenAtMs:new Date(String(g&&g.lastAt?g.lastAt:me[O]||"")).getTime()||0),score:Number(g&&g.score?g.score:0),listenAllGA:g&&g.listenAllGA===!0})}),Array.from(fe.values()).forEach(g=>{Ut(g.from,{subtitle:B[g.from],payload:k[g.from],lastSeenAtMs:new Date(String(me[g.from]||"")).getTime()||g.lastAtMs||0}),Ut(g.to,{subtitle:B[g.to],payload:k[g.to],lastSeenAtMs:new Date(String(me[g.to]||"")).getTime()||g.lastAtMs||0});const O=De.get(g.from),G=De.get(g.to);O&&(O.score+=Number(g.weight||0)),G&&(G.score+=Number(g.weight||0))}),(Array.isArray(l.topGAs)?l.topGAs:[]).slice(0,12).forEach(g=>{const O=String(g&&g.ga?g.ga:"").trim();if(!O)return;const G=Ut(O,{subtitle:g&&g.label?g.label:B[O],payload:k[O],lastSeenAtMs:new Date(String(me[O]||"")).getTime()||0});G&&(G.score+=Number(g&&g.count?g.count:0))}),{nodes:Array.from(De.values()),edges:Array.from(fe.values()).sort((g,O)=>Number(O.weight||0)-Number(g.weight||0)).slice(0,48),telemetryWindowSec:Number(l&&l.graph&&l.graph.windowSec?l.graph.windowSec:l?.meta?.analysisWindowSec||0)}}function Ss(h){let l=Array.isArray(h&&h.nodes)?h.nodes.slice():[];const f=Array.isArray(h&&h.edges)?h.edges.slice():[];o.flowShowUniversalNodes!==!0&&(l=l.filter(g=>!xt(g)));const C=new Set(l.map(g=>g.id)),F=new Set((o.flowSelectedGa||[]).map(g=>String(g||"").trim()).filter(g=>g&&C.has(g))),B=Math.max(4,Math.min(32,Number(o.flowMaxNodes)||14));let k=l.slice().sort((g,O)=>{const G=Number(g.anomalyCount||0)*10+Number(g.score||0),_e=Number(O.anomalyCount||0)*10+Number(O.score||0);return _e!==G?_e-G:String(g.id||"").localeCompare(String(O.id||""))});if(F.size){const g=new Set(F);f.forEach(O=>{F.has(O.from)&&g.add(O.to),F.has(O.to)&&g.add(O.from)}),k=k.filter(O=>g.has(O.id))}else k=k.slice(0,B);const me=new Set(k.map(g=>g.id)),ce=f.filter(g=>me.has(g.from)&&me.has(g.to)),le=Math.max(...ce.map(g=>Number(g.weight||0)),1),Y=Math.max(2,Math.min(6,Math.ceil(Math.sqrt(Math.max(k.length,4)*1.5)))),xe=Math.max(1,Math.ceil(k.length/Y)),$e=1080,fe=Math.max(420,140+(xe-1)*150),Ae=new Map;k.forEach((g,O)=>{const G=Math.floor(O/Y),_e=O%Y,Ue=Y===1?$e/2:90+_e*(($e-180)/Math.max(Y-1,1)),Ve=92+G*148;Ae.set(g.id,{x:Ue,y:Ve,row:G,col:_e})});const De=Date.now(),Ut=ce.map((g,O)=>{const G=Ae.get(g.from),_e=Ae.get(g.to);if(!G||!_e)return null;const Ue=_e.x-G.x,Ve=_e.y-G.y,Ye=Math.max(Math.hypot(Ue,Ve),1),Vt=Ue/Ye,Qs=Ve/Ye,As=24,Ln=G.x+Vt*(As+2),Hn=G.y+Qs*(As+2),jn=_e.x-Vt*(As+8),Un=_e.y-Qs*(As+8),Vo=-Qs,Ko=Vt,Vn=28+O%3*14,Kn=O%2===0?1:-1,Bo=(Ln+jn)/2+Vo*Vn*Kn,Wo=(Hn+Un)/2+Ko*Vn*Kn,Bn=It(g.edgeByEvent),Wn=Number(g.lastAtMs||0)>0&&De-Number(g.lastAtMs||0)<=5e3;return{key:g.key,from:g.from,to:g.to,d:`M ${Ln} ${Hn} Q ${Bo} ${Wo} ${jn} ${Un}`,width:(.9+Number(g.weight||0)/le*1.7).toFixed(2),color:n[Bn]||n.other,opacity:Wn?.82:.24,markerId:`flow-arrow-${Bn}`,tooltip:`${g.from} -> ${g.to} | traffic: ${Number(g.weight||0)}${g.delta?` | delta: ${g.delta>0?"+":""}${g.delta}`:""}`,active:Wn}}).filter(Boolean);return{width:$e,height:fe,telemetryWindowSec:Number(h&&h.telemetryWindowSec?h.telemetryWindowSec:0),nodes:k.map(g=>{const O=Ae.get(g.id),G=Number(g.lastSeenAtMs||0);return Object.assign({},g,O,{shortLabel:Re(g.displayId||g.id),shortSubtitle:ws(g.subtitle),shortPayload:Xs(g.payload),isIdle:G>0&&De-G>45e3})}),edges:Ut,maxNodes:B,selectedCount:F.size}}const Xe=Ee(()=>o.nodes.find(h=>h.id===o.selectedNodeId)||null),ge=Ee(()=>o.stateData&&o.stateData.summary?o.stateData.summary:{}),c=Ee(()=>o.stateData&&o.stateData.node?o.stateData.node:{}),d=Ee(()=>Array.isArray(o.stateData&&o.stateData.anomalies)?o.stateData.anomalies.slice().reverse():[]),y=Ee(()=>Array.isArray(ge.value.topGAs)?ge.value.topGAs.slice(0,10):[]),S=Ee(()=>{const h=ge.value&&ge.value.byEvent&&typeof ge.value.byEvent=="object"?ge.value.byEvent:{};return Object.keys(h).map(l=>({name:l,count:Number(h[l]||0)})).filter(l=>l.count>0).sort((l,f)=>f.count-l.count)}),v=Ee(()=>Math.max(...S.value.map(h=>h.count),1)),w=Ee(()=>es(o.stateData)),N=Ee(()=>Ss(w.value)),E=Ee(()=>{const h=String(o.flowSearch||"").trim().toLowerCase();return w.value.nodes.slice().filter(l=>o.flowShowUniversalNodes===!0||!xt(l)).sort((l,f)=>String(l.id||"").localeCompare(String(f.id||""))).filter(l=>h?`${l.id} ${l.subtitle||""}`.toLowerCase().includes(h):!0).slice(0,120)}),A=Ee(()=>ge.value&&ge.value.busConnection&&typeof ge.value.busConnection=="object"?ge.value.busConnection:null),x=Ee(()=>{const h=ge.value||{};if(!Object.keys(h).length)return"No data available.";const l=h.counters||{},f=[];return f.push(c.value.name||Xe.value?.name||"KNX AI"),f.push(`Analysis window: ${Number(h.meta?.analysisWindowSec||0)}s`),f.push(`Telegrams: ${Number(l.telegrams||0)} | Rate: ${Number(l.overallRatePerSec||0)}/s`),f.push(`Echoed: ${Number(l.echoed||0)} | Repeat: ${Number(l.repeated||0)} | Unknown DPT: ${Number(l.unknownDpt||0)}`),A.value&&f.push(`Bus: ${String(A.value.currentState||"unknown")} | Connected: ${Number(A.value.connectedPct||0)}% | Disconnected: ${Number(A.value.disconnectedPct||0)}%`),f.join(`
3
+ `)}),P=Ee(()=>{const h=A.value;return!h||!Array.isArray(h.segments)?[]:h.segments.map((l,f)=>{const C=Math.max(0,Math.min(1,Number(l&&l.ratioStart)||0)),F=Math.max(0,Math.min(1,Number(l&&l.ratioWidth)||0));return{key:`${f}-${l?.startedAt||""}`,left:`${(C*100).toFixed(3)}%`,width:`${Math.max(F*100,.4).toFixed(3)}%`,title:`${l?.state==="connected"?"Connected":"Disconnected"} | ${J(l?.startedAt)} -> ${J(l?.endedAt)} | ${re(l?.durationSec||0)}`,className:l?.state==="connected"?"segment-connected":"segment-disconnected"}}).filter(l=>Number.parseFloat(l.width)>0)}),M=Ee(()=>o.chatMessages.map((h,l)=>({key:`${l}-${h.kind}`,kind:h.kind,rawText:R(h.text),html:h.kind==="assistant"?ye(h.text):""})));ht(()=>o.selectedNodeId,h=>{_(Tr,h||"")}),ht(()=>o.autoRefresh,h=>{T(Ir,h)}),ht(()=>o.theme,h=>{_($r,ae(h)),q()}),ht(()=>o.flowMaxNodes,h=>{o.flowMaxNodes=Math.max(4,Math.min(32,Number(h)||14)),I()}),ht(()=>(o.flowSelectedGa||[]).join("|"),()=>{I()}),ht(()=>o.flowShowUniversalNodes,h=>{h!==!0&&(o.flowSelectedGa=(o.flowSelectedGa||[]).filter(l=>{const f=w.value.nodes.find(C=>C.id===l);return!xt(f)})),I()});function $(h,l){o.chatMessages.push({kind:h,text:l})}function L(){o.chatMessages=[]}function q(){const h="knx-ai-theme-link-vue";let l=document.getElementById(h);l||(l=document.createElement("link"),l.id=h,l.rel="stylesheet",document.head.appendChild(l));const f=ae(o.theme),C=ee(`theme/${f}.css`);l.getAttribute("href")!==C&&(l.setAttribute("href",C),document.documentElement.setAttribute("data-theme",f))}function se(h){const l=r&&h.find(F=>F.id===r)?r:"",f=u(Tr,""),C=f&&h.find(F=>F.id===f)?f:"";return l||C||(h[0]?h[0].id:"")}async function z({preserveSelection:h=!0}={}){o.loadingNodes=!0,U("Loading nodes...");try{const l=await te(ee("nodes")),f=Array.isArray(l&&l.nodes)?l.nodes:[];if(o.nodes=f,!f.length){o.selectedNodeId="",o.stateData=null,o.lastError="No KNX AI nodes found.",U(o.lastError);return}const C=h&&o.selectedNodeId&&f.find(F=>F.id===o.selectedNodeId)?o.selectedNodeId:se(f);o.selectedNodeId=C,o.lastError="",U("Ready")}catch(l){o.lastError=l.message||"Failed to load nodes",U(o.lastError)}finally{o.loadingNodes=!1}}async function pe({fresh:h=!1}={}){if(!(!o.selectedNodeId||o.loadingState)){o.loadingState=!0,h&&U("Loading...");try{const l=await te(ee(`state?nodeId=${encodeURIComponent(o.selectedNodeId)}&fresh=${h?1:0}`));o.stateData=l,o.lastError="",U("Ready")}catch(l){o.lastError=l.message||"Failed to load state",U(o.lastError)}finally{o.loadingState=!1}}}async function be(){await z({preserveSelection:!0}),await pe({fresh:!0})}async function Fe(){L(),await pe({fresh:!0})}async function Ie(h=""){const l=String(h||"").trim(),f=l||String(o.chatDraft||"").trim();if(!(!f||!o.selectedNodeId)){$("user",f),l||(o.chatDraft=""),o.asking=!0,U("Asking...");try{const C=await te(ee("ask"),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({nodeId:o.selectedNodeId,question:f})});$("assistant",C&&C.answer!==void 0?C.answer:""),U("Ready")}catch(C){$("error",C.message||"Ask failed"),U(C.message||"Ask failed")}finally{o.asking=!1}}}function $t(){o.pollStateHandle||(o.pollStateHandle=window.setInterval(()=>{o.autoRefresh&&pe({fresh:!1})},1500)),o.pollNodesHandle||(o.pollNodesHandle=window.setInterval(()=>{z({preserveSelection:!0})},15e3))}function xs(){o.pollStateHandle&&(window.clearInterval(o.pollStateHandle),o.pollStateHandle=null),o.pollNodesHandle&&(window.clearInterval(o.pollNodesHandle),o.pollNodesHandle=null)}return go(async()=>{document.addEventListener("fullscreenchange",H),q(),await z({preserveSelection:!1}),await pe({fresh:!0}),$t()}),mo(()=>{document.removeEventListener("fullscreenchange",H),xs()}),(h,l)=>(V(),K("div",Sa,[b("header",xa,[l[10]||(l[10]=b("div",{class:"brand"},[b("p",{class:"eyebrow"},"Vue Preview"),b("h1",null,"KNX AI Web"),b("p",{class:"subhead"},"Nuova UI in Vue 3, servita dal backend di Node-RED. Ora include anche una flow map SVG nativa per lavorare senza uscire dalla preview.")],-1)),b("div",Aa,[b("div",Na,[(V(),K(de,null,Le(t,f=>b("button",{key:f,class:et(["theme-button",{active:o.theme===f}]),type:"button",onClick:C=>o.theme=f},j(f),11,Ea)),64))]),Ot(b("select",{"onUpdate:modelValue":l[0]||(l[0]=f=>o.selectedNodeId=f),class:"node-select",onChange:Fe},[(V(!0),K(de,null,Le(o.nodes,f=>(V(),K("option",{key:f.id,value:f.id},j(`${f.name||"KNX AI"}${f.gatewayName?` | ${f.gatewayName}`:""}`),9,Ma))),128))],544),[[Er,o.selectedNodeId]]),b("label",Ca,[Ot(b("input",{"onUpdate:modelValue":l[1]||(l[1]=f=>o.autoRefresh=f),type:"checkbox"},null,512),[[Ar,o.autoRefresh]]),l[9]||(l[9]=b("span",null,"Auto refresh",-1))]),b("button",{class:"primary-button",type:"button",disabled:o.loadingNodes||o.loadingState,onClick:be}," Refresh ",8,Ta)]),b("div",Ia,[b("span",{class:et(["status-pill",{error:!!o.lastError}])},j(o.status),3),Xe.value?(V(),K("span",$a,"Provider: "+j(Xe.value.llmProvider||"n/a")+" | Model: "+j(Xe.value.llmModel||"n/a"),1)):At("",!0)])]),b("main",Oa,[b("section",Pa,[b("div",ka,[l[11]||(l[11]=b("h2",null,"Summary",-1)),ge.value.meta?.generatedAt?(V(),K("span",Ra,j(ct(ge.value.meta.generatedAt)),1)):At("",!0)]),b("pre",Fa,j(x.value),1),b("div",Da,[b("article",La,[l[12]||(l[12]=b("span",null,"Telegrams",-1)),b("strong",null,j(Number(ge.value.counters?.telegrams||0)),1)]),b("article",Ha,[l[13]||(l[13]=b("span",null,"Rate",-1)),b("strong",null,j(Number(ge.value.counters?.overallRatePerSec||0))+"/s",1)]),b("article",ja,[l[14]||(l[14]=b("span",null,"Repeat",-1)),b("strong",null,j(Number(ge.value.counters?.repeated||0)),1)]),b("article",Ua,[l[15]||(l[15]=b("span",null,"Unknown DPT",-1)),b("strong",null,j(Number(ge.value.counters?.unknownDpt||0)),1)])])]),b("section",Va,[b("div",Ka,[l[16]||(l[16]=b("h2",null,"Top Group Addresses",-1)),b("span",Ba,j(y.value.length)+" visible",1)]),y.value.length?(V(),K("ul",Wa,[(V(!0),K(de,null,Le(y.value,f=>(V(),K("li",{key:f.ga,class:"rank-row"},[b("span",Ga,j(f.ga),1),b("span",qa,j(f.label||"Unlabeled"),1),b("strong",null,j(Number(f.count||0)),1)]))),128))])):(V(),K("p",za,"No top group address data available yet."))]),b("section",Ja,[b("div",Xa,[l[17]||(l[17]=b("h2",null,"Event Mix",-1)),b("span",Ya,j(S.value.length)+" event types",1)]),S.value.length?(V(),K("ul",Qa,[(V(!0),K(de,null,Le(S.value,f=>(V(),K("li",{key:f.name,class:"event-row"},[b("span",Za,j(f.name),1),b("div",ec,[b("span",{class:"event-bar-fill",style:fs({width:`${Math.max(f.count/v.value*100,6)}%`})},null,4)]),b("strong",null,j(f.count),1)]))),128))])):(V(),K("p",tc,"Event distribution will appear after the first samples."))]),b("section",sc,[b("div",nc,[l[18]||(l[18]=b("h2",null,"Bus Connection Persistence",-1)),A.value?(V(),K("span",rc,j(String(A.value.currentState||"unknown")),1)):At("",!0)]),A.value?(V(),K(de,{key:0},[b("div",oc,[b("span",ic,"Connected "+j(re(A.value.connectedSec||0)),1),b("span",lc,"Disconnected "+j(re(A.value.disconnectedSec||0)),1),b("span",ac,"Coverage "+j(Number(A.value.knownCoveragePct||0))+"%",1)]),b("div",cc,[(V(!0),K(de,null,Le(P.value,f=>(V(),K("span",{key:f.key,class:et(["bus-segment",f.className]),style:fs({left:f.left,width:f.width}),title:f.title},null,14,uc))),128))]),b("div",fc,[b("span",null,j(J(A.value.windowStartAt)),1),b("span",null,j(J(A.value.windowEndAt)),1),l[19]||(l[19]=b("span",null,"Now",-1))]),l[20]||(l[20]=b("p",{class:"bus-note"},"Green shows time connected to the KNX bus. Red shows downtime inside the selected history window.",-1))],64)):(V(),K("p",dc,"Waiting for connection persistence data..."))]),b("section",{ref_key:"flowCardRef",ref:i,class:et(["card card-flow",{"is-fullscreen":a.value}])},[b("div",hc,[l[21]||(l[21]=b("h2",null,"Flow Map",-1)),b("div",pc,[b("span",gc," Nodes "+j(N.value.nodes.length)+" | Links "+j(N.value.edges.length),1),b("button",{class:"secondary-button",type:"button",onClick:X},j(a.value?"Exit Fullscreen":"Fullscreen"),1)])]),b("div",mc,[b("label",yc,[l[22]||(l[22]=b("span",null,"Max nodes",-1)),Ot(b("input",{"onUpdate:modelValue":l[2]||(l[2]=f=>o.flowMaxNodes=f),type:"number",min:"4",max:"32",step:"1"},null,512),[[cn,o.flowMaxNodes,void 0,{number:!0}]])]),b("label",bc,[l[23]||(l[23]=b("span",null,"Find GA",-1)),Ot(b("input",{"onUpdate:modelValue":l[3]||(l[3]=f=>o.flowSearch=f),type:"text",placeholder:"Search GA or label"},null,512),[[cn,o.flowSearch]])]),b("label",_c,[l[24]||(l[24]=b("span",null,"Focus nodes",-1)),Ot(b("select",{"onUpdate:modelValue":l[4]||(l[4]=f=>o.flowSelectedGa=f),multiple:"",size:"5"},[(V(!0),K(de,null,Le(E.value,f=>(V(),K("option",{key:f.id,value:f.id},j(`${f.id}${f.subtitle?` | ${f.subtitle}`:""}`),9,vc))),128))],512),[[Er,o.flowSelectedGa]])]),b("label",wc,[Ot(b("input",{"onUpdate:modelValue":l[5]||(l[5]=f=>o.flowShowUniversalNodes=f),type:"checkbox"},null,512),[[Ar,o.flowShowUniversalNodes]]),l[25]||(l[25]=b("span",null,"Show Universal Mode nodes",-1))]),l[26]||(l[26]=Ol('<div class="flow-legend" data-v-faa9aec2><span data-v-faa9aec2><i class="legend-line legend-write" data-v-faa9aec2></i>Write</span><span data-v-faa9aec2><i class="legend-line legend-response" data-v-faa9aec2></i>Response</span><span data-v-faa9aec2><i class="legend-line legend-read" data-v-faa9aec2></i>Read</span><span data-v-faa9aec2><i class="legend-line legend-repeat" data-v-faa9aec2></i>Repeat</span><span data-v-faa9aec2><i class="legend-dot legend-anomaly" data-v-faa9aec2></i>Anomaly</span><span data-v-faa9aec2><i class="legend-dot legend-external" data-v-faa9aec2></i>External</span></div>',1))]),b("div",Sc,[N.value.nodes.length?(V(),K("svg",{key:0,class:"flow-svg",viewBox:`0 0 ${N.value.width} ${N.value.height}`,preserveAspectRatio:"xMidYMid meet"},[b("defs",null,[(V(),K(de,null,Le(n,(f,C)=>b("marker",{id:`flow-arrow-${C}`,key:C,viewBox:"0 0 10 8",markerWidth:"10",markerHeight:"8",refX:"8.8",refY:"4",orient:"auto",markerUnits:"userSpaceOnUse"},[b("path",{d:"M0,0 L10,4 L0,8 z",fill:f},null,8,Nc)],8,Ac)),64))]),(V(!0),K(de,null,Le(N.value.edges,f=>(V(),K("path",{key:f.key,class:et(["flow-edge",{"flow-edge-active":f.active,"flow-edge-idle":!f.active}]),d:f.d,stroke:f.color,"stroke-width":f.width,opacity:f.opacity,"marker-end":`url(#${f.markerId})`},[b("title",null,j(f.tooltip),1)],10,Ec))),128)),(V(!0),K(de,null,Le(N.value.nodes,f=>(V(),K("g",{key:f.id,class:et(["flow-node",{"is-anomaly":f.anomalyCount>0,"is-external":!f.inFlow,"is-idle":f.isIdle}])},[b("circle",{cx:f.x,cy:f.y,r:"24"},null,8,Mc),b("text",{class:"node-label",x:f.x,y:f.y+1},j(f.shortLabel),9,Cc),f.shortSubtitle?(V(),K("text",{key:0,class:"node-subtitle",x:f.x,y:f.y+38},j(f.shortSubtitle),9,Tc)):At("",!0),f.shortPayload?(V(),K("text",{key:1,class:"node-payload",x:f.x,y:f.y+52},j(f.shortPayload),9,Ic)):At("",!0),f.anomalyCount>0?(V(),K("text",{key:2,class:"node-badge",x:f.x,y:f.y-30},"anomaly x"+j(f.anomalyCount),9,$c)):At("",!0),b("title",null,j(`${f.id}${f.subtitle?` | ${f.subtitle}`:""}${f.payload?` | payload: ${f.payload}`:""}`),1)],2))),128))],8,xc)):(V(),K("p",Oc,"No topology data available yet."))]),b("p",Pc,"Window "+j(N.value.telemetryWindowSec||0)+"s.",1)],2),b("section",kc,[b("div",Rc,[l[27]||(l[27]=b("h2",null,"Anomalies",-1)),b("span",Fc,j(d.value.length)+" recent",1)]),d.value.length?(V(),K("div",Dc,[(V(!0),K(de,null,Le(d.value.slice(0,20),f=>(V(),K("article",{key:`${f.at}-${ut(f).ga||""}`,class:"anomaly-card"},[b("div",Lc,[b("strong",null,j(ut(f).type||"anomaly"),1),b("span",null,j(ut(f).ga||"no GA"),1)]),b("p",Hc,j(f.at||""),1),b("pre",null,j(JSON.stringify(ut(f),null,2)),1)]))),128))])):(V(),K("p",jc,"No anomalies detected right now."))]),b("section",Uc,[b("div",Vc,[l[28]||(l[28]=b("h2",null,"Ask",-1)),b("span",Kc,j(c.value.llmEnabled?"LLM enabled":"LLM disabled"),1)]),b("div",Bc,[(V(),K(de,null,Le(s,f=>b("button",{key:f,class:"preset-button",type:"button",disabled:o.asking||!c.value.llmEnabled,onClick:C=>Ie(f)},j(f),9,Wc)),64))]),b("div",Gc,[Ot(b("input",{"onUpdate:modelValue":l[6]||(l[6]=f=>o.chatDraft=f),class:"ask-input",type:"text",disabled:o.asking||!c.value.llmEnabled,placeholder:"Ask a question about KNX traffic...",onKeydown:l[7]||(l[7]=ga(ha(f=>Ie(),["prevent"]),["enter"]))},null,40,qc),[[cn,o.chatDraft]]),b("button",{class:"primary-button",type:"button",disabled:o.asking||!c.value.llmEnabled,onClick:l[8]||(l[8]=f=>Ie())}," Send ",8,zc)]),b("div",Jc,[(V(!0),K(de,null,Le(M.value,f=>(V(),K("article",{key:f.key,class:et(["chat-message",`chat-${f.kind}`])},[f.kind==="assistant"?(V(),K("div",{key:0,innerHTML:f.html},null,8,Xc)):(V(),K("pre",Yc,j(f.rawText),1))],2))),128)),o.asking?(V(),K("article",Qc,"Thinking...")):At("",!0),!M.value.length&&!o.asking?(V(),K("p",Zc,"Ask a question about KNX traffic. SVG responses are supported here as well.")):At("",!0)])])])]))}},tu=wa(eu,[["__scopeId","data-v-faa9aec2"]]);ba(tu).mount("#app");
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "engines": {
4
4
  "node": ">=20.18.1"
5
5
  },
6
- "version": "4.2.2",
6
+ "version": "4.2.3",
7
7
  "description": "Control your KNX and KNX Secure intallation via Node-Red! A bunch of KNX nodes, with integrated Philips HUE control, ETS group address importer, and KNX routing between interfaces. Easy to use and highly configurable.",
8
8
  "files": [
9
9
  "nodes/",