From 5b70789f7601c9e9dd30fc21f15c13c476ef2fff Mon Sep 17 00:00:00 2001 From: xjx <2869418079@qq.com> Date: Mon, 21 Sep 2026 15:30:23 +0800 Subject: [PATCH] feat(desktop): drag workspace files into composer --- .../electron/main/plugin-panel-host.ts | 25 ++++- .../electron/main/services/plugin-services.ts | 9 ++ apps/desktop/electron/preload/plugin-panel.ts | 36 ++++++++ .../plugins/pi.file-manager/UPSTREAM.md | 8 +- .../pi.file-manager/views/assets/index.js | 2 +- .../composer/hooks/useComposerAttachments.ts | 65 +++++++++++++ apps/desktop/src/lib/api.ts | 8 ++ apps/desktop/src/lib/composer-drop.ts | 53 +++++++++++ apps/desktop/test/composer-drag-drop.test.mjs | 92 +++++++++++++++++-- docs/spec/04-ux/08-component-spec.md | 5 + docs/spec/06-delivery/04-e2e-test-plan.md | 14 ++- docs/zh-CN/spec/04-ux/08-component-spec.md | 3 + packages/shared/src/protocol.ts | 1 + 13 files changed, 307 insertions(+), 14 deletions(-) diff --git a/apps/desktop/electron/main/plugin-panel-host.ts b/apps/desktop/electron/main/plugin-panel-host.ts index 84a65850f..3700923a0 100644 --- a/apps/desktop/electron/main/plugin-panel-host.ts +++ b/apps/desktop/electron/main/plugin-panel-host.ts @@ -1,4 +1,10 @@ -import { BrowserWindow, ipcMain, Menu, session, systemPreferences } from "electron"; +import { + BrowserWindow, + ipcMain, + Menu, + session, + systemPreferences, +} from "electron"; import { pathToFileURL } from "node:url"; import { join, resolve } from "node:path"; import { catalogs, resolveLocale } from "@pi-desktop/i18n"; @@ -176,6 +182,7 @@ export class PluginPanelHost { private senderResolvers: Array<(senderId: number) => string | null> = []; /** Observer for failures of the fire-and-forget legacy sync bridge. */ private onBridgeError?: (pluginId: string, channel: string, error: unknown) => void; + private onComposerFileDrop?: (payload: { data: string; x: number; y: number }) => void; /** * Locale per floating-widget web contents. Presence in this map is also what * makes a window a widget for `showWidgetMenu`, so a panel never gets a @@ -187,10 +194,12 @@ export class PluginPanelHost { bridge: BridgeHandler, onBlockedRequest?: PluginPanelBlockedRequest, onBridgeError?: (pluginId: string, channel: string, error: unknown) => void, + onComposerFileDrop?: (payload: { data: string; x: number; y: number }) => void, ) { this.bridge = bridge; this.onBlockedRequest = onBlockedRequest; this.onBridgeError = onBridgeError; + this.onComposerFileDrop = onComposerFileDrop; this.ensureHandlers(); } @@ -230,6 +239,20 @@ export class PluginPanelHost { ); }); + ipcMain.on("pi-plugin-panel-composer-file-drop", (event, rawDrop: unknown) => { + const senderId = event.sender.id; + if (!this.pluginIdForSender(senderId) || !rawDrop || typeof rawDrop !== "object") return; + const { data, screenX, screenY } = rawDrop as { + data?: unknown; + screenX?: unknown; + screenY?: unknown; + }; + if (typeof data !== "string" || !data || data.length > 4_096) return; + if (typeof screenX !== "number" || !Number.isFinite(screenX)) return; + if (typeof screenY !== "number" || !Number.isFinite(screenY)) return; + this.onComposerFileDrop?.({ data, x: screenX, y: screenY }); + }); + // Legacy sync bridge used by older sample panels. ipcMain.on( "pi-plugin-panel-bridge", diff --git a/apps/desktop/electron/main/services/plugin-services.ts b/apps/desktop/electron/main/services/plugin-services.ts index 376dad792..cd161f2f1 100644 --- a/apps/desktop/electron/main/services/plugin-services.ts +++ b/apps/desktop/electron/main/services/plugin-services.ts @@ -121,6 +121,15 @@ export function createPluginServices({ data: { channel, error: String(error) }, }); }, + ({ data, x, y }) => { + const bounds = getMainWindow()?.getContentBounds(); + if (!bounds) return; + sendToRenderer(IPC.event.pluginComposerFileDrop, { + data, + clientX: x - bounds.x, + clientY: y - bounds.y, + }); + }, ); const callPluginSessionHost = async ( method: string, diff --git a/apps/desktop/electron/preload/plugin-panel.ts b/apps/desktop/electron/preload/plugin-panel.ts index 8bf78d64f..1f7374588 100644 --- a/apps/desktop/electron/preload/plugin-panel.ts +++ b/apps/desktop/electron/preload/plugin-panel.ts @@ -41,6 +41,42 @@ const bridge = { contextBridge.exposeInMainWorld("pluginBridge", bridge); +const COMPOSER_WORKSPACE_FILE_MIME = "application/x-pi-desktop-workspace-file"; +let composerFileDrag: string | null = null; + +// A docked plugin view is a separate WebContentsView, so Chromium does not +// carry its HTML drop into the host renderer. Read the private payload while +// the event bubbles, after the plugin has populated it, then forward the final +// screen position so the host renderer can accept only a Composer drop. +window.addEventListener( + "dragstart", + (event) => { + composerFileDrag = null; + if (!event.isTrusted) return; + const data = event.dataTransfer; + if (!data?.types.includes(COMPOSER_WORKSPACE_FILE_MIME)) return; + const raw = data.getData(COMPOSER_WORKSPACE_FILE_MIME); + if (raw && raw.length <= 4_096) { + composerFileDrag = raw; + } + }, +); + +window.addEventListener( + "dragend", + (event) => { + const data = composerFileDrag; + composerFileDrag = null; + if (!event.isTrusted || !data) return; + ipcRenderer.send("pi-plugin-panel-composer-file-drop", { + data, + screenX: event.screenX, + screenY: event.screenY, + }); + }, + true, +); + // Record the gesture before page code handles it. The host consumes one of // these short-lived paths when the panel asks for fs.registerDropped. window.addEventListener( diff --git a/apps/desktop/resources/plugins/pi.file-manager/UPSTREAM.md b/apps/desktop/resources/plugins/pi.file-manager/UPSTREAM.md index 503189649..5336adbcd 100644 --- a/apps/desktop/resources/plugins/pi.file-manager/UPSTREAM.md +++ b/apps/desktop/resources/plugins/pi.file-manager/UPSTREAM.md @@ -45,7 +45,7 @@ directory carries the built view the plugin publishes, not its React source. ## Local changes -Two, so a re-sync stays a copy: +Three, so a re-sync stays reproducible: - `manifest.json` gains `"license": "MIT"` (after `author`), making the vendored copy 14191 bytes @@ -62,6 +62,12 @@ Two, so a re-sync stays a copy: ancestor's `"module"`, which is why the marker cannot live one directory up. In a packaged app the file is inert, and deleting it only costs the developer experience, never a user. +- `views/assets/index.js` is rebuilt from the tagged `views-src/` with one + additive tree-row change: regular, non-symlink files publish + `application/x-pi-desktop-workspace-file` with their workspace-relative path + and leaf name during an HTML drag. Directories and symlinks remain + non-draggable. The local bundle is 1345647 bytes with sha256 + `89c2b949b605a934a3131bc614dfc670046bd2cb502db81b3fec255b202c5e45`. ## Re-syncing a newer release diff --git a/apps/desktop/resources/plugins/pi.file-manager/views/assets/index.js b/apps/desktop/resources/plugins/pi.file-manager/views/assets/index.js index a4d8f5cd0..db4e5a1a9 100644 --- a/apps/desktop/resources/plugins/pi.file-manager/views/assets/index.js +++ b/apps/desktop/resources/plugins/pi.file-manager/views/assets/index.js @@ -76,7 +76,7 @@ Error generating stack: `+r.message+` `;)r--;this.fragmentEnd=r?r-1:0}let i=this.cursor;i||(i=this.cursor=this.fragment.tree.cursor(),i.firstChild());let n=e+this.fragment.offset;for(;i.to<=n;)if(!i.parent())return!1;for(;;){if(i.from>=n)return this.fragment.from<=O;if(!i.childAfter(n))return!1}}matches(e){let O=this.cursor.tree;return O&&O.prop(K.contextHash)==e}takeNodes(e){let O=this.cursor,i=this.fragment.offset,n=this.fragmentEnd-(this.fragment.openEnd?1:0),r=e.absoluteLineStart,a=r,s=e.block.children.length,o=a,l=s;for(;;){if(O.to-i>n){if(O.type.isAnonymous&&O.firstChild())continue;break}let c=lT(O.from-i,e.ranges);if(O.to-i<=e.ranges[e.rangeI].to)e.addNode(O.tree,c);else{let u=new ce(e.parser.nodeSet.types[V.Paragraph],[],[],0,e.block.hashProp);e.reusePlaceholders.set(u,O.tree),e.addNode(u,c)}if(O.type.is("Block")&&($2.indexOf(O.type.id)<0?(a=O.to-i,s=e.block.children.length):(a=o,s=l),o=O.to-i,l=e.block.children.length),!O.nextSibling())break}for(;e.block.children.length>s;)e.block.children.pop(),e.block.positions.pop();return a-r}}function lT(t,e){let O=t;for(let i=1;icu[t]),Object.keys(cu).map(t=>Kw[t]),Object.keys(cu),d2,Gw,Object.keys(b$).map(t=>b$[t]),Object.keys(b$),[]);function P2(t,e,O){let i=[];for(let n=t.firstChild,r=e;;n=n.nextSibling){let a=n?n.from:O;if(a>r&&i.push({from:r,to:a}),!n)break;r=n.to}return i}function S2(t){let{codeParser:e,htmlParser:O}=t;return{wrap:Nr((n,r)=>{let a=n.type.id;if(e&&(a==V.CodeBlock||a==V.FencedCode)){let s="";if(a==V.FencedCode){let l=n.node.getChild(V.CodeInfo);l&&(s=r.read(l.from,l.to))}let o=e(s);if(o)return{parser:o,overlay:l=>l.type.id==V.CodeText,bracketed:a==V.FencedCode}}else if(O&&(a==V.HTMLBlock||a==V.HTMLTag||a==V.CommentBlock))return{parser:O,overlay:P2(n.node,n.from,n.to)};return null})}}const X2={resolve:"Strikethrough",mark:"StrikethroughMark"},x2={defineNodes:[{name:"Strikethrough",style:{"Strikethrough/...":f.strikethrough}},{name:"StrikethroughMark",style:f.processingInstruction}],parseInline:[{name:"Strikethrough",parse(t,e,O){if(e!=126||t.char(O+1)!=126||t.char(O+2)==126)return-1;let i=t.slice(O-1,O),n=t.slice(O+2,O+3),r=/\s|^$/.test(i),a=/\s|^$/.test(n),s=co.test(i),o=co.test(n);return t.addDelimiter(X2,O,O+2,!a&&(!o||r||s),!r&&(!s||a||o))},after:"Emphasis"}]};function uo(t,e,O=0,i,n=0){let r=0,a=!0,s=-1,o=-1,l=!1,c=()=>{i.push(t.elt("TableCell",n+s,n+o,t.parser.parseInline(e.slice(s,o),n+s)))};for(let u=O;u-1)&&r++,a=!1,i&&(s>-1&&c(),i.push(t.elt("TableDelimiter",u+n,u+n+1))),s=o=-1):(l||d!=32&&d!=9)&&(s<0&&(s=u),o=u+1),l=!l&&d==92}return s>-1&&(r++,i&&c()),r}function cT(t,e){for(let O=e;O\s]*\|?(\s*:?-+:?\s*\|)+(\s*:?-+:?\s*)?$/;class dT{constructor(){this.rows=null}nextLine(e,O,i){if(this.rows==null){this.rows=!1;let n;if((O.next==45||O.next==58||O.next==124)&&uT.test(n=O.text.slice(O.pos))){let r=[];uo(e,i.content,0,r,i.start)==uo(e,n,0)&&(this.rows=[e.elt("TableHeader",i.start,i.start+i.content.length,r),e.elt("TableDelimiter",e.lineStart+O.pos,e.lineStart+O.text.length)])}}else if(this.rows){let n=[];uo(e,O.text,O.pos,n,e.lineStart),this.rows.push(e.elt("TableRow",e.lineStart+O.pos,e.lineStart+O.text.length,n))}return!1}finish(e,O){return this.rows?(e.addLeafElement(O,e.elt("Table",O.start,O.start+O.content.length,this.rows)),!0):!1}}const y2={defineNodes:[{name:"Table",block:!0},{name:"TableHeader",style:{"TableHeader/...":f.heading}},"TableRow",{name:"TableCell",style:f.content},{name:"TableDelimiter",style:f.processingInstruction}],parseBlock:[{name:"Table",leaf(t,e){return cT(e.content,0)?new dT:null},endLeaf(t,e,O){if(O.parsers.some(n=>n instanceof dT)||!cT(e.text,e.basePos))return!1;let i=t.peekLine();return uT.test(i)&&uo(t,e.text,e.basePos)==uo(t,i,e.basePos)},before:"SetextHeading"}]};class w2{nextLine(){return!1}finish(e,O){return e.addLeafElement(O,e.elt("Task",O.start,O.start+O.content.length,[e.elt("TaskMarker",O.start,O.start+3),...e.parser.parseInline(O.content.slice(3),O.start+3)])),!0}}const T2={defineNodes:[{name:"Task",block:!0,style:f.list},{name:"TaskMarker",style:f.atom}],parseBlock:[{name:"TaskList",leaf(t,e){return/^\[[ xX]\][ \t]/.test(e.content)&&t.parentType().name=="ListItem"?new w2:null},after:"SetextHeading"}]},fT=/(www\.)|(https?:\/\/)|([\w.+-]{1,100}@)|(mailto:|xmpp:)/gy,hT=/[\w-]+(\.[\w-]+)+(:\d+)?(\/[^\s<]*)?/gy,k2=/[\w-]+\.[\w-]+($|[/:])/,QT=/[\w.+-]+@[\w-]+(\.[\w.-]+)+/gy,$T=/\/[a-zA-Z\d@.]+/gy;function pT(t,e,O,i){let n=0;for(let r=e;r-1)return-1;let i=e+O[0].length;for(;;){let n=t[i-1],r;if(/[?!.,:*_~]/.test(n)||n==")"&&pT(t,e,i,")")>pT(t,e,i,"("))i--;else if(n==";"&&(r=/&(?:#\d+|#x[a-f\d]+|\w+);$/.exec(t.slice(e,i))))i=e+r.index;else break}return i}function mT(t,e){QT.lastIndex=e;let O=QT.exec(t);if(!O)return-1;let i=O[0][O[0].length-1];return i=="_"||i=="-"?-1:e+O[0].length-(i=="."?1:0)}const b2=[y2,T2,x2,{parseInline:[{name:"Autolink",parse(t,e,O){let i=O-t.offset;if(i&&/\w/.test(t.text[i-1]))return-1;fT.lastIndex=i;let n=fT.exec(t.text),r=-1;if(!n)return-1;if(n[1]||n[2]){if(r=v2(t.text,i+n[0].length),r>-1&&t.hasOpenLink){let a=/([^\[\]]|\[[^\]]*\])*/.exec(t.text.slice(i,r));r=i+a[0].length}}else n[3]?r=mT(t.text,i):(r=mT(t.text,i+n[0].length),r>-1&&n[0]=="xmpp:"&&($T.lastIndex=r,n=$T.exec(t.text),n&&(r=n.index+n[0].length)));return r<0?-1:(t.addElement(t.elt("URL",O,r+t.offset)),r+t.offset)}}]}];function gT(t,e,O){return(i,n,r)=>{if(n!=t||i.char(r+1)==t)return-1;let a=[i.elt(O,r,r+1)];for(let s=r+1;s"}}}),ST=new K,XT=g2.configure({props:[et.add(t=>!t.is("Block")||t.is("Document")||Y$(t)!=null||_2(t)?void 0:(e,O)=>({from:O.doc.lineAt(e.from).to,to:e.to})),ST.add(Y$),Je.add({Document:()=>null}),$n.add({Document:PT})]});function Y$(t){let e=/^(?:ATX|Setext)Heading(\d)$/.exec(t.name);return e?+e[1]:void 0}function _2(t){return t.name=="OrderedList"||t.name=="BulletList"}function z2(t,e){let O=t;for(;;){let i=O.nextSibling,n;if(!i||(n=Y$(i.type))!=null&&n<=e)break;O=i}return O.to}const U2=Wx.of((t,e,O)=>{for(let i=$e(t).resolveInner(O,-1);i&&!(i.fromO)return{from:O,to:r}}return null});function _$(t){return new Bt(PT,t,[],"markdown")}const q2=_$(XT),hu=_$(XT.configure([b2,R2,Z2,Y2,{props:[et.add({Table:(t,e)=>({from:e.doc.lineAt(t.from).to,to:t.to})})]}]));function V2(t,e){return O=>{if(O&&t){let i=null;if(O=/\S*/.exec(O)[0],typeof t=="function"?i=t(O):i=Ns.matchLanguageName(t,O,!0),i instanceof Ns)return i.support?i.support.language.parser:Fn.getSkippingParser(i.load());if(i)return i.parser}return e?e.parser:null}}let z$=class{constructor(e,O,i,n,r,a,s){this.node=e,this.from=O,this.to=i,this.spaceBefore=n,this.spaceAfter=r,this.type=a,this.item=s}blank(e,O=!0){let i=this.spaceBefore+(this.node.name=="Blockquote"?">":"");if(e!=null){for(;i.length0;n--)i+=" ";return i+(O?this.spaceAfter:"")}}marker(e,O){let i=this.node.name=="OrderedList"?String(+yT(this.item,e)[2]+O):"";return this.spaceBefore+i+this.type+this.spaceAfter}};function xT(t,e){let O=[],i=[];for(let n=t;n;n=n.parent){if(n.name=="FencedCode")return i;(n.name=="ListItem"||n.name=="Blockquote")&&O.push(n)}for(let n=O.length-1;n>=0;n--){let r=O[n],a,s=e.lineAt(r.from),o=r.from-s.from;if(r.name=="Blockquote"&&(a=/^ *>( ?)/.exec(s.text.slice(o))))i.push(new z$(r,o,o+a[0].length,"",a[1],">",null));else if(r.name=="ListItem"&&r.parent.name=="OrderedList"&&(a=/^( *)\d+([.)])( *)/.exec(s.text.slice(o)))){let l=a[3],c=a[0].length;l.length>=4&&(l=l.slice(0,l.length-4),c-=4),i.push(new z$(r.parent,o,o+c,a[1],l,a[2],r))}else if(r.name=="ListItem"&&r.parent.name=="BulletList"&&(a=/^( *)([-+*])( {1,4}\[[ xX]\])?( +)/.exec(s.text.slice(o)))){let l=a[4],c=a[0].length;l.length>4&&(l=l.slice(0,l.length-4),c-=4);let u=a[2];a[3]&&(u+=a[3].replace(/[xX]/," ")),i.push(new z$(r.parent,o,o+c,a[1],l,u,r))}}return i}function yT(t,e){return/^(\s*)(\d+)(?=[.)])/.exec(e.sliceString(t.from,t.from+10))}function U$(t,e,O,i=0){for(let n=-1,r=t;;){if(r.name=="ListItem"){let s=yT(r,e),o=+s[2];if(n>=0){if(o!=n+1)return;O.push({from:r.from+s[1].length,to:r.from+s[0].length,insert:String(n+2+i)})}n=o}let a=r.nextSibling;if(!a)break;r=a}}function q$(t,e){let O=/^[ \t]*/.exec(t)[0].length;if(!O||e.facet(Is)!=" ")return t;let i=TO(t,4,O),n="";for(let r=i;r>0;)r>=4?(n+=" ",r-=4):(n+=" ",r--);return n+t.slice(O)}const W2=((t={})=>({state:e,dispatch:O})=>{let i=$e(e),{doc:n}=e,r=null,a=e.changeByRange(s=>{if(!s.empty||!hu.isActiveAt(e,s.from,-1)&&!hu.isActiveAt(e,s.from,1))return r={range:s};let o=s.from,l=n.lineAt(o),c=xT(i.resolveInner(o,-1),n);for(;c.length&&c[c.length-1].from>o-l.from;)c.pop();if(!c.length)return r={range:s};let u=c[c.length-1];if(u.to-u.spaceAfter.length>o-l.from)return r={range:s};let d=o>=u.to-u.spaceAfter.length&&!/\S/.test(l.text.slice(u.to));if(u.item&&d){if(u.item.from]*$/.test(l.text.slice(0,u.to)))return r={range:s};let p=u.node.firstChild,g=u.node.getChild("ListItem","ListItem");if(p.to>=o||g&&g.to0&&!/[^\s>]/.test(n.lineAt(l.from-1).text)||t.nonTightLists===!1){let S=c.length>1?c[c.length-2]:null,X,x="";S&&S.item?(X=l.from+S.from,x=S.marker(n,1)):X=l.from+(S?S.to:0);let T=[{from:X,to:o,insert:x}];return u.node.name=="OrderedList"&&U$(u.item,n,T,-2),S&&S.node.name=="OrderedList"&&U$(S.item,n,T),{range:v.cursor(X+x.length),changes:T}}else{let S=TT(c,e,l);return{range:v.cursor(o+S.length+1),changes:{from:l.from,insert:S+e.lineBreak}}}}if(u.node.name=="Blockquote"&&d&&l.from){let p=n.lineAt(l.from-1),g=/>\s*$/.exec(p.text);if(g&&g.index==u.from){let S=e.changes([{from:p.from+g.index,to:p.to},{from:l.from+u.from,to:l.to}]);return{range:s.map(S),changes:S}}}let h=[];u.node.name=="OrderedList"&&U$(u.item,n,h);let Q=u.item&&u.item.from]*/.exec(l.text)[0].length>=u.to)for(let p=0,g=c.length-1;p<=g;p++)$+=p==g&&!Q?c[p].marker(n,1):c[p].blank(pl.from&&/\s/.test(l.text.charAt(P-l.from-1));)P--;return $=q$($,e),j2(u.node,e.doc)&&($=TT(c,e,l)+e.lineBreak+$),h.push({from:P,to:o,insert:e.lineBreak+$}),{range:v.cursor(P+$.length+1),changes:h}});return r?!1:(O(e.update(a,{scrollIntoView:!0,userEvent:"input"})),!0)})();function wT(t){return t.name=="QuoteMark"||t.name=="ListMark"}function j2(t,e){if(t.name!="OrderedList"&&t.name!="BulletList")return!1;let O=t.firstChild,i=t.getChild("ListItem","ListItem");if(!i)return!1;let n=e.lineAt(O.to),r=e.lineAt(i.from),a=/^[\s>]*$/.test(n.text);return n.number+(a?0:1){let O=$e(t),i=null,n=t.changeByRange(r=>{let a=r.from,{doc:s}=t;if(r.empty&&hu.isActiveAt(t,r.from)){let o=s.lineAt(a),l=xT(C2(O,a),s);if(l.length){let c=l[l.length-1],u=c.to-c.spaceAfter.length+(c.spaceAfter?1:0);if(a-o.from>u&&!/\S/.test(o.text.slice(u,a-o.from)))return{range:v.cursor(o.from+u),changes:{from:o.from+u,to:a}};if(a-o.from==u&&(c.item&&o.from<=c.item.from||/^[\s>]*$/.test(o.text.slice(0,c.to)))){let d=o.from+c.from;if(c.item&&c.node.from{var O;let{main:i}=e.state.selection;if(i.empty)return!1;let n=(O=t.clipboardData)===null||O===void 0?void 0:O.getData("text/plain");if(!n||!/^(https?:\/\/|mailto:|xmpp:|www\.)/.test(n)||(/^www\./.test(n)&&(n="https://"+n),!hu.isActiveAt(e.state,i.from,1)))return!1;let r=$e(e.state),a=!1;return r.iterate({from:i.from,to:i.to,enter:s=>{(s.from>i.from||M2.test(s.name))&&(a=!0)},leave:s=>{s.to=97&&t<=122||t>=65&&t<=90}function fo(t){return t==95||t>=128||YT(t)}function j$(t){return t>=48&&t<=55||t>=97&&t<=102||t>=65&&t<=70}const n4={int:!0,integer:!0,bool:!0,boolean:!0,float:!0,double:!0,real:!0,string:!0,array:!0,object:!0,unset:!0,__proto__:null},r4=new Oe(t=>{if(t.next==40){t.advance();let e=0;for(;RT(t.peek(e));)e++;let O="",i;for(;YT(i=t.peek(e));)O+=String.fromCharCode(i),e++;for(;RT(t.peek(e));)e++;t.peek(e)==41&&n4[O.toLowerCase()]&&t.acceptToken(I2)}else if(t.next==60&&t.peek(1)==60&&t.peek(2)==60){for(let i=0;i<3;i++)t.advance();for(;t.next==32||t.next==9;)t.advance();let e=t.next==39;if(e&&t.advance(),!fo(t.next))return;let O=String.fromCharCode(t.next);for(;t.advance(),!(!fo(t.next)&&!(t.next>=48&&t.next<=55));)O+=String.fromCharCode(t.next);if(e){if(t.next!=39)return;t.advance()}if(t.next!=10&&t.next!=13)return;for(;;){let i=t.next==10||t.next==13;if(t.advance(),t.next<0)return;if(i){for(;t.next==32||t.next==9;)t.advance();let n=!0;for(let r=0;r{t.next<0&&t.acceptToken(K2)}),s4=new Oe((t,e)=>{t.next==63&&e.canShift(vT)&&t.peek(1)==62&&t.acceptToken(vT)});function o4(t){let e=t.peek(1);if(e==110||e==114||e==116||e==118||e==101||e==102||e==92||e==36||e==34||e==123)return 2;if(e>=48&&e<=55){let O=2,i;for(;O<5&&(i=t.peek(O))>=48&&i<=55;)O++;return O}if(e==120&&j$(t.peek(2)))return j$(t.peek(3))?4:3;if(e==117&&t.peek(2)==123)for(let O=3;;O++){let i=t.peek(O);if(i==125)return O==2?0:O+1;if(!j$(i))break}return 0}const l4=new Oe((t,e)=>{let O=!1;for(;!(t.next==34||t.next<0||t.next==36&&(fo(t.peek(1))||t.peek(1)==123)||t.next==123&&t.peek(1)==36);O=!0){if(t.next==92){let i=o4(t);if(i){if(O)break;return t.acceptToken(F2,i)}}else if(!O&&(t.next==91||t.next==45&&t.peek(1)==62&&fo(t.peek(2))||t.next==63&&t.peek(1)==45&&t.peek(2)==62&&fo(t.peek(3)))&&e.canShift(H2))break;t.advance()}O&&t.acceptToken(B2)}),c4=Fe({"Visibility abstract final static":f.modifier,"for foreach while do if else elseif switch try catch finally return throw break continue default case":f.controlKeyword,"endif endfor endforeach endswitch endwhile declare enddeclare goto match":f.controlKeyword,"and or xor yield unset clone instanceof insteadof":f.operatorKeyword,"function fn class trait implements extends const enum global interface use var":f.definitionKeyword,"include include_once require require_once namespace":f.moduleKeyword,"new from echo print array list as":f.keyword,null:f.null,Boolean:f.bool,VariableName:f.variableName,"NamespaceName/...":f.namespace,"NamedType/...":f.typeName,Name:f.name,"CallExpression/Name":f.function(f.variableName),"LabelStatement/Name":f.labelName,"MemberExpression/Name":f.propertyName,"MemberExpression/VariableName":f.special(f.propertyName),"ScopedExpression/ClassMemberName/Name":f.propertyName,"ScopedExpression/ClassMemberName/VariableName":f.special(f.propertyName),"CallExpression/MemberExpression/Name":f.function(f.propertyName),"CallExpression/ScopedExpression/ClassMemberName/Name":f.function(f.propertyName),"MethodDeclaration/Name":f.function(f.definition(f.variableName)),"FunctionDefinition/Name":f.function(f.definition(f.variableName)),"ClassDeclaration/Name":f.definition(f.className),UpdateOp:f.updateOperator,ArithOp:f.arithmeticOperator,"LogicOp IntersectionType/&":f.logicOperator,BitOp:f.bitwiseOperator,CompareOp:f.compareOperator,ControlOp:f.controlOperator,AssignOp:f.definitionOperator,"$ ConcatOp":f.operator,LineComment:f.lineComment,BlockComment:f.blockComment,Integer:f.integer,Float:f.float,String:f.string,ShellExpression:f.special(f.string),"=> ->":f.punctuation,"( )":f.paren,"#[ [ ]":f.squareBracket,"${ { }":f.brace,"-> ?->":f.derefOperator,", ; :: : \\":f.separator,"PhpOpen PhpClose":f.processingInstruction}),u4={__proto__:null,static:325,STATIC:325,class:351,CLASS:351},d4=tt.deserialize({version:14,states:"%$dQ`OWOOQhQaOOP%oO`OOOOO#t'#Hh'#HhO%tO#|O'#DuOOO#u'#Dx'#DxQ&SOWO'#DxO&XO$VOOOOQ#u'#Dy'#DyO&lQaO'#D}O'[QdO'#EQO+QQdO'#IrO+_QdO'#ERO-RQaO'#EXO/bQ`O'#EUO/gQ`O'#E_O2UQaO'#E_O2]Q`O'#EgO2bQ`O'#EqO-RQaO'#EqO2mQpO'#FOO2rQ`O'#FOOOQS'#Ir'#IrO2wQ`O'#ExOOQS'#Ii'#IiO5SQdO'#IfO9UQeO'#F]O-RQaO'#FlO-RQaO'#FmO-RQaO'#FnO-RQaO'#FoO-RQaO'#FoO-RQaO'#FrOOQO'#Is'#IsO9cQ`O'#FxOOQO'#Ht'#HtO9kQ`O'#HXO:VQ`O'#FsO:bQ`O'#HfO:mQ`O'#GPO:uQaO'#GQO-RQaO'#G`O-RQaO'#GcO;bOrO'#GfOOQS'#JR'#JROOQS'#JQ'#JQOOQS'#If'#IfO/bQ`O'#GmO/bQ`O'#GoO/bQ`O'#GtOhQaO'#GvO;iQ`O'#GwO;nQ`O'#GzO:]Q`O'#G}O;sQeO'#HOO;sQeO'#HPO;sQeO'#HQO;}Q`O'#HROhQ`O'#HVO:]Q`O'#HWO>mQ`O'#HWO;}Q`O'#HXO:]Q`O'#HZO:]Q`O'#H[O:]Q`O'#H]O>rQ`O'#H`O>}Q`O'#HaOQO!$gQ`O,5POOQ#u-E;h-E;hO!1TQ`O,5=tOOO#u,5:_,5:_O!1`O#|O,5:_OOO#u-E;g-E;gOOOO,5>},5>}OOQ#y1G0T1G0TO!1hQ`O1G0YO-RQaO1G0YO!2zQ`O1G0qOOQS1G0q1G0qOOQS'#Eo'#EoOOQS'#Im'#ImO-RQaO'#ImOOQS1G0r1G0rO!4^Q`O'#IpO!5sQ`O'#IrO!6QQaO'#EwOOQO'#Ip'#IpO!6[Q`O'#IoO!6dQ`O,5;aO-RQaO'#FXOOQS'#FW'#FWOOQS1G1[1G1[O!6iQdO1G1dO!8nQdO1G1dO!:ZQdO1G1dO!;vQdO1G1dO!=cQdO1G1dO!?OQdO1G1dO!@kQdO1G1dO!BWQdO1G1dO!CsQdO1G1dO!E`QdO1G1dO!F{QdO1G1dO!HhQdO1G1dO!JTQdO1G1dO!KpQdO1G1dO!M]QdO1G1dO!NxQdO1G1dOOQT1G0_1G0_O!#_Q`O,5<_O#!eQaO'#EYOOQS1G0[1G0[O#!lQ`O,5:zOEdQaO,5:zO#!qQaO,5;OO#!xQdO,5:|O#$wQdO,5?VO#&vQaO'#HmO#'WQ`O,5?UOOQS1G0e1G0eO#'`Q`O1G0eO#'eQ`O'#IlO#(}Q`O'#IlO#)VQ`O,5;SOG|QaO,5;SOOQS1G0w1G0wOOQO,5>^,5>^OOQO-E;p-E;pOOQS1G1U1G1UO#)sQdO'#FQO#+xQ`O'#HsOJ}QpO1G1UO2wQ`O'#HpO#+}QtO,5;eO2wQ`O'#HqO#,lQtO,5;gO#-ZQaO1G1OOOQS,5;h,5;hO#/jQtO'#FQO#/wQdO1G0dO-RQaO1G0dO#1dQdO1G1aO#3PQdO1G1cOOQO,5X,5>XOOQO-E;k-E;kOOQS7+&P7+&PO!+lQaO,5;TO$$mQaO'#HnO$$wQ`O,5?WOOQS1G0n1G0nO$%PQ`O1G0nPOQO'#FQ'#FQOOQO,5>_,5>_OOQO-E;q-E;qOOQS7+&p7+&pOOQS,5>[,5>[OOQS-E;n-E;nO$%UQtO,5>]OOQS-E;o-E;oO$%sQdO7+&jO$'xQtO'#FQO$(VQdO7+&OOOQS1G0j1G0jOOQO,5>a,5>aOOQO-E;s-E;sOOQ#u7+(x7+(xO!$_QdO7+(xOOQ#u7+(}7+(}O#JuQ`O7+(}O#JzQ`O7+(}OOQ#u7+(z7+(zO!.`Q`O7+(zO!1WQ`O7+(zO!1TQ`O7+(zO$)rQ`O,5j,5>jOOQS-E;|-E;|O$/]QdO7+'qO$/mQpO7+'qO$/xQdO'#IzOOQO,5qOOQ#u,5>q,5>qOOQ#u-EpOOQS-EvQdO1G2^OOQS,5>i,5>iOOQS-E;{-E;{OOQ#u7+({7+({O$@`Q`O'#GXO:]Q`O'#H_OOQO'#IW'#IWO$AVQ`O,5=xOOQ#u,5=x,5=xO$BSQ!bO'#EQO$BkQ!bO7+(}O$ByQpO7+)RO#KbQpO7+)RO$CRQ`O'#HbO!$_QdO7+)RO$CaQdO,5>sOOQS-EVOOQS-E;i-E;iO$ElQdO<Z,5>ZOOQO-E;m-E;mOOQS1G1_1G1_O$9cQaO,5:uO$HnQaO'#HlO$H{Q`O,5?ROOQS1G0`1G0`OOQS7+&Q7+&QO$ITQ`O7+&UO$JjQ`O1G0oO$LPQ`O,5>YOOQO,5>Y,5>YOOQO-E;l-E;lOOQS7+&Y7+&YOOQS7+&U7+&UOOQ#u<d,5>dOOQO-E;v-E;vOOQS<mOOQ#u-EnOOQO-EW,5>WOOQO-E;j-E;jO!+lQaO,5;UOOQ#uANBTANBTO#JuQ`OANBTOOQ#uANBQANBQO!.`Q`OANBQO!+lQaO7+'hOOQO7+'l7+'lO%.^Q`O7+'hO%/sQ`O7+'hO%0OQ`O7+'lO%0TQ`O7+'mO!+lQaO7+'mOOQO7+'m7+'mO%0cQdO'#F}OOQO'#Hw'#HwO%0tQ`O,5f,5>fOOQS-E;x-E;xOOQO1G2_1G2_O$1yQdO1G2_O$0ZQpO1G2_O#JzQ`O1G2]O!.pQdO1G2aO%%`Q!bO1G2]O!$_QdO1G2]OOQO1G2a1G2aOOQO1G2]1G2]O%4PQaO'#G]OOQO1G2b1G2bOOQSAN@xAN@xO!.`Q`OAN@xOOOQ<]O%7|Q!bO'#FQO!$_QdOANBXOOQ#uANBXANBXO:]Q`O,5=}O%8bQ`O,5=}O%8mQ`O'#IYO%9RQ`O,5?tOOQS1G3h1G3hOOQS7+)y7+)yP%+zQpOANBXO%9ZQ`O1G0pOOQ#uG27oG27oOOQ#uG27lG27lO%:pQ`O<e,5>eO%=tQ`O,5>eOOQO-E;w-E;wO%=yQ`O1G5POOQSG26VG26VO$,bQpOG26VO2wQ`OG26VO%>RQdOG26cO-RQaOG26cOOQO7+'y7+'yO$1yQdO7+'yO%%`Q!bO7+'wO!$_QdO7+'wOOQO7+'{7+'{OOQO7+'w7+'wO%>cQ`OLD+}O%?rQ`O'#IrO%?|Q`O'#IiO!$_QdO'#IPO%AvQaO,5t,5>tOOQO-Ek,5>kOOQP-E;}-E;}OOQO1G2c1G2cOOQ#uLD,kLD,kOOQTG27[G27[O!$_QdOLD-RO!$_QdO<OO%HaQ`O,5>OPOQ#uLD-_LD-_OOQO7+'o7+'oO+_QdO7+'oOOQS!$( ]!$( ]OOQOAN@}AN@}OOQS1G2d1G2dOOQS1G2e1G2eO%HlQdO1G2eOOQ#u!$(!m!$(!mOOQOANBVANBVOOQO1G3j1G3jO:]Q`O1G3jOOQO<dQdO1G1dO&@YQdO1G1dO&BOQdO1G1dO&CtQdO1G1dO&EjQdO1G1dO&G`QdO,5:|O&IUQdO,5?VO&JzQdO1G0dO#-ZQaO1G0dO&LpQdO1G1aO&NfQdO1G1cO#-ZQaO1G2VO#-ZQaO7+%tO'![QdO7+%tO'$QQdO7+&OO#-ZQaO7+'qO'%vQdO7+'qO''lQdO<`Q`O1G2VO'>hQ`O7+'qO'>pQpO7+'qO'>{QpO<WQdO1G1dO(@]QdO1G1dO(BbQdO,5:|O(DgQdO,5?VO(FlQdO1G0dO'2gQaO1G0dO(HqQdO1G1aO(JvQdO1G1cO'2gQaO1G2VO'2gQaO7+%tO(L{QdO7+%tO) QQdO7+&OO'2gQaO7+'qO)#VQdO7+'qO)%[QdO<aQdO,5rQdO1G1cOpO*JUQ`O,5>VO*KkQdO<zQ`O,5<}O+@aQ`O1G0YO!+lQaO1G0YO+AsQ`O1G1dO+CYQ`O1G1dO+DoQ`O1G1dO+FUQ`O1G1dO+GkQ`O1G1dO+IQQ`O1G1dO+JgQ`O1G1dO+K|Q`O1G1dO+McQ`O1G1dO+NxQ`O1G1dO,!_Q`O1G1dO,#tQ`O1G1dO,%ZQ`O1G1dO,&pQ`O1G1dO,(VQ`O1G1dO,)lQ`O1G0dO!+lQaO1G0dO,+RQ`O1G1aO,,hQ`O1G1cO,-}Q`O1G2VO$9cQaO,5mQ`O'#FsO!+lQaO'#EbO!+lQaO'#IkO,>uQaO,5:xO,>|QaO,5:xO$9cQaO,5;uO+2^QaO,5;uO$9cQaO,5;wO,@{QdO,5cQ`O,5SQaO,5;OO.>ZQaO,5;OO$9cQaO1G0jO+2^QaO1G0jO.@YQ`O'#IkO.AlQdO'#IkO.ERQ`O'#IfO.E`Q`O'#GPO.EhQaO,5:nO.EoQ`O,5`O~P$9cOP8QOU_O[:{Oo?}Os#fOx:{Oy:{O}aO!O^O!QaO#X`O#dhO#fbO#gcO#sdO$[<_O$d:{O$e<_O$hqO%TyO~P$9cOP8QOU_O[:{Oo?}Os#fOx:{Oy:{O}aO!O^O!QzO#X`O#dhO#fbO#gcO#sdO$[<_O$d:{O$e<_O$hqO%TxO#T#PO$R8]O$S8aO$T8bO$U8cO$V8dO$X8fO$Y8gO$Z8hO$[8iO$]8jO$^8kO$_8kO%T#cO~P!%dOT8^Oz8[O!S8_O!c8`O!w:hO#P>wO#T#PO$R8]O$S8aO$T8bO$U8cO$V8dO$X8fO$Y8gO$Z8hO$[8iO$]8jO$^8kO$_8kO%T#cO!n'_X!r'_X!o'_X#O'_X!p'_X'Q'_X~P!%dOT'YXz'YX!S'YX!c'YX!w'YX!z'YX#O'YX#T'YX#X'YX#a'YX#b'YX#y'YX$R'YX$S'YX$T'YX$U'YX$V'YX$X'YX$Y'YX$Z'YX$['YX$]'YX$^'YX$_'YX%T'YX~O#|;OO$O;PO!y'YX~P.CbO!z$hO#T?TO~O!r;]O~PeO~O!r@TO#P:{O~OT8^Oz8[O!S8_O!c8`O!r>fO!w:hO#T#PO$R8]O$S8aO$T8bO$U8cO$V8dO$X8fO$Y8gO$Z8hO$[8iO$]8jO$^8kO$_8kO%T#cO~P!%dOT8^Oz8[O!S8_O!c8`O!r>gO!w:hO#T#PO$R8]O$S8aO$T8bO$U8cO$V8dO$X8fO$Y8gO$Z8hO$[8iO$]8jO$^8kO$_8kO%T#cO~P!%dO!r@UO#P>lO~O!r@VO#P>qO~O#P>qO#T'ZO#n'XO~O#P:{O#T'ZO#n'XO~O#P>rO#T'ZO#n'XO~O#P>uO#T'ZO#n'XO~O!z$hO#T?wO~Oo?QOs$lO~O!z$hO#T?xO~O#O?ZO!n'rX!p'rX'Q'rX~O!z$hO#T@PO~O!z$hO#T@QO~O!z$hO#T@RO~Oo?uOs$lO~Oo@OOs$lO~Oo?}Os$lO~O%X$]%W$k!e$^#d%`#g'w'X#f~",goto:"%2U'}PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP(OP(VPP(](`PPP(xP(`*q(`6gP6gPP>hGOGRPP6gGX! YP! ]P! ]PPGX! l! o! sGXGXPP! vP! yPPGX!)}!0z!0zGX!1OP!1O!1O!1O!2ZP!;s!X#>_#>e#>o#>u#>{#?Z#?a#?k#?q#?w#?}#@T#@_#@i#@o#@u#APPPPPPPPP#AV#AZP#BP$)^$)a$)k$1x$2U$2k$2qP$2t$2w$2}$6U$@U$Ho$Hr$Hx$H{$IS$Lf$Li$Lr$Lz$MU$Mm$NT% O%)SPP%1U%1Y%1f%1{%2RQ!nQT!qV!rQUOR%x!mRVO}!hPVX!S!j!r!s!w%O%Q%T%V(j,U,X.z.|/U1T1U1^2e|!hPVX!S!j!r!s!w%O%Q%T%V(j,U,X.z.|/U1T1U1^2eQ%_!ZQ%h!aQ%m!eQ'k$cQ'z$iQ)f%lQ+['}Q,o)SU.T+X+Z+aQ.o+tQ/e,nS0g.Y.ZQ0w.iQ1v0]S2P0f0jQ2Y0tQ2z1xQ2}2QR3e3O|ZPVX!S!j!r!s!w%O%Q%T%V(j,U,X.z.|/U1T1U1^2e2pf]`cgjklmnoprxyz!W!X!Y!]!e!f!g!y!z#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r#}$Q$R$T$h$z%S%U%d%r%}&S&W&[&q&t&u&x'P'X'Z']'a'e'p'v'{(T(X(Y([(](^(v)V)Z)b)e)i)p)w){*X*]*^*t*y+O+P+U+]+`+b+c+n+q+u+x,^,g,i,k,m,y,|-S-d-e-x-z.P.X.[.a.b.c.g/^/s0O0T0Z0h0k1X1Y1h1q1s1w2R2T2s2{3w3y3|3}4O4R4S4T4U4V4W4X4Y4Z4[4]4^4_4`4a4b4c4d4e4h4i4j4k4l4t5X5[5]5`5d5e5h5j5k5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{6O6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6u7Y7]7^7a7e7f7i7k7l7r7s7t7x8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8c8d8e8f8g8h8i8j8k8m8n8o8p8q8|9^9a9d9g9h9j9l9o9q9x9y9|:O:P:V:W:X:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:z:{:|;O;P;Q;];n;r;s;t;w`>a>e>f>g>l>q>r>u>w>x>y>z?P?]?^?c?g?h?y?z?{@S@T@U@VS$ku$`Q%W!V^%e!_$a'j)[.k0u2WQ%i!bQ%j!cQ%k!dQ%v!kS&V!|)}Q&]#OQ'l$dQ'm$eS(O$j'hQ)U%`Q*x'nQ,O(dQ,S(fQ-W)kU.l+r.h0sQ.v,PQ.w,QQ/i,zS0].O0_Q1_/hQ1k/wS2]0y2`Q2p1fQ3_2qQ3g3TQ3h3UQ3l3`Q3o3iR3p3m0}!OPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(T(X(j(v)V)Z)p)w){)}*X*]*^+P+b,U,X,^,g,i,k-d-e-x.P.a.z.|/U/^0O0T0Z0k0y1T1U1X1Y1^1q1s1w2T2`2e2{3y4O4R4S4T4U4V4W4X4Y4Z4[4]4^4_4`4a4b4c4d4e4h4i4j4k4l4t5X5[5]5`5d5e5h5j5k5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{6O6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6u7Y7]7^7a7e7f7i7k7l7x8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8c8d8e8f8g8h8i8j8k8m8n8o8p8q8|9^9a9d9g9h9j9l9o9q9x9y9|:O:P:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:z:{:|;O;P;Q;];n;r;s;t;w`>a>e>f>g>l>q>r>u>w>x>y>z?P?g?h0|!OPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(T(X(j(v)V)Z)p)w){)}*X*]*^+P+b,U,X,^,g,i,k-d-e-x.P.a.z.|/U/^0O0T0Z0k0y1T1U1X1Y1^1q1s1w2T2`2e2{3y4O4R4S4T4U4V4W4X4Y4Z4[4]4^4_4`4a4b4c4d4e4h4i4j4k4l4t5X5[5]5`5d5e5h5j5k5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{6O6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6u7Y7]7^7a7e7f7i7k7l7x8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8c8d8e8f8g8h8i8j8k8m8n8o8p8q8|9^9a9d9g9h9j9l9o9q9x9y9|:O:P:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:z:{:|;O;P;Q;];n;r;s;t;w`>a>e>f>g>l>q>r>u>w>x>y>z?P?g?hQ#h^Q%O!PQ%P!QQ%Q!RQ,f(uQ.z,VR/O,YR&r#hQ*S&qR/|-e0}hPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(T(X(j(v)V)Z)p)w){)}*X*]*^+P+b,U,X,^,g,i,k-d-e-x.P.a.z.|/U/^0O0T0Z0k0y1T1U1X1Y1^1q1s1w2T2`2e2{3y4O4R4S4T4U4V4W4X4Y4Z4[4]4^4_4`4a4b4c4d4e4h4i4j4k4l4t5X5[5]5`5d5e5h5j5k5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{6O6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6u7Y7]7^7a7e7f7i7k7l7x8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8c8d8e8f8g8h8i8j8k8m8n8o8p8q8|9^9a9d9g9h9j9l9o9q9x9y9|:O:P:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:z:{:|;O;P;Q;];n;r;s;t;w`>a>e>f>g>l>q>r>u>w>x>y>z?P?g?hR#j_k#n`j#i#q&t&x5m5n9a:Z:[:]:^R#saT&}#r'PR-l*^R&R!{0|hPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(T(X(j(v)V)Z)p)w){)}*X*]*^+P+b,U,X,^,g,i,k-d-e-x.P.a.z.|/U/^0O0T0Z0k0y1T1U1X1Y1^1q1s1w2T2`2e2{3y4O4R4S4T4U4V4W4X4Y4Z4[4]4^4_4`4a4b4c4d4e4h4i4j4k4l4t5X5[5]5`5d5e5h5j5k5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{6O6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6u7Y7]7^7a7e7f7i7k7l7x8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8c8d8e8f8g8h8i8j8k8m8n8o8p8q8|9^9a9d9g9h9j9l9o9q9x9y9|:O:P:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:z:{:|;O;P;Q;];n;r;s;t;w`>a>e>f>g>l>q>r>u>w>x>y>z?P?g?hR#tb-z!}[#e#k#u$U$V$W$X$Y$Z$v$w%X%Z%]%a%s%|&O&U&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&v&w&|'`'b'c(g(z)x)z)|*Q*W*j*l+e+h,r,u-[-^-`-i-j-k-}._/T/a/{0V0a0l1m1p1u2S2[2h2w2x2y3P3d4f4g4m4n4o4p4q4r4s4u4v4w4x4y4z4{4|4}5O5P5Q5R5S5T5U5V5W5Y5Z5^5_5a5b5c5f5g5i5}6n6o6p6q6r6s6t6v6w6x6y6z6{6|6}7O7P7Q7R7S7T7U7V7W7X7Z7[7_7`7b7c7d7g7h7j7v7z8r8s8t8u8v8w8y8z8{8}9O9P9Q9R9S9T9U9V9W9X9Y9Z9[9]9_9`9c9e9f9m9n9p9r9s9t9u9v9w9z9{9}:Q:y;R;S;T;U;V;W;Z;[;^;_;`;a;b;c;d;e;f;g;h;i;j;k;l;m;o;p;u;v;y;{;|O>P>Q>R>S>T>U>V>W>X>Y>Z>[>]>^>_>b>c>d>h>i>j>k>m>n>o>p>s>t>v>{>|?U?V?W?`?k?lQ'd$[Y(Z$s8x;Y=g=hS(_3x7uQ(b$tR+}(cT&X!|)}#c$Pg#}$h'X'Z'p'v'{(Y(^)b)e*t*y+O+U+]+`+c+n+q+r+x,m,y,|-z.X.[.b.g.h0h0s2R3w3|3}7r7s7t8Q:V:W:X?]?^?c?y?z?{@S@T@U@V3}fPVX]`cgjklmnoprxyz!S!W!X!Y!]!e!f!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r#}$Q$R$T$h$z%O%Q%S%T%U%V%d%r%}&S&W&[&q&t&u&x'P'X'Z']'a'e'p'v'{(T(X(Y([(](^(j(v)V)Z)b)e)i)p)w){)}*X*]*^*t*y+O+P+U+]+`+b+c+n+q+r+u+x,U,X,^,g,i,k,m,y,|-S-d-e-x-z.P.X.[.a.b.c.g.h.z.|/U/^/s0O0T0Z0h0k0s0y1T1U1X1Y1^1h1q1s1w2R2T2`2e2s2{3w3y3|3}4O4R4S4T4U4V4W4X4Y4Z4[4]4^4_4`4a4b4c4d4e4h4i4j4k4l4t5X5[5]5`5d5e5h5j5k5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{6O6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6u7Y7]7^7a7e7f7i7k7l7r7s7t7x8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8c8d8e8f8g8h8i8j8k8m8n8o8p8q8|9^9a9d9g9h9j9l9o9q9x9y9|:O:P:V:W:X:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:z:{:|;O;P;Q;];n;r;s;t;w`>a>e>f>g>l>q>r>u>w>x>y>z?P?]?^?c?g?h?y?z?{@S@T@U@V[#wd#x3q3r3s3th'V#z'W)h-R-Y/p/z1l3u3v3z3{Q)g%nR-X)mY#yd%n)m3q3rV'T#x3s3t1fePVX]`cjklmnoprxyz!S!W!X!Y!]!e!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a'e(T(X([(](j(v)V)Z)i)p)w){)}*X*]*^+P+b+u,U,X,^,g,i,k-S-d-e-x.P.a.c.z.|/U/^/s0O0T0Z0k0y1T1U1X1Y1^1h1q1s1w2T2`2e2s2{3y4O4R4S4T4U4V4W4X4Y4Z4[4]4^4_4`4a4b4c4d4e4h4i4j4k4l4t5X5[5]5`5d5e5h5j5k5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{6O6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6u7Y7]7^7a7e7f7i7k7l7x8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8c8d8e8f8g8h8i8j8k8m8n8o8p8q8|9^9a9d9g9h9j9l9o9q9x9y9|:O:P:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:z:{:|;O;P;Q;];n;r;s;t;w`>a>e>f>g>l>q>r>u>w>x>y>z?P?g?hQ%o!fQ)n%r#Q4Pg#}$h'X'Z'p'v'{(Y(^)b*y+O+U+]+`+c+n+q+x,m,y,|-z.X.[.b.g0h2R7r7s7t8Q:V:W:X?]?^?c?y?z?{@S@T@U@Va4Q)e*t+r.h0s3w3|3}Y'T#z)h-Y3u3vZ*e'W-R/z3z3{0xhPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(T(X(j(v)V)Z)p)w){)}*X*]*^+P+b,U,X,^,g,i,k-d-e-x.P.a.z.|/U/^0O0T0Z0k1T1U1X1Y1^1q1s1w2T2e2{3y4O4R4S4T4U4V4W4X4Y4Z4[4]4^4_4`4a4b4c4d4e4h4i4j4k4l4t5X5[5]5`5d5e5h5j5k5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{6O6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6u7Y7]7^7a7e7f7i7k7l7x8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8c8d8e8f8g8h8i8j8k8m8n8o8p8q8|9^9a9d9g9h9j9l9o9q9x9y9|:O:P:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:z:{:|;O;P;Q;];n;r;s;t;w`>a>e>f>g>l>q>r>u>w>x>y>z?P?g?hT2^0y2`R&^#OR&]#O!r#Z[#e#u$U$V$W$X$Z$s$w%X%Z%]&`&a&b&c&d&e&f&g'`'b'c(g)x)z*Q*l+h-^._0l2S2h2y3P3d9_9`!Y4_3x4m4n4o4p4r4s4u4v4w4x4y4z4{4|5U5V5W5Y5Z5^5_5a5b5c5f5g5i!^6b4g6n6o6p6q6s6t6v6w6x6y6z6{6|6}7V7W7X7Z7[7_7`7b7c7d7g7h7j7u7v#b8e#k%a%s%|&O&v&w&|(z*W+e,r,u-[-i-k/a4f5}7z8r8s8t8u8w8x8y8}9O9P9Q9R9S9T9U9c9e9f9m9p9r9u9w9z9{9}:Q:y;[{>|?U?k?l#O:r&U)|-`-j-}0V0a1m1p1u2w2x8z8{9n9s9t9v;R;S;T;U;W;Y;Z;^;_;`;a;b;c;d;e;m;o;p;u;v;y;{;|[>]!`^>b>d>h>j>m>n>p>s>t>v?V?W?`o_>c>i>k>oS$iu#fQ$qwU'}$j$l&pQ(P$kS(R$m$rQ+_(OQ+a(QQ+d(SQ1x0]Q5|7mS6P7o7pQ6Q7qQ7y:RS7{:S:TQ7|:UQ;X?OS;q?Q?TQ;x?YQ?S?sS?X?u?wQ?_?xQ?i?|S?j?}@QS?m@O@PR?n@RT'w$h+U!csPVXt!S!j!r!s!w$h%O%Q%T%V'p(^(j)b+U+n+x,U,X,y,|.z.|/U1T1U1^2eQ$]rR*n'eQ.Q+TQ.n+sQ0[-|Q0p.eQ1t0YQ2U0qR3Q2VT0^.O0_Q+Z'|Q.Z+^R0j.^Q(a$tQ)`%iQ)u%vQ*w'mS+|(b(cQ-u*xR.u+}Q(`$tQ)d%kQ)t%vQ*s'lS*v'm)uU+{(a(b(cS-t*w*xS.t+|+}Q/n-PQ0Q-rQ0S-uR0|.uQ(_$tQ)_%iQ)a%jQ)s%vU*u'm)t)uW+z(`(a(b(cQ,x)`U-s*v*w*xU.s+{+|+}S0R-t-uS0{.t.uQ1o0SR2b0|X+v(^)b+x,|b%f!_$a'j+r.h.k0s0u2WR,v)[Q$ovS+f(U?Zg?v(^)b+m+n+q+x,y,|.f.g0rR0z.pT2_0y2`1P|PVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(T(X(j(v)V)Z)p)w){)}*X*]*^+P+b,U,X,^,g,i,k,q-d-e-x.P.a.z.|/U/^0O0T0Z0k0y1T1U1X1Y1^1q1s1w2T2`2e2{3y4O4R4S4T4U4V4W4X4Y4Z4[4]4^4_4`4a4b4c4d4e4h4i4j4k4l4t5X5[5]5`5d5e5h5j5k5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{6O6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6u7Y7]7^7a7e7f7i7k7l7x8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8c8d8e8f8g8h8i8j8k8m8n8o8p8q8|9^9a9d9g9h9j9l9o9q9x9y9|:O:P:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:z:{:|;O;P;Q;];n;r;s;t;w`>a>e>f>g>l>q>r>u>w>x>y>z?P?g?hT$y{$|Q,S(fR.w,QT${{$|Q(l%OQ(t%QQ(y%TQ(|%VQ/S,]Q1Q/OQ1R/RR2k1^R(o%PX,`(m(n,a,cR(p%PX(r%Q%T%V1^R%T!T_%b!]%S(v,g,i/^1XR%V!UR/b,kR,n)RQ)c%kS*r'l)dS-q*s-PS0P-r/nR1n0QT,{)b,|Q-T)hU/q-Q-R-YU1d/p/y/zR2v1lR/t-SR2t1hSSO!mR!oSQ!rVR%y!rQ!jPS!sV!rQ!wX[%u!j!s!w,U1U2eQ,U(jQ1U/UR2e1TQ)q%sS-])q9kR9k8{Q-f*SR/}-fQ&y#oS*Z&y9bR9b:}S*_&|&}R-m*_Q*O&YR-b*O!l'Y#|'o*h*|+R+X+i+m-{.Y.].`.f/d0f0i0m0r2Q3O6R6S6T7n7}8O8P;z;}w>xQ+e(TQ+h(XQ,r)VQ,u)ZQ-[)pQ-^)wQ-`){Q-i*XQ-j*]Q-k*^^-o4O5k7l:Py>zQ-}+PQ._+bQ/T,^Q/a,kQ/{-dQ0V-xQ0a.PQ0l.aQ1m0OQ1p0TQ1u0ZQ2S0kU2[0y2`:{Q2h1YQ2w1qQ2x1sQ2y1wQ3P2TQ3d2{Q3x4RQ4fjQ4g5nQ4m5oQ4n5qQ4o5sQ4p5uQ4q5wQ4r5yQ4s4TQ4u4VQ4v4WQ4w4XQ4x4YQ4y4ZQ4z4[Q4{4]Q4|4^Q4}4_Q5O4`Q5P4aQ5Q4bQ5R4cQ5S4dQ5T4eQ5U4hQ5V4iQ5W4jQ5Y4kQ5Z4lQ5^4tQ5_5XQ5a5[Q5b5]Q5c5`Q5f5dQ5g5eQ5i5hQ5}5{Q6n5pQ6o5rQ6p5tQ6q5vQ6r5xQ6s5zQ6t6WQ6v6YQ6w6ZQ6x6[Q6y6]Q6z6^Q6{6_Q6|6`Q6}6aQ7O6bQ7P6cQ7Q6dQ7R6eQ7S6fQ7T6gQ7U6hQ7V6iQ7W6jQ7X6kQ7Z6lQ7[6mQ7_6uQ7`7YQ7b7]Q7c7^Q7d7aQ7g7eQ7h7fQ7j7iQ7u6UQ7v5mQ7z7xQ8r8RQ8s8SQ8t8TQ8u8UQ8v8VQ8w8WQ8x8XQ8y8ZU8z,g/^1XQ8{%dQ8}8]Q9O8^Q9P8_Q9Q8`Q9R8aQ9S8bQ9T8cQ9U8dQ9V8eQ9W8fQ9X8gQ9Y8hQ9Z8iQ9[8jQ9]8kQ9_8mQ9`8nQ9c8oQ9e8pQ9f8qQ9m8|Q9n9^Q9p9dQ9r9gQ9s9hQ9t9jQ9u9lQ9v9oQ9w9qQ9z9xQ9{9yQ9}9|Q:Q:ZU:y#i&t9aQ;R:_Q;S:`Q;T:aQ;U:bQ;V:cQ;W:dQ;Y:eQ;Z:gQ;[:hQ;^:jQ;_:kQ;`:lQ;a:mQ;b:nQ;c:oQ;d:pQ;e:qQ;f:rQ;g:sQ;h:tQ;i:uQ;j:vQ;k:wQ;l:xQ;m;OQ;o;PQ;p;QQ;u;]Q;v;nQ;y;sQ;{;tQ;|;wQOP<{Q>Q<|Q>R<}Q>S=OQ>T=PQ>U=QQ>V=RQ>W=SQ>X=TQ>Y=UQ>Z=VQ>[=XQ>]=YQ>^=ZQ>_=[Q>b=]Q>c=^Q>d=_Q>h=jQ>i=kQ>j>`Q>k>aQ>m>eQ>n>fQ>o>gQ>p>lQ>s>qQ>t>rQ>v>uQ>{:]Q>|:[Q?U?PQ?V:zQ?W:|Q?`;rQ?k?gR?l?hR*T&qQ%t!gQ)Y%dT*R&q-e$WiPVX]cklmnopxyz!S!W!X!Y!j!r!s!w#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a$Q$R$T$z%O%Q%T%V%}&S&['a(X(j)w+b,U,X.a.z.|/U0k1T1U1Y1^1w2T2e2{3y4O8m8n!t5l']4R4S4T4U4V4W4X4Y4Z4[4]4^4_4`4a4b4c4d4e4h4i4j4k4l4t5X5[5]5`5d5e5h5o5q5s5u5w5y7k7l!x7w5j5k5m5n5p5r5t5v5x5z6O6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6u7Y7]7^7a7e7f7i$`:Y`j!]!g!y!z#i#l#m#q#r%S%U&q&t&u&x'P(T(v)V)Z)p*X*^,i,k-e5{7x8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8c8d8e8f8g8h8i8j8k8o8p8q8|9a9d9g9l9q9x9y9|:O:P:Z:[:]:^:h?P?g?h#n>}!|%d&W){)}*]+P,g-x.P/^0O0T0Z1X1q1s9^9h9j9o:_:`:a:b:c:d:e:f:g:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x;O;P;Q;];n;s;t;w`>e>f>l>q>r>u>w>y!]?f0y2`:{<_a>g>x>zQ#p`Q&s#iQ&{#qR*V&tS#o`#q^$Sj5m5n:Z:[:]:^S*Y&x9aT:}#i&tQ'O#rR*a'PR&T!{R&Z!|Q&Y!|R-a)}Q#|gS'^#}3wS'o$h+US*f'X3|U*h'Z*y-zQ*|'pQ+R'vQ+X'{Q+i(YW+m(^)b+x,|Q-P)eQ-r*tQ-{+OQ.Y+]Q.]+`Q.`+cU.f+n+q,yQ.k+rQ/d,mQ0f.XQ0i.[Q0m.bQ0r.gQ0u.hQ1b3}Q2Q0hQ2W0sQ3O2RQ6R7rQ6S7sQ6T7tQ7n8QQ7}:VQ8O:WQ8P:XQ;z?]Q;}?^Q`>a>e>f>g>l>q>r>u>w>x>y>z?P?g?h#b$Og#}$h'X'Z'p'v'{(Y(^)b)e*t*y+O+U+]+`+c+n+q+r+x,m,y,|-z.X.[.b.g.h0h0s2R3w3|3}7r7s7t8Q:V:W:X?]?^?c?y?z?{@S@T@U@VS$[r'eQ%l!eS%p!f%rU+j([(]+uQ-U)iQ/r-SQ0n.cQ1g/sQ2r1hR3a2s|vPVX!S!j!r!s!w%O%Q%T%V(j,U,X.z.|/U1T1U1^2e#Y#g]cklmnopxyz!W!X!Y#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a$Q$R$T$z%}&S&['a(X)w+b.a0k1Y1w2T2{3y4O8m8n`+o(^)b+n+q+x,y,|.g!t8l']4R4S4T4U4V4W4X4Y4Z4[4]4^4_4`4a4b4c4d4e4h4i4j4k4l4t5X5[5]5`5d5e5h5o5q5s5u5w5y7k7l!x=W5j5k5m5n5p5r5t5v5x5z6O6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6u7Y7]7^7a7e7f7i$`?t`j!]!g!y!z#i#l#m#q#r%S%U&q&t&u&x'P(T(v)V)Z)p*X*^,i,k-e5{7x8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8c8d8e8f8g8h8i8j8k8o8p8q8|9a9d9g9l9q9x9y9|:O:P:Z:[:]:^:h?P?g?h#n@W!|%d&W){)}*]+P,g-x.P/^0O0T0Z1X1q1s9^9h9j9o:_:`:a:b:c:d:e:f:g:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x;O;P;Q;];n;s;t;w`>e>f>l>q>r>u>w>y!]@Y0y2`:{<_a>g>x>zR'y$hQ'x$hR.R+UR$^rZ'u$h'p'v+O+UQ#d[Q%Y!WQ%[!XQ%^!YQ(W$pQ(}%WQ)O%XQ)P%ZQ)Q%]Q)X%cQ)^%gQ)f%lQ)l%qQ)r%tQ*p'iQ-Z)oQ-p*qQ.n+sQ.o+tQ.},[Q/X,dQ/Y,eQ/Z,fQ/`,jQ/c,lQ/g,tQ/v-TQ0p.eQ0w.iQ0x.mQ0z.pQ1P/QQ1`/iQ1e/qQ1v0]Q2U0qQ2Y0tQ2Z0vQ2d1SQ2l1_Q2o1dQ3Q2VQ3S2XQ3V2_Q3Y2cQ3^2nQ3b2vQ3c2yQ3f3RQ3j3[Q3k3]R3n3dR.W+YQ+k([Q+l(]R.p+uS+w(^+xT,{)b,|a+p(^)b+n+q+x,y,|.gQ%g!_Q'i$aQ*q'jQ.m+rS0v.h.kS2X0s0uR3R2WQ$pvW+s(^)b+x,|W.e+m+n+q,yS0q.f.gR2V0r|!aPVX!S!j!r!s!w%O%Q%T%V(j,U,X.z.|/U1T1U1^2eQ$ctW+t(^)b+x,|U.i+n+q,yR0t.g0|!OPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(T(X(j(v)V)Z)p)w){)}*X*]*^+P+b,U,X,^,g,i,k-d-e-x.P.a.z.|/U/^0O0T0Z0k0y1T1U1X1Y1^1q1s1w2T2`2e2{3y4O4R4S4T4U4V4W4X4Y4Z4[4]4^4_4`4a4b4c4d4e4h4i4j4k4l4t5X5[5]5`5d5e5h5j5k5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{6O6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6u7Y7]7^7a7e7f7i7k7l7x8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8c8d8e8f8g8h8i8j8k8m8n8o8p8q8|9^9a9d9g9h9j9l9o9q9x9y9|:O:P:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:z:{:|;O;P;Q;];n;r;s;t;w`>a>e>f>g>l>q>r>u>w>x>y>z?P?g?hR/f,q1P}PVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(T(X(j(v)V)Z)p)w){)}*X*]*^+P+b,U,X,^,g,i,k,q-d-e-x.P.a.z.|/U/^0O0T0Z0k0y1T1U1X1Y1^1q1s1w2T2`2e2{3y4O4R4S4T4U4V4W4X4Y4Z4[4]4^4_4`4a4b4c4d4e4h4i4j4k4l4t5X5[5]5`5d5e5h5j5k5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{6O6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6u7Y7]7^7a7e7f7i7k7l7x8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8c8d8e8f8g8h8i8j8k8m8n8o8p8q8|9^9a9d9g9h9j9l9o9q9x9y9|:O:P:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:z:{:|;O;P;Q;];n;r;s;t;w`>a>e>f>g>l>q>r>u>w>x>y>z?P?g?hT$x{$|Q(s%QQ(x%TQ({%VR2j1^Q%c!]Q(w%SQ,h(vQ/],gQ/_,iQ1W/^R2g1XQ%q!fR)o%rR/u-S",nodeNames:"⚠ ( HeredocString EscapeSequence abstract LogicOp array as Boolean break case catch clone const continue default declare do echo else elseif enddeclare endfor endforeach endif endswitch endwhile enum extends final finally fn for foreach from function global goto if implements include include_once LogicOp insteadof interface list match namespace new null LogicOp print readonly require require_once return switch throw trait try unset use var Visibility while LogicOp yield LineComment BlockComment TextInterpolation PhpClose Text PhpOpen Template TextInterpolation EmptyStatement ; } { Block : LabelStatement Name ExpressionStatement ConditionalExpression LogicOp MatchExpression ) ( ParenthesizedExpression MatchBlock MatchArm , => AssignmentExpression ArrayExpression ValueList & VariadicUnpacking ... Pair [ ] ListExpression ValueList Pair Pair SubscriptExpression MemberExpression -> ?-> Name VariableName DynamicVariable $ ${ CallExpression ArgList NamedArgument SpreadArgument CastExpression UnionType LogicOp IntersectionType OptionalType NamedType QualifiedName \\ NamespaceName Name NamespaceName Name ScopedExpression :: ClassMemberName DynamicMemberName AssignOp UpdateExpression UpdateOp YieldExpression BinaryExpression LogicOp LogicOp LogicOp BitOp BitOp BitOp CompareOp CompareOp BitOp ArithOp ConcatOp ArithOp ArithOp IncludeExpression RequireExpression CloneExpression UnaryExpression ControlOp LogicOp PrintIntrinsic FunctionExpression static ParamList Parameter #[ Attributes Attribute VariadicParameter PropertyParameter PropertyHooks PropertyHook UseList ArrowFunction NewExpression class BaseClause ClassInterfaceClause DeclarationList ConstDeclaration VariableDeclarator PropertyDeclaration VariableDeclarator MethodDeclaration UseDeclaration UseList UseInsteadOfClause UseAsClause UpdateExpression ArithOp ShellExpression ThrowExpression Integer Float String MemberExpression SubscriptExpression UnaryExpression ArithOp Interpolation String IfStatement ColonBlock SwitchStatement Block CaseStatement DefaultStatement ColonBlock WhileStatement EmptyStatement DoStatement ForStatement ForSpec SequenceExpression ForeachStatement ForSpec Pair GotoStatement ContinueStatement BreakStatement ReturnStatement TryStatement CatchDeclarator DeclareStatement EchoStatement UnsetStatement ConstDeclaration FunctionDefinition ClassDeclaration InterfaceDeclaration TraitDeclaration EnumDeclaration EnumBody EnumCase NamespaceDefinition NamespaceUseDeclaration UseGroup UseClause UseClause GlobalDeclaration FunctionStaticDeclaration Program",maxTerm:320,nodeProps:[["group",-36,2,8,49,82,84,86,89,94,95,103,107,108,112,113,116,120,126,132,137,139,140,154,155,156,157,160,161,173,174,188,190,191,192,193,194,200,"Expression",-28,75,79,81,83,201,203,208,210,211,214,217,218,219,220,221,223,224,225,226,227,228,229,230,231,234,235,239,240,"Statement",-4,121,123,124,125,"Type"],["isolate",-4,67,68,71,200,""],["openedBy",70,"phpOpen",77,"{",87,"(",102,"#["],["closedBy",72,"phpClose",78,"}",88,")",165,"]"]],propSources:[c4],skippedNodes:[0],repeatNodeCount:33,tokenData:"!GQ_R!]OX$zXY&^YZ'sZ]$z]^&^^p$zpq&^qr)Rrs+Pst+otu2buv5evw6rwx8Vxy>]yz>yz{?g{|@}|}Bb}!OCO!O!PDh!P!QKT!Q!R!!o!R![!$q![!]!,P!]!^!-a!^!_!-}!_!`!1S!`!a!2d!a!b!3t!b!c!7^!c!d!7z!d!e!9Y!e!}!7z!}#O!;b#O#P!V<%lO8VR9WV'UP%`QOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X<%lO9mQ9rV%`QOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X<%lO9mQ:^O%`QQ:aRO;'S9m;'S;=`:j;=`O9mQ:oW%`QOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X;=`<%l9m<%lO9mQ;[P;=`<%l9mR;fV'UP%`QOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRV<%l~8V~O8V~~%fR=OW'UPOY8VYZ9PZ!^8V!^!_;{!_;'S8V;'S;=`=h;=`<%l9m<%lO8VR=mW%`QOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X;=`<%l8V<%lO9mR>YP;=`<%l8VR>dV!zQ'UPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zV?QV!yU'UPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR?nY'UP$^QOY$zYZ%fZz$zz{@^{!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zR@eW$_Q'UPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zRAUY$[Q'UPOY$zYZ%fZ{$z{|At|!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zRA{V%TQ'UPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRBiV#OQ'UPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_CXZ$[Q%^W'UPOY$zYZ%fZ}$z}!OAt!O!^$z!^!_%k!_!`6U!`!aCz!a;'S$z;'S;=`&W<%lO$zVDRV#aU'UPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zVDo['UP$]QOY$zYZ%fZ!O$z!O!PEe!P!Q$z!Q![Fs![!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zVEjX'UPOY$zYZ%fZ!O$z!O!PFV!P!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zVF^V#VU'UPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRFz_'UP%XQOY$zYZ%fZ!Q$z!Q![Fs![!^$z!^!_%k!_!g$z!g!hGy!h#R$z#R#SJc#S#X$z#X#YGy#Y;'S$z;'S;=`&W<%lO$zRHO]'UPOY$zYZ%fZ{$z{|Hw|}$z}!OHw!O!Q$z!Q![Ii![!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRH|X'UPOY$zYZ%fZ!Q$z!Q![Ii![!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRIpZ'UP%XQOY$zYZ%fZ!Q$z!Q![Ii![!^$z!^!_%k!_#R$z#R#SHw#S;'S$z;'S;=`&W<%lO$zRJhX'UPOY$zYZ%fZ!Q$z!Q![Fs![!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_K[['UP$^QOY$zYZ%fZz$zz{LQ{!P$z!P!Q,o!Q!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$z_LVX'UPOYLQYZLrZzLQz{N_{!^LQ!^!_! s!_;'SLQ;'S;=`!!i<%lOLQ_LwT'UPOzMWz{Mj{;'SMW;'S;=`NX<%lOMW^MZTOzMWz{Mj{;'SMW;'S;=`NX<%lOMW^MmVOzMWz{Mj{!PMW!P!QNS!Q;'SMW;'S;=`NX<%lOMW^NXO!f^^N[P;=`<%lMW_NdZ'UPOYLQYZLrZzLQz{N_{!PLQ!P!Q! V!Q!^LQ!^!_! s!_;'SLQ;'S;=`!!i<%lOLQ_! ^V!f^'UPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_! vZOYLQYZLrZzLQz{N_{!aLQ!a!bMW!b;'SLQ;'S;=`!!i<%l~LQ~OLQ~~%f_!!lP;=`<%lLQZ!!vm'UP%WYOY$zYZ%fZ!O$z!O!PFs!P!Q$z!Q![!$q![!^$z!^!_%k!_!d$z!d!e!&o!e!g$z!g!hGy!h!q$z!q!r!(a!r!z$z!z!{!){!{#R$z#R#S!%}#S#U$z#U#V!&o#V#X$z#X#YGy#Y#c$z#c#d!(a#d#l$z#l#m!){#m;'S$z;'S;=`&W<%lO$zZ!$xa'UP%WYOY$zYZ%fZ!O$z!O!PFs!P!Q$z!Q![!$q![!^$z!^!_%k!_!g$z!g!hGy!h#R$z#R#S!%}#S#X$z#X#YGy#Y;'S$z;'S;=`&W<%lO$zZ!&SX'UPOY$zYZ%fZ!Q$z!Q![!$q![!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zZ!&tY'UPOY$zYZ%fZ!Q$z!Q!R!'d!R!S!'d!S!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zZ!'k['UP%WYOY$zYZ%fZ!Q$z!Q!R!'d!R!S!'d!S!^$z!^!_%k!_#R$z#R#S!&o#S;'S$z;'S;=`&W<%lO$zZ!(fX'UPOY$zYZ%fZ!Q$z!Q!Y!)R!Y!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zZ!)YZ'UP%WYOY$zYZ%fZ!Q$z!Q!Y!)R!Y!^$z!^!_%k!_#R$z#R#S!(a#S;'S$z;'S;=`&W<%lO$zZ!*Q]'UPOY$zYZ%fZ!Q$z!Q![!*y![!^$z!^!_%k!_!c$z!c!i!*y!i#T$z#T#Z!*y#Z;'S$z;'S;=`&W<%lO$zZ!+Q_'UP%WYOY$zYZ%fZ!Q$z!Q![!*y![!^$z!^!_%k!_!c$z!c!i!*y!i#R$z#R#S!){#S#T$z#T#Z!*y#Z;'S$z;'S;=`&W<%lO$zR!,WX!rQ'UPOY$zYZ%fZ![$z![!]!,s!]!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!,zV#yQ'UPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zV!-hV!nU'UPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!.S[$YQOY$zYZ%fZ!^$z!^!_!.x!_!`!/i!`!a*c!a!b!0]!b;'S$z;'S;=`&W<%l~$z~O$z~~%fR!/PW$ZQ'UPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zR!/pX$YQ'UPOY$zYZ%fZ!^$z!^!_%k!_!`$z!`!a*c!a;'S$z;'S;=`&W<%lO$zP!0bR!jP!_!`!0k!r!s!0p#d#e!0pP!0pO!jPP!0sQ!j!k!0y#[#]!0yP!0|Q!r!s!0k#d#e!0k_!1ZX#|Y'UPOY$zYZ%fZ!^$z!^!_%k!_!`)r!`!a!1v!a;'S$z;'S;=`&W<%lO$zV!1}V#PU'UPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!2kX$YQ'UPOY$zYZ%fZ!^$z!^!_%k!_!`!3W!`!a!.x!a;'S$z;'S;=`&W<%lO$zR!3_V$YQ'UPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!3{[!wQ'UPOY$zYZ%fZ}$z}!O!4q!O!^$z!^!_%k!_!`$z!`!a!6P!a!b!6m!b;'S$z;'S;=`&W<%lO$zV!4vX'UPOY$zYZ%fZ!^$z!^!_%k!_!`$z!`!a!5c!a;'S$z;'S;=`&W<%lO$zV!5jV#bU'UPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!6WV!h^'UPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!6tW$RQ'UPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zR!7eV$dQ'UPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!8Ta'bS'UP'XYOY$zYZ%fZ!Q$z!Q![!7z![!^$z!^!_%k!_!c$z!c!}!7z!}#R$z#R#S!7z#S#T$z#T#o!7z#o$g$z$g&j!7z&j;'S$z;'S;=`&W<%lO$z_!9ce'bS'UP'XYOY$zYZ%fZr$zrs!:tsw$zwx8Vx!Q$z!Q![!7z![!^$z!^!_%k!_!c$z!c!}!7z!}#R$z#R#S!7z#S#T$z#T#o!7z#o$g$z$g&j!7z&j;'S$z;'S;=`&W<%lO$zR!:{V'UP'wQOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zV!;iV#XU'UPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!OZ'UPOY!=yYZ!>qZ!^!=y!^!_!@y!_#O!=y#O#P!Au#P#S!=y#S#T!CP#T;'S!=y;'S;=`!Cm<%lO!=yR!>vV'UPO#O!?]#O#P!?u#P#S!?]#S#T!@n#T;'S!?];'S;=`!@s<%lO!?]Q!?`VO#O!?]#O#P!?u#P#S!?]#S#T!@n#T;'S!?];'S;=`!@s<%lO!?]Q!?xRO;'S!?];'S;=`!@R;=`O!?]Q!@UWO#O!?]#O#P!?u#P#S!?]#S#T!@n#T;'S!?];'S;=`!@s;=`<%l!?]<%lO!?]Q!@sO%UQQ!@vP;=`<%l!?]R!@|]OY!=yYZ!>qZ!a!=y!a!b!?]!b#O!=y#O#P!Au#P#S!=y#S#T!CP#T;'S!=y;'S;=`!Cm<%l~!=y~O!=y~~%fR!AzW'UPOY!=yYZ!>qZ!^!=y!^!_!@y!_;'S!=y;'S;=`!Bd;=`<%l!?]<%lO!=yR!BgWO#O!?]#O#P!?u#P#S!?]#S#T!@n#T;'S!?];'S;=`!@s;=`<%l!=y<%lO!?]R!CWV%UQ'UPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!CpP;=`<%l!=y_!CzV!p^'UPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!DjY$UQ#n['UPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`#p$z#p#q!EY#q;'S$z;'S;=`&W<%lO$zR!EaV$SQ'UPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!E}V!oQ'UPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!FkV$eQ'UPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z",tokenizers:[r4,l4,s4,0,1,2,3,a4],topRules:{Template:[0,73],Program:[1,241]},dynamicPrecedences:{299:1},specialized:[{term:285,get:(t,e)=>ZT(t)<<1,external:ZT},{term:285,get:t=>u4[t]||-1}],tokenPrec:30012}),f4=He.define({name:"php",parser:d4.configure({props:[Je.add({IfStatement:Ue({except:/^\s*({|else\b|elseif\b|endif\b)/}),TryStatement:Ue({except:/^\s*({|catch\b|finally\b)/}),SwitchBody:t=>{let e=t.textAfter,O=/^\s*\}/.test(e),i=/^\s*(case|default)\b/.test(e);return t.baseIndent+(O?0:i?1:2)*t.unit},ColonBlock:t=>t.baseIndent+t.unit,"Block EnumBody DeclarationList":FO({closing:"}"}),ArrowFunction:t=>t.baseIndent+t.unit,"String BlockComment":()=>null,Statement:Ue({except:/^({|end(for|foreach|switch|while)\b)/})}),et.add({"Block EnumBody DeclarationList SwitchBody ArrayExpression ValueList":dO,ColonBlock(t){return{from:t.from+1,to:t.to}},BlockComment(t){return{from:t.from+2,to:t.to-2}}})]}),languageData:{commentTokens:{block:{open:"/*",close:"*/"},line:"//"},indentOnInput:/^\s*(?:case |default:|end(?:if|for(?:each)?|switch|while)|else(?:if)?|\{|\})$/,wordChars:"$",closeBrackets:{stringPrefixes:["b","B"]}}});function h4(t={}){let e=[],O;if(t.baseLanguage!==null)if(t.baseLanguage)O=t.baseLanguage;else{let i=su({matchClosingTags:!1});e.push(i.support),O=i.language}return new Ke(f4.configure({wrap:O&&Nr(i=>i.type.isTop?{parser:O.parser,overlay:n=>n.name=="Text"}:null),top:t.plain?"Program":"Template"}),e)}const Q4=1,_T=194,zT=195,$4=196,UT=197,p4=198,m4=199,g4=200,P4=2,qT=3,VT=201,S4=24,X4=25,x4=49,y4=50,w4=55,T4=56,k4=57,v4=59,b4=60,Z4=61,R4=62,Y4=63,_4=65,z4=238,U4=71,q4=241,V4=242,W4=243,j4=244,C4=245,G4=246,E4=247,A4=248,WT=72,L4=249,M4=250,N4=251,I4=252,D4=253,B4=254,F4=255,H4=256,K4=73,J4=77,e8=263,t8=112,O8=130,i8=151,n8=152,r8=155,ir=10,ho=13,C$=32,Qu=9,G$=35,a8=40,s8=46,E$=123,jT=125,CT=39,GT=34,ET=92,o8=111,l8=120,c8=78,u8=117,d8=85,f8=new Set([X4,x4,y4,e8,_4,O8,T4,k4,z4,R4,Y4,WT,K4,J4,b4,Z4,i8,n8,r8,t8]);function A$(t){return t==ir||t==ho}function L$(t){return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102}const h8=new Oe((t,e)=>{let O;if(t.next<0)t.acceptToken(m4);else if(e.context.flags&$u)A$(t.next)&&t.acceptToken(p4,1);else if(((O=t.peek(-1))<0||A$(O))&&e.canShift(UT)){let i=0;for(;t.next==C$||t.next==Qu;)t.advance(),i++;(t.next==ir||t.next==ho||t.next==G$)&&t.acceptToken(UT,-i)}else A$(t.next)&&t.acceptToken($4,1)},{contextual:!0}),Q8=new Oe((t,e)=>{let O=e.context;if(O.flags)return;let i=t.peek(-1);if(i==ir||i==ho){let n=0,r=0;for(;;){if(t.next==C$)n++;else if(t.next==Qu)n+=8-n%8;else break;t.advance(),r++}n!=O.indent&&t.next!=ir&&t.next!=ho&&t.next!=G$&&(n[t,e|AT])),m8=new Jn({start:$8,reduce(t,e,O,i){return t.flags&$u&&f8.has(e)||(e==U4||e==WT)&&t.flags&AT?t.parent:t},shift(t,e,O,i){return e==_T?new pu(t,p8(i.read(i.pos,O.pos)),0):e==zT?t.parent:e==S4||e==w4||e==v4||e==qT?new pu(t,0,$u):LT.has(e)?new pu(t,0,LT.get(e)|t.flags&$u):t},hash(t){return t.hash}}),g8=new Oe(t=>{for(let e=0;e<5;e++){if(t.next!="print".charCodeAt(e))return;t.advance()}if(!/\w/.test(String.fromCharCode(t.next)))for(let e=0;;e++){let O=t.peek(e);if(!(O==C$||O==Qu)){O!=a8&&O!=s8&&O!=ir&&O!=ho&&O!=G$&&t.acceptToken(Q4);return}}}),P8=new Oe((t,e)=>{let{flags:O}=e.context,i=O&yi?GT:CT,n=(O&wi)>0,r=!(O&Ti),a=(O&ki)>0,s=t.pos;for(;!(t.next<0);)if(a&&t.next==E$)if(t.peek(1)==E$)t.advance(2);else{if(t.pos==s){t.acceptToken(qT,1);return}break}else if(r&&t.next==ET){if(t.pos==s){t.advance();let o=t.next;o>=0&&(t.advance(),S8(t,o)),t.acceptToken(P4);return}break}else if(t.next==ET&&!r&&t.peek(1)>-1)t.advance(2);else if(t.next==i&&(!n||t.peek(1)==i&&t.peek(2)==i)){if(t.pos==s){t.acceptToken(VT,n?3:1);return}break}else if(t.next==ir){if(n)t.advance();else if(t.pos==s){t.acceptToken(VT);return}break}else t.advance();t.pos>s&&t.acceptToken(g4)});function S8(t,e){if(e==o8)for(let O=0;O<2&&t.next>=48&&t.next<=55;O++)t.advance();else if(e==l8)for(let O=0;O<2&&L$(t.next);O++)t.advance();else if(e==u8)for(let O=0;O<4&&L$(t.next);O++)t.advance();else if(e==d8)for(let O=0;O<8&&L$(t.next);O++)t.advance();else if(e==c8&&t.next==E$){for(t.advance();t.next>=0&&t.next!=jT&&t.next!=CT&&t.next!=GT&&t.next!=ir;)t.advance();t.next==jT&&t.advance()}}const X8=Fe({'async "*" "**" FormatConversion FormatSpec':f.modifier,"for while if elif else try except finally return raise break continue with pass assert await yield match case":f.controlKeyword,"in not and or is del":f.operatorKeyword,"from def class global nonlocal lambda":f.definitionKeyword,import:f.moduleKeyword,"with as print":f.keyword,Boolean:f.bool,None:f.null,VariableName:f.variableName,"CallExpression/VariableName":f.function(f.variableName),"FunctionDefinition/VariableName":f.function(f.definition(f.variableName)),"ClassDefinition/VariableName":f.definition(f.className),PropertyName:f.propertyName,"CallExpression/MemberExpression/PropertyName":f.function(f.propertyName),Comment:f.lineComment,Number:f.number,String:f.string,FormatString:f.special(f.string),Escape:f.escape,UpdateOp:f.updateOperator,"ArithOp!":f.arithmeticOperator,BitOp:f.bitwiseOperator,CompareOp:f.compareOperator,AssignOp:f.definitionOperator,Ellipsis:f.punctuation,At:f.meta,"( )":f.paren,"[ ]":f.squareBracket,"{ }":f.brace,".":f.derefOperator,", ;":f.separator}),x8={__proto__:null,await:44,or:54,and:56,in:60,not:62,is:64,if:70,else:72,lambda:76,yield:94,from:96,async:102,for:104,None:162,True:164,False:164,del:178,pass:182,break:186,continue:190,return:194,raise:202,import:206,as:208,global:212,nonlocal:214,assert:218,type:223,elif:236,while:240,try:246,except:248,finally:250,with:254,def:258,class:268,match:279,case:285},y8=tt.deserialize({version:14,states:"##jQ`QeOOP$}OSOOO&WQtO'#HUOOQS'#Co'#CoOOQS'#Cp'#CpO'vQdO'#CnO*UQtO'#HTOOQS'#HU'#HUOOQS'#DU'#DUOOQS'#HT'#HTO*rQdO'#D_O+VQdO'#DfO+gQdO'#DjO+zOWO'#DuO,VOWO'#DvO.[QtO'#GuOOQS'#Gu'#GuO'vQdO'#GtO0ZQtO'#GtOOQS'#Eb'#EbO0rQdO'#EcOOQS'#Gs'#GsO0|QdO'#GrOOQV'#Gr'#GrO1XQdO'#FYOOQS'#G^'#G^O1^QdO'#FXOOQV'#IS'#ISOOQV'#Gq'#GqOOQV'#Fq'#FqQ`QeOOO'vQdO'#CqO1lQdO'#C}O1sQdO'#DRO2RQdO'#HYO2cQtO'#EVO'vQdO'#EWOOQS'#EY'#EYOOQS'#E['#E[OOQS'#E^'#E^O2wQdO'#E`O3_QdO'#EdO3rQdO'#EfO3zQtO'#EfO1XQdO'#EiO0rQdO'#ElO1XQdO'#EnO0rQdO'#EtO0rQdO'#EwO4VQdO'#EyO4^QdO'#FOO4iQdO'#EzO0rQdO'#FOO1XQdO'#FQO1XQdO'#FVO4nQdO'#F[P4uOdO'#GpPOOO)CBd)CBdOOQS'#Ce'#CeOOQS'#Cf'#CfOOQS'#Cg'#CgOOQS'#Ch'#ChOOQS'#Ci'#CiOOQS'#Cj'#CjOOQS'#Cl'#ClO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO5TQdO'#DoOOQS,5:Y,5:YO5hQdO'#HdOOQS,5:],5:]O5uQ!fO,5:]O5zQtO,59YO1lQdO,59bO1lQdO,59bO1lQdO,59bO8jQdO,59bO8oQdO,59bO8vQdO,59jO8}QdO'#HTO:TQdO'#HSOOQS'#HS'#HSOOQS'#D['#D[O:lQdO,59aO'vQdO,59aO:zQdO,59aOOQS,59y,59yO;PQdO,5:RO'vQdO,5:ROOQS,5:Q,5:QO;_QdO,5:QO;dQdO,5:XO'vQdO,5:XO'vQdO,5:VOOQS,5:U,5:UO;uQdO,5:UO;zQdO,5:WOOOW'#Fy'#FyOOOOQS'#Ds'#DsOOQS1G/w1G/wOOQS1G.|1G.|O!/[QtO1G.|O!/cQtO1G.|O1lQdO1G.|O!0OQdO1G/UOOQS'#DZ'#DZO0rQdO,59tOOQS1G.{1G.{O!0VQdO1G/eO!0gQdO1G/eO!0oQdO1G/fO'vQdO'#H[O!0tQdO'#H[O!0yQtO1G.{O!1ZQdO,59iO!2aQdO,5=zO!2qQdO,5=zO!2yQdO1G/mO!3OQtO1G/mOOQS1G/l1G/lO!3`QdO,5=uO!4VQdO,5=uO0rQdO1G/qO!4tQdO1G/sO!4yQtO1G/sO!5ZQtO1G/qOOQS1G/p1G/pOOQS1G/r1G/rOOOW-E9w-E9wOOQS1G/{1G/{O!5kQdO'#HxO0rQdO'#HxO!5|QdO,5>cOOOW-E9x-E9xOOQS1G/|1G/|OOQS-E9{-E9{O!6[Q#xO1G2zO!6{QtO1G2zO'vQdO,5kOOQS1G1`1G1`O!8RQdO1G1`OOQS'#DV'#DVO0rQdO,5=qOOQS,5=q,5=qO!8WQdO'#FrO!8cQdO,59oO!8kQdO1G/XO!8uQtO,5=uOOQS1G3`1G3`OOQS,5:m,5:mO!9fQdO'#GtOOQS,5jO!;ZQdO,5>jO1XQdO,5>jO!;lQdO,5>iOOQS-E:R-E:RO!;qQdO1G0lO!;|QdO1G0lO!lO!lO!hO!=VQdO,5>hO!=hQdO'#EpO0rQdO1G0tO!=sQdO1G0tO!=xQgO1G0zO!AvQgO1G0}O!EqQdO,5>oO!E{QdO,5>oO!FTQtO,5>oO0rQdO1G1PO!F_QdO1G1PO4iQdO1G1UO!!vQdO1G1WOOQV,5;a,5;aO!FdQfO,5;aO!FiQgO1G1QO!JjQdO'#GZO4iQdO1G1QO4iQdO1G1QO!JzQdO,5>pO!KXQdO,5>pO1XQdO,5>pOOQV1G1U1G1UO!KaQdO'#FSO!KrQ!fO1G1WO!KzQdO1G1WOOQV1G1]1G1]O4iQdO1G1]O!LPQdO1G1]O!LXQdO'#F^OOQV1G1b1G1bO!#ZQtO1G1bPOOO1G2v1G2vP!L^OSO1G2vOOQS,5=},5=}OOQS'#Dp'#DpO0rQdO,5=}O!LfQdO,5=|O!LyQdO,5=|OOQS1G/u1G/uO!MRQdO,5>PO!McQdO,5>PO!MkQdO,5>PO!NOQdO,5>PO!N`QdO,5>POOQS1G3j1G3jOOQS7+$h7+$hO!8kQdO7+$pO#!RQdO1G.|O#!YQdO1G.|OOQS1G/`1G/`OOQS,5<`,5<`O'vQdO,5<`OOQS7+%P7+%PO#!aQdO7+%POOQS-E9r-E9rOOQS7+%Q7+%QO#!qQdO,5=vO'vQdO,5=vOOQS7+$g7+$gO#!vQdO7+%PO##OQdO7+%QO##TQdO1G3fOOQS7+%X7+%XO##eQdO1G3fO##mQdO7+%XOOQS,5<_,5<_O'vQdO,5<_O##rQdO1G3aOOQS-E9q-E9qO#$iQdO7+%]OOQS7+%_7+%_O#$wQdO1G3aO#%fQdO7+%_O#%kQdO1G3gO#%{QdO1G3gO#&TQdO7+%]O#&YQdO,5>dO#&sQdO,5>dO#&sQdO,5>dOOQS'#Dx'#DxO#'UO&jO'#DzO#'aO`O'#HyOOOW1G3}1G3}O#'fQdO1G3}O#'nQdO1G3}O#'yQ#xO7+(fO#(jQtO1G2UP#)TQdO'#GOOOQS,5nQdO,5sQdO1G4OOOQS-E9y-E9yO#?^QdO1G4OO<[QdO'#H{OOOO'#D{'#D{OOOO'#F|'#F|O#?oO&jO,5:fOOOW,5>e,5>eOOOW7+)i7+)iO#?zQdO7+)iO#@SQdO1G2zO#@mQdO1G2zP'vQdO'#FuO0rQdO<mO#BQQdO,5>mOOQS1G0v1G0vOOQS<rO#KgQdO,5>rO#KrQdO,5>rO#K}QdO,5>qO#L`QdO,5>qOOQS1G1Y1G1YOOQS,5;p,5;pOOQV<VAN>VO$ oQdO<cAN>cO0rQdO1G1|O$!PQtO1G1|P$!ZQdO'#FvOOQS1G2R1G2RP$!hQdO'#F{O$!uQdO7+)jO$#`QdO,5>gOOOO-E9z-E9zOOOW<tO$4{QdO,5>tO1XQdO,5vO$)nQdO,5>vOOQS1G1p1G1pOOQS,5<[,5<[OOQU7+'P7+'PO$+zQdO1G/iO$)nQdO,5wO$8zQdO,5>wOOQS1G1s1G1sOOQS7+'S7+'SP$)nQdO'#GdO$9SQdO1G4bO$9^QdO1G4bO$9fQdO1G4bOOQS7+%T7+%TO$9tQdO1G1tO$:SQtO'#FaO$:ZQdO,5<}OOQS,5<},5<}O$:iQdO1G4cOOQS-E:a-E:aO$)nQdO,5<|O$:pQdO,5<|O$:uQdO7+)|OOQS-E:`-E:`O$;PQdO7+)|O$)nQdO,5S~O%cOS%^OSSOS%]PQ~OPdOVaOfoOhYOopOs!POvqO!PrO!Q{O!T!SO!U!RO!XZO!][O!h`O!r`O!s`O!t`O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#l!QO#o!TO#s!UO#u!VO#z!WO#}hO$P!XO%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~O%]!YO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%j![O%k!]O%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aO~Ok%xXl%xXm%xXn%xXo%xXp%xXs%xXz%xX{%xX!x%xX#g%xX%[%xX%_%xX%z%xXg%xX!T%xX!U%xX%{%xX!W%xX![%xX!Q%xX#[%xXt%xX!m%xX~P%SOfoOhYO!XZO!][O!h`O!r`O!s`O!t`O%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~Oz%wX{%wX#g%wX%[%wX%_%wX%z%wX~Ok!pOl!qOm!oOn!oOo!rOp!sOs!tO!x%wX~P)pOV!zOg!|Oo0cOv0qO!PrO~P'vOV#OOo0cOv0qO!W#PO~P'vOV#SOa#TOo0cOv0qO![#UO~P'vOQ#XO%`#XO%a#ZO~OQ#^OR#[O%`#^O%a#`O~OV%iX_%iXa%iXh%iXk%iXl%iXm%iXn%iXo%iXp%iXs%iXz%iX!X%iX!f%iX%j%iX%k%iX%l%iX%m%iX%n%iX%o%iX%p%iX%q%iX%r%iX%s%iXg%iX!T%iX!U%iX~O&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O{%iX!x%iX#g%iX%[%iX%_%iX%z%iX%{%iX!W%iX![%iX!Q%iX#[%iXt%iX!m%iX~P,eOz#dO{%hX!x%hX#g%hX%[%hX%_%hX%z%hX~Oo0cOv0qO~P'vO#g#gO%[#iO%_#iO~O%uWO~O!T#nO#u!VO#z!WO#}hO~OopO~P'vOV#sOa#tO%uWO{wP~OV#xOo0cOv0qO!Q#yO~P'vO{#{O!x$QO%z#|O#g!yX%[!yX%_!yX~OV#xOo0cOv0qO#g#SX%[#SX%_#SX~P'vOo0cOv0qO#g#WX%[#WX%_#WX~P'vOh$WO%uWO~O!f$YO!r$YO%uWO~OV$eO~P'vO!U$gO#s$hO#u$iO~O{$jO~OV$qO~P'vOS$sO%[$rO%_$rO%c$tO~OV$}Oa$}Og%POo0cOv0qO~P'vOo0cOv0qO{%SO~P'vO&Y%UO~Oa!bOh!iO!X!kO!f!mOVba_bakbalbambanbaobapbasbazba{ba!xba#gba%[ba%_ba%jba%kba%lba%mba%nba%oba%pba%qba%rba%sba%zbagba!Tba!Uba%{ba!Wba![ba!Qba#[batba!mba~On%ZO~Oo%ZO~P'vOo0cO~P'vOk0eOl0fOm0dOn0dOo0mOp0nOs0rOg%wX!T%wX!U%wX%{%wX!W%wX![%wX!Q%wX#[%wX!m%wX~P)pO%{%]Og%vXz%vX!T%vX!U%vX!W%vX{%vX~Og%_Oz%`O!T%dO!U%cO~Og%_O~Oz%gO!T%dO!U%cO!W&SX~O!W%kO~Oz%lO{%nO!T%dO!U%cO![%}X~O![%rO~O![%sO~OQ#XO%`#XO%a%uO~OV%wOo0cOv0qO!PrO~P'vOQ#^OR#[O%`#^O%a%zO~OV!qa_!qaa!qah!qak!qal!qam!qan!qao!qap!qas!qaz!qa{!qa!X!qa!f!qa!x!qa#g!qa%[!qa%_!qa%j!qa%k!qa%l!qa%m!qa%n!qa%o!qa%p!qa%q!qa%r!qa%s!qa%z!qag!qa!T!qa!U!qa%{!qa!W!qa![!qa!Q!qa#[!qat!qa!m!qa~P#yOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P%SOV&OOopOvqO{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P'vOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#g$zX%[$zX%_$zX~P'vO#g#gO%[&TO%_&TO~O!f&UOh&sX%[&sXz&sX#[&sX#g&sX%_&sX#Z&sXg&sX~Oh!iO%[&WO~Okealeameaneaoeapeaseazea{ea!xea#gea%[ea%_ea%zeagea!Tea!Uea%{ea!Wea![ea!Qea#[eatea!mea~P%SOsqazqa{qa#gqa%[qa%_qa%zqa~Ok!pOl!qOm!oOn!oOo!rOp!sO!xqa~PEcO%z&YOz%yX{%yX~O%uWOz%yX{%yX~Oz&]O{wX~O{&_O~Oz%lO#g%}X%[%}X%_%}Xg%}X{%}X![%}X!m%}X%z%}X~OV0lOo0cOv0qO!PrO~P'vO%z#|O#gUa%[Ua%_Ua~Oz&hO#g&PX%[&PX%_&PXn&PX~P%SOz&kO!Q&jO#g#Wa%[#Wa%_#Wa~Oz&lO#[&nO#g&rX%[&rX%_&rXg&rX~O!f$YO!r$YO#Z&qO%uWO~O#Z&qO~Oz&sO#g&tX%[&tX%_&tX~Oz&uO#g&pX%[&pX%_&pX{&pX~O!X&wO%z&xO~Oz&|On&wX~P%SOn'PO~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO%['UO~P'vOt'YO#p'WO#q'XOP#naV#naf#nah#nao#nas#nav#na!P#na!Q#na!T#na!U#na!X#na!]#na!h#na!r#na!s#na!t#na!{#na!}#na#P#na#R#na#T#na#X#na#Z#na#^#na#_#na#a#na#c#na#l#na#o#na#s#na#u#na#z#na#}#na$P#na%X#na%o#na%p#na%t#na%u#na&Z#na&[#na&]#na&^#na&_#na&`#na&a#na&b#na&c#na&d#na&e#na&f#na&g#na&h#na&i#na&j#na%Z#na%_#na~Oz'ZO#[']O{&xX~Oh'_O!X&wO~Oh!iO{$jO!X&wO~O{'eO~P%SO%['hO%_'hO~OS'iO%['hO%_'hO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%k!]O~P!#uO%kWi~P!#uOV!aO_!aOa!bOh!iO!X!kO!f!mO%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%m!_O%n!_O~P!&pO%mWi%nWi~P!&pOa!bOh!iO!X!kO!f!mOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%mWi%nWi%oWi%pWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~OV!aO_!aO%q!aO%r!aO%s!aO~P!)nOVWi_Wi%qWi%rWi%sWi~P!)nO!T%dO!U%cOg&VXz&VX~O%z'kO%{'kO~P,eOz'mOg&UX~Og'oO~Oz'pO{'rO!W&XX~Oo0cOv0qOz'pO{'sO!W&XX~P'vO!W'uO~Om!oOn!oOo!rOp!sOkjisjizji{ji!xji#gji%[ji%_ji%zji~Ol!qO~P!.aOlji~P!.aOk0eOl0fOm0dOn0dOo0mOp0nO~Ot'wO~P!/jOV'|Og'}Oo0cOv0qO~P'vOg'}Oz(OO~Og(QO~O!U(SO~Og(TOz(OO!T%dO!U%cO~P%SOk0eOl0fOm0dOn0dOo0mOp0nOgqa!Tqa!Uqa%{qa!Wqa![qa!Qqa#[qatqa!mqa~PEcOV'|Oo0cOv0qO!W&Sa~P'vOz(WO!W&Sa~O!W(XO~Oz(WO!T%dO!U%cO!W&Sa~P%SOV(]Oo0cOv0qO![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~P'vOz(^O![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~O![(aO~Oz(^O!T%dO!U%cO![%}a~P%SOz(dO!T%dO!U%cO![&Ta~P%SOz(gO{&lX![&lX!m&lX%z&lX~O{(kO![(mO!m(nO%z(jO~OV&OOopOvqO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~P'vOz(pO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~O!f&UOh&sa%[&saz&sa#[&sa#g&sa%_&sa#Z&sag&sa~O%[(uO~OV#sOa#tO%uWO~Oz&]O{wa~OopOvqO~P'vOz(^O#g%}a%[%}a%_%}ag%}a{%}a![%}a!m%}a%z%}a~P%SOz(zO#g%hX%[%hX%_%hX%z%hX~O%z#|O#gUi%[Ui%_Ui~O#g&Pa%[&Pa%_&Pan&Pa~P'vOz(}O#g&Pa%[&Pa%_&Pan&Pa~O%uWO#g&ra%[&ra%_&rag&ra~Oz)SO#g&ra%[&ra%_&rag&ra~Og)VO~OV)WOh$WO%uWO~O#Z)XO~O%uWO#g&ta%[&ta%_&ta~Oz)ZO#g&ta%[&ta%_&ta~Oo0cOv0qO#g&pa%[&pa%_&pa{&pa~P'vOz)^O#g&pa%[&pa%_&pa{&pa~OV)`Oa)`O%uWO~O%z)eO~Ot)hO#j)gOP#hiV#hif#hih#hio#his#hiv#hi!P#hi!Q#hi!T#hi!U#hi!X#hi!]#hi!h#hi!r#hi!s#hi!t#hi!{#hi!}#hi#P#hi#R#hi#T#hi#X#hi#Z#hi#^#hi#_#hi#a#hi#c#hi#l#hi#o#hi#s#hi#u#hi#z#hi#}#hi$P#hi%X#hi%o#hi%p#hi%t#hi%u#hi&Z#hi&[#hi&]#hi&^#hi&_#hi&`#hi&a#hi&b#hi&c#hi&d#hi&e#hi&f#hi&g#hi&h#hi&i#hi&j#hi%Z#hi%_#hi~Ot)iOP#kiV#kif#kih#kio#kis#kiv#ki!P#ki!Q#ki!T#ki!U#ki!X#ki!]#ki!h#ki!r#ki!s#ki!t#ki!{#ki!}#ki#P#ki#R#ki#T#ki#X#ki#Z#ki#^#ki#_#ki#a#ki#c#ki#l#ki#o#ki#s#ki#u#ki#z#ki#}#ki$P#ki%X#ki%o#ki%p#ki%t#ki%u#ki&Z#ki&[#ki&]#ki&^#ki&_#ki&`#ki&a#ki&b#ki&c#ki&d#ki&e#ki&f#ki&g#ki&h#ki&i#ki&j#ki%Z#ki%_#ki~OV)kOn&wa~P'vOz)lOn&wa~Oz)lOn&wa~P%SOn)pO~O%Y)tO~Ot)wO#p'WO#q)vOP#niV#nif#nih#nio#nis#niv#ni!P#ni!Q#ni!T#ni!U#ni!X#ni!]#ni!h#ni!r#ni!s#ni!t#ni!{#ni!}#ni#P#ni#R#ni#T#ni#X#ni#Z#ni#^#ni#_#ni#a#ni#c#ni#l#ni#o#ni#s#ni#u#ni#z#ni#}#ni$P#ni%X#ni%o#ni%p#ni%t#ni%u#ni&Z#ni&[#ni&]#ni&^#ni&_#ni&`#ni&a#ni&b#ni&c#ni&d#ni&e#ni&f#ni&g#ni&h#ni&i#ni&j#ni%Z#ni%_#ni~OV)zOo0cOv0qO{$jO~P'vOo0cOv0qO{&xa~P'vOz*OO{&xa~OV*SOa*TOg*WO%q*UO%uWO~O{$jO&{*YO~Oh'_O~Oh!iO{$jO~O%[*_O~O%[*aO%_*aO~OV$}Oa$}Oo0cOv0qOg&Ua~P'vOz*dOg&Ua~Oo0cOv0qO{*gO!W&Xa~P'vOz*hO!W&Xa~Oo0cOv0qOz*hO{*kO!W&Xa~P'vOo0cOv0qOz*hO!W&Xa~P'vOz*hO{*kO!W&Xa~Om0dOn0dOo0mOp0nOgjikjisjizji!Tji!Uji%{ji!Wji{ji![ji#gji%[ji%_ji!Qji#[jitji!mji%zji~Ol0fO~P!NkOlji~P!NkOV'|Og*pOo0cOv0qO~P'vOn*rO~Og*pOz*tO~Og*uO~OV'|Oo0cOv0qO!W&Si~P'vOz*vO!W&Si~O!W*wO~OV(]Oo0cOv0qO![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~P'vOz*zO!T%dO!U%cO![&Ti~Oz*}O![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~O![+OO~Oa+QOo0cOv0qO![&Ti~P'vOz*zO![&Ti~O![+SO~OV+UOo0cOv0qO{&la![&la!m&la%z&la~P'vOz+VO{&la![&la!m&la%z&la~O!]+YO&n+[O![!nX~O![+^O~O{(kO![+_O~O{(kO![+_O!m+`O~OV&OOopOvqO{%hq!x%hq#g%hq%[%hq%_%hq%z%hq~P'vOz$ri{$ri!x$ri#g$ri%[$ri%_$ri%z$ri~P%SOV&OOopOvqO~P'vOV&OOo0cOv0qO#g%ha%[%ha%_%ha%z%ha~P'vOz+aO#g%ha%[%ha%_%ha%z%ha~Oz$ia#g$ia%[$ia%_$ian$ia~P%SO#g&Pi%[&Pi%_&Pin&Pi~P'vOz+dO#g#Wq%[#Wq%_#Wq~O#[+eOz$va#g$va%[$va%_$vag$va~O%uWO#g&ri%[&ri%_&rig&ri~Oz+gO#g&ri%[&ri%_&rig&ri~OV+iOh$WO%uWO~O%uWO#g&ti%[&ti%_&ti~Oo0cOv0qO#g&pi%[&pi%_&pi{&pi~P'vO{#{Oz#eX!W#eX~Oz+mO!W&uX~O!W+oO~Ot+rO#j)gOP#hqV#hqf#hqh#hqo#hqs#hqv#hq!P#hq!Q#hq!T#hq!U#hq!X#hq!]#hq!h#hq!r#hq!s#hq!t#hq!{#hq!}#hq#P#hq#R#hq#T#hq#X#hq#Z#hq#^#hq#_#hq#a#hq#c#hq#l#hq#o#hq#s#hq#u#hq#z#hq#}#hq$P#hq%X#hq%o#hq%p#hq%t#hq%u#hq&Z#hq&[#hq&]#hq&^#hq&_#hq&`#hq&a#hq&b#hq&c#hq&d#hq&e#hq&f#hq&g#hq&h#hq&i#hq&j#hq%Z#hq%_#hq~On$|az$|a~P%SOV)kOn&wi~P'vOz+yOn&wi~Oz,TO{$jO#[,TO~O#q,VOP#nqV#nqf#nqh#nqo#nqs#nqv#nq!P#nq!Q#nq!T#nq!U#nq!X#nq!]#nq!h#nq!r#nq!s#nq!t#nq!{#nq!}#nq#P#nq#R#nq#T#nq#X#nq#Z#nq#^#nq#_#nq#a#nq#c#nq#l#nq#o#nq#s#nq#u#nq#z#nq#}#nq$P#nq%X#nq%o#nq%p#nq%t#nq%u#nq&Z#nq&[#nq&]#nq&^#nq&_#nq&`#nq&a#nq&b#nq&c#nq&d#nq&e#nq&f#nq&g#nq&h#nq&i#nq&j#nq%Z#nq%_#nq~O#[,WOz%Oa{%Oa~Oo0cOv0qO{&xi~P'vOz,YO{&xi~O{#{O%z,[Og&zXz&zX~O%uWOg&zXz&zX~Oz,`Og&yX~Og,bO~O%Y,eO~O!T%dO!U%cOg&Viz&Vi~OV$}Oa$}Oo0cOv0qOg&Ui~P'vO{,hOz$la!W$la~Oo0cOv0qO{,iOz$la!W$la~P'vOo0cOv0qO{*gO!W&Xi~P'vOz,lO!W&Xi~Oo0cOv0qOz,lO!W&Xi~P'vOz,lO{,oO!W&Xi~Og$hiz$hi!W$hi~P%SOV'|Oo0cOv0qO~P'vOn,qO~OV'|Og,rOo0cOv0qO~P'vOV'|Oo0cOv0qO!W&Sq~P'vOz$gi![$gi#g$gi%[$gi%_$gig$gi{$gi!m$gi%z$gi~P%SOV(]Oo0cOv0qO~P'vOa+QOo0cOv0qO![&Tq~P'vOz,sO![&Tq~O![,tO~OV(]Oo0cOv0qO![%}q#g%}q%[%}q%_%}qg%}q{%}q!m%}q%z%}q~P'vO{,uO~OV+UOo0cOv0qO{&li![&li!m&li%z&li~P'vOz,zO{&li![&li!m&li%z&li~O!]+YO&n+[O![!na~O{(kO![,}O~OV&OOo0cOv0qO#g%hi%[%hi%_%hi%z%hi~P'vOz-OO#g%hi%[%hi%_%hi%z%hi~O%uWO#g&rq%[&rq%_&rqg&rq~Oz-RO#g&rq%[&rq%_&rqg&rq~OV)`Oa)`O%uWO!W&ua~Oz-TO!W&ua~On$|iz$|i~P%SOV)kO~P'vOV)kOn&wq~P'vOt-XOP#myV#myf#myh#myo#mys#myv#my!P#my!Q#my!T#my!U#my!X#my!]#my!h#my!r#my!s#my!t#my!{#my!}#my#P#my#R#my#T#my#X#my#Z#my#^#my#_#my#a#my#c#my#l#my#o#my#s#my#u#my#z#my#}#my$P#my%X#my%o#my%p#my%t#my%u#my&Z#my&[#my&]#my&^#my&_#my&`#my&a#my&b#my&c#my&d#my&e#my&f#my&g#my&h#my&i#my&j#my%Z#my%_#my~O%Z-]O%_-]O~P`O#q-^OP#nyV#nyf#nyh#nyo#nys#nyv#ny!P#ny!Q#ny!T#ny!U#ny!X#ny!]#ny!h#ny!r#ny!s#ny!t#ny!{#ny!}#ny#P#ny#R#ny#T#ny#X#ny#Z#ny#^#ny#_#ny#a#ny#c#ny#l#ny#o#ny#s#ny#u#ny#z#ny#}#ny$P#ny%X#ny%o#ny%p#ny%t#ny%u#ny&Z#ny&[#ny&]#ny&^#ny&_#ny&`#ny&a#ny&b#ny&c#ny&d#ny&e#ny&f#ny&g#ny&h#ny&i#ny&j#ny%Z#ny%_#ny~Oz-aO{$jO#[-aO~Oo0cOv0qO{&xq~P'vOz-dO{&xq~O%z,[Og&zaz&za~O{#{Og&zaz&za~OV*SOa*TO%q*UO%uWOg&ya~Oz-hOg&ya~O$S-lO~OV$}Oa$}Oo0cOv0qO~P'vOo0cOv0qO{-mOz$li!W$li~P'vOo0cOv0qOz$li!W$li~P'vO{-mOz$li!W$li~Oo0cOv0qO{*gO~P'vOo0cOv0qO{*gO!W&Xq~P'vOz-pO!W&Xq~Oo0cOv0qOz-pO!W&Xq~P'vOs-sO!T%dO!U%cOg&Oq!W&Oq![&Oqz&Oq~P!/jOa+QOo0cOv0qO![&Ty~P'vOz$ji![$ji~P%SOa+QOo0cOv0qO~P'vOV+UOo0cOv0qO~P'vOV+UOo0cOv0qO{&lq![&lq!m&lq%z&lq~P'vO{(kO![-xO!m-yO%z-wO~OV&OOo0cOv0qO#g%hq%[%hq%_%hq%z%hq~P'vO%uWO#g&ry%[&ry%_&ryg&ry~OV)`Oa)`O%uWO!W&ui~Ot-}OP#m!RV#m!Rf#m!Rh#m!Ro#m!Rs#m!Rv#m!R!P#m!R!Q#m!R!T#m!R!U#m!R!X#m!R!]#m!R!h#m!R!r#m!R!s#m!R!t#m!R!{#m!R!}#m!R#P#m!R#R#m!R#T#m!R#X#m!R#Z#m!R#^#m!R#_#m!R#a#m!R#c#m!R#l#m!R#o#m!R#s#m!R#u#m!R#z#m!R#}#m!R$P#m!R%X#m!R%o#m!R%p#m!R%t#m!R%u#m!R&Z#m!R&[#m!R&]#m!R&^#m!R&_#m!R&`#m!R&a#m!R&b#m!R&c#m!R&d#m!R&e#m!R&f#m!R&g#m!R&h#m!R&i#m!R&j#m!R%Z#m!R%_#m!R~Oo0cOv0qO{&xy~P'vOV*SOa*TO%q*UO%uWOg&yi~O$S-lO%Z.VO%_.VO~OV.aOh._O!X.^O!].`O!h.YO!s.[O!t.[O%p.XO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O~Oo0cOv0qOz$lq!W$lq~P'vO{.fOz$lq!W$lq~Oo0cOv0qO{*gO!W&Xy~P'vOz.gO!W&Xy~Oo0cOv.kO~P'vOs-sO!T%dO!U%cOg&Oy!W&Oy![&Oyz&Oy~P!/jO{(kO![.nO~O{(kO![.nO!m.oO~OV*SOa*TO%q*UO%uWO~Oh.tO!f.rOz$TX#[$TX%j$TXg$TX~Os$TX{$TX!W$TX![$TX~P$-bO%o.vO%p.vOs$UXz$UX{$UX#[$UX%j$UX!W$UXg$UX![$UX~O!h.xO~Oz.|O#[/OO%j.yOs&|X{&|X!W&|Xg&|X~Oa/RO~P$)zOh.tOs&}Xz&}X{&}X#[&}X%j&}X!W&}Xg&}X![&}X~Os/VO{$jO~Oo0cOv0qOz$ly!W$ly~P'vOo0cOv0qO{*gO!W&X!R~P'vOz/ZO!W&X!R~Og&RXs&RX!T&RX!U&RX!W&RX![&RXz&RX~P!/jOs-sO!T%dO!U%cOg&Qa!W&Qa![&Qaz&Qa~O{(kO![/^O~O!f.rOh$[as$[az$[a{$[a#[$[a%j$[a!W$[ag$[a![$[a~O!h/eO~O%o.vO%p.vOs$Uaz$Ua{$Ua#[$Ua%j$Ua!W$Uag$Ua![$Ua~O%j.yOs$Yaz$Ya{$Ya#[$Ya!W$Yag$Ya![$Ya~Os&|a{&|a!W&|ag&|a~P$)nOz/jOs&|a{&|a!W&|ag&|a~O!W/mO~Og/mO~O{/oO~O![/pO~Oo0cOv0qO{*gO!W&X!Z~P'vO{/sO~O%z/tO~P$-bOz/uO#[/OO%j.yOg'PX~Oz/uOg'PX~Og/wO~O!h/xO~O#[/OOs%Saz%Sa{%Sa%j%Sa!W%Sag%Sa![%Sa~O#[/OO%j.yOs%Waz%Wa{%Wa!W%Wag%Wa~Os&|i{&|i!W&|ig&|i~P$)nOz/zO#[/OO%j.yO!['Oa~Og'Pa~P$)nOz0SOg'Pa~Oa0UO!['Oi~P$)zOz0WO!['Oi~Oz0WO#[/OO%j.yO!['Oi~O#[/OO%j.yOg$biz$bi~O%z0ZO~P$-bO#[/OO%j.yOg%Vaz%Va~Og'Pi~P$)nO{0^O~Oa0UO!['Oq~P$)zOz0`O!['Oq~O#[/OO%j.yOz%Ui![%Ui~Oa0UO~P$)zOa0UO!['Oy~P$)zO#[/OO%j.yOg$ciz$ci~O#[/OO%j.yOz%Uq![%Uq~Oz+aO#g%ha%[%ha%_%ha%z%ha~P%SOV&OOo0cOv0qO~P'vOn0hO~Oo0hO~P'vO{0iO~Ot0jO~P!/jO&]&Z&j&h&i&g&f&d&e&c&b&`&a&_&^&[%u~",goto:"!=j'QPPPPPP'RP'Z*s+[+t,_,y-fP.SP'Z.r.r'ZPPP'Z2[PPPPPP2[5PPP5PP7b7k=sPP=v>h>kPP'Z'ZPP>zPP'Z'ZPP'Z'Z'Z'Z'Z?O?w'ZP?zP@QDXGuGyPG|HWH['ZPPPH_Hk'RP'R'RP'RP'RP'RP'RP'R'R'RP'RPP'RPP'RP'RPHqH}IVPI^IdPI^PI^I^PPPI^PKrPK{LVL]KrPI^LfPI^PLmLsPLwM]MzNeLwLwNkNxLwLwLwLw! ^! d! g! l! o! y!!P!!]!!o!!u!#P!#V!#s!#y!$P!$Z!$a!$g!$y!%T!%Z!%a!%k!%q!%w!%}!&T!&Z!&e!&k!&u!&{!'U!'[!'k!'s!'}!(UPPPPPPPPPPP!([!(_!(e!(n!(x!)TPPPPPPPPPPPP!-u!/Z!3^!6oPP!6w!7W!7a!8Y!8P!8c!8i!8l!8o!8r!8z!9jPPPPPPPPPPPPPPPPP!9m!9q!9wP!:]!:a!:m!:v!;S!;j!;m!;p!;v!;|!_![!]Do!]!^Es!^!_FZ!_!`Gk!`!aHX!a!b%T!b!cIf!c!dJU!d!eK^!e!hJU!h!i!#f!i!tJU!t!u!,|!u!wJU!w!x!.t!x!}JU!}#O!0S#O#P&o#P#Q!0j#Q#R!1Q#R#SJU#S#T%T#T#UJU#U#VK^#V#YJU#Y#Z!#f#Z#fJU#f#g!,|#g#iJU#i#j!.t#j#oJU#o#p!1n#p#q!1s#q#r!2a#r#s!2f#s$g%T$g;'SJU;'S;=`KW<%lOJU`%YT&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T`%lP;=`<%l%To%v]&n`%c_OX%TXY%oY[%T[]%o]p%Tpq%oq#O%T#O#P&o#P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To&tX&n`OY%TYZ%oZ]%T]^%o^#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc'f[&n`O!_%T!_!`([!`#T%T#T#U(r#U#f%T#f#g(r#g#h(r#h#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(cTmR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(yT!mR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk)aV&n`&[ZOr%Trs)vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk){V&n`Or%Trs*bs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk*iT&n`&^ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To+PZS_&n`OY*xYZ%TZ]*x]^%T^#o*x#o#p+r#p#q*x#q#r+r#r;'S*x;'S;=`,^<%lO*x_+wTS_OY+rZ]+r^;'S+r;'S;=`,W<%lO+r_,ZP;=`<%l+ro,aP;=`<%l*xj,kV%rQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-XT!xY&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-oV%lQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.]V&n`&ZZOw%Twx.rx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.wV&n`Ow%Twx/^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/eT&n`&]ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/{ThZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc0cTgR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk0yXVZ&n`Oz%Tz{1f{!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk1mVaR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk2ZV%oZ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc2wTzR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To3_W%pZ&n`O!_%T!_!`-Q!`!a3w!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Td4OT&{S&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk4fX!fQ&n`O!O%T!O!P5R!P!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5WV&n`O!O%T!O!P5m!P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5tT!rZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti6[a!hX&n`O!Q%T!Q![6T![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S6T#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti7fZ&n`O{%T{|8X|}%T}!O8X!O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8^V&n`O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8z]!hX&n`O!Q%T!Q![8s![!l%T!l!m9s!m#R%T#R#S8s#S#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti9zT!hX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk:bX%qR&n`O!P%T!P!Q:}!Q!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj;UV%sQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti;ro!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!d%T!d!e?q!e!g%T!g!h7a!h!l%T!l!m9s!m!q%T!q!rA]!r!z%T!z!{Bq!{#R%T#R#S>_#S#U%T#U#V?q#V#X%T#X#Y7a#Y#^%T#^#_9s#_#c%T#c#dA]#d#l%T#l#mBq#m#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti=xV&n`O!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti>fc!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S>_#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti?vY&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti@mY!hX&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiAbX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBUX!hX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBv]&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiCv]!hX&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToDvV{_&n`O!_%T!_!`E]!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TcEdT%{R&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkEzT#gZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkFbXmR&n`O!^%T!^!_F}!_!`([!`!a([!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjGUV%mQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkGrV%zZ&n`O!_%T!_!`([!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkH`WmR&n`O!_%T!_!`([!`!aHx!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjIPV%nQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkIoV_Q#}P&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToJ_]&n`&YS%uZO!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoKZP;=`<%lJUoKge&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!tJU!t!uLx!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#gLx#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoMRa&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUkN_V&n`&`ZOr%TrsNts#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkNyV&n`Or%Trs! `s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! gT&n`&bZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! }V&n`&_ZOw%Twx!!dx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!!iV&n`Ow%Twx!#Ox#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!#VT&n`&aZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!#oe&n`&YS%uZOr%Trs!%Qsw%Twx!&px!Q%T!Q![JU![!c%T!c!tJU!t!u!(`!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#g!(`#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!%XV&n`&dZOr%Trs!%ns#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!%sV&n`Or%Trs!&Ys#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&aT&n`&fZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&wV&n`&cZOw%Twx!'^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!'cV&n`Ow%Twx!'xx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!(PT&n`&eZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!(ia&n`&YS%uZOr%Trs!)nsw%Twx!+^x!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!)uV&n`&hZOr%Trs!*[s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*aV&n`Or%Trs!*vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*}T&n`&jZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!+eV&n`&gZOw%Twx!+zx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,PV&n`Ow%Twx!,fx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,mT&n`&iZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!-Vi&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!dJU!d!eLx!e!hJU!h!i!(`!i!}JU!}#R%T#R#SJU#S#T%T#T#UJU#U#VLx#V#YJU#Y#Z!(`#Z#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUo!.}a&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!0ZT!XZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc!0qT!WR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj!1XV%kQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!1sO!]~k!1zV%jR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!2fO![~i!2mT%tX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T",tokenizers:[g8,Q8,h8,P8,0,1,2,3,4],topRules:{Script:[0,5]},specialized:[{term:221,get:t=>x8[t]||-1}],tokenPrec:7668}),MT=new Oc,NT=new Set(["Script","Body","FunctionDefinition","ClassDefinition","LambdaExpression","ForStatement","MatchClause"]);function mu(t){return(e,O,i)=>{if(i)return!1;let n=e.node.getChild("VariableName");return n&&O(n,t),!0}}const w8={FunctionDefinition:mu("function"),ClassDefinition:mu("class"),ForStatement(t,e,O){if(O){for(let i=t.node.firstChild;i;i=i.nextSibling)if(i.name=="VariableName")e(i,"variable");else if(i.name=="in")break}},ImportStatement(t,e){var O,i;let{node:n}=t,r=((O=n.firstChild)===null||O===void 0?void 0:O.name)=="from";for(let a=n.getChild("import");a;a=a.nextSibling)a.name=="VariableName"&&((i=a.nextSibling)===null||i===void 0?void 0:i.name)!="as"&&e(a,r?"variable":"namespace")},AssignStatement(t,e){for(let O=t.node.firstChild;O;O=O.nextSibling)if(O.name=="VariableName")e(O,"variable");else if(O.name==":"||O.name=="AssignOp")break},ParamList(t,e){for(let O=null,i=t.node.firstChild;i;i=i.nextSibling)i.name=="VariableName"&&(!O||!/\*|AssignOp/.test(O.name))&&e(i,"variable"),O=i},CapturePattern:mu("variable"),AsPattern:mu("variable"),__proto__:null};function IT(t,e){let O=MT.get(e);if(O)return O;let i=[],n=!0;function r(a,s){let o=t.sliceString(a.from,a.to);i.push({label:o,type:s})}return e.cursor(pe.IncludeAnonymous).iterate(a=>{if(a.name){let s=w8[a.name];if(s&&s(a,r,n)||!n&&NT.has(a.name))return!1;n=!1}else if(a.to-a.from>8192){for(let s of IT(t,a.node))i.push(s);return!1}}),MT.set(e,i),i}const DT=/^[\w\xa1-\uffff][\w\d\xa1-\uffff]*$/,BT=["String","FormatString","Comment","PropertyName"];function T8(t){let e=$e(t.state).resolveInner(t.pos,-1);if(BT.indexOf(e.name)>-1)return null;let O=e.name=="VariableName"||e.to-e.from<20&&DT.test(t.state.sliceDoc(e.from,e.to));if(!O&&!t.explicit)return null;let i=[];for(let n=e;n;n=n.parent)NT.has(n.name)&&(i=i.concat(IT(t.state.doc,n)));return{options:i,from:O?e.from:t.pos,validFor:DT}}const k8=["__annotations__","__builtins__","__debug__","__doc__","__import__","__name__","__loader__","__package__","__spec__","False","None","True"].map(t=>({label:t,type:"constant"})).concat(["ArithmeticError","AssertionError","AttributeError","BaseException","BlockingIOError","BrokenPipeError","BufferError","BytesWarning","ChildProcessError","ConnectionAbortedError","ConnectionError","ConnectionRefusedError","ConnectionResetError","DeprecationWarning","EOFError","Ellipsis","EncodingWarning","EnvironmentError","Exception","FileExistsError","FileNotFoundError","FloatingPointError","FutureWarning","GeneratorExit","IOError","ImportError","ImportWarning","IndentationError","IndexError","InterruptedError","IsADirectoryError","KeyError","KeyboardInterrupt","LookupError","MemoryError","ModuleNotFoundError","NameError","NotADirectoryError","NotImplemented","NotImplementedError","OSError","OverflowError","PendingDeprecationWarning","PermissionError","ProcessLookupError","RecursionError","ReferenceError","ResourceWarning","RuntimeError","RuntimeWarning","StopAsyncIteration","StopIteration","SyntaxError","SyntaxWarning","SystemError","SystemExit","TabError","TimeoutError","TypeError","UnboundLocalError","UnicodeDecodeError","UnicodeEncodeError","UnicodeError","UnicodeTranslateError","UnicodeWarning","UserWarning","ValueError","Warning","ZeroDivisionError"].map(t=>({label:t,type:"type"}))).concat(["bool","bytearray","bytes","classmethod","complex","float","frozenset","int","list","map","memoryview","object","range","set","staticmethod","str","super","tuple","type"].map(t=>({label:t,type:"class"}))).concat(["abs","aiter","all","anext","any","ascii","bin","breakpoint","callable","chr","compile","delattr","dict","dir","divmod","enumerate","eval","exec","exit","filter","format","getattr","globals","hasattr","hash","help","hex","id","input","isinstance","issubclass","iter","len","license","locals","max","min","next","oct","open","ord","pow","print","property","quit","repr","reversed","round","setattr","slice","sorted","sum","vars","zip"].map(t=>({label:t,type:"function"}))),v8=[ae("def ${name}(${params}):\n ${}",{label:"def",detail:"function",type:"keyword"}),ae("for ${name} in ${collection}:\n ${}",{label:"for",detail:"loop",type:"keyword"}),ae("while ${}:\n ${}",{label:"while",detail:"loop",type:"keyword"}),ae("try:\n ${}\nexcept ${error}:\n ${}",{label:"try",detail:"/ except block",type:"keyword"}),ae(`if \${}: `,{label:"if",detail:"block",type:"keyword"}),ae("if ${}:\n ${}\nelse:\n ${}",{label:"if",detail:"/ else block",type:"keyword"}),ae("class ${name}:\n def __init__(self, ${params}):\n ${}",{label:"class",detail:"definition",type:"keyword"}),ae("import ${module}",{label:"import",detail:"statement",type:"keyword"}),ae("from ${module} import ${names}",{label:"from",detail:"import",type:"keyword"})],b8=iu(BT,Ou(k8.concat(v8)));function M$(t){let{node:e,pos:O}=t,i=t.lineIndent(O,-1),n=null;for(;;){let r=e.childBefore(O);if(r)if(r.name=="Comment")O=r.from;else if(r.name=="Body"||r.name=="MatchBody")t.baseIndentFor(r)+t.unit<=i&&(n=r),e=r;else if(r.name=="MatchClause")e=r;else if(r.type.is("Statement"))e=r;else break;else break}return n}function N$(t,e){let O=t.baseIndentFor(e),i=t.lineAt(t.pos,-1),n=i.from+i.text.length;return/^\s*($|#)/.test(i.text)&&t.node.toO?null:O+t.unit}const I$=He.define({name:"python",parser:y8.configure({props:[Je.add({Body:t=>{var e;let O=/^\s*(#|$)/.test(t.textAfter)&&M$(t)||t.node;return(e=N$(t,O))!==null&&e!==void 0?e:t.continue()},MatchBody:t=>{var e;let O=M$(t);return(e=N$(t,O||t.node))!==null&&e!==void 0?e:t.continue()},IfStatement:t=>/^\s*(else:|elif )/.test(t.textAfter)?t.baseIndent:t.continue(),"ForStatement WhileStatement":t=>/^\s*else:/.test(t.textAfter)?t.baseIndent:t.continue(),TryStatement:t=>/^\s*(except[ :]|finally:|else:)/.test(t.textAfter)?t.baseIndent:t.continue(),MatchStatement:t=>/^\s*case /.test(t.textAfter)?t.baseIndent+t.unit:t.continue(),"TupleExpression ComprehensionExpression ParamList ArgList ParenthesizedExpression":FO({closing:")"}),"DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression":FO({closing:"}"}),"ArrayExpression ArrayComprehensionExpression":FO({closing:"]"}),MemberExpression:t=>t.baseIndent+t.unit,"String FormatString":()=>null,Script:t=>{var e;let O=M$(t);return(e=O&&N$(t,O))!==null&&e!==void 0?e:t.continue()}}),et.add({"ArrayExpression DictionaryExpression SetExpression TupleExpression":dO,Body:(t,e)=>({from:t.from+1,to:t.to-(t.to==e.doc.length?0:1)}),"String FormatString":(t,e)=>({from:e.doc.lineAt(t.from).to,to:t.to})})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"'''",'"""'],stringPrefixes:["f","fr","rf","r","u","b","br","rb","F","FR","RF","R","U","B","BR","RB"]},commentTokens:{line:"#"},indentOnInput:/^\s*([\}\]\)]|else:|elif |except |finally:|case\s+[^:]*:?)$/}});function Z8(){return new Ke(I$,[I$.data.of({autocomplete:T8}),I$.data.of({autocomplete:b8})])}const R8=1,Y8=2,_8=3,z8=4,U8=5,FT=98,q8=101,V8=102,HT=114,W8=69,gu=48,KT=46,j8=43,C8=45,JT=35,e0=34,G8=124,E8=60,A8=62;function D$(t){return t>=48&&t<=57}function Pu(t){return D$(t)||t==95}const L8=new Oe((t,e)=>{if(D$(t.next)){let O=!1;do t.advance();while(Pu(t.next));if(t.next==KT){if(O=!0,t.advance(),D$(t.next))do t.advance();while(Pu(t.next));else if(t.next==KT||t.next>127||/\w/.test(String.fromCharCode(t.next)))return}if(t.next==q8||t.next==W8){if(O=!0,t.advance(),(t.next==j8||t.next==C8)&&t.advance(),!Pu(t.next))return;do t.advance();while(Pu(t.next))}if(t.next==V8){let i=t.peek(1);if(i==gu+3&&t.peek(2)==gu+2||i==gu+6&&t.peek(2)==gu+4)t.advance(3),O=!0;else return}O&&t.acceptToken(U8)}else if(t.next==FT||t.next==HT){if(t.next==FT&&t.advance(),t.next!=HT)return;t.advance();let O=0;for(;t.next==JT;)O++,t.advance();if(t.next!=e0)return;t.advance();e:for(;;){if(t.next<0)return;let i=t.next==e0;if(t.advance(),i){for(let n=0;n{t.next==G8&&t.acceptToken(R8,1)}),N8=new Oe(t=>{t.next==E8?t.acceptToken(Y8,1):t.next==A8&&t.acceptToken(_8,1)}),I8=Fe({"const macro_rules struct union enum type fn impl trait let static":f.definitionKeyword,"mod use crate":f.moduleKeyword,"pub unsafe async mut extern default move":f.modifier,"for if else loop while match continue break return await":f.controlKeyword,"as in ref":f.operatorKeyword,"where _ crate super dyn":f.keyword,self:f.self,String:f.string,Char:f.character,RawString:f.special(f.string),Boolean:f.bool,Identifier:f.variableName,"CallExpression/Identifier":f.function(f.variableName),BoundIdentifier:f.definition(f.variableName),"FunctionItem/BoundIdentifier":f.function(f.definition(f.variableName)),LoopLabel:f.labelName,FieldIdentifier:f.propertyName,"CallExpression/FieldExpression/FieldIdentifier":f.function(f.propertyName),Lifetime:f.special(f.variableName),ScopeIdentifier:f.namespace,TypeIdentifier:f.typeName,"MacroInvocation/Identifier MacroInvocation/ScopedIdentifier/Identifier":f.macroName,"MacroInvocation/TypeIdentifier MacroInvocation/ScopedIdentifier/TypeIdentifier":f.macroName,'"!"':f.macroName,UpdateOp:f.updateOperator,LineComment:f.lineComment,BlockComment:f.blockComment,Integer:f.integer,Float:f.float,ArithOp:f.arithmeticOperator,LogicOp:f.logicOperator,BitOp:f.bitwiseOperator,CompareOp:f.compareOperator,"=":f.definitionOperator,".. ... => ->":f.punctuation,"( )":f.paren,"[ ]":f.squareBracket,"{ }":f.brace,". DerefOp":f.derefOperator,"&":f.operator,", ; ::":f.separator,"Attribute/...":f.meta}),D8={__proto__:null,self:28,super:32,crate:34,impl:46,true:72,false:72,pub:88,in:92,const:96,unsafe:104,async:108,move:110,if:114,let:118,ref:142,mut:144,_:198,else:200,match:204,as:248,return:252,await:262,break:270,continue:276,while:312,loop:316,for:320,macro_rules:327,mod:334,extern:342,struct:346,where:364,union:379,enum:382,type:390,default:395,fn:396,trait:412,use:420,static:438,dyn:476},B8=tt.deserialize({version:14,states:"$2xQ]Q_OOP$wOWOOO&sQWO'#CnO)WQWO'#I`OOQP'#I`'#I`OOQQ'#Ie'#IeO)hO`O'#C}OOQR'#Ih'#IhO)sQWO'#IuOOQO'#Hk'#HkO)xQWO'#DpOOQR'#Iw'#IwO)xQWO'#DpO*ZQWO'#DpOOQO'#Iv'#IvO,SQWO'#J`O,ZQWO'#EiOOQV'#Hp'#HpO,cQYO'#F{OOQV'#El'#ElOOQV'#Em'#EmOOQV'#En'#EnO.YQ_O'#EkO0_Q_O'#EoO2gQWOOO4QQ_O'#FPO7hQWO'#J`OOQV'#FY'#FYO7{Q_O'#F^O:WQ_O'#FaOOQO'#F`'#F`O=sQ_O'#FcO=}Q_O'#FbO@VQWO'#FgOOQO'#J`'#J`OOQV'#Io'#IoOA]Q_O'#InOEPQWO'#InOOQV'#Fw'#FwOF[QWO'#JuOFcQWO'#F|OOQO'#IO'#IOOGrQWO'#GhOOQV'#Im'#ImOOQV'#Il'#IlOOQV'#Hj'#HjQGyQ_OOOKeQ_O'#DUOKlQYO'#CqOOQP'#I_'#I_OOQV'#Hg'#HgQ]Q_OOOLuQWO'#I`ONsQYO'#DXO!!eQWO'#JuO!!lQWO'#JuO!!vQ_O'#DfO!%]Q_O'#E}O!(sQ_O'#FWO!,ZQWO'#FZO!.^QXO'#FbO!.cQ_O'#EeO!!vQ_O'#FmO!0uQWO'#FoO!0zQWO'#FoO!1PQ^O'#FqO!1WQWO'#JuO!1_QWO'#FtO!1dQWO'#FxO!2WQWO'#JjO!2_QWO'#GOO!2_QWO'#G`O!2_QWO'#GbO!2_QWO'#GsOOQO'#Ju'#JuO!2dQWO'#GhO!2lQYO'#GpO!2_QWO'#GqO!3uQ^O'#GtO!3|QWO'#GuO!4hQWO'#HOP!4sOpO'#CcPOOO)CC})CC}OOOO'#Hi'#HiO!5OO`O,59iOOQV,59i,59iO!5ZQYO,5?aOOQO-E;i-E;iOOQO,5:[,5:[OOQP,59Z,59ZO)xQWO,5:[O)xQWO,5:[O!5oQWO,5?kO!5zQYO,5;qO!6PQYO,5;TO!6hQWO,59QO!7kQXO'#CnO!7xQXO'#I`O!9SQWO'#CoO,^QWO'#EiOOQV-E;n-E;nO!9eQWO'#FsOOQV,5WQWO,5:fOOQP,5:h,5:hO!1PQ^O,5:hO!1PQ^O,5:mO$>]QYO,5gQ_O'#HsO$>tQXO,5@QOOQV1G1i1G1iOOQP,5:e,5:eO$>|QXO,5]QYO,5=vO$LRQWO'#KRO$L^QWO,5=xOOQR,5=y,5=yO$LcQWO,5=zO$>]QYO,5>PO$>]QYO,5>POOQO1G.w1G.wO$>]QYO1G.wO$LnQYO,5=pO$LvQZO,59^OOQR,59^,59^O$>]QYO,5=wO% YQZO,5=}OOQR,5=},5=}O%#lQWO1G/_O!6PQYO1G/_O#FYQYO1G2vO%#qQWO1G2vO%$PQYO1G2vOOQV1G/i1G/iO%%YQWO,5:SO%%bQ_O1G/lO%*kQWO1G1^O%+RQWO1G1hOOQO1G1h1G1hO$>]QYO1G1hO%+iQ^O'#EgOOQV1G0k1G0kOOQV1G1s1G1sO!!vQ_O1G1sO!0zQWO1G1uO!1PQ^O1G1wO!.cQ_O1G1wOOQP,5:j,5:jO$>]QYO1G/^OOQO'#Cn'#CnO%+vQWO1G1zOOQV1G2O1G2OO%,OQWO'#CnO%,WQWO1G3TO%,]QWO1G3TO%,bQYO'#GQO%,sQWO'#G]O%-UQYO'#G_O%.hQYO'#GXOOQV1G2U1G2UO%/wQWO1G2UO%/|QWO1G2UO$ARQWO1G2UOOQV1G2f1G2fO%/wQWO1G2fO#CpQWO1G2fO%0UQWO'#GdOOQV1G2h1G2hO%0gQWO1G2hO#C{QWO1G2hO%0lQYO'#GSO$>]QYO1G2lO$AdQWO1G2lOOQV1G2y1G2yO%1xQWO1G2yO%3hQ^O'#GkO%3rQWO1G2nO#DfQWO1G2nO%4QQYO,5]QYO1G2vOOQV1G2w1G2wO%5tQWO1G2wO%5yQWO1G2wO#HXQWO1G2wOOQV1G2z1G2zO.YQ_O1G2zO$>]QYO1G2zO%6RQWO1G2zOOQO,5>l,5>lOOQO-E]QYO1G3UPOOO-E;d-E;dPOOO1G.i1G.iOOQO7+*g7+*gO%7VQYO'#IcO%7nQYO'#IfO%7yQYO'#IfO%8RQYO'#IfO%8^QYO,59eOOQO7+%b7+%bOOQP7+$a7+$aO%8cQ!fO'#JTOOQS'#EX'#EXOOQS'#EY'#EYOOQS'#EZ'#EZOOQS'#JT'#JTO%;UQWO'#EWOOQS'#E`'#E`OOQS'#JR'#JROOQS'#Hn'#HnO%;ZQ!fO,5:oOOQV,5:o,5:oOOQV'#JQ'#JQO%;bQ!fO,5:{OOQV,5:{,5:{O%;iQ!fO,5:|OOQV,5:|,5:|OOQV7+'e7+'eOOQV7+&Z7+&ZO%;pQ!fO,59TOOQO,59T,59TO%>YQWO7+$WO%>_QWO1G1yOOQV1G1y1G1yO!9SQWO1G.uO%>dQWO,5?}O%>nQ_O'#HqO%@|QWO,5?}OOQO1G1X1G1XOOQO7+&}7+&}O%AUQWO,5>^OOQO-E;p-E;pO%AcQWO7+'OO.YQ_O7+'OOOQO7+'O7+'OOOQO7+'P7+'PO%AjQWO7+'POOQO7+'W7+'WOOQP1G0V1G0VO%ArQXO1G/tO!M{QWO1G/tO%BsQXO1G0RO%CkQ^O'#HlO%C{QWO,5?eOOQP1G/u1G/uO%DWQWO1G/uO%D]QWO'#D_OOQO'#Dt'#DtO%DhQWO'#DtO%DmQWO'#I{OOQO'#Iz'#IzO%DuQWO,5:_O%DzQWO'#DtO%EPQWO'#DtOOQP1G0Q1G0QOOQP1G0S1G0SOOQP1G0X1G0XO%EXQXO1G1jO%EdQXO'#FeOOQP,5>_,5>_O!1PQ^O'#FeOOQP-E;q-E;qO$>]QYO1G1jOOQO7+'S7+'SOOQO,5]QYO7+$xOOQV7+'j7+'jO%FsQWO7+(oO%FxQWO7+(oOOQV7+'p7+'pO%/wQWO7+'pO%F}QWO7+'pO%GVQWO7+'pOOQV7+(Q7+(QO%/wQWO7+(QO#CpQWO7+(QOOQV7+(S7+(SO%0gQWO7+(SO#C{QWO7+(SO$>]QYO7+(WO%GeQWO7+(WO#HUQYO7+(cO%GjQWO7+(YO#DfQWO7+(YOOQV7+(c7+(cO%5tQWO7+(cO%5yQWO7+(cO#HXQWO7+(cOOQV7+(g7+(gO$>]QYO7+(pO%GxQWO7+(pO!1dQWO7+(pOOQV7+$v7+$vO%G}QWO7+$vO%HSQZO1G3ZO%JfQWO1G4jOOQO1G4j1G4jOOQR1G.}1G.}O#.WQWO1G.}O%JkQWO'#KQOOQO'#HW'#HWO%J|QWO'#HXO%KXQWO'#KQOOQO'#KP'#KPO%KaQWO,5=qO%KfQYO'#H[O%LrQWO'#GmO%L}QYO'#CtO%MXQWO'#GmO$>]QYO1G3ZOOQR1G3g1G3gO#7aQWO1G3ZO%M^QZO1G3bO$>]QYO1G3bO& mQYO'#IVO& }QWO,5@mOOQR1G3d1G3dOOQR1G3f1G3fO.YQ_O1G3fOOQR1G3k1G3kO&!VQYO7+$cO&!_QYO'#KOOOQQ'#J}'#J}O&!gQYO1G3[O&!lQZO1G3cOOQQ7+$y7+$yO&${QWO7+$yO&%QQWO7+(bOOQV7+(b7+(bO%5tQWO7+(bO$>]QYO7+(bO#FYQYO7+(bO&%YQWO7+(bO!.cQ_O1G/nO&%hQWO7+%WO$?[QWO7+'SO&%pQWO'#EhO&%{Q^O'#EhOOQU'#Ho'#HoO&%{Q^O,5;ROOQV,5;R,5;RO&&VQWO,5;RO&&[Q^O,5;RO!0zQWO7+'_OOQV7+'a7+'aO&&iQWO7+'cO&&qQWO7+'cO&&xQWO7+$xO&'TQ!fO7+'fO&'[Q!fO7+'fOOQV7+(o7+(oO!1dQWO7+(oO&'cQYO,5]QYO'#JrOOQO'#Jq'#JqO&*YQWO,5]QYO'#GUO&,SQYO'#JkOOQQ,5]QYO7+(YO&0SQYO'#HxO&0hQYO1G2WOOQQ1G2W1G2WOOQQ,5]QYO,5]QYO7+(fO&1dQWO'#IRO&1nQWO,5@hOOQO1G3Q1G3QOOQO1G2}1G2}OOQO1G3P1G3POOQO1G3R1G3ROOQO1G3S1G3SOOQO1G3O1G3OO&1vQWO7+(pO$>]QYO,59fO&2RQ^O'#ISO&2xQYO,5?QOOQR1G/P1G/PO&3QQ!bO,5:pO&3VQ!fO,5:rOOQS-E;l-E;lOOQV1G0Z1G0ZOOQV1G0g1G0gOOQV1G0h1G0hO&3^QWO'#JTOOQO1G.o1G.oOOQV<]O&3qQWO,5>]OOQO-E;o-E;oOOQO<WOOQO-E;j-E;jOOQP7+%a7+%aO!1PQ^O,5:`O&5cQWO'#HmO&5wQWO,5?gOOQP1G/y1G/yOOQO,5:`,5:`O&6PQWO,5:`O%DzQWO,5:`O$>]QYO,5`,5>`OOQO-E;r-E;rOOQV7+'l7+'lO&6yQWO<]QYO<]QYO<]QYO<]QYO7+(uOOQO7+*U7+*UOOQR7+$i7+$iO&8cQWO,5@lOOQO'#Gm'#GmO&8kQWO'#GmO&8vQYO'#IUO&8cQWO,5@lOOQR1G3]1G3]O&:cQYO,5=vO&;rQYO,5=XO&;|QWO,5=XOOQO,5=X,5=XOOQR7+(u7+(uO&eQZO7+(|O&@tQWO,5>qOOQO-E]QYO<]QYO,5]QYO,5@^O&D^QYO'#H|O&EsQWO,5@^OOQO1G2e1G2eO%,nQWO,5]QYO,5PO&I]QYO,5@VOOQV<]QYO,5=WO&KuQWO,5@cO&K}QWO,5@cO&MvQ^O'#IPO&KuQWO,5@cOOQO1G2q1G2qO&NTQWO,5=WO&N]QWO<oO&NvQYO,5>dO' UQYO,5>dOOQQ,5>d,5>dOOQQ-E;v-E;vOOQQ7+'r7+'rO' aQYO1G2]O$>]QYO1G2^OOQV<m,5>mOOQO-EnOOQQ,5>n,5>nO'!fQYO,5>nOOQQ-EX,5>XOOQO-E;k-E;kO!1PQ^O1G/zOOQO1G/z1G/zO'%oQWO1G/zO'%tQXO1G1kO$>]QYO1G1kO'&PQWO7+'[OOQVANA`ANA`O'&ZQWOANA`O$>]QYOANA`O'&cQWOANA`OOQVAN>OAN>OO.YQ_OAN>OO'&qQWOANAuOOQVAN@vAN@vO'&vQWOAN@vOOQVANAWANAWOOQVANAYANAYOOQVANA^ANA^O'&{QWOANA^OOQVANAiANAiO%5tQWOANAiO%5yQWOANAiO''TQWOANA`OOQVANAvANAvO.YQ_OANAvO''cQWOANAvO$>]QYOANAvOOQR<pOOQO'#HY'#HYO''vQWO'#HZOOQO,5>p,5>pOOQO-E]QYO<o,5>oOOQQ-E]QYOANAhO'(bQWO1G1rO')UQ^O1G0nO.YQ_O1G0nO'*zQWO,5;UO'+RQWO1G0nP'+WQWO'#ERP&%{Q^O'#HpOOQV7+&X7+&XO'+cQWO7+&XO&&qQWOAN@iO'+hQWOAN>OO!5oQWO,5a,5>aO'+oQWOAN@lO'+tQWOAN@lOOQS-E;s-E;sOOQVAN@lAN@lO'+|QWOAN@lOOQVANAuANAuO',UQWO1G5vO',^QWO1G2dO$>]QYO1G2dO&'|QWO,5>gOOQO,5>g,5>gOOQO-E;y-E;yO',iQWO1G5xO',qQWO1G5xO&(nQYO,5>hO',|QWO,5>hO$>]QYO,5>hOOQO-E;z-E;zO'-XQWO'#JnOOQO1G2a1G2aOOQO,5>f,5>fOOQO-E;x-E;xO&'cQYO,5iOOQO,5>i,5>iOOQO-E;{-E;{OOQQ,5>c,5>cOOQQ-E;u-E;uO'.pQWO1G2sO'/QQWO1G2rO'/]QWO1G5}O'/eQ^O,5>kOOQO'#Go'#GoOOQO,5>k,5>kO'/lQWO,5>kOOQO-E;}-E;}O$>]QYO1G2rO'/zQYO7+'xO'0VQWOANAlOOQVANAlANAlO.YQ_OANAlO'0^QWOANAvOOQS7+%x7+%xO'0eQWO7+%xO'0pQ!fO7+%xO'0}QWO7+%fO!1PQ^O7+%fO'1YQXO7+'VOOQVG26zG26zO'1eQWOG26zO'1sQWOG26zO$>]QYOG26zO'1{QWOG23jOOQVG27aG27aOOQVG26bG26bOOQVG26xG26xOOQVG27TG27TO%5tQWOG27TO'2SQWOG27bOOQVG27bG27bO.YQ_OG27bO'2ZQWOG27bOOQO1G4[1G4[OOQO7+(_7+(_OOQRANA{ANA{OOQVG27SG27SO%5tQWOG27SO&0uQWOG27SO'2fQ^O7+&YO'4PQWO7+'^O'4sQ^O7+&YO.YQ_O7+&YP.YQ_O,5;SP'6PQWO,5;SP'6UQWO,5;SOOQV<]QYO1G4SO%,nQWO'#HyO'7UQWO,5@YO'7dQWO7+(VO.YQ_O7+(VOOQO1G4T1G4TOOQO1G4V1G4VO'7nQWO1G4VO'7|QWO7+(^OOQVG27WG27WO'8XQWOG27WOOQS<e,5>eOOQO-E;w-E;wO'?rQWO<wD_DpPDvHQPPPPPPK`P! P! _PPPPP!!VP!$oP!$oPP!&oP!(rP!(w!)n!*f!*f!*f!(w!+]P!(w!.Q!.TPP!.ZP!(w!(w!(w!(wP!(w!(wP!(w!(w!.y!/dP!/dJ}J}J}PPPP!/d!.y!/sPP!$oP!0^!0a!0g!1h!1t!3t!3t!5r!7t!1t!1t!9p!;_!=O!>k!@U!Am!CS!De!1t!1tP!1tP!1t!1t!Et!1tP!Ge!1t!1tP!Ie!1tP!1t!7t!7t!1t!7t!1t!Kl!Mt!Mw!7t!1t!Mz!M}!M}!M}!NR!$oP!$oP!$oP! P! PP!N]! P! PP!Ni# }! PP! PP#!^##c##k#$Z#$_#$e#$e#$mP#&s#&s#&y#'o#'{! PP! PP#(]#(l! PP! PPP#(x#)W#)d#)|#)^! P! PP! P! P! PP#*S#*S#*Y#*`#*S#*S! P! PP#*m#*v#+Q#+Q#,x#.l#.x#.x#.{#.{5a5a5a5a5a5a5a5aP5a#/O#/U#/p#1{#2R#2b#6^#6d#6j#6|#7W#8w#9R#9b#9h#9n#9x#:S#:Y#:g#:m#:s#:}#;]#;g#=u#>R#>`#>f#>n#>u#?PPPPPPPP#?V#BaP#F^#Jx#Ls#Nr$&^P$&aPPP$)_$)h$)z$/U$1d$1m$3fP!(w$4`$7r$:i$>T$>^$>c$>fPPP$>i$A`$A|P$BaPPPPPPPPPP$BvP$EU$EX$E[$Eb$Ee$Eh$Ek$En$Et$HO$HR$HU$HX$H[$H_$Hb$He$Hh$Hk$Hn$Jt$Jw$Jz#*S$KW$K^$Ka$Kd$Kh$Kl$Ko$KrQ!tPT'V!s'Wi!SOlm!P!T$T$W$y%b)U*f/gQ'i#QR,n'l(OSOY[bfgilmop!O!P!T!Y!Z![!_!`!c!p!q!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r$y%X%_%b&U&Y&[&b&u&z&|'P'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n+z,q,s,z-R-T-g-m-t.}/^/b/d/g0e0g0m0}1P1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f:gS(z$v-oQ*p&eQ*t&hQ-k(yQ-y)ZW0Z+Q0Y4Z7UR4Y0[&w!RObfgilmop!O!P!T!Y!Z![!_!`!c!p#Q#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r$y%_%b&U&Y&[&b&u'l'}(W(Y(b(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,s,z-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f#r]Ofgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9hb#[b#Q$y'l(b)S)U*Z-t!h$bo!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m$b%k!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g!W:y!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR:|%n$_%u!Q!n$O$u%o%p%q&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g$e%l!Q!n$O$u%n%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g'hZOY[fgilmop!O!P!T!Y!Z![!_!`!c!p!|!}#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r%_%b%i%j&U&Y&[&b&u'a'}(W(Y(d(e(f(j(o(p(r(|)i)p)q*f*i*k*l+Z+n,s,z-R-T-g-m.i.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:`:a:e:f:g:t:u:x$^%l!Q!n$O$u%n%o%p%q%y%{&P&p&r(q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gQ&j!hQ&k!iQ&l!jQ&m!kQ&s!oQ)[%QQ)]%RQ)^%SQ)_%TQ)b%WQ+`&oS,R']1ZQ.W)`S/r*u4TR4n0s+yTOY[bfgilmop!O!P!Q!T!Y!Z![!_!`!c!n!p!q!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$O$T$W$`$a$e$g$h$q$r$u$y%X%_%b%i%j%n%o%p%q%y%{&P&U&Y&[&b&o&p&r&u&z&|'P']'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(q(r(|)S)U)i)p)q)s)x)y*O*P*R*V*Z*[*^*e*f*i*k*l*n*w*x+U+V+Z+h+n+o+z+},q,s,z-R-T-g-i-m-t-v.U.`.i.p.t.x.y.}/Z/[/^/b/d/g/{/}0`0e0g0m0r0w0}1O1P1Y1Z1h1r1y1|2a2h2j2m2s2v3V3_3a3f3h3k3u3{3|4R4U4W4_4c4e4h4t4v4|5[5`5d5g5t5v6R6Y6]6a6p6v6x7S7^7c7g7m7r7{8W8X8g8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:`:a:e:f:g:t:u:xQ'[!xQ'h#PQ)l%gU)r%m*T*WR.f)kQ,T']R5P1Z#t%s!Q!n$O$u%p%q&P&p&r(q)x)y*O*R*V*[*^*e*n*w+V+h+o+}-i-v.U.`.t.x.y/Z/[/{/}0`0r0w1O1Y1y2a2h2j2m2v3V3u3{3|4U4e4t5`5d5v6R6Y6p6v6x7c7r8gQ)x%oQ+_&oQ,U']n,^'b'c'd,c,f,h,l/m/n1_3n3q5T5U7kS.q)s2sQ/O*PQ/Q*SQ/q*uS0Q*x4RQ0a+U[0o+Z.j0g4h5y7^Q2v.pS4d0e2rQ4m0sQ5Q1ZQ6T3RQ6z4PQ7O4TQ7X4_R9Y8h&jVOfgilmop!O!P!T!Y!Z![!_!`!c!p#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r%_%b&U&Y&[&b&u']'}(W(Y(b(f(j(o(p(r(|)i*f*i*k*l+Z+n,s,z-T-g-m.}/^/b/d/g0e0g0m0}1Z1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fU&g!g%P%[o,^'b'c'd,c,f,h,l/m/n1_3n3q5T5U7k$nsOfgilm!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y'}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9z9{:O:P:Q:R:S:T:U:V:W:X:Y:eS$tp9xS&O!W#bS&Q!X#cQ&`!bQ*_&RQ*a&VS*d&[:fQ*h&^Q,T']Q-j(wQ/i*jQ0p+[S2f.X0qQ3]/_Q3^/`Q3g/hQ3i/kQ5P1ZU5b2R2g4lU7o5c5e5rQ8]6dS8u7p7qS9_8v8wR9i9`i{Ob!O!P!T$y%_%b)S)U)i-thxOb!O!P!T$y%_%b)S)U)i-tW/v*v/t3w6qQ/}*wW0[+Q0Y4Z7UQ3{/{Q6x3|R8g6v!h$do!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mQ&d!dQ&f!fQ&n!mW&x!q%X&|1PQ'S!rQ)X$}Q)Y%OQ)a%VU)d%Y'T'UQ*s&hS+s&z'PS-Y(k1sQ-u)WQ-x)ZS.a)e)fS0x+c/sQ1S+zQ1W+{S1v-_-`Q2k.bQ3s/pQ5]1xR5h2V${sOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f$zsOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR3]/_V&T!Y!`*i!i$lo!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m!k$^o!c!p$e$g$h$q$r&U&b&u(b(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m!i$co!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m&e^Ofgilmop!O!P!T!Y!Z![!_!`!c!p#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r%_%b&U&Y&[&b&u'}(W(Y(f(j(o(p(r(|)i*f*i*k*l+Z+n,s,z-T-g-m.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR(l$fQ-[(kR5Y1sQ(S#|S({$v-oS-Z(k1sQ-l(yW/u*v/t3w6qS1w-_-`Q3v/vR5^1xQ'e#Or,e'b'c'd'j'p)u,c,f,h,l/m/n1_3n3q5U6fR,o'mk,a'b'c'd,c,f,h,l/m/n1_3n3q5UQ'f#Or,e'b'c'd'j'p)u,c,f,h,l/m/n1_3n3q5U6fR,p'mR*g&]X/c*f/d/g3f!}aOb!O!P!T#z$v$y%_%b'}(y)S)U)i)s*f*v*w+Q+Z,s-o-t.j/b/d/g/t/{0Y0g1h2s3f3w3|4Z4h5y6a6q6v7U7^Q3`/aQ6_3bQ8Y6`R9V8Z${rOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f#nfOfglmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h!T9u!Y!_!`*i*l/^3h9u9v9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:e:f#rfOfgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h!X9u!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f$srOfglmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:e:f#U#oh#d$P$Q$V$s%^&W&X'q't'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9b}:P&S&]/k3[6d:[:]:c:d:h:j:k:l:m:n:o:p:q:r:v:w:{#W#ph#d$P$Q$V$s%^&W&X'q'r't'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9b!P:Q&S&]/k3[6d:[:]:c:d:h:i:j:k:l:m:n:o:p:q:r:v:w:{#S#qh#d$P$Q$V$s%^&W&X'q'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9b{:R&S&]/k3[6d:[:]:c:d:h:k:l:m:n:o:p:q:r:v:w:{#Q#rh#d$P$Q$V$s%^&W&X'q'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9by:S&S&]/k3[6d:[:]:c:d:h:l:m:n:o:p:q:r:v:w:{#O#sh#d$P$Q$V$s%^&W&X'q'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bw:T&S&]/k3[6d:[:]:c:d:h:m:n:o:p:q:r:v:w:{!|#th#d$P$Q$V$s%^&W&X'q'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bu:U&S&]/k3[6d:[:]:c:d:h:n:o:p:q:r:v:w:{!x#vh#d$P$Q$V$s%^&W&X'q'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bq:W&S&]/k3[6d:[:]:c:d:h:p:q:r:v:w:{!v#wh#d$P$Q$V$s%^&W&X'q'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bo:X&S&]/k3[6d:[:]:c:d:h:q:r:v:w:{$]#{h#`#d$P$Q$V$s%^&S&W&X&]'q'r's't'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n/k0z1i1l1}3P3[4w5V5a6^6d6e7R7e7h7s7y8j8q8{9[9b:[:]:c:d:h:i:j:k:l:m:n:o:p:q:r:v:w:{${jOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f$v!aOfgilmp!O!P!T!Y!Z!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ&Y![Q&Z!]R:e9{#rpOfgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9hQ&[!^!W9x!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR:f:zR$moR-f(rR$wqT(}$v-oQ/f*fS3d/d/gR6c3fQ3m/mQ3p/nQ6i3nR6l3qQ$zwQ)V${Q*q&fQ+f&qQ+i&sQ-w)YW.Z)b+j+k+lS/X*]+gW2b.W.[.].^U3W/Y/]0yU5o2c2d2eS6W3X3ZS7w5p5qS8Q6V6XQ8y7xS8}8R8SR9c9O^|O!O!P!T%_%b)iX)R$y)S)U-tQ&r!nQ*^&PQ*|&jQ+P&kQ+T&lQ+W&mQ+]&nQ+l&sQ-})[Q.Q)]Q.T)^Q.V)_Q.Y)aQ.^)bQ2S-uQ2e.WR4U0VU+a&o*u4TR4o0sQ+Y&mQ+k&sS.])b+l^0v+_+`/q/r4m4n7OS2d.W.^S4Q0R0SR5q2eS0R*x4RQ0a+UR7X4_U+d&o*u4TR4p0sQ*z&jQ+O&kQ+S&lQ+g&qQ+j&sS-{)[*|S.P)]+PS.S)^+TU.[)b+k+lQ/Y*]Q0X*{Q0q+[Q2X-|Q2Y-}Q2].QQ2_.TU2c.W.].^Q2g.XS3Z/]0yS5c2R4lQ5j2ZS5p2d2eQ6X3XS7q5e5rQ7x5qQ8R6VQ8v7pQ9O8SR9`8wQ0T*xR6|4RQ*y&jQ*}&kU-z)[*z*|U.O)]+O+PS2W-{-}S2[.P.QQ4X0ZQ5i2YQ5k2]R7T4YQ/w*vQ3t/tQ6r3wR8d6qQ*{&jS-|)[*|Q2Z-}Q4X0ZR7T4YQ+R&lU.R)^+S+TS2^.S.TR5l2_Q0]+QQ4V0YQ7V4ZR8l7UQ+[&nS.X)a+]S2R-u.YR5e2SQ0i+ZQ4f0gQ7`4hR8m7^Q.m)sQ0i+ZQ2p.jQ4f0gQ5|2sQ7`4hQ7}5yR8m7^Q0i+ZR4f0gX'O!q%X&|1PX&{!q%X&|1PW'O!q%X&|1PS+u&z'PR1U+z_|O!O!P!T%_%b)iQ%a!PS)h%_%bR.d)i$^%u!Q!n$O$u%o%p%q&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gQ*U%yR*X%{$c%n!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gW)t%m%x*T*WQ.e)jR2{.vR.m)sR5|2sQ'W!sR,O'WQ!TOQ$TlQ$WmQ%b!P[%|!T$T$W%b)U/gQ)U$yR/g*f$b%i!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g[)n%i)p.i:`:t:xQ)p%jQ.i)qQ:`%nQ:t:aR:x:uQ!vUR'Y!vS!OO!TU%]!O%_)iQ%_!PR)i%b#rYOfgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9hh!yY!|#U$`'a'n(d,q-R9s9|:gQ!|[b#Ub#Q$y'l(b)S)U*Z-t!h$`o!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mQ'a!}Q'n#ZQ(d$aQ,q'oQ-R(e!W9s!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ9|9tR:g9}Q-U(gR1p-UQ1t-[R5Z1tQ,c'bQ,f'cQ,h'dW1`,c,f,h5UR5U1_Q/d*fS3c/d3fR3f/gfbO!O!P!T$y%_%b)S)U)i-tp#Wb'}(y.j/b/t/{0Y0g1h5y6a6q6v7U7^Q'}#zS(y$v-oQ.j)sW/b*f/d/g3fQ/t*vQ/{*wQ0Y+QQ0g+ZQ1h,sQ5y2sQ6q3wQ6v3|Q7U4ZR7^4hQ,t(OQ1g,rT1j,t1gS(X$Q([Q(^$VU,x(X(^,}R,}(`Q(s$mR-h(sQ-p)OR2P-pQ3n/mQ3q/nT6j3n3qQ)S$yS-r)S-tR-t)UQ4`0aR7Y4``0t+^+_+`+a+d/q/r7OR4q0tQ8i6zR9Z8iQ4S0TR6}4SQ3x/wQ6n3tT6s3x6nQ3}/|Q6t3zU6y3}6t8eR8e6uQ4[0]Q7Q4VT7W4[7QhzOb!O!P!T$y%_%b)S)U)i-tQ$|xW%Zz$|%f)v$b%f!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gR)v%nS4i0i0nS7]4f4gT7b4i7]W&z!q%X&|1PS+r&z+zR+z'PQ1Q+wR4z1QU1[,S,T,UR5R1[S3S/Q7OR6U3SQ2t.mQ5x2pT5}2t5xQ.z)zR3O.z^_O!O!P!T%_%b)iY#Xb$y)S)U-t$l#_fgilmp!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W&Y&['}(W(Y(|*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!h$io!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mS'j#Q'lQ-P(bR/V*Z&v!RObfgilmop!O!P!T!Y!Z![!_!`!c!p#Q#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r$y%_%b&U&Y&[&b&u'l'}(W(Y(b(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,s,z-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f[!{Y[#U#Z9s9tW&{!q%X&|1P['`!|!}'n'o9|9}S(c$`$aS+t&z'PU,X'a,q:gS-Q(d(eQ1T+zR1n-RS%t!Q&oQ&q!nQ(V$OQ(w$uS)w%o.pQ)z%pQ)}%qS*]&P&rQ+e&pQ,S']Q-d(qQ.l)sU.w)x)y2vS/O*O*PQ/P*RQ/T*VQ/W*[Q/]*^Q/`*eQ/l*nQ/|*wS0S*x4RQ0a+UQ0c+VQ0y+hQ0{+oQ1X+}Q1{-iQ2T-vQ2`.UQ2i.`Q2z.tQ2|.xQ2}.yQ3X/ZQ3Y/[S3z/{/}Q4^0`Q4l0rQ4s0wQ4x1OQ4}1YQ5O1ZQ5_1yQ5n2aQ5r2hQ5u2jQ5w2mQ5{2sQ6V3VQ6o3uQ6u3{Q6w3|Q7P4UQ7X4_Q7[4eQ7d4tQ7n5`Q7p5dQ7|5vQ8P6RQ8S6YQ8c6pS8f6v6xQ8o7cQ8w7rR9X8g$^%m!Q!n$O$u%o%p%q&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gQ)j%nQ*T%yR*W%{$y%h!Q!n$O$u%i%j%n%o%p%q%y%{&P&o&p&r'](q)p)q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.i.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g:`:a:t:u:x'pWOY[bfgilmop!O!P!T!Y!Z![!_!`!c!p!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r$y%_%b&U&Y&[&b&u'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,q,s,z-R-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f:g$x%g!Q!n$O$u%i%j%n%o%p%q%y%{&P&o&p&r'](q)p)q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.i.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g:`:a:t:u:x_&y!q%X&z&|'P+z1PR,V']$zrOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!j$]o!c!p$e$g$h$q$r&U&b&u(b(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mQ,T']R5P1Z_}O!O!P!T%_%b)i^|O!O!P!T%_%b)iQ#YbX)R$y)S)U-tbhO!O!T3_6]8W8X9U9hS#`f9uQ#dgQ$PiQ$QlQ$VmQ$spW%^!P%_%b)iU&S!Y!`*iQ&W!ZQ&X![Q&]!_Q'q#eQ'r#oS's#p:QQ't#qQ'u#rQ'v#sQ'w#tQ'x#uQ'y#vQ'z#wQ'{#xQ'|#yQ(O#zQ(U#}Q([$TQ(`$WQ*b&YQ*c&[Q,r'}Q,w(WQ,y(YQ-n(|Q/k*lQ0z+nQ1i,sQ1l,zQ1}-mQ3P.}Q3[/^Q4w0}Q5V1hQ5a1|Q6^3aQ6d3hQ6e3kQ7R4WQ7e4vQ7h4|Q7s5gQ7y5tQ8j7SQ8q7gQ8{7{Q9[8kQ9b8|Q:[9wQ:]9xQ:c9zQ:d9{Q:h:OQ:i:PQ:j:RQ:k:SQ:l:TQ:m:UQ:n:VQ:o:WQ:p:XQ:q:YQ:r:ZQ:v:eQ:w:fR:{9v^tO!O!P!T%_%b)i$`#afgilmp!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W&Y&['}(W(Y(|*i*l+n,s,z-m.}/^0}1h1|3a3h3k4W4v4|5g5t7S7g7{8k8|9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ6[3_Q8V6]Q9R8WQ9T8XQ9g9UR9m9hQ&V!YQ&^!`R/h*iQ$joQ&a!cQ&t!pU(g$e$g(jS(n$h0eQ(u$qQ(v$rQ*`&UQ*m&bQ+p&uQ-S(fS-b(o4cQ-c(pQ-e(rW/a*f/d/g3fQ/j*kW0f+Z0g4h7^Q1o-TQ1z-gQ3b/bQ4k0mQ5X1rQ7l5[Q8Z6aR8t7m!h$_o!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mR-P(b'qXOY[bfgilmop!O!P!T!Y!Z![!_!`!c!p!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r$y%_%b&U&Y&[&b&u'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,q,s,z-R-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f:g$zqOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!i$fo!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m&d^Ofgilmop!O!P!T!Y!Z![!_!`!c!p#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r%_%b&U&Y&[&b&u'}(W(Y(f(j(o(p(r(|)i*f*i*k*l+Z+n,s,z-T-g-m.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f[!zY[$`$a9s9t['_!|!}(d(e9|9}W)o%i%j:`:aU,W'a-R:gW.h)p)q:t:uT2o.i:xQ(i$eQ(m$gR-W(jV(h$e$g(jR-^(kR-](k$znOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!i$ko!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mS'g#O'pj,a'b'c'd,c,f,h,l/m/n1_3n3q5UQ,m'jQ.u)uR8_6f`,b'b'c'd,c,f,h1_5UQ1e,lX3l/m/n3n3qj,a'b'c'd,c,f,h,l/m/n1_3n3q5UQ7j5TR8s7k^uO!O!P!T%_%b)i$`#afgilmp!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W&Y&['}(W(Y(|*i*l+n,s,z-m.}/^0}1h1|3a3h3k4W4v4|5g5t7S7g7{8k8|9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ6Z3_Q8U6]Q9Q8WQ9S8XQ9f9UR9l9hR(Q#zR(P#zQ$SlR(]$TR$ooR$noR)Q$vR)P$vQ)O$vR2O-ohwOb!O!P!T$y%_%b)S)U)i-t$l!lz!Q!n$O$u$|%f%n%o%p%q%y%{&P&o&p&r'](q)s)v)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gR${xR0b+UR0W*xR0U*xR6{4PR/y*vR/x*vR0P*wR0O*wR0_+QR0^+Q%XyObxz!O!P!Q!T!n$O$u$y$|%_%b%f%n%o%p%q%y%{&P&o&p&r'](q)S)U)i)s)v)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-t-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gR0k+ZR0j+ZQ'R!qQ)c%XQ+w&|R4y1PX'Q!q%X&|1PR+y&|R+x&|T/S*S4TT/R*S4TR.o)sR.n)sR){%p",nodeNames:"⚠ | < > RawString Float LineComment BlockComment SourceFile ] InnerAttribute ! [ MetaItem self Metavariable super crate Identifier ScopedIdentifier :: QualifiedScope AbstractType impl SelfType MetaType TypeIdentifier ScopedTypeIdentifier ScopeIdentifier TypeArgList TypeBinding = Lifetime String Escape Char Boolean Integer } { Block ; ConstItem Vis pub ( in ) const BoundIdentifier : UnsafeBlock unsafe AsyncBlock async move IfExpression if LetDeclaration let LiteralPattern ArithOp MetaPattern SelfPattern ScopedIdentifier TuplePattern ScopedTypeIdentifier , StructPattern FieldPatternList FieldPattern ref mut FieldIdentifier .. RefPattern SlicePattern CapturedPattern ReferencePattern & MutPattern RangePattern ... OrPattern MacroPattern ParenthesizedTokens TokenBinding Identifier TokenRepetition ArithOp BitOp LogicOp UpdateOp CompareOp -> => ArithOp BracketedTokens BracedTokens _ else MatchExpression match MatchBlock MatchArm Attribute Guard UnaryExpression ArithOp DerefOp LogicOp ReferenceExpression TryExpression BinaryExpression ArithOp ArithOp BitOp BitOp BitOp BitOp LogicOp LogicOp AssignmentExpression TypeCastExpression as ReturnExpression return RangeExpression CallExpression ArgList AwaitExpression await FieldExpression GenericFunction BreakExpression break LoopLabel ContinueExpression continue IndexExpression ArrayExpression TupleExpression MacroInvocation UnitExpression ClosureExpression ParamList Parameter Parameter ParenthesizedExpression StructExpression FieldInitializerList ShorthandFieldInitializer FieldInitializer BaseFieldInitializer MatchArm WhileExpression while LoopExpression loop ForExpression for MacroInvocation MacroDefinition macro_rules MacroRule EmptyStatement ModItem mod DeclarationList AttributeItem ForeignModItem extern StructItem struct TypeParamList ConstrainedTypeParameter TraitBounds HigherRankedTraitBound RemovedTraitBound OptionalTypeParameter ConstParameter WhereClause where LifetimeClause TypeBoundClause FieldDeclarationList FieldDeclaration OrderedFieldDeclarationList UnionItem union EnumItem enum EnumVariantList EnumVariant TypeItem type FunctionItem default fn ParamList Parameter SelfParameter VariadicParameter VariadicParameter ImplItem TraitItem trait AssociatedType LetDeclaration UseDeclaration use ScopedIdentifier UseAsClause ScopedIdentifier UseList ScopedUseList UseWildcard ExternCrateDeclaration StaticItem static ExpressionStatement ExpressionStatement GenericType FunctionType ForLifetimes ParamList VariadicParameter Parameter VariadicParameter Parameter ReferenceType PointerType TupleType UnitType ArrayType MacroInvocation EmptyType DynamicType dyn BoundedType",maxTerm:359,nodeProps:[["isolate",-4,4,6,7,33,""],["group",-42,4,5,14,15,16,17,18,19,33,35,36,37,40,51,53,56,101,107,111,112,113,122,123,125,127,128,130,132,133,134,137,139,140,141,142,143,144,148,149,155,157,159,"Expression",-16,22,24,25,26,27,222,223,230,231,232,233,234,235,236,237,239,"Type",-20,42,161,162,165,166,169,170,172,188,190,194,196,204,205,207,208,209,217,218,220,"Statement",-17,49,60,62,63,64,65,68,74,75,76,77,78,80,81,83,84,99,"Pattern"],["openedBy",9,"[",38,"{",47,"("],["closedBy",12,"]",39,"}",45,")"]],propSources:[I8],skippedNodes:[0,6,7,240],repeatNodeCount:32,tokenData:"$%h_R!XOX$nXY5gYZ6iZ]$n]^5g^p$npq5gqr7Xrs9cst:Rtu;Tuv>vvwAQwxCbxy!+Tyz!,Vz{!-X{|!/_|}!0g}!O!1i!O!P!3v!P!Q!8[!Q!R!Bw!R![!Dr![!]#+q!]!^#-{!^!_#.}!_!`#1b!`!a#3o!a!b#6S!b!c#7U!c!}#8W!}#O#:T#O#P#;V#P#Q#Cb#Q#R#Dd#R#S#8W#S#T$n#T#U#8W#U#V#El#V#f#8W#f#g#Ic#g#o#8W#o#p$ S#p#q$!U#q#r$$f#r${$n${$|#8W$|4w$n4w5b#8W5b5i$n5i6S#8W6S;'S$n;'S;=`4s<%lO$nU$u]'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$nU%uV'_Q'OSOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[S&aV'OSOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[S&yVOz'`z{&v{!P'`!P!Q*y!Q;'S'`;'S;=`*m<%lO'`S'cVOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[S'{UOz'`{!P'`!P!Q(_!Q;'S'`;'S;=`*m<%lO'`S(bUOz(t{!P(t!P!Q(_!Q;'S(t;'S;=`*a<%lO(tS(wVOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g<%lO)^S)eV'PS'OSOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g<%lO)^S)}UOz(tz{)z{!P(t!Q;'S(t;'S;=`*a<%lO(tS*dP;=`<%l(tS*jP;=`<%l)^S*pP;=`<%l'`S*vP;=`<%l&[S+OO'PSU+T]'_QOY+|YZ-xZr+|rs'`sz+|z{+O{!P+|!P!Q4y!Q#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|U,R]'_QOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$nU-P]'_QOY+|YZ-xZr+|rs'`sz+|z{.d{!P+|!P!Q/Z!Q#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|U-}V'_QOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[Q.iV'_QOY.dYZ/OZr.ds#O.d#P;'S.d;'S;=`/T<%lO.dQ/TO'_QQ/WP;=`<%l.dU/`]'_QOY0XYZ3uZr0Xrs(tsz0Xz{.d{!P0X!P!Q/Z!Q#O0X#O#P(t#P;'S0X;'S;=`4a<%lO0XU0^]'_QOY1VYZ2XZr1Vrs)^sz1Vz{2w{!P1V!P!Q/Z!Q#O1V#O#P)^#P;'S1V;'S;=`4g<%lO1VU1`]'_Q'PS'OSOY1VYZ2XZr1Vrs)^sz1Vz{2w{!P1V!P!Q/Z!Q#O1V#O#P)^#P;'S1V;'S;=`4g<%lO1VU2bV'_Q'PS'OSOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g<%lO)^U2|]'_QOY0XYZ3uZr0Xrs(tsz0Xz{2w{!P0X!P!Q.d!Q#O0X#O#P(t#P;'S0X;'S;=`4a<%lO0XU3zV'_QOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g<%lO)^U4dP;=`<%l0XU4jP;=`<%l1VU4pP;=`<%l+|U4vP;=`<%l$nU5QV'_Q'PSOY.dYZ/OZr.ds#O.d#P;'S.d;'S;=`/T<%lO.d_5p]'_Q&|X'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_6rV'_Q&|X'OSOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[_7b_ZX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`8a!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_8j]#PX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_9lV']Q'OS'^XOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[_:[]'QX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_;^i'_Q'vW'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!c$n!c!}<{!}#O$n#O#P&[#P#R$n#R#S<{#S#T$n#T#o<{#o${$n${$|<{$|4w$n4w5b<{5b5i$n5i6S<{6S;'S$n;'S;=`4s<%lO$n_=Uj'_Q_X'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![<{![!c$n!c!}<{!}#O$n#O#P&[#P#R$n#R#S<{#S#T$n#T#o<{#o${$n${$|<{$|4w$n4w5b<{5b5i$n5i6S<{6S;'S$n;'S;=`4s<%lO$n_?P_(TP'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_@X]#OX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_AZa!qX'_Q'OSOY$nYZ%nZr$nrs&[sv$nvwB`wz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_Bi]'}X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_Cik'_Q'OSOYE^YZGfZrE^rsHvswE^wxFdxzE^z{Ih{!PE^!P!QKl!Q!cE^!c!}Lp!}#OE^#O#P!!l#P#RE^#R#SLp#S#TE^#T#oLp#o${E^${$|Lp$|4wE^4w5bLp5b5iE^5i6SLp6S;'SE^;'S;=`!*}<%lOE^_Ee_'_Q'OSOY$nYZ%nZr$nrs&[sw$nwxFdxz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_Fm]'_Q'OSsXOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_GmX'_Q'OSOw&[wxHYxz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[]HaV'OSsXOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[]H{X'OSOw&[wxHYxz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[_Im_'_QOY+|YZ-xZr+|rs'`sw+|wxJlxz+|z{+O{!P+|!P!Q4y!Q#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|_Js]'_QsXOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_Kq_'_QOY+|YZ-xZr+|rs'`sw+|wxJlxz+|z{.d{!P+|!P!Q/Z!Q#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|_Lyl'_Q'OS'ZXOY$nYZ%nZr$nrs&[sw$nwxFdxz$nz{+O{!P$n!P!Q,z!Q![Nq![!c$n!c!}Nq!}#O$n#O#P&[#P#R$n#R#SNq#S#T$n#T#oNq#o${$n${$|Nq$|4w$n4w5bNq5b5i$n5i6SNq6S;'S$n;'S;=`4s<%lO$n_Nzj'_Q'OS'ZXOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![Nq![!c$n!c!}Nq!}#O$n#O#P&[#P#R$n#R#SNq#S#T$n#T#oNq#o${$n${$|Nq$|4w$n4w5bNq5b5i$n5i6SNq6S;'S$n;'S;=`4s<%lO$n]!!qZ'OSOzHvz{!#d{!PHv!P!Q!$n!Q#iHv#i#j!%Z#j#lHv#l#m!'V#m;'SHv;'S;=`!*w<%lOHv]!#gXOw'`wx!$Sxz'`z{&v{!P'`!P!Q*y!Q;'S'`;'S;=`*m<%lO'`]!$XVsXOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[]!$qWOw'`wx!$Sxz'`{!P'`!P!Q(_!Q;'S'`;'S;=`*m<%lO'`]!%`^'OSOz&[z{&v{!P&[!P!Q'x!Q![!&[![!c&[!c!i!&[!i#T&[#T#Z!&[#Z#o&[#o#p!({#p;'S&[;'S;=`*s<%lO&[]!&a['OSOz&[z{&v{!P&[!P!Q'x!Q![!'V![!c&[!c!i!'V!i#T&[#T#Z!'V#Z;'S&[;'S;=`*s<%lO&[]!'[['OSOz&[z{&v{!P&[!P!Q'x!Q![!(Q![!c&[!c!i!(Q!i#T&[#T#Z!(Q#Z;'S&[;'S;=`*s<%lO&[]!(V['OSOz&[z{&v{!P&[!P!Q'x!Q![Hv![!c&[!c!iHv!i#T&[#T#ZHv#Z;'S&[;'S;=`*s<%lO&[]!)Q['OSOz&[z{&v{!P&[!P!Q'x!Q![!)v![!c&[!c!i!)v!i#T&[#T#Z!)v#Z;'S&[;'S;=`*s<%lO&[]!){^'OSOz&[z{&v{!P&[!P!Q'x!Q![!)v![!c&[!c!i!)v!i#T&[#T#Z!)v#Z#q&[#q#rHv#r;'S&[;'S;=`*s<%lO&[]!*zP;=`<%lHv_!+QP;=`<%lE^_!+^]}X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!,`]!PX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!-`_(QX'_QOY+|YZ-xZr+|rs'`sz+|z{+O{!P+|!P!Q4y!Q!_+|!_!`!._!`#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|_!.f]#OX'_QOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!/h_(PX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!0p]!eX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!1r`'gX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`!a!2t!a#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!2}]#QX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!4P^(OX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!O$n!O!P!4{!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!5U`!lX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!O$n!O!P!6W!P!Q,z!Q!_$n!_!`!7Y!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!6a]!tX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$nV!7c]'qP'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!8c_'_Q'xXOY+|YZ-xZr+|rs'`sz+|z{!9b{!P+|!P!Q!:O!Q!_+|!_!`!._!`#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|_!9iV&}]'_QOY.dYZ/OZr.ds#O.d#P;'S.d;'S;=`/T<%lO.d_!:V]'_QUXOY!;OYZ3uZr!;Ors!>jsz!;Oz{!Aq{!P!;O!P!Q!:O!Q#O!;O#O#P!>j#P;'S!;O;'S;=`!Bk<%lO!;O_!;V]'_QUXOY!jYZ(tZz!>jz{!=x{!P!>j!P!Q!?|!Q;'S!>j;'S;=`!@e<%lO!>j]!>oXUXOY!=SYZ)^Zz!=Sz{!=x{!P!=S!P!Q!?[!Q;'S!=S;'S;=`!@k<%lO!=S]!?aXUXOY!>jYZ(tZz!>jz{!?|{!P!>j!P!Q!?[!Q;'S!>j;'S;=`!@e<%lO!>jX!@RSUXOY!?|Z;'S!?|;'S;=`!@_<%lO!?|X!@bP;=`<%l!?|]!@hP;=`<%l!>j]!@nP;=`<%l!=S_!@x]'_QUXOY!;OYZ3uZr!;Ors!>jsz!;Oz{!@q{!P!;O!P!Q!Aq!Q#O!;O#O#P!>j#P;'S!;O;'S;=`!Bk<%lO!;OZ!AxX'_QUXOY!AqYZ/OZr!Aqrs!?|s#O!Aq#O#P!?|#P;'S!Aq;'S;=`!Be<%lO!AqZ!BhP;=`<%l!Aq_!BnP;=`<%l!;O_!BtP;=`<%l!o![!c&[!c!i#>o!i#T&[#T#Z#>o#Z#o&[#o#p#A`#p;'S&[;'S;=`*s<%lO&[U#>t['OSOz&[z{&v{!P&[!P!Q'x!Q![#?j![!c&[!c!i#?j!i#T&[#T#Z#?j#Z;'S&[;'S;=`*s<%lO&[U#?o['OSOz&[z{&v{!P&[!P!Q'x!Q![#@e![!c&[!c!i#@e!i#T&[#T#Z#@e#Z;'S&[;'S;=`*s<%lO&[U#@j['OSOz&[z{&v{!P&[!P!Q'x!Q![#;}![!c&[!c!i#;}!i#T&[#T#Z#;}#Z;'S&[;'S;=`*s<%lO&[U#Ae['OSOz&[z{&v{!P&[!P!Q'x!Q![#BZ![!c&[!c!i#BZ!i#T&[#T#Z#BZ#Z;'S&[;'S;=`*s<%lO&[U#B`^'OSOz&[z{&v{!P&[!P!Q'x!Q![#BZ![!c&[!c!i#BZ!i#T&[#T#Z#BZ#Z#q&[#q#r#;}#r;'S&[;'S;=`*s<%lO&[U#C_P;=`<%l#;}_#Ck]XX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_#Dm_'{X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_#Ewl'_Q'OS!yW'TPOY$nYZ%nZr$nrs#Gosw$nwx#H]xz$nz{+O{!P$n!P!Q,z!Q![#8W![!c$n!c!}#8W!}#O$n#O#P&[#P#R$n#R#S#8W#S#T$n#T#o#8W#o${$n${$|#8W$|4w$n4w5b#8W5b5i$n5i6S#8W6S;'S$n;'S;=`4s<%lO$n]#GvV'OS'^XOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[_#Hd_'_Q'OSOYE^YZGfZrE^rsHvswE^wxFdxzE^z{Ih{!PE^!P!QKl!Q#OE^#O#P!!l#P;'SE^;'S;=`!*}<%lOE^_#Ink'_Q'OS!yW'TPOY$nYZ%nZr$nrs&[st#Kctz$nz{+O{!P$n!P!Q,z!Q![#8W![!c$n!c!}#8W!}#O$n#O#P&[#P#R$n#R#S#8W#S#T$n#T#o#8W#o${$n${$|#8W$|4w$n4w5b#8W5b5i$n5i6S#8W6S;'S$n;'S;=`4s<%lO$nV#Kji'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!c$n!c!}#MX!}#O$n#O#P&[#P#R$n#R#S#MX#S#T$n#T#o#MX#o${$n${$|#MX$|4w$n4w5b#MX5b5i$n5i6S#MX6S;'S$n;'S;=`4s<%lO$nV#Mbj'_Q'OS'TPOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![#MX![!c$n!c!}#MX!}#O$n#O#P&[#P#R$n#R#S#MX#S#T$n#T#o#MX#o${$n${$|#MX$|4w$n4w5b#MX5b5i$n5i6S#MX6S;'S$n;'S;=`4s<%lO$n_$ ]]wX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_$!_a'rX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P#p$n#p#q$#d#q;'S$n;'S;=`4s<%lO$n_$#m]'|X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_$$o]vX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n",tokenizers:[M8,N8,L8,0,1,2,3],topRules:{SourceFile:[0,8]},specialized:[{term:281,get:t=>D8[t]||-1}],tokenPrec:15596}),F8=He.define({name:"rust",parser:B8.configure({props:[Je.add({IfExpression:Ue({except:/^\s*({|else\b)/}),"String BlockComment":()=>null,AttributeItem:t=>t.continue(),"Statement MatchArm":Ue()}),et.add(t=>{if(/(Block|edTokens|List)$/.test(t.name))return dO;if(t.name=="BlockComment")return e=>({from:e.from+2,to:e.to-2})})]}),languageData:{commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:\{|\})$/,closeBrackets:{stringPrefixes:["b","r","br"]}}});function H8(){return new Ke(F8)}const t0=168,B$=169,K8=170,J8=1,eC=2,O0=3,tC=171,OC=172,i0=4,n0=173,iC=5,nC=174,r0=175,a0=176,F$=177,s0=6,o0=7,rC=8,aC=9,Su=0,vi=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],sC=58,oC=40,H$=95,lC=91,Qo=45,cC=46,K$=35,uC=37,l0=123,dC=125,$o=47,po=42,QO=10,c0=61,fC=43,hC=38;function da(t){return t>=65&&t<=90||t>=97&&t<=122||t>=161}function J$(t){return t>=48&&t<=57}function ep(t){let e;return t.next==$o&&((e=t.peek(1))==$o||e==po)}const QC=new Oe((t,e)=>{if(e.dialectEnabled(Su)){let O;if(t.next<0&&e.canShift(a0))t.acceptToken(a0);else if(((O=t.peek(-1))==QO||O<0)&&e.canShift(r0)){let i=0;for(;t.next!=QO&&vi.includes(t.next);)t.advance(),i++;t.next==QO||ep(t)?t.acceptToken(r0,-i):i&&t.acceptToken(F$)}else if(t.next==QO)t.acceptToken(nC,1);else if(vi.includes(t.next)){for(t.advance();t.next!=QO&&vi.includes(t.next);)t.advance();t.acceptToken(F$)}}else{let O=0;for(;vi.includes(t.next);)t.advance(),O++;O&&t.acceptToken(F$)}},{contextual:!0}),$C=new Oe((t,e)=>{if(ep(t)){if(t.advance(),e.dialectEnabled(Su)){let O=-1;for(let i=1;;i++){let n=t.peek(-i-1);if(n==QO||n<0){O=i+1;break}else if(!vi.includes(n))break}if(O>-1){let i=t.next==po,n=0;for(t.advance();t.next>=0;)if(t.next==QO){t.advance();let r=0;for(;t.next!=QO&&vi.includes(t.next);)r++,t.advance();if(r=0;)t.advance();t.acceptToken(s0)}else{for(t.advance();t.next>=0;){let{next:O}=t;if(t.advance(),O==po&&t.next==$o){t.advance();break}}t.acceptToken(o0)}}}),pC=new Oe((t,e)=>{(t.next==fC||t.next==c0)&&e.dialectEnabled(Su)&&t.acceptToken(t.next==c0?rC:aC,1)}),mC=new Oe((t,e)=>{if(!e.dialectEnabled(Su))return;let O=e.context.depth;if(t.next<0&&O){t.acceptToken(B$);return}if(t.peek(-1)==QO){let n=0;for(;t.next!=QO&&vi.includes(t.next);)t.advance(),n++;n!=O&&t.next!=QO&&!ep(t)&&(n{for(let O=!1,i=0,n=0;;n++){let{next:r}=t;if(da(r)||r==Qo||r==H$||O&&J$(r))!O&&(r!=Qo||n>0)&&(O=!0),i===n&&r==Qo&&i++,t.advance();else if(r==K$&&t.peek(1)==l0){t.acceptToken(iC,2);break}else{O&&t.acceptToken(i==2&&e.canShift(i0)?i0:e.canShift(n0)?n0:r==oC?tC:OC);break}}}),PC=new Oe(t=>{if(t.next==dC){for(t.advance();da(t.next)||t.next==Qo||t.next==H$||J$(t.next);)t.advance();t.next==K$&&t.peek(1)==l0?t.acceptToken(eC,2):t.acceptToken(J8)}}),SC=new Oe(t=>{if(vi.includes(t.peek(-1))){let{next:e}=t;(da(e)||e==H$||e==K$||e==cC||e==lC||e==sC&&da(t.peek(1))||e==Qo||e==hC||e==po)&&t.acceptToken(K8)}}),XC=new Oe(t=>{if(!vi.includes(t.peek(-1))){let{next:e}=t;if(e==uC&&(t.advance(),t.acceptToken(O0)),da(e)){do t.advance();while(da(t.next)||J$(t.next));t.acceptToken(O0)}}});function u0(t,e){this.parent=t,this.depth=e,this.hash=(t?t.hash+t.hash<<8:0)+e+(e<<4)}const xC=new u0(null,0),yC=new Jn({start:xC,shift(t,e,O,i){return e==t0?new u0(t,O.pos-i.pos):e==B$?t.parent:t},hash(t){return t.hash}}),wC=Fe({"AtKeyword import charset namespace keyframes media supports include mixin use forward extend at-root":f.definitionKeyword,"Keyword selector":f.keyword,ControlKeyword:f.controlKeyword,NamespaceName:f.namespace,KeyframeName:f.labelName,KeyframeRangeName:f.operatorKeyword,TagName:f.tagName,"ClassName Suffix":f.className,PseudoClassName:f.constant(f.className),IdName:f.labelName,"FeatureName PropertyName":f.propertyName,AttributeName:f.attributeName,NumberLiteral:f.number,KeywordQuery:f.keyword,UnaryQueryOp:f.operatorKeyword,"CallTag ValueName":f.atom,VariableName:f.variableName,SassVariableName:f.special(f.variableName),Callee:f.operatorKeyword,Unit:f.unit,"UniversalSelector NestingSelector IndentedMixin IndentedInclude":f.definitionOperator,MatchOp:f.compareOperator,"ChildOp SiblingOp, LogicOp":f.logicOperator,BinOp:f.arithmeticOperator,"Important Global Default":f.modifier,Comment:f.blockComment,LineComment:f.lineComment,ColorLiteral:f.color,"ParenthesizedContent StringLiteral":f.string,"InterpolationStart InterpolationContinue InterpolationEnd":f.meta,': "..."':f.punctuation,"PseudoOp #":f.derefOperator,"; ,":f.separator,"( )":f.paren,"[ ]":f.squareBracket,"{ }":f.brace}),TC={__proto__:null,not:62,using:197,as:207,with:211,without:211,hide:225,show:225,if:263,from:269,to:271,through:273,in:279},kC={__proto__:null,url:82,"url-prefix":82,domain:82,regexp:82,lang:104,"nth-child":104,"nth-last-child":104,"nth-of-type":104,"nth-last-of-type":104,dir:104,"host-context":104},vC={__proto__:null,"@import":162,"@include":194,"@mixin":200,"@function":200,"@use":204,"@extend":214,"@at-root":218,"@forward":222,"@media":228,"@charset":232,"@namespace":236,"@keyframes":242,"@supports":254,"@if":258,"@else":260,"@for":266,"@each":276,"@while":282,"@debug":286,"@warn":286,"@error":286,"@return":286},bC={__proto__:null,layer:166,not:184,only:184,selector:190},ZC=tt.deserialize({version:14,states:"!$WQ`Q+tOOO#fQ+tOOP#mOpOOOOQ#U'#Ch'#ChO#rQ(pO'#CjOOQ#U'#Ci'#CiO%_Q)QO'#GXO%rQ.jO'#CnO&mQ#dO'#D]O'dQ(pO'#CgO'kQ)OO'#D_O'vQ#dO'#DfO'{Q#dO'#DiO(QQ#dO'#DqOOQ#U'#GX'#GXO(VQ(pO'#GXO(^Q(nO'#DuO%rQ.jO'#D}O%rQ.jO'#E`O%rQ.jO'#EcO%rQ.jO'#EeO(cQ)OO'#EjO)TQ)OO'#ElO%rQ.jO'#EnO)bQ)OO'#EqO%rQ.jO'#EsO)|Q)OO'#EuO*XQ)OO'#ExO*aQ)OO'#FOO*uQ)OO'#FbOOQ&Z'#GW'#GWOOQ&Y'#Fe'#FeO+PQ(nO'#FeQ`Q+tOOO%rQ.jO'#FQO+[Q(nO'#FUO+aQ)OO'#FZO%rQ.jO'#F^O%rQ.jO'#F`OOQ&Z'#Fm'#FmO+iQ+uO'#GaO+vQ(oO'#GaQOQ#SOOP,XO#SO'#GVPOOO)CAz)CAzOOQ#U'#Cm'#CmOOQ#U,59W,59WOOQ#i'#Cp'#CpO%rQ.jO'#CsO,xQ.wO'#CuO/dQ.^O,59YO%rQ.jO'#CzOOQ#S'#DP'#DPO/uQ(nO'#DUO/zQ)OO'#DZOOQ#i'#GZ'#GZO0SQ(nO'#DOOOQ#U'#D^'#D^OOQ#U,59w,59wO&mQ#dO,59wO0XQ)OO,59yO'vQ#dO,5:QO'{Q#dO,5:TO(cQ)OO,5:WO(cQ)OO,5:YO(cQ)OO,5:ZO(cQ)OO'#FlO0dQ(nO,59RO0oQ+tO'#DsO0vQ#TO'#DsOOQ&Z,59R,59ROOQ#U'#Da'#DaOOQ#S'#Dd'#DdOOQ#U,59y,59yO0{Q(nO,59yO1QQ(nO,59yOOQ#U'#Dh'#DhOOQ#U,5:Q,5:QOOQ#S'#Dj'#DjO1VQ9`O,5:TOOQ#U'#Dr'#DrOOQ#U,5:],5:]O2YQ.jO,5:aO2dQ.jO,5:iO3`Q.jO,5:zO3mQ.YO,5:}O4OQ.jO,5;POOQ#U'#Cj'#CjO4wQ(pO,5;UO5UQ(pO,5;WOOQ&Z,5;W,5;WO5]Q)OO,5;WO5bQ.jO,5;YOOQ#S'#ET'#ETO6TQ.jO'#E]O6kQ(nO'#GcO*aQ)OO'#EZO7PQ(nO'#E^OOQ#S'#Gd'#GdO0gQ(nO,5;]O4UQ.YO,5;_OOQ#d'#Ew'#EwO+PQ(nO,5;aO7UQ)OO,5;aOOQ#S'#Ez'#EzO7^Q(nO,5;dO7cQ(nO,5;jO7nQ(nO,5;|OOQ&Z'#Gf'#GfOOQ&Y,5VQ9`O1G/oO>pQ(pO1G/rO?dQ(pO1G/tO@WQ(pO1G/uO@zQ(pO,5aAN>aO!6QQ(pO,5_Ow!bi!a!bi!d!bi!h!bi$p!bi$t!bi!o!bi$v!bif!bie!bi~P>_Ow!ci!a!ci!d!ci!h!ci$p!ci$t!ci!o!ci$v!cif!cie!ci~P>_Ow$`a!h$`a$t$`a~P4]O!p%|O~O$o%TP~P`Oe%RP~P(cOe%QP~P%rOS!XOTVO_!XOc!XOf!QOh!XOo!TOy!VO|!WO$q!UO$r!PO%O!RO~Oe&VOj&TO~PAsOl#sOm#sOq#tOw&XO!l&ZO!m&ZO!n&ZO!o!ii$t!ii$v!ii$m!ii!p!ii$o!ii~P%rOf&[OT!tXc!tX!o!tX#O!tX#R!tX$s!tX$t!tX$v!tX~O$n$_OS%YXT%YXW%YXX%YX_%YXc%YXq%YXu%YX|%YX!S%YX!Z%YX!r%YX!s%YX#T%YX#W%YX#Y%YX#_%YX#a%YX#c%YX#f%YX#h%YX#j%YX#m%YX#s%YX#u%YX#y%YX$O%YX$R%YX$T%YX$m%YX$r%YX$|%YX%S%YX!p%YX!o%YX$t%YX$o%YX~O$r!PO$|&aO~O#]&cO~Ou&dO~O!o#`O#d$wO$t#`O$v#`O~O!o%ZP#d%ZP$t%ZP$v%ZP~P%rO$r!PO~OR#rO!|iXeiX~Oe!wXm!wXu!yX!|!yX~Ou&jO!|&kO~Oe&lOm%PO~Ow$fX!h$fX$t$fX!o$fX$v$fX~P*aOw%QO!h%Va$t%Va!o%Va$v%Va~Om%POw!}a!h!}a$t!}a!o!}a$v!}ae!}a~O!p&xO$r&sO%O&rO~O#v&zOS#tiT#tiW#tiX#ti_#tic#tiq#tiu#ti|#ti!S#ti!Z#ti!r#ti!s#ti#T#ti#W#ti#Y#ti#_#ti#a#ti#c#ti#f#ti#h#ti#j#ti#m#ti#s#ti#u#ti#y#ti$O#ti$R#ti$T#ti$m#ti$r#ti$|#ti%S#ti!p#ti!o#ti$t#ti$o#ti~Oc&|Ow$lX$P$lX~Ow%`O$P%[a~O!o#kO$t#kO$m%Ti!p%Ti$o%Ti~O!o$da$m$da$t$da!p$da$o$da~P`Oq#tOPkiQkilkimkiTkickifki!oki!uki#Oki#Rki$ski$tki$vki!hki#Uki#Zki#]ki#dkiekiSki_kihkijkiokiwkiyki|ki!lki!mki!nki$qki$rki%Oki$mkivki{ki#{ki#|ki!pki$oki~Ol#sOm#sOq#tOP$]aQ$]a~Oe'QO~Ol#sOm#sOq#tOS$YXT$YX_$YXc$YXe$YXf$YXh$YXj$YXo$YXv$YXw$YXy$YX|$YX$q$YX$r$YX%O$YX~Ov'UOw'SOe%PX~P%rOS$}XT$}X_$}Xc$}Xe$}Xf$}Xh$}Xj$}Xl$}Xm$}Xo$}Xq$}Xv$}Xw$}Xy$}X|$}X$q$}X$r$}X%O$}X~Ou'VO~P!%OOe'WO~O$o'YO~Ow'ZOe%RX~P4]Oe']O~Ow'^Oe%QX~P%rOe'`O~Ol#sOm#sOq#tO{'aO~Ou'bOe$}Xl$}Xm$}Xq$}X~Oe'eOj'cO~Ol#sOm#sOq#tOS$cXT$cX_$cXc$cXf$cXh$cXj$cXo$cXw$cXy$cX|$cX!l$cX!m$cX!n$cX!o$cX$q$cX$r$cX$t$cX$v$cX%O$cX$m$cX!p$cX$o$cX~Ow&XO!l'hO!m'hO!n'hO!o!iq$t!iq$v!iq$m!iq!p!iq$o!iq~P%rO$r'iO~O!o#`O#]'nO$t#`O$v#`O~Ou'oO~Ol#sOm#sOq#tOw'qO!o%ZX#d%ZX$t%ZX$v%ZX~O$s'uO~P5oOm%POw$fa!h$fa$t$fa!o$fa$v$fa~Oe'wO~P4]O%O&rOw#pX!h#pX$t#pX~Ow'yO!h!fO$t!gO~O!p'}O$r&sO%O&rO~O#v(POS#tqT#tqW#tqX#tq_#tqc#tqq#tqu#tq|#tq!S#tq!Z#tq!r#tq!s#tq#T#tq#W#tq#Y#tq#_#tq#a#tq#c#tq#f#tq#h#tq#j#tq#m#tq#s#tq#u#tq#y#tq$O#tq$R#tq$T#tq$m#tq$r#tq$|#tq%S#tq!p#tq!o#tq$t#tq$o#tq~O!h!fO#w(QO$t!gO~Ol#sOm#sOq#tO#{(SO#|(SO~Oc(VOe$ZXw$ZX~P=TOw'SOe%Pa~Ol#sOm#sOq#tO{(ZO~Oe$_Xw$_X~P(cOw'ZOe%Ra~Oe$^Xw$^X~P%rOw'^Oe%Qa~Ou'bO~Ol#sOm#sOq#tOS$caT$ca_$cac$caf$cah$caj$cao$caw$cay$ca|$ca!l$ca!m$ca!n$ca!o$ca$q$ca$r$ca$t$ca$v$ca%O$ca$m$ca!p$ca$o$ca~Oe(dOq(bO~Oe(gOm%PO~Ow$hX!o$hX#d$hX$t$hX$v$hX~P%rOw'qO!o%Za#d%Za$t%Za$v%Za~Oe(lO~P%rOe(mO!|(nO~Ov(vOe$Zaw$Za~P%rOu(wO~P!%OOw'SOe%Pi~Ow'SOe%Pi~P%rOe$_aw$_a~P4]Oe$^aw$^a~P%rOl#sOm#sOq#tOw(yOe$bij$bi~Oe(|Oq(bO~Oe)OOm%PO~Ol#sOm#sOq#tOw$ha!o$ha#d$ha$t$ha$v$ha~OS$}Oh$}Oj$}Oy!VO$q!UO$s'uO%O&rO~O#w(QO~Ow'SOe%Pq~Oe)WO~Oe$Zqw$Zq~P%rO%Oql!dl~",goto:"=Y%]PPPPPPPPPPP%^%h%h%{P%h&`&cP(UPP)ZP*YP)ZPP)ZP)ZP+f,j-lPPP-xPPPP)Z/S%h/W%hP/^P/d/j/p%hP/v%h/|P%hP%h%hP%h0S0VP1k1}2XPPPPP%^PP2_P2b'w'w2h'w'wP'wP'w'wP%^PP%^P%^PP2qP%^P%^P%^PP%^P%^P%^P2w%^P2z2}3Q3X%^P%^PPP%^PPPP%^PP%^P%^P%^P3^3d3j4Y4h4n4t4z5Q5W5d5j5p5z6Q6W6b6h6n6t6zPPPPPPPPPPPP7Q7T7aP8WP:_:b:eP:h:q:w;T;p;y=S=VanOPqx!f#l$_%fs^OPefqx!a!b!c!d!f#l$_$`%T%f'ZsTOPefqx!a!b!c!d!f#l$_$`%T%f'ZR!OUb^ef!a!b!c!d$`%T'Z`_OPqx!f#l$_%f!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)Ug#Uhlm!u#Q#S$i%P%Q&d'o!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)UQ&b$pR&i$x!y!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)U!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)UU$}#Q&k(nU&u%Y&w'yR'x&t!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)UV$}#Q&k(n#P!YVabcdgiruv!Q!T!t#Q#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j&k'S'V'^'b'q't(Q(S(U(Y(^(n(w)UQ$P!YQ&_$lQ&`$oR(e'n!x!XVabcdgiruv!Q!T!t#s#t#u$O$a$c$d$e$w%_%b%v%{&Q&X&Y&j'S'V'^'b'q't(Q(S(U(Y(^(w)UQ#YjU$}#Q&k(nR%X#ZT#{!W#|Q![WR$Q!]Q!kYR$R!^Q$R!mR%y$TQ!lYR$S!^Q$R!lR%y$SQ!oZR$U!_Q!q[R$V!`R!s]Q!hXQ!|fQ$]!eQ$f!tQ$k!vQ$m!wQ$r!{Q%U#VQ%[#^Q%]#_Q%^#cQ%c#gQ'l&_Q'{&vQ(R&zQ(T'OQ(q'zQ(s(PQ)P(gQ)S(tQ)T(uR)V)OSpOqUyP!f$_Q#jxQ%g#lR'P%fa`OPqx!f#l$_%fQ$f!tR(a'bR$i!uQ'j&[R(z(bQ${#QQ'v&kR)R(nQ&b$pR's&iR#ZjR#]kR%Z#]S&v%Y&wR(o'yV&t%Y&w'yQ#o{R%i#oQqOR#bqQ%v$OQ&Q$a^'R%v&Q't(U(Y(^)UQ't&jQ(U'SQ(Y'VQ(^'^R)U(wQ'T%vU(W'T(X(xQ(X'UR(x(YQ#|!WR%s#|Q#v!SR%o#vQ'_&QR(_'_Q'[&OR(]'[Q!eXR$[!eUxP!f$_S#ix%fR%f#lQ&U$dR'd&UQ&Y$eR'g&YQ#myQ%e#jT%h#m%eQ(c'jR({(cQ%R#RR&o%RQ$u#OS&e$u(jR(j'sQ'r&gR(i'rQ&w%YR'|&wQ'z&vR(p'zQ&y%^R(O&yQ%a#eR&}%aR|QSoOq]wPx!f#l$_%f`XOPqx!f#l$_%fQ!zeQ!{fQ$W!aQ$X!bQ$Y!cQ$Z!dQ&O$`Q&p%TR(['ZQ!SVQ!uaQ!vbQ!wcQ!xdQ#OgQ#WiQ#crQ#guQ#hvS#q!Q$dQ#x!TQ$e!tQ%l#sQ%m#tQ%n#ul%u$O$a%v&Q&j'S'V'^'t(U(Y(^(w)UQ&S$cS&W$e&YQ&g$wQ&{%_Q'O%bQ'X%{Q'f&XQ(`'bQ(h'qQ(t(QR(u(SR%x$OR&R$aR&P$`QzPQ$^!fR%}$_X#ly#j#m%eQ#VhQ#_mQ$h!uR&^$iW#Rhm!u$iQ#^lQ$|#QQ%S#SQ&m%PQ&n%QQ'p&dR(f'oQ%O#QQ'v&kR)R(nQ#apQ$k!vQ$n!xQ$q!zQ$v#OQ%V#WQ%W#YQ%]#_Q%d#hQ&]$hQ&f$uQ&q%XQ'k&^Q'l&_S'm&`&bQ(k'sQ(}(eR)Q(jR&h$wR#ft",nodeNames:"⚠ InterpolationEnd InterpolationContinue Unit VariableName InterpolationStart LineComment Comment IndentedMixin IndentedInclude StyleSheet RuleSet UniversalSelector TagSelector TagName NestingSelector SuffixedSelector Suffix Interpolation SassVariableName ValueName ) ( ParenthesizedValue ColorLiteral NumberLiteral StringLiteral BinaryExpression BinOp LogicOp UnaryExpression LogicOp NamespacedValue . CallExpression Callee ArgList : ... , CallLiteral CallTag ParenthesizedContent ] [ LineNames LineName ClassSelector ClassName PseudoClassSelector :: PseudoClassName PseudoClassName ArgList PseudoClassName ArgList IdSelector # IdName AttributeSelector AttributeName MatchOp ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp PlaceholderSelector ClassName Block { Declaration PropertyName Map Important Global Default ; } ImportStatement AtKeyword import Layer layer LayerName KeywordQuery FeatureQuery FeatureName BinaryQuery ComparisonQuery CompareOp UnaryQuery LogicOp ParenthesizedQuery SelectorQuery selector IncludeStatement include Keyword MixinStatement mixin UseStatement use Keyword Star Keyword ExtendStatement extend RootStatement at-root ForwardStatement forward Keyword MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList KeyframeSelector KeyframeRangeName SupportsStatement supports IfStatement ControlKeyword ControlKeyword Keyword ForStatement ControlKeyword Keyword Keyword Keyword EachStatement ControlKeyword Keyword WhileStatement ControlKeyword OutputStatement ControlKeyword AtRule Styles",maxTerm:196,context:yC,nodeProps:[["openedBy",1,"InterpolationStart",5,"InterpolationEnd",21,"(",43,"[",78,"{"],["isolate",-3,6,7,26,""],["closedBy",22,")",44,"]",70,"}"]],propSources:[wC],skippedNodes:[0,6,7,146],repeatNodeCount:21,tokenData:"!$Q~RyOq#rqr$jrs0jst2^tu8{uv;hvw;{wx<^xy={yz>^z{>c{|>||}Co}!ODQ!O!PDo!P!QFY!Q![Fk![!]Gf!]!^Hb!^!_Hs!_!`Is!`!aJ^!a!b#r!b!cKa!c!}#r!}#OMn#O#P#r#P#QNP#Q#RNb#R#T#r#T#UNw#U#c#r#c#d!!Y#d#o#r#o#p!!o#p#qNb#q#r!#Q#r#s!#c#s;'S#r;'S;=`!#z<%lO#rW#uSOy$Rz;'S$R;'S;=`$d<%lO$RW$WSzWOy$Rz;'S$R;'S;=`$d<%lO$RW$gP;=`<%l$RY$m[Oy$Rz!_$R!_!`%c!`#W$R#W#X%v#X#Z$R#Z#[)Z#[#]$R#]#^,V#^;'S$R;'S;=`$d<%lO$RY%jSzWlQOy$Rz;'S$R;'S;=`$d<%lO$RY%{UzWOy$Rz#X$R#X#Y&_#Y;'S$R;'S;=`$d<%lO$RY&dUzWOy$Rz#Y$R#Y#Z&v#Z;'S$R;'S;=`$d<%lO$RY&{UzWOy$Rz#T$R#T#U'_#U;'S$R;'S;=`$d<%lO$RY'dUzWOy$Rz#i$R#i#j'v#j;'S$R;'S;=`$d<%lO$RY'{UzWOy$Rz#`$R#`#a(_#a;'S$R;'S;=`$d<%lO$RY(dUzWOy$Rz#h$R#h#i(v#i;'S$R;'S;=`$d<%lO$RY(}S!nQzWOy$Rz;'S$R;'S;=`$d<%lO$RY)`UzWOy$Rz#`$R#`#a)r#a;'S$R;'S;=`$d<%lO$RY)wUzWOy$Rz#c$R#c#d*Z#d;'S$R;'S;=`$d<%lO$RY*`UzWOy$Rz#U$R#U#V*r#V;'S$R;'S;=`$d<%lO$RY*wUzWOy$Rz#T$R#T#U+Z#U;'S$R;'S;=`$d<%lO$RY+`UzWOy$Rz#`$R#`#a+r#a;'S$R;'S;=`$d<%lO$RY+yS!mQzWOy$Rz;'S$R;'S;=`$d<%lO$RY,[UzWOy$Rz#a$R#a#b,n#b;'S$R;'S;=`$d<%lO$RY,sUzWOy$Rz#d$R#d#e-V#e;'S$R;'S;=`$d<%lO$RY-[UzWOy$Rz#c$R#c#d-n#d;'S$R;'S;=`$d<%lO$RY-sUzWOy$Rz#f$R#f#g.V#g;'S$R;'S;=`$d<%lO$RY.[UzWOy$Rz#h$R#h#i.n#i;'S$R;'S;=`$d<%lO$RY.sUzWOy$Rz#T$R#T#U/V#U;'S$R;'S;=`$d<%lO$RY/[UzWOy$Rz#b$R#b#c/n#c;'S$R;'S;=`$d<%lO$RY/sUzWOy$Rz#h$R#h#i0V#i;'S$R;'S;=`$d<%lO$RY0^S!lQzWOy$Rz;'S$R;'S;=`$d<%lO$R~0mWOY0jZr0jrs1Vs#O0j#O#P1[#P;'S0j;'S;=`2W<%lO0j~1[Oj~~1_RO;'S0j;'S;=`1h;=`O0j~1kXOY0jZr0jrs1Vs#O0j#O#P1[#P;'S0j;'S;=`2W;=`<%l0j<%lO0j~2ZP;=`<%l0jZ2cY!ZPOy$Rz!Q$R!Q![3R![!c$R!c!i3R!i#T$R#T#Z3R#Z;'S$R;'S;=`$d<%lO$RY3WYzWOy$Rz!Q$R!Q![3v![!c$R!c!i3v!i#T$R#T#Z3v#Z;'S$R;'S;=`$d<%lO$RY3{YzWOy$Rz!Q$R!Q![4k![!c$R!c!i4k!i#T$R#T#Z4k#Z;'S$R;'S;=`$d<%lO$RY4rYhQzWOy$Rz!Q$R!Q![5b![!c$R!c!i5b!i#T$R#T#Z5b#Z;'S$R;'S;=`$d<%lO$RY5iYhQzWOy$Rz!Q$R!Q![6X![!c$R!c!i6X!i#T$R#T#Z6X#Z;'S$R;'S;=`$d<%lO$RY6^YzWOy$Rz!Q$R!Q![6|![!c$R!c!i6|!i#T$R#T#Z6|#Z;'S$R;'S;=`$d<%lO$RY7TYhQzWOy$Rz!Q$R!Q![7s![!c$R!c!i7s!i#T$R#T#Z7s#Z;'S$R;'S;=`$d<%lO$RY7xYzWOy$Rz!Q$R!Q![8h![!c$R!c!i8h!i#T$R#T#Z8h#Z;'S$R;'S;=`$d<%lO$RY8oShQzWOy$Rz;'S$R;'S;=`$d<%lO$R_9O`Oy$Rz}$R}!O:Q!O!Q$R!Q![:Q![!_$R!_!`;T!`!c$R!c!}:Q!}#R$R#R#S:Q#S#T$R#T#o:Q#o;'S$R;'S;=`$d<%lO$RZ:X^zWcROy$Rz}$R}!O:Q!O!Q$R!Q![:Q![!c$R!c!}:Q!}#R$R#R#S:Q#S#T$R#T#o:Q#o;'S$R;'S;=`$d<%lO$R[;[S!_SzWOy$Rz;'S$R;'S;=`$d<%lO$RZ;oS%SPlQOy$Rz;'S$R;'S;=`$d<%lO$RZQSfROy$Rz;'S$R;'S;=`$d<%lO$R~>cOe~_>jU$|PlQOy$Rz!_$R!_!`;T!`;'S$R;'S;=`$d<%lO$RZ?TWlQ!dPOy$Rz!O$R!O!P?m!P!Q$R!Q![Br![;'S$R;'S;=`$d<%lO$RZ?rUzWOy$Rz!Q$R!Q![@U![;'S$R;'S;=`$d<%lO$RZ@]YzW%OROy$Rz!Q$R!Q![@U![!g$R!g!h@{!h#X$R#X#Y@{#Y;'S$R;'S;=`$d<%lO$RZAQYzWOy$Rz{$R{|Ap|}$R}!OAp!O!Q$R!Q![BX![;'S$R;'S;=`$d<%lO$RZAuUzWOy$Rz!Q$R!Q![BX![;'S$R;'S;=`$d<%lO$RZB`UzW%OROy$Rz!Q$R!Q![BX![;'S$R;'S;=`$d<%lO$RZBy[zW%OROy$Rz!O$R!O!P@U!P!Q$R!Q![Br![!g$R!g!h@{!h#X$R#X#Y@{#Y;'S$R;'S;=`$d<%lO$RZCtSwROy$Rz;'S$R;'S;=`$d<%lO$RZDVWlQOy$Rz!O$R!O!P?m!P!Q$R!Q![Br![;'S$R;'S;=`$d<%lO$RZDtWqROy$Rz!O$R!O!PE^!P!Q$R!Q![@U![;'S$R;'S;=`$d<%lO$RYEcUzWOy$Rz!O$R!O!PEu!P;'S$R;'S;=`$d<%lO$RYE|SvQzWOy$Rz;'S$R;'S;=`$d<%lO$RYF_SlQOy$Rz;'S$R;'S;=`$d<%lO$RZFp[%OROy$Rz!O$R!O!P@U!P!Q$R!Q![Br![!g$R!g!h@{!h#X$R#X#Y@{#Y;'S$R;'S;=`$d<%lO$RkGkUucOy$Rz![$R![!]G}!];'S$R;'S;=`$d<%lO$RXHUS!SPzWOy$Rz;'S$R;'S;=`$d<%lO$RZHgS!oROy$Rz;'S$R;'S;=`$d<%lO$RjHzU!|`lQOy$Rz!_$R!_!`I^!`;'S$R;'S;=`$d<%lO$RjIgS!|`zWlQOy$Rz;'S$R;'S;=`$d<%lO$RnIzU!|`!_SOy$Rz!_$R!_!`%c!`;'S$R;'S;=`$d<%lO$RkJgV!aP!|`lQOy$Rz!_$R!_!`I^!`!aJ|!a;'S$R;'S;=`$d<%lO$RXKTS!aPzWOy$Rz;'S$R;'S;=`$d<%lO$RXKdYOy$Rz}$R}!OLS!O!c$R!c!}Lq!}#T$R#T#oLq#o;'S$R;'S;=`$d<%lO$RXLXWzWOy$Rz!c$R!c!}Lq!}#T$R#T#oLq#o;'S$R;'S;=`$d<%lO$RXLx[!rPzWOy$Rz}$R}!OLq!O!Q$R!Q![Lq![!c$R!c!}Lq!}#T$R#T#oLq#o;'S$R;'S;=`$d<%lO$RZMsS|ROy$Rz;'S$R;'S;=`$d<%lO$R_NUS{VOy$Rz;'S$R;'S;=`$d<%lO$R[NeUOy$Rz!_$R!_!`;T!`;'S$R;'S;=`$d<%lO$RkNzUOy$Rz#b$R#b#c! ^#c;'S$R;'S;=`$d<%lO$Rk! cUzWOy$Rz#W$R#W#X! u#X;'S$R;'S;=`$d<%lO$Rk! |SmczWOy$Rz;'S$R;'S;=`$d<%lO$Rk!!]UOy$Rz#f$R#f#g! u#g;'S$R;'S;=`$d<%lO$RZ!!tS!hROy$Rz;'S$R;'S;=`$d<%lO$RZ!#VS!pROy$Rz;'S$R;'S;=`$d<%lO$R]!#hU!dPOy$Rz!_$R!_!`;T!`;'S$R;'S;=`$d<%lO$RW!#}P;=`<%l#r",tokenizers:[mC,SC,PC,XC,gC,QC,$C,pC,0,1,2,3,4],topRules:{StyleSheet:[0,10],Styles:[1,145]},dialects:{indented:0},specialized:[{term:172,get:t=>TC[t]||-1},{term:171,get:t=>kC[t]||-1},{term:80,get:t=>vC[t]||-1},{term:173,get:t=>bC[t]||-1}],tokenPrec:3217}),tp=He.define({name:"sass",parser:ZC.configure({props:[et.add({Block:dO,Comment(t,e){return{from:t.from+2,to:e.sliceDoc(t.to-2,t.to)=="*/"?t.to-2:t.to}}}),Je.add({Declaration:Ue()})]}),languageData:{commentTokens:{block:{open:"/*",close:"*/"},line:"//"},indentOnInput:/^\s*\}$/,wordChars:"$-"}}),RC=tp.configure({dialect:"indented",props:[Je.add({"Block RuleSet":t=>t.baseIndent+t.unit}),et.add({Block:t=>({from:t.from,to:t.to})})]}),YC=t$(t=>t.name=="VariableName"||t.name=="SassVariableName");function d0(t){return new Ke(t?.indented?RC:tp,tp.data.of({autocomplete:YC}))}const _C=36,f0=1,zC=2,fa=3,Op=4,UC=5,qC=6,VC=7,WC=8,jC=9,CC=10,GC=11,EC=12,AC=13,LC=14,MC=15,NC=16,IC=17,h0=18,DC=19,Q0=20,$0=21,p0=22,BC=23,FC=24;function ip(t){return t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57}function HC(t){return t>=48&&t<=57||t>=97&&t<=102||t>=65&&t<=70}function nr(t,e,O){for(let i=!1;;){if(t.next<0)return;if(t.next==e&&!i){t.advance();return}i=O&&!i&&t.next==92,t.advance()}}function KC(t,e){e:for(;;){if(t.next<0)return;if(t.next==36){t.advance();for(let O=0;O)".charCodeAt(O);for(;;){if(t.next<0)return;if(t.next==i&&t.peek(1)==39){t.advance(2);return}t.advance()}}function np(t,e){for(;!(t.next!=95&&!ip(t.next));)e!=null&&(e+=String.fromCharCode(t.next)),t.advance();return e}function e7(t){if(t.next==39||t.next==34||t.next==96){let e=t.next;t.advance(),nr(t,e,!1)}else np(t)}function m0(t,e){for(;t.next==48||t.next==49;)t.advance();e&&t.next==e&&t.advance()}function g0(t,e){for(;;){if(t.next==46){if(e)break;e=!0}else if(t.next<48||t.next>57)break;t.advance()}if(t.next==69||t.next==101)for(t.advance(),(t.next==43||t.next==45)&&t.advance();t.next>=48&&t.next<=57;)t.advance()}function P0(t){for(;!(t.next<0||t.next==10);)t.advance()}function rr(t,e){for(let O=0;O!=&|~^/",specialVar:"?",identifierQuotes:'"',caseInsensitiveIdentifiers:!1,words:S0("absolute action add after all allocate alter and any are as asc assertion at authorization before begin between both breadth by call cascade cascaded case cast catalog check close collate collation column commit condition connect connection constraint constraints constructor continue corresponding count create cross cube current current_date current_default_transform_group current_transform_group_for_type current_path current_role current_time current_timestamp current_user cursor cycle data day deallocate declare default deferrable deferred delete depth deref desc describe descriptor deterministic diagnostics disconnect distinct do domain drop dynamic each else elseif end end-exec equals escape except exception exec execute exists exit external fetch first for foreign found from free full function general get global go goto grant group grouping handle having hold hour identity if immediate in indicator initially inner inout input insert intersect into is isolation join key language last lateral leading leave left level like limit local localtime localtimestamp locator loop map match method minute modifies module month names natural nesting new next no none not of old on only open option or order ordinality out outer output overlaps pad parameter partial path prepare preserve primary prior privileges procedure public read reads recursive redo ref references referencing relative release repeat resignal restrict result return returns revoke right role rollback rollup routine row rows savepoint schema scroll search second section select session session_user set sets signal similar size some space specific specifictype sql sqlexception sqlstate sqlwarning start state static system_user table temporary then timezone_hour timezone_minute to trailing transaction translation treat trigger under undo union unique unnest until update usage user using value values view when whenever where while with without work write year zone ","array binary bit boolean char character clob date decimal double float int integer interval large national nchar nclob numeric object precision real smallint time timestamp varchar varying ")};function t7(t,e,O,i){let n={};for(let r in ap)n[r]=(t.hasOwnProperty(r)?t:ap)[r];return e&&(n.words=S0(e,O||"",i)),n}function X0(t){return new Oe(e=>{var O;let{next:i}=e;if(e.advance(),rr(i,rp)){for(;rr(e.next,rp);)e.advance();e.acceptToken(_C)}else if(i==36&&t.doubleDollarQuotedStrings){let n=np(e,"");e.next==36&&(e.advance(),KC(e,n),e.acceptToken(fa))}else if(i==39||i==34&&t.doubleQuotedStrings)nr(e,i,t.backslashEscapes),e.acceptToken(fa);else if(i==35&&t.hashComments||i==47&&e.next==47&&t.slashComments)P0(e),e.acceptToken(f0);else if(i==45&&e.next==45&&(!t.spaceAfterDashes||e.peek(1)==32))P0(e),e.acceptToken(f0);else if(i==47&&e.next==42){e.advance();for(let n=1;;){let r=e.next;if(e.next<0)break;if(e.advance(),r==42&&e.next==47){if(n--,e.advance(),!n)break}else r==47&&e.next==42&&(n++,e.advance())}e.acceptToken(zC)}else if((i==101||i==69)&&e.next==39)e.advance(),nr(e,39,!0),e.acceptToken(fa);else if((i==110||i==78)&&e.next==39&&t.charSetCasts)e.advance(),nr(e,39,t.backslashEscapes),e.acceptToken(fa);else if(i==95&&t.charSetCasts)for(let n=0;;n++){if(e.next==39&&n>1){e.advance(),nr(e,39,t.backslashEscapes),e.acceptToken(fa);break}if(!ip(e.next))break;e.advance()}else if(t.plsqlQuotingMechanism&&(i==113||i==81)&&e.next==39&&e.peek(1)>0&&!rr(e.peek(1),rp)){let n=e.peek(1);e.advance(2),JC(e,n),e.acceptToken(fa)}else if(rr(i,t.identifierQuotes)){const n=i==91?93:i;nr(e,n,!1),e.acceptToken(DC)}else if(i==40)e.acceptToken(VC);else if(i==41)e.acceptToken(WC);else if(i==123)e.acceptToken(jC);else if(i==125)e.acceptToken(CC);else if(i==91)e.acceptToken(GC);else if(i==93)e.acceptToken(EC);else if(i==59)e.acceptToken(AC);else if(t.unquotedBitLiterals&&i==48&&e.next==98)e.advance(),m0(e),e.acceptToken(p0);else if((i==98||i==66)&&(e.next==39||e.next==34)){const n=e.next;e.advance(),t.treatBitsAsBytes?(nr(e,n,t.backslashEscapes),e.acceptToken(BC)):(m0(e,n),e.acceptToken(p0))}else if(i==48&&(e.next==120||e.next==88)||(i==120||i==88)&&e.next==39){let n=e.next==39;for(e.advance();HC(e.next);)e.advance();n&&e.next==39&&e.advance(),e.acceptToken(Op)}else if(i==46&&e.next>=48&&e.next<=57)g0(e,!0),e.acceptToken(Op);else if(i==46)e.acceptToken(LC);else if(i>=48&&i<=57)g0(e,!1),e.acceptToken(Op);else if(rr(i,t.operatorChars)){for(;rr(e.next,t.operatorChars);)e.advance();e.acceptToken(MC)}else if(rr(i,t.specialVar))e.next==i&&e.advance(),e7(e),e.acceptToken(IC);else if(i==58||i==44)e.acceptToken(NC);else if(ip(i)){let n=np(e,String.fromCharCode(i));e.acceptToken(e.next==46||e.peek(-n.length-1)==46?h0:(O=t.words[n.toLowerCase()])!==null&&O!==void 0?O:h0)}})}const x0=X0(ap),O7=tt.deserialize({version:14,states:"%vQ]QQOOO#wQRO'#DSO$OQQO'#CwO%eQQO'#CxO%lQQO'#CyO%sQQO'#CzOOQQ'#DS'#DSOOQQ'#C}'#C}O'UQRO'#C{OOQQ'#Cv'#CvOOQQ'#C|'#C|Q]QQOOQOQQOOO'`QQO'#DOO(xQRO,59cO)PQQO,59cO)UQQO'#DSOOQQ,59d,59dO)cQQO,59dOOQQ,59e,59eO)jQQO,59eOOQQ,59f,59fO)qQQO,59fOOQQ-E6{-E6{OOQQ,59b,59bOOQQ-E6z-E6zOOQQ,59j,59jOOQQ-E6|-E6|O+VQRO1G.}O+^QQO,59cOOQQ1G/O1G/OOOQQ1G/P1G/POOQQ1G/Q1G/QP+kQQO'#C}O+rQQO1G.}O)PQQO,59cO,PQQO'#Cw",stateData:",[~OtOSPOSQOS~ORUOSUOTUOUUOVROXSOZTO]XO^QO_UO`UOaPObPOcPOdUOeUOfUOgUOhUO~O^]ORvXSvXTvXUvXVvXXvXZvX]vX_vX`vXavXbvXcvXdvXevXfvXgvXhvX~OsvX~P!jOa_Ob_Oc_O~ORUOSUOTUOUUOVROXSOZTO^tO_UO`UOa`Ob`Oc`OdUOeUOfUOgUOhUO~OWaO~P$ZOYcO~P$ZO[eO~P$ZORUOSUOTUOUUOVROXSOZTO^QO_UO`UOaPObPOcPOdUOeUOfUOgUOhUO~O]hOsoX~P%zOajObjOcjO~O^]ORkaSkaTkaUkaVkaXkaZka]ka_ka`kaakabkackadkaekafkagkahka~Oska~P'kO^]O~OWvXYvX[vX~P!jOWnO~P$ZOYoO~P$ZO[pO~P$ZO^]ORkiSkiTkiUkiVkiXkiZki]ki_ki`kiakibkickidkiekifkigkihki~Oski~P)xOWkaYka[ka~P'kO]hO~P$ZOWkiYki[ki~P)xOasObsOcsO~O",goto:"#hwPPPPPPPPPPPPPPPPPPPPPPPPPPx||||!Y!^!d!xPPP#[TYOZeUORSTWZbdfqT[OZQZORiZSWOZQbRQdSQfTZgWbdfqQ^PWk^lmrQl_Qm`RrseVORSTWZbdfq",nodeNames:"⚠ LineComment BlockComment String Number Bool Null ( ) { } [ ] ; . Operator Punctuation SpecialVar Identifier QuotedIdentifier Keyword Type Bits Bytes Builtin Script Statement CompositeIdentifier Parens Braces Brackets Statement",maxTerm:38,nodeProps:[["isolate",-4,1,2,3,19,""]],skippedNodes:[0,1,2],repeatNodeCount:3,tokenData:"RORO",tokenizers:[0,x0],topRules:{Script:[0,25]},tokenPrec:0});function sp(t){let e=t.cursor().moveTo(t.from,-1);for(;/Comment/.test(e.name);)e.moveTo(e.from,-1);return e.node}function mo(t,e){let O=t.sliceString(e.from,e.to),i=/^([`'"\[])(.*)([`'"\]])$/.exec(O);return i?i[2]:O}function Xu(t){return t&&(t.name=="Identifier"||t.name=="QuotedIdentifier")}function i7(t,e){if(e.name=="CompositeIdentifier"){let O=[];for(let i=e.firstChild;i;i=i.nextSibling)Xu(i)&&O.push(mo(t,i));return O}return[mo(t,e)]}function y0(t,e){for(let O=[];;){if(!e||e.name!=".")return O;let i=sp(e);if(!Xu(i))return O;O.unshift(mo(t,i)),e=sp(i)}}function n7(t,e){let O=$e(t).resolveInner(e,-1),i=a7(t.doc,O);return O.name=="Identifier"||O.name=="QuotedIdentifier"||O.name=="Keyword"?{from:O.from,quoted:O.name=="QuotedIdentifier"?t.doc.sliceString(O.from,O.from+1):null,parents:y0(t.doc,sp(O)),aliases:i}:O.name=="."?{from:e,quoted:null,parents:y0(t.doc,O),aliases:i}:{from:e,quoted:null,parents:[],empty:!0,aliases:i}}const r7=new Set("where group having order union intersect except all distinct limit offset fetch for".split(" "));function a7(t,e){let O;for(let n=e;!O;n=n.parent){if(!n)return null;n.name=="Statement"&&(O=n)}let i=null;for(let n=O.firstChild,r=!1,a=null;n;n=n.nextSibling){let s=n.name=="Keyword"?t.sliceString(n.from,n.to).toLowerCase():null,o=null;if(!r)r=s=="from";else if(s=="as"&&a&&Xu(n.nextSibling))o=mo(t,n.nextSibling);else{if(s&&r7.has(s))break;a&&Xu(n)&&(o=mo(t,n))}o&&(i||(i=Object.create(null)),i[o]=i7(t,a)),a=/Identifier$/.test(n.name)?n:null}return i}function s7(t,e,O){return O.map(i=>({...i,label:i.label[0]==t?i.label:t+i.label+e,apply:void 0}))}const o7=/^\w*$/,l7=/^[`'"\[]?\w*[`'"\]]?$/;function w0(t){return t.self&&typeof t.self.label=="string"}class op{constructor(e,O){this.idQuote=e,this.idCaseInsensitive=O,this.list=[],this.children=void 0}child(e){let O=this.children||(this.children=Object.create(null)),i=O[e];return i||(e&&!this.list.some(n=>n.label==e)&&this.list.push(T0(e,"type",this.idQuote,this.idCaseInsensitive)),O[e]=new op(this.idQuote,this.idCaseInsensitive))}maybeChild(e){return this.children?this.children[e]:null}addCompletion(e){let O=this.list.findIndex(i=>i.label==e.label);O>-1?this.list[O]=e:this.list.push(e)}addCompletions(e){for(let O of e)this.addCompletion(typeof O=="string"?T0(O,"property",this.idQuote,this.idCaseInsensitive):O)}addNamespace(e){Array.isArray(e)?this.addCompletions(e):w0(e)?this.addNamespace(e.children):this.addNamespaceObject(e)}addNamespaceObject(e){for(let O of Object.keys(e)){let i=e[O],n=null,r=O.replace(/\\?\./g,s=>s=="."?"\0":s).split("\0"),a=this;w0(i)&&(n=i.self,i=i.children);for(let s=0;s{let{parents:u,from:d,quoted:h,empty:Q,aliases:$}=n7(c.state,c.pos);if(Q&&!c.explicit)return null;$&&u.length==1&&(u=$[u[0]]||u);let P=o;for(let g of u){for(;!P.children||!P.children[g];)if(P==o&&l)P=l;else if(P==l&&i)P=P.child(i);else return null;let S=P.maybeChild(g);if(!S)return null;P=S}let p=P.list;if(P==o&&$&&(p=p.concat(Object.keys($).map(g=>({label:g,type:"constant"})))),h){let g=h[0],S=k0(g),X=c.state.sliceDoc(c.pos,c.pos+1)==S;return{from:d,to:X?c.pos+1:void 0,options:s7(g,S,p),validFor:l7}}else return{from:d,options:p,validFor:o7}}}function u7(t){return t==$0?"type":t==Q0?"keyword":"variable"}function d7(t,e,O){let i=Object.keys(t).map(n=>O(e?n.toUpperCase():n,u7(t[n])));return iu(["QuotedIdentifier","String","LineComment","BlockComment","."],Ou(i))}let f7=O7.configure({props:[Je.add({Statement:Ue()}),et.add({Statement(t,e){return{from:Math.min(t.from+100,e.doc.lineAt(t.from).to),to:t.to}},BlockComment(t){return{from:t.from+2,to:t.to-2}}}),Fe({Keyword:f.keyword,Type:f.typeName,Builtin:f.standard(f.name),Bits:f.number,Bytes:f.string,Bool:f.bool,Null:f.null,Number:f.number,String:f.string,Identifier:f.name,QuotedIdentifier:f.special(f.string),SpecialVar:f.special(f.name),LineComment:f.lineComment,BlockComment:f.blockComment,Operator:f.operator,"Semi Punctuation":f.punctuation,"( )":f.paren,"{ }":f.brace,"[ ]":f.squareBracket})]});class xu{constructor(e,O,i){this.dialect=e,this.language=O,this.spec=i}get extension(){return this.language.extension}configureLanguage(e,O){return new xu(this.dialect,this.language.configure(e,O),this.spec)}static define(e){let O=t7(e,e.keywords,e.types,e.builtin),i=He.define({name:"sql",parser:f7.configure({tokenizers:[{from:x0,to:X0(O)}]}),languageData:{commentTokens:{line:"--",block:{open:"/*",close:"*/"}},closeBrackets:{brackets:["(","[","{","'",'"',"`"]}}});return new xu(O,i,e)}}function h7(t,e){return{label:t,type:e,boost:-1}}function Q7(t,e=!1,O){return d7(t.dialect.words,e,O||h7)}function $7(t){return t.schema?c7(t.schema,t.tables,t.schemas,t.defaultTable,t.defaultSchema,t.dialect||lp):()=>null}function p7(t){return t.schema?(t.dialect||lp).language.data.of({autocomplete:$7(t)}):[]}function m7(t={}){let e=t.dialect||lp;return new Ke(e.language,[p7(t),e.language.data.of({autocomplete:Q7(e,t.upperCaseKeywords,t.keywordCompletion)})])}const lp=xu.define({}),g7=tt.deserialize({version:14,states:"%pOVOWOOObQPOOOpOSO'#C_OOOO'#Cp'#CpQVOWOOQxQPOOO!TQQOOQ!YQPOOOOOO,58y,58yO!_OSO,58yOOOO-E6n-E6nO!dQQO'#CqQ{QPOOO!iQPOOQ{QPOOO!qQPOOOOOO1G.e1G.eOOQO,59],59]OOQO-E6o-E6oO!yOpO'#CiO#RO`O'#CiQOQPOOO#ZO#tO'#CmO#fO!bO'#CmOOQO,59T,59TO#qOpO,59TO#vO`O,59TOOOO'#Cr'#CrO#{O#tO,59XOOQO,59X,59XOOOO'#Cs'#CsO$WO!bO,59XOOQO1G.o1G.oOOOO-E6p-E6pOOQO1G.s1G.sOOOO-E6q-E6q",stateData:"$g~OjOS~OQROUROkQO~OWTOXUOZUO`VO~OSXOTWO~OXUO[]OlZO~OY^O~O[_O~OT`O~OYaO~OmcOodO~OmfOogO~O^iOnhO~O_jOphO~ObkOqkOrmO~OcnOsnOtmO~OnpO~OppO~ObkOqkOrrO~OcnOsnOtrO~OWX`~",goto:"!^hPPPiPPPPPPPPPmPPPpPPsy!Q!WTROSRe]Re_QSORYSS[T^Rb[QlfRqlQogRso",nodeNames:"⚠ Content Text Interpolation InterpolationContent }} Entity Attribute VueAttributeName : Identifier @ Is ScriptAttributeValue AttributeScript AttributeScript AttributeName AttributeValue Entity Entity",maxTerm:36,nodeProps:[["isolate",-3,3,13,17,""]],skippedNodes:[0],repeatNodeCount:4,tokenData:"'y~RdXY!aYZ!a]^!apq!ars!rwx!w}!O!|!O!P#t!Q![#y![!]$s!_!`%g!b!c%l!c!}#y#R#S#y#T#j#y#j#k%q#k#o#y%W;'S#y;'S;:j$m<%lO#y~!fSj~XY!aYZ!a]^!apq!a~!wOm~~!|Oo~!b#RX`!b}!O!|!Q![!|![!]!|!c!}!|#R#S!|#T#o!|%W;'S!|;'S;:j#n<%lO!|!b#qP;=`<%l!|~#yOl~%W$QXY#t`!b}!O!|!Q![#y![!]!|!c!}#y#R#S#y#T#o#y%W;'S#y;'S;:j$m<%lO#y%W$pP;=`<%l#y~$zXX~`!b}!O!|!Q![!|![!]!|!c!}!|#R#S!|#T#o!|%W;'S!|;'S;:j#n<%lO!|~%lO[~~%qOZ~%W%xXY#t`!b}!O&e!Q![#y![!]!|!c!}#y#R#S#y#T#o#y%W;'S#y;'S;:j$m<%lO#y!b&jX`!b}!O!|!Q![!|![!]!|!c!}'V#R#S!|#T#o'V%W;'S!|;'S;:j#n<%lO!|!b'^XW!b`!b}!O!|!Q![!|![!]!|!c!}'V#R#S!|#T#o'V%W;'S!|;'S;:j#n<%lO!|",tokenizers:[6,7,new fO("b~RP#q#rU~XP#q#r[~aOT~~",17,4),new fO("!k~RQvwX#o#p!_~^TU~Opmq!]m!^;'Sm;'S;=`!X<%lOm~pUOpmq!]m!]!^!S!^;'Sm;'S;=`!X<%lOm~!XOU~~![P;=`<%lm~!bP#o#p!e~!jOk~~",72,2),new fO("[~RPwxU~ZOp~~",11,15),new fO("[~RPrsU~ZOn~~",11,14),new fO("!e~RQvwXwx!_~^Tc~Opmq!]m!^;'Sm;'S;=`!X<%lOm~pUOpmq!]m!]!^!S!^;'Sm;'S;=`!X<%lOm~!XOc~~![P;=`<%lm~!dOt~~",66,35),new fO("!e~RQrsXvw^~^Or~~cTb~Oprq!]r!^;'Sr;'S;=`!^<%lOr~uUOprq!]r!]!^!X!^;'Sr;'S;=`!^<%lOr~!^Ob~~!aP;=`<%lr~",66,33)],topRules:{Content:[0,1],Attribute:[1,7]},tokenPrec:157}),P7=ZO.parser.configure({top:"SingleExpression"}),v0=g7.configure({props:[Fe({Text:f.content,Is:f.definitionOperator,AttributeName:f.attributeName,VueAttributeName:f.keyword,Identifier:f.variableName,"AttributeValue ScriptAttributeValue":f.attributeValue,Entity:f.character,"{{ }}":f.brace,"@ :":f.punctuation})]}),b0={parser:P7},S7=v0.configure({wrap:Nr((t,e)=>t.name=="InterpolationContent"?b0:null)}),X7=v0.configure({wrap:Nr((t,e)=>t.name=="AttributeScript"?b0:null),top:"Attribute"}),x7={parser:S7},y7={parser:X7},cp=su();function Z0(t){return t.configure({dialect:"selfClosing",wrap:Nr(T7)},"vue")}const w7=Z0(cp.language);function T7(t,e){switch(t.name){case"Attribute":return/^(@|:|v-)/.test(e.read(t.from,t.from+2))?y7:null;case"Text":return x7}return null}function k7(t={}){let e=cp;if(t.base){if(t.base.language.name!="html"||!(t.base.language instanceof He))throw new RangeError("The base option must be the result of calling html(...)");e=t.base}return new Ke(e.language==cp.language?w7:Z0(e.language),[e.support,e.language.data.of({closeBrackets:{brackets:["{",'"']}})])}const up=1,v7=2,b7=3,Z7=4,R7=5,Y7=36,_7=37,z7=38,U7=11,q7=13;function V7(t){return t==45||t==46||t==58||t>=65&&t<=90||t==95||t>=97&&t<=122||t>=161}function W7(t){return t==9||t==10||t==13||t==32}let R0=null,Y0=null,_0=0;function dp(t,e){let O=t.pos+e;if(Y0==t&&_0==O)return R0;for(;W7(t.peek(e));)e++;let i="";for(;;){let n=t.peek(e);if(!V7(n))break;i+=String.fromCharCode(n),e++}return Y0=t,_0=O,R0=i||null}function z0(t,e){this.name=t,this.parent=e}const j7=new Jn({start:null,shift(t,e,O,i){return e==up?new z0(dp(i,1)||"",t):t},reduce(t,e){return e==U7&&t?t.parent:t},reuse(t,e,O,i){let n=e.type.id;return n==up||n==q7?new z0(dp(i,1)||"",t):t},strict:!1}),C7=new Oe((t,e)=>{if(t.next==60){if(t.advance(),t.next==47){t.advance();let O=dp(t,0);if(!O)return t.acceptToken(R7);if(e.context&&O==e.context.name)return t.acceptToken(v7);for(let i=e.context;i;i=i.parent)if(i.name==O)return t.acceptToken(b7,-2);t.acceptToken(Z7)}else if(t.next!=33&&t.next!=63)return t.acceptToken(up)}},{contextual:!0});function fp(t,e){return new Oe(O=>{let i=0,n=e.charCodeAt(0);e:for(;!(O.next<0);O.advance(),i++)if(O.next==n){for(let r=1;r"),E7=fp(_7,"?>"),A7=fp(z7,"]]>"),L7=Fe({Text:f.content,"StartTag StartCloseTag EndTag SelfCloseEndTag":f.angleBracket,TagName:f.tagName,"MismatchedCloseTag/TagName":[f.tagName,f.invalid],AttributeName:f.attributeName,AttributeValue:f.attributeValue,Is:f.definitionOperator,"EntityReference CharacterReference":f.character,Comment:f.blockComment,ProcessingInst:f.processingInstruction,DoctypeDecl:f.documentMeta,Cdata:f.special(f.string)}),M7=tt.deserialize({version:14,states:",lOQOaOOOrOxO'#CfOzOpO'#CiO!tOaO'#CgOOOP'#Cg'#CgO!{OrO'#CrO#TOtO'#CsO#]OpO'#CtOOOP'#DT'#DTOOOP'#Cv'#CvQQOaOOOOOW'#Cw'#CwO#eOxO,59QOOOP,59Q,59QOOOO'#Cx'#CxO#mOpO,59TO#uO!bO,59TOOOP'#C|'#C|O$TOaO,59RO$[OpO'#CoOOOP,59R,59ROOOQ'#C}'#C}O$dOrO,59^OOOP,59^,59^OOOS'#DO'#DOO$lOtO,59_OOOP,59_,59_O$tOpO,59`O$|OpO,59`OOOP-E6t-E6tOOOW-E6u-E6uOOOP1G.l1G.lOOOO-E6v-E6vO%UO!bO1G.oO%UO!bO1G.oO%dOpO'#CkO%lO!bO'#CyO%zO!bO1G.oOOOP1G.o1G.oOOOP1G.w1G.wOOOP-E6z-E6zOOOP1G.m1G.mO&VOpO,59ZO&_OpO,59ZOOOQ-E6{-E6{OOOP1G.x1G.xOOOS-E6|-E6|OOOP1G.y1G.yO&gOpO1G.zO&gOpO1G.zOOOP1G.z1G.zO&oO!bO7+$ZO&}O!bO7+$ZOOOP7+$Z7+$ZOOOP7+$c7+$cO'YOpO,59VO'bOpO,59VO'mO!bO,59eOOOO-E6w-E6wO'{OpO1G.uO'{OpO1G.uOOOP1G.u1G.uO(TOpO7+$fOOOP7+$f7+$fO(]O!bO<c!|;'S(o;'S;=`)]<%lO(oi>jX|W!O`Or(ors&osv(owx'}x!r(o!r!s?V!s;'S(o;'S;=`)]<%lO(oi?^X|W!O`Or(ors&osv(owx'}x!g(o!g!h?y!h;'S(o;'S;=`)]<%lO(oi@QY|W!O`Or?yrs@psv?yvwA[wxBdx!`?y!`!aCr!a;'S?y;'S;=`Db<%lO?ya@uV!O`Ov@pvxA[x!`@p!`!aAy!a;'S@p;'S;=`B^<%lO@pPA_TO!`A[!`!aAn!a;'SA[;'S;=`As<%lOA[PAsOiPPAvP;=`<%lA[aBQSiP!O`Ov&ox;'S&o;'S;=`'Q<%lO&oaBaP;=`<%l@pXBiX|WOrBdrsA[svBdvwA[w!`Bd!`!aCU!a;'SBd;'S;=`Cl<%lOBdXC]TiP|WOr'}sv'}w;'S'};'S;=`(c<%lO'}XCoP;=`<%lBdiC{ViP|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oiDeP;=`<%l?yiDoZ|W!O`Or(ors&osv(owx'}x!e(o!e!fEb!f#V(o#V#WIr#W;'S(o;'S;=`)]<%lO(oiEiX|W!O`Or(ors&osv(owx'}x!f(o!f!gFU!g;'S(o;'S;=`)]<%lO(oiF]X|W!O`Or(ors&osv(owx'}x!c(o!c!dFx!d;'S(o;'S;=`)]<%lO(oiGPX|W!O`Or(ors&osv(owx'}x!v(o!v!wGl!w;'S(o;'S;=`)]<%lO(oiGsX|W!O`Or(ors&osv(owx'}x!c(o!c!dH`!d;'S(o;'S;=`)]<%lO(oiHgX|W!O`Or(ors&osv(owx'}x!}(o!}#OIS#O;'S(o;'S;=`)]<%lO(oiI]V|W!O`yPOr(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oiIyX|W!O`Or(ors&osv(owx'}x#W(o#W#XJf#X;'S(o;'S;=`)]<%lO(oiJmX|W!O`Or(ors&osv(owx'}x#T(o#T#UKY#U;'S(o;'S;=`)]<%lO(oiKaX|W!O`Or(ors&osv(owx'}x#h(o#h#iK|#i;'S(o;'S;=`)]<%lO(oiLTX|W!O`Or(ors&osv(owx'}x#T(o#T#UH`#U;'S(o;'S;=`)]<%lO(oiLwX|W!O`Or(ors&osv(owx'}x#c(o#c#dMd#d;'S(o;'S;=`)]<%lO(oiMkX|W!O`Or(ors&osv(owx'}x#V(o#V#WNW#W;'S(o;'S;=`)]<%lO(oiN_X|W!O`Or(ors&osv(owx'}x#h(o#h#iNz#i;'S(o;'S;=`)]<%lO(oi! RX|W!O`Or(ors&osv(owx'}x#m(o#m#n! n#n;'S(o;'S;=`)]<%lO(oi! uX|W!O`Or(ors&osv(owx'}x#d(o#d#e!!b#e;'S(o;'S;=`)]<%lO(oi!!iX|W!O`Or(ors&osv(owx'}x#X(o#X#Y?y#Y;'S(o;'S;=`)]<%lO(oi!#_V!SP|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(ok!$PXaQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qo!$wX[UVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk!%mZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a!&`!a;'S$q;'S;=`)c<%lO$qk!&kX!RQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk!'aZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_#P$q#P#Q!(S#Q;'S$q;'S;=`)c<%lO$qk!(]ZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a!)O!a;'S$q;'S;=`)c<%lO$qk!)ZXxQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$q",tokenizers:[C7,G7,E7,A7,0,1,2,3,4],topRules:{Document:[0,6]},tokenPrec:0});function yu(t,e){let O=e&&e.getChild("TagName");return O?t.sliceString(O.from,O.to):""}function hp(t,e){let O=e&&e.firstChild;return!O||O.name!="OpenTag"?"":yu(t,O)}function N7(t,e,O){let i=e&&e.getChildren("Attribute").find(r=>r.from<=O&&r.to>=O),n=i&&i.getChild("AttributeName");return n?t.sliceString(n.from,n.to):""}function Qp(t){for(let e=t&&t.parent;e;e=e.parent)if(e.name=="Element")return e;return null}function I7(t,e){var O;let i=$e(t).resolveInner(e,-1),n=null;for(let r=i;!n&&r.parent;r=r.parent)(r.name=="OpenTag"||r.name=="CloseTag"||r.name=="SelfClosingTag"||r.name=="MismatchedCloseTag")&&(n=r);if(n&&(n.to>e||n.lastChild.type.isError)){let r=n.parent;if(i.name=="TagName")return n.name=="CloseTag"||n.name=="MismatchedCloseTag"?{type:"closeTag",from:i.from,context:r}:{type:"openTag",from:i.from,context:Qp(r)};if(i.name=="AttributeName")return{type:"attrName",from:i.from,context:n};if(i.name=="AttributeValue")return{type:"attrValue",from:i.from,context:n};let a=i==n||i.name=="Attribute"?i.childBefore(e):i;return a?.name=="StartTag"?{type:"openTag",from:e,context:Qp(r)}:a?.name=="StartCloseTag"&&a.to<=e?{type:"closeTag",from:e,context:r}:a?.name=="Is"?{type:"attrValue",from:e,context:n}:a?{type:"attrName",from:e,context:n}:null}else if(i.name=="StartCloseTag")return{type:"closeTag",from:e,context:i.parent};for(;i.parent&&i.to==e&&!(!((O=i.lastChild)===null||O===void 0)&&O.type.isError);)i=i.parent;return i.name=="Element"||i.name=="Text"||i.name=="Document"?{type:"tag",from:e,context:i.name=="Element"?i:Qp(i)}:null}class D7{constructor(e,O,i){this.attrs=O,this.attrValues=i,this.children=[],this.name=e.name,this.completion=Object.assign(Object.assign({type:"type"},e.completion||{}),{label:this.name}),this.openCompletion=Object.assign(Object.assign({},this.completion),{label:"<"+this.name}),this.closeCompletion=Object.assign(Object.assign({},this.completion),{label:"",boost:2}),this.closeNameCompletion=Object.assign(Object.assign({},this.completion),{label:this.name+">"}),this.text=e.textContent?e.textContent.map(n=>({label:n,type:"text"})):[]}}const $p=/^[:\-\.\w\u00b7-\uffff]*$/;function U0(t){return Object.assign(Object.assign({type:"property"},t.completion||{}),{label:t.name})}function q0(t){return typeof t=="string"?{label:`"${t}"`,type:"constant"}:/^"/.test(t.label)?t:Object.assign(Object.assign({},t),{label:`"${t.label}"`})}function B7(t,e){let O=[],i=[],n=Object.create(null);for(let o of e){let l=U0(o);O.push(l),o.global&&i.push(l),o.values&&(n[o.name]=o.values.map(q0))}let r=[],a=[],s=Object.create(null);for(let o of t){let l=i,c=n;o.attributes&&(l=l.concat(o.attributes.map(d=>typeof d=="string"?O.find(h=>h.label==d)||{label:d,type:"property"}:(d.values&&(c==n&&(c=Object.create(c)),c[d.name]=d.values.map(q0)),U0(d)))));let u=new D7(o,l,c);s[u.name]=u,r.push(u),o.top&&a.push(u)}a.length||(a=r);for(let o=0;o{var l;let{doc:c}=o.state,u=I7(o.state,o.pos);if(!u||u.type=="tag"&&!o.explicit)return null;let{type:d,from:h,context:Q}=u;if(d=="openTag"){let $=a,P=hp(c,Q);if(P){let p=s[P];$=p?.children||r}return{from:h,options:$.map(p=>p.completion),validFor:$p}}else if(d=="closeTag"){let $=hp(c,Q);return $?{from:h,to:o.pos+(c.sliceString(o.pos,o.pos+1)==">"?1:0),options:[((l=s[$])===null||l===void 0?void 0:l.closeNameCompletion)||{label:$+">",type:"type"}],validFor:$p}:null}else if(d=="attrName"){let $=s[yu(c,Q)];return{from:h,options:$?.attrs||i,validFor:$p}}else if(d=="attrValue"){let $=N7(c,Q,h);if(!$)return null;let P=s[yu(c,Q)],p=(P?.attrValues||n)[$];return!p||!p.length?null:{from:h,to:o.pos+(c.sliceString(o.pos,o.pos+1)=='"'?1:0),options:p,validFor:/^"[^"]*"?$/}}else if(d=="tag"){let $=hp(c,Q),P=s[$],p=[],g=Q&&Q.lastChild;$&&(!g||g.name!="CloseTag"||yu(c,g)!=$)&&p.push(P?P.closeCompletion:{label:"",type:"type",boost:2});let S=p.concat((P?.children||(Q?r:a)).map(X=>X.openCompletion));if(Q&&P?.text.length){let X=Q.firstChild;X.to>o.pos-20&&!/\S/.test(o.state.sliceDoc(X.to,o.pos))&&(S=S.concat(P.text))}return{from:h,options:S,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}else return null}}const pp=He.define({name:"xml",parser:M7.configure({props:[Je.add({Element(t){let e=/^\s*<\//.test(t.textAfter);return t.lineIndent(t.node.from)+(e?0:t.unit)},"OpenTag CloseTag SelfClosingTag"(t){return t.column(t.node.from)+t.unit}}),et.add({Element(t){let e=t.firstChild,O=t.lastChild;return!e||e.name!="OpenTag"?null:{from:e.to,to:O.name=="CloseTag"?O.from:t.to}}}),EQ.add({"OpenTag CloseTag":t=>t.getChild("TagName")})]}),languageData:{commentTokens:{block:{open:""}},indentOnInput:/^\s*<\/$/}});function F7(t={}){let e=[pp.data.of({autocomplete:B7(t.elements||[],t.attributes||[])})];return t.autoCloseTags!==!1&&e.push(H7),new Ke(pp,e)}function V0(t,e,O=t.length){if(!e)return"";let i=e.firstChild,n=i&&i.getChild("TagName");return n?t.sliceString(n.from,Math.min(n.to,O)):""}const H7=L.inputHandler.of((t,e,O,i,n)=>{if(t.composing||t.state.readOnly||e!=O||i!=">"&&i!="/"||!pp.isActiveAt(t.state,e,-1))return!1;let r=n(),{state:a}=r,s=a.changeByRange(o=>{var l,c,u;let{head:d}=o,h=a.doc.sliceString(d-1,d)==i,Q=$e(a).resolveInner(d,-1),$;if(h&&i==">"&&Q.name=="EndTag"){let P=Q.parent;if(((c=(l=P.parent)===null||l===void 0?void 0:l.lastChild)===null||c===void 0?void 0:c.name)!="CloseTag"&&($=V0(a.doc,P.parent,d))){let p=d+(a.doc.sliceString(d,d+1)===">"?1:0),g=``;return{range:o,changes:{from:d,to:p,insert:g}}}}else if(h&&i=="/"&&Q.name=="StartCloseTag"){let P=Q.parent;if(Q.from==d-2&&((u=P.lastChild)===null||u===void 0?void 0:u.name)!="CloseTag"&&($=V0(a.doc,P,d))){let p=d+(a.doc.sliceString(d,d+1)===">"?1:0),g=`${$}>`;return{range:v.cursor(d+g.length,-1),changes:{from:d,to:p,insert:g}}}}return{range:o}});return s.changes.empty?!1:(t.dispatch([r,a.update(s,{userEvent:"input.complete",scrollIntoView:!0})]),!0)}),ha=63,W0=64,K7=1,J7=2,j0=3,eG=4,C0=5,tG=6,OG=7,G0=65,iG=66,nG=8,rG=9,aG=10,sG=11,oG=12,E0=13,lG=19,cG=20,uG=29,dG=33,fG=34,hG=47,QG=0,mp=1,gp=2,go=3,Pp=4;let ar=class{constructor(e,O,i){this.parent=e,this.depth=O,this.type=i,this.hash=(e?e.hash+e.hash<<8:0)+O+(O<<4)+i}};ar.top=new ar(null,-1,QG);function Po(t,e){for(let O=0,i=e-t.pos-1;;i--,O++){let n=t.peek(i);if(bi(n)||n==-1)return O}}function Sp(t){return t==32||t==9}function bi(t){return t==10||t==13}function A0(t){return Sp(t)||bi(t)}function sr(t){return t<0||A0(t)}const $G=new Jn({start:ar.top,reduce(t,e){return t.type==go&&(e==cG||e==fG)?t.parent:t},shift(t,e,O,i){if(e==j0)return new ar(t,Po(i,i.pos),mp);if(e==G0||e==C0)return new ar(t,Po(i,i.pos),gp);if(e==ha)return t.parent;if(e==lG||e==dG)return new ar(t,0,go);if(e==E0&&t.type==Pp)return t.parent;if(e==hG){let n=/[1-9]/.exec(i.read(i.pos,O.pos));if(n)return new ar(t,t.depth+ +n[0],Pp)}return t},hash(t){return t.hash}});function Qa(t,e,O=0){return t.peek(O)==e&&t.peek(O+1)==e&&t.peek(O+2)==e&&sr(t.peek(O+3))}const pG=new Oe((t,e)=>{if(t.next==-1&&e.canShift(W0))return t.acceptToken(W0);let O=t.peek(-1);if((bi(O)||O<0)&&e.context.type!=go){if(Qa(t,45))if(e.canShift(ha))t.acceptToken(ha);else return t.acceptToken(K7,3);if(Qa(t,46))if(e.canShift(ha))t.acceptToken(ha);else return t.acceptToken(J7,3);let i=0;for(;t.next==32;)i++,t.advance();(i{if(e.context.type==go){t.next==63&&(t.advance(),sr(t.next)&&t.acceptToken(OG));return}if(t.next==45)t.advance(),sr(t.next)&&t.acceptToken(e.context.type==mp&&e.context.depth==Po(t,t.pos-1)?eG:j0);else if(t.next==63)t.advance(),sr(t.next)&&t.acceptToken(e.context.type==gp&&e.context.depth==Po(t,t.pos-1)?tG:C0);else{let O=t.pos;for(;;)if(Sp(t.next)){if(t.pos==O)return;t.advance()}else if(t.next==33)N0(t);else if(t.next==38)Xp(t);else if(t.next==42){Xp(t);break}else if(t.next==39||t.next==34){if(xp(t,!0))break;return}else if(t.next==91||t.next==123){if(!PG(t))return;break}else{I0(t,!0,!1,0);break}for(;Sp(t.next);)t.advance();if(t.next==58){if(t.pos==O&&e.canShift(uG))return;let i=t.peek(1);sr(i)&&t.acceptTokenTo(e.context.type==gp&&e.context.depth==Po(t,O)?iG:G0,O)}}},{contextual:!0});function gG(t){return t>32&&t<127&&t!=34&&t!=37&&t!=44&&t!=60&&t!=62&&t!=92&&t!=94&&t!=96&&t!=123&&t!=124&&t!=125}function L0(t){return t>=48&&t<=57||t>=97&&t<=102||t>=65&&t<=70}function M0(t,e){return t.next==37?(t.advance(),L0(t.next)&&t.advance(),L0(t.next)&&t.advance(),!0):gG(t.next)||e&&t.next==44?(t.advance(),!0):!1}function N0(t){if(t.advance(),t.next==60){for(t.advance();;)if(!M0(t,!0)){t.next==62&&t.advance();break}}else for(;M0(t,!1););}function Xp(t){for(t.advance();!sr(t.next)&&wu(t.next)!="f";)t.advance()}function xp(t,e){let O=t.next,i=!1,n=t.pos;for(t.advance();;){let r=t.next;if(r<0)break;if(t.advance(),r==O)if(r==39)if(t.next==39)t.advance();else break;else break;else if(r==92&&O==34)t.next>=0&&t.advance();else if(bi(r)){if(e)return!1;i=!0}else if(e&&t.pos>=n+1024)return!1}return!i}function PG(t){for(let e=[],O=t.pos+1024;;)if(t.next==91||t.next==123)e.push(t.next),t.advance();else if(t.next==39||t.next==34){if(!xp(t,!0))return!1}else if(t.next==93||t.next==125){if(e[e.length-1]!=t.next-2)return!1;if(e.pop(),t.advance(),!e.length)return!0}else{if(t.next<0||t.pos>O||bi(t.next))return!1;t.advance()}}const SG="iiisiiissisfissssssssssssisssiiissssssssssssssssssssssssssfsfssissssssssssssssssssssssssssfif";function wu(t){return t<33?"u":t>125?"s":SG[t-33]}function yp(t,e){let O=wu(t);return O!="u"&&!(e&&O=="f")}function I0(t,e,O,i){if(wu(t.next)=="s"||(t.next==63||t.next==58||t.next==45)&&yp(t.peek(1),O))t.advance();else return!1;let n=t.pos;for(;;){let r=t.next,a=0,s=i+1;for(;A0(r);){if(bi(r)){if(e)return!1;s=0}else s++;r=t.peek(++a)}if(!(r>=0&&(r==58?yp(t.peek(a+1),O):r==35?t.peek(a-1)!=32:yp(r,O)))||!O&&s<=i||s==0&&!O&&(Qa(t,45,a)||Qa(t,46,a)))break;if(e&&wu(r)=="f")return!1;for(let l=a;l>=0;l--)t.advance();if(e&&t.pos>n+1024)return!1}return!0}const XG=new Oe((t,e)=>{if(t.next==33)N0(t),t.acceptToken(oG);else if(t.next==38||t.next==42){let O=t.next==38?aG:sG;Xp(t),t.acceptToken(O)}else t.next==39||t.next==34?(xp(t,!1),t.acceptToken(rG)):I0(t,!1,e.context.type==go,e.context.depth)&&t.acceptToken(nG)}),xG=new Oe((t,e)=>{let O=e.context.type==Pp?e.context.depth:-1,i=t.pos;e:for(;;){let n=0,r=t.next;for(;r==32;)r=t.peek(++n);if(!n&&(Qa(t,45,n)||Qa(t,46,n))||!bi(r)&&(O<0&&(O=Math.max(e.context.depth+1,n)),nYAN>Y",stateData:";S~O!fOS!gOS^OS~OP_OQbORSOTUOWROXROYYOZZO[XOcPOqQO!PVO!V[O!cTO~O`cO~P]OVkOWROXROYeOZfO[dOcPOmhOqQO~OboO~P!bOVtOWROXROYeOZfO[dOcPOmrOqQO~OpwO~P#WORSOTUOWROXROYYOZZO[XOcPOqQO!PVO!cTO~OSvP!avP!bvP~P#|OWROXROYeOZfO[dOcPOqQO~OmzO~P%OOm!OOUzP!azP!bzP!dzP~P#|O^!SO!b!QO!f!TO!g!RO~ORSOTUOWROXROcPOqQO!PVO!cTO~OY!UOP!QXQ!QX!V!QX!`!QXS!QX!a!QX!b!QXU!QXm!QX!d!QX~P&aO[!WOP!SXQ!SX!V!SX!`!SXS!SX!a!SX!b!SXU!SXm!SX!d!SX~P&aO^!ZO!W![O!b!YO!f!]O!g!YO~OP!_O!V[OQaX!`aX~OPaXQaX!VaX!`aX~P#|OP!bOQ!cO!V[O~OP_O!V[O~P#|OWROXROY!fOcPOqQObfXmfXofXpfX~OWROXRO[!hOcPOqQObhXmhXohXphX~ObeXmlXoeX~ObkXokX~P%OOm!kO~Om!lObnPonP~P%OOb!pOo!oO~Ob!pO~P!bOm!sOosXpsX~OosXpsX~P%OOm!uOotPptP~P%OOo!xOp!yO~Op!yO~P#WOS!|O!a#OO!b#OO~OUyX!ayX!byX!dyX~P#|Om#QO~OU#SO!a#UO!b#UO!d#RO~Om#WOUzX!azX!bzX!dzX~O]#XO~O!b#XO!g#YO~O^#ZO!b#XO!g#YO~OP!RXQ!RX!V!RX!`!RXS!RX!a!RX!b!RXU!RXm!RX!d!RX~P&aOP!TXQ!TX!V!TX!`!TXS!TX!a!TX!b!TXU!TXm!TX!d!TX~P&aO!b#^O!g#^O~O^#_O!b#^O!f#`O!g#^O~O^#_O!W#aO!b#^O!g#^O~OPaaQaa!Vaa!`aa~P#|OP#cO!V[OQ!XX!`!XX~OP!XXQ!XX!V!XX!`!XX~P#|OP_O!V[OQ!_X!`!_X~P#|OWROXROcPOqQObgXmgXogXpgX~OWROXROcPOqQObiXmiXoiXpiX~Obkaoka~P%OObnXonX~P%OOm#kO~Ob#lOo!oO~Oosapsa~P%OOotXptX~P%OOm#pO~Oo!xOp#qO~OSwP!awP!bwP~P#|OS!|O!a#vO!b#vO~OUya!aya!bya!dya~P#|Om#xO~P%OOm#{OU}P!a}P!b}P!d}P~P#|OU#SO!a$OO!b$OO!d#RO~O]$QO~O!b$QO!g$RO~O!b$SO!g$SO~O^$TO!b$SO!g$SO~O^$TO!b$SO!f$UO!g$SO~OP!XaQ!Xa!V!Xa!`!Xa~P#|Obnaona~P%OOotapta~P%OOo!xO~OU|X!a|X!b|X!d|X~P#|Om$ZO~Om$]OU}X!a}X!b}X!d}X~O]$^O~O!b$_O!g$_O~O^$`O!b$_O!g$_O~OU|a!a|a!b|a!d|a~P#|O!b$cO!g$cO~O",goto:",]!mPPPPPPPPPPPPPPPPP!nPP!v#v#|$`#|$c$f$j$nP%VPPP!v%Y%^%a%{&O%a&R&U&X&_&b%aP&e&{&e'O'RPP']'a'g'm's'y(XPPPPPPPP(_)e*X+c,VUaObcR#e!c!{ROPQSTUXY_bcdehknrtvz!O!U!W!_!b!c!f!h!k!l!s!u!|#Q#R#S#W#c#k#p#x#{$Z$]QmPR!qnqfPQThknrtv!k!l!s!u#R#k#pR!gdR!ieTlPnTjPnSiPnSqQvQ{TQ!mkQ!trQ!vtR#y#RR!nkTsQvR!wt!RWOSUXY_bcz!O!U!W!_!b!c!|#Q#S#W#c#x#{$Z$]RySR#t!|R|TR|UQ!PUR#|#SR#z#RR#z#SyZOSU_bcz!O!_!b!c!|#Q#S#W#c#x#{$Z$]R!VXR!XYa]O^abc!a!c!eT!da!eQnPR!rnQvQR!{vQ!}yR#u!}Q#T|R#}#TW^Obc!cS!^^!aT!aa!eQ!eaR#f!eW`Obc!cQxSS}U#SQ!`_Q#PzQ#V!OQ#b!_Q#d!bQ#s!|Q#w#QQ$P#WQ$V#cQ$Y#xQ$[#{Q$a$ZR$b$]xZOSU_bcz!O!_!b!c!|#Q#S#W#c#x#{$Z$]Q!VXQ!XYQ#[!UR#]!W!QWOSUXY_bcz!O!U!W!_!b!c!|#Q#S#W#c#x#{$Z$]pfPQThknrtv!k!l!s!u#R#k#pQ!gdQ!ieQ#g!fR#h!hSgPn^pQTkrtv#RQ!jhQ#i!kQ#j!lQ#n!sQ#o!uQ$W#kR$X#pQuQR!zv",nodeNames:"⚠ DirectiveEnd DocEnd - - ? ? ? Literal QuotedLiteral Anchor Alias Tag BlockLiteralContent Comment Stream BOM Document ] [ FlowSequence Item Tagged Anchored Anchored Tagged FlowMapping Pair Key : Pair , } { FlowMapping Pair Pair BlockSequence Item Item BlockMapping Pair Pair Key Pair Pair BlockLiteral BlockLiteralHeader Tagged Anchored Anchored Tagged Directive DirectiveName DirectiveContent Document",maxTerm:74,context:$G,nodeProps:[["isolate",-3,8,9,14,""],["openedBy",18,"[",32,"{"],["closedBy",19,"]",33,"}"]],propSources:[yG],skippedNodes:[0],repeatNodeCount:6,tokenData:"-Y~RnOX#PXY$QYZ$]Z]#P]^$]^p#Ppq$Qqs#Pst$btu#Puv$yv|#P|}&e}![#P![!]'O!]!`#P!`!a'i!a!}#P!}#O*g#O#P#P#P#Q+Q#Q#o#P#o#p+k#p#q'i#q#r,U#r;'S#P;'S;=`#z<%l?HT#P?HT?HU,o?HUO#PQ#UU!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PQ#kTOY#PZs#Pt;'S#P;'S;=`#z<%lO#PQ#}P;=`<%l#P~$VQ!f~XY$Qpq$Q~$bO!g~~$gS^~OY$bZ;'S$b;'S;=`$s<%lO$b~$vP;=`<%l$bR%OX!WQOX%kXY#PZ]%k]^#P^p%kpq#hq;'S%k;'S;=`&_<%lO%kR%rX!WQ!VPOX%kXY#PZ]%k]^#P^p%kpq#hq;'S%k;'S;=`&_<%lO%kR&bP;=`<%l%kR&lUoP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR'VUmP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR'p[!PP!WQOY#PZp#Ppq#hq{#P{|(f|}#P}!O(f!O!R#P!R![)p![;'S#P;'S;=`#z<%lO#PR(mW!PP!WQOY#PZp#Ppq#hq!R#P!R![)V![;'S#P;'S;=`#z<%lO#PR)^U!PP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR)wY!PP!WQOY#PZp#Ppq#hq{#P{|)V|}#P}!O)V!O;'S#P;'S;=`#z<%lO#PR*nUcP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR+XUbP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR+rUqP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR,]UpP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR,vU`P!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#P",tokenizers:[pG,mG,XG,xG,0,1],topRules:{Stream:[0,15]},tokenPrec:0}),TG=He.define({name:"yaml",parser:wG.configure({props:[Je.add({Stream:t=>{for(let e=t.node.resolve(t.pos,-1);e&&e.to>=t.pos;e=e.parent){if(e.name=="BlockLiteralContent"&&e.fromt.pos)return null}}return null},FlowMapping:FO({closing:"}"}),FlowSequence:FO({closing:"]"})}),et.add({"FlowMapping FlowSequence":dO,"Item Pair BlockLiteral":(t,e)=>({from:e.doc.lineAt(t.from).to,to:t.to})})]}),languageData:{commentTokens:{line:"#"},indentOnInput:/^\s*[\]\}]$/}});function kG(){return new Ke(TG)}function wp(t,e,O,i,n,r){this.indented=t,this.column=e,this.type=O,this.info=i,this.align=n,this.prev=r}function Tu(t,e,O,i){var n=t.indented;return t.context&&t.context.type=="statement"&&O!="statement"&&(n=t.context.indented),t.context=new wp(n,e,O,i,null,t.context)}function So(t){var e=t.context.type;return(e==")"||e=="]"||e=="}")&&(t.indented=t.context.indented),t.context=t.context.prev}function D0(t,e,O){if(e.prevToken=="variable"||e.prevToken=="type"||/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(t.string.slice(0,O))||e.typeAtEndOfLine&&t.column()==t.indentation())return!0}function Tp(t){for(;;){if(!t||t.type=="top")return!0;if(t.type=="}"&&t.prev.info!="namespace")return!1;t=t.prev}}function Jt(t){var e=t.statementIndentUnit,O=t.dontAlignCalls,i=t.keywords||{},n=t.types||{},r=t.builtin||{},a=t.blockKeywords||{},s=t.defKeywords||{},o=t.atoms||{},l=t.hooks||{},c=t.multiLineStrings,u=t.indentStatements!==!1,d=t.indentSwitch!==!1,h=t.namespaceSeparator,Q=t.isPunctuationChar||/[\[\]{}\(\),;\:\.]/,$=t.numberStart||/[\d\.]/,P=t.number||/^(?:0x[a-f\d]+|0b[01]+|(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?)(u|ll?|l|f)?/i,p=t.isOperatorChar||/[+\-*&%=<>!?|\/]/,g=t.isIdentifierChar||/[\w\$_\xa1-\uffff]/,S=t.isReservedIdentifier||!1,X,x;function T(b,R){var Y=b.next();if(l[Y]){var z=l[Y](b,R);if(z!==!1)return z}if(Y=='"'||Y=="'")return R.tokenize=w(Y),R.tokenize(b,R);if($.test(Y)){if(b.backUp(1),b.match(P))return"number";b.next()}if(Q.test(Y))return X=Y,null;if(Y=="/"){if(b.eat("*"))return R.tokenize=_,_(b,R);if(b.eat("/"))return b.skipToEnd(),"comment"}if(p.test(Y)){for(;!b.match(/^\/[\/*]/,!1)&&b.eat(p););return"operator"}if(b.eatWhile(g),h)for(;b.match(h);)b.eatWhile(g);var G=b.current();return Zi(i,G)?(Zi(a,G)&&(X="newstatement"),Zi(s,G)&&(x=!0),"keyword"):Zi(n,G)?"type":Zi(r,G)||S&&S(G)?(Zi(a,G)&&(X="newstatement"),"builtin"):Zi(o,G)?"atom":"variable"}function w(b){return function(R,Y){for(var z=!1,G,ee=!1;(G=R.next())!=null;){if(G==b&&!z){ee=!0;break}z=!z&&G=="\\"}return(ee||!(z||c))&&(Y.tokenize=null),"string"}}function _(b,R){for(var Y=!1,z;z=b.next();){if(z=="/"&&Y){R.tokenize=null;break}Y=z=="*"}return"comment"}function A(b,R){t.typeFirstDefinitions&&b.eol()&&Tp(R.context)&&(R.typeAtEndOfLine=D0(b,R,b.pos))}return{name:t.name,startState:function(b){return{tokenize:null,context:new wp(-b,0,"top",null,!1),indented:0,startOfLine:!0,prevToken:null}},token:function(b,R){var Y=R.context;if(b.sol()&&(Y.align==null&&(Y.align=!1),R.indented=b.indentation(),R.startOfLine=!0),b.eatSpace())return A(b,R),null;X=x=null;var z=(R.tokenize||T)(b,R);if(z=="comment"||z=="meta")return z;if(Y.align==null&&(Y.align=!0),X==";"||X==":"||X==","&&b.match(/^\s*(?:\/\/.*)?$/,!1))for(;R.context.type=="statement";)So(R);else if(X=="{")Tu(R,b.column(),"}");else if(X=="[")Tu(R,b.column(),"]");else if(X=="(")Tu(R,b.column(),")");else if(X=="}"){for(;Y.type=="statement";)Y=So(R);for(Y.type=="}"&&(Y=So(R));Y.type=="statement";)Y=So(R)}else X==Y.type?So(R):u&&((Y.type=="}"||Y.type=="top")&&X!=";"||Y.type=="statement"&&X=="newstatement")&&Tu(R,b.column(),"statement",b.current());if(z=="variable"&&(R.prevToken=="def"||t.typeFirstDefinitions&&D0(b,R,b.start)&&Tp(R.context)&&b.match(/^\s*\(/,!1))&&(z="def"),l.token){var G=l.token(b,R,z);G!==void 0&&(z=G)}return z=="def"&&t.styleDefs===!1&&(z="variable"),R.startOfLine=!1,R.prevToken=x?"def":z||X,A(b,R),z},indent:function(b,R,Y){if(b.tokenize!=T&&b.tokenize!=null||b.typeAtEndOfLine&&Tp(b.context))return null;var z=b.context,G=R&&R.charAt(0),ee=G==z.type;if(z.type=="statement"&&G=="}"&&(z=z.prev),t.dontIndentStatements)for(;z.type=="statement"&&t.dontIndentStatements.test(z.info);)z=z.prev;if(l.indent){var Pe=l.indent(b,z,R,Y.unit);if(typeof Pe=="number")return Pe}var ge=z.prev&&z.prev.info=="switch";if(t.allmanIndentation&&/[{(]/.test(G)){for(;z.type!="top"&&z.type!="}";)z=z.prev;return z.indented}return z.type=="statement"?z.indented+(G=="{"?0:e||Y.unit):z.align&&(!O||z.type!=")")?z.column+(ee?0:1):z.type==")"&&!ee?z.indented+(e||Y.unit):z.indented+(ee?0:Y.unit)+(!ee&&ge&&!/^(?:case|default)\b/.test(R)?Y.unit:0)},languageData:{indentOnInput:d?/^\s*(?:case .*?:|default:|\{\}?|\})$/:/^\s*[{}]$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}},autocomplete:Object.keys(i).concat(Object.keys(n)).concat(Object.keys(r)).concat(Object.keys(o)),...t.languageData}}}function B(t){for(var e={},O=t.split(" "),i=0;i!?|\/#:@]/,hooks:{"@":function(t){return t.eatWhile(/[\w\$_]/),"meta"},'"':function(t,e){return t.match('""')?(e.tokenize=Ok,e.tokenize(t,e)):!1},"'":function(t){return t.match(/^(\\[^'\s]+|[^\\'])'/)?"character":(t.eatWhile(/[\w\$_\xa1-\uffff]/),"atom")},"=":function(t,e){var O=e.context;return O.type=="}"&&O.align&&t.eat(">")?(e.context=new wp(O.indented,O.column,O.type,O.info,null,O.prev),"operator"):!1},"/":function(t,e){return t.eat("*")?(e.tokenize=wo(1),e.tokenize(t,e)):!1}},languageData:{closeBrackets:{brackets:["(","[","{","'",'"','"""']}}});function YG(t){return function(e,O){for(var i=!1,n,r=!1;!e.eol();){if(!t&&!i&&e.match('"')){r=!0;break}if(t&&e.match('"""')){r=!0;break}n=e.next(),!i&&n=="$"&&e.match("{")&&e.skipTo("}"),i=!i&&n=="\\"&&!t}return(r||!t)&&(O.tokenize=null),"string"}}const _G=Jt({name:"kotlin",keywords:B("package as typealias class interface this super val operator var fun for is in This throw return annotation break continue object if else while do try when !in !is as? file import where by get set abstract enum open inner override private public internal protected catch finally out final vararg reified dynamic companion constructor init sealed field property receiver param sparam lateinit data inline noinline tailrec external annotation crossinline const operator infix suspend actual expect setparam"),types:B("Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable Compiler Double Exception Float Integer Long Math Number Object Package Pair Process Runtime Runnable SecurityManager Short StackTraceElement StrictMath String StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void Annotation Any BooleanArray ByteArray Char CharArray DeprecationLevel DoubleArray Enum FloatArray Function Int IntArray Lazy LazyThreadSafetyMode LongArray Nothing ShortArray Unit"),indentStatements:!1,multiLineStrings:!0,number:/^(?:0x[a-f\d_]+|0b[01_]+|(?:[\d_]+(\.\d+)?|\.\d+)(?:e[-+]?[\d_]+)?)(ul?|l|f)?/i,blockKeywords:B("catch class do else finally for if where try while enum"),defKeywords:B("class val var object interface fun"),atoms:B("true false null this"),hooks:{"@":function(t){return t.eatWhile(/[\w\$_]/),"meta"},"*":function(t,e){return e.prevToken=="."?"variable":"operator"},'"':function(t,e){return e.tokenize=YG(t.match('""')),e.tokenize(t,e)},"/":function(t,e){return t.eat("*")?(e.tokenize=wo(1),e.tokenize(t,e)):!1},indent:function(t,e,O,i){var n=O&&O.charAt(0);if((t.prevToken=="}"||t.prevToken==")")&&O=="")return t.indented;if(t.prevToken=="operator"&&O!="}"&&t.context.type!="}"||t.prevToken=="variable"&&n=="."||(t.prevToken=="}"||t.prevToken==")")&&n==".")return i*2+e.indented;if(e.align&&e.type=="}")return e.indented+(t.context.type==(O||"").charAt(0)?0:i)}},languageData:{closeBrackets:{brackets:["(","[","{","'",'"','"""']}}});Jt({name:"shader",keywords:B("sampler1D sampler2D sampler3D samplerCube sampler1DShadow sampler2DShadow const attribute uniform varying break continue discard return for while do if else struct in out inout"),types:B("float int bool void vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 mat2 mat3 mat4"),blockKeywords:B("for while do if else struct"),builtin:B("radians degrees sin cos tan asin acos atan pow exp log exp2 sqrt inversesqrt abs sign floor ceil fract mod min max clamp mix step smoothstep length distance dot cross normalize ftransform faceforward reflect refract matrixCompMult lessThan lessThanEqual greaterThan greaterThanEqual equal notEqual any all not texture1D texture1DProj texture1DLod texture1DProjLod texture2D texture2DProj texture2DLod texture2DProjLod texture3D texture3DProj texture3DLod texture3DProjLod textureCube textureCubeLod shadow1D shadow2D shadow1DProj shadow2DProj shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod dFdx dFdy fwidth noise1 noise2 noise3 noise4"),atoms:B("true false gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_FogCoord gl_PointCoord gl_Position gl_PointSize gl_ClipVertex gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor gl_TexCoord gl_FogFragCoord gl_FragCoord gl_FrontFacing gl_FragData gl_FragDepth gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse gl_TextureMatrixTranspose gl_ModelViewMatrixInverseTranspose gl_ProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixInverseTranspose gl_TextureMatrixInverseTranspose gl_NormalScale gl_DepthRange gl_ClipPlane gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel gl_FrontLightModelProduct gl_BackLightModelProduct gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ gl_FogParameters gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits gl_MaxDrawBuffers"),indentSwitch:!1,hooks:{"#":gn}}),Jt({name:"nesc",keywords:B(Xo+" as atomic async call command component components configuration event generic implementation includes interface module new norace nx_struct nx_union post provides signal task uses abstract extends"),types:xo,blockKeywords:B(yo),atoms:B("null true false"),hooks:{"#":gn}});const zG=Jt({name:"objectivec",keywords:B(Xo+" "+F0),types:K0,builtin:B(H0),blockKeywords:B(yo+" @synthesize @try @catch @finally @autoreleasepool @synchronized"),defKeywords:B(ku+" @interface @implementation @protocol @class"),dontIndentStatements:/^@.*$/,typeFirstDefinitions:!0,atoms:B("YES NO NULL Nil nil true false nullptr"),isReservedIdentifier:bu,hooks:{"#":gn,"*":vu}});Jt({name:"objectivecpp",keywords:B(Xo+" "+F0+" "+B0),types:K0,builtin:B(H0),blockKeywords:B(yo+" @synthesize @try @catch @finally @autoreleasepool @synchronized class try catch"),defKeywords:B(ku+" @interface @implementation @protocol @class class namespace"),dontIndentStatements:/^@.*$|^template$/,typeFirstDefinitions:!0,atoms:B("YES NO NULL Nil nil true false nullptr"),isReservedIdentifier:bu,hooks:{"#":gn,"*":vu,u:Pn,U:Pn,L:Pn,R:Pn,0:Ae,1:Ae,2:Ae,3:Ae,4:Ae,5:Ae,6:Ae,7:Ae,8:Ae,9:Ae,token:function(t,e,O){if(O=="variable"&&t.peek()=="("&&(e.prevToken==";"||e.prevToken==null||e.prevToken=="}")&&J0(t.current()))return"def"}},namespaceSeparator:"::"}),Jt({name:"squirrel",keywords:B("base break clone continue const default delete enum extends function in class foreach local resume return this throw typeof yield constructor instanceof static"),types:xo,blockKeywords:B("case catch class else for foreach if switch try while"),defKeywords:B("function local class"),typeFirstDefinitions:!0,atoms:B("true false null"),hooks:{"#":gn}});var Zu=null;function ik(t){return function(e,O){for(var i=!1,n,r=!1;!e.eol();){if(!i&&e.match('"')&&(t=="single"||e.match('""'))){r=!0;break}if(!i&&e.match("``")){Zu=ik(t),r=!0;break}n=e.next(),i=t=="single"&&!i&&n=="\\"}return r&&(O.tokenize=null),"string"}}Jt({name:"ceylon",keywords:B("abstracts alias assembly assert assign break case catch class continue dynamic else exists extends finally for function given if import in interface is let module new nonempty object of out outer package return satisfies super switch then this throw try value void while"),types:function(t){var e=t.charAt(0);return e===e.toUpperCase()&&e!==e.toLowerCase()},blockKeywords:B("case catch class dynamic else finally for function if interface module new object switch try while"),defKeywords:B("class dynamic function interface module object package value"),builtin:B("abstract actual aliased annotation by default deprecated doc final formal late license native optional sealed see serializable shared suppressWarnings tagged throws variable"),isPunctuationChar:/[\[\]{}\(\),;\:\.`]/,isOperatorChar:/[+\-*&%=<>!?|^~:\/]/,numberStart:/[\d#$]/,number:/^(?:#[\da-fA-F_]+|\$[01_]+|[\d_]+[kMGTPmunpf]?|[\d_]+\.[\d_]+(?:[eE][-+]?\d+|[kMGTPmunpf]|)|)/i,multiLineStrings:!0,typeFirstDefinitions:!0,atoms:B("true false null larger smaller equal empty finished"),indentSwitch:!1,styleDefs:!1,hooks:{"@":function(t){return t.eatWhile(/[\w\$_]/),"meta"},'"':function(t,e){return e.tokenize=ik(t.match('""')?"triple":"single"),e.tokenize(t,e)},"`":function(t,e){return!Zu||!t.match("`")?!1:(e.tokenize=Zu,Zu=null,e.tokenize(t,e))},"'":function(t){return t.match(/^(\\[^'\s]+|[^\\'])'/)?"string.special":(t.eatWhile(/[\w\$_\xa1-\uffff]/),"atom")},token:function(t,e,O){if((O=="variable"||O=="type")&&e.prevToken==".")return"variableName.special"}},languageData:{closeBrackets:{brackets:["(","[","{","'",'"','"""']}}});function UG(t){(t.interpolationStack||(t.interpolationStack=[])).push(t.tokenize)}function nk(t){return(t.interpolationStack||(t.interpolationStack=[])).pop()}function qG(t){return t.interpolationStack?t.interpolationStack.length:0}function kp(t,e,O,i){var n=!1;if(e.eat(t))if(e.eat(t))n=!0;else return"string";function r(a,s){for(var o=!1;!a.eol();){if(!i&&!o&&a.peek()=="$")return UG(s),s.tokenize=VG,"string";var l=a.next();if(l==t&&!o&&(!n||a.match(t+t))){s.tokenize=null;break}o=!i&&!o&&l=="\\"}return"string"}return O.tokenize=r,r(e,O)}function VG(t,e){return t.eat("$"),t.eat("{")?e.tokenize=null:e.tokenize=WG,null}function WG(t,e){return t.eatWhile(/[\w_]/),e.tokenize=nk(e),"variable"}const jG=Jt({name:"dart",keywords:B("this super static final const abstract class extends external factory implements mixin get native set typedef with enum throw rethrow assert break case continue default in return new deferred async await covariant try catch finally do else for if switch while import library export part of show hide is as extension on yield late required sealed base interface when inline"),blockKeywords:B("try catch finally do else for if switch while"),builtin:B("void bool num int double dynamic var String Null Never"),atoms:B("true false null"),number:/^(?:0x[a-f\d_]+|(?:[\d_]+\.?[\d_]*|\.[\d_]+)(?:e[-+]?[\d_]+)?)/i,hooks:{"@":function(t){return t.eatWhile(/[\w\$_\.]/),"meta"},"'":function(t,e){return kp("'",t,e,!1)},'"':function(t,e){return kp('"',t,e,!1)},r:function(t,e){var O=t.peek();return O=="'"||O=='"'?kp(t.next(),t,e,!0):!1},"}":function(t,e){return qG(e)>0?(e.tokenize=nk(e),null):!1},"/":function(t,e){return t.eat("*")?(e.tokenize=wo(1),e.tokenize(t,e)):!1},token:function(t,e,O){if(O=="variable"){var i=RegExp("^[_$]*[A-Z][a-zA-Z0-9_$]*$","g");if(i.test(t.current()))return"type"}}}});function CG(t){rk(t,"start");var e={},O=t.languageData||{},i=!1;for(var n in t)if(n!=O&&t.hasOwnProperty(n))for(var r=e[n]=[],a=t[n],s=0;s2&&a.token&&typeof a.token!="string"){O.pending=[];for(var l=2;l-1)return null;var n=O.indent.length-1,r=t[O.state];e:for(;;){for(var a=0;a/,f6=$a([u6,d6],{suffix:""}),h6=/^((0x[\da-f]+)|((\d+\.\d+|\d\.|\.\d+|\d+)(e[\+\-]?\d+)?))[ld]?([kmgtp]b)?/i,Q6=/^[A-Za-z\_][A-Za-z\-\_\d]*\b/,$6=/[A-Z]:|%|\?/i,p6=$a([/Add-(Computer|Content|History|Member|PSSnapin|Type)/,/Checkpoint-Computer/,/Clear-(Content|EventLog|History|Host|Item(Property)?|Variable)/,/Compare-Object/,/Complete-Transaction/,/Connect-PSSession/,/ConvertFrom-(Csv|Json|SecureString|StringData)/,/Convert-Path/,/ConvertTo-(Csv|Html|Json|SecureString|Xml)/,/Copy-Item(Property)?/,/Debug-Process/,/Disable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/,/Disconnect-PSSession/,/Enable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/,/(Enter|Exit)-PSSession/,/Export-(Alias|Clixml|Console|Counter|Csv|FormatData|ModuleMember|PSSession)/,/ForEach-Object/,/Format-(Custom|List|Table|Wide)/,new RegExp("Get-(Acl|Alias|AuthenticodeSignature|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Counter|Credential|Culture|Date|Event|EventLog|EventSubscriber|ExecutionPolicy|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job|Location|Member|Module|PfxCertificate|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|Verb|WinEvent|WmiObject)"),/Group-Object/,/Import-(Alias|Clixml|Counter|Csv|LocalizedData|Module|PSSession)/,/ImportSystemModules/,/Invoke-(Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)/,/Join-Path/,/Limit-EventLog/,/Measure-(Command|Object)/,/Move-Item(Property)?/,new RegExp("New-(Alias|Event|EventLog|Item(Property)?|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy|WinEvent)"),/Out-(Default|File|GridView|Host|Null|Printer|String)/,/Pause/,/(Pop|Push)-Location/,/Read-Host/,/Receive-(Job|PSSession)/,/Register-(EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)/,/Remove-(Computer|Event|EventLog|Item(Property)?|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)/,/Rename-(Computer|Item(Property)?)/,/Reset-ComputerMachinePassword/,/Resolve-Path/,/Restart-(Computer|Service)/,/Restore-Computer/,/Resume-(Job|Service)/,/Save-Help/,/Select-(Object|String|Xml)/,/Send-MailMessage/,new RegExp("Set-(Acl|Alias|AuthenticodeSignature|Content|Date|ExecutionPolicy|Item(Property)?|Location|PSBreakpoint|PSDebug|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)"),/Show-(Command|ControlPanelItem|EventLog)/,/Sort-Object/,/Split-Path/,/Start-(Job|Process|Service|Sleep|Transaction|Transcript)/,/Stop-(Computer|Job|Process|Service|Transcript)/,/Suspend-(Job|Service)/,/TabExpansion2/,/Tee-Object/,/Test-(ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)/,/Trace-Command/,/Unblock-File/,/Undo-Transaction/,/Unregister-(Event|PSSessionConfiguration)/,/Update-(FormatData|Help|List|TypeData)/,/Use-Transaction/,/Wait-(Event|Job|Process)/,/Where-Object/,/Write-(Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning)/,/cd|help|mkdir|more|oss|prompt/,/ac|asnp|cat|cd|chdir|clc|clear|clhy|cli|clp|cls|clv|cnsn|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|dnsn|ebp/,/echo|epal|epcsv|epsn|erase|etsn|exsn|fc|fl|foreach|ft|fw|gal|gbp|gc|gci|gcm|gcs|gdr|ghy|gi|gjb|gl|gm|gmo|gp|gps/,/group|gsn|gsnp|gsv|gu|gv|gwmi|h|history|icm|iex|ihy|ii|ipal|ipcsv|ipmo|ipsn|irm|ise|iwmi|iwr|kill|lp|ls|man|md/,/measure|mi|mount|move|mp|mv|nal|ndr|ni|nmo|npssc|nsn|nv|ogv|oh|popd|ps|pushd|pwd|r|rbp|rcjb|rcsn|rd|rdr|ren|ri/,/rjb|rm|rmdir|rmo|rni|rnp|rp|rsn|rsnp|rujb|rv|rvpa|rwmi|sajb|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls/,/sort|sp|spjb|spps|spsv|start|sujb|sv|swmi|tee|trcm|type|where|wjb|write/],{prefix:"",suffix:""}),m6=$a([/[$?^_]|Args|ConfirmPreference|ConsoleFileName|DebugPreference|Error|ErrorActionPreference|ErrorView|ExecutionContext/,/FormatEnumerationLimit|Home|Host|Input|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount/,/MaximumHistoryCount|MaximumVariableCount|MyInvocation|NestedPromptLevel|OutputEncoding|Pid|Profile|ProgressPreference/,/PSBoundParameters|PSCommandPath|PSCulture|PSDefaultParameterValues|PSEmailServer|PSHome|PSScriptRoot|PSSessionApplicationName/,/PSSessionConfigurationName|PSSessionOption|PSUICulture|PSVersionTable|Pwd|ShellId|StackTrace|VerbosePreference/,/WarningPreference|WhatIfPreference/,/Event|EventArgs|EventSubscriber|Sender/,/Matches|Ofs|ForEach|LastExitCode|PSCmdlet|PSItem|PSSenderInfo|This/,/true|false|null/],{prefix:"\\$",suffix:""}),g6=$a([$6,p6,m6],{suffix:fk}),hk={keyword:l6,number:h6,operator:f6,builtin:g6,punctuation:c6,variable:Q6};function Ri(t,e){var O=e.returnStack[e.returnStack.length-1];if(O&&O.shouldReturnFrom(e))return e.tokenize=O.tokenize,e.returnStack.pop(),e.tokenize(t,e);if(t.eatSpace())return null;if(t.eat("("))return e.bracketNesting+=1,"punctuation";if(t.eat(")"))return e.bracketNesting-=1,"punctuation";for(var i in hk)if(t.match(hk[i]))return i;var n=t.next();if(n==="'")return P6(t,e);if(n==="$")return Zp(t,e);if(n==='"')return Qk(t,e);if(n==="<"&&t.eat("#"))return e.tokenize=pk,pk(t,e);if(n==="#")return t.skipToEnd(),"comment";if(n==="@"){var r=t.eat(/["']/);if(r&&t.eol())return e.tokenize=Yu,e.startQuote=r[0],Yu(t,e);if(t.eol())return"error";if(t.peek().match(/[({]/))return"punctuation";if(t.peek().match(bp))return Zp(t,e)}return"error"}function P6(t,e){for(var O;(O=t.peek())!=null;)if(t.next(),O==="'"&&!t.eat("'"))return e.tokenize=Ri,"string";return"error"}function Qk(t,e){for(var O;(O=t.peek())!=null;){if(O==="$")return e.tokenize=S6,"string";if(t.next(),O==="`"){t.next();continue}if(O==='"'&&!t.eat('"'))return e.tokenize=Ri,"string"}return"error"}function S6(t,e){return $k(t,e,Qk)}function X6(t,e){return e.tokenize=Yu,e.startQuote='"',Yu(t,e)}function x6(t,e){return $k(t,e,X6)}function $k(t,e,O){if(t.match("$(")){var i=e.bracketNesting;return e.returnStack.push({shouldReturnFrom:function(n){return n.bracketNesting===i},tokenize:O}),e.tokenize=Ri,e.bracketNesting+=1,"punctuation"}else return t.next(),e.returnStack.push({shouldReturnFrom:function(){return!0},tokenize:O}),e.tokenize=Zp,e.tokenize(t,e)}function pk(t,e){for(var O=!1,i;(i=t.next())!=null;){if(O&&i==">"){e.tokenize=Ri;break}O=i==="#"}return"comment"}function Zp(t,e){var O=t.peek();return t.eat("{")?(e.tokenize=mk,mk(t,e)):O!=null&&O.match(bp)?(t.eatWhile(bp),e.tokenize=Ri,"variable"):(e.tokenize=Ri,"error")}function mk(t,e){for(var O;(O=t.next())!=null;)if(O==="}"){e.tokenize=Ri;break}return"variable"}function Yu(t,e){var O=e.startQuote;if(t.sol()&&t.match(new RegExp(O+"@")))e.tokenize=Ri;else if(O==='"')for(;!t.eol();){var i=t.peek();if(i==="$")return e.tokenize=x6,"string";t.next(),i==="`"&&t.next()}else t.skipToEnd();return"string"}const y6={name:"powershell",startState:function(){return{returnStack:[],bracketNesting:0,tokenize:Ri}},token:function(t,e){return e.tokenize(t,e)},languageData:{commentTokens:{line:"#",block:{open:"<#",close:"#>"}}}},w6={name:"properties",token:function(t,e){var O=t.sol()||e.afterSection,i=t.eol();if(e.afterSection=!1,O&&(e.nextMultiline?(e.inMultiline=!0,e.nextMultiline=!1):e.position="def"),i&&!e.nextMultiline&&(e.inMultiline=!1,e.position="def"),O)for(;t.eatSpace(););var n=t.next();return O&&(n==="#"||n==="!"||n===";")?(e.position="comment",t.skipToEnd(),"comment"):O&&n==="["?(e.afterSection=!0,t.skipTo("]"),t.eat("]"),"header"):n==="="||n===":"?(e.position="quote",null):(n==="\\"&&e.position==="quote"&&t.eol()&&(e.nextMultiline=!0),e.position)},startState:function(){return{position:"def",nextMultiline:!1,inMultiline:!1,afterSection:!1}}};function Rp(t){for(var e={},O=0,i=t.length;O]/)?(t.eat(/[\<\>]/),"atom"):t.eat(/[\+\-\*\/\&\|\:\!]/)?"atom":t.eat(/[a-zA-Z$@_\xa1-\uffff]/)?(t.eatWhile(/[\w$\xa1-\uffff]/),t.eat(/[\?\!\=]/),"atom"):"operator";if(O=="@"&&t.match(/^@?[a-zA-Z_\xa1-\uffff]/))return t.eat("@"),t.eatWhile(/[\w\xa1-\uffff]/),"propertyName";if(O=="$")return t.eat(/[a-zA-Z_]/)?t.eatWhile(/[\w]/):t.eat(/\d/)?t.eat(/\d/):t.next(),"variableName.special";if(/[a-zA-Z_\xa1-\uffff]/.test(O))return t.eatWhile(/[\w\xa1-\uffff]/),t.eat(/[\?\!]/),t.eat(":")?"atom":"variable";if(O=="|"&&(e.varList||e.lastTok=="{"||e.lastTok=="do"))return RO="|",null;if(/[\(\)\[\]{}\\;]/.test(O))return RO=O,null;if(O=="-"&&t.eat(">"))return"operator";if(/[=+\-\/*:\.^%<>~|]/.test(O)){var s=t.eatWhile(/[=+\-\/*:\.^%<>~|]/);return O=="."&&!s&&(RO="."),"operator"}else return null}}}function Z6(t){for(var e=t.pos,O=0,i,n=!1,r=!1;(i=t.next())!=null;)if(r)r=!1;else{if("[{(".indexOf(i)>-1)O++;else if("]})".indexOf(i)>-1){if(O--,O<0)break}else if(i=="/"&&O==0){n=!0;break}r=i=="\\"}return t.backUp(t.pos-e),n}function Yp(t){return t||(t=1),function(e,O){if(e.peek()=="}"){if(t==1)return O.tokenize.pop(),O.tokenize[O.tokenize.length-1](e,O);O.tokenize[O.tokenize.length-1]=Yp(t-1)}else e.peek()=="{"&&(O.tokenize[O.tokenize.length-1]=Yp(t+1));return _u(e,O)}}function R6(){var t=!1;return function(e,O){return t?(O.tokenize.pop(),O.tokenize[O.tokenize.length-1](e,O)):(t=!0,_u(e,O))}}function To(t,e,O,i){return function(n,r){var a=!1,s;for(r.context.type==="read-quoted-paused"&&(r.context=r.context.prev,n.eat("}"));(s=n.next())!=null;){if(s==t&&(i||!a)){r.tokenize.pop();break}if(O&&s=="#"&&!a){if(n.eat("{")){t=="}"&&(r.context={prev:r.context,type:"read-quoted-paused"}),r.tokenize.push(Yp());break}else if(/[@\$]/.test(n.peek())){r.tokenize.push(R6());break}}a=!a&&s=="\\"}return e}}function Y6(t,e){return function(O,i){return e&&O.eatSpace(),O.match(t)?i.tokenize.pop():O.skipToEnd(),"string"}}function _6(t,e){return t.sol()&&t.match("=end")&&t.eol()&&e.tokenize.pop(),t.skipToEnd(),"comment"}const z6={name:"ruby",startState:function(t){return{tokenize:[_u],indented:0,context:{type:"top",indented:-t},continuedLine:!1,lastTok:null,varList:!1}},token:function(t,e){RO=null,t.sol()&&(e.indented=t.indentation());var O=e.tokenize[e.tokenize.length-1](t,e),i,n=RO;if(O=="variable"){var r=t.current();O=e.lastTok=="."?"property":T6.propertyIsEnumerable(t.current())?"keyword":/^[A-Z]/.test(r)?"tag":e.lastTok=="def"||e.lastTok=="class"||e.varList?"def":"variable",O=="keyword"&&(n=r,k6.propertyIsEnumerable(r)?i="indent":v6.propertyIsEnumerable(r)?i="dedent":((r=="if"||r=="unless")&&t.column()==t.indentation()||r=="do"&&e.context.indented1&&t.eat("$");var O=t.next();return/['"({]/.test(O)?(e.tokens[0]=zu(O,O=="("?"quote":O=="{"?"def":"string"),ma(t,e)):(/\d/.test(O)||t.eatWhile(/\w/),e.tokens.shift(),"def")};function V6(t){return function(e,O){return e.sol()&&e.string==t&&O.tokens.shift(),e.skipToEnd(),"string.special"}}function ma(t,e){return(e.tokens[0]||U6)(t,e)}const W6={name:"shell",startState:function(){return{tokens:[]}},token:function(t,e){return ma(t,e)},languageData:{autocomplete:Sk.concat(Xk,xk),closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"#"}}},j6={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(t,e){let O;if(!e.inString&&(O=t.match(/^('''|"""|'|")/))&&(e.stringType=O[0],e.inString=!0),t.sol()&&!e.inString&&e.inArray===0&&(e.lhs=!0),e.inString){for(;e.inString;)if(t.match(e.stringType))e.inString=!1;else if(t.peek()==="\\")t.next(),t.next();else{if(t.eol())break;t.match(/^.[^\\\"\']*/)}return e.lhs?"property":"string"}else{if(e.inArray&&t.peek()==="]")return t.next(),e.inArray--,"bracket";if(e.lhs&&t.peek()==="["&&t.skipTo("]"))return t.next(),t.peek()==="]"&&t.next(),"atom";if(t.peek()==="#")return t.skipToEnd(),"comment";if(t.eatSpace())return null;if(e.lhs&&t.eatWhile(function(i){return i!="="&&i!=" "}))return"property";if(e.lhs&&t.peek()==="=")return t.next(),e.lhs=!1,null;if(!e.lhs&&t.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!e.lhs&&(t.match("true")||t.match("false")))return"atom";if(!e.lhs&&t.peek()==="[")return e.inArray++,t.next(),"bracket";if(!e.lhs&&t.match(/^\-?\d+(?:\.\d+)?/))return"number";t.eatSpace()||t.next()}return null},languageData:{commentTokens:{line:"#"}}},eO=t=>new Ke(MQ.define(t)),C6=[{name:"TypeScript",extensions:["ts","mts","cts"],load:()=>no({typescript:!0})},{name:"TSX",extensions:["tsx"],load:()=>no({typescript:!0,jsx:!0})},{name:"JavaScript",extensions:["js","mjs","cjs"],load:()=>no()},{name:"JSX",extensions:["jsx"],load:()=>no({jsx:!0})},{name:"JSON",extensions:["json","jsonc","json5","map","webmanifest"],load:()=>BW()},{name:"Markdown",extensions:["md","markdown","mdx"],load:()=>E2()},{name:"CSS",extensions:["css"],load:()=>Ry()},{name:"SCSS",extensions:["scss"],load:()=>d0({indented:!1})},{name:"Sass",extensions:["sass"],load:()=>d0({indented:!0})},{name:"Less",extensions:["less"],load:()=>s2()},{name:"HTML",extensions:["html","htm"],load:()=>su()},{name:"Vue",extensions:["vue"],load:()=>k7()},{name:"XML",extensions:["xml","xsl","xsd","plist","csproj","svg"],load:()=>F7()},{name:"YAML",extensions:["yml","yaml"],load:()=>kG()},{name:"TOML",extensions:["toml"],load:()=>eO(j6)},{name:"Properties",extensions:["properties","ini","conf","cfg","editorconfig"],load:()=>eO(w6)},{name:"Python",extensions:["py","pyi","pyw"],load:()=>Z8()},{name:"Go",extensions:["go"],load:()=>oV()},{name:"Rust",extensions:["rs"],load:()=>H8()},{name:"Java",extensions:["java"],load:()=>MW()},{name:"C++",extensions:["c","h","cc","cpp","cxx","hpp","hh","hxx","ino"],load:()=>kU()},{name:"PHP",extensions:["php","phtml"],load:()=>h4()},{name:"C#",extensions:["cs","csx"],load:()=>eO(ZG)},{name:"Kotlin",extensions:["kt","kts"],load:()=>eO(_G)},{name:"Scala",extensions:["scala","sc"],load:()=>eO(RG)},{name:"Dart",extensions:["dart"],load:()=>eO(jG)},{name:"Objective-C",extensions:["m","mm"],load:()=>eO(zG)},{name:"Ruby",extensions:["rb","rake","gemspec"],filenames:["Gemfile","Rakefile"],load:()=>eO(z6)},{name:"Lua",extensions:["lua"],load:()=>eO(o6)},{name:"Shell",extensions:["sh","bash","zsh","ksh","fish"],load:()=>eO(W6)},{name:"PowerShell",extensions:["ps1","psm1","psd1"],load:()=>eO(y6)},{name:"SQL",extensions:["sql"],load:()=>m7()},{name:"Dockerfile",extensions:[],filenames:["Dockerfile","Containerfile"],load:()=>eO(JG)},{name:"Diff",extensions:["diff","patch"],load:()=>eO(e6)}],Uu=new Map,Up=new Map,qu=new Map;C6.map(t=>{const e=Ns.of({name:t.name,extensions:t.extensions,load:async()=>t.load()});for(const O of t.extensions)Uu.has(O)||Uu.set(O,e);for(const O of t.filenames??[]){const i=O.toLowerCase();Up.has(i)||Up.set(i,e)}return qu.has(t.name)||qu.set(t.name,e),e});const G6={ts:"TypeScript",typescript:"TypeScript",js:"JavaScript",javascript:"JavaScript",node:"JavaScript",tsx:"TSX",jsx:"JSX",json:"JSON",jsonc:"JSON",md:"Markdown",markdown:"Markdown",py:"Python",python:"Python",golang:"Go",go:"Go",rs:"Rust",rust:"Rust",sh:"Shell",bash:"Shell",shell:"Shell",zsh:"Shell",ps1:"PowerShell",powershell:"PowerShell",yml:"YAML",yaml:"YAML",html:"HTML",xml:"XML",css:"CSS",scss:"SCSS",sass:"Sass",less:"Less",vue:"Vue",java:"Java",ruby:"Ruby",lua:"Lua",php:"PHP",toml:"TOML",ini:"Properties",properties:"Properties",c:"C++",h:"C++",cpp:"C++","c++":"C++",sql:"SQL",csharp:"C#",cs:"C#","c#":"C#",kt:"Kotlin",kotlin:"Kotlin",scala:"Scala",dart:"Dart",objc:"Objective-C","objective-c":"Objective-C",dockerfile:"Dockerfile",docker:"Dockerfile",diff:"Diff",patch:"Diff"};function wk(t){const O=t.slice(t.lastIndexOf("/")+1).toLowerCase(),i=Up.get(O);if(i)return i;const n=O.lastIndexOf(".");if(n>0&&n0){const o=`${O.slice(s+1,n)}.${r}`,l=Uu.get(o);if(l)return l}}return null}function E6(t){return/\.(?:md|markdown|mdx)$/i.test(t)}function A6(t){const e=t.trim().toLowerCase();return e?qu.get(G6[e]??"")??qu.get(e)??null:null}const L6={source:"editMode",markdown:"previewMode",table:"tableMode",tree:"treeMode"};function Tk(t){return/\.csv$/i.test(t)?",":/\.tsv$/i.test(t)?" ":null}function M6(t){return/\.(?:json|jsonc|json5)$/i.test(t)}function N6(t,e){return E6(t)?{modes:["source","markdown"],mode:e.mdPreview?"markdown":"source"}:Tk(t)?{modes:["source","table"],mode:e.csvTable?"table":"source"}:M6(t)?{modes:["source","tree"],mode:e.jsonTree?"tree":"source"}:null}function I6(t,e){const O={path:t.path,size:t.size,mtimeMs:t.mtimeMs,loadToken:e},i={text:"",eol:"lf",bom:!1};return t.kind==="text"?{...O,kind:"text",text:t.text,eol:t.eol,bom:t.bom}:t.kind==="image"||t.kind==="media"?{...O,...i,kind:t.kind,mime:t.mime,dataUri:t.dataUri}:t.kind==="tooLarge"?{...O,...i,kind:"tooLarge",limit:t.limit}:t.kind==="sqlite"?{...O,...i,kind:"sqlite",sqlite:{available:t.available,info:t.info}}:{...O,...i,kind:"binary"}}function D6(t,e,O){return{...t,mtimeMs:e.mtimeMs,size:e.size,text:O}}function B6(t,e){return!!(t&&e===t.loadToken)}async function kk(t,e){const O=await nt(t,{path:e});if(O&&O.ok===!1)throw new Error(O.message??"the host refused the request")}function F6(t){return kk("fs.openDefault",t)}function H6(t){return kk("fs.reveal",t)}const K6="view:open",J6="piViewOpen";function qp(t){return t.startsWith("/")||/^[A-Za-z]:[\\/]/.test(t)||t.startsWith("\\\\")}function eE(t){if(!t)return null;let e;try{e=new URLSearchParams(t).get(J6)}catch{return null}return typeof e=="string"&&e.trim()?e:null}function tE(t){if(!t||typeof t!="object")return null;const e=t;return typeof e.path!="string"||!e.path.trim()?null:{path:e.path}}function OE(t){let e=null;const O=r=>{r.path!==e&&(e=r.path,t(r))},i=qS(K6,r=>{const a=tE(r);a&&O(a)}),n=eE(window.location.search);return n&&O({path:n}),()=>i()}const ko={folder:m.jsx("path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"}),folderOpen:m.jsx(m.Fragment,{children:m.jsx("path",{d:"M6 14l1.45-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.55 6a2 2 0 0 1-1.94 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.93a2 2 0 0 1 1.66.9l.82 1.2a2 2 0 0 0 1.66.9H18a2 2 0 0 1 2 2v2"})}),file:m.jsxs(m.Fragment,{children:[m.jsx("path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"}),m.jsx("path",{d:"M14 2v5h5"})]}),code:m.jsxs(m.Fragment,{children:[m.jsx("path",{d:"m9 18-6-6 6-6"}),m.jsx("path",{d:"m15 6 6 6-6 6"})]}),braces:m.jsxs(m.Fragment,{children:[m.jsx("path",{d:"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5a2 2 0 0 0 2 2h1"}),m.jsx("path",{d:"M16 3h1a2 2 0 0 1 2 2v5a2 2 0 0 0 2 2 2 2 0 0 0-2 2v5a2 2 0 0 1-2 2h-1"})]}),hash:m.jsxs(m.Fragment,{children:[m.jsx("path",{d:"M4 9h16M4 15h16"}),m.jsx("path",{d:"M10 3 8 21M16 3l-2 18"})]}),markdown:m.jsxs(m.Fragment,{children:[m.jsx("path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"}),m.jsx("path",{d:"M14 2v5h5"}),m.jsx("path",{d:"M8 16v-4l2 2 2-2v4"})]}),style:m.jsx("path",{d:"M12 3s6 6.3 6 10a6 6 0 0 1-12 0c0-3.7 6-10 6-10z"}),globe:m.jsxs(m.Fragment,{children:[m.jsx("circle",{cx:"12",cy:"12",r:"9"}),m.jsx("path",{d:"M3 12h18"}),m.jsx("path",{d:"M12 3a15 15 0 0 1 0 18 15 15 0 0 1 0-18"})]}),database:m.jsxs(m.Fragment,{children:[m.jsx("ellipse",{cx:"12",cy:"6",rx:"8",ry:"3"}),m.jsx("path",{d:"M4 6v12c0 1.7 3.6 3 8 3s8-1.3 8-3V6"}),m.jsx("path",{d:"M4 12c0 1.7 3.6 3 8 3s8-1.3 8-3"})]}),terminal:m.jsxs(m.Fragment,{children:[m.jsx("path",{d:"m5 8 4 4-4 4"}),m.jsx("path",{d:"M13 16h6"})]}),image:m.jsxs(m.Fragment,{children:[m.jsx("rect",{x:"3",y:"4",width:"18",height:"16",rx:"2"}),m.jsx("circle",{cx:"9",cy:"9.5",r:"1.6"}),m.jsx("path",{d:"m4 17 5-5 4 4 3-3 4 4"})]}),video:m.jsxs(m.Fragment,{children:[m.jsx("rect",{x:"2.5",y:"5",width:"19",height:"14",rx:"2"}),m.jsx("path",{d:"m10 9.5 5 2.5-5 2.5z"})]}),audio:m.jsxs(m.Fragment,{children:[m.jsx("path",{d:"M9 18V6l10-2v12"}),m.jsx("circle",{cx:"6.5",cy:"18",r:"2.5"}),m.jsx("circle",{cx:"16.5",cy:"16",r:"2.5"})]}),archive:m.jsxs(m.Fragment,{children:[m.jsx("rect",{x:"3",y:"4",width:"18",height:"4",rx:"1"}),m.jsx("path",{d:"M5 8v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V8"}),m.jsx("path",{d:"M10 12h4"})]}),font:m.jsxs(m.Fragment,{children:[m.jsx("path",{d:"M5 20 12 4l7 16"}),m.jsx("path",{d:"M8.5 14h7"})]}),lock:m.jsxs(m.Fragment,{children:[m.jsx("rect",{x:"5",y:"11",width:"14",height:"9",rx:"1.5"}),m.jsx("path",{d:"M9 11V8a3 3 0 0 1 6 0v3"})]}),sliders:m.jsxs(m.Fragment,{children:[m.jsx("path",{d:"M4 8h9M19 8h1M4 16h3M12 16h8"}),m.jsx("circle",{cx:"15.5",cy:"8",r:"2"}),m.jsx("circle",{cx:"9.5",cy:"16",r:"2"})]}),branch:m.jsxs(m.Fragment,{children:[m.jsx("circle",{cx:"6.5",cy:"6",r:"2.5"}),m.jsx("circle",{cx:"6.5",cy:"18",r:"2.5"}),m.jsx("circle",{cx:"17.5",cy:"9",r:"2.5"}),m.jsx("path",{d:"M6.5 8.5v7"}),m.jsx("path",{d:"M17.5 11.5c0 3.2-4 3.4-7 4.3"})]}),package:m.jsxs(m.Fragment,{children:[m.jsx("path",{d:"m12 3 8 4.5v9L12 21l-8-4.5v-9z"}),m.jsx("path",{d:"m4 7.5 8 4.5 8-4.5"}),m.jsx("path",{d:"M12 12v9"})]}),shield:m.jsx("path",{d:"M12 3 4 6v6c0 5 3.5 8 8 9 4.5-1 8-4 8-9V6z"}),book:m.jsxs(m.Fragment,{children:[m.jsx("path",{d:"M4 4.5A2.5 2.5 0 0 1 6.5 2H20v18H6.5A2.5 2.5 0 0 1 4 17.5z"}),m.jsx("path",{d:"M4 17.5A2.5 2.5 0 0 1 6.5 15H20"})]})},Z={default:"var(--muted)",folder:"var(--icon-folder)",code:"#3178c6",script:"#d9a300",data:"#c07a1f",markup:"#e0724a",style:"#4aa3d9",doc:"var(--icon-doc)",shell:"#4e9a06",image:"#26a269",media:"#c678dd",archive:"#a8823c",font:"#8e7cc3",lock:"#c0703c",db:"#d64b4b",git:"#e0724a",pkg:"#cb8a2e",secret:"#9a5bd6"},iE={".gitignore":{glyph:"branch",color:Z.git},".gitattributes":{glyph:"branch",color:Z.git},".gitmodules":{glyph:"branch",color:Z.git},".npmrc":{glyph:"sliders",color:Z.secret},".env":{glyph:"lock",color:Z.secret},".editorconfig":{glyph:"sliders",color:Z.default},".prettierrc":{glyph:"sliders",color:Z.default},".eslintrc":{glyph:"sliders",color:Z.default},dockerfile:{glyph:"package",color:Z.style},"docker-compose.yml":{glyph:"package",color:Z.style},"docker-compose.yaml":{glyph:"package",color:Z.style},makefile:{glyph:"terminal",color:Z.shell},license:{glyph:"shield",color:Z.doc},"license.md":{glyph:"shield",color:Z.doc},"license.txt":{glyph:"shield",color:Z.doc},"package.json":{glyph:"package",color:Z.pkg},"package-lock.json":{glyph:"lock",color:Z.default},"pnpm-lock.yaml":{glyph:"lock",color:Z.default},"yarn.lock":{glyph:"lock",color:Z.default},"cargo.lock":{glyph:"lock",color:Z.default},"cargo.toml":{glyph:"package",color:Z.data},"go.mod":{glyph:"package",color:Z.style},"go.sum":{glyph:"lock",color:Z.default},"tsconfig.json":{glyph:"sliders",color:Z.code},"jsconfig.json":{glyph:"sliders",color:Z.script},"vite.config.ts":{glyph:"sliders",color:Z.data},"vite.config.js":{glyph:"sliders",color:Z.data},"readme.md":{glyph:"book",color:Z.doc},"changelog.md":{glyph:"book",color:Z.doc}},nE={ts:{glyph:"code",color:Z.code},tsx:{glyph:"code",color:Z.code},mts:{glyph:"code",color:Z.code},cts:{glyph:"code",color:Z.code},js:{glyph:"code",color:Z.script},jsx:{glyph:"code",color:Z.script},mjs:{glyph:"code",color:Z.script},cjs:{glyph:"code",color:Z.script},json:{glyph:"braces",color:Z.data},jsonc:{glyph:"braces",color:Z.data},json5:{glyph:"braces",color:Z.data},map:{glyph:"braces",color:Z.default},md:{glyph:"markdown",color:Z.doc},markdown:{glyph:"markdown",color:Z.doc},mdx:{glyph:"markdown",color:Z.doc},txt:{glyph:"file",color:Z.doc},css:{glyph:"style",color:Z.style},scss:{glyph:"style",color:"#cf649a"},sass:{glyph:"style",color:"#cf649a"},less:{glyph:"style",color:"#4aa3d9"},html:{glyph:"globe",color:Z.markup},htm:{glyph:"globe",color:Z.markup},vue:{glyph:"globe",color:"#41b883"},svelte:{glyph:"globe",color:"#ff3e00"},astro:{glyph:"globe",color:"#ff5d01"},xml:{glyph:"globe",color:Z.data},svg:{glyph:"image",color:Z.image},yml:{glyph:"sliders",color:Z.data},yaml:{glyph:"sliders",color:Z.data},toml:{glyph:"sliders",color:Z.data},ini:{glyph:"sliders",color:Z.data},conf:{glyph:"sliders",color:Z.data},env:{glyph:"lock",color:Z.secret},properties:{glyph:"sliders",color:Z.data},py:{glyph:"code",color:"#3776ab"},pyi:{glyph:"code",color:"#3776ab"},rb:{glyph:"code",color:"#cc342d"},php:{glyph:"code",color:"#8892bf"},go:{glyph:"code",color:"#00add8"},rs:{glyph:"code",color:"#d08770"},java:{glyph:"code",color:"#e76f00"},kt:{glyph:"code",color:"#a97bff"},kts:{glyph:"code",color:"#a97bff"},scala:{glyph:"code",color:"#dc322f"},swift:{glyph:"code",color:"#f05138"},c:{glyph:"code",color:"#5c6bc0"},h:{glyph:"code",color:"#5c6bc0"},cc:{glyph:"code",color:"#5c6bc0"},cpp:{glyph:"code",color:"#5c6bc0"},cxx:{glyph:"code",color:"#5c6bc0"},hpp:{glyph:"code",color:"#5c6bc0"},cs:{glyph:"code",color:"#9b4f96"},lua:{glyph:"code",color:"#2c2d72"},dart:{glyph:"code",color:"#0175c2"},ex:{glyph:"code",color:"#6e4a7e"},exs:{glyph:"code",color:"#6e4a7e"},sh:{glyph:"terminal",color:Z.shell},bash:{glyph:"terminal",color:Z.shell},zsh:{glyph:"terminal",color:Z.shell},fish:{glyph:"terminal",color:Z.shell},ps1:{glyph:"terminal",color:"#4aa3d9"},bat:{glyph:"terminal",color:Z.shell},cmd:{glyph:"terminal",color:Z.shell},sql:{glyph:"database",color:Z.db},db:{glyph:"database",color:Z.db},sqlite:{glyph:"database",color:Z.db},png:{glyph:"image",color:Z.image},jpg:{glyph:"image",color:Z.image},jpeg:{glyph:"image",color:Z.image},gif:{glyph:"image",color:Z.image},webp:{glyph:"image",color:Z.image},ico:{glyph:"image",color:Z.image},bmp:{glyph:"image",color:Z.image},avif:{glyph:"image",color:Z.image},tiff:{glyph:"image",color:Z.image},mp4:{glyph:"video",color:Z.media},m4v:{glyph:"video",color:Z.media},mov:{glyph:"video",color:Z.media},webm:{glyph:"video",color:Z.media},mkv:{glyph:"video",color:Z.media},ogv:{glyph:"video",color:Z.media},avi:{glyph:"video",color:Z.media},mp3:{glyph:"audio",color:Z.media},m4a:{glyph:"audio",color:Z.media},aac:{glyph:"audio",color:Z.media},wav:{glyph:"audio",color:Z.media},flac:{glyph:"audio",color:Z.media},ogg:{glyph:"audio",color:Z.media},oga:{glyph:"audio",color:Z.media},opus:{glyph:"audio",color:Z.media},weba:{glyph:"audio",color:Z.media},zip:{glyph:"archive",color:Z.archive},gz:{glyph:"archive",color:Z.archive},tar:{glyph:"archive",color:Z.archive},bz2:{glyph:"archive",color:Z.archive},xz:{glyph:"archive",color:Z.archive},"7z":{glyph:"archive",color:Z.archive},rar:{glyph:"archive",color:Z.archive},woff:{glyph:"font",color:Z.font},woff2:{glyph:"font",color:Z.font},ttf:{glyph:"font",color:Z.font},otf:{glyph:"font",color:Z.font},eot:{glyph:"font",color:Z.font},lock:{glyph:"lock",color:Z.default},key:{glyph:"lock",color:Z.lock},pem:{glyph:"lock",color:Z.lock},crt:{glyph:"lock",color:Z.lock},cer:{glyph:"lock",color:Z.lock},p12:{glyph:"lock",color:Z.lock},pfx:{glyph:"lock",color:Z.lock},wat:{glyph:"code",color:Z.code},wasm:{glyph:"hash",color:Z.default},bin:{glyph:"hash",color:Z.default},exe:{glyph:"hash",color:Z.default},dll:{glyph:"hash",color:Z.default},so:{glyph:"hash",color:Z.default},dylib:{glyph:"hash",color:Z.default},log:{glyph:"file",color:Z.default},csv:{glyph:"database",color:Z.data},tsv:{glyph:"database",color:Z.data},xlsx:{glyph:"database",color:"#26a269"},pdf:{glyph:"book",color:"#d64b4b"}};function rE(t,e,O){if(e)return{glyph:ko[O?"folderOpen":"folder"],color:Z.folder};const i=t.toLowerCase(),n=iE[i];if(n)return{glyph:ko[n.glyph],color:n.color};if(i.startsWith(".env"))return{glyph:ko.lock,color:Z.secret};const r=i.lastIndexOf(".");if(r>0&&r!l.ignored);if(s.length===0)return[{kind:"note",path:t,depth:e,text:r("empty"),error:!1}];const o=[];for(const l of s)o.push({kind:"entry",path:l.path,depth:e,entry:l}),l.isDirectory&&i.has(l.path)&&o.push(...bk(l.path,e+1,O,i,n,r));return o}function aE({directories:t,expanded:e,selected:O,showIgnored:i,t:n,onToggle:r,onOpen:a,onRefreshDir:s,onContextMenu:o}){const l=y.useRef(null),c=y.useMemo(()=>bk("",0,t,e,i,n),[t,e,i,n]);y.useEffect(()=>{O&&l.current?.querySelector(`[data-path="${CSS.escape(O)}"]`)?.scrollIntoView({block:"nearest"})},[O,c]);const u=Q=>{const $=Math.max(0,Math.min(Q,c.length-1));l.current?.querySelector(`[data-row-index="${$}"]`)?.focus()},d=Q=>{if(Q.kind!=="entry"){Q.error&&s(Q.path);return}Q.entry.isDirectory?r(Q.entry.path):a(Q.entry)},h=(Q,$,P)=>{switch(Q.key){case"ArrowDown":Q.preventDefault(),u($+1);return;case"ArrowUp":Q.preventDefault(),u($-1);return;case"Home":Q.preventDefault(),u(0);return;case"End":Q.preventDefault(),u(c.length-1);return;case"Enter":case" ":Q.preventDefault(),d(P);return;case"ArrowRight":P.kind==="entry"&&P.entry.isDirectory&&!e.has(P.entry.path)&&(Q.preventDefault(),r(P.entry.path));return;case"ArrowLeft":P.kind==="entry"&&P.entry.isDirectory&&e.has(P.entry.path)&&(Q.preventDefault(),r(P.entry.path));return}};return m.jsx("div",{ref:l,role:"tree","aria-label":n("treeSection"),"aria-busy":!t.get("")?.entries,className:"min-h-0 flex-1 overflow-auto px-1.5 pb-4",onContextMenu:Q=>{Q.target.closest(".tree-row")||(Q.preventDefault(),o(Q,null))},children:c.map((Q,$)=>{if(Q.kind==="note")return m.jsxs("div",{className:"flex min-h-[24px] items-center gap-1.5 py-0.5 pr-2 text-[11.5px]",style:{paddingLeft:12+Q.depth*14,color:Q.error?"var(--danger)":"var(--muted)"},children:[Q.text===n("loading")?m.jsx("span",{"aria-hidden":"true",className:"inline-block h-[11px] w-[11px] flex-none animate-spin rounded-full border-[1.5px]",style:{borderColor:"var(--border-strong)",borderTopColor:"var(--secondary)"}}):null,m.jsx("span",{className:"min-w-0",children:Q.text}),Q.error?m.jsx("button",{type:"button",className:"ml-auto border-0 bg-transparent p-0 underline underline-offset-2",style:{color:"var(--secondary)"},onClick:()=>s(Q.path),children:n("retry")}):null]},`note:${Q.path}:${Q.text}`);const{entry:P}=Q,p=O===P.path,g=e.has(P.path),S=P.ignored&&i;return m.jsxs("button",{type:"button","data-path":P.path,"data-row-index":$,"data-selected":p?"true":void 0,"data-ignored":S?"true":void 0,role:"treeitem","aria-expanded":P.isDirectory?g:void 0,"aria-selected":p,"aria-level":Q.depth+1,title:P.outside?`${P.path} — ${n("symlinkOutside")}`:P.ignored?`${P.path} — ${n("ignoredBadge")}`:P.path,disabled:P.isSymlink,onClick:()=>d(Q),onKeyDown:X=>h(X,$,Q),onContextMenu:X=>{X.preventDefault(),X.stopPropagation(),o(X,P)},className:"tree-row",style:{paddingLeft:6+Q.depth*14},children:[m.jsx("span",{"aria-hidden":"true",className:"tree-caret",style:{transform:g?"rotate(90deg)":void 0},children:P.isDirectory?m.jsx("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:m.jsx("path",{d:"m9 18 6-6-6-6"})}):null}),m.jsx(vk,{name:P.name,isDirectory:P.isDirectory,expanded:g}),m.jsx("span",{className:"tree-name",children:P.name}),P.isSymlink?m.jsx("span",{"aria-hidden":"true",className:"tree-mark",children:"↪"}):null,P.isDirectory?null:m.jsx("span",{className:"tree-size",children:Ar(P.size)})]},P.path)})})}const sE=t=>{let{state:e}=t,O=e.doc.lineAt(e.selection.main.from),i=Wp(t.state,O.from);return i.line?oE(t):i.block?cE(t):!1};function Vp(t,e){return({state:O,dispatch:i})=>{if(O.readOnly)return!1;let n=t(e,O);return n?(i(O.update(n)),!0):!1}}const oE=Vp(fE,0),lE=Vp(Zk,0),cE=Vp((t,e)=>Zk(t,e,dE(e)),0);function Wp(t,e){let O=t.languageDataAt("commentTokens",e,1);return O.length?O[0]:{}}const vo=50;function uE(t,{open:e,close:O},i,n){let r=t.sliceDoc(i-vo,i),a=t.sliceDoc(n,n+vo),s=/\s*$/.exec(r)[0].length,o=/^\s*/.exec(a)[0].length,l=r.length-s;if(r.slice(l-e.length,l)==e&&a.slice(o,o+O.length)==O)return{open:{pos:i-s,margin:s&&1},close:{pos:n+o,margin:o&&1}};let c,u;n-i<=2*vo?c=u=t.sliceDoc(i,n):(c=t.sliceDoc(i,i+vo),u=t.sliceDoc(n-vo,n));let d=/^\s*/.exec(c)[0].length,h=/\s*$/.exec(u)[0].length,Q=u.length-h-O.length;return c.slice(d,d+e.length)==e&&u.slice(Q,Q+O.length)==O?{open:{pos:i+d+e.length,margin:/\s/.test(c.charAt(d+e.length))?1:0},close:{pos:n-h-O.length,margin:/\s/.test(u.charAt(Q-1))?1:0}}:null}function dE(t){let e=[];for(let O of t.selection.ranges){let i=t.doc.lineAt(O.from),n=O.to<=i.to?i:t.doc.lineAt(O.to);n.from>i.from&&n.from==O.to&&(n=O.to==i.to+1?i:t.doc.lineAt(O.to-1));let r=e.length-1;r>=0&&e[r].to>i.from?e[r].to=n.to:e.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:n.to})}return e}function Zk(t,e,O=e.selection.ranges){let i=O.map(r=>Wp(e,r.from).block);if(!i.every(r=>r))return null;let n=O.map((r,a)=>uE(e,i[a],r.from,r.to));if(t!=2&&!n.every(r=>r))return{changes:e.changes(O.map((r,a)=>n[a]?[]:[{from:r.from,insert:i[a].open+" "},{from:r.to,insert:" "+i[a].close}]))};if(t!=1&&n.some(r=>r)){let r=[];for(let a=0,s;an&&(r==a||a>u.from)){n=u.from;let d=/^\s*/.exec(u.text)[0].length,h=d==u.length,Q=u.text.slice(d,d+l.length)==l?d:-1;dr.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:s,token:o,indent:l,empty:c,single:u}of i)(u||!c)&&r.push({from:s.from+l,insert:o+" "});let a=e.changes(r);return{changes:a,selection:e.selection.map(a,1)}}else if(t!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:a,comment:s,token:o}of i)if(s>=0){let l=a.from+s,c=l+o.length;a.text[c-a.from]==" "&&c++,r.push({from:l,to:c})}return{changes:r}}return null}const jp=Qi.define(),hE=Qi.define(),QE=N.define(),Rk=N.define({combine(t){return on(t,{minDepth:100,newGroupDelay:500,joinToEvent:(e,O)=>O},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,O)=>(i,n)=>e(i,n)||O(i,n)})}}),Yk=Wt.define({create(){return KO.empty},update(t,e){let O=e.state.facet(Rk),i=e.annotation(jp);if(i){let o=Ct.fromTransaction(e,i.selection),l=i.side,c=l==0?t.undone:t.done;return o?c=Wu(c,c.length,O.minDepth,o):c=Uk(c,e.startState.selection),new KO(l==0?i.rest:c,l==0?c:i.rest)}let n=e.annotation(hE);if((n=="full"||n=="before")&&(t=t.isolate()),e.annotation(Ee.addToHistory)===!1)return e.changes.empty?t:t.addMapping(e.changes.desc);let r=Ct.fromTransaction(e),a=e.annotation(Ee.time),s=e.annotation(Ee.userEvent);return r?t=t.addChanges(r,a,s,O,e):e.selection&&(t=t.addSelection(e.startState.selection,a,s,O.newGroupDelay)),(n=="full"||n=="after")&&(t=t.isolate()),t},toJSON(t){return{done:t.done.map(e=>e.toJSON()),undone:t.undone.map(e=>e.toJSON())}},fromJSON(t){return new KO(t.done.map(Ct.fromJSON),t.undone.map(Ct.fromJSON))}});function $E(t={}){return[Yk,Rk.of(t),L.domEventHandlers({beforeinput(e,O){let i=e.inputType=="historyUndo"?_k:e.inputType=="historyRedo"?Cp:null;return i?(e.preventDefault(),i(O)):!1}})]}function Vu(t,e){return function({state:O,dispatch:i}){if(!e&&O.readOnly)return!1;let n=O.field(Yk,!1);if(!n)return!1;let r=n.pop(t,O,e);return r?(i(r),!0):!1}}const _k=Vu(0,!1),Cp=Vu(1,!1),pE=Vu(0,!0),mE=Vu(1,!0);class Ct{constructor(e,O,i,n,r){this.changes=e,this.effects=O,this.mapped=i,this.startSelection=n,this.selectionsAfter=r}setSelAfter(e){return new Ct(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,O,i;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(O=this.mapped)===null||O===void 0?void 0:O.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(n=>n.toJSON())}}static fromJSON(e){return new Ct(e.changes&&Be.fromJSON(e.changes),[],e.mapped&&GO.fromJSON(e.mapped),e.startSelection&&v.fromJSON(e.startSelection),e.selectionsAfter.map(v.fromJSON))}static fromTransaction(e,O){let i=$O;for(let n of e.startState.facet(QE)){let r=n(e);r.length&&(i=i.concat(r))}return!i.length&&e.changes.empty?null:new Ct(e.changes.invert(e.startState.doc),i,void 0,O||e.startState.selection,$O)}static selection(e){return new Ct(void 0,$O,void 0,void 0,e)}}function Wu(t,e,O,i){let n=e+1>O+20?e-O-1:0,r=t.slice(n,e);return r.push(i),r}function gE(t,e){let O=[],i=!1;return t.iterChangedRanges((n,r)=>O.push(n,r)),e.iterChangedRanges((n,r,a,s)=>{for(let o=0;o=l&&a<=c&&(i=!0)}}),i}function PE(t,e){return t.ranges.length==e.ranges.length&&t.ranges.filter((O,i)=>O.empty!=e.ranges[i].empty).length===0}function zk(t,e){return t.length?e.length?t.concat(e):t:e}const $O=[],SE=200;function Uk(t,e){if(t.length){let O=t[t.length-1],i=O.selectionsAfter.slice(Math.max(0,O.selectionsAfter.length-SE));return i.length&&i[i.length-1].eq(e)?t:(i.push(e),Wu(t,t.length-1,1e9,O.setSelAfter(i)))}else return[Ct.selection([e])]}function XE(t){let e=t[t.length-1],O=t.slice();return O[t.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),O}function Gp(t,e){if(!t.length)return t;let O=t.length,i=$O;for(;O;){let n=xE(t[O-1],e,i);if(n.changes&&!n.changes.empty||n.effects.length){let r=t.slice(0,O);return r[O-1]=n,r}else e=n.mapped,O--,i=n.selectionsAfter}return i.length?[Ct.selection(i)]:$O}function xE(t,e,O){let i=zk(t.selectionsAfter.length?t.selectionsAfter.map(s=>s.map(e)):$O,O);if(!t.changes)return Ct.selection(i);let n=t.changes.map(e),r=e.mapDesc(t.changes,!0),a=t.mapped?t.mapped.composeDesc(r):r;return new Ct(n,ue.mapEffects(t.effects,e),a,t.startSelection.map(r),i)}const yE=/^(input\.type|delete)($|\.)/;class KO{constructor(e,O,i=0,n=void 0){this.done=e,this.undone=O,this.prevTime=i,this.prevUserEvent=n}isolate(){return this.prevTime?new KO(this.done,this.undone):this}addChanges(e,O,i,n,r){let a=this.done,s=a[a.length-1];return s&&s.changes&&!s.changes.empty&&e.changes&&(!i||yE.test(i))&&(!s.selectionsAfter.length&&O-this.prevTime0&&O-this.prevTimeO.empty?t.moveByChar(O,e):ju(O,e))}function xt(t){return t.textDirectionAt(t.state.selection.main.head)==be.LTR}const Vk=t=>qk(t,!xt(t)),Wk=t=>qk(t,xt(t));function jk(t,e){return _O(t,O=>O.empty?t.moveByGroup(O,e):ju(O,e))}const TE=t=>jk(t,!xt(t)),kE=t=>jk(t,xt(t));function vE(t,e,O){if(e.type.prop(O))return!0;let i=e.to-e.from;return i&&(i>2||/[^\s,.;:]/.test(t.sliceDoc(e.from,e.to)))||e.firstChild}function Cu(t,e,O){let i=$e(t).resolveInner(e.head),n=O?K.closedBy:K.openedBy;for(let o=e.head;;){let l=O?i.childAfter(o):i.childBefore(o);if(!l)break;vE(t,l,n)?i=l:o=O?l.to:l.from}let r=i.type.prop(n),a,s;return r&&(a=O?HO(t,i.from,1):HO(t,i.to,-1))&&a.matched?s=O?a.end.to:a.end.from:s=O?i.to:i.from,v.cursor(s,O?-1:1)}const bE=t=>_O(t,e=>Cu(t.state,e,!xt(t))),ZE=t=>_O(t,e=>Cu(t.state,e,xt(t)));function Ck(t,e){return _O(t,O=>{if(!O.empty)return ju(O,e);let i=t.moveVertically(O,e);return i.head!=O.head?i:t.moveToLineBoundary(O,e)})}const Gk=t=>Ck(t,!1),Ek=t=>Ck(t,!0);function Ak(t){let e=t.scrollDOM.clientHeighta.empty?t.moveVertically(a,e,O.height):ju(a,e));if(n.eq(i.selection))return!1;let r;if(O.selfScroll){let a=t.coordsAtPos(i.selection.main.head),s=t.scrollDOM.getBoundingClientRect(),o=s.top+O.marginTop,l=s.bottom-O.marginBottom;a&&a.top>o&&a.bottomLk(t,!1),Ep=t=>Lk(t,!0);function Sn(t,e,O){let i=t.lineBlockAt(e.head),n=t.moveToLineBoundary(e,O);if(n.head==e.head&&n.head!=(O?i.to:i.from)&&(n=t.moveToLineBoundary(e,O,!1)),!O&&n.head==i.from&&i.length){let r=/^\s*/.exec(t.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&e.head!=i.from+r&&(n=v.cursor(i.from+r))}return n}const RE=t=>_O(t,e=>Sn(t,e,!0)),YE=t=>_O(t,e=>Sn(t,e,!1)),_E=t=>_O(t,e=>Sn(t,e,!xt(t))),zE=t=>_O(t,e=>Sn(t,e,xt(t))),UE=t=>_O(t,e=>v.cursor(t.lineBlockAt(e.head).from,1)),qE=t=>_O(t,e=>v.cursor(t.lineBlockAt(e.head).to,-1));function VE(t,e,O){let i=!1,n=ga(t.selection,r=>{let a=HO(t,r.head,-1)||HO(t,r.head,1)||r.head>0&&HO(t,r.head-1,1)||r.headVE(t,e);function pO(t,e,O){let i=ga(t.state.selection,n=>{n.undirectional&&n.head>=n.anchor!=e&&(n=v.range(n.head,n.anchor));let r=O(n);return v.range(n.anchor,r.head,r.goalColumn,r.bidiLevel||void 0,r.assoc)});return i.eq(t.state.selection)?!1:(t.dispatch(YO(t.state,i)),!0)}function Nk(t,e){return pO(t,e,O=>t.moveByChar(O,e))}const Ik=t=>Nk(t,!xt(t)),Dk=t=>Nk(t,xt(t));function Bk(t,e){return pO(t,e,O=>t.moveByGroup(O,e))}const jE=t=>Bk(t,!xt(t)),CE=t=>Bk(t,xt(t)),GE=t=>{let e=!xt(t);return pO(t,e,O=>Cu(t.state,O,e))},EE=t=>{let e=xt(t);return pO(t,e,O=>Cu(t.state,O,e))};function Fk(t,e){return pO(t,e,O=>t.moveVertically(O,e))}const Hk=t=>Fk(t,!1),Kk=t=>Fk(t,!0);function Jk(t,e){return pO(t,e,O=>t.moveVertically(O,e,Ak(t).height))}const ev=t=>Jk(t,!1),tv=t=>Jk(t,!0),AE=t=>pO(t,!0,e=>Sn(t,e,!0)),LE=t=>pO(t,!1,e=>Sn(t,e,!1)),ME=t=>{let e=!xt(t);return pO(t,e,O=>Sn(t,O,e))},NE=t=>{let e=xt(t);return pO(t,e,O=>Sn(t,O,e))},IE=t=>pO(t,!1,e=>v.cursor(t.lineBlockAt(e.head).from)),DE=t=>pO(t,!0,e=>v.cursor(t.lineBlockAt(e.head).to)),Ov=({state:t,dispatch:e})=>(e(YO(t,{anchor:0})),!0),iv=({state:t,dispatch:e})=>(e(YO(t,{anchor:t.doc.length})),!0),nv=({state:t,dispatch:e})=>(e(YO(t,{anchor:t.selection.main.anchor,head:0})),!0),rv=({state:t,dispatch:e})=>(e(YO(t,{anchor:t.selection.main.anchor,head:t.doc.length})),!0),BE=({state:t,dispatch:e})=>(e(t.update({selection:{anchor:0,head:t.doc.length},userEvent:"select"})),!0),FE=({state:t,dispatch:e})=>{let O=Eu(t).map(({from:i,to:n})=>v.undirectionalRange(i,Math.min(n+1,t.doc.length)));return e(t.update({selection:v.create(O),userEvent:"select"})),!0},HE=({state:t,dispatch:e})=>{let O=ga(t.selection,i=>{let n=$e(t),r=n.resolveStack(i.from,1);if(i.empty){let a=n.resolveStack(i.from,-1);a.node.from>=r.node.from&&a.node.to<=r.node.to&&(r=a)}for(let a=r;a;a=a.next){let{node:s}=a;if((s.from=i.to||s.to>i.to&&s.from<=i.from)&&a.next)return v.undirectionalRange(s.from,s.to)}return i});return O.eq(t.selection)?!1:(e(YO(t,O)),!0)};function av(t,e){let{state:O}=t,i=O.selection,n=O.selection.ranges.slice();for(let r of O.selection.ranges){let a=O.doc.lineAt(r.head);if(e?a.to0)for(let s=r;;){let o=t.moveVertically(s,e);if(o.heada.to){n.some(l=>l.head==o.head)||n.push(o);break}else{if(o.head==s.head)break;s=o}}}return n.length==i.ranges.length?!1:(t.dispatch(YO(O,v.create(n,n.length-1))),!0)}const KE=t=>av(t,!1),JE=t=>av(t,!0),e3=({state:t,dispatch:e})=>{let O=t.selection,i=null;return O.ranges.length>1?i=v.create([O.main]):O.main.empty||(i=v.create([v.cursor(O.main.head)])),i?(e(YO(t,i)),!0):!1};function bo(t,e){if(t.state.readOnly)return!1;let O="delete.selection",{state:i}=t,n=i.changeByRange(r=>{let{from:a,to:s}=r;if(a==s){let o=e(r);oa&&(O="delete.forward",o=Gu(t,o,!0)),a=Math.min(a,o),s=Math.max(s,o)}else a=Gu(t,a,!1),s=Gu(t,s,!0);return a==s?{range:r}:{changes:{from:a,to:s},range:v.cursor(a,an(t)))i.between(e,e,(n,r)=>{ne&&(e=O?r:n)});return e}const sv=(t,e,O)=>bo(t,i=>{let n=i.from,{state:r}=t,a=r.doc.lineAt(n),s,o;if(O&&!e&&n>a.from&&nsv(t,!1,!0),ov=t=>sv(t,!0,!1),lv=(t,e)=>bo(t,O=>{let i=O.head,{state:n}=t,r=n.doc.lineAt(i),a=n.charCategorizer(i);for(let s=null;;){if(i==(e?r.to:r.from)){i==O.head&&r.number!=(e?n.doc.lines:1)&&(i+=e?1:-1);break}let o=rt(r.text,i-r.from,e)+r.from,l=r.text.slice(Math.min(i,o)-r.from,Math.max(i,o)-r.from),c=a(l);if(s!=null&&c!=s)break;(l!=" "||i!=O.head)&&(s=c),i=o}return i}),cv=t=>lv(t,!1),t3=t=>lv(t,!0),O3=t=>bo(t,e=>{let O=t.lineBlockAt(e.head).to;return e.headbo(t,e=>{let O=t.moveToLineBoundary(e,!1).head;return e.head>O?O:Math.max(0,e.head-1)}),n3=t=>bo(t,e=>{let O=t.moveToLineBoundary(e,!0).head;return e.head{if(t.readOnly)return!1;let O=t.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:fe.of(["",""])},range:v.cursor(i.from)}));return e(t.update(O,{scrollIntoView:!0,userEvent:"input"})),!0},a3=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let O=t.changeByRange(i=>{if(!i.empty||i.from==0||i.from==t.doc.length)return{range:i};let n=i.from,r=t.doc.lineAt(n),a=n==r.from?n-1:rt(r.text,n-r.from,!1)+r.from,s=n==r.to?n+1:rt(r.text,n-r.from,!0)+r.from;return{changes:{from:a,to:s,insert:t.doc.slice(n,s).append(t.doc.slice(a,n))},range:v.cursor(s)}});return O.changes.empty?!1:(e(t.update(O,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function Eu(t){let e=[],O=-1;for(let i of t.selection.ranges){let n=t.doc.lineAt(i.from),r=t.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=t.doc.lineAt(i.to-1)),O>=n.number){let a=e[e.length-1];a.to=r.to,a.ranges.push(i)}else e.push({from:n.from,to:r.to,ranges:[i]});O=r.number+1}return e}function uv(t,e,O){if(t.readOnly)return!1;let i=[],n=[];for(let r of Eu(t)){if(O?r.to==t.doc.length:r.from==0)continue;let a=t.doc.lineAt(O?r.to+1:r.from-1),s=a.length+1;if(O){i.push({from:r.to,to:a.to},{from:r.from,insert:a.text+t.lineBreak});for(let o of r.ranges)n.push(v.range(Math.min(t.doc.length,o.anchor+s),Math.min(t.doc.length,o.head+s)))}else{i.push({from:a.from,to:r.from},{from:r.to,insert:t.lineBreak+a.text});for(let o of r.ranges)n.push(v.range(o.anchor-s,o.head-s))}}return i.length?(e(t.update({changes:i,scrollIntoView:!0,selection:v.create(n,t.selection.mainIndex),userEvent:"move.line"})),!0):!1}const s3=({state:t,dispatch:e})=>uv(t,e,!1),o3=({state:t,dispatch:e})=>uv(t,e,!0);function dv(t,e,O){if(t.readOnly)return!1;let i=[];for(let r of Eu(t))O?i.push({from:r.from,insert:t.doc.slice(r.from,r.to)+t.lineBreak}):i.push({from:r.to,insert:t.lineBreak+t.doc.slice(r.from,r.to)});let n=t.changes(i);return e(t.update({changes:n,selection:t.selection.map(n,O?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}const l3=({state:t,dispatch:e})=>dv(t,e,!1),c3=({state:t,dispatch:e})=>dv(t,e,!0),u3=t=>{if(t.state.readOnly)return!1;let{state:e}=t,O=e.changes(Eu(e).map(({from:n,to:r})=>(n>0?n--:r{let r;if(t.lineWrapping){let a=t.lineBlockAt(n.head),s=t.coordsAtPos(n.head,n.assoc||1);s&&(r=a.bottom+t.documentTop-s.bottom+t.defaultLineHeight/2)}return t.moveVertically(n,!0,r)}).map(O);return t.dispatch({changes:O,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function d3(t,e){if(/\(\)|\[\]|\{\}/.test(t.sliceDoc(e-1,e+1)))return{from:e,to:e};let O=$e(t).resolveInner(e),i=O.childBefore(e),n=O.childAfter(e),r;return i&&n&&i.to<=e&&n.from>=e&&(r=i.type.prop(K.closedBy))&&r.indexOf(n.name)>-1&&t.doc.lineAt(i.to).from==t.doc.lineAt(n.from).from&&!/\S/.test(t.sliceDoc(i.to,n.from))?{from:i.to,to:n.from}:null}const fv=hv(!1),f3=hv(!0);function hv(t){return({state:e,dispatch:O})=>{if(e.readOnly)return!1;let i=e.changeByRange(n=>{let{from:r,to:a}=n,s=e.doc.lineAt(r),o=!t&&r==a&&d3(e,r);t&&(r=a=(a<=s.to?s:e.doc.lineAt(a)).to);let l=new Nc(e,{simulateBreak:r,simulateDoubleBreak:!!o}),c=VQ(l,r);for(c==null&&(c=TO(/^\s*/.exec(e.doc.lineAt(r).text)[0],e.tabSize));as.from&&r{let n=[];for(let a=i.from;a<=i.to;){let s=t.doc.lineAt(a);s.number>O&&(i.empty||i.to>s.from)&&(e(s,n,i),O=s.number),a=s.to+1}let r=t.changes(n);return{changes:n,range:v.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}const h3=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let O=Object.create(null),i=new Nc(t,{overrideIndentation:r=>{let a=O[r];return a??-1}}),n=Lp(t,(r,a,s)=>{let o=VQ(i,r.from);if(o==null)return;/\S/.test(r.text)||(o=0);let l=/^\s*/.exec(r.text)[0],c=Ds(t,o);(l!=c||s.fromt.readOnly?!1:(e(t.update(Lp(t,(O,i)=>{i.push({from:O.from,insert:t.facet(Is)})}),{userEvent:"input.indent"})),!0),$3=({state:t,dispatch:e})=>t.readOnly?!1:(e(t.update(Lp(t,(O,i)=>{let n=/^\s*/.exec(O.text)[0];if(!n)return;let r=TO(n,t.tabSize),a=0,s=Ds(t,Math.max(0,r-Hn(t)));for(;a(t.setTabFocusMode(),!0),m3=[{key:"Ctrl-b",run:Vk,shift:Ik,preventDefault:!0},{key:"Ctrl-f",run:Wk,shift:Dk},{key:"Ctrl-p",run:Gk,shift:Hk},{key:"Ctrl-n",run:Ek,shift:Kk},{key:"Ctrl-a",run:UE,shift:IE},{key:"Ctrl-e",run:qE,shift:DE},{key:"Ctrl-d",run:ov},{key:"Ctrl-h",run:Ap},{key:"Ctrl-k",run:O3},{key:"Ctrl-Alt-h",run:cv},{key:"Ctrl-o",run:r3},{key:"Ctrl-t",run:a3},{key:"Ctrl-v",run:Ep}],g3=[{key:"ArrowLeft",run:Vk,shift:Ik,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:TE,shift:jE,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:_E,shift:ME,preventDefault:!0},{key:"ArrowRight",run:Wk,shift:Dk,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:kE,shift:CE,preventDefault:!0},{mac:"Cmd-ArrowRight",run:zE,shift:NE,preventDefault:!0},{key:"ArrowUp",run:Gk,shift:Hk,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Ov,shift:nv},{mac:"Ctrl-ArrowUp",run:Mk,shift:ev},{key:"ArrowDown",run:Ek,shift:Kk,preventDefault:!0},{mac:"Cmd-ArrowDown",run:iv,shift:rv},{mac:"Ctrl-ArrowDown",run:Ep,shift:tv},{key:"PageUp",run:Mk,shift:ev},{key:"PageDown",run:Ep,shift:tv},{key:"Home",run:YE,shift:LE,preventDefault:!0},{key:"Mod-Home",run:Ov,shift:nv},{key:"End",run:RE,shift:AE,preventDefault:!0},{key:"Mod-End",run:iv,shift:rv},{key:"Enter",run:fv,shift:fv},{key:"Mod-a",run:BE},{key:"Backspace",run:Ap,shift:Ap,preventDefault:!0},{key:"Delete",run:ov,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:cv,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:t3,preventDefault:!0},{mac:"Mod-Backspace",run:i3,preventDefault:!0},{mac:"Mod-Delete",run:n3,preventDefault:!0}].concat(m3.map(t=>({mac:t.key,run:t.run,shift:t.shift}))),P3=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:bE,shift:GE},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:ZE,shift:EE},{key:"Alt-ArrowUp",run:s3},{key:"Shift-Alt-ArrowUp",run:l3},{key:"Alt-ArrowDown",run:o3},{key:"Shift-Alt-ArrowDown",run:c3},{key:"Mod-Alt-ArrowUp",run:KE},{key:"Mod-Alt-ArrowDown",run:JE},{key:"Escape",run:e3},{key:"Mod-Enter",run:f3},{key:"Alt-l",mac:"Ctrl-l",run:FE},{key:"Mod-i",run:HE,preventDefault:!0},{key:"Mod-[",run:$3},{key:"Mod-]",run:Q3},{key:"Mod-Alt-\\",run:h3},{key:"Shift-Mod-k",run:u3},{key:"Shift-Mod-\\",run:WE},{key:"Mod-/",run:sE},{key:"Alt-A",mac:"Ctrl-A",run:lE},{key:"Ctrl-m",mac:"Shift-Alt-m",run:p3}].concat(g3),Qv=typeof String.prototype.normalize=="function"?t=>t.normalize("NFKD"):t=>t;class Pa{constructor(e,O,i=0,n=e.length,r,a){this.test=a,this.value={from:0,to:0,precise:!1},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(i,n),this.bufferStart=i,this.normalize=r?s=>r(Qv(s)):Qv,this.query=this.normalize(O)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return rn(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let O=QX(e),i=this.bufferStart+this.bufferPos;this.bufferPos+=Ss(e);let n=this.normalize(O);if(n.length)for(let r=0,a=i,s=!0;;r++){let o=n.charCodeAt(r),l=this.match(o,a,s,this.bufferPos+this.bufferStart,r==n.length-1);if(l)return this.value=l,this;if(r==n.length-1)break;s&&rthis.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let O=this.matchPos<=this.to&&this.re.exec(this.curLine);if(O){let i=this.curLineStart+O.index,n=i+O[0].length;if(this.matchPos=Au(this.text,n+(i==n?1:0)),i==this.curLineStart+this.curLine.length&&this.nextLine(),(ithis.value.to)&&(!this.test||this.test(i,n,O)))return this.value={from:i,to:n,precise:!0,match:O},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length=i||n.to<=O){let s=new Sa(O,e.sliceString(O,i));return Np.set(e,s),s}if(n.from==O&&n.to==i)return n;let{text:r,from:a}=n;return a>O&&(r=e.sliceString(O,a)+r,a=O),n.to=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,O=this.re.exec(this.flat.text);if(O&&!O[0]&&O.index==e&&(this.re.lastIndex=e+1,O=this.re.exec(this.flat.text)),O){let i=this.flat.from+O.index,n=i+O[0].length;if((this.flat.to>=this.to||O.index+O[0].length<=this.flat.text.length-10)&&(!this.test||this.test(i,n,O)))return this.value={from:i,to:n,precise:!0,match:O},this.matchPos=Au(this.text,n+(i==n?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=Sa.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}typeof Symbol<"u"&&(pv.prototype[Symbol.iterator]=mv.prototype[Symbol.iterator]=function(){return this});function S3(t){try{return new RegExp(t,Mp),!0}catch{return!1}}function Au(t,e){if(e>=t.length)return e;let O=t.lineAt(e),i;for(;e=56320&&i<57344;)e++;return e}const X3=t=>{let e=A_(t,"cm-goto-line");if(e){let a=e.dom.querySelector("input[type=text]");return a&&a.select(),!0}let{state:O}=t,i=String(O.doc.lineAt(t.state.selection.main.head).number),{close:n,result:r}=E_(t,{class:"cm-goto-line",label:O.phrase("Go to line"),input:{type:"text",name:"line",value:i},focus:!0,submitLabel:O.phrase("go")});return r.then(a=>{let s=a&&/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(a.elements.line.value);if(!s){t.dispatch({effects:n});return}let o=O.doc.lineAt(O.selection.main.head),[,l,c,u,d]=s,h=u?+u.slice(1):0,Q=c?+c:o.number;if(c&&d){let p=Q/100;l&&(p=p*(l=="-"?-1:1)+o.number/O.doc.lines),Q=Math.round(O.doc.lines*p)}else c&&l&&(Q=Q*(l=="-"?-1:1)+o.number);let $=O.doc.line(Math.max(1,Math.min(O.doc.lines,Q))),P=v.cursor($.from+Math.max(0,Math.min(h,$.length)));t.dispatch({effects:[n,L.scrollIntoView(P.from,{y:"center"})],selection:P})}),!0},x3={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},y3=N.define({combine(t){return on(t,x3,{highlightWordAroundCursor:(e,O)=>e||O,minSelectionLength:Math.min,maxMatches:Math.min})}});function w3(t){return[Z3,b3]}const T3=J.mark({class:"cm-selectionMatch"}),k3=J.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function gv(t,e,O,i){return(O==0||t(e.sliceDoc(O-1,O))!=ve.Word)&&(i==e.doc.length||t(e.sliceDoc(i,i+1))!=ve.Word)}function v3(t,e,O,i){return t(e.sliceDoc(O,O+1))==ve.Word&&t(e.sliceDoc(i-1,i))==ve.Word}const b3=st.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.selectionSet||t.docChanged||t.viewportChanged)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=t.state.facet(y3),{state:O}=t,i=O.selection;if(i.ranges.length>1)return J.none;let n=i.main,r,a=null;if(n.empty){if(!e.highlightWordAroundCursor)return J.none;let o=O.wordAt(n.head);if(!o)return J.none;a=O.charCategorizer(n.head),r=O.sliceDoc(o.from,o.to)}else{let o=n.to-n.from;if(o200)return J.none;if(e.wholeWords){if(r=O.sliceDoc(n.from,n.to),a=O.charCategorizer(n.head),!(gv(a,O,n.from,n.to)&&v3(a,O,n.from,n.to)))return J.none}else if(r=O.sliceDoc(n.from,n.to),!r)return J.none}let s=[];for(let o of t.visibleRanges){let l=new Pa(O.doc,r,o.from,o.to);for(;!l.next().done;){let{from:c,to:u}=l.value;if((!a||gv(a,O,c,u))&&(n.empty&&c<=n.from&&u>=n.to?s.push(k3.range(c,u)):(c>=n.to||u<=n.from)&&s.push(T3.range(c,u)),s.length>e.maxMatches))return J.none}}return J.set(s)}},{decorations:t=>t.decorations}),Z3=L.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),R3=({state:t,dispatch:e})=>{let{selection:O}=t,i=v.create(O.ranges.map(n=>t.wordAt(n.head)||v.cursor(n.head)),O.mainIndex);return i.eq(O)?!1:(e(t.update({selection:i})),!0)};function Y3(t,e){let{main:O,ranges:i}=t.selection,n=t.wordAt(O.head),r=n&&n.from==O.from&&n.to==O.to;for(let a=!1,s=new Pa(t.doc,e,i[i.length-1].to);;)if(s.next(),s.done){if(a)return null;s=new Pa(t.doc,e,0,Math.max(0,i[i.length-1].from-1)),a=!0}else{if(a&&i.some(o=>o.from==s.value.from))continue;if(r){let o=t.wordAt(s.value.from);if(!o||o.from!=s.value.from||o.to!=s.value.to)continue}return s.value}}const _3=({state:t,dispatch:e})=>{let{ranges:O}=t.selection;if(O.some(r=>r.from===r.to))return R3({state:t,dispatch:e});let i=t.sliceDoc(O[0].from,O[0].to);if(t.selection.ranges.some(r=>t.sliceDoc(r.from,r.to)!=i))return!1;let n=Y3(t,i);return n?(e(t.update({selection:t.selection.addRange(v.range(n.from,n.to),!1),effects:L.scrollIntoView(n.to)})),!0):!1},Xa=N.define({combine(t){return on(t,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new I3(e),scrollToMatch:e=>L.scrollIntoView(e)})}});class Pv{constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||S3(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord,this.test=e.test}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(O,i)=>i=="n"?` +`;function S0(t,e,O){let i=Object.create(null);i.true=i.false=UC,i.null=i.unknown=qC;for(let n of t.split(" "))n&&(i[n]=Q0);for(let n of e.split(" "))n&&(i[n]=$0);for(let n of(O||"").split(" "))n&&(i[n]=FC);return i}const ap={backslashEscapes:!1,hashComments:!1,spaceAfterDashes:!1,slashComments:!1,doubleQuotedStrings:!1,doubleDollarQuotedStrings:!1,unquotedBitLiterals:!1,treatBitsAsBytes:!1,charSetCasts:!1,plsqlQuotingMechanism:!1,operatorChars:"*+-%<>!=&|~^/",specialVar:"?",identifierQuotes:'"',caseInsensitiveIdentifiers:!1,words:S0("absolute action add after all allocate alter and any are as asc assertion at authorization before begin between both breadth by call cascade cascaded case cast catalog check close collate collation column commit condition connect connection constraint constraints constructor continue corresponding count create cross cube current current_date current_default_transform_group current_transform_group_for_type current_path current_role current_time current_timestamp current_user cursor cycle data day deallocate declare default deferrable deferred delete depth deref desc describe descriptor deterministic diagnostics disconnect distinct do domain drop dynamic each else elseif end end-exec equals escape except exception exec execute exists exit external fetch first for foreign found from free full function general get global go goto grant group grouping handle having hold hour identity if immediate in indicator initially inner inout input insert intersect into is isolation join key language last lateral leading leave left level like limit local localtime localtimestamp locator loop map match method minute modifies module month names natural nesting new next no none not of old on only open option or order ordinality out outer output overlaps pad parameter partial path prepare preserve primary prior privileges procedure public read reads recursive redo ref references referencing relative release repeat resignal restrict result return returns revoke right role rollback rollup routine row rows savepoint schema scroll search second section select session session_user set sets signal similar size some space specific specifictype sql sqlexception sqlstate sqlwarning start state static system_user table temporary then timezone_hour timezone_minute to trailing transaction translation treat trigger under undo union unique unnest until update usage user using value values view when whenever where while with without work write year zone ","array binary bit boolean char character clob date decimal double float int integer interval large national nchar nclob numeric object precision real smallint time timestamp varchar varying ")};function t7(t,e,O,i){let n={};for(let r in ap)n[r]=(t.hasOwnProperty(r)?t:ap)[r];return e&&(n.words=S0(e,O||"",i)),n}function X0(t){return new Oe(e=>{var O;let{next:i}=e;if(e.advance(),rr(i,rp)){for(;rr(e.next,rp);)e.advance();e.acceptToken(_C)}else if(i==36&&t.doubleDollarQuotedStrings){let n=np(e,"");e.next==36&&(e.advance(),KC(e,n),e.acceptToken(fa))}else if(i==39||i==34&&t.doubleQuotedStrings)nr(e,i,t.backslashEscapes),e.acceptToken(fa);else if(i==35&&t.hashComments||i==47&&e.next==47&&t.slashComments)P0(e),e.acceptToken(f0);else if(i==45&&e.next==45&&(!t.spaceAfterDashes||e.peek(1)==32))P0(e),e.acceptToken(f0);else if(i==47&&e.next==42){e.advance();for(let n=1;;){let r=e.next;if(e.next<0)break;if(e.advance(),r==42&&e.next==47){if(n--,e.advance(),!n)break}else r==47&&e.next==42&&(n++,e.advance())}e.acceptToken(zC)}else if((i==101||i==69)&&e.next==39)e.advance(),nr(e,39,!0),e.acceptToken(fa);else if((i==110||i==78)&&e.next==39&&t.charSetCasts)e.advance(),nr(e,39,t.backslashEscapes),e.acceptToken(fa);else if(i==95&&t.charSetCasts)for(let n=0;;n++){if(e.next==39&&n>1){e.advance(),nr(e,39,t.backslashEscapes),e.acceptToken(fa);break}if(!ip(e.next))break;e.advance()}else if(t.plsqlQuotingMechanism&&(i==113||i==81)&&e.next==39&&e.peek(1)>0&&!rr(e.peek(1),rp)){let n=e.peek(1);e.advance(2),JC(e,n),e.acceptToken(fa)}else if(rr(i,t.identifierQuotes)){const n=i==91?93:i;nr(e,n,!1),e.acceptToken(DC)}else if(i==40)e.acceptToken(VC);else if(i==41)e.acceptToken(WC);else if(i==123)e.acceptToken(jC);else if(i==125)e.acceptToken(CC);else if(i==91)e.acceptToken(GC);else if(i==93)e.acceptToken(EC);else if(i==59)e.acceptToken(AC);else if(t.unquotedBitLiterals&&i==48&&e.next==98)e.advance(),m0(e),e.acceptToken(p0);else if((i==98||i==66)&&(e.next==39||e.next==34)){const n=e.next;e.advance(),t.treatBitsAsBytes?(nr(e,n,t.backslashEscapes),e.acceptToken(BC)):(m0(e,n),e.acceptToken(p0))}else if(i==48&&(e.next==120||e.next==88)||(i==120||i==88)&&e.next==39){let n=e.next==39;for(e.advance();HC(e.next);)e.advance();n&&e.next==39&&e.advance(),e.acceptToken(Op)}else if(i==46&&e.next>=48&&e.next<=57)g0(e,!0),e.acceptToken(Op);else if(i==46)e.acceptToken(LC);else if(i>=48&&i<=57)g0(e,!1),e.acceptToken(Op);else if(rr(i,t.operatorChars)){for(;rr(e.next,t.operatorChars);)e.advance();e.acceptToken(MC)}else if(rr(i,t.specialVar))e.next==i&&e.advance(),e7(e),e.acceptToken(IC);else if(i==58||i==44)e.acceptToken(NC);else if(ip(i)){let n=np(e,String.fromCharCode(i));e.acceptToken(e.next==46||e.peek(-n.length-1)==46?h0:(O=t.words[n.toLowerCase()])!==null&&O!==void 0?O:h0)}})}const x0=X0(ap),O7=tt.deserialize({version:14,states:"%vQ]QQOOO#wQRO'#DSO$OQQO'#CwO%eQQO'#CxO%lQQO'#CyO%sQQO'#CzOOQQ'#DS'#DSOOQQ'#C}'#C}O'UQRO'#C{OOQQ'#Cv'#CvOOQQ'#C|'#C|Q]QQOOQOQQOOO'`QQO'#DOO(xQRO,59cO)PQQO,59cO)UQQO'#DSOOQQ,59d,59dO)cQQO,59dOOQQ,59e,59eO)jQQO,59eOOQQ,59f,59fO)qQQO,59fOOQQ-E6{-E6{OOQQ,59b,59bOOQQ-E6z-E6zOOQQ,59j,59jOOQQ-E6|-E6|O+VQRO1G.}O+^QQO,59cOOQQ1G/O1G/OOOQQ1G/P1G/POOQQ1G/Q1G/QP+kQQO'#C}O+rQQO1G.}O)PQQO,59cO,PQQO'#Cw",stateData:",[~OtOSPOSQOS~ORUOSUOTUOUUOVROXSOZTO]XO^QO_UO`UOaPObPOcPOdUOeUOfUOgUOhUO~O^]ORvXSvXTvXUvXVvXXvXZvX]vX_vX`vXavXbvXcvXdvXevXfvXgvXhvX~OsvX~P!jOa_Ob_Oc_O~ORUOSUOTUOUUOVROXSOZTO^tO_UO`UOa`Ob`Oc`OdUOeUOfUOgUOhUO~OWaO~P$ZOYcO~P$ZO[eO~P$ZORUOSUOTUOUUOVROXSOZTO^QO_UO`UOaPObPOcPOdUOeUOfUOgUOhUO~O]hOsoX~P%zOajObjOcjO~O^]ORkaSkaTkaUkaVkaXkaZka]ka_ka`kaakabkackadkaekafkagkahka~Oska~P'kO^]O~OWvXYvX[vX~P!jOWnO~P$ZOYoO~P$ZO[pO~P$ZO^]ORkiSkiTkiUkiVkiXkiZki]ki_ki`kiakibkickidkiekifkigkihki~Oski~P)xOWkaYka[ka~P'kO]hO~P$ZOWkiYki[ki~P)xOasObsOcsO~O",goto:"#hwPPPPPPPPPPPPPPPPPPPPPPPPPPx||||!Y!^!d!xPPP#[TYOZeUORSTWZbdfqT[OZQZORiZSWOZQbRQdSQfTZgWbdfqQ^PWk^lmrQl_Qm`RrseVORSTWZbdfq",nodeNames:"⚠ LineComment BlockComment String Number Bool Null ( ) { } [ ] ; . Operator Punctuation SpecialVar Identifier QuotedIdentifier Keyword Type Bits Bytes Builtin Script Statement CompositeIdentifier Parens Braces Brackets Statement",maxTerm:38,nodeProps:[["isolate",-4,1,2,3,19,""]],skippedNodes:[0,1,2],repeatNodeCount:3,tokenData:"RORO",tokenizers:[0,x0],topRules:{Script:[0,25]},tokenPrec:0});function sp(t){let e=t.cursor().moveTo(t.from,-1);for(;/Comment/.test(e.name);)e.moveTo(e.from,-1);return e.node}function mo(t,e){let O=t.sliceString(e.from,e.to),i=/^([`'"\[])(.*)([`'"\]])$/.exec(O);return i?i[2]:O}function Xu(t){return t&&(t.name=="Identifier"||t.name=="QuotedIdentifier")}function i7(t,e){if(e.name=="CompositeIdentifier"){let O=[];for(let i=e.firstChild;i;i=i.nextSibling)Xu(i)&&O.push(mo(t,i));return O}return[mo(t,e)]}function y0(t,e){for(let O=[];;){if(!e||e.name!=".")return O;let i=sp(e);if(!Xu(i))return O;O.unshift(mo(t,i)),e=sp(i)}}function n7(t,e){let O=$e(t).resolveInner(e,-1),i=a7(t.doc,O);return O.name=="Identifier"||O.name=="QuotedIdentifier"||O.name=="Keyword"?{from:O.from,quoted:O.name=="QuotedIdentifier"?t.doc.sliceString(O.from,O.from+1):null,parents:y0(t.doc,sp(O)),aliases:i}:O.name=="."?{from:e,quoted:null,parents:y0(t.doc,O),aliases:i}:{from:e,quoted:null,parents:[],empty:!0,aliases:i}}const r7=new Set("where group having order union intersect except all distinct limit offset fetch for".split(" "));function a7(t,e){let O;for(let n=e;!O;n=n.parent){if(!n)return null;n.name=="Statement"&&(O=n)}let i=null;for(let n=O.firstChild,r=!1,a=null;n;n=n.nextSibling){let s=n.name=="Keyword"?t.sliceString(n.from,n.to).toLowerCase():null,o=null;if(!r)r=s=="from";else if(s=="as"&&a&&Xu(n.nextSibling))o=mo(t,n.nextSibling);else{if(s&&r7.has(s))break;a&&Xu(n)&&(o=mo(t,n))}o&&(i||(i=Object.create(null)),i[o]=i7(t,a)),a=/Identifier$/.test(n.name)?n:null}return i}function s7(t,e,O){return O.map(i=>({...i,label:i.label[0]==t?i.label:t+i.label+e,apply:void 0}))}const o7=/^\w*$/,l7=/^[`'"\[]?\w*[`'"\]]?$/;function w0(t){return t.self&&typeof t.self.label=="string"}class op{constructor(e,O){this.idQuote=e,this.idCaseInsensitive=O,this.list=[],this.children=void 0}child(e){let O=this.children||(this.children=Object.create(null)),i=O[e];return i||(e&&!this.list.some(n=>n.label==e)&&this.list.push(T0(e,"type",this.idQuote,this.idCaseInsensitive)),O[e]=new op(this.idQuote,this.idCaseInsensitive))}maybeChild(e){return this.children?this.children[e]:null}addCompletion(e){let O=this.list.findIndex(i=>i.label==e.label);O>-1?this.list[O]=e:this.list.push(e)}addCompletions(e){for(let O of e)this.addCompletion(typeof O=="string"?T0(O,"property",this.idQuote,this.idCaseInsensitive):O)}addNamespace(e){Array.isArray(e)?this.addCompletions(e):w0(e)?this.addNamespace(e.children):this.addNamespaceObject(e)}addNamespaceObject(e){for(let O of Object.keys(e)){let i=e[O],n=null,r=O.replace(/\\?\./g,s=>s=="."?"\0":s).split("\0"),a=this;w0(i)&&(n=i.self,i=i.children);for(let s=0;s{let{parents:u,from:d,quoted:h,empty:Q,aliases:$}=n7(c.state,c.pos);if(Q&&!c.explicit)return null;$&&u.length==1&&(u=$[u[0]]||u);let P=o;for(let g of u){for(;!P.children||!P.children[g];)if(P==o&&l)P=l;else if(P==l&&i)P=P.child(i);else return null;let S=P.maybeChild(g);if(!S)return null;P=S}let p=P.list;if(P==o&&$&&(p=p.concat(Object.keys($).map(g=>({label:g,type:"constant"})))),h){let g=h[0],S=k0(g),X=c.state.sliceDoc(c.pos,c.pos+1)==S;return{from:d,to:X?c.pos+1:void 0,options:s7(g,S,p),validFor:l7}}else return{from:d,options:p,validFor:o7}}}function u7(t){return t==$0?"type":t==Q0?"keyword":"variable"}function d7(t,e,O){let i=Object.keys(t).map(n=>O(e?n.toUpperCase():n,u7(t[n])));return iu(["QuotedIdentifier","String","LineComment","BlockComment","."],Ou(i))}let f7=O7.configure({props:[Je.add({Statement:Ue()}),et.add({Statement(t,e){return{from:Math.min(t.from+100,e.doc.lineAt(t.from).to),to:t.to}},BlockComment(t){return{from:t.from+2,to:t.to-2}}}),Fe({Keyword:f.keyword,Type:f.typeName,Builtin:f.standard(f.name),Bits:f.number,Bytes:f.string,Bool:f.bool,Null:f.null,Number:f.number,String:f.string,Identifier:f.name,QuotedIdentifier:f.special(f.string),SpecialVar:f.special(f.name),LineComment:f.lineComment,BlockComment:f.blockComment,Operator:f.operator,"Semi Punctuation":f.punctuation,"( )":f.paren,"{ }":f.brace,"[ ]":f.squareBracket})]});class xu{constructor(e,O,i){this.dialect=e,this.language=O,this.spec=i}get extension(){return this.language.extension}configureLanguage(e,O){return new xu(this.dialect,this.language.configure(e,O),this.spec)}static define(e){let O=t7(e,e.keywords,e.types,e.builtin),i=He.define({name:"sql",parser:f7.configure({tokenizers:[{from:x0,to:X0(O)}]}),languageData:{commentTokens:{line:"--",block:{open:"/*",close:"*/"}},closeBrackets:{brackets:["(","[","{","'",'"',"`"]}}});return new xu(O,i,e)}}function h7(t,e){return{label:t,type:e,boost:-1}}function Q7(t,e=!1,O){return d7(t.dialect.words,e,O||h7)}function $7(t){return t.schema?c7(t.schema,t.tables,t.schemas,t.defaultTable,t.defaultSchema,t.dialect||lp):()=>null}function p7(t){return t.schema?(t.dialect||lp).language.data.of({autocomplete:$7(t)}):[]}function m7(t={}){let e=t.dialect||lp;return new Ke(e.language,[p7(t),e.language.data.of({autocomplete:Q7(e,t.upperCaseKeywords,t.keywordCompletion)})])}const lp=xu.define({}),g7=tt.deserialize({version:14,states:"%pOVOWOOObQPOOOpOSO'#C_OOOO'#Cp'#CpQVOWOOQxQPOOO!TQQOOQ!YQPOOOOOO,58y,58yO!_OSO,58yOOOO-E6n-E6nO!dQQO'#CqQ{QPOOO!iQPOOQ{QPOOO!qQPOOOOOO1G.e1G.eOOQO,59],59]OOQO-E6o-E6oO!yOpO'#CiO#RO`O'#CiQOQPOOO#ZO#tO'#CmO#fO!bO'#CmOOQO,59T,59TO#qOpO,59TO#vO`O,59TOOOO'#Cr'#CrO#{O#tO,59XOOQO,59X,59XOOOO'#Cs'#CsO$WO!bO,59XOOQO1G.o1G.oOOOO-E6p-E6pOOQO1G.s1G.sOOOO-E6q-E6q",stateData:"$g~OjOS~OQROUROkQO~OWTOXUOZUO`VO~OSXOTWO~OXUO[]OlZO~OY^O~O[_O~OT`O~OYaO~OmcOodO~OmfOogO~O^iOnhO~O_jOphO~ObkOqkOrmO~OcnOsnOtmO~OnpO~OppO~ObkOqkOrrO~OcnOsnOtrO~OWX`~",goto:"!^hPPPiPPPPPPPPPmPPPpPPsy!Q!WTROSRe]Re_QSORYSS[T^Rb[QlfRqlQogRso",nodeNames:"⚠ Content Text Interpolation InterpolationContent }} Entity Attribute VueAttributeName : Identifier @ Is ScriptAttributeValue AttributeScript AttributeScript AttributeName AttributeValue Entity Entity",maxTerm:36,nodeProps:[["isolate",-3,3,13,17,""]],skippedNodes:[0],repeatNodeCount:4,tokenData:"'y~RdXY!aYZ!a]^!apq!ars!rwx!w}!O!|!O!P#t!Q![#y![!]$s!_!`%g!b!c%l!c!}#y#R#S#y#T#j#y#j#k%q#k#o#y%W;'S#y;'S;:j$m<%lO#y~!fSj~XY!aYZ!a]^!apq!a~!wOm~~!|Oo~!b#RX`!b}!O!|!Q![!|![!]!|!c!}!|#R#S!|#T#o!|%W;'S!|;'S;:j#n<%lO!|!b#qP;=`<%l!|~#yOl~%W$QXY#t`!b}!O!|!Q![#y![!]!|!c!}#y#R#S#y#T#o#y%W;'S#y;'S;:j$m<%lO#y%W$pP;=`<%l#y~$zXX~`!b}!O!|!Q![!|![!]!|!c!}!|#R#S!|#T#o!|%W;'S!|;'S;:j#n<%lO!|~%lO[~~%qOZ~%W%xXY#t`!b}!O&e!Q![#y![!]!|!c!}#y#R#S#y#T#o#y%W;'S#y;'S;:j$m<%lO#y!b&jX`!b}!O!|!Q![!|![!]!|!c!}'V#R#S!|#T#o'V%W;'S!|;'S;:j#n<%lO!|!b'^XW!b`!b}!O!|!Q![!|![!]!|!c!}'V#R#S!|#T#o'V%W;'S!|;'S;:j#n<%lO!|",tokenizers:[6,7,new fO("b~RP#q#rU~XP#q#r[~aOT~~",17,4),new fO("!k~RQvwX#o#p!_~^TU~Opmq!]m!^;'Sm;'S;=`!X<%lOm~pUOpmq!]m!]!^!S!^;'Sm;'S;=`!X<%lOm~!XOU~~![P;=`<%lm~!bP#o#p!e~!jOk~~",72,2),new fO("[~RPwxU~ZOp~~",11,15),new fO("[~RPrsU~ZOn~~",11,14),new fO("!e~RQvwXwx!_~^Tc~Opmq!]m!^;'Sm;'S;=`!X<%lOm~pUOpmq!]m!]!^!S!^;'Sm;'S;=`!X<%lOm~!XOc~~![P;=`<%lm~!dOt~~",66,35),new fO("!e~RQrsXvw^~^Or~~cTb~Oprq!]r!^;'Sr;'S;=`!^<%lOr~uUOprq!]r!]!^!X!^;'Sr;'S;=`!^<%lOr~!^Ob~~!aP;=`<%lr~",66,33)],topRules:{Content:[0,1],Attribute:[1,7]},tokenPrec:157}),P7=ZO.parser.configure({top:"SingleExpression"}),v0=g7.configure({props:[Fe({Text:f.content,Is:f.definitionOperator,AttributeName:f.attributeName,VueAttributeName:f.keyword,Identifier:f.variableName,"AttributeValue ScriptAttributeValue":f.attributeValue,Entity:f.character,"{{ }}":f.brace,"@ :":f.punctuation})]}),b0={parser:P7},S7=v0.configure({wrap:Nr((t,e)=>t.name=="InterpolationContent"?b0:null)}),X7=v0.configure({wrap:Nr((t,e)=>t.name=="AttributeScript"?b0:null),top:"Attribute"}),x7={parser:S7},y7={parser:X7},cp=su();function Z0(t){return t.configure({dialect:"selfClosing",wrap:Nr(T7)},"vue")}const w7=Z0(cp.language);function T7(t,e){switch(t.name){case"Attribute":return/^(@|:|v-)/.test(e.read(t.from,t.from+2))?y7:null;case"Text":return x7}return null}function k7(t={}){let e=cp;if(t.base){if(t.base.language.name!="html"||!(t.base.language instanceof He))throw new RangeError("The base option must be the result of calling html(...)");e=t.base}return new Ke(e.language==cp.language?w7:Z0(e.language),[e.support,e.language.data.of({closeBrackets:{brackets:["{",'"']}})])}const up=1,v7=2,b7=3,Z7=4,R7=5,Y7=36,_7=37,z7=38,U7=11,q7=13;function V7(t){return t==45||t==46||t==58||t>=65&&t<=90||t==95||t>=97&&t<=122||t>=161}function W7(t){return t==9||t==10||t==13||t==32}let R0=null,Y0=null,_0=0;function dp(t,e){let O=t.pos+e;if(Y0==t&&_0==O)return R0;for(;W7(t.peek(e));)e++;let i="";for(;;){let n=t.peek(e);if(!V7(n))break;i+=String.fromCharCode(n),e++}return Y0=t,_0=O,R0=i||null}function z0(t,e){this.name=t,this.parent=e}const j7=new Jn({start:null,shift(t,e,O,i){return e==up?new z0(dp(i,1)||"",t):t},reduce(t,e){return e==U7&&t?t.parent:t},reuse(t,e,O,i){let n=e.type.id;return n==up||n==q7?new z0(dp(i,1)||"",t):t},strict:!1}),C7=new Oe((t,e)=>{if(t.next==60){if(t.advance(),t.next==47){t.advance();let O=dp(t,0);if(!O)return t.acceptToken(R7);if(e.context&&O==e.context.name)return t.acceptToken(v7);for(let i=e.context;i;i=i.parent)if(i.name==O)return t.acceptToken(b7,-2);t.acceptToken(Z7)}else if(t.next!=33&&t.next!=63)return t.acceptToken(up)}},{contextual:!0});function fp(t,e){return new Oe(O=>{let i=0,n=e.charCodeAt(0);e:for(;!(O.next<0);O.advance(),i++)if(O.next==n){for(let r=1;r"),E7=fp(_7,"?>"),A7=fp(z7,"]]>"),L7=Fe({Text:f.content,"StartTag StartCloseTag EndTag SelfCloseEndTag":f.angleBracket,TagName:f.tagName,"MismatchedCloseTag/TagName":[f.tagName,f.invalid],AttributeName:f.attributeName,AttributeValue:f.attributeValue,Is:f.definitionOperator,"EntityReference CharacterReference":f.character,Comment:f.blockComment,ProcessingInst:f.processingInstruction,DoctypeDecl:f.documentMeta,Cdata:f.special(f.string)}),M7=tt.deserialize({version:14,states:",lOQOaOOOrOxO'#CfOzOpO'#CiO!tOaO'#CgOOOP'#Cg'#CgO!{OrO'#CrO#TOtO'#CsO#]OpO'#CtOOOP'#DT'#DTOOOP'#Cv'#CvQQOaOOOOOW'#Cw'#CwO#eOxO,59QOOOP,59Q,59QOOOO'#Cx'#CxO#mOpO,59TO#uO!bO,59TOOOP'#C|'#C|O$TOaO,59RO$[OpO'#CoOOOP,59R,59ROOOQ'#C}'#C}O$dOrO,59^OOOP,59^,59^OOOS'#DO'#DOO$lOtO,59_OOOP,59_,59_O$tOpO,59`O$|OpO,59`OOOP-E6t-E6tOOOW-E6u-E6uOOOP1G.l1G.lOOOO-E6v-E6vO%UO!bO1G.oO%UO!bO1G.oO%dOpO'#CkO%lO!bO'#CyO%zO!bO1G.oOOOP1G.o1G.oOOOP1G.w1G.wOOOP-E6z-E6zOOOP1G.m1G.mO&VOpO,59ZO&_OpO,59ZOOOQ-E6{-E6{OOOP1G.x1G.xOOOS-E6|-E6|OOOP1G.y1G.yO&gOpO1G.zO&gOpO1G.zOOOP1G.z1G.zO&oO!bO7+$ZO&}O!bO7+$ZOOOP7+$Z7+$ZOOOP7+$c7+$cO'YOpO,59VO'bOpO,59VO'mO!bO,59eOOOO-E6w-E6wO'{OpO1G.uO'{OpO1G.uOOOP1G.u1G.uO(TOpO7+$fOOOP7+$f7+$fO(]O!bO<c!|;'S(o;'S;=`)]<%lO(oi>jX|W!O`Or(ors&osv(owx'}x!r(o!r!s?V!s;'S(o;'S;=`)]<%lO(oi?^X|W!O`Or(ors&osv(owx'}x!g(o!g!h?y!h;'S(o;'S;=`)]<%lO(oi@QY|W!O`Or?yrs@psv?yvwA[wxBdx!`?y!`!aCr!a;'S?y;'S;=`Db<%lO?ya@uV!O`Ov@pvxA[x!`@p!`!aAy!a;'S@p;'S;=`B^<%lO@pPA_TO!`A[!`!aAn!a;'SA[;'S;=`As<%lOA[PAsOiPPAvP;=`<%lA[aBQSiP!O`Ov&ox;'S&o;'S;=`'Q<%lO&oaBaP;=`<%l@pXBiX|WOrBdrsA[svBdvwA[w!`Bd!`!aCU!a;'SBd;'S;=`Cl<%lOBdXC]TiP|WOr'}sv'}w;'S'};'S;=`(c<%lO'}XCoP;=`<%lBdiC{ViP|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oiDeP;=`<%l?yiDoZ|W!O`Or(ors&osv(owx'}x!e(o!e!fEb!f#V(o#V#WIr#W;'S(o;'S;=`)]<%lO(oiEiX|W!O`Or(ors&osv(owx'}x!f(o!f!gFU!g;'S(o;'S;=`)]<%lO(oiF]X|W!O`Or(ors&osv(owx'}x!c(o!c!dFx!d;'S(o;'S;=`)]<%lO(oiGPX|W!O`Or(ors&osv(owx'}x!v(o!v!wGl!w;'S(o;'S;=`)]<%lO(oiGsX|W!O`Or(ors&osv(owx'}x!c(o!c!dH`!d;'S(o;'S;=`)]<%lO(oiHgX|W!O`Or(ors&osv(owx'}x!}(o!}#OIS#O;'S(o;'S;=`)]<%lO(oiI]V|W!O`yPOr(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oiIyX|W!O`Or(ors&osv(owx'}x#W(o#W#XJf#X;'S(o;'S;=`)]<%lO(oiJmX|W!O`Or(ors&osv(owx'}x#T(o#T#UKY#U;'S(o;'S;=`)]<%lO(oiKaX|W!O`Or(ors&osv(owx'}x#h(o#h#iK|#i;'S(o;'S;=`)]<%lO(oiLTX|W!O`Or(ors&osv(owx'}x#T(o#T#UH`#U;'S(o;'S;=`)]<%lO(oiLwX|W!O`Or(ors&osv(owx'}x#c(o#c#dMd#d;'S(o;'S;=`)]<%lO(oiMkX|W!O`Or(ors&osv(owx'}x#V(o#V#WNW#W;'S(o;'S;=`)]<%lO(oiN_X|W!O`Or(ors&osv(owx'}x#h(o#h#iNz#i;'S(o;'S;=`)]<%lO(oi! RX|W!O`Or(ors&osv(owx'}x#m(o#m#n! n#n;'S(o;'S;=`)]<%lO(oi! uX|W!O`Or(ors&osv(owx'}x#d(o#d#e!!b#e;'S(o;'S;=`)]<%lO(oi!!iX|W!O`Or(ors&osv(owx'}x#X(o#X#Y?y#Y;'S(o;'S;=`)]<%lO(oi!#_V!SP|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(ok!$PXaQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qo!$wX[UVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk!%mZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a!&`!a;'S$q;'S;=`)c<%lO$qk!&kX!RQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk!'aZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_#P$q#P#Q!(S#Q;'S$q;'S;=`)c<%lO$qk!(]ZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a!)O!a;'S$q;'S;=`)c<%lO$qk!)ZXxQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$q",tokenizers:[C7,G7,E7,A7,0,1,2,3,4],topRules:{Document:[0,6]},tokenPrec:0});function yu(t,e){let O=e&&e.getChild("TagName");return O?t.sliceString(O.from,O.to):""}function hp(t,e){let O=e&&e.firstChild;return!O||O.name!="OpenTag"?"":yu(t,O)}function N7(t,e,O){let i=e&&e.getChildren("Attribute").find(r=>r.from<=O&&r.to>=O),n=i&&i.getChild("AttributeName");return n?t.sliceString(n.from,n.to):""}function Qp(t){for(let e=t&&t.parent;e;e=e.parent)if(e.name=="Element")return e;return null}function I7(t,e){var O;let i=$e(t).resolveInner(e,-1),n=null;for(let r=i;!n&&r.parent;r=r.parent)(r.name=="OpenTag"||r.name=="CloseTag"||r.name=="SelfClosingTag"||r.name=="MismatchedCloseTag")&&(n=r);if(n&&(n.to>e||n.lastChild.type.isError)){let r=n.parent;if(i.name=="TagName")return n.name=="CloseTag"||n.name=="MismatchedCloseTag"?{type:"closeTag",from:i.from,context:r}:{type:"openTag",from:i.from,context:Qp(r)};if(i.name=="AttributeName")return{type:"attrName",from:i.from,context:n};if(i.name=="AttributeValue")return{type:"attrValue",from:i.from,context:n};let a=i==n||i.name=="Attribute"?i.childBefore(e):i;return a?.name=="StartTag"?{type:"openTag",from:e,context:Qp(r)}:a?.name=="StartCloseTag"&&a.to<=e?{type:"closeTag",from:e,context:r}:a?.name=="Is"?{type:"attrValue",from:e,context:n}:a?{type:"attrName",from:e,context:n}:null}else if(i.name=="StartCloseTag")return{type:"closeTag",from:e,context:i.parent};for(;i.parent&&i.to==e&&!(!((O=i.lastChild)===null||O===void 0)&&O.type.isError);)i=i.parent;return i.name=="Element"||i.name=="Text"||i.name=="Document"?{type:"tag",from:e,context:i.name=="Element"?i:Qp(i)}:null}class D7{constructor(e,O,i){this.attrs=O,this.attrValues=i,this.children=[],this.name=e.name,this.completion=Object.assign(Object.assign({type:"type"},e.completion||{}),{label:this.name}),this.openCompletion=Object.assign(Object.assign({},this.completion),{label:"<"+this.name}),this.closeCompletion=Object.assign(Object.assign({},this.completion),{label:"",boost:2}),this.closeNameCompletion=Object.assign(Object.assign({},this.completion),{label:this.name+">"}),this.text=e.textContent?e.textContent.map(n=>({label:n,type:"text"})):[]}}const $p=/^[:\-\.\w\u00b7-\uffff]*$/;function U0(t){return Object.assign(Object.assign({type:"property"},t.completion||{}),{label:t.name})}function q0(t){return typeof t=="string"?{label:`"${t}"`,type:"constant"}:/^"/.test(t.label)?t:Object.assign(Object.assign({},t),{label:`"${t.label}"`})}function B7(t,e){let O=[],i=[],n=Object.create(null);for(let o of e){let l=U0(o);O.push(l),o.global&&i.push(l),o.values&&(n[o.name]=o.values.map(q0))}let r=[],a=[],s=Object.create(null);for(let o of t){let l=i,c=n;o.attributes&&(l=l.concat(o.attributes.map(d=>typeof d=="string"?O.find(h=>h.label==d)||{label:d,type:"property"}:(d.values&&(c==n&&(c=Object.create(c)),c[d.name]=d.values.map(q0)),U0(d)))));let u=new D7(o,l,c);s[u.name]=u,r.push(u),o.top&&a.push(u)}a.length||(a=r);for(let o=0;o{var l;let{doc:c}=o.state,u=I7(o.state,o.pos);if(!u||u.type=="tag"&&!o.explicit)return null;let{type:d,from:h,context:Q}=u;if(d=="openTag"){let $=a,P=hp(c,Q);if(P){let p=s[P];$=p?.children||r}return{from:h,options:$.map(p=>p.completion),validFor:$p}}else if(d=="closeTag"){let $=hp(c,Q);return $?{from:h,to:o.pos+(c.sliceString(o.pos,o.pos+1)==">"?1:0),options:[((l=s[$])===null||l===void 0?void 0:l.closeNameCompletion)||{label:$+">",type:"type"}],validFor:$p}:null}else if(d=="attrName"){let $=s[yu(c,Q)];return{from:h,options:$?.attrs||i,validFor:$p}}else if(d=="attrValue"){let $=N7(c,Q,h);if(!$)return null;let P=s[yu(c,Q)],p=(P?.attrValues||n)[$];return!p||!p.length?null:{from:h,to:o.pos+(c.sliceString(o.pos,o.pos+1)=='"'?1:0),options:p,validFor:/^"[^"]*"?$/}}else if(d=="tag"){let $=hp(c,Q),P=s[$],p=[],g=Q&&Q.lastChild;$&&(!g||g.name!="CloseTag"||yu(c,g)!=$)&&p.push(P?P.closeCompletion:{label:"",type:"type",boost:2});let S=p.concat((P?.children||(Q?r:a)).map(X=>X.openCompletion));if(Q&&P?.text.length){let X=Q.firstChild;X.to>o.pos-20&&!/\S/.test(o.state.sliceDoc(X.to,o.pos))&&(S=S.concat(P.text))}return{from:h,options:S,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}else return null}}const pp=He.define({name:"xml",parser:M7.configure({props:[Je.add({Element(t){let e=/^\s*<\//.test(t.textAfter);return t.lineIndent(t.node.from)+(e?0:t.unit)},"OpenTag CloseTag SelfClosingTag"(t){return t.column(t.node.from)+t.unit}}),et.add({Element(t){let e=t.firstChild,O=t.lastChild;return!e||e.name!="OpenTag"?null:{from:e.to,to:O.name=="CloseTag"?O.from:t.to}}}),EQ.add({"OpenTag CloseTag":t=>t.getChild("TagName")})]}),languageData:{commentTokens:{block:{open:""}},indentOnInput:/^\s*<\/$/}});function F7(t={}){let e=[pp.data.of({autocomplete:B7(t.elements||[],t.attributes||[])})];return t.autoCloseTags!==!1&&e.push(H7),new Ke(pp,e)}function V0(t,e,O=t.length){if(!e)return"";let i=e.firstChild,n=i&&i.getChild("TagName");return n?t.sliceString(n.from,Math.min(n.to,O)):""}const H7=L.inputHandler.of((t,e,O,i,n)=>{if(t.composing||t.state.readOnly||e!=O||i!=">"&&i!="/"||!pp.isActiveAt(t.state,e,-1))return!1;let r=n(),{state:a}=r,s=a.changeByRange(o=>{var l,c,u;let{head:d}=o,h=a.doc.sliceString(d-1,d)==i,Q=$e(a).resolveInner(d,-1),$;if(h&&i==">"&&Q.name=="EndTag"){let P=Q.parent;if(((c=(l=P.parent)===null||l===void 0?void 0:l.lastChild)===null||c===void 0?void 0:c.name)!="CloseTag"&&($=V0(a.doc,P.parent,d))){let p=d+(a.doc.sliceString(d,d+1)===">"?1:0),g=``;return{range:o,changes:{from:d,to:p,insert:g}}}}else if(h&&i=="/"&&Q.name=="StartCloseTag"){let P=Q.parent;if(Q.from==d-2&&((u=P.lastChild)===null||u===void 0?void 0:u.name)!="CloseTag"&&($=V0(a.doc,P,d))){let p=d+(a.doc.sliceString(d,d+1)===">"?1:0),g=`${$}>`;return{range:v.cursor(d+g.length,-1),changes:{from:d,to:p,insert:g}}}}return{range:o}});return s.changes.empty?!1:(t.dispatch([r,a.update(s,{userEvent:"input.complete",scrollIntoView:!0})]),!0)}),ha=63,W0=64,K7=1,J7=2,j0=3,eG=4,C0=5,tG=6,OG=7,G0=65,iG=66,nG=8,rG=9,aG=10,sG=11,oG=12,E0=13,lG=19,cG=20,uG=29,dG=33,fG=34,hG=47,QG=0,mp=1,gp=2,go=3,Pp=4;let ar=class{constructor(e,O,i){this.parent=e,this.depth=O,this.type=i,this.hash=(e?e.hash+e.hash<<8:0)+O+(O<<4)+i}};ar.top=new ar(null,-1,QG);function Po(t,e){for(let O=0,i=e-t.pos-1;;i--,O++){let n=t.peek(i);if(bi(n)||n==-1)return O}}function Sp(t){return t==32||t==9}function bi(t){return t==10||t==13}function A0(t){return Sp(t)||bi(t)}function sr(t){return t<0||A0(t)}const $G=new Jn({start:ar.top,reduce(t,e){return t.type==go&&(e==cG||e==fG)?t.parent:t},shift(t,e,O,i){if(e==j0)return new ar(t,Po(i,i.pos),mp);if(e==G0||e==C0)return new ar(t,Po(i,i.pos),gp);if(e==ha)return t.parent;if(e==lG||e==dG)return new ar(t,0,go);if(e==E0&&t.type==Pp)return t.parent;if(e==hG){let n=/[1-9]/.exec(i.read(i.pos,O.pos));if(n)return new ar(t,t.depth+ +n[0],Pp)}return t},hash(t){return t.hash}});function Qa(t,e,O=0){return t.peek(O)==e&&t.peek(O+1)==e&&t.peek(O+2)==e&&sr(t.peek(O+3))}const pG=new Oe((t,e)=>{if(t.next==-1&&e.canShift(W0))return t.acceptToken(W0);let O=t.peek(-1);if((bi(O)||O<0)&&e.context.type!=go){if(Qa(t,45))if(e.canShift(ha))t.acceptToken(ha);else return t.acceptToken(K7,3);if(Qa(t,46))if(e.canShift(ha))t.acceptToken(ha);else return t.acceptToken(J7,3);let i=0;for(;t.next==32;)i++,t.advance();(i{if(e.context.type==go){t.next==63&&(t.advance(),sr(t.next)&&t.acceptToken(OG));return}if(t.next==45)t.advance(),sr(t.next)&&t.acceptToken(e.context.type==mp&&e.context.depth==Po(t,t.pos-1)?eG:j0);else if(t.next==63)t.advance(),sr(t.next)&&t.acceptToken(e.context.type==gp&&e.context.depth==Po(t,t.pos-1)?tG:C0);else{let O=t.pos;for(;;)if(Sp(t.next)){if(t.pos==O)return;t.advance()}else if(t.next==33)N0(t);else if(t.next==38)Xp(t);else if(t.next==42){Xp(t);break}else if(t.next==39||t.next==34){if(xp(t,!0))break;return}else if(t.next==91||t.next==123){if(!PG(t))return;break}else{I0(t,!0,!1,0);break}for(;Sp(t.next);)t.advance();if(t.next==58){if(t.pos==O&&e.canShift(uG))return;let i=t.peek(1);sr(i)&&t.acceptTokenTo(e.context.type==gp&&e.context.depth==Po(t,O)?iG:G0,O)}}},{contextual:!0});function gG(t){return t>32&&t<127&&t!=34&&t!=37&&t!=44&&t!=60&&t!=62&&t!=92&&t!=94&&t!=96&&t!=123&&t!=124&&t!=125}function L0(t){return t>=48&&t<=57||t>=97&&t<=102||t>=65&&t<=70}function M0(t,e){return t.next==37?(t.advance(),L0(t.next)&&t.advance(),L0(t.next)&&t.advance(),!0):gG(t.next)||e&&t.next==44?(t.advance(),!0):!1}function N0(t){if(t.advance(),t.next==60){for(t.advance();;)if(!M0(t,!0)){t.next==62&&t.advance();break}}else for(;M0(t,!1););}function Xp(t){for(t.advance();!sr(t.next)&&wu(t.next)!="f";)t.advance()}function xp(t,e){let O=t.next,i=!1,n=t.pos;for(t.advance();;){let r=t.next;if(r<0)break;if(t.advance(),r==O)if(r==39)if(t.next==39)t.advance();else break;else break;else if(r==92&&O==34)t.next>=0&&t.advance();else if(bi(r)){if(e)return!1;i=!0}else if(e&&t.pos>=n+1024)return!1}return!i}function PG(t){for(let e=[],O=t.pos+1024;;)if(t.next==91||t.next==123)e.push(t.next),t.advance();else if(t.next==39||t.next==34){if(!xp(t,!0))return!1}else if(t.next==93||t.next==125){if(e[e.length-1]!=t.next-2)return!1;if(e.pop(),t.advance(),!e.length)return!0}else{if(t.next<0||t.pos>O||bi(t.next))return!1;t.advance()}}const SG="iiisiiissisfissssssssssssisssiiissssssssssssssssssssssssssfsfssissssssssssssssssssssssssssfif";function wu(t){return t<33?"u":t>125?"s":SG[t-33]}function yp(t,e){let O=wu(t);return O!="u"&&!(e&&O=="f")}function I0(t,e,O,i){if(wu(t.next)=="s"||(t.next==63||t.next==58||t.next==45)&&yp(t.peek(1),O))t.advance();else return!1;let n=t.pos;for(;;){let r=t.next,a=0,s=i+1;for(;A0(r);){if(bi(r)){if(e)return!1;s=0}else s++;r=t.peek(++a)}if(!(r>=0&&(r==58?yp(t.peek(a+1),O):r==35?t.peek(a-1)!=32:yp(r,O)))||!O&&s<=i||s==0&&!O&&(Qa(t,45,a)||Qa(t,46,a)))break;if(e&&wu(r)=="f")return!1;for(let l=a;l>=0;l--)t.advance();if(e&&t.pos>n+1024)return!1}return!0}const XG=new Oe((t,e)=>{if(t.next==33)N0(t),t.acceptToken(oG);else if(t.next==38||t.next==42){let O=t.next==38?aG:sG;Xp(t),t.acceptToken(O)}else t.next==39||t.next==34?(xp(t,!1),t.acceptToken(rG)):I0(t,!1,e.context.type==go,e.context.depth)&&t.acceptToken(nG)}),xG=new Oe((t,e)=>{let O=e.context.type==Pp?e.context.depth:-1,i=t.pos;e:for(;;){let n=0,r=t.next;for(;r==32;)r=t.peek(++n);if(!n&&(Qa(t,45,n)||Qa(t,46,n))||!bi(r)&&(O<0&&(O=Math.max(e.context.depth+1,n)),nYAN>Y",stateData:";S~O!fOS!gOS^OS~OP_OQbORSOTUOWROXROYYOZZO[XOcPOqQO!PVO!V[O!cTO~O`cO~P]OVkOWROXROYeOZfO[dOcPOmhOqQO~OboO~P!bOVtOWROXROYeOZfO[dOcPOmrOqQO~OpwO~P#WORSOTUOWROXROYYOZZO[XOcPOqQO!PVO!cTO~OSvP!avP!bvP~P#|OWROXROYeOZfO[dOcPOqQO~OmzO~P%OOm!OOUzP!azP!bzP!dzP~P#|O^!SO!b!QO!f!TO!g!RO~ORSOTUOWROXROcPOqQO!PVO!cTO~OY!UOP!QXQ!QX!V!QX!`!QXS!QX!a!QX!b!QXU!QXm!QX!d!QX~P&aO[!WOP!SXQ!SX!V!SX!`!SXS!SX!a!SX!b!SXU!SXm!SX!d!SX~P&aO^!ZO!W![O!b!YO!f!]O!g!YO~OP!_O!V[OQaX!`aX~OPaXQaX!VaX!`aX~P#|OP!bOQ!cO!V[O~OP_O!V[O~P#|OWROXROY!fOcPOqQObfXmfXofXpfX~OWROXRO[!hOcPOqQObhXmhXohXphX~ObeXmlXoeX~ObkXokX~P%OOm!kO~Om!lObnPonP~P%OOb!pOo!oO~Ob!pO~P!bOm!sOosXpsX~OosXpsX~P%OOm!uOotPptP~P%OOo!xOp!yO~Op!yO~P#WOS!|O!a#OO!b#OO~OUyX!ayX!byX!dyX~P#|Om#QO~OU#SO!a#UO!b#UO!d#RO~Om#WOUzX!azX!bzX!dzX~O]#XO~O!b#XO!g#YO~O^#ZO!b#XO!g#YO~OP!RXQ!RX!V!RX!`!RXS!RX!a!RX!b!RXU!RXm!RX!d!RX~P&aOP!TXQ!TX!V!TX!`!TXS!TX!a!TX!b!TXU!TXm!TX!d!TX~P&aO!b#^O!g#^O~O^#_O!b#^O!f#`O!g#^O~O^#_O!W#aO!b#^O!g#^O~OPaaQaa!Vaa!`aa~P#|OP#cO!V[OQ!XX!`!XX~OP!XXQ!XX!V!XX!`!XX~P#|OP_O!V[OQ!_X!`!_X~P#|OWROXROcPOqQObgXmgXogXpgX~OWROXROcPOqQObiXmiXoiXpiX~Obkaoka~P%OObnXonX~P%OOm#kO~Ob#lOo!oO~Oosapsa~P%OOotXptX~P%OOm#pO~Oo!xOp#qO~OSwP!awP!bwP~P#|OS!|O!a#vO!b#vO~OUya!aya!bya!dya~P#|Om#xO~P%OOm#{OU}P!a}P!b}P!d}P~P#|OU#SO!a$OO!b$OO!d#RO~O]$QO~O!b$QO!g$RO~O!b$SO!g$SO~O^$TO!b$SO!g$SO~O^$TO!b$SO!f$UO!g$SO~OP!XaQ!Xa!V!Xa!`!Xa~P#|Obnaona~P%OOotapta~P%OOo!xO~OU|X!a|X!b|X!d|X~P#|Om$ZO~Om$]OU}X!a}X!b}X!d}X~O]$^O~O!b$_O!g$_O~O^$`O!b$_O!g$_O~OU|a!a|a!b|a!d|a~P#|O!b$cO!g$cO~O",goto:",]!mPPPPPPPPPPPPPPPPP!nPP!v#v#|$`#|$c$f$j$nP%VPPP!v%Y%^%a%{&O%a&R&U&X&_&b%aP&e&{&e'O'RPP']'a'g'm's'y(XPPPPPPPP(_)e*X+c,VUaObcR#e!c!{ROPQSTUXY_bcdehknrtvz!O!U!W!_!b!c!f!h!k!l!s!u!|#Q#R#S#W#c#k#p#x#{$Z$]QmPR!qnqfPQThknrtv!k!l!s!u#R#k#pR!gdR!ieTlPnTjPnSiPnSqQvQ{TQ!mkQ!trQ!vtR#y#RR!nkTsQvR!wt!RWOSUXY_bcz!O!U!W!_!b!c!|#Q#S#W#c#x#{$Z$]RySR#t!|R|TR|UQ!PUR#|#SR#z#RR#z#SyZOSU_bcz!O!_!b!c!|#Q#S#W#c#x#{$Z$]R!VXR!XYa]O^abc!a!c!eT!da!eQnPR!rnQvQR!{vQ!}yR#u!}Q#T|R#}#TW^Obc!cS!^^!aT!aa!eQ!eaR#f!eW`Obc!cQxSS}U#SQ!`_Q#PzQ#V!OQ#b!_Q#d!bQ#s!|Q#w#QQ$P#WQ$V#cQ$Y#xQ$[#{Q$a$ZR$b$]xZOSU_bcz!O!_!b!c!|#Q#S#W#c#x#{$Z$]Q!VXQ!XYQ#[!UR#]!W!QWOSUXY_bcz!O!U!W!_!b!c!|#Q#S#W#c#x#{$Z$]pfPQThknrtv!k!l!s!u#R#k#pQ!gdQ!ieQ#g!fR#h!hSgPn^pQTkrtv#RQ!jhQ#i!kQ#j!lQ#n!sQ#o!uQ$W#kR$X#pQuQR!zv",nodeNames:"⚠ DirectiveEnd DocEnd - - ? ? ? Literal QuotedLiteral Anchor Alias Tag BlockLiteralContent Comment Stream BOM Document ] [ FlowSequence Item Tagged Anchored Anchored Tagged FlowMapping Pair Key : Pair , } { FlowMapping Pair Pair BlockSequence Item Item BlockMapping Pair Pair Key Pair Pair BlockLiteral BlockLiteralHeader Tagged Anchored Anchored Tagged Directive DirectiveName DirectiveContent Document",maxTerm:74,context:$G,nodeProps:[["isolate",-3,8,9,14,""],["openedBy",18,"[",32,"{"],["closedBy",19,"]",33,"}"]],propSources:[yG],skippedNodes:[0],repeatNodeCount:6,tokenData:"-Y~RnOX#PXY$QYZ$]Z]#P]^$]^p#Ppq$Qqs#Pst$btu#Puv$yv|#P|}&e}![#P![!]'O!]!`#P!`!a'i!a!}#P!}#O*g#O#P#P#P#Q+Q#Q#o#P#o#p+k#p#q'i#q#r,U#r;'S#P;'S;=`#z<%l?HT#P?HT?HU,o?HUO#PQ#UU!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PQ#kTOY#PZs#Pt;'S#P;'S;=`#z<%lO#PQ#}P;=`<%l#P~$VQ!f~XY$Qpq$Q~$bO!g~~$gS^~OY$bZ;'S$b;'S;=`$s<%lO$b~$vP;=`<%l$bR%OX!WQOX%kXY#PZ]%k]^#P^p%kpq#hq;'S%k;'S;=`&_<%lO%kR%rX!WQ!VPOX%kXY#PZ]%k]^#P^p%kpq#hq;'S%k;'S;=`&_<%lO%kR&bP;=`<%l%kR&lUoP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR'VUmP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR'p[!PP!WQOY#PZp#Ppq#hq{#P{|(f|}#P}!O(f!O!R#P!R![)p![;'S#P;'S;=`#z<%lO#PR(mW!PP!WQOY#PZp#Ppq#hq!R#P!R![)V![;'S#P;'S;=`#z<%lO#PR)^U!PP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR)wY!PP!WQOY#PZp#Ppq#hq{#P{|)V|}#P}!O)V!O;'S#P;'S;=`#z<%lO#PR*nUcP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR+XUbP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR+rUqP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR,]UpP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR,vU`P!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#P",tokenizers:[pG,mG,XG,xG,0,1],topRules:{Stream:[0,15]},tokenPrec:0}),TG=He.define({name:"yaml",parser:wG.configure({props:[Je.add({Stream:t=>{for(let e=t.node.resolve(t.pos,-1);e&&e.to>=t.pos;e=e.parent){if(e.name=="BlockLiteralContent"&&e.fromt.pos)return null}}return null},FlowMapping:FO({closing:"}"}),FlowSequence:FO({closing:"]"})}),et.add({"FlowMapping FlowSequence":dO,"Item Pair BlockLiteral":(t,e)=>({from:e.doc.lineAt(t.from).to,to:t.to})})]}),languageData:{commentTokens:{line:"#"},indentOnInput:/^\s*[\]\}]$/}});function kG(){return new Ke(TG)}function wp(t,e,O,i,n,r){this.indented=t,this.column=e,this.type=O,this.info=i,this.align=n,this.prev=r}function Tu(t,e,O,i){var n=t.indented;return t.context&&t.context.type=="statement"&&O!="statement"&&(n=t.context.indented),t.context=new wp(n,e,O,i,null,t.context)}function So(t){var e=t.context.type;return(e==")"||e=="]"||e=="}")&&(t.indented=t.context.indented),t.context=t.context.prev}function D0(t,e,O){if(e.prevToken=="variable"||e.prevToken=="type"||/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(t.string.slice(0,O))||e.typeAtEndOfLine&&t.column()==t.indentation())return!0}function Tp(t){for(;;){if(!t||t.type=="top")return!0;if(t.type=="}"&&t.prev.info!="namespace")return!1;t=t.prev}}function Jt(t){var e=t.statementIndentUnit,O=t.dontAlignCalls,i=t.keywords||{},n=t.types||{},r=t.builtin||{},a=t.blockKeywords||{},s=t.defKeywords||{},o=t.atoms||{},l=t.hooks||{},c=t.multiLineStrings,u=t.indentStatements!==!1,d=t.indentSwitch!==!1,h=t.namespaceSeparator,Q=t.isPunctuationChar||/[\[\]{}\(\),;\:\.]/,$=t.numberStart||/[\d\.]/,P=t.number||/^(?:0x[a-f\d]+|0b[01]+|(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?)(u|ll?|l|f)?/i,p=t.isOperatorChar||/[+\-*&%=<>!?|\/]/,g=t.isIdentifierChar||/[\w\$_\xa1-\uffff]/,S=t.isReservedIdentifier||!1,X,x;function T(b,R){var Y=b.next();if(l[Y]){var z=l[Y](b,R);if(z!==!1)return z}if(Y=='"'||Y=="'")return R.tokenize=w(Y),R.tokenize(b,R);if($.test(Y)){if(b.backUp(1),b.match(P))return"number";b.next()}if(Q.test(Y))return X=Y,null;if(Y=="/"){if(b.eat("*"))return R.tokenize=_,_(b,R);if(b.eat("/"))return b.skipToEnd(),"comment"}if(p.test(Y)){for(;!b.match(/^\/[\/*]/,!1)&&b.eat(p););return"operator"}if(b.eatWhile(g),h)for(;b.match(h);)b.eatWhile(g);var G=b.current();return Zi(i,G)?(Zi(a,G)&&(X="newstatement"),Zi(s,G)&&(x=!0),"keyword"):Zi(n,G)?"type":Zi(r,G)||S&&S(G)?(Zi(a,G)&&(X="newstatement"),"builtin"):Zi(o,G)?"atom":"variable"}function w(b){return function(R,Y){for(var z=!1,G,ee=!1;(G=R.next())!=null;){if(G==b&&!z){ee=!0;break}z=!z&&G=="\\"}return(ee||!(z||c))&&(Y.tokenize=null),"string"}}function _(b,R){for(var Y=!1,z;z=b.next();){if(z=="/"&&Y){R.tokenize=null;break}Y=z=="*"}return"comment"}function A(b,R){t.typeFirstDefinitions&&b.eol()&&Tp(R.context)&&(R.typeAtEndOfLine=D0(b,R,b.pos))}return{name:t.name,startState:function(b){return{tokenize:null,context:new wp(-b,0,"top",null,!1),indented:0,startOfLine:!0,prevToken:null}},token:function(b,R){var Y=R.context;if(b.sol()&&(Y.align==null&&(Y.align=!1),R.indented=b.indentation(),R.startOfLine=!0),b.eatSpace())return A(b,R),null;X=x=null;var z=(R.tokenize||T)(b,R);if(z=="comment"||z=="meta")return z;if(Y.align==null&&(Y.align=!0),X==";"||X==":"||X==","&&b.match(/^\s*(?:\/\/.*)?$/,!1))for(;R.context.type=="statement";)So(R);else if(X=="{")Tu(R,b.column(),"}");else if(X=="[")Tu(R,b.column(),"]");else if(X=="(")Tu(R,b.column(),")");else if(X=="}"){for(;Y.type=="statement";)Y=So(R);for(Y.type=="}"&&(Y=So(R));Y.type=="statement";)Y=So(R)}else X==Y.type?So(R):u&&((Y.type=="}"||Y.type=="top")&&X!=";"||Y.type=="statement"&&X=="newstatement")&&Tu(R,b.column(),"statement",b.current());if(z=="variable"&&(R.prevToken=="def"||t.typeFirstDefinitions&&D0(b,R,b.start)&&Tp(R.context)&&b.match(/^\s*\(/,!1))&&(z="def"),l.token){var G=l.token(b,R,z);G!==void 0&&(z=G)}return z=="def"&&t.styleDefs===!1&&(z="variable"),R.startOfLine=!1,R.prevToken=x?"def":z||X,A(b,R),z},indent:function(b,R,Y){if(b.tokenize!=T&&b.tokenize!=null||b.typeAtEndOfLine&&Tp(b.context))return null;var z=b.context,G=R&&R.charAt(0),ee=G==z.type;if(z.type=="statement"&&G=="}"&&(z=z.prev),t.dontIndentStatements)for(;z.type=="statement"&&t.dontIndentStatements.test(z.info);)z=z.prev;if(l.indent){var Pe=l.indent(b,z,R,Y.unit);if(typeof Pe=="number")return Pe}var ge=z.prev&&z.prev.info=="switch";if(t.allmanIndentation&&/[{(]/.test(G)){for(;z.type!="top"&&z.type!="}";)z=z.prev;return z.indented}return z.type=="statement"?z.indented+(G=="{"?0:e||Y.unit):z.align&&(!O||z.type!=")")?z.column+(ee?0:1):z.type==")"&&!ee?z.indented+(e||Y.unit):z.indented+(ee?0:Y.unit)+(!ee&&ge&&!/^(?:case|default)\b/.test(R)?Y.unit:0)},languageData:{indentOnInput:d?/^\s*(?:case .*?:|default:|\{\}?|\})$/:/^\s*[{}]$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}},autocomplete:Object.keys(i).concat(Object.keys(n)).concat(Object.keys(r)).concat(Object.keys(o)),...t.languageData}}}function B(t){for(var e={},O=t.split(" "),i=0;i!?|\/#:@]/,hooks:{"@":function(t){return t.eatWhile(/[\w\$_]/),"meta"},'"':function(t,e){return t.match('""')?(e.tokenize=Ok,e.tokenize(t,e)):!1},"'":function(t){return t.match(/^(\\[^'\s]+|[^\\'])'/)?"character":(t.eatWhile(/[\w\$_\xa1-\uffff]/),"atom")},"=":function(t,e){var O=e.context;return O.type=="}"&&O.align&&t.eat(">")?(e.context=new wp(O.indented,O.column,O.type,O.info,null,O.prev),"operator"):!1},"/":function(t,e){return t.eat("*")?(e.tokenize=wo(1),e.tokenize(t,e)):!1}},languageData:{closeBrackets:{brackets:["(","[","{","'",'"','"""']}}});function YG(t){return function(e,O){for(var i=!1,n,r=!1;!e.eol();){if(!t&&!i&&e.match('"')){r=!0;break}if(t&&e.match('"""')){r=!0;break}n=e.next(),!i&&n=="$"&&e.match("{")&&e.skipTo("}"),i=!i&&n=="\\"&&!t}return(r||!t)&&(O.tokenize=null),"string"}}const _G=Jt({name:"kotlin",keywords:B("package as typealias class interface this super val operator var fun for is in This throw return annotation break continue object if else while do try when !in !is as? file import where by get set abstract enum open inner override private public internal protected catch finally out final vararg reified dynamic companion constructor init sealed field property receiver param sparam lateinit data inline noinline tailrec external annotation crossinline const operator infix suspend actual expect setparam"),types:B("Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable Compiler Double Exception Float Integer Long Math Number Object Package Pair Process Runtime Runnable SecurityManager Short StackTraceElement StrictMath String StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void Annotation Any BooleanArray ByteArray Char CharArray DeprecationLevel DoubleArray Enum FloatArray Function Int IntArray Lazy LazyThreadSafetyMode LongArray Nothing ShortArray Unit"),indentStatements:!1,multiLineStrings:!0,number:/^(?:0x[a-f\d_]+|0b[01_]+|(?:[\d_]+(\.\d+)?|\.\d+)(?:e[-+]?[\d_]+)?)(ul?|l|f)?/i,blockKeywords:B("catch class do else finally for if where try while enum"),defKeywords:B("class val var object interface fun"),atoms:B("true false null this"),hooks:{"@":function(t){return t.eatWhile(/[\w\$_]/),"meta"},"*":function(t,e){return e.prevToken=="."?"variable":"operator"},'"':function(t,e){return e.tokenize=YG(t.match('""')),e.tokenize(t,e)},"/":function(t,e){return t.eat("*")?(e.tokenize=wo(1),e.tokenize(t,e)):!1},indent:function(t,e,O,i){var n=O&&O.charAt(0);if((t.prevToken=="}"||t.prevToken==")")&&O=="")return t.indented;if(t.prevToken=="operator"&&O!="}"&&t.context.type!="}"||t.prevToken=="variable"&&n=="."||(t.prevToken=="}"||t.prevToken==")")&&n==".")return i*2+e.indented;if(e.align&&e.type=="}")return e.indented+(t.context.type==(O||"").charAt(0)?0:i)}},languageData:{closeBrackets:{brackets:["(","[","{","'",'"','"""']}}});Jt({name:"shader",keywords:B("sampler1D sampler2D sampler3D samplerCube sampler1DShadow sampler2DShadow const attribute uniform varying break continue discard return for while do if else struct in out inout"),types:B("float int bool void vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 mat2 mat3 mat4"),blockKeywords:B("for while do if else struct"),builtin:B("radians degrees sin cos tan asin acos atan pow exp log exp2 sqrt inversesqrt abs sign floor ceil fract mod min max clamp mix step smoothstep length distance dot cross normalize ftransform faceforward reflect refract matrixCompMult lessThan lessThanEqual greaterThan greaterThanEqual equal notEqual any all not texture1D texture1DProj texture1DLod texture1DProjLod texture2D texture2DProj texture2DLod texture2DProjLod texture3D texture3DProj texture3DLod texture3DProjLod textureCube textureCubeLod shadow1D shadow2D shadow1DProj shadow2DProj shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod dFdx dFdy fwidth noise1 noise2 noise3 noise4"),atoms:B("true false gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_FogCoord gl_PointCoord gl_Position gl_PointSize gl_ClipVertex gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor gl_TexCoord gl_FogFragCoord gl_FragCoord gl_FrontFacing gl_FragData gl_FragDepth gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse gl_TextureMatrixTranspose gl_ModelViewMatrixInverseTranspose gl_ProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixInverseTranspose gl_TextureMatrixInverseTranspose gl_NormalScale gl_DepthRange gl_ClipPlane gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel gl_FrontLightModelProduct gl_BackLightModelProduct gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ gl_FogParameters gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits gl_MaxDrawBuffers"),indentSwitch:!1,hooks:{"#":gn}}),Jt({name:"nesc",keywords:B(Xo+" as atomic async call command component components configuration event generic implementation includes interface module new norace nx_struct nx_union post provides signal task uses abstract extends"),types:xo,blockKeywords:B(yo),atoms:B("null true false"),hooks:{"#":gn}});const zG=Jt({name:"objectivec",keywords:B(Xo+" "+F0),types:K0,builtin:B(H0),blockKeywords:B(yo+" @synthesize @try @catch @finally @autoreleasepool @synchronized"),defKeywords:B(ku+" @interface @implementation @protocol @class"),dontIndentStatements:/^@.*$/,typeFirstDefinitions:!0,atoms:B("YES NO NULL Nil nil true false nullptr"),isReservedIdentifier:bu,hooks:{"#":gn,"*":vu}});Jt({name:"objectivecpp",keywords:B(Xo+" "+F0+" "+B0),types:K0,builtin:B(H0),blockKeywords:B(yo+" @synthesize @try @catch @finally @autoreleasepool @synchronized class try catch"),defKeywords:B(ku+" @interface @implementation @protocol @class class namespace"),dontIndentStatements:/^@.*$|^template$/,typeFirstDefinitions:!0,atoms:B("YES NO NULL Nil nil true false nullptr"),isReservedIdentifier:bu,hooks:{"#":gn,"*":vu,u:Pn,U:Pn,L:Pn,R:Pn,0:Ae,1:Ae,2:Ae,3:Ae,4:Ae,5:Ae,6:Ae,7:Ae,8:Ae,9:Ae,token:function(t,e,O){if(O=="variable"&&t.peek()=="("&&(e.prevToken==";"||e.prevToken==null||e.prevToken=="}")&&J0(t.current()))return"def"}},namespaceSeparator:"::"}),Jt({name:"squirrel",keywords:B("base break clone continue const default delete enum extends function in class foreach local resume return this throw typeof yield constructor instanceof static"),types:xo,blockKeywords:B("case catch class else for foreach if switch try while"),defKeywords:B("function local class"),typeFirstDefinitions:!0,atoms:B("true false null"),hooks:{"#":gn}});var Zu=null;function ik(t){return function(e,O){for(var i=!1,n,r=!1;!e.eol();){if(!i&&e.match('"')&&(t=="single"||e.match('""'))){r=!0;break}if(!i&&e.match("``")){Zu=ik(t),r=!0;break}n=e.next(),i=t=="single"&&!i&&n=="\\"}return r&&(O.tokenize=null),"string"}}Jt({name:"ceylon",keywords:B("abstracts alias assembly assert assign break case catch class continue dynamic else exists extends finally for function given if import in interface is let module new nonempty object of out outer package return satisfies super switch then this throw try value void while"),types:function(t){var e=t.charAt(0);return e===e.toUpperCase()&&e!==e.toLowerCase()},blockKeywords:B("case catch class dynamic else finally for function if interface module new object switch try while"),defKeywords:B("class dynamic function interface module object package value"),builtin:B("abstract actual aliased annotation by default deprecated doc final formal late license native optional sealed see serializable shared suppressWarnings tagged throws variable"),isPunctuationChar:/[\[\]{}\(\),;\:\.`]/,isOperatorChar:/[+\-*&%=<>!?|^~:\/]/,numberStart:/[\d#$]/,number:/^(?:#[\da-fA-F_]+|\$[01_]+|[\d_]+[kMGTPmunpf]?|[\d_]+\.[\d_]+(?:[eE][-+]?\d+|[kMGTPmunpf]|)|)/i,multiLineStrings:!0,typeFirstDefinitions:!0,atoms:B("true false null larger smaller equal empty finished"),indentSwitch:!1,styleDefs:!1,hooks:{"@":function(t){return t.eatWhile(/[\w\$_]/),"meta"},'"':function(t,e){return e.tokenize=ik(t.match('""')?"triple":"single"),e.tokenize(t,e)},"`":function(t,e){return!Zu||!t.match("`")?!1:(e.tokenize=Zu,Zu=null,e.tokenize(t,e))},"'":function(t){return t.match(/^(\\[^'\s]+|[^\\'])'/)?"string.special":(t.eatWhile(/[\w\$_\xa1-\uffff]/),"atom")},token:function(t,e,O){if((O=="variable"||O=="type")&&e.prevToken==".")return"variableName.special"}},languageData:{closeBrackets:{brackets:["(","[","{","'",'"','"""']}}});function UG(t){(t.interpolationStack||(t.interpolationStack=[])).push(t.tokenize)}function nk(t){return(t.interpolationStack||(t.interpolationStack=[])).pop()}function qG(t){return t.interpolationStack?t.interpolationStack.length:0}function kp(t,e,O,i){var n=!1;if(e.eat(t))if(e.eat(t))n=!0;else return"string";function r(a,s){for(var o=!1;!a.eol();){if(!i&&!o&&a.peek()=="$")return UG(s),s.tokenize=VG,"string";var l=a.next();if(l==t&&!o&&(!n||a.match(t+t))){s.tokenize=null;break}o=!i&&!o&&l=="\\"}return"string"}return O.tokenize=r,r(e,O)}function VG(t,e){return t.eat("$"),t.eat("{")?e.tokenize=null:e.tokenize=WG,null}function WG(t,e){return t.eatWhile(/[\w_]/),e.tokenize=nk(e),"variable"}const jG=Jt({name:"dart",keywords:B("this super static final const abstract class extends external factory implements mixin get native set typedef with enum throw rethrow assert break case continue default in return new deferred async await covariant try catch finally do else for if switch while import library export part of show hide is as extension on yield late required sealed base interface when inline"),blockKeywords:B("try catch finally do else for if switch while"),builtin:B("void bool num int double dynamic var String Null Never"),atoms:B("true false null"),number:/^(?:0x[a-f\d_]+|(?:[\d_]+\.?[\d_]*|\.[\d_]+)(?:e[-+]?[\d_]+)?)/i,hooks:{"@":function(t){return t.eatWhile(/[\w\$_\.]/),"meta"},"'":function(t,e){return kp("'",t,e,!1)},'"':function(t,e){return kp('"',t,e,!1)},r:function(t,e){var O=t.peek();return O=="'"||O=='"'?kp(t.next(),t,e,!0):!1},"}":function(t,e){return qG(e)>0?(e.tokenize=nk(e),null):!1},"/":function(t,e){return t.eat("*")?(e.tokenize=wo(1),e.tokenize(t,e)):!1},token:function(t,e,O){if(O=="variable"){var i=RegExp("^[_$]*[A-Z][a-zA-Z0-9_$]*$","g");if(i.test(t.current()))return"type"}}}});function CG(t){rk(t,"start");var e={},O=t.languageData||{},i=!1;for(var n in t)if(n!=O&&t.hasOwnProperty(n))for(var r=e[n]=[],a=t[n],s=0;s2&&a.token&&typeof a.token!="string"){O.pending=[];for(var l=2;l-1)return null;var n=O.indent.length-1,r=t[O.state];e:for(;;){for(var a=0;a/,f6=$a([u6,d6],{suffix:""}),h6=/^((0x[\da-f]+)|((\d+\.\d+|\d\.|\.\d+|\d+)(e[\+\-]?\d+)?))[ld]?([kmgtp]b)?/i,Q6=/^[A-Za-z\_][A-Za-z\-\_\d]*\b/,$6=/[A-Z]:|%|\?/i,p6=$a([/Add-(Computer|Content|History|Member|PSSnapin|Type)/,/Checkpoint-Computer/,/Clear-(Content|EventLog|History|Host|Item(Property)?|Variable)/,/Compare-Object/,/Complete-Transaction/,/Connect-PSSession/,/ConvertFrom-(Csv|Json|SecureString|StringData)/,/Convert-Path/,/ConvertTo-(Csv|Html|Json|SecureString|Xml)/,/Copy-Item(Property)?/,/Debug-Process/,/Disable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/,/Disconnect-PSSession/,/Enable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/,/(Enter|Exit)-PSSession/,/Export-(Alias|Clixml|Console|Counter|Csv|FormatData|ModuleMember|PSSession)/,/ForEach-Object/,/Format-(Custom|List|Table|Wide)/,new RegExp("Get-(Acl|Alias|AuthenticodeSignature|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Counter|Credential|Culture|Date|Event|EventLog|EventSubscriber|ExecutionPolicy|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job|Location|Member|Module|PfxCertificate|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|Verb|WinEvent|WmiObject)"),/Group-Object/,/Import-(Alias|Clixml|Counter|Csv|LocalizedData|Module|PSSession)/,/ImportSystemModules/,/Invoke-(Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)/,/Join-Path/,/Limit-EventLog/,/Measure-(Command|Object)/,/Move-Item(Property)?/,new RegExp("New-(Alias|Event|EventLog|Item(Property)?|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy|WinEvent)"),/Out-(Default|File|GridView|Host|Null|Printer|String)/,/Pause/,/(Pop|Push)-Location/,/Read-Host/,/Receive-(Job|PSSession)/,/Register-(EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)/,/Remove-(Computer|Event|EventLog|Item(Property)?|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)/,/Rename-(Computer|Item(Property)?)/,/Reset-ComputerMachinePassword/,/Resolve-Path/,/Restart-(Computer|Service)/,/Restore-Computer/,/Resume-(Job|Service)/,/Save-Help/,/Select-(Object|String|Xml)/,/Send-MailMessage/,new RegExp("Set-(Acl|Alias|AuthenticodeSignature|Content|Date|ExecutionPolicy|Item(Property)?|Location|PSBreakpoint|PSDebug|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)"),/Show-(Command|ControlPanelItem|EventLog)/,/Sort-Object/,/Split-Path/,/Start-(Job|Process|Service|Sleep|Transaction|Transcript)/,/Stop-(Computer|Job|Process|Service|Transcript)/,/Suspend-(Job|Service)/,/TabExpansion2/,/Tee-Object/,/Test-(ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)/,/Trace-Command/,/Unblock-File/,/Undo-Transaction/,/Unregister-(Event|PSSessionConfiguration)/,/Update-(FormatData|Help|List|TypeData)/,/Use-Transaction/,/Wait-(Event|Job|Process)/,/Where-Object/,/Write-(Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning)/,/cd|help|mkdir|more|oss|prompt/,/ac|asnp|cat|cd|chdir|clc|clear|clhy|cli|clp|cls|clv|cnsn|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|dnsn|ebp/,/echo|epal|epcsv|epsn|erase|etsn|exsn|fc|fl|foreach|ft|fw|gal|gbp|gc|gci|gcm|gcs|gdr|ghy|gi|gjb|gl|gm|gmo|gp|gps/,/group|gsn|gsnp|gsv|gu|gv|gwmi|h|history|icm|iex|ihy|ii|ipal|ipcsv|ipmo|ipsn|irm|ise|iwmi|iwr|kill|lp|ls|man|md/,/measure|mi|mount|move|mp|mv|nal|ndr|ni|nmo|npssc|nsn|nv|ogv|oh|popd|ps|pushd|pwd|r|rbp|rcjb|rcsn|rd|rdr|ren|ri/,/rjb|rm|rmdir|rmo|rni|rnp|rp|rsn|rsnp|rujb|rv|rvpa|rwmi|sajb|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls/,/sort|sp|spjb|spps|spsv|start|sujb|sv|swmi|tee|trcm|type|where|wjb|write/],{prefix:"",suffix:""}),m6=$a([/[$?^_]|Args|ConfirmPreference|ConsoleFileName|DebugPreference|Error|ErrorActionPreference|ErrorView|ExecutionContext/,/FormatEnumerationLimit|Home|Host|Input|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount/,/MaximumHistoryCount|MaximumVariableCount|MyInvocation|NestedPromptLevel|OutputEncoding|Pid|Profile|ProgressPreference/,/PSBoundParameters|PSCommandPath|PSCulture|PSDefaultParameterValues|PSEmailServer|PSHome|PSScriptRoot|PSSessionApplicationName/,/PSSessionConfigurationName|PSSessionOption|PSUICulture|PSVersionTable|Pwd|ShellId|StackTrace|VerbosePreference/,/WarningPreference|WhatIfPreference/,/Event|EventArgs|EventSubscriber|Sender/,/Matches|Ofs|ForEach|LastExitCode|PSCmdlet|PSItem|PSSenderInfo|This/,/true|false|null/],{prefix:"\\$",suffix:""}),g6=$a([$6,p6,m6],{suffix:fk}),hk={keyword:l6,number:h6,operator:f6,builtin:g6,punctuation:c6,variable:Q6};function Ri(t,e){var O=e.returnStack[e.returnStack.length-1];if(O&&O.shouldReturnFrom(e))return e.tokenize=O.tokenize,e.returnStack.pop(),e.tokenize(t,e);if(t.eatSpace())return null;if(t.eat("("))return e.bracketNesting+=1,"punctuation";if(t.eat(")"))return e.bracketNesting-=1,"punctuation";for(var i in hk)if(t.match(hk[i]))return i;var n=t.next();if(n==="'")return P6(t,e);if(n==="$")return Zp(t,e);if(n==='"')return Qk(t,e);if(n==="<"&&t.eat("#"))return e.tokenize=pk,pk(t,e);if(n==="#")return t.skipToEnd(),"comment";if(n==="@"){var r=t.eat(/["']/);if(r&&t.eol())return e.tokenize=Yu,e.startQuote=r[0],Yu(t,e);if(t.eol())return"error";if(t.peek().match(/[({]/))return"punctuation";if(t.peek().match(bp))return Zp(t,e)}return"error"}function P6(t,e){for(var O;(O=t.peek())!=null;)if(t.next(),O==="'"&&!t.eat("'"))return e.tokenize=Ri,"string";return"error"}function Qk(t,e){for(var O;(O=t.peek())!=null;){if(O==="$")return e.tokenize=S6,"string";if(t.next(),O==="`"){t.next();continue}if(O==='"'&&!t.eat('"'))return e.tokenize=Ri,"string"}return"error"}function S6(t,e){return $k(t,e,Qk)}function X6(t,e){return e.tokenize=Yu,e.startQuote='"',Yu(t,e)}function x6(t,e){return $k(t,e,X6)}function $k(t,e,O){if(t.match("$(")){var i=e.bracketNesting;return e.returnStack.push({shouldReturnFrom:function(n){return n.bracketNesting===i},tokenize:O}),e.tokenize=Ri,e.bracketNesting+=1,"punctuation"}else return t.next(),e.returnStack.push({shouldReturnFrom:function(){return!0},tokenize:O}),e.tokenize=Zp,e.tokenize(t,e)}function pk(t,e){for(var O=!1,i;(i=t.next())!=null;){if(O&&i==">"){e.tokenize=Ri;break}O=i==="#"}return"comment"}function Zp(t,e){var O=t.peek();return t.eat("{")?(e.tokenize=mk,mk(t,e)):O!=null&&O.match(bp)?(t.eatWhile(bp),e.tokenize=Ri,"variable"):(e.tokenize=Ri,"error")}function mk(t,e){for(var O;(O=t.next())!=null;)if(O==="}"){e.tokenize=Ri;break}return"variable"}function Yu(t,e){var O=e.startQuote;if(t.sol()&&t.match(new RegExp(O+"@")))e.tokenize=Ri;else if(O==='"')for(;!t.eol();){var i=t.peek();if(i==="$")return e.tokenize=x6,"string";t.next(),i==="`"&&t.next()}else t.skipToEnd();return"string"}const y6={name:"powershell",startState:function(){return{returnStack:[],bracketNesting:0,tokenize:Ri}},token:function(t,e){return e.tokenize(t,e)},languageData:{commentTokens:{line:"#",block:{open:"<#",close:"#>"}}}},w6={name:"properties",token:function(t,e){var O=t.sol()||e.afterSection,i=t.eol();if(e.afterSection=!1,O&&(e.nextMultiline?(e.inMultiline=!0,e.nextMultiline=!1):e.position="def"),i&&!e.nextMultiline&&(e.inMultiline=!1,e.position="def"),O)for(;t.eatSpace(););var n=t.next();return O&&(n==="#"||n==="!"||n===";")?(e.position="comment",t.skipToEnd(),"comment"):O&&n==="["?(e.afterSection=!0,t.skipTo("]"),t.eat("]"),"header"):n==="="||n===":"?(e.position="quote",null):(n==="\\"&&e.position==="quote"&&t.eol()&&(e.nextMultiline=!0),e.position)},startState:function(){return{position:"def",nextMultiline:!1,inMultiline:!1,afterSection:!1}}};function Rp(t){for(var e={},O=0,i=t.length;O]/)?(t.eat(/[\<\>]/),"atom"):t.eat(/[\+\-\*\/\&\|\:\!]/)?"atom":t.eat(/[a-zA-Z$@_\xa1-\uffff]/)?(t.eatWhile(/[\w$\xa1-\uffff]/),t.eat(/[\?\!\=]/),"atom"):"operator";if(O=="@"&&t.match(/^@?[a-zA-Z_\xa1-\uffff]/))return t.eat("@"),t.eatWhile(/[\w\xa1-\uffff]/),"propertyName";if(O=="$")return t.eat(/[a-zA-Z_]/)?t.eatWhile(/[\w]/):t.eat(/\d/)?t.eat(/\d/):t.next(),"variableName.special";if(/[a-zA-Z_\xa1-\uffff]/.test(O))return t.eatWhile(/[\w\xa1-\uffff]/),t.eat(/[\?\!]/),t.eat(":")?"atom":"variable";if(O=="|"&&(e.varList||e.lastTok=="{"||e.lastTok=="do"))return RO="|",null;if(/[\(\)\[\]{}\\;]/.test(O))return RO=O,null;if(O=="-"&&t.eat(">"))return"operator";if(/[=+\-\/*:\.^%<>~|]/.test(O)){var s=t.eatWhile(/[=+\-\/*:\.^%<>~|]/);return O=="."&&!s&&(RO="."),"operator"}else return null}}}function Z6(t){for(var e=t.pos,O=0,i,n=!1,r=!1;(i=t.next())!=null;)if(r)r=!1;else{if("[{(".indexOf(i)>-1)O++;else if("]})".indexOf(i)>-1){if(O--,O<0)break}else if(i=="/"&&O==0){n=!0;break}r=i=="\\"}return t.backUp(t.pos-e),n}function Yp(t){return t||(t=1),function(e,O){if(e.peek()=="}"){if(t==1)return O.tokenize.pop(),O.tokenize[O.tokenize.length-1](e,O);O.tokenize[O.tokenize.length-1]=Yp(t-1)}else e.peek()=="{"&&(O.tokenize[O.tokenize.length-1]=Yp(t+1));return _u(e,O)}}function R6(){var t=!1;return function(e,O){return t?(O.tokenize.pop(),O.tokenize[O.tokenize.length-1](e,O)):(t=!0,_u(e,O))}}function To(t,e,O,i){return function(n,r){var a=!1,s;for(r.context.type==="read-quoted-paused"&&(r.context=r.context.prev,n.eat("}"));(s=n.next())!=null;){if(s==t&&(i||!a)){r.tokenize.pop();break}if(O&&s=="#"&&!a){if(n.eat("{")){t=="}"&&(r.context={prev:r.context,type:"read-quoted-paused"}),r.tokenize.push(Yp());break}else if(/[@\$]/.test(n.peek())){r.tokenize.push(R6());break}}a=!a&&s=="\\"}return e}}function Y6(t,e){return function(O,i){return e&&O.eatSpace(),O.match(t)?i.tokenize.pop():O.skipToEnd(),"string"}}function _6(t,e){return t.sol()&&t.match("=end")&&t.eol()&&e.tokenize.pop(),t.skipToEnd(),"comment"}const z6={name:"ruby",startState:function(t){return{tokenize:[_u],indented:0,context:{type:"top",indented:-t},continuedLine:!1,lastTok:null,varList:!1}},token:function(t,e){RO=null,t.sol()&&(e.indented=t.indentation());var O=e.tokenize[e.tokenize.length-1](t,e),i,n=RO;if(O=="variable"){var r=t.current();O=e.lastTok=="."?"property":T6.propertyIsEnumerable(t.current())?"keyword":/^[A-Z]/.test(r)?"tag":e.lastTok=="def"||e.lastTok=="class"||e.varList?"def":"variable",O=="keyword"&&(n=r,k6.propertyIsEnumerable(r)?i="indent":v6.propertyIsEnumerable(r)?i="dedent":((r=="if"||r=="unless")&&t.column()==t.indentation()||r=="do"&&e.context.indented1&&t.eat("$");var O=t.next();return/['"({]/.test(O)?(e.tokens[0]=zu(O,O=="("?"quote":O=="{"?"def":"string"),ma(t,e)):(/\d/.test(O)||t.eatWhile(/\w/),e.tokens.shift(),"def")};function V6(t){return function(e,O){return e.sol()&&e.string==t&&O.tokens.shift(),e.skipToEnd(),"string.special"}}function ma(t,e){return(e.tokens[0]||U6)(t,e)}const W6={name:"shell",startState:function(){return{tokens:[]}},token:function(t,e){return ma(t,e)},languageData:{autocomplete:Sk.concat(Xk,xk),closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"#"}}},j6={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(t,e){let O;if(!e.inString&&(O=t.match(/^('''|"""|'|")/))&&(e.stringType=O[0],e.inString=!0),t.sol()&&!e.inString&&e.inArray===0&&(e.lhs=!0),e.inString){for(;e.inString;)if(t.match(e.stringType))e.inString=!1;else if(t.peek()==="\\")t.next(),t.next();else{if(t.eol())break;t.match(/^.[^\\\"\']*/)}return e.lhs?"property":"string"}else{if(e.inArray&&t.peek()==="]")return t.next(),e.inArray--,"bracket";if(e.lhs&&t.peek()==="["&&t.skipTo("]"))return t.next(),t.peek()==="]"&&t.next(),"atom";if(t.peek()==="#")return t.skipToEnd(),"comment";if(t.eatSpace())return null;if(e.lhs&&t.eatWhile(function(i){return i!="="&&i!=" "}))return"property";if(e.lhs&&t.peek()==="=")return t.next(),e.lhs=!1,null;if(!e.lhs&&t.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!e.lhs&&(t.match("true")||t.match("false")))return"atom";if(!e.lhs&&t.peek()==="[")return e.inArray++,t.next(),"bracket";if(!e.lhs&&t.match(/^\-?\d+(?:\.\d+)?/))return"number";t.eatSpace()||t.next()}return null},languageData:{commentTokens:{line:"#"}}},eO=t=>new Ke(MQ.define(t)),C6=[{name:"TypeScript",extensions:["ts","mts","cts"],load:()=>no({typescript:!0})},{name:"TSX",extensions:["tsx"],load:()=>no({typescript:!0,jsx:!0})},{name:"JavaScript",extensions:["js","mjs","cjs"],load:()=>no()},{name:"JSX",extensions:["jsx"],load:()=>no({jsx:!0})},{name:"JSON",extensions:["json","jsonc","json5","map","webmanifest"],load:()=>BW()},{name:"Markdown",extensions:["md","markdown","mdx"],load:()=>E2()},{name:"CSS",extensions:["css"],load:()=>Ry()},{name:"SCSS",extensions:["scss"],load:()=>d0({indented:!1})},{name:"Sass",extensions:["sass"],load:()=>d0({indented:!0})},{name:"Less",extensions:["less"],load:()=>s2()},{name:"HTML",extensions:["html","htm"],load:()=>su()},{name:"Vue",extensions:["vue"],load:()=>k7()},{name:"XML",extensions:["xml","xsl","xsd","plist","csproj","svg"],load:()=>F7()},{name:"YAML",extensions:["yml","yaml"],load:()=>kG()},{name:"TOML",extensions:["toml"],load:()=>eO(j6)},{name:"Properties",extensions:["properties","ini","conf","cfg","editorconfig"],load:()=>eO(w6)},{name:"Python",extensions:["py","pyi","pyw"],load:()=>Z8()},{name:"Go",extensions:["go"],load:()=>oV()},{name:"Rust",extensions:["rs"],load:()=>H8()},{name:"Java",extensions:["java"],load:()=>MW()},{name:"C++",extensions:["c","h","cc","cpp","cxx","hpp","hh","hxx","ino"],load:()=>kU()},{name:"PHP",extensions:["php","phtml"],load:()=>h4()},{name:"C#",extensions:["cs","csx"],load:()=>eO(ZG)},{name:"Kotlin",extensions:["kt","kts"],load:()=>eO(_G)},{name:"Scala",extensions:["scala","sc"],load:()=>eO(RG)},{name:"Dart",extensions:["dart"],load:()=>eO(jG)},{name:"Objective-C",extensions:["m","mm"],load:()=>eO(zG)},{name:"Ruby",extensions:["rb","rake","gemspec"],filenames:["Gemfile","Rakefile"],load:()=>eO(z6)},{name:"Lua",extensions:["lua"],load:()=>eO(o6)},{name:"Shell",extensions:["sh","bash","zsh","ksh","fish"],load:()=>eO(W6)},{name:"PowerShell",extensions:["ps1","psm1","psd1"],load:()=>eO(y6)},{name:"SQL",extensions:["sql"],load:()=>m7()},{name:"Dockerfile",extensions:[],filenames:["Dockerfile","Containerfile"],load:()=>eO(JG)},{name:"Diff",extensions:["diff","patch"],load:()=>eO(e6)}],Uu=new Map,Up=new Map,qu=new Map;C6.map(t=>{const e=Ns.of({name:t.name,extensions:t.extensions,load:async()=>t.load()});for(const O of t.extensions)Uu.has(O)||Uu.set(O,e);for(const O of t.filenames??[]){const i=O.toLowerCase();Up.has(i)||Up.set(i,e)}return qu.has(t.name)||qu.set(t.name,e),e});const G6={ts:"TypeScript",typescript:"TypeScript",js:"JavaScript",javascript:"JavaScript",node:"JavaScript",tsx:"TSX",jsx:"JSX",json:"JSON",jsonc:"JSON",md:"Markdown",markdown:"Markdown",py:"Python",python:"Python",golang:"Go",go:"Go",rs:"Rust",rust:"Rust",sh:"Shell",bash:"Shell",shell:"Shell",zsh:"Shell",ps1:"PowerShell",powershell:"PowerShell",yml:"YAML",yaml:"YAML",html:"HTML",xml:"XML",css:"CSS",scss:"SCSS",sass:"Sass",less:"Less",vue:"Vue",java:"Java",ruby:"Ruby",lua:"Lua",php:"PHP",toml:"TOML",ini:"Properties",properties:"Properties",c:"C++",h:"C++",cpp:"C++","c++":"C++",sql:"SQL",csharp:"C#",cs:"C#","c#":"C#",kt:"Kotlin",kotlin:"Kotlin",scala:"Scala",dart:"Dart",objc:"Objective-C","objective-c":"Objective-C",dockerfile:"Dockerfile",docker:"Dockerfile",diff:"Diff",patch:"Diff"};function wk(t){const O=t.slice(t.lastIndexOf("/")+1).toLowerCase(),i=Up.get(O);if(i)return i;const n=O.lastIndexOf(".");if(n>0&&n0){const o=`${O.slice(s+1,n)}.${r}`,l=Uu.get(o);if(l)return l}}return null}function E6(t){return/\.(?:md|markdown|mdx)$/i.test(t)}function A6(t){const e=t.trim().toLowerCase();return e?qu.get(G6[e]??"")??qu.get(e)??null:null}const L6={source:"editMode",markdown:"previewMode",table:"tableMode",tree:"treeMode"};function Tk(t){return/\.csv$/i.test(t)?",":/\.tsv$/i.test(t)?" ":null}function M6(t){return/\.(?:json|jsonc|json5)$/i.test(t)}function N6(t,e){return E6(t)?{modes:["source","markdown"],mode:e.mdPreview?"markdown":"source"}:Tk(t)?{modes:["source","table"],mode:e.csvTable?"table":"source"}:M6(t)?{modes:["source","tree"],mode:e.jsonTree?"tree":"source"}:null}function I6(t,e){const O={path:t.path,size:t.size,mtimeMs:t.mtimeMs,loadToken:e},i={text:"",eol:"lf",bom:!1};return t.kind==="text"?{...O,kind:"text",text:t.text,eol:t.eol,bom:t.bom}:t.kind==="image"||t.kind==="media"?{...O,...i,kind:t.kind,mime:t.mime,dataUri:t.dataUri}:t.kind==="tooLarge"?{...O,...i,kind:"tooLarge",limit:t.limit}:t.kind==="sqlite"?{...O,...i,kind:"sqlite",sqlite:{available:t.available,info:t.info}}:{...O,...i,kind:"binary"}}function D6(t,e,O){return{...t,mtimeMs:e.mtimeMs,size:e.size,text:O}}function B6(t,e){return!!(t&&e===t.loadToken)}async function kk(t,e){const O=await nt(t,{path:e});if(O&&O.ok===!1)throw new Error(O.message??"the host refused the request")}function F6(t){return kk("fs.openDefault",t)}function H6(t){return kk("fs.reveal",t)}const K6="view:open",J6="piViewOpen";function qp(t){return t.startsWith("/")||/^[A-Za-z]:[\\/]/.test(t)||t.startsWith("\\\\")}function eE(t){if(!t)return null;let e;try{e=new URLSearchParams(t).get(J6)}catch{return null}return typeof e=="string"&&e.trim()?e:null}function tE(t){if(!t||typeof t!="object")return null;const e=t;return typeof e.path!="string"||!e.path.trim()?null:{path:e.path}}function OE(t){let e=null;const O=r=>{r.path!==e&&(e=r.path,t(r))},i=qS(K6,r=>{const a=tE(r);a&&O(a)}),n=eE(window.location.search);return n&&O({path:n}),()=>i()}const ko={folder:m.jsx("path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"}),folderOpen:m.jsx(m.Fragment,{children:m.jsx("path",{d:"M6 14l1.45-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.55 6a2 2 0 0 1-1.94 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.93a2 2 0 0 1 1.66.9l.82 1.2a2 2 0 0 0 1.66.9H18a2 2 0 0 1 2 2v2"})}),file:m.jsxs(m.Fragment,{children:[m.jsx("path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"}),m.jsx("path",{d:"M14 2v5h5"})]}),code:m.jsxs(m.Fragment,{children:[m.jsx("path",{d:"m9 18-6-6 6-6"}),m.jsx("path",{d:"m15 6 6 6-6 6"})]}),braces:m.jsxs(m.Fragment,{children:[m.jsx("path",{d:"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5a2 2 0 0 0 2 2h1"}),m.jsx("path",{d:"M16 3h1a2 2 0 0 1 2 2v5a2 2 0 0 0 2 2 2 2 0 0 0-2 2v5a2 2 0 0 1-2 2h-1"})]}),hash:m.jsxs(m.Fragment,{children:[m.jsx("path",{d:"M4 9h16M4 15h16"}),m.jsx("path",{d:"M10 3 8 21M16 3l-2 18"})]}),markdown:m.jsxs(m.Fragment,{children:[m.jsx("path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"}),m.jsx("path",{d:"M14 2v5h5"}),m.jsx("path",{d:"M8 16v-4l2 2 2-2v4"})]}),style:m.jsx("path",{d:"M12 3s6 6.3 6 10a6 6 0 0 1-12 0c0-3.7 6-10 6-10z"}),globe:m.jsxs(m.Fragment,{children:[m.jsx("circle",{cx:"12",cy:"12",r:"9"}),m.jsx("path",{d:"M3 12h18"}),m.jsx("path",{d:"M12 3a15 15 0 0 1 0 18 15 15 0 0 1 0-18"})]}),database:m.jsxs(m.Fragment,{children:[m.jsx("ellipse",{cx:"12",cy:"6",rx:"8",ry:"3"}),m.jsx("path",{d:"M4 6v12c0 1.7 3.6 3 8 3s8-1.3 8-3V6"}),m.jsx("path",{d:"M4 12c0 1.7 3.6 3 8 3s8-1.3 8-3"})]}),terminal:m.jsxs(m.Fragment,{children:[m.jsx("path",{d:"m5 8 4 4-4 4"}),m.jsx("path",{d:"M13 16h6"})]}),image:m.jsxs(m.Fragment,{children:[m.jsx("rect",{x:"3",y:"4",width:"18",height:"16",rx:"2"}),m.jsx("circle",{cx:"9",cy:"9.5",r:"1.6"}),m.jsx("path",{d:"m4 17 5-5 4 4 3-3 4 4"})]}),video:m.jsxs(m.Fragment,{children:[m.jsx("rect",{x:"2.5",y:"5",width:"19",height:"14",rx:"2"}),m.jsx("path",{d:"m10 9.5 5 2.5-5 2.5z"})]}),audio:m.jsxs(m.Fragment,{children:[m.jsx("path",{d:"M9 18V6l10-2v12"}),m.jsx("circle",{cx:"6.5",cy:"18",r:"2.5"}),m.jsx("circle",{cx:"16.5",cy:"16",r:"2.5"})]}),archive:m.jsxs(m.Fragment,{children:[m.jsx("rect",{x:"3",y:"4",width:"18",height:"4",rx:"1"}),m.jsx("path",{d:"M5 8v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V8"}),m.jsx("path",{d:"M10 12h4"})]}),font:m.jsxs(m.Fragment,{children:[m.jsx("path",{d:"M5 20 12 4l7 16"}),m.jsx("path",{d:"M8.5 14h7"})]}),lock:m.jsxs(m.Fragment,{children:[m.jsx("rect",{x:"5",y:"11",width:"14",height:"9",rx:"1.5"}),m.jsx("path",{d:"M9 11V8a3 3 0 0 1 6 0v3"})]}),sliders:m.jsxs(m.Fragment,{children:[m.jsx("path",{d:"M4 8h9M19 8h1M4 16h3M12 16h8"}),m.jsx("circle",{cx:"15.5",cy:"8",r:"2"}),m.jsx("circle",{cx:"9.5",cy:"16",r:"2"})]}),branch:m.jsxs(m.Fragment,{children:[m.jsx("circle",{cx:"6.5",cy:"6",r:"2.5"}),m.jsx("circle",{cx:"6.5",cy:"18",r:"2.5"}),m.jsx("circle",{cx:"17.5",cy:"9",r:"2.5"}),m.jsx("path",{d:"M6.5 8.5v7"}),m.jsx("path",{d:"M17.5 11.5c0 3.2-4 3.4-7 4.3"})]}),package:m.jsxs(m.Fragment,{children:[m.jsx("path",{d:"m12 3 8 4.5v9L12 21l-8-4.5v-9z"}),m.jsx("path",{d:"m4 7.5 8 4.5 8-4.5"}),m.jsx("path",{d:"M12 12v9"})]}),shield:m.jsx("path",{d:"M12 3 4 6v6c0 5 3.5 8 8 9 4.5-1 8-4 8-9V6z"}),book:m.jsxs(m.Fragment,{children:[m.jsx("path",{d:"M4 4.5A2.5 2.5 0 0 1 6.5 2H20v18H6.5A2.5 2.5 0 0 1 4 17.5z"}),m.jsx("path",{d:"M4 17.5A2.5 2.5 0 0 1 6.5 15H20"})]})},Z={default:"var(--muted)",folder:"var(--icon-folder)",code:"#3178c6",script:"#d9a300",data:"#c07a1f",markup:"#e0724a",style:"#4aa3d9",doc:"var(--icon-doc)",shell:"#4e9a06",image:"#26a269",media:"#c678dd",archive:"#a8823c",font:"#8e7cc3",lock:"#c0703c",db:"#d64b4b",git:"#e0724a",pkg:"#cb8a2e",secret:"#9a5bd6"},iE={".gitignore":{glyph:"branch",color:Z.git},".gitattributes":{glyph:"branch",color:Z.git},".gitmodules":{glyph:"branch",color:Z.git},".npmrc":{glyph:"sliders",color:Z.secret},".env":{glyph:"lock",color:Z.secret},".editorconfig":{glyph:"sliders",color:Z.default},".prettierrc":{glyph:"sliders",color:Z.default},".eslintrc":{glyph:"sliders",color:Z.default},dockerfile:{glyph:"package",color:Z.style},"docker-compose.yml":{glyph:"package",color:Z.style},"docker-compose.yaml":{glyph:"package",color:Z.style},makefile:{glyph:"terminal",color:Z.shell},license:{glyph:"shield",color:Z.doc},"license.md":{glyph:"shield",color:Z.doc},"license.txt":{glyph:"shield",color:Z.doc},"package.json":{glyph:"package",color:Z.pkg},"package-lock.json":{glyph:"lock",color:Z.default},"pnpm-lock.yaml":{glyph:"lock",color:Z.default},"yarn.lock":{glyph:"lock",color:Z.default},"cargo.lock":{glyph:"lock",color:Z.default},"cargo.toml":{glyph:"package",color:Z.data},"go.mod":{glyph:"package",color:Z.style},"go.sum":{glyph:"lock",color:Z.default},"tsconfig.json":{glyph:"sliders",color:Z.code},"jsconfig.json":{glyph:"sliders",color:Z.script},"vite.config.ts":{glyph:"sliders",color:Z.data},"vite.config.js":{glyph:"sliders",color:Z.data},"readme.md":{glyph:"book",color:Z.doc},"changelog.md":{glyph:"book",color:Z.doc}},nE={ts:{glyph:"code",color:Z.code},tsx:{glyph:"code",color:Z.code},mts:{glyph:"code",color:Z.code},cts:{glyph:"code",color:Z.code},js:{glyph:"code",color:Z.script},jsx:{glyph:"code",color:Z.script},mjs:{glyph:"code",color:Z.script},cjs:{glyph:"code",color:Z.script},json:{glyph:"braces",color:Z.data},jsonc:{glyph:"braces",color:Z.data},json5:{glyph:"braces",color:Z.data},map:{glyph:"braces",color:Z.default},md:{glyph:"markdown",color:Z.doc},markdown:{glyph:"markdown",color:Z.doc},mdx:{glyph:"markdown",color:Z.doc},txt:{glyph:"file",color:Z.doc},css:{glyph:"style",color:Z.style},scss:{glyph:"style",color:"#cf649a"},sass:{glyph:"style",color:"#cf649a"},less:{glyph:"style",color:"#4aa3d9"},html:{glyph:"globe",color:Z.markup},htm:{glyph:"globe",color:Z.markup},vue:{glyph:"globe",color:"#41b883"},svelte:{glyph:"globe",color:"#ff3e00"},astro:{glyph:"globe",color:"#ff5d01"},xml:{glyph:"globe",color:Z.data},svg:{glyph:"image",color:Z.image},yml:{glyph:"sliders",color:Z.data},yaml:{glyph:"sliders",color:Z.data},toml:{glyph:"sliders",color:Z.data},ini:{glyph:"sliders",color:Z.data},conf:{glyph:"sliders",color:Z.data},env:{glyph:"lock",color:Z.secret},properties:{glyph:"sliders",color:Z.data},py:{glyph:"code",color:"#3776ab"},pyi:{glyph:"code",color:"#3776ab"},rb:{glyph:"code",color:"#cc342d"},php:{glyph:"code",color:"#8892bf"},go:{glyph:"code",color:"#00add8"},rs:{glyph:"code",color:"#d08770"},java:{glyph:"code",color:"#e76f00"},kt:{glyph:"code",color:"#a97bff"},kts:{glyph:"code",color:"#a97bff"},scala:{glyph:"code",color:"#dc322f"},swift:{glyph:"code",color:"#f05138"},c:{glyph:"code",color:"#5c6bc0"},h:{glyph:"code",color:"#5c6bc0"},cc:{glyph:"code",color:"#5c6bc0"},cpp:{glyph:"code",color:"#5c6bc0"},cxx:{glyph:"code",color:"#5c6bc0"},hpp:{glyph:"code",color:"#5c6bc0"},cs:{glyph:"code",color:"#9b4f96"},lua:{glyph:"code",color:"#2c2d72"},dart:{glyph:"code",color:"#0175c2"},ex:{glyph:"code",color:"#6e4a7e"},exs:{glyph:"code",color:"#6e4a7e"},sh:{glyph:"terminal",color:Z.shell},bash:{glyph:"terminal",color:Z.shell},zsh:{glyph:"terminal",color:Z.shell},fish:{glyph:"terminal",color:Z.shell},ps1:{glyph:"terminal",color:"#4aa3d9"},bat:{glyph:"terminal",color:Z.shell},cmd:{glyph:"terminal",color:Z.shell},sql:{glyph:"database",color:Z.db},db:{glyph:"database",color:Z.db},sqlite:{glyph:"database",color:Z.db},png:{glyph:"image",color:Z.image},jpg:{glyph:"image",color:Z.image},jpeg:{glyph:"image",color:Z.image},gif:{glyph:"image",color:Z.image},webp:{glyph:"image",color:Z.image},ico:{glyph:"image",color:Z.image},bmp:{glyph:"image",color:Z.image},avif:{glyph:"image",color:Z.image},tiff:{glyph:"image",color:Z.image},mp4:{glyph:"video",color:Z.media},m4v:{glyph:"video",color:Z.media},mov:{glyph:"video",color:Z.media},webm:{glyph:"video",color:Z.media},mkv:{glyph:"video",color:Z.media},ogv:{glyph:"video",color:Z.media},avi:{glyph:"video",color:Z.media},mp3:{glyph:"audio",color:Z.media},m4a:{glyph:"audio",color:Z.media},aac:{glyph:"audio",color:Z.media},wav:{glyph:"audio",color:Z.media},flac:{glyph:"audio",color:Z.media},ogg:{glyph:"audio",color:Z.media},oga:{glyph:"audio",color:Z.media},opus:{glyph:"audio",color:Z.media},weba:{glyph:"audio",color:Z.media},zip:{glyph:"archive",color:Z.archive},gz:{glyph:"archive",color:Z.archive},tar:{glyph:"archive",color:Z.archive},bz2:{glyph:"archive",color:Z.archive},xz:{glyph:"archive",color:Z.archive},"7z":{glyph:"archive",color:Z.archive},rar:{glyph:"archive",color:Z.archive},woff:{glyph:"font",color:Z.font},woff2:{glyph:"font",color:Z.font},ttf:{glyph:"font",color:Z.font},otf:{glyph:"font",color:Z.font},eot:{glyph:"font",color:Z.font},lock:{glyph:"lock",color:Z.default},key:{glyph:"lock",color:Z.lock},pem:{glyph:"lock",color:Z.lock},crt:{glyph:"lock",color:Z.lock},cer:{glyph:"lock",color:Z.lock},p12:{glyph:"lock",color:Z.lock},pfx:{glyph:"lock",color:Z.lock},wat:{glyph:"code",color:Z.code},wasm:{glyph:"hash",color:Z.default},bin:{glyph:"hash",color:Z.default},exe:{glyph:"hash",color:Z.default},dll:{glyph:"hash",color:Z.default},so:{glyph:"hash",color:Z.default},dylib:{glyph:"hash",color:Z.default},log:{glyph:"file",color:Z.default},csv:{glyph:"database",color:Z.data},tsv:{glyph:"database",color:Z.data},xlsx:{glyph:"database",color:"#26a269"},pdf:{glyph:"book",color:"#d64b4b"}};function rE(t,e,O){if(e)return{glyph:ko[O?"folderOpen":"folder"],color:Z.folder};const i=t.toLowerCase(),n=iE[i];if(n)return{glyph:ko[n.glyph],color:n.color};if(i.startsWith(".env"))return{glyph:ko.lock,color:Z.secret};const r=i.lastIndexOf(".");if(r>0&&r!l.ignored);if(s.length===0)return[{kind:"note",path:t,depth:e,text:r("empty"),error:!1}];const o=[];for(const l of s)o.push({kind:"entry",path:l.path,depth:e,entry:l}),l.isDirectory&&i.has(l.path)&&o.push(...bk(l.path,e+1,O,i,n,r));return o}function aE({directories:t,expanded:e,selected:O,showIgnored:i,t:n,onToggle:r,onOpen:a,onRefreshDir:s,onContextMenu:o}){const l=y.useRef(null),c=y.useMemo(()=>bk("",0,t,e,i,n),[t,e,i,n]);y.useEffect(()=>{O&&l.current?.querySelector(`[data-path="${CSS.escape(O)}"]`)?.scrollIntoView({block:"nearest"})},[O,c]);const u=Q=>{const $=Math.max(0,Math.min(Q,c.length-1));l.current?.querySelector(`[data-row-index="${$}"]`)?.focus()},d=Q=>{if(Q.kind!=="entry"){Q.error&&s(Q.path);return}Q.entry.isDirectory?r(Q.entry.path):a(Q.entry)},h=(Q,$,P)=>{switch(Q.key){case"ArrowDown":Q.preventDefault(),u($+1);return;case"ArrowUp":Q.preventDefault(),u($-1);return;case"Home":Q.preventDefault(),u(0);return;case"End":Q.preventDefault(),u(c.length-1);return;case"Enter":case" ":Q.preventDefault(),d(P);return;case"ArrowRight":P.kind==="entry"&&P.entry.isDirectory&&!e.has(P.entry.path)&&(Q.preventDefault(),r(P.entry.path));return;case"ArrowLeft":P.kind==="entry"&&P.entry.isDirectory&&e.has(P.entry.path)&&(Q.preventDefault(),r(P.entry.path));return}};return m.jsx("div",{ref:l,role:"tree","aria-label":n("treeSection"),"aria-busy":!t.get("")?.entries,className:"min-h-0 flex-1 overflow-auto px-1.5 pb-4",onContextMenu:Q=>{Q.target.closest(".tree-row")||(Q.preventDefault(),o(Q,null))},children:c.map((Q,$)=>{if(Q.kind==="note")return m.jsxs("div",{className:"flex min-h-[24px] items-center gap-1.5 py-0.5 pr-2 text-[11.5px]",style:{paddingLeft:12+Q.depth*14,color:Q.error?"var(--danger)":"var(--muted)"},children:[Q.text===n("loading")?m.jsx("span",{"aria-hidden":"true",className:"inline-block h-[11px] w-[11px] flex-none animate-spin rounded-full border-[1.5px]",style:{borderColor:"var(--border-strong)",borderTopColor:"var(--secondary)"}}):null,m.jsx("span",{className:"min-w-0",children:Q.text}),Q.error?m.jsx("button",{type:"button",className:"ml-auto border-0 bg-transparent p-0 underline underline-offset-2",style:{color:"var(--secondary)"},onClick:()=>s(Q.path),children:n("retry")}):null]},`note:${Q.path}:${Q.text}`);const{entry:P}=Q,p=O===P.path,g=e.has(P.path),S=P.ignored&&i;return m.jsxs("button",{type:"button","data-path":P.path,"data-row-index":$,"data-selected":p?"true":void 0,"data-ignored":S?"true":void 0,role:"treeitem","aria-expanded":P.isDirectory?g:void 0,"aria-selected":p,"aria-level":Q.depth+1,title:P.outside?`${P.path} — ${n("symlinkOutside")}`:P.ignored?`${P.path} — ${n("ignoredBadge")}`:P.path,disabled:P.isSymlink,draggable:!P.isDirectory&&!P.isSymlink,onDragStart:X=>{P.isDirectory||P.isSymlink||(X.dataTransfer.effectAllowed="copy",X.dataTransfer.setData("application/x-pi-desktop-workspace-file",JSON.stringify({path:P.path,name:P.name})))},onClick:()=>d(Q),onKeyDown:X=>h(X,$,Q),onContextMenu:X=>{X.preventDefault(),X.stopPropagation(),o(X,P)},className:"tree-row",style:{paddingLeft:6+Q.depth*14},children:[m.jsx("span",{"aria-hidden":"true",className:"tree-caret",style:{transform:g?"rotate(90deg)":void 0},children:P.isDirectory?m.jsx("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:m.jsx("path",{d:"m9 18 6-6-6-6"})}):null}),m.jsx(vk,{name:P.name,isDirectory:P.isDirectory,expanded:g}),m.jsx("span",{className:"tree-name",children:P.name}),P.isSymlink?m.jsx("span",{"aria-hidden":"true",className:"tree-mark",children:"↪"}):null,P.isDirectory?null:m.jsx("span",{className:"tree-size",children:Ar(P.size)})]},P.path)})})}const sE=t=>{let{state:e}=t,O=e.doc.lineAt(e.selection.main.from),i=Wp(t.state,O.from);return i.line?oE(t):i.block?cE(t):!1};function Vp(t,e){return({state:O,dispatch:i})=>{if(O.readOnly)return!1;let n=t(e,O);return n?(i(O.update(n)),!0):!1}}const oE=Vp(fE,0),lE=Vp(Zk,0),cE=Vp((t,e)=>Zk(t,e,dE(e)),0);function Wp(t,e){let O=t.languageDataAt("commentTokens",e,1);return O.length?O[0]:{}}const vo=50;function uE(t,{open:e,close:O},i,n){let r=t.sliceDoc(i-vo,i),a=t.sliceDoc(n,n+vo),s=/\s*$/.exec(r)[0].length,o=/^\s*/.exec(a)[0].length,l=r.length-s;if(r.slice(l-e.length,l)==e&&a.slice(o,o+O.length)==O)return{open:{pos:i-s,margin:s&&1},close:{pos:n+o,margin:o&&1}};let c,u;n-i<=2*vo?c=u=t.sliceDoc(i,n):(c=t.sliceDoc(i,i+vo),u=t.sliceDoc(n-vo,n));let d=/^\s*/.exec(c)[0].length,h=/\s*$/.exec(u)[0].length,Q=u.length-h-O.length;return c.slice(d,d+e.length)==e&&u.slice(Q,Q+O.length)==O?{open:{pos:i+d+e.length,margin:/\s/.test(c.charAt(d+e.length))?1:0},close:{pos:n-h-O.length,margin:/\s/.test(u.charAt(Q-1))?1:0}}:null}function dE(t){let e=[];for(let O of t.selection.ranges){let i=t.doc.lineAt(O.from),n=O.to<=i.to?i:t.doc.lineAt(O.to);n.from>i.from&&n.from==O.to&&(n=O.to==i.to+1?i:t.doc.lineAt(O.to-1));let r=e.length-1;r>=0&&e[r].to>i.from?e[r].to=n.to:e.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:n.to})}return e}function Zk(t,e,O=e.selection.ranges){let i=O.map(r=>Wp(e,r.from).block);if(!i.every(r=>r))return null;let n=O.map((r,a)=>uE(e,i[a],r.from,r.to));if(t!=2&&!n.every(r=>r))return{changes:e.changes(O.map((r,a)=>n[a]?[]:[{from:r.from,insert:i[a].open+" "},{from:r.to,insert:" "+i[a].close}]))};if(t!=1&&n.some(r=>r)){let r=[];for(let a=0,s;an&&(r==a||a>u.from)){n=u.from;let d=/^\s*/.exec(u.text)[0].length,h=d==u.length,Q=u.text.slice(d,d+l.length)==l?d:-1;dr.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:s,token:o,indent:l,empty:c,single:u}of i)(u||!c)&&r.push({from:s.from+l,insert:o+" "});let a=e.changes(r);return{changes:a,selection:e.selection.map(a,1)}}else if(t!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:a,comment:s,token:o}of i)if(s>=0){let l=a.from+s,c=l+o.length;a.text[c-a.from]==" "&&c++,r.push({from:l,to:c})}return{changes:r}}return null}const jp=Qi.define(),hE=Qi.define(),QE=N.define(),Rk=N.define({combine(t){return on(t,{minDepth:100,newGroupDelay:500,joinToEvent:(e,O)=>O},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,O)=>(i,n)=>e(i,n)||O(i,n)})}}),Yk=Wt.define({create(){return KO.empty},update(t,e){let O=e.state.facet(Rk),i=e.annotation(jp);if(i){let o=Ct.fromTransaction(e,i.selection),l=i.side,c=l==0?t.undone:t.done;return o?c=Wu(c,c.length,O.minDepth,o):c=Uk(c,e.startState.selection),new KO(l==0?i.rest:c,l==0?c:i.rest)}let n=e.annotation(hE);if((n=="full"||n=="before")&&(t=t.isolate()),e.annotation(Ee.addToHistory)===!1)return e.changes.empty?t:t.addMapping(e.changes.desc);let r=Ct.fromTransaction(e),a=e.annotation(Ee.time),s=e.annotation(Ee.userEvent);return r?t=t.addChanges(r,a,s,O,e):e.selection&&(t=t.addSelection(e.startState.selection,a,s,O.newGroupDelay)),(n=="full"||n=="after")&&(t=t.isolate()),t},toJSON(t){return{done:t.done.map(e=>e.toJSON()),undone:t.undone.map(e=>e.toJSON())}},fromJSON(t){return new KO(t.done.map(Ct.fromJSON),t.undone.map(Ct.fromJSON))}});function $E(t={}){return[Yk,Rk.of(t),L.domEventHandlers({beforeinput(e,O){let i=e.inputType=="historyUndo"?_k:e.inputType=="historyRedo"?Cp:null;return i?(e.preventDefault(),i(O)):!1}})]}function Vu(t,e){return function({state:O,dispatch:i}){if(!e&&O.readOnly)return!1;let n=O.field(Yk,!1);if(!n)return!1;let r=n.pop(t,O,e);return r?(i(r),!0):!1}}const _k=Vu(0,!1),Cp=Vu(1,!1),pE=Vu(0,!0),mE=Vu(1,!0);class Ct{constructor(e,O,i,n,r){this.changes=e,this.effects=O,this.mapped=i,this.startSelection=n,this.selectionsAfter=r}setSelAfter(e){return new Ct(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,O,i;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(O=this.mapped)===null||O===void 0?void 0:O.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(n=>n.toJSON())}}static fromJSON(e){return new Ct(e.changes&&Be.fromJSON(e.changes),[],e.mapped&&GO.fromJSON(e.mapped),e.startSelection&&v.fromJSON(e.startSelection),e.selectionsAfter.map(v.fromJSON))}static fromTransaction(e,O){let i=$O;for(let n of e.startState.facet(QE)){let r=n(e);r.length&&(i=i.concat(r))}return!i.length&&e.changes.empty?null:new Ct(e.changes.invert(e.startState.doc),i,void 0,O||e.startState.selection,$O)}static selection(e){return new Ct(void 0,$O,void 0,void 0,e)}}function Wu(t,e,O,i){let n=e+1>O+20?e-O-1:0,r=t.slice(n,e);return r.push(i),r}function gE(t,e){let O=[],i=!1;return t.iterChangedRanges((n,r)=>O.push(n,r)),e.iterChangedRanges((n,r,a,s)=>{for(let o=0;o=l&&a<=c&&(i=!0)}}),i}function PE(t,e){return t.ranges.length==e.ranges.length&&t.ranges.filter((O,i)=>O.empty!=e.ranges[i].empty).length===0}function zk(t,e){return t.length?e.length?t.concat(e):t:e}const $O=[],SE=200;function Uk(t,e){if(t.length){let O=t[t.length-1],i=O.selectionsAfter.slice(Math.max(0,O.selectionsAfter.length-SE));return i.length&&i[i.length-1].eq(e)?t:(i.push(e),Wu(t,t.length-1,1e9,O.setSelAfter(i)))}else return[Ct.selection([e])]}function XE(t){let e=t[t.length-1],O=t.slice();return O[t.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),O}function Gp(t,e){if(!t.length)return t;let O=t.length,i=$O;for(;O;){let n=xE(t[O-1],e,i);if(n.changes&&!n.changes.empty||n.effects.length){let r=t.slice(0,O);return r[O-1]=n,r}else e=n.mapped,O--,i=n.selectionsAfter}return i.length?[Ct.selection(i)]:$O}function xE(t,e,O){let i=zk(t.selectionsAfter.length?t.selectionsAfter.map(s=>s.map(e)):$O,O);if(!t.changes)return Ct.selection(i);let n=t.changes.map(e),r=e.mapDesc(t.changes,!0),a=t.mapped?t.mapped.composeDesc(r):r;return new Ct(n,ue.mapEffects(t.effects,e),a,t.startSelection.map(r),i)}const yE=/^(input\.type|delete)($|\.)/;class KO{constructor(e,O,i=0,n=void 0){this.done=e,this.undone=O,this.prevTime=i,this.prevUserEvent=n}isolate(){return this.prevTime?new KO(this.done,this.undone):this}addChanges(e,O,i,n,r){let a=this.done,s=a[a.length-1];return s&&s.changes&&!s.changes.empty&&e.changes&&(!i||yE.test(i))&&(!s.selectionsAfter.length&&O-this.prevTime0&&O-this.prevTimeO.empty?t.moveByChar(O,e):ju(O,e))}function xt(t){return t.textDirectionAt(t.state.selection.main.head)==be.LTR}const Vk=t=>qk(t,!xt(t)),Wk=t=>qk(t,xt(t));function jk(t,e){return _O(t,O=>O.empty?t.moveByGroup(O,e):ju(O,e))}const TE=t=>jk(t,!xt(t)),kE=t=>jk(t,xt(t));function vE(t,e,O){if(e.type.prop(O))return!0;let i=e.to-e.from;return i&&(i>2||/[^\s,.;:]/.test(t.sliceDoc(e.from,e.to)))||e.firstChild}function Cu(t,e,O){let i=$e(t).resolveInner(e.head),n=O?K.closedBy:K.openedBy;for(let o=e.head;;){let l=O?i.childAfter(o):i.childBefore(o);if(!l)break;vE(t,l,n)?i=l:o=O?l.to:l.from}let r=i.type.prop(n),a,s;return r&&(a=O?HO(t,i.from,1):HO(t,i.to,-1))&&a.matched?s=O?a.end.to:a.end.from:s=O?i.to:i.from,v.cursor(s,O?-1:1)}const bE=t=>_O(t,e=>Cu(t.state,e,!xt(t))),ZE=t=>_O(t,e=>Cu(t.state,e,xt(t)));function Ck(t,e){return _O(t,O=>{if(!O.empty)return ju(O,e);let i=t.moveVertically(O,e);return i.head!=O.head?i:t.moveToLineBoundary(O,e)})}const Gk=t=>Ck(t,!1),Ek=t=>Ck(t,!0);function Ak(t){let e=t.scrollDOM.clientHeighta.empty?t.moveVertically(a,e,O.height):ju(a,e));if(n.eq(i.selection))return!1;let r;if(O.selfScroll){let a=t.coordsAtPos(i.selection.main.head),s=t.scrollDOM.getBoundingClientRect(),o=s.top+O.marginTop,l=s.bottom-O.marginBottom;a&&a.top>o&&a.bottomLk(t,!1),Ep=t=>Lk(t,!0);function Sn(t,e,O){let i=t.lineBlockAt(e.head),n=t.moveToLineBoundary(e,O);if(n.head==e.head&&n.head!=(O?i.to:i.from)&&(n=t.moveToLineBoundary(e,O,!1)),!O&&n.head==i.from&&i.length){let r=/^\s*/.exec(t.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&e.head!=i.from+r&&(n=v.cursor(i.from+r))}return n}const RE=t=>_O(t,e=>Sn(t,e,!0)),YE=t=>_O(t,e=>Sn(t,e,!1)),_E=t=>_O(t,e=>Sn(t,e,!xt(t))),zE=t=>_O(t,e=>Sn(t,e,xt(t))),UE=t=>_O(t,e=>v.cursor(t.lineBlockAt(e.head).from,1)),qE=t=>_O(t,e=>v.cursor(t.lineBlockAt(e.head).to,-1));function VE(t,e,O){let i=!1,n=ga(t.selection,r=>{let a=HO(t,r.head,-1)||HO(t,r.head,1)||r.head>0&&HO(t,r.head-1,1)||r.headVE(t,e);function pO(t,e,O){let i=ga(t.state.selection,n=>{n.undirectional&&n.head>=n.anchor!=e&&(n=v.range(n.head,n.anchor));let r=O(n);return v.range(n.anchor,r.head,r.goalColumn,r.bidiLevel||void 0,r.assoc)});return i.eq(t.state.selection)?!1:(t.dispatch(YO(t.state,i)),!0)}function Nk(t,e){return pO(t,e,O=>t.moveByChar(O,e))}const Ik=t=>Nk(t,!xt(t)),Dk=t=>Nk(t,xt(t));function Bk(t,e){return pO(t,e,O=>t.moveByGroup(O,e))}const jE=t=>Bk(t,!xt(t)),CE=t=>Bk(t,xt(t)),GE=t=>{let e=!xt(t);return pO(t,e,O=>Cu(t.state,O,e))},EE=t=>{let e=xt(t);return pO(t,e,O=>Cu(t.state,O,e))};function Fk(t,e){return pO(t,e,O=>t.moveVertically(O,e))}const Hk=t=>Fk(t,!1),Kk=t=>Fk(t,!0);function Jk(t,e){return pO(t,e,O=>t.moveVertically(O,e,Ak(t).height))}const ev=t=>Jk(t,!1),tv=t=>Jk(t,!0),AE=t=>pO(t,!0,e=>Sn(t,e,!0)),LE=t=>pO(t,!1,e=>Sn(t,e,!1)),ME=t=>{let e=!xt(t);return pO(t,e,O=>Sn(t,O,e))},NE=t=>{let e=xt(t);return pO(t,e,O=>Sn(t,O,e))},IE=t=>pO(t,!1,e=>v.cursor(t.lineBlockAt(e.head).from)),DE=t=>pO(t,!0,e=>v.cursor(t.lineBlockAt(e.head).to)),Ov=({state:t,dispatch:e})=>(e(YO(t,{anchor:0})),!0),iv=({state:t,dispatch:e})=>(e(YO(t,{anchor:t.doc.length})),!0),nv=({state:t,dispatch:e})=>(e(YO(t,{anchor:t.selection.main.anchor,head:0})),!0),rv=({state:t,dispatch:e})=>(e(YO(t,{anchor:t.selection.main.anchor,head:t.doc.length})),!0),BE=({state:t,dispatch:e})=>(e(t.update({selection:{anchor:0,head:t.doc.length},userEvent:"select"})),!0),FE=({state:t,dispatch:e})=>{let O=Eu(t).map(({from:i,to:n})=>v.undirectionalRange(i,Math.min(n+1,t.doc.length)));return e(t.update({selection:v.create(O),userEvent:"select"})),!0},HE=({state:t,dispatch:e})=>{let O=ga(t.selection,i=>{let n=$e(t),r=n.resolveStack(i.from,1);if(i.empty){let a=n.resolveStack(i.from,-1);a.node.from>=r.node.from&&a.node.to<=r.node.to&&(r=a)}for(let a=r;a;a=a.next){let{node:s}=a;if((s.from=i.to||s.to>i.to&&s.from<=i.from)&&a.next)return v.undirectionalRange(s.from,s.to)}return i});return O.eq(t.selection)?!1:(e(YO(t,O)),!0)};function av(t,e){let{state:O}=t,i=O.selection,n=O.selection.ranges.slice();for(let r of O.selection.ranges){let a=O.doc.lineAt(r.head);if(e?a.to0)for(let s=r;;){let o=t.moveVertically(s,e);if(o.heada.to){n.some(l=>l.head==o.head)||n.push(o);break}else{if(o.head==s.head)break;s=o}}}return n.length==i.ranges.length?!1:(t.dispatch(YO(O,v.create(n,n.length-1))),!0)}const KE=t=>av(t,!1),JE=t=>av(t,!0),e3=({state:t,dispatch:e})=>{let O=t.selection,i=null;return O.ranges.length>1?i=v.create([O.main]):O.main.empty||(i=v.create([v.cursor(O.main.head)])),i?(e(YO(t,i)),!0):!1};function bo(t,e){if(t.state.readOnly)return!1;let O="delete.selection",{state:i}=t,n=i.changeByRange(r=>{let{from:a,to:s}=r;if(a==s){let o=e(r);oa&&(O="delete.forward",o=Gu(t,o,!0)),a=Math.min(a,o),s=Math.max(s,o)}else a=Gu(t,a,!1),s=Gu(t,s,!0);return a==s?{range:r}:{changes:{from:a,to:s},range:v.cursor(a,an(t)))i.between(e,e,(n,r)=>{ne&&(e=O?r:n)});return e}const sv=(t,e,O)=>bo(t,i=>{let n=i.from,{state:r}=t,a=r.doc.lineAt(n),s,o;if(O&&!e&&n>a.from&&nsv(t,!1,!0),ov=t=>sv(t,!0,!1),lv=(t,e)=>bo(t,O=>{let i=O.head,{state:n}=t,r=n.doc.lineAt(i),a=n.charCategorizer(i);for(let s=null;;){if(i==(e?r.to:r.from)){i==O.head&&r.number!=(e?n.doc.lines:1)&&(i+=e?1:-1);break}let o=rt(r.text,i-r.from,e)+r.from,l=r.text.slice(Math.min(i,o)-r.from,Math.max(i,o)-r.from),c=a(l);if(s!=null&&c!=s)break;(l!=" "||i!=O.head)&&(s=c),i=o}return i}),cv=t=>lv(t,!1),t3=t=>lv(t,!0),O3=t=>bo(t,e=>{let O=t.lineBlockAt(e.head).to;return e.headbo(t,e=>{let O=t.moveToLineBoundary(e,!1).head;return e.head>O?O:Math.max(0,e.head-1)}),n3=t=>bo(t,e=>{let O=t.moveToLineBoundary(e,!0).head;return e.head{if(t.readOnly)return!1;let O=t.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:fe.of(["",""])},range:v.cursor(i.from)}));return e(t.update(O,{scrollIntoView:!0,userEvent:"input"})),!0},a3=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let O=t.changeByRange(i=>{if(!i.empty||i.from==0||i.from==t.doc.length)return{range:i};let n=i.from,r=t.doc.lineAt(n),a=n==r.from?n-1:rt(r.text,n-r.from,!1)+r.from,s=n==r.to?n+1:rt(r.text,n-r.from,!0)+r.from;return{changes:{from:a,to:s,insert:t.doc.slice(n,s).append(t.doc.slice(a,n))},range:v.cursor(s)}});return O.changes.empty?!1:(e(t.update(O,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function Eu(t){let e=[],O=-1;for(let i of t.selection.ranges){let n=t.doc.lineAt(i.from),r=t.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=t.doc.lineAt(i.to-1)),O>=n.number){let a=e[e.length-1];a.to=r.to,a.ranges.push(i)}else e.push({from:n.from,to:r.to,ranges:[i]});O=r.number+1}return e}function uv(t,e,O){if(t.readOnly)return!1;let i=[],n=[];for(let r of Eu(t)){if(O?r.to==t.doc.length:r.from==0)continue;let a=t.doc.lineAt(O?r.to+1:r.from-1),s=a.length+1;if(O){i.push({from:r.to,to:a.to},{from:r.from,insert:a.text+t.lineBreak});for(let o of r.ranges)n.push(v.range(Math.min(t.doc.length,o.anchor+s),Math.min(t.doc.length,o.head+s)))}else{i.push({from:a.from,to:r.from},{from:r.to,insert:t.lineBreak+a.text});for(let o of r.ranges)n.push(v.range(o.anchor-s,o.head-s))}}return i.length?(e(t.update({changes:i,scrollIntoView:!0,selection:v.create(n,t.selection.mainIndex),userEvent:"move.line"})),!0):!1}const s3=({state:t,dispatch:e})=>uv(t,e,!1),o3=({state:t,dispatch:e})=>uv(t,e,!0);function dv(t,e,O){if(t.readOnly)return!1;let i=[];for(let r of Eu(t))O?i.push({from:r.from,insert:t.doc.slice(r.from,r.to)+t.lineBreak}):i.push({from:r.to,insert:t.lineBreak+t.doc.slice(r.from,r.to)});let n=t.changes(i);return e(t.update({changes:n,selection:t.selection.map(n,O?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}const l3=({state:t,dispatch:e})=>dv(t,e,!1),c3=({state:t,dispatch:e})=>dv(t,e,!0),u3=t=>{if(t.state.readOnly)return!1;let{state:e}=t,O=e.changes(Eu(e).map(({from:n,to:r})=>(n>0?n--:r{let r;if(t.lineWrapping){let a=t.lineBlockAt(n.head),s=t.coordsAtPos(n.head,n.assoc||1);s&&(r=a.bottom+t.documentTop-s.bottom+t.defaultLineHeight/2)}return t.moveVertically(n,!0,r)}).map(O);return t.dispatch({changes:O,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function d3(t,e){if(/\(\)|\[\]|\{\}/.test(t.sliceDoc(e-1,e+1)))return{from:e,to:e};let O=$e(t).resolveInner(e),i=O.childBefore(e),n=O.childAfter(e),r;return i&&n&&i.to<=e&&n.from>=e&&(r=i.type.prop(K.closedBy))&&r.indexOf(n.name)>-1&&t.doc.lineAt(i.to).from==t.doc.lineAt(n.from).from&&!/\S/.test(t.sliceDoc(i.to,n.from))?{from:i.to,to:n.from}:null}const fv=hv(!1),f3=hv(!0);function hv(t){return({state:e,dispatch:O})=>{if(e.readOnly)return!1;let i=e.changeByRange(n=>{let{from:r,to:a}=n,s=e.doc.lineAt(r),o=!t&&r==a&&d3(e,r);t&&(r=a=(a<=s.to?s:e.doc.lineAt(a)).to);let l=new Nc(e,{simulateBreak:r,simulateDoubleBreak:!!o}),c=VQ(l,r);for(c==null&&(c=TO(/^\s*/.exec(e.doc.lineAt(r).text)[0],e.tabSize));as.from&&r{let n=[];for(let a=i.from;a<=i.to;){let s=t.doc.lineAt(a);s.number>O&&(i.empty||i.to>s.from)&&(e(s,n,i),O=s.number),a=s.to+1}let r=t.changes(n);return{changes:n,range:v.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}const h3=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let O=Object.create(null),i=new Nc(t,{overrideIndentation:r=>{let a=O[r];return a??-1}}),n=Lp(t,(r,a,s)=>{let o=VQ(i,r.from);if(o==null)return;/\S/.test(r.text)||(o=0);let l=/^\s*/.exec(r.text)[0],c=Ds(t,o);(l!=c||s.fromt.readOnly?!1:(e(t.update(Lp(t,(O,i)=>{i.push({from:O.from,insert:t.facet(Is)})}),{userEvent:"input.indent"})),!0),$3=({state:t,dispatch:e})=>t.readOnly?!1:(e(t.update(Lp(t,(O,i)=>{let n=/^\s*/.exec(O.text)[0];if(!n)return;let r=TO(n,t.tabSize),a=0,s=Ds(t,Math.max(0,r-Hn(t)));for(;a(t.setTabFocusMode(),!0),m3=[{key:"Ctrl-b",run:Vk,shift:Ik,preventDefault:!0},{key:"Ctrl-f",run:Wk,shift:Dk},{key:"Ctrl-p",run:Gk,shift:Hk},{key:"Ctrl-n",run:Ek,shift:Kk},{key:"Ctrl-a",run:UE,shift:IE},{key:"Ctrl-e",run:qE,shift:DE},{key:"Ctrl-d",run:ov},{key:"Ctrl-h",run:Ap},{key:"Ctrl-k",run:O3},{key:"Ctrl-Alt-h",run:cv},{key:"Ctrl-o",run:r3},{key:"Ctrl-t",run:a3},{key:"Ctrl-v",run:Ep}],g3=[{key:"ArrowLeft",run:Vk,shift:Ik,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:TE,shift:jE,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:_E,shift:ME,preventDefault:!0},{key:"ArrowRight",run:Wk,shift:Dk,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:kE,shift:CE,preventDefault:!0},{mac:"Cmd-ArrowRight",run:zE,shift:NE,preventDefault:!0},{key:"ArrowUp",run:Gk,shift:Hk,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Ov,shift:nv},{mac:"Ctrl-ArrowUp",run:Mk,shift:ev},{key:"ArrowDown",run:Ek,shift:Kk,preventDefault:!0},{mac:"Cmd-ArrowDown",run:iv,shift:rv},{mac:"Ctrl-ArrowDown",run:Ep,shift:tv},{key:"PageUp",run:Mk,shift:ev},{key:"PageDown",run:Ep,shift:tv},{key:"Home",run:YE,shift:LE,preventDefault:!0},{key:"Mod-Home",run:Ov,shift:nv},{key:"End",run:RE,shift:AE,preventDefault:!0},{key:"Mod-End",run:iv,shift:rv},{key:"Enter",run:fv,shift:fv},{key:"Mod-a",run:BE},{key:"Backspace",run:Ap,shift:Ap,preventDefault:!0},{key:"Delete",run:ov,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:cv,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:t3,preventDefault:!0},{mac:"Mod-Backspace",run:i3,preventDefault:!0},{mac:"Mod-Delete",run:n3,preventDefault:!0}].concat(m3.map(t=>({mac:t.key,run:t.run,shift:t.shift}))),P3=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:bE,shift:GE},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:ZE,shift:EE},{key:"Alt-ArrowUp",run:s3},{key:"Shift-Alt-ArrowUp",run:l3},{key:"Alt-ArrowDown",run:o3},{key:"Shift-Alt-ArrowDown",run:c3},{key:"Mod-Alt-ArrowUp",run:KE},{key:"Mod-Alt-ArrowDown",run:JE},{key:"Escape",run:e3},{key:"Mod-Enter",run:f3},{key:"Alt-l",mac:"Ctrl-l",run:FE},{key:"Mod-i",run:HE,preventDefault:!0},{key:"Mod-[",run:$3},{key:"Mod-]",run:Q3},{key:"Mod-Alt-\\",run:h3},{key:"Shift-Mod-k",run:u3},{key:"Shift-Mod-\\",run:WE},{key:"Mod-/",run:sE},{key:"Alt-A",mac:"Ctrl-A",run:lE},{key:"Ctrl-m",mac:"Shift-Alt-m",run:p3}].concat(g3),Qv=typeof String.prototype.normalize=="function"?t=>t.normalize("NFKD"):t=>t;class Pa{constructor(e,O,i=0,n=e.length,r,a){this.test=a,this.value={from:0,to:0,precise:!1},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(i,n),this.bufferStart=i,this.normalize=r?s=>r(Qv(s)):Qv,this.query=this.normalize(O)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return rn(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let O=QX(e),i=this.bufferStart+this.bufferPos;this.bufferPos+=Ss(e);let n=this.normalize(O);if(n.length)for(let r=0,a=i,s=!0;;r++){let o=n.charCodeAt(r),l=this.match(o,a,s,this.bufferPos+this.bufferStart,r==n.length-1);if(l)return this.value=l,this;if(r==n.length-1)break;s&&rthis.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let O=this.matchPos<=this.to&&this.re.exec(this.curLine);if(O){let i=this.curLineStart+O.index,n=i+O[0].length;if(this.matchPos=Au(this.text,n+(i==n?1:0)),i==this.curLineStart+this.curLine.length&&this.nextLine(),(ithis.value.to)&&(!this.test||this.test(i,n,O)))return this.value={from:i,to:n,precise:!0,match:O},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length=i||n.to<=O){let s=new Sa(O,e.sliceString(O,i));return Np.set(e,s),s}if(n.from==O&&n.to==i)return n;let{text:r,from:a}=n;return a>O&&(r=e.sliceString(O,a)+r,a=O),n.to=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,O=this.re.exec(this.flat.text);if(O&&!O[0]&&O.index==e&&(this.re.lastIndex=e+1,O=this.re.exec(this.flat.text)),O){let i=this.flat.from+O.index,n=i+O[0].length;if((this.flat.to>=this.to||O.index+O[0].length<=this.flat.text.length-10)&&(!this.test||this.test(i,n,O)))return this.value={from:i,to:n,precise:!0,match:O},this.matchPos=Au(this.text,n+(i==n?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=Sa.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}typeof Symbol<"u"&&(pv.prototype[Symbol.iterator]=mv.prototype[Symbol.iterator]=function(){return this});function S3(t){try{return new RegExp(t,Mp),!0}catch{return!1}}function Au(t,e){if(e>=t.length)return e;let O=t.lineAt(e),i;for(;e=56320&&i<57344;)e++;return e}const X3=t=>{let e=A_(t,"cm-goto-line");if(e){let a=e.dom.querySelector("input[type=text]");return a&&a.select(),!0}let{state:O}=t,i=String(O.doc.lineAt(t.state.selection.main.head).number),{close:n,result:r}=E_(t,{class:"cm-goto-line",label:O.phrase("Go to line"),input:{type:"text",name:"line",value:i},focus:!0,submitLabel:O.phrase("go")});return r.then(a=>{let s=a&&/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(a.elements.line.value);if(!s){t.dispatch({effects:n});return}let o=O.doc.lineAt(O.selection.main.head),[,l,c,u,d]=s,h=u?+u.slice(1):0,Q=c?+c:o.number;if(c&&d){let p=Q/100;l&&(p=p*(l=="-"?-1:1)+o.number/O.doc.lines),Q=Math.round(O.doc.lines*p)}else c&&l&&(Q=Q*(l=="-"?-1:1)+o.number);let $=O.doc.line(Math.max(1,Math.min(O.doc.lines,Q))),P=v.cursor($.from+Math.max(0,Math.min(h,$.length)));t.dispatch({effects:[n,L.scrollIntoView(P.from,{y:"center"})],selection:P})}),!0},x3={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},y3=N.define({combine(t){return on(t,x3,{highlightWordAroundCursor:(e,O)=>e||O,minSelectionLength:Math.min,maxMatches:Math.min})}});function w3(t){return[Z3,b3]}const T3=J.mark({class:"cm-selectionMatch"}),k3=J.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function gv(t,e,O,i){return(O==0||t(e.sliceDoc(O-1,O))!=ve.Word)&&(i==e.doc.length||t(e.sliceDoc(i,i+1))!=ve.Word)}function v3(t,e,O,i){return t(e.sliceDoc(O,O+1))==ve.Word&&t(e.sliceDoc(i-1,i))==ve.Word}const b3=st.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.selectionSet||t.docChanged||t.viewportChanged)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=t.state.facet(y3),{state:O}=t,i=O.selection;if(i.ranges.length>1)return J.none;let n=i.main,r,a=null;if(n.empty){if(!e.highlightWordAroundCursor)return J.none;let o=O.wordAt(n.head);if(!o)return J.none;a=O.charCategorizer(n.head),r=O.sliceDoc(o.from,o.to)}else{let o=n.to-n.from;if(o200)return J.none;if(e.wholeWords){if(r=O.sliceDoc(n.from,n.to),a=O.charCategorizer(n.head),!(gv(a,O,n.from,n.to)&&v3(a,O,n.from,n.to)))return J.none}else if(r=O.sliceDoc(n.from,n.to),!r)return J.none}let s=[];for(let o of t.visibleRanges){let l=new Pa(O.doc,r,o.from,o.to);for(;!l.next().done;){let{from:c,to:u}=l.value;if((!a||gv(a,O,c,u))&&(n.empty&&c<=n.from&&u>=n.to?s.push(k3.range(c,u)):(c>=n.to||u<=n.from)&&s.push(T3.range(c,u)),s.length>e.maxMatches))return J.none}}return J.set(s)}},{decorations:t=>t.decorations}),Z3=L.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),R3=({state:t,dispatch:e})=>{let{selection:O}=t,i=v.create(O.ranges.map(n=>t.wordAt(n.head)||v.cursor(n.head)),O.mainIndex);return i.eq(O)?!1:(e(t.update({selection:i})),!0)};function Y3(t,e){let{main:O,ranges:i}=t.selection,n=t.wordAt(O.head),r=n&&n.from==O.from&&n.to==O.to;for(let a=!1,s=new Pa(t.doc,e,i[i.length-1].to);;)if(s.next(),s.done){if(a)return null;s=new Pa(t.doc,e,0,Math.max(0,i[i.length-1].from-1)),a=!0}else{if(a&&i.some(o=>o.from==s.value.from))continue;if(r){let o=t.wordAt(s.value.from);if(!o||o.from!=s.value.from||o.to!=s.value.to)continue}return s.value}}const _3=({state:t,dispatch:e})=>{let{ranges:O}=t.selection;if(O.some(r=>r.from===r.to))return R3({state:t,dispatch:e});let i=t.sliceDoc(O[0].from,O[0].to);if(t.selection.ranges.some(r=>t.sliceDoc(r.from,r.to)!=i))return!1;let n=Y3(t,i);return n?(e(t.update({selection:t.selection.addRange(v.range(n.from,n.to),!1),effects:L.scrollIntoView(n.to)})),!0):!1},Xa=N.define({combine(t){return on(t,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new I3(e),scrollToMatch:e=>L.scrollIntoView(e)})}});class Pv{constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||S3(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord,this.test=e.test}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(O,i)=>i=="n"?` `:i=="r"?"\r":i=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord&&this.test==e.test}create(){return this.regexp?new j3(this):new q3(this)}getCursor(e,O=0,i){let n=e.doc?e:le.create({doc:e});return i==null&&(i=n.doc.length),this.regexp?ya(this,n,O,i):xa(this,n,O,i)}}class Sv{constructor(e){this.spec=e}}function z3(t,e,O){return(i,n,r,a)=>{if(O&&!O(i,n,r,a))return!1;let s=i>=a&&n<=a+r.length?r.slice(i-a,n-a):e.doc.sliceString(i,n);return t(s,e,i,n)}}function xa(t,e,O,i){let n;return t.wholeWord&&(n=U3(e.doc,e.charCategorizer(e.selection.main.head))),t.test&&(n=z3(t.test,e,n)),new Pa(e.doc,t.unquoted,O,i,t.caseSensitive?void 0:r=>r.toLowerCase(),n)}function U3(t,e){return(O,i,n,r)=>((r>O||r+n.length=O)return null;n.push(i.value)}return n}highlight(e,O,i,n){let r=xa(this.spec,e,Math.max(0,O-this.spec.unquoted.length),Math.min(i+this.spec.unquoted.length,e.doc.length));for(;!r.next().done;)n(r.value.from,r.value.to)}}function V3(t,e,O){return(i,n,r)=>(!O||O(i,n,r))&&t(r[0],e,i,n)}function ya(t,e,O,i){let n;return t.wholeWord&&(n=W3(e.charCategorizer(e.selection.main.head))),t.test&&(n=V3(t.test,e,n)),new pv(e.doc,t.search,{ignoreCase:!t.caseSensitive,test:n},O,i)}function Lu(t,e){return t.slice(rt(t,e,!1),e)}function Mu(t,e){return t.slice(e,rt(t,e))}function W3(t){return(e,O,i)=>!i[0].length||(t(Lu(i.input,i.index))!=ve.Word||t(Mu(i.input,i.index))!=ve.Word)&&(t(Mu(i.input,i.index+i[0].length))!=ve.Word||t(Lu(i.input,i.index+i[0].length))!=ve.Word)}class j3 extends Sv{nextMatch(e,O,i){let n=ya(this.spec,e,i,e.doc.length).next();return n.done&&(n=ya(this.spec,e,0,O).next()),n.done?null:n.value}prevMatchInRange(e,O,i){for(let n=1;;n++){let r=Math.max(O,i-n*1e4),a=ya(this.spec,e,r,i),s=null;for(;!a.next().done;)s=a.value;if(s&&(r==O||s.from>r+10))return s;if(r==O)return null}}prevMatch(e,O,i){return this.prevMatchInRange(e,0,O)||this.prevMatchInRange(e,i,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(O,i)=>{if(i=="&")return e.match[0];if(i=="$")return"$";for(let n=i.length;n>0;n--){let r=+i.slice(0,n);if(r>0&&r=O)return null;n.push(i.value)}return n}highlight(e,O,i,n){let r=ya(this.spec,e,Math.max(0,O-250),Math.min(i+250,e.doc.length));for(;!r.next().done;)n(r.value.from,r.value.to)}}const Zo=ue.define(),Ip=ue.define(),Xn=Wt.define({create(t){return new Dp(Fp(t).create(),null)},update(t,e){for(let O of e.effects)O.is(Zo)?t=new Dp(O.value.create(),t.panel):O.is(Ip)&&(t=new Dp(t.query,O.value?Bp:null));return t},provide:t=>Wc.from(t,e=>e.panel)});class Dp{constructor(e,O){this.query=e,this.panel=O}}const C3=J.mark({class:"cm-searchMatch"}),G3=J.mark({class:"cm-searchMatch cm-searchMatch-selected"}),E3=st.fromClass(class{constructor(t){this.view=t,this.decorations=this.highlight(t.state.field(Xn))}update(t){let e=t.state.field(Xn);(e!=t.startState.field(Xn)||t.docChanged||t.selectionSet||t.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:t,panel:e}){if(!e||!t.spec.valid)return J.none;let{view:O}=this,i=new $i;for(let n=0,r=O.visibleRanges,a=r.length;nr[n+1].from-2*250;)o=r[++n].to;t.highlight(O.state,s,o,(l,c)=>{let u=O.state.selection.ranges.some(d=>d.from==l&&d.to==c);i.add(l,c,u?G3:C3)})}return i.finish()}},{decorations:t=>t.decorations});function Ro(t){return e=>{let O=e.state.field(Xn,!1);return O&&O.query.spec.valid?t(e,O):wv(e)}}const Nu=Ro((t,{query:e})=>{let{to:O}=t.state.selection.main,i=e.nextMatch(t.state,O,O);if(!i)return!1;let n=v.single(i.from,i.to),r=t.state.facet(Xa);return t.dispatch({selection:n,effects:[Hp(t,i),r.scrollToMatch(n.main,t)],userEvent:"select.search"}),yv(t),!0}),Iu=Ro((t,{query:e})=>{let{state:O}=t,{from:i}=O.selection.main,n=e.prevMatch(O,i,i);if(!n)return!1;let r=v.single(n.from,n.to),a=t.state.facet(Xa);return t.dispatch({selection:r,effects:[Hp(t,n),a.scrollToMatch(r.main,t)],userEvent:"select.search"}),yv(t),!0}),A3=Ro((t,{query:e})=>{let O=e.matchAll(t.state,1e3);return!O||!O.length?!1:(t.dispatch({selection:v.create(O.map(i=>v.range(i.from,i.to))),userEvent:"select.search.matches"}),!0)}),L3=({state:t,dispatch:e})=>{let O=t.selection;if(O.ranges.length>1||O.main.empty)return!1;let{from:i,to:n}=O.main,r=[],a=0;for(let s=new Pa(t.doc,t.sliceDoc(i,n));!s.next().done;){if(r.length>1e3)return!1;s.value.from==i&&(a=r.length),r.push(v.range(s.value.from,s.value.to))}return e(t.update({selection:v.create(r,a),userEvent:"select.search.matches"})),!0},Xv=Ro((t,{query:e})=>{let{state:O}=t,{from:i,to:n}=O.selection.main;if(O.readOnly)return!1;let r=e.nextMatch(O,i,i);if(!r)return!1;let a=r,s=[],o,l,c=[];a.precise?a.from==i&&a.to==n&&(l=O.toText(e.getReplacement(a)),s.push({from:a.from,to:a.to,insert:l}),a=e.nextMatch(O,a.from,a.to),c.push(L.announce.of(O.phrase("replaced match on line $",O.doc.lineAt(i).number)+"."))):a=e.nextMatch(O,a.from,a.to);let u=t.state.changes(s);return a&&(o=v.single(a.from,a.to).map(u),c.push(Hp(t,a)),c.push(O.facet(Xa).scrollToMatch(o.main,t))),t.dispatch({changes:u,selection:o,effects:c,userEvent:"input.replace"}),!0}),M3=Ro((t,{query:e})=>{if(t.state.readOnly)return!1;let O=[];for(let n of e.matchAll(t.state,1e9)){let{from:r,to:a,precise:s}=n;s&&O.push({from:r,to:a,insert:e.getReplacement(n)})}if(!O.length)return!1;let i=t.state.phrase("replaced $ matches",O.length)+".";return t.dispatch({changes:O,effects:L.announce.of(i),userEvent:"input.replace.all"}),!0});function Bp(t){return t.state.facet(Xa).createPanel(t)}function Fp(t,e){var O,i,n,r,a;let s=t.selection.main,o=s.empty||s.to>s.from+100?"":t.sliceDoc(s.from,s.to);if(e&&!o)return e;let l=t.facet(Xa);return new Pv({search:((O=e?.literal)!==null&&O!==void 0?O:l.literal)?o:o.replace(/\n/g,"\\n"),caseSensitive:(i=e?.caseSensitive)!==null&&i!==void 0?i:l.caseSensitive,literal:(n=e?.literal)!==null&&n!==void 0?n:l.literal,regexp:(r=e?.regexp)!==null&&r!==void 0?r:l.regexp,wholeWord:(a=e?.wholeWord)!==null&&a!==void 0?a:l.wholeWord})}function xv(t){let e=vQ(t,Bp);return e&&e.dom.querySelector("[main-field]")}function yv(t){let e=xv(t);e&&e==t.root.activeElement&&e.select()}const wv=t=>{let e=t.state.field(Xn,!1);if(e&&e.panel){let O=xv(t);if(O&&O!=t.root.activeElement){let i=Fp(t.state,e.query.spec);i.valid&&t.dispatch({effects:Zo.of(i)}),O.focus(),O.select()}}else t.dispatch({effects:[Ip.of(!0),e?Zo.of(Fp(t.state,e.query.spec)):ue.appendConfig.of(B3)]});return!0},Tv=t=>{let e=t.state.field(Xn,!1);if(!e||!e.panel)return!1;let O=vQ(t,Bp);return O&&O.dom.contains(t.root.activeElement)&&t.focus(),t.dispatch({effects:Ip.of(!1)}),!0},N3=[{key:"Mod-f",run:wv,scope:"editor search-panel"},{key:"F3",run:Nu,shift:Iu,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:Nu,shift:Iu,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:Tv,scope:"editor search-panel"},{key:"Mod-Shift-l",run:L3},{key:"Mod-Alt-g",run:X3},{key:"Mod-d",run:_3,preventDefault:!0}];class I3{constructor(e){this.view=e;let O=this.query=e.state.field(Xn).query.spec;this.commit=this.commit.bind(this),this.searchField=at("input",{value:O.search,placeholder:tO(e,"Find"),"aria-label":tO(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=at("input",{value:O.replace,placeholder:tO(e,"Replace"),"aria-label":tO(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=at("input",{type:"checkbox",name:"case",form:"",checked:O.caseSensitive,onchange:this.commit}),this.reField=at("input",{type:"checkbox",name:"re",form:"",checked:O.regexp,onchange:this.commit}),this.wordField=at("input",{type:"checkbox",name:"word",form:"",checked:O.wholeWord,onchange:this.commit});function i(n,r,a){return at("button",{class:"cm-button",name:n,onclick:r,type:"button"},a)}this.dom=at("div",{onkeydown:n=>this.keydown(n),class:"cm-search"},[this.searchField,i("next",()=>Nu(e),[tO(e,"next")]),i("prev",()=>Iu(e),[tO(e,"previous")]),i("select",()=>A3(e),[tO(e,"all")]),at("label",null,[this.caseField,tO(e,"match case")]),at("label",null,[this.reField,tO(e,"regexp")]),at("label",null,[this.wordField,tO(e,"by word")]),...e.state.readOnly?[]:[at("br"),this.replaceField,i("replace",()=>Xv(e),[tO(e,"replace")]),i("replaceAll",()=>M3(e),[tO(e,"replace all")])],at("button",{name:"close",onclick:()=>Tv(e),"aria-label":tO(e,"close"),type:"button"},["×"])])}commit(){let e=new Pv({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:Zo.of(e)}))}keydown(e){o_(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?Iu:Nu)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),Xv(this.view))}update(e){for(let O of e.transactions)for(let i of O.effects)i.is(Zo)&&!i.value.eq(this.query)&&this.setQuery(i.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(Xa).top}}function tO(t,e){return t.state.phrase(e)}const Du=30,Bu=/[\s\.,:;?!]/;function Hp(t,{from:e,to:O}){let i=t.state.doc.lineAt(e),n=t.state.doc.lineAt(O).to,r=Math.max(i.from,e-Du),a=Math.min(n,O+Du),s=t.state.sliceDoc(r,a);if(r!=i.from){for(let o=0;os.length-Du;o--)if(!Bu.test(s[o-1])&&Bu.test(s[o])){s=s.slice(0,o);break}}return L.announce.of(`${t.state.phrase("current match")}. ${s} ${t.state.phrase("on line")} ${i.number}.`)}const D3=L.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),B3=[Xn,Gn.low(E3),D3],kv=[{tag:[f.heading,f.heading1,f.heading2,f.heading3],fontWeight:"600"},{tag:[f.emphasis],fontStyle:"italic"},{tag:[f.strong],fontWeight:"600"},{tag:[f.strikethrough],textDecoration:"line-through"},{tag:[f.link,f.url],textDecoration:"underline"}],F3=Fs.define([{tag:[f.comment,f.blockComment,f.lineComment],color:"#7f848e",fontStyle:"italic"},{tag:[f.keyword,f.moduleKeyword,f.controlKeyword],color:"#c678dd"},{tag:[f.string,f.special(f.string)],color:"#98c379"},{tag:[f.number,f.bool,f.null],color:"#d19a66"},{tag:[f.variableName,f.propertyName],color:"#e06c75"},{tag:[f.typeName,f.className,f.namespace],color:"#e5c07b"},{tag:[f.function(f.variableName),f.function(f.propertyName)],color:"#61afef"},{tag:[f.definition(f.variableName),f.definition(f.propertyName)],color:"#e06c75"},{tag:[f.tagName],color:"#e06c75"},{tag:[f.attributeName],color:"#d19a66"},{tag:[f.operator,f.punctuation,f.bracket],color:"#abb2bf"},{tag:[f.heading,f.heading1,f.heading2,f.heading3],color:"#61afef"},{tag:[f.link,f.url],color:"#56b6c2"},{tag:[f.meta],color:"#7f848e"},{tag:[f.invalid],color:"#ff6764"},...kv]),H3=Fs.define([{tag:[f.comment,f.blockComment,f.lineComment],color:"#a0a1a7",fontStyle:"italic"},{tag:[f.keyword,f.moduleKeyword,f.controlKeyword],color:"#a626a4"},{tag:[f.string,f.special(f.string)],color:"#50a14f"},{tag:[f.number,f.bool,f.null],color:"#986801"},{tag:[f.variableName,f.propertyName],color:"#e45649"},{tag:[f.typeName,f.className,f.namespace],color:"#c18401"},{tag:[f.function(f.variableName),f.function(f.propertyName)],color:"#4078f2"},{tag:[f.definition(f.variableName),f.definition(f.propertyName)],color:"#e45649"},{tag:[f.tagName],color:"#e45649"},{tag:[f.attributeName],color:"#986801"},{tag:[f.operator,f.punctuation,f.bracket],color:"#383a42"},{tag:[f.heading,f.heading1,f.heading2,f.heading3],color:"#4078f2"},{tag:[f.link,f.url],color:"#0184bc"},{tag:[f.meta],color:"#a0a1a7"},{tag:[f.invalid],color:"#e02e2a"},...kv]),vv=t=>t==="light"?H3:F3,bv=t=>_z(vv(t),{fallback:!0});async function K3(t,e,O){const i=e.fileName?wk(e.fileName):e.language?A6(e.language):null;if(!i)return[];const n=await i.load(),r=le.create({doc:t,extensions:[n]}),a=[];return Zx($e(r),vv(O),(s,o,l)=>{a.push({from:s,to:o,classes:l})}),a}function J3(t,e){if(e.length===0)return[t];const O=[];let i=0;return e.forEach((n,r)=>{n.from>i&&O.push(t.slice(i,n.from)),O.push(y.createElement("span",{key:`${n.from}-${r}`,className:n.classes},t.slice(n.from,n.to))),i=n.to}),i(e.onSave(),!0)}]),L.updateListener.of(a=>{a.docChanged&&!i&&e.onDocChanged()})]})}),r=a=>{n.dispatch({effects:Rv.reconfigure(a?[le.readOnly.of(!0),L.editable.of(!1)]:[])})};return{view:n,text:()=>n.state.doc.toString(),setBase(a){n.dispatch({effects:Zv.reconfigure(bv(a))})},setReadOnly:r,setDocument(a,s,o){O+=1;const l=O;i=!0;try{n.dispatch({changes:{from:0,to:n.state.doc.length,insert:a},selection:{anchor:0}})}finally{i=!1}n.scrollDOM.scrollTop=0,r(o);const c=wk(s);if(!c){n.dispatch({effects:Kp.reconfigure([])});return}c.load().then(u=>{l===O&&n.dispatch({effects:Kp.reconfigure(u)})})}}}const O9=/^(?:https?:|mailto:)/i,i9=/^(?:javascript|data|vbscript|file|blob):/i;function n9(t){const e=t.trim();return!e||i9.test(e)||!/^[a-z][a-z0-9+.-]*:/i.test(e)?!1:O9.test(e)}const r9=["(`+)([\\s\\S]*?)\\1",'!\\[([^\\]]*)\\]\\(([^)\\s]+)(?:\\s+"[^"]*")?\\)','\\[([^\\]]*)\\]\\(([^)\\s]+)(?:\\s+"[^"]*")?\\)',"<((?:https?|mailto):[^>\\s]+)>","\\*\\*([\\s\\S]+?)\\*\\*","__([\\s\\S]+?)__","~~([\\s\\S]+?)~~","(?new RegExp(r9,"g");function Yi(t,e){const O=[],i=a9();let n=0,r=0,a;for(;(a=i.exec(t))!==null;){a.index>n&&O.push(t.slice(n,a.index));const s=`${e.keyPrefix}-i${r++}`,[,o,l,c,u,d,h,Q,$,P,p,g,S]=a;o!==void 0?O.push(y.createElement("code",{key:s,className:"md-inline-code"},l)):u!==void 0?O.push(y.createElement("span",{key:s,className:"md-image",title:u},`🖼 ${c||u}`)):h!==void 0?O.push(Yv(h,Yi(d??"",{...e,keyPrefix:s}),s,e)):Q!==void 0?O.push(Yv(Q,Q,s,e)):$!==void 0||P!==void 0?O.push(y.createElement("strong",{key:s},...Yi($??P??"",{...e,keyPrefix:s}))):p!==void 0?O.push(y.createElement("del",{key:s},...Yi(p,{...e,keyPrefix:s}))):(g!==void 0||S!==void 0)&&O.push(y.createElement("em",{key:s},...Yi(g??S??"",{...e,keyPrefix:s}))),n=a.index+a[0].length}return n{r.preventDefault(),i.onLink(t)},onKeyDown:r=>{(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),i.onLink(t))}},...Array.isArray(e)?e:[e])}function s9({code:t,language:e,base:O}){const[i,n]=y.useState(null);return y.useEffect(()=>{let r=!1;const a=t.replace(/\n$/,"");if(!e){n([a]);return}return K3(a,{language:e},O).then(s=>{r||n(s.length?J3(a,s):[a])}).catch(()=>{r||n([a])}),()=>{r=!0}},[t,e,O]),y.createElement("pre",{className:"md-code"},y.createElement("code",null,...i??[t.replace(/\n$/,"")]))}const _v=/^(#{1,6})\s+(.*)$/,zv=/^(```+|~~~+)\s*([^`\s]*)\s*$/,Uv=/^(?: {0,3})([-*_])(?:\s*\1){2,}\s*$/,Fu=/^ {0,3}>\s?(.*)$/,wa=/^(\s*)([-*+])\s+(.*)$/,or=/^(\s*)(\d{1,9})[.)]\s+(.*)$/,o9=/^\[([ xX])\]\s+(.*)$/,l9=/^\s*\|?\s*:?-{1,}:?\s*(\|\s*:?-{1,}:?\s*)*\|?\s*$/;function Jp(t){return t.trim().replace(/^\|/,"").replace(/\|$/,"").split("|").map(O=>O.trim())}function em(t){const e=[];let O=0;for(;O0&&t[O].trim());){const o=Fu.exec(t[O]);s.push(o?o[1]:t[O]),O+=1}e.push({kind:"quote",lines:s});continue}if(wa.test(i)||or.test(i)){const s=or.test(i),o=[];let l=[],c=null;const u=()=>{l.length!==0&&(o.push({text:l[0],task:c,children:em(l.slice(1))}),l=[],c=null)},d=(wa.exec(i)??or.exec(i))[1].length;for(;O{const u=c.startsWith(":"),d=c.endsWith(":");return u&&d?"center":d?"right":u?"left":null});O+=2;const l=[];for(;O{const r=`${e.keyPrefix}-b${n}`;switch(i.kind){case"heading":return y.createElement(`h${Math.min(i.level,6)}`,{key:r,className:`md-h${Math.min(i.level,6)}`},...Yi(i.text,{...e,keyPrefix:r}));case"code":return y.createElement(s9,{key:r,code:i.code,language:i.language,base:O});case"hr":return y.createElement("hr",{key:r,className:"md-hr"});case"quote":return y.createElement("blockquote",{key:r,className:"md-quote"},...tm(em(i.lines),{...e,keyPrefix:r},O));case"list":{const a=i.items.map((s,o)=>{const l=`${r}-it${o}`,c=[];return s.task!==null&&c.push(y.createElement("input",{key:`${l}-cb`,type:"checkbox",checked:s.task,readOnly:!0,tabIndex:-1,className:"md-task"})),c.push(y.createElement("span",{key:`${l}-tx`},...Yi(s.text,{...e,keyPrefix:l}))),s.children.length&&c.push(...tm(s.children,{...e,keyPrefix:l},O)),y.createElement("li",{key:l,className:s.task!==null?"md-li md-li-task":"md-li"},...c)});return y.createElement(i.ordered?"ol":"ul",{key:r,className:"md-list"},...a)}case"table":return y.createElement("div",{key:r,className:"md-table-wrap"},y.createElement("table",{className:"md-table"},y.createElement("thead",null,y.createElement("tr",null,...i.head.map((a,s)=>y.createElement("th",{key:`${r}-h${s}`,style:i.align[s]?{textAlign:i.align[s]}:void 0},...Yi(a,{...e,keyPrefix:`${r}-h${s}`}))))),y.createElement("tbody",null,...i.rows.map((a,s)=>y.createElement("tr",{key:`${r}-r${s}`},...i.head.map((o,l)=>y.createElement("td",{key:`${r}-r${s}c${l}`,style:i.align[l]?{textAlign:i.align[l]}:void 0},...Yi(a[l]??"",{...e,keyPrefix:`${r}-r${s}c${l}`}))))))));case"para":default:return y.createElement("p",{key:r,className:"md-p"},...Yi(i.lines.join(` `),{...e,keyPrefix:r}))}})}function c9({text:t,base:e,onLink:O}){const i=em(t.replace(/\r\n?/g,` diff --git a/apps/desktop/src/features/chat/composer/hooks/useComposerAttachments.ts b/apps/desktop/src/features/chat/composer/hooks/useComposerAttachments.ts index f0afce4a7..98f85aea3 100644 --- a/apps/desktop/src/features/chat/composer/hooks/useComposerAttachments.ts +++ b/apps/desktop/src/features/chat/composer/hooks/useComposerAttachments.ts @@ -1,4 +1,6 @@ import { + useCallback, + useEffect, useState, useRef, type ClipboardEvent, @@ -14,8 +16,12 @@ import { } from "../../../../lib/composer-draft-cache"; import { composerDropItems, + composerWorkspaceFileDrop, + createComposerWorkspaceDropDeduper, hasComposerFileDrag, + parseComposerWorkspaceFileDrop, type ComposerDropItem, + type ComposerWorkspaceFileDrop, } from "../../../../lib/composer-drop"; import type { ComposerDraftSnapshot } from "../../../../lib/composer-smart-stop"; import { @@ -81,6 +87,7 @@ export function useComposerAttachments({ }: UseComposerAttachmentsOptions): ComposerAttachmentsController { const [pasting, setPasting] = useState(false); const pickerInFlight = useRef(false); + const acceptWorkspaceDrop = useRef(createComposerWorkspaceDropDeduper()); const [dropTargetActive, setDropTargetActive] = useState(false); const [droppedDirectories, setDroppedDirectories] = useState([]); const isInputBlocked = inputBlocked || pasting; @@ -88,6 +95,59 @@ export function useComposerAttachments({ const snapshotReferences = (sourceSessionId: string) => draft.snapshotReferences(sourceSessionId); + const attachWorkspaceFile = useCallback( + (workspaceFile: ComposerWorkspaceFileDrop) => { + if (!acceptWorkspaceDrop.current(workspaceFile)) return; + const editor = draft.ref.current; + const sourceValue = editor ? readEditorValue(editor) : draft.valueRef.current; + const { start: selectionStart, end: selectionEnd } = editor + ? editorSelectionRange(editor) + : { start: sourceValue.length, end: sourceValue.length }; + const token = nextChipToken(); + const sessionId = activeSessionId ?? ""; + const reference = createFileReference(workspaceFile.path, workspaceFile.name, sessionId, { + token, + }); + const previousReferences = draft.snapshotReferences(sessionId); + const nextText = + sourceValue.slice(0, selectionStart) + token + sourceValue.slice(selectionEnd); + const nextReferences = [ + ...previousReferences.map((item) => + createFileReference(item.path, item.name, sessionId, item), + ), + reference, + ]; + writeComposerDraft(draftKey, { + text: nextText, + fileReferences: [...previousReferences, toDraftReference(reference)], + }); + draft.applyEditorDraft(nextText, nextReferences, selectionStart + token.length); + showToast(t, "chat.filesAttached", { count: 1 }, "success"); + }, + [activeSessionId, draft, draftKey, t], + ); + + useEffect( + () => + api.onPluginComposerFileDrop(({ data, clientX, clientY }) => { + if (isInputBlocked || !Number.isFinite(clientX) || !Number.isFinite(clientY)) return; + const shell = draft.ref.current?.closest(".composer-shell"); + if (!shell) return; + const bounds = shell.getBoundingClientRect(); + if ( + clientX < bounds.left || + clientX > bounds.right || + clientY < bounds.top || + clientY > bounds.bottom + ) { + return; + } + const workspaceFile = parseComposerWorkspaceFileDrop(data); + if (workspaceFile) attachWorkspaceFile(workspaceFile); + }), + [attachWorkspaceFile, draft.ref, isInputBlocked], + ); + const pickAndAttach = async () => { // The ref closes the gap before React re-renders the disabled button. if (pickerInFlight.current || isInputBlocked) return; @@ -401,6 +461,11 @@ export function useComposerAttachments({ event.preventDefault(); setDropTargetActive(false); if (isInputBlocked) return; + const workspaceFile = composerWorkspaceFileDrop(event.dataTransfer); + if (workspaceFile) { + attachWorkspaceFile(workspaceFile); + return; + } const items = composerDropItems(event.dataTransfer, api.getDroppedFilePath); const directories = items.filter((item) => item.isDirectory); const files = items.filter((item) => !item.isDirectory); diff --git a/apps/desktop/src/lib/api.ts b/apps/desktop/src/lib/api.ts index 3ef5e7f7b..5191ef4d0 100644 --- a/apps/desktop/src/lib/api.ts +++ b/apps/desktop/src/lib/api.ts @@ -1441,6 +1441,14 @@ export const api = { ), ); }, + onPluginComposerFileDrop: ( + listener: (event: { data: string; clientX: number; clientY: number }) => void, + ) => { + if (!window.piDesktop?.on) return () => undefined; + return window.piDesktop.on(IPC.event.pluginComposerFileDrop, (payload) => + listener(payload as { data: string; clientX: number; clientY: number }), + ); + }, onNotificationActivated: ( listener: (event: { id: string; sessionId: string }) => void, ) => { diff --git a/apps/desktop/src/lib/composer-drop.ts b/apps/desktop/src/lib/composer-drop.ts index 0605455c3..552ceb9e9 100644 --- a/apps/desktop/src/lib/composer-drop.ts +++ b/apps/desktop/src/lib/composer-drop.ts @@ -9,6 +9,27 @@ export type ComposerDropItem = { isDirectory: boolean; }; +export type ComposerWorkspaceFileDrop = { + path: string; + name: string; +}; + +/** Suppress the direct drop and forwarded drag-end copies of one gesture. */ +export function createComposerWorkspaceDropDeduper(windowMs = 500) { + let lastKey = ""; + let lastReceivedAt = Number.NEGATIVE_INFINITY; + return (drop: ComposerWorkspaceFileDrop, receivedAt = Date.now()): boolean => { + const key = `${drop.path}\0${drop.name}`; + if (key === lastKey && receivedAt - lastReceivedAt < windowMs) return false; + lastKey = key; + lastReceivedAt = receivedAt; + return true; + }; +} + +export const COMPOSER_WORKSPACE_FILE_MIME = + "application/x-pi-desktop-workspace-file"; + type DataTransferItemWithEntry = DataTransferItem & { webkitGetAsEntry?: () => FileSystemEntry | null; }; @@ -21,11 +42,43 @@ function isDirectoryItem(item: DataTransferItemWithEntry, file: File): boolean { /** True when the data transfer contains native files or directories. */ export function hasComposerFileDrag(data: DataTransfer): boolean { return ( + Array.from(data.types ?? []).includes(COMPOSER_WORKSPACE_FILE_MIME) || data.files.length > 0 || Array.from(data.items).some((item) => item.kind === "file") ); } +/** Parse and validate the private file-tree drag payload. */ +export function parseComposerWorkspaceFileDrop( + raw: string, +): ComposerWorkspaceFileDrop | null { + try { + const value = JSON.parse(raw) as { path?: unknown; name?: unknown }; + if (typeof value.path !== "string" || typeof value.name !== "string") return null; + const path = value.path.trim().replace(/\\/g, "/"); + const name = value.name.trim(); + if ( + !path || + !name || + path.startsWith("/") || + /^[A-Za-z]:\//.test(path) || + path.split("/").some((part) => part === "..") + ) { + return null; + } + return { path, name }; + } catch { + return null; + } +} + +export function composerWorkspaceFileDrop( + data: DataTransfer, +): ComposerWorkspaceFileDrop | null { + if (!Array.from(data.types ?? []).includes(COMPOSER_WORKSPACE_FILE_MIME)) return null; + return parseComposerWorkspaceFileDrop(data.getData(COMPOSER_WORKSPACE_FILE_MIME)); +} + /** * Return real dropped items in OS order. Electron's preload resolves the * source path; ordinary files can still be saved from their bytes when a diff --git a/apps/desktop/test/composer-drag-drop.test.mjs b/apps/desktop/test/composer-drag-drop.test.mjs index 727f2ef2e..9ba37a8c3 100644 --- a/apps/desktop/test/composer-drag-drop.test.mjs +++ b/apps/desktop/test/composer-drag-drop.test.mjs @@ -3,18 +3,36 @@ import assert from "node:assert/strict"; import { readFile } from "node:fs/promises"; import test from "node:test"; import { + COMPOSER_WORKSPACE_FILE_MIME, composerDropItems, + composerWorkspaceFileDrop, + createComposerWorkspaceDropDeduper, hasComposerFileDrag, + parseComposerWorkspaceFileDrop, } from "../src/lib/composer-drop.ts"; const read = (path) => readFile(new URL(path, import.meta.url), "utf8"); -const [composer, api, preload, styles] = await Promise.all([ - readComposerSource(), - read("../src/lib/api.ts"), - read("../electron/preload/index.ts"), - read("../src/styles/composer.css"), -]); +const [ + composer, + api, + preload, + panelPreload, + panelHost, + pluginServices, + styles, + fileManagerView, +] = + await Promise.all([ + readComposerSource(), + read("../src/lib/api.ts"), + read("../electron/preload/index.ts"), + read("../electron/preload/plugin-panel.ts"), + read("../electron/main/plugin-panel-host.ts"), + read("../electron/main/services/plugin-services.ts"), + read("../src/styles/composer.css"), + read("../resources/plugins/pi.file-manager/views/assets/index.js"), + ]); function droppedFile(name, type = "text/plain") { return { name, type }; @@ -84,3 +102,65 @@ test("Composer handles native drops through the existing file bridge", () => { assert.match(styles, /\.composer-shell\.is-drop-target\s*\{[\s\S]*?outline:/); assert.match(styles, /outline-offset: 3px/); }); + +test("workspace file-tree drags become relative Composer file references", () => { + const values = new Map(); + const data = { + effectAllowed: "all", + files: [], + items: [], + get types() { + return [...values.keys()]; + }, + setData(type, value) { + values.set(type, value); + }, + getData(type) { + return values.get(type) ?? ""; + }, + }; + data.effectAllowed = "copy"; + data.setData( + COMPOSER_WORKSPACE_FILE_MIME, + JSON.stringify({ path: "src/App.tsx", name: "App.tsx" }), + ); + + assert.equal(hasComposerFileDrag(data), true); + assert.deepEqual(composerWorkspaceFileDrop(data), { + path: "src/App.tsx", + name: "App.tsx", + }); + assert.equal(COMPOSER_WORKSPACE_FILE_MIME, "application/x-pi-desktop-workspace-file"); + assert.match(fileManagerView, /draggable:!([\w$]+)\.isDirectory&&!\1\.isSymlink/); + assert.match(fileManagerView, /application\/x-pi-desktop-workspace-file/); + assert.match(fileManagerView, /effectAllowed="copy"/); + assert.match(panelPreload, /event\.isTrusted/); + assert.match(panelPreload, /pi-plugin-panel-composer-file-drop/); + assert.match(panelHost, /screenX/); + assert.match(panelHost, /screenY/); + assert.match(pluginServices, /IPC\.event\.pluginComposerFileDrop/); + assert.match(api, /onPluginComposerFileDrop/); + assert.match(composer, /getBoundingClientRect\(\)/); + assert.match(composer, /parseComposerWorkspaceFileDrop\(data\)/); + assert.match(composer, /composerWorkspaceFileDrop\(event\.dataTransfer\)/); + assert.match(composer, /createFileReference\(workspaceFile\.path, workspaceFile\.name/); +}); + +test("workspace file-tree payloads reject absolute and parent paths", () => { + assert.equal(parseComposerWorkspaceFileDrop('{"path":"/tmp/a","name":"a"}'), null); + assert.equal(parseComposerWorkspaceFileDrop('{"path":"../a","name":"a"}'), null); + assert.equal(parseComposerWorkspaceFileDrop('{"path":"src/../a","name":"a"}'), null); + assert.deepEqual( + parseComposerWorkspaceFileDrop('{"path":"src/App.tsx","name":"App.tsx"}'), + { path: "src/App.tsx", name: "App.tsx" }, + ); +}); + +test("one workspace drag is attached once when both delivery paths fire", () => { + const accept = createComposerWorkspaceDropDeduper(); + const file = { path: "src/App.tsx", name: "App.tsx" }; + assert.equal(accept(file, 1_000), true); + assert.equal(accept(file, 1_001), false); + assert.equal(accept(file, 1_501), true); + assert.equal(accept({ path: "src/main.ts", name: "main.ts" }, 1_502), true); +}); diff --git a/docs/spec/04-ux/08-component-spec.md b/docs/spec/04-ux/08-component-spec.md index 9a50d428c..eab03948c 100644 --- a/docs/spec/04-ux/08-component-spec.md +++ b/docs/spec/04-ux/08-component-spec.md @@ -2687,6 +2687,11 @@ reasoning-level control. order. Folders are not traversed or copied; insert the complete native path at the caret as the literal `@/` directory form. Mixed drops preserve item order and restore focus/caret after file materialization. +- Work-panel file drop: regular file rows in the bundled File Manager plugin + tree are draggable. Dropping one on the Composer inserts the same removable + file chip at the caret using its workspace-relative path. The file stays in + place and is not copied into session scratch; directory rows remain + navigation-only. - Send clears the box before the host round trip (D287): the draft leaves the textarea in the frame Enter is pressed, so a slow host cannot make a send look ignored or let a second Enter queue the same prompt twice. If the store diff --git a/docs/spec/06-delivery/04-e2e-test-plan.md b/docs/spec/06-delivery/04-e2e-test-plan.md index c162253cb..9f6ed0af8 100644 --- a/docs/spec/06-delivery/04-e2e-test-plan.md +++ b/docs/spec/06-delivery/04-e2e-test-plan.md @@ -6707,14 +6707,16 @@ identify the platform validation still needed. #### E2E-102i: Composer accepts native file and folder drops -- **Preconditions**: The app is running with an Agent session and a visible - Composer. The OS file manager exposes one regular file, one folder, and a - mixed multi-selection; place the caret in the middle of a non-empty draft. +- **Preconditions**: The app is running with an Agent session, a visible + Composer, and a regular file visible in the bundled work-panel File Manager. + The OS file manager exposes one regular file, one folder, and a mixed + multi-selection; place the caret in the middle of a non-empty draft. - **Steps**: 1) Drag the regular file over the Composer and observe the target outline, then drop it. 2) Drag the folder into the same draft. 3) Repeat with a mixed file/folder selection while the caret is between existing text. 4) Inspect the draft, remove the file chip, and send the prompt. 5) Inspect the - saved scratch file and the persisted user message. + saved scratch file and the persisted user message. 6) Drag the visible file + row from the work-panel File Manager tree onto the Composer. - **Expected**: File-system drag-over prevents the browser default and marks the whole Composer shell without layout movement. Regular files are saved through the existing bounded session-scratch bridge and appear as removable @@ -6723,7 +6725,9 @@ identify the platform validation still needed. Mixed drops preserve OS order, retain surrounding text, and restore the caret after asynchronous file saving. Sending keeps the file's existing attachment metadata/path behavior and the folder path as prompt text; no - workspace files are created. + workspace files are created. The work-panel file becomes the same removable + chip at the caret using its workspace-relative path, without copying the + file into session scratch; directory rows remain navigation-only. - **Specs linked**: `04-ux/08-component-spec.md` §11.5–11.8, `04-ux/09-interaction-patterns.md` §8.2/§8a.2, `03-runtime/01-ipc-protocol.md` §13c, ADR 0059, ADR 0070, ADR 0222 diff --git a/docs/zh-CN/spec/04-ux/08-component-spec.md b/docs/zh-CN/spec/04-ux/08-component-spec.md index bf720f1be..196aaab8c 100644 --- a/docs/zh-CN/spec/04-ux/08-component-spec.md +++ b/docs/zh-CN/spec/04-ux/08-component-spec.md @@ -1936,6 +1936,9 @@ MainChat 底部的输入区域,用于撰写和发送提示。支持多行输 ### 11.5 互动 - Enter:开启「回车发送」时发送消息;关闭后插入换行 +- 工作面板文件拖放:随应用打包的文件管理器插件中,普通文件行可以拖动。拖到 + 输入框后,在光标处插入使用工作区相对路径的可移除文件芯片;文件保持原位, + 不会复制到会话临时目录。目录行仍只用于展开和导航。 - 发送会在主机往返之前清空输入框(D287):草稿在按下 Enter 的那一帧就离开 文本区域,因此主机变慢时发送不会看起来被忽略,第二次 Enter 也不会把同一 提示重复排队。若 store 拒绝发送,草稿(文本和文件引用)会回到输入框且 diff --git a/packages/shared/src/protocol.ts b/packages/shared/src/protocol.ts index c686ee027..e70e3b767 100644 --- a/packages/shared/src/protocol.ts +++ b/packages/shared/src/protocol.ts @@ -308,6 +308,7 @@ export const IPC = { }, event: { pluginChanged: "pi-desktop/event/pluginChanged", + pluginComposerFileDrop: "pi-desktop/plugin/event/composerFileDrop", /** Progress of an install or update, while it is still running. */ pluginInstallProgress: "pi-desktop/plugin/event/installProgress", /** Host-originated app settings mutation (e.g. plugin `app.setTheme`). */