@hydra-acp/browser 0.1.25 → 0.1.26

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.
@@ -12,7 +12,14 @@
12
12
  <meta name="theme-color" content="#0e1116">
13
13
  <meta name="mobile-web-app-capable" content="yes">
14
14
  <meta name="apple-mobile-web-app-capable" content="yes">
15
- <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
15
+ <!-- "black", NOT "black-translucent": with translucent, iOS sizes the
16
+ standalone web view to screen-minus-status-bar but anchors it at
17
+ the very top of the screen, leaving a dead, unpaintable strip at
18
+ the bottom exactly the status bar's height (verified with paint
19
+ markers — content hard-clips there no matter what CSS does). With
20
+ an opaque black bar the web view sits below it and fills the rest
21
+ of the screen edge-to-edge. -->
22
+ <meta name="apple-mobile-web-app-status-bar-style" content="black">
16
23
  <meta name="apple-mobile-web-app-title" content="hydra-acp">
17
24
  <style nonce="__CSP_NONCE__">
18
25
  :root {
@@ -36,7 +43,20 @@
36
43
  }
37
44
  * { box-sizing: border-box; }
38
45
  html, body { height: 100%; margin: 0; }
39
- body { background: var(--bg); color: var(--fg); overflow: hidden; }
46
+ /* Three deliberate iOS accommodations here (see viewport.ts for the
47
+ JS half of each):
48
+ - position:fixed pins the document so iOS can't drag the whole page
49
+ to scroll a focused input into view; #app's height already shrinks
50
+ to stay above the keyboard, so there's nothing to "help" with.
51
+ - The translateY counters WebKit fixing fixed-position elements to
52
+ the layout viewport: when iOS pans the visual viewport to reveal a
53
+ focused input, an uncompensated fixed body slides off the top.
54
+ - NO overflow:hidden: overflow on <body> propagates to the viewport
55
+ itself, and the promoted clip would cut content at the (sometimes
56
+ under-reported) ICB height. #app carries the containment instead —
57
+ child elements don't propagate. Nothing is left in-flow, so the
58
+ document has no scrollable overflow and still can't be dragged. */
59
+ body { position: fixed; top: 0; left: 0; right: 0; height: var(--app-height, 100%); transform: translateY(var(--app-offset-top, 0px)); background: var(--bg); color: var(--fg); }
40
60
  button { font: inherit; color: inherit; background: transparent; border: 1px solid var(--border); border-radius: 6px; padding: 0.35rem 0.75rem; cursor: pointer; }
41
61
  button:hover { background: var(--panel-2); }
42
62
  button.primary { background: var(--accent); color: #0a0d12; border-color: var(--accent); font-weight: 600; }
@@ -44,6 +64,9 @@ button.primary:hover { filter: brightness(0.9); }
44
64
  button.danger { color: var(--bad); border-color: var(--bad); }
45
65
  button.danger:hover { background: rgba(249, 117, 131, 0.12); }
46
66
  button.ghost { border-color: transparent; }
67
+ button:disabled { opacity: 0.4; cursor: default; }
68
+ button:disabled:hover { background: transparent; filter: none; }
69
+ button.primary:disabled:hover { background: var(--accent); }
47
70
  input, select, textarea {
48
71
  font: inherit; color: inherit; background: var(--panel-2);
49
72
  border: 1px solid var(--border); border-radius: 6px; padding: 0.5rem 0.75rem;
@@ -59,7 +82,9 @@ code { background: var(--panel-2); padding: 0.1rem 0.4rem; border-radius: 4px; f
59
82
  pre { background: var(--code-bg); border: 1px solid var(--border); border-radius: 6px; padding: 0.75rem; overflow-x: auto; font-family: ui-monospace, "SFMono-Regular", Menlo, monospace; font-size: 0.88em; line-height: 1.45; margin: 0.5rem 0; }
60
83
  pre code { background: transparent; padding: 0; }
61
84
 
62
- #app { height: 100%; display: flex; flex-direction: column; }
85
+ /* --app-height is set from window.visualViewport by viewport.ts see
86
+ its comment for why the plain 100% chain isn't enough on iOS. */
87
+ #app { height: var(--app-height, 100%); display: flex; flex-direction: column; overflow: hidden; }
63
88
 
64
89
  /* Header */
65
90
  .topbar { display: flex; align-items: center; gap: 0.5rem; padding: calc(0.6rem + env(safe-area-inset-top)) calc(0.6rem + env(safe-area-inset-right)) 0.6rem calc(0.6rem + env(safe-area-inset-left)); border-bottom: 1px solid var(--border); background: var(--panel); }
@@ -72,7 +97,8 @@ pre code { background: transparent; padding: 0; }
72
97
  .pill.ready { color: var(--good); border-color: var(--good); }
73
98
  .pill.working { color: var(--warn); border-color: var(--warn); }
74
99
  .pill.working .dot { animation: pill-pulse 1.1s ease-in-out infinite; }
75
- .pill.armed { color: var(--accent); border-color: var(--accent); }
100
+ .pill.waiting { color: var(--accent); border-color: var(--accent); }
101
+ .pill.compacting { color: var(--warn); border-color: var(--warn); animation: pill-pulse 1.1s ease-in-out infinite; cursor: default; }
76
102
  @keyframes pill-pulse { 0%, 100% { opacity: 0.35; } 50% { opacity: 1; } }
77
103
 
78
104
  /* Session list */
@@ -91,8 +117,8 @@ pre code { background: transparent; padding: 0; }
91
117
  .badge.warm { color: var(--good); border-color: var(--good); }
92
118
  .badge.cold { color: var(--warn); border-color: var(--warn); }
93
119
  .badge.imported { color: var(--accent); border-color: var(--accent); }
94
- .badge.busy { color: var(--warn); border-color: var(--warn); }
95
- .badge.armed { color: var(--accent); border-color: var(--accent); }
120
+ .badge.busy { color: var(--accent); border-color: var(--accent); }
121
+ .badge.blocked { color: var(--bad); border-color: var(--bad); }
96
122
  .card .actions { display: flex; gap: 0.4rem; }
97
123
  .card .actions button { padding: 0.25rem 0.55rem; font-size: 0.85rem; }
98
124
  .empty { color: var(--muted); padding: 2rem; text-align: center; }
@@ -202,11 +228,29 @@ pre code { background: transparent; padding: 0; }
202
228
  .queue-editor textarea { width: 100%; min-height: 3rem; resize: vertical; font: inherit; padding: 0.4rem 0.5rem; box-sizing: border-box; }
203
229
 
204
230
  /* Composer */
205
- .composer { display: flex; flex-direction: column; gap: 0.4rem; padding: 0.6rem max(0.6rem, calc(50% - 28rem)) 0; border-top: 1px solid var(--border); background: var(--panel); }
231
+ /* Bottom padding encroaches ~12px into the home-indicator inset (34pt
232
+ on notch devices): the indicator bar itself is a thin strip centered
233
+ in that inset, so the button row can sit this much closer to the
234
+ screen edge without landing in the swipe-up gesture zone. The max()
235
+ keeps the normal 0.6rem when there's no inset (browser tabs). */
236
+ .composer { display: flex; flex-direction: column; gap: 0.4rem; padding: 0.6rem max(0.6rem, calc(50% - 28rem)) max(0.6rem, calc(env(safe-area-inset-bottom) - 0.75rem)); border-top: 1px solid var(--border); background: var(--panel); }
237
+ /* The keyboard already bounds the composer's bottom edge, so the
238
+ safe-area reserve (there for the home indicator when it's not up)
239
+ would just leave a dead gap above it — see viewport.ts. */
240
+ html.keyboard-open .composer { padding-bottom: 0.6rem; }
206
241
  .composer textarea { width: 100%; min-height: 2.4rem; max-height: 12rem; resize: none; }
207
242
  .composer-buttons { display: flex; justify-content: flex-end; gap: 0.5rem; }
208
243
  .composer .stop { color: var(--bad); border-color: var(--bad); }
209
244
 
245
+ /* Pasted-image attachments: pending chips above the composer, and
246
+ thumbnails on a sent bubble that carried them. */
247
+ .attachment-chips { display: flex; gap: 0.4rem; flex-wrap: wrap; }
248
+ .attachment-chip { position: relative; display: inline-flex; }
249
+ .attachment-chip .attachment-thumb { width: 3rem; height: 3rem; object-fit: cover; border-radius: 6px; border: 1px solid var(--border); }
250
+ .attachment-chip .attachment-remove { position: absolute; top: -0.4rem; right: -0.4rem; width: 1.2rem; height: 1.2rem; padding: 0; border-radius: 999px; background: var(--bad); color: #fff; border: 2px solid var(--panel); font-size: 0.7rem; line-height: 1; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
251
+ .attachment-thumbs { display: flex; gap: 0.4rem; flex-wrap: wrap; margin-bottom: 0.3rem; }
252
+ .attachment-thumbs .attachment-thumb { max-width: 12rem; max-height: 12rem; border-radius: 8px; border: 1px solid var(--border); }
253
+
210
254
  /* Modal */
211
255
  .modal-bg { position: fixed; inset: 0; background: rgba(0,0,0,0.5); display: flex; align-items: center; justify-content: center; padding: 1rem; z-index: 50; }
212
256
  .modal { background: var(--panel); border: 1px solid var(--border); border-radius: 10px; padding: 1.25rem; width: 28rem; max-width: 100%; max-height: 100%; overflow-y: auto; }
@@ -265,23 +309,26 @@ pre code { background: transparent; padding: 0; }
265
309
  </head>
266
310
  <body>
267
311
  <div id="app"></div>
268
- <script nonce="__CSP_NONCE__">"use strict";(()=>{var cr=Object.create;var Wn=Object.defineProperty;var lr=Object.getOwnPropertyDescriptor;var ur=Object.getOwnPropertyNames;var dr=Object.getPrototypeOf,pr=Object.prototype.hasOwnProperty;var fr=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var gr=(e,n,t,s)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of ur(n))!pr.call(e,r)&&r!==t&&Wn(e,r,{get:()=>n[r],enumerable:!(s=lr(n,r))||s.enumerable});return e};var mr=(e,n,t)=>(t=e!=null?cr(dr(e)):{},gr(n||!e||!e.__esModule?Wn(t,"default",{value:e,enumerable:!0}):t,e));var mt=fr((aa,gt)=>{function tt(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(n=>{let t=e[n],s=typeof t;(s==="object"||s==="function")&&!Object.isFrozen(t)&&tt(t)}),e}var Ye=class{constructor(n){n.data===void 0&&(n.data={}),this.data=n.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function st(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}function pe(e,...n){let t=Object.create(null);for(let s in e)t[s]=e[s];return n.forEach(function(s){for(let r in s)t[r]=s[r]}),t}var Er="</span>",Xn=e=>!!e.scope,_r=(e,{prefix:n})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){let t=e.split(".");return[`${n}${t.shift()}`,...t.map((s,r)=>`${s}${"_".repeat(r+1)}`)].join(" ")}return`${n}${e}`},Sn=class{constructor(n,t){this.buffer="",this.classPrefix=t.classPrefix,n.walk(this)}addText(n){this.buffer+=st(n)}openNode(n){if(!Xn(n))return;let t=_r(n.scope,{prefix:this.classPrefix});this.span(t)}closeNode(n){Xn(n)&&(this.buffer+=Er)}value(){return this.buffer}span(n){this.buffer+=`<span class="${n}">`}},Vn=(e={})=>{let n={children:[]};return Object.assign(n,e),n},vn=class e{constructor(){this.rootNode=Vn(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(n){this.top.children.push(n)}openNode(n){let t=Vn({scope:n});this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(n){return this.constructor._walk(n,this.rootNode)}static _walk(n,t){return typeof t=="string"?n.addText(t):t.children&&(n.openNode(t),t.children.forEach(s=>this._walk(n,s)),n.closeNode(t)),n}static _collapse(n){typeof n!="string"&&n.children&&(n.children.every(t=>typeof t=="string")?n.children=[n.children.join("")]:n.children.forEach(t=>{e._collapse(t)}))}},Tn=class extends vn{constructor(n){super(),this.options=n}addText(n){n!==""&&this.add(n)}startScope(n){this.openNode(n)}endScope(){this.closeNode()}__addSublanguage(n,t){let s=n.root;t&&(s.scope=`language:${t}`),this.add(s)}toHTML(){return new Sn(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}};function Oe(e){return e?typeof e=="string"?e:e.source:null}function rt(e){return he("(?=",e,")")}function yr(e){return he("(?:",e,")*")}function wr(e){return he("(?:",e,")?")}function he(...e){return e.map(t=>Oe(t)).join("")}function Sr(e){let n=e[e.length-1];return typeof n=="object"&&n.constructor===Object?(e.splice(e.length-1,1),n):{}}function Nn(...e){return"("+(Sr(e).capture?"":"?:")+e.map(s=>Oe(s)).join("|")+")"}function it(e){return new RegExp(e.toString()+"|").exec("").length-1}function vr(e,n){let t=e&&e.exec(n);return t&&t.index===0}var Tr=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function In(e,{joinWith:n}){let t=0;return e.map(s=>{t+=1;let r=t,i=Oe(s),a="";for(;i.length>0;){let c=Tr.exec(i);if(!c){a+=i;break}a+=i.substring(0,c.index),i=i.substring(c.index+c[0].length),c[0][0]==="\\"&&c[1]?a+="\\"+String(Number(c[1])+r):(a+=c[0],c[0]==="("&&t++)}return a}).map(s=>`(${s})`).join(n)}var Ar=/\b\B/,ot="[a-zA-Z]\\w*",kn="[a-zA-Z_]\\w*",at="\\b\\d+(\\.\\d+)?",ct="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",lt="\\b(0b[01]+)",Nr="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",Ir=(e={})=>{let n=/^#![ ]*\//;return e.binary&&(e.begin=he(n,/.*\b/,e.binary,/\b.*/)),pe({scope:"meta",begin:n,end:/$/,relevance:0,"on:begin":(t,s)=>{t.index!==0&&s.ignoreMatch()}},e)},Ce={begin:"\\\\[\\s\\S]",relevance:0},kr={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[Ce]},xr={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[Ce]},Rr={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},Qe=function(e,n,t={}){let s=pe({scope:"comment",begin:e,end:n,contains:[]},t);s.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let r=Nn("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return s.contains.push({begin:he(/[ ]+/,"(",r,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),s},Mr=Qe("//","$"),Or=Qe("/\\*","\\*/"),Cr=Qe("#","$"),Lr={scope:"number",begin:at,relevance:0},Dr={scope:"number",begin:ct,relevance:0},Pr={scope:"number",begin:lt,relevance:0},Br={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[Ce,{begin:/\[/,end:/\]/,relevance:0,contains:[Ce]}]},Fr={scope:"title",begin:ot,relevance:0},$r={scope:"title",begin:kn,relevance:0},Ur={begin:"\\.\\s*"+kn,relevance:0},Hr=function(e){return Object.assign(e,{"on:begin":(n,t)=>{t.data._beginMatch=n[1]},"on:end":(n,t)=>{t.data._beginMatch!==n[1]&&t.ignoreMatch()}})},We=Object.freeze({__proto__:null,APOS_STRING_MODE:kr,BACKSLASH_ESCAPE:Ce,BINARY_NUMBER_MODE:Pr,BINARY_NUMBER_RE:lt,COMMENT:Qe,C_BLOCK_COMMENT_MODE:Or,C_LINE_COMMENT_MODE:Mr,C_NUMBER_MODE:Dr,C_NUMBER_RE:ct,END_SAME_AS_BEGIN:Hr,HASH_COMMENT_MODE:Cr,IDENT_RE:ot,MATCH_NOTHING_RE:Ar,METHOD_GUARD:Ur,NUMBER_MODE:Lr,NUMBER_RE:at,PHRASAL_WORDS_MODE:Rr,QUOTE_STRING_MODE:xr,REGEXP_MODE:Br,RE_STARTERS_RE:Nr,SHEBANG:Ir,TITLE_MODE:Fr,UNDERSCORE_IDENT_RE:kn,UNDERSCORE_TITLE_MODE:$r});function zr(e,n){e.input[e.index-1]==="."&&n.ignoreMatch()}function Kr(e,n){e.className!==void 0&&(e.scope=e.className,delete e.className)}function qr(e,n){n&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=zr,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function Gr(e,n){Array.isArray(e.illegal)&&(e.illegal=Nn(...e.illegal))}function Wr(e,n){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function Yr(e,n){e.relevance===void 0&&(e.relevance=1)}var Zr=(e,n)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");let t=Object.assign({},e);Object.keys(e).forEach(s=>{delete e[s]}),e.keywords=t.keywords,e.begin=he(t.beforeMatch,rt(t.begin)),e.starts={relevance:0,contains:[Object.assign(t,{endsParent:!0})]},e.relevance=0,delete t.beforeMatch},Qr=["of","and","for","in","not","or","if","then","parent","list","value"],Xr="keyword";function ut(e,n,t=Xr){let s=Object.create(null);return typeof e=="string"?r(t,e.split(" ")):Array.isArray(e)?r(t,e):Object.keys(e).forEach(function(i){Object.assign(s,ut(e[i],n,i))}),s;function r(i,a){n&&(a=a.map(c=>c.toLowerCase())),a.forEach(function(c){let d=c.split("|");s[d[0]]=[i,Vr(d[0],d[1])]})}}function Vr(e,n){return n?Number(n):Jr(e)?0:1}function Jr(e){return Qr.includes(e.toLowerCase())}var Jn={},be=e=>{console.error(e)},jn=(e,...n)=>{console.log(`WARN: ${e}`,...n)},Se=(e,n)=>{Jn[`${e}/${n}`]||(console.log(`Deprecated as of ${e}. ${n}`),Jn[`${e}/${n}`]=!0)},Ze=new Error;function dt(e,n,{key:t}){let s=0,r=e[t],i={},a={};for(let c=1;c<=n.length;c++)a[c+s]=r[c],i[c+s]=!0,s+=it(n[c-1]);e[t]=a,e[t]._emit=i,e[t]._multi=!0}function jr(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw be("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),Ze;if(typeof e.beginScope!="object"||e.beginScope===null)throw be("beginScope must be object"),Ze;dt(e,e.begin,{key:"beginScope"}),e.begin=In(e.begin,{joinWith:""})}}function ei(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw be("skip, excludeEnd, returnEnd not compatible with endScope: {}"),Ze;if(typeof e.endScope!="object"||e.endScope===null)throw be("endScope must be object"),Ze;dt(e,e.end,{key:"endScope"}),e.end=In(e.end,{joinWith:""})}}function ni(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function ti(e){ni(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),jr(e),ei(e)}function si(e){function n(a,c){return new RegExp(Oe(a),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(c?"g":""))}class t{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(c,d){d.position=this.position++,this.matchIndexes[this.matchAt]=d,this.regexes.push([d,c]),this.matchAt+=it(c)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);let c=this.regexes.map(d=>d[1]);this.matcherRe=n(In(c,{joinWith:"|"}),!0),this.lastIndex=0}exec(c){this.matcherRe.lastIndex=this.lastIndex;let d=this.matcherRe.exec(c);if(!d)return null;let u=d.findIndex((m,b)=>b>0&&m!==void 0),p=this.matchIndexes[u];return d.splice(0,u),Object.assign(d,p)}}class s{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(c){if(this.multiRegexes[c])return this.multiRegexes[c];let d=new t;return this.rules.slice(c).forEach(([u,p])=>d.addRule(u,p)),d.compile(),this.multiRegexes[c]=d,d}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(c,d){this.rules.push([c,d]),d.type==="begin"&&this.count++}exec(c){let d=this.getMatcher(this.regexIndex);d.lastIndex=this.lastIndex;let u=d.exec(c);if(this.resumingScanAtSamePosition()&&!(u&&u.index===this.lastIndex)){let p=this.getMatcher(0);p.lastIndex=this.lastIndex+1,u=p.exec(c)}return u&&(this.regexIndex+=u.position+1,this.regexIndex===this.count&&this.considerAll()),u}}function r(a){let c=new s;return a.contains.forEach(d=>c.addRule(d.begin,{rule:d,type:"begin"})),a.terminatorEnd&&c.addRule(a.terminatorEnd,{type:"end"}),a.illegal&&c.addRule(a.illegal,{type:"illegal"}),c}function i(a,c){let d=a;if(a.isCompiled)return d;[Kr,Wr,ti,Zr].forEach(p=>p(a,c)),e.compilerExtensions.forEach(p=>p(a,c)),a.__beforeBegin=null,[qr,Gr,Yr].forEach(p=>p(a,c)),a.isCompiled=!0;let u=null;return typeof a.keywords=="object"&&a.keywords.$pattern&&(a.keywords=Object.assign({},a.keywords),u=a.keywords.$pattern,delete a.keywords.$pattern),u=u||/\w+/,a.keywords&&(a.keywords=ut(a.keywords,e.case_insensitive)),d.keywordPatternRe=n(u,!0),c&&(a.begin||(a.begin=/\B|\b/),d.beginRe=n(d.begin),!a.end&&!a.endsWithParent&&(a.end=/\B|\b/),a.end&&(d.endRe=n(d.end)),d.terminatorEnd=Oe(d.end)||"",a.endsWithParent&&c.terminatorEnd&&(d.terminatorEnd+=(a.end?"|":"")+c.terminatorEnd)),a.illegal&&(d.illegalRe=n(a.illegal)),a.contains||(a.contains=[]),a.contains=[].concat(...a.contains.map(function(p){return ri(p==="self"?a:p)})),a.contains.forEach(function(p){i(p,d)}),a.starts&&i(a.starts,c),d.matcher=r(d),d}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=pe(e.classNameAliases||{}),i(e)}function pt(e){return e?e.endsWithParent||pt(e.starts):!1}function ri(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(n){return pe(e,{variants:null},n)})),e.cachedVariants?e.cachedVariants:pt(e)?pe(e,{starts:e.starts?pe(e.starts):null}):Object.isFrozen(e)?pe(e):e}var ii="11.11.1",An=class extends Error{constructor(n,t){super(n),this.name="HTMLInjectionError",this.html=t}},wn=st,et=pe,nt=Symbol("nomatch"),oi=7,ft=function(e){let n=Object.create(null),t=Object.create(null),s=[],r=!0,i="Could not find the language '{}', did you forget to load/include a language module?",a={disableAutodetect:!0,name:"Plain text",contains:[]},c={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:Tn};function d(f){return c.noHighlightRe.test(f)}function u(f){let w=f.className+" ";w+=f.parentNode?f.parentNode.className:"";let y=c.languageDetectRe.exec(w);if(y){let k=D(y[1]);return k||(jn(i.replace("{}",y[1])),jn("Falling back to no-highlight mode for this block.",f)),k?y[1]:"no-highlight"}return w.split(/\s+/).find(k=>d(k)||D(k))}function p(f,w,y){let k="",O="";typeof w=="object"?(k=f,y=w.ignoreIllegals,O=w.language):(Se("10.7.0","highlight(lang, code, ...args) has been deprecated."),Se("10.7.0",`Please use highlight(code, options) instead.
269
- https://github.com/highlightjs/highlight.js/issues/2277`),O=f,k=w),y===void 0&&(y=!0);let H={code:k,language:O};W("before:highlight",H);let q=H.result?H.result:m(H.language,H.code,y);return q.code=H.code,W("after:highlight",q),q}function m(f,w,y,k){let O=Object.create(null);function H(E,v){return E.keywords[v]}function q(){if(!A.keywords){Q.addText(z);return}let E=0;A.keywordPatternRe.lastIndex=0;let v=A.keywordPatternRe.exec(z),R="";for(;v;){R+=z.substring(E,v.index);let P=re.case_insensitive?v[0].toLowerCase():v[0],X=H(A,P);if(X){let[ce,or]=X;if(Q.addText(R),R="",O[P]=(O[P]||0)+1,O[P]<=oi&&(Ge+=or),ce.startsWith("_"))R+=v[0];else{let ar=re.classNameAliases[ce]||ce;ee(v[0],ar)}}else R+=v[0];E=A.keywordPatternRe.lastIndex,v=A.keywordPatternRe.exec(z)}R+=z.substring(E),Q.addText(R)}function se(){if(z==="")return;let E=null;if(typeof A.subLanguage=="string"){if(!n[A.subLanguage]){Q.addText(z);return}E=m(A.subLanguage,z,!0,qe[A.subLanguage]),qe[A.subLanguage]=E._top}else E=_(z,A.subLanguage.length?A.subLanguage:null);A.relevance>0&&(Ge+=E.relevance),Q.__addSublanguage(E._emitter,E.language)}function V(){A.subLanguage!=null?se():q(),z=""}function ee(E,v){E!==""&&(Q.startScope(v),Q.addText(E),Q.endScope())}function _e(E,v){let R=1,P=v.length-1;for(;R<=P;){if(!E._emit[R]){R++;continue}let X=re.classNameAliases[E[R]]||E[R],ce=v[R];X?ee(ce,X):(z=ce,q(),z=""),R++}}function ze(E,v){return E.scope&&typeof E.scope=="string"&&Q.openNode(re.classNameAliases[E.scope]||E.scope),E.beginScope&&(E.beginScope._wrap?(ee(z,re.classNameAliases[E.beginScope._wrap]||E.beginScope._wrap),z=""):E.beginScope._multi&&(_e(E.beginScope,v),z="")),A=Object.create(E,{parent:{value:A}}),A}function Re(E,v,R){let P=vr(E.endRe,R);if(P){if(E["on:end"]){let X=new Ye(E);E["on:end"](v,X),X.isMatchIgnored&&(P=!1)}if(P){for(;E.endsParent&&E.parent;)E=E.parent;return E}}if(E.endsWithParent)return Re(E.parent,v,R)}function fn(E){return A.matcher.regexIndex===0?(z+=E[0],1):(En=!0,0)}function gn(E){let v=E[0],R=E.rule,P=new Ye(R),X=[R.__beforeBegin,R["on:begin"]];for(let ce of X)if(ce&&(ce(E,P),P.isMatchIgnored))return fn(v);return R.skip?z+=v:(R.excludeBegin&&(z+=v),V(),!R.returnBegin&&!R.excludeBegin&&(z=v)),ze(R,E),R.returnBegin?0:v.length}function mn(E){let v=E[0],R=w.substring(E.index),P=Re(A,E,R);if(!P)return nt;let X=A;A.endScope&&A.endScope._wrap?(V(),ee(v,A.endScope._wrap)):A.endScope&&A.endScope._multi?(V(),_e(A.endScope,E)):X.skip?z+=v:(X.returnEnd||X.excludeEnd||(z+=v),V(),X.excludeEnd&&(z=v));do A.scope&&Q.closeNode(),!A.skip&&!A.subLanguage&&(Ge+=A.relevance),A=A.parent;while(A!==P.parent);return P.starts&&ze(P.starts,E),X.returnEnd?0:v.length}function bn(){let E=[];for(let v=A;v!==re;v=v.parent)v.scope&&E.unshift(v.scope);E.forEach(v=>Q.openNode(v))}let ye={};function Ke(E,v){let R=v&&v[0];if(z+=E,R==null)return V(),0;if(ye.type==="begin"&&v.type==="end"&&ye.index===v.index&&R===""){if(z+=w.slice(v.index,v.index+1),!r){let P=new Error(`0 width match regex (${f})`);throw P.languageName=f,P.badRule=ye.rule,P}return 1}if(ye=v,v.type==="begin")return gn(v);if(v.type==="illegal"&&!y){let P=new Error('Illegal lexeme "'+R+'" for mode "'+(A.scope||"<unnamed>")+'"');throw P.mode=A,P}else if(v.type==="end"){let P=mn(v);if(P!==nt)return P}if(v.type==="illegal"&&R==="")return z+=`
270
- `,1;if(hn>1e5&&hn>v.index*3)throw new Error("potential infinite loop, way more iterations than matches");return z+=R,R.length}let re=D(f);if(!re)throw be(i.replace("{}",f)),new Error('Unknown language: "'+f+'"');let $=si(re),de="",A=k||$,qe={},Q=new c.__emitter(c);bn();let z="",Ge=0,me=0,hn=0,En=!1;try{if(re.__emitTokens)re.__emitTokens(w,Q);else{for(A.matcher.considerAll();;){hn++,En?En=!1:A.matcher.considerAll(),A.matcher.lastIndex=me;let E=A.matcher.exec(w);if(!E)break;let v=w.substring(me,E.index),R=Ke(v,E);me=E.index+R}Ke(w.substring(me))}return Q.finalize(),de=Q.toHTML(),{language:f,value:de,relevance:Ge,illegal:!1,_emitter:Q,_top:A}}catch(E){if(E.message&&E.message.includes("Illegal"))return{language:f,value:wn(w),illegal:!0,relevance:0,_illegalBy:{message:E.message,index:me,context:w.slice(me-100,me+100),mode:E.mode,resultSoFar:de},_emitter:Q};if(r)return{language:f,value:wn(w),illegal:!1,relevance:0,errorRaised:E,_emitter:Q,_top:A};throw E}}function b(f){let w={value:wn(f),illegal:!1,relevance:0,_top:a,_emitter:new c.__emitter(c)};return w._emitter.addText(f),w}function _(f,w){w=w||c.languages||Object.keys(n);let y=b(f),k=w.filter(D).filter(j).map(V=>m(V,f,!1));k.unshift(y);let O=k.sort((V,ee)=>{if(V.relevance!==ee.relevance)return ee.relevance-V.relevance;if(V.language&&ee.language){if(D(V.language).supersetOf===ee.language)return 1;if(D(ee.language).supersetOf===V.language)return-1}return 0}),[H,q]=O,se=H;return se.secondBest=q,se}function g(f,w,y){let k=w&&t[w]||y;f.classList.add("hljs"),f.classList.add(`language-${k}`)}function h(f){let w=null,y=u(f);if(d(y))return;if(W("before:highlightElement",{el:f,language:y}),f.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",f);return}if(f.children.length>0&&(c.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(f)),c.throwUnescapedHTML))throw new An("One of your code blocks includes unescaped HTML.",f.innerHTML);w=f;let k=w.textContent,O=y?p(k,{language:y,ignoreIllegals:!0}):_(k);f.innerHTML=O.value,f.dataset.highlighted="yes",g(f,y,O.language),f.result={language:O.language,re:O.relevance,relevance:O.relevance},O.secondBest&&(f.secondBest={language:O.secondBest.language,relevance:O.secondBest.relevance}),W("after:highlightElement",{el:f,result:O,text:k})}function S(f){c=et(c,f)}let I=()=>{C(),Se("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function x(){C(),Se("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let F=!1;function C(){function f(){C()}if(document.readyState==="loading"){F||window.addEventListener("DOMContentLoaded",f,!1),F=!0;return}document.querySelectorAll(c.cssSelector).forEach(h)}function L(f,w){let y=null;try{y=w(e)}catch(k){if(be("Language definition for '{}' could not be registered.".replace("{}",f)),r)be(k);else throw k;y=a}y.name||(y.name=f),n[f]=y,y.rawDefinition=w.bind(null,e),y.aliases&&K(y.aliases,{languageName:f})}function M(f){delete n[f];for(let w of Object.keys(t))t[w]===f&&delete t[w]}function Z(){return Object.keys(n)}function D(f){return f=(f||"").toLowerCase(),n[f]||n[t[f]]}function K(f,{languageName:w}){typeof f=="string"&&(f=[f]),f.forEach(y=>{t[y.toLowerCase()]=w})}function j(f){let w=D(f);return w&&!w.disableAutodetect}function oe(f){f["before:highlightBlock"]&&!f["before:highlightElement"]&&(f["before:highlightElement"]=w=>{f["before:highlightBlock"](Object.assign({block:w.el},w))}),f["after:highlightBlock"]&&!f["after:highlightElement"]&&(f["after:highlightElement"]=w=>{f["after:highlightBlock"](Object.assign({block:w.el},w))})}function te(f){oe(f),s.push(f)}function ie(f){let w=s.indexOf(f);w!==-1&&s.splice(w,1)}function W(f,w){let y=f;s.forEach(function(k){k[y]&&k[y](w)})}function Y(f){return Se("10.7.0","highlightBlock will be removed entirely in v12.0"),Se("10.7.0","Please use highlightElement now."),h(f)}Object.assign(e,{highlight:p,highlightAuto:_,highlightAll:C,highlightElement:h,highlightBlock:Y,configure:S,initHighlighting:I,initHighlightingOnLoad:x,registerLanguage:L,unregisterLanguage:M,listLanguages:Z,getLanguage:D,registerAliases:K,autoDetection:j,inherit:et,addPlugin:te,removePlugin:ie}),e.debugMode=function(){r=!1},e.safeMode=function(){r=!0},e.versionString=ii,e.regex={concat:he,lookahead:rt,either:Nn,optional:wr,anyNumberOfTimes:yr};for(let f in We)typeof We[f]=="object"&&tt(We[f]);return Object.assign(e,We),e},ve=ft({});ve.newInstance=()=>ft({});gt.exports=ve;ve.HighlightJS=ve;ve.default=ve});function l(e,n,...t){let s=document.createElement(e);if(n)for(let[r,i]of Object.entries(n))i==null||i===!1||(r==="class"?s.className=i:r.startsWith("on")&&typeof i=="function"?s.addEventListener(r.slice(2).toLowerCase(),i):r==="html"?s.innerHTML=i:s.setAttribute(r,String(i)));for(let r of t)if(!(r==null||r===!1))if(Array.isArray(r))for(let i of r)Zn(s,i);else Zn(s,r);return s}var br=10;function Yn(){let e=window.getSelection();return!!e&&!e.isCollapsed&&e.toString().length>0}function N(e){let n=!1,t=0,s=0;return{onpointerdown:r=>{let i=r;i.pointerType==="mouse"&&i.button!==0||(t=i.clientX,s=i.clientY,r.preventDefault(),r.stopPropagation())},onpointerup:r=>{let i=r;i.pointerType==="mouse"&&i.button!==0||(r.stopPropagation(),!(Math.hypot(i.clientX-t,i.clientY-s)>br)&&(Yn()||(n=!0,e(r))))},onclick:r=>{if(r.stopPropagation(),n){n=!1;return}Yn()||e(r)}}}function Zn(e,n){n==null||n===!1||(n instanceof Node?e.appendChild(n):e.appendChild(document.createTextNode(String(n))))}function ne(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function we(e){return e=e.replace(/`([^`\n]+)`/g,(n,t)=>`<code>${t}</code>`),e=e.replace(/\*\*([^*\n]+)\*\*/g,"<strong>$1</strong>"),e=e.replace(/(^|[^*])\*([^*\n]+)\*/g,"$1<em>$2</em>"),e=e.replace(/__([^_\n]+)__/g,"<strong>$1</strong>"),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(n,t,s)=>{let r=s.match(/^hydra:\/\/(?:[^/\s]+\/)?sessions\/([A-Za-z0-9_-]+)(?:#turn-\d+)?$/);if(r){let i=r[1];return`<a href="#/session/${ne(i)}">${t}</a>`}return/^(https?:\/\/|\/|\.)/i.test(s)?`<a href="${ne(s)}" target="_blank" rel="noopener noreferrer">${t}</a>`:`[${t}](${s})`}),e}function _n(e){let n=e.trim();if(!n.includes("|"))return null;let t=n;return t.startsWith("|")&&(t=t.slice(1)),t.endsWith("|")&&(t=t.slice(0,-1)),t.split("|").map(s=>s.trim())}function hr(e){let n=_n(e);if(!n||n.length===0)return null;let t=[];for(let s of n){if(!/^:?-+:?$/.test(s))return null;let r=s.startsWith(":"),i=s.endsWith(":");r&&i?t.push("center"):i?t.push("right"):r?t.push("left"):t.push(null)}return t}function Qn(e,n,t){let s="<tr>";for(let r=0;r<e.length;r++){let i=n[r]??null,a=i?` style="text-align:${i}"`:"";s+=`<${t}${a}>${we(ne(e[r]))}</${t}>`}return s+="</tr>",s}function yn(e){typeof e!="string"&&(e=String(e??""));let n=e.split(`
271
- `),t="",s=!1,r="",i=[],a=null,c=[];function d(){c.length!==0&&(t+=`<p>${we(c.join(" "))}</p>`,c=[])}function u(){a&&(t+=`</${a}>`,a=null)}let p=0;for(;p<n.length;){let m=n[p];if(s){if(/^```/.test(m)){t+=`<pre><code data-lang="${ne(r)}">${ne(i.join(`
272
- `))}</code></pre>`,s=!1,i=[],r="",p++;continue}i.push(m),p++;continue}if(/^```/.test(m)){d(),u(),s=!0,r=m.slice(3).trim(),p++;continue}if(p+1<n.length&&m.includes("|")){let _=_n(m),g=hr(n[p+1]);if(_&&g&&_.length>0&&g.length>0){d(),u();let h=Math.max(_.length,g.length),S=[];for(let x=0;x<h;x++)S.push(g[x]??null);t+="<table><thead>",t+=Qn(_,S,"th"),t+="</thead><tbody>";let I=p+2;for(;I<n.length;){let x=_n(n[I]);if(!x)break;t+=Qn(x,S,"td"),I++}t+="</tbody></table>",p=I;continue}}if(/^\s*$/.test(m)){d(),u(),p++;continue}let b;if(b=m.match(/^(#{1,3})\s+(.+)$/)){d(),u();let _=b[1].length;t+=`<h${_}>${we(ne(b[2]))}</h${_}>`,p++;continue}if(b=m.match(/^\s*[-*]\s+(.*)$/)){d(),a!=="ul"&&(u(),t+="<ul>",a="ul"),t+=`<li>${we(ne(b[1]))}</li>`,p++;continue}if(b=m.match(/^\s*\d+\.\s+(.*)$/)){d(),a!=="ol"&&(u(),t+="<ol>",a="ol"),t+=`<li>${we(ne(b[1]))}</li>`,p++;continue}if(b=m.match(/^\s*>\s?(.*)$/)){d(),u(),t+=`<blockquote>${we(ne(b[1]))}</blockquote>`,p++;continue}u(),c.push(ne(m)),p++}return s&&(t+=`<pre><code>${ne(i.join(`
273
- `))}</code></pre>`),d(),u(),t}function Me(e){if(typeof e=="string")return e;if(Array.isArray(e))return e.map(Me).join("");if(e&&typeof e=="object"){let n=e;if(typeof n.text=="string")return n.text;if(typeof n.content=="string")return n.content}return""}var bt=mr(mt(),1);var G=bt.default;function ht(e){let n=e.regex,t={},s={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{className:"variable",variants:[{begin:n.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},s]});let r={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},i=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),a={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,t,r]};r.contains.push(c);let d={match:/\\"/},u={className:"string",begin:/'/,end:/'/},p={match:/\\'/},m={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t]},b=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],_=e.SHEBANG({binary:`(${b.join("|")})`,relevance:10}),g={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},h=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],S=["true","false"],I={match:/(\/[a-z._-]+)+/},x=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],F=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],C=["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"],L=["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:h,literal:S,built_in:[...x,...F,"set","shopt",...C,...L]},contains:[_,e.SHEBANG(),g,m,i,a,I,c,d,u,p,t]}}function Et(e){let n=e.regex,t=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),s="decltype\\(auto\\)",r="[a-zA-Z_]\\w*::",a="("+s+"|"+n.optional(r)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",c={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},u={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})"/})]},p={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},m={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(u,{className:"string"}),{className:"string",begin:/<.*?>/},t,e.C_BLOCK_COMMENT_MODE]},b={className:"title",begin:n.optional(r)+e.IDENT_RE,relevance:0},_=n.optional(r)+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"},I=[m,c,t,e.C_BLOCK_COMMENT_MODE,p,u],x={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:S,contains:I.concat([{begin:/\(/,end:/\)/,keywords:S,contains:I.concat(["self"]),relevance:0}]),relevance:0},F={begin:"("+a+"[\\*&\\s]+)+"+_,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:S,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:s,keywords:S,relevance:0},{begin:_,returnBegin:!0,contains:[e.inherit(b,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:S,relevance:0,contains:[t,e.C_BLOCK_COMMENT_MODE,u,p,c,{begin:/\(/,end:/\)/,keywords:S,relevance:0,contains:["self",t,e.C_BLOCK_COMMENT_MODE,u,p,c]}]},c,t,e.C_BLOCK_COMMENT_MODE,m]};return{name:"C",aliases:["h"],keywords:S,disableAutodetect:!0,illegal:"</",contains:[].concat(x,F,I,[m,{begin:e.IDENT_RE+"::",keywords:S},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:m,strings:u,keywords:S}}}function _t(e){let n=e.regex,t=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),s="decltype\\(auto\\)",r="[a-zA-Z_]\\w*::",a="(?!struct)("+s+"|"+n.optional(r)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",c={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},u={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})"/})]},p={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},m={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(u,{className:"string"}),{className:"string",begin:/<.*?>/},t,e.C_BLOCK_COMMENT_MODE]},b={className:"title",begin:n.optional(r)+e.IDENT_RE,relevance:0},_=n.optional(r)+e.IDENT_RE+"\\s*\\(",g=["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"],h=["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"],I=["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"],C={type:h,keyword:g,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:S},L={className:"function.dispatch",relevance:0,keywords:{_hint:I},begin:n.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,n.lookahead(/(<[^<>]+>|)\s*\(/))},M=[L,m,c,t,e.C_BLOCK_COMMENT_MODE,p,u],Z={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:C,contains:M.concat([{begin:/\(/,end:/\)/,keywords:C,contains:M.concat(["self"]),relevance:0}]),relevance:0},D={className:"function",begin:"("+a+"[\\*&\\s]+)+"+_,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:C,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:s,keywords:C,relevance:0},{begin:_,returnBegin:!0,contains:[b],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[u,p]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:C,relevance:0,contains:[t,e.C_BLOCK_COMMENT_MODE,u,p,c,{begin:/\(/,end:/\)/,keywords:C,relevance:0,contains:["self",t,e.C_BLOCK_COMMENT_MODE,u,p,c]}]},c,t,e.C_BLOCK_COMMENT_MODE,m]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:C,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(Z,D,L,M,[m,{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:C,contains:["self",c]},{begin:e.IDENT_RE+"::",keywords:C},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}var ai=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/},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_-]*/}}),ci=["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"],li=["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"],ui=[...ci,...li],di=["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(),pi=["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(),fi=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),gi=["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","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 yt(e){let n=e.regex,t=ai(e),s={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},r="and or not only",i=/@-?\w[\w]*(-\w+)*/,a="[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:[t.BLOCK_COMMENT,s,t.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+a,relevance:0},t.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+pi.join("|")+")"},{begin:":(:)?("+fi.join("|")+")"}]},t.CSS_VARIABLE,{className:"attribute",begin:"\\b("+gi.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[t.BLOCK_COMMENT,t.HEXCOLOR,t.IMPORTANT,t.CSS_NUMBER_MODE,...c,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...c,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},t.FUNCTION_DISPATCH]},{begin:n.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:i},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:r,attribute:di.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...c,t.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+ui.join("|")+")\\b"}]}}function wt(e){return{name:"Dockerfile",aliases:["docker"],case_insensitive:!0,keywords:["from","maintainer","expose","env","arg","user","onbuild","stopsignal"],contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell",starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"</"}}function St(e){let i={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:i,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:i,illegal:/["']/}]}]}}function vt(e){let n=e.regex,t={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:e.NUMBER_RE}]},s=e.COMMENT();s.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];let r={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},i={className:"literal",begin:/\bon|off|true|false|yes|no\b/},a={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[s,i,r,a,t,"self"],relevance:0},d=/[A-Za-z0-9_-]+/,u=/"(\\"|[^"])*"/,p=/'[^']*'/,m=n.either(d,u,p),b=n.concat(m,"(\\s*\\.\\s*",m,")*",n.lookahead(/\s*=\s*[^#\s]/));return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[s,{className:"section",begin:/\[+/,end:/\]+/},{begin:b,className:"attr",starts:{end:/$/,contains:[s,c,i,r,a,t]}}]}}var Te="[0-9](_*[0-9])*",Xe=`\\.(${Te})`,Ve="[0-9a-fA-F](_*[0-9a-fA-F])*",Tt={className:"number",variants:[{begin:`(\\b(${Te})((${Xe})|\\.)?|(${Xe}))[eE][+-]?(${Te})[fFdD]?\\b`},{begin:`\\b(${Te})((${Xe})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${Xe})[fFdD]?\\b`},{begin:`\\b(${Te})[fFdD]\\b`},{begin:`\\b0[xX]((${Ve})\\.?|(${Ve})?\\.(${Ve}))[pP][+-]?(${Te})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${Ve})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function At(e,n,t){return t===-1?"":e.replace(n,s=>At(e,n,t-1))}function Nt(e){let n=e.regex,t="[\xC0-\u02B8a-zA-Z_$][\xC0-\u02B8a-zA-Z_$0-9]*",s=t+At("(?:<"+t+"~~~(?:\\s*,\\s*"+t+"~~~)*>)?",/~~~/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"]},u={className:"meta",begin:"@"+t,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},p={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+/,t],className:{1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{begin:[n.concat(/(?!else)/,t),/\s+/,t,/\s+/,/=(?!=)/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,t],className:{1:"keyword",3:"title.class"},contains:[p,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+s+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:d,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:d,relevance:0,contains:[u,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,Tt,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},Tt,u]}}var It="[A-Za-z$_][0-9A-Za-z$_]*",mi=["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"],bi=["true","false","null","undefined","NaN","Infinity"],kt=["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"],xt=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],Rt=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],hi=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],Ei=[].concat(Rt,kt,xt);function Mt(e){let n=e.regex,t=(y,{after:k})=>{let O="</"+y[0].slice(1);return y.input.indexOf(O,k)!==-1},s=It,r={begin:"<>",end:"</>"},i=/<[A-Za-z0-9\\._:-]+\s*\/>/,a={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(y,k)=>{let O=y[0].length+y.index,H=y.input[O];if(H==="<"||H===","){k.ignoreMatch();return}H===">"&&(t(y,{after:O})||k.ignoreMatch());let q,se=y.input.substring(O);if(q=se.match(/^\s*=/)){k.ignoreMatch();return}if((q=se.match(/^\s+extends\s+/))&&q.index===0){k.ignoreMatch();return}}},c={$pattern:It,keyword:mi,literal:bi,built_in:Ei,"variable.language":hi},d="[0-9](_?[0-9])*",u=`\\.(${d})`,p="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",m={className:"number",variants:[{begin:`(\\b(${p})((${u})|\\.)?|(${u}))[eE][+-]?(${d})\\b`},{begin:`\\b(${p})\\b((${u})\\b|\\.)?|(${u})\\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:[]},_={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,b],subLanguage:"xml"}},g={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,b],subLanguage:"css"}},h={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,b],subLanguage:"graphql"}},S={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,b]},x={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:s+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},F=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,_,g,h,S,{match:/\$\d+/},m];b.contains=F.concat({begin:/\{/,end:/\}/,keywords:c,contains:["self"].concat(F)});let C=[].concat(x,b.contains),L=C.concat([{begin:/(\s*)\(/,end:/\)/,keywords:c,contains:["self"].concat(C)}]),M={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:L},Z={variants:[{match:[/class/,/\s+/,s,/\s+/,/extends/,/\s+/,n.concat(s,"(",n.concat(/\./,s),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,s],scope:{1:"keyword",3:"title.class"}}]},D={relevance:0,match:n.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:{_:[...kt,...xt]}},K={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},j={variants:[{match:[/function/,/\s+/,s,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[M],illegal:/%/},oe={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function te(y){return n.concat("(?!",y.join("|"),")")}let ie={match:n.concat(/\b/,te([...Rt,"super","import"].map(y=>`${y}\\s*\\(`)),s,n.lookahead(/\s*\(/)),className:"title.function",relevance:0},W={begin:n.concat(/\./,n.lookahead(n.concat(s,/(?![0-9A-Za-z$_(])/))),end:s,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Y={match:[/get|set/,/\s+/,s,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},M]},f="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",w={match:[/const|var|let/,/\s+/,s,/\s*/,/=\s*/,/(async\s*)?/,n.lookahead(f)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[M]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:c,exports:{PARAMS_CONTAINS:L,CLASS_REFERENCE:D},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),K,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,_,g,h,S,x,{match:/\$\d+/},m,D,{scope:"attr",match:s+n.lookahead(":"),relevance:0},w,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[x,e.REGEXP_MODE,{className:"function",begin:f,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:L}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:r.begin,end:r.end},{match:i},{begin:a.begin,"on:begin":a.isTrulyOpeningTag,end:a.end}],subLanguage:"xml",contains:[{begin:a.begin,end:a.end,skip:!0,contains:["self"]}]}]},j,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[M,e.inherit(e.TITLE_MODE,{begin:s,className:"title.function"})]},{match:/\.\.\./,relevance:0},W,{match:"\\$"+s,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[M]},ie,oe,Z,Y,{match:/\$[(.]/}]}}function Ot(e){let n={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},t={match:/[{}[\],:]/,className:"punctuation",relevance:0},s=["true","false","null"],r={scope:"literal",beginKeywords:s.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:s},contains:[n,t,e.QUOTE_STRING_MODE,r,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}var Ae="[0-9](_*[0-9])*",Je=`\\.(${Ae})`,je="[0-9a-fA-F](_*[0-9a-fA-F])*",_i={className:"number",variants:[{begin:`(\\b(${Ae})((${Je})|\\.)?|(${Je}))[eE][+-]?(${Ae})[fFdD]?\\b`},{begin:`\\b(${Ae})((${Je})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${Je})[fFdD]?\\b`},{begin:`\\b(${Ae})[fFdD]\\b`},{begin:`\\b0[xX]((${je})\\.?|(${je})?\\.(${je}))[pP][+-]?(${Ae})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${je})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function Ct(e){let n={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"},t={className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},s={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},r={className:"subst",begin:/\$\{/,end:/\}/,contains:[e.C_NUMBER_MODE]},i={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},a={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[i,r]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,i,r]}]};r.contains.push(a);let 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(a,{className:"string"}),"self"]}]},u=_i,p=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),m={variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},b=m;return b.variants[1].contains=[m],m.variants[1].contains=[b],{name:"Kotlin",aliases:["kt","kts"],keywords:n,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,p,t,s,c,d,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:n,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:n,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[m,e.C_LINE_COMMENT_MODE,p],relevance:0},e.C_LINE_COMMENT_MODE,p,c,d,a,e.C_NUMBER_MODE]},p]},{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]},a,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:`
274
- `},u]}}function Lt(e){let n=e.regex,t={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},s={begin:"^[-\\*]{3,}",end:"$"},r={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}]},i={className:"bullet",begin:"^[ ]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},a={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:n.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}]},u={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},p={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},m=e.inherit(u,{contains:[]}),b=e.inherit(p,{contains:[]});u.contains.push(b),p.contains.push(m);let _=[t,d];return[u,p,m,b].forEach(I=>{I.contains=I.contains.concat(_)}),_=_.concat(u,p),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:_},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:_}]}]},t,i,u,p,{className:"quote",begin:"^>\\s+",contains:_,end:"$"},r,s,d,a,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}function Dt(e){let n=e.regex,t=/(?![A-Za-z0-9])(?![$])/,s=n.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,t),r=n.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,t),i=n.concat(/[A-Z]+/,t),a={scope:"variable",match:"\\$+"+s},c={scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},d={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},u=e.inherit(e.APOS_STRING_MODE,{illegal:null}),p=e.inherit(e.QUOTE_STRING_MODE,{illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(d)}),m={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:e.QUOTE_STRING_MODE.contains.concat(d),"on:begin":(W,Y)=>{Y.data._beginMatch=W[1]||W[2]},"on:end":(W,Y)=>{Y.data._beginMatch!==W[1]&&Y.ignoreMatch()}},b=e.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),_=`[
275
- ]`,g={scope:"string",variants:[p,u,m,b]},h={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},S=["false","null","true"],I=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],x=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],C={keyword:I,literal:(W=>{let Y=[];return W.forEach(f=>{Y.push(f),f.toLowerCase()===f?Y.push(f.toUpperCase()):Y.push(f.toLowerCase())}),Y})(S),built_in:x},L=W=>W.map(Y=>Y.replace(/\|\d+$/,"")),M={variants:[{match:[/new/,n.concat(_,"+"),n.concat("(?!",L(x).join("\\b|"),"\\b)"),r],scope:{1:"keyword",4:"title.class"}}]},Z=n.concat(s,"\\b(?!\\()"),D={variants:[{match:[n.concat(/::/,n.lookahead(/(?!class\b)/)),Z],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[r,n.concat(/::/,n.lookahead(/(?!class\b)/)),Z],scope:{1:"title.class",3:"variable.constant"}},{match:[r,n.concat("::",n.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[r,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},K={scope:"attr",match:n.concat(s,n.lookahead(":"),n.lookahead(/(?!::)/))},j={relevance:0,begin:/\(/,end:/\)/,keywords:C,contains:[K,a,D,e.C_BLOCK_COMMENT_MODE,g,h,M]},oe={relevance:0,match:[/\b/,n.concat("(?!fn\\b|function\\b|",L(I).join("\\b|"),"|",L(x).join("\\b|"),"\\b)"),s,n.concat(_,"*"),n.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[j]};j.contains.push(oe);let te=[K,D,e.C_BLOCK_COMMENT_MODE,g,h,M],ie={begin:n.concat(/#\[\s*\\?/,n.either(r,i)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:S,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:S,keyword:["new","array"]},contains:["self",...te]},...te,{scope:"meta",variants:[{match:r},{match:i}]}]};return{case_insensitive:!1,keywords:C,contains:[ie,e.HASH_COMMENT_MODE,e.COMMENT("//","$"),e.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:e.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},c,{scope:"variable.language",match:/\$this\b/},a,oe,D,{match:[/const/,/\s/,s],scope:{1:"keyword",3:"variable.constant"}},M,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},e.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:C,contains:["self",ie,a,D,e.C_BLOCK_COMMENT_MODE,g,h]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},e.UNDERSCORE_TITLE_MODE]},g,h]}}function Pt(e){let n=e.regex,t=/[\p{XID_Start}_]\p{XID_Continue}*/u,s=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],c={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:s,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},d={className:"meta",begin:/^(>>>|\.\.\.) /},u={className:"subst",begin:/\{/,end:/\}/,keywords:c,illegal:/#/},p={begin:/\{\{/,relevance:0},m={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,d],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,d],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,d,p,u]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,d,p,u]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,p,u]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,p,u]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},b="[0-9](_?[0-9])*",_=`(\\b(${b}))?\\.(${b})|\\b(${b})\\.`,g=`\\b|${s.join("|")}`,h={className:"number",relevance:0,variants:[{begin:`(\\b(${b})|(${_}))[eE][+-]?(${b})[jJ]?(?=${g})`},{begin:`(${_})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${g})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${g})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${g})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${g})`},{begin:`\\b(${b})[jJ](?=${g})`}]},S={className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:c,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},I={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:["self",d,h,m,e.HASH_COMMENT_MODE]}]};return u.contains=[m,h,d],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:c,illegal:/(<\/|\?)|=>/,contains:[d,h,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},m,S,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,t],scope:{1:"keyword",3:"title.function"},contains:[I]},{variants:[{match:[/\bclass/,/\s+/,t,/\s*/,/\(\s*/,t,/\s*\)/]},{match:[/\bclass/,/\s+/,t]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[h,I,m]}]}}function Bt(e){let n=e.regex,t="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",s=n.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),r=n.concat(s,/(::\w+)*/),a={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield",...["include","extend","prepend","public","private","protected","raise","throw"]],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},c={className:"doctag",begin:"@[A-Za-z]+"},d={begin:"#<",end:">"},u=[e.COMMENT("#","$",{contains:[c]}),e.COMMENT("^=begin","^=end",{contains:[c],relevance:10}),e.COMMENT("^__END__",e.MATCH_NOTHING_RE)],p={className:"subst",begin:/#\{/,end:/\}/,keywords:a},m={className:"string",contains:[e.BACKSLASH_ESCAPE,p],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:n.concat(/<<[-~]?'?/,n.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,p]})]}]},b="[1-9](_?[0-9])*|0",_="[0-9](_?[0-9])*",g={className:"number",relevance:0,variants:[{begin:`\\b(${b})(\\.(${_}))?([eE][+-]?(${_})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},h={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:a}]},M=[m,{variants:[{match:[/class\s+/,r,/\s+<\s+/,r]},{match:[/\b(class|module)\s+/,r]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:a},{match:[/(include|extend)\s+/,r],scope:{2:"title.class"},keywords:a},{relevance:0,match:[r,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:s,scope:"title.class"},{match:[/def/,/\s+/,t],scope:{1:"keyword",3:"title.function"},contains:[h]},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[m,{begin:t}],relevance:0},g,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:a},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,p],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(d,u),relevance:0}].concat(d,u);p.contains=M,h.contains=M;let j=[{begin:/^\s*=>/,starts:{end:"$",contains:M}},{className:"meta.prompt",begin:"^("+"[>?]>"+"|"+"[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]"+"|"+"(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>"+")(?=[ ])",starts:{end:"$",keywords:a,contains:M}}];return u.unshift(d),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:a,illegal:/\/\*/,contains:[e.SHEBANG({binary:"ruby"})].concat(j).concat(u).concat(M)}}function Ft(e){let n=e.regex,t=/(r#)?/,s=n.concat(t,e.UNDERSCORE_IDENT_RE),r=n.concat(t,e.IDENT_RE),i={className:"title.function.invoke",relevance:0,begin:n.concat(/\b/,/(?!let|for|while|if|else|match\b)/,r,n.lookahead(/\s*\(/))},a="([ui](8|16|32|64|128|size)|f(32|64))?",c=["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","union","unsafe","unsized","use","virtual","where","while","yield"],d=["true","false","Some","None","Ok","Err"],u=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","eprintln!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],p=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"];return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?",type:p,keyword:c,literal:d,built_in:u},illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*(?!')/},{scope:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'/,end:/'/,contains:[{scope:"char.escape",match:/\\('|\w|x\w{2}|u\w{4}|U\w{8})/}]}]},{className:"number",variants:[{begin:"\\b0b([01_]+)"+a},{begin:"\\b0o([0-7_]+)"+a},{begin:"\\b0x([A-Fa-f0-9_]+)"+a},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+a}],relevance:0},{begin:[/fn/,/\s+/,s],className:{1:"keyword",3:"title.function"}},{className:"meta",begin:"#!?\\[",end:"\\]",contains:[{className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,s],className:{1:"keyword",3:"keyword",4:"variable"}},{begin:[/for/,/\s+/,s,/\s+/,/in/],className:{1:"keyword",3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,s],className:{1:"keyword",3:"title.class"}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,s],className:{1:"keyword",3:"title.class"}},{begin:e.IDENT_RE+"::",keywords:{keyword:"Self",built_in:u,type:p}},{className:"punctuation",begin:"->"},i]}}function $t(e){let n=e.regex,t=e.COMMENT("--","$"),s={scope:"string",variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},r={begin:/"/,end:/"/,contains:[{match:/""/}]},i=["true","false","unknown"],a=["double precision","large object","with timezone","without timezone"],c=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],d=["add","asc","collation","desc","final","first","last","view"],u=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year"],p=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],m=["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"],b=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],_=p,g=[...u,...d].filter(L=>!p.includes(L)),h={scope:"variable",match:/@[a-z0-9][a-z0-9_]*/},S={scope:"operator",match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},I={match:n.concat(/\b/,n.either(..._),/\s*\(/),relevance:0,keywords:{built_in:_}};function x(L){return n.concat(/\b/,n.either(...L.map(M=>M.replace(/\s+/,"\\s+"))),/\b/)}let F={scope:"keyword",match:x(b),relevance:0};function C(L,{exceptions:M,when:Z}={}){let D=Z;return M=M||[],L.map(K=>K.match(/\|\d+$/)||M.includes(K)?K:D(K)?`${K}|0`:K)}return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:C(g,{when:L=>L.length<3}),literal:i,type:c,built_in:m},contains:[{scope:"type",match:x(a)},F,I,h,s,r,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,S]}}function Kt(e){return e?typeof e=="string"?e:e.source:null}function Le(e){return U("(?=",e,")")}function U(...e){return e.map(t=>Kt(t)).join("")}function yi(e){let n=e[e.length-1];return typeof n=="object"&&n.constructor===Object?(e.splice(e.length-1,1),n):{}}function J(...e){return"("+(yi(e).capture?"":"?:")+e.map(s=>Kt(s)).join("|")+")"}var Mn=e=>U(/\b/,e,/\w$/.test(e)?/\b/:/\B/),wi=["Protocol","Type"].map(Mn),Ut=["init","self"].map(Mn),Si=["Any","Self"],xn=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","package","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],Ht=["false","nil","true"],vi=["assignment","associativity","higherThan","left","lowerThan","none","right"],Ti=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],zt=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],qt=J(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),Gt=J(qt,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),Rn=U(qt,Gt,"*"),Wt=J(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),nn=J(Wt,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),ae=U(Wt,nn,"*"),en=U(/[A-Z]/,nn,"*"),Ai=["attached","autoclosure",U(/convention\(/,J("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",U(/objc\(/,ae,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],Ni=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];function Yt(e){let n={match:/\s+/,relevance:0},t=e.COMMENT("/\\*","\\*/",{contains:["self"]}),s=[e.C_LINE_COMMENT_MODE,t],r={match:[/\./,J(...wi,...Ut)],className:{2:"keyword"}},i={match:U(/\./,J(...xn)),relevance:0},a=xn.filter($=>typeof $=="string").concat(["_|0"]),c=xn.filter($=>typeof $!="string").concat(Si).map(Mn),d={variants:[{className:"keyword",match:J(...c,...Ut)}]},u={$pattern:J(/\b\w+/,/#\w+/),keyword:a.concat(Ti),literal:Ht},p=[r,i,d],m={match:U(/\./,J(...zt)),relevance:0},b={className:"built_in",match:U(/\b/,J(...zt),/(?=\()/)},_=[m,b],g={match:/->/,relevance:0},h={className:"operator",relevance:0,variants:[{match:Rn},{match:`\\.(\\.|${Gt})+`}]},S=[g,h],I="([0-9]_*)+",x="([0-9a-fA-F]_*)+",F={className:"number",relevance:0,variants:[{match:`\\b(${I})(\\.(${I}))?([eE][+-]?(${I}))?\\b`},{match:`\\b0x(${x})(\\.(${x}))?([pP][+-]?(${I}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},C=($="")=>({className:"subst",variants:[{match:U(/\\/,$,/[0\\tnr"']/)},{match:U(/\\/,$,/u\{[0-9a-fA-F]{1,8}\}/)}]}),L=($="")=>({className:"subst",match:U(/\\/,$,/[\t ]*(?:[\r\n]|\r\n)/)}),M=($="")=>({className:"subst",label:"interpol",begin:U(/\\/,$,/\(/),end:/\)/}),Z=($="")=>({begin:U($,/"""/),end:U(/"""/,$),contains:[C($),L($),M($)]}),D=($="")=>({begin:U($,/"/),end:U(/"/,$),contains:[C($),M($)]}),K={className:"string",variants:[Z(),Z("#"),Z("##"),Z("###"),D(),D("#"),D("##"),D("###")]},j=[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}],oe={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//,contains:j},te=$=>{let de=U($,/\//),A=U(/\//,$);return{begin:de,end:A,contains:[...j,{scope:"comment",begin:`#(?!.*${A})`,end:/$/}]}},ie={scope:"regexp",variants:[te("###"),te("##"),te("#"),oe]},W={match:U(/`/,ae,/`/)},Y={className:"variable",match:/\$\d+/},f={className:"variable",match:`\\$${nn}+`},w=[W,Y,f],y={match:/(@|#(un)?)available/,scope:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:Ni,contains:[...S,F,K]}]}},k={scope:"keyword",match:U(/@/,J(...Ai),Le(J(/\(/,/\s+/)))},O={scope:"meta",match:U(/@/,ae)},H=[y,k,O],q={match:Le(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:U(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,nn,"+")},{className:"type",match:en,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:U(/\s+&\s+/,Le(en)),relevance:0}]},se={begin:/</,end:/>/,keywords:u,contains:[...s,...p,...H,g,q]};q.contains.push(se);let V={match:U(ae,/\s*:/),keywords:"_|0",relevance:0},ee={begin:/\(/,end:/\)/,relevance:0,keywords:u,contains:["self",V,...s,ie,...p,..._,...S,F,K,...w,...H,q]},_e={begin:/</,end:/>/,keywords:"repeat each",contains:[...s,q]},ze={begin:J(Le(U(ae,/\s*:/)),Le(U(ae,/\s+/,ae,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:ae}]},Re={begin:/\(/,end:/\)/,keywords:u,contains:[ze,...s,...p,...S,F,K,...H,q,ee],endsParent:!0,illegal:/["']/},fn={match:[/(func|macro)/,/\s+/,J(W.match,ae,Rn)],className:{1:"keyword",3:"title.function"},contains:[_e,Re,n],illegal:[/\[/,/%/]},gn={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[_e,Re,n],illegal:/\[|%/},mn={match:[/operator/,/\s+/,Rn],className:{1:"keyword",3:"title"}},bn={begin:[/precedencegroup/,/\s+/,en],className:{1:"keyword",3:"title"},contains:[q],keywords:[...vi,...Ht],end:/}/},ye={match:[/class\b/,/\s+/,/func\b/,/\s+/,/\b[A-Za-z_][A-Za-z0-9_]*\b/],scope:{1:"keyword",3:"keyword",5:"title.function"}},Ke={match:[/class\b/,/\s+/,/var\b/],scope:{1:"keyword",3:"keyword"}},re={begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,ae,/\s*/],beginScope:{1:"keyword",3:"title.class"},keywords:u,contains:[_e,...p,{begin:/:/,end:/\{/,keywords:u,contains:[{scope:"title.class.inherited",match:en},...p],relevance:0}]};for(let $ of K.variants){let de=$.contains.find(qe=>qe.label==="interpol");de.keywords=u;let A=[...p,..._,...S,F,K,...w];de.contains=[...A,{begin:/\(/,end:/\)/,contains:["self",...A]}]}return{name:"Swift",keywords:u,contains:[...s,fn,gn,ye,Ke,re,mn,bn,{beginKeywords:"import",end:/$/,contains:[...s],relevance:0},ie,...p,..._,...S,F,K,...w,...H,q,ee]}}var tn="[A-Za-z$_][0-9A-Za-z$_]*",Zt=["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"],Qt=["true","false","null","undefined","NaN","Infinity"],Xt=["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"],Vt=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],Jt=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],jt=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],es=[].concat(Jt,Xt,Vt);function Ii(e){let n=e.regex,t=(y,{after:k})=>{let O="</"+y[0].slice(1);return y.input.indexOf(O,k)!==-1},s=tn,r={begin:"<>",end:"</>"},i=/<[A-Za-z0-9\\._:-]+\s*\/>/,a={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(y,k)=>{let O=y[0].length+y.index,H=y.input[O];if(H==="<"||H===","){k.ignoreMatch();return}H===">"&&(t(y,{after:O})||k.ignoreMatch());let q,se=y.input.substring(O);if(q=se.match(/^\s*=/)){k.ignoreMatch();return}if((q=se.match(/^\s+extends\s+/))&&q.index===0){k.ignoreMatch();return}}},c={$pattern:tn,keyword:Zt,literal:Qt,built_in:es,"variable.language":jt},d="[0-9](_?[0-9])*",u=`\\.(${d})`,p="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",m={className:"number",variants:[{begin:`(\\b(${p})((${u})|\\.)?|(${u}))[eE][+-]?(${d})\\b`},{begin:`\\b(${p})\\b((${u})\\b|\\.)?|(${u})\\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:[]},_={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,b],subLanguage:"xml"}},g={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,b],subLanguage:"css"}},h={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,b],subLanguage:"graphql"}},S={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,b]},x={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:s+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},F=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,_,g,h,S,{match:/\$\d+/},m];b.contains=F.concat({begin:/\{/,end:/\}/,keywords:c,contains:["self"].concat(F)});let C=[].concat(x,b.contains),L=C.concat([{begin:/(\s*)\(/,end:/\)/,keywords:c,contains:["self"].concat(C)}]),M={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:L},Z={variants:[{match:[/class/,/\s+/,s,/\s+/,/extends/,/\s+/,n.concat(s,"(",n.concat(/\./,s),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,s],scope:{1:"keyword",3:"title.class"}}]},D={relevance:0,match:n.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:{_:[...Xt,...Vt]}},K={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},j={variants:[{match:[/function/,/\s+/,s,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[M],illegal:/%/},oe={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function te(y){return n.concat("(?!",y.join("|"),")")}let ie={match:n.concat(/\b/,te([...Jt,"super","import"].map(y=>`${y}\\s*\\(`)),s,n.lookahead(/\s*\(/)),className:"title.function",relevance:0},W={begin:n.concat(/\./,n.lookahead(n.concat(s,/(?![0-9A-Za-z$_(])/))),end:s,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Y={match:[/get|set/,/\s+/,s,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},M]},f="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",w={match:[/const|var|let/,/\s+/,s,/\s*/,/=\s*/,/(async\s*)?/,n.lookahead(f)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[M]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:c,exports:{PARAMS_CONTAINS:L,CLASS_REFERENCE:D},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),K,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,_,g,h,S,x,{match:/\$\d+/},m,D,{scope:"attr",match:s+n.lookahead(":"),relevance:0},w,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[x,e.REGEXP_MODE,{className:"function",begin:f,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:L}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:r.begin,end:r.end},{match:i},{begin:a.begin,"on:begin":a.isTrulyOpeningTag,end:a.end}],subLanguage:"xml",contains:[{begin:a.begin,end:a.end,skip:!0,contains:["self"]}]}]},j,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[M,e.inherit(e.TITLE_MODE,{begin:s,className:"title.function"})]},{match:/\.\.\./,relevance:0},W,{match:"\\$"+s,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[M]},ie,oe,Z,Y,{match:/\$[(.]/}]}}function ns(e){let n=e.regex,t=Ii(e),s=tn,r=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],i={begin:[/namespace/,/\s+/,e.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},a={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:r},contains:[t.exports.CLASS_REFERENCE]},c={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},d=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],u={$pattern:tn,keyword:Zt.concat(d),literal:Qt,built_in:es.concat(r),"variable.language":jt},p={className:"meta",begin:"@"+s},m=(h,S,I)=>{let x=h.contains.findIndex(F=>F.label===S);if(x===-1)throw new Error("can not find mode to replace");h.contains.splice(x,1,I)};Object.assign(t.keywords,u),t.exports.PARAMS_CONTAINS.push(p);let b=t.contains.find(h=>h.scope==="attr"),_=Object.assign({},b,{match:n.concat(s,n.lookahead(/\s*\?:/))});t.exports.PARAMS_CONTAINS.push([t.exports.CLASS_REFERENCE,b,_]),t.contains=t.contains.concat([p,i,a,_]),m(t,"shebang",e.SHEBANG()),m(t,"use_strict",c);let g=t.contains.find(h=>h.label==="func.def");return g.relevance=0,Object.assign(t,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),t}function ts(e){let n=e.regex,t=n.concat(/[\p{L}_]/u,n.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),s=/[\p{L}0-9._:-]+/u,r={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},i={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},a=e.inherit(i,{begin:/\(/,end:/\)/}),c=e.inherit(e.APOS_STRING_MODE,{className:"string"}),d=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),u={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:s,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[r]},{begin:/'/,end:/'/,contains:[r]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[i,d,c,a,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[i,a,d,c]}]}]},e.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},r,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[d]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[u],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[u],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:n.concat(/</,n.lookahead(n.concat(t,n.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:t,relevance:0,starts:u}]},{className:"tag",begin:n.concat(/<\//,n.lookahead(n.concat(t,/>/))),contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}function ss(e){let n="true false yes no null",t="[\\w#;/?:@&=+$,.~*'()[\\]]+",s={className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},r={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},i={className:"string",relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:"char.escape",relevance:0}]},a={className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,r]},c=e.inherit(a,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),b={className:"number",begin:"\\b"+"[0-9]{4}(-[0-9][0-9]){0,2}"+"([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?"+"(\\.[0-9]*)?"+"([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?"+"\\b"},_={end:",",endsWithParent:!0,excludeEnd:!0,keywords:n,relevance:0},g={begin:/\{/,end:/\}/,contains:[_],illegal:"\\n",relevance:0},h={begin:"\\[",end:"\\]",contains:[_],illegal:"\\n",relevance:0},S=[s,{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+t},{className:"type",begin:"!<"+t+">"},{className:"type",begin:"!"+t},{className:"type",begin:"!!"+t},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},b,{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},g,h,i,a],I=[...S];return I.pop(),I.push(c),_.contains=I,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:S}}G.registerLanguage("bash",ht);G.registerLanguage("c",Et);G.registerLanguage("cpp",_t);G.registerLanguage("css",yt);G.registerLanguage("dockerfile",wt);G.registerLanguage("go",St);G.registerLanguage("ini",vt);G.registerLanguage("java",Nt);G.registerLanguage("javascript",Mt);G.registerLanguage("json",Ot);G.registerLanguage("kotlin",Ct);G.registerLanguage("markdown",Lt);G.registerLanguage("php",Dt);G.registerLanguage("python",Pt);G.registerLanguage("ruby",Bt);G.registerLanguage("rust",Ft);G.registerLanguage("sql",$t);G.registerLanguage("swift",Yt);G.registerLanguage("typescript",ns);G.registerLanguage("xml",ts);G.registerLanguage("yaml",ss);var ki={bash:"bash",sh:"bash",zsh:"bash",c:"c",h:"c",cc:"cpp",cpp:"cpp",cxx:"cpp",hpp:"cpp",hxx:"cpp",css:"css",dockerfile:"dockerfile",go:"go",ini:"ini",toml:"ini",java:"java",cjs:"javascript",js:"javascript",jsx:"javascript",mjs:"javascript",json:"json",jsonc:"json",kt:"kotlin",kts:"kotlin",md:"markdown",markdown:"markdown",php:"php",py:"python",rb:"ruby",rs:"rust",sql:"sql",swift:"swift",cts:"typescript",mts:"typescript",ts:"typescript",tsx:"typescript",htm:"xml",html:"xml",svg:"xml",xml:"xml",yaml:"yaml",yml:"yaml"};function rs(e,n){let t=n.split(".").pop()?.toLowerCase()??"",s=ki[t]??(n.toLowerCase()==="dockerfile"?"dockerfile":null);return s?G.highlight(e,{language:s}).value:null}function is(e){let n=e.content;if(Array.isArray(n))for(let s of n){if(!s||typeof s!="object")continue;let r=s;if(r.type!=="diff")continue;let i=typeof r.oldText=="string"?r.oldText:void 0,a=typeof r.newText=="string"?r.newText:void 0;if(i===void 0&&a===void 0)continue;let c=typeof r.path=="string"?r.path:void 0;return{...c!==void 0?{path:c}:{},oldText:i??"",newText:a??""}}let t=e.rawInput;if(t&&typeof t=="object"&&!Array.isArray(t)){let s=t,r=typeof s.file_path=="string"?s.file_path:typeof s.path=="string"?s.path:void 0;if(typeof s.old_string=="string"&&typeof s.new_string=="string")return{...r!==void 0?{path:r}:{},oldText:s.old_string,newText:s.new_string};if(typeof s.content=="string")return{...r!==void 0?{path:r}:{},oldText:"",newText:s.content}}return null}function os(e){let n=e.oldText.split(`
276
- `),t=e.newText.split(`
277
- `);return n.length>0&&n[n.length-1]===""&&n.pop(),t.length>0&&t[t.length-1]===""&&t.pop(),{oldLines:n,newLines:t}}function xi(e,n){let t=e.length,s=n.length;if(t===0||s===0){let d=[];for(let u of e)d.push({op:"-",text:u});for(let u of n)d.push({op:"+",text:u});return d}let r=Array.from({length:t+1},()=>new Array(s+1).fill(0));for(let d=t-1;d>=0;d--)for(let u=s-1;u>=0;u--)e[d]===n[u]?r[d][u]=r[d+1][u+1]+1:r[d][u]=Math.max(r[d+1][u],r[d][u+1]);let i=[],a=0,c=0;for(;a<t&&c<s;)e[a]===n[c]?(i.push({op:"=",text:e[a]}),a++,c++):r[a+1][c]>=r[a][c+1]?(i.push({op:"-",text:e[a]}),a++):(i.push({op:"+",text:n[c]}),c++);for(;a<t;)i.push({op:"-",text:e[a]}),a++;for(;c<s;)i.push({op:"+",text:n[c]}),c++;return i}function as(e,n){let t=0,s=Math.min(e.length,n.length);for(;t<s&&e[t]===n[t];)t++;let r=e.length,i=n.length;for(;r>t&&i>t&&e[r-1]===n[i-1];)r--,i--;let a=[];for(let c=0;c<t;c++)a.push({op:"=",text:e[c]});a.push(...xi(e.slice(t,r),n.slice(t,i)));for(let c=r;c<e.length;c++)a.push({op:"=",text:e[c]});return a}function cs(e){let{oldLines:n,newLines:t}=os(e),s=0,r=0;for(let i of as(n,t))i.op==="+"?s++:i.op==="-"&&r++;return{added:s,removed:r}}function ls(e,n={}){let t=n.maxLines??40,s=n.contextLines??3,{oldLines:r,newLines:i}=os(e),a=as(r,i),c=[];if(Number.isFinite(s)){if(!a.some(b=>b.op!=="="))return[];let p=new Array(a.length).fill(!1);for(let b=0;b<a.length;b++)if(a[b].op!=="="){let _=Math.max(0,b-s),g=Math.min(a.length-1,b+s);for(let h=_;h<=g;h++)p[h]=!0}let m=0;for(;m<a.length;){if(p[m]){c.push({op:a[m].op,text:a[m].text}),m++;continue}let b=m;for(;b<a.length&&!p[b];)b++;let _=b-m;c.push({op:"gap",text:`\u22EF ${_} unchanged line${_===1?"":"s"}`}),m=b}}else for(let u of a)c.push({op:u.op,text:u.text});let d=[];for(let u=0;u<c.length;u++){if(d.length>=t-1&&u<c.length-1){let m=c.length-u;d.push({op:"gap",text:`\u2026 ${m} more line${m===1?"":"s"}`});break}d.push(c[u])}return d}function Cn(e){o.current&&o.current.log.push(e)}function Ri(e){if(e.kind!=="stream"||e.role!=="user"||!e.queueEntry)return!1;let n=e.queueEntry.status;return n==="queued"||n==="editing"}function ds(){if(!o.current)return 0;let e=o.current.log;for(let n=0;n<e.length;n++)if(Ri(e[n]))return n;return e.length}function fe(e){o.current&&o.current.log.splice(ds(),0,e)}function us(){o.current&&(o.current.inTurn=!0)}function Mi(){if(!o.current)return;o.current.inTurn=!1;let e=o.current.idleListeners;o.current.idleListeners=[];for(let n of e)try{n()}catch{}}function On(e,n,t=!1){if(!o.current)return;let s=Me(n);if(!s)return;let r=o.current.log,i=ds(),a;for(let c=i-1;c>=0;c--){let d=r[c];if(d.kind!=="spinner"){a=d;break}}if(a&&a.kind==="stream"&&a.role===e&&!a.closed&&!!a.synthetic===t){a.text+=s;return}r.splice(i,0,{kind:"stream",role:e,text:s,synthetic:t||void 0})}function Ie(){if(o.current)for(let e=o.current.log.length-1;e>=0;e--){let n=o.current.log[e];if(n.kind==="stream"&&!n.closed){n.closed=!0;return}}}function ps(e){if(!o.current)return!1;let n=Me(e);if(!n)return!1;let t=o.current.recentOwnPrompts;for(let s=0;s<t.length;s++)if(t[s].text===n)return t.splice(s,1),!0;return!1}function sn(e){if(!e)return"";if(typeof e=="string")return e;if(Array.isArray(e))return e.map(sn).join("");if(typeof e=="object"){let n=e;if(n.text)return String(n.text);if(n.content)return sn(n.content);if(n.diff)return String(n.diff);try{return JSON.stringify(e,null,2)}catch{return String(e)}}return""}function De(){if(!o.current)return;let e=o.current;if(e.spinner){e.log.some(n=>n.kind==="spinner")||fe({kind:"spinner",spinner:e.spinner});return}e.spinner={toolCallIds:[],expanded:!1},fe({kind:"spinner",spinner:e.spinner})}function Oi(e){return e?e.toLowerCase().replace(/[_\s-]/g,"")==="exitplanmode":!1}function Ci(e){let n=e.rawInput;if(!n||typeof n!="object"||Array.isArray(n))return null;let t=n.plan;return typeof t!="string"||t.length===0?null:t}function Li(e){if(!o.current)return null;let n=o.current.log;for(let t=0;t<n.length;t++){let s=n[t];if(s.kind==="exit-plan-mode"&&s.toolCallId===e)return{idx:t,item:s}}return null}function fs(e){if(!o.current)return!1;let n=String(e.toolCallId??"");if(!n)return!1;let t=e.name??e.title,s=Li(n);if(!Oi(t)&&!s)return!1;let r=Ci(e),i=typeof e.status=="string"?e.status:void 0;if(s)return r!==null&&(s.item.plan=r),i!==void 0&&(s.item.status=i),!0;if(r===null)return!1;Ie();let a={kind:"exit-plan-mode",toolCallId:n,plan:r};return i!==void 0&&(a.status=i),fe(a),!0}function Di(e){if(!o.current)return null;let n=o.current.log;for(let t=0;t<n.length;t++){let s=n[t];if(s.kind==="edit-diff"&&s.toolCallId===e)return{idx:t,item:s}}return null}function gs(e){if(!o.current)return!1;let n=String(e.toolCallId??"");if(!n)return!1;let t=Di(n),s=is(e),r=typeof e.status=="string"?e.status:void 0;if(t)return s!==null&&(t.item.diff=s),r!==void 0&&(t.item.status=r),!0;if(s===null)return!1;Ie();let i={kind:"edit-diff",toolCallId:n,diff:s,expanded:!1};return r!==void 0&&(i.status=r),fe(i),!0}function Pi(e){if(!o.current)return;if(Ie(),fs(e)){Ne(String(e.toolCallId),typeof e.status=="string"?e.status:void 0);return}if(gs(e)){Ne(String(e.toolCallId),typeof e.status=="string"?e.status:void 0);return}let n={toolCallId:String(e.toolCallId),title:String(e.title??e.kind??"tool"),kind:String(e.kind??""),status:String(e.status??"in_progress"),content:sn(e.content)};o.current.toolCalls.set(n.toolCallId,n),De(),o.current.spinner.toolCallIds.push(n.toolCallId),Ne(n.toolCallId,n.status)}function Bi(e){if(!o.current)return;if(fs(e)){typeof e.status=="string"&&Ne(String(e.toolCallId),e.status);return}if(gs(e)){typeof e.status=="string"&&Ne(String(e.toolCallId),e.status);return}let n=o.current.toolCalls.get(String(e.toolCallId));n&&(typeof e.status=="string"&&(n.status=e.status,Ne(n.toolCallId,e.status)),typeof e.title=="string"&&(n.title=e.title),e.content!==void 0&&(n.content=(n.content||"")+sn(e.content)))}function rn(){if(o.current){o.current.spinner=null,o.current.log=o.current.log.filter(e=>e.kind!=="spinner"),Ie();for(let e of o.current.promptQueue)e.status==="processing"&&(e.status="done");o.current.currentPlanEntry=null,o.current.currentHeadMessageId=void 0,Mi()}}function Fi(e){if(!o.current)return;let t=(Array.isArray(e.prompt)?e.prompt:[]).map(r=>Me(r)).join("");if(!t)return;let s=typeof e.messageId=="string"?e.messageId:void 0;s&&o.current.queueByMessageId.has(s)||ps({text:t})||(Ie(),fe({kind:"stream",role:"user",text:t,closed:!0}))}function ms(e){if(o.current)for(let n of e){if(!n||typeof n!="object")continue;let t=n,s=typeof t.messageId=="string"?t.messageId:"";if(!s||o.current.queueByMessageId.has(s))continue;let r=Array.isArray(t.prompt)?t.prompt:[],i="";for(let d of r)if(d&&typeof d=="object"){let u=d;u.type==="text"&&typeof u.text=="string"&&(i+=u.text)}if(!i)continue;let a=typeof t.position=="number"?t.position:0,c={id:"snap_"+Math.random().toString(36).slice(2,10),text:i,status:a===0?"processing":"queued",aheadAtEnqueue:Math.max(0,a),messageId:s};if(o.current.queueByMessageId.set(s,c),a===0){o.current.currentHeadMessageId=s;let d=$i(i);if(d){d.queueEntry=c;continue}}o.current.log.push({kind:"stream",role:"user",text:i,closed:!0,queueEntry:c})}}function $i(e){if(!o.current)return null;let n=o.current.log;for(let t=n.length-1;t>=0;t--){let s=n[t];if(s.kind==="stream"&&s.role==="user"&&!s.queueEntry&&s.text===e)return s}return null}function Ui(e){if(!o.current)return;let n=typeof e.messageId=="string"?e.messageId:"";if(!n)return;let s=(e._meta??{})["hydra-acp"]??{},r=typeof s.amending=="string"?s.amending:void 0,i=e.originator??{},a=typeof i.clientId=="string"?i.clientId:"";if(!!o.current.ownClientId&&a===o.current.ownClientId){let g=o.current.promptQueue.find(S=>S.messageId===void 0&&S.status!=="cancelled");if(!g)return;g.messageId=n,o.current.queueByMessageId.set(n,g),r!==void 0&&(g.amendsMessageId=r,on(r,n));let h=typeof e.position=="number"?e.position:1;g.aheadAtEnqueue=Math.max(0,h),h===0?g.status="processing":g.status==="pending"&&(g.status="queued");return}let d=Array.isArray(e.prompt)?e.prompt:[],u="";for(let g of d)if(g&&typeof g=="object"){let h=g;h.type==="text"&&typeof h.text=="string"&&(u+=h.text)}if(!u)return;let p=typeof e.position=="number"?e.position:0,m=typeof e.queueDepth=="number"?e.queueDepth:1,b={id:"peer_"+Math.random().toString(36).slice(2,10),text:u,status:p===0?"processing":"queued",aheadAtEnqueue:Math.max(0,p),messageId:n};r!==void 0&&(b.amendsMessageId=r,on(r,n)),o.current.queueByMessageId.set(n,b),Ie();let _={kind:"stream",role:"user",text:u,closed:!0,queueEntry:b};p===0?fe(_):o.current.log.push(_)}function Hi(e){if(!o.current)return;let n=typeof e.messageId=="string"?e.messageId:"";if(!n)return;let t=o.current.queueByMessageId.get(n);if(!t)return;let s=Array.isArray(e.prompt)?e.prompt:[],r="";for(let i of s)if(i&&typeof i=="object"){let a=i;a.type==="text"&&typeof a.text=="string"&&(r+=a.text)}if(r){t.text=r;for(let i of o.current.log)if(i.kind==="stream"&&i.role==="user"&&i.queueEntry===t){i.text=r;break}}}function zi(e){if(!o.current)return;let n=typeof e.messageId=="string"?e.messageId:"";if(!n)return;let t=typeof e.reason=="string"?e.reason:"";t==="started"&&(o.current.currentHeadMessageId=n);let s=o.current.queueByMessageId.get(n);s&&(t==="started"?s.status="processing":(t==="cancelled"||t==="abandoned")&&(s.amendedByMessageId!==void 0?s.status="amended":s.status="cancelled",o.current.queueByMessageId.delete(n)))}function Ki(e){if(!o.current)return;let n=typeof e.messageId=="string"?e.messageId:"";if(!n)return;let t=o.current.queueByMessageId.get(n);t&&(t.held=!0)}function qi(e){if(!o.current)return;let n=typeof e.messageId=="string"?e.messageId:"";if(!n)return;let t=o.current.queueByMessageId.get(n);t&&(t.held=!1)}function Gi(e){o.current&&typeof e.count=="number"&&(o.current.armedTasks=e.count,o.current.armedSince=e.count>0&&typeof e.since=="number"?e.since:void 0,o.current.armedTaskList=Ln(e.tasks))}function Ln(e){if(!Array.isArray(e))return;let n=[];for(let t of e){if(!t||typeof t!="object")continue;let s=t;typeof s.label!="string"||typeof s.since!="number"||n.push({label:s.label,since:s.since,taskId:typeof s.taskId=="string"?s.taskId:void 0,taskType:typeof s.taskType=="string"?s.taskType:void 0,toolCallId:typeof s.toolCallId=="string"?s.toolCallId:void 0})}return n}function Wi(e){if(!o.current)return;let n=typeof e.cancelledMessageId=="string"?e.cancelledMessageId:"",t=typeof e.newMessageId=="string"?e.newMessageId:"";if(!n||!t)return;on(n,t);let s=o.current.queueByMessageId.get(t);s&&s.amendsMessageId===void 0&&(s.amendsMessageId=n)}function on(e,n){if(!o.current)return;let t=o.current.queueByMessageId.get(e)??o.current.promptQueue.find(s=>s.messageId===e);t&&(t.amendedByMessageId=n,t.status==="cancelled"&&(t.status="amended"))}function Yi(e){if(!o.current)return;let n=e.entries??e.plan??null;if(o.current.plan=n,o.current.currentPlanEntry){o.current.currentPlanEntry.entries=n;return}let t={kind:"plan",entries:n};fe(t),o.current.currentPlanEntry=t}function Zi(e){if(!o.current)return;let n=typeof e?.toolCallId=="string"?e.toolCallId:void 0;n&&bs(n)}function bs(e){o.current&&(o.current.pendingPermissions.delete(e),o.current.log=o.current.log.filter(n=>!(n.kind==="perm"&&n.toolCallId===e)))}function Ne(e,n){!o.current||!e||!n||n==="pending"||o.current.pendingPermissions.has(e)&&bs(e)}function hs(e){if(e.method==="hydra-acp/prompt_queue/added"){Ui(e.params??{});return}if(e.method==="hydra-acp/prompt_queue/updated"){Hi(e.params??{});return}if(e.method==="hydra-acp/prompt_queue/removed"){zi(e.params??{});return}if(e.method==="hydra-acp/prompt_queue/held"){Ki(e.params??{});return}if(e.method==="hydra-acp/prompt_queue/released"){qi(e.params??{});return}if(e.method==="hydra-acp/session/armed_tasks_updated"){Gi(e.params??{});return}if(e.method==="hydra-acp/prompt/amended"){Wi(e.params??{});return}if(e.method!=="session/update")return;let n=e.params?.update??null;if(!n||typeof n!="object")return;let t=String(n.sessionUpdate??"");if(t==="permission_resolved"){Zi(n);return}switch(t){case"prompt_received":case"user_message_chunk":case"agent_message_chunk":case"agent_thought_chunk":case"tool_call":case"tool_call_update":case"plan":us();break;default:break}switch(t){case"user_message_chunk":{if(((n._meta??{})["hydra-acp"]??{}).compatFor==="prompt_received")break;ps(n.content)||On("user",n.content);break}case"agent_message_chunk":{let r=(n._meta??{})["hydra-acp"]??{};On("agent",n.content,r.synthetic===!0);break}case"agent_thought_chunk":On("thought",n.content);break;case"tool_call":Pi(n);break;case"tool_call_update":Bi(n);break;case"current_mode_update":o.current&&(o.current.mode=n.modeId??n.currentModeId??null,Array.isArray(n.availableModes)&&(o.current.modes=n.availableModes),T());break;case"available_modes_update":o.current&&Array.isArray(n.availableModes)&&(o.current.modes=n.availableModes,T());break;case"current_model_update":o.current&&(o.current.model=n.modelId??n.currentModelId??null,Array.isArray(n.availableModels)&&(o.current.models=n.availableModels),T());break;case"config_option_update":o.current&&Array.isArray(n.configOptions)&&(o.current.configOptions=n.configOptions,T());break;case"usage_update":if(o.current){let s=n.used??n.contextUsed,r=n.size??n.contextSize;typeof s=="number"&&(o.current.contextUsed=s),typeof r=="number"&&(o.current.contextSize=r),n.cost&&(o.current.cost=n.cost)}break;case"plan":Yi(n);break;case"prompt_received":Fi(n);break;case"stop":case"turn_complete":{let i=((n._meta??{})["hydra-acp"]??{}).amended;if(i){let a=typeof i.cancelledMessageId=="string"?i.cancelledMessageId:"",c=typeof i.newMessageId=="string"?i.newMessageId:"";a&&c&&on(a,c)}rn();break}case"turn_started":{if(!o.current)break;let r=(n._meta??{})["hydra-acp"]??{};if(r.unsolicited!==!0)break;let i=typeof n.messageId=="string"?n.messageId:void 0;if(!i||o.current.unsolicitedTurnOpen.has(i))break;o.current.unsolicitedTurnOpen.add(i),us();let a=r.cause??{},c=typeof a.label=="string"?a.label:void 0;fe({kind:"system",text:c?`agent resumed on its own: background task finished (${c})`:"agent resumed on its own"});break}case"turn_ended":{if(!o.current)break;let r=(n._meta??{})["hydra-acp"]??{};if(r.unsolicited!==!0)break;let i=typeof n.startedMessageId=="string"?n.startedMessageId:void 0;if(!i||!o.current.unsolicitedTurnOpen.has(i)||(o.current.unsolicitedTurnOpen.delete(i),r.reason==="superseded")||o.current.unsolicitedTurnOpen.size>0)break;rn();break}case"session_info_update":o.current&&typeof n.title=="string"&&(o.current.title=n.title);break;default:break}o.current?.inTurn&&De()}function Es(e){if(o.current){if(e.method==="session/request_permission"){let n=e.params??{},t=n.toolCall??{},s=typeof t.toolCallId=="string"?t.toolCallId:"";if(!s){o.current.ws?.send(JSON.stringify({jsonrpc:"2.0",id:e.id,error:{code:-32602,message:"missing toolCall.toolCallId"}}));return}o.current.pendingPermissions.set(s,{requestId:e.id,toolCallId:s,toolCall:t,options:n.options??[]}),Cn({kind:"perm",toolCallId:s});return}o.current.ws?.send(JSON.stringify({jsonrpc:"2.0",id:e.id,error:{code:-32601,message:`method not handled: ${String(e.method)}`}}))}}function Pe(){let e=o.current;if(!e)return;let n=e.composerValue.trim();n&&(ws(e,n)&&(e.composerValue=""),T())}function ys(e){let n=o.current;n&&(ws(n,`/hydra workspace ${e}`,{addToHistory:!1}),T())}function ws(e,n,t={}){if(!e.ws||e.ws.readyState!==WebSocket.OPEN)return e.log.push({kind:"error",text:"Not connected to session \u2014 prompt not sent."}),!1;let s=e.promptQueue.filter(u=>u.status==="queued"||u.status==="pending"||u.status==="processing").length,r=e.inTurn&&!e.promptQueue.some(u=>u.status==="processing"),i=s+(r?1:0),a={id:"p_"+Math.random().toString(36).slice(2,10),text:n,status:i>0?"queued":"pending",aheadAtEnqueue:i};e.promptQueue.push(a),e.log.push({kind:"stream",role:"user",text:n,closed:!0,queueEntry:a}),e.recentOwnPrompts.push({text:n,at:Date.now()});let c=Date.now()-6e4;e.recentOwnPrompts=e.recentOwnPrompts.filter(u=>u.at>=c).slice(-16);let d=le("session/prompt",{sessionId:e.sessionId,prompt:[{type:"text",text:n}]});return d!==void 0&&e.ownPromptIds.add(String(d)),De(),(t.addToHistory??!0)&&Ss(e,n),!0}var _s=100;function Ss(e,n){e.history[0]!==n&&(e.history.unshift(n),e.history.length>_s&&(e.history.length=_s)),e.historyIndex=null,e.historyDraft=null}function Dn(e){let n=o.current;if(n){if(e.messageId!==void 0){le("hydra-acp/prompt/cancel",{sessionId:n.sessionId,messageId:e.messageId});return}e.status="cancelled",T()}}function vs(e,n){let t=o.current;if(!t)return;let s=n.trim();if(s){if(e.messageId===void 0){e.text=s,T();return}le("hydra-acp/prompt/update",{sessionId:t.sessionId,messageId:e.messageId,prompt:[{type:"text",text:s}]})}}function Ts(){let e=o.current;if(!e)return;let n=e.composerValue.trim();if(!n)return;if(!e.ws||e.ws.readyState!==WebSocket.OPEN){e.log.push({kind:"error",text:"Not connected to session \u2014 prompt not sent."}),e.composerValue="",T();return}if(!e.daemonSupportsAmend||e.currentHeadMessageId===void 0){Pe();return}let t=e.currentHeadMessageId,s=e.composerValue;e.composerValue="",Ss(e,n);let r={id:"p_"+Math.random().toString(36).slice(2,10),text:n,status:"pending",aheadAtEnqueue:0,amendsMessageId:t};e.promptQueue.push(r),e.log.push({kind:"stream",role:"user",text:n,closed:!0,queueEntry:r}),e.recentOwnPrompts.push({text:n,at:Date.now()});let i=Date.now()-6e4;e.recentOwnPrompts=e.recentOwnPrompts.filter(a=>a.at>=i).slice(-16),De(),Qi(r,s,t,n),T()}function Qi(e,n,t,s){let r=o.current;if(!r)return;let i=le("_session/steering",{sessionId:r.sessionId,prompt:[{type:"text",text:s}]});i!==void 0&&r.responseHandlers.set(String(i),a=>{Xi(e,n,t,s,a)})}function Xi(e,n,t,s,r){let i=o.current;if(!i)return;if(r.error){if(r.error?.code===-32601){Vi(e,n,t,s);return}an(i,e,n),B({banner:{kind:"bad",text:`steering failed: ${As(r.error)}`}});return}let a=r.result??{};if(a.outcome==="injected"){e.status="processing",T();return}a.outcome!=="startedNewTurn"&&(an(i,e,n),B({banner:{kind:"warn",text:"steering failed"}}))}function Vi(e,n,t,s){let r=o.current;if(!r)return;let i=le("hydra-acp/prompt/amend",{sessionId:r.sessionId,targetMessageId:t,prompt:[{type:"text",text:s}]});i!==void 0&&r.responseHandlers.set(String(i),a=>{Ji(e,n,a)})}function Ji(e,n,t){let s=o.current;if(!s)return;if(t.error){an(s,e,n),B({banner:{kind:"bad",text:`amend failed: ${As(t.error)}`}});return}let r=t.result??{};if(r.amended&&r.reason==="ok")return;an(s,e,n);let i="amend rejected";r.reason==="target_completed"?i="previous response finished \u2014 press Send to send as a new turn":r.reason==="target_cancelled"?i="amend skipped \u2014 previous turn was cancelled":r.reason==="target_not_found"&&(i="amend skipped \u2014 no matching prompt"),B({banner:{kind:"warn",text:i}})}function an(e,n,t){let s=e.promptQueue.indexOf(n);s>=0&&e.promptQueue.splice(s,1),e.log=e.log.filter(r=>!(r.kind==="stream"&&r.role==="user"&&r.queueEntry===n)),e.composerValue=t,T()}function As(e){if(e&&typeof e=="object"&&"message"in e){let n=e.message;if(typeof n=="string")return n}return"unknown error"}function Ns(){let e=o.current;!e||!e.inTurn||Pn("session/cancel",{sessionId:e.sessionId})}function Is(){let e=o.current;if(!e)return;let n=!1;for(let t of e.promptQueue)(t.status==="queued"||t.status==="pending")&&(Dn(t),n=!0);e.inTurn&&Pn("session/cancel",{sessionId:e.sessionId}),n&&T()}function ks(e){o.current&&le("session/set_mode",{sessionId:o.current.sessionId,modeId:e})}function xs(e){o.current&&le("session/set_model",{sessionId:o.current.sessionId,modelId:e})}function Rs(e,n){let t=o.current;if(!t)return;let s=le("session/set_config_option",{sessionId:t.sessionId,configId:e,value:n});s!==void 0&&t.responseHandlers.set(String(s),r=>{let i=r.result?.configOptions;Array.isArray(i)&&o.current===t&&(t.configOptions=i,T())})}function cn(e){for(let n of e.promptQueue)n.status!=="done"&&n.status!=="cancelled"&&(n.status="cancelled",n.messageId!==void 0&&e.queueByMessageId.delete(n.messageId))}function le(e,n){let t=o.current;if(!t||!t.ws||t.ws.readyState!==WebSocket.OPEN)return;let s=t.nextId=t.nextId??1;return t.nextId=s+1,t.ws.send(JSON.stringify({jsonrpc:"2.0",id:s,method:e,params:n})),s}function Pn(e,n){let t=o.current;!t||!t.ws||t.ws.readyState!==WebSocket.OPEN||t.ws.send(JSON.stringify({jsonrpc:"2.0",method:e,params:n}))}function ji(e,n){let t=o.current;!t||!t.ws||t.ws.readyState!==WebSocket.OPEN||t.ws.send(JSON.stringify({jsonrpc:"2.0",id:e,result:n}))}function Ms(e){if(o.current){if(e.method==="bridge/ready"){o.current.ready=!0,o.banner=null,o.current.reconnectAttempt=0;let n=e.params??{};typeof n.clientId=="string"&&(o.current.ownClientId=n.clientId),Array.isArray(n.configOptions)&&(o.current.configOptions=n.configOptions);let s=n._meta?.["hydra-acp"],r=s?.queue;Array.isArray(r)&&ms(r),s?.prompt?.amending===!0&&(o.current.daemonSupportsAmend=!0),typeof s?.armedTasks=="number"&&(o.current.armedTasks=s.armedTasks,o.current.armedSince=s.armedTasks>0&&typeof s.armedSince=="number"?s.armedSince:void 0,o.current.armedTaskList=Ln(s.armedTaskList));let a=o.current.readyListeners;o.current.readyListeners=[];for(let c of a)try{c()}catch{}T();return}if(e.method==="bridge/error"){Cn({kind:"error",text:`Bridge error: ${e.params?.message??"?"}`}),T();return}if(e.method==="hydra-acp/session/closed"){o.current&&(o.current.ready=!1,cn(o.current)),o.banner={kind:"warn",text:"Session is now cold \u2014 opening a new prompt will resurrect it."},T();return}if(e.method&&"id"in e){Es(e),o.current.ready&&T();return}if(e.method){hs(e),o.current.ready&&T();return}if("id"in e&&e.id!==void 0&&o.current.ownPromptIds.has(String(e.id))){o.current.ownPromptIds.delete(String(e.id)),rn(),T();return}if("id"in e&&e.id!==void 0){let n=o.current.responseHandlers.get(String(e.id));n&&(o.current.responseHandlers.delete(String(e.id)),n({result:e.result,error:e.error}))}}}function Bn(e,n){if(!o.current)return;let t=o.current.pendingPermissions.get(e);t&&(o.current.pendingPermissions.delete(e),o.current.log=o.current.log.filter(s=>!(s.kind==="perm"&&s.toolCallId===e)),ji(t.requestId,{outcome:n==="__cancel__"?{outcome:"cancelled"}:{outcome:"selected",optionId:n}}),T())}var Os=[1e3,2e3,4e3,8e3,16e3,3e4],eo=5;function no(e,n){let t=encodeURIComponent(e);return n?`#/session/${t}?load=true`:`#/session/${t}`}var Fn=!1;function Cs(e){if(window.location.hash!==e){Fn=!0;try{history.pushState(null,"",e||window.location.pathname+window.location.search)}finally{queueMicrotask(()=>{Fn=!1})}}}function $n(){if(Fn)return;let n=window.location.hash.match(/^#\/session\/([^?]+)(?:\?(.*))?$/);if(n){let t=decodeURIComponent(n[1]),r=new URLSearchParams(n[2]??"").get("load")==="true";if(o.view==="chat"&&o.current?.sessionId===t)return;ln(t,r);return}o.view!=="list"&&ro()}function ln(e,n){Cs(no(e,n)),Ds();let t=o.sessions.find(r=>r.sessionId===e),s={sessionId:e,title:t?.title??"",cwd:t?.cwd||"",agentId:t?.agentId||"",ws:null,ready:!1,log:[],toolCalls:new Map,pendingPermissions:new Map,pendingRequestById:new Map,responseHandlers:new Map,spinner:null,plan:null,mode:null,model:null,modes:[],models:[],contextUsed:null,contextSize:null,cost:null,fileOverlay:null,composerValue:"",busy:!1,recentOwnPrompts:[],history:[],historyIndex:null,historyDraft:null,_lastMetaFp:t?`${t.title}|${t.cwd}|${t.agentId}`:"",promptQueue:[],queueByMessageId:new Map,ownPromptIds:new Set,inTurn:!1,idleListeners:[],readyListeners:[],currentPlanEntry:null,daemonSupportsAmend:!1,loadOnConnect:n,reconnectAttempt:0,headerExpanded:!1,unsolicitedTurnOpen:new Set,configOptions:[]};o.current=s,B({view:"chat"}),Ls(s)}function Ls(e){let n=new URL("/ws",location.href);n.protocol=location.protocol==="https:"?"wss:":"ws:",n.searchParams.set("session",e.sessionId),e.loadOnConnect&&n.searchParams.set("load","true");let t=new WebSocket(n.toString());e.ws=t,t.addEventListener("open",()=>{}),t.addEventListener("message",s=>{let r;try{r=JSON.parse(String(s.data))}catch{return}Ms(r)}),t.addEventListener("close",()=>{!o.current||o.current.ws!==t||to(o.current)}),t.addEventListener("error",()=>{})}function to(e){e.ready=!1,cn(e);let n=e.reconnectAttempt??0,t=Os[Math.min(n,Os.length-1)],s=n>=eo;B({banner:s?{kind:"bad",text:"Still disconnected \u2014 retrying\u2026"}:{kind:"warn",text:"Reconnecting\u2026"}}),e.reconnectTimer=setTimeout(()=>{!o.current||o.current!==e||(e.reconnectTimer=void 0,e.reconnectAttempt=n+1,so(e),T(),Ls(e))},t)}function so(e){e.ws=null,e.ready=!1,e.log=[],e.toolCalls=new Map,e.pendingPermissions=new Map,e.pendingRequestById=new Map,e.responseHandlers=new Map,e.spinner=null,e.plan=null,e.mode=null,e.model=null,e.modes=[],e.models=[],e.contextUsed=null,e.contextSize=null,e.cost=null,e.busy=!1,e.recentOwnPrompts=[],e.promptQueue=[],e.queueByMessageId=new Map,e.ownPromptIds=new Set,e.inTurn=!1,e.unsolicitedTurnOpen=new Set,e.idleListeners=[],e.readyListeners=[],e.currentPlanEntry=null,e.daemonSupportsAmend=!1,e.ownClientId=void 0,e.currentHeadMessageId=void 0,e.nextId=void 0}function ro(){Cs(""),Ds(),B({view:"list",current:null})}function Ds(){if(o.current&&(o.current.reconnectTimer&&(clearTimeout(o.current.reconnectTimer),o.current.reconnectTimer=void 0),o.current.ws)){try{o.current.ws.close()}catch{}o.current.ws=null}}var un=new WeakSet;function Hs(e){return"untitled"}function ge(e){return e.replace(/^hydra_session_/,"")}function io(e){if(!e)return;let n=e.lastIndexOf("/");return n===-1?e:e.slice(n+1)}function oo(e,n){let t=e||"?",s=io(n);return s?`${t}\u2022${s}`:t}function zs(e){let n=Math.floor(Math.max(0,e)/1e3);if(n<60)return"<1m";let t=Math.floor(n/60);if(t<60)return`${t}m`;let s=Math.floor(t/60);if(s<24)return`${s}h`;let r=Math.floor(s/24);if(r<14)return`${r}d`;let i=Math.floor(r/7);if(i<9)return`${i}w`;let a=Math.floor(r/30);return a<12?`${a}mo`:`${Math.floor(r/365)}y`}function ao(e,n=Date.now()){if(!e)return"?";let t=Date.parse(e);return Number.isNaN(t)?"?":zs(n-t)}function Ps(e){return Number.isFinite(e)?e<1e3?String(e):e<1e6?(e/1e3).toFixed(e<1e4?1:0).replace(/\.0$/,"")+"k":(e/1e6).toFixed(2).replace(/\.?0+$/,"")+"M":"?"}function Bs(e){let n=null,t="USD";if(typeof e=="number")n=e;else if(e&&typeof e=="object"){let r=e;if(typeof r.amount=="number")n=r.amount;else if(typeof r.total=="number")n=r.total;else if(r.total&&typeof r.total=="object"){let i=r.total;typeof i.amount=="number"&&(n=i.amount),typeof i.currency=="string"&&(t=i.currency)}typeof r.currency=="string"&&(t=r.currency)}if(n===null)return null;let s=n<.01?4:n<1?3:2;return t==="USD"?`$${n.toFixed(s)}`:`${n.toFixed(s)} ${t}`}function Ks(e,n){n.banner&&e.appendChild(l("div",{class:"banner "+n.banner.kind},n.banner.text)),n.view==="list"?(e.appendChild(co()),e.appendChild(uo())):n.view==="chat"&&n.current&&(e.appendChild(ko(n.current)),n.current.fileOverlay&&e.appendChild(Yo(n.current))),n.modal&&(n.modal.kind==="session"?e.appendChild(vo(n.modal)):n.modal.kind==="modes"&&n.current?e.appendChild($s("Mode",n.current.modes,n.current.mode,t=>ks(t.id))):n.modal.kind==="models"&&n.current&&e.appendChild($s("Model",n.current.models,n.current.model,t=>xs(t.id))))}function co(){return l("div",{class:"topbar"},l("span",{class:"pill clickable",title:"Click to toggle grouping by project/recent",...N(()=>B({groupBy:o.groupBy==="project"?"recent":"project"}))},o.groupBy),l("span",{class:"pill clickable",title:"Click to toggle showing disk-only sessions",...N(()=>{B({showCold:!o.showCold})})},o.showCold?"all":"warm"),lo(),l("span",{class:"spacer"}),l("button",{...N(Eo),title:"Import a *.hydra bundle from disk"},"\u{1F4E5}"),l("button",{...N(So),title:"New Session"},"\uFF0B"))}function lo(){let e=new Set;for(let r of o.sessions)r.importedFromMachine&&!r.upstreamSessionId&&e.add(r.importedFromMachine);let n=[...e].sort(),t=l("select",{class:"host-select",title:"Filter sessions by origin host",onchange:r=>{let i=r.target.value;B({hostFilter:i})}}),s=(r,i)=>{let a=document.createElement("option");a.value=r,a.textContent=i,o.hostFilter===r&&(a.selected=!0),t.appendChild(a)};s("__local","local");for(let r of n)s(r,r);return s("__all","all"),o.hostFilter!=="__local"&&o.hostFilter!=="__all"&&!n.includes(o.hostFilter)&&(t.value=o.hostFilter),t}function uo(){let e=o.showCold?o.sessions:o.sessions.filter(r=>r.status!=="cold");o.hostFilter==="__local"?e=e.filter(r=>!r.importedFromMachine||!!r.upstreamSessionId):o.hostFilter!=="__all"&&(e=e.filter(r=>r.importedFromMachine===o.hostFilter&&!r.upstreamSessionId));let n=o.showCold?0:o.sessions.filter(r=>r.status==="cold").length,t=mo(e,o.groupBy),s=l("div",{class:"list"});if(e.length===0){let r;o.sessions.length===0?r="No sessions. Use + to create one, or run `hydra-acp launch <agent>` from your editor.":o.hostFilter==="__local"?r="No local sessions. Switch the host filter to see imported sessions.":o.hostFilter!=="__all"?r=`No sessions from ${o.hostFilter}. Try a different host.`:r=`No warm sessions. ${n} cold session${n===1?"":"s"} hidden \u2014 click "warm" to switch to "all".`,s.appendChild(l("div",{class:"empty"},r))}for(let r of t){let i=l("div",{class:"group"});r.label&&i.appendChild(l("h2",null,r.label));for(let a of r.sessions)i.appendChild(bo(a,r.label===null));s.appendChild(i)}return s}function Fs(e,n){let t=(n.status==="warm"?1:0)-(e.status==="warm"?1:0);return t!==0?t:String(n.updatedAt||"").localeCompare(String(e.updatedAt||""))}function dn(e){return e.replace(/^\/(home|Users)\/[^/]+/,"~")}function Un(e,n){return l("div",{class:"detail"},l("span",{class:"k"},e),l("code",null,n))}function po(e){let n=(t,s)=>l("button",{class:"ghost",...N(()=>ys(t))},s);return e?l("div",{class:"detail"},l("span",{class:"k"},"workspace"),l("code",null,`${e.label}${e.clean===!1?" \xB7 dirty":""}`),n("sync","Sync"),n("stop","Stop"),n("apply","Apply")):l("div",{class:"detail"},l("span",{class:"k"},"workspace"),n("start","Start workspace"))}function fo(){return l("div",{class:"detail"},l("span",{class:"k"},"thoughts"),l("label",{class:"checkbox-label"},l("input",{type:"checkbox",checked:o.hideThoughts?"":void 0,onchange:e=>{B({hideThoughts:e.target.checked})}}),"hide"))}function go(e){let n=l("select",{onchange:t=>{Rs(e.id,t.target.value)}},...e.options.map(t=>{let s=l("option",{value:t.value},t.name||t.value);return t.value===e.currentValue&&s.setAttribute("selected",""),s}));return n.value=e.currentValue,l("div",{class:"detail"},l("span",{class:"k",title:e.description??""},e.name||e.id),n)}function mo(e,n){if(n==="recent")return[{label:null,sessions:e.slice().sort(Fs)}];let t=new Map;for(let r of e){let i=r.cwd||"(unknown)";t.has(i)||t.set(i,[]),t.get(i).push(r)}let s=[];for(let[r,i]of[...t.entries()].sort((a,c)=>a[0].localeCompare(c[0])))i.sort(Fs),s.push({label:dn(r),sessions:i});return s}function bo(e,n){let t=e.title||Hs(e.sessionId),s=[ge(e.sessionId),oo(e.agentId,e.currentModel),`age ${ao(e.updatedAt)}`].join(" \xB7 ");return l("div",{class:"card",...N(r=>{r.target.closest("button")||ln(e.sessionId,e.status==="cold")})},l("div",{class:"row1"},t),l("div",{class:"card-body"},l("div",{class:"meta"},l("div",{class:"row2"},s)),l("div",{class:"badges"},l("span",{class:`badge ${e.status==="cold"?"cold":"warm"}`,title:e.status==="cold"?"Disk-only \u2014 opening will resurrect the session":"Live in-memory session"},e.status==="cold"?"cold":"warm"),e.busy||e.awaitingInput?l("span",{class:"badge busy",title:e.busy?"Agent is working":"Waiting on you \u2014 a permission request or other prompt is pending"},e.busy?"busy":"needs input"):null,!e.busy&&(e.armedTasks??0)>0?l("span",{class:"badge armed",title:"Agent has a background task running. It may resume on its own."},"armed"):null,l("span",{class:"badge"},`${e.attachedClients??0} attached`),...e.importedFromMachine&&!e.upstreamSessionId?[l("span",{class:"badge imported",title:`Passive mirror imported from ${e.importedFromMachine} \u2014 attach to start working on it here.`},`\u2190 ${e.importedFromMachine}`)]:[]),l("div",{class:"actions"},l("button",{class:"ghost",title:"Export session as *.hydra bundle",...N(()=>qs(e.sessionId))},"\u2193"),l("button",{class:"danger",...N(()=>{ho(e)})},"\xD7"))),n?l("div",{class:"row3"},e.cwd?dn(e.cwd):"?"):null)}async function ho(e){if(confirm(`Kill session ${e.title?`"${e.title}" (${ge(e.sessionId)})`:ge(e.sessionId)}?`))try{await ue("/api/kill",{method:"POST",body:JSON.stringify({sessionId:e.sessionId})}),Ee()}catch(n){B({banner:{kind:"bad",text:"kill failed: "+n.message}})}}function qs(e){let n=document.createElement("a");n.href=`/api/sessions/${encodeURIComponent(e)}/export`,n.download="",n.rel="noopener",document.body.appendChild(n),n.click(),n.remove()}function Eo(){let e=document.createElement("input");e.type="file",e.accept=".hydra,application/json",e.style.display="none",e.onchange=()=>{let n=e.files&&e.files[0];document.body.removeChild(e),n&&_o(n)},document.body.appendChild(e),e.click()}async function _o(e){let n;try{let s=await e.text();n=JSON.parse(s)}catch(s){B({banner:{kind:"bad",text:"import: bundle is not valid JSON: "+s.message}});return}let t=await Ys(n);if(t.ok){let s=t.result;B({banner:{kind:"good",text:s.replaced?`Replaced ${ge(s.sessionId)} from bundle`:`Imported as ${ge(s.sessionId)}`}}),Ee();return}if(t.status===409&&t.existingSessionId){let s=t.existingSessionId;if(!confirm(`This session is already imported locally as ${ge(s)}.
312
+ <script nonce="__CSP_NONCE__">"use strict";(()=>{var yr=Object.create;var Zt=Object.defineProperty;var wr=Object.getOwnPropertyDescriptor;var vr=Object.getOwnPropertyNames;var Sr=Object.getPrototypeOf,Tr=Object.prototype.hasOwnProperty;var Ar=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Nr=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of vr(t))!Tr.call(e,r)&&r!==n&&Zt(e,r,{get:()=>t[r],enumerable:!(s=wr(t,r))||s.enumerable});return e};var Ir=(e,t,n)=>(n=e!=null?yr(Sr(e)):{},Nr(t||!e||!e.__esModule?Zt(n,"default",{value:e,enumerable:!0}):n,e));var _n=Ar((ka,En)=>{function on(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{let n=e[t],s=typeof n;(s==="object"||s==="function")&&!Object.isFrozen(n)&&on(n)}),e}var Ye=class{constructor(t){t.data===void 0&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function an(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}function pe(e,...t){let n=Object.create(null);for(let s in e)n[s]=e[s];return t.forEach(function(s){for(let r in s)n[r]=s[r]}),n}var Rr="</span>",jt=e=>!!e.scope,Cr=(e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){let n=e.split(".");return[`${t}${n.shift()}`,...n.map((s,r)=>`${s}${"_".repeat(r+1)}`)].join(" ")}return`${t}${e}`},St=class{constructor(t,n){this.buffer="",this.classPrefix=n.classPrefix,t.walk(this)}addText(t){this.buffer+=an(t)}openNode(t){if(!jt(t))return;let n=Cr(t.scope,{prefix:this.classPrefix});this.span(n)}closeNode(t){jt(t)&&(this.buffer+=Rr)}value(){return this.buffer}span(t){this.buffer+=`<span class="${t}">`}},en=(e={})=>{let t={children:[]};return Object.assign(t,e),t},Tt=class e{constructor(){this.rootNode=en(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){let n=en({scope:t});this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,n){return typeof n=="string"?t.addText(n):n.children&&(t.openNode(n),n.children.forEach(s=>this._walk(t,s)),t.closeNode(n)),t}static _collapse(t){typeof t!="string"&&t.children&&(t.children.every(n=>typeof n=="string")?t.children=[t.children.join("")]:t.children.forEach(n=>{e._collapse(n)}))}},At=class extends Tt{constructor(t){super(),this.options=t}addText(t){t!==""&&this.add(t)}startScope(t){this.openNode(t)}endScope(){this.closeNode()}__addSublanguage(t,n){let s=t.root;n&&(s.scope=`language:${n}`),this.add(s)}toHTML(){return new St(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}};function Me(e){return e?typeof e=="string"?e:e.source:null}function cn(e){return he("(?=",e,")")}function Mr(e){return he("(?:",e,")*")}function Or(e){return he("(?:",e,")?")}function he(...e){return e.map(n=>Me(n)).join("")}function Lr(e){let t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function It(...e){return"("+(Lr(e).capture?"":"?:")+e.map(s=>Me(s)).join("|")+")"}function ln(e){return new RegExp(e.toString()+"|").exec("").length-1}function Dr(e,t){let n=e&&e.exec(t);return n&&n.index===0}var Pr=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function kt(e,{joinWith:t}){let n=0;return e.map(s=>{n+=1;let r=n,i=Me(s),a="";for(;i.length>0;){let c=Pr.exec(i);if(!c){a+=i;break}a+=i.substring(0,c.index),i=i.substring(c.index+c[0].length),c[0][0]==="\\"&&c[1]?a+="\\"+String(Number(c[1])+r):(a+=c[0],c[0]==="("&&n++)}return a}).map(s=>`(${s})`).join(t)}var Br=/\b\B/,dn="[a-zA-Z]\\w*",xt="[a-zA-Z_]\\w*",un="\\b\\d+(\\.\\d+)?",pn="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",fn="\\b(0b[01]+)",Fr="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",$r=(e={})=>{let t=/^#![ ]*\//;return e.binary&&(e.begin=he(t,/.*\b/,e.binary,/\b.*/)),pe({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(n,s)=>{n.index!==0&&s.ignoreMatch()}},e)},Oe={begin:"\\\\[\\s\\S]",relevance:0},Ur={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[Oe]},Hr={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[Oe]},zr={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},Ze=function(e,t,n={}){let s=pe({scope:"comment",begin:e,end:t,contains:[]},n);s.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let r=It("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return s.contains.push({begin:he(/[ ]+/,"(",r,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),s},Kr=Ze("//","$"),qr=Ze("/\\*","\\*/"),Gr=Ze("#","$"),Wr={scope:"number",begin:un,relevance:0},Yr={scope:"number",begin:pn,relevance:0},Qr={scope:"number",begin:fn,relevance:0},Zr={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[Oe,{begin:/\[/,end:/\]/,relevance:0,contains:[Oe]}]},Xr={scope:"title",begin:dn,relevance:0},Vr={scope:"title",begin:xt,relevance:0},Jr={begin:"\\.\\s*"+xt,relevance:0},jr=function(e){return Object.assign(e,{"on:begin":(t,n)=>{n.data._beginMatch=t[1]},"on:end":(t,n)=>{n.data._beginMatch!==t[1]&&n.ignoreMatch()}})},We=Object.freeze({__proto__:null,APOS_STRING_MODE:Ur,BACKSLASH_ESCAPE:Oe,BINARY_NUMBER_MODE:Qr,BINARY_NUMBER_RE:fn,COMMENT:Ze,C_BLOCK_COMMENT_MODE:qr,C_LINE_COMMENT_MODE:Kr,C_NUMBER_MODE:Yr,C_NUMBER_RE:pn,END_SAME_AS_BEGIN:jr,HASH_COMMENT_MODE:Gr,IDENT_RE:dn,MATCH_NOTHING_RE:Br,METHOD_GUARD:Jr,NUMBER_MODE:Wr,NUMBER_RE:un,PHRASAL_WORDS_MODE:zr,QUOTE_STRING_MODE:Hr,REGEXP_MODE:Zr,RE_STARTERS_RE:Fr,SHEBANG:$r,TITLE_MODE:Xr,UNDERSCORE_IDENT_RE:xt,UNDERSCORE_TITLE_MODE:Vr});function ei(e,t){e.input[e.index-1]==="."&&t.ignoreMatch()}function ti(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function ni(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=ei,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function si(e,t){Array.isArray(e.illegal)&&(e.illegal=It(...e.illegal))}function ri(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function ii(e,t){e.relevance===void 0&&(e.relevance=1)}var oi=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");let n=Object.assign({},e);Object.keys(e).forEach(s=>{delete e[s]}),e.keywords=n.keywords,e.begin=he(n.beforeMatch,cn(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},ai=["of","and","for","in","not","or","if","then","parent","list","value"],ci="keyword";function gn(e,t,n=ci){let s=Object.create(null);return typeof e=="string"?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach(function(i){Object.assign(s,gn(e[i],t,i))}),s;function r(i,a){t&&(a=a.map(c=>c.toLowerCase())),a.forEach(function(c){let d=c.split("|");s[d[0]]=[i,li(d[0],d[1])]})}}function li(e,t){return t?Number(t):di(e)?0:1}function di(e){return ai.includes(e.toLowerCase())}var tn={},be=e=>{console.error(e)},nn=(e,...t)=>{console.log(`WARN: ${e}`,...t)},ve=(e,t)=>{tn[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),tn[`${e}/${t}`]=!0)},Qe=new Error;function mn(e,t,{key:n}){let s=0,r=e[n],i={},a={};for(let c=1;c<=t.length;c++)a[c+s]=r[c],i[c+s]=!0,s+=ln(t[c-1]);e[n]=a,e[n]._emit=i,e[n]._multi=!0}function ui(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw be("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),Qe;if(typeof e.beginScope!="object"||e.beginScope===null)throw be("beginScope must be object"),Qe;mn(e,e.begin,{key:"beginScope"}),e.begin=kt(e.begin,{joinWith:""})}}function pi(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw be("skip, excludeEnd, returnEnd not compatible with endScope: {}"),Qe;if(typeof e.endScope!="object"||e.endScope===null)throw be("endScope must be object"),Qe;mn(e,e.end,{key:"endScope"}),e.end=kt(e.end,{joinWith:""})}}function fi(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function gi(e){fi(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),ui(e),pi(e)}function mi(e){function t(a,c){return new RegExp(Me(a),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(c?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(c,d){d.position=this.position++,this.matchIndexes[this.matchAt]=d,this.regexes.push([d,c]),this.matchAt+=ln(c)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);let c=this.regexes.map(d=>d[1]);this.matcherRe=t(kt(c,{joinWith:"|"}),!0),this.lastIndex=0}exec(c){this.matcherRe.lastIndex=this.lastIndex;let d=this.matcherRe.exec(c);if(!d)return null;let u=d.findIndex((b,m)=>m>0&&b!==void 0),p=this.matchIndexes[u];return d.splice(0,u),Object.assign(d,p)}}class s{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(c){if(this.multiRegexes[c])return this.multiRegexes[c];let d=new n;return this.rules.slice(c).forEach(([u,p])=>d.addRule(u,p)),d.compile(),this.multiRegexes[c]=d,d}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(c,d){this.rules.push([c,d]),d.type==="begin"&&this.count++}exec(c){let d=this.getMatcher(this.regexIndex);d.lastIndex=this.lastIndex;let u=d.exec(c);if(this.resumingScanAtSamePosition()&&!(u&&u.index===this.lastIndex)){let p=this.getMatcher(0);p.lastIndex=this.lastIndex+1,u=p.exec(c)}return u&&(this.regexIndex+=u.position+1,this.regexIndex===this.count&&this.considerAll()),u}}function r(a){let c=new s;return a.contains.forEach(d=>c.addRule(d.begin,{rule:d,type:"begin"})),a.terminatorEnd&&c.addRule(a.terminatorEnd,{type:"end"}),a.illegal&&c.addRule(a.illegal,{type:"illegal"}),c}function i(a,c){let d=a;if(a.isCompiled)return d;[ti,ri,gi,oi].forEach(p=>p(a,c)),e.compilerExtensions.forEach(p=>p(a,c)),a.__beforeBegin=null,[ni,si,ii].forEach(p=>p(a,c)),a.isCompiled=!0;let u=null;return typeof a.keywords=="object"&&a.keywords.$pattern&&(a.keywords=Object.assign({},a.keywords),u=a.keywords.$pattern,delete a.keywords.$pattern),u=u||/\w+/,a.keywords&&(a.keywords=gn(a.keywords,e.case_insensitive)),d.keywordPatternRe=t(u,!0),c&&(a.begin||(a.begin=/\B|\b/),d.beginRe=t(d.begin),!a.end&&!a.endsWithParent&&(a.end=/\B|\b/),a.end&&(d.endRe=t(d.end)),d.terminatorEnd=Me(d.end)||"",a.endsWithParent&&c.terminatorEnd&&(d.terminatorEnd+=(a.end?"|":"")+c.terminatorEnd)),a.illegal&&(d.illegalRe=t(a.illegal)),a.contains||(a.contains=[]),a.contains=[].concat(...a.contains.map(function(p){return bi(p==="self"?a:p)})),a.contains.forEach(function(p){i(p,d)}),a.starts&&i(a.starts,c),d.matcher=r(d),d}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=pe(e.classNameAliases||{}),i(e)}function bn(e){return e?e.endsWithParent||bn(e.starts):!1}function bi(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return pe(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:bn(e)?pe(e,{starts:e.starts?pe(e.starts):null}):Object.isFrozen(e)?pe(e):e}var hi="11.11.1",Nt=class extends Error{constructor(t,n){super(t),this.name="HTMLInjectionError",this.html=n}},vt=an,sn=pe,rn=Symbol("nomatch"),Ei=7,hn=function(e){let t=Object.create(null),n=Object.create(null),s=[],r=!0,i="Could not find the language '{}', did you forget to load/include a language module?",a={disableAutodetect:!0,name:"Plain text",contains:[]},c={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:At};function d(g){return c.noHighlightRe.test(g)}function u(g){let v=g.className+" ";v+=g.parentNode?g.parentNode.className:"";let w=c.languageDetectRe.exec(v);if(w){let x=B(w[1]);return x||(nn(i.replace("{}",w[1])),nn("Falling back to no-highlight mode for this block.",g)),x?w[1]:"no-highlight"}return v.split(/\s+/).find(x=>d(x)||B(x))}function p(g,v,w){let x="",L="";typeof v=="object"?(x=g,w=v.ignoreIllegals,L=v.language):(ve("10.7.0","highlight(lang, code, ...args) has been deprecated."),ve("10.7.0",`Please use highlight(code, options) instead.
313
+ https://github.com/highlightjs/highlight.js/issues/2277`),L=g,x=v),w===void 0&&(w=!0);let H={code:x,language:L};W("before:highlight",H);let q=H.result?H.result:b(H.language,H.code,w);return q.code=H.code,W("after:highlight",q),q}function b(g,v,w,x){let L=Object.create(null);function H(_,A){return _.keywords[A]}function q(){if(!N.keywords){Z.addText(z);return}let _=0;N.keywordPatternRe.lastIndex=0;let A=N.keywordPatternRe.exec(z),R="";for(;A;){R+=z.substring(_,A.index);let F=re.case_insensitive?A[0].toLowerCase():A[0],X=H(N,F);if(X){let[ce,Er]=X;if(Z.addText(R),R="",L[F]=(L[F]||0)+1,L[F]<=Ei&&(Ge+=Er),ce.startsWith("_"))R+=A[0];else{let _r=re.classNameAliases[ce]||ce;ee(A[0],_r)}}else R+=A[0];_=N.keywordPatternRe.lastIndex,A=N.keywordPatternRe.exec(z)}R+=z.substring(_),Z.addText(R)}function se(){if(z==="")return;let _=null;if(typeof N.subLanguage=="string"){if(!t[N.subLanguage]){Z.addText(z);return}_=b(N.subLanguage,z,!0,qe[N.subLanguage]),qe[N.subLanguage]=_._top}else _=h(z,N.subLanguage.length?N.subLanguage:null);N.relevance>0&&(Ge+=_.relevance),Z.__addSublanguage(_._emitter,_.language)}function V(){N.subLanguage!=null?se():q(),z=""}function ee(_,A){_!==""&&(Z.startScope(A),Z.addText(_),Z.endScope())}function _e(_,A){let R=1,F=A.length-1;for(;R<=F;){if(!_._emit[R]){R++;continue}let X=re.classNameAliases[_[R]]||_[R],ce=A[R];X?ee(ce,X):(z=ce,q(),z=""),R++}}function ze(_,A){return _.scope&&typeof _.scope=="string"&&Z.openNode(re.classNameAliases[_.scope]||_.scope),_.beginScope&&(_.beginScope._wrap?(ee(z,re.classNameAliases[_.beginScope._wrap]||_.beginScope._wrap),z=""):_.beginScope._multi&&(_e(_.beginScope,A),z="")),N=Object.create(_,{parent:{value:N}}),N}function Re(_,A,R){let F=Dr(_.endRe,R);if(F){if(_["on:end"]){let X=new Ye(_);_["on:end"](A,X),X.isMatchIgnored&&(F=!1)}if(F){for(;_.endsParent&&_.parent;)_=_.parent;return _}}if(_.endsWithParent)return Re(_.parent,A,R)}function ft(_){return N.matcher.regexIndex===0?(z+=_[0],1):(Et=!0,0)}function gt(_){let A=_[0],R=_.rule,F=new Ye(R),X=[R.__beforeBegin,R["on:begin"]];for(let ce of X)if(ce&&(ce(_,F),F.isMatchIgnored))return ft(A);return R.skip?z+=A:(R.excludeBegin&&(z+=A),V(),!R.returnBegin&&!R.excludeBegin&&(z=A)),ze(R,_),R.returnBegin?0:A.length}function mt(_){let A=_[0],R=v.substring(_.index),F=Re(N,_,R);if(!F)return rn;let X=N;N.endScope&&N.endScope._wrap?(V(),ee(A,N.endScope._wrap)):N.endScope&&N.endScope._multi?(V(),_e(N.endScope,_)):X.skip?z+=A:(X.returnEnd||X.excludeEnd||(z+=A),V(),X.excludeEnd&&(z=A));do N.scope&&Z.closeNode(),!N.skip&&!N.subLanguage&&(Ge+=N.relevance),N=N.parent;while(N!==F.parent);return F.starts&&ze(F.starts,_),X.returnEnd?0:A.length}function bt(){let _=[];for(let A=N;A!==re;A=A.parent)A.scope&&_.unshift(A.scope);_.forEach(A=>Z.openNode(A))}let ye={};function Ke(_,A){let R=A&&A[0];if(z+=_,R==null)return V(),0;if(ye.type==="begin"&&A.type==="end"&&ye.index===A.index&&R===""){if(z+=v.slice(A.index,A.index+1),!r){let F=new Error(`0 width match regex (${g})`);throw F.languageName=g,F.badRule=ye.rule,F}return 1}if(ye=A,A.type==="begin")return gt(A);if(A.type==="illegal"&&!w){let F=new Error('Illegal lexeme "'+R+'" for mode "'+(N.scope||"<unnamed>")+'"');throw F.mode=N,F}else if(A.type==="end"){let F=mt(A);if(F!==rn)return F}if(A.type==="illegal"&&R==="")return z+=`
314
+ `,1;if(ht>1e5&&ht>A.index*3)throw new Error("potential infinite loop, way more iterations than matches");return z+=R,R.length}let re=B(g);if(!re)throw be(i.replace("{}",g)),new Error('Unknown language: "'+g+'"');let $=mi(re),ue="",N=x||$,qe={},Z=new c.__emitter(c);bt();let z="",Ge=0,me=0,ht=0,Et=!1;try{if(re.__emitTokens)re.__emitTokens(v,Z);else{for(N.matcher.considerAll();;){ht++,Et?Et=!1:N.matcher.considerAll(),N.matcher.lastIndex=me;let _=N.matcher.exec(v);if(!_)break;let A=v.substring(me,_.index),R=Ke(A,_);me=_.index+R}Ke(v.substring(me))}return Z.finalize(),ue=Z.toHTML(),{language:g,value:ue,relevance:Ge,illegal:!1,_emitter:Z,_top:N}}catch(_){if(_.message&&_.message.includes("Illegal"))return{language:g,value:vt(v),illegal:!0,relevance:0,_illegalBy:{message:_.message,index:me,context:v.slice(me-100,me+100),mode:_.mode,resultSoFar:ue},_emitter:Z};if(r)return{language:g,value:vt(v),illegal:!1,relevance:0,errorRaised:_,_emitter:Z,_top:N};throw _}}function m(g){let v={value:vt(g),illegal:!1,relevance:0,_top:a,_emitter:new c.__emitter(c)};return v._emitter.addText(g),v}function h(g,v){v=v||c.languages||Object.keys(t);let w=m(g),x=v.filter(B).filter(j).map(V=>b(V,g,!1));x.unshift(w);let L=x.sort((V,ee)=>{if(V.relevance!==ee.relevance)return ee.relevance-V.relevance;if(V.language&&ee.language){if(B(V.language).supersetOf===ee.language)return 1;if(B(ee.language).supersetOf===V.language)return-1}return 0}),[H,q]=L,se=H;return se.secondBest=q,se}function y(g,v,w){let x=v&&n[v]||w;g.classList.add("hljs"),g.classList.add(`language-${x}`)}function f(g){let v=null,w=u(g);if(d(w))return;if(W("before:highlightElement",{el:g,language:w}),g.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",g);return}if(g.children.length>0&&(c.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(g)),c.throwUnescapedHTML))throw new Nt("One of your code blocks includes unescaped HTML.",g.innerHTML);v=g;let x=v.textContent,L=w?p(x,{language:w,ignoreIllegals:!0}):h(x);g.innerHTML=L.value,g.dataset.highlighted="yes",y(g,w,L.language),g.result={language:L.language,re:L.relevance,relevance:L.relevance},L.secondBest&&(g.secondBest={language:L.secondBest.language,relevance:L.secondBest.relevance}),W("after:highlightElement",{el:g,result:L,text:x})}function E(g){c=sn(c,g)}let T=()=>{D(),ve("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function k(){D(),ve("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let O=!1;function D(){function g(){D()}if(document.readyState==="loading"){O||window.addEventListener("DOMContentLoaded",g,!1),O=!0;return}document.querySelectorAll(c.cssSelector).forEach(f)}function P(g,v){let w=null;try{w=v(e)}catch(x){if(be("Language definition for '{}' could not be registered.".replace("{}",g)),r)be(x);else throw x;w=a}w.name||(w.name=g),t[g]=w,w.rawDefinition=v.bind(null,e),w.aliases&&K(w.aliases,{languageName:g})}function M(g){delete t[g];for(let v of Object.keys(n))n[v]===g&&delete n[v]}function Q(){return Object.keys(t)}function B(g){return g=(g||"").toLowerCase(),t[g]||t[n[g]]}function K(g,{languageName:v}){typeof g=="string"&&(g=[g]),g.forEach(w=>{n[w.toLowerCase()]=v})}function j(g){let v=B(g);return v&&!v.disableAutodetect}function oe(g){g["before:highlightBlock"]&&!g["before:highlightElement"]&&(g["before:highlightElement"]=v=>{g["before:highlightBlock"](Object.assign({block:v.el},v))}),g["after:highlightBlock"]&&!g["after:highlightElement"]&&(g["after:highlightElement"]=v=>{g["after:highlightBlock"](Object.assign({block:v.el},v))})}function ne(g){oe(g),s.push(g)}function ie(g){let v=s.indexOf(g);v!==-1&&s.splice(v,1)}function W(g,v){let w=g;s.forEach(function(x){x[w]&&x[w](v)})}function Y(g){return ve("10.7.0","highlightBlock will be removed entirely in v12.0"),ve("10.7.0","Please use highlightElement now."),f(g)}Object.assign(e,{highlight:p,highlightAuto:h,highlightAll:D,highlightElement:f,highlightBlock:Y,configure:E,initHighlighting:T,initHighlightingOnLoad:k,registerLanguage:P,unregisterLanguage:M,listLanguages:Q,getLanguage:B,registerAliases:K,autoDetection:j,inherit:sn,addPlugin:ne,removePlugin:ie}),e.debugMode=function(){r=!1},e.safeMode=function(){r=!0},e.versionString=hi,e.regex={concat:he,lookahead:cn,either:It,optional:Or,anyNumberOfTimes:Mr};for(let g in We)typeof We[g]=="object"&&on(We[g]);return Object.assign(e,We),e},Se=hn({});Se.newInstance=()=>hn({});En.exports=Se;Se.HighlightJS=Se;Se.default=Se});function l(e,t,...n){let s=document.createElement(e);if(t)for(let[r,i]of Object.entries(t))i==null||i===!1||(r==="class"?s.className=i:r.startsWith("on")&&typeof i=="function"?s.addEventListener(r.slice(2).toLowerCase(),i):r==="html"?s.innerHTML=i:s.setAttribute(r,String(i)));for(let r of n)if(!(r==null||r===!1))if(Array.isArray(r))for(let i of r)Vt(s,i);else Vt(s,r);return s}var kr=10;function Xt(){let e=window.getSelection();return!!e&&!e.isCollapsed&&e.toString().length>0}function _t(e){return e instanceof HTMLElement?e.tagName==="INPUT"||e.tagName==="TEXTAREA"||e.tagName==="SELECT"||e.isContentEditable:!1}function I(e){let t=!1,n=0,s=0;return{onpointerdown:r=>{if(_t(r.target))return;let i=r;i.pointerType==="mouse"&&i.button!==0||(n=i.clientX,s=i.clientY,r.preventDefault(),r.stopPropagation())},onpointerup:r=>{if(_t(r.target))return;let i=r;i.pointerType==="mouse"&&i.button!==0||(r.stopPropagation(),!(Math.hypot(i.clientX-n,i.clientY-s)>kr)&&(Xt()||(t=!0,e(r))))},onclick:r=>{if(!_t(r.target)){if(r.stopPropagation(),t){t=!1;return}Xt()||e(r)}}}}function Vt(e,t){t==null||t===!1||(t instanceof Node?e.appendChild(t):e.appendChild(document.createTextNode(String(t))))}function te(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function we(e){return e=e.replace(/`([^`\n]+)`/g,(t,n)=>`<code>${n}</code>`),e=e.replace(/\*\*([^*\n]+)\*\*/g,"<strong>$1</strong>"),e=e.replace(/(^|[^*])\*([^*\n]+)\*/g,"$1<em>$2</em>"),e=e.replace(/__([^_\n]+)__/g,"<strong>$1</strong>"),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(t,n,s)=>{let r=s.match(/^hydra:\/\/(?:[^/\s]+\/)?sessions\/([A-Za-z0-9_-]+)(?:#turn-\d+)?$/);if(r){let i=r[1];return`<a href="#/session/${te(i)}">${n}</a>`}return/^(https?:\/\/|\/|\.)/i.test(s)?`<a href="${te(s)}" target="_blank" rel="noopener noreferrer">${n}</a>`:`[${n}](${s})`}),e}function yt(e){let t=e.trim();if(!t.includes("|"))return null;let n=t;return n.startsWith("|")&&(n=n.slice(1)),n.endsWith("|")&&(n=n.slice(0,-1)),n.split("|").map(s=>s.trim())}function xr(e){let t=yt(e);if(!t||t.length===0)return null;let n=[];for(let s of t){if(!/^:?-+:?$/.test(s))return null;let r=s.startsWith(":"),i=s.endsWith(":");r&&i?n.push("center"):i?n.push("right"):r?n.push("left"):n.push(null)}return n}function Jt(e,t,n){let s="<tr>";for(let r=0;r<e.length;r++){let i=t[r]??null,a=i?` style="text-align:${i}"`:"";s+=`<${n}${a}>${we(te(e[r]))}</${n}>`}return s+="</tr>",s}function wt(e){typeof e!="string"&&(e=String(e??""));let t=e.split(`
315
+ `),n="",s=!1,r="",i=[],a=null,c=[];function d(){c.length!==0&&(n+=`<p>${we(c.join(" "))}</p>`,c=[])}function u(){a&&(n+=`</${a}>`,a=null)}let p=0;for(;p<t.length;){let b=t[p];if(s){if(/^```/.test(b)){n+=`<pre><code data-lang="${te(r)}">${te(i.join(`
316
+ `))}</code></pre>`,s=!1,i=[],r="",p++;continue}i.push(b),p++;continue}if(/^```/.test(b)){d(),u(),s=!0,r=b.slice(3).trim(),p++;continue}if(p+1<t.length&&b.includes("|")){let h=yt(b),y=xr(t[p+1]);if(h&&y&&h.length>0&&y.length>0){d(),u();let f=Math.max(h.length,y.length),E=[];for(let k=0;k<f;k++)E.push(y[k]??null);n+="<table><thead>",n+=Jt(h,E,"th"),n+="</thead><tbody>";let T=p+2;for(;T<t.length;){let k=yt(t[T]);if(!k)break;n+=Jt(k,E,"td"),T++}n+="</tbody></table>",p=T;continue}}if(/^\s*$/.test(b)){d(),u(),p++;continue}let m;if(m=b.match(/^(#{1,3})\s+(.+)$/)){d(),u();let h=m[1].length;n+=`<h${h}>${we(te(m[2]))}</h${h}>`,p++;continue}if(m=b.match(/^\s*[-*]\s+(.*)$/)){d(),a!=="ul"&&(u(),n+="<ul>",a="ul"),n+=`<li>${we(te(m[1]))}</li>`,p++;continue}if(m=b.match(/^\s*\d+\.\s+(.*)$/)){d(),a!=="ol"&&(u(),n+="<ol>",a="ol"),n+=`<li>${we(te(m[1]))}</li>`,p++;continue}if(m=b.match(/^\s*>\s?(.*)$/)){d(),u(),n+=`<blockquote>${we(te(m[1]))}</blockquote>`,p++;continue}u(),c.push(te(b)),p++}return s&&(n+=`<pre><code>${te(i.join(`
317
+ `))}</code></pre>`),d(),u(),n}function Ce(e){if(typeof e=="string")return e;if(Array.isArray(e))return e.map(Ce).join("");if(e&&typeof e=="object"){let t=e;if(typeof t.text=="string")return t.text;if(typeof t.content=="string")return t.content}return""}var yn=Ir(_n(),1);var G=yn.default;function wn(e){let t=e.regex,n={},s={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{begin:t.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},s]});let r={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},i=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),a={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,r]};r.contains.push(c);let d={match:/\\"/},u={className:"string",begin:/'/,end:/'/},p={match:/\\'/},b={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,n]},m=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],h=e.SHEBANG({binary:`(${m.join("|")})`,relevance:10}),y={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},f=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],E=["true","false"],T={match:/(\/[a-z._-]+)+/},k=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],O=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],D=["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"],P=["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:f,literal:E,built_in:[...k,...O,"set","shopt",...D,...P]},contains:[h,e.SHEBANG(),y,b,i,a,T,c,d,u,p,n]}}function vn(e){let t=e.regex,n=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),s="decltype\\(auto\\)",r="[a-zA-Z_]\\w*::",a="("+s+"|"+t.optional(r)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",c={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},u={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})"/})]},p={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},b={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(u,{className:"string"}),{className:"string",begin:/<.*?>/},n,e.C_BLOCK_COMMENT_MODE]},m={className:"title",begin:t.optional(r)+e.IDENT_RE,relevance:0},h=t.optional(r)+e.IDENT_RE+"\\s*\\(",E={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=[b,c,n,e.C_BLOCK_COMMENT_MODE,p,u],k={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:E,contains:T.concat([{begin:/\(/,end:/\)/,keywords:E,contains:T.concat(["self"]),relevance:0}]),relevance:0},O={begin:"("+a+"[\\*&\\s]+)+"+h,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:E,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:s,keywords:E,relevance:0},{begin:h,returnBegin:!0,contains:[e.inherit(m,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:E,relevance:0,contains:[n,e.C_BLOCK_COMMENT_MODE,u,p,c,{begin:/\(/,end:/\)/,keywords:E,relevance:0,contains:["self",n,e.C_BLOCK_COMMENT_MODE,u,p,c]}]},c,n,e.C_BLOCK_COMMENT_MODE,b]};return{name:"C",aliases:["h"],keywords:E,disableAutodetect:!0,illegal:"</",contains:[].concat(k,O,T,[b,{begin:e.IDENT_RE+"::",keywords:E},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:b,strings:u,keywords:E}}}function Sn(e){let t=e.regex,n=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),s="decltype\\(auto\\)",r="[a-zA-Z_]\\w*::",a="(?!struct)("+s+"|"+t.optional(r)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",c={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},u={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})"/})]},p={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},b={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(u,{className:"string"}),{className:"string",begin:/<.*?>/},n,e.C_BLOCK_COMMENT_MODE]},m={className:"title",begin:t.optional(r)+e.IDENT_RE,relevance:0},h=t.optional(r)+e.IDENT_RE+"\\s*\\(",y=["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"],f=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],E=["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"],D={type:f,keyword:y,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:E},P={className:"function.dispatch",relevance:0,keywords:{_hint:T},begin:t.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,t.lookahead(/(<[^<>]+>|)\s*\(/))},M=[P,b,c,n,e.C_BLOCK_COMMENT_MODE,p,u],Q={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:D,contains:M.concat([{begin:/\(/,end:/\)/,keywords:D,contains:M.concat(["self"]),relevance:0}]),relevance:0},B={className:"function",begin:"("+a+"[\\*&\\s]+)+"+h,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:D,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:s,keywords:D,relevance:0},{begin:h,returnBegin:!0,contains:[m],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[u,p]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:D,relevance:0,contains:[n,e.C_BLOCK_COMMENT_MODE,u,p,c,{begin:/\(/,end:/\)/,keywords:D,relevance:0,contains:["self",n,e.C_BLOCK_COMMENT_MODE,u,p,c]}]},c,n,e.C_BLOCK_COMMENT_MODE,b]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:D,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(Q,B,P,M,[b,{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:D,contains:["self",c]},{begin:e.IDENT_RE+"::",keywords:D},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}var _i=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/},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_-]*/}}),yi=["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"],wi=["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"],vi=[...yi,...wi],Si=["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(),Ti=["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(),Ai=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),Ni=["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","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 Tn(e){let t=e.regex,n=_i(e),s={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},r="and or not only",i=/@-?\w[\w]*(-\w+)*/,a="[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,s,n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+a,relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+Ti.join("|")+")"},{begin:":(:)?("+Ai.join("|")+")"}]},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+Ni.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[n.BLOCK_COMMENT,n.HEXCOLOR,n.IMPORTANT,n.CSS_NUMBER_MODE,...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:i},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:r,attribute:Si.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...c,n.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+vi.join("|")+")\\b"}]}}function An(e){return{name:"Dockerfile",aliases:["docker"],case_insensitive:!0,keywords:["from","maintainer","expose","env","arg","user","onbuild","stopsignal"],contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell",starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"</"}}function Nn(e){let i={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:i,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:i,illegal:/["']/}]}]}}function In(e){let t=e.regex,n={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:e.NUMBER_RE}]},s=e.COMMENT();s.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];let r={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},i={className:"literal",begin:/\bon|off|true|false|yes|no\b/},a={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[s,i,r,a,n,"self"],relevance:0},d=/[A-Za-z0-9_-]+/,u=/"(\\"|[^"])*"/,p=/'[^']*'/,b=t.either(d,u,p),m=t.concat(b,"(\\s*\\.\\s*",b,")*",t.lookahead(/\s*=\s*[^#\s]/));return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[s,{className:"section",begin:/\[+/,end:/\]+/},{begin:m,className:"attr",starts:{end:/$/,contains:[s,c,i,r,a,n]}}]}}var Te="[0-9](_*[0-9])*",Xe=`\\.(${Te})`,Ve="[0-9a-fA-F](_*[0-9a-fA-F])*",kn={className:"number",variants:[{begin:`(\\b(${Te})((${Xe})|\\.)?|(${Xe}))[eE][+-]?(${Te})[fFdD]?\\b`},{begin:`\\b(${Te})((${Xe})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${Xe})[fFdD]?\\b`},{begin:`\\b(${Te})[fFdD]\\b`},{begin:`\\b0[xX]((${Ve})\\.?|(${Ve})?\\.(${Ve}))[pP][+-]?(${Te})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${Ve})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function xn(e,t,n){return n===-1?"":e.replace(t,s=>xn(e,t,n-1))}function Rn(e){let t=e.regex,n="[\xC0-\u02B8a-zA-Z_$][\xC0-\u02B8a-zA-Z_$0-9]*",s=n+xn("(?:<"+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"]},u={className:"meta",begin:"@"+n,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},p={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:[p,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+s+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:d,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:d,relevance:0,contains:[u,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,kn,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},kn,u]}}var Cn="[A-Za-z$_][0-9A-Za-z$_]*",Ii=["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"],ki=["true","false","null","undefined","NaN","Infinity"],Mn=["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"],On=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],Ln=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],xi=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],Ri=[].concat(Ln,Mn,On);function Dn(e){let t=e.regex,n=(w,{after:x})=>{let L="</"+w[0].slice(1);return w.input.indexOf(L,x)!==-1},s=Cn,r={begin:"<>",end:"</>"},i=/<[A-Za-z0-9\\._:-]+\s*\/>/,a={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(w,x)=>{let L=w[0].length+w.index,H=w.input[L];if(H==="<"||H===","){x.ignoreMatch();return}H===">"&&(n(w,{after:L})||x.ignoreMatch());let q,se=w.input.substring(L);if(q=se.match(/^\s*=/)){x.ignoreMatch();return}if((q=se.match(/^\s+extends\s+/))&&q.index===0){x.ignoreMatch();return}}},c={$pattern:Cn,keyword:Ii,literal:ki,built_in:Ri,"variable.language":xi},d="[0-9](_?[0-9])*",u=`\\.(${d})`,p="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",b={className:"number",variants:[{begin:`(\\b(${p})((${u})|\\.)?|(${u}))[eE][+-]?(${d})\\b`},{begin:`\\b(${p})\\b((${u})\\b|\\.)?|(${u})\\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},m={className:"subst",begin:"\\$\\{",end:"\\}",keywords:c,contains:[]},h={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,m],subLanguage:"xml"}},y={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,m],subLanguage:"css"}},f={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,m],subLanguage:"graphql"}},E={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,m]},k={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:s+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},O=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,h,y,f,E,{match:/\$\d+/},b];m.contains=O.concat({begin:/\{/,end:/\}/,keywords:c,contains:["self"].concat(O)});let D=[].concat(k,m.contains),P=D.concat([{begin:/(\s*)\(/,end:/\)/,keywords:c,contains:["self"].concat(D)}]),M={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:P},Q={variants:[{match:[/class/,/\s+/,s,/\s+/,/extends/,/\s+/,t.concat(s,"(",t.concat(/\./,s),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,s],scope:{1:"keyword",3:"title.class"}}]},B={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:{_:[...Mn,...On]}},K={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},j={variants:[{match:[/function/,/\s+/,s,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[M],illegal:/%/},oe={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function ne(w){return t.concat("(?!",w.join("|"),")")}let ie={match:t.concat(/\b/,ne([...Ln,"super","import"].map(w=>`${w}\\s*\\(`)),s,t.lookahead(/\s*\(/)),className:"title.function",relevance:0},W={begin:t.concat(/\./,t.lookahead(t.concat(s,/(?![0-9A-Za-z$_(])/))),end:s,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Y={match:[/get|set/,/\s+/,s,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},M]},g="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",v={match:[/const|var|let/,/\s+/,s,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(g)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[M]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:c,exports:{PARAMS_CONTAINS:P,CLASS_REFERENCE:B},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),K,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,h,y,f,E,k,{match:/\$\d+/},b,B,{scope:"attr",match:s+t.lookahead(":"),relevance:0},v,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[k,e.REGEXP_MODE,{className:"function",begin:g,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:P}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:r.begin,end:r.end},{match:i},{begin:a.begin,"on:begin":a.isTrulyOpeningTag,end:a.end}],subLanguage:"xml",contains:[{begin:a.begin,end:a.end,skip:!0,contains:["self"]}]}]},j,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[M,e.inherit(e.TITLE_MODE,{begin:s,className:"title.function"})]},{match:/\.\.\./,relevance:0},W,{match:"\\$"+s,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[M]},ie,oe,Q,Y,{match:/\$[(.]/}]}}function Pn(e){let t={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},n={match:/[{}[\],:]/,className:"punctuation",relevance:0},s=["true","false","null"],r={scope:"literal",beginKeywords:s.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:s},contains:[t,n,e.QUOTE_STRING_MODE,r,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}var Ae="[0-9](_*[0-9])*",Je=`\\.(${Ae})`,je="[0-9a-fA-F](_*[0-9a-fA-F])*",Ci={className:"number",variants:[{begin:`(\\b(${Ae})((${Je})|\\.)?|(${Je}))[eE][+-]?(${Ae})[fFdD]?\\b`},{begin:`\\b(${Ae})((${Je})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${Je})[fFdD]?\\b`},{begin:`\\b(${Ae})[fFdD]\\b`},{begin:`\\b0[xX]((${je})\\.?|(${je})?\\.(${je}))[pP][+-]?(${Ae})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${je})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function Bn(e){let 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+/}]}},s={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},r={className:"subst",begin:/\$\{/,end:/\}/,contains:[e.C_NUMBER_MODE]},i={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},a={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[i,r]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,i,r]}]};r.contains.push(a);let 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(a,{className:"string"}),"self"]}]},u=Ci,p=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),b={variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},m=b;return m.variants[1].contains=[b],b.variants[1].contains=[m],{name:"Kotlin",aliases:["kt","kts"],keywords:t,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,p,n,s,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:[b,e.C_LINE_COMMENT_MODE,p],relevance:0},e.C_LINE_COMMENT_MODE,p,c,d,a,e.C_NUMBER_MODE]},p]},{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]},a,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:`
318
+ `},u]}}function Fn(e){let t=e.regex,n={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},s={begin:"^[-\\*]{3,}",end:"$"},r={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}]},i={className:"bullet",begin:"^[ ]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},a={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}]},u={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},p={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},b=e.inherit(u,{contains:[]}),m=e.inherit(p,{contains:[]});u.contains.push(m),p.contains.push(b);let h=[n,d];return[u,p,b,m].forEach(T=>{T.contains=T.contains.concat(h)}),h=h.concat(u,p),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:h},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:h}]}]},n,i,u,p,{className:"quote",begin:"^>\\s+",contains:h,end:"$"},r,s,d,a,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}function $n(e){let t=e.regex,n=/(?![A-Za-z0-9])(?![$])/,s=t.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,n),r=t.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,n),i=t.concat(/[A-Z]+/,n),a={scope:"variable",match:"\\$+"+s},c={scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},d={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},u=e.inherit(e.APOS_STRING_MODE,{illegal:null}),p=e.inherit(e.QUOTE_STRING_MODE,{illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(d)}),b={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:e.QUOTE_STRING_MODE.contains.concat(d),"on:begin":(W,Y)=>{Y.data._beginMatch=W[1]||W[2]},"on:end":(W,Y)=>{Y.data._beginMatch!==W[1]&&Y.ignoreMatch()}},m=e.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),h=`[
319
+ ]`,y={scope:"string",variants:[p,u,b,m]},f={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},E=["false","null","true"],T=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],k=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],D={keyword:T,literal:(W=>{let Y=[];return W.forEach(g=>{Y.push(g),g.toLowerCase()===g?Y.push(g.toUpperCase()):Y.push(g.toLowerCase())}),Y})(E),built_in:k},P=W=>W.map(Y=>Y.replace(/\|\d+$/,"")),M={variants:[{match:[/new/,t.concat(h,"+"),t.concat("(?!",P(k).join("\\b|"),"\\b)"),r],scope:{1:"keyword",4:"title.class"}}]},Q=t.concat(s,"\\b(?!\\()"),B={variants:[{match:[t.concat(/::/,t.lookahead(/(?!class\b)/)),Q],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[r,t.concat(/::/,t.lookahead(/(?!class\b)/)),Q],scope:{1:"title.class",3:"variable.constant"}},{match:[r,t.concat("::",t.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[r,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},K={scope:"attr",match:t.concat(s,t.lookahead(":"),t.lookahead(/(?!::)/))},j={relevance:0,begin:/\(/,end:/\)/,keywords:D,contains:[K,a,B,e.C_BLOCK_COMMENT_MODE,y,f,M]},oe={relevance:0,match:[/\b/,t.concat("(?!fn\\b|function\\b|",P(T).join("\\b|"),"|",P(k).join("\\b|"),"\\b)"),s,t.concat(h,"*"),t.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[j]};j.contains.push(oe);let ne=[K,B,e.C_BLOCK_COMMENT_MODE,y,f,M],ie={begin:t.concat(/#\[\s*\\?/,t.either(r,i)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:E,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:E,keyword:["new","array"]},contains:["self",...ne]},...ne,{scope:"meta",variants:[{match:r},{match:i}]}]};return{case_insensitive:!1,keywords:D,contains:[ie,e.HASH_COMMENT_MODE,e.COMMENT("//","$"),e.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:e.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},c,{scope:"variable.language",match:/\$this\b/},a,oe,B,{match:[/const/,/\s/,s],scope:{1:"keyword",3:"variable.constant"}},M,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},e.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:D,contains:["self",ie,a,B,e.C_BLOCK_COMMENT_MODE,y,f]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},e.UNDERSCORE_TITLE_MODE]},y,f]}}function Un(e){let t=e.regex,n=/[\p{XID_Start}_]\p{XID_Continue}*/u,s=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],c={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:s,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},d={className:"meta",begin:/^(>>>|\.\.\.) /},u={className:"subst",begin:/\{/,end:/\}/,keywords:c,illegal:/#/},p={begin:/\{\{/,relevance:0},b={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,d],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,d],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,d,p,u]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,d,p,u]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,p,u]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,p,u]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},m="[0-9](_?[0-9])*",h=`(\\b(${m}))?\\.(${m})|\\b(${m})\\.`,y=`\\b|${s.join("|")}`,f={className:"number",relevance:0,variants:[{begin:`(\\b(${m})|(${h}))[eE][+-]?(${m})[jJ]?(?=${y})`},{begin:`(${h})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${y})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${y})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${y})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${y})`},{begin:`\\b(${m})[jJ](?=${y})`}]},E={className:"comment",begin:t.lookahead(/# type:/),end:/$/,keywords:c,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},T={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:["self",d,f,b,e.HASH_COMMENT_MODE]}]};return u.contains=[b,f,d],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:c,illegal:/(<\/|\?)|=>/,contains:[d,f,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},b,E,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,n],scope:{1:"keyword",3:"title.function"},contains:[T]},{variants:[{match:[/\bclass/,/\s+/,n,/\s*/,/\(\s*/,n,/\s*\)/]},{match:[/\bclass/,/\s+/,n]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[f,T,b]}]}}function Hn(e){let t=e.regex,n="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",s=t.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),r=t.concat(s,/(::\w+)*/),a={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield",...["include","extend","prepend","public","private","protected","raise","throw"]],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},c={className:"doctag",begin:"@[A-Za-z]+"},d={begin:"#<",end:">"},u=[e.COMMENT("#","$",{contains:[c]}),e.COMMENT("^=begin","^=end",{contains:[c],relevance:10}),e.COMMENT("^__END__",e.MATCH_NOTHING_RE)],p={className:"subst",begin:/#\{/,end:/\}/,keywords:a},b={className:"string",contains:[e.BACKSLASH_ESCAPE,p],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:t.concat(/<<[-~]?'?/,t.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,p]})]}]},m="[1-9](_?[0-9])*|0",h="[0-9](_?[0-9])*",y={className:"number",relevance:0,variants:[{begin:`\\b(${m})(\\.(${h}))?([eE][+-]?(${h})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},f={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:a}]},M=[b,{variants:[{match:[/class\s+/,r,/\s+<\s+/,r]},{match:[/\b(class|module)\s+/,r]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:a},{match:[/(include|extend)\s+/,r],scope:{2:"title.class"},keywords:a},{relevance:0,match:[r,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:s,scope:"title.class"},{match:[/def/,/\s+/,n],scope:{1:"keyword",3:"title.function"},contains:[f]},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[b,{begin:n}],relevance:0},y,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:a},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,p],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(d,u),relevance:0}].concat(d,u);p.contains=M,f.contains=M;let j=[{begin:/^\s*=>/,starts:{end:"$",contains:M}},{className:"meta.prompt",begin:"^("+"[>?]>"+"|"+"[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]"+"|"+"(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>"+")(?=[ ])",starts:{end:"$",keywords:a,contains:M}}];return u.unshift(d),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:a,illegal:/\/\*/,contains:[e.SHEBANG({binary:"ruby"})].concat(j).concat(u).concat(M)}}function zn(e){let t=e.regex,n=/(r#)?/,s=t.concat(n,e.UNDERSCORE_IDENT_RE),r=t.concat(n,e.IDENT_RE),i={className:"title.function.invoke",relevance:0,begin:t.concat(/\b/,/(?!let|for|while|if|else|match\b)/,r,t.lookahead(/\s*\(/))},a="([ui](8|16|32|64|128|size)|f(32|64))?",c=["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","union","unsafe","unsized","use","virtual","where","while","yield"],d=["true","false","Some","None","Ok","Err"],u=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","eprintln!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],p=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"];return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?",type:p,keyword:c,literal:d,built_in:u},illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*(?!')/},{scope:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'/,end:/'/,contains:[{scope:"char.escape",match:/\\('|\w|x\w{2}|u\w{4}|U\w{8})/}]}]},{className:"number",variants:[{begin:"\\b0b([01_]+)"+a},{begin:"\\b0o([0-7_]+)"+a},{begin:"\\b0x([A-Fa-f0-9_]+)"+a},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+a}],relevance:0},{begin:[/fn/,/\s+/,s],className:{1:"keyword",3:"title.function"}},{className:"meta",begin:"#!?\\[",end:"\\]",contains:[{className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,s],className:{1:"keyword",3:"keyword",4:"variable"}},{begin:[/for/,/\s+/,s,/\s+/,/in/],className:{1:"keyword",3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,s],className:{1:"keyword",3:"title.class"}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,s],className:{1:"keyword",3:"title.class"}},{begin:e.IDENT_RE+"::",keywords:{keyword:"Self",built_in:u,type:p}},{className:"punctuation",begin:"->"},i]}}function Kn(e){let t=e.regex,n=e.COMMENT("--","$"),s={scope:"string",variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},r={begin:/"/,end:/"/,contains:[{match:/""/}]},i=["true","false","unknown"],a=["double precision","large object","with timezone","without timezone"],c=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],d=["add","asc","collation","desc","final","first","last","view"],u=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year"],p=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],b=["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"],m=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],h=p,y=[...u,...d].filter(P=>!p.includes(P)),f={scope:"variable",match:/@[a-z0-9][a-z0-9_]*/},E={scope:"operator",match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},T={match:t.concat(/\b/,t.either(...h),/\s*\(/),relevance:0,keywords:{built_in:h}};function k(P){return t.concat(/\b/,t.either(...P.map(M=>M.replace(/\s+/,"\\s+"))),/\b/)}let O={scope:"keyword",match:k(m),relevance:0};function D(P,{exceptions:M,when:Q}={}){let B=Q;return M=M||[],P.map(K=>K.match(/\|\d+$/)||M.includes(K)?K:B(K)?`${K}|0`:K)}return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:D(y,{when:P=>P.length<3}),literal:i,type:c,built_in:b},contains:[{scope:"type",match:k(a)},O,T,f,s,r,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,E]}}function Yn(e){return e?typeof e=="string"?e:e.source:null}function Le(e){return U("(?=",e,")")}function U(...e){return e.map(n=>Yn(n)).join("")}function Mi(e){let t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function J(...e){return"("+(Mi(e).capture?"":"?:")+e.map(s=>Yn(s)).join("|")+")"}var Mt=e=>U(/\b/,e,/\w$/.test(e)?/\b/:/\B/),Oi=["Protocol","Type"].map(Mt),qn=["init","self"].map(Mt),Li=["Any","Self"],Rt=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","package","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],Gn=["false","nil","true"],Di=["assignment","associativity","higherThan","left","lowerThan","none","right"],Pi=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],Wn=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],Qn=J(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),Zn=J(Qn,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),Ct=U(Qn,Zn,"*"),Xn=J(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),tt=J(Xn,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),ae=U(Xn,tt,"*"),et=U(/[A-Z]/,tt,"*"),Bi=["attached","autoclosure",U(/convention\(/,J("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",U(/objc\(/,ae,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],Fi=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];function Vn(e){let t={match:/\s+/,relevance:0},n=e.COMMENT("/\\*","\\*/",{contains:["self"]}),s=[e.C_LINE_COMMENT_MODE,n],r={match:[/\./,J(...Oi,...qn)],className:{2:"keyword"}},i={match:U(/\./,J(...Rt)),relevance:0},a=Rt.filter($=>typeof $=="string").concat(["_|0"]),c=Rt.filter($=>typeof $!="string").concat(Li).map(Mt),d={variants:[{className:"keyword",match:J(...c,...qn)}]},u={$pattern:J(/\b\w+/,/#\w+/),keyword:a.concat(Pi),literal:Gn},p=[r,i,d],b={match:U(/\./,J(...Wn)),relevance:0},m={className:"built_in",match:U(/\b/,J(...Wn),/(?=\()/)},h=[b,m],y={match:/->/,relevance:0},f={className:"operator",relevance:0,variants:[{match:Ct},{match:`\\.(\\.|${Zn})+`}]},E=[y,f],T="([0-9]_*)+",k="([0-9a-fA-F]_*)+",O={className:"number",relevance:0,variants:[{match:`\\b(${T})(\\.(${T}))?([eE][+-]?(${T}))?\\b`},{match:`\\b0x(${k})(\\.(${k}))?([pP][+-]?(${T}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},D=($="")=>({className:"subst",variants:[{match:U(/\\/,$,/[0\\tnr"']/)},{match:U(/\\/,$,/u\{[0-9a-fA-F]{1,8}\}/)}]}),P=($="")=>({className:"subst",match:U(/\\/,$,/[\t ]*(?:[\r\n]|\r\n)/)}),M=($="")=>({className:"subst",label:"interpol",begin:U(/\\/,$,/\(/),end:/\)/}),Q=($="")=>({begin:U($,/"""/),end:U(/"""/,$),contains:[D($),P($),M($)]}),B=($="")=>({begin:U($,/"/),end:U(/"/,$),contains:[D($),M($)]}),K={className:"string",variants:[Q(),Q("#"),Q("##"),Q("###"),B(),B("#"),B("##"),B("###")]},j=[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}],oe={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//,contains:j},ne=$=>{let ue=U($,/\//),N=U(/\//,$);return{begin:ue,end:N,contains:[...j,{scope:"comment",begin:`#(?!.*${N})`,end:/$/}]}},ie={scope:"regexp",variants:[ne("###"),ne("##"),ne("#"),oe]},W={match:U(/`/,ae,/`/)},Y={className:"variable",match:/\$\d+/},g={className:"variable",match:`\\$${tt}+`},v=[W,Y,g],w={match:/(@|#(un)?)available/,scope:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:Fi,contains:[...E,O,K]}]}},x={scope:"keyword",match:U(/@/,J(...Bi),Le(J(/\(/,/\s+/)))},L={scope:"meta",match:U(/@/,ae)},H=[w,x,L],q={match:Le(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:U(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,tt,"+")},{className:"type",match:et,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:U(/\s+&\s+/,Le(et)),relevance:0}]},se={begin:/</,end:/>/,keywords:u,contains:[...s,...p,...H,y,q]};q.contains.push(se);let V={match:U(ae,/\s*:/),keywords:"_|0",relevance:0},ee={begin:/\(/,end:/\)/,relevance:0,keywords:u,contains:["self",V,...s,ie,...p,...h,...E,O,K,...v,...H,q]},_e={begin:/</,end:/>/,keywords:"repeat each",contains:[...s,q]},ze={begin:J(Le(U(ae,/\s*:/)),Le(U(ae,/\s+/,ae,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:ae}]},Re={begin:/\(/,end:/\)/,keywords:u,contains:[ze,...s,...p,...E,O,K,...H,q,ee],endsParent:!0,illegal:/["']/},ft={match:[/(func|macro)/,/\s+/,J(W.match,ae,Ct)],className:{1:"keyword",3:"title.function"},contains:[_e,Re,t],illegal:[/\[/,/%/]},gt={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[_e,Re,t],illegal:/\[|%/},mt={match:[/operator/,/\s+/,Ct],className:{1:"keyword",3:"title"}},bt={begin:[/precedencegroup/,/\s+/,et],className:{1:"keyword",3:"title"},contains:[q],keywords:[...Di,...Gn],end:/}/},ye={match:[/class\b/,/\s+/,/func\b/,/\s+/,/\b[A-Za-z_][A-Za-z0-9_]*\b/],scope:{1:"keyword",3:"keyword",5:"title.function"}},Ke={match:[/class\b/,/\s+/,/var\b/],scope:{1:"keyword",3:"keyword"}},re={begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,ae,/\s*/],beginScope:{1:"keyword",3:"title.class"},keywords:u,contains:[_e,...p,{begin:/:/,end:/\{/,keywords:u,contains:[{scope:"title.class.inherited",match:et},...p],relevance:0}]};for(let $ of K.variants){let ue=$.contains.find(qe=>qe.label==="interpol");ue.keywords=u;let N=[...p,...h,...E,O,K,...v];ue.contains=[...N,{begin:/\(/,end:/\)/,contains:["self",...N]}]}return{name:"Swift",keywords:u,contains:[...s,ft,gt,ye,Ke,re,mt,bt,{beginKeywords:"import",end:/$/,contains:[...s],relevance:0},ie,...p,...h,...E,O,K,...v,...H,q,ee]}}var nt="[A-Za-z$_][0-9A-Za-z$_]*",Jn=["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"],jn=["true","false","null","undefined","NaN","Infinity"],es=["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"],ts=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],ns=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],ss=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],rs=[].concat(ns,es,ts);function $i(e){let t=e.regex,n=(w,{after:x})=>{let L="</"+w[0].slice(1);return w.input.indexOf(L,x)!==-1},s=nt,r={begin:"<>",end:"</>"},i=/<[A-Za-z0-9\\._:-]+\s*\/>/,a={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(w,x)=>{let L=w[0].length+w.index,H=w.input[L];if(H==="<"||H===","){x.ignoreMatch();return}H===">"&&(n(w,{after:L})||x.ignoreMatch());let q,se=w.input.substring(L);if(q=se.match(/^\s*=/)){x.ignoreMatch();return}if((q=se.match(/^\s+extends\s+/))&&q.index===0){x.ignoreMatch();return}}},c={$pattern:nt,keyword:Jn,literal:jn,built_in:rs,"variable.language":ss},d="[0-9](_?[0-9])*",u=`\\.(${d})`,p="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",b={className:"number",variants:[{begin:`(\\b(${p})((${u})|\\.)?|(${u}))[eE][+-]?(${d})\\b`},{begin:`\\b(${p})\\b((${u})\\b|\\.)?|(${u})\\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},m={className:"subst",begin:"\\$\\{",end:"\\}",keywords:c,contains:[]},h={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,m],subLanguage:"xml"}},y={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,m],subLanguage:"css"}},f={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,m],subLanguage:"graphql"}},E={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,m]},k={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:s+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},O=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,h,y,f,E,{match:/\$\d+/},b];m.contains=O.concat({begin:/\{/,end:/\}/,keywords:c,contains:["self"].concat(O)});let D=[].concat(k,m.contains),P=D.concat([{begin:/(\s*)\(/,end:/\)/,keywords:c,contains:["self"].concat(D)}]),M={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:P},Q={variants:[{match:[/class/,/\s+/,s,/\s+/,/extends/,/\s+/,t.concat(s,"(",t.concat(/\./,s),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,s],scope:{1:"keyword",3:"title.class"}}]},B={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:{_:[...es,...ts]}},K={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},j={variants:[{match:[/function/,/\s+/,s,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[M],illegal:/%/},oe={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function ne(w){return t.concat("(?!",w.join("|"),")")}let ie={match:t.concat(/\b/,ne([...ns,"super","import"].map(w=>`${w}\\s*\\(`)),s,t.lookahead(/\s*\(/)),className:"title.function",relevance:0},W={begin:t.concat(/\./,t.lookahead(t.concat(s,/(?![0-9A-Za-z$_(])/))),end:s,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Y={match:[/get|set/,/\s+/,s,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},M]},g="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",v={match:[/const|var|let/,/\s+/,s,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(g)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[M]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:c,exports:{PARAMS_CONTAINS:P,CLASS_REFERENCE:B},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),K,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,h,y,f,E,k,{match:/\$\d+/},b,B,{scope:"attr",match:s+t.lookahead(":"),relevance:0},v,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[k,e.REGEXP_MODE,{className:"function",begin:g,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:P}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:r.begin,end:r.end},{match:i},{begin:a.begin,"on:begin":a.isTrulyOpeningTag,end:a.end}],subLanguage:"xml",contains:[{begin:a.begin,end:a.end,skip:!0,contains:["self"]}]}]},j,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[M,e.inherit(e.TITLE_MODE,{begin:s,className:"title.function"})]},{match:/\.\.\./,relevance:0},W,{match:"\\$"+s,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[M]},ie,oe,Q,Y,{match:/\$[(.]/}]}}function is(e){let t=e.regex,n=$i(e),s=nt,r=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],i={begin:[/namespace/,/\s+/,e.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},a={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:r},contains:[n.exports.CLASS_REFERENCE]},c={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},d=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],u={$pattern:nt,keyword:Jn.concat(d),literal:jn,built_in:rs.concat(r),"variable.language":ss},p={className:"meta",begin:"@"+s},b=(f,E,T)=>{let k=f.contains.findIndex(O=>O.label===E);if(k===-1)throw new Error("can not find mode to replace");f.contains.splice(k,1,T)};Object.assign(n.keywords,u),n.exports.PARAMS_CONTAINS.push(p);let m=n.contains.find(f=>f.scope==="attr"),h=Object.assign({},m,{match:t.concat(s,t.lookahead(/\s*\?:/))});n.exports.PARAMS_CONTAINS.push([n.exports.CLASS_REFERENCE,m,h]),n.contains=n.contains.concat([p,i,a,h]),b(n,"shebang",e.SHEBANG()),b(n,"use_strict",c);let y=n.contains.find(f=>f.label==="func.def");return y.relevance=0,Object.assign(n,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),n}function os(e){let t=e.regex,n=t.concat(/[\p{L}_]/u,t.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),s=/[\p{L}0-9._:-]+/u,r={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},i={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},a=e.inherit(i,{begin:/\(/,end:/\)/}),c=e.inherit(e.APOS_STRING_MODE,{className:"string"}),d=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),u={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:s,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[r]},{begin:/'/,end:/'/,contains:[r]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[i,d,c,a,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[i,a,d,c]}]}]},e.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},r,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[d]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[u],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[u],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:t.concat(/</,t.lookahead(t.concat(n,t.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:n,relevance:0,starts:u}]},{className:"tag",begin:t.concat(/<\//,t.lookahead(t.concat(n,/>/))),contains:[{className:"name",begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}function as(e){let t="true false yes no null",n="[\\w#;/?:@&=+$,.~*'()[\\]]+",s={className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},r={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},i={className:"string",relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:"char.escape",relevance:0}]},a={className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,r]},c=e.inherit(a,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),m={className:"number",begin:"\\b"+"[0-9]{4}(-[0-9][0-9]){0,2}"+"([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?"+"(\\.[0-9]*)?"+"([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?"+"\\b"},h={end:",",endsWithParent:!0,excludeEnd:!0,keywords:t,relevance:0},y={begin:/\{/,end:/\}/,contains:[h],illegal:"\\n",relevance:0},f={begin:"\\[",end:"\\]",contains:[h],illegal:"\\n",relevance:0},E=[s,{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+n},{className:"type",begin:"!<"+n+">"},{className:"type",begin:"!"+n},{className:"type",begin:"!!"+n},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:t,keywords:{literal:t}},m,{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},y,f,i,a],T=[...E];return T.pop(),T.push(c),h.contains=T,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:E}}G.registerLanguage("bash",wn);G.registerLanguage("c",vn);G.registerLanguage("cpp",Sn);G.registerLanguage("css",Tn);G.registerLanguage("dockerfile",An);G.registerLanguage("go",Nn);G.registerLanguage("ini",In);G.registerLanguage("java",Rn);G.registerLanguage("javascript",Dn);G.registerLanguage("json",Pn);G.registerLanguage("kotlin",Bn);G.registerLanguage("markdown",Fn);G.registerLanguage("php",$n);G.registerLanguage("python",Un);G.registerLanguage("ruby",Hn);G.registerLanguage("rust",zn);G.registerLanguage("sql",Kn);G.registerLanguage("swift",Vn);G.registerLanguage("typescript",is);G.registerLanguage("xml",os);G.registerLanguage("yaml",as);var Ui={bash:"bash",sh:"bash",zsh:"bash",c:"c",h:"c",cc:"cpp",cpp:"cpp",cxx:"cpp",hpp:"cpp",hxx:"cpp",css:"css",dockerfile:"dockerfile",go:"go",ini:"ini",toml:"ini",java:"java",cjs:"javascript",js:"javascript",jsx:"javascript",mjs:"javascript",json:"json",jsonc:"json",kt:"kotlin",kts:"kotlin",md:"markdown",markdown:"markdown",php:"php",py:"python",rb:"ruby",rs:"rust",sql:"sql",swift:"swift",cts:"typescript",mts:"typescript",ts:"typescript",tsx:"typescript",htm:"xml",html:"xml",svg:"xml",xml:"xml",yaml:"yaml",yml:"yaml"};function cs(e,t){let n=t.split(".").pop()?.toLowerCase()??"",s=Ui[n]??(t.toLowerCase()==="dockerfile"?"dockerfile":null);return s?G.highlight(e,{language:s}).value:null}function ls(e){let t=e.content;if(Array.isArray(t))for(let s of t){if(!s||typeof s!="object")continue;let r=s;if(r.type!=="diff")continue;let i=typeof r.oldText=="string"?r.oldText:void 0,a=typeof r.newText=="string"?r.newText:void 0;if(i===void 0&&a===void 0)continue;let c=typeof r.path=="string"?r.path:void 0;return{...c!==void 0?{path:c}:{},oldText:i??"",newText:a??""}}let n=e.rawInput;if(n&&typeof n=="object"&&!Array.isArray(n)){let s=n,r=typeof s.file_path=="string"?s.file_path:typeof s.path=="string"?s.path:void 0;if(typeof s.old_string=="string"&&typeof s.new_string=="string")return{...r!==void 0?{path:r}:{},oldText:s.old_string,newText:s.new_string};if(typeof s.content=="string")return{...r!==void 0?{path:r}:{},oldText:"",newText:s.content}}return null}function ds(e){let t=e.oldText.split(`
320
+ `),n=e.newText.split(`
321
+ `);return t.length>0&&t[t.length-1]===""&&t.pop(),n.length>0&&n[n.length-1]===""&&n.pop(),{oldLines:t,newLines:n}}function Hi(e,t){let n=e.length,s=t.length;if(n===0||s===0){let d=[];for(let u of e)d.push({op:"-",text:u});for(let u of t)d.push({op:"+",text:u});return d}let r=Array.from({length:n+1},()=>new Array(s+1).fill(0));for(let d=n-1;d>=0;d--)for(let u=s-1;u>=0;u--)e[d]===t[u]?r[d][u]=r[d+1][u+1]+1:r[d][u]=Math.max(r[d+1][u],r[d][u+1]);let i=[],a=0,c=0;for(;a<n&&c<s;)e[a]===t[c]?(i.push({op:"=",text:e[a]}),a++,c++):r[a+1][c]>=r[a][c+1]?(i.push({op:"-",text:e[a]}),a++):(i.push({op:"+",text:t[c]}),c++);for(;a<n;)i.push({op:"-",text:e[a]}),a++;for(;c<s;)i.push({op:"+",text:t[c]}),c++;return i}function us(e,t){let n=0,s=Math.min(e.length,t.length);for(;n<s&&e[n]===t[n];)n++;let r=e.length,i=t.length;for(;r>n&&i>n&&e[r-1]===t[i-1];)r--,i--;let a=[];for(let c=0;c<n;c++)a.push({op:"=",text:e[c]});a.push(...Hi(e.slice(n,r),t.slice(n,i)));for(let c=r;c<e.length;c++)a.push({op:"=",text:e[c]});return a}function ps(e){let{oldLines:t,newLines:n}=ds(e),s=0,r=0;for(let i of us(t,n))i.op==="+"?s++:i.op==="-"&&r++;return{added:s,removed:r}}function fs(e,t={}){let n=t.maxLines??40,s=t.contextLines??3,{oldLines:r,newLines:i}=ds(e),a=us(r,i),c=[];if(Number.isFinite(s)){if(!a.some(m=>m.op!=="="))return[];let p=new Array(a.length).fill(!1);for(let m=0;m<a.length;m++)if(a[m].op!=="="){let h=Math.max(0,m-s),y=Math.min(a.length-1,m+s);for(let f=h;f<=y;f++)p[f]=!0}let b=0;for(;b<a.length;){if(p[b]){c.push({op:a[b].op,text:a[b].text}),b++;continue}let m=b;for(;m<a.length&&!p[m];)m++;let h=m-b;c.push({op:"gap",text:`\u22EF ${h} unchanged line${h===1?"":"s"}`}),b=m}}else for(let u of a)c.push({op:u.op,text:u.text});let d=[];for(let u=0;u<c.length;u++){if(d.length>=n-1&&u<c.length-1){let b=c.length-u;d.push({op:"gap",text:`\u2026 ${b} more line${b===1?"":"s"}`});break}d.push(c[u])}return d}function Lt(e){o.current&&o.current.log.push(e)}var zi=new Set(["session_info_update","current_model_update","current_mode_update","available_commands_update","available_modes_update","usage_update","config_option_update","hydra_compaction","hydra_workspace","clarifier_question_asked","clarifier_question_answered","clarifier_question_dismissed"]);function ms(e){e.log=[],e.toolCalls=new Map,e.pendingPermissions=new Map,e.spinner=null,e.plan=null,e.mode=null,e.model=null,e.modes=[],e.models=[],e.contextUsed=null,e.contextSize=null,e.cost=null,e.busy=!1,e.recentOwnPrompts=[],e.promptQueue=[],e.queueByMessageId=new Map,e.ownPromptIds=new Set,e.inTurn=!1,e.unsolicitedTurnOpen=new Set,e.currentPlanEntry=null,e.daemonSupportsAmend=!1,e.ownClientId=void 0,e.currentHeadMessageId=void 0,e.lastSeenMessageId=void 0}function Ki(e){if(e.kind!=="stream"||e.role!=="user"||!e.queueEntry)return!1;let t=e.queueEntry.status;return t==="queued"||t==="editing"}function bs(){if(!o.current)return 0;let e=o.current.log;for(let t=0;t<e.length;t++)if(Ki(e[t]))return t;return e.length}function fe(e){o.current&&o.current.log.splice(bs(),0,e)}function gs(){o.current&&(o.current.inTurn=!0)}function qi(){if(!o.current)return;o.current.inTurn=!1;let e=o.current.idleListeners;o.current.idleListeners=[];for(let t of e)try{t()}catch{}}function Ot(e,t,n=!1){if(!o.current)return;let s=Ce(t);if(!s)return;let r=o.current.log,i=bs(),a;for(let c=i-1;c>=0;c--){let d=r[c];if(d.kind!=="spinner"){a=d;break}}if(a&&a.kind==="stream"&&a.role===e&&!a.closed&&!!a.synthetic===n){a.text+=s;return}r.splice(i,0,{kind:"stream",role:e,text:s,synthetic:n||void 0})}function Ie(){if(o.current)for(let e=o.current.log.length-1;e>=0;e--){let t=o.current.log[e];if(t.kind==="stream"&&!t.closed){t.closed=!0;return}}}function hs(e){if(!o.current)return!1;let t=Ce(e);if(!t)return!1;let n=o.current.recentOwnPrompts;for(let s=0;s<n.length;s++)if(n[s].text===t)return n.splice(s,1),!0;return!1}function st(e){if(!e)return"";if(typeof e=="string")return e;if(Array.isArray(e))return e.map(st).join("");if(typeof e=="object"){let t=e;if(t.text)return String(t.text);if(t.content)return st(t.content);if(t.diff)return String(t.diff);try{return JSON.stringify(e,null,2)}catch{return String(e)}}return""}function De(){if(!o.current)return;let e=o.current;if(e.spinner){e.log.some(t=>t.kind==="spinner")||fe({kind:"spinner",spinner:e.spinner});return}e.spinner={toolCallIds:[],expanded:!1},fe({kind:"spinner",spinner:e.spinner})}function Gi(e){return e?e.toLowerCase().replace(/[_\s-]/g,"")==="exitplanmode":!1}function Wi(e){let t=e.rawInput;if(!t||typeof t!="object"||Array.isArray(t))return null;let n=t.plan;return typeof n!="string"||n.length===0?null:n}function Yi(e){if(!o.current)return null;let t=o.current.log;for(let n=0;n<t.length;n++){let s=t[n];if(s.kind==="exit-plan-mode"&&s.toolCallId===e)return{idx:n,item:s}}return null}function Es(e){if(!o.current)return!1;let t=String(e.toolCallId??"");if(!t)return!1;let n=e.name??e.title,s=Yi(t);if(!Gi(n)&&!s)return!1;let r=Wi(e),i=typeof e.status=="string"?e.status:void 0;if(s)return r!==null&&(s.item.plan=r),i!==void 0&&(s.item.status=i),!0;if(r===null)return!1;Ie();let a={kind:"exit-plan-mode",toolCallId:t,plan:r};return i!==void 0&&(a.status=i),fe(a),!0}function Qi(e){if(!o.current)return null;let t=o.current.log;for(let n=0;n<t.length;n++){let s=t[n];if(s.kind==="edit-diff"&&s.toolCallId===e)return{idx:n,item:s}}return null}function _s(e){if(!o.current)return!1;let t=String(e.toolCallId??"");if(!t)return!1;let n=Qi(t),s=ls(e),r=typeof e.status=="string"?e.status:void 0;if(n)return s!==null&&(n.item.diff=s),r!==void 0&&(n.item.status=r),!0;if(s===null)return!1;Ie();let i={kind:"edit-diff",toolCallId:t,diff:s,expanded:!1};return r!==void 0&&(i.status=r),fe(i),!0}function Zi(e){if(!o.current)return;if(Ie(),Es(e)){Ne(String(e.toolCallId),typeof e.status=="string"?e.status:void 0);return}if(_s(e)){Ne(String(e.toolCallId),typeof e.status=="string"?e.status:void 0);return}let t={toolCallId:String(e.toolCallId),title:String(e.title??e.kind??"tool"),kind:String(e.kind??""),status:String(e.status??"in_progress"),content:st(e.content)};o.current.toolCalls.set(t.toolCallId,t),De(),o.current.spinner.toolCallIds.push(t.toolCallId),Ne(t.toolCallId,t.status)}function Xi(e){if(!o.current)return;if(Es(e)){typeof e.status=="string"&&Ne(String(e.toolCallId),e.status);return}if(_s(e)){typeof e.status=="string"&&Ne(String(e.toolCallId),e.status);return}let t=o.current.toolCalls.get(String(e.toolCallId));t&&(typeof e.status=="string"&&(t.status=e.status,Ne(t.toolCallId,e.status)),typeof e.title=="string"&&(t.title=e.title),e.content!==void 0&&(t.content=(t.content||"")+st(e.content)))}function rt(){if(o.current){o.current.spinner=null,o.current.log=o.current.log.filter(e=>e.kind!=="spinner"),Ie();for(let e of o.current.promptQueue)e.status==="processing"&&(e.status="done");o.current.currentPlanEntry=null,o.current.currentHeadMessageId=void 0,qi()}}function Vi(e){if(!o.current)return;let n=(Array.isArray(e.prompt)?e.prompt:[]).map(r=>Ce(r)).join("");if(!n)return;let s=typeof e.messageId=="string"?e.messageId:void 0;s&&o.current.queueByMessageId.has(s)||hs({text:n})||(Ie(),fe({kind:"stream",role:"user",text:n,closed:!0}))}function ys(e){if(o.current)for(let t of e){if(!t||typeof t!="object")continue;let n=t,s=typeof n.messageId=="string"?n.messageId:"";if(!s||o.current.queueByMessageId.has(s))continue;let r=Array.isArray(n.prompt)?n.prompt:[],i="";for(let d of r)if(d&&typeof d=="object"){let u=d;u.type==="text"&&typeof u.text=="string"&&(i+=u.text)}if(!i)continue;let a=typeof n.position=="number"?n.position:0,c={id:"snap_"+Math.random().toString(36).slice(2,10),text:i,status:a===0?"processing":"queued",aheadAtEnqueue:Math.max(0,a),messageId:s};if(o.current.queueByMessageId.set(s,c),a===0){o.current.currentHeadMessageId=s;let d=Ji(i);if(d){d.queueEntry=c;continue}}o.current.log.push({kind:"stream",role:"user",text:i,closed:!0,queueEntry:c})}}function Ji(e){if(!o.current)return null;let t=o.current.log;for(let n=t.length-1;n>=0;n--){let s=t[n];if(s.kind==="stream"&&s.role==="user"&&!s.queueEntry&&s.text===e)return s}return null}function ji(e){if(!o.current)return;let t=typeof e.messageId=="string"?e.messageId:"";if(!t)return;let s=(e._meta??{})["hydra-acp"]??{},r=typeof s.amending=="string"?s.amending:void 0,i=e.originator??{},a=typeof i.clientId=="string"?i.clientId:"";if(!!o.current.ownClientId&&a===o.current.ownClientId){let y=o.current.promptQueue.find(E=>E.messageId===void 0&&E.status!=="cancelled");if(!y)return;y.messageId=t,o.current.queueByMessageId.set(t,y),r!==void 0&&(y.amendsMessageId=r,it(r,t));let f=typeof e.position=="number"?e.position:1;y.aheadAtEnqueue=Math.max(0,f),f===0?y.status="processing":y.status==="pending"&&(y.status="queued");return}let d=Array.isArray(e.prompt)?e.prompt:[],u="";for(let y of d)if(y&&typeof y=="object"){let f=y;f.type==="text"&&typeof f.text=="string"&&(u+=f.text)}if(!u)return;let p=typeof e.position=="number"?e.position:0,b=typeof e.queueDepth=="number"?e.queueDepth:1,m={id:"peer_"+Math.random().toString(36).slice(2,10),text:u,status:p===0?"processing":"queued",aheadAtEnqueue:Math.max(0,p),messageId:t};r!==void 0&&(m.amendsMessageId=r,it(r,t)),o.current.queueByMessageId.set(t,m),Ie();let h={kind:"stream",role:"user",text:u,closed:!0,queueEntry:m};p===0?fe(h):o.current.log.push(h)}function eo(e){if(!o.current)return;let t=typeof e.messageId=="string"?e.messageId:"";if(!t)return;let n=o.current.queueByMessageId.get(t);if(!n)return;let s=Array.isArray(e.prompt)?e.prompt:[],r="";for(let i of s)if(i&&typeof i=="object"){let a=i;a.type==="text"&&typeof a.text=="string"&&(r+=a.text)}if(r){n.text=r;for(let i of o.current.log)if(i.kind==="stream"&&i.role==="user"&&i.queueEntry===n){i.text=r;break}}}function to(e){if(!o.current)return;let t=typeof e.messageId=="string"?e.messageId:"";if(!t)return;let n=typeof e.reason=="string"?e.reason:"";n==="started"&&(o.current.currentHeadMessageId=t);let s=o.current.queueByMessageId.get(t);s&&(n==="started"?s.status="processing":(n==="cancelled"||n==="abandoned")&&(s.amendedByMessageId!==void 0?s.status="amended":s.status="cancelled",o.current.queueByMessageId.delete(t)))}function no(e){if(!o.current)return;let t=typeof e.messageId=="string"?e.messageId:"";if(!t)return;let n=o.current.queueByMessageId.get(t);n&&(n.held=!0)}function so(e){if(!o.current)return;let t=typeof e.messageId=="string"?e.messageId:"";if(!t)return;let n=o.current.queueByMessageId.get(t);n&&(n.held=!1)}function ro(e){o.current&&typeof e.count=="number"&&(o.current.armedTasks=e.count,o.current.armedSince=e.count>0&&typeof e.since=="number"?e.since:void 0,o.current.armedTaskList=Dt(e.tasks))}function Dt(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(!n||typeof n!="object")continue;let s=n;typeof s.label!="string"||typeof s.since!="number"||t.push({label:s.label,since:s.since,taskId:typeof s.taskId=="string"?s.taskId:void 0,taskType:typeof s.taskType=="string"?s.taskType:void 0,toolCallId:typeof s.toolCallId=="string"?s.toolCallId:void 0})}return t}function io(e){if(!o.current)return;switch(typeof e.phase=="string"?e.phase:""){case"started":case"iteration":o.current.compactionPhase="running";break;case"deferred":o.current.compactionPhase="deferred";break;case"swapped":o.current.compactionPhase=void 0,C({banner:{kind:"good",text:"Context compacted."}});break;case"failed":o.current.compactionPhase=void 0,C({banner:{kind:"bad",text:"Context compaction failed."}});break;case"rolled_back":o.current.compactionPhase=void 0,C({banner:{kind:"warn",text:"Compaction rolled back."}});break;default:break}}function oo(e){if(!o.current)return;let t=typeof e.cancelledMessageId=="string"?e.cancelledMessageId:"",n=typeof e.newMessageId=="string"?e.newMessageId:"";if(!t||!n)return;it(t,n);let s=o.current.queueByMessageId.get(n);s&&s.amendsMessageId===void 0&&(s.amendsMessageId=t)}function it(e,t){if(!o.current)return;let n=o.current.queueByMessageId.get(e)??o.current.promptQueue.find(s=>s.messageId===e);n&&(n.amendedByMessageId=t,n.status==="cancelled"&&(n.status="amended"))}function ao(e){if(!o.current)return;let t=e.entries??e.plan??null;if(o.current.plan=t,o.current.currentPlanEntry){o.current.currentPlanEntry.entries=t;return}let n={kind:"plan",entries:t};fe(n),o.current.currentPlanEntry=n}function co(e){if(!o.current)return;let t=typeof e?.toolCallId=="string"?e.toolCallId:void 0;t&&ws(t)}function ws(e){o.current&&(o.current.pendingPermissions.delete(e),o.current.log=o.current.log.filter(t=>!(t.kind==="perm"&&t.toolCallId===e)))}function Ne(e,t){!o.current||!e||!t||t==="pending"||o.current.pendingPermissions.has(e)&&ws(e)}function vs(e){if(e.method==="hydra-acp/prompt_queue/added"){ji(e.params??{});return}if(e.method==="hydra-acp/prompt_queue/updated"){eo(e.params??{});return}if(e.method==="hydra-acp/prompt_queue/removed"){to(e.params??{});return}if(e.method==="hydra-acp/prompt_queue/held"){no(e.params??{});return}if(e.method==="hydra-acp/prompt_queue/released"){so(e.params??{});return}if(e.method==="hydra-acp/session/armed_tasks_updated"){ro(e.params??{});return}if(e.method==="hydra-acp/prompt/amended"){oo(e.params??{});return}if(e.method!=="session/update")return;let t=e.params?.update??null;if(!t||typeof t!="object")return;let n=String(t.sessionUpdate??"");if(o.current&&n&&!zi.has(n)&&typeof t.messageId=="string"&&(o.current.lastSeenMessageId=t.messageId),n==="permission_resolved"){co(t);return}switch(n){case"prompt_received":case"user_message_chunk":case"agent_message_chunk":case"agent_thought_chunk":case"tool_call":case"tool_call_update":case"plan":gs();break;default:break}switch(n){case"user_message_chunk":{if(((t._meta??{})["hydra-acp"]??{}).compatFor==="prompt_received")break;hs(t.content)||Ot("user",t.content);break}case"agent_message_chunk":{let r=(t._meta??{})["hydra-acp"]??{};Ot("agent",t.content,r.synthetic===!0);break}case"agent_thought_chunk":Ot("thought",t.content);break;case"tool_call":Zi(t);break;case"tool_call_update":Xi(t);break;case"current_mode_update":o.current&&(o.current.mode=t.modeId??t.currentModeId??null,Array.isArray(t.availableModes)&&(o.current.modes=t.availableModes),S());break;case"available_modes_update":o.current&&Array.isArray(t.availableModes)&&(o.current.modes=t.availableModes,S());break;case"current_model_update":o.current&&(o.current.model=t.modelId??t.currentModelId??null,Array.isArray(t.availableModels)&&(o.current.models=t.availableModels),S());break;case"config_option_update":o.current&&Array.isArray(t.configOptions)&&(o.current.configOptions=t.configOptions,S());break;case"usage_update":if(o.current){let s=t.used??t.contextUsed,r=t.size??t.contextSize;typeof s=="number"&&(o.current.contextUsed=s),typeof r=="number"&&(o.current.contextSize=r),t.cost&&(o.current.cost=t.cost)}break;case"plan":ao(t);break;case"prompt_received":Vi(t);break;case"stop":case"turn_complete":{let i=((t._meta??{})["hydra-acp"]??{}).amended;if(i){let a=typeof i.cancelledMessageId=="string"?i.cancelledMessageId:"",c=typeof i.newMessageId=="string"?i.newMessageId:"";a&&c&&it(a,c)}rt();break}case"turn_started":{if(!o.current)break;let r=(t._meta??{})["hydra-acp"]??{};if(r.unsolicited!==!0)break;let i=typeof t.messageId=="string"?t.messageId:void 0;if(!i||o.current.unsolicitedTurnOpen.has(i))break;o.current.unsolicitedTurnOpen.add(i),gs();let a=r.cause??{},c=typeof a.label=="string"?a.label:void 0;fe({kind:"system",text:c?`agent resumed on its own: background task finished (${c})`:"agent resumed on its own"});break}case"turn_ended":{if(!o.current)break;let r=(t._meta??{})["hydra-acp"]??{};if(r.unsolicited!==!0)break;let i=typeof t.startedMessageId=="string"?t.startedMessageId:void 0;if(!i||!o.current.unsolicitedTurnOpen.has(i)||(o.current.unsolicitedTurnOpen.delete(i),r.reason==="superseded")||o.current.unsolicitedTurnOpen.size>0)break;rt();break}case"session_info_update":o.current&&typeof t.title=="string"&&(o.current.title=t.title);break;case"hydra_compaction":io(t);break;default:break}o.current?.inTurn&&De()}function Ss(e){if(o.current){if(e.method==="session/request_permission"){let t=e.params??{},n=t.toolCall??{},s=typeof n.toolCallId=="string"?n.toolCallId:"";if(!s){o.current.ws?.send(JSON.stringify({jsonrpc:"2.0",id:e.id,error:{code:-32602,message:"missing toolCall.toolCallId"}}));return}o.current.pendingPermissions.set(s,{requestId:e.id,toolCallId:s,toolCall:n,options:t.options??[]}),Lt({kind:"perm",toolCallId:s});return}o.current.ws?.send(JSON.stringify({jsonrpc:"2.0",id:e.id,error:{code:-32601,message:`method not handled: ${String(e.method)}`}}))}}function at(e,t){let n=[];e&&n.push({type:"text",text:e});for(let s of t)n.push({type:"image",data:s.data,mimeType:s.mimeType});return n}function Pe(){let e=o.current;if(!e)return;let t=e.composerValue.trim(),n=e.attachments;!t&&n.length===0||(Pt(e,t,{attachments:n})&&(e.composerValue="",e.attachments=[]),S())}function As(e){let t=o.current;t&&(Pt(t,`/hydra workspace ${e}`,{addToHistory:!1}),S())}function Ns(){let e=o.current;e&&(Pt(e,"/hydra compact",{addToHistory:!1}),S())}function Pt(e,t,n={}){let s=n.attachments??[];if(!e.ws||e.ws.readyState!==WebSocket.OPEN)return e.log.push({kind:"error",text:"Not connected to session \u2014 prompt not sent."}),!1;let r=e.promptQueue.filter(p=>p.status==="queued"||p.status==="pending"||p.status==="processing").length,i=e.inTurn&&!e.promptQueue.some(p=>p.status==="processing"),a=r+(i?1:0),c={id:"p_"+Math.random().toString(36).slice(2,10),text:t,status:a>0?"queued":"pending",aheadAtEnqueue:a,attachments:s.length>0?s:void 0};e.promptQueue.push(c),e.log.push({kind:"stream",role:"user",text:t,closed:!0,queueEntry:c,attachments:c.attachments}),e.recentOwnPrompts.push({text:t,at:Date.now()});let d=Date.now()-6e4;e.recentOwnPrompts=e.recentOwnPrompts.filter(p=>p.at>=d).slice(-16);let u=le("session/prompt",{sessionId:e.sessionId,prompt:at(t,s)});return u!==void 0&&e.ownPromptIds.add(String(u)),De(),(n.addToHistory??!0)&&Is(e,t),!0}var Ts=100;function Is(e,t){e.history[0]!==t&&(e.history.unshift(t),e.history.length>Ts&&(e.history.length=Ts)),e.historyIndex=null,e.historyDraft=null}function Bt(e){let t=o.current;if(t){if(e.messageId!==void 0){le("hydra-acp/prompt/cancel",{sessionId:t.sessionId,messageId:e.messageId});return}e.status="cancelled",S()}}function ks(e,t){let n=o.current;if(!n)return;let s=t.trim();if(s){if(e.messageId===void 0){e.text=s,S();return}le("hydra-acp/prompt/update",{sessionId:n.sessionId,messageId:e.messageId,prompt:at(s,e.attachments??[])})}}function xs(){let e=o.current;if(!e)return;let t=e.composerValue.trim(),n=e.attachments;if(!t&&n.length===0)return;if(!e.ws||e.ws.readyState!==WebSocket.OPEN){e.log.push({kind:"error",text:"Not connected to session \u2014 prompt not sent."}),e.composerValue="",e.attachments=[],S();return}if(!e.daemonSupportsAmend||e.currentHeadMessageId===void 0){Pe();return}let s=e.currentHeadMessageId,r=e.composerValue;e.composerValue="",e.attachments=[],Is(e,t);let i={id:"p_"+Math.random().toString(36).slice(2,10),text:t,status:"pending",aheadAtEnqueue:0,amendsMessageId:s,attachments:n.length>0?n:void 0};e.promptQueue.push(i),e.log.push({kind:"stream",role:"user",text:t,closed:!0,queueEntry:i,attachments:i.attachments}),e.recentOwnPrompts.push({text:t,at:Date.now()});let a=Date.now()-6e4;e.recentOwnPrompts=e.recentOwnPrompts.filter(c=>c.at>=a).slice(-16),De(),lo(i,r,s,t),S()}function lo(e,t,n,s){let r=o.current;if(!r)return;let i=le("_session/steering",{sessionId:r.sessionId,prompt:at(s,e.attachments??[])});i!==void 0&&r.responseHandlers.set(String(i),a=>{uo(e,t,n,s,a)})}function uo(e,t,n,s,r){let i=o.current;if(!i)return;if(r.error){if(r.error?.code===-32601){po(e,t,n,s);return}ot(i,e,t),C({banner:{kind:"bad",text:`steering failed: ${Rs(r.error)}`}});return}let a=r.result??{};if(a.outcome==="injected"){e.status="processing",S();return}a.outcome!=="startedNewTurn"&&(ot(i,e,t),C({banner:{kind:"warn",text:"steering failed"}}))}function po(e,t,n,s){let r=o.current;if(!r)return;let i=le("hydra-acp/prompt/amend",{sessionId:r.sessionId,targetMessageId:n,prompt:at(s,e.attachments??[])});i!==void 0&&r.responseHandlers.set(String(i),a=>{fo(e,t,a)})}function fo(e,t,n){let s=o.current;if(!s)return;if(n.error){ot(s,e,t),C({banner:{kind:"bad",text:`amend failed: ${Rs(n.error)}`}});return}let r=n.result??{};if(r.amended&&r.reason==="ok")return;ot(s,e,t);let i="amend rejected";r.reason==="target_completed"?i="previous response finished \u2014 press Send to send as a new turn":r.reason==="target_cancelled"?i="amend skipped \u2014 previous turn was cancelled":r.reason==="target_not_found"&&(i="amend skipped \u2014 no matching prompt"),C({banner:{kind:"warn",text:i}})}function ot(e,t,n){let s=e.promptQueue.indexOf(t);s>=0&&e.promptQueue.splice(s,1),e.log=e.log.filter(r=>!(r.kind==="stream"&&r.role==="user"&&r.queueEntry===t)),e.composerValue=n,e.attachments=t.attachments??[],S()}function Rs(e){if(e&&typeof e=="object"&&"message"in e){let t=e.message;if(typeof t=="string")return t}return"unknown error"}function Cs(){let e=o.current;!e||!e.inTurn||Ft("session/cancel",{sessionId:e.sessionId})}function Ms(){let e=o.current;if(!e)return;let t=!1;for(let n of e.promptQueue)(n.status==="queued"||n.status==="pending")&&(Bt(n),t=!0);e.inTurn&&Ft("session/cancel",{sessionId:e.sessionId}),t&&S()}function Os(e){o.current&&le("session/set_mode",{sessionId:o.current.sessionId,modeId:e})}function Ls(e){o.current&&le("session/set_model",{sessionId:o.current.sessionId,modelId:e})}function Ds(e,t){let n=o.current;if(!n)return;let s=le("session/set_config_option",{sessionId:n.sessionId,configId:e,value:t});s!==void 0&&n.responseHandlers.set(String(s),r=>{let i=r.result?.configOptions;Array.isArray(i)&&o.current===n&&(n.configOptions=i,S())})}function Ps(e){for(let t of e.promptQueue)t.status!=="done"&&t.status!=="cancelled"&&(t.status="cancelled",t.messageId!==void 0&&e.queueByMessageId.delete(t.messageId))}function Bs(e){for(let t of e.promptQueue)t.messageId===void 0&&t.status!=="done"&&t.status!=="cancelled"&&(t.status="cancelled")}var ct=null;async function Fs(){if(ct)return ct;if(!("serviceWorker"in navigator))return null;try{return ct=await navigator.serviceWorker.register("/sw.js"),ct}catch{return null}}async function $s(){return typeof Notification>"u"||!await Fs()?!1:Notification.permission==="granted"?!0:Notification.permission==="denied"?!1:await Notification.requestPermission()==="granted"}function go(e){for(let t=e.log.length-1;t>=0;t--){let n=e.log[t];if(n.kind==="stream"&&n.role==="agent"&&n.text)return n.text}return""}function mo(){return document.visibilityState!=="visible"||!document.hasFocus()}async function Us(e){if(!o.notifyOnTurnEnd||!mo()||typeof Notification>"u"||Notification.permission!=="granted")return;let t=await Fs();if(!t)return;let n=go(e).trim().slice(0,200)||"Turn finished.",s=e.title||"hydra-acp";await t.showNotification(s,{body:n,tag:`hydra-acp-turn-${e.sessionId}`,data:{url:`/#/session/${encodeURIComponent(e.sessionId)}`}})}function le(e,t){let n=o.current;if(!n||!n.ws||n.ws.readyState!==WebSocket.OPEN)return;let s=n.nextId=n.nextId??1;return n.nextId=s+1,n.ws.send(JSON.stringify({jsonrpc:"2.0",id:s,method:e,params:t})),s}function Ft(e,t){let n=o.current;!n||!n.ws||n.ws.readyState!==WebSocket.OPEN||n.ws.send(JSON.stringify({jsonrpc:"2.0",method:e,params:t}))}function bo(e,t){let n=o.current;!n||!n.ws||n.ws.readyState!==WebSocket.OPEN||n.ws.send(JSON.stringify({jsonrpc:"2.0",id:e,result:t}))}function Hs(e){if(o.current){if(e.method==="bridge/replay_policy"){e.params?.policy!=="after_message"&&ms(o.current);return}if(e.method==="bridge/ready"){o.current.ready=!0,o.banner=null,o.current.reconnectAttempt=0;let t=e.params??{};typeof t.clientId=="string"&&(o.current.ownClientId=t.clientId),Array.isArray(t.configOptions)&&(o.current.configOptions=t.configOptions);let s=t._meta?.["hydra-acp"],r=s?.queue;Array.isArray(r)&&ys(r),s?.prompt?.amending===!0&&(o.current.daemonSupportsAmend=!0),typeof s?.armedTasks=="number"&&(o.current.armedTasks=s.armedTasks,o.current.armedSince=s.armedTasks>0&&typeof s.armedSince=="number"?s.armedSince:void 0,o.current.armedTaskList=Dt(s.armedTaskList));let a=o.current.readyListeners;o.current.readyListeners=[];for(let c of a)try{c()}catch{}S();return}if(e.method==="bridge/error"){Lt({kind:"error",text:`Bridge error: ${e.params?.message??"?"}`}),S();return}if(e.method==="hydra-acp/session/closed"){o.current&&(o.current.ready=!1,Ps(o.current)),o.banner={kind:"warn",text:"Session is now cold \u2014 opening a new prompt will resurrect it."},S();return}if(e.method&&"id"in e){Ss(e),o.current.ready&&S();return}if(e.method){vs(e),o.current.ready&&S();return}if("id"in e&&e.id!==void 0&&o.current.ownPromptIds.has(String(e.id))){o.current.ownPromptIds.delete(String(e.id)),rt(),Us(o.current),S();return}if("id"in e&&e.id!==void 0){let t=o.current.responseHandlers.get(String(e.id));t&&(o.current.responseHandlers.delete(String(e.id)),t({result:e.result,error:e.error}))}}}function $t(e,t){if(!o.current)return;let n=o.current.pendingPermissions.get(e);n&&(o.current.pendingPermissions.delete(e),o.current.log=o.current.log.filter(s=>!(s.kind==="perm"&&s.toolCallId===e)),bo(n.requestId,{outcome:t==="__cancel__"?{outcome:"cancelled"}:{outcome:"selected",optionId:t}}),S())}var zs=[1e3,2e3,4e3,8e3,16e3,3e4],ho=5;function Eo(e,t){let n=encodeURIComponent(e);return t?`#/session/${n}?load=true`:`#/session/${n}`}var Ut=!1;function Ks(e){if(window.location.hash!==e){Ut=!0;try{history.pushState(null,"",e||window.location.pathname+window.location.search)}finally{queueMicrotask(()=>{Ut=!1})}}}function Ht(){if(Ut)return;let t=window.location.hash.match(/^#\/session\/([^?]+)(?:\?(.*))?$/);if(t){let n=decodeURIComponent(t[1]),r=new URLSearchParams(t[2]??"").get("load")==="true";if(o.view==="chat"&&o.current?.sessionId===n)return;lt(n,r);return}o.view!=="list"&&wo()}function lt(e,t){Ks(Eo(e,t)),Gs();let n=o.sessions.find(r=>r.sessionId===e),s={sessionId:e,title:n?.title??"",cwd:n?.cwd||"",agentId:n?.agentId||"",ws:null,ready:!1,log:[],toolCalls:new Map,pendingPermissions:new Map,pendingRequestById:new Map,responseHandlers:new Map,spinner:null,plan:null,mode:null,model:null,modes:[],models:[],contextUsed:null,contextSize:null,cost:null,fileOverlay:null,composerValue:"",attachments:[],busy:!1,recentOwnPrompts:[],history:[],historyIndex:null,historyDraft:null,_lastMetaFp:n?`${n.title}|${n.cwd}|${n.agentId}`:"",promptQueue:[],queueByMessageId:new Map,ownPromptIds:new Set,inTurn:!1,idleListeners:[],readyListeners:[],currentPlanEntry:null,daemonSupportsAmend:!1,loadOnConnect:t,reconnectAttempt:0,headerExpanded:!1,unsolicitedTurnOpen:new Set,configOptions:[]};o.current=s,C({view:"chat"}),qs(s)}function qs(e){let t=new URL("/ws",location.href);t.protocol=location.protocol==="https:"?"wss:":"ws:",t.searchParams.set("session",e.sessionId),e.loadOnConnect&&t.searchParams.set("load","true"),e.lastSeenMessageId!==void 0&&t.searchParams.set("afterMessageId",e.lastSeenMessageId);let n=new WebSocket(t.toString());e.ws=n,n.addEventListener("open",()=>{}),n.addEventListener("message",s=>{let r;try{r=JSON.parse(String(s.data))}catch{return}Hs(r)}),n.addEventListener("close",()=>{!o.current||o.current.ws!==n||_o(o.current)}),n.addEventListener("error",()=>{})}function _o(e){e.ready=!1,Bs(e);let t=e.reconnectAttempt??0,n=zs[Math.min(t,zs.length-1)],s=t>=ho;C({banner:s?{kind:"bad",text:"Still disconnected \u2014 retrying\u2026"}:{kind:"warn",text:"Reconnecting\u2026"}}),e.reconnectTimer=setTimeout(()=>{!o.current||o.current!==e||(e.reconnectTimer=void 0,e.reconnectAttempt=t+1,yo(e),S(),qs(e))},n)}function yo(e){e.ws=null,e.ready=!1,e.pendingRequestById=new Map,e.responseHandlers=new Map,e.idleListeners=[],e.readyListeners=[],e.nextId=void 0}function wo(){Ks(""),Gs(),C({view:"list",current:null})}function Gs(){if(o.current&&(o.current.reconnectTimer&&(clearTimeout(o.current.reconnectTimer),o.current.reconnectTimer=void 0),o.current.ws)){try{o.current.ws.close()}catch{}o.current.ws=null}}var Ws=10*1024*1024,dt=new WeakSet;function qt(e){return e>=1024*1024?`${(e/(1024*1024)).toFixed(1)}MB`:e>=1024?`${(e/1024).toFixed(0)}KB`:`${e}B`}function vo(e,t){for(let n of t){if(n.size>Ws){C({banner:{kind:"warn",text:`pasted image is ${qt(n.size)}, max ${qt(Ws)}`}});continue}let s=new FileReader;s.onload=()=>{let r=s.result;if(typeof r!="string")return;let i=r.indexOf(",");i<0||(e.attachments.push({mimeType:n.type||"image/png",data:r.slice(i+1),sizeBytes:n.size}),S())},s.readAsDataURL(n)}}function Js(e){return`data:${e.mimeType};base64,${e.data}`}function So(e){return e.attachments.length===0?null:l("div",{class:"attachment-chips"},...e.attachments.map((t,n)=>l("span",{class:"attachment-chip",title:qt(t.sizeBytes)},l("img",{class:"attachment-thumb",src:Js(t)}),l("button",{class:"attachment-remove",title:"Remove image",...I(()=>{e.attachments.splice(n,1),S()})},"\xD7"))))}function js(e){return"untitled"}function ge(e){return e.replace(/^hydra_session_/,"")}function To(e){if(!e)return;let t=e.lastIndexOf("/");return t===-1?e:e.slice(t+1)}function Ao(e,t){let n=e||"?",s=To(t);return s?`${n}\u2022${s}`:n}function er(e){let t=Math.floor(Math.max(0,e)/1e3);if(t<60)return"<1m";let n=Math.floor(t/60);if(n<60)return`${n}m`;let s=Math.floor(n/60);if(s<24)return`${s}h`;let r=Math.floor(s/24);if(r<14)return`${r}d`;let i=Math.floor(r/7);if(i<9)return`${i}w`;let a=Math.floor(r/30);return a<12?`${a}mo`:`${Math.floor(r/365)}y`}function No(e,t=Date.now()){if(!e)return"?";let n=Date.parse(e);return Number.isNaN(n)?"?":er(t-n)}function Ys(e){return Number.isFinite(e)?e<1e3?String(e):e<1e6?(e/1e3).toFixed(e<1e4?1:0).replace(/\.0$/,"")+"k":(e/1e6).toFixed(2).replace(/\.?0+$/,"")+"M":"?"}function Qs(e){let t=null,n="USD";if(typeof e=="number")t=e;else if(e&&typeof e=="object"){let r=e;if(typeof r.amount=="number")t=r.amount;else if(typeof r.total=="number")t=r.total;else if(r.total&&typeof r.total=="object"){let i=r.total;typeof i.amount=="number"&&(t=i.amount),typeof i.currency=="string"&&(n=i.currency)}typeof r.currency=="string"&&(n=r.currency)}if(t===null)return null;let s=t<.01?4:t<1?3:2;return n==="USD"?`$${t.toFixed(s)}`:`${t.toFixed(s)} ${n}`}function tr(e,t){t.banner&&e.appendChild(l("div",{class:"banner "+t.banner.kind},t.banner.text)),t.view==="list"?(e.appendChild(Io()),e.appendChild(xo())):t.view==="chat"&&t.current&&(e.appendChild(Qo(t.current)),t.current.fileOverlay&&e.appendChild(fa(t.current))),t.modal&&(t.modal.kind==="session"?e.appendChild(Ko(t.modal)):t.modal.kind==="modes"&&t.current?e.appendChild(Xs("Mode",t.current.modes,t.current.mode,n=>Os(n.id))):t.modal.kind==="models"&&t.current&&e.appendChild(Xs("Model",t.current.models,t.current.model,n=>Ls(n.id))))}function Io(){return l("div",{class:"topbar"},l("span",{class:"pill clickable",title:"Click to toggle grouping by project/recent",...I(()=>C({groupBy:o.groupBy==="project"?"recent":"project"}))},o.groupBy),l("span",{class:"pill clickable",title:"Click to toggle showing disk-only sessions",...I(()=>{C({showCold:!o.showCold})})},o.showCold?"all":"warm"),ko(),l("span",{class:"spacer"}),l("button",{...I(Fo),title:"Import a *.hydra bundle from disk"},"\u{1F4E5}"),l("button",{...I(zo),title:"New Session"},"\uFF0B"))}function ko(){let e=new Set;for(let r of o.sessions)r.importedFromMachine&&!r.upstreamSessionId&&e.add(r.importedFromMachine);let t=[...e].sort(),n=l("select",{class:"host-select",title:"Filter sessions by origin host",onchange:r=>{let i=r.target.value;C({hostFilter:i})}}),s=(r,i)=>{let a=document.createElement("option");a.value=r,a.textContent=i,o.hostFilter===r&&(a.selected=!0),n.appendChild(a)};s("__local","local");for(let r of t)s(r,r);return s("__all","all"),o.hostFilter!=="__local"&&o.hostFilter!=="__all"&&!t.includes(o.hostFilter)&&(n.value=o.hostFilter),n}function xo(){let e=o.showCold?o.sessions:o.sessions.filter(r=>r.status!=="cold");o.hostFilter==="__local"?e=e.filter(r=>!r.importedFromMachine||!!r.upstreamSessionId):o.hostFilter!=="__all"&&(e=e.filter(r=>r.importedFromMachine===o.hostFilter&&!r.upstreamSessionId));let t=o.showCold?0:o.sessions.filter(r=>r.status==="cold").length,n=Lo(e,o.groupBy),s=l("div",{class:"list"});if(e.length===0){let r;o.sessions.length===0?r="No sessions. Use + to create one, or run `hydra-acp launch <agent>` from your editor.":o.hostFilter==="__local"?r="No local sessions. Switch the host filter to see imported sessions.":o.hostFilter!=="__all"?r=`No sessions from ${o.hostFilter}. Try a different host.`:r=`No warm sessions. ${t} cold session${t===1?"":"s"} hidden \u2014 click "warm" to switch to "all".`,s.appendChild(l("div",{class:"empty"},r))}for(let r of n){let i=l("div",{class:"group"});r.label&&i.appendChild(l("h2",null,r.label));for(let a of r.sessions)i.appendChild(Do(a,r.label===null));s.appendChild(i)}return s}function Zs(e,t){let n=r=>{let i=r.status==="warm";return i&&r.busy&&r.awaitingInput?4:i&&r.busy?3:i&&r.awaitingInput?2:i?1:0},s=n(t)-n(e);return s!==0?s:String(t.updatedAt||"").slice(0,16).localeCompare(String(e.updatedAt||"").slice(0,16))}function ut(e){return e.replace(/^\/(home|Users)\/[^/]+/,"~")}function zt(e,t){return l("div",{class:"detail"},l("span",{class:"k"},e),l("code",null,t))}function Ro(e){let t=(n,s)=>l("button",{class:"ghost",...I(()=>As(n))},s);return e?l("div",{class:"detail"},l("span",{class:"k"},"workspace"),l("code",null,`${e.label}${e.clean===!1?" \xB7 dirty":""}`),t("sync","Sync"),t("stop","Stop"),t("apply","Apply")):l("div",{class:"detail"},l("span",{class:"k"},"workspace"),t("start","Start workspace"))}function Co(){return l("div",{class:"detail"},l("span",{class:"k"},"thoughts"),l("label",{class:"checkbox-label"},l("input",{type:"checkbox",checked:o.hideThoughts?"":void 0,onchange:e=>{C({hideThoughts:e.target.checked})}}),"hide"))}function Mo(){return l("div",{class:"detail"},l("span",{class:"k"},"notify"),l("label",{class:"checkbox-label"},l("input",{type:"checkbox",checked:o.notifyOnTurnEnd?"":void 0,onchange:e=>{if(!e.target.checked){C({notifyOnTurnEnd:!1});return}$s().then(n=>{if(!n){C({banner:{kind:"warn",text:"Notifications blocked \u2014 enable them for this site in your browser settings."}});return}C({notifyOnTurnEnd:!0})})}}),"on turn end"))}function Oo(e){let t=l("select",{onchange:n=>{Ds(e.id,n.target.value)}},...e.options.map(n=>{let s=l("option",{value:n.value},n.name||n.value);return n.value===e.currentValue&&s.setAttribute("selected",""),s}));return t.value=e.currentValue,l("div",{class:"detail"},l("span",{class:"k",title:e.description??""},e.name||e.id),t)}function Lo(e,t){if(t==="recent")return[{label:null,sessions:e.slice().sort(Zs)}];let n=new Map;for(let r of e){let i=r.cwd||"(unknown)";n.has(i)||n.set(i,[]),n.get(i).push(r)}let s=[];for(let[r,i]of[...n.entries()].sort((a,c)=>a[0].localeCompare(c[0])))i.sort(Zs),s.push({label:ut(r),sessions:i});return s}function Do(e,t){let n=e.title||js(e.sessionId),s=[ge(e.sessionId),Ao(e.agentId,e.currentModel),`age ${No(e.updatedAt)}`].join(" \xB7 "),r=!e.busy&&(e.armedTasks??0)>0;return l("div",{class:"card",...I(i=>{i.target.closest("button")||lt(e.sessionId,e.status==="cold")})},l("div",{class:"row1"},n),l("div",{class:"card-body"},l("div",{class:"meta"},l("div",{class:"row2"},s)),l("div",{class:"badges"},e.status==="cold"||!(e.busy||e.awaitingInput||r)?l("span",{class:`badge ${e.status==="cold"?"cold":"warm"}`,title:e.status==="cold"?"Disk-only \u2014 opening will resurrect the session":"Live in-memory session"},e.status==="cold"?"cold":"warm"):null,e.busy||r?l("span",{class:"badge busy",title:e.busy?"Agent is working":"Agent has a background task running. It may resume on its own."},"busy"):null,e.awaitingInput?l("span",{class:"badge blocked",title:"Waiting on you \u2014 a permission request or other prompt is pending"},"blocked"):null,l("span",{class:"badge"},`${e.attachedClients??0} attached`),...e.importedFromMachine&&!e.upstreamSessionId?[l("span",{class:"badge imported",title:`Passive mirror imported from ${e.importedFromMachine} \u2014 attach to start working on it here.`},`\u2190 ${e.importedFromMachine}`)]:[]),l("div",{class:"actions"},l("button",{class:"ghost",title:"Export session as *.hydra bundle",...I(()=>nr(e.sessionId))},"\u2193"),l("button",{class:"danger",...I(()=>{Po(e)})},"\xD7"))),t?l("div",{class:"row3"},e.cwd?ut(e.cwd):"?"):null)}async function Po(e){if(confirm(`Kill session ${e.title?`"${e.title}" (${ge(e.sessionId)})`:ge(e.sessionId)}?`))try{await de("/api/kill",{method:"POST",body:JSON.stringify({sessionId:e.sessionId})}),Ee()}catch(t){C({banner:{kind:"bad",text:"kill failed: "+t.message}})}}function Bo(e){e.compactionPhase||confirm("Compact this session's context now? The agent will summarize history and continue from the summary.")&&Ns()}function nr(e){let t=document.createElement("a");t.href=`/api/sessions/${encodeURIComponent(e)}/export`,t.download="",t.rel="noopener",document.body.appendChild(t),t.click(),t.remove()}function Fo(){let e=document.createElement("input");e.type="file",e.accept=".hydra,application/json",e.style.display="none",e.onchange=()=>{let t=e.files&&e.files[0];document.body.removeChild(e),t&&$o(t)},document.body.appendChild(e),e.click()}async function $o(e){let t;try{let s=await e.text();t=JSON.parse(s)}catch(s){C({banner:{kind:"bad",text:"import: bundle is not valid JSON: "+s.message}});return}let n=await ir(t);if(n.ok){let s=n.result;C({banner:{kind:"good",text:s.replaced?`Replaced ${ge(s.sessionId)} from bundle`:`Imported as ${ge(s.sessionId)}`}}),Ee();return}if(n.status===409&&n.existingSessionId){let s=n.existingSessionId;if(!confirm(`This session is already imported locally as ${ge(s)}.
278
322
 
279
- Replace it? (Any live attach will be closed.)`)){B({banner:{kind:"warn",text:"Import cancelled."}});return}try{let i=await Ws(n,{replace:!0});B({banner:{kind:"good",text:`Replaced ${ge(i.sessionId)} from bundle`}}),Ee()}catch(i){B({banner:{kind:"bad",text:"import failed: "+i.message}})}return}B({banner:{kind:"bad",text:"import failed: "+t.message}})}var Gs="hydra-acp-browser:lastCwd";function yo(){try{return localStorage.getItem(Gs)}catch{return null}}function wo(e){try{localStorage.setItem(Gs,e)}catch{}}function So(){B({modal:{kind:"session",cwd:yo()??o.defaultCwd??"",agentId:"",name:"",prompt:"",err:null,busy:!1}})}function vo(e){return l("div",{class:"modal-bg",...N(n=>{n.target.classList.contains("modal-bg")&&Be()})},l("div",{class:"modal"},l("h2",null,"New session"),l("div",{class:"field"},l("label",{for:"f-cwd"},"cwd"),l("input",{id:"f-cwd","data-focus-key":"session-modal-cwd",value:e.cwd,placeholder:"/home/you/dev/project",oninput:n=>{e.cwd=n.target.value}})),l("div",{class:"field"},l("label",{for:"f-agent"},"agent"),To(e)),l("div",{class:"field"},l("label",{for:"f-name"},"name (optional)"),l("input",{id:"f-name","data-focus-key":"session-modal-name",value:e.name,placeholder:"feature-x",oninput:n=>{e.name=n.target.value}})),l("div",{class:"field"},l("label",{for:"f-prompt"},"first prompt (optional)"),l("textarea",{id:"f-prompt","data-focus-key":"session-modal-prompt",rows:"4",placeholder:"What should the agent do first?",autocapitalize:"off",oninput:n=>{e.prompt=n.target.value}},e.prompt)),e.err?l("div",{class:"err"},e.err):null,l("div",{class:"actions"},l("button",{...N(Be),disabled:e.busy},"Cancel"),l("button",{class:"primary",...N(Ao),disabled:e.busy},e.busy?"Creating\u2026":"Create"))))}function To(e){let n=l("select",{id:"f-agent","data-focus-key":"session-modal-agent",onchange:s=>{e.agentId=s.target.value}}),t=l("option",{value:""},"<default>");e.agentId===""&&t.setAttribute("selected",""),n.appendChild(t);for(let s of o.agents){let r=l("option",{value:s.id},s.id);s.id===e.agentId&&r.setAttribute("selected",""),n.appendChild(r)}return n}async function Ao(){let e=o.modal;if(!(!e||e.kind!=="session")){if(!e.cwd){e.err="cwd is required",T();return}e.busy=!0,e.err=null,T();try{let n={cwd:e.cwd};e.agentId&&(n.agentId=e.agentId),e.name&&(n.name=e.name),e.prompt&&(n.prompt=e.prompt);let t=await ue("/api/sessions",{method:"POST",body:JSON.stringify(n)});wo(e.cwd),Be(),Ee(),t&&t.sessionId&&ln(t.sessionId,!1)}catch(n){e.err=n.message,e.busy=!1,T()}}}function Be(){B({modal:null})}function No(){!o.current?.models||o.current.models.length===0||B({modal:{kind:"models"}})}function $s(e,n,t,s){return l("div",{class:"modal-bg",...N(r=>{r.target.classList.contains("modal-bg")&&Be()})},l("div",{class:"modal"},l("h2",null,e),...n.map(r=>l("div",{class:"card",...N(()=>{s(r),Be()})},l("div",{class:"meta"},l("div",{class:"row1"},r.name||r.id),l("div",{class:"row2"},r.id)),r.id===t?l("span",{class:"badge warm"},"current"):null))))}var Hn=5;function Io(e){let n=e.armedTaskList;if(!n||n.length===0)return document.createTextNode("");let t=n.slice(0,Hn),s=Date.now();return l("div",{class:"armed-tasks"},...t.map(r=>l("div",{class:"armed-task"},l("span",{class:"dot"},"\u25D0"),l("span",{class:"label"},r.label.length>0?r.label:r.taskType??"background task"),l("span",{class:"elapsed"},zs(s-r.since)))),n.length>Hn?l("div",{class:"armed-tasks-more"},`+${n.length-Hn} more`):null)}function ko(e){let n=o.sessions.find(g=>g.sessionId===e.sessionId),t=n?.title||e.title||Hs(e.sessionId),s=n?.cwd||e.cwd,r=()=>{e.headerExpanded=!e.headerExpanded,T()},i=l("div",{class:"chat-header"},l("div",{class:"chat-title clickable",title:"Click for session details",...N(r)},t),l("div",{class:"chat-header-row"},e.ready?e.inTurn?l("span",{class:"pill working clickable",title:"Agent is working",...N(r)},l("span",{class:"dot"},"\u25CF"),"busy"):l("span",{class:"pill ready clickable",title:"Ready for a prompt",...N(r)},l("span",{class:"dot"},"\u25CF"),"ready"):l("span",{class:"pill clickable",title:"Click for session details",...N(r)},"connecting\u2026"),e.armedTasks&&e.armedTasks>0?l("span",{class:"pill armed clickable",title:e.armedSince?`Agent has a background task running (armed ${Math.max(1,Math.floor((Date.now()-e.armedSince)/6e4))}m ago). It may resume on its own.`:"Agent has a background task running. It may resume on its own.",...N(r)},"armed"):null,n?.workspace?l("span",{class:"pill clickable",title:`In workspace "${n.workspace.label}" (source: ${dn(n.workspace.sourceCwd)})`,...N(r)},"\u2387 "+n.workspace.label):null,e.model?l("span",{class:"pill clickable",title:"Model (click to change)",...N(No)},e.model):null,e.contextUsed!=null&&e.contextSize?l("span",{class:"pill",title:`${e.contextUsed.toLocaleString()} / ${e.contextSize.toLocaleString()} context tokens`},`${Ps(e.contextUsed)}/${Ps(e.contextSize)}`):null,Bs(e.cost)?l("span",{class:"pill",title:"Session cost so far"},Bs(e.cost)):null,l("button",{...N(Ho),title:"Files"},"\u{1F4C1}"),l("button",{title:"Export this session as a *.hydra bundle",...N(()=>qs(e.sessionId))},"\u2B07"),l("div",{class:"info clickable",title:"Click for session details",...N(r)}))),a=e.headerExpanded?l("div",{class:"chat-details"},Un("title",t),Un("session",ge(e.sessionId)),Un("cwd",s||"?"),po(n?.workspace),...e.configOptions.map(go),fo()):null,c=l("div",{class:"chat-body"});for(let g of e.log)o.hideThoughts&&g.kind==="stream"&&g.role==="thought"||c.appendChild(xo(g));let d=g=>{g.style.height="auto",g.style.height=g.scrollHeight+"px"},u=(g,h)=>{g.value=h,e.composerValue=h,d(g),g.setSelectionRange(h.length,h.length)},p=g=>{if(g.isComposing)return;let h=g.target;if(g.key==="ArrowUp"&&!g.shiftKey&&!g.altKey&&!g.ctrlKey&&!g.metaKey&&h.selectionStart===0&&h.selectionEnd===0&&e.history.length>0){let S=e.historyIndex===null?0:Math.min(e.history.length-1,e.historyIndex+1);e.historyIndex===null&&(e.historyDraft=e.composerValue),e.historyIndex=S,g.preventDefault(),u(h,e.history[S]);return}if(g.key==="ArrowDown"&&!g.shiftKey&&!g.altKey&&!g.ctrlKey&&!g.metaKey&&h.selectionStart===h.value.length&&h.selectionEnd===h.value.length&&e.historyIndex!==null){if(g.preventDefault(),e.historyIndex>0)e.historyIndex-=1,u(h,e.history[e.historyIndex]);else{let S=e.historyDraft??"";e.historyIndex=null,e.historyDraft=null,u(h,S)}return}if(g.key==="Enter"&&!g.shiftKey){if(g.altKey||g.ctrlKey||g.metaKey){g.preventDefault(),Zo(h,`
280
- `);return}g.preventDefault(),Pe()}},m=l("textarea",{"data-focus-key":"composer",placeholder:e.ready?"Message\u2026":"Connecting\u2026",rows:"1",autocapitalize:"off",onkeydown:p,oninput:g=>{let h=g.target;e.composerValue=h.value,e.historyIndex!==null&&(e.historyIndex=null,e.historyDraft=null),d(h)}},e.composerValue);e.composerValue&&e.composerValue.length>0&&queueMicrotask(()=>d(m));let b=[];e.inTurn?(e.daemonSupportsAmend&&e.currentHeadMessageId!==void 0&&b.push(l("button",{...N(Ts),title:"Cancel the current turn and replace its prompt"},"Amend")),b.push(l("button",{class:"primary",...N(Pe),title:"Queue this prompt to run after the current turn"},"Enqueue"))):b.push(l("button",{class:"primary",...N(Pe)},"Send"));let _=l("div",{class:"composer"},m,l("div",{class:"composer-buttons"},l("button",{class:"stop",...N(Is),title:"Cancel current turn"},"Stop"),...b));return l("div",{class:"chat"},i,a,Io(e),c,_)}function xo(e){if(e.kind==="stream"){let n=e.role==="thought",t=e.role==="user"?"msg user":n?"msg system":"msg agent",s=n&&un.has(e),r=l("div",{class:s?t+" collapsed":t});n&&r.addEventListener("click",()=>{if(!!un.has(e)){un.delete(e),T();return}let c=document.querySelector(".chat-body"),d=c?.getBoundingClientRect(),u=r.getBoundingClientRect(),p=u.top-(d?.top??0)+(c?.scrollTop??0),b=!d||u.top>=d.top&&u.top<d.bottom?c?.scrollTop??0:p;un.add(e),T(),requestAnimationFrame(()=>{let _=document.querySelector(".chat-body");_&&(_.scrollTop=b)})});let i=e.queueEntry;if(i&&i.amendedByMessageId!==void 0&&i.status==="amended"&&r.classList.add("amended-target"),i&&(i.status==="queued"||i.status==="pending"||i.status==="cancelled"||i.status==="editing"||i.status==="amended")&&r.appendChild(Do(i)),i&&i.amendsMessageId!==void 0&&r.appendChild(l("span",{class:"amend-badge",title:"Merged amend \u2014 replaces the previous, cancelled prompt"},"+")),i&&i.status==="editing")r.appendChild(Po(i,a=>{e.text=a}));else{let a=l("div",{class:e.synthetic?"body raw":"body"});e.synthetic?a.textContent=e.text:a.innerHTML=yn(e.text),i&&i.status==="cancelled"&&(a.style.textDecoration="line-through",a.style.opacity="0.6"),r.appendChild(a)}return r}if(e.kind==="system")return l("div",{class:"msg system"},e.text);if(e.kind==="error")return l("div",{class:"msg error"},e.text);if(e.kind==="spinner")return Bo(e.spinner);if(e.kind==="perm"){if(!o.current)return document.createTextNode("");let n=o.current.pendingPermissions.get(e.toolCallId);return n?$o(n):document.createTextNode("")}return e.kind==="plan"?Uo(e.entries):e.kind==="exit-plan-mode"?Co(e):e.kind==="edit-diff"?Oo(e):document.createTextNode("")}function Ro(e){return e==="+"?"diff-line hljs-addition":e==="-"?"diff-line hljs-deletion":e==="gap"?"diff-line diff-gap":"diff-line"}function Mo(e){return e==="+"?"+ ":e==="-"?"- ":e==="gap"?"":" "}function Oo(e){let n=cs(e.diff),t=e.diff.path?dn(e.diff.path):"file",s=[];n.added>0&&s.push(l("span",{class:"add"},`+${n.added}`)),n.removed>0&&s.push(l("span",{class:"del"},`-${n.removed}`));let r=l("div",{class:"head",...N(()=>{e.expanded=!e.expanded,T()})},l("span",null,e.expanded?"\u25BE":"\u25B8"),l("span",{class:"title"},`Edited ${t}`),s.length>0?l("span",{class:"kind edit-summary"},s):null),i=l("div",{class:e.expanded?"toolcard open":"toolcard"},r);if(e.expanded){let a=ls(e.diff);i.appendChild(l("div",{class:"body"},l("pre",null,l("code",{class:"diff-body"},a.map(c=>l("div",{class:Ro(c.op)},Mo(c.op)+c.text))))))}return i}function Co(e){let n=l("div",{class:"msg agent plan-markdown"});n.appendChild(l("div",{class:"plan-header"},"\u{1F4CB} Plan"));let t=l("div",{class:"body"});t.innerHTML=yn(e.plan),n.appendChild(t);let s=Lo(e.status);return s!==null&&n.appendChild(s),n}function Lo(e){if(e===void 0)return null;switch(e){case"completed":case"succeeded":case"ok":return l("div",{class:"plan-status plan-status-ok"},"\u2713 Approved");case"failed":case"error":case"rejected":return l("div",{class:"plan-status plan-status-fail"},"\u2717 Rejected");case"cancelled":return l("div",{class:"plan-status plan-status-cancelled"},"\u229D Cancelled");case"pending":case"in_progress":case"running":case"updated":return l("div",{class:"plan-status plan-status-pending"},"awaiting approval\u2026");default:return null}}function Do(e){if(e.status==="queued"||e.status==="pending"){let n=Math.max(1,e.aheadAtEnqueue);return l("div",{class:"queue-chip queue-queued"},l("span",null,(n===1?"queued \xB7 waiting on 1 turn":`queued \xB7 waiting on ${n} turns`)+(e.held?" \xB7 held: agent resumed":"")),l("button",{class:"queue-edit",...N(()=>{e.status="editing",T()}),title:"Edit before sending"},"\u270E"),l("button",{class:"queue-cancel",...N(()=>Dn(e)),title:"Cancel before sending"},"\xD7"))}return e.status==="editing"?l("div",{class:"queue-chip queue-editing"},l("span",null,"editing \xB7 enter to save \xB7 esc to cancel edit")):e.status==="processing"?l("div",{class:"queue-chip queue-processing"},l("span",{class:"dot"}),l("span",null,"processing")):e.status==="cancelled"?l("div",{class:"queue-chip queue-cancelled"},l("span",null,"cancelled")):e.status==="amended"?l("div",{class:"queue-chip queue-amended"},l("span",null,"amended \u2014 merged into the next prompt")):document.createTextNode("")}function Po(e,n){let t=l("textarea",{class:"queue-edit-area",rows:"3",autocapitalize:"off"});return t.value=e.text,t.addEventListener("keydown",s=>{if(s.key==="Enter"&&!s.shiftKey){s.preventDefault();let r=t.value;e.text=r,n(r),e.status="queued",vs(e,r),T()}else s.key==="Escape"&&(s.preventDefault(),e.status="queued",T())}),queueMicrotask(()=>{t.focus(),t.setSelectionRange(t.value.length,t.value.length)}),l("div",{class:"queue-editor"},t)}function Bo(e){let n=l("button",{class:"queue-cancel",...N(()=>Ns()),title:"Cancel this turn"},"\xD7");if(!e.expanded)return l("div",{class:"spinner",...N(()=>{e.expanded=!0,T()})},l("div",{class:"head"},l("span",{class:"dot"}),l("span",null,e.toolCallIds.length===0?"thinking\u2026":`working \u2014 ${e.toolCallIds.length} tool call${e.toolCallIds.length===1?"":"s"}`),n));let t=e.toolCallIds.map(s=>{let r=o.current?.toolCalls.get(s);if(!r)return null;let i=r.status==="completed"||r.status==="success"?"\u2705":r.status==="failed"||r.status==="error"?"\u274C":"\u25B6";return l("li",null,l("span",{class:"icon"},i),document.createTextNode(" "+r.title))});return l("div",{class:"spinner expanded",...N(()=>{e.expanded=!1,T()})},l("div",{class:"head"},l("span",{class:"dot"}),l("span",null,"working"),n),l("ul",null,t))}function Fo(e){let n=p=>typeof p=="string"&&p.length>0?p:void 0,t=[],s=(p,m)=>l("div",{class:"detail"},l("span",{class:"k"},p),l("code",null,m)),r=n(e.kind);r&&t.push(s("kind",r));let i=new Set,a=[],c=p=>{let m=n(p);m&&!i.has(m)&&(i.add(m),a.push(m))},d=e.locations;if(Array.isArray(d))for(let p of d)p&&typeof p=="object"&&c(p.path);let u=e.rawInput&&typeof e.rawInput=="object"?e.rawInput:void 0;u&&(c(u.file_path),c(u.filePath),c(u.path));for(let p of a)t.push(s("path",p));if(u){let p=n(u.command);p&&t.push(s("command",p));let m=n(u.url);m&&t.push(s("url",m));let b=n(u.description);b&&t.push(l("div",{class:"detail note"},b))}return t}function $o(e){let n=e.toolCall||{};return l("div",{class:"perm"},l("div",{class:"title"},"\u{1F512} Permission requested"),l("div",{class:"desc"},n.title||n.name||"tool call"),Fo(n),l("div",{class:"opts"},...e.options.map(t=>l("button",{class:t.kind?.startsWith("allow")?"primary":t.kind?.startsWith("reject")?"danger":"",...N(()=>Bn(e.toolCallId,t.optionId))},t.name||t.optionId)),l("button",{...N(()=>Bn(e.toolCallId,"__cancel__"))},"Cancel")))}function Uo(e){return Array.isArray(e)?l("div",{class:"msg agent"},l("div",{class:"body"},l("strong",null,"Plan")),l("ul",null,...e.map(n=>l("li",null,`${n.status==="completed"?"\u2713":n.status==="in_progress"?"\u25B8":"\xB7"} ${n.content||n.title||""}`)))):document.createTextNode("")}function Ho(){o.current&&(o.current.fileOverlay={path:"",entries:[],preview:null,err:null},T(),Fe(""))}async function Fe(e){if(o.current)try{let n=await ue("/api/files/list",{method:"POST",body:JSON.stringify({sessionId:o.current.sessionId,path:e})});o.current.fileOverlay={path:n.path,entries:n.entries??[],preview:null,err:null},T()}catch(n){o.current.fileOverlay={path:e,entries:[],preview:null,err:n.message},T()}}async function zo(e){if(o.current)try{let n=await ue("/api/files/read",{method:"POST",body:JSON.stringify({sessionId:o.current.sessionId,path:e})}),t=o.current.fileOverlay;o.current.fileOverlay={path:t.path,entries:t.entries,preview:{path:e,content:n.content},err:null},T()}catch(n){o.current.fileOverlay&&(o.current.fileOverlay={...o.current.fileOverlay,err:n.message}),T()}}function Us(){o.current&&(o.current.fileOverlay=null,T())}function Ko(e){if(!o.current?.fileOverlay)return;let n=o.current.fileOverlay,t=n.path?`${n.path}/${e.name}`:e.name;e.kind==="dir"?Fe(t):e.kind==="file"&&zo(t)}function qo(e){let n=e?e.split("/").filter(Boolean):[],t=[l("span",{class:"crumb",...N(()=>Fe(""))},".")],s="";for(let r of n){s=s?`${s}/${r}`:r;let i=s;t.push(document.createTextNode(" / ")),t.push(l("span",{class:"crumb",...N(()=>Fe(i))},r))}return l("div",{class:"crumbs"},t)}function Go(e,n){if(!o.current)return;let t=`${e}:${n}`,s=o.current.composerValue;o.current.composerValue=s?`${s} ${t}`:t,T()}function Wo(){o.current?.fileOverlay&&(o.current.fileOverlay.preview=null,T())}function Yo(e){let n=e.fileOverlay;if(!n)return document.createTextNode("");let t;if(n.preview){let{path:s,content:r}=n.preview,i=rs(r,s)??ne(r),a=r.split(`
281
- `).length,c=l("div",{class:"code-gutter"});for(let d=1;d<=a;d++){let u=d;c.appendChild(l("div",{class:"ln",...N(()=>Go(s,u))},String(u)))}t=l("div",{class:"preview"},l("div",{class:"crumbs"},l("span",{class:"crumb",...N(()=>Wo())},"\u2190 back to listing"),document.createTextNode(` ${s}`)),l("div",{class:"code-view"},c,l("pre",{},l("code",{class:"hljs",html:i}))))}else t=l("div",{class:"body"},n.err?l("div",{class:"msg error"},n.err):null,n.path?l("div",{class:"entry",...N(()=>Fe(n.path.split("/").slice(0,-1).join("/")))},l("span",{class:"icon"},"\u25B8"),l("span",{class:"name"},".."),l("span",{class:"size"},"")):null,...n.entries.map(s=>l("div",{class:"entry",...N(()=>Ko(s))},l("span",{class:"icon"},s.kind==="dir"?"\u25B8":"\xB7"),l("span",{class:"name"},s.name),l("span",{class:"size"},s.kind==="file"?`${s.size}b`:""))));return l("div",{class:"modal-bg",...N(s=>{s.target.classList.contains("modal-bg")&&Us()})},l("div",{class:"modal file-modal"},l("div",{class:"topbar",style:"border-bottom:1px solid var(--border)"},l("span",{class:"title"},"Files"),l("span",{class:"pill"},e.cwd),l("span",{class:"spacer"}),l("button",{...N(Us)},"\xD7")),qo(n.path),l("div",{class:"files"},t)))}function Zo(e,n){e.focus();let t=!1;if(typeof document.execCommand=="function")try{t=document.execCommand("insertText",!1,n)}catch{t=!1}if(!t){let s=e.selectionStart??e.value.length,r=e.selectionEnd??e.value.length,i=e.value.slice(0,s),a=e.value.slice(r);e.value=i+n+a;let c=s+n.length;e.setSelectionRange(c,c),e.dispatchEvent(new Event("input",{bubbles:!0}))}}var zn=!1,Ue=!1;document.addEventListener("pointerdown",e=>{e.target?.closest("button")&&(Ue=!0)},!0);document.addEventListener("pointerup",()=>{Ue&&(Ue=!1,T())},!0);document.addEventListener("pointercancel",()=>{Ue=!1},!0);var Zs=(()=>{try{return new URLSearchParams(window.location.search).get("debug")==="1"}catch{return!1}})(),Qs=0,$e=[];function T(){if(Zs){let t=(new Error().stack??"").split(`
282
- `).slice(1,5).map(s=>s.trim()).join(" \u2190 ");$e.push(`${new Date().toISOString().slice(11,23)} ${t}`),$e.length>20&&($e=$e.slice(-20))}zn||(zn=!0,requestAnimationFrame(()=>{if(zn=!1,Ue){T();return}Xo(),Zs&&(Qs+=1,Qo())}))}function Qo(){let e=document.getElementById("__render_debug__");e||(e=document.createElement("div"),e.id="__render_debug__",e.style.cssText="position:fixed;top:0.5rem;right:0.5rem;z-index:9999;background:rgba(0,0,0,0.85);color:#9fd;padding:0.4rem 0.6rem;font:11px/1.3 ui-monospace,monospace;border:1px solid #6ea8fe;border-radius:6px;max-width:30rem;max-height:14rem;overflow:auto;pointer-events:none;white-space:pre-wrap",document.body.appendChild(e));let n=$e.slice(-5).join(`
283
- `);e.textContent=`renders: ${Qs}
284
- ${n}`}function Xo(){let e=document.getElementById("app");if(!e)return;let n=document.activeElement,t=null,s=null,r=null;if(n&&n!==document.body&&n.dataset&&n.dataset.focusKey&&(t=n.dataset.focusKey,"selectionStart"in n))try{s=n.selectionStart,r=n.selectionEnd}catch{}let i=e.querySelector(".chat-body"),a=null,c=!0;i&&(a=i.scrollTop,c=i.scrollHeight-i.scrollTop-i.clientHeight<50);let d=e.querySelector(".list"),u=d?d.scrollTop:null,p=e.querySelector(".files .body"),m=p?p.scrollTop:null,b=e.querySelector(".files .preview"),_=b?b.scrollTop:null;e.replaceChildren(),Ks(e,o);let g=e.querySelector(".chat-body");g&&(a===null||c?g.scrollTop=g.scrollHeight:g.scrollTop=a);let h=e.querySelector(".list");h&&u!==null&&(h.scrollTop=u);let S=e.querySelector(".files .body");S&&m!==null&&(S.scrollTop=m);let I=e.querySelector(".files .preview");if(I&&_!==null&&(I.scrollTop=_),t){let x=e.querySelector(`[data-focus-key="${CSS.escape(t)}"]`);if(x){x.focus();let F=x;if(s!==null&&typeof F.setSelectionRange=="function")try{F.setSelectionRange(s,r)}catch{}}}}var Xs="hydra-acp-browser:filters",Vs=["groupBy","showCold","hostFilter","hideThoughts"];function Vo(){try{let e=localStorage.getItem(Xs);return e?JSON.parse(e):{}}catch{return{}}}function Jo(){try{let e={};for(let n of Vs)e[n]=o[n];localStorage.setItem(Xs,JSON.stringify(e))}catch{}}var o={view:"list",sessions:[],agents:[],defaultCwd:null,groupBy:"project",showCold:!1,hostFilter:"__local",hideThoughts:!1,banner:null,modal:null,current:null,...Vo()};function B(e){let n=!1,t=!1;for(let s of Object.keys(e)){let r=e[s];Kn(o[s],r)||(o[s]=r,n=!0,Vs.includes(s)&&(t=!0))}t&&Jo(),n&&T()}function Kn(e,n){return e===n?!0:e===null||n===null||typeof e!=typeof n||typeof e!="object"?!1:JSON.stringify(e)===JSON.stringify(n)}function jo(){let e=window.getSelection();return!e||e.isCollapsed?!1:e.toString().length>0}async function ue(e,n){let t=await fetch(e,{credentials:"same-origin",headers:{"Content-Type":"application/json"},...n});if(!t.ok){let s=`${t.status} ${t.statusText}`;try{let r=await t.json();r&&r.error&&(s=r.error)}catch{}throw new Error(s)}return t.status===204?null:await t.json()}var qn=null;async function Ee(){try{let t=(await ue("/api/sessions")).sessions??[],s=o.banner!==null,r=!Kn(o.sessions,t);if(o.sessions=t,o.banner=null,!r&&!s||!s&&jo()||!s&&o.modal)return;if(o.view==="list"||s)T();else if(o.view==="chat"&&o.current){let i=o.sessions.find(c=>c.sessionId===o.current.sessionId),a=i?`${i.title}|${i.cwd}|${i.agentId}|${i.currentModel}|${i.workspace?.label}|${i.workspace?.vcs?.branch}|${i.workspace?.clean}`:"";a!==o.current._lastMetaFp&&(o.current._lastMetaFp=a,T())}}catch(e){B({banner:{kind:"bad",text:"session list failed: "+e.message}})}}function Js(){qn&&clearInterval(qn),Ee(),qn=setInterval(()=>{Ee()},2e3)}async function js(){try{let e=await ue("/api/agents");B({agents:e.agents??[]})}catch(e){B({banner:{kind:"warn",text:"agents unavailable: "+e.message}})}}async function er(){try{let e=await ue("/api/config");B({defaultCwd:e.defaultCwd??null})}catch{}}async function Ws(e,n={}){return ue("/api/sessions/import",{method:"POST",body:JSON.stringify({bundle:e,replace:n.replace===!0})})}async function Ys(e){let n=await fetch("/api/sessions/import",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({bundle:e})});if(n.ok)return{ok:!0,result:await n.json()};let t,s=`${n.status} ${n.statusText}`;try{let r=await n.json();r.existingSessionId&&(t=r.existingSessionId),r.error&&(s=r.error)}catch{}return{ok:!1,status:n.status,message:s,existingSessionId:t}}var nr=70,ea=110,pn=null,He=!1,xe=!1,ke=null;function Gn(){return ke||(ke=document.createElement("div"),ke.className="pull-refresh",document.body.appendChild(ke),ke)}function na(e){let n=Gn(),t=Math.max(0,Math.min(e,ea));xe=t>=nr,n.style.opacity=t>0?String(Math.min(t/nr,1)):"0",n.style.transform=`translate(-50%, ${t>0?t-32:-48}px)`,n.textContent=xe?"\u2191 Release to refresh":"\u2193 Pull to refresh"}function sr(){let e=Gn();e.style.opacity="0",e.style.transform="translate(-50%, -48px)"}function rr(){return document.querySelector(".list")}function ta(e){if(He=!1,xe=!1,o.view!=="list")return;let n=rr(),t=e.touches[0];!n||!t||n.scrollTop>0||!n.contains(t.target)||(pn=t.clientY,He=!0)}function sa(e){if(!He||pn===null)return;let n=rr(),t=e.touches[0];if(!n||!t)return;let s=t.clientY-pn;if(s<=0||n.scrollTop>0){sr(),xe=!1;return}e.preventDefault(),na(s)}function tr(){if(He&&xe){let e=Gn();e.textContent="Refreshing\u2026",location.reload()}else sr();He=!1,xe=!1,pn=null}function ir(){document.addEventListener("touchstart",ta,{passive:!0}),document.addEventListener("touchmove",sa,{passive:!1}),document.addEventListener("touchend",tr,{passive:!0}),document.addEventListener("touchcancel",tr,{passive:!0})}window.addEventListener("DOMContentLoaded",()=>{Js(),js(),er(),$n(),T(),ir()});window.addEventListener("hashchange",()=>{$n()});})();
323
+ Replace it? (Any live attach will be closed.)`)){C({banner:{kind:"warn",text:"Import cancelled."}});return}try{let i=await rr(t,{replace:!0});C({banner:{kind:"good",text:`Replaced ${ge(i.sessionId)} from bundle`}}),Ee()}catch(i){C({banner:{kind:"bad",text:"import failed: "+i.message}})}return}C({banner:{kind:"bad",text:"import failed: "+n.message}})}var sr="hydra-acp-browser:lastCwd";function Uo(){try{return localStorage.getItem(sr)}catch{return null}}function Ho(e){try{localStorage.setItem(sr,e)}catch{}}function zo(){C({modal:{kind:"session",cwd:Uo()??o.defaultCwd??"",agentId:"",name:"",prompt:"",err:null,busy:!1}})}function Ko(e){return l("div",{class:"modal-bg",...I(t=>{t.target.classList.contains("modal-bg")&&Be()})},l("div",{class:"modal"},l("h2",null,"New session"),l("div",{class:"field"},l("label",{for:"f-cwd"},"cwd"),l("input",{id:"f-cwd","data-focus-key":"session-modal-cwd",value:e.cwd,placeholder:"/home/you/dev/project",oninput:t=>{e.cwd=t.target.value}})),l("div",{class:"field"},l("label",{for:"f-agent"},"agent"),qo(e)),l("div",{class:"field"},l("label",{for:"f-name"},"name (optional)"),l("input",{id:"f-name","data-focus-key":"session-modal-name",value:e.name,placeholder:"feature-x",oninput:t=>{e.name=t.target.value}})),l("div",{class:"field"},l("label",{for:"f-prompt"},"first prompt (optional)"),l("textarea",{id:"f-prompt","data-focus-key":"session-modal-prompt",rows:"4",placeholder:"What should the agent do first?",autocapitalize:"off",oninput:t=>{e.prompt=t.target.value}},e.prompt)),e.err?l("div",{class:"err"},e.err):null,l("div",{class:"actions"},l("button",{...I(Be),disabled:e.busy},"Cancel"),l("button",{class:"primary",...I(Go),disabled:e.busy},e.busy?"Creating\u2026":"Create"))))}function qo(e){let t=l("select",{id:"f-agent","data-focus-key":"session-modal-agent",onchange:s=>{e.agentId=s.target.value}}),n=l("option",{value:""},"<default>");e.agentId===""&&n.setAttribute("selected",""),t.appendChild(n);for(let s of o.agents){let r=l("option",{value:s.id},s.id);s.id===e.agentId&&r.setAttribute("selected",""),t.appendChild(r)}return t}async function Go(){let e=o.modal;if(!(!e||e.kind!=="session")){if(!e.cwd){e.err="cwd is required",S();return}e.busy=!0,e.err=null,S();try{let t={cwd:e.cwd};e.agentId&&(t.agentId=e.agentId),e.name&&(t.name=e.name),e.prompt&&(t.prompt=e.prompt);let n=await de("/api/sessions",{method:"POST",body:JSON.stringify(t)});Ho(e.cwd),Be(),Ee(),n&&n.sessionId&&lt(n.sessionId,!1)}catch(t){e.err=t.message,e.busy=!1,S()}}}function Be(){C({modal:null})}function Wo(){!o.current?.models||o.current.models.length===0||C({modal:{kind:"models"}})}function Xs(e,t,n,s){return l("div",{class:"modal-bg",...I(r=>{r.target.classList.contains("modal-bg")&&Be()})},l("div",{class:"modal"},l("h2",null,e),...t.map(r=>l("div",{class:"card",...I(()=>{s(r),Be()})},l("div",{class:"meta"},l("div",{class:"row1"},r.name||r.id),l("div",{class:"row2"},r.id)),r.id===n?l("span",{class:"badge warm"},"current"):null))))}var Kt=5;function Yo(e){let t=e.armedTaskList;if(!t||t.length===0)return document.createTextNode("");let n=t.slice(0,Kt),s=Date.now();return l("div",{class:"armed-tasks"},...n.map(r=>l("div",{class:"armed-task"},l("span",{class:"dot"},"\u25D0"),l("span",{class:"label"},r.label.length>0?r.label:r.taskType??"background task"),l("span",{class:"elapsed"},er(s-r.since)))),t.length>Kt?l("div",{class:"armed-tasks-more"},`+${t.length-Kt} more`):null)}function Qo(e){let t=o.sessions.find(f=>f.sessionId===e.sessionId),n=t?.title||e.title||js(e.sessionId),s=t?.cwd||e.cwd,r=()=>{e.headerExpanded=!e.headerExpanded,S()},i=l("div",{class:"chat-header"},l("div",{class:"chat-title clickable",title:"Click for session details",...I(r)},n),l("div",{class:"chat-header-row"},e.ready?e.inTurn?l("span",{class:"pill working clickable",title:"Agent is working",...I(r)},l("span",{class:"dot"},"\u25CF"),"thinking"):e.armedTasks&&e.armedTasks>0?l("span",{class:"pill waiting clickable",title:e.armedSince?`Agent has a background task running (armed ${Math.max(1,Math.floor((Date.now()-e.armedSince)/6e4))}m ago). It may resume on its own.`:"Agent has a background task running. It may resume on its own.",...I(r)},l("span",{class:"dot"},"\u25CF"),"waiting"):l("span",{class:"pill ready clickable",title:"Ready for a prompt",...I(r)},l("span",{class:"dot"},"\u25CF"),"ready"):l("span",{class:"pill clickable",title:"Click for session details",...I(r)},"connecting\u2026"),t?.workspace?l("span",{class:"pill clickable",title:`In workspace "${t.workspace.label}" (source: ${ut(t.workspace.sourceCwd)})`,...I(r)},"\u2387 "+t.workspace.label):null,e.model?l("span",{class:"pill clickable",title:"Model (click to change)",...I(Wo)},e.model):null,e.contextUsed!=null&&e.contextSize?l("span",{class:e.compactionPhase?"pill clickable compacting":"pill clickable",title:e.compactionPhase?e.compactionPhase==="deferred"?"Compaction queued \u2014 will run once the session is idle.":"Compacting\u2026":`${e.contextUsed.toLocaleString()} / ${e.contextSize.toLocaleString()} context tokens \u2014 click to compact`,...I(()=>Bo(e))},e.compactionPhase?e.compactionPhase==="deferred"?"\u23F3 queued":"\u25D0 compacting\u2026":`${Ys(e.contextUsed)}/${Ys(e.contextSize)}`):null,Qs(e.cost)?l("span",{class:"pill",title:"Session cost so far"},Qs(e.cost)):null,l("button",{...I(aa),title:"Files"},"\u{1F4C1}"),l("button",{title:"Export this session as a *.hydra bundle",...I(()=>nr(e.sessionId))},"\u2B07"),l("div",{class:"info clickable",title:"Click for session details",...I(r)}))),a=e.headerExpanded?l("div",{class:"chat-details"},zt("title",n),zt("session",ge(e.sessionId)),zt("cwd",s||"?"),Ro(t?.workspace),...e.configOptions.map(Oo),Co(),Mo()):null,c=l("div",{class:"chat-body"});for(let f of e.log)o.hideThoughts&&f.kind==="stream"&&f.role==="thought"||c.appendChild(Zo(f));let d=f=>{f.style.height="auto",f.style.height=f.scrollHeight+"px"},u=(f,E)=>{f.value=E,e.composerValue=E,d(f),f.setSelectionRange(E.length,E.length)},p=f=>{if(f.isComposing)return;let E=f.target;if(f.key==="ArrowUp"&&!f.shiftKey&&!f.altKey&&!f.ctrlKey&&!f.metaKey&&E.selectionStart===0&&E.selectionEnd===0&&e.history.length>0){let T=e.historyIndex===null?0:Math.min(e.history.length-1,e.historyIndex+1);e.historyIndex===null&&(e.historyDraft=e.composerValue),e.historyIndex=T,f.preventDefault(),u(E,e.history[T]);return}if(f.key==="ArrowDown"&&!f.shiftKey&&!f.altKey&&!f.ctrlKey&&!f.metaKey&&E.selectionStart===E.value.length&&E.selectionEnd===E.value.length&&e.historyIndex!==null){if(f.preventDefault(),e.historyIndex>0)e.historyIndex-=1,u(E,e.history[e.historyIndex]);else{let T=e.historyDraft??"";e.historyIndex=null,e.historyDraft=null,u(E,T)}return}if(f.key==="Enter"&&!f.shiftKey){if(f.altKey||f.ctrlKey||f.metaKey){f.preventDefault(),ga(E,`
324
+ `);return}f.preventDefault(),Pe()}},b=l("textarea",{"data-focus-key":"composer",placeholder:e.ready?"Message\u2026":"Connecting\u2026",rows:"1",autocapitalize:"off",onkeydown:p,onpaste:f=>{let E=f.clipboardData?.items;if(!E)return;let T=[];for(let k of E){if(k.kind!=="file"||!k.type.startsWith("image/"))continue;let O=k.getAsFile();O&&T.push(O)}T.length!==0&&(f.preventDefault(),vo(e,T))},oninput:f=>{let E=f.target;e.composerValue=E.value,e.historyIndex!==null&&(e.historyIndex=null,e.historyDraft=null),d(E);let T=E.value.trim().length>0||e.attachments.length>0,k=E.closest(".composer")?.querySelectorAll(".content-gated")??[];for(let O of k)O.disabled=!T}},e.composerValue);e.composerValue&&e.composerValue.length>0&&queueMicrotask(()=>d(b));let m=e.composerValue.trim().length>0||e.attachments.length>0,h=[];e.inTurn?(e.daemonSupportsAmend&&e.currentHeadMessageId!==void 0&&h.push(l("button",{class:"content-gated",disabled:!m,...I(xs),title:"Cancel the current turn and replace its prompt"},"Amend")),h.push(l("button",{class:"primary content-gated",disabled:!m,...I(Pe),title:"Queue this prompt to run after the current turn"},"Enqueue"))):h.push(l("button",{class:"primary content-gated",disabled:!m,...I(Pe)},"Send"));let y=l("div",{class:"composer"},So(e),b,l("div",{class:"composer-buttons"},l("button",{class:"stop",disabled:!e.inTurn&&!e.promptQueue.some(f=>f.status==="queued"||f.status==="pending"),...I(Ms),title:"Cancel current turn"},"Stop"),...h));return l("div",{class:"chat"},i,a,Yo(e),c,y)}function Zo(e){if(e.kind==="stream"){let t=e.role==="thought",n=e.role==="user"?"msg user":t?"msg system":"msg agent",s=t&&dt.has(e),r=l("div",{class:s?n+" collapsed":n});t&&r.addEventListener("click",()=>{if(!!dt.has(e)){dt.delete(e),S();return}let c=document.querySelector(".chat-body"),d=c?.getBoundingClientRect(),u=r.getBoundingClientRect(),p=u.top-(d?.top??0)+(c?.scrollTop??0),m=!d||u.top>=d.top&&u.top<d.bottom?c?.scrollTop??0:p;dt.add(e),S(),requestAnimationFrame(()=>{let h=document.querySelector(".chat-body");h&&(h.scrollTop=m)})});let i=e.queueEntry;if(i&&i.amendedByMessageId!==void 0&&i.status==="amended"&&r.classList.add("amended-target"),i&&(i.status==="queued"||i.status==="pending"||i.status==="cancelled"||i.status==="editing"||i.status==="amended")&&r.appendChild(ta(i)),i&&i.amendsMessageId!==void 0&&r.appendChild(l("span",{class:"amend-badge",title:"Merged amend \u2014 replaces the previous, cancelled prompt"},"+")),i&&i.status==="editing")r.appendChild(na(i,a=>{e.text=a}));else{e.attachments&&e.attachments.length>0&&r.appendChild(l("div",{class:"attachment-thumbs"},...e.attachments.map(c=>l("img",{class:"attachment-thumb",src:Js(c)}))));let a=l("div",{class:e.synthetic?"body raw":"body"});e.synthetic?a.textContent=e.text:a.innerHTML=wt(e.text),i&&i.status==="cancelled"&&(a.style.textDecoration="line-through",a.style.opacity="0.6"),r.appendChild(a)}return r}if(e.kind==="system")return l("div",{class:"msg system"},e.text);if(e.kind==="error")return l("div",{class:"msg error"},e.text);if(e.kind==="spinner")return sa(e.spinner);if(e.kind==="perm"){if(!o.current)return document.createTextNode("");let t=o.current.pendingPermissions.get(e.toolCallId);return t?ia(t):document.createTextNode("")}return e.kind==="plan"?oa(e.entries):e.kind==="exit-plan-mode"?jo(e):e.kind==="edit-diff"?Jo(e):document.createTextNode("")}function Xo(e){return e==="+"?"diff-line hljs-addition":e==="-"?"diff-line hljs-deletion":e==="gap"?"diff-line diff-gap":"diff-line"}function Vo(e){return e==="+"?"+ ":e==="-"?"- ":e==="gap"?"":" "}function Jo(e){let t=ps(e.diff),n=e.diff.path?ut(e.diff.path):"file",s=[];t.added>0&&s.push(l("span",{class:"add"},`+${t.added}`)),t.removed>0&&s.push(l("span",{class:"del"},`-${t.removed}`));let r=l("div",{class:"head",...I(()=>{e.expanded=!e.expanded,S()})},l("span",null,e.expanded?"\u25BE":"\u25B8"),l("span",{class:"title"},`Edited ${n}`),s.length>0?l("span",{class:"kind edit-summary"},s):null),i=l("div",{class:e.expanded?"toolcard open":"toolcard"},r);if(e.expanded){let a=fs(e.diff);i.appendChild(l("div",{class:"body"},l("pre",null,l("code",{class:"diff-body"},a.map(c=>l("div",{class:Xo(c.op)},Vo(c.op)+c.text))))))}return i}function jo(e){let t=l("div",{class:"msg agent plan-markdown"});t.appendChild(l("div",{class:"plan-header"},"\u{1F4CB} Plan"));let n=l("div",{class:"body"});n.innerHTML=wt(e.plan),t.appendChild(n);let s=ea(e.status);return s!==null&&t.appendChild(s),t}function ea(e){if(e===void 0)return null;switch(e){case"completed":case"succeeded":case"ok":return l("div",{class:"plan-status plan-status-ok"},"\u2713 Approved");case"failed":case"error":case"rejected":return l("div",{class:"plan-status plan-status-fail"},"\u2717 Rejected");case"cancelled":return l("div",{class:"plan-status plan-status-cancelled"},"\u229D Cancelled");case"pending":case"in_progress":case"running":case"updated":return l("div",{class:"plan-status plan-status-pending"},"awaiting approval\u2026");default:return null}}function ta(e){if(e.status==="queued"||e.status==="pending"){let t=Math.max(1,e.aheadAtEnqueue);return l("div",{class:"queue-chip queue-queued"},l("span",null,(t===1?"queued \xB7 waiting on 1 turn":`queued \xB7 waiting on ${t} turns`)+(e.held?" \xB7 held: agent resumed":"")),l("button",{class:"queue-edit",...I(()=>{e.status="editing",S()}),title:"Edit before sending"},"\u270E"),l("button",{class:"queue-cancel",...I(()=>Bt(e)),title:"Cancel before sending"},"\xD7"))}return e.status==="editing"?l("div",{class:"queue-chip queue-editing"},l("span",null,"editing \xB7 enter to save \xB7 esc to cancel edit")):e.status==="processing"?l("div",{class:"queue-chip queue-processing"},l("span",{class:"dot"}),l("span",null,"processing")):e.status==="cancelled"?l("div",{class:"queue-chip queue-cancelled"},l("span",null,"cancelled")):e.status==="amended"?l("div",{class:"queue-chip queue-amended"},l("span",null,"amended \u2014 merged into the next prompt")):document.createTextNode("")}function na(e,t){let n=l("textarea",{class:"queue-edit-area",rows:"3",autocapitalize:"off"});return n.value=e.text,n.addEventListener("keydown",s=>{if(s.key==="Enter"&&!s.shiftKey){s.preventDefault();let r=n.value;e.text=r,t(r),e.status="queued",ks(e,r),S()}else s.key==="Escape"&&(s.preventDefault(),e.status="queued",S())}),queueMicrotask(()=>{n.focus(),n.setSelectionRange(n.value.length,n.value.length)}),l("div",{class:"queue-editor"},n)}function sa(e){let t=l("button",{class:"queue-cancel",...I(()=>Cs()),title:"Cancel this turn"},"\xD7");if(!e.expanded)return l("div",{class:"spinner",...I(()=>{e.expanded=!0,S()})},l("div",{class:"head"},l("span",{class:"dot"}),l("span",null,e.toolCallIds.length===0?"thinking\u2026":`working \u2014 ${e.toolCallIds.length} tool call${e.toolCallIds.length===1?"":"s"}`),t));let n=e.toolCallIds.map(s=>{let r=o.current?.toolCalls.get(s);if(!r)return null;let i=r.status==="completed"||r.status==="success"?"\u2705":r.status==="failed"||r.status==="error"?"\u274C":"\u25B6";return l("li",null,l("span",{class:"icon"},i),document.createTextNode(" "+r.title))});return l("div",{class:"spinner expanded",...I(()=>{e.expanded=!1,S()})},l("div",{class:"head"},l("span",{class:"dot"}),l("span",null,"working"),t),l("ul",null,n))}function ra(e){let t=p=>typeof p=="string"&&p.length>0?p:void 0,n=[],s=(p,b)=>l("div",{class:"detail"},l("span",{class:"k"},p),l("code",null,b)),r=t(e.kind);r&&n.push(s("kind",r));let i=new Set,a=[],c=p=>{let b=t(p);b&&!i.has(b)&&(i.add(b),a.push(b))},d=e.locations;if(Array.isArray(d))for(let p of d)p&&typeof p=="object"&&c(p.path);let u=e.rawInput&&typeof e.rawInput=="object"?e.rawInput:void 0;u&&(c(u.file_path),c(u.filePath),c(u.path));for(let p of a)n.push(s("path",p));if(u){let p=t(u.command);p&&n.push(s("command",p));let b=t(u.url);b&&n.push(s("url",b));let m=t(u.description);m&&n.push(l("div",{class:"detail note"},m))}return n}function ia(e){let t=e.toolCall||{};return l("div",{class:"perm"},l("div",{class:"title"},"\u{1F512} Permission requested"),l("div",{class:"desc"},t.title||t.name||"tool call"),ra(t),l("div",{class:"opts"},...e.options.map(n=>l("button",{class:n.kind?.startsWith("allow")?"primary":n.kind?.startsWith("reject")?"danger":"",...I(()=>$t(e.toolCallId,n.optionId))},n.name||n.optionId)),l("button",{...I(()=>$t(e.toolCallId,"__cancel__"))},"Cancel")))}function oa(e){return Array.isArray(e)?l("div",{class:"msg agent"},l("div",{class:"body"},l("strong",null,"Plan")),l("ul",null,...e.map(t=>l("li",null,`${t.status==="completed"?"\u2713":t.status==="in_progress"?"\u25B8":"\xB7"} ${t.content||t.title||""}`)))):document.createTextNode("")}function aa(){o.current&&(o.current.fileOverlay={path:"",entries:[],preview:null,err:null},S(),Fe(""))}async function Fe(e){if(o.current)try{let t=await de("/api/files/list",{method:"POST",body:JSON.stringify({sessionId:o.current.sessionId,path:e})});o.current.fileOverlay={path:t.path,entries:t.entries??[],preview:null,err:null},S()}catch(t){o.current.fileOverlay={path:e,entries:[],preview:null,err:t.message},S()}}async function ca(e){if(o.current)try{let t=await de("/api/files/read",{method:"POST",body:JSON.stringify({sessionId:o.current.sessionId,path:e})}),n=o.current.fileOverlay;o.current.fileOverlay={path:n.path,entries:n.entries,preview:{path:e,content:t.content},err:null},S()}catch(t){o.current.fileOverlay&&(o.current.fileOverlay={...o.current.fileOverlay,err:t.message}),S()}}function Vs(){o.current&&(o.current.fileOverlay=null,S())}function la(e){if(!o.current?.fileOverlay)return;let t=o.current.fileOverlay,n=t.path?`${t.path}/${e.name}`:e.name;e.kind==="dir"?Fe(n):e.kind==="file"&&ca(n)}function da(e){let t=e?e.split("/").filter(Boolean):[],n=[l("span",{class:"crumb",...I(()=>Fe(""))},".")],s="";for(let r of t){s=s?`${s}/${r}`:r;let i=s;n.push(document.createTextNode(" / ")),n.push(l("span",{class:"crumb",...I(()=>Fe(i))},r))}return l("div",{class:"crumbs"},n)}function ua(e,t){if(!o.current)return;let n=`${e}:${t}`,s=o.current.composerValue;o.current.composerValue=s?`${s} ${n}`:n,S()}function pa(){o.current?.fileOverlay&&(o.current.fileOverlay.preview=null,S())}function fa(e){let t=e.fileOverlay;if(!t)return document.createTextNode("");let n;if(t.preview){let{path:s,content:r}=t.preview,i=cs(r,s)??te(r),a=r.split(`
325
+ `).length,c=l("div",{class:"code-gutter"});for(let d=1;d<=a;d++){let u=d;c.appendChild(l("div",{class:"ln",...I(()=>ua(s,u))},String(u)))}n=l("div",{class:"preview"},l("div",{class:"crumbs"},l("span",{class:"crumb",...I(()=>pa())},"\u2190 back to listing"),document.createTextNode(` ${s}`)),l("div",{class:"code-view"},c,l("pre",{},l("code",{class:"hljs",html:i}))))}else n=l("div",{class:"body"},t.err?l("div",{class:"msg error"},t.err):null,t.path?l("div",{class:"entry",...I(()=>Fe(t.path.split("/").slice(0,-1).join("/")))},l("span",{class:"icon"},"\u25B8"),l("span",{class:"name"},".."),l("span",{class:"size"},"")):null,...t.entries.map(s=>l("div",{class:"entry",...I(()=>la(s))},l("span",{class:"icon"},s.kind==="dir"?"\u25B8":"\xB7"),l("span",{class:"name"},s.name),l("span",{class:"size"},s.kind==="file"?`${s.size}b`:""))));return l("div",{class:"modal-bg",...I(s=>{s.target.classList.contains("modal-bg")&&Vs()})},l("div",{class:"modal file-modal"},l("div",{class:"topbar",style:"border-bottom:1px solid var(--border)"},l("span",{class:"title"},"Files"),l("span",{class:"pill"},e.cwd),l("span",{class:"spacer"}),l("button",{...I(Vs)},"\xD7")),da(t.path),l("div",{class:"files"},n)))}function ga(e,t){e.focus();let n=!1;if(typeof document.execCommand=="function")try{n=document.execCommand("insertText",!1,t)}catch{n=!1}if(!n){let s=e.selectionStart??e.value.length,r=e.selectionEnd??e.value.length,i=e.value.slice(0,s),a=e.value.slice(r);e.value=i+t+a;let c=s+t.length;e.setSelectionRange(c,c),e.dispatchEvent(new Event("input",{bubbles:!0}))}}var Gt=!1,$e=!1;document.addEventListener("pointerdown",e=>{e.target?.closest("button")&&($e=!0)},!0);document.addEventListener("pointerup",()=>{$e&&($e=!1,S())},!0);document.addEventListener("pointercancel",()=>{$e=!1},!0);function S(){Gt||(Gt=!0,requestAnimationFrame(()=>{if(Gt=!1,$e){S();return}ma()}))}function ma(){let e=document.getElementById("app");if(!e)return;let t=document.activeElement,n=null,s=null,r=null;if(t&&t!==document.body&&t.dataset&&t.dataset.focusKey&&(n=t.dataset.focusKey,"selectionStart"in t))try{s=t.selectionStart,r=t.selectionEnd}catch{}let i=e.querySelector(".chat-body"),a=null,c=!0;i&&(a=i.scrollTop,c=i.scrollHeight-i.scrollTop-i.clientHeight<50);let d=e.querySelector(".list"),u=d?d.scrollTop:null,p=e.querySelector(".files .body"),b=p?p.scrollTop:null,m=e.querySelector(".files .preview"),h=m?m.scrollTop:null;e.replaceChildren(),tr(e,o);let y=e.querySelector(".chat-body");y&&(a===null||c?y.scrollTop=y.scrollHeight:y.scrollTop=a);let f=e.querySelector(".list");f&&u!==null&&(f.scrollTop=u);let E=e.querySelector(".files .body");E&&b!==null&&(E.scrollTop=b);let T=e.querySelector(".files .preview");if(T&&h!==null&&(T.scrollTop=h),n){let k=e.querySelector(`[data-focus-key="${CSS.escape(n)}"]`);if(k){k.focus();let O=k;if(s!==null&&typeof O.setSelectionRange=="function")try{O.setSelectionRange(s,r)}catch{}}}}var or="hydra-acp-browser:filters",ar=["groupBy","showCold","hostFilter","hideThoughts","notifyOnTurnEnd"];function ba(){try{let e=localStorage.getItem(or);return e?JSON.parse(e):{}}catch{return{}}}function ha(){try{let e={};for(let t of ar)e[t]=o[t];localStorage.setItem(or,JSON.stringify(e))}catch{}}var o={view:"list",sessions:[],agents:[],defaultCwd:null,groupBy:"project",showCold:!1,hostFilter:"__local",hideThoughts:!1,notifyOnTurnEnd:!1,banner:null,modal:null,current:null,...ba()};function C(e){let t=!1,n=!1;for(let s of Object.keys(e)){let r=e[s];Wt(o[s],r)||(o[s]=r,t=!0,ar.includes(s)&&(n=!0))}n&&ha(),t&&S()}function Wt(e,t){return e===t?!0:e===null||t===null||typeof e!=typeof t||typeof e!="object"?!1:JSON.stringify(e)===JSON.stringify(t)}function Ea(){let e=window.getSelection();return!e||e.isCollapsed?!1:e.toString().length>0}async function de(e,t){let n=await fetch(e,{credentials:"same-origin",headers:{"Content-Type":"application/json"},...t});if(!n.ok){let s=`${n.status} ${n.statusText}`;try{let r=await n.json();r&&r.error&&(s=r.error)}catch{}throw new Error(s)}return n.status===204?null:await n.json()}var Yt=null;async function Ee(){try{let n=(await de("/api/sessions")).sessions??[],s=o.banner!==null,r=!Wt(o.sessions,n);if(o.sessions=n,o.banner=null,!r&&!s||!s&&Ea()||!s&&o.modal)return;if(o.view==="list"||s)S();else if(o.view==="chat"&&o.current){let i=o.sessions.find(c=>c.sessionId===o.current.sessionId),a=i?`${i.title}|${i.cwd}|${i.agentId}|${i.currentModel}|${i.workspace?.label}|${i.workspace?.vcs?.branch}|${i.workspace?.clean}`:"";a!==o.current._lastMetaFp&&(o.current._lastMetaFp=a,S())}}catch(e){C({banner:{kind:"bad",text:"session list failed: "+e.message}})}}function cr(){Yt&&clearInterval(Yt),Ee(),Yt=setInterval(()=>{Ee()},2e3)}async function lr(){try{let e=await de("/api/agents");C({agents:e.agents??[]})}catch(e){C({banner:{kind:"warn",text:"agents unavailable: "+e.message}})}}async function dr(){try{let e=await de("/api/config");C({defaultCwd:e.defaultCwd??null})}catch{}}async function rr(e,t={}){return de("/api/sessions/import",{method:"POST",body:JSON.stringify({bundle:e,replace:t.replace===!0})})}async function ir(e){let t=await fetch("/api/sessions/import",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({bundle:e})});if(t.ok)return{ok:!0,result:await t.json()};let n,s=`${t.status} ${t.statusText}`;try{let r=await t.json();r.existingSessionId&&(n=r.existingSessionId),r.error&&(s=r.error)}catch{}return{ok:!1,status:t.status,message:s,existingSessionId:n}}var ur=70,_a=110,pt=null,Ue=!1,xe=!1,ke=null;function Qt(){return ke||(ke=document.createElement("div"),ke.className="pull-refresh",document.body.appendChild(ke),ke)}function ya(e){let t=Qt(),n=Math.max(0,Math.min(e,_a));xe=n>=ur,t.style.opacity=n>0?String(Math.min(n/ur,1)):"0",t.style.transform=`translate(-50%, ${n>0?n-32:-48}px)`,t.textContent=xe?"\u2191 Release to refresh":"\u2193 Pull to refresh"}function fr(){let e=Qt();e.style.opacity="0",e.style.transform="translate(-50%, -48px)"}function gr(){return document.querySelector(".list")}function wa(e){if(Ue=!1,xe=!1,o.view!=="list")return;let t=gr(),n=e.touches[0];!t||!n||t.scrollTop>0||!t.contains(n.target)||(pt=n.clientY,Ue=!0)}function va(e){if(!Ue||pt===null)return;let t=gr(),n=e.touches[0];if(!t||!n)return;let s=n.clientY-pt;if(s<=0||t.scrollTop>0){fr(),xe=!1;return}e.preventDefault(),ya(s)}function pr(){if(Ue&&xe){let e=Qt();e.textContent="Refreshing\u2026",location.reload()}else fr();Ue=!1,xe=!1,pt=null}function mr(){document.addEventListener("touchstart",wa,{passive:!0}),document.addEventListener("touchmove",va,{passive:!1}),document.addEventListener("touchend",pr,{passive:!0}),document.addEventListener("touchcancel",pr,{passive:!0})}var Sa=(()=>{try{return new URLSearchParams(window.location.search).get("vpdebug")==="1"}catch{return!1}})();function Ta(e,t,n){let s=document.getElementById("__viewport_debug__");s||(s=document.createElement("div"),s.id="__viewport_debug__",s.style.cssText="position:absolute;top:0;left:0;right:0;z-index:9999;background:rgba(0,0,0,0.85);color:#fd9;padding:0.4rem 0.6rem;font:11px/1.4 ui-monospace,monospace;border:1px solid #d4a17e;border-radius:6px;white-space:pre;pointer-events:none;opacity:0.9",document.body.appendChild(s));let r=document.querySelector(".composer"),i=r?.getBoundingClientRect(),a=r?getComputedStyle(r).paddingBottom:"n/a",c=document.getElementById("app"),d=c?.getBoundingClientRect(),u=c?getComputedStyle(c).height:"n/a",b=document.querySelector(".chat-body")?.getBoundingClientRect(),m=document.getElementById("__vp_icb_line__");m||(m=document.createElement("div"),m.id="__vp_icb_line__",document.body.appendChild(m)),m.style.cssText=`position:absolute;left:0;right:0;top:${window.innerHeight-3}px;height:3px;background:lime;z-index:9999;pointer-events:none`;let h=document.getElementById("__vp_app_line__");h||(h=document.createElement("div"),h.id="__vp_app_line__",document.body.appendChild(h)),h.style.cssText="position:absolute;left:0;right:0;top:calc(var(--app-height, 100%) - 3px);height:3px;background:magenta;z-index:9999;pointer-events:none";let y=document.querySelector(".composer-buttons");y&&(y.style.outline="2px solid cyan");let f=T=>T?`top=${T.top.toFixed(0)} h=${T.height.toFixed(0)} bottom=${T.bottom.toFixed(0)}`:"n/a",E=document.body.getBoundingClientRect();s.textContent=`innerHeight=${window.innerHeight} appH(vv+inset)=${e.toFixed(1)} inset=${br().toFixed(0)}
326
+ vv.offsetTop=${t.toFixed(1)} keyboard-open=${n}
327
+ screen.h=${screen.height} docClientH=${document.documentElement.clientHeight}
328
+ body ${f(E)}
329
+ #app styleH=${u} ${f(d)}
330
+ .chat-body ${f(b)}
331
+ .composer padBottom=${a} ${f(i)}`}var He=null;function br(){return He||(He=document.createElement("div"),He.style.cssText="position:fixed;top:0;left:0;width:1px;height:env(safe-area-inset-top,0px);visibility:hidden;pointer-events:none",document.documentElement.appendChild(He)),He.getBoundingClientRect().height}function hr(){let e=document.documentElement,t=new Map,n=()=>{let r=window.visualViewport,i=(r?.height??window.innerHeight)+br(),a=r?.offsetTop??0;e.style.setProperty("--app-height",`${i}px`);let c=Math.round(r?.width??window.innerWidth),d=Math.max(i,t.get(c)??0);t.set(c,d);let u=d-i>100;e.classList.toggle("keyboard-open",u);let p=u?a:0;e.style.setProperty("--app-offset-top",`${p}px`),Sa&&Ta(i,p,u)};n(),window.visualViewport&&(window.visualViewport.addEventListener("resize",n),window.visualViewport.addEventListener("scroll",n)),window.addEventListener("resize",n),window.addEventListener("orientationchange",n),window.addEventListener("pageshow",n),window.addEventListener("focus",n),document.addEventListener("visibilitychange",n);let s=()=>{for(let r of[50,150,300,600])setTimeout(n,r)};document.addEventListener("focusin",s),document.addEventListener("focusout",s),setInterval(n,1e3)}hr();window.addEventListener("DOMContentLoaded",()=>{cr(),lr(),dr(),Ht(),S(),mr()});window.addEventListener("hashchange",()=>{Ht()});})();
285
332
  </script>
286
333
  </body>
287
334
  </html>