fluxy-bot 0.5.62 → 0.5.64

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/README.md CHANGED
@@ -9,10 +9,12 @@ A self-hosted AI agent that runs on the user's machine with a full-stack workspa
9
9
  Fluxy is three separate codebases working together:
10
10
 
11
11
  1. **Fluxy Bot** (this repo) -- runs on the user's machine. Supervisor process, worker API, workspace app, chat UI.
12
- 2. **Fluxy Relay** (separate server at `api.fluxy.bot`) -- cloud service that maps `username.fluxy.bot` to the user's Cloudflare tunnel. Routes HTTP and WebSocket traffic.
13
- 3. **Cloudflare Quick Tunnel** -- ephemeral tunnel created by `cloudflared` binary, exposes `localhost:3000` to the internet via a random `*.trycloudflare.com` URL.
12
+ 2. **Fluxy Relay** (separate server at `api.fluxy.bot`) -- optional cloud service that maps `username.fluxy.bot` to the user's Cloudflare tunnel. Routes HTTP and WebSocket traffic. Only used with Quick Tunnels.
13
+ 3. **Cloudflare Tunnel** -- exposes `localhost:3000` to the internet. Two modes:
14
+ - **Quick Tunnel** -- zero-config, no account needed, random `*.trycloudflare.com` URL that changes on restart. Optionally paired with the relay for a permanent domain.
15
+ - **Named Tunnel** -- persistent URL with the user's own domain. Requires a Cloudflare account and DNS setup. No relay needed.
14
16
 
15
- The relay gives users a permanent domain. The tunnel gives the relay a target. The supervisor ties everything together locally.
17
+ The user chooses their tunnel mode during `fluxy init` via an interactive selector.
16
18
 
17
19
  ---
18
20
 
@@ -30,7 +32,7 @@ Supervisor (supervisor/index.ts) port 3000 HTTP server + WebSocket + r
30
32
  +-- Worker (worker/index.ts) port 3001 Express API, SQLite, auth, conversations
31
33
  +-- Vite Dev Server port 3002 Serves workspace/client with HMR
32
34
  +-- Backend (workspace/backend/) port 3004 User's custom Express server
33
- +-- cloudflared (tunnel) -- Exposes port 3000 to the internet
35
+ +-- cloudflared (tunnel) -- Exposes port 3000 to the internet (quick or named)
34
36
  +-- Scheduler (supervisor/scheduler) -- PULSE + CRON job runner (in-process)
35
37
  ```
36
38
 
@@ -58,8 +60,8 @@ WebSocket upgrades:
58
60
  - Everything else -- proxied to Vite dev server for HMR.
59
61
 
60
62
  The supervisor also:
61
- - Manages the Cloudflare tunnel lifecycle (start, stop, health watchdog every 30s)
62
- - Registers with the relay and maintains heartbeats
63
+ - Manages the Cloudflare tunnel lifecycle (start, stop, health watchdog every 30s) for both quick and named tunnels
64
+ - Registers with the relay and maintains heartbeats (quick tunnel mode only)
63
65
  - Runs the Claude Agent SDK when users send chat messages
64
66
  - Restarts the backend process when Claude edits workspace files
65
67
  - Broadcasts `app:hmr-update` to all connected dashboard clients after file changes
@@ -299,35 +301,68 @@ For non-Anthropic providers (OpenAI, Ollama), the supervisor falls back to `ai.c
299
301
 
300
302
  The user's machine is behind NAT. We need a public URL so they can access their bot from their phone.
301
303
 
302
- ### Solution: Three Tiers
304
+ ### Tunnel Modes
305
+
306
+ The user selects a tunnel mode during `fluxy init`. The mode is stored in `~/.fluxy/config.json` as `tunnel.mode`.
307
+
308
+ #### Quick Tunnel (default)
309
+
310
+ Zero configuration. No Cloudflare account needed.
303
311
 
304
312
  ```
305
313
  Phone browser
306
314
  |
307
- | https://bruno.fluxy.bot
315
+ | https://bruno.fluxy.bot (via relay, optional)
308
316
  v
309
- Fluxy Relay (api.fluxy.bot) Cloud server, maps username -> tunnel URL
317
+ Fluxy Relay (api.fluxy.bot) Cloud server, maps username -> tunnel URL
310
318
  |
311
319
  | https://random-abc.trycloudflare.com
312
320
  v
313
- Cloudflare Quick Tunnel Ephemeral tunnel, changes on restart
321
+ Cloudflare Quick Tunnel Ephemeral tunnel, changes on restart
314
322
  |
315
323
  | http://localhost:3000
316
324
  v
317
- Supervisor User's machine
325
+ Supervisor User's machine
318
326
  ```
319
327
 
320
- ### Cloudflare Tunnel (supervisor/tunnel.ts)
321
-
322
- - Auto-downloads `cloudflared` binary to `~/.fluxy/bin/` on first run (validates minimum 10MB file size)
323
328
  - Spawns: `cloudflared tunnel --url http://localhost:3000 --no-autoupdate`
324
329
  - Extracts tunnel URL from stdout (regex match for `*.trycloudflare.com`)
330
+ - URL changes on every restart -- the relay provides the stable domain layer on top
331
+ - Optionally register with Fluxy Relay for a permanent `my.fluxy.bot/username` or `fluxy.bot/username` URL
332
+
333
+ #### Named Tunnel
334
+
335
+ Persistent URL with the user's own domain. Requires a Cloudflare account + domain.
336
+
337
+ ```
338
+ Phone browser
339
+ |
340
+ | https://bot.mydomain.com
341
+ v
342
+ Cloudflare Named Tunnel Persistent tunnel, URL never changes
343
+ |
344
+ | http://localhost:3000
345
+ v
346
+ Supervisor User's machine
347
+ ```
348
+
349
+ - Setup via `fluxy tunnel setup` (interactive: login, create tunnel, generate config, print CNAME instructions)
350
+ - Spawns: `cloudflared tunnel --config <configPath> run <name>`
351
+ - URL is the user's domain (from config), no stdout parsing needed
352
+ - No relay needed -- the user's domain is already permanent
353
+ - Requires a DNS CNAME record pointing to `<uuid>.cfargotunnel.com`
354
+
355
+ ### Cloudflare Tunnel Binary (supervisor/tunnel.ts)
356
+
357
+ - Auto-downloads `cloudflared` binary to `~/.fluxy/bin/` on first run (validates minimum 10MB file size)
325
358
  - Health check: HEAD request to tunnel URL with 5s timeout
326
359
  - Watchdog runs every 30s, detects sleep/wake gaps (>60s between ticks), auto-restarts dead tunnels
360
+ - Quick tunnel restart: re-extracts new URL from stdout, updates relay if configured
361
+ - Named tunnel restart: restarts the process, URL doesn't change
327
362
 
328
- ### Relay Server (separate codebase)
363
+ ### Relay Server (separate codebase, Quick Tunnel only)
329
364
 
330
- Node.js/Express + http-proxy + MongoDB. Hosted on Railway.
365
+ Node.js/Express + http-proxy + MongoDB. Hosted on Railway. Only used when the user opts into Quick Tunnel mode and registers a handle.
331
366
 
332
367
  **Registration flow:**
333
368
  1. User picks a username during onboarding
@@ -392,13 +427,30 @@ The CLI is the user-facing entry point. Commands:
392
427
 
393
428
  | Command | Description |
394
429
  |---|---|
395
- | `fluxy init` | First-time setup: creates config, installs cloudflared, boots server, optionally installs systemd daemon |
430
+ | `fluxy init` | First-time setup: interactive tunnel mode chooser (Quick or Named), creates config, installs cloudflared, boots server, optionally installs systemd daemon |
396
431
  | `fluxy start` | Boot the supervisor (or detect existing daemon and show status) |
397
- | `fluxy status` | Health check via `/api/health`, shows uptime and relay URL |
432
+ | `fluxy status` | Health check via `/api/health`, shows uptime, tunnel URL, and relay URL |
398
433
  | `fluxy update` | Downloads latest from npm registry, updates code directories, rebuilds UI, restarts daemon |
434
+ | `fluxy tunnel` | Named tunnel management (subcommands below) |
399
435
  | `fluxy daemon` | Linux systemd management: install, start, stop, restart, status, logs, uninstall |
400
436
 
401
- The CLI spawns the supervisor via `node --import tsx/esm supervisor/index.ts` and waits for readiness markers on stdout (`__TUNNEL_URL__`, `__RELAY_URL__`, `__VITE_WARM__`, `__READY__`) with a 45-second timeout.
437
+ **`fluxy tunnel` subcommands:**
438
+ | Subcommand | Description |
439
+ |---|---|
440
+ | `fluxy tunnel setup` | Interactive named tunnel setup: login to Cloudflare, create tunnel, enter domain, generate config YAML, print CNAME instructions |
441
+ | `fluxy tunnel status` | Show current tunnel mode and configuration |
442
+ | `fluxy tunnel reset` | Switch back to quick tunnel mode |
443
+
444
+ **`fluxy init` tunnel chooser:**
445
+
446
+ During init, the user is presented with an interactive arrow-key menu to choose their tunnel mode:
447
+
448
+ - **Quick Tunnel** (Easy and Fast) -- Random CloudFlare tunnel URL on every start/update. Optionally use Fluxy Relay for a permanent `my.fluxy.bot/username` handle (free) or a premium `fluxy.bot/username` handle ($5 one-time).
449
+ - **Named Tunnel** (Advanced) -- Persistent URL with your own domain. Requires a Cloudflare account + domain. Use a subdomain like `bot.yourdomain.com` or the root domain.
450
+
451
+ If Named Tunnel is selected, `fluxy init` immediately runs the named tunnel setup flow inline (same as `fluxy tunnel setup`).
452
+
453
+ The CLI spawns the supervisor via `node --import tsx/esm supervisor/index.ts` and waits for readiness markers on stdout (`__TUNNEL_URL__`, `__RELAY_URL__`, `__VITE_WARM__`, `__READY__`, `__TUNNEL_FAILED__`) with a 45-second timeout.
402
454
 
403
455
  On Linux, `fluxy daemon` generates a systemd unit file that runs the supervisor as a service with auto-restart on failure.
404
456
 
@@ -428,7 +480,8 @@ Windows: `scripts/install.ps1` (PowerShell equivalent).
428
480
 
429
481
  | Path | Contents |
430
482
  |---|---|
431
- | `~/.fluxy/config.json` | Port, username, AI provider, relay token, tunnel URL |
483
+ | `~/.fluxy/config.json` | Port, username, AI provider, tunnel mode/config, relay token, tunnel URL |
484
+ | `~/.fluxy/cloudflared-config.yml` | Named tunnel config (generated by `fluxy tunnel setup`) |
432
485
  | `~/.fluxy/memory.db` | SQLite -- conversations, messages, settings, sessions, push subscriptions |
433
486
  | `~/.fluxy/bin/cloudflared` | Cloudflare tunnel binary |
434
487
  | `~/.fluxy/workspace/` | User's workspace copy (client, backend, memory files, skills, config) |
@@ -448,7 +501,7 @@ supervisor/
448
501
  index.ts HTTP server, request routing, WebSocket handler, process orchestration
449
502
  worker.ts Worker process spawn/stop/restart
450
503
  backend.ts Backend process spawn/stop/restart
451
- tunnel.ts Cloudflare tunnel lifecycle, health watchdog
504
+ tunnel.ts Cloudflare tunnel lifecycle (quick + named), health watchdog
452
505
  vite-dev.ts Vite dev server startup for dashboard HMR
453
506
  fluxy-agent.ts Claude Agent SDK wrapper, session management, memory injection
454
507
  scheduler.ts PULSE + CRON scheduler, 60s tick, push notification dispatch
@@ -531,8 +584,8 @@ The relay couldn't reliably forward POST bodies (now fixed). WebSocket was the w
531
584
  **Why bypassPermissions on the agent?**
532
585
  The whole point is that the user talks to Claude from their phone and Claude does whatever's needed. Confirmation prompts would require a terminal session that doesn't exist. The workspace directory boundary + the system prompt are the safety rails.
533
586
 
534
- **Why Cloudflare Quick Tunnel instead of a persistent tunnel?**
535
- Zero configuration. No Cloudflare account needed. The tradeoff is the URL changes on restart, which is why the relay exists -- it provides the stable domain layer on top.
587
+ **Why two tunnel modes?**
588
+ Quick Tunnel is the default for simplicity -- zero configuration, no Cloudflare account needed. The tradeoff is the URL changes on restart, which is why the relay exists as an optional stable domain layer. Named Tunnel is for advanced users who want full control -- their own domain, no dependency on the relay, permanent URLs. Both modes are offered during `fluxy init`.
536
589
 
537
590
  **Why two Vite configs?**
538
591
  `vite.config.ts` builds the workspace dashboard (user-facing app). `vite.fluxy.config.ts` builds the Fluxy chat SPA. They're separate apps with separate entry points, bundled independently. The chat is pre-built at publish time; the dashboard runs as a dev server with HMR.
package/bin/cli.js CHANGED
@@ -140,11 +140,12 @@ function chooseTunnelMode() {
140
140
  {
141
141
  label: 'Quick Tunnel',
142
142
  mode: 'quick',
143
- tag: 'FREE',
143
+ tag: 'Easy and Fast',
144
144
  tagColor: c.green,
145
145
  desc: [
146
- 'Random CloudFlare tunnel URL on every start',
147
- `Optional: ${c.reset}${c.pink}fluxy.bot/YOURBOT${c.reset}${c.dim} custom handle via Fluxy relay`,
146
+ 'Random CloudFlare tunnel URL on every start/update',
147
+ `Optional: Use Fluxy Relay Server and access your bot at ${c.reset}${c.pink}my.fluxy.bot/YOURBOT${c.reset}${c.dim} (Free)`,
148
+ `Or use a premium handle like ${c.reset}${c.pink}fluxy.bot/YOURBOT${c.reset}${c.dim} ($5 one-time fee)`,
148
149
  ],
149
150
  },
150
151
  {
@@ -155,6 +156,7 @@ function chooseTunnelMode() {
155
156
  desc: [
156
157
  'Persistent URL with your own domain',
157
158
  'Requires a CloudFlare account + domain',
159
+ `Use a subdomain like ${c.reset}${c.white}bot.YOURDOMAIN.COM${c.reset}${c.dim} or the root domain`,
158
160
  ],
159
161
  },
160
162
  ];
@@ -1,4 +1,4 @@
1
- import{c as de,r as D,j as S,L as jc,A as Hc,g as mu,R as Oe,C as Vc,a as Nn,m as Ut,M as ml,b as Wc,O as qc}from"./globals-uErXOSoA.js";const Yc=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],Kc=de("arrow-left",Yc);const Xc=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M17 17H4a1 1 0 0 1-.74-1.673C4.59 13.956 6 12.499 6 8a6 6 0 0 1 .258-1.742",key:"178tsu"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M8.668 3.01A6 6 0 0 1 18 8c0 2.687.77 4.653 1.707 6.05",key:"1hqiys"}]],Zc=de("bell-off",Xc);const Qc=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M22 8c0-2.3-.8-4.3-2-6",key:"5bb3ad"}],["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"}],["path",{d:"M4 2C2.8 3.7 2 5.7 2 8",key:"tap9e0"}]],Jc=de("bell-ring",Qc);const ed=[["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"}]],td=de("bell",ed);const nd=[["path",{d:"M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z",key:"18u6gg"}],["circle",{cx:"12",cy:"13",r:"3",key:"1vg3eu"}]],rd=de("camera",nd);const ad=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],id=de("chevron-left",ad);const od=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],sd=de("chevron-right",od);const ld=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],ud=de("copy",ld);const cd=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],dd=de("download",cd);const pd=[["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"}]],gd=de("ellipsis-vertical",pd);const fd=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],md=de("lock",fd);const bd=[["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551",key:"1miecu"}]],Rn=de("paperclip",bd);const hd=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]],Ed=de("pause",hd);const yd=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],Sd=de("play",yd);const wd=[["path",{d:"M3.714 3.048a.498.498 0 0 0-.683.627l2.843 7.627a2 2 0 0 1 0 1.396l-2.842 7.627a.498.498 0 0 0 .682.627l18-8.5a.5.5 0 0 0 0-.904z",key:"117uat"}],["path",{d:"M6 12h16",key:"s4cdu5"}]],kd=de("send-horizontal",wd);const Td=[["path",{d:"M12 2v13",key:"1km8f5"}],["path",{d:"m16 6-4-4-4 4",key:"13yo43"}],["path",{d:"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8",key:"1b2hhj"}]],Ad=de("share",Td);const _d=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]],Id=de("square",_d);const Nd=[["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"}]],bu=de("trash-2",Nd);const Rd=[["path",{d:"m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72",key:"ul74o6"}],["path",{d:"m14 7 3 3",key:"1r5n42"}],["path",{d:"M5 6v4",key:"ilb8ba"}],["path",{d:"M19 14v4",key:"blhpug"}],["path",{d:"M10 2v2",key:"7u0qdc"}],["path",{d:"M7 8H3",key:"zfb6yr"}],["path",{d:"M21 16h-4",key:"1cnmox"}],["path",{d:"M11 3H9",key:"1obp7u"}]],xd=de("wand-sparkles",Rd);const vd=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Vn=de("x",vd);class Wn{ws=null;handlers=new Map;statusHandlers=new Set;reconnectTimer=null;heartbeatTimer=null;url;queue=[];intentionalClose=!1;reconnectDelay=1e3;static MAX_RECONNECT_DELAY=8e3;tokenGetter=null;constructor(t,n){const r=location.protocol==="https:"?"wss:":"ws:",a=location.host;this.url=t??`${r}//${a}/ws`,this.tokenGetter=n??null}connect(){this.intentionalClose=!1;let t=this.url;if(this.tokenGetter){const n=this.tokenGetter();if(n){const r=t.includes("?")?"&":"?";t=`${t}${r}token=${n}`}}this.ws=new WebSocket(t),this.ws.onopen=()=>{this.reconnectDelay=1e3,this.notifyStatus(!0),this.flushQueue(),this.startHeartbeat()},this.ws.onmessage=n=>{if(n.data==="pong")return;const r=JSON.parse(n.data);this.handlers.get(r.type)?.forEach(i=>i(r.data))},this.ws.onclose=()=>{this.stopHeartbeat(),this.notifyStatus(!1),this.intentionalClose||(this.reconnectTimer=setTimeout(()=>{this.reconnectDelay=Math.min(this.reconnectDelay*2,Wn.MAX_RECONNECT_DELAY),this.connect()},this.reconnectDelay))},this.ws.onerror=()=>this.ws?.close()}disconnect(){this.intentionalClose=!0,this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.stopHeartbeat(),this.ws?.close(),this.ws=null}on(t,n){return this.handlers.has(t)||this.handlers.set(t,new Set),this.handlers.get(t).add(n),()=>this.handlers.get(t)?.delete(n)}onStatus(t){return this.statusHandlers.add(t),()=>this.statusHandlers.delete(t)}send(t,n){const r={type:t,data:n};this.ws?.readyState===WebSocket.OPEN?this.ws.send(JSON.stringify(r)):this.queue.push(r)}get connected(){return this.ws?.readyState===WebSocket.OPEN}flushQueue(){for(;this.queue.length>0&&this.ws?.readyState===WebSocket.OPEN;){const t=this.queue.shift();this.ws.send(JSON.stringify(t))}}notifyStatus(t){this.statusHandlers.forEach(n=>n(t))}startHeartbeat(){this.stopHeartbeat(),this.heartbeatTimer=setInterval(()=>{this.ws?.readyState===WebSocket.OPEN&&this.ws.send("ping")},25e3)}stopHeartbeat(){this.heartbeatTimer&&(clearInterval(this.heartbeatTimer),this.heartbeatTimer=null)}}const qn="fluxy_token";let hu=null;function xn(){return localStorage.getItem(qn)}function Cd(e){localStorage.setItem(qn,e)}function Eu(){localStorage.removeItem(qn)}function Od(e){hu=e}async function Ge(e,t={}){const n=xn(),r=new Headers(t.headers);n&&r.set("Authorization",`Bearer ${n}`);const a=await fetch(e,{...t,headers:r});return a.status===401&&n&&(Eu(),hu?.()),a}function Ld(e,t,n=!0){const[r,a]=D.useState([]),[i,o]=D.useState(null),[s,l]=D.useState(!1),[u,d]=D.useState(""),[c,p]=D.useState([]),[g,m]=D.useState(!1),w=D.useRef(!1),k=D.useRef(null),E=D.useRef(!1),_=D.useRef(!1);D.useEffect(()=>{k.current=i},[i]),D.useEffect(()=>{E.current=s},[s]);const A=D.useCallback(O=>{let y;O.audio_data&&(O.audio_data.startsWith("data:")?y=O.audio_data:O.audio_data.includes("/")?y=`/api/files/${O.audio_data}`:y=`data:audio/webm;base64,${O.audio_data}`);let I;if(O.attachments)try{I=JSON.parse(O.attachments)}catch{}return{id:O.id,role:O.role,content:O.content,timestamp:O.created_at,audioData:y,hasAttachments:!!(I&&I.length>0),attachments:I}},[]),N=D.useCallback(async()=>{try{const O=await Ge("/api/context/current").then(v=>v.json());if(!O.conversationId)return;o(O.conversationId);const y=20,I=await Ge(`/api/conversations/${O.conversationId}/messages?limit=${y}`);if(!I.ok)return;const C=await I.json();if(!C?.length)return;const M=C.filter(v=>v.role==="user"||v.role==="assistant");a(M.map(A)),m(C.length>=y)}catch{}},[A]),x=D.useCallback(async()=>{if(!(_.current||!k.current)){_.current=!0;try{const O=r[0]?.id;if(!O)return;const y=20,I=await Ge(`/api/conversations/${k.current}/messages?before=${O}&limit=${y}`);if(!I.ok)return;const C=await I.json();if(!C?.length){m(!1);return}const M=C.filter(v=>v.role==="user"||v.role==="assistant").map(A);a(v=>[...M,...v]),C.length<y&&m(!1)}catch{}finally{_.current=!1}}},[r,A]);D.useEffect(()=>{!n||w.current||(w.current=!0,N())},[n,N]),D.useEffect(()=>{n&&t&&t>0&&N()},[n,t,N]),D.useEffect(()=>{if(!n||!t||t===0||!s)return;const O=setInterval(()=>{if(!E.current){clearInterval(O);return}N()},3e3);return()=>clearInterval(O)},[n,t,s,N]),D.useEffect(()=>{if(!e)return;const O=[e.on("bot:typing",()=>{l(!0),p([])}),e.on("bot:token",y=>{d(I=>I+y.token)}),e.on("bot:tool",y=>{p(I=>I.find(M=>M.name===y.name&&M.status==="running")?I:[...I,{name:y.name,status:"running"}])}),e.on("bot:response",y=>{o(y.conversationId),a(I=>[...I,{id:y.messageId||Date.now().toString(),role:"assistant",content:y.content,timestamp:new Date().toISOString()}]),d(""),l(!1),p([])}),e.on("bot:error",y=>{d(""),l(!1),p([]),a(I=>[...I,{id:Date.now().toString(),role:"assistant",content:`Error: ${y.error}`,timestamp:new Date().toISOString()}])}),e.on("chat:sync",y=>{k.current&&y.conversationId!==k.current||a(I=>[...I,{id:Date.now().toString(),role:y.message.role,content:y.message.content,timestamp:y.message.timestamp}])}),e.on("chat:conversation-created",y=>{o(y.conversationId)}),e.on("chat:state",y=>{y.streaming&&(l(!0),y.conversationId&&o(y.conversationId),y.buffer&&d(y.buffer))}),e.on("chat:cleared",()=>{a([]),o(null),d(""),l(!1),p([]),w.current=!1})];return()=>O.forEach(y=>y())},[e]);const T=D.useCallback((O,y,I)=>{if(!e||!O.trim()&&(!y||y.length===0))return;const C={id:Date.now().toString(),role:"user",content:O,timestamp:new Date().toISOString(),hasAttachments:!!(y&&y.length>0),audioData:I?I.startsWith("data:")?I:`data:audio/webm;base64,${I}`:void 0};a(v=>[...v,C]);const M={conversationId:i,content:O};I&&(M.audioData=I.includes(",")?I.split(",")[1]:I),y?.length&&(M.attachments=y.map(v=>{const L=v.preview.match(/^data:([^;]+);base64,(.+)$/);return{type:v.type,name:v.name,mediaType:L?.[1]||"application/octet-stream",data:L?.[2]||""}})),e.send("user:message",M)},[e,i]),U=D.useCallback(()=>{e&&(e.send("user:stop",{conversationId:i}),l(!1),d(""),p([]))},[e,i]),P=D.useCallback(()=>{e&&e.send("user:clear-context",{}),a([]),o(null),d(""),l(!1),p([]),w.current=!1},[e]);return{messages:r,streaming:s,streamBuffer:u,conversationId:i,tools:c,hasMore:g,loadOlder:x,sendMessage:T,stopStreaming:U,clearContext:P}}function Dd({onLogin:e}){const[t,n]=D.useState(""),[r,a]=D.useState(""),[i,o]=D.useState(!1),s=async()=>{if(!(!t.trim()||i)){o(!0),a("");try{const d=btoa(`admin:${t}`),c=await fetch("/api/portal/login",{headers:{Authorization:`Basic ${d}`}}),p=await c.json();c.ok&&p.token?e(p.token):a(p.error||"Invalid password")}catch{a("Could not reach server")}finally{o(!1)}}},l=d=>{d.key==="Enter"&&s()};return S.jsx("div",{className:"flex flex-col items-center justify-center h-dvh px-6",children:S.jsxs("div",{className:"w-full max-w-[320px] flex flex-col items-center",children:[S.jsx("div",{className:"w-14 h-14 rounded-2xl bg-white/[0.04] border border-white/[0.08] flex items-center justify-center mb-5",children:S.jsx(md,{className:"h-6 w-6 text-white/40"})}),S.jsx("h1",{className:"text-xl font-bold text-white tracking-tight mb-1",children:"Welcome back"}),S.jsx("p",{className:"text-white/40 text-[13px] mb-6",children:"Enter your password to continue."}),r&&S.jsx("div",{className:"w-full bg-red-500/8 border border-red-500/15 rounded-xl px-4 py-2.5 mb-4",children:S.jsx("p",{className:"text-red-400/90 text-[12px]",children:r})}),S.jsx("input",{type:"password",value:t,onChange:d=>n(d.target.value),onKeyDown:l,placeholder:"Password",autoFocus:!0,autoComplete:"current-password",className:"w-full bg-white/[0.05] border border-white/[0.08] text-white rounded-xl px-4 py-3 text-base outline-none input-glow placeholder:text-white/20 transition-all"}),S.jsx("button",{onClick:s,disabled:!t.trim()||i,className:"w-full mt-4 py-3 bg-gradient-brand hover:opacity-90 text-white text-[14px] font-semibold rounded-full transition-colors flex items-center justify-center gap-2 disabled:opacity-40",children:i?S.jsxs(S.Fragment,{children:[S.jsx(jc,{className:"h-4 w-4 animate-spin"}),"Signing in..."]}):S.jsxs(S.Fragment,{children:["Sign In",S.jsx(Hc,{className:"h-4 w-4"})]})})]})})}function bl(e){const t=[],n=String(e||"");let r=n.indexOf(","),a=0,i=!1;for(;!i;){r===-1&&(r=n.length,i=!0);const o=n.slice(a,r).trim();(o||!i)&&t.push(o),a=r+1,r=n.indexOf(",",a)}return t}function Md(e,t){const n={};return(e[e.length-1]===""?[...e,""]:e).join((n.padRight?" ":"")+","+(n.padLeft===!1?"":" ")).trim()}const Fd=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,Ud=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,Bd={};function hl(e,t){return(Bd.jsx?Ud:Fd).test(e)}const Pd=/[ \t\n\f\r]/g;function $d(e){return typeof e=="object"?e.type==="text"?El(e.value):!1:El(e)}function El(e){return e.replace(Pd,"")===""}class kt{constructor(t,n,r){this.normal=n,this.property=t,r&&(this.space=r)}}kt.prototype.normal={};kt.prototype.property={};kt.prototype.space=void 0;function yu(e,t){const n={},r={};for(const a of e)Object.assign(n,a.property),Object.assign(r,a.normal);return new kt(n,r,t)}function ht(e){return e.toLowerCase()}class Se{constructor(t,n){this.attribute=n,this.property=t}}Se.prototype.attribute="";Se.prototype.booleanish=!1;Se.prototype.boolean=!1;Se.prototype.commaOrSpaceSeparated=!1;Se.prototype.commaSeparated=!1;Se.prototype.defined=!1;Se.prototype.mustUseProperty=!1;Se.prototype.number=!1;Se.prototype.overloadedBoolean=!1;Se.prototype.property="";Se.prototype.spaceSeparated=!1;Se.prototype.space=void 0;let zd=0;const q=He(),ce=He(),vn=He(),F=He(),se=He(),Ze=He(),ke=He();function He(){return 2**++zd}const Cn=Object.freeze(Object.defineProperty({__proto__:null,boolean:q,booleanish:ce,commaOrSpaceSeparated:ke,commaSeparated:Ze,number:F,overloadedBoolean:vn,spaceSeparated:se},Symbol.toStringTag,{value:"Module"})),sn=Object.keys(Cn);class Yn extends Se{constructor(t,n,r,a){let i=-1;if(super(t,n),yl(this,"space",a),typeof r=="number")for(;++i<sn.length;){const o=sn[i];yl(this,sn[i],(r&Cn[o])===Cn[o])}}}Yn.prototype.defined=!0;function yl(e,t,n){n&&(e[t]=n)}function Je(e){const t={},n={};for(const[r,a]of Object.entries(e.properties)){const i=new Yn(r,e.transform(e.attributes||{},r),a,e.space);e.mustUseProperty&&e.mustUseProperty.includes(r)&&(i.mustUseProperty=!0),t[r]=i,n[ht(r)]=r,n[ht(i.attribute)]=r}return new kt(t,n,e.space)}const Su=Je({properties:{ariaActiveDescendant:null,ariaAtomic:ce,ariaAutoComplete:null,ariaBusy:ce,ariaChecked:ce,ariaColCount:F,ariaColIndex:F,ariaColSpan:F,ariaControls:se,ariaCurrent:null,ariaDescribedBy:se,ariaDetails:null,ariaDisabled:ce,ariaDropEffect:se,ariaErrorMessage:null,ariaExpanded:ce,ariaFlowTo:se,ariaGrabbed:ce,ariaHasPopup:null,ariaHidden:ce,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:se,ariaLevel:F,ariaLive:null,ariaModal:ce,ariaMultiLine:ce,ariaMultiSelectable:ce,ariaOrientation:null,ariaOwns:se,ariaPlaceholder:null,ariaPosInSet:F,ariaPressed:ce,ariaReadOnly:ce,ariaRelevant:null,ariaRequired:ce,ariaRoleDescription:se,ariaRowCount:F,ariaRowIndex:F,ariaRowSpan:F,ariaSelected:ce,ariaSetSize:F,ariaSort:null,ariaValueMax:F,ariaValueMin:F,ariaValueNow:F,ariaValueText:null,role:null},transform(e,t){return t==="role"?t:"aria-"+t.slice(4).toLowerCase()}});function wu(e,t){return t in e?e[t]:t}function ku(e,t){return wu(e,t.toLowerCase())}const Gd=Je({attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:Ze,acceptCharset:se,accessKey:se,action:null,allow:null,allowFullScreen:q,allowPaymentRequest:q,allowUserMedia:q,alt:null,as:null,async:q,autoCapitalize:null,autoComplete:se,autoFocus:q,autoPlay:q,blocking:se,capture:null,charSet:null,checked:q,cite:null,className:se,cols:F,colSpan:null,content:null,contentEditable:ce,controls:q,controlsList:se,coords:F|Ze,crossOrigin:null,data:null,dateTime:null,decoding:null,default:q,defer:q,dir:null,dirName:null,disabled:q,download:vn,draggable:ce,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:q,formTarget:null,headers:se,height:F,hidden:vn,high:F,href:null,hrefLang:null,htmlFor:se,httpEquiv:se,id:null,imageSizes:null,imageSrcSet:null,inert:q,inputMode:null,integrity:null,is:null,isMap:q,itemId:null,itemProp:se,itemRef:se,itemScope:q,itemType:se,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:q,low:F,manifest:null,max:null,maxLength:F,media:null,method:null,min:null,minLength:F,multiple:q,muted:q,name:null,nonce:null,noModule:q,noValidate:q,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:q,optimum:F,pattern:null,ping:se,placeholder:null,playsInline:q,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:q,referrerPolicy:null,rel:se,required:q,reversed:q,rows:F,rowSpan:F,sandbox:se,scope:null,scoped:q,seamless:q,selected:q,shadowRootClonable:q,shadowRootDelegatesFocus:q,shadowRootMode:null,shape:null,size:F,sizes:null,slot:null,span:F,spellCheck:ce,src:null,srcDoc:null,srcLang:null,srcSet:null,start:F,step:null,style:null,tabIndex:F,target:null,title:null,translate:null,type:null,typeMustMatch:q,useMap:null,value:ce,width:F,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:se,axis:null,background:null,bgColor:null,border:F,borderColor:null,bottomMargin:F,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:q,declare:q,event:null,face:null,frame:null,frameBorder:null,hSpace:F,leftMargin:F,link:null,longDesc:null,lowSrc:null,marginHeight:F,marginWidth:F,noResize:q,noHref:q,noShade:q,noWrap:q,object:null,profile:null,prompt:null,rev:null,rightMargin:F,rules:null,scheme:null,scrolling:ce,standby:null,summary:null,text:null,topMargin:F,valueType:null,version:null,vAlign:null,vLink:null,vSpace:F,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:q,disableRemotePlayback:q,prefix:null,property:null,results:F,security:null,unselectable:null},space:"html",transform:ku}),jd=Je({attributes:{accentHeight:"accent-height",alignmentBaseline:"alignment-baseline",arabicForm:"arabic-form",baselineShift:"baseline-shift",capHeight:"cap-height",className:"class",clipPath:"clip-path",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",crossOrigin:"crossorigin",dataType:"datatype",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",floodColor:"flood-color",floodOpacity:"flood-opacity",fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",hrefLang:"hreflang",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",imageRendering:"image-rendering",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",navDown:"nav-down",navDownLeft:"nav-down-left",navDownRight:"nav-down-right",navLeft:"nav-left",navNext:"nav-next",navPrev:"nav-prev",navRight:"nav-right",navUp:"nav-up",navUpLeft:"nav-up-left",navUpRight:"nav-up-right",onAbort:"onabort",onActivate:"onactivate",onAfterPrint:"onafterprint",onBeforePrint:"onbeforeprint",onBegin:"onbegin",onCancel:"oncancel",onCanPlay:"oncanplay",onCanPlayThrough:"oncanplaythrough",onChange:"onchange",onClick:"onclick",onClose:"onclose",onCopy:"oncopy",onCueChange:"oncuechange",onCut:"oncut",onDblClick:"ondblclick",onDrag:"ondrag",onDragEnd:"ondragend",onDragEnter:"ondragenter",onDragExit:"ondragexit",onDragLeave:"ondragleave",onDragOver:"ondragover",onDragStart:"ondragstart",onDrop:"ondrop",onDurationChange:"ondurationchange",onEmptied:"onemptied",onEnd:"onend",onEnded:"onended",onError:"onerror",onFocus:"onfocus",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onHashChange:"onhashchange",onInput:"oninput",onInvalid:"oninvalid",onKeyDown:"onkeydown",onKeyPress:"onkeypress",onKeyUp:"onkeyup",onLoad:"onload",onLoadedData:"onloadeddata",onLoadedMetadata:"onloadedmetadata",onLoadStart:"onloadstart",onMessage:"onmessage",onMouseDown:"onmousedown",onMouseEnter:"onmouseenter",onMouseLeave:"onmouseleave",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onMouseWheel:"onmousewheel",onOffline:"onoffline",onOnline:"ononline",onPageHide:"onpagehide",onPageShow:"onpageshow",onPaste:"onpaste",onPause:"onpause",onPlay:"onplay",onPlaying:"onplaying",onPopState:"onpopstate",onProgress:"onprogress",onRateChange:"onratechange",onRepeat:"onrepeat",onReset:"onreset",onResize:"onresize",onScroll:"onscroll",onSeeked:"onseeked",onSeeking:"onseeking",onSelect:"onselect",onShow:"onshow",onStalled:"onstalled",onStorage:"onstorage",onSubmit:"onsubmit",onSuspend:"onsuspend",onTimeUpdate:"ontimeupdate",onToggle:"ontoggle",onUnload:"onunload",onVolumeChange:"onvolumechange",onWaiting:"onwaiting",onZoom:"onzoom",overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pointerEvents:"pointer-events",referrerPolicy:"referrerpolicy",renderingIntent:"rendering-intent",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",strokeDashArray:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeLineCap:"stroke-linecap",strokeLineJoin:"stroke-linejoin",strokeMiterLimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",tabIndex:"tabindex",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",transformOrigin:"transform-origin",typeOf:"typeof",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",vectorEffect:"vector-effect",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",wordSpacing:"word-spacing",writingMode:"writing-mode",xHeight:"x-height",playbackOrder:"playbackorder",timelineBegin:"timelinebegin"},properties:{about:ke,accentHeight:F,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:F,amplitude:F,arabicForm:null,ascent:F,attributeName:null,attributeType:null,azimuth:F,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:F,by:null,calcMode:null,capHeight:F,className:se,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:F,diffuseConstant:F,direction:null,display:null,dur:null,divisor:F,dominantBaseline:null,download:q,dx:null,dy:null,edgeMode:null,editable:null,elevation:F,enableBackground:null,end:null,event:null,exponent:F,externalResourcesRequired:null,fill:null,fillOpacity:F,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:Ze,g2:Ze,glyphName:Ze,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:F,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:F,horizOriginX:F,horizOriginY:F,id:null,ideographic:F,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:F,k:F,k1:F,k2:F,k3:F,k4:F,kernelMatrix:ke,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:F,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:F,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:F,overlineThickness:F,paintOrder:null,panose1:null,path:null,pathLength:F,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:se,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:F,pointsAtY:F,pointsAtZ:F,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:ke,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:ke,rev:ke,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:ke,requiredFeatures:ke,requiredFonts:ke,requiredFormats:ke,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:F,specularExponent:F,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:F,strikethroughThickness:F,string:null,stroke:null,strokeDashArray:ke,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:F,strokeOpacity:F,strokeWidth:null,style:null,surfaceScale:F,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:ke,tabIndex:F,tableValues:null,target:null,targetX:F,targetY:F,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:ke,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:F,underlineThickness:F,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:F,values:null,vAlphabetic:F,vMathematical:F,vectorEffect:null,vHanging:F,vIdeographic:F,version:null,vertAdvY:F,vertOriginX:F,vertOriginY:F,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:F,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:"svg",transform:wu}),Tu=Je({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null},space:"xlink",transform(e,t){return"xlink:"+t.slice(5).toLowerCase()}}),Au=Je({attributes:{xmlnsxlink:"xmlns:xlink"},properties:{xmlnsXLink:null,xmlns:null},space:"xmlns",transform:ku}),_u=Je({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:"xml",transform(e,t){return"xml:"+t.slice(3).toLowerCase()}}),Hd={classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink"},Vd=/[A-Z]/g,Sl=/-[a-z]/g,Wd=/^data[-\w.:]+$/i;function Iu(e,t){const n=ht(t);let r=t,a=Se;if(n in e.normal)return e.property[e.normal[n]];if(n.length>4&&n.slice(0,4)==="data"&&Wd.test(t)){if(t.charAt(4)==="-"){const i=t.slice(5).replace(Sl,Yd);r="data"+i.charAt(0).toUpperCase()+i.slice(1)}else{const i=t.slice(4);if(!Sl.test(i)){let o=i.replace(Vd,qd);o.charAt(0)!=="-"&&(o="-"+o),t="data"+o}}a=Yn}return new a(r,t)}function qd(e){return"-"+e.toLowerCase()}function Yd(e){return e.charAt(1).toUpperCase()}const Nu=yu([Su,Gd,Tu,Au,_u],"html"),Vt=yu([Su,jd,Tu,Au,_u],"svg");function wl(e){const t=String(e||"").trim();return t?t.split(/[ \t\n\r\f]+/g):[]}function Kd(e){return e.join(" ").trim()}var qe={},ln,kl;function Xd(){if(kl)return ln;kl=1;var e=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,t=/\n/g,n=/^\s*/,r=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,a=/^:\s*/,i=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,o=/^[;\s]*/,s=/^\s+|\s+$/g,l=`
1
+ import{c as de,r as D,j as S,L as jc,A as Hc,g as mu,R as Oe,C as Vc,a as Nn,m as Ut,M as ml,b as Wc,O as qc}from"./globals-DeTPUfgM.js";const Yc=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],Kc=de("arrow-left",Yc);const Xc=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M17 17H4a1 1 0 0 1-.74-1.673C4.59 13.956 6 12.499 6 8a6 6 0 0 1 .258-1.742",key:"178tsu"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M8.668 3.01A6 6 0 0 1 18 8c0 2.687.77 4.653 1.707 6.05",key:"1hqiys"}]],Zc=de("bell-off",Xc);const Qc=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M22 8c0-2.3-.8-4.3-2-6",key:"5bb3ad"}],["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"}],["path",{d:"M4 2C2.8 3.7 2 5.7 2 8",key:"tap9e0"}]],Jc=de("bell-ring",Qc);const ed=[["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"}]],td=de("bell",ed);const nd=[["path",{d:"M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z",key:"18u6gg"}],["circle",{cx:"12",cy:"13",r:"3",key:"1vg3eu"}]],rd=de("camera",nd);const ad=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],id=de("chevron-left",ad);const od=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],sd=de("chevron-right",od);const ld=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],ud=de("copy",ld);const cd=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],dd=de("download",cd);const pd=[["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"}]],gd=de("ellipsis-vertical",pd);const fd=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],md=de("lock",fd);const bd=[["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551",key:"1miecu"}]],Rn=de("paperclip",bd);const hd=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]],Ed=de("pause",hd);const yd=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],Sd=de("play",yd);const wd=[["path",{d:"M3.714 3.048a.498.498 0 0 0-.683.627l2.843 7.627a2 2 0 0 1 0 1.396l-2.842 7.627a.498.498 0 0 0 .682.627l18-8.5a.5.5 0 0 0 0-.904z",key:"117uat"}],["path",{d:"M6 12h16",key:"s4cdu5"}]],kd=de("send-horizontal",wd);const Td=[["path",{d:"M12 2v13",key:"1km8f5"}],["path",{d:"m16 6-4-4-4 4",key:"13yo43"}],["path",{d:"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8",key:"1b2hhj"}]],Ad=de("share",Td);const _d=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]],Id=de("square",_d);const Nd=[["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"}]],bu=de("trash-2",Nd);const Rd=[["path",{d:"m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72",key:"ul74o6"}],["path",{d:"m14 7 3 3",key:"1r5n42"}],["path",{d:"M5 6v4",key:"ilb8ba"}],["path",{d:"M19 14v4",key:"blhpug"}],["path",{d:"M10 2v2",key:"7u0qdc"}],["path",{d:"M7 8H3",key:"zfb6yr"}],["path",{d:"M21 16h-4",key:"1cnmox"}],["path",{d:"M11 3H9",key:"1obp7u"}]],xd=de("wand-sparkles",Rd);const vd=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Vn=de("x",vd);class Wn{ws=null;handlers=new Map;statusHandlers=new Set;reconnectTimer=null;heartbeatTimer=null;url;queue=[];intentionalClose=!1;reconnectDelay=1e3;static MAX_RECONNECT_DELAY=8e3;tokenGetter=null;constructor(t,n){const r=location.protocol==="https:"?"wss:":"ws:",a=location.host;this.url=t??`${r}//${a}/ws`,this.tokenGetter=n??null}connect(){this.intentionalClose=!1;let t=this.url;if(this.tokenGetter){const n=this.tokenGetter();if(n){const r=t.includes("?")?"&":"?";t=`${t}${r}token=${n}`}}this.ws=new WebSocket(t),this.ws.onopen=()=>{this.reconnectDelay=1e3,this.notifyStatus(!0),this.flushQueue(),this.startHeartbeat()},this.ws.onmessage=n=>{if(n.data==="pong")return;const r=JSON.parse(n.data);this.handlers.get(r.type)?.forEach(i=>i(r.data))},this.ws.onclose=()=>{this.stopHeartbeat(),this.notifyStatus(!1),this.intentionalClose||(this.reconnectTimer=setTimeout(()=>{this.reconnectDelay=Math.min(this.reconnectDelay*2,Wn.MAX_RECONNECT_DELAY),this.connect()},this.reconnectDelay))},this.ws.onerror=()=>this.ws?.close()}disconnect(){this.intentionalClose=!0,this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.stopHeartbeat(),this.ws?.close(),this.ws=null}on(t,n){return this.handlers.has(t)||this.handlers.set(t,new Set),this.handlers.get(t).add(n),()=>this.handlers.get(t)?.delete(n)}onStatus(t){return this.statusHandlers.add(t),()=>this.statusHandlers.delete(t)}send(t,n){const r={type:t,data:n};this.ws?.readyState===WebSocket.OPEN?this.ws.send(JSON.stringify(r)):this.queue.push(r)}get connected(){return this.ws?.readyState===WebSocket.OPEN}flushQueue(){for(;this.queue.length>0&&this.ws?.readyState===WebSocket.OPEN;){const t=this.queue.shift();this.ws.send(JSON.stringify(t))}}notifyStatus(t){this.statusHandlers.forEach(n=>n(t))}startHeartbeat(){this.stopHeartbeat(),this.heartbeatTimer=setInterval(()=>{this.ws?.readyState===WebSocket.OPEN&&this.ws.send("ping")},25e3)}stopHeartbeat(){this.heartbeatTimer&&(clearInterval(this.heartbeatTimer),this.heartbeatTimer=null)}}const qn="fluxy_token";let hu=null;function xn(){return localStorage.getItem(qn)}function Cd(e){localStorage.setItem(qn,e)}function Eu(){localStorage.removeItem(qn)}function Od(e){hu=e}async function Ge(e,t={}){const n=xn(),r=new Headers(t.headers);n&&r.set("Authorization",`Bearer ${n}`);const a=await fetch(e,{...t,headers:r});return a.status===401&&n&&(Eu(),hu?.()),a}function Ld(e,t,n=!0){const[r,a]=D.useState([]),[i,o]=D.useState(null),[s,l]=D.useState(!1),[u,d]=D.useState(""),[c,p]=D.useState([]),[g,m]=D.useState(!1),w=D.useRef(!1),k=D.useRef(null),E=D.useRef(!1),_=D.useRef(!1);D.useEffect(()=>{k.current=i},[i]),D.useEffect(()=>{E.current=s},[s]);const A=D.useCallback(O=>{let y;O.audio_data&&(O.audio_data.startsWith("data:")?y=O.audio_data:O.audio_data.includes("/")?y=`/api/files/${O.audio_data}`:y=`data:audio/webm;base64,${O.audio_data}`);let I;if(O.attachments)try{I=JSON.parse(O.attachments)}catch{}return{id:O.id,role:O.role,content:O.content,timestamp:O.created_at,audioData:y,hasAttachments:!!(I&&I.length>0),attachments:I}},[]),N=D.useCallback(async()=>{try{const O=await Ge("/api/context/current").then(v=>v.json());if(!O.conversationId)return;o(O.conversationId);const y=20,I=await Ge(`/api/conversations/${O.conversationId}/messages?limit=${y}`);if(!I.ok)return;const C=await I.json();if(!C?.length)return;const M=C.filter(v=>v.role==="user"||v.role==="assistant");a(M.map(A)),m(C.length>=y)}catch{}},[A]),x=D.useCallback(async()=>{if(!(_.current||!k.current)){_.current=!0;try{const O=r[0]?.id;if(!O)return;const y=20,I=await Ge(`/api/conversations/${k.current}/messages?before=${O}&limit=${y}`);if(!I.ok)return;const C=await I.json();if(!C?.length){m(!1);return}const M=C.filter(v=>v.role==="user"||v.role==="assistant").map(A);a(v=>[...M,...v]),C.length<y&&m(!1)}catch{}finally{_.current=!1}}},[r,A]);D.useEffect(()=>{!n||w.current||(w.current=!0,N())},[n,N]),D.useEffect(()=>{n&&t&&t>0&&N()},[n,t,N]),D.useEffect(()=>{if(!n||!t||t===0||!s)return;const O=setInterval(()=>{if(!E.current){clearInterval(O);return}N()},3e3);return()=>clearInterval(O)},[n,t,s,N]),D.useEffect(()=>{if(!e)return;const O=[e.on("bot:typing",()=>{l(!0),p([])}),e.on("bot:token",y=>{d(I=>I+y.token)}),e.on("bot:tool",y=>{p(I=>I.find(M=>M.name===y.name&&M.status==="running")?I:[...I,{name:y.name,status:"running"}])}),e.on("bot:response",y=>{o(y.conversationId),a(I=>[...I,{id:y.messageId||Date.now().toString(),role:"assistant",content:y.content,timestamp:new Date().toISOString()}]),d(""),l(!1),p([])}),e.on("bot:error",y=>{d(""),l(!1),p([]),a(I=>[...I,{id:Date.now().toString(),role:"assistant",content:`Error: ${y.error}`,timestamp:new Date().toISOString()}])}),e.on("chat:sync",y=>{k.current&&y.conversationId!==k.current||a(I=>[...I,{id:Date.now().toString(),role:y.message.role,content:y.message.content,timestamp:y.message.timestamp}])}),e.on("chat:conversation-created",y=>{o(y.conversationId)}),e.on("chat:state",y=>{y.streaming&&(l(!0),y.conversationId&&o(y.conversationId),y.buffer&&d(y.buffer))}),e.on("chat:cleared",()=>{a([]),o(null),d(""),l(!1),p([]),w.current=!1})];return()=>O.forEach(y=>y())},[e]);const T=D.useCallback((O,y,I)=>{if(!e||!O.trim()&&(!y||y.length===0))return;const C={id:Date.now().toString(),role:"user",content:O,timestamp:new Date().toISOString(),hasAttachments:!!(y&&y.length>0),audioData:I?I.startsWith("data:")?I:`data:audio/webm;base64,${I}`:void 0};a(v=>[...v,C]);const M={conversationId:i,content:O};I&&(M.audioData=I.includes(",")?I.split(",")[1]:I),y?.length&&(M.attachments=y.map(v=>{const L=v.preview.match(/^data:([^;]+);base64,(.+)$/);return{type:v.type,name:v.name,mediaType:L?.[1]||"application/octet-stream",data:L?.[2]||""}})),e.send("user:message",M)},[e,i]),U=D.useCallback(()=>{e&&(e.send("user:stop",{conversationId:i}),l(!1),d(""),p([]))},[e,i]),P=D.useCallback(()=>{e&&e.send("user:clear-context",{}),a([]),o(null),d(""),l(!1),p([]),w.current=!1},[e]);return{messages:r,streaming:s,streamBuffer:u,conversationId:i,tools:c,hasMore:g,loadOlder:x,sendMessage:T,stopStreaming:U,clearContext:P}}function Dd({onLogin:e}){const[t,n]=D.useState(""),[r,a]=D.useState(""),[i,o]=D.useState(!1),s=async()=>{if(!(!t.trim()||i)){o(!0),a("");try{const d=btoa(`admin:${t}`),c=await fetch("/api/portal/login",{headers:{Authorization:`Basic ${d}`}}),p=await c.json();c.ok&&p.token?e(p.token):a(p.error||"Invalid password")}catch{a("Could not reach server")}finally{o(!1)}}},l=d=>{d.key==="Enter"&&s()};return S.jsx("div",{className:"flex flex-col items-center justify-center h-dvh px-6",children:S.jsxs("div",{className:"w-full max-w-[320px] flex flex-col items-center",children:[S.jsx("div",{className:"w-14 h-14 rounded-2xl bg-white/[0.04] border border-white/[0.08] flex items-center justify-center mb-5",children:S.jsx(md,{className:"h-6 w-6 text-white/40"})}),S.jsx("h1",{className:"text-xl font-bold text-white tracking-tight mb-1",children:"Welcome back"}),S.jsx("p",{className:"text-white/40 text-[13px] mb-6",children:"Enter your password to continue."}),r&&S.jsx("div",{className:"w-full bg-red-500/8 border border-red-500/15 rounded-xl px-4 py-2.5 mb-4",children:S.jsx("p",{className:"text-red-400/90 text-[12px]",children:r})}),S.jsx("input",{type:"password",value:t,onChange:d=>n(d.target.value),onKeyDown:l,placeholder:"Password",autoFocus:!0,autoComplete:"current-password",className:"w-full bg-white/[0.05] border border-white/[0.08] text-white rounded-xl px-4 py-3 text-base outline-none input-glow placeholder:text-white/20 transition-all"}),S.jsx("button",{onClick:s,disabled:!t.trim()||i,className:"w-full mt-4 py-3 bg-gradient-brand hover:opacity-90 text-white text-[14px] font-semibold rounded-full transition-colors flex items-center justify-center gap-2 disabled:opacity-40",children:i?S.jsxs(S.Fragment,{children:[S.jsx(jc,{className:"h-4 w-4 animate-spin"}),"Signing in..."]}):S.jsxs(S.Fragment,{children:["Sign In",S.jsx(Hc,{className:"h-4 w-4"})]})})]})})}function bl(e){const t=[],n=String(e||"");let r=n.indexOf(","),a=0,i=!1;for(;!i;){r===-1&&(r=n.length,i=!0);const o=n.slice(a,r).trim();(o||!i)&&t.push(o),a=r+1,r=n.indexOf(",",a)}return t}function Md(e,t){const n={};return(e[e.length-1]===""?[...e,""]:e).join((n.padRight?" ":"")+","+(n.padLeft===!1?"":" ")).trim()}const Fd=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,Ud=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,Bd={};function hl(e,t){return(Bd.jsx?Ud:Fd).test(e)}const Pd=/[ \t\n\f\r]/g;function $d(e){return typeof e=="object"?e.type==="text"?El(e.value):!1:El(e)}function El(e){return e.replace(Pd,"")===""}class kt{constructor(t,n,r){this.normal=n,this.property=t,r&&(this.space=r)}}kt.prototype.normal={};kt.prototype.property={};kt.prototype.space=void 0;function yu(e,t){const n={},r={};for(const a of e)Object.assign(n,a.property),Object.assign(r,a.normal);return new kt(n,r,t)}function ht(e){return e.toLowerCase()}class Se{constructor(t,n){this.attribute=n,this.property=t}}Se.prototype.attribute="";Se.prototype.booleanish=!1;Se.prototype.boolean=!1;Se.prototype.commaOrSpaceSeparated=!1;Se.prototype.commaSeparated=!1;Se.prototype.defined=!1;Se.prototype.mustUseProperty=!1;Se.prototype.number=!1;Se.prototype.overloadedBoolean=!1;Se.prototype.property="";Se.prototype.spaceSeparated=!1;Se.prototype.space=void 0;let zd=0;const q=He(),ce=He(),vn=He(),F=He(),se=He(),Ze=He(),ke=He();function He(){return 2**++zd}const Cn=Object.freeze(Object.defineProperty({__proto__:null,boolean:q,booleanish:ce,commaOrSpaceSeparated:ke,commaSeparated:Ze,number:F,overloadedBoolean:vn,spaceSeparated:se},Symbol.toStringTag,{value:"Module"})),sn=Object.keys(Cn);class Yn extends Se{constructor(t,n,r,a){let i=-1;if(super(t,n),yl(this,"space",a),typeof r=="number")for(;++i<sn.length;){const o=sn[i];yl(this,sn[i],(r&Cn[o])===Cn[o])}}}Yn.prototype.defined=!0;function yl(e,t,n){n&&(e[t]=n)}function Je(e){const t={},n={};for(const[r,a]of Object.entries(e.properties)){const i=new Yn(r,e.transform(e.attributes||{},r),a,e.space);e.mustUseProperty&&e.mustUseProperty.includes(r)&&(i.mustUseProperty=!0),t[r]=i,n[ht(r)]=r,n[ht(i.attribute)]=r}return new kt(t,n,e.space)}const Su=Je({properties:{ariaActiveDescendant:null,ariaAtomic:ce,ariaAutoComplete:null,ariaBusy:ce,ariaChecked:ce,ariaColCount:F,ariaColIndex:F,ariaColSpan:F,ariaControls:se,ariaCurrent:null,ariaDescribedBy:se,ariaDetails:null,ariaDisabled:ce,ariaDropEffect:se,ariaErrorMessage:null,ariaExpanded:ce,ariaFlowTo:se,ariaGrabbed:ce,ariaHasPopup:null,ariaHidden:ce,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:se,ariaLevel:F,ariaLive:null,ariaModal:ce,ariaMultiLine:ce,ariaMultiSelectable:ce,ariaOrientation:null,ariaOwns:se,ariaPlaceholder:null,ariaPosInSet:F,ariaPressed:ce,ariaReadOnly:ce,ariaRelevant:null,ariaRequired:ce,ariaRoleDescription:se,ariaRowCount:F,ariaRowIndex:F,ariaRowSpan:F,ariaSelected:ce,ariaSetSize:F,ariaSort:null,ariaValueMax:F,ariaValueMin:F,ariaValueNow:F,ariaValueText:null,role:null},transform(e,t){return t==="role"?t:"aria-"+t.slice(4).toLowerCase()}});function wu(e,t){return t in e?e[t]:t}function ku(e,t){return wu(e,t.toLowerCase())}const Gd=Je({attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:Ze,acceptCharset:se,accessKey:se,action:null,allow:null,allowFullScreen:q,allowPaymentRequest:q,allowUserMedia:q,alt:null,as:null,async:q,autoCapitalize:null,autoComplete:se,autoFocus:q,autoPlay:q,blocking:se,capture:null,charSet:null,checked:q,cite:null,className:se,cols:F,colSpan:null,content:null,contentEditable:ce,controls:q,controlsList:se,coords:F|Ze,crossOrigin:null,data:null,dateTime:null,decoding:null,default:q,defer:q,dir:null,dirName:null,disabled:q,download:vn,draggable:ce,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:q,formTarget:null,headers:se,height:F,hidden:vn,high:F,href:null,hrefLang:null,htmlFor:se,httpEquiv:se,id:null,imageSizes:null,imageSrcSet:null,inert:q,inputMode:null,integrity:null,is:null,isMap:q,itemId:null,itemProp:se,itemRef:se,itemScope:q,itemType:se,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:q,low:F,manifest:null,max:null,maxLength:F,media:null,method:null,min:null,minLength:F,multiple:q,muted:q,name:null,nonce:null,noModule:q,noValidate:q,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:q,optimum:F,pattern:null,ping:se,placeholder:null,playsInline:q,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:q,referrerPolicy:null,rel:se,required:q,reversed:q,rows:F,rowSpan:F,sandbox:se,scope:null,scoped:q,seamless:q,selected:q,shadowRootClonable:q,shadowRootDelegatesFocus:q,shadowRootMode:null,shape:null,size:F,sizes:null,slot:null,span:F,spellCheck:ce,src:null,srcDoc:null,srcLang:null,srcSet:null,start:F,step:null,style:null,tabIndex:F,target:null,title:null,translate:null,type:null,typeMustMatch:q,useMap:null,value:ce,width:F,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:se,axis:null,background:null,bgColor:null,border:F,borderColor:null,bottomMargin:F,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:q,declare:q,event:null,face:null,frame:null,frameBorder:null,hSpace:F,leftMargin:F,link:null,longDesc:null,lowSrc:null,marginHeight:F,marginWidth:F,noResize:q,noHref:q,noShade:q,noWrap:q,object:null,profile:null,prompt:null,rev:null,rightMargin:F,rules:null,scheme:null,scrolling:ce,standby:null,summary:null,text:null,topMargin:F,valueType:null,version:null,vAlign:null,vLink:null,vSpace:F,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:q,disableRemotePlayback:q,prefix:null,property:null,results:F,security:null,unselectable:null},space:"html",transform:ku}),jd=Je({attributes:{accentHeight:"accent-height",alignmentBaseline:"alignment-baseline",arabicForm:"arabic-form",baselineShift:"baseline-shift",capHeight:"cap-height",className:"class",clipPath:"clip-path",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",crossOrigin:"crossorigin",dataType:"datatype",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",floodColor:"flood-color",floodOpacity:"flood-opacity",fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",hrefLang:"hreflang",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",imageRendering:"image-rendering",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",navDown:"nav-down",navDownLeft:"nav-down-left",navDownRight:"nav-down-right",navLeft:"nav-left",navNext:"nav-next",navPrev:"nav-prev",navRight:"nav-right",navUp:"nav-up",navUpLeft:"nav-up-left",navUpRight:"nav-up-right",onAbort:"onabort",onActivate:"onactivate",onAfterPrint:"onafterprint",onBeforePrint:"onbeforeprint",onBegin:"onbegin",onCancel:"oncancel",onCanPlay:"oncanplay",onCanPlayThrough:"oncanplaythrough",onChange:"onchange",onClick:"onclick",onClose:"onclose",onCopy:"oncopy",onCueChange:"oncuechange",onCut:"oncut",onDblClick:"ondblclick",onDrag:"ondrag",onDragEnd:"ondragend",onDragEnter:"ondragenter",onDragExit:"ondragexit",onDragLeave:"ondragleave",onDragOver:"ondragover",onDragStart:"ondragstart",onDrop:"ondrop",onDurationChange:"ondurationchange",onEmptied:"onemptied",onEnd:"onend",onEnded:"onended",onError:"onerror",onFocus:"onfocus",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onHashChange:"onhashchange",onInput:"oninput",onInvalid:"oninvalid",onKeyDown:"onkeydown",onKeyPress:"onkeypress",onKeyUp:"onkeyup",onLoad:"onload",onLoadedData:"onloadeddata",onLoadedMetadata:"onloadedmetadata",onLoadStart:"onloadstart",onMessage:"onmessage",onMouseDown:"onmousedown",onMouseEnter:"onmouseenter",onMouseLeave:"onmouseleave",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onMouseWheel:"onmousewheel",onOffline:"onoffline",onOnline:"ononline",onPageHide:"onpagehide",onPageShow:"onpageshow",onPaste:"onpaste",onPause:"onpause",onPlay:"onplay",onPlaying:"onplaying",onPopState:"onpopstate",onProgress:"onprogress",onRateChange:"onratechange",onRepeat:"onrepeat",onReset:"onreset",onResize:"onresize",onScroll:"onscroll",onSeeked:"onseeked",onSeeking:"onseeking",onSelect:"onselect",onShow:"onshow",onStalled:"onstalled",onStorage:"onstorage",onSubmit:"onsubmit",onSuspend:"onsuspend",onTimeUpdate:"ontimeupdate",onToggle:"ontoggle",onUnload:"onunload",onVolumeChange:"onvolumechange",onWaiting:"onwaiting",onZoom:"onzoom",overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pointerEvents:"pointer-events",referrerPolicy:"referrerpolicy",renderingIntent:"rendering-intent",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",strokeDashArray:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeLineCap:"stroke-linecap",strokeLineJoin:"stroke-linejoin",strokeMiterLimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",tabIndex:"tabindex",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",transformOrigin:"transform-origin",typeOf:"typeof",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",vectorEffect:"vector-effect",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",wordSpacing:"word-spacing",writingMode:"writing-mode",xHeight:"x-height",playbackOrder:"playbackorder",timelineBegin:"timelinebegin"},properties:{about:ke,accentHeight:F,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:F,amplitude:F,arabicForm:null,ascent:F,attributeName:null,attributeType:null,azimuth:F,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:F,by:null,calcMode:null,capHeight:F,className:se,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:F,diffuseConstant:F,direction:null,display:null,dur:null,divisor:F,dominantBaseline:null,download:q,dx:null,dy:null,edgeMode:null,editable:null,elevation:F,enableBackground:null,end:null,event:null,exponent:F,externalResourcesRequired:null,fill:null,fillOpacity:F,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:Ze,g2:Ze,glyphName:Ze,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:F,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:F,horizOriginX:F,horizOriginY:F,id:null,ideographic:F,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:F,k:F,k1:F,k2:F,k3:F,k4:F,kernelMatrix:ke,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:F,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:F,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:F,overlineThickness:F,paintOrder:null,panose1:null,path:null,pathLength:F,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:se,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:F,pointsAtY:F,pointsAtZ:F,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:ke,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:ke,rev:ke,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:ke,requiredFeatures:ke,requiredFonts:ke,requiredFormats:ke,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:F,specularExponent:F,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:F,strikethroughThickness:F,string:null,stroke:null,strokeDashArray:ke,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:F,strokeOpacity:F,strokeWidth:null,style:null,surfaceScale:F,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:ke,tabIndex:F,tableValues:null,target:null,targetX:F,targetY:F,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:ke,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:F,underlineThickness:F,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:F,values:null,vAlphabetic:F,vMathematical:F,vectorEffect:null,vHanging:F,vIdeographic:F,version:null,vertAdvY:F,vertOriginX:F,vertOriginY:F,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:F,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:"svg",transform:wu}),Tu=Je({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null},space:"xlink",transform(e,t){return"xlink:"+t.slice(5).toLowerCase()}}),Au=Je({attributes:{xmlnsxlink:"xmlns:xlink"},properties:{xmlnsXLink:null,xmlns:null},space:"xmlns",transform:ku}),_u=Je({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:"xml",transform(e,t){return"xml:"+t.slice(3).toLowerCase()}}),Hd={classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink"},Vd=/[A-Z]/g,Sl=/-[a-z]/g,Wd=/^data[-\w.:]+$/i;function Iu(e,t){const n=ht(t);let r=t,a=Se;if(n in e.normal)return e.property[e.normal[n]];if(n.length>4&&n.slice(0,4)==="data"&&Wd.test(t)){if(t.charAt(4)==="-"){const i=t.slice(5).replace(Sl,Yd);r="data"+i.charAt(0).toUpperCase()+i.slice(1)}else{const i=t.slice(4);if(!Sl.test(i)){let o=i.replace(Vd,qd);o.charAt(0)!=="-"&&(o="-"+o),t="data"+o}}a=Yn}return new a(r,t)}function qd(e){return"-"+e.toLowerCase()}function Yd(e){return e.charAt(1).toUpperCase()}const Nu=yu([Su,Gd,Tu,Au,_u],"html"),Vt=yu([Su,jd,Tu,Au,_u],"svg");function wl(e){const t=String(e||"").trim();return t?t.split(/[ \t\n\r\f]+/g):[]}function Kd(e){return e.join(" ").trim()}var qe={},ln,kl;function Xd(){if(kl)return ln;kl=1;var e=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,t=/\n/g,n=/^\s*/,r=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,a=/^:\s*/,i=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,o=/^[;\s]*/,s=/^\s+|\s+$/g,l=`
2
2
  `,u="/",d="*",c="",p="comment",g="declaration";function m(k,E){if(typeof k!="string")throw new TypeError("First argument must be a string");if(!k)return[];E=E||{};var _=1,A=1;function N(v){var L=v.match(t);L&&(_+=L.length);var H=v.lastIndexOf(l);A=~H?v.length-H:A+v.length}function x(){var v={line:_,column:A};return function(L){return L.position=new T(v),O(),L}}function T(v){this.start=v,this.end={line:_,column:A},this.source=E.source}T.prototype.content=k;function U(v){var L=new Error(E.source+":"+_+":"+A+": "+v);if(L.reason=v,L.filename=E.source,L.line=_,L.column=A,L.source=k,!E.silent)throw L}function P(v){var L=v.exec(k);if(L){var H=L[0];return N(H),k=k.slice(H.length),L}}function O(){P(n)}function y(v){var L;for(v=v||[];L=I();)L!==!1&&v.push(L);return v}function I(){var v=x();if(!(u!=k.charAt(0)||d!=k.charAt(1))){for(var L=2;c!=k.charAt(L)&&(d!=k.charAt(L)||u!=k.charAt(L+1));)++L;if(L+=2,c===k.charAt(L-1))return U("End of comment missing");var H=k.slice(2,L-2);return A+=2,N(H),k=k.slice(L),A+=2,v({type:p,comment:H})}}function C(){var v=x(),L=P(r);if(L){if(I(),!P(a))return U("property missing ':'");var H=P(i),W=v({type:g,property:w(L[0].replace(e,c)),value:H?w(H[0].replace(e,c)):c});return P(o),W}}function M(){var v=[];y(v);for(var L;L=C();)L!==!1&&(v.push(L),y(v));return v}return O(),M()}function w(k){return k?k.replace(s,c):c}return ln=m,ln}var Tl;function Zd(){if(Tl)return qe;Tl=1;var e=qe&&qe.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(qe,"__esModule",{value:!0}),qe.default=n;const t=e(Xd());function n(r,a){let i=null;if(!r||typeof r!="string")return i;const o=(0,t.default)(r),s=typeof a=="function";return o.forEach(l=>{if(l.type!=="declaration")return;const{property:u,value:d}=l;s?a(u,d,l):d&&(i=i||{},i[u]=d)}),i}return qe}var ut={},Al;function Qd(){if(Al)return ut;Al=1,Object.defineProperty(ut,"__esModule",{value:!0}),ut.camelCase=void 0;var e=/^--[a-zA-Z0-9_-]+$/,t=/-([a-z])/g,n=/^[^-]+$/,r=/^-(webkit|moz|ms|o|khtml)-/,a=/^-(ms)-/,i=function(u){return!u||n.test(u)||e.test(u)},o=function(u,d){return d.toUpperCase()},s=function(u,d){return"".concat(d,"-")},l=function(u,d){return d===void 0&&(d={}),i(u)?u:(u=u.toLowerCase(),d.reactCompat?u=u.replace(a,s):u=u.replace(r,s),u.replace(t,o))};return ut.camelCase=l,ut}var ct,_l;function Jd(){if(_l)return ct;_l=1;var e=ct&&ct.__importDefault||function(a){return a&&a.__esModule?a:{default:a}},t=e(Zd()),n=Qd();function r(a,i){var o={};return!a||typeof a!="string"||(0,t.default)(a,function(s,l){s&&l&&(o[(0,n.camelCase)(s,i)]=l)}),o}return r.default=r,ct=r,ct}var ep=Jd();const tp=mu(ep),Ru=xu("end"),Kn=xu("start");function xu(e){return t;function t(n){const r=n&&n.position&&n.position[e]||{};if(typeof r.line=="number"&&r.line>0&&typeof r.column=="number"&&r.column>0)return{line:r.line,column:r.column,offset:typeof r.offset=="number"&&r.offset>-1?r.offset:void 0}}}function np(e){const t=Kn(e),n=Ru(e);if(t&&n)return{start:t,end:n}}function gt(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?Il(e.position):"start"in e||"end"in e?Il(e):"line"in e||"column"in e?On(e):""}function On(e){return Nl(e&&e.line)+":"+Nl(e&&e.column)}function Il(e){return On(e&&e.start)+"-"+On(e&&e.end)}function Nl(e){return e&&typeof e=="number"?e:1}class me extends Error{constructor(t,n,r){super(),typeof n=="string"&&(r=n,n=void 0);let a="",i={},o=!1;if(n&&("line"in n&&"column"in n?i={place:n}:"start"in n&&"end"in n?i={place:n}:"type"in n?i={ancestors:[n],place:n.position}:i={...n}),typeof t=="string"?a=t:!i.cause&&t&&(o=!0,a=t.message,i.cause=t),!i.ruleId&&!i.source&&typeof r=="string"){const l=r.indexOf(":");l===-1?i.ruleId=r:(i.source=r.slice(0,l),i.ruleId=r.slice(l+1))}if(!i.place&&i.ancestors&&i.ancestors){const l=i.ancestors[i.ancestors.length-1];l&&(i.place=l.position)}const s=i.place&&"start"in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=s?s.column:void 0,this.fatal=void 0,this.file="",this.message=a,this.line=s?s.line:void 0,this.name=gt(i.place)||"1:1",this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=o&&i.cause&&typeof i.cause.stack=="string"?i.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}me.prototype.file="";me.prototype.name="";me.prototype.reason="";me.prototype.message="";me.prototype.stack="";me.prototype.column=void 0;me.prototype.line=void 0;me.prototype.ancestors=void 0;me.prototype.cause=void 0;me.prototype.fatal=void 0;me.prototype.place=void 0;me.prototype.ruleId=void 0;me.prototype.source=void 0;const Xn={}.hasOwnProperty,rp=new Map,ap=/[A-Z]/g,ip=new Set(["table","tbody","thead","tfoot","tr"]),op=new Set(["td","th"]),vu="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function sp(e,t){if(!t||t.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const n=t.filePath||void 0;let r;if(t.development){if(typeof t.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");r=mp(n,t.jsxDEV)}else{if(typeof t.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof t.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");r=fp(n,t.jsx,t.jsxs)}const a={Fragment:t.Fragment,ancestors:[],components:t.components||{},create:r,elementAttributeNameCase:t.elementAttributeNameCase||"react",evaluater:t.createEvaluater?t.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:t.ignoreInvalidStyle||!1,passKeys:t.passKeys!==!1,passNode:t.passNode||!1,schema:t.space==="svg"?Vt:Nu,stylePropertyNameCase:t.stylePropertyNameCase||"dom",tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},i=Cu(a,e,void 0);return i&&typeof i!="string"?i:a.create(e,a.Fragment,{children:i||void 0},void 0)}function Cu(e,t,n){if(t.type==="element")return lp(e,t,n);if(t.type==="mdxFlowExpression"||t.type==="mdxTextExpression")return up(e,t);if(t.type==="mdxJsxFlowElement"||t.type==="mdxJsxTextElement")return dp(e,t,n);if(t.type==="mdxjsEsm")return cp(e,t);if(t.type==="root")return pp(e,t,n);if(t.type==="text")return gp(e,t)}function lp(e,t,n){const r=e.schema;let a=r;t.tagName.toLowerCase()==="svg"&&r.space==="html"&&(a=Vt,e.schema=a),e.ancestors.push(t);const i=Lu(e,t.tagName,!1),o=bp(e,t);let s=Qn(e,t);return ip.has(t.tagName)&&(s=s.filter(function(l){return typeof l=="string"?!$d(l):!0})),Ou(e,o,i,t),Zn(o,s),e.ancestors.pop(),e.schema=r,e.create(t,i,o,n)}function up(e,t){if(t.data&&t.data.estree&&e.evaluater){const r=t.data.estree.body[0];return r.type,e.evaluater.evaluateExpression(r.expression)}Et(e,t.position)}function cp(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);Et(e,t.position)}function dp(e,t,n){const r=e.schema;let a=r;t.name==="svg"&&r.space==="html"&&(a=Vt,e.schema=a),e.ancestors.push(t);const i=t.name===null?e.Fragment:Lu(e,t.name,!0),o=hp(e,t),s=Qn(e,t);return Ou(e,o,i,t),Zn(o,s),e.ancestors.pop(),e.schema=r,e.create(t,i,o,n)}function pp(e,t,n){const r={};return Zn(r,Qn(e,t)),e.create(t,e.Fragment,r,n)}function gp(e,t){return t.value}function Ou(e,t,n,r){typeof n!="string"&&n!==e.Fragment&&e.passNode&&(t.node=r)}function Zn(e,t){if(t.length>0){const n=t.length>1?t:t[0];n&&(e.children=n)}}function fp(e,t,n){return r;function r(a,i,o,s){const u=Array.isArray(o.children)?n:t;return s?u(i,o,s):u(i,o)}}function mp(e,t){return n;function n(r,a,i,o){const s=Array.isArray(i.children),l=Kn(r);return t(a,i,o,s,{columnNumber:l?l.column-1:void 0,fileName:e,lineNumber:l?l.line:void 0},void 0)}}function bp(e,t){const n={};let r,a;for(a in t.properties)if(a!=="children"&&Xn.call(t.properties,a)){const i=Ep(e,a,t.properties[a]);if(i){const[o,s]=i;e.tableCellAlignToStyle&&o==="align"&&typeof s=="string"&&op.has(t.tagName)?r=s:n[o]=s}}if(r){const i=n.style||(n.style={});i[e.stylePropertyNameCase==="css"?"text-align":"textAlign"]=r}return n}function hp(e,t){const n={};for(const r of t.attributes)if(r.type==="mdxJsxExpressionAttribute")if(r.data&&r.data.estree&&e.evaluater){const i=r.data.estree.body[0];i.type;const o=i.expression;o.type;const s=o.properties[0];s.type,Object.assign(n,e.evaluater.evaluateExpression(s.argument))}else Et(e,t.position);else{const a=r.name;let i;if(r.value&&typeof r.value=="object")if(r.value.data&&r.value.data.estree&&e.evaluater){const s=r.value.data.estree.body[0];s.type,i=e.evaluater.evaluateExpression(s.expression)}else Et(e,t.position);else i=r.value===null?!0:r.value;n[a]=i}return n}function Qn(e,t){const n=[];let r=-1;const a=e.passKeys?new Map:rp;for(;++r<t.children.length;){const i=t.children[r];let o;if(e.passKeys){const l=i.type==="element"?i.tagName:i.type==="mdxJsxFlowElement"||i.type==="mdxJsxTextElement"?i.name:void 0;if(l){const u=a.get(l)||0;o=l+"-"+u,a.set(l,u+1)}}const s=Cu(e,i,o);s!==void 0&&n.push(s)}return n}function Ep(e,t,n){const r=Iu(e.schema,t);if(!(n==null||typeof n=="number"&&Number.isNaN(n))){if(Array.isArray(n)&&(n=r.commaSeparated?Md(n):Kd(n)),r.property==="style"){let a=typeof n=="object"?n:yp(e,String(n));return e.stylePropertyNameCase==="css"&&(a=Sp(a)),["style",a]}return[e.elementAttributeNameCase==="react"&&r.space?Hd[r.property]||r.property:r.attribute,n]}}function yp(e,t){try{return tp(t,{reactCompat:!0})}catch(n){if(e.ignoreInvalidStyle)return{};const r=n,a=new me("Cannot parse `style` attribute",{ancestors:e.ancestors,cause:r,ruleId:"style",source:"hast-util-to-jsx-runtime"});throw a.file=e.filePath||void 0,a.url=vu+"#cannot-parse-style-attribute",a}}function Lu(e,t,n){let r;if(!n)r={type:"Literal",value:t};else if(t.includes(".")){const a=t.split(".");let i=-1,o;for(;++i<a.length;){const s=hl(a[i])?{type:"Identifier",name:a[i]}:{type:"Literal",value:a[i]};o=o?{type:"MemberExpression",object:o,property:s,computed:!!(i&&s.type==="Literal"),optional:!1}:s}r=o}else r=hl(t)&&!/^[a-z]/.test(t)?{type:"Identifier",name:t}:{type:"Literal",value:t};if(r.type==="Literal"){const a=r.value;return Xn.call(e.components,a)?e.components[a]:a}if(e.evaluater)return e.evaluater.evaluateExpression(r);Et(e)}function Et(e,t){const n=new me("Cannot handle MDX estrees without `createEvaluater`",{ancestors:e.ancestors,place:t,ruleId:"mdx-estree",source:"hast-util-to-jsx-runtime"});throw n.file=e.filePath||void 0,n.url=vu+"#cannot-handle-mdx-estrees-without-createevaluater",n}function Sp(e){const t={};let n;for(n in e)Xn.call(e,n)&&(t[wp(n)]=e[n]);return t}function wp(e){let t=e.replace(ap,kp);return t.slice(0,3)==="ms-"&&(t="-"+t),t}function kp(e){return"-"+e.toLowerCase()}const un={action:["form"],cite:["blockquote","del","ins","q"],data:["object"],formAction:["button","input"],href:["a","area","base","link"],icon:["menuitem"],itemId:null,manifest:["html"],ping:["a","area"],poster:["video"],src:["audio","embed","iframe","img","input","script","source","track","video"]},Tp={};function Jn(e,t){const n=Tp,r=typeof n.includeImageAlt=="boolean"?n.includeImageAlt:!0,a=typeof n.includeHtml=="boolean"?n.includeHtml:!0;return Du(e,r,a)}function Du(e,t,n){if(Ap(e)){if("value"in e)return e.type==="html"&&!n?"":e.value;if(t&&"alt"in e&&e.alt)return e.alt;if("children"in e)return Rl(e.children,t,n)}return Array.isArray(e)?Rl(e,t,n):""}function Rl(e,t,n){const r=[];let a=-1;for(;++a<e.length;)r[a]=Du(e[a],t,n);return r.join("")}function Ap(e){return!!(e&&typeof e=="object")}const xl=document.createElement("i");function yt(e){const t="&"+e+";";xl.innerHTML=t;const n=xl.textContent;return n.charCodeAt(n.length-1)===59&&e!=="semi"||n===t?!1:n}function Te(e,t,n,r){const a=e.length;let i=0,o;if(t<0?t=-t>a?0:a+t:t=t>a?a:t,n=n>0?n:0,r.length<1e4)o=Array.from(r),o.unshift(t,n),e.splice(...o);else for(n&&e.splice(t,n);i<r.length;)o=r.slice(i,i+1e4),o.unshift(t,0),e.splice(...o),i+=1e4,t+=1e4}function Ae(e,t){return e.length>0?(Te(e,e.length,0,t),e):t}const vl={}.hasOwnProperty;function Mu(e){const t={};let n=-1;for(;++n<e.length;)_p(t,e[n]);return t}function _p(e,t){let n;for(n in t){const a=(vl.call(e,n)?e[n]:void 0)||(e[n]={}),i=t[n];let o;if(i)for(o in i){vl.call(a,o)||(a[o]=[]);const s=i[o];Ip(a[o],Array.isArray(s)?s:s?[s]:[])}}}function Ip(e,t){let n=-1;const r=[];for(;++n<t.length;)(t[n].add==="after"?e:r).push(t[n]);Te(e,0,0,r)}function Fu(e,t){const n=Number.parseInt(e,t);return n<9||n===11||n>13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)===65535||(n&65535)===65534||n>1114111?"�":String.fromCodePoint(n)}function Ie(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const Ee=Be(/[A-Za-z]/),fe=Be(/[\dA-Za-z]/),Np=Be(/[#-'*+\--9=?A-Z^-~]/);function zt(e){return e!==null&&(e<32||e===127)}const Ln=Be(/\d/),Rp=Be(/[\dA-Fa-f]/),xp=Be(/[!-/:-@[-`{-~]/);function G(e){return e!==null&&e<-2}function ie(e){return e!==null&&(e<0||e===32)}function K(e){return e===-2||e===-1||e===32}const Wt=Be(new RegExp("\\p{P}|\\p{S}","u")),je=Be(/\s/);function Be(e){return t;function t(n){return n!==null&&n>-1&&e.test(String.fromCharCode(n))}}function et(e){const t=[];let n=-1,r=0,a=0;for(;++n<e.length;){const i=e.charCodeAt(n);let o="";if(i===37&&fe(e.charCodeAt(n+1))&&fe(e.charCodeAt(n+2)))a=2;else if(i<128)/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(i))||(o=String.fromCharCode(i));else if(i>55295&&i<57344){const s=e.charCodeAt(n+1);i<56320&&s>56319&&s<57344?(o=String.fromCharCode(i,s),a=1):o="�"}else o=String.fromCharCode(i);o&&(t.push(e.slice(r,n),encodeURIComponent(o)),r=n+a+1,o=""),a&&(n+=a,a=0)}return t.join("")+e.slice(r)}function J(e,t,n,r){const a=r?r-1:Number.POSITIVE_INFINITY;let i=0;return o;function o(l){return K(l)?(e.enter(n),s(l)):t(l)}function s(l){return K(l)&&i++<a?(e.consume(l),s):(e.exit(n),t(l))}}const vp={tokenize:Cp};function Cp(e){const t=e.attempt(this.parser.constructs.contentInitial,r,a);let n;return t;function r(s){if(s===null){e.consume(s);return}return e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),J(e,t,"linePrefix")}function a(s){return e.enter("paragraph"),i(s)}function i(s){const l=e.enter("chunkText",{contentType:"text",previous:n});return n&&(n.next=l),n=l,o(s)}function o(s){if(s===null){e.exit("chunkText"),e.exit("paragraph"),e.consume(s);return}return G(s)?(e.consume(s),e.exit("chunkText"),i):(e.consume(s),o)}}const Op={tokenize:Lp},Cl={tokenize:Dp};function Lp(e){const t=this,n=[];let r=0,a,i,o;return s;function s(A){if(r<n.length){const N=n[r];return t.containerState=N[1],e.attempt(N[0].continuation,l,u)(A)}return u(A)}function l(A){if(r++,t.containerState._closeFlow){t.containerState._closeFlow=void 0,a&&_();const N=t.events.length;let x=N,T;for(;x--;)if(t.events[x][0]==="exit"&&t.events[x][1].type==="chunkFlow"){T=t.events[x][1].end;break}E(r);let U=N;for(;U<t.events.length;)t.events[U][1].end={...T},U++;return Te(t.events,x+1,0,t.events.slice(N)),t.events.length=U,u(A)}return s(A)}function u(A){if(r===n.length){if(!a)return p(A);if(a.currentConstruct&&a.currentConstruct.concrete)return m(A);t.interrupt=!!(a.currentConstruct&&!a._gfmTableDynamicInterruptHack)}return t.containerState={},e.check(Cl,d,c)(A)}function d(A){return a&&_(),E(r),p(A)}function c(A){return t.parser.lazy[t.now().line]=r!==n.length,o=t.now().offset,m(A)}function p(A){return t.containerState={},e.attempt(Cl,g,m)(A)}function g(A){return r++,n.push([t.currentConstruct,t.containerState]),p(A)}function m(A){if(A===null){a&&_(),E(0),e.consume(A);return}return a=a||t.parser.flow(t.now()),e.enter("chunkFlow",{_tokenizer:a,contentType:"flow",previous:i}),w(A)}function w(A){if(A===null){k(e.exit("chunkFlow"),!0),E(0),e.consume(A);return}return G(A)?(e.consume(A),k(e.exit("chunkFlow")),r=0,t.interrupt=void 0,s):(e.consume(A),w)}function k(A,N){const x=t.sliceStream(A);if(N&&x.push(null),A.previous=i,i&&(i.next=A),i=A,a.defineSkip(A.start),a.write(x),t.parser.lazy[A.start.line]){let T=a.events.length;for(;T--;)if(a.events[T][1].start.offset<o&&(!a.events[T][1].end||a.events[T][1].end.offset>o))return;const U=t.events.length;let P=U,O,y;for(;P--;)if(t.events[P][0]==="exit"&&t.events[P][1].type==="chunkFlow"){if(O){y=t.events[P][1].end;break}O=!0}for(E(r),T=U;T<t.events.length;)t.events[T][1].end={...y},T++;Te(t.events,P+1,0,t.events.slice(U)),t.events.length=T}}function E(A){let N=n.length;for(;N-- >A;){const x=n[N];t.containerState=x[1],x[0].exit.call(t,e)}n.length=A}function _(){a.write([null]),i=void 0,a=void 0,t.containerState._closeFlow=void 0}}function Dp(e,t,n){return J(e,e.attempt(this.parser.constructs.document,t,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function Qe(e){if(e===null||ie(e)||je(e))return 1;if(Wt(e))return 2}function qt(e,t,n){const r=[];let a=-1;for(;++a<e.length;){const i=e[a].resolveAll;i&&!r.includes(i)&&(t=i(t,n),r.push(i))}return t}const Dn={name:"attention",resolveAll:Mp,tokenize:Fp};function Mp(e,t){let n=-1,r,a,i,o,s,l,u,d;for(;++n<e.length;)if(e[n][0]==="enter"&&e[n][1].type==="attentionSequence"&&e[n][1]._close){for(r=n;r--;)if(e[r][0]==="exit"&&e[r][1].type==="attentionSequence"&&e[r][1]._open&&t.sliceSerialize(e[r][1]).charCodeAt(0)===t.sliceSerialize(e[n][1]).charCodeAt(0)){if((e[r][1]._close||e[n][1]._open)&&(e[n][1].end.offset-e[n][1].start.offset)%3&&!((e[r][1].end.offset-e[r][1].start.offset+e[n][1].end.offset-e[n][1].start.offset)%3))continue;l=e[r][1].end.offset-e[r][1].start.offset>1&&e[n][1].end.offset-e[n][1].start.offset>1?2:1;const c={...e[r][1].end},p={...e[n][1].start};Ol(c,-l),Ol(p,l),o={type:l>1?"strongSequence":"emphasisSequence",start:c,end:{...e[r][1].end}},s={type:l>1?"strongSequence":"emphasisSequence",start:{...e[n][1].start},end:p},i={type:l>1?"strongText":"emphasisText",start:{...e[r][1].end},end:{...e[n][1].start}},a={type:l>1?"strong":"emphasis",start:{...o.start},end:{...s.end}},e[r][1].end={...o.start},e[n][1].start={...s.end},u=[],e[r][1].end.offset-e[r][1].start.offset&&(u=Ae(u,[["enter",e[r][1],t],["exit",e[r][1],t]])),u=Ae(u,[["enter",a,t],["enter",o,t],["exit",o,t],["enter",i,t]]),u=Ae(u,qt(t.parser.constructs.insideSpan.null,e.slice(r+1,n),t)),u=Ae(u,[["exit",i,t],["enter",s,t],["exit",s,t],["exit",a,t]]),e[n][1].end.offset-e[n][1].start.offset?(d=2,u=Ae(u,[["enter",e[n][1],t],["exit",e[n][1],t]])):d=0,Te(e,r-1,n-r+3,u),n=r+u.length-d-2;break}}for(n=-1;++n<e.length;)e[n][1].type==="attentionSequence"&&(e[n][1].type="data");return e}function Fp(e,t){const n=this.parser.constructs.attentionMarkers.null,r=this.previous,a=Qe(r);let i;return o;function o(l){return i=l,e.enter("attentionSequence"),s(l)}function s(l){if(l===i)return e.consume(l),s;const u=e.exit("attentionSequence"),d=Qe(l),c=!d||d===2&&a||n.includes(l),p=!a||a===2&&d||n.includes(r);return u._open=!!(i===42?c:c&&(a||!p)),u._close=!!(i===42?p:p&&(d||!c)),t(l)}}function Ol(e,t){e.column+=t,e.offset+=t,e._bufferIndex+=t}const Up={name:"autolink",tokenize:Bp};function Bp(e,t,n){let r=0;return a;function a(g){return e.enter("autolink"),e.enter("autolinkMarker"),e.consume(g),e.exit("autolinkMarker"),e.enter("autolinkProtocol"),i}function i(g){return Ee(g)?(e.consume(g),o):g===64?n(g):u(g)}function o(g){return g===43||g===45||g===46||fe(g)?(r=1,s(g)):u(g)}function s(g){return g===58?(e.consume(g),r=0,l):(g===43||g===45||g===46||fe(g))&&r++<32?(e.consume(g),s):(r=0,u(g))}function l(g){return g===62?(e.exit("autolinkProtocol"),e.enter("autolinkMarker"),e.consume(g),e.exit("autolinkMarker"),e.exit("autolink"),t):g===null||g===32||g===60||zt(g)?n(g):(e.consume(g),l)}function u(g){return g===64?(e.consume(g),d):Np(g)?(e.consume(g),u):n(g)}function d(g){return fe(g)?c(g):n(g)}function c(g){return g===46?(e.consume(g),r=0,d):g===62?(e.exit("autolinkProtocol").type="autolinkEmail",e.enter("autolinkMarker"),e.consume(g),e.exit("autolinkMarker"),e.exit("autolink"),t):p(g)}function p(g){if((g===45||fe(g))&&r++<63){const m=g===45?p:c;return e.consume(g),m}return n(g)}}const Tt={partial:!0,tokenize:Pp};function Pp(e,t,n){return r;function r(i){return K(i)?J(e,a,"linePrefix")(i):a(i)}function a(i){return i===null||G(i)?t(i):n(i)}}const Uu={continuation:{tokenize:zp},exit:Gp,name:"blockQuote",tokenize:$p};function $p(e,t,n){const r=this;return a;function a(o){if(o===62){const s=r.containerState;return s.open||(e.enter("blockQuote",{_container:!0}),s.open=!0),e.enter("blockQuotePrefix"),e.enter("blockQuoteMarker"),e.consume(o),e.exit("blockQuoteMarker"),i}return n(o)}function i(o){return K(o)?(e.enter("blockQuotePrefixWhitespace"),e.consume(o),e.exit("blockQuotePrefixWhitespace"),e.exit("blockQuotePrefix"),t):(e.exit("blockQuotePrefix"),t(o))}}function zp(e,t,n){const r=this;return a;function a(o){return K(o)?J(e,i,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(o):i(o)}function i(o){return e.attempt(Uu,t,n)(o)}}function Gp(e){e.exit("blockQuote")}const Bu={name:"characterEscape",tokenize:jp};function jp(e,t,n){return r;function r(i){return e.enter("characterEscape"),e.enter("escapeMarker"),e.consume(i),e.exit("escapeMarker"),a}function a(i){return xp(i)?(e.enter("characterEscapeValue"),e.consume(i),e.exit("characterEscapeValue"),e.exit("characterEscape"),t):n(i)}}const Pu={name:"characterReference",tokenize:Hp};function Hp(e,t,n){const r=this;let a=0,i,o;return s;function s(c){return e.enter("characterReference"),e.enter("characterReferenceMarker"),e.consume(c),e.exit("characterReferenceMarker"),l}function l(c){return c===35?(e.enter("characterReferenceMarkerNumeric"),e.consume(c),e.exit("characterReferenceMarkerNumeric"),u):(e.enter("characterReferenceValue"),i=31,o=fe,d(c))}function u(c){return c===88||c===120?(e.enter("characterReferenceMarkerHexadecimal"),e.consume(c),e.exit("characterReferenceMarkerHexadecimal"),e.enter("characterReferenceValue"),i=6,o=Rp,d):(e.enter("characterReferenceValue"),i=7,o=Ln,d(c))}function d(c){if(c===59&&a){const p=e.exit("characterReferenceValue");return o===fe&&!yt(r.sliceSerialize(p))?n(c):(e.enter("characterReferenceMarker"),e.consume(c),e.exit("characterReferenceMarker"),e.exit("characterReference"),t)}return o(c)&&a++<i?(e.consume(c),d):n(c)}}const Ll={partial:!0,tokenize:Wp},Dl={concrete:!0,name:"codeFenced",tokenize:Vp};function Vp(e,t,n){const r=this,a={partial:!0,tokenize:x};let i=0,o=0,s;return l;function l(T){return u(T)}function u(T){const U=r.events[r.events.length-1];return i=U&&U[1].type==="linePrefix"?U[2].sliceSerialize(U[1],!0).length:0,s=T,e.enter("codeFenced"),e.enter("codeFencedFence"),e.enter("codeFencedFenceSequence"),d(T)}function d(T){return T===s?(o++,e.consume(T),d):o<3?n(T):(e.exit("codeFencedFenceSequence"),K(T)?J(e,c,"whitespace")(T):c(T))}function c(T){return T===null||G(T)?(e.exit("codeFencedFence"),r.interrupt?t(T):e.check(Ll,w,N)(T)):(e.enter("codeFencedFenceInfo"),e.enter("chunkString",{contentType:"string"}),p(T))}function p(T){return T===null||G(T)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),c(T)):K(T)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),J(e,g,"whitespace")(T)):T===96&&T===s?n(T):(e.consume(T),p)}function g(T){return T===null||G(T)?c(T):(e.enter("codeFencedFenceMeta"),e.enter("chunkString",{contentType:"string"}),m(T))}function m(T){return T===null||G(T)?(e.exit("chunkString"),e.exit("codeFencedFenceMeta"),c(T)):T===96&&T===s?n(T):(e.consume(T),m)}function w(T){return e.attempt(a,N,k)(T)}function k(T){return e.enter("lineEnding"),e.consume(T),e.exit("lineEnding"),E}function E(T){return i>0&&K(T)?J(e,_,"linePrefix",i+1)(T):_(T)}function _(T){return T===null||G(T)?e.check(Ll,w,N)(T):(e.enter("codeFlowValue"),A(T))}function A(T){return T===null||G(T)?(e.exit("codeFlowValue"),_(T)):(e.consume(T),A)}function N(T){return e.exit("codeFenced"),t(T)}function x(T,U,P){let O=0;return y;function y(L){return T.enter("lineEnding"),T.consume(L),T.exit("lineEnding"),I}function I(L){return T.enter("codeFencedFence"),K(L)?J(T,C,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(L):C(L)}function C(L){return L===s?(T.enter("codeFencedFenceSequence"),M(L)):P(L)}function M(L){return L===s?(O++,T.consume(L),M):O>=o?(T.exit("codeFencedFenceSequence"),K(L)?J(T,v,"whitespace")(L):v(L)):P(L)}function v(L){return L===null||G(L)?(T.exit("codeFencedFence"),U(L)):P(L)}}}function Wp(e,t,n){const r=this;return a;function a(o){return o===null?n(o):(e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),i)}function i(o){return r.parser.lazy[r.now().line]?n(o):t(o)}}const cn={name:"codeIndented",tokenize:Yp},qp={partial:!0,tokenize:Kp};function Yp(e,t,n){const r=this;return a;function a(u){return e.enter("codeIndented"),J(e,i,"linePrefix",5)(u)}function i(u){const d=r.events[r.events.length-1];return d&&d[1].type==="linePrefix"&&d[2].sliceSerialize(d[1],!0).length>=4?o(u):n(u)}function o(u){return u===null?l(u):G(u)?e.attempt(qp,o,l)(u):(e.enter("codeFlowValue"),s(u))}function s(u){return u===null||G(u)?(e.exit("codeFlowValue"),o(u)):(e.consume(u),s)}function l(u){return e.exit("codeIndented"),t(u)}}function Kp(e,t,n){const r=this;return a;function a(o){return r.parser.lazy[r.now().line]?n(o):G(o)?(e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),a):J(e,i,"linePrefix",5)(o)}function i(o){const s=r.events[r.events.length-1];return s&&s[1].type==="linePrefix"&&s[2].sliceSerialize(s[1],!0).length>=4?t(o):G(o)?a(o):n(o)}}const Xp={name:"codeText",previous:Qp,resolve:Zp,tokenize:Jp};function Zp(e){let t=e.length-4,n=3,r,a;if((e[n][1].type==="lineEnding"||e[n][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(r=n;++r<t;)if(e[r][1].type==="codeTextData"){e[n][1].type="codeTextPadding",e[t][1].type="codeTextPadding",n+=2,t-=2;break}}for(r=n-1,t++;++r<=t;)a===void 0?r!==t&&e[r][1].type!=="lineEnding"&&(a=r):(r===t||e[r][1].type==="lineEnding")&&(e[a][1].type="codeTextData",r!==a+2&&(e[a][1].end=e[r-1][1].end,e.splice(a+2,r-a-2),t-=r-a-2,r=a+2),a=void 0);return e}function Qp(e){return e!==96||this.events[this.events.length-1][1].type==="characterEscape"}function Jp(e,t,n){let r=0,a,i;return o;function o(c){return e.enter("codeText"),e.enter("codeTextSequence"),s(c)}function s(c){return c===96?(e.consume(c),r++,s):(e.exit("codeTextSequence"),l(c))}function l(c){return c===null?n(c):c===32?(e.enter("space"),e.consume(c),e.exit("space"),l):c===96?(i=e.enter("codeTextSequence"),a=0,d(c)):G(c)?(e.enter("lineEnding"),e.consume(c),e.exit("lineEnding"),l):(e.enter("codeTextData"),u(c))}function u(c){return c===null||c===32||c===96||G(c)?(e.exit("codeTextData"),l(c)):(e.consume(c),u)}function d(c){return c===96?(e.consume(c),a++,d):a===r?(e.exit("codeTextSequence"),e.exit("codeText"),t(c)):(i.type="codeTextData",u(c))}}class eg{constructor(t){this.left=t?[...t]:[],this.right=[]}get(t){if(t<0||t>=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+t+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return t<this.left.length?this.left[t]:this.right[this.right.length-t+this.left.length-1]}get length(){return this.left.length+this.right.length}shift(){return this.setCursor(0),this.right.pop()}slice(t,n){const r=n??Number.POSITIVE_INFINITY;return r<this.left.length?this.left.slice(t,r):t>this.left.length?this.right.slice(this.right.length-r+this.left.length,this.right.length-t+this.left.length).reverse():this.left.slice(t).concat(this.right.slice(this.right.length-r+this.left.length).reverse())}splice(t,n,r){const a=n||0;this.setCursor(Math.trunc(t));const i=this.right.splice(this.right.length-a,Number.POSITIVE_INFINITY);return r&&dt(this.left,r),i.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(t){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(t)}pushMany(t){this.setCursor(Number.POSITIVE_INFINITY),dt(this.left,t)}unshift(t){this.setCursor(0),this.right.push(t)}unshiftMany(t){this.setCursor(0),dt(this.right,t.reverse())}setCursor(t){if(!(t===this.left.length||t>this.left.length&&this.right.length===0||t<0&&this.left.length===0))if(t<this.left.length){const n=this.left.splice(t,Number.POSITIVE_INFINITY);dt(this.right,n.reverse())}else{const n=this.right.splice(this.left.length+this.right.length-t,Number.POSITIVE_INFINITY);dt(this.left,n.reverse())}}}function dt(e,t){let n=0;if(t.length<1e4)e.push(...t);else for(;n<t.length;)e.push(...t.slice(n,n+1e4)),n+=1e4}function $u(e){const t={};let n=-1,r,a,i,o,s,l,u;const d=new eg(e);for(;++n<d.length;){for(;n in t;)n=t[n];if(r=d.get(n),n&&r[1].type==="chunkFlow"&&d.get(n-1)[1].type==="listItemPrefix"&&(l=r[1]._tokenizer.events,i=0,i<l.length&&l[i][1].type==="lineEndingBlank"&&(i+=2),i<l.length&&l[i][1].type==="content"))for(;++i<l.length&&l[i][1].type!=="content";)l[i][1].type==="chunkText"&&(l[i][1]._isInFirstContentOfListItem=!0,i++);if(r[0]==="enter")r[1].contentType&&(Object.assign(t,tg(d,n)),n=t[n],u=!0);else if(r[1]._container){for(i=n,a=void 0;i--;)if(o=d.get(i),o[1].type==="lineEnding"||o[1].type==="lineEndingBlank")o[0]==="enter"&&(a&&(d.get(a)[1].type="lineEndingBlank"),o[1].type="lineEnding",a=i);else if(!(o[1].type==="linePrefix"||o[1].type==="listItemIndent"))break;a&&(r[1].end={...d.get(a)[1].start},s=d.slice(a,n),s.unshift(r),d.splice(a,n-a+1,s))}}return Te(e,0,Number.POSITIVE_INFINITY,d.slice(0)),!u}function tg(e,t){const n=e.get(t)[1],r=e.get(t)[2];let a=t-1;const i=[];let o=n._tokenizer;o||(o=r.parser[n.contentType](n.start),n._contentTypeTextTrailing&&(o._contentTypeTextTrailing=!0));const s=o.events,l=[],u={};let d,c,p=-1,g=n,m=0,w=0;const k=[w];for(;g;){for(;e.get(++a)[1]!==g;);i.push(a),g._tokenizer||(d=r.sliceStream(g),g.next||d.push(null),c&&o.defineSkip(g.start),g._isInFirstContentOfListItem&&(o._gfmTasklistFirstContentOfListItem=!0),o.write(d),g._isInFirstContentOfListItem&&(o._gfmTasklistFirstContentOfListItem=void 0)),c=g,g=g.next}for(g=n;++p<s.length;)s[p][0]==="exit"&&s[p-1][0]==="enter"&&s[p][1].type===s[p-1][1].type&&s[p][1].start.line!==s[p][1].end.line&&(w=p+1,k.push(w),g._tokenizer=void 0,g.previous=void 0,g=g.next);for(o.events=[],g?(g._tokenizer=void 0,g.previous=void 0):k.pop(),p=k.length;p--;){const E=s.slice(k[p],k[p+1]),_=i.pop();l.push([_,_+E.length-1]),e.splice(_,2,E)}for(l.reverse(),p=-1;++p<l.length;)u[m+l[p][0]]=m+l[p][1],m+=l[p][1]-l[p][0]-1;return u}const ng={resolve:ag,tokenize:ig},rg={partial:!0,tokenize:og};function ag(e){return $u(e),e}function ig(e,t){let n;return r;function r(s){return e.enter("content"),n=e.enter("chunkContent",{contentType:"content"}),a(s)}function a(s){return s===null?i(s):G(s)?e.check(rg,o,i)(s):(e.consume(s),a)}function i(s){return e.exit("chunkContent"),e.exit("content"),t(s)}function o(s){return e.consume(s),e.exit("chunkContent"),n.next=e.enter("chunkContent",{contentType:"content",previous:n}),n=n.next,a}}function og(e,t,n){const r=this;return a;function a(o){return e.exit("chunkContent"),e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),J(e,i,"linePrefix")}function i(o){if(o===null||G(o))return n(o);const s=r.events[r.events.length-1];return!r.parser.constructs.disable.null.includes("codeIndented")&&s&&s[1].type==="linePrefix"&&s[2].sliceSerialize(s[1],!0).length>=4?t(o):e.interrupt(r.parser.constructs.flow,n,t)(o)}}function zu(e,t,n,r,a,i,o,s,l){const u=l||Number.POSITIVE_INFINITY;let d=0;return c;function c(E){return E===60?(e.enter(r),e.enter(a),e.enter(i),e.consume(E),e.exit(i),p):E===null||E===32||E===41||zt(E)?n(E):(e.enter(r),e.enter(o),e.enter(s),e.enter("chunkString",{contentType:"string"}),w(E))}function p(E){return E===62?(e.enter(i),e.consume(E),e.exit(i),e.exit(a),e.exit(r),t):(e.enter(s),e.enter("chunkString",{contentType:"string"}),g(E))}function g(E){return E===62?(e.exit("chunkString"),e.exit(s),p(E)):E===null||E===60||G(E)?n(E):(e.consume(E),E===92?m:g)}function m(E){return E===60||E===62||E===92?(e.consume(E),g):g(E)}function w(E){return!d&&(E===null||E===41||ie(E))?(e.exit("chunkString"),e.exit(s),e.exit(o),e.exit(r),t(E)):d<u&&E===40?(e.consume(E),d++,w):E===41?(e.consume(E),d--,w):E===null||E===32||E===40||zt(E)?n(E):(e.consume(E),E===92?k:w)}function k(E){return E===40||E===41||E===92?(e.consume(E),w):w(E)}}function Gu(e,t,n,r,a,i){const o=this;let s=0,l;return u;function u(g){return e.enter(r),e.enter(a),e.consume(g),e.exit(a),e.enter(i),d}function d(g){return s>999||g===null||g===91||g===93&&!l||g===94&&!s&&"_hiddenFootnoteSupport"in o.parser.constructs?n(g):g===93?(e.exit(i),e.enter(a),e.consume(g),e.exit(a),e.exit(r),t):G(g)?(e.enter("lineEnding"),e.consume(g),e.exit("lineEnding"),d):(e.enter("chunkString",{contentType:"string"}),c(g))}function c(g){return g===null||g===91||g===93||G(g)||s++>999?(e.exit("chunkString"),d(g)):(e.consume(g),l||(l=!K(g)),g===92?p:c)}function p(g){return g===91||g===92||g===93?(e.consume(g),s++,c):c(g)}}function ju(e,t,n,r,a,i){let o;return s;function s(p){return p===34||p===39||p===40?(e.enter(r),e.enter(a),e.consume(p),e.exit(a),o=p===40?41:p,l):n(p)}function l(p){return p===o?(e.enter(a),e.consume(p),e.exit(a),e.exit(r),t):(e.enter(i),u(p))}function u(p){return p===o?(e.exit(i),l(o)):p===null?n(p):G(p)?(e.enter("lineEnding"),e.consume(p),e.exit("lineEnding"),J(e,u,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),d(p))}function d(p){return p===o||p===null||G(p)?(e.exit("chunkString"),u(p)):(e.consume(p),p===92?c:d)}function c(p){return p===o||p===92?(e.consume(p),d):d(p)}}function ft(e,t){let n;return r;function r(a){return G(a)?(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),n=!0,r):K(a)?J(e,r,n?"linePrefix":"lineSuffix")(a):t(a)}}const sg={name:"definition",tokenize:ug},lg={partial:!0,tokenize:cg};function ug(e,t,n){const r=this;let a;return i;function i(g){return e.enter("definition"),o(g)}function o(g){return Gu.call(r,e,s,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(g)}function s(g){return a=Ie(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),g===58?(e.enter("definitionMarker"),e.consume(g),e.exit("definitionMarker"),l):n(g)}function l(g){return ie(g)?ft(e,u)(g):u(g)}function u(g){return zu(e,d,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(g)}function d(g){return e.attempt(lg,c,c)(g)}function c(g){return K(g)?J(e,p,"whitespace")(g):p(g)}function p(g){return g===null||G(g)?(e.exit("definition"),r.parser.defined.push(a),t(g)):n(g)}}function cg(e,t,n){return r;function r(s){return ie(s)?ft(e,a)(s):n(s)}function a(s){return ju(e,i,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(s)}function i(s){return K(s)?J(e,o,"whitespace")(s):o(s)}function o(s){return s===null||G(s)?t(s):n(s)}}const dg={name:"hardBreakEscape",tokenize:pg};function pg(e,t,n){return r;function r(i){return e.enter("hardBreakEscape"),e.consume(i),a}function a(i){return G(i)?(e.exit("hardBreakEscape"),t(i)):n(i)}}const gg={name:"headingAtx",resolve:fg,tokenize:mg};function fg(e,t){let n=e.length-2,r=3,a,i;return e[r][1].type==="whitespace"&&(r+=2),n-2>r&&e[n][1].type==="whitespace"&&(n-=2),e[n][1].type==="atxHeadingSequence"&&(r===n-1||n-4>r&&e[n-2][1].type==="whitespace")&&(n-=r+1===n?2:4),n>r&&(a={type:"atxHeadingText",start:e[r][1].start,end:e[n][1].end},i={type:"chunkText",start:e[r][1].start,end:e[n][1].end,contentType:"text"},Te(e,r,n-r+1,[["enter",a,t],["enter",i,t],["exit",i,t],["exit",a,t]])),e}function mg(e,t,n){let r=0;return a;function a(d){return e.enter("atxHeading"),i(d)}function i(d){return e.enter("atxHeadingSequence"),o(d)}function o(d){return d===35&&r++<6?(e.consume(d),o):d===null||ie(d)?(e.exit("atxHeadingSequence"),s(d)):n(d)}function s(d){return d===35?(e.enter("atxHeadingSequence"),l(d)):d===null||G(d)?(e.exit("atxHeading"),t(d)):K(d)?J(e,s,"whitespace")(d):(e.enter("atxHeadingText"),u(d))}function l(d){return d===35?(e.consume(d),l):(e.exit("atxHeadingSequence"),s(d))}function u(d){return d===null||d===35||ie(d)?(e.exit("atxHeadingText"),s(d)):(e.consume(d),u)}}const bg=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],Ml=["pre","script","style","textarea"],hg={concrete:!0,name:"htmlFlow",resolveTo:Sg,tokenize:wg},Eg={partial:!0,tokenize:Tg},yg={partial:!0,tokenize:kg};function Sg(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function wg(e,t,n){const r=this;let a,i,o,s,l;return u;function u(b){return d(b)}function d(b){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(b),c}function c(b){return b===33?(e.consume(b),p):b===47?(e.consume(b),i=!0,w):b===63?(e.consume(b),a=3,r.interrupt?t:h):Ee(b)?(e.consume(b),o=String.fromCharCode(b),k):n(b)}function p(b){return b===45?(e.consume(b),a=2,g):b===91?(e.consume(b),a=5,s=0,m):Ee(b)?(e.consume(b),a=4,r.interrupt?t:h):n(b)}function g(b){return b===45?(e.consume(b),r.interrupt?t:h):n(b)}function m(b){const Q="CDATA[";return b===Q.charCodeAt(s++)?(e.consume(b),s===Q.length?r.interrupt?t:C:m):n(b)}function w(b){return Ee(b)?(e.consume(b),o=String.fromCharCode(b),k):n(b)}function k(b){if(b===null||b===47||b===62||ie(b)){const Q=b===47,ne=o.toLowerCase();return!Q&&!i&&Ml.includes(ne)?(a=1,r.interrupt?t(b):C(b)):bg.includes(o.toLowerCase())?(a=6,Q?(e.consume(b),E):r.interrupt?t(b):C(b)):(a=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(b):i?_(b):A(b))}return b===45||fe(b)?(e.consume(b),o+=String.fromCharCode(b),k):n(b)}function E(b){return b===62?(e.consume(b),r.interrupt?t:C):n(b)}function _(b){return K(b)?(e.consume(b),_):y(b)}function A(b){return b===47?(e.consume(b),y):b===58||b===95||Ee(b)?(e.consume(b),N):K(b)?(e.consume(b),A):y(b)}function N(b){return b===45||b===46||b===58||b===95||fe(b)?(e.consume(b),N):x(b)}function x(b){return b===61?(e.consume(b),T):K(b)?(e.consume(b),x):A(b)}function T(b){return b===null||b===60||b===61||b===62||b===96?n(b):b===34||b===39?(e.consume(b),l=b,U):K(b)?(e.consume(b),T):P(b)}function U(b){return b===l?(e.consume(b),l=null,O):b===null||G(b)?n(b):(e.consume(b),U)}function P(b){return b===null||b===34||b===39||b===47||b===60||b===61||b===62||b===96||ie(b)?x(b):(e.consume(b),P)}function O(b){return b===47||b===62||K(b)?A(b):n(b)}function y(b){return b===62?(e.consume(b),I):n(b)}function I(b){return b===null||G(b)?C(b):K(b)?(e.consume(b),I):n(b)}function C(b){return b===45&&a===2?(e.consume(b),H):b===60&&a===1?(e.consume(b),W):b===62&&a===4?(e.consume(b),te):b===63&&a===3?(e.consume(b),h):b===93&&a===5?(e.consume(b),oe):G(b)&&(a===6||a===7)?(e.exit("htmlFlowData"),e.check(Eg,z,M)(b)):b===null||G(b)?(e.exit("htmlFlowData"),M(b)):(e.consume(b),C)}function M(b){return e.check(yg,v,z)(b)}function v(b){return e.enter("lineEnding"),e.consume(b),e.exit("lineEnding"),L}function L(b){return b===null||G(b)?M(b):(e.enter("htmlFlowData"),C(b))}function H(b){return b===45?(e.consume(b),h):C(b)}function W(b){return b===47?(e.consume(b),o="",re):C(b)}function re(b){if(b===62){const Q=o.toLowerCase();return Ml.includes(Q)?(e.consume(b),te):C(b)}return Ee(b)&&o.length<8?(e.consume(b),o+=String.fromCharCode(b),re):C(b)}function oe(b){return b===93?(e.consume(b),h):C(b)}function h(b){return b===62?(e.consume(b),te):b===45&&a===2?(e.consume(b),h):C(b)}function te(b){return b===null||G(b)?(e.exit("htmlFlowData"),z(b)):(e.consume(b),te)}function z(b){return e.exit("htmlFlow"),t(b)}}function kg(e,t,n){const r=this;return a;function a(o){return G(o)?(e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),i):n(o)}function i(o){return r.parser.lazy[r.now().line]?n(o):t(o)}}function Tg(e,t,n){return r;function r(a){return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),e.attempt(Tt,t,n)}}const Ag={name:"htmlText",tokenize:_g};function _g(e,t,n){const r=this;let a,i,o;return s;function s(h){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(h),l}function l(h){return h===33?(e.consume(h),u):h===47?(e.consume(h),x):h===63?(e.consume(h),A):Ee(h)?(e.consume(h),P):n(h)}function u(h){return h===45?(e.consume(h),d):h===91?(e.consume(h),i=0,m):Ee(h)?(e.consume(h),_):n(h)}function d(h){return h===45?(e.consume(h),g):n(h)}function c(h){return h===null?n(h):h===45?(e.consume(h),p):G(h)?(o=c,W(h)):(e.consume(h),c)}function p(h){return h===45?(e.consume(h),g):c(h)}function g(h){return h===62?H(h):h===45?p(h):c(h)}function m(h){const te="CDATA[";return h===te.charCodeAt(i++)?(e.consume(h),i===te.length?w:m):n(h)}function w(h){return h===null?n(h):h===93?(e.consume(h),k):G(h)?(o=w,W(h)):(e.consume(h),w)}function k(h){return h===93?(e.consume(h),E):w(h)}function E(h){return h===62?H(h):h===93?(e.consume(h),E):w(h)}function _(h){return h===null||h===62?H(h):G(h)?(o=_,W(h)):(e.consume(h),_)}function A(h){return h===null?n(h):h===63?(e.consume(h),N):G(h)?(o=A,W(h)):(e.consume(h),A)}function N(h){return h===62?H(h):A(h)}function x(h){return Ee(h)?(e.consume(h),T):n(h)}function T(h){return h===45||fe(h)?(e.consume(h),T):U(h)}function U(h){return G(h)?(o=U,W(h)):K(h)?(e.consume(h),U):H(h)}function P(h){return h===45||fe(h)?(e.consume(h),P):h===47||h===62||ie(h)?O(h):n(h)}function O(h){return h===47?(e.consume(h),H):h===58||h===95||Ee(h)?(e.consume(h),y):G(h)?(o=O,W(h)):K(h)?(e.consume(h),O):H(h)}function y(h){return h===45||h===46||h===58||h===95||fe(h)?(e.consume(h),y):I(h)}function I(h){return h===61?(e.consume(h),C):G(h)?(o=I,W(h)):K(h)?(e.consume(h),I):O(h)}function C(h){return h===null||h===60||h===61||h===62||h===96?n(h):h===34||h===39?(e.consume(h),a=h,M):G(h)?(o=C,W(h)):K(h)?(e.consume(h),C):(e.consume(h),v)}function M(h){return h===a?(e.consume(h),a=void 0,L):h===null?n(h):G(h)?(o=M,W(h)):(e.consume(h),M)}function v(h){return h===null||h===34||h===39||h===60||h===61||h===96?n(h):h===47||h===62||ie(h)?O(h):(e.consume(h),v)}function L(h){return h===47||h===62||ie(h)?O(h):n(h)}function H(h){return h===62?(e.consume(h),e.exit("htmlTextData"),e.exit("htmlText"),t):n(h)}function W(h){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(h),e.exit("lineEnding"),re}function re(h){return K(h)?J(e,oe,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(h):oe(h)}function oe(h){return e.enter("htmlTextData"),o(h)}}const er={name:"labelEnd",resolveAll:xg,resolveTo:vg,tokenize:Cg},Ig={tokenize:Og},Ng={tokenize:Lg},Rg={tokenize:Dg};function xg(e){let t=-1;const n=[];for(;++t<e.length;){const r=e[t][1];if(n.push(e[t]),r.type==="labelImage"||r.type==="labelLink"||r.type==="labelEnd"){const a=r.type==="labelImage"?4:2;r.type="data",t+=a}}return e.length!==n.length&&Te(e,0,e.length,n),e}function vg(e,t){let n=e.length,r=0,a,i,o,s;for(;n--;)if(a=e[n][1],i){if(a.type==="link"||a.type==="labelLink"&&a._inactive)break;e[n][0]==="enter"&&a.type==="labelLink"&&(a._inactive=!0)}else if(o){if(e[n][0]==="enter"&&(a.type==="labelImage"||a.type==="labelLink")&&!a._balanced&&(i=n,a.type!=="labelLink")){r=2;break}}else a.type==="labelEnd"&&(o=n);const l={type:e[i][1].type==="labelLink"?"link":"image",start:{...e[i][1].start},end:{...e[e.length-1][1].end}},u={type:"label",start:{...e[i][1].start},end:{...e[o][1].end}},d={type:"labelText",start:{...e[i+r+2][1].end},end:{...e[o-2][1].start}};return s=[["enter",l,t],["enter",u,t]],s=Ae(s,e.slice(i+1,i+r+3)),s=Ae(s,[["enter",d,t]]),s=Ae(s,qt(t.parser.constructs.insideSpan.null,e.slice(i+r+4,o-3),t)),s=Ae(s,[["exit",d,t],e[o-2],e[o-1],["exit",u,t]]),s=Ae(s,e.slice(o+1)),s=Ae(s,[["exit",l,t]]),Te(e,i,e.length,s),e}function Cg(e,t,n){const r=this;let a=r.events.length,i,o;for(;a--;)if((r.events[a][1].type==="labelImage"||r.events[a][1].type==="labelLink")&&!r.events[a][1]._balanced){i=r.events[a][1];break}return s;function s(p){return i?i._inactive?c(p):(o=r.parser.defined.includes(Ie(r.sliceSerialize({start:i.end,end:r.now()}))),e.enter("labelEnd"),e.enter("labelMarker"),e.consume(p),e.exit("labelMarker"),e.exit("labelEnd"),l):n(p)}function l(p){return p===40?e.attempt(Ig,d,o?d:c)(p):p===91?e.attempt(Ng,d,o?u:c)(p):o?d(p):c(p)}function u(p){return e.attempt(Rg,d,c)(p)}function d(p){return t(p)}function c(p){return i._balanced=!0,n(p)}}function Og(e,t,n){return r;function r(c){return e.enter("resource"),e.enter("resourceMarker"),e.consume(c),e.exit("resourceMarker"),a}function a(c){return ie(c)?ft(e,i)(c):i(c)}function i(c){return c===41?d(c):zu(e,o,s,"resourceDestination","resourceDestinationLiteral","resourceDestinationLiteralMarker","resourceDestinationRaw","resourceDestinationString",32)(c)}function o(c){return ie(c)?ft(e,l)(c):d(c)}function s(c){return n(c)}function l(c){return c===34||c===39||c===40?ju(e,u,n,"resourceTitle","resourceTitleMarker","resourceTitleString")(c):d(c)}function u(c){return ie(c)?ft(e,d)(c):d(c)}function d(c){return c===41?(e.enter("resourceMarker"),e.consume(c),e.exit("resourceMarker"),e.exit("resource"),t):n(c)}}function Lg(e,t,n){const r=this;return a;function a(s){return Gu.call(r,e,i,o,"reference","referenceMarker","referenceString")(s)}function i(s){return r.parser.defined.includes(Ie(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)))?t(s):n(s)}function o(s){return n(s)}}function Dg(e,t,n){return r;function r(i){return e.enter("reference"),e.enter("referenceMarker"),e.consume(i),e.exit("referenceMarker"),a}function a(i){return i===93?(e.enter("referenceMarker"),e.consume(i),e.exit("referenceMarker"),e.exit("reference"),t):n(i)}}const Mg={name:"labelStartImage",resolveAll:er.resolveAll,tokenize:Fg};function Fg(e,t,n){const r=this;return a;function a(s){return e.enter("labelImage"),e.enter("labelImageMarker"),e.consume(s),e.exit("labelImageMarker"),i}function i(s){return s===91?(e.enter("labelMarker"),e.consume(s),e.exit("labelMarker"),e.exit("labelImage"),o):n(s)}function o(s){return s===94&&"_hiddenFootnoteSupport"in r.parser.constructs?n(s):t(s)}}const Ug={name:"labelStartLink",resolveAll:er.resolveAll,tokenize:Bg};function Bg(e,t,n){const r=this;return a;function a(o){return e.enter("labelLink"),e.enter("labelMarker"),e.consume(o),e.exit("labelMarker"),e.exit("labelLink"),i}function i(o){return o===94&&"_hiddenFootnoteSupport"in r.parser.constructs?n(o):t(o)}}const dn={name:"lineEnding",tokenize:Pg};function Pg(e,t){return n;function n(r){return e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),J(e,t,"linePrefix")}}const Bt={name:"thematicBreak",tokenize:$g};function $g(e,t,n){let r=0,a;return i;function i(u){return e.enter("thematicBreak"),o(u)}function o(u){return a=u,s(u)}function s(u){return u===a?(e.enter("thematicBreakSequence"),l(u)):r>=3&&(u===null||G(u))?(e.exit("thematicBreak"),t(u)):n(u)}function l(u){return u===a?(e.consume(u),r++,l):(e.exit("thematicBreakSequence"),K(u)?J(e,s,"whitespace")(u):s(u))}}const ye={continuation:{tokenize:Hg},exit:Wg,name:"list",tokenize:jg},zg={partial:!0,tokenize:qg},Gg={partial:!0,tokenize:Vg};function jg(e,t,n){const r=this,a=r.events[r.events.length-1];let i=a&&a[1].type==="linePrefix"?a[2].sliceSerialize(a[1],!0).length:0,o=0;return s;function s(g){const m=r.containerState.type||(g===42||g===43||g===45?"listUnordered":"listOrdered");if(m==="listUnordered"?!r.containerState.marker||g===r.containerState.marker:Ln(g)){if(r.containerState.type||(r.containerState.type=m,e.enter(m,{_container:!0})),m==="listUnordered")return e.enter("listItemPrefix"),g===42||g===45?e.check(Bt,n,u)(g):u(g);if(!r.interrupt||g===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),l(g)}return n(g)}function l(g){return Ln(g)&&++o<10?(e.consume(g),l):(!r.interrupt||o<2)&&(r.containerState.marker?g===r.containerState.marker:g===41||g===46)?(e.exit("listItemValue"),u(g)):n(g)}function u(g){return e.enter("listItemMarker"),e.consume(g),e.exit("listItemMarker"),r.containerState.marker=r.containerState.marker||g,e.check(Tt,r.interrupt?n:d,e.attempt(zg,p,c))}function d(g){return r.containerState.initialBlankLine=!0,i++,p(g)}function c(g){return K(g)?(e.enter("listItemPrefixWhitespace"),e.consume(g),e.exit("listItemPrefixWhitespace"),p):n(g)}function p(g){return r.containerState.size=i+r.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(g)}}function Hg(e,t,n){const r=this;return r.containerState._closeFlow=void 0,e.check(Tt,a,i);function a(s){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,J(e,t,"listItemIndent",r.containerState.size+1)(s)}function i(s){return r.containerState.furtherBlankLines||!K(s)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,o(s)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt(Gg,t,o)(s))}function o(s){return r.containerState._closeFlow=!0,r.interrupt=void 0,J(e,e.attempt(ye,t,n),"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(s)}}function Vg(e,t,n){const r=this;return J(e,a,"listItemIndent",r.containerState.size+1);function a(i){const o=r.events[r.events.length-1];return o&&o[1].type==="listItemIndent"&&o[2].sliceSerialize(o[1],!0).length===r.containerState.size?t(i):n(i)}}function Wg(e){e.exit(this.containerState.type)}function qg(e,t,n){const r=this;return J(e,a,"listItemPrefixWhitespace",r.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function a(i){const o=r.events[r.events.length-1];return!K(i)&&o&&o[1].type==="listItemPrefixWhitespace"?t(i):n(i)}}const Fl={name:"setextUnderline",resolveTo:Yg,tokenize:Kg};function Yg(e,t){let n=e.length,r,a,i;for(;n--;)if(e[n][0]==="enter"){if(e[n][1].type==="content"){r=n;break}e[n][1].type==="paragraph"&&(a=n)}else e[n][1].type==="content"&&e.splice(n,1),!i&&e[n][1].type==="definition"&&(i=n);const o={type:"setextHeading",start:{...e[r][1].start},end:{...e[e.length-1][1].end}};return e[a][1].type="setextHeadingText",i?(e.splice(a,0,["enter",o,t]),e.splice(i+1,0,["exit",e[r][1],t]),e[r][1].end={...e[i][1].end}):e[r][1]=o,e.push(["exit",o,t]),e}function Kg(e,t,n){const r=this;let a;return i;function i(u){let d=r.events.length,c;for(;d--;)if(r.events[d][1].type!=="lineEnding"&&r.events[d][1].type!=="linePrefix"&&r.events[d][1].type!=="content"){c=r.events[d][1].type==="paragraph";break}return!r.parser.lazy[r.now().line]&&(r.interrupt||c)?(e.enter("setextHeadingLine"),a=u,o(u)):n(u)}function o(u){return e.enter("setextHeadingLineSequence"),s(u)}function s(u){return u===a?(e.consume(u),s):(e.exit("setextHeadingLineSequence"),K(u)?J(e,l,"lineSuffix")(u):l(u))}function l(u){return u===null||G(u)?(e.exit("setextHeadingLine"),t(u)):n(u)}}const Xg={tokenize:Zg};function Zg(e){const t=this,n=e.attempt(Tt,r,e.attempt(this.parser.constructs.flowInitial,a,J(e,e.attempt(this.parser.constructs.flow,a,e.attempt(ng,a)),"linePrefix")));return n;function r(i){if(i===null){e.consume(i);return}return e.enter("lineEndingBlank"),e.consume(i),e.exit("lineEndingBlank"),t.currentConstruct=void 0,n}function a(i){if(i===null){e.consume(i);return}return e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),t.currentConstruct=void 0,n}}const Qg={resolveAll:Vu()},Jg=Hu("string"),ef=Hu("text");function Hu(e){return{resolveAll:Vu(e==="text"?tf:void 0),tokenize:t};function t(n){const r=this,a=this.parser.constructs[e],i=n.attempt(a,o,s);return o;function o(d){return u(d)?i(d):s(d)}function s(d){if(d===null){n.consume(d);return}return n.enter("data"),n.consume(d),l}function l(d){return u(d)?(n.exit("data"),i(d)):(n.consume(d),l)}function u(d){if(d===null)return!0;const c=a[d];let p=-1;if(c)for(;++p<c.length;){const g=c[p];if(!g.previous||g.previous.call(r,r.previous))return!0}return!1}}}function Vu(e){return t;function t(n,r){let a=-1,i;for(;++a<=n.length;)i===void 0?n[a]&&n[a][1].type==="data"&&(i=a,a++):(!n[a]||n[a][1].type!=="data")&&(a!==i+2&&(n[i][1].end=n[a-1][1].end,n.splice(i+2,a-i-2),a=i+2),i=void 0);return e?e(n,r):n}}function tf(e,t){let n=0;for(;++n<=e.length;)if((n===e.length||e[n][1].type==="lineEnding")&&e[n-1][1].type==="data"){const r=e[n-1][1],a=t.sliceStream(r);let i=a.length,o=-1,s=0,l;for(;i--;){const u=a[i];if(typeof u=="string"){for(o=u.length;u.charCodeAt(o-1)===32;)s++,o--;if(o)break;o=-1}else if(u===-2)l=!0,s++;else if(u!==-1){i++;break}}if(t._contentTypeTextTrailing&&n===e.length&&(s=0),s){const u={type:n===e.length||l||s<2?"lineSuffix":"hardBreakTrailing",start:{_bufferIndex:i?o:r.start._bufferIndex+o,_index:r.start._index+i,line:r.end.line,column:r.end.column-s,offset:r.end.offset-s},end:{...r.end}};r.end={...u.start},r.start.offset===r.end.offset?Object.assign(r,u):(e.splice(n,0,["enter",u,t],["exit",u,t]),n+=2)}n++}return e}const nf={42:ye,43:ye,45:ye,48:ye,49:ye,50:ye,51:ye,52:ye,53:ye,54:ye,55:ye,56:ye,57:ye,62:Uu},rf={91:sg},af={[-2]:cn,[-1]:cn,32:cn},of={35:gg,42:Bt,45:[Fl,Bt],60:hg,61:Fl,95:Bt,96:Dl,126:Dl},sf={38:Pu,92:Bu},lf={[-5]:dn,[-4]:dn,[-3]:dn,33:Mg,38:Pu,42:Dn,60:[Up,Ag],91:Ug,92:[dg,Bu],93:er,95:Dn,96:Xp},uf={null:[Dn,Qg]},cf={null:[42,95]},df={null:[]},pf=Object.freeze(Object.defineProperty({__proto__:null,attentionMarkers:cf,contentInitial:rf,disable:df,document:nf,flow:of,flowInitial:af,insideSpan:uf,string:sf,text:lf},Symbol.toStringTag,{value:"Module"}));function gf(e,t,n){let r={_bufferIndex:-1,_index:0,line:n&&n.line||1,column:n&&n.column||1,offset:n&&n.offset||0};const a={},i=[];let o=[],s=[];const l={attempt:U(x),check:U(T),consume:_,enter:A,exit:N,interrupt:U(T,{interrupt:!0})},u={code:null,containerState:{},defineSkip:w,events:[],now:m,parser:e,previous:null,sliceSerialize:p,sliceStream:g,write:c};let d=t.tokenize.call(u,l);return t.resolveAll&&i.push(t),u;function c(I){return o=Ae(o,I),k(),o[o.length-1]!==null?[]:(P(t,0),u.events=qt(i,u.events,u),u.events)}function p(I,C){return mf(g(I),C)}function g(I){return ff(o,I)}function m(){const{_bufferIndex:I,_index:C,line:M,column:v,offset:L}=r;return{_bufferIndex:I,_index:C,line:M,column:v,offset:L}}function w(I){a[I.line]=I.column,y()}function k(){let I;for(;r._index<o.length;){const C=o[r._index];if(typeof C=="string")for(I=r._index,r._bufferIndex<0&&(r._bufferIndex=0);r._index===I&&r._bufferIndex<C.length;)E(C.charCodeAt(r._bufferIndex));else E(C)}}function E(I){d=d(I)}function _(I){G(I)?(r.line++,r.column=1,r.offset+=I===-3?2:1,y()):I!==-1&&(r.column++,r.offset++),r._bufferIndex<0?r._index++:(r._bufferIndex++,r._bufferIndex===o[r._index].length&&(r._bufferIndex=-1,r._index++)),u.previous=I}function A(I,C){const M=C||{};return M.type=I,M.start=m(),u.events.push(["enter",M,u]),s.push(M),M}function N(I){const C=s.pop();return C.end=m(),u.events.push(["exit",C,u]),C}function x(I,C){P(I,C.from)}function T(I,C){C.restore()}function U(I,C){return M;function M(v,L,H){let W,re,oe,h;return Array.isArray(v)?z(v):"tokenize"in v?z([v]):te(v);function te($){return Y;function Y(j){const ee=j!==null&&$[j],le=j!==null&&$.null,ue=[...Array.isArray(ee)?ee:ee?[ee]:[],...Array.isArray(le)?le:le?[le]:[]];return z(ue)(j)}}function z($){return W=$,re=0,$.length===0?H:b($[re])}function b($){return Y;function Y(j){return h=O(),oe=$,$.partial||(u.currentConstruct=$),$.name&&u.parser.constructs.disable.null.includes($.name)?ne():$.tokenize.call(C?Object.assign(Object.create(u),C):u,l,Q,ne)(j)}}function Q($){return I(oe,h),L}function ne($){return h.restore(),++re<W.length?b(W[re]):H}}}function P(I,C){I.resolveAll&&!i.includes(I)&&i.push(I),I.resolve&&Te(u.events,C,u.events.length-C,I.resolve(u.events.slice(C),u)),I.resolveTo&&(u.events=I.resolveTo(u.events,u))}function O(){const I=m(),C=u.previous,M=u.currentConstruct,v=u.events.length,L=Array.from(s);return{from:v,restore:H};function H(){r=I,u.previous=C,u.currentConstruct=M,u.events.length=v,s=L,y()}}function y(){r.line in a&&r.column<2&&(r.column=a[r.line],r.offset+=a[r.line]-1)}}function ff(e,t){const n=t.start._index,r=t.start._bufferIndex,a=t.end._index,i=t.end._bufferIndex;let o;if(n===a)o=[e[n].slice(r,i)];else{if(o=e.slice(n,a),r>-1){const s=o[0];typeof s=="string"?o[0]=s.slice(r):o.shift()}i>0&&o.push(e[a].slice(0,i))}return o}function mf(e,t){let n=-1;const r=[];let a;for(;++n<e.length;){const i=e[n];let o;if(typeof i=="string")o=i;else switch(i){case-5:{o="\r";break}case-4:{o=`
3
3
  `;break}case-3:{o=`\r
4
4
  `;break}case-2:{o=t?" ":" ";break}case-1:{if(!t&&a)continue;o=" ";break}default:o=String.fromCharCode(i)}a=i===-2,r.push(o)}return r.join("")}function bf(e){const r={constructs:Mu([pf,...(e||{}).extensions||[]]),content:a(vp),defined:[],document:a(Op),flow:a(Xg),lazy:{},string:a(Jg),text:a(ef)};return r;function a(i){return o;function o(s){return gf(r,i,s)}}}function hf(e){for(;!$u(e););return e}const Ul=/[\0\t\n\r]/g;function Ef(){let e=1,t="",n=!0,r;return a;function a(i,o,s){const l=[];let u,d,c,p,g;for(i=t+(typeof i=="string"?i.toString():new TextDecoder(o||void 0).decode(i)),c=0,t="",n&&(i.charCodeAt(0)===65279&&c++,n=void 0);c<i.length;){if(Ul.lastIndex=c,u=Ul.exec(i),p=u&&u.index!==void 0?u.index:i.length,g=i.charCodeAt(p),!u){t=i.slice(c);break}if(g===10&&c===p&&r)l.push(-3),r=void 0;else switch(r&&(l.push(-5),r=void 0),c<p&&(l.push(i.slice(c,p)),e+=p-c),g){case 0:{l.push(65533),e++;break}case 9:{for(d=Math.ceil(e/4)*4,l.push(-2);e++<d;)l.push(-1);break}case 10:{l.push(-4),e=1;break}default:r=!0,e=1}c=p+1}return s&&(r&&l.push(-5),t&&l.push(t),l.push(null)),l}}const yf=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function Sf(e){return e.replace(yf,wf)}function wf(e,t,n){if(t)return t;if(n.charCodeAt(0)===35){const a=n.charCodeAt(1),i=a===120||a===88;return Fu(n.slice(i?2:1),i?16:10)}return yt(n)||e}const Wu={}.hasOwnProperty;function kf(e,t,n){return typeof t!="string"&&(n=t,t=void 0),Tf(n)(hf(bf(n).document().write(Ef()(e,t,!0))))}function Tf(e){const t={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:i(gl),autolinkProtocol:O,autolinkEmail:O,atxHeading:i(Ct),blockQuote:i(le),characterEscape:O,characterReference:O,codeFenced:i(ue),codeFencedFenceInfo:o,codeFencedFenceMeta:o,codeIndented:i(ue,o),codeText:i(De,o),codeTextData:O,data:O,codeFlowValue:O,definition:i(Pe),definitionDestinationString:o,definitionLabelString:o,definitionTitleString:o,emphasis:i(Me),hardBreakEscape:i(dl),hardBreakTrailing:i(dl),htmlFlow:i(pl,o),htmlFlowData:O,htmlText:i(pl,o),htmlTextData:O,image:i(Uc),label:o,link:i(gl),listItem:i(Bc),listItemValue:p,listOrdered:i(fl,c),listUnordered:i(fl),paragraph:i(Pc),reference:b,referenceString:o,resourceDestinationString:o,resourceTitleString:o,setextHeading:i(Ct),strong:i($c),thematicBreak:i(Gc)},exit:{atxHeading:l(),atxHeadingSequence:x,autolink:l(),autolinkEmail:ee,autolinkProtocol:j,blockQuote:l(),characterEscapeValue:y,characterReferenceMarkerHexadecimal:ne,characterReferenceMarkerNumeric:ne,characterReferenceValue:$,characterReference:Y,codeFenced:l(k),codeFencedFence:w,codeFencedFenceInfo:g,codeFencedFenceMeta:m,codeFlowValue:y,codeIndented:l(E),codeText:l(L),codeTextData:y,data:y,definition:l(),definitionDestinationString:N,definitionLabelString:_,definitionTitleString:A,emphasis:l(),hardBreakEscape:l(C),hardBreakTrailing:l(C),htmlFlow:l(M),htmlFlowData:y,htmlText:l(v),htmlTextData:y,image:l(W),label:oe,labelText:re,lineEnding:I,link:l(H),listItem:l(),listOrdered:l(),listUnordered:l(),paragraph:l(),referenceString:Q,resourceDestinationString:h,resourceTitleString:te,resource:z,setextHeading:l(P),setextHeadingLineSequence:U,setextHeadingText:T,strong:l(),thematicBreak:l()}};qu(t,(e||{}).mdastExtensions||[]);const n={};return r;function r(R){let B={type:"root",children:[]};const V={stack:[B],tokenStack:[],config:t,enter:s,exit:u,buffer:o,resume:d,data:n},Z=[];let ae=-1;for(;++ae<R.length;)if(R[ae][1].type==="listOrdered"||R[ae][1].type==="listUnordered")if(R[ae][0]==="enter")Z.push(ae);else{const _e=Z.pop();ae=a(R,_e,ae)}for(ae=-1;++ae<R.length;){const _e=t[R[ae][0]];Wu.call(_e,R[ae][1].type)&&_e[R[ae][1].type].call(Object.assign({sliceSerialize:R[ae][2].sliceSerialize},V),R[ae][1])}if(V.tokenStack.length>0){const _e=V.tokenStack[V.tokenStack.length-1];(_e[1]||Bl).call(V,void 0,_e[0])}for(B.position={start:Fe(R.length>0?R[0][1].start:{line:1,column:1,offset:0}),end:Fe(R.length>0?R[R.length-2][1].end:{line:1,column:1,offset:0})},ae=-1;++ae<t.transforms.length;)B=t.transforms[ae](B)||B;return B}function a(R,B,V){let Z=B-1,ae=-1,_e=!1,$e,ve,st,lt;for(;++Z<=V;){const we=R[Z];switch(we[1].type){case"listUnordered":case"listOrdered":case"blockQuote":{we[0]==="enter"?ae++:ae--,lt=void 0;break}case"lineEndingBlank":{we[0]==="enter"&&($e&&!lt&&!ae&&!st&&(st=Z),lt=void 0);break}case"linePrefix":case"listItemValue":case"listItemMarker":case"listItemPrefix":case"listItemPrefixWhitespace":break;default:lt=void 0}if(!ae&&we[0]==="enter"&&we[1].type==="listItemPrefix"||ae===-1&&we[0]==="exit"&&(we[1].type==="listUnordered"||we[1].type==="listOrdered")){if($e){let We=Z;for(ve=void 0;We--;){const Ce=R[We];if(Ce[1].type==="lineEnding"||Ce[1].type==="lineEndingBlank"){if(Ce[0]==="exit")continue;ve&&(R[ve][1].type="lineEndingBlank",_e=!0),Ce[1].type="lineEnding",ve=We}else if(!(Ce[1].type==="linePrefix"||Ce[1].type==="blockQuotePrefix"||Ce[1].type==="blockQuotePrefixWhitespace"||Ce[1].type==="blockQuoteMarker"||Ce[1].type==="listItemIndent"))break}st&&(!ve||st<ve)&&($e._spread=!0),$e.end=Object.assign({},ve?R[ve][1].start:we[1].end),R.splice(ve||Z,0,["exit",$e,we[2]]),Z++,V++}if(we[1].type==="listItemPrefix"){const We={type:"listItem",_spread:!1,start:Object.assign({},we[1].start),end:void 0};$e=We,R.splice(Z,0,["enter",We,we[2]]),Z++,V++,st=void 0,lt=!0}}}return R[B][1]._spread=_e,V}function i(R,B){return V;function V(Z){s.call(this,R(Z),Z),B&&B.call(this,Z)}}function o(){this.stack.push({type:"fragment",children:[]})}function s(R,B,V){this.stack[this.stack.length-1].children.push(R),this.stack.push(R),this.tokenStack.push([B,V||void 0]),R.position={start:Fe(B.start),end:void 0}}function l(R){return B;function B(V){R&&R.call(this,V),u.call(this,V)}}function u(R,B){const V=this.stack.pop(),Z=this.tokenStack.pop();if(Z)Z[0].type!==R.type&&(B?B.call(this,R,Z[0]):(Z[1]||Bl).call(this,R,Z[0]));else throw new Error("Cannot close `"+R.type+"` ("+gt({start:R.start,end:R.end})+"): it’s not open");V.position.end=Fe(R.end)}function d(){return Jn(this.stack.pop())}function c(){this.data.expectingFirstListItemValue=!0}function p(R){if(this.data.expectingFirstListItemValue){const B=this.stack[this.stack.length-2];B.start=Number.parseInt(this.sliceSerialize(R),10),this.data.expectingFirstListItemValue=void 0}}function g(){const R=this.resume(),B=this.stack[this.stack.length-1];B.lang=R}function m(){const R=this.resume(),B=this.stack[this.stack.length-1];B.meta=R}function w(){this.data.flowCodeInside||(this.buffer(),this.data.flowCodeInside=!0)}function k(){const R=this.resume(),B=this.stack[this.stack.length-1];B.value=R.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),this.data.flowCodeInside=void 0}function E(){const R=this.resume(),B=this.stack[this.stack.length-1];B.value=R.replace(/(\r?\n|\r)$/g,"")}function _(R){const B=this.resume(),V=this.stack[this.stack.length-1];V.label=B,V.identifier=Ie(this.sliceSerialize(R)).toLowerCase()}function A(){const R=this.resume(),B=this.stack[this.stack.length-1];B.title=R}function N(){const R=this.resume(),B=this.stack[this.stack.length-1];B.url=R}function x(R){const B=this.stack[this.stack.length-1];if(!B.depth){const V=this.sliceSerialize(R).length;B.depth=V}}function T(){this.data.setextHeadingSlurpLineEnding=!0}function U(R){const B=this.stack[this.stack.length-1];B.depth=this.sliceSerialize(R).codePointAt(0)===61?1:2}function P(){this.data.setextHeadingSlurpLineEnding=void 0}function O(R){const V=this.stack[this.stack.length-1].children;let Z=V[V.length-1];(!Z||Z.type!=="text")&&(Z=zc(),Z.position={start:Fe(R.start),end:void 0},V.push(Z)),this.stack.push(Z)}function y(R){const B=this.stack.pop();B.value+=this.sliceSerialize(R),B.position.end=Fe(R.end)}function I(R){const B=this.stack[this.stack.length-1];if(this.data.atHardBreak){const V=B.children[B.children.length-1];V.position.end=Fe(R.end),this.data.atHardBreak=void 0;return}!this.data.setextHeadingSlurpLineEnding&&t.canContainEols.includes(B.type)&&(O.call(this,R),y.call(this,R))}function C(){this.data.atHardBreak=!0}function M(){const R=this.resume(),B=this.stack[this.stack.length-1];B.value=R}function v(){const R=this.resume(),B=this.stack[this.stack.length-1];B.value=R}function L(){const R=this.resume(),B=this.stack[this.stack.length-1];B.value=R}function H(){const R=this.stack[this.stack.length-1];if(this.data.inReference){const B=this.data.referenceType||"shortcut";R.type+="Reference",R.referenceType=B,delete R.url,delete R.title}else delete R.identifier,delete R.label;this.data.referenceType=void 0}function W(){const R=this.stack[this.stack.length-1];if(this.data.inReference){const B=this.data.referenceType||"shortcut";R.type+="Reference",R.referenceType=B,delete R.url,delete R.title}else delete R.identifier,delete R.label;this.data.referenceType=void 0}function re(R){const B=this.sliceSerialize(R),V=this.stack[this.stack.length-2];V.label=Sf(B),V.identifier=Ie(B).toLowerCase()}function oe(){const R=this.stack[this.stack.length-1],B=this.resume(),V=this.stack[this.stack.length-1];if(this.data.inReference=!0,V.type==="link"){const Z=R.children;V.children=Z}else V.alt=B}function h(){const R=this.resume(),B=this.stack[this.stack.length-1];B.url=R}function te(){const R=this.resume(),B=this.stack[this.stack.length-1];B.title=R}function z(){this.data.inReference=void 0}function b(){this.data.referenceType="collapsed"}function Q(R){const B=this.resume(),V=this.stack[this.stack.length-1];V.label=B,V.identifier=Ie(this.sliceSerialize(R)).toLowerCase(),this.data.referenceType="full"}function ne(R){this.data.characterReferenceType=R.type}function $(R){const B=this.sliceSerialize(R),V=this.data.characterReferenceType;let Z;V?(Z=Fu(B,V==="characterReferenceMarkerNumeric"?10:16),this.data.characterReferenceType=void 0):Z=yt(B);const ae=this.stack[this.stack.length-1];ae.value+=Z}function Y(R){const B=this.stack.pop();B.position.end=Fe(R.end)}function j(R){y.call(this,R);const B=this.stack[this.stack.length-1];B.url=this.sliceSerialize(R)}function ee(R){y.call(this,R);const B=this.stack[this.stack.length-1];B.url="mailto:"+this.sliceSerialize(R)}function le(){return{type:"blockquote",children:[]}}function ue(){return{type:"code",lang:null,meta:null,value:""}}function De(){return{type:"inlineCode",value:""}}function Pe(){return{type:"definition",identifier:"",label:null,title:null,url:""}}function Me(){return{type:"emphasis",children:[]}}function Ct(){return{type:"heading",depth:0,children:[]}}function dl(){return{type:"break"}}function pl(){return{type:"html",value:""}}function Uc(){return{type:"image",title:null,url:"",alt:null}}function gl(){return{type:"link",title:null,url:"",children:[]}}function fl(R){return{type:"list",ordered:R.type==="listOrdered",start:null,spread:R._spread,children:[]}}function Bc(R){return{type:"listItem",spread:R._spread,checked:null,children:[]}}function Pc(){return{type:"paragraph",children:[]}}function $c(){return{type:"strong",children:[]}}function zc(){return{type:"text",value:""}}function Gc(){return{type:"thematicBreak"}}}function Fe(e){return{line:e.line,column:e.column,offset:e.offset}}function qu(e,t){let n=-1;for(;++n<t.length;){const r=t[n];Array.isArray(r)?qu(e,r):Af(e,r)}}function Af(e,t){let n;for(n in t)if(Wu.call(t,n))switch(n){case"canContainEols":{const r=t[n];r&&e[n].push(...r);break}case"transforms":{const r=t[n];r&&e[n].push(...r);break}case"enter":case"exit":{const r=t[n];r&&Object.assign(e[n],r);break}}}function Bl(e,t){throw e?new Error("Cannot close `"+e.type+"` ("+gt({start:e.start,end:e.end})+"): a different token (`"+t.type+"`, "+gt({start:t.start,end:t.end})+") is open"):new Error("Cannot close document, a token (`"+t.type+"`, "+gt({start:t.start,end:t.end})+") is still open")}function _f(e){const t=this;t.parser=n;function n(r){return kf(r,{...t.data("settings"),...e,extensions:t.data("micromarkExtensions")||[],mdastExtensions:t.data("fromMarkdownExtensions")||[]})}}function If(e,t){const n={type:"element",tagName:"blockquote",properties:{},children:e.wrap(e.all(t),!0)};return e.patch(t,n),e.applyData(t,n)}function Nf(e,t){const n={type:"element",tagName:"br",properties:{},children:[]};return e.patch(t,n),[e.applyData(t,n),{type:"text",value:`