agent-comm-hub 0.8.0 → 0.9.0

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/assets/admin.html CHANGED
@@ -1,1744 +1,191 @@
1
1
  <!doctype html>
2
- <html lang="zh-CN">
3
- <head>
4
- <meta charset="utf-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1">
6
- <title>agent-comm-hub admin console</title>
7
- <link rel="icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAKc0lEQVR42u1dfWwT5xn/PeezHewEG5yCRCiZFjq00LkBiagULYFBq8pptzHGHzQtXbaBkKa2UImqKyoBqoImTy2oRernMjJ1aA2IUZr8sXaDZEIIt4NgdUihSVVY4nXUJnEcG3+d3/2RnHN2/JUP+87JPVKkEN8dut/vfZ/v1w8hR4nFYjwAcBwXlfy7mjFmI6K1YGwZAz2AOSAEdg1Etxhjl4ioA8D1JFziOGV/Vo7gS/4DK4AmMLZ+rgCeIyEXALRwHOdMxmzKBEjZFIFnDM+pkGcAlHAOwMscxzlz2Q2Uy6oXBOFFgA6r8E5G2EtE9PuxxZt2N1Am8McYPM0YHlcBnfJu2JKJBMoAvhWMnVD1/IwQUSOqpGQSKB34jKFbhS7/JHDiL83NzVzc8DJ2QoVshi0CQ3eSak/cAZIPz6o6P6/u6pr46ue4KCcFXxCEF1Xw87gLRu2pXaqCSLodGENYhakw9gDA9bgNGGPktApNweQVcReQmF5QvR55vCLRC2pSISm4NI3bAMY+UwMuWXaBjgNQPVvAd3kEQlHFBuwRjjFmK3bge11Rsu1z0wf/CBTZDqCHOSJaW8zgtzuC1HjYg+tfh1FdqS228Hg9D8aW5ViXUZycPB+go6d9AIDFCzRFGZhxxar/3+rw08HWoYS/3WPicrYVjp6wIlYdV4zg29t8dLTNC5MxcdUvLOOyAm9v89HmZje+9cYU8S58Ma789zt8E8AHAIOeMpJ29vMw+vtDeOh+PRpqS5hKwBQMbqqVL0ogxFLec/zsCL5yhWEyarB4gQaNG42KeSe+mFzNQ63pwU91/e/+MgxnXwQA4vdZTBrFrP6iIuDZ40NZr7nji03wjpJlQ41eUe/FFYve/8qVPVMuGtajp33w+oWU19RblUUAr9SUwtW+CK7fjOBGfwTOvkhOqudCdxANtSW4/OZiZm/z0fnuEDzecSKqKnjUrtAxJb0rCUIsBgUZ2QvdQXQ5QwAAr1/IWeeLUmfVY2u9IQ60vc1HpzoD8PoF/MpWhr1by1QCkqXzizC9fc6HvoHojD2zqoJH40YjGmpLWK8rSs8eH8JvflKqKAOsCAL2vjNE4orPh9RZ9bDvNCsKdEUQ4OgJ04HW4bh/nk/RGnm89ssyxel/2QhodwTpUKu34C+7f7tJcSqImyvgA8ChVi+UkoSThQAxmpVTDrQOz91ALJdoNt/i8Qqwt/lozhFgb/PlFM3OhNeze0sZ6qx6aI2p48xTnQHF1I+5QqmeU52BvHs7ADDgEbBtg4HZd5rZhy+YUZcm9fDR5eDc2QFvfzwy7WdYTJr4jyip8j19A1HsfWeIAGCJRcPsO83s0QfnTbjuXz0hzAk3tNcVpcbDnmk9w1qlxQ5badyPd3kE6ncL6HSGkJzvSZeSsO1zU/J1Zw6WY4lFw2Y1AfY2X9oK1mSlyVaKXTYjS+XafvB3f8pUhsWkgbmUMDTCJhCV7nmzioBUK2+yUewyM2AsIfiDDKuW69Im1KR1AK2RR8QfzfrsD18wy7oL8kqAoydMz7wxOKV7H31wHhrWlGBpuWZSAPW6orT/hBdXboRy2nXWKi3e3bNwdhJw8nyADrYOTUr91Fn12LOlbNqrMpckn7hL5EzY5dUL6ncLk87V2Hea2UyoBPtOM9u/3ZTxmog/Cq2RR5czhCeOeKjXFaVZtQMmk2p+45kFeclWJhfns8nP6w1o/JGhYHYhrwQ8ccRDuRRZdm8pw7YNBpbvJODxsyPIxSGwmDTYUKPH5nXzsHwJz2Z1Ud5apc07+ADQUFvCOl4tZ0220oRgLtkmaI08PF4BpzoD2H/CO/uL8jtspdNWMWcu3sXV3jCGRhjMpYQKiwar79Oh3qqfoEp22Yxsl82IdkeQrt+M4GpvGLeGRu2B6LbGjfMDJcWtgna8focy6d6qCh5//q2FTbc72mLSYGUlj0ULNLg9KGDAI8RBtZg0+PG6edhUo8+oTkQD/PbHIzh3KYAfWksK4p7mdQeYjZk13KrlOoiphckavV5XlK58Gc5ovB09YWr/LIiPLt5FS8cILCYNrfm+DrXf0+EeExdv5r3ji+FbbwxiR8bjaw0Fc0vzugPe6vBTS8dIRs9HfPF8v7CjJ0ydzhCu9obTdl8k549Q7I1Zq6u0aMnweaczhPc7fNi91ZT3F61doWO1K3SQNn8FQgwGPcmaiuDz/dIWkyZtLkisEdxbXvjTLSLojp4wXe2L0H/cAu4tL3zjbt69oJWVPLqcmX3vYX9Mtp7Tlo4RaI08BkaAN582zr6CzPqakhlPWcyUXP46Bq2Rx3yeoaIUWLGUn30ENNSWsHSBjyi3B4VJn/1Nl7fJtdbb64rSlzdHa9TDUcIyM/Ie9coWCT+1yZC2XRwA/n0zmtJrse1z0+ZmN06eD1ByjqnxsAc7Xr9DyXHB5mY3bPvcWQ/hnbl4FwAwfwzzQgRdshGwbYOBfXeJDplaRdodwQTA2joD8bzNnz4NJBDT5QzBYtLgn85gwn3idR6vgLbOQMbVf/bz8dUPAJtkOrhRsFzQge3zM37+14uJgK2+TxcvvK+sHNfNS8tHC/Mer4DyRfoEvb2yko/vtKql2qxNAuLq3/gDrSzqp+C9odnqw8lRbbsjSMP+2IRkXa8rSp92h1KmF06eD9B8I5fWnWx3BOnIaX/C3/74nGluEJAtP2QxadDxajnLZzT8/B988dU/HCU8WV8ia2G+4Onod/csTOsVebxCvKcHeSjMiOBLPR+5uyJkqQe89/yCtDn5Lmdoxns3O78I0y+OTcztH3raBMzVAxouj0C/fm0wbYVqpgrl0mhXKko5sCH7EaVsNmGq57qkzVpKBV8xh/Sy1Y6tVVr8dJ0Bq6q0GTOXjp4wXemLoOtaMJ5yFsGP+KOoquCx+2fKOqrEK+FM8NBIZjycfRE4+7xilxxVWDRYNPb9QLcHBQz5YxhwxxLUmRR4YLTR6+CT8xV3Rkx2AvrdQk6dCmKdts+PtAUVqaoRgVfiqlcUAZ059g1l6/OUXqM18qiz6vHYQwbU369T7BFVRRBwoz+S9dS7WLYc8AgYGhkNoKRgz+dHuyFWLdehulKb1VaoBEhkwB3Leh4AABpqS9KmnIsFbMUR4OgJU/KXaYhfL4AcyomzQWQl4EpfBP8bFFD9HR2e2mQoSIcc1JPyE/12ufMx6tfVzGHhVAhUAuY2AQR2TYVBzh1AdEuFQb6pShxj7JIKhWzfX3+BG5uHqwpkGeDwiTrCRO4RJhzHRceGEatSWPCPxSfpARnb+FXJj7QAADc2xtA5NvtWlQLNGRYnq0pHGVarw9xkGW07OlJvdBg9e0mFpyC6Pz5XmOIzhMd9I9UjKuA424R5wupU1cJP1eakbMRZGR23qkohR5qL4Eu8IpWEmYt5H0sFfsp0dDIJarZ0ejqfCDUajaYjFfhp6wFSEkC0hgjHVDgn7+3895tv1qVb+eMkZRDpjbFYzArgFXXmfPYgC8DLo259IoaTJkDqHSUR0QTG1qvuauKKB9AiBV6K25QJyEAEzxh7hIgenotkjPn0FxhjnxDR36S45AK8KP8H3Gu60R8yEvwAAAAASUVORK5CYII=">
8
- <style>
9
- /* ── tokens ────────────────────────────────────────────────────────────
10
- Notion-style console theme: warm neutral greys, one quiet blue accent
11
- (#2383e2), hairline borders instead of glow — no gradients, no glass, no
12
- neon. Feedback tones (ok / warn / danger) stay muted washes. Motion stays
13
- on transform/opacity only, short and interruptible (apple-design: instant
14
- material feedback, calm layer transitions). */
15
- :root {
16
- color-scheme: dark;
17
- /* Notion-style dark surface: warm neutral greys, one quiet blue accent,
18
- hairline borders instead of glow — no gradients, no glass, no neon. */
19
- --bg: #191919;
20
- --surface: #1f1f1f;
21
- --surface-2: #252525;
22
- --surface-3: #2b2b2b;
23
- --line: #2e2e2e;
24
- --line-strong: #3f3f3f;
25
- --line-hover: #4a4a4a;
26
- --text: #f1f1ef;
27
- --text-dim: #a8a8a3;
28
- --text-faint: #6f6f6a;
29
- --accent: #2383e2;
30
- --accent-strong: #2f93f2;
31
- --accent-line: rgba(35, 131, 226, .35);
32
- --accent-wash: rgba(35, 131, 226, .12);
33
- --ok: #4dab5f;
34
- --ok-wash: rgba(77, 171, 95, .12);
35
- --ok-line: rgba(77, 171, 95, .38);
36
- --danger: #d94442;
37
- --danger-wash: rgba(217, 68, 66, .12);
38
- --danger-line: rgba(217, 68, 66, .38);
39
- --warn: #d58f3e;
40
- --warn-wash: rgba(213, 143, 62, .12);
41
- --warn-line: rgba(213, 143, 62, .38);
42
- --radius: 6px;
43
- --radius-sm: 4px;
44
- --shadow-toast: 0 8px 24px rgba(0, 0, 0, .42);
45
- --font-ui: ui-sans-serif, system-ui, -apple-system, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
46
- --font-mono: ui-monospace, "Cascadia Mono", "SF Mono", Consolas, "Liberation Mono", monospace;
47
- }
48
- * { box-sizing: border-box; }
49
- html { scroll-behavior: smooth; }
50
- html, body { margin: 0; min-height: 100%; }
51
- body {
52
- background: var(--bg);
53
- color: var(--text);
54
- font: 13.5px/1.6 var(--font-ui);
55
- -webkit-font-smoothing: antialiased;
56
- }
57
- ::selection { background: var(--accent-wash); }
58
- button, input, select { font: inherit; color: inherit; }
59
-
60
- /* ── form primitives: quiet Notion controls, blue focus ring ── */
61
- select, input {
62
- background: var(--bg);
63
- border: 1px solid var(--line-strong);
64
- border-radius: var(--radius-sm);
65
- padding: 5px 9px;
66
- min-height: 30px;
67
- font: 12.5px/1.4 var(--font-mono);
68
- color: var(--text);
69
- transition: border-color .12s ease-out, background .12s ease-out;
70
- }
71
- select { font: 12.5px/1.4 var(--font-ui); }
72
- select:focus, input:focus {
73
- outline: none; border-color: var(--accent);
74
- background: var(--surface-2); box-shadow: 0 0 0 2px var(--accent-wash);
75
- }
76
- input::placeholder { color: var(--text-faint); }
77
- input:hover, select:hover { border-color: var(--line-hover); }
78
- button {
79
- background: var(--surface-2);
80
- border: 1px solid var(--line-strong);
81
- border-radius: var(--radius-sm);
82
- padding: 4px 12px;
83
- min-height: 30px;
84
- cursor: pointer;
85
- color: var(--text);
86
- font: 500 12.5px/1 var(--font-ui);
87
- transition: background .12s ease-out, border-color .12s ease-out, color .12s ease-out;
88
- white-space: nowrap;
89
- }
90
- button:hover { background: var(--surface-3); }
91
- button:active { transform: translateY(1px); }
92
- button.primary {
93
- background: var(--accent);
94
- border-color: var(--accent);
95
- color: #fff;
96
- font-weight: 600;
97
- }
98
- button.primary:hover { background: var(--accent-strong); border-color: var(--accent-strong); }
99
- button.danger { color: var(--danger); border-color: transparent; background: transparent; }
100
- button.danger:hover { background: var(--danger-wash); border-color: var(--danger); color: var(--danger); }
101
- button.ghost { background: transparent; border-color: transparent; color: var(--text-dim); min-height: 26px; padding: 2px 8px; }
102
- button.ghost:hover { color: var(--text); background: var(--surface-2); }
103
- :is(button, input, select):focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
104
- button:disabled { opacity: .45; cursor: default; transform: none; }
105
-
106
- /* ── topbar: solid surface + hairline bottom edge (no glass) ── */
107
- .topbar {
108
- position: sticky; top: 0; z-index: 20;
109
- display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
110
- padding: 10px 22px;
111
- background: var(--bg);
112
- border-bottom: 1px solid var(--line);
113
- transition: border-color .2s ease-out;
114
- }
115
- .topbar.scrolled { border-bottom-color: var(--line-strong); }
116
- .brand { display: flex; align-items: center; gap: 10px; margin-right: 6px; }
117
- .brand .mark {
118
- width: 24px; height: 24px; border-radius: 5px;
119
- background: var(--surface-2);
120
- display: grid; place-items: center;
121
- overflow: hidden;
122
- }
123
- .brand .mark img { width: 18px; height: 18px; object-fit: contain; display: block; }
124
- .brand .name { font-size: 13px; font-weight: 600; color: var(--text); line-height: 1.3; }
125
- .brand .name b { color: var(--text); font-weight: 600; }
126
- .brand .name span { color: var(--text-dim); font-weight: 400; }
127
- .brand .sub { font-size: 11px; color: var(--text-faint); }
128
- .status {
129
- display: inline-flex; align-items: center; gap: 7px;
130
- font-size: 12px; color: var(--text-dim);
131
- white-space: nowrap;
132
- }
133
- .status .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--text-faint); flex: none; }
134
- .status[data-state="ok"] .dot { background: var(--ok); animation: breathe 2.6s ease-in-out infinite; }
135
- .status[data-state="err"] { color: var(--danger); }
136
- .status[data-state="err"] .dot { background: var(--danger); }
137
- @keyframes breathe { 50% { opacity: .45; } }
138
-
139
- /* mode chip: local / lan / remote — tells the operator which trust model is live */
140
- .mode-chip {
141
- display: inline-flex; align-items: center; gap: 6px;
142
- font-size: 11px; font-weight: 600; letter-spacing: .02em;
143
- border: 1px solid var(--line-strong); border-radius: 999px;
144
- padding: 2px 10px; color: var(--text-dim); background: var(--surface-2);
145
- white-space: nowrap;
146
- }
147
- .mode-chip[data-mode="local"] { color: var(--ok); border-color: var(--ok-line); background: var(--ok-wash); }
148
- .mode-chip[data-mode="remote"] { color: var(--accent); border-color: var(--accent-line); background: var(--accent-wash); }
149
- .mode-chip[data-mode="limited"] { color: var(--warn); border-color: var(--warn-line); background: var(--warn-wash); }
150
- .mode-chip[data-mode="offline"] { color: var(--danger); border-color: var(--danger-line); background: var(--danger-wash); }
151
-
152
- /* identity / multi-user onboarding panel */
153
- .id-map {
154
- display: grid; gap: 8px;
155
- padding: 12px 16px; border-bottom: 1px solid var(--line);
156
- background: var(--surface-2);
157
- }
158
- .id-map .flow {
159
- display: grid; grid-template-columns: 1fr auto 1fr auto 1fr; gap: 8px; align-items: center;
160
- font-size: 11.5px; color: var(--text-dim);
161
- }
162
- .id-map .node {
163
- border: 1px solid var(--line-strong); border-radius: var(--radius-sm);
164
- background: var(--bg); padding: 8px 10px; text-align: center; min-width: 0;
165
- }
166
- .id-map .node b { display: block; color: var(--text); font-size: 12px; font-weight: 600; }
167
- .id-map .node span { color: var(--text-faint); font-size: 10.5px; }
168
- .id-map .arrow { color: var(--text-faint); font-size: 14px; text-align: center; }
169
- .id-map .note { font-size: 11px; color: var(--text-faint); line-height: 1.5; }
170
- .id-map .note b { color: var(--text-dim); font-weight: 600; }
171
- .id-map .note code {
172
- font-family: var(--font-mono); font-size: 10.5px;
173
- background: var(--surface-3); border-radius: 3px; padding: 0 4px;
174
- color: var(--text-dim);
175
- }
176
- /* tighten identity flow on mid widths */
177
- @media (max-width: 1100px) {
178
- .id-map .flow { grid-template-columns: 1fr; gap: 6px; }
179
- .id-map .arrow { transform: rotate(90deg); }
180
- }
181
-
182
- .invite-grid {
183
- display: grid; grid-template-columns: minmax(120px, 1fr) minmax(160px, 1.4fr) minmax(90px, 120px) auto; gap: 8px;
184
- padding: 12px 16px; border-bottom: 1px solid var(--line); background: var(--surface-2);
185
- }
186
- @media (max-width: 980px) { .invite-grid { grid-template-columns: 1fr 1fr; } }
187
- .invite-grid input, .invite-grid select { width: 100%; }
188
-
189
- .snippet {
190
- margin: 0; padding: 12px 16px;
191
- background: var(--bg); border-top: 1px solid var(--line);
192
- font: 11px/1.55 var(--font-mono); color: var(--text-dim);
193
- white-space: pre-wrap; word-break: break-all; max-height: 220px; overflow: auto;
194
- }
195
- .snippet.hidden { display: none; }
196
- .snippet-bar {
197
- display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
198
- padding: 8px 16px; border-top: 1px solid var(--line); background: var(--surface-2);
199
- }
200
- .snippet-bar.hidden { display: none; }
201
- .snippet-bar .hint { font-size: 11px; color: var(--text-faint); flex: 1; min-width: 0; }
202
-
203
- .ops-strip {
204
- display: flex; gap: 10px; flex-wrap: wrap; align-items: baseline;
205
- padding: 8px 16px; border-bottom: 1px solid var(--line);
206
- font-size: 11px; color: var(--text-faint);
207
- }
208
- .ops-strip b { color: var(--text-dim); font-weight: 600; font-variant-numeric: tabular-nums; }
209
- .topbar .field { display: flex; align-items: center; gap: 6px; }
210
- .topbar .field label { font-size: 11px; color: var(--text-faint); }
211
- .topbar .field input { min-height: 28px; padding: 4px 8px; font-size: 12px; }
212
- #token { width: 220px; }
213
- #mpath { width: min(320px, 42vw); }
214
- .spacer { flex: 1; }
215
-
216
- /* ── stats strip: plain numbers + labels, quiet hover (anchors to panels) ── */
217
- .stats {
218
- display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
219
- gap: 10px; max-width: 1360px; margin: 16px auto 0; padding: 0 22px;
220
- }
221
- .stat {
222
- display: flex; align-items: baseline; gap: 8px;
223
- border: 1px solid var(--line);
224
- border-radius: var(--radius-sm);
225
- padding: 10px 14px;
226
- text-decoration: none; color: inherit;
227
- transition: background .12s ease-out, border-color .12s ease-out;
228
- }
229
- .stat:hover { background: var(--surface-2); border-color: var(--line-strong); }
230
- .stat .num { font: 600 17px/1 var(--font-mono); font-variant-numeric: tabular-nums; color: var(--text); }
231
- .stat .lbl { font-size: 11px; color: var(--text-faint); }
232
- .stat[data-tone="ok"] .num { color: var(--ok); }
233
- .stat[data-tone="warn"] .num { color: var(--warn); }
234
-
235
- /* ── workspace ──────────────────────────────────────────────────────── */
236
- .workspace {
237
- max-width: 1360px; margin: 16px auto 32px;
238
- padding: 0 22px;
239
- display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(330px, 1fr);
240
- gap: 14px; align-items: start;
241
- }
242
- .panel {
243
- background: var(--surface);
244
- border: 1px solid var(--line);
245
- border-radius: var(--radius);
246
- overflow: hidden;
247
- scroll-margin-top: 62px; /* anchor lands below the sticky topbar */
248
- }
249
- .stack { display: grid; gap: 14px; }
250
- .panel > header {
251
- display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
252
- padding: 11px 16px;
253
- border-bottom: 1px solid var(--line);
254
- }
255
- .panel > header h2 {
256
- margin: 0; font-size: 13px; font-weight: 600; color: var(--text);
257
- }
258
- .panel > header .count {
259
- font: 500 11px/1.4 var(--font-mono); color: var(--text-dim);
260
- background: var(--surface-3); border-radius: 999px; padding: 2px 8px;
261
- font-variant-numeric: tabular-nums;
262
- }
263
- .panel > header .hint { font-size: 11px; color: var(--text-faint); }
264
- .panel > header .spacer { flex: 1; }
265
- .toolbar { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
266
-
267
- /* ── list rows ──────────────────────────────────────────────────────── */
268
- .rows { display: flex; flex-direction: column; }
269
- .row, .g-row {
270
- display: flex; align-items: center; gap: 12px;
271
- padding: 11px 16px;
272
- border-bottom: 1px solid var(--line);
273
- transition: background .12s ease-out;
274
- animation: row-in .18s ease-out; /* gentle fade-in on enter only */
275
- }
276
- @keyframes row-in { from { opacity: 0; transform: translateY(2px); } }
277
- .row:last-child, .g-row:last-child { border-bottom: none; }
278
- .row:hover, .g-row:hover { background: var(--surface-2); }
279
- .presence { width: 8px; height: 8px; border-radius: 50%; background: var(--text-faint); flex: none; }
280
- .row[data-online="true"] .presence { background: var(--ok); }
281
- .who { min-width: 0; flex: 1; }
282
- .who .id { font-size: 12.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
283
- .who .alias { font-size: 10.5px; color: var(--text-faint); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
284
- .self-tag { color: var(--accent); margin-right: 5px; }
285
- .chip {
286
- font-size: 10px; color: var(--text-dim);
287
- border: 1px solid var(--line-strong); border-radius: 4px;
288
- padding: 1px 6px; white-space: nowrap;
289
- }
290
- .chip.ok { color: var(--ok); border-color: var(--ok-line); }
291
- .chip.warn { color: var(--warn); border-color: var(--warn-line); }
292
- .chip.dim { color: var(--text-faint); }
293
- .chip.danger { color: var(--danger); border-color: var(--danger-line); }
294
- .muted { color: var(--text-faint); }
295
- .who .id .chip { margin-left: 4px; }
296
- .badge {
297
- min-width: 20px; text-align: center;
298
- color: var(--danger);
299
- background: var(--danger-wash);
300
- border: 1px solid var(--danger-line);
301
- border-radius: 999px; font-size: 10px; font-weight: 600;
302
- padding: 0 6px; line-height: 16px;
303
- }
304
- .row .actions, .g-row .actions { display: flex; gap: 6px; flex: none; }
305
- .empty { padding: 34px 16px; text-align: center; color: var(--text-faint); font-size: 12px; }
306
- .empty b { display: block; color: var(--text-dim); font-weight: 400; margin-bottom: 4px; }
307
- .loading { height: 46px; display: grid; place-items: center; }
308
-
309
- /* Inline edit / two-step confirm: expands and collapses in place
310
- (spatial consistency, symmetrical path) */
311
- .editbox { display: flex; align-items: center; gap: 6px; flex: 1; min-width: 0; }
312
- .editbox input { flex: 1; min-width: 60px; min-height: 30px; padding: 4px 8px; font-size: 12px; }
313
- .confirm-row { display: flex; align-items: center; gap: 8px; flex: 1; min-width: 0; }
314
- .confirm-note { color: var(--danger); font-size: 12px; flex: 1; min-width: 0; }
315
- .confirm-note b { font-weight: 700; }
316
-
317
- /* ── search & filter chips ──────────────────────────────────────────── */
318
- .search {
319
- display: flex; align-items: center; gap: 8px;
320
- padding: 10px 16px; border-bottom: 1px solid var(--line); background: var(--surface-2);
321
- }
322
- .search input { flex: 1; min-width: 0; }
323
- .filter { display: flex; gap: 6px; flex: none; }
324
- .filter button { min-height: 26px; padding: 2px 10px; font-size: 11px; }
325
- .filter button[aria-pressed="true"] {
326
- background: var(--accent-wash); color: var(--accent);
327
- border-color: var(--accent-line); font-weight: 700;
328
- }
329
-
330
- /* ── groups ─────────────────────────────────────────────────────────── */
331
- .group-form { display: flex; gap: 8px; padding: 12px 16px; border-bottom: 1px solid var(--line); background: var(--surface-2); flex-wrap: wrap; }
332
- .group-form input { flex: 1; min-width: 0; }
333
- .group-form input[name="group"] { flex: 0 0 118px; }
334
- .group-form button { flex: none; }
335
- .g-row { flex-wrap: wrap; }
336
- .g-row .g-name { min-width: 0; flex: 1; }
337
- .g-row .g-name .id { font-size: 12.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
338
- .g-row .g-name .id .grp { color: var(--accent); }
339
- .g-row .g-name .members { font-size: 10.5px; color: var(--text-faint); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
340
- .g-expand {
341
- flex: 1 1 100%; display: grid; gap: 8px;
342
- padding: 10px 12px; margin-top: 6px;
343
- background: var(--bg); border: 1px solid var(--line); border-radius: var(--radius-sm);
344
- animation: row-in .16s ease-out;
345
- }
346
- .g-members { display: flex; flex-wrap: wrap; gap: 6px; }
347
- .member-chip {
348
- display: inline-flex; align-items: center; gap: 5px;
349
- font-size: 11px; color: var(--text);
350
- background: var(--surface-3); border: 1px solid var(--line-strong);
351
- border-radius: 999px; padding: 2px 4px 2px 8px;
352
- }
353
- .member-chip button {
354
- min-height: 16px; height: 16px; width: 16px; padding: 0;
355
- border: none; background: transparent; color: var(--text-faint);
356
- font-size: 11px; line-height: 1; border-radius: 50%;
357
- display: grid; place-items: center;
358
- }
359
- .member-chip button:hover { color: var(--danger); background: var(--danger-wash); }
360
- .g-add { display: flex; gap: 6px; }
361
- .g-add input { flex: 1; min-width: 0; }
362
-
363
- /* ── message tail ───────────────────────────────────────────────────── */
364
- .feed { list-style: none; margin: 0; padding: 6px 0; max-height: 430px; overflow: auto; }
365
- .feed li { padding: 9px 16px; border-bottom: 1px solid var(--line); animation: row-in .16s ease-out; }
366
- .feed li:last-child { border-bottom: none; }
367
- .feed .meta { display: flex; gap: 8px; align-items: baseline; font-size: 10.5px; color: var(--text-faint); margin-bottom: 3px; }
368
- .feed .meta .t { font-variant-numeric: tabular-nums; }
369
- .feed .meta .route { color: var(--text-dim); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
370
- .feed .meta .kind { border: 1px solid var(--line-strong); border-radius: 4px; padding: 0 5px; font-size: 9.5px; text-transform: uppercase; letter-spacing: .08em; flex: none; }
371
- .feed .meta .kind.group { color: var(--accent); border-color: var(--accent-line); }
372
- .feed .meta .kind.task { color: var(--warn); border-color: var(--warn-line); }
373
- .feed .meta .kind.ack { color: var(--ok); border-color: var(--ok-line); }
374
- .feed .meta .kind.notice { color: var(--text-faint); }
375
- .feed .body { font-size: 12px; word-break: break-word; color: var(--text); }
376
- .panel > footer {
377
- display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap;
378
- padding: 9px 16px; font-size: 11px; min-height: 36px;
379
- border-top: 1px solid var(--line); color: var(--text-faint);
380
- }
381
- .panel > footer.err { color: var(--danger); }
382
- .panel > footer .sep { color: var(--line-strong); }
383
-
384
- /* ── toasts: aria-live broadcast + one-way slide-in (interruptible,
385
- transform/opacity only) ── */
386
- .toasts { position: fixed; right: 18px; bottom: 18px; display: grid; gap: 8px; z-index: 50; }
387
- .toast {
388
- background: var(--surface-3); border: 1px solid var(--line-strong);
389
- border-left: 3px solid var(--accent);
390
- border-radius: var(--radius-sm); padding: 9px 14px;
391
- font-size: 12px; max-width: 380px;
392
- box-shadow: var(--shadow-toast);
393
- animation: slide-in .18s ease-out;
394
- }
395
- .toast.err { border-left-color: var(--danger); }
396
- .toast.ok { border-left-color: var(--ok); }
397
- .toast.warn { border-left-color: var(--warn); }
398
- @keyframes slide-in { from { opacity: 0; transform: translateX(14px); } }
399
-
400
- /* ── inline send box (replaces window.prompt) ── */
401
- .send-box {
402
- flex: 1 1 100%;
403
- display: flex; gap: 8px; align-items: flex-end;
404
- padding: 10px 12px; margin-top: 6px;
405
- background: var(--bg); border: 1px solid var(--line); border-radius: var(--radius-sm);
406
- animation: row-in .16s ease-out;
407
- }
408
- .send-box textarea {
409
- flex: 1; min-width: 0; min-height: 64px; resize: vertical;
410
- background: var(--bg); color: var(--text);
411
- border: 1px solid var(--line-strong); border-radius: var(--radius-sm);
412
- padding: 8px 10px; font: 12px/1.5 var(--font-ui);
413
- }
414
- .send-box textarea:focus {
415
- outline: none; border-color: var(--accent);
416
- box-shadow: 0 0 0 2px var(--accent-wash);
417
- }
418
- .send-box .col { display: flex; flex-direction: column; gap: 6px; }
419
-
420
- /* ── confirm dialog (replaces window.prompt for destructive / input) ── */
421
- .dialog-backdrop {
422
- position: fixed; inset: 0; z-index: 40;
423
- background: rgba(0, 0, 0, .55);
424
- display: grid; place-items: center;
425
- animation: fade-in .12s ease-out;
426
- }
427
- .dialog-backdrop.hidden { display: none; }
428
- @keyframes fade-in { from { opacity: 0; } }
429
- .dialog {
430
- width: min(420px, calc(100vw - 32px));
431
- background: var(--surface); border: 1px solid var(--line-strong);
432
- border-radius: var(--radius); box-shadow: var(--shadow-toast);
433
- padding: 16px; display: grid; gap: 12px;
434
- animation: slide-in .16s ease-out;
435
- }
436
- .dialog h3 { margin: 0; font-size: 13px; font-weight: 600; }
437
- .dialog p { margin: 0; font-size: 12px; color: var(--text-dim); line-height: 1.5; }
438
- .dialog input, .dialog textarea {
439
- width: 100%; background: var(--bg); color: var(--text);
440
- border: 1px solid var(--line-strong); border-radius: var(--radius-sm);
441
- padding: 8px 10px; font: 12px/1.5 var(--font-ui);
442
- }
443
- .dialog textarea { min-height: 96px; resize: vertical; }
444
- .dialog input:focus, .dialog textarea:focus {
445
- outline: none; border-color: var(--accent);
446
- box-shadow: 0 0 0 2px var(--accent-wash);
447
- }
448
- .dialog .row { display: flex; gap: 8px; justify-content: flex-end; }
449
-
450
- /* ── responsive / motion ────────────────────────────────────────────── */
451
- @media (max-width: 980px) {
452
- .workspace { grid-template-columns: 1fr; }
453
- .topbar { flex-wrap: wrap; }
454
- .spacer { display: none; }
455
- }
456
- @media (prefers-reduced-motion: reduce) {
457
- html { scroll-behavior: auto; }
458
- *, *::before, *::after { animation: none !important; transition: none !important; }
459
- }
460
- @media (prefers-contrast: more) {
461
- .topbar { background: var(--bg); border-bottom-color: var(--line-strong); }
462
- .panel { border-color: var(--line-strong); }
463
- input, select { border-color: var(--line-strong); }
464
- }
465
- </style>
466
- </head>
467
- <body>
468
-
469
- <header class="topbar">
470
- <div class="brand">
471
- <span class="mark"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAKc0lEQVR42u1dfWwT5xn/PeezHewEG5yCRCiZFjq00LkBiagULYFBq8pptzHGHzQtXbaBkKa2UImqKyoBqoImTy2oRernMjJ1aA2IUZr8sXaDZEIIt4NgdUihSVVY4nXUJnEcG3+d3/2RnHN2/JUP+87JPVKkEN8dut/vfZ/v1w8hR4nFYjwAcBwXlfy7mjFmI6K1YGwZAz2AOSAEdg1Etxhjl4ioA8D1JFziOGV/Vo7gS/4DK4AmMLZ+rgCeIyEXALRwHOdMxmzKBEjZFIFnDM+pkGcAlHAOwMscxzlz2Q2Uy6oXBOFFgA6r8E5G2EtE9PuxxZt2N1Am8McYPM0YHlcBnfJu2JKJBMoAvhWMnVD1/IwQUSOqpGQSKB34jKFbhS7/JHDiL83NzVzc8DJ2QoVshi0CQ3eSak/cAZIPz6o6P6/u6pr46ue4KCcFXxCEF1Xw87gLRu2pXaqCSLodGENYhakw9gDA9bgNGGPktApNweQVcReQmF5QvR55vCLRC2pSISm4NI3bAMY+UwMuWXaBjgNQPVvAd3kEQlHFBuwRjjFmK3bge11Rsu1z0wf/CBTZDqCHOSJaW8zgtzuC1HjYg+tfh1FdqS228Hg9D8aW5ViXUZycPB+go6d9AIDFCzRFGZhxxar/3+rw08HWoYS/3WPicrYVjp6wIlYdV4zg29t8dLTNC5MxcdUvLOOyAm9v89HmZje+9cYU8S58Ma789zt8E8AHAIOeMpJ29vMw+vtDeOh+PRpqS5hKwBQMbqqVL0ogxFLec/zsCL5yhWEyarB4gQaNG42KeSe+mFzNQ63pwU91/e/+MgxnXwQA4vdZTBrFrP6iIuDZ40NZr7nji03wjpJlQ41eUe/FFYve/8qVPVMuGtajp33w+oWU19RblUUAr9SUwtW+CK7fjOBGfwTOvkhOqudCdxANtSW4/OZiZm/z0fnuEDzecSKqKnjUrtAxJb0rCUIsBgUZ2QvdQXQ5QwAAr1/IWeeLUmfVY2u9IQ60vc1HpzoD8PoF/MpWhr1by1QCkqXzizC9fc6HvoHojD2zqoJH40YjGmpLWK8rSs8eH8JvflKqKAOsCAL2vjNE4orPh9RZ9bDvNCsKdEUQ4OgJ04HW4bh/nk/RGnm89ssyxel/2QhodwTpUKu34C+7f7tJcSqImyvgA8ChVi+UkoSThQAxmpVTDrQOz91ALJdoNt/i8Qqwt/lozhFgb/PlFM3OhNeze0sZ6qx6aI2p48xTnQHF1I+5QqmeU52BvHs7ADDgEbBtg4HZd5rZhy+YUZcm9fDR5eDc2QFvfzwy7WdYTJr4jyip8j19A1HsfWeIAGCJRcPsO83s0QfnTbjuXz0hzAk3tNcVpcbDnmk9w1qlxQ5badyPd3kE6ncL6HSGkJzvSZeSsO1zU/J1Zw6WY4lFw2Y1AfY2X9oK1mSlyVaKXTYjS+XafvB3f8pUhsWkgbmUMDTCJhCV7nmzioBUK2+yUewyM2AsIfiDDKuW69Im1KR1AK2RR8QfzfrsD18wy7oL8kqAoydMz7wxOKV7H31wHhrWlGBpuWZSAPW6orT/hBdXboRy2nXWKi3e3bNwdhJw8nyADrYOTUr91Fn12LOlbNqrMpckn7hL5EzY5dUL6ncLk87V2Hea2UyoBPtOM9u/3ZTxmog/Cq2RR5czhCeOeKjXFaVZtQMmk2p+45kFeclWJhfns8nP6w1o/JGhYHYhrwQ8ccRDuRRZdm8pw7YNBpbvJODxsyPIxSGwmDTYUKPH5nXzsHwJz2Z1Ud5apc07+ADQUFvCOl4tZ0220oRgLtkmaI08PF4BpzoD2H/CO/uL8jtspdNWMWcu3sXV3jCGRhjMpYQKiwar79Oh3qqfoEp22Yxsl82IdkeQrt+M4GpvGLeGRu2B6LbGjfMDJcWtgna8focy6d6qCh5//q2FTbc72mLSYGUlj0ULNLg9KGDAI8RBtZg0+PG6edhUo8+oTkQD/PbHIzh3KYAfWksK4p7mdQeYjZk13KrlOoiphckavV5XlK58Gc5ovB09YWr/LIiPLt5FS8cILCYNrfm+DrXf0+EeExdv5r3ji+FbbwxiR8bjaw0Fc0vzugPe6vBTS8dIRs9HfPF8v7CjJ0ydzhCu9obTdl8k549Q7I1Zq6u0aMnweaczhPc7fNi91ZT3F61doWO1K3SQNn8FQgwGPcmaiuDz/dIWkyZtLkisEdxbXvjTLSLojp4wXe2L0H/cAu4tL3zjbt69oJWVPLqcmX3vYX9Mtp7Tlo4RaI08BkaAN582zr6CzPqakhlPWcyUXP46Bq2Rx3yeoaIUWLGUn30ENNSWsHSBjyi3B4VJn/1Nl7fJtdbb64rSlzdHa9TDUcIyM/Ie9coWCT+1yZC2XRwA/n0zmtJrse1z0+ZmN06eD1ByjqnxsAc7Xr9DyXHB5mY3bPvcWQ/hnbl4FwAwfwzzQgRdshGwbYOBfXeJDplaRdodwQTA2joD8bzNnz4NJBDT5QzBYtLgn85gwn3idR6vgLbOQMbVf/bz8dUPAJtkOrhRsFzQge3zM37+14uJgK2+TxcvvK+sHNfNS8tHC/Mer4DyRfoEvb2yko/vtKql2qxNAuLq3/gDrSzqp+C9odnqw8lRbbsjSMP+2IRkXa8rSp92h1KmF06eD9B8I5fWnWx3BOnIaX/C3/74nGluEJAtP2QxadDxajnLZzT8/B988dU/HCU8WV8ia2G+4Onod/csTOsVebxCvKcHeSjMiOBLPR+5uyJkqQe89/yCtDn5Lmdoxns3O78I0y+OTcztH3raBMzVAxouj0C/fm0wbYVqpgrl0mhXKko5sCH7EaVsNmGq57qkzVpKBV8xh/Sy1Y6tVVr8dJ0Bq6q0GTOXjp4wXemLoOtaMJ5yFsGP+KOoquCx+2fKOqrEK+FM8NBIZjycfRE4+7xilxxVWDRYNPb9QLcHBQz5YxhwxxLUmRR4YLTR6+CT8xV3Rkx2AvrdQk6dCmKdts+PtAUVqaoRgVfiqlcUAZ059g1l6/OUXqM18qiz6vHYQwbU369T7BFVRRBwoz+S9dS7WLYc8AgYGhkNoKRgz+dHuyFWLdehulKb1VaoBEhkwB3Leh4AABpqS9KmnIsFbMUR4OgJU/KXaYhfL4AcyomzQWQl4EpfBP8bFFD9HR2e2mQoSIcc1JPyE/12ufMx6tfVzGHhVAhUAuY2AQR2TYVBzh1AdEuFQb6pShxj7JIKhWzfX3+BG5uHqwpkGeDwiTrCRO4RJhzHRceGEatSWPCPxSfpARnb+FXJj7QAADc2xtA5NvtWlQLNGRYnq0pHGVarw9xkGW07OlJvdBg9e0mFpyC6Pz5XmOIzhMd9I9UjKuA424R5wupU1cJP1eakbMRZGR23qkohR5qL4Eu8IpWEmYt5H0sFfsp0dDIJarZ0ejqfCDUajaYjFfhp6wFSEkC0hgjHVDgn7+3895tv1qVb+eMkZRDpjbFYzArgFXXmfPYgC8DLo259IoaTJkDqHSUR0QTG1qvuauKKB9AiBV6K25QJyEAEzxh7hIgenotkjPn0FxhjnxDR36S45AK8KP8H3Gu60R8yEvwAAAAASUVORK5CYII=" alt="logo"></span>
472
- <span>
473
- <span class="name"><b>agent-comm-hub</b> <span data-i18n="brandTitle">管理台</span></span><br>
474
- <span class="sub" data-i18n="brandSub">远程运维控制台 · manager</span>
475
- </span>
476
- </div>
477
- <span class="status" id="conn" data-state="off" aria-live="polite"><span class="dot"></span><span id="conn-text" data-i18n="statusOff">未连接</span></span>
478
- <span class="mode-chip" id="mode-chip" data-mode="unknown" title="运行形态:本机 / 远程鉴权 / 无管理权限">—</span>
479
- <span class="spacer"></span>
480
- <div class="field">
481
- <label for="token" data-i18n="fieldToken">token</label>
482
- <input id="token" type="password" placeholder="manager token" autocomplete="off">
483
- </div>
484
- <div class="field">
485
- <label for="mpath" data-i18n="fieldMcp">endpoint</label>
486
- <input id="mpath" value="/mcp" spellcheck="false" aria-label="MCP endpoint" data-i18n-ph="fieldMcpPh" placeholder="/mcp 或 http://127.0.0.1:18764/mcp">
487
- </div>
488
- <button id="lang" class="ghost" data-i18n-title="langTitle" title="切换语言">中 / EN</button>
489
- <button id="reload" class="primary" data-i18n="btnReload">重新连接</button>
490
- </header>
491
-
492
- <nav class="stats" aria-label="overview">
493
- <a class="stat" data-tone="ok" href="#panel-roster">
494
- <span><span class="num" id="stat-online">–</span><div class="lbl" id="stat-online-lbl" data-i18n="statRoster">在线 / 花名册</div></span>
495
- </a>
496
- <a class="stat" href="#panel-tokens">
497
- <span><span class="num" id="stat-tokens">–</span><div class="lbl" data-i18n="statTokens">已签发令牌</div></span>
498
- </a>
499
- <a class="stat" data-tone="warn" href="#panel-groups">
500
- <span><span class="num" id="stat-groups">–</span><div class="lbl" data-i18n="statGroups">群组</div></span>
501
- </a>
502
- <a class="stat" href="#panel-log">
503
- <span><span class="num" id="stat-msgs">–</span><div class="lbl" data-i18n="statLog">消息尾迹(30 条)</div></span>
504
- </a>
505
- </nav>
506
-
507
- <main class="workspace">
508
- <!-- identity: multi-user same-agent model + invite → MCP config snippet -->
509
- <section class="panel" id="panel-identity">
510
- <header>
511
- <h2 data-i18n="panelIdentity">身份与接入</h2>
512
- <span class="hint" id="id-hint" data-i18n="identityHint">一人一 token = 一个 peer,同名 agent 也互不串台</span>
513
- <span class="spacer"></span>
514
- <span class="hint" id="ops-health"></span>
515
- </header>
516
- <div class="id-map" aria-label="identity mapping">
517
- <div class="flow">
518
- <div class="node"><b data-i18n="idPerson">人 / 机器</b><span>A · B · C</span></div>
519
- <div class="arrow" aria-hidden="true">→</div>
520
- <div class="node"><b data-i18n="idToken">专属 token</b><span>zhangsan / lisi / wangwu</span></div>
521
- <div class="arrow" aria-hidden="true">→</div>
522
- <div class="node"><b data-i18n="idPeer">独立 peer</b><span>kimi-code × 3 · 信箱隔离</span></div>
523
- </div>
524
- <div class="note" data-i18n-html="identityNote">
525
- <b>规则:</b>token 决定 peer,不是 clientInfo 名。A 发给 B 时 C 收不到;全员用 <code>to:"all"</code>,小圈子用群组。
526
- 同一人多 agent 建议 <code>人.agent</code>(如 <code>zhangsan.kimi</code>)。
527
- </div>
528
- </div>
529
- <form class="invite-grid" id="invite-form">
530
- <input name="owner" data-i18n-ph="inviteOwner" placeholder="归属人(张三)" required spellcheck="false" aria-label="owner">
531
- <input name="peer" data-i18n-ph="invitePeer" placeholder="peer id(zhangsan 或 zhangsan.kimi)" required spellcheck="false" aria-label="peer id">
532
- <select name="role" aria-label="role">
533
- <option value="agent">agent</option>
534
- <option value="manager">manager</option>
535
- </select>
536
- <button class="primary" type="submit" data-i18n="inviteIssue">签发并生成配置</button>
537
- </form>
538
- <div class="snippet-bar hidden" id="snippet-bar">
539
- <span class="hint" id="snippet-hint"></span>
540
- <button class="ghost" id="snippet-copy" data-i18n="snippetCopy">复制 MCP 配置</button>
541
- <button class="ghost" id="snippet-hide" data-i18n="snippetHide">收起</button>
542
- </div>
543
- <pre class="snippet hidden" id="snippet" tabindex="0"></pre>
544
- </section>
545
-
546
- <!-- main: members & tokens -->
547
- <section class="panel" id="panel-tokens">
548
- <header>
549
- <h2 data-i18n="panelTokens">成员与令牌</h2>
550
- <span class="hint" id="tok-hint"></span>
551
- <span class="spacer"></span>
552
- <div class="toolbar">
553
- <button class="ghost" id="tok-reveal" data-i18n-title="btnRevealTitle" title="切换 明文/打码 显示" data-i18n="btnReveal">明/打码</button>
554
- <button class="ghost" id="tok-refresh" data-i18n-title="btnRefreshTok" title="刷新 token 列表">↻ <span data-i18n="btnRefresh">刷新</span></button>
555
- </div>
556
- </header>
557
- <form class="group-form" id="tok-form">
558
- <input name="peer" data-i18n-ph="formPeer" placeholder="peer id(如 zhangsan)" required spellcheck="false" aria-label="peer id">
559
- <select name="role" aria-label="role">
560
- <option value="agent">agent</option>
561
- <option value="manager">manager</option>
562
- </select>
563
- <input name="owner" data-i18n-ph="formOwner" placeholder="归属人(可选)" spellcheck="false" aria-label="owner">
564
- <button class="primary" type="submit" data-i18n="formIssue">签发</button>
565
- </form>
566
- <div class="rows" id="tokens">
567
- <div class="empty" id="tok-empty" data-i18n="emptyTokensRemote">远程模式(--auth-tokens)下才能在此签发 token</div>
568
- </div>
569
- </section>
570
-
571
- <!-- main: roster -->
572
- <section class="panel" id="panel-roster">
573
- <header>
574
- <h2 data-i18n="panelRoster">花名册</h2>
575
- <span class="count" id="roster-count">0</span>
576
- <span class="hint" id="roster-hint"></span>
577
- <span class="spacer"></span>
578
- <div class="toolbar">
579
- <button class="ghost" id="refresh" data-i18n-title="btnRefreshTitle" title="立即刷新">↻ <span data-i18n="btnRefresh">刷新</span></button>
580
- </div>
581
- </header>
582
- <div class="search">
583
- <input id="roster-q" type="search" data-i18n-ph="searchRoster" placeholder="过滤 peer id / 别名 / 客户端…" spellcheck="false" aria-label="search roster">
584
- <div class="filter" id="roster-filter" role="group" aria-label="presence filter">
585
- <button data-f="all" aria-pressed="true" data-i18n="filterAll">全部</button>
586
- <button data-f="online" aria-pressed="false" data-i18n="filterOnline">在线</button>
587
- <button data-f="offline" aria-pressed="false" data-i18n="filterOffline">离线</button>
588
- </div>
589
- </div>
590
- <div class="rows" id="roster">
591
- <div class="loading"><span class="chip dim" data-i18n="stateLoading">连接中…</span></div>
592
- </div>
593
- </section>
594
-
595
- <aside class="stack">
596
- <!-- groups -->
597
- <section class="panel" id="panel-groups">
598
- <header>
599
- <h2 data-i18n="panelGroups">群组</h2>
600
- <span class="hint" data-i18n="groupsHint">频道内互发 · 离线成员从历史补读</span>
601
- </header>
602
- <form class="group-form" id="g-create">
603
- <input name="group" data-i18n-ph="formGroup" placeholder="group id" required spellcheck="false" aria-label="group id">
604
- <input name="name" data-i18n-ph="formGName" placeholder="显示名(可选)" spellcheck="false" aria-label="display name">
605
- <input name="members" data-i18n-ph="formMembers" placeholder="成员 peer id,逗号分隔" required spellcheck="false" aria-label="members">
606
- <button class="primary" type="submit" data-i18n="formCreate">创建</button>
607
- </form>
608
- <div class="rows" id="groups">
609
- <div class="empty" data-i18n="emptyGroups">暂无群组</div>
610
- </div>
611
- </section>
612
-
613
- <!-- message tail -->
614
- <section class="panel" id="panel-log">
615
- <header>
616
- <h2 data-i18n="panelLog">消息尾迹</h2>
617
- <span class="hint" id="log-hint" data-i18n="logHintAll">全量</span>
618
- <span class="spacer"></span>
619
- <div class="filter" id="log-filter" role="group" aria-label="kind filter">
620
- <button data-k="all" aria-pressed="true" data-i18n="filterAll">全部</button>
621
- <button data-k="chat" aria-pressed="false">chat</button>
622
- <button data-k="task" aria-pressed="false">task</button>
623
- <button data-k="ack" aria-pressed="false">ack</button>
624
- <button data-k="group" aria-pressed="false" data-i18n="filterGroup">群组</button>
625
- <button data-k="notice" aria-pressed="false">notice</button>
626
- </div>
627
- </header>
628
- <ul class="feed" id="log"><li class="empty">—</li></ul>
629
- <footer id="bar" data-i18n="stateWaitConn">等待连接…</footer>
630
- </section>
631
- </aside>
632
- </main>
633
-
634
- <div class="toasts" id="toasts" aria-live="polite"></div>
635
-
636
- <!-- in-page dialog (replaces native prompt/confirm) -->
637
- <div class="dialog-backdrop hidden" id="dialog-backdrop" role="presentation">
638
- <div class="dialog" role="dialog" aria-modal="true" aria-labelledby="dialog-title">
639
- <h3 id="dialog-title"></h3>
640
- <p id="dialog-body" hidden></p>
641
- <textarea id="dialog-input" hidden rows="4"></textarea>
642
- <div class="row">
643
- <button type="button" id="dialog-cancel"></button>
644
- <button type="button" class="primary" id="dialog-ok"></button>
645
- </div>
646
- </div>
647
- </div>
648
-
649
- <script>
650
- 'use strict'
651
- /* ── i18n: tiny dictionary, zh/en; language persisted in localStorage ── */
652
- const I18N = {
653
- zh: {
654
- title: 'agent-comm-hub 管理台',
655
- brandTitle: '管理台',
656
- brandSub: '远程运维控制台 · manager',
657
- statusOff: '未连接',
658
- statusOn: '已连接',
659
- statusErr: '连接异常',
660
- fieldToken: 'token',
661
- fieldMcp: 'endpoint',
662
- fieldMcpPh: '/mcp 或 http://127.0.0.1:18764/mcp',
663
- btnReload: '重新连接',
664
- btnReveal: '明/打码',
665
- btnRevealTitle: '切换 明文/打码 显示',
666
- btnRefresh: '刷新',
667
- btnRefreshTitle: '立即刷新',
668
- btnRefreshTok: '刷新 token 列表',
669
- langTitle: '切换语言',
670
- langToggle: '中 / EN',
671
- statRoster: '在线 / 花名册',
672
- statTokens: '已签发令牌',
673
- statGroups: '群组',
674
- statLog: '消息尾迹(30 条)',
675
- panelIdentity: '身份与接入',
676
- panelTokens: '成员与令牌',
677
- panelRoster: '花名册',
678
- identityHint: '一人一 token = 一个 peer,同名 agent 也互不串台',
679
- identityNote: '<b>规则:</b>token 决定 peer,不是 clientInfo 名。A 发给 B 时 C 收不到;全员用 <code>to:"all"</code>,小圈子用群组。同一人多 agent 建议 <code>人.agent</code>(如 <code>zhangsan.kimi</code>)。',
680
- idPerson: '人 / 机器',
681
- idToken: '专属 token',
682
- idPeer: '独立 peer',
683
- inviteOwner: '归属人(张三)',
684
- invitePeer: 'peer id(zhangsan 或 zhangsan.kimi)',
685
- inviteIssue: '签发并生成配置',
686
- snippetCopy: '复制 MCP 配置',
687
- snippetHide: '收起',
688
- snippetHint: '把这段配置发给 {peer};token 只显示这一次',
689
- snippetCopied: '已复制 {peer} 的 MCP 配置',
690
- modeLocal: '本机',
691
- modeRemote: '远程鉴权',
692
- modeLimited: '只读(无 manager)',
693
- modeUnknown: '检测中…',
694
- modeOffline: '未连接',
695
- errEndpoint: '无法访问 MCP 端点 {url} · 若本页是静态打开,请填 hub 完整地址(默认 http://127.0.0.1:18764/mcp)',
696
- errHttp: 'HTTP {status} · {url}',
697
- opsHealth: '队列上限 {queue} · 历史 {hist} · peer {n}',
698
- panelGroups: '群组',
699
- panelLog: '消息尾迹',
700
- groupsHint: '频道内互发 · 离线成员从历史补读',
701
- formPeer: 'peer id(如 zhangsan)',
702
- formOwner: '归属人(可选)',
703
- formIssue: '签发',
704
- formGroup: 'group id',
705
- formGName: '显示名(可选)',
706
- formMembers: '成员 peer id,逗号分隔',
707
- formCreate: '创建',
708
- emptyTokensRemote: '远程模式(--auth-tokens)下才能在此签发 token',
709
- emptyTokensNone: '还没有 token · 用上方表单签发第一枚',
710
- emptyGroups: '还没有群组 · 用上方表单创建一个',
711
- emptyNoPeers: '还没有 peer 接入',
712
- emptyNoPeersSub: 'agent 连上 MCP 端点后会出现在这里',
713
- emptyNoMatch: '没有匹配项',
714
- emptyNoMatchSub: '换个关键词或筛选条件',
715
- searchRoster: '过滤 peer id / 别名 / 客户端…',
716
- stateLoading: '连接中…',
717
- stateWaitConn: '等待连接…',
718
- stateRefreshEvery: '每 3 秒自动刷新 · {time}',
719
- filterAll: '全部',
720
- filterOnline: '在线',
721
- filterOffline: '离线',
722
- filterGroup: '群组',
723
- rosterOnline: '在线',
724
- rosterOffline: '离线',
725
- rosterPending: '待认领',
726
- rosterPendingTitle: '匿名加入,待认领',
727
- rosterSelfTitle: '本管理台会话',
728
- rosterQueued: '排队消息',
729
- actionRename: '改名',
730
- actionKick: '移除',
731
- actionSave: '保存',
732
- actionCancel: '取消',
733
- actionCopy: '复制',
734
- actionDelete: '删除',
735
- actionMembers: '成员',
736
- actionSend: '发消息',
737
- renamePh: '新别名(清空并提交 = 清除别名)',
738
- renameDone: '已改名 {from} → {to}',
739
- kickNote: '移除 <b>{peer}</b>?排队消息将被清空',
740
- kickYes: '确认移除',
741
- kickDone: '已移除 {peer}',
742
- kickAbsent: '{peer} 已不在 hub 上',
743
- revokeNote: '吊销 <b>{peer}</b> 的 token?该成员将无法再连接。',
744
- revokeYes: '确认吊销',
745
- revokeDone: '已吊销 {peer}',
746
- copyDone: '已复制 {peer} 的 token',
747
- copyFail: '复制失败:{msg}',
748
- tokensCount: '共 {n} 枚 · {reveal}',
749
- tokensVisible: '明文',
750
- tokensMasked: '打码',
751
- tokenIssued: '已签发 {peer} [{role}] token:{token}',
752
- groupCreated: '群 #{group} 已创建',
753
- groupDeleted: '已删除 #{name}',
754
- groupDelNote: '删除群 <b>{name}</b>?(消息历史保留)',
755
- groupDelYes: '确认删除',
756
- groupSend: '发到 #{name}',
757
- groupSent: '已发送到 #{name}',
758
- groupSendPh: '输入要发到该群组的消息…',
759
- dialogOk: '确定',
760
- dialogCancel: '取消',
761
- groupRemoved: '已移除 {peer}',
762
- groupRemoveTitle: '移除 {peer}',
763
- groupAdded: '已添加 {peer} → #{group}',
764
- groupAddPh: '添加成员 peer id',
765
- groupAdd: '添加',
766
- groupMemberCount: '{n} 人',
767
- groupOnlyOwner: '仅创建者',
768
- logHintAll: '全量',
769
- logHint: '全量 · 显示 {shown}/{total}',
770
- logNone: '还没有消息',
771
- logNoneKind: '该类型暂无消息',
772
- errUnauth: '未授权:token 缺失或无效',
773
- errNeedManager: '未授权:需要 manager token'
774
- },
775
- en: {
776
- title: 'agent-comm-hub admin console',
777
- brandTitle: 'admin console',
778
- brandSub: 'remote ops console · manager',
779
- statusOff: 'disconnected',
780
- statusOn: 'connected',
781
- statusErr: 'connection error',
782
- fieldToken: 'token',
783
- fieldMcp: 'endpoint',
784
- fieldMcpPh: '/mcp or http://127.0.0.1:18764/mcp',
785
- btnReload: 'Reconnect',
786
- btnReveal: 'show/hide',
787
- btnRevealTitle: 'Toggle plain/masked tokens',
788
- btnRefresh: 'refresh',
789
- btnRefreshTitle: 'Refresh now',
790
- btnRefreshTok: 'Refresh token list',
791
- langTitle: 'Switch language',
792
- langToggle: 'EN / 中',
793
- statRoster: 'Online / Roster',
794
- statTokens: 'Tokens issued',
795
- statGroups: 'Groups',
796
- statLog: 'Message tail (30)',
797
- panelIdentity: 'Identity & Onboarding',
798
- panelTokens: 'Members & Tokens',
799
- panelRoster: 'Roster',
800
- identityHint: 'One person = one token = one peer · same client name stays isolated',
801
- identityNote: '<b>Rule:</b> the token decides the peer, not clientInfo. A→B never lands in C\'s mailbox; use <code>to:"all"</code> for everyone, groups for a subset. Multi-agent per person: <code>person.agent</code> (e.g. <code>zhangsan.kimi</code>).',
802
- idPerson: 'Person / machine',
803
- idToken: 'Dedicated token',
804
- idPeer: 'Isolated peer',
805
- inviteOwner: 'Owner (Zhang San)',
806
- invitePeer: 'peer id (zhangsan or zhangsan.kimi)',
807
- inviteIssue: 'Issue + config',
808
- snippetCopy: 'Copy MCP config',
809
- snippetHide: 'Hide',
810
- snippetHint: 'Send this config to {peer}; the token is shown only once',
811
- snippetCopied: 'copied MCP config for {peer}',
812
- modeLocal: 'Local',
813
- modeRemote: 'Remote auth',
814
- modeLimited: 'Read-only (no manager)',
815
- modeUnknown: 'detecting…',
816
- modeOffline: 'Offline',
817
- errEndpoint: 'Cannot reach MCP endpoint {url} · if this page was opened as a static file, set the full hub URL (default http://127.0.0.1:18764/mcp)',
818
- errHttp: 'HTTP {status} · {url}',
819
- opsHealth: 'queue {queue} · history {hist} · peers {n}',
820
- panelGroups: 'Groups',
821
- panelLog: 'Message Tail',
822
- groupsHint: 'Channel broadcast · offline members read back from history',
823
- formPeer: 'peer id (e.g. zhangsan)',
824
- formOwner: 'owner (optional)',
825
- formIssue: 'Issue',
826
- formGroup: 'group id',
827
- formGName: 'display name (optional)',
828
- formMembers: 'member peer ids, comma separated',
829
- formCreate: 'Create',
830
- emptyTokensRemote: 'Tokens can only be issued here in remote mode (--auth-tokens)',
831
- emptyTokensNone: 'No tokens yet · issue the first one with the form above',
832
- emptyGroups: 'No groups yet · create one with the form above',
833
- emptyNoPeers: 'No peers connected yet',
834
- emptyNoPeersSub: 'agents that join the MCP endpoint will show up here',
835
- emptyNoMatch: 'No matches',
836
- emptyNoMatchSub: 'try another keyword or filter',
837
- searchRoster: 'Filter peer id / alias / client…',
838
- stateLoading: 'connecting…',
839
- stateWaitConn: 'waiting for connection…',
840
- stateRefreshEvery: 'auto-refresh every 3 s · {time}',
841
- filterAll: 'All',
842
- filterOnline: 'Online',
843
- filterOffline: 'Offline',
844
- filterGroup: 'group',
845
- rosterOnline: 'online',
846
- rosterOffline: 'offline',
847
- rosterPending: 'unclaimed',
848
- rosterPendingTitle: 'anonymous join, pending claim',
849
- rosterSelfTitle: 'this console session',
850
- rosterQueued: 'queued messages',
851
- actionRename: 'Rename',
852
- actionKick: 'Remove',
853
- actionSave: 'Save',
854
- actionCancel: 'Cancel',
855
- actionCopy: 'Copy',
856
- actionDelete: 'Delete',
857
- actionMembers: 'Members',
858
- actionSend: 'Send',
859
- renamePh: 'new alias (submit empty to clear)',
860
- renameDone: 'renamed {from} → {to}',
861
- kickNote: 'Remove <b>{peer}</b>? Queued messages will be dropped',
862
- kickYes: 'Remove',
863
- kickDone: 'removed {peer}',
864
- kickAbsent: '{peer} is no longer on the hub',
865
- revokeNote: 'Revoke <b>{peer}</b>\'s token? The member will not be able to connect.',
866
- revokeYes: 'Revoke',
867
- revokeDone: 'revoked {peer}',
868
- copyDone: 'copied {peer}\'s token',
869
- copyFail: 'copy failed: {msg}',
870
- tokensCount: '{n} total · {reveal}',
871
- tokensVisible: 'plain',
872
- tokensMasked: 'masked',
873
- tokenIssued: 'issued {peer} [{role}] token: {token}',
874
- groupCreated: 'group #{group} created',
875
- groupDeleted: 'deleted #{name}',
876
- groupDelNote: 'Delete group <b>{name}</b>? (message history is kept)',
877
- groupDelYes: 'Delete',
878
- groupSend: 'Send to #{name}',
879
- groupSent: 'sent to #{name}',
880
- groupSendPh: 'Message to this group…',
881
- dialogOk: 'OK',
882
- dialogCancel: 'Cancel',
883
- groupRemoved: 'removed {peer}',
884
- groupRemoveTitle: 'Remove {peer}',
885
- groupAdded: 'added {peer} → #{group}',
886
- groupAddPh: 'member peer id',
887
- groupAdd: 'Add',
888
- groupMemberCount: '{n} members',
889
- groupOnlyOwner: 'creator only',
890
- logHintAll: 'all',
891
- logHint: 'all · showing {shown}/{total}',
892
- logNone: 'no messages yet',
893
- logNoneKind: 'no messages of this kind',
894
- errUnauth: 'unauthorized: token missing or invalid',
895
- errNeedManager: 'unauthorized: manager token required'
896
- }
897
- }
898
- function pickLang() {
899
- const saved = localStorage.getItem('hub-admin-lang')
900
- if (saved === 'zh' || saved === 'en') return saved
901
- return /^zh/i.test(navigator.language || '') ? 'zh' : 'en'
902
- }
903
- const LANG = pickLang()
904
- const t = (key, vars) => {
905
- let s = I18N[LANG][key] ?? I18N.zh[key] ?? key
906
- if (vars) for (const [k, v] of Object.entries(vars)) s = s.split('{' + k + '}').join(String(v))
907
- return s
908
- }
909
- /* Apply keys to static DOM: [data-i18n] text, [data-i18n-html] rich text,
910
- [data-i18n-ph] placeholder. Rich keys are trusted UI copy (no user input). */
911
- function applyI18n() {
912
- document.title = t('title')
913
- document.querySelectorAll('[data-i18n]').forEach((el) => { el.textContent = t(el.dataset.i18n) })
914
- document.querySelectorAll('[data-i18n-html]').forEach((el) => { el.innerHTML = t(el.dataset.i18nHtml) })
915
- document.querySelectorAll('[data-i18n-ph]').forEach((el) => { el.placeholder = t(el.dataset.i18nPh) })
916
- document.querySelectorAll('[data-i18n-title]').forEach((el) => { el.title = t(el.dataset.i18nTitle) })
917
- }
918
- document.querySelector('#lang').textContent = t('langToggle')
919
-
920
- const $ = (id) => document.getElementById(id)
921
- const token = () => $('token').value.trim()
922
-
923
- /** True when this page was opened as a static file (assets/admin.html on
924
- * Live Server / file://) rather than served by the hub at /admin. In that
925
- * case location.origin is NOT the hub — default to loopback:18764. */
926
- function pageLooksStatic() {
927
- const p = location.pathname
928
- return /assets\//i.test(p) || /\.html?$/i.test(p)
929
- }
930
-
931
- const DEFAULT_HUB = 'http://127.0.0.1:18764'
932
-
933
- function endpoint() {
934
- const raw = ($('mpath').value.trim() || '/mcp')
935
- // Absolute URL wins.
936
- if (/^https?:\/\//i.test(raw)) return raw.replace(/\/+$/, '')
937
- // host[:port][/path] without a leading slash → treat as host root + path.
938
- if (/^[a-z0-9._-]+(:\d+)?(\/|$)/i.test(raw) && !raw.startsWith('/')) {
939
- const scheme = location.protocol === 'https:' && !pageLooksStatic() ? 'https://' : 'http://'
940
- return (scheme + raw).replace(/\/+$/, '')
941
- }
942
- const path = raw.startsWith('/') ? raw : '/' + raw
943
- if (pageLooksStatic()) return DEFAULT_HUB + path
944
- return location.origin + path
945
- }
946
-
947
- /** Base for /admin/api/* (strip the /mcp suffix from the MCP endpoint). */
948
- function apiBase() {
949
- return endpoint().replace(/\/mcp\/?$/i, '')
950
- }
951
-
952
- let sid = null
953
- async function rpc(method, params) {
954
- const headers = { 'Content-Type': 'application/json', Accept: 'application/json, text/event-stream' }
955
- if (token() !== '') headers.Authorization = 'Bearer ' + token()
956
- if (sid) headers['Mcp-Session-Id'] = sid
957
- // Notifications (no id) go out as 202; requests carry an id — mixing them
958
- // up makes the hub report "method not found".
959
- const isNotification = method.startsWith('notifications/')
960
- const body = { jsonrpc: '2.0', method, params }
961
- if (!isNotification) body.id = Date.now() % 1e6
962
- let res
963
- try {
964
- res = await fetch(endpoint(), { method: 'POST', headers, body: JSON.stringify(body) })
965
- } catch {
966
- throw new Error(t('errEndpoint', { url: endpoint() }))
967
- }
968
- if (res.status === 401) throw new Error(t('errUnauth'))
969
- // Static file servers (Live Server :5500, python -m http.server) answer
970
- // POST /mcp with 405 — surface the real hub URL instead of a bare code.
971
- if (res.status === 405) throw new Error(t('errHttp', { status: 405, url: endpoint() }))
972
- const json = isNotification ? null : await res.json().catch(() => null)
973
- const newSid = res.headers.get('mcp-session-id')
974
- if (newSid) sid = newSid
975
- if (isNotification) return {}
976
- if (!json || json.error) throw new Error(json?.error?.message ?? t('errHttp', { status: res.status, url: endpoint() }))
977
- const parsed = JSON.parse(json.result?.content?.[0]?.text ?? '{}')
978
- if (json.result?.isError) throw new Error(parsed.error ?? 'tool error')
979
- return parsed
980
- }
981
- async function ensureSession() {
982
- if (sid) return
983
- // MCP handshake: the returned Mcp-Session-Id binds this session for all
984
- // subsequent tool calls (remote mode also binds the manager identity via
985
- // the token).
986
- await rpc('initialize', { protocolVersion: '2025-06-18', capabilities: {}, clientInfo: { name: 'hub-admin', version: '1.0' } })
987
- await rpc('notifications/initialized')
988
- }
989
- async function call(tool, args) { await ensureSession(); return rpc('tools/call', { name: tool, arguments: args ?? {} }) }
990
-
991
- /* ── in-page prompt/confirm (never window.prompt — native dialogs break
992
- the console's layout and block the event loop) ── */
993
- function promptDialog({ title, body, placeholder, multiline = true, okLabel, cancelLabel }) {
994
- return new Promise(resolve => {
995
- const backdrop = $('dialog-backdrop')
996
- const titleEl = $('dialog-title')
997
- const bodyEl = $('dialog-body')
998
- const input = $('dialog-input')
999
- const ok = $('dialog-ok')
1000
- const cancel = $('dialog-cancel')
1001
- titleEl.textContent = title ?? ''
1002
- if (body) { bodyEl.hidden = false; bodyEl.textContent = body } else { bodyEl.hidden = true; bodyEl.textContent = '' }
1003
- input.hidden = false
1004
- input.value = ''
1005
- input.placeholder = placeholder ?? ''
1006
- ok.textContent = okLabel ?? t('dialogOk')
1007
- cancel.textContent = cancelLabel ?? t('dialogCancel')
1008
- backdrop.classList.remove('hidden')
1009
- const close = (value) => {
1010
- backdrop.classList.add('hidden')
1011
- ok.onclick = null
1012
- cancel.onclick = null
1013
- input.onkeydown = null
1014
- backdrop.onclick = null
1015
- resolve(value)
1016
- }
1017
- ok.onclick = () => close(input.value.trim())
1018
- cancel.onclick = () => close(null)
1019
- backdrop.onclick = (e) => { if (e.target === backdrop) close(null) }
1020
- input.onkeydown = (e) => {
1021
- if (e.key === 'Enter' && (multiline === false || e.metaKey || e.ctrlKey)) {
1022
- e.preventDefault()
1023
- close(input.value.trim())
1024
- }
1025
- if (e.key === 'Escape') { e.preventDefault(); close(null) }
1026
- }
1027
- queueMicrotask(() => input.focus())
1028
- })
1029
- }
1030
-
1031
- /* ── toast feedback: four states (info/ok/warn/err), aria-live broadcast ── */
1032
- function toast(msg, kind = '') {
1033
- const el = document.createElement('div')
1034
- el.className = 'toast ' + kind
1035
- el.textContent = msg
1036
- $('toasts').append(el)
1037
- setTimeout(() => el.remove(), 3600)
1038
- }
1039
-
1040
- /* ── render: connection state ── */
1041
- function setConn(state, text) {
1042
- $('conn').dataset.state = state
1043
- $('conn-text').textContent = text
1044
- }
1045
-
1046
- /* ── token management (members & tokens panel) ── */
1047
- let revealTokens = false
1048
- let pendingRevoke = null // inline two-step confirm
1049
- async function adminApi(method, path, body) {
1050
- const headers = {}
1051
- if (!(body instanceof FormData) && body !== undefined) headers['Content-Type'] = 'application/json'
1052
- if (token() !== '') headers.Authorization = 'Bearer ' + token()
1053
- const res = await fetch(apiBase() + path, { method, headers, body: body === undefined ? undefined : JSON.stringify(body) })
1054
- if (res.status === 401 || res.status === 403) throw new Error(t('errNeedManager'))
1055
- const json = await res.json().catch(() => null)
1056
- if (!json || json.error) throw new Error(json?.error ?? ('HTTP ' + res.status))
1057
- return json
1058
- }
1059
-
1060
- function tokRow(tk) {
1061
- const row = document.createElement('div')
1062
- row.className = 'row'
1063
- if (pendingRevoke === tk.peer) {
1064
- const box = document.createElement('div')
1065
- box.className = 'confirm-row'
1066
- const note = document.createElement('span')
1067
- note.className = 'confirm-note'
1068
- note.innerHTML = t('revokeNote', { peer: escapeHtml(tk.peer) })
1069
- const yes = document.createElement('button'); yes.className = 'danger'; yes.textContent = t('revokeYes')
1070
- const no = document.createElement('button'); no.textContent = t('actionCancel')
1071
- yes.onclick = async () => {
1072
- pendingRevoke = null
1073
- try {
1074
- await adminApi('DELETE', '/admin/api/tokens/remove/' + encodeURIComponent(tk.peer), undefined)
1075
- toast(t('revokeDone', { peer: tk.peer }), 'ok')
1076
- } catch (e) { toast(String(e.message ?? e), 'err') }
1077
- loadTokens()
1078
- }
1079
- no.onclick = () => { pendingRevoke = null; loadTokens() }
1080
- box.append(note, yes, no)
1081
- row.append(box)
1082
- return row
1083
- }
1084
- const who = document.createElement('div')
1085
- who.className = 'who'
1086
- who.innerHTML = `<div class="id">${escapeHtml(tk.peer)} <span class="chip ${tk.role === 'manager' ? 'warn' : ''}">${tk.role}</span></div>` +
1087
- `<div class="alias">${escapeHtml(tk.owner || '—')}</div>`
1088
- const tok = document.createElement('span')
1089
- tok.className = 'chip'
1090
- tok.textContent = tk.token
1091
- const actions = document.createElement('div')
1092
- actions.className = 'actions'
1093
- if (revealTokens) {
1094
- const copy = document.createElement('button'); copy.className = 'ghost'; copy.textContent = t('actionCopy')
1095
- copy.onclick = async () => {
1096
- try { await navigator.clipboard.writeText(tk.token); toast(t('copyDone', { peer: tk.peer }), 'ok') }
1097
- catch (e) { toast(t('copyFail', { msg: String(e.message ?? e) }), 'err') }
1098
- }
1099
- actions.append(copy)
1100
- }
1101
- const del = document.createElement('button'); del.className = 'ghost danger'; del.textContent = t('actionKick')
1102
- del.onclick = () => { pendingRevoke = tk.peer; renderTokens(lastTokens) }
1103
- actions.append(del)
1104
- row.append(who, tok, actions)
1105
- return row
1106
- }
1107
-
1108
- let lastTokens = []
1109
- function renderTokens(list) {
1110
- lastTokens = list
1111
- const wrap = $('tokens')
1112
- wrap.innerHTML = ''
1113
- $('tok-hint').textContent = t('tokensCount', { n: list.length, reveal: revealTokens ? t('tokensVisible') : t('tokensMasked') })
1114
- if (list.length === 0) {
1115
- $('tok-empty').textContent = t('emptyTokensNone')
1116
- } else {
1117
- $('tok-empty').textContent = ''
1118
- for (const tk of list) wrap.append(tokRow(tk))
1119
- }
1120
- $('stat-tokens').textContent = String(list.length)
1121
- }
1122
-
1123
- async function loadTokens() {
1124
- try {
1125
- const res = await adminApi('GET', '/admin/api/tokens?reveal=' + (revealTokens ? '1' : '0'), undefined)
1126
- renderTokens(res.tokens ?? [])
1127
- } catch (e) {
1128
- $('tokens').innerHTML = `<div class="empty">${escapeHtml(String(e.message ?? e))}</div>`
1129
- }
1130
- }
1131
-
1132
- $('tok-form').onsubmit = async (ev) => {
1133
- ev.preventDefault()
1134
- const f = new FormData(ev.target)
1135
- try {
1136
- const res = await adminApi('POST', '/admin/api/tokens/add', {
1137
- peer: f.get('peer'), role: f.get('role'), owner: f.get('owner') || undefined,
1138
- })
1139
- revealTokens = true // reveal after issuing so the new token can be copied
1140
- loadTokens()
1141
- toast(t('tokenIssued', { peer: res.created.peer, role: res.created.role, token: res.created.token }), 'ok')
1142
- showSnippet(res.created)
1143
- ev.target.reset()
1144
- } catch (e) { toast(String(e.message ?? e), 'err') }
1145
- }
1146
-
1147
- /* ── mode + identity onboarding ────────────────────────────────────────
1148
- Local hub (no --auth-tokens): tokens API is absent / 403 → local mode,
1149
- invite form stays visible but issuing fails with a clear toast.
1150
- Remote hub with manager token: full invite → one-shot MCP config.
1151
- Remote hub with agent token: limited (read-only console). */
1152
- let hubMode = 'unknown' // local | remote | limited | offline | unknown
1153
- function setMode(mode) {
1154
- hubMode = mode
1155
- const chip = $('mode-chip')
1156
- chip.dataset.mode = mode
1157
- chip.textContent = mode === 'local' ? t('modeLocal')
1158
- : mode === 'remote' ? t('modeRemote')
1159
- : mode === 'limited' ? t('modeLimited')
1160
- : mode === 'offline' ? t('modeOffline')
1161
- : t('modeUnknown')
1162
- chip.title = mode === 'local'
1163
- ? 'Loopback trust model — no token table. Multi-user needs --auth-tokens on a server/LAN hub.'
1164
- : mode === 'remote'
1165
- ? 'Remote auth active — each person/agent holds a dedicated token → dedicated peer mailbox.'
1166
- : mode === 'limited'
1167
- ? 'Connected, but this token is not a manager — token issue/revoke is unavailable.'
1168
- : mode === 'offline'
1169
- ? 'Hub unreachable — check the endpoint field (full URL if this page is static-hosted).'
1170
- : 'Detecting…'
1171
- }
1172
-
1173
- function mcpBaseUrl() {
1174
- // Same origin as the admin page; path from the mcp field.
1175
- return location.origin + ($('mpath').value.trim() || '/mcp')
1176
- }
1177
-
1178
- function buildMcpConfig(identity) {
1179
- const url = mcpBaseUrl()
1180
- const headers = { Authorization: 'Bearer ' + identity.token }
1181
- // Multi-shape snippet: covers the majority of MCP clients in one paste.
1182
- return [
1183
- '# agent-comm-hub · peer: ' + identity.peer + (identity.owner ? ' (' + identity.owner + ')' : ''),
1184
- '# 一人一枚 token;不要多人共用(共用=共享信箱)',
1185
- '',
1186
- '## Claude Code / generic HTTP MCP (.mcp.json)',
1187
- JSON.stringify({
1188
- mcpServers: {
1189
- 'agent-hub': {
1190
- type: 'http',
1191
- url,
1192
- headers,
1193
- },
1194
- },
1195
- }, null, 2),
1196
- '',
1197
- '## opencode (opencode.json → mcp)',
1198
- JSON.stringify({
1199
- mcp: {
1200
- 'agent-hub': {
1201
- type: 'remote',
1202
- url,
1203
- headers,
1204
- },
1205
- },
1206
- }, null, 2),
1207
- '',
1208
- '## curl 探测',
1209
- 'curl -sS -X POST ' + url + ' \\',
1210
- " -H 'Content-Type: application/json' \\",
1211
- " -H 'Accept: application/json, text/event-stream' \\",
1212
- " -H 'Authorization: Bearer " + identity.token + "' \\",
1213
- " -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-06-18\",\"capabilities\":{},\"clientInfo\":{\"name\":\"probe\",\"version\":\"1\"}}}'",
1214
- ].join('\n')
1215
- }
1216
-
1217
- let lastSnippetIdentity = null
1218
- function showSnippet(identity) {
1219
- lastSnippetIdentity = identity
1220
- const bar = $('snippet-bar')
1221
- const pre = $('snippet')
1222
- bar.classList.remove('hidden')
1223
- pre.classList.remove('hidden')
1224
- $('snippet-hint').textContent = t('snippetHint', { peer: identity.peer })
1225
- pre.textContent = buildMcpConfig(identity)
1226
- pre.scrollIntoView({ behavior: 'smooth', block: 'nearest' })
1227
- }
1228
-
1229
- $('snippet-copy').onclick = async () => {
1230
- if (!lastSnippetIdentity) return
1231
- try {
1232
- await navigator.clipboard.writeText(buildMcpConfig(lastSnippetIdentity))
1233
- toast(t('snippetCopied', { peer: lastSnippetIdentity.peer }), 'ok')
1234
- } catch (e) { toast(t('copyFail', { msg: String(e.message ?? e) }), 'err') }
1235
- }
1236
- $('snippet-hide').onclick = () => {
1237
- $('snippet-bar').classList.add('hidden')
1238
- $('snippet').classList.add('hidden')
1239
- }
1240
-
1241
- /* Owner types a human name → suggest a peer slug (editable). */
1242
- const inviteOwner = document.querySelector('#invite-form [name=owner]')
1243
- const invitePeer = document.querySelector('#invite-form [name=peer]')
1244
- let peerTouched = false
1245
- invitePeer?.addEventListener('input', () => { peerTouched = true })
1246
- inviteOwner?.addEventListener('input', () => {
1247
- if (peerTouched) return
1248
- const slug = String(inviteOwner.value || '')
1249
- .trim()
1250
- .toLowerCase()
1251
- .replace(/\s+/g, '-')
1252
- .replace(/[^a-z0-9._:-]+/g, '')
1253
- invitePeer.value = slug
1254
- })
1255
-
1256
- $('invite-form').onsubmit = async (ev) => {
1257
- ev.preventDefault()
1258
- const f = new FormData(ev.target)
1259
- const peer = String(f.get('peer') || '').trim()
1260
- const owner = String(f.get('owner') || '').trim()
1261
- const role = String(f.get('role') || 'agent')
1262
- if (!peer) return
1263
- try {
1264
- const res = await adminApi('POST', '/admin/api/tokens/add', {
1265
- peer,
1266
- role,
1267
- ...(owner !== '' ? { owner } : {}),
1268
- })
1269
- revealTokens = true
1270
- peerTouched = false
1271
- loadTokens()
1272
- toast(t('tokenIssued', { peer: res.created.peer, role: res.created.role, token: res.created.token }), 'ok')
1273
- showSnippet(res.created)
1274
- ev.target.reset()
1275
- peerTouched = false
1276
- } catch (e) {
1277
- // Local mode / non-manager: surface a precise next step instead of a raw 403.
1278
- const msg = String(e.message ?? e)
1279
- if (hubMode === 'local' || /manager token required|401|403/i.test(msg)) {
1280
- toast(t('emptyTokensRemote'), 'warn')
1281
- } else {
1282
- toast(msg, 'err')
1283
- }
1284
- }
1285
- }
1286
-
1287
- async function detectMode() {
1288
- try {
1289
- await adminApi('GET', '/admin/api/tokens?reveal=0', undefined)
1290
- setMode('remote')
1291
- return
1292
- } catch (e) {
1293
- const msg = String(e?.message ?? e)
1294
- // Network / wrong origin: never claim "limited" when the hub is unreachable.
1295
- if (/Cannot reach|HTTP 405|Failed to fetch|NetworkError|ECONNREFUSED/i.test(msg)) {
1296
- setMode('offline')
1297
- return
1298
- }
1299
- if (/manager token required|unauthorized|401|403/i.test(msg)) {
1300
- // Token present but not a manager, or remote with empty token.
1301
- try {
1302
- await call('bridge_status')
1303
- setMode('limited')
1304
- } catch (e2) {
1305
- const m2 = String(e2?.message ?? e2)
1306
- setMode(/Cannot reach|HTTP 405|Failed to fetch/i.test(m2) ? 'offline' : 'limited')
1307
- }
1308
- return
1309
- }
1310
- // API not present (local hub without --auth-tokens): status still works.
1311
- try {
1312
- await call('bridge_status')
1313
- setMode('local')
1314
- } catch (e2) {
1315
- const m2 = String(e2?.message ?? e2)
1316
- setMode(/Cannot reach|HTTP 405|Failed to fetch/i.test(m2) ? 'offline' : 'limited')
1317
- }
1318
- }
1319
- }
1320
- $('tok-reveal').onclick = () => { revealTokens = !revealTokens; loadTokens() }
1321
- $('tok-refresh').onclick = () => { pendingRevoke = null; loadTokens() }
1322
-
1323
- /* ── render: roster (inline rename / two-step confirm remove; search + presence filter) ── */
1324
- let editingId = null
1325
- let confirmingId = null
1326
- let rosterQuery = ''
1327
- let rosterFilter = 'all'
1328
- function displayName(p) { return p.alias ?? p.id }
1329
-
1330
- function rosterRow(p) {
1331
- if (editingId === p.id) return rosterEditRow(p)
1332
- if (confirmingId === p.id) return rosterConfirmRow(p)
1333
- const row = document.createElement('div')
1334
- row.className = 'row'
1335
- row.dataset.online = String(p.connected)
1336
-
1337
- const presence = document.createElement('span')
1338
- presence.className = 'presence'
1339
- presence.title = p.connected ? t('rosterOnline') : t('rosterOffline')
1340
-
1341
- const who = document.createElement('div')
1342
- who.className = 'who'
1343
- const self = p.id === selfPeer() ? `<span class="self-tag" title="${t('rosterSelfTitle')}">●</span>` : ''
1344
- const anon = p.anonymous ? ` <span class="chip warn" title="${t('rosterPendingTitle')}">${t('rosterPending')}</span>` : ''
1345
- const ips = Array.isArray(p.clientIps) && p.clientIps.length ? ` · <span class="muted">${escapeHtml(p.clientIps.join(', '))}</span>` : ''
1346
- who.innerHTML = `<div class="id">${self}${escapeHtml(displayName(p))}${anon}</div>` +
1347
- `<div class="alias">${escapeHtml(p.alias ? p.id : (p.clientName ?? ''))}${ips}</div>`
1348
-
1349
- const chip = document.createElement('span')
1350
- if (p.clientVersion) { chip.className = 'chip'; chip.textContent = 'v' + p.clientVersion }
1351
-
1352
- const state = document.createElement('span')
1353
- state.className = 'chip ' + (p.connected ? 'ok' : 'dim')
1354
- state.textContent = p.connected ? t('rosterOnline') : t('rosterOffline')
1355
-
1356
- const badge = document.createElement('span')
1357
- if ((p.queued ?? 0) > 0) { badge.className = 'badge'; badge.title = t('rosterQueued'); badge.textContent = String(p.queued) }
1358
-
1359
- const actions = document.createElement('div')
1360
- actions.className = 'actions'
1361
- actions.append(mkBtn(t('actionRename'), 'ghost', () => { editingId = p.id; confirmingId = null; renderRoster(lastPeers) }))
1362
- // Offline peers stay registered until kicked or idle-GC'd — always offer
1363
- // remove so a stuck offline identity can be cleared from the roster.
1364
- actions.append(mkBtn(t('actionKick'), 'ghost danger', () => { confirmingId = p.id; editingId = null; renderRoster(lastPeers) }))
1365
-
1366
- row.append(presence, who, chip, state, badge, actions)
1367
- return row
1368
- }
1369
-
1370
- function rosterEditRow(p) {
1371
- const row = document.createElement('div')
1372
- row.className = 'row'
1373
- const box = document.createElement('div')
1374
- box.className = 'editbox'
1375
- const input = document.createElement('input')
1376
- input.value = p.alias ?? ''
1377
- input.placeholder = t('renamePh')
1378
- input.spellcheck = false
1379
- const save = document.createElement('button'); save.className = 'primary'; save.textContent = t('actionSave')
1380
- const cancel = document.createElement('button'); cancel.textContent = t('actionCancel')
1381
- const submit = async () => {
1382
- const next = input.value.trim()
1383
- if (next === (p.alias ?? '')) { editingId = null; refresh(); return }
1384
- try {
1385
- await call('bridge_rename', { peer: p.id, alias: next })
1386
- toast(t('renameDone', { from: displayName(p), to: next || '—' }), 'ok')
1387
- } catch (e) { toast(String(e.message ?? e), 'err') }
1388
- editingId = null
1389
- refresh()
1390
- }
1391
- save.onclick = submit
1392
- cancel.onclick = () => { editingId = null; refresh() }
1393
- input.onkeydown = (e) => {
1394
- if (e.key === 'Enter') { e.stopPropagation(); void submit() }
1395
- if (e.key === 'Escape') { e.stopPropagation(); editingId = null; refresh() }
1396
- }
1397
- box.append(input, save, cancel)
1398
- row.append(box)
1399
- queueMicrotask(() => input.focus())
1400
- return row
1401
- }
1402
-
1403
- function rosterConfirmRow(p) {
1404
- const row = document.createElement('div')
1405
- row.className = 'row'
1406
- const box = document.createElement('div')
1407
- box.className = 'confirm-row'
1408
- const note = document.createElement('span')
1409
- note.className = 'confirm-note'
1410
- note.innerHTML = t('kickNote', { peer: escapeHtml(displayName(p)) })
1411
- const yes = document.createElement('button'); yes.className = 'danger'; yes.textContent = t('kickYes')
1412
- const no = document.createElement('button'); no.textContent = t('actionCancel')
1413
- yes.onclick = async () => {
1414
- try {
1415
- const res = await call('bridge_unregister', { peer: p.id })
1416
- toast(res?.kicked === false ? t('kickAbsent', { peer: p.id }) : t('kickDone', { peer: displayName(p) }), 'ok')
1417
- } catch (e) { toast(String(e.message ?? e), 'err') }
1418
- confirmingId = null
1419
- refresh()
1420
- }
1421
- no.onclick = () => { confirmingId = null; refresh() }
1422
- box.append(note, yes, no)
1423
- row.append(box)
1424
- return row
1425
- }
1426
-
1427
- let lastPeers = []
1428
- let lastRosterKey = ''
1429
- function rosterKey(peers) {
1430
- return rosterFilter + '|' + rosterQuery + '|' + peers.map(p =>
1431
- [p.id, p.connected ? 1 : 0, p.alias ?? '', p.queued ?? 0, p.clientName ?? '',
1432
- p.anonymous ? 1 : 0, Array.isArray(p.clientIps) ? p.clientIps.join(', ') : ''].join('\u0001')
1433
- ).join('\u0002')
1434
- }
1435
- function renderRoster(peers, force = false) {
1436
- lastPeers = peers
1437
- // Skip rebuilding when the snapshot is unchanged: the 3 s poll must not
1438
- // interrupt a hover or an ongoing read (apple-design: interruptibility).
1439
- const key = rosterKey(peers)
1440
- if (!force && key === lastRosterKey) return
1441
- lastRosterKey = key
1442
- const online = peers.filter(p => p.connected).length
1443
- $('roster-count').textContent = String(peers.length)
1444
- $('roster-hint').textContent = `${online} ${t('filterOnline')}`
1445
- $('stat-online').textContent = `${online}/${peers.length}`
1446
- const q = rosterQuery.toLowerCase()
1447
- const wrap = $('roster')
1448
- wrap.innerHTML = ''
1449
- const shown = peers.filter(p => {
1450
- if (rosterFilter === 'online' && !p.connected) return false
1451
- if (rosterFilter === 'offline' && p.connected) return false
1452
- if (q === '') return true
1453
- return [p.id, p.alias ?? '', p.clientName ?? ''].some(s => s.toLowerCase().includes(q))
1454
- })
1455
- if (shown.length === 0) {
1456
- wrap.innerHTML = peers.length === 0
1457
- ? `<div class="empty"><b>${escapeHtml(t('emptyNoPeers'))}</b>${escapeHtml(t('emptyNoPeersSub'))}</div>`
1458
- : `<div class="empty"><b>${escapeHtml(t('emptyNoMatch'))}</b>${escapeHtml(t('emptyNoMatchSub'))}</div>`
1459
- return
1460
- }
1461
- for (const p of shown) wrap.append(rosterRow(p))
1462
- }
1463
-
1464
- $('roster-q').addEventListener('input', (e) => { rosterQuery = e.target.value; renderRoster(lastPeers, true) })
1465
- $('roster-filter').addEventListener('click', (e) => {
1466
- const b = e.target.closest('button[data-f]')
1467
- if (!b) return
1468
- rosterFilter = b.dataset.f
1469
- for (const x of $('roster-filter').children) x.setAttribute('aria-pressed', String(x === b))
1470
- renderRoster(lastPeers, true)
1471
- })
1472
-
1473
- /* ── render: groups (member expansion management / inline confirm delete) ── */
1474
- let expandedGroup = null
1475
- let pendingGroupDelete = null
1476
- let lastGroups = []
1477
-
1478
- function groupRow(g) {
1479
- const row = document.createElement('div')
1480
- row.className = 'g-row'
1481
- if (pendingGroupDelete === g.id) {
1482
- const box = document.createElement('div')
1483
- box.className = 'confirm-row'
1484
- const note = document.createElement('span')
1485
- note.className = 'confirm-note'
1486
- note.innerHTML = t('groupDelNote', { name: escapeHtml(g.name ?? g.id) })
1487
- const yes = document.createElement('button'); yes.className = 'danger'; yes.textContent = t('groupDelYes')
1488
- const no = document.createElement('button'); no.textContent = t('actionCancel')
1489
- yes.onclick = async () => {
1490
- pendingGroupDelete = null
1491
- try { await call('bridge_group_delete', { group: g.id }); toast(t('groupDeleted', { name: g.name ?? g.id }), 'ok') }
1492
- catch (e) { toast(String(e.message ?? e), 'err') }
1493
- refresh()
1494
- }
1495
- no.onclick = () => { pendingGroupDelete = null; renderGroups(lastGroups) }
1496
- box.append(note, yes, no)
1497
- row.append(box)
1498
- return row
1499
- }
1500
- const memCount = (g.members ?? []).length
1501
- const name = document.createElement('div')
1502
- name.className = 'g-name'
1503
- name.innerHTML = `<div class="id"><span class="grp">#</span>${escapeHtml(g.name ?? g.id)} <span class="chip dim">${escapeHtml(t('groupMemberCount', { n: memCount }))}</span></div>` +
1504
- `<div class="members">${escapeHtml((g.members ?? []).join(' · ') || t('groupOnlyOwner'))}</div>`
1505
- const actions = document.createElement('div')
1506
- actions.className = 'actions'
1507
- actions.append(mkBtn(t('actionMembers'), 'ghost' + (expandedGroup === g.id ? ' primary' : ''), () => {
1508
- expandedGroup = expandedGroup === g.id ? null : g.id
1509
- renderGroups(lastGroups)
1510
- }))
1511
- actions.append(mkBtn(t('actionSend'), 'ghost', async () => {
1512
- const text = await promptDialog({
1513
- title: t('groupSend', { name: g.name ?? g.id }),
1514
- placeholder: t('groupSendPh'),
1515
- multiline: true,
1516
- })
1517
- if (!text) return
1518
- try { await call('bridge_group_send', { group: g.id, message: text }); toast(t('groupSent', { name: g.name ?? g.id }), 'ok') }
1519
- catch (e) { toast(String(e.message ?? e), 'err') }
1520
- refresh()
1521
- }))
1522
- actions.append(mkBtn(t('actionDelete'), 'ghost danger', () => { pendingGroupDelete = g.id; renderGroups(lastGroups) }))
1523
- row.append(name, actions)
1524
- if (expandedGroup === g.id) row.append(groupExpand(g))
1525
- return row
1526
- }
1527
-
1528
- function groupExpand(g) {
1529
- const box = document.createElement('div')
1530
- box.className = 'g-expand'
1531
- const mem = document.createElement('div')
1532
- mem.className = 'g-members'
1533
- for (const m of g.members ?? []) {
1534
- const chip = document.createElement('span')
1535
- chip.className = 'member-chip'
1536
- const remove = document.createElement('button')
1537
- remove.textContent = '×'
1538
- remove.title = t('groupRemoveTitle', { peer: m })
1539
- remove.onclick = async () => {
1540
- try { await call('bridge_group_remove_member', { group: g.id, member: m }); toast(t('groupRemoved', { peer: m }), 'ok') }
1541
- catch (e) { toast(String(e.message ?? e), 'err') }
1542
- refresh()
1543
- }
1544
- const span = document.createElement('span'); span.textContent = m
1545
- chip.append(span, remove)
1546
- mem.append(chip)
1547
- }
1548
- const add = document.createElement('form')
1549
- add.className = 'g-add'
1550
- const input = document.createElement('input')
1551
- input.placeholder = t('groupAddPh')
1552
- input.spellcheck = false
1553
- const btn = document.createElement('button'); btn.className = 'primary'; btn.textContent = t('groupAdd')
1554
- input.required = true
1555
- add.append(input, btn)
1556
- add.onsubmit = async (ev) => {
1557
- ev.preventDefault()
1558
- const m = input.value.trim()
1559
- if (!m) return
1560
- try { await call('bridge_group_add_member', { group: g.id, member: m }); toast(t('groupAdded', { peer: m, group: g.name ?? g.id }), 'ok') }
1561
- catch (e) { toast(String(e.message ?? e), 'err') }
1562
- refresh()
1563
- }
1564
- box.append(mem, add)
1565
- queueMicrotask(() => input.focus())
1566
- return box
1567
- }
1568
-
1569
- function renderGroups(groups) {
1570
- lastGroups = groups
1571
- $('stat-groups').textContent = String(groups.length)
1572
- const wrap = $('groups')
1573
- wrap.innerHTML = ''
1574
- if (groups.length === 0) {
1575
- wrap.innerHTML = '<div class="empty"></div>'
1576
- $('groups .empty')[0]?.setAttribute('data-i18n', 'emptyGroups')
1577
- wrap.querySelector('.empty').textContent = t('emptyGroups')
1578
- return
1579
- }
1580
- for (const g of groups) wrap.append(groupRow(g))
1581
- }
1582
-
1583
- /* ── render: message tail (kind filter chips) ── */
1584
- function kindOf(m) { return m.channel ? 'group' : m.kind }
1585
- function escapeHtml(s) { const d = document.createElement('div'); d.textContent = s; return d.innerHTML }
1586
- function selfPeer() { return lastStatus?.peerId ?? '' }
1587
-
1588
- let logFilter = 'all'
1589
- let lastTail = []
1590
- let lastTailKey = ''
1591
- function renderTail(messages, force = false) {
1592
- lastTail = messages
1593
- // Skip rebuilding when nothing new arrived: keep the scroll position and any
1594
- // read in progress (apple-design: interruptibility).
1595
- const key = messages.map(m => m.id + '@' + m.ts).join('|')
1596
- if (!force && key === lastTailKey) return
1597
- lastTailKey = key
1598
- const feed = $('log')
1599
- feed.innerHTML = ''
1600
- const shown = logFilter === 'all' ? messages : messages.filter(m => kindOf(m) === logFilter)
1601
- $('log-hint').textContent = t('logHint', { shown: shown.length, total: messages.length })
1602
- $('stat-msgs').textContent = String(messages.length)
1603
- if (shown.length === 0) {
1604
- feed.innerHTML = '<li class="empty">' + (logFilter === 'all' ? t('logNone') : t('logNoneKind')) + '</li>'
1605
- return
1606
- }
1607
- for (const m of shown) {
1608
- const li = document.createElement('li')
1609
- const time = new Date(m.ts).toLocaleTimeString(LANG === 'zh' ? 'zh-CN' : 'en-GB', { hour12: false })
1610
- const body = typeof m.content === 'string' ? m.content : JSON.stringify(m.content)
1611
- const metaEl = document.createElement('div')
1612
- metaEl.className = 'meta'
1613
- const tEl = document.createElement('span'); tEl.className = 't'; tEl.textContent = time
1614
- const route = document.createElement('span'); route.className = 'route'; route.textContent = m.from + ' → ' + m.to
1615
- const kind = document.createElement('span')
1616
- kind.className = 'kind ' + kindOf(m)
1617
- kind.textContent = m.channel ? '#' + m.channel : m.kind
1618
- metaEl.append(tEl, route, kind)
1619
- const bodyEl = document.createElement('div')
1620
- bodyEl.className = 'body'
1621
- bodyEl.textContent = body
1622
- li.append(metaEl, bodyEl)
1623
- feed.append(li)
1624
- }
1625
- }
1626
-
1627
- $('log-filter').addEventListener('click', (e) => {
1628
- const b = e.target.closest('button[data-k]')
1629
- if (!b) return
1630
- logFilter = b.dataset.k
1631
- for (const x of $('log-filter').children) x.setAttribute('aria-pressed', String(x === b))
1632
- renderTail(lastTail, true)
1633
- })
1634
-
1635
- /* ── helpers ── */
1636
- function mkBtn(label, cls, onclick) {
1637
- const b = document.createElement('button')
1638
- b.textContent = label
1639
- b.className = cls
1640
- b.onclick = onclick
1641
- return b
1642
- }
1643
-
1644
- /* ── poll loop: skip re-render while a panel has an interaction in flight ── */
1645
- let lastStatus = null
1646
- async function refresh() {
1647
- try {
1648
- const status = await call('bridge_status')
1649
- lastStatus = status
1650
- setConn('ok', t('statusOn'))
1651
- // Recovered from a failed tick: re-probe tokens API for the real mode.
1652
- if (hubMode === 'offline' || hubMode === 'unknown') void detectMode()
1653
- const bar = $('bar')
1654
- bar.className = ''
1655
- bar.textContent = t('stateRefreshEvery', { time: new Date().toLocaleTimeString(LANG === 'zh' ? 'zh-CN' : 'en-GB', { hour12: false }) })
1656
- if (!editingId && !confirmingId) renderRoster(status.peers ?? [])
1657
- // Ops strip: capacity knobs the server operator actually needs at a glance.
1658
- const n = (status.peers ?? []).length
1659
- $('ops-health').textContent = t('opsHealth', {
1660
- queue: status.maxQueue ?? '—',
1661
- hist: status.historyLimit ?? '—',
1662
- n,
1663
- })
1664
- const groups = await call('bridge_group_list')
1665
- if (!pendingGroupDelete && expandedGroup === null) renderGroups(groups.groups ?? [])
1666
- const tail = await call('bridge_history', { peer: 'all', limit: 30 })
1667
- renderTail(tail.messages ?? [])
1668
- loadTokens()
1669
- } catch (e) {
1670
- setConn('err', t('statusErr'))
1671
- setMode('offline')
1672
- const bar = $('bar')
1673
- bar.className = 'err'
1674
- // A hub restart invalidates the old session: next tick re-runs initialize.
1675
- sid = null
1676
- bar.textContent = String(e.message ?? e)
1677
- // Don't leave the roster stuck on "connecting…" when the hub is down.
1678
- if ($('roster').querySelector('.loading')) {
1679
- $('roster').innerHTML = `<div class="empty"><b>${escapeHtml(t('statusErr'))}</b>${escapeHtml(String(e.message ?? e))}</div>`
1680
- }
1681
- }
1682
- }
1683
-
1684
- $('g-create').onsubmit = async (ev) => {
1685
- ev.preventDefault()
1686
- const f = new FormData(ev.target)
1687
- const members = String(f.get('members')).split(',').map(s => s.trim()).filter(Boolean)
1688
- try {
1689
- await call('bridge_group_create', { group: f.get('group'), name: f.get('name') || undefined, members })
1690
- toast(t('groupCreated', { group: f.get('group') }), 'ok')
1691
- ev.target.reset()
1692
- } catch (e) { toast(String(e.message ?? e), 'err') }
1693
- refresh()
1694
- }
1695
- $('refresh').onclick = () => { editingId = null; confirmingId = null; refresh() }
1696
- $('reload').onclick = () => { sid = null; localStorage.setItem('hub-admin-token', token()); void detectMode(); refresh() }
1697
- $('lang').onclick = () => { localStorage.setItem('hub-admin-lang', LANG === 'zh' ? 'en' : 'zh'); location.reload() }
1698
- $('token').addEventListener('change', () => localStorage.setItem('hub-admin-token', token()))
1699
- $('token').value = localStorage.getItem('hub-admin-token') ?? ''
1700
- // Static-hosted pages: seed the endpoint with the default hub URL once.
1701
- if (pageLooksStatic() && !localStorage.getItem('hub-admin-endpoint')) {
1702
- $('mpath').value = DEFAULT_HUB + '/mcp'
1703
- localStorage.setItem('hub-admin-endpoint', $('mpath').value)
1704
- } else {
1705
- $('mpath').value = localStorage.getItem('hub-admin-endpoint') || $('mpath').value
1706
- }
1707
- $('mpath').addEventListener('change', () => {
1708
- localStorage.setItem('hub-admin-endpoint', $('mpath').value.trim())
1709
- sid = null
1710
- void detectMode()
1711
- })
1712
-
1713
- /* ── material feedback: topbar gets heavier past the content edge
1714
- (rAF-throttled, interruptible transition) ── */
1715
- const topbar = document.querySelector('.topbar')
1716
- let scrollTick = false
1717
- addEventListener('scroll', () => {
1718
- if (scrollTick) return
1719
- scrollTick = true
1720
- requestAnimationFrame(() => {
1721
- scrollTick = false
1722
- topbar.classList.toggle('scrolled', scrollY > 8)
1723
- })
1724
- }, { passive: true })
1725
-
1726
- /* ── exit path: Esc closes every inline confirm/edit/expansion along the
1727
- same path it opened (spatial consistency) ── */
1728
- document.addEventListener('keydown', (e) => {
1729
- if (e.key !== 'Escape') return
1730
- if (editingId === null && confirmingId === null && pendingRevoke === null &&
1731
- pendingGroupDelete === null && expandedGroup === null) return
1732
- editingId = null; confirmingId = null; pendingRevoke = null
1733
- pendingGroupDelete = null; expandedGroup = null
1734
- refresh()
1735
- })
1736
-
1737
- applyI18n()
1738
- setMode('unknown')
1739
- setInterval(refresh, 3000)
1740
- void detectMode()
1741
- refresh()
1742
- </script>
1743
- </body>
1744
- </html>
2
+ <html lang="zh-CN" class="dark">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>agent-comm-hub 管理台</title>
7
+ <script type="module" crossorigin>var dx=Object.defineProperty;var fx=(t,r,i)=>r in t?dx(t,r,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[r]=i;var Do=(t,r,i)=>fx(t,typeof r!="symbol"?r+"":r,i);(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))o(l);new MutationObserver(l=>{for(const c of l)if(c.type==="childList")for(const u of c.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&o(u)}).observe(document,{childList:!0,subtree:!0});function i(l){const c={};return l.integrity&&(c.integrity=l.integrity),l.referrerPolicy&&(c.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?c.credentials="include":l.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function o(l){if(l.ep)return;l.ep=!0;const c=i(l);fetch(l.href,c)}})();var su={exports:{}},ss={},ou={exports:{}},be={};/**
8
+ * @license React
9
+ * react.production.min.js
10
+ *
11
+ * Copyright (c) Facebook, Inc. and its affiliates.
12
+ *
13
+ * This source code is licensed under the MIT license found in the
14
+ * LICENSE file in the root directory of this source tree.
15
+ */var zh;function hx(){if(zh)return be;zh=1;var t=Symbol.for("react.element"),r=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),l=Symbol.for("react.profiler"),c=Symbol.for("react.provider"),u=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),p=Symbol.for("react.suspense"),m=Symbol.for("react.memo"),g=Symbol.for("react.lazy"),y=Symbol.iterator;function x(A){return A===null||typeof A!="object"?null:(A=y&&A[y]||A["@@iterator"],typeof A=="function"?A:null)}var w={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},k=Object.assign,C={};function E(A,B,xe){this.props=A,this.context=B,this.refs=C,this.updater=xe||w}E.prototype.isReactComponent={},E.prototype.setState=function(A,B){if(typeof A!="object"&&typeof A!="function"&&A!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,A,B,"setState")},E.prototype.forceUpdate=function(A){this.updater.enqueueForceUpdate(this,A,"forceUpdate")};function M(){}M.prototype=E.prototype;function L(A,B,xe){this.props=A,this.context=B,this.refs=C,this.updater=xe||w}var I=L.prototype=new M;I.constructor=L,k(I,E.prototype),I.isPureReactComponent=!0;var D=Array.isArray,U=Object.prototype.hasOwnProperty,Y={current:null},N={key:!0,ref:!0,__self:!0,__source:!0};function j(A,B,xe){var he,ae={},le=null,we=null;if(B!=null)for(he in B.ref!==void 0&&(we=B.ref),B.key!==void 0&&(le=""+B.key),B)U.call(B,he)&&!N.hasOwnProperty(he)&&(ae[he]=B[he]);var ke=arguments.length-2;if(ke===1)ae.children=xe;else if(1<ke){for(var ye=Array(ke),Ve=0;Ve<ke;Ve++)ye[Ve]=arguments[Ve+2];ae.children=ye}if(A&&A.defaultProps)for(he in ke=A.defaultProps,ke)ae[he]===void 0&&(ae[he]=ke[he]);return{$$typeof:t,type:A,key:le,ref:we,props:ae,_owner:Y.current}}function W(A,B){return{$$typeof:t,type:A.type,key:B,ref:A.ref,props:A.props,_owner:A._owner}}function ee(A){return typeof A=="object"&&A!==null&&A.$$typeof===t}function de(A){var B={"=":"=0",":":"=2"};return"$"+A.replace(/[=:]/g,function(xe){return B[xe]})}var Q=/\/+/g;function oe(A,B){return typeof A=="object"&&A!==null&&A.key!=null?de(""+A.key):B.toString(36)}function fe(A,B,xe,he,ae){var le=typeof A;(le==="undefined"||le==="boolean")&&(A=null);var we=!1;if(A===null)we=!0;else switch(le){case"string":case"number":we=!0;break;case"object":switch(A.$$typeof){case t:case r:we=!0}}if(we)return we=A,ae=ae(we),A=he===""?"."+oe(we,0):he,D(ae)?(xe="",A!=null&&(xe=A.replace(Q,"$&/")+"/"),fe(ae,B,xe,"",function(Ve){return Ve})):ae!=null&&(ee(ae)&&(ae=W(ae,xe+(!ae.key||we&&we.key===ae.key?"":(""+ae.key).replace(Q,"$&/")+"/")+A)),B.push(ae)),1;if(we=0,he=he===""?".":he+":",D(A))for(var ke=0;ke<A.length;ke++){le=A[ke];var ye=he+oe(le,ke);we+=fe(le,B,xe,ye,ae)}else if(ye=x(A),typeof ye=="function")for(A=ye.call(A),ke=0;!(le=A.next()).done;)le=le.value,ye=he+oe(le,ke++),we+=fe(le,B,xe,ye,ae);else if(le==="object")throw B=String(A),Error("Objects are not valid as a React child (found: "+(B==="[object Object]"?"object with keys {"+Object.keys(A).join(", ")+"}":B)+"). If you meant to render a collection of children, use an array instead.");return we}function pe(A,B,xe){if(A==null)return A;var he=[],ae=0;return fe(A,he,"","",function(le){return B.call(xe,le,ae++)}),he}function Te(A){if(A._status===-1){var B=A._result;B=B(),B.then(function(xe){(A._status===0||A._status===-1)&&(A._status=1,A._result=xe)},function(xe){(A._status===0||A._status===-1)&&(A._status=2,A._result=xe)}),A._status===-1&&(A._status=0,A._result=B)}if(A._status===1)return A._result.default;throw A._result}var q={current:null},$={transition:null},Z={ReactCurrentDispatcher:q,ReactCurrentBatchConfig:$,ReactCurrentOwner:Y};function O(){throw Error("act(...) is not supported in production builds of React.")}return be.Children={map:pe,forEach:function(A,B,xe){pe(A,function(){B.apply(this,arguments)},xe)},count:function(A){var B=0;return pe(A,function(){B++}),B},toArray:function(A){return pe(A,function(B){return B})||[]},only:function(A){if(!ee(A))throw Error("React.Children.only expected to receive a single React element child.");return A}},be.Component=E,be.Fragment=i,be.Profiler=l,be.PureComponent=L,be.StrictMode=o,be.Suspense=p,be.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Z,be.act=O,be.cloneElement=function(A,B,xe){if(A==null)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+A+".");var he=k({},A.props),ae=A.key,le=A.ref,we=A._owner;if(B!=null){if(B.ref!==void 0&&(le=B.ref,we=Y.current),B.key!==void 0&&(ae=""+B.key),A.type&&A.type.defaultProps)var ke=A.type.defaultProps;for(ye in B)U.call(B,ye)&&!N.hasOwnProperty(ye)&&(he[ye]=B[ye]===void 0&&ke!==void 0?ke[ye]:B[ye])}var ye=arguments.length-2;if(ye===1)he.children=xe;else if(1<ye){ke=Array(ye);for(var Ve=0;Ve<ye;Ve++)ke[Ve]=arguments[Ve+2];he.children=ke}return{$$typeof:t,type:A.type,key:ae,ref:le,props:he,_owner:we}},be.createContext=function(A){return A={$$typeof:u,_currentValue:A,_currentValue2:A,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},A.Provider={$$typeof:c,_context:A},A.Consumer=A},be.createElement=j,be.createFactory=function(A){var B=j.bind(null,A);return B.type=A,B},be.createRef=function(){return{current:null}},be.forwardRef=function(A){return{$$typeof:f,render:A}},be.isValidElement=ee,be.lazy=function(A){return{$$typeof:g,_payload:{_status:-1,_result:A},_init:Te}},be.memo=function(A,B){return{$$typeof:m,type:A,compare:B===void 0?null:B}},be.startTransition=function(A){var B=$.transition;$.transition={};try{A()}finally{$.transition=B}},be.unstable_act=O,be.useCallback=function(A,B){return q.current.useCallback(A,B)},be.useContext=function(A){return q.current.useContext(A)},be.useDebugValue=function(){},be.useDeferredValue=function(A){return q.current.useDeferredValue(A)},be.useEffect=function(A,B){return q.current.useEffect(A,B)},be.useId=function(){return q.current.useId()},be.useImperativeHandle=function(A,B,xe){return q.current.useImperativeHandle(A,B,xe)},be.useInsertionEffect=function(A,B){return q.current.useInsertionEffect(A,B)},be.useLayoutEffect=function(A,B){return q.current.useLayoutEffect(A,B)},be.useMemo=function(A,B){return q.current.useMemo(A,B)},be.useReducer=function(A,B,xe){return q.current.useReducer(A,B,xe)},be.useRef=function(A){return q.current.useRef(A)},be.useState=function(A){return q.current.useState(A)},be.useSyncExternalStore=function(A,B,xe){return q.current.useSyncExternalStore(A,B,xe)},be.useTransition=function(){return q.current.useTransition()},be.version="18.3.1",be}var Dh;function cc(){return Dh||(Dh=1,ou.exports=hx()),ou.exports}/**
16
+ * @license React
17
+ * react-jsx-runtime.production.min.js
18
+ *
19
+ * Copyright (c) Facebook, Inc. and its affiliates.
20
+ *
21
+ * This source code is licensed under the MIT license found in the
22
+ * LICENSE file in the root directory of this source tree.
23
+ */var Nh;function px(){if(Nh)return ss;Nh=1;var t=cc(),r=Symbol.for("react.element"),i=Symbol.for("react.fragment"),o=Object.prototype.hasOwnProperty,l=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function u(f,p,m){var g,y={},x=null,w=null;m!==void 0&&(x=""+m),p.key!==void 0&&(x=""+p.key),p.ref!==void 0&&(w=p.ref);for(g in p)o.call(p,g)&&!c.hasOwnProperty(g)&&(y[g]=p[g]);if(f&&f.defaultProps)for(g in p=f.defaultProps,p)y[g]===void 0&&(y[g]=p[g]);return{$$typeof:r,type:f,key:x,ref:w,props:y,_owner:l.current}}return ss.Fragment=i,ss.jsx=u,ss.jsxs=u,ss}var Vh;function mx(){return Vh||(Vh=1,su.exports=px()),su.exports}var S=mx(),P=cc(),No={},lu={exports:{}},At={},au={exports:{}},uu={};/**
24
+ * @license React
25
+ * scheduler.production.min.js
26
+ *
27
+ * Copyright (c) Facebook, Inc. and its affiliates.
28
+ *
29
+ * This source code is licensed under the MIT license found in the
30
+ * LICENSE file in the root directory of this source tree.
31
+ */var Oh;function gx(){return Oh||(Oh=1,(function(t){function r($,Z){var O=$.length;$.push(Z);e:for(;0<O;){var A=O-1>>>1,B=$[A];if(0<l(B,Z))$[A]=Z,$[O]=B,O=A;else break e}}function i($){return $.length===0?null:$[0]}function o($){if($.length===0)return null;var Z=$[0],O=$.pop();if(O!==Z){$[0]=O;e:for(var A=0,B=$.length,xe=B>>>1;A<xe;){var he=2*(A+1)-1,ae=$[he],le=he+1,we=$[le];if(0>l(ae,O))le<B&&0>l(we,ae)?($[A]=we,$[le]=O,A=le):($[A]=ae,$[he]=O,A=he);else if(le<B&&0>l(we,O))$[A]=we,$[le]=O,A=le;else break e}}return Z}function l($,Z){var O=$.sortIndex-Z.sortIndex;return O!==0?O:$.id-Z.id}if(typeof performance=="object"&&typeof performance.now=="function"){var c=performance;t.unstable_now=function(){return c.now()}}else{var u=Date,f=u.now();t.unstable_now=function(){return u.now()-f}}var p=[],m=[],g=1,y=null,x=3,w=!1,k=!1,C=!1,E=typeof setTimeout=="function"?setTimeout:null,M=typeof clearTimeout=="function"?clearTimeout:null,L=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function I($){for(var Z=i(m);Z!==null;){if(Z.callback===null)o(m);else if(Z.startTime<=$)o(m),Z.sortIndex=Z.expirationTime,r(p,Z);else break;Z=i(m)}}function D($){if(C=!1,I($),!k)if(i(p)!==null)k=!0,Te(U);else{var Z=i(m);Z!==null&&q(D,Z.startTime-$)}}function U($,Z){k=!1,C&&(C=!1,M(j),j=-1),w=!0;var O=x;try{for(I(Z),y=i(p);y!==null&&(!(y.expirationTime>Z)||$&&!de());){var A=y.callback;if(typeof A=="function"){y.callback=null,x=y.priorityLevel;var B=A(y.expirationTime<=Z);Z=t.unstable_now(),typeof B=="function"?y.callback=B:y===i(p)&&o(p),I(Z)}else o(p);y=i(p)}if(y!==null)var xe=!0;else{var he=i(m);he!==null&&q(D,he.startTime-Z),xe=!1}return xe}finally{y=null,x=O,w=!1}}var Y=!1,N=null,j=-1,W=5,ee=-1;function de(){return!(t.unstable_now()-ee<W)}function Q(){if(N!==null){var $=t.unstable_now();ee=$;var Z=!0;try{Z=N(!0,$)}finally{Z?oe():(Y=!1,N=null)}}else Y=!1}var oe;if(typeof L=="function")oe=function(){L(Q)};else if(typeof MessageChannel<"u"){var fe=new MessageChannel,pe=fe.port2;fe.port1.onmessage=Q,oe=function(){pe.postMessage(null)}}else oe=function(){E(Q,0)};function Te($){N=$,Y||(Y=!0,oe())}function q($,Z){j=E(function(){$(t.unstable_now())},Z)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function($){$.callback=null},t.unstable_continueExecution=function(){k||w||(k=!0,Te(U))},t.unstable_forceFrameRate=function($){0>$||125<$?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):W=0<$?Math.floor(1e3/$):5},t.unstable_getCurrentPriorityLevel=function(){return x},t.unstable_getFirstCallbackNode=function(){return i(p)},t.unstable_next=function($){switch(x){case 1:case 2:case 3:var Z=3;break;default:Z=x}var O=x;x=Z;try{return $()}finally{x=O}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=function(){},t.unstable_runWithPriority=function($,Z){switch($){case 1:case 2:case 3:case 4:case 5:break;default:$=3}var O=x;x=$;try{return Z()}finally{x=O}},t.unstable_scheduleCallback=function($,Z,O){var A=t.unstable_now();switch(typeof O=="object"&&O!==null?(O=O.delay,O=typeof O=="number"&&0<O?A+O:A):O=A,$){case 1:var B=-1;break;case 2:B=250;break;case 5:B=1073741823;break;case 4:B=1e4;break;default:B=5e3}return B=O+B,$={id:g++,callback:Z,priorityLevel:$,startTime:O,expirationTime:B,sortIndex:-1},O>A?($.sortIndex=O,r(m,$),i(p)===null&&$===i(m)&&(C?(M(j),j=-1):C=!0,q(D,O-A))):($.sortIndex=B,r(p,$),k||w||(k=!0,Te(U))),$},t.unstable_shouldYield=de,t.unstable_wrapCallback=function($){var Z=x;return function(){var O=x;x=Z;try{return $.apply(this,arguments)}finally{x=O}}}})(uu)),uu}var Fh;function yx(){return Fh||(Fh=1,au.exports=gx()),au.exports}/**
32
+ * @license React
33
+ * react-dom.production.min.js
34
+ *
35
+ * Copyright (c) Facebook, Inc. and its affiliates.
36
+ *
37
+ * This source code is licensed under the MIT license found in the
38
+ * LICENSE file in the root directory of this source tree.
39
+ */var Bh;function vx(){if(Bh)return At;Bh=1;var t=cc(),r=yx();function i(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,s=1;s<arguments.length;s++)n+="&args[]="+encodeURIComponent(arguments[s]);return"Minified React error #"+e+"; visit "+n+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var o=new Set,l={};function c(e,n){u(e,n),u(e+"Capture",n)}function u(e,n){for(l[e]=n,e=0;e<n.length;e++)o.add(n[e])}var f=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),p=Object.prototype.hasOwnProperty,m=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,g={},y={};function x(e){return p.call(y,e)?!0:p.call(g,e)?!1:m.test(e)?y[e]=!0:(g[e]=!0,!1)}function w(e,n,s,a){if(s!==null&&s.type===0)return!1;switch(typeof n){case"function":case"symbol":return!0;case"boolean":return a?!1:s!==null?!s.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function k(e,n,s,a){if(n===null||typeof n>"u"||w(e,n,s,a))return!0;if(a)return!1;if(s!==null)switch(s.type){case 3:return!n;case 4:return n===!1;case 5:return isNaN(n);case 6:return isNaN(n)||1>n}return!1}function C(e,n,s,a,d,h,v){this.acceptsBooleans=n===2||n===3||n===4,this.attributeName=a,this.attributeNamespace=d,this.mustUseProperty=s,this.propertyName=e,this.type=n,this.sanitizeURL=h,this.removeEmptyString=v}var E={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){E[e]=new C(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var n=e[0];E[n]=new C(n,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){E[e]=new C(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){E[e]=new C(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){E[e]=new C(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){E[e]=new C(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){E[e]=new C(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){E[e]=new C(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){E[e]=new C(e,5,!1,e.toLowerCase(),null,!1,!1)});var M=/[\-:]([a-z])/g;function L(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var n=e.replace(M,L);E[n]=new C(n,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var n=e.replace(M,L);E[n]=new C(n,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var n=e.replace(M,L);E[n]=new C(n,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){E[e]=new C(e,1,!1,e.toLowerCase(),null,!1,!1)}),E.xlinkHref=new C("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){E[e]=new C(e,1,!1,e.toLowerCase(),null,!0,!0)});function I(e,n,s,a){var d=E.hasOwnProperty(n)?E[n]:null;(d!==null?d.type!==0:a||!(2<n.length)||n[0]!=="o"&&n[0]!=="O"||n[1]!=="n"&&n[1]!=="N")&&(k(n,s,d,a)&&(s=null),a||d===null?x(n)&&(s===null?e.removeAttribute(n):e.setAttribute(n,""+s)):d.mustUseProperty?e[d.propertyName]=s===null?d.type===3?!1:"":s:(n=d.attributeName,a=d.attributeNamespace,s===null?e.removeAttribute(n):(d=d.type,s=d===3||d===4&&s===!0?"":""+s,a?e.setAttributeNS(a,n,s):e.setAttribute(n,s))))}var D=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,U=Symbol.for("react.element"),Y=Symbol.for("react.portal"),N=Symbol.for("react.fragment"),j=Symbol.for("react.strict_mode"),W=Symbol.for("react.profiler"),ee=Symbol.for("react.provider"),de=Symbol.for("react.context"),Q=Symbol.for("react.forward_ref"),oe=Symbol.for("react.suspense"),fe=Symbol.for("react.suspense_list"),pe=Symbol.for("react.memo"),Te=Symbol.for("react.lazy"),q=Symbol.for("react.offscreen"),$=Symbol.iterator;function Z(e){return e===null||typeof e!="object"?null:(e=$&&e[$]||e["@@iterator"],typeof e=="function"?e:null)}var O=Object.assign,A;function B(e){if(A===void 0)try{throw Error()}catch(s){var n=s.stack.trim().match(/\n( *(at )?)/);A=n&&n[1]||""}return`
40
+ `+A+e}var xe=!1;function he(e,n){if(!e||xe)return"";xe=!0;var s=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(n)if(n=function(){throw Error()},Object.defineProperty(n.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(n,[])}catch(V){var a=V}Reflect.construct(e,[],n)}else{try{n.call()}catch(V){a=V}e.call(n.prototype)}else{try{throw Error()}catch(V){a=V}e()}}catch(V){if(V&&a&&typeof V.stack=="string"){for(var d=V.stack.split(`
41
+ `),h=a.stack.split(`
42
+ `),v=d.length-1,T=h.length-1;1<=v&&0<=T&&d[v]!==h[T];)T--;for(;1<=v&&0<=T;v--,T--)if(d[v]!==h[T]){if(v!==1||T!==1)do if(v--,T--,0>T||d[v]!==h[T]){var b=`
43
+ `+d[v].replace(" at new "," at ");return e.displayName&&b.includes("<anonymous>")&&(b=b.replace("<anonymous>",e.displayName)),b}while(1<=v&&0<=T);break}}}finally{xe=!1,Error.prepareStackTrace=s}return(e=e?e.displayName||e.name:"")?B(e):""}function ae(e){switch(e.tag){case 5:return B(e.type);case 16:return B("Lazy");case 13:return B("Suspense");case 19:return B("SuspenseList");case 0:case 2:case 15:return e=he(e.type,!1),e;case 11:return e=he(e.type.render,!1),e;case 1:return e=he(e.type,!0),e;default:return""}}function le(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case N:return"Fragment";case Y:return"Portal";case W:return"Profiler";case j:return"StrictMode";case oe:return"Suspense";case fe:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case de:return(e.displayName||"Context")+".Consumer";case ee:return(e._context.displayName||"Context")+".Provider";case Q:var n=e.render;return e=e.displayName,e||(e=n.displayName||n.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case pe:return n=e.displayName||null,n!==null?n:le(e.type)||"Memo";case Te:n=e._payload,e=e._init;try{return le(e(n))}catch{}}return null}function we(e){var n=e.type;switch(e.tag){case 24:return"Cache";case 9:return(n.displayName||"Context")+".Consumer";case 10:return(n._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=n.render,e=e.displayName||e.name||"",n.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return n;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return le(n);case 8:return n===j?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n}return null}function ke(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function ye(e){var n=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function Ve(e){var n=ye(e)?"checked":"value",s=Object.getOwnPropertyDescriptor(e.constructor.prototype,n),a=""+e[n];if(!e.hasOwnProperty(n)&&typeof s<"u"&&typeof s.get=="function"&&typeof s.set=="function"){var d=s.get,h=s.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return d.call(this)},set:function(v){a=""+v,h.call(this,v)}}),Object.defineProperty(e,n,{enumerable:s.enumerable}),{getValue:function(){return a},setValue:function(v){a=""+v},stopTracking:function(){e._valueTracker=null,delete e[n]}}}}function ct(e){e._valueTracker||(e._valueTracker=Ve(e))}function Be(e){if(!e)return!1;var n=e._valueTracker;if(!n)return!0;var s=n.getValue(),a="";return e&&(a=ye(e)?e.checked?"true":"false":e.value),e=a,e!==s?(n.setValue(e),!0):!1}function dt(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function ft(e,n){var s=n.checked;return O({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:s??e._wrapperState.initialChecked})}function pn(e,n){var s=n.defaultValue==null?"":n.defaultValue,a=n.checked!=null?n.checked:n.defaultChecked;s=ke(n.value!=null?n.value:s),e._wrapperState={initialChecked:a,initialValue:s,controlled:n.type==="checkbox"||n.type==="radio"?n.checked!=null:n.value!=null}}function kt(e,n){n=n.checked,n!=null&&I(e,"checked",n,!1)}function Mt(e,n){kt(e,n);var s=ke(n.value),a=n.type;if(s!=null)a==="number"?(s===0&&e.value===""||e.value!=s)&&(e.value=""+s):e.value!==""+s&&(e.value=""+s);else if(a==="submit"||a==="reset"){e.removeAttribute("value");return}n.hasOwnProperty("value")?F(e,n.type,s):n.hasOwnProperty("defaultValue")&&F(e,n.type,ke(n.defaultValue)),n.checked==null&&n.defaultChecked!=null&&(e.defaultChecked=!!n.defaultChecked)}function ir(e,n,s){if(n.hasOwnProperty("value")||n.hasOwnProperty("defaultValue")){var a=n.type;if(!(a!=="submit"&&a!=="reset"||n.value!==void 0&&n.value!==null))return;n=""+e._wrapperState.initialValue,s||n===e.value||(e.value=n),e.defaultValue=n}s=e.name,s!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,s!==""&&(e.name=s)}function F(e,n,s){(n!=="number"||dt(e.ownerDocument)!==e)&&(s==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+s&&(e.defaultValue=""+s))}var ve=Array.isArray;function $e(e,n,s,a){if(e=e.options,n){n={};for(var d=0;d<s.length;d++)n["$"+s[d]]=!0;for(s=0;s<e.length;s++)d=n.hasOwnProperty("$"+e[s].value),e[s].selected!==d&&(e[s].selected=d),d&&a&&(e[s].defaultSelected=!0)}else{for(s=""+ke(s),n=null,d=0;d<e.length;d++){if(e[d].value===s){e[d].selected=!0,a&&(e[d].defaultSelected=!0);return}n!==null||e[d].disabled||(n=e[d])}n!==null&&(n.selected=!0)}}function Ye(e,n){if(n.dangerouslySetInnerHTML!=null)throw Error(i(91));return O({},n,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function sr(e,n){var s=n.value;if(s==null){if(s=n.children,n=n.defaultValue,s!=null){if(n!=null)throw Error(i(92));if(ve(s)){if(1<s.length)throw Error(i(93));s=s[0]}n=s}n==null&&(n=""),s=n}e._wrapperState={initialValue:ke(s)}}function zr(e,n){var s=ke(n.value),a=ke(n.defaultValue);s!=null&&(s=""+s,s!==e.value&&(e.value=s),n.defaultValue==null&&e.defaultValue!==s&&(e.defaultValue=s)),a!=null&&(e.defaultValue=""+a)}function Dr(e){var n=e.textContent;n===e._wrapperState.initialValue&&n!==""&&n!==null&&(e.value=n)}function bs(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function xi(e,n){return e==null||e==="http://www.w3.org/1999/xhtml"?bs(n):e==="http://www.w3.org/2000/svg"&&n==="foreignObject"?"http://www.w3.org/1999/xhtml":e}var or,mn=(function(e){return typeof MSApp<"u"&&MSApp.execUnsafeLocalFunction?function(n,s,a,d){MSApp.execUnsafeLocalFunction(function(){return e(n,s,a,d)})}:e})(function(e,n){if(e.namespaceURI!=="http://www.w3.org/2000/svg"||"innerHTML"in e)e.innerHTML=n;else{for(or=or||document.createElement("div"),or.innerHTML="<svg>"+n.valueOf().toString()+"</svg>",n=or.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;n.firstChild;)e.appendChild(n.firstChild)}});function lr(e,n){if(n){var s=e.firstChild;if(s&&s===e.lastChild&&s.nodeType===3){s.nodeValue=n;return}}e.textContent=n}var ar={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Ps=["Webkit","ms","Moz","O"];Object.keys(ar).forEach(function(e){Ps.forEach(function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1),ar[n]=ar[e]})});function tn(e,n,s){return n==null||typeof n=="boolean"||n===""?"":s||typeof n!="number"||n===0||ar.hasOwnProperty(e)&&ar[e]?(""+n).trim():n+"px"}function wi(e,n){e=e.style;for(var s in n)if(n.hasOwnProperty(s)){var a=s.indexOf("--")===0,d=tn(s,n[s],a);s==="float"&&(s="cssFloat"),a?e.setProperty(s,d):e[s]=d}}var Rn=O({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Nr(e,n){if(n){if(Rn[e]&&(n.children!=null||n.dangerouslySetInnerHTML!=null))throw Error(i(137,e));if(n.dangerouslySetInnerHTML!=null){if(n.children!=null)throw Error(i(60));if(typeof n.dangerouslySetInnerHTML!="object"||!("__html"in n.dangerouslySetInnerHTML))throw Error(i(61))}if(n.style!=null&&typeof n.style!="object")throw Error(i(62))}}function Vr(e,n){if(e.indexOf("-")===-1)return typeof n.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Si=null;function ur(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Le=null,Ie=null,Qe=null;function lt(e){if(e=Ui(e)){if(typeof Le!="function")throw Error(i(280));var n=e.stateNode;n&&(n=Qs(n),Le(e.stateNode,e.type,n))}}function cr(e){Ie?Qe?Qe.push(e):Qe=[e]:Ie=e}function ki(){if(Ie){var e=Ie,n=Qe;if(Qe=Ie=null,lt(e),n)for(e=0;e<n.length;e++)lt(n[e])}}function ed(e,n){return e(n)}function td(){}var kl=!1;function nd(e,n,s){if(kl)return e(n,s);kl=!0;try{return ed(e,n,s)}finally{kl=!1,(Ie!==null||Qe!==null)&&(td(),ki())}}function Ti(e,n){var s=e.stateNode;if(s===null)return null;var a=Qs(s);if(a===null)return null;s=a[n];e:switch(n){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(a=!a.disabled)||(e=e.type,a=!(e==="button"||e==="input"||e==="select"||e==="textarea")),e=!a;break e;default:e=!1}if(e)return null;if(s&&typeof s!="function")throw Error(i(231,n,typeof s));return s}var Tl=!1;if(f)try{var Ci={};Object.defineProperty(Ci,"passive",{get:function(){Tl=!0}}),window.addEventListener("test",Ci,Ci),window.removeEventListener("test",Ci,Ci)}catch{Tl=!1}function yv(e,n,s,a,d,h,v,T,b){var V=Array.prototype.slice.call(arguments,3);try{n.apply(s,V)}catch(K){this.onError(K)}}var Ei=!1,As=null,Ms=!1,Cl=null,vv={onError:function(e){Ei=!0,As=e}};function xv(e,n,s,a,d,h,v,T,b){Ei=!1,As=null,yv.apply(vv,arguments)}function wv(e,n,s,a,d,h,v,T,b){if(xv.apply(this,arguments),Ei){if(Ei){var V=As;Ei=!1,As=null}else throw Error(i(198));Ms||(Ms=!0,Cl=V)}}function dr(e){var n=e,s=e;if(e.alternate)for(;n.return;)n=n.return;else{e=n;do n=e,(n.flags&4098)!==0&&(s=n.return),e=n.return;while(e)}return n.tag===3?s:null}function rd(e){if(e.tag===13){var n=e.memoizedState;if(n===null&&(e=e.alternate,e!==null&&(n=e.memoizedState)),n!==null)return n.dehydrated}return null}function id(e){if(dr(e)!==e)throw Error(i(188))}function Sv(e){var n=e.alternate;if(!n){if(n=dr(e),n===null)throw Error(i(188));return n!==e?null:e}for(var s=e,a=n;;){var d=s.return;if(d===null)break;var h=d.alternate;if(h===null){if(a=d.return,a!==null){s=a;continue}break}if(d.child===h.child){for(h=d.child;h;){if(h===s)return id(d),e;if(h===a)return id(d),n;h=h.sibling}throw Error(i(188))}if(s.return!==a.return)s=d,a=h;else{for(var v=!1,T=d.child;T;){if(T===s){v=!0,s=d,a=h;break}if(T===a){v=!0,a=d,s=h;break}T=T.sibling}if(!v){for(T=h.child;T;){if(T===s){v=!0,s=h,a=d;break}if(T===a){v=!0,a=h,s=d;break}T=T.sibling}if(!v)throw Error(i(189))}}if(s.alternate!==a)throw Error(i(190))}if(s.tag!==3)throw Error(i(188));return s.stateNode.current===s?e:n}function sd(e){return e=Sv(e),e!==null?od(e):null}function od(e){if(e.tag===5||e.tag===6)return e;for(e=e.child;e!==null;){var n=od(e);if(n!==null)return n;e=e.sibling}return null}var ld=r.unstable_scheduleCallback,ad=r.unstable_cancelCallback,kv=r.unstable_shouldYield,Tv=r.unstable_requestPaint,He=r.unstable_now,Cv=r.unstable_getCurrentPriorityLevel,El=r.unstable_ImmediatePriority,ud=r.unstable_UserBlockingPriority,Rs=r.unstable_NormalPriority,Ev=r.unstable_LowPriority,cd=r.unstable_IdlePriority,js=null,nn=null;function bv(e){if(nn&&typeof nn.onCommitFiberRoot=="function")try{nn.onCommitFiberRoot(js,e,void 0,(e.current.flags&128)===128)}catch{}}var Wt=Math.clz32?Math.clz32:Mv,Pv=Math.log,Av=Math.LN2;function Mv(e){return e>>>=0,e===0?32:31-(Pv(e)/Av|0)|0}var Ls=64,_s=4194304;function bi(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Is(e,n){var s=e.pendingLanes;if(s===0)return 0;var a=0,d=e.suspendedLanes,h=e.pingedLanes,v=s&268435455;if(v!==0){var T=v&~d;T!==0?a=bi(T):(h&=v,h!==0&&(a=bi(h)))}else v=s&~d,v!==0?a=bi(v):h!==0&&(a=bi(h));if(a===0)return 0;if(n!==0&&n!==a&&(n&d)===0&&(d=a&-a,h=n&-n,d>=h||d===16&&(h&4194240)!==0))return n;if((a&4)!==0&&(a|=s&16),n=e.entangledLanes,n!==0)for(e=e.entanglements,n&=a;0<n;)s=31-Wt(n),d=1<<s,a|=e[s],n&=~d;return a}function Rv(e,n){switch(e){case 1:case 2:case 4:return n+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return n+5e3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function jv(e,n){for(var s=e.suspendedLanes,a=e.pingedLanes,d=e.expirationTimes,h=e.pendingLanes;0<h;){var v=31-Wt(h),T=1<<v,b=d[v];b===-1?((T&s)===0||(T&a)!==0)&&(d[v]=Rv(T,n)):b<=n&&(e.expiredLanes|=T),h&=~T}}function bl(e){return e=e.pendingLanes&-1073741825,e!==0?e:e&1073741824?1073741824:0}function dd(){var e=Ls;return Ls<<=1,(Ls&4194240)===0&&(Ls=64),e}function Pl(e){for(var n=[],s=0;31>s;s++)n.push(e);return n}function Pi(e,n,s){e.pendingLanes|=n,n!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,n=31-Wt(n),e[n]=s}function Lv(e,n){var s=e.pendingLanes&~n;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=n,e.mutableReadLanes&=n,e.entangledLanes&=n,n=e.entanglements;var a=e.eventTimes;for(e=e.expirationTimes;0<s;){var d=31-Wt(s),h=1<<d;n[d]=0,a[d]=-1,e[d]=-1,s&=~h}}function Al(e,n){var s=e.entangledLanes|=n;for(e=e.entanglements;s;){var a=31-Wt(s),d=1<<a;d&n|e[a]&n&&(e[a]|=n),s&=~d}}var Re=0;function fd(e){return e&=-e,1<e?4<e?(e&268435455)!==0?16:536870912:4:1}var hd,Ml,pd,md,gd,Rl=!1,zs=[],jn=null,Ln=null,_n=null,Ai=new Map,Mi=new Map,In=[],_v="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function yd(e,n){switch(e){case"focusin":case"focusout":jn=null;break;case"dragenter":case"dragleave":Ln=null;break;case"mouseover":case"mouseout":_n=null;break;case"pointerover":case"pointerout":Ai.delete(n.pointerId);break;case"gotpointercapture":case"lostpointercapture":Mi.delete(n.pointerId)}}function Ri(e,n,s,a,d,h){return e===null||e.nativeEvent!==h?(e={blockedOn:n,domEventName:s,eventSystemFlags:a,nativeEvent:h,targetContainers:[d]},n!==null&&(n=Ui(n),n!==null&&Ml(n)),e):(e.eventSystemFlags|=a,n=e.targetContainers,d!==null&&n.indexOf(d)===-1&&n.push(d),e)}function Iv(e,n,s,a,d){switch(n){case"focusin":return jn=Ri(jn,e,n,s,a,d),!0;case"dragenter":return Ln=Ri(Ln,e,n,s,a,d),!0;case"mouseover":return _n=Ri(_n,e,n,s,a,d),!0;case"pointerover":var h=d.pointerId;return Ai.set(h,Ri(Ai.get(h)||null,e,n,s,a,d)),!0;case"gotpointercapture":return h=d.pointerId,Mi.set(h,Ri(Mi.get(h)||null,e,n,s,a,d)),!0}return!1}function vd(e){var n=fr(e.target);if(n!==null){var s=dr(n);if(s!==null){if(n=s.tag,n===13){if(n=rd(s),n!==null){e.blockedOn=n,gd(e.priority,function(){pd(s)});return}}else if(n===3&&s.stateNode.current.memoizedState.isDehydrated){e.blockedOn=s.tag===3?s.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Ds(e){if(e.blockedOn!==null)return!1;for(var n=e.targetContainers;0<n.length;){var s=Ll(e.domEventName,e.eventSystemFlags,n[0],e.nativeEvent);if(s===null){s=e.nativeEvent;var a=new s.constructor(s.type,s);Si=a,s.target.dispatchEvent(a),Si=null}else return n=Ui(s),n!==null&&Ml(n),e.blockedOn=s,!1;n.shift()}return!0}function xd(e,n,s){Ds(e)&&s.delete(n)}function zv(){Rl=!1,jn!==null&&Ds(jn)&&(jn=null),Ln!==null&&Ds(Ln)&&(Ln=null),_n!==null&&Ds(_n)&&(_n=null),Ai.forEach(xd),Mi.forEach(xd)}function ji(e,n){e.blockedOn===n&&(e.blockedOn=null,Rl||(Rl=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,zv)))}function Li(e){function n(d){return ji(d,e)}if(0<zs.length){ji(zs[0],e);for(var s=1;s<zs.length;s++){var a=zs[s];a.blockedOn===e&&(a.blockedOn=null)}}for(jn!==null&&ji(jn,e),Ln!==null&&ji(Ln,e),_n!==null&&ji(_n,e),Ai.forEach(n),Mi.forEach(n),s=0;s<In.length;s++)a=In[s],a.blockedOn===e&&(a.blockedOn=null);for(;0<In.length&&(s=In[0],s.blockedOn===null);)vd(s),s.blockedOn===null&&In.shift()}var Or=D.ReactCurrentBatchConfig,Ns=!0;function Dv(e,n,s,a){var d=Re,h=Or.transition;Or.transition=null;try{Re=1,jl(e,n,s,a)}finally{Re=d,Or.transition=h}}function Nv(e,n,s,a){var d=Re,h=Or.transition;Or.transition=null;try{Re=4,jl(e,n,s,a)}finally{Re=d,Or.transition=h}}function jl(e,n,s,a){if(Ns){var d=Ll(e,n,s,a);if(d===null)Yl(e,n,a,Vs,s),yd(e,a);else if(Iv(d,e,n,s,a))a.stopPropagation();else if(yd(e,a),n&4&&-1<_v.indexOf(e)){for(;d!==null;){var h=Ui(d);if(h!==null&&hd(h),h=Ll(e,n,s,a),h===null&&Yl(e,n,a,Vs,s),h===d)break;d=h}d!==null&&a.stopPropagation()}else Yl(e,n,a,null,s)}}var Vs=null;function Ll(e,n,s,a){if(Vs=null,e=ur(a),e=fr(e),e!==null)if(n=dr(e),n===null)e=null;else if(s=n.tag,s===13){if(e=rd(n),e!==null)return e;e=null}else if(s===3){if(n.stateNode.current.memoizedState.isDehydrated)return n.tag===3?n.stateNode.containerInfo:null;e=null}else n!==e&&(e=null);return Vs=e,null}function wd(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(Cv()){case El:return 1;case ud:return 4;case Rs:case Ev:return 16;case cd:return 536870912;default:return 16}default:return 16}}var zn=null,_l=null,Os=null;function Sd(){if(Os)return Os;var e,n=_l,s=n.length,a,d="value"in zn?zn.value:zn.textContent,h=d.length;for(e=0;e<s&&n[e]===d[e];e++);var v=s-e;for(a=1;a<=v&&n[s-a]===d[h-a];a++);return Os=d.slice(e,1<a?1-a:void 0)}function Fs(e){var n=e.keyCode;return"charCode"in e?(e=e.charCode,e===0&&n===13&&(e=13)):e=n,e===10&&(e=13),32<=e||e===13?e:0}function Bs(){return!0}function kd(){return!1}function Rt(e){function n(s,a,d,h,v){this._reactName=s,this._targetInst=d,this.type=a,this.nativeEvent=h,this.target=v,this.currentTarget=null;for(var T in e)e.hasOwnProperty(T)&&(s=e[T],this[T]=s?s(h):h[T]);return this.isDefaultPrevented=(h.defaultPrevented!=null?h.defaultPrevented:h.returnValue===!1)?Bs:kd,this.isPropagationStopped=kd,this}return O(n.prototype,{preventDefault:function(){this.defaultPrevented=!0;var s=this.nativeEvent;s&&(s.preventDefault?s.preventDefault():typeof s.returnValue!="unknown"&&(s.returnValue=!1),this.isDefaultPrevented=Bs)},stopPropagation:function(){var s=this.nativeEvent;s&&(s.stopPropagation?s.stopPropagation():typeof s.cancelBubble!="unknown"&&(s.cancelBubble=!0),this.isPropagationStopped=Bs)},persist:function(){},isPersistent:Bs}),n}var Fr={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Il=Rt(Fr),_i=O({},Fr,{view:0,detail:0}),Vv=Rt(_i),zl,Dl,Ii,$s=O({},_i,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Vl,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==Ii&&(Ii&&e.type==="mousemove"?(zl=e.screenX-Ii.screenX,Dl=e.screenY-Ii.screenY):Dl=zl=0,Ii=e),zl)},movementY:function(e){return"movementY"in e?e.movementY:Dl}}),Td=Rt($s),Ov=O({},$s,{dataTransfer:0}),Fv=Rt(Ov),Bv=O({},_i,{relatedTarget:0}),Nl=Rt(Bv),$v=O({},Fr,{animationName:0,elapsedTime:0,pseudoElement:0}),Wv=Rt($v),Uv=O({},Fr,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),Hv=Rt(Uv),Kv=O({},Fr,{data:0}),Cd=Rt(Kv),Gv={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Xv={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Yv={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Qv(e){var n=this.nativeEvent;return n.getModifierState?n.getModifierState(e):(e=Yv[e])?!!n[e]:!1}function Vl(){return Qv}var Zv=O({},_i,{key:function(e){if(e.key){var n=Gv[e.key]||e.key;if(n!=="Unidentified")return n}return e.type==="keypress"?(e=Fs(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?Xv[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Vl,charCode:function(e){return e.type==="keypress"?Fs(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?Fs(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),qv=Rt(Zv),Jv=O({},$s,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Ed=Rt(Jv),e0=O({},_i,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Vl}),t0=Rt(e0),n0=O({},Fr,{propertyName:0,elapsedTime:0,pseudoElement:0}),r0=Rt(n0),i0=O({},$s,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),s0=Rt(i0),o0=[9,13,27,32],Ol=f&&"CompositionEvent"in window,zi=null;f&&"documentMode"in document&&(zi=document.documentMode);var l0=f&&"TextEvent"in window&&!zi,bd=f&&(!Ol||zi&&8<zi&&11>=zi),Pd=" ",Ad=!1;function Md(e,n){switch(e){case"keyup":return o0.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Rd(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Br=!1;function a0(e,n){switch(e){case"compositionend":return Rd(n);case"keypress":return n.which!==32?null:(Ad=!0,Pd);case"textInput":return e=n.data,e===Pd&&Ad?null:e;default:return null}}function u0(e,n){if(Br)return e==="compositionend"||!Ol&&Md(e,n)?(e=Sd(),Os=_l=zn=null,Br=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(n.ctrlKey||n.altKey||n.metaKey)||n.ctrlKey&&n.altKey){if(n.char&&1<n.char.length)return n.char;if(n.which)return String.fromCharCode(n.which)}return null;case"compositionend":return bd&&n.locale!=="ko"?null:n.data;default:return null}}var c0={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function jd(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n==="input"?!!c0[e.type]:n==="textarea"}function Ld(e,n,s,a){cr(a),n=Gs(n,"onChange"),0<n.length&&(s=new Il("onChange","change",null,s,a),e.push({event:s,listeners:n}))}var Di=null,Ni=null;function d0(e){Qd(e,0)}function Ws(e){var n=Kr(e);if(Be(n))return e}function f0(e,n){if(e==="change")return n}var _d=!1;if(f){var Fl;if(f){var Bl="oninput"in document;if(!Bl){var Id=document.createElement("div");Id.setAttribute("oninput","return;"),Bl=typeof Id.oninput=="function"}Fl=Bl}else Fl=!1;_d=Fl&&(!document.documentMode||9<document.documentMode)}function zd(){Di&&(Di.detachEvent("onpropertychange",Dd),Ni=Di=null)}function Dd(e){if(e.propertyName==="value"&&Ws(Ni)){var n=[];Ld(n,Ni,e,ur(e)),nd(d0,n)}}function h0(e,n,s){e==="focusin"?(zd(),Di=n,Ni=s,Di.attachEvent("onpropertychange",Dd)):e==="focusout"&&zd()}function p0(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return Ws(Ni)}function m0(e,n){if(e==="click")return Ws(n)}function g0(e,n){if(e==="input"||e==="change")return Ws(n)}function y0(e,n){return e===n&&(e!==0||1/e===1/n)||e!==e&&n!==n}var Ut=typeof Object.is=="function"?Object.is:y0;function Vi(e,n){if(Ut(e,n))return!0;if(typeof e!="object"||e===null||typeof n!="object"||n===null)return!1;var s=Object.keys(e),a=Object.keys(n);if(s.length!==a.length)return!1;for(a=0;a<s.length;a++){var d=s[a];if(!p.call(n,d)||!Ut(e[d],n[d]))return!1}return!0}function Nd(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Vd(e,n){var s=Nd(e);e=0;for(var a;s;){if(s.nodeType===3){if(a=e+s.textContent.length,e<=n&&a>=n)return{node:s,offset:n-e};e=a}e:{for(;s;){if(s.nextSibling){s=s.nextSibling;break e}s=s.parentNode}s=void 0}s=Nd(s)}}function Od(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?Od(e,n.parentNode):"contains"in e?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function Fd(){for(var e=window,n=dt();n instanceof e.HTMLIFrameElement;){try{var s=typeof n.contentWindow.location.href=="string"}catch{s=!1}if(s)e=n.contentWindow;else break;n=dt(e.document)}return n}function $l(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&(n==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||n==="textarea"||e.contentEditable==="true")}function v0(e){var n=Fd(),s=e.focusedElem,a=e.selectionRange;if(n!==s&&s&&s.ownerDocument&&Od(s.ownerDocument.documentElement,s)){if(a!==null&&$l(s)){if(n=a.start,e=a.end,e===void 0&&(e=n),"selectionStart"in s)s.selectionStart=n,s.selectionEnd=Math.min(e,s.value.length);else if(e=(n=s.ownerDocument||document)&&n.defaultView||window,e.getSelection){e=e.getSelection();var d=s.textContent.length,h=Math.min(a.start,d);a=a.end===void 0?h:Math.min(a.end,d),!e.extend&&h>a&&(d=a,a=h,h=d),d=Vd(s,h);var v=Vd(s,a);d&&v&&(e.rangeCount!==1||e.anchorNode!==d.node||e.anchorOffset!==d.offset||e.focusNode!==v.node||e.focusOffset!==v.offset)&&(n=n.createRange(),n.setStart(d.node,d.offset),e.removeAllRanges(),h>a?(e.addRange(n),e.extend(v.node,v.offset)):(n.setEnd(v.node,v.offset),e.addRange(n)))}}for(n=[],e=s;e=e.parentNode;)e.nodeType===1&&n.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof s.focus=="function"&&s.focus(),s=0;s<n.length;s++)e=n[s],e.element.scrollLeft=e.left,e.element.scrollTop=e.top}}var x0=f&&"documentMode"in document&&11>=document.documentMode,$r=null,Wl=null,Oi=null,Ul=!1;function Bd(e,n,s){var a=s.window===s?s.document:s.nodeType===9?s:s.ownerDocument;Ul||$r==null||$r!==dt(a)||(a=$r,"selectionStart"in a&&$l(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Oi&&Vi(Oi,a)||(Oi=a,a=Gs(Wl,"onSelect"),0<a.length&&(n=new Il("onSelect","select",null,n,s),e.push({event:n,listeners:a}),n.target=$r)))}function Us(e,n){var s={};return s[e.toLowerCase()]=n.toLowerCase(),s["Webkit"+e]="webkit"+n,s["Moz"+e]="moz"+n,s}var Wr={animationend:Us("Animation","AnimationEnd"),animationiteration:Us("Animation","AnimationIteration"),animationstart:Us("Animation","AnimationStart"),transitionend:Us("Transition","TransitionEnd")},Hl={},$d={};f&&($d=document.createElement("div").style,"AnimationEvent"in window||(delete Wr.animationend.animation,delete Wr.animationiteration.animation,delete Wr.animationstart.animation),"TransitionEvent"in window||delete Wr.transitionend.transition);function Hs(e){if(Hl[e])return Hl[e];if(!Wr[e])return e;var n=Wr[e],s;for(s in n)if(n.hasOwnProperty(s)&&s in $d)return Hl[e]=n[s];return e}var Wd=Hs("animationend"),Ud=Hs("animationiteration"),Hd=Hs("animationstart"),Kd=Hs("transitionend"),Gd=new Map,Xd="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function Dn(e,n){Gd.set(e,n),c(n,[e])}for(var Kl=0;Kl<Xd.length;Kl++){var Gl=Xd[Kl],w0=Gl.toLowerCase(),S0=Gl[0].toUpperCase()+Gl.slice(1);Dn(w0,"on"+S0)}Dn(Wd,"onAnimationEnd"),Dn(Ud,"onAnimationIteration"),Dn(Hd,"onAnimationStart"),Dn("dblclick","onDoubleClick"),Dn("focusin","onFocus"),Dn("focusout","onBlur"),Dn(Kd,"onTransitionEnd"),u("onMouseEnter",["mouseout","mouseover"]),u("onMouseLeave",["mouseout","mouseover"]),u("onPointerEnter",["pointerout","pointerover"]),u("onPointerLeave",["pointerout","pointerover"]),c("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),c("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),c("onBeforeInput",["compositionend","keypress","textInput","paste"]),c("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),c("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),c("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Fi="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),k0=new Set("cancel close invalid load scroll toggle".split(" ").concat(Fi));function Yd(e,n,s){var a=e.type||"unknown-event";e.currentTarget=s,wv(a,n,void 0,e),e.currentTarget=null}function Qd(e,n){n=(n&4)!==0;for(var s=0;s<e.length;s++){var a=e[s],d=a.event;a=a.listeners;e:{var h=void 0;if(n)for(var v=a.length-1;0<=v;v--){var T=a[v],b=T.instance,V=T.currentTarget;if(T=T.listener,b!==h&&d.isPropagationStopped())break e;Yd(d,T,V),h=b}else for(v=0;v<a.length;v++){if(T=a[v],b=T.instance,V=T.currentTarget,T=T.listener,b!==h&&d.isPropagationStopped())break e;Yd(d,T,V),h=b}}}if(Ms)throw e=Cl,Ms=!1,Cl=null,e}function ze(e,n){var s=n[ta];s===void 0&&(s=n[ta]=new Set);var a=e+"__bubble";s.has(a)||(Zd(n,e,2,!1),s.add(a))}function Xl(e,n,s){var a=0;n&&(a|=4),Zd(s,e,a,n)}var Ks="_reactListening"+Math.random().toString(36).slice(2);function Bi(e){if(!e[Ks]){e[Ks]=!0,o.forEach(function(s){s!=="selectionchange"&&(k0.has(s)||Xl(s,!1,e),Xl(s,!0,e))});var n=e.nodeType===9?e:e.ownerDocument;n===null||n[Ks]||(n[Ks]=!0,Xl("selectionchange",!1,n))}}function Zd(e,n,s,a){switch(wd(n)){case 1:var d=Dv;break;case 4:d=Nv;break;default:d=jl}s=d.bind(null,n,s,e),d=void 0,!Tl||n!=="touchstart"&&n!=="touchmove"&&n!=="wheel"||(d=!0),a?d!==void 0?e.addEventListener(n,s,{capture:!0,passive:d}):e.addEventListener(n,s,!0):d!==void 0?e.addEventListener(n,s,{passive:d}):e.addEventListener(n,s,!1)}function Yl(e,n,s,a,d){var h=a;if((n&1)===0&&(n&2)===0&&a!==null)e:for(;;){if(a===null)return;var v=a.tag;if(v===3||v===4){var T=a.stateNode.containerInfo;if(T===d||T.nodeType===8&&T.parentNode===d)break;if(v===4)for(v=a.return;v!==null;){var b=v.tag;if((b===3||b===4)&&(b=v.stateNode.containerInfo,b===d||b.nodeType===8&&b.parentNode===d))return;v=v.return}for(;T!==null;){if(v=fr(T),v===null)return;if(b=v.tag,b===5||b===6){a=h=v;continue e}T=T.parentNode}}a=a.return}nd(function(){var V=h,K=ur(s),G=[];e:{var H=Gd.get(e);if(H!==void 0){var J=Il,ie=e;switch(e){case"keypress":if(Fs(s)===0)break e;case"keydown":case"keyup":J=qv;break;case"focusin":ie="focus",J=Nl;break;case"focusout":ie="blur",J=Nl;break;case"beforeblur":case"afterblur":J=Nl;break;case"click":if(s.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":J=Td;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":J=Fv;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":J=t0;break;case Wd:case Ud:case Hd:J=Wv;break;case Kd:J=r0;break;case"scroll":J=Vv;break;case"wheel":J=s0;break;case"copy":case"cut":case"paste":J=Hv;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":J=Ed}var ue=(n&4)!==0,Ke=!ue&&e==="scroll",_=ue?H!==null?H+"Capture":null:H;ue=[];for(var R=V,z;R!==null;){z=R;var X=z.stateNode;if(z.tag===5&&X!==null&&(z=X,_!==null&&(X=Ti(R,_),X!=null&&ue.push($i(R,X,z)))),Ke)break;R=R.return}0<ue.length&&(H=new J(H,ie,null,s,K),G.push({event:H,listeners:ue}))}}if((n&7)===0){e:{if(H=e==="mouseover"||e==="pointerover",J=e==="mouseout"||e==="pointerout",H&&s!==Si&&(ie=s.relatedTarget||s.fromElement)&&(fr(ie)||ie[gn]))break e;if((J||H)&&(H=K.window===K?K:(H=K.ownerDocument)?H.defaultView||H.parentWindow:window,J?(ie=s.relatedTarget||s.toElement,J=V,ie=ie?fr(ie):null,ie!==null&&(Ke=dr(ie),ie!==Ke||ie.tag!==5&&ie.tag!==6)&&(ie=null)):(J=null,ie=V),J!==ie)){if(ue=Td,X="onMouseLeave",_="onMouseEnter",R="mouse",(e==="pointerout"||e==="pointerover")&&(ue=Ed,X="onPointerLeave",_="onPointerEnter",R="pointer"),Ke=J==null?H:Kr(J),z=ie==null?H:Kr(ie),H=new ue(X,R+"leave",J,s,K),H.target=Ke,H.relatedTarget=z,X=null,fr(K)===V&&(ue=new ue(_,R+"enter",ie,s,K),ue.target=z,ue.relatedTarget=Ke,X=ue),Ke=X,J&&ie)t:{for(ue=J,_=ie,R=0,z=ue;z;z=Ur(z))R++;for(z=0,X=_;X;X=Ur(X))z++;for(;0<R-z;)ue=Ur(ue),R--;for(;0<z-R;)_=Ur(_),z--;for(;R--;){if(ue===_||_!==null&&ue===_.alternate)break t;ue=Ur(ue),_=Ur(_)}ue=null}else ue=null;J!==null&&qd(G,H,J,ue,!1),ie!==null&&Ke!==null&&qd(G,Ke,ie,ue,!0)}}e:{if(H=V?Kr(V):window,J=H.nodeName&&H.nodeName.toLowerCase(),J==="select"||J==="input"&&H.type==="file")var ce=f0;else if(jd(H))if(_d)ce=g0;else{ce=p0;var me=h0}else(J=H.nodeName)&&J.toLowerCase()==="input"&&(H.type==="checkbox"||H.type==="radio")&&(ce=m0);if(ce&&(ce=ce(e,V))){Ld(G,ce,s,K);break e}me&&me(e,H,V),e==="focusout"&&(me=H._wrapperState)&&me.controlled&&H.type==="number"&&F(H,"number",H.value)}switch(me=V?Kr(V):window,e){case"focusin":(jd(me)||me.contentEditable==="true")&&($r=me,Wl=V,Oi=null);break;case"focusout":Oi=Wl=$r=null;break;case"mousedown":Ul=!0;break;case"contextmenu":case"mouseup":case"dragend":Ul=!1,Bd(G,s,K);break;case"selectionchange":if(x0)break;case"keydown":case"keyup":Bd(G,s,K)}var ge;if(Ol)e:{switch(e){case"compositionstart":var Se="onCompositionStart";break e;case"compositionend":Se="onCompositionEnd";break e;case"compositionupdate":Se="onCompositionUpdate";break e}Se=void 0}else Br?Md(e,s)&&(Se="onCompositionEnd"):e==="keydown"&&s.keyCode===229&&(Se="onCompositionStart");Se&&(bd&&s.locale!=="ko"&&(Br||Se!=="onCompositionStart"?Se==="onCompositionEnd"&&Br&&(ge=Sd()):(zn=K,_l="value"in zn?zn.value:zn.textContent,Br=!0)),me=Gs(V,Se),0<me.length&&(Se=new Cd(Se,e,null,s,K),G.push({event:Se,listeners:me}),ge?Se.data=ge:(ge=Rd(s),ge!==null&&(Se.data=ge)))),(ge=l0?a0(e,s):u0(e,s))&&(V=Gs(V,"onBeforeInput"),0<V.length&&(K=new Cd("onBeforeInput","beforeinput",null,s,K),G.push({event:K,listeners:V}),K.data=ge))}Qd(G,n)})}function $i(e,n,s){return{instance:e,listener:n,currentTarget:s}}function Gs(e,n){for(var s=n+"Capture",a=[];e!==null;){var d=e,h=d.stateNode;d.tag===5&&h!==null&&(d=h,h=Ti(e,s),h!=null&&a.unshift($i(e,h,d)),h=Ti(e,n),h!=null&&a.push($i(e,h,d))),e=e.return}return a}function Ur(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5);return e||null}function qd(e,n,s,a,d){for(var h=n._reactName,v=[];s!==null&&s!==a;){var T=s,b=T.alternate,V=T.stateNode;if(b!==null&&b===a)break;T.tag===5&&V!==null&&(T=V,d?(b=Ti(s,h),b!=null&&v.unshift($i(s,b,T))):d||(b=Ti(s,h),b!=null&&v.push($i(s,b,T)))),s=s.return}v.length!==0&&e.push({event:n,listeners:v})}var T0=/\r\n?/g,C0=/\u0000|\uFFFD/g;function Jd(e){return(typeof e=="string"?e:""+e).replace(T0,`
44
+ `).replace(C0,"")}function Xs(e,n,s){if(n=Jd(n),Jd(e)!==n&&s)throw Error(i(425))}function Ys(){}var Ql=null,Zl=null;function ql(e,n){return e==="textarea"||e==="noscript"||typeof n.children=="string"||typeof n.children=="number"||typeof n.dangerouslySetInnerHTML=="object"&&n.dangerouslySetInnerHTML!==null&&n.dangerouslySetInnerHTML.__html!=null}var Jl=typeof setTimeout=="function"?setTimeout:void 0,E0=typeof clearTimeout=="function"?clearTimeout:void 0,ef=typeof Promise=="function"?Promise:void 0,b0=typeof queueMicrotask=="function"?queueMicrotask:typeof ef<"u"?function(e){return ef.resolve(null).then(e).catch(P0)}:Jl;function P0(e){setTimeout(function(){throw e})}function ea(e,n){var s=n,a=0;do{var d=s.nextSibling;if(e.removeChild(s),d&&d.nodeType===8)if(s=d.data,s==="/$"){if(a===0){e.removeChild(d),Li(n);return}a--}else s!=="$"&&s!=="$?"&&s!=="$!"||a++;s=d}while(s);Li(n)}function Nn(e){for(;e!=null;e=e.nextSibling){var n=e.nodeType;if(n===1||n===3)break;if(n===8){if(n=e.data,n==="$"||n==="$!"||n==="$?")break;if(n==="/$")return null}}return e}function tf(e){e=e.previousSibling;for(var n=0;e;){if(e.nodeType===8){var s=e.data;if(s==="$"||s==="$!"||s==="$?"){if(n===0)return e;n--}else s==="/$"&&n++}e=e.previousSibling}return null}var Hr=Math.random().toString(36).slice(2),rn="__reactFiber$"+Hr,Wi="__reactProps$"+Hr,gn="__reactContainer$"+Hr,ta="__reactEvents$"+Hr,A0="__reactListeners$"+Hr,M0="__reactHandles$"+Hr;function fr(e){var n=e[rn];if(n)return n;for(var s=e.parentNode;s;){if(n=s[gn]||s[rn]){if(s=n.alternate,n.child!==null||s!==null&&s.child!==null)for(e=tf(e);e!==null;){if(s=e[rn])return s;e=tf(e)}return n}e=s,s=e.parentNode}return null}function Ui(e){return e=e[rn]||e[gn],!e||e.tag!==5&&e.tag!==6&&e.tag!==13&&e.tag!==3?null:e}function Kr(e){if(e.tag===5||e.tag===6)return e.stateNode;throw Error(i(33))}function Qs(e){return e[Wi]||null}var na=[],Gr=-1;function Vn(e){return{current:e}}function De(e){0>Gr||(e.current=na[Gr],na[Gr]=null,Gr--)}function _e(e,n){Gr++,na[Gr]=e.current,e.current=n}var On={},ht=Vn(On),Tt=Vn(!1),hr=On;function Xr(e,n){var s=e.type.contextTypes;if(!s)return On;var a=e.stateNode;if(a&&a.__reactInternalMemoizedUnmaskedChildContext===n)return a.__reactInternalMemoizedMaskedChildContext;var d={},h;for(h in s)d[h]=n[h];return a&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=n,e.__reactInternalMemoizedMaskedChildContext=d),d}function Ct(e){return e=e.childContextTypes,e!=null}function Zs(){De(Tt),De(ht)}function nf(e,n,s){if(ht.current!==On)throw Error(i(168));_e(ht,n),_e(Tt,s)}function rf(e,n,s){var a=e.stateNode;if(n=n.childContextTypes,typeof a.getChildContext!="function")return s;a=a.getChildContext();for(var d in a)if(!(d in n))throw Error(i(108,we(e)||"Unknown",d));return O({},s,a)}function qs(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||On,hr=ht.current,_e(ht,e),_e(Tt,Tt.current),!0}function sf(e,n,s){var a=e.stateNode;if(!a)throw Error(i(169));s?(e=rf(e,n,hr),a.__reactInternalMemoizedMergedChildContext=e,De(Tt),De(ht),_e(ht,e)):De(Tt),_e(Tt,s)}var yn=null,Js=!1,ra=!1;function of(e){yn===null?yn=[e]:yn.push(e)}function R0(e){Js=!0,of(e)}function Fn(){if(!ra&&yn!==null){ra=!0;var e=0,n=Re;try{var s=yn;for(Re=1;e<s.length;e++){var a=s[e];do a=a(!0);while(a!==null)}yn=null,Js=!1}catch(d){throw yn!==null&&(yn=yn.slice(e+1)),ld(El,Fn),d}finally{Re=n,ra=!1}}return null}var Yr=[],Qr=0,eo=null,to=0,Nt=[],Vt=0,pr=null,vn=1,xn="";function mr(e,n){Yr[Qr++]=to,Yr[Qr++]=eo,eo=e,to=n}function lf(e,n,s){Nt[Vt++]=vn,Nt[Vt++]=xn,Nt[Vt++]=pr,pr=e;var a=vn;e=xn;var d=32-Wt(a)-1;a&=~(1<<d),s+=1;var h=32-Wt(n)+d;if(30<h){var v=d-d%5;h=(a&(1<<v)-1).toString(32),a>>=v,d-=v,vn=1<<32-Wt(n)+d|s<<d|a,xn=h+e}else vn=1<<h|s<<d|a,xn=e}function ia(e){e.return!==null&&(mr(e,1),lf(e,1,0))}function sa(e){for(;e===eo;)eo=Yr[--Qr],Yr[Qr]=null,to=Yr[--Qr],Yr[Qr]=null;for(;e===pr;)pr=Nt[--Vt],Nt[Vt]=null,xn=Nt[--Vt],Nt[Vt]=null,vn=Nt[--Vt],Nt[Vt]=null}var jt=null,Lt=null,Ne=!1,Ht=null;function af(e,n){var s=$t(5,null,null,0);s.elementType="DELETED",s.stateNode=n,s.return=e,n=e.deletions,n===null?(e.deletions=[s],e.flags|=16):n.push(s)}function uf(e,n){switch(e.tag){case 5:var s=e.type;return n=n.nodeType!==1||s.toLowerCase()!==n.nodeName.toLowerCase()?null:n,n!==null?(e.stateNode=n,jt=e,Lt=Nn(n.firstChild),!0):!1;case 6:return n=e.pendingProps===""||n.nodeType!==3?null:n,n!==null?(e.stateNode=n,jt=e,Lt=null,!0):!1;case 13:return n=n.nodeType!==8?null:n,n!==null?(s=pr!==null?{id:vn,overflow:xn}:null,e.memoizedState={dehydrated:n,treeContext:s,retryLane:1073741824},s=$t(18,null,null,0),s.stateNode=n,s.return=e,e.child=s,jt=e,Lt=null,!0):!1;default:return!1}}function oa(e){return(e.mode&1)!==0&&(e.flags&128)===0}function la(e){if(Ne){var n=Lt;if(n){var s=n;if(!uf(e,n)){if(oa(e))throw Error(i(418));n=Nn(s.nextSibling);var a=jt;n&&uf(e,n)?af(a,s):(e.flags=e.flags&-4097|2,Ne=!1,jt=e)}}else{if(oa(e))throw Error(i(418));e.flags=e.flags&-4097|2,Ne=!1,jt=e}}}function cf(e){for(e=e.return;e!==null&&e.tag!==5&&e.tag!==3&&e.tag!==13;)e=e.return;jt=e}function no(e){if(e!==jt)return!1;if(!Ne)return cf(e),Ne=!0,!1;var n;if((n=e.tag!==3)&&!(n=e.tag!==5)&&(n=e.type,n=n!=="head"&&n!=="body"&&!ql(e.type,e.memoizedProps)),n&&(n=Lt)){if(oa(e))throw df(),Error(i(418));for(;n;)af(e,n),n=Nn(n.nextSibling)}if(cf(e),e.tag===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(i(317));e:{for(e=e.nextSibling,n=0;e;){if(e.nodeType===8){var s=e.data;if(s==="/$"){if(n===0){Lt=Nn(e.nextSibling);break e}n--}else s!=="$"&&s!=="$!"&&s!=="$?"||n++}e=e.nextSibling}Lt=null}}else Lt=jt?Nn(e.stateNode.nextSibling):null;return!0}function df(){for(var e=Lt;e;)e=Nn(e.nextSibling)}function Zr(){Lt=jt=null,Ne=!1}function aa(e){Ht===null?Ht=[e]:Ht.push(e)}var j0=D.ReactCurrentBatchConfig;function Hi(e,n,s){if(e=s.ref,e!==null&&typeof e!="function"&&typeof e!="object"){if(s._owner){if(s=s._owner,s){if(s.tag!==1)throw Error(i(309));var a=s.stateNode}if(!a)throw Error(i(147,e));var d=a,h=""+e;return n!==null&&n.ref!==null&&typeof n.ref=="function"&&n.ref._stringRef===h?n.ref:(n=function(v){var T=d.refs;v===null?delete T[h]:T[h]=v},n._stringRef=h,n)}if(typeof e!="string")throw Error(i(284));if(!s._owner)throw Error(i(290,e))}return e}function ro(e,n){throw e=Object.prototype.toString.call(n),Error(i(31,e==="[object Object]"?"object with keys {"+Object.keys(n).join(", ")+"}":e))}function ff(e){var n=e._init;return n(e._payload)}function hf(e){function n(_,R){if(e){var z=_.deletions;z===null?(_.deletions=[R],_.flags|=16):z.push(R)}}function s(_,R){if(!e)return null;for(;R!==null;)n(_,R),R=R.sibling;return null}function a(_,R){for(_=new Map;R!==null;)R.key!==null?_.set(R.key,R):_.set(R.index,R),R=R.sibling;return _}function d(_,R){return _=Xn(_,R),_.index=0,_.sibling=null,_}function h(_,R,z){return _.index=z,e?(z=_.alternate,z!==null?(z=z.index,z<R?(_.flags|=2,R):z):(_.flags|=2,R)):(_.flags|=1048576,R)}function v(_){return e&&_.alternate===null&&(_.flags|=2),_}function T(_,R,z,X){return R===null||R.tag!==6?(R=Ja(z,_.mode,X),R.return=_,R):(R=d(R,z),R.return=_,R)}function b(_,R,z,X){var ce=z.type;return ce===N?K(_,R,z.props.children,X,z.key):R!==null&&(R.elementType===ce||typeof ce=="object"&&ce!==null&&ce.$$typeof===Te&&ff(ce)===R.type)?(X=d(R,z.props),X.ref=Hi(_,R,z),X.return=_,X):(X=Ao(z.type,z.key,z.props,null,_.mode,X),X.ref=Hi(_,R,z),X.return=_,X)}function V(_,R,z,X){return R===null||R.tag!==4||R.stateNode.containerInfo!==z.containerInfo||R.stateNode.implementation!==z.implementation?(R=eu(z,_.mode,X),R.return=_,R):(R=d(R,z.children||[]),R.return=_,R)}function K(_,R,z,X,ce){return R===null||R.tag!==7?(R=Tr(z,_.mode,X,ce),R.return=_,R):(R=d(R,z),R.return=_,R)}function G(_,R,z){if(typeof R=="string"&&R!==""||typeof R=="number")return R=Ja(""+R,_.mode,z),R.return=_,R;if(typeof R=="object"&&R!==null){switch(R.$$typeof){case U:return z=Ao(R.type,R.key,R.props,null,_.mode,z),z.ref=Hi(_,null,R),z.return=_,z;case Y:return R=eu(R,_.mode,z),R.return=_,R;case Te:var X=R._init;return G(_,X(R._payload),z)}if(ve(R)||Z(R))return R=Tr(R,_.mode,z,null),R.return=_,R;ro(_,R)}return null}function H(_,R,z,X){var ce=R!==null?R.key:null;if(typeof z=="string"&&z!==""||typeof z=="number")return ce!==null?null:T(_,R,""+z,X);if(typeof z=="object"&&z!==null){switch(z.$$typeof){case U:return z.key===ce?b(_,R,z,X):null;case Y:return z.key===ce?V(_,R,z,X):null;case Te:return ce=z._init,H(_,R,ce(z._payload),X)}if(ve(z)||Z(z))return ce!==null?null:K(_,R,z,X,null);ro(_,z)}return null}function J(_,R,z,X,ce){if(typeof X=="string"&&X!==""||typeof X=="number")return _=_.get(z)||null,T(R,_,""+X,ce);if(typeof X=="object"&&X!==null){switch(X.$$typeof){case U:return _=_.get(X.key===null?z:X.key)||null,b(R,_,X,ce);case Y:return _=_.get(X.key===null?z:X.key)||null,V(R,_,X,ce);case Te:var me=X._init;return J(_,R,z,me(X._payload),ce)}if(ve(X)||Z(X))return _=_.get(z)||null,K(R,_,X,ce,null);ro(R,X)}return null}function ie(_,R,z,X){for(var ce=null,me=null,ge=R,Se=R=0,ot=null;ge!==null&&Se<z.length;Se++){ge.index>Se?(ot=ge,ge=null):ot=ge.sibling;var Ae=H(_,ge,z[Se],X);if(Ae===null){ge===null&&(ge=ot);break}e&&ge&&Ae.alternate===null&&n(_,ge),R=h(Ae,R,Se),me===null?ce=Ae:me.sibling=Ae,me=Ae,ge=ot}if(Se===z.length)return s(_,ge),Ne&&mr(_,Se),ce;if(ge===null){for(;Se<z.length;Se++)ge=G(_,z[Se],X),ge!==null&&(R=h(ge,R,Se),me===null?ce=ge:me.sibling=ge,me=ge);return Ne&&mr(_,Se),ce}for(ge=a(_,ge);Se<z.length;Se++)ot=J(ge,_,Se,z[Se],X),ot!==null&&(e&&ot.alternate!==null&&ge.delete(ot.key===null?Se:ot.key),R=h(ot,R,Se),me===null?ce=ot:me.sibling=ot,me=ot);return e&&ge.forEach(function(Yn){return n(_,Yn)}),Ne&&mr(_,Se),ce}function ue(_,R,z,X){var ce=Z(z);if(typeof ce!="function")throw Error(i(150));if(z=ce.call(z),z==null)throw Error(i(151));for(var me=ce=null,ge=R,Se=R=0,ot=null,Ae=z.next();ge!==null&&!Ae.done;Se++,Ae=z.next()){ge.index>Se?(ot=ge,ge=null):ot=ge.sibling;var Yn=H(_,ge,Ae.value,X);if(Yn===null){ge===null&&(ge=ot);break}e&&ge&&Yn.alternate===null&&n(_,ge),R=h(Yn,R,Se),me===null?ce=Yn:me.sibling=Yn,me=Yn,ge=ot}if(Ae.done)return s(_,ge),Ne&&mr(_,Se),ce;if(ge===null){for(;!Ae.done;Se++,Ae=z.next())Ae=G(_,Ae.value,X),Ae!==null&&(R=h(Ae,R,Se),me===null?ce=Ae:me.sibling=Ae,me=Ae);return Ne&&mr(_,Se),ce}for(ge=a(_,ge);!Ae.done;Se++,Ae=z.next())Ae=J(ge,_,Se,Ae.value,X),Ae!==null&&(e&&Ae.alternate!==null&&ge.delete(Ae.key===null?Se:Ae.key),R=h(Ae,R,Se),me===null?ce=Ae:me.sibling=Ae,me=Ae);return e&&ge.forEach(function(cx){return n(_,cx)}),Ne&&mr(_,Se),ce}function Ke(_,R,z,X){if(typeof z=="object"&&z!==null&&z.type===N&&z.key===null&&(z=z.props.children),typeof z=="object"&&z!==null){switch(z.$$typeof){case U:e:{for(var ce=z.key,me=R;me!==null;){if(me.key===ce){if(ce=z.type,ce===N){if(me.tag===7){s(_,me.sibling),R=d(me,z.props.children),R.return=_,_=R;break e}}else if(me.elementType===ce||typeof ce=="object"&&ce!==null&&ce.$$typeof===Te&&ff(ce)===me.type){s(_,me.sibling),R=d(me,z.props),R.ref=Hi(_,me,z),R.return=_,_=R;break e}s(_,me);break}else n(_,me);me=me.sibling}z.type===N?(R=Tr(z.props.children,_.mode,X,z.key),R.return=_,_=R):(X=Ao(z.type,z.key,z.props,null,_.mode,X),X.ref=Hi(_,R,z),X.return=_,_=X)}return v(_);case Y:e:{for(me=z.key;R!==null;){if(R.key===me)if(R.tag===4&&R.stateNode.containerInfo===z.containerInfo&&R.stateNode.implementation===z.implementation){s(_,R.sibling),R=d(R,z.children||[]),R.return=_,_=R;break e}else{s(_,R);break}else n(_,R);R=R.sibling}R=eu(z,_.mode,X),R.return=_,_=R}return v(_);case Te:return me=z._init,Ke(_,R,me(z._payload),X)}if(ve(z))return ie(_,R,z,X);if(Z(z))return ue(_,R,z,X);ro(_,z)}return typeof z=="string"&&z!==""||typeof z=="number"?(z=""+z,R!==null&&R.tag===6?(s(_,R.sibling),R=d(R,z),R.return=_,_=R):(s(_,R),R=Ja(z,_.mode,X),R.return=_,_=R),v(_)):s(_,R)}return Ke}var qr=hf(!0),pf=hf(!1),io=Vn(null),so=null,Jr=null,ua=null;function ca(){ua=Jr=so=null}function da(e){var n=io.current;De(io),e._currentValue=n}function fa(e,n,s){for(;e!==null;){var a=e.alternate;if((e.childLanes&n)!==n?(e.childLanes|=n,a!==null&&(a.childLanes|=n)):a!==null&&(a.childLanes&n)!==n&&(a.childLanes|=n),e===s)break;e=e.return}}function ei(e,n){so=e,ua=Jr=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&n)!==0&&(Et=!0),e.firstContext=null)}function Ot(e){var n=e._currentValue;if(ua!==e)if(e={context:e,memoizedValue:n,next:null},Jr===null){if(so===null)throw Error(i(308));Jr=e,so.dependencies={lanes:0,firstContext:e}}else Jr=Jr.next=e;return n}var gr=null;function ha(e){gr===null?gr=[e]:gr.push(e)}function mf(e,n,s,a){var d=n.interleaved;return d===null?(s.next=s,ha(n)):(s.next=d.next,d.next=s),n.interleaved=s,wn(e,a)}function wn(e,n){e.lanes|=n;var s=e.alternate;for(s!==null&&(s.lanes|=n),s=e,e=e.return;e!==null;)e.childLanes|=n,s=e.alternate,s!==null&&(s.childLanes|=n),s=e,e=e.return;return s.tag===3?s.stateNode:null}var Bn=!1;function pa(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function gf(e,n){e=e.updateQueue,n.updateQueue===e&&(n.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Sn(e,n){return{eventTime:e,lane:n,tag:0,payload:null,callback:null,next:null}}function $n(e,n,s){var a=e.updateQueue;if(a===null)return null;if(a=a.shared,(Pe&2)!==0){var d=a.pending;return d===null?n.next=n:(n.next=d.next,d.next=n),a.pending=n,wn(e,s)}return d=a.interleaved,d===null?(n.next=n,ha(a)):(n.next=d.next,d.next=n),a.interleaved=n,wn(e,s)}function oo(e,n,s){if(n=n.updateQueue,n!==null&&(n=n.shared,(s&4194240)!==0)){var a=n.lanes;a&=e.pendingLanes,s|=a,n.lanes=s,Al(e,s)}}function yf(e,n){var s=e.updateQueue,a=e.alternate;if(a!==null&&(a=a.updateQueue,s===a)){var d=null,h=null;if(s=s.firstBaseUpdate,s!==null){do{var v={eventTime:s.eventTime,lane:s.lane,tag:s.tag,payload:s.payload,callback:s.callback,next:null};h===null?d=h=v:h=h.next=v,s=s.next}while(s!==null);h===null?d=h=n:h=h.next=n}else d=h=n;s={baseState:a.baseState,firstBaseUpdate:d,lastBaseUpdate:h,shared:a.shared,effects:a.effects},e.updateQueue=s;return}e=s.lastBaseUpdate,e===null?s.firstBaseUpdate=n:e.next=n,s.lastBaseUpdate=n}function lo(e,n,s,a){var d=e.updateQueue;Bn=!1;var h=d.firstBaseUpdate,v=d.lastBaseUpdate,T=d.shared.pending;if(T!==null){d.shared.pending=null;var b=T,V=b.next;b.next=null,v===null?h=V:v.next=V,v=b;var K=e.alternate;K!==null&&(K=K.updateQueue,T=K.lastBaseUpdate,T!==v&&(T===null?K.firstBaseUpdate=V:T.next=V,K.lastBaseUpdate=b))}if(h!==null){var G=d.baseState;v=0,K=V=b=null,T=h;do{var H=T.lane,J=T.eventTime;if((a&H)===H){K!==null&&(K=K.next={eventTime:J,lane:0,tag:T.tag,payload:T.payload,callback:T.callback,next:null});e:{var ie=e,ue=T;switch(H=n,J=s,ue.tag){case 1:if(ie=ue.payload,typeof ie=="function"){G=ie.call(J,G,H);break e}G=ie;break e;case 3:ie.flags=ie.flags&-65537|128;case 0:if(ie=ue.payload,H=typeof ie=="function"?ie.call(J,G,H):ie,H==null)break e;G=O({},G,H);break e;case 2:Bn=!0}}T.callback!==null&&T.lane!==0&&(e.flags|=64,H=d.effects,H===null?d.effects=[T]:H.push(T))}else J={eventTime:J,lane:H,tag:T.tag,payload:T.payload,callback:T.callback,next:null},K===null?(V=K=J,b=G):K=K.next=J,v|=H;if(T=T.next,T===null){if(T=d.shared.pending,T===null)break;H=T,T=H.next,H.next=null,d.lastBaseUpdate=H,d.shared.pending=null}}while(!0);if(K===null&&(b=G),d.baseState=b,d.firstBaseUpdate=V,d.lastBaseUpdate=K,n=d.shared.interleaved,n!==null){d=n;do v|=d.lane,d=d.next;while(d!==n)}else h===null&&(d.shared.lanes=0);xr|=v,e.lanes=v,e.memoizedState=G}}function vf(e,n,s){if(e=n.effects,n.effects=null,e!==null)for(n=0;n<e.length;n++){var a=e[n],d=a.callback;if(d!==null){if(a.callback=null,a=s,typeof d!="function")throw Error(i(191,d));d.call(a)}}}var Ki={},sn=Vn(Ki),Gi=Vn(Ki),Xi=Vn(Ki);function yr(e){if(e===Ki)throw Error(i(174));return e}function ma(e,n){switch(_e(Xi,n),_e(Gi,e),_e(sn,Ki),e=n.nodeType,e){case 9:case 11:n=(n=n.documentElement)?n.namespaceURI:xi(null,"");break;default:e=e===8?n.parentNode:n,n=e.namespaceURI||null,e=e.tagName,n=xi(n,e)}De(sn),_e(sn,n)}function ti(){De(sn),De(Gi),De(Xi)}function xf(e){yr(Xi.current);var n=yr(sn.current),s=xi(n,e.type);n!==s&&(_e(Gi,e),_e(sn,s))}function ga(e){Gi.current===e&&(De(sn),De(Gi))}var Oe=Vn(0);function ao(e){for(var n=e;n!==null;){if(n.tag===13){var s=n.memoizedState;if(s!==null&&(s=s.dehydrated,s===null||s.data==="$?"||s.data==="$!"))return n}else if(n.tag===19&&n.memoizedProps.revealOrder!==void 0){if((n.flags&128)!==0)return n}else if(n.child!==null){n.child.return=n,n=n.child;continue}if(n===e)break;for(;n.sibling===null;){if(n.return===null||n.return===e)return null;n=n.return}n.sibling.return=n.return,n=n.sibling}return null}var ya=[];function va(){for(var e=0;e<ya.length;e++)ya[e]._workInProgressVersionPrimary=null;ya.length=0}var uo=D.ReactCurrentDispatcher,xa=D.ReactCurrentBatchConfig,vr=0,Fe=null,Ze=null,it=null,co=!1,Yi=!1,Qi=0,L0=0;function pt(){throw Error(i(321))}function wa(e,n){if(n===null)return!1;for(var s=0;s<n.length&&s<e.length;s++)if(!Ut(e[s],n[s]))return!1;return!0}function Sa(e,n,s,a,d,h){if(vr=h,Fe=n,n.memoizedState=null,n.updateQueue=null,n.lanes=0,uo.current=e===null||e.memoizedState===null?D0:N0,e=s(a,d),Yi){h=0;do{if(Yi=!1,Qi=0,25<=h)throw Error(i(301));h+=1,it=Ze=null,n.updateQueue=null,uo.current=V0,e=s(a,d)}while(Yi)}if(uo.current=po,n=Ze!==null&&Ze.next!==null,vr=0,it=Ze=Fe=null,co=!1,n)throw Error(i(300));return e}function ka(){var e=Qi!==0;return Qi=0,e}function on(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return it===null?Fe.memoizedState=it=e:it=it.next=e,it}function Ft(){if(Ze===null){var e=Fe.alternate;e=e!==null?e.memoizedState:null}else e=Ze.next;var n=it===null?Fe.memoizedState:it.next;if(n!==null)it=n,Ze=e;else{if(e===null)throw Error(i(310));Ze=e,e={memoizedState:Ze.memoizedState,baseState:Ze.baseState,baseQueue:Ze.baseQueue,queue:Ze.queue,next:null},it===null?Fe.memoizedState=it=e:it=it.next=e}return it}function Zi(e,n){return typeof n=="function"?n(e):n}function Ta(e){var n=Ft(),s=n.queue;if(s===null)throw Error(i(311));s.lastRenderedReducer=e;var a=Ze,d=a.baseQueue,h=s.pending;if(h!==null){if(d!==null){var v=d.next;d.next=h.next,h.next=v}a.baseQueue=d=h,s.pending=null}if(d!==null){h=d.next,a=a.baseState;var T=v=null,b=null,V=h;do{var K=V.lane;if((vr&K)===K)b!==null&&(b=b.next={lane:0,action:V.action,hasEagerState:V.hasEagerState,eagerState:V.eagerState,next:null}),a=V.hasEagerState?V.eagerState:e(a,V.action);else{var G={lane:K,action:V.action,hasEagerState:V.hasEagerState,eagerState:V.eagerState,next:null};b===null?(T=b=G,v=a):b=b.next=G,Fe.lanes|=K,xr|=K}V=V.next}while(V!==null&&V!==h);b===null?v=a:b.next=T,Ut(a,n.memoizedState)||(Et=!0),n.memoizedState=a,n.baseState=v,n.baseQueue=b,s.lastRenderedState=a}if(e=s.interleaved,e!==null){d=e;do h=d.lane,Fe.lanes|=h,xr|=h,d=d.next;while(d!==e)}else d===null&&(s.lanes=0);return[n.memoizedState,s.dispatch]}function Ca(e){var n=Ft(),s=n.queue;if(s===null)throw Error(i(311));s.lastRenderedReducer=e;var a=s.dispatch,d=s.pending,h=n.memoizedState;if(d!==null){s.pending=null;var v=d=d.next;do h=e(h,v.action),v=v.next;while(v!==d);Ut(h,n.memoizedState)||(Et=!0),n.memoizedState=h,n.baseQueue===null&&(n.baseState=h),s.lastRenderedState=h}return[h,a]}function wf(){}function Sf(e,n){var s=Fe,a=Ft(),d=n(),h=!Ut(a.memoizedState,d);if(h&&(a.memoizedState=d,Et=!0),a=a.queue,Ea(Cf.bind(null,s,a,e),[e]),a.getSnapshot!==n||h||it!==null&&it.memoizedState.tag&1){if(s.flags|=2048,qi(9,Tf.bind(null,s,a,d,n),void 0,null),st===null)throw Error(i(349));(vr&30)!==0||kf(s,n,d)}return d}function kf(e,n,s){e.flags|=16384,e={getSnapshot:n,value:s},n=Fe.updateQueue,n===null?(n={lastEffect:null,stores:null},Fe.updateQueue=n,n.stores=[e]):(s=n.stores,s===null?n.stores=[e]:s.push(e))}function Tf(e,n,s,a){n.value=s,n.getSnapshot=a,Ef(n)&&bf(e)}function Cf(e,n,s){return s(function(){Ef(n)&&bf(e)})}function Ef(e){var n=e.getSnapshot;e=e.value;try{var s=n();return!Ut(e,s)}catch{return!0}}function bf(e){var n=wn(e,1);n!==null&&Yt(n,e,1,-1)}function Pf(e){var n=on();return typeof e=="function"&&(e=e()),n.memoizedState=n.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Zi,lastRenderedState:e},n.queue=e,e=e.dispatch=z0.bind(null,Fe,e),[n.memoizedState,e]}function qi(e,n,s,a){return e={tag:e,create:n,destroy:s,deps:a,next:null},n=Fe.updateQueue,n===null?(n={lastEffect:null,stores:null},Fe.updateQueue=n,n.lastEffect=e.next=e):(s=n.lastEffect,s===null?n.lastEffect=e.next=e:(a=s.next,s.next=e,e.next=a,n.lastEffect=e)),e}function Af(){return Ft().memoizedState}function fo(e,n,s,a){var d=on();Fe.flags|=e,d.memoizedState=qi(1|n,s,void 0,a===void 0?null:a)}function ho(e,n,s,a){var d=Ft();a=a===void 0?null:a;var h=void 0;if(Ze!==null){var v=Ze.memoizedState;if(h=v.destroy,a!==null&&wa(a,v.deps)){d.memoizedState=qi(n,s,h,a);return}}Fe.flags|=e,d.memoizedState=qi(1|n,s,h,a)}function Mf(e,n){return fo(8390656,8,e,n)}function Ea(e,n){return ho(2048,8,e,n)}function Rf(e,n){return ho(4,2,e,n)}function jf(e,n){return ho(4,4,e,n)}function Lf(e,n){if(typeof n=="function")return e=e(),n(e),function(){n(null)};if(n!=null)return e=e(),n.current=e,function(){n.current=null}}function _f(e,n,s){return s=s!=null?s.concat([e]):null,ho(4,4,Lf.bind(null,n,e),s)}function ba(){}function If(e,n){var s=Ft();n=n===void 0?null:n;var a=s.memoizedState;return a!==null&&n!==null&&wa(n,a[1])?a[0]:(s.memoizedState=[e,n],e)}function zf(e,n){var s=Ft();n=n===void 0?null:n;var a=s.memoizedState;return a!==null&&n!==null&&wa(n,a[1])?a[0]:(e=e(),s.memoizedState=[e,n],e)}function Df(e,n,s){return(vr&21)===0?(e.baseState&&(e.baseState=!1,Et=!0),e.memoizedState=s):(Ut(s,n)||(s=dd(),Fe.lanes|=s,xr|=s,e.baseState=!0),n)}function _0(e,n){var s=Re;Re=s!==0&&4>s?s:4,e(!0);var a=xa.transition;xa.transition={};try{e(!1),n()}finally{Re=s,xa.transition=a}}function Nf(){return Ft().memoizedState}function I0(e,n,s){var a=Kn(e);if(s={lane:a,action:s,hasEagerState:!1,eagerState:null,next:null},Vf(e))Of(n,s);else if(s=mf(e,n,s,a),s!==null){var d=wt();Yt(s,e,a,d),Ff(s,n,a)}}function z0(e,n,s){var a=Kn(e),d={lane:a,action:s,hasEagerState:!1,eagerState:null,next:null};if(Vf(e))Of(n,d);else{var h=e.alternate;if(e.lanes===0&&(h===null||h.lanes===0)&&(h=n.lastRenderedReducer,h!==null))try{var v=n.lastRenderedState,T=h(v,s);if(d.hasEagerState=!0,d.eagerState=T,Ut(T,v)){var b=n.interleaved;b===null?(d.next=d,ha(n)):(d.next=b.next,b.next=d),n.interleaved=d;return}}catch{}finally{}s=mf(e,n,d,a),s!==null&&(d=wt(),Yt(s,e,a,d),Ff(s,n,a))}}function Vf(e){var n=e.alternate;return e===Fe||n!==null&&n===Fe}function Of(e,n){Yi=co=!0;var s=e.pending;s===null?n.next=n:(n.next=s.next,s.next=n),e.pending=n}function Ff(e,n,s){if((s&4194240)!==0){var a=n.lanes;a&=e.pendingLanes,s|=a,n.lanes=s,Al(e,s)}}var po={readContext:Ot,useCallback:pt,useContext:pt,useEffect:pt,useImperativeHandle:pt,useInsertionEffect:pt,useLayoutEffect:pt,useMemo:pt,useReducer:pt,useRef:pt,useState:pt,useDebugValue:pt,useDeferredValue:pt,useTransition:pt,useMutableSource:pt,useSyncExternalStore:pt,useId:pt,unstable_isNewReconciler:!1},D0={readContext:Ot,useCallback:function(e,n){return on().memoizedState=[e,n===void 0?null:n],e},useContext:Ot,useEffect:Mf,useImperativeHandle:function(e,n,s){return s=s!=null?s.concat([e]):null,fo(4194308,4,Lf.bind(null,n,e),s)},useLayoutEffect:function(e,n){return fo(4194308,4,e,n)},useInsertionEffect:function(e,n){return fo(4,2,e,n)},useMemo:function(e,n){var s=on();return n=n===void 0?null:n,e=e(),s.memoizedState=[e,n],e},useReducer:function(e,n,s){var a=on();return n=s!==void 0?s(n):n,a.memoizedState=a.baseState=n,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:n},a.queue=e,e=e.dispatch=I0.bind(null,Fe,e),[a.memoizedState,e]},useRef:function(e){var n=on();return e={current:e},n.memoizedState=e},useState:Pf,useDebugValue:ba,useDeferredValue:function(e){return on().memoizedState=e},useTransition:function(){var e=Pf(!1),n=e[0];return e=_0.bind(null,e[1]),on().memoizedState=e,[n,e]},useMutableSource:function(){},useSyncExternalStore:function(e,n,s){var a=Fe,d=on();if(Ne){if(s===void 0)throw Error(i(407));s=s()}else{if(s=n(),st===null)throw Error(i(349));(vr&30)!==0||kf(a,n,s)}d.memoizedState=s;var h={value:s,getSnapshot:n};return d.queue=h,Mf(Cf.bind(null,a,h,e),[e]),a.flags|=2048,qi(9,Tf.bind(null,a,h,s,n),void 0,null),s},useId:function(){var e=on(),n=st.identifierPrefix;if(Ne){var s=xn,a=vn;s=(a&~(1<<32-Wt(a)-1)).toString(32)+s,n=":"+n+"R"+s,s=Qi++,0<s&&(n+="H"+s.toString(32)),n+=":"}else s=L0++,n=":"+n+"r"+s.toString(32)+":";return e.memoizedState=n},unstable_isNewReconciler:!1},N0={readContext:Ot,useCallback:If,useContext:Ot,useEffect:Ea,useImperativeHandle:_f,useInsertionEffect:Rf,useLayoutEffect:jf,useMemo:zf,useReducer:Ta,useRef:Af,useState:function(){return Ta(Zi)},useDebugValue:ba,useDeferredValue:function(e){var n=Ft();return Df(n,Ze.memoizedState,e)},useTransition:function(){var e=Ta(Zi)[0],n=Ft().memoizedState;return[e,n]},useMutableSource:wf,useSyncExternalStore:Sf,useId:Nf,unstable_isNewReconciler:!1},V0={readContext:Ot,useCallback:If,useContext:Ot,useEffect:Ea,useImperativeHandle:_f,useInsertionEffect:Rf,useLayoutEffect:jf,useMemo:zf,useReducer:Ca,useRef:Af,useState:function(){return Ca(Zi)},useDebugValue:ba,useDeferredValue:function(e){var n=Ft();return Ze===null?n.memoizedState=e:Df(n,Ze.memoizedState,e)},useTransition:function(){var e=Ca(Zi)[0],n=Ft().memoizedState;return[e,n]},useMutableSource:wf,useSyncExternalStore:Sf,useId:Nf,unstable_isNewReconciler:!1};function Kt(e,n){if(e&&e.defaultProps){n=O({},n),e=e.defaultProps;for(var s in e)n[s]===void 0&&(n[s]=e[s]);return n}return n}function Pa(e,n,s,a){n=e.memoizedState,s=s(a,n),s=s==null?n:O({},n,s),e.memoizedState=s,e.lanes===0&&(e.updateQueue.baseState=s)}var mo={isMounted:function(e){return(e=e._reactInternals)?dr(e)===e:!1},enqueueSetState:function(e,n,s){e=e._reactInternals;var a=wt(),d=Kn(e),h=Sn(a,d);h.payload=n,s!=null&&(h.callback=s),n=$n(e,h,d),n!==null&&(Yt(n,e,d,a),oo(n,e,d))},enqueueReplaceState:function(e,n,s){e=e._reactInternals;var a=wt(),d=Kn(e),h=Sn(a,d);h.tag=1,h.payload=n,s!=null&&(h.callback=s),n=$n(e,h,d),n!==null&&(Yt(n,e,d,a),oo(n,e,d))},enqueueForceUpdate:function(e,n){e=e._reactInternals;var s=wt(),a=Kn(e),d=Sn(s,a);d.tag=2,n!=null&&(d.callback=n),n=$n(e,d,a),n!==null&&(Yt(n,e,a,s),oo(n,e,a))}};function Bf(e,n,s,a,d,h,v){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(a,h,v):n.prototype&&n.prototype.isPureReactComponent?!Vi(s,a)||!Vi(d,h):!0}function $f(e,n,s){var a=!1,d=On,h=n.contextType;return typeof h=="object"&&h!==null?h=Ot(h):(d=Ct(n)?hr:ht.current,a=n.contextTypes,h=(a=a!=null)?Xr(e,d):On),n=new n(s,h),e.memoizedState=n.state!==null&&n.state!==void 0?n.state:null,n.updater=mo,e.stateNode=n,n._reactInternals=e,a&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=d,e.__reactInternalMemoizedMaskedChildContext=h),n}function Wf(e,n,s,a){e=n.state,typeof n.componentWillReceiveProps=="function"&&n.componentWillReceiveProps(s,a),typeof n.UNSAFE_componentWillReceiveProps=="function"&&n.UNSAFE_componentWillReceiveProps(s,a),n.state!==e&&mo.enqueueReplaceState(n,n.state,null)}function Aa(e,n,s,a){var d=e.stateNode;d.props=s,d.state=e.memoizedState,d.refs={},pa(e);var h=n.contextType;typeof h=="object"&&h!==null?d.context=Ot(h):(h=Ct(n)?hr:ht.current,d.context=Xr(e,h)),d.state=e.memoizedState,h=n.getDerivedStateFromProps,typeof h=="function"&&(Pa(e,n,h,s),d.state=e.memoizedState),typeof n.getDerivedStateFromProps=="function"||typeof d.getSnapshotBeforeUpdate=="function"||typeof d.UNSAFE_componentWillMount!="function"&&typeof d.componentWillMount!="function"||(n=d.state,typeof d.componentWillMount=="function"&&d.componentWillMount(),typeof d.UNSAFE_componentWillMount=="function"&&d.UNSAFE_componentWillMount(),n!==d.state&&mo.enqueueReplaceState(d,d.state,null),lo(e,s,d,a),d.state=e.memoizedState),typeof d.componentDidMount=="function"&&(e.flags|=4194308)}function ni(e,n){try{var s="",a=n;do s+=ae(a),a=a.return;while(a);var d=s}catch(h){d=`
45
+ Error generating stack: `+h.message+`
46
+ `+h.stack}return{value:e,source:n,stack:d,digest:null}}function Ma(e,n,s){return{value:e,source:null,stack:s??null,digest:n??null}}function Ra(e,n){try{console.error(n.value)}catch(s){setTimeout(function(){throw s})}}var O0=typeof WeakMap=="function"?WeakMap:Map;function Uf(e,n,s){s=Sn(-1,s),s.tag=3,s.payload={element:null};var a=n.value;return s.callback=function(){ko||(ko=!0,Ha=a),Ra(e,n)},s}function Hf(e,n,s){s=Sn(-1,s),s.tag=3;var a=e.type.getDerivedStateFromError;if(typeof a=="function"){var d=n.value;s.payload=function(){return a(d)},s.callback=function(){Ra(e,n)}}var h=e.stateNode;return h!==null&&typeof h.componentDidCatch=="function"&&(s.callback=function(){Ra(e,n),typeof a!="function"&&(Un===null?Un=new Set([this]):Un.add(this));var v=n.stack;this.componentDidCatch(n.value,{componentStack:v!==null?v:""})}),s}function Kf(e,n,s){var a=e.pingCache;if(a===null){a=e.pingCache=new O0;var d=new Set;a.set(n,d)}else d=a.get(n),d===void 0&&(d=new Set,a.set(n,d));d.has(s)||(d.add(s),e=J0.bind(null,e,n,s),n.then(e,e))}function Gf(e){do{var n;if((n=e.tag===13)&&(n=e.memoizedState,n=n!==null?n.dehydrated!==null:!0),n)return e;e=e.return}while(e!==null);return null}function Xf(e,n,s,a,d){return(e.mode&1)===0?(e===n?e.flags|=65536:(e.flags|=128,s.flags|=131072,s.flags&=-52805,s.tag===1&&(s.alternate===null?s.tag=17:(n=Sn(-1,1),n.tag=2,$n(s,n,1))),s.lanes|=1),e):(e.flags|=65536,e.lanes=d,e)}var F0=D.ReactCurrentOwner,Et=!1;function xt(e,n,s,a){n.child=e===null?pf(n,null,s,a):qr(n,e.child,s,a)}function Yf(e,n,s,a,d){s=s.render;var h=n.ref;return ei(n,d),a=Sa(e,n,s,a,h,d),s=ka(),e!==null&&!Et?(n.updateQueue=e.updateQueue,n.flags&=-2053,e.lanes&=~d,kn(e,n,d)):(Ne&&s&&ia(n),n.flags|=1,xt(e,n,a,d),n.child)}function Qf(e,n,s,a,d){if(e===null){var h=s.type;return typeof h=="function"&&!qa(h)&&h.defaultProps===void 0&&s.compare===null&&s.defaultProps===void 0?(n.tag=15,n.type=h,Zf(e,n,h,a,d)):(e=Ao(s.type,null,a,n,n.mode,d),e.ref=n.ref,e.return=n,n.child=e)}if(h=e.child,(e.lanes&d)===0){var v=h.memoizedProps;if(s=s.compare,s=s!==null?s:Vi,s(v,a)&&e.ref===n.ref)return kn(e,n,d)}return n.flags|=1,e=Xn(h,a),e.ref=n.ref,e.return=n,n.child=e}function Zf(e,n,s,a,d){if(e!==null){var h=e.memoizedProps;if(Vi(h,a)&&e.ref===n.ref)if(Et=!1,n.pendingProps=a=h,(e.lanes&d)!==0)(e.flags&131072)!==0&&(Et=!0);else return n.lanes=e.lanes,kn(e,n,d)}return ja(e,n,s,a,d)}function qf(e,n,s){var a=n.pendingProps,d=a.children,h=e!==null?e.memoizedState:null;if(a.mode==="hidden")if((n.mode&1)===0)n.memoizedState={baseLanes:0,cachePool:null,transitions:null},_e(ii,_t),_t|=s;else{if((s&1073741824)===0)return e=h!==null?h.baseLanes|s:s,n.lanes=n.childLanes=1073741824,n.memoizedState={baseLanes:e,cachePool:null,transitions:null},n.updateQueue=null,_e(ii,_t),_t|=e,null;n.memoizedState={baseLanes:0,cachePool:null,transitions:null},a=h!==null?h.baseLanes:s,_e(ii,_t),_t|=a}else h!==null?(a=h.baseLanes|s,n.memoizedState=null):a=s,_e(ii,_t),_t|=a;return xt(e,n,d,s),n.child}function Jf(e,n){var s=n.ref;(e===null&&s!==null||e!==null&&e.ref!==s)&&(n.flags|=512,n.flags|=2097152)}function ja(e,n,s,a,d){var h=Ct(s)?hr:ht.current;return h=Xr(n,h),ei(n,d),s=Sa(e,n,s,a,h,d),a=ka(),e!==null&&!Et?(n.updateQueue=e.updateQueue,n.flags&=-2053,e.lanes&=~d,kn(e,n,d)):(Ne&&a&&ia(n),n.flags|=1,xt(e,n,s,d),n.child)}function eh(e,n,s,a,d){if(Ct(s)){var h=!0;qs(n)}else h=!1;if(ei(n,d),n.stateNode===null)yo(e,n),$f(n,s,a),Aa(n,s,a,d),a=!0;else if(e===null){var v=n.stateNode,T=n.memoizedProps;v.props=T;var b=v.context,V=s.contextType;typeof V=="object"&&V!==null?V=Ot(V):(V=Ct(s)?hr:ht.current,V=Xr(n,V));var K=s.getDerivedStateFromProps,G=typeof K=="function"||typeof v.getSnapshotBeforeUpdate=="function";G||typeof v.UNSAFE_componentWillReceiveProps!="function"&&typeof v.componentWillReceiveProps!="function"||(T!==a||b!==V)&&Wf(n,v,a,V),Bn=!1;var H=n.memoizedState;v.state=H,lo(n,a,v,d),b=n.memoizedState,T!==a||H!==b||Tt.current||Bn?(typeof K=="function"&&(Pa(n,s,K,a),b=n.memoizedState),(T=Bn||Bf(n,s,T,a,H,b,V))?(G||typeof v.UNSAFE_componentWillMount!="function"&&typeof v.componentWillMount!="function"||(typeof v.componentWillMount=="function"&&v.componentWillMount(),typeof v.UNSAFE_componentWillMount=="function"&&v.UNSAFE_componentWillMount()),typeof v.componentDidMount=="function"&&(n.flags|=4194308)):(typeof v.componentDidMount=="function"&&(n.flags|=4194308),n.memoizedProps=a,n.memoizedState=b),v.props=a,v.state=b,v.context=V,a=T):(typeof v.componentDidMount=="function"&&(n.flags|=4194308),a=!1)}else{v=n.stateNode,gf(e,n),T=n.memoizedProps,V=n.type===n.elementType?T:Kt(n.type,T),v.props=V,G=n.pendingProps,H=v.context,b=s.contextType,typeof b=="object"&&b!==null?b=Ot(b):(b=Ct(s)?hr:ht.current,b=Xr(n,b));var J=s.getDerivedStateFromProps;(K=typeof J=="function"||typeof v.getSnapshotBeforeUpdate=="function")||typeof v.UNSAFE_componentWillReceiveProps!="function"&&typeof v.componentWillReceiveProps!="function"||(T!==G||H!==b)&&Wf(n,v,a,b),Bn=!1,H=n.memoizedState,v.state=H,lo(n,a,v,d);var ie=n.memoizedState;T!==G||H!==ie||Tt.current||Bn?(typeof J=="function"&&(Pa(n,s,J,a),ie=n.memoizedState),(V=Bn||Bf(n,s,V,a,H,ie,b)||!1)?(K||typeof v.UNSAFE_componentWillUpdate!="function"&&typeof v.componentWillUpdate!="function"||(typeof v.componentWillUpdate=="function"&&v.componentWillUpdate(a,ie,b),typeof v.UNSAFE_componentWillUpdate=="function"&&v.UNSAFE_componentWillUpdate(a,ie,b)),typeof v.componentDidUpdate=="function"&&(n.flags|=4),typeof v.getSnapshotBeforeUpdate=="function"&&(n.flags|=1024)):(typeof v.componentDidUpdate!="function"||T===e.memoizedProps&&H===e.memoizedState||(n.flags|=4),typeof v.getSnapshotBeforeUpdate!="function"||T===e.memoizedProps&&H===e.memoizedState||(n.flags|=1024),n.memoizedProps=a,n.memoizedState=ie),v.props=a,v.state=ie,v.context=b,a=V):(typeof v.componentDidUpdate!="function"||T===e.memoizedProps&&H===e.memoizedState||(n.flags|=4),typeof v.getSnapshotBeforeUpdate!="function"||T===e.memoizedProps&&H===e.memoizedState||(n.flags|=1024),a=!1)}return La(e,n,s,a,h,d)}function La(e,n,s,a,d,h){Jf(e,n);var v=(n.flags&128)!==0;if(!a&&!v)return d&&sf(n,s,!1),kn(e,n,h);a=n.stateNode,F0.current=n;var T=v&&typeof s.getDerivedStateFromError!="function"?null:a.render();return n.flags|=1,e!==null&&v?(n.child=qr(n,e.child,null,h),n.child=qr(n,null,T,h)):xt(e,n,T,h),n.memoizedState=a.state,d&&sf(n,s,!0),n.child}function th(e){var n=e.stateNode;n.pendingContext?nf(e,n.pendingContext,n.pendingContext!==n.context):n.context&&nf(e,n.context,!1),ma(e,n.containerInfo)}function nh(e,n,s,a,d){return Zr(),aa(d),n.flags|=256,xt(e,n,s,a),n.child}var _a={dehydrated:null,treeContext:null,retryLane:0};function Ia(e){return{baseLanes:e,cachePool:null,transitions:null}}function rh(e,n,s){var a=n.pendingProps,d=Oe.current,h=!1,v=(n.flags&128)!==0,T;if((T=v)||(T=e!==null&&e.memoizedState===null?!1:(d&2)!==0),T?(h=!0,n.flags&=-129):(e===null||e.memoizedState!==null)&&(d|=1),_e(Oe,d&1),e===null)return la(n),e=n.memoizedState,e!==null&&(e=e.dehydrated,e!==null)?((n.mode&1)===0?n.lanes=1:e.data==="$!"?n.lanes=8:n.lanes=1073741824,null):(v=a.children,e=a.fallback,h?(a=n.mode,h=n.child,v={mode:"hidden",children:v},(a&1)===0&&h!==null?(h.childLanes=0,h.pendingProps=v):h=Mo(v,a,0,null),e=Tr(e,a,s,null),h.return=n,e.return=n,h.sibling=e,n.child=h,n.child.memoizedState=Ia(s),n.memoizedState=_a,e):za(n,v));if(d=e.memoizedState,d!==null&&(T=d.dehydrated,T!==null))return B0(e,n,v,a,T,d,s);if(h){h=a.fallback,v=n.mode,d=e.child,T=d.sibling;var b={mode:"hidden",children:a.children};return(v&1)===0&&n.child!==d?(a=n.child,a.childLanes=0,a.pendingProps=b,n.deletions=null):(a=Xn(d,b),a.subtreeFlags=d.subtreeFlags&14680064),T!==null?h=Xn(T,h):(h=Tr(h,v,s,null),h.flags|=2),h.return=n,a.return=n,a.sibling=h,n.child=a,a=h,h=n.child,v=e.child.memoizedState,v=v===null?Ia(s):{baseLanes:v.baseLanes|s,cachePool:null,transitions:v.transitions},h.memoizedState=v,h.childLanes=e.childLanes&~s,n.memoizedState=_a,a}return h=e.child,e=h.sibling,a=Xn(h,{mode:"visible",children:a.children}),(n.mode&1)===0&&(a.lanes=s),a.return=n,a.sibling=null,e!==null&&(s=n.deletions,s===null?(n.deletions=[e],n.flags|=16):s.push(e)),n.child=a,n.memoizedState=null,a}function za(e,n){return n=Mo({mode:"visible",children:n},e.mode,0,null),n.return=e,e.child=n}function go(e,n,s,a){return a!==null&&aa(a),qr(n,e.child,null,s),e=za(n,n.pendingProps.children),e.flags|=2,n.memoizedState=null,e}function B0(e,n,s,a,d,h,v){if(s)return n.flags&256?(n.flags&=-257,a=Ma(Error(i(422))),go(e,n,v,a)):n.memoizedState!==null?(n.child=e.child,n.flags|=128,null):(h=a.fallback,d=n.mode,a=Mo({mode:"visible",children:a.children},d,0,null),h=Tr(h,d,v,null),h.flags|=2,a.return=n,h.return=n,a.sibling=h,n.child=a,(n.mode&1)!==0&&qr(n,e.child,null,v),n.child.memoizedState=Ia(v),n.memoizedState=_a,h);if((n.mode&1)===0)return go(e,n,v,null);if(d.data==="$!"){if(a=d.nextSibling&&d.nextSibling.dataset,a)var T=a.dgst;return a=T,h=Error(i(419)),a=Ma(h,a,void 0),go(e,n,v,a)}if(T=(v&e.childLanes)!==0,Et||T){if(a=st,a!==null){switch(v&-v){case 4:d=2;break;case 16:d=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:d=32;break;case 536870912:d=268435456;break;default:d=0}d=(d&(a.suspendedLanes|v))!==0?0:d,d!==0&&d!==h.retryLane&&(h.retryLane=d,wn(e,d),Yt(a,e,d,-1))}return Za(),a=Ma(Error(i(421))),go(e,n,v,a)}return d.data==="$?"?(n.flags|=128,n.child=e.child,n=ex.bind(null,e),d._reactRetry=n,null):(e=h.treeContext,Lt=Nn(d.nextSibling),jt=n,Ne=!0,Ht=null,e!==null&&(Nt[Vt++]=vn,Nt[Vt++]=xn,Nt[Vt++]=pr,vn=e.id,xn=e.overflow,pr=n),n=za(n,a.children),n.flags|=4096,n)}function ih(e,n,s){e.lanes|=n;var a=e.alternate;a!==null&&(a.lanes|=n),fa(e.return,n,s)}function Da(e,n,s,a,d){var h=e.memoizedState;h===null?e.memoizedState={isBackwards:n,rendering:null,renderingStartTime:0,last:a,tail:s,tailMode:d}:(h.isBackwards=n,h.rendering=null,h.renderingStartTime=0,h.last=a,h.tail=s,h.tailMode=d)}function sh(e,n,s){var a=n.pendingProps,d=a.revealOrder,h=a.tail;if(xt(e,n,a.children,s),a=Oe.current,(a&2)!==0)a=a&1|2,n.flags|=128;else{if(e!==null&&(e.flags&128)!==0)e:for(e=n.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&ih(e,s,n);else if(e.tag===19)ih(e,s,n);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===n)break e;for(;e.sibling===null;){if(e.return===null||e.return===n)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}a&=1}if(_e(Oe,a),(n.mode&1)===0)n.memoizedState=null;else switch(d){case"forwards":for(s=n.child,d=null;s!==null;)e=s.alternate,e!==null&&ao(e)===null&&(d=s),s=s.sibling;s=d,s===null?(d=n.child,n.child=null):(d=s.sibling,s.sibling=null),Da(n,!1,d,s,h);break;case"backwards":for(s=null,d=n.child,n.child=null;d!==null;){if(e=d.alternate,e!==null&&ao(e)===null){n.child=d;break}e=d.sibling,d.sibling=s,s=d,d=e}Da(n,!0,s,null,h);break;case"together":Da(n,!1,null,null,void 0);break;default:n.memoizedState=null}return n.child}function yo(e,n){(n.mode&1)===0&&e!==null&&(e.alternate=null,n.alternate=null,n.flags|=2)}function kn(e,n,s){if(e!==null&&(n.dependencies=e.dependencies),xr|=n.lanes,(s&n.childLanes)===0)return null;if(e!==null&&n.child!==e.child)throw Error(i(153));if(n.child!==null){for(e=n.child,s=Xn(e,e.pendingProps),n.child=s,s.return=n;e.sibling!==null;)e=e.sibling,s=s.sibling=Xn(e,e.pendingProps),s.return=n;s.sibling=null}return n.child}function $0(e,n,s){switch(n.tag){case 3:th(n),Zr();break;case 5:xf(n);break;case 1:Ct(n.type)&&qs(n);break;case 4:ma(n,n.stateNode.containerInfo);break;case 10:var a=n.type._context,d=n.memoizedProps.value;_e(io,a._currentValue),a._currentValue=d;break;case 13:if(a=n.memoizedState,a!==null)return a.dehydrated!==null?(_e(Oe,Oe.current&1),n.flags|=128,null):(s&n.child.childLanes)!==0?rh(e,n,s):(_e(Oe,Oe.current&1),e=kn(e,n,s),e!==null?e.sibling:null);_e(Oe,Oe.current&1);break;case 19:if(a=(s&n.childLanes)!==0,(e.flags&128)!==0){if(a)return sh(e,n,s);n.flags|=128}if(d=n.memoizedState,d!==null&&(d.rendering=null,d.tail=null,d.lastEffect=null),_e(Oe,Oe.current),a)break;return null;case 22:case 23:return n.lanes=0,qf(e,n,s)}return kn(e,n,s)}var oh,Na,lh,ah;oh=function(e,n){for(var s=n.child;s!==null;){if(s.tag===5||s.tag===6)e.appendChild(s.stateNode);else if(s.tag!==4&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===n)break;for(;s.sibling===null;){if(s.return===null||s.return===n)return;s=s.return}s.sibling.return=s.return,s=s.sibling}},Na=function(){},lh=function(e,n,s,a){var d=e.memoizedProps;if(d!==a){e=n.stateNode,yr(sn.current);var h=null;switch(s){case"input":d=ft(e,d),a=ft(e,a),h=[];break;case"select":d=O({},d,{value:void 0}),a=O({},a,{value:void 0}),h=[];break;case"textarea":d=Ye(e,d),a=Ye(e,a),h=[];break;default:typeof d.onClick!="function"&&typeof a.onClick=="function"&&(e.onclick=Ys)}Nr(s,a);var v;s=null;for(V in d)if(!a.hasOwnProperty(V)&&d.hasOwnProperty(V)&&d[V]!=null)if(V==="style"){var T=d[V];for(v in T)T.hasOwnProperty(v)&&(s||(s={}),s[v]="")}else V!=="dangerouslySetInnerHTML"&&V!=="children"&&V!=="suppressContentEditableWarning"&&V!=="suppressHydrationWarning"&&V!=="autoFocus"&&(l.hasOwnProperty(V)?h||(h=[]):(h=h||[]).push(V,null));for(V in a){var b=a[V];if(T=d!=null?d[V]:void 0,a.hasOwnProperty(V)&&b!==T&&(b!=null||T!=null))if(V==="style")if(T){for(v in T)!T.hasOwnProperty(v)||b&&b.hasOwnProperty(v)||(s||(s={}),s[v]="");for(v in b)b.hasOwnProperty(v)&&T[v]!==b[v]&&(s||(s={}),s[v]=b[v])}else s||(h||(h=[]),h.push(V,s)),s=b;else V==="dangerouslySetInnerHTML"?(b=b?b.__html:void 0,T=T?T.__html:void 0,b!=null&&T!==b&&(h=h||[]).push(V,b)):V==="children"?typeof b!="string"&&typeof b!="number"||(h=h||[]).push(V,""+b):V!=="suppressContentEditableWarning"&&V!=="suppressHydrationWarning"&&(l.hasOwnProperty(V)?(b!=null&&V==="onScroll"&&ze("scroll",e),h||T===b||(h=[])):(h=h||[]).push(V,b))}s&&(h=h||[]).push("style",s);var V=h;(n.updateQueue=V)&&(n.flags|=4)}},ah=function(e,n,s,a){s!==a&&(n.flags|=4)};function Ji(e,n){if(!Ne)switch(e.tailMode){case"hidden":n=e.tail;for(var s=null;n!==null;)n.alternate!==null&&(s=n),n=n.sibling;s===null?e.tail=null:s.sibling=null;break;case"collapsed":s=e.tail;for(var a=null;s!==null;)s.alternate!==null&&(a=s),s=s.sibling;a===null?n||e.tail===null?e.tail=null:e.tail.sibling=null:a.sibling=null}}function mt(e){var n=e.alternate!==null&&e.alternate.child===e.child,s=0,a=0;if(n)for(var d=e.child;d!==null;)s|=d.lanes|d.childLanes,a|=d.subtreeFlags&14680064,a|=d.flags&14680064,d.return=e,d=d.sibling;else for(d=e.child;d!==null;)s|=d.lanes|d.childLanes,a|=d.subtreeFlags,a|=d.flags,d.return=e,d=d.sibling;return e.subtreeFlags|=a,e.childLanes=s,n}function W0(e,n,s){var a=n.pendingProps;switch(sa(n),n.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return mt(n),null;case 1:return Ct(n.type)&&Zs(),mt(n),null;case 3:return a=n.stateNode,ti(),De(Tt),De(ht),va(),a.pendingContext&&(a.context=a.pendingContext,a.pendingContext=null),(e===null||e.child===null)&&(no(n)?n.flags|=4:e===null||e.memoizedState.isDehydrated&&(n.flags&256)===0||(n.flags|=1024,Ht!==null&&(Xa(Ht),Ht=null))),Na(e,n),mt(n),null;case 5:ga(n);var d=yr(Xi.current);if(s=n.type,e!==null&&n.stateNode!=null)lh(e,n,s,a,d),e.ref!==n.ref&&(n.flags|=512,n.flags|=2097152);else{if(!a){if(n.stateNode===null)throw Error(i(166));return mt(n),null}if(e=yr(sn.current),no(n)){a=n.stateNode,s=n.type;var h=n.memoizedProps;switch(a[rn]=n,a[Wi]=h,e=(n.mode&1)!==0,s){case"dialog":ze("cancel",a),ze("close",a);break;case"iframe":case"object":case"embed":ze("load",a);break;case"video":case"audio":for(d=0;d<Fi.length;d++)ze(Fi[d],a);break;case"source":ze("error",a);break;case"img":case"image":case"link":ze("error",a),ze("load",a);break;case"details":ze("toggle",a);break;case"input":pn(a,h),ze("invalid",a);break;case"select":a._wrapperState={wasMultiple:!!h.multiple},ze("invalid",a);break;case"textarea":sr(a,h),ze("invalid",a)}Nr(s,h),d=null;for(var v in h)if(h.hasOwnProperty(v)){var T=h[v];v==="children"?typeof T=="string"?a.textContent!==T&&(h.suppressHydrationWarning!==!0&&Xs(a.textContent,T,e),d=["children",T]):typeof T=="number"&&a.textContent!==""+T&&(h.suppressHydrationWarning!==!0&&Xs(a.textContent,T,e),d=["children",""+T]):l.hasOwnProperty(v)&&T!=null&&v==="onScroll"&&ze("scroll",a)}switch(s){case"input":ct(a),ir(a,h,!0);break;case"textarea":ct(a),Dr(a);break;case"select":case"option":break;default:typeof h.onClick=="function"&&(a.onclick=Ys)}a=d,n.updateQueue=a,a!==null&&(n.flags|=4)}else{v=d.nodeType===9?d:d.ownerDocument,e==="http://www.w3.org/1999/xhtml"&&(e=bs(s)),e==="http://www.w3.org/1999/xhtml"?s==="script"?(e=v.createElement("div"),e.innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):typeof a.is=="string"?e=v.createElement(s,{is:a.is}):(e=v.createElement(s),s==="select"&&(v=e,a.multiple?v.multiple=!0:a.size&&(v.size=a.size))):e=v.createElementNS(e,s),e[rn]=n,e[Wi]=a,oh(e,n,!1,!1),n.stateNode=e;e:{switch(v=Vr(s,a),s){case"dialog":ze("cancel",e),ze("close",e),d=a;break;case"iframe":case"object":case"embed":ze("load",e),d=a;break;case"video":case"audio":for(d=0;d<Fi.length;d++)ze(Fi[d],e);d=a;break;case"source":ze("error",e),d=a;break;case"img":case"image":case"link":ze("error",e),ze("load",e),d=a;break;case"details":ze("toggle",e),d=a;break;case"input":pn(e,a),d=ft(e,a),ze("invalid",e);break;case"option":d=a;break;case"select":e._wrapperState={wasMultiple:!!a.multiple},d=O({},a,{value:void 0}),ze("invalid",e);break;case"textarea":sr(e,a),d=Ye(e,a),ze("invalid",e);break;default:d=a}Nr(s,d),T=d;for(h in T)if(T.hasOwnProperty(h)){var b=T[h];h==="style"?wi(e,b):h==="dangerouslySetInnerHTML"?(b=b?b.__html:void 0,b!=null&&mn(e,b)):h==="children"?typeof b=="string"?(s!=="textarea"||b!=="")&&lr(e,b):typeof b=="number"&&lr(e,""+b):h!=="suppressContentEditableWarning"&&h!=="suppressHydrationWarning"&&h!=="autoFocus"&&(l.hasOwnProperty(h)?b!=null&&h==="onScroll"&&ze("scroll",e):b!=null&&I(e,h,b,v))}switch(s){case"input":ct(e),ir(e,a,!1);break;case"textarea":ct(e),Dr(e);break;case"option":a.value!=null&&e.setAttribute("value",""+ke(a.value));break;case"select":e.multiple=!!a.multiple,h=a.value,h!=null?$e(e,!!a.multiple,h,!1):a.defaultValue!=null&&$e(e,!!a.multiple,a.defaultValue,!0);break;default:typeof d.onClick=="function"&&(e.onclick=Ys)}switch(s){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break e;case"img":a=!0;break e;default:a=!1}}a&&(n.flags|=4)}n.ref!==null&&(n.flags|=512,n.flags|=2097152)}return mt(n),null;case 6:if(e&&n.stateNode!=null)ah(e,n,e.memoizedProps,a);else{if(typeof a!="string"&&n.stateNode===null)throw Error(i(166));if(s=yr(Xi.current),yr(sn.current),no(n)){if(a=n.stateNode,s=n.memoizedProps,a[rn]=n,(h=a.nodeValue!==s)&&(e=jt,e!==null))switch(e.tag){case 3:Xs(a.nodeValue,s,(e.mode&1)!==0);break;case 5:e.memoizedProps.suppressHydrationWarning!==!0&&Xs(a.nodeValue,s,(e.mode&1)!==0)}h&&(n.flags|=4)}else a=(s.nodeType===9?s:s.ownerDocument).createTextNode(a),a[rn]=n,n.stateNode=a}return mt(n),null;case 13:if(De(Oe),a=n.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(Ne&&Lt!==null&&(n.mode&1)!==0&&(n.flags&128)===0)df(),Zr(),n.flags|=98560,h=!1;else if(h=no(n),a!==null&&a.dehydrated!==null){if(e===null){if(!h)throw Error(i(318));if(h=n.memoizedState,h=h!==null?h.dehydrated:null,!h)throw Error(i(317));h[rn]=n}else Zr(),(n.flags&128)===0&&(n.memoizedState=null),n.flags|=4;mt(n),h=!1}else Ht!==null&&(Xa(Ht),Ht=null),h=!0;if(!h)return n.flags&65536?n:null}return(n.flags&128)!==0?(n.lanes=s,n):(a=a!==null,a!==(e!==null&&e.memoizedState!==null)&&a&&(n.child.flags|=8192,(n.mode&1)!==0&&(e===null||(Oe.current&1)!==0?qe===0&&(qe=3):Za())),n.updateQueue!==null&&(n.flags|=4),mt(n),null);case 4:return ti(),Na(e,n),e===null&&Bi(n.stateNode.containerInfo),mt(n),null;case 10:return da(n.type._context),mt(n),null;case 17:return Ct(n.type)&&Zs(),mt(n),null;case 19:if(De(Oe),h=n.memoizedState,h===null)return mt(n),null;if(a=(n.flags&128)!==0,v=h.rendering,v===null)if(a)Ji(h,!1);else{if(qe!==0||e!==null&&(e.flags&128)!==0)for(e=n.child;e!==null;){if(v=ao(e),v!==null){for(n.flags|=128,Ji(h,!1),a=v.updateQueue,a!==null&&(n.updateQueue=a,n.flags|=4),n.subtreeFlags=0,a=s,s=n.child;s!==null;)h=s,e=a,h.flags&=14680066,v=h.alternate,v===null?(h.childLanes=0,h.lanes=e,h.child=null,h.subtreeFlags=0,h.memoizedProps=null,h.memoizedState=null,h.updateQueue=null,h.dependencies=null,h.stateNode=null):(h.childLanes=v.childLanes,h.lanes=v.lanes,h.child=v.child,h.subtreeFlags=0,h.deletions=null,h.memoizedProps=v.memoizedProps,h.memoizedState=v.memoizedState,h.updateQueue=v.updateQueue,h.type=v.type,e=v.dependencies,h.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext}),s=s.sibling;return _e(Oe,Oe.current&1|2),n.child}e=e.sibling}h.tail!==null&&He()>si&&(n.flags|=128,a=!0,Ji(h,!1),n.lanes=4194304)}else{if(!a)if(e=ao(v),e!==null){if(n.flags|=128,a=!0,s=e.updateQueue,s!==null&&(n.updateQueue=s,n.flags|=4),Ji(h,!0),h.tail===null&&h.tailMode==="hidden"&&!v.alternate&&!Ne)return mt(n),null}else 2*He()-h.renderingStartTime>si&&s!==1073741824&&(n.flags|=128,a=!0,Ji(h,!1),n.lanes=4194304);h.isBackwards?(v.sibling=n.child,n.child=v):(s=h.last,s!==null?s.sibling=v:n.child=v,h.last=v)}return h.tail!==null?(n=h.tail,h.rendering=n,h.tail=n.sibling,h.renderingStartTime=He(),n.sibling=null,s=Oe.current,_e(Oe,a?s&1|2:s&1),n):(mt(n),null);case 22:case 23:return Qa(),a=n.memoizedState!==null,e!==null&&e.memoizedState!==null!==a&&(n.flags|=8192),a&&(n.mode&1)!==0?(_t&1073741824)!==0&&(mt(n),n.subtreeFlags&6&&(n.flags|=8192)):mt(n),null;case 24:return null;case 25:return null}throw Error(i(156,n.tag))}function U0(e,n){switch(sa(n),n.tag){case 1:return Ct(n.type)&&Zs(),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return ti(),De(Tt),De(ht),va(),e=n.flags,(e&65536)!==0&&(e&128)===0?(n.flags=e&-65537|128,n):null;case 5:return ga(n),null;case 13:if(De(Oe),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(i(340));Zr()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return De(Oe),null;case 4:return ti(),null;case 10:return da(n.type._context),null;case 22:case 23:return Qa(),null;case 24:return null;default:return null}}var vo=!1,gt=!1,H0=typeof WeakSet=="function"?WeakSet:Set,ne=null;function ri(e,n){var s=e.ref;if(s!==null)if(typeof s=="function")try{s(null)}catch(a){We(e,n,a)}else s.current=null}function Va(e,n,s){try{s()}catch(a){We(e,n,a)}}var uh=!1;function K0(e,n){if(Ql=Ns,e=Fd(),$l(e)){if("selectionStart"in e)var s={start:e.selectionStart,end:e.selectionEnd};else e:{s=(s=e.ownerDocument)&&s.defaultView||window;var a=s.getSelection&&s.getSelection();if(a&&a.rangeCount!==0){s=a.anchorNode;var d=a.anchorOffset,h=a.focusNode;a=a.focusOffset;try{s.nodeType,h.nodeType}catch{s=null;break e}var v=0,T=-1,b=-1,V=0,K=0,G=e,H=null;t:for(;;){for(var J;G!==s||d!==0&&G.nodeType!==3||(T=v+d),G!==h||a!==0&&G.nodeType!==3||(b=v+a),G.nodeType===3&&(v+=G.nodeValue.length),(J=G.firstChild)!==null;)H=G,G=J;for(;;){if(G===e)break t;if(H===s&&++V===d&&(T=v),H===h&&++K===a&&(b=v),(J=G.nextSibling)!==null)break;G=H,H=G.parentNode}G=J}s=T===-1||b===-1?null:{start:T,end:b}}else s=null}s=s||{start:0,end:0}}else s=null;for(Zl={focusedElem:e,selectionRange:s},Ns=!1,ne=n;ne!==null;)if(n=ne,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,ne=e;else for(;ne!==null;){n=ne;try{var ie=n.alternate;if((n.flags&1024)!==0)switch(n.tag){case 0:case 11:case 15:break;case 1:if(ie!==null){var ue=ie.memoizedProps,Ke=ie.memoizedState,_=n.stateNode,R=_.getSnapshotBeforeUpdate(n.elementType===n.type?ue:Kt(n.type,ue),Ke);_.__reactInternalSnapshotBeforeUpdate=R}break;case 3:var z=n.stateNode.containerInfo;z.nodeType===1?z.textContent="":z.nodeType===9&&z.documentElement&&z.removeChild(z.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(i(163))}}catch(X){We(n,n.return,X)}if(e=n.sibling,e!==null){e.return=n.return,ne=e;break}ne=n.return}return ie=uh,uh=!1,ie}function es(e,n,s){var a=n.updateQueue;if(a=a!==null?a.lastEffect:null,a!==null){var d=a=a.next;do{if((d.tag&e)===e){var h=d.destroy;d.destroy=void 0,h!==void 0&&Va(n,s,h)}d=d.next}while(d!==a)}}function xo(e,n){if(n=n.updateQueue,n=n!==null?n.lastEffect:null,n!==null){var s=n=n.next;do{if((s.tag&e)===e){var a=s.create;s.destroy=a()}s=s.next}while(s!==n)}}function Oa(e){var n=e.ref;if(n!==null){var s=e.stateNode;switch(e.tag){case 5:e=s;break;default:e=s}typeof n=="function"?n(e):n.current=e}}function ch(e){var n=e.alternate;n!==null&&(e.alternate=null,ch(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&(delete n[rn],delete n[Wi],delete n[ta],delete n[A0],delete n[M0])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function dh(e){return e.tag===5||e.tag===3||e.tag===4}function fh(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||dh(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Fa(e,n,s){var a=e.tag;if(a===5||a===6)e=e.stateNode,n?s.nodeType===8?s.parentNode.insertBefore(e,n):s.insertBefore(e,n):(s.nodeType===8?(n=s.parentNode,n.insertBefore(e,s)):(n=s,n.appendChild(e)),s=s._reactRootContainer,s!=null||n.onclick!==null||(n.onclick=Ys));else if(a!==4&&(e=e.child,e!==null))for(Fa(e,n,s),e=e.sibling;e!==null;)Fa(e,n,s),e=e.sibling}function Ba(e,n,s){var a=e.tag;if(a===5||a===6)e=e.stateNode,n?s.insertBefore(e,n):s.appendChild(e);else if(a!==4&&(e=e.child,e!==null))for(Ba(e,n,s),e=e.sibling;e!==null;)Ba(e,n,s),e=e.sibling}var at=null,Gt=!1;function Wn(e,n,s){for(s=s.child;s!==null;)hh(e,n,s),s=s.sibling}function hh(e,n,s){if(nn&&typeof nn.onCommitFiberUnmount=="function")try{nn.onCommitFiberUnmount(js,s)}catch{}switch(s.tag){case 5:gt||ri(s,n);case 6:var a=at,d=Gt;at=null,Wn(e,n,s),at=a,Gt=d,at!==null&&(Gt?(e=at,s=s.stateNode,e.nodeType===8?e.parentNode.removeChild(s):e.removeChild(s)):at.removeChild(s.stateNode));break;case 18:at!==null&&(Gt?(e=at,s=s.stateNode,e.nodeType===8?ea(e.parentNode,s):e.nodeType===1&&ea(e,s),Li(e)):ea(at,s.stateNode));break;case 4:a=at,d=Gt,at=s.stateNode.containerInfo,Gt=!0,Wn(e,n,s),at=a,Gt=d;break;case 0:case 11:case 14:case 15:if(!gt&&(a=s.updateQueue,a!==null&&(a=a.lastEffect,a!==null))){d=a=a.next;do{var h=d,v=h.destroy;h=h.tag,v!==void 0&&((h&2)!==0||(h&4)!==0)&&Va(s,n,v),d=d.next}while(d!==a)}Wn(e,n,s);break;case 1:if(!gt&&(ri(s,n),a=s.stateNode,typeof a.componentWillUnmount=="function"))try{a.props=s.memoizedProps,a.state=s.memoizedState,a.componentWillUnmount()}catch(T){We(s,n,T)}Wn(e,n,s);break;case 21:Wn(e,n,s);break;case 22:s.mode&1?(gt=(a=gt)||s.memoizedState!==null,Wn(e,n,s),gt=a):Wn(e,n,s);break;default:Wn(e,n,s)}}function ph(e){var n=e.updateQueue;if(n!==null){e.updateQueue=null;var s=e.stateNode;s===null&&(s=e.stateNode=new H0),n.forEach(function(a){var d=tx.bind(null,e,a);s.has(a)||(s.add(a),a.then(d,d))})}}function Xt(e,n){var s=n.deletions;if(s!==null)for(var a=0;a<s.length;a++){var d=s[a];try{var h=e,v=n,T=v;e:for(;T!==null;){switch(T.tag){case 5:at=T.stateNode,Gt=!1;break e;case 3:at=T.stateNode.containerInfo,Gt=!0;break e;case 4:at=T.stateNode.containerInfo,Gt=!0;break e}T=T.return}if(at===null)throw Error(i(160));hh(h,v,d),at=null,Gt=!1;var b=d.alternate;b!==null&&(b.return=null),d.return=null}catch(V){We(d,n,V)}}if(n.subtreeFlags&12854)for(n=n.child;n!==null;)mh(n,e),n=n.sibling}function mh(e,n){var s=e.alternate,a=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(Xt(n,e),ln(e),a&4){try{es(3,e,e.return),xo(3,e)}catch(ue){We(e,e.return,ue)}try{es(5,e,e.return)}catch(ue){We(e,e.return,ue)}}break;case 1:Xt(n,e),ln(e),a&512&&s!==null&&ri(s,s.return);break;case 5:if(Xt(n,e),ln(e),a&512&&s!==null&&ri(s,s.return),e.flags&32){var d=e.stateNode;try{lr(d,"")}catch(ue){We(e,e.return,ue)}}if(a&4&&(d=e.stateNode,d!=null)){var h=e.memoizedProps,v=s!==null?s.memoizedProps:h,T=e.type,b=e.updateQueue;if(e.updateQueue=null,b!==null)try{T==="input"&&h.type==="radio"&&h.name!=null&&kt(d,h),Vr(T,v);var V=Vr(T,h);for(v=0;v<b.length;v+=2){var K=b[v],G=b[v+1];K==="style"?wi(d,G):K==="dangerouslySetInnerHTML"?mn(d,G):K==="children"?lr(d,G):I(d,K,G,V)}switch(T){case"input":Mt(d,h);break;case"textarea":zr(d,h);break;case"select":var H=d._wrapperState.wasMultiple;d._wrapperState.wasMultiple=!!h.multiple;var J=h.value;J!=null?$e(d,!!h.multiple,J,!1):H!==!!h.multiple&&(h.defaultValue!=null?$e(d,!!h.multiple,h.defaultValue,!0):$e(d,!!h.multiple,h.multiple?[]:"",!1))}d[Wi]=h}catch(ue){We(e,e.return,ue)}}break;case 6:if(Xt(n,e),ln(e),a&4){if(e.stateNode===null)throw Error(i(162));d=e.stateNode,h=e.memoizedProps;try{d.nodeValue=h}catch(ue){We(e,e.return,ue)}}break;case 3:if(Xt(n,e),ln(e),a&4&&s!==null&&s.memoizedState.isDehydrated)try{Li(n.containerInfo)}catch(ue){We(e,e.return,ue)}break;case 4:Xt(n,e),ln(e);break;case 13:Xt(n,e),ln(e),d=e.child,d.flags&8192&&(h=d.memoizedState!==null,d.stateNode.isHidden=h,!h||d.alternate!==null&&d.alternate.memoizedState!==null||(Ua=He())),a&4&&ph(e);break;case 22:if(K=s!==null&&s.memoizedState!==null,e.mode&1?(gt=(V=gt)||K,Xt(n,e),gt=V):Xt(n,e),ln(e),a&8192){if(V=e.memoizedState!==null,(e.stateNode.isHidden=V)&&!K&&(e.mode&1)!==0)for(ne=e,K=e.child;K!==null;){for(G=ne=K;ne!==null;){switch(H=ne,J=H.child,H.tag){case 0:case 11:case 14:case 15:es(4,H,H.return);break;case 1:ri(H,H.return);var ie=H.stateNode;if(typeof ie.componentWillUnmount=="function"){a=H,s=H.return;try{n=a,ie.props=n.memoizedProps,ie.state=n.memoizedState,ie.componentWillUnmount()}catch(ue){We(a,s,ue)}}break;case 5:ri(H,H.return);break;case 22:if(H.memoizedState!==null){vh(G);continue}}J!==null?(J.return=H,ne=J):vh(G)}K=K.sibling}e:for(K=null,G=e;;){if(G.tag===5){if(K===null){K=G;try{d=G.stateNode,V?(h=d.style,typeof h.setProperty=="function"?h.setProperty("display","none","important"):h.display="none"):(T=G.stateNode,b=G.memoizedProps.style,v=b!=null&&b.hasOwnProperty("display")?b.display:null,T.style.display=tn("display",v))}catch(ue){We(e,e.return,ue)}}}else if(G.tag===6){if(K===null)try{G.stateNode.nodeValue=V?"":G.memoizedProps}catch(ue){We(e,e.return,ue)}}else if((G.tag!==22&&G.tag!==23||G.memoizedState===null||G===e)&&G.child!==null){G.child.return=G,G=G.child;continue}if(G===e)break e;for(;G.sibling===null;){if(G.return===null||G.return===e)break e;K===G&&(K=null),G=G.return}K===G&&(K=null),G.sibling.return=G.return,G=G.sibling}}break;case 19:Xt(n,e),ln(e),a&4&&ph(e);break;case 21:break;default:Xt(n,e),ln(e)}}function ln(e){var n=e.flags;if(n&2){try{e:{for(var s=e.return;s!==null;){if(dh(s)){var a=s;break e}s=s.return}throw Error(i(160))}switch(a.tag){case 5:var d=a.stateNode;a.flags&32&&(lr(d,""),a.flags&=-33);var h=fh(e);Ba(e,h,d);break;case 3:case 4:var v=a.stateNode.containerInfo,T=fh(e);Fa(e,T,v);break;default:throw Error(i(161))}}catch(b){We(e,e.return,b)}e.flags&=-3}n&4096&&(e.flags&=-4097)}function G0(e,n,s){ne=e,gh(e)}function gh(e,n,s){for(var a=(e.mode&1)!==0;ne!==null;){var d=ne,h=d.child;if(d.tag===22&&a){var v=d.memoizedState!==null||vo;if(!v){var T=d.alternate,b=T!==null&&T.memoizedState!==null||gt;T=vo;var V=gt;if(vo=v,(gt=b)&&!V)for(ne=d;ne!==null;)v=ne,b=v.child,v.tag===22&&v.memoizedState!==null?xh(d):b!==null?(b.return=v,ne=b):xh(d);for(;h!==null;)ne=h,gh(h),h=h.sibling;ne=d,vo=T,gt=V}yh(e)}else(d.subtreeFlags&8772)!==0&&h!==null?(h.return=d,ne=h):yh(e)}}function yh(e){for(;ne!==null;){var n=ne;if((n.flags&8772)!==0){var s=n.alternate;try{if((n.flags&8772)!==0)switch(n.tag){case 0:case 11:case 15:gt||xo(5,n);break;case 1:var a=n.stateNode;if(n.flags&4&&!gt)if(s===null)a.componentDidMount();else{var d=n.elementType===n.type?s.memoizedProps:Kt(n.type,s.memoizedProps);a.componentDidUpdate(d,s.memoizedState,a.__reactInternalSnapshotBeforeUpdate)}var h=n.updateQueue;h!==null&&vf(n,h,a);break;case 3:var v=n.updateQueue;if(v!==null){if(s=null,n.child!==null)switch(n.child.tag){case 5:s=n.child.stateNode;break;case 1:s=n.child.stateNode}vf(n,v,s)}break;case 5:var T=n.stateNode;if(s===null&&n.flags&4){s=T;var b=n.memoizedProps;switch(n.type){case"button":case"input":case"select":case"textarea":b.autoFocus&&s.focus();break;case"img":b.src&&(s.src=b.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(n.memoizedState===null){var V=n.alternate;if(V!==null){var K=V.memoizedState;if(K!==null){var G=K.dehydrated;G!==null&&Li(G)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;default:throw Error(i(163))}gt||n.flags&512&&Oa(n)}catch(H){We(n,n.return,H)}}if(n===e){ne=null;break}if(s=n.sibling,s!==null){s.return=n.return,ne=s;break}ne=n.return}}function vh(e){for(;ne!==null;){var n=ne;if(n===e){ne=null;break}var s=n.sibling;if(s!==null){s.return=n.return,ne=s;break}ne=n.return}}function xh(e){for(;ne!==null;){var n=ne;try{switch(n.tag){case 0:case 11:case 15:var s=n.return;try{xo(4,n)}catch(b){We(n,s,b)}break;case 1:var a=n.stateNode;if(typeof a.componentDidMount=="function"){var d=n.return;try{a.componentDidMount()}catch(b){We(n,d,b)}}var h=n.return;try{Oa(n)}catch(b){We(n,h,b)}break;case 5:var v=n.return;try{Oa(n)}catch(b){We(n,v,b)}}}catch(b){We(n,n.return,b)}if(n===e){ne=null;break}var T=n.sibling;if(T!==null){T.return=n.return,ne=T;break}ne=n.return}}var X0=Math.ceil,wo=D.ReactCurrentDispatcher,$a=D.ReactCurrentOwner,Bt=D.ReactCurrentBatchConfig,Pe=0,st=null,Xe=null,ut=0,_t=0,ii=Vn(0),qe=0,ts=null,xr=0,So=0,Wa=0,ns=null,bt=null,Ua=0,si=1/0,Tn=null,ko=!1,Ha=null,Un=null,To=!1,Hn=null,Co=0,rs=0,Ka=null,Eo=-1,bo=0;function wt(){return(Pe&6)!==0?He():Eo!==-1?Eo:Eo=He()}function Kn(e){return(e.mode&1)===0?1:(Pe&2)!==0&&ut!==0?ut&-ut:j0.transition!==null?(bo===0&&(bo=dd()),bo):(e=Re,e!==0||(e=window.event,e=e===void 0?16:wd(e.type)),e)}function Yt(e,n,s,a){if(50<rs)throw rs=0,Ka=null,Error(i(185));Pi(e,s,a),((Pe&2)===0||e!==st)&&(e===st&&((Pe&2)===0&&(So|=s),qe===4&&Gn(e,ut)),Pt(e,a),s===1&&Pe===0&&(n.mode&1)===0&&(si=He()+500,Js&&Fn()))}function Pt(e,n){var s=e.callbackNode;jv(e,n);var a=Is(e,e===st?ut:0);if(a===0)s!==null&&ad(s),e.callbackNode=null,e.callbackPriority=0;else if(n=a&-a,e.callbackPriority!==n){if(s!=null&&ad(s),n===1)e.tag===0?R0(Sh.bind(null,e)):of(Sh.bind(null,e)),b0(function(){(Pe&6)===0&&Fn()}),s=null;else{switch(fd(a)){case 1:s=El;break;case 4:s=ud;break;case 16:s=Rs;break;case 536870912:s=cd;break;default:s=Rs}s=Mh(s,wh.bind(null,e))}e.callbackPriority=n,e.callbackNode=s}}function wh(e,n){if(Eo=-1,bo=0,(Pe&6)!==0)throw Error(i(327));var s=e.callbackNode;if(oi()&&e.callbackNode!==s)return null;var a=Is(e,e===st?ut:0);if(a===0)return null;if((a&30)!==0||(a&e.expiredLanes)!==0||n)n=Po(e,a);else{n=a;var d=Pe;Pe|=2;var h=Th();(st!==e||ut!==n)&&(Tn=null,si=He()+500,Sr(e,n));do try{Z0();break}catch(T){kh(e,T)}while(!0);ca(),wo.current=h,Pe=d,Xe!==null?n=0:(st=null,ut=0,n=qe)}if(n!==0){if(n===2&&(d=bl(e),d!==0&&(a=d,n=Ga(e,d))),n===1)throw s=ts,Sr(e,0),Gn(e,a),Pt(e,He()),s;if(n===6)Gn(e,a);else{if(d=e.current.alternate,(a&30)===0&&!Y0(d)&&(n=Po(e,a),n===2&&(h=bl(e),h!==0&&(a=h,n=Ga(e,h))),n===1))throw s=ts,Sr(e,0),Gn(e,a),Pt(e,He()),s;switch(e.finishedWork=d,e.finishedLanes=a,n){case 0:case 1:throw Error(i(345));case 2:kr(e,bt,Tn);break;case 3:if(Gn(e,a),(a&130023424)===a&&(n=Ua+500-He(),10<n)){if(Is(e,0)!==0)break;if(d=e.suspendedLanes,(d&a)!==a){wt(),e.pingedLanes|=e.suspendedLanes&d;break}e.timeoutHandle=Jl(kr.bind(null,e,bt,Tn),n);break}kr(e,bt,Tn);break;case 4:if(Gn(e,a),(a&4194240)===a)break;for(n=e.eventTimes,d=-1;0<a;){var v=31-Wt(a);h=1<<v,v=n[v],v>d&&(d=v),a&=~h}if(a=d,a=He()-a,a=(120>a?120:480>a?480:1080>a?1080:1920>a?1920:3e3>a?3e3:4320>a?4320:1960*X0(a/1960))-a,10<a){e.timeoutHandle=Jl(kr.bind(null,e,bt,Tn),a);break}kr(e,bt,Tn);break;case 5:kr(e,bt,Tn);break;default:throw Error(i(329))}}}return Pt(e,He()),e.callbackNode===s?wh.bind(null,e):null}function Ga(e,n){var s=ns;return e.current.memoizedState.isDehydrated&&(Sr(e,n).flags|=256),e=Po(e,n),e!==2&&(n=bt,bt=s,n!==null&&Xa(n)),e}function Xa(e){bt===null?bt=e:bt.push.apply(bt,e)}function Y0(e){for(var n=e;;){if(n.flags&16384){var s=n.updateQueue;if(s!==null&&(s=s.stores,s!==null))for(var a=0;a<s.length;a++){var d=s[a],h=d.getSnapshot;d=d.value;try{if(!Ut(h(),d))return!1}catch{return!1}}}if(s=n.child,n.subtreeFlags&16384&&s!==null)s.return=n,n=s;else{if(n===e)break;for(;n.sibling===null;){if(n.return===null||n.return===e)return!0;n=n.return}n.sibling.return=n.return,n=n.sibling}}return!0}function Gn(e,n){for(n&=~Wa,n&=~So,e.suspendedLanes|=n,e.pingedLanes&=~n,e=e.expirationTimes;0<n;){var s=31-Wt(n),a=1<<s;e[s]=-1,n&=~a}}function Sh(e){if((Pe&6)!==0)throw Error(i(327));oi();var n=Is(e,0);if((n&1)===0)return Pt(e,He()),null;var s=Po(e,n);if(e.tag!==0&&s===2){var a=bl(e);a!==0&&(n=a,s=Ga(e,a))}if(s===1)throw s=ts,Sr(e,0),Gn(e,n),Pt(e,He()),s;if(s===6)throw Error(i(345));return e.finishedWork=e.current.alternate,e.finishedLanes=n,kr(e,bt,Tn),Pt(e,He()),null}function Ya(e,n){var s=Pe;Pe|=1;try{return e(n)}finally{Pe=s,Pe===0&&(si=He()+500,Js&&Fn())}}function wr(e){Hn!==null&&Hn.tag===0&&(Pe&6)===0&&oi();var n=Pe;Pe|=1;var s=Bt.transition,a=Re;try{if(Bt.transition=null,Re=1,e)return e()}finally{Re=a,Bt.transition=s,Pe=n,(Pe&6)===0&&Fn()}}function Qa(){_t=ii.current,De(ii)}function Sr(e,n){e.finishedWork=null,e.finishedLanes=0;var s=e.timeoutHandle;if(s!==-1&&(e.timeoutHandle=-1,E0(s)),Xe!==null)for(s=Xe.return;s!==null;){var a=s;switch(sa(a),a.tag){case 1:a=a.type.childContextTypes,a!=null&&Zs();break;case 3:ti(),De(Tt),De(ht),va();break;case 5:ga(a);break;case 4:ti();break;case 13:De(Oe);break;case 19:De(Oe);break;case 10:da(a.type._context);break;case 22:case 23:Qa()}s=s.return}if(st=e,Xe=e=Xn(e.current,null),ut=_t=n,qe=0,ts=null,Wa=So=xr=0,bt=ns=null,gr!==null){for(n=0;n<gr.length;n++)if(s=gr[n],a=s.interleaved,a!==null){s.interleaved=null;var d=a.next,h=s.pending;if(h!==null){var v=h.next;h.next=d,a.next=v}s.pending=a}gr=null}return e}function kh(e,n){do{var s=Xe;try{if(ca(),uo.current=po,co){for(var a=Fe.memoizedState;a!==null;){var d=a.queue;d!==null&&(d.pending=null),a=a.next}co=!1}if(vr=0,it=Ze=Fe=null,Yi=!1,Qi=0,$a.current=null,s===null||s.return===null){qe=1,ts=n,Xe=null;break}e:{var h=e,v=s.return,T=s,b=n;if(n=ut,T.flags|=32768,b!==null&&typeof b=="object"&&typeof b.then=="function"){var V=b,K=T,G=K.tag;if((K.mode&1)===0&&(G===0||G===11||G===15)){var H=K.alternate;H?(K.updateQueue=H.updateQueue,K.memoizedState=H.memoizedState,K.lanes=H.lanes):(K.updateQueue=null,K.memoizedState=null)}var J=Gf(v);if(J!==null){J.flags&=-257,Xf(J,v,T,h,n),J.mode&1&&Kf(h,V,n),n=J,b=V;var ie=n.updateQueue;if(ie===null){var ue=new Set;ue.add(b),n.updateQueue=ue}else ie.add(b);break e}else{if((n&1)===0){Kf(h,V,n),Za();break e}b=Error(i(426))}}else if(Ne&&T.mode&1){var Ke=Gf(v);if(Ke!==null){(Ke.flags&65536)===0&&(Ke.flags|=256),Xf(Ke,v,T,h,n),aa(ni(b,T));break e}}h=b=ni(b,T),qe!==4&&(qe=2),ns===null?ns=[h]:ns.push(h),h=v;do{switch(h.tag){case 3:h.flags|=65536,n&=-n,h.lanes|=n;var _=Uf(h,b,n);yf(h,_);break e;case 1:T=b;var R=h.type,z=h.stateNode;if((h.flags&128)===0&&(typeof R.getDerivedStateFromError=="function"||z!==null&&typeof z.componentDidCatch=="function"&&(Un===null||!Un.has(z)))){h.flags|=65536,n&=-n,h.lanes|=n;var X=Hf(h,T,n);yf(h,X);break e}}h=h.return}while(h!==null)}Eh(s)}catch(ce){n=ce,Xe===s&&s!==null&&(Xe=s=s.return);continue}break}while(!0)}function Th(){var e=wo.current;return wo.current=po,e===null?po:e}function Za(){(qe===0||qe===3||qe===2)&&(qe=4),st===null||(xr&268435455)===0&&(So&268435455)===0||Gn(st,ut)}function Po(e,n){var s=Pe;Pe|=2;var a=Th();(st!==e||ut!==n)&&(Tn=null,Sr(e,n));do try{Q0();break}catch(d){kh(e,d)}while(!0);if(ca(),Pe=s,wo.current=a,Xe!==null)throw Error(i(261));return st=null,ut=0,qe}function Q0(){for(;Xe!==null;)Ch(Xe)}function Z0(){for(;Xe!==null&&!kv();)Ch(Xe)}function Ch(e){var n=Ah(e.alternate,e,_t);e.memoizedProps=e.pendingProps,n===null?Eh(e):Xe=n,$a.current=null}function Eh(e){var n=e;do{var s=n.alternate;if(e=n.return,(n.flags&32768)===0){if(s=W0(s,n,_t),s!==null){Xe=s;return}}else{if(s=U0(s,n),s!==null){s.flags&=32767,Xe=s;return}if(e!==null)e.flags|=32768,e.subtreeFlags=0,e.deletions=null;else{qe=6,Xe=null;return}}if(n=n.sibling,n!==null){Xe=n;return}Xe=n=e}while(n!==null);qe===0&&(qe=5)}function kr(e,n,s){var a=Re,d=Bt.transition;try{Bt.transition=null,Re=1,q0(e,n,s,a)}finally{Bt.transition=d,Re=a}return null}function q0(e,n,s,a){do oi();while(Hn!==null);if((Pe&6)!==0)throw Error(i(327));s=e.finishedWork;var d=e.finishedLanes;if(s===null)return null;if(e.finishedWork=null,e.finishedLanes=0,s===e.current)throw Error(i(177));e.callbackNode=null,e.callbackPriority=0;var h=s.lanes|s.childLanes;if(Lv(e,h),e===st&&(Xe=st=null,ut=0),(s.subtreeFlags&2064)===0&&(s.flags&2064)===0||To||(To=!0,Mh(Rs,function(){return oi(),null})),h=(s.flags&15990)!==0,(s.subtreeFlags&15990)!==0||h){h=Bt.transition,Bt.transition=null;var v=Re;Re=1;var T=Pe;Pe|=4,$a.current=null,K0(e,s),mh(s,e),v0(Zl),Ns=!!Ql,Zl=Ql=null,e.current=s,G0(s),Tv(),Pe=T,Re=v,Bt.transition=h}else e.current=s;if(To&&(To=!1,Hn=e,Co=d),h=e.pendingLanes,h===0&&(Un=null),bv(s.stateNode),Pt(e,He()),n!==null)for(a=e.onRecoverableError,s=0;s<n.length;s++)d=n[s],a(d.value,{componentStack:d.stack,digest:d.digest});if(ko)throw ko=!1,e=Ha,Ha=null,e;return(Co&1)!==0&&e.tag!==0&&oi(),h=e.pendingLanes,(h&1)!==0?e===Ka?rs++:(rs=0,Ka=e):rs=0,Fn(),null}function oi(){if(Hn!==null){var e=fd(Co),n=Bt.transition,s=Re;try{if(Bt.transition=null,Re=16>e?16:e,Hn===null)var a=!1;else{if(e=Hn,Hn=null,Co=0,(Pe&6)!==0)throw Error(i(331));var d=Pe;for(Pe|=4,ne=e.current;ne!==null;){var h=ne,v=h.child;if((ne.flags&16)!==0){var T=h.deletions;if(T!==null){for(var b=0;b<T.length;b++){var V=T[b];for(ne=V;ne!==null;){var K=ne;switch(K.tag){case 0:case 11:case 15:es(8,K,h)}var G=K.child;if(G!==null)G.return=K,ne=G;else for(;ne!==null;){K=ne;var H=K.sibling,J=K.return;if(ch(K),K===V){ne=null;break}if(H!==null){H.return=J,ne=H;break}ne=J}}}var ie=h.alternate;if(ie!==null){var ue=ie.child;if(ue!==null){ie.child=null;do{var Ke=ue.sibling;ue.sibling=null,ue=Ke}while(ue!==null)}}ne=h}}if((h.subtreeFlags&2064)!==0&&v!==null)v.return=h,ne=v;else e:for(;ne!==null;){if(h=ne,(h.flags&2048)!==0)switch(h.tag){case 0:case 11:case 15:es(9,h,h.return)}var _=h.sibling;if(_!==null){_.return=h.return,ne=_;break e}ne=h.return}}var R=e.current;for(ne=R;ne!==null;){v=ne;var z=v.child;if((v.subtreeFlags&2064)!==0&&z!==null)z.return=v,ne=z;else e:for(v=R;ne!==null;){if(T=ne,(T.flags&2048)!==0)try{switch(T.tag){case 0:case 11:case 15:xo(9,T)}}catch(ce){We(T,T.return,ce)}if(T===v){ne=null;break e}var X=T.sibling;if(X!==null){X.return=T.return,ne=X;break e}ne=T.return}}if(Pe=d,Fn(),nn&&typeof nn.onPostCommitFiberRoot=="function")try{nn.onPostCommitFiberRoot(js,e)}catch{}a=!0}return a}finally{Re=s,Bt.transition=n}}return!1}function bh(e,n,s){n=ni(s,n),n=Uf(e,n,1),e=$n(e,n,1),n=wt(),e!==null&&(Pi(e,1,n),Pt(e,n))}function We(e,n,s){if(e.tag===3)bh(e,e,s);else for(;n!==null;){if(n.tag===3){bh(n,e,s);break}else if(n.tag===1){var a=n.stateNode;if(typeof n.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(Un===null||!Un.has(a))){e=ni(s,e),e=Hf(n,e,1),n=$n(n,e,1),e=wt(),n!==null&&(Pi(n,1,e),Pt(n,e));break}}n=n.return}}function J0(e,n,s){var a=e.pingCache;a!==null&&a.delete(n),n=wt(),e.pingedLanes|=e.suspendedLanes&s,st===e&&(ut&s)===s&&(qe===4||qe===3&&(ut&130023424)===ut&&500>He()-Ua?Sr(e,0):Wa|=s),Pt(e,n)}function Ph(e,n){n===0&&((e.mode&1)===0?n=1:(n=_s,_s<<=1,(_s&130023424)===0&&(_s=4194304)));var s=wt();e=wn(e,n),e!==null&&(Pi(e,n,s),Pt(e,s))}function ex(e){var n=e.memoizedState,s=0;n!==null&&(s=n.retryLane),Ph(e,s)}function tx(e,n){var s=0;switch(e.tag){case 13:var a=e.stateNode,d=e.memoizedState;d!==null&&(s=d.retryLane);break;case 19:a=e.stateNode;break;default:throw Error(i(314))}a!==null&&a.delete(n),Ph(e,s)}var Ah;Ah=function(e,n,s){if(e!==null)if(e.memoizedProps!==n.pendingProps||Tt.current)Et=!0;else{if((e.lanes&s)===0&&(n.flags&128)===0)return Et=!1,$0(e,n,s);Et=(e.flags&131072)!==0}else Et=!1,Ne&&(n.flags&1048576)!==0&&lf(n,to,n.index);switch(n.lanes=0,n.tag){case 2:var a=n.type;yo(e,n),e=n.pendingProps;var d=Xr(n,ht.current);ei(n,s),d=Sa(null,n,a,e,d,s);var h=ka();return n.flags|=1,typeof d=="object"&&d!==null&&typeof d.render=="function"&&d.$$typeof===void 0?(n.tag=1,n.memoizedState=null,n.updateQueue=null,Ct(a)?(h=!0,qs(n)):h=!1,n.memoizedState=d.state!==null&&d.state!==void 0?d.state:null,pa(n),d.updater=mo,n.stateNode=d,d._reactInternals=n,Aa(n,a,e,s),n=La(null,n,a,!0,h,s)):(n.tag=0,Ne&&h&&ia(n),xt(null,n,d,s),n=n.child),n;case 16:a=n.elementType;e:{switch(yo(e,n),e=n.pendingProps,d=a._init,a=d(a._payload),n.type=a,d=n.tag=rx(a),e=Kt(a,e),d){case 0:n=ja(null,n,a,e,s);break e;case 1:n=eh(null,n,a,e,s);break e;case 11:n=Yf(null,n,a,e,s);break e;case 14:n=Qf(null,n,a,Kt(a.type,e),s);break e}throw Error(i(306,a,""))}return n;case 0:return a=n.type,d=n.pendingProps,d=n.elementType===a?d:Kt(a,d),ja(e,n,a,d,s);case 1:return a=n.type,d=n.pendingProps,d=n.elementType===a?d:Kt(a,d),eh(e,n,a,d,s);case 3:e:{if(th(n),e===null)throw Error(i(387));a=n.pendingProps,h=n.memoizedState,d=h.element,gf(e,n),lo(n,a,null,s);var v=n.memoizedState;if(a=v.element,h.isDehydrated)if(h={element:a,isDehydrated:!1,cache:v.cache,pendingSuspenseBoundaries:v.pendingSuspenseBoundaries,transitions:v.transitions},n.updateQueue.baseState=h,n.memoizedState=h,n.flags&256){d=ni(Error(i(423)),n),n=nh(e,n,a,s,d);break e}else if(a!==d){d=ni(Error(i(424)),n),n=nh(e,n,a,s,d);break e}else for(Lt=Nn(n.stateNode.containerInfo.firstChild),jt=n,Ne=!0,Ht=null,s=pf(n,null,a,s),n.child=s;s;)s.flags=s.flags&-3|4096,s=s.sibling;else{if(Zr(),a===d){n=kn(e,n,s);break e}xt(e,n,a,s)}n=n.child}return n;case 5:return xf(n),e===null&&la(n),a=n.type,d=n.pendingProps,h=e!==null?e.memoizedProps:null,v=d.children,ql(a,d)?v=null:h!==null&&ql(a,h)&&(n.flags|=32),Jf(e,n),xt(e,n,v,s),n.child;case 6:return e===null&&la(n),null;case 13:return rh(e,n,s);case 4:return ma(n,n.stateNode.containerInfo),a=n.pendingProps,e===null?n.child=qr(n,null,a,s):xt(e,n,a,s),n.child;case 11:return a=n.type,d=n.pendingProps,d=n.elementType===a?d:Kt(a,d),Yf(e,n,a,d,s);case 7:return xt(e,n,n.pendingProps,s),n.child;case 8:return xt(e,n,n.pendingProps.children,s),n.child;case 12:return xt(e,n,n.pendingProps.children,s),n.child;case 10:e:{if(a=n.type._context,d=n.pendingProps,h=n.memoizedProps,v=d.value,_e(io,a._currentValue),a._currentValue=v,h!==null)if(Ut(h.value,v)){if(h.children===d.children&&!Tt.current){n=kn(e,n,s);break e}}else for(h=n.child,h!==null&&(h.return=n);h!==null;){var T=h.dependencies;if(T!==null){v=h.child;for(var b=T.firstContext;b!==null;){if(b.context===a){if(h.tag===1){b=Sn(-1,s&-s),b.tag=2;var V=h.updateQueue;if(V!==null){V=V.shared;var K=V.pending;K===null?b.next=b:(b.next=K.next,K.next=b),V.pending=b}}h.lanes|=s,b=h.alternate,b!==null&&(b.lanes|=s),fa(h.return,s,n),T.lanes|=s;break}b=b.next}}else if(h.tag===10)v=h.type===n.type?null:h.child;else if(h.tag===18){if(v=h.return,v===null)throw Error(i(341));v.lanes|=s,T=v.alternate,T!==null&&(T.lanes|=s),fa(v,s,n),v=h.sibling}else v=h.child;if(v!==null)v.return=h;else for(v=h;v!==null;){if(v===n){v=null;break}if(h=v.sibling,h!==null){h.return=v.return,v=h;break}v=v.return}h=v}xt(e,n,d.children,s),n=n.child}return n;case 9:return d=n.type,a=n.pendingProps.children,ei(n,s),d=Ot(d),a=a(d),n.flags|=1,xt(e,n,a,s),n.child;case 14:return a=n.type,d=Kt(a,n.pendingProps),d=Kt(a.type,d),Qf(e,n,a,d,s);case 15:return Zf(e,n,n.type,n.pendingProps,s);case 17:return a=n.type,d=n.pendingProps,d=n.elementType===a?d:Kt(a,d),yo(e,n),n.tag=1,Ct(a)?(e=!0,qs(n)):e=!1,ei(n,s),$f(n,a,d),Aa(n,a,d,s),La(null,n,a,!0,e,s);case 19:return sh(e,n,s);case 22:return qf(e,n,s)}throw Error(i(156,n.tag))};function Mh(e,n){return ld(e,n)}function nx(e,n,s,a){this.tag=e,this.key=s,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=a,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function $t(e,n,s,a){return new nx(e,n,s,a)}function qa(e){return e=e.prototype,!(!e||!e.isReactComponent)}function rx(e){if(typeof e=="function")return qa(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Q)return 11;if(e===pe)return 14}return 2}function Xn(e,n){var s=e.alternate;return s===null?(s=$t(e.tag,n,e.key,e.mode),s.elementType=e.elementType,s.type=e.type,s.stateNode=e.stateNode,s.alternate=e,e.alternate=s):(s.pendingProps=n,s.type=e.type,s.flags=0,s.subtreeFlags=0,s.deletions=null),s.flags=e.flags&14680064,s.childLanes=e.childLanes,s.lanes=e.lanes,s.child=e.child,s.memoizedProps=e.memoizedProps,s.memoizedState=e.memoizedState,s.updateQueue=e.updateQueue,n=e.dependencies,s.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext},s.sibling=e.sibling,s.index=e.index,s.ref=e.ref,s}function Ao(e,n,s,a,d,h){var v=2;if(a=e,typeof e=="function")qa(e)&&(v=1);else if(typeof e=="string")v=5;else e:switch(e){case N:return Tr(s.children,d,h,n);case j:v=8,d|=8;break;case W:return e=$t(12,s,n,d|2),e.elementType=W,e.lanes=h,e;case oe:return e=$t(13,s,n,d),e.elementType=oe,e.lanes=h,e;case fe:return e=$t(19,s,n,d),e.elementType=fe,e.lanes=h,e;case q:return Mo(s,d,h,n);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case ee:v=10;break e;case de:v=9;break e;case Q:v=11;break e;case pe:v=14;break e;case Te:v=16,a=null;break e}throw Error(i(130,e==null?e:typeof e,""))}return n=$t(v,s,n,d),n.elementType=e,n.type=a,n.lanes=h,n}function Tr(e,n,s,a){return e=$t(7,e,a,n),e.lanes=s,e}function Mo(e,n,s,a){return e=$t(22,e,a,n),e.elementType=q,e.lanes=s,e.stateNode={isHidden:!1},e}function Ja(e,n,s){return e=$t(6,e,null,n),e.lanes=s,e}function eu(e,n,s){return n=$t(4,e.children!==null?e.children:[],e.key,n),n.lanes=s,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function ix(e,n,s,a,d){this.tag=n,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Pl(0),this.expirationTimes=Pl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Pl(0),this.identifierPrefix=a,this.onRecoverableError=d,this.mutableSourceEagerHydrationData=null}function tu(e,n,s,a,d,h,v,T,b){return e=new ix(e,n,s,T,b),n===1?(n=1,h===!0&&(n|=8)):n=0,h=$t(3,null,null,n),e.current=h,h.stateNode=e,h.memoizedState={element:a,isDehydrated:s,cache:null,transitions:null,pendingSuspenseBoundaries:null},pa(h),e}function sx(e,n,s){var a=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:Y,key:a==null?null:""+a,children:e,containerInfo:n,implementation:s}}function Rh(e){if(!e)return On;e=e._reactInternals;e:{if(dr(e)!==e||e.tag!==1)throw Error(i(170));var n=e;do{switch(n.tag){case 3:n=n.stateNode.context;break e;case 1:if(Ct(n.type)){n=n.stateNode.__reactInternalMemoizedMergedChildContext;break e}}n=n.return}while(n!==null);throw Error(i(171))}if(e.tag===1){var s=e.type;if(Ct(s))return rf(e,s,n)}return n}function jh(e,n,s,a,d,h,v,T,b){return e=tu(s,a,!0,e,d,h,v,T,b),e.context=Rh(null),s=e.current,a=wt(),d=Kn(s),h=Sn(a,d),h.callback=n??null,$n(s,h,d),e.current.lanes=d,Pi(e,d,a),Pt(e,a),e}function Ro(e,n,s,a){var d=n.current,h=wt(),v=Kn(d);return s=Rh(s),n.context===null?n.context=s:n.pendingContext=s,n=Sn(h,v),n.payload={element:e},a=a===void 0?null:a,a!==null&&(n.callback=a),e=$n(d,n,v),e!==null&&(Yt(e,d,v,h),oo(e,d,v)),v}function jo(e){if(e=e.current,!e.child)return null;switch(e.child.tag){case 5:return e.child.stateNode;default:return e.child.stateNode}}function Lh(e,n){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var s=e.retryLane;e.retryLane=s!==0&&s<n?s:n}}function nu(e,n){Lh(e,n),(e=e.alternate)&&Lh(e,n)}function ox(){return null}var _h=typeof reportError=="function"?reportError:function(e){console.error(e)};function ru(e){this._internalRoot=e}Lo.prototype.render=ru.prototype.render=function(e){var n=this._internalRoot;if(n===null)throw Error(i(409));Ro(e,n,null,null)},Lo.prototype.unmount=ru.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var n=e.containerInfo;wr(function(){Ro(null,e,null,null)}),n[gn]=null}};function Lo(e){this._internalRoot=e}Lo.prototype.unstable_scheduleHydration=function(e){if(e){var n=md();e={blockedOn:null,target:e,priority:n};for(var s=0;s<In.length&&n!==0&&n<In[s].priority;s++);In.splice(s,0,e),s===0&&vd(e)}};function iu(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function _o(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11&&(e.nodeType!==8||e.nodeValue!==" react-mount-point-unstable "))}function Ih(){}function lx(e,n,s,a,d){if(d){if(typeof a=="function"){var h=a;a=function(){var V=jo(v);h.call(V)}}var v=jh(n,a,e,0,null,!1,!1,"",Ih);return e._reactRootContainer=v,e[gn]=v.current,Bi(e.nodeType===8?e.parentNode:e),wr(),v}for(;d=e.lastChild;)e.removeChild(d);if(typeof a=="function"){var T=a;a=function(){var V=jo(b);T.call(V)}}var b=tu(e,0,!1,null,null,!1,!1,"",Ih);return e._reactRootContainer=b,e[gn]=b.current,Bi(e.nodeType===8?e.parentNode:e),wr(function(){Ro(n,b,s,a)}),b}function Io(e,n,s,a,d){var h=s._reactRootContainer;if(h){var v=h;if(typeof d=="function"){var T=d;d=function(){var b=jo(v);T.call(b)}}Ro(n,v,e,d)}else v=lx(s,n,e,d,a);return jo(v)}hd=function(e){switch(e.tag){case 3:var n=e.stateNode;if(n.current.memoizedState.isDehydrated){var s=bi(n.pendingLanes);s!==0&&(Al(n,s|1),Pt(n,He()),(Pe&6)===0&&(si=He()+500,Fn()))}break;case 13:wr(function(){var a=wn(e,1);if(a!==null){var d=wt();Yt(a,e,1,d)}}),nu(e,1)}},Ml=function(e){if(e.tag===13){var n=wn(e,134217728);if(n!==null){var s=wt();Yt(n,e,134217728,s)}nu(e,134217728)}},pd=function(e){if(e.tag===13){var n=Kn(e),s=wn(e,n);if(s!==null){var a=wt();Yt(s,e,n,a)}nu(e,n)}},md=function(){return Re},gd=function(e,n){var s=Re;try{return Re=e,n()}finally{Re=s}},Le=function(e,n,s){switch(n){case"input":if(Mt(e,s),n=s.name,s.type==="radio"&&n!=null){for(s=e;s.parentNode;)s=s.parentNode;for(s=s.querySelectorAll("input[name="+JSON.stringify(""+n)+'][type="radio"]'),n=0;n<s.length;n++){var a=s[n];if(a!==e&&a.form===e.form){var d=Qs(a);if(!d)throw Error(i(90));Be(a),Mt(a,d)}}}break;case"textarea":zr(e,s);break;case"select":n=s.value,n!=null&&$e(e,!!s.multiple,n,!1)}},ed=Ya,td=wr;var ax={usingClientEntryPoint:!1,Events:[Ui,Kr,Qs,cr,ki,Ya]},is={findFiberByHostInstance:fr,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},ux={bundleType:is.bundleType,version:is.version,rendererPackageName:is.rendererPackageName,rendererConfig:is.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:D.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return e=sd(e),e===null?null:e.stateNode},findFiberByHostInstance:is.findFiberByHostInstance||ox,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var zo=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!zo.isDisabled&&zo.supportsFiber)try{js=zo.inject(ux),nn=zo}catch{}}return At.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ax,At.createPortal=function(e,n){var s=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!iu(n))throw Error(i(200));return sx(e,n,null,s)},At.createRoot=function(e,n){if(!iu(e))throw Error(i(299));var s=!1,a="",d=_h;return n!=null&&(n.unstable_strictMode===!0&&(s=!0),n.identifierPrefix!==void 0&&(a=n.identifierPrefix),n.onRecoverableError!==void 0&&(d=n.onRecoverableError)),n=tu(e,1,!1,null,null,s,!1,a,d),e[gn]=n.current,Bi(e.nodeType===8?e.parentNode:e),new ru(n)},At.findDOMNode=function(e){if(e==null)return null;if(e.nodeType===1)return e;var n=e._reactInternals;if(n===void 0)throw typeof e.render=="function"?Error(i(188)):(e=Object.keys(e).join(","),Error(i(268,e)));return e=sd(n),e=e===null?null:e.stateNode,e},At.flushSync=function(e){return wr(e)},At.hydrate=function(e,n,s){if(!_o(n))throw Error(i(200));return Io(null,e,n,!0,s)},At.hydrateRoot=function(e,n,s){if(!iu(e))throw Error(i(405));var a=s!=null&&s.hydratedSources||null,d=!1,h="",v=_h;if(s!=null&&(s.unstable_strictMode===!0&&(d=!0),s.identifierPrefix!==void 0&&(h=s.identifierPrefix),s.onRecoverableError!==void 0&&(v=s.onRecoverableError)),n=jh(n,null,e,1,s??null,d,!1,h,v),e[gn]=n.current,Bi(e),a)for(e=0;e<a.length;e++)s=a[e],d=s._getVersion,d=d(s._source),n.mutableSourceEagerHydrationData==null?n.mutableSourceEagerHydrationData=[s,d]:n.mutableSourceEagerHydrationData.push(s,d);return new Lo(n)},At.render=function(e,n,s){if(!_o(n))throw Error(i(200));return Io(null,e,n,!1,s)},At.unmountComponentAtNode=function(e){if(!_o(e))throw Error(i(40));return e._reactRootContainer?(wr(function(){Io(null,null,e,!1,function(){e._reactRootContainer=null,e[gn]=null})}),!0):!1},At.unstable_batchedUpdates=Ya,At.unstable_renderSubtreeIntoContainer=function(e,n,s,a){if(!_o(s))throw Error(i(200));if(e==null||e._reactInternals===void 0)throw Error(i(38));return Io(e,n,s,!1,a)},At.version="18.3.1-next-f1338f8080-20240426",At}var $h;function zm(){if($h)return lu.exports;$h=1;function t(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(r){console.error(r)}}return t(),lu.exports=vx(),lu.exports}var Wh;function xx(){if(Wh)return No;Wh=1;var t=zm();return No.createRoot=t.createRoot,No.hydrateRoot=t.hydrateRoot,No}var wx=xx();const dc=P.createContext({});function fc(t){const r=P.useRef(null);return r.current===null&&(r.current=t()),r.current}const Sx=typeof window<"u",el=Sx?P.useLayoutEffect:P.useEffect,pl=P.createContext(null);function hc(t,r){t.indexOf(r)===-1&&t.push(r)}function _r(t,r){const i=t.indexOf(r);i>-1&&t.splice(i,1)}const en=(t,r,i)=>i>r?r:i<t?t:i;let xs=()=>{};const Pn={},pc=t=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(t),mc=t=>typeof t=="object"&&t!==null,gc=t=>/^0[^.\s]+$/u.test(t);function Dm(t){let r;return()=>(r===void 0&&(r=t()),r)}const qt=t=>t,ws=(...t)=>t.reduce((r,i)=>o=>i(r(o))),mi=(t,r,i)=>{const o=r-t;return o?(i-t)/o:1};class tl{constructor(){this.subscriptions=[]}add(r){return hc(this.subscriptions,r),()=>this.remove(r)}remove(r){_r(this.subscriptions,r)}notify(r,i,o){const l=this.subscriptions.length;if(l)if(l===1)this.subscriptions[0](r,i,o);else for(let c=0;c<l;c++){const u=this.subscriptions[c];u&&u(r,i,o)}}getSize(){return this.subscriptions.length}clear(){this.subscriptions.length=0}}const zt=t=>t*1e3,It=t=>t/1e3,Nm=(t,r)=>r?t*(1e3/r):0,kx=(t,r,i)=>{const o=r-t;return((i-t)%o+o)%o+t},Vm=(t,r,i)=>(((1-3*i+3*r)*t+(3*i-6*r))*t+3*r)*t,Tx=1e-7,Cx=12;function Ex(t,r,i,o,l){let c,u,f=0;do u=r+(i-r)/2,c=Vm(u,o,l)-t,c>0?i=u:r=u;while(Math.abs(c)>Tx&&++f<Cx);return u}function Ss(t,r,i,o){if(t===r&&i===o)return qt;const l=c=>Ex(c,0,1,t,i);return c=>c===0||c===1?c:Vm(l(c),r,o)}const Om=t=>r=>r<=.5?t(2*r)/2:(2-t(2*(1-r)))/2,yc=t=>r=>1-t(1-r),Fm=Ss(.33,1.53,.69,.99),vc=yc(Fm),Bm=Om(vc),$m=t=>t>=1?1:(t*=2)<1?.5*vc(t):.5*(2-Math.pow(2,-10*(t-1))),xc=t=>1-Math.sin(Math.acos(t)),Wm=yc(xc),Um=Om(xc),bx=Ss(.42,0,1,1),Px=Ss(0,0,.58,1),Hm=Ss(.42,0,.58,1),Km=t=>Array.isArray(t)&&typeof t[0]!="number";function Gm(t,r){return Km(t)?t[kx(0,t.length,r)]:t}const Xm=t=>Array.isArray(t)&&typeof t[0]=="number",Ax={linear:qt,easeIn:bx,easeInOut:Hm,easeOut:Px,circIn:xc,circInOut:Um,circOut:Wm,backIn:vc,backInOut:Bm,backOut:Fm,anticipate:$m},Mx=t=>typeof t=="string",Uh=t=>{if(Xm(t)){xs(t.length===4);const[r,i,o,l]=t;return Ss(r,i,o,l)}else if(Mx(t))return Ax[t];return t},Vo=["setup","read","resolveKeyframes","preUpdate","update","preRender","render","postRender"];function Rx(t){let r=new Set,i=new Set,o=!1,l=!1;const c=new Set;let u={delta:0,timestamp:0,isProcessing:!1};function f(m){c.has(m)&&(i.add(m),t()),m(u)}const p={schedule:(m,g=!1,y=!1)=>{const w=y&&o?r:i;return g&&c.add(m),w.add(m),m},cancel:m=>{i.delete(m),c.delete(m)},process:m=>{if(u=m,o){l=!0;return}o=!0;const g=r;r=i,i=g,r.forEach(f),r.clear(),o=!1,l&&(l=!1,p.process(m))}};return p}const jx=40;function Ym(t,r){let i=!1,o=!0;const l={delta:0,timestamp:0,isProcessing:!1},c=()=>i=!0,u=Vo.reduce((I,D)=>(I[D]=Rx(c),I),{}),{setup:f,read:p,resolveKeyframes:m,preUpdate:g,update:y,preRender:x,render:w,postRender:k}=u,C=()=>{const I=Pn.useManualTiming,D=I?l.timestamp:performance.now();i=!1,I||(l.delta=o?1e3/60:Math.max(Math.min(D-l.timestamp,jx),1)),l.timestamp=D,l.isProcessing=!0,f.process(l),p.process(l),m.process(l),g.process(l),y.process(l),x.process(l),w.process(l),k.process(l),l.isProcessing=!1,i&&r&&(o=!1,t(C))},E=()=>{i=!0,o=!0,l.isProcessing||t(C)};return{schedule:Vo.reduce((I,D)=>{const U=u[D];return I[D]=(Y,N=!1,j=!1)=>(i||E(),U.schedule(Y,N,j)),I},{}),cancel:I=>{for(let D=0;D<Vo.length;D++)u[Vo[D]].cancel(I)},state:l,steps:u}}const{schedule:Me,cancel:qn,state:tt,steps:cu}=Ym(typeof requestAnimationFrame<"u"?requestAnimationFrame:qt,!0);let Go;function Lx(){Go=void 0}const yt={now:()=>(Go===void 0&&yt.set(tt.isProcessing||Pn.useManualTiming?tt.timestamp:performance.now()),Go),set:t=>{Go=t,queueMicrotask(Lx)}},hi=t=>Math.round(t*1e5)/1e5,Qm=t=>r=>typeof r=="string"&&r.startsWith(t),Zm=Qm("--"),_x=Qm("var(--"),wc=t=>_x(t)?Ix.test(t.split("/*")[0].trim()):!1,Ix=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;function Hh(t){return typeof t!="string"?!1:t.split("/*")[0].includes("var(--")}const yi={test:t=>typeof t=="number",parse:parseFloat,transform:t=>t},ps={...yi,transform:t=>en(0,1,t)},Oo={...yi,default:1},Sc=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function zx(t){return t==null}const Dx=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,kc=(t,r)=>i=>!!(typeof i=="string"&&Dx.test(i)&&i.startsWith(t)||r&&!zx(i)&&Object.prototype.hasOwnProperty.call(i,r)),qm=(t,r,i)=>o=>{if(typeof o!="string")return o;const[l,c,u,f]=o.match(Sc);return{[t]:parseFloat(l),[r]:parseFloat(c),[i]:parseFloat(u),alpha:f!==void 0?parseFloat(f):1}},Nx=t=>en(0,255,t),du={...yi,transform:t=>Math.round(Nx(t))},Ar={test:kc("rgb","red"),parse:qm("red","green","blue"),transform:({red:t,green:r,blue:i,alpha:o=1})=>"rgba("+du.transform(t)+", "+du.transform(r)+", "+du.transform(i)+", "+hi(ps.transform(o))+")"};function Vx(t){let r="",i="",o="",l="";return t.length>5?(r=t.substring(1,3),i=t.substring(3,5),o=t.substring(5,7),l=t.substring(7,9)):(r=t.substring(1,2),i=t.substring(2,3),o=t.substring(3,4),l=t.substring(4,5),r+=r,i+=i,o+=o,l+=l),{red:parseInt(r,16),green:parseInt(i,16),blue:parseInt(o,16),alpha:l?parseInt(l,16)/255:1}}const Nu={test:kc("#"),parse:Vx,transform:Ar.transform},ks=t=>({test:r=>typeof r=="string"&&r.endsWith(t)&&r.split(" ").length===1,parse:parseFloat,transform:r=>`${r}${t}`}),bn=ks("deg"),fn=ks("%"),se=ks("px"),Ox=ks("vh"),Fx=ks("vw"),Kh={...fn,parse:t=>fn.parse(t)/100,transform:t=>fn.transform(t*100)},ui={test:kc("hsl","hue"),parse:qm("hue","saturation","lightness"),transform:({hue:t,saturation:r,lightness:i,alpha:o=1})=>"hsla("+Math.round(t)+", "+fn.transform(hi(r))+", "+fn.transform(hi(i))+", "+hi(ps.transform(o))+")"},nt={test:t=>Ar.test(t)||Nu.test(t)||ui.test(t),parse:t=>Ar.test(t)?Ar.parse(t):ui.test(t)?ui.parse(t):Nu.parse(t),transform:t=>typeof t=="string"?t:t.hasOwnProperty("red")?Ar.transform(t):ui.transform(t),getAnimatableNone:t=>{const r=nt.parse(t);return r.alpha=0,nt.transform(r)}},Bx=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu,Jm=new RegExp(Sc.source),eg=new RegExp(Bx.source,"i");function $x(t){return isNaN(t)&&typeof t=="string"&&(Jm.test(t)||eg.test(t))}const tg="number",ng="color",Wx="var",Ux="var(",Gh="${}",Hx=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function Kx(t){const r=t.toString();return Jm.test(r)||eg.test(r)}function ms(t){const r=t.toString(),i=[],o={color:[],number:[],var:[]},l=[];let c=0;const f=r.replace(Hx,p=>(nt.test(p)?(o.color.push(c),l.push(ng),i.push(nt.parse(p))):p.startsWith(Ux)?(o.var.push(c),l.push(Wx),i.push(p)):(o.number.push(c),l.push(tg),i.push(parseFloat(p))),++c,Gh)).split(Gh);return{values:i,split:f,indexes:o,types:l}}function Gx(t){return ms(t).values}function rg({split:t,types:r}){const i=t.length;return o=>{let l="";for(let c=0;c<i;c++)if(l+=t[c],o[c]!==void 0){const u=r[c];u===tg?l+=hi(o[c]):u===ng?l+=nt.transform(o[c]):l+=o[c]}return l}}function Xx(t){return rg(ms(t))}const Yx=t=>typeof t=="number"?0:nt.test(t)?nt.getAnimatableNone(t):t,Qx=(t,r)=>typeof t=="number"?r!=null&&r.trim().endsWith("/")?t:0:Yx(t);function Zx(t){const r=ms(t);return rg(r)(r.values.map((o,l)=>Qx(o,r.split[l])))}const Dt={test:$x,parse:Gx,createTransformer:Xx,getAnimatableNone:Zx};function fu(t,r,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+(r-t)*6*i:i<1/2?r:i<2/3?t+(r-t)*(2/3-i)*6:t}function qx({hue:t,saturation:r,lightness:i,alpha:o}){t/=360,r/=100,i/=100;let l=0,c=0,u=0;if(!r)l=c=u=i;else{const f=i<.5?i*(1+r):i+r-i*r,p=2*i-f;l=fu(p,f,t+1/3),c=fu(p,f,t),u=fu(p,f,t-1/3)}return{red:Math.round(l*255),green:Math.round(c*255),blue:Math.round(u*255),alpha:o}}function nl(t,r){return i=>i>0?r:t}const je=(t,r,i)=>t+(r-t)*i,hu=(t,r,i)=>{const o=t*t,l=i*(r*r-o)+o;return l<0?0:Math.sqrt(l)},Jx=[Nu,Ar,ui],ew=t=>Jx.find(r=>r.test(t));function Xh(t){const r=ew(t);if(!r)return!1;let i=r.parse(t);return r===ui&&(i=qx(i)),i}const Yh=(t,r)=>{const i=Xh(t),o=Xh(r);if(!i||!o)return nl(t,r);const l={...i};return c=>(l.red=hu(i.red,o.red,c),l.green=hu(i.green,o.green,c),l.blue=hu(i.blue,o.blue,c),l.alpha=je(i.alpha,o.alpha,c),Ar.transform(l))},Vu=new Set(["none","hidden"]);function tw(t,r){return Vu.has(t)?i=>i<=0?t:r:i=>i>=1?r:t}function nw(t,r){return i=>je(t,r,i)}function Tc(t){return typeof t=="number"?nw:typeof t=="string"?wc(t)?nl:nt.test(t)?Yh:sw:Array.isArray(t)?ig:typeof t=="object"?nt.test(t)?Yh:rw:nl}function ig(t,r){const i=[...t],o=i.length,l=t.map((c,u)=>Tc(c)(c,r[u]));return c=>{for(let u=0;u<o;u++)i[u]=l[u](c);return i}}function rw(t,r){const i={...t,...r},o={};for(const l in i)t[l]!==void 0&&r[l]!==void 0&&(o[l]=Tc(t[l])(t[l],r[l]));return l=>{for(const c in o)i[c]=o[c](l);return i}}function iw(t,r){const i=[],o={color:0,var:0,number:0};for(let l=0;l<r.values.length;l++){const c=r.types[l],u=t.indexes[c][o[c]],f=t.values[u]??0;i[l]=f,o[c]++}return i}const sw=(t,r)=>{const i=Dt.createTransformer(r),o=ms(t),l=ms(r);return o.indexes.var.length===l.indexes.var.length&&o.indexes.color.length===l.indexes.color.length&&o.indexes.number.length>=l.indexes.number.length?Vu.has(t)&&!l.values.length||Vu.has(r)&&!o.values.length?tw(t,r):ws(ig(iw(o,l),l.values),i):nl(t,r)},Qh=/^(-?(?:\d+(?:\.\d*)?|\.\d+))([a-z%]*)$/iu;function ow(t,r){const i=Qh.exec(t);if(!i)return;const o=Qh.exec(r);if(!o||i[2]!==o[2])return;const l=i[2],c=parseFloat(i[1]),u=parseFloat(o[1]);return f=>hi(je(c,u,f))+l}function Cc(t,r,i){if(typeof t=="number"&&typeof r=="number"&&typeof i=="number")return je(t,r,i);if(typeof t=="string"&&typeof r=="string"){const l=ow(t,r);if(l)return l}return Tc(t)(t,r)}const lw=t=>{const r=({timestamp:i})=>t(i);return{start:(i=!0)=>Me.update(r,i),stop:()=>qn(r),now:()=>tt.isProcessing?tt.timestamp:yt.now()}},sg=(t,r,i=10)=>{let o="";const l=Math.max(Math.round(r/i),2);for(let c=0;c<l;c++)o+=Math.round(t(c/(l-1))*1e4)/1e4+", ";return`linear(${o.substring(0,o.length-2)})`},Ec=2e4;function bc(t,r=50,i=Ec,o){let l=0,c=t.next(l);for(;!c.done&&l<i;)l+=r,c=t.next(l);return l>=i?1/0:l}function og(t,r=100,i){const o=i({...t,keyframes:[0,r]}),l=Math.min(bc(o),Ec);return{type:"keyframes",ease:c=>o.next(l*c).value/r,duration:It(l)}}const Ue={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1};function Ou(t,r){return t*Math.sqrt(1-r*r)}const aw=12;function uw(t,r,i){let o=i;for(let l=1;l<aw;l++)o=o-t(o)/r(o);return o}const pu=.001;function cw({duration:t=Ue.duration,bounce:r=Ue.bounce,velocity:i=Ue.velocity,mass:o=Ue.mass}){let l,c,u=1-r;u=en(Ue.minDamping,Ue.maxDamping,u),t=en(Ue.minDuration,Ue.maxDuration,It(t)),u<1?(l=m=>{const g=m*u,y=g*t,x=g-i,w=Ou(m,u),k=Math.exp(-y);return pu-x/w*k},c=m=>{const y=m*u*t,x=y*i+i,w=u*u*m*m*t,k=Math.exp(-y),C=Ou(m*m,u);return(-l(m)+pu>0?-1:1)*((x-w)*k)/C}):(l=m=>{const g=Math.exp(-m*t),y=(m-i)*t+1;return-pu+g*y},c=m=>{const g=Math.exp(-m*t),y=(i-m)*(t*t);return g*y});const f=5/t,p=uw(l,c,f);if(t=zt(t),isNaN(p))return{stiffness:Ue.stiffness,damping:Ue.damping,duration:t};{const m=p*p*o;return{stiffness:m,damping:u*2*Math.sqrt(o*m),duration:t}}}const lg=["duration","bounce"],ag=["stiffness","damping","mass"];function rl(t,r){return r.some(i=>t[i]!==void 0)}function dw(t){let r={velocity:Ue.velocity,stiffness:Ue.stiffness,damping:Ue.damping,mass:Ue.mass,isResolvedFromDuration:!1,...t};if(!rl(t,ag)&&rl(t,lg))if(r.velocity=0,t.visualDuration){const i=t.visualDuration,o=2*Math.PI/(i*1.2),l=o*o,c=2*en(.05,1,1-(t.bounce||0))*Math.sqrt(l);r={...r,mass:Ue.mass,stiffness:l,damping:c}}else{const i=cw({...t,velocity:0});r={...r,...i,mass:Ue.mass},r.isResolvedFromDuration=!0}return r}function gs(t=Ue.visualDuration,r=Ue.bounce){const i=typeof t!="object"?{visualDuration:t,keyframes:[0,1],bounce:r}:t,o=i.keyframes[0],l=i.keyframes[i.keyframes.length-1],c={done:!1,value:o},{stiffness:u,damping:f,mass:p,duration:m,velocity:g,isResolvedFromDuration:y}=dw({...i,velocity:-It(i.velocity||0)}),x=f/(2*Math.sqrt(u*p)),w=It(Math.sqrt(u/p)),k=x*w,C={target:l,delta:l-o,velocity:g||0,restSpeed:0,restDelta:0},E=()=>{const N=Math.abs(C.delta)<5;C.restSpeed=i.restSpeed||(N?Ue.restSpeed.granular:Ue.restSpeed.default),C.restDelta=i.restDelta||(N?Ue.restDelta.granular:Ue.restDelta.default)};E();let M,L,I;if(x<1){const N=Ou(w,x),j={A:0,sinC:0,cosC:0,t:-1,env:0,sin:0,cos:0};I=()=>{j.A=(C.velocity+k*C.delta)/N,j.sinC=k*j.A+C.delta*N,j.cosC=k*C.delta-j.A*N};const W=ee=>{ee!==j.t&&(j.t=ee,j.env=Math.exp(-k*ee),j.sin=Math.sin(N*ee),j.cos=Math.cos(N*ee))};M=ee=>(W(ee),C.target-j.env*(j.A*j.sin+C.delta*j.cos)),L=ee=>(W(ee),j.env*(j.sinC*j.sin+j.cosC*j.cos))}else if(x===1){M=j=>C.target-Math.exp(-w*j)*(C.delta+(C.velocity+w*C.delta)*j);const N={C:0};I=()=>{N.C=C.velocity+w*C.delta},L=j=>Math.exp(-w*j)*(w*N.C*j-C.velocity)}else{const N=w*Math.sqrt(x*x-1);M=W=>{const ee=Math.exp(-k*W),de=Math.min(N*W,300);return C.target-ee*((C.velocity+k*C.delta)*Math.sinh(de)+N*C.delta*Math.cosh(de))/N};const j={P:0,sinh:0,cosh:0};I=()=>{j.P=(C.velocity+k*C.delta)/N,j.sinh=k*j.P-C.delta*N,j.cosh=k*C.delta-j.P*N},L=W=>{const ee=Math.exp(-k*W),de=Math.min(N*W,300);return ee*(j.sinh*Math.sinh(de)+j.cosh*Math.cosh(de))}}I();const D=!rl(i,ag)&&rl(i,lg),U=y&&m||null,Y={calculatedDuration:U,retarget:(N,j)=>{C.target=N[N.length-1],C.delta=C.target-N[0],C.velocity=D?0:-It(j),i.restSpeed&&i.restDelta||E(),Y.calculatedDuration=U,c.done=!1,I()},velocity:N=>zt(L(N)),next:N=>{const j=M(N);if(y)c.done=N>=m;else{const W=zt(L(N));c.done=Math.abs(W)<=C.restSpeed&&Math.abs(C.target-j)<=C.restDelta}return c.value=c.done?C.target:j,c},toString:()=>{const N=Math.min(bc(Y),Ec),j=sg(W=>Y.next(N*W).value,N,30);return N+"ms "+j},toTransition:()=>{}};return Y}gs.applyToOptions=t=>{const r=og(t,100,gs);return t.ease=r.ease,t.duration=zt(r.duration),t.type="keyframes",t};function Fu({keyframes:t,velocity:r=0,power:i=.8,timeConstant:o=325,bounceDamping:l=10,bounceStiffness:c=500,modifyTarget:u,min:f,max:p,restDelta:m=.5,restSpeed:g}){const y=t[0],x={done:!1,value:y},w=N=>N<f||N>p,k=N=>f===void 0?p:p===void 0||Math.abs(f-N)<Math.abs(p-N)?f:p;let C=i*r;const E=y+C,M=u===void 0?E:u(E);M!==E&&(C=M-y);const L=N=>-C*Math.exp(-N/o),I=N=>{const j=L(N);x.done=Math.abs(j)<=m,x.value=x.done?M:M+j};let D,U;const Y=N=>{w(x.value)&&(D=N,U=gs({keyframes:[x.value,k(x.value)],velocity:-L(N)/o*1e3,damping:l,stiffness:c,restDelta:m,restSpeed:g}))};return Y(0),{calculatedDuration:null,next:N=>{let j=!1;return!U&&D===void 0&&(j=!0,I(N),Y(N)),D!==void 0&&N>=D?U.next(N-D):(!j&&I(N),x)}}}function fw(t,r,i){const o=[],l=i||Pn.mix||Cc,c=t.length-1;for(let u=0;u<c;u++){let f=l(t[u],t[u+1]);if(r){const p=Array.isArray(r)?r[u]||qt:r;f=ws(p,f)}o.push(f)}return o}function hw(t,r,{clamp:i=!0,ease:o,mixer:l}={}){const c=t.length;if(xs(c===r.length),c===1)return()=>r[0];if(c===2&&r[0]===r[1])return()=>r[1];const u=t[0]===t[1];t[0]>t[c-1]&&(t=[...t].reverse(),r=[...r].reverse());const f=fw(r,o,l),p=f.length,m=g=>{if(u&&g<t[0])return r[0];let y=0;if(p>1)for(;y<t.length-2&&!(g<t[y+1]);y++);const x=mi(t[y],t[y+1],g);return f[y](x)};return i?g=>m(en(t[0],t[c-1],g)):m}function ug(t,r){const i=t[t.length-1];for(let o=1;o<=r;o++){const l=mi(0,r,o);t.push(je(i,1,l))}}function cg(t){const r=[0];return ug(r,t.length-1),r}function pw(t,r){return t.map(i=>i*r)}function mw(t,r){return t.map(()=>r||Hm).splice(0,t.length-1)}function cs({duration:t=300,keyframes:r,times:i,ease:o="easeInOut"}){const l=Km(o)?o.map(Uh):Uh(o),c={done:!1,value:r[0]};if(r.length===2&&!Array.isArray(l)&&(!i||i.length!==2||i[0]===0&&i[1]===1)){const[p,m]=r,g=p===m?void 0:(Pn.mix||Cc)(p,m);return{calculatedDuration:t,next:y=>(c.value=g?g(l(t>0?en(0,1,y/t):1)):m,c.done=y>=t,c)}}const u=pw(i&&i.length===r.length?i:cg(r),t),f=hw(u,r,{ease:Array.isArray(l)?l:mw(r,l)});return{calculatedDuration:t,next:p=>(c.value=f(p),c.done=p>=t,c)}}const gw=5;function yw(t,r,i){const o=Math.max(r-gw,0);return Nm(i-t(o),r-o)}function vw(t,r,i=0){return r<=0?i:t.velocity?t.velocity(r):yw(o=>t.next(o).value,r,t.next(r).value)}const xw=t=>t!==null;function ml(t,{repeat:r,repeatType:i="loop"},o,l=1){const c=t.filter(xw),f=l<0||r&&i!=="loop"&&r%2===1?0:c.length-1;return!f||o===void 0?c[f]:o}const ww={decay:Fu,inertia:Fu,tween:cs,keyframes:cs,spring:gs};function dg(t){typeof t.type=="string"&&(t.type=ww[t.type])}function fg(t,r){return{kind:t,animation:r,timestamp:yt.now(),frameTimestamp:tt.timestamp,frameIsProcessing:tt.isProcessing}}function hg(t,r,i){const o=globalThis.__MOTION_INSPECT__;if(o)try{o({...fg("animation-start",t),options:i?{...r,...i}:r})}catch{}}function Sw(t,r){const i=globalThis.__MOTION_INSPECT__;if(i)try{i({...fg("layout-animation-start",t),node:r})}catch{}}class Pc{constructor(){this.isResolved=!1}get finished(){return this._finished||(this._finished=this.isResolved?Promise.resolve():new Promise(r=>{this._resolve=r})),this._finished}updateFinished(){this._finished=this._resolve=void 0,this.isResolved=!1}notifyFinished(){var r;this.isResolved=!0,(r=this._resolve)==null||r.call(this)}then(r,i){return this.finished.then(r,i)}}const kw=t=>t/100;class il extends Pc{constructor(r){super(),this.state="idle",this.startTime=null,this.isStopped=!1,this.currentTime=0,this.holdTime=null,this.playbackSpeed=1,this.delayState={done:!1,value:void 0},this.stop=()=>{var o,l;const{motionValue:i}=this.options;i&&i.updatedAt!==yt.now()&&this.tick(yt.now()),this.isStopped=!0,this.state!=="idle"&&(this.teardown(),(l=(o=this.options).onStop)==null||l.call(o))},this.options=r,this.initAnimation(),this.play(),r.autoplay===!1&&this.pause(),hg(this,this.options)}initAnimation(){const{options:r}=this;dg(r);const{type:i=cs,repeat:o=0,repeatDelay:l=0,repeatType:c,velocity:u=0}=r;let{keyframes:f}=r;const p=i||cs;p!==cs&&typeof f[0]!="number"&&(this.mixKeyframes=ws(kw,Cc(f[0],f[1])),f=[0,100]);const m=p(f===r.keyframes?r:{...r,keyframes:f});c==="mirror"&&(this.mirroredGenerator=p({...r,keyframes:[...f].reverse(),velocity:-u})),m.calculatedDuration===null&&(m.calculatedDuration=bc(m));const{calculatedDuration:g}=m;this.calculatedDuration=g,this.resolvedDuration=g+l,this.totalDuration=this.resolvedDuration*(o+1)-l,this.generator=m}updateTime(r){const i=Math.round(r-this.startTime)*this.playbackSpeed;this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=i}tick(r,i=!1){const{generator:o,totalDuration:l,mixKeyframes:c,mirroredGenerator:u,resolvedDuration:f,calculatedDuration:p}=this;if(this.startTime===null)return o.next(0);const{delay:m=0,keyframes:g,repeat:y,repeatType:x,repeatDelay:w,type:k,onUpdate:C,finalKeyframe:E}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,r):this.speed<0&&(this.startTime=Math.min(r-l/this.speed,this.startTime)),i?this.currentTime=r:this.updateTime(r);const M=this.currentTime-m*(this.playbackSpeed>=0?1:-1),L=this.playbackSpeed>=0?M<0:M>l;this.currentTime=Math.max(M,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=l);let I=this.currentTime,D=o;if(y){const j=Math.min(this.currentTime,l)/f;let W=Math.floor(j),ee=j%1;!ee&&j>=1&&(ee=1),ee===1&&W--,W=Math.min(W,y+1),!!(W%2)&&(x==="reverse"?(ee=1-ee,w&&(ee-=w/f)):x==="mirror"&&(D=u)),I=en(0,1,ee)*f}let U;L?(this.delayState.value=g[0],U=this.delayState):U=D.next(I),c&&!L&&(U.value=c(U.value));let{done:Y}=U;!L&&p!==null&&(Y=this.playbackSpeed>=0?this.currentTime>=l:this.currentTime<=0);const N=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&Y);return N&&k!==Fu&&(U.value=ml(g,this.options,E,this.speed)),C&&C(U.value),N&&this.finish(),U}then(r,i){return this.finished.then(r,i)}get duration(){return It(this.calculatedDuration)}get iterationDuration(){const{delay:r=0}=this.options||{};return this.duration+It(r)}get time(){return It(this.currentTime)}set time(r){r=zt(r),this.currentTime=r,this.startTime===null||this.holdTime!==null||this.playbackSpeed===0?this.holdTime=r:this.driver&&(this.startTime=this.driver.now()-r/this.playbackSpeed),this.driver?this.driver.start(!1):(this.startTime=0,this.state="paused",this.holdTime=r,this.tick(r))}getGeneratorVelocity(){return vw(this.generator,this.currentTime,this.options.velocity)}get speed(){return this.playbackSpeed}set speed(r){const i=this.playbackSpeed!==r;i&&this.driver&&this.updateTime(yt.now()),this.playbackSpeed=r,i&&this.driver&&(this.time=It(this.currentTime))}play(){var l,c;if(this.isStopped)return;const{driver:r=lw,startTime:i}=this.options;this.driver||(this.driver=r(u=>this.tick(u))),(c=(l=this.options).onPlay)==null||c.call(l);const o=this.driver.now();this.state==="finished"?(this.updateFinished(),this.startTime=o):this.holdTime!==null?this.startTime=o-this.holdTime:this.startTime||(this.startTime=i??o),this.state==="finished"&&this.speed<0&&(this.startTime+=this.calculatedDuration),this.holdTime=null,this.state="running",this.driver.start()}pause(){this.state="paused",this.updateTime(yt.now()),this.holdTime=this.currentTime}complete(){this.state!=="running"&&this.play(),this.state="finished",this.holdTime=null}finish(){var r,i;this.notifyFinished(),this.teardown(),this.state="finished",(i=(r=this.options).onComplete)==null||i.call(r)}cancel(){var r,i;this.holdTime=null,this.startTime=0,this.tick(0),this.teardown(),(i=(r=this.options).onCancel)==null||i.call(r)}teardown(){this.state="idle",this.stopDriver(),this.startTime=this.holdTime=null}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(r){return this.startTime=0,this.tick(r,!0)}attachTimeline(r){var i;return this.options.allowFlatten&&(this.options.type="keyframes",this.options.ease="linear",this.initAnimation()),(i=this.driver)==null||i.stop(),r.observe(this)}}const Tw=new Set(["brightness","contrast","saturate","opacity"]);function Cw(t){const[r,i]=t.slice(0,-1).split("(");if(r==="drop-shadow")return t;const[o]=i.match(Sc)||[];if(!o)return t;const l=i.replace(o,"");let c=Tw.has(r)?1:0;return o!==i&&(c*=100),r+"("+c+l+")"}const Ew=/\b([a-z-]*)\(.*?\)/gu,Bu={...Dt,getAnimatableNone:t=>{const r=t.match(Ew);return r?r.map(Cw).join(" "):t}},$u={...Dt,getAnimatableNone:t=>{const r=Dt.parse(t);return Dt.createTransformer(t)(r.map(o=>typeof o=="number"?0:typeof o=="object"?{...o,alpha:1}:o))}},Zh={...yi,transform:Math.round},Wu={rotate:bn,pathRotation:bn,rotateX:bn,rotateY:bn,rotateZ:bn,scale:Oo,scaleX:Oo,scaleY:Oo,scaleZ:Oo,skew:bn,skewX:bn,skewY:bn,distance:se,translateX:se,translateY:se,translateZ:se,x:se,y:se,z:se,perspective:se,transformPerspective:se,opacity:ps,originX:Kh,originY:Kh,originZ:se},hn={borderWidth:se,borderTopWidth:se,borderRightWidth:se,borderBottomWidth:se,borderLeftWidth:se,borderRadius:se,borderTopLeftRadius:se,borderTopRightRadius:se,borderBottomRightRadius:se,borderBottomLeftRadius:se,width:se,maxWidth:se,height:se,maxHeight:se,top:se,right:se,bottom:se,left:se,inset:se,insetBlock:se,insetBlockStart:se,insetBlockEnd:se,insetInline:se,insetInlineStart:se,insetInlineEnd:se,padding:se,paddingTop:se,paddingRight:se,paddingBottom:se,paddingLeft:se,paddingBlock:se,paddingBlockStart:se,paddingBlockEnd:se,paddingInline:se,paddingInlineStart:se,paddingInlineEnd:se,margin:se,marginTop:se,marginRight:se,marginBottom:se,marginLeft:se,marginBlock:se,marginBlockStart:se,marginBlockEnd:se,marginInline:se,marginInlineStart:se,marginInlineEnd:se,fontSize:se,backgroundPositionX:se,backgroundPositionY:se,...Wu,zIndex:Zh,fillOpacity:ps,strokeOpacity:ps,numOctaves:Zh},bw={...hn,color:nt,backgroundColor:nt,outlineColor:nt,fill:nt,stroke:nt,borderColor:nt,borderTopColor:nt,borderRightColor:nt,borderBottomColor:nt,borderLeftColor:nt,filter:Bu,WebkitFilter:Bu,mask:$u,WebkitMask:$u},pg=t=>bw[t],Pw=new Set([Bu,$u]);function Ac(t,r){let i=pg(t);return Pw.has(i)||(i=Dt),i.getAnimatableNone?i.getAnimatableNone(r):void 0}function Aw(t){for(let r=1;r<t.length;r++)t[r]??(t[r]=t[r-1])}const Mr=t=>t*180/Math.PI,Uu=t=>{const r=Mr(Math.atan2(t[1],t[0]));return Hu(r)},Mw={x:4,y:5,translateX:4,translateY:5,scaleX:0,scaleY:3,scale:t=>(Math.abs(t[0])+Math.abs(t[3]))/2,rotate:Uu,rotateZ:Uu,skewX:t=>Mr(Math.atan(t[1])),skewY:t=>Mr(Math.atan(t[2])),skew:t=>(Math.abs(t[1])+Math.abs(t[2]))/2},Hu=t=>(t=t%360,t<0&&(t+=360),t),qh=Uu,Jh=t=>Math.sqrt(t[0]*t[0]+t[1]*t[1]),ep=t=>Math.sqrt(t[4]*t[4]+t[5]*t[5]),Rw={x:12,y:13,z:14,translateX:12,translateY:13,translateZ:14,scaleX:Jh,scaleY:ep,scale:t=>(Jh(t)+ep(t))/2,rotateX:t=>Hu(Mr(Math.atan2(t[6],t[5]))),rotateY:t=>Hu(Mr(Math.atan2(-t[2],t[0]))),rotateZ:qh,rotate:qh,skewX:t=>Mr(Math.atan(t[4])),skewY:t=>Mr(Math.atan(t[1])),skew:t=>(Math.abs(t[1])+Math.abs(t[4]))/2};function Ku(t){return t.includes("scale")?1:0}function Gu(t,r){if(!t||t==="none")return Ku(r);const i=t.match(/^matrix3d\(([-\d.e\s,]+)\)$/u);let o,l;if(i)o=Rw,l=i;else{const f=t.match(/^matrix\(([-\d.e\s,]+)\)$/u);o=Mw,l=f}if(!l)return Ku(r);const c=o[r],u=l[1].split(",").map(jw);return typeof c=="function"?c(u):u[c]}const mg=(t,r)=>{const{transform:i="none"}=getComputedStyle(t);return Gu(i,r)};function jw(t){return parseFloat(t.trim())}const Jn=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],Mn=new Set([...Jn,"pathRotation"]),tp=t=>t===yi||t===se,Lw=new Set(["x","y","z"]),_w=Jn.filter(t=>!Lw.has(t));function Iw(t){const r=[];return _w.forEach(i=>{const o=t.getValue(i);if(o!==void 0){const l=o.get(),c=i.startsWith("scale")?1:0;if(l===c)return;r.push([i,l]),o.set(c)}}),r}const zw=new Set(["bottom","right"]);function np(t,r,i,o,l,c){const u=parseFloat(t);if(!isNaN(u))return u;const{min:f,max:p}=r()[i],m=p-f;return c==="border-box"?m:m-parseFloat(o)-parseFloat(l)}const Rr={width:({width:t,paddingLeft:r="0",paddingRight:i="0",boxSizing:o},l)=>np(t,l,"x",r,i,o),height:({height:t,paddingTop:r="0",paddingBottom:i="0",boxSizing:o},l)=>np(t,l,"y",r,i,o),top:({top:t})=>parseFloat(t),left:({left:t})=>parseFloat(t),bottom:({top:t},r)=>{const{y:i}=r();return parseFloat(t)+(i.max-i.min)},right:({left:t},r)=>{const{x:i}=r();return parseFloat(t)+(i.max-i.min)},x:({transform:t})=>Gu(t,"x"),y:({transform:t})=>Gu(t,"y")};Rr.translateX=Rr.x;Rr.translateY=Rr.y;const jr=new Set;let Xu=!1,Yu=!1,Qu=!1;function gg(){if(Yu){const t=[],r=new Set,i=new Set;jr.forEach(l=>{l.needsMeasurement&&(t.push(l),r.add(l.element),zw.has(l.name)&&i.add(l.element))});const o=new Map;i.forEach(l=>{const c=Iw(l);c.length&&(o.set(l,c),l.render())}),t.forEach(l=>l.measureInitialState()),r.forEach(l=>{l.render();const c=o.get(l);c&&c.forEach(([u,f])=>{var p;(p=l.getValue(u))==null||p.set(f)})}),t.forEach(l=>l.measureEndState()),t.forEach(l=>{l.suspendedScrollY!==void 0&&window.scrollTo(0,l.suspendedScrollY)})}Yu=!1,Xu=!1,jr.forEach(t=>t.complete(Qu)),jr.clear()}function yg(){jr.forEach(t=>{t.readKeyframes(),t.needsMeasurement&&(Yu=!0)})}function Dw(){Qu=!0,yg(),gg(),Qu=!1}function Nw(t,r,i){if(typeof t=="string"){if(pc(t)||gc(t))return parseFloat(t);if(!Dt.test(t)&&Dt.test(i))return Ac(r,i)}return t??void 0}class Mc{constructor(r,i,o,l,c,u=!1){this.state="pending",this.isAsync=!1,this.needsMeasurement=!1,this.unresolvedKeyframes=[...r],this.onComplete=i,this.name=o,this.motionValue=l,this.element=c,this.isAsync=u}scheduleResolve(){this.state="scheduled",this.isAsync?(jr.add(this),Xu||(Xu=!0,Me.read(yg),Me.resolveKeyframes(gg))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:r,name:i,element:o,motionValue:l}=this;if(r[0]===null){const c=l==null?void 0:l.get(),u=r[r.length-1];if(c!==void 0)r[0]=c;else if(o&&i){const f=Nw(o.readValue(i,u),i,u);f!==void 0&&(r[0]=f)}r[0]===void 0&&(r[0]=u),l&&c===void 0&&l.set(r[0])}Aw(r)}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(r=!1){this.state="complete",this.onComplete(this.unresolvedKeyframes,this.finalKeyframe,r),jr.delete(this)}cancel(){this.state==="scheduled"&&(jr.delete(this),this.state="pending")}resume(){this.state==="pending"&&this.scheduleResolve()}}const Rc=t=>t.startsWith("--");function vg(t,r,i){Rc(r)?t.style.setProperty(r,i):t.style[r]=i}const Vw={};function xg(t,r){const i=Dm(t);return()=>Vw[r]??i()}const Ow=xg(()=>window.ScrollTimeline!==void 0,"scrollTimeline"),wg=xg(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),us=([t,r,i,o])=>`cubic-bezier(${t}, ${r}, ${i}, ${o})`,rp={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:us([0,.65,.55,1]),circOut:us([.55,0,1,.45]),backIn:us([.31,.01,.66,-.59]),backOut:us([.33,1.53,.69,.99])};function Sg(t,r){if(t)return typeof t=="function"?wg()?sg(t,r):"ease-out":Xm(t)?us(t):Array.isArray(t)?t.map(i=>Sg(i,r)||rp.easeOut):rp[t]}function Fw(t,r,i,{delay:o=0,duration:l=300,repeat:c=0,repeatType:u="loop",ease:f="easeOut",times:p}={},m=void 0){const g={[r]:i};p&&(g.offset=p);const y=Sg(f,l);Array.isArray(y)&&(g.easing=y);const x={delay:o,duration:l,easing:Array.isArray(y)?"linear":y,fill:"both",iterations:c+1,direction:u==="reverse"?"alternate":"normal"};return m&&(x.pseudoElement=m),t.animate(g,x)}function jc(t){return typeof t=="function"&&"applyToOptions"in t}function Bw({type:t,...r}){return jc(t)&&wg()?t.applyToOptions(r):(r.duration??(r.duration=300),r.ease??(r.ease="easeOut"),r)}class kg extends Pc{constructor(r){if(super(),this.finishedTime=null,this.isStopped=!1,this.manualStartTime=null,!r)return;const{element:i,name:o,keyframes:l,pseudoElement:c,allowFlatten:u=!1,finalKeyframe:f,onComplete:p}=r;this.isPseudoElement=!!c,this.allowFlatten=u,this.options=r,xs(typeof r.type!="string");const m=Bw(r);this.animation=Fw(i,o,l,m,c),m.autoplay===!1&&this.animation.pause(),this.animation.onfinish=()=>{if(this.finishedTime=this.time,!c){const g=ml(l,this.options,f,this.speed);this.updateMotionValue&&this.updateMotionValue(g),vg(i,o,g),this.animation.cancel()}p==null||p(),this.notifyFinished()},hg(this,r,m)}play(){this.isStopped||(this.manualStartTime=null,this.animation.play(),this.state==="finished"&&this.updateFinished())}pause(){this.animation.pause()}complete(){var r,i;(i=(r=this.animation).finish)==null||i.call(r)}cancel(){try{this.animation.cancel()}catch{}}stop(){if(this.isStopped)return;this.isStopped=!0;const{state:r}=this;r==="idle"||r==="finished"||(this.updateMotionValue?this.updateMotionValue():this.commitStyles(),this.isPseudoElement||this.cancel())}commitStyles(){var i,o,l;const r=(i=this.options)==null?void 0:i.element;!this.isPseudoElement&&(r!=null&&r.isConnected)&&((l=(o=this.animation).commitStyles)==null||l.call(o))}get duration(){var i,o;const r=((o=(i=this.animation.effect)==null?void 0:i.getComputedTiming)==null?void 0:o.call(i).duration)||0;return It(Number(r))}get iterationDuration(){const{delay:r=0}=this.options||{};return this.duration+It(r)}get time(){return It(Number(this.animation.currentTime)||0)}set time(r){const i=this.finishedTime!==null;this.manualStartTime=null,this.finishedTime=null,this.animation.currentTime=zt(r),i&&this.animation.pause()}get speed(){return this.animation.playbackRate}set speed(r){r<0&&(this.finishedTime=null),this.animation.playbackRate=r}get state(){return this.finishedTime!==null?"finished":this.animation.playState}get startTime(){return this.manualStartTime??Number(this.animation.startTime)}set startTime(r){this.manualStartTime=this.animation.startTime=r}attachTimeline({timeline:r,rangeStart:i,rangeEnd:o,observe:l}){var c;return this.allowFlatten&&((c=this.animation.effect)==null||c.updateTiming({easing:"linear"})),this.animation.onfinish=null,r&&Ow()?(this.animation.timeline=r,i&&(this.animation.rangeStart=i),o&&(this.animation.rangeEnd=o),qt):l(this)}}const Tg={anticipate:$m,backInOut:Bm,circInOut:Um};function $w(t){return t in Tg}function Ww(t){typeof t.ease=="string"&&$w(t.ease)&&(t.ease=Tg[t.ease])}const mu=10;class Uw extends kg{constructor(r){Ww(r),dg(r),super(r),r.startTime!==void 0&&r.autoplay!==!1&&(this.startTime=r.startTime),this.options=r}updateMotionValue(r){const{motionValue:i,onUpdate:o,onComplete:l,element:c,...u}=this.options;if(!i)return;if(r!==void 0){i.set(r);return}const f=new il({...u,autoplay:!1}),p=Math.max(mu,yt.now()-this.startTime),m=en(0,mu,p-mu),g=f.sample(p).value,{name:y}=this.options;c&&y&&vg(c,y,g),i.setWithVelocity(f.sample(Math.max(0,p-m)).value,g,m),f.stop()}}const ip=(t,r)=>r==="zIndex"?!1:!!(typeof t=="number"||Array.isArray(t)||typeof t=="string"&&(Dt.test(t)||t==="0")&&!t.startsWith("url("));function Hw(t){const r=t[0];if(t.length===1)return!0;for(let i=0;i<t.length;i++)if(t[i]!==r)return!0}function Kw(t,r,i,o){const l=t[0];if(l===null)return!1;if(r==="display"||r==="visibility")return!0;const c=t[t.length-1],u=ip(l,r),f=ip(c,r);return!u||!f?!1:Hw(t)||(i==="spring"||jc(i))&&o}function Zu(t){t.duration=0,t.type="keyframes"}const qu=new Set(["opacity","clipPath","filter","transform","backgroundColor"]),Gw=/^(?:oklch|oklab|lab|lch|color|color-mix|light-dark)\(/;function Xw(t){for(let r=0;r<t.length;r++)if(typeof t[r]=="string"&&Gw.test(t[r]))return!0;return!1}const sp=new Set(["color","backgroundColor","outlineColor","fill","stroke","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"]),Yw=Dm(()=>Object.hasOwnProperty.call(Element.prototype,"animate"));function Qw(t){var y;const{motionValue:r,name:i,repeatDelay:o,repeatType:l,damping:c,type:u,keyframes:f}=t;if(!i||!(qu.has(i)||sp.has(i)))return!1;const p=(y=r==null?void 0:r.owner)==null?void 0:y.current;if(!(p instanceof HTMLElement)&&!(p instanceof SVGElement))return!1;const{onUpdate:m,transformTemplate:g}=r.owner.getProps();return Yw()&&(qu.has(i)||sp.has(i)&&Xw(f))&&(i!=="transform"||!g)&&!m&&!o&&l!=="mirror"&&c!==0&&u!=="inertia"}const Zw=40;class qw extends Pc{constructor(r){var p;super(),this.stop=()=>{var m,g;this._animation&&(this._animation.stop(),(m=this.stopTimeline)==null||m.call(this)),(g=this.keyframeResolver)==null||g.cancel()},this.createdAt=yt.now();const{keyframes:i,name:o,motionValue:l,element:c}=r,u=r;u.autoplay??(u.autoplay=!0),u.delay??(u.delay=0),u.type??(u.type="keyframes"),u.repeat??(u.repeat=0),u.repeatDelay??(u.repeatDelay=0),u.repeatType??(u.repeatType="loop");const f=(c==null?void 0:c.KeyframeResolver)||Mc;this.keyframeResolver=new f(i,(m,g,y)=>this.onKeyframesResolved(m,g,u,!y),o,l,c),(p=this.keyframeResolver)==null||p.scheduleResolve()}onKeyframesResolved(r,i,o,l){var E,M;this.keyframeResolver=void 0;const{name:c,type:u,velocity:f,delay:p,isHandoff:m,onUpdate:g}=o;this.resolvedAt=yt.now();let y=!0;Kw(r,c,u,f)||(y=!1,(Pn.instantAnimations||!p)&&(g==null||g(ml(r,o,i))),r[0]=r[r.length-1],Zu(o),o.repeat=0);const x=l?this.resolvedAt?this.resolvedAt-this.createdAt>Zw?this.resolvedAt:this.createdAt:this.createdAt:void 0,{onComplete:w}=o;o.startTime??(o.startTime=x),o.finalKeyframe=i,o.keyframes=r,o.onComplete=()=>{w==null||w(),this.notifyFinished()};const k=y&&!m&&Qw(o);let C;if(k){o.element=(M=(E=o.motionValue)==null?void 0:E.owner)==null?void 0:M.current;try{C=new Uw(o)}catch{C=new il(o)}}else C=new il(o);this.pendingTimeline&&(this.stopTimeline=C.attachTimeline(this.pendingTimeline),this.pendingTimeline=void 0),this._animation=C}get finished(){return this._animation?this._animation.finished:super.finished}then(r,i){return this.finished.finally(r).then(()=>{})}get animation(){var r;return this._animation||((r=this.keyframeResolver)==null||r.resume(),Dw()),this._animation}get duration(){return this.animation.duration}get iterationDuration(){return this.animation.iterationDuration}get time(){return this.animation.time}set time(r){this.animation.time=r}get speed(){return this.animation.speed}get state(){return this.animation.state}set speed(r){this.animation.speed=r}get startTime(){return this.animation.startTime}attachTimeline(r){return this._animation?this.stopTimeline=this.animation.attachTimeline(r):this.pendingTimeline=r,()=>this.stop()}play(){this.animation.play()}pause(){this.animation.pause()}complete(){this.animation.complete()}cancel(){var r;this._animation&&this.animation.cancel(),(r=this.keyframeResolver)==null||r.cancel()}}class Jw{constructor(r){this.stop=()=>this.runAll("stop"),this.animations=r.filter(Boolean)}get finished(){return Promise.all(this.animations.map(r=>r.finished))}getAll(r){return this.animations[0][r]}setAll(r,i){for(let o=0;o<this.animations.length;o++)this.animations[o][r]=i}attachTimeline(r){const i=this.animations.map(o=>o.attachTimeline(r));return()=>{i.forEach((o,l)=>{o&&o(),this.animations[l].stop()})}}get time(){return this.getAll("time")}set time(r){this.setAll("time",r)}get speed(){return this.getAll("speed")}set speed(r){this.setAll("speed",r)}get state(){return this.getAll("state")}get startTime(){return this.getAll("startTime")}get duration(){return op(this.animations,"duration")}get iterationDuration(){return op(this.animations,"iterationDuration")}runAll(r){this.animations.forEach(i=>i[r]())}play(){this.runAll("play")}pause(){this.runAll("pause")}cancel(){this.runAll("cancel")}complete(){this.runAll("complete")}}function op(t,r){let i=0;for(let o=0;o<t.length;o++){const l=t[o][r];l!==null&&l>i&&(i=l)}return i}class e1 extends Jw{then(r,i){return this.finished.finally(r).then(()=>{})}}function Cg(t,r,i,o=0,l=1){const c=Array.from(t).sort((m,g)=>m.sortNodePosition(g)).indexOf(r),u=t.size,f=(u-1)*o;return typeof i=="function"?i(c,u):l===1?c*o:f-c*o}const lp=30,t1=t=>!isNaN(parseFloat(t));class ds{constructor(r,i={}){this.canTrackVelocity=null,this.events={},this.updateAndNotify=o=>{const l=yt.now();if(this.updatedAt!==l&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(o),this.current!==this.prev&&(this.notifyChange(),this.dependents))for(const c of this.dependents)c.dirty()},this.hasAnimated=!1,this.setCurrent(r),this.owner=i.owner}setCurrent(r){this.current=r,this.updatedAt=yt.now(),this.canTrackVelocity===null&&r!==void 0&&(this.canTrackVelocity=t1(this.current))}setPrevFrameValue(r=this.current){this.prevFrameValue=r,this.prevUpdatedAt=this.updatedAt}onChange(r){return this.on("change",r)}on(r,i){var o;return r==="change"?this.onChangeSubscribe(i):((o=this.events)[r]||(o[r]=new tl)).add(i)}onChangeSubscribe(r){const{events:i}=this;return!i.change&&!this.changeSubscriber?this.changeSubscriber=r:(i.change||(i.change=new tl,i.change.add(this.changeSubscriber),this.changeSubscriber=void 0),i.change.add(r)),()=>{var o;this.changeSubscriber===r?this.changeSubscriber=void 0:(o=i.change)==null||o.remove(r),this.stopIfUnobserved()}}stopIfUnobserved(){Me.read(()=>{var r;!this.changeSubscriber&&!((r=this.events.change)!=null&&r.getSize())&&this.stop()})}clearListeners(){this.changeSubscriber=void 0;for(const r in this.events)this.events[r].clear()}attach(r,i){this.passiveEffect=r,this.stopPassiveEffect=i}set(r){this.passiveEffect?this.passiveEffect(r,this.updateAndNotify):this.updateAndNotify(r)}setWithVelocity(r,i,o){this.set(i),this.prev=void 0,this.prevFrameValue=r,this.prevUpdatedAt=this.updatedAt-o}jump(r,i=!0){this.updateAndNotify(r),this.prev=r,this.prevUpdatedAt=this.prevFrameValue=void 0,i&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}dirty(){this.notifyChange()}notifyChange(){var o;const{current:r,changeSubscriber:i}=this;i?i(r):(o=this.events.change)==null||o.notify(r)}addDependent(r){this.dependents||(this.dependents=new Set),this.dependents.add(r)}removeDependent(r){this.dependents&&this.dependents.delete(r)}get(){return this.current}getPrevious(){return this.prev}getVelocity(){const r=yt.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||r-this.updatedAt>lp)return 0;const i=Math.min(this.updatedAt-this.prevUpdatedAt,lp);return Nm(parseFloat(this.current)-parseFloat(this.prevFrameValue),i)}start(r){return this.stop(),new Promise(i=>{var c;this.hasAnimated=!0;let o=!1,l;l=r(()=>{var u;o=!0,(u=this.events.animationComplete)==null||u.notify(),this.animation===l&&this.clearAnimation(),i()}),o||(this.animation=l),(c=this.events.animationStart)==null||c.notify()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){this.animation=void 0}destroy(){var r,i;(r=this.dependents)==null||r.clear(),(i=this.events.destroy)==null||i.notify(),this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function er(t,r){return new ds(t,r)}function Eg(t,r){if(t!=null&&t.inherit&&r){const{inherit:i,...o}=t;return{...r,...o}}return t}function Lc(t,r){const i=(t==null?void 0:t[r])??(t==null?void 0:t.default)??t;return i!==t?Eg(i,t):i}const n1={type:"spring",stiffness:500,damping:25,restSpeed:10},r1=t=>({type:"spring",stiffness:550,damping:t===0?2*Math.sqrt(550):30,restSpeed:10}),i1={type:"keyframes",duration:.8},s1={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},o1=(t,{keyframes:r})=>r.length>2?i1:Mn.has(t)?t.startsWith("scale")?r1(r[1]):n1:s1,l1=new Set(["when","delay","delayChildren","staggerChildren","staggerDirection","repeat","repeatType","repeatDelay","from","elapsed"]);function a1(t){for(const r in t)if(!l1.has(r))return!0;return!1}const gl=(t,r,i,o={},l,c)=>u=>{const f=Lc(o,t)||{},p=f.delay||o.delay||0;let{elapsed:m=0}=o;m=m-zt(p);const g={keyframes:Array.isArray(i)?i:[null,i],ease:"easeOut",velocity:r.getVelocity(),...f,delay:-m,onUpdate:x=>{r.set(x),f.onUpdate&&f.onUpdate(x)},onComplete:()=>{u(),f.onComplete&&f.onComplete()},name:t,motionValue:r,element:c?void 0:l};a1(f)||Object.assign(g,o1(t,g)),g.duration&&(g.duration=zt(g.duration)),g.repeatDelay&&(g.repeatDelay=zt(g.repeatDelay)),g.from!==void 0&&(g.keyframes[0]=g.from);let y=!1;if((g.type===!1||g.duration===0&&!g.repeatDelay)&&(Zu(g),g.delay===0&&(y=!0)),(Pn.instantAnimations||Pn.skipAnimations||l!=null&&l.shouldSkipAnimations||f.skipAnimations)&&(y=!0,Zu(g),g.delay=0),g.allowFlatten=!f.type&&!f.ease,y&&!c&&r.get()!==void 0){const x=ml(g.keyframes,f);if(x!==void 0){Me.update(()=>{g.onUpdate(x),g.onComplete()});return}}return f.isSync?new il(g):new qw(g)},u1=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function c1(t){const r=u1.exec(t);if(!r)return[,];const[,i,o,l]=r;return[`--${i??o}`,l]}function bg(t,r,i=1){const[o,l]=c1(t);if(!o)return;const c=window.getComputedStyle(r).getPropertyValue(o);if(c){const u=c.trim();return pc(u)?parseFloat(u):u}return wc(l)?bg(l,r,i+1):l}function ap(t){const r=[{},{}];return t==null||t.values.forEach((i,o)=>{r[0][o]=i.get(),r[1][o]=i.getVelocity()}),r}function _c(t,r,i,o){if(typeof r=="function"){const[l,c]=ap(o);r=r(i!==void 0?i:t.custom,l,c)}if(typeof r=="string"&&(r=t.variants&&t.variants[r]),typeof r=="function"){const[l,c]=ap(o);r=r(i!==void 0?i:t.custom,l,c)}return r}function Lr(t,r,i){const o=t.getProps();return _c(o,r,i!==void 0?i:o.custom,t)}const Ic=new Set(["width","height","top","left","right","bottom",...Jn]),Ju=t=>Array.isArray(t);function d1(t,r,i){t.hasValue(r)?t.getValue(r).set(i):t.addValue(r,er(i))}function f1(t){return Ju(t)?t[t.length-1]||0:t}function h1(t,r){const i=Lr(t,r);let{transitionEnd:o={},transition:l={},...c}=i||{};c={...c,...o};for(const u in c){const f=f1(c[u]);d1(t,u,f)}}const rt=t=>!!(t&&t.getVelocity);function p1(t){return!!(rt(t)&&t.add)}function ec(t,r){const i=t.getValue("willChange");if(p1(i))return i.add(r);if(!i&&Pn.WillChange){const o=new Pn.WillChange("auto");t.addValue("willChange",o),o.add(r)}}function Ts(t){return t.replace(/([A-Z])/g,r=>`-${r.toLowerCase()}`)}const m1="framerAppearId",Pg="data-"+Ts(m1);function Ag(t){return t.props[Pg]}const g1=typeof window<"u";function y1({protectedKeys:t,needsAnimating:r},i){const o=t.hasOwnProperty(i)&&r[i]!==!0;return r[i]=!1,o}function Mg(t,r,{delay:i=0,transitionOverride:o,type:l}={}){let{transition:c,transitionEnd:u,...f}=r;const p=t.getDefaultTransition();c=c?Eg(c,p):p;const m=c==null?void 0:c.reduceMotion,g=c==null?void 0:c.skipAnimations;o&&(c=o);const y=[],x=l&&t.animationState&&t.animationState.getState()[l],w=c==null?void 0:c.path;w&&w.animateVisualElement(t,f,c,i,y);for(const k in f){const C=t.getValue(k,t.latestValues[k]??null),E=f[k];if(E===void 0||x&&y1(x,k))continue;const M={delay:i,...Lc(c||{},k)};g&&(M.skipAnimations=!0);const L=C.get();if(L!==void 0&&!C.isAnimating()&&!Array.isArray(E)&&E===L&&!M.velocity){Me.update(()=>C.set(E));continue}let I=!1;if(g1&&window.MotionHandoffAnimation){const Y=Ag(t);if(Y){const N=window.MotionHandoffAnimation(Y,k,Me);N!==null&&(M.startTime=N,I=!0)}}ec(t,k);const D=m??t.shouldReduceMotion;C.start(gl(k,C,E,D&&Ic.has(k)?{type:!1}:M,t,I));const U=C.animation;U&&y.push(U)}if(u){const k=()=>Me.update(()=>{u&&h1(t,u)});y.length?Promise.all(y).then(k):k()}return y}function tc(t,r,i={}){var p;const o=Lr(t,r,i.type==="exit"?(p=t.presenceContext)==null?void 0:p.custom:void 0);let{transition:l=t.getDefaultTransition()||{}}=o||{};i.transitionOverride&&(l=i.transitionOverride);const c=o?()=>Promise.all(Mg(t,o,i)):()=>Promise.resolve(),u=t.variantChildren&&t.variantChildren.size?(m=0)=>{const{delayChildren:g=0,staggerChildren:y,staggerDirection:x}=l;return v1(t,r,m,g,y,x,i)}:()=>Promise.resolve(),{when:f}=l;if(f){const[m,g]=f==="beforeChildren"?[c,u]:[u,c];return m().then(()=>g())}else return Promise.all([c(),u(i.delay)])}function v1(t,r,i=0,o=0,l=0,c=1,u){const f=[];for(const p of t.variantChildren)p.notify("AnimationStart",r),f.push(tc(p,r,{...u,delay:i+(typeof o=="function"?0:o)+Cg(t.variantChildren,p,o,l,c)}).then(()=>p.notify("AnimationComplete",r)));return Promise.all(f)}function x1(t,r,i={}){t.notify("AnimationStart",r);let o;if(Array.isArray(r)){const l=r.map(c=>tc(t,c,i));o=Promise.all(l)}else if(typeof r=="string")o=tc(t,r,i);else{const l=typeof r=="function"?Lr(t,r,i.custom):r;o=Promise.all(Mg(t,l,i))}return o.then(()=>{t.notify("AnimationComplete",r)})}const w1={test:t=>t==="auto",parse:t=>t},S1=t=>r=>r.test(t),k1=[yi,se,fn,bn,Fx,Ox,w1],up=t=>k1.find(S1(t));function T1(t){return typeof t=="number"?t===0:t!==null?t==="none"||t==="0"||gc(t):!0}const C1=new Set(["auto","none","0"]);function E1(t,r,i){let o=0,l;for(;o<t.length&&!l;){const c=t[o];typeof c=="string"&&!C1.has(c)&&Kx(c)&&(l=t[o]),o++}if(l&&i)for(const c of r)t[c]!==l&&(t[c]=Ac(i,l))}class Rg extends Mc{constructor(r,i,o,l,c){super(r,i,o,l,c,!0)}readKeyframes(){const{unresolvedKeyframes:r,element:i,name:o}=this;if(!i||!i.current)return;super.readKeyframes();for(let g=0;g<r.length;g++){let y=r[g];if(typeof y=="string"&&(y=y.trim(),wc(y))){const x=bg(y,i.current);x!==void 0&&(r[g]=x),g===r.length-1&&(this.finalKeyframe=y)}}if(this.resolveNoneKeyframes(),!Ic.has(o)||r.length!==2)return;const[l,c]=r;if(typeof l=="number"&&typeof c=="number")return;const u=up(l),f=up(c),p=Hh(l),m=Hh(c);if(p!==m&&Rr[o]){this.needsMeasurement=!0;return}if(u!==f)if(tp(u)&&tp(f))for(let g=0;g<r.length;g++){const y=r[g];typeof y=="string"&&(r[g]=parseFloat(y))}else Rr[o]&&(this.needsMeasurement=!0)}resolveNoneKeyframes(){const{unresolvedKeyframes:r,name:i}=this,o=[];for(let l=0;l<r.length;l++)(r[l]===null||T1(r[l]))&&o.push(l);o.length&&E1(r,o,i)}measure(){const{element:r,name:i}=this;return Rr[i](window.getComputedStyle(r.current),()=>r.measureViewportBox())}measureInitialState(){var c;const{element:r,unresolvedKeyframes:i,name:o}=this;if(!r||!r.current)return;o==="height"&&(this.suspendedScrollY=window.pageYOffset),this.measuredOrigin=this.measure(),i[0]=this.measuredOrigin;const l=i[i.length-1];l!==void 0&&((c=this.motionValue)==null||c.jump(l,!1))}measureEndState(){var c,u;const{element:r,unresolvedKeyframes:i}=this;if(!r||!r.current)return;(c=this.motionValue)==null||c.jump(this.measuredOrigin,!1);const o=i.length-1,l=i[o];i[o]=this.measure(),l!==null&&this.finalKeyframe===void 0&&(this.finalKeyframe=l),(u=this.removedTransforms)!=null&&u.length&&this.removedTransforms.forEach(([f,p])=>{r.getValue(f).set(p)}),this.resolveNoneKeyframes()}}const zc=["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],Dc=[];function b1(t){xs(typeof t.test=="function"&&typeof t.read=="function"),jg(t),Dc.unshift(t)}function jg(t){_r(Dc,t)}function P1(t){return Dc.find(r=>r.test(t))}function Lg(t,r,i={},o){const l=[],{velocity:c}=i,u=i.reduceMotion??(o==null?void 0:o.shouldReduceMotion);for(const p in r){if(p==="transition"||p==="transitionEnd")continue;const m=r[p];if(m===void 0)continue;const g=t(p),y=g.get();if(y!==void 0&&!g.isAnimating()&&!Array.isArray(m)&&m===y&&!c){Me.update(()=>g.set(m));continue}g.start(gl(p,g,m,u&&Ic.has(p)?{type:!1}:i,o)),g.animation&&l.push(g.animation)}const{transitionEnd:f}=r;if(f){const p=()=>Me.update(()=>{for(const m in f)t(m).set(f[m])});l.length?Promise.all(l).then(p):p()}return l}function _g(t,r,i,o,l){return Lg(c=>{let u=t.get(r,c);if(!u){let f;if(!l){const p=i[c];f=A1(p)??t.read(r,c,p)}u=er(f,{owner:l}),t(r,{[c]:u})}return u},i,o,l)}function A1(t){const r=Array.isArray(t)?t[0]:void 0;return r===null?void 0:r}function pi(t){return mc(t)&&"offsetHeight"in t&&!("ownerSVGElement"in t)}function vi(t){return mc(t)&&"ownerSVGElement"in t}const An=(t,r)=>r&&typeof t=="number"?r.transform(t):t;function Nc(t,r,i){if(t==null)return[];if(t instanceof EventTarget)return[t];if(typeof t=="string"){let o=document;r&&(o=r.current);const l=(i==null?void 0:i[t])??o.querySelectorAll(t);return l?Array.from(l):[]}return Array.from(t).filter(o=>o!=null)}class M1{constructor(r=Me.render){this.step=r,this.values=new Map,this.pending=[],this.numPending=0,this.flush=()=>{const{pending:i,numPending:o}=this;this.numPending=0;for(let l=0;l<o;l++)i[l]()}}set(r,i,o,l){var p;if((p=this.values.get(r))==null||p.onRemove(),l)for(const m of this.values.values())m.value===l&&(o=m.render);const c=()=>o&&this.schedule(o);i.get()!==void 0&&c();const u=i.on("change",c),f=()=>{u(),o&&!l&&this.cancel(o),this.values.delete(r)};return this.values.set(r,{value:i,render:l?void 0:o,onRemove:f}),f}get(r){var i;return(i=this.values.get(r))==null?void 0:i.value}release(){const r=new Map;return this.values.forEach((i,o)=>{r.set(o,i.value),i.onRemove()}),this.transformKeys=this.transformValues=void 0,r}schedule(r){const{pending:i,numPending:o}=this;for(let l=0;l<o;l++)if(i[l]===r)return;o||this.step(this.flush),i[this.numPending++]=r}cancel(r){const{pending:i}=this;for(let o=0;o<this.numPending;o++)if(i[o]===r){i[o]=i[--this.numPending];return}}}function Vc(t,{step:r,...i}={}){const o=new WeakMap;return Object.assign((c,u)=>{const f=o.get(c)??new M1(r);o.set(c,f);const p=[];for(const m in u){const g=u[m],y=t(c,f,m,g);p.push(y)}return()=>{for(const m of p)m()}},i,{get:(c,u)=>{var f;return(f=o.get(c))==null?void 0:f.get(u)},flush:c=>{var u;return(u=o.get(c))==null?void 0:u.flush()},state:c=>o.get(c)})}const R1={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},cp={};function j1(t){var c;let r="";const{transformKeys:i=[],transformValues:o={}}=t;for(let u=0;u<i.length;u++){const f=i[u],p=o[f].get();if(p===void 0)continue;(typeof p=="number"?p:parseFloat(p))!==(f.startsWith("scale")?1:0)&&(r+=(r&&" ")+(cp[f]||(cp[f]=(R1[f]||f)+"("))+An(p,Wu[f])+")")}const l=(c=t.get("pathRotation"))==null?void 0:c.get();return l&&(r+=(r&&" ")+"rotate("+An(l,Wu.pathRotation)+")"),r||"none"}const L1=new Set(["originX","originY","originZ"]),gu=(t,r)=>{var i;return An((i=t.get(r))==null?void 0:i.get(),hn[r])},Oc=(t,r,i,o)=>{let l,c;if(Mn.has(i)){if(i!=="pathRotation"){const u=r.transformKeys??(r.transformKeys=[]);(r.transformValues??(r.transformValues={}))[i]=o,u.includes(i)||(u.push(i),u.sort((f,p)=>Jn.indexOf(f)-Jn.indexOf(p)))}r.get("transform")||(!pi(t)&&!r.get("transformBox")&&Oc(t,r,"transformBox",new ds("fill-box")),r.set("transform",new ds("none"),()=>{t.style.transform=j1(r)})),c=r.get("transform")}else L1.has(i)?(r.get("transformOrigin")||r.set("transformOrigin",new ds(""),()=>{const u=gu(r,"originX")??"50%",f=gu(r,"originY")??"50%",p=gu(r,"originZ")??0;t.style.transformOrigin=`${u} ${f} ${p}`}),c=r.get("transformOrigin")):Rc(i)?l=()=>{t.style.setProperty(i,o.get())}:l=()=>{t.style[i]=An(o.get(),hn[i])};return r.set(i,o,l,c)},_1=t=>pi(t)||vi(t),Ig=(t,r)=>{if(Mn.has(r))return mg(t,r);const i=getComputedStyle(t),o=Rc(r)?i.getPropertyValue(r):i[r];return typeof o=="string"&&o.trim()||0},I1=Vc(Oc,{test:_1,read:Ig}),z1={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},D1=Jn.length;function N1(t,r,i){let o="",l=!0;for(let u=0;u<D1;u++){const f=Jn[u],p=t[f];if(p===void 0)continue;let m=!0;if(typeof p=="number")m=p===(f.startsWith("scale")?1:0);else{const g=parseFloat(p);m=f.startsWith("scale")?g===1:g===0}if(!m||i){const g=An(p,hn[f]);if(!m){l=!1;const y=z1[f]||f;o+=`${y}(${g}) `}i&&(r[f]=g)}}const c=t.pathRotation;return c&&(l=!1,o+=`rotate(${An(c,hn.pathRotation)}) `),o=o.trim(),i?o=i(r,l?"":o):l&&(o="none"),o}function Fc(t,r,i){const{style:o,vars:l,transformOrigin:c}=t;let u=!1,f=!1;for(const p in r){const m=r[p];if(Mn.has(p)){u=!0;continue}else if(Zm(p)){l[p]=m;continue}else{const g=An(m,hn[p]);p.startsWith("origin")?(f=!0,c[p]=g):o[p]=g}}if(r.transform||(u||i?o.transform=N1(r,t.transform,i):o.transform&&(o.transform="none")),f){const{originX:p="50%",originY:m="50%",originZ:g=0}=c;o.transformOrigin=`${p} ${m} ${g}`}}const V1={offset:"stroke-dashoffset",array:"stroke-dasharray"},O1={offset:"strokeDashoffset",array:"strokeDasharray"};function F1(t,r,i=1,o=0,l=!0){t.pathLength=1;const c=l?V1:O1;t[c.offset]=`${-o}`,t[c.array]=`${r} ${i}`}const Bc=["transform","opacity","offsetDistance","offsetPath","offsetRotate","offsetAnchor"];function zg(t,{attrX:r,attrY:i,attrScale:o,pathLength:l,pathSpacing:c=1,pathOffset:u=0,...f},p,m,g){if(Fc(t,f,m),p){t.style.viewBox&&(t.attrs.viewBox=t.style.viewBox);return}t.attrs=t.style,t.style={};const{attrs:y,style:x}=t;for(const w of Bc)y[w]!==void 0&&(x[w]=y[w],delete y[w]);(x.transform||y.transformOrigin)&&(x.transformOrigin=y.transformOrigin??"50% 50%",delete y.transformOrigin),x.transform&&(x.transformBox=(g==null?void 0:g.transformBox)??"fill-box",delete y.transformBox),r!==void 0&&(y.x=r),i!==void 0&&(y.y=i),o!==void 0&&(y.scale=o),l!==void 0&&F1(y,l,c,u,!1)}function B1(t,r){if(!(r in t))return!1;const i=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(t),r)||Object.getOwnPropertyDescriptor(t,r);return i&&typeof i.set=="function"}const dp=(t,r,i,o,l=i)=>{const c=B1(t,l);!c&&(l.startsWith("data")||l.startsWith("aria"))&&(l=Ts(l));const u=hn[i]||hn[l],f=c?()=>{t[l]=An(o.get(),hn[i])}:()=>{const p=An(o.get(),u);p==null?t.removeAttribute(l):t.setAttribute(l,String(p))};return r.set(i,o,f)};function $1(t,r,i,o){return Me.render(()=>t.setAttribute("pathLength","1")),i==="pathOffset"?r.set(i,o,()=>{const l=o.get();t.setAttribute("stroke-dashoffset",`${-l}`)}):(r.get("stroke-dasharray")||r.set("stroke-dasharray",new ds("1 1"),()=>{var u,f;const l=((u=r.get("pathLength"))==null?void 0:u.get())??1,c=(f=r.get("pathSpacing"))==null?void 0:f.get();t.setAttribute("stroke-dasharray",`${l} ${c??1-Number(l)}`)}),r.set(i,o,void 0,r.get("stroke-dasharray")))}const W1=(t,r,i,o)=>i.startsWith("path")?$1(t,r,i,o):i.startsWith("attr")?dp(t,r,i,o,Dg(i)):(i in t.style?Oc:dp)(t,r,i,o),U1=(t,r)=>{var i;return Mn.has(r)?((i=hn[r])==null?void 0:i.default)||0:Bc.includes(r)?Ig(t,r):(r=Dg(r),t.getAttribute(Ts(r))??t.getAttribute(r)??void 0)},H1=Vc(W1,{test:vi,read:U1});function Dg(t){return t.replace(/^attr([A-Z])/,(r,i)=>i.toLowerCase())}function Ng({top:t,left:r,right:i,bottom:o}){return{x:{min:r,max:i},y:{min:t,max:o}}}function K1({x:t,y:r}){return{top:r.min,right:t.max,bottom:r.max,left:t.min}}function G1(t,r){if(!r)return t;const i=r({x:t.left,y:t.top}),o=r({x:t.right,y:t.bottom});return{top:i.y,left:i.x,bottom:o.y,right:o.x}}function yu(t){return t===void 0||t===1}function nc({scale:t,scaleX:r,scaleY:i}){return!yu(t)||!yu(r)||!yu(i)}function Pr(t){return nc(t)||Vg(t)||t.z||t.rotate||t.rotateX||t.rotateY||t.skewX||t.skewY}function Vg(t){return fp(t.x)||fp(t.y)}function fp(t){return t&&t!=="0%"}function sl(t,r,i){const o=t-i,l=r*o;return i+l}function hp(t,r,i,o,l){return l!==void 0&&(t=sl(t,l,o)),sl(t,i,o)+r}function rc(t,r=0,i=1,o,l){t.min=hp(t.min,r,i,o,l),t.max=hp(t.max,r,i,o,l)}function Og(t,{x:r,y:i}){rc(t.x,r.translate,r.scale,r.originPoint),rc(t.y,i.translate,i.scale,i.originPoint)}const pp=.999999999999,mp=1.0000000000001;function X1(t,r,i,o=!1){var f;const l=i.length;if(!l)return;r.x=r.y=1;let c,u;for(let p=0;p<l;p++){c=i[p],u=c.projectionDelta;const{visualElement:m}=c.options;m&&m.props.style&&m.props.style.display==="contents"||(o&&c.options.layoutScroll&&c.scroll&&c!==c.root&&(cn(t.x,-c.scroll.offset.x),cn(t.y,-c.scroll.offset.y)),u&&(r.x*=u.x.scale,r.y*=u.y.scale,Og(t,u)),o&&Pr(c.latestValues)&&Xo(t,c.latestValues,(f=c.layout)==null?void 0:f.layoutBox))}r.x<mp&&r.x>pp&&(r.x=1),r.y<mp&&r.y>pp&&(r.y=1)}function cn(t,r){t.min+=r,t.max+=r}function gp(t,r,i,o,l=.5){const c=je(t.min,t.max,l);rc(t,r,i,c,o)}function yp(t,r){return typeof t=="string"?parseFloat(t)/100*(r.max-r.min):t}function Xo(t,r,i){const o=i??t;gp(t.x,yp(r.x,o.x),r.scaleX,r.scale,r.originX),gp(t.y,yp(r.y,o.y),r.scaleY,r.scale,r.originY)}function $c(t,r){return Ng(G1(t.getBoundingClientRect(),r))}function Y1(t,r,i){const o=$c(t,i),{scroll:l}=r;return l&&(cn(o.x,l.offset.x),cn(o.y,l.offset.y)),o}const Q1={},Z1=t=>vi(t)?H1:I1;class q1{constructor(r,i){this.effect=r,this.current=i,this.KeyframeResolver=Rg}getValue(r){return this.effect.get(this.current,r)}readValue(r,i){return this.effect.read(this.current,r,i)}render(){this.effect.flush(this.current)}measureViewportBox(){return $c(this.current)}getProps(){return Q1}}function J1(t,r,i,o){if(o)return Lg(c=>o.getValue(c,null),r,i,o);const l=Z1(t);return _g(l,t,r,i,new q1(l,t))}const eS=Vc((t,r,i,o)=>r.set(i,o,()=>{t[i]=o.get()}),{test:t=>mc(t),read:(t,r)=>{const i=t[r];return typeof i=="string"||typeof i=="number"?i:void 0}}),{schedule:Wc}=Ym(queueMicrotask,!1),Zt={x:!1,y:!1};function Fg(){return Zt.x||Zt.y}function tS(t){return t==="x"||t==="y"?Zt[t]?null:(Zt[t]=!0,()=>{Zt[t]=!1}):Zt.x||Zt.y?null:(Zt.x=Zt.y=!0,()=>{Zt.x=Zt.y=!1})}function Bg(t,r){const i=Nc(t),o=new AbortController,l={passive:!0,...r,signal:o.signal};return[i,l,()=>o.abort()]}function nS(t){return!(t.pointerType==="touch"||Fg())}function rS(t,r,i={}){const[o,l,c]=Bg(t,i);return o.forEach(u=>{let f=!1,p=!1,m;const g=()=>{u.removeEventListener("pointerleave",k)},y=E=>{m&&(m(E),m=void 0),g()},x=E=>{f=!1,window.removeEventListener("pointerup",x),window.removeEventListener("pointercancel",x),p&&(p=!1,y(E))},w=()=>{f=!0,window.addEventListener("pointerup",x,l),window.addEventListener("pointercancel",x,l)},k=E=>{if(E.pointerType!=="touch"){if(f){p=!0;return}y(E)}},C=E=>{if(!nS(E))return;p=!1;const M=r(u,E);typeof M=="function"&&(m=M,u.addEventListener("pointerleave",k,l))};u.addEventListener("pointerenter",C,l),u.addEventListener("pointerdown",w,l)}),c}const $g=(t,r)=>r?t===r?!0:$g(t,r.parentElement):!1,Uc=t=>t.pointerType==="mouse"?typeof t.button!="number"||t.button<=0:t.isPrimary!==!1,iS=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function sS(t){return iS.has(t.tagName)||t.isContentEditable===!0}const oS=new Set(["INPUT","SELECT","TEXTAREA"]);function lS(t){return oS.has(t.tagName)||t.isContentEditable===!0}const Yo=new WeakSet;function vp(t){return r=>{r.key==="Enter"&&t(r)}}function vu(t,r){t.dispatchEvent(new PointerEvent("pointer"+r,{isPrimary:!0,bubbles:!0}))}const aS=(t,r)=>{const i=t.currentTarget;if(!i)return;const o=vp(()=>{if(Yo.has(i))return;vu(i,"down");const l=vp(()=>{vu(i,"up")}),c=()=>vu(i,"cancel");i.addEventListener("keyup",l,r),i.addEventListener("blur",c,r)});i.addEventListener("keydown",o,r),i.addEventListener("blur",()=>i.removeEventListener("keydown",o),r)};function xp(t){return Uc(t)&&!Fg()}const wp=new WeakSet;function uS(t,r,i={}){const[o,l,c]=Bg(t,i),u=f=>{const p=f.currentTarget;if(!xp(f)||wp.has(f))return;Yo.add(p),i.stopPropagation&&wp.add(f);const m=r(p,f),g={...l,capture:!0},y=(k,C)=>{window.removeEventListener("pointerup",x,g),window.removeEventListener("pointercancel",w,g),Yo.has(p)&&Yo.delete(p),xp(k)&&typeof m=="function"&&m(k,{success:C})},x=k=>{y(k,p===window||p===document||i.useGlobalTarget||$g(p,k.target))},w=k=>{y(k,!1)};window.addEventListener("pointerup",x,g),window.addEventListener("pointercancel",w,g)};return o.forEach(f=>{(i.useGlobalTarget?window:f).addEventListener("pointerdown",u,l),pi(f)&&(f.addEventListener("focus",m=>aS(m,l)),!sS(f)&&!f.hasAttribute("tabindex")&&(f.tabIndex=0))}),c}const Qo=new WeakMap;let Zn;const Wg=(t,r,i)=>(o,l)=>l&&l[0]?l[0][t+"Size"]:vi(o)&&"getBBox"in o?o.getBBox()[r]:o[i],cS=Wg("inline","width","offsetWidth"),dS=Wg("block","height","offsetHeight");function fS({target:t,borderBoxSize:r}){var i;(i=Qo.get(t))==null||i.forEach(o=>{o(t,{get width(){return cS(t,r)},get height(){return dS(t,r)}})})}function hS(t){t.forEach(fS)}function pS(){typeof ResizeObserver>"u"||(Zn=new ResizeObserver(hS))}function mS(t,r){Zn||pS();const i=Nc(t);return i.forEach(o=>{let l=Qo.get(o);l||(l=new Set,Qo.set(o,l)),l.add(r),Zn==null||Zn.observe(o)}),()=>{i.forEach(o=>{const l=Qo.get(o);l==null||l.delete(r),l!=null&&l.size||Zn==null||Zn.unobserve(o)})}}const Zo=new Set;let ci;function gS(){ci=()=>{const t={get width(){return window.innerWidth},get height(){return window.innerHeight}};Zo.forEach(r=>r(t))},window.addEventListener("resize",ci)}function yS(t){return Zo.add(t),ci||gS(),()=>{Zo.delete(t),!Zo.size&&typeof ci=="function"&&(window.removeEventListener("resize",ci),ci=void 0)}}function Sp(t,r){return typeof t=="function"?yS(t):mS(t,r)}function vS(t){return vi(t)&&t.tagName==="svg"}const kp=()=>({translate:0,scale:1,origin:0,originPoint:0}),di=()=>({x:kp(),y:kp()}),Tp=()=>({min:0,max:0}),et=()=>({x:Tp(),y:Tp()}),Ug=new WeakMap;function yl(t){return t!==null&&typeof t=="object"&&typeof t.start=="function"}function ys(t){return typeof t=="string"||Array.isArray(t)}const Hc=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],ol=["initial",...Hc];function vl(t){if(yl(t.animate))return!0;for(let r=0;r<ol.length;r++)if(ys(t[ol[r]]))return!0;return!1}function Hg(t){return!!(vl(t)||t.variants)}function xS(t,r,i){for(const o in r){const l=r[o],c=i[o];if(rt(l))t.addValue(o,l);else if(rt(c))t.addValue(o,er(l,{owner:t}));else if(c!==l)if(t.hasValue(o)){const u=t.getValue(o);u.liveStyle===!0?u.jump(l):u.hasAnimated||u.set(l)}else{const u=t.getStaticValue(o);t.addValue(o,er(u!==void 0?u:l,{owner:t}))}}for(const o in i)r[o]===void 0&&t.removeValue(o);return r}const ll={current:null},Kc={current:!1},wS=typeof window<"u";function Kg(){if(Kc.current=!0,!!wS)if(window.matchMedia){const t=window.matchMedia("(prefers-reduced-motion)"),r=()=>ll.current=t.matches;t.addEventListener("change",r),r()}else ll.current=!1}const Cp=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];let al={};function Gg(t){al=t}function SS(){return al}class kS{scrapeMotionValuesFromProps(r,i,o){return{}}constructor({parent:r,props:i,presenceContext:o,reducedMotionConfig:l,skipAnimations:c,blockInitialAnimation:u,visualState:f},p={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.shouldSkipAnimations=!1,this.values=new Map,this.KeyframeResolver=Mc,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.hasBeenMounted=!1,this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{const w=yt.now();this.renderScheduledAt<w&&(this.renderScheduledAt=w,Me.render(this.render,!1,!0))};const{latestValues:m,renderState:g}=f;this.latestValues=m,this.baseTarget={...m},this.initialValues=i.initial?{...m}:{},this.renderState=g,this.parent=r,this.props=i,this.presenceContext=o,this.depth=r?r.depth+1:0,this.reducedMotionConfig=l,this.skipAnimationsConfig=c,this.options=p,this.blockInitialAnimation=!!u,this.isControllingVariants=vl(i),this.isVariantNode=Hg(i),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(r&&r.current);const{willChange:y,...x}=this.scrapeMotionValuesFromProps(i,{},this);for(const w in x){const k=x[w];m[w]!==void 0&&rt(k)&&k.set(m[w])}}mount(r){var i,o;if(this.hasBeenMounted)for(const l in this.initialValues)(i=this.values.get(l))==null||i.jump(this.initialValues[l]),this.latestValues[l]=this.initialValues[l];this.current=r,Ug.set(r,this),this.projection&&!this.projection.instance&&this.projection.mount(r),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEach((l,c)=>this.bindToMotionValue(c,l)),this.reducedMotionConfig==="never"?this.shouldReduceMotion=!1:this.reducedMotionConfig==="always"?this.shouldReduceMotion=!0:(Kc.current||Kg(),this.shouldReduceMotion=ll.current),this.shouldSkipAnimations=this.skipAnimationsConfig??!1,(o=this.parent)==null||o.addChild(this),this.update(this.props,this.presenceContext),this.hasBeenMounted=!0}unmount(){var r;this.projection&&this.projection.unmount(),qn(this.notifyUpdate),qn(this.render),this.valueSubscriptions.forEach(i=>i()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),(r=this.parent)==null||r.removeChild(this);for(const i in this.events)this.events[i].clear();for(const i in this.features){const o=this.features[i];o&&(o.unmount(),o.isMounted=!1)}this.current=null}addChild(r){this.children.add(r),this.enteringChildren??(this.enteringChildren=new Set),this.enteringChildren.add(r)}removeChild(r){this.children.delete(r),this.enteringChildren&&this.enteringChildren.delete(r)}bindToMotionValue(r,i){if(this.valueSubscriptions.has(r)&&this.valueSubscriptions.get(r)(),i.accelerate&&qu.has(r)&&this.current instanceof HTMLElement){const{factory:u,keyframes:f,times:p,ease:m,duration:g}=i.accelerate,y=new kg({element:this.current,name:r,keyframes:f,times:p,ease:m,duration:zt(g)}),x=u(y);this.valueSubscriptions.set(r,()=>{x(),y.cancel()});return}const o=Mn.has(r);o&&this.onBindTransform&&this.onBindTransform();const l=i.on("change",u=>{this.latestValues[r]=u,this.props.onUpdate&&Me.preRender(this.notifyUpdate),o&&this.projection&&(this.projection.isTransformDirty=!0),this.scheduleRender()});let c;typeof window<"u"&&window.MotionCheckAppearSync&&(c=window.MotionCheckAppearSync(this,r,i)),this.valueSubscriptions.set(r,()=>{l(),c&&c()})}sortNodePosition(r){return!this.current||!this.sortInstanceNodePosition||this.type!==r.type?0:this.sortInstanceNodePosition(this.current,r.current)}updateFeatures(){let r="animation";for(r in al){const i=al[r];if(!i)continue;const{isEnabled:o,Feature:l}=i;if(!this.features[r]&&l&&o(this.props)&&(this.features[r]=new l(this)),this.features[r]){const c=this.features[r];c.isMounted?c.update():(c.mount(),c.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):et()}getStaticValue(r){return this.latestValues[r]}setStaticValue(r,i){this.latestValues[r]=i}update(r,i){(r.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=r,this.prevPresenceContext=this.presenceContext,this.presenceContext=i;for(let o=0;o<Cp.length;o++){const l=Cp[o];this.propEventSubscriptions[l]&&(this.propEventSubscriptions[l](),delete this.propEventSubscriptions[l]);const c="on"+l,u=r[c];u&&(this.propEventSubscriptions[l]=this.on(l,u))}this.prevMotionValues=xS(this,this.scrapeMotionValuesFromProps(r,this.prevProps||{},this),this.prevMotionValues),this.handleChildMotionValue&&this.handleChildMotionValue()}getProps(){return this.props}getVariant(r){return this.props.variants?this.props.variants[r]:void 0}getDefaultTransition(){return this.props.transition}getTransformPagePoint(){return this.props.transformPagePoint}getClosestVariantNode(){return this.isVariantNode?this:this.parent?this.parent.getClosestVariantNode():void 0}addVariantChild(r){const i=this.getClosestVariantNode();if(i)return i.variantChildren&&i.variantChildren.add(r),()=>i.variantChildren.delete(r)}addValue(r,i){const o=this.values.get(r);i!==o&&(o&&this.removeValue(r),this.bindToMotionValue(r,i),this.values.set(r,i),this.latestValues[r]=i.get())}removeValue(r){this.values.delete(r);const i=this.valueSubscriptions.get(r);i&&(i(),this.valueSubscriptions.delete(r)),delete this.latestValues[r],this.removeValueFromRenderState(r,this.renderState)}hasValue(r){return this.values.has(r)}getValue(r,i){if(this.props.values&&this.props.values[r])return this.props.values[r];let o=this.values.get(r);return o===void 0&&i!==void 0&&(o=er(i===null?void 0:i,{owner:this}),this.addValue(r,o)),o}readValue(r,i){let o=this.latestValues[r]!==void 0||!this.current?this.latestValues[r]:this.getBaseTargetFromProps(this.props,r)??this.readValueFromInstance(this.current,r,this.options);return o!=null&&(typeof o=="string"&&(pc(o)||gc(o))?o=parseFloat(o):typeof o!="number"&&!Dt.test(o)&&Dt.test(i)&&(o=Ac(r,i)),this.setBaseTarget(r,rt(o)?o.get():o)),rt(o)?o.get():o}setBaseTarget(r,i){this.baseTarget[r]=i}getBaseTarget(r){var c;const{initial:i}=this.props;let o;if(typeof i=="string"||typeof i=="object"){const u=_c(this.props,i,(c=this.presenceContext)==null?void 0:c.custom);u&&(o=u[r])}if(i&&o!==void 0)return o;const l=this.getBaseTargetFromProps(this.props,r);return l!==void 0&&!rt(l)?l:this.initialValues[r]!==void 0&&o===void 0?void 0:this.baseTarget[r]}on(r,i){return this.events[r]||(this.events[r]=new tl),this.events[r].add(i)}notify(r,...i){this.events[r]&&this.events[r].notify(...i)}scheduleRenderMicrotask(){Wc.render(this.render)}}class Xg extends kS{constructor(){super(...arguments),this.KeyframeResolver=Rg}sortInstanceNodePosition(r,i){return r.compareDocumentPosition(i)&2?1:-1}getBaseTargetFromProps(r,i){const o=r.style;return o?o[i]:void 0}removeValueFromRenderState(r,{vars:i,style:o}){delete i[r],delete o[r]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:r}=this.props;rt(r)&&(this.childSubscription=r.on("change",i=>{this.current&&(this.current.textContent=`${i}`)}))}}class tr{constructor(r){this.isMounted=!1,this.node=r}update(){}}function Yg(t,{style:r,vars:i},o,l){const c=t.style;let u;for(u in r)c[u]=r[u];l==null||l.applyProjectionStyles(c,o);for(u in i)c.setProperty(u,i[u])}function Ep(t,r){return r.max===r.min?0:t/(r.max-r.min)*100}const os={correct:(t,r)=>{if(!r.target)return t;if(typeof t=="string")if(se.test(t))t=parseFloat(t);else return t;const i=Ep(t,r.target.x),o=Ep(t,r.target.y);return`${i}% ${o}%`}},TS={correct:(t,{treeScale:r,projectionDelta:i})=>{const o=t,l=Dt.parse(t);if(l.length>5)return o;const c=Dt.createTransformer(t),u=typeof l[0]!="number"?1:0,f=i.x.scale*r.x,p=i.y.scale*r.y;l[0+u]/=f,l[1+u]/=p;const m=je(f,p,.5);return typeof l[2+u]=="number"&&(l[2+u]/=m),typeof l[3+u]=="number"&&(l[3+u]/=m),c(l)}},ic={borderRadius:{...os,applyTo:[...zc]},borderTopLeftRadius:os,borderTopRightRadius:os,borderBottomLeftRadius:os,borderBottomRightRadius:os,boxShadow:TS};function Qg(t,{layout:r,layoutId:i}){return Mn.has(t)||t.startsWith("origin")||(r||i!==void 0)&&(!!ic[t]||t==="opacity")}function Gc(t,r,i){var u;const o=t.style,l=r==null?void 0:r.style,c={};if(!o)return c;for(const f in o)(rt(o[f])||l&&rt(l[f])||Qg(f,t)||((u=i==null?void 0:i.getValue(f))==null?void 0:u.liveStyle)!==void 0)&&(c[f]=o[f]);return c}function CS(t){return window.getComputedStyle(t)}class ES extends Xg{constructor(){super(...arguments),this.type="html",this.renderInstance=Yg}mount(r){xs(!!r.style),super.mount(r)}readValueFromInstance(r,i){var o;if(Mn.has(i))return(o=this.projection)!=null&&o.isProjecting?Ku(i):mg(r,i);{const l=CS(r),c=(Zm(i)?l.getPropertyValue(i):l[i])||0;return typeof c=="string"?c.trim():c}}measureInstanceViewportBox(r,{transformPagePoint:i}){return $c(r,i)}build(r,i,o){Fc(r,i,o.transformTemplate)}scrapeMotionValuesFromProps(r,i,o){return Gc(r,i,o)}}const Zg=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]),qg=t=>typeof t=="string"&&t.toLowerCase()==="svg";function bS(t,r,i,o){Yg(t,r,void 0,o);for(const l in r.attrs)t.setAttribute(Zg.has(l)?l:Ts(l),r.attrs[l])}function Jg(t,r,i){const o=Gc(t,r,i);for(const l in t)if(rt(t[l])||rt(r[l])){const c=Jn.indexOf(l)!==-1?"attr"+l.charAt(0).toUpperCase()+l.substring(1):l;o[c]=t[l]}return o}class PS extends Xg{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=et}getBaseTargetFromProps(r,i){return r[i]}readValueFromInstance(r,i){if(Mn.has(i)){const o=pg(i);return o&&o.default||0}if(Bc.includes(i)){const l=getComputedStyle(r)[i];if(typeof l=="string"&&l)return l.trim()}return i=Zg.has(i)?i:Ts(i),r.getAttribute(i)}scrapeMotionValuesFromProps(r,i,o){return Jg(r,i,o)}build(r,i,o){zg(r,i,this.isSVGTag,o.transformTemplate,o.style)}renderInstance(r,i,o,l){bS(r,i,o,l)}mount(r){this.isSVGTag=qg(r.tagName),super.mount(r)}}const AS=ol.length;function ey(t){if(!t)return;if(!t.isControllingVariants){const i=t.parent?ey(t.parent)||{}:{};return t.props.initial!==void 0&&(i.initial=t.props.initial),i}const r={};for(let i=0;i<AS;i++){const o=ol[i],l=t.props[o];(ys(l)||l===!1)&&(r[o]=l)}return r}function ty(t,r){if(!Array.isArray(r))return!1;const i=r.length;if(i!==t.length)return!1;for(let o=0;o<i;o++)if(r[o]!==t[o])return!1;return!0}const MS=[...Hc].reverse(),RS=Hc.length;function jS(t){return r=>Promise.all(r.map(({animation:i,options:o})=>x1(t,i,o)))}function LS(t){let r=jS(t),i=bp(),o=!0,l=!1;const c=m=>(g,y)=>{var w;const x=Lr(t,y,m==="exit"?(w=t.presenceContext)==null?void 0:w.custom:void 0);if(x){const{transition:k,transitionEnd:C,...E}=x;g={...g,...E,...C}}return g};function u(m){r=m(t)}function f(m){const{props:g}=t,y=ey(t.parent)||{},x=[],w=new Set;let k={},C=1/0;for(let M=0;M<RS;M++){const L=MS[M],I=i[L],D=g[L]!==void 0?g[L]:y[L],U=ys(D),Y=L===m?I.isActive:null;Y===!1&&(C=M);let N=D===y[L]&&D!==g[L]&&U;if(N&&(o||l)&&t.manuallyAnimateOnMount&&(N=!1),I.protectedKeys={...k},!I.isActive&&Y===null||!D&&!I.prevProp||yl(D)||typeof D=="boolean")continue;if(L==="exit"&&I.isActive&&Y!==!0){I.prevResolvedValues&&(k={...k,...I.prevResolvedValues});continue}const j=_S(I.prevProp,D);let W=j||L===m&&I.isActive&&!N&&U||M>C&&U,ee=!1;const de=Array.isArray(D)?D:[D];let Q=de.reduce(c(L),{});Y===!1&&(Q={});const{prevResolvedValues:oe={}}=I,fe={...oe,...Q},pe=$=>{W=!0,w.has($)&&(ee=!0,w.delete($)),I.needsAnimating[$]=!0;const Z=t.getValue($);Z&&(Z.liveStyle=!1)};for(const $ in fe){const Z=Q[$],O=oe[$];if(k.hasOwnProperty($))continue;let A=!1;Ju(Z)&&Ju(O)?A=!ty(Z,O)||j:A=Z!==O,A?Z!=null?pe($):w.add($):Z!==void 0&&w.has($)?pe($):I.protectedKeys[$]=!0}I.prevProp=D,I.prevResolvedValues=Q,I.isActive&&(k={...k,...Q}),(o||l)&&t.blockInitialAnimation&&(W=!1);const Te=N&&j;W&&(!Te||ee)&&x.push(...de.map($=>{const Z={type:L};if(typeof $=="string"&&(o||l)&&!Te&&t.manuallyAnimateOnMount&&t.parent){const{parent:O}=t,A=Lr(O,$);if(O.enteringChildren&&A){const{delayChildren:B}=A.transition||{};Z.delay=Cg(O.enteringChildren,t,B)}}return{animation:$,options:Z}}))}if(w.size){const M={};if(typeof g.initial!="boolean"){const L=Lr(t,Array.isArray(g.initial)?g.initial[0]:g.initial);L&&L.transition&&(M.transition=L.transition)}w.forEach(L=>{const I=t.getBaseTarget(L),D=t.getValue(L);D&&(D.liveStyle=!0),M[L]=I??null}),x.push({animation:M})}let E=!!x.length;return o&&(g.initial===!1||g.initial===g.animate)&&!t.manuallyAnimateOnMount&&(E=!1),o=!1,l=!1,E?r(x):Promise.resolve()}function p(m,g){var x;if(i[m].isActive===g)return Promise.resolve();(x=t.variantChildren)==null||x.forEach(w=>{var k;return(k=w.animationState)==null?void 0:k.setActive(m,g)}),i[m].isActive=g;const y=f(m);for(const w in i)i[w].protectedKeys={};return y}return{animateChanges:f,setActive:p,setAnimateFunction:u,getState:()=>i,reset:()=>{i=bp(),l=!0}}}function _S(t,r){return typeof r=="string"?r!==t:Array.isArray(r)?!ty(r,t):!1}function Cr(t=!1){return{isActive:t,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function bp(){return{animate:Cr(!0),whileInView:Cr(),whileHover:Cr(),whileTap:Cr(),whileDrag:Cr(),whileFocus:Cr(),exit:Cr()}}function sc(t,r){t.min=r.min,t.max=r.max}function Qt(t,r){sc(t.x,r.x),sc(t.y,r.y)}function Pp(t,r){t.translate=r.translate,t.scale=r.scale,t.originPoint=r.originPoint,t.origin=r.origin}const ny=1e-4,IS=1-ny,zS=1+ny,ry=.01,DS=0-ry,NS=0+ry;function St(t){return t.max-t.min}function VS(t,r,i){return Math.abs(t-r)<=i}function Ap(t,r,i,o=.5){t.origin=o,t.originPoint=je(r.min,r.max,t.origin),t.scale=St(i)/St(r),t.translate=je(i.min,i.max,t.origin)-t.originPoint,(t.scale>=IS&&t.scale<=zS||isNaN(t.scale))&&(t.scale=1),(t.translate>=DS&&t.translate<=NS||isNaN(t.translate))&&(t.translate=0)}function fs(t,r,i,o){Ap(t.x,r.x,i.x,o?o.originX:void 0),Ap(t.y,r.y,i.y,o?o.originY:void 0)}function Mp(t,r,i,o=0){const l=o?je(i.min,i.max,o):i.min;t.min=l+r.min,t.max=t.min+St(r)}function OS(t,r,i,o){Mp(t.x,r.x,i.x,o==null?void 0:o.x),Mp(t.y,r.y,i.y,o==null?void 0:o.y)}function Rp(t,r,i,o=0){const l=o?je(i.min,i.max,o):i.min;t.min=r.min-l,t.max=t.min+St(r)}function ul(t,r,i,o){Rp(t.x,r.x,i.x,o==null?void 0:o.x),Rp(t.y,r.y,i.y,o==null?void 0:o.y)}function jp(t,r,i,o,l){return t-=r,t=sl(t,1/i,o),l!==void 0&&(t=sl(t,1/l,o)),t}function FS(t,r=0,i=1,o=.5,l,c=t,u=t){if(fn.test(r)&&(r=parseFloat(r),r=je(u.min,u.max,r/100)-u.min),typeof r!="number")return;let f=je(c.min,c.max,o);t===c&&(f-=r),t.min=jp(t.min,r,i,f,l),t.max=jp(t.max,r,i,f,l)}function Lp(t,r,[i,o,l],c,u){FS(t,r[i],r[o],r[l],r.scale,c,u)}const BS=["x","scaleX","originX"],$S=["y","scaleY","originY"];function _p(t,r,i,o){Lp(t.x,r,BS,i?i.x:void 0,o?o.x:void 0),Lp(t.y,r,$S,i?i.y:void 0,o?o.y:void 0)}function Ip(t){return t.translate===0&&t.scale===1}function iy(t){return Ip(t.x)&&Ip(t.y)}function zp(t,r){return t.min===r.min&&t.max===r.max}function WS(t,r){return zp(t.x,r.x)&&zp(t.y,r.y)}function Dp(t,r){return Math.round(t.min)===Math.round(r.min)&&Math.round(t.max)===Math.round(r.max)}function sy(t,r){return Dp(t.x,r.x)&&Dp(t.y,r.y)}function Np(t){return St(t.x)/St(t.y)}function Vp(t,r){return t.translate===r.translate&&t.scale===r.scale&&t.originPoint===r.originPoint}function un(t){return[t("x"),t("y")]}function US(t,r,i){let o="";const l=t.x.translate/r.x,c=t.y.translate/r.y,u=(i==null?void 0:i.z)||0;if((l||c||u)&&(o=`translate3d(${l}px, ${c}px, ${u}px) `),(r.x!==1||r.y!==1)&&(o+=`scale(${1/r.x}, ${1/r.y}) `),i){const{transformPerspective:m,rotate:g,pathRotation:y,rotateX:x,rotateY:w,skewX:k,skewY:C}=i;m&&(o=`perspective(${m}px) ${o}`),g&&(o+=`rotate(${g}deg) `),y&&(o+=`rotate(${y}deg) `),x&&(o+=`rotateX(${x}deg) `),w&&(o+=`rotateY(${w}deg) `),k&&(o+=`skewX(${k}deg) `),C&&(o+=`skewY(${C}deg) `)}const f=t.x.scale*r.x,p=t.y.scale*r.y;return(f!==1||p!==1)&&(o+=`scale(${f}, ${p})`),o||"none"}const HS=zc.length,Op=t=>typeof t=="string"?parseFloat(t):t,Fp=t=>typeof t=="number"||se.test(t);function KS(t,r,i,o,l,c){l?(t.opacity=je(0,i.opacity??1,GS(o)),t.opacityExit=je(r.opacity??1,0,XS(o))):c&&(t.opacity=je(r.opacity??1,i.opacity??1,o));for(let u=0;u<HS;u++){const f=zc[u];let p=Bp(r,f),m=Bp(i,f);if(p===void 0&&m===void 0)continue;p||(p=0),m||(m=0),p===0||m===0||Fp(p)===Fp(m)?(t[f]=Math.max(je(Op(p),Op(m),o),0),(fn.test(m)||fn.test(p))&&(t[f]+="%")):t[f]=m}(r.rotate||i.rotate)&&(t.rotate=je(r.rotate||0,i.rotate||0,o))}function Bp(t,r){return t[r]!==void 0?t[r]:t.borderRadius}const GS=oy(0,.5,Wm),XS=oy(.5,.95,qt);function oy(t,r,i){return o=>o<t?0:o>r?1:i(mi(t,r,o))}function ly(t,r,i){const o=rt(t)?t:er(t);return o.start(gl("",o,r,i)),o.animation}function vs(t,r,i,o={passive:!0}){return t.addEventListener(r,i,o),()=>t.removeEventListener(r,i,o)}const YS=(t,r)=>t.depth-r.depth;class QS{constructor(){this.children=[],this.isDirty=!1}add(r){hc(this.children,r),this.isDirty=!0}remove(r){_r(this.children,r),this.isDirty=!0}forEach(r){this.isDirty&&this.children.sort(YS),this.isDirty=!1,this.children.forEach(r)}}function ZS(t,r){const i=yt.now(),o=({timestamp:l})=>{const c=l-i;c>=r&&(qn(o),t(c-r))};return Me.setup(o,!0),()=>qn(o)}function qo(t){return rt(t)?t.get():t}class qS{constructor(){this.members=[]}add(r){hc(this.members,r);for(let i=this.members.length-1;i>=0;i--){const o=this.members[i];if(o===r||o===this.lead||o===this.prevLead)continue;const l=o.instance;(!l||l.isConnected===!1)&&!o.snapshot&&(_r(this.members,o),o.unmount())}r.scheduleRender()}remove(r){if(_r(this.members,r),r===this.prevLead&&(this.prevLead=void 0),r===this.lead){const i=this.members[this.members.length-1];i&&this.promote(i)}}relegate(r){var i;for(let o=this.members.indexOf(r)-1;o>=0;o--){const l=this.members[o];if(l.isPresent!==!1&&((i=l.instance)==null?void 0:i.isConnected)!==!1)return this.promote(l),!0}return!1}promote(r,i){var l;const o=this.lead;if(r!==o&&(this.prevLead=o,this.lead=r,r.show(),o)){o.updateSnapshot(),r.scheduleRender();const{layoutDependency:c}=o.options,{layoutDependency:u}=r.options;(c===void 0||c!==u)&&(r.resumeFrom=o,i&&(o.preserveOpacity=!0),o.snapshot&&(r.snapshot=o.snapshot,r.snapshot.latestValues=o.animationValues||o.latestValues),(l=r.root)!=null&&l.isUpdating&&(r.isLayoutDirty=!0)),r.options.crossfade===!1&&o.hide()}}exitAnimationComplete(){this.members.forEach(r=>{var i,o,l,c,u;(o=(i=r.options).onExitComplete)==null||o.call(i),(u=(l=r.resumingFrom)==null?void 0:(c=l.options).onExitComplete)==null||u.call(c)})}scheduleRender(){this.members.forEach(r=>r.instance&&r.scheduleRender(!1))}removeLeadSnapshot(){var r;(r=this.lead)!=null&&r.snapshot&&(this.lead.snapshot=void 0)}}const Jo={hasAnimatedSinceResize:!0,hasEverUpdated:!1},xu=["","X","Y","Z"],JS=1e3;let ek=0;function wu(t,r,i,o){const{latestValues:l}=r;l[t]&&(i[t]=l[t],r.setStaticValue(t,0),o&&(o[t]=0))}function ay(t){if(t.hasCheckedOptimisedAppear=!0,t.root===t)return;const{visualElement:r}=t.options;if(!r)return;const i=Ag(r);if(window.MotionHasOptimisedAnimation(i,"transform")){const{layout:l,layoutId:c}=t.options;window.MotionCancelOptimisedAnimation(i,"transform",Me,!(l||c))}const{parent:o}=t;o&&!o.hasCheckedOptimisedAppear&&ay(o)}function uy({attachResizeListener:t,defaultParent:r,measureScroll:i,checkIsScrollRoot:o,resetTransform:l}){return class{constructor(u={},f=r==null?void 0:r()){this.id=ek++,this.animationId=0,this.animationCommitId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.layoutVersion=0,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,this.nodes.forEach(rk),this.nodes.forEach(uk),this.nodes.forEach(ck),this.nodes.forEach(ik)},this.resolvedRelativeTargetAt=0,this.linkedParentVersion=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=u,this.root=f?f.root||f:this,this.path=f?[...f.path,f]:[],this.parent=f,this.depth=f?f.depth+1:0;for(let p=0;p<this.path.length;p++)this.path[p].shouldResetTransform=!0;this.root===this&&(this.nodes=new QS)}addEventListener(u,f){return this.eventHandlers.has(u)||this.eventHandlers.set(u,new tl),this.eventHandlers.get(u).add(f)}notifyListeners(u,...f){const p=this.eventHandlers.get(u);p&&p.notify(...f)}hasListeners(u){return this.eventHandlers.has(u)}mount(u){if(this.instance)return;this.isSVG=vi(u)&&!vS(u),this.instance=u;const{layoutId:f,layout:p,visualElement:m}=this.options;if(m&&!m.current&&m.mount(u),this.root.nodes.add(this),this.parent&&this.parent.children.add(this),this.root.hasTreeAnimated&&(p||f)&&(this.isLayoutDirty=!0),t){let g,y=0;const x=()=>this.root.updateBlockedByResize=!1;Me.read(()=>{y=window.innerWidth}),t(u,()=>{const w=window.innerWidth;w!==y&&(y=w,this.root.updateBlockedByResize=!0,g&&g(),g=ZS(x,250),Jo.hasAnimatedSinceResize&&(Jo.hasAnimatedSinceResize=!1,this.nodes.forEach(Up)))})}f&&this.root.registerSharedNode(f,this),this.options.animate!==!1&&m&&(f||p)&&this.addEventListener("didUpdate",({delta:g,hasLayoutChanged:y,hasRelativeLayoutChanged:x,layout:w})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const k=this.options.transition||m.getDefaultTransition()||mk,{onLayoutAnimationStart:C,onLayoutAnimationComplete:E}=m.getProps(),M=!this.targetLayout||!sy(this.targetLayout,w),L=!y&&x;if(this.options.layoutRoot||this.resumeFrom||L||y&&(M||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0);const I={...Lc(k,"layout"),onPlay:C,onComplete:E};(m.shouldReduceMotion||this.options.layoutRoot)&&(I.delay=0,I.type=!1),this.startAnimation(I),this.setAnimationOrigin(g,L,I.path)}else y||Up(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=w})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const u=this.getStack();u&&u.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,this.eventHandlers.clear(),qn(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(dk),this.animationId++)}getTransformTemplate(){const{visualElement:u}=this.options;return u&&u.getProps().transformTemplate}willUpdate(u=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&ay(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let g=0;g<this.path.length;g++){const y=this.path[g];y.shouldResetTransform=!0,(typeof y.latestValues.x=="string"||typeof y.latestValues.y=="string")&&(y.isLayoutDirty=!0),y.updateScroll("snapshot"),y.options.layoutRoot&&y.willUpdate(!1)}const{layoutId:f,layout:p}=this.options;if(f===void 0&&!p)return;const m=this.getTransformTemplate();this.prevTransformTemplateValue=m?m(this.latestValues,""):void 0,this.updateSnapshot(),u&&this.notifyListeners("willUpdate")}update(){if(this.updateScheduled=!1,this.isUpdateBlocked()){const p=this.updateBlockedByResize;this.unblockUpdate(),this.updateBlockedByResize=!1,this.clearAllSnapshots(),p&&this.nodes.forEach(ok),this.nodes.forEach($p);return}if(this.animationId<=this.animationCommitId){this.nodes.forEach(Wp);return}this.animationCommitId=this.animationId,this.isUpdating?(this.isUpdating=!1,this.nodes.forEach(lk),this.nodes.forEach(ak),this.nodes.forEach(tk),this.nodes.forEach(nk)):this.nodes.forEach(Wp),this.clearAllSnapshots();const f=yt.now();tt.delta=en(0,1e3/60,f-tt.timestamp),tt.timestamp=f,tt.isProcessing=!0,cu.update.process(tt),cu.preRender.process(tt),cu.render.process(tt),tt.isProcessing=!1}didUpdate(){this.updateScheduled||(this.updateScheduled=!0,Wc.read(this.scheduleUpdate))}clearAllSnapshots(){this.nodes.forEach(sk),this.sharedNodes.forEach(fk)}scheduleUpdateProjection(){this.projectionUpdateScheduled||(this.projectionUpdateScheduled=!0,Me.preRender(this.updateProjection,!1,!0))}scheduleCheckAfterUnmount(){Me.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure(),this.snapshot&&!St(this.snapshot.measuredBox.x)&&!St(this.snapshot.measuredBox.y)&&(this.snapshot=void 0))}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let p=0;p<this.path.length;p++)this.path[p].updateScroll();const u=this.layout;this.layout=this.measure(!1),this.layoutVersion++,this.layoutCorrected||(this.layoutCorrected=et()),this.isLayoutDirty=!1,this.projectionDelta=void 0,this.notifyListeners("measure",this.layout.layoutBox);const{visualElement:f}=this.options;f&&f.notify("LayoutMeasure",this.layout.layoutBox,u?u.layoutBox:void 0)}updateScroll(u="measure"){let f=!!(this.options.layoutScroll&&this.instance);if(this.scroll&&this.scroll.animationId===this.root.animationId&&this.scroll.phase===u&&(f=!1),f&&this.instance){const p=o(this.instance);this.scroll={animationId:this.root.animationId,phase:u,isRoot:p,offset:i(this.instance),wasRoot:this.scroll?this.scroll.isRoot:p}}}resetTransform(){if(!l)return;const u=this.isLayoutDirty||this.shouldResetTransform||this.options.alwaysMeasureLayout,f=this.projectionDelta&&!iy(this.projectionDelta),p=this.getTransformTemplate(),m=p?p(this.latestValues,""):void 0,g=m!==this.prevTransformTemplateValue;u&&this.instance&&(f||Pr(this.latestValues)||g)&&(l(this.instance,m),this.shouldResetTransform=!1,this.scheduleRender())}measure(u=!0){const f=this.measurePageBox();let p=this.removeElementScroll(f);return u&&(p=this.removeTransform(p)),gk(p),{animationId:this.root.animationId,measuredBox:f,layoutBox:p,latestValues:{},source:this.id}}measurePageBox(){var m;const{visualElement:u}=this.options;if(!u)return et();const f=u.measureViewportBox();if(!(((m=this.scroll)==null?void 0:m.wasRoot)||this.path.some(yk))){const{scroll:g}=this.root;g&&(cn(f.x,g.offset.x),cn(f.y,g.offset.y))}return f}removeElementScroll(u){var p;const f=et();if(Qt(f,u),(p=this.scroll)!=null&&p.wasRoot)return f;for(let m=0;m<this.path.length;m++){const g=this.path[m],{scroll:y,options:x}=g;g!==this.root&&y&&x.layoutScroll&&(y.wasRoot&&Qt(f,u),cn(f.x,y.offset.x),cn(f.y,y.offset.y))}return f}applyTransform(u,f=!1,p){var g,y;const m=p||et();Qt(m,u);for(let x=0;x<this.path.length;x++){const w=this.path[x];!f&&w.options.layoutScroll&&w.scroll&&w!==w.root&&(cn(m.x,-w.scroll.offset.x),cn(m.y,-w.scroll.offset.y)),Pr(w.latestValues)&&Xo(m,w.latestValues,(g=w.layout)==null?void 0:g.layoutBox)}return Pr(this.latestValues)&&Xo(m,this.latestValues,(y=this.layout)==null?void 0:y.layoutBox),m}removeTransform(u){var p;const f=et();Qt(f,u);for(let m=0;m<this.path.length;m++){const g=this.path[m];if(!Pr(g.latestValues))continue;let y;g.instance&&(nc(g.latestValues)&&g.updateSnapshot(),y=et(),Qt(y,g.measurePageBox())),_p(f,g.latestValues,(p=g.snapshot)==null?void 0:p.layoutBox,y)}return Pr(this.latestValues)&&_p(f,this.latestValues),f}setTargetDelta(u){this.targetDelta=u,this.root.scheduleUpdateProjection(),this.isProjectionDirty=!0}setOptions(u){this.options={...this.options,...u,crossfade:u.crossfade!==void 0?u.crossfade:!0}}clearMeasurements(){this.scroll=void 0,this.layout=void 0,this.snapshot=void 0,this.prevTransformTemplateValue=void 0,this.targetDelta=void 0,this.target=void 0,this.isLayoutDirty=!1}forceRelativeParentToResolveTarget(){this.relativeParent&&this.relativeParent.resolvedRelativeTargetAt!==tt.timestamp&&this.relativeParent.resolveTargetDelta(!0)}resolveTargetDelta(u=!1){var w;const f=this.getLead();this.isProjectionDirty||(this.isProjectionDirty=f.isProjectionDirty),this.isTransformDirty||(this.isTransformDirty=f.isTransformDirty),this.isSharedProjectionDirty||(this.isSharedProjectionDirty=f.isSharedProjectionDirty);const p=!!this.resumingFrom||this!==f;if(!(u||p&&this.isSharedProjectionDirty||this.isProjectionDirty||(w=this.parent)!=null&&w.isProjectionDirty||this.attemptToResolveRelativeTarget||this.root.updateBlockedByResize))return;const{layout:g,layoutId:y}=this.options;if(!this.layout||!(g||y))return;this.resolvedRelativeTargetAt=tt.timestamp;const x=this.getClosestProjectingParent();x&&this.linkedParentVersion!==x.layoutVersion&&!x.options.layoutRoot&&this.removeRelativeTarget(),!this.targetDelta&&!this.relativeTarget&&(this.options.layoutAnchor!==!1&&x&&x.layout?this.createRelativeTarget(x,this.layout.layoutBox,x.layout.layoutBox):this.removeRelativeTarget()),!(!this.relativeTarget&&!this.targetDelta)&&(this.target||(this.target=et(),this.targetWithTransforms=et()),this.relativeTarget&&this.relativeTargetOrigin&&this.relativeParent&&this.relativeParent.target?(this.forceRelativeParentToResolveTarget(),OS(this.target,this.relativeTarget,this.relativeParent.target,this.options.layoutAnchor||void 0)):this.targetDelta?(this.resumingFrom?this.applyTransform(this.layout.layoutBox,!1,this.target):Qt(this.target,this.layout.layoutBox),Og(this.target,this.targetDelta)):Qt(this.target,this.layout.layoutBox),this.attemptToResolveRelativeTarget&&(this.attemptToResolveRelativeTarget=!1,this.options.layoutAnchor!==!1&&x&&!!x.resumingFrom==!!this.resumingFrom&&!x.options.layoutScroll&&x.target&&this.animationProgress!==1?this.createRelativeTarget(x,this.target,x.target):this.relativeParent=this.relativeTarget=void 0))}getClosestProjectingParent(){if(!(!this.parent||nc(this.parent.latestValues)||Vg(this.parent.latestValues)))return this.parent.isProjecting()?this.parent:this.parent.getClosestProjectingParent()}isProjecting(){return!!((this.relativeTarget||this.targetDelta||this.options.layoutRoot)&&this.layout)}createRelativeTarget(u,f,p){this.relativeParent=u,this.linkedParentVersion=u.layoutVersion,this.forceRelativeParentToResolveTarget(),this.relativeTarget=et(),this.relativeTargetOrigin=et(),ul(this.relativeTargetOrigin,f,p,this.options.layoutAnchor||void 0),Qt(this.relativeTarget,this.relativeTargetOrigin)}removeRelativeTarget(){this.relativeParent=this.relativeTarget=void 0}calcProjection(){var k;const u=this.getLead(),f=!!this.resumingFrom||this!==u;let p=!0;if((this.isProjectionDirty||(k=this.parent)!=null&&k.isProjectionDirty)&&(p=!1),f&&(this.isSharedProjectionDirty||this.isTransformDirty)&&(p=!1),this.resolvedRelativeTargetAt===tt.timestamp&&(p=!1),p)return;const{layout:m,layoutId:g}=this.options;if(this.isTreeAnimating=!!(this.parent&&this.parent.isTreeAnimating||this.currentAnimation||this.pendingAnimation),this.isTreeAnimating||(this.targetDelta=this.relativeTarget=void 0),!this.layout||!(m||g))return;Qt(this.layoutCorrected,this.layout.layoutBox);const y=this.treeScale.x,x=this.treeScale.y;X1(this.layoutCorrected,this.treeScale,this.path,f),u.layout&&!u.target&&(this.treeScale.x!==1||this.treeScale.y!==1)&&(u.target=u.layout.layoutBox,u.targetWithTransforms=et());const{target:w}=u;if(!w){this.prevProjectionDelta&&(this.createProjectionDeltas(),this.scheduleRender());return}!this.projectionDelta||!this.prevProjectionDelta?this.createProjectionDeltas():(Pp(this.prevProjectionDelta.x,this.projectionDelta.x),Pp(this.prevProjectionDelta.y,this.projectionDelta.y)),fs(this.projectionDelta,this.layoutCorrected,w,this.latestValues),(this.treeScale.x!==y||this.treeScale.y!==x||!Vp(this.projectionDelta.x,this.prevProjectionDelta.x)||!Vp(this.projectionDelta.y,this.prevProjectionDelta.y))&&(this.hasProjected=!0,this.scheduleRender(),this.notifyListeners("projectionUpdate",w))}hide(){this.isVisible=!1}show(){this.isVisible=!0}scheduleRender(u=!0){var f;if((f=this.options.visualElement)==null||f.scheduleRender(),u){const p=this.getStack();p&&p.scheduleRender()}this.resumingFrom&&!this.resumingFrom.instance&&(this.resumingFrom=void 0)}createProjectionDeltas(){this.prevProjectionDelta=di(),this.projectionDelta=di(),this.projectionDeltaWithTransform=di()}setAnimationOrigin(u,f=!1,p){const m=this.snapshot,g=m?m.latestValues:{},y={...this.latestValues},x=di();(!this.relativeParent||!this.relativeParent.options.layoutRoot)&&(this.relativeTarget=this.relativeTargetOrigin=void 0),this.attemptToResolveRelativeTarget=!f;const w=et(),k=m?m.source:void 0,C=this.layout?this.layout.source:void 0,E=k!==C,M=this.getStack(),L=!M||M.members.length<=1,I=!!(E&&!L&&this.options.crossfade===!0&&!this.path.some(pk));this.animationProgress=0;let D;const U=p==null?void 0:p.interpolateProjection(u);this.mixTargetDelta=Y=>{const N=Y/1e3,j=U==null?void 0:U(N);j?(x.x.translate=j.x,x.x.scale=je(u.x.scale,1,N),x.x.origin=u.x.origin,x.x.originPoint=u.x.originPoint,x.y.translate=j.y,x.y.scale=je(u.y.scale,1,N),x.y.origin=u.y.origin,x.y.originPoint=u.y.originPoint):(Hp(x.x,u.x,N),Hp(x.y,u.y,N)),this.setTargetDelta(x),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(ul(w,this.layout.layoutBox,this.relativeParent.layout.layoutBox,this.options.layoutAnchor||void 0),hk(this.relativeTarget,this.relativeTargetOrigin,w,N),D&&WS(this.relativeTarget,D)&&(this.isProjectionDirty=!1),D||(D=et()),Qt(D,this.relativeTarget)),E&&(this.animationValues=y,KS(y,g,this.latestValues,N,I,L)),j&&j.rotate!==void 0&&(this.animationValues||(this.animationValues=y),this.animationValues.pathRotation=j.rotate),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=N},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(u){var f,p,m;this.notifyListeners("animationStart"),(f=this.currentAnimation)==null||f.stop(),(m=(p=this.resumingFrom)==null?void 0:p.currentAnimation)==null||m.stop(),this.pendingAnimation&&(qn(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=Me.update(()=>{Jo.hasAnimatedSinceResize=!0,this.motionValue||(this.motionValue=er(0)),this.motionValue.jump(0,!1),this.currentAnimation=ly(this.motionValue,[0,1e3],{...u,velocity:0,isSync:!0,onUpdate:g=>{this.mixTargetDelta(g),u.onUpdate&&u.onUpdate(g)},onComplete:()=>{u.onComplete&&u.onComplete(),this.completeAnimation()}}),Sw(this.currentAnimation,this),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const u=this.getStack();u&&u.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(JS),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const u=this.getLead(),{targetWithTransforms:f,layout:p,latestValues:m}=u;let{target:g}=u;if(!(!f||!g||!p)){if(this!==u&&this.layout&&p&&cy(this.options.animationType,this.layout.layoutBox,p.layoutBox)){g=this.target||et();const y=St(this.layout.layoutBox.x);g.x.min=u.target.x.min,g.x.max=g.x.min+y;const x=St(this.layout.layoutBox.y);g.y.min=u.target.y.min,g.y.max=g.y.min+x}Qt(f,g),Xo(f,m),fs(this.projectionDeltaWithTransform,this.layoutCorrected,f,m)}}registerSharedNode(u,f){this.sharedNodes.has(u)||this.sharedNodes.set(u,new qS),this.sharedNodes.get(u).add(f);const m=f.options.initialPromotionConfig;f.promote({transition:m?m.transition:void 0,preserveFollowOpacity:m&&m.shouldPreserveFollowOpacity?m.shouldPreserveFollowOpacity(f):void 0})}isLead(){const u=this.getStack();return u?u.lead===this:!0}getLead(){var f;const{layoutId:u}=this.options;return u?((f=this.getStack())==null?void 0:f.lead)||this:this}getPrevLead(){var f;const{layoutId:u}=this.options;return u?(f=this.getStack())==null?void 0:f.prevLead:void 0}getStack(){const{layoutId:u}=this.options;if(u)return this.root.sharedNodes.get(u)}promote({needsReset:u,transition:f,preserveFollowOpacity:p}={}){const m=this.getStack();m&&m.promote(this,p),u&&(this.projectionDelta=void 0,this.needsReset=!0),f&&this.setOptions({transition:f})}relegate(){const u=this.getStack();return u?u.relegate(this):!1}resetSkewAndRotation(){const{visualElement:u}=this.options;if(!u)return;let f=!1;const{latestValues:p}=u;if((p.z||p.rotate||p.rotateX||p.rotateY||p.rotateZ||p.skewX||p.skewY)&&(f=!0),!f)return;const m={};p.z&&wu("z",u,m,this.animationValues);for(let g=0;g<xu.length;g++)wu(`rotate${xu[g]}`,u,m,this.animationValues),wu(`skew${xu[g]}`,u,m,this.animationValues);u.render();for(const g in m)u.setStaticValue(g,m[g]),this.animationValues&&(this.animationValues[g]=m[g]);u.scheduleRender()}applyProjectionStyles(u,f){if(!this.instance||this.isSVG)return;if(!this.isVisible){u.visibility="hidden";return}const p=this.getTransformTemplate();if(this.needsReset){this.needsReset=!1,u.visibility="",u.opacity="",u.pointerEvents=qo(f==null?void 0:f.pointerEvents)||"",u.transform=p?p(this.latestValues,""):"none";return}const m=this.getLead();if(!this.projectionDelta||!this.layout||!m.target){this.options.layoutId&&(u.opacity=this.latestValues.opacity!==void 0?this.latestValues.opacity:1,u.pointerEvents=qo(f==null?void 0:f.pointerEvents)||""),this.hasProjected&&!Pr(this.latestValues)&&(u.transform=p?p({},""):"none",this.hasProjected=!1);return}u.visibility="";const g=m.animationValues||m.latestValues;this.applyTransformsToTarget();let y=US(this.projectionDeltaWithTransform,this.treeScale,g);p&&(y=p(g,y)),u.transform=y;const{x,y:w}=this.projectionDelta;u.transformOrigin=`${x.origin*100}% ${w.origin*100}% 0`,m.animationValues?u.opacity=m===this?g.opacity??this.latestValues.opacity??1:this.preserveOpacity?this.latestValues.opacity:g.opacityExit:u.opacity=m===this?g.opacity!==void 0?g.opacity:"":g.opacityExit!==void 0?g.opacityExit:0;for(const k in ic){if(g[k]===void 0)continue;const{correct:C,applyTo:E,isCSSVariable:M}=ic[k],L=y==="none"?g[k]:C(g[k],m);if(E){const I=E.length;for(let D=0;D<I;D++)u[E[D]]=L}else M?this.options.visualElement.renderState.vars[k]=L:u[k]=L}this.options.layoutId&&(u.pointerEvents=m===this?qo(f==null?void 0:f.pointerEvents)||"":"none")}clearSnapshot(){this.resumeFrom=this.snapshot=void 0}resetTree(){this.root.nodes.forEach(u=>{var f;return(f=u.currentAnimation)==null?void 0:f.stop()}),this.root.nodes.forEach($p),this.root.sharedNodes.clear()}}}function tk(t){t.updateLayout()}function nk(t){var i;const r=((i=t.resumeFrom)==null?void 0:i.snapshot)||t.snapshot;if(t.isLead()&&t.layout&&r&&t.hasListeners("didUpdate")){const{layoutBox:o,measuredBox:l}=t.layout,{animationType:c}=t.options,u=r.source!==t.layout.source;if(c==="size")un(y=>{const x=u?r.measuredBox[y]:r.layoutBox[y],w=St(x);x.min=o[y].min,x.max=x.min+w});else if(c==="x"||c==="y"){const y=c==="x"?"y":"x";sc(u?r.measuredBox[y]:r.layoutBox[y],o[y])}else cy(c,r.layoutBox,o)&&un(y=>{const x=u?r.measuredBox[y]:r.layoutBox[y],w=St(o[y]);x.max=x.min+w,t.relativeTarget&&!t.currentAnimation&&(t.isProjectionDirty=!0,t.relativeTarget[y].max=t.relativeTarget[y].min+w)});const f=di();fs(f,o,r.layoutBox);const p=di();u?fs(p,t.applyTransform(l,!0),r.measuredBox):fs(p,o,r.layoutBox);const m=!iy(f);let g=!1;if(!t.resumeFrom){const y=t.getClosestProjectingParent();if(y&&!y.resumeFrom){const{snapshot:x,layout:w}=y;if(x&&w){const k=t.options.layoutAnchor||void 0,C=et();ul(C,r.layoutBox,x.layoutBox,k);const E=et();ul(E,o,w.layoutBox,k),sy(C,E)||(g=!0),y.options.layoutRoot&&(t.relativeTarget=E,t.relativeTargetOrigin=C,t.relativeParent=y)}}}t.notifyListeners("didUpdate",{layout:o,snapshot:r,delta:p,layoutDelta:f,hasLayoutChanged:m,hasRelativeLayoutChanged:g})}else if(t.isLead()){const{onExitComplete:o}=t.options;o&&o()}t.options.transition=void 0}function rk(t){t.parent&&(t.isProjecting()||(t.isProjectionDirty=t.parent.isProjectionDirty),t.isSharedProjectionDirty||(t.isSharedProjectionDirty=!!(t.isProjectionDirty||t.parent.isProjectionDirty||t.parent.isSharedProjectionDirty)),t.isTransformDirty||(t.isTransformDirty=t.parent.isTransformDirty))}function ik(t){t.isProjectionDirty=t.isSharedProjectionDirty=t.isTransformDirty=!1}function sk(t){t.clearSnapshot()}function $p(t){t.clearMeasurements()}function ok(t){t.isLayoutDirty=!0,t.updateLayout()}function Wp(t){t.isLayoutDirty=!1}function lk(t){t.isAnimationBlocked&&t.layout&&!t.isLayoutDirty&&(t.snapshot=t.layout,t.isLayoutDirty=!0)}function ak(t){const{visualElement:r}=t.options;r&&r.getProps().onBeforeLayoutMeasure&&r.notify("BeforeLayoutMeasure"),t.resetTransform()}function Up(t){t.finishAnimation(),t.targetDelta=t.relativeTarget=t.target=void 0,t.isProjectionDirty=!0}function uk(t){t.resolveTargetDelta()}function ck(t){t.calcProjection()}function dk(t){t.resetSkewAndRotation()}function fk(t){t.removeLeadSnapshot()}function Hp(t,r,i){t.translate=je(r.translate,0,i),t.scale=je(r.scale,1,i),t.origin=r.origin,t.originPoint=r.originPoint}function Kp(t,r,i,o){t.min=je(r.min,i.min,o),t.max=je(r.max,i.max,o)}function hk(t,r,i,o){Kp(t.x,r.x,i.x,o),Kp(t.y,r.y,i.y,o)}function pk(t){return t.animationValues&&t.animationValues.opacityExit!==void 0}const mk={duration:.45,ease:[.4,0,.1,1]},Gp=t=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(t),Xp=Gp("applewebkit/")&&!Gp("chrome/")?Math.round:qt;function Yp(t){t.min=Xp(t.min),t.max=Xp(t.max)}function gk(t){Yp(t.x),Yp(t.y)}function cy(t,r,i){return t==="position"||t==="preserve-aspect"&&!VS(Np(r),Np(i),.2)}function yk(t){var r;return t!==t.root&&((r=t.scroll)==null?void 0:r.wasRoot)}const vk=uy({attachResizeListener:(t,r)=>vs(t,"resize",r),measureScroll:()=>{var t,r;return{x:document.documentElement.scrollLeft||((t=document.body)==null?void 0:t.scrollLeft)||0,y:document.documentElement.scrollTop||((r=document.body)==null?void 0:r.scrollTop)||0}},checkIsScrollRoot:()=>!0}),Su={current:void 0},dy=uy({measureScroll:t=>({x:t.scrollLeft,y:t.scrollTop}),defaultParent:()=>{if(!Su.current){const t=new vk({});t.mount(window),t.setOptions({layoutScroll:!0}),Su.current=t}return Su.current},resetTransform:(t,r)=>{t.style.transform=r!==void 0?r:"none"},checkIsScrollRoot:t=>window.getComputedStyle(t).position==="fixed"}),Xc=P.createContext({transformPagePoint:t=>t,isStatic:!1,reducedMotion:"never"});function Qp(t,r){if(typeof t=="function")return t(r);t!=null&&(t.current=r)}function xk(...t){return r=>{let i=!1;const o=t.map(l=>{const c=Qp(l,r);return!i&&typeof c=="function"&&(i=!0),c});if(i)return()=>{for(let l=0;l<o.length;l++){const c=o[l];typeof c=="function"?c():Qp(t[l],null)}}}}function wk(...t){return P.useCallback(xk(...t),t)}class Sk extends P.Component{getSnapshotBeforeUpdate(r){const i=this.props.childRef.current;if(pi(i)&&r.isPresent&&!this.props.isPresent&&this.props.pop!==!1){const o=i.offsetParent,l=pi(o)&&o.offsetWidth||0,c=pi(o)&&o.offsetHeight||0,u=getComputedStyle(i),f=this.props.sizeRef.current;f.height=parseFloat(u.height),f.width=parseFloat(u.width),f.top=i.offsetTop,f.left=i.offsetLeft,f.right=l-f.width-f.left,f.bottom=c-f.height-f.top,f.direction=u.direction}return null}componentDidUpdate(){}render(){return this.props.children}}function kk({children:t,isPresent:r,anchorX:i,anchorY:o,root:l,pop:c}){var x;const u=P.useId(),f=P.useRef(null),p=P.useRef({width:0,height:0,top:0,left:0,right:0,bottom:0,direction:"ltr"}),{nonce:m}=P.useContext(Xc),g=c!==!1?((x=t.props)==null?void 0:x.ref)??(t==null?void 0:t.ref):void 0,y=wk(f,g);return P.useInsertionEffect(()=>{const{width:w,height:k,top:C,left:E,right:M,bottom:L,direction:I}=p.current;if(r||c===!1||!f.current||!w||!k)return;const D=I==="rtl",U=i==="left"?D?`right: ${M}`:`left: ${E}`:D?`left: ${E}`:`right: ${M}`,Y=o==="bottom"?`bottom: ${L}`:`top: ${C}`;f.current.dataset.motionPopId=u;const N=document.createElement("style");m&&(N.nonce=m);const j=l??document.head;return j.appendChild(N),N.sheet&&N.sheet.insertRule(`
47
+ [data-motion-pop-id="${u}"] {
48
+ position: absolute !important;
49
+ width: ${w}px !important;
50
+ height: ${k}px !important;
51
+ ${U}px !important;
52
+ ${Y}px !important;
53
+ }
54
+ `),()=>{var W;(W=f.current)==null||W.removeAttribute("data-motion-pop-id"),j.contains(N)&&j.removeChild(N)}},[r]),S.jsx(Sk,{isPresent:r,childRef:f,sizeRef:p,pop:c,children:c===!1?t:P.cloneElement(t,{ref:y})})}const Tk=({children:t,initial:r,isPresent:i,onExitComplete:o,custom:l,presenceAffectsLayout:c,mode:u,anchorX:f,anchorY:p,root:m})=>{const g=fc(Ck),y=P.useId(),x=P.useRef(i),w=P.useRef(o);el(()=>{x.current=i,w.current=o});let k=!0,C=P.useMemo(()=>(k=!1,{id:y,initial:r,isPresent:i,custom:l,onExitComplete:E=>{g.set(E,!0);for(const M of g.values())if(!M)return;o&&o()},register:E=>(g.set(E,!1),()=>{var M;g.delete(E),!x.current&&!g.size&&((M=w.current)==null||M.call(w))})}),[i,g,o]);return c&&k&&(C={...C}),P.useMemo(()=>{g.forEach((E,M)=>g.set(M,!1))},[i]),P.useEffect(()=>{!i&&!g.size&&o&&o()},[i]),t=S.jsx(kk,{pop:u==="popLayout",isPresent:i,anchorX:f,anchorY:p,root:m,children:t}),S.jsx(pl.Provider,{value:C,children:t})};function Ck(){return new Map}function fy(t=!0){const r=P.useContext(pl);if(r===null)return[!0,null];const{isPresent:i,onExitComplete:o,register:l}=r,c=P.useId();P.useEffect(()=>{if(t)return l(c)},[t]);const u=P.useCallback(()=>t&&o&&o(c),[c,o,t]);return!i&&o?[!1,u]:[!0]}const Fo=t=>t.key||"";function Zp(t){const r=[];return P.Children.forEach(t,i=>{P.isValidElement(i)&&r.push(i)}),r}const gi=({children:t,custom:r,initial:i=!0,onExitComplete:o,presenceAffectsLayout:l=!0,mode:c="sync",propagate:u=!1,anchorX:f="left",anchorY:p="top",root:m})=>{const[g,y]=fy(u),x=P.useMemo(()=>Zp(t),[t]),w=u&&!g?[]:x.map(Fo),k=P.useRef(!0),C=P.useRef(x),E=fc(()=>new Map),M=P.useRef(new Set),[L,I]=P.useState(x),[D,U]=P.useState(x);el(()=>{u&&!g&&!D.length&&(y==null||y())},[g,u,D.length,y]),el(()=>{k.current=!1,C.current=x;for(let j=0;j<D.length;j++){const W=Fo(D[j]);w.includes(W)?(E.delete(W),M.current.delete(W)):E.get(W)!==!0&&E.set(W,!1)}},[D,w.length,w.join("-")]);const Y=[];if(x!==L){let j=[...x],W=0;for(const ee of D){const de=w.indexOf(Fo(ee));de===-1?(j.splice(W++,0,ee),Y.push(ee)):W=de+Y.length+1}return c==="wait"&&Y.length&&(j=Y),U(Zp(j)),I(x),null}const{forceRender:N}=P.useContext(dc);return S.jsx(S.Fragment,{children:D.map(j=>{const W=Fo(j),ee=u&&!g?!1:x===D||w.includes(W),de=()=>{if(M.current.has(W))return;if(E.has(W))M.current.add(W),E.set(W,!0);else return;let Q=!0;E.forEach(oe=>{oe||(Q=!1)}),Q&&(N==null||N(),U(C.current),u&&(y==null||y()),o&&o())};return S.jsx(Tk,{isPresent:ee,initial:!k.current||i?void 0:!1,custom:r,presenceAffectsLayout:l,mode:c,root:m,onExitComplete:ee?void 0:de,anchorX:f,anchorY:p,children:j},W)})})},hy=P.createContext({strict:!1}),qp={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]};let Jp=!1;function Ek(){if(Jp)return;const t={};for(const r in qp)t[r]={isEnabled:i=>qp[r].some(o=>!!i[o])};Gg(t),Jp=!0}function py(){return Ek(),SS()}function bk(t){const r=py();for(const i in t)r[i]={...r[i],...t[i]};Gg(r)}const xl=P.createContext({});function Pk(t,r){if(vl(t)){const{initial:i,animate:o}=t;return{initial:i===!1||ys(i)?i:void 0,animate:ys(o)?o:void 0}}return t.inherit!==!1?r:{}}function Ak(t){const{initial:r,animate:i}=Pk(t,P.useContext(xl));return P.useMemo(()=>({initial:r,animate:i}),[em(r),em(i)])}function em(t){return Array.isArray(t)?t.join(" "):t}const Yc=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function my(t,r,i){for(const o in r)!rt(r[o])&&!Qg(o,i)&&(t[o]=r[o])}function Mk({transformTemplate:t},r){return P.useMemo(()=>{const i=Yc();return Fc(i,r,t),Object.assign({},i.vars,i.style)},[r])}function Rk(t,r){const i=t.style||{},o={};return my(o,i,t),Object.assign(o,Mk(t,r)),o}function jk(t,r){const i={},o=Rk(t,r);return t.drag&&t.dragListener!==!1&&(i.draggable=!1,o.userSelect=o.WebkitUserSelect=o.WebkitTouchCallout="none",o.touchAction=t.drag===!0?"none":`pan-${t.drag==="x"?"y":"x"}`),t.tabIndex===void 0&&(t.onTap||t.onTapStart||t.whileTap)&&(i.tabIndex=0),i.style=o,i}const gy=()=>({...Yc(),attrs:{}});function Lk(t,r,i,o){const l=P.useMemo(()=>{const c=gy();return zg(c,r,qg(o),t.transformTemplate,t.style),{...c.attrs,style:{...c.style}}},[r]);if(t.style){const c={};my(c,t.style,t),l.style={...c,...l.style}}return l}const _k=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","propagate","ignoreStrict","viewport"]);function cl(t){return t.startsWith("while")||t.startsWith("drag")&&t!=="draggable"||t.startsWith("layout")||t.startsWith("onTap")||t.startsWith("onPan")||t.startsWith("onLayout")||_k.has(t)}function Ik(t,r){return t.startsWith("on")?!cl(t):(r==null?void 0:r(t))??!cl(t)}function zk(t,r,i,o){const l={};for(const c in t)c==="values"&&typeof t.values=="object"||rt(t[c])||(Ik(c,o)||i===!0&&cl(c)||!r&&!cl(c)||t.draggable&&c.startsWith("onDrag"))&&(l[c]=t[c]);return l}const Dk=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function Qc(t){return typeof t!="string"||t.includes("-")?!1:!!(Dk.indexOf(t)>-1||/[A-Z]/u.test(t))}function Nk(t,r,i,{latestValues:o},l,c=!1,u,f){const m=(u??Qc(t)?Lk:jk)(r,o,l,t),g=zk(r,typeof t=="string",c,f),y=t!==P.Fragment?{...g,...m,ref:i}:{},{children:x}=r,w=P.useMemo(()=>rt(x)?x.get():x,[x]);return P.createElement(t,{...y,children:w})}function Vk({scrapeMotionValuesFromProps:t,createRenderState:r},i,o,l){return{latestValues:Ok(i,o,l,t),renderState:r()}}function Ok(t,r,i,o){const l={},c=o(t,{});for(const x in c)l[x]=qo(c[x]);let{initial:u,animate:f}=t;const p=vl(t),m=Hg(t);r&&m&&!p&&t.inherit!==!1&&(u===void 0&&(u=r.initial),f===void 0&&(f=r.animate));let g=i?i.initial===!1:!1;g=g||u===!1;const y=g?f:u;if(y&&typeof y!="boolean"&&!yl(y)){const x=Array.isArray(y)?y:[y];for(let w=0;w<x.length;w++){const k=_c(t,x[w]);if(k){const{transitionEnd:C,transition:E,...M}=k;for(const L in M){let I=M[L];if(Array.isArray(I)){const D=g?I.length-1:0;I=I[D]}I!==null&&(l[L]=I)}for(const L in C)l[L]=C[L]}}}return l}const yy=t=>(r,i)=>{const o=P.useContext(xl),l=P.useContext(pl),c=()=>Vk(t,r,o,l);return i?c():fc(c)},Fk=yy({scrapeMotionValuesFromProps:Gc,createRenderState:Yc}),Bk=yy({scrapeMotionValuesFromProps:Jg,createRenderState:gy}),$k=Symbol.for("motionComponentSymbol");function Wk(t,r,i){const o=P.useRef(i);P.useInsertionEffect(()=>{o.current=i});const l=P.useRef(null);return P.useCallback(c=>{var f;c&&((f=t.onMount)==null||f.call(t,c)),r&&(c?r.mount(c):r.unmount());const u=o.current;if(typeof u=="function")if(c){const p=u(c);typeof p=="function"&&(l.current=p)}else l.current?(l.current(),l.current=null):u(c);else u&&(u.current=c)},[r])}const vy=P.createContext({});function ai(t){return t&&typeof t=="object"&&Object.prototype.hasOwnProperty.call(t,"current")}function Uk(t,r,i,o,l,c){var I,D;const{visualElement:u}=P.useContext(xl),f=P.useContext(hy),p=P.useContext(pl),m=P.useContext(Xc),g=m.reducedMotion,y=m.skipAnimations,x=P.useRef(null),w=P.useRef(!1);o=o||f.renderer,!x.current&&o&&(x.current=o(t,{visualState:r,parent:u,props:i,presenceContext:p,blockInitialAnimation:p?p.initial===!1:!1,reducedMotionConfig:g,skipAnimations:y,isSVG:c}),w.current&&x.current&&(x.current.manuallyAnimateOnMount=!0));const k=x.current,C=P.useContext(vy);k&&!k.projection&&l&&(k.type==="html"||k.type==="svg")&&Hk(x.current,i,l,C);const E=P.useRef(!1);P.useInsertionEffect(()=>{k&&E.current&&k.update(i,p)});const M=i[Pg],L=P.useRef(!!M&&typeof window<"u"&&!((I=window.MotionHandoffIsComplete)!=null&&I.call(window,M))&&((D=window.MotionHasOptimisedAnimation)==null?void 0:D.call(window,M)));return el(()=>{w.current=!0,k&&(E.current=!0,window.MotionIsMounted=!0,k.updateFeatures(),k.scheduleRenderMicrotask(),L.current&&k.animationState&&k.animationState.animateChanges())}),P.useEffect(()=>{k&&(!L.current&&k.animationState&&k.animationState.animateChanges(),L.current&&(queueMicrotask(()=>{var U;(U=window.MotionHandoffMarkAsComplete)==null||U.call(window,M)}),L.current=!1),k.enteringChildren=void 0)}),k}function Hk(t,r,i,o){const{layoutId:l,layout:c,drag:u,dragConstraints:f,layoutScroll:p,layoutRoot:m,layoutAnchor:g,layoutCrossfade:y}=r;t.projection=new i(t.latestValues,r["data-framer-portal-id"]?void 0:xy(t.parent)),t.projection.setOptions({layoutId:l,layout:c,alwaysMeasureLayout:!!u||f&&ai(f),visualElement:t,animationType:typeof c=="string"?c:"both",initialPromotionConfig:o,crossfade:y,layoutScroll:p,layoutRoot:m,layoutAnchor:g})}function xy(t){if(t)return t.options.allowProjection!==!1?t.projection:xy(t.parent)}function ku(t,{forwardMotionProps:r=!1,type:i}={},o,l){o&&bk(o);const c=i?i==="svg":Qc(t),u=c?Bk:Fk;function f(m,g){let y;const x={...P.useContext(Xc),...m,layoutId:Kk(m)},{isStatic:w,isValidProp:k}=x,C=Ak(m),E=u(m,w);if(!w&&typeof window<"u"){Gk();const M=Xk(x);y=M.MeasureLayout,C.visualElement=Uk(t,E,x,l,M.ProjectionNode,c)}return S.jsxs(xl.Provider,{value:C,children:[y&&C.visualElement?S.jsx(y,{visualElement:C.visualElement,...x}):null,Nk(t,m,Wk(E,C.visualElement,g),E,w,r,c,k)]})}f.displayName=`motion.${typeof t=="string"?t:`create(${t.displayName??t.name??""})`}`;const p=P.forwardRef(f);return p[$k]=t,p}function Kk({layoutId:t}){const r=P.useContext(dc).id;return r&&t!==void 0?r+"-"+t:t}function Gk(t,r){P.useContext(hy).strict}function Xk(t){const r=py(),{drag:i,layout:o}=r;if(!i&&!o)return{};const l={...i,...o};return{MeasureLayout:i!=null&&i.isEnabled(t)||o!=null&&o.isEnabled(t)?l.MeasureLayout:void 0,ProjectionNode:l.ProjectionNode}}function Yk(t,r){if(typeof Proxy>"u")return ku;const i=new Map,o=(c,u)=>ku(c,u,t,r),l=(c,u)=>o(c,u);return new Proxy(l,{get:(c,u)=>u==="create"?o:(i.has(u)||i.set(u,ku(u,void 0,t,r)),i.get(u))})}const Qk=(t,r)=>r.isSVG??Qc(t)?new PS(r):new ES(r,{allowProjection:t!==P.Fragment});class Zk extends tr{constructor(r){super(r),r.animationState||(r.animationState=LS(r))}updateAnimationControlsSubscription(){const{animate:r}=this.node.getProps();yl(r)&&(this.unmountControls=r.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:r}=this.node.getProps(),{animate:i}=this.node.prevProps||{};r!==i&&this.updateAnimationControlsSubscription()}unmount(){var r;this.node.animationState.reset(),(r=this.unmountControls)==null||r.call(this)}}let qk=0;class Jk extends tr{constructor(){super(...arguments),this.id=qk++,this.isExitComplete=!1}update(){var c;if(!this.node.presenceContext)return;const{isPresent:r,onExitComplete:i}=this.node.presenceContext,{isPresent:o}=this.node.prevPresenceContext||{};if(!this.node.animationState||r===o)return;if(r&&o===!1){if(this.isExitComplete){const{initial:u,custom:f}=this.node.getProps();if(typeof u=="string"||typeof u=="object"&&u!==null&&!Array.isArray(u)){const p=Lr(this.node,u,f);if(p){const{transition:m,transitionEnd:g,...y}=p;for(const x in y)(c=this.node.getValue(x))==null||c.jump(y[x])}}this.node.animationState.reset(),this.node.animationState.animateChanges()}else this.node.animationState.setActive("exit",!1);this.isExitComplete=!1;return}const l=this.node.animationState.setActive("exit",!r);i&&!r&&l.then(()=>{this.isExitComplete=!0,i(this.id)})}mount(){const{register:r,onExitComplete:i}=this.node.presenceContext||{};i&&i(this.id),r&&(this.unmount=r(this.id))}unmount(){}}const eT={animation:{Feature:Zk},exit:{Feature:Jk}};function Cs(t){return{point:{x:t.pageX,y:t.pageY}}}const tT=t=>r=>Uc(r)&&t(r,Cs(r));function hs(t,r,i,o){return vs(t,r,tT(i),o)}const wy=({current:t})=>t?t.ownerDocument.defaultView:null,tm=(t,r)=>Math.abs(t-r);function nT(t,r){const i=tm(t.x,r.x),o=tm(t.y,r.y);return Math.sqrt(i**2+o**2)}const nm=new Set(["auto","scroll"]);class Sy{constructor(r,i,{transformPagePoint:o,contextWindow:l=window,dragSnapToOrigin:c=!1,distanceThreshold:u=3,element:f}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.lastRawMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.scrollPositions=new Map,this.removeScrollListeners=null,this.onElementScroll=k=>{this.handleScroll(k.target)},this.onWindowScroll=()=>{this.handleScroll(window)},this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;this.lastRawMoveEventInfo&&(this.lastMoveEventInfo=Bo(this.lastRawMoveEventInfo,this.transformPagePoint));const k=Tu(this.lastMoveEventInfo,this.history),C=this.startEvent!==null,E=nT(k.offset,{x:0,y:0})>=this.distanceThreshold;if(!C&&!E)return;const{point:M}=k,{timestamp:L}=tt;this.history.push({...M,timestamp:L});const{onStart:I,onMove:D}=this.handlers;C||(I&&I(this.lastMoveEvent,k),this.startEvent=this.lastMoveEvent),D&&D(this.lastMoveEvent,k)},this.handlePointerMove=(k,C)=>{this.lastMoveEvent=k,this.lastRawMoveEventInfo=C,this.lastMoveEventInfo=Bo(C,this.transformPagePoint),Me.update(this.updatePoint,!0)},this.handlePointerUp=(k,C)=>{this.end();const{onEnd:E,onSessionEnd:M,resumeAnimation:L}=this.handlers;if((this.dragSnapToOrigin||!this.startEvent)&&L&&L(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const I=Tu(k.type==="pointercancel"?this.lastMoveEventInfo:Bo(C,this.transformPagePoint),this.history);this.startEvent&&E&&E(k,I),M&&M(k,I)},!Uc(r))return;this.dragSnapToOrigin=c,this.handlers=i,this.transformPagePoint=o,this.distanceThreshold=u,this.contextWindow=l||window;const p=Cs(r),m=Bo(p,this.transformPagePoint),{point:g}=m,{timestamp:y}=tt;this.history=[{...g,timestamp:y}];const{onSessionStart:x}=i;x&&x(r,Tu(m,this.history));const w={passive:!0,capture:!0};this.removeListeners=ws(hs(this.contextWindow,"pointermove",this.handlePointerMove,w),hs(this.contextWindow,"pointerup",this.handlePointerUp,w),hs(this.contextWindow,"pointercancel",this.handlePointerUp,w)),f&&this.startScrollTracking(f)}startScrollTracking(r){let i=r.parentElement;for(;i;){const o=getComputedStyle(i);(nm.has(o.overflowX)||nm.has(o.overflowY))&&this.scrollPositions.set(i,{x:i.scrollLeft,y:i.scrollTop}),i=i.parentElement}this.scrollPositions.set(window,{x:window.scrollX,y:window.scrollY}),window.addEventListener("scroll",this.onElementScroll,{capture:!0}),window.addEventListener("scroll",this.onWindowScroll),this.removeScrollListeners=()=>{window.removeEventListener("scroll",this.onElementScroll,{capture:!0}),window.removeEventListener("scroll",this.onWindowScroll)}}handleScroll(r){const i=this.scrollPositions.get(r);if(!i)return;const o=r===window,l=o?{x:window.scrollX,y:window.scrollY}:{x:r.scrollLeft,y:r.scrollTop},c={x:l.x-i.x,y:l.y-i.y};c.x===0&&c.y===0||(o?this.lastMoveEventInfo&&(this.lastMoveEventInfo.point.x+=c.x,this.lastMoveEventInfo.point.y+=c.y):this.history.length>0&&(this.history[0].x-=c.x,this.history[0].y-=c.y),this.scrollPositions.set(r,l),Me.update(this.updatePoint,!0))}updateHandlers(r){this.handlers=r}end(){this.removeListeners&&this.removeListeners(),this.removeScrollListeners&&this.removeScrollListeners(),this.scrollPositions.clear(),qn(this.updatePoint)}}function Bo(t,r){return r?{point:r(t.point)}:t}function rm(t,r){return{x:t.x-r.x,y:t.y-r.y}}function Tu({point:t},r){return{point:t,delta:rm(t,ky(r)),offset:rm(t,rT(r)),velocity:iT(r,.1)}}function rT(t){return t[0]}function ky(t){return t[t.length-1]}function iT(t,r){if(t.length<2)return{x:0,y:0};let i=t.length-1,o=null;const l=ky(t);for(;i>=0&&(o=t[i],!(l.timestamp-o.timestamp>zt(r)));)i--;if(!o)return{x:0,y:0};o===t[0]&&t.length>2&&l.timestamp-o.timestamp>zt(r)*2&&(o=t[1]);const c=It(l.timestamp-o.timestamp);if(c===0)return{x:0,y:0};const u={x:(l.x-o.x)/c,y:(l.y-o.y)/c};return u.x===1/0&&(u.x=0),u.y===1/0&&(u.y=0),u}function sT(t,{min:r,max:i},o){return r!==void 0&&t<r?t=o?je(r,t,o.min):Math.max(t,r):i!==void 0&&t>i&&(t=o?je(i,t,o.max):Math.min(t,i)),t}function im(t,r,i){return{min:r!==void 0?t.min+r:void 0,max:i!==void 0?t.max+i-(t.max-t.min):void 0}}function oT(t,{top:r,left:i,bottom:o,right:l}){return{x:im(t.x,i,l),y:im(t.y,r,o)}}function sm(t,r){let i=r.min-t.min,o=r.max-t.max;return r.max-r.min<t.max-t.min&&([i,o]=[o,i]),{min:i,max:o}}function lT(t,r){return{x:sm(t.x,r.x),y:sm(t.y,r.y)}}function aT(t,r){let i=.5;const o=St(t),l=St(r);return l>o?i=mi(r.min,r.max-o,t.min):o>l&&(i=mi(t.min,t.max-l,r.min)),en(0,1,i)}function uT(t,r){const i={};return r.min!==void 0&&(i.min=r.min-t.min),r.max!==void 0&&(i.max=r.max-t.min),i}const oc=.35;function cT(t=oc){return t===!1?t=0:t===!0&&(t=oc),{x:om(t,"left","right"),y:om(t,"top","bottom")}}function om(t,r,i){return{min:lm(t,r),max:lm(t,i)}}function lm(t,r){return typeof t=="number"?t:t[r]||0}const dT=new WeakMap;class fT{constructor(r){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=et(),this.latestPointerEvent=null,this.latestPanInfo=null,this.visualElement=r}start(r,{snapToCursor:i=!1,distanceThreshold:o}={}){const{presenceContext:l}=this.visualElement;if(l&&l.isPresent===!1)return;const c=y=>{i&&this.snapToCursor(Cs(y).point),this.stopAnimation()},u=(y,x)=>{const{drag:w,dragPropagation:k,onDragStart:C}=this.getProps();if(w&&!k&&(this.openDragLock&&this.openDragLock(),this.openDragLock=tS(w),!this.openDragLock))return;this.latestPointerEvent=y,this.latestPanInfo=x,this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),un(M=>{let L=this.getAxisMotionValue(M).get()||0;if(fn.test(L)){const{projection:I}=this.visualElement;if(I&&I.layout){const D=I.layout.layoutBox[M];D&&(L=St(D)*(parseFloat(L)/100))}}this.originPoint[M]=L}),C&&Me.update(()=>C(y,x),!1,!0),ec(this.visualElement,"transform");const{animationState:E}=this.visualElement;E&&E.setActive("whileDrag",!0)},f=(y,x)=>{this.latestPointerEvent=y,this.latestPanInfo=x;const{dragPropagation:w,dragDirectionLock:k,onDirectionLock:C,onDrag:E}=this.getProps();if(!w&&!this.openDragLock)return;const{offset:M}=x;if(k&&this.currentDirection===null){this.currentDirection=pT(M),this.currentDirection!==null&&C&&C(this.currentDirection);return}this.updateAxis("x",x.point,M),this.updateAxis("y",x.point,M),this.visualElement.render(),E&&Me.update(()=>E(y,x),!1,!0)},p=(y,x)=>{this.latestPointerEvent=y,this.latestPanInfo=x,this.stop(y,x),this.latestPointerEvent=null,this.latestPanInfo=null},m=()=>{const{dragSnapToOrigin:y}=this.getProps();(y||this.constraints)&&this.startAnimation({x:0,y:0})},{dragSnapToOrigin:g}=this.getProps();this.panSession=new Sy(r,{onSessionStart:c,onStart:u,onMove:f,onSessionEnd:p,resumeAnimation:m},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:g,distanceThreshold:o,contextWindow:wy(this.visualElement),element:this.visualElement.current})}stop(r,i){const o=r||this.latestPointerEvent,l=i||this.latestPanInfo,c=this.isDragging;if(this.cancel(),!c||!l||!o)return;const{velocity:u}=l;this.startAnimation(u);const{onDragEnd:f}=this.getProps();f&&Me.postRender(()=>f(o,l))}cancel(){this.isDragging=!1;const{projection:r,animationState:i}=this.visualElement;r&&(r.isAnimationBlocked=!1),this.endPanSession();const{dragPropagation:o}=this.getProps();!o&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),i&&i.setActive("whileDrag",!1)}endPanSession(){this.panSession&&this.panSession.end(),this.panSession=void 0}updateAxis(r,i,o){const{drag:l}=this.getProps();if(!o||!$o(r,l,this.currentDirection))return;const c=this.getAxisMotionValue(r);let u=this.originPoint[r]+o[r];this.constraints&&this.constraints[r]&&(u=sT(u,this.constraints[r],this.elastic[r])),c.set(u)}resolveConstraints(){var c;const{dragConstraints:r,dragElastic:i}=this.getProps(),o=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):(c=this.visualElement.projection)==null?void 0:c.layout,l=this.constraints;r&&ai(r)?this.constraints||(this.constraints=this.resolveRefConstraints()):r&&o?this.constraints=oT(o.layoutBox,r):this.constraints=!1,this.elastic=cT(i),l!==this.constraints&&!ai(r)&&o&&this.constraints&&!this.hasMutatedConstraints&&un(u=>{this.constraints!==!1&&this.getAxisMotionValue(u)&&(this.constraints[u]=uT(o.layoutBox[u],this.constraints[u]))})}resolveRefConstraints(){const{dragConstraints:r,onMeasureDragConstraints:i}=this.getProps();if(!r||!ai(r))return!1;const o=r.current,{projection:l}=this.visualElement;if(!l||!l.layout)return!1;l.root&&(l.root.scroll=void 0,l.root.updateScroll());const c=Y1(o,l.root,this.visualElement.getTransformPagePoint());let u=lT(l.layout.layoutBox,c);if(i){const f=i(K1(u));this.hasMutatedConstraints=!!f,f&&(u=Ng(f))}return u}startAnimation(r){const{drag:i,dragMomentum:o,dragElastic:l,dragTransition:c,dragSnapToOrigin:u,onDragTransitionEnd:f}=this.getProps(),p=this.constraints||{},m=un(g=>{if(!$o(g,i,this.currentDirection))return;let y=p&&p[g]||{};(u===!0||u===g)&&(y={min:0,max:0});const x=l?200:1e6,w=l?40:1e7,k={type:"inertia",velocity:o?r[g]:0,bounceStiffness:x,bounceDamping:w,timeConstant:750,restDelta:1,restSpeed:10,...c,...y};return this.startAxisValueAnimation(g,k)});return Promise.all(m).then(f)}startAxisValueAnimation(r,i){const o=this.getAxisMotionValue(r);return ec(this.visualElement,r),o.start(gl(r,o,0,i,this.visualElement,!1))}stopAnimation(){un(r=>this.getAxisMotionValue(r).stop())}getAxisMotionValue(r){const i=`_drag${r.toUpperCase()}`,l=this.visualElement.getProps()[i];return l||this.visualElement.getValue(r,this.visualElement.latestValues[r]??0)}snapToCursor(r){un(i=>{const{drag:o}=this.getProps();if(!$o(i,o,this.currentDirection))return;const{projection:l}=this.visualElement,c=this.getAxisMotionValue(i);if(l&&l.layout){const{min:u,max:f}=l.layout.layoutBox[i],p=c.get()||0;c.set(r[i]-je(u,f,.5)+p)}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:r,dragConstraints:i}=this.getProps(),{projection:o}=this.visualElement;if(!ai(i)||!o||!this.constraints)return;this.stopAnimation();const l={x:0,y:0};un(u=>{const f=this.getAxisMotionValue(u);if(f&&this.constraints!==!1){const p=f.get();l[u]=aT({min:p,max:p},this.constraints[u])}});const{transformTemplate:c}=this.visualElement.getProps();this.visualElement.current.style.transform=c?c({},""):"none",o.root&&o.root.updateScroll(),o.updateLayout(),this.constraints=!1,this.resolveConstraints(),un(u=>{if(!$o(u,r,null))return;const f=this.getAxisMotionValue(u),{min:p,max:m}=this.constraints[u];f.set(je(p,m,l[u]))}),this.visualElement.render()}addListeners(){if(!this.visualElement.current)return;dT.set(this.visualElement,this);const r=this.visualElement.current,i=hs(r,"pointerdown",m=>{const{drag:g,dragListener:y=!0}=this.getProps(),x=m.target,w=x!==r&&lS(x);g&&y&&!w&&this.start(m)});let o;const l=()=>{const{dragConstraints:m}=this.getProps();ai(m)&&m.current&&(this.constraints=this.resolveRefConstraints(),o||(o=hT(r,m.current,()=>this.scalePositionWithinConstraints())))},{projection:c}=this.visualElement,u=c.addEventListener("measure",l);c&&!c.layout&&(c.root&&c.root.updateScroll(),c.updateLayout()),Me.read(l);const f=vs(window,"resize",()=>this.scalePositionWithinConstraints()),p=c.addEventListener("didUpdate",(({delta:m,hasLayoutChanged:g})=>{this.isDragging&&g&&(un(y=>{const x=this.getAxisMotionValue(y);x&&(this.originPoint[y]+=m[y].translate,x.set(x.get()+m[y].translate))}),this.visualElement.render())}));return()=>{f(),i(),u(),p&&p(),o&&o()}}getProps(){const r=this.visualElement.getProps(),{drag:i=!1,dragDirectionLock:o=!1,dragPropagation:l=!1,dragConstraints:c=!1,dragElastic:u=oc,dragMomentum:f=!0}=r;return{...r,drag:i,dragDirectionLock:o,dragPropagation:l,dragConstraints:c,dragElastic:u,dragMomentum:f}}}function am(t){let r=!0;return()=>{if(r){r=!1;return}t()}}function hT(t,r,i){const o=Sp(t,am(i)),l=Sp(r,am(i));return()=>{o(),l()}}function $o(t,r,i){return(r===!0||r===t)&&(i===null||i===t)}function pT(t,r=10){let i=null;return Math.abs(t.y)>r?i="y":Math.abs(t.x)>r&&(i="x"),i}class mT extends tr{constructor(r){super(r),this.removeGroupControls=qt,this.removeListeners=qt,this.controls=new fT(r)}mount(){const{dragControls:r}=this.node.getProps();r&&(this.removeGroupControls=r.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||qt}update(){const{dragControls:r}=this.node.getProps(),{dragControls:i}=this.node.prevProps||{};r!==i&&(this.removeGroupControls(),r&&(this.removeGroupControls=r.subscribe(this.controls)))}unmount(){this.removeGroupControls(),this.removeListeners(),this.controls.isDragging||this.controls.endPanSession()}}const Cu=t=>(r,i)=>{t&&Me.update(()=>t(r,i),!1,!0)};class gT extends tr{constructor(){super(...arguments),this.removePointerDownListener=qt}onPointerDown(r){this.session=new Sy(r,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:wy(this.node)})}createPanHandlers(){const{onPanSessionStart:r,onPanStart:i,onPan:o,onPanEnd:l}=this.node.getProps();return{onSessionStart:Cu(r),onStart:Cu(i),onMove:Cu(o),onEnd:(c,u)=>{delete this.session,l&&Me.postRender(()=>l(c,u))}}}mount(){this.removePointerDownListener=hs(this.node.current,"pointerdown",r=>this.onPointerDown(r))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}let Eu=!1;class yT extends P.Component{componentDidMount(){const{visualElement:r,layoutGroup:i,switchLayoutGroup:o,layoutId:l}=this.props,{projection:c}=r;c&&(i.group&&i.group.add(c),o&&o.register&&l&&o.register(c),Eu&&c.root.didUpdate(),c.addEventListener("animationComplete",()=>{this.safeToRemove()}),c.setOptions({...c.options,layoutDependency:this.props.layoutDependency,onExitComplete:()=>this.safeToRemove()})),Jo.hasEverUpdated=!0}getSnapshotBeforeUpdate(r){const{layoutDependency:i,visualElement:o,drag:l,isPresent:c}=this.props,{projection:u}=o;return u&&(u.isPresent=c,r.layoutDependency!==i&&u.setOptions({...u.options,layoutDependency:i}),Eu=!0,l||r.layoutDependency!==i||i===void 0||r.isPresent!==c?u.willUpdate():this.safeToRemove(),r.isPresent!==c&&(c?u.promote():u.relegate()||Me.postRender(()=>{const f=u.getStack();(!f||!f.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{visualElement:r,layoutAnchor:i}=this.props,{projection:o}=r;o&&(o.options.layoutAnchor=i,o.root.didUpdate(),Wc.postRender(()=>{!o.currentAnimation&&o.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:r,layoutGroup:i,switchLayoutGroup:o}=this.props,{projection:l}=r;Eu=!0,l&&(l.scheduleCheckAfterUnmount(),i&&i.group&&i.group.remove(l),o&&o.deregister&&o.deregister(l))}safeToRemove(){const{safeToRemove:r}=this.props;r&&r()}render(){return null}}function Ty(t){const[r,i]=fy(),o=P.useContext(dc);return S.jsx(yT,{...t,layoutGroup:o,switchLayoutGroup:P.useContext(vy),isPresent:r,safeToRemove:i})}const vT={pan:{Feature:gT},drag:{Feature:mT,ProjectionNode:dy,MeasureLayout:Ty}};function um(t,r,i){const{props:o}=t;t.animationState&&o.whileHover&&t.animationState.setActive("whileHover",i==="Start");const l="onHover"+i,c=o[l];c&&Me.postRender(()=>c(r,Cs(r)))}class xT extends tr{mount(){const{current:r}=this.node;r&&(this.unmount=rS(r,(i,o)=>(um(this.node,o,"Start"),l=>um(this.node,l,"End"))))}unmount(){}}class wT extends tr{constructor(){super(...arguments),this.isActive=!1}onFocus(){let r=!1;try{r=this.node.current.matches(":focus-visible")}catch{r=!0}!r||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=ws(vs(this.node.current,"focus",()=>this.onFocus()),vs(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function cm(t,r,i){const{props:o}=t;if(t.current instanceof HTMLButtonElement&&t.current.disabled)return;t.animationState&&o.whileTap&&t.animationState.setActive("whileTap",i==="Start");const l="onTap"+(i==="End"?"":i),c=o[l];c&&Me.postRender(()=>c(r,Cs(r)))}class ST extends tr{mount(){const{current:r}=this.node;if(!r)return;const{globalTapTarget:i,propagate:o}=this.node.props;this.unmount=uS(r,(l,c)=>(cm(this.node,c,"Start"),(u,{success:f})=>cm(this.node,u,f?"End":"Cancel")),{useGlobalTarget:i,stopPropagation:(o==null?void 0:o.tap)===!1})}unmount(){}}const lc=new WeakMap,bu=new WeakMap,kT=t=>{const r=lc.get(t.target);r&&r(t)},TT=t=>{t.forEach(kT)};function CT({root:t,...r}){const i=t||document;bu.has(i)||bu.set(i,{});const o=bu.get(i),l=JSON.stringify(r);return o[l]||(o[l]=new IntersectionObserver(TT,{root:t,...r})),o[l]}function ET(t,r,i){const o=CT(r);return lc.set(t,i),o.observe(t),()=>{lc.delete(t),o.unobserve(t)}}const bT={some:0,all:1};class PT extends tr{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){var p;(p=this.stopObserver)==null||p.call(this);const{viewport:r={}}=this.node.getProps(),{root:i,margin:o,amount:l="some",once:c}=r,u={root:i?i.current:void 0,rootMargin:o,threshold:typeof l=="number"?l:bT[l]},f=m=>{const{isIntersecting:g}=m;if(this.isInView===g||(this.isInView=g,c&&!g&&this.hasEnteredView))return;g&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",g);const{onViewportEnter:y,onViewportLeave:x}=this.node.getProps(),w=g?y:x;w&&w(m)};this.stopObserver=ET(this.node.current,u,f)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:r,prevProps:i}=this.node;["amount","margin","root"].some(AT(r,i))&&this.startObserver()}unmount(){var r;(r=this.stopObserver)==null||r.call(this),this.hasEnteredView=!1,this.isInView=!1}}function AT({viewport:t={}},{viewport:r={}}={}){return i=>t[i]!==r[i]}const MT={inView:{Feature:PT},tap:{Feature:ST},focus:{Feature:wT},hover:{Feature:xT}},RT={layout:{ProjectionNode:dy,MeasureLayout:Ty}},jT={...eT,...MT,...vT,...RT},LT=Yk(jT,Qk);function nr(){!Kc.current&&Kg();const[t]=P.useState(ll.current);return t}function Zc(t){return typeof t=="object"&&!Array.isArray(t)}function Cy(t,r,i,o){return t==null?[]:typeof t=="string"&&Zc(r)?Nc(t,i,o):t instanceof NodeList?Array.from(t):Array.isArray(t)?t.filter(l=>l!=null):[t]}function _T(t,r,i){return t*(r+1)+i*r}function dm(t,r,i,o){return typeof r=="number"?r:r.startsWith("-")||r.startsWith("+")?Math.max(0,t+parseFloat(r)):r==="<"?i:r.startsWith("<")?Math.max(0,i+parseFloat(r.slice(1))):o.get(r)??t}function IT(t,r,i){for(let o=0;o<t.length;o++){const l=t[o];l.at>r&&l.at<i&&(_r(t,l),o--)}}function zT(t,r,i,o,l,c){IT(t,l,c);for(let u=0;u<r.length;u++)t.push({value:r[u],at:je(l,c,o[u]),easing:Gm(i,u)})}function DT(t,r,i=0){const o=r+1+r*i;for(let l=0;l<t.length;l++)t[l]=t[l]/o}function NT(t,r){return t.at===r.at?t.value===null?1:r.value===null?-1:0:t.at-r.at}const VT="easeInOut",OT=20;function FT(t,{defaultTransition:r={},...i}={},o,l){const c=r.duration||.3,u=new Map,f=new Map,p={},m=new Map;let g=0,y=0,x=0;for(let w=0;w<t.length;w++){const k=t[w];if(typeof k=="string"){m.set(k,y);continue}else if(!Array.isArray(k)){m.set(k.name,dm(y,k.at,g,m));continue}let[C,E,M={}]=k;M.at!==void 0&&(y=dm(y,M.at,g,m));let L=0;const I=(D,U,Y,N=0,j=0)=>{const W=BT(D),{delay:ee=0,times:de=cg(W),type:Q=r.type||"keyframes",repeat:oe,repeatType:fe,repeatDelay:pe=0,...Te}=U;let{ease:q=r.ease||"easeOut",duration:$}=U;const Z=typeof ee=="function"?ee(N,j):ee,O=W.length,A=jc(Q)?Q:l==null?void 0:l[Q||"keyframes"];if(O<=2&&A){let ae=100;if(O===2&&UT(W)){const ke=W[1]-W[0];ae=Math.abs(ke)}const le={...r,...Te};$!==void 0&&(le.duration=zt($));const we=og(le,ae,A);q=we.ease,$=we.duration}$??($=c);const B=y+Z;de.length===1&&de[0]===0&&(de[1]=1);const xe=de.length-W.length;if(xe>0&&ug(de,xe),W.length===1&&W.unshift(null),oe&&oe<OT){const ae=$>0?pe/$:0;$=_T($,oe,pe);const le=[...W],we=[...de];q=Array.isArray(q)?[...q]:[q];const ke=[...q],ye=fe==="reverse"||fe==="mirror";let Ve=le,ct=ke;ye&&(Ve=[...le].reverse(),fe==="reverse"&&(ct=[...ke].reverse().map(Be=>typeof Be=="function"?yc(Be):Be)));for(let Be=0;Be<oe;Be++){const dt=ye&&Be%2===0,ft=dt?Ve:le,pn=dt?ct:ke,kt=(Be+1)*(1+ae);ae>0&&(W.push(W[W.length-1]),de.push(kt),q.push("linear")),W.push(...ft);for(let Mt=0;Mt<ft.length;Mt++)de.push(we[Mt]+kt),q.push(Mt===0?"linear":Gm(pn,Mt-1))}DT(de,oe,ae)}const he=B+$;zT(Y,W,q,de,B,he),L=Math.max(Z+$,L),x=Math.max(he,x)};if(rt(C)){const D=fm(C,f);I(E,M,hm("default",D))}else{const D=Cy(C,E,o,p),U=D.length;for(let Y=0;Y<U;Y++){E=E,M=M;const N=D[Y],j=fm(N,f);for(const W in E)I(E[W],$T(M,W),hm(W,j),Y,U)}}g=y,y+=L}return f.forEach((w,k)=>{for(const C in w){const E=w[C];E.sort(NT);const M=[],L=[],I=[];for(let N=0;N<E.length;N++){const{at:j,value:W,easing:ee}=E[N];M.push(W),L.push(mi(0,x,j)),I.push(ee||"easeOut")}L[0]!==0&&(L.unshift(0),M.unshift(M[0]),I.unshift(VT)),L[L.length-1]!==1&&(L.push(1),M.push(null)),u.has(k)||u.set(k,{keyframes:{},transition:{}});const D=u.get(k);D.keyframes[C]=M;const{type:U,...Y}=r;D.transition[C]={...Y,duration:x,ease:I,times:L,...i}}}),u}function fm(t,r){return!r.has(t)&&r.set(t,{}),r.get(t)}function hm(t,r){return r[t]||(r[t]=[]),r[t]}function BT(t){return Array.isArray(t)?t:[t]}function $T(t,r){return t&&t[r]?{...t,...t[r]}:{...t}}const WT=t=>typeof t=="number",UT=t=>t.every(WT);function HT(t,r){return rt(t)||typeof t=="number"||typeof t=="string"&&!Zc(r)}function Ey(t,r,i,o){const l=[];if(HT(t,r))l.push(ly(t,Zc(r)&&r.default||r,i&&(i.default||i)));else{if(t==null)return l;const c=Cy(t,r,o),u=c.length;for(let f=0;f<u;f++){const p=c[f],m={...i};"delay"in m&&typeof m.delay=="function"&&(m.delay=m.delay(f,u)),p instanceof Element?l.push(...J1(p,r,m,Ug.get(p))):l.push(..._g(P1(p)??eS,p,r,m))}}return l}function KT(t,r,i){const o=[],l=t.map(u=>{if(Array.isArray(u)&&typeof u[0]=="function"){const f=u[0],p=er(0);return p.on("change",f),u.length===1?[p,[0,1]]:u.length===2?[p,[0,1],u[1]]:[p,u[1],u[2]]}return u});return FT(l,r,i,{spring:gs}).forEach(({keyframes:u,transition:f},p)=>{o.push(...Ey(p,u,f))}),o}function GT(t){return Array.isArray(t)&&t.some(Array.isArray)}function XT(t={}){const{scope:r,reduceMotion:i,skipAnimations:o}=t;function l(c,u,f){let p=[],m;const g={};if(i!==void 0&&(g.reduceMotion=i),o!==void 0&&(g.skipAnimations=o),GT(c)){const{onComplete:x,...w}=u||{};typeof x=="function"&&(m=x),p=KT(c,{...g,...w},r)}else{const{onComplete:x,...w}=f||{};typeof x=="function"&&(m=x),p=Ey(c,u,{...g,...w},r)}const y=new e1(p);return m&&y.finished.then(m),r&&(r.animations.push(y),y.finished.then(()=>{_r(r.animations,y)})),y}return l}const YT=Object.assign(XT(),{addEffect:b1,removeEffect:jg}),Ge=LT,Jt=[.16,1,.3,1],wl={type:"spring",stiffness:500,damping:30,mass:.6},QT={type:"spring",stiffness:420,damping:40,mass:.5};function by(){const[t,r]=P.useState(!1);return P.useEffect(()=>{var l;if(typeof window>"u"||!window.matchMedia)return;const i=window.matchMedia("(hover: hover) and (pointer: fine)"),o=()=>r(i.matches);return o(),(l=i.addEventListener)==null||l.call(i,"change",o),()=>{var c;return(c=i.removeEventListener)==null?void 0:c.call(i,"change",o)}},[]),t}function Py(t){var r,i,o="";if(typeof t=="string"||typeof t=="number")o+=t;else if(typeof t=="object")if(Array.isArray(t)){var l=t.length;for(r=0;r<l;r++)t[r]&&(i=Py(t[r]))&&(o&&(o+=" "),o+=i)}else for(i in t)t[i]&&(o&&(o+=" "),o+=i);return o}function ZT(){for(var t,r,i=0,o="",l=arguments.length;i<l;i++)(t=arguments[i])&&(r=Py(t))&&(o&&(o+=" "),o+=r);return o}const qT=(t,r)=>{const i=new Array(t.length+r.length);for(let o=0;o<t.length;o++)i[o]=t[o];for(let o=0;o<r.length;o++)i[t.length+o]=r[o];return i},JT=(t,r)=>({classGroupId:t,validator:r}),Ay=(t=new Map,r=null,i)=>({nextPart:t,validators:r,classGroupId:i}),dl="-",pm=[],eC="arbitrary..",tC=t=>{const r=rC(t),{conflictingClassGroups:i,conflictingClassGroupModifiers:o}=t;return{getClassGroupId:u=>{if(u.startsWith("[")&&u.endsWith("]"))return nC(u);const f=u.split(dl),p=f[0]===""&&f.length>1?1:0;return My(f,p,r)},getConflictingClassGroupIds:(u,f)=>{if(f){const p=o[u],m=i[u];return p?m?qT(m,p):p:m||pm}return i[u]||pm}}},My=(t,r,i)=>{if(t.length-r===0)return i.classGroupId;const l=t[r],c=i.nextPart.get(l);if(c){const m=My(t,r+1,c);if(m)return m}const u=i.validators;if(u===null)return;const f=r===0?t.join(dl):t.slice(r).join(dl),p=u.length;for(let m=0;m<p;m++){const g=u[m];if(g.validator(f))return g.classGroupId}},nC=t=>t.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const r=t.slice(1,-1),i=r.indexOf(":"),o=r.slice(0,i);return o?eC+o:void 0})(),rC=t=>{const{theme:r,classGroups:i}=t;return iC(i,r)},iC=(t,r)=>{const i=Ay();for(const o in t){const l=t[o];qc(l,i,o,r)}return i},qc=(t,r,i,o)=>{const l=t.length;for(let c=0;c<l;c++){const u=t[c];sC(u,r,i,o)}},sC=(t,r,i,o)=>{if(typeof t=="string"){oC(t,r,i);return}if(typeof t=="function"){lC(t,r,i,o);return}aC(t,r,i,o)},oC=(t,r,i)=>{const o=t===""?r:Ry(r,t);o.classGroupId=i},lC=(t,r,i,o)=>{if(uC(t)){qc(t(o),r,i,o);return}r.validators===null&&(r.validators=[]),r.validators.push(JT(i,t))},aC=(t,r,i,o)=>{const l=Object.entries(t),c=l.length;for(let u=0;u<c;u++){const[f,p]=l[u];qc(p,Ry(r,f),i,o)}},Ry=(t,r)=>{let i=t;const o=r.split(dl),l=o.length;for(let c=0;c<l;c++){const u=o[c];let f=i.nextPart.get(u);f||(f=Ay(),i.nextPart.set(u,f)),i=f}return i},uC=t=>"isThemeGetter"in t&&t.isThemeGetter===!0,cC=t=>{if(t<1)return{get:()=>{},set:()=>{}};let r=0,i=Object.create(null),o=Object.create(null);const l=(c,u)=>{i[c]=u,r++,r>t&&(r=0,o=i,i=Object.create(null))};return{get(c){let u=i[c];if(u!==void 0)return u;if((u=o[c])!==void 0)return l(c,u),u},set(c,u){c in i?i[c]=u:l(c,u)}}},ac="!",mm=":",dC=[],gm=(t,r,i,o,l)=>({modifiers:t,hasImportantModifier:r,baseClassName:i,maybePostfixModifierPosition:o,isExternal:l}),fC=t=>{const{prefix:r,experimentalParseClassName:i}=t;let o=l=>{const c=[];let u=0,f=0,p=0,m;const g=l.length;for(let C=0;C<g;C++){const E=l[C];if(u===0&&f===0){if(E===mm){c.push(l.slice(p,C)),p=C+1;continue}if(E==="/"){m=C;continue}}E==="["?u++:E==="]"?u--:E==="("?f++:E===")"&&f--}const y=c.length===0?l:l.slice(p);let x=y,w=!1;y.endsWith(ac)?(x=y.slice(0,-1),w=!0):y.startsWith(ac)&&(x=y.slice(1),w=!0);const k=m&&m>p?m-p:void 0;return gm(c,w,x,k)};if(r){const l=r+mm,c=o;o=u=>u.startsWith(l)?c(u.slice(l.length)):gm(dC,!1,u,void 0,!0)}if(i){const l=o;o=c=>i({className:c,parseClassName:l})}return o},hC=t=>{const r=new Map;return t.orderSensitiveModifiers.forEach((i,o)=>{r.set(i,1e6+o)}),i=>{const o=[];let l=[];for(let c=0;c<i.length;c++){const u=i[c],f=u[0]==="[",p=r.has(u);f||p?(l.length>0&&(l.sort(),o.push(...l),l=[]),o.push(u)):l.push(u)}return l.length>0&&(l.sort(),o.push(...l)),o}},pC=t=>({cache:cC(t.cacheSize),parseClassName:fC(t),sortModifiers:hC(t),postfixLookupClassGroupIds:mC(t),...tC(t)}),mC=t=>{const r=Object.create(null),i=t.postfixLookupClassGroups;if(i)for(let o=0;o<i.length;o++)r[i[o]]=!0;return r},gC=/\s+/,yC=(t,r)=>{const{parseClassName:i,getClassGroupId:o,getConflictingClassGroupIds:l,sortModifiers:c,postfixLookupClassGroupIds:u}=r,f=[],p=t.trim().split(gC);let m="";for(let g=p.length-1;g>=0;g-=1){const y=p[g],{isExternal:x,modifiers:w,hasImportantModifier:k,baseClassName:C,maybePostfixModifierPosition:E}=i(y);if(x){m=y+(m.length>0?" "+m:m);continue}let M=!!E,L;if(M){const N=C.substring(0,E);L=o(N);const j=L&&u[L]?o(C):void 0;j&&j!==L&&(L=j,M=!1)}else L=o(C);if(!L){if(!M){m=y+(m.length>0?" "+m:m);continue}if(L=o(C),!L){m=y+(m.length>0?" "+m:m);continue}M=!1}const I=w.length===0?"":w.length===1?w[0]:c(w).join(":"),D=k?I+ac:I,U=D+L;if(f.indexOf(U)>-1)continue;f.push(U);const Y=l(L,M);for(let N=0;N<Y.length;++N){const j=Y[N];f.push(D+j)}m=y+(m.length>0?" "+m:m)}return m},vC=(...t)=>{let r=0,i,o,l="";for(;r<t.length;)(i=t[r++])&&(o=jy(i))&&(l&&(l+=" "),l+=o);return l},jy=t=>{if(typeof t=="string")return t;let r,i="";for(let o=0;o<t.length;o++)t[o]&&(r=jy(t[o]))&&(i&&(i+=" "),i+=r);return i},xC=(t,...r)=>{let i,o,l,c;const u=p=>{const m=r.reduce((g,y)=>y(g),t());return i=pC(m),o=i.cache.get,l=i.cache.set,c=f,f(p)},f=p=>{const m=o(p);if(m)return m;const g=yC(p,i);return l(p,g),g};return c=u,(...p)=>c(vC(...p))},wC=[],Je=t=>{const r=i=>i[t]||wC;return r.isThemeGetter=!0,r.themeKey=t,r},Ly=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,_y=/^\((?:(\w[\w-]*):)?(.+)\)$/i,SC=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,kC=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,TC=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,CC=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix|color|light-dark)\(.+\)$/,EC=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,bC=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Qn=t=>SC.test(t),Ee=t=>!!t&&!Number.isNaN(Number(t)),an=t=>!!t&&Number.isInteger(Number(t)),Pu=t=>t.endsWith("%")&&Ee(t.slice(0,-1)),Cn=t=>kC.test(t),Iy=()=>!0,PC=t=>TC.test(t)&&!CC.test(t),Jc=()=>!1,AC=t=>EC.test(t),MC=t=>bC.test(t),RC=t=>!te(t)&&!re(t),jC=t=>t.startsWith("@container")&&(t[10]==="/"&&t[11]!==void 0||t[11]==="s"&&t[16]!==void 0&&t.startsWith("-size/",10)||t[11]==="n"&&t[18]!==void 0&&t.startsWith("-normal/",10)),LC=t=>rr(t,Ny,Jc),te=t=>Ly.test(t),Er=t=>rr(t,Vy,PC),ym=t=>rr(t,FC,Ee),_C=t=>rr(t,Fy,Iy),IC=t=>rr(t,Oy,Jc),vm=t=>rr(t,zy,Jc),zC=t=>rr(t,Dy,MC),Wo=t=>rr(t,By,AC),re=t=>_y.test(t),ls=t=>Ir(t,Vy),DC=t=>Ir(t,Oy),xm=t=>Ir(t,zy),NC=t=>Ir(t,Ny),VC=t=>Ir(t,Dy),Uo=t=>Ir(t,By,!0),OC=t=>Ir(t,Fy,!0),rr=(t,r,i)=>{const o=Ly.exec(t);return o?o[1]?r(o[1]):i(o[2]):!1},Ir=(t,r,i=!1)=>{const o=_y.exec(t);return o?o[1]?r(o[1]):i:!1},zy=t=>t==="position"||t==="percentage",Dy=t=>t==="image"||t==="url",Ny=t=>t==="length"||t==="size"||t==="bg-size",Vy=t=>t==="length",FC=t=>t==="number",Oy=t=>t==="family-name",Fy=t=>t==="number"||t==="weight",By=t=>t==="shadow",BC=()=>{const t=Je("color"),r=Je("font"),i=Je("text"),o=Je("font-weight"),l=Je("tracking"),c=Je("leading"),u=Je("breakpoint"),f=Je("container"),p=Je("spacing"),m=Je("radius"),g=Je("shadow"),y=Je("inset-shadow"),x=Je("text-shadow"),w=Je("drop-shadow"),k=Je("blur"),C=Je("perspective"),E=Je("aspect"),M=Je("ease"),L=Je("animate"),I=()=>["auto","avoid","all","avoid-page","page","left","right","column"],D=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],U=()=>[...D(),re,te],Y=()=>["auto","hidden","clip","visible","scroll"],N=()=>["auto","contain","none"],j=()=>[re,te,p],W=()=>[Qn,"full","auto",...j()],ee=()=>[an,"none","subgrid",re,te],de=()=>["auto",{span:["full",an,re,te]},an,re,te],Q=()=>[an,"auto",re,te],oe=()=>["auto","min","max","fr",re,te],fe=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],pe=()=>["start","end","center","stretch","center-safe","end-safe"],Te=()=>["auto",...j()],q=()=>[Qn,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...j()],$=()=>[f,Qn,"screen","full","dvw","lvw","svw","min","max","fit",...j()],Z=()=>[Qn,"screen","full","lh","dvh","lvh","svh","min","max","fit",...j()],O=()=>[t,re,te],A=()=>[...D(),xm,vm,{position:[re,te]}],B=()=>["no-repeat",{repeat:["","x","y","space","round"]}],xe=()=>["auto","cover","contain",NC,LC,{size:[re,te]}],he=()=>[Pu,ls,Er],ae=()=>["","none","full",m,re,te],le=()=>["",Ee,ls,Er],we=()=>["solid","dashed","dotted","double"],ke=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],ye=()=>[Ee,Pu,xm,vm],Ve=()=>["","none",k,re,te],ct=()=>["none",Ee,re,te],Be=()=>["none",Ee,re,te],dt=()=>[Ee,re,te],ft=()=>[Qn,"full",...j()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Cn],breakpoint:[Cn],color:[Iy],container:[Cn],"drop-shadow":[Cn],ease:["in","out","in-out"],font:[RC],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Cn],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Cn],shadow:[Cn],spacing:["px",Ee],text:[Cn],"text-shadow":[Cn],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Qn,te,re,E]}],container:["container"],"container-type":[{"@container":["","normal","size",re,te]}],"container-named":[jC],columns:[{columns:[Ee,"auto",te,re,f]}],"break-after":[{"break-after":I()}],"break-before":[{"break-before":I()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:U()}],overflow:[{overflow:Y()}],"overflow-x":[{"overflow-x":Y()}],"overflow-y":[{"overflow-y":Y()}],overscroll:[{overscroll:N()}],"overscroll-x":[{"overscroll-x":N()}],"overscroll-y":[{"overscroll-y":N()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:W()}],"inset-x":[{"inset-x":W()}],"inset-y":[{"inset-y":W()}],start:[{"inset-s":W(),start:W()}],end:[{"inset-e":W(),end:W()}],"inset-bs":[{"inset-bs":W()}],"inset-be":[{"inset-be":W()}],top:[{top:W()}],right:[{right:W()}],bottom:[{bottom:W()}],left:[{left:W()}],visibility:["visible","invisible","collapse"],z:[{z:[an,"auto",re,te]}],basis:[{basis:[Qn,"full","auto",f,...j()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Ee,Qn,"auto","initial","none",te]}],grow:[{grow:["",Ee,re,te]}],shrink:[{shrink:["",Ee,re,te]}],order:[{order:[an,"first","last","none",re,te]}],"grid-cols":[{"grid-cols":ee()}],"col-start-end":[{col:de()}],"col-start":[{"col-start":Q()}],"col-end":[{"col-end":Q()}],"grid-rows":[{"grid-rows":ee()}],"row-start-end":[{row:de()}],"row-start":[{"row-start":Q()}],"row-end":[{"row-end":Q()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":oe()}],"auto-rows":[{"auto-rows":oe()}],gap:[{gap:j()}],"gap-x":[{"gap-x":j()}],"gap-y":[{"gap-y":j()}],"justify-content":[{justify:[...fe(),"normal"]}],"justify-items":[{"justify-items":[...pe(),"normal"]}],"justify-self":[{"justify-self":["auto",...pe()]}],"align-content":[{content:["normal",...fe()]}],"align-items":[{items:[...pe(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...pe(),{baseline:["","last"]}]}],"place-content":[{"place-content":fe()}],"place-items":[{"place-items":[...pe(),"baseline"]}],"place-self":[{"place-self":["auto",...pe()]}],p:[{p:j()}],px:[{px:j()}],py:[{py:j()}],ps:[{ps:j()}],pe:[{pe:j()}],pbs:[{pbs:j()}],pbe:[{pbe:j()}],pt:[{pt:j()}],pr:[{pr:j()}],pb:[{pb:j()}],pl:[{pl:j()}],m:[{m:Te()}],mx:[{mx:Te()}],my:[{my:Te()}],ms:[{ms:Te()}],me:[{me:Te()}],mbs:[{mbs:Te()}],mbe:[{mbe:Te()}],mt:[{mt:Te()}],mr:[{mr:Te()}],mb:[{mb:Te()}],ml:[{ml:Te()}],"space-x":[{"space-x":j()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":j()}],"space-y-reverse":["space-y-reverse"],size:[{size:q()}],"inline-size":[{inline:["auto",...$()]}],"min-inline-size":[{"min-inline":["auto",...$()]}],"max-inline-size":[{"max-inline":["none",...$()]}],"block-size":[{block:["auto",...Z()]}],"min-block-size":[{"min-block":["auto",...Z()]}],"max-block-size":[{"max-block":["none",...Z()]}],w:[{w:[f,"screen",...q()]}],"min-w":[{"min-w":[f,"screen","none",...q()]}],"max-w":[{"max-w":[f,"screen","none","prose",{screen:[u]},...q()]}],h:[{h:["screen","lh",...q()]}],"min-h":[{"min-h":["screen","lh","none",...q()]}],"max-h":[{"max-h":["screen","lh","none",...q()]}],"font-size":[{text:["base",i,ls,Er]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[o,OC,_C]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Pu,te]}],"font-family":[{font:[DC,IC,r]}],"font-features":[{"font-features":[te]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[l,re,te]}],"line-clamp":[{"line-clamp":[Ee,"none",re,ym]}],leading:[{leading:["none",c,...j()]}],"list-image":[{"list-image":["none",re,te]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",re,te]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:O()}],"text-color":[{text:O()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...we(),"wavy"]}],"text-decoration-thickness":[{decoration:[Ee,"from-font","auto",re,Er]}],"text-decoration-color":[{decoration:O()}],"underline-offset":[{"underline-offset":[Ee,"auto",re,te]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:j()}],"tab-size":[{tab:[an,re,te]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",re,te]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",re,te]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:A()}],"bg-repeat":[{bg:B()}],"bg-size":[{bg:xe()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},an,re,te],radial:["",re,te],conic:["",an,re,te]},VC,zC]}],"bg-color":[{bg:O()}],"gradient-from-pos":[{from:he()}],"gradient-via-pos":[{via:he()}],"gradient-to-pos":[{to:he()}],"gradient-from":[{from:O()}],"gradient-via":[{via:O()}],"gradient-to":[{to:O()}],rounded:[{rounded:ae()}],"rounded-s":[{"rounded-s":ae()}],"rounded-e":[{"rounded-e":ae()}],"rounded-t":[{"rounded-t":ae()}],"rounded-r":[{"rounded-r":ae()}],"rounded-b":[{"rounded-b":ae()}],"rounded-l":[{"rounded-l":ae()}],"rounded-ss":[{"rounded-ss":ae()}],"rounded-se":[{"rounded-se":ae()}],"rounded-ee":[{"rounded-ee":ae()}],"rounded-es":[{"rounded-es":ae()}],"rounded-tl":[{"rounded-tl":ae()}],"rounded-tr":[{"rounded-tr":ae()}],"rounded-br":[{"rounded-br":ae()}],"rounded-bl":[{"rounded-bl":ae()}],"border-w":[{border:le()}],"border-w-x":[{"border-x":le()}],"border-w-y":[{"border-y":le()}],"border-w-s":[{"border-s":le()}],"border-w-e":[{"border-e":le()}],"border-w-bs":[{"border-bs":le()}],"border-w-be":[{"border-be":le()}],"border-w-t":[{"border-t":le()}],"border-w-r":[{"border-r":le()}],"border-w-b":[{"border-b":le()}],"border-w-l":[{"border-l":le()}],"divide-x":[{"divide-x":le()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":le()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...we(),"hidden","none"]}],"divide-style":[{divide:[...we(),"hidden","none"]}],"border-color":[{border:O()}],"border-color-x":[{"border-x":O()}],"border-color-y":[{"border-y":O()}],"border-color-s":[{"border-s":O()}],"border-color-e":[{"border-e":O()}],"border-color-bs":[{"border-bs":O()}],"border-color-be":[{"border-be":O()}],"border-color-t":[{"border-t":O()}],"border-color-r":[{"border-r":O()}],"border-color-b":[{"border-b":O()}],"border-color-l":[{"border-l":O()}],"divide-color":[{divide:O()}],"outline-style":[{outline:[...we(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Ee,re,te]}],"outline-w":[{outline:["",Ee,ls,Er]}],"outline-color":[{outline:O()}],shadow:[{shadow:["","inner","none",g,Uo,Wo]}],"shadow-color":[{shadow:O()}],"inset-shadow":[{"inset-shadow":["none",y,Uo,Wo]}],"inset-shadow-color":[{"inset-shadow":O()}],"ring-w":[{ring:le()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:O()}],"ring-offset-w":[{"ring-offset":[Ee,Er]}],"ring-offset-color":[{"ring-offset":O()}],"inset-ring-w":[{"inset-ring":le()}],"inset-ring-color":[{"inset-ring":O()}],"text-shadow":[{"text-shadow":["none",x,Uo,Wo]}],"text-shadow-color":[{"text-shadow":O()}],opacity:[{opacity:[Ee,re,te]}],"mix-blend":[{"mix-blend":[...ke(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ke()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[Ee]}],"mask-image-linear-from-pos":[{"mask-linear-from":ye()}],"mask-image-linear-to-pos":[{"mask-linear-to":ye()}],"mask-image-linear-from-color":[{"mask-linear-from":O()}],"mask-image-linear-to-color":[{"mask-linear-to":O()}],"mask-image-t-from-pos":[{"mask-t-from":ye()}],"mask-image-t-to-pos":[{"mask-t-to":ye()}],"mask-image-t-from-color":[{"mask-t-from":O()}],"mask-image-t-to-color":[{"mask-t-to":O()}],"mask-image-r-from-pos":[{"mask-r-from":ye()}],"mask-image-r-to-pos":[{"mask-r-to":ye()}],"mask-image-r-from-color":[{"mask-r-from":O()}],"mask-image-r-to-color":[{"mask-r-to":O()}],"mask-image-b-from-pos":[{"mask-b-from":ye()}],"mask-image-b-to-pos":[{"mask-b-to":ye()}],"mask-image-b-from-color":[{"mask-b-from":O()}],"mask-image-b-to-color":[{"mask-b-to":O()}],"mask-image-l-from-pos":[{"mask-l-from":ye()}],"mask-image-l-to-pos":[{"mask-l-to":ye()}],"mask-image-l-from-color":[{"mask-l-from":O()}],"mask-image-l-to-color":[{"mask-l-to":O()}],"mask-image-x-from-pos":[{"mask-x-from":ye()}],"mask-image-x-to-pos":[{"mask-x-to":ye()}],"mask-image-x-from-color":[{"mask-x-from":O()}],"mask-image-x-to-color":[{"mask-x-to":O()}],"mask-image-y-from-pos":[{"mask-y-from":ye()}],"mask-image-y-to-pos":[{"mask-y-to":ye()}],"mask-image-y-from-color":[{"mask-y-from":O()}],"mask-image-y-to-color":[{"mask-y-to":O()}],"mask-image-radial":[{"mask-radial":[re,te]}],"mask-image-radial-from-pos":[{"mask-radial-from":ye()}],"mask-image-radial-to-pos":[{"mask-radial-to":ye()}],"mask-image-radial-from-color":[{"mask-radial-from":O()}],"mask-image-radial-to-color":[{"mask-radial-to":O()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":D()}],"mask-image-conic-pos":[{"mask-conic":[Ee]}],"mask-image-conic-from-pos":[{"mask-conic-from":ye()}],"mask-image-conic-to-pos":[{"mask-conic-to":ye()}],"mask-image-conic-from-color":[{"mask-conic-from":O()}],"mask-image-conic-to-color":[{"mask-conic-to":O()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:A()}],"mask-repeat":[{mask:B()}],"mask-size":[{mask:xe()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",re,te]}],filter:[{filter:["","none",re,te]}],blur:[{blur:Ve()}],brightness:[{brightness:[Ee,re,te]}],contrast:[{contrast:[Ee,re,te]}],"drop-shadow":[{"drop-shadow":["","none",w,Uo,Wo]}],"drop-shadow-color":[{"drop-shadow":O()}],grayscale:[{grayscale:["",Ee,re,te]}],"hue-rotate":[{"hue-rotate":[Ee,re,te]}],invert:[{invert:["",Ee,re,te]}],saturate:[{saturate:[Ee,re,te]}],sepia:[{sepia:["",Ee,re,te]}],"backdrop-filter":[{"backdrop-filter":["","none",re,te]}],"backdrop-blur":[{"backdrop-blur":Ve()}],"backdrop-brightness":[{"backdrop-brightness":[Ee,re,te]}],"backdrop-contrast":[{"backdrop-contrast":[Ee,re,te]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Ee,re,te]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Ee,re,te]}],"backdrop-invert":[{"backdrop-invert":["",Ee,re,te]}],"backdrop-opacity":[{"backdrop-opacity":[Ee,re,te]}],"backdrop-saturate":[{"backdrop-saturate":[Ee,re,te]}],"backdrop-sepia":[{"backdrop-sepia":["",Ee,re,te]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":j()}],"border-spacing-x":[{"border-spacing-x":j()}],"border-spacing-y":[{"border-spacing-y":j()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",re,te]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Ee,"initial",re,te]}],ease:[{ease:["linear","initial",M,re,te]}],delay:[{delay:[Ee,re,te]}],animate:[{animate:["none",L,re,te]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[C,re,te]}],"perspective-origin":[{"perspective-origin":U()}],rotate:[{rotate:ct()}],"rotate-x":[{"rotate-x":ct()}],"rotate-y":[{"rotate-y":ct()}],"rotate-z":[{"rotate-z":ct()}],scale:[{scale:Be()}],"scale-x":[{"scale-x":Be()}],"scale-y":[{"scale-y":Be()}],"scale-z":[{"scale-z":Be()}],"scale-3d":["scale-3d"],skew:[{skew:dt()}],"skew-x":[{"skew-x":dt()}],"skew-y":[{"skew-y":dt()}],transform:[{transform:[re,te,"","none","gpu","cpu"]}],"transform-origin":[{origin:U()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:ft()}],"translate-x":[{"translate-x":ft()}],"translate-y":[{"translate-y":ft()}],"translate-z":[{"translate-z":ft()}],"translate-none":["translate-none"],zoom:[{zoom:[an,re,te]}],accent:[{accent:O()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:O()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",re,te]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":O()}],"scrollbar-track-color":[{"scrollbar-track":O()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":j()}],"scroll-mx":[{"scroll-mx":j()}],"scroll-my":[{"scroll-my":j()}],"scroll-ms":[{"scroll-ms":j()}],"scroll-me":[{"scroll-me":j()}],"scroll-mbs":[{"scroll-mbs":j()}],"scroll-mbe":[{"scroll-mbe":j()}],"scroll-mt":[{"scroll-mt":j()}],"scroll-mr":[{"scroll-mr":j()}],"scroll-mb":[{"scroll-mb":j()}],"scroll-ml":[{"scroll-ml":j()}],"scroll-p":[{"scroll-p":j()}],"scroll-px":[{"scroll-px":j()}],"scroll-py":[{"scroll-py":j()}],"scroll-ps":[{"scroll-ps":j()}],"scroll-pe":[{"scroll-pe":j()}],"scroll-pbs":[{"scroll-pbs":j()}],"scroll-pbe":[{"scroll-pbe":j()}],"scroll-pt":[{"scroll-pt":j()}],"scroll-pr":[{"scroll-pr":j()}],"scroll-pb":[{"scroll-pb":j()}],"scroll-pl":[{"scroll-pl":j()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",re,te]}],fill:[{fill:["none",...O()]}],"stroke-w":[{stroke:[Ee,ls,Er,ym]}],stroke:[{stroke:["none",...O()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["start","end","right","left"],"inset-y":["inset-bs","inset-be","top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["ps","pe","pr","pl"],py:["pbs","pbe","pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["ms","me","mr","ml"],my:["mbs","mbe","mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-s","border-w-e","border-w-r","border-w-l"],"border-w-y":["border-w-bs","border-w-be","border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-s","border-color-e","border-color-r","border-color-l"],"border-color-y":["border-color-bs","border-color-be","border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-ms","scroll-me","scroll-mr","scroll-ml"],"scroll-my":["scroll-mbs","scroll-mbe","scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-ps","scroll-pe","scroll-pr","scroll-pl"],"scroll-py":["scroll-pbs","scroll-pbe","scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},$C=xC(BC);function Ce(...t){return $C(ZT(t))}const $y={primary:"bg-primary text-primary-foreground hover:bg-primary/90",secondary:"border border-border bg-card text-foreground hover:border-border",ghost:"text-muted-foreground hover:text-foreground hover:bg-primary/5",outline:"border border-border bg-transparent text-foreground hover:bg-primary/5"},Wy={sm:"h-8 px-3 text-xs gap-1.5 rounded-full",md:"h-10 px-5 text-sm gap-2 rounded-full",lg:"h-12 px-6 text-base gap-2 rounded-full",icon:"h-8 w-8 rounded-lg"},En=P.forwardRef(function({variant:r="primary",size:i="md",pressScale:o=.93,ripple:l=!1,className:c,children:u,onPointerDown:f,...p},m){const g=nr(),y=by(),[x,w]=P.useState([]),k=P.useRef(0),C=P.useCallback(E=>{if(l&&!g){const M=E.currentTarget.getBoundingClientRect(),L=Math.max(M.width,M.height)*2,I=k.current++;w(D=>[...D,{id:I,x:E.clientX-M.left,y:E.clientY-M.top,size:L}])}f==null||f(E)},[l,g,f]);return S.jsxs(Ge.button,{ref:m,type:"button",whileTap:g?void 0:{scale:o},whileHover:g||!y?void 0:{scale:1.02},transition:wl,onPointerDown:C,className:Ce("inline-flex items-center justify-center font-medium select-none","transition-colors","disabled:pointer-events-none disabled:opacity-50",l&&"relative overflow-hidden",$y[r],Wy[i],c),...p,children:[l&&!g?S.jsx("span",{className:"pointer-events-none absolute inset-0 overflow-hidden rounded-[inherit]",children:S.jsx(gi,{children:x.map(E=>S.jsx(Ge.span,{className:"absolute rounded-full bg-current",style:{left:E.x,top:E.y,width:E.size,height:E.size,x:"-50%",y:"-50%"},initial:{scale:.05,opacity:.3},animate:{scale:1,opacity:0},exit:{opacity:0},transition:{duration:1.6,ease:Jt},onAnimationComplete:()=>w(M=>M.filter(L=>L.id!==E.id))},E.id))})}):null,u]})});P.forwardRef(function({variant:r="primary",size:i="md",pressScale:o=.93,className:l,children:c,...u},f){const p=nr(),m=by();return S.jsx(Ge.a,{ref:f,whileTap:p?void 0:{scale:o},whileHover:p||!m?void 0:{scale:1.02},transition:wl,className:Ce("inline-flex items-center justify-center font-medium select-none","transition-colors",$y[r],Wy[i],l),...u,children:c})});const Ho=P.forwardRef(function({label:r,value:i,defaultValue:o,onChange:l,onFocus:c,onBlur:u,error:f,reserveErrorLine:p=!1,success:m,leftIcon:g,rightIcon:y,className:x,classNames:w,disabled:k,id:C,type:E,...M},L){const I=P.useId(),D=C??I,U=nr(),Y=i!==void 0,[N,j]=P.useState(o??""),W=Y?i??"":N,[ee,de]=P.useState(!1),Q=P.useRef(null),oe=!!f,fe=typeof f=="string"?f:null,pe=m?null:y;P.useEffect(()=>{!Q.current||U||!oe||YT(Q.current,{x:[0,-6,6,-4,4,-2,0]},{duration:.45})},[oe,U]);const Te=q=>{Y||j(q),l==null||l(q)};return S.jsxs("div",{className:Ce("flex flex-col gap-1.5",x,w==null?void 0:w.root),children:[r?S.jsx("label",{htmlFor:D,className:Ce("px-1 text-sm font-medium text-foreground",w==null?void 0:w.label),children:r}):null,S.jsxs("div",{ref:Q,"data-state":oe?"error":m?"success":ee?"focused":"idle",className:Ce("relative h-11 overflow-hidden rounded-full border transition-colors duration-200","border-border",ee&&!oe&&"border-foreground/40 ring-2 ring-ring/40",oe&&"border-destructive ring-2 ring-destructive/25",k&&"opacity-60",w==null?void 0:w.field),children:[g?S.jsx("span",{className:Ce("pointer-events-none absolute left-3 top-1/2 flex -translate-y-1/2 items-center text-muted-foreground [&_svg]:h-4 [&_svg]:w-4",w==null?void 0:w.leftIcon),children:g}):null,S.jsx("input",{ref:L,id:D,type:E,value:W,disabled:k,"aria-invalid":oe||void 0,"aria-describedby":fe?`${D}-error`:void 0,...M,onChange:q=>Te(q.target.value),onFocus:q=>{de(!0),c==null||c(q)},onBlur:q=>{de(!1),u==null||u(q)},className:Ce("peer h-full w-full bg-transparent text-base leading-6 text-foreground caret-foreground outline-none","placeholder:text-muted-foreground/60",g?"pl-10":"pl-3.5",pe||m?"pr-10":"pr-3.5",k&&"cursor-not-allowed",w==null?void 0:w.input)}),m?S.jsx(Ge.svg,{viewBox:"0 0 24 24",fill:"none",className:Ce("absolute right-3.5 top-1/2 h-5 w-5 -translate-y-1/2 text-(--color-success)",w==null?void 0:w.successIcon),children:S.jsx(Ge.path,{d:"M5 12.5l4.5 4.5L19 7.5",stroke:"currentColor",strokeWidth:2.5,strokeLinecap:"round",strokeLinejoin:"round",initial:U?{pathLength:1}:{pathLength:0},animate:{pathLength:1},transition:{duration:.35,ease:"easeOut"}})}):pe?S.jsx("span",{className:Ce("absolute right-0 top-0 flex h-full items-center text-muted-foreground [&_button]:grid [&_button]:size-11 [&_button]:place-items-center [&_svg]:h-4 [&_svg]:w-4",w==null?void 0:w.rightIcon),children:pe}):null]}),S.jsx("div",{className:p?"min-h-4":"contents",children:S.jsx(gi,{initial:!1,children:fe?S.jsx(Ge.p,{id:`${D}-error`,role:"alert",initial:U?{opacity:0}:{opacity:0,y:-4,filter:"blur(4px)"},animate:{opacity:1,y:0,filter:"blur(0px)"},exit:U?{opacity:0}:{opacity:0,y:-4,filter:"blur(4px)"},transition:{duration:.2},className:Ce("px-1 text-xs text-destructive",w==null?void 0:w.errorMessage),children:fe}):null})})]})});/**
55
+ * @license lucide-react v1.47.0 - ISC
56
+ *
57
+ * This source code is licensed under the ISC license.
58
+ * See the LICENSE file in the root directory of this source tree.
59
+ */const WC=t=>t==null?void 0:t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();/**
60
+ * @license lucide-react v1.47.0 - ISC
61
+ *
62
+ * This source code is licensed under the ISC license.
63
+ * See the LICENSE file in the root directory of this source tree.
64
+ */function UC(t,r,i=[]){if(r==null)throw new Error("[lucide]: iconNode is required when icon name is used");return{name:WC(t),size:24,node:r,...i.length>0?{aliases:i}:{}}}/**
65
+ * @license lucide-react v1.47.0 - ISC
66
+ *
67
+ * This source code is licensed under the ISC license.
68
+ * See the LICENSE file in the root directory of this source tree.
69
+ */const HC=t=>{let r="",i=!1;for(const o of t){if(o==="-"||o==="_"||o<=" "){i=r.length>0;continue}r.length===0?r+=o.toLowerCase():r+=i?o.toUpperCase():o,i=!1}return r};/**
70
+ * @license lucide-react v1.47.0 - ISC
71
+ *
72
+ * This source code is licensed under the ISC license.
73
+ * See the LICENSE file in the root directory of this source tree.
74
+ */const KC=t=>{const r=HC(t);return r.charAt(0).toUpperCase()+r.slice(1)};/**
75
+ * @license lucide-react v1.47.0 - ISC
76
+ *
77
+ * This source code is licensed under the ISC license.
78
+ * See the LICENSE file in the root directory of this source tree.
79
+ */const uc=(...t)=>t.filter((r,i,o)=>!!r&&r.trim()!==""&&o.indexOf(r)===i).join(" ").trim();/**
80
+ * @license lucide-react v1.47.0 - ISC
81
+ *
82
+ * This source code is licensed under the ISC license.
83
+ * See the LICENSE file in the root directory of this source tree.
84
+ */const br={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};/**
85
+ * @license lucide-react v1.47.0 - ISC
86
+ *
87
+ * This source code is licensed under the ISC license.
88
+ * See the LICENSE file in the root directory of this source tree.
89
+ */function Au(t){return t!=null}function GC(t,r={}){var x,w;const i=r.attributeNames??{},o=k=>i[k]??k,l=t.size??t.width??br.width,c=t.size??t.height??br.height,u=((x=t.aliases)==null?void 0:x.filter(k=>typeof k=="string"&&k.trim()!=="").map(k=>`lucide-${k}`))??[],f=[...t.name?[`lucide-${t.name}`]:[],...u],p=((w=r.className)==null?void 0:w.split(" ").filter(Boolean))??[],m=r.includeDefaultClasses===!1?uc(...p):uc("lucide",...f,...p),g=r.absoluteStrokeWidth?Number(r.strokeWidth??br["stroke-width"])*Number(t.size??t.width??br.width)/Number(r.size??r.width??br.width):r.strokeWidth??br["stroke-width"];return["svg",{...Object.entries(br).reduce((k,[C,E])=>(k[o(C)]=E,k),{}),..."color"in r&&r.color&&{[o("stroke")]:r.color},..."size"in r&&Au(r.size)&&{[o("width")]:r.size,[o("height")]:r.size},..."width"in r&&Au(r.width)&&{[o("width")]:r.width},..."height"in r&&Au(r.height)&&{[o("height")]:r.height},[o("stroke-width")]:g,...m&&{[o("class")]:m},[o("viewBox")]:`0 0 ${l} ${c}`,...r.hasA11yProp===!1?{[o("aria-hidden")]:"true"}:{},..."attributes"in r&&r.attributes},t.node.map(k=>{const[C,E,M]=k,L=r.nonScalingStroke?{[o("vector-effect")]:"non-scaling-stroke",...E}:E;return M?[C,L,M]:[C,L]})]}/**
90
+ * @license lucide-react v1.47.0 - ISC
91
+ *
92
+ * This source code is licensed under the ISC license.
93
+ * See the LICENSE file in the root directory of this source tree.
94
+ */function XC(t,r={}){return GC(t,{...r,attributeNames:{...r.attributeNames,class:"className","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-linejoin":"strokeLinejoin","vector-effect":"vectorEffect"}})}/**
95
+ * @license lucide-react v1.47.0 - ISC
96
+ *
97
+ * This source code is licensed under the ISC license.
98
+ * See the LICENSE file in the root directory of this source tree.
99
+ */const YC=t=>{for(const r in t)if(r.startsWith("aria-")||r==="role"||r==="title")return!0;return!1},QC=P.createContext({}),ZC=()=>P.useContext(QC),qC=P.forwardRef(({color:t,size:r,width:i,height:o,strokeWidth:l,absoluteStrokeWidth:c,nonScalingStroke:u,className:f="",children:p,iconNode:m=[],icon:g={node:m,aliases:[],size:24},...y},x)=>{const{size:w=24,strokeWidth:k=2,absoluteStrokeWidth:C=!1,nonScalingStroke:E=!1,color:M="currentColor",className:L=""}=ZC()??{},I=!!p||YC(y),[D,U,Y=[]]=XC(g,{color:t??M,width:i??r??w,height:o??r??w,strokeWidth:l??k,absoluteStrokeWidth:c??C,nonScalingStroke:u??E,className:uc(L,f),hasA11yProp:I,attributes:y});return P.createElement(D,{ref:x,...U},[...Y.map(([N,j])=>P.createElement(N,j)),...Array.isArray(p)?p:[p]])});/**
100
+ * @license lucide-react v1.47.0 - ISC
101
+ *
102
+ * This source code is licensed under the ISC license.
103
+ * See the LICENSE file in the root directory of this source tree.
104
+ */function vt(t,r=[],i=[]){const o=typeof t=="string"?UC(t,r,i):t,l=P.forwardRef(({className:c,...u},f)=>P.createElement(qC,{ref:f,icon:o,className:c,...u}));return o.name&&(l.displayName=KC(o.name)),l}/**
105
+ * @license lucide-react v1.47.0 - ISC
106
+ *
107
+ * This source code is licensed under the ISC license.
108
+ * See the LICENSE file in the root directory of this source tree.
109
+ */const Uy={name:"arrow-down-to-line",size:24,node:[["path",{d:"M12 17V3",key:"1cwfxf"}],["path",{d:"m6 11 6 6 6-6",key:"12ii2o"}],["path",{d:"M19 21H5",key:"150jfl"}]]};Uy.node;const JC=vt(Uy);/**
110
+ * @license lucide-react v1.47.0 - ISC
111
+ *
112
+ * This source code is licensed under the ISC license.
113
+ * See the LICENSE file in the root directory of this source tree.
114
+ */const Hy={name:"arrow-left-to-line",size:24,node:[["path",{d:"M3 19V5",key:"rwsyhb"}],["path",{d:"m13 6-6 6 6 6",key:"1yhaz7"}],["path",{d:"M7 12h14",key:"uoisry"}]]};Hy.node;const eE=vt(Hy);/**
115
+ * @license lucide-react v1.47.0 - ISC
116
+ *
117
+ * This source code is licensed under the ISC license.
118
+ * See the LICENSE file in the root directory of this source tree.
119
+ */const Ky={name:"arrow-right-to-line",size:24,node:[["path",{d:"M17 12H3",key:"8awo09"}],["path",{d:"m11 18 6-6-6-6",key:"8c2y43"}],["path",{d:"M21 5v14",key:"nzette"}]]};Ky.node;const tE=vt(Ky);/**
120
+ * @license lucide-react v1.47.0 - ISC
121
+ *
122
+ * This source code is licensed under the ISC license.
123
+ * See the LICENSE file in the root directory of this source tree.
124
+ */const Gy={name:"arrow-up-to-line",size:24,node:[["path",{d:"M5 3h14",key:"7usisc"}],["path",{d:"m18 13-6-6-6 6",key:"1kf1n9"}],["path",{d:"M12 7v14",key:"1akyts"}]]};Gy.node;const nE=vt(Gy);/**
125
+ * @license lucide-react v1.47.0 - ISC
126
+ *
127
+ * This source code is licensed under the ISC license.
128
+ * See the LICENSE file in the root directory of this source tree.
129
+ */const Xy={name:"bell",size:24,node:[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]]};Xy.node;const rE=vt(Xy);/**
130
+ * @license lucide-react v1.47.0 - ISC
131
+ *
132
+ * This source code is licensed under the ISC license.
133
+ * See the LICENSE file in the root directory of this source tree.
134
+ */const Yy={name:"check",size:24,node:[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]};Yy.node;const Qy=vt(Yy);/**
135
+ * @license lucide-react v1.47.0 - ISC
136
+ *
137
+ * This source code is licensed under the ISC license.
138
+ * See the LICENSE file in the root directory of this source tree.
139
+ */const Zy={name:"chevron-down",size:24,node:[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]};Zy.node;const iE=vt(Zy);/**
140
+ * @license lucide-react v1.47.0 - ISC
141
+ *
142
+ * This source code is licensed under the ISC license.
143
+ * See the LICENSE file in the root directory of this source tree.
144
+ */const qy={name:"chevron-up",size:24,node:[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]};qy.node;const sE=vt(qy);/**
145
+ * @license lucide-react v1.47.0 - ISC
146
+ *
147
+ * This source code is licensed under the ISC license.
148
+ * See the LICENSE file in the root directory of this source tree.
149
+ */const Jy={name:"circle-alert",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],aliases:["alert-circle"]};Jy.node;const oE=vt(Jy);/**
150
+ * @license lucide-react v1.47.0 - ISC
151
+ *
152
+ * This source code is licensed under the ISC license.
153
+ * See the LICENSE file in the root directory of this source tree.
154
+ */const ev={name:"ellipsis-vertical",size:24,node:[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"12",cy:"5",r:"1",key:"gxeob9"}],["circle",{cx:"12",cy:"19",r:"1",key:"lyex9k"}]],aliases:["more-vertical"]};ev.node;const lE=vt(ev);/**
155
+ * @license lucide-react v1.47.0 - ISC
156
+ *
157
+ * This source code is licensed under the ISC license.
158
+ * See the LICENSE file in the root directory of this source tree.
159
+ */const tv={name:"ellipsis",size:24,node:[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]],aliases:["more-horizontal"]};tv.node;const aE=vt(tv);/**
160
+ * @license lucide-react v1.47.0 - ISC
161
+ *
162
+ * This source code is licensed under the ISC license.
163
+ * See the LICENSE file in the root directory of this source tree.
164
+ */const nv={name:"grip-vertical",size:24,node:[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]};nv.node;const uE=vt(nv);/**
165
+ * @license lucide-react v1.47.0 - ISC
166
+ *
167
+ * This source code is licensed under the ISC license.
168
+ * See the LICENSE file in the root directory of this source tree.
169
+ */const rv={name:"info",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]};rv.node;const cE=vt(rv);/**
170
+ * @license lucide-react v1.47.0 - ISC
171
+ *
172
+ * This source code is licensed under the ISC license.
173
+ * See the LICENSE file in the root directory of this source tree.
174
+ */const iv={name:"loader-circle",size:24,node:[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],aliases:["loader-2"]};iv.node;const dE=vt(iv);/**
175
+ * @license lucide-react v1.47.0 - ISC
176
+ *
177
+ * This source code is licensed under the ISC license.
178
+ * See the LICENSE file in the root directory of this source tree.
179
+ */const sv={name:"trash",size:24,node:[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],aliases:["trash-2"]};sv.node;const ov=vt(sv);/**
180
+ * @license lucide-react v1.47.0 - ISC
181
+ *
182
+ * This source code is licensed under the ISC license.
183
+ * See the LICENSE file in the root directory of this source tree.
184
+ */const lv={name:"x",size:24,node:[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]};lv.node;const fE=vt(lv),dn={duration:0},hE={type:"spring",duration:.4,bounce:.3},pE={hidden:{},show:{transition:{staggerChildren:.035,delayChildren:.05}}},mE={hidden:{opacity:0,y:-6,filter:"blur(3px)"},show:{opacity:1,y:0,filter:"blur(0px)"}},av=P.createContext(null);function Sl(t){const r=P.useContext(av);if(!r)throw new Error(`${t} must be used within <Select>`);return r}function gE({value:t,defaultValue:r,onValueChange:i,open:o,defaultOpen:l=!1,onOpenChange:c,disabled:u=!1,className:f,children:p}){const m=nr()??!1,g=P.useId(),y=P.useRef(null),[x,w]=P.useState(l),[k,C]=P.useState(r),[E,M]=P.useState(new Map),[L,I]=P.useState("bottom"),D=t!==void 0,U=D?t:k,Y=o!==void 0,N=Y?o:x,j=P.useCallback(oe=>{Y||w(oe),c==null||c(oe)},[c,Y]),W=P.useCallback(oe=>{D||C(oe),i==null||i(oe),j(!1)},[D,i,j]),ee=P.useCallback((oe,fe)=>{M(pe=>pe.get(oe)===fe?pe:new Map(pe).set(oe,fe))},[]),de=P.useCallback(oe=>{M(fe=>{if(!fe.has(oe))return fe;const pe=new Map(fe);return pe.delete(oe),pe})},[]);P.useEffect(()=>{if(!N)return;const oe=pe=>pe.key==="Escape"&&j(!1),fe=pe=>{y.current&&!y.current.contains(pe.target)&&j(!1)};return window.addEventListener("keydown",oe),window.addEventListener("pointerdown",fe),()=>{window.removeEventListener("keydown",oe),window.removeEventListener("pointerdown",fe)}},[N,j]);const Q=P.useMemo(()=>({value:U,open:N,setOpen:j,select:W,register:ee,unregister:de,labelFor:oe=>oe===void 0?void 0:E.get(oe),reduce:m,triggerId:`${g}-trigger`,listId:`${g}-list`,disabled:u,placement:L,setPlacement:I}),[U,N,j,W,ee,de,E,m,g,u,L]);return S.jsx(av.Provider,{value:Q,children:S.jsx("div",{ref:y,className:Ce("relative",f),children:p})})}function yE({className:t,children:r}){const i=Sl("SelectTrigger"),o=i.placement==="top",l=i.open?[0,0,12]:[12,0,12],c=i.reduce?{duration:0}:i.open?{duration:.6,times:[0,.4,1],ease:Jt}:{duration:.42,times:[0,.5,1],ease:Jt};return S.jsxs(Ge.button,{type:"button",id:i.triggerId,disabled:i.disabled,"aria-haspopup":"listbox","aria-expanded":i.open,"aria-controls":i.listId,onClick:()=>i.setOpen(!i.open),initial:!1,animate:{borderTopLeftRadius:o?l:12,borderTopRightRadius:o?l:12,borderBottomLeftRadius:o?12:l,borderBottomRightRadius:o?12:l},transition:{borderTopLeftRadius:o?c:dn,borderTopRightRadius:o?c:dn,borderBottomLeftRadius:o?dn:c,borderBottomRightRadius:o?dn:c},className:Ce("relative z-10 flex w-full items-center justify-between gap-2 rounded-xl border border-border bg-background px-3 py-2 text-sm text-foreground outline-none transition-colors","hover:border-(--color-border-strong) focus-visible:ring-2 focus-visible:ring-foreground/20","disabled:pointer-events-none disabled:opacity-50",t),children:[r,S.jsx(Ge.span,{"aria-hidden":!0,animate:{rotate:i.open?180:0},transition:i.reduce?{duration:0}:hE,className:"text-muted-foreground",children:S.jsx(iE,{className:"h-4 w-4"})})]})}function vE({placeholder:t,className:r}){const i=Sl("SelectValue"),o=i.labelFor(i.value);return S.jsx("span",{className:Ce(o?"text-foreground":"text-muted-foreground",r),children:o??t??"Select"})}function xE({className:t,children:r}){const i=Sl("SelectContent"),o=P.useRef(null),[l,c]=P.useState(0),u=i.open,{setPlacement:f}=i;P.useLayoutEffect(()=>{const w=o.current;if(!w)return;const k=()=>c(w.offsetHeight);k();const C=new ResizeObserver(k);return C.observe(w),()=>C.disconnect()}),P.useLayoutEffect(()=>{if(!u)return;const w=document.getElementById(i.triggerId),k=o.current;if(!w||!k)return;const C=w.getBoundingClientRect(),E=k.offsetHeight,M=window.innerHeight-C.bottom,L=C.top;f(M<E+16&&L>M?"top":"bottom")},[u,i.triggerId,f]);const p=i.placement==="top",m=u?8:0,g=u?12:0,y=u?{type:"spring",duration:.6,bounce:.5,delay:.12}:{type:"spring",duration:.3,bounce:.1},x=u?{duration:.3,ease:Jt,delay:.14}:{duration:.16,ease:Jt};return S.jsx(Ge.div,{id:i.listId,role:"listbox","aria-labelledby":i.triggerId,"aria-hidden":!u,inert:u?void 0:"",initial:!1,animate:i.reduce?{opacity:u?1:0,height:u?l:0}:{opacity:u?1:0,height:u?l:0,marginTop:p?0:m,marginBottom:p?m:0,borderTopLeftRadius:p?12:g,borderTopRightRadius:p?12:g,borderBottomLeftRadius:p?g:12,borderBottomRightRadius:p?g:12},transition:i.reduce?{duration:.12}:{opacity:u?{duration:.18}:{duration:.16,delay:.12},height:u?{type:"spring",duration:.42,bounce:.14}:{duration:.26,ease:Jt,delay:.14},marginTop:p?dn:y,marginBottom:p?y:dn,borderTopLeftRadius:p?dn:x,borderTopRightRadius:p?dn:x,borderBottomLeftRadius:p?x:dn,borderBottomRightRadius:p?x:dn},style:{transformOrigin:p?"bottom":"top",overflow:"hidden",pointerEvents:u?"auto":"none"},className:Ce("absolute left-0 right-0 z-20 rounded-xl border border-border bg-background shadow-lg",p?"bottom-full":"top-full",t),children:S.jsx(Ge.div,{ref:o,variants:i.reduce?void 0:pE,initial:!1,animate:u?"show":"hidden",className:"p-1",children:r})})}function wm({value:t,disabled:r=!1,className:i,children:o}){const l=Sl("SelectItem"),c=l.value===t,u=typeof o=="string"?o:t;return P.useLayoutEffect(()=>(l.register(t,u),()=>l.unregister(t)),[l.register,l.unregister,t,u]),S.jsx(Ge.li,{variants:l.reduce?void 0:mE,children:S.jsxs("button",{type:"button",role:"option","aria-selected":c,disabled:r,onClick:()=>l.select(t),className:Ce("flex w-full items-center justify-between gap-2 rounded-lg px-2.5 py-1.5 text-left text-sm outline-none transition-colors",c?"bg-muted text-foreground":"text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:bg-muted","disabled:pointer-events-none disabled:opacity-50",i),children:[o,c?S.jsx(Qy,{className:"h-3.5 w-3.5 shrink-0"}):null]})})}var Es=zm();function wE(t){return typeof t=="object"?t.key:t}function SE(t,r){const i=t.length;return new Proxy(t,{get(o,l,c){if(typeof l=="string"){const u=l.charCodeAt(0);if(u>=48&&u<=57){const f=+l;if(Number.isInteger(f)&&f>=0&&f<i){let p=o[f];if(typeof p!="object"){const m=r[f*2];p=o[f]={index:f,key:p,start:m,size:r[f*2+1],end:m+r[f*2+1],lane:0}}return p}}if(l==="length")return i}return Reflect.get(o,l,c)}})}function li(t,r,i){let o=i.initialDeps??[],l,c=!0;function u(){const f=t();return(f.length!==o.length||f.some((m,g)=>o[g]!==m))&&(o=f,l=r(...f),i!=null&&i.onChange&&!(c&&i.skipInitialOnChange)&&i.onChange(l),c=!1),l}return u.updateDeps=f=>{o=f},u}function Sm(t,r){if(t===void 0)throw new Error("Unexpected undefined");return t}const km=(t,r)=>Math.abs(t-r)<1.01,kE=(t,r,i)=>{let o;return Object.assign(function(...l){t.clearTimeout(o),o=t.setTimeout(()=>r.apply(this,l),i)},{cancel:()=>{t.clearTimeout(o)}})};let as;const Mu=()=>{if(as!==void 0)return as;if(typeof navigator>"u")return as=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return as=!0;const t=navigator.maxTouchPoints;return as=navigator.platform==="MacIntel"&&t!==void 0&&t>0},Tm=t=>{const{offsetWidth:r,offsetHeight:i}=t;return{width:r,height:i}},TE=t=>t,CE=t=>{const r=Math.max(t.startIndex-t.overscan,0),o=Math.min(t.endIndex+t.overscan,t.count-1)-r+1,l=new Array(o);for(let c=0;c<o;c++)l[c]=r+c;return l},EE=(t,r)=>{const i=t.scrollElement;if(!i)return;const o=t.targetWindow;if(!o)return;const l=u=>{const{width:f,height:p}=u;r({width:Math.round(f),height:Math.round(p)})};if(l(Tm(i)),!o.ResizeObserver)return()=>{};const c=new o.ResizeObserver(u=>{const f=()=>{const p=u[0];if(p!=null&&p.borderBoxSize){const m=p.borderBoxSize[0];if(m){l({width:m.inlineSize,height:m.blockSize});return}}l(Tm(i))};t.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(f):f()});return c.observe(i,{box:"border-box"}),()=>{c.unobserve(i)}},fl={passive:!0},bE=typeof window>"u"?!0:"onscrollend"in window,PE=(t,r,i)=>{const o=t.scrollElement;if(!o)return;const l=t.targetWindow;if(!l)return;const c=t.options.useScrollendEvent&&bE;let u=0;const f=c?null:kE(l,()=>r(i(o),!1),t.options.isScrollingResetDelay),p=y=>()=>{u=i(o),f==null||f(),r(u,y)},m=p(!0),g=p(!1);return o.addEventListener("scroll",m,fl),c&&o.addEventListener("scrollend",g,fl),()=>{o.removeEventListener("scroll",m),c&&o.removeEventListener("scrollend",g),f==null||f.cancel()}},AE=(t,r)=>PE(t,r,i=>{const{horizontal:o,isRtl:l}=t.options;return o?i.scrollLeft*(l&&-1||1):i.scrollTop}),ME=(t,r,i)=>{if(i.options.useCachedMeasurements){const o=i.indexFromElement(t),l=i.options.getItemKey(o);return i.itemSizeCache.get(l)??i.options.estimateSize(o)}if(r!=null&&r.borderBoxSize){const o=r.borderBoxSize[0];if(o)return Math.round(o[i.options.horizontal?"inlineSize":"blockSize"])}if(!r){const o=i.indexFromElement(t),l=i.options.getItemKey(o),c=i.itemSizeCache.get(l);if(c!==void 0)return c}return t[i.options.horizontal?"offsetWidth":"offsetHeight"]},RE=(t,{adjustments:r=0,behavior:i},o)=>{var l,c;(c=(l=o.scrollElement)==null?void 0:l.scrollTo)==null||c.call(l,{[o.options.horizontal?"left":"top"]:t+r,behavior:i})},jE=RE;function LE(t,r,i,o){if(r===0)return!1;const l=o(0),c=new Set;let u=0;for(;u<t;){const p=i(u);if(p===l)break;c.add(p),u++}const f=t-u;if(f===0||f>=r)return!1;for(let p=0;p<f;p++)if(o(p)!==i(u+p))return!1;for(let p=f;p<r;p++)if(c.has(o(p)))return!1;return!0}class _E{constructor(r){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this._singleLaneMeasurements=null,this.itemSizeCache=new Map,this.itemSizeCacheVersion=0,this.laneAssignments=new Map,this.pendingMin=null,this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.pendingScrollAnchor=null,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._intendedScrollOffset=null,this._clampedAdjustment=null,this.elementsCache=new Map,this.now=()=>{var i,o,l;return((l=(o=(i=this.targetWindow)==null?void 0:i.performance)==null?void 0:o.now)==null?void 0:l.call(o))??Date.now()},this.observer=(()=>{let i=null;const o=()=>i||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:i=new this.targetWindow.ResizeObserver(l=>{l.forEach(c=>{const u=()=>{const f=c.target,p=this.indexFromElement(f);if(!f.isConnected){this.observer.unobserve(f);for(const[m,g]of this.elementsCache)if(g===f){this.elementsCache.delete(m);break}return}this.isIndexInRange(p)&&this.shouldMeasureDuringScroll(p)&&this.resizeItem(p,this.options.measureElement(f,c,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(u):u()})}));return{disconnect:()=>{var l;(l=o())==null||l.disconnect(),i=null},observe:l=>{var c;return(c=o())==null?void 0:c.observe(l,{box:"border-box"})},unobserve:l=>{var c;return(c=o())==null?void 0:c.unobserve(l)}}})(),this.range=null,this.setOptions=i=>{var o;const l={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:TE,rangeExtractor:CE,onChange:()=>{},measureElement:ME,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,anchorTo:"start",followOnAppend:!1,scrollEndThreshold:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:"estimate",useCachedMeasurements:!1};for(const y in i){const x=i[y];x!==void 0&&(l[y]=x)}const c=this.options;let u=null,f=null,p=!1;if(c!==void 0&&c.enabled&&l.enabled&&l.anchorTo==="end"&&this.scrollElement!==null){const y=c.count,x=l.count,w=this.getMeasurements(),k=((o=this._singleLaneMeasurements)==null?void 0:o.items)??w,C=D=>wE(k[D]),E=y>0?C(0):null,M=y>0?C(y-1):null;if(x!==y||y>0&&x>0&&(l.getItemKey(0)!==E||l.getItemKey(x-1)!==M)){p=!0;const D=y>0?this.getVirtualItemForOffset(this.getScrollOffset())??w[0]:null;D&&(u=[D.key,this.getScrollOffset()-D.start]);const U=l.followOnAppend===!0?"auto":l.followOnAppend||null;U&&x>0&&this.isAtEnd(c.scrollEndThreshold)&&(y===0||l.getItemKey(x-1)!==M)&&(x>y||LE(y,x,C,l.getItemKey))&&(f=U)}}this.options=l,p&&(this.pendingMin=0,this.itemSizeCacheVersion++);let m=!1,g=0;if(u&&this.scrollOffset!==null){const[y,x]=u,w=this.getMeasurements(),{count:k,getItemKey:C}=this.options;let E=0;for(;E<k&&C(E)!==y;)E++;if(E<k){const M=w[E];if(M){const L=Math.max(0,M.start+x);!f&&L!==this.scrollOffset&&(g=L-this.scrollOffset,this.scrollOffset=L,m=!0)}}}(m||f)&&(this.pendingScrollAnchor=[m?u[0]:null,m?u[1]:0,f,g])},this.notify=i=>{var o,l;(l=(o=this.options).onChange)==null||l.call(o,this,i)},this.maybeNotify=li(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),i=>{this.notify(i)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(i=>i()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this.isScrolling=!1,this.scrollDirection=null,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this._clampedAdjustment=null,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var i,o;const l=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==l){if(this.cleanup(),!l){this.maybeNotify();return}if(this.scrollElement=l,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((i=this.scrollElement)==null?void 0:i.window)??null,this.elementsCache.forEach(u=>{this.observer.observe(u)}),this.unsubs.push(this.options.observeElementRect(this,u=>{this.scrollRect=u,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(u,f)=>{if(f&&this._intendedScrollOffset===null&&u===this.scrollOffset)return;this._intendedScrollOffset!==null&&Math.abs(u-this._intendedScrollOffset)<1.5&&(u=this._intendedScrollOffset),this._intendedScrollOffset=null,this._clampedAdjustment!==null&&Math.abs(u-this._clampedAdjustment.maxAtWrite)>=1.5&&(this._clampedAdjustment=null),this.scrollAdjustments=0;const p=this.getScrollOffset();this.scrollDirection=f?p===u?this.scrollDirection:p<u?"forward":"backward":null,this.scrollOffset=u,this.isScrolling=f,this._flushIosDeferredIfReady(),this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),"addEventListener"in this.scrollElement){const u=this.scrollElement,f=()=>{this._iosTouching=!0,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)},p=()=>{this._iosTouching=!1,!(!Mu()||this.targetWindow==null)&&(this._iosJustTouchEnded=!0,this._iosTouchEndTimerId=this.targetWindow.setTimeout(()=>{this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._flushIosDeferredIfReady()},150))};u.addEventListener("touchstart",f,fl),u.addEventListener("touchend",p,fl),this.unsubs.push(()=>{u.removeEventListener("touchstart",f),u.removeEventListener("touchend",p),this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)})}this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}const c=this.pendingScrollAnchor;if(this.pendingScrollAnchor=null,c&&this.scrollElement&&this.options.enabled){const[u,f,p,m]=c;u!==null&&!p&&(Mu()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?m!==0&&(this._iosDeferredAdjustment+=m):((o=this.scrollState)==null?void 0:o.behavior)==="smooth"&&!km(this.getScrollOffset()-m,this.scrollState.lastTargetOffset)||this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})),p&&this.scrollToEnd({behavior:p})}this._retryClampedAdjustment()},this._retryClampedAdjustment=()=>{if(this._clampedAdjustment===null||!this.scrollElement||!this.options.enabled)return;const{target:i,maxAtWrite:o}=this._clampedAdjustment,l=this.getMaxScrollOffset();l>o+.5&&(this._clampedAdjustment=i>l+.5?{target:i,maxAtWrite:l}:null,this._scrollToOffset(i,{adjustments:void 0,behavior:void 0}))},this._flushIosDeferredIfReady=()=>{if(this._iosDeferredAdjustment===0||this.isScrolling||this._iosTouching||this._iosJustTouchEnded)return;const i=this.getScrollOffset(),o=this.getMaxScrollOffset();if(i<0||i>o)return;if(this._iosDeferredAdjustment<0&&i>=o-1){this._iosDeferredAdjustment=0;return}const l=this._iosDeferredAdjustment;this._iosDeferredAdjustment=0,this._scrollToOffset(i,{adjustments:this.scrollAdjustments+=l,behavior:void 0})},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getMeasurementOptions=li(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode,this.options.gap],(i,o,l,c,u,f,p,m)=>(this.prevLanes!==void 0&&this.prevLanes!==f&&(this.lanesChangedFlag=!0),this.prevLanes=f,this.pendingMin=null,{count:i,paddingStart:o,scrollMargin:l,getItemKey:c,enabled:u,lanes:f,laneAssignmentMode:p,gap:m}),{key:!1}),this.isIndexInRange=i=>i>=0&&i<this.options.count,this.getMeasurements=li(()=>[this.getMeasurementOptions(),this.itemSizeCacheVersion],({count:i,paddingStart:o,scrollMargin:l,getItemKey:c,enabled:u,lanes:f,laneAssignmentMode:p,gap:m},g)=>{var y;const x=this.itemSizeCache;if(!u)return this.measurementsCache=[],this._singleLaneMeasurements=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>i)for(const L of this.laneAssignments.keys())L>=i&&this.laneAssignments.delete(L);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this._singleLaneMeasurements=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMin=null),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(L=>{this.itemSizeCache.set(L.key,L.size)}));const w=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===i&&(this.lanesSettling=!1),f===1){const L=i*2;let I=(y=this._singleLaneMeasurements)==null?void 0:y.flat;if(!I||I.length<L){const N=new Float64Array(L);I&&w>0&&N.set(I.subarray(0,w*2)),I=N}const D=w===0?new Array(i):this._singleLaneMeasurements.items.slice();let U;if(w===0)U=o+l;else{const N=w-1;U=I[N*2]+I[N*2+1]+m}for(let N=w;N<i;N++){const j=c(N);D[N]=j;const W=x.get(j),ee=typeof W=="number"?W:this.options.estimateSize(N);I[N*2]=U,I[N*2+1]=ee,U+=ee+m}this._singleLaneMeasurements={flat:I,items:D};const Y=SE(D,I);return this.measurementsCache=Y,Y}const k=this.measurementsCache.slice(0,w),C=new Array(f).fill(void 0),E=new Float64Array(f);let M=0;for(let L=0;L<w;L++){const I=k[L];I&&(C[I.lane]===void 0&&M++,C[I.lane]=L,E[I.lane]=I.end)}for(let L=w;L<i;L++){const I=c(L),D=this.laneAssignments.get(L);let U,Y;const N=p==="estimate"||x.has(I);if(D!==void 0&&this.options.lanes>1){U=D;const de=C[U],Q=de!==void 0?k[de]:void 0;Y=Q?Q.end+m:o+l}else if(M===f){let de=0,Q=E[0],oe=C[0];for(let fe=1;fe<f;fe++){const pe=E[fe];(pe<Q||pe===Q&&C[fe]<oe)&&(de=fe,Q=pe,oe=C[fe])}U=de,Y=Q+m,N&&this.laneAssignments.set(L,U)}else U=L%this.options.lanes,Y=o+l,N&&this.laneAssignments.set(L,U);const j=x.get(I),W=typeof j=="number"?j:this.options.estimateSize(L),ee=Y+W;k[L]={index:L,start:Y,size:W,end:ee,key:I,lane:U},C[U]===void 0&&M++,C[U]=L,E[U]=ee}return this.measurementsCache=k,k},{key:!1,debug:()=>this.options.debug}),this.calculateRange=li(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(i,o,l,c)=>i.length===0||o===0?(this.range=null,null):(this.range=zE(i,o,l,c,c===1&&this._singleLaneMeasurements!==null?this._singleLaneMeasurements.flat:null),this.range),{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=li(()=>{let i=null,o=null;const l=this.calculateRange();return l&&(i=l.startIndex,o=l.endIndex),this.maybeNotify.updateDeps([this.isScrolling,i,o]),[this.options.rangeExtractor,this.options.overscan,this.options.count,i,o]},(i,o,l,c,u)=>c===null||u===null?[]:i({startIndex:c,endIndex:u,overscan:o,count:l}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=i=>{const o=this.options.indexAttribute,l=i.getAttribute(o);return l?parseInt(l,10):(console.warn(`Missing attribute name '${o}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=i=>{var o;if(!this.scrollState||this.scrollState.behavior!=="smooth")return!0;const l=this.scrollState.index??((o=this.getVirtualItemForOffset(this.scrollState.lastTargetOffset))==null?void 0:o.index);if(l!==void 0&&this.range){const c=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),u=Math.max(0,l-c),f=Math.min(this.options.count-1,l+c);return i>=u&&i<=f}return!0},this.measureElement=i=>{if(!i){this.elementsCache.forEach((u,f)=>{u.isConnected||(this.observer.unobserve(u),this.elementsCache.delete(f))});return}const o=this.indexFromElement(i);if(!this.isIndexInRange(o))return;const l=this.options.getItemKey(o),c=this.elementsCache.get(l);c!==i&&(c&&this.observer.unobserve(c),this.observer.observe(i),this.elementsCache.set(l,i)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(o)&&this.resizeItem(o,this.options.measureElement(i,void 0,this))},this.resizeItem=(i,o)=>{var l,c,u;if(!this.isIndexInRange(i))return;let f,p,m;const g=(l=this._singleLaneMeasurements)==null?void 0:l.flat;if(this.options.lanes===1&&g!=null)m=this.options.getItemKey(i),p=g[i*2],f=g[i*2+1];else{const w=this.measurementsCache[i];if(!w)return;m=w.key,p=w.start,f=w.size}const y=this.itemSizeCache.get(m)??f,x=o-y;if(x!==0){const w=this.options.anchorTo==="end"&&((c=this.scrollState)==null?void 0:c.behavior)!=="smooth"&&this.getVirtualDistanceFromEnd()<=this.options.scrollEndThreshold,k=w?this.getTotalSize():0,C=this.getScrollOffset()+this.scrollAdjustments,M=!this.itemSizeCache.has(m)?p<C:p+y<=C&&this.scrollDirection!=="backward",L=((u=this.scrollState)==null?void 0:u.behavior)!=="smooth"&&(this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(this.measurementsCache[i]??{index:i,key:m,start:p,size:f,end:p+f,lane:0},x,this):M);(this.pendingMin===null||i<this.pendingMin)&&(this.pendingMin=i),this.itemSizeCache.set(m,o),this.itemSizeCacheVersion++;let I=!1;w?I=this.applyScrollAdjustment(this.getTotalSize()-k):L&&(I=this.applyScrollAdjustment(x)),this.notify(I),this._retryClampedAdjustment()}},this.getVirtualItems=li(()=>[this.getVirtualIndexes(),this.getMeasurements()],(i,o)=>{const l=[];for(let c=0,u=i.length;c<u;c++){const f=i[c],p=o[f];l.push(p)}return l},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=i=>{var o;const l=this.getMeasurements();if(l.length===0)return;const c=(o=this._singleLaneMeasurements)==null?void 0:o.flat,u=this.options.lanes===1&&c!=null,f=uv(0,l.length-1,u?p=>c[p*2]:p=>Sm(l[p]).start,i);return Sm(l[f])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if("scrollHeight"in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{const i=this.scrollElement.document.documentElement;return this.options.horizontal?i.scrollWidth-this.scrollElement.innerWidth:i.scrollHeight-this.scrollElement.innerHeight}},this.getVirtualDistanceFromEnd=()=>Math.max(this.getTotalSize()-this.getSize()-this.getScrollOffset(),0),this.getDistanceFromEnd=()=>Math.max(this.getMaxScrollOffset()-this.getScrollOffset(),0),this.isAtEnd=(i=this.options.scrollEndThreshold)=>this.getDistanceFromEnd()<=i,this.getOffsetForAlignment=(i,o,l=0)=>{if(!this.scrollElement)return 0;const c=this.getSize(),u=this.getScrollOffset();o==="auto"&&(o=i>=u+c?"end":"start"),o==="center"?i+=(l-c)/2:o==="end"&&(i-=c);const f=this.getMaxScrollOffset();return Math.max(Math.min(f,i),0)},this.getOffsetForIndex=(i,o="auto")=>{i=Math.max(0,Math.min(i,this.options.count-1));const l=this.getSize(),c=this.getScrollOffset(),u=this.measurementsCache[i];if(!u)return;if(o==="auto")if(u.end>=c+l-this.options.scrollPaddingEnd)o="end";else if(u.start<=c+this.options.scrollPaddingStart)o="start";else return[c,o];if(o==="end"&&i===this.options.count-1)return[this.getMaxScrollOffset(),o];const f=o==="end"?u.end+this.options.scrollPaddingEnd:u.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(f,o,u.size),o]},this.scrollToOffset=(i,{align:o="start",behavior:l="auto"}={})=>{this._iosDeferredAdjustment=0;const c=this.getOffsetForAlignment(i,o),u=this.now();this.scrollState={index:null,align:o,behavior:l,startedAt:u,lastTargetOffset:c,stableFrames:0},this._scrollToOffset(c,{adjustments:void 0,behavior:l}),this.scheduleScrollReconcile()},this.scrollToIndex=(i,{align:o="auto",behavior:l="auto"}={})=>{this._iosDeferredAdjustment=0,i=Math.max(0,Math.min(i,this.options.count-1));const c=this.getOffsetForIndex(i,o);if(!c)return;const[u,f]=c,p=this.now();this.scrollState={index:i,align:f,behavior:l,startedAt:p,lastTargetOffset:u,stableFrames:0},this._scrollToOffset(u,{adjustments:void 0,behavior:l}),this.scheduleScrollReconcile()},this.scrollBy=(i,{behavior:o="auto"}={})=>{const l=this.getScrollOffset()+i,c=this.now();this.scrollState={index:null,align:"start",behavior:o,startedAt:c,lastTargetOffset:l,stableFrames:0},this._scrollToOffset(l,{adjustments:void 0,behavior:o}),this.scheduleScrollReconcile()},this.scrollToEnd=({behavior:i="auto"}={})=>{if(this.options.count>0){this.scrollToIndex(this.options.count-1,{align:"end",behavior:i});return}this.scrollToOffset(Math.max(this.getTotalSize()-this.getSize(),0),{behavior:i})},this.getTotalSize=()=>{var i,o;const l=this.getMeasurements();let c;if(l.length===0)c=this.options.paddingStart;else if(this.options.lanes===1){const u=l.length-1,f=(i=this._singleLaneMeasurements)==null?void 0:i.flat;f!=null?c=f[u*2]+f[u*2+1]:c=((o=l[u])==null?void 0:o.end)??0}else{const u=Array(this.options.lanes).fill(null);let f=l.length-1;for(;f>=0&&u.some(p=>p===null);){const p=l[f];u[p.lane]===null&&(u[p.lane]=p.end),f--}c=Math.max(...u.filter(p=>p!==null))}return Math.max(c-this.options.scrollMargin+this.options.paddingEnd,0)},this.takeSnapshot=()=>{const i=[];if(this.itemSizeCache.size===0)return i;const o=this.getMeasurements();for(const l of o)l&&this.itemSizeCache.has(l.key)&&i.push({index:l.index,key:l.key,start:l.start,size:l.size,end:l.end,lane:l.lane});return i},this._scrollToOffset=(i,{adjustments:o,behavior:l})=>{this._intendedScrollOffset=i+(o??0),this.options.scrollToFn(i,{behavior:l,adjustments:o},this)},this.measure=()=>{this.pendingMin=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.itemSizeCacheVersion++,this.notify(!1)},this.setOptions(r)}applyScrollAdjustment(r,i){if(r===0)return!1;if(Mu()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded))return this._iosDeferredAdjustment+=r,!1;{const o=this.getScrollOffset()+this.scrollAdjustments+r,l=this.scrollElement,c=l!==null&&("scrollHeight"in l||"document"in l)?this.getMaxScrollOffset():null;return this._clampedAdjustment=c!==null&&o>c+.5?{target:o,maxAtWrite:c}:null,this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=r,behavior:i}),this.scrollOffset!==null&&(this.scrollOffset+=this.scrollAdjustments,this.scrollOffset<0&&(this.scrollOffset=0),this.scrollAdjustments=0),!0}}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId==null&&(this.rafId=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()}))}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}const o=this.scrollState.index!=null?this.getOffsetForIndex(this.scrollState.index,this.scrollState.align):void 0,l=o?o[0]:this.scrollState.lastTargetOffset,c=1,u=l!==this.scrollState.lastTargetOffset;if(!u&&km(l,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=c){this.getScrollOffset()!==l&&this._scrollToOffset(l,{adjustments:void 0,behavior:"auto"}),this.scrollState=null;return}}else if(this.scrollState.stableFrames=0,u){const f=this.getSize()||600,p=Math.abs(l-this.getScrollOffset()),m=this.scrollState.behavior==="smooth"&&p>f;this.scrollState.lastTargetOffset=l,m||(this.scrollState.behavior="auto"),this._scrollToOffset(l,{adjustments:void 0,behavior:m?"smooth":"auto"})}this.scheduleScrollReconcile()}}const uv=(t,r,i,o)=>{for(;t<=r;){const l=(t+r)/2|0,c=i(l);if(c<o)t=l+1;else if(c>o)r=l-1;else return l}return t>0?t-1:0};function IE(t,r,i){let o=0;for(;o<=r;){const l=(o+r)/2|0,c=t[l*2];if(c<i)o=l+1;else if(c>i)r=l-1;else return l}return o>0?o-1:0}function zE(t,r,i,o,l){const c=t.length-1;if(t.length<=o)return{startIndex:0,endIndex:c};if(o===1&&l!==null){const m=IE(l,c,i);let g=m;const y=i+r;for(;g<c&&l[g*2]+l[g*2+1]<y;)g++;return{startIndex:m,endIndex:g}}let f=uv(0,c,m=>t[m].start,i),p=f;if(o===1)for(;p<c&&t[p].end<i+r;)p++;else if(o>1){const m=Array(o).fill(0);for(;p<c&&m.some(y=>y<i+r);){const y=t[p];m[y.lane]=y.end,p++}const g=Array(o).fill(i+r);for(;f>=0&&g.some(y=>y>=i);){const y=t[f];g[y.lane]=y.start,f--}f=Math.max(0,f-f%o),p=Math.min(c,p+(o-1-p%o))}return{startIndex:f,endIndex:p}}const Ru=typeof document<"u"?P.useLayoutEffect:P.useEffect;function DE({useFlushSync:t=!0,directDomUpdates:r=!1,directDomUpdatesMode:i="transform",...o}){const l=P.useReducer(y=>y+1,0)[1],c=P.useRef({enabled:r,mode:i,container:null,lastSize:null,lastPositions:new WeakMap,prevRange:null});c.current.enabled=r,c.current.mode=i;const u=P.useRef(!1),f=y=>{const x=c.current;if(!x.enabled||!x.container)return;const w=y.getTotalSize();if(w!==x.lastSize){x.lastSize=w;const k=y.options.horizontal?"width":"height";x.container.style[k]=`${w}px`}},p=y=>{const x=c.current;if(!x.enabled||!x.container)return;f(y);const w=!!y.options.horizontal,k=x.mode==="transform",C=w?"left":"top",E=y.options.scrollMargin,M=y.getVirtualItems();for(const L of M){const I=L.start-E,D=y.elementsCache.get(L.key);D&&x.lastPositions.get(D)!==I&&(x.lastPositions.set(D,I),k?D.style.transform=w?`translate3d(${I}px, 0, 0)`:`translate3d(0, ${I}px, 0)`:D.style[C]=`${I}px`)}},m={...o,onChange:(y,x)=>{var w;const k=c.current;let C=!0;if(k.enabled){p(y);const E=y.range,M=k.prevRange;C=!M||M.isScrolling!==y.isScrolling||M.startIndex!==(E==null?void 0:E.startIndex)||M.endIndex!==(E==null?void 0:E.endIndex),C&&(k.prevRange=E?{startIndex:E.startIndex,endIndex:E.endIndex,isScrolling:y.isScrolling}:null)}C&&(t&&x&&!u.current?Es.flushSync(l):l()),(w=o.onChange)==null||w.call(o,y,x)}},[g]=P.useState(()=>{const y=new _E(m),x=y.measureElement;return y.measureElement=w=>{u.current=!0;try{x(w)}finally{u.current=!1}},Object.assign(y,{containerRef:w=>{const k=c.current;if(k.container=w,k.lastSize=null,w&&k.enabled){const C=y.getTotalSize();k.lastSize=C;const E=y.options.horizontal?"width":"height";w.style[E]=`${C}px`}}})});return g.setOptions(m),Ru(()=>g._didMount(),[]),Ru(()=>(f(g),g._willUpdate())),Ru(()=>{p(g)}),g}function NE(t){return DE({observeElementRect:EE,observeElementOffset:AE,scrollToFn:jE,...t})}const VE="M5 13l4 4L19 7",OE="M6 12h12";function cv({checked:t,onCheckedChange:r,disabled:i,indeterminate:o,label:l,className:c,id:u,"aria-label":f,"aria-describedby":p}){const m=P.useId(),g=u??m,y=nr(),x=t||o,w=o?OE:VE;return S.jsxs("label",{htmlFor:g,className:Ce("inline-flex items-center gap-3",i?"cursor-not-allowed":"cursor-pointer",c),children:[S.jsx(Ge.button,{id:g,type:"button",role:"checkbox","aria-checked":o?"mixed":t,"aria-label":f,"aria-describedby":p,disabled:i,onClick:()=>!i&&r(!t),whileTap:y||i?void 0:{scale:.92},transition:wl,"data-state":t?"checked":o?"indeterminate":"unchecked",className:Ce("inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-md border-2 outline-none transition-colors duration-200","focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background","disabled:cursor-not-allowed disabled:opacity-60",x?"border-primary bg-primary text-primary-foreground":"border-muted-foreground/50 bg-background hover:border-muted-foreground"),children:S.jsx(gi,{initial:!1,children:x?S.jsxs(Ge.svg,{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round",initial:y?{opacity:1}:{opacity:0,scale:.5},animate:y?{opacity:1}:{opacity:1,scale:1},exit:y?{opacity:0}:{opacity:0,scale:.5,filter:"blur(4px)"},transition:y?{duration:0}:{duration:.16,ease:Jt},"aria-hidden":!0,children:[S.jsx("title",{children:o?"Partially selected":"Selected"}),S.jsx(Ge.path,{d:w,initial:y?{pathLength:1}:{pathLength:0},animate:{pathLength:1},transition:y?{duration:0}:{duration:o?.2:.3,ease:Jt,delay:.04}})]},o?"indeterminate":"checked"):null})}),l?S.jsx("span",{className:Ce("select-none text-sm text-foreground",i&&"opacity-60"),children:l}):null]})}function FE({value:t,label:r,onChange:i}){return S.jsx("input",{value:t,"aria-label":r,size:1,onChange:o=>i(o.target.value),placeholder:"Empty",className:"-mx-2 w-full min-w-0 appearance-none rounded-md border-0 bg-transparent px-2 py-1 text-foreground outline-none transition-colors placeholder:text-muted-foreground/40 focus:bg-muted focus:ring-1 focus:ring-ring"})}const Cm=188;function dv({items:t,ariaLabel:r,trigger:i,triggerClassName:o}){const l=nr(),c=P.useRef(null),[u,f]=P.useState(null),p=u!==null;P.useEffect(()=>{if(!p)return;const g=()=>f(null),y=x=>{x.key==="Escape"&&g()};return window.addEventListener("scroll",g,!0),window.addEventListener("resize",g),window.addEventListener("keydown",y),()=>{window.removeEventListener("scroll",g,!0),window.removeEventListener("resize",g),window.removeEventListener("keydown",y)}},[p]);const m=()=>{if(p){f(null);return}const g=c.current;if(!g)return;const y=g.getBoundingClientRect();f({top:y.bottom+4,left:Math.max(8,y.right-Cm)})};return S.jsxs(S.Fragment,{children:[S.jsx("button",{ref:c,type:"button","aria-label":r,"aria-haspopup":"menu","aria-expanded":p,onClick:g=>{g.stopPropagation(),m()},className:o,children:i}),p&&typeof document<"u"?Es.createPortal(S.jsxs(S.Fragment,{children:[S.jsx("div",{className:"fixed inset-0 z-40",onPointerDown:()=>f(null)}),S.jsx(Ge.div,{role:"menu",className:"fixed z-50 overflow-hidden rounded-xl border border-border bg-background p-1 shadow-xl",style:{top:u.top,left:u.left,width:Cm},initial:l?{opacity:0}:{opacity:0,scale:.96,y:-4},animate:l?{opacity:1}:{opacity:1,scale:1,y:0},transition:l?{duration:0}:QT,children:t.map(g=>S.jsxs("button",{type:"button",role:"menuitem",onClick:()=>{f(null),g.onSelect()},className:Ce("flex w-full items-center gap-2.5 rounded-lg px-2.5 py-1.5 text-left text-sm transition-colors [&_svg]:h-4 [&_svg]:w-4",g.destructive?"text-rose-500 hover:bg-rose-500/10":"text-foreground hover:bg-muted"),children:[g.icon,g.label]},g.label))})]}),document.body):null]})}function BE({rowEl:t,id:r,index:i,onInsertRow:o,onDeleteRow:l,onEnter:c,onLeave:u}){if(P.useEffect(()=>(window.addEventListener("scroll",u,!0),()=>window.removeEventListener("scroll",u,!0)),[u]),!t||typeof document>"u")return null;const f=t.getBoundingClientRect();return Es.createPortal(S.jsx("div",{style:{position:"fixed",top:f.top+f.height/2,left:f.left,transform:"translate(-50%, -50%)",zIndex:40},onPointerEnter:c,onPointerLeave:u,children:S.jsx(dv,{ariaLabel:`Row ${i+1} options`,triggerClassName:"flex h-6 w-2 items-center justify-center rounded-full bg-primary text-primary-foreground shadow-sm transition-colors hover:bg-primary/90",trigger:S.jsx(lE,{className:"h-3 w-3"}),items:[...o?[{label:"Insert before",icon:S.jsx(nE,{}),onSelect:()=>o(i,"before")},{label:"Insert after",icon:S.jsx(JC,{}),onSelect:()=>o(i,"after")}]:[],...l?[{label:"Delete row",icon:S.jsx(ov,{}),destructive:!0,onSelect:()=>l(r,i)}]:[]]})}),document.body)}const fv=48,$E=`${fv}px`,WE="inset 0 1px 0 var(--color-primary)";function Em(t){return t==="right"?"justify-end":t==="center"?"justify-center":"justify-start"}function hl(t){return t==="right"?"text-right":t==="center"?"text-center":"text-left"}function bm(t,r){return r.cell?r.cell(t):t[r.key]}function Pm(t,r){return r.sortValue?r.sortValue(t):t[r.key]}function Am({count:t,columns:r,selectable:i,rowHeight:o}){return S.jsx(S.Fragment,{children:Array.from({length:t},(l,c)=>S.jsxs("tr",{style:{height:o},className:"border-border/60 border-b",children:[i?S.jsx("td",{}):null,r.map(u=>S.jsx("td",{className:Ce("px-4",hl(u.align)),children:S.jsx("div",{className:Ce("h-3 animate-pulse rounded-full bg-muted",u.align==="right"?"ml-auto w-10":"w-2/3")})},u.key)),S.jsx("td",{"aria-hidden":!0})]},c))})}const Mm="select-none [-webkit-touch-callout:none]";function hv(t,r){try{t.setPointerCapture(r)}catch{}}function pv(t,r){try{t.hasPointerCapture(r)&&t.releasePointerCapture(r)}catch{}}function UE(t,r,i,o){return[...i?[{label:"Insert before",icon:S.jsx(eE,{}),onSelect:()=>i(r,"before")},{label:"Insert after",icon:S.jsx(tE,{}),onSelect:()=>i(r,"after")}]:[],...o?[{label:"Delete column",icon:S.jsx(ov,{}),destructive:!0,onSelect:()=>o(t.key,r)}]:[]]}function HE({column:t,index:r,thRefs:i,onInsertColumn:o,onDeleteColumn:l,onEnter:c,onLeave:u}){P.useEffect(()=>(window.addEventListener("scroll",u,!0),()=>window.removeEventListener("scroll",u,!0)),[u]);const f=i.current[t.key];if(!f||typeof document>"u")return null;const p=f.getBoundingClientRect();return Es.createPortal(S.jsx("div",{style:{position:"fixed",top:p.top,left:p.left+p.width/2,transform:"translate(-50%, -50%)",zIndex:40},onPointerEnter:c,onPointerLeave:u,children:S.jsx(dv,{ariaLabel:`${t.key} column options`,triggerClassName:"flex h-2 w-6 items-center justify-center rounded-full bg-primary text-primary-foreground shadow-sm transition-colors hover:bg-primary/90",trigger:S.jsx(aE,{className:"h-3 w-3"}),items:UE(t,r,o,l)})}),document.body)}function KE({columns:t,rowHeight:r,reduce:i,thRefs:o,selectable:l,allSelected:c,someSelected:u,onToggleAll:f,sort:p,onToggleSort:m,resizable:g,onResizeStart:y,onResizeMove:x,onResizeEnd:w,reorderable:k,dragKey:C,dropIndex:E,onReorderStart:M,onReorderMove:L,onReorderEnd:I,onInsertColumn:D,onDeleteColumn:U,onColumnRename:Y,activeColumn:N,onColumnActivate:j,onColumnDeactivate:W}){const ee=!!(D||U),de=t.findIndex(Q=>Q.key===N);return S.jsxs(S.Fragment,{children:[ee&&N&&de>=0?S.jsx(HE,{column:t[de],index:de,thRefs:o,onInsertColumn:D,onDeleteColumn:U,onEnter:()=>j==null?void 0:j(N),onLeave:()=>W==null?void 0:W()}):null,S.jsx("thead",{children:S.jsxs("tr",{style:{height:r},children:[l?S.jsx("th",{className:"sticky top-0 z-10 border-border border-b bg-muted",children:S.jsx("div",{className:"flex items-center justify-center",children:S.jsx(cv,{checked:c,indeterminate:!c&&u,onCheckedChange:f,"aria-label":"Select all rows",className:"size-6"})})}):null,t.map((Q,oe)=>{const fe=(p==null?void 0:p.key)===Q.key,pe=C===Q.key,Te=N===Q.key;return S.jsxs("th",{ref:q=>{o.current[Q.key]=q},onPointerEnter:()=>j==null?void 0:j(Q.key),onPointerLeave:()=>W==null?void 0:W(),style:Te?{boxShadow:WE}:void 0,"aria-sort":fe?(p==null?void 0:p.direction)==="asc"?"ascending":"descending":void 0,"data-drop":C?E===oe:void 0,"data-dropend":C?E===t.length&&oe===t.length-1:void 0,className:Ce("group sticky top-0 z-10 border-border border-b bg-muted p-0 font-medium text-muted-foreground","data-[drop=true]:before:absolute data-[drop=true]:before:inset-y-0 data-[drop=true]:before:left-0 data-[drop=true]:before:w-0.5 data-[drop=true]:before:bg-primary","data-[dropend=true]:after:absolute data-[dropend=true]:after:inset-y-0 data-[dropend=true]:after:right-0 data-[dropend=true]:after:w-0.5 data-[dropend=true]:after:bg-primary"),children:[S.jsxs(Ge.div,{className:Ce("flex h-full items-center",Em(Q.align)),style:{height:r},animate:i?{opacity:pe?.5:1}:{scale:pe?1.04:1,opacity:pe?.5:1},transition:wl,children:[k?S.jsx("button",{type:"button","aria-label":`Reorder ${Q.key} column`,onPointerDown:q=>M(Q.key,q),onPointerMove:L,onPointerUp:I,className:Ce("flex h-full w-6 cursor-grab touch-none items-center justify-center text-muted-foreground/60 transition-colors hover:text-foreground active:cursor-grabbing",Mm),children:S.jsx(uE,{className:"h-3.5 w-3.5"})}):null,Q.sortable?S.jsxs("button",{type:"button",onClick:()=>m(Q.key),className:Ce("flex h-full min-w-0 flex-1 select-none items-center gap-1 px-4 transition-colors hover:text-foreground",Em(Q.align),fe&&"text-foreground"),children:[S.jsx("span",{className:"truncate",children:Q.header}),S.jsx(Ge.span,{"aria-hidden":!0,className:"inline-flex shrink-0",animate:{rotate:fe&&(p==null?void 0:p.direction)==="desc"?180:0,opacity:fe?1:.35},transition:i?{duration:0}:{duration:.18,ease:Jt},children:S.jsx(sE,{className:"h-3.5 w-3.5"})})]}):Y?S.jsx("input",{value:typeof Q.header=="string"?Q.header:"","aria-label":`Rename ${Q.key} column`,size:1,onChange:q=>Y(Q.key,q.target.value),className:Ce("min-w-0 flex-1 truncate appearance-none rounded-md border-0 bg-transparent px-4 font-medium text-muted-foreground outline-none transition-colors focus:bg-muted focus:text-foreground",hl(Q.align))}):S.jsx("span",{className:Ce("min-w-0 flex-1 truncate px-4",hl(Q.align)),children:Q.header})]}),g?S.jsx("button",{type:"button","aria-label":`Resize ${Q.key} column`,tabIndex:-1,onPointerDown:q=>y(Q.key,q),onPointerMove:x,onPointerUp:w,className:Ce("absolute top-0 right-0 h-full w-1.5 cursor-col-resize touch-none bg-transparent transition-colors hover:bg-primary/40",Mm)}):null]},Q.key)}),S.jsx("th",{"aria-hidden":!0,className:"sticky top-0 z-10 border-border border-b bg-muted"})]})})]})}function GE({columns:t,thRefs:r,onColumnOrderChange:i}){const[o,l]=P.useState(()=>t.map(k=>k.key)),[c,u]=P.useState(null),[f,p]=P.useState(null),m=P.useMemo(()=>{const k=new Map(t.map(M=>[M.key,M])),C=o.filter(M=>k.has(M)),E=new Set(C);return t.forEach((M,L)=>{if(E.has(M.key))return;let I=C.length;if(L===0)I=0;else{const D=C.indexOf(t[L-1].key);I=D===-1?L:D+1}C.splice(I,0,M.key),E.add(M.key)}),C.map(M=>k.get(M)).filter(M=>M!==void 0)},[o,t]),g=P.useCallback(k=>{var C;for(let E=0;E<m.length;E++){const M=(C=r.current[m[E].key])==null?void 0:C.getBoundingClientRect();if(M&&k<M.left+M.width/2)return E}return m.length},[m,r]),y=P.useCallback((k,C)=>{C.preventDefault(),C.stopPropagation(),u(k),hv(C.currentTarget,C.pointerId)},[]),x=P.useCallback(k=>{c&&p(g(k.clientX))},[c,g]),w=P.useCallback(k=>{if(pv(k.currentTarget,k.pointerId),c&&f!==null){const C=m.map(M=>M.key),E=C.indexOf(c);if(E!==-1){const M=C.filter((I,D)=>D!==E);let L=f;E<L&&L--,M.splice(L,0,c),l(M),i==null||i(M)}}u(null),p(null)},[c,f,m,i]);return{orderedColumns:m,dragKey:c,dropIndex:f,startReorder:y,moveReorder:x,endReorder:w}}function XE({orderedColumns:t,thRefs:r,minColumnWidth:i,onColumnResize:o}){const l=P.useRef(null),[c,u]=P.useState({}),f=P.useCallback((g,y)=>{var w;y.preventDefault(),y.stopPropagation();const x={...c};for(const k of t)if(x[k.key]==null){const C=(w=r.current[k.key])==null?void 0:w.getBoundingClientRect().width;x[k.key]=C?Math.round(C):i}l.current={key:g,startX:y.clientX,startWidth:x[g]},u(x),hv(y.currentTarget,y.pointerId)},[i,t,r,c]),p=P.useCallback(g=>{const y=l.current;if(!y)return;const x=Math.max(i,y.startWidth+(g.clientX-y.startX));u(w=>({...w,[y.key]:x}))},[i]),m=P.useCallback(g=>{const y=l.current;l.current=null,pv(g.currentTarget,g.pointerId),y&&(o==null||o(y.key,c[y.key]??y.startWidth))},[o,c]);return{widths:c,startResize:f,moveResize:p,endResize:m}}function YE({rows:t,columns:r,sort:i,defaultSort:o=null,onSortChange:l}){const[c,u]=P.useState(o),f=i!==void 0?i:c,p=P.useCallback(y=>{i===void 0&&u(y),l==null||l(y)},[i,l]),m=P.useCallback(y=>{!f||f.key!==y?p({key:y,direction:"asc"}):f.direction==="asc"?p({key:y,direction:"desc"}):p(null)},[f,p]),g=P.useMemo(()=>{if(!f)return t;const y=r.find(w=>w.key===f.key);if(!y)return t;const x=[...t];return x.sort((w,k)=>{const C=Pm(w.row,y),E=Pm(k.row,y);let M;return typeof C=="number"&&typeof E=="number"?M=C-E:M=String(C).localeCompare(String(E)),f.direction==="asc"?M:-M}),x},[t,f,r]);return{sort:f,sortedRows:g,toggleSort:m}}function QE({sortedRows:t,selectedRowIds:r,defaultSelectedRowIds:i,onSelectionChange:o}){const[l,c]=P.useState(()=>new Set(i)),u=P.useMemo(()=>r!==void 0?new Set(r):l,[r,l]),f=P.useCallback(x=>{r===void 0&&c(x),o==null||o([...x])},[r,o]),p=t.length>0&&t.every(x=>u.has(x.id)),m=t.some(x=>u.has(x.id)),g=P.useCallback(()=>{const x=new Set(u);if(p)for(const w of t)x.delete(w.id);else for(const w of t)x.add(w.id);f(x)},[p,t,u,f]),y=P.useCallback(x=>{const w=new Set(u);w.has(x)?w.delete(x):w.add(x),f(w)},[u,f]);return{selected:u,allSelected:p,someSelected:m,toggleAll:g,toggleRow:y}}const ZE=120,qE=16;function JE(){const[t,r]=P.useState(qE);return P.useEffect(()=>{const i=Number.parseFloat(getComputedStyle(document.documentElement).fontSize);i>0&&r(i)},[]),t}function eb(t,r){if(!t)return null;const i=Number.parseFloat(t);return Number.isFinite(i)?t.endsWith("px")?i:t.endsWith("rem")?i*r:null:null}function tb({data:t,columns:r,getRowId:i,selectable:o=!1,selectedRowIds:l,defaultSelectedRowIds:c,onSelectionChange:u,sort:f,defaultSort:p=null,onSortChange:m,resizable:g=!1,minColumnWidth:y=64,onColumnResize:x,reorderable:w=!1,onColumnOrderChange:k,onCellEdit:C,onColumnRename:E,onInsertRow:M,onDeleteRow:L,onInsertColumn:I,onDeleteColumn:D,rowHeight:U=48,height:Y=440,overscan:N=10,onEndReached:j,loading:W=!1,skeletonRows:ee=3,emptyState:de="No data",className:Q}){const oe=nr(),fe=P.useRef(null),pe=P.useRef({}),Te=P.useMemo(()=>t.map((Le,Ie)=>({row:Le,id:i?i(Le,Ie):String(Ie)})),[t,i]),{orderedColumns:q,dragKey:$,dropIndex:Z,startReorder:O,moveReorder:A,endReorder:B}=GE({columns:r,thRefs:pe,onColumnOrderChange:k}),{sort:xe,sortedRows:he,toggleSort:ae}=YE({rows:Te,columns:r,sort:f,defaultSort:p,onSortChange:m}),{widths:le,startResize:we,moveResize:ke,endResize:ye}=XE({orderedColumns:q,thRefs:pe,minColumnWidth:y,onColumnResize:x}),{selected:Ve,allSelected:ct,someSelected:Be,toggleAll:dt,toggleRow:ft}=QE({sortedRows:he,selectedRowIds:l,defaultSelectedRowIds:c,onSelectionChange:u}),pn=NE({count:he.length,getScrollElement:()=>fe.current,estimateSize:()=>U,overscan:N}),kt=pn.getVirtualItems(),Mt=pn.getTotalSize(),ir=kt.length>0?kt[0].start:0,F=kt.length>0?Mt-kt[kt.length-1].end:0,ve=!!(M||L),$e=!!(I||D),Ye=q.length>0&&q.every(Le=>le[Le.key]!=null),sr=JE(),zr=P.useMemo(()=>{const Le=Qe=>!!E||!Qe.cell&&!!Qe.editable,Ie=q.reduce((Qe,lt)=>{const cr=le[lt.key];if(cr!=null)return Qe+cr;const ki=eb(lt.width,sr);return ki!=null?Qe+ki:Qe+(Le(lt)?Math.max(y,ZE):y)},o?fv:0);return Math.round(Ie)},[y,E,q,sr,o,le]),Dr=P.useRef(!1);P.useEffect(()=>{W||(Dr.current=!1)},[W]);const bs=P.useCallback(()=>{const Le=fe.current;!Le||!j||W||Dr.current||Le.scrollHeight-Le.scrollTop-Le.clientHeight<U*4&&(Dr.current=!0,j())},[j,W,U]),[xi,or]=P.useState(null),mn=P.useRef(null),lr=P.useCallback(Le=>{mn.current&&clearTimeout(mn.current),mn.current=null,or(Le)},[]),ar=P.useCallback(()=>{mn.current&&clearTimeout(mn.current),mn.current=setTimeout(()=>or(null),100)},[]),Ps=P.useRef({}),[tn,wi]=P.useState(null),Rn=P.useRef(null),Nr=P.useCallback((Le,Ie)=>{Rn.current&&clearTimeout(Rn.current),Rn.current=null,wi({id:Le,index:Ie})},[]),Vr=P.useCallback(()=>{Rn.current&&clearTimeout(Rn.current),Rn.current=setTimeout(()=>wi(null),100)},[]),Si=tn?Ps.current[tn.id]:null,ur=r.length+(o?1:0);return S.jsxs("div",{className:Ce("w-full overflow-hidden border border-border bg-background text-sm",Q),children:[S.jsx("div",{ref:fe,onScroll:bs,className:"overflow-auto",style:{height:Y},children:S.jsxs("table",{className:Ce("border-collapse",Ye?"w-max":void 0),style:{tableLayout:"fixed",minWidth:`max(100%, ${zr}px)`},children:[S.jsxs("colgroup",{children:[o?S.jsx("col",{style:{width:$E}}):null,q.map(Le=>{const Ie=le[Le.key],Qe=Ie?`${Ie}px`:Le.width;return S.jsx("col",{style:Qe?{width:Qe}:void 0},Le.key)}),S.jsx("col",{})]}),S.jsx(KE,{columns:q,rowHeight:U,reduce:!!oe,thRefs:pe,selectable:o,allSelected:ct,someSelected:Be,onToggleAll:dt,sort:xe,onToggleSort:ae,resizable:g,onResizeStart:we,onResizeMove:ke,onResizeEnd:ye,reorderable:w,dragKey:$,dropIndex:Z,onReorderStart:O,onReorderMove:A,onReorderEnd:B,onInsertColumn:I,onDeleteColumn:D,onColumnRename:E,activeColumn:$e?xi:null,onColumnActivate:$e?lr:void 0,onColumnDeactivate:$e?ar:void 0}),S.jsx("tbody",{children:he.length===0?W?S.jsx(Am,{count:Math.max(1,Math.ceil(Y/U)),columns:q,selectable:o,rowHeight:U}):S.jsx("tr",{children:S.jsx("td",{colSpan:ur+1,className:"p-10 text-center text-muted-foreground",children:de})}):S.jsxs(S.Fragment,{children:[ir>0?S.jsx("tr",{"aria-hidden":!0,style:{height:ir},children:S.jsx("td",{colSpan:ur+1})}):null,kt.map(Le=>{const Ie=he[Le.index],Qe=Ve.has(Ie.id);return S.jsxs("tr",{ref:lt=>{Ps.current[Ie.id]=lt},"data-selected":Qe,style:{height:U},onPointerEnter:ve?()=>Nr(Ie.id,Le.index):void 0,onPointerLeave:ve?Vr:void 0,className:Ce("border-border/60 border-b transition-colors","data-[selected=true]:bg-primary/5","hover:bg-muted/50"),children:[o?S.jsx("td",{className:"text-center",children:S.jsx("div",{className:"flex items-center justify-center",children:S.jsx(cv,{checked:Qe,onCheckedChange:()=>ft(Ie.id),"aria-label":`Select row ${Le.index+1}`})})}):null,q.map(lt=>S.jsx("td",{className:Ce("truncate px-4 text-foreground",hl(lt.align)),children:!lt.cell&&lt.editable?S.jsx(FE,{value:String(bm(Ie.row,lt)??""),label:`${lt.key} for row ${Le.index+1}`,onChange:cr=>C==null?void 0:C(Ie.id,lt.key,cr)}):bm(Ie.row,lt)},lt.key)),S.jsx("td",{"aria-hidden":!0})]},Ie.id)}),F>0?S.jsx("tr",{"aria-hidden":!0,style:{height:F},children:S.jsx("td",{colSpan:ur+1})}):null,W?S.jsx(Am,{count:ee,columns:q,selectable:o,rowHeight:U}):null]})})]})}),ve&&tn?S.jsx(BE,{rowEl:Si,id:tn.id,index:tn.index,onInsertRow:M,onDeleteRow:L,onEnter:()=>Nr(tn.id,tn.index),onLeave:Vr}):null]})}const nb={type:"spring",stiffness:420,damping:34,mass:.75},Rm={duration:.28,ease:Jt},rb={neutral:rE,info:cE,loading:dE,success:Qy,error:oE},ib={neutral:"text-muted-foreground bg-primary/[0.05]",info:"text-primary bg-primary/10",loading:"text-primary bg-primary/10",success:"text-emerald-600 bg-emerald-500/10 dark:text-emerald-400",error:"text-destructive bg-destructive/10"},sb={"top-left":"left-4 top-4","top-center":"left-1/2 top-4 -translate-x-1/2","top-right":"right-4 top-4","bottom-left":"bottom-6 left-4","bottom-center":"bottom-6 left-1/2 -translate-x-1/2","bottom-right":"bottom-6 right-4"};let ob=0;function jm(t,r){return{duration:r,dismissible:!0,...t,id:t.id??`toast-${Date.now()}-${ob++}`,createdAt:Date.now()}}function lb({initialToasts:t=[],defaultDuration:r=4200,limit:i}={}){const o=P.useRef(new Map),[l,c]=P.useState(()=>t.map(g=>jm(g,r))),u=P.useCallback(g=>{c(y=>y.filter(x=>x.id!==g))},[]),f=P.useCallback(()=>{c([])},[]),p=P.useCallback(g=>{const y=jm(g,r);return c(x=>{const w=[...x,y];return typeof i=="number"?w.slice(-i):w}),y.id},[r,i]),m=P.useCallback((g,y)=>{c(x=>x.map(w=>w.id===g?{...w,...y,id:g,createdAt:y.duration===void 0?w.createdAt:Date.now()}:w))},[]);return P.useEffect(()=>{const g=new Set(l.map(y=>y.id));o.current.forEach((y,x)=>{g.has(x)||(window.clearTimeout(y.timer),o.current.delete(x))}),l.forEach(y=>{const x=y.duration??r,w=o.current.get(y.id);if(x<=0){w&&(window.clearTimeout(w.timer),o.current.delete(y.id));return}const k=y.createdAt??Date.now(),C=`${k}:${x}`;if((w==null?void 0:w.signature)===C)return;w&&window.clearTimeout(w.timer);const E=Date.now()-k,M=Math.max(x-E,0),L=window.setTimeout(()=>{o.current.delete(y.id),u(y.id)},M);o.current.set(y.id,{timer:L,signature:C})})},[r,u,l]),P.useEffect(()=>{const g=o.current;return()=>{g.forEach(y=>{window.clearTimeout(y.timer)}),g.clear()}},[]),P.useMemo(()=>({toasts:l,showToast:p,updateToast:m,dismissToast:u,clearToasts:f,setToasts:c}),[f,u,p,l,m])}function ab({toasts:t,onDismiss:r,position:i="bottom-right",placement:o,fixed:l=!1,portal:c,portalRoot:u,maxVisible:f=4,className:p,classNames:m,icons:g,renderToast:y}){const[x,w]=P.useState(null),k=t.slice(-f),C=i.startsWith("bottom"),E=o??(l?"fixed":"static"),M=c??E==="fixed";P.useEffect(()=>{w(M?u??document.body:null)},[u,M]);const L=S.jsx("ol",{"aria-live":"polite","aria-atomic":"false",className:Ce("pointer-events-none flex w-[calc(100vw-2rem)] max-w-sm gap-2",C?"flex-col-reverse":"flex-col",E==="fixed"&&"fixed z-[90]",E==="absolute"&&"absolute z-20",E!=="static"&&sb[i],m==null?void 0:m.root,p),children:S.jsx(gi,{initial:!1,mode:"popLayout",children:k.map((I,D)=>S.jsx(ub,{toast:I,index:D,onDismiss:r,classNames:m,icons:g,renderToast:y},I.id))})});return M&&!x?null:M&&x?Es.createPortal(L,x):L}const ub=P.memo(function({toast:r,index:i,onDismiss:o,classNames:l,icons:c,renderToast:u}){const f=nr(),p=r.status??"neutral",m=rb[p],g=(c==null?void 0:c[p])??r.icon??S.jsx(m,{className:"h-3.5 w-3.5"}),y=r.dismissible!==!1&&!!o,x=!!(r.description||r.action);return S.jsx(Ge.li,{layout:!0,initial:f?{opacity:0}:{opacity:0,y:22,scale:.96,filter:"blur(10px)"},animate:f?{opacity:1}:{opacity:1,y:0,scale:1,filter:"blur(0px)"},exit:f?{opacity:0}:{opacity:0,x:32,scale:.96,filter:"blur(8px)",transition:{duration:.18,ease:Jt}},transition:nb,drag:y&&!f?"x":!1,dragConstraints:{left:0,right:0},dragElastic:.18,onDragEnd:(w,k)=>{!y||!o||(Math.abs(k.offset.x)>72||Math.abs(k.velocity.x)>520)&&o(r.id)},className:Ce("pointer-events-auto relative will-change-transform",l==null?void 0:l.item),style:{zIndex:20-i},children:S.jsx("div",{className:Ce("relative overflow-hidden rounded-2xl border border-border bg-card/95 p-3 shadow-2xl backdrop-blur-xl",l==null?void 0:l.surface),children:u?u(r):S.jsxs("div",{className:Ce("flex gap-3",x?"items-start":"items-center"),children:[S.jsx(Ge.span,{layout:!0,className:Ce("inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-full",x&&"mt-0.5",ib[p],l==null?void 0:l.iconWrap),children:S.jsx(gi,{mode:"popLayout",initial:!1,children:S.jsx(Ge.span,{initial:f?{opacity:0}:{opacity:0,y:8,scale:.8,filter:"blur(6px)"},animate:f?{opacity:1}:{opacity:1,y:0,scale:1,filter:"blur(0px)"},exit:f?{opacity:0}:{opacity:0,y:-8,scale:.9,filter:"blur(6px)"},transition:Rm,className:"inline-flex",children:p==="loading"?S.jsx("span",{className:"inline-flex animate-spin",children:g}):g},p)})}),S.jsxs("div",{className:Ce("min-w-0 flex-1",l==null?void 0:l.content),children:[S.jsx(gi,{mode:"popLayout",initial:!1,children:S.jsxs(Ge.div,{initial:f?{opacity:0}:{opacity:0,y:8,filter:"blur(6px)"},animate:f?{opacity:1}:{opacity:1,y:0,filter:"blur(0px)"},exit:f?{opacity:0}:{opacity:0,y:-8,filter:"blur(6px)"},transition:Rm,children:[S.jsx("p",{className:Ce("truncate text-sm font-medium leading-5 text-foreground",l==null?void 0:l.title),children:r.title}),r.description?S.jsx("p",{className:Ce("mt-0.5 line-clamp-2 text-xs leading-4 text-muted-foreground",l==null?void 0:l.description),children:r.description}):null]},`${r.id}-${p}-${String(r.title)}`)}),r.action?S.jsx("button",{type:"button",onClick:()=>{var w;return(w=r.action)==null?void 0:w.onClick(r)},className:Ce("mt-2 inline-flex h-7 items-center rounded-full bg-primary/[0.06] px-3 text-xs font-medium text-foreground transition-colors hover:bg-primary/[0.1]",l==null?void 0:l.action),children:r.action.label}):null]}),y?S.jsx("button",{type:"button",onClick:()=>o==null?void 0:o(r.id),"aria-label":"Dismiss toast",className:Ce("inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-primary/[0.06] hover:text-foreground",l==null?void 0:l.close),children:S.jsx(fE,{className:"h-3.5 w-3.5"})}):null]})})})});class fi extends Error{constructor(r,i){super(r),this.status=i,this.name="ApiError"}}class cb{constructor(r,i){Do(this,"sid",null);Do(this,"id",0);Do(this,"ready",!1);this.endpoint=r,this.token=i}headers(){const r={"Content-Type":"application/json",Accept:"application/json, text/event-stream"};return this.token!==""&&(r.Authorization=`Bearer ${this.token}`),this.sid!==null&&(r["Mcp-Session-Id"]=this.sid),r}async rpc(r,i){const o={jsonrpc:"2.0",id:++this.id,method:r,...i!==void 0?{params:i}:{}},l=await fetch(this.endpoint,{method:"POST",headers:this.headers(),body:JSON.stringify(o)}),c=l.headers.get("mcp-session-id");if(c&&(this.sid=c),l.status===401)throw new fi("unauthorized:请检查 manager token",401);if(l.status===404)throw this.ready=!1,this.sid=null,new fi("session expired:正在重新连接",404);const u=await l.json().catch(()=>null);if(!u||u.error){const f=u==null?void 0:u.error;throw new fi((f==null?void 0:f.message)??`HTTP ${l.status}`,l.status)}return u}async connect(){this.ready||(await this.rpc("initialize",{protocolVersion:"2025-06-18",capabilities:{},clientInfo:{name:"hub-admin",version:"1.0"}}),await fetch(this.endpoint,{method:"POST",headers:this.headers(),body:JSON.stringify({jsonrpc:"2.0",method:"notifications/initialized"})}),this.ready=!0)}async call(r,i){var f,p;await this.connect();const l=(await this.rpc("tools/call",{name:r,arguments:i??{}})).result,c=((p=(f=l==null?void 0:l.content)==null?void 0:f[0])==null?void 0:p.text)??"{}",u=JSON.parse(c);if((l==null?void 0:l.isError)===!0)throw new fi(u.error??`${r} failed`,200);return u}status(){return this.call("bridge_status")}peers(){return this.call("bridge_peers")}history(r=30){return this.call("bridge_history",{peer:"all",limit:r})}groups(){return this.call("bridge_group_list")}tasks(r=50){return this.call("bridge_tasks",{peer:"all",limit:r})}}async function ju(t,r,i,o,l){const c=await fetch(t+o,{method:i,headers:{...l!==void 0?{"Content-Type":"application/json"}:{},...r!==""?{Authorization:`Bearer ${r}`}:{}},body:l===void 0?void 0:JSON.stringify(l)}),u=await c.json().catch(()=>null),f=u===null||typeof u.error=="string"?u==null?void 0:u.error:void 0;if(u===null||typeof f=="string")throw new fi(typeof f=="string"?f:`HTTP ${c.status}`,c.status);return u}const Lu={async list(t,r,i){return(await ju(t,r,"GET",`/admin/api/tokens${i?"?reveal=1":""}`)).tokens??[]},async add(t,r,i){return(await ju(t,r,"POST","/admin/api/tokens/add",i)).created??{}},async remove(t,r,i){return(await ju(t,r,"DELETE",`/admin/api/tokens/remove/${encodeURIComponent(i)}`)).removed===!0}},mv="hub-admin-endpoint",Lm="hub-admin-token";function db(){return typeof window>"u"?"/mcp":window.location.port==="18764"||window.location.pathname.startsWith("/admin")?`${window.location.origin}/mcp`:window.localStorage.getItem(mv)??"http://127.0.0.1:18764/mcp"}function _u(t){try{return new URL(t,window.location.origin).origin}catch{return window.location.origin}}function Iu(t){const r=t instanceof Error?t.message:String(t);return r===""?"未知错误":r}function fb(t){if(t<=0)return"—";const r=Date.now()-t;return r<1e3?"刚刚":r<6e4?`${Math.floor(r/1e3)}s 前`:r<36e5?`${Math.floor(r/6e4)}m 前`:`${Math.floor(r/36e5)}h 前`}function zu(t){const r=new Date(t),i=o=>String(o).padStart(2,"0");return`${i(r.getHours())}:${i(r.getMinutes())}:${i(r.getSeconds())}`}async function Du(t){try{return await navigator.clipboard.writeText(t),!0}catch{try{const r=document.createElement("textarea");r.value=t,r.setAttribute("readonly",""),r.style.position="fixed",r.style.opacity="0",document.body.appendChild(r),r.select();const i=document.execCommand("copy");return document.body.removeChild(r),i}catch{return!1}}}function Ko({rows:t,columns:r,rowId:i,rowHeight:o=44,max:l=480,empty:c}){return t.length===0?S.jsx("div",{className:"empty",children:c}):S.jsx(tb,{data:t,columns:r,getRowId:i,rowHeight:o,height:Math.min(l,(t.length+1)*(o+1)+4),className:"border-0 border-t border-border bg-transparent"})}function _m(t){try{return new URL(t,window.location.origin).toString()}catch{return t}}function Im(t,r){const i={Authorization:`Bearer ${t.token}`};return[`# agent-comm-hub · peer: ${t.peer}${t.owner===void 0?"":` (${t.owner})`}`,"# 一人一枚 token;不要多人共用(共用=共享信箱)","","## Claude Code / generic HTTP MCP (.mcp.json)",JSON.stringify({mcpServers:{"agent-hub":{type:"http",url:r,headers:i}}},null,2),"","## opencode (opencode.json → mcp)",JSON.stringify({mcp:{"agent-hub":{type:"remote",url:r,headers:i}}},null,2),"","## curl 探测",`curl -sS -X POST ${r} \\`," -H 'Content-Type: application/json' \\"," -H 'Accept: application/json, text/event-stream' \\",` -H 'Authorization: Bearer ${t.token}' \\`,` -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"probe","version":"1"}}}'`].join(`
185
+ `)}function hb(){const[t,r]=P.useState(db),[i,o]=P.useState(()=>window.localStorage.getItem(Lm)??""),[l,c]=P.useState("off"),[u,f]=P.useState([]),[p,m]=P.useState([]),[g,y]=P.useState([]),[x,w]=P.useState([]),[k,C]=P.useState(null),[E,M]=P.useState([]),[L,I]=P.useState("unknown"),[D,U]=P.useState(!1),[Y,N]=P.useState(!1),[j,W]=P.useState(!1),[ee,de]=P.useState(null),[Q,oe]=P.useState(null),[fe,pe]=P.useState(""),[Te,q]=P.useState(""),[$,Z]=P.useState("agent"),{toasts:O,showToast:A,updateToast:B,dismissToast:xe}=lb({defaultDuration:4200}),he=P.useRef(null),ae=P.useRef(!1),le=P.useCallback((F,ve)=>{const $e=`${F}\0${ve}`;return(he.current===null||he.current.key!==$e)&&(he.current={key:$e,client:new cb(F,ve)}),he.current.client},[]),we=P.useCallback(async F=>{try{const ve=await Lu.list(_u(t),i,F);M(ve),I("ok")}catch(ve){if(ve instanceof fi&&ve.status===404){M([]),I("off");return}I("err")}},[t,i]),ke=P.useCallback(async()=>{N(!0);const F=le(t,i);try{const[ve,$e,Ye,sr,zr]=await Promise.all([F.status(),F.peers(),F.history(40),F.tasks(40),F.groups()]);return f($e.peers??[]),C(typeof ve.historyLimit=="number"?ve.historyLimit:null),m(Ye.messages??[]),y(sr.tasks??[]),w(zr.groups??[]),c("ok"),window.localStorage.setItem(mv,t),window.localStorage.setItem(Lm,i),await we(ae.current),{ok:!0}}catch(ve){return c("err"),{ok:!1,error:Iu(ve)}}finally{N(!1)}},[le,t,we,i]);P.useEffect(()=>{ke();const F=window.setInterval(()=>void ke(),5e3);return()=>window.clearInterval(F)},[ke]);const ye=P.useMemo(()=>u.filter(F=>F.connected).length,[u]),Ve=P.useCallback(async()=>{const F=A({title:"正在连接 hub…",description:t,status:"loading",duration:0}),ve=await ke();if(ve.ok){B(F,{title:"已连接 hub",description:`${u.length} 个 peer · ${g.length} 个任务`,status:"success",duration:3e3});return}B(F,{title:"连接失败",description:`${ve.error??""} · 检查 hub 是否启动、endpoint 与 token 是否正确`,status:"error",duration:7e3})},[t,u.length,ke,A,g.length,B]),ct=P.useCallback(()=>{const F=!D;U(F),ae.current=F,we(F)},[we,D]),Be=P.useCallback(async()=>{const F=fe.trim();if(F===""){A({title:"缺少 peer id",description:"形如 zhangsan 或 zhangsan.kimi(人.agent 便于区分同一人的多个 agent)",status:"error"});return}W(!0);try{const ve=await Lu.add(_u(t),i,{peer:F,role:$,...Te.trim()===""?{}:{owner:Te.trim()}});A({title:`已签发 ${ve.peer??F}`,description:`${ve.role??$} · ${ve.token??""}`,status:"success",duration:1e4,action:{label:"复制 token",onClick:()=>{Du(ve.token??"").then($e=>{$e||A({title:"复制失败",description:"点「明/打码」显示明文后手动复制",status:"error"})})}}}),pe(""),q(""),oe(ve),await we(ae.current)}catch(ve){A({title:"签发失败",description:Iu(ve),status:"error"})}finally{W(!1)}},[t,Te,fe,$,we,A,i]),dt=P.useCallback(async F=>{de(null);try{const ve=await Lu.remove(_u(t),i,F);A({title:ve?`已吊销 ${F}`:`未找到 ${F} 的 token`,description:ve?"该成员需要新 token 才能再连接":"列表可能已过期,刷新后重试",status:ve?"success":"info"}),await we(ae.current)}catch(ve){A({title:"吊销失败",description:Iu(ve),status:"error"})}},[t,we,A,i]),ft=P.useCallback(F=>{Du(F).then(ve=>{A({title:ve?"已复制 token":"复制失败",description:ve?"粘贴给成员即可":"点「明/打码」显示明文后手动复制",status:ve?"success":"error",duration:2600})})},[A]),pn=P.useMemo(()=>[{key:"id",header:"peer",sortable:!0,width:"200px",cell:F=>S.jsxs("div",{className:"cell-stack",children:[S.jsx("span",{className:"cell-mono",children:F.id}),F.alias!==void 0&&F.alias!==""?S.jsx("span",{className:"cell-dim",children:F.alias}):null]})},{key:"connected",header:"状态",width:"92px",sortable:!0,sortValue:F=>F.connected?1:0,cell:F=>S.jsx("span",{className:`pill ${F.connected?"done":""}`,children:F.connected?"online":"offline"})},{key:"clientName",header:"client",cell:F=>S.jsxs("div",{className:"cell-stack",children:[S.jsx("span",{children:F.clientName??"—"}),F.clientVersion!==void 0?S.jsx("span",{className:"cell-dim",children:F.clientVersion}):null]})},{key:"clientIps",header:"来源",width:"140px",cell:F=>{var ve;return S.jsxs("div",{className:"cell-stack",children:[S.jsx("span",{className:"cell-mono",children:((ve=F.clientIps)==null?void 0:ve.join(", "))??"—"}),F.anonymous===!0?S.jsx("span",{className:"cell-dim",children:"walk-in 未认领"}):null]})}},{key:"lastSeenMs",header:"最近活动",width:"104px",sortable:!0,cell:F=>S.jsx("span",{className:"cell-dim",children:fb(F.lastSeenMs)})}],[]),kt=P.useMemo(()=>[{key:"peer",header:"peer",sortable:!0,width:"180px",cell:F=>S.jsx("span",{className:"cell-mono",children:F.peer})},{key:"role",header:"角色",width:"104px",sortable:!0,cell:F=>S.jsx("span",{className:`pill ${F.role}`,children:F.role})},{key:"owner",header:"归属人",width:"120px",cell:F=>S.jsx("span",{children:F.owner??"—"})},{key:"token",header:"token",cell:F=>S.jsx("span",{className:"cell-mono cell-dim",children:F.token})},{key:"actions",header:"",width:"196px",align:"right",cell:F=>ee===F.peer?S.jsxs("div",{className:"cell-actions",children:[S.jsx(En,{size:"sm",variant:"ghost",onClick:()=>de(null),children:"取消"}),S.jsx(En,{size:"sm",variant:"secondary",onClick:()=>void dt(F.peer),children:"确认吊销"})]}):S.jsxs("div",{className:"cell-actions",children:[S.jsx(En,{size:"sm",variant:"ghost",onClick:()=>ft(F.token),children:"复制"}),S.jsx(En,{size:"sm",variant:"ghost",onClick:()=>de(F.peer),children:"吊销"})]})}],[ft,ee,dt]),Mt=P.useMemo(()=>[{key:"status",header:"状态",width:"96px",sortable:!0,cell:F=>S.jsx("span",{className:`pill ${F.status}`,children:F.status})},{key:"from",header:"流向",width:"180px",sortable:!0,cell:F=>S.jsxs("div",{className:"cell-stack",children:[S.jsxs("span",{className:"cell-mono",children:[F.from," → ",F.to]}),S.jsxs("span",{className:"cell-dim",children:[F.threadId!==void 0?`thread ${F.threadId}`:zu(F.createdAt),typeof F.timeoutMs=="number"?` · sla ${F.timeoutMs}ms`:""]})]})},{key:"prompt",header:"任务",cell:F=>S.jsx("span",{title:F.prompt,children:F.prompt===""?"—":F.prompt})},{key:"acks",header:"ack 时间线",width:"280px",cell:F=>{const ve=F.acks??[],$e=ve.slice(-3);return S.jsxs("div",{className:"cell-actions",style:{justifyContent:"flex-start",flexWrap:"wrap"},children:[$e.length===0?S.jsx("span",{className:"cell-dim",children:"等待 ack"}):null,$e.map(Ye=>S.jsxs("span",{className:`pill ${Ye.status}`,title:Ye.note??`${Ye.from} · ${zu(Ye.ts)}`,children:[Ye.from,": ",Ye.status,typeof Ye.progress=="number"?` ${Ye.progress}%`:"",Ye.applied===!1?" (ignored)":""]},`${F.id}-${Ye.ts}-${Ye.from}`)),ve.length>$e.length?S.jsxs("span",{className:"cell-dim",children:["+",ve.length-$e.length]}):null]})}}],[]),ir=P.useMemo(()=>[{key:"id",header:"群组",sortable:!0,width:"180px",cell:F=>S.jsx("span",{className:"cell-mono",children:F.name??F.id})},{key:"members",header:"成员",cell:F=>S.jsx("span",{className:"cell-mono",children:F.members.join(", ")})},{key:"createdBy",header:"创建者",width:"140px",align:"right",cell:F=>S.jsx("span",{className:"cell-dim",children:F.createdBy??"—"})}],[]);return S.jsxs("div",{className:"app",children:[S.jsxs("header",{className:"topbar",children:[S.jsxs("div",{className:"brand",children:[S.jsx("span",{className:"mark","aria-hidden":!0,children:"ACH"}),S.jsxs("span",{children:[S.jsx("div",{className:"name",children:"agent-comm-hub 管理台"}),S.jsx("div",{className:"sub",children:"远程运维控制台 · manager"})]})]}),S.jsx("span",{className:`chip ${l==="ok"?"ok":l==="err"?"err":""}`,children:l==="ok"?"已连接":l==="err"?"连接异常":"未连接"}),S.jsx("span",{className:"chip info",children:i===""?"local":"remote"}),S.jsx("span",{className:"spacer"}),S.jsxs("div",{className:"field",children:[S.jsx("label",{htmlFor:"token",children:"token"}),S.jsx(Ho,{id:"token",type:"password",placeholder:"manager token",value:i,onChange:o,autoComplete:"off",spellCheck:!1,className:"token-field"})]}),S.jsxs("div",{className:"field",children:[S.jsx("label",{htmlFor:"endpoint",children:"endpoint"}),S.jsx(Ho,{id:"endpoint",value:t,onChange:r,spellCheck:!1,placeholder:"http://127.0.0.1:18764/mcp",className:"endpoint-field"})]}),S.jsx(En,{variant:"primary",disabled:Y,onClick:()=>void Ve(),children:Y?"连接中…":"重新连接"})]}),S.jsxs("nav",{className:"kpis","aria-label":"overview",children:[S.jsxs("a",{className:"kpi",href:"#roster",children:[S.jsx("span",{className:"num",children:ye}),S.jsxs("span",{className:"lbl",children:["在线 / ",u.length," 花名册"]})]}),S.jsxs("a",{className:"kpi",href:"#tokens",children:[S.jsx("span",{className:"num",children:L==="off"?"–":E.length}),S.jsx("span",{className:"lbl",children:"已签发 token"})]}),S.jsxs("a",{className:"kpi",href:"#tasks",children:[S.jsx("span",{className:"num",children:g.length}),S.jsx("span",{className:"lbl",children:"任务台账"})]}),S.jsxs("a",{className:"kpi",href:"#groups",children:[S.jsx("span",{className:"num",children:x.length}),S.jsx("span",{className:"lbl",children:"群组"})]}),S.jsxs("a",{className:"kpi",href:"#feed",children:[S.jsx("span",{className:"num",children:p.length}),S.jsx("span",{className:"lbl",children:"消息尾迹"})]})]}),S.jsxs("main",{className:"workspace",children:[S.jsxs("div",{className:"col",children:[S.jsxs("section",{className:"panel",id:"roster",children:[S.jsxs("header",{children:[S.jsx("h2",{children:"花名册"}),S.jsxs("span",{className:"hint",children:[ye," 在线 / 共 ",u.length]})]}),S.jsx(Ko,{rows:u,columns:pn,rowId:F=>F.id,rowHeight:44,max:520,empty:"连接 hub 后显示在线 peer"})]}),S.jsxs("section",{className:"panel",id:"tokens",children:[S.jsxs("header",{children:[S.jsx("h2",{children:"成员与令牌"}),S.jsx("span",{className:"hint",children:L==="off"?"本地模式不提供 token 管理":"一人一 token = 一个 peer"}),S.jsx("div",{className:"tools",children:S.jsx(En,{size:"sm",variant:"ghost",disabled:L==="off",onClick:ct,children:D?"打码":"明文"})})]}),L==="off"?S.jsxs("div",{className:"empty",children:["远程模式(",S.jsx("code",{children:"--auth-tokens"}),")下才能在此签发 token"]}):S.jsxs(S.Fragment,{children:[S.jsxs("div",{className:"form-row",children:[S.jsx(Ho,{className:"form-field",placeholder:"peer id(zhangsan 或 zhangsan.kimi)",value:fe,onChange:pe,spellCheck:!1,onKeyDown:F=>{F.key==="Enter"&&Be()}}),S.jsxs(gE,{value:$,onValueChange:Z,className:"form-role",children:[S.jsx(yE,{children:S.jsx(vE,{})}),S.jsxs(xE,{children:[S.jsx(wm,{value:"agent",children:"agent"}),S.jsx(wm,{value:"manager",children:"manager"})]})]}),S.jsx(Ho,{className:"form-field",placeholder:"归属人(可选)",value:Te,onChange:q,spellCheck:!1,onKeyDown:F=>{F.key==="Enter"&&Be()}}),S.jsx(En,{variant:"primary",size:"sm",disabled:j,onClick:()=>void Be(),children:j?"签发中…":"签发"})]}),S.jsx(Ko,{rows:E,columns:kt,rowId:F=>F.peer,rowHeight:44,max:360,empty:L==="err"?"token 列表读取失败 · 检查 token 是否为 manager 角色":"还没有 token · 用上方表单签发第一枚"})]})]}),S.jsxs("section",{className:"panel",id:"tasks",children:[S.jsxs("header",{children:[S.jsx("h2",{children:"任务台账"}),S.jsx("span",{className:"hint",children:"pending → accepted → working → done · 终态锁定"})]}),S.jsx(Ko,{rows:g,columns:Mt,rowId:F=>F.id,rowHeight:52,max:560,empty:"暂无任务 · agent 用 bridge_task 派活后出现"})]})]}),S.jsxs("div",{className:"col",children:[S.jsxs("section",{className:"panel",id:"identity",children:[S.jsxs("header",{children:[S.jsx("h2",{children:"身份与接入"}),S.jsx("span",{className:"hint",children:"token 决定 peer"})]}),S.jsxs("div",{className:"flow",children:[S.jsxs("div",{className:"node",children:[S.jsx("b",{children:"人 / 机器"}),S.jsx("span",{children:"A · B · C"})]}),S.jsx("div",{className:"arrow","aria-hidden":!0,children:"→"}),S.jsxs("div",{className:"node",children:[S.jsx("b",{children:"专属 token"}),S.jsx("span",{children:"zhangsan / lisi"})]}),S.jsx("div",{className:"arrow","aria-hidden":!0,children:"→"}),S.jsxs("div",{className:"node",children:[S.jsx("b",{children:"独立 peer"}),S.jsx("span",{children:"信箱隔离"})]})]}),S.jsxs("div",{className:"note",children:["规则:",S.jsx("code",{children:"token"})," 决定 peer,不是 clientInfo 名。A 发给 B 时 C 收不到;全员用"," ",S.jsx("code",{children:'to:"all"'}),",小圈子用群组。本地无 token 时连"," ",S.jsx("code",{children:"127.0.0.1"}),"。"]}),Q===null?null:S.jsxs(S.Fragment,{children:[S.jsxs("div",{className:"snippet-bar",children:[S.jsxs("span",{className:"hint",children:["把这段配置发给 ",Q.peer,";token 只显示这一次"]}),S.jsx(En,{size:"sm",variant:"ghost",onClick:()=>{Du(Im(Q,_m(t))).then(F=>{A({title:F?`已复制 ${Q.peer} 的 MCP 配置`:"复制失败",description:F?"粘贴给成员即可":"手动选中下方文本复制",status:F?"success":"error",duration:2800})})},children:"复制 MCP 配置"}),S.jsx(En,{size:"sm",variant:"ghost",onClick:()=>oe(null),children:"收起"})]}),S.jsx("pre",{className:"snippet",tabIndex:0,children:Im(Q,_m(t))})]})]}),S.jsxs("section",{className:"panel",id:"groups",children:[S.jsxs("header",{children:[S.jsx("h2",{children:"群组"}),S.jsx("span",{className:"hint",children:"频道内互发"})]}),S.jsx(Ko,{rows:x,columns:ir,rowId:F=>F.id,rowHeight:44,max:320,empty:"暂无群组"})]}),S.jsxs("section",{className:"panel",id:"feed",children:[S.jsxs("header",{children:[S.jsx("h2",{children:"消息尾迹"}),S.jsxs("span",{className:"hint",children:["最近 ",p.length," 条"]})]}),S.jsx("ul",{className:"feed",children:p.length===0?S.jsx("li",{className:"empty",children:"—"}):p.map(F=>S.jsxs("li",{children:[S.jsxs("div",{className:"meta",children:[S.jsx("span",{className:`pill ${F.kind==="task"?"timeout":F.kind==="ack"?"done":""}`,children:F.kind}),S.jsxs("span",{children:[F.from," → ",F.to]}),F.threadId!==void 0?S.jsxs("span",{children:["thread ",F.threadId]}):null,S.jsx("span",{children:zu(F.ts)})]}),S.jsx("div",{className:"body",children:typeof F.content=="string"?F.content:JSON.stringify(F.content)})]},F.id))}),S.jsx("footer",{children:l==="ok"?`hub 已连接 · 5s 轮询${k===null?"":` · 历史上限 ${k}`}`:"等待连接…"})]})]})]}),S.jsx(ab,{toasts:O,position:"bottom-right",placement:"fixed",fixed:!0,maxVisible:3,onDismiss:xe})]})}const gv=document.getElementById("root");if(gv===null)throw new Error("#root missing");wx.createRoot(gv).render(S.jsx(P.StrictMode,{children:S.jsx(hb,{})}));</script>
186
+ <style rel="stylesheet" crossorigin>*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 222 22% 5%;--foreground: 210 20% 95%;--card: 222 20% 7%;--card-foreground: 210 20% 95%;--popover: 222 20% 7%;--popover-foreground: 210 20% 95%;--primary: 217 91% 60%;--primary-foreground: 222 47% 11%;--secondary: 217 19% 15%;--secondary-foreground: 210 20% 95%;--muted: 217 19% 15%;--muted-foreground: 215 12% 65%;--accent: 217 19% 15%;--accent-foreground: 210 20% 95%;--destructive: 0 72% 51%;--destructive-foreground: 210 20% 98%;--success: 142 71% 45%;--border: 217 19% 18%;--input: 217 19% 18%;--ring: 217 91% 60%;--radius: 8px}.app{font:400 13px/1.55 var(--font-ui)}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground));margin:0;min-height:100%;font:400 13px/1.55 var(--font-ui)}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.bottom-6{bottom:1.5rem}.bottom-full{bottom:100%}.left-0{left:0}.left-1\/2{left:50%}.left-3{left:.75rem}.left-4{left:1rem}.right-0{right:0}.right-3\.5{right:.875rem}.right-4{right:1rem}.top-0{top:0}.top-1\/2{top:50%}.top-4{top:1rem}.top-full{top:100%}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.z-\[90\]{z-index:90}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.ml-auto{margin-left:auto}.mt-0\.5{margin-top:.125rem}.mt-2{margin-top:.5rem}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.contents{display:contents}.hidden{display:none}.size-6{width:1.5rem;height:1.5rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-full{height:100%}.min-h-4{min-height:1rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-2{width:.5rem}.w-2\/3{width:66.666667%}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-\[calc\(100vw-2rem\)\]{width:calc(100vw - 2rem)}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.min-w-0{min-width:0px}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-col-resize{cursor:col-resize}.cursor-grab{cursor:grab}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-border{border-color:hsl(var(--border))}.border-border\/60{border-color:hsl(var(--border) / .6)}.border-destructive{border-color:hsl(var(--destructive))}.border-foreground\/40{border-color:hsl(var(--foreground) / .4)}.border-muted-foreground\/50{border-color:hsl(var(--muted-foreground) / .5)}.border-primary{border-color:hsl(var(--primary))}.bg-background{background-color:hsl(var(--background))}.bg-card{background-color:hsl(var(--card))}.bg-card\/95{background-color:hsl(var(--card) / .95)}.bg-current{background-color:currentColor}.bg-destructive\/10{background-color:hsl(var(--destructive) / .1)}.bg-emerald-500\/10{background-color:#10b9811a}.bg-muted{background-color:hsl(var(--muted))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/\[0\.05\]{background-color:hsl(var(--primary) / .05)}.bg-primary\/\[0\.06\]{background-color:hsl(var(--primary) / .06)}.bg-transparent{background-color:transparent}.p-0{padding:0}.p-1{padding:.25rem}.p-10{padding:2.5rem}.p-3{padding:.75rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pl-10{padding-left:2.5rem}.pl-3\.5{padding-left:.875rem}.pr-10{padding-right:2.5rem}.pr-3\.5{padding-right:.875rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.text-destructive{color:hsl(var(--destructive))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-rose-500{--tw-text-opacity: 1;color:rgb(244 63 94 / var(--tw-text-opacity, 1))}.caret-foreground{caret-color:hsl(var(--foreground))}.opacity-60{opacity:.6}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-destructive\/25{--tw-ring-color: hsl(var(--destructive) / .25)}.ring-ring\/40{--tw-ring-color: hsl(var(--ring) / .4)}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.will-change-transform{will-change:transform}.\[-webkit-touch-callout\:none\]{-webkit-touch-callout:none}:root{color-scheme:dark;--n-0: #0b0d10;--n-1: #11141a;--n-2: #171b22;--n-3: #1e2430;--n-4: #272e3c;--n-5: #343c4d;--n-7: #7b879c;--n-8: #a8b3c7;--n-9: #e8ecf4;--blue-500: #3b82f6;--blue-400: #60a5fa;--green-500: #22c55e;--amber-500: #f59e0b;--red-500: #ef4444;--cyan-500: #22d3ee;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--font-ui: ui-sans-serif, system-ui, -apple-system, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;--font-mono: ui-monospace, "JetBrains Mono", "Cascadia Mono", Consolas, monospace;--fs-11: 11px;--fs-12: 12px;--fs-13: 13px;--fs-14: 14px;--fs-18: 18px;--t-fast: .12s;--ease: cubic-bezier(.2, .8, .2, 1);--radius-sm: 4px;--radius-lg: var(--radius);--radius-pill: 999px;--bg: var(--n-0);--surface: var(--n-1);--surface-2: var(--n-2);--surface-3: var(--n-3);--line: #222a36;--line-strong: var(--n-4);--line-hover: var(--n-5);--text: var(--n-9);--text-dim: var(--n-8);--text-faint: var(--n-7);--brand: var(--blue-500);--brand-strong: var(--blue-400);--brand-wash: rgba(59, 130, 246, .14);--brand-line: rgba(59, 130, 246, .38);--ok: var(--green-500);--ok-wash: rgba(34, 197, 94, .12);--ok-line: rgba(34, 197, 94, .36);--warn: var(--amber-500);--warn-wash: rgba(245, 158, 11, .12);--warn-line: rgba(245, 158, 11, .36);--danger: var(--red-500);--danger-wash: rgba(239, 68, 68, .12);--danger-line: rgba(239, 68, 68, .36);--info: var(--cyan-500);--focus-ring: 0 0 0 3px var(--brand-wash);--panel-header-bg: var(--surface-2);--color-background: hsl(var(--background));--color-foreground: hsl(var(--foreground));--color-card: hsl(var(--card));--color-primary: hsl(var(--primary));--color-primary-foreground: hsl(var(--primary-foreground));--color-muted: hsl(var(--muted));--color-muted-foreground: hsl(var(--muted-foreground));--color-success: hsl(var(--success));--color-destructive: hsl(var(--destructive));--color-border: hsl(var(--border));--color-border-strong: var(--n-5)}::-moz-selection{background:var(--brand-wash)}::selection{background:var(--brand-wash)}.placeholder\:text-muted-foreground\/40::-moz-placeholder{color:hsl(var(--muted-foreground) / .4)}.placeholder\:text-muted-foreground\/40::placeholder{color:hsl(var(--muted-foreground) / .4)}.placeholder\:text-muted-foreground\/60::-moz-placeholder{color:hsl(var(--muted-foreground) / .6)}.placeholder\:text-muted-foreground\/60::placeholder{color:hsl(var(--muted-foreground) / .6)}.hover\:border-border:hover{border-color:hsl(var(--border))}.hover\:border-muted-foreground:hover{border-color:hsl(var(--muted-foreground))}.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-primary\/40:hover{background-color:hsl(var(--primary) / .4)}.hover\:bg-primary\/5:hover{background-color:hsl(var(--primary) / .05)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-primary\/\[0\.06\]:hover{background-color:hsl(var(--primary) / .06)}.hover\:bg-primary\/\[0\.1\]:hover{background-color:hsl(var(--primary) / .1)}.hover\:bg-rose-500\/10:hover{background-color:#f43f5e1a}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.focus\:bg-muted:focus{background-color:hsl(var(--muted))}.focus\:text-foreground:focus{color:hsl(var(--foreground))}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus-visible\:bg-muted:focus-visible{background-color:hsl(var(--muted))}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-foreground\/20:focus-visible{--tw-ring-color: hsl(var(--foreground) / .2)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.data-\[selected\=true\]\:bg-primary\/5[data-selected=true]{background-color:hsl(var(--primary) / .05)}.data-\[drop\=true\]\:before\:absolute[data-drop=true]:before{content:var(--tw-content);position:absolute}.data-\[drop\=true\]\:before\:inset-y-0[data-drop=true]:before{content:var(--tw-content);top:0;bottom:0}.data-\[drop\=true\]\:before\:left-0[data-drop=true]:before{content:var(--tw-content);left:0}.data-\[drop\=true\]\:before\:w-0\.5[data-drop=true]:before{content:var(--tw-content);width:.125rem}.data-\[drop\=true\]\:before\:bg-primary[data-drop=true]:before{content:var(--tw-content);background-color:hsl(var(--primary))}.data-\[dropend\=true\]\:after\:absolute[data-dropend=true]:after{content:var(--tw-content);position:absolute}.data-\[dropend\=true\]\:after\:inset-y-0[data-dropend=true]:after{content:var(--tw-content);top:0;bottom:0}.data-\[dropend\=true\]\:after\:right-0[data-dropend=true]:after{content:var(--tw-content);right:0}.data-\[dropend\=true\]\:after\:w-0\.5[data-dropend=true]:after{content:var(--tw-content);width:.125rem}.data-\[dropend\=true\]\:after\:bg-primary[data-dropend=true]:after{content:var(--tw-content);background-color:hsl(var(--primary))}.dark\:text-emerald-400:is(.dark *){--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.\[\&_button\]\:grid button{display:grid}.\[\&_button\]\:size-11 button{width:2.75rem;height:2.75rem}.\[\&_button\]\:place-items-center button{place-items:center}.\[\&_svg\]\:h-4 svg{height:1rem}.\[\&_svg\]\:w-4 svg{width:1rem}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;padding:8px var(--space-5);background:#0b0d10f0;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:8px;min-width:0}.brand .mark{width:28px;height:28px;border-radius:7px;background:var(--surface-2);border:1px solid var(--line-strong);display:grid;place-items:center;font:700 11px/1 var(--font-mono);color:var(--brand-strong)}.brand .name{font-size:var(--fs-13);font-weight:650;line-height:1.2}.brand .sub{font-size:var(--fs-11);color:var(--text-faint)}.spacer{flex:1 1 auto}.chip{display:inline-flex;align-items:center;gap:6px;font:600 var(--fs-11)/1 var(--font-mono);letter-spacing:.04em;text-transform:uppercase;border:1px solid var(--line-strong);border-radius:var(--radius-pill);padding:5px 10px;color:var(--text-dim);background:var(--surface-2);white-space:nowrap}.chip.ok{color:var(--ok);border-color:var(--ok-line);background:var(--ok-wash)}.chip.warn{color:var(--warn);border-color:var(--warn-line);background:var(--warn-wash)}.chip.err{color:var(--danger);border-color:var(--danger-line);background:var(--danger-wash)}.chip.info{color:var(--brand-strong);border-color:var(--brand-line);background:var(--brand-wash)}.field{display:flex;align-items:center;gap:6px}.field label{font:600 10px/1 var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint)}.field .token-field{width:210px}.field .endpoint-field{width:250px}.kpis{display:flex;flex-wrap:wrap;gap:var(--space-2);padding:var(--space-3) var(--space-5) 0;max-width:1440px;margin:0 auto;width:100%}.kpi{display:flex;align-items:baseline;gap:10px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:14px 18px;flex:1 1 160px;min-width:0;text-decoration:none;color:inherit;cursor:pointer}.kpi:hover{border-color:var(--line-hover);background:var(--surface-2)}.kpi .num{font:650 var(--fs-18)/1 var(--font-mono);font-variant-numeric:tabular-nums;min-width:1.2em}.kpi .lbl{font-size:var(--fs-11);color:var(--text-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.workspace{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(340px,.9fr);gap:var(--space-4);padding:var(--space-4) var(--space-5) var(--space-6);max-width:1440px;margin:0 auto;width:100%;min-height:calc(100vh - 168px)}.col{display:flex;flex-direction:column;gap:var(--space-4);min-width:0}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;min-height:0;scroll-margin-top:72px}.panel>header{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:11px var(--space-4);border-bottom:1px solid var(--line);background:var(--panel-header-bg)}.panel>header h2{margin:0;font-size:var(--fs-12);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim)}.panel>header .hint{font-size:var(--fs-11);color:var(--text-faint)}.panel>header .tools{margin-left:auto;display:flex;align-items:center;gap:6px}.panel>footer{padding:8px var(--space-3);border-top:1px solid var(--line);background:var(--surface-2);font:500 var(--fs-11)/1.4 var(--font-mono);color:var(--text-faint)}.panel .table-wrap{padding:0}.empty{padding:22px var(--space-4);text-align:center;color:var(--text-faint);font-size:var(--fs-12)}.form-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap;padding:10px var(--space-3);border-bottom:1px solid var(--line);background:var(--surface-2)}.form-row .form-field{flex:1 1 130px;min-width:0}.form-row .form-role{flex:0 0 132px}.note{margin:var(--space-3);padding:10px 12px;border-left:2px solid var(--brand);background:var(--brand-wash);border-radius:0 var(--radius-sm) var(--radius-sm) 0;font-size:var(--fs-12);color:var(--text-dim);line-height:1.55}.note code{font-family:var(--font-mono);font-size:11px;background:var(--surface-3);padding:1px 5px;border-radius:4px}.snippet-bar{display:flex;align-items:center;gap:6px;padding:10px var(--space-4);border-top:1px solid var(--line);background:var(--surface-2)}.snippet-bar .hint{flex:1 1 auto;min-width:0;font-size:var(--fs-11);color:var(--text-faint)}.snippet{margin:0;padding:12px var(--space-4);border-top:1px solid var(--line);background:var(--n-0);font:400 var(--fs-11)/1.6 var(--font-mono);color:var(--text-dim);white-space:pre;overflow:auto;max-height:280px}.flow{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;gap:var(--space-2);align-items:center;margin:var(--space-3)}.flow .node{background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:8px 10px}.flow .node b{display:block;font-size:var(--fs-12)}.flow .node span{font:400 10.5px/1.4 var(--font-mono);color:var(--text-faint)}.flow .arrow{color:var(--text-faint);text-align:center}.pill{display:inline-flex;align-items:center;font:650 10px/1 var(--font-mono);letter-spacing:.04em;text-transform:uppercase;padding:4px 8px;border-radius:var(--radius-pill);border:1px solid var(--line-strong);color:var(--text-dim);background:var(--surface-3)}.pill.accepted,.pill.working{color:var(--brand-strong);border-color:var(--brand-line);background:var(--brand-wash)}.pill.done{color:var(--ok);border-color:var(--ok-line);background:var(--ok-wash)}.pill.rejected,.pill.timeout{color:var(--warn);border-color:var(--warn-line);background:var(--warn-wash)}.pill.failed{color:var(--danger);border-color:var(--danger-line);background:var(--danger-wash)}.pill.agent{color:var(--text-dim)}.pill.manager{color:var(--brand-strong);border-color:var(--brand-line);background:var(--brand-wash)}.feed{list-style:none;margin:0;padding:0;flex:1 1 auto;min-height:120px;max-height:none;overflow:auto}#feed{flex:1 1 auto}.feed li{padding:8px var(--space-3);border-bottom:1px solid var(--line);display:grid;gap:3px}.feed .meta{display:flex;gap:8px;flex-wrap:wrap;font:500 var(--fs-11)/1.3 var(--font-mono);color:var(--text-faint)}.feed .body{font:400 var(--fs-12)/1.5 var(--font-mono);color:var(--text-dim);word-break:break-word}.cell-stack{display:grid;gap:2px}.cell-dim{color:var(--text-faint);font-size:var(--fs-11)}.cell-mono{font-family:var(--font-mono);font-size:var(--fs-12)}.cell-actions{display:flex;gap:4px;justify-content:flex-end}.text-\(--color-success\){color:var(--color-success)}.hover\:border-\(--color-border-strong\):hover{border-color:var(--color-border-strong)}@media(max-width:980px){.workspace,.flow{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}</style>
187
+ </head>
188
+ <body>
189
+ <div id="root"></div>
190
+ </body>
191
+ </html>