fourth-spark 0.11.11 → 0.11.12

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fourth-spark",
3
- "version": "0.11.11",
3
+ "version": "0.11.12",
4
4
  "description": "AI Agent Platform — multi-repo agent management based on OpenCode",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -510,7 +510,7 @@ Please change the parent <Route path="${T}"> to <Route path="${T==="/"?"*":`${T}
510
510
  */const PF=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],lc=Oe("zap",PF);function mI(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var a=e.length;for(t=0;t<a;t++)e[t]&&(n=mI(e[t]))&&(r&&(r+=" "),r+=n)}else for(n in e)e[n]&&(r&&(r+=" "),r+=n);return r}function re(){for(var e,t,n=0,r="",a=arguments.length;n<a;n++)(e=arguments[n])&&(t=mI(e))&&(r&&(r+=" "),r+=t);return r}const Gw=e=>{let t;const n=new Set,r=(f,m)=>{const p=typeof f=="function"?f(t):f;if(!Object.is(p,t)){const b=t;t=m??(typeof p!="object"||p===null)?p:Object.assign({},t,p),n.forEach(x=>x(t,b))}},a=()=>t,c={setState:r,getState:a,getInitialState:()=>d,subscribe:f=>(n.add(f),()=>n.delete(f))},d=t=e(r,a,c);return c},BF=(e=>e?Gw(e):Gw),UF=e=>e;function FF(e,t=UF){const n=Ud.useSyncExternalStore(e.subscribe,Ud.useCallback(()=>t(e.getState()),[e,t]),Ud.useCallback(()=>t(e.getInitialState()),[e,t]));return Ud.useDebugValue(n),n}const Kw=e=>{const t=BF(e),n=r=>FF(t,r);return Object.assign(n,t),n},ei=(e=>e?Kw(e):Kw),jx="fs-theme";function pI(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function Vw(e){return e==="system"?pI():e}function Ww(e){e==="system"?document.documentElement.removeAttribute("data-theme"):document.documentElement.setAttribute("data-theme",e)}const Zy=ei((e,t)=>({preference:localStorage.getItem(jx)??"system",resolved:Vw(localStorage.getItem(jx)??"system"),cycle(){const n=["system","light","dark"],r=n[(n.indexOf(t().preference)+1)%n.length],a=Vw(r);localStorage.setItem(jx,r),Ww(r),e({preference:r,resolved:a})},init(){Ww(t().preference);const n=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{const{preference:a}=t();if(a==="system"){const s=pI();e({resolved:s})}};return n.addEventListener("change",r),()=>n.removeEventListener("change",r)}})),lp="fourth-spark-server-url";function zF(){if(typeof window>"u")return!1;const t=window.Capacitor;return typeof(t==null?void 0:t.isNativePlatform)=="function"&&t.isNativePlatform()}function j1(){return localStorage.getItem(lp)??""}function HF(e){const t=e.replace(/\/+$/,"");t?localStorage.setItem(lp,t):localStorage.removeItem(lp)}function Jy(){return localStorage.getItem(lp)??""}class ns extends Error{constructor(n,r){super(n);Pt(this,"status");this.name="ApiError",this.status=r}}async function we(e,t){let n;try{n=await fetch(j1()+e,{...t,headers:{Accept:"application/json",...t!=null&&t.body?{"Content-Type":"application/json"}:{},...t==null?void 0:t.headers}})}catch(a){throw new ns(a instanceof Error?a.message:"Network request failed",0)}if(!n.ok){const a=await n.text().catch(()=>"");throw new ns(a.trim()||`${n.status} ${n.statusText}`,n.status)}if(n.status===204)return;const r=await n.text();if(r)return JSON.parse(r)}function Zr(e,...t){if(Array.isArray(e))return e;if(e&&typeof e=="object"){const n=e;for(const r of[...t,"data","items"])if(Array.isArray(n[r]))return n[r]}return[]}async function $F(){return Zr(await we("/api/repos"),"repos")}async function qF(e,t,n,r){return we("/api/repos",{method:"POST",body:JSON.stringify({name:e,gitUrl:t,localPath:n,runtimeType:r})})}async function YF(e){return we("/api/repos/resolve",{method:"POST",body:JSON.stringify({localPath:e})})}async function GF(e,t){return we("/api/fs/browse",{method:"POST",body:JSON.stringify({path:e,showHidden:t})})}async function KF(e,t){return we("/api/repos/clone",{method:"POST",body:JSON.stringify({gitUrl:e,targetDir:t})})}async function VF(e){await we(`/api/repos/${encodeURIComponent(e)}`,{method:"DELETE"})}async function WF(e){await we(`/api/repos/${encodeURIComponent(e)}/start`,{method:"POST"})}async function XF(e){await we(`/api/repos/${encodeURIComponent(e)}/stop`,{method:"POST"})}async function QF(e){return we(`/api/repos/${encodeURIComponent(e)}/branches`)}async function ZF(e,t){return we(`/api/repos/${encodeURIComponent(e)}/checkout`,{method:"POST",body:JSON.stringify({branch:t})})}async function JF(e){return we(`/api/repos/${encodeURIComponent(e)}/pull`,{method:"POST"})}function et(e){return`/api/repos/${encodeURIComponent(e)}`}async function ez(e){return Zr(await we(`${et(e)}/workspaces`),"workspaces")}async function tz(e,t){await we(`${et(e)}/workspaces/${encodeURIComponent(t)}`,{method:"DELETE"})}async function nz(e){return we(`${et(e)}/workspaces/cleanup`,{method:"POST"})}async function rz(e,t){await we(`/api/repos/${e}/worktree`,{method:"PATCH",body:JSON.stringify({enabled:t})})}async function az(e,t){await we(`/api/repos/${e}/runtime`,{method:"PATCH",body:JSON.stringify({runtimeType:t})})}async function iz(e){return Zr(await we(`${et(e)}/sessions`),"sessions")}async function sz(e,t,n,r,a,s,o,c){return we(`${et(e)}/sessions`,{method:"POST",body:JSON.stringify({message:t,agent:n,model:r,variant:a,issueId:s,customAgentId:o,files:c})})}async function oz(e,t){await we(`${et(e)}/sessions/${encodeURIComponent(t)}`,{method:"DELETE"})}async function lz(e,t,n,r,a,s,o){await we(`${et(e)}/sessions/${encodeURIComponent(t)}/prompt`,{method:"POST",body:JSON.stringify({content:n,agent:r,model:a,variant:s,files:o})})}async function uz(e,t){await we(`${et(e)}/sessions/${encodeURIComponent(t)}/abort`,{method:"POST"})}async function cz(e,t,n){await we(`${et(e)}/sessions/${encodeURIComponent(t)}/questions/reply`,{method:"POST",body:JSON.stringify({answers:n})})}async function dz(e,t){await we(`${et(e)}/sessions/${encodeURIComponent(t)}/questions/reject`,{method:"POST"})}async function fz(e,t,n){return we(`${et(e)}/sessions/${encodeURIComponent(t)}/revert`,{method:"POST",body:JSON.stringify({messageID:n})})}function Xw(e){const t=e,n=t.info;if(n&&typeof n.id=="string"){const r=Array.isArray(t.parts)?t.parts:void 0;return{...n,...r?{parts:r}:{}}}return t}async function Qw(e,t,n){const r=new URLSearchParams;n!=null&&n.limit&&r.set("limit",String(n.limit)),n!=null&&n.before&&r.set("before",n.before);const a=r.toString(),s=`${et(e)}/sessions/${encodeURIComponent(t)}/messages${a?`?${a}`:""}`,o=await we(s);if(Array.isArray(o)){const f=o.map(Xw);return{messages:f,total:f.length,hasMore:!1}}const c=o,d=Array.isArray(c.messages)?c.messages:[];return{messages:d.map(Xw),total:c.total??d.length,hasMore:c.hasMore??!1}}async function hz(e,t){return we(`${et(e)}/sessions/${encodeURIComponent(t)}/status`)}async function mz(e,t){return we(`${et(e)}/sessions/${encodeURIComponent(t)}/links`)}async function pz(e,t){return we(`${et(e)}/sessions/snapshot/${encodeURIComponent(t)}`)}async function gI(e){return we(`${et(e)}/sessions/all-links`)}async function gz(e,t,n,r){await we(`${et(e)}/sessions/${encodeURIComponent(t)}/links`,{method:"POST",body:JSON.stringify({type:n,targetId:r})})}async function bz(e,t,n,r){await we(`${et(e)}/sessions/${encodeURIComponent(t)}/links`,{method:"DELETE",body:JSON.stringify({type:n,targetId:r})})}async function bI(){return Zr(await we("/api/custom-agents"))}async function xz(e){return we("/api/custom-agents",{method:"POST",body:JSON.stringify(e)})}async function yz(e,t){return we(`/api/custom-agents/${encodeURIComponent(e)}`,{method:"PUT",body:JSON.stringify(t)})}async function xI(e){await we(`/api/custom-agents/${encodeURIComponent(e)}`,{method:"DELETE"})}async function Zw(e){return we(`/api/custom-agents/${encodeURIComponent(e)}/export`)}async function vz(e){return we("/api/custom-agents/import",{method:"POST",body:JSON.stringify(e)})}async function yI(e,t){const n=new URLSearchParams;t!=null&&t.category&&n.set("category",t.category),t!=null&&t.includeSuperseded&&n.set("includeSuperseded","true");const r=n.toString();return we(`/api/custom-agents/${encodeURIComponent(e)}/memories${r?`?${r}`:""}`)}async function Ez(e,t,n){return we(`/api/custom-agents/${encodeURIComponent(e)}/memories/${encodeURIComponent(t)}`,{method:"PUT",body:JSON.stringify(n)})}async function Nz(e,t){await we(`/api/custom-agents/${encodeURIComponent(e)}/memories/${encodeURIComponent(t)}`,{method:"DELETE"})}async function _z(e,t){return we(`/api/custom-agents/${encodeURIComponent(e)}/memories/extract`,{method:"POST",body:JSON.stringify({sessionIds:t})})}async function Jw(e){return we(`/api/custom-agents/${encodeURIComponent(e)}/memories/stats`)}async function Tz(e){return we(`/api/custom-agents/${encodeURIComponent(e)}/memories/consolidate`,{method:"POST"})}async function D1(e){return we(`/api/custom-agents/${encodeURIComponent(e)}/sessions`)}async function vI(e){return Zr(await we(`${et(e)}/custom-agents`))}async function Sz(e,t){return we(`${et(e)}/custom-agents`,{method:"POST",body:JSON.stringify(t)})}async function Of(e){return Zr(await we(`${et(e)}/models`))}async function EI(){return Zr(await we("/api/prompt-fragments"))}async function wz(e){return we("/api/prompt-fragments",{method:"POST",body:JSON.stringify(e)})}async function Az(e,t){return we(`/api/prompt-fragments/${encodeURIComponent(e)}`,{method:"PUT",body:JSON.stringify(t)})}async function Cz(e){await we(`/api/prompt-fragments/${encodeURIComponent(e)}`,{method:"DELETE"})}async function e2(e){return Zr(await we(`${et(e)}/tags`))}async function t2(e,t){return Zr(await we(`${et(e)}/milestones`))}async function n2(e,t="open"){return Zr(await we(`${et(e)}/issues?state=${encodeURIComponent(t)}`),"issues")}async function kz(e,t="all"){return we(`${et(e)}/issues/sync`,{method:"POST",body:JSON.stringify({state:t})})}async function Oz(e,t,n){return we(`${et(e)}/issues`,{method:"POST",body:JSON.stringify({title:t,body:n})})}async function Iz(e,t,n){await we(`${et(e)}/issues/${t}/children`,{method:"POST",body:JSON.stringify({childNumber:n})})}async function NI(e,t,n){return we(`${et(e)}/issues/${t}`,{method:"PATCH",body:JSON.stringify(n)})}async function Rz(e,t){return Zr(await we(`${et(e)}/issues/${t}/pulls`))}async function r2(e,t="open"){return Zr(await we(`${et(e)}/pulls?state=${encodeURIComponent(t)}`))}async function Mz(e,t="all"){return we(`${et(e)}/pulls/sync`,{method:"POST",body:JSON.stringify({state:t})})}async function jz(e,t){return we(`${et(e)}/pulls/${t}`)}async function Dz(e,t){await we(`${et(e)}/pulls/${t}/merge`,{method:"POST"})}async function L1(e,t){return Zr(await we(`${et(e)}/pulls/${t}/issues`))}async function Lz(e,t,n){await we(`${et(e)}/pulls/${t}/issues`,{method:"POST",body:JSON.stringify({issueNumber:n})})}async function Pz(e,t,n){await we(`${et(e)}/pulls/${t}/issues/${n}`,{method:"DELETE"})}async function Bz(e,t){return we(`${et(e)}/pulls/${t}/comments`)}async function Uz(e,t){return we(`${et(e)}/issues/${t}/comments`)}async function a2(e,t,n){return we(`${et(e)}/issues/${t}/comments`,{method:"POST",body:JSON.stringify({body:n})})}async function Fz(e,t,n){return we(`${et(e)}/issues/${t}/polish`,{method:"POST",body:JSON.stringify({draft:n})})}async function i2(e,t){return we(`${et(e)}/issues/${t}/draft`)}async function zz(e,t,n){return we(`${et(e)}/issues/polish-create`,{method:"POST",body:JSON.stringify({title:t,body:n})})}async function s2(e){return we(`${et(e)}/issues/draft-create`)}async function Hz(e){await we(`${et(e)}/issues/draft-create`,{method:"DELETE"})}async function $z(e,t,n){await we(`${et(e)}/sessions/${encodeURIComponent(t)}`,{method:"PATCH",body:JSON.stringify({title:n})})}async function qz(e,t,n){await we(`${et(e)}/sessions/${encodeURIComponent(t)}`,{method:"PATCH",body:JSON.stringify({completedAt:n})})}async function Yz(){return we("/api/agents-md")}async function Gz(e){await we("/api/agents-md",{method:"PUT",body:JSON.stringify({content:e})})}async function Kz(e){return we(`/api/repos/${encodeURIComponent(e)}/agents-md`)}async function Vz(e,t){await we(`/api/repos/${encodeURIComponent(e)}/agents-md`,{method:"PUT",body:JSON.stringify({content:t})})}function Wz(e){return`${j1()}${et(e)}/events`}async function Xz(e){return we(`${et(e)}/sessions/status`)}async function hl(){return we("/api/settings")}async function up(e,t){await we(`/api/settings/${encodeURIComponent(e)}`,{method:"PUT",body:JSON.stringify({value:t})})}async function ev(){return we("/api/cloud/status")}async function Qz(){return we("/api/cloud/reload",{method:"POST"})}async function Zz(e){try{return(await we("/api/cloud/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:e})})).connected}catch{return!1}}async function P1(){return Zr(await we("/api/git-hosts"),"gitHosts")}async function Jz(e,t,n,r="gitea"){return we("/api/git-hosts",{method:"POST",body:JSON.stringify({host:e,name:t,token:n,platform:r})})}async function eH(e){await we(`/api/git-hosts/${encodeURIComponent(e)}`,{method:"DELETE"})}async function _I(){return we("/api/usage")}async function TI(e){return we("/api/usage/switch",{method:"POST",body:JSON.stringify({accountId:e})})}async function tH(){return we("/api/usage/authorize",{method:"POST"})}async function nH(e,t){return we("/api/usage/exchange",{method:"POST",body:JSON.stringify({pendingId:e,code:t})})}async function rH(e,t){return we(`${et(e)}/sessions/${encodeURIComponent(t)}/files`)}function aH(e,t,n){return`${j1()}${et(e)}/sessions/${encodeURIComponent(t)}/files/${n}`}async function Dx(e,t,n,r){const a=new URLSearchParams({from:String(e),to:String(t),groupBy:n});return we(`/api/analytics/summary?${a}`)}const Ws="fs-active-repo",ze=ei((e,t)=>({repos:[],activeRepoId:localStorage.getItem(Ws),loading:!0,loadError:null,loadRepos:async()=>{e({loading:!0,loadError:null});try{const n=await $F(),r=t().activeRepoId,a=r&&n.some(o=>o.id===r);e({repos:n,loading:!1,activeRepoId:a?r:n.length>0?n[0].id:null});const s=t().activeRepoId;s?localStorage.setItem(Ws,s):localStorage.removeItem(Ws)}catch(n){e({loading:!1,loadError:n instanceof Error?n.message:"Failed to load repos"})}},setActiveRepo:n=>{e({activeRepoId:n}),n?localStorage.setItem(Ws,n):localStorage.removeItem(Ws)},addRepo:async(n,r,a,s)=>{try{const o=await qF(n,r,a,s);return e(c=>({repos:[...c.repos,o],activeRepoId:o.id})),localStorage.setItem(Ws,o.id),o}catch(o){return e({loadError:o instanceof Error?o.message:"Failed to add repo"}),null}},removeRepo:async n=>{try{await VF(n)}catch{}e(r=>{const a=r.repos.filter(o=>o.id!==n),s=r.activeRepoId===n?a.length>0?a[0].id:null:r.activeRepoId;return s?localStorage.setItem(Ws,s):localStorage.removeItem(Ws),{repos:a,activeRepoId:s}})},updateRepoBranch:(n,r)=>{e(a=>({repos:a.repos.map(s=>s.id===n?{...s,branch:r}:s)}))}})),Jr=e=>{var t;return((t=e.repos.find(n=>n.id===e.activeRepoId))==null?void 0:t.name)??null},o2="fs-nav-collapsed",l2="fs-session-panel-collapsed",uo=ei(e=>({navCollapsed:localStorage.getItem(o2)==="true",sessionPanelCollapsed:localStorage.getItem(l2)==="true",guideTourOpen:!1,startGuideTour(){e({guideTourOpen:!0})},stopGuideTour(){e({guideTourOpen:!1})},toggleNav(){e(t=>{const n=!t.navCollapsed;return localStorage.setItem(o2,String(n)),{navCollapsed:n}})},toggleSessionPanel(){e(t=>{const n=!t.sessionPanelCollapsed;return localStorage.setItem(l2,String(n)),{sessionPanelCollapsed:n}})}})),u2=[{target:'[data-guide="repo-switcher"]',title:"切换仓库",description:"点击这里可以在已注册的仓库之间快速切换。每个仓库拥有独立的 Agent 运行时和会话。",position:"bottom",padding:4},{target:'[data-guide="manage-repos"]',title:"管理仓库",description:"在仓库下拉菜单底部,点击「管理仓库」可以注册新仓库、启停 Agent 进程、配置运行时类型。",position:"bottom-right",padding:4}],iH=6,sH=12;function oH(e,t){const n=document.querySelector(e);if(!n)return null;const r=n.getBoundingClientRect();return{top:r.top-t,left:r.left-t,width:r.width+t*2,height:r.height+t*2}}function lH(e){const{top:t,left:n,width:r,height:a}=e,s=n+r,o=t+a;return`polygon(
511
511
  0% 0%, 100% 0%, 100% 100%, 0% 100%, 0% 0%,
512
512
  ${n}px ${t}px, ${n}px ${o}px, ${s}px ${o}px, ${s}px ${t}px, ${n}px ${t}px
513
- )`}function uH(e,t){const n={position:"fixed"},r=e.top+e.height+sH;return t==="bottom"?(n.top=r,n.left=e.left):t==="bottom-right"&&(n.top=r,n.left=e.left+e.width,n.transform="translateX(-100%)"),n}function cH(){const e=uo(N=>N.guideTourOpen),t=uo(N=>N.stopGuideTour),[n,r]=y.useState(0),[a,s]=y.useState(null),o=y.useRef(null),c=u2[n],d=u2.length,f=n===0,m=n===d-1,p=y.useCallback(()=>{if(!e||!c)return;const N=c.padding??iH;s(oH(c.target,N))},[e,c]);if(y.useEffect(()=>{e&&r(0)},[e]),y.useLayoutEffect(()=>{p()},[p]),y.useEffect(()=>{if(e)return window.addEventListener("resize",p),window.addEventListener("scroll",p,!0),()=>{window.removeEventListener("resize",p),window.removeEventListener("scroll",p,!0)}},[e,p]),y.useEffect(()=>{if(!e)return;const N=S=>{S.key==="Escape"&&t()};return document.addEventListener("keydown",N),()=>document.removeEventListener("keydown",N)},[e,t]),y.useEffect(()=>{if(!e)return;if(n===1){const S=document.querySelector('[data-guide="repo-switcher"]');S&&(document.querySelector('[data-guide="manage-repos"]')||S.click())}const N=setTimeout(p,100);return()=>clearTimeout(N)},[e,n,p]),!e||!c||!a)return null;const b=()=>{if(!f){if(n===1){const N=document.querySelector('[data-guide="repo-switcher"]'),S=document.querySelector('[data-guide="manage-repos"]');N&&S&&N.click()}r(N=>N-1)}},x=()=>{m?t():r(N=>N+1)},E=()=>{if(n===1){const N=document.querySelector('[data-guide="repo-switcher"]'),S=document.querySelector('[data-guide="manage-repos"]');N&&S&&N.click()}t()};return T1.createPortal(u.jsxs("div",{className:"fixed inset-0 z-[9999]",children:[u.jsx("div",{className:"absolute inset-0 bg-black/60 transition-[clip-path] duration-200",style:{clipPath:lH(a)},onClick:E}),u.jsx("div",{className:"pointer-events-none absolute rounded-lg ring-2 ring-blue-500 ring-offset-2 ring-offset-transparent transition-all duration-200",style:{top:a.top,left:a.left,width:a.width,height:a.height}}),u.jsxs("div",{ref:o,className:"fixed z-[10000] w-72 rounded-xl border border-line bg-surface p-4 shadow-2xl",style:uH(a,c.position),children:[u.jsx("button",{type:"button",onClick:E,className:"absolute right-2 top-2 rounded-md p-1 text-fg-5 transition-colors hover:bg-elevated hover:text-fg-3","aria-label":"关闭引导",children:u.jsx(ht,{className:"h-3.5 w-3.5"})}),u.jsx("h3",{className:"pr-6 text-sm font-semibold text-fg",children:c.title}),u.jsx("p",{className:"mt-1.5 text-xs leading-relaxed text-fg-3",children:c.description}),u.jsxs("div",{className:"mt-4 flex items-center justify-between",children:[u.jsxs("span",{className:"font-mono text-[11px] tabular-nums text-fg-5",children:[n+1," / ",d]}),u.jsxs("div",{className:"flex items-center gap-2",children:[!f&&u.jsx("button",{type:"button",onClick:b,className:"rounded-md px-3 py-1 text-xs text-fg-3 transition-colors hover:bg-elevated hover:text-fg",children:"上一步"}),u.jsx("button",{type:"button",onClick:x,className:"rounded-md bg-blue-600 px-3 py-1 text-xs font-medium text-white transition-colors hover:bg-blue-500",children:m?"完成":"下一步"})]})]})]})]}),document.body)}const SI=[{segment:"run",icon:M1,label:"运行面板",global:!1},{segment:"dev/issues",icon:o7,label:"研发",global:!1,matchPrefix:"dev"},{segment:"agents",icon:PU,label:"Agents",global:!1}];function wI(e,t,n){return t?`/${e}`:n?`/${encodeURIComponent(n)}/${e}`:`/${e}`}function AI(e,t,n){if(!e.matchPrefix)return!1;const r=e.global?`/${e.matchPrefix}`:n?`/${encodeURIComponent(n)}/${e.matchPrefix}`:null;return r?t===r||t.startsWith(`${r}/`):!1}function dH(e){const t=e.lastIndexOf("/");return t>=0?e.slice(t+1):e}function fH({repos:e,activeRepoId:t,onRepoChange:n}){const r=Vn(),[a,s]=y.useState(!1),o=y.useRef(null),c=e.find(f=>f.id===t),d=y.useCallback(()=>s(!1),[]);return y.useEffect(()=>{if(!a)return;const f=m=>{o.current&&!o.current.contains(m.target)&&d()};return document.addEventListener("mousedown",f),()=>document.removeEventListener("mousedown",f)},[a,d]),u.jsxs("div",{ref:o,className:"relative",children:[u.jsxs("button",{type:"button","data-guide":"repo-switcher",onClick:()=>s(f=>!f),className:"flex max-w-[140px] items-center gap-1 rounded-md border border-line bg-base px-2 py-1 text-xs text-fg-2 transition-colors hover:border-blue-500 sm:max-w-[200px]",children:[u.jsx(tI,{className:"h-3 w-3 shrink-0 text-fg-4"}),u.jsxs("span",{className:"truncate",children:[u.jsx("span",{className:"sm:hidden",children:c?dH(c.name):""}),u.jsx("span",{className:"hidden sm:inline",children:(c==null?void 0:c.name)??""})]}),u.jsx(yr,{className:re("h-3 w-3 shrink-0 text-fg-4 transition-transform",a&&"rotate-180")})]}),a&&u.jsxs("div",{className:"absolute left-0 top-full z-50 mt-1 w-64 overflow-hidden rounded-lg border border-line bg-surface shadow-lg",children:[u.jsx("div",{className:"max-h-64 overflow-y-auto py-1",children:e.map(f=>u.jsxs("button",{type:"button",onClick:()=>{n(f.id),d()},className:re("flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs transition-colors",f.id===t?"font-medium text-blue-600":"text-fg-2 hover:bg-elevated"),children:[f.id===t?u.jsx(ur,{className:"h-3 w-3 shrink-0"}):u.jsx("span",{className:"h-3 w-3 shrink-0"}),u.jsx("span",{className:"truncate",children:f.name})]},f.id))}),u.jsx("div",{className:"border-t border-line",children:u.jsxs("button",{type:"button","data-guide":"manage-repos",onClick:()=>{r("/repos"),d()},className:"flex w-full items-center gap-2 px-3 py-2 text-left text-xs text-fg-3 transition-colors hover:bg-elevated hover:text-fg",children:[u.jsx(x0,{className:"h-3 w-3 shrink-0"}),u.jsx("span",{children:"管理仓库"})]})})]})]})}function hH({repoId:e,currentBranch:t}){const n=ze(T=>T.updateRepoBranch),[r,a]=y.useState(!1),[s,o]=y.useState(null),[c,d]=y.useState(!1),[f,m]=y.useState(null),[p,b]=y.useState(null),x=y.useRef(null),E=y.useCallback(()=>{a(!1),b(null)},[]);y.useEffect(()=>{if(!r)return;const T=C=>{x.current&&!x.current.contains(C.target)&&E()};return document.addEventListener("mousedown",T),()=>document.removeEventListener("mousedown",T)},[r,E]);const N=async()=>{if(r){E();return}a(!0),d(!0),b(null);try{o(await QF(e))}catch{b("加载分支失败")}finally{d(!1)}},S=async T=>{if(!(T===t||f)){m(T),b(null);try{const C=await ZF(e,T);n(e,C.branch),E()}catch(C){b(C instanceof Error?C.message:"切换失败")}finally{m(null)}}};return t?u.jsxs("div",{ref:x,className:"relative",children:[u.jsxs("button",{type:"button",onClick:N,className:"flex items-center gap-1 rounded-md bg-elevated px-2 py-1 text-xs text-fg-3 transition-colors hover:bg-blue-500/10 hover:text-blue-600",children:[u.jsx(wl,{className:"h-3 w-3"}),t,u.jsx(yr,{className:re("h-3 w-3 transition-transform",r&&"rotate-180")})]}),r&&u.jsxs("div",{className:"absolute right-0 top-full z-50 mt-1 w-56 overflow-hidden rounded-lg border border-line bg-surface shadow-lg",children:[c?u.jsx("div",{className:"flex items-center justify-center py-4",children:u.jsx(nn,{className:"h-4 w-4 animate-spin text-fg-4"})}):s?u.jsxs("div",{className:"max-h-64 overflow-y-auto py-1",children:[s.local.map(T=>u.jsxs("button",{type:"button",disabled:f!==null,onClick:()=>S(T),className:re("flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs transition-colors",T===t?"font-medium text-blue-600":"text-fg-2 hover:bg-elevated"),children:[T===t?u.jsx(ur,{className:"h-3 w-3 shrink-0"}):f===T?u.jsx(nn,{className:"h-3 w-3 shrink-0 animate-spin"}):u.jsx("span",{className:"h-3 w-3 shrink-0"}),u.jsx("span",{className:"truncate",children:T})]},T)),s.remote.length>0&&u.jsxs(u.Fragment,{children:[u.jsx("div",{className:"mx-3 my-1 border-t border-line"}),u.jsx("div",{className:"px-3 py-1 text-[10px] font-medium uppercase tracking-wider text-fg-4",children:"Remote"}),s.remote.map(T=>u.jsxs("button",{type:"button",disabled:f!==null,onClick:()=>S(T),className:"flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs text-fg-2 transition-colors hover:bg-elevated",children:[f===T?u.jsx(nn,{className:"h-3 w-3 shrink-0 animate-spin"}):u.jsx("span",{className:"h-3 w-3 shrink-0"}),u.jsx("span",{className:"truncate",children:T})]},`remote-${T}`))]})]}):null,p&&u.jsx("div",{className:"border-t border-line px-3 py-2 text-xs text-red-500",children:p})]})]}):null}function mH(){const[e,t]=y.useState(null);return y.useEffect(()=>{const n=()=>fetch("/api/health").then(s=>s.json()).then(s=>{s.latestVersion&&s.latestVersion!=="0.11.11"&&t(s.latestVersion)}).catch(()=>{});n();const r=setInterval(n,30*6e4),a=()=>n();return window.addEventListener("focus",a),()=>{clearInterval(r),window.removeEventListener("focus",a)}},[]),e}function pH({navigate:e,cycle:t,themeLabel:n,ThemeIcon:r}){const[a,s]=y.useState(!1),o=y.useRef(null);return y.useEffect(()=>{if(!a)return;const c=d=>{o.current&&!o.current.contains(d.target)&&s(!1)};return document.addEventListener("mousedown",c),()=>document.removeEventListener("mousedown",c)},[a]),u.jsxs("div",{ref:o,className:"relative md:hidden",children:[u.jsx("button",{type:"button",onClick:()=>s(c=>!c),"aria-label":"更多",className:"flex h-8 w-8 items-center justify-center rounded-md text-fg-4 transition-colors hover:bg-elevated hover:text-fg-2",children:u.jsx(p7,{className:"h-4 w-4"})}),a&&u.jsxs("div",{className:"absolute right-0 top-full z-50 mt-1 w-40 overflow-hidden rounded-lg border border-line bg-surface shadow-lg",children:[u.jsxs("button",{type:"button",onClick:()=>{e("/analytics"),s(!1)},className:"flex w-full items-center gap-2.5 px-3 py-2 text-left text-xs text-fg-2 transition-colors hover:bg-elevated",children:[u.jsx(Cf,{className:"h-3.5 w-3.5 text-fg-4"}),"统计"]}),u.jsxs("button",{type:"button",onClick:()=>{e("/settings"),s(!1)},className:"flex w-full items-center gap-2.5 px-3 py-2 text-left text-xs text-fg-2 transition-colors hover:bg-elevated",children:[u.jsx(x0,{className:"h-3.5 w-3.5 text-fg-4"}),"设置"]}),u.jsxs("button",{type:"button",onClick:()=>{t(),s(!1)},className:"flex w-full items-center gap-2.5 px-3 py-2 text-left text-xs text-fg-2 transition-colors hover:bg-elevated",children:[u.jsx(r,{className:"h-3.5 w-3.5 text-fg-4"}),n]}),u.jsxs("a",{href:"https://github.com/kinminghao/fourth-spark",target:"_blank",rel:"noopener noreferrer",onClick:()=>s(!1),className:"flex w-full items-center gap-2.5 px-3 py-2 text-left text-xs text-fg-2 transition-colors hover:bg-elevated",children:[u.jsx("svg",{className:"h-3.5 w-3.5 text-fg-4",viewBox:"0 0 24 24",fill:"currentColor",children:u.jsx("path",{d:"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"})}),"GitHub"]}),u.jsxs("button",{type:"button",onClick:()=>{uo.getState().startGuideTour(),s(!1)},className:"flex w-full items-center gap-2.5 px-3 py-2 text-left text-xs text-fg-2 transition-colors hover:bg-elevated",children:[u.jsx(nI,{className:"h-3.5 w-3.5 text-fg-4"}),"功能引导"]})]})]})}function gH(){const e=Vn(),t=cr(),n=ze(p=>p.repos),r=ze(p=>p.activeRepoId),a=ze(p=>p.setActiveRepo),s=Zy(p=>p.preference),o=Zy(p=>p.cycle),c=s==="light"?AF:s==="dark"?oF:iF,d=n.find(p=>p.id===r),f=mH(),m=p=>{var N;if(!p)return;a(p);const b=n.find(S=>S.id===p);if(!b)return;const x=t.pathname.match(/\/dev\/(issues|pulls)/);if(x){e(`/${encodeURIComponent(b.name)}/dev/${x[1]}`);return}const E=((N=t.pathname.match(/\/(run|agents|issues|pulls)/))==null?void 0:N[1])??"run";e(`/${encodeURIComponent(b.name)}/${E}`)};return u.jsxs("header",{className:"shrink-0 border-b border-line bg-surface pt-[var(--safe-top)]",children:[u.jsxs("div",{className:"flex h-12 items-center justify-between px-4",children:[u.jsxs("div",{className:"flex items-center gap-2.5",children:[u.jsx(lc,{className:"h-5 w-5 text-blue-500"}),u.jsx("span",{className:"hidden text-sm font-bold tracking-tight text-fg sm:inline",children:"Fourth Spark"}),u.jsxs("span",{className:"hidden rounded bg-elevated px-1.5 py-0.5 text-[10px] font-medium tabular-nums text-fg-4 sm:inline",children:["v","0.11.11"]}),f&&u.jsxs("span",{className:"hidden text-[10px] text-amber-500 sm:inline",children:["→ v",f," 可用,运行 ",u.jsx("code",{className:"rounded bg-amber-500/10 px-1 font-mono",children:"fourth-spark upgrade"})," 更新"]})]}),u.jsxs("div",{className:"flex items-center gap-3",children:[n.length>0&&u.jsxs("div",{className:"flex items-center gap-2",children:[u.jsx(fH,{repos:n,activeRepoId:r,onRepoChange:m}),d&&r&&u.jsx(hH,{repoId:r,currentBranch:d.branch})]}),u.jsxs("div",{className:"hidden items-center gap-1 md:flex",children:[u.jsx("button",{type:"button",onClick:()=>e("/analytics"),"aria-label":"统计",className:"flex h-8 w-8 items-center justify-center rounded-md text-fg-4 transition-colors hover:bg-elevated hover:text-fg-2",children:u.jsx(Cf,{className:"h-4 w-4"})}),u.jsx("button",{type:"button",onClick:()=>e("/settings"),"aria-label":"设置",className:"flex h-8 w-8 items-center justify-center rounded-md text-fg-4 transition-colors hover:bg-elevated hover:text-fg-2",children:u.jsx(x0,{className:"h-4 w-4"})}),u.jsx("a",{href:"https://github.com/kinminghao/fourth-spark",target:"_blank",rel:"noopener noreferrer","aria-label":"GitHub",className:"flex h-8 w-8 items-center justify-center rounded-md text-fg-4 transition-colors hover:bg-elevated hover:text-fg-2",children:u.jsx("svg",{className:"h-4 w-4",viewBox:"0 0 24 24",fill:"currentColor",children:u.jsx("path",{d:"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"})})}),u.jsx("button",{type:"button",onClick:o,"aria-label":`主题: ${s}`,className:"flex h-8 w-8 items-center justify-center rounded-md text-fg-4 transition-colors hover:bg-elevated hover:text-fg-2",children:u.jsx(c,{className:"h-4 w-4"})}),u.jsx("button",{type:"button",onClick:()=>uo.getState().startGuideTour(),"aria-label":"功能引导",className:"flex h-8 w-8 items-center justify-center rounded-md text-fg-4 transition-colors hover:bg-elevated hover:text-fg-2",children:u.jsx(nI,{className:"h-4 w-4"})})]}),u.jsx(pH,{navigate:e,cycle:o,themeLabel:`主题: ${s}`,ThemeIcon:c})]})]}),f&&u.jsx("div",{className:"border-t border-line px-4 py-1.5 sm:hidden",children:u.jsxs("span",{className:"text-[10px] text-amber-500",children:["→ v",f," 可用,运行 ",u.jsx("code",{className:"rounded bg-amber-500/10 px-1 font-mono",children:"fourth-spark upgrade"})," 更新"]})})]})}function bH(){const e=ze(Jr),t=uo(a=>a.navCollapsed),n=uo(a=>a.toggleNav),r=cr();return u.jsxs("nav",{className:re("hidden shrink-0 flex-col border-r border-line bg-surface py-2 transition-[width] duration-200 ease-in-out md:flex",t?"w-14":"w-48"),children:[u.jsx("div",{className:"flex flex-1 flex-col",children:SI.map(a=>{const s=AI(a,r.pathname,e);return u.jsxs(sp,{to:wI(a.segment,a.global,e),title:t?a.label:void 0,className:({isActive:o})=>re("mx-2 flex items-center rounded-md py-2 text-sm transition-colors",t?"justify-center px-2":"gap-2.5 px-3",o||s?"bg-blue-500/10 font-medium text-blue-600":"text-fg-3 hover:bg-elevated hover:text-fg"),children:[u.jsx(a.icon,{className:"h-4 w-4 shrink-0"}),u.jsx("span",{className:re("truncate transition-[opacity,max-width] duration-200 ease-in-out",t?"max-w-0 opacity-0":"max-w-[8rem] opacity-100"),children:a.label})]},a.segment)})}),u.jsxs(sp,{to:"/settings",title:t?"设置":void 0,className:({isActive:a})=>re("mx-2 flex items-center rounded-md py-2 text-sm transition-colors",t?"justify-center px-2":"gap-2.5 px-3",a?"bg-blue-500/10 font-medium text-blue-600":"text-fg-4 hover:bg-elevated hover:text-fg-2"),children:[u.jsx(x0,{className:"h-4 w-4 shrink-0"}),u.jsx("span",{className:re("truncate transition-[opacity,max-width] duration-200 ease-in-out",t?"max-w-0 opacity-0":"max-w-[8rem] opacity-100"),children:"设置"})]}),u.jsx("button",{type:"button",onClick:n,title:t?"展开导航":"收起导航",className:"mx-2 flex items-center justify-center rounded-md py-2 text-fg-4 transition-colors hover:bg-elevated hover:text-fg-2",children:t?u.jsx(WU,{className:"h-4 w-4"}):u.jsx(KU,{className:"h-4 w-4"})})]})}function xH(){const e=ze(Jr),t=cr();return u.jsx("nav",{className:"fixed bottom-0 left-0 right-0 z-30 border-t border-line bg-surface pb-[var(--safe-bottom)] md:hidden",children:u.jsx("div",{className:"flex h-14 items-center justify-around",children:SI.map(n=>{const r=AI(n,t.pathname,e);return u.jsx(sp,{to:wI(n.segment,n.global,e),"aria-label":n.label,className:({isActive:a})=>re("flex h-10 w-10 items-center justify-center rounded-md transition-colors",a||r?"bg-blue-500/10 text-blue-600":"text-fg-3 hover:bg-elevated hover:text-fg"),children:u.jsx(n.icon,{className:"h-5 w-5 shrink-0"})},n.segment)})})})}function yH(){return u.jsxs("div",{className:"flex h-full flex-col overflow-hidden bg-base text-fg",children:[u.jsx(gH,{}),u.jsxs("div",{className:"flex min-h-0 flex-1",children:[u.jsx(bH,{}),u.jsx("main",{className:"flex min-w-0 flex-1 flex-col overflow-hidden pb-[calc(3.5rem_+_var(--safe-bottom))] md:pb-0",children:u.jsx(F9,{})})]}),u.jsx(xH,{}),u.jsx(cH,{})]})}let vH=0;const bn=ei(e=>({toasts:[],addToast:(t,n="info",r,a)=>{const s=(a==null?void 0:a.id)??`toast-${++vH}-${Date.now()}`;e(o=>o.toasts.some(c=>c.id===s)?o:{toasts:[...o.toasts,{id:s,message:t,variant:n,sessionId:r,persistent:a==null?void 0:a.persistent}]}),a!=null&&a.persistent||setTimeout(()=>{e(o=>({toasts:o.toasts.filter(c=>c.id!==s)}))},4e3)},removeToast:t=>{e(n=>({toasts:n.toasts.filter(r=>r.id!==t)}))}})),EH=/^[\w.-]+@([\w.-]+):([\w.-]+)\/([\w.-]+?)(?:\.git)?$/,NH=/^https?:\/\/([\w.-]+)\/([\w.-]+)\/([\w.-]+?)(?:\.git)?(?:\/)?$/,_H=/^ssh:\/\/[\w.-]+@([\w.-]+)\/([\w.-]+)\/([\w.-]+?)(?:\.git)?$/;function CI(e){for(const t of[EH,NH,_H]){const n=e.match(t);if(n)return n[1]}return null}function c2({onSelect:e}){const[t,n]=y.useState(""),[r,a]=y.useState(null),[s,o]=y.useState([]),[c,d]=y.useState(!0),[f,m]=y.useState(""),[p,b]=y.useState(!1),x=y.useCallback(async A=>{d(!0),m("");try{const k=await GF(A,p);n(k.path),a(k.parent),o(k.entries)}catch(k){const R=k instanceof Error?k.message:"无法读取目录";try{const O=JSON.parse(R);m(O.error??R)}catch{m(R)}}d(!1)},[p]);y.useEffect(()=>{x()},[x]);const E=A=>{x(t+"/"+A)},N=()=>{r&&x(r)},S=A=>{const R="/"+t.split("/").filter(Boolean).slice(0,A+1).join("/");x(R)},T=A=>{e(t+"/"+A)},C=t.split("/").filter(Boolean);return u.jsxs("div",{className:"flex flex-col gap-2",children:[u.jsxs("div",{className:"flex items-center justify-between",children:[u.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-1 overflow-x-auto text-xs",children:[u.jsx("button",{type:"button",onClick:()=>void x("/"),className:"shrink-0 rounded px-1 py-0.5 text-fg-4 hover:bg-elevated hover:text-fg-2",children:"/"}),C.map((A,k)=>u.jsxs("span",{className:"flex shrink-0 items-center gap-1",children:[u.jsx(Hu,{className:"h-3 w-3 text-fg-5"}),u.jsx("button",{type:"button",onClick:()=>S(k),className:`rounded px-1 py-0.5 ${k===C.length-1?"font-medium text-fg":"text-fg-4 hover:bg-elevated hover:text-fg-2"}`,children:A})]},k))]}),u.jsx("button",{type:"button",onClick:()=>b(A=>!A),className:"ml-2 shrink-0 rounded-md p-1 text-fg-4 hover:bg-elevated hover:text-fg-2",title:p?"隐藏隐藏文件":"显示隐藏文件",children:p?u.jsx(oI,{className:"h-3.5 w-3.5"}):u.jsx(sI,{className:"h-3.5 w-3.5"})})]}),u.jsx("div",{className:"max-h-52 overflow-y-auto rounded-lg border border-line bg-base",children:c?u.jsx("div",{className:"flex items-center justify-center py-8",children:u.jsx(nn,{className:"h-4 w-4 animate-spin text-fg-4"})}):f?u.jsx("div",{className:"px-3 py-4 text-center text-xs text-red-500",children:f}):u.jsxs(u.Fragment,{children:[r!==null&&u.jsxs("button",{type:"button",onClick:N,className:"flex w-full items-center gap-2 border-b border-line px-3 py-2 text-left text-sm text-fg-3 hover:bg-elevated",children:[u.jsx($w,{className:"h-3.5 w-3.5 text-fg-5"}),u.jsx("span",{children:".."})]}),s.length===0&&u.jsx("div",{className:"px-3 py-4 text-center text-xs text-fg-5",children:"空目录"}),s.map(A=>u.jsxs("div",{className:"flex items-center border-b border-line last:border-0",children:[u.jsxs("button",{type:"button",onClick:()=>A.isGitRepo?T(A.name):E(A.name),className:"flex min-w-0 flex-1 items-center gap-2 px-3 py-2 text-left text-sm hover:bg-elevated",children:[A.isGitRepo?u.jsx(wl,{className:"h-3.5 w-3.5 shrink-0 text-emerald-500"}):u.jsx($w,{className:"h-3.5 w-3.5 shrink-0 text-fg-4"}),u.jsx("span",{className:`truncate ${A.isGitRepo?"text-fg font-medium":"text-fg-3"}`,children:A.name}),A.isGitRepo&&u.jsx("span",{className:"ml-auto shrink-0 rounded bg-emerald-500/10 px-1.5 py-0.5 text-[10px] font-medium text-emerald-500",children:"git"})]}),A.isGitRepo&&u.jsx("button",{type:"button",onClick:()=>E(A.name),className:"shrink-0 px-2 py-2 text-fg-5 hover:text-fg-2",title:"进入目录",children:u.jsx(Hu,{className:"h-3.5 w-3.5"})})]},A.name))]})})]})}function TH({onClose:e}){const t=Vn(),[n,r]=y.useState("browse"),[a,s]=y.useState(""),[o,c]=y.useState(""),[d,f]=y.useState(""),[m,p]=y.useState(""),[b,x]=y.useState(!1),[E,N]=y.useState("opencode"),[S,T]=y.useState(!1),[C,A]=y.useState(!1),[k,R]=y.useState(""),[O,j]=y.useState(null),$=ze(F=>F.addRepo),D=o.trim()!==""&&d.trim()!==""&&a.trim()!==""&&!S&&!C,M=F=>{const Y=F instanceof Error?F.message:"操作失败";try{return JSON.parse(Y).error??Y}catch{return Y}},G=async F=>{const Y=F.trim();if(Y){T(!0),R("");try{const L=await YF(Y);s(L.localPath),L.name&&c(L.name),L.gitUrl&&f(L.gitUrl)}catch(L){R(M(L))}T(!1)}},K=y.useRef(G);K.current=G,y.useEffect(()=>{if(n!=="browse")return;const F=a.trim();if(!F)return;const Y=setTimeout(()=>{K.current(F)},500);return()=>clearTimeout(Y)},[a,n]),y.useEffect(()=>{const F=d.trim();if(!F){j(null);return}const Y=CI(F);if(!Y){j(null);return}let L=!1;const P=setTimeout(()=>{P1().then(J=>{if(L)return;const B=J.some(me=>me.host.toLowerCase()===Y.toLowerCase());j(B?null:Y)}).catch(()=>{L||j(null)})},300);return()=>{L=!0,clearTimeout(P)}},[d]);const ae=F=>{s(F),R(""),G(F)},Q=F=>{p(F),x(!1)},W=async()=>{const F=d.trim();if(!F){R("请输入 Git 仓库地址");return}A(!0),R("");try{const Y=m.trim()||void 0,L=await KF(F,Y);s(L.localPath),L.name&&c(L.name),L.gitUrl&&f(L.gitUrl)}catch(Y){R(M(Y))}A(!1)},V=async()=>{if(!D)return;R(""),await $(o.trim(),d.trim(),a.trim(),E)&&e()},H=F=>{r(F),s(""),c(""),f(""),p(""),x(!1),R(""),j(null)};return u.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",onClick:e,children:u.jsxs("div",{className:"w-full max-w-lg rounded-xl border border-line bg-surface p-6 shadow-2xl",onClick:F=>F.stopPropagation(),children:[u.jsxs("div",{className:"mb-5 flex items-center justify-between",children:[u.jsx("h2",{className:"text-base font-semibold text-fg",children:"添加仓库"}),u.jsx("button",{type:"button",onClick:e,className:"rounded-md p-1 text-fg-4 hover:bg-elevated hover:text-fg-2",children:u.jsx(ht,{className:"h-4 w-4"})})]}),u.jsxs("div",{className:"mb-4 flex gap-1 rounded-lg border border-line bg-base p-1",children:[u.jsxs("button",{type:"button",onClick:()=>H("browse"),className:`flex flex-1 items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium transition-colors ${n==="browse"?"bg-elevated text-fg shadow-sm":"text-fg-4 hover:text-fg-2"}`,children:[u.jsx(_7,{className:"h-3.5 w-3.5"}),"已有仓库"]}),u.jsxs("button",{type:"button",onClick:()=>H("clone"),className:`flex flex-1 items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium transition-colors ${n==="clone"?"bg-elevated text-fg shadow-sm":"text-fg-4 hover:text-fg-2"}`,children:[u.jsx(wl,{className:"h-3.5 w-3.5"}),"克隆新仓库"]})]}),u.jsxs("div",{className:"flex flex-col gap-4",children:[n==="browse"?u.jsxs(u.Fragment,{children:[u.jsx(c2,{onSelect:ae}),u.jsxs("div",{className:"flex flex-col gap-1.5",children:[u.jsx("label",{htmlFor:"m-path",className:"text-xs font-medium text-fg-3",children:"本地路径"}),u.jsx("input",{id:"m-path",value:a,onChange:F=>s(F.target.value),onBlur:F=>void G(F.target.value),placeholder:"/home/you/code/repo",className:"w-full rounded-lg border border-line bg-base px-3 py-2 font-mono text-sm text-fg placeholder:text-fg-5 focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20"}),u.jsx("span",{className:"text-[11px] text-fg-5",children:S?"正在读取 Git 信息…":"点选目录或手动输入路径"})]})]}):u.jsxs(u.Fragment,{children:[u.jsxs("div",{className:"flex flex-col gap-1.5",children:[u.jsx("label",{htmlFor:"m-clone-url",className:"text-xs font-medium text-fg-3",children:"Git 仓库地址"}),u.jsx("input",{id:"m-clone-url",value:d,onChange:F=>f(F.target.value),placeholder:"https://github.com/org/repo.git",autoFocus:!0,className:"w-full rounded-lg border border-line bg-base px-3 py-2 font-mono text-xs text-fg placeholder:text-fg-5 focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20"})]}),u.jsxs("div",{className:"flex flex-col gap-1.5",children:[u.jsx("label",{className:"text-xs font-medium text-fg-3",children:"目标目录"}),u.jsxs("div",{className:"flex items-center gap-2",children:[u.jsx("input",{value:m,onChange:F=>p(F.target.value),placeholder:"默认: ~/.fourth-spark/repos/",className:"min-w-0 flex-1 rounded-lg border border-line bg-base px-3 py-2 font-mono text-xs text-fg placeholder:text-fg-5 focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20"}),u.jsx("button",{type:"button",onClick:()=>x(F=>!F),className:`shrink-0 rounded-lg border px-2.5 py-2 text-sm transition-colors ${b?"border-blue-500 bg-blue-500/10 text-blue-600":"border-line bg-base text-fg-4 hover:bg-elevated hover:text-fg-2"}`,children:u.jsx(yr,{className:`h-3.5 w-3.5 transition-transform ${b?"rotate-180":""}`})})]}),b&&u.jsx(c2,{onSelect:Q}),u.jsx("span",{className:"text-[11px] text-fg-5",children:"留空则克隆到默认目录,选择目录后仓库将克隆到该目录下"})]}),u.jsx("button",{type:"button",onClick:W,disabled:C||!d.trim(),className:"w-full rounded-lg bg-emerald-600 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-emerald-500 disabled:cursor-not-allowed disabled:bg-fg-6 disabled:text-fg-4",children:C?u.jsxs("span",{className:"flex items-center justify-center gap-1.5",children:[u.jsx(nn,{className:"h-3.5 w-3.5 animate-spin"}),"正在克隆仓库…"]}):"克隆"}),a&&u.jsxs("div",{className:"rounded-md bg-emerald-500/10 px-3 py-2 text-xs text-emerald-600",children:["克隆完成: ",u.jsx("span",{className:"font-mono",children:a})]})]}),u.jsxs("div",{className:"flex flex-col gap-1.5",children:[u.jsx("label",{htmlFor:"m-name",className:"text-xs font-medium text-fg-3",children:"名称"}),u.jsx("input",{id:"m-name",value:o,onChange:F=>c(F.target.value),placeholder:"my-project",className:"w-full rounded-lg border border-line bg-base px-3 py-2 text-sm text-fg placeholder:text-fg-5 focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20"})]}),n==="browse"&&u.jsxs("div",{className:"flex flex-col gap-1.5",children:[u.jsx("label",{htmlFor:"m-git",className:"text-xs font-medium text-fg-3",children:"Git 远程地址"}),u.jsx("input",{id:"m-git",value:d,onChange:F=>f(F.target.value),placeholder:"https://github.com/org/repo.git",className:"w-full rounded-lg border border-line bg-base px-3 py-2 font-mono text-xs text-fg placeholder:text-fg-5 focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20"})]}),O&&u.jsxs("div",{className:"flex items-start gap-2 rounded-md bg-amber-500/10 px-3 py-2 text-xs text-amber-600",children:[u.jsx(Tn,{className:"mt-0.5 h-3.5 w-3.5 shrink-0"}),u.jsxs("span",{children:["源站 ",u.jsx("strong",{children:O})," 尚未配置访问凭证,Issue/PR 同步将不可用。",u.jsx("button",{type:"button",onClick:()=>{e(),t("/settings")},className:"ml-1 font-medium underline hover:text-amber-700",children:"去配置"})]})]}),u.jsxs("div",{className:"flex flex-col gap-1.5",children:[u.jsx("label",{className:"text-xs font-medium text-fg-3",children:"运行时"}),u.jsx("div",{className:"flex gap-2",children:[{value:"opencode",label:"OpenCode"},{value:"claude-code",label:"Claude Code"}].map(F=>u.jsx("button",{type:"button",onClick:()=>N(F.value),className:`flex-1 rounded-lg border px-3 py-2 text-sm font-medium transition-colors ${E===F.value?"border-blue-500 bg-blue-500/10 text-blue-600":"border-line bg-base text-fg-4 hover:bg-elevated hover:text-fg-2"}`,children:F.label},F.value))}),u.jsx("span",{className:"text-[11px] text-fg-5",children:E==="claude-code"?"需要本地安装 Claude Code CLI":"需要本地安装 OpenCode CLI"})]}),k&&u.jsx("p",{className:"rounded-md bg-red-500/10 px-3 py-2 text-xs text-red-500",children:k}),u.jsxs("div",{className:"mt-1 flex items-center justify-end gap-2",children:[u.jsx("button",{type:"button",onClick:e,className:"rounded-lg border border-line px-4 py-2 text-sm text-fg-3 transition-colors hover:bg-elevated hover:text-fg",children:"取消"}),u.jsx("button",{type:"button",onClick:V,disabled:!D,className:"rounded-lg bg-blue-600 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-blue-500 disabled:cursor-not-allowed disabled:bg-fg-6 disabled:text-fg-4",children:"添加仓库"})]})]})]})})}function SH({repoId:e,repoName:t,onClose:n}){const[r,a]=y.useState(""),[s,o]=y.useState(""),[c,d]=y.useState(!0),[f,m]=y.useState(!1),[p,b]=y.useState(null);y.useEffect(()=>{Kz(e).then(N=>{a(N.content),o(N.content),d(!1)}).catch(N=>{b(N instanceof Error?N.message:String(N)),d(!1)})},[e]);const x=async()=>{m(!0),b(null);try{await Vz(e,r),o(r)}catch(N){b(N instanceof Error?N.message:String(N))}m(!1)},E=r!==s;return u.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",onClick:n,children:u.jsxs("div",{className:"flex w-full max-w-2xl flex-col rounded-xl border border-line bg-surface p-6 shadow-2xl",onClick:N=>N.stopPropagation(),children:[u.jsxs("div",{className:"mb-4 flex items-center justify-between",children:[u.jsxs("div",{className:"min-w-0",children:[u.jsxs("h2",{className:"text-base font-semibold text-fg",children:[t," — AGENTS.md"]}),u.jsx("p",{className:"mt-0.5 text-xs text-fg-4",children:"仅对此仓库生效,修改后 opencode 热加载即时生效。"})]}),u.jsx("button",{type:"button",onClick:n,className:"shrink-0 rounded-md p-1 text-fg-4 hover:bg-elevated hover:text-fg-2",children:u.jsx(ht,{className:"h-4 w-4"})})]}),p&&u.jsxs("div",{className:"mb-3 flex items-start gap-2 rounded-lg bg-red-500/10 px-3 py-2 text-xs text-red-400",children:[u.jsx(Tn,{className:"mt-0.5 h-3.5 w-3.5 shrink-0"}),u.jsx("span",{className:"min-w-0 break-words",children:p})]}),c?u.jsxs("div",{className:"flex flex-col items-center gap-2.5 py-16 text-fg-5",children:[u.jsx(nn,{className:"h-5 w-5 fs-spin"}),u.jsx("p",{className:"text-xs",children:"加载中…"})]}):u.jsx("textarea",{value:r,onChange:N=>a(N.target.value),spellCheck:!1,className:"h-96 w-full resize-y rounded-lg border border-line bg-base px-4 py-3 font-mono text-sm leading-relaxed text-fg placeholder:text-fg-6 focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20",placeholder:`# AGENTS.md
513
+ )`}function uH(e,t){const n={position:"fixed"},r=e.top+e.height+sH;return t==="bottom"?(n.top=r,n.left=e.left):t==="bottom-right"&&(n.top=r,n.left=e.left+e.width,n.transform="translateX(-100%)"),n}function cH(){const e=uo(N=>N.guideTourOpen),t=uo(N=>N.stopGuideTour),[n,r]=y.useState(0),[a,s]=y.useState(null),o=y.useRef(null),c=u2[n],d=u2.length,f=n===0,m=n===d-1,p=y.useCallback(()=>{if(!e||!c)return;const N=c.padding??iH;s(oH(c.target,N))},[e,c]);if(y.useEffect(()=>{e&&r(0)},[e]),y.useLayoutEffect(()=>{p()},[p]),y.useEffect(()=>{if(e)return window.addEventListener("resize",p),window.addEventListener("scroll",p,!0),()=>{window.removeEventListener("resize",p),window.removeEventListener("scroll",p,!0)}},[e,p]),y.useEffect(()=>{if(!e)return;const N=S=>{S.key==="Escape"&&t()};return document.addEventListener("keydown",N),()=>document.removeEventListener("keydown",N)},[e,t]),y.useEffect(()=>{if(!e)return;if(n===1){const S=document.querySelector('[data-guide="repo-switcher"]');S&&(document.querySelector('[data-guide="manage-repos"]')||S.click())}const N=setTimeout(p,100);return()=>clearTimeout(N)},[e,n,p]),!e||!c||!a)return null;const b=()=>{if(!f){if(n===1){const N=document.querySelector('[data-guide="repo-switcher"]'),S=document.querySelector('[data-guide="manage-repos"]');N&&S&&N.click()}r(N=>N-1)}},x=()=>{m?t():r(N=>N+1)},E=()=>{if(n===1){const N=document.querySelector('[data-guide="repo-switcher"]'),S=document.querySelector('[data-guide="manage-repos"]');N&&S&&N.click()}t()};return T1.createPortal(u.jsxs("div",{className:"fixed inset-0 z-[9999]",children:[u.jsx("div",{className:"absolute inset-0 bg-black/60 transition-[clip-path] duration-200",style:{clipPath:lH(a)},onClick:E}),u.jsx("div",{className:"pointer-events-none absolute rounded-lg ring-2 ring-blue-500 ring-offset-2 ring-offset-transparent transition-all duration-200",style:{top:a.top,left:a.left,width:a.width,height:a.height}}),u.jsxs("div",{ref:o,className:"fixed z-[10000] w-72 rounded-xl border border-line bg-surface p-4 shadow-2xl",style:uH(a,c.position),children:[u.jsx("button",{type:"button",onClick:E,className:"absolute right-2 top-2 rounded-md p-1 text-fg-5 transition-colors hover:bg-elevated hover:text-fg-3","aria-label":"关闭引导",children:u.jsx(ht,{className:"h-3.5 w-3.5"})}),u.jsx("h3",{className:"pr-6 text-sm font-semibold text-fg",children:c.title}),u.jsx("p",{className:"mt-1.5 text-xs leading-relaxed text-fg-3",children:c.description}),u.jsxs("div",{className:"mt-4 flex items-center justify-between",children:[u.jsxs("span",{className:"font-mono text-[11px] tabular-nums text-fg-5",children:[n+1," / ",d]}),u.jsxs("div",{className:"flex items-center gap-2",children:[!f&&u.jsx("button",{type:"button",onClick:b,className:"rounded-md px-3 py-1 text-xs text-fg-3 transition-colors hover:bg-elevated hover:text-fg",children:"上一步"}),u.jsx("button",{type:"button",onClick:x,className:"rounded-md bg-blue-600 px-3 py-1 text-xs font-medium text-white transition-colors hover:bg-blue-500",children:m?"完成":"下一步"})]})]})]})]}),document.body)}const SI=[{segment:"run",icon:M1,label:"运行面板",global:!1},{segment:"dev/issues",icon:o7,label:"研发",global:!1,matchPrefix:"dev"},{segment:"agents",icon:PU,label:"Agents",global:!1}];function wI(e,t,n){return t?`/${e}`:n?`/${encodeURIComponent(n)}/${e}`:`/${e}`}function AI(e,t,n){if(!e.matchPrefix)return!1;const r=e.global?`/${e.matchPrefix}`:n?`/${encodeURIComponent(n)}/${e.matchPrefix}`:null;return r?t===r||t.startsWith(`${r}/`):!1}function dH(e){const t=e.lastIndexOf("/");return t>=0?e.slice(t+1):e}function fH({repos:e,activeRepoId:t,onRepoChange:n}){const r=Vn(),[a,s]=y.useState(!1),o=y.useRef(null),c=e.find(f=>f.id===t),d=y.useCallback(()=>s(!1),[]);return y.useEffect(()=>{if(!a)return;const f=m=>{o.current&&!o.current.contains(m.target)&&d()};return document.addEventListener("mousedown",f),()=>document.removeEventListener("mousedown",f)},[a,d]),u.jsxs("div",{ref:o,className:"relative",children:[u.jsxs("button",{type:"button","data-guide":"repo-switcher",onClick:()=>s(f=>!f),className:"flex max-w-[140px] items-center gap-1 rounded-md border border-line bg-base px-2 py-1 text-xs text-fg-2 transition-colors hover:border-blue-500 sm:max-w-[200px]",children:[u.jsx(tI,{className:"h-3 w-3 shrink-0 text-fg-4"}),u.jsxs("span",{className:"truncate",children:[u.jsx("span",{className:"sm:hidden",children:c?dH(c.name):""}),u.jsx("span",{className:"hidden sm:inline",children:(c==null?void 0:c.name)??""})]}),u.jsx(yr,{className:re("h-3 w-3 shrink-0 text-fg-4 transition-transform",a&&"rotate-180")})]}),a&&u.jsxs("div",{className:"absolute left-0 top-full z-50 mt-1 w-64 overflow-hidden rounded-lg border border-line bg-surface shadow-lg",children:[u.jsx("div",{className:"max-h-64 overflow-y-auto py-1",children:e.map(f=>u.jsxs("button",{type:"button",onClick:()=>{n(f.id),d()},className:re("flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs transition-colors",f.id===t?"font-medium text-blue-600":"text-fg-2 hover:bg-elevated"),children:[f.id===t?u.jsx(ur,{className:"h-3 w-3 shrink-0"}):u.jsx("span",{className:"h-3 w-3 shrink-0"}),u.jsx("span",{className:"truncate",children:f.name})]},f.id))}),u.jsx("div",{className:"border-t border-line",children:u.jsxs("button",{type:"button","data-guide":"manage-repos",onClick:()=>{r("/repos"),d()},className:"flex w-full items-center gap-2 px-3 py-2 text-left text-xs text-fg-3 transition-colors hover:bg-elevated hover:text-fg",children:[u.jsx(x0,{className:"h-3 w-3 shrink-0"}),u.jsx("span",{children:"管理仓库"})]})})]})]})}function hH({repoId:e,currentBranch:t}){const n=ze(T=>T.updateRepoBranch),[r,a]=y.useState(!1),[s,o]=y.useState(null),[c,d]=y.useState(!1),[f,m]=y.useState(null),[p,b]=y.useState(null),x=y.useRef(null),E=y.useCallback(()=>{a(!1),b(null)},[]);y.useEffect(()=>{if(!r)return;const T=C=>{x.current&&!x.current.contains(C.target)&&E()};return document.addEventListener("mousedown",T),()=>document.removeEventListener("mousedown",T)},[r,E]);const N=async()=>{if(r){E();return}a(!0),d(!0),b(null);try{o(await QF(e))}catch{b("加载分支失败")}finally{d(!1)}},S=async T=>{if(!(T===t||f)){m(T),b(null);try{const C=await ZF(e,T);n(e,C.branch),E()}catch(C){b(C instanceof Error?C.message:"切换失败")}finally{m(null)}}};return t?u.jsxs("div",{ref:x,className:"relative",children:[u.jsxs("button",{type:"button",onClick:N,className:"flex items-center gap-1 rounded-md bg-elevated px-2 py-1 text-xs text-fg-3 transition-colors hover:bg-blue-500/10 hover:text-blue-600",children:[u.jsx(wl,{className:"h-3 w-3"}),t,u.jsx(yr,{className:re("h-3 w-3 transition-transform",r&&"rotate-180")})]}),r&&u.jsxs("div",{className:"absolute right-0 top-full z-50 mt-1 w-56 overflow-hidden rounded-lg border border-line bg-surface shadow-lg",children:[c?u.jsx("div",{className:"flex items-center justify-center py-4",children:u.jsx(nn,{className:"h-4 w-4 animate-spin text-fg-4"})}):s?u.jsxs("div",{className:"max-h-64 overflow-y-auto py-1",children:[s.local.map(T=>u.jsxs("button",{type:"button",disabled:f!==null,onClick:()=>S(T),className:re("flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs transition-colors",T===t?"font-medium text-blue-600":"text-fg-2 hover:bg-elevated"),children:[T===t?u.jsx(ur,{className:"h-3 w-3 shrink-0"}):f===T?u.jsx(nn,{className:"h-3 w-3 shrink-0 animate-spin"}):u.jsx("span",{className:"h-3 w-3 shrink-0"}),u.jsx("span",{className:"truncate",children:T})]},T)),s.remote.length>0&&u.jsxs(u.Fragment,{children:[u.jsx("div",{className:"mx-3 my-1 border-t border-line"}),u.jsx("div",{className:"px-3 py-1 text-[10px] font-medium uppercase tracking-wider text-fg-4",children:"Remote"}),s.remote.map(T=>u.jsxs("button",{type:"button",disabled:f!==null,onClick:()=>S(T),className:"flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs text-fg-2 transition-colors hover:bg-elevated",children:[f===T?u.jsx(nn,{className:"h-3 w-3 shrink-0 animate-spin"}):u.jsx("span",{className:"h-3 w-3 shrink-0"}),u.jsx("span",{className:"truncate",children:T})]},`remote-${T}`))]})]}):null,p&&u.jsx("div",{className:"border-t border-line px-3 py-2 text-xs text-red-500",children:p})]})]}):null}function mH(){const[e,t]=y.useState(null);return y.useEffect(()=>{const n=()=>fetch("/api/health").then(s=>s.json()).then(s=>{s.latestVersion&&s.latestVersion!=="0.11.12"&&t(s.latestVersion)}).catch(()=>{});n();const r=setInterval(n,30*6e4),a=()=>n();return window.addEventListener("focus",a),()=>{clearInterval(r),window.removeEventListener("focus",a)}},[]),e}function pH({navigate:e,cycle:t,themeLabel:n,ThemeIcon:r}){const[a,s]=y.useState(!1),o=y.useRef(null);return y.useEffect(()=>{if(!a)return;const c=d=>{o.current&&!o.current.contains(d.target)&&s(!1)};return document.addEventListener("mousedown",c),()=>document.removeEventListener("mousedown",c)},[a]),u.jsxs("div",{ref:o,className:"relative md:hidden",children:[u.jsx("button",{type:"button",onClick:()=>s(c=>!c),"aria-label":"更多",className:"flex h-8 w-8 items-center justify-center rounded-md text-fg-4 transition-colors hover:bg-elevated hover:text-fg-2",children:u.jsx(p7,{className:"h-4 w-4"})}),a&&u.jsxs("div",{className:"absolute right-0 top-full z-50 mt-1 w-40 overflow-hidden rounded-lg border border-line bg-surface shadow-lg",children:[u.jsxs("button",{type:"button",onClick:()=>{e("/analytics"),s(!1)},className:"flex w-full items-center gap-2.5 px-3 py-2 text-left text-xs text-fg-2 transition-colors hover:bg-elevated",children:[u.jsx(Cf,{className:"h-3.5 w-3.5 text-fg-4"}),"统计"]}),u.jsxs("button",{type:"button",onClick:()=>{e("/settings"),s(!1)},className:"flex w-full items-center gap-2.5 px-3 py-2 text-left text-xs text-fg-2 transition-colors hover:bg-elevated",children:[u.jsx(x0,{className:"h-3.5 w-3.5 text-fg-4"}),"设置"]}),u.jsxs("button",{type:"button",onClick:()=>{t(),s(!1)},className:"flex w-full items-center gap-2.5 px-3 py-2 text-left text-xs text-fg-2 transition-colors hover:bg-elevated",children:[u.jsx(r,{className:"h-3.5 w-3.5 text-fg-4"}),n]}),u.jsxs("a",{href:"https://github.com/kinminghao/fourth-spark",target:"_blank",rel:"noopener noreferrer",onClick:()=>s(!1),className:"flex w-full items-center gap-2.5 px-3 py-2 text-left text-xs text-fg-2 transition-colors hover:bg-elevated",children:[u.jsx("svg",{className:"h-3.5 w-3.5 text-fg-4",viewBox:"0 0 24 24",fill:"currentColor",children:u.jsx("path",{d:"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"})}),"GitHub"]}),u.jsxs("button",{type:"button",onClick:()=>{uo.getState().startGuideTour(),s(!1)},className:"flex w-full items-center gap-2.5 px-3 py-2 text-left text-xs text-fg-2 transition-colors hover:bg-elevated",children:[u.jsx(nI,{className:"h-3.5 w-3.5 text-fg-4"}),"功能引导"]})]})]})}function gH(){const e=Vn(),t=cr(),n=ze(p=>p.repos),r=ze(p=>p.activeRepoId),a=ze(p=>p.setActiveRepo),s=Zy(p=>p.preference),o=Zy(p=>p.cycle),c=s==="light"?AF:s==="dark"?oF:iF,d=n.find(p=>p.id===r),f=mH(),m=p=>{var N;if(!p)return;a(p);const b=n.find(S=>S.id===p);if(!b)return;const x=t.pathname.match(/\/dev\/(issues|pulls)/);if(x){e(`/${encodeURIComponent(b.name)}/dev/${x[1]}`);return}const E=((N=t.pathname.match(/\/(run|agents|issues|pulls)/))==null?void 0:N[1])??"run";e(`/${encodeURIComponent(b.name)}/${E}`)};return u.jsxs("header",{className:"shrink-0 border-b border-line bg-surface pt-[var(--safe-top)]",children:[u.jsxs("div",{className:"flex h-12 items-center justify-between px-4",children:[u.jsxs("div",{className:"flex items-center gap-2.5",children:[u.jsx(lc,{className:"h-5 w-5 text-blue-500"}),u.jsx("span",{className:"hidden text-sm font-bold tracking-tight text-fg sm:inline",children:"Fourth Spark"}),u.jsxs("span",{className:"hidden rounded bg-elevated px-1.5 py-0.5 text-[10px] font-medium tabular-nums text-fg-4 sm:inline",children:["v","0.11.12"]}),f&&u.jsxs("span",{className:"hidden text-[10px] text-amber-500 sm:inline",children:["→ v",f," 可用,运行 ",u.jsx("code",{className:"rounded bg-amber-500/10 px-1 font-mono",children:"fourth-spark upgrade"})," 更新"]})]}),u.jsxs("div",{className:"flex items-center gap-3",children:[n.length>0&&u.jsxs("div",{className:"flex items-center gap-2",children:[u.jsx(fH,{repos:n,activeRepoId:r,onRepoChange:m}),d&&r&&u.jsx(hH,{repoId:r,currentBranch:d.branch})]}),u.jsxs("div",{className:"hidden items-center gap-1 md:flex",children:[u.jsx("button",{type:"button",onClick:()=>e("/analytics"),"aria-label":"统计",className:"flex h-8 w-8 items-center justify-center rounded-md text-fg-4 transition-colors hover:bg-elevated hover:text-fg-2",children:u.jsx(Cf,{className:"h-4 w-4"})}),u.jsx("button",{type:"button",onClick:()=>e("/settings"),"aria-label":"设置",className:"flex h-8 w-8 items-center justify-center rounded-md text-fg-4 transition-colors hover:bg-elevated hover:text-fg-2",children:u.jsx(x0,{className:"h-4 w-4"})}),u.jsx("a",{href:"https://github.com/kinminghao/fourth-spark",target:"_blank",rel:"noopener noreferrer","aria-label":"GitHub",className:"flex h-8 w-8 items-center justify-center rounded-md text-fg-4 transition-colors hover:bg-elevated hover:text-fg-2",children:u.jsx("svg",{className:"h-4 w-4",viewBox:"0 0 24 24",fill:"currentColor",children:u.jsx("path",{d:"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"})})}),u.jsx("button",{type:"button",onClick:o,"aria-label":`主题: ${s}`,className:"flex h-8 w-8 items-center justify-center rounded-md text-fg-4 transition-colors hover:bg-elevated hover:text-fg-2",children:u.jsx(c,{className:"h-4 w-4"})}),u.jsx("button",{type:"button",onClick:()=>uo.getState().startGuideTour(),"aria-label":"功能引导",className:"flex h-8 w-8 items-center justify-center rounded-md text-fg-4 transition-colors hover:bg-elevated hover:text-fg-2",children:u.jsx(nI,{className:"h-4 w-4"})})]}),u.jsx(pH,{navigate:e,cycle:o,themeLabel:`主题: ${s}`,ThemeIcon:c})]})]}),f&&u.jsx("div",{className:"border-t border-line px-4 py-1.5 sm:hidden",children:u.jsxs("span",{className:"text-[10px] text-amber-500",children:["→ v",f," 可用,运行 ",u.jsx("code",{className:"rounded bg-amber-500/10 px-1 font-mono",children:"fourth-spark upgrade"})," 更新"]})})]})}function bH(){const e=ze(Jr),t=uo(a=>a.navCollapsed),n=uo(a=>a.toggleNav),r=cr();return u.jsxs("nav",{className:re("hidden shrink-0 flex-col border-r border-line bg-surface py-2 transition-[width] duration-200 ease-in-out md:flex",t?"w-14":"w-48"),children:[u.jsx("div",{className:"flex flex-1 flex-col",children:SI.map(a=>{const s=AI(a,r.pathname,e);return u.jsxs(sp,{to:wI(a.segment,a.global,e),title:t?a.label:void 0,className:({isActive:o})=>re("mx-2 flex items-center rounded-md py-2 text-sm transition-colors",t?"justify-center px-2":"gap-2.5 px-3",o||s?"bg-blue-500/10 font-medium text-blue-600":"text-fg-3 hover:bg-elevated hover:text-fg"),children:[u.jsx(a.icon,{className:"h-4 w-4 shrink-0"}),u.jsx("span",{className:re("truncate transition-[opacity,max-width] duration-200 ease-in-out",t?"max-w-0 opacity-0":"max-w-[8rem] opacity-100"),children:a.label})]},a.segment)})}),u.jsxs(sp,{to:"/settings",title:t?"设置":void 0,className:({isActive:a})=>re("mx-2 flex items-center rounded-md py-2 text-sm transition-colors",t?"justify-center px-2":"gap-2.5 px-3",a?"bg-blue-500/10 font-medium text-blue-600":"text-fg-4 hover:bg-elevated hover:text-fg-2"),children:[u.jsx(x0,{className:"h-4 w-4 shrink-0"}),u.jsx("span",{className:re("truncate transition-[opacity,max-width] duration-200 ease-in-out",t?"max-w-0 opacity-0":"max-w-[8rem] opacity-100"),children:"设置"})]}),u.jsx("button",{type:"button",onClick:n,title:t?"展开导航":"收起导航",className:"mx-2 flex items-center justify-center rounded-md py-2 text-fg-4 transition-colors hover:bg-elevated hover:text-fg-2",children:t?u.jsx(WU,{className:"h-4 w-4"}):u.jsx(KU,{className:"h-4 w-4"})})]})}function xH(){const e=ze(Jr),t=cr();return u.jsx("nav",{className:"fixed bottom-0 left-0 right-0 z-30 border-t border-line bg-surface pb-[var(--safe-bottom)] md:hidden",children:u.jsx("div",{className:"flex h-14 items-center justify-around",children:SI.map(n=>{const r=AI(n,t.pathname,e);return u.jsx(sp,{to:wI(n.segment,n.global,e),"aria-label":n.label,className:({isActive:a})=>re("flex h-10 w-10 items-center justify-center rounded-md transition-colors",a||r?"bg-blue-500/10 text-blue-600":"text-fg-3 hover:bg-elevated hover:text-fg"),children:u.jsx(n.icon,{className:"h-5 w-5 shrink-0"})},n.segment)})})})}function yH(){return u.jsxs("div",{className:"flex h-full flex-col overflow-hidden bg-base text-fg",children:[u.jsx(gH,{}),u.jsxs("div",{className:"flex min-h-0 flex-1",children:[u.jsx(bH,{}),u.jsx("main",{className:"flex min-w-0 flex-1 flex-col overflow-hidden pb-[calc(3.5rem_+_var(--safe-bottom))] md:pb-0",children:u.jsx(F9,{})})]}),u.jsx(xH,{}),u.jsx(cH,{})]})}let vH=0;const bn=ei(e=>({toasts:[],addToast:(t,n="info",r,a)=>{const s=(a==null?void 0:a.id)??`toast-${++vH}-${Date.now()}`;e(o=>o.toasts.some(c=>c.id===s)?o:{toasts:[...o.toasts,{id:s,message:t,variant:n,sessionId:r,persistent:a==null?void 0:a.persistent}]}),a!=null&&a.persistent||setTimeout(()=>{e(o=>({toasts:o.toasts.filter(c=>c.id!==s)}))},4e3)},removeToast:t=>{e(n=>({toasts:n.toasts.filter(r=>r.id!==t)}))}})),EH=/^[\w.-]+@([\w.-]+):([\w.-]+)\/([\w.-]+?)(?:\.git)?$/,NH=/^https?:\/\/([\w.-]+)\/([\w.-]+)\/([\w.-]+?)(?:\.git)?(?:\/)?$/,_H=/^ssh:\/\/[\w.-]+@([\w.-]+)\/([\w.-]+)\/([\w.-]+?)(?:\.git)?$/;function CI(e){for(const t of[EH,NH,_H]){const n=e.match(t);if(n)return n[1]}return null}function c2({onSelect:e}){const[t,n]=y.useState(""),[r,a]=y.useState(null),[s,o]=y.useState([]),[c,d]=y.useState(!0),[f,m]=y.useState(""),[p,b]=y.useState(!1),x=y.useCallback(async A=>{d(!0),m("");try{const k=await GF(A,p);n(k.path),a(k.parent),o(k.entries)}catch(k){const R=k instanceof Error?k.message:"无法读取目录";try{const O=JSON.parse(R);m(O.error??R)}catch{m(R)}}d(!1)},[p]);y.useEffect(()=>{x()},[x]);const E=A=>{x(t+"/"+A)},N=()=>{r&&x(r)},S=A=>{const R="/"+t.split("/").filter(Boolean).slice(0,A+1).join("/");x(R)},T=A=>{e(t+"/"+A)},C=t.split("/").filter(Boolean);return u.jsxs("div",{className:"flex flex-col gap-2",children:[u.jsxs("div",{className:"flex items-center justify-between",children:[u.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-1 overflow-x-auto text-xs",children:[u.jsx("button",{type:"button",onClick:()=>void x("/"),className:"shrink-0 rounded px-1 py-0.5 text-fg-4 hover:bg-elevated hover:text-fg-2",children:"/"}),C.map((A,k)=>u.jsxs("span",{className:"flex shrink-0 items-center gap-1",children:[u.jsx(Hu,{className:"h-3 w-3 text-fg-5"}),u.jsx("button",{type:"button",onClick:()=>S(k),className:`rounded px-1 py-0.5 ${k===C.length-1?"font-medium text-fg":"text-fg-4 hover:bg-elevated hover:text-fg-2"}`,children:A})]},k))]}),u.jsx("button",{type:"button",onClick:()=>b(A=>!A),className:"ml-2 shrink-0 rounded-md p-1 text-fg-4 hover:bg-elevated hover:text-fg-2",title:p?"隐藏隐藏文件":"显示隐藏文件",children:p?u.jsx(oI,{className:"h-3.5 w-3.5"}):u.jsx(sI,{className:"h-3.5 w-3.5"})})]}),u.jsx("div",{className:"max-h-52 overflow-y-auto rounded-lg border border-line bg-base",children:c?u.jsx("div",{className:"flex items-center justify-center py-8",children:u.jsx(nn,{className:"h-4 w-4 animate-spin text-fg-4"})}):f?u.jsx("div",{className:"px-3 py-4 text-center text-xs text-red-500",children:f}):u.jsxs(u.Fragment,{children:[r!==null&&u.jsxs("button",{type:"button",onClick:N,className:"flex w-full items-center gap-2 border-b border-line px-3 py-2 text-left text-sm text-fg-3 hover:bg-elevated",children:[u.jsx($w,{className:"h-3.5 w-3.5 text-fg-5"}),u.jsx("span",{children:".."})]}),s.length===0&&u.jsx("div",{className:"px-3 py-4 text-center text-xs text-fg-5",children:"空目录"}),s.map(A=>u.jsxs("div",{className:"flex items-center border-b border-line last:border-0",children:[u.jsxs("button",{type:"button",onClick:()=>A.isGitRepo?T(A.name):E(A.name),className:"flex min-w-0 flex-1 items-center gap-2 px-3 py-2 text-left text-sm hover:bg-elevated",children:[A.isGitRepo?u.jsx(wl,{className:"h-3.5 w-3.5 shrink-0 text-emerald-500"}):u.jsx($w,{className:"h-3.5 w-3.5 shrink-0 text-fg-4"}),u.jsx("span",{className:`truncate ${A.isGitRepo?"text-fg font-medium":"text-fg-3"}`,children:A.name}),A.isGitRepo&&u.jsx("span",{className:"ml-auto shrink-0 rounded bg-emerald-500/10 px-1.5 py-0.5 text-[10px] font-medium text-emerald-500",children:"git"})]}),A.isGitRepo&&u.jsx("button",{type:"button",onClick:()=>E(A.name),className:"shrink-0 px-2 py-2 text-fg-5 hover:text-fg-2",title:"进入目录",children:u.jsx(Hu,{className:"h-3.5 w-3.5"})})]},A.name))]})})]})}function TH({onClose:e}){const t=Vn(),[n,r]=y.useState("browse"),[a,s]=y.useState(""),[o,c]=y.useState(""),[d,f]=y.useState(""),[m,p]=y.useState(""),[b,x]=y.useState(!1),[E,N]=y.useState("opencode"),[S,T]=y.useState(!1),[C,A]=y.useState(!1),[k,R]=y.useState(""),[O,j]=y.useState(null),$=ze(F=>F.addRepo),D=o.trim()!==""&&d.trim()!==""&&a.trim()!==""&&!S&&!C,M=F=>{const Y=F instanceof Error?F.message:"操作失败";try{return JSON.parse(Y).error??Y}catch{return Y}},G=async F=>{const Y=F.trim();if(Y){T(!0),R("");try{const L=await YF(Y);s(L.localPath),L.name&&c(L.name),L.gitUrl&&f(L.gitUrl)}catch(L){R(M(L))}T(!1)}},K=y.useRef(G);K.current=G,y.useEffect(()=>{if(n!=="browse")return;const F=a.trim();if(!F)return;const Y=setTimeout(()=>{K.current(F)},500);return()=>clearTimeout(Y)},[a,n]),y.useEffect(()=>{const F=d.trim();if(!F){j(null);return}const Y=CI(F);if(!Y){j(null);return}let L=!1;const P=setTimeout(()=>{P1().then(J=>{if(L)return;const B=J.some(me=>me.host.toLowerCase()===Y.toLowerCase());j(B?null:Y)}).catch(()=>{L||j(null)})},300);return()=>{L=!0,clearTimeout(P)}},[d]);const ae=F=>{s(F),R(""),G(F)},Q=F=>{p(F),x(!1)},W=async()=>{const F=d.trim();if(!F){R("请输入 Git 仓库地址");return}A(!0),R("");try{const Y=m.trim()||void 0,L=await KF(F,Y);s(L.localPath),L.name&&c(L.name),L.gitUrl&&f(L.gitUrl)}catch(Y){R(M(Y))}A(!1)},V=async()=>{if(!D)return;R(""),await $(o.trim(),d.trim(),a.trim(),E)&&e()},H=F=>{r(F),s(""),c(""),f(""),p(""),x(!1),R(""),j(null)};return u.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",onClick:e,children:u.jsxs("div",{className:"w-full max-w-lg rounded-xl border border-line bg-surface p-6 shadow-2xl",onClick:F=>F.stopPropagation(),children:[u.jsxs("div",{className:"mb-5 flex items-center justify-between",children:[u.jsx("h2",{className:"text-base font-semibold text-fg",children:"添加仓库"}),u.jsx("button",{type:"button",onClick:e,className:"rounded-md p-1 text-fg-4 hover:bg-elevated hover:text-fg-2",children:u.jsx(ht,{className:"h-4 w-4"})})]}),u.jsxs("div",{className:"mb-4 flex gap-1 rounded-lg border border-line bg-base p-1",children:[u.jsxs("button",{type:"button",onClick:()=>H("browse"),className:`flex flex-1 items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium transition-colors ${n==="browse"?"bg-elevated text-fg shadow-sm":"text-fg-4 hover:text-fg-2"}`,children:[u.jsx(_7,{className:"h-3.5 w-3.5"}),"已有仓库"]}),u.jsxs("button",{type:"button",onClick:()=>H("clone"),className:`flex flex-1 items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium transition-colors ${n==="clone"?"bg-elevated text-fg shadow-sm":"text-fg-4 hover:text-fg-2"}`,children:[u.jsx(wl,{className:"h-3.5 w-3.5"}),"克隆新仓库"]})]}),u.jsxs("div",{className:"flex flex-col gap-4",children:[n==="browse"?u.jsxs(u.Fragment,{children:[u.jsx(c2,{onSelect:ae}),u.jsxs("div",{className:"flex flex-col gap-1.5",children:[u.jsx("label",{htmlFor:"m-path",className:"text-xs font-medium text-fg-3",children:"本地路径"}),u.jsx("input",{id:"m-path",value:a,onChange:F=>s(F.target.value),onBlur:F=>void G(F.target.value),placeholder:"/home/you/code/repo",className:"w-full rounded-lg border border-line bg-base px-3 py-2 font-mono text-sm text-fg placeholder:text-fg-5 focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20"}),u.jsx("span",{className:"text-[11px] text-fg-5",children:S?"正在读取 Git 信息…":"点选目录或手动输入路径"})]})]}):u.jsxs(u.Fragment,{children:[u.jsxs("div",{className:"flex flex-col gap-1.5",children:[u.jsx("label",{htmlFor:"m-clone-url",className:"text-xs font-medium text-fg-3",children:"Git 仓库地址"}),u.jsx("input",{id:"m-clone-url",value:d,onChange:F=>f(F.target.value),placeholder:"https://github.com/org/repo.git",autoFocus:!0,className:"w-full rounded-lg border border-line bg-base px-3 py-2 font-mono text-xs text-fg placeholder:text-fg-5 focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20"})]}),u.jsxs("div",{className:"flex flex-col gap-1.5",children:[u.jsx("label",{className:"text-xs font-medium text-fg-3",children:"目标目录"}),u.jsxs("div",{className:"flex items-center gap-2",children:[u.jsx("input",{value:m,onChange:F=>p(F.target.value),placeholder:"默认: ~/.fourth-spark/repos/",className:"min-w-0 flex-1 rounded-lg border border-line bg-base px-3 py-2 font-mono text-xs text-fg placeholder:text-fg-5 focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20"}),u.jsx("button",{type:"button",onClick:()=>x(F=>!F),className:`shrink-0 rounded-lg border px-2.5 py-2 text-sm transition-colors ${b?"border-blue-500 bg-blue-500/10 text-blue-600":"border-line bg-base text-fg-4 hover:bg-elevated hover:text-fg-2"}`,children:u.jsx(yr,{className:`h-3.5 w-3.5 transition-transform ${b?"rotate-180":""}`})})]}),b&&u.jsx(c2,{onSelect:Q}),u.jsx("span",{className:"text-[11px] text-fg-5",children:"留空则克隆到默认目录,选择目录后仓库将克隆到该目录下"})]}),u.jsx("button",{type:"button",onClick:W,disabled:C||!d.trim(),className:"w-full rounded-lg bg-emerald-600 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-emerald-500 disabled:cursor-not-allowed disabled:bg-fg-6 disabled:text-fg-4",children:C?u.jsxs("span",{className:"flex items-center justify-center gap-1.5",children:[u.jsx(nn,{className:"h-3.5 w-3.5 animate-spin"}),"正在克隆仓库…"]}):"克隆"}),a&&u.jsxs("div",{className:"rounded-md bg-emerald-500/10 px-3 py-2 text-xs text-emerald-600",children:["克隆完成: ",u.jsx("span",{className:"font-mono",children:a})]})]}),u.jsxs("div",{className:"flex flex-col gap-1.5",children:[u.jsx("label",{htmlFor:"m-name",className:"text-xs font-medium text-fg-3",children:"名称"}),u.jsx("input",{id:"m-name",value:o,onChange:F=>c(F.target.value),placeholder:"my-project",className:"w-full rounded-lg border border-line bg-base px-3 py-2 text-sm text-fg placeholder:text-fg-5 focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20"})]}),n==="browse"&&u.jsxs("div",{className:"flex flex-col gap-1.5",children:[u.jsx("label",{htmlFor:"m-git",className:"text-xs font-medium text-fg-3",children:"Git 远程地址"}),u.jsx("input",{id:"m-git",value:d,onChange:F=>f(F.target.value),placeholder:"https://github.com/org/repo.git",className:"w-full rounded-lg border border-line bg-base px-3 py-2 font-mono text-xs text-fg placeholder:text-fg-5 focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20"})]}),O&&u.jsxs("div",{className:"flex items-start gap-2 rounded-md bg-amber-500/10 px-3 py-2 text-xs text-amber-600",children:[u.jsx(Tn,{className:"mt-0.5 h-3.5 w-3.5 shrink-0"}),u.jsxs("span",{children:["源站 ",u.jsx("strong",{children:O})," 尚未配置访问凭证,Issue/PR 同步将不可用。",u.jsx("button",{type:"button",onClick:()=>{e(),t("/settings")},className:"ml-1 font-medium underline hover:text-amber-700",children:"去配置"})]})]}),u.jsxs("div",{className:"flex flex-col gap-1.5",children:[u.jsx("label",{className:"text-xs font-medium text-fg-3",children:"运行时"}),u.jsx("div",{className:"flex gap-2",children:[{value:"opencode",label:"OpenCode"},{value:"claude-code",label:"Claude Code"}].map(F=>u.jsx("button",{type:"button",onClick:()=>N(F.value),className:`flex-1 rounded-lg border px-3 py-2 text-sm font-medium transition-colors ${E===F.value?"border-blue-500 bg-blue-500/10 text-blue-600":"border-line bg-base text-fg-4 hover:bg-elevated hover:text-fg-2"}`,children:F.label},F.value))}),u.jsx("span",{className:"text-[11px] text-fg-5",children:E==="claude-code"?"需要本地安装 Claude Code CLI":"需要本地安装 OpenCode CLI"})]}),k&&u.jsx("p",{className:"rounded-md bg-red-500/10 px-3 py-2 text-xs text-red-500",children:k}),u.jsxs("div",{className:"mt-1 flex items-center justify-end gap-2",children:[u.jsx("button",{type:"button",onClick:e,className:"rounded-lg border border-line px-4 py-2 text-sm text-fg-3 transition-colors hover:bg-elevated hover:text-fg",children:"取消"}),u.jsx("button",{type:"button",onClick:V,disabled:!D,className:"rounded-lg bg-blue-600 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-blue-500 disabled:cursor-not-allowed disabled:bg-fg-6 disabled:text-fg-4",children:"添加仓库"})]})]})]})})}function SH({repoId:e,repoName:t,onClose:n}){const[r,a]=y.useState(""),[s,o]=y.useState(""),[c,d]=y.useState(!0),[f,m]=y.useState(!1),[p,b]=y.useState(null);y.useEffect(()=>{Kz(e).then(N=>{a(N.content),o(N.content),d(!1)}).catch(N=>{b(N instanceof Error?N.message:String(N)),d(!1)})},[e]);const x=async()=>{m(!0),b(null);try{await Vz(e,r),o(r)}catch(N){b(N instanceof Error?N.message:String(N))}m(!1)},E=r!==s;return u.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",onClick:n,children:u.jsxs("div",{className:"flex w-full max-w-2xl flex-col rounded-xl border border-line bg-surface p-6 shadow-2xl",onClick:N=>N.stopPropagation(),children:[u.jsxs("div",{className:"mb-4 flex items-center justify-between",children:[u.jsxs("div",{className:"min-w-0",children:[u.jsxs("h2",{className:"text-base font-semibold text-fg",children:[t," — AGENTS.md"]}),u.jsx("p",{className:"mt-0.5 text-xs text-fg-4",children:"仅对此仓库生效,修改后 opencode 热加载即时生效。"})]}),u.jsx("button",{type:"button",onClick:n,className:"shrink-0 rounded-md p-1 text-fg-4 hover:bg-elevated hover:text-fg-2",children:u.jsx(ht,{className:"h-4 w-4"})})]}),p&&u.jsxs("div",{className:"mb-3 flex items-start gap-2 rounded-lg bg-red-500/10 px-3 py-2 text-xs text-red-400",children:[u.jsx(Tn,{className:"mt-0.5 h-3.5 w-3.5 shrink-0"}),u.jsx("span",{className:"min-w-0 break-words",children:p})]}),c?u.jsxs("div",{className:"flex flex-col items-center gap-2.5 py-16 text-fg-5",children:[u.jsx(nn,{className:"h-5 w-5 fs-spin"}),u.jsx("p",{className:"text-xs",children:"加载中…"})]}):u.jsx("textarea",{value:r,onChange:N=>a(N.target.value),spellCheck:!1,className:"h-96 w-full resize-y rounded-lg border border-line bg-base px-4 py-3 font-mono text-sm leading-relaxed text-fg placeholder:text-fg-6 focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20",placeholder:`# AGENTS.md
514
514
 
515
515
  在此编写该仓库的 Agent 指令…`}),u.jsxs("div",{className:"mt-4 flex items-center justify-end gap-2",children:[u.jsx("button",{type:"button",onClick:n,className:"rounded-lg border border-line px-4 py-2 text-sm text-fg-3 transition-colors hover:bg-elevated hover:text-fg",children:"关闭"}),u.jsxs("button",{type:"button",onClick:()=>void x(),disabled:f||!E,className:"flex items-center gap-1.5 rounded-lg bg-blue-600 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-blue-500 disabled:opacity-40",children:[u.jsx(kf,{className:"h-3.5 w-3.5"}),f?"保存中…":"保存"]})]})]})})}const tv=1024,nv=tv*1024,d2=nv*1024;function f2(e){return!e||e<=0?"0 B":e<tv?`${e} B`:e<nv?`${(e/tv).toFixed(1)} KB`:e<d2?`${(e/nv).toFixed(1)} MB`:`${(e/d2).toFixed(2)} GB`}const Lx="ws/";function wH({repoId:e}){const[t,n]=y.useState(!1),[r,a]=y.useState(null),[s,o]=y.useState(!1),[c,d]=y.useState(null),[f,m]=y.useState(null),[p,b]=y.useState(!1),x=async()=>{o(!0),d(null);try{const C=await ez(e);a(C)}catch(C){d(C instanceof ns?C.message:"加载失败")}o(!1)};y.useEffect(()=>{t&&r===null&&x()},[t]);const E=async C=>{m(C);try{await tz(e,C),await x()}catch(A){d(A instanceof ns?A.message:"删除失败")}m(null)},N=async()=>{b(!0);try{await nz(e),await x()}catch(C){d(C instanceof ns?C.message:"清理失败")}b(!1)},S=(r==null?void 0:r.length)??0,T=(r==null?void 0:r.reduce((C,A)=>C+(A.diskUsage||0),0))??0;return u.jsxs("div",{className:"mt-3 border-t border-line pt-3",children:[u.jsxs("div",{className:"flex items-center justify-between gap-2",children:[u.jsxs("button",{type:"button",onClick:()=>n(C=>!C),className:"flex min-w-0 flex-1 items-center gap-1.5 text-left text-xs font-medium text-fg-3 transition-colors hover:text-fg-2",children:[t?u.jsx(A1,{className:"h-3 w-3 shrink-0"}):u.jsx(yr,{className:"h-3 w-3 shrink-0"}),u.jsx(wl,{className:"h-3 w-3 shrink-0 text-fg-5"}),u.jsx("span",{children:"工作空间"}),r!==null&&u.jsxs("span",{className:"text-fg-5",children:["(",S,") · ",f2(T)]})]}),t&&S>0&&u.jsxs("button",{type:"button",onClick:()=>void N(),disabled:p,className:"flex h-6 shrink-0 items-center gap-1 rounded border border-line px-2 text-xs text-fg-4 transition-colors hover:bg-elevated hover:text-fg-2 disabled:opacity-50",children:[p?u.jsx("span",{className:"inline-block h-2.5 w-2.5 animate-spin rounded-full border-2 border-current border-t-transparent"}):null,"清理已合并"]})]}),t&&u.jsxs("div",{className:"mt-2",children:[c&&u.jsxs("div",{className:"mb-2 flex items-center justify-between gap-2 rounded border border-red-500/30 bg-red-500/5 px-2 py-1 text-xs text-red-600",children:[u.jsx("span",{className:"truncate",children:c}),u.jsx("button",{type:"button",onClick:()=>d(null),className:"shrink-0 rounded p-0.5 transition-colors hover:bg-red-500/10",children:u.jsx(ht,{className:"h-3 w-3"})})]}),s&&r===null?u.jsx("div",{className:"flex justify-center py-3",children:u.jsx("span",{className:"inline-block h-3.5 w-3.5 animate-spin rounded-full border-2 border-fg-5 border-t-transparent"})}):S===0?u.jsx("p",{className:"py-2 text-center text-xs text-fg-5",children:"暂无工作空间"}):u.jsx("ul",{className:"space-y-1",children:r==null?void 0:r.map(C=>{const A=C.branch.startsWith(Lx),k=A?C.branch.slice(Lx.length):C.branch,R=C.status==="active"?"bg-emerald-500/10 text-emerald-600":C.status==="idle"?"bg-amber-500/10 text-amber-600":"bg-fg-6/30 text-fg-4",O=C.status==="active"?"活跃":C.status==="idle"?"空闲":C.status==="merged"?"已合并":C.status==="stale"?"陈旧":C.status,j=C.status!=="active";return u.jsxs("li",{className:"flex items-center gap-2 rounded-md border border-line bg-elevated/40 px-2 py-1.5 text-xs",children:[u.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-1.5",children:[C.running&&C.port&&u.jsx("span",{className:"h-1.5 w-1.5 shrink-0 rounded-full bg-emerald-500",title:`运行中 :${C.port}`}),u.jsxs("span",{className:"min-w-0 truncate font-mono",children:[A&&u.jsx("span",{className:"text-fg-5",children:Lx}),u.jsx("span",{className:"text-fg-2",children:k})]})]}),u.jsx("span",{className:re("shrink-0 rounded-full px-1.5 py-0.5 text-[10px] font-medium",R),children:O}),u.jsxs("span",{className:"flex shrink-0 items-center gap-0.5 text-fg-5",children:[u.jsx(D7,{className:"h-2.5 w-2.5"}),f2(C.diskUsage)]}),u.jsx("button",{type:"button",onClick:()=>void E(C.id),disabled:!j||f===C.id,title:j?"删除工作空间":"活跃工作空间无法删除",className:"flex h-5 w-5 shrink-0 items-center justify-center rounded text-fg-5 transition-colors hover:bg-red-500/10 hover:text-red-500 disabled:cursor-not-allowed disabled:opacity-30 disabled:hover:bg-transparent disabled:hover:text-fg-5",children:f===C.id?u.jsx("span",{className:"inline-block h-2.5 w-2.5 animate-spin rounded-full border-2 border-current border-t-transparent"}):u.jsx(Ni,{className:"h-3 w-3"})})]},C.id)})})]})]})}function kI(){const e=Vn(),t=ze(D=>D.repos),n=ze(D=>D.activeRepoId),r=ze(D=>D.setActiveRepo),a=ze(D=>D.removeRepo),s=ze(D=>D.loadRepos),[o,c]=y.useState(!1),[d,f]=y.useState(null),[m,p]=y.useState(null),[b,x]=y.useState(null),E=bn(D=>D.addToast),[N,S]=y.useState(null),[T,C]=y.useState(null),A=y.useRef(null),[k,R]=y.useState(null);y.useEffect(()=>{P1().then(D=>R(new Set(D.map(M=>M.host.toLowerCase())))).catch(()=>{})},[]);const O=y.useMemo(()=>{if(!k)return new Set;const D=new Set;for(const M of t){const G=CI(M.gitUrl);G&&!k.has(G.toLowerCase())&&D.add(M.id)}return D},[t,k]);y.useEffect(()=>{if(!T)return;const D=M=>{A.current&&!A.current.contains(M.target)&&C(null)};return document.addEventListener("mousedown",D),()=>document.removeEventListener("mousedown",D)},[T]);const j=async(D,M)=>{p(D);try{M?await XF(D):await WF(D),await s()}catch{}p(null)},$=async D=>{x(D);try{const M=await JF(D);await s();const G=M.alreadyUpToDate?"info":"success";E(M.summary,G,void 0,{persistent:!0})}catch(M){let G="拉取失败";if(M instanceof ns)try{G=JSON.parse(M.message).error??M.message}catch{G=M.message}E(G,"error",void 0,{persistent:!0})}x(null)};return u.jsxs(u.Fragment,{children:[u.jsxs("div",{className:"mb-6 flex items-center justify-between gap-3",children:[u.jsxs("div",{className:"min-w-0",children:[u.jsx("h1",{className:"text-lg font-semibold text-fg",children:"仓库管理"}),u.jsx("p",{className:"mt-0.5 text-sm text-fg-4",children:"管理代码仓库,每个仓库对应一个独立的 Agent 运行环境"})]}),u.jsxs("button",{type:"button",onClick:()=>c(!0),className:"flex shrink-0 items-center gap-1.5 rounded-lg bg-blue-600 px-3 py-2 text-sm font-medium text-white transition-colors hover:bg-blue-500 md:px-4",children:[u.jsx(Qr,{className:"h-4 w-4"}),u.jsx("span",{className:"hidden md:inline",children:"添加仓库"})]})]}),t.length===0?u.jsxs("div",{className:"flex flex-col items-center gap-3 rounded-xl border border-dashed border-line-hard py-16 text-center",children:[u.jsx("div",{className:"rounded-full bg-elevated p-3",children:u.jsx(Qr,{className:"h-6 w-6 text-fg-4"})}),u.jsx("p",{className:"text-sm font-medium text-fg-3",children:"暂无代码仓库"}),u.jsx("p",{className:"text-xs text-fg-5",children:"添加一个本地仓库开始使用"}),u.jsx("button",{type:"button",onClick:()=>c(!0),className:"mt-2 rounded-lg border border-line px-4 py-2 text-sm text-fg-3 transition-colors hover:bg-elevated hover:text-fg",children:"添加仓库"})]}):u.jsx(u.Fragment,{children:u.jsx("div",{className:"grid grid-cols-1 gap-3 md:grid-cols-2",children:t.map(D=>{const M=D.id===n;return u.jsxs("div",{className:re("rounded-xl border p-4 transition-colors",M?"border-blue-500/40 bg-blue-500/5":"border-line"),children:[u.jsxs("div",{className:"flex items-center justify-between gap-2",children:[u.jsxs("button",{type:"button",onClick:()=>r(D.id),className:"flex min-w-0 items-center gap-2 text-left",children:[M?u.jsx(Sl,{className:"h-4 w-4 shrink-0 text-blue-500"}):u.jsx(t7,{className:"h-4 w-4 shrink-0 text-fg-5"}),u.jsx("span",{className:re("truncate font-medium",M?"text-fg":"text-fg-2"),children:D.name})]}),u.jsxs("span",{className:re("inline-flex shrink-0 items-center gap-1.5 rounded-full px-2 py-0.5 text-xs font-medium",D.running?"bg-emerald-500/10 text-emerald-600":"bg-fg-6/30 text-fg-4"),children:[u.jsx("span",{className:re("h-1.5 w-1.5 rounded-full",D.running?"bg-emerald-500":"bg-fg-5")}),D.running?"运行中":"已停止"]})]}),u.jsxs("dl",{className:"mt-3 space-y-1 font-mono text-xs text-fg-4",children:[u.jsxs("div",{className:"flex gap-2",children:[u.jsx("dt",{className:"shrink-0 text-fg-5",children:"Git"}),u.jsx("dd",{className:"min-w-0 truncate",children:D.gitUrl})]}),u.jsxs("div",{className:"flex gap-2",children:[u.jsx("dt",{className:"shrink-0 text-fg-5",children:"路径"}),u.jsxs("dd",{className:"flex min-w-0 items-center gap-1.5",children:[u.jsx("span",{className:"truncate",children:D.localPath}),u.jsx("button",{type:"button",onClick:()=>void navigator.clipboard.writeText(D.localPath),title:"复制路径",className:"shrink-0 rounded p-0.5 text-fg-5 transition-colors hover:text-fg-3",children:u.jsx(op,{className:"h-3 w-3"})})]})]}),D.running&&D.port&&u.jsxs("div",{className:"flex items-center gap-2",children:[u.jsx("dt",{className:"shrink-0 text-fg-5",children:"直连"}),u.jsxs("dd",{className:"flex min-w-0 items-center gap-1.5",children:[u.jsxs("a",{href:`http://127.0.0.1:${D.port}`,target:"_blank",rel:"noopener noreferrer",className:"truncate text-blue-500 hover:underline",children:["127.0.0.1:",D.port]}),u.jsx("button",{type:"button",onClick:()=>void navigator.clipboard.writeText(`http://127.0.0.1:${D.port}`),title:"复制链接",className:"shrink-0 rounded p-0.5 text-fg-5 transition-colors hover:text-fg-3",children:u.jsx(op,{className:"h-3 w-3"})})]})]})]}),O.has(D.id)&&u.jsxs("button",{type:"button",onClick:()=>e("/settings"),className:"mt-2 flex w-full items-center gap-1.5 rounded-md bg-amber-500/10 px-2.5 py-1.5 text-left text-xs text-amber-600 transition-colors hover:bg-amber-500/15",children:[u.jsx(Tn,{className:"h-3.5 w-3.5 shrink-0"}),u.jsx("span",{children:"缺少 Git 源站凭证,Issue/PR 同步不可用"})]}),u.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[u.jsx("button",{type:"button",onClick:()=>void $(D.id),disabled:b===D.id,className:"flex h-8 shrink-0 items-center justify-center gap-1.5 rounded-md border border-blue-500/30 px-2.5 text-xs font-medium text-blue-600 transition-colors hover:bg-blue-500/10 disabled:opacity-50",children:b===D.id?u.jsx("span",{className:"inline-block h-3.5 w-3.5 animate-spin rounded-full border-2 border-current border-t-transparent"}):u.jsxs(u.Fragment,{children:[u.jsx(kU,{className:"h-3 w-3"}),"拉取"]})}),u.jsx("button",{type:"button",onClick:()=>void j(D.id,D.running),disabled:m===D.id,className:re("flex h-8 flex-1 items-center justify-center gap-1.5 rounded-md border text-xs font-medium transition-colors disabled:opacity-50",D.running?"border-amber-500/30 text-amber-600 hover:bg-amber-500/10":"border-emerald-500/30 text-emerald-600 hover:bg-emerald-500/10"),children:m===D.id?u.jsx("span",{className:"inline-block h-3.5 w-3.5 animate-spin rounded-full border-2 border-current border-t-transparent"}):D.running?u.jsxs(u.Fragment,{children:[u.jsx(Qy,{className:"h-3 w-3 fill-current"}),"停止"]}):u.jsxs(u.Fragment,{children:[u.jsx(M1,{className:"h-3 w-3 fill-current"}),"启动"]})}),u.jsxs("div",{className:"relative",ref:T===D.id?A:void 0,children:[u.jsx("button",{type:"button",onClick:()=>C(T===D.id?null:D.id),className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-md border border-line text-fg-4 transition-colors hover:bg-elevated hover:text-fg-2",children:u.jsx(C1,{className:"h-4 w-4"})}),T===D.id&&u.jsxs("div",{className:"absolute right-0 top-full z-20 mt-1 min-w-[160px] overflow-hidden rounded-lg border border-line bg-elevated shadow-lg",children:[u.jsx("button",{type:"button",className:re("flex w-full items-center gap-2 px-3 py-2 text-left text-xs transition-colors hover:bg-base/60",D.runtimeType==="claude-code"?"text-orange-500":"text-sky-500"),onClick:async()=>{C(null);const G=D.runtimeType==="claude-code"?"opencode":"claude-code";await az(D.id,G),s()},children:D.runtimeType==="claude-code"?"Claude → OpenCode":"OpenCode → Claude"}),u.jsxs("button",{type:"button",className:"flex w-full items-center gap-2 px-3 py-2 text-left text-xs text-fg-3 transition-colors hover:bg-base/60",onClick:async()=>{C(null),await rz(D.id,!D.worktreeEnabled),s()},children:[u.jsx(wl,{className:"h-3 w-3"}),u.jsx("span",{children:"Worktree"}),u.jsx("span",{className:re("ml-auto text-[10px]",D.worktreeEnabled?"text-violet-500":"text-fg-5"),children:D.worktreeEnabled?"已开启":"已关闭"})]}),u.jsxs("button",{type:"button",className:"flex w-full items-center gap-2 px-3 py-2 text-left text-xs text-fg-3 transition-colors hover:bg-base/60",onClick:()=>{C(null),S({id:D.id,name:D.name})},children:[u.jsx(lo,{className:"h-3 w-3"}),"配置"]}),u.jsx("div",{className:"my-0.5 border-t border-line"}),u.jsxs("button",{type:"button",className:"flex w-full items-center gap-2 px-3 py-2 text-left text-xs text-red-500 transition-colors hover:bg-red-500/10",onClick:()=>{C(null),f(D.id)},children:[u.jsx(Ni,{className:"h-3 w-3"}),"删除仓库"]})]})]})]}),d===D.id&&u.jsxs("div",{className:"mt-2 flex items-center justify-between rounded-md border border-red-500/20 bg-red-500/5 px-3 py-2",children:[u.jsx("span",{className:"text-xs text-red-500",children:"确认删除此仓库?"}),u.jsxs("div",{className:"flex items-center gap-2",children:[u.jsxs("button",{type:"button",onClick:()=>{a(D.id),f(null)},className:"flex h-6 items-center gap-1 rounded border border-red-500/30 px-2 text-xs text-red-500 transition-colors hover:bg-red-500/10",children:[u.jsx(ur,{className:"h-3 w-3"}),"确认"]}),u.jsx("button",{type:"button",onClick:()=>f(null),className:"flex h-6 items-center gap-1 rounded border border-line px-2 text-xs text-fg-4 transition-colors hover:bg-elevated",children:"取消"})]})]}),D.worktreeEnabled&&u.jsx(wH,{repoId:D.id})]},D.id)})})}),u.jsxs("p",{className:"mt-3 text-xs text-fg-5",children:[t.length," 个仓库"]}),o&&u.jsx(TH,{onClose:()=>c(!1)}),N&&u.jsx(SH,{repoId:N.id,repoName:N.name,onClose:()=>S(null)})]})}function AH(){return u.jsx("div",{className:"flex-1 overflow-y-auto p-6",children:u.jsx("div",{className:"mx-auto max-w-4xl",children:u.jsx(kI,{})})})}function h2(e){const t=[],n=String(e||"");let r=n.indexOf(","),a=0,s=!1;for(;!s;){r===-1&&(r=n.length,s=!0);const o=n.slice(a,r).trim();(o||!s)&&t.push(o),a=r+1,r=n.indexOf(",",a)}return t}function OI(e,t){const n={};return(e[e.length-1]===""?[...e,""]:e).join((n.padRight?" ":"")+","+(n.padLeft===!1?"":" ")).trim()}const CH=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,kH=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,OH={};function m2(e,t){return(OH.jsx?kH:CH).test(e)}const IH=/[ \t\n\f\r]/g;function RH(e){return typeof e=="object"?e.type==="text"?p2(e.value):!1:p2(e)}function p2(e){return e.replace(IH,"")===""}class If{constructor(t,n,r){this.normal=n,this.property=t,r&&(this.space=r)}}If.prototype.normal={};If.prototype.property={};If.prototype.space=void 0;function II(e,t){const n={},r={};for(const a of e)Object.assign(n,a.property),Object.assign(r,a.normal);return new If(n,r,t)}function sf(e){return e.toLowerCase()}class ea{constructor(t,n){this.attribute=n,this.property=t}}ea.prototype.attribute="";ea.prototype.booleanish=!1;ea.prototype.boolean=!1;ea.prototype.commaOrSpaceSeparated=!1;ea.prototype.commaSeparated=!1;ea.prototype.defined=!1;ea.prototype.mustUseProperty=!1;ea.prototype.number=!1;ea.prototype.overloadedBoolean=!1;ea.prototype.property="";ea.prototype.spaceSeparated=!1;ea.prototype.space=void 0;let MH=0;const it=Al(),In=Al(),rv=Al(),Ce=Al(),Yt=Al(),il=Al(),fa=Al();function Al(){return 2**++MH}const av=Object.freeze(Object.defineProperty({__proto__:null,boolean:it,booleanish:In,commaOrSpaceSeparated:fa,commaSeparated:il,number:Ce,overloadedBoolean:rv,spaceSeparated:Yt},Symbol.toStringTag,{value:"Module"})),Px=Object.keys(av);class B1 extends ea{constructor(t,n,r,a){let s=-1;if(super(t,n),g2(this,"space",a),typeof r=="number")for(;++s<Px.length;){const o=Px[s];g2(this,Px[s],(r&av[o])===av[o])}}}B1.prototype.defined=!0;function g2(e,t,n){n&&(e[t]=n)}function uc(e){const t={},n={};for(const[r,a]of Object.entries(e.properties)){const s=new B1(r,e.transform(e.attributes||{},r),a,e.space);e.mustUseProperty&&e.mustUseProperty.includes(r)&&(s.mustUseProperty=!0),t[r]=s,n[sf(r)]=r,n[sf(s.attribute)]=r}return new If(t,n,e.space)}const RI=uc({properties:{ariaActiveDescendant:null,ariaAtomic:In,ariaAutoComplete:null,ariaBusy:In,ariaChecked:In,ariaColCount:Ce,ariaColIndex:Ce,ariaColSpan:Ce,ariaControls:Yt,ariaCurrent:null,ariaDescribedBy:Yt,ariaDetails:null,ariaDisabled:In,ariaDropEffect:Yt,ariaErrorMessage:null,ariaExpanded:In,ariaFlowTo:Yt,ariaGrabbed:In,ariaHasPopup:null,ariaHidden:In,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:Yt,ariaLevel:Ce,ariaLive:null,ariaModal:In,ariaMultiLine:In,ariaMultiSelectable:In,ariaOrientation:null,ariaOwns:Yt,ariaPlaceholder:null,ariaPosInSet:Ce,ariaPressed:In,ariaReadOnly:In,ariaRelevant:null,ariaRequired:In,ariaRoleDescription:Yt,ariaRowCount:Ce,ariaRowIndex:Ce,ariaRowSpan:Ce,ariaSelected:In,ariaSetSize:Ce,ariaSort:null,ariaValueMax:Ce,ariaValueMin:Ce,ariaValueNow:Ce,ariaValueText:null,role:null},transform(e,t){return t==="role"?t:"aria-"+t.slice(4).toLowerCase()}});function MI(e,t){return t in e?e[t]:t}function jI(e,t){return MI(e,t.toLowerCase())}const jH=uc({attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:il,acceptCharset:Yt,accessKey:Yt,action:null,allow:null,allowFullScreen:it,allowPaymentRequest:it,allowUserMedia:it,alpha:it,alt:null,as:null,async:it,autoCapitalize:null,autoComplete:Yt,autoFocus:it,autoPlay:it,blocking:Yt,capture:null,charSet:null,checked:it,cite:null,className:Yt,closedBy:null,colorSpace:null,cols:Ce,colSpan:Ce,command:null,commandFor:null,content:null,contentEditable:In,controls:it,controlsList:Yt,coords:Ce|il,crossOrigin:null,data:null,dateTime:null,decoding:null,default:it,defer:it,dir:null,dirName:null,disabled:it,download:rv,draggable:In,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:it,formTarget:null,headers:Yt,height:Ce,hidden:rv,high:Ce,href:null,hrefLang:null,htmlFor:Yt,httpEquiv:Yt,id:null,imageSizes:null,imageSrcSet:null,inert:it,inputMode:null,integrity:null,is:null,isMap:it,itemId:null,itemProp:Yt,itemRef:Yt,itemScope:it,itemType:Yt,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:it,low:Ce,manifest:null,max:null,maxLength:Ce,media:null,method:null,min:null,minLength:Ce,multiple:it,muted:it,name:null,nonce:null,noModule:it,noValidate:it,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:it,optimum:Ce,pattern:null,ping:Yt,placeholder:null,playsInline:it,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:it,referrerPolicy:null,rel:Yt,required:it,reversed:it,rows:Ce,rowSpan:Ce,sandbox:Yt,scope:null,scoped:it,seamless:it,selected:it,shadowRootClonable:it,shadowRootCustomElementRegistry:it,shadowRootDelegatesFocus:it,shadowRootMode:null,shadowRootSerializable:it,shape:null,size:Ce,sizes:null,slot:null,span:Ce,spellCheck:In,src:null,srcDoc:null,srcLang:null,srcSet:null,start:Ce,step:null,style:null,tabIndex:Ce,target:null,title:null,translate:null,type:null,typeMustMatch:it,useMap:null,value:In,width:Ce,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:Yt,axis:null,background:null,bgColor:null,border:Ce,borderColor:null,bottomMargin:Ce,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:it,declare:it,event:null,face:null,frame:null,frameBorder:null,hSpace:Ce,leftMargin:Ce,link:null,longDesc:null,lowSrc:null,marginHeight:Ce,marginWidth:Ce,noResize:it,noHref:it,noShade:it,noWrap:it,object:null,profile:null,prompt:null,rev:null,rightMargin:Ce,rules:null,scheme:null,scrolling:In,standby:null,summary:null,text:null,topMargin:Ce,valueType:null,version:null,vAlign:null,vLink:null,vSpace:Ce,allowTransparency:null,autoCorrect:null,autoSave:null,credentialless:it,disablePictureInPicture:it,disableRemotePlayback:it,exportParts:il,part:Yt,prefix:null,property:null,results:Ce,security:null,unselectable:null},space:"html",transform:jI}),DH=uc({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",maskType:"mask-type",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:fa,accentHeight:Ce,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:Ce,amplitude:Ce,arabicForm:null,ascent:Ce,attributeName:null,attributeType:null,azimuth:Ce,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:Ce,by:null,calcMode:null,capHeight:Ce,className:Yt,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:Ce,diffuseConstant:Ce,direction:null,display:null,dur:null,divisor:Ce,dominantBaseline:null,download:it,dx:null,dy:null,edgeMode:null,editable:null,elevation:Ce,enableBackground:null,end:null,event:null,exponent:Ce,externalResourcesRequired:null,fill:null,fillOpacity:Ce,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:il,g2:il,glyphName:il,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:Ce,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:Ce,horizOriginX:Ce,horizOriginY:Ce,id:null,ideographic:Ce,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:Ce,k:Ce,k1:Ce,k2:Ce,k3:Ce,k4:Ce,kernelMatrix:fa,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:Ce,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskType:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:Ce,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:Ce,overlineThickness:Ce,paintOrder:null,panose1:null,path:null,pathLength:Ce,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:Yt,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:Ce,pointsAtY:Ce,pointsAtZ:Ce,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:fa,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:fa,rev:fa,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:fa,requiredFeatures:fa,requiredFonts:fa,requiredFormats:fa,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:Ce,specularExponent:Ce,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:Ce,strikethroughThickness:Ce,string:null,stroke:null,strokeDashArray:fa,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:Ce,strokeOpacity:Ce,strokeWidth:null,style:null,surfaceScale:Ce,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:fa,tabIndex:Ce,tableValues:null,target:null,targetX:Ce,targetY:Ce,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:fa,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:Ce,underlineThickness:Ce,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:Ce,values:null,vAlphabetic:Ce,vMathematical:Ce,vectorEffect:null,vHanging:Ce,vIdeographic:Ce,version:null,vertAdvY:Ce,vertOriginX:Ce,vertOriginY:Ce,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:Ce,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:"svg",transform:MI}),DI=uc({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()}}),LI=uc({attributes:{xmlnsxlink:"xmlns:xlink"},properties:{xmlnsXLink:null,xmlns:null},space:"xmlns",transform:jI}),PI=uc({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:"xml",transform(e,t){return"xml:"+t.slice(3).toLowerCase()}}),LH={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"},PH=/[A-Z]/g,b2=/-[a-z]/g,BH=/^data[-\w.:]+$/i;function y0(e,t){const n=sf(t);let r=t,a=ea;if(n in e.normal)return e.property[e.normal[n]];if(n.length>4&&n.slice(0,4)==="data"&&BH.test(t)){if(t.charAt(4)==="-"){const s=t.slice(5).replace(b2,FH);r="data"+s.charAt(0).toUpperCase()+s.slice(1)}else{const s=t.slice(4);if(!b2.test(s)){let o=s.replace(PH,UH);o.charAt(0)!=="-"&&(o="-"+o),t="data"+o}}a=B1}return new a(r,t)}function UH(e){return"-"+e.toLowerCase()}function FH(e){return e.charAt(1).toUpperCase()}const Rf=II([RI,jH,DI,LI,PI],"html"),ho=II([RI,DH,DI,LI,PI],"svg");function x2(e){const t=String(e||"").trim();return t?t.split(/[ \t\n\r\f]+/g):[]}function BI(e){return e.join(" ").trim()}var vu={},Bx,y2;function zH(){if(y2)return Bx;y2=1;var e=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,t=/\n/g,n=/^\s*/,r=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,a=/^:\s*/,s=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,o=/^[;\s]*/,c=/^\s+|\s+$/g,d=`
516
516
  `,f="/",m="*",p="",b="comment",x="declaration";function E(S,T){if(typeof S!="string")throw new TypeError("First argument must be a string");if(!S)return[];T=T||{};var C=1,A=1;function k(Q){var W=Q.match(t);W&&(C+=W.length);var V=Q.lastIndexOf(d);A=~V?Q.length-V:A+Q.length}function R(){var Q={line:C,column:A};return function(W){return W.position=new O(Q),D(),W}}function O(Q){this.start=Q,this.end={line:C,column:A},this.source=T.source}O.prototype.content=S;function j(Q){var W=new Error(T.source+":"+C+":"+A+": "+Q);if(W.reason=Q,W.filename=T.source,W.line=C,W.column=A,W.source=S,!T.silent)throw W}function $(Q){var W=Q.exec(S);if(W){var V=W[0];return k(V),S=S.slice(V.length),W}}function D(){$(n)}function M(Q){var W;for(Q=Q||[];W=G();)W!==!1&&Q.push(W);return Q}function G(){var Q=R();if(!(f!=S.charAt(0)||m!=S.charAt(1))){for(var W=2;p!=S.charAt(W)&&(m!=S.charAt(W)||f!=S.charAt(W+1));)++W;if(W+=2,p===S.charAt(W-1))return j("End of comment missing");var V=S.slice(2,W-2);return A+=2,k(V),S=S.slice(W),A+=2,Q({type:b,comment:V})}}function K(){var Q=R(),W=$(r);if(W){if(G(),!$(a))return j("property missing ':'");var V=$(s),H=Q({type:x,property:N(W[0].replace(e,p)),value:V?N(V[0].replace(e,p)):p});return $(o),H}}function ae(){var Q=[];M(Q);for(var W;W=K();)W!==!1&&(Q.push(W),M(Q));return Q}return D(),ae()}function N(S){return S?S.replace(c,p):p}return Bx=E,Bx}var v2;function HH(){if(v2)return vu;v2=1;var e=vu&&vu.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(vu,"__esModule",{value:!0}),vu.default=n;const t=e(zH());function n(r,a){let s=null;if(!r||typeof r!="string")return s;const o=(0,t.default)(r),c=typeof a=="function";return o.forEach(d=>{if(d.type!=="declaration")return;const{property:f,value:m}=d;c?a(f,m,d):m&&(s=s||{},s[f]=m)}),s}return vu}var Nd={},E2;function $H(){if(E2)return Nd;E2=1,Object.defineProperty(Nd,"__esModule",{value:!0}),Nd.camelCase=void 0;var e=/^--[a-zA-Z0-9_-]+$/,t=/-([a-z])/g,n=/^[^-]+$/,r=/^-(webkit|moz|ms|o|khtml)-/,a=/^-(ms)-/,s=function(f){return!f||n.test(f)||e.test(f)},o=function(f,m){return m.toUpperCase()},c=function(f,m){return"".concat(m,"-")},d=function(f,m){return m===void 0&&(m={}),s(f)?f:(f=f.toLowerCase(),m.reactCompat?f=f.replace(a,c):f=f.replace(r,c),f.replace(t,o))};return Nd.camelCase=d,Nd}var _d,N2;function qH(){if(N2)return _d;N2=1;var e=_d&&_d.__importDefault||function(a){return a&&a.__esModule?a:{default:a}},t=e(HH()),n=$H();function r(a,s){var o={};return!a||typeof a!="string"||(0,t.default)(a,function(c,d){c&&d&&(o[(0,n.camelCase)(c,s)]=d)}),o}return r.default=r,_d=r,_d}var YH=qH();const GH=Sf(YH),v0=UI("end"),Ci=UI("start");function UI(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 KH(e){const t=Ci(e),n=v0(e);if(t&&n)return{start:t,end:n}}function qd(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?_2(e.position):"start"in e||"end"in e?_2(e):"line"in e||"column"in e?iv(e):""}function iv(e){return T2(e&&e.line)+":"+T2(e&&e.column)}function _2(e){return iv(e&&e.start)+"-"+iv(e&&e.end)}function T2(e){return e&&typeof e=="number"?e:1}class Nr extends Error{constructor(t,n,r){super(),typeof n=="string"&&(r=n,n=void 0);let a="",s={},o=!1;if(n&&("line"in n&&"column"in n?s={place:n}:"start"in n&&"end"in n?s={place:n}:"type"in n?s={ancestors:[n],place:n.position}:s={...n}),typeof t=="string"?a=t:!s.cause&&t&&(o=!0,a=t.message,s.cause=t),!s.ruleId&&!s.source&&typeof r=="string"){const d=r.indexOf(":");d===-1?s.ruleId=r:(s.source=r.slice(0,d),s.ruleId=r.slice(d+1))}if(!s.place&&s.ancestors&&s.ancestors){const d=s.ancestors[s.ancestors.length-1];d&&(s.place=d.position)}const c=s.place&&"start"in s.place?s.place.start:s.place;this.ancestors=s.ancestors||void 0,this.cause=s.cause||void 0,this.column=c?c.column:void 0,this.fatal=void 0,this.file="",this.message=a,this.line=c?c.line:void 0,this.name=qd(s.place)||"1:1",this.place=s.place||void 0,this.reason=this.message,this.ruleId=s.ruleId||void 0,this.source=s.source||void 0,this.stack=o&&s.cause&&typeof s.cause.stack=="string"?s.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}Nr.prototype.file="";Nr.prototype.name="";Nr.prototype.reason="";Nr.prototype.message="";Nr.prototype.stack="";Nr.prototype.column=void 0;Nr.prototype.line=void 0;Nr.prototype.ancestors=void 0;Nr.prototype.cause=void 0;Nr.prototype.fatal=void 0;Nr.prototype.place=void 0;Nr.prototype.ruleId=void 0;Nr.prototype.source=void 0;const U1={}.hasOwnProperty,VH=new Map,WH=/[A-Z]/g,XH=new Set(["table","tbody","thead","tfoot","tr"]),QH=new Set(["td","th"]),FI="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function ZH(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=s$(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=i$(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"?ho:Rf,stylePropertyNameCase:t.stylePropertyNameCase||"dom",tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},s=zI(a,e,void 0);return s&&typeof s!="string"?s:a.create(e,a.Fragment,{children:s||void 0},void 0)}function zI(e,t,n){if(t.type==="element")return JH(e,t,n);if(t.type==="mdxFlowExpression"||t.type==="mdxTextExpression")return e$(e,t);if(t.type==="mdxJsxFlowElement"||t.type==="mdxJsxTextElement")return n$(e,t,n);if(t.type==="mdxjsEsm")return t$(e,t);if(t.type==="root")return r$(e,t,n);if(t.type==="text")return a$(e,t)}function JH(e,t,n){const r=e.schema;let a=r;t.tagName.toLowerCase()==="svg"&&r.space==="html"&&(a=ho,e.schema=a),e.ancestors.push(t);const s=$I(e,t.tagName,!1),o=o$(e,t);let c=z1(e,t);return XH.has(t.tagName)&&(c=c.filter(function(d){return typeof d=="string"?!RH(d):!0})),HI(e,o,s,t),F1(o,c),e.ancestors.pop(),e.schema=r,e.create(t,s,o,n)}function e$(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)}of(e,t.position)}function t$(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);of(e,t.position)}function n$(e,t,n){const r=e.schema;let a=r;t.name==="svg"&&r.space==="html"&&(a=ho,e.schema=a),e.ancestors.push(t);const s=t.name===null?e.Fragment:$I(e,t.name,!0),o=l$(e,t),c=z1(e,t);return HI(e,o,s,t),F1(o,c),e.ancestors.pop(),e.schema=r,e.create(t,s,o,n)}function r$(e,t,n){const r={};return F1(r,z1(e,t)),e.create(t,e.Fragment,r,n)}function a$(e,t){return t.value}function HI(e,t,n,r){typeof n!="string"&&n!==e.Fragment&&e.passNode&&(t.node=r)}function F1(e,t){if(t.length>0){const n=t.length>1?t:t[0];n&&(e.children=n)}}function i$(e,t,n){return r;function r(a,s,o,c){const f=Array.isArray(o.children)?n:t;return c?f(s,o,c):f(s,o)}}function s$(e,t){return n;function n(r,a,s,o){const c=Array.isArray(s.children),d=Ci(r);return t(a,s,o,c,{columnNumber:d?d.column-1:void 0,fileName:e,lineNumber:d?d.line:void 0},void 0)}}function o$(e,t){const n={};let r,a;for(a in t.properties)if(a!=="children"&&U1.call(t.properties,a)){const s=u$(e,a,t.properties[a]);if(s){const[o,c]=s;e.tableCellAlignToStyle&&o==="align"&&typeof c=="string"&&QH.has(t.tagName)?r=c:n[o]=c}}if(r){const s=n.style||(n.style={});s[e.stylePropertyNameCase==="css"?"text-align":"textAlign"]=r}return n}function l$(e,t){const n={};for(const r of t.attributes)if(r.type==="mdxJsxExpressionAttribute")if(r.data&&r.data.estree&&e.evaluater){const s=r.data.estree.body[0];s.type;const o=s.expression;o.type;const c=o.properties[0];c.type,Object.assign(n,e.evaluater.evaluateExpression(c.argument))}else of(e,t.position);else{const a=r.name;let s;if(r.value&&typeof r.value=="object")if(r.value.data&&r.value.data.estree&&e.evaluater){const c=r.value.data.estree.body[0];c.type,s=e.evaluater.evaluateExpression(c.expression)}else of(e,t.position);else s=r.value===null?!0:r.value;n[a]=s}return n}function z1(e,t){const n=[];let r=-1;const a=e.passKeys?new Map:VH;for(;++r<t.children.length;){const s=t.children[r];let o;if(e.passKeys){const d=s.type==="element"?s.tagName:s.type==="mdxJsxFlowElement"||s.type==="mdxJsxTextElement"?s.name:void 0;if(d){const f=a.get(d)||0;o=d+"-"+f,a.set(d,f+1)}}const c=zI(e,s,o);c!==void 0&&n.push(c)}return n}function u$(e,t,n){const r=y0(e.schema,t);if(!(n==null||typeof n=="number"&&Number.isNaN(n))){if(Array.isArray(n)&&(n=r.commaSeparated?OI(n):BI(n)),r.property==="style"){let a=typeof n=="object"?n:c$(e,String(n));return e.stylePropertyNameCase==="css"&&(a=d$(a)),["style",a]}return[e.elementAttributeNameCase==="react"&&r.space?LH[r.property]||r.property:r.attribute,n]}}function c$(e,t){try{return GH(t,{reactCompat:!0})}catch(n){if(e.ignoreInvalidStyle)return{};const r=n,a=new Nr("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=FI+"#cannot-parse-style-attribute",a}}function $I(e,t,n){let r;if(!n)r={type:"Literal",value:t};else if(t.includes(".")){const a=t.split(".");let s=-1,o;for(;++s<a.length;){const c=m2(a[s])?{type:"Identifier",name:a[s]}:{type:"Literal",value:a[s]};o=o?{type:"MemberExpression",object:o,property:c,computed:!!(s&&c.type==="Literal"),optional:!1}:c}r=o}else r=m2(t)&&!/^[a-z]/.test(t)?{type:"Identifier",name:t}:{type:"Literal",value:t};if(r.type==="Literal"){const a=r.value;return U1.call(e.components,a)?e.components[a]:a}if(e.evaluater)return e.evaluater.evaluateExpression(r);of(e)}function of(e,t){const n=new Nr("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=FI+"#cannot-handle-mdx-estrees-without-createevaluater",n}function d$(e){const t={};let n;for(n in e)U1.call(e,n)&&(t[f$(n)]=e[n]);return t}function f$(e){let t=e.replace(WH,h$);return t.slice(0,3)==="ms-"&&(t="-"+t),t}function h$(e){return"-"+e.toLowerCase()}const Ux={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"]},m$={};function H1(e,t){const n=m$,r=typeof n.includeImageAlt=="boolean"?n.includeImageAlt:!0,a=typeof n.includeHtml=="boolean"?n.includeHtml:!0;return qI(e,r,a)}function qI(e,t,n){if(p$(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 S2(e.children,t,n)}return Array.isArray(e)?S2(e,t,n):""}function S2(e,t,n){const r=[];let a=-1;for(;++a<e.length;)r[a]=qI(e[a],t,n);return r.join("")}function p$(e){return!!(e&&typeof e=="object")}const w2=document.createElement("i");function $1(e){const t="&"+e+";";w2.innerHTML=t;const n=w2.textContent;return n.charCodeAt(n.length-1)===59&&e!=="semi"||n===t?!1:n}function pa(e,t,n,r){const a=e.length;let s=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);s<r.length;)o=r.slice(s,s+1e4),o.unshift(t,0),e.splice(...o),s+=1e4,t+=1e4}function Oa(e,t){return e.length>0?(pa(e,e.length,0,t),e):t}const A2={}.hasOwnProperty;function YI(e){const t={};let n=-1;for(;++n<e.length;)g$(t,e[n]);return t}function g$(e,t){let n;for(n in t){const a=(A2.call(e,n)?e[n]:void 0)||(e[n]={}),s=t[n];let o;if(s)for(o in s){A2.call(a,o)||(a[o]=[]);const c=s[o];b$(a[o],Array.isArray(c)?c:c?[c]:[])}}}function b$(e,t){let n=-1;const r=[];for(;++n<t.length;)(t[n].add==="after"?e:r).push(t[n]);pa(e,0,0,r)}function GI(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 Qa(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const Rr=mo(/[A-Za-z]/),vr=mo(/[\dA-Za-z]/),x$=mo(/[#-'*+\--9=?A-Z^-~]/);function cp(e){return e!==null&&(e<32||e===127)}const sv=mo(/\d/),y$=mo(/[\dA-Fa-f]/),v$=mo(/[!-/:-@[-`{-~]/);function Xe(e){return e!==null&&e<-2}function Kt(e){return e!==null&&(e<0||e===32)}function gt(e){return e===-2||e===-1||e===32}const E0=mo(new RegExp("\\p{P}|\\p{S}","u")),ml=mo(/\s/);function mo(e){return t;function t(n){return n!==null&&n>-1&&e.test(String.fromCharCode(n))}}function cc(e){const t=[];let n=-1,r=0,a=0;for(;++n<e.length;){const s=e.charCodeAt(n);let o="";if(s===37&&vr(e.charCodeAt(n+1))&&vr(e.charCodeAt(n+2)))a=2;else if(s<128)/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(s))||(o=String.fromCharCode(s));else if(s>55295&&s<57344){const c=e.charCodeAt(n+1);s<56320&&c>56319&&c<57344?(o=String.fromCharCode(s,c),a=1):o="�"}else o=String.fromCharCode(s);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 Tt(e,t,n,r){const a=r?r-1:Number.POSITIVE_INFINITY;let s=0;return o;function o(d){return gt(d)?(e.enter(n),c(d)):t(d)}function c(d){return gt(d)&&s++<a?(e.consume(d),c):(e.exit(n),t(d))}}const E$={tokenize:N$};function N$(e){const t=e.attempt(this.parser.constructs.contentInitial,r,a);let n;return t;function r(c){if(c===null){e.consume(c);return}return e.enter("lineEnding"),e.consume(c),e.exit("lineEnding"),Tt(e,t,"linePrefix")}function a(c){return e.enter("paragraph"),s(c)}function s(c){const d=e.enter("chunkText",{contentType:"text",previous:n});return n&&(n.next=d),n=d,o(c)}function o(c){if(c===null){e.exit("chunkText"),e.exit("paragraph"),e.consume(c);return}return Xe(c)?(e.consume(c),e.exit("chunkText"),s):(e.consume(c),o)}}const _$={tokenize:T$},C2={tokenize:S$};function T$(e){const t=this,n=[];let r=0,a,s,o;return c;function c(A){if(r<n.length){const k=n[r];return t.containerState=k[1],e.attempt(k[0].continuation,d,f)(A)}return f(A)}function d(A){if(r++,t.containerState._closeFlow){t.containerState._closeFlow=void 0,a&&C();const k=t.events.length;let R=k,O;for(;R--;)if(t.events[R][0]==="exit"&&t.events[R][1].type==="chunkFlow"){O=t.events[R][1].end;break}T(r);let j=k;for(;j<t.events.length;)t.events[j][1].end={...O},j++;return pa(t.events,R+1,0,t.events.slice(k)),t.events.length=j,f(A)}return c(A)}function f(A){if(r===n.length){if(!a)return b(A);if(a.currentConstruct&&a.currentConstruct.concrete)return E(A);t.interrupt=!!(a.currentConstruct&&!a._gfmTableDynamicInterruptHack)}return t.containerState={},e.check(C2,m,p)(A)}function m(A){return a&&C(),T(r),b(A)}function p(A){return t.parser.lazy[t.now().line]=r!==n.length,o=t.now().offset,E(A)}function b(A){return t.containerState={},e.attempt(C2,x,E)(A)}function x(A){return r++,n.push([t.currentConstruct,t.containerState]),b(A)}function E(A){if(A===null){a&&C(),T(0),e.consume(A);return}return a=a||t.parser.flow(t.now()),e.enter("chunkFlow",{_tokenizer:a,contentType:"flow",previous:s}),N(A)}function N(A){if(A===null){S(e.exit("chunkFlow"),!0),T(0),e.consume(A);return}return Xe(A)?(e.consume(A),S(e.exit("chunkFlow")),r=0,t.interrupt=void 0,c):(e.consume(A),N)}function S(A,k){const R=t.sliceStream(A);if(k&&R.push(null),A.previous=s,s&&(s.next=A),s=A,a.defineSkip(A.start),a.write(R),t.parser.lazy[A.start.line]){let O=a.events.length;for(;O--;)if(a.events[O][1].start.offset<o&&(!a.events[O][1].end||a.events[O][1].end.offset>o))return;const j=t.events.length;let $=j,D,M;for(;$--;)if(t.events[$][0]==="exit"&&t.events[$][1].type==="chunkFlow"){if(D){M=t.events[$][1].end;break}D=!0}for(T(r),O=j;O<t.events.length;)t.events[O][1].end={...M},O++;pa(t.events,$+1,0,t.events.slice(j)),t.events.length=O}}function T(A){let k=n.length;for(;k-- >A;){const R=n[k];t.containerState=R[1],R[0].exit.call(t,e)}n.length=A}function C(){a.write([null]),s=void 0,a=void 0,t.containerState._closeFlow=void 0}}function S$(e,t,n){return Tt(e,e.attempt(this.parser.constructs.document,t,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function $u(e){if(e===null||Kt(e)||ml(e))return 1;if(E0(e))return 2}function N0(e,t,n){const r=[];let a=-1;for(;++a<e.length;){const s=e[a].resolveAll;s&&!r.includes(s)&&(t=s(t,n),r.push(s))}return t}const ov={name:"attention",resolveAll:w$,tokenize:A$};function w$(e,t){let n=-1,r,a,s,o,c,d,f,m;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;d=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 p={...e[r][1].end},b={...e[n][1].start};k2(p,-d),k2(b,d),o={type:d>1?"strongSequence":"emphasisSequence",start:p,end:{...e[r][1].end}},c={type:d>1?"strongSequence":"emphasisSequence",start:{...e[n][1].start},end:b},s={type:d>1?"strongText":"emphasisText",start:{...e[r][1].end},end:{...e[n][1].start}},a={type:d>1?"strong":"emphasis",start:{...o.start},end:{...c.end}},e[r][1].end={...o.start},e[n][1].start={...c.end},f=[],e[r][1].end.offset-e[r][1].start.offset&&(f=Oa(f,[["enter",e[r][1],t],["exit",e[r][1],t]])),f=Oa(f,[["enter",a,t],["enter",o,t],["exit",o,t],["enter",s,t]]),f=Oa(f,N0(t.parser.constructs.insideSpan.null,e.slice(r+1,n),t)),f=Oa(f,[["exit",s,t],["enter",c,t],["exit",c,t],["exit",a,t]]),e[n][1].end.offset-e[n][1].start.offset?(m=2,f=Oa(f,[["enter",e[n][1],t],["exit",e[n][1],t]])):m=0,pa(e,r-1,n-r+3,f),n=r+f.length-m-2;break}}for(n=-1;++n<e.length;)e[n][1].type==="attentionSequence"&&(e[n][1].type="data");return e}function A$(e,t){const n=this.parser.constructs.attentionMarkers.null,r=this.previous,a=$u(r);let s;return o;function o(d){return s=d,e.enter("attentionSequence"),c(d)}function c(d){if(d===s)return e.consume(d),c;const f=e.exit("attentionSequence"),m=$u(d),p=!m||m===2&&a||n.includes(d),b=!a||a===2&&m||n.includes(r);return f._open=!!(s===42?p:p&&(a||!b)),f._close=!!(s===42?b:b&&(m||!p)),t(d)}}function k2(e,t){e.column+=t,e.offset+=t,e._bufferIndex+=t}const C$={name:"autolink",tokenize:k$};function k$(e,t,n){let r=0;return a;function a(x){return e.enter("autolink"),e.enter("autolinkMarker"),e.consume(x),e.exit("autolinkMarker"),e.enter("autolinkProtocol"),s}function s(x){return Rr(x)?(e.consume(x),o):x===64?n(x):f(x)}function o(x){return x===43||x===45||x===46||vr(x)?(r=1,c(x)):f(x)}function c(x){return x===58?(e.consume(x),r=0,d):(x===43||x===45||x===46||vr(x))&&r++<32?(e.consume(x),c):(r=0,f(x))}function d(x){return x===62?(e.exit("autolinkProtocol"),e.enter("autolinkMarker"),e.consume(x),e.exit("autolinkMarker"),e.exit("autolink"),t):x===null||x===32||x===60||cp(x)?n(x):(e.consume(x),d)}function f(x){return x===64?(e.consume(x),m):x$(x)?(e.consume(x),f):n(x)}function m(x){return vr(x)?p(x):n(x)}function p(x){return x===46?(e.consume(x),r=0,m):x===62?(e.exit("autolinkProtocol").type="autolinkEmail",e.enter("autolinkMarker"),e.consume(x),e.exit("autolinkMarker"),e.exit("autolink"),t):b(x)}function b(x){if((x===45||vr(x))&&r++<63){const E=x===45?b:p;return e.consume(x),E}return n(x)}}const Mf={partial:!0,tokenize:O$};function O$(e,t,n){return r;function r(s){return gt(s)?Tt(e,a,"linePrefix")(s):a(s)}function a(s){return s===null||Xe(s)?t(s):n(s)}}const KI={continuation:{tokenize:R$},exit:M$,name:"blockQuote",tokenize:I$};function I$(e,t,n){const r=this;return a;function a(o){if(o===62){const c=r.containerState;return c.open||(e.enter("blockQuote",{_container:!0}),c.open=!0),e.enter("blockQuotePrefix"),e.enter("blockQuoteMarker"),e.consume(o),e.exit("blockQuoteMarker"),s}return n(o)}function s(o){return gt(o)?(e.enter("blockQuotePrefixWhitespace"),e.consume(o),e.exit("blockQuotePrefixWhitespace"),e.exit("blockQuotePrefix"),t):(e.exit("blockQuotePrefix"),t(o))}}function R$(e,t,n){const r=this;return a;function a(o){return gt(o)?Tt(e,s,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(o):s(o)}function s(o){return e.attempt(KI,t,n)(o)}}function M$(e){e.exit("blockQuote")}const VI={name:"characterEscape",tokenize:j$};function j$(e,t,n){return r;function r(s){return e.enter("characterEscape"),e.enter("escapeMarker"),e.consume(s),e.exit("escapeMarker"),a}function a(s){return v$(s)?(e.enter("characterEscapeValue"),e.consume(s),e.exit("characterEscapeValue"),e.exit("characterEscape"),t):n(s)}}const WI={name:"characterReference",tokenize:D$};function D$(e,t,n){const r=this;let a=0,s,o;return c;function c(p){return e.enter("characterReference"),e.enter("characterReferenceMarker"),e.consume(p),e.exit("characterReferenceMarker"),d}function d(p){return p===35?(e.enter("characterReferenceMarkerNumeric"),e.consume(p),e.exit("characterReferenceMarkerNumeric"),f):(e.enter("characterReferenceValue"),s=31,o=vr,m(p))}function f(p){return p===88||p===120?(e.enter("characterReferenceMarkerHexadecimal"),e.consume(p),e.exit("characterReferenceMarkerHexadecimal"),e.enter("characterReferenceValue"),s=6,o=y$,m):(e.enter("characterReferenceValue"),s=7,o=sv,m(p))}function m(p){if(p===59&&a){const b=e.exit("characterReferenceValue");return o===vr&&!$1(r.sliceSerialize(b))?n(p):(e.enter("characterReferenceMarker"),e.consume(p),e.exit("characterReferenceMarker"),e.exit("characterReference"),t)}return o(p)&&a++<s?(e.consume(p),m):n(p)}}const O2={partial:!0,tokenize:P$},I2={concrete:!0,name:"codeFenced",tokenize:L$};function L$(e,t,n){const r=this,a={partial:!0,tokenize:R};let s=0,o=0,c;return d;function d(O){return f(O)}function f(O){const j=r.events[r.events.length-1];return s=j&&j[1].type==="linePrefix"?j[2].sliceSerialize(j[1],!0).length:0,c=O,e.enter("codeFenced"),e.enter("codeFencedFence"),e.enter("codeFencedFenceSequence"),m(O)}function m(O){return O===c?(o++,e.consume(O),m):o<3?n(O):(e.exit("codeFencedFenceSequence"),gt(O)?Tt(e,p,"whitespace")(O):p(O))}function p(O){return O===null||Xe(O)?(e.exit("codeFencedFence"),r.interrupt?t(O):e.check(O2,N,k)(O)):(e.enter("codeFencedFenceInfo"),e.enter("chunkString",{contentType:"string"}),b(O))}function b(O){return O===null||Xe(O)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),p(O)):gt(O)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),Tt(e,x,"whitespace")(O)):O===96&&O===c?n(O):(e.consume(O),b)}function x(O){return O===null||Xe(O)?p(O):(e.enter("codeFencedFenceMeta"),e.enter("chunkString",{contentType:"string"}),E(O))}function E(O){return O===null||Xe(O)?(e.exit("chunkString"),e.exit("codeFencedFenceMeta"),p(O)):O===96&&O===c?n(O):(e.consume(O),E)}function N(O){return e.attempt(a,k,S)(O)}function S(O){return e.enter("lineEnding"),e.consume(O),e.exit("lineEnding"),T}function T(O){return s>0&&gt(O)?Tt(e,C,"linePrefix",s+1)(O):C(O)}function C(O){return O===null||Xe(O)?e.check(O2,N,k)(O):(e.enter("codeFlowValue"),A(O))}function A(O){return O===null||Xe(O)?(e.exit("codeFlowValue"),C(O)):(e.consume(O),A)}function k(O){return e.exit("codeFenced"),t(O)}function R(O,j,$){let D=0;return M;function M(W){return O.enter("lineEnding"),O.consume(W),O.exit("lineEnding"),G}function G(W){return O.enter("codeFencedFence"),gt(W)?Tt(O,K,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(W):K(W)}function K(W){return W===c?(O.enter("codeFencedFenceSequence"),ae(W)):$(W)}function ae(W){return W===c?(D++,O.consume(W),ae):D>=o?(O.exit("codeFencedFenceSequence"),gt(W)?Tt(O,Q,"whitespace")(W):Q(W)):$(W)}function Q(W){return W===null||Xe(W)?(O.exit("codeFencedFence"),j(W)):$(W)}}}function P$(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"),s)}function s(o){return r.parser.lazy[r.now().line]?n(o):t(o)}}const Fx={name:"codeIndented",tokenize:U$},B$={partial:!0,tokenize:F$};function U$(e,t,n){const r=this;return a;function a(f){return e.enter("codeIndented"),Tt(e,s,"linePrefix",5)(f)}function s(f){const m=r.events[r.events.length-1];return m&&m[1].type==="linePrefix"&&m[2].sliceSerialize(m[1],!0).length>=4?o(f):n(f)}function o(f){return f===null?d(f):Xe(f)?e.attempt(B$,o,d)(f):(e.enter("codeFlowValue"),c(f))}function c(f){return f===null||Xe(f)?(e.exit("codeFlowValue"),o(f)):(e.consume(f),c)}function d(f){return e.exit("codeIndented"),t(f)}}function F$(e,t,n){const r=this;return a;function a(o){return r.parser.lazy[r.now().line]?n(o):Xe(o)?(e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),a):Tt(e,s,"linePrefix",5)(o)}function s(o){const c=r.events[r.events.length-1];return c&&c[1].type==="linePrefix"&&c[2].sliceSerialize(c[1],!0).length>=4?t(o):Xe(o)?a(o):n(o)}}const z$={name:"codeText",previous:$$,resolve:H$,tokenize:q$};function H$(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 $$(e){return e!==96||this.events[this.events.length-1][1].type==="characterEscape"}function q$(e,t,n){let r=0,a,s;return o;function o(p){return e.enter("codeText"),e.enter("codeTextSequence"),c(p)}function c(p){return p===96?(e.consume(p),r++,c):(e.exit("codeTextSequence"),d(p))}function d(p){return p===null?n(p):p===32?(e.enter("space"),e.consume(p),e.exit("space"),d):p===96?(s=e.enter("codeTextSequence"),a=0,m(p)):Xe(p)?(e.enter("lineEnding"),e.consume(p),e.exit("lineEnding"),d):(e.enter("codeTextData"),f(p))}function f(p){return p===null||p===32||p===96||Xe(p)?(e.exit("codeTextData"),d(p)):(e.consume(p),f)}function m(p){return p===96?(e.consume(p),a++,m):a===r?(e.exit("codeTextSequence"),e.exit("codeText"),t(p)):(s.type="codeTextData",f(p))}}class Y${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 s=this.right.splice(this.right.length-a,Number.POSITIVE_INFINITY);return r&&Td(this.left,r),s.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),Td(this.left,t)}unshift(t){this.setCursor(0),this.right.push(t)}unshiftMany(t){this.setCursor(0),Td(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);Td(this.right,n.reverse())}else{const n=this.right.splice(this.left.length+this.right.length-t,Number.POSITIVE_INFINITY);Td(this.left,n.reverse())}}}function Td(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 XI(e){const t={};let n=-1,r,a,s,o,c,d,f;const m=new Y$(e);for(;++n<m.length;){for(;n in t;)n=t[n];if(r=m.get(n),n&&r[1].type==="chunkFlow"&&m.get(n-1)[1].type==="listItemPrefix"&&(d=r[1]._tokenizer.events,s=0,s<d.length&&d[s][1].type==="lineEndingBlank"&&(s+=2),s<d.length&&d[s][1].type==="content"))for(;++s<d.length&&d[s][1].type!=="content";)d[s][1].type==="chunkText"&&(d[s][1]._isInFirstContentOfListItem=!0,s++);if(r[0]==="enter")r[1].contentType&&(Object.assign(t,G$(m,n)),n=t[n],f=!0);else if(r[1]._container){for(s=n,a=void 0;s--;)if(o=m.get(s),o[1].type==="lineEnding"||o[1].type==="lineEndingBlank")o[0]==="enter"&&(a&&(m.get(a)[1].type="lineEndingBlank"),o[1].type="lineEnding",a=s);else if(!(o[1].type==="linePrefix"||o[1].type==="listItemIndent"))break;a&&(r[1].end={...m.get(a)[1].start},c=m.slice(a,n),c.unshift(r),m.splice(a,n-a+1,c))}}return pa(e,0,Number.POSITIVE_INFINITY,m.slice(0)),!f}function G$(e,t){const n=e.get(t)[1],r=e.get(t)[2];let a=t-1;const s=[];let o=n._tokenizer;o||(o=r.parser[n.contentType](n.start),n._contentTypeTextTrailing&&(o._contentTypeTextTrailing=!0));const c=o.events,d=[],f={};let m,p,b=-1,x=n,E=0,N=0;const S=[N];for(;x;){for(;e.get(++a)[1]!==x;);s.push(a),x._tokenizer||(m=r.sliceStream(x),x.next||m.push(null),p&&o.defineSkip(x.start),x._isInFirstContentOfListItem&&(o._gfmTasklistFirstContentOfListItem=!0),o.write(m),x._isInFirstContentOfListItem&&(o._gfmTasklistFirstContentOfListItem=void 0)),p=x,x=x.next}for(x=n;++b<c.length;)c[b][0]==="exit"&&c[b-1][0]==="enter"&&c[b][1].type===c[b-1][1].type&&c[b][1].start.line!==c[b][1].end.line&&(N=b+1,S.push(N),x._tokenizer=void 0,x.previous=void 0,x=x.next);for(o.events=[],x?(x._tokenizer=void 0,x.previous=void 0):S.pop(),b=S.length;b--;){const T=c.slice(S[b],S[b+1]),C=s.pop();d.push([C,C+T.length-1]),e.splice(C,2,T)}for(d.reverse(),b=-1;++b<d.length;)f[E+d[b][0]]=E+d[b][1],E+=d[b][1]-d[b][0]-1;return f}const K$={resolve:W$,tokenize:X$},V$={partial:!0,tokenize:Q$};function W$(e){return XI(e),e}function X$(e,t){let n;return r;function r(c){return e.enter("content"),n=e.enter("chunkContent",{contentType:"content"}),a(c)}function a(c){return c===null?s(c):Xe(c)?e.check(V$,o,s)(c):(e.consume(c),a)}function s(c){return e.exit("chunkContent"),e.exit("content"),t(c)}function o(c){return e.consume(c),e.exit("chunkContent"),n.next=e.enter("chunkContent",{contentType:"content",previous:n}),n=n.next,a}}function Q$(e,t,n){const r=this;return a;function a(o){return e.exit("chunkContent"),e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),Tt(e,s,"linePrefix")}function s(o){if(o===null||Xe(o))return n(o);const c=r.events[r.events.length-1];return!r.parser.constructs.disable.null.includes("codeIndented")&&c&&c[1].type==="linePrefix"&&c[2].sliceSerialize(c[1],!0).length>=4?t(o):e.interrupt(r.parser.constructs.flow,n,t)(o)}}function QI(e,t,n,r,a,s,o,c,d){const f=d||Number.POSITIVE_INFINITY;let m=0;return p;function p(T){return T===60?(e.enter(r),e.enter(a),e.enter(s),e.consume(T),e.exit(s),b):T===null||T===32||T===41||cp(T)?n(T):(e.enter(r),e.enter(o),e.enter(c),e.enter("chunkString",{contentType:"string"}),N(T))}function b(T){return T===62?(e.enter(s),e.consume(T),e.exit(s),e.exit(a),e.exit(r),t):(e.enter(c),e.enter("chunkString",{contentType:"string"}),x(T))}function x(T){return T===62?(e.exit("chunkString"),e.exit(c),b(T)):T===null||T===60||Xe(T)?n(T):(e.consume(T),T===92?E:x)}function E(T){return T===60||T===62||T===92?(e.consume(T),x):x(T)}function N(T){return!m&&(T===null||T===41||Kt(T))?(e.exit("chunkString"),e.exit(c),e.exit(o),e.exit(r),t(T)):m<f&&T===40?(e.consume(T),m++,N):T===41?(e.consume(T),m--,N):T===null||T===32||T===40||cp(T)?n(T):(e.consume(T),T===92?S:N)}function S(T){return T===40||T===41||T===92?(e.consume(T),N):N(T)}}function ZI(e,t,n,r,a,s){const o=this;let c=0,d;return f;function f(x){return e.enter(r),e.enter(a),e.consume(x),e.exit(a),e.enter(s),m}function m(x){return c>999||x===null||x===91||x===93&&!d||x===94&&!c&&"_hiddenFootnoteSupport"in o.parser.constructs?n(x):x===93?(e.exit(s),e.enter(a),e.consume(x),e.exit(a),e.exit(r),t):Xe(x)?(e.enter("lineEnding"),e.consume(x),e.exit("lineEnding"),m):(e.enter("chunkString",{contentType:"string"}),p(x))}function p(x){return x===null||x===91||x===93||Xe(x)||c++>999?(e.exit("chunkString"),m(x)):(e.consume(x),d||(d=!gt(x)),x===92?b:p)}function b(x){return x===91||x===92||x===93?(e.consume(x),c++,p):p(x)}}function JI(e,t,n,r,a,s){let o;return c;function c(b){return b===34||b===39||b===40?(e.enter(r),e.enter(a),e.consume(b),e.exit(a),o=b===40?41:b,d):n(b)}function d(b){return b===o?(e.enter(a),e.consume(b),e.exit(a),e.exit(r),t):(e.enter(s),f(b))}function f(b){return b===o?(e.exit(s),d(o)):b===null?n(b):Xe(b)?(e.enter("lineEnding"),e.consume(b),e.exit("lineEnding"),Tt(e,f,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),m(b))}function m(b){return b===o||b===null||Xe(b)?(e.exit("chunkString"),f(b)):(e.consume(b),b===92?p:m)}function p(b){return b===o||b===92?(e.consume(b),m):m(b)}}function Yd(e,t){let n;return r;function r(a){return Xe(a)?(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),n=!0,r):gt(a)?Tt(e,r,n?"linePrefix":"lineSuffix")(a):t(a)}}const Z$={name:"definition",tokenize:eq},J$={partial:!0,tokenize:tq};function eq(e,t,n){const r=this;let a;return s;function s(x){return e.enter("definition"),o(x)}function o(x){return ZI.call(r,e,c,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(x)}function c(x){return a=Qa(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),x===58?(e.enter("definitionMarker"),e.consume(x),e.exit("definitionMarker"),d):n(x)}function d(x){return Kt(x)?Yd(e,f)(x):f(x)}function f(x){return QI(e,m,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(x)}function m(x){return e.attempt(J$,p,p)(x)}function p(x){return gt(x)?Tt(e,b,"whitespace")(x):b(x)}function b(x){return x===null||Xe(x)?(e.exit("definition"),r.parser.defined.push(a),t(x)):n(x)}}function tq(e,t,n){return r;function r(c){return Kt(c)?Yd(e,a)(c):n(c)}function a(c){return JI(e,s,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(c)}function s(c){return gt(c)?Tt(e,o,"whitespace")(c):o(c)}function o(c){return c===null||Xe(c)?t(c):n(c)}}const nq={name:"hardBreakEscape",tokenize:rq};function rq(e,t,n){return r;function r(s){return e.enter("hardBreakEscape"),e.consume(s),a}function a(s){return Xe(s)?(e.exit("hardBreakEscape"),t(s)):n(s)}}const aq={name:"headingAtx",resolve:iq,tokenize:sq};function iq(e,t){let n=e.length-2,r=3,a,s;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},s={type:"chunkText",start:e[r][1].start,end:e[n][1].end,contentType:"text"},pa(e,r,n-r+1,[["enter",a,t],["enter",s,t],["exit",s,t],["exit",a,t]])),e}function sq(e,t,n){let r=0;return a;function a(m){return e.enter("atxHeading"),s(m)}function s(m){return e.enter("atxHeadingSequence"),o(m)}function o(m){return m===35&&r++<6?(e.consume(m),o):m===null||Kt(m)?(e.exit("atxHeadingSequence"),c(m)):n(m)}function c(m){return m===35?(e.enter("atxHeadingSequence"),d(m)):m===null||Xe(m)?(e.exit("atxHeading"),t(m)):gt(m)?Tt(e,c,"whitespace")(m):(e.enter("atxHeadingText"),f(m))}function d(m){return m===35?(e.consume(m),d):(e.exit("atxHeadingSequence"),c(m))}function f(m){return m===null||m===35||Kt(m)?(e.exit("atxHeadingText"),c(m)):(e.consume(m),f)}}const oq=["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"],R2=["pre","script","style","textarea"],lq={concrete:!0,name:"htmlFlow",resolveTo:dq,tokenize:fq},uq={partial:!0,tokenize:mq},cq={partial:!0,tokenize:hq};function dq(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 fq(e,t,n){const r=this;let a,s,o,c,d;return f;function f(B){return m(B)}function m(B){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(B),p}function p(B){return B===33?(e.consume(B),b):B===47?(e.consume(B),s=!0,N):B===63?(e.consume(B),a=3,r.interrupt?t:L):Rr(B)?(e.consume(B),o=String.fromCharCode(B),S):n(B)}function b(B){return B===45?(e.consume(B),a=2,x):B===91?(e.consume(B),a=5,c=0,E):Rr(B)?(e.consume(B),a=4,r.interrupt?t:L):n(B)}function x(B){return B===45?(e.consume(B),r.interrupt?t:L):n(B)}function E(B){const me="CDATA[";return B===me.charCodeAt(c++)?(e.consume(B),c===me.length?r.interrupt?t:K:E):n(B)}function N(B){return Rr(B)?(e.consume(B),o=String.fromCharCode(B),S):n(B)}function S(B){if(B===null||B===47||B===62||Kt(B)){const me=B===47,se=o.toLowerCase();return!me&&!s&&R2.includes(se)?(a=1,r.interrupt?t(B):K(B)):oq.includes(o.toLowerCase())?(a=6,me?(e.consume(B),T):r.interrupt?t(B):K(B)):(a=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(B):s?C(B):A(B))}return B===45||vr(B)?(e.consume(B),o+=String.fromCharCode(B),S):n(B)}function T(B){return B===62?(e.consume(B),r.interrupt?t:K):n(B)}function C(B){return gt(B)?(e.consume(B),C):M(B)}function A(B){return B===47?(e.consume(B),M):B===58||B===95||Rr(B)?(e.consume(B),k):gt(B)?(e.consume(B),A):M(B)}function k(B){return B===45||B===46||B===58||B===95||vr(B)?(e.consume(B),k):R(B)}function R(B){return B===61?(e.consume(B),O):gt(B)?(e.consume(B),R):A(B)}function O(B){return B===null||B===60||B===61||B===62||B===96?n(B):B===34||B===39?(e.consume(B),d=B,j):gt(B)?(e.consume(B),O):$(B)}function j(B){return B===d?(e.consume(B),d=null,D):B===null||Xe(B)?n(B):(e.consume(B),j)}function $(B){return B===null||B===34||B===39||B===47||B===60||B===61||B===62||B===96||Kt(B)?R(B):(e.consume(B),$)}function D(B){return B===47||B===62||gt(B)?A(B):n(B)}function M(B){return B===62?(e.consume(B),G):n(B)}function G(B){return B===null||Xe(B)?K(B):gt(B)?(e.consume(B),G):n(B)}function K(B){return B===45&&a===2?(e.consume(B),V):B===60&&a===1?(e.consume(B),H):B===62&&a===4?(e.consume(B),P):B===63&&a===3?(e.consume(B),L):B===93&&a===5?(e.consume(B),Y):Xe(B)&&(a===6||a===7)?(e.exit("htmlFlowData"),e.check(uq,J,ae)(B)):B===null||Xe(B)?(e.exit("htmlFlowData"),ae(B)):(e.consume(B),K)}function ae(B){return e.check(cq,Q,J)(B)}function Q(B){return e.enter("lineEnding"),e.consume(B),e.exit("lineEnding"),W}function W(B){return B===null||Xe(B)?ae(B):(e.enter("htmlFlowData"),K(B))}function V(B){return B===45?(e.consume(B),L):K(B)}function H(B){return B===47?(e.consume(B),o="",F):K(B)}function F(B){if(B===62){const me=o.toLowerCase();return R2.includes(me)?(e.consume(B),P):K(B)}return Rr(B)&&o.length<8?(e.consume(B),o+=String.fromCharCode(B),F):K(B)}function Y(B){return B===93?(e.consume(B),L):K(B)}function L(B){return B===62?(e.consume(B),P):B===45&&a===2?(e.consume(B),L):K(B)}function P(B){return B===null||Xe(B)?(e.exit("htmlFlowData"),J(B)):(e.consume(B),P)}function J(B){return e.exit("htmlFlow"),t(B)}}function hq(e,t,n){const r=this;return a;function a(o){return Xe(o)?(e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),s):n(o)}function s(o){return r.parser.lazy[r.now().line]?n(o):t(o)}}function mq(e,t,n){return r;function r(a){return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),e.attempt(Mf,t,n)}}const pq={name:"htmlText",tokenize:gq};function gq(e,t,n){const r=this;let a,s,o;return c;function c(L){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(L),d}function d(L){return L===33?(e.consume(L),f):L===47?(e.consume(L),R):L===63?(e.consume(L),A):Rr(L)?(e.consume(L),$):n(L)}function f(L){return L===45?(e.consume(L),m):L===91?(e.consume(L),s=0,E):Rr(L)?(e.consume(L),C):n(L)}function m(L){return L===45?(e.consume(L),x):n(L)}function p(L){return L===null?n(L):L===45?(e.consume(L),b):Xe(L)?(o=p,H(L)):(e.consume(L),p)}function b(L){return L===45?(e.consume(L),x):p(L)}function x(L){return L===62?V(L):L===45?b(L):p(L)}function E(L){const P="CDATA[";return L===P.charCodeAt(s++)?(e.consume(L),s===P.length?N:E):n(L)}function N(L){return L===null?n(L):L===93?(e.consume(L),S):Xe(L)?(o=N,H(L)):(e.consume(L),N)}function S(L){return L===93?(e.consume(L),T):N(L)}function T(L){return L===62?V(L):L===93?(e.consume(L),T):N(L)}function C(L){return L===null||L===62?V(L):Xe(L)?(o=C,H(L)):(e.consume(L),C)}function A(L){return L===null?n(L):L===63?(e.consume(L),k):Xe(L)?(o=A,H(L)):(e.consume(L),A)}function k(L){return L===62?V(L):A(L)}function R(L){return Rr(L)?(e.consume(L),O):n(L)}function O(L){return L===45||vr(L)?(e.consume(L),O):j(L)}function j(L){return Xe(L)?(o=j,H(L)):gt(L)?(e.consume(L),j):V(L)}function $(L){return L===45||vr(L)?(e.consume(L),$):L===47||L===62||Kt(L)?D(L):n(L)}function D(L){return L===47?(e.consume(L),V):L===58||L===95||Rr(L)?(e.consume(L),M):Xe(L)?(o=D,H(L)):gt(L)?(e.consume(L),D):V(L)}function M(L){return L===45||L===46||L===58||L===95||vr(L)?(e.consume(L),M):G(L)}function G(L){return L===61?(e.consume(L),K):Xe(L)?(o=G,H(L)):gt(L)?(e.consume(L),G):D(L)}function K(L){return L===null||L===60||L===61||L===62||L===96?n(L):L===34||L===39?(e.consume(L),a=L,ae):Xe(L)?(o=K,H(L)):gt(L)?(e.consume(L),K):(e.consume(L),Q)}function ae(L){return L===a?(e.consume(L),a=void 0,W):L===null?n(L):Xe(L)?(o=ae,H(L)):(e.consume(L),ae)}function Q(L){return L===null||L===34||L===39||L===60||L===61||L===96?n(L):L===47||L===62||Kt(L)?D(L):(e.consume(L),Q)}function W(L){return L===47||L===62||Kt(L)?D(L):n(L)}function V(L){return L===62?(e.consume(L),e.exit("htmlTextData"),e.exit("htmlText"),t):n(L)}function H(L){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(L),e.exit("lineEnding"),F}function F(L){return gt(L)?Tt(e,Y,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(L):Y(L)}function Y(L){return e.enter("htmlTextData"),o(L)}}const q1={name:"labelEnd",resolveAll:vq,resolveTo:Eq,tokenize:Nq},bq={tokenize:_q},xq={tokenize:Tq},yq={tokenize:Sq};function vq(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&&pa(e,0,e.length,n),e}function Eq(e,t){let n=e.length,r=0,a,s,o,c;for(;n--;)if(a=e[n][1],s){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&&(s=n,a.type!=="labelLink")){r=2;break}}else a.type==="labelEnd"&&(o=n);const d={type:e[s][1].type==="labelLink"?"link":"image",start:{...e[s][1].start},end:{...e[e.length-1][1].end}},f={type:"label",start:{...e[s][1].start},end:{...e[o][1].end}},m={type:"labelText",start:{...e[s+r+2][1].end},end:{...e[o-2][1].start}};return c=[["enter",d,t],["enter",f,t]],c=Oa(c,e.slice(s+1,s+r+3)),c=Oa(c,[["enter",m,t]]),c=Oa(c,N0(t.parser.constructs.insideSpan.null,e.slice(s+r+4,o-3),t)),c=Oa(c,[["exit",m,t],e[o-2],e[o-1],["exit",f,t]]),c=Oa(c,e.slice(o+1)),c=Oa(c,[["exit",d,t]]),pa(e,s,e.length,c),e}function Nq(e,t,n){const r=this;let a=r.events.length,s,o;for(;a--;)if((r.events[a][1].type==="labelImage"||r.events[a][1].type==="labelLink")&&!r.events[a][1]._balanced){s=r.events[a][1];break}return c;function c(b){return s?s._inactive?p(b):(o=r.parser.defined.includes(Qa(r.sliceSerialize({start:s.end,end:r.now()}))),e.enter("labelEnd"),e.enter("labelMarker"),e.consume(b),e.exit("labelMarker"),e.exit("labelEnd"),d):n(b)}function d(b){return b===40?e.attempt(bq,m,o?m:p)(b):b===91?e.attempt(xq,m,o?f:p)(b):o?m(b):p(b)}function f(b){return e.attempt(yq,m,p)(b)}function m(b){return t(b)}function p(b){return s._balanced=!0,n(b)}}function _q(e,t,n){return r;function r(p){return e.enter("resource"),e.enter("resourceMarker"),e.consume(p),e.exit("resourceMarker"),a}function a(p){return Kt(p)?Yd(e,s)(p):s(p)}function s(p){return p===41?m(p):QI(e,o,c,"resourceDestination","resourceDestinationLiteral","resourceDestinationLiteralMarker","resourceDestinationRaw","resourceDestinationString",32)(p)}function o(p){return Kt(p)?Yd(e,d)(p):m(p)}function c(p){return n(p)}function d(p){return p===34||p===39||p===40?JI(e,f,n,"resourceTitle","resourceTitleMarker","resourceTitleString")(p):m(p)}function f(p){return Kt(p)?Yd(e,m)(p):m(p)}function m(p){return p===41?(e.enter("resourceMarker"),e.consume(p),e.exit("resourceMarker"),e.exit("resource"),t):n(p)}}function Tq(e,t,n){const r=this;return a;function a(c){return ZI.call(r,e,s,o,"reference","referenceMarker","referenceString")(c)}function s(c){return r.parser.defined.includes(Qa(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)))?t(c):n(c)}function o(c){return n(c)}}function Sq(e,t,n){return r;function r(s){return e.enter("reference"),e.enter("referenceMarker"),e.consume(s),e.exit("referenceMarker"),a}function a(s){return s===93?(e.enter("referenceMarker"),e.consume(s),e.exit("referenceMarker"),e.exit("reference"),t):n(s)}}const wq={name:"labelStartImage",resolveAll:q1.resolveAll,tokenize:Aq};function Aq(e,t,n){const r=this;return a;function a(c){return e.enter("labelImage"),e.enter("labelImageMarker"),e.consume(c),e.exit("labelImageMarker"),s}function s(c){return c===91?(e.enter("labelMarker"),e.consume(c),e.exit("labelMarker"),e.exit("labelImage"),o):n(c)}function o(c){return c===94&&"_hiddenFootnoteSupport"in r.parser.constructs?n(c):t(c)}}const Cq={name:"labelStartLink",resolveAll:q1.resolveAll,tokenize:kq};function kq(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"),s}function s(o){return o===94&&"_hiddenFootnoteSupport"in r.parser.constructs?n(o):t(o)}}const zx={name:"lineEnding",tokenize:Oq};function Oq(e,t){return n;function n(r){return e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),Tt(e,t,"linePrefix")}}const Xm={name:"thematicBreak",tokenize:Iq};function Iq(e,t,n){let r=0,a;return s;function s(f){return e.enter("thematicBreak"),o(f)}function o(f){return a=f,c(f)}function c(f){return f===a?(e.enter("thematicBreakSequence"),d(f)):r>=3&&(f===null||Xe(f))?(e.exit("thematicBreak"),t(f)):n(f)}function d(f){return f===a?(e.consume(f),r++,d):(e.exit("thematicBreakSequence"),gt(f)?Tt(e,c,"whitespace")(f):c(f))}}const Gr={continuation:{tokenize:Dq},exit:Pq,name:"list",tokenize:jq},Rq={partial:!0,tokenize:Bq},Mq={partial:!0,tokenize:Lq};function jq(e,t,n){const r=this,a=r.events[r.events.length-1];let s=a&&a[1].type==="linePrefix"?a[2].sliceSerialize(a[1],!0).length:0,o=0;return c;function c(x){const E=r.containerState.type||(x===42||x===43||x===45?"listUnordered":"listOrdered");if(E==="listUnordered"?!r.containerState.marker||x===r.containerState.marker:sv(x)){if(r.containerState.type||(r.containerState.type=E,e.enter(E,{_container:!0})),E==="listUnordered")return e.enter("listItemPrefix"),x===42||x===45?e.check(Xm,n,f)(x):f(x);if(!r.interrupt||x===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),d(x)}return n(x)}function d(x){return sv(x)&&++o<10?(e.consume(x),d):(!r.interrupt||o<2)&&(r.containerState.marker?x===r.containerState.marker:x===41||x===46)?(e.exit("listItemValue"),f(x)):n(x)}function f(x){return e.enter("listItemMarker"),e.consume(x),e.exit("listItemMarker"),r.containerState.marker=r.containerState.marker||x,e.check(Mf,r.interrupt?n:m,e.attempt(Rq,b,p))}function m(x){return r.containerState.initialBlankLine=!0,s++,b(x)}function p(x){return gt(x)?(e.enter("listItemPrefixWhitespace"),e.consume(x),e.exit("listItemPrefixWhitespace"),b):n(x)}function b(x){return r.containerState.size=s+r.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(x)}}function Dq(e,t,n){const r=this;return r.containerState._closeFlow=void 0,e.check(Mf,a,s);function a(c){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,Tt(e,t,"listItemIndent",r.containerState.size+1)(c)}function s(c){return r.containerState.furtherBlankLines||!gt(c)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,o(c)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt(Mq,t,o)(c))}function o(c){return r.containerState._closeFlow=!0,r.interrupt=void 0,Tt(e,e.attempt(Gr,t,n),"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(c)}}function Lq(e,t,n){const r=this;return Tt(e,a,"listItemIndent",r.containerState.size+1);function a(s){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(s):n(s)}}function Pq(e){e.exit(this.containerState.type)}function Bq(e,t,n){const r=this;return Tt(e,a,"listItemPrefixWhitespace",r.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function a(s){const o=r.events[r.events.length-1];return!gt(s)&&o&&o[1].type==="listItemPrefixWhitespace"?t(s):n(s)}}const M2={name:"setextUnderline",resolveTo:Uq,tokenize:Fq};function Uq(e,t){let n=e.length,r,a,s;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),!s&&e[n][1].type==="definition"&&(s=n);const o={type:"setextHeading",start:{...e[r][1].start},end:{...e[e.length-1][1].end}};return e[a][1].type="setextHeadingText",s?(e.splice(a,0,["enter",o,t]),e.splice(s+1,0,["exit",e[r][1],t]),e[r][1].end={...e[s][1].end}):e[r][1]=o,e.push(["exit",o,t]),e}function Fq(e,t,n){const r=this;let a;return s;function s(f){let m=r.events.length,p;for(;m--;)if(r.events[m][1].type!=="lineEnding"&&r.events[m][1].type!=="linePrefix"&&r.events[m][1].type!=="content"){p=r.events[m][1].type==="paragraph";break}return!r.parser.lazy[r.now().line]&&(r.interrupt||p)?(e.enter("setextHeadingLine"),a=f,o(f)):n(f)}function o(f){return e.enter("setextHeadingLineSequence"),c(f)}function c(f){return f===a?(e.consume(f),c):(e.exit("setextHeadingLineSequence"),gt(f)?Tt(e,d,"lineSuffix")(f):d(f))}function d(f){return f===null||Xe(f)?(e.exit("setextHeadingLine"),t(f)):n(f)}}const zq={tokenize:Hq};function Hq(e){const t=this,n=e.attempt(Mf,r,e.attempt(this.parser.constructs.flowInitial,a,Tt(e,e.attempt(this.parser.constructs.flow,a,e.attempt(K$,a)),"linePrefix")));return n;function r(s){if(s===null){e.consume(s);return}return e.enter("lineEndingBlank"),e.consume(s),e.exit("lineEndingBlank"),t.currentConstruct=void 0,n}function a(s){if(s===null){e.consume(s);return}return e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),t.currentConstruct=void 0,n}}const $q={resolveAll:tR()},qq=eR("string"),Yq=eR("text");function eR(e){return{resolveAll:tR(e==="text"?Gq:void 0),tokenize:t};function t(n){const r=this,a=this.parser.constructs[e],s=n.attempt(a,o,c);return o;function o(m){return f(m)?s(m):c(m)}function c(m){if(m===null){n.consume(m);return}return n.enter("data"),n.consume(m),d}function d(m){return f(m)?(n.exit("data"),s(m)):(n.consume(m),d)}function f(m){if(m===null)return!0;const p=a[m];let b=-1;if(p)for(;++b<p.length;){const x=p[b];if(!x.previous||x.previous.call(r,r.previous))return!0}return!1}}}function tR(e){return t;function t(n,r){let a=-1,s;for(;++a<=n.length;)s===void 0?n[a]&&n[a][1].type==="data"&&(s=a,a++):(!n[a]||n[a][1].type!=="data")&&(a!==s+2&&(n[s][1].end=n[a-1][1].end,n.splice(s+2,a-s-2),a=s+2),s=void 0);return e?e(n,r):n}}function Gq(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 s=a.length,o=-1,c=0,d;for(;s--;){const f=a[s];if(typeof f=="string"){for(o=f.length;f.charCodeAt(o-1)===32;)c++,o--;if(o)break;o=-1}else if(f===-2)d=!0,c++;else if(f!==-1){s++;break}}if(t._contentTypeTextTrailing&&n===e.length&&(c=0),c){const f={type:n===e.length||d||c<2?"lineSuffix":"hardBreakTrailing",start:{_bufferIndex:s?o:r.start._bufferIndex+o,_index:r.start._index+s,line:r.end.line,column:r.end.column-c,offset:r.end.offset-c},end:{...r.end}};r.end={...f.start},r.start.offset===r.end.offset?Object.assign(r,f):(e.splice(n,0,["enter",f,t],["exit",f,t]),n+=2)}n++}return e}const Kq={42:Gr,43:Gr,45:Gr,48:Gr,49:Gr,50:Gr,51:Gr,52:Gr,53:Gr,54:Gr,55:Gr,56:Gr,57:Gr,62:KI},Vq={91:Z$},Wq={[-2]:Fx,[-1]:Fx,32:Fx},Xq={35:aq,42:Xm,45:[M2,Xm],60:lq,61:M2,95:Xm,96:I2,126:I2},Qq={38:WI,92:VI},Zq={[-5]:zx,[-4]:zx,[-3]:zx,33:wq,38:WI,42:ov,60:[C$,pq],91:Cq,92:[nq,VI],93:q1,95:ov,96:z$},Jq={null:[ov,$q]},eY={null:[42,95]},tY={null:[]},nY=Object.freeze(Object.defineProperty({__proto__:null,attentionMarkers:eY,contentInitial:Vq,disable:tY,document:Kq,flow:Xq,flowInitial:Wq,insideSpan:Jq,string:Qq,text:Zq},Symbol.toStringTag,{value:"Module"}));function rY(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={},s=[];let o=[],c=[];const d={attempt:j(R),check:j(O),consume:C,enter:A,exit:k,interrupt:j(O,{interrupt:!0})},f={code:null,containerState:{},defineSkip:N,events:[],now:E,parser:e,previous:null,sliceSerialize:b,sliceStream:x,write:p};let m=t.tokenize.call(f,d);return t.resolveAll&&s.push(t),f;function p(G){return o=Oa(o,G),S(),o[o.length-1]!==null?[]:($(t,0),f.events=N0(s,f.events,f),f.events)}function b(G,K){return iY(x(G),K)}function x(G){return aY(o,G)}function E(){const{_bufferIndex:G,_index:K,line:ae,column:Q,offset:W}=r;return{_bufferIndex:G,_index:K,line:ae,column:Q,offset:W}}function N(G){a[G.line]=G.column,M()}function S(){let G;for(;r._index<o.length;){const K=o[r._index];if(typeof K=="string")for(G=r._index,r._bufferIndex<0&&(r._bufferIndex=0);r._index===G&&r._bufferIndex<K.length;)T(K.charCodeAt(r._bufferIndex));else T(K)}}function T(G){m=m(G)}function C(G){Xe(G)?(r.line++,r.column=1,r.offset+=G===-3?2:1,M()):G!==-1&&(r.column++,r.offset++),r._bufferIndex<0?r._index++:(r._bufferIndex++,r._bufferIndex===o[r._index].length&&(r._bufferIndex=-1,r._index++)),f.previous=G}function A(G,K){const ae=K||{};return ae.type=G,ae.start=E(),f.events.push(["enter",ae,f]),c.push(ae),ae}function k(G){const K=c.pop();return K.end=E(),f.events.push(["exit",K,f]),K}function R(G,K){$(G,K.from)}function O(G,K){K.restore()}function j(G,K){return ae;function ae(Q,W,V){let H,F,Y,L;return Array.isArray(Q)?J(Q):"tokenize"in Q?J([Q]):P(Q);function P(z){return fe;function fe(Ie){const pe=Ie!==null&&z[Ie],Me=Ie!==null&&z.null,De=[...Array.isArray(pe)?pe:pe?[pe]:[],...Array.isArray(Me)?Me:Me?[Me]:[]];return J(De)(Ie)}}function J(z){return H=z,F=0,z.length===0?V:B(z[F])}function B(z){return fe;function fe(Ie){return L=D(),Y=z,z.partial||(f.currentConstruct=z),z.name&&f.parser.constructs.disable.null.includes(z.name)?se():z.tokenize.call(K?Object.assign(Object.create(f),K):f,d,me,se)(Ie)}}function me(z){return G(Y,L),W}function se(z){return L.restore(),++F<H.length?B(H[F]):V}}}function $(G,K){G.resolveAll&&!s.includes(G)&&s.push(G),G.resolve&&pa(f.events,K,f.events.length-K,G.resolve(f.events.slice(K),f)),G.resolveTo&&(f.events=G.resolveTo(f.events,f))}function D(){const G=E(),K=f.previous,ae=f.currentConstruct,Q=f.events.length,W=Array.from(c);return{from:Q,restore:V};function V(){r=G,f.previous=K,f.currentConstruct=ae,f.events.length=Q,c=W,M()}}function M(){r.line in a&&r.column<2&&(r.column=a[r.line],r.offset+=a[r.line]-1)}}function aY(e,t){const n=t.start._index,r=t.start._bufferIndex,a=t.end._index,s=t.end._bufferIndex;let o;if(n===a)o=[e[n].slice(r,s)];else{if(o=e.slice(n,a),r>-1){const c=o[0];typeof c=="string"?o[0]=c.slice(r):o.shift()}s>0&&o.push(e[a].slice(0,s))}return o}function iY(e,t){let n=-1;const r=[];let a;for(;++n<e.length;){const s=e[n];let o;if(typeof s=="string")o=s;else switch(s){case-5:{o="\r";break}case-4:{o=`
@@ -543,7 +543,7 @@ Please change the parent <Route path="${T}"> to <Route path="${T==="/"?"*":`${T}
543
543
  `))}function d(x,E,N,S){const T=N.enter("tableCell"),C=N.enter("phrasing"),A=N.containerPhrasing(x,{...S,before:s,after:s});return C(),T(),A}function f(x,E){return NK(x,{align:E,alignDelimiters:r,padding:n,stringLength:a})}function m(x,E,N){const S=x.children;let T=-1;const C=[],A=E.enter("table");for(;++T<S.length;)C[T]=p(S[T],E,N);return A(),C}function p(x,E,N){const S=x.children;let T=-1;const C=[],A=E.enter("tableRow");for(;++T<S.length;)C[T]=d(S[T],x,E,N);return A(),C}function b(x,E,N){let S=CR.inlineCode(x,E,N);return N.stack.includes("tableCell")&&(S=S.replace(/\|/g,"\\$&")),S}}function uV(){return{exit:{taskListCheckValueChecked:rA,taskListCheckValueUnchecked:rA,paragraph:dV}}}function cV(){return{unsafe:[{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{listItem:fV}}}function rA(e){const t=this.stack[this.stack.length-2];t.type,t.checked=e.type==="taskListCheckValueChecked"}function dV(e){const t=this.stack[this.stack.length-2];if(t&&t.type==="listItem"&&typeof t.checked=="boolean"){const n=this.stack[this.stack.length-1];n.type;const r=n.children[0];if(r&&r.type==="text"){const a=t.children;let s=-1,o;for(;++s<a.length;){const c=a[s];if(c.type==="paragraph"){o=c;break}}o===n&&(r.value=r.value.slice(1),r.value.length===0?n.children.shift():n.position&&r.position&&typeof r.position.start.offset=="number"&&(r.position.start.column++,r.position.start.offset++,n.position.start=Object.assign({},r.position.start)))}}this.exit(e)}function fV(e,t,n,r){const a=e.children[0],s=typeof e.checked=="boolean"&&a&&a.type==="paragraph",o="["+(e.checked?"x":" ")+"] ",c=n.createTracker(r);s&&c.move(o);let d=CR.listItem(e,t,n,{...r,...c.current()});return s&&(d=d.replace(/^(?:[*+-]|\d+\.)([\r\n]| {1,3})/,f)),d;function f(m){return m+o}}function hV(){return[YG(),fK(),gK(),nV(),uV()]}function mV(e){return{extensions:[GG(),hK(e),bK(),lV(e),cV()]}}const pV={tokenize:EV,partial:!0},kR={tokenize:NV,partial:!0},OR={tokenize:_V,partial:!0},IR={tokenize:TV,partial:!0},gV={tokenize:SV,partial:!0},RR={name:"wwwAutolink",tokenize:yV,previous:jR},MR={name:"protocolAutolink",tokenize:vV,previous:DR},hs={name:"emailAutolink",tokenize:xV,previous:LR},ki={};function bV(){return{text:ki}}let Uo=48;for(;Uo<123;)ki[Uo]=hs,Uo++,Uo===58?Uo=65:Uo===91&&(Uo=97);ki[43]=hs;ki[45]=hs;ki[46]=hs;ki[95]=hs;ki[72]=[hs,MR];ki[104]=[hs,MR];ki[87]=[hs,RR];ki[119]=[hs,RR];function xV(e,t,n){const r=this;let a,s;return o;function o(p){return!fv(p)||!LR.call(r,r.previous)||Z1(r.events)?n(p):(e.enter("literalAutolink"),e.enter("literalAutolinkEmail"),c(p))}function c(p){return fv(p)?(e.consume(p),c):p===64?(e.consume(p),d):n(p)}function d(p){return p===46?e.check(gV,m,f)(p):p===45||p===95||vr(p)?(s=!0,e.consume(p),d):m(p)}function f(p){return e.consume(p),a=!0,d}function m(p){return s&&a&&Rr(r.previous)?(e.exit("literalAutolinkEmail"),e.exit("literalAutolink"),t(p)):n(p)}}function yV(e,t,n){const r=this;return a;function a(o){return o!==87&&o!==119||!jR.call(r,r.previous)||Z1(r.events)?n(o):(e.enter("literalAutolink"),e.enter("literalAutolinkWww"),e.check(pV,e.attempt(kR,e.attempt(OR,s),n),n)(o))}function s(o){return e.exit("literalAutolinkWww"),e.exit("literalAutolink"),t(o)}}function vV(e,t,n){const r=this;let a="",s=!1;return o;function o(p){return(p===72||p===104)&&DR.call(r,r.previous)&&!Z1(r.events)?(e.enter("literalAutolink"),e.enter("literalAutolinkHttp"),a+=String.fromCodePoint(p),e.consume(p),c):n(p)}function c(p){if(Rr(p)&&a.length<5)return a+=String.fromCodePoint(p),e.consume(p),c;if(p===58){const b=a.toLowerCase();if(b==="http"||b==="https")return e.consume(p),d}return n(p)}function d(p){return p===47?(e.consume(p),s?f:(s=!0,d)):n(p)}function f(p){return p===null||cp(p)||Kt(p)||ml(p)||E0(p)?n(p):e.attempt(kR,e.attempt(OR,m),n)(p)}function m(p){return e.exit("literalAutolinkHttp"),e.exit("literalAutolink"),t(p)}}function EV(e,t,n){let r=0;return a;function a(o){return(o===87||o===119)&&r<3?(r++,e.consume(o),a):o===46&&r===3?(e.consume(o),s):n(o)}function s(o){return o===null?n(o):t(o)}}function NV(e,t,n){let r,a,s;return o;function o(f){return f===46||f===95?e.check(IR,d,c)(f):f===null||Kt(f)||ml(f)||f!==45&&E0(f)?d(f):(s=!0,e.consume(f),o)}function c(f){return f===95?r=!0:(a=r,r=void 0),e.consume(f),o}function d(f){return a||r||!s?n(f):t(f)}}function _V(e,t){let n=0,r=0;return a;function a(o){return o===40?(n++,e.consume(o),a):o===41&&r<n?s(o):o===33||o===34||o===38||o===39||o===41||o===42||o===44||o===46||o===58||o===59||o===60||o===63||o===93||o===95||o===126?e.check(IR,t,s)(o):o===null||Kt(o)||ml(o)?t(o):(e.consume(o),a)}function s(o){return o===41&&r++,e.consume(o),a}}function TV(e,t,n){return r;function r(c){return c===33||c===34||c===39||c===41||c===42||c===44||c===46||c===58||c===59||c===63||c===95||c===126?(e.consume(c),r):c===38?(e.consume(c),s):c===93?(e.consume(c),a):c===60||c===null||Kt(c)||ml(c)?t(c):n(c)}function a(c){return c===null||c===40||c===91||Kt(c)||ml(c)?t(c):r(c)}function s(c){return Rr(c)?o(c):n(c)}function o(c){return c===59?(e.consume(c),r):Rr(c)?(e.consume(c),o):n(c)}}function SV(e,t,n){return r;function r(s){return e.consume(s),a}function a(s){return vr(s)?n(s):t(s)}}function jR(e){return e===null||e===40||e===42||e===95||e===91||e===93||e===126||Kt(e)}function DR(e){return!Rr(e)}function LR(e){return!(e===47||fv(e))}function fv(e){return e===43||e===45||e===46||e===95||vr(e)}function Z1(e){let t=e.length,n=!1;for(;t--;){const r=e[t][1];if((r.type==="labelLink"||r.type==="labelImage")&&!r._balanced){n=!0;break}if(r._gfmAutolinkLiteralWalkedInto){n=!1;break}}return e.length>0&&!n&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}const wV={tokenize:jV,partial:!0};function AV(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:IV,continuation:{tokenize:RV},exit:MV}},text:{91:{name:"gfmFootnoteCall",tokenize:OV},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:CV,resolveTo:kV}}}}function CV(e,t,n){const r=this;let a=r.events.length;const s=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let o;for(;a--;){const d=r.events[a][1];if(d.type==="labelImage"){o=d;break}if(d.type==="gfmFootnoteCall"||d.type==="labelLink"||d.type==="label"||d.type==="image"||d.type==="link")break}return c;function c(d){if(!o||!o._balanced)return n(d);const f=Qa(r.sliceSerialize({start:o.end,end:r.now()}));return f.codePointAt(0)!==94||!s.includes(f.slice(1))?n(d):(e.enter("gfmFootnoteCallLabelMarker"),e.consume(d),e.exit("gfmFootnoteCallLabelMarker"),t(d))}}function kV(e,t){let n=e.length;for(;n--;)if(e[n][1].type==="labelImage"&&e[n][0]==="enter"){e[n][1];break}e[n+1][1].type="data",e[n+3][1].type="gfmFootnoteCallLabelMarker";const r={type:"gfmFootnoteCall",start:Object.assign({},e[n+3][1].start),end:Object.assign({},e[e.length-1][1].end)},a={type:"gfmFootnoteCallMarker",start:Object.assign({},e[n+3][1].end),end:Object.assign({},e[n+3][1].end)};a.end.column++,a.end.offset++,a.end._bufferIndex++;const s={type:"gfmFootnoteCallString",start:Object.assign({},a.end),end:Object.assign({},e[e.length-1][1].start)},o={type:"chunkString",contentType:"string",start:Object.assign({},s.start),end:Object.assign({},s.end)},c=[e[n+1],e[n+2],["enter",r,t],e[n+3],e[n+4],["enter",a,t],["exit",a,t],["enter",s,t],["enter",o,t],["exit",o,t],["exit",s,t],e[e.length-2],e[e.length-1],["exit",r,t]];return e.splice(n,e.length-n+1,...c),e}function OV(e,t,n){const r=this,a=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let s=0,o;return c;function c(p){return e.enter("gfmFootnoteCall"),e.enter("gfmFootnoteCallLabelMarker"),e.consume(p),e.exit("gfmFootnoteCallLabelMarker"),d}function d(p){return p!==94?n(p):(e.enter("gfmFootnoteCallMarker"),e.consume(p),e.exit("gfmFootnoteCallMarker"),e.enter("gfmFootnoteCallString"),e.enter("chunkString").contentType="string",f)}function f(p){if(s>999||p===93&&!o||p===null||p===91||Kt(p))return n(p);if(p===93){e.exit("chunkString");const b=e.exit("gfmFootnoteCallString");return a.includes(Qa(r.sliceSerialize(b)))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(p),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),t):n(p)}return Kt(p)||(o=!0),s++,e.consume(p),p===92?m:f}function m(p){return p===91||p===92||p===93?(e.consume(p),s++,f):f(p)}}function IV(e,t,n){const r=this,a=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let s,o=0,c;return d;function d(E){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(E),e.exit("gfmFootnoteDefinitionLabelMarker"),f}function f(E){return E===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(E),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),e.enter("chunkString").contentType="string",m):n(E)}function m(E){if(o>999||E===93&&!c||E===null||E===91||Kt(E))return n(E);if(E===93){e.exit("chunkString");const N=e.exit("gfmFootnoteDefinitionLabelString");return s=Qa(r.sliceSerialize(N)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(E),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),b}return Kt(E)||(c=!0),o++,e.consume(E),E===92?p:m}function p(E){return E===91||E===92||E===93?(e.consume(E),o++,m):m(E)}function b(E){return E===58?(e.enter("definitionMarker"),e.consume(E),e.exit("definitionMarker"),a.includes(s)||a.push(s),Tt(e,x,"gfmFootnoteDefinitionWhitespace")):n(E)}function x(E){return t(E)}}function RV(e,t,n){return e.check(Mf,t,e.attempt(wV,t,n))}function MV(e){e.exit("gfmFootnoteDefinition")}function jV(e,t,n){const r=this;return Tt(e,a,"gfmFootnoteDefinitionIndent",5);function a(s){const o=r.events[r.events.length-1];return o&&o[1].type==="gfmFootnoteDefinitionIndent"&&o[2].sliceSerialize(o[1],!0).length===4?t(s):n(s)}}function DV(e){let n=(e||{}).singleTilde;const r={name:"strikethrough",tokenize:s,resolveAll:a};return n==null&&(n=!0),{text:{126:r},insideSpan:{null:[r]},attentionMarkers:{null:[126]}};function a(o,c){let d=-1;for(;++d<o.length;)if(o[d][0]==="enter"&&o[d][1].type==="strikethroughSequenceTemporary"&&o[d][1]._close){let f=d;for(;f--;)if(o[f][0]==="exit"&&o[f][1].type==="strikethroughSequenceTemporary"&&o[f][1]._open&&o[d][1].end.offset-o[d][1].start.offset===o[f][1].end.offset-o[f][1].start.offset){o[d][1].type="strikethroughSequence",o[f][1].type="strikethroughSequence";const m={type:"strikethrough",start:Object.assign({},o[f][1].start),end:Object.assign({},o[d][1].end)},p={type:"strikethroughText",start:Object.assign({},o[f][1].end),end:Object.assign({},o[d][1].start)},b=[["enter",m,c],["enter",o[f][1],c],["exit",o[f][1],c],["enter",p,c]],x=c.parser.constructs.insideSpan.null;x&&pa(b,b.length,0,N0(x,o.slice(f+1,d),c)),pa(b,b.length,0,[["exit",p,c],["enter",o[d][1],c],["exit",o[d][1],c],["exit",m,c]]),pa(o,f-1,d-f+3,b),d=f+b.length-2;break}}for(d=-1;++d<o.length;)o[d][1].type==="strikethroughSequenceTemporary"&&(o[d][1].type="data");return o}function s(o,c,d){const f=this.previous,m=this.events;let p=0;return b;function b(E){return f===126&&m[m.length-1][1].type!=="characterEscape"?d(E):(o.enter("strikethroughSequenceTemporary"),x(E))}function x(E){const N=$u(f);if(E===126)return p>1?d(E):(o.consume(E),p++,x);if(p<2&&!n)return d(E);const S=o.exit("strikethroughSequenceTemporary"),T=$u(E);return S._open=!T||T===2&&!!N,S._close=!N||N===2&&!!T,c(E)}}}class LV{constructor(){this.map=[]}add(t,n,r){PV(this,t,n,r)}consume(t){if(this.map.sort(function(s,o){return s[0]-o[0]}),this.map.length===0)return;let n=this.map.length;const r=[];for(;n>0;)n-=1,r.push(t.slice(this.map[n][0]+this.map[n][1]),this.map[n][2]),t.length=this.map[n][0];r.push(t.slice()),t.length=0;let a=r.pop();for(;a;){for(const s of a)t.push(s);a=r.pop()}this.map.length=0}}function PV(e,t,n,r){let a=0;if(!(n===0&&r.length===0)){for(;a<e.map.length;){if(e.map[a][0]===t){e.map[a][1]+=n,e.map[a][2].push(...r);return}a+=1}e.map.push([t,n,r])}}function BV(e,t){let n=!1;const r=[];for(;t<e.length;){const a=e[t];if(n){if(a[0]==="enter")a[1].type==="tableContent"&&r.push(e[t+1][1].type==="tableDelimiterMarker"?"left":"none");else if(a[1].type==="tableContent"){if(e[t-1][1].type==="tableDelimiterMarker"){const s=r.length-1;r[s]=r[s]==="left"?"center":"right"}}else if(a[1].type==="tableDelimiterRow")break}else a[0]==="enter"&&a[1].type==="tableDelimiterRow"&&(n=!0);t+=1}return r}function UV(){return{flow:{null:{name:"table",tokenize:FV,resolveAll:zV}}}}function FV(e,t,n){const r=this;let a=0,s=0,o;return c;function c(M){let G=r.events.length-1;for(;G>-1;){const Q=r.events[G][1].type;if(Q==="lineEnding"||Q==="linePrefix")G--;else break}const K=G>-1?r.events[G][1].type:null,ae=K==="tableHead"||K==="tableRow"?O:d;return ae===O&&r.parser.lazy[r.now().line]?n(M):ae(M)}function d(M){return e.enter("tableHead"),e.enter("tableRow"),f(M)}function f(M){return M===124||(o=!0,s+=1),m(M)}function m(M){return M===null?n(M):Xe(M)?s>1?(s=0,r.interrupt=!0,e.exit("tableRow"),e.enter("lineEnding"),e.consume(M),e.exit("lineEnding"),x):n(M):gt(M)?Tt(e,m,"whitespace")(M):(s+=1,o&&(o=!1,a+=1),M===124?(e.enter("tableCellDivider"),e.consume(M),e.exit("tableCellDivider"),o=!0,m):(e.enter("data"),p(M)))}function p(M){return M===null||M===124||Kt(M)?(e.exit("data"),m(M)):(e.consume(M),M===92?b:p)}function b(M){return M===92||M===124?(e.consume(M),p):p(M)}function x(M){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(M):(e.enter("tableDelimiterRow"),o=!1,gt(M)?Tt(e,E,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(M):E(M))}function E(M){return M===45||M===58?S(M):M===124?(o=!0,e.enter("tableCellDivider"),e.consume(M),e.exit("tableCellDivider"),N):R(M)}function N(M){return gt(M)?Tt(e,S,"whitespace")(M):S(M)}function S(M){return M===58?(s+=1,o=!0,e.enter("tableDelimiterMarker"),e.consume(M),e.exit("tableDelimiterMarker"),T):M===45?(s+=1,T(M)):M===null||Xe(M)?k(M):R(M)}function T(M){return M===45?(e.enter("tableDelimiterFiller"),C(M)):R(M)}function C(M){return M===45?(e.consume(M),C):M===58?(o=!0,e.exit("tableDelimiterFiller"),e.enter("tableDelimiterMarker"),e.consume(M),e.exit("tableDelimiterMarker"),A):(e.exit("tableDelimiterFiller"),A(M))}function A(M){return gt(M)?Tt(e,k,"whitespace")(M):k(M)}function k(M){return M===124?E(M):M===null||Xe(M)?!o||a!==s?R(M):(e.exit("tableDelimiterRow"),e.exit("tableHead"),t(M)):R(M)}function R(M){return n(M)}function O(M){return e.enter("tableRow"),j(M)}function j(M){return M===124?(e.enter("tableCellDivider"),e.consume(M),e.exit("tableCellDivider"),j):M===null||Xe(M)?(e.exit("tableRow"),t(M)):gt(M)?Tt(e,j,"whitespace")(M):(e.enter("data"),$(M))}function $(M){return M===null||M===124||Kt(M)?(e.exit("data"),j(M)):(e.consume(M),M===92?D:$)}function D(M){return M===92||M===124?(e.consume(M),$):$(M)}}function zV(e,t){let n=-1,r=!0,a=0,s=[0,0,0,0],o=[0,0,0,0],c=!1,d=0,f,m,p;const b=new LV;for(;++n<e.length;){const x=e[n],E=x[1];x[0]==="enter"?E.type==="tableHead"?(c=!1,d!==0&&(aA(b,t,d,f,m),m=void 0,d=0),f={type:"table",start:Object.assign({},E.start),end:Object.assign({},E.end)},b.add(n,0,[["enter",f,t]])):E.type==="tableRow"||E.type==="tableDelimiterRow"?(r=!0,p=void 0,s=[0,0,0,0],o=[0,n+1,0,0],c&&(c=!1,m={type:"tableBody",start:Object.assign({},E.start),end:Object.assign({},E.end)},b.add(n,0,[["enter",m,t]])),a=E.type==="tableDelimiterRow"?2:m?3:1):a&&(E.type==="data"||E.type==="tableDelimiterMarker"||E.type==="tableDelimiterFiller")?(r=!1,o[2]===0&&(s[1]!==0&&(o[0]=o[1],p=Nm(b,t,s,a,void 0,p),s=[0,0,0,0]),o[2]=n)):E.type==="tableCellDivider"&&(r?r=!1:(s[1]!==0&&(o[0]=o[1],p=Nm(b,t,s,a,void 0,p)),s=o,o=[s[1],n,0,0])):E.type==="tableHead"?(c=!0,d=n):E.type==="tableRow"||E.type==="tableDelimiterRow"?(d=n,s[1]!==0?(o[0]=o[1],p=Nm(b,t,s,a,n,p)):o[1]!==0&&(p=Nm(b,t,o,a,n,p)),a=0):a&&(E.type==="data"||E.type==="tableDelimiterMarker"||E.type==="tableDelimiterFiller")&&(o[3]=n)}for(d!==0&&aA(b,t,d,f,m),b.consume(t.events),n=-1;++n<t.events.length;){const x=t.events[n];x[0]==="enter"&&x[1].type==="table"&&(x[1]._align=BV(t.events,n))}return e}function Nm(e,t,n,r,a,s){const o=r===1?"tableHeader":r===2?"tableDelimiter":"tableData",c="tableContent";n[0]!==0&&(s.end=Object.assign({},ku(t.events,n[0])),e.add(n[0],0,[["exit",s,t]]));const d=ku(t.events,n[1]);if(s={type:o,start:Object.assign({},d),end:Object.assign({},d)},e.add(n[1],0,[["enter",s,t]]),n[2]!==0){const f=ku(t.events,n[2]),m=ku(t.events,n[3]),p={type:c,start:Object.assign({},f),end:Object.assign({},m)};if(e.add(n[2],0,[["enter",p,t]]),r!==2){const b=t.events[n[2]],x=t.events[n[3]];if(b[1].end=Object.assign({},x[1].end),b[1].type="chunkText",b[1].contentType="text",n[3]>n[2]+1){const E=n[2]+1,N=n[3]-n[2]-1;e.add(E,N,[])}}e.add(n[3]+1,0,[["exit",p,t]])}return a!==void 0&&(s.end=Object.assign({},ku(t.events,a)),e.add(a,0,[["exit",s,t]]),s=void 0),s}function aA(e,t,n,r,a){const s=[],o=ku(t.events,n);a&&(a.end=Object.assign({},o),s.push(["exit",a,t])),r.end=Object.assign({},o),s.push(["exit",r,t]),e.add(n+1,0,s)}function ku(e,t){const n=e[t],r=n[0]==="enter"?"start":"end";return n[1][r]}const HV={name:"tasklistCheck",tokenize:qV};function $V(){return{text:{91:HV}}}function qV(e,t,n){const r=this;return a;function a(d){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(d):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(d),e.exit("taskListCheckMarker"),s)}function s(d){return Kt(d)?(e.enter("taskListCheckValueUnchecked"),e.consume(d),e.exit("taskListCheckValueUnchecked"),o):d===88||d===120?(e.enter("taskListCheckValueChecked"),e.consume(d),e.exit("taskListCheckValueChecked"),o):n(d)}function o(d){return d===93?(e.enter("taskListCheckMarker"),e.consume(d),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),c):n(d)}function c(d){return Xe(d)?t(d):gt(d)?e.check({tokenize:YV},t,n)(d):n(d)}}function YV(e,t,n){return Tt(e,r,"whitespace");function r(a){return a===null?n(a):t(a)}}function GV(e){return YI([bV(),AV(),DV(e),UV(),$V()])}const KV={};function gl(e){const t=this,n=e||KV,r=t.data(),a=r.micromarkExtensions||(r.micromarkExtensions=[]),s=r.fromMarkdownExtensions||(r.fromMarkdownExtensions=[]),o=r.toMarkdownExtensions||(r.toMarkdownExtensions=[]);a.push(GV(n)),s.push(hV()),o.push(mV(n))}const VV=1e3,WV=5e3,_m="freeze-mon-buffer",XV=4*1024*1024;class QV{constructor(){Pt(this,"ring",[]);Pt(this,"counters",{sse:0,delta:0,store:0});Pt(this,"workerCount",0);Pt(this,"sampleTimer",0);Pt(this,"persistTimer",0);Pt(this,"running",!1)}tick(t){this.counters[t]++}setGauge(t,n){t==="workers"&&(this.workerCount=n)}exportData(){return localStorage.getItem(_m)??JSON.stringify(this.ring)}start(){if(this.running)return;this.running=!0;const t=localStorage.getItem(_m);if(t)try{this.ring=JSON.parse(t)}catch{this.ring=[]}this.sampleTimer=window.setInterval(()=>this.sample(),VV),this.persistTimer=window.setInterval(()=>this.persist(),WV)}stop(){this.running=!1,clearInterval(this.sampleTimer),clearInterval(this.persistTimer),this.persist()}sample(){const t=Le.getState(),n=Object.values(t.messages).reduce((a,s)=>a+s.length,0),r=performance.memory;this.ring.push({ts:Date.now(),sse:this.counters.sse,delta:this.counters.delta,store:this.counters.store,workers:this.workerCount,msgs:n,heap:r?Math.round(r.usedJSHeapSize/1048576):void 0}),this.counters.sse=0,this.counters.delta=0,this.counters.store=0,this.trimToFit()}trimToFit(){for(;this.ring.length>1&&!(new Blob([JSON.stringify(this.ring)]).size<=XV);)this.ring.shift()}persist(){try{localStorage.setItem(_m,JSON.stringify(this.ring))}catch{this.ring.splice(0,Math.floor(this.ring.length/2));try{localStorage.setItem(_m,JSON.stringify(this.ring))}catch{}}}}const co=new QV,ZV=new Set(["tool","tool-use","tool_use","tool-call","tool_call","tool-result","tool_result"]),JV=new Set(["thinking","reasoning","reason"]),eW=new Set(["text","output_text","message"]),tW=new Set(["file","image"]);function hp(e){var n;const t=((n=e.type)==null?void 0:n.toLowerCase())??"";return ZV.has(t)||e.toolName!=null||e.tool!=null?"tool":tW.has(t)?"file":JV.has(t)?"thinking":eW.has(t)||e.content!=null||e.text!=null?"text":"other"}function mp(e){return e.content??e.text??""}function PR(e){return e.toolName??e.tool??"tool"}function S0(e){var t;return e.input??((t=e.state)==null?void 0:t.input)}function J1(e){var t;return e.output??((t=e.state)==null?void 0:t.output)}function eE(e){var n,r,a;const t=(r=(n=e.state)==null?void 0:n.status)==null?void 0:r.toLowerCase();return t==="completed"||t==="done"||t==="success"?"completed":t==="error"||t==="failed"||((a=e.state)==null?void 0:a.error)!=null?"error":t==="pending"||t==="queued"?"pending":t==="running"||t==="in_progress"?"running":J1(e)!=null?"completed":"running"}function iA(e){if(e==null)return"";if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function bl(e){const t=e==null?void 0:e.toLowerCase();return t==="in_progress"||t==="in-progress"||t==="active"?"in_progress":t==="completed"||t==="done"||t==="complete"?"completed":t==="cancelled"||t==="canceled"?"cancelled":"pending"}function BR(e){return e.filter(t=>bl(t.status)==="completed").length}function uf(e){const t=PR(e).toLowerCase();return t==="question"||t==="mcp_question"}function nW(e){const t=S0(e);if(!t||typeof t!="object")return null;const n=t;return Array.isArray(n.questions)?n.questions:null}function pp(e){if(!uf(e))return!1;const t=eE(e);return t==="pending"||t==="running"}const rW=/\bses_[a-zA-Z0-9]+/;function aW(e){var a;const t=S0(e);if(t&&typeof t=="object"){const s=t;if(typeof s.task_id=="string"&&s.task_id.startsWith("ses_"))return s.task_id}const n=(a=e.state)==null?void 0:a.metadata;if(n){const s=n.session_id??n.sessionId;if(typeof s=="string"&&s.startsWith("ses_"))return s}const r=J1(e);if(typeof r=="string"){const s=rW.exec(r);if(s)return s[0]}if(r&&typeof r=="object"){const s=r,o=s.session_id??s.sessionId??s.task_id;if(typeof o=="string"&&o.startsWith("ses_"))return o}return null}const iW=ei(()=>({agents:[],loaded:!1}));function UR(e){return`question-${e}`}function ey(e,t){const n=t.find(a=>a.id===e),r=(n==null?void 0:n.title)||e.slice(-8);bn.getState().addToast(`${r} — 等待回复`,"warning",e,{id:UR(e),persistent:!0})}function sW(e){var t;for(const n of e)if((t=n.parts)!=null&&t.some(r=>uf(r)&&pp(r)))return!0;return!1}const cf=[],df=[],sA=[],Fo={};function oA(e){return e.id??e.callID}function pr(){return ze.getState().activeRepoId}async function lA(e,t){const n=pr();if(n)try{const[r,a]=await Promise.all([mz(n,e),gI(n).catch(()=>null)]);t(s=>{const o={sessionLinks:{...s.sessionLinks,[e]:r}};return a&&(o.allSessionLinks=a),o})}catch{}}const uA=20,Le=ei((e,t)=>({sessions:[],activeSessionId:null,messages:{},messagesMeta:{},todos:{},sessionStatuses:{},errorReasons:{},queuedMessageIds:{},sessionLinks:{},allSessionLinks:{},sessionFilter:"active",loadingSessions:!1,loadError:null,sendError:null,setSessionFilter:n=>e({sessionFilter:n}),toggleSessionComplete:async n=>{const r=pr();if(!r)return;const a=t().sessions.find(o=>o.id===n);if(!a)return;const s=a.completedAt?null:Date.now();e(o=>({sessions:o.sessions.map(c=>c.id===n?{...c,completedAt:s??void 0}:c)}));try{await qz(r,n,s)}catch{await t().loadSessions()}},loadSessions:async()=>{const n=pr();if(!n){e({sessions:[],loadingSessions:!1});return}e({loadingSessions:!0,loadError:null});try{const[r,a]=await Promise.all([iz(n),gI(n).catch(()=>null)]),s={sessions:r,loadingSessions:!1};a&&(s.allSessionLinks=a),e(s)}catch(r){e({loadingSessions:!1,loadError:r instanceof Error?r.message:"Failed to load sessions"})}},createSession:async(n,r,a,s,o,c,d)=>{const f=pr();if(!f)return null;e({sendError:null});try{const m=await sz(f,n,r,a,s,o,c,d);return e(p=>({sessions:[m,...p.sessions.filter(b=>b.id!==m.id)],activeSessionId:m.id,messages:{...p.messages,[m.id]:[]}})),t().setSessionStatus(m.id,"busy"),o&&bn.getState().addToast("已自动分配为处理人","success"),m}catch(m){return e({sendError:m instanceof Error?m.message:"Failed to create session"}),null}},setActiveSession:async n=>{pr()&&(e({activeSessionId:n,sendError:null}),await t().refreshSessionData(n))},refreshSessionData:async n=>{var m,p;const r=pr();if(!r)return;const s=!t().messages[n]||t().messages[n].length===0?{limit:uA}:void 0,[o,c]=await Promise.allSettled([pz(r,n),Qw(r,n,s)]),d=o.status==="fulfilled"?o.value:null,f=(p=(m=d==null?void 0:d.session)==null?void 0:m.revert)==null?void 0:p.messageID;e(b=>{const x={};if(d&&(d.status&&(x.sessionStatuses={...b.sessionStatuses,[n]:d.status.type}),d.todos&&(x.todos={...b.todos,[n]:d.todos}),d.links&&(x.sessionLinks={...b.sessionLinks,[n]:d.links}),d.session&&(x.sessions=b.sessions.map(E=>E.id===n?{...E,...d.session}:E))),c.status==="fulfilled"){let E=c.value.messages;if(f){const S=E.findIndex(T=>T.id===f);S>=0&&(E=E.slice(0,S+1))}const N=b.messages[n]??[];E.length>=N.length&&(x.messages={...b.messages,[n]:E}),x.messagesMeta={...b.messagesMeta,[n]:{total:Math.max(c.value.total,N.length),hasMore:c.value.hasMore,loading:!1}}}return x}),c.status==="fulfilled"&&sW(c.value.messages)&&ey(n,t().sessions)},loadMoreMessages:async n=>{var c;const r=pr();if(!r)return;const a=t().messagesMeta[n];if(!(a!=null&&a.hasMore)||a.loading)return;const o=(c=(t().messages[n]??[])[0])==null?void 0:c.id;e(d=>({messagesMeta:{...d.messagesMeta,[n]:{...a,loading:!0}}}));try{const d=await Qw(r,n,{limit:uA,before:o});e(f=>{const m=f.messages[n]??[];return{messages:{...f.messages,[n]:[...d.messages,...m]},messagesMeta:{...f.messagesMeta,[n]:{total:d.total,hasMore:d.hasMore,loading:!1}}}})}catch{e(d=>({messagesMeta:{...d.messagesMeta,[n]:{...a,loading:!1}}}))}},addLink:async(n,r,a)=>{const s=pr();if(!s)return!1;try{return await gz(s,n,r,a),await lA(n,e),!0}catch{return!1}},removeLink:async(n,r,a)=>{const s=pr();if(!s)return!1;try{return await bz(s,n,r,a),await lA(n,e),!0}catch{return!1}},deleteSession:async n=>{const r=pr();if(r)try{await oz(r,n)}catch{}delete Fo[n],e(a=>{const{[n]:s,...o}=a.messages,{[n]:c,...d}=a.messagesMeta,{[n]:f,...m}=a.todos,{[n]:p,...b}=a.sessionStatuses,{[n]:x,...E}=a.errorReasons,{[n]:N,...S}=a.queuedMessageIds,{[n]:T,...C}=a.sessionLinks,{[n]:A,...k}=a.allSessionLinks;return{sessions:a.sessions.filter(R=>R.id!==n),messages:o,messagesMeta:d,todos:m,sessionStatuses:b,errorReasons:E,queuedMessageIds:S,sessionLinks:C,allSessionLinks:k,activeSessionId:a.activeSessionId===n?null:a.activeSessionId}})},sendMessage:async(n,r,a,s)=>{const o=pr(),c=t().activeSessionId;if(!o||!c)return!1;const d=t().sessions.find(m=>m.id===c),f=t().sessionStatuses[c]==="busy";e({sendError:null}),d!=null&&d.completedAt&&e(m=>({sessions:m.sessions.map(p=>p.id===c?{...p,completedAt:void 0}:p)})),f||t().setSessionStatus(c,"busy");try{const m=iW.getState(),p=d!=null&&d.agent&&m.loaded&&m.agents.some(b=>b.name===d.agent||b.id===d.agent)?d.agent:void 0;return await lz(o,c,n,p,r,a,s),f&&(Fo[c]=(Fo[c]||0)+1),!0}catch(m){return e({sendError:m instanceof Error?m.message:"Failed to send message"}),f||t().setSessionStatus(c,"idle"),!1}},replyQuestion:async n=>{const r=pr(),a=t().activeSessionId;if(!(!r||!a))try{await cz(r,a,n)}catch(s){e({sendError:s instanceof Error?s.message:"Failed to reply to question"})}},rejectQuestion:async()=>{const n=pr(),r=t().activeSessionId;if(!(!n||!r))try{await dz(n,r)}catch{}},abortSession:async()=>{const n=pr(),r=t().activeSessionId;if(!(!n||!r)){try{await uz(n,r)}catch{}t().setSessionStatus(r,"idle")}},clearSessions:()=>{for(const n of Object.keys(Fo))delete Fo[n];e({sessions:[],activeSessionId:null,messages:{},messagesMeta:{},todos:{},sessionStatuses:{},errorReasons:{},queuedMessageIds:{},sessionLinks:{},allSessionLinks:{},loadError:null,sendError:null})},updateMessage:(n,r)=>{var a;e(s=>{const o=s.messages[n]??[],c=o.findIndex(p=>p.id===r.id);let d,f=s.queuedMessageIds,m=s.messagesMeta;if(c>=0){const p={...o[c],...r};(!r.parts||r.parts.length===0)&&o[c].parts&&(p.parts=o[c].parts),d=[...o],d[c]=p}else{d=[...o,r];const p=m[n];p&&(m={...m,[n]:{...p,total:p.total+1}});const b=Fo[n]||0;if(r.role==="user"&&b>0){const x=[...f[n]??[]];x.push(r.id),f={...f,[n]:x},Fo[n]=b-1}else if(r.role==="assistant"){const x=f[n];x&&x.length>0&&(f={...f,[n]:x.slice(1)})}}return{messages:{...s.messages,[n]:d},messagesMeta:m,queuedMessageIds:f}}),(a=r.parts)!=null&&a.some(s=>uf(s)&&pp(s))&&ey(n,t().sessions)},updateMessagePart:(n,r,a)=>{e(s=>{const o=s.messages[n]??[],c=o.findIndex(E=>E.id===r),d=c>=0?o[c]:{id:r,role:"assistant"},f=d.parts?[...d.parts]:[],m=oA(a),p=m!=null?f.findIndex(E=>oA(E)===m):-1;p>=0?f[p]={...f[p],...a}:f.push(a);const b={...d,parts:f},x=c>=0?[...o]:[...o,b];return c>=0&&(x[c]=b),{messages:{...s.messages,[n]:x}}}),uf(a)&&pp(a)&&ey(n,t().sessions)},appendMessagePartDelta:(n,r,a,s)=>{co.tick("delta"),co.tick("store"),e(o=>{const c=o.messages[n]??[],d=c.findIndex(E=>E.id===r),f=d>=0?c[d]:{id:r,role:"assistant"},m=f.parts?[...f.parts]:[],p=m.findIndex(E=>E.id===a);if(p>=0){const E=m[p],N=mp(E)+s;m[p]=E.content!=null?{...E,content:N}:{...E,text:N}}else m.push({id:a,type:"text",text:s});const b={...f,parts:m},x=d>=0?[...c]:[...c,b];return d>=0&&(x[d]=b),{messages:{...o.messages,[n]:x}}})},updateTodos:(n,r)=>{e(a=>({todos:{...a.todos,[n]:r}}))},updateSessionInfo:n=>{e(r=>r.sessions.some(s=>s.id===n.id)?{sessions:r.sessions.map(s=>s.id===n.id?{...s,...n}:s)}:{sessions:[n,...r.sessions]})},setSessionStatus:(n,r,a)=>{const s=t().sessionStatuses[n];if(s!==r){const o=t().sessions.find(d=>d.id===n),c=(o==null?void 0:o.title)||n.slice(-8);if(r==="idle"&&s!==void 0&&s!=="idle")bn.getState().removeToast(UR(n)),bn.getState().addToast(`${c} — 完成`,"success",n);else if(r==="busy"&&(s===void 0||s==="idle"))bn.getState().addToast(`${c} — 开始运行`,"info",n);else if(r==="retry")bn.getState().addToast(`${c} — 进入重试`,"warning",n);else if(r==="error"){const d=a?`${c} — 错误: ${a}`:`${c} — 发生错误`;bn.getState().addToast(d,"error",n)}}e(o=>{const c=a?{...o.errorReasons,[n]:a}:r!=="error"?(()=>{const{[n]:d,...f}=o.errorReasons;return f})():o.errorReasons;return{sessionStatuses:{...o.sessionStatuses,[n]:r},errorReasons:c}})},bulkSetStatuses:n=>{e({sessionStatuses:{...t().sessionStatuses,...n}})},renameSession:async(n,r)=>{const a=pr();if(a){e(s=>({sessions:s.sessions.map(o=>o.id===n?{...o,title:r}:o)}));try{await $z(a,n,r)}catch{await t().loadSessions()}}},revertToMessage:async(n,r)=>{const a=pr();if(!a)return!1;try{return await fz(a,n,r),await t().refreshSessionData(n),!0}catch{return!1}}})),at=ei((e,t)=>({issues:[],tags:[],tagFilterMode:new Map,milestones:[],selectedMilestoneId:null,loaded:!1,syncing:!1,selectedIssueId:null,viewingIssueId:null,viewingTreeRootId:null,matchingParentId:null,matchingCandidateId:null,clearIssues:()=>e({issues:[],tags:[],tagFilterMode:new Map,milestones:[],selectedMilestoneId:null,loaded:!1,selectedIssueId:null,viewingIssueId:null,viewingTreeRootId:null,matchingParentId:null,matchingCandidateId:null}),setSelectedIssue:n=>e({selectedIssueId:n}),setViewingIssue:(n,r)=>e({viewingIssueId:n,viewingTreeRootId:r??null}),enterMatchMode:n=>e({matchingParentId:n,matchingCandidateId:null}),exitMatchMode:()=>{e({matchingParentId:null,matchingCandidateId:null})},linkChild:async(n,r)=>{var s;const a=ze.getState().activeRepoId;if(!a)return!1;try{await Iz(a,n,r);const o=(s=t().issues.find(c=>c.number===n))==null?void 0:s.id;return o&&e(c=>({issues:c.issues.map(d=>d.number===r?{...d,parentId:o}:d),matchingCandidateId:null})),!0}catch{return!1}},updateIssueState:async(n,r)=>{const a=ze.getState().activeRepoId;if(!a)return!1;try{const s=await NI(a,n,{state:r});return e(o=>({issues:o.issues.map(c=>c.number===n?{...c,state:s.state}:c)})),!0}catch{return!1}},loadIssues:async()=>{const n=ze.getState().activeRepoId;if(!n){e({issues:[],loaded:!0});return}try{const r=await n2(n,"all");e({issues:r,loaded:!0})}catch{e({loaded:!0})}},syncIssues:async()=>{const n=ze.getState().activeRepoId;if(n){e({syncing:!0});try{await kz(n,"open");const[r,a,s]=await Promise.all([n2(n,"all"),e2(n),t2(n)]);e({issues:r,tags:a,milestones:s,syncing:!1})}catch(r){e({syncing:!1});let a="同步 Issue 失败";if(r instanceof ns)try{const s=JSON.parse(r.message);s.error&&(a=s.error)}catch{r.message&&(a=r.message)}bn.getState().addToast(a,"error")}}},createIssue:async(n,r)=>{const a=ze.getState().activeRepoId;if(!a)return null;try{const s=await Oz(a,n,r);return e(o=>({issues:[s,...o.issues]})),s}catch{return null}},loadTags:async()=>{const n=ze.getState().activeRepoId;if(!n){e({tags:[]});return}try{const r=await e2(n);e({tags:r})}catch{}},cycleTagFilter:n=>{e(r=>{const a=new Map(r.tagFilterMode),s=a.get(n);return s?s==="include"?a.set(n,"exclude"):a.delete(n):a.set(n,"include"),{tagFilterMode:a}})},clearTagFilter:()=>e({tagFilterMode:new Map}),loadMilestones:async()=>{const n=ze.getState().activeRepoId;if(!n){e({milestones:[]});return}try{const r=await t2(n);e({milestones:r})}catch{}},setMilestoneFilter:n=>e({selectedMilestoneId:n})})),Qm=ei(e=>({drafts:{},setDraft:(t,n)=>e(r=>{if(!n.trim()){const{[t]:a,...s}=r.drafts;return{drafts:s}}return{drafts:{...r.drafts,[t]:n}}}),clearDraft:t=>e(n=>{const{[t]:r,...a}=n.drafts;return{drafts:a}})})),oW=5*1024*1024,cA=10,FR=["image/png","image/jpeg","image/gif","image/webp"],lW=5,uW=500;let dA=0;function zR(e){return e.split(`
544
544
  `).length>lW||e.length>uW}function cW(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/(1024*1024)).toFixed(1)}MB`}function dW(e){return new Promise((t,n)=>{const r=new FileReader;r.onload=()=>t(String(r.result)),r.onerror=()=>n(r.error),r.readAsDataURL(e)})}function fW({url:e,label:t,onClose:n}){return y.useEffect(()=>{const r=a=>{a.key==="Escape"&&(a.preventDefault(),n())};return window.addEventListener("keydown",r,!0),()=>window.removeEventListener("keydown",r,!0)},[n]),u.jsx("div",{role:"dialog","aria-modal":"true","aria-label":t,onClick:n,className:"fixed inset-0 z-50 flex cursor-zoom-out items-center justify-center bg-black/80 p-8 backdrop-blur-sm",children:u.jsx("img",{src:e,alt:t,className:"max-h-full max-w-full object-contain"})})}function tE({url:e,label:t,className:n}){const[r,a]=y.useState(!1);return u.jsxs(u.Fragment,{children:[u.jsx("button",{type:"button",onClick:()=>a(!0),"aria-label":`预览 ${t}`,className:"block cursor-zoom-in rounded-md transition-opacity duration-150 hover:opacity-80",children:u.jsx("img",{src:e,alt:t,className:re("rounded-md border border-line",n)})}),r&&u.jsx(fW,{url:e,label:t,onClose:()=>a(!1)})]})}function HR(e=!0){const[t,n]=y.useState([]),[r,a]=y.useState([]),[s,o]=y.useState(null);y.useEffect(()=>{o(null),e||n([])},[e]);const c=async N=>{const S=[],T=[],C=t.length;let A=cA-C;for(const k of N){if(A<=0){T.push(`最多 ${cA} 张图片`);break}if(!FR.includes(k.type)){T.push(`${k.name||"文件"}:格式不支持`);continue}if(k.size>oW){T.push(`${k.name}:超过 5MB`);continue}S.push({_id:`att-${++dA}`,mime:k.type,url:await dW(k),filename:k.name}),A--}S.length>0&&n(k=>[...k,...S]),o(T.length>0?T.join(";"):null)},d=N=>{const S=Array.from(N.clipboardData.files);if(S.length!==0){if(N.preventDefault(),!e){o("当前模型不支持图片");return}c(S)}},f=N=>{const S=++dA,T=N.split(`
545
545
  `).length,C=new TextEncoder().encode(N).byteLength,A=`[粘贴文本 #${S} · ${T}行]`,k={_id:`fold-${S}`,text:N,lineCount:T,byteSize:C,placeholder:A};return a(R=>[...R,k]),k},m=N=>{let S=N;for(const T of r)S=S.replace(T.placeholder,T.text);return S},p=N=>n(S=>S.filter(T=>T._id!==N)),b=N=>a(S=>S.filter(T=>T._id!==N)),x=y.useCallback(()=>{n([]),a([]),o(null)},[]),E=t.map(({mime:N,url:S,filename:T})=>({mime:N,url:S,filename:T}));return{attachments:t,foldedTexts:r,promptFiles:E,error:s,setError:o,addFiles:c,onPaste:d,addFoldedText:f,expandFoldedTexts:m,remove:p,removeFoldedText:b,clear:x}}function hW({text:e,label:t,onClose:n}){y.useEffect(()=>{const s=o=>{o.key==="Escape"&&(o.preventDefault(),n())};return window.addEventListener("keydown",s,!0),()=>window.removeEventListener("keydown",s,!0)},[n]);const r=e.split(`
546
- `),a=String(r.length).length;return u.jsx("div",{role:"dialog","aria-modal":"true","aria-label":t,onClick:n,className:"fixed inset-0 z-50 flex items-center justify-center bg-black/80 p-4 backdrop-blur-sm md:p-8",children:u.jsxs("div",{onClick:s=>s.stopPropagation(),className:"flex max-h-full w-full max-w-4xl flex-col overflow-hidden rounded-lg border border-line bg-term",children:[u.jsxs("div",{className:"flex items-center justify-between border-b border-line px-4 py-2",children:[u.jsx("span",{className:"font-mono text-xs text-fg-3",children:t}),u.jsx("button",{type:"button",onClick:n,className:"text-fg-5 hover:text-fg-2",children:u.jsx(ht,{className:"h-4 w-4"})})]}),u.jsx("pre",{className:"overflow-auto p-4 font-mono text-xs leading-relaxed text-fg-2",children:r.map((s,o)=>u.jsxs("div",{children:[u.jsx("span",{className:"mr-3 inline-block select-none text-right text-fg-6",style:{width:`${a}ch`},children:o+1}),s]},o))})]})})}function mW({fold:e,index:t,onRemove:n}){const[r,a]=y.useState(!1),s=`粘贴文本 #${t} · ${e.lineCount}行 · ${cW(e.byteSize)}`;return u.jsxs(u.Fragment,{children:[u.jsxs("div",{className:"group relative flex items-center gap-1.5 rounded-md border border-line bg-elevated/50 px-2.5 py-1.5",children:[u.jsxs("button",{type:"button",onClick:()=>a(!0),className:"flex items-center gap-1.5 font-mono text-xs text-fg-3 transition-colors hover:text-fg",children:[u.jsx(lo,{className:"h-3.5 w-3.5 shrink-0 text-fg-5"}),u.jsx("span",{children:s})]}),u.jsx("button",{type:"button",onClick:n,"aria-label":"移除粘贴文本",className:"flex h-4 w-4 shrink-0 items-center justify-center rounded-full text-fg-5 transition-colors hover:text-fg-2",children:u.jsx(ht,{className:"h-2.5 w-2.5",strokeWidth:2.5})})]}),r&&u.jsx(hW,{text:e.text,label:s,onClose:()=>a(!1)})]})}function $R({onFiles:e,disabled:t,allowed:n}){const r=y.useRef(null);return u.jsxs(u.Fragment,{children:[u.jsx("input",{ref:r,type:"file",accept:FR.join(","),multiple:!0,hidden:!0,onChange:a=>{e(Array.from(a.target.files??[])),a.target.value=""}}),u.jsx("button",{type:"button",onClick:()=>{var a;return(a=r.current)==null?void 0:a.click()},disabled:t||!n,"aria-label":"Attach image",title:n?"附加图片":"当前模型不支持图片",className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-fg-5 transition-colors duration-150 hover:text-fg-3 disabled:cursor-not-allowed disabled:text-fg-6/40",children:u.jsx(P7,{className:"h-4 w-4"})})]})}function qR({attachments:e,foldedTexts:t,error:n,onRemove:r,onRemoveFoldedText:a,className:s}){const o=e.length>0||(t??[]).length>0;return!o&&!n?null:u.jsxs("div",{className:s,children:[o&&u.jsxs("div",{className:"mb-2 flex flex-wrap gap-2",children:[e.map(c=>u.jsxs("div",{className:"group relative",children:[u.jsx(tE,{url:c.url,label:c.filename??"attachment",className:"h-16 w-16 object-cover"}),u.jsx("button",{type:"button",onClick:()=>r(c._id),"aria-label":"Remove attachment",className:"absolute -right-1.5 -top-1.5 flex h-4 w-4 items-center justify-center rounded-full border border-line bg-term text-fg-4 opacity-0 transition-opacity duration-150 hover:text-fg-2 group-hover:opacity-100",children:u.jsx(ht,{className:"h-2.5 w-2.5",strokeWidth:2.5})})]},c._id)),(t??[]).map((c,d)=>u.jsx(mW,{fold:c,index:d+1,onRemove:()=>a==null?void 0:a(c._id)},c._id))]}),n&&u.jsx("div",{className:"mb-2 font-mono text-[11px] text-red-400",children:n})]})}function YR({isListening:e,disabled:t,onStart:n,onStop:r}){const a=y.useRef(!1),s=c=>{if(t)return;c.preventDefault(),a.current=!0,n();const d=()=>{document.removeEventListener("touchend",d),document.removeEventListener("touchcancel",d),a.current=!1,r()};document.addEventListener("touchend",d,{once:!0}),document.addEventListener("touchcancel",d,{once:!0})},o=()=>{if(t||a.current)return;n();const c=()=>{document.removeEventListener("mouseup",c),r()};document.addEventListener("mouseup",c,{once:!0})};return u.jsx("button",{type:"button",disabled:t,onTouchStart:s,onMouseDown:o,onContextMenu:c=>c.preventDefault(),"aria-label":"按住说话",title:"按住说话",style:{WebkitTouchCallout:"none"},className:re("flex shrink-0 select-none touch-none items-center justify-center transition-colors duration-150 disabled:cursor-not-allowed disabled:text-fg-6/40","order-first self-stretch w-12 rounded-xl sm:order-none sm:self-auto sm:h-7 sm:w-7 sm:rounded-md",e?"bg-red-500/15 text-red-400 hover:bg-red-500/25":"text-fg-5 hover:text-fg-3"),children:u.jsx(J7,{className:re("h-6 w-6 sm:h-4 sm:w-4",e&&"animate-pulse")})})}const pW=[.85,1.25,.65,1.4,.75,1.15,.95],ty=4,fA=24;function gW(e){const t=Math.floor(e/60).toString().padStart(2,"0"),n=Math.floor(e%60).toString().padStart(2,"0");return`${t}:${n}`}function bW({volumeLevel:e}){const t=Math.min(Math.max(e,0),1);return u.jsx("div",{className:"flex h-6 items-center gap-1","aria-hidden":"true",children:pW.map((n,r)=>{const a=ty+t*n*(fA-ty),s=Math.max(ty,Math.min(fA,a));return u.jsx("span",{className:"w-1 rounded-full bg-red-400 transition-[height] duration-150 ease-out",style:{height:`${s}px`}},r)})})}function GR({phase:e,transcript:t,interimTranscript:n,editText:r,onEditTextChange:a,onTextareaKeyDown:s,textareaRef:o,wrapperClassName:c}){if(e==="idle")return null;const d=t.length>0||n.length>0;return u.jsx("div",{className:c,children:u.jsxs("div",{className:"max-h-[40vh] overflow-y-auto px-4 py-4",children:[e==="recording"&&u.jsx("div",{className:"text-xl leading-relaxed",children:d?u.jsxs(u.Fragment,{children:[u.jsx("span",{className:"text-fg",children:t}),n&&u.jsx("span",{className:"text-fg-4",children:n})]}):u.jsx("span",{className:"italic text-fg-5",children:"正在聆听…"})}),e==="recognizing"&&u.jsxs("div",{className:"flex items-center gap-3",children:[u.jsx(nn,{className:"h-5 w-5 shrink-0 text-emerald-400 fs-spin"}),u.jsx("span",{className:"font-mono text-sm text-emerald-400",children:"识别中…"}),n&&u.jsx("span",{className:"truncate text-base text-fg-4",children:n})]}),e==="done"&&u.jsx("textarea",{ref:o,value:r,onChange:f=>a(f.target.value),onKeyDown:s,rows:2,placeholder:"识别结果(可编辑)",className:"w-full resize-none bg-transparent text-xl leading-relaxed text-fg placeholder:text-fg-5 focus:outline-none"})]})})}function KR({phase:e,volumeLevel:t,elapsed:n,editText:r,error:a,onCancel:s,onConfirm:o,idleHint:c,className:d}){return e==="idle"?u.jsx("div",{className:d,children:a?u.jsx("span",{className:"font-mono text-[10px] text-red-400",children:a}):c?u.jsx("span",{className:"font-mono text-[10px] text-fg-6",children:c}):null}):e==="done"?u.jsxs("div",{className:d,children:[u.jsx("span",{className:"hidden font-mono text-[10px] text-fg-6 sm:inline",children:"⌘/Ctrl+⏎ 发送 · Esc 取消"}),u.jsxs("div",{className:"ml-auto flex items-center gap-2",children:[u.jsx("button",{type:"button",onClick:s,className:"rounded-md border border-line px-3 py-1 text-xs text-fg-3 transition-colors hover:bg-elevated hover:text-fg",children:"取消"}),u.jsxs("button",{type:"button",onClick:o,disabled:r.trim().length===0,"aria-label":"发送",className:"flex items-center gap-1.5 rounded-md bg-emerald-600 px-3 py-1 text-xs font-medium text-white transition-colors hover:bg-emerald-500 disabled:cursor-not-allowed disabled:bg-fg-6/30 disabled:text-fg-5",children:[u.jsx(af,{className:"h-3.5 w-3.5",strokeWidth:2.5}),u.jsx("span",{children:"发送"})]})]})]}):u.jsx("div",{className:d,children:e==="recording"?u.jsxs(u.Fragment,{children:[u.jsx(bW,{volumeLevel:t}),u.jsxs("span",{className:"inline-flex items-center gap-1.5 font-mono text-[11px] font-medium text-red-400",children:[u.jsx("span",{className:"h-1.5 w-1.5 shrink-0 animate-pulse rounded-full bg-red-400"}),"录音中"]}),u.jsx("span",{className:"font-mono text-[11px] tabular-nums text-fg-4",children:gW(n)})]}):u.jsxs(u.Fragment,{children:[u.jsx(nn,{className:"h-4 w-4 shrink-0 text-emerald-400 fs-spin"}),u.jsx("span",{className:"font-mono text-[11px] text-emerald-400",children:"识别中…"})]})})}/*! Capacitor: https://capacitorjs.com/ - MIT License */var Yu;(function(e){e.Unimplemented="UNIMPLEMENTED",e.Unavailable="UNAVAILABLE"})(Yu||(Yu={}));class ny extends Error{constructor(t,n,r){super(t),this.message=t,this.code=n,this.data=r}}const xW=e=>{var t,n;return e!=null&&e.androidBridge?"android":!((n=(t=e==null?void 0:e.webkit)===null||t===void 0?void 0:t.messageHandlers)===null||n===void 0)&&n.bridge?"ios":"web"},yW=e=>{const t=e.CapacitorCustomPlatform||null,n=e.Capacitor||{},r=n.Plugins=n.Plugins||{},a=()=>t!==null?t.name:xW(e),s=()=>a()!=="web",o=p=>{const b=f.get(p);return!!(b!=null&&b.platforms.has(a())||c(p))},c=p=>{var b;return(b=n.PluginHeaders)===null||b===void 0?void 0:b.find(x=>x.name===p)},d=p=>e.console.error(p),f=new Map,m=(p,b={})=>{const x=f.get(p);if(x)return console.warn(`Capacitor plugin "${p}" already registered. Cannot register plugins twice.`),x.proxy;const E=a(),N=c(p);let S;const T=async()=>(!S&&E in b?S=typeof b[E]=="function"?S=await b[E]():S=b[E]:t!==null&&!S&&"web"in b&&(S=typeof b.web=="function"?S=await b.web():S=b.web),S),C=($,D)=>{var M,G;if(N){const K=N==null?void 0:N.methods.find(ae=>D===ae.name);if(K)return K.rtype==="promise"?ae=>n.nativePromise(p,D.toString(),ae):(ae,Q)=>n.nativeCallback(p,D.toString(),ae,Q);if($)return(M=$[D])===null||M===void 0?void 0:M.bind($)}else{if($)return(G=$[D])===null||G===void 0?void 0:G.bind($);throw new ny(`"${p}" plugin is not implemented on ${E}`,Yu.Unimplemented)}},A=$=>{let D;const M=(...G)=>{const K=T().then(ae=>{const Q=C(ae,$);if(Q){const W=Q(...G);return D=W==null?void 0:W.remove,W}else throw new ny(`"${p}.${$}()" is not implemented on ${E}`,Yu.Unimplemented)});return $==="addListener"&&(K.remove=async()=>D()),K};return M.toString=()=>`${$.toString()}() { [capacitor code] }`,Object.defineProperty(M,"name",{value:$,writable:!1,configurable:!1}),M},k=A("addListener"),R=A("removeListener"),O=($,D)=>{const M=k({eventName:$},D),G=async()=>{const ae=await M;R({eventName:$,callbackId:ae},D)},K=new Promise(ae=>M.then(()=>ae({remove:G})));return K.remove=async()=>{console.warn("Using addListener() without 'await' is deprecated."),await G()},K},j=new Proxy({},{get($,D){switch(D){case"$$typeof":return;case"toJSON":return()=>({});case"addListener":return N?O:k;case"removeListener":return R;default:return A(D)}}});return r[p]=j,f.set(p,{name:p,proxy:j,platforms:new Set([...Object.keys(b),...N?[E]:[]])}),j};return n.convertFileSrc||(n.convertFileSrc=p=>p),n.getPlatform=a,n.handleError=d,n.isNativePlatform=s,n.isPluginAvailable=o,n.registerPlugin=m,n.Exception=ny,n.DEBUG=!!n.DEBUG,n.isLoggingEnabled=!!n.isLoggingEnabled,n},vW=e=>e.Capacitor=yW(e),gp=vW(typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}),w0=gp.registerPlugin;class nE{constructor(){this.listeners={},this.retainedEventArguments={},this.windowListeners={}}addListener(t,n){let r=!1;this.listeners[t]||(this.listeners[t]=[],r=!0),this.listeners[t].push(n);const s=this.windowListeners[t];s&&!s.registered&&this.addWindowListener(s),r&&this.sendRetainedArgumentsForEvent(t);const o=async()=>this.removeListener(t,n);return Promise.resolve({remove:o})}async removeAllListeners(){this.listeners={};for(const t in this.windowListeners)this.removeWindowListener(this.windowListeners[t]);this.windowListeners={}}notifyListeners(t,n,r){const a=this.listeners[t];if(!a){if(r){let s=this.retainedEventArguments[t];s||(s=[]),s.push(n),this.retainedEventArguments[t]=s}return}a.forEach(s=>s(n))}hasListeners(t){var n;return!!(!((n=this.listeners[t])===null||n===void 0)&&n.length)}registerWindowListener(t,n){this.windowListeners[n]={registered:!1,windowEventName:t,pluginEventName:n,handler:r=>{this.notifyListeners(n,r)}}}unimplemented(t="not implemented"){return new gp.Exception(t,Yu.Unimplemented)}unavailable(t="not available"){return new gp.Exception(t,Yu.Unavailable)}async removeListener(t,n){const r=this.listeners[t];if(!r)return;const a=r.indexOf(n);a!==-1&&this.listeners[t].splice(a,1),this.listeners[t].length||this.removeWindowListener(this.windowListeners[t])}addWindowListener(t){window.addEventListener(t.windowEventName,t.handler),t.registered=!0}removeWindowListener(t){t&&(window.removeEventListener(t.windowEventName,t.handler),t.registered=!1)}sendRetainedArgumentsForEvent(t){const n=this.retainedEventArguments[t];n&&(delete this.retainedEventArguments[t],n.forEach(r=>{this.notifyListeners(t,r)}))}}const hA=e=>encodeURIComponent(e).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape),mA=e=>e.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent);class EW extends nE{async getCookies(){const t=document.cookie,n={};return t.split(";").forEach(r=>{if(r.length<=0)return;let[a,s]=r.replace(/=/,"CAP_COOKIE").split("CAP_COOKIE");a=mA(a).trim(),s=mA(s).trim(),n[a]=s}),n}async setCookie(t){try{const n=hA(t.key),r=hA(t.value),a=t.expires?`; expires=${t.expires.replace("expires=","")}`:"",s=(t.path||"/").replace("path=",""),o=t.url!=null&&t.url.length>0?`domain=${t.url}`:"";document.cookie=`${n}=${r||""}${a}; path=${s}; ${o};`}catch(n){return Promise.reject(n)}}async deleteCookie(t){try{document.cookie=`${t.key}=; Max-Age=0`}catch(n){return Promise.reject(n)}}async clearCookies(){try{const t=document.cookie.split(";")||[];for(const n of t)document.cookie=n.replace(/^ +/,"").replace(/=.*/,`=;expires=${new Date().toUTCString()};path=/`)}catch(t){return Promise.reject(t)}}async clearAllCookies(){try{await this.clearCookies()}catch(t){return Promise.reject(t)}}}w0("CapacitorCookies",{web:()=>new EW});const NW=async e=>new Promise((t,n)=>{const r=new FileReader;r.onload=()=>{const a=r.result;t(a.indexOf(",")>=0?a.split(",")[1]:a)},r.onerror=a=>n(a),r.readAsDataURL(e)}),_W=(e={})=>{const t=Object.keys(e);return Object.keys(e).map(a=>a.toLocaleLowerCase()).reduce((a,s,o)=>(a[s]=e[t[o]],a),{})},TW=(e,t=!0)=>e?Object.entries(e).reduce((r,a)=>{const[s,o]=a;let c,d;return Array.isArray(o)?(d="",o.forEach(f=>{c=t?encodeURIComponent(f):f,d+=`${s}=${c}&`}),d.slice(0,-1)):(c=t?encodeURIComponent(o):o,d=`${s}=${c}`),`${r}&${d}`},"").substr(1):null,SW=(e,t={})=>{const n=Object.assign({method:e.method||"GET",headers:e.headers},t),a=_W(e.headers)["content-type"]||"";if(typeof e.data=="string")n.body=e.data;else if(a.includes("application/x-www-form-urlencoded")){const s=new URLSearchParams;for(const[o,c]of Object.entries(e.data||{}))s.set(o,c);n.body=s.toString()}else if(a.includes("multipart/form-data")||e.data instanceof FormData){const s=new FormData;if(e.data instanceof FormData)e.data.forEach((c,d)=>{s.append(d,c)});else for(const c of Object.keys(e.data))s.append(c,e.data[c]);n.body=s;const o=new Headers(n.headers);o.delete("content-type"),n.headers=o}else(a.includes("application/json")||typeof e.data=="object")&&(n.body=JSON.stringify(e.data));return n};class wW extends nE{async request(t){const n=SW(t,t.webFetchExtra),r=TW(t.params,t.shouldEncodeUrlParams),a=r?`${t.url}?${r}`:t.url,s=await fetch(a,n),o=s.headers.get("content-type")||"";let{responseType:c="text"}=s.ok?t:{};o.includes("application/json")&&(c="json");let d,f;switch(c){case"arraybuffer":case"blob":f=await s.blob(),d=await NW(f);break;case"json":d=await s.json();break;case"document":case"text":default:d=await s.text()}const m={};return s.headers.forEach((p,b)=>{m[b]=p}),{data:d,headers:m,status:s.status,url:s.url}}async get(t){return this.request(Object.assign(Object.assign({},t),{method:"GET"}))}async post(t){return this.request(Object.assign(Object.assign({},t),{method:"POST"}))}async put(t){return this.request(Object.assign(Object.assign({},t),{method:"PUT"}))}async patch(t){return this.request(Object.assign(Object.assign({},t),{method:"PATCH"}))}async delete(t){return this.request(Object.assign(Object.assign({},t),{method:"DELETE"}))}}w0("CapacitorHttp",{web:()=>new wW});var pA;(function(e){e.Dark="DARK",e.Light="LIGHT",e.Default="DEFAULT"})(pA||(pA={}));var gA;(function(e){e.StatusBar="StatusBar",e.NavigationBar="NavigationBar"})(gA||(gA={}));class AW extends nE{async setStyle(){this.unavailable("not available for web")}async setAnimation(){this.unavailable("not available for web")}async show(){this.unavailable("not available for web")}async hide(){this.unavailable("not available for web")}}w0("SystemBars",{web:()=>new AW});const CW="modulepreload",kW=function(e){return"/"+e},bA={},OW=function(t,n,r){let a=Promise.resolve();if(n&&n.length>0){let o=function(f){return Promise.all(f.map(m=>Promise.resolve(m).then(p=>({status:"fulfilled",value:p}),p=>({status:"rejected",reason:p}))))};document.getElementsByTagName("link");const c=document.querySelector("meta[property=csp-nonce]"),d=(c==null?void 0:c.nonce)||(c==null?void 0:c.getAttribute("nonce"));a=o(n.map(f=>{if(f=kW(f),f in bA)return;bA[f]=!0;const m=f.endsWith(".css"),p=m?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${f}"]${p}`))return;const b=document.createElement("link");if(b.rel=m?"stylesheet":CW,m||(b.as="script"),b.crossOrigin="",b.href=f,d&&b.setAttribute("nonce",d),document.head.appendChild(b),m)return new Promise((x,E)=>{b.addEventListener("load",x),b.addEventListener("error",()=>E(new Error(`Unable to preload CSS for ${f}`)))})}))}function s(o){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=o,window.dispatchEvent(c),!c.defaultPrevented)throw o}return a.then(o=>{for(const c of o||[])c.status==="rejected"&&s(c.reason);return t().catch(s)})},Eu=w0("SpeechRecognition",{web:()=>OW(()=>import("./web-DlFsvkP9.js"),[]).then(e=>new e.SpeechRecognitionWeb)});function IW(e,t){const n=e.length,r=new ArrayBuffer(44+n*2),a=new DataView(r),s=(o,c)=>{for(let d=0;d<c.length;d++)a.setUint8(o+d,c.charCodeAt(d))};s(0,"RIFF"),a.setUint32(4,36+n*2,!0),s(8,"WAVE"),s(12,"fmt "),a.setUint32(16,16,!0),a.setUint16(20,1,!0),a.setUint16(22,1,!0),a.setUint32(24,t,!0),a.setUint32(28,t*2,!0),a.setUint16(32,2,!0),a.setUint16(34,16,!0),s(36,"data"),a.setUint32(40,n*2,!0);for(let o=0;o<n;o++){const c=Math.max(-1,Math.min(1,e[o]));a.setInt16(44+o*2,c<0?c*32768:c*32767,!0)}return new Blob([r],{type:"audio/wav"})}const hv=gp.isNativePlatform(),ry=!hv&&typeof window<"u"?window.SpeechRecognition??window.webkitSpeechRecognition:void 0,ay=16e3;function RW(e="zh-CN"){const[t,n]=y.useState(!1),[r,a]=y.useState(""),[s,o]=y.useState(""),[c,d]=y.useState(null),[f,m]=y.useState(0),[p,b]=y.useState("idle"),x=y.useRef(null),E=y.useRef(!1),N=y.useRef([]),S=y.useRef(!1),T=y.useRef(null),C=y.useRef(!1),A=y.useRef(""),k=y.useRef(null),R=y.useRef(null),O=y.useRef(null),j=y.useRef([]),$=y.useRef(!1),D=!0,M=y.useCallback(async()=>{var B,me,se;(B=O.current)==null||B.disconnect(),(me=R.current)==null||me.getTracks().forEach(z=>z.stop()),await((se=k.current)==null?void 0:se.close().catch(()=>{}));const H=j.current;if(j.current=[],O.current=null,R.current=null,k.current=null,H.length===0||$.current){n(!1),b("idle");return}o("识别中…"),b("recognizing");const F=H.reduce((z,fe)=>z+fe.length,0),Y=new Float32Array(F);let L=0;for(const z of H)Y.set(z,L),L+=z.length;const P=IW(Y,ay),J=new FormData;J.append("audio",P,"recording.wav");try{const z=await fetch("/api/transcribe",{method:"POST",body:J});if($.current)return;if(z.ok){const{text:fe}=await z.json();fe?(a(fe),b("done")):b("idle")}else{const fe=await z.json().catch(()=>({error:`HTTP ${z.status}`}));d(fe.error??`HTTP ${z.status}`),b("idle")}}catch(z){d(`语音识别失败:${z instanceof Error?z.message:String(z)}`),b("idle")}finally{o(""),n(!1)}},[]),G=y.useCallback(async()=>{if(E.current=!0,T.current&&(clearTimeout(T.current),T.current=null),hv){await Eu.stop().catch(()=>{});for(const H of N.current)await H.remove().catch(()=>{});N.current=[],n(!1),o("")}else x.current?x.current.stop():k.current?await M():(n(!1),b("idle"))},[M]),K=y.useCallback(async()=>{var L;$.current=!1,a(""),o(""),d(null),b("idle");const{available:H}=await Eu.available();if(!H){d("当前设备不支持语音识别");return}if((await Eu.requestPermissions()).speechRecognition!=="granted"){d("请允许语音识别权限");return}const Y=[];Y.push(await Eu.addListener("partialResults",P=>{o(P.matches[0]??"")})),Y.push(await Eu.addListener("listeningState",P=>{const J=P.status==="started";n(J),J&&b("recording"),J||o("")})),N.current=Y;try{const P=await Eu.start({language:e,partialResults:!0,maxResults:1});(L=P.matches)!=null&&L.length&&a(J=>J+P.matches.join(""))}catch(P){d(`语音识别错误:${P instanceof Error?P.message:String(P)}`);for(const J of Y)await J.remove().catch(()=>{});N.current=[]}},[e]),ae=y.useCallback(()=>{if(!ry)return!1;$.current=!1,a(""),o(""),A.current="",d(null),b("idle"),E.current=!1;const H=new ry;H.lang=e,H.continuous=!0,H.interimResults=!0,H.maxAlternatives=1,H.onstart=()=>{n(!0),b("recording"),S.current=!1,T.current=setTimeout(()=>{!S.current&&!E.current&&(C.current=!0,E.current=!0,H.stop(),d("语音识别服务不可用(Chrome/Edge 需连接 Google 服务器),下次将使用服务端识别"))},5e3)},H.onresult=F=>{S.current=!0,T.current&&(clearTimeout(T.current),T.current=null);let Y="",L="";for(let P=F.resultIndex;P<F.results.length;P++){const J=F.results[P][0].transcript;F.results[P].isFinal?Y+=J:L+=J}Y&&a(P=>P+Y),o(L),A.current=L},H.onerror=F=>{switch(F.error!=="no-speech"&&F.error!=="aborted"&&(E.current=!0),F.error){case"not-allowed":d("请允许麦克风权限");break;case"network":d("网络错误,请检查连接");break;case"no-speech":case"aborted":return;default:d(`语音识别错误:${F.error}`)}},H.onend=()=>{if(E.current&&A.current&&a(F=>F+A.current),o(""),A.current="",!E.current)try{H.start();return}catch{}n(!1),x.current=null},x.current=H;try{return H.start(),!0}catch{return!1}},[e]),Q=y.useCallback(async()=>{$.current=!1,a(""),o(""),d(null),b("idle");try{const P=await fetch("/api/transcribe/status"),{available:J}=await P.json();if(!J){d("语音识别服务未就绪,请稍后重试");return}}catch{d("无法连接语音识别服务");return}let H;try{H=await navigator.mediaDevices.getUserMedia({audio:{sampleRate:ay,channelCount:1}})}catch{d("请允许麦克风权限");return}const F=new AudioContext({sampleRate:ay}),Y=F.createMediaStreamSource(H),L=F.createScriptProcessor(4096,1,1);j.current=[],L.onaudioprocess=P=>{j.current.push(new Float32Array(P.inputBuffer.getChannelData(0)))},Y.connect(L),L.connect(F.destination),k.current=F,R.current=H,O.current=L,n(!0),b("recording")},[]),W=y.useCallback(()=>{hv?K():ry&&!C.current&&ae()||Q()},[K,ae,Q]);y.useEffect(()=>{if(!t){m(0);return}if(x.current)return;let H=!1,F=null,Y=null,L=0;return(async()=>{try{if(F=await navigator.mediaDevices.getUserMedia({audio:!0}),H){F.getTracks().forEach(z=>z.stop());return}Y=new AudioContext;const P=Y.createMediaStreamSource(F),J=Y.createAnalyser();J.fftSize=256,P.connect(J);const B=new Uint8Array(J.frequencyBinCount);let me=0;const se=()=>{if(H)return;J.getByteFrequencyData(B);const z=performance.now();if(z-me>80){let fe=0;for(let Ie=0;Ie<B.length;Ie++)fe+=B[Ie];m(fe/(B.length*255)),me=z}L=requestAnimationFrame(se)};L=requestAnimationFrame(se)}catch{}})(),()=>{H=!0,cancelAnimationFrame(L),F==null||F.getTracks().forEach(P=>P.stop()),Y==null||Y.close().catch(()=>{}),m(0)}},[t]),y.useEffect(()=>{!t&&p==="recording"&&b(r?"done":"idle")},[t,p,r]),y.useEffect(()=>()=>{var H,F,Y,L;E.current=!0,(H=x.current)==null||H.stop(),(F=O.current)==null||F.disconnect(),(Y=R.current)==null||Y.getTracks().forEach(P=>P.stop()),(L=k.current)==null||L.close().catch(()=>{});for(const P of N.current)P.remove().catch(()=>{})},[]);const V=y.useCallback(()=>{$.current=!0,a(""),o(""),A.current="",b("idle")},[]);return{isSupported:D,isListening:t,phase:p,transcript:r,interimTranscript:s,error:c,volumeLevel:f,start:W,stop:G,resetTranscript:V}}const MW=240,jW=1e3;function VR(e){const t=RW(),[n,r]=y.useState(""),[a,s]=y.useState(0),o=y.useRef(null),c=y.useRef(null),d=y.useRef(0);y.useEffect(()=>(t.phase==="recording"?(d.current=Date.now(),s(0),c.current=setInterval(()=>{s(Math.floor((Date.now()-d.current)/1e3))},jW)):c.current&&(clearInterval(c.current),c.current=null),()=>{c.current&&(clearInterval(c.current),c.current=null)}),[t.phase]),y.useEffect(()=>{t.phase==="done"&&(r(t.transcript),requestAnimationFrame(()=>{const b=o.current;b&&(b.focus(),b.setSelectionRange(b.value.length,b.value.length))}))},[t.phase,t.transcript]),y.useLayoutEffect(()=>{if(t.phase!=="done")return;const b=o.current;b&&(b.style.height="auto",b.style.height=`${Math.min(b.scrollHeight,MW)}px`)},[t.phase,n]);const f=y.useCallback(()=>{t.stop(),t.resetTranscript(),r("")},[t]),m=y.useCallback(async()=>{const b=n.trim();if(!b){f();return}await e(b)!==!1&&(t.resetTranscript(),r(""))},[n,e,f,t]);y.useEffect(()=>{if(t.phase==="idle")return;const b=x=>{if(x.key==="Escape"&&t.phase!=="recognizing"){x.preventDefault(),f();return}if(t.phase==="done"&&x.key==="Enter"&&(x.metaKey||x.ctrlKey)){if(x.isComposing)return;x.preventDefault(),m()}};return window.addEventListener("keydown",b),()=>window.removeEventListener("keydown",b)},[t.phase,f,m]);const p=y.useCallback(b=>{b.nativeEvent.isComposing||b.keyCode===229||b.key==="Enter"&&(b.metaKey||b.ctrlKey)&&(b.preventDefault(),m())},[m]);return{stt:t,editText:n,setEditText:r,elapsed:a,textareaRef:o,cancel:f,confirm:m,handleTextareaKeyDown:p}}const io=ei(e=>({agents:[],loaded:!1,loadAgents:async()=>{const t=ze.getState().activeRepoId;try{const n=t?await vI(t):await bI();e({agents:n,loaded:!0})}catch{e({loaded:!0})}}}));function DW(e){if(typeof e!="string")return e;const t=e.trim();if(t)try{return JSON.parse(t)}catch{return t}}function Gn(e){return e&&typeof e=="object"?e:null}function Cl(e){const t=Gn(e);return t&&"properties"in t?t.properties:e}function LW(e){const t=Gn(e);return typeof(t==null?void 0:t.type)=="string"?t.type:void 0}function PW(e){const t=Gn(Cl(e));if(!t)return null;const n=Gn(t.info);if(n&&typeof n.id=="string"){const a=Array.isArray(t.parts)?t.parts:void 0;return{...n,...a?{parts:a}:{}}}if(typeof t.id=="string"&&typeof t.role=="string")return t;const r=Gn(t.message);return r&&typeof r.id=="string"?r:null}function BW(e){const t=Gn(Cl(e));if(!t)return{};const n=Gn(t.part)??t;return typeof n.type!="string"?{}:{messageId:typeof n.messageID=="string"&&n.messageID||typeof n.messageId=="string"&&n.messageId||typeof t.messageID=="string"&&t.messageID||typeof t.messageId=="string"&&t.messageId||void 0,part:n}}function UW(e){const t=Gn(Cl(e));if(!t||t.field!=="text")return null;const n=typeof t.messageID=="string"?t.messageID:null,r=typeof t.partID=="string"?t.partID:null,a=typeof t.delta=="string"?t.delta:null;return!n||!r||a===null?null:{messageId:n,partId:r,delta:a}}function FW(e){const t=Cl(e);if(Array.isArray(t))return t;const n=Gn(t);return n&&Array.isArray(n.todos)?n.todos:[]}function ci(e){return typeof e=="number"?e:0}function zW(e){const t=Gn(Cl(e));if(!t||typeof t.id!="string")return null;const n={id:t.id};typeof t.title=="string"&&(n.title=t.title),typeof t.agent=="string"&&(n.agent=t.agent),typeof t.cost=="number"&&(n.cost=t.cost);const r=typeof t.parentID=="string"?t.parentID:typeof t.parent_id=="string"?t.parent_id:void 0;r&&(n.parentID=r);const a=Gn(t.tokens),s=typeof t.tokens_input=="number"||typeof t.tokens_output=="number";if(a||s){const c=a?Gn(a.cache):null;n.tokens={input:ci(a==null?void 0:a.input)||ci(t.tokens_input),output:ci(a==null?void 0:a.output)||ci(t.tokens_output),reasoning:ci(a==null?void 0:a.reasoning)||ci(t.tokens_reasoning),cache:{read:ci(c==null?void 0:c.read)||ci(t.tokens_cache_read),write:ci(c==null?void 0:c.write)||ci(t.tokens_cache_write)}}}const o=Gn(t.model);return o&&(n.model={providerID:typeof o.providerID=="string"?o.providerID:void 0,modelID:typeof o.modelID=="string"?o.modelID:void 0,variant:typeof o.variant=="string"?o.variant:void 0}),n}function HW(e){const t=Gn(Cl(e));if(!t)return null;if(typeof t.message=="string")return t.message;const n=Gn(t.error);if(n){const r=Gn(n.data);if(typeof(r==null?void 0:r.message)=="string")return`${n.name??"Error"}: ${r.message}`;if(typeof n.message=="string")return`${n.name??"Error"}: ${n.message}`;if(typeof n.name=="string")return String(n.name)}return typeof t.reason=="string"?t.reason:null}function $W(e){const t=Cl(e);if(typeof t=="string")return t;const n=Gn(t);if(typeof(n==null?void 0:n.status)=="string")return n.status;const r=Gn(n==null?void 0:n.status);return typeof(r==null?void 0:r.type)=="string"?r.type:typeof(n==null?void 0:n.type)=="string"?n.type:null}function qW(e,t,n,r){switch(e==="message"||e===""?LW(t)??e:e){case"message.updated":{const s=PW(t);s&&r.updateMessage(n,s);break}case"session.updated":{const s=zW(t);s&&r.updateSessionInfo(s);break}case"message.part.updated":{const{messageId:s,part:o}=BW(t);o&&s&&r.updateMessagePart(n,s,o);break}case"message.part.delta":{const s=UW(t);s&&r.appendMessagePartDelta(n,s.messageId,s.partId,s.delta);break}case"todo.updated":{r.updateTodos(n,FW(t));break}case"session.status":{const s=$W(t);s&&r.setSessionStatus(n,s);break}case"session.idle":{r.setSessionStatus(n,"idle");break}case"session.error":{const s=HW(t);r.setSessionStatus(n,"error",s??void 0);break}}}const YW=600*1e3;class GW{constructor(t,n){Pt(this,"sessionId");Pt(this,"idleTimer",null);Pt(this,"active",!1);Pt(this,"alive",!0);Pt(this,"callbacks");this.sessionId=t,this.callbacks=n,this.resetIdleTimer()}dispatch(t,n){if(!this.alive)return;this.resetIdleTimer();const r=Le.getState();qW(t,n,this.sessionId,r)}activate(){this.active=!0,this.clearIdleTimer()}deactivate(){this.active=!1,this.resetIdleTimer()}refreshOnIdle(){Le.getState().refreshSessionData(this.sessionId)}stop(){this.alive=!1,this.clearIdleTimer()}resetIdleTimer(){this.clearIdleTimer(),!this.active&&(this.idleTimer=setTimeout(()=>{this.callbacks.onWorkerIdle(this.sessionId)},YW))}clearIdleTimer(){this.idleTimer&&(clearTimeout(this.idleTimer),this.idleTimer=null)}}const KW=1e3,VW=3e4;class WW{constructor(t,n){Pt(this,"source",null);Pt(this,"reconnectTimer",null);Pt(this,"attempts",0);Pt(this,"disposed",!1);Pt(this,"repoId");Pt(this,"onEvent");this.repoId=t,this.onEvent=n}start(){this.connect()}stop(){var t;this.disposed=!0,this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),(t=this.source)==null||t.close(),this.source=null}connect(){if(this.disposed)return;const t=Wz(this.repoId),n=new EventSource(t);this.source=n,n.onopen=()=>{this.attempts=0},n.onmessage=a=>{this.handleRaw("message",a)};const r=["message.updated","message.part.updated","message.part.delta","message.removed","todo.updated","session.status","session.idle","session.error","session.updated"];for(const a of r)n.addEventListener(a,s=>{this.handleRaw(a,s)});n.onerror=()=>{if(!(this.disposed||!this.source)&&this.source.readyState===EventSource.CLOSED){this.source.close(),this.source=null;const a=Math.min(KW*2**this.attempts,VW);this.attempts++,this.reconnectTimer=setTimeout(()=>this.connect(),a)}}}handleRaw(t,n){if(!(n instanceof MessageEvent))return;co.tick("sse");const r=DW(n.data);if(r===void 0)return;const a=this.extractSessionId(r);if(!a)return;let s=t;if(t==="message"||t===""){const o=r&&typeof r=="object"?r:null;typeof(o==null?void 0:o.type)=="string"&&(s=o.type)}this.onEvent(a,s,r)}extractSessionId(t){if(!t||typeof t!="object")return null;const n=t;if(n.properties&&typeof n.properties=="object"){const r=n.properties;if(typeof r.sessionID=="string")return r.sessionID;if(typeof r.id=="string")return r.id}return typeof n.sessionID=="string"?n.sessionID:typeof n.sessionId=="string"?n.sessionId:null}}const XW=6e4;class QW{constructor(t){Pt(this,"timer",null);Pt(this,"paused",!1);Pt(this,"callbacks");this.callbacks=t}start(){this.tick(),this.timer=setInterval(()=>{this.paused||this.tick()},XW)}stop(){this.timer&&(clearInterval(this.timer),this.timer=null)}pause(){this.paused=!0}resume(){this.paused=!1,this.tick()}tick(){const t=ze.getState().activeRepoId;t&&(Le.getState().loadSessions(),Xz(t).then(n=>{const r={};for(const[a,s]of Object.entries(n))r[a]=s.type??"idle";Le.getState().bulkSetStatuses(r);for(const[a,s]of Object.entries(r))(s==="busy"||s==="retry")&&this.callbacks.ensureWorker(a)}).catch(()=>{}))}}class ZW{constructor(){Pt(this,"workers",new Map);Pt(this,"dispatcher",null);Pt(this,"supervisor",null);Pt(this,"visibilityHandler",null)}start(t){this.stop();const n={onWorkerIdle:r=>this.removeWorker(r)};this.dispatcher=new WW(t,(r,a,s)=>{const o=this.ensureWorker(r,n);if(a==="session.idle"||a==="session.status"){const c=Le.getState().sessionStatuses[r];o.dispatch(a,s);const d=Le.getState().sessionStatuses[r];c&&c!=="idle"&&d==="idle"&&o.refreshOnIdle()}else o.dispatch(a,s)}),this.dispatcher.start(),this.supervisor=new QW({ensureWorker:r=>this.ensureWorker(r,n)}),this.supervisor.start(),this.visibilityHandler=()=>{var r,a;document.hidden?(r=this.supervisor)==null||r.pause():(a=this.supervisor)==null||a.resume()},document.addEventListener("visibilitychange",this.visibilityHandler)}stop(){var t,n;(t=this.dispatcher)==null||t.stop(),this.dispatcher=null,(n=this.supervisor)==null||n.stop(),this.supervisor=null;for(const r of this.workers.values())r.stop();this.workers.clear(),this.visibilityHandler&&(document.removeEventListener("visibilitychange",this.visibilityHandler),this.visibilityHandler=null)}activateSession(t){for(const a of this.workers.values())a.sessionId!==t&&a.deactivate();if(!t)return;const n={onWorkerIdle:a=>this.removeWorker(a)};this.ensureWorker(t,n).activate(),Le.getState().refreshSessionData(t)}deactivateSession(t){var n;(n=this.workers.get(t))==null||n.deactivate()}ensureWorker(t,n){let r=this.workers.get(t);return r||(r=new GW(t,n),this.workers.set(t,r),co.setGauge("workers",this.workers.size)),r}removeWorker(t){const n=Le.getState().activeSessionId;if(t===n)return;const r=this.workers.get(t);r&&(r.stop(),this.workers.delete(t),co.setGauge("workers",this.workers.size))}}const bp=new ZW,xA=(function(e,t,n){const r=jf(n);if(!e||!e.type||!e.children)throw new Error("Expected parent node");if(typeof t=="number"){if(t<0||t===Number.POSITIVE_INFINITY)throw new Error("Expected positive finite number as index")}else if(t=e.children.indexOf(t),t<0)throw new Error("Expected child node or index");for(;++t<e.children.length;)if(r(e.children[t],t,e))return e.children[t]}),kl=(function(e){if(e==null)return tX;if(typeof e=="string")return eX(e);if(typeof e=="object")return JW(e);if(typeof e=="function")return rE(e);throw new Error("Expected function, string, or array as `test`")});function JW(e){const t=[];let n=-1;for(;++n<e.length;)t[n]=kl(e[n]);return rE(r);function r(...a){let s=-1;for(;++s<t.length;)if(t[s].apply(this,a))return!0;return!1}}function eX(e){return rE(t);function t(n){return n.tagName===e}}function rE(e){return t;function t(n,r,a){return!!(nX(n)&&e.call(this,n,typeof r=="number"?r:void 0,a||void 0))}}function tX(e){return!!(e&&typeof e=="object"&&"type"in e&&e.type==="element"&&"tagName"in e&&typeof e.tagName=="string")}function nX(e){return e!==null&&typeof e=="object"&&"type"in e&&"tagName"in e}const yA=/\n/g,vA=/[\t ]+/g,mv=kl("br"),EA=kl(cX),rX=kl("p"),NA=kl("tr"),aX=kl(["datalist","head","noembed","noframes","noscript","rp","script","style","template","title",uX,dX]),WR=kl(["address","article","aside","blockquote","body","caption","center","dd","dialog","dir","dl","dt","div","figure","figcaption","footer","form,","h1","h2","h3","h4","h5","h6","header","hgroup","hr","html","legend","li","listing","main","menu","nav","ol","p","plaintext","pre","section","ul","xmp"]);function iX(e,t){const n=t||{},r="children"in e?e.children:[],a=WR(e),s=ZR(e,{whitespace:n.whitespace||"normal"}),o=[];(e.type==="text"||e.type==="comment")&&o.push(...QR(e,{breakBefore:!0,breakAfter:!0}));let c=-1;for(;++c<r.length;)o.push(...XR(r[c],e,{whitespace:s,breakBefore:c?void 0:a,breakAfter:c<r.length-1?mv(r[c+1]):a}));const d=[];let f;for(c=-1;++c<o.length;){const m=o[c];typeof m=="number"?f!==void 0&&m>f&&(f=m):m&&(f!==void 0&&f>-1&&d.push(`
546
+ `),a=String(r.length).length;return u.jsx("div",{role:"dialog","aria-modal":"true","aria-label":t,onClick:n,className:"fixed inset-0 z-50 flex items-center justify-center bg-black/80 p-4 backdrop-blur-sm md:p-8",children:u.jsxs("div",{onClick:s=>s.stopPropagation(),className:"flex max-h-full w-full max-w-4xl flex-col overflow-hidden rounded-lg border border-line bg-term",children:[u.jsxs("div",{className:"flex items-center justify-between border-b border-line px-4 py-2",children:[u.jsx("span",{className:"font-mono text-xs text-fg-3",children:t}),u.jsx("button",{type:"button",onClick:n,className:"text-fg-5 hover:text-fg-2",children:u.jsx(ht,{className:"h-4 w-4"})})]}),u.jsx("pre",{className:"overflow-auto p-4 font-mono text-xs leading-relaxed text-fg-2",children:r.map((s,o)=>u.jsxs("div",{children:[u.jsx("span",{className:"mr-3 inline-block select-none text-right text-fg-6",style:{width:`${a}ch`},children:o+1}),s]},o))})]})})}function mW({fold:e,index:t,onRemove:n}){const[r,a]=y.useState(!1),s=`粘贴文本 #${t} · ${e.lineCount}行 · ${cW(e.byteSize)}`;return u.jsxs(u.Fragment,{children:[u.jsxs("div",{className:"group relative flex items-center gap-1.5 rounded-md border border-line bg-elevated/50 px-2.5 py-1.5",children:[u.jsxs("button",{type:"button",onClick:()=>a(!0),className:"flex items-center gap-1.5 font-mono text-xs text-fg-3 transition-colors hover:text-fg",children:[u.jsx(lo,{className:"h-3.5 w-3.5 shrink-0 text-fg-5"}),u.jsx("span",{children:s})]}),u.jsx("button",{type:"button",onClick:n,"aria-label":"移除粘贴文本",className:"flex h-4 w-4 shrink-0 items-center justify-center rounded-full text-fg-5 transition-colors hover:text-fg-2",children:u.jsx(ht,{className:"h-2.5 w-2.5",strokeWidth:2.5})})]}),r&&u.jsx(hW,{text:e.text,label:s,onClose:()=>a(!1)})]})}function $R({onFiles:e,disabled:t,allowed:n}){const r=y.useRef(null);return u.jsxs(u.Fragment,{children:[u.jsx("input",{ref:r,type:"file",accept:FR.join(","),multiple:!0,hidden:!0,onChange:a=>{e(Array.from(a.target.files??[])),a.target.value=""}}),u.jsx("button",{type:"button",onClick:()=>{var a;return(a=r.current)==null?void 0:a.click()},disabled:t||!n,"aria-label":"Attach image",title:n?"附加图片":"当前模型不支持图片",className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-fg-5 transition-colors duration-150 hover:text-fg-3 disabled:cursor-not-allowed disabled:text-fg-6/40",children:u.jsx(P7,{className:"h-4 w-4"})})]})}function qR({attachments:e,foldedTexts:t,error:n,onRemove:r,onRemoveFoldedText:a,className:s}){const o=e.length>0||(t??[]).length>0;return!o&&!n?null:u.jsxs("div",{className:s,children:[o&&u.jsxs("div",{className:"mb-2 flex flex-wrap gap-2",children:[e.map(c=>u.jsxs("div",{className:"group relative",children:[u.jsx(tE,{url:c.url,label:c.filename??"attachment",className:"h-16 w-16 object-cover"}),u.jsx("button",{type:"button",onClick:()=>r(c._id),"aria-label":"Remove attachment",className:"absolute -right-1.5 -top-1.5 flex h-4 w-4 items-center justify-center rounded-full border border-line bg-term text-fg-4 opacity-0 transition-opacity duration-150 hover:text-fg-2 group-hover:opacity-100",children:u.jsx(ht,{className:"h-2.5 w-2.5",strokeWidth:2.5})})]},c._id)),(t??[]).map((c,d)=>u.jsx(mW,{fold:c,index:d+1,onRemove:()=>a==null?void 0:a(c._id)},c._id))]}),n&&u.jsx("div",{className:"mb-2 font-mono text-[11px] text-red-400",children:n})]})}function YR({isListening:e,disabled:t,onStart:n,onStop:r}){const a=y.useRef(!1),s=c=>{if(t)return;c.preventDefault(),a.current=!0,n();const d=()=>{document.removeEventListener("touchend",d),document.removeEventListener("touchcancel",d),a.current=!1,r()};document.addEventListener("touchend",d,{once:!0}),document.addEventListener("touchcancel",d,{once:!0})},o=()=>{if(t||a.current)return;n();const c=()=>{document.removeEventListener("mouseup",c),r()};document.addEventListener("mouseup",c,{once:!0})};return u.jsx("button",{type:"button",disabled:t,onTouchStart:s,onMouseDown:o,onContextMenu:c=>c.preventDefault(),"aria-label":"按住说话",title:"按住说话",style:{WebkitTouchCallout:"none"},className:re("flex shrink-0 select-none touch-none items-center justify-center transition-colors duration-150 disabled:cursor-not-allowed disabled:text-fg-6/40","order-first self-stretch w-12 rounded-xl sm:order-none sm:self-auto sm:h-7 sm:w-7 sm:rounded-md",e?"bg-red-500/15 text-red-400 hover:bg-red-500/25":"text-fg-5 hover:text-fg-3"),children:u.jsx(J7,{className:re("h-6 w-6 sm:h-4 sm:w-4",e&&"animate-pulse")})})}const pW=[.85,1.25,.65,1.4,.75,1.15,.95],ty=4,fA=24;function gW(e){const t=Math.floor(e/60).toString().padStart(2,"0"),n=Math.floor(e%60).toString().padStart(2,"0");return`${t}:${n}`}function bW({volumeLevel:e}){const t=Math.min(Math.max(e,0),1);return u.jsx("div",{className:"flex h-6 items-center gap-1","aria-hidden":"true",children:pW.map((n,r)=>{const a=ty+t*n*(fA-ty),s=Math.max(ty,Math.min(fA,a));return u.jsx("span",{className:"w-1 rounded-full bg-red-400 transition-[height] duration-150 ease-out",style:{height:`${s}px`}},r)})})}function GR({phase:e,transcript:t,interimTranscript:n,editText:r,onEditTextChange:a,onTextareaKeyDown:s,textareaRef:o,wrapperClassName:c}){if(e==="idle")return null;const d=t.length>0||n.length>0;return u.jsx("div",{className:c,children:u.jsxs("div",{className:"max-h-[40vh] overflow-y-auto px-4 py-4",children:[e==="recording"&&u.jsx("div",{className:"text-xl leading-relaxed",children:d?u.jsxs(u.Fragment,{children:[u.jsx("span",{className:"text-fg",children:t}),n&&u.jsx("span",{className:"text-fg-4",children:n})]}):u.jsx("span",{className:"italic text-fg-5",children:"正在聆听…"})}),e==="recognizing"&&u.jsxs("div",{className:"flex items-center gap-3",children:[u.jsx(nn,{className:"h-5 w-5 shrink-0 text-emerald-400 fs-spin"}),u.jsx("span",{className:"font-mono text-sm text-emerald-400",children:"识别中…"}),n&&u.jsx("span",{className:"truncate text-base text-fg-4",children:n})]}),e==="done"&&u.jsx("textarea",{ref:o,value:r,onChange:f=>a(f.target.value),onKeyDown:s,rows:2,placeholder:"识别结果(可编辑)",className:"w-full resize-none bg-transparent text-xl leading-relaxed text-fg placeholder:text-fg-5 focus:outline-none"})]})})}function KR({phase:e,volumeLevel:t,elapsed:n,editText:r,error:a,onCancel:s,onConfirm:o,idleHint:c,className:d}){return e==="idle"?u.jsx("div",{className:d,children:a?u.jsx("span",{className:"font-mono text-[10px] text-red-400",children:a}):c?u.jsx("span",{className:"font-mono text-[10px] text-fg-6",children:c}):null}):e==="done"?u.jsxs("div",{className:d,children:[u.jsx("span",{className:"hidden font-mono text-[10px] text-fg-6 sm:inline",children:"⌘/Ctrl+⏎ 发送 · Esc 取消"}),u.jsxs("div",{className:"ml-auto flex items-center gap-2",children:[u.jsx("button",{type:"button",onClick:s,className:"rounded-md border border-line px-3 py-1 text-xs text-fg-3 transition-colors hover:bg-elevated hover:text-fg",children:"取消"}),u.jsxs("button",{type:"button",onClick:o,disabled:r.trim().length===0,"aria-label":"发送",className:"flex items-center gap-1.5 rounded-md bg-emerald-600 px-3 py-1 text-xs font-medium text-white transition-colors hover:bg-emerald-500 disabled:cursor-not-allowed disabled:bg-fg-6/30 disabled:text-fg-5",children:[u.jsx(af,{className:"h-3.5 w-3.5",strokeWidth:2.5}),u.jsx("span",{children:"发送"})]})]})]}):u.jsx("div",{className:d,children:e==="recording"?u.jsxs(u.Fragment,{children:[u.jsx(bW,{volumeLevel:t}),u.jsxs("span",{className:"inline-flex items-center gap-1.5 font-mono text-[11px] font-medium text-red-400",children:[u.jsx("span",{className:"h-1.5 w-1.5 shrink-0 animate-pulse rounded-full bg-red-400"}),"录音中"]}),u.jsx("span",{className:"font-mono text-[11px] tabular-nums text-fg-4",children:gW(n)})]}):u.jsxs(u.Fragment,{children:[u.jsx(nn,{className:"h-4 w-4 shrink-0 text-emerald-400 fs-spin"}),u.jsx("span",{className:"font-mono text-[11px] text-emerald-400",children:"识别中…"})]})})}/*! Capacitor: https://capacitorjs.com/ - MIT License */var Yu;(function(e){e.Unimplemented="UNIMPLEMENTED",e.Unavailable="UNAVAILABLE"})(Yu||(Yu={}));class ny extends Error{constructor(t,n,r){super(t),this.message=t,this.code=n,this.data=r}}const xW=e=>{var t,n;return e!=null&&e.androidBridge?"android":!((n=(t=e==null?void 0:e.webkit)===null||t===void 0?void 0:t.messageHandlers)===null||n===void 0)&&n.bridge?"ios":"web"},yW=e=>{const t=e.CapacitorCustomPlatform||null,n=e.Capacitor||{},r=n.Plugins=n.Plugins||{},a=()=>t!==null?t.name:xW(e),s=()=>a()!=="web",o=p=>{const b=f.get(p);return!!(b!=null&&b.platforms.has(a())||c(p))},c=p=>{var b;return(b=n.PluginHeaders)===null||b===void 0?void 0:b.find(x=>x.name===p)},d=p=>e.console.error(p),f=new Map,m=(p,b={})=>{const x=f.get(p);if(x)return console.warn(`Capacitor plugin "${p}" already registered. Cannot register plugins twice.`),x.proxy;const E=a(),N=c(p);let S;const T=async()=>(!S&&E in b?S=typeof b[E]=="function"?S=await b[E]():S=b[E]:t!==null&&!S&&"web"in b&&(S=typeof b.web=="function"?S=await b.web():S=b.web),S),C=($,D)=>{var M,G;if(N){const K=N==null?void 0:N.methods.find(ae=>D===ae.name);if(K)return K.rtype==="promise"?ae=>n.nativePromise(p,D.toString(),ae):(ae,Q)=>n.nativeCallback(p,D.toString(),ae,Q);if($)return(M=$[D])===null||M===void 0?void 0:M.bind($)}else{if($)return(G=$[D])===null||G===void 0?void 0:G.bind($);throw new ny(`"${p}" plugin is not implemented on ${E}`,Yu.Unimplemented)}},A=$=>{let D;const M=(...G)=>{const K=T().then(ae=>{const Q=C(ae,$);if(Q){const W=Q(...G);return D=W==null?void 0:W.remove,W}else throw new ny(`"${p}.${$}()" is not implemented on ${E}`,Yu.Unimplemented)});return $==="addListener"&&(K.remove=async()=>D()),K};return M.toString=()=>`${$.toString()}() { [capacitor code] }`,Object.defineProperty(M,"name",{value:$,writable:!1,configurable:!1}),M},k=A("addListener"),R=A("removeListener"),O=($,D)=>{const M=k({eventName:$},D),G=async()=>{const ae=await M;R({eventName:$,callbackId:ae},D)},K=new Promise(ae=>M.then(()=>ae({remove:G})));return K.remove=async()=>{console.warn("Using addListener() without 'await' is deprecated."),await G()},K},j=new Proxy({},{get($,D){switch(D){case"$$typeof":return;case"toJSON":return()=>({});case"addListener":return N?O:k;case"removeListener":return R;default:return A(D)}}});return r[p]=j,f.set(p,{name:p,proxy:j,platforms:new Set([...Object.keys(b),...N?[E]:[]])}),j};return n.convertFileSrc||(n.convertFileSrc=p=>p),n.getPlatform=a,n.handleError=d,n.isNativePlatform=s,n.isPluginAvailable=o,n.registerPlugin=m,n.Exception=ny,n.DEBUG=!!n.DEBUG,n.isLoggingEnabled=!!n.isLoggingEnabled,n},vW=e=>e.Capacitor=yW(e),gp=vW(typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}),w0=gp.registerPlugin;class nE{constructor(){this.listeners={},this.retainedEventArguments={},this.windowListeners={}}addListener(t,n){let r=!1;this.listeners[t]||(this.listeners[t]=[],r=!0),this.listeners[t].push(n);const s=this.windowListeners[t];s&&!s.registered&&this.addWindowListener(s),r&&this.sendRetainedArgumentsForEvent(t);const o=async()=>this.removeListener(t,n);return Promise.resolve({remove:o})}async removeAllListeners(){this.listeners={};for(const t in this.windowListeners)this.removeWindowListener(this.windowListeners[t]);this.windowListeners={}}notifyListeners(t,n,r){const a=this.listeners[t];if(!a){if(r){let s=this.retainedEventArguments[t];s||(s=[]),s.push(n),this.retainedEventArguments[t]=s}return}a.forEach(s=>s(n))}hasListeners(t){var n;return!!(!((n=this.listeners[t])===null||n===void 0)&&n.length)}registerWindowListener(t,n){this.windowListeners[n]={registered:!1,windowEventName:t,pluginEventName:n,handler:r=>{this.notifyListeners(n,r)}}}unimplemented(t="not implemented"){return new gp.Exception(t,Yu.Unimplemented)}unavailable(t="not available"){return new gp.Exception(t,Yu.Unavailable)}async removeListener(t,n){const r=this.listeners[t];if(!r)return;const a=r.indexOf(n);a!==-1&&this.listeners[t].splice(a,1),this.listeners[t].length||this.removeWindowListener(this.windowListeners[t])}addWindowListener(t){window.addEventListener(t.windowEventName,t.handler),t.registered=!0}removeWindowListener(t){t&&(window.removeEventListener(t.windowEventName,t.handler),t.registered=!1)}sendRetainedArgumentsForEvent(t){const n=this.retainedEventArguments[t];n&&(delete this.retainedEventArguments[t],n.forEach(r=>{this.notifyListeners(t,r)}))}}const hA=e=>encodeURIComponent(e).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape),mA=e=>e.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent);class EW extends nE{async getCookies(){const t=document.cookie,n={};return t.split(";").forEach(r=>{if(r.length<=0)return;let[a,s]=r.replace(/=/,"CAP_COOKIE").split("CAP_COOKIE");a=mA(a).trim(),s=mA(s).trim(),n[a]=s}),n}async setCookie(t){try{const n=hA(t.key),r=hA(t.value),a=t.expires?`; expires=${t.expires.replace("expires=","")}`:"",s=(t.path||"/").replace("path=",""),o=t.url!=null&&t.url.length>0?`domain=${t.url}`:"";document.cookie=`${n}=${r||""}${a}; path=${s}; ${o};`}catch(n){return Promise.reject(n)}}async deleteCookie(t){try{document.cookie=`${t.key}=; Max-Age=0`}catch(n){return Promise.reject(n)}}async clearCookies(){try{const t=document.cookie.split(";")||[];for(const n of t)document.cookie=n.replace(/^ +/,"").replace(/=.*/,`=;expires=${new Date().toUTCString()};path=/`)}catch(t){return Promise.reject(t)}}async clearAllCookies(){try{await this.clearCookies()}catch(t){return Promise.reject(t)}}}w0("CapacitorCookies",{web:()=>new EW});const NW=async e=>new Promise((t,n)=>{const r=new FileReader;r.onload=()=>{const a=r.result;t(a.indexOf(",")>=0?a.split(",")[1]:a)},r.onerror=a=>n(a),r.readAsDataURL(e)}),_W=(e={})=>{const t=Object.keys(e);return Object.keys(e).map(a=>a.toLocaleLowerCase()).reduce((a,s,o)=>(a[s]=e[t[o]],a),{})},TW=(e,t=!0)=>e?Object.entries(e).reduce((r,a)=>{const[s,o]=a;let c,d;return Array.isArray(o)?(d="",o.forEach(f=>{c=t?encodeURIComponent(f):f,d+=`${s}=${c}&`}),d.slice(0,-1)):(c=t?encodeURIComponent(o):o,d=`${s}=${c}`),`${r}&${d}`},"").substr(1):null,SW=(e,t={})=>{const n=Object.assign({method:e.method||"GET",headers:e.headers},t),a=_W(e.headers)["content-type"]||"";if(typeof e.data=="string")n.body=e.data;else if(a.includes("application/x-www-form-urlencoded")){const s=new URLSearchParams;for(const[o,c]of Object.entries(e.data||{}))s.set(o,c);n.body=s.toString()}else if(a.includes("multipart/form-data")||e.data instanceof FormData){const s=new FormData;if(e.data instanceof FormData)e.data.forEach((c,d)=>{s.append(d,c)});else for(const c of Object.keys(e.data))s.append(c,e.data[c]);n.body=s;const o=new Headers(n.headers);o.delete("content-type"),n.headers=o}else(a.includes("application/json")||typeof e.data=="object")&&(n.body=JSON.stringify(e.data));return n};class wW extends nE{async request(t){const n=SW(t,t.webFetchExtra),r=TW(t.params,t.shouldEncodeUrlParams),a=r?`${t.url}?${r}`:t.url,s=await fetch(a,n),o=s.headers.get("content-type")||"";let{responseType:c="text"}=s.ok?t:{};o.includes("application/json")&&(c="json");let d,f;switch(c){case"arraybuffer":case"blob":f=await s.blob(),d=await NW(f);break;case"json":d=await s.json();break;case"document":case"text":default:d=await s.text()}const m={};return s.headers.forEach((p,b)=>{m[b]=p}),{data:d,headers:m,status:s.status,url:s.url}}async get(t){return this.request(Object.assign(Object.assign({},t),{method:"GET"}))}async post(t){return this.request(Object.assign(Object.assign({},t),{method:"POST"}))}async put(t){return this.request(Object.assign(Object.assign({},t),{method:"PUT"}))}async patch(t){return this.request(Object.assign(Object.assign({},t),{method:"PATCH"}))}async delete(t){return this.request(Object.assign(Object.assign({},t),{method:"DELETE"}))}}w0("CapacitorHttp",{web:()=>new wW});var pA;(function(e){e.Dark="DARK",e.Light="LIGHT",e.Default="DEFAULT"})(pA||(pA={}));var gA;(function(e){e.StatusBar="StatusBar",e.NavigationBar="NavigationBar"})(gA||(gA={}));class AW extends nE{async setStyle(){this.unavailable("not available for web")}async setAnimation(){this.unavailable("not available for web")}async show(){this.unavailable("not available for web")}async hide(){this.unavailable("not available for web")}}w0("SystemBars",{web:()=>new AW});const CW="modulepreload",kW=function(e){return"/"+e},bA={},OW=function(t,n,r){let a=Promise.resolve();if(n&&n.length>0){let o=function(f){return Promise.all(f.map(m=>Promise.resolve(m).then(p=>({status:"fulfilled",value:p}),p=>({status:"rejected",reason:p}))))};document.getElementsByTagName("link");const c=document.querySelector("meta[property=csp-nonce]"),d=(c==null?void 0:c.nonce)||(c==null?void 0:c.getAttribute("nonce"));a=o(n.map(f=>{if(f=kW(f),f in bA)return;bA[f]=!0;const m=f.endsWith(".css"),p=m?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${f}"]${p}`))return;const b=document.createElement("link");if(b.rel=m?"stylesheet":CW,m||(b.as="script"),b.crossOrigin="",b.href=f,d&&b.setAttribute("nonce",d),document.head.appendChild(b),m)return new Promise((x,E)=>{b.addEventListener("load",x),b.addEventListener("error",()=>E(new Error(`Unable to preload CSS for ${f}`)))})}))}function s(o){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=o,window.dispatchEvent(c),!c.defaultPrevented)throw o}return a.then(o=>{for(const c of o||[])c.status==="rejected"&&s(c.reason);return t().catch(s)})},Eu=w0("SpeechRecognition",{web:()=>OW(()=>import("./web-hjjb2cvt.js"),[]).then(e=>new e.SpeechRecognitionWeb)});function IW(e,t){const n=e.length,r=new ArrayBuffer(44+n*2),a=new DataView(r),s=(o,c)=>{for(let d=0;d<c.length;d++)a.setUint8(o+d,c.charCodeAt(d))};s(0,"RIFF"),a.setUint32(4,36+n*2,!0),s(8,"WAVE"),s(12,"fmt "),a.setUint32(16,16,!0),a.setUint16(20,1,!0),a.setUint16(22,1,!0),a.setUint32(24,t,!0),a.setUint32(28,t*2,!0),a.setUint16(32,2,!0),a.setUint16(34,16,!0),s(36,"data"),a.setUint32(40,n*2,!0);for(let o=0;o<n;o++){const c=Math.max(-1,Math.min(1,e[o]));a.setInt16(44+o*2,c<0?c*32768:c*32767,!0)}return new Blob([r],{type:"audio/wav"})}const hv=gp.isNativePlatform(),ry=!hv&&typeof window<"u"?window.SpeechRecognition??window.webkitSpeechRecognition:void 0,ay=16e3;function RW(e="zh-CN"){const[t,n]=y.useState(!1),[r,a]=y.useState(""),[s,o]=y.useState(""),[c,d]=y.useState(null),[f,m]=y.useState(0),[p,b]=y.useState("idle"),x=y.useRef(null),E=y.useRef(!1),N=y.useRef([]),S=y.useRef(!1),T=y.useRef(null),C=y.useRef(!1),A=y.useRef(""),k=y.useRef(null),R=y.useRef(null),O=y.useRef(null),j=y.useRef([]),$=y.useRef(!1),D=!0,M=y.useCallback(async()=>{var B,me,se;(B=O.current)==null||B.disconnect(),(me=R.current)==null||me.getTracks().forEach(z=>z.stop()),await((se=k.current)==null?void 0:se.close().catch(()=>{}));const H=j.current;if(j.current=[],O.current=null,R.current=null,k.current=null,H.length===0||$.current){n(!1),b("idle");return}o("识别中…"),b("recognizing");const F=H.reduce((z,fe)=>z+fe.length,0),Y=new Float32Array(F);let L=0;for(const z of H)Y.set(z,L),L+=z.length;const P=IW(Y,ay),J=new FormData;J.append("audio",P,"recording.wav");try{const z=await fetch("/api/transcribe",{method:"POST",body:J});if($.current)return;if(z.ok){const{text:fe}=await z.json();fe?(a(fe),b("done")):b("idle")}else{const fe=await z.json().catch(()=>({error:`HTTP ${z.status}`}));d(fe.error??`HTTP ${z.status}`),b("idle")}}catch(z){d(`语音识别失败:${z instanceof Error?z.message:String(z)}`),b("idle")}finally{o(""),n(!1)}},[]),G=y.useCallback(async()=>{if(E.current=!0,T.current&&(clearTimeout(T.current),T.current=null),hv){await Eu.stop().catch(()=>{});for(const H of N.current)await H.remove().catch(()=>{});N.current=[],n(!1),o("")}else x.current?x.current.stop():k.current?await M():(n(!1),b("idle"))},[M]),K=y.useCallback(async()=>{var L;$.current=!1,a(""),o(""),d(null),b("idle");const{available:H}=await Eu.available();if(!H){d("当前设备不支持语音识别");return}if((await Eu.requestPermissions()).speechRecognition!=="granted"){d("请允许语音识别权限");return}const Y=[];Y.push(await Eu.addListener("partialResults",P=>{o(P.matches[0]??"")})),Y.push(await Eu.addListener("listeningState",P=>{const J=P.status==="started";n(J),J&&b("recording"),J||o("")})),N.current=Y;try{const P=await Eu.start({language:e,partialResults:!0,maxResults:1});(L=P.matches)!=null&&L.length&&a(J=>J+P.matches.join(""))}catch(P){d(`语音识别错误:${P instanceof Error?P.message:String(P)}`);for(const J of Y)await J.remove().catch(()=>{});N.current=[]}},[e]),ae=y.useCallback(()=>{if(!ry)return!1;$.current=!1,a(""),o(""),A.current="",d(null),b("idle"),E.current=!1;const H=new ry;H.lang=e,H.continuous=!0,H.interimResults=!0,H.maxAlternatives=1,H.onstart=()=>{n(!0),b("recording"),S.current=!1,T.current=setTimeout(()=>{!S.current&&!E.current&&(C.current=!0,E.current=!0,H.stop(),d("语音识别服务不可用(Chrome/Edge 需连接 Google 服务器),下次将使用服务端识别"))},5e3)},H.onresult=F=>{S.current=!0,T.current&&(clearTimeout(T.current),T.current=null);let Y="",L="";for(let P=F.resultIndex;P<F.results.length;P++){const J=F.results[P][0].transcript;F.results[P].isFinal?Y+=J:L+=J}Y&&a(P=>P+Y),o(L),A.current=L},H.onerror=F=>{switch(F.error!=="no-speech"&&F.error!=="aborted"&&(E.current=!0),F.error){case"not-allowed":d("请允许麦克风权限");break;case"network":d("网络错误,请检查连接");break;case"no-speech":case"aborted":return;default:d(`语音识别错误:${F.error}`)}},H.onend=()=>{if(E.current&&A.current&&a(F=>F+A.current),o(""),A.current="",!E.current)try{H.start();return}catch{}n(!1),x.current=null},x.current=H;try{return H.start(),!0}catch{return!1}},[e]),Q=y.useCallback(async()=>{$.current=!1,a(""),o(""),d(null),b("idle");try{const P=await fetch("/api/transcribe/status"),{available:J}=await P.json();if(!J){d("语音识别服务未就绪,请稍后重试");return}}catch{d("无法连接语音识别服务");return}let H;try{H=await navigator.mediaDevices.getUserMedia({audio:{sampleRate:ay,channelCount:1}})}catch{d("请允许麦克风权限");return}const F=new AudioContext({sampleRate:ay}),Y=F.createMediaStreamSource(H),L=F.createScriptProcessor(4096,1,1);j.current=[],L.onaudioprocess=P=>{j.current.push(new Float32Array(P.inputBuffer.getChannelData(0)))},Y.connect(L),L.connect(F.destination),k.current=F,R.current=H,O.current=L,n(!0),b("recording")},[]),W=y.useCallback(()=>{hv?K():ry&&!C.current&&ae()||Q()},[K,ae,Q]);y.useEffect(()=>{if(!t){m(0);return}if(x.current)return;let H=!1,F=null,Y=null,L=0;return(async()=>{try{if(F=await navigator.mediaDevices.getUserMedia({audio:!0}),H){F.getTracks().forEach(z=>z.stop());return}Y=new AudioContext;const P=Y.createMediaStreamSource(F),J=Y.createAnalyser();J.fftSize=256,P.connect(J);const B=new Uint8Array(J.frequencyBinCount);let me=0;const se=()=>{if(H)return;J.getByteFrequencyData(B);const z=performance.now();if(z-me>80){let fe=0;for(let Ie=0;Ie<B.length;Ie++)fe+=B[Ie];m(fe/(B.length*255)),me=z}L=requestAnimationFrame(se)};L=requestAnimationFrame(se)}catch{}})(),()=>{H=!0,cancelAnimationFrame(L),F==null||F.getTracks().forEach(P=>P.stop()),Y==null||Y.close().catch(()=>{}),m(0)}},[t]),y.useEffect(()=>{!t&&p==="recording"&&b(r?"done":"idle")},[t,p,r]),y.useEffect(()=>()=>{var H,F,Y,L;E.current=!0,(H=x.current)==null||H.stop(),(F=O.current)==null||F.disconnect(),(Y=R.current)==null||Y.getTracks().forEach(P=>P.stop()),(L=k.current)==null||L.close().catch(()=>{});for(const P of N.current)P.remove().catch(()=>{})},[]);const V=y.useCallback(()=>{$.current=!0,a(""),o(""),A.current="",b("idle")},[]);return{isSupported:D,isListening:t,phase:p,transcript:r,interimTranscript:s,error:c,volumeLevel:f,start:W,stop:G,resetTranscript:V}}const MW=240,jW=1e3;function VR(e){const t=RW(),[n,r]=y.useState(""),[a,s]=y.useState(0),o=y.useRef(null),c=y.useRef(null),d=y.useRef(0);y.useEffect(()=>(t.phase==="recording"?(d.current=Date.now(),s(0),c.current=setInterval(()=>{s(Math.floor((Date.now()-d.current)/1e3))},jW)):c.current&&(clearInterval(c.current),c.current=null),()=>{c.current&&(clearInterval(c.current),c.current=null)}),[t.phase]),y.useEffect(()=>{t.phase==="done"&&(r(t.transcript),requestAnimationFrame(()=>{const b=o.current;b&&(b.focus(),b.setSelectionRange(b.value.length,b.value.length))}))},[t.phase,t.transcript]),y.useLayoutEffect(()=>{if(t.phase!=="done")return;const b=o.current;b&&(b.style.height="auto",b.style.height=`${Math.min(b.scrollHeight,MW)}px`)},[t.phase,n]);const f=y.useCallback(()=>{t.stop(),t.resetTranscript(),r("")},[t]),m=y.useCallback(async()=>{const b=n.trim();if(!b){f();return}await e(b)!==!1&&(t.resetTranscript(),r(""))},[n,e,f,t]);y.useEffect(()=>{if(t.phase==="idle")return;const b=x=>{if(x.key==="Escape"&&t.phase!=="recognizing"){x.preventDefault(),f();return}if(t.phase==="done"&&x.key==="Enter"&&(x.metaKey||x.ctrlKey)){if(x.isComposing)return;x.preventDefault(),m()}};return window.addEventListener("keydown",b),()=>window.removeEventListener("keydown",b)},[t.phase,f,m]);const p=y.useCallback(b=>{b.nativeEvent.isComposing||b.keyCode===229||b.key==="Enter"&&(b.metaKey||b.ctrlKey)&&(b.preventDefault(),m())},[m]);return{stt:t,editText:n,setEditText:r,elapsed:a,textareaRef:o,cancel:f,confirm:m,handleTextareaKeyDown:p}}const io=ei(e=>({agents:[],loaded:!1,loadAgents:async()=>{const t=ze.getState().activeRepoId;try{const n=t?await vI(t):await bI();e({agents:n,loaded:!0})}catch{e({loaded:!0})}}}));function DW(e){if(typeof e!="string")return e;const t=e.trim();if(t)try{return JSON.parse(t)}catch{return t}}function Gn(e){return e&&typeof e=="object"?e:null}function Cl(e){const t=Gn(e);return t&&"properties"in t?t.properties:e}function LW(e){const t=Gn(e);return typeof(t==null?void 0:t.type)=="string"?t.type:void 0}function PW(e){const t=Gn(Cl(e));if(!t)return null;const n=Gn(t.info);if(n&&typeof n.id=="string"){const a=Array.isArray(t.parts)?t.parts:void 0;return{...n,...a?{parts:a}:{}}}if(typeof t.id=="string"&&typeof t.role=="string")return t;const r=Gn(t.message);return r&&typeof r.id=="string"?r:null}function BW(e){const t=Gn(Cl(e));if(!t)return{};const n=Gn(t.part)??t;return typeof n.type!="string"?{}:{messageId:typeof n.messageID=="string"&&n.messageID||typeof n.messageId=="string"&&n.messageId||typeof t.messageID=="string"&&t.messageID||typeof t.messageId=="string"&&t.messageId||void 0,part:n}}function UW(e){const t=Gn(Cl(e));if(!t||t.field!=="text")return null;const n=typeof t.messageID=="string"?t.messageID:null,r=typeof t.partID=="string"?t.partID:null,a=typeof t.delta=="string"?t.delta:null;return!n||!r||a===null?null:{messageId:n,partId:r,delta:a}}function FW(e){const t=Cl(e);if(Array.isArray(t))return t;const n=Gn(t);return n&&Array.isArray(n.todos)?n.todos:[]}function ci(e){return typeof e=="number"?e:0}function zW(e){const t=Gn(Cl(e));if(!t||typeof t.id!="string")return null;const n={id:t.id};typeof t.title=="string"&&(n.title=t.title),typeof t.agent=="string"&&(n.agent=t.agent),typeof t.cost=="number"&&(n.cost=t.cost);const r=typeof t.parentID=="string"?t.parentID:typeof t.parent_id=="string"?t.parent_id:void 0;r&&(n.parentID=r);const a=Gn(t.tokens),s=typeof t.tokens_input=="number"||typeof t.tokens_output=="number";if(a||s){const c=a?Gn(a.cache):null;n.tokens={input:ci(a==null?void 0:a.input)||ci(t.tokens_input),output:ci(a==null?void 0:a.output)||ci(t.tokens_output),reasoning:ci(a==null?void 0:a.reasoning)||ci(t.tokens_reasoning),cache:{read:ci(c==null?void 0:c.read)||ci(t.tokens_cache_read),write:ci(c==null?void 0:c.write)||ci(t.tokens_cache_write)}}}const o=Gn(t.model);return o&&(n.model={providerID:typeof o.providerID=="string"?o.providerID:void 0,modelID:typeof o.modelID=="string"?o.modelID:void 0,variant:typeof o.variant=="string"?o.variant:void 0}),n}function HW(e){const t=Gn(Cl(e));if(!t)return null;if(typeof t.message=="string")return t.message;const n=Gn(t.error);if(n){const r=Gn(n.data);if(typeof(r==null?void 0:r.message)=="string")return`${n.name??"Error"}: ${r.message}`;if(typeof n.message=="string")return`${n.name??"Error"}: ${n.message}`;if(typeof n.name=="string")return String(n.name)}return typeof t.reason=="string"?t.reason:null}function $W(e){const t=Cl(e);if(typeof t=="string")return t;const n=Gn(t);if(typeof(n==null?void 0:n.status)=="string")return n.status;const r=Gn(n==null?void 0:n.status);return typeof(r==null?void 0:r.type)=="string"?r.type:typeof(n==null?void 0:n.type)=="string"?n.type:null}function qW(e,t,n,r){switch(e==="message"||e===""?LW(t)??e:e){case"message.updated":{const s=PW(t);s&&r.updateMessage(n,s);break}case"session.updated":{const s=zW(t);s&&r.updateSessionInfo(s);break}case"message.part.updated":{const{messageId:s,part:o}=BW(t);o&&s&&r.updateMessagePart(n,s,o);break}case"message.part.delta":{const s=UW(t);s&&r.appendMessagePartDelta(n,s.messageId,s.partId,s.delta);break}case"todo.updated":{r.updateTodos(n,FW(t));break}case"session.status":{const s=$W(t);s&&r.setSessionStatus(n,s);break}case"session.idle":{r.setSessionStatus(n,"idle");break}case"session.error":{const s=HW(t);r.setSessionStatus(n,"error",s??void 0);break}}}const YW=600*1e3;class GW{constructor(t,n){Pt(this,"sessionId");Pt(this,"idleTimer",null);Pt(this,"active",!1);Pt(this,"alive",!0);Pt(this,"callbacks");this.sessionId=t,this.callbacks=n,this.resetIdleTimer()}dispatch(t,n){if(!this.alive)return;this.resetIdleTimer();const r=Le.getState();qW(t,n,this.sessionId,r)}activate(){this.active=!0,this.clearIdleTimer()}deactivate(){this.active=!1,this.resetIdleTimer()}refreshOnIdle(){Le.getState().refreshSessionData(this.sessionId)}stop(){this.alive=!1,this.clearIdleTimer()}resetIdleTimer(){this.clearIdleTimer(),!this.active&&(this.idleTimer=setTimeout(()=>{this.callbacks.onWorkerIdle(this.sessionId)},YW))}clearIdleTimer(){this.idleTimer&&(clearTimeout(this.idleTimer),this.idleTimer=null)}}const KW=1e3,VW=3e4;class WW{constructor(t,n){Pt(this,"source",null);Pt(this,"reconnectTimer",null);Pt(this,"attempts",0);Pt(this,"disposed",!1);Pt(this,"repoId");Pt(this,"onEvent");this.repoId=t,this.onEvent=n}start(){this.connect()}stop(){var t;this.disposed=!0,this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),(t=this.source)==null||t.close(),this.source=null}connect(){if(this.disposed)return;const t=Wz(this.repoId),n=new EventSource(t);this.source=n,n.onopen=()=>{this.attempts=0},n.onmessage=a=>{this.handleRaw("message",a)};const r=["message.updated","message.part.updated","message.part.delta","message.removed","todo.updated","session.status","session.idle","session.error","session.updated"];for(const a of r)n.addEventListener(a,s=>{this.handleRaw(a,s)});n.onerror=()=>{if(!(this.disposed||!this.source)&&this.source.readyState===EventSource.CLOSED){this.source.close(),this.source=null;const a=Math.min(KW*2**this.attempts,VW);this.attempts++,this.reconnectTimer=setTimeout(()=>this.connect(),a)}}}handleRaw(t,n){if(!(n instanceof MessageEvent))return;co.tick("sse");const r=DW(n.data);if(r===void 0)return;const a=this.extractSessionId(r);if(!a)return;let s=t;if(t==="message"||t===""){const o=r&&typeof r=="object"?r:null;typeof(o==null?void 0:o.type)=="string"&&(s=o.type)}this.onEvent(a,s,r)}extractSessionId(t){if(!t||typeof t!="object")return null;const n=t;if(n.properties&&typeof n.properties=="object"){const r=n.properties;if(typeof r.sessionID=="string")return r.sessionID;if(typeof r.id=="string")return r.id}return typeof n.sessionID=="string"?n.sessionID:typeof n.sessionId=="string"?n.sessionId:null}}const XW=6e4;class QW{constructor(t){Pt(this,"timer",null);Pt(this,"paused",!1);Pt(this,"callbacks");this.callbacks=t}start(){this.tick(),this.timer=setInterval(()=>{this.paused||this.tick()},XW)}stop(){this.timer&&(clearInterval(this.timer),this.timer=null)}pause(){this.paused=!0}resume(){this.paused=!1,this.tick()}tick(){const t=ze.getState().activeRepoId;t&&(Le.getState().loadSessions(),Xz(t).then(n=>{const r={};for(const[a,s]of Object.entries(n))r[a]=s.type??"idle";Le.getState().bulkSetStatuses(r);for(const[a,s]of Object.entries(r))(s==="busy"||s==="retry")&&this.callbacks.ensureWorker(a)}).catch(()=>{}))}}class ZW{constructor(){Pt(this,"workers",new Map);Pt(this,"dispatcher",null);Pt(this,"supervisor",null);Pt(this,"visibilityHandler",null)}start(t){this.stop();const n={onWorkerIdle:r=>this.removeWorker(r)};this.dispatcher=new WW(t,(r,a,s)=>{const o=this.ensureWorker(r,n);if(a==="session.idle"||a==="session.status"){const c=Le.getState().sessionStatuses[r];o.dispatch(a,s);const d=Le.getState().sessionStatuses[r];c&&c!=="idle"&&d==="idle"&&o.refreshOnIdle()}else o.dispatch(a,s)}),this.dispatcher.start(),this.supervisor=new QW({ensureWorker:r=>this.ensureWorker(r,n)}),this.supervisor.start(),this.visibilityHandler=()=>{var r,a;document.hidden?(r=this.supervisor)==null||r.pause():(a=this.supervisor)==null||a.resume()},document.addEventListener("visibilitychange",this.visibilityHandler)}stop(){var t,n;(t=this.dispatcher)==null||t.stop(),this.dispatcher=null,(n=this.supervisor)==null||n.stop(),this.supervisor=null;for(const r of this.workers.values())r.stop();this.workers.clear(),this.visibilityHandler&&(document.removeEventListener("visibilitychange",this.visibilityHandler),this.visibilityHandler=null)}activateSession(t){for(const a of this.workers.values())a.sessionId!==t&&a.deactivate();if(!t)return;const n={onWorkerIdle:a=>this.removeWorker(a)};this.ensureWorker(t,n).activate(),Le.getState().refreshSessionData(t)}deactivateSession(t){var n;(n=this.workers.get(t))==null||n.deactivate()}ensureWorker(t,n){let r=this.workers.get(t);return r||(r=new GW(t,n),this.workers.set(t,r),co.setGauge("workers",this.workers.size)),r}removeWorker(t){const n=Le.getState().activeSessionId;if(t===n)return;const r=this.workers.get(t);r&&(r.stop(),this.workers.delete(t),co.setGauge("workers",this.workers.size))}}const bp=new ZW,xA=(function(e,t,n){const r=jf(n);if(!e||!e.type||!e.children)throw new Error("Expected parent node");if(typeof t=="number"){if(t<0||t===Number.POSITIVE_INFINITY)throw new Error("Expected positive finite number as index")}else if(t=e.children.indexOf(t),t<0)throw new Error("Expected child node or index");for(;++t<e.children.length;)if(r(e.children[t],t,e))return e.children[t]}),kl=(function(e){if(e==null)return tX;if(typeof e=="string")return eX(e);if(typeof e=="object")return JW(e);if(typeof e=="function")return rE(e);throw new Error("Expected function, string, or array as `test`")});function JW(e){const t=[];let n=-1;for(;++n<e.length;)t[n]=kl(e[n]);return rE(r);function r(...a){let s=-1;for(;++s<t.length;)if(t[s].apply(this,a))return!0;return!1}}function eX(e){return rE(t);function t(n){return n.tagName===e}}function rE(e){return t;function t(n,r,a){return!!(nX(n)&&e.call(this,n,typeof r=="number"?r:void 0,a||void 0))}}function tX(e){return!!(e&&typeof e=="object"&&"type"in e&&e.type==="element"&&"tagName"in e&&typeof e.tagName=="string")}function nX(e){return e!==null&&typeof e=="object"&&"type"in e&&"tagName"in e}const yA=/\n/g,vA=/[\t ]+/g,mv=kl("br"),EA=kl(cX),rX=kl("p"),NA=kl("tr"),aX=kl(["datalist","head","noembed","noframes","noscript","rp","script","style","template","title",uX,dX]),WR=kl(["address","article","aside","blockquote","body","caption","center","dd","dialog","dir","dl","dt","div","figure","figcaption","footer","form,","h1","h2","h3","h4","h5","h6","header","hgroup","hr","html","legend","li","listing","main","menu","nav","ol","p","plaintext","pre","section","ul","xmp"]);function iX(e,t){const n=t||{},r="children"in e?e.children:[],a=WR(e),s=ZR(e,{whitespace:n.whitespace||"normal"}),o=[];(e.type==="text"||e.type==="comment")&&o.push(...QR(e,{breakBefore:!0,breakAfter:!0}));let c=-1;for(;++c<r.length;)o.push(...XR(r[c],e,{whitespace:s,breakBefore:c?void 0:a,breakAfter:c<r.length-1?mv(r[c+1]):a}));const d=[];let f;for(c=-1;++c<o.length;){const m=o[c];typeof m=="number"?f!==void 0&&m>f&&(f=m):m&&(f!==void 0&&f>-1&&d.push(`
547
547
  `.repeat(f)||" "),f=-1,d.push(m))}return d.join("")}function XR(e,t,n){return e.type==="element"?sX(e,t,n):e.type==="text"?n.whitespace==="normal"?QR(e,n):oX(e):[]}function sX(e,t,n){const r=ZR(e,n),a=e.children||[];let s=-1,o=[];if(aX(e))return o;let c,d;for(mv(e)||NA(e)&&xA(t,e,NA)?d=`
548
548
  `:rX(e)?(c=2,d=2):WR(e)&&(c=1,d=1);++s<a.length;)o=o.concat(XR(a[s],e,{whitespace:r,breakBefore:s?void 0:c,breakAfter:s<a.length-1?mv(a[s+1]):d}));return EA(e)&&xA(t,e,EA)&&o.push(" "),c&&o.unshift(c),d&&o.push(d),o}function QR(e,t){const n=String(e.value),r=[],a=[];let s=0;for(;s<=n.length;){yA.lastIndex=s;const d=yA.exec(n),f=d&&"index"in d?d.index:n.length;r.push(lX(n.slice(s,f).replace(/[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/g,""),s===0?t.breakBefore:!0,f===n.length?t.breakAfter:!0)),s=f+1}let o=-1,c;for(;++o<r.length;)r[o].charCodeAt(r[o].length-1)===8203||o<r.length-1&&r[o+1].charCodeAt(0)===8203?(a.push(r[o]),c=void 0):r[o]?(typeof c=="number"&&a.push(c),a.push(r[o]),c=0):(o===0||o===r.length-1)&&a.push(0);return a}function oX(e){return[String(e.value)]}function lX(e,t,n){const r=[];let a=0,s;for(;a<e.length;){vA.lastIndex=a;const o=vA.exec(e);s=o?o.index:e.length,!a&&!s&&o&&!t&&r.push(""),a!==s&&r.push(e.slice(a,s)),a=o?s+o[0].length:s}return a!==s&&!n&&r.push(""),r.join(" ")}function ZR(e,t){if(e.type==="element"){const n=e.properties||{};switch(e.tagName){case"listing":case"plaintext":case"xmp":return"pre";case"nobr":return"nowrap";case"pre":return n.wrap?"pre-wrap":"pre";case"td":case"th":return n.noWrap?"nowrap":t.whitespace;case"textarea":return"pre-wrap"}}return t.whitespace}function uX(e){return!!(e.properties||{}).hidden}function cX(e){return e.tagName==="td"||e.tagName==="th"}function dX(e){return e.tagName==="dialog"&&!(e.properties||{}).open}function fX(e){const t=e.regex,n=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),r="decltype\\(auto\\)",a="[a-zA-Z_]\\w*::",o="(?!struct)("+r+"|"+t.optional(a)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",c={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},f={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)"+"|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},m={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},p={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(f,{className:"string"}),{className:"string",begin:/<.*?>/},n,e.C_BLOCK_COMMENT_MODE]},b={className:"title",begin:t.optional(a)+e.IDENT_RE,relevance:0},x=t.optional(a)+e.IDENT_RE+"\\s*\\(",E=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],N=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],S=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],T=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],k={type:N,keyword:E,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:S},R={className:"function.dispatch",relevance:0,keywords:{_hint:T},begin:t.concat(/\b/,`(?!${E.join("|")})`,e.IDENT_RE,t.lookahead(/(<[^<>]+>|)\s*\(/))},O=[R,p,c,n,e.C_BLOCK_COMMENT_MODE,m,f],j={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:k,contains:O.concat([{begin:/\(/,end:/\)/,keywords:k,contains:O.concat(["self"]),relevance:0}]),relevance:0},$={className:"function",begin:"("+o+"[\\*&\\s]+)+"+x,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:k,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:r,keywords:k,relevance:0},{begin:x,returnBegin:!0,contains:[b],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[f,m]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:k,relevance:0,contains:[n,e.C_BLOCK_COMMENT_MODE,f,m,c,{begin:/\(/,end:/\)/,keywords:k,relevance:0,contains:["self",n,e.C_BLOCK_COMMENT_MODE,f,m,c]}]},c,n,e.C_BLOCK_COMMENT_MODE,p]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:k,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(j,$,R,O,[p,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:k,contains:["self",c]},{begin:e.IDENT_RE+"::",keywords:k},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}function hX(e){const t={type:["boolean","byte","word","String"],built_in:["KeyboardController","MouseController","SoftwareSerial","EthernetServer","EthernetClient","LiquidCrystal","RobotControl","GSMVoiceCall","EthernetUDP","EsploraTFT","HttpClient","RobotMotor","WiFiClient","GSMScanner","FileSystem","Scheduler","GSMServer","YunClient","YunServer","IPAddress","GSMClient","GSMModem","Keyboard","Ethernet","Console","GSMBand","Esplora","Stepper","Process","WiFiUDP","GSM_SMS","Mailbox","USBHost","Firmata","PImage","Client","Server","GSMPIN","FileIO","Bridge","Serial","EEPROM","Stream","Mouse","Audio","Servo","File","Task","GPRS","WiFi","Wire","TFT","GSM","SPI","SD"],_hints:["setup","loop","runShellCommandAsynchronously","analogWriteResolution","retrieveCallingNumber","printFirmwareVersion","analogReadResolution","sendDigitalPortPair","noListenOnLocalhost","readJoystickButton","setFirmwareVersion","readJoystickSwitch","scrollDisplayRight","getVoiceCallStatus","scrollDisplayLeft","writeMicroseconds","delayMicroseconds","beginTransmission","getSignalStrength","runAsynchronously","getAsynchronously","listenOnLocalhost","getCurrentCarrier","readAccelerometer","messageAvailable","sendDigitalPorts","lineFollowConfig","countryNameWrite","runShellCommand","readStringUntil","rewindDirectory","readTemperature","setClockDivider","readLightSensor","endTransmission","analogReference","detachInterrupt","countryNameRead","attachInterrupt","encryptionType","readBytesUntil","robotNameWrite","readMicrophone","robotNameRead","cityNameWrite","userNameWrite","readJoystickY","readJoystickX","mouseReleased","openNextFile","scanNetworks","noInterrupts","digitalWrite","beginSpeaker","mousePressed","isActionDone","mouseDragged","displayLogos","noAutoscroll","addParameter","remoteNumber","getModifiers","keyboardRead","userNameRead","waitContinue","processInput","parseCommand","printVersion","readNetworks","writeMessage","blinkVersion","cityNameRead","readMessage","setDataMode","parsePacket","isListening","setBitOrder","beginPacket","isDirectory","motorsWrite","drawCompass","digitalRead","clearScreen","serialEvent","rightToLeft","setTextSize","leftToRight","requestFrom","keyReleased","compassRead","analogWrite","interrupts","WiFiServer","disconnect","playMelody","parseFloat","autoscroll","getPINUsed","setPINUsed","setTimeout","sendAnalog","readSlider","analogRead","beginWrite","createChar","motorsStop","keyPressed","tempoWrite","readButton","subnetMask","debugPrint","macAddress","writeGreen","randomSeed","attachGPRS","readString","sendString","remotePort","releaseAll","mouseMoved","background","getXChange","getYChange","answerCall","getResult","voiceCall","endPacket","constrain","getSocket","writeJSON","getButton","available","connected","findUntil","readBytes","exitValue","readGreen","writeBlue","startLoop","IPAddress","isPressed","sendSysex","pauseMode","gatewayIP","setCursor","getOemKey","tuneWrite","noDisplay","loadImage","switchPIN","onRequest","onReceive","changePIN","playFile","noBuffer","parseInt","overflow","checkPIN","knobRead","beginTFT","bitClear","updateIR","bitWrite","position","writeRGB","highByte","writeRed","setSpeed","readBlue","noStroke","remoteIP","transfer","shutdown","hangCall","beginSMS","endWrite","attached","maintain","noCursor","checkReg","checkPUK","shiftOut","isValid","shiftIn","pulseIn","connect","println","localIP","pinMode","getIMEI","display","noBlink","process","getBand","running","beginSD","drawBMP","lowByte","setBand","release","bitRead","prepare","pointTo","readRed","setMode","noFill","remove","listen","stroke","detach","attach","noTone","exists","buffer","height","bitSet","circle","config","cursor","random","IRread","setDNS","endSMS","getKey","micros","millis","begin","print","write","ready","flush","width","isPIN","blink","clear","press","mkdir","rmdir","close","point","yield","image","BSSID","click","delay","read","text","move","peek","beep","rect","line","open","seek","fill","size","turn","stop","home","find","step","tone","sqrt","RSSI","SSID","end","bit","tan","cos","sin","pow","map","abs","max","min","get","run","put"],literal:["DIGITAL_MESSAGE","FIRMATA_STRING","ANALOG_MESSAGE","REPORT_DIGITAL","REPORT_ANALOG","INPUT_PULLUP","SET_PIN_MODE","INTERNAL2V56","SYSTEM_RESET","LED_BUILTIN","INTERNAL1V1","SYSEX_START","INTERNAL","EXTERNAL","DEFAULT","OUTPUT","INPUT","HIGH","LOW"]},n=fX(e),r=n.keywords;return r.type=[...r.type,...t.type],r.literal=[...r.literal,...t.literal],r.built_in=[...r.built_in,...t.built_in],r._hints=t._hints,n.name="Arduino",n.aliases=["ino"],n.supersetOf="cpp",n}function mX(e){const t=e.regex,n={},r={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{begin:t.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},r]});const a={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},s=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),o={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const d={match:/\\"/},f={className:"string",begin:/'/,end:/'/},m={match:/\\'/},p={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,n]},b=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],x=e.SHEBANG({binary:`(${b.join("|")})`,relevance:10}),E={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},N=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],S=["true","false"],T={match:/(\/[a-z._-]+)+/},C=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],A=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],k=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],R=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:N,literal:S,built_in:[...C,...A,"set","shopt",...k,...R]},contains:[x,e.SHEBANG(),E,p,s,o,T,c,d,f,m,n]}}function pX(e){const t=e.regex,n=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),r="decltype\\(auto\\)",a="[a-zA-Z_]\\w*::",o="("+r+"|"+t.optional(a)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",c={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},f={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)"+"|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},m={className:"number",variants:[{match:/\b(0b[01']+)/},{match:/(-?)\b([\d']+(\.[\d']*)?|\.[\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)/},{match:/(-?)\b(0[xX][a-fA-F0-9]+(?:'[a-fA-F0-9]+)*(?:\.[a-fA-F0-9]*(?:'[a-fA-F0-9]*)*)?(?:[pP][-+]?[0-9]+)?(l|L)?(u|U)?)/},{match:/(-?)\b\d+(?:'\d+)*(?:\.\d*(?:'\d*)*)?(?:[eE][-+]?\d+)?/}],relevance:0},p={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef elifdef elifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(f,{className:"string"}),{className:"string",begin:/<.*?>/},n,e.C_BLOCK_COMMENT_MODE]},b={className:"title",begin:t.optional(a)+e.IDENT_RE,relevance:0},x=t.optional(a)+e.IDENT_RE+"\\s*\\(",S={keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","typeof","typeof_unqual","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_BitInt","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal96","_Decimal128","_Decimal64x","_Decimal128x","_Float16","_Float32","_Float64","_Float128","_Float32x","_Float64x","_Float128x","const","static","constexpr","complex","bool","imaginary"],literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},T=[p,c,n,e.C_BLOCK_COMMENT_MODE,m,f],C={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:S,contains:T.concat([{begin:/\(/,end:/\)/,keywords:S,contains:T.concat(["self"]),relevance:0}]),relevance:0},A={begin:"("+o+"[\\*&\\s]+)+"+x,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:S,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:r,keywords:S,relevance:0},{begin:x,returnBegin:!0,contains:[e.inherit(b,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:S,relevance:0,contains:[n,e.C_BLOCK_COMMENT_MODE,f,m,c,{begin:/\(/,end:/\)/,keywords:S,relevance:0,contains:["self",n,e.C_BLOCK_COMMENT_MODE,f,m,c]}]},c,n,e.C_BLOCK_COMMENT_MODE,p]};return{name:"C",aliases:["h"],keywords:S,disableAutodetect:!0,illegal:"</",contains:[].concat(C,A,T,[p,{begin:e.IDENT_RE+"::",keywords:S},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:p,strings:f,keywords:S}}}function gX(e){const t=e.regex,n=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),r="decltype\\(auto\\)",a="[a-zA-Z_]\\w*::",o="(?!struct)("+r+"|"+t.optional(a)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",c={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},f={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)"+"|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},m={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},p={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(f,{className:"string"}),{className:"string",begin:/<.*?>/},n,e.C_BLOCK_COMMENT_MODE]},b={className:"title",begin:t.optional(a)+e.IDENT_RE,relevance:0},x=t.optional(a)+e.IDENT_RE+"\\s*\\(",E=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],N=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],S=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],T=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],k={type:N,keyword:E,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:S},R={className:"function.dispatch",relevance:0,keywords:{_hint:T},begin:t.concat(/\b/,`(?!${E.join("|")})`,e.IDENT_RE,t.lookahead(/(<[^<>]+>|)\s*\(/))},O=[R,p,c,n,e.C_BLOCK_COMMENT_MODE,m,f],j={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:k,contains:O.concat([{begin:/\(/,end:/\)/,keywords:k,contains:O.concat(["self"]),relevance:0}]),relevance:0},$={className:"function",begin:"("+o+"[\\*&\\s]+)+"+x,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:k,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:r,keywords:k,relevance:0},{begin:x,returnBegin:!0,contains:[b],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[f,m]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:k,relevance:0,contains:[n,e.C_BLOCK_COMMENT_MODE,f,m,c,{begin:/\(/,end:/\)/,keywords:k,relevance:0,contains:["self",n,e.C_BLOCK_COMMENT_MODE,f,m,c]}]},c,n,e.C_BLOCK_COMMENT_MODE,p]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:k,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(j,$,R,O,[p,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:k,contains:["self",c]},{begin:e.IDENT_RE+"::",keywords:k},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}function bX(e){const t=["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"],n=["public","private","protected","static","internal","protected","abstract","async","extern","override","unsafe","virtual","new","sealed","partial"],r=["default","false","null","true"],a=["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","scoped","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"],s=["add","alias","and","ascending","args","async","await","by","descending","dynamic","equals","file","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","record","remove","required","scoped","select","set","unmanaged","value|0","var","when","where","with","yield"],o={keyword:a.concat(s),built_in:t,literal:r},c=e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),d={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9'_]+|(\\b[\\d'_]+(\\.[\\d'_]*)?|\\.[\\d'_]+)([eE][-+]?[\\d'_]+)?)"}],relevance:0},f={className:"string",begin:/"""("*)(?!")(.|\n)*?"""\1/,relevance:1},m={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},p=e.inherit(m,{illegal:/\n/}),b={className:"subst",begin:/\{/,end:/\}/,keywords:o},x=e.inherit(b,{illegal:/\n/}),E={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},e.BACKSLASH_ESCAPE,x]},N={className:"string",begin:/\$@"/,end:'"',contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},b]},S=e.inherit(N,{illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},x]});b.contains=[N,E,m,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,d,e.C_BLOCK_COMMENT_MODE],x.contains=[S,E,p,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,d,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];const T={variants:[f,N,E,m,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},C={begin:"<",end:">",contains:[{beginKeywords:"in out"},c]},A=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?",k={begin:"@"+e.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:o,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"<!--|-->"},{begin:"</?",end:">"}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{keyword:"if else elif endif define undef warning error line region endregion pragma checksum"}},T,d,{beginKeywords:"class interface",relevance:0,end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},c,C,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[c,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[c,C,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[(?=[\\w])",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+A+"\\s+)+"+e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:o,contains:[{beginKeywords:n.join(" "),relevance:0},{begin:e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,contains:[e.TITLE_MODE,C],relevance:0},{match:/\(\)/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:o,relevance:0,contains:[T,d,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},k]}}const xX=e=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},UNICODE_RANGE:{scope:"number",begin:/\b[Uu]\+[0-9A-Fa-f][0-9A-Fa-f?]{0,4}(-[0-9A-Fa-f][0-9A-Fa-f]{0,4})?/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),yX=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],vX=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],EX=[...yX,...vX],NX=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),_X=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),TX=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),SX=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","unicode-range","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function wX(e){const t=e.regex,n=xX(e),r={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},a="and or not only",s=/@-?\w[\w]*(-\w+)*/,o="[a-zA-Z-][a-zA-Z0-9_-]*",c=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[n.BLOCK_COMMENT,r,n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+o,relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+_X.join("|")+")"},{begin:":(:)?("+TX.join("|")+")"}]},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+SX.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[n.BLOCK_COMMENT,n.HEXCOLOR,n.IMPORTANT,n.CSS_NUMBER_MODE,n.UNICODE_RANGE,...c,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...c,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},n.FUNCTION_DISPATCH]},{begin:t.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:s},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:a,attribute:NX.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...c,n.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+EX.join("|")+")\\b"}]}}function AX(e){const t=e.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:t.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^@@ +-\d+ +\+\d+,\d+ +@@/,/^@@ +-\d+,\d+ +\+\d+ +@@/,/^@@ +-\d+ +\+\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:t.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}function CX(e){const s={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:s,illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",variants:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:"number",variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:s,illegal:/["']/}]}]}}function kX(e){const t=e.regex,n=/[_A-Za-z][_0-9A-Za-z]*/;return{name:"GraphQL",aliases:["gql"],case_insensitive:!0,disableAutodetect:!1,keywords:{keyword:["query","mutation","subscription","type","input","schema","directive","interface","union","scalar","fragment","enum","on"],literal:["true","false","null"]},contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{scope:"punctuation",match:/[.]{3}/,relevance:0},{scope:"punctuation",begin:/[\!\(\)\:\=\[\]\{\|\}]{1}/,relevance:0},{scope:"variable",begin:/\$/,end:/\W/,excludeEnd:!0,relevance:0},{scope:"meta",match:/@\w+/,excludeEnd:!0},{scope:"symbol",begin:t.concat(n,t.lookahead(/\s*:/)),relevance:0}],illegal:[/[;<']/,/BEGIN/]}}function OX(e){const t=e.regex,n={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:e.NUMBER_RE}]},r=e.COMMENT();r.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const a={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},s={className:"literal",begin:/\bon|off|true|false|yes|no\b/},o={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[r,s,a,o,n,"self"],relevance:0},d=/[A-Za-z0-9_-]+/,f=/"(\\"|[^"])*"/,m=/'[^']*'/,p=t.either(d,f,m),b=t.concat(p,"(\\s*\\.\\s*",p,")*",t.lookahead(/\s*=\s*[^#\s]/));return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[r,{className:"section",begin:/\[+/,end:/\]+/},{begin:b,className:"attr",starts:{end:/$/,contains:[r,c,s,a,o,n]}}]}}var Ou="[0-9](_*[0-9])*",Tm=`\\.(${Ou})`,Sm="[0-9a-fA-F](_*[0-9a-fA-F])*",_A={className:"number",variants:[{begin:`(\\b(${Ou})((${Tm})|\\.)?|(${Tm}))[eE][+-]?(${Ou})[fFdD]?\\b`},{begin:`\\b(${Ou})((${Tm})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${Tm})[fFdD]?\\b`},{begin:`\\b(${Ou})[fFdD]\\b`},{begin:`\\b0[xX]((${Sm})\\.?|(${Sm})?\\.(${Sm}))[pP][+-]?(${Ou})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${Sm})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function JR(e,t,n){return n===-1?"":e.replace(t,r=>JR(e,t,n-1))}function IX(e){const t=e.regex,n="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",r=n+JR("(?:<"+n+"~~~(?:\\s*,\\s*"+n+"~~~)*>)?",/~~~/g,2),d={keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits","goto","when"],literal:["false","true","null"],type:["char","boolean","long","float","int","byte","short","double"],built_in:["super","this"]},f={className:"meta",begin:"@"+n,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},m={className:"params",begin:/\(/,end:/\)/,keywords:d,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:d,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[e.BACKSLASH_ESCAPE]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,n],className:{1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{begin:[t.concat(/(?!else)/,n),/\s+/,n,/\s+/,/=(?!=)/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,n],className:{1:"keyword",3:"title.class"},contains:[m,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+r+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:d,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:d,relevance:0,contains:[f,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,_A,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},_A,f]}}const TA="[A-Za-z$_][0-9A-Za-z$_]*",RX=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],MX=["true","false","null","undefined","NaN","Infinity"],eM=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],tM=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],nM=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],jX=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],DX=[].concat(nM,eM,tM);function LX(e){const t=e.regex,n=(F,{after:Y})=>{const L="</"+F[0].slice(1);return F.input.indexOf(L,Y)!==-1},r=TA,a={begin:"<>",end:"</>"},s=/<[A-Za-z0-9\\._:-]+\s*\/>/,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(F,Y)=>{const L=F[0].length+F.index,P=F.input[L];if(P==="<"||P===","){Y.ignoreMatch();return}P===">"&&(n(F,{after:L})||Y.ignoreMatch());let J;const B=F.input.substring(L);if(J=B.match(/^\s*=/)){Y.ignoreMatch();return}if((J=B.match(/^\s+extends\s+/))&&J.index===0){Y.ignoreMatch();return}}},c={$pattern:TA,keyword:RX,literal:MX,built_in:DX,"variable.language":jX},d="[0-9](_?[0-9])*",f=`\\.(${d})`,m="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",p={className:"number",variants:[{begin:`(\\b(${m})((${f})|\\.)?|(${f}))[eE][+-]?(${d})\\b`},{begin:`\\b(${m})\\b((${f})\\b|\\.)?|(${f})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},b={className:"subst",begin:"\\$\\{",end:"\\}",keywords:c,contains:[]},x={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,b],subLanguage:"xml"}},E={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,b],subLanguage:"css"}},N={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,b],subLanguage:"graphql"}},S={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,b]},C={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:r+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},A=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,x,E,N,S,{match:/\$\d+/},p];b.contains=A.concat({begin:/\{/,end:/\}/,keywords:c,contains:["self"].concat(A)});const k=[].concat(C,b.contains),R=k.concat([{begin:/(\s*)\(/,end:/\)/,keywords:c,contains:["self"].concat(k)}]),O={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:R},j={variants:[{match:[/class/,/\s+/,r,/\s+/,/extends/,/\s+/,t.concat(r,"(",t.concat(/\./,r),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,r],scope:{1:"keyword",3:"title.class"}}]},$={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...eM,...tM]}},D={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},M={variants:[{match:[/function/,/\s+/,r,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[O],illegal:/%/},G={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function K(F){return t.concat("(?!",F.join("|"),")")}const ae={match:t.concat(/\b/,K([...nM,"super","import","await"].map(F=>`${F}\\s*\\(`)),r,t.lookahead(/\s*\(/)),className:"title.function",relevance:0},Q={begin:t.concat(/\./,t.lookahead(t.concat(r,/(?![0-9A-Za-z$_(])/))),end:r,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},W={match:[/get|set/,/\s+/,r,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},O]},V="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",H={match:[/const|var|let/,/\s+/,r,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(V)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[O]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:c,exports:{PARAMS_CONTAINS:R,CLASS_REFERENCE:$},illegal:/#(?![$_A-Za-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),D,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,x,E,N,S,C,{match:/\$\d+/},p,$,{scope:"attr",match:r+t.lookahead(":"),relevance:0},H,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[C,e.REGEXP_MODE,{className:"function",begin:V,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:R}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:a.begin,end:a.end},{match:s},{begin:o.begin,"on:begin":o.isTrulyOpeningTag,end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0,contains:["self"]}]}]},M,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[O,e.inherit(e.TITLE_MODE,{begin:r,className:"title.function"})]},{match:/\.\.\./,relevance:0},Q,{match:"\\$"+r,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[O]},ae,G,j,W,{match:/\$[(.]/}]}}const PX="([-+]?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)|NaN|[-+]?Infinity",BX={scope:"number",match:PX,relevance:0};function UX(e){const t={className:"attr",begin:/(("(\\.|[^\\"\r\n])*")|('(\\.|[^\\'\r\n])*'))(?=\s*:)/,relevance:1.01},n={match:/[{}[\],:]/,className:"punctuation",relevance:0},r=["true","false","null"],a={scope:"literal",beginKeywords:r.join(" ")};return{name:"JSON",aliases:["jsonc","json5"],keywords:{literal:r},contains:[t,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,BX,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}var Iu="[0-9](_*[0-9])*",wm=`\\.(${Iu})`,Am="[0-9a-fA-F](_*[0-9a-fA-F])*",FX={className:"number",variants:[{begin:`(\\b(${Iu})((${wm})|\\.)?|(${wm}))[eE][+-]?(${Iu})[fFdD]?\\b`},{begin:`\\b(${Iu})((${wm})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${wm})[fFdD]?\\b`},{begin:`\\b(${Iu})[fFdD]\\b`},{begin:`\\b0[xX]((${Am})\\.?|(${Am})?\\.(${Am}))[pP][+-]?(${Iu})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${Am})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function zX(e){const t={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},n={className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},r={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},a={className:"subst",begin:/\$\{/,end:/\}/,contains:[e.C_NUMBER_MODE]},s={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},o={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[s,a]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,s,a]}]};a.contains.push(o);const c={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"},d={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[e.inherit(o,{className:"string"}),"self"]}]},f=FX,m=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),p={variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},b=p;return b.variants[1].contains=[p],p.variants[1].contains=[b],{name:"Kotlin",aliases:["kt","kts"],keywords:t,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,m,n,r,c,d,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:t,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[p,e.C_LINE_COMMENT_MODE,m],relevance:0},e.C_LINE_COMMENT_MODE,m,c,d,o,e.C_NUMBER_MODE]},m]},{begin:[/class|interface|trait/,/\s+/,e.UNDERSCORE_IDENT_RE],beginScope:{3:"title.class"},keywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},e.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/,excludeBegin:!0,returnEnd:!0},c,d]},o,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:`
549
549
  `},f]}}const HX=e=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},UNICODE_RANGE:{scope:"number",begin:/\b[Uu]\+[0-9A-Fa-f][0-9A-Fa-f?]{0,4}(-[0-9A-Fa-f][0-9A-Fa-f]{0,4})?/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),$X=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],qX=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],YX=[...$X,...qX],GX=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),rM=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),aM=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),KX=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","unicode-range","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse(),VX=rM.concat(aM).sort().reverse();function WX(e){const t=HX(e),n=VX,r="and or not only",a="[\\w-]+",s="("+a+"|@\\{"+a+"\\})",o=[],c=[],d=function(A){return{className:"string",begin:"~?"+A+".*?"+A}},f=function(A,k,R){return{className:A,begin:k,relevance:R}},m={$pattern:/[a-z-]+/,keyword:r,attribute:GX.join(" ")},p={begin:"\\(",end:"\\)",contains:c,keywords:m,relevance:0};c.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,d("'"),d('"'),t.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},t.UNICODE_RANGE,t.HEXCOLOR,p,f("variable","@@?"+a,10),f("variable","@\\{"+a+"\\}"),f("built_in","~?`[^`]*?`"),{className:"attribute",begin:a+"\\s*:",end:":",returnBegin:!0,excludeEnd:!0},t.IMPORTANT,{beginKeywords:"and not"},t.FUNCTION_DISPATCH);const b=c.concat({begin:/\{/,end:/\}/,contains:o}),x={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(c)},E={begin:s+"\\s*:",returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/},t.CSS_VARIABLE,{className:"attribute",begin:"\\b("+KX.join("|")+")\\b",end:/(?=:)/,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:c}}]},N={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",keywords:m,returnEnd:!0,contains:c,relevance:0}},S={className:"variable",variants:[{begin:"@"+a+"\\s*:",relevance:15},{begin:"@"+a}],starts:{end:"[;}]",returnEnd:!0,contains:b}},T={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:s,end:/\{/}],returnBegin:!0,returnEnd:!0,illegal:`[<='$"]`,relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,x,f("keyword","all\\b"),f("variable","@\\{"+a+"\\}"),{begin:"\\b("+YX.join("|")+")\\b",className:"selector-tag"},t.CSS_NUMBER_MODE,f("selector-tag",s,0),f("selector-id","#"+s),f("selector-class","\\."+s,0),f("selector-tag","&",0),t.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",begin:":("+rM.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+aM.join("|")+")"},{begin:/\(/,end:/\)/,relevance:0,contains:b},{begin:"!important"},t.FUNCTION_DISPATCH]},C={begin:a+`:(:)?(${n.join("|")})`,returnBegin:!0,contains:[T]};return o.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,N,S,C,E,T,x,t.FUNCTION_DISPATCH),{name:"Less",case_insensitive:!0,illegal:`[=>'/<($"]`,contains:o}}function XX(e){const t="\\[=*\\[",n="\\]=*\\]",r={begin:t,end:n,contains:["self"]},a=[e.COMMENT("--(?!"+t+")","$"),e.COMMENT("--"+t,n,{contains:[r],relevance:10})];return{name:"Lua",aliases:["pluto"],keywords:{$pattern:e.UNDERSCORE_IDENT_RE,literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:a.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:a}].concat(a)},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:t,end:n,contains:[r],relevance:5}])}}function QX(e){const t={className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)",contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%<?\^\+\*]/}]},n={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t]},r={className:"variable",begin:/\$\([\w-]+\s/,end:/\)/,keywords:{built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"},contains:[t,n]},a={begin:"^"+e.UNDERSCORE_IDENT_RE+"\\s*(?=[:+?]?=)"},s={className:"meta",begin:/^\.PHONY:/,end:/$/,keywords:{$pattern:/[\.\w]+/,keyword:".PHONY"}},o={className:"section",begin:/^[^\s]+:/,end:/$/,contains:[t]};return{name:"Makefile",aliases:["mk","mak","make"],keywords:{$pattern:/[\w-]+/,keyword:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath"},contains:[e.HASH_COMMENT_MODE,t,n,r,a,s,o]}}function ZX(e){const t=e.regex,n={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},r={begin:"^[-\\*]{3,}",end:"$"},a={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},s={className:"bullet",begin:"^[ ]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},o={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},c=/[A-Za-z][A-Za-z0-9+.-]*/,d={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:t.concat(/\[.+?\]\(/,c,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},f={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},m={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},p=e.inherit(f,{contains:[]}),b=e.inherit(m,{contains:[]});f.contains.push(b),m.contains.push(p);let x=[n,d];return[f,m,p,b].forEach(T=>{T.contains=T.contains.concat(x)}),x=x.concat(f,m),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:x},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:x}]}]},n,s,f,m,{className:"quote",begin:"^>\\s+",contains:x,end:"$"},a,r,d,o,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}function JX(e){const t={className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},n=/[a-zA-Z@][a-zA-Z0-9_]*/,c={"variable.language":["this","super"],$pattern:n,keyword:["while","export","sizeof","typedef","const","struct","for","union","volatile","static","mutable","if","do","return","goto","enum","else","break","extern","asm","case","default","register","explicit","typename","switch","continue","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"],literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"],built_in:["dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"],type:["int","float","char","unsigned","signed","short","long","double","wchar_t","unichar","void","bool","BOOL","id|0","_Bool"]},d={$pattern:n,keyword:["@interface","@class","@protocol","@implementation"]};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:c,illegal:"</",contains:[t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{className:"string",variants:[{begin:'@"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]}]},{className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),{className:"string",begin:/<.*?>/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+d.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:d,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}}function eQ(e){const t=e.regex,n=["abs","accept","alarm","and","atan2","bind","binmode","bless","break","caller","chdir","chmod","chomp","chop","chown","chr","chroot","class","close","closedir","connect","continue","cos","crypt","dbmclose","dbmopen","defined","delete","die","do","dump","each","else","elsif","endgrent","endhostent","endnetent","endprotoent","endpwent","endservent","eof","eval","exec","exists","exit","exp","fcntl","field","fileno","flock","for","foreach","fork","format","formline","getc","getgrent","getgrgid","getgrnam","gethostbyaddr","gethostbyname","gethostent","getlogin","getnetbyaddr","getnetbyname","getnetent","getpeername","getpgrp","getpriority","getprotobyname","getprotobynumber","getprotoent","getpwent","getpwnam","getpwuid","getservbyname","getservbyport","getservent","getsockname","getsockopt","given","glob","gmtime","goto","grep","gt","hex","if","index","int","ioctl","join","keys","kill","last","lc","lcfirst","length","link","listen","local","localtime","log","lstat","lt","ma","map","method","mkdir","msgctl","msgget","msgrcv","msgsnd","my","ne","next","no","not","oct","open","opendir","or","ord","our","pack","package","pipe","pop","pos","print","printf","prototype","push","q|0","qq","quotemeta","qw","qx","rand","read","readdir","readline","readlink","readpipe","recv","redo","ref","rename","require","reset","return","reverse","rewinddir","rindex","rmdir","say","scalar","seek","seekdir","select","semctl","semget","semop","send","setgrent","sethostent","setnetent","setpgrp","setpriority","setprotoent","setpwent","setservent","setsockopt","shift","shmctl","shmget","shmread","shmwrite","shutdown","sin","sleep","socket","socketpair","sort","splice","split","sprintf","sqrt","srand","stat","state","study","sub","substr","symlink","syscall","sysopen","sysread","sysseek","system","syswrite","tell","telldir","tie","tied","time","times","tr","truncate","uc","ucfirst","umask","undef","unless","unlink","unpack","unshift","untie","until","use","utime","values","vec","wait","waitpid","wantarray","warn","when","while","write","x|0","xor","y|0"],r=/[dualxmsipngr]{0,12}/,a={$pattern:/[\w.]+/,keyword:n.join(" ")},s={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:a},o={begin:/->\{/,end:/\}/},c={scope:"attr",match:/\s+:\s*\w+(\s*\(.*?\))?/},d={scope:"variable",variants:[{begin:/\$\d/},{begin:t.concat(/[$%@](?!")(\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])")},{begin:/[$%@](?!")[^\s\w{=]|\$=/,relevance:0}],contains:[c]},f={className:"number",variants:[{match:/0?\.[0-9][0-9_]+\b/},{match:/\bv?(0|[1-9][0-9_]*(\.[0-9_]+)?|[1-9][0-9_]*)\b/},{match:/\b0[0-7][0-7_]*\b/},{match:/\b0x[0-9a-fA-F][0-9a-fA-F_]*\b/},{match:/\b0b[0-1][0-1_]*\b/}],relevance:0},m=[e.BACKSLASH_ESCAPE,s,d],p=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],b=(N,S,T="\\1")=>{const C=T==="\\1"?T:t.concat(T,S);return t.concat(t.concat("(?:",N,")"),S,/(?:\\.|[^\\\/])*?/,C,/(?:\\.|[^\\\/])*?/,T,r)},x=(N,S,T)=>t.concat(t.concat("(?:",N,")"),S,/(?:\\.|[^\\\/])*?/,T,r),E=[d,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{endsWithParent:!0}),o,{className:"string",contains:m,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{begin:"-?\\w+\\s*=>",relevance:0}]},f,{begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[e.HASH_COMMENT_MODE,{className:"regexp",variants:[{begin:b("s|tr|y",t.either(...p,{capture:!0}))},{begin:b("s|tr|y","\\(","\\)")},{begin:b("s|tr|y","\\[","\\]")},{begin:b("s|tr|y","\\{","\\}")}],relevance:2},{className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{begin:x("(?:m|qr)?",/\//,/\//)},{begin:x("m|qr",t.either(...p,{capture:!0}),/\1/)},{begin:x("m|qr",/\(/,/\)/)},{begin:x("m|qr",/\[/,/\]/)},{begin:x("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub method",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE,c]},{className:"class",beginKeywords:"class",end:"[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE,c,f]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return s.contains=E,o.contains=E,{name:"Perl",aliases:["pl","pm"],keywords:a,contains:E}}function tQ(e){const t=e.regex,n=/(?![A-Za-z0-9])(?![$])/,r=t.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,n),a=t.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,n),s=t.concat(/[A-Z]+/,n),o={scope:"variable",match:"\\$+"+r},c={scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},d={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},f=e.inherit(e.APOS_STRING_MODE,{illegal:null}),m=e.inherit(e.QUOTE_STRING_MODE,{illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(d)}),p={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:e.QUOTE_STRING_MODE.contains.concat(d),"on:begin":(Q,W)=>{W.data._beginMatch=Q[1]||Q[2]},"on:end":(Q,W)=>{W.data._beginMatch!==Q[1]&&W.ignoreMatch()}},b=e.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),x=`[
@@ -1 +1 @@
1
- import{W as e}from"./index-DTlQu164.js";class t extends e{available(){throw this.unimplemented("Method not implemented on web.")}start(o){throw this.unimplemented("Method not implemented on web.")}stop(){throw this.unimplemented("Method not implemented on web.")}getSupportedLanguages(){throw this.unimplemented("Method not implemented on web.")}hasPermission(){throw this.unimplemented("Method not implemented on web.")}isListening(){throw this.unimplemented("Method not implemented on web.")}requestPermission(){throw this.unimplemented("Method not implemented on web.")}checkPermissions(){throw this.unimplemented("Method not implemented on web.")}requestPermissions(){throw this.unimplemented("Method not implemented on web.")}}const m=new t;export{m as SpeechRecognition,t as SpeechRecognitionWeb};
1
+ import{W as e}from"./index-BAghghjV.js";class t extends e{available(){throw this.unimplemented("Method not implemented on web.")}start(o){throw this.unimplemented("Method not implemented on web.")}stop(){throw this.unimplemented("Method not implemented on web.")}getSupportedLanguages(){throw this.unimplemented("Method not implemented on web.")}hasPermission(){throw this.unimplemented("Method not implemented on web.")}isListening(){throw this.unimplemented("Method not implemented on web.")}requestPermission(){throw this.unimplemented("Method not implemented on web.")}checkPermissions(){throw this.unimplemented("Method not implemented on web.")}requestPermissions(){throw this.unimplemented("Method not implemented on web.")}}const m=new t;export{m as SpeechRecognition,t as SpeechRecognitionWeb};
package/public/index.html CHANGED
@@ -4,7 +4,7 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, viewport-fit=cover" />
6
6
  <title>Fourth Spark</title>
7
- <script type="module" crossorigin src="/assets/index-DTlQu164.js"></script>
7
+ <script type="module" crossorigin src="/assets/index-BAghghjV.js"></script>
8
8
  <link rel="stylesheet" crossorigin href="/assets/index-XvyZy5wa.css">
9
9
  </head>
10
10
  <body>